El microprogramar (es decir microcódigo del de la escritura) es un método que puede ser empleado para ejecutar las instrucciones de máquina en una CPU relativamente fácilmente, a menudo usar menos hardware que con otros métodos. Es un sistema de las rutinas muy detalladas y rudimentarias del bajo-nivel que los controles y ordenan las acciones necesarias para ejecutar (realizarse) instrucciones particulares, a veces también de descifrarlas (interpretar). Una instrucción de máquina ejecutada por una serie de las microinstrucciones del es así libremente comparable a cómo un intérprete ejecuta una declaración del idioma de alto nivel usar una serie de instrucciones de máquina.
El microcódigo es escrito normalmente por el ingeniero de la CPU durante la fase de diseño. No es significado generalmente para ser visible o cambiable por un programador normal, no incluso un programador de la asamblea, una de las razones que son que el microcódigo (por diseño) se puede cambiar dramáticamente con una nueva generación de Microarchitecture . El código automático conserva a menudo la compatibilidad hacia atrás . El microcódigo se ha utilizado a menudo para dejar un del microarchitecture emular a otro, generalmente más de gran alcance, arquitectura.
Algunos vendedores de hardware, especialmente IBM, también utilizan el microcódigo término como sinónimo para los soportes lógico inalterable, independientemente de si ejecuta realmente microprogramar de un procesador. Incluso el soporte lógico inalterable simple, tal como el que está usado en una impulsión dura, se describe a veces como microcódigo. Tal uso no se discute aquí.
El microcódigo no reside generalmente en el de memoria principal, sino en una memoria de alta velocidad especial, llamó el almacén de control . Puede ser que sea el la memoria de lectura/grabación inalterable de o. En el 3ultimo caso el microcódigo sería cargado en el almacén de control de un cierto otro medio de almacenaje como parte de la inicialización de la CPU, y podría ser alterado para corregir insectos en el sistema de instrucción, o para ejecutar nuevas instrucciones de máquina.
Los microprogramas consisten en series de microinstrucciones. Estas microinstrucciones controlan la CPU en un nivel muy fundamental de trazado de circuito del hardware. Por ejemplo, una sola microinstrucción típica pudo especificar las operaciones siguientes:
conecta el registro 1 con el " A" lado ALU
Conectar el registro 7 con el " B" lado ALU
Fijar el ALU para realizar la adición del dos-complemento
Fijar los ALU llevan la entrada a cero
Almacenar el valor del resultado en el registro 8
Poner al día el " condicionar el codes" con las banderas del estado de ALU (" Negative", " Zero", " Overflow", y " Carry")
Microjump al nnn de MicroPC para la microinstrucción siguiente
Para controlar simultáneamente las características de todo el procesador en un ciclo, la microinstrucción es a menudo tan ancha como 56 pedacitos. Los microprogramas se diseñan y se optimizan cuidadosamente para la ejecución posible más rápida, puesto que un microprograma lento rendiría una instrucción de máquina lenta que alternadamente causaría todos los programas usar esa instrucción de ser lenta.
El microcódigo alivió ese problema permitiendo que los ingenieros de diseño de la CPU escriban un microprograma para ejecutar una instrucción de máquina algo que el trazado de circuito para él. Incluso tarde en el proceso de diseño, microcódigo podría ser cambiado fácilmente, mientras que difícilmente - las instrucciones atadas con alambre no podrían. Esto facilitó grandemente diseño de la CPU y llevó a sistemas de instrucción más complejos.
Otra ventaja del microcódigo era la puesta en práctica de instrucciones de máquina más complejas. En los años 60 con el final de los 70, mucho la programación fue hecha en el de lenguaje de ensamblaje, un equivalente simbólico de las instrucciones de máquina. El el más abstracto y de alto nivel la instrucción de máquina, mayor es la productividad del programador. La última extensión de esto era " Language" de alto nivel directo ejecutable; diseños. En estos cada declaración de un idioma de alto nivel tal como PL/I sería ejecutada enteramente y directo por microcódigo, sin la compilación. El proyecto de sistemas futuro de IBM y el procesador del Fountainhead de Data General eran ejemplos de esto.
El microprogramar también ayudado para aliviar el problema de la anchura de banda de la memoria. Durante los años 70, las velocidades de la CPU crecieron más rápidamente que velocidades de la memoria. Técnicas numerosas de la aceleración tales como transferencia de bloque de memoria, pre-fetch de la memoria y escondrijos de niveles múltiples ayudados para reducir esto. Instrucciones de máquina al menos de alto nivel (hechas posibles por microcódigo) ayudadas más lejos. Pocas instrucciones de máquina más complejas requieren menos anchura de banda de la memoria. Por ejemplo las operaciones completas en conjuntos de caracteres se podían hacer como sola instrucción de máquina, así evitando búsquedas de instrucciones múltiples.
Las arquitecturas usar esto se acercan incluyeron el System/360 de IBM y el VAX, los sistemas de Digital Equipment Corporation de instrucción cuyo fueron ejecutados por microprogramas complejos. El acercamiento de usar sistemas de instrucción microcódigo-ejecutados cada vez más complejos más adelante fue llamado CISC .
El hacer tan es importante si la compatibilidad de programa binaria es una prioridad. Los programas previamente existentes de esa manera pueden funcionar en el hardware total nuevo sin requerir la revisión y la recompilación. Al menos puede haber una pena del funcionamiento para este acercamiento. Las compensaciones entre la compatibilidad hacia atrás del uso contra funcionamiento de la CPU son discutidas caliente por los ingenieros de diseño de la CPU.
IBM System/360 tiene una arquitectura de 32 bits con 16 registros de fines generales, pero la mayor parte de las puestas en práctica System/360 utilizan realmente el hardware que ejecutó un microarchitecture subyacente mucho más simple; por ejemplo, System/360 el modelo 30 tenía trayectorias de datos de 8 bits a la unidad (ALU) de la lógica aritmética y de memoria principal y haber ejecutado los registros de fines generales en una unidad especial de la memoria de base de la alto-velocidad, y System/360 el modelo 40 tenía las trayectorias de datos de 8 bits al ALU y trayectorias de datos de 16 bits a de memoria principal y también ejecutadas los registros de fines generales en una unidad especial de memoria de base de la alto-velocidad. El modelo 50 y el modelo 65 tenían trayectorias de datos de 32 bits llenas y ejecutaron los registros de fines generales en circuitos más rápidos del transistor. De esta manera, el microprogramar permitió a IBM diseñar muchos modelos System/360 con hardware substancialmente diverso y atravesar una amplia gama del coste y del funcionamiento, mientras que los hacía todos arquitectónico compatibles. Esto redujo dramáticamente la cantidad de software del sistema único que tuvo que ser escrita para cada modelo.
Un acercamiento similar fue utilizado por Digital Equipment Corporation en su familia del VAX de computadoras. Un procesador de 32 bits TTL conjuntamente con microcódigo favorable ejecutó inicialmente la arquitectura programador-visible. Versiones posteriores del VAX utilizaron diversos microarchitectures, con todo la arquitectura programador-visible no cambió.
El microprogramar también redujo el coste de cambios del campo a los defectos correctos (el desinsecta en el procesador; un insecto podía ser fijado a menudo substituyendo una porción del microprograma algo que por los cambios que eran hechos a la lógica del hardware y atándola con alambre.
En 1947, el diseño del torbellino del MIT introdujo el concepto de un almacén de control como manera de simplificar diseño de la computadora y de moverse más allá de métodos ad hoc del . El almacén de control era un enrejado de dos dimensiones: una dimensión aceptó el " controlar el pulses" del tiempo; del reloj interno de la CPU, y del otro conectado con las señales de control en las puertas y otros circuitos. Un " distributor" del pulso; tomaría los pulsos generados por el reloj de la CPU y los rompería para arriba en ocho pulsos separados del tiempo, que activarían una diversa fila del enrejado. Cuando la fila fue activada, activaría las señales de control conectadas con ella.
Describió otra manera, las señales transmitidas por el almacén de control se están jugando como un rodillo del piano de jugador . Es decir, son controladas por una secuencia de palabras muy amplias construidas de los pedacitos y son " played" secuencialmente. En un almacén de control, sin embargo, el " song" es el cortocircuito y repetido continuamente.
En el Mauricio Wilkes 1951 realzó este concepto agregando la ejecución condicional, un concepto del relacionado con un condicional en los programas informáticos. Su puesta en práctica inicial consistió en un par de matrices, las señales generadas primer una de la manera del almacén de control del torbellino, mientras que la segunda matriz seleccionó que fila de las señales (la palabra de instrucción del microprograma, como si fuera) de invocar en el ciclo siguiente. Conditionals fue ejecutado proporcionando una manera que una sola línea en el almacén de control podría elegir de alternativas en la segunda matriz. Esto hizo las señales de control condicionales en la señal interna detectada. Wilkes acuñó microprogramar del término para describir esta característica y para distinguirla de un almacén de control simple.
Para aprovecharse de esto, las computadoras fueron divididas en varias piezas:
Un Microsequencer escogió la palabra siguiente del almacén de control . Un secuenciador es sobre todo un contador, pero generalmente también tiene cierta manera de saltar a una diversa parte del almacén de control dependiendo de un ciertos datos, generalmente datos del registro de instrucción y siempre una cierta parte del almacén de control. El secuenciador más simple es apenas un registro cargado de algunos pedacitos del almacén de control.
Un sistema del registro es una memoria rápida que contiene los datos de la unidad central de proceso. Puede incluir el contador de programa, el puntero de pila, y otros números que no sean fácilmente accesibles al programador del uso. El sistema de registro triple-se vira hacia el lado de babor a menudo, es decir, dos registros se pueden ser leídos, y un tercero escribir al mismo tiempo.
Un la unidad aritmética y de lógica realiza los cálculos, generalmente adición, negación lógica, un cambio correcto, y lógico Y. Realiza a menudo otras funciones, también.
Puede también haber un registro de dirección de memoria y los datos de la memoria colocan, usado para tener acceso a la memoria interna principal .
Junto, estos elementos forman un " Unidad de ejecución . " La mayoría de las CPU modernas tienen varias unidades de ejecución. Incluso las computadoras simples tienen generalmente una unidad para leer y para escribir memoria, y otra para ejecutar código del usuario.
Estos elementos se podían comprar a menudo juntos como sola viruta. Esta viruta vino en una anchura fija que formaría una “rebanada” a través de la unidad de ejecución. Éstos eran conocidos como “ virutas de la rebanada pedacito ”. La familia AMD Am2900 es uno de los ejemplos más conocidos de los elementos de la rebanada de pedacito.
Las partes de las unidades de ejecución, y las unidades de ejecución ellos mismos son interconectadas por un paquete de alambres llamados un autobús .
Los programadores desarrollan microprogramas. Las herramientas básicas son software: Un Microassembler permite que un programador defina la tabla de pedacitos simbólicamente. Un programa del simulador ejecuta los pedacitos in the same way as la electrónica (esperanzadamente), y permite que mucho más libertad elimine errores del microprograma.
Después de que se concluya, y se pruebe extensivamente el microprograma, se utiliza a veces como la entrada a un programa de computadora que construya lógica para presentar los mismos datos. Este programa es similar a ésos usados para optimizar un arsenal de lógica programable . NinguÌn programa de computadora sabido puede producir lógica óptima, pero incluso la lógica bastante buena puede reducir sumamente el número de transistores del número requerido para un almacén de control de la ROM. Esto reduce el coste y la energía usados por una CPU.
El microcódigo se puede caracterizar como el horizontal o vertical. Esto se refiere sobre todo a si cada microinstrucción controla directo los elementos de la CPU (microcódigo horizontal), o requiere descifrar subsecuente por la lógica combinacional antes de hacer tan (microcódigo vertical). Por lo tanto cada microinstrucción horizontal es más ancha (contiene más pedacitos) y ocupa más espacio de almacenaje que una microinstrucción vertical.
En una puesta en práctica típica una palabra del microprograma horizontal abarca a grupos bastante firmemente definidos de pedacitos. Por ejemplo, un arreglo simple pudo ser:
Algunos microcódigos verticales son apenas los de lenguaje de ensamblaje de una computadora convencional simple que esté emulando a una computadora más compleja. Esta técnica era popular en la época PDP-8 . Otra forma de microcódigo vertical tiene dos campos:
Una CPU que utiliza microcódigo toma generalmente varios ciclos de reloj para ejecutar una sola instrucción, un ciclo de reloj para cada paso en el microprograma para esa instrucción. Algunos procesadores del CISC incluyen las instrucciones que pueden tardar un tiempo muy largo para ejecutar. Tales variaciones interfieren con el estado latente de la interrupción y, cuál es lejos más importante en sistemas modernos, la can¢ería .
se utilizan raramente, por lo tanto los recursos de la máquina dedicados a ellas se pierden en gran parte.
La programación se ha movido en gran parte lejos de nivel de la asamblea, así que es no más de mérito proporcionar las instrucciones complejas por razones de la productividad.
Los recursos de la máquina dedicados a las instrucciones complejas raro-usadas se utilizan mejor para apresurar el funcionamiento de instrucciones más simples, de uso general.
Las instrucciones microcodificadas complejas que requieren muchos, los ciclos de reloj diversos son difíciles de canalizar para el funcionamiento creciente.
Sistemas de instrucción más simples permiten la ejecución directa por el hardware, evitando la pena del funcionamiento de la ejecución microcodificada.
debe ser mencionado que hay los counter-points también :
Las instrucciones complejas en puestas en práctica pesadamente microcodificadas pueden no tomar recursos mucho adicionales de la máquina (excepto espacio del microcódigo); por ejemplo, el mismo ALU es de uso frecuente calcular un direccionamiento efectivo tan bien como computando el resultado de los operandos reales.
Las instrucciones No-RISC, es decir implicando los operandos directos de la memoria son utilizados con frecuencia por los recopiladores modernos, incluso inmediatos de apilar (es decir resultado de la memoria) operaciones aritméticas se emplean comúnmente. Aunque tales operaciones de memoria, a menudo con las codificaciones diversas de la longitud (es decir el " CISC" las características), son más difíciles de canalizar, él siguen siendo completamente factibles, ejemplificado claramente por el Intel 486, el Cyrix 6x86, el etc.
Las instrucciones No-RISC intrínsecamente realizan más trabajo por la instrucción (en promedio), y también se codifican normalmente alto, por lo tanto proporcionan una mejores densidad del código y así mejor uso de los memorias ocult0es limitados.
" moderno; CISC" puestas en práctica, especialmente el X86, instrumento la mayoría de las instrucciones y todo el " de los modos de dirección; en hardware" ; el microcódigo todavía se utiliza sin embargo, para alguÌn realmente complejo, o mismo el special, instrucciones (tales como CPUID ), así como para " interno; housekeeping".
Mucho diseñan a los procesadores RISC y VLIW para ejecutar cada instrucción (mientras está en el escondrijo) en un solo ciclo. Esto es muy similar a la manera que las CPU con microcódigo ejecutan una microinstrucción por ciclo. Los procesadores VLIW tienen instrucciones que se comporten como microcódigo horizontal muy amplio, aunque las instrucciones de VLIW no tengan típicamente como control de grano fino sobre el hardware como microcódigo. Los procesadores del RISC pueden tener instrucciones que parezcan microcódigo vertical estrecho.
.
| Random links: | Værløse | Toro europeo común | Shizuka Arakawa | Steve Abbott | Letňany |