Re: How does a processor generate an address?




Mary wrote:
> First of all, thank you very much for your reply. Your explantion about
> the illusion of a larger memory was very helpful. I definitely haven't
> got my fundamentals right.
>
> You mentioned "the memory address presented on the address bus by the
> processor". Where does that memory address come from?
>
> Also is the following assumption correct? There is VM and Physical
> memory. And as fas as I understand, these are located at different
> addresses, and are independent of eachother. A program only runs from
> Physical memory.
>
> Say for example, you have Physical memory starting at address
> 0x8000_0000 (512MB of it), ending at 0x9FFF_FFFF. Then there is VM
> starting at 0xA000_0000 ending at 0xBFFF_FFFF. If I have a program and
> I make it start at 0x8000_0000, I still don't see how the processor
> generates any virtual address.

The virtual address is really virtual it does not map
to a real address space, at least not directly.

The virtual adress space can be considered as being made of
pages of say 4Ko. From the processor perspective it is contiguous,
but in reality each page of the virtual memory is translated
into a physical page and the physical pages are not necessarily
contiguous nor residing in main memory at a given time.

The virtual address space of a process can go from 0 up to
4 Go, but the physical address is generally less than that.
Adresses are translated when needed upon access from the
processor.

The processor presents on its memory bus the virtual address
and the MMU as described in another post translates this
address into a physical address that is presented on the
bus used to physically access the memory device.

.



Relevant Pages

  • Re: ref?
    ... Memory is allocated on the stack and the heap; this translates to ... reference, where in your code you have to variables that are both ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: ref?
    ... Memory is allocated on the stack and the heap; this translates to ... new keyword and then managed by reference, where in your code you have ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Moving down from amd64 to i386 ??
    ... > (this is an Intel Xeon). ... but that address translates to 2^47 = ... I'm not certain if FBSD uses memory mapped I/O with numbers this high ... Errors like these do sound to me somewhat like a memory error when ...
    (freebsd-questions)
  • 6.1-BETA4: NIC doesnt work with ACPI enabled
    ... cbb0: Found memory at 80000000 ... Secondary bus set to 2 subbus 3 ... cardbus1: Non-prefetchable memory at 88000000-880000ff ... Index IRQ Rtd Ref IRQs ...
    (freebsd-stable)
  • [2.4] lockup on boot with 2.4.26
    ... Uncompressing kernel... ... Bus 0, device 0, function 0: ... Non-prefetchable 32 bit memory at 0xe3000000. ... # Loadable module support ...
    (Linux-Kernel)