Google-apper
Hovedmeny

Post a Comment On: Ken Shirriff's blog

"Reverse-engineering the carry-lookahead circuit in the Intel 8008 processor"

9 Comments -

1 – 9 of 9
Blogger Josh O said...

Am I crazy, or could you add really fast with just a ROM. I guess you'd need a 17 bit address (8 bits for the 2 operands and 1 for carry) and you'd need 9 data bits to have the carry out, but it would be almost instantaneous in comparison, right? I guess it would be just too much real-estate, but maybe it could live outside the processor like a math coprocessor did. Of course then you have the overhead of passing it in and out which probably negates any adding speed. Not to mention it's 128K of 9 bit words which is kind of a lot of memory at that time. but you could split the problem into 2, 4-bit adds and just double the cycles. Did anybody ever try this for maximum adding speed or were these other techniques good enough. I guess making adding much faster wouldn't solve any problem if the rest of the chip couldn't keep up anyhow.

November 8, 2020 at 6:13 PM

Blogger hobbified said...

Josh O, I don't think there was ever a time when a >1Mbit ROM and an 8-bit ALU were ever economically viable in the same machine. In early days, or a low-cost machine, the ROM would have been too expensive, and in later days, or a high-end machine, an 8-bit ALU (even one built from a fast LUT ROM) would have been pitiful.

November 9, 2020 at 12:02 PM

Blogger Ken Shirriff said...

Josh, that's an interesting question. I'm not convinced that a ROM would be faster since the address has to go through a bunch of gates to be decoded. The long signal lines in the ROM have a lot of capacitance, which will slow you down. I looked at the vintage 2716 EPROM, and it takes 450 ns for access which is fairly slow. So a ROM isn't going to be an instantaneous silver bullet.

I should point out the low-end IBM 1620 scientific computer (1959), which used lookup tables for addition and subtraction, so your idea has been used in the past. This computer had the codename CADET. People joked that it stood for "Can't Add, Doesn't Even Try". The decimal lookup table in core memory was used as a cost-saving measure, not for performance.

November 9, 2020 at 1:55 PM

Blogger gallier2 said...

In the company I worked in the 90s we did something in that vein. Of course not for a simple operation like add but for a complex wave form we needed for a special communication protocol. The protocol used a very specific waveform as carrier for the information and the chip to generate existed only from Phillips, it was extremely expensive and always on allocation. We managed to get away with a big fast eprom in which we stored the samples of the wave form, adding a bit of analogue circuitry to adapt the signal and voilà, cheaper card.

November 11, 2020 at 5:06 AM

Anonymous Mark Jeronimus said...

Robert Baruch did exactly this on his ALU board in his yet-unfinished LMARV-1 (Tangible RISC-V) processor. He explains carry propagate and generate in great detail, then goes on how to implement it (and all other ALU functions) with RAM chips as lookup tables.

https://www.youtube.com/watch?v=KGBUtKRBKZs

November 12, 2020 at 10:25 AM

Blogger Marian Aldenhövel said...

Hi,

thank you for another fascinating write-up.

This has been especially interesting to me because the chip is somewhat close to my heart. It had powered the first electronic toy I owned and I have written a crappy emulator in JaveScript for it this spring.

Amongst other things it includes a disassembler for the code the machine runs, a display of all 128 bytes of RAM and even breakpoints should you care about stopping the thing.

If you are interested you can find it at https://marian-aldenhoevel.de/jmerlin/.

November 30, 2020 at 9:34 AM

Anonymous jay said...

very nice information

December 10, 2020 at 6:33 AM

Anonymous John said...

My undergrad degree is Electronics Engineering (BSEL, 1973) from California Polytechnic State University, San Luis Obispo, CA. My senior year project was the first one at Cal Poly to use a microprocessor. Micros were expensive in those days. The 8008 listed for $300 each. I begged a cosmetic reject from Intel and they were gracious enough to provide one in a ceramic side brazed cavity package. The 8008 by itself didn't do anything but consume power. It required a halo of ~50 parts to function, and that was before you added memory. The project, a smart voltage gain calculating DVM, garnered a lot of attention from the faculty whose reaction ranged from "terrific project!" to "that thing is inadequate...". On the other hand, my two quarter project stretched to four quarters and became the pacing item to graduating on time. In retrospect I should have picked a less ambitious project, but that realization was part of the learning I came away with.

January 25, 2021 at 12:49 PM

Anonymous Anonymous said...

There is a typo about the Analytical Engine: it was from 1837 (not 1937).

June 20, 2021 at 5:58 AM

You can use some HTML tags, such as <b>, <i>, <a>

Comment moderation has been enabled. All comments must be approved by the blog author.

You will be asked to sign in after submitting your comment.
Please prove you're not a robot