Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Unità aritmetica e logica - Teknopedia
Unità aritmetica e logica - Teknopedia
Classico simbolo di un'ALU: A e B sono gli operandi in ingresso, R è il risultato, F sono i segnali provenienti dall'unità di controllo e D sono i segnali di stato dell'unità

L'unità aritmetica e logica (o unità aritmetica-logica, in acronimo ALU, dall'inglese Arithmetic Logic Unit), è la parte del microprocessore che è deputata all'esecuzione di operazioni aritmetiche o logiche.

L'ALU è una componente fondamentale della CPU, della GPU e del DSP, ed è presente sia nell'architettura di von Neumann (l'architettura hardware su cui sono basati la maggior parte dei computer moderni) che nella meno diffusa architettura Harvard. Attualmente l'ALU è tipicamente implementata come parte di un microprocessore monolitico. Le moderne CPU e GPU sono dotate di ALU molto sofisticate e un singolo microprocessore può contenere anche più di un'ALU.

Il matematico John von Neumann propose il concetto di ALU nel 1945 mentre sviluppava le basi del computer EDVAC.

Prime ricerche

[modifica | modifica wikitesto]

Nel 1946 von Neumann lavorò con i suoi colleghi allo sviluppo di un computer per il Princeton Institute of Advanced Studies (IAS). L'IAS machine fu un sistema che fu utilizzato come esempio dalla maggior parte dei computer successivi. Durante lo sviluppo von Neumann delineò l'architettura generica della macchina, l'architettura comprendeva il concetto di ALU.

Von Neumann ideò il concetto di ALU in modo da consentire al computer di eseguire le operazioni aritmetiche elementari come somma, sottrazione, divisione e moltiplicazione. Von Neumann riteneva ragionevole sviluppare un'unità specializzata allo scopo.[1]

Sistema numerico

[modifica | modifica wikitesto]

L'ALU deve processare i numeri utilizzando lo stesso sistema numerico utilizzato dai rimanenti componenti del computer. Nei moderni computer questa è praticamente sempre la notazione binaria in complemento a due. I primi computer invece utilizzavano una varietà molto ampia di sistemi di numerazione come la notazione decimale, la notazione con segno e il complemento a uno.

A seconda del sistema di rappresentazione utilizzato lo schema dell'ALU può variare significativamente.

Schema circuitale d'esempio

[modifica | modifica wikitesto]
Una semplice ALU a 2 bit In grado di eseguire le operazioni logiche AND, OR, XOR e l'operazione di addizione.

Molte delle operazioni eseguite dal computer vengono svolte dall'ALU, che recupera i dati dai registri del processore, processa i dati nell'accumulatore e provvede a salvare il risultato nel registro di uscita. Altre strutture provvedono a trasferire i dati dai registri alla memoria principale.[2]

Un'unità di controllo gestisce l'ALU tramite segnali di controllo che attivano le unità contenute dell'ALU.

Operazioni basilari

[modifica | modifica wikitesto]

La maggior parte delle ALU sono in grado di eseguire:

  • Operazioni aritmetiche su numeri interi (addizione, sottrazione ma spesso anche moltiplicazione e divisione, in alcuni casi svolte tramite l'utilizzo di sottrazioni o somme multiple).
  • Operazioni logiche (AND, OR, XOR).
  • Operazioni di scorrimento binarie tramite registri a scorrimento.

Operazioni complesse

[modifica | modifica wikitesto]

Un ingegnere elettronico può progettare un'ALU in grado di eseguire tutte le operazioni logiche e matematiche immaginabili ma questo comporterebbe degli enormi problemi dato che l'unità sarebbe molto costosa e lenta. Quindi gli ingegneri devono effettuare delle scelte cercando di realizzare delle unità potenti ma nello stesso tempo non troppo complesse. Per esempio per realizzare l'operazione di radice quadrata gli ingegneri si trovano a poter percorrere le seguenti strade:

  1. Progettare un'ALU estremamente complessa in grado di eseguire l'operazione in un singolo passaggio (un singolo ciclo di clock).
  2. Progettare un'ALU molto complessa in grado di calcolare l'operazione in una serie di passi. Ma se si organizza l'ALU con una struttura a pipeline si può permettere all'ALU di accettare nuovi dati mentre i dati precedenti sono ancora in elaborazione mascherando i vari cicli di clock necessari per eseguire l'operazione.
  3. Progettare un'ALU complessa che esegue l'operazione in più passaggi ma che non utilizza una struttura a pipeline. Questo rende l'operazione più lenta ma semplifica il progetto rispetto alla soluzione a pipeline.
  4. Progettare un'ALU semplice che demandi le operazioni di radice quadrata a un'unità specializzata che lavora in parallelo con l'ALU. L'unità specializzata (coprocessore) può essere venduta a parte e acquistata dagli utenti che realmente necessitano di eseguire molte operazioni di radice quadrata.
  5. Non fornire l'operazione di radice quadrata e demandare il problema al programmatore che dovrà sviluppare delle proprie procedure che utilizzando le operazioni fornite dell'ALU eseguiranno la radice quadrata.
  6. Emulare la presenza del coprocessore, quando un programma cerca di eseguire l'operazione il processore verifica la presenza del coprocessore e nel caso sia presente lo utilizza, tuttavia se questo non è presente il processore attiva un interrupt di errore, il sistema operativo riceve l'interrupt ed esegue l'operazione tramite un algoritmo software. Questa soluzione è estremamente lenta.

Le opzioni elencate vanno dalla più veloce (e costosa) alla meno veloce (ed economica). Quindi anche le ALU semplici sono in grado di eseguire operazioni complesse ma richiedono molti cicli di clock per svolgere le operazioni mentre le ALU complesse eseguono le operazioni in un solo ciclo di clock.

I processori per computer implementano l'opzione 1 per le operazioni semplici, l'opzione 2 per la maggior parte delle operazioni e l'opzione 3 per le operazioni estremamente complesse e rare. Questo è permesso dalla presenza di ALU molto complesse, invece processori semplici per esempio per applicazioni embedded spesso implementano la soluzione 3 anche per le operazioni di media complessità mentre non gestiscono nativamente le operazioni complesse demandandole al programmatore (opzione 5).

Input e Output

[modifica | modifica wikitesto]

Gli input (ingressi) dell'ALU sono i dati da processare (gli operandi) e il codice che attiva l'unità di controllo che gestisce l'ALU. L'output sono i risultati delle operazioni.

Le ALU sono progettate per generare anche alcune uscite che segnalano particolari risultati ottenuti. Queste uscite, detti flag, vengono usualmente raccolti in un registro di stato e sono utilizzati per indicare la presenza di resto, la divisione per zero, l'overflow, il risultato pari a zero etc.[2] Questi flag vengono utilizzati per cambiare il flusso di esecuzione del programma tramite i salti condizionati. Quindi il tipo di risultato ottenuto può servire a controllare delle condizioni: ad esempio, sottraendo due numeri, ottengo il risultato zero se essi sono uguali. Il flag zero si attiva, ed una seguente istruzione di salto può effettuare il salto se il flag zero è stato attivato, oppure proseguire senza salto se il flag zero non è attivato. Gli if..then...else, i cicli e gli altri costrutti della programmazione sono basati sulla combinazione del meccanismo dei flag e dei salti condizionati.

L'ALU e la FPU

[modifica | modifica wikitesto]

La FPU è un'unità preposta all'esecuzione di operazioni aritmetiche su numeri in virgola mobile. Dato che la rappresentazione in virgola mobile è molto più complessa della rappresentazione a complemento a due utilizzata tipicamente dalle ALU. Difatti le FPU tendono ad essere molto più complesse delle ALU, includono circuiti molto complessi e spesso anche più ALU.

Usualmente gli ingegneri tendono a definire ALU le unità in grado di eseguire operazioni sui numeri interi mentre le unità che eseguono operazioni su numeri in virgola mobile, numeri complessi, ecc. ricevono nomi meno generici.

Note

[modifica | modifica wikitesto]
  1. ^ Stallings, Pag. 19.
  2. ^ a b Stallings, Pag. 290, 291.

Bibliografia

[modifica | modifica wikitesto]
  • Enoch Hwang, Digital Logic and Microprocessor Design with VHDL, Thomson, 2006, ISBN 0-534-46593-5.
  • William Stallings, Computer Organization & Architecture: Designing for Performance 7th ed, Pearson Prentice Hall, 2006, ISBN 0-13-185644-8.

Voci correlate

[modifica | modifica wikitesto]
  • Architettura dei calcolatori

Altri progetti

[modifica | modifica wikitesto]

Altri progetti

  • Wikibooks
  • Wikizionario
  • Wikimedia Commons
  • Collabora a Wikibooks Wikibooks contiene testi o manuali sull'unità aritmetica e logica
  • Collabora a Wikizionario Wikizionario contiene il lemma di dizionario «ALU»
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file sull'unità aritmetica e logica

Collegamenti esterni

[modifica | modifica wikitesto]
  • ALU, in Enciclopedia della Matematica, Istituto dell'Enciclopedia Italiana, 2013. Modifica su Wikidata
  • (EN) arithmetic-logic unit, su Enciclopedia Britannica, Encyclopædia Britannica, Inc. Modifica su Wikidata
  • (EN) Denis Howe, Arithmetic and Logic Unit, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
  • (EN) A Simulator of Complex ALU in MATLAB, su mathworks.com. URL consultato il 5 maggio 2019 (archiviato dall'url originale il 5 ottobre 2008).
  • Harvard Machine 74 Processore TTL didattico basato sull'ALU 74181
V · D · M
Hardware e periferiche per computer
Drive · Periferiche
Dispositivi di ingressoTastiera · Dispositivo di puntamento (Joystick · Penna ottica · Mouse · Touchpad · Trackball · Trackpoint · Gamepad · Tavoletta grafica · Paddle) · Microfono · Scanner · Webcam
Dispositivi di uscitaMonitor · Altoparlanti · Altoparlantino · Stampante · Plotter
Disp. di ingresso e uscitaModem · Schermo tattile · Stampante multifunzione
PorteEthernet · Firewire (IEEE 1394) · Porta parallela · Porta seriale · USB (Universal Serial Bus)
Schede elettronicheScheda madre · Daughterboard · Scheda di rete · Scheda video · Scheda di acquisizione video · Scheda audio
ProcessoreCPU · Coprocessore (Coprocessore matematico · GPU · DSP · ALU)
Memoria
Memoria primariaRAM · ROM · Memoria cache
Memoria di massa
Memoria flashScheda di memoria · Unità a stato solido · Chiave USB
Memoria magneticaDisco rigido · Floppy disk (drive) · Cassetta
Dischi otticiCD (lettore · masterizzatore) · DVD (Masterizzatore) · Blu-ray Disc
  Portale Informatica: accedi alle voci di Teknopedia che trattano di informatica
Estratto da "https://it.wikipedia.org/w/index.php?title=Unità_aritmetica_e_logica&oldid=144786128"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022