Virtuellt minne
•
•
Fråga som dök upp i labbet i tisdags
Hur håller datorn egentligen reda på vart datat faktiskt
finns i vår minneshierarki?
• Svaret: Virtuellt minne
- Istället för att tilldela ett program en exklusiv del av
det arbetsminne som finns tillgängligt så får varje
program en virtuell motsvarighet till en helt egen
dator.
- Operativsystemet ligger sedan gömt under denna
virtuella minnesrymd och sköter all de riktiga
minnes-resurserna så att alla program som körs får
det de behöver, men inte mera. Till sin hjälp har det
en MMU för att göra översättningar till fysiska
adresser.
Program 1:s minnesadresser
Datorns minnesadresser
MMU
•
•
•
•
•
•
MMU - Memory Management Unit, det vill säga
minneshanteringsenhet.
I tidiga datorer saknades MMU helt och hållet eller hade en
separat krets som fungerade som en MMU. I dag har de flesta
processorer ett inbyggt stöd för MMU.
En MMU används för att översätta från virtuella adresser till
fysiska adresser i minnet.
Moderna MMUer delar in det virtuella adressutrymmet (giltiga adresser
som används av processorn) i sidor vars storlek 2n, vanligtvis några
kilobyte.
De nedre n bitarna av adressen (som avgör platsen på sidan) lämnas
oförändrade. De övre bitarna används som ett (virtuellt) sidnummer och
mha en tabell kan mmu:n översätta detta till en sida i det riktiga minnet.
Finns inte sidan i minnet så kommer den att påpeka detta för
operativsystemet som kan se till att tex. flytta in den sidan från disk till
primärminnet
Program 2:s minnesadresser
CPUs uppbyggnad
MMU
OS
Vad påverkar en dators
hastighet
• Finns flera faktorer att bedöma
–
–
–
–
–
–
Klockhastighet
Ordstorlek (word size)
Cachestorlek
Instruktionsmängd
Bearbetningstekniker
Benchmarks
– Speciella tester som undersöker en processors
prestanda som helhet.
Klockhastighet
• Ett mått på hur snabbt datorn utför sina
instruktioner
• Den minsta tidsenheten är en cykel
• Inte samma sak som antalet instruktioner
• Vissa instruktioner kan ta flera cykler, flera
instruktioner kan göras i en cykel
• Mäts i MHz (miljoner cykler per sekund)
• eller för det mesta numera GHz (miljarder
cykler per sekund)
Ordstorlek
• Antalet bitar som en processor kan bearbeta på
samma gång.
• Beror storleken på registren som finns i ALU
och kapaciteten på ledningarna som går dit.
• En 32-bits processor är en processor med
ordstorlek 32 och kan bearbeta/lagra 32 bitar
på en gång/i ett register.
• Ju större ordstorlek ju mer data kan bearbetas
per tidscykel.
• 32- och 64-bits processorer vanliga idag
Typer av processorer
• Antalet instruktioner en processor kan förstå
• RISC-processor (Reduced instruction set computer)
– PowerPC processorerna i (något) äldre Macintoshdatorer är av
denna typ
• CISC-processor (Complex instruction set computer) fler
instruktioner och instruktionerna tar ofta mer än en cykel att
genomföra.
– Vanlig i PC-datorer (nyare bryter ner CISC instruktionerna och
fungerar liknande RISC processorer internt)
• En RISC-processor utför instruktioner snabbare än en CISC
men måste göra ett större antal instruktioner för att lösa
samma problem.
• Vissa processorer har instruktioner för att snabba upp tex
grafikhantering 3DNow!, MMX, SSE-2 och AltiVec (Krävs att
programmen utnyttjar de speciella instruktioner som
utnyttjar dessa!)
Tid för ett program
Hastighetsmått
• –IPSAntal instruktioner som kan exekveras per
Time = Instructions*
sekund
– Nackdel: instruktioner kan göra olika mkt på olika
plattformar
– Olika instruktioner kan ta olika lång tid
Instructions
Seconds
*
Clock cycles Clock cycle
• –FLOPS
Flyttalsoperationer per sekund
Om vi bortser från att det tar tid att få tag på data till processorn
– Inte beroende av hur mkt instruktionerna gör
– Nackdel: mäter bara flyttalsprestanda för vissa
program (tex kompilatorer är detta helt irrelevant)
!
Bearbetningstekniker
• Seriell bearbetning
– Hanterar en instruktion åt gången. Den
måste vara helt klar innan nästa på börjas.
Seriell bearbetning
• En ny instruktion påbörjas då föregående
är avklarad
• Pipelining
– Kan påbörja en ny instruktion innan den
gamla är helt slutförd.
• Parallell bearbetning
– Flera instruktioner utförs samtidigt.
– Börjar bli vanligare i persondatorer numera
– Inte helt lätt att utnyttja den extra kraften
optimalt
Instruktion 1
Instruktion 2
Instruction
fetch
Instruction
decode
Execution
Data
memory
Write back
Instruction
fetch
Instruction
decode
Execution
Data
memory
67
Write back
Pipelining
Pipelining forts
• En ny instruktion kan påbörjas så snart
föregående passerat ett steg i exekveringen
• Antalet steg i pipelinen (och därmed antalet
instruktioner som kan exekveras samtidigt)
kan variera på olika processorer av denna
typ
• Vid pipelineing arbetar processorn enligt löpande bandprincipen: genom att i förväg hämta in flera instruktioner
och låta dem köa till varje intern exekveringsenhet
(exempelvis FPU, ALU eller MMX).
• Anledning: öka klockfrekvensen. Genom att dela upp den
instruktion som ska utföras i flera mindre steg (som tar
kortare tid att utföra) så kan man sätta klockpulsens tid
lika med den del som tar längst tid att utföra.
• Problem
– Data som kan behövas av ett steg har inte beräknats
färdigt i ett tidigare steg
– Hopp-instruktioner där vi inte vet vad som ska
exekveras efter förrän vi har bestämt vart vi ska
fortsätta
69
Instruktion 1
Instruction
fetch
Instruktion 2
Instruction
decode
Execution
Data
memory
Write back
Instruction
fetch
Instruction
decode
Execution
Data
memory
Write back
68
Parallell bearbetning
Uppbyggnad
• Två eller fler processorer (eller
processorkärnor).
• Kan givetvis kombineras med pipelining i
de olika processorerna
• Kan bli problematiskt att hålla alla de olika
processorerna med arbete
Instruktion 1
Instruction
fetch
Instruction
decode
Instruktion 2
Instruction
fetch
Instruction
decode
Execution
Data
memory
Write back
Execution
Data
memory
Write back
Processor 1
Processor 2
70
Register
• Registren är minnesplatser som används
internt av CPU:n.
• Används för att lagra argument och resultat
för de olika operationer som processorn kan
utföra. Finns oftast olika för flyttal och heltal
• Andra register
– Stack pointer register
• Håller reda på vart toppen på stacken finns
för tillfället
– Frame pointer register
• Håller reda på vart nuvarande funktions data
på stacken börjar
72
• En microprocessor är en integrerad krets som är
utformad för att bearbeta instruktioner, dvs en CPU på ett
chip.
• Oftast det största chipet på moderbordet
• CPU:n/mikroprocessorn/processorn består av:
– ALU (arithmetic logic unit)
• Utför aritmetiska och logiska operationer
• Använder register för att lagra data som bearbetas
– Kontrollenheten
• Styr och koordinerar själva bearbetningen
• exekverar instruktioner, "laddar" värden mellan minnet och registren och
styr ALU:n. Innehåller klocka, vars frekvens styr hela CPU:n.
– Ett antal register.
– För flyttalsberäkningar har man ibland en separat FPU (Floating
Point Unit) För att hantera flyttalsberäkningar
Processorns kommunikation
med omvärlden
• Processorn kommunicerar med minne
och andra komponenter via
systembussen
• En buss är en parallell ledningsgata
CPU
Primärminne
I/O
Systembuss
73
Systembusen
•
• Hur snabb systembussen är (hastighet och
Kan delas upp i tre delar
• Databuss
• innehåller själva datat
• Adressbuss
• talar om vart datat ska/kommer ifrån!
• Kontrollbuss
• handskakning, R/W-info m.m.
CPU
Primärminne
Systembussen forts.
bredd) är också viktigt för datorns prestanda
då den kan vara avgörande för om
processorn kan hållas sysselsatt
I/O
Kontrollbuss
Adressbuss
Databussbuss
Vad händer i framtiden?
GPU
• Graphics Processing Unit
• Beräkningsenheter i datorn som är speciellt
dedikerade till gafikutritning
• Speciellt optimerade för detta och kan därmed
utföra dessa operationer snabbare än CPU:n som
ska klara av att lösa många olika typer av uppgifter
• Moderna GPU:er har också stöd för 3d grafik
• Eftersom de flesta av dessa operationer involverar
matris och vektor operationer så har man även
börjat studera om de kan användas till andra typer
av beräkningar
76
• Sitter oftast på grafikkortet
• Moores lag
–
Uppkallad av en av Intels grundare Gordon E. Moore
–
Förutsäger att antalet transistorer som får plats på ett chip fördubblas var ca var 24:
månad (lite variation angående den exakta tiden)
–
På 80-talet tolkades lagen som fördubblingen av antalet transistorer per chip, men
detta har kommit att ändrats med tiden. Under början av 90-talet menade man mer
på fördubblingen av mikroprocessorkraften och senare under decenniet på
fördubblingen av beräkningskraft per fix kostnad.
–
Har visat sig korrekt ända sedan 1965 då den formulerades, dock med en och annan
justering av fördubblingstiden
–
Eftersom transistorerna på chipen växer så får man också möjlighet att göra
snabbare och mer avancerade processorer.
–
Moore's lag har haft stor betydelse för datorindustrin som i mångt och mycket lever
på att föregående års modeller måste bytas ut när datorns CPU blivit föråldrad enligt
Moores lag. Lagen kommer också till användning när man utvecklar exempelvis spel,
och behöver veta hur kraftiga datormaskinerna som finns på marknaden är när
spelet släpps.
77