Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
I have a huge update regarding this: After painstakingly buzzing out every single pin, I have successfully mapped out pretty much the entirety of the 300-pin MPx Bus connector! I then created the correct schematic symbol and footprint, and have started working on the initial schematic, which is available on my GitHub here: https://github.com/dosdude1/MPx-CPU-Board-744x (it is a KiCad 6.x project).

I'm hoping to have the end result be a dual-744x board, but I may abandon the idea of having two CPUs if it ends up being significantly more difficult to design and/or route, or much more expensive to produce.

At this point, I have now put in over 20+ hours working on this (mapping out the connector took me the best part of 3 days), and it is at the point now where I am ready to start working on the supporting circuitry design, such as VCORE regulator, decoupling, implementing all the necessary pullups/pulldowns, etc.

Now, with that said, it definitely would be beneficial if you or someone could double-check the pinout, by buzzing everything out again on another card (NOT an MDD card, as they have a different pinout... As I found out the hard way). I'm 90% sure it's all correct (I went over it a second time after the initial mapping), but it's always best to have a second pair of eyes go over something like this. It's about 130 lines to probe, so it's very time-consuming.

With regard to the CPU VCORE supply design, if you would be willing to work on that, that would be absolutely awesome. It's the one part of this I have the least experience with, so having you assist with that would be very helpful. The only note I have to add is that I'd prefer using a buck regulator that has its output voltage set via "VID" pins on the regulator, rather than by changing resistor values as some designs employ (such as the one used in the iMac G4). It makes it much easier to experiment with different VCORE voltages when installing CPUs. Lastly, just be aware of space constraints... The card should basically be a replica of the card @ervus posted above (also attached picture again for reference). This is the same size as the standard single CPU boards found in the Sawtooth PowerMac G4s.

View attachment 2264234
This is awesome. I'll probe out a dual 7400 and single 7410 once my breakout board gets here (I can't pass the sanity check to probe it out when the pins are on opposite sides of the PCB). I can definitely look into the VCORE/VDD and VBUS/OVDD regulators. I have been designing compact power supplies for a few years now and I have yet to come across a controller that allows the "VID" setting like many of the PowerMac G4 CPU cards use. The vast majority of them are resistor divider based. Then again, I haven't specifically looked for one that used an alternative method of setting the voltage. I'll do some digging through some datasheets today and see if I can track down a "VID" type of buck controller. As for the VBUS/OVDD side of things, this was just a linear regulator on every CPU card I've seen so we can probably stick with that here. Any chance you know if we are targeting a 1.8v or 2.5v VBUS/OVDD?
 
This is awesome. I'll probe out a dual 7400 and single 7410 once my breakout board gets here (I can't pass the sanity check to probe it out when the pins are on opposite sides of the PCB). I can definitely look into the VCORE/VDD and VBUS/OVDD regulators. I have been designing compact power supplies for a few years now and I have yet to come across a controller that allows the "VID" setting like many of the PowerMac G4 CPU cards use. The vast majority of them are resistor divider based. Then again, I haven't specifically looked for one that used an alternative method of setting the voltage. I'll do some digging through some datasheets today and see if I can track down a "VID" type of buck controller. As for the VBUS/OVDD side of things, this was just a linear regulator on every CPU card I've seen so we can probably stick with that here. Any chance you know if we are targeting a 1.8v or 2.5v VBUS/OVDD?
Awesome, yeah hopefully there's some sort of modern buck regulator that allows voltage control via "VID" pins... I hate messing with VCORE voltage with resistor divider control, as I always have to buy a whole bunch of resistors of varying values. As for OVdd, 1.8V is what should be targeted, as that's what is used on all the stock 7400 and later systems. Linear regulator should be perfectly fine for OVdd.
 
Last edited:
This is awesome. I'll probe out a dual 7400 and single 7410 once my breakout board gets here (I can't pass the sanity check to probe it out when the pins are on opposite sides of the PCB). I can definitely look into the VCORE/VDD and VBUS/OVDD regulators. I have been designing compact power supplies for a few years now and I have yet to come across a controller that allows the "VID" setting like many of the PowerMac G4 CPU cards use. The vast majority of them are resistor divider based. Then again, I haven't specifically looked for one that used an alternative method of setting the voltage. I'll do some digging through some datasheets today and see if I can track down a "VID" type of buck controller. As for the VBUS/OVDD side of things, this was just a linear regulator on every CPU card I've seen so we can probably stick with that here. Any chance you know if we are targeting a 1.8v or 2.5v VBUS/OVDD?

Power supply design is not my realm of expertise, but if you can’t find a VID-style regulator, you could consider using a digital potentiometer and a simple microcontroller (like an ATTiny10) to emulate the resistor divider most of these expect.
That may add more cost or PCB footprint or complexity than you want, but it would allow for nicely programmatic voltage control.
 
  • Like
Reactions: evanboonie
Awesome, yeah hopefully there's some sort of modern buck regulator that allows voltage control via "VID" pins... I hate messing with VCORE voltage with resistor divider control, as I always have to buy a whole bunch of resistors of varying values. As for OVdd, 1.8V is what should be targeted, as that's what is used on all the stock 7400 and later systems. Linear regulator should be perfectly fine for OVdd.
I did some research today and found a few options that might let us preserve VID/PVID setting of the voltage. I opened an issue on the github project so I can track my findings better and prevent commandeering this thread.
 
  • Like
Reactions: dosdude1
If you want to recreate an aftermarket CPU design, I think the Powerlogix/Newer Technology cards had some nice features:

First, they allowed external power from 5, 12, or 28v. This is nice because it can be a problem trying to get 90+ watts (e.g. dual 7447) through the 300-pin connector, and in the case of the Cube if you get power straight from the 28v line then you are not limited by the VRM. Powerlogix called this feature "VRM bypass." Even apple Quicksilver CPU cards get power from an external 12v line.

They also had individual power for each CPU. This means you can control the voltage for each CPU independently, and in the case of a single CPU card the power components can be omitted for the absent CPU. I think Powerlogix claimed other advantages for this power design (maybe efficiency?), but I don't remember the details.

CPU voltage was set with switches. The "VID" approach can be accomplished with a switch block and a few resistors of strategic values that feed a plain resistor divider controller. This gives you both easy and complete control over the voltage for each CPU.

Each CPU speed was set with switches. This makes it easy to test or configure speed settings for each CPU independently. This no-brainer design element was not used by other upgrade makers. ??

The cards had temperature sensors. This would be a nice feature, but probably a lower priority.

It might be better to start a new thread on this project...
 
I'll probe out a dual 7400 and single 7410 once my breakout board gets here...

I think it would make more sense to look at an apple 7450 board. For designing a 744x board, the 7400 has a number of differences where the 7450 is basically the same thing with L3 cache.
 
I do think that a supplemental power connection is basically necessary in a Cube. The CPU and VCore power loss on a dual 7447/7448 will indeed pull 80-90W (16-18A on the 5V rail) when running a maximal load like prime95. Even if you use a better VRM (like the one I plan on building, see my thread on that topic), the VRM connector in the cube is only rated for 3A per pin. The 5V rail has 5 pins, so that means it is rated for 15A. If I had to guess, the 5V power plane/traces in the Cube logic board won't be too comfortable above that point either. We also have to allocate 3A of the 5V rail to the AGP slot and USB ports assuming they are all maximally loaded. The Molex micro-fit on the Cube VRM is rated for 8.5A and carries a 5V line, so we can get a lot more current from there.

As for making the VRM support multiple input voltages, this is definitely possible, but also greatly increases the complexity of the rail design. I discuss this at some length on the github issue for designing the VDD rail. The TL;DR is that supporting more voltages will make our efficiency worse across the board and involve designing power isolation circuitry on the input side that allows us to maintain proper power-up sequencing.

Making each CPU get its power from a separate VDD rail has a lot of complexities involved. It would eat up a lot more board space and increase cost due the second buck controller and required supporting components. It would also require splitting the VDD plane in half while maintaining startup sequencing with the VBus rail (744x CPUs are very picky about power-up sequencing). We are at least planning to go with a two phase buck controller that easily allows one of the phases to be eliminated to reduce the cost and waste involved in building a single CPU card.

While I wouldn't personally want to set my CPU multipliers to different values on a dual CPU card, that should be insanely simple to implement. DIP switches for both voltage and PLL are possible if we can find ones that fit under the ~4.2mm of clearnace we have on a Cube heatsink.

I agree that this probably warrants its own thread at this point, but I'll let @dosdude1 make that call since he started this initiative and owns the github repo for it.
 
Last edited:
I think it would make more sense to look at an apple 7450 board. For designing a 744x board, the 7400 has a number of differences where the 7450 is basically the same thing with L3 cache.
I'm aware that the 7400/7410 have a different BGA layout. I mostly wanted to verify the power rail design and potentially ship my breakout board to someone with a 744x they could probe to make it easier to verify the measurements. The 745x chips use more pins than the 744x do, so I think the only way to know the routing for sure is to probe a 744x card.
 
I'm aware that the 7400/7410 have a different BGA layout. I mostly wanted to verify the power rail design and potentially ship my breakout board to someone with a 744x they could probe to make it easier to verify the measurements. The 745x chips use more pins than the 744x do, so I think the only way to know the routing for sure is to probe a 744x card.
The pinout of the MPx bus mezzanine connector on the PowerMac G4 systems (except "Yikes" and "MDD") is the same, regardless of which CPUs they used. So the correct connector pinout can still be determined by probing any appropriate CPU card. The extra pins on the 745x is just for the external L3 cache, and 744x having the same amount of pins as 7400/7410 has the external L2 cache I/O replaced with some extra pins for address and data parity, which is not used on any PowerMac.
 
  • Like
Reactions: evanboonie
I can certainly do the swap for you, though I do not have an eMac chassis to actually test it. So it will be up to you to test different PLL configs and appropriately modify CPU VCORE voltage. You will first of course need to patch the system's BootROM before doing anything. You can try using the GigaDesigns patch, but if that doesn't work, the ROM will most likely need to be manually patched. I can do so for you; you just need to dump the machine's BootROM using my custom Flashrom build under Linux (I normally use Ubuntu Mate 16.04), and send it to me. Then you can flash my modified version back on again using Flashrom.
Hello! I am playing with an iMac G4 800MHz to which I have put a 1.33GHz XSERVER CPU, and I am considering adding the L3 cache of this XSERVER, but I do not know if the firmware will recognize it or not, or what ratio it will have.

If once the cache was added it was not recognized, by downloading the ROM, could you modify it so that it is recognized? even the cache ratio?
 
Another huge update: I FULLY FIXED the NVRAMRC script, and it can now be loaded on boot automatically without issue! I have attached a text file containing the updated script; just set it as NVRAMRC using Terminal in Mac OS. Then you should be able to set use-nvramrc? to true as well, and the system should still boot successfully, along with properly detecting an installed 7448! Video demo here:

Although it ended up being unnecessary, I did also spend the time to FULLY reverse-engineer and re-implement the FCode binary source, which I have also attached. It ended up not being the issue, so no modifications actually needed to be made to it.
Attached my work on the patch. joevt/fcodenospace.of is a shorter version. It probably also fixes an exception that might happen if the CPU is not a 7448. I haven't tested it.

The patch was also discussed at https://forums.macrumors.com/threads/powermac-g4-fun-part-2.2246307/post-31365002

We can make the patch permanent by applying it to a firmware updater.

The patch applies to Open Firmware which is in a compressed part of the ROM. The NewerTech MAXPower_3.1b5FW patcher can only patch decompressed parts of the ROM so it can't be used for this purpose. The NewerTech MAXPower_3.1b5FW patcher can however be used to make other modifications such as the one described at https://forums.macrumors.com/thread...g-a-pencil-to-overclock.1973903/post-29596069 . Actually the NewerTech MAXPower_3.1b5FW patcher contains a patch for that (named "7447A/7448 patch" or "7457/7447A HID0 patch" or "7457 HID0 patch").

Modifying Open Firmware requires a full firmware updater. An existing firmware updater would be split into its parts. The Open Firmware part of the Rom Image part would be decompressed, modified, then recompressed. Then all the parts would be placed back into the firmware updater. Modifying the decompressed Open Firmware part means modifying the fcode, or converting it to Forth, modifying the Forth, then tokenizing the Forth back to fcode. Or it could be a combination of those - tokenization for the new fcode, while modification for existing fcode. Tokenization may require updates to a tokenizer to handle some Apple fcode features (16 bit fcode numbers, local variables, long branches, code definitions, etc.).
 

Attachments

  • PowerLogix OS X 7448 NVRAMRC.zip
    15.8 KB · Views: 40
OMFG...

I start a thread about how I was excited at using a pencil to overclock a G4 mac mini and.. well, blimey guys you really RAN with it.

Let me get this stright - if a bit over simplified. You worked out how to install younger, faster, CPUs in to older Macs?

Can we get this thread in to 2026 please? Just so I can have started a thread that continued to be relevant for 10 years!!

p.s. - Yes, I still have the G4 Mac Minis - I did sell me B&W G3 with OG studio LCD though (needed the space).
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.