stringtranslate.com

HP Saturn

La familia Saturn de microprocesadores de 4 bits ( datapath ) fue desarrollada por Hewlett-Packard en la década de 1980, primero para la computadora de mano HP-71B , lanzada en 1984, y más tarde para varias calculadoras HP (empezando por la HP-18C ). Sucedió a la familia de procesadores Nut utilizados en calculadoras anteriores. La HP48SX y la HP48S fueron los últimos modelos en utilizar procesadores Saturn fabricados por HP, los modelos posteriores utilizaron procesadores fabricados por NEC . La serie HP 49 utilizó inicialmente la CPU Saturn hasta que la fábrica de NEC [nb 1] ya no pudo fabricar el procesador por razones técnicas en 2003. A partir del modelo HP 49g+ en 2003, las calculadoras cambiaron a un procesador Samsung S3C2410 con un núcleo ARM920T (parte de la arquitectura ARMv4T ) que ejecutaba un emulador del hardware Saturn en software. En 2000, las HP 39G y HP 40G fueron las últimas calculadoras que se introdujeron basadas en el hardware Saturn fabricado por NEC. Las últimas calculadoras que se introdujeron con el emulador Saturn fueron las HP 39gs , HP 40gs y HP 50g en 2006, así como la revisión de 2007 de la hp 48gII . La HP 50g fue la última calculadora vendida por HP que utilizó este emulador cuando se suspendió en 2015 debido a que Samsung detuvo la producción del procesador ARM en el que se basaba. [1] [2] [3]

Arquitectura

El hardware Saturn tiene un diseño serial de nibble [4] a diferencia de su predecesor Nut , que era serial de bits . [5] Internamente, la CPU Saturn tiene cuatro buses de datos de 4 bits que permiten un rendimiento de casi 1 ciclo por nibble con uno o dos buses que actúan como fuente y uno o dos que actúan como destino. [4] La palabra direccionable más pequeña es un nibble de 4 bits que puede contener un dígito decimal codificado en binario (BCD). Cualquier unidad de datos en los registros más grande que un nibble, hasta 64 bits, se puede operar como un todo, sin embargo, la CPU Saturn realiza la operación en serie en una base de nibble por nibble internamente. [4]

La arquitectura Saturn tiene un ancho de registro interno de 64 bits y 20 bits de dirección, y la memoria se direcciona con una granularidad de 4 bits (nibble). Las instrucciones ALU de Saturn admiten un ancho de datos variable y funcionan con entre uno y 16 nibbles de una palabra. Los chips de CPU Saturn originales proporcionaban un bus de datos externo de cuatro bits, pero los SoC basados ​​en Saturn posteriores incluyeron la conversión de bus en 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 de un registro scratch, entonces el registro en cuestión debe transferirse primero a un GPR. Otros registros incluyen un registro "puntero" de 1 nibble denominado P, que se utiliza habitualmente para seleccionar un nibble en un GPR o un rango de nibbles (o para alinear datos inmediatos en un nibble específico en un GPR, con ajuste de tiempo). Para el acceso a la memoria, hay dos registros punteros de datos de 20 bits denominados D0 y D1. La arquitectura Saturn también tiene un registro contador de programa o PC que puede interoperar con los GPR. También hay una pila de retorno de hardware de 20 bits, LIFO, circular, 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 contiene el indicador SB o "sticky bit" que indica si un binario 1 se desplazó a la derecha de 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 para controlar el avisador acústico. También hay un registro de indicador de acarreo de 1 bit.

Además de lo anterior, la CPU Saturn tiene un sistema de interrupción simple y sin prioridades. Cuando se produce una interrupción, la CPU termina de ejecutar la instrucción actual, guarda el contador de 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 representa 4 bits/un nibble, excepto el indicador Carry, que es de 1 bit):

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

Formato y campos de registro GPR de 64 bits de Saturno:

Los datos de los registros de propósito general pueden accederse a través de campos que caen en los límites de nibble, mientras que los registros scratch solo permiten operaciones de carga y almacenamiento. Los campos, como se muestra en el diagrama anterior, son W (GPR completo de 64 bits), A (dirección, primeros 5 nibbles de un GPR), S (signo de mantisa, nibble más significativo de un GPR), XS (signo de exponente, nibble 2 de un GPR), M (mantisa, nibbles 3–14 de un GPR), X (exponente, primeros 3 nibbles 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. También existe el campo WP que selecciona nibbles del 0 al nibble seleccionado en el registro P. Los 64 bits (16 nibbles) pueden contener números de punto flotante codificados en formato BCD compuestos por un nibble de signo (que es "9" si el número es negativo), 12 dígitos de mantisa y un exponente de complemento a 10 de 3 dígitos almacenado en formato BCD (±499). [6] La representación interna de los valores de punto flotante BCD es una mantisa de 15 dígitos con un nibble de signo 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 instrucciones y datos de la CPU Saturn también se basan en nibbles. Los tres registros de puntero (incluido el contador de programa) y los registros de dirección tienen un ancho de 20 bits. Debido a esto, la arquitectura Saturn puede direccionar 1 M de nibbles o, equivalentemente, 512 K bytes. Más allá de ese tamaño (por ejemplo, en el 48GX), se utiliza la conmutación de bancos .

La computadora portátil HP-71B original y la HP-28C tenían el procesador Saturn como un chip separado. En las series HP 48S/SX, 48G/GX y HP-28S, HP-27S, HP-42S, HP-32SII y HP-20S, el núcleo de CPU Saturn está integrado como parte de un circuito integrado (IC) SoC más complejo .

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 Lenguaje de señas W C=OW A=A+AW  A=A+AW A=A+CW ASR W C=0 W P= 13 LC(1) 5 - Paquete de trabajo de RSE C=C-1 P -- C=C+1 P  A=CA W  Gobierno central --  A=A+CW  RSE W  P=P-1  P=P-1  Gobierno central - Conjunto A=en sentido horario

Chipsets 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 código:

Los nombres en código de las CPU están inspirados en los miembros de la Expedición 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 código de las CPU/emuladores virtuales se inspiraron en el prototipo "New-Yorke" de SoC de 8 MHz basado en Saturn que nunca llegó a producción. [12] Según uno de los miembros de la ACO (Operación de Calculadora Australiana), "Big Apple" se derivó del nombre en código "New-Yorke" del prototipo de SoC de 8 MHz basado en Saturn en una referencia a la ciudad de Nueva York, de ahí los nombres "Big apple", "Mid Apple" y "Little Apple". [12]

Véase también

Notas

  1. ^ ab En el HP 48G , el procesador Saturn está etiquetado como " NEC Japan, D3004GD, 00048-80063, 9738PX002".
  2. ^ En las CPU Saturn de la serie "Apple" emuladas/virtuales, 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: el fin de una era". forum.hp-prime.de . Moravia. Archivado desde el original el 2 de abril de 2015.
  2. ^ Kuperus, Klaas (6 de marzo de 2015). "¿La 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 permite instalar los controladores USB de HP 50g". Museo HP . Archivado desde el original el 8 de julio de 2018. Consultado el 1 de enero de 2016 .
  4. ^ abcd "3.1 Descripción general del procesador". Especificación de diseño interno del hardware de la HP-71B. Hewlett Packard Corporation. Septiembre de 1984. pág. 3-1. 00071-90071.
  5. ^ Especificaciones de CPU HP-41C, controlador de pantalla, HP-IL, almacenamiento de datos, IC temporizador e IC de interfaz . Hewlett Packard Corporation. Julio de 1981. pág. 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 Saturn (3.ª ed.). hpcalc.org. pág. 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, 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 Saturno". www.hpcalc.org . Hewlett Packard. 1993-08-20 . Consultado el 2020-07-06 .
  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). "Name that 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 .

Lectura adicional

Enlaces externos