Timeline for How Are RAM Memory Addresses Determined
Current License: CC BY-SA 4.0
28 events
| when toggle format | what | by | license | comment | |
|---|---|---|---|---|---|
| Aug 4, 2021 at 6:52 | history | protected | gnat | ||
| Aug 4, 2021 at 6:47 | answer | added | Daniel | timeline score: 1 | |
| Aug 4, 2021 at 3:11 | comment | added | Daniel | jdow's concern may be that: Suppose there are 12 dimm slots on the mother board, i.e. slot1, ... slot12. If two DIMM RAM (16GB per DIMM) are mounted on arbitrary slot. Which DIMM will has address 0~16G, and which has address 16G~32G. Who determined this address assignment? And what's the process ? | |
| Apr 30, 2021 at 6:00 | history | tweeted | twitter.com/StackSoftEng/status/1388010225223995394 | ||
| S Apr 24, 2021 at 7:54 | history | suggested | CommunityBot | CC BY-SA 4.0 | Noise reduction. |
| Apr 24, 2021 at 1:05 | review | Suggested edits | |||
| S Apr 24, 2021 at 7:54 | |||||
| Apr 23, 2021 at 22:11 | comment | added | slebetman | ... the job of the memory controller is simply to tell the CPU which slots are occupied and how much RAM each slot contains. But this system leaves large gaps of uninstalled RAM in the address space. So the memory controller remaps the physical RAM address (what exists and what is uninstalled) into a linear virtual memory address. But virtual memory is not what you are asking about. You are asking about the physical address of RAM which is simply done by wiring. This is also why Intel CPUs don't support certain high capacity RAM designed for AMD - it is because they don't have the extra pin | |
| Apr 23, 2021 at 22:10 | comment | added | slebetman | ... well, we can arrange the 5 bits as 11,111. So the bottom 3 bits will address the bytes 0 to 7 on all chips. This means we can use the top two bits (11,???) to select which chip we want to access. There is a circuit for this, it is called a demultiplexer. Given the top two bits the demultiplexer will convert 00 to 0001, 01 to 0010, 10 to 0100 and 11 to 1000. We wire up the output of the demultiplexer to the chip enable pin of the chips. Assigning address is done by wiring alone. | |
| Apr 23, 2021 at 22:06 | comment | added | slebetman | @jdow Let's learn some basic binary number system. The numbers 0 to 7 is 000, 001, 010 ... 111. So 3 wires can carry information that describe numbers 1 to 8. Let's assume that we have RAM chips that contain 8 bytes. Let's design our motherboard to be able to contain 4 chips. That means we can have up to 32 bytes of RAM. Including the address 0 the top most address of RAM is 31. How do we represent 31 in binary? It is 11111. That's 5 wires. So how do we access these 4 RAM chips?... | |
| Apr 23, 2021 at 22:02 | comment | added | slebetman | Actual physical DIMM slot. No the memory controller is not responsible for assigning the address. The assignment is done by wiring | |
| Apr 23, 2021 at 19:21 | comment | added | jdow | @Slebetman When you say slot do you mean byte block or the actual DIMM slot? Also, would I be right in saying the memory controller is responsible for 'assigning' the address to RAM bytes? Thank you for your answer. | |
| Apr 23, 2021 at 18:34 | comment | added | slebetman | There are two very good answers here already so I'm just leaving this as a comment to emphasize them. ALL RAM CHIPS EVER MANUFACTURED HAS ADDRESS THAT STARTS AT 0! It is the responsibility of the motherboard designer to map EACH SLOT of RAM to a memory range. It used to be done using a chip called a memory controller which translates the CPU memory address to physical RAM slot. Nowdays modern CPUs have memory controller built in so it is the responsibility of the CPU designer to give enough features (tools) to motherboard designers for this | |
| Apr 23, 2021 at 18:09 | comment | added | J... | @Alexander +1 The breadboard computer series is also excellent. | |
| Apr 23, 2021 at 17:54 | history | became hot network question | |||
| Apr 23, 2021 at 16:40 | comment | added | JimmyJames | I found this on one of these stacks a while ago. Might be helpful: "Operating Systems: Three Easy Pieces" specifically starting around section 13 | |
| Apr 23, 2021 at 15:59 | comment | added | Alexander | I would strongly suggest you check out Ben Eater's Build a 65c02-based computer from scratch series. It goes step by step, building a computer with memory, a display, and a keyboard input. You'll learn about address spaces, assembly, interrupts, clocks and more. | |
| Apr 23, 2021 at 15:57 | answer | added | Alexander | timeline score: 11 | |
| Apr 23, 2021 at 15:53 | answer | added | JacquesB | timeline score: 4 | |
| Apr 23, 2021 at 15:37 | comment | added | Erik Eidt | Yes, at the lowest physical level, addresses are baked into the physical structure of the memory devices (the memory chips have some address bits baked in and the organization of the chips and the banks of chips adds more baked in address bits), so the only runtime/dynamic variable is the (byte) value held at an address. | |
| Apr 23, 2021 at 15:17 | answer | added | pjc50 | timeline score: 24 | |
| Apr 23, 2021 at 14:53 | comment | added | jdow | @mouviciel Apologies for my naivety. My thoughts were that memory addresses were determined by software, not hardware. I am clearly wrong. I did have a read through the article you referenced, thank you for that. | |
| Apr 23, 2021 at 14:45 | comment | added | Doc Brown | @mouviciel: fair enough. | |
| Apr 23, 2021 at 14:41 | comment | added | mouviciel | @DocBrown: Therefore, it does not belong to Software engineering... more to Electrical Engineering. | |
| Apr 23, 2021 at 14:37 | comment | added | Doc Brown | @mouviciel: worth noting this question is not about virtual memory addressing, only about physical memory adressing | |
| Apr 23, 2021 at 10:20 | review | Close votes | |||
| Apr 30, 2021 at 3:04 | |||||
| Apr 23, 2021 at 10:08 | comment | added | mouviciel | Worth a read: Wikipedia's Virtual memory. | |
| Apr 23, 2021 at 10:06 | answer | added | Kilian Foth | timeline score: 2 | |
| Apr 23, 2021 at 9:48 | history | asked | jdow | CC BY-SA 4.0 |