b'\n_START_ARTICLE_\nUnit\xc3\xa0 aritmetica e logica\n_START_PARAGRAPH_\nIn informatica l\'unit\xc3\xa0 aritmetica e logica o unit\xc3\xa0 aritmetico-logica (abbreviazione utilizzata comunemente: ALU, dall\'inglese "arithmetic and logic unit" o "arithmetic-logic unit") \xc3\xa8 una tipologia particolare di processore digitale che si contraddistingue per essere preposta all\'esecuzione di operazioni aritmetiche o logiche._NEWLINE_L\'ALU \xc3\xa8 una componente fondamentale della CPU, della GPU e del DSP, ed \xc3\xa8 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 \xc3\xa8 tipicamente implementata come parte di un microprocessore monolitico. Le moderne CPU e GPU sono dotate di ALU molto sofisticate e un singolo microprocessore pu\xc3\xb2 contenere anche pi\xc3\xb9 di un\'ALU._NEWLINE_Il matematico John von Neumann propose il concetto di ALU nel 1945 mentre sviluppava le basi del computer EDVAC.\n_START_SECTION_\nPrime ricerche\n_START_PARAGRAPH_\nNel 1946 von Neumann lavor\xc3\xb2 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\xc3\xb2 l\'architettura generica della macchina, l\'architettura comprendeva il concetto di ALU._NEWLINE_Von Neumann ide\xc3\xb2 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\xc3\xa0 specializzata allo scopo.\n_START_SECTION_\nSistema numerico\n_START_PARAGRAPH_\nL\'ALU deve processare i numeri utilizzando lo stesso sistema numerico utilizzato dai rimanenti componenti del computer. Nei moderni computer questa \xc3\xa8 praticamente sempre la notazione binaria in complemento a due. I primi computer invece utilizzavano una variet\xc3\xa0 molto ampia di sistemi di numerazione come la notazione decimale, la notazione con segno e il complemento a uno._NEWLINE_A seconda del sistema di rappresentazione utilizzato lo schema dell\'ALU pu\xc3\xb2 variare significativamente.\n_START_SECTION_\nSchema circuitale d\'esempio\n_START_PARAGRAPH_\nMolte delle operazioni eseguite dal computer vengono svolte dall\'ALU. L\'ALU 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._NEWLINE_Un\'unit\xc3\xa0 di controllo gestisce l\'ALU tramite segnali di controllo che attivano le unit\xc3\xa0 contenute dell\'ALU.\n_START_SECTION_\nInput e Output\n_START_PARAGRAPH_\nGli input (ingressi) dell\'ALU sono i dati da processare (gli operandi) e il codice che attiva l\'unit\xc3\xa0 di controllo che gestisce l\'ALU. L\'output sono i risultati delle operazioni._NEWLINE_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. Questi flag vengono utilizzati per cambiare il flusso di esecuzione del programma tramite i salti condizionati. Quindi il tipo di risultato ottenuto pu\xc3\xb2 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\xc3\xb2 effettuare il salto se il flag zero \xc3\xa8 stato attivato, oppure proseguire senza salto se il flag zero non \xc3\xa8 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.\n_START_SECTION_\nL\'ALU e la FPU\n_START_PARAGRAPH_\nLa FPU \xc3\xa8 un\'unit\xc3\xa0 preposta all\'esecuzione di operazioni aritmetiche su numeri in virgola mobile. Dato che la rappresentazione in virgola mobile \xc3\xa8 molto pi\xc3\xb9 complessa della rappresentazione a complemento a due utilizzata tipicamente dalle ALU. Difatti le FPU tendono ad essere molto pi\xc3\xb9 complesse delle ALU, includono circuiti molto complessi e spesso anche pi\xc3\xb9 ALU._NEWLINE_Usualmente gli ingegneri tendono a definire ALU le unit\xc3\xa0 in grado di eseguire operazioni sui numeri interi mentre le unit\xc3\xa0 che eseguono operazioni su numeri in virgola mobile, numeri complessi, ecc. ricevono nomi meno generici.'