VOGONS


Converted registered SDRAM

Topic actions

First post, by snufkin

User metadata
Rank Oldbie
Rank
Oldbie

[edit: probably useful to note up here that I eventually figured out that all I'm doing is using the REGE pin 147 for its intended purpose, to disable the register function, but keep the signals buffered]

(Short version: I accidentally got some registered RAM and converted it to unregistered)
I've just registered as I thought this might be of interest, and in case anyone has any suggestions about testing whether ECC is functioning on an Abit KA7 motherboard. Apologies if I break any etiquette.

PC133r.jpg
Filename
PC133r.jpg
File size
84.99 KiB
Views
2739 views
File license
CC-BY-4.0

Just been spending some time getting an Abit KA7 working again and was having trouble with the RAM. As part of an overly long story (including discovering that all the 3.3V on this board is regulated locally from PSU 12V, it doesn't use the PSU3.3V at all) I thought I'd try some ECC RAM (although I've since seen that the KX133 may not actually have implemented ECC correction anyway).

Problem was that I wasn't careful enough, and ended up getting some Micron PC133r probably from a Compaq server. And the KA7 doesn't support registered RAM (I think the extra clock tick delay mean data reads and writes don't line up). Having a quick look around it seemed that converting from registered to unregistered was a non-starter, so I'd have to look for some unregistered ECC ram.

That wasn't very common though, unlike all the ex-server stuff. So I had a closer look at the register chips on the sticks I had. In particular the 74ALVCF162835. Looked up a datasheet for it and in the second paragraph saw the following sentence:
"The device operates in Transparent Mode when LE is held HIGH."

PC133r_Register.jpg
Filename
PC133r_Register.jpg
File size
67.09 KiB
Views
2739 views
File license
CC-BY-4.0

Well that sounded interesting. If the problem with using registered RAM was the delay caused by the register, then a non-clocked mode might help. I assumed (wrongly) that they'd have just tied the pin (28) low on each of the 3 registers, so I'd have to lift each pin and tie it high. Turns out all the pins were connected together, and I eventually found they were all connected to a pin on a small 5 pin device. That turned out to be a single bit inverter, the input of which was pulled high via a 10k resistor. Which means the output would be low, and the registers in clocked mode. But why go to that trouble? Turns out the input was also connected to pin 1467 on the DIMM, which I think is supposed to be NC. So it looks as though Micron wanted the motherboard to be able to switch the RAM between registered or unregistered. Which sounded hopeful.

Just above the inverter were a couple of pads for an 0805 sized (I think) component and it turns out they go between the input and output of the inverter. So if I removed the inverter and shorted across the pads, then LE would be connected to pin 1467 (which should be NC) and a weak pull up to 3.3V. So I went ahead and did that.

PC133r_LE_Control.jpg
Filename
PC133r_LE_Control.jpg
File size
144.33 KiB
Views
2739 views
File license
CC-BY-4.0

I guessed that I'd need to edit the SPD data stored on the DIMM, otherwise the motherboard would see that it said it was registered and not try to use the RAM. But I thought I'd just quickly try it first. And it booted. I assume BIOS writers do as little as possible to make things work, and checking to see whether or not you might be able to use the RAM, when you can just try it, is an extra step not needed.

So I now have buffered but unregistered ECC RAM. Of the 4 sticks I got, the 3 128MB ones all work at PC133/CL2 (tested one at a time, haven't tried installing all at the same time yet), but the 512MB one fails memtest86+ when run at PC133/CL3. It is stable at PC100/CL2 though.

Just tried installing edac_util in linux, but that just says "no memory controller data found". So probably no go with testing the ECC bit, unless anyone has any suggestions? I'll go with the '24 hours of memtest' instead.

So, for some registered RAM and some motherboards, converting from registered to unregistered just means removing one component and adding a short.

Last edited by snufkin on 2022-01-01, 20:31. Edited 2 times in total.

Reply 1 of 88, by gbeirn

User metadata
Rank Member
Rank
Member

Great work! Thanks for sharing! I was just thinking something similar when we were scraping servers at work the other day: could I take the ECC PC100 SDRAM from the RAID cards and convert it to regular non-ECC

Reply 2 of 88, by Horun

User metadata
Rank l33t++
Rank
l33t++

Yes ! very good work. Think I have some ECC/registered dimms that are of no use unless they were un-regged.

Hate posting a reply and then have to edit it because it made no sense 😁 First computer was an IBM 3270 workstation with CGA monitor. Stuff: https://archive.org/details/@horun

Reply 4 of 88, by snufkin

User metadata
Rank Oldbie
Rank
Oldbie

Gbeirn, I don't think the ECC bit really matters. I'd expect a motherboard that doesn't support ECC would just not read the extra 8 bits. The bigger problem is this business of registered or non-registered. I believe most server memory is registered (makes timings more reliable and reduces load on the memory controller when there are lots of sticks), and that mucks up the sequencing of when data appears on the bus after a read command. So if the RAID RAM is already non-registered then I think you should be able to use it as-is. If it is registered then you may be able to modify it (with a lot of caveats at the moment given I've only tried this on one make of SDRAM and one motherboard.

To be honest, I'm surprised it worked. Running at 133MHz means about 7.5ns between clocks. Looking at the datasheet for the register then it gives a propagation delay of 1.1 to 3.6ns. The setup+hold time for the actual SDRAM chips is 2.5ns. So worst case (I think) that only leaves 1.6ns for the address and control lines to settle. I suppose the clock to the DRAMs could be delayed a little (the clock is buffered through a PLL chip), but that would eat in to the timing for the unbuffered data lines. There actually is a structure that looks like it's a rough phase control for the PLL (4 pads in a T arrangement, with a 0 ohm link from the middle to one of the ends of the T). I guess that changes the loop length for the PLL feedback. If I have time I might try playing with that and see if I can get the 512MB stick to work at 133MHz.

It'd be good if someone else was willing to have a go at doing this. Partly to confirm if it does work, but also to find out if I just got lucky with this particular combination of ram and motherboard. A more picky motherboard might have checked the SPD and given up.

Reply 5 of 88, by snufkin

User metadata
Rank Oldbie
Rank
Oldbie

Probably bad form to follow up my own post, but I had a play with what I think is a phase control for the buffered clock and it has improved things.

The 512MB PC133r stick that I have kept failing Memtest86+ when running at 133MHz/CL3. It was only on the Block Move test, but a fail is a fail. The other 128MB sticks all passed, even when running at CL2. The 512MB stick wasn't even recognized at 133/CL2. But it did run for 19 hours with no problems at 100/CL2. Still, I wanted to see if I could get it to run at at least 133/CL3 since the DRAMs were rated for it.

PC133r_PhaseControl.jpg
Filename
PC133r_PhaseControl.jpg
File size
143.88 KiB
Views
2627 views
File license
CC-BY-4.0

I mentioned earlier about a structure that looked like it might be a phase control for the clock on the DIMM. It's the arrangement of 4 pads in a T shape, with a 0 ohm link (in the photo going from the middle to the pad nearest the connector). There's a matching structure on the other side, with the link in the same place. So what I think happens is the clock comes in to the centre pad, the link connects it to one of the other 3 pads, which each connect to 3 different length loops. The other end of the loop emerges on the matching pad on the other side, goes through another link to the middle pad there, then back to the PLL.

On the 512MB stick the link was furthest from the connector, so I tried moving it to nearest the connector. I'd left the memory timings in the BIOS set to 133/CL2, but this time the motherboard recognized the RAM. I got as far as going in to the BIOS to try and change the timing to CL3 before it locked up. I rebooted and this time is got stuck trying to find IDE devices.

Next I tried moving the link to the middle position. This time it hung just after the memory check, and then corrupted the display.

So it looked like the most stable position was nearest the connector, but still not stable enough for CL2. I used one of the 128MB sticks (which work at CL2) to get in to the BIOS to change the timing to CL3. Put the 512MB stick in, ran Memtest and it passed.

Then, just to double check, I put the link back where it was originally, ran Memtest block move for a couple of passes and it failed on both passes. Put the link back to nearest the connector, and it went back to passing. It does get noticeably hotter at 133 though. If I had all 4 slots occupied I'd probably want a fan pointing at them. And a better 3.3V supply. And heatspreaders on the DIMMs.

I think that's about as far as I can go with this. I had a quick look at some photos of other registered RAM, and they all seemed to have very similar layouts, so I think there's a good chance they could be made to work on unregistered motherboards. The bigger problem is likely to be whether different motherboards are picky about their RAM or not. I suspect that the best phase control position will depend on the motherboard memory controller.

Reply 6 of 88, by darry

User metadata
Rank l33t++
Rank
l33t++

This is good info . Thank you .

IMHO, there is no harm in following up on your own post if you have something worthwhile to add, as long as you don't overdo it . Just adding an EDIT is likely to go unnoticed if there is a lot of activity in the channel.

Reply 7 of 88, by Sphere478

User metadata
Rank l33t++
Rank
l33t++

I have the 256mb version of this stick.

I’m wondering if I can thread a wire between one of the vias at the gold fingers as a way to perform this mod without soldering what do you think?

Attachments

  • image.jpg
    Filename
    image.jpg
    File size
    1.82 MiB
    Views
    2474 views
    File license
    Public domain

Sphere's PCB projects.
-
Sphere’s socket 5/7 cpu collection.
-
SUCCESSFUL K6-2+ to K6-3+ Full Cache Enable Mod
-
Tyan S1564S to S1564D single to dual processor conversion (also s1563 and s1562)

Reply 8 of 88, by snufkin

User metadata
Rank Oldbie
Rank
Oldbie

I'm not sure about doing it without soldering as the connection will need to be reliable otherwise the register might occasionally switch on and crash the computer. But maybe it'd work well enough to test. It would be possible to short the input of the inverter to ground, which would then pull the enable input of the registers high. Possible downside is that this will also short pin 1467 to ground. The shouldn't be a problem as pin 1467 shouldn't be connected to anything, but I didn't want to risk it, which is why I removed the inverter and used the short from input to output, which means the enable pin is pulled high through a 10k resistor, which means no risk of a direct short.

Connecting a 1k resistor from the inverter input to ground should be safe, and would leave the input at 0.3V (resistor divider with the 10k pull up) which would be detected as a low, so set the output high. There are a couple of convenient vias between the input and ground (if I've counted pins correctly):

SDRAM_UnregisterShort.jpg
Filename
SDRAM_UnregisterShort.jpg
File size
25.71 KiB
Views
2440 views
File license
Fair use/fair dealing exception

That connects pin 64/148 (Vss) to the via going from pin 1467 to the inverter input. The distance is about 2.5mm so it's possible that an 0805 or 1008 SMD resistor might fit quite neatly between them, although I haven't checked if it'd clash with the socket.

Last edited by snufkin on 2021-11-11, 10:21. Edited 1 time in total.

Reply 9 of 88, by Sphere478

User metadata
Rank l33t++
Rank
l33t++
snufkin wrote on 2021-11-05, 10:44:
I'm not sure about doing it without soldering as the connection will need to be reliable otherwise the register might occasional […]
Show full quote

I'm not sure about doing it without soldering as the connection will need to be reliable otherwise the register might occasionally switch on and crash the computer. But maybe it'd work well enough to test. It would be possible to short the input of the inverter to ground, which would then pull the enable input of the registers high. Possible downside is that this will also short pin 146 to ground. The shouldn't be a problem as pin 146 shouldn't be connected to anything, but I didn't want to risk it, which is why I removed the inverter and used the short from input to output, which means the enable pin is pulled high through a 10k resistor, which means no risk of a direct short.

Connecting a 1k resistor from the inverter input to ground should be safe, and would leave the input at 0.3V (resistor divider with the 10k pull up) which would be detected as a low, so set the output high. There are a couple of convenient vias between the input and ground (if I've counted pins correctly):
SDRAM_UnregisterShort.jpg

That connects pin 64/148 (Vss) to the via going from pin 146 to the inverter input. The distance is about 2.5mm so it's possible that an 0805 or 1008 SMD resistor might fit quite neatly between them, although I haven't checked if it'd clash with the socket.

So I should put a 10k resistor there?

Sphere's PCB projects.
-
Sphere’s socket 5/7 cpu collection.
-
SUCCESSFUL K6-2+ to K6-3+ Full Cache Enable Mod
-
Tyan S1564S to S1564D single to dual processor conversion (also s1563 and s1562)

Reply 10 of 88, by snufkin

User metadata
Rank Oldbie
Rank
Oldbie

Either just put a wire to short it out, or put a 1k resistor. I'd put a 1k resistor to be safe.

My reasoning is that there's a 10k resistor that weakly pulls the input of the inverter high to 3.3V, if there's nothing else trying to drive the input. You need to pull the input low and if you connect it directly to ground then it will definitely be low. But if, for some weird reason, the motherboard has that pin (which should be not connected) connected to 3.3V, then a direct connection to ground will make a short circuit, large currents will flow and bad things happen.

If, instead of a direct connection, you use a resistor, then the voltage at the input to the inverter will be somewhere between 3.3V and ground. Exactly what the voltage is will depend on the value of the resistor. If you use a 10k resistor, the same as the existing pull up, then the voltage at the input will be half way between, 1.65V. From a logic point of view that's undefined, neither high or low, and can cause bad things to happen. If you use a 1k resistor then the input will be roughly 10% up from ground (actually 1/11), 0.3V, which is low enough to be counted as a low input.

Now, with a resistor there, if the motherboard tries to drive pin 1467 high, then there's no short to ground and not much current will flow (~3mA), so nothing blows up.

That said, the motherboard shouldn't be trying to drive pin 1467, so it shouldn't actually be a problem.

Last edited by snufkin on 2021-11-11, 10:22. Edited 1 time in total.

Reply 11 of 88, by Sphere478

User metadata
Rank l33t++
Rank
l33t++

Okay. Thanks.

😀

Sphere's PCB projects.
-
Sphere’s socket 5/7 cpu collection.
-
SUCCESSFUL K6-2+ to K6-3+ Full Cache Enable Mod
-
Tyan S1564S to S1564D single to dual processor conversion (also s1563 and s1562)

Reply 12 of 88, by BitWrangler

User metadata
Rank l33t++
Rank
l33t++

This is cool beans and awesome sauce (So I dunno, champion chili?) will have to make a mental note to try it in future, as I believe I have some registered modules kicking around. Might be quite some time off that I get desperate enough for RAM to do it though.

Unicorn herding operations are proceeding, but all the totes of hens teeth and barrels of rocking horse poop give them plenty of hiding spots.

Reply 13 of 88, by Sphere478

User metadata
Rank l33t++
Rank
l33t++

Wondering if I can pick your brain.

I’m trying to do something insane, but oh well I’m having fun.

I have a ga-5aa that others have been able to get 1.5gb working on (3x 512mb sdram 133)

But I want to try and get 3gb working.

I ordered some regular old 16 chip sticks but it counts to 512 on the first stick then gives up, even with 3gb installed

So I tried it with 2x 265mb then a 1gb and I got 894mb

Supposedly the k6-3+ and ali aladdin support up to 4gb so I’m thinking maybe a 32 chip stick is what I need?

But this is the only one I can find.. do you think your mod will work on it? I still have those two 256mb sticks that are ecc registered but haven’t brought myself to mod them due to access to other 256mb sticks that don’t need modded.

I don’t have pics of the back of these do you think they can be modded?

Attachments

Sphere's PCB projects.
-
Sphere’s socket 5/7 cpu collection.
-
SUCCESSFUL K6-2+ to K6-3+ Full Cache Enable Mod
-
Tyan S1564S to S1564D single to dual processor conversion (also s1563 and s1562)

Reply 14 of 88, by snufkin

User metadata
Rank Oldbie
Rank
Oldbie
Sphere478 wrote on 2021-11-06, 22:33:

Supposedly the k6-3+ and ali aladdin support up to 4gb so I’m thinking maybe a 32 chip stick is what I need?

I don't know enough about either to know what's possible or not.

But this is the only one I can find.. do you think your mod will work on it? I still have those two 256mb sticks that are ecc registered but haven’t brought myself to mod them due to access to other 256mb sticks that don’t need modded.

I don’t have pics of the back of these do you think they can be modded?

Possibly, but it'll depend on the register chip that's used. I can't find a datasheet for the P174AVC that I think is the register, and that'd be the thing that would say for sure. It might have an enable pin similar to the register chips on other sticks, which is what I used to convert from registered to unregistered. It might be worth checking to see if there are any traces going from pin 1467 to a pin on that chip, in case the pin 1467 thing was a sort of industry standard by SDRAM stick manufacturers.

Last edited by snufkin on 2021-11-11, 10:23. Edited 1 time in total.

Reply 15 of 88, by weedeewee

User metadata
Rank l33t
Rank
l33t
snufkin wrote on 2021-11-07, 18:24:

Possibly, but it'll depend on the register chip that's used. I can't find a datasheet for the P174AVC that I think is the register, and that'd be the thing that would say for sure. It might have an enable pin similar to the register chips on other sticks, which is what I used to convert from registered to unregistered. It might be worth checking to see if there are any traces going from pin 146 to a pin on that chip, in case the pin 146 thing was a sort of industry standard by SDRAM stick manufacturers.

It's a Pericom PI74AVC

Attachments

  • Filename
    Pericom PI74AVC.pdf
    File size
    527.05 KiB
    Downloads
    59 downloads
    File comment
    Pericom PI74AVC datasheet
    File license
    Fair use/fair dealing exception

Right to repair is fundamental. You own it, you're allowed to fix it.
How To Ask Questions The Smart Way
Do not ask Why !
https://www.vogonswiki.com/index.php/Serial_port

Reply 16 of 88, by snufkin

User metadata
Rank Oldbie
Rank
Oldbie
weedeewee wrote on 2021-11-07, 19:16:
snufkin wrote on 2021-11-07, 18:24:

Possibly, but it'll depend on the register chip that's used. I can't find a datasheet for the P174AVC that I think is the register, and that'd be the thing that would say for sure. It might have an enable pin similar to the register chips on other sticks, which is what I used to convert from registered to unregistered. It might be worth checking to see if there are any traces going from pin 146 to a pin on that chip, in case the pin 146 thing was a sort of industry standard by SDRAM stick manufacturers.

It's a Pericom PI74AVC

In a way that's not at all a misleading part number, that datasheet appears to be the P174AVC+16244, a 48 pin 2.5V buffer, rather than the P174AVC16834A. On the upside, that led me to search instead for 16834A register, which led me to the 74ALVC16384A register: https://pdf1.alldatasheet.com/datasheet-pdf/v … C16834ADGG.html , which looks similar to the 74ALVCF162835 that was on the SDRAM stick I modded originally.

If the 74ALVC16384 has the same pinout as the P174AVC16834A (hey, they've both got 56 pins, so they're bound to be the same), then there's a latch enable on pin 28. If that's pulled low then the latch is transparent, opposite from the previous register chips, so maybe no inverter is needed. Things to check: is pin 28 pulled direct to Vcc? If it is then the pin will need to be lifted and have a jumper wire attached to a Gnd, or a trace cut on the memory stick and connected to ground. If it's pulled high through a resistor then it might be possible to find a simple link mod. A possible snag is that the maximum propagation delay for that register is higher (5ns vs 3.6ns) so it might limit the maximum frequency.

Incidentally, am I being dense, or is calling that pin !LE misleading? That should surely be an active low signal, so the latch should be enabled when the signal is low, when instead the latch part is disabled when it's low, turning it into just a buffer. I think I'm being dense.

Sphere478: short version, it looks like a mod might be possible, but it might need a bit of time to work out where the connections are, and it might not work at high speeds.

Reply 17 of 88, by Sphere478

User metadata
Rank l33t++
Rank
l33t++

🤔 sounding like, buy it, do some checks, and a maybe.

Sphere's PCB projects.
-
Sphere’s socket 5/7 cpu collection.
-
SUCCESSFUL K6-2+ to K6-3+ Full Cache Enable Mod
-
Tyan S1564S to S1564D single to dual processor conversion (also s1563 and s1562)

Reply 18 of 88, by weedeewee

User metadata
Rank l33t
Rank
l33t
snufkin wrote on 2021-11-07, 22:48:

In a way that's not at all a misleading part number, that datasheet appears to be the P174AVC+16244, a 48 pin 2.5V buffer, rather than the P174AVC16834A. On the upside, that led me to search instead for 16834A register, which led me to the 74ALVC16384A register: https://pdf1.alldatasheet.com/datasheet-pdf/v … C16834ADGG.html , which looks similar to the 74ALVCF162835 that was on the SDRAM stick I modded originally.

this datasheet might be better... https://media.digikey.com/pdf/Data%20Sheets/P … I74AVC16834.pdf

Right to repair is fundamental. You own it, you're allowed to fix it.
How To Ask Questions The Smart Way
Do not ask Why !
https://www.vogonswiki.com/index.php/Serial_port

Reply 19 of 88, by snufkin

User metadata
Rank Oldbie
Rank
Oldbie
Sphere478 wrote on 2021-11-07, 23:34:

🤔 sounding like, buy it, do some checks, and a maybe.

Well, with the datasheet the Weedeewee found (thanks!), it looks like the register chips do have an !LE pin (pin 28) and will be transparent (so just a buffer) when the pin is held low. The propagation delay is also faster than I thought, which is good. So it's quite likely that in can be modded. The question is whether it can be done by a simple wire link, or if it'll mean having to lift pin 28 for each regisiter chip and connect it to ground. That wouldn't actually be that hard as pin 29 is ground and directly opposite. With a bit of luck you'd find that pin 28 for all the register chips are connected together and are pulled high through a 10k resistor. If that's the case then you'd just need to put a 1k resistor between pins 28&29 on one of the registers.

I also can't see anything similar to what I think is the clock phase control adjuster on the stick I modded, so it may not be possible to make it work at full speed (PC133/CL3). The sticks I've tried modding were all stable at lower speeds, running PC133/CL3 at PC100/CL2, without tweaking the clock phase.