DA Flashcards
Von Neumann Modellen
3 Hårdvarusystem:
- Central Processing Unit (CPU): ALU, CU & Register
- Primärminne-system
- I/O-system
Control Unit (CU)
Hämtar instruktioner från primärminnet och avkodar dem. Hämtar även efterfrågade operander och sparar dem till register.
Arithmetic Logical Unit (ALU)
Här utförs alla logiska och aritmetiska operationer. Sedan sparas resultatet i register eller minnet.
Register
I register sparas alla operander som processorn behöver under exekvering.
The Computer Level Hierarchy
Level 0: Digital Logic - kretsar, grindar etc.
Level 1: Control - Microcode eller Hardwired
Level 2: Machine - Instruction Set Architecture (ISA)
Level 3: System Software: Operativsystem
Level 4: Assemblyspråk - assemblykod
Level 5: High Level Language: Java, C++ osv.
Level 6: User - exekverbara program
Olika typer av bussar
Databussar: Överför bitar, data, från en enhet till en annan.
Adressbussar: Fastställer sändaren och mottagaren av datat.
Kontrollbussar: Avgör vilka enheter som ska ha tillgång till bussen samt registrerar enhetens syfte. Hanterar även förfrågningar från enheter, eventuella avbrott samt synkroniseringssignaler från dators klocka.
Klocka
- Alla datorer har minst en klocka som sköter synkroniseringen av aktiviteterna hos dess komponenter.
- Ett fast antal klockcykler krävs för att utföra alla beräkningar och dataöverföringar i systemet.
- Frekvensen som mäts i mega- eller gigahertz avgör hastigheten i vilken alla operationer utförs.
- Datorns prestanda kan förbättras genom antalet nanosekunder i en klockcykel, antalet instruktioner i ett program eller antalet klockcykler per instruktion.
Interrupts
- Ibland behöver man avbryta fetch/execute-cykeln exempelvis pga en timer, I/O-operationer eller om ett fel uppstår.
- En enhet som vill att processorn ska göra ett avbrott antecknar detta i ett register, processorn kontrollerar efter varje F/E-cykel om ett avbrott begärts.
- Om ett avbrott ska göras ändras programräknarens värde till det som indikerar avbrottshanteraren och det föregående värdet sparas i MBR och skrivs till minnet.
- Maskable interrupts är avbrott som kan ignoreras.
- Non-maskable interrupts måste tas om hand direkt för att garantera att hålla kvar systemet i ett stabilt läge.
Vad skiljer olika instruction set architectures (ISA) åt?
-Antalet bitar per instruktion
- Huruvida de är stack- eller registerbaserade
- Antalet explicita operander per instruktion
-Typer av operationer
osv
Endianess
Byteordning.
Little Endian: Least significant byte först.
Big Endian: Most significant byte först.
Hur lagrar CPU:n data?
- Stack architecture
- Accumulator architecture
- General purpose register architecture (GPR) vanligast idag.
General Purpose Register (GPR), tre typer.
Memory-Memory: två eller tre operander kan finnas i minnet.
Register-Register: Åtminstone en operand måste finnas i ett register
Load-Store: inga operander kan finnas i minnet.
Adressering
- Adresseringslägen specificerar vart en operand är belägen.
- Den faktiska positionen av en operand är dess “effective address”
Intermediate-adressering
Datan är en del av instruktionen
Register-adressering
Adressen till datan finns i instruktionen
Indirekt-adressering
Adressen till adressen som håller datan finns i instruktionen
Register indirekt-adressering
Instruktionen innehåller ett register som har adressen till adressen till datan
Indexerad-adressering
Använder ett register som en offset och denna är adderad till adressen i operanden för att få ut adressen som innehåller datan.
Instruction pipelining
Innebär att man gör det möjligt för processorn att utföra flera instruktioner samtidigt genom att köra dela upp fetch/execute-cykeln i mindre delar och köra dessa parallellt. Så när en instruktion avkodas på en pipeline hämtas nästa i en annan pipeline.
- För varje klockcykel utförs ett steg och stegen överlappas.
Beskriv Fetch/Decode/Execute-cykeln.
FI: Fetch intstruction - Instruktionen hämtas från primärminnet av CU:n och läses in i IR (Instruction Register)
DO: Decode Opcode - Avkodar OP-koden och instruktionens operander.
CO: Calculate Operand - Beräknar “effective address” för operanderna
FO: Fetch Operands - Läs in operanderna (Op i reg behöver ej läsas in)
EI: Execute Instruction - Utför instruktionen och sparar till register.
SR: Store Result - Spara resultatet till primärminnet.
Problem med instruction pipelining:
Resource Hazard
Flera steg i F/E-cykeln behöver tillgång till samma resurs samtidigt, instruktionerna måste då utföras seriellt.
Problem med instruction pipelining: Control Hazard (Branch Hazard)
Leder till att nästa instruktion inte kan avgöras.
Problem med instruction pipelining:
Data Hazard
Data blir inkorrekt på grund av att data läses och skrivs i fel ordning. Exempelvis en operand hämtas innan en föregående instruktion är färdig med den och den nya instruktionen hämtar därför inte rätt värde.
Vad gör en buss?
En buss tillhandahåller kommunikation mellan olika enheter i ett datorsystem genom att varje enhet har tillgång till gemensamma ledningar för data, kontroll och adressering
Tekniker att hantera branch hazards
Branch Prediction: Man försöker förutsäga om en branch kommer att utföras eller ej, om man lyckas har man inte slösat några cykler.
Delayed Branch: Man utnyttjar faktumet att branch-instruktionen inte tar effekt på ett tag, på så sätt kan man lägga in ytterligare en instruktion efter branschen som hinner exekveras innan branchen utförs.
Multiple Streams: Man läser in båda instruktionsalternativen
Prefetch Branch Target: målinstruktionen läses in så att den redan är hämtad utfall branchen utförs
Cache
Syftet med cache är att öka processorns prestanda genom att snabba upp tillgången till data genom att lagra nyligen använd data nära processorn.
Temporal locality: Om data har refererats är det högst troligt att den kommer att refereras igen
Spatial locality: Om data har refererats är det högst troligt att data på en adress i närheten snart kommer att refereras.
Direktmappad cache
Ett block i primärminnet mappas till exakt ett block i cachen.
Enkel hårdvara men data kan tvingas ut i onödan, risk för thrashing.
TAG BLOCK OFFSET
Fully Associative cache
Ett block från primärminnet kan mappas till vilket block som helst i cachen.
Kräver komplicerad hårdvara för att se om den eftersökta datan finns i cachen eller inte samt vart.
TAG OFFSET
Set-associative cache
Ett block från primärminnet mappas till ett set i cachen som kan innehålla två eller flera block. En kompromiss mellan direktmappad och fully associative cache.
TAG SET OFFSET