Articulo de referencia

Mostek 5065

El Mostek MK5065 es un microprocesador de 8 bits presentado por Mostek a principios de 1974. Su diseño fue desarrollado originalmente por Motorola para su uso en una calculadora...

El Mostek MK5065 es un microprocesador de 8 bits presentado por Mostek a principios de 1974. Su diseño fue desarrollado originalmente por Motorola para su uso en una calculadora electrónica Olivetti , y Mostek cedió la licencia para su uso en aplicaciones distintas a las calculadoras. Cuenta con tres conjuntos de registros de procesador, lo que le permite cambiar a un controlador de interrupciones en un solo ciclo, y un modo de espera de datos que facilita el acceso directo a la memoria .

A pesar de su precio relativamente bajo (para la época), de 58 dólares en lotes de 100 unidades, la 5065 parece haber tenido poca acogida. La Fairchild F8 se lanzó casi al mismo tiempo, dirigida a los mismos mercados. La F8 presentaba varias ventajas sobre la 5065 gracias a su diseño más moderno. En junio de 1975, Mostek obtuvo la licencia de la F8 mediante un acuerdo de suministro independiente . La 5065 desapareció del catálogo de Mostek de 1975, que solo menciona su modelo F8, la MK3850.

Aún convencidos de que necesitaban un microprocesador, y aprendiendo de su experiencia con el 5065, Motorola comenzó el diseño de su Motorola 6800 casi inmediatamente después de otorgar la licencia del 5065 a Mostek.

Historia

El 5065 comenzó como un diseño personalizado de CPU PMOS de Motorola para una calculadora de escritorio que estaba fabricando Olivetti . El esfuerzo de diseño fue liderado por Rod Orgill y Bill Mensch , quienes produjeron el 5065. Las fábricas existentes de Motorola no pudieron producir el diseño y se vieron obligados a licenciarlo a Mostek con la condición de que no lo vendieran en el mercado de calculadoras. [ 1 ] Mostek lanzó su versión en febrero de 1974. A principios de 1975 ya estaba en producción en masa y se vendía a $58 en lotes de 100 a 499. [ 2 ]

En septiembre de 1974, Fairchild Semiconductor lanzó el Fairchild F8, con envíos de muestras a partir del siguiente abril y la producción en serie a finales de ese mismo año. El F8 era prácticamente idéntico al 5065 en su propósito, diseñado originalmente como una CPU para calculadoras de Olympia-Werke , un competidor alemán de Olivetti. El F8 presentaba varias características de diseño que facilitaban su implementación, ya que los diseños típicos requerían solo dos chips para proporcionar toda la ROM, RAM, reloj y E/S necesarias. Además, mejoraba al 5065 al ser un chip basado en NMOS , lo que permitía fabricarlo con un tamaño de características menor, reduciendo así su coste y permitiéndole funcionar mucho más rápido. [ 3 ]

En junio de 1975, Mostek obtuvo la licencia del diseño F8 de Fairchild y lo incorporó a su nueva línea NMOS . Las menciones del 5065 desaparecen en su catálogo de 1975, que solo menciona su versión del F8, el MK3850. [ 4 ] Mostek redujo drásticamente el precio de su F8 durante el año siguiente, llegando a $10 en empaque de plástico [ a ] ​​en 1976. [ 5 ]

Descripción

Diseño básico

A principios de la década de 1970, la idea de utilizar un microprocesador como base para una computadora independiente aún no era común, y los diseños de la época generalmente incluían características destinadas a facilitar su uso en lo que hoy se conoce como microcontroladores : procesadores que se utilizan para controlar un dispositivo como una caja registradora o un surtidor de gasolina . Estos sistemas deben responder rápidamente a diferentes entradas, lo que a menudo se logra mediante interrupciones . Dado que esta es una operación común en estos entornos, muchos diseños se centraron en formas de mejorar el rendimiento o la implementación de las interrupciones. [ 6 ] [ 7 ]

En el caso del 5065, esto se logra proporcionando tres conjuntos separados de registros para el acumulador , el contador de programa y el registro interno de "enlace principal", junto con el indicador de acarreo . Al recibir una interrupción, el procesador completa la instrucción actual y luego apunta al conjunto seleccionado de estos registros, o como se les llamaba, "niveles". Esto permite que el sistema rastree tres secciones separadas de código, correspondientes al funcionamiento normal y a dos niveles de interrupción. Los dispositivos externos pueden generar una interrupción en dos pines, INT 1y INT 2, ambos los cuales pueden activarse o desactivarse por software. Por ejemplo, si INT 2está habilitado y se activa, el procesador responde completando la instrucción actual, cambiando a los registros de nivel 2 y continuando. El funcionamiento normal era el nivel 3, al que regresa cuando se ejecuta una instrucción de retorno de interrupción. [ 8 ] Esto hace que el servicio de interrupciones sea muy rápido porque la información de estado se almacena automáticamente en registros dedicados, mientras que muchos diseños requieren que esta información se almacene mediante código escrito por el usuario que puede tardar varios ciclos en completarse. [ 9 ]

El mismo sistema también se puede usar para llamadas rápidas a subrutinas en lugar de tener que almacenar el contenido de los registros. [ 8 ] Como el estado del procesador se guarda por separado, solo la dirección de retorno tiene que escribirse explícitamente en el código. En este caso, las primeras 256 ubicaciones en la memoria, la página cero , se usaron como pila de llamadas . Para que esto funcione, esta área debe implementarse en algún tipo de memoria escribible. La página puede contener hasta 128 direcciones de 16 bits, con el valor actual indicado por el "registro puntero", lo que se conocería como puntero de pila en otros diseños. [ 9 ]

Para facilitar las implementaciones de acceso directo a memoria (DMA), el sistema incluía un WAITpin que podía ser activado por un dispositivo externo que deseara acceder a la memoria. Al recibir esta señal, el procesador continuaba con la instrucción actual, incluyendo cualquier lectura o escritura necesaria en la memoria. Una vez completada la instrucción, el DMApin se activaba para indicar que estaba listo y entraba en estado de pausa. El dispositivo externo realizaba entonces sus operaciones DMA y, WAITal finalizar, se desactivaba. El procesador desactivaba el DMApin, reanudaba la ejecución desde donde la había dejado. [ 10 ]

Instrucciones y direcciones

En total había 51 instrucciones y 81 códigos de operación. Las instrucciones se presentaban en varios formatos, pero la mayoría consistían en pares de código de operación - operando de dos bytes . Un pequeño número de instrucciones de un byte se utilizaban para operaciones como el retorno de subrutina o el desplazamiento a la izquierda , que no requieren información adicional. [ 8 ]

Las instrucciones que utilizan memoria (a diferencia de los registros) emplean un formato de dos bytes con el código de operación en los 6 bits superiores del primer byte. Los 2 bits inferiores controlan el tipo de acceso a la memoria. El primero (bit 1) indica si el siguiente operando de 8 bits es una dirección directa o indirecta. El segundo (bit 0) controla si el valor de 8 bits se encuentra desplazado con respecto a la página de memoria actual definida por el contador de programa, o en la página cero. El siguiente byte del operando contiene una dirección de 8 bits. Esto significa que, al usar direccionamiento directo, los datos deben estar dentro de los 256 bytes de la instrucción actual o dentro de los primeros 256 bytes de memoria. Si se necesita acceso a la memoria principal , se debe usar direccionamiento indirecto. [ 8 ]

Las direcciones indirectas utilizan un patrón de acceso de dos pasos. Primero, el procesador lee los 8 bits inferiores de la instrucción y examina el bit 0 para determinar qué desplazamiento utilizar. Luego lee el byte en esa ubicación y el siguiente, produciendo un valor de 16 bits almacenado en un búfer especial. Posteriormente, lee o escribe los datos en esa ubicación de 16 bits. [ 9 ] Este patrón era común en las minicomputadoras de la época, ya que facilitaba la implementación de ciertas formas de iteración sobre los datos. [ 11 ] [ b ]

El bit más significativo de cada dirección almacenada en memoria se utilizaba para especificar si se trataba de una dirección directa o indirecta, lo que dejaba 15 bits para la dirección propiamente dicha, permitiendo hasta 32  kB de memoria. [ 10 ] Dado que la dirección a la que apunta una dirección indirecta también puede tener su bit más significativo activado, las direcciones indirectas pueden formar cadenas. [ 2 ] Este estilo de direccionamiento indirecto multinivel también se observó en sistemas de minicomputadoras como la IBM 1620 , la HP 2100 y la Data General Nova , pero era poco común en los microprocesadores. [ 2 ]

Para bifurcaciones, llamadas a subrutinas y saltos, se utiliza un segundo formato donde el código de operación usa los 4 bits superiores, y los 4 bits inferiores junto con el operando de 8 bits forman una dirección de 12 bits. Esto significaba que el código solo podía llamar a otro código dentro de un "bloque" de 4 KB. [ 8 ] Existían muchos otros formatos de instrucción para propósitos especiales. [ 12 ]

La entrada/salida no se mapea en memoria y se gestiona mediante instrucciones especiales. Los 4 bits superiores del código de operación contienen la instrucción de E/S (entrada, salida, estado, etc.), mientras que los 4 bits inferiores son un "campo libre". El programa puede colocar cualquier valor en estos 4 bits y usarlo como un campo de datos ad hoc para enviar instrucciones al dispositivo. La activación de la instrucción dio como resultado un proceso de cuatro ciclos. En el primer ciclo, los 6 bits inferiores de la instrucción, incluido el campo libre de 4 bits, se colocan en el bus H, mientras que el valor del acumulador se coloca en el bus L. El dispositivo puede entonces leer ambos para decodificar su instrucción. En el segundo ciclo, si la CPU debe enviar datos al dispositivo para su salida, el valor de 8 bits se coloca en el bus. En el tercero, cualquier dato que se envíe a la CPU se devuelve por el bus. El cuarto indica el final del ciclo de E/S. [ 8 ]

Otros detalles

El bus principal está multiplexado, con un total de 16 pines utilizados tanto para el direccionamiento como para los datos. El bus se divide en lados "alto" (H) y "bajo" (L), ambos de 8 bits. Durante un acceso a memoria, la dirección de 15 bits se coloca en los lados alto y bajo, y luego los datos en esa ubicación se leen o escriben utilizando únicamente el bus L. Esto significa que los accesos a memoria requieren dos ciclos, lo que lo hace más lento que los diseños con buses de direcciones y datos separados (no multiplexados). [ 8 ]

Construido sobre el proceso PMOS , común a principios de la década de 1970, el 5065 requiere tres niveles de alimentación de voltaje: -12 V (V GG ), +5 V (V SS ), -5 V (V DD ) y tierra. Se presenta en un encapsulado DIP de 40 pines , como era habitual en la mayoría de los procesadores de la época. El uso del bus multiplexado reduce el uso de pines hasta el punto de que cinco pines quedan sin conectar. [ 10 ] Como ocurre con la mayoría de los diseños PMOS, se requiere un chip de reloj externo , en este caso el MK5009. También existían planes para lanzar un adaptador de interfaz periférica (PIA) a finales de 1975. [ 2 ]

El sistema se lanzó con un sistema de evaluación, el GEMS-8 de dos placas, acrónimo de General Evaluation Microprocessor System (Sistema de Microprocesador de Evaluación General). Este incluía el controlador de reloj, 512 bytes de ROM, de 1 a 12 kB de RAM y una UART para su uso con una terminal de computadora . La ROM contiene la "Program Aid Routine", una pequeña herramienta de desarrollo de sistemas y utilidad de depuración. La placa del procesador y la ROM PAR costaban $597, la tarjeta de RAM de 12k otros $597, o ambas juntas $995. También estaba disponible un ensamblador cruzado para una "minicomputadora de 16 bits" no especificada. [ 2 ]

Las velocidades de reloj del 5065 no aparecen en ninguna referencia conservada. Los tiempos de instrucción se indican entre 3 y 16 μs. [ 2 ] Aunque los tiempos de instrucción se citan entre 3 y 16 μs, se puede utilizar un reloj de 1 MHz. [ 13 ]

Notas

  1. El embalaje de plástico era adecuado para uso a baja velocidad donde el calor no era un problema. Para velocidades más altas, había disponible un embalaje de cerámica por $20. [ 5 ]
  2. La otra solución común de la época, no utilizada en el 5065, son los registros de índice dedicados .

Referencias

Citas

  1. "El pionero procesador 6800 de 8 bits de Motorola  : Orígenes y arquitectura" . The Chip Letter . 11 de diciembre de 2023.
  2. 1 2 3 4 5 6 Compendio 1975 , pág. 2.
  3. Nair 2002 , pág. 237.
  4. Guía 1975 .
  5. 1 2 Digest 1976 , pág. 13.
  6. Silva 2013 .
  7. Renesas .
  8. 1 2 3 4 5 6 7 Guía 1974 , pág. 80.
  9. 1 2 3 Guía 1974 , pág. 79.
  10. 1 2 3 Guía 1974 , pág. 78.
  11. Siemens 2007 .
  12. Guía 1974 , págs. 80–82.
  13. Franks 2023 .

Bibliografía

  • Franks, Kirk (16 de mayo de 2023), Experiencia personal en el diseño y construcción de un sistema basado en MK5065, por un antiguo ingeniero de Mostek.
  • Sachs, Jason (18 de junio de 2022). "Desarrollo de la tecnología MOS 6502: una perspectiva histórica" . Embedded Related .
  • Michalopoulos, Demetrios (octubre de 1975). "Nuevos productos: Mostek anuncia el sistema de microcomputadora GEMS-8". IEEE Computer . doi : 10.1109/CM.1975.218783 . S2CID 2862689 . 
  • "Miles de Mostek 5065" (PDF) . MicroComputer Digest . Vol.  1, n.º  8. Febrero de 1975.
  • "Mostek reduce los precios del F8" (PDF) . Microcomputer Digest . Octubre de 1976.
  • Guía de circuitos integrados . Vol. 3. Mostek. 1974.
  • Guía de circuitos integrados . Mostek. 1975.
  • Nair, B. Somanathan (2002). Electrónica digital y diseño lógico . PHI Learning.
  • Silva, Mike (18 de septiembre de 2013). "Introducción a los microcontroladores: interrupciones" . Embedded Related .
  • "Introducción a los microcontroladores: procesamiento de interrupciones" . Renesas .
  • "Programación de un bucle con direccionamiento indirecto" . Siemens . 29 de enero de 2007.