Datorarkitektur - en inledning Organisation av datorsystem: olika abstraktionsnivåer System S den mest abstrakta synen på systemet A B C Ett högnivåperspektiv på systemet a1 b1 c1 a2 b3 b2 c2 c3 En mera detaljerad syn på systemet A. Soini/Introduktion till Datateknik/cs6 1
Von Neumann-arkitekturen: Von Neumann-arkitekturen ligger fortfarande som bas på de flesta av dagens datorer. En dator baserad på denna arkitektur har följande karakteristika: Fyra delsystem: minne, I/O (input/output), ALU (aritmetisk-logisk enhet), styrenhet (kontrollenhet) Obs! Vissa böcker skiljer sekundärminnen som sin egen kategori; här räknas dem i I/O Har ett lagrat program (viktig skillnad mot 50-talsdatorer) Programinstruktionerna exekveras sekventiellt (viktig skillnad mot nyare alternativa arkitekturer) minnet styrenhet Input/ Output ALU processor I det följande betraktar vi dessa funktionella enheter mera detaljerat. A. Soini/Introduktion till Datateknik/cs6 2
Primärminnet (memory, storage) I minnet lagras både program och data i binär form, dvs. som 0:or och 1:or. Varje minnescell är i princip direkt åtkomlig, dvs. vi har direktaccess till alla data. Därför talar vi om RAM (Random Access Memory). Ett RAM har följande karakteristika: Minnet är uppdelat i minnesceller, där samtliga celler har samma storlek (ex. 32 bitar, 64 bitar, ) och där varje minnescell har en unik identifierare, en adress. All minnesaccess sker genom att man refererar till cellens adress, och endast hela minnesceller kan accesseras. Den tid det tar att accessera en minnescell (antingen för att hämta information där(ifrån) eller för att lagra information där (dit)) är konstant, dvs. oberoende av cellens adress. adress 1 bit 0 1 2 en minnescell n bits MAR minnesadressregister MDR maximal minnesstorlek 2 n -1 minnesdataregister W eller en multipel av W minnesvidd W A. Soini/Introduktion till Datateknik/cs6 3
Det är viktigt att förstå skillnaden mellan en cells adress och dess innehåll: 0010101 adress 11110001111 innehåll De grundläggande operationerna är hämta (fetch) och lagra (store). Enligt korrekt svenskt språkbruk säger vi var vi hämtar och lagrar saker. När vi hämtar data i minnet förs data ut därifrån (dock inte fysiskt - data kopieras!). När vi lagrar data i minnet förs data till minnet. Detta sker också via kopiering - de nya data kopieras över det gamla innehållet i den aktuella minnescellen. Detta innebär att den gamla informationen försvinner. Fetch/hämta(adress): Ladda adressen i MAR (minnesadressregister) Avkoda adressen i MAR Kopiera innehållet i denna adresserade minnescell i MDR (minnesdataregister) 0010101 MAR 0010101 11110001111 11110001111 Store/lagra(adress, värde): MDR Ladda adressen i MAR Ladda värdet i MDR Avkoda adressen i MAR Lagra innehållet av MDR i denna adresserade minnescell 0010101 MAR 0010101 11110001111 11110001111 MDR A. Soini/Introduktion till Datateknik/cs6 4
Minnesorganisation: MAR n = 4 d d d d d = 0 eller 1 4 inputlinjer minnet adress 4-till-16 avkodarkrets 0000 0001 0010 0000 (0) 0001 (1) 0010 (2) 2 4 = 16 outputlinjer 1110 (14) 1111 (15) Även om vi vanligtvis ritar minnet schematiskt som en ändå lång rad av minnesceller, är minnet i praktiken oftast tvådimensionellt organiserat 1 : radselektorlinjer rader 00 01 10 11 kolumner 00 01 10 11 0000 0001 0010 0011 0100 0101 0110 0100 1000 1001 1010 1011 1100 1101 1110 1111 adress: rad 00, kolumn 11 00 01 10 11 kolumnselektorlinjer 1(Även en tredje dimension kan förekomma i några moderna arkitekturer, men den består egentligen av ngr. st. 2-dimensionella matriser ovanpå varandra.) A. Soini/Introduktion till Datateknik/cs6 5
Det tvådimensionella minnet: n/2 bitar n/2 bitar ddd d ddd d MAR (n bitar) 11 11 resten av datorn kolumnavkodarkrets 00 00 radavkodarkrets 00 00 00 01 00 10 11 11 2 n minnesceller, ordnade i en 2 n/2 * 2 n/2 matris MDR fetch/store kontrollerare något multipel av W bitar fetch/store-signal (specificerar om man skall hämta eller lagra information) A. Soini/Introduktion till Datateknik/cs6 6
Periferala enheter: Input/Output och sekundärminnen I/O-enheterna möjliggör kommunikationen mellan användaren och datorn. De är de mest maskinberoende av alla de logiska enheterna i Von Neumann-arkitekturen - därför ser vi bara på några mycket allmänna klassificeringar och drag hos dem. Människoläsbara I/O-enheter: tangentbord (konsol) scanner bildskärm printer mikrofon högtalare mus, andra pekdoner Maskinläsbara I/O-enheter: hårdskiva disketter kassettband magnetband CD-ROM DVD mp3 USB-minnen En viktig indelningsgrund är direktaccess kontra sekventiell access. Direktaccess innebär att man direkt når det önskade stället (ex. sin favoritlåt på en CD-skiva). Sekventiell access innebär att man måste söka sig fram sekventiellt tills det önskade stället hittas (ex. spola fram kassettbandet tills man når sin favoritlåt). Sekventiella minnen är mycket långsamma jämfört med direktaccessminnen - man måste ju i värsta fallet söka fram magnetbandet ur arkivet och montera det på bandstationen. De A. Soini/Introduktion till Datateknik/cs6 7
används dock fortfarande för arkiveringsändamål och säkerhetskopiering. Alla dessa enheter är mycket långsamma jämfört med processorns hastighet, och minst 99% av datorns tid skulle gå åt att vänta på dem, om processorn själv behövde administrera dem. För att undvika detta har vi speciella I/O-kontrollerare: avbrottssignal (interrupt) till processorn, när färdigt buss data processor minne I/O-kontrollerare I/Obuffert kontrolllogik I/Oenhet A. Soini/Introduktion till Datateknik/cs6 8
ALU - den aritmetisk-logiska enheten: ALU tillsammans med styrenheten bildar processorn i moderna datorer. ALU och styrenheten arbetar så intimt ihop att det ofta är motiverat att betrakta dem som en enda helhet. Om dessa ännu byggs ihop med primärminnet, talar vi om CPU, central processing unit. Här kommer vi dock att behandla dem separat, och se vilka uppgifter de sköter var för sig. ALU består av tre delar: ett antal register själva ALU-kretsen kopplingar mellan dessa En ALU med tre register: En ALU med 16 register: resultatet registren vänster höger register A register B R0 R1 R2 ALU R3 register C R15 ALU A. Soini/Introduktion till Datateknik/cs6 9
ALU-kretsen: a b ALU a + b linje 00 a - b linje 01 MUX output a = b linje 10 a * b linje 11 selektorlinjer A. Soini/Introduktion till Datateknik/cs6 10
ALU-kretsen med register och bussar: buss 2 registren buss 0 buss 1 R0 R1 R2 R3 ALU + - / = MUX selektorlinjer A. Soini/Introduktion till Datateknik/cs6 11
Styrenheten (kontrollenheten) En central egenskap i Von Neumann-arkitekturen är det lagrade programmet. Detta innebär att koden som programmeraren har skrivit har översatts till binär form, en serie binära maskinspråksinstruktioner som lagras i maskinets minne, på samma sätt som data 2. (Detta lagringssätt blev en avgörande skillnad mot de tidigare maskiner, där datorn programmerades mekaniskt med hjälp av tiotusentals switchar som skulle omställas inför varje nytt program.) Styrenheten skall se till att datorn följer detta lagrade proram. Dess uppgift består av tre delar: Hämta (fetch) nästa instruktion från minnet Avkoda (decode) instruktionen, dvs. fastställ vad som skall göras Exekvera (execute) instruktionen genom att aktivera ALU, minnet eller de aktuella I/O-enheterna. Maskincykel: hämta avkoda exekvera Maskinspråksinstruktioner: operationskod adress 1 adress 2 Ex. ADD x, y (addera innehållet i cellerna x och y, och lagra resultatet i y) 2 Detta i sin tur leder till att det inte finns nån principiell skillnad mellan data och program -ex. assemblerprogrammen kan använda sin egen kod som data och bearbeta den! A. Soini/Introduktion till Datateknik/cs6 12
Alla de operationer en dator kan utföra bildar dess instruktionsmängd eller instruktionsrepertoar. Instruktionerna kan indelas i fyra huvudtyper: Dataöverföring (ex. LOAD x, STORE x, MOVE x, y) Aritmetiska operationer (ex. ADD x, ADD x, y eller ADD x, y, z) Jämförelser (ex. COMPARE x, y) Hopp (ex. JUMP x, JUMPEQ x) Register och kretsar i styrenheten: Styrenheten består av två viktiga register: PC (Program Counter) IR (Instruction Register) och en krets: IDC (Instruction Decoder Circuit) PC innehåller adressen till följande instruktion som är i tur att utföras. IR innehåller en kopia av den instruktion som hämtats från minnet. IDC identifierar vad som finns i IR OP, dvs. operationskoden i den aktuella instruktionen. bus +1 PC OP-kod adressfälten IR Instruktionsavkodarkrets IDC signaler till minnet, ALU, I/O-kontrollerare och andra komponenter A. Soini/Introduktion till Datateknik/cs6 13
Ex. OP-koden b b b adresser IR IDC linje 000 (ADD) linje 001 (LOAD) linje 010 (JUMP) linje 111 (HALT) Aktivera ADD-kretsarna (circuitry) Aktivera LOAD-kretsarna Aktivera JUMP-kretsarna Aktivera HALT-kretsarna Det var det! En liten repetition med en helhetsbild följer A. Soini/Introduktion till Datateknik/cs6 14
Von Neumanns dator: minnet: ALU: I/O: Styrenheten: buss MAR MDR R0 R1 I/Okontrollerare +1 PC IR minnesavkodarkrets F/Skontrollerare R2 R3 IDC I/Oenhet kontrollsignaler ALU F/Ssignal selektorlinjer GT EQ LT RAM konditionskodregister A. Soini/Introduktion till Datateknik/cs6 15