stringtranslate.com

TMS9900

El TMS9900 fue uno de los primeros microprocesadores de 16 bits de un solo chip disponibles comercialmente . [a] Introducido en junio de 1976, implementó la arquitectura de minicomputadora TI-990 de Texas Instruments en un formato de un solo chip y se usó inicialmente para modelos de gama baja de esa línea.

Su formato DIP de 64 pines hizo que su implementación en máquinas más pequeñas fuera más costosa que el formato más común de 40 pines, y obtuvo relativamente pocos avances en el diseño fuera del uso propio de TI. Entre esos usos se encontraban sus computadoras domésticas TI-99/4 y TI-99/4A , que finalmente vendieron alrededor de 2,8 millones de unidades.

Las implementaciones de microcomputadora en chip del 9900 en paquetes de 40 pines incluyeron TMS9940, TMS9980/81, TMS9995. El TMS99105/10 fue la última versión del 9900 en 1981 e incorporó características de la minicomputadora 990/10 de TI. [1]

A mediados de la década de 1980, el campo de las microcomputadoras se estaba desplazando hacia sistemas de 16 bits como el Intel 8088 y diseños más nuevos de 16/32 bits como el Motorola 68000 . Sin un futuro evidente para el chip, TI centró su atención en procesadores de propósito especial como el Texas Instruments TMS320 , presentado en 1983.

Historia

TMS9900JL en paquete cerámico con pasadores chapados en oro

El TMS9900 fue diseñado como una versión de un solo chip de la serie de minicomputadoras TI 990 , al igual que el Intersil 6100 era un PDP-8 de un solo chip (12 bits), y el Fairchild 9440 y el Data General mN601 eran versiones de un solo chip de Data General. Es Nova . A diferencia de los microprocesadores multichip de 16 bits, como el National Semiconductor IMP-16 o DEC LSI-11 , algunos de los cuales son anteriores al TMS9900, el 9900 era un microprocesador autónomo de 16 bits de un solo chip.

Las raíces de minicomputadora del TMS9900 dan lugar a una serie de características arquitectónicas que no se encuentran comúnmente en diseños que comenzaron desde una hoja en blanco. Entre ellos se destaca el uso que hace el TMS9900 de registros de procesador que están asignados a la memoria principal . Esto permite un cambio rápido de contexto , que se puede lograr cambiando un solo registro, el puntero del espacio de trabajo, para que apunte a la primera entrada en una lista de valores de registro. Los diseños más tradicionales requerirían que todo el conjunto de registros internos se almacene en la memoria o en la pila.

La desventaja de este enfoque es que acceder a estos registros lleva más tiempo. En una implementación de minicomputadora con memoria rápida, el efecto es relativamente pequeño y la ventaja en un entorno en tiempo real o multitarea es significativa, ya que los cambios de contexto son comunes. En otras funciones, como las microcomputadoras de un solo usuario, esta compensación puede no valer la pena. Las implementaciones de 40 pines del 9900 incluían 128 o 256 bytes de RAM integrada rápida para registros.

TI utilizó la misma arquitectura en diferentes divisiones para lograr sinergia corporativa: "una empresa, una arquitectura de computadora". A finales de la década de 1970, Walden C. Rhines hizo una presentación del TMS99110, entonces con el nombre en código "Alpha", [2] a un grupo de IBM que desarrollaba una computadora personal. "No sabríamos hasta 1981 lo que habíamos perdido" porque IBM eligió el Intel 8088 para el PC de IBM , recordó. Un factor fue la falta de una hoja de ruta para acceder a más de 64 KB de memoria lógica. La familia 9900 podría ampliar su espacio de direcciones a 16MiB sólo mediante mapeo de páginas; el 99000 podría abordar 256K a través de segmentos.

Después de abandonar el mercado de las computadoras personales con productos como TI-99/4A , la división de microprocesadores de la empresa finalmente cambió su enfoque hacia la serie de procesadores de propósito especial TMS320 . [3]

Arquitectura

El TMS9900 tiene tres registros internos de 16 bits : contador de programa (PC), registro de estado (ST) y registro de puntero del espacio de trabajo (WP). [4] El registro WP apunta a una dirección base en la RAM externa donde se guardan los 16 registros de usuario de propósito general del procesador (cada uno de 16 bits de ancho). Esta arquitectura permite un cambio rápido de contexto ; por ejemplo, cuando se ingresa una subrutina , solo es necesario cambiar el registro del espacio de trabajo en lugar de requerir que los registros se guarden individualmente. Los bits se numeran de forma poco convencional, siendo el bit más significativo el 0.

Las direcciones se refieren a bytes con convención de ordenamiento big endian . El TMS9900 es una máquina clásica de 16 bits con un espacio de direcciones de 2 a 16 bytes (65.536 bytes o 32.768 palabras).

No existe el concepto de pila ni de registro de puntero de pila. En cambio, existen instrucciones de bifurcación que guardan el contador del programa en un registro y cambian el contexto del registro. Los 16 vectores de interrupción de hardware y 16 de software constan cada uno de un par de valores de PC y WP, por lo que el cambio de contexto de registro también se realiza automáticamente mediante una interrupción.

Conjunto de instrucciones y direccionamiento.

El TMS9900 tiene 69 instrucciones que tienen una, dos o tres palabras y siempre están alineadas con las palabras en la memoria. El conjunto de instrucciones es bastante ortogonal , lo que significa que, con pocas excepciones, las instrucciones pueden utilizar todos los métodos de acceso a operandos (modos de direccionamiento).

Los modos de direccionamiento incluyen Inmediato (operando en instrucción), Directo o "Simbólico" (dirección de operando en instrucción), Registro (operando en registro de espacio de trabajo), Registro Indirecto (dirección de operando en registro de espacio de trabajo) con o sin incremento automático, Indexado (dirección de operando en instrucciones indexadas con el contenido del registro del espacio de trabajo) y Relativo al contador de programa.

Las instrucciones de doble operando más importantes (suma, resta, comparación, movimiento, etc.) contienen un modo de direccionamiento de 2 bits y campos selectores de registro de 4 bits para los operandos de origen y de destino. En el código de operación, el modo "simbólico" se representa como modo indexado con el campo de registro establecido en 0; por lo tanto, el registro del espacio de trabajo 0 (WR0) no se puede utilizar en el modo indexado. En instrucciones de doble operando utilizadas con menos frecuencia, como XOR, el operando de destino debe ser un registro de espacio de trabajo (o un par de registros de espacio de trabajo en el caso de instrucciones de multiplicación y división).

El control de flujo se facilita a través de un grupo de una instrucción de salto incondicional y doce condicionales. Los destinos de salto son relativos a la PC con un desplazamiento de direcciones de -128 a +127 palabras.

Para llamadas a subrutinas, la instrucción Branch and Load Workspace Pointer (BLWP) carga nuevos valores de WP y PC, luego guarda los valores de WP, PC y ST en los (nuevos) registros 13, 14 y 15 respectivamente. Al final de la subrutina, el puntero del espacio de trabajo de retorno (RTWP) los restaura en orden inverso. Usando BLWP/RTWP, es posible anidar llamadas a subrutinas a pesar de la ausencia de una pila; sin embargo, el programador necesita asignar explícitamente el espacio de trabajo de registro apropiado.

El conjunto de instrucciones también contiene un código de operación de rama y enlace (BL) que solo guarda la PC para registrar 11 sin cambiar WP. En este caso, una instrucción de bifurcación (B) que utiliza WR11 como dirección de destino puede servir como código de operación de retorno, pero las subrutinas de tipo BL no se pueden anidar sin que el programador tome medidas para guardar la dirección de retorno.

El TMS9900 admite una instrucción de ejecución "X" (eXecute). Esta instrucción ejecuta la instrucción en un registro. Puede usarse para depurar (como instrucción de punto de interrupción ), para crear tablas de código de operación indexadas como las que se usan en intérpretes de código de bytes y también puede usarse para realizar una instrucción de E/S crítica en el tiempo durante una interrupción. En el siguiente código se muestra un ejemplo de su utilidad, donde se atiende una interrupción de una manera muy encapsulada que, de otro modo, requeriría muchas más instrucciones.

;************************************;; ESTA INTERRUPCIÓN SIMULA EL CONTROL DMA; ORGANIZADO DE LA SIGUIENTE FORMA:;; R9 MANTIENE EL COMANDO ACTUAL, POR EJEMPLO; IOREAD(34B8H): STCR *R8+,BYTEWIDE;LECTURA DE DATOS FDC EN TODO EL BYTE; IOWRITE(30B8H):LDCR *R8+,BYTEWIDE ;ESCRITURA DE DATOS FDC EN TODO EL BYTE; R8 MANTIENE LA DIRECCIÓN DMA ACTUAL.; R12 MANTIENE EL PUERTO IO ACTUAL - DATREG;************************************INTDRQ X R9; PUEDE SER LEER o ESCRIBIR RTWP

Este fragmento de código común durante la interrupción podría ser utilizado por comandos de lectura y escritura de E/S. Se podrían emplear métodos similares en cualquier método de depuración que se desee utilizar.

El TMS9900 también admite la instrucción eXtended OPeration (XOP). A XOP se le asigna un número en el rango de 0 a 15, así como una dirección de origen. Cuando se invoca, la instrucción realizará un cambio de contexto a través de uno de dieciséis vectores en ubicaciones predefinidas en la memoria. La instrucción XOP también coloca la dirección efectiva del operando de origen en el registro 11 del nuevo espacio de trabajo. La función de ahorro de contexto de la instrucción XOP también se puede utilizar para implementar la depuración en línea. [5]

XOP es menos flexible que un BLWP, ya que los vectores de transferencia deben estar en ubicaciones fijas, pero permite direccionar directamente un operando fuente en lugar de pasarlo en un registro o de otra manera.

XOP se puede utilizar para implementar una función de llamada al sistema. En el sistema operativo DX10 de TI, XOP 15 invoca una llamada al sistema. Un programador podría definir una macro ensambladora, por ejemplo SVC, que invoca XOP 15. Otro uso de XOP era implementar instrucciones en software que podrían ser manejadas por hardware dedicado en futuras versiones de la serie de minicomputadoras 990. Se puede mostrar un ejemplo de tales acciones en el código siguiente, donde se implementa una función de LLAMADA utilizando una instrucción XOP 6. La belleza de esta implementación de una función CALL usando y XOP es que es sencillo agregar comprobaciones para determinar si la pila se ha desbordado; por ejemplo C R10,@2*R9(R13), donde R9 apunta a la dirección del límite de pila.

 ; ;************************************************ ; LLAMADA SUBRUTINA ; DEFINIR XOP: LLAMADA DXOP,6 ; MÉTODO DE LLAMADA: LLAME A @SUBROUTINE_ADDRESS ; R10 <=> PUNTERO DE PILA ;*************************************************** ; ED32 C2AD 0014 XOP6: MOV @2*R10(R13),R10; OBTENER PUNTERO DE PILA ED36 064A DECT R10; PUNTERO DE PILA DE DISMINUCIÓN ED38 C68E MOV R14,*R10; EMPUJE VOLVER PC A LA PILA ED3A C38B MOV R11,R14;MUEVA EA A R14 (PC) PARA LLAMADA ED3C CB4A 0014 MOV R10,@2*R10(R13);ACTUALIZAR PUNTERO DE PILA ED40 0380 RTWP; AHORA ESTAMOS UTILIZANDO EL WP ORIGINAL

En comparaciones típicas con el Intel 8086 , el TMS9900 tenía programas más pequeños. [ cita necesaria ] Algunas [ cita necesaria ] desventajas fueron el pequeño espacio de direcciones y la necesidad de RAM rápida.

Implementación

Configuración de pines TMS9900 ( DIP de 64 pines )

El TMS9900 se implementó en un proceso MOS de puerta de silicio de canal N, [4] que requería fuentes de alimentación de +5 V, −5 V y +12 V y un reloj de cuatro fases (no superpuesto) con una frecuencia máxima de 3 MHz. (ciclo de 333 ns), [6] generalmente generado a partir de un cristal de 48 MHz utilizando un chip generador de reloj TIM9904 (también conocido como 74LS362).

Las instrucciones más cortas requieren ocho ciclos de reloj o 2,7 μs para completarse (suponiendo 0 ciclos de espera externos), muchas otras ejecutan entre 10 y 14 ciclos (3,3...4,7 μs); la instrucción de ejecución más larga (DIV) puede tardar hasta 124 ciclos (41,3 μs). [7]

El chip estaba empaquetado en un (entonces inusual) DIP de 64 pines y 0,9" de ancho. La cantidad comparativamente grande de pines permitió que el bus de direcciones de 15 bits (palabras) y el bus de datos de 16 bits salieran en pines dedicados sin el uso de multiplexación (a diferencia, por ejemplo, de la CPU Intel 8086 ), manteniendo simples las conexiones de memoria externa. Contrariamente a la convención utilizada por muchos otros fabricantes, TI etiquetó las líneas de datos y direcciones más importantes como "A0" y "D0", respectivamente. Las rutas de datos y la ALU tienen 16 bits de ancho.

El procesador se puede pausar con el bus de direcciones de tres estados para acceso directo a la memoria externa (DMA). Los accesos a la memoria son siempre de 16 bits de ancho, y la CPU realiza automáticamente operaciones de lectura antes de escribir para accesos de bytes.

El sistema de interrupción de hardware admite una entrada de prioridad de interrupción de 4 bits, que debía ser superior al nivel de prioridad almacenado en el registro de estado (bits 12 a 15) para que se atendiera la solicitud de interrupción. Además, la entrada /LOAD proporciona una función de interrupción no enmascarable con un vector dedicado. [8]

La CPU TMS9900 también contiene un registro de desplazamiento de 16 bits ("CRU") diseñado para interactuar con registros de desplazamiento externos, con instrucciones dedicadas que admiten el acceso a campos de 1 a 16 bits de ancho de un total de 4096 bits direccionables.

Los periféricos paralelos se pueden conectar en forma asignada en memoria al bus de datos y direcciones normal.

Aplicaciones

El Tomy Tutor , un ordenador doméstico de 1983 basado en el procesador TMS9995

El TMS9900 se utilizó en las computadoras domésticas TI-99/4 y TI-99/4A . Desafortunadamente, para reducir los costos de producción, TI optó por utilizar en estos sistemas sólo 128 palabras de 16 bits del tipo rápido de RAM al que el TMS9900 podía acceder directamente. El resto de la memoria eran 16 KB de DRAM de 8 bits a los que sólo se podía acceder indirectamente a través del controlador de pantalla de vídeo, lo que paralizó el rendimiento de la TI-99/4.

TI desarrolló la serie TM990 de módulos de computadora, que incluyen CPU, memoria y E/S, que cuando se conectan a un marco de tarjeta pueden formar una minicomputadora de 16 bits. Normalmente se utilizaban para el control de procesos. [9] Se lanzó un entrenador de microprocesador en forma de TM990/189. [10]

Desarrollo de productos de la familia TMS9900

La segunda generación de la familia de microprocesadores TMS9900 fue el TMS9995, que proporcionó "rendimiento funcional a velocidades 3 veces más rápidas que cualquier procesador de la familia 9900 anterior", [11] en gran parte debido a la inclusión de tecnología de captación previa de instrucciones. En el ámbito de las computadoras domésticas, el TMS9995 solo encontró uso en el Tomy Tutor , una actualización esotérica de la TI99-4/A llamada Geneve 9640 y un proyecto impreso en Electronics Today : el Powertran Cortex. [12] Se planeó utilizarlo en los sistemas informáticos TI-99/2 y TI-99/8, pero ninguno pasó de la etapa de prototipo.

TMS9900NL en paquete DIP de plástico

Posteriormente, TI desarrolló la familia de microprocesadores TMS99000, más potente, que se utilizó como CPU en la minicomputadora 990/10A como reducción de costos. Desafortunadamente, cuando el 990/10A llegó al mercado, el fin de la era de las minicomputadoras ya estaba a la vista.

La familia TMS99000 incluye dos microprocesadores, [1] el TMS99105A y el TMS99110A, que son idénticos excepto por el contenido de la memoria ROM del macroalmacén en el chip (la memoria del macroalmacén contiene funciones o instrucciones agregadas a través de rutinas de emulación escritas en código de máquina estándar). El macroalmacén de ROM en el chip del microprocesador TMS99110A contiene instrucciones de punto flotante que están disponibles como parte del conjunto de instrucciones en lenguaje de máquina, mientras que el TMS99105A básico no. Ambos chips pueden implementar instrucciones Macrostore en una ROM externa. Se anunció un tercer miembro de la familia TMS99000, el TMS99120 [13] , pero es posible que nunca se haya producido comercialmente. El macroalmacén de ROM en el chip del TMS99120 debía contener rutinas de soporte en tiempo de ejecución para el lenguaje de alto nivel PASCAL.

El conjunto de instrucciones para la familia TMS99000 amplía el conjunto de instrucciones 9900 manteniendo la compatibilidad. Las instrucciones adicionales incluyen aquellas para multiplicar y dividir con signos (que aparecen por primera vez en el TMS9995), desplazar palabras largas, sumar y restar; registro de estado de carga, puntero del espacio de trabajo de carga, operaciones de pila, soporte multiprocesador, manipulación de bits. Los miembros de la familia pueden acceder a 256 KB de memoria mediante segmentación de código/datos y pueden usar el asignador de memoria TIM99610 para direccionar hasta 16 MiB. La arquitectura contiene muchos otros avances con respecto a TMS9900 y TMS9995. [1]

Variantes

Notas

  1. ^ Solo el General Instrument CP1600 tiene una fecha de lanzamiento cercana.

Referencias

  1. ^ Manual de datos preliminares de los microprocesadores de 16 bits abc TMS99105A y TMS99110A (PDF) . Texas Instruments Inc. 1982. pág. 1.
  2. ^ Guttag, Karl (14 de abril de 1980). Comparaciones de rendimiento de "99000" Alpha "" (PDF) . Consultado el 26 de octubre de 2022 .
  3. ^ Rines, Walden C. (22 de junio de 2017). "Texas Instruments 99/4: la primera computadora doméstica de 16 bits del mundo". Espectro IEEE . Consultado el 8 de julio de 2017 .
  4. ^ ab Manual de datos del microprocesador TMS9900 (PDF) . Texas Instruments Inc. 1976. pág. 3.
  5. ^ "Uso de la instrucción XOP TMS 9000 para implementar una función de depuración" . Consultado el 13 de enero de 2024 .
  6. ^ Instrumentos de Texas 1976, pág. 31.
  7. ^ Instrumentos de Texas 1976, pág. 28.
  8. ^ Instrumentos de Texas 1976, pág. 6.
  9. ^ "Módulos de microcomputadora de 16 bits de la serie TM 990 de Stuart" . Consultado el 25 de marzo de 2014 .
  10. ^ "Calculadoras programables - Texas Instruments TM990/189" . Consultado el 25 de marzo de 2014 .
  11. ^ Folleto de marketing de TMS9995 (PDF) . Texas Instruments Inc. 1981. pág. 2.
  12. ^ "Powertran Cortex.com" . Consultado el 27 de marzo de 2014 .
  13. ^ Manual de diseñadores de microsistemas, segunda edición . Instrumentos de Texas limitados. 1981, págs. 3 a 25 en adelante.

enlaces externos