HP Saturn (microprocessor)

From Wikipedia, the free encyclopedia
Jump to: navigation, search

The Saturn family of microprocessors was developed by Hewlett-Packard in the 1980s for programmable scientific calculators/microcomputers. The original Saturn chipset was first used in the HP-71B hand-held BASIC computer, introduced in 1984. Later models of the family powered the popular HP-48 series of calculators, among others. The replacement for the HP-48, the HP-49 series initially used the Saturn CPU, but starting with the HP-49g+ model the calculators use ARM CPUs that emulate the Saturn architecture.

Architecture[edit]

The Saturn architecture is nibble-based; that is, the core unit of data is 4 bits, which can hold one binary-coded decimal (BCD) digit.

The Saturn microprocessor is a hybrid 64-bit / 20-bit CPU hardware-wise but acts like a 4-bit processor in that it presents nibble-based data to programs and uses a nibble-based addressing system. The main registers A, B, C, D, along with temp registers R0, R1, R2, R3, and R4 are a full 64-bits wide, but the data registers D0 & D1 are only 20-bit. External logical data fetches are transparently converted to 8-bit physical fetches. The processor has a 20-bit address bus available to code but due to the presence of the high/low nibble selection bit, only 19 bits are available externally.

The Saturn has four general-purpose and five scratch registers that are 64 bits wide. Data in the general-purpose registers can be accessed on nibble boundaries and used for calculations, whereas the scratch registers allow only load and store operations. The 64 bits (16 nibbles) can hold BCD-formatted coded floating point numbers composed of a Plus and minus signs nibble, 12 mantissa digits and a 3-digit exponent stored in 2's complement format (±499). 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.

For optimum memory usage efficiency, the Saturn's addresses are also nibble-based. The three pointer registers (including the program counter) and address data paths are 20 bits wide, therefore the Saturn architecture can address 1 M nibbles = 512 K bytes. Beyond that size (e.g. in the 48GX), bank switching is used.

In both the HP-48S/SX and G/GX series, the Saturn CPU core is integrated as part of a more complex integrated circuit (IC) package. These packages have codenames inspired by the members of the Lewis and Clark Expedition. The codename of the IC is Clarke in the S/SX, after William Clark, and Yorke in the G/GX, after Clark's manservant. The previous series of Saturn-based ICs were codenamed Lewis, after Meriwether Lewis.

Chipsets and applications[edit]

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

CPU codename Used in calculator models Properties
Saturn HP-71B, HP-18C, HP-28C 640 kHz
Bert HP-10B, HP-20S, HP-21S 640 kHz, 10 KB ROM, 256 Bytes RAM, LCD driver
Sacajawea HP-14B, HP-22S, HP-32S, HP-32SII 640 kHz, 16 KB ROM, 512 Bytes RAM, LCD driver
Lewis HP-17B, HP-19B, HP-27S, HP-28S, HP-42S 1 MHz, 64 KB ROM, LCD driver, memory controller, IR control
Clarke HP-48SX, HP-48S 2 MHz, LCD controller, memory controller, UART and IR control
Yorke HP-48GX, HP-48G, HP-38G, HP-39G, HP-49G 3.68 MHz, LCD controller, memory controller, UART and IR control
New-Yorke HP-48GX prototypes 8 MHz, LCD controller, memory controller, UART and IR control. This was only made as an internal HP prototype and never released in the wild.
Apple series (since the previous cpu was 'new yorke'!) HP-49GII, HP_50g (and after), HP39GII and others... Virtual version of the Yorke cpu emulated by a 70Mhz ARM cpu

The CPU codenames 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.

External links[edit]