Joe has written a general description of the 600MHz upgrade procedure in PDF format (567K). The full text of this document is included on this page in normal text, plus other notes and images Joe has supplied, along with further thoughts, data for download, references, etc. I will added more information as it becomes available.
For those using O2s, it would obviously be very useful to have a much faster processor than those generally available. The R12K/400 is expensive, while the R5200/300 and standard R7000 variants (300 and 350) are both rare and costly. The main CPU in O2 does all geometry/lighting calculations, and is often involved in host processing aspects of various applications such as Pegamento. Increasing the CPU speed would enhance these functions, as well as vastly improve code compile times, application/system responsiveness, improve performance for video/audio processing and conversion, etc. In short, a faster O2 would make a great machine.
In essence, Joe has discovered that a relatively cheap standard CPU component from PMC Sierra will, when fitted to an R5200/300-type CPU board, work just fine. A couple of other changes are also required, namely an updated PROM and two resistor connections which control CPU core voltage, but these are not complicated to do, and one can always get someone else to do them. Joe will even do this for you for a small fee (details later). The main task of replacing the CPU core itself should be done by a company which has the proper equipment, so from the point of view of the O2 user this is not a difficult upgrade, especially if one is able to get other people to do all the hard work. Indeed, I am looking into offering an upgrade service, but more on that at a later date.
Joe broke the news of his initial success on Nekochan. He reported the following hinv output from his O2:
CPU: QED RM7000 Processor Chip Revision: 5.1 FPU: QED RM7000 Floating Point Coprocessor Revision: 5.0 1 602 MHZ IP32 Processor Main memory size: 512 Mbytes Secondary unified instruction/data cache size: 256 Kbytes on Processor 0 Ternary unified instruction/data cache size: 1 Mbyte on Processor 0 Instruction cache size: 16 Kbytes Data cache size: 16 Kbytes FLASH PROM version 4.18 Integral SCSI controller 0: Version ADAPTEC 7880 Disk drive: unit 1 on SCSI controller 0 (unit 1) CDROM: unit 4 on SCSI controller 0 Integral SCSI controller 1: Version ADAPTEC 7880 On-board serial ports: tty1 On-board serial ports: tty2 On-board EPP/ECP parallel port CRM graphics installed Integral Ethernet: ec0, version 1 Iris Audio Processor: version A3 revision 0 PCI Adapter ID (vendor 0x9004, device 0x8078) PCI slot 1 PCI Adapter ID (vendor 0x9004, device 0x8078) PCI slot 2 Video: MVP unit 0 version 1.4 AV: AV1 Card version 1, O2Cam type 1 version 0 connected. Vice: TRE
The CPU Joe has used is an RM7000C 600MHz from PMC Sierra. Joe reported that using Mozilla on the system felt almost as fast as his Octane R12K/360 - this is clearly a major improvement in responsiveness compared to the feel of a typical R5K/200 O2.
Note that he was also successful in upgrading an original RM7000A/350 board to an RM7000A/400. However, I shall focus solely on the 600 upgrade and later enhancements since the 600 upgrade will obviously be of more interest.
Latest: Joe has had much success changing the L2 cache size (and perhaps speed too) of various O2 CPU boards. Thus, it is possible to improve the L2 cache aswell as increase the clock speed. This will make a big difference to the performance of some applications.
Meanwhile, Joe unfortunately did not have any success with the PMC 866Mhz CPU - apparently it is not quite as compatible with R5200 as PMC thought. Meanwhile, any ideas about a 900 are somewhat hampered by the need to have a distinctly modified IP32 PROM image, which would need some assistance from SGI. Who knows if they would be willing to help; one can but ask!
Watch this space!!
Important Note: This upgrade involves removing and replacing integrated circuit chips and very small surface mount resistors on a printed circuit board. Anytime you make changes to an original PCB, you run the risk of physical or electrical damage to the components as well as the PCB. In addition, mistakes in the soldering of the chips, programming of the PROM and/or selection of parts could damage the CPU board assembly, damage the motherboard assembly, damage the power supply assembly or cause erratic or erroneous results from the computer. If the computer is under a service contract, it is almost certain these modifications will void the contract.
If you make these modifications, you do so at your own risk!
The O2 CPU board is a fairly simple design and pretty much self contained, that means all the setup information and voltage control for the CPU chip are located on the CPU board itself and this information is available to IRIX. This makes it a simple process to improve the performance of the O2 computer by installing a "faster" CPU module. The easiest way to make the CPU module "faster" is to exchange the CPU chip for one with a higher clock speed, modify the PROM to set the board up correctly and supply the correct core voltage to the CPU chip. In this case I exchanged the original out of production QED RM5271-300MHz CPU chip for a present production PMC-Sierra RM7000C-600MHz CPU chip that is 100% pin and command compatible with the older, slower chip. The 600MHz CPU chip has 2 big advantages: first is the faster clock speed, second is the 256K of secondary cache on the CPU chip. The RM5271 CPU chip has 32K/32K of primary cache on the chip running at the chip core speed and uses the 1M cache on the CPU board as secondary cache. The RM7000C CPU chip has 16K/16K of primary and 256K of secondary cache on the CPU chip running at the chip core speed and uses the 1M cache on the CPU board as tertiary cache.
The upgrade involves 4 steps:
The donor CPU board I used for this upgrade was an SGI remarketed RM5200 300MHz 1MB SC card. The FAB number of the PCB is: 034-1451-004 rev A, this is the part number of the CPU PCB itself not the entire CPU board assembly with components. I have also upgraded an SGI RM7000A 350 MHz CPU board with the same FAB number and all the upgrade steps and results were exactly the same. I know there is at least one other FAB version of this PCB, I have no experience with this version, it should be upgradeable but I can make no promises. The CPU chip is the PMC-Sierra http://www.pmc-sierra.com RM7000C 600MHz. PMC-Sierra sells chips through distributors, if you contact them they will put you in contact with your local agent. The PROM used on the factory CPU board and for this upgrade is the Xilinx http://www.xilinx.com part number XC1765ELS08C, it supplies a 32 bit stream at boot up that sets up the CPU chip. This chip is a "write once" type chip; since it cannot be erased or changed it would be wise to order a couple of extras. These are available from Avnet Electronics. http://www.avnet.com The PROM chip will have to be programmed, for this I used a SPROM-TZS programmer from Roman-Jones http://www.roman-jones.com/rj2/index.htm and you will need the SA-1 adapter.
The RM52xx and RM7000x series of CPU chips use a 304 pin TBGA (ball grid array) package and are soldered directly to the CPU board. To replace the CPU chip the old chip has to be unsoldered and removed, the CPU board solder pads cleaned and the new chip soldered on the board. This is not a trivial job; I strongly recommend this be done by a local professional PCB repair shop that will give you a guarantee of their work. It would be a good idea to tell the repair shop that the body of the CPU chip is a copper/polymer laminate; this will make setting up their equipment easier. If you must handle the CPU chips, be careful, this type of chip is easily damaged by static electricity.
See Box A
At boot-time, the CPU chip signals the Xilinx PROM to send its 32 bits of boot-time mode data, which it reads and uses to set its operating conditions. Bit numbers 5,6,7 and 20 (of the 32 total) tell the CPU chip the value to set the SysClock to Pclock multiplier. The SysClock is the frequency (100MHz) supplied by a crystal and PLL chip on the CPU board and the Pclock is the speed (600MHz) of the CPU chip core. Bit number 25 enables the 256KB of cache memory on the CPU chip and bit number 12 enables the tertiary cache memory on the CPU board. Programming the PROM chip is a fairly involved process: the bit-stream program is modified, the binary data is converted to Intel Hex data, the Intel Hex data is formatted for loading into the PROM and then the data is programmed into the PROM chip. For anyone that wants to do this upgrade, this is my PROM program 7000c_600.zip this program has the data for the 600MHz CPU chip modified, formatted and ready to load into the PROM chip. The old PROM chip is removed from the CPU board and the new PROM chip soldered in its place. This is a small outline "surface mount" chip and was never intended to be hand soldered or unsoldered on a PCB. The proper orientation of the PROM chip, the secure soldering of each of the 8 leads to the correct solder pads and making sure there are no solder bridges between leads is critical to this upgrade working properly. Mistakes made here can cause permanent damage to the CPU board and/or the CPU chip.
See Box B
The RM52xx and RM7000x series of CPU chips require different voltages for operation. The RM5271 chip used 3.3V for VccIO (digital inputs and outputs) and 2.5V for VccInt (core voltage) and the RM7000C chip uses 3.3V for VccIO and 1.2V for VccInt. The O2 system board supplies the 3.3V and the core voltage is the 5V system voltage regulated through a Texas Instruments precision voltage regulator. The output of the voltage regulator is adjusted by 2 resistors (R46 and R50) setup as a simple voltage divider. To set the output voltage of the regulator to 1.2V, carefully remove resistors R46 and R50 from the CPU board and solder a small diameter wire in place of R50 and leave the contacts for R46 open.
See Box C
Stability and Performance
The heat sink from the 300MHz donor board was fitted to the 600MHz CPU chip and the completed CPU board was installed in a 1999 O2 (originally a R5000 200MHz) with 512M of system memory, an 18G Seagate 10,000RPM hard disk drive and IRIX 6.5.20f. This O2 system has, at the time of this writing, run 24/7 (with a brief shutdown to reinstall the 200MHz CPU module for performance testing) for 6 weeks with the 600MHz CPU module with no crashes or instabilities of any sort. Programs I run on a regular basis are: Firebird 0.7, Pan, Media Recorder and Media Player, GCC 3.3 Compiler, Blender and several freeware games. The 600MHz CPU chip draws less than 1W more power than the 300MHz chip and after 2 weeks of continuous running, was just warm to the touch and not as warm as the O2's memory chips. To benchmark performance, I setup two simple tests:
1.) mpeg movie conversion - this is an 11.4 second clip 4.456Mbps 160x128 QuickTime (Motion JPEGA) movie at 30fps converted with mediaconvert to a 1.394Mbs 320x240 MPEG-1 movie at 30fps
2.) xmahjongg-3.6.1 gmake - this is compiling xmahjongg-3.6.1 (from the SGI Freeware site) with gcc3.3 using autoconfig and gmake
These are the results for various O2/CPU combinations (only the CPU was changed from test to test):
mpeg movie conversion: 200 - 6.53 min 350 - 2.72 min R12K-270 - 2.60 min 400 - 2.42 min R12K-300 - 2.33 min 600 - 1.70 min xmahjongg-3.6.1 gmake: 200 - 3.60 min R12K-270 - 2.25 min R12K-300 - 2.01 min 350 - 1.97 min 400 - 1.73 min 600 - 1.27 min
The cost of this upgrade (excluding the 300MHz donor CPU board) was about US$320 plus the time of figuring out how to do it. The 600MHz O2 has equal or better performance than an R12KA-400MHz O2 that costs $2500 to $3500 (if you can find one) on the used market (and 4 times that much from SGI), is quieter and produces less heat. Most importantly, this speed increase makes the performance of the O2 perfect for everyday programs like Firebird, Pan, Mozilla and Open Office.