34

After seeing this question, I was struck with an intense curiosity to know:

Were there ever processors with word sizes that aren't powers of two, specifically after the 8-bit byte became the industry standard? (I'm well aware of the 9-, 18-, and 36-bit computers that predate the 8-bit byte.)

I've seen some things that are close to this, for example the PIC24 series of 16-bit processors that uses a 24-bit instruction word, but I'm not aware of any actual 24-bit (etc) processors.

If not, why not? I can think of a few possible downsides, but I'm not knowledgeable enough about the history to actually know.

  • 2
    I guess, the MCU can be built with an arbitrary number of bits, but the CPU has to connect to existing bus and to existing memory. The memory manufacturers won't make a small batch of non standard memory cells. – Marko Buršič Nov 17 at 16:42
  • 5
    18 bit was much used at one time – Neil_UK Nov 17 at 16:49
  • 1
    @Neil_UK I'm aware of those, and a good answer to this may well include them, but I'm looking specifically for anything that came after the de facto standardization of the 8-bit byte. – Hearth Nov 17 at 16:56
  • 4
    en.wikipedia.org/wiki/Word_(computer_architecture) details word sizes – Erik Eidt Nov 17 at 18:01
  • 2
    I did a design using bit slice parts (where you could even define your own instruction set!) and it supported arbitrary word sizes (although it could become very complex). The book: bitsavers.trailing-edge.com/components/amd/Am2900/… – Peter Smith Nov 18 at 14:11

10 Answers 10

25

specifically after the 8-bit byte became the industry standard?

There's no clear point of time where the 8-bit byte became a standard, since it's still just a de facto standard nowadays1. However probably the 1970s were the transition time due to many newer architectures and standards with 8-bit bytes, and if you look at the word size list then you'll see that architectures from 1975 onward use word sizes that are powers of 2 (the list is not exhausted of course)

Due to legacy reasons, in the later decades updates to processors with odd word sizes (12/18/24/48/whatever-bit) of the previous architectures are still developed. For example the UNISYS 2200 series with one's complement math and 36-bit word is still supported until at least 2015

If you just care about some of the buses or (fixed) instruction length then some CPUs with 24-bit address bus (but not data bus) were also produced when RAM was still expensive and there wasn't enough transistor budget. For example the 16-bit Intel 80286 (yes, it's the predecessor of modern x86) and 32-bit Motorola 68k. And current x86-64 CPUs still only have a 48-bit address bus with 48 or 52-bit virtual address space

Nevertheless most of them aren't as common as 24-bit architectures which are still widely used and produced even in the 21th century, mainly in the DSP domain, since DSPs are designed specifically for a single purpose to churn a lot of data in a known format quickly. Some modern examples

They're all DSPs for audio processing, because professional audio formats sample data at 24-bit resolution. 20-bit DSPs also exist, for example the Zoran ZR3800x family. There are 20-bit ADCs and DACs for them, for example the AD1871 which supports 16-/20-/24-bit word lengths. And believe it or not, Analog Devices also has a 28-/56-bit ADAU1701 audio DSP

Read Analog Devices' blog Relationship of Data Word Size to Dynamic Range and Signal Quality in Digital Audio Processing Applications, section 6. Processing 110-120 dB, 20-/24-bit Professional-Quality Audio if you're interested.

Obviously there are higher-end 32-bit audio DSPs. But high-end audio enthusiasts need even more resolution so TI was pushing 48-bit DSPs although I'm not sure how successful it was

See also


1 Even the ISO/IEC 2382-1:1993 standard doesn't specify a byte to contain 8 bits. Only octet is a unit of 8 bits:

  • byte
    • A string that consists of a number of bits, treated as a unit, and usually representing a character or a part of a character.
      Note 1 to entry: The number of bits in a byte is fixed for a given data processing system. Note 2 to entry: The number of bits in a byte is usually 8.
  • octet
    • 8-bit byte
      A byte that consists of eight bits.
  • 6
    +1 for pointing out why 24-bit is common for DSPs. I'd heard that 24-bit DSPs were a thing, but never looked at a specific one or made the connection with 24-bit audio. (And BTW, I guess word-addressable memory make non-power-of-2 word size a non-problem. You never have to deal with byte addresses or multiply or divide by 3. You can just make your cache lines a multiple of the word size) – Peter Cordes Nov 18 at 1:38
  • 1
    I don't know why this was downvoted – phuclv Nov 18 at 3:01
  • No idea, surprised me, too. Bringing up 286 in the same sentence as UNISYS is a bit out of place, though; as you say it's not a 24-bit CPU. No more than an x86-64 is a 52-bit CPU (phys width in the page table format), or a 39-bit or 40-bit or whatever (K8 physical address width IIRC). – Peter Cordes Nov 18 at 3:12
  • I gave the 286 example just because the OP mentioned the PIC24 examples – phuclv Nov 18 at 3:25
  • 1
    "There's no clear point of time where the 8-bit byte became a standard, since it's still just a de facto standard nowadays." After it became the de facto standard, it was enshrined in a real international standard: ISO/IEC 2382-1:1993. – Ron Maupin Nov 18 at 23:48
52

Certainly.

The DEC PDP-8 family was 12-bit, and so was the Intersil 6100, a single-chip CMOS implementation of the PDP-8 ISA.

There have been many 24-bit DSP-type processors, from Motorola, Microchip, Analog Devices, among others.

The Burroughs large systems (mainframes), starting with the B-5000 in 1961, used an ISA called "E-mode", which had 48-bit data words (8 × 6-bit characters).

There have been other unusual word sizes as well. The CDC 6600 used 60-bit words. Wikipedia has a fairly complete list.

  • 3
    Geez. In such a sweeping scope don't forget the 36-bit DEC PDP-10, which was a major force for a while. I worked and developed code for both the PDP-8, PDP-10, PDP-11, and PDP-12. Around this time there really wasn't any standards regarding character encoding, despite ASCII (and the earlier 5-bit Boudot code used on earlier teletypes) having been around for some years earlier. – jonk Nov 17 at 18:17
  • @jonk: I have actually worked with all of the machines I mentioned at one time or another. I never worked with the PDP-10, although I was aware of its existence at the time. – Dave Tweed Nov 17 at 18:52
  • 2
    I actually was running computational chemistry code (or trying to) on a Harris Series 500 system in the early-mid 1980's. This was a 24-bit system when the majority of our code ran on 32, 36, or 64-bit systems. I don't know when you want to say that an 8-bit byte was standard then or not. We also used several word-addressible systems - Cray & FPS. Fun times! – doneal24 Nov 17 at 20:52
  • 2
    I think the PDP-8 predates the industry settling on 8-bit bytes though, right? The burroughs mainframes definitely did. – Hearth Nov 17 at 22:54
  • 3
    Always is a long time. The IBM 704, 709, and 7090 were based on 36 bit words. – Walter Mitty Nov 18 at 2:52
12

Were there ever 12-, 24-, 48-, etc bit processors?

Yes! See https://en.wikipedia.org/wiki/Word_(computer_architecture) for an enumeration of historical word sizes.

Before the 8-bit byte became standard, computers were not byte addressable, only word addressable.

Originally, computation was mostly numeric oriented, so a (sometimes double) word data size of 24 or 36 bits was common depending on the numeric range & precision desired.  36 bits gives a decent precision in decimal digits.

Character data was stuffed into words, and handled via packing & unpacking.  Prioritization of efficiency was for numerics not text.

Over time, the importance of text processing grew. The 8-bit byte became standardized, and byte addressable computers became the norm.  Further, the need for interoperability of data between differing computers also required standardization.  For these reasons today, it no longer makes sense to have a word size that is not a multiple of the 8-bit byte.


Your tag says microprocessors, so a quick comment on that.  By the time microprocessors were developed, the size of byte was already 8-bits.  As the utility of computers increased, applications became increasingly hungry for memory, so address spaces were already larger than ~32k, 64k.

Integrated circuits represented a substantial increase in performance and dramatic reduction in size, though came with the early cost of having a somewhat fixed maximum and relatively small number total transistors.  These factors heavily influenced the design of microprocessors, in that they tended to have only 8-bit ALUs, though by then required 16-bit addressing and address manipulating capabilities.

Over time, microprocessors far surpassed capabilities of the old pre- integrated circuit computers (we now have 64-bit computers and RISC V has standardized a 128-bit architecture), but there was a time when things went a bit backward in word sizes before getting larger again.

  • 1
    This was originally on EE.SE and had other tags as well, really. I was thinking of MCUs/MPUs but DSPs and other stuff also count. I'm specifically asking about things after the industry settled on the 8-bit byte anyway; I know about the PDPs and such that had words of different lengths. – Hearth Nov 17 at 22:56
  • At uni I wrote code for a DEC-10 machine that had a 36bit word. (Even the 6-character filenames were packed into a single word!) – Simon F Nov 18 at 10:02
11

The Garrett AiResearch MP944 has a good claim to be the first microprocessor. It's 20-bit, designed from 1968 to 1970, and classified until 1998, so it is not well known.

The Toshiba TLCS-12 family was designed from 1971-73 and is 12-bit. The Intersil 6100 has already been mentioned, it was a single-chip implementation of the older 12-bit DEC PDP-8.

There have been numerous 4-bit micro-controllers, but 4 is a power of two, and hence outside the OP's question.

A 1-bit computer is an interesting corner case, and existed in the form of the Motorola MC14500B

  • Also there were various 4bit MCUs I seem to remember playing with a Toshiba part (late 90s) that had a "sort of C" compiler. – PeterI Nov 18 at 14:50
  • 1
    @PeterI: Added. – John Dallman Nov 20 at 2:16
6

KDF9 was 48 bits, though this probably predates the 8-bit byte standard.

KDF9 did not have 'a' character code; codes were device-specific. Printer code was for example 6 bits. However, the PROMPT file system (and ELDON2 which adopted the same) used 8 bit 'characters', with the benefit that Algol basic symbols such as underlined procedure were stored as single 'characters'. In this sense KDF9 was using an 8-bit byte, though it was still only a word-addressable machine.

48 bits was a good choice for word size, I believe based on the resulting precision+range for floating-point numbers. KDF9 used a 39-bit characteristic, 8-bit exponent, and 1-bit sign.

48 bits was on KDF9 also a good choice since it allowed a counter/increment/modifier value, 16 bits per subvalue (loaded in a "Q-store" for use) to be stored in a memory word.

5

The ICL1900 was a 24 bit computer.

Atlas was a 48 bit computer.

There is a list of 12 bits machines on Wikipedia which includes the Ferranti Argus.

  • 1
    the OP is asking about procesors after the 8-bit byte became the industry standard – phuclv Nov 17 at 19:18
4

Yes. Semi-modern example: DSP56002 24-bit DSP from NXP

4

Microchip's PIC family has processors with lots of weird word sizes. For instance for the PIC16F1454/5/9:

  • program counter is 15 bits (and stack is thus 15-bits wide as well)
  • instruction words are 14 bits
  • data addresses are 12 bits (7 bits for bank and 5 bits within the bank)
  • but data words are 8 bits
  • 1
    There are also 12-bit PICs like the PIC10F220. The linked page is wrong: it's not 16 kBytes of SRAM, it's 16 bytes of SRAM! Also 256 12-bit words of program EEPROM, confusingly spec'd as 0.375 kBytes. – Warren Young Nov 20 at 3:15
2

The ICL 1900 series was indeed 24-bit words, used as four 6-bit characters. Using 8-bit media like papertape required escape characters called alpha, beta and delta to switch case and special characters.

ICL replaced 1900s with 2903 and ME29, which was a 32-bit architecture machine cut back to 24 bits for compatibility with 1900s.

ICL also had office machines called System 10 and System 25, which it inherited from the Singer Sewing Machine Company. That wasn't even binary. It used 60-bit words as 10 6-bit chars holding decimal digits for calculation.

Burroughs large systems was 64-bit memory, with only 48 bits available to user code. It had 8 parity bits per word too. The other 8 bits were assigned to various protection mechanisms, of which I remember read-only, code/data, and system/user bits. Serious memory protection.

Those four systems ate my life for 20 years.

0

The ez80 is a continuation of the z80 family, sporting 24-bit register pairs.

What's quite frankly fantastically stupid, in that a register is 8 bits, but a pair of registers is 24 bits. What's even better is that the upper, most significant bits of a register pair is hidden, so you have to go through hoops to get those upper 8 bits as a separate register.

  • 3
    I wouldn't call it 'hoops'. The ez80 can run in legacy Z80 mode or in 24-bit mode. It's no different than an x86/64 CPU treating the bottom half of RAX as EAX in 32-bit mode. – J... Nov 18 at 15:49
  • It's a lot more hoops then just shifting the register, like you could in x86. – mid Nov 18 at 21:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.