El NS32000 , a veces conocido como 32k , es una serie de microprocesadores producidos por National Semiconductor . El trabajo de diseño comenzó alrededor de 1980 y se anunció en la Conferencia Internacional de Circuitos de Estado Sólido en abril de 1981. El primer miembro de la familia llegó al mercado en 1982, conocido brevemente como 16032 antes de convertirse en el 32016. [1] Fue el primer microprocesador de propósito general en el mercado que utilizó datos de 32 bits internamente: el Motorola 68000 tenía registros e instrucciones de 32 bits para realizar aritmética de 32 bits, pero usaba una ALU de 16 bits para operaciones aritméticas sobre datos y, por lo tanto, tardaba el doble que el 32016 en realizar esas operaciones aritméticas. [2] [3] Sin embargo, el 32016 contenía muchos errores y, a menudo, no podía ejecutarse a su velocidad nominal. Estos problemas, y la presencia del modelo 68000, similar en todo lo demás y que había estado disponible desde 1980, llevaron a que su uso en el mercado fuera escaso a pesar del considerable interés inicial.
Siguieron varias versiones mejoradas, incluyendo el 32032 de 1985 , que era esencialmente un 32016 con errores corregidos y un bus de datos externo de 32 bits. Si bien ofrecía una velocidad un 50% mejor que el 32016, fue superado por el Motorola 68020 de 32 bits , lanzado un año antes. El 32532 , lanzado en 1987, superó al Motorola 68030 contemporáneo por casi dos veces, pero en ese momento la mayor parte del interés en los microprocesadores se había volcado hacia las plataformas RISC y este diseño, por lo demás excelente, casi no se utilizó.
National trabajó en mejoras adicionales en el 32732 , pero finalmente abandonó su intento de competir en el espacio de la unidad central de procesamiento (CPU). En su lugar, la arquitectura básica del 32000 se combinó con varios sistemas de soporte y se relanzó como el microcontrolador Swordfish . Este tuvo cierto éxito en el mercado antes de ser reemplazado por la arquitectura CompactRISC a mediados de los años 1990.
La serie NS32000 tiene su origen en un esfuerzo de National Semiconductor por producir una implementación en un solo chip de la arquitectura VAX-11 . [4] El VAX es bien conocido por su arquitectura de conjunto de instrucciones (ISA) altamente "ortogonal", en la que cualquier instrucción se puede aplicar a cualquier dato. Por ejemplo, una ADD
instrucción podría sumar el contenido de dos registros del procesador , o un registro contra un valor en la memoria, dos valores en la memoria, o usar el registro como un desplazamiento contra una dirección. Esta flexibilidad se consideró el modelo de diseño en la era de las computadoras con conjunto de instrucciones complejas (CISC). [3]
National llevó a Digital Equipment Corporation (DEC) a los tribunales en California para garantizar la legalidad del diseño, pero cuando DEC trasladó la demanda a Massachusetts , el estado de origen de DEC, la demanda se desestimó y en su lugar se desarrolló la arquitectura de la Serie 32000. Aunque la nueva arquitectura del conjunto de instrucciones no era compatible con VAX-11, sí conservaba su filosofía de diseño altamente " ortogonal ". Es decir, cada instrucción podía utilizarse con cualquier tipo de datos. Los artículos de la época también se referían a esto como "simétrico". [3]
La familia de procesadores original estaba formada por la CPU NS16032 y una variante de bajo consumo NS16C032, ambas con una ruta de datos de 16 bits y, por lo tanto, requerían dos ciclos de máquina para cargar una sola palabra de 32 bits. Ambas podían utilizarse con la unidad de gestión de memoria (MMU) NS16082, que proporcionaba compatibilidad con memoria virtual de 24 bits para hasta 16 MB de memoria física. El NS16008 era una versión reducida con una ruta de datos externa de 8 bits y sin compatibilidad con memoria virtual, que tenía un número reducido de pines y, por lo tanto, era algo más fácil de implementar. [3] Los primeros anuncios de la familia incluían el NS16016 con un bus de datos de 16 bits, y tanto el NS16008 como el NS16016 iban a presentar un modo de emulación para el Intel 8080 que funcionaba a una velocidad cuatro veces superior a la de ese procesador. [5]
Al mismo tiempo, National Semiconductor también anunció dos versiones futuras, la NS32032 y la NS32132. La primera era esencialmente una versión de la NS16032 con un bus de datos externo de 32 bits, lo que le permitía leer datos al doble de velocidad. Este proyecto se lanzaría en 1984. La NS32132 era una versión con direcciones internas de 29 bits y externas de 32 bits, lo que le permitía direccionar una memoria completa de 4 GB. Se lanzaría en 1985. [3]
Todos estos también se pueden utilizar con la unidad de punto flotante (FPU) NS16081. [3]
Los procesadores tienen 8 registros de 32 bits de propósito general, más una serie de registros de propósito especial:
(Registros de sistema adicionales no listados).
El conjunto de instrucciones se parece mucho al modelo CISC , con instrucciones de 2 operandos, operaciones de memoria a memoria, modos de direccionamiento flexibles y codificación de instrucciones alineadas por bytes de longitud variable. Los modos de direccionamiento pueden implicar hasta dos desplazamientos y dos indirecciones de memoria por operando, así como indexación escalada, lo que hace que la instrucción más larga concebible sea de 23 bytes. El número real de instrucciones es mucho menor que el de los procesadores RISC contemporáneos.
A diferencia de otros procesadores, no se proporciona un incremento automático del registro base; la única excepción es un modo de direccionamiento de "parte superior de la pila" que hace aparecer fuentes y envía destinos. De manera única, el tamaño del desplazamiento se codifica en sus bits más significativos: 0, 10 y 11 precedidos por desplazamientos con signo de 7, 14 y 30 bits. (Aunque los procesadores son siempre little-endian, los desplazamientos en el flujo de instrucciones se almacenan en orden big-endian).
Los operandos de propósito general se especifican mediante un campo de 5 bits. A esto se le puede agregar un byte de índice (que especifica el registro de índice y la dirección base de 5 bits) y hasta 2 desplazamientos de longitud variable por operando.
El primer chip de la serie se denominó originalmente 16032, pero más tarde se lo rebautizó como 32016 para enfatizar sus componentes internos de 32 bits. Esto lo contrasta con su principal competidor en este espacio, el Motorola 68000 (68k) de 1979. El 68k utilizaba instrucciones y registros de 32 bits, pero su unidad lógica aritmética (ALU), que controla gran parte de la tarea de procesamiento general, era de solo 16 bits. Esto significaba que tenía que pasar datos de 32 bits por la ALU dos veces para completar una operación. En cambio, el NS32000 tiene una ALU de 32 bits, por lo que las instrucciones de 16 y 32 bits tardan el mismo tiempo en completarse.
El 32016 se comercializó por primera vez en 1982 en un encapsulado DIP de 46 pines . Para colocar un chip de 32 bits en un encapsulado de 46 pines, era necesario que el bus de datos tuviera 16 bits de ancho y compartiera pines con el bus de direcciones de 24 bits. Al compartir pines, el hardware externo tenía que bloquear la dirección de la dirección de memoria mientras los pines se usaban en modo de datos, y esto introduce un retraso de 1 ciclo en cada acceso. Por lo tanto, si bien la implementación interna de 32 bits mejora el rendimiento, el pequeño número de pines lo reduce nuevamente.
Es posible que haya sido el primer chip de 32 bits en alcanzar la producción en masa y la venta (al menos según el marketing de National). Sin embargo, en un informe publicado en junio de 1983, se comentó que National estaba "prometiendo cantidades de producción este verano" de 16032 piezas, después de haber estado "enviando cantidades de muestra durante varios meses", con el coprocesador de punto flotante probando "este mes". [6]
Aunque la introducción de 1982 es posterior al 68k en unos dos años, el 68k todavía no se usaba ampliamente en el mercado y el 32016 generó un interés significativo. Desafortunadamente, las primeras versiones estaban llenas de errores y rara vez se podían ejecutar a su velocidad nominal. En 1984, después de dos años, la lista de erratas todavía contenía elementos que especificaban condiciones incontrolables que harían que el procesador se detuviera, lo que obligaría a reiniciarlo.
El plan de trabajo original del producto preveía partes de 6 MHz y 10 MHz durante 1983 y partes de 12 MHz y 14 MHz durante 1984. [3] Sin embargo, los informes de prensa en 1984 indicaron dificultades para mantener este plan de trabajo, ya que se informó que se habían necesitado cinco meses para aumentar la frecuencia de las partes de 6 MHz a 8 MHz, y los representantes estimaron que se necesitarían "dos, tres o cinco meses más" para aumentar la frecuencia a 10 MHz. Se informó que dos chips no especificados de los cinco del conjunto de chips eran la causa de estos problemas. [7] Un artículo de principios de 1985 sobre la estación de trabajo Whitechapel MG-1 basada en 32016 señaló que la unidad de gestión de memoria 32081 "padecía errores" y se había ubicado en su propia placa que proporcionaba correcciones de hardware. [8] En 1986, Texas Instruments anunció un "conjunto de chips de microprocesador TI32000 de 32 bits de 10 MHz totalmente calificado" que constaba de la CPU TI32016 y la unidad de gestión de memoria TI32082 como dispositivos de 48 pines, la unidad de control de temporización TI32201 y la unidad de punto flotante TI32081 como dispositivos de 24 pines, y la unidad de control de interrupción TI32202 como un dispositivo de 40 pines, con el conjunto de chips de cinco dispositivos "con un precio de $289 en cantidades de 100 unidades". [9]
National modificó su metodología de diseño para que fuera posible poner la pieza en producción y se desarrolló un sistema de diseño basado en el lenguaje "Z" en colaboración con la Universidad de Tel-Aviv, cerca del centro de diseño "NSC" en Herzliya , Israel. El lenguaje "Z" es similar al Verilog y VHDL actuales , pero tiene una sintaxis similar a Pascal y está optimizado para diseños de relojes de dos fases . Sin embargo, cuando los frutos de estos esfuerzos se hicieron sentir en el diseño, ya había numerosas máquinas de 68k en el mercado, en particular la Apple Macintosh , y el 32016 nunca se utilizó de forma generalizada.
El 32016 tiene un bus de datos externo de 16 bits , un bus de direcciones externo de 24 bits y un conjunto completo de instrucciones de 32 bits . También incluye una interfaz de coprocesador , lo que permite que los coprocesadores como las FPU y las MMU se conecten como pares al procesador principal. La MMU se basa en una memoria virtual de paginación a demanda , que es la característica más inusual en comparación con el enfoque de memoria segmentada utilizado por la competencia, y se ha convertido en el estándar para el diseño de los microprocesadores actuales. La arquitectura admite un mecanismo de reinicio de instrucciones en caso de un fallo de página, que es mucho más limpio que el enfoque de Motorola para volcar el estado interno en caso de un fallo de página, que debe leerse de nuevo antes de continuar con la instrucción.
Aunque a menudo se comparaba con el conjunto de instrucciones del 68k, los empleados del NSC lo rechazaban; una de las frases clave de marketing de la época era "La elegancia lo es todo", comparando la Serie 32000, altamente ortogonal, con la "chapuza". Una diferencia clave es el uso que hace Motorola de registros de dirección y registros de datos, con instrucciones que sólo funcionan en registros de dirección o de datos. La Serie 32000 tiene registros de propósito general, descritos como registros de "datos de dirección" en la documentación técnica. [10]
El 32032 se introdujo en 1984. Es casi completamente compatible con el 32016, pero cuenta con un bus de datos de 32 bits (aunque mantiene el bus de direcciones de 24 bits) para un rendimiento algo más rápido, descrito como "rendimiento de minicomputadora" comparable con el de un sistema VAX-11. [11] : 39 También hubo un 32008, un 32016 con un bus de datos reducido a 8 bits de ancho para aplicaciones de bajo costo. Es filosóficamente similar al MC68008 , e igualmente impopular.
National también produjo una serie de chips de soporte relacionados, como la unidad de punto flotante (FPU) NS32081, la unidad de administración de memoria (MMU) NS32082, el acceso directo a memoria (DMA) NS32203 y los controladores de interrupción NS32202 . Con el conjunto completo más los chips de memoria y los periféricos, era posible construir un sistema informático de 32 bits capaz de soportar sistemas operativos multitarea modernos, algo que anteriormente solo había sido posible en minicomputadoras y mainframes costosos .
En 1985, National Semi presentó el NS32332, una versión muy mejorada del 32032. Según la hoja de datos, las mejoras incluyen "la incorporación de un nuevo hardware de direccionamiento dedicado (que consta de una ALU de alta velocidad, un desplazador de barril y un registro de dirección), una cola de precarga de instrucciones aumentada (20 bytes) muy eficiente, una nueva interfaz/protocolo de bus de sistema/memoria, un protocolo de procesador esclavo de mayor eficiencia y, finalmente, mejoras del microcódigo". También había una nueva MMU NS32382, una FPU NS32381 y la (muy rara) interfaz NS32310 para un FPA Weitek . El aumento de rendimiento agregado del NS32332 a partir de estas mejoras solo lo hizo un 50 por ciento más rápido que el NS32032 original y, por lo tanto, menos que el de su principal competidor, el MC68020 .
National Semi presentó el NS32532 a principios de 1987. Con una frecuencia de 20, 25 y 30 MHz, se trataba de un rediseño completo de la implementación interna con una tubería de cinco etapas, una memoria caché/MMU integrada y un rendimiento de memoria mejorado, lo que lo hacía aproximadamente el doble de eficiente que los competidores MC68030 e i80386 . En esta etapa, las arquitecturas RISC estaban empezando a abrirse paso, y los principales competidores eran los ahora igualmente muertos AM29000 y MC88000 , que se consideraban más rápidos que el NS32532. Para el punto flotante, el NS32532 utilizaba la interfaz NS32381 o NS32580 existente para un FPA Weitek. [12] El NS32532 fue la base del PC532 , un proyecto de hardware de "dominio público", y uno de los pocos que produjo una máquina útil que ejecutaba un sistema operativo real (en este caso, Minix o NetBSD ).
El semimítico NS32732 (a veces llamado NS32764), concebido como el sucesor de alto rendimiento del NS32532, nunca llegó al mercado.
Un derivado del NS32732 llamado Swordfish estaba destinado a sistemas embebidos y llegó alrededor de 1990. Swordfish tiene una unidad de punto flotante integrada, temporizadores, controladores DMA y otros periféricos que normalmente no están disponibles en los microprocesadores. Tiene un bus de datos de 64 bits y está overclockeado internamente de 25 a 50 MHz. El arquitecto jefe de Swordfish es Donald Alpert, quien luego dirigió el equipo de arquitectura que diseñó el Pentium . La microarquitectura interna de Pentium es similar a la del Swordfish anterior.
El foco de Swordfish eran las impresoras láser PostScript de gama alta , y su rendimiento era excepcional en aquella época. Las soluciones de la competencia podían imprimir aproximadamente una página nueva por minuto, pero la unidad de demostración Swordfish imprimía dieciséis páginas por minuto, limitada únicamente por la mecánica del motor láser. En cada página, imprimía cuánto tiempo había estado inactiva, esperando a que el motor completara su trabajo.
El chip Swordfish es enorme y finalmente se decidió abandonar el proyecto por completo, y el producto nunca entró en producción. Las lecciones del Swordfish se utilizaron para los diseños CompactRISC. Al principio, había un CompactRISC-32 y un CompactRISC-16, diseñados con "Z". National nunca lanzó al mercado un chip con el núcleo CompactRISC-32. El departamento de investigación de National trabajó con la Universidad de Michigan para desarrollar el primer modelo Verilog sintetizable, y Verilog se utilizó a partir del CR16C.
A partir de 1987 se introdujeron versiones de la antigua línea NS32000 para productos de bajo coste como el NS32CG16, NS32CG160, NS32FV16, NS32FX161, NS32FX164 y el NS32AM160/1/3, todos basados en el NS302CG16.
Estos procesadores tuvieron cierto éxito en el mercado de las impresoras láser y el fax , a pesar de la intensa competencia de los chips RISC de AMD e Intel . Cabe destacar especialmente el NS32CG16. La diferencia clave entre este y el NS32C016 es la integración de la costosa unidad de control de temporización (TCU) que genera el reloj de dos fases necesario a partir de un cristal, y la eliminación del soporte del coprocesador de punto flotante, lo que liberó espacio de microcódigo para el útil conjunto de instrucciones BitBLT, que mejora significativamente el rendimiento en las operaciones de impresora láser, haciendo que este chip de 60.000 transistores sea más rápido que el MC68020 de 200.000 transistores. El NS32CG160 es el CG16 con temporizadores y periféricos DMA, mientras que los chips NS32FV/FX16x tienen una funcionalidad DSP adicional sobre el núcleo BitBLT del CG16 para el mercado de fax y contestador automático . Se complementan con el NS32GX32 basado en NS32532 posterior. A diferencia de los chips anteriores, no había hardware adicional. El NS32GX32 es el NS32532 sin la MMU que se vende a un precio atractivo para sistemas integrados. Al principio, era solo un chip comentado. No está claro si el chip fue rediseñado para una producción a menor costo.
Existen hojas de datos para un NS32132, aparentemente diseñado para sistemas multiprocesador. Se trata del NS32032 ampliado con un árbitro. El uso del bus del NS32032 es de alrededor del 50 por ciento, debido a su conjunto de instrucciones muy compacto, o su canalización muy lenta como lo expresarían los competidores. De hecho, una aplicación sugerida del NS32032 fue como parte de un "sistema de transacción tolerante a fallas" que emplea "dos 32032 en paralelo y compara los resultados en ciclos de memoria alternativos para detectar errores suaves". [6] El chip NS32132 permite conectar un par de CPU al mismo sistema de memoria, sin muchos cambios en la PCB. Diab Data AB construyó sistemas prototipo en Suecia , pero no funcionaron tan bien como el sistema MC68020 de una sola CPU diseñado por la misma empresa.
En junio de 2015, Udo Möller lanzó una implementación completa de Verilog de un procesador NS32000 en OpenCores . [19] Totalmente compatible con software con una CPU NS32532 con FPU N32381, es significativamente más rápido cuando se implementa en un FPGA , [20] ambos operan a una frecuencia de reloj más alta y usan menos ciclos por instrucción.
Recientemente hemos cambiado el nombre de nuestros productos de microprocesadores de 32 bits de la familia NS16000 a Serie 32000. Este programa entró en vigencia inmediatamente después de la firma de Texas Instruments, Inc. como nuestra segunda fuente para la Serie 32000.
Todos los registros de datos de dirección están disponibles para todas las instrucciones. Por lo tanto, el compilador tiene libertad en el uso de los registros y no necesita hacer mucho mantenimiento. La arquitectura también permite que los registros de datos de dirección se utilicen como acumuladores, registros de datos y punteros de dirección. Esto representa una gran mejora con respecto a las máquinas que solo permiten que unos pocos registros sirvan como punteros de dirección, lo que crea un cuello de botella en los cálculos de dirección, una función muy importante en la programación de lenguajes de alto nivel.