HP Saturn

Last updated

Saturn
HP Saturn 1LT8 Clarke.tif
Photo of the exposed die of the HP 1LT8 Clarke SoC which contains the embedded Saturn microprocessor manufactured by HP for use in the HP 48SX
Designer Hewlett-Packard
BitsHybrid 64-bit GPR, 20-bit address bus, 4-bit datapath, 4-bit minimum word size
Introduced1984
Version"Level 2"
Design CISC
TypeCombination of a load–store architecture with some exceptions which fall into the register–memory architecture family
Encoding Variable
Branching Carry bit, "sticky" bit and other flag registers
Endianness Little-endian
Page sizeNo MMU or paging available
ExtensionsOnly extensions for emulated ARM-based "virtual" CPUs
OpenProprietary
Predecessor Nut
Registers
Nine 64-bit GPR and "scratch" registers, two 20-bit "data pointer" registers and other miscellaneous registers
General-purpose Four 64-bit GPRs
Floating point No FPU registers
Vector No vector registers

The Saturn family of 4-bit (datapath) microprocessors was developed by Hewlett-Packard in the 1980s first for the HP-71B handheld computer and then later for various HP calculators (starting with the HP-18C). It succeeded the Nut family of processors used in earlier calculators. The original Saturnchip was first used in the HP-71B hand-held BASIC-programmable computer, introduced in 1984. Later models of the family powered the popular HP 48 series of calculators. The HP48SX and HP48S were the last models to use genuine Saturn processors manufactured by HP. Later calculator models used Saturn processors manufactured by NEC. The HP 49 series initially used the Saturn CPU as well, until the NEC fab [nb 1] could no longer manufacture the processor for technical reasons in 2003. Therefore, starting with the HP 49g+ model in 2003, the calculators switched to a Samsung S3C2410 processor with an ARM920T core (part of the ARMv4T architecture) which ran an emulator of the Saturn hardware in software. In 2000, the HP 39G and HP 40G were the last calculators introduced based on the actual NEC fabricated Saturn hardware. The last calculators based on the Saturn emulator were the HP 39gs, HP 40gs and HP 50g in 2006, as well as the 2007 revision of the hp 48gII. The HP 50g, the last calculator utilizing this emulator, was discontinued in 2015 when Samsung stopped producing the ARM processor on which it was based. [1] [2] [3]

Contents

Architecture

The Saturn hardware is a nibble serial design [4] as opposed to its Nut predecessor, which was bit-serial. [5] Internally, the Saturn CPU has four 4-bit data buses that allow for nearly 1-cycle per nibble performance with one or two buses acting as a source and one or two acting as a destination. [4] The smallest addressable word is a 4-bit nibble which can hold one binary-coded decimal (BCD) digit. Any unit of data in the registers larger than a nibble, in which the end of said data unit falls on a nibble boundary and the start of said data unit starts at nibble zero (and also in some cases where said data unit's starting position falls on a nibble boundary with certain register fields eg. "M" or "X"), and which can be up to 64-bits, can be operated on as a whole, but the Saturn CPU performs the operation serially internally on a nibble-by-nibble basis. [4]

The Saturn architecture has a 64-bit data word width and 20-bit address width, with memory being addressed to 4-bit (nibble) granularity. Saturn ALU instructions support variable data width, operating on one to 16 nibbles of a word. The main registers (GPRs), along with the temporary registers, are fully 64-bits wide, but the address registers are only 20-bits wide. The original Saturn CPU chips provided a four-bit external data bus, but later Saturn-based SoCs included on chip bus conversion to an 8-bit external data bus and 19-bit external address bus.

The Saturn architecture has four 64-bit GPRs (General Purpose Registers), named A, B, C and D. In addition, there are also five 64-bit "scratch" registers named R0, R1, R2, R3 and R4. These can only store data. If an ALU operation is required for data in a scratch register, then the register in question must be transferred to a GPR first. Other registers include a 1-nibble "pointer" register named P, usually used to select a nibble in a GPR or a range of nibbles (or for aligning immediate data on a specific nibble in a GPR, with wrap-around). For memory access, there are two 20-bit data pointer registers named D0 and D1. The Saturn architecture also has a PC or program counter register which can interoperate with the GPRs. There is also an 8-level, circular, LIFO 20-bit hardware return stack named RSTK used when a subroutine call instruction is issued. Additionally, the Saturn CPU is equipped with a 16-bit software status register named ST and a 1-nibble hardware status register named HS, which notably, contains the SB or "sticky bit" flag indicating whether a binary 1 was right shifted off of a GPR. Furthermore, the Saturn architecture has a 12-bit OUT register and a 16-bit IN register, which in the Yorke and Clarke SoCs, are used to capture input from the keyboard and also control the beeper. There is also a 1-bit carry flag register.

In addition to the above, the Saturn CPU has a simple, non-prioritized interrupt system. When an interrupt occurs, the CPU finishes executing the current instruction, saves the program counter to the hardware return stack (RSTK) and jumps to address 0x0000Fh, where the preceding value is in nibbles. [4] The CPU also interacts with the keyboard scanning logic directly.

The following diagram depicts the registers (with each white square being 4-bits / a nibble except for the Carry flag, which is 1 bit):

HP Saturn registers HP Saturn registers.svg
HP Saturn registers

Saturn 64-bit GPR register format and fields:

HP Saturn register fields
Bits63–6059–5655–5251–4847–4443–4039–3635–3231–2827–2423–2019–1615–1211–8  7–4  3–0 
NibbleFEDCBA9876543210
Fields XSB
 A
SMX
W
P=0 P
P=7 WP

Data in the general purpose registers can be accessed via fields that fall on nibble boundaries, whereas the scratch registers allow only load and store operations. The fields, as shown in the above diagram, are W (whole 64-bit GPR), A (address, first 5 nibbles of a GPR), S (sign of mantissa, most significant nibble of a GPR), XS (exponent sign, nibble 2 of a GPR), M (mantissa, nibbles 3–14 of a GPR), X (exponent, first 3 nibbles of a GPR) and B (first byte of a GPR). In addition, there is the P field which selects a nibble from a GPR based on the P register's 4-bit value. Also, there is the WP field which selects nibbles 0 through the nibble selected in the P register. The 64 bits (16 nibbles) can hold BCD-formatted coded floating point numbers composed of a sign nibble (which is "9" if the number is negative), 12 mantissa digits and a 3-digit 10's complement exponent stored in BCD format (±499). [6] The internal representation of BCD floating point values are a 15-digit mantissa with one sign nibble in one register combined with a 20-bit exponent, in 10's complement format, in another register. The use of BCD instead of straight binary representation is advantageous for calculators as it avoids rounding problems that occur on the binary/decimal conversion.

The Saturn CPU's instruction and data addresses are also nibble-based. The three pointer registers (including the program counter) and address registers are 20 bits wide. Due to this, the Saturn architecture can address 1 M nibbles or, equivalently, 512 K bytes. Beyond that size (e.g. in the 48GX), bank switching is used.

In both the HP 48S/SX and 48G/GX series, and also such calculators as the HP-28S, HP-27S, HP-42S, HP-32SII and the HP-20S, the Saturn CPU core is integrated as part of a more complex integrated circuit (IC) SoC package, save for the original HP-71B handheld computer and the HP-28C which used a separate chip for the Saturn processor. These packages have code names inspired by the members of the Lewis and Clark Expedition. The code-name of the IC is Clarke in the S/SX, after William Clark, and Yorke in the G/GX, after Clark's manservant. Other Saturn-based ICs, such as those used in the HP-28S, HP-27S, HP-42S, HP-32SII and HP-20S had other code-names. Specifically, the HP-27S, HP-42S and HP-28S SoC was code-named Lewis, after Meriwether Lewis. Other HP calculators such as the HP-32SII and HP-20S had SoCs code-named Sacajawea after Sacagawea and Bert respectively, although the origin of the Bert code-name may be unknown.

Example code

The following is an integer implementation of a BCD decimal square root algorithm in Saturn Jazz / HP Tools assembly syntax:

** In the following A.W is assumed to contain the argument (< 1E14). ** The result (IP(SQRT(A.W))) is in C.W:          SETDEC         ASL     W         C=A     W         A=A+A   W           A=A+A   W         A=A+C   W         ASR     W         C=0     W         P=      13         LC(1)   5       -       CSR     WP         C=C-1   P   --      C=C+1   P           A=A-C   W           GONC    --                           A=A+C   W           CSR     W           P=P-1                            P=P-1                    GONC    -         SETHEX         A=C     W

Chipsets and applications

The original Saturn CPU gave its name to the entire instruction set architecture. Later chips had their own code names:

ISA level Processor code-nameUsed in calculator modelsProperties
0 [7] [8] Saturn (1LF2) HP-44A, HP-71B  (1984)
1 [7] [8] Saturn (1LK7) HP-18C  (1986), HP-28C  (1987), HP-71B 640 kHz, more instructions
2 [7] [8] Bert [9] (1LU7) [9] HP-10B  (1988), HP-20S  (1988), HP-21S 640 kHz, 10 KB ROM, 256 bytes RAM, LCD driver
2 [7] [8] Sacajawea [9] (1LR3) HP-14B, HP-22S, HP-32S  (1988), HP-32S+, HP-32SII  (1991)640 kHz, 16 KB ROM, 512 bytes RAM, LCD driver
2 [7] [8] Lewis [9] (1LR2) HP-17B  (1988), HP 17BII  (1990), HP-19B  (1988), HP 19BII  (1990), HP-27S  (1988), HP-28S  (1988), HP-42S  (1988)1 MHz, 64 KB ROM, LCD driver, memory controller, IR control, 3 V CMOS
2 [7] [8] Clarke [9] (1LT8) [9] HP 48SX  (1990), HP 48S  (1991)2 MHz, LCD controller, memory controller, UART and IR control, more instructions
2 [7] [8] Yorke [9] 00048-80063 [10] HP 38G  (1995), HP 38G+  (1998), HP 39G  (2000), HP 40G  (2000), HP 48GX  (1993), HP 48G  (1993), [nb 1] HP 48G+  (1998), HP 49G  (1999)3.68–4 MHz, LCD controller, memory controller, UART and IR control, manufactured by NEC, more instructions, sometimes also known as Saturn 5 platform
?New-Yorke HP 48GX prototype8 MHz, LCD controller, memory controller, UART and IR control. This was only made as an internal HP prototype and never released in the wild. [11] [12]
2 [7] [8] [nb 2] Apple series (Big Apple, [9] Mid Apple, [9] Little Apple) hp 39g+  (2003), HP 39gs  (2006), HP 40gs  (2006), hp 49g+  (2003), hp 48gII  (2003/2007), HP 50g  (2006)Virtual version of the Yorke CPU emulated by members of the 48/75 MHz Samsung S3C2410 processor family with ARM920T core (of the ARMv4T architecture) aka Saturn+ with additional virtual instructions

The CPU code-names are inspired by members of the Lewis and Clark Expedition of 1804–1806, the first United States overland expedition to the Pacific coast and back. The virtual CPU / emulator code names were inspired by the prototype "New-Yorke" Saturn-based 8 MHz SoC that never made it to production. [12] According to one of the ACO (Australian Calculator Operation) members, "Big Apple" was derived from the code name "New-Yorke" of the prototype 8 MHz Saturn-based SoC, and which to the original author, seemed to intimate a reference to "New York" the city, hence the names "Big apple", "Mid Apple" and "Little Apple". [12]

See also

Notes

  1. 1 2 In the HP 48G, the Saturn processor is labelled "NEC Japan, D3004GD, 00048-80063, 9738PX002".
  2. In the emulated / virtual "Apple" series Saturn CPUs, the ISA level / version is "2" but with virtual opcode extensions.

Related Research Articles

<span class="mw-page-title-main">Binary-coded decimal</span> System of digitally encoding numbers

In computing and electronic systems, binary-coded decimal (BCD) is a class of binary encodings of decimal numbers where each digit is represented by a fixed number of bits, usually four or eight. Sometimes, special bit patterns are used for a sign or other indications.

In computer science, an integer is a datum of integral data type, a data type that represents some range of mathematical integers. Integral data types may be of different sizes and may or may not be allowed to contain negative values. Integers are commonly represented in a computer as a group of binary digits (bits). The size of the grouping varies so the set of integer sizes available varies between different types of computers. Computer hardware nearly always provides a way to represent a processor register or memory address as an integer.

<span class="mw-page-title-main">Nibble</span> Four-bit unit of digital storage

In computing, a nibble (occasionally nybble, nyble, or nybl to match the spelling of byte) is a four-bit aggregation, or half an octet. It is also known as half-byte or tetrade. In a networking or telecommunication context, the nibble is often called a semi-octet, quadbit, or quartet. A nibble has sixteen (24) possible values. A nibble can be represented by a single hexadecimal digit (0F) and called a hex digit.

The GE-600 series is a family of 36-bit mainframe computers originating in the 1960s, built by General Electric (GE). When GE left the mainframe business the line was sold to Honeywell, which built similar systems into the 1990s as the division moved to Groupe Bull and then NEC.

<span class="mw-page-title-main">Intel 4004</span> 4-bit microprocessor

The Intel 4004 is a 4-bit central processing unit (CPU) released by Intel Corporation in 1971. Sold for US$60, it was the first commercially produced microprocessor, and the first in a long line of Intel CPUs.

<span class="mw-page-title-main">HP 48 series</span> Series of graphing calculators

The HP 48 is a series of graphing calculators designed and produced by Hewlett-Packard from 1990 until 2003. The series includes the HP 48S, HP 48SX, HP 48G, HP 48GX, and HP 48G+, the G models being expanded and improved versions of the S models. The models with an X suffix are expandable via special RAM and ROM cards. In particular, the GX models have more onboard memory than the G models. The G+ models have more onboard memory only. The SX and S models have the same amount of onboard memory.

<span class="mw-page-title-main">HP 49/50 series</span> Series of graphing calculators by Hewlett-Packard

The HP 49/50 series are Hewlett-Packard (HP) manufactured graphing calculators. They are the successors of the popular HP 48 series.

A processor register is a quickly accessible location available to a computer's processor. Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions, and may be read-only or write-only. In computer architecture, registers are typically addressed by mechanisms other than main memory, but may in some cases be assigned a memory address e.g. DEC PDP-10, ICT 1900.

RPL is a handheld calculator operating system and application programming language used on Hewlett-Packard's scientific graphing RPN calculators of the HP 28, 48, 49 and 50 series, but it is also usable on non-RPN calculators, such as the 38, 39 and 40 series. Internally, it was also utilized by the 17B, 18C, 19B and 27S.

4-bit computing is the use of computer architectures in which integers and other data units are 4 bits wide. 4-bit central processing unit (CPU) and arithmetic logic unit (ALU) architectures are those that are based on registers or data buses of that size. A group of four bits is also called a nibble and has 24 = 16 possible values.

<span class="mw-page-title-main">HP-41C</span> Hewlett-Packard handheld RPN calculator

The HP-41C series are programmable, expandable, continuous memory handheld RPN calculators made by Hewlett-Packard from 1979 to 1990. The original model, HP-41C, was the first of its kind to offer alphanumeric display capabilities. Later came the HP-41CV and HP-41CX, offering more memory and functionality.

<span class="mw-page-title-main">HP-10B</span>

The HP-10B (F1636A) is a student business calculator introduced in 1987. The model of this calculator proved to compete well with the higher end RPN HP-12C.

<span class="mw-page-title-main">HP-12C</span> Financial calculator made by Hewlett-Packard

The HP-12C is a financial calculator made by Hewlett-Packard (HP) and its successor HP Inc. as part of the HP Voyager series, introduced in 1981. It is HP's longest and best-selling product and is considered the de facto standard among financial professionals. There have been multiple revisions over the years, with newer revisions moving to an ARM processor running a software emulator of the original Nut processor. Critics claim that its 1980s technology is antiquated, but proponents point out that it is still the de facto and de jure in high finance.

HP 39/40 series are graphing calculators from Hewlett-Packard, the successors of HP 38G. The series consists of six calculators, which all have algebraic entry modes, and can perform numeric analysis together with varying degrees of symbolic calculation. All calculators in this series are aimed at high school level students and are characterized by their ability to download APLETs or E-lessons. These are programs of varying complexity which are generally intended to be used in the classroom to enhance the learning of mathematics by the graphical and/or numerical exploration of concepts.

Paul Courbis de Bridiers de Villemor, aka Paul Courbis, is a French programmer, mostly known for reverse engineering the HP-28 and then the HP 48 series of calculators, and writing multiple articles and books disclosing his findings. These books had a surprising success in France.

A serial computer is a computer typified by bit-serial architecture – i.e., internally operating on one bit or digit for each clock cycle. Machines with serial main storage devices such as acoustic or magnetostrictive delay lines and rotating magnetic devices were usually serial computers.

The Capricorn family of microprocessors was developed by Hewlett-Packard in the late 1970s for the HP Series 80 scientific microcomputers. Capricorn was first used in the HP-85 desktop BASIC computer, introduced in January 1980. Steve Wozniak was inspired to build the Apple to be a computer like the HP 9830, and in 1976, he offered HP rights to the Apple computer. He was turned down and was given a release. When the calculator division started an 8-bit computer project called Capricorn, he left for Apple when he wasn't allowed to work on that project.

In computing, Microsoft Binary Format (MBF) is a format for floating-point numbers which was used in Microsoft's BASIC languages, including MBASIC, GW-BASIC and QuickBASIC prior to version 4.00.

<span class="mw-page-title-main">HP Prime</span> Programmable graphing calculator

The HP Prime Graphing Calculator is a graphing calculator introduced by Hewlett-Packard in 2013 and manufactured by HP Inc. until the licensees Moravia Consulting spol. s r.o. and Royal Consumer Information Products, Inc. took over the continued development, manufacturing, distribution, marketing and support in 2022. It was designed with features resembling those of smartphones, such as a full-color touchscreen display and a user interface centered around different applications. It claims to be the world's smallest and thinnest CAS-enabled calculator currently available.

Erable is a computer algebra system (CAS) for a family of Hewlett-Packard graphing scientific calculators of the HP 40, 48 and HP 49/50 series.

References

  1. Kuperus, Klaas (2015-03-04). "HP 50g: End of an era". forum.hp-prime.de. Moravia. Archived from the original on 2015-04-02.
  2. Kuperus, Klaas (2015-03-06). "HP 50g not so good news?". HP Museum. Moravia. Archived from the original on 2018-07-08. Retrieved 2016-01-01.
  3. Wessman, Timothy "Tim" James (2015-12-26). "Windows 10 won't allow HP 50g USB drivers to be installed". HP Museum. Archived from the original on 2018-07-08. Retrieved 2016-01-01.
  4. 1 2 3 4 "3.1 Processor Overview". HP-71B Hardware Internal Design Specification. Hewlett Packard Corporation. September 1984. p. 3-1. 00071-90071.
  5. HP-41C CPU, Display Driver, HP-IL, Data Storage, Timer IC, and Interface IC Specifications. Hewlett Packard Corporation. July 1981. p. 5.
  6. Fernandes, Gilbert Henri (2005-07-16) [1999-01-29]. "Chapter 56.1 Real number". In Rechlin, Eric (ed.). Introduction to Saturn Assembly Language (3rd ed.). hpcalc.org. p. 104. ID 1693. Archived from the original on 2018-11-13. Retrieved 2019-04-29. If the exponent is negative, the exponent is encoded as "1000 - ABS(exponent)"
  7. 1 2 3 4 5 6 7 8 Donnini, Giuseppe (2020-06-26). ""New-Yorke" ?". www.hpmuseum.org. Retrieved 2020-07-06.
  8. 1 2 3 4 5 6 7 8 "The Saturn assembler manual". www.hpcalc.org. Hewlett Packard. 1993-08-20. Retrieved 2020-07-06.
  9. 1 2 3 4 5 6 7 8 9 Finseth, Craig A. (2016-12-23). "names". Archived from the original on 2017-12-21. Retrieved 2017-12-21.
  10. Arnett, Dave (1994-05-03). "Name that chip!". Newsgroup:  comp.sys.hp48. Archived from the original on 2019-04-29. Retrieved 2019-04-22.
  11. de Brébisson, Cyrille (2020-06-17). "RE: "New-Yorke" ?". www.hpmuseum.org. Retrieved 2020-06-18.
  12. 1 2 3 de Brébisson, Cyrille (2020-06-16). "RE: "New-Yorke" ?". www.hpmuseum.org. Retrieved 2020-06-18.

Further reading