Datorarkitektur - Computer architecture

Blockdiagram över en grundläggande dator med enprocessor -CPU. Svarta linjer indikerar dataflöde, medan röda linjer indikerar kontrollflöde. Pilar anger flödesriktningen.

I datateknik , datorarkitektur är en uppsättning regler och metoder som beskriver funktionalitet, organisation och implementering av datorsystem. Arkitekturen för ett system hänvisar till dess struktur när det gäller separat specificerade komponenter i systemet och deras inbördes samband.

Vissa definitioner av arkitektur definierar den som en beskrivning av datorns funktioner och programmeringsmodell men inte en särskild implementering. I andra definitioner involverar datorarkitektur instruktionsuppsättningsarkitekturdesign , mikroarkitekturdesign , logisk design och implementering .

Historia

Den första dokumenterade datorarkitekturen var i korrespondensen mellan Charles Babbage och Ada Lovelace , som beskriver den analytiska motorn . När han byggde datorn Z1 1936 beskrev Konrad Zuse i två patentansökningar för sina framtida projekt att maskininstruktioner kunde lagras i samma lagring som används för data, dvs konceptet lagrat program . Två andra tidiga och viktiga exempel är:

Begreppet ”arkitektur” i datalitteratur kan spåras till arbetet av Lyle R. Johnson och Frederick P. Brooks, Jr. , medlemmar av avdelningen för maskinorganisation i IBM: s huvudforskningscenter 1959. Johnson fick möjlighet att skriva en proprietär forskningskommunikation om Stretch , en IBM-utvecklad superdator för Los Alamos National Laboratory (vid den tiden känd som Los Alamos Scientific Laboratory). För att beskriva detaljnivån för att diskutera den lyxigt utsmyckade datorn noterade han att hans beskrivning av format, instruktionstyper, hårdvaruparametrar och hastighetsförbättringar låg på "systemarkitektur", en term som verkade mer användbar än "maskinorganisation ”.

Därefter öppnade Brooks, en Stretch -designer, kapitel 2 i en bok som heter Planning a Computer System: Project Stretch genom att säga: "Datorarkitektur, liksom annan arkitektur, är konsten att bestämma behoven hos användaren av en struktur och sedan utforma för att tillgodose dessa behov så effektivt som möjligt inom ekonomiska och tekniska begränsningar. ”

Brooks hjälpte till att utveckla IBM System/360 (nu kallad IBM zSeries ) datorer, där "arkitektur" blev ett substantiv som definierade "vad användaren behöver veta". Senare kom datoranvändare att använda termen på många mindre tydliga sätt.

De tidigaste datorarkitekturerna designades på papper och byggdes sedan direkt in i den slutliga hårdvaruformen. Senare byggdes datorarkitekturprototyper fysiskt i form av en transistor-transistor logik (TTL) -dator-som prototyperna från 6800 och PA-RISC- testade och tweakades innan de gick till den slutliga hårdvaruformen. Från och med 1990 -talet ”byggs”, testas och tweakas nya datorarkitekturer vanligtvis inuti någon annan datorarkitektur i en datorarkitektursimulator ; eller inuti en FPGA som en mjuk mikroprocessor ; eller båda - innan du går vidare till den slutliga hårdvaruformen.

Underkategorier

Datorarkitekturen har tre huvudkategorier:

Det finns andra tekniker inom datorarkitektur. Följande teknik används i större företag som Intel, och beräknades 2002 räkna med 1% av all datorarkitektur:

  • Mikrokod : mikrokod är programvara som översätter instruktioner för att köra på ett chip. Det fungerar som ett omslag runt hårdvaran och presenterar en föredragen version av maskinvarans instruktionssatsgränssnitt. Denna instruktionsöversättningsfunktion ger chipdesigners flexibla alternativ: Ex. 1. En ny förbättrad version av chipet kan använda mikrokod för att presentera exakt samma instruktionsuppsättning som den gamla chipversionen, så all programvara som är inriktad på instruktionsuppsättningen körs på det nya chipet utan behöver förändringar. Ex. 2. Mikrokod kan presentera en mängd olika instruktionsuppsättningar för samma underliggande chip, så att den kan köra en större mängd programvara.
  • UISA : User Instruction Set Architecture, hänvisar till en av tre delmängder av RISC CPU -instruktionerna från PowerPC RISC -processorer. UISA -delmängden är de RISC -instruktioner som är intressanta för applikationsutvecklare. De två andra delmängderna är VEA (Virtual Environment Architecture) -instruktioner som används av virtualiseringssystemutvecklare och OEA (Operating Environment Architecture) som används av operativsystemutvecklare.
  • Stiftarkitektur : Hårdvarufunktionerna som en mikroprocessor ska tillhandahålla en hårdvaruplattform, t.ex. x86 -stiften A20M, FERR/IGNNE eller FLUSH. Även meddelanden som processorn ska sända ut så att externa cacheminne kan ogiltigförklaras (tömmas). Stiftarkitekturfunktioner är mer flexibla än ISA -funktioner eftersom extern hårdvara kan anpassa sig till nya kodningar eller byta från en pin till ett meddelande. Termen "arkitektur" passar, eftersom funktionerna måste tillhandahållas för kompatibla system, även om den detaljerade metoden ändras.

Roller

Definition

Datorarkitektur handlar om att balansera datorns prestanda, effektivitet, kostnad och tillförlitlighet. Fallet med instruktionsuppsättningsarkitektur kan användas för att illustrera balansen mellan dessa konkurrerande faktorer. Mer komplexa instruktionsuppsättningar gör det möjligt för programmerare att skriva mer rymdeffektiva program, eftersom en enda instruktion kan koda lite högre abstraktion (t.ex. x86 Loop-instruktionen). Längre och mer komplexa instruktioner tar dock längre tid för processorn att avkoda och kan bli dyrare att implementera effektivt. Den ökade komplexiteten från en stor instruktionsuppsättning skapar också mer utrymme för opålitlighet när instruktioner interagerar på oväntade sätt.

Implementeringen innebär integrerad kretsdesign, förpackning, kraft och kylning. Optimering av designen kräver bekantskap med kompilatorer, operativsystem till logisk design och förpackning.

Instruktionsuppsättning arkitektur

En instruktionsuppsättningsarkitektur (ISA) är gränssnittet mellan datorns programvara och hårdvara och kan också ses som programmerarens bild av maskinen. Datorer förstår inte programmeringsspråk på hög nivå som Java, C ++ eller de flesta programmeringsspråk som används. En processor förstår bara instruktioner som är kodade på ett numeriskt sätt, vanligtvis som binära tal . Programvaruverktyg, som kompilatorer , översätter dessa högnivåspråk till instruktioner som processorn kan förstå.

Förutom instruktioner definierar ISA objekt i datorn som är tillgängliga för ett program - t.ex. datatyper , register , adresseringslägen och minne. Instruktioner hittar dessa tillgängliga objekt med registerindex (eller namn) och minnesadresslägen.

En dators ISA beskrivs vanligtvis i en liten bruksanvisning som beskriver hur instruktionerna kodas. Det kan också definiera korta (vagt) mnemoniska namn för instruktionerna. Namnen kan identifieras av ett mjukvaruutvecklingsverktyg som kallas en assembler . En assembler är ett datorprogram som översätter en mänskligt läsbar form av ISA till en datorläsbar form. Demonterare är också allmänt tillgängliga, vanligtvis i felsökare och program för att isolera och korrigera störningar i binära datorprogram.

ISA varierar i kvalitet och fullständighet. En bra ISA kompromissar mellan programmerarens bekvämlighet (hur lätt koden är att förstå), kodens storlek (hur mycket kod som krävs för att utföra en specifik åtgärd), datorns kostnad för att tolka instruktionerna (mer komplexitet betyder att mer hårdvara behövs för att avkoda och köra instruktionerna), och datorns hastighet (med mer komplex avkodningshårdvara kommer längre avkodningstid). Minnesorganisation definierar hur instruktioner interagerar med minnet och hur minnet interagerar med sig själv.

Under designemulering kan emulatorer köra program skrivna i en föreslagen instruktionsuppsättning. Moderna emulatorer kan mäta storlek, kostnad och hastighet för att avgöra om en viss ISA uppfyller sina mål.

Datororganisation

Datororganisation hjälper till att optimera prestandabaserade produkter. Till exempel måste mjukvaruutvecklare känna till processorkraften hos processorer. De kan behöva optimera programvaran för att få maximal prestanda till lägsta pris. Detta kan kräva en ganska detaljerad analys av datorns organisation. Till exempel, på ett SD -kort, kan konstruktörerna behöva ordna kortet så att mest data kan bearbetas på snabbast möjliga sätt.

Datororganisation hjälper också till att planera valet av en processor för ett visst projekt. Multimediaprojekt kan behöva mycket snabb datatillgång, medan virtuella datorer kan behöva snabba avbrott. Ibland behöver vissa uppgifter också ytterligare komponenter. Till exempel behöver en dator som kan köra en virtuell maskin hårdvara för virtuellt minne så att minnet hos olika virtuella datorer kan hållas åtskilt. Datororganisation och funktioner påverkar också strömförbrukning och processorkostnad.

Genomförande

När en instruktionsuppsättning och mikroarkitektur har utformats måste en praktisk maskin utvecklas. Denna designprocess kallas implementering . Genomförandet brukar inte vara arkitektoniska utformningen, men hårdvara snarare konstruktionsteknik . Implementeringen kan delas upp i flera steg:

  • Logisk implementering utformar de kretsar som krävs på en logisk gate- nivå.
  • Kretsimplementering gör transistor -nivå utformningar av grundläggande element (t ex grindar, multiplexorer , spärrhakar ) såväl som av några större block ( ALU , cachar etc.) som kan implementeras vid den logiska-gate-nivå, eller till och med på den fysiska nivån om designen kräver det.
  • Fysisk implementering drar fysiska kretsar. De olika kretskomponenterna placeras i en golvplan eller på ett bräde och trådarna som förbinder dem skapas.
  • Designvalidering testar datorn som helhet för att se om den fungerar i alla situationer och alla tider. När designvalideringsprocessen har startat testas designen på logisk nivå med hjälp av logiska emulatorer. Detta är dock vanligtvis för långsamt för att köra ett realistiskt test. Så, efter att ha gjort korrigeringar baserade på det första testet, konstrueras prototyper med hjälp av fältprogrammerbara gate-arrays ( FPGA ). De flesta hobbyprojekt stannar i detta skede. Det sista steget är att testa prototyp integrerade kretsar, vilket kan kräva flera redesigner.

För processorer är hela implementeringsprocessen organiserad annorlunda och kallas ofta CPU -design .

Designmål

Den exakta formen av ett datasystem beror på begränsningarna och målen. Datorarkitekturer byter vanligtvis ut standarder, effekt kontra prestanda, kostnad, minneskapacitet, latens (latens är den tid det tar för information från en nod att resa till källan) och genomströmning. Ibland är andra överväganden, såsom funktioner, storlek, vikt, tillförlitlighet och utbyggbarhet också faktorer.

Det vanligaste systemet gör en fördjupad effektanalys och räknar ut hur man kan hålla strömförbrukningen låg samtidigt som man behåller tillräcklig prestanda.

Prestanda

Modern datorprestanda beskrivs ofta i instruktioner per cykel (IPC), som mäter arkitekturens effektivitet vid vilken klockfrekvens som helst; en snabbare IPC -hastighet betyder att datorn är snabbare. Äldre datorer hade så låga IPC -värden som 0,1 medan moderna processorer enkelt når nära 1. Superskalära processorer kan nå tre till fem IPC genom att utföra flera instruktioner per klockcykel.

Att räkna maskinspråkiga instruktioner skulle vara vilseledande eftersom de kan utföra olika mängder arbete i olika ISA: er. "Instruktionen" i standardmätningarna är inte en räkning av ISA: s maskinspråkiga instruktioner, utan en måttenhet, vanligtvis baserad på hastigheten på VAX- datorarkitekturen.

Många brukade mäta datorns hastighet med klockfrekvensen (vanligtvis i MHz eller GHz). Detta avser cyklerna per sekund för huvudklockan på CPU: n. Detta mått är dock något vilseledande, eftersom en maskin med högre klockfrekvens inte nödvändigtvis har högre prestanda. Som ett resultat har tillverkarna gått bort från klockhastigheten som ett mått på prestanda.

Andra faktorer påverkar hastigheten, såsom blandningen av funktionella enheter , busshastigheter , tillgängligt minne och typ och ordning på instruktioner i programmen.

Det finns två huvudtyper av hastighet: latens och genomströmning. Latency är tiden mellan starten av en process och dess slutförande. Genomströmning är mängden arbete som utförs per tidsenhet. Avbrottsfördröjning är den garanterade maximala svarstiden för systemet till en elektronisk händelse (som när hårddisken har flyttat vissa data).

Prestanda påverkas av ett mycket brett utbud av designalternativ - till exempel gör pipelining av en processor vanligtvis latensen sämre, men gör genomströmningen bättre. Datorer som styr maskiner kräver vanligtvis låga avbrottsfördröjningar. Dessa datorer fungerar i en realtidsmiljö och misslyckas om en åtgärd inte slutförs inom en viss tid. Till exempel måste datorstyrda låsningsfria bromsar börja bromsa inom en förutsägbar och begränsad tidsperiod efter det att bromspedalen känns av, annars kommer bromsen att inträffa.

Benchmarking tar hänsyn till alla dessa faktorer genom att mäta den tid en dator tar att köra igenom en serie testprogram. Även om benchmarking visar styrkor, borde det inte vara hur du väljer en dator. Ofta delar de uppmätta maskinerna på olika mått. Till exempel kan ett system hantera vetenskapliga applikationer snabbt, medan ett annat kan göra videospel smidigare. Dessutom kan designers rikta in sig på och lägga till specialfunktioner i sina produkter, genom hårdvara eller mjukvara, som gör att ett specifikt riktmärke kan utföras snabbt men inte erbjuder liknande fördelar med allmänna uppgifter.

Effektivitet

Energieffektivitet är en annan viktig mätning i moderna datorer. En högre energieffektivitet kan ofta handlas för lägre hastighet eller högre kostnad. Den typiska mätningen när det gäller strömförbrukning i datorarkitektur är MIPS/W (miljoner instruktioner per sekund per watt).

Moderna kretsar har mindre effekt som krävs per transistor när antalet transistorer per chip växer. Detta beror på att varje transistor som sätts i ett nytt chip kräver sin egen strömförsörjning och kräver att nya vägar byggs för att driva det. Antalet transistorer per chip börjar dock öka med en långsammare takt. Därför börjar energieffektiviteten bli lika viktig, om inte viktigare än att montera fler och fler transistorer i ett enda chip. De senaste processordesignerna har visat denna vikt eftersom de lägger mer fokus på energieffektivitet snarare än att pressa ihop så många transistorer till ett enda chip som möjligt. I världen av inbäddade datorer har energieffektivitet länge varit ett viktigt mål bredvid genomströmning och latens.

Förändringar i marknadens efterfrågan

Ökningar i klockfrekvens har ökat långsammare under de senaste åren, jämfört med förbättringar av effektminskning. Detta har drivits av slutet på Moores lag och krav på längre batteritid och minskningar i storlek för mobil teknik. Denna förändring i fokus från högre klockfrekvenser till strömförbrukning och miniatyrisering kan visas av de betydande minskningar av energiförbrukningen, så mycket som 50%, som rapporterades av Intel i deras lansering av Haswell mikroarkitektur ; där de sänkte sitt energiförbrukningsriktmärke från 30 till 40 watt ner till 10-20 watt. Om man jämför detta med ökningen av bearbetningshastigheten med 3 GHz till 4 GHz (2002 till 2006) kan man se att fokus inom forskning och utveckling flyttas bort från klockfrekvensen och går mot att förbruka mindre ström och tar mindre plats.

Se även

Referenser

Källor

externa länkar