How is data retrieved from RAM?

In C, each byte is individually addressable. Suppose an integer (say that uses 4 bytes) has an address 0xaddr(which is 32 bits, assuming we have a 32-bit processor with a 32-bit address bus and a 32-bit data bus) and assume that the value integer 0x12345678. Now, if I retrieve this value from memory, how does the processor do it? Does the processor 0xaddr(which is a 32-bit address) put on the address lines, and then it extracts 8-bit data, say 0x12. And then the processor will step 0xaddr+1along the address lines, and then extract another 8 bits of data 0x34, etc. For 4 bytes of an integer? Or 0xaddrdid the processor simply place and immediately read 4 bytes, thus using its full 32-bit data bus?

+5
source share
2 answers

This is a well-known article in the GNU C library that describes memory access (especially on x86 - current PC systems). This is much more detailed than you might need.

The whole article is distributed in many parts:

, gbulmer, , , . , , , , , , 32 64 , ... , .

, , - , , .

+5

" ", , , .

32- 32- - . 32 32- .

, 1970 (, DEC VAX) (x86, ARM, Cortex-A8, MIPS32) (, ARM, Cortex-M3, PIC32 ..).

: (), , , " " " " ( ), . 32 .

, . , , , " ".

, , ( "" ), , , . ( ) , , .

32 ( ) , , , . ARM 32 , , e, g, , .

, http://www.cpu-world.com/info/Pinouts/68000.html 24- 16- . (UDS LDS), , , .

research.cs.tamu.edu/prism/lectures/mbsd/mbsd_l15.pdf , , " 68000".

MIPS, ARM x86, .

+4

All Articles