How the Z80’s 4-bit ALU works (2013)
righto.com
righto.com
"The P6 core's internal data buses for floating-point arithmetic and MMX are only 64 bits wide. Thus the data input ports on the SSE execution units could only be 64 bits wide, as well. In order to execute a 128-bit instruction using its 64-bit SSE units, the P6 must first break down that instruction into a pair of 64-bit instructions which can be executed on successive cycles."
One benefit of this strategy is that it makes it more difficult for 'other' x86 vendors to maintain binary compatibility if the industry leader is constantly changing what 'binary compatibility' means.
P.S. please consider adding "(2013)" to the title
And then there's the Motorola MC14500B, which was genuinely a 1-bit microprocessor. It was used for simple control operations to replace relay logic.
http://www.visual6502.org/wiki/index.php?title=RCA_1802E
Each instruction took either 16 or 24 clock cycles due to this, and although other operations were done in parallel and could have been significantly faster, I guess performance was not much of a concern back then as making the microsequencer as simple as possible.
Positioning and routing between thousands of transistors was a daunting task. I believe a lot of simplifications were done because of that as well
>but it also (typically) had a higher max clock frequency, mostly making up for it.
That used to be true. It is no longer true nowadays, so 65C02 beats the Z80 speed-wise.
> The eZ80 has a 3-stages pipeline. Available at up to 50 MHz (2004), the performance is comparable to a Z80 clocked at 150 MHz if fast memory is used (i.e. no wait states for opcode fetches, for data, or for I/O) or even higher in some applications (a 16-bit addition is 11 times as fast as in the original). The eZ80 also supports direct continuous addressing of 16 MB of memory without a memory management unit, by extending most registers (HL, BC, DE, IX, IY, SP, and PC) from 16 to 24 bits. In order to do so, the CPU works in a Z80-compatible mode or a full 24-bit address mode.
https://en.wikipedia.org/wiki/Zilog_eZ80
Note the pipelining, and the 24 bit ALU
It seems to me like upgrading one of these existing designs would be much cheaper R&D wise that you'd be able to compete very well on price for the IoT or other markets.
>you'd be able to compete very well on price for the IoT or other markets.
Why do you think that the Z80 and the 6502 (and their derivatives) are still on the market? :-D
Which it couldn't.
The spectrum smashed the C64 for speed of numerical operations, that's why the specrrum had lots of wireframe and solid filled 3d games and the C64 didn't.
Like, Carrier Command on the Spectrum vs the abomination that appeared under the Carrier Command logo that appeared on the Commodore.
nothing like a rose tinted glasses and fanboizm when it comes to membering those fluid 60fps full color FPS Spectrum games.
Not really? The two phases are more or less just inverted versions of each other[1], but 1 clock cycle, for the purposes of counting cycles-per-instruction, is the same time (I think) whether you're measuring phase-1-high to phase-1-high or phase-2-low to phase-2-low.
The Commodore Pet disk drives used this trick; one processor was the application processor, which listened for IEEE488 commands and handled the disk format; the other processor handled the low-level stuff (we'd call it a DSP today).
Yes, the Pet disk drive did have twice the number of processors as the computer it was attached to.
http://www.6502.org/users/andre/petindex/drives/arch/index.h...
(You could reduce the ROM size by using tricks such as multiple levels of ROM or partially decoded ROMs.)
Instruction sets are usually defined so groups of bits have meanings and can be decoded separately. This makes the PLA a good fit.
For a specific example, the 6502 PLA decodes instructions matching 100XX1XX to the control line STY (ignoring the timing bits for simplicity). This takes 1 row in the PLA, but it would take 16 entries in a ROM.
More info on the 6502 PLA: http://visual6502.org/wiki/index.php?title=6507_Decode_ROM
I thought ROM had something similar to "don't care" bit which was a 0 was represented by the absence of a transistor. Or does "don't care" mean something else?