stringtranslate.com

HP Saturno

La familia Saturn de microprocesadores de 4 bits ( ruta de datos ) fue desarrollada por Hewlett-Packard en la década de 1980, primero para la computadora de mano HP-71B y luego para varias calculadoras HP (comenzando con la HP-18C ). Sucedió a la familia de procesadores Nut utilizada en calculadoras anteriores. El chip Saturn original se utilizó por primera vez en la computadora portátil programable BASIC HP-71B , introducida en 1984. Los modelos posteriores de la familia impulsaron la popular serie de calculadoras HP 48 . El HP48SX y el HP48S fueron los últimos modelos en utilizar procesadores Saturn originales fabricados por HP. Los modelos de calculadora posteriores utilizaron procesadores Saturn fabricados por NEC. La serie HP 49 también utilizó inicialmente la CPU Saturn, hasta que la fábrica NEC [nb 1] ya no pudo fabricar el procesador por razones técnicas en 2003. Por lo tanto, a partir del modelo HP 49g+ en 2003, las calculadoras cambiaron a una Samsung S3C2410. Procesador con un núcleo ARM920T (parte de la arquitectura ARMv4T ) que ejecutaba un emulador del hardware Saturn en software. En 2000, HP 39G y HP 40G fueron las últimas calculadoras introducidas basadas en el hardware Saturn fabricado por NEC. Las últimas calculadoras basadas en el emulador Saturn fueron la HP 39gs , HP 40gs y HP 50g en 2006, así como la revisión de 2007 de la hp 48gII . La HP 50g, la última calculadora que utilizó este emulador, dejó de fabricarse en 2015 cuando Samsung dejó de producir el procesador ARM en el que se basaba. [1] [2] [3]

Arquitectura

El hardware de Saturn tiene un diseño de serie nibble [4] a diferencia de su predecesor Nut , que era de serie de bits . [5] Internamente, la CPU Saturn tiene cuatro buses de datos de 4 bits que permiten un rendimiento de casi 1 ciclo por mordisco con uno o dos buses actuando como fuente y uno o dos como destino. [4] La palabra direccionable más pequeña es un cuarteto de 4 bits que puede contener un dígito decimal codificado en binario (BCD). Cualquier unidad de datos en los registros mayor que un cuarteto, en el que el final de dicha unidad de datos cae en un límite de cuarteto y el inicio de dicha unidad de datos comienza en el cuarteto cero (y también en algunos casos donde la posición inicial de dicha unidad de datos cae en un límite de nibble con ciertos campos de registro, por ejemplo "M" o "X"), y que puede ser de hasta 64 bits, se puede operar como un todo, pero la CPU Saturn realiza la operación en serie internamente en un nibble-by. -base para mordisquear. [4]

La arquitectura Saturn tiene un ancho de palabra de datos de 64 bits y un ancho de dirección de 20 bits, y la memoria se dirige a una granularidad de 4 bits ( nibble ). Las instrucciones Saturn ALU admiten un ancho de datos variable y funcionan con entre uno y 16 fragmentos de una palabra. Los registros principales ( GPR ), junto con los registros temporales, tienen un ancho total de 64 bits, pero los registros de direcciones tienen solo 20 bits de ancho. Los chips de CPU Saturn originales proporcionaban un bus de datos externo de cuatro bits, pero los SoC posteriores basados ​​en Saturn incluyeron la conversión del bus del chip a un bus de datos externo de 8 bits y un bus de direcciones externo de 19 bits.

La arquitectura Saturn tiene cuatro GPR (Registros de propósito general) de 64 bits , denominados A, B, C y D. Además, también hay cinco registros "scratch" de 64 bits denominados R0, R1, R2, R3 y R4. Estos sólo pueden almacenar datos. Si se requiere una operación ALU para los datos en un registro reutilizable, entonces el registro en cuestión debe transferirse primero a un GPR. Otros registros incluyen un registro "puntero" de 1 mordisco llamado P, que generalmente se usa para seleccionar un mordisco en un GPR o un rango de mordiscos (o para alinear datos inmediatos en un mordisco específico en un GPR, con envoltura). Para el acceso a la memoria, hay dos registros de puntero de datos de 20 bits denominados D0 y D1. La arquitectura Saturn también tiene una PC o un registro de contador de programas que puede interoperar con los GPR. También hay una pila de retorno de hardware LIFO de 20 bits, circular y de 8 niveles denominada RSTK que se utiliza cuando se emite una instrucción de llamada de subrutina. Además, la CPU Saturn está equipada con un registro de estado de software de 16 bits llamado ST y un registro de estado de hardware de 1 nibble llamado HS, que en particular contiene el indicador SB o "bit adhesivo" que indica si un 1 binario se desplazó hacia la derecha. un GPR. Además, la arquitectura Saturn tiene un registro OUT de 12 bits y un registro IN de 16 bits, que en los SoC Yorke y Clarke se utilizan para capturar la entrada del teclado y también controlar el beeper. También hay un registro de bandera de acarreo de 1 bit.

Además de lo anterior, la CPU Saturn tiene un sistema de interrupción simple y sin prioridad. Cuando ocurre una interrupción, la CPU termina de ejecutar la instrucción actual, guarda el contador del programa en la pila de retorno de hardware (RSTK) y salta a la dirección 0x0000Fh, donde el valor anterior está en nibbles. [4] La CPU también interactúa directamente con la lógica de escaneo del teclado.

El siguiente diagrama muestra los registros (cada cuadrado blanco tiene 4 bits/un mordisco, excepto el indicador de acarreo, que es de 1 bit):

"Representación gráfica de los campos de registro de HP Saturn"
Registros HP Saturn

Campos y formato de registro GPR de 64 bits de Saturn:

Se puede acceder a los datos de los registros de propósito general a través de campos que se encuentran en los límites de nibble, mientras que los registros reutilizables solo permiten operaciones de carga y almacenamiento. Los campos, como se muestra en el diagrama anterior, son W (GPR completo de 64 bits), A (primeros 5 mordiscos de un GPR), S (mordisco más significativo de un GPR), XS (mordisco 2 de un GPR), M (mordiscos 3 a 14 de un GPR), X (primeros 3 mordiscos de un GPR) y B (primer byte de un GPR). Además, existe el campo P que selecciona un nibble de un GPR en función del valor de 4 bits del registro P. Además, existe el campo WP que selecciona los cuartetos 0 a través del cuarteto seleccionado en el registro P. Los 64 bits (16 cuartetos) pueden contener números de coma flotante codificados en formato BCD compuestos por un cuarteto de signo (que es "9" si el número es negativo), 12 dígitos de mantisa y un exponente en complemento a 10 de 3 dígitos almacenado en formato BCD ( ±499). [6] La representación interna de los valores de coma flotante BCD es una mantisa de 15 dígitos con un signo mordisco en un registro combinado con un exponente de 20 bits, en formato de complemento a 10, en otro registro. El uso de BCD en lugar de la representación binaria directa es ventajoso para las calculadoras ya que evita los problemas de redondeo que ocurren en la conversión binario/decimal .

Las direcciones de la CPU Saturn también se basan en nibble. Los tres registros de puntero (incluido el contador de programa ) y los registros de dirección tienen 20 bits de ancho. Debido a esto, la arquitectura de Saturn puede abordar 1 M nibbles o, equivalentemente, 512 K bytes. Más allá de ese tamaño (por ejemplo, en el 48GX), se utiliza la conmutación de banco .

Tanto en las series HP 48S/SX como 48G/GX, y también en calculadoras como HP-28S, HP-27S, HP-42S, HP-32SII y HP-20S, el núcleo de la CPU Saturn está integrado como parte de un paquete SoC de circuito integrado (IC) más complejo , salvo la computadora de mano HP-71B original y la HP-28C que usaba un chip separado para el procesador Saturn. Estos paquetes tienen nombres en clave inspirados en los miembros de la Expedición Lewis y Clark . El nombre en clave del IC es Clarke en el S/SX, en honor a William Clark , y Yorke en el G/GX, en honor al sirviente de Clark . Otros circuitos integrados basados ​​en Saturno, como los utilizados en HP-28S, HP-27S, HP-42S, HP-32SII y HP-20S, tenían otros nombres en clave. En concreto, los SoC HP-27S, HP-42S y HP-28S recibieron el nombre en código Lewis , en honor a Meriwether Lewis . Otras calculadoras HP, como la HP-32SII y la HP-20S, tenían SoC con el nombre en código Sacajawea en honor a Sacagawea y Bert respectivamente, aunque es posible que se desconozca el origen del nombre en clave Bert .

Código de ejemplo

La siguiente es una implementación entera de un algoritmo de raíz cuadrada decimal BCD en la sintaxis de ensamblaje de Saturn Jazz/HP Tools:

** En lo siguiente, se supone que AW contiene el argumento (< 1E14).** El resultado (IP(SQRT(AW))) está en CW: SETDEC ASL W C=AW A=A+AW  A=A+AW A=A+CW ASR W C=0W P= 13 CL(1) 5 - WP RSC C=C-1P --C=C+1P  A=CA W  GONC--  A=A+CW  RSC W  P=P-1  P=P-1  GONC- SETHEX A=CW

Conjuntos de chips y aplicaciones

La CPU Saturn original dio su nombre a toda la arquitectura del conjunto de instrucciones . Los chips posteriores tuvieron sus propios nombres en clave:

Los nombres en clave de la CPU están inspirados en los miembros de la Expedición de Lewis y Clark de 1804-1806, la primera expedición terrestre de los Estados Unidos a la costa del Pacífico y de regreso. Los nombres en clave de la CPU/emulador virtual se inspiraron en el prototipo de SoC de 8 MHz basado en Saturn "Nueva York" que nunca llegó a producción. [12] Según uno de los miembros de ACO (Australian Calculator Operation), "Gran Manzana" se deriva del nombre en clave "Nueva York" del prototipo de SoC de 8 MHz basado en Saturno, y que para el autor original, parecía intima una referencia a la ciudad "Nueva York", de ahí los nombres "Gran Manzana", "Mid Apple" y "Little Apple". [12]

Ver también

Notas

  1. ^ ab En el HP 48G , el procesador Saturn tiene la etiqueta " NEC Japan, D3004GD, 00048-80063, 9738PX002".
  2. ^ En las CPU Saturn de la serie "Apple" virtuales/emuladas, el nivel/versión ISA es "2" pero con extensiones de código de operación virtuales.

Referencias

  1. ^ Kuperus, Klaas (4 de marzo de 2015). "HP 50g: fin de una era". foro.hp-prime.de . Moravia. Archivado desde el original el 2 de abril de 2015.
  2. ^ Kuperus, Klaas (6 de marzo de 2015). "¿HP 50g no es una buena noticia?". Museo HP . Moravia. Archivado desde el original el 8 de julio de 2018 . Consultado el 1 de enero de 2016 .
  3. ^ Wessman, Timothy "Tim" James (26 de diciembre de 2015). "Windows 10 no permitirá la instalación de controladores USB HP 50g". Museo HP . Archivado desde el original el 8 de julio de 2018 . Consultado el 1 de enero de 2016 .
  4. ^ abcd HP-71B Especificación de diseño interno de hardware Vol 1 . Corporación Hewlett Packard. Septiembre de 1984. p. 3-1.
  5. ^ Especificaciones de CPU HP-41C, controlador de pantalla, HP-IL, almacenamiento de datos, temporizador IC e interfaz IC . Corporación Hewlett Packard. Julio de 1981. p. 5.
  6. ^ Fernandes, Gilbert Henri (16 de julio de 2005) [29 de enero de 1999]. "Capítulo 56.1 Número real". En Rechlin, Eric (ed.). Introducción al lenguaje ensamblador de Saturno (3ª ed.). hpcalc.org. pag. 104. ID 1693. Archivado desde el original el 13 de noviembre de 2018 . Consultado el 29 de abril de 2019 . Si el exponente es negativo, el exponente se codifica como "1000 - ABS(exponente)"[1]
  7. ^ abcdefgh Donnini, Giuseppe (26 de junio de 2020). "¿"Nueva York "?". www.hpmuseum.org . Consultado el 6 de julio de 2020 .
  8. ^ abcdefgh "El manual del ensamblador de Saturn". www.hpcalc.org . Hewlett Packard. 1993-08-20 . Consultado el 6 de julio de 2020 .
  9. ^ abcdefghi Finseth, Craig A. (23 de diciembre de 2016). "nombres". Archivado desde el original el 21 de diciembre de 2017 . Consultado el 21 de diciembre de 2017 .
  10. ^ Arnett, Dave (3 de mayo de 1994). "¡Nombra ese chip!". Grupo de noticias : comp.sys.hp48. Archivado desde el original el 29 de abril de 2019 . Consultado el 22 de abril de 2019 .
  11. ^ de Brébisson, Cyrille (17 de junio de 2020). "RE:" Nueva York "?". www.hpmuseum.org . Consultado el 18 de junio de 2020 .
  12. ^ abc de Brébisson, Cyrille (16 de junio de 2020). "RE:" Nueva York "?". www.hpmuseum.org . Consultado el 18 de junio de 2020 .

Otras lecturas

enlaces externos