everyone keeps asking me why x86 uses an 8-bit byte, but I'm struggling to find an explanation that makes sense to me. Can any of you help?

what I've found so far
- it looks like x86 evolved from the intel 8008 (from 1972), which was an 8-bit CPU
- the 8008 came after the 4004, which was 4-bit

some questions I have:
- was the reason to build an 8-bit CPU to increase the size of the instruction set? or something else?
- did x86 really directly evolve from the intel 8008?

would love any links!

@b0rk Many early computers used word sizes that were multiples of six bits, and used five or six bit character codes (predating ASCII and EBCDIC). 36 bits was common for big computers, 18 for medium, and 12 bits for small.

@b0rk Early on, 8 and 16 bits were not common sizes, though very few early machines used 32. The word "byte" was created by the developers of the IBM 7030 "STRETCH" 64-bit .supercomputer (1960). Its integer and logical instructions could operate on groups of bits smaller than a word, from 1 to 8 bits. Most I/O was done in 8-bit increments, using an 8-bit character code unique to Stretch. The sub-word data was addressed on it boundaries, making a power-of-two word size important.

@b0rk While Stretch was considered a commercial failure, many of its technical developments were incorporated into the System/360. The 360 established the byte size as a fixed 8 bits. That ultimately waste main influence on other computers, mainframe, mini, and micro, adopting 8-bit bytes.

@b0rk The 8008 used 8-bit bytes because Computer Terminal Corporation designed the architecture for the Datapoint 2200 using 8-bit bytes. The 8008 was designed based on CTC requirements.

@b0rk I'm not sure whether there's any available information regarding specifically why CTC chose 8 bits, but 8-bit bytes were generally becoming commonplace in the late 1960s, in part for IBM compatibility, and in part due to the growing popularity of the ASCII and EBCDIC character codes, which were 7-bit and 8-bit codes, respectively, and 8-bit peripheral devices, including e.g. 8-level paper tape and 9-track magtape (8 data bits).

@b0rk The 8080 was an improved 8008, though the opcodes were reassigned. The 8086 was an improved 8080, with the opcodes reassigned again. All subsequent x86 have had to maintain compatibility (aside from some changes in64-bit "long mode").
Summary: x86 using 8-bit bytes can be directly traced back to the CTC Datapoint 2200, and indirectly to the IBM 7030 and 360.

Follow

@brouhaha @b0rk probably worth noting explicitly that there was no architectural connection between the 4004 and the 8008; the 8008 implemented the instruction set CTC had previously implemented in discrete logic, which predated the 4004. The 4004's instruction set was largely designed by Masayoshi Son of Busicom.

Sign in to participate in the conversation
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.