Please consider a donation to the Higher Intellect project. See https://preterhuman.net/donate.php or the Donate to Higher Intellect page for more info. |
PowerPC 603
The 603 is a model of PowerPC processor under the AIM alliance (Apple/IBM/Motorola). The 603 was not known for having impressive performance and the processor appears to have been mostly used for low-cost or portable applications.
PowerPC 603e
The 603e improves performance over the 603 with the expansion and enhancement of the L1 cache. Clock speeds of the 603e typically reached 200MHz.
The benefit of the 603e is that it operates as a computer with 3.3 volts (as compared to most chip sets on desktop computers that require 5 volts). The 603e processor integrates 1.6 million transistors on an 85 square-millimeter wafer. It also uses the .5-micron fabrication technology used by the 601, so is smaller and thinner than the 601. It further lowers its power requirements by added more functional units over and above the three-instruction pipeline of the 601. The 603e adds a Load/Store Unit (LSU) and a system-register unit (SRU) to manage power consumption. The LSU and SRU can be separately disabled if not in use, further saving power. There are three built-in power saving modes: doze, nap, and sleep. All of these features provides the 603e chip with a power consumption of 3 watts, less than half the dissipation of the 601.
PowerPC 603ev
The 603ev is an improved version of the 603e and allowed for clock speeds up to 300MHz.
Split Cache
Unlike the PowerPC 601, which has a unified cache, the PowerPC 603 has separate caches for instructions and data. This can lead to cache coherency problems in applications that mix code and data. In the Macintosh Operating System, the Code Fragment Manager loads almost all native code to ensure that the code is suitable for execution. If your code is loaded by the Code Fragment Manager, you don’t have to worry about cache coherency. If, however, your application generates code in memory for execution, problems can arise. Examples include compilers that generate code for immediate execution and interpreters that translate code in memory for execution. For such cases, you can use the call MakeDataExecutable to notify the Macintosh Operating System that data is subject to execution. This call is defined in OSUtils.h.