4. Memoria Kesh (Cache) Memorie për ruajtjen e të dhënave të shfrytëzuara më shpesh. E vendosur në CPU. Ndërmjetëse në mes të CPU-së dhe memories kryesore.
Karakteristikat e Memories Cash Lokacioni Kapaciteti Njësia e transferit Metoda e qasjes Performasa Tipi fizik Karakteristikat fizike Organizimi.
Lokacioni CPU I brendshëm I jashtëm
Kapaciteti Madhësia e fjalës Numri i fjalëve Njesia natyrale e organizimit Numri i fjalëve Ose bytëve
Njësia e transferit I brendshëm I jashtëm Njësia e adresueshme Zakonisht i definuar nga gjërësia e busit të të dhënave I jashtëm Zakonisht bllok që është shumë më i madh se fjala Njësia e adresueshme Lokacioni më i vogël që mund të adresohet në mënyrë unike.
Metodat e qasjes (1) Sekuenciale Direkte Nis nga fillimi dhe lexo me rradhë Koha e qasjes varet nga lokacioni i të dhënave dhe lokacioni paraprak P.sh. Shiritat magnetik Direkte Blloqet individuale kanë adresë unike Qasja është me kërcim në afërsi plus kërkimi sekuencial P.sh. Disku.
E rastësishme (random) Metodat e qasjes (2) E rastësishme (random) Adresat individuale saktësisht indentifikojnë lokacionet Koha e qasjes nuk varet nga lokacioni i të dhënave dhe lokacioni paraprak P.sh. RAM Asociative Të dhënat gjenden përmes krahasimit me përmbajtjen e një pjese të të dhënave tjera P.sh. Cache.
Memoria interne ose kryesore Hierarkia e memories Regjistrat Në CPU Memoria interne ose kryesore Mund të përfshijë një ose më shumë nivele të cache-it “RAM”. Memoria e jashtme Backing store.
Diagrami i hierarkisë së memories
Performansat e memories Koha e qasjes së memories Koha ndërmjet paraqitjes së adresës dhe marrjes së të dhënave valide Koha e ciklit të memories Mund të jetë e nevojshme një kohë për “rikuperimin” e memories para qasjes së rradhës Koha e ciklit të memories është koha e qasjes + koha e “rikuperimit”. Shpejtësia e transferit (Transfer Rate) Shpejtësia me të cilën të dhënat mund të barten.
Tipet fizike të memories Gjysëmpërçuese RAM Magnetike Disku & Shiriti Optike CD & DVD Tjera Bubble Hologram.
Karakteristikat fizike të memories Dekompozimi (Decay) Ndryshueshmëria (volatility) Fshishmëria (erasability) Shpenzimi i energjisë.
Organizimi i memories Aranzhimi fizik i bitave në fjalë Nuk është gjithmonë i qartë P.sh. I ndërfutur (interleaved).
Përfundimi Sa? Kapaciteti Sa e shpejtë? Time is money Sa e shtrenjtë?
Lista e hierarkisë Regjistrat L1 Cache L2 Cache Memoria kryesore Cache në disk Disk Optik Shirit.
Sa më shpejt? Kompjuteri që ka vetëm RAM statik Nuk i duhet cache Shumë i shpejt dhe shumë i shtrenjtë
Lokaliteti i referencës Gjatë ekzekutimit të programit lokacionet të cilave i qaset programi janë shpesh afër njëra tjetrës P.sh. Unazat.
Cache Sasi e vogël e memories së shpejtë Vendoset mes memories kryesore dhe CPU-së Mund të ndodhet në çipin ose modulin e procesorit.
Stuktura Cache/Memorie kryesore
Operimi i cache-it CPU-ja kërkon përmbajtjen e një lokacioni memorik E kontrollon cache-in për këtë të dhënë Nëse e gjen, e merr nga cache-i (shpejt) Nëse nuk e gjen, e lexon (sjell) bllokun e kërkuar nga memoria kryesore në cache Pastaj e bjen nga cache-i në CPU Cache përfshin informacionin (tags, etiketa) se cili bllok i memories kryesore ndodhet në një bllok të cache-it.
Operacioni i leximit te Cache-it
Dizajni i Cache-it Madhësia Funksioni i mapimit Algoritmi i zëvendësimit Politika e të shkruarit (Write Policy) Madhësia e bllokut Numri i cache-ve
Madhësia Kostoja Shpejtësia Më shumë cache kushton më shumë Me shumë cache, shpejtësia më e madhe (deri në njëfarë mase) sepse Kërkimi i të dhënave në cache merr poashtu kohë.
Organizimi tipik i Cache-it
Krahasimi i madhësive të Cache-it Krahasimi i madhësive të Cache-it Procesori Tipi Viti i lansimit Keshi L1 Keshi L2 Keshi L3 IBM 360/85 Mainframe 1968 16 to 32 KB — PDP-11/70 Minicomputer 1975 1 KB VAX 11/780 1978 16 KB IBM 3033 64 KB IBM 3090 1985 128 to 256 KB Intel 80486 PC 1989 8 KB Pentium 1993 8 KB/8 KB 256 to 512 KB PowerPC 601 32 KB PowerPC 620 1996 32 KB/32 KB PowerPC G4 PC/server 1999 256 KB to 1 MB 2 MB IBM S/390 G4 1997 256 KB IBM S/390 G6 8 MB Pentium 4 2000 IBM SP High-end server/ supercomputer 64 KB/32 KB CRAY MTAb Supercomputer Itanium 2001 16 KB/16 KB 96 KB 4 MB SGI Origin 2001 High-end server Itanium 2 2002 6 MB IBM POWER5 2003 1.9 MB 36 MB CRAY XD-1 2004 64 KB/64 KB 1MB a Two values seperated by a slash refer to instruction and data caches b Both caches are instruction only; no data caches
Funksioni i mapimit (mapping): Pasi që ka më pak linja të keshit se sa blloqe të të dhënave në memorien kryesore, është i nevojshëm një algoritëm planifikues për këto blloqe në linjat e keshit. Shembull për krahasim: Keshi mund të mbajë 64 KBajta Transferimi i të dhënave ndërmjet memories kryesore dhe kesh bëhet në blloqe prej 4 bajtash. Kjo do të thotë se keshi është i organizuar si 16K = 214 linja (rreshta) 4-bajtëshe. Memoria kryesore përbëhet prej 16 MBajtave, me secilin bajt të adresuar direkt me adresë 24-bitëshe (224 = 16M). Kështu, për qëllime të mapimit, memorien kryesore mund ta konsiderojmë se përbëhet prej blloqeve 4M blloqeve 4-bitëshe.
Çdo bllok i memories kryesore mapohet në vetëm një linjë të cache-it Mapimi direkt Çdo bllok i memories kryesore mapohet në vetëm një linjë të cache-it P.sh. Nëse blloku është në cache ai duhet të jetë në një vend të caktuar Adresa përbëhet nga dy pjesë W bita më pak të rëndësishëm identifikojnë një fjalë unike S bitat më të rëndësishëm specifikojnë një bllok memorik Bitat më të rëndësishëm janë të ndarë në fushën e linjave të cache-it r dhe etiketën e s-r bitave (më të rëndësishëm).
Struktura e adresës me mapim direkt Tag s-r Line or Slot r Word w 14 2 8 Adresa 24 bitëshe Identifikuesi 2 bitësh i fjalës (blloku 4 bytësh) Identifikatori 22 bitësh i bllokut Tagu (etiketa) 8 bitësh (=22-14) Slloti ose linja 14 bitëshe Blloqet në një linjë kanë tag fushën e ndryshme Përmbajtja e cache-it kontrollohet duke gjetur linjën dhe duke kontrolluar tagun.
Tabela e linjave të cache me mapim direkt
Organizimi i cache-it me mapim direkt
Shembull i mapimit direkt
Përmbledhje e mapimit direkt Gjatësia e adresës = (s + w) bita Numri i njësive të adresueshme = 2s+w fjalë ose byte Madhësia e bllokut = madhësia e linjës = 2w fjalë ose byte. Numri i blloqeve në memorien kryesore = 2s+ w/2w = 2s Numri i linjave në cache = m = 2r Madhësia e etiketës (tagut) = (s – r) bita
Pro-të dhe contra-t e mapimit direkt I thjeshtë I lirë Lokacioni fiks për bllok të dhënë Nëse programi i qaset shpesh 2 blloqeve që mapohen në të një njejtën linjë, huqjet e cache-it janë shumë të mëdha dhe shpejtësia hit do të jetë e vogël (fenomeni thrasing).
Mapimi asociativ Blloku i memories kryesore mund të futet në cilëndo linjë të cache-it Adresa memorike interpretohet si etiketë dhe fjalë Etiketa identifikon bllokun e memories Çdo etiketë e linjës ekzaminohet për gjetjen e çiftit Kërkimi i cache-it bëhet i shtrenjtë.
Organizimi i cache-it me asociacion të plotë
Shembull i mapi- mit asociativ
Struktura e adresës të mapimit asociativ Word 2 bit Tag (etiketa) 22 bit Etiketa 22 bitëshe ruhet me çdo bllok 32 bitësh të të dhënave Krahasohet fusha e etiketës me rresht të etiketës në cache për të gjetur çiftin 2 bitat me pak të rëndësishëm të adresës përcaktojnë cila fjalë 16 bitëshe kërkohet nga blloku 32 bitësh i të dhënave. P.sh. Address Tag Data Cache line FFFFFC FFFFFC 24682468 3FFF
Përmbledhje e mapimit asociativ Gjatësia e adresës = (s + w) bit Numri i njësive të adresueshme = 2s+w fjalë ose byte Madhësia e bllokut = madhësia e linjës = 2w fjalë ose byte Numri i blloqeve në memorien kryesore = 2s+ w/2w = 2s Numri i linjave në cache = i pacaktuar Madhësia e etiketës = s bit.
Mapimi set asociativ (Set Associative Mapping) Cache është i ndarë në një numër të bashkësive Çdo bashkësi përmban një numër të linjave Një bllok i dhënë mapohet në cilëndo linjë të bashkësisë së dhënë P.sh. Blloku B mund të jetë në cilëndo linjë të bashkësisë i. P.sh. 2 linja për bashkësi Mapim asociativ 2 drejtimësh Një bllok i dhënë mund të jetë në njërën nga 2 linjat në vetëm një bashkësi.
Shembull i mapimit Set Asociativ Numri 13 bitësh i bashkësisë Numri i bllokut në memorien kryesore është moduli 213 000000, 00A000, 00B000, 00C000 … mapohen në të njejtën bashkësi.
Organizimi i cache-it set asociativ dy drejtimësh
Struktura e adreses te mapimi set asociativ Tag 9 bit Set 13 bit Word 2 bit Fusha e bashkësisë përdoret për të përcaktuar bashkësinë e cache-it ku duhet kërkuar. Krahasohet fusha e etiketës për të parë a kemi qëlluar. P.sh. Address number Tag Data Set 1FF 7FFC 1FF 12345678 1FFF 001 7FFC 001 11223344 1FFF
Shembull i mapimit 2 drejtimësh set asociativ
Përmbledhje e mapimit set asociativ Gjatësia e adresës = (s + w) bita Numri i njësive të adresueshme = 2s+w fjalë ose byte Madhësia e bllokut = madhësia e linjës = 2w fjalë ose byte Numri i blloqeve në memorien kryesore = 2s-w/2w=2s Numri i linjave në bashkësi = k Numri i bashkësive = v = 2d Numri i linjave në cache = kv = k * 2d Madhësia e etiketës = (s – d) bita.
Algoritmet e zëvendësimit Kur një bllok i ri sillet në kesh, një nga blloqet ekzistuese duhet të largohet (zëvendësohet). Për mapimin direkt për një bllok të caktuar është vetëm një linjë e mundëshme dhe nuk ka mundësi zgjedhje Çdo bllok mapohet në vetëm një linjë Parimi: Zëvendso atë linjë Për mapimin (set) asociative: I domosdoshëm një algoritëm i zëvendësimit
Algoritmet e zëvendësimit Mapimi direkt Pra: Nuk ka zgjedhje Çdo bllok mapohet në vetëm një linjë Zëvendsohet ajo linjë. 46
Algoritmet e zëvendësimit Asociativ & Set Asociativ Algoritmi i implementuar në hardware (për të përmirësuar shpejtësinë) Least Recently Used (LRU) Zëvendëso bllokun në bashkësi që ka qëndruar më së gjati pa referencë. P.sh. Te cache-i set asociativ 2 drejtimësh Cili nga 2 blloqet është liruar? First in first out (FIFO) Zëvendësoje bllokun që ka qëndruar më së gjati në cache Least frequently used Zëvendëso bllokun që ka pas më së paku të qëlluara (vizita) Random
Politika e shkruarjes (Write Policy) Para se një bllok (rezident në kesh) të mund të zëvendësohet: modeomos – a është ndrruar në kesh e jo në memorien kryesore? Nuk bën të mbishkruhet blloku i cache-it përveç në rastin kur memoria është e azhuruar CPU-të mund të kenë cache individual H/D mund të adresojë direkt memorien kryesore
Shkruarja tejpërtej (Write through) Të gjitha shkruarjet bëhen në memorien kryesore dhe në cache CPU-të mund të monitorojnë trafikun e memories kryesore për ta mbajtur të azhuruar keshin lokal të CPU-së Shumë trafik Shkruarja e ngadalsuar
Shkruarja kthyese (Write back) Azhurimet bëhen së pari vetem në cache Biti i azhurimit për slotin e cache-it setohet kur ndodhë azhrurimi Nëse blloku duhet të zëvendësohet, shkruaj në memorien kryesore vetëm nëse biti i azhurimit është i vendosur Cache-et tjerë dalin nga sinkronizimi H/D duhet ti qasen memories kryesore përmes cache-it 15% të referencave memorike janë shkruarje (për HPC – 33%: shumëzimi vektor > vektor; 50% për transformimin matricor)
Madhësia e linjave Element dizajnues me rëndësi Kur korrigjohet një bllok i të dhënave dhe vendoset në kesh – korrigjohen edhe fjalët e afërta (jo vetëm fjala e dëshiruar) Meqë rritet madhësia e bllokut – në fillim rritet shpejtësia (fjalët rrinë në afërsi të fjalës referencuese për të ardhmën e afërt) Marrëdhënia madhësi e bllokut-shpejtësi: komplekse Madhësia 8 deri 32 bajta (thuhet) se arrinë një ‘optimum’
Paraqitja e keshit origjinal: sistemi tipik me një kesh të vetëm Numri i kesheve Paraqitja e keshit origjinal: sistemi tipik me një kesh të vetëm Keshi shumënivelësh Për shkak të rritjes së dendësisë së pjesës logjike: keshi on-chip Në krahasim me keshin off-chip, redukton aktivitetet e procesorit me busin (rritë shpejtësinë dhe performansën) Shumica e dizajnueseve: kesh on-chip & kesh off-chip (keshi dynivelësh L1(on) dhe L2 (off))
Keshi unik vs Keshi i ndarë (split) Në fillim: një kesh i vetëm për të dhëna dhe instruksione (kesh unik) Avantazhet: shpejtësi më të madhe sepse balanson marrjet në mes të të dhënave dhe instruksioneve Dizajn dhe implementim i thjeshtë Por… kur ka më tepër marrje të instruksioneve sesa të të dhënave: keshi ka prirje të mbushet me instruksione, apo e kundërta Makinat superskalare (Pentium, PowerPC) me ekzekutim të theksuar paralel dhe paramarrje të planifikuar të instruksioneve të ardhëshme (L1 dhe L2)
Pentium 4 Cache 80386 – pa cache në çip 80486 – 8k që përdorin linjat 16 byte-she me organizim set asociativ 4 drejtimesh Pentium (të gjitha versionet) – 2 L1 cache në çip Të dhënat dhe instruksionet Pentium III – L3 cache i shtuar jashtë çipit Pentium 4 L1 cache 8k bytes Linjat 64 bytëshe set asociativ 4 drejtimesh L2 cache Furnizon të dy L1 cache-et 256k Linja 128 byteshe Set asociativ 8 drejtimesh L3 cache on chip
Evolucioni i cache-it te procesorët Intel Problemi Solucioni Procesori në të cilin është zbatuar së pari herë Memoria e jashtme më e ngadalshme se sa busi sistemor. Shtimi i keshit të jashtëm duke shfrytëzuar teknologjinë e memories më të shpejtë. 386 Rritja e shpejtësisë së procesorit, në busin e jashtëm rezulton me një fyt të ngushtë për qasjen në kesh. Zhvendosja e keshit të jashtëm në çip, duke operuar me shpejtësinë e njejtë si të procesorit. 486 Keshi i brendshëm është pak a shumë i vogël, që përshtatet me hapësirën në çip. Shtimi i keshit të jashtëm L2 duke shfrytëzuar teknologjinë më të shpejtë se sa të memories kryesore. Kontesti ndodhë kur Paramarrësi i instruksionit dhe Njësia ekzekutuese, në mënyrë simultane kërkojnë akses në kesh. Në këtë rast, paramarrësi i instruksionit ndalon derisa qasje e njësisë ekzektutuese zë vend. Krijimi i keshit të ndarë të të dhënave dhe të instruksioneve. Pentium Rritja e shpejtësisë së procesorit rezulton në busin e jashtëm si një fyt i ngushtë për qasjen në keshin L2. Krijimi ndaras i busit back-side që punon në shpejtësi më të madhe se sa busi i jashtëm kryesor (front-side). BSB është i dedikuar te keshi L2. Pentium Pro Zhvendosja e keshit L2 çipin e procesorit. Pentium II Disa aplikacione merren me databazat masive dhe duhet të kenë akses rapid te një sasi e madhe të dhënash. Keshet on-chip janë shumë të vegjël. Shtimi i keshit eksternal L3. Pentium III Zhvendos keshin L3 në çip. Pentium 4
Pentium 4 Block Diagram
Procesori Pentium 4 Core Njësia Marrje/Dekodim (Fetch/Decode) Nxjerr (Fetches) instruksionete prej keshit L2 Dekodon brenda mikro operacionet Ruan mikro-operacionet në keshin L1 Logjika ekzekutuese-Out of order Planifikon mikro operacionet Bazuar në të dhënat varen edhe resurset Mund të ekzekutojë në mënyrë spekulative Njësitë ekzekutuese Ekzekuton mikro operacionet Të dhënat prej keshit L1 Rezultatet në regjistra Subsistemi memorik Keshi L2 dhe busi sistemor
Arsyetimi i dizajnit Pentium4 Dekodon instruksionet në RISC si mikro operacione para keshit L1 Mikro operacionet me gjatësi fikse Superscalar pipelining dhe scheduling Instruksionet e gjata dhe komplekse Pentium Përmirësimi i performansës duke dekodimin prej pipelining-ut dhe planifikimit (scheduling) Keshi i të dhënave është “write back” Mund të konfigurohet të shkruaj tej për tej Keshi L1 kontrollohet me 2 bita në regjistër CD = cache disable NW = not write through 2 instruksione të zhvlersojë keshin dhe të rishkruaj L2 dhe L3 8-rrugësh set-associative Madhësia e linjës 128 byte
Organizimi i keshit të PowerPC 601 – single 32kb 8 way set associative 603 – 16kb (2 x 8kb) 2 way set associative 604 – 32kb 620 – 64kb G3 & G4 Keshi L1 64kb 8 way set associative Keshi L2 256k, 512k ose 1M L2 two way set associative G5 32kB keshi i instruksioneve 64kB keshi i të dhënave
PowerPC G5 Block Diagram
5. Memoria e brendshme Memoria e brendshme gjysmëpërçuese SRAM & DRAM Korigjimi i gabimit Shtimi i bitave shtesë për detektim (korrigjim) gabimi Organizimi i avansuar i DRAM-it Për kompensim të shpejtësisë së ulët të DRAM-it (Synchronous DRAM & RamBus DRAM)
Tipet e memories gjysmëpërçuese
Memoria gjysmëpërçuese Memoriet e para: feromagnetike (core) Sot: të gjitha gjysmëpërçuese RAM Emërtimi i gabuar: të gjitha memoriet gjysëmperçuese kanë akses të rastësishëm Lexim/Shkrim Jo e qëndrueshme, Jo stabile, e paparashikueshme (Volatile) Memorie e përkohshme Mund të jetë: Statike ose dinamike
Elementi themelor - qeliza Dy gjendje të mundëshme (shfrytëzohen për paraqitje të 0 dhe 1) Lejojnë shkruarjen në të (vlerën e fundit) leximin (matjen) e daljes
Puna e qelizës memorike
RAM-i Dinamik Bitat ruhen si ngarkesa te kondenzatorëve Ngarkesat zbrazën Kanë nevojë për freskim edhe kur janë nën tension Konstruksioni i thjeshtë Më të vogla (për bit të memoruar) Më të lira Kanë nevojë për qarqe për freskim (dinamike!?) Më të ngadalshme Memoria kryesore Në thelb analoge Niveli i ngarkesës përcakton vlerën
Struktutra e DRAM
Puna e DRAM-it Linja e adresës është aktive kur lexohet ose shkruhet një bit Ndërprerësi tranzistorik i mbyllur (rryma rrjedh) Shkrimi Tension në linjën e bitit I lartë për 1, i ultë për 0 Pastaj sinjalizo linjën e adresës Bartë ngarkesën në kondenzator Leximi Selektohet Linja Adresore Tranzistori kyçet Ngarkesa nga kondenzatori përmes linjes së bitit kalon në sense amplifikator Krahason ngarkesën me vlerën referente për të përcaktuar 0 ose 1 Ngarkesa e kondenzatorit duhet të restaurohet
RAM-i Statik Në kontrast me DRAM – elementet logjike (qarqet) si në mikroprocesor (si ishin??) -FF Bitat ruhen si gjendje të ndërprerësve Nuk ka ngarkesa që mund të zbrazen Nuk ka nevojë për freskim kur janë nën tension Konstruksioni më kompleks Më të mëdha (për bit te memoruar) Më të shtrenjëta Nuk ka nevojë për qarqe për freskim Më të shpejta Cache Digjitale Përdorin flip-flop
Struktura e RAM-it statik
Lidhja e tranzistorëve jep gjendje stabile logjike Gjendja 1 Puna e RAM-it Statik Lidhja e tranzistorëve jep gjendje stabile logjike Gjendja 1 C1 e lartë, C2 e ultë T1 T4 i çkyçur (off), T2 T3 i kyçur (on) Gjendja 0 C2 e lartë, C1 e ultë T2 T3 i çkyçur (off), T1 T4 i kyçur (on) Tranzistorët e linjës adresore T5 T6 janë ndrëprerës Shkrimi – apliko vlerën në B dhe komplimentin në B Leximi - vlera është në linjën B
Te dyjat jostabile, te paqëndrueshme (volatile) SRAM vs DRAM Te dyjat jostabile, te paqëndrueshme (volatile) Furnizimi nevojitet për të ruajtur të dhënat Qelizat dinamike Më të thjeshta, më të vogla Dendësia më e lartë Më të lira Kërkojnë freskim Për njësi të mëdha memorike Statike Më të shpejta Cache
Memoriet vetem për lexim Read Only Memory (ROM) Ruajtja permanente Nonvolatile Një aplikim me rëndësi: Mikroprogramimi (më vonë) Librari të rutinave për funksione të shfrytëzuara më shpesh(subroutines) Programet sistemore (BIOS) Tabelat e funksioneve Përparësia kryesore (kërkesat me madhësi modeste: të dhënat ose programi ruhen permanent në memorien kryesore dhe nuk kanë nevojë të ngarkohen nga paisje sekondare memoruese)
Tipe të ROM-it Shkruhen gjatë prodhimit Te programueshme (një herë) Shumë të shtrenjëta për seri të vogla Te programueshme (një herë) PROM Nevojiten pajisje speciale për progamim Kryesisht vetëm për lexim Të fshijëshme dhe të programueshme (Erasable Programmable, EPROM) Fshihen me rreze UV Elektrikisht të fshijëshme (Electrically Erasable, EEPROM) Shkrimi zgjatë shumë më tepër, se sa leximi Flash memoria Memoria fshihet elektrikisht
Çipi 16 Mbitësh mund të organizohet si 1M fjalë 16 bitëshe Organizimi i detajuar Çipi 16 Mbitësh mund të organizohet si 1M fjalë 16 bitëshe Sistemi 1 bit për çip ka 16 çipa 1Mbitësh, tek i cili biti 1 i secilës fjalë është në çipin 1 e kështu me rradhë… Çipi 16 Mbitësh mund të organizohet si fushë 2048 x 2048 x 4bit Zvoglon numrin e pinave (linjave) adresore Multipleksimi i adresës së rreshtit dhe kolonës 11 pina për adresimin e (211=2048) Shtimi i një pini dyfishon brezin e vlerave kështu që kemi kapacitet të katërfishuar
Freskimi Qarku për freskim është pjesë e çipit Paaftësoje çipin (Disable chip) Numruesi i freskimit (refresh counter) Read & Write back Merr kohë Zvoglon përformasat
DRAM-i 16 Mb (4M x 4) tipik
Paketimi
Organizimi i modulit 256 kByte
Organizimi i modulit 1MByte
Korigjimi i gabimeve Gabim i hardverit Gabim softverik Defekt permanent Gabim softverik I rastit, jo destruktiv Pa dëmtim permanent të memories Detektimi me kodin korigjues të Hammingut (Hamming error correcting code)
Funksioni i kodit për korigjim të gabimit
Oraganizimi i avansuar i DRAM-it DRAM bazik i njejtë si çipat e parë RAM DRAM i avansuar Përmban pak SRAM SRAM ruan vlerat e rreshtit të fundit të lexuar Cache DRAM SRAM komponenta më e madhe Përdoret si cache ose bufer serik
DRAM sinkron (SDRAM) Qasja e sinkronizuar me klok të jashtëm Adresa i paraqitet RAM-it RAM-i i gjenë të dhënat (te DRAM konvencional CPU-ja pret) Pasi SDRAM bartë të dhënat në sinkronizim me klokun e sistemit, CPU-ja e di kur të dhënat do të jenë në dispozicion CPU-ju nuk pret por mund të kryej punë tjera Burst modi i mundson SDRAM-it të aranzhojë rrjedhën e të dhënave të cilat i transferon në bllok DDR-SDRAM dërgon të dhënat dy herë për një cikël të kllokut (në tehun rritës dhe rënës)
SDRAM
Timing-u i leximit në SDRAM
Përdoret për Intel Pentium & Itanium Konkurent kryesor i SDRAM RAMBUS Përdoret për Intel Pentium & Itanium Konkurent kryesor i SDRAM Paketimi vertikal – të gjithë pinat në një anë Shkëmbimi i të dhënave nëpër 28 linja Busi adreson deri 320 RDRAM çipa me 1.6Gbps Blok protokolli asinkron (Asynchronous block protocol) Koha e qasjes 480ns Then 1.6 Gbps
Diagrami RAMBUS
DDR SDRAM SDRAM mund të dërgojë të dhënat vetëm një herë për një impuls të kllokut Double-data-rate SDRAM mund të dërgojë të dhënat dy herë për një impuls të kllokut Tehu rritës dhe tehu rënës
Integron cache të vogël SRAM (16 kb) në çipin DRAM Cache DRAM Mitsubishi Integron cache të vogël SRAM (16 kb) në çipin DRAM Përdoret si cache i vërtetë Linjat 64-bitëshe Efektiv për qasje të zakonshme të rastit Për të përkrahur qasjen serike bllokut të të dhënave P.sh. Rifreskimi i ekranit te bit mapuar CDRAM merr të dhënat nga DRAM dhe i vendos në SRAM bufer Qasja e mëpastajme vetëm nga SRAM
Materiale Guida e RAM-it RDRAM
Memoria e jashtme Disqet magnetike Shiritat magnetikë Disketat CD-të dhe DVD-të Memoriet optike
Llojet e Memoreive të jashtme (eksterne) Disqet magnetike Teknologjia RAID e disqeve (Redundant Array Independent Disc) Removable Optik CD-ROM CD-Recordable (CD-R) CD-R/W DVD Shirita magnetik
Më herët, substrati ishte alumin Tani qelq Disku magnetik Substrati i diskut i mbuluar me material të magnetizueshëm (oksid i hekurit) Më herët, substrati ishte alumin Tani qelq Njëtrajtshmëria e përmirësuar e sipërfaqës Rritë besueshmërinë Zvoglimi i defekteve sipërfaqësore Më pak gabime të leximit/shkrimit Lartësia më e ulët e fluturimit Cilësi më të mira mekanike
Mekanizmi i leximit dhe shkrimit Regjistrimi dhe leximi përmes dredhës përçuese që quhet kokë Koka për lexim/shkrim apo për lexim dhe shkrim veç e veç Gjatë leximit/shrimit, koka është e palëvizshme, pllakat rrotullohen Shkrimi Rryma nëpër dredhë prodhon fushë magnetike Impulset elektrike dërgohen në kokë Pasqyrimi magnetik i impulseve të dërguara regjistrohet në sipërfaqen nën kokë Leximi (tradicional) Fusha magnetike e cila lëvizë në raport me dredhën prodhon rrymë Dredha është e njejte për lexim dhe shkrim Leximi (bashkëkohore) Koka e veçant për lexim afër kokës për shkrim Sensori magnetoresistent pjesërisht i blinduar Rezistenca elektrike varet nga drejtimi i fushës magnetike Puna në frekuencë të lartë Dendësia dhe shpejtësia e rritur
Shkrimi induktiv – leximi MR (Inductive Write MagnetoRestrictive Read)
Organizimi i të dhënave dhe formatizimi Rrathët koncentrik ose trasetë Hapsërat ndarëse mes traseve Zvogëlimi i hapësirës ndarëse për të rritur kapacitetin Numri i njejtë i bitave për trase (dendësia e ndryshueshme e paketimit) Shpejtësia këndore konstante Trasetë e ndara në sektorë Madhësia minimale e bllokut është një sektor Mund të ketë më shumë sektorë për bllok
Shtrirja e të dhënave në Disk (Disk Data Layout)
Shpejtësia e diskut Biti në afërsi të diskut kalon më ngadalë pikën fikse se sa biti në skajin e jashtëm të diskut Distanca e ndryshueshme në mes bitave në trase të ndryshme Rrotullimi i diskut me shpejtësi këndore konstante Trasetë dhe sektorët janë individualisht të adresueshme Koka levizë deri te traseja dhe pret sektorin Në sektorët e jashtëm ka humbje të hapesirës Dendësia më e vogël e të dhënave Përdorimi i zonave për rritjen e kapacitetit Çdo zonë ka numer fiks të bitave për trase Qarqet më komplekse
Mënyrat e ndarjes së diskut
Identifikimi i fillimit të trasesë dhe sektorit Formatizimi i diskut Gjetja e sektorit Identifikimi i fillimit të trasesë dhe sektorit Formatizimi i diskut Informacione shtesë që nuk janë në dispozicion përdoruesit shënojne trasetë dhe sektorët
Formati Winchester i Diskut Seagate ST506
Koka fikse (më rrallë) ose lëvizëse Fiks ose të çvendosëshme Karakteristikat Koka fikse (më rrallë) ose lëvizëse Fiks ose të çvendosëshme Një ose dy anësore (zakonisht) Një ose me shumë pllaka Mekanizmi i kokës Kontaktues (Floppy) Distancë fikse Fluturues (Winchester)
Koka fikse ose lëvizëse e diskut Një kokë për lexim dhe shkrim për trase Kokat të montuara në krah fiks Koka lëvizëse Një kokë për lexim dhe shkrim për një anë të pllakës Koka e montuar në krahun lëvizës
Disku i çvendosshëm dhe fiks Mund të largohet nga ngasja dhe të zëvendësohet me disk tjetër Ofron kapacitet të pakufizuar Transferi i lehtë i të dhënave mes sistemeve Disqet fikse I integruar me ngasjen
Të dhënat merren nga cilindrat Pllakat e shumëfishta Një kokë për anë Trasetë në pozita të njejta relative në pllaka të ndryshme formojnë cilindrin Të dhënat merren nga cilindrat Zvoglon lëvizjen e kokave Rritë shpejtësinë (transfer rate)
Pllakat e shumëfishta
Trasetë dhe cilindrat
Floppy Disku 8”, 5.25”, 3.5” Kapaciteti i vogël Të ngadalshme Deri 1.44Mbyte (2.88M) Të ngadalshme Universal Të lira
Winchester Hard Disk I zhvilluar nga IBM ne Winchester (USA) Njësi e mbyllur Një ose më shumë pllaka Kokat ‘fluturojnë’ mbi jastëkun e ajrit që krijohet për shkak te rrotullimit të diskut Hapësira shumë e vogël mes kokës dhe pllakës Universal Të lirë Memoria e jashtme më e shpejtë Kapaciteti gjithnjë në rritje
=Koha e kërkimit + Vonesa e rrotullimit Transfer rate Shpejtësia Shpejtësia e kërkimit Koha për zhvendosjen e kokës deri te traseja e duhur Vonesa e rrotullimit Pritja që të dhënat të rrotullohen nën kokë Koha e qasjes = =Koha e kërkimit + Vonesa e rrotullimit Transfer rate
Timing-u i transferit H/D të diskut
RAID Redundant Array of Independent Disks Redundant Array of Inexpensive Disks 6 nivele në përdorim Nuk është hierarkik Grup i disqeve që trajtohen si një disk logjik nga ana e sistemit operativ Të dhënat: të distribuara nëpër disqe të ndryshme fizike Kapaciteti redudant mund të përdoret për informacione për paritet
Të dhënat merren nga të gjitha disqet Round Robin striping RAID 0 Nuk ka redundansë Të dhënat merren nga të gjitha disqet Round Robin striping (nxjerrja me garë me sistem qarku) Shpejtësia e rritur Kërkesat për të dhëna që nuk janë në një disk Kërkimi paralel në disqe Të dhënat e kërkuara do të merren nga më shumë disqe
Disqet e pasqyruara (mirroring) RAID 1 Disqet e pasqyruara (mirroring) Të dhënat merren nga disa disqe të veçanta 2 kopje të të dhënave në disqe të veçanta Lexo nga cilido Shkruaj në të dy Defekti zgjidhet lehtë Zëvendëso diskun e prishur dhe ripasqyro Nuk ka nderpreje në punë Shtrenjtë
Disqet janë të sinkronizuara Shiritat shumë të shkurtë RAID 2 Disqet janë të sinkronizuara Shiritat shumë të shkurtë Shpesh një byte/fjalë Korigjimi i gabimit kalkulohet për bitat korrespondues në disqe Shumë redundancë Shtrenjtë Nuk përdoret
RAID 3 I ngjashëm me RAID 2 Vetëm një disk redundant pa marrë parasysh sa është numri i disqeve Biti i thjeshtë i paritetit për çdo grup të bitave korresponduesë Të dhënat në diskun e prishur mund të rekonstruktohen nga të dhënat e padëmtuara dhe informacionet për paritet Vlera të larta për transfer të të dhënave (transfer rates)
RAID 4 Çdo disk punon i pavarur I mirë për kërkesa të mëdha për H/D Shiritat e gjatë Pariteti bit për bit kalkulohet për shirita në çdo disk Pariteti ruhet në diskun e paritetit
RAID 5 I ngjashëm me RAID 4 Pariteti shtrihet përgjatë të gjitha disqeve Alokimi ‘Round robin’ për shiritin e paritetit Zgjidhë problemin e RAID 4 në diskun e paritetit Përdoret në servera të rrjetit
Dy kalkulime të paritetit RAID 6 Dy kalkulime të paritetit Ruhen në blloqe të veçanta në disqe të ndryshme Kërkesat e shfrytëzuesit për N disqe nënkupon (N+2) disqe Disponueshmëria e lartë e të dhënave Tri disqe duhet të prishen që të humbën të dhënat Shkrimi i shtrenjtë
RAID 0, 1, 2
RAID 3 & 4
RAID 5 & 6
Mapimi i të dhënave për RAID 0
Memoria optike: CD-ROM Fillimisht për audio 650 Mbytë japin mbi 70 minuta audio Polikarbonat i mbuluar me alumin Të dhënat ruhen në gropëza Leximi me laser Dendësia e paketimit konstante Shpejtësia konstante lineare
Puna e CD
Shpejtësia e ngasjes së CD-ROM Audio është një shpejtësi (single speed) Shpejtësia konstante lineare 1.2 m/s Traseja (spirala) është e gjatë 5.27km Jep 4391 sekonda (73.2 minuta) Shpejtësitë tjera jepen si shumëfish i kësaj shpejtësie P.sh. 24x
CD-ROM Formati Mode 0=blank data field Mode 1=2048 byte data+error correction Mode 2=2336 byte data
Random Access në CD-ROM E veshtirë Zhvendose kokën në pozitën e duhur Vendos shpejtësinë e saktë Lexo adresën Pozicionohu në lokacionin e kërkuar
CD-ROM: Për dhe kundër Kapaciteti i lartë (?) Prodhohen lehtë, në sasi të mëdha I zhvendosëshëm I fortë (Robust) I shtrenjtë për seri të vogla I ngadalshëm Vetëm për lexim (Read only)
Memoriet tjera optike CD-Recordable (CD-R) CD-RW WORM Të lirë Kompatibil me ngasjet CD-ROM CD-RW Mund të fshihen Ndrrimi i fazës Materiali ka dy nivele të reflektimit për faza të ndryshme
DVD – çka paraqet shkurtesa? Digital Video Disk Përdoret për të treguar player Lexon vetëm video disqe Digital Versatile Disk Përdoret për të treguar disk kompjuterik Lexon disqe kompjuterike dhe video disqe
Shumështresore (Multi-layer) Kapaciteti i lartë (4.7G për shtresë) Teknologjia DVD Shumështresore (Multi-layer) Kapaciteti i lartë (4.7G për shtresë) Filmi i metrazhit të gjatë në një disk Me përdorim të MPEG kompresionit I standardizuar DVD – Writable Probleme me standarde
CD dhe DVD
Shiritat magnetik Qasja serike Të ngadalshëm Shumë të lirë Për backup
Optical Storage Technology Association Internet Resources Optical Storage Technology Association Good source of information about optical storage technology and vendors Extensive list of relevant links DLTtape Good collection of technical information and links to vendors Search on RAID
Universiteti i Prizrenit Fakulteti i Shkencave Kompjuterike Drejtimi - DS Hyrja/Dalja Prof. Dr. Arbnor Pajaziti arbnor.pajaziti@uni-prizren.com
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Hyrja/Dalja
Universiteti i Prizrenit Fakulteti i Shkencave Kompjuterike Drejtimi - DS Detyra nga gj.programuese Assembler Prof. Dr. Arbnor Pajaziti arbnor.pajaziti@uni-prizren.com
Detyra 1 Cilat janë mnemonikët për Motorola 68000 për: Pastro regjistrin A; Vendos akumulatorin A; Ngarko akumulatorin A; Krahaso akumulatorët; Ngarko regjistrin indeksor. Zgjidhja: CLR A STA A LDA A CB A LD X
Detyra 2 Shkruani një rresht të programit në Asembler për: Load accumulator me 20 (hex); Decrement accumulator A; Clear address $0020; ADD accumulatorin e numrin A në adresën $0020. Zgjidhja: LDA A $20 DEC A CLR $0020 ADD A $0020
Detyra 3 Sqaroni operacionet e specifikuara me instruksionet në vijim: STA B $35 LDA A #$F2 CLC INC A CMP A #$C5 CLR $2000 JMP 05, X Zgjidhja: a) Vendos akumulatorin e vlerës B në adresën 0035 b) Ngarko akumulatorin A me të dhënën F2 c) Pasto flamurin bartës d) Shto 1 në vlerën e akumulatorit A e) Krahaso C5 me vlerën e akumulatorit A f) Pastro adresën 2000 g) Kërce adresën e dhënë me index regjistër plus 05
Detyra 4 Shkruani programin në gjuhën programuese Asembler: Zbrit numrin heksadecimal në adresën memorike 0050 nga numri heksadecimal në lokacionin memorik 0060 dhe rezultatin vendose në lokacionin 0070. Shumëzo dy numra 8-bitësh, të vendosur në adresat 0020 dhe 0021 dhe vendose prodhimin, numrin 8-bitësh në lokacionin 0022. Vendos numrat heksadecimalë 0 deri 10 në lokacionet memorike duke filluar nga 0020. Zhvendos bllokun prej 32 numrave duke filluar nga adresa $2000 deri tek adresa e re e fillimit $3000.
Zgjidhjet STA A DIFF ; Vendos diferencën SWI ; Fundi i programit Zbritja e numrave hexadecimalë DATA1 EQU $0050 DATA2 EQU $0060 DIFF EQU $0070 ORG $0010 LDA A DATA1; Merr të zbritshmin SUB A DATA2; Zbrite zbritësin STA A DIFF ; Vendos diferencën SWI ; Fundi i programit
Zgjidhjet b) Shumëzimi i 2 numrave 8-bitësh MULT1 EQU $0020 MULT2 EQU $0021 PROD EQU $0022 ORG $0010 CLR PROD ; Pastro adresën e prodhimit LDA B MULT1 ; Merr numrin e parë SUM LDA A MULT2 ; Merr shumëzuesin ADD A PROD ; Mbledh shumëzuesin STAA PROD ; Vendos rezultatin DECB ; Zvogëlo akumulatorin B BNE SUM ; Degëzo nëse mbledhja nuk është kryer WAI ; Fundi i programit
Zgjidhjet Vendosja e numrave hexadecimalë 0 ÷ 10 FIRST EQU $0020 ORG $0000 CLRA ; Pastro akumulatorin LD X #0 MORE STAA $20,X INX ; Rrit regjistrin e indeksit INCA ; Rritja e akumulatorit CMPA #$10 ; Krahaso me numrin 10 BNE MORE ; Degëzo nëse nuk është baras me zero WAI ; Fundi i programit
Zgjidhjet d) Zhevdosja e bllokut prej 32 numrave ORG $0100 LDX #$2000 ; Vendos pointerin (adresa) LOOP LDAA $00,X ; Ngarko të dhënën STAA $50,X ; Vendos të dhënën INX ; Rrite indeksin e regjistrit CPX $3000 ; Krahaso (adresa e re e fillimit) BNE LOOP ; Degëzo SWI ; Fundi i programit
Detyra 4 Shkruani në gjuhën programuese subrutinën që do të përdoret për të gjeneruar vonesën kohore dhe që mund të vendoset në çfarëdo vlere. Zgjidhje: YY EQU $?? ; Vlera e zgjedhur për të dhënë vonesën ; kohore të kërkuar SAVEX EQU $0100 ORG $0010 STA SAVEX ; Ruaj akumulatorin A LDDA YY ; Ngarko akumulatorin A LOOP DECA ; Zvogëlo akumulatorin A BNE LOOP ; Degëzo nëse nuk është baras me zero LDA SAVEX ; Rivendos akumulatorin RTS ; Kthehu te programi kryesor
Detyra 5 Shkruani në gjuhën Asembler rutinën që mund të përdoret me qëllim që nëse hyrja nga sensori me adresën 2000 është lartë, programi kërcen te një rutinë duke filluar me adresën 3000, dhe nëse është poshtë programi vazhdon. Zgjidhje: LDA $2000 ; Lexo të dhënat hyrëse AND A #$01 ; Masko të gjithë bitat përveç 0 BEQ $03 ; Nëse ndërprerësi është poshtë, degëzo mbi JMP që ; është 3 ; vija programuese JMP $3000 ; Nëse ndërprerësi është lartë nuk ka degëzim dhe ; kështu ekzekuto JMP CONTINUE
Kapitulli 10. Setet e instruksionit Karakteristikat dhe funksionet Karakteristikat e instruksioneve të makinës Tipet e operandëve Tipet e të dhënave te Pentiumi dhe PowerPC Tipet e operacioneve Gjuha asembler
Elementet e instruksionit të makinës Kodi operacional (Opcode) Elementi esencial i një instruksioni të kompjuterit, që specifikon operacionin që duhet kryer (p.sh. ADD, I/O); burimin dhe destinacionin e referencës së operandit Opcode-i specifikon operacionet në një nga kategoritë: aritmetike ose logjike; zhvendosjen e të dhënave në mes dy regjistrave, regjistrit dhe memories; H/D; si dhe kontrolli. 3
Referenca në operandin burimor Specifikon një regjistër ose lokacion memorik të operandit të të dhënave. Tipi mund të jetë: adresa, numra, karaktere ose të dhëna logjike Referenca e operandit të rezultatit Karakteristika e zakonshme e procesorit është shfrytëzimi i stekut (mund të shihet ose jo prej programerit) Referenca në instruksionin e ardhshëm I tregon procesorit ku të marrë instruksionin e ardhshëm 3
Arkitektura dhe programimi Shumë prej elementeve të arkitekturës nuk shihen nga ana e programerit, kur ai programon në gjuhë të larta programuese (C, C++, C#,Pascal,…) Kufiri i ‘takimit’ në mes të dizajnerit dhe programerit: gjuha e makinës. Të dy e shohin të njejtën makinë. Këndvështrimi i dizajnerit: seti i instruksionit ofron kërkesat funksionale të procesorit. Programeri që programon në gjuhën e makinës (assembler) sheh strukturën e memories dhe regjistrat.
Një kategorizim i procesorëve Në bazë të stilit të ruajtjes së vlerave numerike shumëbajtëshe: Big-endian Bajtat më të rëndësishëm ruhen në adresat numerike më të ulta. Little-endian Bajtat më të rëndësishëm ruhen në adresat më të larta. Bi-endian Mund t’i përkrahë të dy stilet.
Karakteristikat e instruksionit të makinës Operacioni i procesorit përcaktohet nga instruksionet që e ekzekutojnë, që i referohemi si instruksionet e makinës (kompjuterit). Koleksioni i instruksioneve të ndryshme që mund të ekzekutojë procesori, njihet si seti i instruksionit të procesorit. Secili instruksion duhet të përmbajë informacionet që kërkohen nga procesori për ekzekutim.
Elementet e një instruksioni të makinës Kodi i operacionit: specifikon operacionin që duhet të kryhet (p.sh. ADD, I/O). Operacioni paraqitet me një kod binar, i njohur si opcode. Burimi i operandit: operacioni mund të përfshijë një apo më tepër operande dhe duhet ditur se cilët janë operandet hyrës. Rezultati i operandit: operacioni mund të prodhojë një rezultat. Instruksioni i ardhshëm: i tregon procesorit ku të marrë instruksionin e ardhshëm, pasi të jetë kompletuar instruksioni aktual.
Diagrami i gjendjeve të ciklit të instruksionit
Operandi burimor dhe i rezultatit gjendet: Në memorien kryesore ose virtuale Në regjistrat e procesorit Në paisjet H/D
Paraqitja e instruksioneve Në kodin e makinës çdo instruksion ka varg të ndryshëm bitash Programerët përdorin prezentimin simbolik p.sh. ADD, SUB, LOAD, MPY, DIV, STOR Operandet mund të paraqiten edhe në këtë mënyrë: P.sh. ADD A,B Që do të thotë: vlerën në lokacionin B shtoja përmbajtjes së regjistrit A. B i referohet adresës së lokacionit në memorie A i referohet një regjistri të pjesërishëm Operacioni kryehet në përmbajtjen e lokacioneve 5
Formati i thjeshtë i instruksioneve
Tipet e instruksioneve Shembull: X=X+Y (në gjuhë të lartë programuese) Ky operacion kryhet me tri instruksione: Ngarko (load) regjistrin me përmbajtjen e lokacionit memorik 513l Shto (add) përmbajtjen e lokacionit memorik 514 në regjistër; Ruaje (store) përmbajtjen e regjistrit në lokacionin memorik 513. Lidhja në mes gjuhëve të larta dhe gjuhës së makinës: Pra, një operacion i thjeshtë mund të kërkojë disa instruksione.
Tipet e instruksioneve Procesimi i të dhënave: instruksionet aritmetike dhe logjike Ruajtja e të dhënave instruksionet e memories Zhvendosja e të dhënave instruksionet H/D Kontrolli i rrjedhës së programit testimi dhe degëzimi i programit. 6
Numri i adresave (a) 3 adresa Operandi 1, Operandi 2, Rezultati a = b + c; Mund të jetë edhe e katërta – instruksioni i ardhshëm (zakonisht implicit) Nuk është i përhapur Kërkon fjalë të gjatë të instruksionit për të përmbledhur të gjitha. 7
Numri i adresave (b) 2 adresa Një adresë shërben si adresë e operandit dhe rezulatit të procesimit a = a + b Shkurton gjatësinë e instruksionit Ka nevojë për punë shtesë dhe hapësirë për ruajtjen e përkohshme të rezultatit. 8
Numri i adresave (c) 1 adresë Adresa e dytë është implicite Zakonisht regjistër (accumulator) E zakonshme te procesorët e hershëm. 9
Numri i adresave (d) 0 (zero) adresa Të gjitha adresat janë implicite Përdoren në një organizim special të memories, të njohur si stek (stack) Stack: një set i lokacioneve ‘last-in-first-out’ p.sh. push a push b add pop c c = a + b 10
(c) Instruksionet tri-adresëshe
Sa adresa? Më shumë: Më pak: Instruksione më komplekese Më shumë regjistra Operacione me operand në regjistër janë më të shpejta Më pak instruksione për program Më pak: Instruksione më të thjeshta Më shumë instruksione për program Marrja / ekzekutimi më i shpejtë i instruksioneve. 11
Dizajni i repertorit të instruksionit Dizajni i setit: kompleks, sepse afekton në shumë aspekte të sistemit kompjuterik. Definon: shumë funksione që kryen procesori. Repertori i operacioneve Sa dhe cilat operacione i ofron? Çka mund të bëjnë? Sa janë komplekse? Tipet e të dhënave Llojet e ndryshme të të dhënave ndaj të cilave mund të kryhen operacione. 12
Reduced Instruction Set Computer Complex Instruction Set Computer Formatet e instruksioneve Gjatësia e fushës së kodit operacional Numri i adresave Gjatësia e fushave të ndryshme Regjistrat Numri i regjistrave të CPU-së Cilat operacione mund të kryhen në cilët regjistra? Adresimi Modi (modet) sipas të cilit është specifikuar adresa e një operandi RISC CISC Reduced Instruction Set Computer Complex Instruction Set Computer 13
Instruksionet e makinës operojnë në të dhëna. Tipet e operandëve Instruksionet e makinës operojnë në të dhëna. Kategoritë më të rëndësishme të të dhënave: Adresat Numrat Integer (fixed point); floating point; decimal (BCD) Karakteret ASCII, EBCDIC, etj. Të dhëna logjike Bitat ose flag-at (flags) 14
Tipet e të dhënave të Pentiumit Pentiumi mund të kuptojë të dhënat: 8 bit (byte) 16 bit (word) 32 bit (doubleword) 64 bit (quadword) Adresimi është sipas njësisë 8 bitëshe Fjala e dyfishtë 32 bitëshe lexohet në adresa të pjesëtueshme me 4. Për fleksibilitet dhe shfrytëzim më të mirë, nuk lejohen adresat me numër tek të bitave. Stili (si te të gjithë 80x86) little-endian: bitat më pak të rëndësishëm ruhen në adresat më të ulëta. 15
Tipet specifike të të dhënave (Pentium) Gjeneral – përmbajtja arbitrare binare Integer – vlerë binare duke shfrytëzuar 2 komplementin Ordinal – integer pa parashenjë Unpacked BCD – Një numër për byte Packed BCD - 2 BCD numra për një byte Near Pointer – zhvendosja 32 bitëshe brenda segmentit Bit fushe Byte String Floating Point 16
Formatet e të dhënave numerike të Pentiumit 17
Shndërrime (Conversion) H/D Kontroll i sistemit (System Control) Tipet e operacioneve Transferi i të dhënave Aritmetike Logjike Shndërrime (Conversion) H/D Kontroll i sistemit (System Control) Transferi i kontrollit. 18
Mund të jenë instruksione të ndryshme për lëvizje të ndryshme Transferi i të dhënave Specifiko Burimin Destinacionin Sasinë e të dhënave Mund të jenë instruksione të ndryshme për lëvizje të ndryshme p.sh. IBM 370 Ose një instruksion dhe adresa të ndryshme p.sh. VAX. 19
Mbledhja, zbritja, shumëzimi, pjesëtimi Signed Integer Floating point Aritmetike Mbledhja, zbritja, shumëzimi, pjesëtimi Signed Integer Floating point Mund të përfshijë Inkrementimi (a++) Dekrementimi (a--) Negacioni (-a) Vlera absolute. 20
Operacionet Shift dhe Rotate
Logjike Operacione mbi bita AND OR NOT XOR Test Compare Shift Rotate 21
Shndërrimet (Conversions) Instruksionet e shndërrimit: ato që ndërrojnë formatin ose operimin në format. p.sh. Binar në Decimal Instruksioni TR (translate) te S/390: mund të përdoret për të shndërruar të dhënat prej kodit 8-bitësh në një kod tjetër: TR R1, R2, L 22
Mund të jenë instruksione specifike Instruksionet H/D Mund të jenë instruksione specifike Mund të kryhen duke përdorur instruksionet për zhvendosjen e të dhënave (H/D e mapuar në memorie) Mund të ekzekutohen nga kontrolleri i veçantë (DMA). 23
Të rezervuara për përdorim nga sistemi operativ Kontrolli i sistemit Instruksionet e kontrollit të sistemit: ato që mund të ekzekutohen vetëm deri sa procesori është në një gjendje të privilegjuar ose është duke ekzekutuar një program në një zonë të privilegjuar të memories (Instruksione të privilegjuara). Ring 0 në 80386+ Kernel mode Të rezervuara për përdorim nga sistemi operativ 24
Thirrja e subrutinave (procedurave) Transferi kontrollit Degëzimi p.sh. kalo në x nëse rezultati është zero Kapërcimi (skip) p.sh. inkremento dhe kapërce nëse rezultati është zero ISZ Register1 Branch (BRP X; BRN X; BRZ X; BRO X; BRE R1,R2,X) ADD A Thirrja e subrutinave (procedurave) Programi më i ekonomizuar Modulariteti. 25
Instrusioni i degëzimit
Thirrja e procedurave
Përdorimi i stekut
Rritja e stekut gjatë përdorimit të procedurave shembull P dhe Q
Me çfarë radhe i lexojmë numrat të cilët zënë më shumë se një byte Rendi i byte-ve Me çfarë radhe i lexojmë numrat të cilët zënë më shumë se një byte p.sh. numrat heksadecimal që të mund t’i lexojmë më lehtë 12345678 mund të ruhet në 4 lokacione 8 bitëshe në këto mënyra: 27
Rendi i byte-ve (shembull) Adresa Vlera (1) Vlera (2) 184 12 78 185 34 56 186 56 34 187 78 12 p.sh. lexo nga lartë poshtë apo nga poshtë lartë? 28
Emrat e rendeve të byte-ve Problemi quhet Endian Big-endian: Sistemi në të majtë e ka byte-in me peshë më të vogël në adresë më të madhe (78 në adresën 187) Little-endian: Sistemi në të djathtë e ka byte-in me peshë më të vogël në adresën më të vogël (78 në adresën 184) 29
Shembulli vendosjes së një C struct
Këndvështrim alternativ i memories
Pentium (80x86), VAX janë little-endian Standard ? Pentium (80x86), VAX janë little-endian IBM 370, Motorola 680x0 (Mac) dhe shumica e RISC janë big-endian Interneti është big-endian 30
Instruksionet janë numra të thjeshtë binarë të ruajtur në kompjuter. Gjuha asembler Një procesor mund të kuptojë dhe të ekzekutojë instruksionet e makinës. Instruksionet janë numra të thjeshtë binarë të ruajtur në kompjuter. Nëse programeri dëshiron të programojë direkt në gjuhë të makinës, duhet të futë programin në formën binare. Nivelet: gjuha e makinës (binare) gjuha simbolike gjuha asembler gjuhët e larta (kompajleri)
Shembull: llogaritja e formulës N = I + J + K
Universiteti i Prizrenit Fakulteti i Shkencave Kompjuterike Drejtimi - DS Programimi i Sistemeve Llojet e regjistrave Prof. Dr. Arbnor Pajaziti arbnor.pajaziti@uni-prizren.com
Regjistrat me destinacion të përgjithshëm 8086 CPU ka 8 regjitra me destinim te pergjithshem, ku secili ka emrin e tij AX – Regjistri akumulator (i ndare ne AH / AL) BX – Regjistri baze i adresave (i ndare ne AH / AL) CX - Regjistri i numerimit ( i ndare ne CH / CL) DX – Regjistri i te dhenave (i ndare ne DH / DL) SI – Regjistri i indeksit te burimit DI – Regjistri i indeksit te destinacionit BP – Treguesi baze SP – Treguesi i stekut. AX - the accumulator register (divided into AH / AL). BX - the base address register (divided into BH / BL). CX - the count register (divided into CH / CL). DX - the data register (divided into DH / DL). SI - source index register. DI - destination index register. BP - base pointer. SP - stack pointer ----------- Pavaresisht emrit te tyre ato mund te perdoren per cfaredo qellimi Regjistrat jane 16 bitesh / 2 bajtesh / 1 fjalesh (1 Word = 2 Byte = 16 bit) H per High 8 bitat e pare te fjales, L per Low 8 bitat e fundit te fjales Regjistrat jane brenda CPU-se, shpejtesia e qasjes shume me e madhe se qasja ne memorie ---------- Nje pershkrim me praktik ax (Accumulator) : Most arithmetic and logical computations use this register bx (Base Reg) : Normally used to store base addresses (later) cx (Count Reg) : Used for counting purposes, like number of iterations while looping, number of characters in a string, etc. dx (Data Reg) : In my opinion, a true general purpose register. si (Source Index) : Used as a pointer to access memory indirectly di (Dest. Index) : Like the si register, this is also used for indirectly accessing the memory bp (Base Pointer) : Like the bx register, this is also used to store base addresses. Generally, this register is used to access local variables in a procedure. sp (Stack Pointer) : A very important register. Maintains the program stack, and so should be used carefully. ---------
Segment regjistrat Detyra primare: drejtimi ne blloqet e qasshme te memories Llojet: CS – tregon segmentin ku eshte programi ne ekzekutim DS – tregon segementin ku jane te definuara variablat ES – Extra segment regjister, koduesi e cakton qellimin e shfryt. SS – tregon segmentin ku gjendet stack-u Segment regjistrat se bashku me regjistrat e pergjithshem shfrytezohen per percaktimin e adreses efektive BX, SI dhe DI punojne me DS; BP dhe SP me SS Zakonisht adresimi ne memorien fizike kerkon me shume se 16 bit per shkak te madhesise se memories; p.sh adresa 12345h kerkon 17 bit gje qe e pamundeson adresimin ne regjistrat 16 bitesh. Ne kete rast DS = 1230h, SI = 0045h. CPU llogarit DS * 10h + SI Adresa efektive formohet nga dy regjistra (segment + pergjithshem) ------ Nje pershkrim me praktik The cs (Code Segment) register points at the segment containing the currently executing machine instructions. Since you can change the value of the cs register, you can switch to a new code segment when you want to execute the code located there. The ds (Data Segment) register generally points at global variables for the program. You can change the value of the ds register to access additional data in other segments. The es (Extra Segment) register is an extra segment register. 8086 programs often use this segment register to gain access to segments when it is difficult or impossible to modify the other segment registers. The ss (Stack Segment) register points at the segment containing the 8086 stack.The stack is where the 8086 stores important machine state information, subroutine return addresses, procedure parameters, and local variables. In general, you do not modify the stack segment register because too many things in the system depend upon it. --------
Regjistrat me destinim të veçantë Destinimi i tyre per pune te veçanta; qasja ne to jo e drejtperdrejte Llojet: IP – treguesi i instruksionit ne ekzekutim Flags register – percakton gjendjen e mikroprocesorit IP punon se bashku me CS per te treguar instruksionin ne ekzekutim Flags register – modifikohet automatikisht nga CPU, pas ekzekutimit te nje operaconi aritmetikor, me qellim percaktimin e tipit te rezultatit dhe percaktimin e kushteve per transfer te kontrollit ne pjese tjera te programit.
Kombinimet që përkrahen Qasja në memorie Kombinimet që përkrahen Segmentimi Modet e adresimit Segmentimi i memories sherben per t’i mbajtur te dhenat e ndara fizikisht e per t’iu qasur me lehte atyre. P.sh. Memoria ndahet ne segmente 64 kB (2^16 = 64 kB), ku kemi 64 kB segmente apo 65536 segment, dhe 64 kB memorie brenda segmentit, keshtu qe bashkimi i sgem. regjistrave dhe regjitrave te perhershem na jep nje adrese te caktuar.
MOV instruksioni (1/4) Kopjon vleren e operandit te pare ne operandin e dyte MOV op1, op2 Op2 mund te jete nje vlere te atyperatyshme, vlere nga regjistri i pergjithshem, apo lokacioni memorik Op1 mund te jete nje regjister i pergjithshem apo lokacion memorik Op1 dhe op2 duhet te jene te madhesive te njejta
MOV instruksioni (2/4)
MOV instruksioni (3/4) CS dhe IP nuk mund te perdoren si op1 (operand qe marrin vlere)
MOV instruksioni (4/4)