kernelthread.com

© Amit Singh. All Rights Reserved. Written in February 2004


Seeking Power

By the beginning of the 1990's, Apple was making great efforts to overhaul its operating system. Of the three colored projects mentioned earlier, Blue would emerge as System 7.

System 7

When released in 1991, System 7 represented a gigantic leap relative to earlier Macintosh systems. Some of its features were:

The first Macintosh with an MMU was introduced in 1987: the Macintosh II. System 7 was the first to make use of it. However, the virtual memory support was only preliminary. VM features such as protected address spaces, memory mapped files, page locking, shared memory, etc. were not present.

System 7
System 7

System 7 had several usability improvements. Users could view and switch between running applications via a menu. The trash can had the same status as any other folder, and now had to be proactively emptied. Text could now be dragged between applications (in addition to cut-and-paste). Aliases could be created for access to documents and applications from two or more locations. Control Panels and Extensions were organized hierarchically on disk.

Even with all these improvements, System 7 only did cooperative multi-tasking, and lacked memory protection.

Around this time, Apple formed an alliance with IBM and Motorola that put the PowerPC on Apple's hardware roadmap. This required fundamental changes in the design of the Macintosh operating system.

AIM for POWER

The emphasis on making the semantics of a computer architecture close to those of higher level programming environments had led to very complex processors. However, the benefits of simplicity in computer architecture design was understood by people like Seymour Cray even in the early 1960's. His CDC 6600 supercomputer, as well as the CRAY-1, were RISC machines, although the term had not been coined yet. RISC (Reduced Instruction Set Computer) does not only imply fewer instructions. RISC architectures are predominantly load-store, are register centric, usually employ fixed-format instructions, have efficient pipelining, require relatively fewer clock cycles per instruction, and so on.

Note that the line between RISC and CISC has been growing fuzzier over the years.

IBM started research on the 801, a RISC architecture, in 1975, and in the early 1980's, Berkeley and Stanford began work on the RISC and MIPS projects, respectively. By 1990, there were several competing RISC architectures in the market, such as MIPS, HP Precision Architecture (PA-RISC), SPARC V8, Motorola 88k, IBM RS/6000, etc. The RS/6000 was an implementation of a second generation RISC architecture called POWER.

As part of a project code-named Jaguar, Apple had briefly tried, unsuccessfully, to use the Motorola 88k as their future RISC-based hardware platform. They turned to the PowerPC next.

In 1991 Apple, IBM, and Motorola joined forces to form the AIM Alliance with the goal of creating a Common Hardware Reference Platform (CHRP), which resulted in the PowerPC Architecture. The first PowerPC processor was the 601, which included most of the POWER instructions. PowerPC was designed as a 64-bit architecture, and can be dynamically switched between the 64- and 32-bit modes. An implementation may implement only the 32-bit subset, as was the case with the PowerPC processors that Apple used prior to the G5. PowerPC has been the mainstay of Apple hardware since its adoption.

Note that CHRP was also aimed at companies other than Apple to sell PowerPC based systems. There was even a PowerPC version of Windows NT.

Apple Likes RISC: ARM

Apple was attempting to get behind RISC computing strongly in the early 1990s. Acorn Computer Group had developed the world's first commercial RISC processor, the ARM1, in the mid 1980s. Even before the AIM alliance, Apple teamed with Acorn to fund a new company called Advanced RISC Machines (ARM) Limited. The company's goal was to create a new RISC microprocessor standard. VLSI Technology was an investor and technology partner in this endeavor, and the first licensee. ARM's first processor was the ARM6, an embeddable RISC core. Based on version 3 of the ARM processor architecture (ARMv3), it had full 32-bit code and data addressing. An ARM6 processor, a 20 MHz 610, was used in Apple's MessagePad hand-held that ran the Newton operating system.

Mac OS for PowerPC

System 7.1.2 was the first to support the PowerPC. Porting all components of the operating system to a new architecture would have taken prohibitively long. Moreover, it was extremely important for Apple to provide a way so that "older" (68k based) applications could continue to run. The system architecture devised to take care of these issues included a hardware abstraction layer (HAL) and a 68k emulator.

A nanokernel (a term sometimes used for a kernel even smaller than a microkernel) was used to "drive" the PowerPC. It executed in supervisor mode as the HAL and exported low-level interfaces for interrupt management, exception handling, memory management, etc. to the rest of the system. Only the system software and possibly debuggers could use the nanokernel API.

The 68k emulator was initialized by the nanokernel during boot-time. It only emulated a 68LC040 user-mode instruction set, without emulating the PMMU or the FPU. Exception stack frames were created as per a slightly older processor, the 68020, for better compatibility. There were a few other caveats and limitations (as compared to a real 68LC040).

A/UX did not run on this emulator, since it used the PMMU directly.

Since two instruction set architectures were in effect simultaneously, a system level component called the Mixed Mode Manager was used to handle context switches between the two types of code. Code pieces belonging to the two architectures could also call each other. While the manager was transparent to 68k code, PowerPC code was aware of it.

Note that the initial PowerPC ports of Mac OS had little native PowerPC code. Most existing applications, device drivers, system extensions, and large parts of the Toolbox and the operating system itself were not PowerPC native initially. Apple would port many of these to the PowerPC, and it was hoped that the nanokernel would form the basis for future Apple systems, possibly as a robust microkernel.

MAE

A Mixed Mode Manager was also used in a product called Macintosh Application Environment (MAE). MAE was an X Window application available for SPARC (SunOS) and HP 9000/700 (HP-UX) that provided an emulated Macintosh environment on these systems. MAE also contained a 68k emulator. The Mixed Mode Manager was used to optimize execution by translating 68k code to native instructions if possible. MAE provided an emulated System 7.x, and supported (depending on MAE version) features such as Aliases, AppleEvents, AppleTalk, NFS, QuickDraw, QuickTime, TrueType, and many more.

A similar solution was Apple's Mac-on-Unix (MAS), meant for running Macintosh applications under Unix on the PowerPC.

System 7.5 and later included OpenTransport (an implementation of STREAMS based on Mentat Portable STREAMS), QuickDraw 3D, a Java runtime, and OpenDOC (a software component architecture analogous to Microsoft's OLE). "Fancy" features such as a startup screen with a Mac OS logo and a progress bar were added.

NetWare for PowerPC

Apple partnered with Novell in the mid-90's to port NetWare to the PowerPC. The jointly funded port was designed to be much easier to configure than NetWare for x86, and was intended to run on a server (called "Shiner") designed by Apple.

Although the port was more or less completed, the project was killed before it ever shipped. Shiner would lead to the Apple Network Server running AIX.

AIX for PowerPC

A few years later in 1996, Apple would have a short-lived product called Apple Network Server. The PowerPC based server had hardware features and options like hot-swappable drive bays (using RAID), hot-swappable power supplies and fans, provision for adding several SCSI devices and PCI cards, processor on a daughterboard (for easy upgradability), an easy to replace logic board, and an LCD status display on the outside.

The Network Server came with the AIX for Apple Network Servers operating system, based on IBM's AIX, and did not support Mac OS. With AIX, Apple had an advanced operating system with features like memory protection, preemptive multiprocessing, multithreading, support for various networking protocols (including AppleTalk and AppleTalk services), RAID, Journal File System (JFS), Logical Volume Manager (LVM), and so on. The user could choose to work with the command-line interface, or could have one of the AIXwindows or Common Desktop Environment (CDE) graphical interfaces.

The Network Server line was discontinued in 1997, and Apple would not have a serious server offering until 2002, when they introduced the Xserve.

<<< Many Systems for Many Apples main Quest for the Operating System >>>