[HN Gopher] The complex history of the Intel i960 RISC processor
___________________________________________________________________
The complex history of the Intel i960 RISC processor
Author : zdw
Score : 65 points
Date : 2023-07-01 17:49 UTC (5 hours ago)
(HTM) web link (www.righto.com)
(TXT) w3m dump (www.righto.com)
| jecel wrote:
| Great blog post. Some observations:
|
| Ada was not originally an object-oriented language, though it
| eventually became so. But the 432 project predated Ada and
| pivoted to that language when it came out. Intel had to adapt Ada
| to work with objects (it was pretty close already).
|
| An advantage of the 33 bit scheme to protect capabilities is that
| you can push them on the stack where they will get mixed with
| normal data and then pop them later such that everything still
| works. In the 432 style you would need two separate stacks or
| awkwardly work around not being able to push/pop capabilities.
|
| The "AND NOT" instruction is interesting for using a mask to
| clear bits. which is why it is called "BIC" on the ARM.
|
| While the 186 and 286 were flawed for making IBM PC compatible
| machines, for what they had been designed for they did a pretty
| good job.
| eep_social wrote:
| > Even though the SB didn't support memory management or objects,
| Intel didn't remove that circuitry.
|
| I am curious about this detail. Was this due to production line
| convenience, an early example of binning, or probably something
| else entirely?
| adrian_b wrote:
| As always in this blog, the article is well researched and it
| includes a lot of interesting information.
|
| Nevertheless, there is an important point about 80960 that is not
| discussed at all. There still exists a legacy of 80960 that is
| incorporated in all modern Intel and AMD CPUs, which consists of
| the XADD (normally LOCK XADD) instruction.
|
| Before 1980, the instruction sets of the CPUs included 3 kinds of
| atomic read-modify-write instructions (I mean dedicated atomic
| instructions, not just locked variants of some standard
| instruction with a memory operand): test-and-set (introduced by
| UNIVAC 1108 in 1965; e.g. Motorola MC68000 had TAS), swap
| (introduced by Edsger W. Dijkstra in 1971-10; e.g. Intel 8086 had
| it under the mnemonic LOCK XCHG) or compare-and-swap (both
| compare-and-swap and compare-double-and-swap were added to IBM
| System/370 in 1973; Motorola MC68020 added similar instructions
| in 1984).
|
| The next innovation in atomic instructions happened in 1981, when
| Allan Gottlieb and Clyde P. Kruskal proposed the fetch-and-add
| operation for the NYU Ultracomputer project.
|
| For the next few years, the fetch-and-add operation remained
| available just in that academic project, but then somebody
| decided to implement it in 80960.
|
| Fetch-and-add was first documented publicly by Intel in early
| 1988, in the BiiN description, under the mnemonic ATADD (atomic
| add). The ATADD instruction was also supported by 80960MC and
| 80960KB, which were launched later in 1988.
|
| One year later after 80960, on 1989-04-10, Intel launched the
| 80486 CPU, whose most important ISA enhancements over 80386 were
| extra atomic instructions, i.e. fetch-and-add from 80960 (LOCK
| XADD) and compare-and-swap from IBM and Motorola (LOCK CMPXCHG).
|
| Since 80486, all Intel and AMD CPUs include the fetch-and-add
| instruction inherited from 80960 (whose origin was in the NYU
| Ultracomputer).
| alexjplant wrote:
| > Clyde P. Kruskal proposed the fetch-and-add operation for the
| NYU Ultracomputer project.
|
| I had no idea that my Discrete Structures professor from
| undergrad had such a storied CV! Kruskal was one of my favorite
| professors. One thing that sticks in my mind about him was what
| he said when he got to the Honor Code section of the syllabus
| while going over it on the first day of class. Instead of
| giving us the customary speech (humorous, menacing, or
| otherwise) about catching students cheating in the past and
| their academic records being ruined he simply said "I trust you
| all implicitly to do the right thing" and moved on. He was a
| great teacher and was similarly engaging for the rest of the
| semester.
| kens wrote:
| That's an interesting piece of history. Thank you for sharing
| it.
| quercusa wrote:
| Great info as always, Ken.
|
| In the early and mid-90s, Intel was pushing their Intelligent I/O
| initiative (aka I2O with a subscript '2'). This had a split-
| driver model, the bottom half of which ran on an i960. It had no
| performance advantage and IHVs suspected it was an Intel plan to
| sell 960s and take away their secret-sauce advantages.
|
| I2O didn't provide much advantage on 1-4 processor systems but
| provided much of the underpinnings for the NGIO and InfiniBand
| I/O model.
| kens wrote:
| Yes, interest in I2O was lukewarm for the reasons you mention.
| I gave I2O a brief mention in the article but didn't want to go
| into too much of a tangent :-)
|
| I suspect that some people at Intel really wanted to have IBM
| System/360 mainframe style I/O channels. There was the 8089 I/O
| coprocessor for the 8086. The iAPX 432 had a I/O coprocessor
| (43203) that worked with another microprocessor to act as an
| I/O channel. And then there was I2O, using an i960 as an I/O
| processor.
| rjsw wrote:
| The 8089 coprocessor was used in the Apricot PC [1], I had
| one but don't remember any documentation for the 8089 being
| available at the time.
|
| [1] https://en.wikipedia.org/wiki/Apricot_PC
| pinewurst wrote:
| I wouldn't say BiiN sold fault-tolerant workstations. They were
| departmental and perhaps the next step up servers.
|
| I remember evaluating the CA for a smaller router and found it a
| perfectly reasonable part/pricing especially when compared with
| the other options (some weird AMD 29k variant and the local reps
| of the Transputer cult who never accepted the non-arrival of the
| T9000).
| kens wrote:
| Thanks, I've updated the article.
| pinewurst wrote:
| I also vaguely remember BiiN failed due to being too slow for
| their price (despite their claimed MIPS) and that their Ada
| OS was a disaster of a software development project, not even
| sure if it seriously shipped.
| kens wrote:
| I'm sure there are a bunch of people on HN who have used the
| i960. Author here if anyone has questions about the article.
| jjtheblunt wrote:
| Was the i960 in laserprinters?
| kps wrote:
| At the time I worked for a small compiler shop, and we had a C
| compiler for the i960 --
| https://web.archive.org/web/19971014124149/http://www.archel...
| -- In particular I wrote the standalone instruction scheduler
| described under 'Scheduler optimizations', particularly useful
| for the superscalar variants.
| jes wrote:
| I worked at Applied Microsystems (now defunct). We made in-
| circuit emulators and did one for the 80960CA variant. I
| remember that processor had an undocumented (IIRC) feature
| called "Incremental Trace" that would allow the emulator to
| keep track of what the processor was doing. We used it to
| develop an execution trace disassembler for the processor.
|
| I seem to remember HP/Boise was using a lot of the CA parts for
| use in printers. They had one of our emulators, and I remember
| that we once got a report of the emulator probe tip having
| caught fire (!) due a short or some such.
|
| I enjoyed working with the CA part. I also worked with the
| 80960MX part. Now, that was an odd processor!
| jes wrote:
| Following up my own post, I also remember the hardware guys
| having occasional phone calls with some guy known only as
| "Larry" at Intel. I'm guessing he was a microcode guy or some
| such. Would be interesting to know more about him.
| b800h wrote:
| With regards to BiiN, one thing I'm not familiar with was how the
| serial connection to, say, 80 terminals was handled on a machine
| like this. If I had 80 Wyse terminals (alas, I only have two),
| and wanted to hook them up to, for example, a Linux server, how
| would I go about doing that?
| Beermotor wrote:
| I'm going from 30+ year old memories as an intern, but from
| what I remember:
|
| Usually the RS232 was just on the terminal side. Somewhere
| along the path it got converted to twisted pair.
|
| All the twisted pair serial lines congregated in the server
| room at a punch-down box. Eighteen year old me wasn't allowed
| to mess with anything past that point, but from what I can
| remember those lines were concentrated by a multiplexer (mux)
| and sent on to the minicomputer.
| adrian_b wrote:
| Thirty years ago ISA cards with 8 RS-232 interfaces were
| common, so connecting some 30 or even 50 terminals to a single
| PC was not difficult. I have used a few such computers for
| testing various devices with serial interfaces.
|
| Eighty terminals on a single PC might have been more difficult,
| but by that time the computers were already networked, so it
| would have been cheaper to just use two PCs than to use some
| kind of terminal aggregator.
| kens wrote:
| The BiiN systems supported RS-232, RS-422, and TTY current
| loop. I assume you plugged a serial interface board into the
| system that provided multiple serial ports. But it might have
| been an external terminal concentrator (or establishment
| controller in IBM lingo) that hosted the terminals.
| b800h wrote:
| I'm still unclear on this - I notice from online that Linux,
| for example, supports up to 256 TTY devices by default. How
| might one go about actually physically hooking up that many
| devices these days? Is a terminal concentrator still
| available?
| convolvatron wrote:
| 16 port isa cards were a thing. apparently they are still
| made. not fond memories.
| marcus0x62 wrote:
| In the mid 90's we used Cyclades multi-port serial cards to
| do this. These were PCI cards that connected to one or more
| breakout boxes that contained (in our case) 16 RS-232 ports
| each. We had 48 total ports connected to a 60mhz Pentium
| with 32MB of RAM.
|
| This was a decidedly low budget solution, even at the time.
| There were also commercial offerings from vendors like
| Cisco and Livingston that provided a terminal server in a
| dedicated appliance form factor.
|
| _edit_ the breakout boxes look like this:
| https://149707953.v2.pressablecdn.com/wp-
| content/uploads/imp...
| kens wrote:
| Here's an example of a PCI card that supports 16 RS-232
| devices: https://www.amazon.com/StarTech-com-PCI-Express-
| Serial-Card/... (not an affiliate link)
| yjftsjthsd-h wrote:
| If you asked me to do it, I'd probably see how many
| serial/USB adapters I could plug into how many USB hubs
| attached to a single box. I can't _see_ any reason it
| wouldn 't work, and the parts are cheap enough, and not
| even particularly obscure. I _suspect_ the failure point
| would be something in the stack not expecting to have to
| operate like that and having insufficient performance, but
| this is all speculative.
| SoftTalker wrote:
| You'd use a terminal server between the terminals and the linux
| box.
|
| DECserver was a popular one back in the day.
|
| https://en.wikipedia.org/wiki/DECserver
|
| These days it might be more economical to just have something
| like a Raspberry Pi attached at each terminal. Then the
| connections to your network could all be wireless.
| h2odragon wrote:
| the bond wires on only 2 sides thing is so wild. Perhaps the
| original use was supposed to be in clusters of 4? How many of
| these things did the NSA eat, i wonder?
| kens wrote:
| I think the bond wire pattern was just for layout convenience:
| if the buses end up on one side, why run wiring around to the
| other side?
|
| As far as the NSA, I haven't come across any mention of the NSA
| using the chip, but I guess that doesn't say much :-) The chip
| was popular with the military and it seems like to would be
| good for NSA-style applications (processing large quantities of
| data). The i960 has bit instructions that would be useful for
| the NSA such as scan for the most-significant set bit in a
| word, although I don't think it has population-count which the
| NSA likes.
___________________________________________________________________
(page generated 2023-07-01 23:00 UTC)