stringtranslate.com

Mostek 5065

El Mostek MK5065 fue un microprocesador de 8 bits introducido por Mostek a principios de 1974. El diseño fue desarrollado originalmente por Motorola para su uso en una calculadora electrónica Olivetti y Mostek lo licenció para su uso en funciones distintas a las de calculadora. Presentaba tres conjuntos de registros de procesador, lo que le permitía cambiar a un controlador de interrupciones en un solo ciclo, y un modo de espera de datos que facilitaba el acceso directo a la memoria .

A pesar de su costo relativamente bajo (para la época) de 58 dólares en cantidades de 100, el 5065 parece haber tenido poco uso. El Fairchild F8 se presentó aproximadamente al mismo tiempo, dirigido a los mismos mercados. El F8 tenía una serie de ventajas sobre el 5065 debido a su diseño más moderno. En junio de 1975, Mostek licenció el F8 bajo un acuerdo de segunda fuente . El 5065 desapareció del catálogo de Mostek de 1975, que solo menciona su F8, el MK3850.

Todavía convencidos de que necesitaban un microprocesador y aprendiendo de su experiencia con el 5065, Motorola comenzó a diseñar su Motorola 6800 casi inmediatamente después de licenciar el 5065 a Mostek.

Historia

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

En septiembre de 1974, Fairchild Semiconductor lanzó el Fairchild F8, cuyos envíos de muestras comenzaron en abril del año siguiente y cuya producción total se produjo más tarde ese mismo año. El F8 era casi idéntico al 5065 en cuanto a su propósito, y fue diseñado originalmente como una CPU calculadora para Olympia-Werke , un competidor alemán de Olivetti. El F8 tenía una serie de características de diseño que lo hacían muy fácil de implementar, ya que los diseños típicos requerían solo dos chips para proporcionar toda la ROM, RAM, reloj y E/S necesarios. También mejoraba al 5065 en el sentido de que era un chip basado en NMOS , lo que permitía fabricarlo con un tamaño de característica más pequeño, lo que reducía su costo y le permitía funcionar mucho más rápido. [3]

En junio de 1975, Mostek obtuvo la licencia del diseño del F8 de Fairchild y lo incluyó en su nueva línea NMOS . Las menciones al 5065 desaparecen en el catálogo de 1975, que solo menciona su versión del F8, el MK3850. [4] Mostek redujo agresivamente el precio de su F8 durante el año siguiente, hasta alcanzar los 10 dólares en envases 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 hacerlos fáciles de usar en lo que hoy se conocería como el área de microcontroladores , procesadores que se utilizan para controlar un dispositivo como una caja registradora o una bomba de gasolina . Estos sistemas tienen que responder rápidamente a diferentes entradas, lo que normalmente se logra a través de interrupciones . Como se trata de 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 logró 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 completaba la instrucción actual y luego apuntaba al conjunto seleccionado de estos registros, o como los llamaban, "niveles". Esto permitió que el sistema rastreara tres secciones separadas de código, correspondientes al funcionamiento normal y dos niveles de interrupción. Los dispositivos externos podían generar una interrupción en dos pines, INT 1y INT 2, los cuales podían activarse o desactivarse en el software. Entonces, por ejemplo, si INT 2se habilitaba y se activaba, el procesador respondía completando la instrucción actual, cambiando a los registros de nivel 2 y continuando. El funcionamiento normal era el nivel 3, al que regresaba cuando se llamaba a una instrucción de retorno desde la 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 un solo ciclo, mientras que muchos diseños requieren que esta información se almacene utilizando código escrito por el usuario que puede tardar varios ciclos en completarse. [9]

El mismo sistema también podría utilizarse para llamadas rápidas a subrutinas en lugar de tener que almacenar el contenido de los registros. [8] Como el estado del procesador se guardaba por separado, solo la dirección de retorno tenía que escribirse explícitamente en código. En este caso, las primeras 256 ubicaciones en la memoria, la página cero , se usaban como pila de llamadas . Para que esto funcionara, esta área tenía que implementarse en alguna forma de memoria escribible. La página podía contener hasta 128 direcciones de 16 bits, con el valor actual indicado por el "registro de 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 era activado por un dispositivo externo que quería acceder a la memoria. Cuando se recibía esta señal, el procesador continuaba con la instrucción actual, incluida cualquier lectura y escritura requeridas desde la memoria. Cuando la instrucción se completaba, activaba el DMApin para indicar que estaba listo y luego pasaba a un estado de pausa. El dispositivo externo realizaba entonces sus operaciones de DMA y luego se desconectaba WAITcuando terminaba. El procesador luego eliminaba el DMApin, reanudaba la ejecución desde donde la había dejado. [10]

Instrucciones y direccionamiento

En total, había 51 instrucciones y 81 códigos de operación. Las instrucciones vienen en muchos formatos, pero la mayoría de ellas en pares de código de operación y operando de dos bytes . Se utilizó una pequeña cantidad de instrucciones de un byte para cosas como el retorno desde una subrutina o el desplazamiento a la izquierda , que no necesitan ninguna información adicional. [8]

Las instrucciones que utilizaban memoria (en lugar de registros) utilizaban un formato de dos bytes con el código de operación en los 6 bits superiores del primer byte. Los 2 bits inferiores controlaban el tipo de acceso a la memoria. El primero (bit 1) indicaba si el siguiente operando de 8 bits era una dirección directa o indirecta. El segundo (bit 0) controlaba si el valor de 8 bits estaba desplazado respecto de la página de memoria actual definida por el contador de programa, o en la página cero. El siguiente byte de operando contiene una dirección de 8 bits. Esto significa que cuando se utiliza el direccionamiento directo, los datos tienen que estar dentro de los 256 bytes de la instrucción actual, o dentro de los primeros 256 bytes de la memoria. Si se necesita acceder a la memoria principal más grande , se debe utilizar el direccionamiento indirecto. [8]

Las direcciones indirectas utilizaban un patrón de acceso de dos pasos. Primero, el procesador lee los 8 bits inferiores de la instrucción y observa el bit 0 para ver qué desplazamiento utilizar. Luego lee el byte en esa ubicación y el byte siguiente, lo que produce un valor de 16 bits almacenado en un búfer especial. Luego leía o escribía los datos en esa ubicación de 16 bits. [9] Este patrón se veía comúnmente en las minicomputadoras de la época, ya que facilitaba la implementación de ciertas formas de bucle sobre datos. [11] [b]

El bit más significativo de cada dirección almacenada en la memoria se usaba para especificar si era una dirección directa o indirecta, lo que dejaba 15 bits para la dirección real, lo que permitía 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 alto establecido, las direcciones indirectas pueden formar cadenas. [2] Este estilo de acceso encadenado también se vio en sistemas de minicomputadoras como IBM 1620 , HP 2100 y Data General Nova , pero era poco común para los microprocesadores. [2]

Para las bifurcaciones, llamadas a subrutinas y saltos, se utilizó un segundo formato en el que el código de operación utilizaba los 4 bits superiores y los 4 bits inferiores junto con el operando de 8 bits formaban 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] Había muchos otros formatos de instrucciones para fines especiales. [12]

La entrada/salida no estaba asignada a la memoria y se manejaba a través de instrucciones especiales. Los 4 bits superiores del código de operación contenían la instrucción de E/S (entrada, salida, estado, etc.), mientras que los 4 bits inferiores eran un "campo libre". El programa podía colocar cualquier valor en estos 4 bits y utilizarlo como un campo de datos ad-hoc para enviar instrucciones al dispositivo. La activación de la instrucción daba 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 colocaban en el bus H mientras que el valor del acumulador se colocaba en el bus L. El dispositivo podía leer ambos para decodificar su instrucción. En el segundo ciclo, si la CPU debía enviar datos al dispositivo para salida, el valor de 8 bits se colocaba en el bus. En el tercero, cualquier dato que se enviara a la CPU se devolvía en el bus. El cuarto indicaba el final del ciclo de E/S. [8]

Otros detalles

El bus principal estaba multiplexado, con un total de 16 pines utilizados tanto para direccionamiento como para datos. El bus estaba dividido en lados "alto" (H) y "bajo" (L), ambos de 8 bits. Durante un acceso a la memoria, la dirección de 15 bits se colocaba en los lados alto y bajo, y luego los datos en esa ubicación se leían o escribían utilizando solo el bus L. Esto significaba que los accesos a la memoria requerían dos ciclos, lo que lo hacía más lento que los diseños con buses de datos y direcciones separados (no multiplexados). [8]

Basado en el proceso PMOS que era común a principios de los años 1970, el 5065 requería tres niveles de suministro de voltaje, -12 V (V GG ), +5 V (V SS ), -5 V (V DD ) y tierra. Estaba empaquetado en un DIP de 40 pines , como era común para la mayoría de los procesadores de la época. El uso del bus multiplexado redujo el uso de pines hasta el punto de que cinco pines quedaron sin conectar. [10] Como era el caso de la mayoría de los diseños PMOS, se requería un chip de reloj externo , en este caso el MK5009. También hubo planes para lanzar un adaptador de interfaz periférica (PIA) a fines de 1975. [2]

El sistema se lanzó con un sistema de evaluación, el GEMS-8 de dos placas, abreviatura de General Evaluation Microprocessor System. Este incluía el controlador de reloj, 512 bytes de ROM, de 1 a 12 kB de RAM y un UART para usar con un terminal de computadora . La ROM contenía la "Program Aid Routine", una pequeña herramienta de desarrollo del sistema y una utilidad de depuración. La placa del procesador y la ROM PAR costaban 597 dólares, la tarjeta de 12k RAM otros 597 dólares, o ambas juntas costaban 995 dólares. 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 de las referencias que se conservan. Los tiempos de instrucción se indican entre 3 y 16 μs. [2] Aunque los tiempos de instrucción se indican entre 3 y 16 μs, se puede utilizar un reloj de 1 MHz. [13]

Notas

  1. ^ Los envases de plástico eran adecuados para usos a baja velocidad, donde el calor no era un problema. Para velocidades más altas, se podía conseguir un envase de cerámica por 20 dólares. [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. ^ "Motorola's Pioneer 6800 de 8 bits: Orígenes y arquitectura". The Chip Letter . 11 de diciembre de 2023.
  2. ^ abcdef Digest 1975, pág. 2.
  3. ^ Nair 2002, pág. 237.
  4. ^ Guía 1975.
  5. ^ desde Digest 1976, pág. 13.
  6. ^ Silva 2013.
  7. ^ Renesas.
  8. ^ abcdefg Guía 1974, pág. 80.
  9. ^ Guía abc 1974, pág. 79.
  10. ^ Guía abc 1974, pág. 78.
  11. ^ Siemens 2007.
  12. ^ Guía 1974, págs. 80–82.
  13. ^ Francos 2023.

Bibliografía