La historia emocional de los procesadores para las primeras computadoras de los años 70 a principios de los 90

Me pasó a programar en ensambladores de diferentes procesadores. El último en la lista es Xilinx MicroBlaze. Decidí publicar algunas de mis observaciones sobre las características de estas piezas de hierro casi mágicas que, como la llave mágica de Pinocho, nos abrieron puertas en la tierra mágica de la realidad virtual y la creatividad masiva. Acerca de las características de los sistemas modernos x86, x86-64, ARM, ARM-64, etc. No escribiré, tal vez en otra ocasión: el tema es muy amplio y complejo. Por lo tanto, planeo terminar con Intel 80486 y Motorola 68040. También quería incluir el IBM / 370 con el que estaba tratando. Estos sistemas estaban bastante lejos de las masas de usuarios, pero al mismo tiempo tuvieron un gran impacto en la tecnología informática. Simplemente no tenían suficiente tiempo asignado sobre el tema, no usaban chips de procesador y, por alguna razón, ellos mismos parecían haber desaparecido por completo. Realmente espero que mis materiales atraigan la atención de los conocedores que pueden agregar algo en lo que no pensaron o no sabían.

Como material ilustrativo, adjunto mi pequeña piedra de Rosetta : programas para calcular el número π en diferentes procesadores y sistemas que utilizan un algoritmo de obturación, afirmando ser la más rápida de sus implementaciones.


Intel 8080 y 8085


El primer procesador real en un chip, fabricado en la primera mitad de 1974, todavía se está fabricando y está encontrando uso. Clonado muchas veces en todo el mundo, en la URSS tenía la designación KR580VM80A. Los procesadores Intel modernos para PC aún revelan fácilmente su afinidad por este producto de reliquia en cierto sentido. Yo mismo no escribí códigos para este procesador, pero estando familiarizado con la arquitectura de z80, me aventuraría a traer algunos de mis comentarios.

El sistema de instrucciones 8080, al igual que otros procesadores Intel para PC, difícilmente se puede llamar ideal, pero es universal, bastante flexible y tiene varias características muy atractivas. De sus competidores, Motorola 6800 y MOS Technology 6502, 8080 diferían favorablemente en una gran cantidad de registros, aunque algo torpes, proporcionando al usuario una batería A de 8 bits, un semi-acumulador de 16 bits y un registro de índice HL rápido a tiempo parcial, puntero de pila SP de 16 bits , así como dos registros más de 16 bits Sun y DE. Los registros BC, DE y HL podrían usarse como registros de 6 bytes. Además, el 8080 tenía soporte para un conjunto casi completo de indicadores de estado: carry, sign, zero e incluso parity and semi-transfer. Algunas de las instrucciones del conjunto de instrucciones 8080 han sido campeones de velocidad. Por ejemplo, el comando XCHG intercambia el contenido de los registros DE y HL de 16 bits en solo 4 ciclos de reloj: ¡fue excepcionalmente rápido! Varios otros equipos, aunque no establecieron récords tan vívidos, también estuvieron entre los mejores durante mucho tiempo:

  • XTHL - intercambiando el contenido del registro HL y los datos en la parte superior de la pila, 18 ciclos de reloj - parece ser mucho, incluso en un verdadero 8086 de 16 bits, tal comando toma 22 ciclos de reloj, y para un 6800 o 6502 es incluso difícil imaginar tal comando;
  • DAD: agregue al semi-acumulador HL el valor de otro registro de 16 bits (BC, DE o incluso SP), 10 ciclos de reloj. Esta es una adición real de 16 bits con la configuración de la bandera de acarreo. Si agrega HL consigo mismo, obtendrá un desplazamiento rápido a la izquierda de 16 bits o una multiplicación de 2 veces, una operación clave tanto para la multiplicación completa como para la división;
  • PUSH y POP: coloque en la pila y elimine de la pila el valor de 16 bits, respectivamente, del registro o en el registro. Realizado en 11 y 10 ciclos. Estas son las operaciones más rápidas de 8080 para trabajar con memoria y en su rendimiento hay un incremento o disminución automática de SP. PUSH puede usarse, por ejemplo, para llenar rápidamente una memoria con un patrón con valores de 3 registros (BC, DE, HL). No hay comandos para trabajar con cantidades de 8 bits con una pila;
  • LXI: carga de una constante de 16 bits en el registro (HL, DE, BC, SP) durante 10 ciclos de reloj;
  • RNZ, RZ, RNC, RC, RPO, RPE, RP, RM: los retornos condicionales de la subrutina permiten limpiar el código, eliminando la necesidad de escribir ramas condicionales adicionales. Estos equipos fueron abandonados en la arquitectura x86, es posible que en vano, el código con él resulte mejor.

Este procesador se usó en la primera computadora personal Altair 8800, que se hizo muy popular después de la publicación de la revista a principios de 1975. Por cierto, una publicación similar en la URSS solo ocurrió en 1980, y su correspondiente relevancia solo en 1986.


Primero casi pc

El Intel 8080 se convirtió en la base para el desarrollo del primer sistema operativo CP / M profesional en masa, que dominó las microcomputadoras para el trabajo profesional hasta mediados de los años ochenta.

Ahora sobre las deficiencias. 8080 requirió tres voltajes de alimentación -5, 5 y 12 voltios. Trabajar con interrupciones es incómodo y lento. Y en general, el 8080 no tiene prisa, si lo comparamos con los competidores que pronto aparecieron. 6502 podría ser hasta 3 veces más rápido cuando funciona a la misma frecuencia que 8080.

Pero en la arquitectura de 8080, resultó ser una visión correcta del futuro, es decir, ese hecho desconocido en los años 70 de que los procesadores serán más rápidos que la memoria. Los registros 8080 DE y BC son más como un prototipo de cachés modernos operados manualmente que los registros de uso general. El 8080 comenzó con una frecuencia de 2 MHz, y los competidores con solo 1, lo que suavizó la diferencia en el rendimiento.

Es difícil llamar al 8080 procesador de 8 bits al 100%. Por supuesto, tiene una ALU de 8 bits, pero hay muchas instrucciones de 16 bits que son más rápidas que usar solo análogos de 8 bits. Y para algunos equipos no hay análogos de 8 bits en absoluto. El equipo XCHG en esencia y tiempos es 100% de 16 bits. Hay registros reales de 16 bits. Por lo tanto, me atrevo a llamar al 8080 parcialmente de 16 bits. Sería interesante calcular el índice de capacidad del procesador a partir de la totalidad de los signos, pero hasta donde el autor sabe, nadie ha hecho ese trabajo todavía.

El autor no sabe la razón por la cual Intel rechazó el soporte directo para el desarrollo de PC de 8 bits con sus procesadores. Intel siempre se ha distinguido por la complejidad y la ambigüedad de la política. Su conexión con la política, en particular, se ilustra por el hecho de que durante mucho tiempo Intel operó fábricas en Israel y hasta finales de los 90 fue secreto. Intel prácticamente no intentó mejorar el 8080, la frecuencia del reloj solo se elevó a 3 con un pequeño MHz. De hecho, el mercado de 8 bits se transfirió a Zilog con un procesador 8080 z80 relacionado, que pudo enfrentar con bastante éxito al principal competidor, el "terminador" 6502.

En la URSS y Rusia, el clon doméstico 8080 se convirtió en la base de muchas computadoras masivas que siguieron siendo populares hasta principios de los 90. Esto, por supuesto, es Radio-86RK, Mikrosh, multicolor Orion-128, Vector y Corvette. Sin embargo, los clones baratos y mejorados basados ​​en zX Spectrum z80 derrotaron a las Guerras Clon.


Esta es una PC real.

A principios de 1976, Intel presentó el procesador 8085, compatible con el 8080, pero muy superior a su predecesor. Ya hacía innecesaria la fuente de alimentación de -5 y 12 voltios y se simplificó el diagrama de conexión, se mejoró el trabajo con interrupciones, se usó la frecuencia del reloj de 3 a 6 MHz muy sólidos, el sistema de comando se amplió con varias instrucciones útiles: sustracción de 16 bits, cambio de 16 bits a la derecha en solo 7 ciclos (esto es muy rápido), rotación de 16 bits a la izquierda a través del indicador de transferencia, carga de un registro de 16 bits con un desplazamiento de 8 bits (este comando también se puede usar con el puntero de pila SP), escriba el registro HL en la dirección en el registro DE similar a h HL fluye a través de DE. Todas las instrucciones anteriores, excepto el desplazamiento hacia la derecha, se realizan en 10 ciclos; esto a veces es significativamente más rápido que sus contrapartes o emulación en z80. Se agregaron algunas instrucciones más, e incluso dos nuevas banderas. Entre las nuevas banderas, vale la pena señalar la bandera de desbordamiento, aunque trabajar con ella prácticamente no era compatible. Además, muchas instrucciones para trabajar con datos de bytes se aceleraron al ritmo. Esto fue muy significativo, ya que en muchos sistemas con 8080 o z80, se introdujeron ticks de demora que, debido a la presencia de tics adicionales en el 8080, podrían alargar el tiempo de ejecución casi dos veces. Por ejemplo, en una computadora doméstica, las instrucciones de vector del tipo de registro-registro se ejecutaron durante 8 ciclos de reloj, y si hubiera 8085 o z80 allí, estas mismas instrucciones se ejecutarían en solo 4 ciclos de reloj. La instrucción XTHL es incluso dos pasos más rápida. ¡Con las nuevas instrucciones, puede escribir código para copiar el bloque de memoria, que es más rápido que los comandos LDI / LDD del procesador Z80! Sin embargo, algunas instrucciones, por ejemplo, incremento y disminución de 16 bits, PUSH y retornos condicionales se hicieron más lentos por reloj.

El 8085 tiene soporte incorporado para trabajar con interrupciones, lo que en muchos casos le permite prescindir de un controlador de interrupción separado en el sistema y un puerto de entrada / salida en serie. Como ya se señaló, en 8085 no agregaron soporte completo para la bandera de desbordamiento, por lo que la aritmética de los números con un signo permaneció algo incompleta.

Sin embargo, nuevamente puedo repetir la fórmula "por razones desconocidas para el autor" Intel se negó a promover 8085 como el procesador principal. Solo en los años 80 aparecieron varios sistemas bastante exitosos basados ​​en 8085. El primero en 1981 fue el predecesor y casi rival de la PC IBM: IBM System / 23 Datamaster. Luego, en 1982, se lanzó una computadora muy rápida con excelentes gráficos Zenith Z-100, en la que 8085 funcionaba a 5 MHz. En 1983, la compañía japonesa Kyotronic creó una rodillera KC-85 muy exitosa, cuyas variantes también fueron producidas por otras compañías: Tandy produjo el TRS-80 modelo 100, NEC - PC-8201a, Olivetti - M-10. ¡En total, se lanzaron más de 10 millones de copias de tales computadoras! En la URSS / RF a principios de los 90, basado en el clon doméstico IM1821VM85A, hubo intentos de mejorar algunos sistemas, por ejemplo, la computadora Vector. Sorprendentemente, el procesador principal del rover Sojourner, que llegó a la superficie de Marte en 1997, ¡era 8085 con una frecuencia de 2 MHz!

De hecho, Intel le dio al z80 un color verde. Unos años más tarde, en la batalla por el mercado de 16 bits, Intel se comportó de manera completamente diferente, iniciando una demanda para prohibir las ventas de procesadores v20 y v30 en los Estados Unidos. Curiosamente, los procesadores mencionados de la compañía japonesa NEC podrían cambiar al modo de compatibilidad binaria completa con el 8080, lo que los convirtió en los procesadores más rápidos de la arquitectura 8080.

Otro secreto de Intel es la negativa a publicar un sistema de comando extendido, que incluye soporte para nuevas banderas. Sin embargo, uno de los fabricantes oficiales de estos procesadores ha publicado todo el sistema de equipos. ¿Cuáles son las razones de un rechazo tan extraño? Uno solo puede adivinar. ¿Quizás Zilog jugó un papel similar al que una vez jugó AMD, y creó la apariencia de competencia, y 8085 podría derribar a Zilog? ¿Quizás el punto sea el deseo de mantener el sistema de comando más cerca del entonces diseñado 8086? Esto último parece dudoso. Intel 8086 fue lanzado más de 2 años después del lanzamiento de 8085 y es difícil de creer que en 1975 su sistema de comando ya era conocido. Y en cualquier caso, la compatibilidad con 8080 y 8085 a 8086 solo se puede lograr utilizando un procesador de macro, a veces reemplazando un comando 8080/8085 con varios propios. Además, las dos nuevas instrucciones publicadas 8085 en 8086 no son factibles en absoluto. Es especialmente difícil explicar por qué Intel no publicó información sobre nuevos equipos después del lanzamiento de 8086. Solo podemos suponer que probablemente fue una cuestión de marketing. Empeorando artificialmente las especificaciones de 8085, obtuvimos un 8086 más espectacular en este contexto.

Motorola 6800 y parientes cercanos


Los procesadores de Motorola siempre se han distinguido por la presencia de varios "aspectos destacados" muy atractivos, mientras que al mismo tiempo la presencia de algunas soluciones arquitectónicas que son absurdas en lo abstracto y en lo práctico. El principal "punto culminante" de todos los procesadores en cuestión es la segunda batería de registro llena y muy rápida.

El 6800 fue el primer procesador del mundo que solo necesitaba una fuente de alimentación (5 voltios): fue una innovación muy útil. Debido a la singularidad del registro de índice de 16 bits, que es engorroso para una arquitectura de 8 bits, el Ho 6800 resultó ser un inconveniente para la programación y el uso del producto. Fue lanzado en 1974, no mucho después de 8080, pero nunca se convirtió en la base de ningún sistema informático conocido. Curiosamente, los desarrolladores de 6502, Chuck Peddle y Bill Mensch, calificaron el 6800 como incorrecto, "demasiado grande". Sin embargo, él y sus variantes fueron ampliamente utilizados como microcontroladores. Quizás valga la pena señalar que Intel ha estado fabricando procesadores desde 1971, lo que colocó a Motorola en la posición de un lado atractivo, para lo cual el 6800 fue el primer procesador. Y si compara el 6800 no con el 8080, sino con su predecesor 8008, entonces el 6800 será mucho más preferible. Motorola casi alcanza a Intel con 68000/20/30/40. También puede notar que en los años 70, Motorola era una empresa mucho más grande que Intel.

También se produjeron numerosas variantes de 6800: 6801, 6802, 6803, 6805, ... La mayoría de ellas son microcontroladores con memoria incorporada y puertos de entrada / salida. 6803 es un 6801 simplificado y se usó muy tarde (1983) para su computadora de clase Tandy TRS-80 MC-10 y su clon francés Matra Alice, que eran comparables a Commodore VIC-20 (1980) o Sinclair ZX81 (1981). El sistema de instrucción 6801/6803 se ha mejorado significativamente, se han agregado instrucciones de 16 bits, multiplicación ... ¡Ha aparecido una instrucción de rama incondicional inusual (BRN - rama nunca), que nunca se ejecuta! Algunas instrucciones se han vuelto un poco más rápidas.

680x admite totalmente el trabajo con enteros con signo, z80 y 6502 lo soportan peor, mientras que 8080 y 8085 casi no tienen tal soporte. Sin embargo, en el software de 8 bits, rara vez se necesitaba dicho soporte.

6809 se lanzó en 1978, cuando la era de 16 bits ya había comenzado con 8086, y tiene un sistema de comando muy desarrollado, que incluye la multiplicación de baterías de dos bytes para obtener un resultado de 16 bits en 11 ciclos (en comparación, 8086 requiere 70 ciclos para una operación similar) . En varios casos, se pueden agrupar dos baterías en una de 16 bits, lo que proporciona instrucciones rápidas de 16 bits. 6809 tiene dos registros de índice y un número récord de métodos de direccionamiento entre procesadores de 8 bits - 12. Entre los métodos de direccionamiento hay exclusivos para chips de 8 bits, como el índice con incremento o decremento automático, en relación con el contador de instrucciones, índice con desplazamiento. El 6809 tiene una oportunidad interesante para usar dos tipos de interrupciones: puede usar interrupciones rápidas con el registro automático parcial guardado e interrupciones con el registro completo guardado - 6809 tiene tres entradas para señales de interrupción FIRQ (enmascaramiento rápido), IRQ (enmascarable), NMI (sin enmascaramiento). A veces también es conveniente usar instrucciones rápidas para leer y configurar todas las banderas a la vez.

Sin embargo, las operaciones de memoria requieren más de 6502 ciclos de reloj. Los registros de índice han permanecido torpes dinosaurios de 16 bits en un mundo de 8 bits, algunas operaciones son simplemente impactantes debido a su lentitud, por ejemplo, transferir una batería de byte a otra toma 6 ciclos, y el intercambio ¡su contenido es de 8 ciclos (en comparación con 8080, donde se realiza un intercambio de 16 bits en 4 ciclos)! Por alguna razón, se ofrecen dos punteros de pila de inmediato, tal vez fue la influencia de la arquitectura de interbloqueo VAX-11: en una arquitectura de 8 bits con 64 KB de memoria, parece muy incómodo. E incluso la presencia de una instrucción con el interesante nombre SEX no puede resolver todos los problemas de 6809. En general, 6809 sigue siendo algo más rápido que 6502 a la misma frecuencia, pero requiere la misma velocidad de memoria. Logré hacer la división para 6809 con un dividendo de 32 bits y un divisor de 16 bits (32/16 = 32.16) durante un poco más de 520 ciclos, para 6502 no pude lograr menos de 650 ciclos. La segunda batería es una gran ventaja, pero otras características de 6502, en particular, la transferencia invertida, reducen esta ventaja solo al 25% indicado. Pero la multiplicación por una constante de 16 bits resultó ser más lenta que la tabla uno para 6502 con una tabla de 768 bytes. 6809 le permite escribir códigos bastante compactos y rápidos utilizando el direccionamiento de la página instalada (página directa), pero este direccionamiento hace que los códigos sean bastante confusos. La esencia de este direccionamiento es establecer el byte alto de la dirección de datos en un registro especial y especificar solo el byte bajo de la dirección en los comandos. El mismo sistema con solo un valor de byte alto fijo se usa en 6502, donde se llama direccionamiento de página cero. El direccionamiento de la página instalada es un análogo directo del uso del registro de segmento DS en x86 no solo para segmentos de 64 KB, sino también para segmentos de solo 256 bytes. Otra arquitectura descabellada de 6800 es el uso del orden de bytes de mayor a menor (Big Endian), que ralentiza las operaciones de suma y resta de 16 bits. El 6809 no es totalmente compatible con los códigos de instrucciones 6800. 6809 fue el último procesador de 8 bits de Motorola; en desarrollos posteriores, se decidió usar 68008 en su lugar.

Se puede suponer que Motorola gastó mucho dinero para promover 6809. Esto sigue siendo cierto ante la mención de este procesador. Alrededor de 6809 hay muchas críticas favorables, que difieren en algunas nebulosas, generalizaciones y vaguedades. 6809 se posicionó como un superprocesador basado en microprocesador de 8 bits. Casi los sistemas operativos Unix, OS-9 y UniFlex incluso se hicieron para él.Aulló como el procesador principal de Apple Macintosh y, como se desprende de las películas sobre Steve Jobs, solo su intervención emocional determinó la transición al 68000 más prometedor. Por supuesto, 6809 es un buen procesador, pero en general es solo un poco mejor que sus competidores aparecieron mucho antes que 6502 (tres años antes) y z80 (dos). Uno solo puede adivinar lo que sucedería si Motorola gastara al menos la mitad del esfuerzo gastado en desarrollar y promover 6809 en desarrollar 6502.

6809 se utilizó en varios sistemas informáticos bastante conocidos. El más famoso de ellos es la computadora estadounidense Tandy Color o Tandy Coco, así como su clon británico o más bien galés Dragon-32/64. Los mercados informáticos de los años 80 se caracterizaron por una gran transparencia y Tandy Coco se distribuyó principalmente solo en los EE. UU., Y Dragons, además del Reino Unido, ganó cierta popularidad en España. En Francia, 6809, por alguna razón, se convirtió en la base de computadoras masivas de los años 80 de la serie Thomson, que seguían siendo casi desconocidas en cualquier otro lugar, excepto Francia. El 6809 también se usó como un segundo procesador en al menos dos sistemas: en la serie Commodore SuperPET 9000 y en el decodificador pequeño y ahora casi olvidado para la interfaz TUBE de las computadoras BBC Micro.Este procesador también se usó en otros sistemas menos conocidos por el autor, en particular, los japoneses. También ganó algo de distribución en el mundo de las consolas de juegos. Vale la pena mencionar una de estas consolas, Vectrex, que utiliza una tecnología única: una pantalla vectorial.


Color CoCo 3

680x tiene una interesante instrucción indocumentada con el interesante nombre "Halt and Catch Fire" (HCF), que se utiliza para realizar pruebas a nivel electrónico, por ejemplo, con un osciloscopio. Su uso hace que el procesador se congele, desde el cual solo es posible salir reiniciando (reinicio). Estos procesadores también tienen otras instrucciones no documentadas. En 6800 hay, por ejemplo, instrucciones simétricas a la carga directa de la constante de registro, es decir, instrucciones para descargar directamente el registro a la dirección siguiendo estas instrucciones!

Al igual que el 8080, 8085 o z80 6809, es muy difícil llamar a solo 8 bits. Y 6309 es incluso formalmente difícil de llamar de 8 bits, fue producido por la compañía japonesa Toshiba (no pude encontrar el año exacto de su producción, pero hay algunos datos que indican 1982) como un procesador que es totalmente compatible con 6809. Sin embargo, este procesador podría cambiarse en el nuevo modo, que, si bien mantuvo una compatibilidad casi total con 6809, proporcionó grandes oportunidades de casi un orden de magnitud. Estas características estaban ocultas en la documentación oficial, pero se publicaron en 1988 en la red Usenet. Se agregaron dos baterías más, pero las instrucciones con ellas son significativamente más lentas que con las dos primeras. El tiempo de ejecución para la mayoría de las instrucciones se ha reducido considerablemente. Se agregaron varios equipos,entre los cuales la división simbólica de un dividendo de 32 bits por un divisor de 16 bits (32/16 = 16.16) durante 34 ciclos es simplemente fantástica para los procesadores de esta clase, y el divisor se toma de la memoria. También hubo una multiplicación de 16 bits con un resultado de 32 bits para 28 ciclos de reloj. También se agregaron instrucciones muy útiles para copiar rápidamente bloques de memoria con un tiempo de ejecución de 6 + 3n, donde n es el número de bytes a copiar, puede copiar con direcciones decrecientes o decrecientes. Se pueden usar las mismas instrucciones para llenar rápidamente la memoria con un byte dado. Cuando se ejecuta, pueden ocurrir interrupciones. Todavía hay nuevas operaciones bit a bit, registro nulo, etc. Se agregaron interrupciones al ejecutar una instrucción desconocida y al dividir por 0. En cierto sentido,6309 es el pináculo de los avances tecnológicos entre los procesadores de 8 bits, o más bien los procesadores con un tamaño de memoria direccionable de 64 KB.

El 6309 es totalmente compatible con los terminales 6809, lo que lo convierte en una actualización popular para el color Tandy o Dragons. Hay versiones especiales del sistema operativo que utilizan las nuevas características de 6309.

Tecnología MOS 6502 y WDC 65816


Este es un procesador con un destino muy dramático. Ningún otro procesador puede compararse con él. Su aparición e implementación estuvo acompañada de eventos y consecuencias a gran escala. Voy a enumerar algunos de ellos:

  • el debilitamiento del gigante Motorola, cuyas capacidades durante algún tiempo excedieron las capacidades de Intel;
  • la destrucción de la tecnología MOS;
  • el cese del desarrollo de 6502 y su lanzamiento estancado con poca o ninguna modernización.

Todo comenzó con el hecho de que Motorola, por razones completamente desconocidas, se negó a apoyar la iniciativa de los jóvenes ingenieros que propusieron mejorar el procesador generalmente mediocre 6800. Tuvieron que abandonar la empresa y continuar su trabajo en la pequeña pero prometedora empresa MOS Technology, donde pronto prepararon dos procesadores. 6501 y 6502 hechos con tecnología NMOS. El primero era compatible con el 6800, pero por lo demás eran idénticos. El equipo 6501/6502 logró introducir con éxito una nueva tecnología de fabricación de chips, que redujo radicalmente el costo de los nuevos procesadores. En 1975, MOS Technology podría ofrecer $ 6502 por $ 25, mientras que el precio inicial para Intel 8080 y Motorola 6800 fue en 1974 $ 360. En 1975, Motorola e Intel redujeron los precios, pero aún estaban cerca de los $ 100. Los expertos en tecnología MOS afirmaron que su procesador es hasta 4 veces más rápido que el 6800. Esto me parece dudoso: el 6502 puede trabajar con la memoria mucho más rápido, pero la segunda batería del 6800 aceleró mucho muchos cálculos. Puedo estimar que 6502 fue en promedio más rápido que no más de 2 veces. Motorola inició una demanda contra sus antiguos empleados: supuestamente utilizaron muchos de los secretos tecnológicos de la compañía. Durante el proceso, fue posible establecer que uno de los ingenieros que dejó Motorola emitió algunos documentos confidenciales en el 6800, actuando en contra de la configuración de sus colegas. Aún se desconoce si fue por su propia acción o por algunas fuerzas guía detrás de él. Por esta y otras razones no del todo claras, Motorola obligó a MOS Technology, cuyas capacidades financieras eran muy pequeñas, a pagar una cantidad significativa de $ 200,000 y abandonar la producción de 6501. Intel en una situación similar con Zilog actuó de manera bastante diferente. Aunque debe admitirse que la tecnología MOS a veces era demasiado arriesgada cuando intentaba usar el gran dinero gastado por Motorola para promover el 6800 para sus propios fines.

Más adelante en la historia, aparece la legendaria compañía Commodore y su igualmente legendario fundador Jack Tramiel, a la sombra de la cual estaba la figura del jefe financiero de la compañía que determina su política: un hombre llamado Irving Gould. Jack recibió un préstamo de Irving y con este dinero, usando varios, para decirlo suavemente, tácticas sin escrúpulos, obligó a MOS Tecchnology a formar parte del comodoro. Después de lo cual, tal vez en contra de los deseos de Tramel, que tuvo que ceder ante Hood, el desarrollo de 6502 prácticamente se detuvo, aunque en 1976 fue posible producir prototipos 6502 con frecuencias operativas de hasta 10 MHz, aunque un mensaje sobre esto apareció solo después de muchos años de una persona llamado Bill Mensch (estaba en el equipo que dejó Motorola), quien repetidamente hizo declaraciones fuertes pero en gran parte vacías y jugó un papel bastante ambiguo en el destino de 6502. El desarrollador jefe 6502 Chuck Peddle fue eliminado para siempre del desarrollo de procesadores. 6502 continuó produciéndose no solo en Commodore, sino también en la compañía creada por Bill Mensch, Western Design Center (WDC). Es curioso que ninguno de los 6502 equipos anteriores trabajó con él en el futuro.

El drama alrededor de 6502 no terminó allí. En 1980, apareció un breve artículo anónimo en la revista interactiva AIM65 de Rockwell que decía que todos los 6502 tienen un error peligroso llamado JMP (xxFF). El tono del artículo sugiere algo completamente fuera de lo común. Posteriormente, esta actitud se trasladó a la posición de Apple sobre este tema y se convirtió en una especie de corriente principal. Aunque, estrictamente hablando, no hubo "error". Por supuesto, una de las características, bastante apropiada e incluso útil entre los microprocesadores, puede parecer un error molesto para un especialista que se acostumbró a los procesadores cómodos de sistemas grandes de esos años. Pero, de hecho, este comportamiento, que hirió los sentimientos de alguien, se describió en la documentación oficial de 1976 y en los libros de texto de programación que aparecieron antes de la aparición del artículo mencionado. El "error" fue eliminado por Bill Mensch, quien supuestamente fabricó 6502 (CMOS 6502) en 1983, es decir, después del lanzamiento de 65816. Mientras Intel, Motorola y otros fabricaron procesadores de 16 bits de nuevas generaciones, 6502 solo se mejoró microscópicamente y hecho artificialmente parcialmente incompatible con él mismo. Además de eliminar el "error", se realizaron una serie de cambios que, en particular, llevaron a un cambio durante la ejecución de varias instrucciones, que se hicieron más lentas por latido, pero al mismo tiempo en un sentido académico exagerado, se volvieron más correctos. Pero debo admitir que varias nuevas instrucciones se esperaban y eran útiles. Por otro lado, la gran mayoría de las nuevas instrucciones solo ocuparon el espacio de código, y no agregaron casi nada a las capacidades de 6502, lo que dejó menos códigos nuevos para posibles actualizaciones adicionales. El comodoro y el japonés Ricoh (fabricante de las consolas de juegos NES más populares) no aceptaron estos cambios. El autor de este material se encontró varias veces con el problema de este "error". Sin saber nada de él, escribió programas para el comodoro. Luego transfirió uno de ellos a sistemas donde se usaba un conjunto de comandos 6502. Surgió la incompatibilidad, tuve que cambiar los códigos, hacer una compilación condicional. El código para 6502 resultó ser más voluminoso y lento. Luego planteó este tema en el foro 6502.org, donde la mayoría de los participantes son del mundo Apple. Pregunté si alguien podría dar un ejemplo cuando el "error" indicado bloqueó el programa. Solo recibí comentarios emocionales y generales; no se propuso ningún ejemplo concreto.

Bug !!!

65C02 ha sido licenciado para muchas empresas, en particular NCR, GTE, Rockwell, Synertek y Sanyo. Usado en Apple II, comenzando con los modelos IIe, aunque muchos IIe usaron NMOS 6502. La variante 65C02 6512 también se usó en modelos posteriores de BBC Micro. Atari usó NMOS 6502. Además de CMOS 6502, Synertek y Rockwell también produjeron NMOS 6502. Por cierto, NMOS 6502 tiene su propio conjunto de instrucciones indocumentadas, cuya naturaleza es completamente diferente de los comandos "secretos" 8085. En 6502, estas instrucciones aparecieron como un efecto secundario de la tecnología utilizada, por lo tanto la mayoría de ellos son bastante inútiles, pero varios, por ejemplo, cargan o descargan dos registros con un comando a la vez y algunos otros pueden hacer que el código sea más rápido y compacto.

Hubo otros intentos de actualizar el 6502. En el mismo 1979, apareció un artículo en el que las computadoras Atari se estaban preparando para producir el procesador 6509 (que no debe confundirse con el procesador con el mismo nombre de la compañía Commodore que apareció más adelante), que se esperaba que acelere la ejecución de comandos en un 25% y muchos nuevos instrucciones Pero por razones desconocidas en precisión, la producción de este procesador no tuvo lugar. El comodoro solo realizó mejoras microscópicas. Allí, en particular, cambiaron a la tecnología HMOS y a la producción de núcleos estáticos, lo que permitió ralentizar los procesadores. Desde el punto de vista de la programación, lo más interesante es el procesador 6509, que, aunque de forma muy primitiva, con la ayuda de solo dos instrucciones especialmente asignadas para este propósito, permite direccionar hasta 1 MB de memoria. En los súper populares Commodore 64 y 128, había procesadores 6510/8510, y en las series 264 menos exitosas: 7501/8501. Estos procesadores tenían solo 6 y 7 puertos de bits de E / S incorporados, respectivamente, mientras que el 7501/8501 no admitía interrupciones desenmascaradas. Rockwell produjo la variante 65C02 con su conjunto de instrucciones de operaciones extendidas de 32 bits (similar a las instrucciones de z80 bits), sin embargo, que yo sepa, tales procesadores no se usaron en computadoras y estas instrucciones de bits en sí mismas tenían más probabilidades de usarse solo en sistemas integrados. Esta extensión, por cierto, fue producida por Bill Mensch.

La última escena del drama con la participación de 6502 se indicó en la prevención de computadoras basadas en 6502 con una frecuencia de 2 MHz para el mercado estadounidense en la primera mitad de los años 80. Esto afectó al inglés-extranjero BBC Micro, su productora Acorn fabricó una gran cantidad de computadoras para los Estados Unidos, pero resultó ser en vano. Algún tipo de cerradura funcionó y las computadoras tuvieron que rehacerse urgentemente a los estándares europeos. Las computadoras semi-americanas, pero formalmente canadienses Commodore CBM II (1982), a pesar de algunos problemas (en particular, de acuerdo con las normas para equipos eléctricos), todavía estaban permitidas. Tal vez debido al hecho de que no tenían modos gráficos e incluso texto en color, incluso el elegante diseño de Porsche no podía compensar esto. El último en la lista de perdedores fue el Apple III 100% estadounidense (1980): se sabe que Steve Jobs, como la administración de Apple en general, hizo mucho para evitar que esta computadora se produzca. Jobs exigía especificaciones y gestión claramente imposibles, plazos poco realistas. ¿Alguna vez descubriremos sus motivos? El Apple III Plus, lanzado en 1983, logró eliminar los defectos del Apple III, pero la administración de Apple cerró el proyecto en silencio en 1984 debido a la falta de voluntad para competir con la computadora Macintosh. Solo en 1985, cuando comenzó la era de la tecnología de 8 bits, apareció el Commodore 128, que podía usar 6502 en uno de sus modos con una velocidad de reloj de 2 MHz. Pero aquí, también, resultó más como una broma, ya que este modo prácticamente no era compatible y prácticamente no había programas para ello. Solo en la segunda mitad de los años 80 en los Estados Unidos comenzó a producir consolas-aceleradores para Apple II, y desde 1988 el modelo Apple IIc + con un procesador de 4 MHz. ¿Por qué sucedió esto? Quizás porque 6502 a 2 o 3 MHz (y ya se produjeron a principios de los años 80) en una serie de tareas y, en particular, con juegos, podría competir con éxito con sistemas basados ​​en Intel 8088 o Motorola 68000. En 1991, Commodore Corporation cerró Un proyecto C65 interesante, aunque tardío, basado en un procesador 4510 con una frecuencia de 3.54 MHz. 4510: este es el 6502 más rápido, fabricado solo en 1988, se llevó a cabo finalmente en la optimización de ciclos mencionada anteriormente, lo que dio un aumento del 25% en la velocidad. Por lo tanto, el procesador en C65 tiene una velocidad cercana a los sistemas con 6502 a 4.5 MHz. Sorprendentemente, este 6502 más rápido con un conjunto ampliado de instrucciones (en algunos detalles esta extensión resultó ser más exitosa que en 65816) nunca se ha utilizado en ningún lugar desde entonces.

C128 y Apple III Plus tenían una unidad de administración de memoria (MMU), que permitía usar varias pilas y cero páginas, dirigiéndose a más de 64 KB de memoria, etc. En C128, la MMU se recortó artificialmente para funcionar con solo 128 KB de memoria. Para BBC Micro, se produjeron consolas con 6502 a 3 MHz (1984) y 4 MHz (1986).


Anti-publicidad - múltiples PET Porsche en el apartamento del villano de la Perla del Nilo (1985) - la era de Apple en Hollywood aún no ha llegado

Ahora unas pocas palabras sobre el sistema de instrucción 6502. La característica principal de este procesador es que se fabricó casi lo más rápido posible, prácticamente sin ciclos de reloj adicionales, que son especialmente numerosos en los procesadores 8080/8085 / z80 / 8088/68000. De hecho, fue la ideología de los procesadores de arquitectura 6502 RISC lo que apareció más tarde y bajo la influencia directa. La misma ideología domina, comenzando con 80486, y entre los procesadores Intel. Además, 6502 reaccionó lo más rápido posible a las interrupciones, lo que lo hizo muy útil en algunos sistemas integrados. El 6502 tiene una batería y dos registros de índice, además, los primeros 256 bytes de memoria se pueden usar en comandos especiales, ya sea como memoria más rápida o como un conjunto de registros de 16 bits (que son casi idénticos en su funcionalidad a los registros BC y DE en 8080 / z80) para métodos de direccionamiento bastante potentes. Algunas instrucciones aritméticas (turnos, rotación, incremento y decremento) se pueden usar con la memoria directamente, sin usar registros. No hay instrucciones de 16 bits: es un procesador 100% de 8 bits. Todas las banderas principales son compatibles, excepto la arquitectura característica de la bandera de paridad Intel. Hay algunas banderas más inusuales del décimo modo inútil. Los procesadores Intel y Motorola utilizan instrucciones correctivas especiales para trabajar con números decimales, y 6502 puede cambiar al modo 10, lo que hace que su ventaja de velocidad con 10 números sea aún más significativa que con los binarios. Es impresionante que para la tabla 6502 se multipliquen los operandos de 8 bits con la obtención de un resultado de 16 bits en menos de 30 ciclos de reloj, con el tamaño de la tabla auxiliar en 2048 bytes. Lentamente, 6502 produce operaciones de copia masiva de memoria, desde 14 ciclos de reloj por byte.

6502 puede funcionar en paralelo con otro dispositivo, por ejemplo, otro 6502. Hasta donde yo sé, tales sistemas de doble procesador nunca se han producido. En lugar del segundo procesador, generalmente se usaba un controlador de video, que compartía memoria con 6502.

65816 fue lanzado por WDC en 1983. Curiosamente, Bill Mensch recibió las especificaciones para el nuevo procesador de Apple. Por supuesto, este fue un gran paso adelante, pero obviamente tardío y con grandes defectos arquitectónicos. 65816 no fue considerado por nadie como un competidor para los principales procesadores Intel o Motorola; ya era un extraño secundario, que ya había sido programado para establecer una nueva pérdida de posición. El 65816 tenía dos ventajas importantes: era relativamente barato y casi compatible con el todavía muy popular 6502. En los años siguientes, Bill Mensch ni siquiera intentó mejorar de alguna manera su creación, hacer la optimización del bucle, reemplazar la dirección de la página cero con la extendida usando el registro Z ( esto se hizo en 4510), para agregar al menos multiplicación ... WDC solo aumentó las frecuencias máximas de reloj, llegando a mediados de los 90 a 14 MHz (este procesador se usó en el popular acelerador para C64 SuperCPU a una frecuencia de 20 MHz). Sin embargo, incluso ahora (¡2019!) WDC ofrece 65816 por alguna razón solo en los mismos 14 MHz. 65816 puede usar hasta 16 MB de memoria, pero los métodos de direccionamiento utilizados para esto parecen lejos de ser óptimos. Por ejemplo, los registros de índice solo pueden ser de 8 o 16 bits, la pila solo se puede colocar en los primeros 64 KB de memoria, solo allí puede usar el conveniente direccionamiento corto de la página instalada (página directa - generalización de página cero), trabajar con memoria por encima de 64 KB comparativamente torpe, ... 65816 tiene una ALU de 16 bits, pero un bus de datos de 8 bits, por lo que en operaciones aritméticas es solo un 50% más rápido que 6502. Sin embargo, 65816 se lanzó en una cantidad de más de mil millones. Por supuesto, una serie de instrucciones 65816 complementan claramente las brechas en la arquitectura 6502, por ejemplo, instrucciones para la copia masiva de memoria para 7 ciclos de reloj por byte. También puede agregar que 65816 usa casi todos los códigos de instrucciones (255 de 256). El último código no utilizado es para instrucciones futuras que nunca aparecieron.

Se suponía que Apple IIx, en cuyo desarrollo Steve Wozniak tomó parte activa, debía usar 65816, pero fue posible establecer la producción de este procesador solo en 1984 y los primeros lotes de 65816 fueron defectuosos, lo que causó retrasos excesivos y como resultado cerró todo el proyecto.

También hay una opción 65816 65802, que utiliza un bus de direcciones de 16 bits y es compatible con los conectores 6502. Hubo actualizaciones para Apple II basadas en este procesador, pero puede obtener un poco de aceleración con dicha actualización solo en programas especialmente escritos para él.

6502 se utilizó en una gran cantidad de sistemas informáticos, los más populares son Commodore, Atari, Apple, NES de 8 bits. Curiosamente, el 6502 se usó como controlador de teclado en la computadora Commodore Amiga, y dos 6502 a 10 MHz se usaron en el Apple Macintosh IIfx de alto rendimiento. Aquí no podemos dejar de mencionar las consolas de juegos Atari, fabricadas entre 1977 y 1996, ¡se vendieron aproximadamente 35 millones! 65816 se usó en la computadora Apple IIgs bastante popular, en la consola de juegos Super NES y también en la rara computadora inglesa Acorn Communicator.

En 1984, apareció en la revista Byte un artículo sobre una copia incorrecta de la computadora Apple [hecha en la URSS] con el fondo de imágenes con pancartas rojas, Lenin y soldados marchando. Este artículo citó un precio curioso para esta computadora: $ 17,000 (este es un número absurdo, el precio real era de aproximadamente 4,000 rublos) e irónicamente señaló que los fabricantes soviéticos tendrían que reducir drásticamente el precio si querían vender su producto en Occidente. Ágata se utilizó principalmente en la educación escolar. Los modelos más antiguos de Agate eran casi 100% compatibles con Apple] [y tenían algunas extensiones bastante útiles.

Solo puede intentar fantasear sobre lo que sucedería si 6502 pudiera desarrollarse al mismo ritmo que sus competidores. Me parece que la transferencia gradual de la memoria de página cero a los registros y la expansión gradual del sistema de instrucción con la optimización simultánea de ciclos permitiría que el "terminador" 6502 permanezca a la cabeza en términos de velocidad hasta principios de los 90. La introducción del modo 16 y luego de 32 bits permitiría el uso de grandes cantidades de memoria y comandos más rápidos. ¿Podrían sus competidores tener algo a lo que oponerse?

Me gustaría terminar con algunas consideraciones filosóficas generales. ¿Por qué el 6502 frenó y careció de un futuro mucho más brillante? Quizás debido al hecho de que realmente podría exprimir a las grandes empresas y crear una realidad completamente nueva. ¿Pero fue el equipo 6502 preparado para eso? Más bien, solo querían hacer un mejor procesador.

Ya mucho más tarde, a principios del siglo XXI, con la ayuda de demandas impuestas por razones exageradas, la compañía Lexra, que produjo varios procesadores innovadores durante 5 años, fue derrotada. Esta triste historia recuerda algo de lo que sucedió con la tecnología MOS.

Zilog z80


Este procesador, junto con 6502, se convirtió en el procesador principal de las primeras computadoras personales. No hay eventos dramáticos en la historia de su aparición y uso. Solo hay algo de intriga en el fracaso de Zilog para hacer la próxima generación de procesadores. Z80 comenzó a producir en 1976 y sus variantes todavía se están produciendo.Una vez, incluso el propio Bill Gates anunció soporte para sistemas basados ​​en z80.

Una serie de coincidencias son interesantes. Como en el caso de 6502, el desarrollador principal de Z80, Federico Faggin (Federico Faggin), dejó la gran empresa, de Intel. Después de trabajar en el z80, Federico casi no trabajó con el procesador Z8000 de próxima generación y a principios de los años 80 dejó su compañía, por lo que nunca trataría con procesadores en el futuro. Luego creó varias startups relativamente exitosas, creando sistemas de comunicaciones, paneles táctiles y cámaras digitales. Puede mencionar que, además del z80, en Zilog también desarrolló el exitoso y aún producido microcontrolador Z8.

El Z80 es un procesador que es más conveniente para su incorporación a los sistemas informáticos que el 8080. Requiere solo un voltaje de alimentación y tiene soporte incorporado para la regeneración de memoria dinámica. Además, con total compatibilidad con el 8080, tiene bastantes comandos nuevos, un segundo conjunto de registros principales y varios registros completamente nuevos. Es curioso que Zilog se haya negado a usar la mnemotecnia de ensamblador 8080 y comenzó a usar sus propias mnemotecnias, que son más adecuadas para el sistema de comando extendido z80. Una historia similar sucedió con el ensamblador Intel x86 en el mundo del software GNU, por alguna razón también usan sus propias convenciones para escribir programas en ensamblador por defecto. El Z80 agregó soporte para el indicador de desbordamiento, Intel agregó soporte para dicho indicador solo en 8086. Sin embargo,Esta bandera en z80 se combinó con la bandera de paridad, por lo que al mismo tiempo, como en 8086, no se pueden usar ambas banderas. En z80, como en 6502, solo hay una comprobación básica del valor de un indicador, es decir no hay controles de dos o tres indicadores a la vez, lo cual es necesario para las comparaciones de "estrictamente mayor", "menor o igual que", así como todos los significativos; en tales casos, debe hacer varios controles; en 8086, 6800 o PDP-11, uno es suficiente.

Entre las nuevas instrucciones z80, las instrucciones para la copia masiva de memoria para 21 ciclos por byte, así como el interesante comando de búsqueda de bytes en memoria, son especialmente impresionantes. Sin embargo, lo más interesante es el comando EXX, que intercambia el contenido de 48 bytes de memoria de registro, los registros BC, DE, HL con sus dobles, que se ejecuta en solo 4 ciclos. Incluso un ARM de 32 bits necesitará al menos 6 ciclos de reloj para la misma operación. El resto de las instrucciones adicionales no son tan impresionantes, aunque a veces pueden ser útiles. Se agregó más:

  • Resta de 16 bits con un préstamo y adición de 16 bits con transferencia por 15 ciclos;
  • unario menos para la batería por 8 ticks;
  • la capacidad de leer de la memoria y escribir en ella utilizando los registros BC, DE, SP, IX, IY y no solo HL;
  • cambios, rotaciones y entrada-salida para todos los registros de 8 bits;
  • operaciones de verificación, configuración y restablecimiento de un bit por su número;
  • (JR);
  • .


La mayoría de los nuevos comandos son bastante lentos, pero usarlos correctamente puede hacer que el código sea un poco más rápido y significativamente más compacto. Esto es especialmente cierto para el uso de los nuevos registros de 16 bits IX e IY, que pueden usarse para nuevos métodos de direccionamiento. ¡Curiosamente, los registros de índice IX e IY aparecieron en el Z80 para atraer a 6800 usuarios a la transición al Z80! Pero me atrevo a expresar mi opinión, las operaciones con los registros del índice Z80 se realizaron sin éxito debido a la presencia de un desplazamiento de bytes casi inútil en los comandos que utilizan estos registros.

Muchos equipos 8080 en el z80 obtuvieron un ritmo más rápido y esta es una aceleración muy notable. Pero el comando ADD, básico para la aritmética de 16 bits, se hizo más lento por ciclo, lo que hace que la aritmética en general, si es más rápida, solo sea un poco.

El sistema para trabajar con interrupciones se ha vuelto mucho más interesante que el del 8080. Con el z80, puede usar interrupciones no enmascarables y tres métodos (uno de ellos es compatible con el 8080) para trabajar con los enmascarados. El modo más interesante de interrupción enmascarada 2, que le permite cambiar de manera flexible la dirección del código para manejar la interrupción.

Z80 tiene muchas instrucciones indocumentadas, muchas de estas instrucciones desaparecieron al cambiar a la tecnología CMOS, pero las que sobrevivieron se volvieron prácticamente estándar y fueron documentadas por algunas compañías. Las instrucciones particularmente útiles le permiten trabajar con bytes individuales de torpes registros de 16 bits IX e IY. Además de las instrucciones no documentadas, el Z80 tiene otras propiedades no documentadas, por ejemplo, dos indicadores especiales en el registro de estado.

Por supuesto, el z80 es incluso más que el 8080 tiene derecho a ser llamado ligeramente de 16 bits. El índice de dígitos hipotéticos para z80 es claramente un poco más alto, ¡pero es paradójico que la ALU de z80 sea en realidad de 4 bits! A nivel electrónico, los z80 y 8080 son chips completamente diferentes.

Mucho se ha escrito sobre la comparación del rendimiento del z80 y el 6502, ya que estos procesadores se usaron ampliamente en las primeras computadoras en masa. Hay varios momentos difíciles en este tema, sin los cuales es muy difícil mantener la objetividad. Debido a la presencia de un número bastante grande de registros, es natural usar z80 a una frecuencia más alta que la memoria. Por lo tanto, el z80 a 4 MHz puede usar la misma memoria que el 6502 o 6809 a 1.3 MHz. Según muchos programadores experimentados que escribieron códigos para ambos procesadores, a la misma frecuencia 6502, en promedio, de 2.4 a 2.6 veces más rápido que z80. El autor de este material está de acuerdo con esto. Solo necesita agregar que escribir códigos buenos y rápidos para el z80 es muy difícil, necesita optimizar constantemente el uso de registros y usar la pila para trabajar con la memoria tanto como sea posible.Si te esfuerzas, en mi opinión puedes reducir la diferencia entre z80 y 6502 a aproximadamente 2,2 veces. Y si no trata de ignorar los tiempos, puede obtener fácilmente la diferencia hasta 4 veces. En algunos casos individuales, el z80 puede mostrar un rendimiento muy rápido. En la tarea de llenar la memoria, el z80, usando el comando PUSH, puede incluso ser un poco más rápido que 6502, pero esto tiene el costo de prohibir las interrupciones. Al copiar bloques de memoria, el z80 es solo 1.5 veces más lento. Es particularmente impresionante que al dividir un divisible de 32 bits por un divisor de 16, el z80 es solo 1.7 veces más lento. Por cierto, tal super-intercambio fue implementado por un programador ruso. Por lo tanto, obtenemos que el ZX Spectrum con z80 a 3.5 MHz es aproximadamente una vez y media más rápido que C64 desde 6502 a 1 MHz. Vale la pena señalaresa parte de los ciclos de reloj en la mayoría de los sistemas con z80 o 6502 se elimina del procesador mediante esquemas de soporte de señal de video, por ejemplo, debido a esto, para las computadoras populares Amstrad CPC / PCW, la frecuencia real del procesador es de 3.2 MHz, y no el total 4. En los sistemas 6502, generalmente puede apagar la pantalla para el máximo rendimiento del procesador. Si tomamos como base la frecuencia de la memoria, en lugar del procesador, resulta que el z80 es un 25-40% más rápido que 6502. El último resultado puede ilustrarse por el hecho de que con una memoria con una frecuencia de 2 MHz, el z80 puede operar a una frecuencia de hasta 6 MHz, y 6502 solo hasta 2 MHz.Si tomamos como base la frecuencia de la memoria, en lugar del procesador, resulta que el z80 es un 25-40% más rápido que 6502. El último resultado puede ilustrarse por el hecho de que con una memoria con una frecuencia de 2 MHz, el z80 puede operar a una frecuencia de hasta 6 MHz, y 6502 solo hasta 2 MHz.Si tomamos como base la frecuencia de la memoria, en lugar del procesador, resulta que el z80 es un 25-40% más rápido que 6502. El último resultado puede ilustrarse por el hecho de que con una memoria con una frecuencia de 2 MHz, el z80 puede operar a una frecuencia de hasta 6 MHz, y 6502 solo hasta 2 MHz.

Z80 se utilizó en una gran cantidad de sistemas informáticos. Los TRS-80 de Tandy fueron muy populares en EE. UU., ZX Spectrum en Europa y más tarde Amstrad CPC y PCW. Es curioso que las computadoras Amstrad PCW siguieron siendo relevantes hasta mediados de los 90 y se utilizaron de manera masiva y activa para su propósito previsto hasta finales de los 90. En Japón y otros países, produjeron computadoras MSX bastante exitosas en todo el mundo. El C128 bastante popular también podría usar el z80, pero aquí era más probable que los usuarios se avergonzaran: esta última versión de 1985, una computadora z80 de 8 bits, con reloj oficial a 2 MHz, realmente funciona solo a 1.6 MHz. Esto es incluso más lento que los primeros sistemas en los años 8080 de mediados de los 70. La gama de computadoras para usar el sistema operativo CP / M incluye al menos tres docenas de sistemas bastante conocidos.


Tal PC parecía decente incluso a mediados de los 90, pero su z80 es más lento que el ZX Spectrum.

El sistema informático basado en z80 más rápido conocido por el autor es el BBC Micro con un decodificador TUBE con z80B a 6 MHz, fabricado desde 1984. El procesador en Este sistema funciona a toda velocidad, como dicen, "sin frenos". Se fabricaron consolas similares para Apple] [desde 1979. Más tarde, algunas de estas consolas utilizaron el Z80H a 8 MHz e incluso más. Curiosamente, en 1980, Microsoft recibió el mayor beneficio de la venta de tales consolas. También puede mencionar el Amstrad PCW16, fabricado desde 1994, que utilizaba el CMOS Z80 a una frecuencia de 16 MHz.

En Japón, el R800 compatible con el z80 fue fabricado para los sistemas MSX TurboR (1990). Se ha agregado una multiplicación de hardware de 16 bits con un resultado de 32 bits al R800. Aunque cuando se multiplica por una constante de 16 bits, la multiplicación de la tabla con una tabla de 768 bytes se obtiene por un reloj más rápido. Existe la opinión de que el R800 es un Z800 muy simplificado que funciona a una frecuencia cuatro veces mayor que la frecuencia del bus, que es aproximadamente 7.16 MHz. Por lo tanto, la frecuencia interna del R800 es de aproximadamente 28,64 MHz.

El propio Zilog ha trabajado para mejorar el Z80 de manera muy inconsistente y extremadamente lenta. Los primeros Z80 funcionaron a frecuencias de hasta 2.5 MHz, y el Z80A, que apareció poco después, aumentó la frecuencia máxima a 4 MHz: estos procesadores se convirtieron en la base de las computadoras más populares que usan Z80. Z80B apareció en 1980, pero se usó relativamente raramente, por ejemplo, en la mencionada consola BBC Micro o en la computadora Sam Coupé (1989). El Z80H apareció a mediados de los años 80 y podía funcionar a frecuencias de hasta 8 MHz, no se usaba en computadoras conocidas. Es interesante que los productos Zilog tenían trampas especiales en el chip para aquellos que intentaron hacer copias de ellos, por ejemplo, la base Z80 tenía 9 trampas y, según las revisiones de quienes hicieron esto, ralentizaron el proceso de copia durante casi un año.

La actualización más profunda del z80 se vio obstaculizada por el deseo de Zilog de crear procesadores que compitan con los procesadores de 16 bits de Intel. En 1978, un poco más tarde, 8086 lanzó Z8000, no compatible con z80. Este procesador no pudo resistir a los competidores de Intel, y especialmente de Motorola: el 68000 superó al Z8000 en casi todos los aspectos, aunque el Z8000 se usó en aproximadamente una docena de sistemas económicos diferentes, generalmente para trabajar con variantes de Unix. Curiosamente, IBM ni siquiera consideró al Z8000 como un posible procesador para la PC de IBM, porque Zilog fue financiado por Exxon, que iba a competir con IBM. Quizás debido al fracaso del Z8000, Zilog se convirtió en una división de Exxon en 1980. También hubo un intento de crear un procesador competitivo de 32 bits. En 1986, apareció el Z80000, compatible con el Z8000, que no está en ningún otro lado.y no encontré aplicación. Algunas circunstancias, en particular, las quejas muy extrañas del equipo de Zilog sobre el financiamiento excesivo, sugieren que quizás Zilog, por alguna razón poco clara, haya saboteado su trabajo como parte de Exxon.

Uno solo puede preguntarse por qué Zilog abandonó su enfoque, que mostró resultados súper exitosos con el Z80, es decir, hacer que los procesadores sean programáticamente compatibles con los procesadores Intel, pero sus mejores y al mismo tiempo son completamente diferentes a nivel de hardware. Posteriormente, este enfoque fue utilizado con éxito por muchas empresas, en particular, AMD, Cyrix, VIA.

La creación de un nuevo procesador basado en el Z80 se retrasó hasta 1985, cuando se fabricó el Z800. Sin embargo, los principales esfuerzos de Zilog se dirigieron al Z80000 y muy pocos se lanzaron Z800. En 1986, después de la falla del z80000, se lanzó el Z280, una versión ligeramente mejorada del Z800, que, en particular, podía funcionar a una frecuencia interna varias veces mayor que la frecuencia del bus, tal novedad trajo un gran éxito a los procesadores Intel 486DX2 y 486DX4. El Z280 también tenía otras características prometedoras que luego fueron aplicadas con éxito por otras compañías. Pero, tal vez debido al bajo rendimiento: el Z280, a pesar de muchas innovaciones tecnológicas, podría usar solo velocidades de reloj relativamente bajas, este procesador tampoco está en ninguna parteAplicación no encontrada. Se cree que el Z280 correspondió aproximadamente a las capacidades del Intel 80286, pero fue significativamente, al menos un 50% más lento cuando se usa la misma frecuencia de reloj con 80286. Quizás si el Z280 hubiera aparecido 5 años antes, entonces podría haber tenido mucho éxito.

El mayor éxito se logró gracias a la cooperación con la compañía japonesa Hitachi, que en 1985 lanzó su super-Z80, HD64180, que es similar en capacidades al Intel 80186, que permitió el uso de 512 KB de memoria, agregó una docena de nuevas instrucciones, pero algunas instrucciones casi indocumentadas Z80 No es compatible. HD64180 se ha utilizado en algunos sistemas informáticos. Zilog obtuvo una licencia para el HD64180 y comenzó a fabricarlos con la marca Z64180. Zilog logró mejorar ligeramente este procesador, en particular, agregó soporte para trabajar con 1 MB de memoria y lo lanzó a fines de 1986. Este nuevo procesador se llamó Z180 y se convirtió en la base de una familia de procesadores y controladores, con frecuencias de reloj de hasta 33 MHz. Fue utilizado en algunas computadoras MSX2 raras, pero más como un controlador. Curiosoque Z280 y Z180 aparecieron en un año, así como sus homólogos aproximados 80286 y 80166 cuatro años antes. En 1994, se fabricó un Z380 de 32 bits sobre la base del Z180, que seguía siendo compatible con el z80 y aproximadamente equivalente en sus capacidades al Intel 80386 o Motorola 68020: Zilog mostró una brecha de casi 10 años con respecto a sus competidores. Ya en el siglo XXI, los controladores de procesador eZ80 muy exitosos con tiempos casi como los de 6502 se están haciendo nuevamente sobre la base de Z180. Se utilizan en diversos equipos, en particular en tarjetas de red, unidades de DVD, calculadoras, ...Ya en el siglo XXI, los controladores de procesador eZ80 muy exitosos con tiempos casi como los de 6502 se están haciendo nuevamente sobre la base de Z180. Se utilizan en diversos equipos, en particular en tarjetas de red, unidades de DVD, calculadoras, ...Ya en el siglo XXI, los controladores de procesador eZ80 muy exitosos con tiempos casi como los de 6502 se están haciendo nuevamente sobre la base de Z180. Se utilizan en diversos equipos, en particular en tarjetas de red, unidades de DVD, calculadoras, ...

Texas Instruments TMS9900


Para este procesador de código muy especial, nunca he podido escribir. Y este es el primer procesador de 16 bits disponible para su uso en computadoras personales. Se produce desde 1976. Utiliza un orden de bytes mucho menos común de mayor a menor (Big Endian). Este pedido todavía se usa solo en los procesadores de las series Motorola 6800 y 68000 y en la arquitectura del gigante IBM / 370. Todos los demás procesadores en esta revisión usan el orden de bytes inverso (Little Endian).

El TMS9900 tiene solo tres registros de 16 bits: un contador de comandos, un registro de estado y un registro base de pseudo-registro. Este procesador utiliza una memoria asignada de 32 bytes como 16 registros de doble byte. Este uso de la memoria recuerda de alguna manera a la página cero de memoria en la arquitectura 6502. Usando el registro base, el TMS9900 puede cambiar rápidamente el contexto. Esto se parece al Z80, que tiene dos contextos de registro. El sistema de banderas se distingue por su originalidad, junto con las banderas típicas de acarreo, cero (igualdad), desbordamiento, paridad, hay dos banderas más únicas de signos de lógica y aritmética menos. Trabajar con la pila y las rutinas se parece a los procesadores RISC del futuro. Simplemente no hay una pila terminada; se puede hacer usando uno de los pseudo-registros.Cuando se llama a la subrutina, se selecciona un nuevo valor para el contador y la base, y los tres registros se almacenan en los pseudoregistros del nuevo contexto. Por lo tanto, una llamada de subrutina es más como una llamada de interrupción de programa. TMS9900 tiene un controlador de interrupción incorporado, diseñado para trabajar con interrupciones de hardware de hasta 16.


La primera computadora doméstica de 16 bits, incluso tiene sprites de color.

El sistema de comando se ve muy impresionante. Incluso hay multiplicación y división. La instrucción única X le permite ejecutar una instrucción en cualquier dirección en la memoria y pasar a la siguiente. La ejecución del comando es bastante lenta, las instrucciones más rápidas se ejecutan en solo 8 ciclos de reloj, los comandos aritméticos en 14, pero la multiplicación (16 * 16 = 32) en 52 ciclos de reloj y especialmente la división (32/16 = 16,16) en 124 períodos de reloj probablemente fue un registro más rápido entre los procesadores de los 70.

El TMS9900 requiere tres voltajes de suministro de 5, 5 y 12 voltios y cuatro fases de la señal de reloj; estos son antirregistros entre los procesadores que conozco. En 1979, este procesador se demostró a los especialistas de IBM que buscaban un procesador para el prototipo de PC IBM en desarrollo. Las deficiencias obvias del TMS9900 (capacidad de direccionamiento de solo 64 KB de memoria, falta de arquitectura de controladores necesaria, lentitud relativa) causaron la impresión correspondiente e Intel 8088 fue elegido como el futuro líder entre las PC. Para resolver el problema de la falta de controladores, Texas Instruments también produjo la versión TMS9900 con un bus de 8 bits, TMS -9980, que funcionó un 33% más lento.

El TMS9900 se usó en las computadoras TI99 / 4 y TI99 / 4A, que eran bastante populares en los EE. UU., Que fueron "aplastadas" en la guerra de precios por la computadora Commodore VIC-20 en 1983. Es curioso que, como resultado de esta guerra, Texas Instruments se haya visto obligado a reducir los precios de su computadora a increíble para 1983 $ 49 (¡en 1979 el precio era de $ 1150!) y venderlos con una gran pérdida para usted. Por ejemplo, podemos citar la computadora relativamente impopular Commodore + 4, que se suspendió en 1986, pero cuyos precios cayeron a estos $ 49 solo en 1989. T99 / 4A dejó de producir en 1984, cuando, debido a los precios extremadamente bajos, comenzó a ganar popularidad. Esta computadora solo se puede llamar de 16 bits. Porque tiene solo 256 bytes (!) De memoria RAM y toda la memoria ROM dirigida a través de un bus de 16 bits.El resto de la memoria y los dispositivos de E / S funcionan a través de un bus lento de 8 bits. Por lo tanto, es posible considerar más correctamente el BK-0010 doméstico como la primera computadora doméstica de 16 bits. Curiosamente, la TI99 / 4 y la TI99 / 4A usan un procesador a 3 MHz, exactamente igual que el BK-0010.

En las TI-99/4 y TI99 / 4A, se utilizó un chip TMS9918 bastante exitoso como controlador de video, que se convirtió en la base del estándar MSX muy popular en todo el mundo, así como en algunas otras computadoras y consolas de juegos. En la compañía japonesa Yamaha, este chip de video se mejoró significativamente y se usó posteriormente, en particular, para actualizar las TI-99/4 y TI99 / 4A.

La serie TI99 / 4 es un raro ejemplo de computadoras donde el fabricante del procesador y la computadora eran los mismos.

Procesadores DEC PDP-11


Desde el comienzo de los años 70, la era de 10 años de dominio de DEC comenzó en el mundo. Las computadoras DEC eran significativamente más baratas que las fabricadas por IBM y, por lo tanto, atrajeron la atención de pequeñas organizaciones para las que los sistemas IBM no estaban disponibles. La era de la programación profesional masiva también comienza con estas computadoras. La serie de computadoras PDP-11 ha tenido mucho éxito. Se fabricaron varios modelos PDP-11 desde principios de los 70 hasta principios de los 90. En la URSS, fueron clonados con éxito y se convirtieron en los primeros sistemas informáticos populares en masa. Entre los clones se encuentran computadoras con los nombres de computadoras SM, Electronics-60/81/85, DVK-1/2/3, BK-0010/0011 (BK0010 es la primera PC que fue posible comprar en la tienda).

Sin embargo, DEC también promovió las computadoras más caras y sofisticadas de la familia VAX-11, la situación en torno a la cual estaba algo politizada. Y a partir de la segunda mitad de los años 70, DEC prácticamente detuvo el desarrollo en la línea PDP-11, en particular, no se introdujo el soporte para 16 números para ensamblador. El rendimiento de los sistemas PDP-11 también se ha mantenido prácticamente sin cambios desde mediados de los años 70.

PDP-11 utilizó diferentes procesadores compatibles con el sistema de comando principal, por ejemplo, LSI-11, F-11, J-11. A finales de los años 70, DEC hizo un procesador barato para microcomputadoras T-11. Sin embargo, por razones poco claras, a pesar del software aparentemente grande y de alta calidad que podría transferirse al sistema que lo usa en el futuro, los fabricantes de sistemas informáticos nunca lo notaron. La única excepción fue el modelo de consola de juegos Atari. El T-11 encontró un uso generalizado solo en el mundo de los equipos integrados, aunque en términos de capacidades fue bastante superior al z80. En la URSS, se produjeron procesadores K1801BM1, K1801BM2, K1801BM3, ... cerca de procesadores DEC, así como copias exactas de procesadores DEC. Estos últimos eran mucho más caros y se producían en pequeñas cantidades.

El sistema de comandos de los procesadores de arquitectura PDP-11 se distingue por una ortogonalidad casi completa, una calidad agradable, pero cuando se lleva al extremo, puede crear comandos ridículos. El sistema de instrucción del procesador PDP-11 ha influido en muchas arquitecturas, y en particular en el Motorola 68000.

El sistema de comando PDP-11 es estrictamente de 16 bits. Los 8 registros de propósito general (y el contador de instrucciones en esta arquitectura es un registro R7 normal) son de 16 bits, el registro de estado (contiene indicadores típicos) también es de 16 bits, el tamaño de las instrucciones es de 1 a 3 palabras de 16 bits. Cada operando en un comando puede ser (aunque hay excepciones, por ejemplo, una instrucción XOR) de cualquier tipo; esto es ortogonalidad. Entre los tipos se encuentran el registro ordinario o la memoria. Los programadores en los años 80 a veces no entendían por qué no había instrucciones de memoria-memoria en el sistema de instrucciones Intel x86. Esta es la influencia de la escuela PDP-11, donde puede escribir fácilmente direcciones completas para cada operando. Esto, por supuesto, es lento y especialmente lento para sistemas con memoria lenta típica de principios de los 90. También se puede acceder a la memoria a través de un registro, un registro con un desplazamiento, un registro con auto decremento o incremento.Una característica del sistema de instrucción PDP-11 es la posibilidad de doble acceso indirecto a la memoria a través de un registro, por ejemplo,

MOV @(R0)+,@-(R1) 

significa lo mismo que el operador de lenguaje C / C ++

 **–r1 = **r1++; 

, donde r0 y r1 se declaran como

 signed short **r0, **r1; 

Otro ejemplo, un comando

 MOVB @11(R2),@-20(R3) 

corresponde a

 **(r3-20) = **(r2+11); 

donde r2 y r3 se declaran como

 char **r2, **r3; 

En las arquitecturas populares actuales, un equipo no puede prescindir de dicho equipo; probablemente se necesitarán al menos 10 equipos. También puede obtener la dirección relativa al valor actual del contador de comandos. Daré otro ejemplo con direccionamiento más simple. El equipo

 ADD #16,11(R4) 

en la arquitectura Intel x86 se puede mapear

 ADD [BX+11],16 

En los ensambladores DEC, es costumbre escribir operandos de izquierda a derecha, a diferencia de Intel, donde escriben de derecha a izquierda. Hay razones para creer que el ensamblador GNU para x86 se hizo bajo la influencia del ensamblador PDP-11.

Los comandos de multiplicación y división son solo simbólicos y no están disponibles en todos los procesadores. La aritmética de números decimales también es opcional: esta es la denominada aritmética comercial de terminología DEC. Como curiosidad de la ortogonalidad completa, daré un ejemplo de un comando

 MOV #11,#22 

que después de la ejecución se convierte en

 MOV #11,#11 

- Este es un ejemplo del uso de una constante inmediata como operando. Otro equipo curioso es el comando MARK único, cuyo código debe insertarse en la pila y nunca puede usarse explícitamente. Las rutinas de llamadas en la arquitectura PDP-11 también son algo peculiares. El comando correspondiente primero guarda el registro asignado (puede ser cualquiera) en la pila, luego guarda el contador de instrucciones en este registro y solo luego escribe el nuevo valor en el contador de instrucciones. El comando de retorno del subprograma debe hacer lo contrario y saber qué registro se usó al llamar al subprograma. Se pueden obtener efectos muy extraños e impredecibles utilizando el contador de comandos como un registro normal.

Es interesante que entre los programadores de PDP-11, se haya desarrollado una cultura de trabajar directamente con códigos de máquina. Los programadores podrían, por ejemplo, trabajar sin un desensamblador al depurar. ¡O incluso escriba pequeños programas directamente en la memoria sin ensamblar!

Por supuesto, los horarios del equipo no difieren en las características de alta velocidad. Fue sorprendente una vez descubrir que en la computadora doméstica del BK el comando de transferencia de registro a registro toma hasta 12 ciclos (10 ciclos cuando se usa el código de ROM), y los comandos con dos operandos con doble direccionamiento indirecto se ejecutan durante más de 100 ciclos. Z80 realiza una transferencia de registro de 16 bits para 8. Sin embargo, la lentitud del BC no es causada tanto por el procesador, sino por la mala calidad de la memoria doméstica, bajo cuyas características el BC tuvo que adaptarse. Si se usara una memoria suficientemente rápida, entonces el BC enviaba 16 bits de registro para 8 ciclos de reloj también. Una vez que hubo mucha controversia, ¿cuál es más rápido que BC o Spectrum? Debe decirse de inmediato que Spectrum es una de las computadoras personales de 8 bits en masa más rápidas cuando se utilizan los 32 KB superiores de memoria. Por lo tanto, no es sorprendente que el Spectrum sea más rápido que el BC, pero no por mucho. Y si el BC funcionara con memoria sin frenos, entonces probablemente sería un poco más rápido.

La densidad del código también es más bien un punto débil de la arquitectura PDP-11. Los códigos de instrucciones deben ser un múltiplo de la longitud de la palabra de la máquina: 2 bytes, lo que es especialmente desagradable cuando se trabaja con argumentos de bytes o comandos simples como establecer o restablecer un indicador.

Los intentos de hacer una computadora personal basada en la arquitectura PDP-11 son interesantes. Una de las primeras PC en el mundo que apareció solo un poco más tarde que Apple] [y Commodore PET, y un poco antes que el Tandy TRS-80, fue el Terak 8510 / a, que tenía gráficos en blanco y negro y la capacidad de descargar una versión incompleta de Unix. Esta PC era bastante cara y, hasta donde yo sé, solo se usaba en el sistema de educación superior de los EE. UU. Desde 1978, la computadora se produjo en forma de un kit para ensamblar el Heathkit H11. El propio DEC también trató de hacer su propia PC, pero de manera muy inconsistente. DEC, por ejemplo, lanzó una PC basada en el z80 y 8088, obviamente jugando en contra de sus principales desarrollos. El personal basado en la arquitectura PDP-11 DEC PRO-325/350/380 tenía algunas incompatibilidades bastante artificiales con la arquitectura subyacente, lo que dificultaba el uso de parte del software. La mejor personalización de las tecnologías de mini computadoras fue en la URSS, donde se hicieron BK, DVK, CC NT ... Por cierto, Electronics-85 es un clon bastante preciso del DEC PRO-350. Además, el procesador CP1600, similar a la arquitectura PDP-11, se utilizó en las consolas de juegos Intellivision, que eran populares a principios de los años 80.


Computadora doméstica doméstica de 16 bits (1985): casi compatible con PDP-11

K1802BM2, que se usó en el DVK, es aproximadamente dos veces más rápido que K1801BM1, K1801BM3 es aún más rápido y cercano a Intel 8086.

En los modelos PDP-11 más antiguos y las computadoras domésticas cercanas a ellos, el procesador puede direccionar hasta 4 MB de memoria, pero no se pueden asignar más de 64 KB a un programa. En términos de velocidad, estos procesadores también están cerca de 8086 en términos del número de operaciones por megahercio, aunque todavía es más lento que eso.

CPU para DEC VAX-11


Los sistemas VAX-11 fueron muy populares en los años 80, especialmente en la educación superior. Ahora es difícil entender algunos de los conceptos descritos en los libros de esos años sin conocer la arquitectura de estos sistemas. Los VAX-11 eran más caros que los PDP-11, pero estaban más orientados hacia la programación universal y aún eran significativamente más baratos que los sistemas IBM / 370. Para la arquitectura VAX, a mediados de los 80 se fabricó un procesador V-11 y, hasta ese momento, se utilizaron ensamblajes de procesador.

La arquitectura VAX-11 es de 32 bits, utiliza 16 registros, entre los cuales, como en el PDP-11, hay un contador de comandos. Se supone que se deben usar dos pilas, una de las cuales se usa para almacenar marcos de subtrama. Además, uno de los registros está asignado para trabajar con argumentos de funciones llamadas. Por lo tanto, 3 de 16 registros se asignan para pilas. El sistema de comandos VAX-11 no puede dejar de sorprender con su magnitud y la presencia de comandos muy raros y a menudo únicos, por ejemplo, para trabajar con campos de bits o varios tipos de colas, para calcular CRC, multiplicando 10 líneas ... Muchos comandos están en versiones de tres direcciones (ARM) y en dos direcciones (como x86), pero hay comandos de cuatro direcciones, por ejemplo, la división extendida de EDIV. Por supuesto, hay soporte para trabajar con números reales.

Pero el VAX-11 es un sistema muy lento para su clase y precio. Incluso el 6502 súper simple a 4 MHz podría superar al más lento de la familia VAX-11/730, y los sistemas VAX-11 más rápidos: gabinetes enormes y "juegos completos de muebles", están al nivel de rendimiento de los primeros PC AT. Cuando apareció el 80286, quedó claro que los días del VAX-11 estaban contados e incluso el frenado con la introducción de sistemas basados ​​en 80286 ya no podía cambiar fundamentalmente nada. Los británicos más directos de Acorn, después de haber fabricado ARM en 1985 sin ocultar nada, dijeron que ARM es mucho más barato y notablemente más rápido. VAX-11, sin embargo, siguió siendo relevante hasta principios de los 90, y aún tenía algunas ventajas sobre una PC, en particular, sistemas más rápidos para trabajar con discos.

VAX-11 es probablemente el último sistema de masa en el que la conveniencia de trabajar en ensamblador se consideraba más importante que la velocidad. En cierto sentido, este enfoque se ha desplazado a los lenguajes de script modernos y populares.

La foto muestra el VAX-11/785 - esto también es una computadora (1984) - el más rápido entre los VAX-11, en términos de velocidad del procesador es comparable a IBM PC AT o ARM Evaluation System

Sorprendentemente, hay muy poca literatura disponible sobre los sistemas VAX-11. Como si hubiera algún tipo de ley extraña sobre el olvido. Varios episodios cercanos a la política y correlacionados con la historia de la URSS están relacionados con la historia de esta arquitectura. Es posible que el rechazo real del desarrollo de la arquitectura PDP-11 haya sido causado por su bajo costo y el éxito de su clonación en la Unión Soviética. Y la clonación de VAX-11 costó un orden de magnitud de grandes recursos y condujo a un callejón sin salida. El interés en VAX-11 se creó usando, por ejemplo, sorteos como el famoso Kremlin Vax el 1 de abril de 1984, en el que el entonces líder de la URSS Konstantin Chernenko ofreció beber vodka con motivo de conectarse a la red Usenet. Otra broma fue que algunos chips VAX-11 estaban impresos con un mensaje en ruso roto sobre lo bueno que es el VAX-11. :)

Algunos modelos VAX-11 fueron clonados en la URSS a fines de los años 80, pero se produjeron muy pocos clones de este tipo y casi nunca encontraron uso.

Varios sistemas VAX-11 están disponibles para su uso en la red. Y esto los compara favorablemente con los sistemas IBM / 370 con los que competían.

Intel: 8086 a 80486


Por supuesto, uno de los mejores procesadores fabricados en los años 70 es el 8086, así como su 8088 casi analógico más económico. La arquitectura de estos procesadores se distingue gratamente por la ausencia de préstamos mecánicos y la adhesión a teorías abstractas, arquitectura bien pensada y equilibrada, equilibrada y centrada en mayor desarrollo Entre las deficiencias de la arquitectura x86, se le puede llamar algo engorroso y una tendencia al crecimiento extenso en el número de instrucciones.

Una de las ingeniosas soluciones de diseño de 8086 fue la invención de los registros de segmento. Esto, por así decirlo, logró simultáneamente dos objetivos: portabilidad "gratuita" de programas de hasta 64 KB de tamaño (esta era una cantidad muy decente de memoria de computadora para un programa hasta mediados de los 80), y capacidad de direccionamiento de hasta 1 MB de espacio de direcciones. También puede observar que el 8086, como el 8080 o el z80, también tiene un espacio de direcciones especial para puertos de E / S de 64 KB de tamaño (y 8080 y 8085, este volumen es de 256 bytes). Solo hay cuatro registros de segmento: para código, para pila y dos para datos. Por lo tanto, 64 * 4 = 256 KB de memoria están disponibles para un uso rápido, pero esto fue incluso a mediados de los años 80. De hecho, no hay ningún problema con el tamaño del código, ya que puede usar las llamadas llamadas largas de subprogramas al cargar y guardar la dirección completa de dos registros. Solo hay un límite de 64 KB en el tamaño de un subprograma; esto es suficiente para muchas aplicaciones modernas. La imposibilidad de direccionar rápidamente las matrices de datos de más de 64 KB crea un cierto problema: cuando se usan dichas matrices, debe cargar el registro de segmento y la dirección en sí cada vez que se accede, lo que reduce la velocidad de trabajar con matrices tan grandes en varias ocasiones.

Los registros de segmento se implementan de tal manera que su presencia es casi imperceptible en los códigos de máquina, lo que facilita su rechazo cuando llega el momento.

La arquitectura 8086 mantuvo su proximidad a la arquitectura 8080, lo que permitió un esfuerzo relativamente pequeño para transferir programas desde 8080 (o incluso z80) a 8086, y especialmente si el código fuente de los programas estaba disponible.

Los equipos 8086 no difieren en la alta velocidad de ejecución, pero son bastante comparables con los competidores, por ejemplo, Motorola 68000, que apareció un año después. Uno de los nuevos productos, que acelera ligeramente el 8086, generalmente sin prisas, fue el turno de los equipos.

El 8086 usa ocho registros de 16 bits, algunos de los cuales se pueden usar como registros de dos bytes y otros como índices. Por lo tanto, los registros 8086 son algo heterogéneos, pero está bien equilibrado y los registros son muy convenientes de usar. Esta heterogeneidad, por cierto, le permite tener códigos más densos. El 8086 usa las mismas banderas que el 8080, más algunas nuevas. Por ejemplo, apareció una bandera que es típica de la arquitectura PDP-11: ejecución paso a paso.

8086 le permite utilizar modos de direccionamiento muy interesantes, por ejemplo, una dirección puede estar compuesta por la suma de dos registros y una mezcla constante de 16 bits, en la que se superpone el valor de uno de los registros de segmento. Solo dos o incluso un término pueden quedar fuera de la suma de la dirección. Esto en PDP-11 con un comando no funcionará. La mayoría de las instrucciones 8086 no permiten ambos operandos de tipo memoria; uno de los operandos debe ser un registro. Pero hay comandos de cadena que solo saben cómo trabajar con la memoria utilizando dos direcciones. Los comandos de cadena le permiten copiar en bloque rápidamente (17 medidas por byte o palabra), buscar, llenar, cargar y comparar. Además, los comandos de cadena se pueden usar cuando se trabaja con puertos de E / S. La idea de que 8086 use prefijos de comandos es muy interesante, ya que permite utilizar funcionalidades adicionales muy útiles sin complicación significativa de los esquemas de codificación de comandos.

8086 tiene uno de los mejores entre todos los sistemas informáticos para la organización del trabajo con la pila. Usando solo dos registros (BP y SP), 8086 le permite resolver todos los problemas al organizar llamadas a rutinas con parámetros.

Entre los equipos hay multiplicación y división simbólica y sin signo. Incluso hay comandos únicos de ajuste decimal para los comandos de multiplicación y división. Es difícil decir que claramente falta algo en el sistema de comando 8086. Más bien, lo contrario. Dividir un dividendo de 32 bits en un divisor de 16 bits para obtener un resto privado de 32 bits y un resto de 16 bits puede requerir hasta 300 ciclos de reloj, no particularmente rápido, pero varias veces más rápido que dicha división en cualquier procesador de 8 bits (excepto 6309) y comparable en velocidad a 68000. La división por x86 tiene una característica inesperada: cambia las banderas de signos de forma impredecible ...

Vale la pena agregar que en la arquitectura x86, el equipo XCHG heredado del 8080 se mantuvo, lo que se mejoró. Además, los procesadores posteriores comenzaron a usar las instrucciones XADD, CMPXCHG y CMPXCHG8B, que también pueden realizar un intercambio atómico de argumentos. Dichas instrucciones son una de las características de x86, es difícil encontrarlas en procesadores de otras arquitecturas.

Podemos resumir que el 8086 es un procesador muy exitoso, que combina la conveniencia de la programación y el apego a las limitaciones de memoria que son características de su tiempo. El 8086 se utilizó con relativa poca frecuencia, dando lugar al 8088 más barato como el lugar de honor para ser el primer procesador de la arquitectura de PC principal de nuestro tiempo, la arquitectura de PC de IBM. El 8088 utilizó un bus de datos de 8 bits, lo que lo hizo algo más lento, pero permitió construir sistemas más accesibles para los clientes basados ​​en él.

Curiosamente, Intel se negó fundamentalmente a realizar mejoras en sus procesadores, prefiriendo desarrollar sus próximas generaciones. Uno de los segundos subcontratistas (NEC) más grandes de Intel, la corporación japonesa NEC, que a principios de los años 80 era mucho más grande que Intel, decidió mejorar los procesadores 8088 y 8086, lanzando procesadores V20 y V30, compatibles con ellos en el zócalo y hasta un 30% más rápido. ¡NEC incluso le ofreció a Intel convertirse en su subcontratista! En cambio, Intel lanzó una demanda contra NEC, que, sin embargo, no pudo ganar. Por alguna razón, este gran enfrentamiento entre Intel y NEC fue completamente ignorado por Wikipedia.

80186 y 80286 aparecieron en 1982. Por lo tanto, se puede suponer que Intel tenía dos equipos de desarrollo casi independientes. 80186 es un 8086 mejorado por varios comandos y tiempos más cortos, además de varios circuitos integrados típicos de la arquitectura x86: generador de reloj, temporizadores, DMA / DAP, controlador de interrupción, generador de retardo, etc. Tal procesador parece simplificar enormemente la producción. computadoras basadas en él, pero debido a que el controlador de interrupción incorporado resultó ser incompatible con la PC de IBM por alguna razón, casi nunca se usó en una PC. El autor solo conoce el sistema BBC Master 512 basado en la computadora BBC Micro, que no usaba los circuitos integrados, ni siquiera el temporizador, pero había varios sistemas más que usaban 80186. La memoria direccionable de 80186 permaneció de la misma manera que en 8086 con un tamaño de 1 MB. La corporación japonesa NEC produjo análogos de 80186, que eran compatibles con la PC de IBM.

80286 tuvo tiempos aún mejores que 80,186, entre los cuales la división fantástica (32/16 = 16,16) para 22 medidas es especialmente notable, ¡desde entonces no se ha aprendido a hacer la división más rápido! 80286 admite trabajar con todos los nuevos equipos 80186, además de muchos equipos para trabajar en un nuevo modo protegido. 80286 fue el primer procesador con soporte incorporado para el modo protegido, que permitió organizar la protección de la memoria, el uso correcto de instrucciones privilegiadas y el acceso a la memoria virtual. Si bien trabajar en el nuevo modo creó muchos problemas problemáticos (el modo protegido se realizó sin éxito) y se usó de manera relativamente rara, fue un gran avance. En este nuevo modo, los registros de segmento han adquirido una nueva calidad, lo que le permite utilizar hasta 16 MB de memoria direccionable y hasta 1 GB de memoria virtual por tarea. El gran problema con 80286 fue la incapacidad de cambiar del modo protegido al modo real, en el que la mayoría de los programas funcionaban entonces. Utilizando la instrucción LOADALL indocumentada "secreta", fue posible utilizar 16 MB en memoria y en modo real.

En 80286, el cálculo de direcciones en operandos de instrucciones comenzó a realizarse por esquemas separados y dejó de ralentizar la ejecución de comandos. Esto agregó características interesantes, por ejemplo, con el equipo

 LEA AX,[BX+SI+4000] 

¡En solo 3 ciclos, fue posible realizar dos adiciones y transferir el resultado al registro AX!

Los registros segmentados en modo protegido se han convertido en parte de un sistema completo de administración de memoria (MMU). En modo real, estos registros solo proporcionan parcialmente la funcionalidad MMU.

El número de fabricantes y sistemas específicos que usan 80286 es enorme, pero, por supuesto, los primeros fueron computadoras PC PC de IBM con indicadores de rendimiento que fueron casi fantásticos entre las computadoras personales. Desde estas computadoras, la memoria comenzó a retrasarse en la velocidad del procesador, hubo estados de retraso, pero luego pareció algo más temporal.

En 80286, como en 8086/8088, el trabajo con interrupciones no se implementó al 100% correctamente, lo que en casos muy raros podría tener consecuencias muy desagradables. Por ejemplo, el comando POPF de 80286 siempre permitió interrupciones durante su ejecución, y al ejecutar un comando con dos prefijos (como ejemplo, tome REP ES: MOVSB) en 8086/8088, después de llamar a la interrupción, uno de los prefijos se perdió. Un error en POPF fue solo en versiones anteriores de 80286.

El modo protegido 80286 era extremadamente inconveniente, dividía toda la memoria en segmentos de no más de 64 KB y requería soporte de software complejo para trabajar con memoria virtual. Habiendo aparecido en 1985, 80386 hizo el trabajo en modo protegido bastante cómodo, hizo posible usar hasta 4 GB de memoria direccionable y cambiar fácilmente entre modos. Además, para admitir la multitarea, se creó un modo virtual 8086 para programas para 8086. Para la memoria virtual, se hizo posible utilizar un modo de página relativamente fácil de administrar. 80386, con todas sus innovaciones, retuvo la compatibilidad total con los programas escritos para 80286. Entre las innovaciones de 80386, también podemos mencionar la extensión de registros a 32 bits y la adición de dos nuevos registros de segmento. Los tiempos han cambiado, pero de manera ambigua. Se ha agregado un cambio rápido de bitslo que hizo posible realizar múltiples turnos con tiempos de uno. Sin embargo, esta innovación por alguna razón ralentizó en gran medida la ejecución de las instrucciones de cambio cíclico. La multiplicación se ha vuelto un poco más lenta que la de 80286. Por el contrario, trabajar con la memoria se ha vuelto un poco más rápido, pero esto no se aplica a los comandos de cadena, que se mantuvieron más rápidos que 80286. El autor de este material a menudo ha encontrado la opinión de que en modo real con 16- El código de bits 80286 al final sigue siendo un poco más rápido que 80386 a la misma frecuencia.El autor de este material más de una vez tuvo que encontrar la opinión de que en modo real con un código 80286 de 16 bits, al final, todavía es un poco más rápido que 80386 con la misma frecuencia.El autor de este material más de una vez tuvo que encontrar la opinión de que en modo real con un código 80286 de 16 bits, al final, todavía es un poco más rápido que 80386 con la misma frecuencia.

En 80386 se agregaron nuevos comandos, la mayoría de los cuales solo daban nuevas formas de trabajar con datos, en realidad duplicando los disponibles para algunos casos con optimización. Por ejemplo, se agregaron los siguientes comandos:

  • para verificar, establecer y restablecer el bit por número, similar a los que se hicieron para z80;
  • Escaneo de bits BSF y BSR;
  • copiar valores con extensión con signo o cero, MOVSX y MOVZX;
  • establecer valores según los valores de los indicadores de las operaciones SETxx;
  • turnos dobles SHLD, SHRD.

Antes de la llegada de 80386, los procesadores x86 solo podían usar saltos condicionales cortos de un byte, esto a menudo era muy insuficiente. Con 80386, se hizo posible usar compensaciones de dos (o cuatro en el modo de dirección de 32 bits) bytes, y a pesar de que el código de las nuevas transiciones se volvió dos (o tres) veces más largo, su tiempo de ejecución permaneció igual que los anteriores, transiciones cortas

El soporte de depuración se mejoró radicalmente al introducir 4 puntos de interrupción de hardware, usándolos, fue posible detener programas incluso en direcciones en la memoria que no se pueden cambiar.

El modo protegido principal se ha vuelto mucho más fácil de administrar que en 80286, que hizo que varios comandos heredados fueran rudimentos innecesarios. En el modo protegido principal, el llamado modo plano utiliza segmentos de hasta 4 GB de tamaño, lo que convierte todos los registros de segmento en una formalidad sutil. Y el modo irreal semi-documentado incluso hizo posible utilizar toda la memoria como en el modo plano, pero desde el modo real, que es fácil de instalar y administrar.

Con 80386, Intel se negó a compartir sus tecnologías, convirtiéndose de hecho en un fabricante monopolístico de procesadores para la arquitectura de PC de IBM, y con el debilitamiento de Motorola, para otras arquitecturas de computadoras personales. Los sistemas basados ​​en 80386 eran muy caros hasta principios de los 90, cuando finalmente estuvieron disponibles para los consumidores masivos en frecuencias de 25 a 40 MHz. C 80386 IBM comenzó a perder su posición como fabricante líder de computadoras compatibles con PC de IBM. Esto se manifestó, en particular, en el hecho de que la computadora Compaq fue la primera PC basada en 80386 en 1986.

Es difícil no contener la admiración por los volúmenes de trabajo realizados por los creadores de 80386 y sus resultados. Incluso me atrevo a sugerir que el 80386 contiene más logros que todos los logros tecnológicos de la humanidad antes de 1970, y tal vez incluso antes de 1980.

80386. . , . 80386 , . IBTS XBTS. 80386DX/SX, AMD, Intel ( ), , EAX, POPAD PUSHAD , BX. . , . .

ARM . , ARM . Intel 80486. Intel – .

80486 ARM . - . , , 8088! , 8 , -. , , CMPXCHG – IBTS XBTS (, 80386). – , 32- BSWAP. – . .

80486 . , 80486, VX FT, Apricot – 1989 18 40 , – 60 ! Intel ARM Acorn. IBM 80486 1990, PS/2 90 $17000.

Intel , . , 8086. , , AAD AAM , ( Pentium 15 !). AND/OR/XOR , , AND BX,7 (83 E3 07). , , , 80386. , 8086 80286 , . ADD/ADC/SBB/SUB, . , , , (?) . – . , , SAL/SHL ( D0 E0, D0 F0 D1 E0, D1 F0) . , , . , . , Intel , ? SALC 1995 20 ! ICEBP 10 1985 1995. LOADALL LOADALLD – , 80286 80386 . UD1 (0F B9), . .

En la URSS, se dominó la producción de clones de los procesadores 8088 y 8086, y no fue posible reproducir completamente 80286.

Motorola: 68,000 a 68040


Motorola es la única compañía que durante algún tiempo pudo competir exitosamente con Intel en la producción de procesadores para computadoras personales.

68000 fue lanzado en 1979 y a primera vista parecía mucho más impresionante que 8086. Tenía 16 registros de 32 bits (más precisamente, incluso 17), un contador de comandos separado y un registro de estado. Podría direccionar 16 MB de memoria directamente, lo que no creó ninguna restricción, por ejemplo, para matrices grandes. Sin embargo, un análisis cuidadoso de las características del 68000 muestra que no todo es tan bueno como parece. En esos años, tener una memoria de más de 1 MB es un lujo inalcanzable incluso para organizaciones medianas. La densidad de códigos en 68000 es peor que en 8086, lo que significa que los códigos con la misma funcionalidad ocupan 68000 más espacio. Esto último también se debe al hecho de que los códigos 68k deben tener un múltiplo de 2 bytes de longitud, y x86 debe tener 1. Pero la información sobre la densidad del código es controvertida, ya que hay evidencia de que en algunos casos 68000 puede ser mejor que 8086 De los 16 registros, 8 son direccionables,de alguna manera, estos son análogos un poco más avanzados de registros de segmento x86. ALU y el bus de datos son de 16 bits, por lo que las operaciones con datos de 32 bits son más lentas de lo que cabría esperar. El tiempo de ejecución de las operaciones de registro a registro es de 4 ciclos, y el de 8086 es de solo 2. Las computadoras basadas en 68000 hasta mediados de los 80 resultaron ser mucho más caras que las computadoras basadas en Intel 8088, pero 68000 no podía funcionar con memoria virtual y no tenía hardware soporte para trabajar con números reales, lo que lo hizo inadecuado para su uso en los sistemas más avanzados.que basado en Intel 8088, pero 68000 no podía funcionar con memoria virtual y no tenía soporte de hardware para trabajar con números reales, lo que lo hacía inadecuado para su uso en los sistemas más avanzados.que basado en Intel 8088, pero 68000 no podía funcionar con memoria virtual y no tenía soporte de hardware para trabajar con números reales, lo que lo hacía inadecuado para su uso en los sistemas más avanzados.

Como siempre, con los productos de Motorola, la arquitectura 68000 muestra cierta torpeza y rarezas descabelladas. Por ejemplo, dos pilas o dos banderas de transporte (una para funciones y otra para operaciones). Esta rareza con las banderas no termina ahí. Por alguna razón, muchos equipos, incluso MOVE, están llenos de banderas para llevar y banderas de desbordamiento. Otra cosa extraña es que el comando para guardar el estado de los indicadores aritméticos, que funcionó bien en 68000, se ha privilegiado en todos los procesadores a partir de 68010. Algunas operaciones son molestas con su no optimización, por ejemplo, la operación de escribir cero en la memoria CLR es más lenta que escribir el 0 constante en la memoria con el comando MOVE o un desplazamiento a la izquierda es más lento que agregar el operando a sí mismo. Hay algunos comandos prácticamente innecesarios, por ejemplo, hay cambios aritméticos y lógicos a la izquierda.Incluso los registros de direcciones con ventajas aparentemente superiores a los registros de segmentos 8086 tienen una serie de inconvenientes molestos. Por ejemplo, en ellos se requería cargar hasta 4 bytes en lugar de dos en 8086 y uno de estos cuatro era superfluo. El sistema de comando 68000 revela muchas similitudes con el sistema de comando PDP-11 desarrollado en los años 60.

Los códigos para Motorola se ven de alguna manera más voluminosos y torpes en comparación con x86 o ARM. Por otro lado, 68,000 es aún más rápido que 8086, según mis estimaciones, en aproximadamente un 20-30%. Sin embargo, los códigos 680x0 también tienen su propia belleza y elegancia especiales, menos mecánica, característica de x86. Además, como lo demostró la comunicación con los expertos de eab.abime.net , la densidad de código de 68k a menudo es mejor que x86.

En general, el 68000 es un buen procesador, con un gran sistema de instrucciones. Fue utilizado en muchas computadoras personales legendarias: en las primeras computadoras Apple Macintosh, que se produjeron antes de principios de los 90, en las primeras computadoras multimedia Commodore Amiga, en las computadoras Atari ST relativamente económicas y de alta calidad. El 68,000 también se usó en computadoras relativamente económicas que funcionan con variantes de Unix, en particular en el popular Tandy 16B. Curiosamente, IBM simultáneamente con el desarrollo de PC lideró el desarrollo de la computadora System 9000 basada en 68000, que se lanzó menos de un año después de la PC.

El 68010 apareció obviamente tarde, solo en 1982, al mismo tiempo que Intel lanzó el 80286, que puso a las computadoras personales en el nivel de las minicomputadoras. 68010 es compatible con el conector 68000, pero el sistema de sus comandos es ligeramente diferente, por lo que reemplazar el 68000 con 68010 no se ha vuelto popular. La incompatibilidad fue causada por una razón descabellada para alinear 68,000 más con la teoría ideal de organizar el soporte de virtualización. 68010 es solo un poco, no más del 10% más rápido que 68000. Es obvio que 68010 perdió mucho frente a 80286 y fue aún más débil que el 800186 que apareció en el mismo año. Al igual que 80186, 68010 casi nunca encontró su uso en computadoras personales.

68008 también se lanzó en 1982, probablemente con la esperanza de repetir el éxito de 8088. Esto es 68000, pero con un bus de datos de 8 bits, que permitió su uso en sistemas más baratos. Pero el 68008, como el 68000, no tiene una línea de comando, lo que lo hace aproximadamente un 50% más lento que el 68000. Por lo tanto, el 68008 puede ser incluso un poco más lento que el 8088, que, debido a la línea de comando, es solo un 20% más lento de 8086.

Basado en esto, Sir Clive Sinclair hizo el Spectrum QL, una computadora muy interesante que, debido a su precio más bajo, podría competir con Atari ST y computadoras similares. Pero Clive simultáneamente y obviamente prematuramente comenzó a invertir una gran cantidad de energía en el desarrollo de vehículos eléctricos, dejando QL (salto cuántico - salto cuántico) como una tarea secundaria, que, con algunas soluciones de diseño fallidas, llevó a la computadora de Clive y a toda la compañía a cerrar prematuramente (la compañía se convirtió en parte Amstrad, que se negó a producir QL).

Sería interesante calcular el índice de bits para 68000, me parece que es claramente superior a 16, aunque lo más probable es que no sea superior a 24.

Después de haber aparecido en 1984, 68020 volvió nuevamente a Motorola a las primeras posiciones. Este procesador ha implementado muchos productos nuevos muy interesantes y prometedores. ¡El efecto más fuerte es ciertamente producido por la canalización de instrucciones, que a veces le permite ejecutar hasta tres instrucciones a la vez! El bus de direcciones de 32 bits parecía un poco prematuro en esos años y, por lo tanto, se produjo una versión más barata del procesador 68020EC con un bus de 24 bits. Pero el bus de datos de 32 bits parecía bastante apropiado y permitió acelerar significativamente el trabajo. La novedad también analizó el caché incorporado, aunque pequeño, de 256 bytes, en volumen, lo que permitió mejorar significativamente el rendimiento, ya que la memoria dinámica principal ya no podía seguir el ritmo del procesador. Se agregaron operaciones bastante rápidas para la división (64/32 = 32.32) y la multiplicación (32 * 32 = 64), para aproximadamente 80 y hasta 45 medidas, respectivamente.Los tiempos de las instrucciones generalmente mejoraron significativamente, por ejemplo, la división (32/16 = 16.16) comenzó a realizarse en aproximadamente 45 ciclos (más de 140 ciclos en 68000). ¡Algunas instrucciones, en los casos más favorables, se pueden ejecutar sin necesidad de ciclos! Se agregaron nuevos modos de dirección, en particular con el escalado: en x86, este modo apareció solo el año próximo en 80386. Otros nuevos modos de dirección permiten el uso de direccionamiento indirecto doble, usando varios desplazamientos, PDP-11 se superó significativamente aquí.con escala: en x86, este modo apareció solo el año próximo en 80386. Otros modos de direccionamiento nuevos permiten el uso de direccionamiento indirecto doble, utilizando varios desplazamientos al mismo tiempo: PDP-11 fue superado significativamente aquí.con escala: en x86, este modo apareció solo el año próximo en 80386. Otros modos de direccionamiento nuevos permiten el uso de direccionamiento indirecto doble, utilizando varios desplazamientos al mismo tiempo: PDP-11 fue superado significativamente aquí.

Pero algunas instrucciones nuevas, por ejemplo, operaciones pesadas con campos de bits o nuevas operaciones con 10 números que se volvieron innecesarias con la división y multiplicación rápidas, se parecían más a una quinta rueda en un carro que a algo esencialmente útil. Los modos de dirección con doble direccionamiento indirecto teóricamente parecen interesantes, pero prácticamente no se necesitan y se ejecutan muy lentamente. A diferencia de 80286, 68020 toma tiempo para calcular la dirección del operando, la llamada dirección efectiva. La división en 68020 resultó ser casi el doble de lenta que la división milagrosa en 80286. La multiplicación y algunas operaciones también son más lentas. El 68020 no tiene un sistema integrado de administración de memoria (MMU) y, más bien, la capacidad exótica de conectar hasta ocho coprocesadores no pudo solucionarlo.

El 68020 se usó ampliamente en las computadoras masivas Apple Macintosh II, Macintosh LC y Commodore Amiga 1200. También se usó en varios sistemas Unix.

La llegada del 80386 con sus buses y registros MMU integrados y de fabricación muy sólida y 32 bits puso a Motorola nuevamente en la posición número 2. 68030, que apareció en 1987, por última vez, pudo recuperar el liderazgo de Motorola por un corto tiempo. El 68030 tiene un sistema integrado de administración de memoria y un caché duplicado, dividido en un caché para instrucciones y datos. Era un producto nuevo muy prometedor. Además, el 68030 podría usar una interfaz de acceso a memoria más rápida, que puede acelerar las operaciones de memoria en casi un tercio. Pero, a pesar de todas las innovaciones, el 68030 resultó ser un poco más lento que el 80386 a las mismas frecuencias. Sin embargo, 68030 estaba disponible en frecuencias de hasta 50 MHz y 80386 solo hasta 40 MHz, lo que hizo que los principales sistemas basados ​​en 68030 fueran un poco más rápidos.

68030 se usó en computadoras de la serie Apple Macintosh II, Commodore Amiga 3000, Atari TT, Atari Falcon y algunas otras.

Con el 68040, Motorola una vez más intentó superar a Intel. Este procesador apareció un año después después de 80486, pero en términos de la combinación de cualidades útiles, no pudo superarlo. De hecho, Motorola, al tener un sistema de comando más sobrecargado, no pudo soportarlo y, en cierto sentido, perdió el rumbo. En 68040 solo pudieron colocar un coprocesador muy truncado para trabajar con números reales y el chip en sí se calentó significativamente más de 80486. Según los resultados en lowendmac.com/benchmarks 68040, es solo 2.1 veces más rápido que 68030, lo que significa que 68040 es un poco más lento que 80486 en ese sentido. misma frecuencia 68040 prácticamente no encontró aplicación en computadoras populares. Solo su opción más barata, 68LC040, que no tiene un coprocesador integrado, encontró un uso notable. Sin embargo¡Las primeras versiones de este chip tenían un serio defecto de hardware, que ni siquiera permitía el uso de la emulación de software de un coprocesador!

Motorola siempre ha tenido problemas con los coprocesadores matemáticos. Motorola, como ya se mencionó, no ha lanzado dicho coprocesador para 68000/68010, mientras que Intel lanzó su exitoso 8087 desde 1980. Para los procesadores 68020/68030, se produjeron dos coprocesadores 68881 y su versión mejorada compatible con pin 68882 a la vez. Pero para obtener una ganancia de rendimiento significativa, el código para 68882 debe compilarse de manera diferente que para 68881.

Es apropiado decir que Intel x86 todavía tiene problemas con el coprocesador matemático: la precisión de los cálculos de algunas funciones, por ejemplo, el seno de algunos argumentos, es muy pequeño, a veces no más de 4 caracteres. Por lo tanto, los compiladores modernos a menudo calculan tales funciones sin recurrir a los servicios de un coprocesador.

National Semiconductor 32016


Este es el primer procesador real de 32 bits propuesto para su uso en computadoras en 1982. Este procesador se planeó originalmente como un VAX-11 en un chip, pero debido a la incapacidad de negociar con DEC, National Semiconductor (NS) tuvo que hacer que el procesador solo separe partes similares. en la arquitectura VAX-11.

El uso de memoria virtual paginada comienza con este procesador: hoy es la tecnología dominante. Pero la compatibilidad con la memoria virtual no está integrada en el procesador, sino que requiere un coprocesador. También se requiere un coprocesador separado para trabajar con números reales.

El sistema de instrucción NS32016 es enorme y similar al sistema de instrucción VAX-11, en particular, con una pila separada para marcos de subprograma. El bus de direcciones es de 24 bits, lo que le permite utilizar hasta 16 MB de memoria. Una característica de 32016 es el trabajo con banderas de signos. Además de las banderas de transporte estándar (que también se pueden usar como un signo para una transición condicional), desbordamiento, signo, igualdad (o cero), también está la bandera L (menos), lo que significa que menos es como un transporte para las comparaciones. La situación de transferencia es similar a la de los procesadores Motorola 680x0. El indicador de desbordamiento se llama por alguna razón F. Hay indicadores de modo paso a paso, modo privilegiado y (¡unicidad!) Indicador para seleccionar la pila actual. Al realizar instrucciones aritméticas, los indicadores del signo, cero, minoritario (L) no se establecen, solo se establecen mediante comandos de comparación.

Puede usar ocho registros de propósito general de 32 bits. Además, también hay un contador de comandos, dos punteros de pila, un puntero de pila de cuadros de subprograma, un puntero base de programa (esto es algo único), un puntero base de módulo (también algo muy raro), un puntero a la tabla de vectores de interrupción, registro de configuración y registro condición En términos de velocidad, el NS32016 fue comparable a 68,000.

32016, que yo sepa, se usó solo con computadoras personales BBC Micro como segundo procesador. Era un prefijo muy costoso y prestigioso para 1984. Fue posible pedir un procesador con frecuencias de 6, 8 y 10 MHz. Hubo algunos problemas técnicos con este último y fue muy costoso. Había muy poco software para 32016, solo hecho por Acorn, un sistema operativo Unix tipo Panos y Acorn BASIC. BBC Micro no usó el chip MMU, aunque podía conectarse, no había programas para usarlo. El coprocesador aritmético ni siquiera estaba previsto.

Se sabe que este procesador muy complejo tiene graves errores de hardware que se han solucionado durante años.

Brazo de bellota


La ideología de 6502, a saber, hacerla más simple, más barata y mejor, continuó en el desarrollo casi fantástico de Acorn, el procesador ARM-1, lanzado en 1985, al mismo tiempo que el milagro tecnológico de Intel, el procesador 80386. ARM consistía en un orden de magnitud menor el número de transistores y, por lo tanto, consumió significativamente menos energía y, en promedio, fue mucho más rápido. Por supuesto, ARM no tenía ninguna MMU o incluso operaciones de división y multiplicación, por lo que en algunos cálculos basados ​​en la división 80386 podría ser más rápido. Sin embargo, las ventajas de ARM fueron tan grandes que hoy es la arquitectura de procesador más masiva. Se han lanzado más de 100 mil millones de procesadores de este tipo.

El desarrollo de ARM en 1983 comenzó después de que Acorn realizó una investigación con el procesador 32016, que mostró que, en muchos cálculos, 6502 podría ser la mitad de la frecuencia de operación más rápido que esto, al parecer, un procesador mucho más potente. Entonces 80286 ya estaba disponible, lo que mostró un muy buen rendimiento, pero Intel, tal vez percibiendo el potencial bastante pequeño de la pequeña empresa Acorn, se negó a proporcionar su procesador para las pruebas. Al mismo tiempo, la tecnología 80286 no se cerró como 80386 y se transfirió a muchas empresas, por lo que la historia aún está esperando que se revelen los detalles de esta falla algo inusual. Quizás si Intel permitiera usar su procesador, entonces Acorn lo usaría y no comenzaría a desarrollar ARM.

ARM fue desarrollado por solo unas pocas personas y probó el sistema de comando usando BBC Micro BASIC. El desarrollo en sí tuvo lugar en el edificio de la antigua sala de servicios públicos, que a menudo se llama granero o granero. El debut del procesador resultó bastante infructuoso. En 1986, se lanzó un decodificador BBC Micro con el nombre de sistema de evaluación ARM, que contenía además del procesador 4 MB de memoria (esto es mucho para esos años), lo que hizo que este decodificador fuera un producto muy costoso (su precio era de más de £ 4,000, es decir, aproximadamente $ 6,000). Por supuesto, si lo compara con computadoras de esa época con capacidades comparables en velocidad, entonces el prefijo resultó ser un orden de magnitud o incluso casi dos más barato. Pero había muy pocos programas para el nuevo sistema. Y es un poco extrañoComo era bastante posible portar Unix a este sistema, entonces estaban disponibles numerosas variantes de Unix que no requerían MMU, había variantes de Unix para PDP-11, 68000, 80186 e incluso 8088. Es curioso que en los años 90 Acorn Archimedes fuera portado Linux Quizás la demora con la introducción de Unix verdadero para ARM fue causada por la renuencia de Acorn a transferir la tecnología ARM a otras empresas.


ARM

La política de marketing algo fallida de Acorn llevó a la compañía a una situación financiera muy difícil para 1985. Acorn, además de ARM, también trató de llevar a cabo un costoso desarrollo de computadoras para los negocios, que fracasó, en particular, debido a las deficiencias del procesador 32016 elegido para ellos. Acorn Communicator tampoco tuvo mucho éxito. El desarrollo de una computadora Master 512 relativamente exitosa, pero no totalmente compatible con IBM PC fue muy costosa. Además, se gastaron muchos recursos financieros en un intento fallido de ingresar al mercado de EE. UU., A la compañía italiana Olivetti, con sus computadoras bastante exitosas basadas en Intel 8086 y 80286, se le permitió ingresar en el marco de un hipotético gran juego para hacerse cargo de Acorn. Por cierto, después de la adquisición de Bellota,El papel de Olivetti en el mercado estadounidense se desvaneció rápidamente.

Ya como parte de Olivetti Acorn ha desarrollado un chip ARM2 mejorado con comandos de multiplicación integrados, sobre la base de la cual se fabricó la computadora personal de Arquímedes, que entonces era increíble a su velocidad, cuyos primeros modelos estuvieron disponibles en 1987. Sin embargo, el control Olivetti se orientó a trabajar con computadoras compatibles con PC de IBM y No quería usar sus recursos para vender productos Acorn.

ARM proporciona 16 registros de 32 bits para su uso (en realidad, hay más de ellos si tenemos en cuenta los registros para las necesidades del sistema). Uno de los registros, R15, como la arquitectura PDP-11, es un contador de comandos. Casi todas las operaciones se realizan en 1 ciclo. Se necesitan más medidas, en particular, para transiciones, multiplicaciones y accesos a la memoria. En comparación, con los principales procesadores de esos años, ARM se distinguió por la ausencia de una estructura tan típica como la pila. La pila se implementa, si es necesario, a través de uno de los registros. Cuando se llaman subrutinas, la pila no se usa; en cambio, la dirección de retorno se almacena en un registro asignado para ella. Tal esquema obviamente no funciona para llamadas anidadas, para las cuales debe organizar una pila. Una característica única de ARM es la combinación de un contador de comandos, que es de 26 bits, es decir, permite direccionar hasta 64 MB con un registro de estado.Se asignan ocho bits para las banderas en este registro combinado, se obtienen dos bits adicionales más en este registro debido al hecho de que los dos bits inferiores de la dirección no se utilizan, ya que los códigos deben estar alineados en el borde de una palabra de 4 bytes. El procesador puede acceder a bytes y palabras de 4 bytes, no puede acceder directamente a datos de 16 bits. Las instrucciones de datos ARM son de 3 direcciones. Una característica de la arquitectura RISC es el uso de comandos de tipo de memoria de registro solo para cargar y descargar datos. ARM tiene un desplazador de bits rápido incorporado (Desplazador de barril), que le permite cambiar el valor de uno de los registros en el comando cualquier cantidad de veces sin el costo de los ciclos de reloj. Por ejemplo, multiplicando el valor del registro R0 por 65 con la colocación del resultado en el registro R1 se puede escribir con un comando de adición de ciclo únicomultiplicando el valor del registro R0 por 65 con la colocación del resultado en el registro R1 se puede escribir con un comando de adición de ciclo único

 ADD R1, R0, R0 shl 6 

, y multiplicando por 63 con el comando

 RSB R1, R0, R0 shl 6 

El sistema de comando tiene una resta de retroceso, lo que permite, en particular, tener un menos unario como un caso especial de este comando y acelerar el procedimiento de división. ARM tiene otra característica única: todas sus instrucciones son condicionales. Hay 16 casos (combinaciones de banderas) que se adjuntan a cada instrucción. La instrucción se ejecuta solo si el conjunto actual de banderas coincide con el conjunto en esta instrucción. En procesadores de otras arquitecturas, dicha ejecución tiene lugar, por regla general, solo para transiciones condicionales. Esta característica de ARM permite en muchos casos evitar una operación de transición lenta. Esto último también contribuye al hecho de que al realizar operaciones aritméticas, puede negarse a establecer los indicadores de estado. Con ARM, como el procesador 6809, puede usar interrupciones rápidas y regulares. TambiénEn los modos de interrupción, los registros con números altos se reemplazan por registros del sistema, lo que hace que los manejadores de interrupciones sean más compactos y rápidos.

El sistema de instrucción ARM contiene significativamente menos instrucciones básicas que el sistema de instrucción del procesador x86. Pero las instrucciones en sí en ARM son muy flexibles y poderosas. Varias instrucciones ARM muy convenientes y potentes no tienen análogos para 80386, por ejemplo, RSB (sustracción inversa), BIC (Y con inversión, PDP-11 tiene dicho comando), MLA de 4 direcciones (multiplicación con suma), LDM y STM ( cargar o descargar múltiples registros de la memoria, similar al comando MOVEM para procesadores 68k). Casi todas las instrucciones ARM son de 3 direcciones, y casi todas las instrucciones 80386 no tienen más de 2 operandos. El sistema de instrucción ARM es más ortogonal: todos los registros son intercambiables, solo los registros R14 y R15 hacen alguna excepción. La mayoría de los comandos ARM pueden requerir 3-4 comandos 80386 para su emulación, y la mayoría de los comandos 80386 se pueden emular con 2-3 comandos ARM. Interesanteque el emulador IBM PC XT en el hardware de computadora Acorn Archimedes con un procesador de 8 MHz es aún más rápido que una computadora PC XT real. En una computadora Commodore Amiga con un procesador 68000 a 7 MHz, el emulador solo puede funcionar a una velocidad de no más del 10-15% de una PC XT real. También es muy interesante que las primeras computadoras NeXT con 68030 de 25 MHz mostraron el rendimiento de los cálculos de enteros al mismo nivel de ARM de 8 MHz. Apple iba a hacer la computadora sucesora de Apple en el proyecto Möbius] [, pero cuando resultó que el prototipo de esta computadora en modo de emulación superó no solo a Apple] [sino también a Macintosh basado en procesadores 68k, ¡el proyecto se cerró!En una computadora Commodore Amiga con un procesador 68000 a 7 MHz, el emulador solo puede funcionar a una velocidad de no más del 10-15% de una PC XT real. También es muy interesante que las primeras computadoras NeXT con 68030 de 25 MHz mostraron el rendimiento de los cálculos de enteros al mismo nivel de ARM de 8 MHz. Apple iba a hacer la computadora sucesora de Apple en el proyecto Möbius] [, pero cuando resultó que el prototipo de esta computadora en modo de emulación superó no solo a Apple] [sino también a Macintosh basado en procesadores 68k, ¡el proyecto se cerró!En una computadora Commodore Amiga con un procesador 68000 a 7 MHz, el emulador solo puede funcionar a una velocidad de no más del 10-15% de una PC XT real. También es muy interesante que las primeras computadoras NeXT con 68030 de 25 MHz mostraron el rendimiento de los cálculos de enteros al mismo nivel de ARM de 8 MHz. Apple iba a hacer la computadora sucesora de Apple en el proyecto Möbius] [, pero cuando resultó que el prototipo de esta computadora en modo de emulación superó no solo a Apple] [sino también a Macintosh basado en procesadores 68k, ¡el proyecto se cerró!que el prototipo de esta computadora en modo de emulación no solo supera a Apple] [, sino también a Macintosh basado en procesadores 68k, ¡el proyecto se cerró!que el prototipo de esta computadora en modo de emulación no solo supera a Apple] [, sino también a Macintosh basado en procesadores 68k, ¡el proyecto se cerró!

Entre las desventajas de ARM, se puede señalar el problema de cargar una constante en un registro. Solo puede cargar 8 bits a la vez, aunque la constante puede invertirse y desplazarse. Por lo tanto, cargar una constante de 32 bits completa puede tomar hasta 4 comandos. Por supuesto, puede cargar la constante desde la memoria con un comando, pero surge el problema de especificar la dirección de esta cantidad, ya que el desplazamiento solo puede ser de 12 bits. Otra desventaja de ARM es la densidad relativamente baja de códigos, que hace que los programas sean algo más grandes y, lo que es más importante, reduce la eficiencia de la memoria caché del procesador. Sin embargo, esto fue probablemente una consecuencia de los compiladores de baja calidad para esta plataforma. Durante mucho tiempo, un inconveniente significativo de ARM fue la falta de soporte integrado para la administración de memoria (MMU); Apple, por ejemplo, este soporte fue requerido a principios de los 90.Los coprocesadores para trabajar con números reales para la arquitectura ARM también comenzaron a usarse con un retraso significativo. ARM no tenía las herramientas de depuración avanzadas que tenía x86. Todavía hay algo extraño en el lenguaje ensamblador estándar para ARM: es costumbre escribir operaciones de desplazamiento de bits separadas por comas. Por lo tanto, en lugar de una forma simple
 R1 shl 7 
- desplazar el contenido del registro R1 7 bits hacia la izquierda - necesita escribir
 R1, shl 7 
.

Desde 1989, ARM3 con un caché incorporado estuvo disponible. En 1990, el equipo de desarrollo de ARM se separó de Acorn y creó ARM Holding con Apple y VLSI. Una de las razones de la separación fue el costo demasiado alto de desarrollar el ARM, según la gerencia de Acorn-Olivetti. Posteriormente, Acorn cesó su existencia independiente, y ARM Holding se convirtió en una gran empresa. La separación de Acorn y ARM Holding también se inició por el deseo de Apple de tener un procesador ARM en su computadora Newton y no depender de otro fabricante de computadoras.

¡ARM mostró rendimiento en datos enteros, excediendo 80486 a la misma frecuencia en un 10-20%! Intel fue capaz de lograr los beneficios de usar la tecnología de multiplicación de reloj y luego arreglarlo firmemente con un procesador Pentium. DEC StrongARM pudo recuperar el liderazgo por un corto tiempo en 1996, después de lo cual Intel adquirió esta tecnología, que desde entonces ha sido un importante fabricante de procesadores de arquitectura ARM. Por lo tanto, hay dos centros para el desarrollo de esta arquitectura.

El desarrollo adicional de la tecnología ARM también es muy curioso, pero esa es otra historia. Aunque se puede mencionar que fue gracias a una participación en ARM Holding que Apple en los años 90 pudo evitar la bancarrota.

Algunas conclusiones, supuestos y preguntas.


Es difícil deshacerse de la sensación de que los procesadores de 8 bits resultaron ser una necesidad indeseable para los personajes principales que actuaron en los años 70 y 80 en el escenario de la historia de la computadora. El 8-batidor 6502 más exitoso fue congelado. Intel y Motorola ralentizaron su propio desarrollo de pequeños procesadores y restringieron a otros desarrolladores.

Estoy casi seguro de que Amiga o Atari ST funcionarían mejor y más rápido en un procesador de 4 MHz con una dirección de 20 o 24 bits compatible con 6502 que con 68000. Bill Mensch declaró recientemente que 6502 a 10 GHz no es difícil de hacer hoy.

Si la serie Amstrad PCW, cuyo éxito podría ser compartido por el Commodore CBM II, comenzó a usar z80 optimizado a frecuencias más altas, entonces es muy posible que esta serie sea relevante hace 10 años.

¿Cómo sería el mundo si ARM se hiciera en 1982, lo cual era completamente posible?

¿Cómo serían las computadoras domésticas si copiaran y desarrollaran no las tecnologías más caras sino las más prometedoras?

Source: https://habr.com/ru/post/es410591/


All Articles