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

11__AOK__Ligjërata 11__Njësia kontrolluese e CPU-së -- MSc. Valdrin Haxhiu.pdf

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

Document Details

NiftyGodel

Uploaded by NiftyGodel

Tags

computer architecture cpu micro operations

Full Transcript

Kolegji UBT Arkitektura dhe organizimi i kompjuterëve Ligjërata 11 Njësia kontrolluese e CPU-së MSc. Valdrin Haxhiu MSc. Valdrin Haxhiu 20.1 Mikro-operacionet E dimë se puna e një kompjuteri, për ekzekutimin e një programi, përbëhet nga një radhë e cikleve të instruksioneve, me një instruksion për n...

Kolegji UBT Arkitektura dhe organizimi i kompjuterëve Ligjërata 11 Njësia kontrolluese e CPU-së MSc. Valdrin Haxhiu MSc. Valdrin Haxhiu 20.1 Mikro-operacionet E dimë se puna e një kompjuteri, për ekzekutimin e një programi, përbëhet nga një radhë e cikleve të instruksioneve, me një instruksion për një cikël. Natyrisht, duhet të kemi parasysh se kjo radhë e cikleve të instruksioneve nuk është domosdoshmërisht e njëjtë me radhën e shkruarjes së instruksioneve që përbëjnë programin, për arsye të instruksioneve për degëzim. Gjithashtu e dimë se secili cikël i instruksionit përbëhet nga një numër i njësive më të vogla. Një ndarje e përshtatshme është në ciklin e marrjes (fetch), ciklin indirekt, ciklin e ekzekutimit dhe ciklin e ndërprerjes, ku vetëm cikli i marrjes dhe i ekzekutimit paraqiten gjithmonë. Për dizajnimin e një njësie kontrolluese, megjithatë, përshkrimin duhet ta ndajmë në pjesë më të vogla. Në diskutimin që kemi bërë në ligjëratën 4 për instruction pipelining, kemi mësuar se cikli i instruksionit mund të ndahet edhe në më shumë pjesë. Në të vërtetë, do të shohim se secili prej cikleve përfshinë një radhë të hapave, ku secili prej hapave përfshinë regjistrat e procesorit. Ne do t’i quajmë këta hapa mikro-operacione. Parashtesa mikro ka të bëjë me faktin se secili hap është shumë i thjeshtë dhe kryen punë shumë të vogël. Figura 20.1 paraqet lidhjen në mes të koncepteve të ndryshme që i kemi diskutuar. Si përmbledhje, ekzekutimi i një programi përbëhet nga një ekzekutim me radhë i instruksioneve. Secili instruksion ekzekutohet gjatë një cikli të instruksionit që përbëhet nga nëncikle më të shkurtër (p.sh. fetch, indirect, execute dhe interrupt). Ekzekutimi i secilit nëncikël përfshinë një ose më tepër operacione më të vogla apo mikrooperacione. Mikro-operacionet janë operacionet funksionale ose atomike të një procesori. Në këtë pjesë, do të shqyrtojmë mikro-operacionet për të kuptuar se si ngjarjet e një cikli të instruksionit mund të përshkruhen si një radhë e këtyre mikro-operacioneve. Cikli i marrjes (fetch cycle) Së pari do të trajtojmë ciklin e marrjes, që paraqitet në fillim të ciklit të instruksionit dhe merr (lexon) një instruksion në memorie. Për qëllime diskutimi, le të supozojmë organizimin e paraqitur në Figura 14.6 (Rrjedha e të dhënave, cikli i marrjes (leximit)) te ligjërata 4. Katër regjistra përfshihen: ▪ ▪ ▪ ▪ Memory address register (MAR): Lidhet në telat për adresa në busin e sistemit. Paraqet adresën për lexim ose shkrim në memorie. Memory buffer register (MBR): Lidhet në telat për të dhëna në busin e sistemit. Përmban vlerën që do të ruhet në memorie ose vlerën që është lexuar herën e fundit në memorie. Program counter (PC): Mbanë adresën e instruksionit të ardhshëm që do të lexohet. Instruction register (IR): Mbanë instruksionin e fundit që është lexuar. 1 MSc. Valdrin Haxhiu Figura 20.1 – Elementët përbërës të ekzekutimit të një programi Të shikojmë radhën e ngjarjeve për ciklin e marrjes nga këndvështrimi i ndikimit të tij në regjistrat e procesorit. Një shembull është paraqitur në Figura 20.2. (a) Fillimi (para t1) (b) Pas hapit të parë (c) Pas hapit të dytë (d) Pas hapit të tretë Figura 20.2 – Radha e ngjarjeve, cikli i marrjes Në fillim të ciklit të marrjes, adresa e instruksionit të radhës që do të ekzekutohet është në regjistrin PC; në këtë rast adresa është 1100100. Hapi i parë është që kjo adresë të bartet në regjistrin MAR sepse ky është regjistri i vetëm që është i lidhur në telat për adresa në busin e sistemit. Hapi i dytë është leximi i instruksionit. Adresa e duhur (që është në MAR) vendoset në busin e adresave, njësia kontrolluese lëshon komandën READ (lexo) në busin e kontrollit, vlera e lexuar vendoset në busin 2 MSc. Valdrin Haxhiu e të dhënave dhe arrin në regjistrin MBR. Duhet të rrisim vlerën e regjistrit PC për aq sa është gjatësia e instruksionit për t’u bërë gati për instruksionin e radhës. Meqë këto dy veprime (leximi i fjalës në memorie dhe rritja e vlerës së regjistrit PC) nuk e pengojnë njëri-tjetrin, këto mund të kryhen në të njëjtën kohë. Hapi i tretë është bartja e përmbajtjes së regjistrit MBR në regjistrin IR. Kjo e liron regjistrin MBR për përdorim gjatë një cikli indirekt të mundshëm. Pra, cikli i thjeshtë i marrjes përbëhet prej tre hapave dhe katër mikro-operacioneve. Secili mikro-operacion përfshinë bartjen e të dhënave brenda dhe jashtë një regjistri. Për sa kohë që këto bartje nuk pengojnë njëra-tjetrën, disa nga to mund të kryhen brenda një hapi, duke kursyer kohë. Simbolikisht, këtë radhë të ngjarjeve mund të shkruajmë në këtë mënyrë: t1: MAR ← (PC) t2: MBR ← Memory PC t3: IR ← (PC) + I ← (MBR) ku: I është gjatësia e instruksionit. Supozojmë se te ky shembull kemi në dispozicion një orë (kristal) për qëllime kohore që lëshon rregullisht pulse me gjatësi të njëjtë të ciklit. Çdo cikël i orës paraqet një njësi kohore. Në këtë mënyrë, të gjitha njësitë kohore janë me gjatësi të njëjtë. Secili mikro-operacion mund të kryhet brenda kohës së një njësie kohore. Paraqitja (t1, t2, t3) tregon njësitë kohore të njëpasnjëshme. Këtë mund ta përshkruajmë me fjalë në këtë mënyrë: ▪ ▪ ▪ Njësia e parë kohore: Barte përmbajtjen e regjistrit PC në MAR. Njësia e dytë kohore: Barte përmbajtjen në MBR të lokacionit (vendit) të memories që specifikohet me adresën në MAR. Rrite për gjatësinë I përmbajtjen e regjistrit PC. Njësia e tretë kohore: Barte përmbajtjen e regjistrit MBR në IR. Mund të vërehet se mikro-operacioni i dytë dhe i tretë ndodhin gjatë njësisë së dytë kohore. Mikrooperacioni i tretë do të mund të grupohej me mikro-operacionin e katërt pa ndikuar në operacionin e marrjes: t1: MAR ← (PC) t2: MBR ← Memory t3: PC IR ← (PC) + I ← (MBR) Grupimi i mikro-operacioneve duhet të bëhet patjetër sipas dy rregullave të thjeshta: 1. Duhet të ndjeket radha e duhur e ngjarjeve. Pra, mikro-operacioni (MAR ← (PC)) duhet patjetër të ndodhë para mikro-operacionit (MBR ← Memory) sepse operacioni i leximit në memorie përdorë adresën në regjistrin MAR. 2. Konfliktet duhet të shmangen. Nuk duhet të tentojmë të lexojmë nga dhe të shkruajmë në regjistrin e njëjtë në të njëjtën njësi kohore, sepse rezultatet mund të jenë të paparashikueshme. 3 MSc. Valdrin Haxhiu Për shembull, mikro-operacionet (MBR ← Memory) dhe (IR ← (MBR)) nuk duhet të ndodhin në të njëjtën njësi kohore. Në këtë shembull njëri nga mikro-operacionet përfshinë një mbledhje. Për të shmangur përsëritjen e qarqeve, kjo mbledhje do të mund të kryhej nga njësia ALU. Përdorimi i ALU-së mund të përfshijë mikro-operacione shtesë, varësisht prej funksionalitetit të ALU-së dhe organizimit të procesorit. Cikli indirekt Pas marrjes së instruksionit, hapi i radhës është marrja e operandëve burimor. Duke vazhduar me shembullin e thjeshtë, të supozojmë formatin e instruksionit me një adresë, që lejon adresimin direkt dhe adresimin indirekt. Nëse instruksioni specifikon një adresë indirekte, atëherë një cikël indirekt duhet të ndodhë para ciklit të ekzekutimit. Rrjedha e të dhënave ndryshon paksa nga ajo që është paraqitur në Figura 14.7 (Rrjedha e të dhënave, cikli indirekt) dhe përfshinë këto mikrooperacione: t1: MAR ← ( IR (Address) ) t2: MBR ← Memory t3: IR (Address) ← ( MBR (Address) ) Përmbajtja e fushës së adresës bartet në regjistrin MAR. Kjo adresë përdoret për marrjen e adresës së operandit. Në fund, fusha e adresës në IR përditësohet nga MBR, ashtu që përmban një adresë direkte në vend të adresës indirekte. Regjistri IR është në gjendjen e njëjtë sikur adresimi indirekt të mos përdorej fare dhe i gatshëm për ciklin e ekzekutimit. Cikli i ndërprerjes Pas përfundimit të ciklit të instruksionit, bëhet një testim për të përcaktuar nëse ndonjë ndërprerje e aktivizuar është paraqitur. Nëse po, paraqitet cikli i ndërprerjes. Natyra e këtij cikli ndryshon shumë prej një kompjuteri në një tjetër. Do të paraqesim një radhë të thjeshtë të ngjarjeve, ashtu siç është ilustruar në Figura 14.8 (Rrjedha e të dhënave, cikli indirekt). Kemi këtë radhë: t1: MBR ← (PC) t2: MAR ← Save_Address PC ← Routine_Address t3: Memory ← (MBR) Në hapin e parë, përmbajtja e regjistrit PC bartet në MBR, ashtu që ajo përmbajtje mund të ruhet për kthim pas përpunimit të ndërprerjes. Pastaj në MAR ruhet adresa në të cilën do të ruhet përmbajtja e regjistrit PC dhe në regjistrin PC ruhet adresa e fillimit të procedurës që merret me 4 MSc. Valdrin Haxhiu përpunimin e ndërprerjes. Secili prej këtyre veprime mund të jetë një mikro-operacion i vetëm. Megjithatë, meqë shumica e procesorëve ofrojnë shumë lloje dhe/ose nivele të ndërprerjeve, mund të jenë të nevojshme një ose më tepër mikro-operacione shtesë për të marrë Save_Address dhe Routine_Address para se të barten në MAR dhe PC. Në cilindo rast, posa kjo të jetë bërë, hapi i fundit është ruajtja e përmbajtjes së regjistrit MBR në memorie. Pas kësaj, procesori është i gatshëm të fillojë ciklin e instruksionit të radhës. Cikli i ekzekutimit Cikli i marrjes, indirekt dhe i ndërprerjes janë të thjeshtë dhe të parashikueshëm. Secili përfshinë një radhë të vogël të mikro-operacioneve dhe në secilin rast, të njëjtat mikro-operacione përsëriten. Kjo nuk vlen për ciklin e ekzekutimit. Për arsye të kodeve të ndryshme të operacioneve, ekziston një numër i ndryshëm i radhëve të mikro-operacioneve që mund të paraqiten. Njësia kontrolluese shqyrton kodin e operacionit dhe krijon një radhë të mikro-operacaioneve bazuar në vlerën e kodit të operacionit. Kjo njihet si dekodim i instruksionit. Të marrim një shembull. Së pari le të kemi instruksionin add: ADD R1, X i cili mbledhë përmbajtjen e lokacionit X me përmbajtjen e regjistrit R1. Kjo radhë e mikrooperacioneve do të mund të paraqitej: t1: MAR ← ( IR (Address) ) t2: MBR ← Memory t3: R1 ← (R1) + (MBR) Në fillim, instruksioni ADD gjendet në regjistrin IR. Në hapin e parë, pjesa e adresës së përmbajtjes së regjistrit IR vendoset në regjistrin MAR. Pastaj lexohet lokacioni i adresuar. Në fund, ALU mbledhë përmbajtjet e regjistrave R1 dhe MBR. Ky është një shembull i thjeshtuar. Mund të nevojiten mikro-operacione shtesë për të nxjerrë referencën e regjistrit prej IR dhe ndoshta të vendosen hyrjet ose daljet e ALU-së në disa regjistra të ndërmjetëm. Cikli i instruksionit E dimë se secila fazë e ciklit të instruksionit mund të ndahet në një radhë të mikro-operacioneve elementarë. Në shembullin tonë, cikli i marrjes, indirekt dhe i ndërprerjes kanë një radhë të mikrooperacioneve dhe ekziston një radhë e mikro-operacioneve për secilin kod të operacionit. Për ta kompletuar pamjen, është e nevojshme që të lidhen sëbashku radhët e mikrooperacioneve dhe kjo paraqitet në Figura 20.3. Le të kemi një regjistër me gjatësi 2 bit i quajtur kodi i ciklit të instruksionit (instruction cycle code - ICC). Regjistri ICC tregon gjendjen e procesorit sa i përket asaj se në cilën pjesë të ciklit është procesori: 5 MSc. Valdrin Haxhiu 00: Fetch 01: Indirect 10: Execute 11: Interrupt Figura 20.3 – Diagrami i rrjedhës i ciklit të instruksionit Vlera e duhur e regjistrit ICC vendoset në fund të secilit prej katër cikleve. Cikli i ekzekutimit gjithmonë paraqitet pas ciklit indirekt. Cikli i marrjes gjithmonë paraqitet pas ciklit të ndërprerjes (shikoni në Figura 14.4). Për ciklin e marrjes dhe ciklin e ekzekutimit, cikli i radhës varet prej gjendjes së sistemit. Në këtë mënyrë, diagrami i rrjedhës në Figura 20.3 definon radhën e plotë të mikrooperacioneve, varësisht prej radhës së instruksioneve dhe mënyrës së paraqitjes së ndërprerjeve. Natyrisht se ky shembull është i thjeshtuar. Diagrami i rrjedhës për një procesor real do të ishte shumë më kompleks. Sido që të jetë, kemi arritur në një pikë në diskutimin tonë në të cilën puna e procesorit përcaktohet si performancë e një radhe të mikro-operacioneve. Jemi në gjendje që të marrim në konsideratë se si njësia kontrolluese bën që kjo radhë të ndodhë. 6 MSc. Valdrin Haxhiu 20.2 Kontrolli i procesorit Kërkesat funksionale Përmes analizës që e kemi bërë në pjesën lart të materialit, ne kemi ndarë sjelljen ose funksionimin e procesorit në operacione elementarë, të quajtur mikro-operacione. Duke e thjeshtuar punën e procesorit në nivelin e tij më të ulët, ne jemi në gjendje të definojmë se çfarë saktësisht duhet të kryejë njësia kontrolluese. Në këtë mënyrë, mund të definojmë kërkesat funksionale të njësisë kontrolluese: funksionet që njësia kontrolluese duhet t’i kryejë patjetër. Një definim i këtyre kërkesave funksionale është baza për dizajnimin dhe implementimin e njësisë kontrolluese. Me këtë informacion në dispozicion, njësia kontrolluese mund të përshkruhet përmes një procesi me tre hapa: 1. Definimi i elementëve themelorë të procesorit 2. Përshkrimi i mikro-operacioneve që procesori i kryen 3. Përcaktimi i funksioneve që njësia kontrolluese duhet patjetër të kryejë për realizimin e mikro-operacioneve. Ne i kemi bërë tashmë hapat 1 dhe 2. Të përmbledhim rezultatet. Së pari, elementët bazë funksional të procesorit janë: ▪ ▪ ▪ ▪ ▪ ALU Regjistrat Rrugët e brendshme për të dhëna Rrugët e jashtme për të dhëna Njësia kontrolluese Një reflektim mbi këta elementë mund të na bindë se kjo është një listë e plotë e elementëve. Njësia ALU është esenca funksionale e kompjuterit. Regjistrat përdoren për ruajtjen e të dhënave brenda në procesor. Disa regjistra përmbajnë informacion që është i nevojshëm për radhitjen e instruksioneve (p.sh. regjistri për statusin e programit). Regjistrat tjerë përmbajnë të dhëna që shkojnë ose vijnë nga njësia ALU, memoria dhe modulet për H/D. Rrugët e brendshme për të dhëna përdoren për lëvizjen e të dhënave në mes regjistrave si dhe në mes regjistrave dhe njësisë ALU. Rrugët e jashtme për të dhëna lidhin regjistrat me memorien dhe modulet për H/D, zakonisht në formë të busit të sistemit. Njësia kontrolluese bën që operacionet të kryhen në procesor. Ekzekutimi i një programi përbëhet nga operacione që përfshijnë këta elementë të procesorit. Ashtu siç kemi parë më herët, këto operacione përbëhen nga një radhë e mikrooperacioneve. Duke e rilexuar pjesën 20.1 të këtij materiali, ne shohim se të gjitha mikrooperacionet bëjnë pjesë në njërën prej këtyre kategorive: ▪ ▪ ▪ Bartja e të dhënave prej një regjistri në një regjistër tjetër. Bartja e të dhënave prej një regjistri në një interfejs të jashtëm ( p.sh. busi i sistemit). Bartja e të dhënave prej një interfejsi të jashtëm në një regjistër. 7 MSc. Valdrin Haxhiu ▪ Kryerja e ndonjë operacioni aritmetikor ose logjik, duke përdorë regjistrat për hyrje dhe dalje. Të gjitha mikro-operacionet e nevojshme për kryerjen e një cikli të instruksionit, duke përfshirë të gjitha mikro-operacionet për ekzekutimin e secilit instruksion në bashkësinë e instruksioneve, bëjnë pjesë në njërën prej këtyre kategorive. Ne tash mund të jemi më të qartë për mënyrën se si funksionon njësia kontrolluese. Njësia kontrolluese kryen dy detyra themelore: ▪ ▪ Radhitja (sequencing): Njësia kontrolluese e detyron procesorin që të kalojë përgjatë një radhe të mikro-operacioneve në radhën e duhur, bazuar në programin që ekzekutohet. Ekzekutimi: Njësia kontrolluese detyron kryerjen e secilit mikro-operacion. Diskutimi i deritashëm është një përshkrim funksional i asaj se çfarë bën njësia kontrolluese. Çelësi i punës së njësisë kontrolluese është përdorimi i sinjaleve kontrolluese. Sinjalet kontrolluese Ne kemi definuar elementët që përbëjnë procesorin (ALU, regjistrat dhe rrugët e të dhënave) dhe mikro-operacionet që kryhen. Në mënyrë që njësia kontrolluese të mund të kryejë punën e saj, njësia kontrolluese duhet patjetër të ketë hyrjet të cilat ia mundësojnë asaj të përcaktojë gjendjen e sistemit dhe daljet që ia mundësojnë asaj të kontrollojë sjelljen e sistemit. Këto janë specifikacionet e jashtme të njësisë kontrolluese. Në brendi të saj, njësia kontrolluese duhet patjetër të ketë logjikën (qarqet) e nevojshme për kryerjen e funksioneve të saj të radhitjes dhe ekzekutimit. Figura 20.4 paraqet një model të përgjithshëm të njësisë kontrolluese, duke paraqitur të gjitha hyrjet dhe daljet e saj. Hyrjet janë: ▪ ▪ ▪ ▪ Ora (clock): Në këtë mënyrë njësia kontrolluese “mbanë kohën”. Njësia kontrolluese detyron kryerjen e një mikro-operacioni (ose të një bashkësie të mikro-operacioneve njëkohësisht) për secilin puls të orës. Kjo njihet edhe si koha e ciklit të procesorit ose koha e ciklit të orës. Regjistri i instruksionit: Kodi i operacionit dhe mënyra e adresimit të instruksionit aktual përdoren për të përcaktuar se cilat mikro-operacione duhet të kryhen gjatë një cikli të ekzekutimit. Flegat: Këta janë të nevojshëm për njësinë kontrolluese për të përcaktuar gjendjen e procesorit dhe rezultatet e operacioneve të mëhershme në ALU. Për shembull, për instruksionin increment-and-skip-if-zero (ISZ), njësia kontrolluese do të rrisë vlerën e regjistrit PC për 1 vetëm nëse ZF = 1 (zero flag). Sinjalet kontrolluese prej busit të kontrollit: Busi i kontrollit ofron sinjale për njësinë kontrolluese. 8 MSc. Valdrin Haxhiu Figura 20.4 – Bllok diagrami i njësisë kontrolluese Daljet janë: ▪ ▪ Sinjalet kontrolluese brenda në procesor: Këto janë të dy llojeve: sinjalet që detyrojnë të dhënat të lëvizin nga një regjistër në një tjetër dhe sinjalet që aktivizojnë funksione të caktuara në ALU. Sinjalet kontrolluese në busin e kontrollit: Edhe këto janë të dy llojeve: sinjalet kontrolluese për memorien dhe sinjalet kontrolluese për modulet për H/D. Janë tre lloje të sinjaleve kontrolluese që përdoren: sinjalet që aktivizojnë një funksion të ALU-së; sinjalet që aktivizojnë një rrugë për të dhëna (data path); dhe sinjalet për busin e jashtëm të sistemit ose ndonjë interfejs të jashtëm. Të gjitha këto sinjale aplikohen direkt si hyrje binare në porta logjike (logic gates). Të analizojmë edhe njëherë ciklin e marrjes që të shohim se si njësia kontrolluese e mirëmbanë kontrollin. Njësia kontrolluese e mbanë hapin se ku është brenda ciklit të instruksionit. Në një moment të caktuar, njësia kontrolluese e di se me radhë është cikli i marrjes. Hapi i parë është që përmbajtja e regjistrit PC të bartet në regjistrin MAR. Njësia kontrolluese e kryen këtë duke aktivizuar sinjalet kontrolluese që hapin (aktivizojnë) portat logjike në mes bitëve të regjistrit PC dhe bitëve të regjistrit MAR. Hapi i radhës është leximi i një fjale në memorie dhe vendosja e saj në MBR si dhe rritja e vlerës së regjistrit PC. Njësia kontrolluese e bën këtë duke dërguar njëkohësisht këto sinjale kontrolluese: ▪ ▪ ▪ ▪ Një sinjal kontrollues që hapë portat logjike, duke mundësuar që përmbajtja e regjistrit MAR të vendoset në busin e adresave; Një sinjal kontrollues për lexim që vendoset në busin e kontrollit; Një sinjal kontrollues që hapë portat logjike, duke mundësuar që përmbajtja në busin e të dhënave të ruhet në regjistrin MBR; Sinjalet kontrolluese për qarqet që mbledhin vlerën 1 me përmbajtjen e regjistrit PC dhe që ruajnë vlerën e re në regjistrin PC. 9 MSc. Valdrin Haxhiu Pas këtyre sinjaleve, njësia kontrolluese dërgon një sinjal kontrollues që hapë portat logjike në mes MBR dhe IR. Pas ciklit të marrjes duhet të kryhet edhe një hap tjetër: njësia kontrolluese duhet të vendosë për kryerjen e një cikli indirekt ose një cikli të ekzekutimit. Për kryerjen e këtij hapi, njësia kontrolluese e analizon regjistrin IR që ta kuptojë nëse ka ndonjë adresim indirekt të memories. Cikli indirekt dhe i ndërprerjes funksionojnë ngjashëm. Për ciklin e ekzekutimit, njësia kontrolluese fillon me analizimin e kodit të operacionit dhe në bazë të tij, vendosë se cilën radhë të mikro-operacioneve të kryejë për ciklin e ekzekutimit. Një shembull i sinjaleve kontrolluese Për të ilustruar funksionimin e njësisë kontrolluese, të analizojmë një shembull të thjeshtë. Figura 20.5 e ilustron shembullin. Bëhet fjalë për një procesor të thjeshtë që ka vetëm një regjistër akumulator AC. Janë paraqitur rrugët e të dhënave në mes elementëve. Rrugët e sinjaleve kontrolluese që dalin prej njësisë kontrolluese nuk janë paraqitur, por pjesët fundore të sinjaleve kontrolluese janë shënuar me Ci dhe me nga një rreth. Njësia kontrolluese pranon hyrjet prej orës, regjistrit IR dhe flegave. Figura 20.5 – Rrugët e të dhënave dhe sinjalet kontrolluese 10 MSc. Valdrin Haxhiu Në secilin cikël të orës, njësia kontrolluese lexon të gjitha hyrjet e saj dhe jep në dalje një bashkësi të sinjaleve kontrolluese. Sinjalet kontrolluese shkojnë në tre destinacione të ndryshme: ▪ ▪ ▪ Rrugët e të dhënave: Njësia kontrolluese kontrollon rrjedhën e brendshme të të dhënave. Për shembull, gjatë marrjes së instruksionit, përmbajtja e regjistrit MBR bartet në regjistrin IR. Për secilën rrugë që duhet të kontrollohet, ekziston një ndërprerës (switch, i paraqitur në figurë me një rreth). Një sinjal kontrollues që del prej njësisë kontrolluese hapë përkohësisht portën logjike për të mundësuar kalimin e të dhënave. ALU: Njësia kontrolluese kontrollon punën e ALU-së me një bashkësi të sinjaleve kontrolluese. Këto sinjale aktivizojnë disa qarqe logjike dhe porta logjike brenda në ALU. Busi i sistemit: Njësia kontrolluese dërgon sinjale në telat e kontrollit të busit të sistemit (p.sh. leximi në memorie përmes sinjalit READ). Njësia kontrolluese duhet të mirëmbajë njohuritë për hapin se ku është brenda ciklit të instruksionit. Duke përdorë këto njohuri dhe me leximin e të gjitha hyrjeve të saj, njësia kontrolluese lëshon një radhë të sinjaleve kontrolluese që detyrojnë paraqitjen e mikrooperacioneve. Njësia kontrolluese përdorë pulset e orës për të sinkronizuar në kohë radhën e ngjarjeve, duhet lejuar kohë ndërmjet ngjarjeve për stabilizimin e niveleve të sinjalit. Tabela 20.1 tregon disa sinjale kontrolluese që nevojiten për disa nga radhët e mikro-operacioneve të përshkruar më herët. Me qëllim të thjeshtimit, rrugët e të dhënave dhe të kontrollit për rritjen e vlerës së regjistrit PC dhe vendosjen e adresave në PC dhe MAR nuk janë paraqitur. Vlenë të theksohet natyra minimaliste e njësisë kontrolluese. Njësia kontrolluese është motorri që drejton tërë kompjuterin. Kjo njësi e arrin këtë duke u bazuar vetëm në njohjen e instruksioneve që duhet të ekzekutohen dhe natyrën e rezultateve të operacioneve aritmetikore dhe logjike (p.sh. pozitiv, overflow, etj.). Njësia kontrolluese nuk merret drejtpërdrejtë me të dhënat që përpunohen ose me rezultatet që fitohen. Njësia kontrolluese kontrollon çdo gjë me pak sinjale kontrolluese në pjesë të caktuara brenda në procesor dhe me pak sinjale kontrolluese në busin e sistemit. 11 MSc. Valdrin Haxhiu Tabela 20.1 – Mikro-operacionet dhe sinjalet kontrolluese CR = Sinjali kontrollues për lexim që vendoset në busin e sistemit CW = Sinjali kontrollues për shkrim që vendoset në busin e sistemit Organizimi i brendshëm i procesorit Figura 20.5 tregon përdorimin e disa rrugëve për të dhëna. Kompleksiteti i këtij organizimi duhet të jetë i qartë. Zakonisht, një lloj i busit të brendshëm do të përdoret ashtu siç është sugjeruar në Figura 14.2 (Struktura e brendshme e CPU-së). Duke përdorë një bus të brendshëm, Figura 20.5 mund të riorganizohet ashtu siç është paraqitur në Figura 20.6. Një bus i vetëm i brendshëm lidhë ALU-në dhe të gjithë regjistrat e procesorit. Për lëvizjen e të dhënave prej regjistrave në bus dhe prej busit në regjistra ofrohen porta logjike dhe sinjale kontrolluese. Disa sinjale kontrolluese shtesë kontrollojnë bartjen e të dhënave prej dhe në busin e sistemit dhe punën e njësisë ALU. Dy regjistra tjerë, të shënuar si Y dhe Z, janë shtuar në organizim. Këta janë të nevojshëm për funksonimin e duhur të ALU-së. Në rastin kur një operacion përfshinë dy operandë, njëri prej operandëve mund të merret prej busit të brendshëm dhe tjetri duhet të merret prej ndonjë burimi tjetër. Regjistri AC do të mund të përdorej për këtë qëllim, por kjo e kufizon fleksibilitetin e sistemit dhe nuk do të funksiononte në një procesor me shumë regjistra me qëllim të përgjithshëm. Regjistri Y ofron mundësinë për ruajtje të përkohshme të operandit tjetër. Njësia ALU është një qark kombinues pa ndonjë mundësi për ruajtje të brendshme. Në këtë mënyrë, kur sinjalet kontrolluese aktivizojnë një funksion të ALU-së, hyrjet në ALU transformohen në dalje. Për këtë arsye, dalja e ALU-së nuk mund të lidhet direkt në bus, sepse kjo dalje do të kthehej në ALU si hyrje. Regjistri Z ofron mundësinë e ruajtjes së përkohshme të daljes. Me këtë organizim, një operacion për mbledhjen e një vlere prej memories me regjistrin AC do të kishte këta hapa: 12 MSc. Valdrin Haxhiu t1: MAR ← ( IR (address) ) t2: MBR ← Memory t3: Y ← (MBR) t4: Z ← (AC) + (Y) t5: AC ← (Z) Janë të mundshme organizime tjera, por, në përgjithësi, një lloj i busit të brendshëm ose një bashkësi e buseve të brendshëm përdoret. Përdorimi i rrugëve të njëjta për të dhëna e thjeshton ndërlidhjen dhe kontrollimin e procesorit. Një arsye tjetër praktike për përdorimin e një busi të brendshëm është kursimi i hapësirës. Figura 20.6 – CPU me busin e brendshëm 13 MSc. Valdrin Haxhiu 20.3 Implementimi hardwired Ne e kemi diskutuar njësinë kontrolluese në aspektin e hyrjeve, daljeve dhe funksioneve të saj. Tash do të merremi me implementimin e njësisë kontrolluese. Janë përdorë teknika të ndryshme. Shumica e tyre bëjnë pjesë në njërën prej dy kategorive: ▪ ▪ Implementimi hardwired (hardwired implementation) Implementimi përmes mikroprogramimit (microprogrammed implementation) Në implementimin hardwired, njësia kontrolluese është një qark i një makine me gjendje. Sinjalet logjike hyrëse të saj transformohen në një bashkësi të sinjaleve logjike dalëse, që janë sinjale kontrolluese. Hyrjet e njësisë kontrolluese Figura 20.4 paraqet njësinë kontrolluese ashtu siç e kemi diskutuar deri më tash. Hyrjet e saj janë: IR, sinjalet e orës, flegat dhe sinjalet e busit të kontrollit. Në rastin e flegave dhe sinjaleve të busit të kontrollit, secili bit e ka një kuptim (p.sh. overflow). Dy hyrjet tjera të njësisë kontrolluese nuk kanë ndonjë ndikim direkt në njësinë kontrolluese. Të shqyrtojmë së pari hyrjen prej regjistrit IR. Njësia kontrolluese e përdorë kodin e operacionit dhe kryen veprime të ndryshme (krijon një kombinim tjetër të sinjaleve kontrolluese) për instruksione të ndryshme. Për të thjeshtuar logjikën e njësisë kontrolluese, duhet të ekzistojë një hyrje logjike e veçantë për secilin kod të operacionit. Ky funksion mund të kryhet nga një dekodues, i cili e merr një hyrje të koduar dhe prodhon një dalje. Në përgjithësi, një dekodues do të ketë n hyrje binare dhe 2n dalje binare. Secila prej 2n kombinimeve të ndryshme në hyrje do të aktivizojë një dalje të veçantë. Pjesa e hyrjes të sinjaleve të orës ofron një radhë përsëritëse të pulseve. Kjo është e dobishme për matjen e kohëzgjatjes së mikro-operacioneve. Perioda (cikli) e pulseve të orës duhet të jetë mjaftueshëm e gjatë për lëvizjen e sinjaleve përgjatë rrugëve për të dhëna dhe qarqeve të procesorit. Megjithatë, ashtu siç kemi diskutuar më herët, njësia kontrolluese lëshon sinjale të ndryshme kontrolluese në njësi të ndryshme kohore brenda një cikli të instruksionit. Në këtë mënyrë, do të dëshironim një numërues si hyrje në njësinë kontrolluese, me nga një sinjal kontrollues të ndryshëm që përdoret për T1, T2 dhe kështu me radhë. Në fund të një cikli të instruksionit, njësia kontrolluese duhet të rivendosë numëruesin në vlerën T1. Me këto dy përmirësime, njësia kontrolluese mund të paraqitet si në Figura 20.10. 14 MSc. Valdrin Haxhiu Figura 20.10 - Njësia kontrolluese me hyrjet e dekoduara Logjika e njësisë kontrolluese Për definimin e implementimit hardwired të njësisë kontrolluese, na mbetet të diskutojmë logjikën e brendshme të njësisë kontrolluese që prodhon sinjale kontrolluese dalëse si një funksion i sinjaleve në hyrje. Ajo që duhet të bëjmë patjetër është që, për secilin sinjal kontrollues të nxjerrim një shprehje algjebrike logjike të atij sinjali si funksion të hyrjeve të tij. Të trajtojmë përsëri shembullin nga Figura 20.5. Në Tabela 20.1 mund të shihet radha e mikro-operacioneve dhe sinjalet kontrolluese që nevojiten për të kontrolluar tre nga katër fazat e ciklit të instruksionit. Të shqyrtojmë sinjalin kontrollues C5. Ky sinjal detyron leximin e të dhënave prej busit për të dhëna dhe vendosjen e të dhënave në regjistrin MBR. Sinjali C5 është përdorë dy herë në Tabela 20.1. Të definojmë dy sinjale të reja kontrolluese, P dhe Q, që kanë këtë kuptim: PQ = 00 Cikli i marrjes PQ = 01 Cikli indirekt PQ = 10 Cikli i ekzekutimit PQ = 11 Cikli i ndërprerjes Shprehja algjebrike logjike që definon sinjalin C5 është: ̅ ∙ T2 + ̅ C5 = ̅ P∙Q P ∙ Q ∙ T2 Sinjali kontrollues C5 do të aktivizohet gjatë njësisë së dytë kohore të ciklit të marrjes dhe ciklit indirekt. 15 MSc. Valdrin Haxhiu Kjo shprehje nuk është e plotë. C5 nevojitet edhe gjatë ciklit të ekzekutimit. Për shembullin tonë të thjeshtë, të supozojmë se kemi vetëm tre instruksione që lexojnë prej memories: LDA, ADD dhe AND. Sinjalin C5 mund ta definojmë në këtë mënyrë: ̅ ∙ T2 + ̅ ̅ ∙ (LDA + ADD + AND) ∙ T2 C5 = ̅ P∙Q P ∙ Q ∙ T2 + ̅ P∙Q Procesi i njëjtë do të mund të përsëritej për secilin sinjal kontrollues të krijuar nga procesori. Rezultati do të ishte një bashkësi e shprehjeve algjebrike logjike që definojnë sjelljen e njësisë kontrolluese dhe procesorit. Për t’i lidhur të gjitha sëbashku, njësia kontrolluese duhet patjetër të kontrollojë gjendjen e ciklit të instruksionit. Ashtu siç e thamë më herët, në fund të çdo nëncikli (marrje, indirekt, ekzekutim, ndërprerje), njësia kontrolluese lëshon një sinjal i cili detyron gjeneruesin kohor (orën) të rivendoset në gjendjen fillestare dhe të lëshojë kohën T1. Njësia kontrolluese duhet që patjetër të vendosë vlerat e duhura të sinjaleve P dhe Q për të definuar nënciklin e radhës që do të kryhet. Duhet të kemi të qartë se në një procesor modern kompleks, numri i shprehjeve (barazimeve) algjebrike logjike të nevojshme për të definuar njësinë kontrolluese është i madh. Detyra për implementimin e një qarku kombinues që i plotëson të gjitha këto barazime është shumë e vështirë. Zakonisht përdoret një qasje më e thjeshtë, e njohur si mikroprogramimi. Implementimi përmes mikroprogramimit Termi mikroprogram është përdorë për herë të parë nga M.V. Wilkes në fillim të viteve të 1950ta. Wilkes kishte propozuar një dizajn për njësinë kontrolluese, dizajni ishte i organizuar dhe sistematik dhe shmangte vështirësitë e implementimit hardwired. Kjo ide zgjoi interesimin e mjaft studiuesve, por dukej se nuk funksiononte mirë sepse kërkonte një memorie të shpejtë dhe relativisht jo të lirë të kontrollit. Mikroprogramimi ishte bërë një teknikë e popullarizuar e implementimit të njësisë kontrolluese të procesorëve CISC (complex instruction set computer). Viteve të fundit, mikroprogramimi përdoret më pak, por mbetet si një teknikë që është në dispozicion të dizajnuesve të kompjuterëve. Për shembull, në procesorin Pentium 4, instruksionet e makinës shndërrohen në një format të ngjashëm me formatin RISC (reduced instruction set computer), shumica e të cilave ekzekutohen pa e përdorë mikroprogramimin. Megjithatë, disa instruksione ekzekutohen duke përdorë mikroprogramimin. 16 MSc. Valdrin Haxhiu 21.1 Konceptet themelore Mikroinstruksionet Njësia kontrolluese është një pjesë e thjeshtë. Megjithatë, implementimi i njësisë kontrolluese si ndërlidhje në mes elementëve themelorë logjik nuk është një detyrë e lehtë. Dizajni duhet patjetër të përfshijë logjikën për radhitjen e mikro-operacioneve, për ekzekutimin e mikro-operacioneve, për interpretimin e kodeve të operacioneve dhe për marrjen e vendimeve varësisht prej flegave të njësisë ALU. Është e vështirë të dizajnohet dhe të testohet një harduer si njësia kontrolluese. Për më tepër, dizajni është relativisht jo fleksibil. Për shembull, është e vështirë të ndryshojmë dizajnin nëse duam të shtojmë një instruksion të ri të makinës. Një alternativë, që është përdorë në shumë procesorë CISC, është implementimi i njësisë kontrolluese përmes mikroprogramimit. Të shqyrtojmë Tabela 21.1. Tabela 21.1 – Bashkësia e instruksioneve në dizajnin e propozuar nga Wilkes Shënim: ACC = akumulatori 𝐴𝐶𝐶1 = gjysma me peshën më të madhe e akumulatorit 𝐴𝐶𝐶2 = gjysma me peshën më të vogël e akumulatorit n = lokacioni n në memorie C(X) = përmbajtja e X (X = regjistër ose lokacion në memorie) Përveç përdorimit të sinjaleve kontrolluese, secili mikro-operacion përshkruhet me anë të simboleve. Ky përshkrim duket si një gjuhë programuese. Në të vërtetë është një gjuhë programuese e njohur si gjuha e mikroprogramimit. Çdo rresht përshkruan një bashkësi të mikro-operacioneve që paraqiten në një kohë dhe njihet si mikroinstruksion. Një radhë e 17 MSc. Valdrin Haxhiu instruksioneve njihet si mikroprogram ose firmware. Firmware është një mikroprogram në mes harduerit dhe softuerit. Është më lehtë të dizajnohet në firmware se sa në harduer, por është më vështirë të shkruhet një program firmware se sa një softuer. Si mund ta përdorim konceptin e mikroprogramimit për të implementuar njësinë kontrolluese? Të kemi parasysh se për çdo mikro-operacion, njësia kontrolluese krijon një bashkësi të sinjaleve kontrolluese. Kështu që, për cilindo mikro-operacion, secili tel i kontrollit që del prej njësisë kontrolluese është në gjendjen on ose off. Kjo gjendje, sigurisht se mund të paraqitet si numër binar për secilin tel të kontrollit. Në këtë mënyrë ne do të mund të ndërtonim një fjalë të kontrollit në të cilën secili bit paraqet një tel të kontrollit. Çdo mikro-operacion do të mund të paraqitej me një kombinim të ndryshëm të njëshave dhe zerove në fjalën e kontrollit. Le të supozojmë se mund të bëjmë bashkë një radhë të fjalëve të kontrollit për të paraqitur radhën e mikro-operacioneve që kryhen nga njësia kontrolluese. Tutje, duhet të kemi parasysh se radha e mikro-operacioneve nuk është e pandryshueshme. Le të vendosim fjalët e kontrollit në një memorie, ku secila fjalë e ka adresën e saj të veçantë. Në secilën fjalë të kontrollit të vendosim një fushë që tregon lokacionin e fjalës së kontrollit me radhë që do të ekzekutohet nëse një kusht i caktuar plotësohet (p.sh. nëse biti i adresimit indirekt në një adresë të memories është 1). Poashtu, të shtojmë edhe disa bitë për të paraqitur kushtin. Ajo që fitohet në këtë mënyrë njihet si mikroinstruksion horizontal, një shembull i të cilit është paraqitur në Figura 21.1a. Formati i mikroinstruksionit ose fjalës së kontrollit është si vijon. Për secilin tel të kontrollit brenda në procesor ekziston nga një bit dhe nga një bit për secilin tel të kontrollit në busin e sistemit. Ekziston një fushë e kushtit që tregon kushtin për të cilin duhet të bëhet një degëzim dhe një adresë e mikroinstruksionit që duhet të ekzekutohet me radhë kur të ndodhë një degëzim. Një mikroinstruksion i tillë interpretohet si vijon: 1. Për ekzekutimin e këtij mikroinstruksioni, duhet të vendosen në gjendjen on të gjithë telat e kontrollit për të cilët ka një bit 1; telat tjerë që kanë bitin 0 duhet të lihen në gjendjen off. Sinjalet kontrolluese që fitohen do të detyrojnë të ekzekutohet një ose më tepër mikrooperacione. 2. Nëse kushti që tregohet me bitët e kushtit është i pasaktë, duhet të ekzekutohet mikroinstruksioni i radhës. 3. Nëse kushti që tregohet me bitët e kushtit është i saktë, mikroinstruksioni i radhës që do të ekzekutohet tregohet në fushën e adresës. Figura 21.2 tregon se si këto fjalë të kontrollit ose mikroinstruksione do të mund të vendoseshin në një memorie të kontrollit. Mikroinstruksionet brenda secilës procedurë (routine) ekzekutohen në mënyrë të njëpasnjëshme. Secila procedurë e ka në fund një instruksion për degëzim ose kërcim (jump) që tregon se ku do të vazhdohet puna. Ekziston një procedurë e veçantë e ciklit të ekzekutimit qëllimi i vetëm i të cilës është të tregojë se cila nga procedurat e instruksioneve të makinës (AND, ADD dhe tjera) do të ekzekutohet me radhë, varësisht prej kodit aktual të operacionit. 18 MSc. Valdrin Haxhiu (a) Mikroinstruksioni horizontal (b) Mikroinstruksioni vertikal Figura 21.1 – Formatet e zakonshme të mikroinstruksioneve Memoria e kontrollit e paraqitur në Figura 21.2 është një përshkrim thuajse i plotë i punës së njësisë kontrolluese. Memoria e kontrollit definon radhën e mikro-operacioneve që do të kryhen gjatë secilit cikël (marrje, indirekt, ekzekutim, ndërprerje) dhe definon radhitjen e këtyre cikleve. Nëse jo për diçka tjetër, kjo mënyrë e paraqitjes do të ishte një pajisje e dobishme për të dokumentuar funksionimin e njësisë kontrolluese në një kompjuter të caktuar. Kjo është diçka më tepër se aq. Është poashtu një mënyrë për të implementuar njësinë kontrolluese. 19 MSc. Valdrin Haxhiu Figura 21.2 – Organizimi i memories së kontrollit Njësia kontrolluese e mikroprogramuar Memoria e kontrollit në Figura 21.2 përmbanë një program që përshkruan sjelljen e njësisë kontrolluese. Nga kjo rrjedhë se njësinë kontrolluese do të mund të implementonim thjeshtë duke e ekzekutuar atë program. Figura 21.3 paraqet elementët kryesorë të këtij implementimi. Bashkësia e mikroinstruksioneve ruhet në memorien e kontrollit. Adresa e mikroinstruksionit të radhës që do të lexohet ruhet në regjistrin e adresës së kontrollit. Pas leximit në memorien e kontrollit, një mikroinstruksion bartet në regjistrin e baferit të kontrollit. Pjesa e majtë e atij regjistri (shiko Figura 21.1a) lidhet në telat e kontrollit të cilët dalin prej njësisë kontrolluese. Kështu, leximi i një mikroinstruksioni në memorien e kontrollit është njëjtë sikur ai mikroinstruksion të ekzekutohet. Elementi i tretë që është paraqitur në figurë është njësia për radhitje (sequencing unit) e cila vendosë vlerën në regjistrin e adresës së kontrollit dhe lëshon një komandë për lexim. Të analizojmë këtë strukturë në më shumë detaje, ashtu siç është paraqitur në Figura 21.4. Duke e krahasuar këtë figurë me Figura 21.3, mund të shohim se njësia kontrolluese përsëri ka hyrjet e njëjta (IR, flegat e ALU-së, orën) dhe daljet (sinjalet kontrolluese). 20 MSc. Valdrin Haxhiu Figura 21.3 – Mikroarkitektura e njësisë kontrolluese Figura 21.4 – Funksionimi i njësisë kontrolluese të mikroprogramuar 21 MSc. Valdrin Haxhiu Njësia kontrolluese funksionon si në vijim: 1. Për të ekzekutuar një instruksion, njësia e logjikës së radhitjes e lëshon një komandë READ në drejtim të memories së kontrollit. 2. Në regjistrin e baferit të kontrollit vendoset fjala adresa e të cilës është në regjistrin e adresës së kontrollit. 3. Përmbajtja e regjistrit të baferit të kontrollit krijon sinjalet kontrolluese dhe informacionin e adresës së radhës për njësinë e logjikës së radhitjes. 4. Njësia e logjikës së radhitjes e vendosë një adresë të re në regjistrin e adresës së kontrollit bazuar në informacionin e adresës së radhës në regjistrin e baferit të kontrollit dhe flegave të ALU-së. E gjithë kjo ndodhë gjatë një cikli të orës. Të analizojmë më gjerësisht hapin e fundit të paraqitur në listë. Në përfundim të secilit mikroinstruksion, njësia e logjikës së radhitjes e vendosë një adresë të re në regjistrin e adresës së kontrollit. Varësisht prej vlerës së flegave të ALU-së dhe regjistrit të baferit të kontrollit, njëri nga këto tre vendime merret: ▪ ▪ ▪ Merre instruksionin e radhës: Shto vlerën 1 në regjistrin e adresës së kontrollit. Kërce në një procedurë të re bazuar në një mikroinstruksion për kërcim (jump): Vendose në regjistrin e adresës së kontrollit vlerën e fushës së adresës të regjistrit të baferit të kontrollit. Kërce te një procedurë e një instruksioni: Vendose në regjistrin e adresës së kontrollit vlerën e fushës së kodit të operacionit prej regjistrit IR. Figura 21.4 tregon dy module me emërtimin decoder (dekodues). Dekoduesi i sipërm e përkthen kodin e operacionit të regjistrit IR në një adresë të memories së kontrollit. Dekoduesi i poshtëm nuk përdoret për mikroinstruksionet horizontale, por përdoret për mikroinstruksionet vertikale (Figura 21.1b). Ashtu siç e kemi përmendë, në një mikroinstruksion horizontal secili bit në fushën e kontrollit lidhet me një tel të kontrollit. Në një mikroinstruksion vertikal, për secilin veprim që duhet të kryhet përdoret një kod [p.sh. MAR ← (PC)] dhe dekoduesi e përkthen këtë kod në sinjale të veçanta kontrolluese. Përparësia e mikroinstruksioneve vertikale është se ato janë më kompakte (kanë më pak bitë) në krahasim me mikroinstruksionet horizontale, duke paguar çmimin e një logjike të vogël shtesë dhe vonesën kohore. Përparësitë dhe mangësitë Përparësia kryesore e përdorimit të mikroprogramimit për implementimin e njësisë kontrolluese është se mikroprogramimi e thjeshton dizajnin e njësisë kontrolluese. Kështu, është më e lirë dhe paraqet më pak gabime për implementim. Një njësi kontrolluese hardwired duhet patjetër të përmbajë logjikën komplekse për radhitjen e shumë mikro-operacioneve të ciklit të instruksionit. Në anën tjetër, dekoduesit dhe njësia e logjikës për radhitje të një njësie kontrolluese të mikroprogramuar janë pjesë shumë të thjeshta të logjikës. 22 MSc. Valdrin Haxhiu Mangësia kryesore e njësisë kontrolluese të mikroprogramuar është se ajo do të jetë disi më e ngadalshme se njësia hardwired e një teknologjie që mund të krahasohet. Pavarësisht kësaj, mikroprogramimi është teknika më kryesore për implementimin e arkitekturave të pastra CISC, në saje të lehtësisë së saj për implementim. Procesorët RISC, me formatin e tyre më të thjeshtë të instruksionit, zakonisht përdorin njësi kontrolluese hardwired. 21.2 Radhitja e mikroinstruksioneve Dy detyrat kryesore që kryhen nga një njësi kontrolluese e mikroprogramuar janë: ▪ ▪ Radhitja e mikroinstruksioneve (microinstruction sequencing): Merre mikroinstruksionin e radhës në memorien e kontrollit. Ekzekutimi i mikroinstruksionit: Krijo (gjenero) sinjalet kontrolluese të nevojshme për ekzekutimin e mikroinstruksionit. Me rastin e dizajnimit të njësisë kontrolluese, të dy këto detyra duhet të merren parasysh sëbashku, sepse të dy ndikojnë në formatin e mikroinstruksionit dhe në sinkronizimin kohor të njësisë kontrolluese. Çështjet me rëndësi për dizajnin Janë dy gjëra që duhet të trajtohen në dizajnin e teknikës për radhitje të mikroinstruksioneve: madhësia e mikroinstruksionit dhe koha e krijimit të adresës. Gjëja e parë është më se e kuptueshme; zvogëlimi i madhësisë së memories të kontrollit e zvogëlon koston e saj. Gjëja e dytë është thjeshtë një nevojë për ekzekutim sa më të shpejtë të mikroinstruksioneve. Gjatë ekzekutimit të një mikroprogrami, adresa e mikroinstruksionit të radhës që do të ekzekutohet është në njërën nga këto kategori: ▪ ▪ ▪ Përcaktohet nga regjistri i instruksionit Adresa tjetër me radhë Degëzimi Kategoria e parë paraqitet vetëm një herë në secilin cikël të instruksionit, pak kohë pasi të jetë marrë instruksioni. Kategoria e dytë është më e zakonshmja në shumicën e dizajnëve. Megjithatë, dizajni nuk duhet të optimizohet vetëm për qasjen e njëpasnjëshme. Degëzimet, me kusht dhe pa kusht janë një pjesë e nevojshme e një mikroprogrami. Për më tepër, radhët e mikroinstruksioneve e kanë tendencën të jenë të shkurtëra; një nga tre ose katër mikroinstruksione do të mund të ishte një degëzim. Kështu, është e rëndësishme të dizajnohen teknika kompakte dhe efikase në kohë për degëzim të mikroinstruksioneve. 23 MSc. Valdrin Haxhiu Teknikat e degëzimit Një adresë e memories së kontrollit duhet të krijohet për mikroinstruksionin e radhës bazuar në mikroinstruksionin aktual, flegat e kushteve dhe përmbajtjen e regjistrit të instruksionit. Një numër i madh i teknikave të ndryshme janë përdorë. Këto teknika mund të grupohen në tre kategori të përgjithshme, ashtu siç është paraqitur në Figura 21.6, Figura 21.7 dhe Figura 21.8. Figura 21.6 – Logjika e kontrollit për degëzim: dy fusha të adresës Këto kategori janë të bazuara në formatin e informacionit të adresës në mikroinstruksion: ▪ ▪ ▪ Dy fusha të adresës Një fushë e adresës Format i ndryshueshëm Qasja më e thjeshtë ofron dy fusha të adresës në secilin mikroinstruksion. Figura 21.6 sugjeron se si do të përdoret ky informacion. Një multipleksues përdoret si destinacion për fushën e adresës dhe regjistrin e instruksionit. Duke u bazuar në hyrjen e përzgjedhjes së adresës, multipleksuesi bartë në regjistrin e adresës së kontrollit kodin e operacionit ose njërën nga dy adresat. Në hapin e radhës, regjistri i adresës së kontrollit dekodohet për të krijuar adresën e mikroinstruksionit të radhës. 24 MSc. Valdrin Haxhiu Figura 21.7 – Logjika e kontrollit për degëzim: fusha e një adrese Sinjalet për përzgjedhjen e adresës ofrohen nga një modul i logjikës për degëzim hyrja e të cilit përbëhet nga flegat e njësisë kontrolluese dhe bitët e pjesës së kontrollit në mikroinstruksion. Edhepse qasja me dy adresa është më e thjeshtë, ajo kërkon më shumë bitë në mikroinstruksion se sa qasjet tjera. Me një logjikë shtesë, mund të arrihen disa kursime. Një qasje e zakonshme është me vetëm një fushë të adresës (Figura 21.7). Me këtë qasje, opcionet për adresën tjetër të radhës janë si vijon: ▪ ▪ ▪ Fusha e adresës Kodi i regjistrit të instruksionit Adresa tjetër me radhë Sinjalet për përzgjedhje të adresës përcaktojnë opcionin që përzgjedhet. Kjo qasje e zvogëlon në një numrin e fushave të adresës. Duhet të kemi parasysh se fusha e adresës shpesh nuk përdoret. Kështu, ekziston një joefiçiencë në skemën e kodimit të mikroinstruksionit. Një qasje tjetër është ofrimi i dy formateve krejtësisht ndryshe të mikroinstruksionit (Figura 21.8). Një bit tregon se cili format është duke u përdorë. Në një format, bitët tjerë përdoren për të aktivizuar sinjalet kontrolluese. Në formatin tjetër, disa nga bitët e udhëheqin modulin e logjikës së degëzimit dhe bitët tjerë paraqesin adresën. Në formatin e parë, adresa tjetër është adresa tjetër me radhë ose një adresë e cila nxjerret prej regjistrit të instruksionit. Në formatin e dytë, specifikohet një degëzim me kusht ose degëzim pa kusht. 25 MSc. Valdrin Haxhiu Figura 21.8 – Logjika e kontrollit për degëzim: formati i ndryshueshëm Një mangësi e kësaj qasjeje është se shpenzohet një cikël i plotë me secilin mikroinstruksion të degëzimit. Me anë të qasjeve tjera, krijimi i adresës paraqitet si pjesë e ciklit të krijimit të sinjalit kontrollues, duke zvogëluar numrin e qasjeve në memorien e kontrollit. Këto qasje që i përshkruam janë të përgjithshme. Implementimet e caktuara zakonisht përfshijnë një kombinim të këtyre teknikave. Krijimi (gjenerimi) i adresës Ne kemi trajtuar problemin e radhitjes nga aspekti i çështjeve me rëndësi për formatin dhe kërkesat e përgjithshme të logjikës. Një aspekt tjetër është marrja parasysh e disa mënyrave të ndryshme të nxjerrjes ose llogaritjes së adresës. Teknikat për krijimin e adresës tjetër mund të ndahen në teknika eksplicite, përmes të cilave, adresa është brenda instruksionit dhe teknika implicite, që kërkojnë logjikë shtesë për të gjeneruar adresën. Ne diskutuam teknikat eksplicite. Përmes qasjes me dy adresa, për secilin mikroinstruksion janë dy adresa alternative. Duke përdorë një fushë të adresës ose një format të ndryshueshëm, 26 MSc. Valdrin Haxhiu mund të implementohen disa instruksione të degëzimit. Një instruksion për degëzim me kusht varet nga këto informacione: ▪ ▪ ▪ ▪ Flegat e ALU-së Një pjesë e kodit të operacionit ose fushat e mënyrës së adresimit në instruksion Pjesët e një regjistri të përzgjedhur, biti i shenjës Bitët e gjendjes brenda njësisë kontrolluese Disa teknika eksplicite zakonisht përdoren. Njëra nga to, pasqyrimi (mapping), nevojitet në pothuajse të gjithë dizajnët. Pjesa e kodit të operacionit të një instruksioni duhet të pasqyrohet në një adresë të mikroinstruksionit. Kjo ndodhë vetëm një herë në një cikël të instruksionit. Një teknikë implicite e zakonshme është kombinimi ose mbledhja e dy pjesëve të një adrese për të formuar adresën e plotë. Kjo qasje ishte përdorë në familjen IBM S/360 dhe në shumë modele të familjes IBM S/370. 21.3 Ekzekutimi i mikroinstruksioneve Ngjarja themelore në një procesor të mikroprogramuar është cikli i mikroinstruksionit. Çdo cikël është i përbërë prej dy pjesëve: marrja dhe ekzekutimi. Pjesa e marrjes përcaktohet duke gjeneruar adresën e një mikroinstruksioni ashtu siç kemi trajtuar më herët. Kjo pjesë e materialit merret me ekzekutimin e një mikroinstruksioni. Të rikujtojmë se efekti i ekzekutimit të një mikroinstruksioni është gjenerimi i sinjaleve kontrolluese. Disa prej këtyre sinjaleve kontrollojnë disa pjesë brenda në procesor. Pjesa tjetër e sinjaleve kontrolluese qarkullojnë në busin e jashtëm të kontrollit ose në ndonjë interfejs të jashtëm. Pjesë e këtij efekti është edhe gjenerimi i adresës së mikroinstruksionit të radhës. Përshkrimi që bëmë më herët sugjeron organizimin e njësisë kontrolluese të paraqitur në Figura 21.10. Kjo figurë është një plotësim i Figura 21.4. Modulet kryesore në këtë diagram i kemi trajtuar. Moduli i logjikës së radhitjes gjeneron adresën e mikroinstruksionit të radhës, duke përdorë si hyrje përmbajtjen e regjistrit të instruksionit, flegat e ALU-së, regjistrin e adresës së kontrollit (për inkrementim) dhe regjistrin e baferit të kontrollit. Regjistri i baferit të kontrollit mund të ofrojë një adresë, bitë të kontrollit ose të dyjat. Ky modul udhëhiqet nga një orë e cila përcakton aspektin kohor të ciklit të mikroinstruksionit. Moduli i logjikës së kontrollit gjeneron sinjale kontrolluese si një funksion i disa prej bitëve të mikroinstruksionit. Duhet të jetë e qartë se formati dhe përmbajtja e mikroinstruksionit përcakton kompleksitetin e modulit të logjikës së kontrollit. 27 MSc. Valdrin Haxhiu Figura 21.10 – Organizimi i njësisë kontrolluese 28 MSc. Valdrin Haxhiu Referenca Materiali është marrë nga kapitulli 20 (faqe 708) dhe nga kapitulli 21 (faqe 730) i librit Computer Organization and Architecture Designing for Performance, 10th edition të autorit William Stallings. 29

Use Quizgecko on...
Browser
Browser