información general | |
---|---|
Lanzado | 1975 ( 1975 ) |
Fabricante común | |
Actuación | |
Frecuencia máxima de reloj de la CPU | De 1 MHz a 3 MHz |
Ancho de datos | 8 bits |
Ancho de dirección | 16 bits |
Arquitectura y clasificación | |
Conjunto de instrucciones | MOS 6502 |
Número de instrucciones | 56 (55 originalmente) |
Especificaciones físicas | |
Transistores |
|
Paquete |
|
Historia | |
Antecesores |
|
Sucesores |
El MOS Technology 6502 (que se pronuncia típicamente "sixty-five-oh-two" o "six-five-oh-two") [3] es un microprocesador de 8 bits que fue diseñado por un pequeño equipo dirigido por Chuck Peddle para MOS Technology . El equipo de diseño había trabajado anteriormente en Motorola en el proyecto Motorola 6800 ; el 6502 es esencialmente una versión simplificada, menos costosa y más rápida de ese diseño.
Cuando se presentó en 1975, el 6502 era el microprocesador más económico del mercado por un margen considerable. Inicialmente se vendió por menos de una sexta parte del costo de los diseños de la competencia de empresas más grandes, como el 6800 o el Intel 8080. Su introducción provocó rápidas disminuciones en los precios en todo el mercado de procesadores. Junto con el Zilog Z80 , desencadenó una serie de proyectos que dieron como resultado la revolución de las computadoras domésticas de principios de la década de 1980.
Las consolas de videojuegos y los ordenadores domésticos de los años 70 hasta principios de los 90, como el Atari 2600 , los ordenadores Atari de 8 bits , Apple II , Nintendo Entertainment System , Commodore 64 , Atari Lynx , BBC Micro y otros, utilizan el 6502 o variaciones del diseño básico. Poco después de la introducción del 6502, MOS Technology fue adquirida directamente por Commodore International , que continuó vendiendo el microprocesador y las licencias a otros fabricantes. En los primeros días del 6502, fue adquirido por Rockwell y Synertek , y más tarde se licenció a otras empresas.
En 1981, el Centro de Diseño Occidental comenzó a desarrollar una versión CMOS , la 65C02 . Esta sigue utilizándose ampliamente en sistemas integrados , con volúmenes de producción estimados en cientos de millones. [4]
El 6502 fue diseñado por muchos de los mismos ingenieros que habían diseñado la familia de microprocesadores Motorola 6800. [5] Motorola inició el proyecto del microprocesador 6800 en 1971 con Tom Bennett como arquitecto principal. Los ingenieros de Motorola podían ejecutar simulaciones analógicas y digitales en una computadora central IBM 370-165 . [6] El diseño del chip comenzó a fines de 1972, los primeros chips 6800 se fabricaron en febrero de 1974 y la familia completa se lanzó oficialmente en noviembre de 1974. [7] [8]
John Buchanan fue el diseñador del chip 6800 [9] [10] y Rod Orgill, quien más tarde hizo el 6501, ayudó a Buchanan con los análisis de circuitos y el diseño del chip. [11] Bill Mensch se unió a Motorola en junio de 1971 después de graduarse de la Universidad de Arizona (a la edad de 26 años). [12] Su primera tarea fue ayudar a definir los circuitos integrados periféricos para la familia 6800 y más tarde fue el diseñador principal del adaptador de interfaz periférica (PIA) 6820. [13] Bennett contrató a Chuck Peddle en 1973 para realizar trabajos de soporte arquitectónico en los productos de la familia 6800 que ya estaban en progreso. [14] Contribuyó en muchas áreas, incluido el diseño de la ACIA (interfaz serial) 6850. [15]
Los clientes objetivo de Motorola eran empresas de electrónica establecidas como Hewlett-Packard , Tektronix , TRW y Chrysler . [16] En mayo de 1972, los ingenieros de Motorola comenzaron a visitar a clientes selectos y a compartir los detalles de su sistema de microprocesador de 8 bits propuesto con ROM, RAM, interfaces paralelas y seriales. [17] A principios de 1974, proporcionaron muestras de ingeniería de los chips para que los clientes pudieran crear prototipos de sus diseños. La estrategia de "familia total de productos" de Motorola no se centró en el precio del microprocesador, sino en reducir el costo total de diseño del cliente. Ofrecieron software de desarrollo en una computadora de tiempo compartido, el sistema de depuración "EXORciser", capacitación en el sitio y soporte de ingenieros de aplicaciones de campo. [18] [19] Tanto Intel como Motorola habían anunciado inicialmente un precio de 360 dólares estadounidenses para un solo microprocesador. [20] [21] El precio real para las cantidades de producción fue mucho menor. Motorola ofreció un kit de diseño que contenía el 6800 con seis chips de soporte por 300 dólares estadounidenses . [22]
Peddle, que acompañaba a los vendedores en las visitas a los clientes, se dio cuenta de que los clientes se sentían desanimados por el alto coste de los chips de microprocesador. [23] Al mismo tiempo, estas visitas invariablemente daban como resultado que los ingenieros a los que se presentaba produjeran listas de instrucciones necesarias que eran mucho más pequeñas que "todas esas instrucciones sofisticadas" que se habían incluido en el 6800. [24] Peddle y otros miembros del equipo comenzaron a esbozar el diseño de un microprocesador de tamaño reducido y con características mejoradas. En ese momento, la nueva planta de fabricación de semiconductores de Motorola en Austin, Texas , estaba teniendo dificultades para producir chips MOS, y mediados de 1974 fue el comienzo de una recesión de un año en la industria de los semiconductores. Además, muchos de los empleados de Mesa, Arizona, estaban descontentos con la inminente reubicación en Austin. [25]
La dirección de la división de productos semiconductores de Motorola no mostró ningún interés en la propuesta de Peddle de fabricar un microprocesador de bajo coste. Finalmente, Peddle recibió una carta oficial en la que se le indicaba que dejase de trabajar en el sistema. [26] Peddle respondió a la orden informando a Motorola de que la carta representaba una declaración oficial de "abandono del proyecto" y, como tal, la propiedad intelectual que había desarrollado hasta ese momento era ahora suya. [27] En una entrevista de noviembre de 1975, el presidente de Motorola, Robert Galvin, finalmente estuvo de acuerdo en que el concepto de Peddle era bueno y que la división había perdido una oportunidad: "No elegimos a los líderes adecuados en la división de productos semiconductores". La división se reorganizó y se reemplazó a la dirección. El nuevo vicepresidente del grupo, John Welty, dijo: "La organización de ventas de semiconductores perdió su sensibilidad a las necesidades de los clientes y no podía tomar decisiones rápidas". [28]
Peddle comenzó a buscar fuera de Motorola una fuente de financiación para este nuevo proyecto. En un principio se puso en contacto con el director ejecutivo de Mostek, LJ Sevin , pero éste le denegó su oferta. Sevin admitió más tarde que esto se debía a que temía que Motorola los demandara. [29]
Mientras Peddle visitaba Ford Motor Company en uno de sus viajes de ventas, Bob Johnson, más tarde jefe de la división de automatización de motores de Ford, mencionó que su ex colega John Paivinen se había trasladado a General Instrument y había aprendido por su cuenta el diseño de semiconductores. [30] Paivinen luego formó MOS Technology en Valley Forge, Pensilvania en 1969 con otros dos ejecutivos de General Instrument, Mort Jaffe y Don McLaughlin. Allen-Bradley , un proveedor de componentes electrónicos y controles industriales, adquirió una participación mayoritaria en 1970. [31] La empresa diseñó y fabricó circuitos integrados personalizados para los clientes y había desarrollado una línea de chips para calculadoras. [32]
Después de que los esfuerzos de Mostek fracasaran, Peddle se acercó a Paivinen, quien "lo entendió de inmediato". [33] El 19 de agosto de 1974, Chuck Peddle, Bill Mensch, Rod Orgill, Harry Bawcom, Ray Hirt, Terry Holdt y Wil Mathys dejaron Motorola para unirse a MOS. Mike Janes se unió más tarde. De los diecisiete diseñadores de chips y personas de diseño en el equipo 6800, ocho se fueron. El objetivo del equipo era diseñar y producir un microprocesador de bajo costo para aplicaciones integradas y apuntar a una base de clientes lo más amplia posible. Esto sería posible solo si el microprocesador fuera de bajo costo, y el equipo estableció el precio objetivo para las compras por volumen en $ 5. [ 34] Mensch declaró más tarde que el objetivo no era el precio del procesador en sí, sino crear un conjunto de chips que pudieran venderse a $ 20 para competir con el recientemente presentado Intel 4040 que se vendía por $ 29 en un chipset completo similar. [35]
Los chips se producen imprimiendo múltiples copias del diseño del chip en la superficie de una oblea , un disco delgado de silicio de alta pureza. Se pueden imprimir chips más pequeños en mayor cantidad en la misma oblea, lo que reduce su precio relativo. Además, las obleas siempre incluyen una cierta cantidad de pequeños defectos físicos que se encuentran dispersos por toda la superficie. Cualquier chip impreso en esa ubicación fallará y deberá desecharse. Los chips más pequeños significan que es menos probable que se imprima una sola copia en un defecto. Por ambas razones, el costo del producto final depende en gran medida del tamaño del diseño del chip. [36]
Los chips 6800 originales estaban pensados para tener 180 por 180 milésimas de pulgada (4,6 mm × 4,6 mm), pero el diseño se completó en 212 por 212 milésimas de pulgada (5,4 mm × 5,4 mm), o un área de29,0 mm 2 . [37] Para el nuevo diseño, el objetivo de costo exigía un tamaño de 153 por 168 milésimas de pulgada (3,9 mm × 4,3 mm), o un área de16,6 mm 2 . [38] Se necesitarían varias técnicas nuevas para alcanzar este objetivo.
Dos avances significativos llegaron al mercado justo cuando se estaba diseñando el 6502, lo que supuso una reducción significativa de los costes. El primero fue el paso al NMOS de carga por agotamiento . El 6800 utilizaba un proceso NMOS temprano, el modo de mejora, que requería tres voltajes de suministro. Una de las características principales del 6800 era un duplicador de voltaje integrado que permitía utilizar una única fuente de alimentación de +5 V para +5, −5 y +12 V internamente, a diferencia de otros chips de la época, como el Intel 8080 , que requerían tres pines de alimentación independientes. [39] Aunque esta característica reducía la complejidad de la fuente de alimentación y el diseño de los pines, seguía requiriendo una línea de alimentación independiente para las distintas puertas del chip, lo que aumentaba la complejidad y el tamaño. Al pasar al nuevo diseño de carga por agotamiento, todo lo que se necesitaba era una única fuente de alimentación de +5 V, lo que eliminaba toda esta complejidad. [40]
Otra ventaja era que los diseños de carga de agotamiento consumían menos energía durante la conmutación, por lo que funcionaban a menor temperatura y permitían velocidades de funcionamiento más altas. Otra consecuencia práctica es que la señal de reloj de las CPU anteriores tenía que ser lo suficientemente fuerte como para sobrevivir a toda la disipación a medida que viajaba por los circuitos, lo que casi siempre requería un chip externo independiente que pudiera proporcionar una señal potente. Con los requisitos de energía reducidos del diseño de carga de agotamiento, el reloj podía trasladarse al chip, lo que simplificaba el diseño general de la computadora. Estos cambios redujeron en gran medida la complejidad y el costo de implementar un sistema completo. [40]
Un cambio más amplio que se produjo en la industria fue la introducción del enmascaramiento por proyección . Anteriormente, los chips se modelaban sobre la superficie de la oblea colocando una máscara sobre la superficie de la oblea y luego iluminándola con una luz brillante. Las máscaras a menudo recogían pequeños trozos de suciedad o fotorresistencia al despegarse del chip, lo que causaba fallas en esas ubicaciones en cualquier enmascaramiento posterior. Con diseños complejos como las CPU, se utilizaban 5 o 6 pasos de enmascaramiento de este tipo, y la probabilidad de que al menos uno de estos pasos introdujera una falla era muy alta. En la mayoría de los casos, el 90% de estos diseños tenían fallas, lo que resultaba en un rendimiento del 10%. El precio de los ejemplos funcionales tenía que cubrir el costo de producción del 90% que se desechaba. [41]
En 1973, Perkin-Elmer introdujo el sistema Micralign , que proyectaba una imagen de la máscara sobre la oblea en lugar de requerir contacto directo. Las máscaras ya no acumulaban suciedad de las obleas y duraban alrededor de 100.000 usos en lugar de 10. Esto eliminó los fallos paso a paso y las altas tasas de defectos que se observaban anteriormente en los diseños complejos. El rendimiento de las CPU aumentó inmediatamente del 10% al 60 o 70%. Esto significó que el precio de la CPU se redujo aproximadamente en la misma cantidad y el microprocesador se convirtió de repente en un dispositivo de consumo. [41]
Las líneas de fabricación existentes de MOS Technology se basaban en la antigua tecnología PMOS ; aún no habían comenzado a trabajar con NMOS cuando llegó el equipo. Paivinen prometió tener una línea NMOS en funcionamiento a tiempo para comenzar la producción de la nueva CPU. Cumplió su promesa: la nueva línea estuvo lista en junio de 1975. [42]
Chuck Peddle, Rod Orgill y Wil Mathys diseñaron la arquitectura inicial de los nuevos procesadores. Un artículo de septiembre de 1975 en la revista EDN ofrece este resumen del diseño: [43]
La familia MOS Technology 650X representa un intento consciente de ocho ex empleados de Motorola que trabajaron en el desarrollo del sistema 6800 de crear una pieza que reemplazara y superara al 6800, pero que se vendiera a un precio inferior. Con la ventaja de la retrospección obtenida del proyecto 6800, el equipo de MOS Technology encabezado por Chuck Peddle realizó los siguientes cambios arquitectónicos en la CPU de Motorola...
El cambio principal en términos de tamaño del chip fue la eliminación de los controladores triestado de las salidas del bus de direcciones. Un bus de tres estados tiene estados para "1", "0" y "alta impedancia". El último estado se utiliza para permitir que otros dispositivos accedan al bus, y se utiliza normalmente para multiprocesamiento , o más comúnmente en estas funciones, para acceso directo a memoria (DMA). Si bien es útil, esta característica es muy costosa en términos de circuitos en chip. El 6502 simplemente eliminó esta característica, de acuerdo con su diseño como un controlador económico que se utiliza para tareas específicas y se comunica con dispositivos simples . Peddle sugirió que cualquiera que realmente requiriera este estilo de acceso podría implementarlo con un solo 74158. [44] [a]
La siguiente gran diferencia fue la simplificación de los registros. Para empezar, se eliminó uno de los dos acumuladores . Los registros de uso general, como los acumuladores, deben ser accedidos por muchas partes del decodificador de instrucciones y, por lo tanto, requieren una cantidad significativa de cableado para mover datos hacia y desde su almacenamiento. Dos acumuladores facilitan muchas tareas de codificación, pero le cuestan una complejidad significativa al diseño del chip en sí. [43] Se lograron ahorros adicionales al reducir el registro de pila de 16 a 8 bits, lo que significa que la pila solo podía tener 256 bytes de longitud, lo que era suficiente para su función prevista como microcontrolador. [43] [ verificación fallida ]
El registro de índice IX de 16 bits se dividió en dos, convirtiéndose en X e Y. Más importante aún, el estilo de acceso cambió. En el 6800, IX contenía una dirección de 16 bits que se compensaba con un número de 8 bits almacenado con la instrucción y se sumaban. En el 6502 (y en la mayoría de los demás diseños contemporáneos), la dirección base de 16 bits se almacenaba en la instrucción y se le añadían los 8 bits X o Y. [44]
Finalmente, se simplificó el conjunto de instrucciones, liberando espacio en el decodificador y la lógica de control. De las 72 instrucciones originales del 6800, se implementaron 56. Entre las que se eliminaron se encontraban instrucciones que operaban entre los dos acumuladores del 6800 y varias instrucciones de bifurcación inspiradas en el PDP-11 . [44]
El diseño de alto nivel del chip tuvo que convertirse en dibujos de transistores e interconexiones. En MOS Technology, el "diseño" fue un proceso muy manual realizado con lápices de colores y papel vitela . El diseño consistía en miles de formas poligonales en seis dibujos diferentes; uno para cada capa del proceso de fabricación. Dados los límites de tamaño, el diseño completo del chip tuvo que ser considerado constantemente. Mensch y Paivinen trabajaron en el decodificador de instrucciones [46] mientras que Mensch, Peddle y Orgill trabajaron en la ALU y los registros. Un avance adicional, desarrollado en una fiesta, fue una forma de compartir parte del cableado interno para permitir que la ALU se redujera en tamaño. [47]
A pesar de sus mejores esfuerzos, el diseño final terminó siendo 5 milésimas de ancho. [48] Los primeros 6502 chips tenían 168 por 183 milésimas de ancho (4,3 mm × 4,6 mm), para un área de19,8 mm 2 . La versión original del procesador no tenía capacidad de rotación a la derecha (ROR), por lo que la instrucción se omitió de la documentación original. La siguiente iteración del diseño redujo el tamaño del chip y agregó la capacidad de rotación a la derecha, y la ROR se incluyó en la documentación revisada. [49] [b]
MOS introduciría dos microprocesadores basados en el mismo diseño subyacente: el 6501 se conectaría al mismo zócalo que el Motorola 6800, mientras que el 6502 reorganizó el pinout para admitir un oscilador de reloj en chip. Ambos funcionarían con otros chips de soporte diseñados para el 6800. No ejecutarían el software del 6800 porque tenían un conjunto de instrucciones diferente, registros diferentes y, en su mayoría, modos de direccionamiento diferentes. [3] Rod Orgill fue responsable del diseño del 6501; había ayudado a John Buchanan en Motorola en el 6800. Bill Mensch hizo el 6502; fue el diseñador del adaptador de interfaz periférica (PIA) 6820 en Motorola. Harry Bawcom, Mike Janes y Sydney-Anne Holt ayudaron con el diseño.
La presentación de los microprocesadores de MOS Technology fue diferente del tradicional lanzamiento de un producto que duraba meses. La primera tirada de un nuevo circuito integrado se utiliza normalmente para pruebas internas y se comparte con clientes selectos como "muestras de ingeniería". Estos chips suelen tener uno o dos defectos de diseño menores que se corregirán antes de que comience la producción. El objetivo de Chuck Peddle era vender la primera tirada de chips 6501 y 6502 a los asistentes a la feria comercial WESCON en San Francisco a partir del 16 de septiembre de 1975. Peddle fue un portavoz muy eficaz y los microprocesadores de MOS Technology recibieron una amplia cobertura en la prensa especializada. Una de las primeras fue una historia de página completa sobre los microprocesadores MCS6501 y MCS6502 en la edición del 24 de julio de 1975 de la revista Electronics . [53] También aparecieron artículos en EE Times (24 de agosto de 1975), [54] EDN (20 de septiembre de 1975), Electronic News (3 de noviembre de 1975), Byte (noviembre de 1975) [55] y Microcomputer Digest (noviembre de 1975). [56] Los anuncios del 6501 aparecieron en varias publicaciones la primera semana de agosto de 1975. El 6501 estaría a la venta en Wescon por 20 dólares cada uno. [57] En septiembre de 1975, los anuncios incluían tanto el microprocesador 6501 como el 6502. El 6502 costaría sólo 25 dólares (equivalente a 142 dólares en 2023). [58]
Cuando MOS Technology llegó a Wescon, se encontró con que a los expositores no se les permitía vender nada en el piso de exhibición. Alquilaron la Suite MacArthur en el Hotel St. Francis y dirigieron a los clientes allí para comprar los procesadores. En la suite, los procesadores se almacenaban en grandes frascos para dar a entender que los chips estaban en producción y disponibles. Los clientes no sabían que la mitad inferior de cada frasco contenía chips no funcionales. [59] Los chips costaban $ 20 y $ 25, mientras que el paquete de documentación costaba $ 10 adicionales . Se animó a los usuarios a hacer fotocopias de los documentos, una forma económica para MOS Technology de distribuir información del producto. Las hojas de datos preliminares enumeraban solo 55 instrucciones excluyendo la instrucción Rotate Right (ROR) que no era compatible con estos primeros chips. Las revisiones en Byte y EDN señalaron la falta de la instrucción ROR. La siguiente revisión del diseño solucionó este problema y la hoja de datos de mayo de 1976 enumeraba 56 instrucciones. Peddle quería que todos los ingenieros y aficionados interesados tuvieran acceso a los chips y a la documentación, mientras que otras empresas de semiconductores sólo querían tratar con clientes "serios". Por ejemplo, Signetics estaba presentando el microprocesador 2650 y sus anuncios pedían a los lectores que escribieran para solicitar información en papel membretado de la empresa. [60]
Alfiler | 6800 | 6501 | 6502 |
---|---|---|---|
2 | Detener | Listo | Listo |
3 | ∅1 (pulgada) | ∅1 (pulgada) | ∅1 (fuera) |
5 | Dirección de memoria válida | Dirección de memoria válida | CAROLINA DEL NORTE |
7 | Autobús disponible | Autobús disponible | SINCRONIZACIÓN |
36 | Habilitación de bus de datos | Habilitación de bus de datos | CAROLINA DEL NORTE |
37 | ∅2 (pulgadas) | ∅2 (pulgadas) | ∅0 (pulgadas) |
38 | CAROLINA DEL NORTE | CAROLINA DEL NORTE | Establecer indicador de desbordamiento |
39 | Control de tres estados | CAROLINA DEL NORTE | ∅2 (fuera) |
La introducción del 6501/6502 en forma impresa y en Wescon fue un enorme éxito. La desventaja fue que la amplia cobertura de prensa atrajo la atención de Motorola. En octubre de 1975, Motorola redujo el precio de un solo microprocesador 6800 de $175 a $69 . El kit de diseño del sistema de $300 se redujo a $150 y ahora venía con una placa de circuito impreso. [61] El 3 de noviembre de 1975, Motorola solicitó una orden judicial en la Corte Federal para impedir que MOS Technology fabricara y vendiera productos de microprocesadores. También presentaron una demanda alegando violación de patentes y apropiación indebida de secretos comerciales. Motorola afirmó que siete ex empleados se unieron a MOS Technology para crear los productos de microprocesadores de esa empresa. [62]
Motorola era una empresa multimillonaria con un caso plausible y abogados caros. El 30 de octubre de 1974, Motorola había presentado numerosas solicitudes de patentes sobre la familia de microprocesadores y se le concedieron veinticinco patentes. La primera fue en junio de 1976 y la segunda fue a Bill Mensch el 6 de julio de 1976, para el diseño del chip 6820 PIA. Estas patentes cubrían el bus 6800 y cómo los chips periféricos interactuaban con el microprocesador. [63] Motorola comenzó a fabricar transistores en 1950 y tenía una cartera de patentes de semiconductores. Allen-Bradley decidió no luchar en este caso y vendió su participación en MOS Technology a los fundadores. Cuatro de los antiguos ingenieros de Motorola fueron nombrados en la demanda: Chuck Peddle, Will Mathys, Bill Mensch y Rod Orgill. Todos fueron nombrados inventores en las solicitudes de patente 6800. Durante el proceso de descubrimiento, Motorola descubrió que un ingeniero, Mike Janes, había ignorado las instrucciones de Peddle y había llevado sus documentos de diseño del 6800 a MOS Technology. [64] En marzo de 1976, la ahora independiente MOS Technology se estaba quedando sin dinero y tuvo que resolver el caso. Acordaron abandonar el procesador 6501, pagarle a Motorola 200.000 dólares y devolver los documentos que Motorola sostenía que eran confidenciales. Ambas compañías acordaron conceder licencias cruzadas sobre patentes de microprocesadores. [65] En mayo de ese mismo año, Motorola redujo el precio de un solo microprocesador 6800 a 35 dólares . En noviembre, Commodore había adquirido MOS Technology. [66] [67]
Con los problemas legales a sus espaldas, MOS todavía tenía el problema de conseguir que los desarrolladores probaran su procesador, lo que llevó a Chuck Peddle a diseñar el ordenador de placa única MDT-650 ("terminal de desarrollo de microordenadores") . Otro grupo dentro de la empresa diseñó el KIM-1 , que se vendió semicompleto y podía convertirse en un sistema utilizable con la adición de un terminal de ordenador de terceros y una unidad de casete compacta . Si bien se vendió bien en su mercado objetivo, la empresa descubrió que el KIM-1 también se vendió bien entre los aficionados y los manitas. El sistema de control, formación y desarrollo Rockwell AIM-65 relacionado también tuvo buenos resultados. El software del AIM 65 se basaba en el del MDT. Otro producto más o menos similar fue el Synertek SYM-1 .
Uno de los primeros usos "públicos" del diseño fue el microordenador Apple I , introducido en 1976. El 6502 se utilizó a continuación en el Commodore PET y el Apple II , [68] ambos lanzados en 1977. Más tarde se utilizó en los ordenadores Atari de 8 bits , Acorn Atom , BBC Micro , [68] VIC-20 y otros diseños tanto para ordenadores domésticos como empresariales, como los ordenadores Ohio Scientific y Oric . El 6510 , un sucesor directo del 6502 con un puerto de E/S digital y un bus de direcciones triestado , fue la CPU utilizada en el ordenador doméstico más vendido [69] [70] Commodore 64 .
Otro uso importante de la familia 6500 fue en los videojuegos. El primero en hacer uso del diseño del procesador fue el Atari VCS de 1977, posteriormente rebautizado como Atari 2600. El VCS utilizó una variante del 6502 llamada 6507 , que tenía menos pines, por lo que solo podía direccionar 8 KB de memoria. Se venderían millones de consolas Atari, cada una con un procesador MOS. Otro uso significativo fue el de Nintendo Entertainment System y Famicom. El 6502 utilizado en la NES fue una segunda versión de origen de Ricoh , un sistema parcial en un chip , que carecía del modo decimal codificado en binario pero añadía 22 registros mapeados en memoria y hardware en el chip para la generación de sonido, la lectura del joystick y la lista de sprites DMA . Llamado 2A03 en las consolas NTSC y 2A07 en las consolas PAL (la diferencia es el divisor de frecuencia de reloj y una tabla de búsqueda para las frecuencias de muestreo de audio), este procesador fue producido exclusivamente para Nintendo .
El 6502 o variantes se utilizaron en todas las unidades de disquete de Commodore para todas sus computadoras de 8 bits, desde la línea PET hasta el Commodore 128D, incluido el Commodore 64. Las unidades PET de 8 pulgadas tenían dos procesadores 6502. Atari utilizó el mismo 6507 utilizado en el Atari VCS para sus unidades de disco 810 y 1050 utilizadas para toda su línea de computadoras de 8 bits, desde el 400/800 hasta el XEGS.
En la década de 1980, una popular revista de electrónica, Elektor/Elektuur, utilizó el procesador en su placa de desarrollo de microprocesadores Junior Computer .
El sucesor CMOS del 6502, el WDC 65C02 , también se utilizó en ordenadores domésticos y consolas de videojuegos. Apple lo utilizó en la línea Apple II a partir del Apple IIc y variantes posteriores del Apple IIe y también ofreció un kit para actualizar los sistemas IIe más antiguos con el nuevo procesador. [71] El chip Hudson Soft HuC6280 utilizado en el TurboGrafx-16 se basaba en un núcleo 65C02. El Atari Lynx utilizó un chip personalizado llamado "Mikey" [72] diseñado por Epyx que incluía una celda con licencia VLSI VL65NC02. La variante G65SC12 de GTE Microcircuits (rebautizada como California Micro Devices) se utilizó en el BBC Master . Algunos modelos del BBC Master también incluían un coprocesador G65SC102 adicional.
1 5 | 1 4 | 1 3 | 1 2 | 1 1 | 1 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | (posición de bit) |
Registros principales | ||||||||||||||||
A | Un acumulador | |||||||||||||||
Registros de índice | ||||||||||||||||
incógnita | Índice X | |||||||||||||||
Y | Índice Y | |||||||||||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | ES | Puntero de pila | |||||||
Contador de programas | ||||||||||||||||
ordenador personal | Contador de programas | |||||||||||||||
Registro de estado | ||||||||||||||||
norte | V | - | B | D | I | O | do | Indicadores del procesador |
El 6502 es un procesador little-endian de 8 bits con un bus de direcciones de 16 bits . Las versiones originales se fabricaron utilizando un chip de tecnología de proceso de 8 µm [73] con un tamaño de chip de 3,9 mm × 4,3 mm (153 por 168 milésimas de pulgada), para un área total de16,6 mm2 . [ 38]
La lógica interna funciona a la misma velocidad que la frecuencia de reloj externa. Presentaba una secuencia simple: en cada ciclo, el procesador extrae un byte de la memoria y procesa otro. Esto significa que cualquier instrucción individual puede tardar tan solo dos ciclos en completarse, dependiendo de la cantidad de operandos que utilice esa instrucción. A modo de comparación, el Zilog Z80 requería dos ciclos para extraer memoria y el tiempo mínimo de instrucción era de cuatro ciclos. Por lo tanto, a pesar de las velocidades de reloj más bajas en comparación con los diseños de la competencia, generalmente en el entorno de 1 a 2400 bytes, el tiempo de instrucción mínimo era de cuatro ciclos.A 2 MHz , el rendimiento del 6502 era competitivo con las CPU que usaban relojes significativamente más rápidos. Esto se debe en parte a una máquina de estados simple implementada mediante lógica combinacional (sin reloj) en mayor medida que en muchos otros diseños; el reloj de dos fases (que proporciona dos sincronizaciones por ciclo) podía controlar así directamente el ciclo de la máquina.
Este diseño también dio lugar a una nota de diseño útil del 6502 y del 6800 anterior. Como el chip solo accedía a la memoria durante una determinada parte del ciclo de reloj, y esta duración se indicaba mediante el pin de salida de reloj φ2-low, otros chips de un sistema podían acceder a la memoria durante esos momentos en los que el 6502 estaba fuera del bus. Esto se conocía a veces como "acceso oculto". Esta técnica era muy utilizada por los sistemas informáticos; utilizaban una memoria capaz de acceder a 2 MHz y luego ejecutaban la CPU a 1 MHz. Esto garantizaba que la CPU y el hardware de vídeo pudieran intercalar sus accesos, con un rendimiento total que coincidiera con el del dispositivo de memoria. Como este acceso se realizaba cada dos ciclos, no era necesario indicar a la CPU que evitara utilizar el bus, lo que hacía que este tipo de acceso fuera fácil de implementar sin ninguna lógica de bus. [74] Cuando memorias más rápidas estuvieron disponibles en la década de 1980, las máquinas más nuevas podían usar esta misma técnica mientras funcionaban a velocidades de reloj más altas; el BBC Micro usó una RAM más nueva que le permitió a su CPU funcionar a 2 MHz mientras seguía usando las mismas técnicas de uso compartido de bus.
Al igual que la mayoría de las CPU simples de la época, el chip dinámico NMOS 6502 no se secuencia mediante microcódigo, sino que se decodifica directamente mediante un PLA dedicado . El decodificador ocupaba aproximadamente el 15 % del área del chip. Esto se compara con los diseños posteriores basados en microcódigo, como el Motorola 68000 , donde la ROM de microcódigo y el motor de decodificación representaban aproximadamente un tercio de las puertas del sistema.
Al igual que su precursor, el 6800, el 6502 tiene muy pocos registros . Entre ellos se incluyen [75]
A
= registro acumulador de 8 bitsP
= registro de estado de 7 bits [76] n
= negativov
= desbordamientob
= ruptura (solo en valores de pila, no en hardware [77] )d
= decimali
= deshabilitar interrupciónz
= ceroc
= llevarPC
= contador de programa de 16 bitsS
= puntero de pila de 8 bitsX
= registro de índice de 8 bitsY
= registro de índice de 8 bitsEsto se compara con un competidor contemporáneo, el Intel 8080 , que también tiene un acumulador de 8 bits y un contador de programa de 16 bits, pero tiene seis registros de 8 bits de propósito general (que se pueden combinar en tres punteros de 16 bits) y un puntero de pila de 16 bits más grande. [78]
Para compensar un poco la falta de registros, el 6502 incluye un modo de direccionamiento de página cero que utiliza un byte de dirección en la instrucción en lugar de los dos necesarios para direccionar la página completa.64 KB de memoria. Esto proporciona un acceso rápido a la primera256 bytes de RAM mediante el uso de instrucciones más cortas. Por ejemplo, una instrucción para agregar un valor de la memoria al valor del acumulador normalmente sería de tres bytes, uno para la instrucción y dos para la dirección de 16 bits. El uso de la página cero reduce esto a una dirección de 8 bytes, lo que reduce la longitud total de la instrucción a dos bytes y, por lo tanto, mejora el rendimiento de la instrucción.
El espacio de direcciones de la pila está conectado directamente a la página de memoria $01
, es decir, al rango de direcciones $0100
– $01FF
( 256
– 511
). El acceso del software a la pila se realiza a través de cuatro instrucciones de modo de direccionamiento implícito, cuyas funciones son empujar o sacar (extraer) el acumulador o el registro de estado del procesador. La misma pila también se utiliza para llamadas a subrutinas a través de las instrucciones JSR (saltar a subrutina) y RTS (regresar desde subrutina) y para el manejo de interrupciones .
El chip utiliza los registros de índice y pila de manera efectiva con varios modos de direccionamiento , incluido un modo rápido de "página directa" o "página cero", similar al que se encuentra en el PDP-8 , que accede a las ubicaciones de memoria de las direcciones 0 a 255 con una única dirección de 8 bits (ahorrándose el ciclo normalmente requerido para obtener el byte de orden superior de la dirección); el código para el 6502 usa la página cero de manera muy similar a como el código para otros procesadores usaría registros. En algunas microcomputadoras basadas en el 6502 con un sistema operativo, el sistema operativo usa la mayor parte de la página cero, dejando solo un puñado de ubicaciones para el usuario.
Los modos de direccionamiento también incluyen implícito (instrucciones de 1 byte); absoluto (3 bytes); absoluto indexado (3 bytes); página cero indexada (2 bytes); relativo (2 bytes); acumulador (1); indirecto,x e indirecto,y (2); e inmediato (2). El modo absoluto es un modo de propósito general. Las instrucciones de bifurcación utilizan un desplazamiento de 8 bits con signo en relación con la instrucción después de la bifurcación; por lo tanto, el rango numérico −128..127 se traduce en 128 bytes hacia atrás y 127 bytes hacia adelante desde la instrucción que sigue a la bifurcación (que es 126 bytes hacia atrás y 129 bytes hacia adelante desde el inicio de la instrucción de bifurcación). El modo acumulador opera en el registro acumulador y no necesita ningún dato de operando . El modo inmediato utiliza un operando literal de 8 bits .
Los modos indirectos son útiles para el procesamiento de matrices y otros bucles. Con el modo "(indirect),y" de 5/6 ciclos, el registro Y de 8 bits se agrega a una dirección base de 16 bits leída desde la página cero, que se encuentra a un solo byte después del código de operación. Por lo tanto, el registro Y es un registro de índice en el sentido de que se utiliza para almacenar un índice real (a diferencia del registro X en el 6800, donde se almacenaba directamente una dirección base y al que se podía agregar un desplazamiento inmediato). Incrementar el registro de índice para recorrer la matriz byte a byte solo requiere dos ciclos adicionales. Con el modo "(indirect,x)" menos utilizado, la dirección efectiva para la operación se encuentra en la dirección de la página cero formada al agregar el segundo byte de la instrucción al contenido del registro X. Al usar los modos indexados, la página cero actúa efectivamente como un conjunto de hasta 128 registros de dirección adicionales (aunque muy lentos).
El 6502 es capaz de realizar sumas y restas en binario o decimal codificado en binario . Al colocar la CPU en modo BCD con la SED
instrucción (establecer indicador D) se realiza una aritmética decimal, en la que $99 + $01
se activaría $00 y se activaría el indicador de acarreo (C). En modo binario ( CLD
borrar indicador D), la misma operación daría como resultado $9A y se borraría el indicador de acarreo. Aparte del BASIC de Atari , el modo BCD rara vez se utilizó en aplicaciones de computadoras domésticas.
Consulte el artículo ¡Hola mundo! para ver un ejemplo simple pero característico del lenguaje ensamblador 6502 .
Los códigos de operación de la instrucción 6502 ( opcodes ) tienen 8 bits de longitud y tienen la forma general AAABBBCC, donde AAA y CC definen el opcode, y BBB define el modo de direccionamiento. [79] Por ejemplo, la ORA
instrucción realiza un OR bit a bit en los bits del acumulador con otro valor. El opcode de la instrucción tiene la forma 000bbb01, donde bbb puede ser 010 para un valor de modo inmediato (constante), 001 para una dirección fija de página cero, 011 para una dirección absoluta, y así sucesivamente. [79] Este patrón no es universal, ya que hay excepciones, pero permite que los valores del opcode se conviertan fácilmente en mnemotécnicos de ensamblaje para la mayoría de las instrucciones, manejando los casos extremos con código de propósito especial. [79]
De los 256 códigos de operación posibles disponibles utilizando un patrón de 8 bits, el 6502 original utiliza 151 de ellos, organizados en 56 instrucciones con (posiblemente) múltiples modos de direccionamiento . Dependiendo de la instrucción y el modo de direccionamiento, el código de operación puede requerir cero, uno o dos bytes adicionales para los operandos. Por lo tanto, las instrucciones de máquina 6502 varían en longitud de uno a tres bytes. [80] [81] El operando se almacena en el formato little-endian habitual del 6502 .
El 65C816 , el descendiente CMOS de 16 bits del 6502, también admite direccionamiento de 24 bits, lo que da como resultado instrucciones ensambladas con operandos de tres bytes, también dispuestos en formato little-endian.
Los 105 códigos de operación restantes no están definidos. En el diseño original, no se utilizaron instrucciones donde los 4 bits de orden inferior ( nibble ) eran 3, 7, B o F, lo que dejaba espacio para una expansión futura. Del mismo modo, la columna $2x tenía una sola entrada, . Las 25 ranuras vacías restantes se distribuyeron. Algunas de las ranuras vacías se utilizaron en el 65C02 para proporcionar nuevas instrucciones y variaciones de las existentes con nuevos modos de direccionamiento. Las instrucciones $Fx inicialmente se dejaron libres para permitir que los proveedores externos añadieran sus propias instrucciones, pero las versiones posteriores del 65C02 estandarizaron un conjunto de instrucciones de manipulación de bits desarrolladas por Rockwell Semiconductor .LDX #constant
Una instrucción en lenguaje ensamblador 6502 consta de una mnemotecnia de instrucción de tres caracteres seguida de cualquier operando . Las instrucciones que no toman un operando separado sino que apuntan a un solo registro según el modo de direccionamiento combinan el registro de destino en la mnemotecnia de instrucción, por lo que el ensamblador utiliza INX
en lugar de para INC X
incrementar el registro X.
Matriz de código de operación para el conjunto de instrucciones 6502 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Modos de direccionamiento: A – acumulador, # – inmediato, zpg – página cero, abs – absoluto, ind – indirecto, X – indexado por registro X, Y – indexado por registro Y, rel – relativo | ||||||||||||
Mordisco alto | Mordisco bajo | |||||||||||
0 | 1 | 2 | 4 | 5 | 6 | 8 | 9 | A | do | D | mi | |
0 | Quebrado | ORA ( ind , X) | ORA zpg | Lenguaje de señas zpg | PHP | ORAL # | Lenguaje de señas A | Abdominales ORA | Abdominales en lenguaje de señas | |||
1 | Rel . BPL | ORA ( ind ),Y | ORA zpg ,X | Lenguaje de señas zpg , X | CVX | ORA abs ,Y | ORA abdominales , X | Abdominales en lenguaje de señas , X | ||||
2 | Abdominales JSR | Y ( ind ,X) | BIT zpg | Y zpg | rol zpg | Partido Liberal Popular | Y # | ROL A | Abdominales BIT | Y abdominales | Abdominales ROL | |
3 | IMC relativo | Y ( ind ),Y | Y zpg ,X | ROL zpg , X | SEGUNDO | Y abs ,Y | Y abs ,X | ROL abdominales , X | ||||
4 | RTI | EOR ( ind , X) | EOR zpg | LSR zpg | PHA | EOR # | LSR A | Abdominales JMP | Absorción EOR | Abdominales LSR | ||
5 | Rel . BVC | EOR ( ind ),Y | EOR zpg , X | LSR zpg , X | CLI | EOR abs ,Y | EOR abs ,X | ABS LSR , X | ||||
6 | Estrategia en tiempo real | Convertidor analógico-digital (ADC) ( ind , X) | Convertidor analógico- digital ( ADC) | ROR zpg | EPL | Conductor ad hoc # | ROR A | JMP ( ind .) | Abdominales ADC | Abdominales ROR | ||
7 | Rel . BVS | ADC ( ind ),Y | Convertidor analógico-digital zpg , X | ROR zpg , X | SEI | ADC abs ,Y | Absorción ADC , X | Absorción ROR , X | ||||
8 | STA ( ind , X) | Estilo zpg | STA zpg | STX zpg | Dey | Acetato de tereftalato (TXA) | Abdominales estilo STY | Abdominales STA | Abdominales STX | |||
9 | Rel . BCC | STA ( ind ),Y | Estilo zpg , X | STA zpg , X | STX zpg ,Y | Gracias por su atencion | STA abdominales , Y | Tesis | STA abdominales , X | |||
A | LDY # | LDA ( ind , X) | Número de serie LDX | LDY zpg | LDA zpg | LDX- zpg | TAY | LDA # | IMPUESTO | Abdominales LDY | Abdominales LDA | Abdominales LDX |
B | Rel . BCS | LDA ( ind ),Y | LDY zpg , X | LDA zpg ,X | LDX zpg ,Y | VLC | LDA abs ,Y | Bolsa de valores de Toronto | Abdominales LDY , X | LDA abdominales , X | LDX abs ,Y | |
do | CPY # | CMP ( ind , X) | CPY- zpg | CMP zpg | Declive zpg | Nueva York | CMP # | DESEMPEÑO | Abdominales CPY | Abdominales CMP | Abdominales DEC | |
D | Rel . BNE | CMP ( ind ),Y | CMP zpg , X | Declive zpg , X | Enfermedad pulmonar obstructiva crónica (EPOC) | CMP abs ,Y | CMP abdominales , X | DEC abs ,X | ||||
mi | CX # | SBC ( ind , X) | CPX- ZPG | SBC ZPG | INC . zpg | INX | Número de serie del SBC | NOP | Abdominales CPX | Abdominales SBC | Abdominales INC | |
F | Rel . BEQ | SBC ( ind ),Y | SBC zpg , X | INC zpg ,X | Desechar | Abdominales SBC , Y | Abdominales SBC , X | INC. Abs. , X | ||||
Los códigos de operación en blanco (por ejemplo, F2 ) y todos los códigos de operación cuyos nibbles bajos son 3 , 7 , B y F no están definidos en el conjunto de instrucciones 6502. |
El siguiente código fuente en lenguaje ensamblador 6502 corresponde a una subrutina denominada , que copia una cadena de caracteres terminada en cero de una ubicación a otra, convirtiendo caracteres de letras mayúsculas en letras minúsculas. La cadena que se copia es la "fuente" y la cadena en la que se almacena la fuente convertida es el "destino".TOLOWER
0080 0080 00 040082 00 05 0600 0600 A0 00 0602 B1 800604 F0 11 0606 C9 410608 90 06 060A C9 5B060C B0 02 060E 09 20 0610 91 820612 C8 0613 D0 ED 0615 38 0616 60 0617 91 820619 18 061A 60 061B | ; TOLOWER: ; ; Convierte una cadena de caracteres terminada en nulo a minúsculas. ; La longitud máxima de la cadena es de 255 caracteres, más el denominador de término nulo. ; ; Parámetros: ; ; SRC – Dirección de la cadena de origen ; DST – Dirección de la cadena de destino ; ORG $0080 ; SRC .WORD $0400 ;puntero de la cadena de origen DST .WORD $0500 ;puntero de la cadena de destino ; ORG $0600 ;dirección de inicio de la ejecución ; TOLOWER LDY # $00 ;índice de inicio ; LOOP LDA ( SRC ), Y ;obtener de la cadena de origen BEQ DONE ;fin de la cadena ; CMP # 'A' ;si es menor que el alfabeto UC... BCC SKIP ;copiar sin cambios ; CMP # 'Z' + 1 ;si es mayor que el alfabeto UC... BCS SKIP ;copiar sin cambios ; ORA # %00100000 ;convertir a minúsculas ; SKIP STA ( DST ), Y ;guardar en cadena de destino INY ;rellenar índice BNE LOOP ;siguiente carácter ; ; NOTA: Si Y se envuelve, la cadena de destino quedará en un estado indefinido. ; Configuramos el acarreo para indicar esto a la función que llama. ; SEC ;informar error de cadena demasiado larga &... RTS ;regresar al llamador ; DONE STA ( DST ), Y ;terminar cadena de destino CLC ;informar conversión completada &... RTS ;regresar al llamador ; .END |
La entrada de interrupción no enmascarable (NMI) del procesador es sensible a los flancos , lo que significa que la interrupción se activa por el flanco descendente de la señal en lugar de por su nivel. La implicación de esta característica es que no se admite fácilmente un circuito de interrupción OR cableado . Sin embargo, esto también evita que se produzcan interrupciones NMI anidadas hasta que el hardware vuelva a desactivar la entrada NMI, a menudo bajo el control del controlador de interrupciones NMI .
La activación simultánea de las líneas de interrupción de hardware NMI e IRQ (enmascarables) hace que se ignore la IRQ. Sin embargo, si la línea IRQ permanece activada después de la activación de la NMI, el procesador responderá inmediatamente a la IRQ, ya que la IRQ es sensible al nivel . Por lo tanto, se estableció una especie de prioridad de interrupción incorporada en el diseño del 6502.
El indicador B se establece mediante el muestreo periódico de la salida del detector de borde NMI y la entrada IRQ del 6502. Sin embargo, la señal IRQ que se activa a nivel bajo solo se reconoce si el indicador I permite IRQ. Si de esta manera se detecta una solicitud NMI o una IRQ (enmascarable), el indicador B se establece en cero y hace que el procesador ejecute la instrucción BRK a continuación en lugar de ejecutar la siguiente instrucción según el contador de programa. [82] [83]
La instrucción BRK luego coloca el estado del procesador en la pila, con el bit de la bandera B establecido en cero. Al final de su ejecución, la instrucción BRK restablece el valor de la bandera B a uno. Esta es la única forma en que se puede modificar la bandera B. Si una instrucción distinta de la instrucción BRK coloca la bandera B en la pila como parte del estado del procesador [84], la bandera B siempre tiene el valor uno.
Una transición de alto a bajo en el pin de entrada SO activará el bit de estado de desbordamiento del procesador. Esto se puede utilizar para una respuesta rápida al hardware externo. Por ejemplo, un controlador de dispositivo de sondeo de alta velocidad puede sondear el hardware una vez en solo tres ciclos utilizando una instrucción Branch-on-oVerflow-Clear ( BVC
) que se ramifica a sí misma hasta que se activa el desbordamiento mediante una transición descendente SO. El Commodore 1541 y otras unidades de disquete Commodore utilizan esta técnica para detectar cuándo el serializador está listo para transferir otro byte de datos del disco. El diseño del hardware y el software del sistema debe garantizar que no se produzca un SO durante el procesamiento aritmético e interrumpa los cálculos.
El 6502 fue la variante más prolífica de la familia de la serie 65xx de MOS Technology .
Los modelos 6501 y 6502 tienen encapsulados DIP de 40 pines ; los modelos 6503, 6504, 6505 y 6507 son versiones DIP de 28 pines, lo que reduce el costo del chip y de la placa de circuito. En todas las versiones de 28 pines, se reduce el número de pines al omitir algunos de los pines de dirección de orden superior y varias combinaciones de pines de función, lo que hace que esas funciones no estén disponibles.
Por lo general, los 12 pines que se omiten para reducir el número de pines de 40 a 28 son los tres pines no conectados (NC), uno de los dos pines Vss, uno de los pines de reloj, el pin SYNC, el pin de desbordamiento de conjunto (SO), la interrupción enmascarable o la interrupción no enmascarable (NMI) y las cuatro líneas de dirección más significativas (A12–A15). La omisión de cuatro pines de dirección reduce la direccionabilidad externa a 4 KB (de los 64 KB del 6502), aunque el registro de PC interno y todos los cálculos de dirección efectiva siguen siendo de 16 bits .
El 6507 omite ambos pines de interrupción para incluir la línea de dirección A12, lo que proporciona 8 KB de direccionabilidad externa pero no capacidad de interrupción. El 6507 se utilizó en la popular consola de videojuegos Atari 2600 , cuyo diseño divide el espacio de memoria de 8 KB a la mitad, asignando la mitad inferior a la RAM interna de la consola y los periféricos, y la mitad superior al cartucho de juego, por lo que los cartuchos Atari 2600 tienen un límite de dirección de 4 KB (y el mismo límite de capacidad a menos que el cartucho contenga circuitos de conmutación de bancos ).
Un ordenador popular basado en el 6502, el Commodore 64 , utilizaba una CPU 6502 modificada, la 6510. A diferencia de los 6503–6505 y 6507, el 6510 es un chip de 40 pines que añade hardware interno: un puerto de E/S paralelo de 6 bits asignado a las direcciones 0000 y 0001. El 6508 es otro chip que, al igual que el 6510, añade hardware interno: 256 bytes de SRAM y un puerto de E/S de 8 bits similar a los que presenta el 6510. Aunque estos chips no tienen un número de pines reducido en comparación con el 6502, necesitan nuevos pines para el puerto de E/S paralelo añadido. En este caso, no hay líneas de dirección entre los pines eliminados.
Compañía | Modelo | Descripción |
---|---|---|
6502 | Un chip de 1 MHz utilizado en KIM-1 y otras computadoras de placa única a mediados de la década de 1970. | |
6502A | Un chip de 1,5 MHz utilizado en Asteroids Deluxe y de 2 MHz en BBC Micro | |
6502B | Versión del 6502 capaz de funcionar a una velocidad máxima de 3 MHz en lugar de 2 MHz. La B se utilizó tanto en el Apple III como en los primeros ordenadores Atari de 8 bits, cada uno de ellos funcionando a ~1,8 MHz. [c] | |
6502C | El 6502C “oficial” era una versión del 6502 original capaz de funcionar hasta a 4 MHz. No debe confundirse con SALLY, un 6502 personalizado diseñado para Atari (y a veces denominado por ellos como "6502C" [85] ) ni con el 65C02 de nombre similar . | |
SALLY, C014806, "6502C" | Variante personalizada del modelo 6502 diseñada para Atari, utilizada en posteriores ordenadores Atari de 8 bits y en las consolas Atari 5200 y Atari 7800 . Tiene una señal HALT en el pin 35 y la señal R/W en el pin 36 (estos pines no están conectados (N/C) en un 6502 estándar). Al poner HALT en un nivel bajo, se bloquea el reloj y se pausa el procesador. Esto se utilizó para permitir que los circuitos de video tuvieran acceso directo a la memoria (DMA). [86] Aunque a veces se lo denomina "6502C" en la documentación de Atari, no es lo mismo que el 6502C "oficial" y el chip en sí nunca está marcado como tal. [85] | |
MOSCÚ | 6503 | Capacidad de direccionamiento de memoria reducida (4 KB) y sin entrada RDY, en un paquete DIP de 28 pines (con la fase 1 (OUT), SYNC, Vss redundante y pines SO del 6502 también omitidos). [87] |
MOSCÚ | 6504 | Capacidad de direccionamiento de memoria reducida (8 KB), sin NMI y sin entrada RDY, en un paquete DIP de 28 pines (con la fase 1 (OUT), SYNC, Vss redundante y pines SO del 6502 también omitidos). [87] |
MOSCÚ | 6505 | Capacidad de direccionamiento de memoria reducida (4 KB) y sin NMI, en un paquete DIP de 28 pines (con la fase 1 (OUT), SYNC, Vss redundante y pines SO del 6502 también omitidos). [87] |
MOSCÚ | 6506 | Capacidad de direccionamiento de memoria reducida (4 KB), sin NMI y sin entrada RDY, pero con los 3 pines de reloj del 6502 (es decir, un reloj de salida de 2 fases), en un paquete DIP de 28 pines (con los pines SYNC, Vss redundantes y SO del 6502 también omitidos). [87] |
MOSCÚ | 6507 | Capacidad de direccionamiento de memoria reducida (8 KB) y sin interrupciones, en un paquete DIP de 28 pines (con los pines de fase 1 (OUT), SYNC, Vss redundantes y SO del 6502 también omitidos). [87] Este chip se utilizó en el sistema de videojuegos Atari 2600 . |
MOSCÚ | 6508 | Tiene un puerto de entrada/salida de 8 bits incorporado y 256 bytes de RAM estática interna. |
MOSCÚ | 6509 | Puede direccionar hasta 1 MB de RAM como 16 bancos de 64 KB y se utilizó en la serie Commodore CBM-II . |
MOSCÚ | 6510 | Tiene un puerto de entrada/salida programable de 6 bits incorporado y se utilizó en el Commodore 64. El 8500 es efectivamente una versión HMOS del 6510 y lo reemplazó en versiones posteriores del C64. |
MOSCÚ | 6512 6513 6514 6515 | Los modelos MOS Technology 6512, 6513, 6514 y 6515 dependen de un reloj externo, en lugar de utilizar un generador de reloj interno como el 650x (por ejemplo, el 6502). Esto se utilizó con ventaja en algunos diseños en los que los relojes podían funcionar de forma asimétrica, lo que aumentaba el rendimiento general de la CPU. El 6512 es un 6502 con una entrada de reloj de 2 fases para un oscilador de reloj externo, en lugar de un oscilador de reloj integrado. [87] El 6513, 6514 y 6515 son de manera similar equivalentes a (respectivamente) un 6503, 6504 y 6505 con la misma entrada de reloj de 2 fases. [87] El 6512 se utilizó en la BBC Micro B+64 . |
Ricoh | RP2A03 RP2A07 | Variantes 6502 sin licencia que funcionan a ~1,8 MHz [c], incluida una unidad de procesamiento de audio pero sin el modo BCD, utilizadas en Nintendo Entertainment System . |
MOSCÚ | 6591 6592 | Diseños de sistemas en chip que utilizan un Atari 2600 completo en un paquete DIP de 48 pines. [88] [89] |
CDB | 65C02 | Versión CMOS del NMOS 6502 que fue diseñado por Bill Mensch del Western Design Center (WDC), que presenta un consumo de energía reducido, soporte para velocidades de reloj mucho más altas, nuevas instrucciones, nuevos modos de direccionamiento para algunas instrucciones existentes y corrección de erratas de NMOS, como el JMP ($xxFF) error. |
CSG, MOS | 65CE02 | Variante CMOS desarrollada por Commodore Semiconductor Group (CSG), anteriormente MOS Technology. El 65CE02 proporciona un conjunto de instrucciones aún más mejorado que el 65C02, que incluye un tercer registro de indexación (Z), un registro de página base, una pila de 16 bits y una ejecución de programa más rápida con un tiempo mínimo de instrucción reducido de 2 a 1 ciclo de reloj. |
Rockwell | R6511Q R6500/11, R6500/12, R6500/15 " Microcomputadoras de un solo chip " | Versiones mejoradas del procesador basado en 6502, que también incluyen operaciones de manipulación de bits individuales (RMB, SMB, BBR y BBS), RAM de página cero de 192 bytes en el chip, UART , etc. [90] [91] |
Rockwell | R65F11 R65F12 | El Rockwell R65F11 (introducido en 1983) y el posterior R65F12 son versiones mejoradas del procesador basado en 6502, que también incluyen operaciones de manipulación de bits individuales (RMB, SMB, BBR y BBS), RAM de página cero en el chip, ROM de núcleo Forth en el chip, un UART, etc. [92] [93] [94] [95] [96] |
GTE | G65SC12 | Se incluye la variante CMOS 6502 sin operaciones de manipulación de bits individuales (RMB, SMB, BBR y BBS). [97] Esto se utilizó en el BBC Master . |
GTE | G65SC102 | El software es compatible con el 6502, pero tiene un diseño de pines y un circuito oscilador ligeramente diferentes. El BBC Master Turbo incluía la versión de 4 MHz de esta CPU en una tarjeta de coprocesador, que también podía comprarse por separado y añadirse al Master 128. |
Rockwell | R65C00R65C21R65C29 | Los modelos R65C00, R65C21 y R65C29 tienen dos CMOS 6502 mejorados en un solo chip, y el R65C00 y el R65C21 contienen además 2 KB de ROM programable con máscara. [98] [99] |
CM630 | Un clon del Bloque del Este de 1 MHz del 6502 y se utilizó en los Pravetz 8A y 8C, clones búlgaros del Apple II . [100] | |
MOSCÚ | 7501 8501 | Variantes del modelo 6510 (un modelo 6502 mejorado), introducido en 1984. [101] Ampliaron el número de pines del puerto de E/S de 6 a 7, pero omitieron los pines para salida de reloj e interrupción no enmascarable. [102] Se utiliza en los ordenadores Commodore C-16 , C-116 y Plus/4 . La principal diferencia entre las CPU 7501 y 8501 es que la 7501 se fabricó con el proceso HMOS -1 y la 8501 con HMOS-2. [101] |
MOSCÚ | 8500 | Introducido en 1985 como una versión HMOS del 6510 (que a su vez se basa en el 6502). Aparte de la modificación del proceso, el 8500 es prácticamente idéntico a la versión NMOS del 6510. Reemplazó al 6510 en versiones posteriores del Commodore 64 . |
MOSCÚ | 8502 | Diseñado por MOS Technology y utilizado en el Commodore 128. Basado en el MOS 6510 utilizado en el Commodore 64, el 8502 podía funcionar a una frecuencia de reloj dos veces mayor que la del 6510. [103] La familia 8502 también incluye los MOS 7501, 8500 y 8501. |
Hudson suave | HuC6280 | Versión mejorada del WDC 65C02 de la empresa japonesa de videojuegos Hudson Soft . Fabricado para ellos por Seiko Epson y NEC para la SuperGrafx . El producto más notable que utiliza el HuC6280 es la consola de videojuegos TurboGrafx-16 de NEC. |
VLSI | VL65NC02 [104] | La variante 65C02 con licencia VLSI se incluyó en el IC del sistema principal de Atari Lynx llamado Mikey. |
El Western Design Center diseñó y actualmente produce el procesador WDC 65C816 S, un sucesor de 16 bits y núcleo estático del 65C02 . El W65C816S es una variante más nueva del 65C816, que es el núcleo de la computadora Apple IIGS y es la base del procesador Ricoh 5A22 que impulsa el Super Nintendo Entertainment System . El W65C816S incorpora pequeñas mejoras con respecto al 65C816 que hacen que el chip más nuevo no sea un reemplazo exacto compatible con el hardware del anterior. Entre estas mejoras se encontraba la conversión a un núcleo estático, lo que permite detener el reloj en cualquiera de las fases sin que los registros pierdan datos. Disponible a través de distribuidores de productos electrónicos, a partir de marzo de 2020, el W65C816S está clasificado oficialmente para operar a 14 MHz.
El Western Design Center también diseñó y produjo el 65C802 , que era un núcleo 65C816 con un espacio de dirección de 64 kilobytes en un encapsulado compatible con pines 65(C)02. El 65C802 podía ser adaptado a una placa 6502 y funcionaba como un 65C02 al encenderse, operando en "modo emulación". Al igual que con el 65C816, una secuencia de dos instrucciones cambiaría el 65C802 a operación en "modo nativo", exponiendo su acumulador de 16 bits y registros de índice , y otras características del 65C816. El 65C802 no fue ampliamente utilizado y la producción terminó.
El 6502 tenía varios errores y peculiaridades que había que tener en cuenta al programarlo:
JMP (<address>)
, está parcialmente rota. Si <address> es hexadecimal xxFF (es decir, cualquier palabra que termine en FF ), el procesador no saltará a la dirección almacenada en xxFF y xxFF+1
como se esperaba, sino a la definida por xxFF y xx00 (por ejemplo, JMP ($10FF)
saltaría a la dirección almacenada en 10FF y 1000, en lugar de la almacenada en 10FF y 1100). Este defecto continuó a lo largo de toda la línea NMOS, pero se corrigió en los derivados CMOS.El primer 6502 se fabricó con tecnología de 8 micrones, funcionaba a un megahercio y tenía una memoria máxima de 64k.
La llegada de cualquier interrupción se refleja en el indicador B, cuya salida (B_OUT) obliga al procesador a ejecutar una instrucción BRK...
B_OUT; BUS DE DATOS INTERNO (DB)
Los ingenieros de Atari lo llaman SALLY, pero [los documentos de soporte lo llaman] "6502 (Modificado)", "6502 Modificado", "6502 Personalizado" o "6502C". [..] Los chips SALLY 6502 nunca están marcados como "6502C" sino que, a excepción del UMC UM6502I, siempre están [marcados] como C014806. [..] [Otros] chips marcados como "6502C" [..] NO son los "6502C" de Atari sino los [6502 estándar] certificados para 4 MHz