Aritmetisk logikkenhet

I databehandling er den aritmetiske logiske enheten eller den aritmetiske-logiske enheten , også kjent som ALU , en digital krets som utfører aritmetiske operasjoner (addisjon, subtraksjon) og logiske operasjoner (HVIS, OG, ELLER, IKKE) mellom verdiene til argumentene (ett eller to)

De klart mest komplekse elektroniske kretsene er de som er innebygd i moderne mikroprosessorbrikker . Derfor har disse prosessorene i seg en veldig kompleks og kraftig ALU. Faktisk kan en moderne mikroprosessor (og stormaskiner ) ha flere kjerner , hver kjerne med flere utførelsesenheter , hver med flere ALUer.

Mange andre kretser kan inneholde en aritmetisk logikkenhet inni: grafikkbehandlingsenheter som de som finnes i moderne GPUer , FPUer som den gamle 80387 matematiske koprosessoren og digitale signalprosessorer som de som finnes i lydkort , CD-spillere og HDTVer . Alle disse har flere kraftige og komplekse ALUer inni seg.

Historie: Von Neumann-forslaget

Matematiker John von Neumann foreslo konseptet med ALU i 1945 , da han skrev en rapport om grunnlaget for en ny datamaskin kalt EDVAC (Electronic Discrete Variable Automatic Computer). Senere, i 1946, jobbet han sammen med kollegene sine og designet en datamaskin for Princeton Institute of Advanced Studies (IAS). IAS-maskinen ble prototypen for mange senere datamaskiner . I dette forslaget skisserte von Neumann hva han mente ville være nødvendig i maskinen hans, inkludert en ALU.

Von Neumann forklarte at en ALU er et grunnleggende krav for en datamaskin fordi den må utføre grunnleggende matematiske operasjoner: addisjon, subtraksjon, multiplikasjon og divisjon. [ 1 ] Derfor mente han at det var «rimelig at en datamaskin skulle inneholde spesialiserte organer for disse operasjonene». [ 1 ]

Tallsystemer

En ALU må behandle tall med samme format som resten av den digitale kretsen. For moderne prosessorer er dette formatet nesten alltid representasjonen av de tos komplementære binære tall . Tidlige datamaskiner brukte et bredt utvalg av tallsystemer, inkludert ens komplement , fortegnsstørrelsesformat , og til og med ekte desimalsystemer , med ti rør per siffer.

ALU-ene for hvert av disse tallsystemene viste forskjellige design, og dette påvirket den nåværende preferansen for to-komplement, siden dette er den enkleste representasjonen, for den elektroniske kretsen til ALU, for å beregne addisjoner, subtraksjoner, etc. .

Praktisk introduksjon

ALU består i utgangspunktet av: Operasjonell krets , inngangsregistre , akkumulatorregister og et statsregister , et sett med registre som gjør det mulig å utføre hver av operasjonene.

De fleste handlingene til datamaskinen utføres av ALU. ALU henter data fra prosessorregistrene . Disse dataene blir behandlet og resultatene av denne operasjonen lagres i utgangsregistrene til ALU. Andre mekanismer flytter data mellom disse registrene og minnet. [ 2 ]

En kontrollenhet kontrollerer ALU, ved å sette kretser som forteller ALU hvilke operasjoner som skal utføres.

Detalj

Bildet beskriver en 2- bits ALU med to innganger (operander) kalt A og B: A[0] og B[0] tilsvarer den minst signifikante biten og A[1] og B[1] tilsvarer den mest signifikante biten .

Hver bit av ALU behandles identisk, med unntak av adressen til bærebiten . Håndteringen av denne biten er forklart senere.

Inngangene A og B går til de fire portene til høyre, fra topp til bunn, XOR , AND , OR . De tre første portene utfører XOR-, AND- og OR-operasjoner på data A og B. Den siste XOR-porten er startporten til en full adderer.

Det siste trinnet i operasjonene på hver bit er multipleksing av dataene. 3-bits OP-inngangen, OP[0], OP[1] og OP[2] (fra kontrollenheten ) bestemmer hvilke av funksjonene som skal utføres:

Det er tydelig at de andre fire multiplekserinngangene er ledige for andre operasjoner (subtraksjon, multiplikasjon, divisjon, IKKE A, IKKE B, osv.). Selv om OP[2] for øyeblikket ikke brukes i dette oppsettet (til tross for at det er inkludert og tilkoblet), vil det bli brukt når du utfører andre operasjoner i tillegg til de 4 operasjonene som er oppført ovenfor.

Inn- og utføringsdataene, kalt flagg, er vanligvis koblet til et slags statusregister .

Enkle operasjoner

De fleste ALU-er kan utføre følgende operasjoner:

Komplekse operasjoner

En ingeniør kan designe en ALU for å beregne enhver operasjon, uansett hvor kompleks den er. problemet er at jo mer kompleks operasjonen er, jo dyrere vil ALU være, jo mer plass vil den bruke i prosessoren, og jo mer kraft vil den spre osv.

Derfor beregner ingeniører alltid et kompromiss, for å gi prosessoren (eller andre kretser) en ALU som er kraftig nok til å beregne raskt, men ikke av en slik kompleksitet at det gjør en ALU økonomisk uoverkommelig. Tenk deg at du må regne ut for eksempel kvadratroten av et tall; den digitale ingeniøren vil undersøke følgende alternativer for å implementere denne operasjonen:

  1. Design en veldig kompleks ALU som beregner kvadratroten av et hvilket som helst tall i ett trinn. Dette kalles beregning i en enkelt klokkesyklus .
  2. Design en kompleks ALU som beregner kvadratroten med flere trinn (som algoritmen som noen av oss har lært på skolen). Dette kalles iterativ beregning , og er generelt avhengig av styringen av en kompleks kontrollenhet med innebygd mikrokode .
  3. Design en enkel ALU på prosessoren, og selg en egen, spesialisert, kostbar prosessor som kunden kan installere i tillegg til prosessoren, og som implementerer ett av alternativene ovenfor. Dette kalles en koprosessor eller flyttallenhet .
  4. Emuler eksistensen av koprosessoren, det vil si når et program prøver å utføre kvadratrotberegningen, få prosessoren til å sjekke for å se om en koprosessor er tilstede og bruke den hvis en er til stede; hvis det ikke er en, avbryte programprosessen og påkalle operativsystemet for å utføre kvadratrotberegningen ved hjelp av en bestemt programvarealgoritme . Dette kalles programvareemulering .
  5. Fortell programmererne at det ikke er noen koprosessor og det er ingen emulering, så de må skrive sine egne algoritmer for å beregne kvadratrøtter i programvare. Dette gjøres av programvarebiblioteker .

De beste alternativene spenner fra raskeste og dyreste til tregeste og billigste. Derfor, mens selv den enkleste datamaskinen kan beregne den mest kompliserte formelen, vil de enkleste datamaskinene vanligvis ta lang tid fordi flere av trinnene i å beregne formelen vil involvere alternativene #3, #4 og #5 ovenfor.

Komplekse prosessorer som Pentium IV og AMD Athlon 64 implementerer alternativ #1 for de mest komplekse operasjonene og tregere #2 for ekstremt komplekse operasjoner. Det er muliggjort av muligheten til å bygge svært komplekse ALUer på disse prosessorene.

Inn- og utganger

Inndataene til ALU er dataene som operasjonene skal utføres på (kalt operander ) og en kode fra kontrollenheten som indikerer hvilken operasjon som skal utføres. Utgangen er resultatet av beregningen av operasjonen.

I mange design tar eller genererer ALU også som innganger eller utganger et sett med tilstandskoder til eller fra et statusregister . Disse kodene brukes til å indikere tilfeller som bære inn eller ut, overløp , dele på null , etc. [ 2 ]

ALU vs. FPU

En flytepunktsenhet , Floating Point Unit ( FPU ), utfører også aritmetikk mellom to verdier, men den gjør det for tall i flytende kommarepresentasjon , som er mye mer komplisert enn de tos komplementrepresentasjon som vanligvis brukes i en ALU. For å gjøre disse beregningene har en FPU flere komplekse kretser innebygd, inkludert noen interne ALUer.

Kretser som utfører aritmetiske operasjoner i heltallsformater (som to-komplement og BCD ) kalles vanligvis ALU-er av ingeniører, mens kretser som beregner i mer komplekse formater som flytende komma , komplekse tall , etc., vanligvis gis et mer komplekst navn. spesifikke, for eksempel FPU.

Se også

Referanser

  1. a b Stallings side 19
  2. a b Stallings side 290-291

Eksterne lenker