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