From Wikipedia, the free encyclopedia
En aritmetisk logisk enhet (engelsk: arithmetic logic unit, forkortet ALU) er en elektronisk krets som utfører aritmetiske og logiske operasjoner. De er fundamentale byggeklosser i CPU-er og mange andre mikroprosessorer. Moderne CPU-er og GPU-er inneholder veldig kompliserte, og gjerne flere, ALU-er.
Matematikeren John von Neumann framla i 1945 konseptet med ALU-er i en rapport han skrev om en ny datamaskin kalt EDVAC.
Sammen med kollegaene sine, jobbet von Neumann i 1946 med å utvikle en datamaskin for Princeton Institute for Advanced Study. Denne ble prototypen for mange senere datamaskiner. Blant komponentene von Neumann mente at maskinen trengte, var en ALU.
Von Neumann hevdet at en ALU var en nødvendighet i en datamaskin, fordi det var hevet over all tvil at en de ville måtte utføre regneoperasjoner som addering, subtrahering, multiplisering og dividering. Han mente at det var naturlig at en datamaskin skulle ha spesialiserte «organer» for slike operasjoner.
En ALU må behandle tall på med samme format som resten av den digitale kretsen. For moderne prosessorer vil dette innebære å bruke binært tallsystem med toerkomplement. Tidlige datamaskiner brukte mange forskjellige måter å representere tall på, inkludert enerkomplement, fortegnsbit, og til og med titallsystemet. ALU-er for hvert av disse systemene har forskjellig design.
De fleste operasjonene i en prosessor utføres av én eller flere ALU-er. En ALU får sine data fra registre, utfører operasjonen og skriver resultatet til et register. En kontrollenhet forteller ALU-en hva slags operasjon den skal utføre. Andre mekanismer sørger for å flytte data mellom registrene og minnet.
De fleste ALU-er kan utføre de følgende operasjonene:
En ALU kan utformes til å beregne hva som helst, men jo mer kompliserte operasjoner den utfører, desto dyrere, større og mer strømkrevende blir den. Designerne må derfor finne et kompromiss hvor ALU-en er kraftig nok til å gjøre prosessoren rask, men ikke så innviklet at den blir upraktisk. Dersom man for eksempel skal kunne beregne kvadratroten av noe, vil ingeniøren som skal designe ALU-en ha følgende valg for å gjøre dette mulig:
Valgene er sortert fra raskest og dyrest, til tregest og billigst. Selv den enkleste datamaskinen vil kunne utføre de mest kompliserte beregninger, men det vil ta dem lenger tid ettersom de vil måtte gjøre det over mange trinn.
Kraftige prosessor som Intels Core-prosessorer og AMDs AMD64 har valgt løsning 1 for enkle operasjoner, løsning 2 for vanlige, kompliserte operasjoner og løsning 3 for ekstremt kompliserte operasjoner. Dette er mulig fordi man kan bygge veldig kompliserte ALU-er i disse prosessorene.
Inndataene til en ALU er de verdiene beregningene skal utføres på (kalt operander). En kode fra prosessorens kontrollenheten forteller hvilken operasjon som skal utføres. Utdataene er resultatet fra beregningen.
I mange ALU-design inkluderer inn- og utdataene også flere tilstandskoder som leses fra og skrives til et statusregister. Disse kodene signaliserer mente, overflyt, deling på null, osv. Fra en heltallsdivisjon vil det også være mulig å både kvotienten og resten som resultat.
En FPU (floating point unit) utfører også aritmetiske operasjoner på to tall, men for tall som er representert som flyttall, som er mye mer komplisert enn toerkomplementrepresentasjonen brukt i typiske ALU-er. For å utføre disse kompliserte beregningene inneholder en FPU flere kompliserte kretser, inkludert flere ALU-er.
En krets vil vanligvis bare bli kalt en ALU dersom den opererer på heltallsformater. Kretser som opererer på andre tallformater, som flyttall og komplekse tall, får navn som bedre beskriver deres arbeidsoppgaver.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.