Intel iAPX 432

Intel iAPX 432

Infobox Computer Hardware Cpu
name = Intel iAPX 432


caption =
produced-start = 1981
produced-end =
slowest = 5 |slow-unit = MHz
fastest = 8 |fast-unit = MHz
fsb-slowest = | fsb-slow-unit =
fsb-fastest = | fsb-fast-unit =
manuf1 = Intel
arch =
sock1 =
numcores = 1
The Intel iAPX 432 was Intel's first 32-bit microprocessor design, introduced in 1981 as a set of three integrated circuits.The iAPX 432 was intended to be Intel's major design for the 1980s, implementing many advanced multitasking and memory management features in hardware, which led them to refer to the design as the Micromainframe.

The processor's data structure support allowed modern operating systems to be implemented on it using far less program code than ordinary processors, as the 432 did much of the work in hardware. The design also directly supported object oriented programming and garbage collection and was therefore much more complex than most processors of the era. Using the semiconductor technology of its day, Intel's engineers weren't able to translate the design into a very efficient implementation. Along with very weak early (PL/M and Ada) compilers, this contributed to slow but expensive computer systems. Intel's plans to replace the x86 architecture with the iAPX 432 thus ended miserably.

The abbreviation "iAPX" prefixing the model name reportedly stands for "intel Advanced Processor architecture", the X coming from the Greek letter Chi.

The iAPX 432 was originally planned to have a clock speed of 10 MHz, but the available models were actually 5, 7, and 8 MHz. [http://www.brouhaha.com/~eric/retrocomputing/intel/iapx432/] It operated at a top speed of 2 million instructions per second. [http://www.elecdesign.com/Articles/ArticleID/2839/2839.html]

History

Development

The 432 project started in 1975 as the 8800, so named as a follow-on to the existing 8008 and 8080 CPUs. The design was intended to be purely 32-bit from the outset, and be the backbone of Intel's processor offerings in the 1980s. As such it was to be considerably more powerful and complex than their existing "simple" offerings. However the design was well beyond the capabilities of the existing process technology of the era, and had to be split into several individual chips.

The core of the design was the two-chip General Data Processor (GDP) which was the main processor. The GDP was split in two, one chip (the 43201) handling the fetching and decoding of the instructions, the other (the 43202) executing them. Most systems would also include the 43203 Interface Processor (IP) which operated as a channel controller for I/O. The two-chip GDP had a combined count of approximately 97,000 transistors while the single chip IP had approximately 49,000, making them some of the largest IC designs of the era. By way of comparison, the Motorola 68000 (introduced in 1979) had approximately 40,000 transistors.

In 1983 Intel released two additional integrated circuits for the iAPX 432 Interconnect Architecture, the 43204 Bus Interface Unit (BIU) and 43205 Memory Control Unit (MCU). These chips allowed for nearly glueless multiprocessor systems with up to 63 nodes.

The project's failures

Several design features of the iAPX 432 conspired to make it much slower than it could have been. The two-chip implementation of the GDP limited it to the speed of the motherboard's electrical wiring, although this is a minor issue. The lack of reasonable caches was more serious. The instruction set also used bit-aligned variable-length instructions (as opposed to the byte or word-aligned semi-fix formats used in the majority of computer designs), making instruction decoding quite complex. In addition the BIU was designed to support fault-tolerant systems, and in doing so added considerable overhead to the bus, with up to 40% of the bus time in wait states.

Post-project research suggested that the biggest problem was in the compiler, which used high-cost "general" instructions in every case, instead of high-performance simpler ones where it would have made sense. For instance the iAPX 432 included a very expensive inter-module procedure call instruction, which the compiler used for all calls, despite the existence of much faster branch and link instructions. Another very slow call was enter_environment, which set up the memory protection. The compiler ran this for every single variable in the system, even though the vast majority were running inside an existing environment and didn't have to be checked. To make matters worse it always passed data to and from procedures by value rather than by reference, requiring huge memory copies in many cases.

Impact and similar designs

An outcome of the failure of the 432 was that microprocessor designers concluded that object support in the chip leads to a complex design that will invariably run slowly, and the 432 was often cited as a counter-example by proponents of RISC designs. However it is held by some that the OO support was not the primary problem with the 432 and that the implementation shortcomings mentioned above would have made any chip design slow. Since the iAPX 432 there has been only one other attempt at a similar design, the Rekursiv processor, although the INMOS Transputer's process support was similar — and very fast.

Intel had spent considerable time, money and mindshare on the 432, had a skilled team devoted to it, and were loath to abandon it entirely after its failure in the marketplace. A new architect, Glenford Myers, was brought in to produce an entirely new architecture and implementation for the core processor, which would be built in a joint Intel/Siemens project (later BiiN), resulting in the i960-series processors. The i960 RISC subset became popular for a time in the embedded processor market, but the high-end 960MC and the tagged-memory 960MX were marketed only for military applications and saw even less use than the 432.

Architecture

Object-oriented memory and capabilities

The iAPX 432 has hardware and microcode support for object-oriented programming and capability-based addressing. The system uses segmented memory, with up to 224 segments of up to 64 kibibytes each, providing a total virtual address space of 240 bytes. The physical address space is 224 bytes (16 MiB).

Programs are not able to reference data or instructions by address; instead they must specify a segment and an offset within the segment. Segments are referenced by Access Descriptors (ADs), which provide an index into the system object table and a set of rights (capabilities) governing accesses to that segment. Segments may be access segments, which can only contain Access Descriptors, or data segments which cannot contain ADs. The hardware and microcode rigidly enforce the distinction between data and access segments, and will not allow software to treat data as access descriptors, or vice versa.

System-defined objects consist of either a single access segment, or an access segment and a data segment. System-defined segments contain data or access descriptors for system-defined data at designated offsets, though the operating system or user software may extend these with additional data. Each system object has a type field which is checked by microcode, such that a Port Object cannot be used where a Carrier Object is needed. User program can define new object types which will get the full benefit of the hardware type checking, through the use of Type Control Objects (TCO).

In Release 1 of the iAPX 432 architecture, a system-defined object typically consisted of an access segment, and optionally (depending on the object type) a data segment specified by an access descriptor at a fixed offset within the access segment.

By Release 3 of the architecture, in order to improve performance, access segments and data segments were combined into single segments of up to 128 kibibytes, split into an access part and a data part of 0–64 KiB each. This reduced the number of object table lookups dramatically, and doubled the maximum virtual address space.

Garbage collection

Software does not need to explicitly deallocate objects that are no longer needed, and in fact no method is provided to do so. Instead, the microcode implements part of the marking portion of Edsger Dijkstra's on-the-fly parallel garbage collection algorithm (a mark-sweep style collector). The entries in the system object table contain the bits used to mark each object as being white, black, or grey as needed by the collector.

The iMAX-432 operating system includes the software portion of the garbage collector.

Multitasking and interprocess communication

The iAPX 432 microcode implements multitasking, using objects in memory to represent the processor, processes, communication ports, and dispatching ports. Each processor is associated with a dispatching port, and when it is idle will attempt to dispatch a process from that dispatching port. When the process blocks or its time quantum expires, the processor re-enqueues that process at its dispatching port, then dispatches a new process from the dispatching port.

Interprocess communication is supported through the use of communication ports. A communication port is essentially a FIFO that can enqueue either messages waiting to be received by a process, or processes waiting to receive a message (but never both). A program can use the Send, Receive, Conditional Send, Conditional Receive, Surrogate Send, or Surrogate Receive instructions to communicate with other processes by sending messages to or receiving messages from communication ports. If there is no message enqueued at a communication port, a normal Receive instruction on that port will block the current process until a message is available. Similarly, a normal Send instruction will block the current process if the port is full. The Conditional Send and Conditional Receive instructions do not block, instead returning a boolean result indicating whether the operation succeeded. The Surrogate Send and Surrogate Receive instructions provide a Carrier object that can block in place of the process.

One of the elegant aspects of the iAPX 432 architecture is that a dispatching port is actually just a communication port whose messages are process objects, thus unifying the operation of process dispatching and interprocess communication and simplifying the underlying implementation.

Multiprocessing

The iAPX 432 has hardware support for multiprocessing, using up to 64 processors (combination of GDPs and IPs). Usually all GDPs share a common workload by using a single system-wide dispatching port, though it is possible to partition the workload by assigning some processors to different dispatching ports. With suitably designed hardware, processors can be added to or removed from the system on the fly.

Fault tolerance

From the outset, the iAPX 432 included support for fault tolerance. All of the 432's chips could be configured in pairs for "Functional Redundancy Checking (FRC)", in which one component, the master, operated normally, and a second, the checker, carried out the same internal operations in parallel and verified its results against those of the master.

FRC provides for failure detection, but full fault tolerance requires a recovery mechanism. Systems based on the Interconnect Architecture supported automatic failure recovery by combining pairs of FRC modules for "Quad Modular Redundancy (QMR)". In a QMR configuration, at any given time one FRC module is a primary and the other is a shadow. The two modules operate in lockstep, but the roles alternate in order to detect latent faults. The shadow module does not drive the bus. If a fault is detected in either FRC module, that module is disabled while the nonfaulted module can continue operation. The software is notified, and can choose to let the system continue operating (without fault tolerance for that module), pair the module with a spare, or take the module offline (shifting its workload to other processors in the system for graceful performance degradation).

I/O

The 43203 Interface Processor (IP) allows a more conventional microprocessor to be interfaced as an Attached Processor (AP) to an iAPX 432 system. The AP acts as an intelligent I/O controller. The IP allows the AP to access objects in the iAPX 432 memory through the use of memory-mapped windows, but will enforces the access rights applicable to the objects.

The IP provides five memory windows. Four are used to map objects for I/O operations; the fifth is the control window and is used by the AP to perform control operations such as requesting changes to the mapping of the other windows.

The IP also offers a special "physical" mode in which the AP has unrestricted access to the entire iAPX 432 address space. Physical mode is intended to be used only for system startup and debugger support.

References

* Levy, Henry M., "Capability-Based Computer Systems", 1984, Digital Press. Chapter 9 [http://www.cs.washington.edu/homes/levy/capabook/Chapter9.pdf] covers the iAPX 432
* Myers, Glenford J, "Advances in Computer Architecture" 2nd edition, (1982), J Wiley, ISBN 0-471-07878-6. Section VI An Object-Oriented Microprocessor (pp 335-417) covers the iAPX 432,

External links

* [http://www.computerhistory.org/exhibits/microprocessors/up2.shtml Computer History Museum]
* [http://www.brouhaha.com/~eric/retrocomputing/intel/iapx432/ Intel iAPX432 Micromainframe] contains a list of all the Intel documentation associated with the iAX 432, a list of hardware part numbers and a list of over 30 papers.
* [http://www.brouhaha.com/~eric/retrocomputing/intel/iapx432/cs460/ Intel iAPX 432 (Computer Science project paper)] – By David King, Liang Zhou, Jon Bryson, David Dickson
* [http://www.cs.utexas.edu/users/EWD/ewd05xx/EWD595.PDF On-the-fly garbage collection: an exercise in cooperation] by Edsger W. Dijkstra and Leslie Lamport and A.J.Martin and C.S.Scholten and E.F.M.Steffens


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • Intel iAPX 432 — Micromainframe первый 32 битный микропроцессор (точнее семейство микропроцессоров) компании Intel, анонсирован в 1981 году (в 1975 году[1] был спроектирован). iAPX 432 должен был быть основным из процессоров Intel в 1980 х, аппаратно реализуя… …   Википедия

  • Intel iAPX 432 — El Intel iAPX 432 fue el primer diseño de microprocesador de 32 bits de Intel, introducido en 1981 como un conjunto de tres circuitos integrados. El iAPX 432 fue pensado para ser el principal diseño de Intel para los años 1980, implementando… …   Wikipedia Español

  • Intel iAPX 432 — Der Intel iAPX 432 war Intels erster 32 Bit Mikroprozessor. Er wurde 1981 als Set bestehend aus drei Integrierten Schaltkreisen eingeführt und war als das grundlegende Intel Design für die 1980er Jahre geplant. Fortschrittliche Funktionen wie… …   Deutsch Wikipedia

  • IAPX 432 — Intel iAPX 432 Micromainframe  первый 32 битный микропроцессор (точнее семейство микропроцессоров) компании Intel, анонсирован в 1981 году (разработка начата в 1975 году[1]). iAPX 432 должен был быть основным из процессоров Intel в 1980 х,… …   Википедия

  • Intel I860 — Un Intel i860 L Intel i860 (i860 dit aussi 80860, nom de code N10) est un microprocesseur RISC d Intel, lancé en 1989. L i860 est le premier à proposer une architecture et un jeu d instructions (ISA, Instruction Se …   Wikipédia en Français

  • Intel Core 2 Duo — Intel Core 2 Core 2 Processeur Intel Core 2 Duo E6600 Conroe Fabriqué 2006 Fréquence du processeur …   Wikipédia en Français

  • Intel Core 2 Quad — Intel Core 2 Core 2 Processeur Intel Core 2 Duo E6600 Conroe Fabriqué 2006 Fréquence du processeur …   Wikipédia en Français

  • Intel Core Architecture — est le nom d une microarchitecture x86 de processeurs Intel, évolution de l architecture des processeurs Intel Core. « Core » est en anglais un nom commun signifiant « noyau » ou « cœur », et désignant en… …   Wikipédia en Français

  • Intel Corporation — Logo de Intel Corporation Création 1968 Fondateur(s) Gordon Moore, Robert Noyce et …   Wikipédia en Français

  • Intel E7205 — Intel Corporation Logo de Intel Corporation Création 1968 Fondateur(s) Gordon Moore, Robert Noyce et …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”