Datamaskinarkitektur - Computer architecture

Blokkdiagram over en grunnleggende datamaskin med enprosessor -CPU. Svarte linjer indikerer dataflyt, mens røde linjer indikerer kontrollflyt. Piler angir strømningsretningen.

I datateknikk er datamaskinarkitektur et sett med regler og metoder som beskriver funksjonalitet, organisering og implementering av datasystemer . Arkitekturen til et system refererer til strukturen når det gjelder separat spesifiserte komponenter i systemet og deres sammenhenger.

Noen definisjoner av arkitektur definerer det som å beskrive mulighetene og programmeringsmodellen til en datamaskin, men ikke en bestemt implementering. I andre definisjoner innebærer datamaskinarkitektur instruksjonsarkitekturdesign , mikroarkitekturdesign , logisk design og implementering .

Historie

Den første dokumenterte datamaskinarkitekturen var i korrespondansen mellom Charles Babbage og Ada Lovelace , som beskrev den analytiske motoren . Da han bygde datamaskinen Z1 i 1936, beskrev Konrad Zuse i to patentsøknader for sine fremtidige prosjekter at maskininstruksjoner kan lagres i samme lagring som brukes til data, dvs. konseptet med lagret program . To andre tidlige og viktige eksempler er:

Begrepet "arkitektur" i datalitteratur kan spores til arbeidet til Lyle R. Johnson og Frederick P. Brooks, Jr. , medlemmer av avdelingen for maskinorganisasjon i IBMs hovedforskningssenter i 1959. Johnson hadde muligheten til å skrive en proprietær forskningskommunikasjon om Stretch , en IBM-utviklet superdatamaskin for Los Alamos National Laboratory (den gang kjent som Los Alamos Scientific Laboratory). For å beskrive detaljnivået for å diskutere den luksuriøst utsmykkede datamaskinen bemerket han at beskrivelsen av formater, instruksjonstyper, maskinvareparametere og hastighetsforbedringer var på nivået med "systemarkitektur", et begrep som virket mer nyttig enn "maskinorganisasjon" ”.

Deretter åpnet Brooks, en Stretch -designer, kapittel 2 i en bok kalt Planning a Computer System: Project Stretch ved å si: "Dataarkitektur, som annen arkitektur, er kunsten å bestemme behovene til brukeren av en struktur og deretter designe til møte disse behovene så effektivt som mulig innenfor økonomiske og teknologiske begrensninger. ”

Brooks hjalp videre med å utvikle IBM System/360 (nå kalt IBM zSeries ) datamaskinlinje, der "arkitektur" ble et substantiv som definerte "hva brukeren trenger å vite". Senere kom databrukere til å bruke begrepet på mange mindre eksplisitte måter.

De tidligste datamaskinarkitekturene ble designet på papir og deretter direkte bygget inn i den endelige maskinvareformen. Senere ble prototyper for datamaskinarkitektur fysisk bygget i form av en transistor-transistor logic (TTL) datamaskin-for eksempel prototypene til 6800 og PA-RISC- testet og justert, før de gikk til den endelige maskinvareformen. Fra 1990 -tallet blir nye datamaskinarkitekturer vanligvis "bygget", testet og justert - inne i en annen datamaskinarkitektur i en dataarkitektursimulator ; eller inne i en FPGA som en myk mikroprosessor ; eller begge deler - før du forplikter deg til det endelige maskinvareskjemaet.

Underkategorier

Fagområdet dataarkitektur har tre hovedkategorier:

Det finnes andre teknologier innen datamaskinarkitektur. Følgende teknologier brukes i større selskaper som Intel, og ble anslått i 2002 til å telle 1% av all dataarkitektur:

  • Makroarkitektur : arkitektoniske lag mer abstrakte enn mikroarkitektur
  • Monteringsinstruksjonsarkitektur : En smart montør kan konvertere et abstrakt samlingsspråk som er felles for en gruppe maskiner til litt annet maskinspråk for forskjellige implementeringer .
  • Programmerbar makroarkitektur : språkverktøy på høyere nivå som kompilatorer kan definere et konsistent grensesnitt eller en kontrakt til programmerere som bruker dem, og abstrahere forskjeller mellom underliggende ISA, UISA og mikroarkitekturer . For eksempel definerer C , C ++ eller Java- standardene forskjellige programmeringssynlige makroarkitekturer.
  • Mikrokode : mikrokode er programvare som oversetter instruksjoner for å kjøre på en brikke. Det fungerer som et omslag rundt maskinvaren, og presenterer en foretrukket versjon av maskinvarens instruksjonsgrensesnitt. Denne instruksjonsoversettelsesfunksjonen gir brikkedesignere fleksible alternativer: F.eks. En ny forbedret versjon av brikken kan bruke mikrokode til å presentere nøyaktig samme instruksjonssett som den gamle brikkeversjonen, så all programvare som er rettet mot instruksjonssettet vil kjøre på den nye brikken uten trenger endringer. Eks. 2. Mikrokode kan presentere en rekke instruksjonssett for den samme underliggende brikken, slik at den kan kjøre et bredere utvalg av programvare.
  • UISA : User Instruction Set Architecture, refererer til ett av tre delsett av RISC CPU -instruksjonene levert av PowerPC RISC -prosessorer. UISA -delsettet er de RISC -instruksjonene som er interessante for applikasjonsutviklere. De to andre undergruppene er VEA (Virtual Environment Architecture) instruksjoner som brukes av virtualiseringssystemutviklere, og OEA (Operating Environment Architecture) som brukes av Operativsystemutviklere.
  • Pin -arkitektur : Maskinvarefunksjonene som en mikroprosessor skal tilby til en maskinvareplattform, f.eks. X86 -pinnene A20M, FERR/IGNNE eller FLUSH. Også meldinger som prosessoren skal sende ut slik at eksterne cacher kan ugyldiggjøres (tømmes). Pin -arkitekturfunksjoner er mer fleksible enn ISA -funksjoner fordi ekstern maskinvare kan tilpasse seg nye kodinger, eller bytte fra en pin til en melding. Begrepet "arkitektur" passer, fordi funksjonene må gis for kompatible systemer, selv om den detaljerte metoden endres.

Roller

Definisjon

Dataarkitektur er opptatt av å balansere ytelsen, effektiviteten, kostnaden og påliteligheten til et datasystem. Saken med instruksjonsarkitektur kan brukes til å illustrere balansen mellom disse konkurrerende faktorene. Mer komplekse instruksjonssett gjør det mulig for programmerere å skrive mer plasseffektive programmer, siden en enkelt instruksjon kan kode noen abstraksjon på høyere nivå (for eksempel x86 Loop-instruksjonen). Imidlertid tar lengre og mer komplekse instruksjoner lengre tid for prosessoren å dekode og kan bli mer kostbart å implementere effektivt. Den økte kompleksiteten fra et stort instruksjonssett skaper også mer rom for upålitelighet når instruksjoner samhandler på uventede måter.

Implementeringen innebærer integrert kretsdesign, emballasje, kraft og kjøling. Optimalisering av designet krever kjennskap til kompilatorer, operativsystemer til logisk design og emballasje.

Instruksjonsarkitektur

En instruksjonsarkitektur (ISA) er grensesnittet mellom datamaskinens programvare og maskinvare og kan også sees på som programmererens visning av maskinen. Datamaskiner forstår ikke programmeringsspråk på høyt nivå som Java, C ++, eller de fleste programmeringsspråk som brukes. En prosessor forstår bare instruksjoner som er kodet på en numerisk måte, vanligvis som binære tall . Programvareverktøy, for eksempel kompilatorer , oversetter disse språkene på høyt nivå til instruksjoner som prosessoren kan forstå.

I tillegg til instruksjoner, definerer ISA elementer på datamaskinen som er tilgjengelige for et program - f.eks. Datatyper , registre , adressemoduser og minne. Instruksjoner finner disse tilgjengelige elementene med registerindekser (eller navn) og minneadresseringsmoduser.

ISA for en datamaskin er vanligvis beskrevet i en liten bruksanvisning, som beskriver hvordan instruksjonene er kodet. Det kan også definere korte (vagt) mnemoniske navn for instruksjonene. Navnene kan gjenkjennes av et programvareutviklingsverktøy som kalles en assembler . En assembler er et dataprogram som oversetter en lesbar form av ISA til en datamaskinlesbar form. Demonteringsmaskiner er også allment tilgjengelige, vanligvis i debuggere og programmer for å isolere og rette feil i binære dataprogrammer.

ISAer varierer i kvalitet og fullstendighet. En god ISA kompromisser mellom programmeringsvennlighet (hvor lett koden er å forstå), størrelsen på koden (hvor mye kode som kreves for å utføre en bestemt handling), datamaskinens kostnad for å tolke instruksjonene (mer kompleksitet betyr mer maskinvare som trengs for å dekode og utføre instruksjonene), og datamaskinens hastighet (med mer kompleks dekoding av maskinvare kommer lengre dekodningstid). Minneorganisasjon definerer hvordan instruksjoner samhandler med minnet, og hvordan minne samhandler med seg selv.

Under designemulering kan emulatorer kjøre programmer skrevet i et foreslått instruksjonssett. Moderne emulatorer kan måle størrelse, kostnad og hastighet for å avgjøre om en bestemt ISA oppfyller sine mål.

Datamaskinorganisasjon

Datamaskinorganisasjon hjelper til med å optimalisere ytelsesbaserte produkter. For eksempel må programvareingeniører kjenne prosessorkraften til prosessorer. De må kanskje optimalisere programvaren for å få mest mulig ytelse til den laveste prisen. Dette kan kreve en ganske detaljert analyse av datamaskinens organisasjon. For eksempel, på et SD -kort, kan det hende at designerne må ordne kortet slik at mest mulig data kan behandles på raskest mulig måte.

Datamaskinorganisasjon hjelper også med å planlegge valg av prosessor for et bestemt prosjekt. Multimediaprosjekter kan trenge svært rask datatilgang, mens virtuelle maskiner kan trenge raske avbrudd. Noen ganger trenger visse oppgaver også flere komponenter. For eksempel trenger en datamaskin som kan kjøre en virtuell maskin virtuell minnemaskinvare, slik at minnet til forskjellige virtuelle datamaskiner kan holdes adskilt. Datamaskinorganisasjon og funksjoner påvirker også strømforbruk og prosessorkostnader.

Gjennomføring

Når et instruksjonssett og mikroarkitektur er designet, må en praktisk maskin utvikles. Denne designprosessen kalles implementering . Implementering regnes vanligvis ikke som arkitektonisk design, men heller hardware design engineering . Implementeringen kan videre deles inn i flere trinn:

  • Logisk implementering designer kretsene som kreves på et logisk gate- nivå.
  • Kretsimplementering utfører transistornivåkonstruksjoner av grunnleggende elementer (f.eks. Porter, multiplexere , låser ) så vel som av noen større blokker ( ALUer , cacher etc.) som kan implementeres på logisk gate -nivå, eller til og med på det fysiske nivået hvis designet krever det.
  • Fysisk implementering trekker fysiske kretser. De forskjellige kretskomponentene plasseres i en brikkeplan eller på et brett, og ledningene som forbinder dem opprettes.
  • Designvalidering tester datamaskinen som helhet for å se om den fungerer i alle situasjoner og alle tider. Når designvalideringsprosessen starter, testes designet på logisk nivå ved hjelp av logiske emulatorer. Imidlertid er dette vanligvis for sakte til å kjøre en realistisk test. Så etter å ha foretatt korreksjoner basert på den første testen, blir prototyper konstruert ved hjelp av feltprogrammerbare gate-arrays ( FPGA-er ). De fleste hobbyprosjekter stopper på dette stadiet. Det siste trinnet er å teste prototype integrerte kretser, noe som kan kreve flere redesigner.

For CPUer er hele implementeringsprosessen organisert annerledes og blir ofte referert til som CPU -design .

Design mål

Den eksakte formen for et datasystem avhenger av begrensninger og mål. Dataarkitekturer bytter vanligvis ut standarder, strøm mot ytelse, kostnader, minnekapasitet, latens (latens er tiden det tar før informasjon fra en node reiser til kilden) og gjennomstrømning. Noen ganger er andre hensyn, for eksempel funksjoner, størrelse, vekt, pålitelighet og utvidbarhet, også faktorer.

Det vanligste systemet gjør en grundig effektanalyse og finner ut hvordan du kan holde strømforbruket lavt mens du opprettholder tilstrekkelig ytelse.

Opptreden

Moderne datamaskinytelse er ofte beskrevet i instruksjoner per syklus (IPC), som måler effektiviteten til arkitekturen ved enhver klokkefrekvens; en raskere IPC -hastighet betyr at datamaskinen er raskere. Eldre datamaskiner hadde IPC -teller så lave som 0,1, mens moderne prosessorer enkelt når nær 1. Superscalar -prosessorer kan nå tre til fem IPC ved å utføre flere instruksjoner per klokkesyklus.

Å telle maskinspråklige instruksjoner ville være misvisende fordi de kan utføre varierende mengder arbeid i forskjellige ISA-er. "Instruksjonen" i standardmålingene er ikke en telling av ISAs maskinspråklige instruksjoner, men en måleenhet, vanligvis basert på hastigheten til VAX-dataarkitekturen .

Mange mennesker brukte til å måle datamaskinens hastighet med klokkefrekvensen (vanligvis i MHz eller GHz). Dette refererer til syklusene per sekund av hovedklokken til CPUen. Denne metrikken er imidlertid noe misvisende, ettersom en maskin med høyere klokkefrekvens ikke nødvendigvis har større ytelse. Som et resultat har produsentene beveget seg bort fra klokkehastigheten som et mål på ytelse.

Andre faktorer påvirker hastigheten, for eksempel blandingen av funksjonelle enheter , busshastigheter , tilgjengelig minne og typen og rekkefølgen på instruksjonene i programmene.

Det er to hovedtyper av hastighet: ventetid og gjennomstrømning. Forsinkelse er tiden mellom starten av en prosess og den er fullført. Gjennomstrømning er mengden arbeid som utføres per tidsenhet. Avbruddstid er den garanterte maksimale responstiden for systemet til en elektronisk hendelse (som når diskstasjonen er ferdig med å flytte noen data).

Ytelsen påvirkes av et veldig bredt spekter av designvalg - for eksempel gjør rørledning av en prosessor vanligvis forsinkelse i ventetid, men gjør gjennomstrømningen bedre. Datamaskiner som styrer maskiner trenger vanligvis lave avbruddsforsinkelser. Disse datamaskinene opererer i et sanntidsmiljø og mislykkes hvis en operasjon ikke er fullført på en bestemt tid. For eksempel må datamaskinstyrte blokkeringsfrie bremser begynne å bremse innen en forutsigbar og begrenset tidsperiode etter at bremsepedalen kjennes, ellers vil bremsen mislykkes.

Benchmarking tar hensyn til alle disse faktorene ved å måle tiden en datamaskin tar å kjøre gjennom en serie testprogrammer. Selv om benchmarking viser styrker, bør det ikke være hvordan du velger en datamaskin. Ofte deler de målte maskinene seg på forskjellige målinger. For eksempel kan et system håndtere vitenskapelige applikasjoner raskt, mens et annet kan gjøre videospill mer jevnt. Videre kan designere målrette og legge til spesialfunksjoner i produktene sine, gjennom maskinvare eller programvare, som gjør at en bestemt referanse kan utføres raskt, men som ikke gir lignende fordeler til generelle oppgaver.

Strømeffektivitet

Strømeffektivitet er en annen viktig måling i moderne datamaskiner. En høyere energieffektivitet kan ofte byttes for lavere hastighet eller høyere kostnader. Den typiske målingen når det refereres til strømforbruk i datamaskinarkitektur er MIPS/W (millioner av instruksjoner per sekund per watt).

Moderne kretser har mindre effekt som kreves per transistor ettersom antallet transistorer per brikke vokser. Dette er fordi hver transistor som settes i en ny brikke krever sin egen strømforsyning og krever at nye veier bygges for å drive den. Imidlertid begynner antallet transistorer per brikke å øke med en lavere hastighet. Derfor begynner strømeffektiviteten å bli like viktig, om ikke mer viktig enn å montere flere og flere transistorer i en enkelt brikke. Nylige prosessordesign har vist denne vektleggingen ettersom de legger mer fokus på energieffektivitet i stedet for å stappe så mange transistorer i en enkelt brikke som mulig. I verden av innebygde datamaskiner har strømeffektivitet lenge vært et viktig mål ved siden av gjennomstrømning og latens.

Endringer i markedets etterspørsel

Økninger i klokkefrekvens har vokst saktere de siste årene, sammenlignet med forbedringer i effektreduksjon. Dette har blitt drevet av slutten av Moores lov og krav om lengre batterilevetid og redusert størrelse på mobilteknologi. Denne endringen i fokus fra høyere klokkehastigheter til strømforbruk og miniatyrisering kan vises ved de betydelige reduksjonene i strømforbruket, så mye som 50%, som ble rapportert av Intel i utgivelsen av Haswell mikroarkitektur ; der de reduserte strømforbruksreferansen fra 30 til 40 watt ned til 10-20 watt. Når man sammenligner dette med økningen i prosesshastigheten på 3 GHz til 4 GHz (2002 til 2006) kan man se at fokuset innen forskning og utvikling beveger seg bort fra klokkefrekvensen og går mot å forbruke mindre strøm og ta mindre plass.

Se også

Referanser

Kilder

Eksterne linker