MOS 6502

De El Museo de los 8 bits
Revisión a fecha de 17:25 1 ago 2006; Museo8bits (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

El MOS 6502 o MOS Technology 6502 fue un microprocesador de 8 bits diseñado por MOS Technology en 1975. Cuando fue introducido fue, por un largo trecho, el mas barato CPU con características completas del mercado, en alrededor de 1/6to del precio, o menos, que diseños con los que competía de compañías más grandes como Motorola e Intel. Era sin embargo más rápido que la mayoría de ellos, y, junto con el Zilog Z80, fueron la chispa de una serie de proyectos de computadores que eventualmente darían lugar a la revolución del computador personal de finales de los 1970 y los principios de los años 1980. Además de MOS Technology, el diseño del 6502 tuvo originalmente como segunda fuente a Rockwell y Synertek y fue licenciado más adelante a un número de compañías. Todavía se hace para sistemas integrados (embedded systems).

Un procesador MOS 6502 en un paquete plástico DIL-40.


Historia y uso

El 6502 fue diseñado primariamente por el mismo equipo que había diseñado el Motorola 6800. Después de salirse en masa de Motorola, rápidamente diseñaron el 6501, un diseño totalmente nuevo que era sin embargo compatible a nivel de pines con el 6800. Motorola demandó inmediatamente, y aunque hoy en día el caso habría sido descartado inmediatamente, el daño a MOS fue bastante para que acordaran parar la producción de los 6501.

El resultado fue el 6502, que era compatible con el litigio legal de Motorola, estaba diferenciado solamente por un reordenamiento de las patillas, haciéndolo inutilizable en una tarjeta madre para el 6800. Ahora, aparentemente Motorola ya no estaba interesada. Sin embargo esto dejó a MOS Technology con el problema de conseguir nuevos desarrolladores para el sistema, así que en respuesta el ingeniero Chuck Peddle diseñó el KIM-1 una computadora en una simple tarjeta. Para su sorpresa, el KIM-1 se vendió en cantidades enormes a los aficionados y a las personas que les gustaba experimentar, tan bien como a los ingenieros para los cuales fue pensado. El AIM 65, un sistema de control, entrenamiento, y desarrollo, manufacturado por Rockwell también lo hizo bien. Otro diseño más o menos similar fue el Synertek SYM-1.

El 6502 fue lanzado al mercado en septiembre de 1975. El precio era de $25, mientras que el 6800 y el 8080 se vendían por $179. Al principio mucha gente pensada que era alguna clase de fraude, pero antes de que el show terminara, ambos, Motorola e Intel habían bajado sus precios a $79. En vez de salvarlos, ahora el 6502 estaba legitimado y comenzaba a venderse por cientos.

Uno de los primeros usos "públicos" para el diseño fue la consola de video juegos Atari 2600. Los 2600 utilizaron un descendiente del 6502 llamado 6507, que tenía menos pines y como resultado podía direccionar solamente 8 KB de memoria RAM. Millones serían vendidos en esta forma. El 6502 luego fue usado en la familia del Apple II, y entonces rápidamente apareció en varios computadores personales como el Commodore PET, Commodore VIC-20, familia Atari de 8 bits, la familia BBC Micro, y un enorme número de otros diseños ahora perdidos en la historia. El 6510, un sucesor directo del 6502, fue el CPU usado en el extremadamente popular computador personal Commodore 64.

Otro uso importante del 6502 fue en el Nintendo Famicom, una consola de video japonesa. Su equivalente estadounidense y europeo, el Nintendo Entertainment System (NES), también tenía el 6502. El 6502 usado en el NES eran una versión modificada, que fue producida solamente para los Nintendo, llamada 2A03 en las consolas NTSC y 2A07 en las consolas PAL, la diferencia entre los dos era el divisor frecuencias del reloj. El procesador personalizado para el NES careció del modo decimal del 6502 pero agregó 22 registros de memoria mapeada para la generación del sonido, la lectura del joypad (control del juego) y el DMA para los sprites.

El eficiente diseño del 6502 también inspiró a los principales diseñadores del ARM, un procesador RISC, y así se puede decir que la herencia del 6502 ha trascendido la familia original del procesador puesto que su espíritu vive en el diseño del ARM, usado en varios computadores de escritorio así como una plétora sistemas de mano (hanheld) y de otros empotrados (embedded), y vendido como bloque de IP para ser usado en productos de Sistemas en un chip.

Descripción

Configuración de pines del 6502 (DIP de 40 Pines)

El 6502 es un procesador de 8 bits con un bus de dirección de 16 bits. La lógica interna corre a la misma velocidad que la frecuencia del reloj externo, pero las aparentemente lentas velocidades de reloj de típicamente 1 MHz eran realmente competitivas con otros CPUs corriendo cuatro veces más rápido porque el 6502 era un procesador estático pipelined, y los otros de su tiempo fueron microcodificados y tenían velocidades internas comparables con la del 6502. El reloj interno Z80, por ejemplo, estaba dividido por cuatro. Aunque esto puede sonar como un "truco", el 6502 tenía el efecto secundario de bajar los requerimientos de velocidad de los periférico unidos al CPU, de esta manera bajando el costo total del sistema, un importante factor para conseguir un diseño ganador en los muy sensibles mercados de las consola de juego de juego y los computadores personales.

A diferencia del Intel 8080 y de similares microprocesadores, el 6502 tenían muy pocos registros. En ese tiempo, la memoria RAM era más rápida que los CPUs, así que tenía sentido optimizar el acceso a RAM más que aumentar el número de registros en el chip. Dentro del 6502 había un registro acumulador "A" de 8 bits, dos registros índice "X" e "Y" de 8 bits, un registro de estado "SR" de 8 bits, un puntero de pila "SP" de 8 bits, y un contador de programa "PC" de 16 bits. El espacio de dirección de la pila para llamadas a subrutinas o almacenamiento temporal estaba fijado (hardwired) a la página $01 de la memoria, es decir la gama de direcciones $0100-$01FF (256-511). El acceso del software a la pila se hacía hecho mediante cuatro instrucciones con modo de direccionamiento implícito cuya función era colocar o retirar un elemento en la pila (Push o Pop). Habían instrucciones Push y Pop para contenido del acumulador o para el registro de estado del procesador.

El chip utilizó los registros del índice y de la pila efectivamente con varios modos de direccionamiento, incluyendo un rápido modo de "página directa" o "página cero" que accedía a posiciones de memoria de las direcciones 0 a 255 (00 a FF hexadecimal) con una sola dirección 8 bits (no tenía que leer un segundo byte para la dirección). El código para el 6502 utilizaba mucho la página cero, tanto como el código para otros procesadores habrían usado sus registros. En la mayoría de los microcomputadores basados en el 6502 con un sistema operativo, el sistema operativo en sí mismo utilizaba casi completamente la página cero, dejando quizás un puñado de localizaciones para el usuario.

Los modos de direccionamiento también incluían:

  • implied (instrucciones de 1 byte)
  • absolute (3 bytes)
  • relative (2 bytes)
  • acumulador (1 byte)
  • indirect, x e indirect, y (2 bytes)
  • immediate (2 bytes)

El modo absoluto era un modo de uso general. El modo relativo era usado para instrucciones de bifurcación condicional que podrían mover el contador de programa hasta 128 bytes adelante o atrás. El modo acumulador usó el acumulador como una dirección efectiva, y no necesitaba ningún dato de operando. El modo inmediato utilizaba un operando literal de 8 bits.

Los modos indirectos eran útiles para procesamiento de arreglos y otras operaciones repetitivas con bucles. Con el modo indirecto, y el registro Y, de 8 bits, era agregado a una base de 16 bits localizada en la página cero de la memoria (un byte en el opcode denotaba la localización de página cero). Los registros de 8 bits X e Y eran usados como offset (desplazamiento) más que su uso 'normal' como registros índice. El incremento de X o Y para caminar por el arreglo era una operación de 8 bits de dos ciclos, aunque el arreglo pudiera estar situado en cualquier parte del espacio de dirección 16 bits (obteniendo la base de 16 bits leída de la página cero). Aquí es donde el 6502 se diferencia más del Motorola 6800. Un superficial vistazo en las especificaciones del 6502 mostrando que habían solamente registros de índice de 8 bits es absolutamente engañoso.


Características dudosas

  • Los 6502 son notorios para tener una variedad de instrucciones indocumentadas, que variaban de un diseño al siguiente. La decodificación de instrucciones en el 6502 está implementada por medio de un arreglo lógico fijo (hardwired) (similar a un arreglo lógico programable) definido solamente para los opcodes válidos. Los ~32 opcodes indocumentados accionan varias instrucciones válidas a la vez, conduciendo a resultados inesperados.
  • La instrucción de salto indirecto del 6502, JMP (xxxx), tenía un defecto. Si la dirección era xxFF hexadecimal, el procesador no tendría acceso a la dirección almacenada en xxFF y xxFF+1, sino en xxFF y xx00. El 6510 no corrigió este error, ni fue corregido en cualquiera de las otras versiones NMOS del 6502 como el 8502 y el 2A03. Bill Mensch en Western Design Center fue el primero en corregirlo, en el derivado CMOS 65C02. Él entonces fue a diseñar el procesador 65816, un sucesor de 16 bits del 65C02 como también un descendiente híbrido llamado 65802 que era un 65816 con un espacio de dirección de 64 KB y un paquete compatible a nivel de pines con el 65(C)02.

Aceleración

Muchos usuarios de sistemas basados en 6502 de 1 MHz pronto deseaban que sus computadoras pudieran ir más rápidamente. Un número de compañías vendieron hardware de reemplazo para acelerar esos sistemas. Generalmente, los aceleradores de los sistemas 6502 fueron basados en:

  • Chips 6502 ó 65C02 corriendo con una velocidad de reloj más rápida.
  • Chips 65C816 en modo de emulación del 6502, corriendo en una velocidad de reloj mucho más rápida (hasta 20 MHz).
  • Procesadores Zip Chip de 4 MHz y 8 MHz, hechos por Zip Technology, y Rocket Chips de 10 MHz, hechos por Bits and Pieces, todos usando cache RAM incorporado en la tarjeta para acelerar el proceso de datos frecuentemente accesados mientras se permanecía compatible con una tarjeta madre de 1 MHz. Eventualmente, la patente #4,794,523 de Zip Technology fuerza a Bits and Pieces a cesar de manufacturar el Rocket Chip.

Trivia 6502

Microcomputadores que usaron el 6502

El procesador MOS 6502 y sus variantes fueron usados, entre otros equipos, en:

Véase también

Microprocesadores

Otros microprocesadores de la época

Computadores prototipo y para experimentación

Microcomputadores

Enlaces externos

Enlaces a Wikipedia