Computer arkitektur - Computer architecture

Blokdiagram over en grundlæggende computer med uniprocessor -CPU. Sorte linjer angiver dataflow, mens røde linjer angiver kontrolflow. Pile angiver strømningsretningen.

I computerteknik er computerarkitektur et sæt regler og metoder, der beskriver funktionalitet, organisering og implementering af computersystemer . Arkitekturen i et system refererer til dets struktur med hensyn til separat specificerede komponenter i systemet og deres indbyrdes forhold.

Nogle definitioner af arkitektur definerer det som at beskrive en computers muligheder og programmeringsmodel, men ikke en bestemt implementering. I andre definitioner involverer computerarkitektur instruktionssætarkitekturdesign , mikroarkitekturdesign , logisk design og implementering .

Historie

Den første dokumenterede computerarkitektur var i korrespondancen mellem Charles Babbage og Ada Lovelace , der beskriver den analytiske motor . Da han byggede computeren Z1 i 1936, beskrev Konrad Zuse i to patentansøgninger til sine fremtidige projekter, at maskininstruktioner kunne gemmes i det samme lagringssted, der bruges til data, dvs. konceptet med lagret program . To andre tidlige og vigtige eksempler er:

Udtrykket "arkitektur" i computerlitteratur kan spores til Lyle R. Johnson og Frederick P. Brooks, Jr. , medlemmer af Machine Organization -afdelingen i IBM's hovedforskningscenter i 1959. Johnson havde mulighed for at skrive en proprietær forskningskommunikation om Stretch , en IBM-udviklet supercomputer til Los Alamos National Laboratory (på det tidspunkt kendt som Los Alamos Scientific Laboratory). For at beskrive detaljeringsniveauet for at diskutere den luksuriøst udsmykkede computer bemærkede han, at hans beskrivelse af formater, instruktionstyper, hardware -parametre og hastighedsforbedringer var på niveau med "systemarkitektur", et udtryk, der virkede mere nyttigt end "maskinorganisation ”.

Efterfølgende åbnede Brooks, en Stretch -designer, kapitel 2 i en bog, der hedder Planning a Computer System: Project Stretch ved at sige: “Computer arkitektur, ligesom anden arkitektur, er kunsten at bestemme behovene hos brugeren af ​​en struktur og derefter designe til opfylde disse behov så effektivt som muligt inden for økonomiske og teknologiske begrænsninger. ”

Brooks hjalp videre med at udvikle IBM System/360 (nu kaldet IBM zSeries ) computere, hvor "arkitektur" blev et substantiv, der definerede "hvad brugeren skal vide". Senere kom computerbrugere til at bruge udtrykket på mange mindre eksplicitte måder.

De tidligste computerarkitekturer blev designet på papir og derefter direkte indbygget i den endelige hardwareform. Senere blev computerarkitekturprototyper fysisk bygget i form af en transistor-transistor logik (TTL) computer-såsom prototyperne fra 6800 og PA-RISC- testet og tweaket, før de gik i gang med den sidste hardwareform. Fra 1990'erne "bygges", testes og finjusteres nye computerarkitekturer typisk - inden for en anden computerarkitektur i en computerarkitektursimulator ; eller inde i en FPGA som en blød mikroprocessor ; eller begge dele - før du går videre til den endelige hardwareformular.

Underkategorier

Computerarkitekturen har tre hovedkategorier:

Der er andre teknologier inden for computerarkitektur. Følgende teknologier bruges i større virksomheder som Intel, og blev anslået i 2002 til at tælle til 1% af al computerarkitektur:

  • Makroarkitektur : arkitektoniske lag mere abstrakte end mikroarkitektur
  • Monteringsinstruksionsarkitektur : En smart assembler kan konvertere et abstrakt samlingssprog, der er fælles for en gruppe maskiner, til lidt anderledes maskinsprog til forskellige implementeringer .
  • Programmer-synlig makroarkitektur : Sprogværktøjer på højere niveau, såsom kompilatorer, kan definere en konsekvent grænseflade eller kontrakt til programmører, der bruger dem, og abstrahere forskelle mellem underliggende ISA, UISA og mikroarkitekturer . F.eks. Definerer C- , C ++ -eller Java- standarderne forskellige programmør-synlige makroarkitekturer.
  • Mikrokode : mikrokode er software, der oversætter instruktioner til at køre på en chip. Det fungerer som en indpakning omkring hardwaren og præsenterer en foretrukken version af hardwareens instruktionssæt -grænseflade. Denne instruktionsoversættelsesfunktion giver chipdesignere fleksible muligheder: F.eks. 1. En ny forbedret version af chippen kan bruge mikrokode til at præsentere det nøjagtig samme instruktionssæt som den gamle chipversion, så al software, der er målrettet mod det instruktionssæt, kører på den nye chip uden har brug for ændringer. F.eks. 2. Mikrokode kan præsentere en række forskellige instruktionssæt for den samme underliggende chip, så den kan køre et bredere udvalg af software.
  • UISA : User Instruction Set Architecture, refererer til et af tre undersæt af RISC CPU -instruktionerne fra PowerPC RISC -processorer. UISA -undersættet er de RISC -instruktioner, der er interessante for applikationsudviklere. De to andre undersæt er VEA (Virtual Environment Architecture) instruktioner, der bruges af virtualiseringssystemudviklere, og OEA (Operating Environment Architecture), der bruges af Operations System -udviklere.
  • Pin -arkitektur : Hardwarefunktionerne, som en mikroprocessor skal levere til en hardwareplatform, f.eks. X86 -benene A20M, FERR/IGNNE eller FLUSH. Også meddelelser, som processoren skal udsende, så eksterne caches kan ugyldiggøres (tømmes). Pinarkitekturfunktioner er mere fleksible end ISA -funktioner, fordi ekstern hardware kan tilpasse sig nye kodninger eller skifte fra en pin til en meddelelse. Udtrykket "arkitektur" passer, fordi funktionerne skal leveres til kompatible systemer, selvom den detaljerede metode ændres.

Roller

Definition

Computerarkitektur handler om at afbalancere ydeevne, effektivitet, omkostninger og pålidelighed af et computersystem. Sagen med instruktionssætarkitektur kan bruges til at illustrere balancen mellem disse konkurrerende faktorer. Mere komplekse instruktionssæt gør det muligt for programmører at skrive mere pladseffektive programmer, da en enkelt instruktion kan kode nogle abstraktioner på et højere niveau (f.eks. X86 Loop-instruktionen). Imidlertid tager længere og mere komplekse instruktioner længere tid for processoren at afkode og kan være dyrere at implementere effektivt. Den øgede kompleksitet fra et stort instruktionssæt skaber også mere plads til upålidelighed, når instruktioner interagerer på uventede måder.

Implementeringen involverer integreret kredsløbsdesign, emballage, strøm og køling. Optimering af designet kræver kendskab til kompilatorer, operativsystemer til logisk design og emballage.

Instruktion sæt arkitektur

En instruktionssætarkitektur (ISA) er grænsefladen mellem computerens software og hardware og kan også ses som programmørens visning af maskinen. Computere forstår ikke programmeringssprog på højt niveau, f.eks. Java, C ++ eller de fleste programmeringssprog, der bruges. En processor forstår kun instruktioner, der er kodet på en numerisk måde, normalt som binære tal . Softwareværktøjer, såsom kompilatorer , oversætter disse sprog på højt niveau til instruktioner, som processoren kan forstå.

Udover instruktioner definerer ISA elementer i computeren, der er tilgængelige for et program - f.eks. Datatyper , registre , adresseringstilstande og hukommelse. Instruktioner finder disse tilgængelige emner med registerindekser (eller navne) og hukommelsesadresseringstilstande.

En computers ISA er normalt beskrevet i en lille brugsanvisning, som beskriver, hvordan instruktionerne er kodet. Det kan også definere korte (vagt) mnemoniske navne til instruktionerne. Navnene kan genkendes af et softwareudviklingsværktøj kaldet en assembler . En assembler er et computerprogram, der oversætter en menneskelæselig form for ISA til en computerlæsbar form. Adskillere er også bredt tilgængelige, normalt i fejlfindere og softwareprogrammer for at isolere og rette fejl i binære computerprogrammer.

ISA'er varierer i kvalitet og fuldstændighed. En god ISA går på kompromis mellem programmeringsvenlighed (hvor let koden er at forstå), kodens størrelse (hvor meget kode der kræves for at udføre en bestemt handling), computerens omkostninger til at fortolke instruktionerne (mere kompleksitet betyder mere hardware nødvendig for at afkode og udføre instruktionerne), og computerens hastighed (med mere kompleks afkodningshardware kommer længere afkodningstid). Hukommelsesorganisation definerer, hvordan instruktioner interagerer med hukommelsen, og hvordan hukommelse interagerer med sig selv.

Under designemulering kan emulatorer køre programmer skrevet i et foreslået instruktionssæt. Moderne emulatorer kan måle størrelse, pris og hastighed for at afgøre, om en bestemt ISA opfylder sine mål.

Computer organisation

Computerorganisation hjælper med at optimere præstationsbaserede produkter. Softwareingeniører skal f.eks. Kende processorkraften hos processorer. De skal muligvis optimere softwaren for at få størst ydelse til den laveste pris. Dette kan kræve en ganske detaljeret analyse af computerens organisation. For eksempel på et SD -kort skal designerne muligvis arrangere kortet, så flest data kan behandles hurtigst muligt.

Computerorganisation hjælper også med at planlægge valget af en processor til et bestemt projekt. Multimedieprojekter kan have brug for meget hurtig datatilgang, mens virtuelle maskiner kan have brug for hurtige afbrydelser. Nogle gange har visse opgaver også brug for yderligere komponenter. For eksempel har en computer, der kan køre en virtuel maskine, brug for hardware til virtuel hukommelse, så hukommelsen på forskellige virtuelle computere kan holdes adskilt. Computerorganisation og funktioner påvirker også strømforbrug og processoromkostninger.

Implementering

Når først et instruktionssæt og mikroarkitektur er designet, skal der udvikles en praktisk maskine. Denne designproces kaldes implementering . Implementering betragtes normalt ikke som arkitektonisk design, men derimod hardware design engineering . Implementeringen kan yderligere opdeles i flere trin:

  • Logisk implementering designer de kredsløb, der kræves på et logisk gate- niveau.
  • Kredsløbsimplementering udfører transistor -niveaudesign af grundelementer (f.eks. Porte, multiplexere , låse ) samt af nogle større blokke ( ALU'er , cacher osv.), Der kan implementeres på logik -gate -niveau eller endda på det fysiske niveau hvis designet kræver det.
  • Fysisk implementering trækker fysiske kredsløb. De forskellige kredsløbskomponenter placeres i en chip -plan eller på et bræt, og ledningerne, der forbinder dem, oprettes.
  • Designvalidering tester computeren som helhed for at se, om den fungerer i alle situationer og alle tidspunkter. Når designvalideringsprocessen starter, testes designet på logisk niveau ved hjælp af logiske emulatorer. Dette er dog normalt for langsomt til at køre en realistisk test. Så efter at have foretaget korrektioner baseret på den første test, konstrueres prototyper ved hjælp af feltprogrammerbare gate-arrays ( FPGA'er ). De fleste hobbyprojekter stopper på dette tidspunkt. Det sidste trin er at teste prototype integrerede kredsløb, som kan kræve flere redesign.

For CPU'er er hele implementeringsprocessen organiseret anderledes og omtales ofte som CPU -design .

Design mål

Den nøjagtige form for et computersystem afhænger af begrænsningerne og målene. Computerarkitekturer afvejer normalt standarder, strøm versus ydeevne, omkostninger, hukommelseskapacitet, latens (latenstid er den tid, det tager, før information fra en node rejser til kilden) og gennemstrømning. Nogle gange er andre overvejelser, såsom funktioner, størrelse, vægt, pålidelighed og udvidelsesmuligheder også faktorer.

Den mest almindelige ordning foretager en grundig effektanalyse og finder ud af, hvordan man kan holde strømforbruget lavt, samtidig med at man opretholder tilstrækkelig ydeevne.

Ydeevne

Moderne computerydelse er ofte beskrevet i instruktioner pr. Cyklus (IPC), som måler arkitekturens effektivitet ved enhver urfrekvens; en hurtigere IPC -hastighed betyder, at computeren er hurtigere. Ældre computere havde IPC -tal så lave som 0,1, mens moderne processorer let når tæt på 1. Superscalar -processorer kan nå tre til fem IPC ved at udføre flere instruktioner pr. Urcyklus.

At tælle maskinsprogede instruktioner ville være vildledende, fordi de kan udføre forskellige mængder arbejde i forskellige ISA'er. "Instruktionen" i standardmålingerne er ikke en optælling af ISA's maskinsprogede instruktioner, men en måleenhed, normalt baseret på hastigheden på VAX- computerarkitekturen.

Mange mennesker målte en computers hastighed med urfrekvensen (normalt i MHz eller GHz). Dette refererer til cyklusser pr. Sekund af hoveduret på CPU'en. Denne måling er dog noget misvisende, da en maskine med en højere urfrekvens ikke nødvendigvis har større ydelse. Som et resultat har producenterne bevæget sig væk fra clockhastigheden som et mål for ydeevne.

Andre faktorer påvirker hastigheden, såsom blandingen af funktionelle enheder , bushastigheder , tilgængelig hukommelse og typen og rækkefølgen af ​​instruktioner i programmerne.

Der er to hovedtyper af hastighed: latenstid og gennemløb. Latens er tiden mellem starten af ​​en proces og dens afslutning. Gennemstrømning er mængden af ​​arbejde udført pr. Tidsenhed. Afbrydelsesforsinkelse er den garanterede maksimale responstid for systemet på en elektronisk begivenhed (f.eks. Når diskdrevet færdiggør at flytte nogle data).

Ydeevnen påvirkes af en meget bred vifte af designvalg - for eksempel gør pipelining af en processor normalt forsinkelse i ventetid, men gør gennemstrømning bedre. Computere, der styrer maskiner, har normalt brug for lave afbrydelsesforsinkelser. Disse computere fungerer i et real-time miljø og mislykkes, hvis en operation ikke er afsluttet inden for en bestemt tid. F.eks. Skal computerstyrede antiblokeringsbremser begynde at bremse inden for en forudsigelig og begrænset tidsperiode, efter at bremsepedalen er registreret, ellers opstår der en fejl i bremsen.

Benchmarking tager alle disse faktorer i betragtning ved at måle den tid, en computer tager at køre gennem en række testprogrammer. Selvom benchmarking viser styrker, bør det ikke være, hvordan du vælger en computer. Ofte deler de målte maskiner sig på forskellige mål. For eksempel kan et system håndtere videnskabelige applikationer hurtigt, mens et andet kan gøre videospil mere problemfrit. Desuden kan designere målrette og tilføje særlige funktioner til deres produkter via hardware eller software, der tillader et specifikt benchmark at udføre hurtigt, men ikke giver lignende fordele til generelle opgaver.

Strømeffektivitet

Strømeffektivitet er en anden vigtig måling i moderne computere. En højere strømeffektivitet kan ofte byttes til lavere hastighed eller højere omkostninger. Den typiske måling ved henvisning til strømforbrug i computerarkitektur er MIPS/W (millioner af instruktioner pr. Sekund pr. Watt).

Moderne kredsløb har mindre krævet effekt pr. Transistor, da antallet af transistorer pr. Chip vokser. Dette skyldes, at hver transistor, der sættes i en ny chip, kræver sin egen strømforsyning og kræver, at der bygges nye veje for at drive den. Antallet af transistorer pr. Chip begynder dog at stige med en langsommere hastighed. Derfor begynder strømeffektiviteten at blive lige så vigtig, hvis ikke vigtigere end at montere flere og flere transistorer i en enkelt chip. Nylige processordesign har vist denne vægt, da de lægger mere fokus på energieffektivitet frem for at proppe så mange transistorer ind i en enkelt chip som muligt. I en verden af ​​integrerede computere har strømeffektivitet længe været et vigtigt mål ved siden af ​​gennemstrømning og latenstid.

Forskydninger i markedets efterspørgsel

Stigninger i urfrekvensen er vokset langsommere i løbet af de sidste par år sammenlignet med forbedringer i strømreduktion. Dette er blevet drevet af slutningen af Moores lov og krav om længere batterilevetid og størrelsesreduktioner for mobil teknologi. Denne ændring i fokus fra højere urhastigheder til strømforbrug og miniaturisering kan ses ved de betydelige reduktioner i strømforbruget, så meget som 50%, som blev rapporteret af Intel i deres udgivelse af Haswell mikroarkitekturen ; hvor de faldt deres benchmark for strømforbrug fra 30 til 40 watt ned til 10-20 watt. Når man sammenligner dette med stigningen i behandlingshastigheden på 3 GHz til 4 GHz (2002 til 2006) kan det ses, at fokus inden for forskning og udvikling bevæger sig væk fra urfrekvensen og bevæger sig i retning af at forbruge mindre strøm og optager mindre plads.

Se også

Referencer

Kilder

eksterne links