Live data from Hacker News

x86 Is an Octal Machine (1995)

gist.github.com

21–30 of 51 posts

Re: x86 Is an Octal Machine (1995)

#21
post #12

Earlier quoted context omitted.

The Datapoint 2200, the source of the 8008 instruction set, is an interesting machine. The CPU was built from TTL chips. To decode instructions, they used decimal BCD decoder chips, specifically the 7442. But they'd use them as octal decoder chips, only using 8 outputs. The Datapoint 2200 documentation gave the opcodes in octal, so they were clearly thinking in octal. The 8008 documentation, however, didn't use octal…

Do you know if Federico Faggin copied the logic design of the 2200 or implemented the ISA using his own design?

His own. There would have been no way to fit the logic design of the 2200 on a chip, both because of lack of metal layers, and because the 2200 was designed to be frugal in how many chips it used, using off-the-shelf chips, which is very different from being frugal in the amount of transistors you use when you have freedom to lay out each one by hand.

Re: x86 Is an Octal Machine (1995)

#22
post #12

Earlier quoted context omitted.

The Datapoint 2200, the source of the 8008 instruction set, is an interesting machine. The CPU was built from TTL chips. To decode instructions, they used decimal BCD decoder chips, specifically the 7442. But they'd use them as octal decoder chips, only using 8 outputs. The Datapoint 2200 documentation gave the opcodes in octal, so they were clearly thinking in octal. The 8008 documentation, however, didn't use octal…

Do you know if Federico Faggin copied the logic design of the 2200 or implemented the ISA using his own design?

The implementation of the 8008 is completely different from the 2200 (as is Texas Instruments' forgotten TMX 1795 implementation). It would be extremely inefficient to copy the TTL implementation, since that depended on what chips were available. But the biggest difference is that the Datapoint 2200 was a serial machine that used serial shift-register memory while the 8008 had a "normal" 8-bit datapath.

Re: x86 Is an Octal Machine (1995)

#23
post #20

Earlier quoted context omitted.

The sibling comments disagree with you

I’m not seeing any disagreement in sibling or other comments

The comment by kens explains how the Datapoint 2200 both documented the design of the ISA in octal and used collections of three bits to decode at the fairly high TTL chip level.

https://news.ycombinator.com/item?id=30409100#30409889

Re: x86 Is an Octal Machine (1995)

#24
post #20

Earlier quoted context omitted.

I’m not seeing any disagreement in sibling or other comments

The comment by kens explains how the Datapoint 2200 both documented the design of the ISA in octal and used collections of three bits to decode at the fairly high TTL chip level. https://news.ycombinator.com/item?id=30409100#30409889

The fact that instructions have some 'octal' structure doesn't make the thing an 'octal machine' and as importantly, a Datapoint 2200 is not an x86. The x86 is not an octal machine.

Re: x86 Is an Octal Machine (1995)

#25
post #24

Earlier quoted context omitted.

The comment by kens explains how the Datapoint 2200 both documented the design of the ISA in octal and used collections of three bits to decode at the fairly high TTL chip level. https://news.ycombinator.com/item?id=30409100#30409889

The fact that instructions have some 'octal' structure doesn't make the thing an 'octal machine' and as importantly, a Datapoint 2200 is not an x86. The x86 is not an octal machine.

> The fact that instructions have some 'octal' structure doesn't make the thing an 'octal machine'

Basic concepts like the 8 GPRs are rooted in it's octal decoding roots. MOD/RM is still octal decoded, SIB is still octal decoded, etc. These fields aren't just three bits long, but also aligned to a three bit boundary within the byte being decoded.

> and as importantly, a Datapoint 2200 is not an x86. The x86 is not an octal machine.

The x86 traces its lineage to that and the points still hit. For instance, even when they added more registers in x86_64, it's still a three bit bank with simply a new prefix to select whether it's referring to the top or bottom 8 register bank out of now 16 total registers. There's some awkward places where you can't address different 8 register banks in the way you'd want to from an encoding perspective because of these continued restrictions going back to the Datapoint 2200.

Having written the HDL for a simple x86_64 decoder, it is very much still an octal machine.

Re: x86 Is an Octal Machine (1995)

#26
Google tells me "July 5, 1992" about this article, though it doesn't say why, and Google Groups spat me out with a wave of unusability after a few seconds of trying to search there.

Is there currently any good public way to search usenet archives?

Re: x86 Is an Octal Machine (1995)

#27
post #6

> ALL 80x86 OPCODES ARE CODED IN OCTAL That's a backwards way of saying it. I'd rather say, given the hardware structure of the bit fields of the opcode register, the binary opcodes are perhaps better described by octal notation rather than hexadecimal.

I can't interpret the author's intent, but I think they're trying to point out a conflict between how Intel and most other references document the x86 opcode byte (as a byte table, with no clear coordinate relation between bits) versus how the byte is structured internally (around octal values, which would reveal a coordinate relationship if visualized).

[deleted]

Re: x86 Is an Octal Machine (1995)

#28

I remember seeing a copy of this Usenet post years ago! It's one of my favorite "secrets" about x86's encoding. The "core" (non-E/VEX, non-SSE, etc.) x86 encoding is wonderfully clever and terrible by modern standards, and Volume 2 of Intel's SDM is a great reference for how x86 manages to pack remarkably complicated addressing, operand, etc. semantics into just a handful of bytes. The result is a format that's remar…

I haven't seen the FD abbreviation, is it "full disclosure" ?

FD, or 375 octal. :)

Re: x86 Is an Octal Machine (1995)

#29
post #24

Earlier quoted context omitted.

The fact that instructions have some 'octal' structure doesn't make the thing an 'octal machine' and as importantly, a Datapoint 2200 is not an x86. The x86 is not an octal machine.

> The fact that instructions have some 'octal' structure doesn't make the thing an 'octal machine' Basic concepts like the 8 GPRs are rooted in it's octal decoding roots. MOD/RM is still octal decoded, SIB is still octal decoded, etc. These fields aren't just three bits long, but also aligned to a three bit boundary within the byte being decoded. > and as importantly, a Datapoint 2200 is not an x86. The x86 is not an…

They are still bits, not octdigits or whatever. When 4 bits are used, nobody calls these 'hex machines'. We can definitely spend a lot of time pedanti-digging into the details but at the end of the day, it's just an early example of 'viral title'.

Re: x86 Is an Octal Machine (1995)

#30
post #12
post #3

Earlier quoted context omitted.

Thanks for these links - very interesting. Astonishing to think that we can see traces of the 8008 still today and that it wasn’t actually an Intel designed ISA (came from CTC / Datapoint).

The Datapoint 2200, the source of the 8008 instruction set, is an interesting machine. The CPU was built from TTL chips. To decode instructions, they used decimal BCD decoder chips, specifically the 7442. But they'd use them as octal decoder chips, only using 8 outputs. The Datapoint 2200 documentation gave the opcodes in octal, so they were clearly thinking in octal. The 8008 documentation, however, didn't use octal…

One thing I forgot to mention: the 6502 microprocessor also uses groups of 3 bits in its instructions. However, they group them in the "wrong" way, aaabbbcc, so looking at the instructions in octal doesn't help you at all.

Also, after using the Xerox Alto, which uses 16-bit words, I realized that octal is terrible. The problem is that if you're looking at two bytes in a word, the values make no sense in octal. For example, the characters "AB" form the hex word 0x4142, while "BA" forms 0x4241; the two letters are clear. But in octal, "AB" is 0o40502 and "BA" is 0o41101; the two letters turn into unrecognizable numbers.

Post reply on HN