Maskinvaredelen av INF 3: oversikt og innhold () Boolsk algebra: Regning med og, og AND, OR og NOT Analyse og design av logiske kretser: AND, OR og NOT som byggeblokker Hukommelse og sekvensiell logikk: Konstruksjon av RAM og minnekretser von Neuman modellen: Generisk CPU Organisering og design av CPU Oppbygging av en virkelig CPU 3.9.23 INF 3
Maskinvaredelen av INF 3: oversikt og innhold (2) Moderne datamaskiner Diverse knep, triks og metoder som brukes Input/output Transport av data ut og inn av datamaskiner Periferutstyr Harddisker, DVD, CD-ROM Pentium og PowerPC CPU er To av de vanligste CPU-typene Bruker bottom-up tilnærming: Enkle deler settes sammen til større og mer kompliserte enheter. Kan være litt vanskelig å få oversikten til å begynne med! 3.9.23 INF 3 2
Dagens temaer Dagens emner er hentet fra Patt & Patel kapittel 4 og 5 (side 75-4): Intern hukommelse (RAM) Organisering av CPU: von Neuman-modellen Komponenter i von Neuman Utføring av Instruksjoner LC-2 arktiekturen i mer detalj 3.9.23 INF 3 3
Intern hukommelse () Viktig å forstå hvordan hurtigminnet (RAM) fungerer for å skjønne hvordan CPU en er designet. Sentrale begreper er adresserbarhet og adresserom Adresserbarhet: Antall bit som kan refereres til eller aksesseres samtidig i én operasjon. Antall bit som kan refereres til i én operasjon kalles CPU ens ordlengde, og kalles gjerne et ord. Eksempel De fleste maskiner kan adressere 32 bit i hukommelsen ad gangen, m.a.o. 32-bits ordlengde. De fleste CPU er kan også referere til halvord (halvparten antall bit i et ord) og byte (8 bit). Nye CPU er (f.eks Pentium 4) har 64 bits ordlengde. 3.9.23 INF 3 4
Intern hukommelse (2) Adresserom: Antall ord en CPU kan referere til totalt. Adresserommet er bestemt av antall adresselinjer CPU en har. En adresselinje er et digitalt signal som brukes til å velge lagerlokasjoner. Eksempel Med 8 adresselinjer kan man adressere 2 8 =256 ulike ord. Med 28 adresselinjer kan man adressere 2 28 =268,435,456 ulike ord, dvs 256 M ord. Med 32 adresselinjer kan man adressere 2 32 =4,294,967,296 ulike ord, dvs 4 G ord Ingen sammenheng mellom antall ulike ord som kan adresseres, og antall bit i hvert ord. OBS: Vanlig å angi minnestørrelse i antall byte istedenfor enn i antall ord! 3.9.23 INF 3 5
Intern hukommelse (3) RAM er en matrise av lagerceller hvor man velger rader og kolonner for skriving/lesing Enable D 3 in D 2 in D in D in a a a n Dekoder bit bit bit bit bit bit bit bit Adresserom: Antall rader bit bit bit bit D 3 out D 2 out D out D out Adresserbarhet: Antall kolonner 3.9.23 INF 3 6
von Neuman-modellen Oppdeling av en datamaskin i fem mindre enheter: ) Hukommelse 2) Prosesseringsenhet 3) Input 4) Output 5) Kontollenhet Nesten alle moderne datamaskiner bygget opp med disse funksjonelle enhetene. Input Hukommelse MAR MDR Output Prosesseringsenhet TEMP ALU PC Kontrollenhet IR 3.9.23 INF 3 7
Hukommelse Hukommelsesenheten er forbundet til resten av datamaskinen gjennom adressebussen og databussen. Adressebussen identifiserer en lokasjon eller et ord i hukommmelsen. Databussen transporterer bitmønsteret som skal leses fra/skrives til hukommelsen. Ved lesing legges adressen til ordet som skal leses først inn i MAR (Memory Address Register). Deretter blir ordet som er lest fra hukommelsen lagt over i MDR (Memory Data Register). Ved skriving legges adressen til lokasjonen det skal skrives til i MAR, mens bitmønsteret som skal skrives inn i hukommelsen legges inn i MDR. MAR og MDR er grensesnittet mellom prosesseringsenheten og hukommelsen, dvs prosesseringsenheten skriver/leser ikke direkte fra hukommelsen. 3.9.23 INF 3 8
Prosesseringsenheten Prosesseringsenheten består av en eller flere ALU er og midlertidig lagerceller (registre). ALU en utfører aritmetiske og logiske beregninger på variable som ligger i registrene, og til å beregne adresser under programutførelse ALU en arbeider på ord av samme lengde som maskinens ordlengde, og spesial-operasjoner på byte og halvord. Siden ALU en skriver/leser til/fra registre blir CPUen mer effektiv med mange registere (trege RAM-celler behøves sjeldnere) Moderne prosessorer bruker en egen ALU for å gjøre adresseberegninger (adresse til neste instruksjon). 3.9.23 INF 3 9
Kontrollenhet Kontrollenheten sørger for at styresignaler har riktig verdi til rett tid. Kontrollenheten inneholder blant annet to registre kalt programteller (PC) og instruksjonsregister (IR). Programtelleren inneholder adressen til neste instruksjon som skal utføres. Instruksjonsregisteret inneholder instruksjonen som eksekveres i øyeblikket. Kontrollenheten styrer også input og output-enheter. En del kontrollfuksjoner er distribuert og innebygget i de andre enhetene. 3.9.23 INF 3
Input og output (I/O) Input kan komme fra en rekke enheter som f.eks mus, tastatur, CD-ROM, DVD, skanner, nettverkskort, floppydisk, harddisk osv. En datamaskin må ha minst én input-enhet for å sende informasjon (både program og data) til CPUen. Output kan sendes til skjerm, nettverk, lydkort, harddisk, CD-ROM, DVD, magnettape, floppydisk etc. Datamaskin ha minst én output-enhet for å presentere resultater fra beregninger. Ulike I/O enheter har svært forskjellige egenskaper (hastighet, datatype, størrelse) avhengig av bruksområde. 3.9.23 INF 3
LC-2 fra et von Neuman perspektiv 3.9.23 INF 3 2
Instruksjonseksekvering () I en von Neuman-maskin ligger både instruksjoner og data i samme hukommelse og er kun bitmønstre sett utenfra. Kontroll-enheten holder rede på om et område inneholder variable eller instruksjoner. Informasjon om dette finnes i instruksjonen som eksekveres: En instruksjon deles opp to felt: opkode (også kalt operasjonskode) og operander. Opkoden bestemmer hvilken instruksjon det er, og hvordan operand-feltet skal tolkes. I LC-2 prosessoren ligger opkoden i bit 5-2, m.a.o er det plass for å lagre i alt 6 ulike instruksjonstyper. Hver instruksjonstype kan ha flere varianter, og disse er da bestemt av hva som ligger i operand-feltet. 3.9.23 INF 3 3
Instruksjonseksekvering (2) Eksempel: ADD-instruksjonen (type ) DR = SR + SR2 Bitposisjon innen instruksjonen 5 2 9 8 6 5 4 3 2 DR SR SR2 Opkode = ADD Source register Instruksjonen har 2 source-registre Source register 2 ADD-instruksjonen (type 2) DR = SR+SignExt (Imm) Bitposisjon innen instruksjonen 5 2 9 8 6 5 4 DR SR Imm Opkode = ADD Destinasjonsregister Destinasjonsregister Source register Operand # 2 ligger i Imm(ediate)-feltet Operand # 2 ligger lagret direkte her 3.9.23 INF 3 4
Instruksjonseksekvering (3) Når en instruksjon skal utføres, deles den opp i flere mindre steg som utføres etter hverandre. Ikke alle instruksjoner trenger like mange steg for å eksekveres. Hvert enkelt steg deles opp i mindre steg som utføres sekvensielt. I LC-2-prosessoren består en instruksjonssyklus av følgende faser: ) Hent instruksjonen 2) Dekod instruksjonen 3) Beregn adresse 4) Hent operander 5) Eksekver 6) Lagre resultatet 3.9.23 INF 3 5
) Hent Instruksjonen Neste instruksjon hentes fra hukommelsen og plasseres i IntruksjonsRegisteret: ) PC kopieres over i MAR 2) PC økes med 3) Hukommelsen aksesseres og innholdet i lokasjonen pekt på av MAR plasseres i MDR 4) MDR kopieres over i IR 2) Dekod instruksjonen Kontrollenheten dekoder opkode-feltet for å finne ut hvilken instruksjon som skal eksekveres (én av i alt 6). Styre- og kontrollsignaler for å lese interne registre, utføre riktig instruksjon i ALU etc gis riktig verdier. Dekodingsoperasjonen utføres i ett steg. 3.9.23 INF 3 6
3) Beregn adresse Ved Load/Store eller Jump, kan det være nødvendig å addere et offset til base-adressen for å finne riktig lokasjon. Dette skjer i såfall i denne fasen. 4) Hent operander Avhengig av instruksjonstypen, lastes enten riktig adresse inn i MAR (som fører til at innholdet av operanden blir lagt i MDR), eller styresignaler settes s.a innholdet av interne registrene sendes til ALUen 5) Eksekver instruksjonen ALU en utfører selve operasjonen, f.eks ADD eller AND. Ikke alle instruksjoner har dette steget (f.eks LDR) 6) Lagre resultatet Resultatet fra steg 5 skrives tilbake til et register eller til hukommelsen hvis instruksjonen var av type Store (ST). 3.9.23 INF 3 7
Instruction Set Architecture ISA (Instruction Set Architecture) er grensesnittetet en programmerer ser mot maskinvaren, og definerer funksjoner som er tilgjengelig for programmer (assembler, operativsystem og applikasjonser). ISA definerer også instruksjonstyper, adresseringsmodi, minneorganisering og registersett. LC-2 er svært enkel med 6 registre, 6-bits ordlengde og 3 hovedtyper instruksjoner med i alt 6 instruksjoner. LC-2 kan adressere ialt 64 M ord à 6 bit, dvs 28 KB. Instruksjonene er enten av typen ) Aritmetisklogiske, 2) Hopp eller 3) Dataflytting LC-2 har 3 ett-bits statusregistre N, Z og P som angir om verdien som skrives til et register er negativt, null eller positivt. LC-2 har fem ulike adresseringsmodi (beregning av adressen til en variabel eller operand) 3.9.23 INF 3 8
Registeradressering Operanden(e) ligger i et register (registre). Registernummeret (eller numerene) er en del av instruksjonen: Eksempel ADD DR, SR, SR2 5 2 9 8 6 5 4 3 2 DR SR SR2 3.9.23 INF 3 9
Umiddelbar adressering Brukes for å beregne en adresse (i RAM) og laste den inn i et register. 5 2 9 8 6 5 4 3 2 Reg NR Offset Adressen beregnes relativt til programtelleren Beregningen skjer i to steg: ) De øvre 7 bitene av adressen til instruksjonen konkateneres med konstanten på 9 bit som ligger som en del av instruksjonen. 2) Den framkomne verdien lastes inn i registeret spesifisert av instruksjonen: Eksempel PC IR R5 3.9.23 INF 3 2
Direkte adressering Adressen til en operand (i RAM) er en del av instruksjonen 5 2 9 8 6 5 4 3 2 Reg NR Offset Adressen beregnes relativt til programtelleren Beregningen av adressen skjer i to steg: ) De øvre 7 bitene av adressen til instruksjonen konkateneres med konstanten på 9 bit som ligger som en del av instruksjonen. 2) Den framkomne verdien brukes som adresse til der man skal lese fra (eller skrive til). PC IR MAR R6 RAM MDR 3.9.23 INF 3 2
Indirekte adressering Ved indirekte adressering beregnes adressen til lokasjonen som inneholder adressen til operanden 5 2 9 8 6 5 4 3 2 Reg NR Offset Beregningen skjer i to steg: ) Den. adressen som for direkte adressering. 2) På den fremkomne adressen ligger adressen som man skal bruke som operand: PC IR MAR RAM R3 MDR 3.9.23 INF 3 22
Base+offset adressering 6-bits konstant verdi (del av instruksjonen) legges til innholdet i et baseregister (spesifisert av instruksjonen) for å finne adressen til operanden 5 2 9 8 6 5 Reg Reg 2 Offset Offset-verdien er kun positiv, og zero-extension gjør om offset til et 6-bits tall (fylles kun på med er til venstre) IR + R MAR R6 RAM MDR 3.9.23 INF 3 23
Det finner mange flere varianter av disse grunnleggende adressemodi Mer om adressering ved gjennomgang av CPU er senere i kurset. Kommentar: Utvidelse av fortegn (sign-extension) Hvis konstanten er positiv (bit et lengst til venstre er ), kan man bare fylle på med til venstre for konstanten helt til man får 6 bit. Hvis bit et lengst til venstre i konstanten er, betyr det at konstanten er negativ, og man må da fylle på med helt til man får 6 bit. Dette 3.9.23 INF 3 24
Utvidet LC-2 arkitektur 3.9.23 INF 3 25