<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.museo8bits.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Unidad_aritm%C3%A9tico_l%C3%B3gica</id>
	<title>Unidad aritmético lógica - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.museo8bits.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Unidad_aritm%C3%A9tico_l%C3%B3gica"/>
	<link rel="alternate" type="text/html" href="https://www.museo8bits.com/wiki/index.php?title=Unidad_aritm%C3%A9tico_l%C3%B3gica&amp;action=history"/>
	<updated>2026-05-13T22:40:23Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://www.museo8bits.com/wiki/index.php?title=Unidad_aritm%C3%A9tico_l%C3%B3gica&amp;diff=6343&amp;oldid=prev</id>
		<title>Museo8bits: 1 revisión importada</title>
		<link rel="alternate" type="text/html" href="https://www.museo8bits.com/wiki/index.php?title=Unidad_aritm%C3%A9tico_l%C3%B3gica&amp;diff=6343&amp;oldid=prev"/>
		<updated>2021-10-17T09:11:27Z</updated>

		<summary type="html">&lt;p&gt;1 revisión importada&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisión del 11:11 17 oct 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;es&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Sin diferencias)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Museo8bits</name></author>
	</entry>
	<entry>
		<id>https://www.museo8bits.com/wiki/index.php?title=Unidad_aritm%C3%A9tico_l%C3%B3gica&amp;diff=6342&amp;oldid=prev</id>
		<title>Museo8bits en 14:07 16 may 2017</title>
		<link rel="alternate" type="text/html" href="https://www.museo8bits.com/wiki/index.php?title=Unidad_aritm%C3%A9tico_l%C3%B3gica&amp;diff=6342&amp;oldid=prev"/>
		<updated>2017-05-16T14:07:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Archivo:ALU symbol.svg|thumb|300px|Un típico símbolo esquemático para una ALU: A y B son operandos; R es la salida; F es la entrada de la [[unidad de control]]; D es un estado de la salida.]]&lt;br /&gt;
&lt;br /&gt;
En [[Ciencias de la computación|computación]], la &amp;#039;&amp;#039;&amp;#039;unidad aritmética lógica&amp;#039;&amp;#039;&amp;#039; o &amp;#039;&amp;#039;&amp;#039;unidad aritmético-lógica&amp;#039;&amp;#039;&amp;#039;, también conocida como &amp;#039;&amp;#039;&amp;#039;ALU&amp;#039;&amp;#039;&amp;#039; (siglas en inglés de &amp;#039;&amp;#039;arithmetic logic unit&amp;#039;&amp;#039;), es un [[circuito digital]] que calcula operaciones aritméticas (como suma, resta, multiplicación, etc.) y operaciones lógicas (si, y, o, no), entre valores (generalmente uno o dos) de los argumentos.&lt;br /&gt;
&lt;br /&gt;
Muchos tipos de circuitos electrónicos necesitan realizar algún tipo de operación aritmética, así que incluso el circuito dentro de un reloj digital tendrá una ALU minúscula que se mantiene sumando 1 al tiempo actual, y se mantiene comprobando si debe activar el sonido de la alarma, etc.&lt;br /&gt;
&lt;br /&gt;
Por mucho, los circuitos electrónicos más complejos son los que están construidos dentro de los chips de [[microprocesador]]es modernos. Por lo tanto, estos procesadores tienen dentro de ellos un ALU muy complejo y potente. De hecho, un microprocesador moderno (y los [[Computadora central|mainframes]]) puede tener múltiples [[Multinúcleo|núcleos]], cada núcleo con múltiples [[Unidad funcional|unidades de ejecución]], cada una de ellas con múltiples ALU.&lt;br /&gt;
&lt;br /&gt;
Muchos otros circuitos pueden contener en el interior una unidad aritmético lógica: [[Unidad de procesamiento gráfico|unidades de procesamiento gráfico]] como las que están en las GPU modernas, [[FPU]] como el viejo [[coprocesador]] matemático [[Intel 80387|80387]], y [[Procesador digital de señal|procesadores digitales de señales]] como los que se encuentran en tarjetas de sonido, lectoras de CD y los televisores de [[alta definición]]. Todos éstos tienen en su interior varias ALU potentes y complejas.&lt;br /&gt;
&lt;br /&gt;
== Historia: Propuesta de Von Neumann ==&lt;br /&gt;
&lt;br /&gt;
El matemático [[John von Neumann]] propuso el concepto de la ALU en [[1945]], cuando escribió un informe sobre las fundaciones para un nuevo computador llamado [[EDVAC]] (Electronic Discrete Variable Automatic Computer) (Computador Automático Variable Discreto Electrónico). Más adelante, en 1946, trabajó con sus colegas diseñando un computador para el Princeton Institute of Advanced Studies (IAS) (Instituto de Princeton de Estudios Avanzados). El [[IAS computer]] se convirtió en el prototipo para muchos computadores posteriores. En esta propuesta, von Neumann esbozó lo que él creyó sería necesario en su máquina, incluyendo una ALU.&lt;br /&gt;
&lt;br /&gt;
Von Neumann explicó que una ALU es un requisito fundamental para una computadora porque necesita efectuar operaciones matemáticas básicas: adición, sustracción, multiplicación, y división.&amp;lt;ref name=ref_duplicada_1&amp;gt;Stallings page 19&amp;lt;/ref&amp;gt; Por lo tanto, creyó que era &amp;quot;razonable que una computadora debería contener los órganos especializados para estas operaciones&amp;quot;.&amp;lt;ref name=ref_duplicada_1 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sistemas numéricos ==&lt;br /&gt;
&lt;br /&gt;
Una ALU debe procesar números usando el mismo formato que el resto del circuito digital. Para los procesadores modernos, este formato casi siempre es la representación del [[Sistema binario|número binario]] de [[complemento a dos]]. Las primeras computadoras usaron una amplia variedad de sistemas de numeración, incluyendo [[complemento a uno]], formato [[signo-magnitud]], e incluso verdaderos [[sistema de numeración decimal|sistemas decimales]], con diez tubos por dígito.&lt;br /&gt;
&lt;br /&gt;
Las ALU para cada uno de estos [[sistema de numeración|sistemas numéricos]] mostraban diferentes diseños, y esto influenció la preferencia actual por el complemento a dos, debido a que ésta es la representación más simple, para el circuito electrónico de la ALU, para calcular adiciones, sustracciones, etc.&lt;br /&gt;
&lt;br /&gt;
== Introducción práctica ==&lt;br /&gt;
&lt;br /&gt;
[[Archivo:2-bit ALU.svg|thumb|400px|Una ALU simple de 2 bits que hace operaciones de [[AND]], [[Disyunción lógica|OR]], [[Disyunción exclusiva|XOR]] y adición (ver explicación en el texto).]]&lt;br /&gt;
&lt;br /&gt;
La ALU se compone básicamente de: [[Circuito Operacional]], [[registro de entrada|Registros de Entradas]], [[Registro Acumulador]] y un [[Registro de Estados]], conjunto de registros que hacen posible la realización de cada una de las operaciones.&lt;br /&gt;
&lt;br /&gt;
La mayoría de las acciones de la computadora son realizadas por la ALU. La ALU toma datos de los [[Registro (hardware)|registros del procesador]]. Estos datos son procesados y los resultados de esta operación se almacenan en los registros de salida de la ALU. Otros mecanismos mueven datos entre estos registros y la memoria.&amp;lt;ref name=ref_duplicada_2&amp;gt;Stallings page 290-291&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una [[unidad de control]] controla a la ALU, al ajustar los circuitos que le señala a la ALU qué operaciones realizar.&lt;br /&gt;
&lt;br /&gt;
=== Detalle ===&lt;br /&gt;
En la imagen se detalla una ALU de 2 [[bit]]s con dos entradas (operandos) llamadas A y B: A[0] y B[0] corresponden al [[bit menos significativo]] y A[1] y B[1] corresponden al [[bit más significativo]].&lt;br /&gt;
&lt;br /&gt;
Cada bit de la ALU se procesa de manera idéntica, con la excepción del direccionamiento del bit del [[acarreo]]. El manejo de este bit es explicado más adelante.&lt;br /&gt;
&lt;br /&gt;
Las entradas A y B van hacia las cuatro puertas de la derecha, de arriba a abajo, [[Disyunción exclusiva|XOR]], [[AND]], [[Disyunción lógica|OR]]. Las tres primeras puertas realizan las operaciones XOR, AND, y OR sobre los datos A y B. La última puerta XOR es la puerta inicial de un sumador completo.&lt;br /&gt;
&lt;br /&gt;
El paso final de las operaciones sobre cada bit es la [[multiplexación]] de los datos. La entrada OP de 3 bits, OP[0], OP[1] y OP[2] (desde la [[unidad de control]]) determina cual de las funciones se van a realizar:&lt;br /&gt;
&lt;br /&gt;
* OP = 000 → XOR&lt;br /&gt;
* OP = 001 → AND&lt;br /&gt;
* OP = 010 → OR&lt;br /&gt;
* OP = 011 → Adición&lt;br /&gt;
&lt;br /&gt;
Claramente se ve que las otras cuatro entradas del multiplexor están libres para otras operaciones (sustracción, multiplicación, división, NOT A, NOT B, etc). Aunque OP[2] actualmente no es usada en este montaje (a pesar de estar incluida y conectada), ésta sería usada en el momento de realizar otras operaciones además de las 4 operaciones listadas arriba.&lt;br /&gt;
&lt;br /&gt;
Los datos de acarreo de entrada y acarreo de salida, llamados flags (banderas), son típicamente conectados a algún tipo de [[registro de estado]].&lt;br /&gt;
&lt;br /&gt;
== Operaciones simples ==&lt;br /&gt;
&lt;br /&gt;
La mayoría de las ALU pueden realizar las siguientes operaciones:&lt;br /&gt;
&lt;br /&gt;
* Operaciones aritméticas de números enteros ([[adición]], [[sustracción]], y a veces [[multiplicación]] y [[División (matemática)|división]], aunque esto es más complejo)&lt;br /&gt;
* [[Operación lógica|Operaciones lógicas]] de [[bit]]s ([[AND]], [[NOT]], [[Disyunción lógica|OR]], [[Disyunción exclusiva|XOR]], [[XNOR]])&lt;br /&gt;
* [[Operación de desplazamiento|Operaciones de desplazamiento]] de bits (Desplazan o rotan una palabra en un número específico de bits hacia la izquierda o la derecha, con o sin [[extensión de signo]]). Los desplazamientos pueden ser interpretados como multiplicaciones o divisiones por 2.&lt;br /&gt;
&lt;br /&gt;
== Operaciones complejas ==&lt;br /&gt;
&lt;br /&gt;
Un ingeniero puede diseñar una ALU para calcular cualquier operación, sin importar lo compleja que sea; el problema es que cuanto más compleja sea la operación, tanto más costosa será la ALU, más espacio usará en el procesador, y más energía disipará, etc.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, los ingenieros siempre calculan un compromiso, para proporcionar al [[CPU|procesador]] (u otros circuitos) una ALU suficientemente potente para calcular rápido, pero no de una complejidad de tal calibre que haga una ALU económicamente prohibitiva.&lt;br /&gt;
&amp;#039;&amp;#039;Imagina que necesitas calcular, digamos, la raíz cuadrada de un número; el ingeniero digital examinará las opciones siguientes para implementar esta operación:&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Diseñar una ALU muy compleja que calcule la raíz cuadrada de cualquier número en un solo paso. Esto es llamado &amp;#039;&amp;#039;&amp;#039;cálculo en un solo ciclo de reloj&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Diseñar una ALU compleja que calcule la raíz cuadrada con varios pasos (como el algoritmo que aprendimos en la escuela). Esto es llamado &amp;#039;&amp;#039;&amp;#039;cálculo iterativo&amp;#039;&amp;#039;&amp;#039;, y generalmente confía en el control de una [[unidad de control]] compleja con [[microcódigo]] incorporado.&lt;br /&gt;
# Diseñar una ALU simple en el procesador, y vender un procesador separado, especializado y costoso, que el cliente pueda instalar adicional al procesador, y que implementa una de las opciones de arriba. Esto es llamado &amp;#039;&amp;#039;&amp;#039;[[coprocesador]]&amp;#039;&amp;#039;&amp;#039; o unidad de coma flotante.&lt;br /&gt;
# [[Emulador|Emular]] la existencia del coprocesador, es decir, siempre que un programa intente realizar el cálculo de la raíz cuadrada, hacer que el procesador compruebe si hay presente un coprocesador y usarlo si lo hay; si no hay uno, [[interrupción|interrumpir]] el proceso del programa e invocar al [[sistema operativo]] para realizar el cálculo de la raíz cuadrada por medio de un cierto algoritmo de software. Esto es llamado &amp;#039;&amp;#039;&amp;#039;emulación por software&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Decir a los programadores que no existe el coprocesador y no hay emulación, así que tendrán que escribir sus propios algoritmos para calcular raíces cuadradas por software. Esto es realizado por &amp;#039;&amp;#039;&amp;#039;bibliotecas de software&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Las opciones superiores van de la más rápida y más costosa a la más lenta y económica. Por lo tanto, mientras que incluso la computadora más simple puede calcular la fórmula más complicada, las computadoras más simples generalmente tomarán un tiempo largo porque varios de los pasos para calcular la fórmula implicarán las opciones #3, #4 y #5 de arriba.&lt;br /&gt;
&lt;br /&gt;
Los procesadores complejos como el [[Intel Pentium 4|Pentium IV]] y el [[AMD Athlon 64]] implementan la opción #1 para las operaciones más complejas y la más lenta #2 para las operaciones extremadamente complejas. Eso es posible por la capacidad de construir ALU muy complejas en estos procesadores.&lt;br /&gt;
&lt;br /&gt;
== Entradas y salidas ==&lt;br /&gt;
&lt;br /&gt;
Las entradas a la ALU son los datos en los que se harán las operaciones (llamados [[operando]]s) y un código desde la [[unidad de control]] indicando qué operación realizar. Su salida es el resultado del cómputo de la operación.&lt;br /&gt;
&lt;br /&gt;
En muchos diseños la ALU también toma o genera como entradas o salidas un conjunto de códigos de condición desde o hacia un [[registro de estado]]. Estos códigos son usados para indicar casos como [[acarreo]] entrante o saliente, [[overflow]], [[división por cero]], etc.&amp;lt;ref name=ref_duplicada_2 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ALU vs. FPU ==&lt;br /&gt;
&lt;br /&gt;
Una [[unidad de coma flotante]], &amp;#039;&amp;#039;Floating Point Unit&amp;#039;&amp;#039; (FPU), también realiza operaciones aritméticas entre dos valores, pero lo hace para números en representación de [[coma flotante]], que es mucho más complicada que la representación de [[complemento a dos]] usada comúnmente en una ALU. Para hacer estos cálculos, una FPU tiene incorporados varios circuitos complejos, incluyendo algunas ALU internas.&lt;br /&gt;
&lt;br /&gt;
Generalmente los ingenieros llaman ALU al circuito que realiza operaciones aritméticas en formatos de [[número entero]] (como complemento a dos y [[BCD]]), mientras que los circuitos que calculan en formatos más complejos como [[coma flotante]], [[número complejo|números complejos]], etc., reciben generalmente un nombre más específico, como FPU.&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
&lt;br /&gt;
* [[Aritmética de saturación]]&lt;br /&gt;
* [[Arquitectura de CPU]]&lt;br /&gt;
* [[Barrel shifter]] ( desplazador de barril )&lt;br /&gt;
* [[Bus interface unit]]&lt;br /&gt;
* [[Circuito digital]]&lt;br /&gt;
* [[CPU]]&lt;br /&gt;
* [[División (electrónica)]]&lt;br /&gt;
* [[Microcódigo]]&lt;br /&gt;
* [[Microprocesador]]&lt;br /&gt;
* [[Circuitos multiplicadores]]&lt;br /&gt;
* [[Registro (hardware)]]&lt;br /&gt;
* [[Serie 7400]] (chip # [[74181]])&lt;br /&gt;
* [[Sumador]]&lt;br /&gt;
* [[Unidad de control]]&lt;br /&gt;
* [[Unidad de ejecución]]&lt;br /&gt;
* [[Unidad de gestión de memoria]]&lt;br /&gt;
* [[Unidad de proceso]]&lt;br /&gt;
* [[Unidad de punto flotante]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&lt;br /&gt;
{{listaref}}&lt;br /&gt;
* {{cita libro | nombre=William| apellidos=Stallings| año=2006| título=Computer Organization &amp;amp; Architecture: Designing for Performance 7th ed| editorial=Pearson Prentice Hall| id=ISBN 0-13-185644-8| url = http://williamstallings.com/COA/COA7e.html| enlaceautor=William Stallings}}&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=12762&amp;amp;objectType=FILE A Simulator of Complex ALU in MATLAB]&lt;br /&gt;
{{wp}}&lt;br /&gt;
[[Categoría:Unidad central de procesamiento]]&lt;br /&gt;
[[Categoría:Aritmética computacional]]&lt;br /&gt;
&lt;br /&gt;
[[ar:وحدة الحساب والمنطق]]&lt;br /&gt;
[[ca:Unitat aritmètico lògica]]&lt;br /&gt;
[[cs:Aritmeticko-logická jednotka]]&lt;br /&gt;
[[de:Arithmetisch-logische Einheit]]&lt;br /&gt;
[[en:Arithmetic logic unit]]&lt;br /&gt;
[[et:Aritmeetika-loogikaplokk]]&lt;br /&gt;
[[eu:Unitate aritmetiko-logiko]]&lt;br /&gt;
[[fr:Unité arithmétique et logique]]&lt;br /&gt;
[[gl:Unidade aritmético-lóxica]]&lt;br /&gt;
[[he:יחידה אריתמטית-לוגית]]&lt;br /&gt;
[[hu:Aritmetikai logikai egység]]&lt;br /&gt;
[[id:ALU]]&lt;br /&gt;
[[it:Unità aritmetica e logica]]&lt;br /&gt;
[[ja:演算論理装置]]&lt;br /&gt;
[[ko:산술 논리 장치]]&lt;br /&gt;
[[lb:Aritmethic Logic Unit]]&lt;br /&gt;
[[lv:Aritmētiski loģiskā ierīce]]&lt;br /&gt;
[[nl:Arithmetic Logic Unit]]&lt;br /&gt;
[[no:Aritmetisk logisk enhet]]&lt;br /&gt;
[[pl:Jednostka arytmetyczno-logiczna]]&lt;br /&gt;
[[pt:Unidade lógica e aritmética]]&lt;br /&gt;
[[ru:Арифметическо-логическое устройство]]&lt;br /&gt;
[[simple:Arithmetic logic unit]]&lt;br /&gt;
[[sk:Aritmeticko-logická jednotka]]&lt;br /&gt;
[[th:หน่วยคำนวณและตรรกะ]]&lt;br /&gt;
[[tr:Aritmetik mantık birimi]]&lt;br /&gt;
[[zh:算術邏輯單元]]&lt;/div&gt;</summary>
		<author><name>Museo8bits</name></author>
	</entry>
</feed>