PS/2 Memory Errata

Random memory trivia for PS/2s not specific to a singular system.

Memory in A1-B1 or J1-J3 fail in 90 / 95 systems
ECC and Parity Support
Loading SIMM Pairs
Support for Greater Than 16 MB
Support for Greater Than 64 MB
IBM Presence Detect SIMMs
8x36 E Memory?

Memory in A1-B1 or J1-J3 fail in 90 / 95 systems

One may encounter failing memory in A1/B1 or J1/J3 (possibly in other systems). PS/2s test the first SIMM or pair of SIMMs very rigorously, because if the low memory (first 1 MB) fails, the system stops. If that first MB is undependable, you may get data corruption as a result of altered drivers or messed up O/S code.

If you are loading up your 90 or 95, and get a message that one or both SIMMs in the first pair are bad, SIMMply swap in another (matching) SIMM or pair from a later pair (eg. A2/B2) and run advanced diags on them. You must run advanced diags to clear the error from the previous SIMM configuration.

Note: The memory controller in the 90 and 95 can handle pairs of SIMMs with mixed speeds but same sizes, but accesses to that pair will be at the speed of the slowest SIMM.

ECC and Parity Support

All PS/2 systems support parity Fast Page Mode (FPM) memory. Older systems may use 30-pin SIMMs, later systems use 72-pin SIMMs.

Some of the later systems contain memory controllers that support parity -OR- ECC. But either memory type is exclusive of the other.

In the case of the Model 90 or 95, the first complex to support ECC is the Model M 486DX-50 (only double deck complex). It supports either 64 MB of parity -OR- 64 MB of ECC. Do not mix parity and ECC in any combination, either in pairs (A1/B1 parity and A2/B2 ECC) or by banks (A1-A4 parity and B1-B4 ECC). Mixing pairs will result at best with the first matched pair being enabled, the next (opposing) pair deallocated, or in the case of banks, nothing because the system memory controller can't get the first pair to pass the BIST.

The later Type 4 complexes all support either 64 MB of parity -OR- 256 MB of ECC.

Loading SIMM Pairs

In systems with an even number of SIMM sockets (and no soldered-on planar memory like a 9556), load SIMMs in matched pairs (size and speed). Load the largest pair first, then smaller and slower pairs in the following SIMM sockets.

For systems with soldered planar memory with an odd number of SIMM sockets, you are facing either no support for interleaved memory, or only a single pair of SIMMs in interleaved memory support. Each system accesses memory according to it's design.

The first system to support interleaved memory is the Model 70-486. (IIRC)

Support for Greater Than 16 MB

All PS/2 systems with a 286 or 386 have a maximum of 16 MB addressable memory, due to the 24 bit memory address. This also includes 386 variants like the 486SLC.

For 24 bit address systems (either with an odd number of SIMMs (three) or soldered-on memory and SIMM sockets), you get 16 MB of total memory if you exceed 16 MB of SIMM.

As an example, the 9533 comes with 4 MB soldered on-planar, and two SIMM sockets. Now if you load two 8 MB SIMMs, you will get 16 MB of total RAM. But wait, 4+8+8=20, right? Nope, everything over 16 MB cannot be addressed.

Support for Greater Than 64 MB

In the beginning, memory addressing was limited to 24 bits. With the advent of the 486, 32 bit memory addressing was possible. Unfortunately, not everybody updated their programs or driver support to incorporate support for 32 bit memory addressing. Part of this problem is the code to determine memory size.

IBM did update their code to support 32 bit addressing, and provided drivers that kept memory addressing below 16 MB. But again, proper support for memory size varied.

In the case of Windows 9x, the limit of 64 MB was finally overcome with HIMEMUPD.EXE this is simple to apply and allows you to see and use as much as your system can recognize.

IBM Presence Detect SIMMs

Most IBM PS/2s that require 72-pin SIMMs with Presence Detect, which is four lines on a SIMM that are either open or shorted (pins 71-68). IBM SIMMs with PD are usually 36 bits wide (32 bits data plus 4 bits parity) or 39 bits wide (32 bits data plus 7 bits ECC). In the case of ECC, there is a further line (36?) that is grounded.

My children, do not be led astray by RS/6000 SIMMs. The RS/6000 32 MB SIMMs are 40 bits wide. They do NOT work in a 95A, even when you alter the PD bits to agree with the PS/2 PD scheme.

8x36 E Memory

As I have scoured Flea Buy for 32 MB 8x39 ECC, my attention was captured by some 8x36 E SIMMs... Huh, what? Another oddity, these were for the PC Server 720, which uses some odd configurations... Again, PS/2 ECC memory controllers expect 39 bit wide ECC, NOT 36 bit wide ECC.
Ed. Tom: These were probably the ECC-On-SIMM (EOS) modules.

Content created and/or collected by:
Louis Ohland, Peter Wendt, David Beem, William Walsh, Tatsuo Sunagawa, Jim Shorney, Tim Clarke, Kevin Bowling, Tomáš Slavotínek, and many others.

Ardent Tool of Capitalism - MAD Edition! is maintained by Tomáš Slavotínek.
Last update: 25 Nov 2022 - Changelog | Legal Info & Contact