En realidad, a menos que haya notas de diseño de WDC disponibles, la pregunta es demasiado larga para el campo del título: «¿Cuáles son, precisamente, las desventajas de tener una versión del WDC 65816 con un bus de datos de 16 bits y / o un bus de direcciones no multiplexado en comparación con las ventajas que daría? «
Todas las versiones (no soft¹) del WDC 65816 que conozco tiene una interfaz externa con un bus de datos de 8 bits y los 8 bits superiores del bus de direcciones multiplexados en los pines del bus de datos. Por lo tanto, se requieren dos ciclos para los accesos de datos de 16 bits (por ejemplo, LDA
con el m
conjunto de bits) y se requiere lógica externa para bloquear los 8 bits superiores de las líneas de dirección, lo que también puede introducir restricciones de tiempo adicionales. .
Esto permite que el chip entre en un paquete de 40 pines, lo que parece una opción razonable para estar disponible, pero eso no excluye también tener una versión en un paquete más grande. Cuatro años antes, el Motorola 68000 estaba disponible por primera vez en un paquete DIP de 64 pines con direcciones separadas de 24 bits y buses de datos de 16 bits, por lo que la tecnología para hacer esto a un costo razonable había estado disponible durante mucho tiempo. Y desde entonces, por supuesto, se han vuelto comunes muchos otros empaques de alto número de pines, pero incluso ahora WDC no ofrece nada más grande que paquetes de 44 pines (PLCC y QFP).
Tampoco lo hace un paquete de 40 pines evitar tener un bus de datos externo completo de 16 bits, como lo hizo el Intel 8086, con su bus de datos externo de 16 bits multiplexado en el bus de direcciones externas de 20 bits. Esto ni siquiera significa que sea necesario fabricar versiones separadas de bus de datos de 8 y 16 bits: en 1990, Motorola reemplazó el MC68008 (un 68000 con un bus de datos externo de 8 bits) por el MC68HC001, que permitió la selección del bus de datos externo ancho en el reinicio.
Entonces, ¿por qué la falta, incluso hasta el día de hoy, de interfaces externas «completas de 16 bits», como las ofrecían otros proveedores de CPU de 16 bits? ¿Qué desventajas de las diversas formas de las interfaces externas completas de 16 bits me faltan?
¹Es decir, chips que puede comprar en el estante, a diferencia de los núcleos FPGA o ASIC que puede integre en cualquier paquete que desee.
Comentarios
- Vea también retrocomputing.stackexchange.com / questions / 6124 / … , que efectivamente hace la misma pregunta desde una perspectiva más general que específica del procesador
Respuesta
El 65816 tiene físicamente una ALU de 8 bits, aunque muchos de los registros internos ahora tienen 16 bits de ancho. Por lo tanto, se necesita un ciclo adicional para realizar cada operación de ALU en modo de 16 bits, y esto proporciona el tiempo necesario para obtener los datos adicionales a través del bus de datos (que sigue siendo muy simple de interconectar).
Hay no es parte del núcleo donde un bus de datos de 16 bits está disponible para ser expuesto, incluso en las versiones semi-personalizadas del núcleo 65816 que WDC todavía ofrece para desarrolladores de sistemas embebidos.
Por supuesto Ser posible diseñar un nuevo núcleo con una ALU más amplia y un bus de datos externo y, por lo tanto, con un mayor rendimiento en operaciones de 16 bits. Incluso sería posible introducir canalización y almacenamiento en caché para mejorar aún más el rendimiento. Pero el resultado solo sería compatible con 65816 ISA; no sería un 65816. También sería más grande, consumiría más energía, sería más caro (sobre todo debido al paquete más complejo requerido para exponer el bus más ancho) y mucho menos amigable para los aficionados.
Comentarios
- Según su hoja de datos ( datasheets.chipdb.org/Western%20Design/w65c816s .pdf ), el W65C816 tiene una ALU completa de 16 bits.
- @StarCat Punto interesante. Sin embargo, al observar los tiempos de instrucción, me pregunto por qué se molestarían: parece que de hecho podrían arreglárselas bien con una ALU de 8 bits. (Incluso instrucciones como
INX
siguen siendo dos ciclos). Quizás estén indicando que el programador ‘ tiene una visión de 16 bit ALU (es decir, hay instrucciones de adición de 16 bits, etc.), de forma similar a como un programador encuentra el Z80 ‘ s 4 -bit ALU indistinguible del 8085 ‘ s ALU de 8 bits? - El 65816 tiene un ALU de 16 bits. Esto es más visible cuando se comparan ramas, que funcionan igual tanto en modo nativo como en modo de emulación (desplazamiento de 8 bits), pero no tienen penalización por cruzar página en modo nativo, mientras que esto todavía ocurre en emulación (y en el 65C02). También es visible con todas las operaciones de página directas, manejando el cruce de páginas sin penalización.DP en el modo de emulación muestra además que aquí la ALU simplemente se ‘ se reduce ‘ a 8 bits, ya que DH no ‘ No es necesario establecerlo en cero, btu se ignora.
- @StarCat La cita completa es: » ALU de 16 bits completo, Acumulador, puntero de pila y registros de índice » – que pueden estar escritos de manera torpe, pero parecen implicar que solo los registros tienen 16 bits de ancho. Sin embargo, las características de rendimiento de una ALU de 16 bits no se observan fácilmente en esta CPU, porque la mayoría de los operandos (incluidas las direcciones de memoria) deben cargarse desde la memoria de 8 bits a la vez. Incluso si se usa el ancho completo de la ALU para los cálculos del modo de direccionamiento, observo que si el DPR no está alineado con la página, los accesos al modo directo tienen una penalización de 1 ciclo que es consistente con una ALU de 8 bits.
- @Raffzahn Con índices de 16 bits, se debe realizar una adición completa de 16 bits entre la dirección base y el desplazamiento del índice. Parece que esto no se puede iniciar hasta que la dirección base se haya cargado por completo, posiblemente debido a la escasez de registros internos. Que luego se necesitan dos ciclos para una adición de 16 + 16, pero solo un ciclo para una adición de 16 + 8, muestra que hay un sumador de 8 bits con propagación de acarreo de bytes superiores que se usa para este propósito.
Respuesta
El 65816 está diseñado como una ruta de actualización para los clientes 6502 existentes. Mantenerlo en 8 bits fue una decisión sensata desde el punto de vista del usuario, ya que ofrece
- Fácil actualización de los diseños existentes
- Totalmente compatible con el software existente
- Estándar El paquete de 40 pines necesita menos orificios pasantes y ofrece un manejo más económico
- Solo se necesita un pestillo para usar el rango de direcciones extendido
- Solo se necesitan componentes externos estándar de 8 bits
Especialmente los últimos son importantes para considerar los costos. Para la fabricación, cada agujero cuenta, ya que se reduce en el tiempo de perforación y, por tanto, en el coste. En 1983, los componentes de 16 bits (RAM / ROM) eran bastante raros y caros. Con un diseño de 8 bits, se definieron varios chips de ROM y RAM estándar (EP) según el tamaño necesario, mientras que un bus de datos de 16 bits siempre requiere al menos dos de cada uno. Después de todo, el diseño del estado anterior del prototipo no es sensible al costo. La serie 65xx siempre estuvo dirigida a aplicaciones integradas / de bajo costo. De hecho, su mercado objetivo era muy parecido a lo que Intel imaginó para el 8086 como una ruta de actualización para 8080 / 85 usuarios.
A diferencia de Intel, que diseñó una CPU de 16 bits y la hizo compatible con 8 bits (* 1), WDC se mantuvo en 8 bits, lo que tenía sentido para el diseño de la CPU ya que simplificaba el desarrollo debido
- La estructura interna básica se puede mantener desde 65C02
- No hay cambios en la generación básica de direcciones
- No es necesario agregar un protocolo de bus de 8/16 bits para acceder a los bytes en una palabra
- no es necesario administrar la cola de instrucciones
Siguiendo esa ruta, todo el proyecto se mantuvo lo suficientemente pequeño como para ser manejado por los recursos que una pequeña empresa como WDC podría proporcionar, sin poner su futuro en riesgo.
Además de ser relativamente fácil de crear, el bus de 16 bits no gana tanto como se puede suponer al principio. Después de todo, el rendimiento depende en gran medida del ancho de banda de la memoria, ¿no es así? El 8088 frente al 8086 es un gran punto de referencia aquí, ya que ambos usan exactamente el mismo EU (Unidad de ejecución; * 1) mientras que solo difieren en el ancho del bus, el BIU ( Bus Interface Unit) para acceder a la memoria. Si bien, en teoría, el 8086 debería ofrecer aproximadamente el doble de rendimiento debido a que se duplica el ancho de banda a la misma frecuencia de reloj, la ganancia de rendimiento en el mundo real es de aproximadamente un 30-40%. Esto es aún más notable que el BIU el diseño funciona bastante bien al utilizar el bus cerca del 100% (* 2)
Por lo tanto, si bien duplicar el ancho del bus siempre proporcionará menos del doble de velocidad, simplemente duplicar la frecuencia de reloj de un diseño lo hará Sin ninguna incertidumbre. Para 1983 Memory había llegado a un punto en el que un diseño de estilo 6500 de 4 MHz era fácil de lograr, cuadruplicando thruput sin ningún jitter.
En pocas palabras: permanecer en 8 bits ofrecía muchas ventajas en el diseño y para los usuarios, al tiempo que evitaba esfuerzos y costos innecesarios.
Por último, pero no menos importante, como efecto secundario, el 65802 podría crearse además, ofreciendo un reemplazo adicional para usar funciones de 16 bits en los diseños 65C02 existentes.
* 1 – En la mayoría de las partes, la UE puede verse como el núcleo de CPU «real» del 8086
* 2 – Gran parte de esto se debe al acceso de un solo byte, pero también por palabras de memoria no alineadas y destinos de salto, lo que ralentizará un bus de 16 bits a 8 bits. Y aunque el nuevo software podría tener esto en cuenta, el existente no lo hará. Un ejemplo del peor de los casos aquí puede ser Applesoft BASIC, donde casi todos punteros en la página cero como en direcciones impares. Para 8 bits a nadie le importa, con 16 bits es mortal.
Respuesta
La ventaja del bus de datos externos de 8 bits y la multiplexación de los 8 bits superiores del bus de direcciones en el El primer lanzamiento del 65816 parece claro. En realidad, había dos versiones del chip: el W65C816S como se describe en la pregunta y el W65C802. Según Wikipedia ,
[El] 65C802 … era idéntico por dentro a el 65C816. Ambos se produjeron en las mismas líneas de fabricación y divergieron solo durante las últimas etapas de metalización cuando el chip se estaba conectando a los pines externos. En el 65C802, esos pines tenían el mismo diseño que el 6502 original, lo que permitía usarlo como un reemplazo directo y al mismo tiempo permitir que se usara el procesamiento de 16 bits de la CPU. Sin embargo, como usaba el pinout original, solo tenía 16 pines de direccionamiento y, por lo tanto, solo podía acceder a 64 kB de memoria externa. Normalmente, cuando los fabricantes de hardware diseñan un proyecto desde cero, utilizan el 65C816 en lugar del 65C802, lo que provoca que este último se retire de la producción.
Pero esto no explica por qué todas las versiones del 65816 continuaron usando la interfaz externa de 8 bits incluso después de que se descontinuó el 65802.
Respuesta
Supongo que la respuesta es simple: hoy en día no hay necesidad de una versión de este tipo de 65C816. El Western Design Center (WDC), el fabricante de 65C816, se centra en las IP y las cosas de IoT. es una especie de nostalgia para ellos. La revisión de chips y paquetes no tiene un caso de negocio claro, en mi humilde opinión.
Otra pregunta es «¿por qué no había una versión de bus de datos de 16 bits en los años 80?» La explicación razonable es: Fue una secuencia de eventos externos. El mercado probablemente se movió más rápido de lo esperado por WDC. En la primera mitad de los 80, cuando se introdujo el 65C816, el bus de datos de 8 bits se instaló b eter a los sistemas ya diseñados para el chip 6502 y el mercado no demanda un bus de datos de 16 bits. Más tarde, cuando los periféricos de 16 bits estuvieron disponibles, el fabricante del 65C816 no ofreció la CPU de «próxima generación» a tiempo, por lo que los clientes más importantes, como Apple (// GS) o Nintendo (SNES), se trasladaron a lo mejor, más rápido, etc. .procesadores (Motorola, NEC MIPS, …) cuando diseñaron una nueva generación de su hardware. Este movimiento hizo obsoleto el «bus de datos de 16 bits 65C816» antes de su propia creación.
Comentarios
- Me parece que Apple nunca » pasó a procesadores mejores y más rápidos «; el IIgs fue el final de la línea para el Apple II y continuó usando el ‘ 816 hasta 1992. (Apple usó el 68000 en el Mac, pero esa decisión se tomó en a finales de 1980, mucho antes de que ‘ 816 comenzara el desarrollo). Y Nintendo no ‘ t comenzó el desarrollo de SNES hasta 1988 como mínimo, cinco años después del lanzamiento del ‘ 816.
- Es cierto que Mac vs. II son desarrollos diferentes. Además, a pesar del éxito de Apple IIgs, con solo 1,25 millones de unidades, Apple estaba lejos de ser su mayor cliente. Los números de SNES rondan los 50 M, sin contar los clones. Y hay muchas otras aplicaciones integradas en esa región. En general, las computadoras de escritorio han sido quizás el uso más visible de 6502 para nosotros, pero en total se encuentran entre los menos importantes. Incluso agregar todos los Commodore, Apple, BBC, etc., solo terminará usando menos del 1% de todos los núcleos 65xxx jamás construidos.
Respuesta
El W65C265S , un microcontrolador basado en 65816, tiene expuesto la totalidad del bus de direcciones 24b, con un bus de datos 8b separado.
Y, para ser claros, el «265S» no es «un 65816. Es muy, muy parecido. Pero a pesar de los periféricos incorporados y la lógica de decodificación, tiene algunos vectores de interrupción diferentes que podrían hacer que el «código 265S sea incompatible con una caja 65816». Para todos los propósitos prácticos, son idénticos desde el punto de vista del software, pero hay algunas diferencias menores.