El TMS9900 fue uno de los primeros microprocesadores de 16 bits de un solo chip disponibles comercialmente . [ a ] Presentado en junio de 1976, implementaba la arquitectura de la minicomputadora TI-990 de Texas Instruments en un formato de un solo chip, y se utilizó inicialmente para los modelos de gama baja de esa línea.
Su formato DIP de 64 pines encarecía su implementación en máquinas más pequeñas en comparación con el formato de 40 pines, más común, y tuvo relativamente pocos éxitos de diseño fuera del propio uso de TI. Entre esos usos se encontraban sus ordenadores domésticos TI-99/4 y TI-99/4A , de los que finalmente se vendieron alrededor de 2,8 millones de unidades.
A mediados de la década de 1980, el sector de los microordenadores se estaba orientando hacia sistemas de 16 bits, como el Intel 8086 , y diseños más recientes de 16/32 bits, como el Motorola 68000. Sin un futuro claro para el chip, la división de semiconductores de TI centró su atención en procesadores de 32 bits de propósito especial: el Texas Instruments TMS320 , presentado en 1983, y el procesador gráfico Texas Instruments TMS340 .
La arquitectura 9900 se mantuvo vigente hasta la década de 1990 como el procesador de comunicaciones en el chipset TMS380 de TI para redes Token Ring (más tarde Ethernet). [ 1 ]
Historia

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 (12 bits) de un solo chip, y el Fairchild 9440 y el Data General mN601 eran versiones de un solo chip del Nova de Data General . A diferencia de los microprocesadores multichip de 16 bits como el National Semiconductor IMP-16 o el DEC LSI-11 , algunos de los cuales precedieron al TMS9900, el 9900 era un microprocesador de 16 bits autónomo y 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 parten de cero. Entre ellas destaca el uso por parte del TMS9900 de registros de procesador mapeados en la memoria principal . [ 2 ] Esto permite un cambio de contexto rápido , 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 almacenara en la memoria o en la pila.
La desventaja de este enfoque es que el acceso a estos registros es mucho más lento. En una implementación de minicomputadora con memoria rápida, el efecto es relativamente pequeño y la ventaja en un entorno de tiempo real o multitarea es significativa, ya que los cambios de contexto son frecuentes. En otros casos, como en las típicas microcomputadoras monousuario de la época, esta compensación puede no ser rentable. Las implementaciones de 40 pines del 9900 incluían 128 o 256 bytes de RAM rápida integrada 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 presentó el TMS99110, entonces con nombre en clave "Alpha", a un grupo de IBM que desarrollaba una computadora personal. "No nos dimos cuenta hasta 1981 de lo que habíamos perdido" porque IBM eligió el Intel 8088 para la IBM PC , recordó. [ 3 ] 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 podía expandir su espacio de direcciones a 16 MiB solo mediante mapeo de páginas; el 8088 podía direccionar 256K a través de segmentos. [ 4 ]
El TI 990 tuvo tanto éxito que TI abandonó sus planes de usar el TMS9900 en computadoras personales de gama alta que competirían con la minicomputadora, produciendo únicamente la TI-99/4A de gama baja . [ 5 ] Tras la descontinuación del 99/4A, la división de microprocesadores de la compañía finalmente cambió su enfoque a la serie de procesadores de propósito especial TMS320 . [ 3 ]
Las implementaciones de microcomputadoras en chip de variantes del 9900 en encapsulados de 40 pines incluían el TMS9940, el TMS9980/81 y el TMS9995. El SBP9900 era una versión reforzada. [ 6 ]
La última generación fue la serie 99000, creada para ser la CPU del 990/10A en 1981. Los TMS99105 y 110 se vendieron como piezas de catálogo. [ 7 ]
Arquitectura
El TMS9900 tiene tres registros internos de 16 bits : el contador de programa (PC), el registro de estado (ST) y el registro de puntero de espacio de trabajo (WP). [ 8 ] El WP apunta a una dirección base en la RAM externa donde residen 16 registros de usuario de propósito general (cada uno de 16 bits) para servir al procesador. Esta arquitectura permite un cambio de contexto rápido ; por ejemplo, cuando se ingresa a una subrutina , solo es necesario cambiar el registro de espacio de trabajo en lugar de requerir que los registros se guarden individualmente. A diferencia del 68000 y el 8086, los bits están numerados con el MSB (bit más significativo) siendo el bit 0.
Las direcciones se refieren a bytes con la convención de ordenación big-endian . El TMS9900 es una máquina clásica de 16 bits con un espacio de direcciones de 2¹⁶ bytes (65 536 bytes o 32 768 palabras).
No existe un registro dedicado para el puntero de pila. En su lugar, existen instrucciones de salto que guardan el contador de programa en un registro (BL: Branch and Link) o que cambian el contexto del registro (BLWP: Branch and Link Workspace Pointer, o XOP). Los 16 vectores de interrupción de hardware y los 16 de software constan cada uno de un par de valores PC y WP, por lo que el cambio de contexto del registro también se realiza automáticamente mediante una interrupción. Las pilas pueden implementarse sobre cualquiera de estos mecanismos. [ 9 ]
Además de los típicos indicadores de un solo bit que se ven en la mayoría de los procesadores, el registro de estado contiene una máscara de interrupción de 4 bits. El valor, de 0 a 15, indica la interrupción máxima que se puede activar. Por ejemplo, si se ha llamado a la interrupción 10 y se activa la interrupción 12, la CPU comprueba estos valores, ve que la interrupción 10 está en ejecución y bloquea la solicitud. [ 10 ]
Conjunto de instrucciones y direccionamiento
El TMS9900 cuenta con 69 instrucciones de una, dos o tres palabras, siempre alineadas en memoria. El conjunto de instrucciones es bastante ortogonal , lo que significa que, salvo algunas excepciones, las instrucciones pueden utilizar todos los métodos de acceso a los operandos (modos de direccionamiento).
Los modos de direccionamiento incluyen Inmediato (operando en la instrucción), Directo o "Simbólico" (dirección del operando en la instrucción), Registro (operando en el registro del espacio de trabajo), Registro Indirecto (dirección del operando en el registro del espacio de trabajo) con o sin autoincremento, Indexado (dirección del operando en la instrucción indexada con el contenido del registro del espacio de trabajo) y Contador de Programa Relativo.
Las instrucciones de doble operando más importantes (suma, resta, comparación, movimiento, etc.) tienen un modo de direccionamiento de 2 bits y campos de selección de registro de 4 bits tanto para el operando de origen como para el 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 de espacio de trabajo 0 (WR0) no se puede utilizar en modo indexado. En instrucciones de doble operando menos frecuentes, 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 las instrucciones de multiplicación y división).
El control de flujo se facilita mediante un grupo de una instrucción de salto incondicional y doce condicionales. Los destinos de salto son relativos al PC con un desplazamiento de entre -128 y +127 direcciones de palabra.
Para las llamadas a subrutinas, la instrucción Branch and Load Workspace Pointer (BLWP) carga nuevos valores de WP y PC, y luego guarda los valores de WP, PC y ST en los nuevos registros 13, 14 y 15, respectivamente. Al finalizar la subrutina, la instrucción Return Workspace Pointer (RTWP) los restaura en orden inverso. Mediante BLWP/RTWP, es posible anidar llamadas a subrutinas a pesar de la ausencia de una pila; sin embargo, el programador debe asignar explícitamente el espacio de trabajo de registros correspondiente.
El conjunto de instrucciones también contiene un código de operación de bifurcación y enlace (BL) que solo guarda el PC en el registro 11 sin modificar el WP. En este caso, una instrucción de bifurcación (B) que utiliza WR11 como dirección de destino puede funcionar 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 la instrucción de ejecución "X" (eXecute). Esta instrucción ejecuta la instrucción almacenada en un registro. Puede utilizarse para depuración (como instrucción de punto de interrupción ), para crear tablas de códigos de operación indexadas, como las que se usan en los intérpretes de código de bytes, y también para realizar una instrucción de E/S crítica en el tiempo durante una interrupción. Un ejemplo de su utilidad se muestra en el código siguiente, donde se atiende una interrupción de forma muy encapsulada, lo que de otro modo requeriría muchas más instrucciones.
;*********************************** ; ; ESTA INTERRUPCIÓN SIMULA EL CONTROL DMA ; ORGANIZADO DE LA SIGUIENTE MANERA: ; ; R9 TIENE EL MANDO ACTUAL, EG ; IOREAD(34B8H): STCR *R8+,BYTEWIDE ;LECTURA DE DATOS FDC DE ANCHO DE BYTE ; IOWRITE(30B8H):LDCR *R8+,BYTEWIDE ;ESCRITURA DE DATOS FDC DE ANCHO DE BYTE ; R8 CONTIENE LA DIRECCIÓN DMA ACTUAL. ; R12 CONTIENE EL PUERTO DE E/S ACTUAL - DATREG ;************************************ INTDRQ X R9; PUEDE SER DE LECTURA O ESCRITURA RTWP
Este fragmento de código común durante la interrupción puede ser utilizado tanto por comandos de lectura como de escritura de E/S. Se pueden emplear métodos similares en cualquier método de depuración que se desee utilizar.
El TMS9900 también admite la instrucción de Operación Extendida (XOP). A XOP se le proporciona un número entre 0 y 15, así como una dirección de origen. Al invocarse, la instrucción realiza un cambio de contexto a través de uno de dieciséis vectores en ubicaciones predefinidas de 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 puede utilizarse para implementar la depuración en línea. [ 11 ]
XOP es menos flexible que BLWP, ya que los vectores de transferencia deben estar en ubicaciones fijas, pero permite que un operando fuente sea direccionado directamente en lugar de pasarlo a través de un registro o de otra manera.
XOP se puede usar 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 de ensamblador, por ejemplo SVC, que invoque 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. Un ejemplo de tales acciones se puede mostrar en el código a continuación, donde se implementa una función CALL usando una instrucción XOP 6. La ventaja de esta implementación de una función CALL usando un XOP es que es sencillo agregar comprobaciones para determinar si la pila se desbordó, por ejemplo C R10,@2*R9(R13), donde R9 apunta a la dirección del límite de la pila.
; ;************************************************ ; LLAMAR A LA SUBRUTINA ; DEFINIR XOP: LLAMADA DXOP,6 ; MÉTODO DE LLAMADA: CALL @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 DECREMENTO ED38 C68E MOV R14,*R10 ;EMPUJAR EL PC DE RETORNO A LA PILA ED3A C38B MOV R11,R14 ;MOVER EA A R14 (PC) PARA LLAMADA ED3C CB4A 0014 MOV R10,@2*R10(R13) ;ACTUALIZAR PUNTERO DE PILA ED40 0380 RTWP; AHORA ESTAMOS USANDO EL WP ORIGINAL
En comparaciones típicas con el Intel 8086 , el TMS9900 tenía programas más pequeños. Algunas desventajas eran el espacio de direcciones reducido y la necesidad de una memoria RAM rápida.
Implementación

El TMS9900 se implementó en un proceso MOS de puerta de silicio de canal N, [ 8 ] 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), [ 12 ] 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 se ejecutan entre 10 y 14 ciclos (3,3...4,7 μs); la instrucción de mayor duración (DIV) puede tardar hasta 124 ciclos (41,3 μs). [ 13 ]
Al igual que el Motorola 68000, el chip se encapsulaba en un DIP de 64 pines y 0,9 pulgadas de ancho (algo inusual en aquel entonces) . El número relativamente grande de pines permitía que el bus de direcciones de 15 bits (palabra) y el bus de datos de 16 bits se conectaran mediante pines dedicados sin necesidad de multiplexación (a diferencia, por ejemplo, de la CPU Intel 8086 ), lo que simplificaba las conexiones de memoria externa. Contrariamente a la convención utilizada por la mayoría de los demás fabricantes, TI denominó las líneas de dirección y datos más importantes como "A0" y "D0", respectivamente. Todas las rutas de datos internas y la ALU tienen un ancho de 16 bits.
El procesador puede pausarse con el bus de direcciones en estado de alta impedancia para el acceso directo a memoria (DMA) externo. Los accesos a memoria siempre son de 16 bits, y la CPU realiza automáticamente operaciones de lectura antes de la escritura para las instrucciones con accesos de un byte.
El sistema de interrupciones de hardware admite una entrada de prioridad de interrupción de 4 bits, que debe ser superior al nivel de prioridad almacenado en el registro de estado (bits 12-15) para que se atienda la solicitud de interrupción. Además, la entrada /LOAD proporciona una función de interrupción no enmascarable con un vector dedicado. [ 14 ]
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 entre 1 y 16 bits de ancho de un total de 4096 bits direccionables.
Los periféricos paralelos pueden conectarse al bus de direcciones y datos habitual mediante un mapeo de memoria .
Aplicaciones

El TMS9900 se utilizó en los ordenadores domésticos TI-99/4 y TI-99/4A . Desafortunadamente, para reducir los costes de producción, TI optó por utilizar solo 256 bytes (128 palabras de 16 bits) de la memoria RAM rápida a la que el TMS9900 podía acceder directamente. El resto de la memoria consistía en 16 KB de DRAM de 8 bits , accesible únicamente de forma indirecta a través del controlador de vídeo, lo que limitaba considerablemente el rendimiento de estos equipos.
TI desarrolló la serie de módulos informáticos TM990, que incluían CPU, memoria y E/S, los cuales, al conectarse a un chasis de tarjeta, podían formar una minicomputadora de 16 bits. Estos se utilizaban típicamente para el control de procesos. [ 15 ] Se lanzó un entrenador de microprocesadores en forma del TM990/189. [ 16 ]
A finales de la década de 1970, John Walker y Dan Drake desarrollaron tarjetas de bus S100 basadas en el TMS9900 y un conjunto completo de software para acompañarlas. [ 17 ] [ 18 ] Posteriormente, fueron cofundadores de Autodesk , que se basó en parte en el software desarrollado originalmente para estos sistemas basados en el TMS9900. [ 19 ]
El TI Professional , lanzado a principios de 1983, utilizaba el Intel 8088 y no una pieza de la serie TMS99000, ya que para entonces la necesidad de emular el estándar de hardware y software del IBM PC era demasiado grande. [ 20 ]
Desarrollo de productos de la familia TMS9900
La siguiente generación del TMS9900 fue el TMS9995, que proporcionó "un rendimiento funcional a velocidades tres veces superiores a cualquier procesador anterior de la familia 9900", [ 21 ] debido en gran parte a la inclusión de la tecnología de precarga de instrucciones. En el ámbito de los ordenadores domésticos, el TMS9995 solo se utilizó en el Tomy Tutor , así como en una actualización de ordenador en tarjeta de terceros poco conocida para el TI-99/4A llamada Geneve 9640 , y un proyecto publicado en Electronics Today : el Powertran Cortex. [ 22 ] Se planeó su uso en los sistemas informáticos TI-99/2 y TI-99/8, pero ninguno pasó de la fase de prototipo.

Posteriormente, Texas Instruments desarrolló la familia de microprocesadores TMS99000, más potente, que se utilizó como CPU en la minicomputadora 990/10A para reducir costos. En definitiva, cuando la 990/10A llegó al mercado, el fin de la era de las minicomputadoras ya era inminente.
La familia TMS99000 incluye dos microprocesadores, [ 7 ] el TMS99105A y el TMS99110A, que son idénticos excepto por el contenido de la memoria ROM de macroalmacenamiento en el chip (la memoria de macroalmacenamiento contiene funciones o instrucciones adicionales a través de rutinas de emulación escritas en código máquina estándar). El macroalmacenamiento ROM en el chip del microprocesador TMS99110A contiene instrucciones de punto flotante que están disponibles como parte del conjunto de instrucciones del lenguaje máquina, mientras que el TMS99105A básico no las tiene. Ambos chips pueden implementar instrucciones de macroalmacenamiento en una ROM externa. Un tercer miembro de la familia TMS99000, el TMS99120, fue anunciado [ 23 ] pero es posible que nunca se haya producido comercialmente. El macroalmacenamiento ROM en el chip del TMS99120 iba a contener rutinas de soporte en tiempo de ejecución para el lenguaje de alto nivel PASCAL.
El conjunto de instrucciones de la familia TMS99000 amplía el conjunto de instrucciones del 9900 manteniendo la compatibilidad. Las instrucciones adicionales incluyen multiplicación y división con signo (que aparecieron por primera vez en el TMS9995); desplazamiento, suma y resta de palabras largas; carga del registro de estado; carga del puntero del espacio de trabajo; operaciones de pila; soporte para multiprocesadores; y 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 mapeador de memoria TIM99610 para direccionar hasta 16 MiB. La arquitectura contiene muchos otros avances con respecto al TMS9900/TMS9995. [ 7 ]
Variantes
- Fotos de muerte
- TMS9900
TMS9981- TMS9995
- TMS99105A
Notas
- ↑ Solo el General Instrument CP1600 tiene una fecha de lanzamiento próxima.
Referencias
Citas
- ↑ Guía del usuario del chipset adaptador TMS380 . Texas Instruments. Julio de 1986. págs. A-1 – A-22 . Consultado el 21 de noviembre de 2024 .
- ↑ Whitworth, Ian (enero de 1979). "Revisión de la arquitectura de microprocesadores". Microprocesadores y microsistemas . 3 (1): 21– 28. doi : 10.1016/0141-9331(79)90088-7 .
- 1 2 Rhines, Walden C. (22 de junio de 2017). "The Texas Instruments 99/4: World's First 16-Bit Home Computer" . IEEE Spectrum . Archivado del original el 22 de junio de 2017. Recuperado el 8 de julio de 2017 .
- ↑ Guttag, Karl (1980-04-14). "99000 "Alpha" Performance Comparisons" (PDF) . Recuperado el 26 de octubre de 2022 .
- ↑ Kewney, Guy (29 de noviembre de 2008). "¿Qué pasaría si las computadoras también volvieran a los años 70?" . The Register . Archivado del original el 23 de abril de 2025. Consultado el 7 de junio de 2025 .
- ↑ 9900 Family Systems Design and Data Book (PDF) . Texas Instruments. 1978. págs. 2-3. ISBN 0-89512-026-7Consultado el 21 de noviembre de 2024 .
- 1 2 3 Manual de datos preliminares de los microprocesadores de 16 bits TMS99105A y TMS99110A (PDF) . Texas Instruments Inc. 1982. pág. 1.
- 1 2 Manual 1976 , pág. 3.
- ↑ "Documento de diseño del sistema operativo DX10 versión 3.5" (PDF) . Texas Instruments, Inc. 1982. pág. 8.1.
- ↑ Manual 1976 , pág. 8.
- ↑ "Uso de la instrucción XOP del TMS 9000 para implementar una función de depuración" . GitHub . Consultado el 13 de enero de 2024 .
- ↑ Texas Instruments 1976 , pág. 31. Error de sfn: no hay destino: CITEREFTexas_Instruments1976 ( ayuda )
- ↑ Texas Instruments 1976 , pág. 28. Error de sfn: no hay destino: CITEREFTexas_Instruments1976 ( ayuda )
- ↑ Texas Instruments 1976 , pág. 6. Error de sfn: no hay destino: CITEREFTexas_Instruments1976 ( ayuda )
- ↑ "Módulos de microcomputadora de 16 bits de la serie TM 990 de Stuart" . Consultado el 25 de marzo de 2014 .
- ↑ "Calculadoras programables - Texas Instruments TM990/189" . Consultado el 25 de marzo de 2014 .
- ↑ "Historia de Marinchip Systems" . Consultado el 25 de agosto de 2024 .
- ↑ «Software Marinchip» . Consultado el 25 de agosto de 2024 .
- ↑ "Historial de Autocad" . Consultado el 25 de agosto de 2024 .
- ↑ Webster, Robin (mayo de 1983). "TI Professional" . Personal Computer World . Vol. 6, n.º 5, pág. 152. Consultado el 6 de junio de 2025 .
- ↑ Folleto de marketing TMS9995 (PDF) . Texas Instruments Inc. 1981. pág. 2.
- ↑ "Powertran Cortex.com" . Consultado el 27 de marzo de 2014 .
- ↑ Manual del diseñador de microsistemas, 2.ª edición . Texas Instruments Limited. 1981. págs. 3-25 en adelante.
- ↑ Schabowski, John (1981-06-12). "Especificación del emulador del sistema de microprocesador TMS9995" (PDF) . Recuperado el 27-11-2025 .
Bibliografía
- Manual de datos del microprocesador TMS9900 (PDF) . Texas Instruments. 1976.
Enlaces externos
- Manuales y referencias del TMS9900 de Bitsavers
- TI-99/4A
- Microprocesadores de Texas Instruments
- microprocesadores de 16 bits
- Introducciones relacionadas con la informática en 1976