Inside the HP Nanoprocessor
righto.com
righto.com
Source: "CMOS VLSI Design", page 806.
While I don't exactly know the case with Thunderbolt, "normal" Display Port uses PCI-E physical layer, just unidirectional and with different protocol on top.
On networking equipment, the necessary signal corrections are part of why (other than DRM) it's more expensive to use full transceivers that accept cables, vs. fixed-length cables with fixed transceivers vs. direct-attach cables which have minimal logic for signal quality.
>The design of the clock module was rather unusual. To preserve the time when the computer was powered-down, the clock module was built around a digital watch chip with a backup battery.17 Inconveniently, the digital watch chip wasn't designed for computer control: it generated 7-segment signals to drive an LED, and it was set through three buttons. To read the time, the Nanoprocessor had to convert the 7-segment display outputs back into digits. And to set the time, the Nanoprocessor had to simulate the right sequence of button presses to advance through the digits.'
That's quite the convoluted bit of interfacing, but no doubt using the off-the-shelf digital watch chip made it a "win". It's pleasingly Rube Goldberg.
https://i.pinimg.com/originals/fd/1d/01/fd1d012149d9e7d67371...
I guess there was something to that? :)
On the topic of using calculator chips as coprocessors, National Semiconductor introduced the MM57109 Number Cruncher Unit (that is the real name) in 1977. It was essentially a repackaged 12-digit scientific calculator chip, operating on binary-coded decimal values with values entered in Reverse Polish Notation. This chip was absurdly slow; a tangent, for instance, could take over a second.
http://www.projects.scorchingbay.nz/dokuwiki/_media/electron...
I was realizing that I don't have a decent portable way to tell the time for long periods. Cellphones die in a few days, my AA-powered wall clock is hardly pocket-sized, and I haven't worn a watch in years. Seemed prudent to acquire.
I hit up the Casio outlet on eBay, searched "digital alarm" and sorted by price. Bam, F91W. Buy it now, done and done.
Then I started reading about its storied history! What a wild ride. If it's good enough for.... literally everyone from Presidents to terrorists... it's good enough for me.
Layers of abstraction, even in the hardware.
Then the last number on the chip to indicate speed.
All that hands on for each chip and selling for $15 at that time - makes you wonder how much they made upon them with all that manual binning needed.
Any idea on the margins back then for this chip?
As for repairs, each product's service manual has a table specifying the correct resistor value for each Nanocomputer bias voltage. So you'd need to change the resistor if you replaced the processor.
It wouldn't have much use for complex addressing modes, given the lack of RAM, no?
I'm trying to get my head around a RAMless computer and I'm not quite sure this all makes sense just yet.
As far as addressing modes, the Nanoprocessor has two modes for accessing registers. The first is direct, e.g. store the accumulator in register #3.
The second is indexed through R0. Store the accumulator in register # (3 OR R0). This lets you do table lookups (in a small table). Adding to R0 would make more sense, but the Nanoprocessor doesn't have an adder so they use OR.
So it makes sense to have multiple addressing modes even without RAM, but there's not a whole lot you can do with them.
One neat aspect is it was intended to allow the use of an off chip, MMIO ALU if the design required it (and was still faster than a 6502 even with the separate ALU).
The ALU was accessed through four I/O ports: two for the arguments, one for the operation and carry-in, and one to read the result. It wasn't memory-mapped, but I/O mapped since the Nanoprocessor didn't have memory operations (except reading instructions from ROM).
Instead of memory-mapped I/O, the Nanoprocessor had I/O-mapped memory. The real time clock module had 256 bytes of RAM that were accessed through I/O ports.
So if you added RAM (as in the real time clock), the RAM was accessed through I/O instructions. You'd write the address to one port and read the data through another port. It ended up looking a lot like microcode, with memory accesses split into two pieces.
I was surprised by the two-instruction skip — skip was still pretty common in those days, but I haven’t seen two before. I suppose it would be useful for setting a flag before branching, but I wonder how valuable it was in the end.
The two-instruction skip could also be used in tricky ways to implement two entry points to a function. E.g.
Entry 1: Set Accumulator bit 1
If accumulator bit 1 set, skip two instructions
Entry 2: Set something different for entry 2
More setup for entry 2
Code continues for both entry 1 and entry 2With polysilicon gates the equivalent of the green would be one big rectangle, but since it would come after the gate (instead of being the first step like here) it would actually become two separate rectangles just touching the gate on each side.
HP: hold my -2 voltage
I think you could implement a faster addition algorithm by testing the high order bit of the arguments, incrementing the result as needed, and then shifting. Repeating this 8 times should give you the sum, compared with up to 255 steps for the simple algorithm.
"lacking even a mentioned on Wikipedia"
Never mind, someone already created one today (which is not too surprising).
I recommend the article just for that bit.