Articulo de referencia

Unidad de control

En arquitectura informática , la unidad de control ( UC ) es un componente de la unidad central de procesamiento (CPU) de un ordenador que dirige el funcionamiento del procesado...

En arquitectura informática , la unidad de control ( UC ) es un componente de la unidad central de procesamiento (CPU) de un ordenador que dirige el funcionamiento del procesador. Una UC suele utilizar un decodificador binario para convertir las instrucciones codificadas en señales de temporización y control que dirigen el funcionamiento de las demás unidades (memoria, unidad aritmético-lógica , dispositivos de entrada y salida, etc.).

La mayoría de los recursos informáticos son gestionados por la unidad de control (UC). Esta dirige el flujo de datos entre la CPU y los demás dispositivos. John von Neumann incluyó la unidad de control como parte de la arquitectura von Neumann . [ 1 ] En los diseños informáticos modernos, la unidad de control suele ser una parte interna de la CPU, y su función y funcionamiento generales no han variado desde su introducción. [ 2 ]

Unidades de control multiciclo

Los ordenadores más sencillos utilizan una microarquitectura multiciclo . Estos fueron los primeros diseños. Todavía son populares en los ordenadores más pequeños, como los sistemas embebidos que controlan maquinaria.

En una computadora, la unidad de control suele ejecutar el ciclo de instrucciones de forma secuencial. Este ciclo consiste en obtener la instrucción, los operandos, decodificarla, ejecutarla y, finalmente, guardar los resultados en la memoria. Cuando se introduce la siguiente instrucción en la unidad de control, esta modifica su comportamiento para completarla correctamente. De esta forma, los bits de la instrucción controlan directamente la unidad de control, que a su vez controla la computadora.

La unidad de control puede incluir un contador binario para indicar a su lógica qué paso debe realizar.

Las unidades de control multiciclo suelen utilizar tanto el flanco ascendente como el descendente de su reloj de temporización de onda cuadrada. Ejecutan un paso de su operación en cada flanco del reloj, de modo que una operación de cuatro pasos se completa en dos ciclos de reloj. Esto duplica la velocidad del ordenador, con la misma familia lógica.

Muchos ordenadores presentan dos tipos distintos de eventos inesperados. Una interrupción se produce cuando algún tipo de entrada o salida requiere la intervención del software para funcionar correctamente. Una excepción es causada por el funcionamiento del ordenador. Una diferencia crucial es que el momento en que se produce una interrupción es impredecible. Otra diferencia es que algunas excepciones (por ejemplo, una excepción de memoria no disponible) pueden deberse a una instrucción que necesita reiniciarse.

Las unidades de control pueden diseñarse para gestionar interrupciones de dos maneras típicas. Si la respuesta rápida es fundamental, la unidad de control se diseña para interrumpir la tarea y gestionar la interrupción. En este caso, la tarea en curso se reiniciará tras la última instrucción completada. Si se busca que el ordenador sea muy económico, muy sencillo, muy fiable o que realice más tareas, la unidad de control finalizará la tarea en curso antes de gestionar la interrupción. Finalizar la tarea es económico, ya que no requiere ningún registro para almacenar la última instrucción completada. Es sencillo y fiable porque tiene el menor número de estados. Además, minimiza el desperdicio de recursos.

En ordenadores muy sencillos, se pueden crear excepciones que funcionen como interrupciones. Si se requiere memoria virtual , una excepción de memoria no disponible debe reintentar la instrucción fallida.

Es común que las computadoras multiciclo utilicen más ciclos. A veces, un salto condicional tarda más porque el contador de programa debe recargarse. En ocasiones, realizan instrucciones de multiplicación o división mediante un proceso, como la multiplicación y división binaria de gran tamaño. Las computadoras muy pequeñas pueden realizar operaciones aritméticas de uno en uno o de pocos bits a la vez. Otras computadoras tienen instrucciones muy complejas que requieren muchos pasos.

Unidades de control en serie

Muchas computadoras de complejidad media utilizan instrucciones en paralelo . Este diseño es popular debido a su economía y velocidad.

En una computadora segmentada, las instrucciones fluyen a través de ella. Este diseño consta de varias etapas. Por ejemplo, podría tener una etapa para cada paso del ciclo de Von Neumann. Una computadora segmentada suele tener registros de segmentación después de cada etapa. Estos almacenan los bits calculados por una etapa para que las compuertas lógicas de la siguiente etapa puedan utilizarlos para realizar el siguiente paso.

Es habitual que las etapas pares operen en un flanco de la señal de reloj de onda cuadrada, mientras que las etapas impares lo hacen en el otro. Esto duplica la velocidad del ordenador en comparación con los diseños de un solo flanco.

En una computadora con arquitectura de segmentación, la unidad de control gestiona el inicio, la continuación y la finalización del flujo de datos según las órdenes del programa. Los datos de las instrucciones se suelen transmitir mediante registros de segmentación de una etapa a la siguiente, con una lógica de control independiente para cada etapa. La unidad de control también garantiza que las instrucciones de cada etapa no interfieran con el funcionamiento de las instrucciones de las demás etapas. Por ejemplo, si dos etapas deben utilizar los mismos datos, la lógica de control asegura que su uso se realice en la secuencia correcta.

Cuando funciona de manera eficiente, una computadora con arquitectura de segmentación (pipeline) tiene una instrucción en cada etapa. Luego, procesa todas esas instrucciones simultáneamente. Puede completar aproximadamente una instrucción por cada ciclo de su reloj. Cuando un programa toma una decisión y cambia a una secuencia de instrucciones diferente, la segmentación a veces debe descartar los datos en proceso y reiniciarse. Esto se denomina "bloqueo". Cuando dos instrucciones pueden interferir, a veces la unidad de control debe detener el procesamiento de una instrucción posterior hasta que una instrucción anterior se complete. Esto se denomina "burbuja de segmentación" porque una parte de la segmentación no está procesando instrucciones. Las burbujas de segmentación pueden ocurrir cuando dos instrucciones operan en el mismo registro.

Las interrupciones y las excepciones inesperadas también detienen la ejecución de la tubería. Si un ordenador con tubería abandona el trabajo debido a una interrupción, se pierde más trabajo que en un ordenador multiciclo. Las excepciones predecibles no tienen por qué provocar una detención. Por ejemplo, si se utiliza una instrucción de excepción para acceder al sistema operativo, no causa una detención.

Con la misma velocidad de lógica electrónica, una computadora segmentada puede ejecutar más instrucciones por segundo que una computadora multiciclo. Además, aunque la lógica electrónica tiene una velocidad máxima fija, una computadora segmentada puede acelerarse o ralentizarse variando el número de etapas en la segmentación. Con más etapas, cada etapa realiza menos trabajo, por lo que se reducen los retrasos de las compuertas lógicas .

Un modelo de computadora segmentada suele tener menos puertas lógicas por instrucción por segundo que las computadoras multiciclo y de ejecución fuera de orden. Esto se debe a que la etapa promedio es menos compleja que en una computadora multiciclo. Una computadora de ejecución fuera de orden generalmente tiene grandes cantidades de lógica inactiva en cualquier instante dado. Cálculos similares suelen mostrar que una computadora segmentada consume menos energía por instrucción.

Sin embargo, una computadora segmentada suele ser más compleja y costosa que una computadora multiciclo comparable. Generalmente cuenta con más puertas lógicas, registros y una unidad de control más compleja. Asimismo, puede consumir más energía total, aunque menos energía por instrucción. Las CPU de ejecución fuera de orden suelen procesar más instrucciones por segundo, ya que pueden ejecutar varias a la vez.

Prevención de paradas

Las unidades de control utilizan diversos métodos para mantener la tubería llena y evitar bloqueos. Por ejemplo, incluso las unidades de control más sencillas pueden asumir que una bifurcación hacia atrás, a una instrucción anterior con un número menor, es un bucle y se repetirá. [ 3 ] Por lo tanto, una unidad de control con este diseño siempre llenará la tubería con la ruta de bifurcación hacia atrás. Si un compilador puede detectar la dirección más frecuente de una bifurcación, puede generar instrucciones para que esta sea la dirección preferida. De manera similar, una unidad de control puede recibir sugerencias del compilador: algunos ordenadores tienen instrucciones que pueden codificar sugerencias del compilador sobre la dirección de la bifurcación. [ 4 ]

Algunas unidades de control realizan predicción de bifurcaciones : una unidad de control mantiene una lista electrónica de las bifurcaciones recientes, codificada por la dirección de la instrucción de bifurcación. [ 3 ] Esta lista tiene algunos bits para cada bifurcación para recordar la dirección que se tomó más recientemente.

Algunas unidades de control pueden realizar una ejecución especulativa , en la que un ordenador puede tener dos o más tuberías, calcular ambas direcciones de una bifurcación y, a continuación, descartar los cálculos de la dirección no utilizada.

Los resultados de la memoria pueden estar disponibles en momentos impredecibles debido a la memoria caché de las computadoras ultrarrápidas . Es decir, copian cantidades limitadas de datos de la memoria principal a una memoria caché muy rápida. La CPU debe estar diseñada para procesar a la alta velocidad de la memoria caché. Por lo tanto, la CPU podría bloquearse cuando deba acceder directamente a la memoria principal. En las PC modernas, la memoria principal es hasta trescientas veces más lenta que la memoria caché.

Para ello, se desarrollaron unidades de control y de procesamiento fuera de orden para procesar los datos a medida que están disponibles. (Véase la siguiente sección).

Pero ¿qué ocurre si todos los cálculos se han completado, pero la CPU sigue bloqueada, esperando la memoria principal? En ese caso, una unidad de control puede cambiar a un hilo de ejecución alternativo cuyos datos se hayan obtenido mientras el hilo estaba inactivo. Un hilo tiene su propio contador de programa, un flujo de instrucciones y un conjunto de registros independiente. Los diseñadores varían el número de hilos en función de las tecnologías de memoria actuales y del tipo de ordenador. Los ordenadores típicos, como los PC y los teléfonos inteligentes, suelen tener unidades de control con pocos hilos, los suficientes para mantenerse ocupados con sistemas de memoria asequibles. Los ordenadores con bases de datos suelen tener aproximadamente el doble de hilos, para mantener ocupadas sus memorias mucho más grandes. Las unidades de procesamiento gráfico (GPU) suelen tener cientos o miles de hilos, porque tienen cientos o miles de unidades de ejecución que realizan cálculos gráficos repetitivos.

Cuando una unidad de control permite el uso de subprocesos , el software también debe diseñarse para gestionarlos. En las CPU de propósito general, como las de PC y teléfonos inteligentes, los subprocesos suelen comportarse de forma muy similar a los procesos con división de tiempo. Como mucho, el sistema operativo podría necesitar tener algún conocimiento de ellos. En las GPU, la planificación de subprocesos generalmente no puede ocultarse al software de la aplicación y suele controlarse mediante una biblioteca de subrutinas especializada.

Unidades de control fuera de servicio

Una unidad de control puede diseñarse para completar las tareas que pueda . Si varias instrucciones pueden ejecutarse simultáneamente, la unidad de control las organizará. Así, los ordenadores más rápidos pueden procesar instrucciones en una secuencia que puede variar ligeramente, dependiendo de cuándo estén disponibles los operandos o los destinos de las instrucciones. La mayoría de los superordenadores y muchas CPU de PC utilizan este método. La organización exacta de este tipo de unidad de control depende de la parte más lenta del ordenador.

Cuando la ejecución de cálculos es más lenta, las instrucciones fluyen desde la memoria hacia componentes electrónicos denominados "unidades de emisión". Una unidad de emisión almacena una instrucción hasta que tanto sus operandos como una unidad de ejecución estén disponibles. Entonces, la instrucción y sus operandos se "emiten" a la unidad de ejecución. Esta unidad ejecuta la instrucción. Posteriormente, los datos resultantes se colocan en una cola de datos para ser escritos de nuevo en la memoria o los registros. Si el ordenador dispone de varias unidades de ejecución, normalmente puede procesar varias instrucciones por ciclo de reloj.

Es común contar con unidades de ejecución especializadas. Por ejemplo, una computadora de precio moderado podría tener solo una unidad de ejecución de punto flotante, ya que estas son costosas. La misma computadora podría tener varias unidades de enteros, dado que son relativamente económicas y pueden ejecutar la mayor parte de las instrucciones.

Un tipo de unidad de control para la emisión utiliza una matriz de lógica electrónica, un "marcador" [ 5 ] que detecta cuándo se puede emitir una instrucción. La "altura" de la matriz es el número de unidades de ejecución, y la "longitud" y el "ancho" son, cada uno, el número de fuentes de operandos. Cuando todos los elementos coinciden, las señales de los operandos y la unidad de ejecución se cruzan. La lógica en esta intersección detecta que la instrucción puede funcionar, por lo que se "emite" a la unidad de ejecución libre. Un estilo alternativo de unidad de control de emisión implementa el algoritmo de Tomasulo , que reordena una cola de instrucciones de hardware. En cierto sentido, ambos estilos utilizan una cola. El marcador es una forma alternativa de codificar y reordenar una cola de instrucciones, y algunos diseñadores lo denominan tabla de colas. [ 6 ] [ 7 ]

Con cierta lógica adicional, un marcador puede combinar de forma compacta la reordenación de la ejecución, el cambio de nombre de los registros y las excepciones e interrupciones precisas. Además, puede hacerlo sin la memoria direccionable por contenido compleja y de alto consumo energético que utiliza el algoritmo de Tomasulo. [ 6 ] [ 7 ]

Si la ejecución es más lenta que la escritura de los resultados, la cola de escritura diferida de la memoria siempre tiene entradas libres. Pero ¿qué ocurre si la escritura en memoria es lenta? ¿O si el registro de destino va a ser utilizado por una instrucción anterior que aún no se ha ejecutado? En ese caso, podría ser necesario programar el paso de escritura diferida de la instrucción. Esto a veces se denomina "retirar" una instrucción. En este caso, debe existir una lógica de programación en la parte posterior de las unidades de ejecución. Esta lógica programa el acceso a los registros o la memoria que recibirán los resultados. [ 6 ] [ 7 ]

La lógica de retiro también puede diseñarse en un marcador de emisión o una cola Tomasulo, incluyendo acceso a memoria o registros en la lógica de emisión. [ 6 ] [ 7 ]

Los controladores fuera de orden requieren características de diseño especiales para gestionar las interrupciones. Cuando hay varias instrucciones en curso, no está claro en qué punto del flujo de instrucciones se produce una interrupción. Para las interrupciones de entrada y salida, casi cualquier solución funciona. Sin embargo, cuando un ordenador tiene memoria virtual, se produce una interrupción para indicar que ha fallado un acceso a la memoria. Este acceso a la memoria debe estar asociado a una instrucción exacta y a un estado exacto del procesador, de modo que el estado del procesador pueda guardarse y restaurarse mediante la interrupción. Una solución habitual consiste en conservar copias de los registros hasta que se completa un acceso a la memoria. [ 6 ] [ 7 ]

Además, las CPU con ejecución fuera de orden presentan aún más problemas con los bloqueos derivados de las bifurcaciones, ya que pueden completar varias instrucciones por ciclo de reloj y, por lo general, tienen muchas instrucciones en distintas etapas de ejecución. Por lo tanto, estas unidades de control podrían utilizar todas las soluciones empleadas por los procesadores segmentados. [ 8 ]

Unidades de control de traducción

Algunos ordenadores traducen cada instrucción individual en una secuencia de instrucciones más simples. La ventaja es que un ordenador que ejecuta las instrucciones fuera de orden puede simplificar su lógica principal, al tiempo que maneja instrucciones complejas de varios pasos. Los procesadores Intel x86, desde el Pentium Pro, traducen las instrucciones complejas de CISC x86 a microoperaciones internas más similares a las de RISC.

En estos sistemas, la parte frontal de la unidad de control gestiona la traducción de instrucciones. Los operandos no se traducen. La parte posterior de la unidad de control es una CPU de ejecución fuera de orden que envía las microoperaciones y los operandos a las unidades de ejecución y las rutas de datos.

Unidades de control para ordenadores de baja potencia

Muchos ordenadores modernos incorporan controles que minimizan el consumo de energía. En los ordenadores que funcionan con batería, como los de los teléfonos móviles, la ventaja reside en una mayor duración de la misma. En los ordenadores conectados a la red eléctrica, la justificación es reducir el coste de la energía, la refrigeración y el ruido.

La mayoría de los ordenadores modernos utilizan lógica CMOS . La tecnología CMOS consume energía de dos maneras principales: mediante cambios de estado (es decir, "potencia activa") y por fugas de corriente no deseadas. La potencia activa de un ordenador se puede reducir desactivando las señales de control. Las fugas de corriente se pueden reducir disminuyendo la tensión eléctrica, aumentando la superficie de agotamiento de los transistores o desactivando completamente la lógica.

Es más fácil reducir el consumo de energía activa, ya que los datos almacenados en la lógica no se ven afectados. El método habitual consiste en reducir la frecuencia de reloj de la CPU. La mayoría de los sistemas informáticos utilizan este método. Es común que la CPU permanezca inactiva durante la transición para evitar efectos secundarios derivados del cambio de reloj.

La mayoría de los ordenadores también incluyen una instrucción de "detención". Esta se inventó para detener el código que no genera interrupciones, de modo que el código de interrupción tenga una sincronización fiable. Sin embargo, los diseñadores pronto se percataron de que una instrucción de detención también era un buen momento para apagar completamente el reloj de la CPU, reduciendo su consumo de energía a cero. El controlador de interrupciones podría seguir necesitando un reloj, pero este suele consumir mucha menos energía que la CPU.

Estos métodos son relativamente fáciles de diseñar y se volvieron tan comunes que se inventaron otros con fines comerciales. Muchas CPU CMOS modernas de bajo consumo detienen e inician unidades de ejecución especializadas e interfaces de bus según la instrucción necesaria. Algunas computadoras [ 9 ] incluso organizan la microarquitectura de la CPU para usar multiplexores activados por transferencia, de modo que cada instrucción solo utilice las partes exactas de la lógica necesaria.

Un método común consiste en distribuir la carga entre varias CPU y apagar las que no se utilizan a medida que disminuye la carga. La lógica de conmutación de tareas del sistema operativo guarda los datos de las CPU en la memoria. En algunos casos, [ 10 ] una de las CPU puede ser más simple y pequeña, literalmente con menos puertas lógicas. Por lo tanto, tiene una baja fuga de corriente, es la última en apagarse y la primera en encenderse. Además, es la única CPU que requiere características especiales de bajo consumo. Un método similar se utiliza en la mayoría de los PC, que suelen tener una CPU integrada auxiliar que gestiona el sistema de alimentación. Sin embargo, en los PC, el software suele estar en la BIOS, no en el sistema operativo.

En teoría, los ordenadores con velocidades de reloj más bajas también podrían reducir las fugas disminuyendo el voltaje de la fuente de alimentación. Esto afecta a la fiabilidad del ordenador de diversas maneras, por lo que su implementación es costosa y poco común, salvo en ordenadores relativamente caros como los PC o los teléfonos móviles.

Algunos diseños pueden usar transistores de muy baja fuga, pero esto generalmente aumenta el costo. Las barreras de agotamiento de los transistores se pueden hacer más grandes para tener menos fuga, pero esto hace que el transistor sea más grande y, por lo tanto, más lento y más caro. Algunos fabricantes usan esta técnica en partes seleccionadas de un circuito integrado construyendo lógica de baja fuga a partir de transistores grandes que algunos procesos proporcionan para circuitos analógicos. Algunos procesos colocan los transistores sobre la superficie del silicio, en "fin fets", pero estos procesos tienen más pasos, por lo que son más caros. Los materiales especiales de dopaje de transistores (por ejemplo, hafnio) también pueden reducir la fuga, pero esto agrega pasos al procesamiento, haciéndolo más caro. Algunos semiconductores tienen una banda prohibida más grande que el silicio. Sin embargo, estos materiales y procesos son actualmente (2020) más caros que el silicio.

Gestionar las fugas de datos es más difícil, porque antes de poder desactivar la lógica, los datos que contiene deben trasladarse a algún tipo de almacenamiento con baja tasa de fugas.

Algunas CPU [ 11 ] utilizan un tipo especial de biestable (para almacenar un bit) que acopla una celda de almacenamiento rápida y de alta fuga a una celda lenta, grande (y costosa) de baja fuga. Estas dos celdas tienen fuentes de alimentación separadas. Cuando la CPU entra en modo de ahorro de energía (por ejemplo, debido a una pausa que espera una interrupción), los datos se transfieren a las celdas de baja fuga y las demás se apagan. Cuando la CPU sale del modo de baja fuga (por ejemplo, debido a una interrupción), el proceso se invierte.

Los diseños más antiguos copiaban el estado de la CPU a la memoria, o incluso al disco, a veces con software especializado. Los sistemas embebidos muy simples a veces simplemente se reinician.

Integración con el ordenador

Todas las CPU modernas cuentan con lógica de control para conectarse al resto del ordenador. En los ordenadores modernos, esto suele ser un controlador de bus. Cuando una instrucción lee o escribe en la memoria, la unidad de control controla el bus directamente o bien un controlador de bus. Muchos ordenadores modernos utilizan la misma interfaz de bus para memoria, entrada y salida. Esto se conoce como "E/S mapeada en memoria". Para un programador, los registros de los dispositivos de E/S aparecen como números en direcciones de memoria específicas. Los PC x86 utilizan un método más antiguo: un bus de E/S independiente al que se accede mediante instrucciones de E/S.

Una CPU moderna también suele incluir un controlador de interrupciones . Este gestiona las señales de interrupción provenientes del bus del sistema. La unidad de control es la parte del ordenador que responde a las interrupciones.

A menudo, la memoria caché cuenta con un controlador de caché . Este controlador y la memoria caché asociada suelen ser la parte física más grande de una CPU moderna de alto rendimiento. Cuando la memoria, el bus o la caché se comparten con otras CPU, la lógica de control debe comunicarse con ellas para garantizar que ningún ordenador reciba datos desactualizados.

Muchos ordenadores antiguos incorporaban algún tipo de entrada y salida directamente en la unidad de control. Por ejemplo, muchos contaban con un panel frontal con interruptores y luces controlados directamente por la unidad de control. Esto permitía al programador introducir y depurar un programa directamente. En los ordenadores de producción posteriores, el uso más común del panel frontal era introducir un pequeño programa de arranque para leer el sistema operativo desde el disco. Los paneles frontales fueron reemplazados por programas de arranque en memoria de solo lectura.

La mayoría de los modelos PDP-8 tenían un bus de datos diseñado para permitir que los dispositivos de E/S utilizaran la lógica de lectura y escritura de memoria de la unidad de control. [ 12 ] Esto redujo la complejidad y el costo de los controladores de E/S de alta velocidad, por ejemplo, para discos.

El Xerox Alto tenía una unidad de control microprogramable multitarea que realizaba casi todas las operaciones de entrada/salida (E/S). [ 13 ] Este diseño proporcionaba la mayoría de las características de un PC moderno con solo una pequeña fracción de la lógica electrónica. El ordenador de doble hilo era ejecutado por los dos microhilos de menor prioridad. Estos realizaban cálculos cuando no se requería E/S. Los microhilos de alta prioridad proporcionaban (en orden decreciente de prioridad) vídeo, red, disco, un temporizador periódico, ratón y teclado. El microprograma realizaba la lógica compleja del dispositivo de E/S, así como la lógica para integrar el dispositivo con el ordenador. Para la E/S de hardware propiamente dicha, el microprograma leía y escribía registros de desplazamiento para la mayoría de las E/S, a veces con redes de resistencias y transistores para modificar los niveles de voltaje de salida (por ejemplo, para vídeo). Para gestionar eventos externos, el microcontrolador disponía de microinterrupciones para cambiar de hilo al final del ciclo de un hilo, por ejemplo, al final de una instrucción o después de acceder a un registro de desplazamiento. El microprograma podía reescribirse y reinstalarse, lo cual resultaba muy útil para un ordenador de investigación.

Funciones de la unidad de control

De este modo, un programa de instrucciones en memoria hará que la unidad de control configure los flujos de datos de la CPU para manipular correctamente los datos entre instrucciones. Esto da como resultado un ordenador capaz de ejecutar un programa completo sin necesidad de intervención humana para realizar cambios de hardware entre instrucciones (como ocurría cuando se utilizaban únicamente tarjetas perforadas para los cálculos antes de la invención de los ordenadores con programación almacenada y unidades de control).

Unidad de control cableada

Animación de la matriz de control de una unidad de control cableada simple que ejecuta una instrucción LDA.

Las unidades de control cableadas se implementan mediante unidades lógicas combinacionales , que cuentan con un número finito de compuertas que pueden generar resultados específicos según las instrucciones utilizadas para invocar dichas respuestas. Generalmente, las unidades de control cableadas son más rápidas que los diseños microprogramados. [ 14 ]

Este diseño utiliza una arquitectura fija ; requiere cambios en el cableado si se modifica o cambia el conjunto de instrucciones . Puede resultar conveniente para ordenadores sencillos y rápidos.

Un controlador que utiliza este enfoque puede operar a alta velocidad; sin embargo, tiene poca flexibilidad. Un conjunto de instrucciones complejo puede resultar abrumador para un diseñador que utiliza un diseño lógico ad hoc .

El enfoque cableado se ha vuelto menos popular a medida que las computadoras han evolucionado. Anteriormente, las unidades de control para las CPU utilizaban lógica ad hoc y eran difíciles de diseñar. [ 15 ]

Unidad de control de microprograma

La idea de la microprogramación fue introducida por Maurice Wilkes en 1951 como un nivel intermedio para ejecutar instrucciones de programas informáticos . Los microprogramas se organizaban como una secuencia de microinstrucciones y se almacenaban en una memoria de control especial. El algoritmo para la unidad de control de microprogramación, a diferencia de la unidad de control cableada, generalmente se especifica mediante una descripción de diagrama de flujo . [ 16 ] La principal ventaja de una unidad de control microprogramada es la simplicidad de su estructura. Las salidas del controlador se generan mediante microinstrucciones. El microprograma se puede depurar y reemplazar de forma similar al software. [ 17 ]

Métodos de diseño combinados

Una variante popular del microcódigo consiste en depurarlo mediante un simulador de software. En este caso, el microcódigo se presenta como una tabla de bits, una tabla de verdad lógica que traduce una dirección de microcódigo en las salidas de la unidad de control. Esta tabla de verdad se puede introducir en un programa informático que genera lógica electrónica optimizada. La unidad de control resultante es casi tan fácil de diseñar como la microprogramación, pero posee la alta velocidad y el reducido número de elementos lógicos de una unidad de control cableada. El resultado práctico se asemeja a una máquina Mealy o a un controlador Richards .

Véase también

Referencias

  1. von Neumann, John (1945), Primer borrador de un informe sobre el EDVAC (PDF) , Escuela de Ingeniería Eléctrica Moore, Universidad de Pensilvania, archivado del original (PDF) el 14 de marzo de 2013.
  2. Astha Singh (24 de septiembre de 2018). "Organización de computadoras: unidad de control y diseño" . GeeksforGeeks . Consultado el 25 de mayo de 2019 .
  3. 1 2 Asanovic, Krste (2017). Manual del conjunto de instrucciones RISC V (PDF) (ed. 2.2 ). Berkeley: Fundación RISC-V. 
  4. Power ISA ( ed. 3.0B). Austin: IBM. 2017. Consultado el 26 de diciembre de 2019 . 
  5. Thornton, JE (1970). Diseño de una computadora: La CDC 6600. Atlanta: Scott, Foreman and Co. pág . 125. ISBN  9780673059536.
  6. 1 2 3 4 5 Leighton, Luke. "Libre RISC-V M-Class" . Crowd Supply . Recuperado el 16 de enero de 2020 .
  7. 1 2 3 4 5 Alsup, Mitch; Leighton, Lucas; Zaruba, Florián; Thornton, James; Kimmitt, Jonathon; Petrisko, Dan; Takano, S.; Falvo, Samuel. "RISC-V HW Dev, marcador desordenado estilo 6600" . Grupos de Google . Fundación RISC-V . Consultado el 16 de enero de 2020 .
  8. Celio, Chris. "BOOM Docs, Rocketship SOC Generator" . Consultado el 16 de enero de 2020 .
  9. Introducción a la arquitectura MAXQ . Dallas: Maxim Integrated Inc. Consultado el 26 de diciembre de 2019 .
  10. Referencia técnica de ARM, Cortex (ed. v8 ). ARM Ltd. 
  11. Manual de referencia técnica de ARM (v6, r0 ed.). Cambridge: ARM Ltd. 
  12. Manual de mantenimiento del PDP-8L (PDF) . Maynard, Massachusetts: Digital Equipment Corp. 1970. Archivado (PDF) del original el 22 de abril de 2015. Consultado el 26 de diciembre de 2019 .
  13. Manual de hardware de Alto (PDF) . Xerox. 1976. Archivado (PDF) del original el 7 de diciembre de 2010.
  14. "UNIDADES DE CONTROL MICROPROGRAMADAS VERSUS CABLEADAS"; . www.cs.binghamton.edu . Archivado del original el 30-04-2017 . Consultado el 17-02-2017 .
  15. Williams, RD; Klenke, RH; Aylor, JH (mayo de 2003). "Enseñanza del diseño informático mediante prototipado virtual". IEEE Transactions on Education . 46 (2): 296– 301. Bibcode : 2003ITEdu..46..296W . doi : 10.1109/te.2002.808278 . ISSN 0018-9359 . 
  16. ^ Barkalov, Alejandro (2009). Síntesis lógica para unidades de control basadas en FSM / Alexander Barkalov y Larysa Titarenko . Berlín: Springer. ISBN 978-3-642-04308-6.
  17. Wiśniewski, Remigiusz (2009). Síntesis de unidades de control de microprogramas compositivos para dispositivos programables . Zielona Góra: Universidad de Zielona Góra. pag. 153.ISBN  978-83-7481-293-1.
  • Alexander Barkalov, Larysa Titarenko, Interpretación cableada de algoritmos de control
  • Unidades de control microprogramadas
  • Unidades de control multiciclo