# Unidad de control

La unidad de control (UC), en inglés: control unit (CU), es uno de los tres bloques funcionales principales en los que se divide una unidad central de procesamiento (CPU). Los otros dos bloques son la unidad aritmética lógica y la unidad de registros.
Su función es buscar las instrucciones en la memoria principal, decodificarlas (interpretación) y ejecutarlas, empleando para ello la unidad de proceso.
Existen dos tipos de unidades de control (UC): las cableadas y las microprogramadas.
* Las UC cableadas se utilizan generalmente en máquinas sencillas. Sus componentes principales son:
** Circuito de lógica secuencial
** Circuito de control de estado
** Circuito de lógica combinacional
** Circuito de emisión de señales de control
* Las UC microprogramadas se emplean en máquinas más complejas. En este caso, la microprogramación de la UC está almacenada en una micromemoria, a la cual se accede de manera secuencial para ejecutar, una por una, las microinstrucciones.

## Estructura de computadora

* Unidad aritmético lógica (UAL), Arithmetic Logic Unit (ALU): lleva a cabo las operaciones aritméticas y lógicas.
* Unidad de control: históricamente definida como una parte distinta del modelo de referencia de 1946, de la Arquitectura de von Neumann. En diseños modernos de computadoras, la UC es típicamente una parte interna de la CPU y fue conocida primeramente como arquitectura Eckert-Mauchly.
* Memoria: que almacena datos y programas.
* Dispositivos de entrada y salida: alimentan la memoria con datos e instrucciones, y entregan los resultados del cómputo almacenados en memoria.
* Buses: proporcionan un medio para transportar los datos e instrucciones entre las distintos y pequeños que la memoria principal (los registros), constituyen la CPU (Central Processing Unit).

## Operación general de la UC

Las salidas de la UC se encargan de controlar la actividad del resto del dispositivo. Se puede pensar en una UC como una máquina de estado finito.
La UC es la circuitería que controla el flujo de datos a través del procesador, y coordina el procesador, que a su vez controla el resto de la computadora.
Algunos ejemplos de dispositivos que requieren una UC son las CPU y las GPU. La edad de la información moderna no sería posible sin diseños complejos de la UC.

## Unidad de control cableada

En un tiempo, las unidades de control para los CPU eran lógica ad hoc, y eran difíciles de diseñar. Estas pueden identificarse como la parte principal de la computadora y del dispositivo principal que ayuda al computador a funcionar de una manera apropiada. Es construida de puertas lógicas, circuitos biestables, circuitos codificadores, circuitos decodificadores, contadores digitales y otros circuitos digitales. Su control está basado en una arquitectura fija, es decir, que requiere cambios en el cableado si el conjunto de instrucciones es modificado o cambiado. Esta arquitectura es preferida en las computadoras RISC, pues consiste en un conjunto de instrucciones más pequeño.
Las unidades de control usadas para invocar esas respuestas. Estas instrucciones son evidentes en el diseño de la arquitectura, pero también pueden ser representadas de otras maneras.

## Unidad de control microprogramada

En 1951, por M. V. Wilkes, fue introducida la idea de microprogramación como un nivel intermediario para ejecutar instrucciones de programa de computadora (véase también microcódigo). Los microprogramas fueron organizados como una secuencia de microinstrucciones y almacenados en una memoria del control especial. El algoritmo para la unidad de control microprogramada es usualmente especificado por la descripción de un diagrama de flujo. La ventaja principal de la unidad de control microprogramada es la simplicidad de su estructura. Las salidas del controlador son organizadas en microinstrucciones y pueden ser reemplazadas fácilmente.

## Funciones

Las funciones realizadas por la unidad de control varían grandemente por la arquitectura interna de la CPU, pues la unidad de control realmente implementa esta arquitectura. En un procesador regular que ejecuta nativamente las instrucciones x86, la unidad de control realiza las tareas de leer (fetch), decodificar, manejo de la ejecución y almacenamiento de los resultados. En un procesador x86 con un núcleo RISC, la unidad de control tiene considerablemente más trabajo que hacer. Ella maneja la traducción de las instrucciones x86 a las microinstrucciones del RISC, maneja la planificación de las microinstrucciones entre las varias unidades de ejecución, y maneja la salida de estas unidades para cerciorarse de que terminen donde supuestamente deben ir. En uno de estos procesadores la unidad de control está dividida en otras unidades debido a la complejidad del trabajo que debe realizar (tales como una unidad de planificación para manejar la planificación y una unidad de retiro para ocuparse de los resultados que vienen de la tubería o pipe). Almacena los datos más utilizados de modo que se buscan primero en la computadora y luego en la RAM.

## Componentes

* Recuento de programa o contador de programa (CP): También denominado registro de control de secuencia (RCS), contiene permanentemente la dirección de memoria de la siguiente instrucción a ejecutar. Al iniciar la ejecución de un programa toma la dirección de su primera instrucción. Incrementa su valor en uno, de forma automática, cada vez que se concluye una instrucción, salvo si la instrucción que se está ejecutando es de salto o de ruptura de secuencia, en cuyo caso el contador de programa tomará la dirección de la instrucción que se tenga que ejecutar a continuación; esta dirección está en la propia instrucción en curso.
* Registro de instrucción (RI): Contiene la instrucción que se está ejecutando en cada momento. Esta instrucción llevará consigo el código de operación (CO) y en su caso los operandos o las direcciones de memoria de los mismos.
* Decodificador (D): se encarga de interpretar la instrucción para su posterior proceso. Es el encargado de extraer el código de operación de la instrucción en curso (que está en el Registro de instrucción), lo analiza y emite las señales necesarias al resto de elementos para su ejecución a través del secuenciador.
* Reloj (R): proporciona una sucesión de impulsos eléctricos a intervalos constantes, que marcan los instantes en que han de comenzar los distintos pasos de que consta cada instrucción.
* Secuenciador (S): También denominado controlador. En este dispositivo se generan órdenes muy elementales (microórdenes) que, sincronizadas por los impulsos del reloj, hacen que se vaya ejecutando poco a poco la instrucción que está cargada en el registro de instrucción (RI).