stringtranslate.com

Unidad de control

La unidad de control (CU) es un componente de la unidad central de procesamiento (CPU) de una computadora que dirige el funcionamiento del procesador. Una CU 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 CU. Dirige el flujo de datos entre la CPU y los otros dispositivos. John von Neumann incluyó la unidad de control como parte de la arquitectura de Von Neumann . [1] En los diseños de computadoras 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 multiciclo . Estos fueron los primeros diseños. Siguen siendo 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 sucesivamente el ciclo de instrucción . Esto consiste en buscar la instrucción, buscar los operandos, decodificar la instrucción, ejecutar la instrucción y luego escribir los resultados 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. Entonces, 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 indicarle a la lógica de la unidad de control qué paso debe realizar.

Las unidades de control multiciclo suelen utilizar los flancos ascendente y descendente de su reloj de sincronización de onda cuadrada. Operan un paso de su operación en cada borde del reloj de cronometraje, 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 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 de una interrupción. Otra es que algunas excepciones (por ejemplo, una excepción de memoria no disponible) pueden deberse a una instrucción que debe reiniciarse.

Las unidades de control se pueden diseñar para manejar interrupciones en una de dos formas típicas. Si lo más importante es una respuesta rápida, se diseña una unidad de control que abandone 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 va a ser muy económica, muy simple, muy confiable o si desea realizar más trabajo, la unidad de control finalizará el trabajo en proceso antes de manejar la interrupción. Terminar el trabajo es económico, porque no necesita 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 hacer excepciones para operar 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 fallida.

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

Unidades de control canalizadas

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

En una computadora canalizada, 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 canalizada generalmente tiene "registros de canalizació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 común que las etapas pares operen en un borde del reloj de onda cuadrada, mientras que las etapas impares operan en el otro borde. Esto acelera la computadora por un factor de dos en comparación con los diseños de un solo borde.

En una computadora canalizada, la unidad de control organiza el flujo para que se inicie, continúe y se detenga según lo ordene un programa. Los datos de las instrucciones generalmente se pasan en registros de canalización 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 asegura que las instrucciones en cada etapa no perjudiquen el funcionamiento de las instrucciones en otras etapas. Por ejemplo, si dos etapas deben utilizar el mismo dato, la lógica de control garantiza que los usos se realicen en la secuencia correcta.

Cuando funciona de manera eficiente, una computadora canalizada tendrá una instrucción en cada etapa. Luego trabaja en todas esas instrucciones al mismo tiempo. Puede finalizar 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 canalización a veces debe descartar los datos en proceso y reiniciarse. Esto se llama "estancamiento". Cuando dos instrucciones pueden interferir, a veces la unidad de control debe dejar de procesar una instrucción posterior hasta que se complete una instrucción anterior. Esto se denomina "burbuja de canalización" porque una parte de la canalización no procesa instrucciones. Pueden ocurrir burbujas de tubería cuando dos instrucciones operan en el mismo registro.

Las interrupciones y excepciones inesperadas también paralizan el proceso. Si una computadora canalizada abandona el trabajo debido a una interrupción, se pierde más trabajo que en una computadora de ciclos múltiples. Las excepciones predecibles no necesitan detenerse. Por ejemplo, si se utiliza una instrucción de excepción para ingresar al sistema operativo, no provoca una parada.

¿Velocidad? A la misma velocidad de la lógica electrónica, puede realizar 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 canalizada se puede hacer más rápida o más lenta variando el número de etapas en la canalización. Con más etapas, cada etapa hace menos trabajo y, por lo tanto, la etapa tiene menos retrasos desde las puertas lógicas .

¿Economía? Un modelo canalizado de una computadora a menudo tiene la menor cantidad de puertas lógicas por instrucción por segundo, menos que una computadora multiciclo o fuera de servicio. ¿Por qué? La etapa promedio es menos compleja que una computadora multiciclo. Una computadora averiada generalmente tiene grandes cantidades de lógica inactiva en un instante dado. Cálculos similares suelen mostrar que una computadora canalizada utiliza menos energía por instrucción.

Sin embargo, una computadora canalizada suele ser más compleja y costosa que una computadora multiciclo comparable. Normalmente tiene más puertas lógicas, registros y una unidad de control más compleja. De manera similar, podría usar más energía total, mientras usa menos energía por instrucción. Las CPU fuera de servicio normalmente pueden realizar más instrucciones por segundo porque pueden realizar varias instrucciones a la vez.

Prevención de puestos

Las unidades de control utilizan muchos métodos para mantener llena una tubería y evitar paradas. Por ejemplo, incluso las unidades de control simples pueden asumir que una rama 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 el ramal inverso. Si un compilador puede detectar la dirección de una rama que se toma con más frecuencia, el compilador puede simplemente producir instrucciones para que la rama que se toma con más frecuencia sea la dirección de rama preferida. De manera similar, una unidad de control podría recibir sugerencias del compilador: algunas computadoras tienen instrucciones que pueden codificar sugerencias del compilador sobre la dirección de la rama. [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 rama para recordar la dirección que se tomó más recientemente.

Algunas unidades de control pueden realizar una 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 debido a la memoria caché de las computadoras muy rápidas . 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 podría detenerse 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 ayudar a esto, se desarrollaron CPU y unidades de control fuera de servicio para procesar datos a medida que estén disponibles. (Ver siguiente sección)

Pero, ¿qué pasa si todos los cálculos están completos, pero la CPU todavía está detenida, esperando la memoria principal? Luego, una unidad de control puede cambiar a un subproceso de ejecución alternativo cuyos datos se han obtenido mientras el subproceso 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 la cantidad de subprocesos según las tecnologías de memoria actuales y el tipo de computadora. Las computadoras típicas, como las PC y los teléfonos inteligentes, suelen tener unidades de control con unos pocos subprocesos, lo suficiente para mantenerse ocupados con sistemas de memoria asequibles. Las computadoras con bases de datos a menudo tienen alrededor del doble de subprocesos, para mantener ocupadas sus memorias mucho más grandes. Las unidades de procesamiento gráfico (GPU) suelen tener cientos o miles de subprocesos, porque tienen cientos o miles de unidades de ejecución que realizan cálculos gráficos repetitivos.

Cuando una unidad de control permite hilos , 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 generalmente se hacen para que se parezcan mucho a procesos normales divididos en tiempos. Como mucho, es posible que el sistema operativo necesite conocerlos. En las GPU, la programación de subprocesos generalmente no se puede ocultar del software de la aplicación y, a menudo, se controla con una biblioteca de subrutinas especializada.

Unidades de control fuera de servicio

Se puede diseñar una unidad de control para terminar lo que pueda . Si se pueden completar varias instrucciones al mismo tiempo, la unidad de control lo organizará. Por lo tanto, las computadoras más rápidas pueden procesar instrucciones en una secuencia que puede variar un poco, dependiendo de cuándo estén disponibles los operandos o destinos de las instrucciones. La mayoría de las supercomputadoras y muchas CPU de PC utilizan este método. La organización exacta de este tipo de centralita 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 emitidas". 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 realiza la instrucción. Luego, los datos resultantes se mueven a una cola de datos para volver a escribirlos en la memoria o en los registros. Si la computadora tiene múltiples unidades de ejecución, generalmente puede realizar varias instrucciones por ciclo de reloj.

Es común contar con unidades de ejecución especializadas. Por ejemplo, una computadora de precio modesto podría tener sólo una unidad de ejecución de punto flotante, porque las unidades de punto flotante son caras. La misma computadora puede tener varias unidades enteras, 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 "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 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 la llaman tabla de cola. [6] [7]

Con algo de lógica adicional, un marcador puede combinar de forma compacta el reordenamiento de la ejecución, el cambio de nombre de los registros y excepciones e interrupciones precisas. Además, puede hacer esto sin la compleja memoria direccionable por contenido, que consume mucha energía y que utiliza el algoritmo Tomasulo. [6] [7]

Si la ejecución es más lenta que escribir los resultados, la cola de reescritura de la memoria siempre tiene entradas libres. ¿Pero qué pasa si la memoria escribe lentamente? ¿O qué pasa si el registro de destino será utilizado por una instrucción "anterior" que aún no se ha emitido? Entonces, es posible que sea necesario programar el paso de reescritura 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 la parte posterior de las unidades de ejecución. Programa el acceso a los registros o memoria que obtendrán los resultados. [6] [7]

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

Los controladores fuera de servicio requieren características de diseño especiales para manejar las interrupciones. Cuando hay varias instrucciones en progreso, no está claro en qué parte del flujo de instrucciones se produce una interrupción. Para interrupciones de entrada y salida, casi cualquier solución funciona. Sin embargo, cuando una computadora tiene memoria virtual, se produce una interrupción para indicar que falló el 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 la interrupción pueda guardar y restaurar el estado del procesador. Una solución habitual conserva copias de los registros hasta que se completa el acceso a la memoria. [6] [7]

Además, las CPU fuera de servicio tienen aún más problemas con las paradas debido a la bifurcació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 canalizados. [8]

Traducir unidades de control

Algunas computadoras traducen cada instrucción en una secuencia de instrucciones más simples. La ventaja es que una computadora averiada 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 el Pentium Pro traducen instrucciones complejas CISC x86 en microoperaciones internas más similares a RISC.

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

Unidades de control para ordenadores de baja potencia.

Muchas computadoras modernas tienen controles que minimizan el uso de energía. En las computadoras que funcionan con baterías, como las de los teléfonos celulares, la ventaja es una mayor duración de la batería. En ordenadores con alimentación de red pública, la justificación es reducir el coste de energía, refrigeración o ruido.

La mayoría de las computadoras modernas utilizan lógica CMOS . CMOS desperdicia energía de dos maneras comunes: cambiando de estado, es decir, "potencia activa", y mediante fugas no intencionadas. 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 velocidad del reloj de la CPU. La mayoría de los sistemas informáticos utilizan este método. Es común que una CPU esté inactiva durante la transición para evitar efectos secundarios del cambio de reloj.

La mayoría de las computadoras también tienen una instrucción de "detener". Esto se inventó para detener el código sin interrupción para que el código con interrupción tenga una sincronización confiable. Sin embargo, los diseñadores pronto notaron que una instrucción de parada también era un buen momento para apagar completamente el reloj de una CPU, reduciendo la potencia activa de la CPU a cero. Es posible que el controlador de interrupciones siga necesitando un reloj, pero normalmente 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 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 piezas exactas de lógica necesarias.

Un método común es distribuir la carga entre muchas CPU y apagar las CPU no utilizadas a medida que se reduce la carga. La lógica de cambio 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 pocas fugas y es el último en apagarse y el primero en encenderse. Además, es la única CPU que requiere características especiales de bajo consumo. Se utiliza un método similar en la mayoría de las PC, que generalmente tienen una CPU auxiliar incorporada que administra el sistema de energía. Sin embargo, en las PC, el software suele estar en el BIOS, no en el sistema operativo.

En teoría, las computadoras con velocidades de reloj más bajas también podrían reducir las fugas al reducir el voltaje de la fuente de alimentación. Esto afecta la confiabilidad de la computadora de muchas maneras, por lo que la ingeniería es costosa y es poco común, excepto en computadoras relativamente caras, como PC o teléfonos móviles.

Algunos diseños pueden utilizar transistores de fuga muy baja, pero estos suelen añadir costes. Las barreras de agotamiento de los transistores se pueden hacer más grandes para tener 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 circuito integrado 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 sobre la superficie del silicio, en "aletas", pero estos procesos tienen más pasos, por lo que son más caros. Los materiales especiales para dopar transistores (por ejemplo, el 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 mayor que la del 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 que se pueda desactivar la lógica, los datos que contiene deben trasladarse a algún tipo de almacenamiento de baja fuga.

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 (cara) 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 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 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 integrados muy simples a veces simplemente se reinician.

Integración con la computadora

Todas las CPU modernas tienen lógica de control para conectar la CPU al resto de la computadora. En los ordenadores modernos 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 utilizan la misma interfaz de bus para memoria, entrada y salida. Esto se denomina "E/S asignadas 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 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 tiende a incluir un controlador de interrupciones . Maneja señales de interrupción del bus del sistema. La unidad de control es la parte de la computadora que responde a las interrupciones.

A menudo hay un controlador de caché para almacenar 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 y de mayor rendimiento. Cuando la memoria, el bus o el caché se comparten con otras CPU, la lógica de control debe comunicarse con ellas para garantizar que ninguna computadora obtenga datos antiguos desactualizados.

Muchas computadoras históricas incorporaron algún tipo de entrada y salida directamente en la unidad de control. Por ejemplo, muchas computadoras históricas tenían un panel frontal con interruptores y luces controlados directamente por la unidad de control. Estos permiten a un programador ingresar directamente a un programa y depurarlo. En computadoras de producción posterior, el uso más común de un panel frontal era ingresar un pequeño programa de arranque para leer el sistema operativo desde el disco. Esto fue molesto. Entonces, 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 tomaran prestada la lógica de lectura y escritura de la 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 disco.

La Xerox Alto tenía una unidad de control microprogramable multitarea que realizaba casi todas las E/S. [13] Este diseño proporcionó 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 subproceso fue ejecutada por los dos microhilos de menor prioridad. Estos realizaban cálculos siempre que no se requería E/S. Los microhilos de alta prioridad proporcionaron (en prioridad decreciente) video, red, disco, un temporizador periódico, mouse y teclado. El microprograma realizó la lógica compleja del dispositivo de E/S, así como la lógica para integrar el dispositivo con la computadora. Para las E/S del 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 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 se podía reescribir y reinstalar, lo que resultaba muy útil para una computadora de investigación.

Funciones de la unidad de control.

Por lo tanto, un programa de instrucciones en la memoria hará que la CU configure los flujos de datos de una 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 tenía que hacerse cuando se usaban sólo tarjetas perforadas para los cálculos antes de que se inventaran las computadoras programadas almacenadas con CU).

Unidad de control cableada

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

Las unidades de control cableadas se implementan mediante el uso de unidades lógicas combinacionales , que presentan un número finito de puertas que pueden generar resultados específicos basados ​​en 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: 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 utilice este enfoque puede funcionar a alta velocidad; sin embargo, tiene poca flexibilidad. Un conjunto de instrucciones complejo puede abrumar a 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 evolucionaron. Anteriormente, las unidades de control para 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 organizaron como una secuencia de microinstrucciones y se almacenaron en una memoria de control especial. El algoritmo para la unidad de control de microprograma, a diferencia de la unidad de control cableada, generalmente se especifica mediante una descripción del 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 manera similar al software. [17]

Métodos combinados de diseño.

Una variación popular del microcódigo es depurar el microcódigo utilizando un simulador de software. Entonces, el microcódigo es una tabla de bits. Esta es 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 enviar a un programa informático que produzca 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 alta velocidad y el bajo número de elementos lógicos de una unidad de control cableada. El resultado práctico se asemeja a una máquina Mealy o un controlador Richards .

Ver también

Referencias

  1. ^ von Neumann, John (1945), Primer borrador de un informe sobre EDVAC (PDF) , Escuela de Ingeniería Eléctrica Moore, Universidad de Pensilvania, 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". Geeks para Geeks . 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: el CDC 6600 . Atlanta: Scott, Foreman and Co. p. 125.ISBN 9780673059536.
  6. ^ abcde Leighton, Lucas. "Libre RISC-V Clase M". Suministro de multitudes . Consultado el 16 de enero de 2020 .
  7. ^ ABCDE 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, generador SOC de Rocketship" . 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 (v8 ed.). ARM Ltd.
  11. ^ Manual de referencia técnica de ARM (tm) (v6, r0 ed.). Cambridge: ARM Ltd.
  12. ^ Manual de mantenimiento del 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) . Fotocopia. 1976. Archivado (PDF) desde el original el 7 de diciembre de 2010.
  14. ^ "UNIDADES DE CONTROL MICROPROGRAMADAS VERSUS CABLEADAS";. www.cs.binghamton.edu . Archivado desde el original el 30 de abril de 2017 . Consultado el 17 de febrero de 2017 .
  15. ^ Williams, RD; Klenke, RH; Aylor, JH (mayo de 2003). "Enseñanza del diseño informático mediante prototipos virtuales". Transacciones IEEE sobre educación . 46 (2): 296–301. 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.