5 ms·
Intel iAPX 432
- auroralimon 4y agoi remember trying to use it with an Ada compiler at school. I was the only person on campus who had Ada exposure, and it was a remarkably slow machine. Could not get out of its own way. Very ambitious in architecture but too slow and too far ahead of software at the time. i do not recall actually -running- any programs on it. There might have been a monitor running (not a real OS, just BIOS like shell thing)
- kabdib 4y agoI was taking a VLSI design course in 1981, and the professor teaching it proudly showed off some 432 chips (embedded in plastic) that he'd been given. He waxed lyrically about them, how the big boys were doing silicon in Silly Valley. (We, with our colored pencils, were learning how to do NAND gates and full adders in NMOS, on graph paper). Later, I read Organick's book on the 432. It was kind of a mess, no idea how they expected the thing to perform. This was also back when ADA was the up-and-coming language, which the 432 was going to run really well (if you believed the marketing). ADA was pretty intimidating, as it was complicated for the time and generics seemed to scare everyone. (Little did we know that C++ was going to be a thing in a decade or so, and it made ADA seem simple in comparison).
- chasil 4y agoADA evolved into the procedural scripting syntax of many SQL databases. "SQL/PSM is derived, seemingly directly, from Oracle's PL/SQL. Oracle developed PL/SQL and released it in 1991, basing the language on the US Department of Defense's Ada programming language... IBM's SQL PL (used in DB2) and Mimer SQL's PSM were the first two products officially implementing SQL/PSM. It is commonly thought that these two languages, and perhaps also MySQL/MariaDB's procedural language, are closest to the SQL/PSM standard. However, a PostgreSQL addon implements SQL/PSM (alongside its other procedural languages like the PL/SQL-derived plpgsql), although it is not part of the core product." https://en.wikipedia.org/wiki/SQL/PSM https://en.wikipedia.org/wiki/SQL/PSM
- hyperman1 4y agoInteresting. Based on its name, I assumed PL/SQL was derived from PL/I. Then again, PL/I is a parent of ADA according to https://github.com/stereobooster/programming-languages-genealogical-tree https://github.com/stereobooster/programming-languages-genea...
- PAPPPmAc 4y agoThe first of Intel's many expensive lessons about the problems with extremely complicated ISAs dependent on even more sophisticated compilers making good static decisions for performance. Then they did it again with the i860. Then they did it again with Itanium.
- bombcar 4y agoHave we (finally) realized the dream? By basically putting the "smart" part of the compiler in the chip itself, or do we still run relatively simple ISAs?
- AnimalMuppet 4y agoBy putting it on the chip, it can be dynamic rather than static. The microcode can know a lot more of what's going on than the compiler can.
- PAPPPmAc 4y agoI argue about this a lot. Some reasonably substantiated opinions: 1. Highly sophisticated large-scale static analysis keeps getting beaten by relatively stupid tricks built into overgrown instruction decoders, working on relatively narrow windows of instructions. 2. The primary reason for (1) is that performance is now almost completely dominated by memory behavior, and making good static predictions about the dynamic behavior of fancy memory systems in the face of multitasking, DRAM refresh cycles, multiple independent devices competing for the memory bus, layers of caches, timing variations, etc. is essentially impossible. 3. You can give up on a bunch of your dynamic tricks and build much simpler more predictable systems that can be statically optimized effectively. You could probably find an good local maxima in that style. The dynamic tricks are, however, unreasonably effective for performance, and have the advantage that they let you have good performance with the same binaries on multiple different implementations of an ISA. That's not insurmountable (eg. the AOT compilation for ART objects on Android), but the ecosystem isn't fully set up to support that kind of thing.
- pjmlp 4y ago
- nullc 4y agoiAPX 432's security features would be welcome in the computing world we have today, I wonder to what extent its failures doomed similar functionality in Intel? At least there is CHERI now but we still hardly seem close to having hardware enforced capabilities-grade security in high perfomance server kit.
- chasil 4y agoIt is amazing how many failures Intel has survived, and that their core competence really emerged from the Datapoint 2200.
- mattst88 4y agoI remember reading an article about the iAPX 432 that went into extensive detail about the compounding effects of the design—I recall it describing how an operation with an small constant operand would be slow because the ISA didn't support immediates, and as a result you'd have to load it from memory, and there was not even a cache to help with that. Does anyone know this article? I've searched and haven't been able to find it, and it was definitely worth a read.
- mattst88 4y agobcantrill linked to it separately in the comments: http://dtrace.org/blogs/bmc/2008/07/18/revisiting-the-intel-432/ http://dtrace.org/blogs/bmc/2008/07/18/revisiting-the-intel-... The particular parts I was recalling are: > The upshot of these decisions is that you have more code (because you have no immediates) accessing more memory (because you have no registers) that is dog-slow (because you have no data cache) that itself is not cached (because you have no instruction cache). Yee haw! Awesome.
- auroralimon 4y agoi have it’s programmers guide around here somewhere.
- Lammy 4y agoCould it be https://homes.cs.washington.edu/~levy/capabook/Chapter9.pdf https://homes.cs.washington.edu/~levy/capabook/Chapter9.pdf ? Sorry for huge quote, but it's from a huge article: ======================================================= From section 9.2, Segments and Objects: > All objects are addressed through capabilities which, on the Intel 432, are called accessdescriptors (ADS). (The vendor’s terminology is used in this chapter for compatibility with Intel literature. The notation “AD” is used throughout for “capability.“) > At the lowest level, objects are composed of memory segments, and a memory segment is the most fundamental object (called a generic object on the Intel 432). Each Intel 432 segment has two parts: a data part for scalars and an accesspart for ADS, as shown in Figure 9-2. Objects requiring both data and access descriptors can be stored in a single segment. Segments are addressed through ADS, as the figure illustrates. The data part grows upward (in the positive direction) from the boundary between the two parts, while the accesspart grows downward (in the negative direction) from the dividing line. The hardware ensures that only data operations are performed on the data part and that AD operations are performed on the accesspart. ======================================================= From section 9.4.3, Instruction Operand Addressing: > At any moment during a procedure’s execution, ADS specified by instructions must be located in one of four environment objects. Environment object 0 is the context object itself. Instructions can specify any of the ADS within the context object’s accesspart; for example, to refer to the domain or the constants data segment. The three remaining environments, environments 1 through 3, are defined dynamically by the procedure. > Instruction objects contain only a data part. Because Intel 432 instructions are bit-addressable and can start on arbitrary bit boundaries, instructions are addressed as bit offsets into instruction objects. The first instruction in each instruction object begins at bit displacement 64, following the header of four 16-bit predefined fields. The maximum size of an instruction segment is 64K bits, or 8K bytes, due to the bit addressing. Although there is generally one instruction object for each procedure in the domain, procedures larger than 8K bytes require additional instruction objects. The BRANCH INTERSEGMENT instruction can be used to transfer control to another instruction object within the same domain. > The four environment segments thus provide efficient addressing of ADS. An instruction can specify an immediate 4- or g-bit access selector describing the location of an AD for an operand. Or, it can specify the location of a 16-bit accessselector located in memory or on the stack. The short direct format efficiently addresses any of the first four ADS in any of the four environments. This includes the ADS for the global constants, context message (calling parameters), and current domain within the current context. All of the processor-defined ADS within the context object’s accesspart can be addressed using an 8-bit accessselector. ======================================================= Unrelated, but I love how they went for the "As Above, So Below" approach for growing the data-vs-access-parts of instruction object memory ^
- twoodfin 4y agoI keep hoping @bcantrill & the Oxide crew will do a Twitter space on the i432, or perhaps failed architectures generally.
- bcantrill 4y agoWe would love to! Maybe we could convince Robert Colwell to join us, as his paper on the 432 is one of my favorite systems papers of all time![0] [0] http://dtrace.org/blogs/bmc/2008/07/18/revisiting-the-intel-432/ http://dtrace.org/blogs/bmc/2008/07/18/revisiting-the-intel-...
- jaykru 4y agoRob was happy to chat with me about his 432 paper over LinkedIn (cold DM'd him) for a semester project I did on it a few months back. He might go for a podcast episode :) I'd love to listen to it!
- iforgotpassword 4y agoIf you're into some light edutainment-style videos, I enjoyed watching RetroBytes recently: https://youtu.be/4o4MXV-d-jQ https://youtu.be/4o4MXV-d-jQ
- jecel 4y agoAn interesting experiment would be to re-implement the iAPX432 with the same resources as today's high end processors (caches, branch prediction, out of order execution, etc). A simulation would be good enough to run some benchmarks (though the old Ada compilers might be worth improving a bit as well). My guess is that the performance would be very close to an ARM or x86 with the same silicon area.