0.1. INTRODUKTION 1 0.1 Introduktion Datorns klockfrekvens mäts i cykler per sekund, eller hertz. En miljon klockcykler är en megahertz, MHz. L1 cache (level 1) är den snabbaste formen av cache och sitter normalt inuti processorn. Level 2 och 3 cache sitter i regel mellan processor och primärminne och är långsammare än L1 cache men snabbare än primärminnet. 0.1.1 Ett datorsystems 6 abstraktionsnivåer Nivå 6 - användarnivå, oftast den enda nivån som användaren interagerar på. Nivå 5 - högnivåspråk så som C++ och Python. Nivå 4 - assemblyspråk. Nivå 3 - operativsystem. Nivå 2 - Maskinnivå, ISA Nivå 1 - Kontrollnivå. På denna nivå finns kontrollenhter, dessa är hardwired eller microprogrammed. Nivå 0 - Digital logik, kretsar och gates. Den fysiska hårdvaran. Von Neuman-modellen är definerad enligt följande; Har en processor (CPU), control unit (CU), aritmetisk logisk enhet (ALU), register, primärminne (RAM), I/O-enheter. Funktionalitet för att utföra sekvensiella processor-instruktioner. Har en väg mellan RAM och CPU. Fetch-decode-execute-cycle 1. Control unit hämtar nästa programinstruktion från minnet, programräknaren (program counter, PC), berättar var instruktionen finns sparad. 2. Instruktionens opcode decodas till en språknivå som är förstålig för ALUn. 3. Eventuella operander som krävs för att köra instruktionen hämtas från minnet och placeras i processorns register. 4. ALUn exeverar instruktionen och placerar resultatet i registret och/eller minnet. Förutom multitasking kan även multithreading öka ett datorsystems prestanda avsevärt. Ett program kan delas upp i trådar vilket innebär att ett program kan bli flera processer som arbetar med olika saker paralellt. Det gör framför allt stor skillnad på system med flera processorkärnor.
2 0.2 Representation av data i datorsystem 0.2.1 Två-komplementsberäkning 9-23 med två-komplementsberäkning 00001001 = 9 00010111 = 23 (invertera och lägg till 1) 11101000 + 1 = 23 Beräkna 9-23 00001001 = 9 11101001 = +( 23) 11110010 Eftersom att talet är negativt får vi invertera igen. 11110010 00001101 och sedan lägga på 1 (00001110) (1110) = 14 9 23 = 14 0.2.2 IEEE-754 IEEE-754 Single Precision består i detta exempel av 32 bitar, 1 sign bit, 8 bitar till exponent och 23 bitar signifcand Exempel 1 Representation av det decimala flyttalet 19.5 1. Konvetera 19.5 till binärtal. 19 = 00010011 0.5 =.1 (0.5 är den första värdet efter radix-punkten) Då har vi 0001 0011.1000 2. Normalisera (sett första 1 framför radix-punkten) 00010011.1000 = 0001.00111000 2 4 (Notera att radix har flyttats 4 steg åt vänster) 3. Allting vänster om radix-punkten tar vi bort (även ettan då den är en ghost bit)
0.2. REPRESENTATION AV DATA I DATORSYSTEM 3 0001.00111000 = 00111000 Ettan före radix-punkten tas alltid bort för att det alltid är en etta där efter man normaliserat, så då är det bara onödigt utrymme att skriva ut den. 4. Zero padda, dvs fyllta ut de resterande bitarna (i detta fall femton stycken) med nollor, då significanden måste vara 23 bitar. 0011 1000 = 0011 1000 0000 0000 0000 000 5. Sätt rätt exponent, IEEE-754 har en bias på 127. Det betyder att vi ska ta 127 + 4 (vår exponent) för att få värdet vi skall skriva i exponent i IEEE-754. 127 + 4 = 131 = 10000011 (128 + 2 + 1 = 131) 6. Lägger vi ihop detta har vi att Sign = 0 (Den är positiv) Exponent = 1000 0011 Significand = 0011 1000 0000 0000 0000 000 Tillsammans blir det 0 1000 0011 0011 1000 0000 0000 0000 000 se sida 80 i boken för samma exempel Exempel 2 11000000011100000000000000000000 i decimalform 1. Separera sign, exponent och significand. 11000000011100000000000000000000 blir 1 (sign) 10000000 (exponent) 11100000000000000000000 (significand) 2. Beräkna exponenten 10000000 = 128 Bias är 127 så vi tar 128 127 = 1 Exponenten är 1. 3. Beräkna significanden 11100000000000000000000 =.111 Vi har också en ghost bit som måste läggas till.111 = 1.111 4. Eftersom vi hade exponenten 1 (2*1) så förflyttas radix-punkten 1 steg åt höger. 1.111 = 11.11
4 vilket ger 2 + 1 + 0.5 + 0.25 = 3.75 5. Vår sign bit var 1, alltså är vårt tal negativt. Svaret är 3.75 Även här användes exempel från sida 80 i boken. IEEE-754 fins också definerat för 16, 64 och 128 bitar. Vid flyttal som är 16 bitar så är en bit för tecken, fem bitar för exponent och tio bitar för significand. Bias på ett 16-bitars flyttal är 15 istället för 127 som i ett 32 bitars flyttal. 0.3 Hårdvara i ett datorsystem ALU, arithemtic logic unit utför logiska och aritmetiska operationer. Kontrollenheten, control unit (CU) som är en del av processorn övervakar exevering av instruktioner och hantering av data. Den hämtar och dekodar instruktioner och informerar ALU:n om vilka register som skall användas. Control unit har en programräknare (program counter, PC) som har koll på var någonstans i programmet processorn befinner sig och vilken som är nästa instruktion att hämtas. Bussarna i ett datorsystem är det som möjliggör kommunikation mellan systemets enheter. Databussen skickar själva datan mellan två enheter (oftas CPU och en annan enhet). Adressbussen har information om vart data ska skickas eller hämtas. Kontrollbussen har hand om requests, acknowledges, interrupts och clocksykronisering. Det är alltså via kontrollbussen som förfrågningar går om att få använda någon av de andra bussarna. Power bus (strömbussen) förser enheterna i systemet med ström. I/O buses är en separat buss för kommunikation med I/O-enheter. 0.3.1 Gränssnitt för Input / Output Det finns flera olika gränssnitt för kommunikation mellan CPU och datorsystemets I/O-enheter. De två mest förekommande är memory mapped I/O och instruction-based I/O. I memory-mapped I/O mappas datorsystemets hårdvara med adresser som är samma som i primärminnet. Det blir alltså ingen skillnad på att skriva och läsa data från primärminne eller en I/O-enhet vilket underlättar för processorn som kan använda samma instruktioner. Memory-mapped I/O är snabbt men tar en del minne i anspråk då det är faktiska minnes-adresser som används för I/O-enheterna. Instruction-based I/O har (som namnet antyder) istället specifika instruktioner för att skiva och läsa till I/O-enheter. Det används alltså inga minnes-adresser men är långsammare än memory-mapped I/O.
0.4. INSTRUCTION SET ARCHITECTURE 5 0.3.2 Interrupts Interrupts kan vara maskable eller non-maskable. Maskable interrupts kan ignoreras av processorn medan non-maskable interrupts har högre prioritet och kan inte ignoreras. 0.4 Instruction Set Architecture 0.4.1 Fetch - Decode - Execute Rutinen för att hämta, dekoda och utföra instruktioner kan brytas ner i ännu fler steg. I det sammanhang man pratar om pipelines så brukar det vara åtminstonde nedanstående. 1. Fetch instruction 2. Decode opcode 3. Calculate effective adress of operands 4. Fetch operands 5. Execute instruction 6. Store result 0.4.2 CISC vs RISC CISC (Complex Instruction Set Archtitecture) har en mer komplex ISA med fler instruktioner jämfört med RISC (Reduced Instruction Set Architecture). CISC RISC Ett register med ett begränsat antal platser Flera olika register, ofta med så många som 256 registerplatser eller mer Endast en eller två registeroperander per instruktion Upp till tre möjliga registeroperander Instruktioner som sträcker sig över flera klockcykler Alla instruktioner utförs under en klockcyckel Restriktivt med pipelines Mer pipelines Varierande längd på instruktioner Alla instrultioner har samma längd 0.5 Nätverk 0.5.1 Nätverksklasser Det finns tre sorts nätverksklasser, A, B och C som används av datorsystem och nätverksenheter, samt en fjärde klass, klass D som används för broadcasting. Klass A har en binär adress som alltid börjar med en nolla, sedan sju bitar för
6 nätverk och resterande 24 bitar är för hosten. Klass B har en binär adress som alltid börjar med en etta och en nolla, sedan fjorton bitar för nätverk och resterande sexton bitar är för hosten. Klass C har en binär adress som alltid börjar med två ettor och en nolla, sedan 21 bitar för nätverk och resterande åtta bitar är för hosten. Exempel; Klass A: 0nnn nnnn. HHHH HHHH. HHHH HHHH. HHHH HHHH Klass B: 10nn nnnn. nnnn nnnn. HHHH HHHH. HHHH HHHH Klass C: 110n nnnn. nnnn nnnn. nnnn HHHH. HHHH HHHH