stringtranslate.com

Unidad de control

La unidad de control ( UC ) es un componente de la unidad central de procesamiento (CPU) de una computadora que dirige el funcionamiento del procesador. Una UC normalmente utiliza un decodificador binario para convertir instrucciones codificadas en señales de control y sincronización que dirigen el funcionamiento de las otras unidades (memoria, unidad lógica aritmética y dispositivos de entrada y salida, etc.).

La mayoría de los recursos informáticos son administrados por la UC, que 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 de 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 cambiado desde su introducción. [2]

Unidades de control multiciclo

Las computadoras más simples utilizan una microarquitectura de ciclos múltiples . Estos fueron los primeros diseños. Todavía son populares en las computadoras más pequeñas, como los sistemas integrados que operan maquinaria.

En una computadora, la unidad de control a menudo recorre el ciclo de instrucciones de manera sucesiva. Esto consiste en obtener la instrucción, obtener los operandos, decodificar la instrucción, ejecutar la instrucción y luego escribir los resultados nuevamente en la memoria. Cuando se coloca la siguiente instrucción en la unidad de control, cambia el comportamiento de la unidad de control para completar la instrucción correctamente. Por lo tanto, 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 la lógica de la unidad de control qué paso debe realizar.

Las unidades de control multiciclo suelen utilizar tanto los flancos ascendentes como descendentes de su reloj de temporización de onda cuadrada. Realizan un paso de su operación en cada flanco del reloj de temporización, de modo que una operación de cuatro pasos se completa en dos ciclos de reloj. Esto duplica la velocidad de la computadora, dada la misma familia lógica.

Muchas computadoras tienen dos tipos diferentes de eventos inesperados. Una interrupción ocurre porque algún tipo de entrada o salida necesita la atención del software para funcionar correctamente. Una excepción es causada por el funcionamiento de la computadora. Una diferencia crucial es que no se puede predecir el momento en que se produce una interrupción. Otra es que algunas excepciones (por ejemplo, una excepción por falta de memoria) pueden ser causadas por una instrucción que necesita reiniciarse.

Las unidades de control pueden diseñarse para manejar interrupciones de una de dos maneras típicas. Si una respuesta rápida es lo más importante, una unidad de control está diseñada para abandonar el trabajo para manejar la interrupción. En este caso, el trabajo en proceso se reiniciará después de la última instrucción completada. Si la computadora debe ser muy económica, muy simple, muy confiable o para realizar más trabajo, la unidad de control terminará el trabajo en proceso antes de manejar la interrupción. Terminar el trabajo es económico, porque no necesita un registro para registrar la última instrucción terminada. Es simple y confiable porque tiene la menor cantidad de estados. También desperdicia la menor cantidad de trabajo.

Se pueden crear excepciones para que funcionen como interrupciones en computadoras muy simples. Si se requiere memoria virtual , entonces una excepción de memoria no disponible debe volver a intentar la instrucción que falla.

Es común que las computadoras multiciclo utilicen más ciclos. A veces, se necesita más tiempo para realizar un salto condicional, porque es necesario recargar el contador del programa. A veces, realizan instrucciones de multiplicación o división mediante un proceso, algo así como una multiplicación y división binaria larga. Las computadoras muy pequeñas pueden realizar operaciones aritméticas, uno o varios bits a la vez. Algunas otras computadoras tienen instrucciones muy complejas que requieren muchos pasos.

Unidades de control canalizadas

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

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

Es habitual que las etapas pares funcionen en un borde del reloj de onda cuadrada, mientras que las etapas impares lo hacen en el otro borde. Esto hace que la velocidad de la computadora sea dos veces mayor que la de los diseños de un solo borde.

En una computadora segmentada, la unidad de control organiza el inicio, la continuación y la detención del flujo según las órdenes del programa. Los datos de instrucción se pasan generalmente en registros segmentados de una etapa a la siguiente, con una parte de lógica de control algo separada para cada etapa. La unidad de control también garantiza que la instrucción en cada etapa no perjudique el funcionamiento de las instrucciones en otras etapas. Por ejemplo, si dos etapas deben utilizar la misma parte de datos, la lógica de control garantiza que los usos se realicen en la secuencia correcta.

Cuando funciona de manera eficiente, una computadora segmentada tendrá una instrucción en cada etapa. Luego trabaja en todas esas instrucciones al mismo tiempo. Puede terminar aproximadamente una instrucción por cada ciclo de su reloj. Cuando un programa toma una decisión y cambia a una secuencia diferente de instrucciones, la segmentación a veces debe descartar los datos en proceso y reiniciarse. Esto se llama "bloqueo". Cuando dos instrucciones podrían interferir, a veces la unidad de control debe detener el procesamiento de una instrucción posterior hasta que se complete una instrucción anterior. Esto se llama "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 paralizan el flujo de trabajo. Si una computadora con flujo de trabajo abandona el trabajo debido a una interrupción, se pierde más trabajo que en una computadora con varios ciclos. Las excepciones predecibles no necesitan paralizarse. Por ejemplo, si se utiliza una instrucción de excepción para ingresar al sistema operativo, no se produce un bloqueo.

Para 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 hacerse más rápida o más lenta variando el número de etapas en la segmentación. Con más etapas, cada etapa hace menos trabajo y, por lo tanto, la etapa tiene menos retrasos de las puertas lógicas .

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

Sin embargo, una computadora segmentada suele ser más compleja y más costosa que una computadora multiciclo comparable. Normalmente tiene más puertas lógicas, registros y una unidad de control más compleja. De la misma manera, puede utilizar más energía total, mientras que utiliza menos energía por instrucción. Las CPU fuera de servicio suelen poder realizar más instrucciones por segundo porque pueden realizar varias instrucciones a la vez.

Prevención de paradas

Las unidades de control utilizan muchos métodos para mantener una secuencia llena y evitar bloqueos. Por ejemplo, incluso las unidades de control más simples pueden suponer que una bifurcación hacia atrás, a una instrucción anterior de número más bajo, es un bucle y se repetirá. [3] Por lo tanto, una unidad de control con este diseño siempre llenará la secuencia con la ruta de la bifurcación hacia atrás. Si un compilador puede detectar la dirección más frecuente de una bifurcación, el compilador puede simplemente producir instrucciones para que la bifurcación más frecuente sea la dirección preferida de bifurcación. De manera similar, una unidad de control puede obtener pistas del compilador: algunas computadoras tienen instrucciones que pueden codificar pistas del compilador sobre la dirección de la bifurcación. [4]

Algunas unidades de control hacen 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 ejecución especulativa , en la que una computadora puede tener dos o más tuberías, calcular ambas direcciones de una rama y luego descartar los cálculos de la dirección no utilizada.

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

Para ayudar a esto, se desarrollaron CPU y unidades de control fuera de servicio para procesar los datos a medida que están disponibles. (Ver la siguiente sección)

Pero ¿qué ocurre si todos los cálculos están completos, pero la CPU sigue bloqueada, esperando a la memoria principal? En ese caso, una unidad de control puede cambiar a un hilo de ejecución alternativo cuyos datos se han obtenido mientras el hilo estaba inactivo. Un hilo tiene su propio contador de programa, un flujo de instrucciones y un conjunto separado de registros. 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 unos pocos hilos, los suficientes para mantener ocupados a los sistemas de memoria asequibles. Los ordenadores de 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 subprocesos , el software también debe estar diseñado para manejarlos. En las CPU de uso general, como las PC y los teléfonos inteligentes, los subprocesos suelen estar diseñados para parecerse mucho a procesos normales con intervalos de tiempo. Como mucho, el sistema operativo podría necesitar tener algún conocimiento de ellos. En las GPU, la programación de subprocesos normalmente no se puede ocultar al software de la aplicación y, a menudo, se controla con una biblioteca de subrutinas especializada.

Unidades de control fuera de servicio

Una unidad de control puede diseñarse para que termine lo que pueda . Si se pueden completar varias instrucciones al mismo tiempo, la unidad de control lo organizará. Así, los ordenadores más rápidos pueden procesar instrucciones en una secuencia que puede variar un poco, 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 los cálculos es más lenta, las instrucciones fluyen desde la memoria hacia piezas electrónicas llamadas "unidades de emisión". Una unidad de emisión retiene una instrucción hasta que tanto sus operandos como una unidad de ejecución estén disponibles. Luego, la instrucción y sus operandos se "envían" a una unidad de ejecución. La unidad de ejecución ejecuta la instrucción. Luego, los datos resultantes se mueven a una cola de datos para volver a escribirse en la memoria o en los registros. Si la computadora tiene varias unidades de ejecución, generalmente puede ejecutar varias instrucciones por ciclo de reloj.

Es común tener unidades de ejecución especializadas. Por ejemplo, una computadora de precio modesto podría tener solo una unidad de ejecución de punto flotante, porque las unidades de punto flotante son caras. La misma computadora podría tener varias unidades de números enteros, porque son relativamente económicas y pueden realizar 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 se juntan, las señales de los operandos y la unidad de ejecución se cruzarán. La lógica en esta intersección detecta que la instrucción puede funcionar, por lo que la instrucción se "emite" a la unidad de ejecución libre. Un estilo alternativo de unidad de control de emisión implementa el algoritmo Tomasulo , que reordena una cola de hardware de instrucciones. 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 llaman tabla de cola. [6] [7]

Con un poco de 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 hacer esto sin la memoria compleja y direccionable por contenido que consume mucha energía 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é sucede si la memoria escribe lentamente? ¿O qué sucede si el registro de destino será utilizado por una instrucción "anterior" que aún no se ha emitido? En ese caso, es posible que sea necesario programar el paso de escritura diferida de la instrucción. A esto a veces se le llama "retirar" una instrucción. En este caso, debe haber una lógica de programación en el back end de las unidades de ejecución. Programa el acceso a los registros o la memoria que obtendrán los resultados. [6] [7]

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

Los controladores fuera de servicio requieren características de diseño especiales para manejar interrupciones. Cuando hay varias instrucciones en proceso, no está claro en qué parte del flujo de instrucciones ocurre una interrupción. Para interrupciones de entrada y salida, casi cualquier solución funciona. Sin embargo, cuando una computadora tiene memoria virtual, ocurre una interrupción para indicar que falló un acceso a la memoria. Este acceso a la memoria debe estar asociado con una instrucción exacta y un estado exacto del procesador, de modo que el estado del procesador pueda ser guardado y restaurado por la interrupción. Una solución habitual conserva copias de los registros hasta que se completa un acceso a la memoria. [6] [7]

Además, las CPU fuera de servicio tienen aún más problemas con los bloqueos por ramificación, porque pueden completar varias instrucciones por ciclo de reloj y, por lo general, tienen muchas instrucciones en varias etapas de progreso. Por lo tanto, estas unidades de control podrían utilizar todas las soluciones utilizadas por los procesadores segmentados. [8]

Traducción de unidades de control

Algunas computadoras traducen cada instrucción individual en una secuencia de instrucciones más simples. La ventaja es que una computadora que no funciona puede ser más simple en la mayor parte de su lógica, mientras maneja instrucciones complejas de varios pasos. Las CPU Intel x86 desde Pentium Pro traducen instrucciones CISC x86 complejas a microoperaciones internas más parecidas a RISC.

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

Unidades de control para ordenadores de bajo consumo

Muchos ordenadores modernos tienen controles que minimizan el consumo de energía. En los ordenadores que funcionan con pilas, como los teléfonos móviles, la ventaja es que la batería dura más. En los ordenadores que funcionan con corriente eléctrica, la justificación es reducir el coste de la energía, la refrigeración o el ruido.

La mayoría de las computadoras modernas utilizan lógica CMOS . La lógica CMOS desperdicia energía de dos formas comunes: cambiando el estado, es decir, "potencia activa", y por fugas no deseadas. La potencia activa de una computadora se puede reducir apagando las señales de control. La corriente de fuga se puede reducir reduciendo la presión eléctrica, el voltaje, haciendo que los transistores tengan regiones de agotamiento más grandes o apagando la lógica por completo.

La potencia activa es más fácil de reducir porque los datos almacenados en la lógica no se ven afectados. El método habitual reduce la frecuencia de reloj de la CPU. La mayoría de los sistemas informáticos utilizan este método. Es habitual que una CPU permanezca inactiva durante la transición para evitar los efectos secundarios del cambio de frecuencia de reloj.

La mayoría de las computadoras también tienen una instrucción de "detención". Esta instrucción se inventó para detener el código que no genera interrupciones, de modo que el código que genera interrupciones tenga una sincronización confiable. Sin embargo, los diseñadores pronto notaron que una instrucción de detención también era un buen momento para apagar por completo el reloj de una CPU, reduciendo la potencia activa de la CPU a cero. El controlador de interrupciones podría seguir necesitando un reloj, pero eso generalmente consume 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 para obtener ventajas 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 piezas exactas de lógica necesarias.

Un método común es distribuir la carga entre muchas CPU y apagar las CPU que no se utilizan a medida que se reduce 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 más pequeña, literalmente con menos puertas lógicas. Por lo tanto, tiene poca fuga y 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 las PC, que suelen tener una CPU auxiliar integrada que gestiona el sistema de energía. Sin embargo, en las 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 reduciendo el voltaje de la fuente de alimentación. Esto afecta la fiabilidad del ordenador de muchas maneras, por lo que la ingeniería es costosa y es poco común, salvo en ordenadores relativamente caros, como los PC o los teléfonos móviles.

Algunos diseños pueden utilizar transistores de muy baja fuga, pero estos suelen aumentar el coste. Las barreras de agotamiento de los transistores se pueden hacer más grandes para que haya menos fugas, pero esto hace que el transistor sea más grande y, por tanto, más lento y más caro. Algunos proveedores utilizan esta técnica en partes seleccionadas de un CI mediante la construcción de una lógica de baja fuga a partir de transistores grandes que algunos procesos proporcionan para circuitos analógicos. Algunos procesos colocan los transistores por encima de la superficie del silicio, en "fets de aleta", 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 las fugas, pero esto añade pasos al procesamiento, lo que lo hace 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 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 bajas fugas.

Algunas CPU [11] utilizan un tipo especial de flip-flop (para almacenar un bit) que acopla una celda de almacenamiento rápida y de alta fuga a una celda lenta, grande (y costosa) y de baja fuga. Estas dos celdas tienen fuentes de alimentación separadas. Cuando la CPU entra en un modo de ahorro de energía (por ejemplo, debido a una parada 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 de un 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 integrados muy simples a veces simplemente se reinician.

Integración con la computadora

Todas las CPU modernas tienen una lógica de control para conectar la CPU al resto de la computadora. En las computadoras modernas, 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 controla un controlador de bus. Muchas computadoras modernas usan la misma interfaz de bus para la memoria, la entrada y la salida. Esto se llama "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. Las PC x86 usan un método más antiguo, un bus de E/S separado al que se accede mediante instrucciones de E/S.

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

A menudo, existe un controlador de caché para la memoria caché . El controlador de caché y la memoria caché asociada suelen ser la parte física más grande de una CPU moderna de mayor 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 ninguna computadora obtenga nunca datos antiguos desactualizados.

Muchos ordenadores históricos incorporaban algún tipo de entrada y salida directamente en la unidad de control. Por ejemplo, muchos ordenadores históricos tenían un panel frontal con interruptores y luces controlados directamente por la unidad de control. Estos permitían a un programador introducir directamente un programa y depurarlo. En los ordenadores de producción posterior, el uso más común de un panel frontal era introducir un pequeño programa de arranque para leer el sistema operativo desde el disco. Esto era molesto. Por ello, los paneles frontales se sustituyeron por programas de arranque en memoria de sólo 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 tomaran prestada la lógica de lectura y escritura de memoria de la unidad de control. [12] Esto redujo la complejidad y el gasto 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 E/S. [13] Este diseño proporcionaba la mayoría de las características de una PC moderna con solo una pequeña fracción de la lógica electrónica. La computadora de doble hilo era ejecutada 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 prioridad decreciente) video, red, disco, un temporizador periódico, mouse y teclado. El microprograma hacía la lógica compleja del dispositivo de E/S, así como la lógica para integrar el dispositivo con la computadora. Para la E/S de hardware real, 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 cambiar los niveles de voltaje de salida (por ejemplo, para video). Para manejar eventos externos, el microcontrolador tenía microinterrupciones para cambiar los hilos al final del ciclo de un hilo, por ejemplo, al final de una instrucción o después de que se accediera a un registro de desplazamiento. El microprograma podía reescribirse y reinstalarse, lo que resultaba muy útil para una computadora de investigación.

Funciones de la unidad de control

De esta manera, un programa de instrucciones en la memoria hará que la UC configure los flujos de datos de la CPU para manipular los datos correctamente entre instrucciones. Esto da como resultado una computadora que podría ejecutar un programa completo y no requeriría intervención humana para realizar cambios de hardware entre instrucciones (como se debía hacer cuando se usaban solo tarjetas perforadas para los cálculos antes de que se inventaran las computadoras programadas almacenadas con UC).

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 el uso de unidades lógicas combinacionales , que cuentan con un número finito de puertas que pueden generar resultados específicos en función de las instrucciones que se utilizaron para invocar esas respuestas. Las unidades de control cableadas son generalmente más rápidas que los diseños microprogramados. [14]

Este diseño utiliza una arquitectura fija, es decir, requiere cambios en el cableado si se modifica o cambia el conjunto de instrucciones . Puede resultar conveniente para computadoras simples y rápidas.

Un controlador que utiliza este enfoque puede funcionar a alta velocidad, pero tiene poca flexibilidad. Un conjunto de instrucciones complejo puede abrumar a un diseñador que utilice 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 CPU usaban 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 del microprograma, a diferencia de la unidad de control cableada, suele especificarse mediante una descripción en forma 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 realizan mediante microinstrucciones. El microprograma se puede depurar y reemplazar de forma similar al software. [17]

Métodos de combinación de diseño

Una variación popular del microcódigo es depurarlo mediante un simulador de software. El microcódigo es una tabla de bits, una tabla de verdad lógica que traduce la dirección del microcódigo en las salidas de la unidad de control. Esta tabla de verdad se puede introducir en un programa informático que produce una lógica electrónica optimizada. La unidad de control resultante es casi tan fácil de diseñar como la microprogramación, pero tiene la velocidad rápida y el bajo número de elementos lógicos de una unidad de control cableada. El resultado práctico se parece 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) , Moore School of Electrical Engineering, University of Pennsylvania, archivado desde el original (PDF) el 14 de marzo de 2013
  2. ^ Astha Singh (24 de septiembre de 2018). «Organización informática: unidad de control y diseño». GeeksforGeeks . Consultado el 25 de mayo de 2019 .
  3. ^ ab Asanovic, Krste (2017). Manual del conjunto de instrucciones RISC V (PDF) (2.2 ed.). Berkeley: Fundación RISC-V.
  4. ^ Power ISA(tm) (3.0B ed.). 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. 125. ISBN 9780673059536.
  6. ^ abcde Leighton, Luke. "Libre RISC-V M-Class". Crowd Supply . Consultado el 16 de enero de 2020 .
  7. ^ abcde Alsup, Mitch; Leighton, Luke; Zaruba, Florian; Thornton, James; Kimmitt, Jonathon; Petrisko, Dan; Takano, S.; Falvo, Samuel. "RISC-V HW Dev, marcador fuera de orden 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 ARM, Cortex (edición v8). ARM Ltd.
  11. ^ Manual de referencia técnica de ARM(tm) (v6, r0 ed.). Cambridge: ARM Ltd.
  12. ^ Manual de mantenimiento de la PDP-8L (PDF) . Maynard Mass.: Digital Equipment Corp. 1970. Archivado (PDF) desde el 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) desde el original el 7 de diciembre de 2010.
  14. ^ "UNIDADES DE CONTROL MICROPROGRAMADAS VERSUS UNIDADES DE CONTROL CABLEADAS". www.cs.binghamton.edu . Archivado desde el original el 2017-04-30 . Consultado el 2017-02-17 .
  15. ^ Williams, RD; Klenke, RH; Aylor, JH (mayo de 2003). "Enseñanza del diseño informático mediante prototipos virtuales". IEEE Transactions on Education . 46 (2): 296–301. Bibcode :2003ITEdu..46..296W. doi :10.1109/te.2002.808278. ISSN  0018-9359.
  16. ^ Barkalov, Alexander (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.