[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: more than 12G of RAM



On 10/02/14 10:00 PM, Joel Rees wrote:
On Tue, Feb 11, 2014 at 5:14 AM, Gary Dale <garydale@torfree.net> wrote:
On 10/02/14 11:24 AM, Dave Woyciesjes wrote:
[...]
Have you run memtest yet?

Yes. After the other comments, I gave it a try. It also only sees 12G. I
find this confusing in that the board apparently works with a mixture of
interleaved and non-interleaved memory - as witnessed by the fact that I'm
running that way. Why should it see the non-interleaved module as only 4G
instead of 8G?

The board has 4 sockets and according to the specifications supports up to
32G of memory, which means it should support 8G modules. I could understand
the problem if it only supported 4G modules, then it might only see part of
the extra memory. I could understand it also if the configuration simply
didn't work and only showed me 8G total. 12G I don't understand.
I think I agree with Stan. You probably don't want to understand.
Digging into the specifics for your motherboard requires a lot of what
some people think is the technical equivalent of dowsing. (Using a
divining rod, so to speak.)

Mind you, I'm only focusing on one of the strange things that go on
inside RAM circuits, and I'm way over-simplifying. And the example is
a bit dated, although I think it's still relevant.

But, if you do, maybe I can point you in the right direction.

If you grab stuff from memory 64 bits at a time, your memory should be
twice as fast as 32 bits at a time. Right?

But if the memory itself is only 32-bits wide, you need two banks.

But if the timing for one bank doesn't match the timing for the other,
you either have to give up, or you have to slow down a bit.

Now, what you have is a pair of matched (hopefully) 4G sticks, and, if
I understand your situation right, a single 8G stick with an empty
slot where the matched pair would be.

Back in the day, the controller would have given up. These days, the
controller is smarter.

But BIOS knows your motherboard's layout and how to tell the
controller it can grab 64 bits at a time from the matched pair and 32
from the lonely guy.

The manufacturer didn't budget the engineering expense to tell the
Linux community how to make their controller do cute dog tricks, so,
without special help from you, Linux gives about half-way through. If
I were to guess, I'd guess it's just configuring the whole of memory
32 bits wide, so it's just not seeing one of the 4G sticks at all.

(It might seem convenient if the controller would re-map the matched
pair so that one is addressed 4G above the other and both can be
grabbed 32 bits at a time, separately, but you have to understand that
there are limits to what engineers can squeeze into a specific piece
of silicon. Or that may be one of the cute dog tricks that the
community doesn't have access to, in which case, you might be able,
with a lot of trial-and-error, to divine the configurations that would
get it to run. But you should take a good look at the path up the
mountain, because it sounds like you've never been there before, and
there are tricky crossings up there. Metaphorically speaking. I'm not
sure how robust today's motherboards are, but back in the day, it
would have been easy to toast a motherboard while you were searching
for the right timings.)
Sorry, but it still makes very little sense. When I turn off interleaving, the BIOS should try to access all the memory 32bits at a time. This would, one should expect, allow the memory to be accessed in full.

Your suggestion that it is the 8G + 1x4G which is being recognized leads to an interesting idea - putting the 8G in the same channel as one 4G stick may allow the full memory to be recognized, if only at 32bit speed.

I'll have to try it, but I'm not hopeful. If it was the case, why would it lose an entire memory stick?

I suspect that nothing about this makes sense and that the BIOS programmers just assumed that an even number of slots would be occupied if you had more than one stick and messed up the 3-stick case. The kernel relies on the BIOS, as Stan Hoeppner reports, and so Linux fails to recognize all the RAM.


Reply to: