0% found this document useful (0 votes)
21 views43 pages

AOR 2 (2) - Pipelining

The document compares the characteristics of CISC and RISC architectures. CISC architectures have complex instruction sets with varying instruction lengths and many addressing modes. RISC architectures have simpler instruction sets with fixed-length instructions, fewer addressing modes, and emphasize load/store architecture. Pipelining is introduced as a technique to improve performance by overlapping the execution of instructions.

Uploaded by

Vukan Taskov
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views43 pages

AOR 2 (2) - Pipelining

The document compares the characteristics of CISC and RISC architectures. CISC architectures have complex instruction sets with varying instruction lengths and many addressing modes. RISC architectures have simpler instruction sets with fixed-length instructions, fewer addressing modes, and emphasize load/store architecture. Pipelining is introduced as a technique to improve performance by overlapping the execution of instructions.

Uploaded by

Vukan Taskov
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 43

Karakteristike CISC i RISC

arhitektura
CISC (Complex Instruction Set Computers)
 Tokom 60-tih i 70-ih god. 20. veka osnovni pravac u
razvoju računara ogledao se u povećanju
kopleksnosti CPU. Ta kompleksnost se ogledala u:
 Povećanju broja instrukcija (120-350)
 Povećanju kompleksnosti instrukcija
 Povećanju mogućih načina adresiranja (npr. MC 68020 je
imao 18 adresnih režima)
 Veliki broj specijalizovanih a mali broj registara opšte namene
 Instrukcije su različite dužine (od 1 do 11 reči kod MC 68020)
 Mikroprogramsko upravljanje (zahteva se velika
mikroprogramska memorija zbog složenih instrukcija)
 Razlozi: poboljšanje performansi i pojednostavljenje
pisanja kompilatora
CISC – faze u izvršenju instrukcija
 IF – pribavljanje instrukcije (Instruction fetch)
 ID – dekodiranje instrukcije (Instruction Decode)
 EA – izračunavanje efektivne adrese operanada
 OF – pribavljanje operanada (Operand Fetch)
 EXE – izvršenje instrukcije (Execution)
Primer Motorola 680X0

18 addressing modes:


Data register direct.
Address register direct.
Operand size:
 Immediate.  Range from 1 to 32 bits, 1, 2,
 Absolute short. 4, 8, 10, or 16 bytes.
 Absolute long.
 Address register indirect.
 Address register indirect with postincrement.
 Address register indirect with predecrement. Instruction
 Address register indirect with displacement.
 Address register indirect with index (8-bit).
Encoding:
 Address register indirect with index (base).  Instructions are stored in 16-
 Memory inderect postindexed.
bit words.
 Memory indirect preindexed.
 Program counter indirect with index (8-bit).  the smallest instruction is 2-
 Program counter indirect with index (base). bytes (one word).
 Program counter indirect with displacement.  The longest instruction is 5
 Program counter memory indirect
postindexed.
words (10 bytes) in length.
 Program counter memory indirect preindexed.
Primer Intel X86, 386/486/Pentium

12 adresinh režima: veličina operanada:


 Register.  Can be 8, 16, 32, 48, 64, or 80 bits
 Immediate. long.
 Direct.  podržava rad sa stringovima.
 Base.
 Base + Displacement.
 Index + Displacement.
Instruction Encoding:
  The smallest instruction is one byte.
Scaled Index + Displacement.
 Based Index.  The longest instruction is 12 bytes long.
 Based Scaled Index.
 Based Index + Displacement.  The first bytes generally contain the opcode,
mode specifiers, and register fields.
 Based Scaled Index +
Displacement.  The remainder bytes are for address
 Relative. displacement and immediate data.
RISC (Reduced Instruction Set Computers)
 RISC prilaz je upravo suprotan CISC prilazu
 Tokom višegodišnjeg praćenja i merenja programa
ustanovljeno je da se samo 25% instrukcija iz
kompleksnog skupa instrukcija često koristi (95%
vremena)
 75% instrukcija koje po pravilu zahtevaju velike
mikrokodove i veliku mikroprogramsku memoriju se
veoma retko koriste
 IDEJA: Instrukcije koje se često koriste implementirati
hardverski, a instrukcije koje se retko koriste softverski
 Kod CISC upravljačka jedinica zauzima 40-60% oblasti na
čipu, a kod RISC približno 10%.
 Ostatak oblasti na čipu se može iskoristiti za druge
komponente – registre ili on chip cache
RISC - karakteristike
 Relativno mali broj instrukcija (obično < 100: i860 –
82 instrukcije, MC 88100 – 51 instrkcija)
 Sve instrukcije su iste dužine (32 bita)
 Mali broj načina adresiranja
 Pristup memoriji se obavlja isključivo preko LOAD i
STORE instrukcija
 Veliki broj registara opšte namene (32 – 192).
 Najveći broj instrukcija je tipa registar-u-registar
 Hardversko (a ne mikroprogramsko) upravljanje
 Jako izražena protočnost u obradi instrukcija
 Odvojeni keš za instrukcije i za podatke
 Moćni kompilatori
Primer RISC - SPARC

5 addressing modes: Operand sizes:


 Register indirect with  Four operand sizes: 1, 2, 4 or 8
immediate displacement. bytes.
 Register inderect indexed by
another register.
 Register direct. Instruction Encoding:
 Immediate.  Instruction set has 3 basic
 PC relative. instruction formats with 3 minor
variations.
 All are 32 bits in length.
RISC – faze izvršenja instrukcija
 IF –instruction fetch
 ID –instruction decode
 EX –execution
 MEM – memory
 WB – write back
Primer RISC ISA:
Compaq Alpha AXP
4 addressing modes: Operand sizes:
 Register direct.  Four operand sizes: 1, 2, 4 or 8
 Immediate. bytes.
 Register indirect with
displacement.
 PC-relative. Instruction Encoding:
 Instruction set has 7 different

formats.
 All are 32 bits in length.
Protočnost

(Pipelining)
Protočnost (pipelining)
 Protočnost je tehnika projektovanja hardvera kojom
se uvodi konkurentnost u računarski sistem tako što
se neke osnovne funkcije (f) čije se izvršenje često
zahteva dele na niz podfunkcija f1, f2, ..., fk, tako da
budu zadovoljeni sledeći kriterijumi:
 Izračunavanje osnovne funkcije f je ekvivalentno
sekvencijalnom izračunavanju podfunkcija f1, f2, ..., fk.
 izlazi prethodne podfunkcije predstavaljaju ulaze za sledeću
podfunkciju u nizu podfunkcija koje se izvršavaju
 Osim razmene podataka izmedju podfunkcija ne postoji
nikakva druga zavisnost
 Može se projektovati hardver za izračunavanje svake
podfunkcije
 Vremena potrebna ovim hardverskim jedinicama da obave
individalana izračunavanja su približno jednaka
Protočnost (nast.)
 Hardver za izračunavanje bilo koje podfunkcije zove
se stepen protočnog sistema (pipeline stage)
 U zavisnosti od načina upravljanja tokom podataka
kroz protočni sistem mogu se razlikovati
 asinhroni protočni sistemi
 sinhroni protočni sistemi
 Asinhroni model – razmenom podataka izmedju dva
susedna stepena upravlja se nekom handshake
procedurom. Hardverski stepeni sadrže memorijske
elemente
data data data data data
...
ready ready ready ... ready ready
ack ack ack
... ack ack
Protočnost (nast.)
 Sinhroni model – razmenom podataka upravlja se
pomoću globalnog clk. Hardverski stepeni ne sadrže
memorijske elemente. Zato se izmedju stepena
ubacuju lečevi.

leč leč leč leč leč

clk

• svi stepeni su aktivni u svakom klok ciklusu.


Stepen i unosi kašnjenje Ti. Klok perioda protočnog
sistema iznosi
• T=max{T1, T2,…, Tk}+TL, gde je TL kašnjenje koje
unosi leč
Protočnost – ilustrativni primer
Stanari zgrade koriste zajedničku vešarnicu za pranje, sušenje i peglanje veša
30 40 20 30 40 20 30 40 30
Ana Pranje sušenje peglanje

Pera Pranje sušenje peglanje

Mika Pranje sušenje peglanje

Pranje sušenje
Laza

Korišćenjem protočnosti ukupno vreme se može smanjiti


40 40 40 40 40 40 40 40 40
Pranje sušenje peglanje
Ana
Pranje sušenje peglanje
Pera
Pranje sušenje peglanje
Mika
Laza Pranje sušenje peglanje
Protočnost
 Potrebno je uočiti da se uvođenjem protočnosti
vreme obsluživanja pojedinačnog korisnika nije
skratilo.
 Naprotiv, pojedinačno vreme okončanja posla se
produžilo
 Uvođenjem protočnosti povećava se propusnost, tj.
obim obavljenog posla u jedinici vremena.
Primer2: projektovanje protočnog FP sabiarača
 A=a*2p , B=b*2q , a i b su normalizovane mantise
brojeva; p i q su eksponenti
 korak1: Poredjenje eksponenata p i q da bi se
pronašao veći, r=max(p,q) i razlika t=|p-q|.
 korak2: Pomeriti za t mesta u desno mantisu manjeg
broja da bi se izjednačili eksponenti pre sabiranja
 korak3: Sabiranje mantisa i dobijanje medjurezultata
 korak4: Odredjivanje broja vodećih nula u sumi,
recimo u.
 korak5: Pomeranje dobijene sume za u mesta u levo
da bise dobila normalizovana mantisa i ažuriranje
većeg eksponenta: r+u
Protočni sabirač

Treba primetiti da se
između svakog
stepena nalaze
lečevi koji moraju da
zapamte podatke koji
su neophodni za
sledeće stepene
protočnog sistema
Protočni sabirač
 Neaka su kašnjenja koja unose pojedini stepeni
 T1=60 ns
 T2=50 ns
 T3=80 ns
 T4=50 ns
 T5=80 ns
 TL=10 ns
 Klok perioda protočnog sistema je T=max{60, 50,
80, 50, 50}+10=90ns
 Vreme potrbno neprotočnom sabiraču da sabere dva
FP broja iznosi Tnp=60+50+80+50+80=320ns
 Vreme potrebno protočnom sabiraču da sabere dva
FP broja iznosi Tpr=5*90=450ns
Gde je dobit od uvodjenja protočnosti?
 Ako je potrebno sabrati n parova brojeva
neprotočnom sabiraču će biti potrebno
 Tnp=n*320 ns
 a protočnom
 Tpr=450+(n-1)*90 ns
 Za n=10
 Tnp=10*320=3200 ns
 Tpr=450+9*90=1360 ns
 Što je veće n performanse protočnog sistema su
bolje. Za dovoljno veliko n ubrzanje protočnog
sistema jednako je broju stepena, k.
Gantov dijagram
 Prikazuje zauzetost pojedinih stepena u vremenu

S5 P1 P2 P3 P4 P5 P6 P7
S4 P1 P2 P3 P4 P5 P6 P7
S3 P1 P2 P3 P4 P5 P6 P7
S2 P1 P2 P3 P4 P5 P6 P7

S1 P1 P2 P3 P4 P5 P6 P7
0 1 2 3 4 5 6 7 8 9 10 t [*90ns]
Klasifikacija protočnih sistema
 U odnosu na način povezivanja hardverskih stepena:
 Linearni (kaskadna veza izmedju stepena; sabirač iz
prethodnog primera)
 Nelinearni – pored kaskadnih veza postoje veze izvedene u
napred i povratne (u nazad)
ulaz

S1

S2

S3
izlaz A
Klasifikacija protočnih sistema
 U odnosu na mogućnosti obrade
 Jednofunkcijski – protočni sistemi sa fiksno dodeljenom
funkcijom (sabirač iz prethodnog primera)
 Višefunkcijski – mogu obavljati više funkcija u isto ili različitim
vremenskim trenucima. Mogu biti
 Statički
 Dinamički

 Protočnost se kod savremenih računara koristi na


nivou:
 izvršenja instrukcija
 izvršenja ALU operacija
 kod pristupa memoriji
Organizacija protočne staze
podataka
RISC arhitektura – globalni pogled
Formati instrukcija MIPS procesora
 I
 R
 J
Format instrukcija
 I format (load, store, branch, ALU operacije sa
neposrednim operandom)
31 26 25 21 20 16 15 0

OP Rs1 Rd Immed

OP – kod operacije
Rs1 – izvorni operand za ALU
- bazni registar za generisanje memorijske adrese kod load i store
- registar čiji se sadržaj testira za slučaj barnch
Rd – polje odredišnog registra za slučaj ALU op. i load
- polje regista čiji se sadržaj pamti u mem. za slučaj store
Rd=0 za branch
Primer I formata instrukcija
rd Imm Rs1
 LW R1, 30 (R2) dejstvo R1 Mem[30 +[R2]]
 SW 500(R4), R3 dejstvo Mem[500+[R4]] [R3]
 ADDI R1,R2,#3 dejstvo R1 [R2]+3
 BEQZ R1, ime dejstvo if R1=0 then PC PC+ime
Format instrukcija - R
 R format (ALU operacije tipa registar-u registar)

31 26 25 21 20 16 15 11 10 6 5 0

OP Rs1 Rs2 Rd funkcija

OP+ funkcija – kod operacije


Rs1 – prvi izvorni operand za ALU
Rs2 – drugi izvorni operand
Rd – polje odredišnog registra

PRIMER: ADD R1,R2,R3 dejstvo R3 [R1]+[R2]


Format instrukcija i faze izvršenja
 J format – jump instrukcija

31 26 25 0

OP offset (pomeraj)

OP– kod operacije


offset – pomeraj koji se dodaje PC

PRIMER: JMP ime dejstvo PC PC+ime


Faze izvršenja
 Svaka integer instrukcija RISC procesora se može
obaviti za najviše pet klok ciklusa:
1 Instruction fetch cycle (IF):
IR ¬ Mem[PC]
NPC ¬ PC + 4

2 Dekodiranje instrukcije i pribavljanje operanda (ID):

A ¬ Regs[Rs1];
B ¬ Regs[Rs2];
Imm ¬ ((IR15)16##IR 15..0 ) sign-extended immediate field of IR

Napomena: IR (instrukcioni registar), NPC (next sequential program


counter register) A, B, Imm su privremeni registri
Faze izvršenja- nastavak
3 Execution/Effective address cycle (EX):
 Memory reference:

ALUOutput ¬ A + Imm;
 Register-Register ALU instruction:

ALUOutput ¬ A func B;
 Register-Immediate ALU instruction:

ALUOutput ¬ A op Imm;
 Branch:

ALUOutput ¬ NPC + Imm;


Cond ¬ A op 0 (op je relacioni operator definisan kodm
instrukcije)
Faze izvršenja- nastavak

4 Obraćanje memoriji /okončanje grananja (MEM):


 Obraćanje memoriji:

LMD ¬ Mem[ALUOutput] ili


Mem[ALUOutput] ¬ B;

 Branch:

if (cond) PC ¬ ALUOutput else PC ¬ NPC

napomena: LMD (load memory data) register


Faze izvršenja- nastavak

5 Write-back cycle (WB) – upis u registarski fajl:


 Register-Register ALU instruction:

Reg[IR15..11] ¬ ALUOutput;

 Register-Immediate ALU instruction:

Reg[IR20..16] ¬ ALUOutput;
 Load instruction:

Reg[IR20..16] ¬ LMD;

Napomena: LMD (load memory data) register


Struktura staze podataka – bez protočnosti
Prelazak na protočnu stazu podataka
 Prelazak sa višetaktnog sekvencijalnog procesora na protočni
procesor zahteva određene izmene u implementaciji
procesora.
 Da bi se uvela protočnost u stazu podataka neophodno je da
se resursi koji se koriste u više različitih faza izvršenja
instrukcije multipliciraju.
 U našem primeru, očigledno je da se isti resursi koriste u IF i MEM fazi, i
to je memorija.
 U IF fazi se pristupa memoriji radi čitanja instrukcije, a u MEM fazi radi čitanja ili
upisa podatka.
 Zbog toga je neophodno je razdvojiti memoriju za instrukcije i memoriju za
podatke.
– Kod savremenih procesora postoje odvojene keš memorije za instrukcije i podatke.
 Takođe, ALU se u IF fazi koristi za inkrementiranje sadržaja
programskog brojača a u EXE fazi za izračunavanje ALU operacije ili
efektivne adrese.
 Zbog toga je neophodno dodati poseban sabirač koji će se u IF fazi koristiti da
inkrementira sadržaj programskog brojača.
Struktura staze podataka i tok instrukcije
Modifikovana staza podataka sa razdvojenim memorijama za instrukcije i podatke i
dodatim sabiračem u IF fazi
Protočnost se može ostvariti tako što bi se u svakom klok ciklusu pribavila nova
instrukcija
Zašto protočnost?
 protočnost ne smanjuje vreme izvršenja pojedinačne
instrukcije
 može dovesti do neznatno dužeg vremenna izvršenja

 Uvođenjem protočnosti se povećava propusnost


 smanjuje se srednji broj taktova po instrukciji
 Idealno 1 instr po clk. ciklusu
Problemi:
 PC se mora inkrementirati u svakom klok ciklusu da bi se
pribavila nova instrukcija. Ovo se mora obaviti u IF fazi. U
neprotočnoj verziji to se obavlja u MEM fazi.
 Problem nastupa kod instrukcija grananja koje mogu promeniti
sadržaj PC
 Da li dolazi do grananja ili ne zna se tek na kraju MEM faze
 Nova instrukcija se mora pribaviti u svakom klok ciklusu (u IF
fazi).
 To zahteva da se memoriji pristupa u svakom klok ciklusu.
 Ni jedna memorija ne može podržati takve zahteve jer jedan memorijski
ciklus traje 4 do 20 procesorskih ciklusa
 Zbog toga se uvode keš memorije
 različiti stepeni protočnog sistema mogu jednovremeno zahtevati
pristup memoriji (pribavljanje instrukcije u IF i pribavljanje
operanda u MEM, a ove faze se u vremenu mogu poklapati
 rešenje je u korišćenju odvojenih keševa za instrukcije i podatke
Problemi (nastavak)
 Registarski fajl se koristi u dva stepena:
 za čitanje u ID fazi i za upis u WB fazi.
 To znači da je svakom klok ciklusu potrebno obaviti dva
čitanja i jedan upis.
 Šta ako se čitanje i upis vrše u isti registar?
 Uvodjenje protočnosti u stazu podataka zahteva da
vrednosti koje se prosledjuju iz jednog stepena u
drugi budu zapamćene u posebnim registrima
(lečevima)
 bilo koja vrednost koja može biti potrebna u kasnijim
protočnim stepenima mora biti zapamćena u protočnim
registrima koji se umeću izmedju pojedinih stepena i kopirana
iz jednog regista u drugi sve dok je to potrebno
Modifikovana staza podtaka
Aktivnosti u pojedinim fazama protočne organizacije

ID ID/EX←Regs{IF/ID.IR25..21]; ID/EX.B
25..21 ←Regs[IF/ID.IR20..16]; 20..16
ID/EX.NPC←IF/ID.NPC; ID/EX.IR ←IF/ID.IR;
ID/EX.Imm←(IR15)16 ##IR15..0;

WB Regs[MEM/WB.IR15..11]← Regs[MEM/WB.IR20..16] ←
MEM/WB.ALUOutput; MEM/WB.LMD;
or
Regs[MEM/WB.IR20..16]←
MEM/WB.ALUOutput;

You might also like