13 votos

ISA opcodes---¿de Dónde vienen?

Cuando los ingenieros diseñan un conjunto de instrucciones de la arquitectura, por lo que el procedimiento o protocolo, si existe, ¿de que seguir a la hora de fijar ciertos códigos binarios como las instrucciones. Por ejemplo, si tengo un ISA que dice 10110 es una carga de la instrucción, donde hizo que el número binario? Fue modelada a partir de una tabla de estados de una máquina de estados finitos que representa una operación de carga?

Editar: Después de hacer más investigación, yo creo que lo que estoy tratando de preguntar se refiere a cómo los códigos de operación de las distintas instrucciones de CPU asignados. AGREGAR podría ser designado con un código de operación de 10011; una carga de instrucción podría ser designado como 10110. Lo que el proceso de pensamiento que va en la asignación de estos códigos binarios para el conjunto de instrucciones?

22voto

Brian Drummond Puntos 27798

Depende de la antigüedad de la ISA.

En los primeros días de diseño de la mano, y más aún cuando la Cpu se reunieron a partir de discreta lógica, la lógica del diseño tendría que venir primero, y ha sido ampliamente minimizado y, a continuación, el ISA patrones de bits que habría sido lo que los valores se requiere para hacer que un mínimo de lógica de trabajo.

De manera que puede haber un patrón particular de las señales de control que permiten a algunas multiplexores para conectar la salida de la ALU a la entrada de la GP en el archivo de registro, un poco más de las señales de control que son las instrucciones de la ALU para suma, resta, and, or, etc, y un par de bits de la dirección en el archivo de registro. Estos tres grupos de señales de campos de formulario dentro de la instrucción. Cada grupo se mantendrán juntos, y su significado se origina en el diseño de la unidad (ALU etc), pero los grupos pueden estar en cualquier orden, hasta el diseño del decodificador de la instrucción. (el x86 es bastante viejo que puede detectar algunos de esto si nos fijamos en el lugar correcto - no era un diseño totalmente nuevo, pero fue a partir de la edad 8080)

Después de las Nia puede ser "limpiado" y que se hizo más regular y simple de usar, con hardware para traducir entre ellos y el hardware real-control de nivel de las señales, a veces a través de "microcódigo". Estos son los llamados "CISC" o "Complejo Conjunto de Instrucciones de Codificación". El 86 "Rep" instrucción prefijo es un ejemplo sencillo de esto - hace que la siguiente instrucción a ser repetida un número de veces, para salvar a tener que escribir un bucle FOR.

Aún más tarde (en la década de 1980) llegó a un movimiento de la espalda para un estilo más simple de codicación directa (RISC - Reduce el Conjunto de Instrucciones de Codificación) que se puede ver en los procesadores ARM. Esto fue impulsado por el pequeño tamaño de ASICs en el tiempo, y el deseo de poner CPUs de 32 bits en ellos, por lo que no era de repuesto de la capacidad para el complejo conjunto de instrucciones de los decodificadores, para conseguir la CPU hacia abajo a cerca de 20.000 puertas. (También hubo un temporal de aumento de rendimiento, porque la gente no había desarrollado técnicas para hacer CISC decodificadores rápido, sin embargo - que surgió en 1995 con el Pentium Pro)

Y hoy en día no importa - Cpu leído varias instrucciones a la vez, y dedicar millones de transistores para la decodificación de ellos, re-ordenar y ejecutar como muchos como sea posible a la vez, para acelerar los programas que podrían haber sido escritas por el más antiguo estilo de ISA.

9voto

jns Puntos 449

Si el grupo de instrucciones similares juntos, los patrones de emerger. Esto es muy evidente en el BRAZO, donde la ISA manual realidad muestra que poco más de una instrucción de la palabra corresponden a la función, el registro de elección, etc. Pero también puede ser inferido para X86.

En última instancia, la "función" parte de opcodes entrar en algunos de binario a onehot decodificador que realmente activa una función particular o secuencia de operaciones canalizadas. Ellos no son normalmente relacionados con los contenidos de cualquier estado de la máquina, a menos que estemos considerando la longitud variable de las instrucciones que requieren una máquina de estado para decodificar.

6voto

Corey Puntos 700

Alguien en algún momento se sentó y definido.

Un buen ISA hará que el decodificador tan simple como sea posible.

Por ejemplo, con un ALU de instrucción que podría permitir a algunos de los bits del código de operación (opcode ser enviadas directamente a las líneas de control de la ALU.

6voto

Otto G Puntos 66

En muchos de los casos, la elección es bastante arbitraria o basado en "dondequiera que mejor se ajusta a" como las Nia crecer con el tiempo. Sin embargo, el MOS 6502 es un maravilloso ejemplo de un chip donde el ISA diseño fue fuertemente influenciado por tratar de exprimir lo más posible de los limitados transistores.

Echa un vistazo a este vídeo que explica cómo el 6502 fue de ingeniería inversa, en particular, de 34:20 en adelante.

El 6502 es un 8-bits del microprocesador introducido en 1975. A pesar de que había un 60% menos de puertas que el Z80 fue dos veces más rápido, y aunque fue más restringido (en términos de registros, etc.), lo hizo para que, con un elegante conjunto de instrucciones.

Contiene sólo 3510 transistores, que se fueron ampliando, con la mano, por un pequeño equipo de personas que se arrastran sobre algunos de los grandes láminas de plástico que posteriormente fueron ópticamente encogido, la formación de las diferentes capas de la 6502.

Como se puede ver a continuación, el 6502 pasa a la instrucción de código de operación y los datos de tiempo en la decodificación de la ROM, luego se lo pasa a un "azar de la lógica de control del componente" cuyo propósito es, probablemente, para invalidar la ROM de salida en ciertas situaciones complejas.

6502 block diagram

En 37:00 en el video se puede ver una tabla de los decodificar ROM en el que se muestra qué condiciones las entradas deben satisfacer para obtener un "1" para un determinado control de salida. También se puede encontrar en esta página.

Usted puede ver que la mayoría de las cosas en esta tabla tienen Xs en varias posiciones. Tomemos, por ejemplo

011XXXXX 2 X RORRORA

Esto significa que los 3 primeros bits del código de operación debe ser 011, y G deben ser de 2; nada más importa. Si es así, la salida de nombre RORRORA va a ir de verdad. Todos los ROR opcodes comienza con 011; pero hay otras instrucciones que comienza con 011 también. Estos probablemente necesitan ser filtrados por el "azar de la lógica de control" de la unidad.

Así que, básicamente, los códigos de operación fueron elegidos de modo que las instrucciones que se necesitan para hacer lo mismo que los otros tenían algo en común a través de su patrón de bits. Usted puede ver esto mirando un código de operación de la tabla; todos los O instrucciones comienzan con 000, toda la Tienda instrucciones comienzan con 010, todas las instrucciones que el uso de páginas cero abordar son de la forma xxxx01xx. Por supuesto, algunas instrucciones no parecen "ajuste", porque el objetivo no es completamente regular opcode formato, sino más bien para proporcionar un potente conjunto de instrucciones. Y esta es la razón por la que el "azar de la lógica de control".

La página que he mencionado anteriormente, dice que algunas de las líneas de salida de la ROM que aparece dos veces, "suponemos que esto se ha hecho porque no había manera de enrutamiento a la salida de la línea donde querían, así que a poner la misma línea en una ubicación diferente de nuevo." Me imagino que los ingenieros de la mano-dibujo de esas puertas una por una y de repente darse cuenta de una falla en el diseño y tratando de encontrar una manera de evitar que se vuelva a iniciar todo el proceso.

5voto

TheBonsai Puntos 3112

Normalmente, se debe dividir el ISA en grupos funcionales. Tiene sentido (ya sea por la lógica de la optimización o simplemente ser ordenado) que de cortesía pares se diferencian por un solo bit de cambio (carga vs el de la tienda), y que tiene algún jerarquía de bits que afectan a la decodificación de árbol de decisión.

Al final del día, un arbitraria asignación de bits para el bloque de función (como contraposición a la colocación de los datos de los campos de la instrucción sólo tendrá un pequeño impacto en el diseño global de la eficiencia - pero usted tiene un montón de opciones acerca de cómo 'optimizar' ISA codificación dependiendo de lo que se siente es un parámetro importante.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X