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

02__AOK__Ligjërata 2__ Një pamje nga lart e funksionit të kompjuterit. Strukturat ndërlidhëse - Busat -- MSc. Valdrin Haxhiu.pdf

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

Transcript

Kolegji UBT Arkitektura dhe organizimi i kompjuterëve Ligjërata 2 Një pamje nga lart e funksionit të kompjuterit. Strukturat ndërlidhëse - Busat MSc. Valdrin Haxhiu MSc. Valdrin Haxhiu Në nivelin më të lartë, një sistem kompjuterik përbëhet nga CPU (njësia qendrore përpunuese – central processing un...

Kolegji UBT Arkitektura dhe organizimi i kompjuterëve Ligjërata 2 Një pamje nga lart e funksionit të kompjuterit. Strukturat ndërlidhëse - Busat MSc. Valdrin Haxhiu MSc. Valdrin Haxhiu Në nivelin më të lartë, një sistem kompjuterik përbëhet nga CPU (njësia qendrore përpunuese – central processing unit), memoria dhe pjesët hyrëse/dalëse (input/output). Këto pjesë ndërlidhen në mes vete në një mënyrë të caktuar për të kryer funksionin bazë të kompjuterit, që është ekzekutimi i programeve. Pra, në një nivel më të lartë, një sistem kompjuterik mund të karakterizojmë duke e përshkruar (1) sjelljen e jashtme të secilit komponent dhe (2) strukturën ndërlidhëse dhe kontrollet që nevojiten për të menaxhuar përdorimin e strukturës ndërlidhëse. Kjo pamje nga niveli më i lartë i strukturës dhe funksionit është e rëndësishme për arsye të fuqisë shpjeguese për kuptimin e natyrës së një kompjuteri. E rëndësisë së njëjtë është edhe përdorimi i saj për të kuptuar çështjet gjithnjë e më të komplikuara të vlerësimit të performancës. Kuptimi i strukturës dhe funksionit të nivelit të lartë ofron mundësinë për të kuptuar më afër pengesat brenda sistemit, rrugët alternative, shkallën e dështimeve të sistemit nëse një pjesë dështon dhe lehtësinë e shtimit të përmirësimeve të performancës. Në shumë raste, kërkesat për fuqi më të madhe të sistemit dhe mundësitë për dështime pa dëme plotësohen duke ndryshuar dizajnin në vend të rritjes së shpejtësisë të secilës pjesë. 3.1 Pjesët e kompjuterit Pothuajse të gjithë dizajnët modern të kompjuterit bazohen në konceptet e zhvilluara nga John von Neumann në Institutin për Studime të Avancuara në Princeton. Ky dizajn njihet me emrin arkitektura von Neumann dhe bazohet në 3 koncepte:    të dhënat (data) dhe instruksionet (instructions) ruhen në një memorie për lexim dhe shkrim përmbajtjet e kësaj memorie adresohen për nga vendi, pa marrë parasysh tipin e të dhënave që gjenden aty ekzekutimi bëhet në mënyrë të njëpasnjëshme - rresht pas rreshti (përveç nëse radha e ekzekutimit ndryshohet në mënyrë eksplicite) nga një instruksion në një tjetër. Ekziston një bashkësi e vogël e pjesëve logjike që mund të kombinohen në mënyra të ndryshme për të ruajtur të dhëna binare dhe për të kryer operacione aritmetike dhe logjike mbi ato të dhëna. Për kryerjen e një llogaritjeje të caktuar, pjesët logjike duhet të lidhen në mënyrën e caktuar. Lidhjen e pjesëve logjike në mes vete mund ta mendojmë si një formë të programimit. “Programi” që fitohet është në formë të harduerit dhe njihet me emrin programi i realizuar në harduer (hardwired). Ta mendojmë një mënyrë tjetër. Le të supozojmë se ne mund të realizojmë një lidhje për qëllime të përgjithshme (general-purpose) të funksioneve aritmetike dhe logjike. Kjo bashkësi e pjesëve harduerike do të kryejë funksione të ndryshme mbi të dhënat varësisht prej sinjaleve kontrolluese që aplikohen ndaj harduerit. Në rastin e programit në harduer, sistemi pranon të 1 MSc. Valdrin Haxhiu dhëna dhe prodhon rezultate (shiko Figura 3.1a). Me harduer për qëllime të përgjithshme, sistemi pranon të dhëna, sinjale kontrolluese dhe prodhon rezultate. Pra, në vend se të bëhet rilidhja e harduerit për secilin program të ri, programuesi duhet të furnizojë harduerin me një bashkësi të re të sinjaleve kontrolluese. Funksionet aritmetike dhe logjike Të dhënat Rezultatet (a) Programimi në harduer Kodet e instruksionit Interpretuesi i instruksioneve Sinjalet kontrolluese Të dhënat Funksionet aritmetike dhe logjike për qëllime të përgjithshme Rezultatet (b) Programimi në softuer Figura 3.1 – Qasjet harduerike dhe softuerike Si do të bëhet furnizimi me sinjale kontrolluese? Përgjigjja është e thjeshtë, por jo aq e thjeshtë. Programi është një renditje e hapave. Në secilin hap, ndonjë llogaritje aritmetike ose logjike kryhet mbi të dhënat e caktuara. Për secilin hap nevojitet një bashkësi e re e sinjaleve kontrolluese. Le të ofrojmë nga një kod unik (varg që përmban disa bit) për secilën bashkësi të mundshme të instruksioneve dhe le të shtojmë një segment në harduerin e përgjithshëm që mund të pranojë një kod dhe mund të krijojë sinjale (shiko në Figura 3.1b). Programimi në këtë mënyrë është më i lehtë. Në vend se të rilidhet hardueri për çdo program të ri, e tërë ajo që duhet të bëjmë është të ofrojmë një radhë (sekuencë) të re të kodeve. Secili kod, në të vërtetë, është një instruksion dhe një pjesë e harduerit e interpreton secilin 2 MSc. Valdrin Haxhiu instruksion dhe krijon sinjale kontrolluese. Për ta dalluar këtë mënyrë të re të programimit, një radhë e kodeve ose instruksioneve quhet softuer. Figura 3.1b tregon dy pjesët kryesore të sistemit: një interpretues të instruksioneve dhe një modul të funksioneve aritmetike dhe logjike me qëllime të përgjithshme. Këto dy pjesë përbëjnë CPU-në. Për ta bërë një kompjuter funksional nevojiten edhe disa pjesë tjera. Të dhënat dhe instruksionet duhet të vendosen në sistem. Për këtë nevojitet një modul hyrës i caktuar. Ky modul përmban pjesë bazike për pranimin e të dhënave dhe instruksioneve në një formë të caktuar dhe shndërrimin e tyre në një formë që mund të përdoret nga sistemi. Duhet të ekzistojë një mënyrë e raportimit të rezultateve dhe kjo është në formë të një moduli dalës. Së bashku këto module njihen si pjesët hyrëse/dalëse. Nevojitet edhe një pjesë tjetër. Një pajisje hyrëse do të fus në sistem instruksionet dhe të dhënat me radhë. Një program mund të mos ekzekutohet sipas radhës; brenda programit mund të ketë kërcime (p.sh. përmes instruksionit jump). Mund të jetë e nevojshme që operacionet mbi të dhëna mund të kërkojnë qasje në më shumë se një element në të njëjtën kohë sipas radhës së paracaktuar. Pra, duhet të ekzistojë një vend për të ruajtur përkohësisht instruksionet dhe të dhënat. Ai modul quhet memorie, ose memorie kryesore, për ta dalluar nga memoria e jashtme ose pajisjet periferike. Von Neumann vuri në dukje se e njëjta memorie mund të përdoret për të ruajtur instruksionet dhe të dhënat. Figura 3.2 paraqet këto pjesë të nivelit të lartë dhe sugjeron bashkëveprimin në mes tyre. Figura 3.2 – Pjesët e kompjuterit: Një pamje nga lart 3 MSc. Valdrin Haxhiu 3.2 Funksioni i kompjuterit Funksioni bazë i një kompjuteri është ekzekutimi i një programi, i cili përbëhet nga një bashkësi e instruksioneve të ruajtura në memorie. Procesori e kryen punën e tij duke i ekzekutuar instruksionet e specifikuara në program. Në formën e tij më të thjeshtë, ekzekutimi i instruksioneve përbëhet prej dy hapave: procesori merr (fetches) një instruksion nga memoria në një moment të caktuar dhe e ekzekuton instruksionin. Ekzekutimi i programit përbëhet nga përsëritja e procesit të leximit të instruksioneve dhe ekzekutimit të instruksioneve. Ekzekutimi i instruksionit mund të përfshijë disa operacione dhe varet nga natyra e instruksionit. Përpunimi i nevojshëm për një instruksion quhet cikël i instruksionit (instruction cycle). Duke përdorur përshkrimin e thjeshtë me dy hapa të dhënë më sipër, cikli i instruksionit është paraqitur në Figura 3.3. Dy hapat njihen si cikli i leximit - marrjes (fetch cycle) dhe cikli i ekzekutimit (execute cycle). Ndalimi i ekzekutimit të programit bëhet vetëm nëse kompjuteri ç ‘kyçet, paraqitet ndonjë gabim që nuk mund të tejkalohet, ose ekzekutohet ndonjë instruksion që ndalon punën e kompjuterit. FILLIMI Cikli i leximit Cikli i ekzekutimit Lexo instruksionin e radhës Ekzekuto instruksionin NDALIMI Figura 3.3 – Cikli bazë i instruksionit Leximi dhe ekzekutimi i instruksionit Në fillim të çdo cikli të instruksionit, procesori lexon një instruksion nga memoria. Në një procesor të zakonshëm, një regjistër i quajtur numërues programor (program counter – PC) përmban adresën e instruksionit të ardhshëm që do të lexohet herën e radhës në memorie. Përveç nëse përcaktohet ndryshe, procesori çdo herë e rrit për 1 vlerën në regjistrin PC pas leximit të çdo instruksioni ashtu që procesori do të lexojë instruksionin tjetër në radhë (d.m.th. lexon instruksionin që gjendet në adresën më të madhe të radhës në memorie). Le të marrim si shembull një kompjuter në të cilin çdo instruksion vendoset në një fjalë (word) me gjatësi 16 bit në memorie. Supozojmë se regjistri PC përmban adresën 300 të memories DRAM, ku adresa është adresa e një vendi në memorie që përmban një fjalë 16 bitëshe. Procesori do të lexojë instruksionin e radhës në adresën 300. Në ciklet e instruksionit në vazhdim, procesori do të lexojë instruksionet nga vendet me adresat 301, 302, 303 e ashtu me radhë. Kjo radhë e leximit mund të ndryshohet. Instruksioni i lexuar vendoset në regjistrin e instruksionit (instruction register – IR) në procesor. Instruksioni përmban bitët që definojnë veprimin që do të kryejë procesori. Procesori 4 MSc. Valdrin Haxhiu interpreton instruksionin dhe kryen veprimin e kërkuar. Në përgjithësi, këto veprime bëjnë pjesë në njërin prej 4 grupeve:  Procesor – memorie: Të dhënat mund të barten prej procesorit te memoria ose prej memories te procesori  Procesor – Hyrje/Dalje: Të dhënat mund të barten te ose prej një pajisjeje periferike duke bartur të dhënat në mes të procesorit dhe një moduli të hyrje/daljes  Përpunimi i të dhënave: Procesori mund të kryejë ndonjë operacion aritmetik ose logjik mbi të dhënat  Kontrolli: Një instruksion mund të definojë që radha e ekzekutimit të ndryshohet. Për shembull, procesori mund të lexojë një instruksion prej vendit me adresë 149, që definon që instruksioni i radhës të jetë nga vendi me adresë 182. Procesori do të mbajë në mend këtë fakt duke vendosur adresën 182 në regjistrin PC. Ashtu që, në ciklin e leximit të radhës, instruksioni do të lexohet nga vendi me adresë 182 e jo nga vendi me adresë 150. Ekzekutimi i një instruksioni mund të përfshijë një kombinim të këtyre veprimeve. Si shembull të thjeshtë le të imagjinojmë një kompjuter që përmban karakteristikat e paraqitura në Figura 3.4. Procesori përmban një regjistër të quajtur akumulator (accumulator – AC). Instruksionet dhe të dhënat janë me gjatësi 16 bit. Ashtu që, është e përshtatshme të organizohet memoria duke përdorë fjalë 16 bitëshe. Formati i instruksionit ofron 4 bit për kodin e operacionit (opcode), ashtu që mund të jenë 24 = 16 kode të ndryshme të operacioneve dhe deri në 212 = 4096 (4 kilobajt) fjalë të memories mund të adresohen. (a) Formati i instruksionit (b) Formati i të dhënave Program counter (PC) = adresa e instruksionit Instruction register (IR) = instruksioni që do të ekzekutohet Accumulator (AC) = vend për ruajtje të përkohshme (c) Regjistrat e brendshëm të CPU-së 0001 = mbushe regjistrin AC me një vlerë nga memoria 0010 = ruaje vlerën e regjistrit AC në memorie 0101 = mbledhe vlerën e regjistrit AC me vlerën e lexuar nga memoria (d) Listë e pjesshme e kodit të operacioneve Figura 3.4 – Karakteristikat e një kompjuteri të imagjinuar 5 MSc. Valdrin Haxhiu Figura 3.5 paraqet ekzekutimin e një pjese të një programi, duke treguar pjesët e nevojshme të memories dhe regjistrat e procesorit. Figura 3.5 - Shembull i ekzekutimit të programit (përmbajtja e memories dhe regjistrave e paraqitur në formë heksadecimale) Pjesa e programit të paraqitur mbledhë përmbajtjen e fjalës së memories në adresën 940 (në heksadecimal) me përmbajtjen e fjalës së memories në adresën 941 dhe ruan rezultatin në adresën 941. Nevojiten 3 instruksione që mund të përshkruhen si 3 cikle të instruksioneve për lexim dhe 3 cikle të instruksioneve për ekzekutim: 1. Regjistri PC përmban adresën 300 të instruksionit të parë. Ky instruksion (vlera 1940 në heksadecimal) vendoset në regjistrin IR dhe vlera e regjistrit PC rritet për 1. Për kryerjen e këtij veprimi nevojitet edhe përdorimi i një regjistri që ruan adresën e memories (memory address register) dhe një regjistër që ruan vlerat e lexuara nga memoria (memory buffer register). Për qëllim të thjeshtësisë, këta regjistra të ndërmjetëm nuk përmenden më shumë në këtë shembull. 2. 4 bitët e parë (numri i parë heksadecimal) në regjistrin IR tregojnë se regjistri AC do të mbushet me një vlerë. 12 bitët tjerë (tre numrat tjerë heksadecimal) definojnë adresën 940 nga e cila do të merren të dhënat. 3. Instruksioni i radhës 5941 lexohet në adresën 301 dhe vlera e regjistrit PC rritet për 1. 6 MSc. Valdrin Haxhiu 4. Përmbajtja e mëparshme e regjistrit AC mbledhet me përmbajtjen në adresën 941 dhe rezultati i fituar ruhet në regjistrin AC. 5. Instruksioni i radhës 2941 lexohet në adresën 302 dhe vlera e regjistrit PC rritet për 1. 6. Përmbajtja e regjistrit AC ruhet në adresën 941. Në këtë shembull nevojiten 3 cikle të instruksionit, ku secili përbëhet nga një cikël i leximit dhe një cikël i ekzekutimit , për të mbledhur përmbajtjen e adresës 940 me përmbajtjen e adresës 941. Me një bashkësi më komplekse të instruksioneve, nevojiten më pak cikle. Disa procesorë të vjetër, kanë përfshirë instruksione që përmbajnë më shumë se një adresë të memories. Në vend të adresave të memories, një instruksion mund të definojë një operacion të hyrje/daljes. Cikli i ekzekutimit për një instruksion të caktuar mund të përfshijë më tepër se një adresë të memories. Po ashtu në vend të një adrese të memories, një instruksion mund të definojë një operacion të hyrje/daljes. Figura 3.6 paraqet një pamje më të detajuar të ciklit bazë të instruksionit të paraqitur në Figura 3.3. Figura është në formë të një diagrami të gjendjeve. Për ndonjë instruksion të dhënë, disa gjendje mund të mos paraqiten e disa të tjera mund të paraqiten disa herë. Figura 3.3 – Diagrami i gjendjeve të ciklit të instruksionit 7 MSc. Valdrin Haxhiu Gjendjet kanë këto kuptime:        Instruction address calculation (iac) – llogaritja e adresës së instruksionit: Përcaktimi i adresës së instruksionit të radhës për ekzekutim. Zakonisht kjo përfshinë mbledhjen e një numri të caktuar me adresën e instruksionit të mëparshëm. Për shembull, nëse secili instruksion e ka gjatësinë 16 bit dhe memoria është e organizuar në fjalë 16 bitëshe, atëherë vlera 1 i shtohet (mbledhet) adresës së mëparshme. Nëse memoria është e organizuar në vende me nga 1 bajt, atëherë vlera 2 i shtohet (mbledhet) adresës së mëparshme. Instruction fetch (if) – leximi i instruksionit: leximi i instruksionit nga vendi i tij në memorie. Instruction operation decoding (iod) – dekodimi i operacionit të instruksionit: analizimi i instruksionit për të përcaktuar tipin e operacionit që do të kryhet dhe operandët (vlerat) që do të përdoren. Operand address calculation (oac) – llogaritja e adresës së operandit: nëse operacioni përfshinë adresën e një operandi në memorie ose përmes hyrje/daljes, duhet të përcaktohet adresa e operandit. Operand fetch (of) – leximi i operandit: leximi i operandit në memorie ose prej hyrje/daljes. Data operation (do) – kryerja e veprimit mbi të dhëna: kryerja e veprimit të caktuar në instruksion. Operand store (os) – ruajtja e operandit të rezultatit: shkruarja e rezultatit në memorie ose jashtë përmes hyrje/daljes. Gjendjet që janë në pjesën e sipërme në Figura 3.6 përfshijnë një shkëmbim në mes procesorit dhe memories ose në mes procesorit dhe një moduli të hyrje/daljes. Gjendjet në pjesën e poshtme në diagram përfshijnë vetëm operacione brenda në procesor. Gjendja oac paraqitet dy herë sepse një instruksion mund të përfshijë një lexim, një shkrim ose dyjat. Ndërprerjet (interrupts) Pothuajse të gjithë kompjuterët ofrojnë një mekanizëm me të cilin modulet tjera (hyrëse/dalëse dhe memoria) mund të ndërprenë punën normale të procesorit. Tabela 3.1 paraqet grupet më të zakonshme të ndërprerjeve. Ndërprerjet mund të kenë ndikime gjatë ekzekutimit të instruksioneve dhe në strukturën ndërlidhëse brenda në kompjuter. 8 MSc. Valdrin Haxhiu Tabela 3.1 – Grupet e ndërprerjeve Programi Krijohet nga një gjendje që paraqitet pas ekzekutimit të ndonjë instruksioni, p.sh. ndonjë tejmbushje (overflow) aritmetike, pjesëtimi me zero, tentimi për të ekzekutuar ndonjë instruksion jo të lejuar ose qasja jashtë hapësirës së lejuar të adresave të shfrytëzuesit. Tajmeri Krijuar nga një tajmer në procesor. Kjo ia mundëson sistemit operativ kryerjen e funksioneve të caktuara në baza të rregullta. Hyrje/Dalja Krijuar nga një kontrollues i hyrje/daljes, për të sinjalizuar përfundimin e një operacioni, për të kërkuar ndonjë shërbim prej procesorit ose për të sinjalizuar gjendje të ndryshme të gabimeve. Dështim i harduerit Krijuar nga një dështim si p.sh. dështim i rrymës elektrike ose i paritetit të memories. Ndërprerjet ofrohen në radhë të parë si një mundësi e përmirësimit të efiçiencës së përpunimit. Për shembull, shumica e pajisjeve të jashtme punojnë shumë më ngadalë se procesori. Supozojmë se procesori është duke dërguar të dhëna në printer duke e përdorë skemën e ciklit të instruksionit të paraqitur në Figura 3.3. Pas secilit operacion të shkrimit, procesori duhet patjetër të pushojë dhe të mbesë në pritje derisa printeri të mund të punojë më tutje. Gjatësia e këtij pushimi mund të jetë e rangut të disa qindra ose mijëra cikleve të instruksioneve që nuk përfshijnë memorien. Kjo gjë paraqet shfrytëzim të kotë të procesorit. Figura 3.7 paraqet këtë gjendje të punëve. (a) Pa ndërprerje (b) Ndërprerjet; pritje e shkurtër për H/D (c) Ndërprerjet; pritje e gjatë për H/D X = ndërprerja paraqitet gjatë ekzekutimit të programit Figura 3.7 – Rrjedha e ekzekutimit të programit me dhe pa ndërprerje 9 MSc. Valdrin Haxhiu Shfrytëzuesi kryen një numër të thirrjeve WRITE (shkruaj) gjatë përpunimit. Segmentet 1, 2 dhe 3 të kodit janë për instruksionet që nuk përfshijnë hyrje/dalje. Thirrjet WRITE i bëhen një programi të hyrje/daljes që është një program ndihmës i sistemit dhe që do të kryejë punën e duhur për operacionin e hyrje/daljes. Programi për H/D (hyrje/dalje) përbëhet prej 3 pjesëve:  Një radhë të instruksioneve, e shënuar me numrin 4 në figurë, për përgatitjen e kryerjes së operacionit për H/D. Kjo mund të përfshijë kopjimin e të dhënave për t’u vendosur në një bafer të posaçëm dhe përgatitjen e parametrave për një komandë të pajisjes.  Komanda për H/D. Pa përdorimin e ndërprerjeve, kur komanda të jetë lëshuar, programi duhet të presë që pajisja për H/D të kryejë funksionin e kërkuar (ose të kontrollojë kohë pas kohe pajisjen). Programi mund të presë thjeshtë duke e përsëritur një operacion të testimit për të përcaktuar nëse operacioni për H/D ka përfunduar.  Një radhë të instruksioneve, e shënuar me numrin 5 në figurë, për të përfunduar operacionin. Kjo mund të përfshijë vendosjen e vlerës së një biti (flag) për të treguar suksesin ose dështimin e një operacioni. Meqë operacioni për H/D mund të marrë një kohë relativisht të gjatë për t’u përfunduar, programi për H/D mund të mbetet i zënë duke pritur përfundimin e operacionit; për këtë arsye, programi i shfrytëzuesit ndalet në pikën e thirrjes WRITE për një kohë të konsiderueshme. Ndërprerjet dhe cikli i instruksionit Përmes ndërprerjeve, procesori mund të përfshihet në ekzekutimin e instruksioneve tjera përderisa një operacion për H/D është duke u ekzekutuar. Të merremi me rrjedhën e kontrollit në Figura 3.7b. Sikur më parë, programi i shfrytëzuesit arrin deri te një pikë ku bën një thirrje në formë të thirrjes WRITE. Programi për H/D që thirret në këtë rast përbëhet vetëm nga kodi për përgatitje dhe komanda aktuale për H/D. Pas ekzekutimit të këtyre instruksioneve, kontrolli i kthehet programit. Ndërkohë, pajisja e jashtme është e zënë duke pranuar të dhëna prej memories së kompjuterit dhe duke i printuar ato. Ky operacion për H/D kryhet duke ju bërë konkurrencë ekzekutimit të instruksioneve në programin e shfrytëzuesit. Kur pajisja e jashtme bëhet gati për t’u shërbyer - që d.m.th. kur ajo është e gatshme të pranojë më tepër të dhëna prej procesorit – moduli për H/D i asaj pajisje të jashtme i dërgon procesorit një sinjal të kërkesës së ndërprerjes. Procesori përgjigjet duke e ndërprerë përkohësisht operacionin e programit aktual, duke e thirrur një program për t’i shërbyer asaj pajisjeje për H/D, programi njihet si program që merret me përpunimin e ndërprerjeve (interrupt handler) dhe duke u kthyer te ekzekutimi i programit të ndërprerë përkohësisht pas shërbimit të pajisjes. Pikat në të cilat paraqiten këto ndërprerje janë shënuar me nga një X në Figura 3.7b. Për t’i përfshirë edhe ndërprerjet, një cikël i ndërprerjes shtohet në ciklin e instruksionit, siç është paraqitur në Figura 3.9. 10 MSc. Valdrin Haxhiu Cikli i leximit Cikli i ekzekutimit Cikli i ndërprerjes Ndërprerjet e aktivizuara FILLIMI Lexo instruksionin e radhës Ekzekuto instruksionin Kontrollo a ka ndërprerje; përpuno ndërprerjen Ndërprerjet e deaktivizuara NDALIMI Figura 3.9 – Cikli i instruksionit me ndërprerje Në ciklin e ndërprerjes, procesori kontrollon nëse ka ndonjë ndërprerje, që tregohet me prezencën e një sinjali të ndërprerjes. Nëse asnjë ndërprerje nuk është duke pritur, procesori vazhdon me ciklin e leximit dhe lexon instruksionin e radhës të programit aktual. Nëse një ndërprerje është duke pritur, procesori i kryen këto veprime:   Procesori e ndërprenë përkohësisht ekzekutimin e programit që është duke u ekzekutuar dhe ruan kontekstin e tij. Kjo nënkupton ruajtjen e adresës së instruksionit të radhës që do të ekzekutohet (përmbajtjen aktuale të regjistrit PC) dhe ndonjë të dhënë tjetër që lidhet me aktivitetin aktual të procesorit. Procesori vendosë në regjistrin PC adresën e funksionit që merret me përpunimin e ndërprerjeve. Procesori vazhdon në ciklin e leximit dhe lexon instruksionin e parë në programin që merret me përpunimin e ndërprerjes, që do të merret me ndërprerjen. Programi që merret me përpunimin e ndërprerjes zakonisht është pjesë e sistemit operativ. Ky program zakonisht përcakton natyrën e ndërprerjes dhe kryen veprimet e nevojshme. Në shembullin tonë, programi për përpunimin e ndërprerjeve përcakton se cili modul për H/D ka krijuar ndërprerjen dhe mund të degëzohet te një program që do të shkruajë më shumë të dhëna në atë modul për H/D. Kur funksioni i programit për përpunimin e ndërprerjeve të ketë përfunduar, procesori mund të vazhdojë ekzekutimin e programit të shfrytëzuesit në pikën e ndërprerjes. Është e qartë se në këtë proces ka punë shtesë. Instruksione shtesë duhet të ekzekutohen (në interrupt handler) për të përcaktuar natyrën e ndërprerjes dhe për të vendosur për veprimin e duhur. Megjithatë, për arsye të kohës relativisht të gjatë që do të humbej duke pritur kryerjen e operacionit për H/D, procesori mund të përdoret në mënyrë më efiçiente përmes ndërprerjeve. 11 MSc. Valdrin Haxhiu Ndërprerjet e shumëfishta Diskutimi deri më tani është përqendruar në paraqitjen vetëm të ndërprerjeve të njëfishta. Supozojmë se mund të paraqiten më shumë ndërprerje. Për shembull, një program mund të jetë duke pranuar të dhëna nga një lidhje komunikimi dhe duke printuar rezultatet. Printeri do të krijojë një ndërprerje sa herë që kryen një operacion të printimit. Kontrolluesi i lidhjes së komunikimit do të krijojë një ndërprerje çdo herë kur arrin një njësi e të dhënave. Njësia e të dhënave mund të jetë një karakter i vetëm ose një bllok, varësisht prej natyrës së komunikimeve. Në cilindo rast, është e mundur që të paraqitet një ndërprerje nga lidhja e komunikimit gjatë kohës së përpunimit të ndërprerjes së printerit. Përpunimin e ndërprerjeve të shumëfishta mund ta trajtojmë përmes dy qasjeve. Qasja e parë është që të deaktivizohen ndërprerjet në kohën e përpunimit të një ndërprerjeje. Një ndërprerje e deaktivizuar thjeshtë nënkupton që procesori mund dhe do të injorojë atë sinjal të kërkesës për ndërprerje. Nëse një ndërprerje paraqitet gjatë kësaj kohe, në përgjithësi ajo ndërprerje mbetet në gjendje të pritjes dhe do të kontrollohet nga procesori pasi që procesori t’i ketë aktivizuar ndërprerjet. Kështu që, kur një program i shfrytëzuesit është duke u ekzekutuar dhe një ndërprerje paraqitet, ndërprerjet deaktivizohen menjëherë. Pasi që funksioni që merret me përpunimin e ndërprerjeve përfundon punën e tij, ndërprerjet aktivizohen para se të vazhdojë ekzekutimi i programit të ndërprerë dhe procesori kontrollon se a është paraqitur ndonjë ndërprerje tjetër. Funksioni i hyrje/daljes Deri më tani kemi diskutuar për punën e kompjuterit të kontrolluar nga procesori dhe kemi shikuar në radhë të parë ndërveprimin në mes procesorit dhe memories. Një modul për H/D (p.sh. një kontrollues i diskut) mund të shkëmbejë të dhëna drejtpërdrejtë me procesorin. Diskutimi ka bërë fjalë vetëm pak për rolin e pjesës për H/D. Njëjtë sikur që procesori mund të fillojë një lexim ose shkrim me memorien, duke treguar adresën e vendit të caktuar në memorie, procesori mund gjithashtu të lexojë të dhëna prej ose të shkruajë të dhëna në një modul për H/D. Në këtë rastin e dytë, procesori identifikon pajisjen e caktuar që kontrollohet nga një modul i caktuar për H/D. Kështu që, mund të paraqitet një radhë e instruksioneve e ngjashme me atë në Figura 3.5, me instruksione për H/D në vend të instruksioneve që adresojnë memorien. Në disa raste, është e dëshirueshme që të lejohet shkëmbimi i drejtpërdrejtë në mes H/D dhe memories. Në këtë rast, procesori ia jep autorizimin një moduli për H/D për lexim ose shkrim në memorie, ashtu që bartja në mes H/D dhe memories mund të ndodhë pa e përfshirë shumë procesorin. Gjatë kësaj bartjeje, moduli për H/D i jep komanda për lexim ose shkrim memories, duke e liruar procesorin nga përgjegjësia për shkëmbim. 3.3 Strukturat ndërlidhëse Një kompjuter përbëhet nga një bashkësi e pjesëve apo moduleve të 3 llojeve bazë (procesor, memorie dhe H/D) që komunikojnë në mes vete. Në të vërtetë, një kompjuter është një rrjetë e moduleve bazë. Kështu që, duhet të ekzistojnë rrugë për lidhjen e moduleve. Bashkësia e rrugëve që lidhin module të ndryshme quhet strukturë ndërlidhëse. Dizajni i kësaj strukture do të varet nga shkëmbimet që duhet patjetër të kryhen në mes moduleve. Figura 3.15 sugjeron llojet e shkëmbimeve që nevojiten duke treguar format kryesore të hyrjes dhe daljes për secilin lloj të modulit: 12 MSc. Valdrin Haxhiu  Memory (memoria): Zakonisht, një modul i memories do të përbëhet nga N fjalë me gjatësi të njëjtë. Secila fjalë e ka adresën e vet unike numerike (0, 1, …, N – 1). Një fjalë e të dhënave mund të lexohet ose të shkruhet në memorie. Natyra e operacionit tregohet nga sinjalet për lexim dhe shkrim. Figura 3.15 – Modulet e kompjuterit  I/O module (moduli për H/D): Nga këndvështrimi i brendshëm (për sistemin kompjuterik), H/D është e njëjtë me memorien. Ekzistojnë 2 operacione, lexim dhe shkrim. Për më tepër, një modul mund të kontrollojë më tepër se një pajisje të jashtme. Secilën pikë të kontaktit të një pajisjeje të jashtme mund ta quajmë port dhe secilit port mund t’ia vendosim një adresë unike (p.sh. 0, 1, …, M – 1). Përveç kësaj, ka edhe rrugë të jashtme për futjen dhe nxjerrjen e të dhënave me një pajisje të jashtme. Në fund, një modul për H/D mund të jetë në gjendje t’i dërgojë procesorit sinjale të ndërprerjes.  Processor (procesori): Procesori i lexon instruksionet dhe të dhënat, i shkruan të dhënat jashtë tij pas përpunimit dhe përdorë sinjalet kontrolluese për të kontrolluar punën e tërë sistemit kompjuterik. Procesori po ashtu pranon sinjalet e ndërprerjes. Lista e mësipërme definon të dhënat që mund të shkëmbehen. Struktura ndërlidhëse duhet patjetër të përkrahë këto lloje të bartjeve: 13 MSc. Valdrin Haxhiu      Nga memoria në procesor: Procesori lexon një instruksion ose një njësi të dhënash prej memories. Nga procesori në memorie: Procesori shkruan një njësi me të dhëna në memorie. Nga H/D në procesor: Procesori lexon të dhëna prej një pajisjeje për H/D përmes një moduli për H/D. Nga procesori në H/D: Procesori i dërgon të dhënat te një pajisje për H/D. Nga H/D në ose prej memories: Për këto dy raste, një modul për H/D lejohet të shkëmbejë të dhëna drejtpërdrejtë me memorien, pa shkuar përmes procesorit, duke përdorë qasjen direkte në memorie. 3.4 Ndërlidhja përmes busit Një bus është një lidhje komunikimi që lidhë dy e më tepër pajisje. Një karakteristikë bazë e busit është se busi është një medium me shfrytëzim të përbashkët. Shumë pajisje lidhen me bus dhe një sinjal i dërguar nga cilado pajisje mund të pranohet nga cilado pajisje tjetër që është e lidhur me bus. Nëse dy pajisje dërgojnë të dhëna në të njëjtën kohë, sinjalet e tyre mund të mbulojnë njëri-tjetrin dhe mund të përzihen. Zakonisht, një bus përbëhet prej shumë rrugëve të komunikimit ose telave. Secili prej telave mund të dërgojë sinjale që paraqesin 1 ose 0 binare. Në disa raste, një radhë e numrave binarë mund të barten përgjatë një teli të vetëm. Duke i marrë së bashku, disa tela të busit mund të përdoren për të dërguar disa numra binarë në të njëjtën kohë (në mënyrë paralele). Për shembull, një njësi e të dhënave me 8 bit mund të barten përgjatë 8 telave të busit. Sistemet kompjuterike përmbajnë një numër të buseve të ndryshme që ofrojnë rrugë komunikimi në mes të pjesëve në nivele të ndryshme të hierarkisë të sistemit kompjuterik. Busi që i lidhë pjesët kryesore të kompjuterit (procesorin, memorien dhe H/D) quhet busi i sistemit (system bus). Shumë prej strukturave ndërlidhëse bazohen në përdorimin e një apo më tepër buseve. Struktura e busit Një bus i sistemit, zakonisht përbëhet prej afërsisht 50 deri në disa qindra tela. Secilit tel i ndahet një kuptim ose funksion i caktuar. Edhe pse ekzistojnë dizajnë të ndryshëm të busit, telat në cilindo bus mund të ndahen në 3 grupe funksionale (shiko Figura 3.16): telat për të dhëna, për adresa dhe për kontroll. Përveç kësaj, mund të jenë edhe disa tela që shpërndajnë rrymë elektrike për të furnizuar modulet që janë të lidhura. Telat për të dhëna ofrojnë një rrugë për lëvizjen e të dhënave në mes të moduleve. Këta tela së bashku quhen busi i të dhënave. Busi i të dhënave mund të përbëhet prej 32, 64, 128 ose më shumë telave, ku numri i telave njihet si gjerësia e busit të të dhënave. Meqë secili tel mund të bartë vetëm 1 bit në një moment të caktuar, numri i telave përcakton se sa bitë mund të barten në një moment të caktuar. Gjerësia e busit të të dhënave është faktor kyç në përcaktimin e performancës së përgjithshme të sistemit. Për shembull, nëse busi i të dhënave ka gjerësinë 32 bit dhe secili instruksion ka gjatësinë 64 bit, atëherë procesori duhet t’i qaset dy herë modulit të memories gjatë secilit cikël të instruksionit. Telat për adresa përdoren për të përcaktuar burimin ose destinacionin e të dhënave në busin e të dhënave. Për shembull, nëse procesori dëshiron të lexojë një fjalë (8, 16 ose 32 bitëshe) me të dhëna prej memories, procesori vendosë adresën e fjalës së dëshiruar në telat e adresave. Gjerësia e busit të adresave përcakton kapacitetin maksimal të mundshëm të memories DRAM në sistem. Telat e adresave përdoren edhe për adresimin e porteve për H/D. Zakonisht 14 MSc. Valdrin Haxhiu bitët me peshën më të madhe përdoren për të përzgjedhur një modul të caktuar në bus dhe bitët me peshën më të vogël përzgjedhin një vend në memorie ose port për H/D në një modul. Për shembull, në një bus 8 bitësh, adresa 01111111 dhe adresat poshtë saj mund t’u referohen vendeve në një modul të memories (moduli 0) me 128 fjalë të memories dhe adresa 10000000 si dhe adresat përmbi t’u referohen pajisjeve të lidhura në një modul për H/D (moduli 1). Telat e kontrollit përdoren për të kontrolluar qasjen dhe përdorimin e telave për të dhëna dhe telave të adresave. Meqë telat e të dhënave dhe telat e adresave janë me shfrytëzim të përbashkët nga të gjitha pjesët, duhet të ekzistojë një mënyrë e kontrollimit të përdorimit të tyre. Sinjalet kontrolluese bartin edhe informacion të komandës dhe informacion kohor në mes moduleve të sistemit. Sinjalet kohor tregojnë vlefshmërinë e të dhënave dhe informacion të adresës. Figura 3.16 – Skema e ndërlidhjes së buseve Sinjalet e komandave tregojnë operacionet që do të kryhen. Llojet e zakonshme të telave të kontrollit përfshijnë:  Shkrimi në memorie: bën shkrimin e të dhënave që gjenden në bus në vendin e adresuar  Leximi në memorie: bën që të dhënat prej vendit të adresuar të vendosen në bus  Shkrimi në H/D: bën që të dhënat prej busit të vendosen jashtë në portin e adresuar për H/D  Leximi në H/D: bën që të dhënat të vendosen prej portit të adresuar për H/D në bus  Konfirmimi i bartjes: tregon që të dhënat janë pranuar prej ose vendosur në bus  Kërkesa për shfrytëzimin e busit: tregon që një modul ka nevojë të ketë qasje në busin e kontrollit  Leja për shfrytëzimin e busit: tregon që një moduli i është dhënë për shfrytëzim busi i kërkuar  Kërkesa për ndërprerje: tregon që një ndërprerje është duke pritur  Konfirmimi i ndërprerjes: konfirmon që ndërprerja që ishte në pritje është njohur  Ora: përdoret për sinkronizimin e punëve  Resetimi: inicializon të gjitha modulet. Busi punon në këtë mënyrë. Nëse një modul dëshiron t’i dërgoj të dhëna një moduli tjetër, ai modul duhet të bëjë dy gjëra: (1) të marrë në shfrytëzim busin dhe (2) të dërgoj të dhënat përmes busit. Nëse një modul dëshiron të pranojë të dhëna prej një moduli tjetër, duhet patjetër që (1) të marrë në shfrytëzim busin dhe (2) t’i dërgoj një kërkesë modulit tjetër përmes telave përkatës të kontrollit dhe të adresave. 15 MSc. Valdrin Haxhiu Hierarkitë me shumë busa Nëse një numër i madh i pajisjeve lidhen në bus, performanca do të jetë e dobët. Ekzistojnë dy arsye për këtë: 1. Në përgjithësi, sa më shumë pajisje të lidhen në bus, aq më i gjatë do të jetë busi dhe në atë mënyrë më e madhe do të jetë vonesa e përhapjes. Kjo vonesë përcakton kohën që i’u nevojitet pajisjeve për të koordinuar përdorimin e busit. Kur kontrolli i busit kalon shpesh prej një pajisje në një pajisje tjetër, këto vonesa të përhapjes mund të ndikojnë në performancë. 2. Busi mund të bëhet një pengesë në rastin kur rritja e kërkesës së përgjithshme për bartje i afrohet kapacitetit të busit. Ky problem mund të zbutet deri në një masë duke rritur sasinë e të dhënave që mund të bart busi dhe duke përdorë bus më të gjerë (p.sh. duke zgjeruar busin e të dhënave prej 32 bit në 64 bit). Megjithatë, meqë sasia e të dhënave të krijuara nga pajisjet e lidhura (p.sh. kartela grafike dhe kartela e rrjetës) po rritet shpejt, kjo është një garë që një bus i vetëm është i destinuar për ta humbur. Prandaj, shumica e sistemeve kompjuterike të bazuara në bus, në përgjithësi janë të shtrira në një hierarki. Një strukturë e zakonshme është paraqitur në Figura 3.17a. Ekziston një bus lokal që lidhë procesorin me një memorie kesh dhe që mund të përkrahë një ose më shumë pajisje lokale. Kontrolluesi i memories kesh e lidhë memorien kesh jo vetëm për busin lokal, por e lidhë edhe në busin e sistemit për të cilin janë të lidhur të gjithë modulet e memories DRAM. Në sistemet moderne, keshi është në të njëjtin çip me procesorin dhe në këtë mënyrë një bus i jashtëm ose ndonjë skemë ndërlidhëse nuk nevojitet, edhe pse mund të ekzistojë ndonjë kesh i jashtëm. Përdorimi i një strukture të keshit e izolon procesorin prej kërkesës për t’ju qasur shpesh memories DRAM. Në këtë mënyrë, memoria DRAM mund të largohet nga busi i jashtëm e të vendoset në busin e sistemit. Në këtë mënyrë, bartjet për H/D te dhe prej memories DRAM përgjatë busit të sistemit nuk përzihen në aktivitetin e procesorit. Është e mundur të lidhen kontrolluesit për H/D drejtpërdrejtë në busin e sistemit. Një zgjidhje më efiçiente është që për këtë qëllim të përdoret një apo më shumë busa zgjerues. Pika e kontaktit në një bus zgjerues i ruan përkohësisht bartjet e të dhënave në mes busit të sistemit dhe kontrolluesve për H/D në busin zgjerues. Ky rregullim i lejon sistemit që të përkrahë pajisje të ndryshme për H/D dhe në të njëjtën kohë të izolojë trafikun memorie – procesor prej trafikut për H/D. Figura 3.17a tregon disa shembuj të zakonshëm të pajisjeve për H/D që mund të lidhen në busin zgjerues. Lidhjet e rrjetit përfshijnë rrjetët lokal (LAN) si Ethernet me shpejtësi 10 Mbps dhe lidhjet në rrjetët me shtrirje të gjerë (WAN) sikur një rrjet që bën rrugëtimin e paketave me të dhëna. Busi SCSI (small computer system interface) është një lloj i busit që përkrahë disqet lokale dhe pajisje periferike të tjera. Një port serik do të mund të përdorej për të përkrahur një printer ose skaner. Kjo arkitekturë tradicionale e busit është majftueshëm efiçiente, por fillon të ketë probleme kur pajisjet për H/D kanë shumë e më shumë performancë të lartë. 16 MSc. Valdrin Haxhiu (a) Arkitektura tradicionale e busit (b) Arkitektura e performancës së lartë Figura 3.17 – Shembuj të konfigurimeve të busit Si përgjigje ndaj këtyre kërkesave në rritje, një qasje e rëndomtë që përdoret nga industria është që të ndërtohet një bus i shpejtësisë së madhe i cili integrohet mirë me pjesën tjetër të sistemit, duke pasur nevojë vetëm për një urë lidhëse në mes busit të procesorit dhe busit të shpejtësisë së lartë. Figura 3.17b tregon një realizim tipik të kësaj qasjeje. Edhe në këtë rast, ekziston një bus lokal që lidhë procesorin me një kontrollues të keshit, i cili lidhet me një bus të sistemit që përkrahë memorien DRAM. Kontrolluesi i keshit është i integruar në një urë ose pajisje për ruajtje të përkohshme, që lidhet në busin e shpejtësisë së lartë. Ky bus përkrahë lidhjet në LAN 17 MSc. Valdrin Haxhiu të shpejtësisë së lartë, si Ethernet i shpejt me shpejtësi 100 Mbps, kontrolluesit për video dhe grafikë të stacioneve punuese, si dhe kontrolluesit e kontaktit në buset lokal periferik, përfshirë SCSI dhe FireWire. Mënyra e fundit është rregullim i një busi të shpejtësisë së lartë i dizajnuar posaçërisht për të përkrahur pajisje për H/D me kapacitet të lartë. Pajisjet me shpejtësi të vogël përsëri përkrahen përmes një busi zgjerues, me pika kontakti që ruajnë përkohësisht trafikun në mes busit zgjerues dhe busit të shpejtësisë së lartë. Përparësia e këtij rregullimi është se busi i shpejtësisë së lartë i afron me procesorin pajisjet me kërkesa të mëdha dhe në të njëjtën kohë është i pavarur nga procesori. Kështu që, ndryshimet në shpejtësi në mes procesorit dhe busit të shpejtësisë së lartë dhe përcaktimet e telave të sinjaleve tolerohen. Ndryshimet në arkitekturën e procesorit nuk ndikojnë në arkitekturën e busit të shpejtësisë së lartë dhe anasjelltas. 18 MSc. Valdrin Haxhiu Referenca Materiali është marrë nga kapitulli 3 (faqe 66) i librit Computer Organization and Architecture Designing for Performance të autorit William Stallings. 19

Tags

computer architecture computer systems von neumann
Use Quizgecko on...
Browser
Browser