Hoppa till innehållet

Processorarkitektur

Från Wikipedia
En någorlunda modern CPU:s arkitektur

Processorarkitektur kallar man det sätt en centralprocessor (CPU) eller annan processor arbetar på. Processorerna har normalt, på lite olika sätt, hand om all databehandling inklusive såväl aritmetiska som logiska beräkningar.

Vidstående figur visar lite förenklat hur en CPU kan fungera. Den nyttjar dock inget indexregister vilket är en finess som tillkom först 1949. I övrigt återspeglar den en fullt funktionell CPU.

Vi har alltså:

Förutom ovanstående behövs:

  • Ett CCR (Condition Code Register) för att tyda de aritmetiska operationernas resultat. Till exempel har vi så kallade flaggor för negativt tal (Negative, N=1), för stort tal (Carry, C=1), noll (Zero, Z=1) och utanför talområdet (Overflow, V=1). I normala fall har vi även flaggor för Interrupt (I) och så kallad Half Carry (H) som inträffar mellan nibblar vid aritmetiska operationer.
  • En heladderare (FA) för additionen eller subtraktionen (på tvåkomplementsform) som inte alltid behöver göras på flyttalsform.
  • Vi kan skippa separat multiplikator/dividerare om man kan acceptera multipler om 2 som aritmetisk operation med hjälp av skiftning (LSL=*2, LSR=/2) (Horners metod).

Dessutom kan det vara bra att ha:

  • Ett stackpekarregister (SP). Detta speciellt om man vill kunna använda sig av subrutinanrop (som kräver att minst PC 1 sparas undan som återhoppsadress). Det är ännu viktigare vid interrupt (IRQ) om man väljer att implementera det i sin processor.

Basal heltalsrepresentation

[redigera | redigera wikitext]
Relativa hopp

Bilden visar hur relativa villkors-hopp (och därmed positiva och negativa tal) räknas ut och görs i en processor. Efter att ha studerat artikeln 2-komplement och artikelavsnittet heladderare förstår vi bilden bättre. I figuren har vi antagit att programräknaren (PC) är en byte stor och att villkors-offseten är hälften så stor dvs. en nibbel eller 7/-8 i tallängd. Man ser till exempel att V-flaggan (Overflow) aktiveras för (26 3) dvs. tallängden är överskriden (indikeras logiskt av C4 XOR C3 om nu det förtydligar). Negativa tal (N) indikeras av att MSB i nibbeln (och alla övriga högre bitpositioner, vilket är viktigt att komma ihåg) är hög (se till exempel 26 (-8)). Carry (C) genereras sedan exempelvis för (2C 5). Slutligen genereras Z-flaggan (noll) av den logiska operatorn NOR på hela resultatet.

När vi nu förstår grundläggande heltalsrepresentation kan vi gå vidare till flyttalsrepresentation.

Flyttalsrepresentation

[redigera | redigera wikitext]

Flyttal kallas den typen av tal som har en teckenbit (S), en exponent (E) på tvåkomplementsform och en mantissa (signifikant, M). Normalt representeras ett flyttal med hjälp av 32 bitar där teckenbiten naturligtvis är en bit, exponenten 8 bitar och mantissan således 23 bitar. Ett godtyckligt tal kan då skrivas:

där S=1 alltså indikerar ett negativt tal och exponenten gör att tal mellan 2-128 och 2127 (vilket lite grovt motsvarar 10 /-38) kan representeras. Det bör tilläggas att mantissans värde motsvaras av den seriella utvecklingen av 2-n där n=0 motsvaras av mantissans MSB. Detta kan också skrivas:

där mn är mantissans koefficienter (som alltså antingen är 0 eller 1).

Instruktioner och data

[redigera | redigera wikitext]

En processorarkitektur kan delas upp i följande tre kategorier, som behandlar hur data och instruktioner hämtas in till processorn.

  • von Neumann-arkitekturen. Instruktioner och arbetsdata samsas på en och samma buss. till exempel att ett program laddas in från hårddisken till RAM-minnet i en dator, och sedan körs det därifrån. I RAM-minnet ligger även den data som programmet arbetar med.
  • Harvardarkitekturen. Instruktioner och arbetsdata har två olika bussar, på så sätt kan till exempel resultatet av en instruktion skrivas till RAM-minnet samtidigt som nästa instruktion hämtas från instruktionsminnet. Används ofta i mindre elektriska apparater, till exempel miniräknare eller digitalur.
  • Modifierad Harvard-arkitekturen påminner mycket om Harvard, men har en extra dataväg mellan instruktionsminnet och data-ingången på processorn, så att till exempel konstanta textsträngar kan lagras i programmet (i instruktionsregistret), och kommas åt som vanlig data.

Processorarkitekturer definieras även efter hur breda så kallade ord de förmår hantera (i ett steg). Att en processor har till exempel en 16-bitars-ordlängd innebär att alla viktiga databussar i och runt den är 16 bitar breda. Många processorer har olika ordbredd i olika bussar, varvid termen inte är entydig.

  • 8-bitars bredd användes från början av 1970-talet i mikroprocessorer. 8-bitars mikroprocessorer (med 16-bit adressering) är fortfarande den vanligast förekommande processortypen i inbyggda system. I flera av Texas Instruments grafiska kalkylatorer finns Z80, en 8-bitars processor med många 16-bitars instruktioner.
  • 16-bitar har använts åtminstone sedan 1970 (PDP-11). Numera används 16-bitars mikroprocessorer i inbyggda system.
  • 32-bitar har använts sedan tidigt 1960-tal (IBM System/360). Intels första 32-bit processor iAPX 432 lanserades 1981; den första 32-bit x86-processorn, 80386, lanserades 1985.
  • 64-bitar har använts sedan tidigt 1960-tal (IBM 7030). En x86-baserad 64-bit arkitektur definierades av AMD 1999 och levererades i kvantitet 2003.

Andra ordlängder som använts i populära datorarkitekturer är till exempel 18 och 36 bitar (versioner av DEC PDP-serien bl.a.); även till exempel 10, 12, 22, 26, 27, 40, 48, 50, och 60 bitar har förekommit genom åren (se till exempel Word (computing) på eng. wikipedia).

Instruktionshantering

[redigera | redigera wikitext]

Datorarkitekturer kan även delas in i hur komplexa arkitekturer de har.

  • CISC (eng. Complex Instruction Set Computing), ett system där väldigt komplicerade instruktioner kan förekomma. I många CISC-processorer är det ett litet inbyggt mikroprogram i processorn som utför instruktionen. På så sätt kan instruktioner som utför långa sekvenser av operationer byggas.
  • RISC (eng. Reduced Instruction Set Computing), en arkitektur som endast tillåter ett begränsat antal instruktioner, men där dessa å andra sidan kan utföras väldigt fort och effektivt.

Numeriskt data som skall behandlas av enskilda instruktioner kan vara ordnat på olika sätt. Den viktigaste skillnaden är byteordningen på heltal (vilka inbegriper till exempel instruktionsadresserna).

  • John P. Hayes, Computer Architecture and Organisation, Second Edition, 1988, Singapore

Externa länkar

[redigera | redigera wikitext]