Datormodell Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden
Intel 4004 från 1971 Maximum clock speed is 740 khz Separate program and data storage (i.e., a Harvard architecture). Contrary to most Harvard architecture designs, however, which use separate buses, the 4004, with its need to keep pin count down, uses a single multiplexed 4-bit bus for transferring: 12-bit addresses 8-bit instructions, not to be placed in the same memory as 4-bit data words Instruction set contains 46 instructions (of which 41 are 8 bits wide and 5 are 16 bits wide) Register set contains 16 registers of 4 bits each Internal subroutine stack is 3 levels deep 2
Microchip 3
Von Neuman Utvecklade en modell för en dator som gäller än idag. Von Neuman-dator: En beräkningsmaskin där styrinstruktioner ligger i samma minne som data till beräkningar. John von Neuman (1903-1957), matematiker född i Budapest. Pionjär inom datortekniken. Data och program delar samma buss 4
Harward Program- 14 8 Dataminne CPU minne (flash) (RAM) Separat programbuss och databuss 5
CISC Olika typer av microcontrollers, CISC och RISC. CISC Complicated Instruction Set Computer - komplex instruktionsuppsättning, ex. Motorola 68HC11 ca 150 instr. - varje instruktion tar flera klockpulser - lätt att programmera i maskinkod - problem: resurserna används för att göra vackra arkitekturer snarare än arkitektur med maximal prestanda, ger stor kiselyta (=dyrt) - mer komplicerad avkodning av instruktionerna leder till långsammare exekvering 6
RISC RISC Reduced Instruction Set Computer - elegans byts mot prestanda, max prestanda eftersträvas - använder pipelining och parallella exekveringsenheter => => oftast 1CP/ instruktion - få enkla och därför snabba instruktioner med enkla adresseringsmoder - kräver mera kod 7
Minne (RAM/RWM) Har ett visst antal unika platser (adressrymd) där den kan lagra ett visst antal bitar (ordlängd). Minnet innehåller både instruktion (programminnet) samt data (dataminnet). Läsning av minnet: - CPU:n lägger ut adressen på adressbussen (AB) varvid den aktuella minnescellen adresseras. - CPU:n ger styrsignalen Läs på styrbussen (SB) => data ut på databussen (DB). Skrivning till minnet: - CPU:n lägger ut adressen på adressbussen (AB) varvid den aktuella minnescellen adresseras. - ordet som skall skrivas in i minnet läggs ut på DB. - styrsignalen Skriv på SB => skrivningen i minnet verkställs. 8
CPU - ALU Aritmetisk/Logisk Enhet (ALU) Den del av CPU:n, som utför beräkningar. Addition, subtraktion, logiska operationer. Det antal bitar, som ALU:n kan använda brukar kallas datorns ordlängd. Vanligt är 8, 16, 32 eller 64 bitar. Register (temporärt snabbminne) Datorn utför många minnesläsningar. Detta tar mycket mer tid än själva beräkningen i datorn. Lösning: Speciella register i beräkningsenheten, som går snabbt att läsa. Ofta samma längd som datorns ordlängd. Vanlig arbetsgång är att först hämta in data till register, beräkna och sen avsluta med att skriva tillbaks till minnet. 9
Styrenhet Den delen som styr och bestämmer vad som skall hända i CPU:n. Hårdvaruimplementerad logik. Ser till att allt sker i rätt ordning. Håller t ex reda på var i ett datorprogram man befinner sig. Detta ligger i ett speciellt register, som heter Programräknare (PC). Nästa instruktion hämtas från den adress i minnet som (PC) pekar på. Håller reda på vilken instruktion som körs. Den ligger i ett register som heter instruktionsregistret (IR). Styrenhet PC IR Avgör i vilken ordning man skall göra alla saker. 10
Statusregister (SR) Håller koll på hur en beräkning utförd i ALU:n gick. Dessutom innehåller det ofta en del information för att konfigurera processorn. Flaggorna C (Carry) och Z (Zero) finns i statusregistret. Normalt är att senaste registerskrivningen påverkar flaggorna. Genom information om senaste registerskrivningen kan villkorliga operationer utföras. Alltså beroende på senaste resultatet kan olika instruktioner utföras, dvs styra om PC. 11
Arbetsgång 1. Hämta instruktion från programminnet 2. Avgör vad som skall göras 3. Beräkna/utför i CPU 4. Skriv tillbaka till minnet (filregistret) 12
Intern kommunikation Alla enheter i datorn kommunicerar med bussar. En buss är inget annat än en samling parallella ledare för att överföra information. Storleken anges ofta i antal bitar (bussbredd). Adressbussen (AB) - (enkelriktad) har till uppgift att peka ut den plats i minnet eller in/ut-enheten som CPU:n ska kommunicera med. Databussen (DB) (dubbelriktad) överför data från den utpekade platsen till CPU:n, eller tvärtom. Oftast samma bredd som datorns ordlängd. Styrbussen (SB) överför signaler från styrenheten i CPU:n, som bl a gör att rätt enhet får tillgång till DB i rätt ögonblick. Processorer med inbyggt minne behöver inte ha DB och AB externt utdragna. Dessa kallas ofta MCU (microcontroller). 13
Instruktion Består av två delar: opcode och operand. Opcode = vad en instruktion gör Operand = på vad instruktionen opererar. Kan vara något av följande: 1. register (data ligger i register. Arbetsregistret w anges i instruktionen) 2. minne (data ligger på minnesplats. Minnesplats anges i instruktionen) 3. immediate värde (data står angivet i instruktionen) Ex) 7 Instruktioner har alltid en opcode, men kan ha en eller ingen operand. 14
Exempel på instruktion: ADD - Addera arbetsregistret w och filregistret f. ADDWF f,d ; (w)+(f) (d) - d = 0 => resultatet läggs i w-registret - d = 1 => resultatet läggs i filregistret f - Addera arbetsregistret w med konstant. ADDLW k ; (w) + k (w) 15
Exempel på instruktion: MOV Flytta data från minnet till w-registret. MOVF f, d ; (f) (d) - d = 0 w-reg. - d = 1 f-reg. Flytta innehållet i w till filregister. MOVWF f ; (w) (f) 16
Exempel på instruktion: GOTO Utför ett hopp, dvs ändrar (PC). GOTO k ; hoppa till k (label = etikett) 17
Instruktioners begränsningar Instruktionen ligger i minnet och tar upp en viss plats. Hur mycket är beroende på dator. För PIC gäller 14 bitar. För t ex ARM gäller 32 bitar. På dessa bitar ska både opcode och operander få plats. För PIC gäller 14 bitar/instruktion varav 6 bitar för opcode. Ju fler instruktioner en dator har, desto större blir opcode-fältet. T ex 50 instruktioner behöver 6-bitars opcode fält (2 6 = 64). Antar vi 6-bitars instruktioner finns då endast 8 bitar kvar för operander. Detta ger begränsningar om instruktionen t ex ska innehålla en fysisk adress som operand. Adressen blir då begränsad. Viktigt! 18
Adresseringsmode hur data nås De olika sätt som instruktioner kan nå data brukar kallas adresseringsmode. Antalet adresseringsmoder anger i princip på hur många olika sätt data kan flyttas in i registren. Oftast skrivs instruktionens operander på olika sätt beroende på vilken adresseringsmode som används. Vanliga adresseringsmoder: Immediate ADDLW 34 Data omedelbart i instruktionen Direct ADDWF f, d Data finns på en adress (i ett filreg) Indirect Här används ett speciellt reg. FSR. Data finns på den adress som (FSR) pekar på. FSR File Select Register 19
Adresseringsmode hur data nås 20
Instruktionscykel För varje instruktion som exekveras, utför datorn ett visst antal åtgärder som kallas instruktionscykeln. Det är styrenheten som ser till detta. FETCH Hämtar intruktion från minnet DECODE Avgör vilken instruktion (avkodar) EVALUATE ADDRESS Beräknar ev adresser till operander FETCH OPERANDS Hämtar in operander EXECUTE Beräknar i ALU:n STORE RESULT Skriver resultatet till minnet Det är inte säkert att alla instruktioner kräver alla delar i cykeln. För PIC gäller hämtfas (FETCH) och exekveringsfas (EXECUTE). 21
Detaljerad arbetsgång FETCH Hämtar intruktion från minnet till IR DECODE Avgör vilken instruktion som ligger i IR EVALUATE ADDRESS Beräknar ev adresser till operander FETCH OPERANDS Hämtar in operander från minnet eller reg EXECUTE Beräknar i ALU:n. Statusregistret (SR) påverkas. STORE RESULT Skriver resultatet till minnet Efter det att instruktionen är hämtad i FETCH-fasen ökas (PC) med ett. Vissa instruktioner förändrar (PC) i EXECUTE-steget. På så sätt kan instruktioner utföras villkorligt. Detta är det enda en processor gör. Kör instruktioner! 22
Instruktionsgrupper De tre grupper av instruktioner som alltid måste finnas med är följande. Alla processorer har alltid några instruktioner av varje typ. Dataförflyttning Flyttar data mellan minne (filregister) och arbetsregister, MOVF f, d eller mellan arbetsregister minne (filregister), MOVWF f. Aritmetiska/logiska Beräkningar på data i register: ADDERA (ADDWF f, d), SUBTRAHERA (SUBWF f, d), INVERTERA (COMF f, d), AND (ANDWF f, d), OR (IORWF f, d), XOR (XORWF f, d) osv. Styr Exekveringsfasen förändrar (PC). Villkor. T ex GOTO k (ovillkorlig). 23
Summering Von Neuman modellen för en dator Instruktionsbegreppet, opcode och operander Instruktionscykel det enda datorn gör Gruppering av instruktioner dataförflyttning, aritmetiska/logiska, styr Adresseringsmode Hur instruktionerna når data 24