Dwight wrote:
I always thought is would be fun to make a variable
bit serial computer. Many operations only need a single bit
while the single bit ALU could operate on data, like
adding, one bit at a time and use any length one wanted.
Chuck Guzis wrote:
How about instead of bits, 4-bit digits (perhaps with
a programmable
switch between BCD and binary math)? I suspect that it wouldn't be
much more complicated than 1-bit serial design.
You've just described the architecture of the proprietary processors
used in Hewlett-Packard calculator models released between 1972 and 1999.
There were four versions of the architecture that were bit-serial but
did arithmetic one decimal digit at a time, or four binary bits. The
word size was 48, 56, or 64 bits, and arithmetic operations could work
on any range of digits (or aligned four-bit binary groups) of a word.
Classic: 56-bit, BCD only, strict Harvard architecture (10-bit ROM
words in separate address space)
Woodstock/Spice/Topcat: 56-bit, selectable BCD/binary, strict Harvard
architecture, 10-bit ROM
Cricket: 48-bit, selectable BCD/binary, strict Harvard architecture,
10-bit ROM
Nut: 56-bit, BCD/binary, 10-bit ROM, but with instructions to read ROM
words as data (modified Harvard Architecture)
Saturn: 64-bit, nibble serial (rather than bit-serial), von Neuman
architecture (unified address space, instructions encoded in variable
length of consecutive 4-bit nibbles)
Starting in the 1990s, HP replaced the custom architecture(s) with
commercial microcontrollers and microprocessors, including the Hitachi
H8, SunPlus/GeneralPlus 6502 derivatives, Samsung S3C2410 ARM920T
(graphing calculators), and most recently the Atmel AT91SAM7L128 ARM7.
The graphing calculators still run a simulation of the Saturn
architecture for legacy code.
The use of the Atmel part in recent models (HP 12c, HP 20b, HP 30b) is
nice because it is a flash-based part, so you can write your own
replacement firmware for it, something that was not previously possible
in entry to midrange HP calculators.
Eric