🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

12__AOK__Ligjërata 12__ Procesorët RISC dhe procesorët multicore -- MSc. Valdrin Haxhiu.pdf

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

Kolegji UBT Arkitektura dhe organizimi i kompjuterëve Ligjërata 12 Procesorët RISC dhe procesorët multicore MSc. Valdrin Haxhiu MSc. Valdrin Haxhiu 15.4 Arkitektura me bashkësi të reduktuar të instruksioneve Bashkësitë e mëdha të instruksioneve përfshijnë një numër të madh të instruksioneve dhe inst...

Kolegji UBT Arkitektura dhe organizimi i kompjuterëve Ligjërata 12 Procesorët RISC dhe procesorët multicore MSc. Valdrin Haxhiu MSc. Valdrin Haxhiu 15.4 Arkitektura me bashkësi të reduktuar të instruksioneve Bashkësitë e mëdha të instruksioneve përfshijnë një numër të madh të instruksioneve dhe instruksione komplekse. Kanë qenë dy arsye kryesore që kanë motivuar këtë trend: dëshira për të thjeshtuar kompajlerët dhe dëshira për të përmirësuar performancën. Këto kanë qenë dy arsyet për lëvizjen drejtë gjuhëve të larta programuese (hight level languages – HLL) për hirë të programuesve; dizajnuesit kanë tentuar të dizajnojnë kompjuterë që kanë ofruar përkrahje më të mirë për gjuhët e larta programuese. Kjo pjesë e materialit nuk ka për qëllim të thotë se dizajnuesit e arkitekturës CISC (Complex Instruction Set Computer) kishin ndjekur drejtimin e gabuar. Në të vërtetë, meqë teknologjia vazhdon të evoluojë dhe për arsye se ekzistojnë më shumë se dy kategori të arkitekturave, përshkrimi i arkitekturës CISC nuk mund të jetë vetëm kritikues. Kështu, përshkrimi në pjesën në vazhdim të materialit do të synojë të tregojë disa prej vështirësive të arkitekturës CISC dhe të ofrojë një shpjegim për të kuptuar motivimin e përkrahësve të arkitekturës RISC (Reduced Instruction Set Computer). Arsyeja e parë që u përmend, thjeshtimi i kompajlerit, duket e thjeshtë, por nuk është e thjeshtë. Detyra e një programuesi të kompajlerëve është të ndërtojë një kompajler që gjeneron radhë të mira të instruksioneve të makinës për programet e gjuhëve të larta programuese. Nëse ekzistojnë instruksione të makinës të cilat janë të ngjashme me shprehjet në gjuhët e larta programuese, kjo detyrë e programuesit të kompajlerëve thjeshtohet. Kjo logjikë e të menduarit apo ky arsyetim është vënë në diskutim prej studiuesve që janë marrë me arkitekturën RISC. Studiuesit kishin gjetur se instruksionet komplekse të makinës janë zakonisht të vështira për t’u përdorë sepse kompajleri duhet patjetër të gjejë ato raste që i përshtaten konstruktit. Detyra e optimizimit të kodit të gjeneruar për të zvogëluar madhësinë e kodit, shkurtimit të kohës së ekzekutimit të instruksionit dhe përmirësimi i instruction pipelining është shumë më e vështirë me një bashkësi komplekse të instruksioneve. Sipas disa studimeve, shumica e instruksioneve në një program të kompajluar janë instruksione relativisht të thjeshta. Aryeja tjetër kryesore që e kemi përmendur është pritja se një arkitekturë CISC do të japë programe më të vogla dhe më të shpejta. Programet e vogla kanë dy përparësi. Meqë programi harxhon më pak hapësirë në memorie, do të arrihet një kursim i memories. Duke qenë se memoria sot kushton më lirë, kjo përparësi potenciale nuk është më aq e rëndësishme. Më e rëndësishmja, programet më të vogla duhet të përmirësojnë performancën dhe kjo do të ndodhë në tri mënyra. E para, më pak instruksione nënkupton më pak bajt të instruksioneve që duhet të lexohen. E dyta, në një ambient që përdorë faqe, programet më të vogla kanë më pak faqe, duke zvogëluar në atë mënyrë rastet page fault. E treta, më shumë instruksione do të jenë në memorien kesh. Problemi me këtë mënyrë të arsyetimit është se kjo mënyrë është larg të qenurit e sigurtë se një program CISC do të jetë më i vogël se një program RISC përkatës. Në shumë raste, programi 1 MSc. Valdrin Haxhiu CISC, i shprehur në një gjuhë të makinës me simbole, mund të jetë më i shkurtë (më pak instruksione), por numri i bitëve të programit në memorie mund të mos jetë më i vogël. Tabela 15.6 tregon rezultatet prej tre studimeve që kanë krahasuar madhësinë e programeve të kompajluara të shkruara në gjuhën programuese C në disa procesorë të ndryshëm, duke përfshirë RISC I (që ka një arkitekturë të reduktuar të instruksioneve). Nga tabela mund të shihet se nuk ka ndonjë kursim duke përdorë arkitekturën CISC në vend të arkitekturës RISC. Është e rëndësishme të përmendet që kompjuteri VAX, i cili ka një bashkësi të instruksioneve shumë më komplekse se kompjuteri PDP-11, arrin kursime të vogla. Këto rezultate ishin konfirmuar nga studiuesit e IBM, të cilët gjetën se kompjuteri IBM 801 (me arkitekturë RISC) prodhoi kod që ishte 0.9 herë sa madhësia e kodit në një kompjuter IBM S/370. Tabela 15.6 - Madhësia e kodit në raport me RISC I Ekzistojnë disa arsye për këto rezultate. Kompajlerët në CISC kanë tendencën të favorizojnë instruksionet më të thjeshta, ashtu që përparësia e instruksioneve komplekse se janë më përmbledhëse rrallë herë vjen në shprehje. Gjithashtu, meqë arkitektura CISC ka më shumë instruksione, nevojiten kode më të gjata të operacioneve, duke fituar instruksione më të gjata. Në fund, arkitektura RISC ka tendencën që të përdorë më shumë referencat e regjistrave se sa të lokacioneve të memories, për referenca të regjistrave nevojiten më pak bitë. Faktori i dytë motivues për një bashkësi të instruksioneve me një kompleksitet në rritje ishte që ekzekutimi i instruksioneve do të ishte më i shpejtë. Duket se ka kuptim që një operacion kompleks i një gjuhe të lartë programuese do të ekzekutohet më shpejtë si një instruksion i vetëm i makinës se sa si një radhë e instruksioneve më elementarë. Megjithatë, kjo mund të mos jetë kështu për arsye të një qasjeje ndikuese në përdorimin e instruksioneve më të thjeshta. Njësia kontrolluese e procesorit dhe/ose memoria e mikroprogramit të kontrollit duhet patjetër të jenë më komplekse. Këta faktorë e zgjasin kohën e ekzekutimit të instruksioneve të thjeshta. Në fakt, disa studiues kanë gjetur se shpejtimi i ekzekutimit të instruksioneve komplekse ka të bëjë më shumë me ruajtjen e tyre në memorien e shpejtë të kontrollit se sa me fuqinë që kanë instruksionet komplekse. Memoria e kontrollit e luan rolin e një keshi të instruksioneve. Kështu, arkitekti i harduerit është në pozicion për të provuar të përcaktojë se cilat procedura apo funksione do të përdoren më së shpeshti dhe t’i vendosë ato në memorien e kontrollit duke i implementuar në mikrokod. 2 MSc. Valdrin Haxhiu Karakteristikat e bashkësisë së reduktuar të instruksioneve Edhepse janë përdorë disa qasje të ndryshme për arkitekturën e bashkësisë së reduktuar të instruksioneve, për secilën qasje janë të përbashkëta disa karakteristika: ▪ ▪ ▪ ▪ Një instruksion për cikël Operacionet e llojit regjistër-regjistër Mënyra më të thjeshta të adresimit Formate më të thjeshta të instruksioneve Karaktertistika e parë në listë tregon se ekziston vetëm një instruksion i makinës për një cikël të makinës. Një cikël i makinës definohet si koha e nevojshme për të lexuar dy operandë prej regjistrave, kryerjen e një operacioni në ALU dhe ruajtjen e rezultatit në një regjistër. Kështu, instruksionet RISC nuk duhet të jenë më të komplikuara dhe duhet të ekzekutohen së paku aq shpejtë sa mikroinstruksionet e procesorëve CISC. Përmes instruksioneve të thjeshta, me një cikël, nevoja është e vogël ose nuk ka nevojë për mikrokod; instruksionet mund të implementohen sipas mënyrës hardwired. Këto instruksione duhet të ekzekutohen më shpejtë se instruksionet e krahasueshme të procesorëve tjerë, sepse nuk është e nevojshme që gjatë ekzekutimit të një instruksioni të lexohet në memorien e mikroprogramit të kontrollit. Karakteristika e dytë tregon se shumica e operacioneve duhet të jenë të llojit regjistërregjistër, ku vetëm instruksionet e thjeshta LOAD dhe STORE mund t’i qasen memories. Kjo karakteristikë e dizajnit e thjeshton bashkësinë e instruksioneve dhe njësinë kontrolluese. Për shembull, një bashkësi RISC e instruksioneve mund të përfshijë një ose dy instruksione ADD (p.sh. një instruksion ADD për mbledhje të numrave të plotë dhe një instruksion ADD me bartjecarry); kompjuteri VAX ka 25 instruksione të ndryshme ADD. Një përfitim tjetër është se arkitektura RISC inkurajon optimizimin e përdorimit të regjistrave, ashtu që operandët që përdoren më shpesh janë në memorien më të shpejtë (në regjistra). Përdorimi i operacioneve të llojit regjistër-regjistër është një karakteristikë më e dalluar në dizajnët RISC. Procesorët modern CISC përdorin instruksione për operacione të llojit regjistërregjistër, por përfshijnë edhe operacione të llojit memorie-memorie dhe regjistër-memorie. Tentimet për të krahasuar këto qasje ishin bërë në vitet 1970-ta, para paraqitjes së procesorëve RISC. Disa arkitektura hipotetike ishin vlerësuar në aspektin e madhësisë së programit dhe numrit të bitëve në trafikun e memories. Në ato studime krahasuese, nuk ishte marrë parasysh fakti i qasjes së shpeshtë në një numër të vogël të vlerave lokale dhe se me një numër të madh të regjistrave ose me një kompajler optimizues, shumica e operandëve do të mund të mbaheshin në regjistra për kohë të gjata. Karakteristika e tretë është përdorimi i mënyrave të thjeshta të adresimit. Pothuajse të gjitha instruksionet RISC përdorin adresim të thjeshtë të regjistrave. Mund të përfshihen edhe mënyra tjera të adresimit si adresimi me zhvendosje (displacement) dhe adresimi relativ ndaj regjistrit PC. Disa mënyra tjera më komplekse mund të ndërtohen përmes softuerit. Përsëri, kjo karakteristikë e dizajnit e thjeshton bashkësinë e instruksioneve dhe njësinë kontrolluese. 3 MSc. Valdrin Haxhiu Karakteristika e fundit e përbashkët është përdorimi i një formati të thjeshtë të instruksionit. Në përgjithësi, përdoret vetëm një ose pak formate. Gjatësia e instruksionit është fikse (e pandryshueshme) dhe vendosja në DRAM bëhet vetëm në kufi të fjalës. Fushat në instruksion, sidomos fusha opcode, ndodhen vetëm në një pozitë (vend) fikse brenda instruksionit. Kjo karakteristikë e dizajnit sjellë disa përfitime. Përmes fushave me vend fiks, dekodimi i kodit të operacionit dhe qasja në operandin e regjistrit mund të bëhen në të njëjtën kohë. Formatet e thjeshtuara e thjeshtojnë njësinë kontrolluese. Vendosja në kufi të fjalëve nënkupton poashtu se një instruksion nuk i kalon kufijtë e faqes në memorien DRAM. Duke i marrë sëbashku, këto karakteristika mund të vlerësohen për të përcaktuar përfitimet potenciale në performancë të qasjes RISC. Për këtë ekziston një dëshmi e madhe. E para, mund të zhvillohen kompajlerë optimizues më efektiv. Me anë të instruksioneve më elementarë, janë më shumë mundësi që brenda unazave të vendoset më pak kod, të riorganizohet kodi për efiçiencë, të rritet përdorimi i regjistrave e kështu me radhë. Si pikë e dytë, të cilën e kemi përmendur, është që shumica e instruksioneve të gjeneruara nga një kompajler janë relativisht të thjeshta. Do të ishte e arsyeshme që një njësi kontrolluese e ndërtuar posaçërisht për ato instruksione dhe që përdorë pak mikrokod ose aspak do të mund t’i ekzekutonte ato më shpejtë se një CISC i krahasueshëm. Pika e tretë lidhet me përdorimin e instruction pipelining. Studiuesit e arkitekturës RISC janë të bindur se teknika instruction pipelining mund të aplikohet në një mënyrë shumë më efikase me një bashkësi të reduktuar të instruksioneve. Pika e fundit dhe disi më pak e rëndësishme është se procesorët RISC përgjigjen më shpejt ndaj ndërprerjeve (interrupts) sepse i kontrollojnë ndërprerjet në mes të operacioneve elementarë. Arkitekturat me instruksione komplekse kufizojnë ndërprerjet në kufi të instruksioneve ose duhet patjetër të definojnë pika të caktuara ku mund të bëhet ndërprerja dhe të implementojnë mekanizma për ristartimin e instruksionit. Karakteristikat dalluese në mes arkitekturës CISC dhe RISC Pas entuziazmit fillestar për arkitekturën RISC, është rritur qëndrimi se (1) dizajnët RISC mund të përfitojnë duke përfshirë disa prej karakteristikave të dizajnit CISC dhe (2) dizajnët CISC mund të përfitojnë duke përfshirë disa prej karakteristikave të dizajnit RISC. Rezultati është se dizajnët RISC më të fundit, PowerPC si më i dalluari, nuk janë më dizajnë RISC të “pastër” dhe dizajnët CISC më të fundit, procesorët e Intel-it si më të dalluarit, përfshijnë disa karakteristika RISC. Për qëllime të krahasimit, karakteristikat në vazhdim janë tipike të dizajnit RISC: 1. 2. 3. 4. Vetëm një madhësi të instruksionit. Ajo madhësi është zakonisht 4 bajt. Një numër i vogël i mënyrave të adresimit për të dhëna, zakonisht pesë. Nuk ka adresim indirekt që kërkon që së pari të lexojmë në memorie për të marrë adresën e një operandi tjetër në memorie. 4 MSc. Valdrin Haxhiu 5. Nuk ka operacione që kombinojnë instruksionet load/store me aritmetikë (p.sh. mbledh prej memories, mbledh në memorie). 6. Jo më tepër se një operand i adresuar në memorie në një instruksion. 7. Nuk përkrahë vendosjen jashtë rregullit të të dhënave në memorie për operacionet load/store. 8. Përdorim sa më i madh i njësisë për menaxhim të memories (MMU) për të dhëna në një instruksion. 9. Pesë ose më shumë bit për të specifikuar një regjistër për numra të plotë. Kjo nënkupton së paku 32 regjistra për numra të plotë që mund të referencohen në mënyrë eksplicite. 10. Katër ose më shumë bit për të specifikuar një regjistër për numra me pikë lëvizëse. Kjo nënkupton së paku 16 regjistra për numra me pikë lëvizëse që mund të referencohen në mënyrë eksplicite. Karakteristikat prej 1 deri në 3 tregojnë për kompleksitetin e dekodimit të instruksionit. Karakteristikat prej 4 deri në 8 tregojnë për lehtësinë ose vështirësinë e pipelining, sidomos duke marrë parasysh kërkesat e memories virtuale. Karakteristikat prej 9 deri në 10 janë të lidhura me mundësinë e shfrytëzimit të mirë të kompajlerëve. 5 MSc. Valdrin Haxhiu 17.1 Organizimet multiprocesorike Llojet e sistemeve procesorike paralele Një klasifikim që është paraqitur për herë të parë nga Flynn vazhdon të jetë mënyra më e zakonshme e klasifikimit të sistemeve me mundësi të procesimit (përpunimit) paralel. Flynn kishte propozuar këto kategori të sistemeve kompjuterike: ▪ ▪ ▪ ▪ Single instruction, single data (SISD) stream: Një procesor i vetëm ekzekuton një rrjedhë të vetme të instruksionit për të operuar mbi të dhëna të ruajtura në një memorie. Sistemet me një procesor bëjnë pjesë në këtë kategori. Single instruction, multiple data (SIMD) stream: Një instruksion i vetëm kontrollon ekzekutimin e njëkohshëm të një numri të elementëve përpunues. Secili element përpunues e ka memorien e tij për të dhëna, ashtu që instruksionet ekzekutohen në bashkësi të ndryshme të të dhënave prej procesorëve të ndryshëm. Procesorët që merren me përpunimin e vektorëve dhe vargjeve me shumë dimensione bëjnë pjesë në këtë kategori. Multiple instruction, single data (MISD) stream: Një radhë e të dhënave bartet në një bashkësi të procesorëve, ku secili prej tyre ekzekuton një radhë të ndryshme të instruksioneve. Kjo kategori nuk është implementuar komercialisht. Multiple instruction, multiple data (MIMD) stream: Një bashkësi e procesorëve të ndryshëm ekzekutojnë njëkohshëm radhë të ndryshme të instruksioneve në bashkësi të ndryshme me të dhëna. Multiprocesorët simetrik (symetric multiprocessors - SMP), klasterët (grupe të mëdha të procesorëve) dhe sistemet me qasje jouniforme në memorie (nonuniform memory access – NUMA) bëjnë pjesë në këtë kategori. Me anë të organizimit MIMD, procesorët janë me qëllim të përgjithshëm; secili është në gjendje të përpunojë të gjitha instruksionet e nevojshme për të kryer transformimet e duhura mbi të dhëna. MIMD mund të ndahen edhe sipas mënyrës se si procesorët komunikojnë në mes tyre (Figura 17.1). Nëse procesorët e shfrytëzojnë në mënyrë të përbashkët të njëjtën memorie, atëherë secili procesor u qaset programeve dhe të dhënave në memorien e përbashkët dhe procesorët komunikojnë në mes tyre përmes asaj memorie. Forma më e zakonshme e këtij sistemi njihet si multiprocesorë simetrik (SMP). Në një sistem SMP, shumë procesorë shfrytëzojnë në mënyrë të përbashkët një memorie ose disa memorie përmes një busi të përbashkët ose ndonjë mekanizmi tjetër ndërlidhës; një karakteristikë dalluese është se koha e qasjes në memorie në cilëndo pjesë të memories është përafërsisht e njëjtë për secilin procesor. Një zhvillim i kohëve të fundit është organizimi me qasje jouniforme në memorie (NUMA). Sipas këtij organizimi, koha e qasjes në memorie në pjesë të ndryshme të memories mund të ndryshojë për një procesor NUMA. Një grumbull i procesorëve të pavarur ose SMP mund të ndërlidhen për të formuar një klaster (cluster). Komunikimi në mes të kompjuterëve në klaster bëhet përmes rrugëve fikse ose përmes ndonjë rrjete. 6 MSc. Valdrin Haxhiu Figura 17.1 – Një klasifikim i arkitekturave të procesorëve paralel Organizimet paralele Figura 17.2 paraqet organizimin e përgjithshëm të klasifikimit të paraqitur në Figura 17.1. Figura 17.2a paraqet strukturën e organizimit SISD. Ekziston një njësi kontrolluese e cila i ofron një njësie të përpunimit një radhë të instruksioneve. Njësia përpunuese vepron mbi një radhë me të dhëna prej një njësie të memories. Me anë të SIMD, prapë ekziston një njësi kontrolluese e vetme, që furnizon shumë njësi përpunuese me një radhë të vetme të instruksioneve. Secila njësi përpunuese e ka memorien e saj (të paraqitur në Figura 17.2b) ose mund të ekzistojë një memorie e përbashkët. Në fund, me anë të MIMD, ekzistojnë disa njësi kontrolluese, ku secila e furnizon njësinë e vet përpunuese me një radhë të ndarë të instruksioneve. MIMD mund të jetë një multiprocesorë me memorie të përbashkët (Figura 17.2c) ose një multikompjuter me memorie të shpërndarë (Figura 17.2d). 7 MSc. Valdrin Haxhiu Figura 17.2 – Organizime tjera të kompjuterit 17.2 Multiprocesorët simetrik Deri vonë, pothuajse të gjithë kompjuterët me një shfrytëzues dhe shumica e kompjuterëve workstation kanë pasur një procesor me qëllime të përgjithshme. Me rritjen e kërkesave për rritje të performancës dhe rënien e çmimit të procesorëve, prodhuesit kanë paraqitur sisteme me organizim SMP. Emërtimi SMP i referohet arkitekturës së harduerit të një kompjuteri dhe sjelljes së një sistemi operativ që reflekton atë arkitekturë. Një SMP mund të definohet si një sistem kompjuterik në vete me këto karakteristika: 1. Janë dy ose më shumë procesorë me aftësi të krahasueshme. 2. Këta procesorë e shfrytëzojnë memorien e njëjtë DRAM dhe pajisjet për H/D dhe janë të lidhur me një bus ose skemë ndërlidhëse të brendshme, ashtu që koha e qasjes në memorie është përafërsisht e njëjtë për secilin procesor. 3. Të gjithë procesorët kanë qasje në pajisjet për H/D, përmes kanaleve të njëjta ose kanaleve të ndryshme që ofrojnë rrugë për në pajisjen e njëjtë. 4. Të gjithë procesorët mund të kryejnë funksionet e njëjta (prej kësaj rrjedhë emërtimi simetrik). 5. Sistemi kontrollohet nga një sistem operativ i integruar që ofron ndërveprim në mes të procesorëve dhe programeve të tyre në nivel të punës, detyrës, fajllit dhe elementëve të të dhënave. 8 MSc. Valdrin Haxhiu Një organizim SMP ka një numër të përparësive potenciale ndaj një organizimi me një procesor, duke përfshirë këto: ▪ ▪ ▪ ▪ Performanca: Nëse puna që duhet të kryhet nga një kompjuter mund të organizohet ashtu që disa pjesë të punës mund të kryhen në mënyrë paralele, atëherë një sistem me shumë procesorë do të japë performancë më të mirë se sa një procesor i vetëm i llojit të njëjtë (Figura 17.3). Disponueshmëria: Në një sistem multiprocesorë, meqë të gjithë procesorët mund të kryejnë të njëjtat funksione, dështimi i një procesori nuk e ndalon punën e kompjuterit. Në vend të kësaj, sistemi mund të vazhdojë punën me një performancë të zvogëluar. Rritja graduale: Një shfrytëzues mund rrisë performancën e një sistemi duke shtuar një procesor shtesë. Shkallëzimi: Prodhuesit mund të ofrojnë produkte të ndryshme me çmime të ndryshme dhe karakteristika të ndryshme të performancës bazuar në numrin e procesorëve të konfiguruar në sistem. Figura 17.3 – Multiprogramimi dhe multiprocesimi 9 MSc. Valdrin Haxhiu Organizimi Figura 17.4 paraqet në formë të përgjithshme organizimin e një sistemi multiprocesorë. Figura 17.4 – Bllok diagrami i përgjithshëm i një multiprocesori me procesorë të lidhur ngushtë Janë dy ose më shumë procesorë. Secili procesor është në vete, duke përfshirë një njësi kontrolluese, një ALU, regjistrat dhe zakonisht një ose më shumë nivele të memories kesh. Secili procesor ka qasje në një memorie të përbashkët DRAM dhe në pajisje për H/D përmes një mekanizmi të ndërlidhjes. Procesorët mund të komunikojnë në mes vete përmes memories (mesazhet dhe informatat e gjendjes vendosen në pjesë të përbashkëta për të dhëna). Mund të jetë e mundur që procesorët të shkëmbejnë sinjale direkt. Memoria është e organizuar ashtu që mund të ndodhin shumë qasje të njëkohshme në blloqe të ndara të memories. Në disa konfigurime, secili procesor mund të ketë memorien e tij DRAM dhe kanalet për H/D krahas atyre të përbashkëta. Organizimi më i zakonshëm për kompjuterët personal, kompjuterët workstation dhe serverët është busi i ndarë në kohë (time-shared). Busi time-shared është mekanizmi më i thjeshtë për ndërtimin e një sistemi multiprocesorë (Figura 17.5). Struktura dhe pikat e kontaktit janë të njëjta si për një sistem me një procesor që përdorë një bus ndërlidhës. Busi përbëhet prej telave për kontroll, për adresa dhe për të dhëna. 10 MSc. Valdrin Haxhiu Figura 17.5 – Organizimi multiprocesorë simetrik Për të lehtësuar bartjet përmes DMA (direct memory access) prej nënsistemeve për H/D deri te procesorët, ofrohen këto karakteristika: ▪ ▪ ▪ Adresimi: Modulet në bus duhet patjetër të dallohen (përmes adresimit) për të përcaktuar burimin dhe destinacionin e të dhënave. Rregullimi: Cilido modul për H/D mund të funksionojë përkohësisht si një “master”. Ofrohet një mekanizëm për të rregulluar kërkesat për të marrë nën kontroll busin, duke përdorë ndonjë skemë me prioritete. Time-sharing: Kur një modul është duke përdorë busin, modulet tjera përjashtohen dhe duhet patjetër të pezullojnë punën e tyre derisa të marrin nën kontroll busin. Këto karakteristika të sistemeve me një procesor mund të përdoren direkt në një organizim SMP. Në organizimin SMP, janë shumë procesorë si dhe shumë procesorë për H/D që bëjnë përpjekje të kenë qasje në një ose më shumë module të memories përmes busit. 11 MSc. Valdrin Haxhiu Organizimi përmes busit ka disa karakteristika interesante: ▪ ▪ ▪ Thjeshtësia: Kjo është qasja më e thjeshtë për organizimin multiprocesorë. Pikat e kontaktit fizik, adresimi, rregullimi dhe logjika për time-sharing të secilit procesor janë të njëjta sikur te një sistem me një procesor. Fleksibiliteti: Në përgjithësi është e lehtë për të zgjeruar sistemin duke shtuar më shumë procesorë në bus. Besueshmëria: Busi është thelbësisht një medium pasiv dhe dështimi i ndonjërës prej pajisjeve të lidhura nuk duhet të shkaktojë dështimin e tërë sistemit. Mangësia kryesore e organizimit përmes busit është performanca. Të gjitha referencat në memorie kalojnë përmes busit të njëjtë. Kështu, shpejtësia e busit e kufizon shpejtësinë e sistemit. Për të përmirësuar performancën, është e dëshirueshme që secili procesor të pajiset me një memorie kesh. Kjo duhet të zvogëlojë shumë numrin e qasjeve në bus. Zakonisht, kompjuterët workstation dhe kompjuterët personal kanë dy nivele të memories kesh, me nivelin e parë L1 brenda në procesor dhe me nivelin e dytë L2 brenda ose jashtë. Disa procesorë kanë edhe nivelin e tretë L3 të keshit. Përdorimi i niveleve të memories kesh paraqet disa çështje të reja që duhet të merren parasysh. Meqë secili kesh lokal e ka një pjesë të përmbatjes së memories DRAM, nëse një fjalë e përmbajtjes ndryshohet në ndonjërin prej keshëve, do të mund të bënte të pavlefshme atë fjalë në keshët tjerë. Për të parandaluar këtë, procesorët tjerë duhet të lajmërohen që ka ndodhë një ndryshim. Ky problem njihet si problemi i koherencës së keshit (cache coherence) dhe zakonisht trajtohet në harduer e jo nga sistemi operativ. Procesorët multicore Një procesor multicore, i njohur edhe si çipi me shumë procesorë, kombinon dy ose më tepër njësi përpunuese (të quajtura cores apo bërthama) në një pjesë të vetme të siliciumit (të quajtur sipërfaqe). Zakonisht një bërthamë (core) përbëhet prej të gjithë elementëve të një procesori, si regjistrat, ALU, hardueri për pipeline, njësia kontrolluese dhe keshi L1 për instruksione dhe të dhëna. Krahas shumë bërthamave, një çip modern me shumë bërthama përfshinë poashtu keshin L2 dhe keshin L3. Procesorët multicore më të integruar, të njohur si sistem brenda çipit (system on chip – SOC), përfshijnë brenda tyre edhe kontrollerin e memories dhe të pajisjeve periferike. 12 MSc. Valdrin Haxhiu 18.1 Çështjet e performancës të harduerit Ashtu siç kemi bërë fjalë në ligjëratat e mëhershme, sistemet e procesorëve kanë pasur një rritje të madhe në performancën e ekzekutimit. Kjo rritje është rezultat i shumë faktorëve, rritjes së frekuencës të orës, rritjes së densitetit të tranzistorëve dhe përmirësimeve në organizimin e procesorit brenda në çip. Rritja në paralelizëm dhe kompleksitet Ndryshimet në organizim të dizajnit të procesorit kanë qenë të fokusuara kryesisht në shfrytëzimin e paralelizmit në nivel të instruksioneve (instruction level parallelism - ILP), ashtu që më shumë punë të kryhen në një cikël të orës. Me një renditje kronologjike, këto ndryshime përfshijnë: ▪ ▪ ▪ Pipelining: Instruksionet ekzekutohen në një pipeline me faza ashtu që përderisa një instruksion ekzekutohet në një fazë në pipeline, një instruksion tjetër ekzekutohet në një fazë tjetër në pipeline. Superscalar: Shumë pipeline ndërtohen duke përdorë shumë kopje të resurseve për ekzekutim. Kjo mundëson ekzekutimin paralel të instruksioneve në pipeline paralel, për aq kohë sa shmangen pengesat. Simultaneous multithreading (SMT): Grupet e regjistrave zgjerohen ashtu që shumë threda (ekzekutimi i një programi në disa pjesë) mund të përdorin në mënyrë të përbashkët resurset e pipeline. Me të gjitha këto inovacione, dizajnuesit janë përpjekur gjatë viteve për të rritur performancën e sistemit duke shtuar kompleksitetin. Në rastin e pipelining, pipeline me tri faza të thjeshta ishin zëvendësuar me pipeline të përbërë nga pesë faza. Bërthama “Prescot” në procesorin Intel Pentium kishte 31 faza për disa instruksione. Ekziston një kufizim praktik deri ku mund të shkojë ky trend, sepse me shumë faza, nevoja për më shumë qarqe logjike, më shumë ndërlidhje dhe më shumë sinjale kontrolluese është e madhe. Me anë të organizimit superscalar, rritja e performancës mund të arrihet duke rritur numrin e pipeline-ve paralel. Përsëri, me rritjen e numrit të pipeline-ve përfitimi është deri diku i madh (kthimi në investimin e bërë dikur zvogëlohet). Më shumë qarqe nevojiten për të menaxhuar pengesat dhe resurset e instruksionit nëpër faza. Në një moment të caktuar, një thred i ekzekutimit arrin në pikën ku pengesat dhe varësitë në mes të resurseve pamundësojnë përdorimin e plotë të shumë pipeline-ve që janë në dispozicion. Poashtu, kodi i kompajluar jo shpesh paraqet paralelizëm të mjaftueshëm në nivel të instruksionit për të përdorë më shumë se rreth gjashtë pipeline paralel. Situata e njëjtë është edhe te SMT, vështirësitë e menaxhimit të shumë thredave në një bashkësi të pipeline-ve e kufizojnë numrin e thredave dhe numrin e pipeline-ve që mund të shfrytëzohen në mënyrë efikase. Përparësia e SMT në fakt qëndron në atë se dy ose më shumë rrjedha të programit mund të kërkohen për ndonjë paralelizëm të mundshëm në nivel të instruksionit. 13 MSc. Valdrin Haxhiu Figura 18.1 – Organizimet tjera të çipit Ekziston një grup i ndërlidhur i problemeve që kanë të bëjnë me dizajnimin dhe fabrikimin e çipit të procesorit. Rritja e kompleksitetit për të menaxhuar të gjitha çështjet logjike të pipeline-ve shumë të gjatë, të shumë pipeline-ve superscalar dhe shumë grupeve të regjistrave për SMT nënkupton që një sipërfaqe gjithnjë e më e madhe e çipit mbushet me qarqe për koordinim dhe bartje të sinjaleve. Kjo rritë vështirësinë e dizajnimit, fabrikimit dhe largimit të gabimeve në çipa. Sfida e vështirë inxhinierike gjithnjë në rritje lidhur me qarqet logjike të procesorit është një nga arsyet që një pjesë gjithnjë në rritje e çipit të procesorit i dedikohet qarqeve logjike më të thjeshta të memories. Çështje tjera janë edhe çështjet që kanë të bëjnë me shpenzimin e fuqisë elektrike. 14 MSc. Valdrin Haxhiu Shpenzimi i fuqisë elektrike Për të mbajtur trendin e performancës më të madhe me rritjen e numrit të tranzistorëve në çip, dizajnuesit kanë përdorë dizajnë më të përmirësuar të procesorit (pipelining, superscalar dhe SMT) dhe frekuenca më të mëdha të orës. Fatkeqësisht, kërkesat për fuqi elektrike janë rritur në mënyrë eksponenciale me rritjen e densitetit të çipit dhe frekuencës së orës. Një mënyrë për të kontrolluar dendësinë e fuqisë elektrike është përdorimi i një pjese më të madhe të sipërfaqes së çipit për memorie. Tranzistorët e memories janë më të vegjël dhe kanë një dendësi disa herë më të vogël të fuqisë se sa tranzistorët që përdoren në qarqet logjike në pjesët tjera të procesorit. Me rritjen e dendësisë së tranzistorëve të çipit, përqindja e sipërfaqes së çipit që i dedikohet memories është rritur dhe tash zakonisht përbën gjysmën e sipërfaqes së çipit. Megjithatë, një pjesë e konsiderueshme e sipërfaqes së çipit i dedikohet qarqeve përpunuese. Mënyra se si të shfrytëzohen të gjithë tranzistorët e qarqeve është një çështje themelore e dizajnit. Ashtu siç u tha më herët, janë disa kufizime të përdorimit efektiv të teknikave si superscalar dhe SMT. Në përgjithësi, përvoja e dekadave të fundit është përfshirë në një ligj bazë të njohur si ligji i Pollack-ut (Pollack’s rule), i cili thotë se rritja e peformancës është përafërsisht proporcionale me rrënjën katrore të rritjes së kompleksitetit. Me fjalë tjera, nëse qarqet logjike brenda një bërthame dyfishohen, atëherë ajo bërthamë ofron vetëm 40% më shumë performancë. Në parim, përdorimi i më shumë bërthamave ka potencialin të ofrojë rritje gati lineare të performancës me rritjen e numrit të bërthamave, por vetëm për softuerin që mund t’i përdorë ato bërthama. Marrja në konsideratë e çështjeve të fuqisë elektrike është një motiv tjetër për të lëvizur drejt organizimit multicore. Meqë çipi ka një sasi të madhe të memories kesh, gjasat që ajo memorie të përdoret në mënyrë efikase nga ndonjë thred i ekzekutimit janë të vogla. Madje edhe me anë të SMT, përdorimi i shumë thredave bëhet në një mënyrë relativisht të kufizuar dhe në këtë mënyrë nuk mund të shfrytëzojë plotësisht keshin e madh, përderisa një numër i thredave relativisht të pavarur ose proceseve (programeve në ekzekutim) ka një mundësi më të madhe që të përdorë më shumë memorien kesh. 18.3 Organizimi multicore Në një nivel të lartë të përshkrimit, parametrat kryesorë në një organizim multicore janë: ▪ ▪ ▪ ▪ ▪ Numri i bërthamave të procesorëve në çip Numri i niveleve të memories kesh Si përdoret keshi prej bërthamave A përdoret SMT Llojet e bërthamave 15 MSc. Valdrin Haxhiu Nivelet e memories kesh Figura 18.6 paraqet katër organizime të përgjithshme për sistemet multicore. Figura 18.6a paraqet një organizim që haset në disa prej procesorëve multicore të hershëm dhe mund të haset ende në disa çipa embedded. Figura 18.6 – Organizime tjera multicore Në këtë organizim, keshi i vetëm brenda në çip është keshi L1, ku secila bërthamë ka keshin e saj L1 të dedikuar. Pothuajse çdo herë, keshi L1 ndahet në pjesën për instruksione dhe në pjesën për të dhëna, përderisa keshi L2 dhe keshët e niveleve më të larta nuk janë të ndarë në pjesë. Një shembull i këtij organizimi është procesori ARM11 MPCore. Organizimi i paraqitur në Figura 18.6b është një organizim në të cilin gjithashtu nuk ka ndonjë kesh që shfrytëzohet në mënyrë të përbashkët brenda në çip. Në këtë organizim, ka hapësirë të mjaftueshme në çip për keshin L2. Një shembull i këtij organizimi është procesori AMD Opteron. Figura 18.6c paraqet një ndarje të ngjashme të hapësirës së çipit për memorien, por me 16 MSc. Valdrin Haxhiu përdorim të përbashkët të keshit L2. Procesori Intel Core Duo ka këtë organizim. Në fund, me rritjen e sasisë së memories kesh në procesor, çështjet e performancës diktojnë vendosjen edhe të një niveli L3 të keshit të përbashkët, me keshët L1 dhe L2 të dedikuar për secilën bërthamë të procesorit. Një shembull i këtij organizimi është procesori Intel Core i7. Përdorimi i përbashkët i një keshi të nivelit më të lartë në çip ka disa përparësi ndaj përdorimit vetëm të keshëve të dedikuar: 1. Ndërhyrjet konstruktive mund të zvogëlojnë miss ratio-n e përgjithshme. Kjo i bie që nëse një thred në njërën bërthamë i qaset një vendi në memorien DRAM, ajo qasje vendosë në keshin e përbashkët bllokun me përmbajtjen e atij vendi të memories DRAM. Nëse një thred në një bërthamë tjetër më vonë ka nevojë t’i qaset bllokut të njëjtë në memorien DRAM, atëherë përmbajtja e atij blloku do të jetë në keshin e përbashkët (ështe vendosur më parë nga thredi i bërthamës tjetër). 2. Një përparësi tjetër është se në keshin e përbashkët do të jetë vetëm një kopje e të dhënave që përdoren në mënyrë të përbashkët. 3. Duke përdorë algoritmet e duhura për zevëndësimin e rreshtave në kesh, ndarja e hapësirës së keshit të përbashkët për secilën bërthamë bëhet në mënyrë dinamike, ashtu që thredat që kanë lokalitet më të vogël (bashkësi punuese më të mëdha) mund të përdorin më shumë kesh. 4. Komunikimi ndërmjet bërthamave është i lehtë për t’u implementuar përmes vendeve të përbashkëta të memories. 5. Përdorimi i një niveli më të lartë të keshit të përbashkët e kufizon problemin e koherencës së keshit në nivelet më të vogla të keshit, gjë që mund të ofrojë një përparësi shtesë të performancës. Një përparësi potenciale e keshit L2 të dedikuar në çip është se çdo bërthamë ka qasje më të shpejtë në keshin e saj privat L2. Kjo ka përparësi për thredat që kanë një lokalitet të madh. Me rritjen e memories në dispozicion dhe numrit të bërthamave, përdorimi i një keshi të përbashkët L3 të kombinuar me nga një kesh L2 për bërthamë ofron performancë më të mirë se sa një kesh i madh L2 i përbashkët ose memorie kesh L2 të mëdha të dedikuar pa asnjë kesh L3 brenda në çip. Një shembull i këtij organizimi është procesori Intel Xeon E5-2600/4600. Multithreading i njëkohshëm Një vendim tjetër i dizajnit të organizimit në një sistem multicore është nëse bërthamat do të implementojnë multithreading të njëkohshëm (simultaneous multithreading). Për shembull, procesori Intel Core Duo përdorë bërthama të pastra superscalar, përderisa procesori Intel Core i7 përdorë bërthama SMT. SMT ka efektin e shkallëzimit të numrit të thredave në nivel të harduerit që i përkrahë sistemi multicore. Kështu, një sistem multicore me katër bërthama dhe SMT që përkrahë katër threda të njëkohshëm në secilën bërthamë paraqitet njëjtë në nivelin e softuerit sikur një sistem multicore me 16 bërthama. Meqë softueri po zhvillohet për të shfrytëzuar sa më shumë resurset paralele, një qasje përmes SMT është më atraktive se sa një qasje e pastër superscalar. 17 MSc. Valdrin Haxhiu 18.5 Intel CORE i7-990X Intel ka zhvilluar viteve të fundit disa produkte multicore. Në këtë pjesë do të trajtojmë procesorin Intel Core i7-990X. Struktura e përgjithshme e procesorit Intel Core i7-990X është paraqitur në Figura 18.13. Secila bërthamë ka keshin e saj L2 të dedikuar dhe gjashtë bërthama e kanë të përbashkët keshin L3 me madhësi 12MB. Një mekanizëm që përdorë Intel është që për t’i bërë keshët më efektiv përdoret marrja para kohe e instruksioneve (prefetching), përmes së cilës hardueri shqyrton mënyrat e qasjes në memorie dhe tenton të mbushë keshët në mënyrë spekulative me të dhëna të cilat ka mundësi se do të kërkohen në një kohë të afërt. Intel Core i7-990X përkrahë dy forma të komunikimit të jashtëm me çipat tjerë. Kontrolluesi i memories DDR3 DRAM është brenda çipit të këtij procesori. Pikat e kontaktit për komunikim përkrahin tre kanale që janë më gjerësi 8 bajt për një bus me gjerësi 192 bit dhe një kapacitet të bartjes së të dhënave deri në 32GB/s. Përmes një kontrolluesi të memories brenda në çip, eliminohet busi i jashtëm (Front Side Bus) në mes CPU-së dhe memories DRAM. Busi QuickPath Interconnect (QPI) është një specifikim i ndërlidhjes për koherencë të keshit, lidhje pikë në pikë për bashkësinë e çipave (chipset) dhe procesorët e Intel. Ky mundëson një lidhje të shpejtë në mes çipave të procesorëve. Ndërlidhja QPI punon me shpejtësi deri në 6.4 Giga Tranfers/s. Me 16 bit për një transfer, fitohet kapacitet deri në 12.8 GB/s dhe meqë ndërlidhjet QPI përfshijnë çifte të dedikuara dydrejtimëshe, kapaciteti i përgjithshëm i bartjes është 25.6 GB/s. Figura 18.13 – Bllokdiagrami i Intel Core i7-990X 18 MSc. Valdrin Haxhiu Referenca Materiali është marrë nga kapitulli 15 (faqe 535), nga kapitulli 17 (faqe 613) dhe nga kapitulli 18 (faqe 656) i librit Computer Organization and Architecture Designing for Performance, 10th edition të autorit William Stallings. 19

Use Quizgecko on...
Browser
Browser