You are on page 1of 12

Elementët bazë hardware

Njësia qendrore e përpunimit (CPU) është përgjegjëse për marrjen e udhëzimeve


(instruksioneve) të programit, dekodimin e secilit udhëzim që kërkohet dhe pastaj
kryerjen e sekuencës së treguar të operacioneve në të dhënat e sakta.
Të gjithë kompjuterët kanë një njësi qendrore të përpunimit. Kjo njësi mund të ndahet në
dy pjesë.
E para është rruga e të dhënave (datapath), e cila është një rrjet i njësive të ruajtjes
(regjistrave) dhe njësive aritmetike dhe logjike (ALU, për kryerjen e operacioneve të
ndryshme në të dhëna) të lidhura me buse (të aftë për të lëvizur të dhëna nga një vend në
një vend tjetër) ku koha kontrollohet nga ora (clock-u).
Komponenti i dytë i CPU është njësia e kontrollit, një modul përgjegjës për operacionet
sekuenciale dhe sigurimi se të dhënat e sakta janë aty ku duhet të jetë në kohën e duhur.
Së bashku, këta komponentë kryejnë detyrat e CPU-së: marrjen e udhëzimeve, dekodimin
e tyre dhe në fund kryerjen e sekuencës së treguar të operacioneve.
Performanca e një makine është drejtpërdrejt të prekur nga dizajni i datapath dhe njësisë
së kontrollit.

Llojet e adresimeve

Format e shumëfishta të adresimit quhen mënyra adresimi. Figura tregon se si operandët


(të dhënat) janë identifikuar për çdo mënyrë adresimit. Adresimi i MIPS mënyrat janë si
më poshtë:

1.Adresimi i menjëhershëm, ku operandi është një konstante brenda vetë instruksionit.


2.Adresim me regjistër , ku operandi është një regjistër.
3.Adresimi me bazë ose zhvendosje, ku operandi është në vendndodhjen e kujtesës adresa
e të cilit është shuma e një regjistri dhe një konstante në instruksion.
4.Adresimi relativë i PC-ve, ku adresa e degës është shuma e PC dhe një konstante në
instruksion.
5.Adresimi pseudodirekt, ku adresa e kërcimit është 26 bit e instruksionit të lidhur me
pjesët e sipërme të PC.

Në figurë operandat janë të ngjyrosura me ngjyrë.

Operandi i mënyrës 3 është në kujtesë, ndërsa operandi për mënyrën 2 është një regjistër.
Vini re se versionet e ngarkimit dhe ruajtjes aksesojnë bite, gjysmë fjalë ose fjalë. Për
mënyrën 1, operandi është 16 bit e vetë instruksionit.

Mënyrat 4 dhe 5 adresojnë instruksionet në kujtesë, me mënyrën 4 duke shtuar një adresë
16-bit e zhvendosur majtas me 2 bit në PC dhe mënyra 5 duke lidhur një adresë 26-bit e
zhvendosur majtas 2 bit me 4 bitet e sipërme të PC. Vini re se një operacion i vetëm mund
të përdorë më shumë se një mënyrë adresimi. Add, për shembull, përdor të dyja adresimet
e menjëhershme (addi) dhe me regjistër (add).
Gjuha assembler në procesorë të ndryshëm
Mendohet se gjuhët e kompjuterave janë të ndryshme si ato të njerëzive, por në të vërtetë
gjuhët kompjuterike janë të ngjashme, ato janë si dialekte rajonale sesa si gjuhë të
pavarura.
Prandaj, sapo e mëson njërën, është e lehtë ti mësosh gjuhët e tjera.
Set i instruksioneve më i përdoruri është nga Teknologjia MIPS.
Por ekzistojnë tre grupe të tjera instruksionesh, që përshkruhen si më poshtë:

 ARMv7 është i ngjashëm me MIPS.


 Shembulli i dytë është Intel x86, i cili fuqizon edhe PC-në ashtu edhe cloud-in e
PostPC Era.
 Shembulli i tretë është ARMv8, i cili e zgjeron madhësinë e adresave të ARMv7 nga
32 bit në 64 bit dhe ky set instruksionesh për 2013 është më afër MIPS sesa ARMv7.
CISC (Complex Instruction Set Computers) vs RISC (Reduced
Instruction Set Computers).

CISC (termi i shpikur më vonë është RISC.)


 që nga viti 1950 u interpreton instruksionet,
 instruksione gjithnjë e më të shumta (DEC VAX: disa qindra instruksione, më shumë
se 200 mënyra për të specifikuar operandat),
 interpretimi ofroi një mënyrë për të shtuar shpejt instruksione të reja ,
 interpretimi ofron bux fixing të lehtë,
 interpretimi siguron pajtueshmërinë e prapambetur.
RISC (Kompjuteri i reduktuar me instruksioneve)
 1980, David Patterson dhe Carlo Séquin (Berkeley): VLSI CPU pa interpretimi,
 u shpik termi RISC dhe u quajt CPU RISC I (! SPARC),
 1981 John Hennessy (Stanford): CPU MIPS (! MIPS),
 nuk ka pajtueshmëri të prapambetur për të bllokuar dizenjimin,
 ideja kryesore: instruksionet lëshohen shpejt dhe ekzekutohen në hardëare (janë
shumë në krahasim me instruksionet e CISC në mënyrë që të tejkalohet).
RISC vs CISC?
 është investuar shumë në software-hardware CISC, ndërsa RISC nuk ka marrë
investime,
 janë krijuar struktura hibride (arkitektura CISC me core RISC - Intel Pentium +
pasardhësit):
 me instruksione të thjeshta (dhe të zakonshme) ekzekutohen të dhënat në një rrugë të
vetme ciklike,
 instruksionet komplekse (që ndodhin rrallë) interpretohen në mënyrën të zakonshme.

Parimet e dizajnit për kompjuterët modernë


Që të gjitha instruksionet të ekzekutohen direkt nga hardueri. Instruksionet e CISC duhet
të ndahen nga instruksionet RISC. Maksimizimi i shkallës në të cilën lëshohen
instruksionet, është më pak e rëndësishme se sa përcaktimi i kohës që do të duhet që
instruksionet kanë nevojë për tu ekzekutuar, paralelizmi luan një rol të rëndësishëm.
 Instruksionet duhet të jenë të lehta për t'u dekoduar.
 Instruksionet duhet të jenë të rregullta, me gjatësi fikse dhe me numër të vogël
fushash.
 Vetëm Load dhe Store duhet t'i referohen kujtesës.
 Operandët për të gjitha operacionet e tjera duhet të vijnë nga regjistrat dhe të kthehen
në regjistra.
 Ofrojnë një numër shumë të madh regjistrash
 Aksesi në kujtesë është i ngadaltë dhe sa më shumë regjistra kemi, aq më mirë është.

Kujdes: Parimet e mësipërme janë të afërta me burimet aktuale teknologjike dhe


kufizimet!

Përmirësimi i performancës së kompjuterit

Forca brutale: bëjnë chipin më të shpejt duke rritur shpejtësinë e orës. (E kufizuar nga
zhvillimi teknologjik me një moment të caktuar kohe.)
-Paralelizmi: bën më shumë gjëra në të njëjtën kohë - të merrni më shumë performancë
për një shpejtësi të caktuar të orës.
-Paralelizim në nivel instruksioni - merren nga makina më shumë instruksione për
sekondë.
- Paralelizim në nivel procesori (si me fije) - përdor më shumë procesorë për të ndarë
punën e të njëjtit problem.
- Paralelizmi në nivelin e të të dhënave - i shpërndan të dhënatnë sisteme të shumëfishta
(p.sh. "cloud").
Paralelizmi në nivel instruksioni: pipeline
Pipeline: ndani ekzekutimin e instruksioneve në hapa të vegjël, secila performohet nga
një pjesë përkatëse e harduerit ( si në figurë).
Paralelizimi në nivel instruksioni: arkitektura superscalare
"Një pipeline i mirë, dy pipeline më të mirë".
- disa instruksione që nuk bien ndesh me burimet ose nuk varen nga njëra tjetra mund të
dërgohen në pipeline të ndryshme,
- korrektësia e këtij procesi sigurohet nga kompilatori, ose duke përdorur pajisje shtesë,
- Shembull: Procesorë Intel (Pentium):
* Pipeline u: instruksione arbitrare,
* Pipeline v: instruksione me numra të plotë dhe me notë.
* Kjo çoi në përfitime të rëndësishme të performancës (Pentium deri në 2 herë më shpejt
se 486).Figura ilustron përdorimin e dy pipelineve.
"Dy pipeline të mira, katër pipeline më mirë"?
Në të vërtetë, jo - shumë kopjime në hardware.
Për CPU të fundme: një pipeline, por me njësi të shumta funksionale, si ilustruhet në
figurë.
Ushtrim
1.Supozojmë që duhet të llogaritim shumëzimin 5 x 10. Kodi në makinën CISC jepet:
mov ax, 10
mov bx, 5
mul bx, ax
Në makinën RISC ISA nuk ka instruksion për shumezimin, kështu që kodi për
shumëzimin për këtë makinë jepet :
mov ax, 0
mov bx, 10
mov cx, 5
Begin:
add ax, bx

loop Begin ; bën që loop-i të përsëritet cx herë

Kodi në makinën CISC edhe se është më i shkurtër kërkon më shumë cikle clocku për tu
ekzekutuar. Supozojmë se në secilën arkitekturë, lëvizja regjistër-me-regjistër, mbledhja
dhe loopi kërkon një cikël clocku. Supozojmë gjithashtu që shumëzimi kërkon 30 cikle
clock-u. Krahasoni të dyja kodet me njëri tjetrin.

ARKITEKTURA I / O
E përcaktojmë input / output si një nënsistem të komponentëve që lëviz të dhënat e
koduara midis pajisjeve të jashtme dhe një sistemi pritës (host system), i përbërë nga një
CPU dhe memorie kryesore.
Nënsistemet e I / O përfshijnë, por nuk kufizohen vetëm në:

• Blloqe të kujtesës kryesore që i përkushtohen funksioneve I / O.


• Busët që sigurojnë mjetet e lëvizjes së të dhënave brenda dhe jashtë sistemit.
• Modulet e kontrollit në hoste dhe në pajisjet periferike.
• Ndërfaqet me komponentët e jashtëm si tastiera dhe disqet e ndryshme.
• Lidhjet e kabllove ose komunikimit midis sistemit pritës dhe periferikëve të tij.

Figura tregon se si të gjithë këta komponentë mund të përshtaten së bashku për të formuar
një integruar.
Nënsistemi I / O. Ndërfaqet
 Modulet I / O kujdesen për lëvizjen e të dhënave ndërmjet kujtesës kryesore dhe një
ndërfaqeje të veçantë të pajisjes.
 Interfaces (ndërfaqet) janë projektuar posaçërisht për të komunikuar me disa lloje të
pajisjeve, të tilla si tastierë, disqe ose printera.
 Ndërfaqet trajtojnë detajet për t'u siguruar që pajisjet janë gati për grumbullimin e të
dhënave të ardhshme ose që serveri është i gatshëm që të marrë grumbullimin e
ardhshëm të të dhënave që vijnë nga pajisja periferike.
 Forma dhe kuptimi i saktë i sinjaleve të shkëmbyera midis një dërguesi dhe një
marrësi quhet protokoll.
 Protokollet përfshijnë sinjale të komandës, siç janë p.sh. "Rivendosja e printerit";
sinjalet e statusit, të tilla si "Tape ready"; ose sinjale që kalojnë të dhëna, si "Këtu
janë byte-ët që keni kërkuar".
 Në shumicën e protokolleve të shkëmbimit të të dhënave, marrësi duhet të pranojë
komandat dhe të dhënat që i janë dërguar ose tregojnë se është gati të marrë të dhëna.
 Ky lloj i shkëmbimit të protokollit quhet një shtrëngim duarsh (handshake).
 Pajisjet e jashtme që merren me blloqe të mëdha të të dhënave (si p.sh. printera,
disqet e disqeve dhe kasetë) shpesh janë të pajisura me memorie buffer.
 Buffer-at lejojnë që sistemi pritës të dërgojë sasi të mëdha të të dhënave në pajisjet
periferike në mënyrën më të shpejtë të mundshme, pa pasur nevojë të presë derisa
pajisjet e ngadalta mekanike të shkruajnë të dhënat.

Metodat e kontrollit I / O
Sistemet kompjuterike përdorin një nga katër metodat e përgjithshme të kontrollit I / O.
Këto metoda janë :
- Programimet I / O - sistemet që përdorin I / O të programuar i kushtojnë të paktën një
regjistër për përdorimin ekskluziv të çdo pajisje I / O. CPU vazhdimisht monitoron
çdo regjistër, duke pritur që të arrijnë të dhënat. Kjo quhet votim (polling). Pasi CPU
zbulon gjendjen "të dhënat e gatshme", ajo vepron sipas udhëzimeve të programuara
për atë regjistër të veçantë.
- I / O me ndërprerje të drejtpërdrejtë ( interrupt-driven I/O) - Interrupt-driven I / O
mund të mendohet si bisedë e I / O me programime. Në vend që CPU-ja vazhdimisht
ti kërkojë pajisjet e bashkëngjitura nëse kanë ndonjë hyrje, janë pajisjet që i tregojnë
CPU-së kur kanë të dhëna për t'u dërguar. CPU vazhdon me detyra të tjera derisa kur
një pajisje që kërkon shërbimin e ndërpret atë. Ndërprerjet zakonisht sinjalizohen me
një bit në regjistrin e flamujve të CPU-së që quhet një flamur ndërprerës (interrupt
flag). Pasi të ndizet flamuri i ndërprerjes, sistemi operativ ndërpret çfarëdo programi
që po ekzekuton, duke ruajtur gjendjen e programit dhe informacionin e
ndryshueshëm. Sistemi pastaj tërheq vektorin e adresave që tregon adresën rutinë të
shërbimit I / O. Pasi CPU të ketë përfunduar shërbimin kërkuar I / O, ai rikthen
informacionin që ruajti nga programi që po funksiononte kur ndërprerja ndodhi dhe
ekzekutimi i programit vazhdon.
- Akses i menjëhershëm i memories (direct memory access, DMA) - Kur një
sistem përdor DMA, CPU shkarkon ekzekutimin e udhëzimeve të lodhshme I / O.
Për të bërë transferimin, CPU siguron kontrolluesin DMA me vendndodhjen e
byte-ve që do të transferohen, numri i byte-ve që do të transferohen dhe pajisjen e
destinacionit ose adresën e memories. Ky komunikim zakonisht zhvillohet përmes
regjistrave të veçantë I / O në CPU. Pasi vlerat e duhura janë vendosur në kujtesë,
CPU sinjalizon nënsistemin e DMA dhe vazhdon me detyrën e tij të ardhshme,
ndërsa DMA kujdeset për detajet e I / O. Pasi I / O është kompletuar (ose mbaron
me gabim), nënsistemi i DMA-s sinjalizon CPU duke dërguar një ndërprerje tjetër.
- I / O e lidhur me kanalin - Shumica e kompjuterave përdorin një lloj inteligjent të
ndërfaqes DMA të njohur si kanali I / O (channel I/O). Me kanalin I / O, një ose më
shumë procesorë I / O kontrollojnë rrugë të ndryshme I / O të quajtura rrugëzimet e
kanaleve (channel paths). Rrugëzimet e kanaleve për pajisjet "të ngadalta" siç janë
terminalet dhe printerat mund të kombinohen (multipleksohen), duke lejuar
menaxhimin e disa prej këtyre pajisjeve përmes vetëm një kontrolluesi. Në centralet
IBM, një kanal i multiplekuar kanalesh quhet një kanal multiplexor (multiplexor
channel). Kanalet për disk driverat dhe pajisjet e tjera "të shpejta" quhen kanale
përzgjedhëse (selector channels). Kanalet I / O që përdoren nga CPU të vogla quhen
procesorë I / O (I/O processors, IOP), të cilat janë optimizuar për I / O.
Edhe pse një metodë nuk është domosdoshmërisht më e mirë se një tjetër, mënyra në të
cilën një kompjuter kontrollon I / O ka ndikim të madh në dizajnin dhe performancën e
sistemit të përgjithshëm. Qëllimi është të dihet kur të përdoret metoda I / O e caktuar nga
një arkitekturë kompjuterike e veçantë që përshtatet me mënyrën se si sistemi do të
përdoret.

Ushtrime
1.Jepni me një shembull konfigurimin e DMA-së.

2.Cilat janë ndërfaqet që DMA përdor për të shkruajtur të dhënat në hard disk? Jepni
bllok skemën dhe grafikun kohor të realizimit të tij.

Struktura bazë e një hierarkie të kujtesës


Hierarkia e kujtesës përbëhet nga nivele të shumëfishta të kujtesës me shpejtësi dhe
madhësi të ndryshme. Memorjet më të shpejta janë më të shtrenjta për bit se memorjet e
ngadalshme dhe kështu këto janë më të vogla.
Figura tregon se memoria më e shpejtë është afër procesorit dhe memoria më e
ngadalshme është më e ulët se ai. Qëllimi është që të prezantojë përdoruesin sa më shumë
memorie që është në dispozicion në teknologjinë më të lirë, duke siguruar akses në
shpejtësinë e shkaktuar nga memoria më e shpejtë.Të dhënat janë gjithashtu hierarkike:
një nivel më afër procesorit është në përgjithësi një nëngrup i çdo niveli më larg dhe të
gjitha të dhënat ruhen në nivelin më të ulët. Për analogji, librat në tryezën tuaj formojnë
një nëngrup të bibliotekës në të cilën po punoni.
Niveli i sipërm - ai më afër procesorit - është më i vogël dhe më i shpejtë se niveli më i
ulët, meqë niveli i sipërm përdor teknologjinë më të shtrenjtë.
Figura tregon se njësia minimale e informacionit që mund të jetë ose nuk paraqitet në
hierarkinë e dy niveleve quhet një bllok ose një vijë; në analogjinë tonë të bibliotekës, një
bllok i informacioni është një libër.

Cashe
 Në shembullin tonë të bibliotekës, tavolina veproi si një cache-një vend i sigurt për të
ruajtur gjërat (librat) që duhej të shqyrtojmë.

 Cache ishte emri i zgjedhur për të përfaqësuar nivelin e hierarkisë së kujtesës


ndërmjet procesorit dhe kujtesës kryesore në kompjuter.

 Përdorimi i fjalës cache, si term përdoret gjithashtu për t'iu referuar çdo magazinimi
që arriti të përfitojnë nga lokaliteti i aksesit.

 Mënyra më e thjeshtë për të caktuar një vend në cache për secilën fjalë në kujtesë
është që të caktojë vendndodhjen e cache bazuar në adresën e fjalës në kujtesë, kjo
strukturë cache quhet direct-mapped, pasi çdo vend i kujtesës është hartuar direkt
pikërisht në një vend në cache.
 Për shembull, pothuajse të gjitha arkivat direkte të hartëzuara (direct-mapped)
përdorin këtë hartë për të gjetur një bllok:

(Adresa bllok) moduli (Numri i blloqeve në cache)

Ushtrime
1.Sa bit kërkohen gjithsej për një cache të drejtpërdrejtë (direct-mapped) të përcaktuar me
të dhëna me 16 KB dhe blloqe me 4 fjalë, duke supozuar një adresë me 32-bit?

2.Konsideroni një cache me 64 blloqe dhe madhësia e bllokut prej 16 byte. Me çfarë
numër blloku hartëzon me adrese byte-i 1200?

Pipeline. Elementë të performancës në Pipeline dhe Cache. Shembuj të


ndryshëm.
Pipeline është një teknikë implementimi në të cilën instruksione të shumëfishta
mbivendosen që të ekzekutohen. Sot, pipeline është pothuajse universal.
Pipeline është një teknikë që shfrytëzon paralelizimin midis instruksioneve në një
rrjedhshmëri të instruksioneve sekuenciale. Ajo ka avantazh të konsiderueshëm se,
ndryshe nga programimi i një multiprocesori, ajo është krejtësisht e padukshme për
programuesin.Pipeline rrit numrin e instruksioneve që ekzekutohen në të njëjtën kohë dhe
shkallën në të cilën fillohen dhe përfundojnë instruksionet. Pipeline që nuk zvogëlon
kohën që duhet për të përfunduar një instruksion individual, quhet latency (vonesë).
Ndarja e një instruksioni në pesë faza do të thotë një pipeline pesëfazësh, që do të thotë se
vetëm deri në pesë instruksione do të ekzekutohen gjatë çdo cikli të orës, pra e ndajmë
datapath-in në pesë pjesë, me çdo pjesë të quajtur përkatësisht si faza që ekzekuton:
1. IF: është për të marrë një instruksion (Instruction fetch)
2. ID: Dekodimi i instruksioneve dhe regjistrohet skedari i lexuar (Instruction decode)
3. EX: Ekzekutimi ose llogaritja e adresave (Execution)
4. MEM: Hyrja e të dhënave në kujtesë (Data memory access)
5. WB: Shkruaj përgjigjjen (Write back)
Ushtrime
1.Krahasoni kohën mesatare midis instruksioneve të implementimit të një cikli të vetëm,
në të cilin të gjitha instruksionet marrin një cikël ore, në një implementim me pipeline.
Kohët e veprimit për njësitë kryesore funksionale në këtë shembull janë 200 ps për
aksesin në kujtesë, 200 ps për veprimet ALU dhe 100 ps për leximin ose shkrimin e
regjistrit. Në modelin me një cikël, çdo udhëzim merr saktësisht një cikël të orës, kështu
që cikli i orës duhet të shtrihet për të përshtatur ekzekutimin e instruksionit më të
ngadalshëm.

Zgjidhje

2.Supozojmë se kemi një instruksion mbledhje që ndiqet menjëherë nga një instruksion
zbritje që përdor shumën ($ s0):
add $ s0, $ t0, $ t1
sub $ t2, $ s0, $ t3
Për dy instruksionet e mësipërme, tregoni cilat faza të pipeline do të lidhen me anë të
kalimit forwarding. Përdorni vizatimin në figurën më poshtë për të përfaqësuar
datapath-in gjatë pesë fazave të pipeline-nit. Drejtoni një kopje të datapath-it për çdo
instruksion. Jepni grafikisht ekzekutimin e fazave me pipeline për të dyja instruksionet.

3.Konsideroni segmentin e mëposhtëm të kodit në gjuhën C:


a = b + e;
c = b + f;
Këtu është Kodi MIPS i gjeneruar për këtë segment, duke supozuar që të gjitha variablat
janë në kujtesë dhe janë të adresueshme si offsets nga $ t0.
Gjeni rreziqet në segmentin e kodit të mësipërm dhe riorganizoni instruksionet për të
shmangur pipeline-stall.
lw $t1, 0($t0)
lw $t2, 4($t0)
add $t3, $t1,$t2
sw $t3, 12($t0)
lw $t4, 8($t0)
add $t5, $t1,$t4
sw $t5, 16($t0)

4.Instruksionet që ekzekutohen duke përdorur datapath-in e një cikli në figurën më poshtë,


duke supozuar që ekzekutohet me pipeline. Ndërtoni grafikun e kohës që pretendohet se
çdo udhëzim ka të dhënat e veta dhe zbaton çdo pjesë sipas përdorimit. Gjithashtu që çdo
etapë të etiketohet nga burimet fizike që përdoruen në atë fazë, që korrespondon me
pjesët e datapath në figurën më poshtë.
lw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)

You might also like