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.
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.