Todos los elementos tecnológicos funcionan con las mismas bases. Ya sean predominantemente hardware o software, en el fondo todos son unas calculadoras. Calculadoras binarias más concretamente. Y la parte central de estas calculadoras, la que realiza las operaciones, es la ALU.
Como su nombre indica, la ALU es la Unidad o sistema que se encarga de realizar las operaciones aritméticas del procesamiento lógico de los sistemas de control de procesos. Este sistema de control puede ser una CPU (Central Processor Unit), un microprocesador, etc.
Todas las acciones que realiza una máquina están, valga la redundancia, procesadas por el procesador. En el que las instrucciones son divididas en conjuntos de operaciones básicas. En un principio, estas instrucciones eran operaciones de números enteros, pero en la actualidad muchos ALU operan en punto flotante.
Los ALU trabajan con bytes o conjuntos de 8 bits. Las primeras solo realizaban inversiones, sumas y «restas» lógicas, dividiendo las operaciones más complejas en conjuntos de estas operaciones básicas. Pero en la actualidad procesan más operaciones de forma directa y no necesariamente en sistemas binarios. Pudiendo incluso realizar operaciones directas de forma mucho más fácil y rápida. Más óptima.
La forma de trabajar ha ido evolucionando para aumentar la capacidad de cálculo. En sus versiones iniciales contaba de dos buses de entrada, uno de salida y otro de control. La señal de control es la encargada de seleccionar la operación a realizar por la ALU. En el interior se encuentran las puertas lógicas y los registros para realizar las operaciones.
Como ejemplo vamos a analizar un caso de una ALU de un bit. Primero recordamos que las puertas lógicas que representan el Álgebra de Boole son AND, OR, XOR e inversión.
En el interior de la ALU se realizan todas las operaciones posibles como combinación de estas puertas. Los resultados llegan a un registro que está controlado por la señal de control. Que en este caso también es binaria. Este registro, según la operación que el procesador quiera realizar, mostrará la salida correspondiente.
Este es un caso muy simple. Las ALUs normalmente trabajan con 8 bits encadenando las señales de control con los registros para sacar los resultados acordes. Estas señales de control encadenadas suelen llamarse Carry IN/Carry OUT.
Con el paso del tiempo, la miniaturización y la necesidad de procesar instrucciones más complejas, el interior de las ALUs se ha ido complicando mientras se añadían puertas y otros componentes. En la actualidad son unos sistemas muy completos y sofisticados.
Son la parte central del flujo de procesamiento de datos o pipeline. En los procesadores segmentados se encuentra en la parte de Ejecución (Ex). Las operaciones simples suelen obtenerse con una sola pasada por la ALU, pero si han de descomponerse en pasos más simples, la salida realimenta la entrada hasta que se realizan todos los pasos. Este ciclo está regulado por el reloj del procesador. Cada tipo de instrucción requerirá un número determinado de pasos por la ALU para completarse. Cada paso es un ciclo de reloj. Por lo que las operaciones tardan n-ciclos de reloj en completarse. Esto es la latencia de una instrucción, el tiempo que tarda en obtenerse un resultado.
Como hemos visto, antiguamente se necesitaba reducir las instrucciones a sumas y restas binarias. Cada una procesada en un ciclo de reloj. Y por eso los procesadores eran tan «lentos». Al implementar ALUs capaces de procesar en una sola pasada o ciclo complejas operaciones, reducimos significativamente la cola de procesamiento. Y esto se traduce en un menor tiempo de ejecución de instrucciones. Lo que hace que las computadoras sean más “rápidas” al “correr” un programa.
Esto quiere decir que el tiempo de procesamiento de un sistema tecnológico lo marca en gran medida el o los ALUs que lo integra. El otro punto importante es la velocidad de transmisión en los buses y el tiempo de lectura/escritura.
Con las nuevas generaciones de procesadores, de chips de muy pocos nanómetros, la ALUs, a pesar de haber aumentado su complejidad interna se pueden colocar en más sitios. De esta forma, con una ALU o incluso varias por cada núcleo y con un buen control de los buses de datos, el aumento en el procesado de instrucciones por ciclo es muy significativo. Mucho más si añadimos las que se pueden encontrar en periféricos dedicados como las tarjetas gráficas con GPU (Graphics Processing Unit).
Estas unidades de procesamiento gráfico pueden descargar al procesador de la CPU de un gran número de tareas, inicialmente dedicadas a la simulación y tratamiento de imágenes pero cada vez más variadas. Dejando libre al procesador para gestionar tareas más propias del manejo del sistema. (Estos GPU han ocasionado un salto cualitativo en las capacidades de los sistemas computacionales y se utilizan para entornos gráficos, minaría de bitcoins y últimamente para IA)
Las arquitecturas de los procesadores de nuevas generaciones están muy optimizados para conseguir unos rendimientos y velocidades espectaculares. Pero a la vez que los elementos hardware evolucionan, los software también. Multiplicando el número de instrucciones en las cola de los procesos. Esto crea la sensación de que los sistemas de una nueva generación no mejoran la anterior pero es una apreciación que no es real.
Algunos inconformistas, como los “gamer”, que desean sacar más rendimiento a sus PC toman atajos como el overclocking, con la que se duplica la frecuencia de los componentes. Con esta medida, los relojes internos son el doble de rápidos y se procesan el doble de instrucciones por unidad de tiempo. Pero esto, además de generar más errores y descontrolar las conexiones ya que no todo el hardware puede ajustarse a la nueva frecuencia de trabajo, eleva el consumo y por lo tanto el calor generado. Lo que hace que los equipos se encuentren en riesgo de sufrir daños.
Este tipo de técnicas son desaconsejables aunque si cuentas con buenos equipos de refrigeración pueden dar grandes resultados.
Por lo tanto, la ALU es la pieza central de todos nuestros aparatos tecnológicos y marca no solo la capacidad sino la velocidad del equipo. Es una de las partes más evolucionadas de los componentes hardware y es crucial para la tecnología del futuro.
Referencias:
- Apuntes de la Ingeniería Electrónica.UCM.
Pingback: Meltdown y Spectre - Fisicotrónica