Testing 333MHz IBM 604ev 288in PGA module with G3 carrier for a PCI Mac

joevt

Well-known member
I have always found it curious how OF on the 6500 *does* recognise the 740, but calls it a 608! (if it did not recognise it, it would get called PowerPC 60?)
make-cpu-properties is responsible for setting the CPU device name.

Open Firmware 2.0.3 changes the last character of this string: PowerPC,60x
with a characer from this string: ?1?34?3384??????
using the 4 least significant bits of the upper 16 bits of the PVR as an index.

The 740 has PVR like this: 0x00080100
The character at index 8 is 8
All 7xx CPUs would do the same.

Open Firmware 1.0.5 uses characters from this string: ?1?34?33?4?????? which is identical except for index 8.

Open Firmware 2.0.4 uses the 4 least significant bits of the upper 16 bits of the PVR in a case statement to select an entire string for the CPU name instead of just a single character.
 

LightBulbFun

Well-known member
make-cpu-properties is responsible for setting the CPU device name.

Open Firmware 2.0.3 changes the last character of this string: PowerPC,60x
with a characer from this string: ?1?34?3384??????
using the 4 least significant bits of the upper 16 bits of the PVR as an index.

The 740 has PVR like this: 0x00080100
The character at index 8 is 8
All 7xx CPUs would do the same.

Open Firmware 1.0.5 uses characters from this string: ?1?34?33?4?????? which is identical except for index 8.

Open Firmware 2.0.4 uses the 4 least significant bits of the upper 16 bits of the PVR in a case statement to select an entire string for the CPU name instead of just a single character.

very interesting! so theres a look up table of sorts, its very interesting that for 2.0.3 apple did happen to add that 8 replacing one of the ?'s , perhaps PowerPC 608 was going to be the name for the G3 before it was renamed to the 750 (I do recall reading that it was called the 750 in the end since that was a larger number then the PowerPC x704 CPU)

where does OpenFirmware pickup the "ev" part of the CPU name? a 603ev mac like the 4400/5500 and 3400 with its stock CPU reports "PowerPC,603ev"

I am also curious what CPU name strings are present in New World ROM's? I am aware of PowerPC,750, PowerPC,Max (the code name for the 7400, which is seen when you install a 7400 into a G3 Blue and white) PowerPC,G4,PowerPC,970,PowerPC,G5 and of course PowerPC,60? I wonder if there are any others hiding in there? :)
 
Last edited:

joevt

Well-known member
where does OpenFirmware pickup the "ev" part of the CPU name? a 603ev mac like the 4400/5500 and 3400 with its stock CPU reports "PowerPC,603ev"

I am also curious what CPU name strings are present in New World ROM's? I am aware of PowerPC,750, PowerPC,Max (the code name for the 7400, which is seen when you install a 7400 into a G3 Blue and white) PowerPC,G4,PowerPC,970,PowerPC,G5 and of course PowerPC,60? I wonder if there are any others hiding in there? :)
Like I said before, Open Firmware 2.4 and later use a case statement to choose the entire CPU string instead of a part of the CPU string.
PVR 7 = 603ev.

Search for : make-cpu-properties and : cpu-case in the Part2.of files of my ROM dumps.
: cpu-case is in the latest ROMs and has the largest list of CPUs.
Code:
: cpu-case
    pvr@ 10 >> dup
    case
        1 of " 601"   2dup             plldefault endof
        3 of " 603"   2dup             plldefault endof
        4 of " 604"   2dup             plldefault endof
        5 of " 602"   2dup             plldefault endof
        6 of " 603e"  " 603e Stretch"  plldefault endof
        7 of " 603ev" " 603ev Valiant" plldefault endof
        8 of
            l2cr@ 0< if
                " 750" " 750 Arthur" pllppc750 true to fat-arthur?
            else
                " 740" " 740 Arthur" pllppc750 then
            pvr@ 0ffff and 2201 =
            pvr@ 0f0f and 204 =
            colon_definition_function_17e9
            and or
            if
                true to sidewindernapbug?
                (l
                    1 sys if
                        ."  with Nap Bug"
                    then
                l)
            then
        endof
        9 of " 604e" " 604e Sirroco/Helmwind" plldefault endof
        0a of " 604r" " 604r Mach5" plldefault endof
        0c of " G4" " G4 Max"
            pllmax
            true to max?
            l2cr@ 0< dup to fat-max? ?fat
        endof
        7000 of " 750" " 750 Sahara" pllsahara
            true to fat-arthur?
            pvr@ 0ff0f and 203 =
            if
                true to vmin?
            then
        endof
        8000 of
            " G4" " G4 V'ger" pllvger
            true to v'ger?
            l2cr@ 0< dup to fat-v'ger? ?fat
        endof
        8001 of " G4" " G4 Apollo" pllapollo
            true to v'ger?
            l2cr@ 0< dup to fat-v'ger? ?fat
        endof
        8002 of " G4" " G4 Apollo7" pllapollo7
            true to v'ger?
            l2cr@ 0< dup to fat-v'ger? ?fat
        endof
        8003 of " G4" " G4 Apollo7PM" pllapollo7pm
            true to v'ger?
            has-dynamic-step? to supports-dfs?
            l2cr@ 0< dup to fat-v'ger? ?fat
        endof
        8004 of " G4" " G4 Apollo8" pllapollo7pm
            true to v'ger?
            has-dynamic-step? to supports-dfs?
            l2cr@ 0< dup to fat-v'ger? ?fat
        endof
        800c of drop 0c " G4" " G4 Nitro 1.2" pllmax
            true to max?
            l2cr@ 0< dup to fat-max? ?fat
        endof
        39 of " G5"
            (l
                1 sys if
                    cr ." Found 970 GPUL Neo CPU"
                then
            l)
            true to neo?
        endof
        3c of
            " G5"
            (l
                1 sys if
                    cr ." Found 970FX GPUL Neo CPU"
                then
            l)
            true to neo?
        endof
        44 of
            " G5"
            (l
                1 sys if
                    cr ." Found Antares CPU"
                then
            l)
            true to neo?
        endof
        >r
        " 60?"
        r>
    endcase
    ;
 

joevt

Well-known member
Open Firmware 2.0.1 has a case for PVR 6,7,9 and that indexed array for other versions.
Code:
: make-cpu-properties            
    { local_0 local_1 ; ... }    
    local_0                        
    10                            
    >>                            
    -> local_2                    
    local_2                        
    case                        
        mac_rom_constant_504_6    
        of                        
            true                
            " /PowerPC,603e"    
        endof                    
        mac_rom_constant_503_7    
        of                        
            true                
            " /cpus/PowerPC,603ev"
        endof                    
        mac_rom_constant_502_9    
        of                        
            true                
            " /PowerPC,604e"    
        endof                    
        drop                    
        false                    
        " /PowerPC,60x"            
        dup                        
    endcase                        
    encode-string                
    mac_rom_constant_505_5        
    -                            
    1-                            
    swap                        
    dup                            
    _cpu                        
    !                            
    1+                            
    mac_rom_constant_505_5        
    +                            
    swap                        
    rot                            
    0=                            
    if                            
        2dup                    
        +                        
        2-                        
        local_2                    
        mac_rom_constant_506_F    
        and                        
        " ?1?34?3384??????"        
        drop                    
        +                        
        c@                        
        swap                    
        c!                        
    then                        
    colon_string_5c8_name        
    property

Open Firmware 2.4 just has a case statement:
Code:
: make-cpu-properties
    { local_0 local_1 ; ... }
    local_0 10 >> -> local_2
    " /cpus/PowerPC," encode-bytes
    local_2 1 0a between local_2 2 <> and
    local_2 5 <>
    and if
        local_2 case
            1 of " 601" endof
            3 of " 603" endof
            4 of " 604" endof
            6 of " 603e" endof
            7 of " 603ev" endof
            8 of l2cr@ 0= if " 740" else " 750" then endof
            >r " 604e" r>
        endcase
    else
        " 60?"
    then
    encode-string encode+
    6 - swap dup _cpu !
    6 + swap "name" property
 

stynx

Well-known member
Here are the chips i currently own. (10x , 2xPPC604E3DBCG350E, 4x PPC604E2BE200E)
The 10x XPC604RRX300LD batch was too expensive ($25ppp). It was one of the first suppliers who sent me actual pictures of the chips. And apart from the price, they were very professional.
IMG_1517.png

I still have 35x XPC604RRX300 and 2x PPC604E3DBC400E on the way. The 35x XPC604RRX300LD were just bought because they were relatively cheap at $3.50ppp (and will reduce the overall ppp to about $8 for all 45pc i then own).

The PPC604E3DBC400E seem to be extremely hard to come by. I have only one supplier who also is rising the price of the chips even after they are already payed.

If the transaction for the 35 chips is successful, i will post the supplier here and anyone who is interested can buy some of the XPC604RRX300LD at $3.50ppp. They have about 240 chips left and are happy to sell them off. They were upfront that the chips will have to be re-balled since the solder-balls are oxidized and the chips may not work reliably. For them it is basically defective stock taking up space. They were a bit slow in the initial communication but seem to be professional.

-Jonas
 

stynx

Well-known member
I will initially try to modify one of my old 150MHz CPU cards with a PPC604E2BE200E. I am interested to see if the Helmwind CPU is capable of going past 250MHz. If i can get that to work, i will try a XPC604RRX300LD on another of the BGA255 604 cards (also doing the 2V VCC mod).

Lets see how it goes ;-)

It might take a bit of time, though since i have a 4-day retro-meeting (100-130 people) in early September and have to prepare.

-Jonas
 

stynx

Well-known member
If the transaction for the 35 chips is successful, i will post the supplier here and anyone who is interested can buy some of the XPC604RRX300LD at $3.50ppp. They have about 240 chips left and are happy to sell them off. They were upfront that the chips will have to be re-balled since the solder-balls are oxidized and the chips may not work reliably. For them it is basically defective stock taking up space. They were a bit slow in the initial communication but seem to be professional.

Ok, another bust. The price jumped from $3.53 to $33.82 *lol* and I canceled the order. They suddenly were out of stock and had to be reordered.... I had asked them 3 times if the $3.53 was the final price, and i asked her to check again .... lol

I got another three XPC604RRX300LD that i had ordered separately from the US for testing a bit ago (also $25ppp).
So i have 13 XPC604RRX300LD at $25ppp + shipping + tax = ca. $36ppp

Another four PPC604E3DBCG350E are on the way on donor CPU cards (IBM dual CPU 332MHz slot-module with 2x256k inline cache).
These are 58€ for one card = $28ppp for the cpu itself (desoldering and cleaning is easy)

-Jonas
 

stynx

Well-known member
@herd what kind of solder balls should i use for reballing?
I want to use SN63PB37 alloy but i need to know the size...

-Jonas
 

LightBulbFun

Well-known member
@herd what kind of solder balls should i use for reballing?
I want to use SN63PB37 alloy but i need to know the size...

-Jonas
for what its worth I use 0.76mm leaded balls for reballing all of my PPC CPU's and that seems to have worked fine so far

@herd goes into a bit more detail about the weird 0.89 balls found on factory fresh CPU's here :)

 

stynx

Well-known member
for what its worth I use 0.76mm leaded balls for reballing all of my PPC CPU's and that seems to have worked fine so far

@herd goes into a bit more detail about the weird 0.89 balls found on factory fresh CPU's here :)

That helps a lot, thank you.
 

herd

Well-known member
I would use whatever size fits your stencil(s); I think 0.76mm diameter should generally work with large pitch BGA. Probably more important, particularly with chineez suppliers, is to test on scrap parts when you receive them and expect to request a refund/return. It seems they will print anything on a label. I have some silver solder that melts at 180º as well as some ROHS solder balls. I also have some eutectic solder balls that might rust; I should check them with a magnet...
 

stynx

Well-known member
I would use whatever size fits your stencil(s); I think 0.76mm diameter should generally work with large pitch BGA. Probably more important, particularly with chineez suppliers, is to test on scrap parts when you receive them and expect to request a refund/return. It seems they will print anything on a label. I have some silver solder that melts at 180º as well as some ROHS solder balls. I also have some eutectic solder balls that might rust; I should check them with a magnet...
Thank you for the info. I have ordered the solder balls from Spain since the Chinese companies that sell SN63PB37 solder balls did not seem legit. Eutectic solder balls are seemingly not so common...

I have also desoldered 3 PPC-chips from 2 High-perf. cards (250MHz) and a 180MHz 604e card. Using a heat-transfer pad on the backside to have good contact with my hot-plate helped a lot. It also prevented the capacitors on the back from falling off, although i was a bit impatient with the first High-perf board and peeled some caps off with the pad when it was still too hot. I waited the second time a few minutes and everything went perfect. The cleaning up of the solder-balls was a bit messy and i had to "wipe" the contacts a few times with fresh (S62PB36AG2) solder to be able to suck it from the pads with solder-wick.

I set my hot-air to 300 deg. C. and the heat-bed to 200 deg. C.
After 2-3 min. the CPU became movable and i could lift it off with a vacuum-pen.

IMG_1518.pngIMG_1519.pngIMG_1521.png
 

stynx

Well-known member
The two ppc604e3db-c400e that i got today are fake, most likely some other speed rating like 300MHz or 250MHz
They are reclaimed, reballed, laser-etched and overpainted. The chips were roughly handled and the silicon is chipped.
I would highly discourage anyone from trying to get these.

The 300MHz rated Motorola chips are most likely the only ones available in decent numbers.
 

Daniël

Well-known member
The two ppc604e3db-c400e that i got today are fake, most likely some other speed rating like 300MHz or 250MHz
They are reclaimed, reballed, laser-etched and overpainted. The chips were roughly handled and the silicon is chipped.
I would highly discourage anyone from trying to get these.

The 300MHz rated Motorola chips are most likely the only ones available in decent numbers.

What do the dies look like on the fakes?
Are they still the purple-ish (Motorola) or red-ish (IBM), matte finish, or is it a clear, mirror-like finish?

In the iMac G3 -> G4 thread in Hacks & Development, I posted about fake MPC106/XPC106 Grackle chips from China.
They've taken 66MHz parts (100% sure they are, as even at 83MHz they're unstable as hell), removed the partnumber marking off the ceramic carrier, and polished the die down to a mirror shine to laser-etch a fake 100MHz partnumber onto.

Just curious if they've done the same with these.
In any case, welcome to the club of fake PowerPC(-related) chip owners :-(
 

stynx

Well-known member
I will post updates about the ongoing process of replacing the 604e cpus here:
 

stynx

Well-known member
What do the dies look like on the fakes?
Are they still the purple-ish (Motorola) or red-ish (IBM), matte finish, or is it a clear, mirror-like finish?
In any case, welcome to the club of fake PowerPC(-related) chip owners :-(
Here are the PPC604e3DB-C400E fakes.
IMG_1525.pngIMG_1526.png
sold by https://impochips.com/ - https://tech-electr.com/
Im pretty sure that they will make any kind of speed rating that you desire :p
 
Last edited:

stynx

Well-known member
I recently bought another 375 MHz rated 604e3 with ZIF carrier (from an RS6000 p43 system).
The processor version is 10,1 like the Apple Mach5 CPUs and is visually identical 604e3/375, i bought earlier, which is a 9,31 version.

The 10,1 version will identify as a 604ev while the 9,31 version will identify as a 604e. Both CPUs are nearly identical in terms of speed. The only difference is that i get about 10% higher scores in some floating point calculations with the 9,31 version. (no cache/Kansas board)

I have also found that the 10,1 version does not play nicely with older systems (TNT for example) while the 9,31 works without a problem. Maybe the 10,1 604ev has some changes to the default values in the registers or something. I could use a Mach5-card that i modified with a 9,31 604e3 with a TNT board if i had the Kansas Rom installed. The 10,1 604ev Mach5 card would not work in the older machines, even with the Kansas Rom.

-Jonas
 

Franklinstein

Well-known member
Just some notes based on some stuff in this thread:
The 740 was intended to be a mostly pin compatible replacement for the 603 and 603. I say "mostly" because some signals go from read-only to bi-directional (or vice-versa) and some voltages can differ, so unfortunately it's not a perfect drop-in. Plenty of people here found that out the hard way. Usually it wasn't a magic smoke situation, just disappointment and wasted time.

The 7x0 chips were basically enhanced 603s (with an L2 controller on the 750). The 74x0 was basically an enhanced 604 with a vector processor and L2 cache controller. That's why the 7x0 chips don't do SMP: they're based on the 603 which also didn't do SMP (at least, not without extra steps as in the BeBox).

According to the various PowerPC design manuals, the 60x bus is designed to operate with either up to 4 60x processors or a single 60x processor and a board-level L2 cache; as designed you didn't get both. Somehow Daystar managed to do some voodoo and get a multi-processor with L2 setup working (later licensed to other vendors including Apple), but it was out of spec and needed software workarounds to get things to play nice (and it usually didn't give as substantial of a speed improvement as you'd expect). Why does SMP work with the 74xx chips? Because there's no board-level L2 cache, so up to 4 CPUs can work together as intended (they can manage their own and snoop one another's caches as needed without outside control). So why no quad G4s? Hard to say. Could be that it was too big, too power-hungry, or they just didn't see the point. Maybe Apple's bridge chips couldn't support more than 2. Maybe there were yield problems that would've kept them from making more than a couple examples (Moto did have huge problems with G4 yields to the point IBM was asked to help fab them for a while).
 

stynx

Well-known member
Regarding the 60x bus and SMP vs. cache: The MPC106 datasheet describes the functionality of the MPC106 cache-controller as you said. This is most likely not really a 60x bus feature but a mpc105/106 feature. The control lines that are needed to interface with the L2 cache are also used for SMP functions. You can connect each individual CPU through a memory/cache controller or connect them all together to one memory/cache controller. IBM used individual cache controllers in their SMP CPU cards, basically creating something like the Apple Mach5 card with multiple CPUs. Apple had SMP prototypes in the works right from the start with the 604 but the lack of a SMP capable operating system and the massive cost of multiple cache controllers per system made the efforts futile. The PPC74xx did solve several problems since it had an internal L2 controller (and later L3) and had direct support for SMP like the PPC604.
 
Top