10__AOK__Ligjërata 10__Bashkësitë e instruksioneve - mënyrat e adresimit -- MSc. Valdrin Haxhiu.pdf

Full Transcript

Kolegji UBT Arkitektura dhe organizimi i kompjuterëve Ligjërata 10 Bashkësitë e instruksioneve Mënyrat e adresimit MSc. Valdrin Haxhiu MSc. Valdrin Haxhiu 13.1 Mënyrat e adresimit Fusha apo fushat e adresave në një format të zakonshëm të instruksionit janë relativisht të vogla. Do të dëshironim që t...

Kolegji UBT Arkitektura dhe organizimi i kompjuterëve Ligjërata 10 Bashkësitë e instruksioneve Mënyrat e adresimit MSc. Valdrin Haxhiu MSc. Valdrin Haxhiu 13.1 Mënyrat e adresimit Fusha apo fushat e adresave në një format të zakonshëm të instruksionit janë relativisht të vogla. Do të dëshironim që të referenconim një rang të madh të vendeve (lokacioneve) në memorien DRAM ose në memorien virtuale. Për të arritur këtë, janë përdorur disa lloje të adresimeve. Të gjitha përfshijnë një kompromis në mes të rangut të adresave dhe/ose fleksibilitetit të adresimit, në njërën anë dhe numrin e referencave të memories në një instruksion dhe/ose kompleksitetin e llogaritjes së adresës, në anën tjetër. Në këtë pjesë, do të trajtojmë teknikat ose mënyrat më të zakonshme të adresimit:        I menjëhershëm (immediate) Direkt (direct) Indirekt (indirect) Regjistër (register) Indirekt regjistër (register indirect) Me zhvendosje (displacement) Stek (stack) Këto mënyra janë ilustruar në Figura 13.1. Në këtë pjesë ne do të përdorim këtë mënyrë të paraqitjes: A = përmbajtja e një fushe të adresës në instruksion R = përmbajtja e një fushe të adresës në instruksion që i referohet një regjistri EA = adresa aktuale (efektive) e vendit që përmban operandin e referencuar (X) = përmbajtja e vendit X në memorie ose regjistri X Tabela 13.1 paraqet llogaritjen e adresës që kryhet për secilën mënyrë të adresimit. 1 MSc. Valdrin Haxhiu Figura 13.1 – Mënyrat e adresimit 2 MSc. Valdrin Haxhiu Tabela 13.1 – Mënyrat themelore të adresimit Mënyra I menjëhershëm Direkt Indirekt Regjistër Regjistër indirekt Me zhvendosje Stek Mangësia kryesore Madhësi e kufizuar Operandi = A e operandit Hapësirë e kufizuar EA = (A) I thjeshtë e adresave Hapësirë e madhe e Shumë referenca EA = @(A) adresave në memorie Asnjë referencë në Hapësirë e kufizuar EA = (R) memorie e adresave Hapësirë e madhe e Një referencë EA = @(R) adresave shtesë në memorie EA = A + (R) Fleksibilitet Kompleksitet Asnjë referencë në EA = maja e stekut Përdorim i kufizuar memorie Algoritmi Përparësia kryesore Asnjë referencë në memorie Pothuajse të gjitha arkitekturat e kompjuterëve ofrojnë më shumë se një nga këto mënyrat e adresimit. Pyetja që shtrohet është se si arrin procesori të përcaktojë se cila mënyrë e adresimit përdoret në një instruksion të caktuar? Ekzistojnë disa qasje. Shpesh, kodet e ndryshme të operacioneve përdorin mënyra të ndryshme të adresimit. Poashtu, një ose më shumë bitë në instruksion mund të përdoren si fushë e mënyrës së adresimit. Vlera e fushës së mënyrës përcakton se cila mënyrë e adresimit përdoret. Në një sistem që nuk përdorë memorie virtuale, adresa efektive do të jetë një adresë e DRAM-it ose një regjistër. Në një sistem të memories virtuale, adresa efektive është një adresë virtuale ose një regjistër. Përkthimi në adresa fizike bëhet nga njësia për menaxhim të memories (MMU). Adresimi i menjëhershëm Mënyra më e thjeshtë e adresimit është adresimi i menjëhershëm, në të cilën vlera e operandit është prezente në instruksion Operand = A Kjo mënyrë mund të përdoret për të definuar dhe përdorë konstantet ose vendosur vlerat fillestare të variablave. Zakonisht, numri ruhet përmes 2-komplementit; biti me peshën më të madhe i vlerës së operandit përdoret si bit i shenjës. Kur operandi vendoset në një regjistër për të dhëna, biti i shenjës vendoset majtas në fund të gjatësisë së fjalës. 3 MSc. Valdrin Haxhiu Përparësia e adresimit të menjëhershëm është që për marrjen e vlerës së operandit përdorë vetëm referencën për marrje të instruksionit, duke kursyer një cikël të memories DRAM ose kesh në ciklin e instruksionit. Mangësia është që madhësia e numrit kufizohet nga madhësia e fushës së adresës, e cila, në shumicën e bashkësive të instruksioneve, është e vogël krahasuar me gjatësinë e fjalës. Adresimi direkt Një mënyrë mjaft e thjeshtë e adresimit është adresimi direkt, në të cilën fusha e adresës përmban adresën efektive të operandit: EA = (A) Kjo mënyrë e adresimit ka qenë e zakonshme në gjeneratat e mëhershme të kompjuterëve, por nuk është e zakonshme në arkitekturat moderne. Ka nevojë vetëm për një referencë të memories dhe nuk ka nevojë për ndonjë llogaritje të veçantë. Kufizimi i dukshëm është që ofron një hapësirë të kufizuar. Adresimi indirekt Te adresimi direkt, gjatësia e fushës së adresës është zakonisht më e vogël se gjatësia e fjalës, duke kufizuar rangun e adresave. Një zgjidhje është që fusha e adresës t’i referohet adresës së një fjale në memorie, e cila përmban një adresë të plotë të operandit. Kjo mënyrë njihet si adresimi indirekt: EA = @(A) Ashtu siç është definuar më herët, kllapat e kanë kuptimin përmbajtja. Përparësia e dukshme e kësaj qasjeje është që për një adresë me gjatësi N, ekziston një hapësirë 2N e adresave. Mangësia është që ekzekutimi i një instruksioni kërkon dy referenca të memories për marrjen e operandit: një për marrjen e adresës së instruksionit dhe një për marrjen e vlerës që nevojitet në instruksion. Edhe pse numri i fjalëve që mund të adresohen në këtë rast është 2N, numri i adresave efektive të ndryshme që mund të referencohen në një moment të caktuar është i kufizuar në 2K, ku K është gjatësia e fushës së adresës. 4 MSc. Valdrin Haxhiu Adresimi përmes regjistrit Adresimi përmes regjistrit është i njëjtë me adresimin direkt. Ndryshimi i vetëm është se fusha e adresës i referohet një regjistri e jo një adrese të memories DRAM: EA = (R) Për qartësim, nëse përmbajtja e një fushe të adresës së një regjistri në një instruksion është 5, atëherë regjistri R5 është adresa e dëshiruar dhe vlera e operandit gjendet në regjistrin R5. Zakonisht, një fushë e adresës që i referohet regjistrave do të ketë prej 3 deri në 5 bit, ashtu që mund të referencohen gjithsej 8 deri në 32 regjistra me qëllim të përgjithshëm (general-purpose). Përparësitë e adresimit përmes regjistrave janë (1) vetëm një fushë e vogël e adresës nevojitet në instruksion dhe (2) nuk nevojiten referenca në memorie. Mangësia e adresimit përmes regjistrave është që hapësira e adresimit është mjaft e kufizuar. Nëse adresimi përmes regjistrave përdoret shumë në një bashkësi të instruksioneve, kjo i bie që regjistrat e procesorit do të përdoren shumë. Për arsye se numri i regjistrave është shumë i kufizuar (krahasuar me numrin e vendeve në memorien DRAM), përdorimi i regjistrave në këtë mënyrë ka kuptim vetëm nëse ata përdoren në mënyrë efiçiente. Nëse secili operand vendoset prej memories DRAM në një regjistër, përdoret vetëm një herë dhe kthehet prapë në DRAM, atëherë është paraqitur një hap i ndërmjetëm i pa nevojshëm. Përndryshe, nëse një operand në një regjistër përdoret për shumë operacione, atëherë arrihet një kursim i madh. Si shembull është rezultati i ndërmjetëm në një llogaritje. I takon programuesit ose kompajlerit të vendosë se cilat vlera duhet të qëndrojnë në regjistra dhe cilat vlera duhet të ruhen në memorien DRAM. Adresimi indirekt përmes regjistrave Sikur që adresimi përmes regjistrave është i ngjashëm me adresimin direkt, adresimi indirekt përmes regjistrave është i ngjashëm me adresimin indirekt. Në të dy rastet, ndryshimi i vetëm është nëse fusha e adresës i referohet një vendi në memorie ose një regjistri. Për adresimin indirekt përmes regjistrave kemi: EA = @(R) Përparësitë dhe kufizimet e adresimit indirekt përmes regjistrave janë pothuajse të njëjta sikur te adresimi indirekt. Në të dy rastet, kufizimi i hapësirës së adresave (rangu i kufizuar i adresave) i fushës së adresës tejkalohet nëse fusha i referohet një fjale me gjatësi të plotë që përmban një adresë. Për më tepër, adresimi indirekt përmes regjistrit përdorë një referencë të memories më pak se adresimi indirekt. 5 MSc. Valdrin Haxhiu Adresimi me zhvendosje Një mënyrë e fuqishme e adresimit kombinon mundësitë e adresimit direkt dhe adresimit indirekt përmes regjistrave. Njihet me emra të ndryshëm varësisht prej kontekstit të përdorimit, por mekanizmi bazë është i njëjtë. Ne do t’i referohemi kësaj mënyre me emrin adresimi me zhvendosje: EA = A + (R) Adresimi me zhvendosje kërkon që instruksioni të ketë dy fusha të adresës, ku së paku njëra prej tyre është eksplicite. Vlera që gjendet në njërën fushë të adresës (vlera = A) përdoret direkt. Fusha tjetër e adresës, ose një referencë implicite e bazuar në kodin e operacionit (opcode), i referohet një regjistri përmbajtja e të cilit mbledhet me vlerën A për të fituar adresën efektive. Adresimi relativ Për adresimin relativ, të njohur edhe si adresimi relativ ndaj regjistrit PC, regjistri i referuar në mënyrë implicite është numëruesi programor (PC). Kjo i bie që, adresa e instruksionit të ardhshëm i shtohet fushës së adresës për të fituar adresën efektive (EA). Zakonisht, fusha e adresës trajtohet si numër sipas 2-komplementit gjatë këtij operacioni. Kështu, adresa efektive është një zhvendosje relative ndaj adresës së instruksionit. Adresimi relativ përdorë parimin e lokalitetit për të cilin kemi folur të memoria kesh. Nëse shumica e referencave të memories janë relativisht afër instruksionit që është duke u ekzekutuar, atëherë përdorimi i adresimit relativ kursen bitët e adresës në instruksion. 13.3 Formatet e instruksioneve Formati i instruksionit definon mënyrën e vendosjes së bitëve në një instruksion, sa i përket fushave përbërëse. Një format i instruksionit duhet patjetër të përfshijë një kod të operacionit dhe zero ose më shumë operandë në mënyrë implicite ose eksplicite. Secili operand eksplicit referencohet përmes njërës nga mënyrat e adresimit të përshkruara në pjesën 13.1. Formati duhet patjetër, në mënyrë implicite ose eksplicite, të tregojë mënyrën e adresimit për çdo operand. Dizajni i një formati të instruksionit është një art i komplikuar dhe një numër i dizajnëve interesant janë implementuar. Si shembuj të bashkësive të instruksioneve janë x86 dhe ARM. Gjatësia e instruksionit Çështja më bazike e dizajnit me të cilën duhet marrë është gjatësia e formatit të instruksionit. Ky vendim ndikon dhe ndikohet nga madhësia e memories, organizimi i memories, struktura e busit, kompleksiteti i procesorit dhe shpejtësia e procesorit. Ky vendim përcakton pasurinë dhe fleksibilitetin e kompjuterit ashtu siç shihet nga programuesi i gjuhës assembly. 6 MSc. Valdrin Haxhiu Kompromisi kryesor është në mes dëshirës për një bashkësi të fuqishme të instruksioneve dhe nevojës për të kursyer hapësirë. Programuesit kanë nevojë për më shumë kode të operacioneve, më shumë operandë, më shumë mënyra të adresimit dhe rang më të madh të adresave. Më shumë kode të operacioneve dhe më shumë operandë e bëjnë jetën më të lehtë për programuesin, sepse mund të shkruhen programe të më shkurta për kryerjen e një pune të caktuar. Ngjashëm, më shumë mënyra të adresimit i japin programuesit më shumë fleksibilitet për implementimin e funksioneve të caktuara, si për shembull llogaritjet me tabela dhe degëzimet në shumë mënyra. Natyrisht, me rritjen e madhësisë së memories DRAM dhe përdorimit në rritje të memories virtuale, programuesit duan të jenë në gjendje të adresojnë rang më të madh të adresave. Të gjitha këto gjëra (kodet e operacioneve, operandët, mënyrat e adresimit, rangu i adresave) kërkojnë bitë dhe bëjnë që instruksionet të jenë më të gjata. Instruksionet më të gjata mund të mos jenë shumë të dobishme. Një instruksion me gjatësi 64 bit harxhon dy herë më shumë hapësirë se një instruksion 32 bitësh por ka mundësi që të jetë më pak se dy herë më i dobishëm. Përveç këtij kompromisi themelor, duhet të merren parasysh edhe disa gjëra tjera. Gjatësia e instruksionit duhet të jetë e barabartë me gjatësinë e transferit të memories (në një bus të sistemit, gjatësia e busit për të dhëna) ose njëri duhet të jetë shumëfish i tjetrit. Përndryshe, nuk do të kemi një numër të plotë të instruksioneve gjatë një cikli të marrjes (fetch cycle). Një gjë tjetër që duhet të merret parasysh është shpejtësia e transferit e memories. Kjo shpejtësi gjithnjë ka qenë më e vogël se shpejtësia e procesorit. Rrjedhimisht, memoria mund të paraqet problem nëse procesori mund të ekzekutojë instruksionet më shpejtë se sa mund t’i marrë ato. Një zgjidhje për këtë është përdorimi i memories kesh; një zgjidhje tjetër është përdorimi i instruksioneve më të shkurta. Kështu, instruksionet me gjatësi 16 bit mund të merren me një shpejtësi dy herë më të madhe se instruksionet me gjatësi 32 bit, por ka mundësi që mund të ekzekutohen më pak se dy herë më shpejtë. Një karakteristikë e zakonshme dhe rëndësishme është që gjatësia e instruksionit duhet të jetë shumëfish i gjatësisë së një karakteri, që zakonisht është 8 bit dhe sa gjatësia e numrave me pikë fikse. Për të diskutuar këtë duhet të marrim në shqyrtim fjalën. Gjatësia e fjalës të memories, është në një mënyrë, njësia “natyrore” e organizimit të memories. Gjatësia e një fjale zakonisht përcakton madhësinë numrave me pikë fikse (zakonisht këto dyja janë të barabarta). Gjatësia e fjalës është zakonisht e barabartë ose së paku e lidhur me madhësinë e bartjes të memories. Për arsye se një formë e të dhënave janë karakteret, do të dëshironim që një fjalë të ruajë një numër të plotë të karaktereve. Përndryshe, në çdo fjalë do të ketë bitë të pa shfrytëzueshëm gjatë ruajtjes së karaktereve, ose nevojitet që një karakter të vendoset brenda kufijve të një fjale. Kjo është shumë e rëndësishme aq sa IBM, kur kishte ndërtuar System/360 dhe dëshironte të përdorte karaktere me gjatësi 8 bit, mori vendimin që të lëvizet prej arkitekturës 36 bitëshe të kompjuterëve për qëllime shkencore të serisë 700/7000 në arkitekturën 32 bitëshe. 7 MSc. Valdrin Haxhiu Vendosja e bitëve Kemi diskutuar disa faktorë që merren parasysh për vendosjen se çfarë gjatësie të formatit do të kenë instruksionet. Një çështje tjetër e vështirë është mënyra e vendosjes (ndarjes) së bitëve në formatin e instruksionit. Kompromiset për këtë çështje janë të komplikuara. Për një gjatësi të caktuar të instruksionit, ekziston një kompromis në mes numrit të kodeve të operacioneve dhe mundësive për adresim. Më shumë kode nënkupton më shumë bitë në fushën e kodit të operacionit. Për një gjatësi të caktuar të formatit të instruksionit, kjo zvogëlon numrin e bitëve që janë në dispozicion për adresim. Mund të bëhet një përmirësim në këtë kompromis duke përdorë kode të operacioneve me gjatësi të ndryshme. Në këtë qasje, ekziston një gjatësi minimale për kodin e operacionit, por për disa kode të operacioneve, operacionet shtesë mund të specifikohen duke përdorë bitë shtesë në instruksion. Për një instruksion me gjatësi fikse, kjo i lën në dispozicion më pak bitë për adresim. Kjo karakteristikë përdoret për ato instruksione që kërkojnë më pak operandë dhe/ose adresim më pak të fuqishëm. Këta faktorë të lidhur njëri me tjetrin merren parasysh në përcaktimin e përdorimit të bitëve të adresimit:     Numri i mënyrave të adresimit: Ndonjëherë një mënyrë e adresimit mund të tregohet në mënyrë implicite. Për shembull, disa kode të operacioneve kanë nevojë të përdorin indeksim. Në raste të tjera, mënyrat e adresimit duhet të jenë eksplicite dhe një ose më shumë bitë të mënyrës mund të nevojiten. Numri i operandëve: Kemi parë më herët që programet që shkruhen me instruksione me pak adresa janë më të gjata. Formatet e zakonshme të instruksioneve që përdoren sot kanë zakonisht dy operandë. Çdo adresë e operandit në instruksion mund të kërkojë treguesin e mënyrës, ose përdorimi i një treguesi të mënyrës mund të bëhet vetëm në njërën prej fushave të adresës. Regjistri apo memoria: Një kompjuter duhet patjetër të ketë regjistra ashtu që të dhënat të mund të vendosen në procesor për përpunim. Me një regjistër (regjistri AC) të vetëm që mund të përdoret nga programuesi, adresa e njërit operand është implicite dhe nuk shpenzon bitë të instruksionit. Megjithatë, programimi me vetëm një regjistër është i mundimshëm dhe kërkon shumë instruksione. Edhe kur përdoren më shumë regjistra, vetëm pak bitë nevojiten për të specifikuar regjistrin. Sa më shumë të përdoren regjistrat për referenca të operandëve, më pak bitë nevojiten. Një numër i studimeve tregojnë që është e dëshirueshme të jenë prej 8 deri në 32 regjistra që mund të përdoren nga programuesi. Shumica e arkitekturave moderne kanë së paku 32 regjistra. Numri i bashkësive të regjistrave: Shumica e kompjuterëve modern kanë një bashkësi të regjistrave me qëllim të përgjithshëm, që ka zakonisht 32 regjistra ose më shumë brenda bashkësisë. Këta regjistra mund të përdoren për të ruajtur të dhëna dhe mund të përdoren për të ruajtur adresa për adresimin me zhvendosje. Disa arkitektura, duke përfshirë arkitekturën x86, kanë një bashkësi prej një ose më shumë bashkësive të specializuara (për të dhëna dhe për zhvendosje). Një përparësi e qasjes së fundit është që, për një numër fiks të regjistrave, një ndarje sipas funksionit kërkon që të përdoren më pak bitë në instruksion. 8 MSc. Valdrin Haxhiu   Për shembull, për dy bashkësi me nga 8 regjistra, nevojiten vetëm 3 bitë për të identifikuar një regjistër. Rangu i adresave: Për adresat që referencojnë memorien, rangu i adresave që mund të referencohen lidhet me numrin e bitëve të adresës. Për arsye se kjo paraqet një kufizim, adresimi direkt përdoret më rrallë. Te adresimi me zhvendosje, rangu varet prej gjatësisë së regjistrit për adresa. Edhe po të jetë kështu, është e përshtatshme të lejohen zhvendosje të mëdha prej regjistrit të adresës, që kërkon një numër relativisht të madh të bitëve në instruksion. Niveli i adresimit: Për adresat që referencojnë memorie e jo regjistra, një faktor tjetër është niveli i adresimit. Në një sistem kompjuterik që ka fjalë 16 ose 32 bitëshe, një adresë mund të referencojë një fjalë ose një bajt sipas zgjedhjes që bën dizajnuesi. Adresimi në nivel të bajtëve është i përshtatshëm për llogaritje me karaktere, por për një memorie me madhësi fikse kërkon më shumë bitë të adresës. Në këtë mënyrë, dizajnuesi ballafaqohet me një numër të faktorëve që duhet të merren parasysh dhe të balancohen. Instruksionet me gjatësi të ndryshme Shembujt që kemi marrë më parë kanë përdorur instruksione me gjatësi fikse. Një dizajnues mund të vendosë që të ofrojë formate të instruksioneve me gjatësi të ndryshme. Kjo zgjidhje e bën më të lehtë që të ofrohet një bashkësi e madhe e instruksioneve, me gjatësi të ndryshme të kodit të operacionit. Adresimi mund të jetë më fleksibil përmes kombinimeve të ndryshme të regjistrave dhe referencave të memories si dhe mënyrave të adresimit. Përmes instruksioneve me gjatësi fikse, këto mundësi mund të ofrohen në mënyrë efiçiente dhe kompakte. Çmimi i parë që duhet të paguhet për instruksionet me gjatësi të ndryshme është rritja e kompleksitetit të procesorit. Rënia e çmimit të harduerit, përdorimi i mikroprogramimit dhe një rritje e kuptimit në përgjithësi të principeve të dizajnit kanë ndikuar që ky çmim të bëhet i vogël. Përdorimi i instruksioneve me gjatësi të ndryshme nuk e largon dëshirën për t’i bërë të gjitha gjatësitë e instruksioneve të jenë sa gjatësia e fjalës. Meqë procesori nuk e di gjatësinë e instruksionit të ardhshëm që do të merret, një strategji e zakonshme është që të merren disa bajtë ose fjalë të barabarta me gjatësinë e instruksionit më të gjatë. 9 MSc. Valdrin Haxhiu Referenca Materiali është marrë nga kapitulli 13 (faqe 452) i librit Computer Organization and Architecture Designing for Performance të autorit William Stallings. 10

Use Quizgecko on...
Browser
Browser