By: Ricardo B (ricardo.b.delete@this.xxxxx.xx), May 30, 2013 11:18 am
Room: Moderated Discussions
Sebastian Soeiro (sebastian_2896.delete@this.hotmail.com) on May 30, 2013 9:48 am wrote:
> - So it seems to me that the AGU almost computes a "tag" for the CPU to use to refer themselves to
> the actual data entires, whilst the DTLB holds the actual physical location of these data entries?
> Or do I still have something wrong? The AGU seems very ambigious to me... Or perhaps the AGU is the
> unit that requests data to be fed to the other execution units? Recieving instructions from the scheduler
> to request certain data entries, which moves onto the DTLB which moves to the L1/L2?
There are two (main) types of memory addresses in a modern CPU: virtual and physical.
In general, software handles virtual address.
The operative system sets up a page table, which is just a big look up table which maps pages (4KB in x86) of virtual addresses into physical addresses and also contains access permissions.
Ie, something like
Virtual address => physical address, permissions, etc
0x00000000 => 0x19831, read, write, no execute
0x00000001 => 0x32911, read, no write, execute
...
This mechanism is required for any operative system more robust than DOS.
But before we go to the page table, an x86 instruction which accesses memory can use pretty complicated addressing, such as DS:EBX + 4*ESI + 39;
The AGU does all the math and comes up with a single number, which is called the virtual address.
The DTLB then performs a look up in the page table, to convert the virtual address into a physical memory address, permission bits, etc
> - So the store buffer is very unclear to me. Your explanation probably makes perfect sense,
> it's just me who probably doesnt understand. Though what I don't understand is; where do these
> store requests come from? I understand that the store buffer holds data before it is commited
> to the data caches, but where does this data come from? The execution units? If so, why would
> it be redirected back to the data caches if they were already "done" with?
The stores come from instructions which store data into memory.
> - So the prefetcher sortof acts like the data part of a loop detector? Or other patterns?
Yep, probably something like that. Only Intel and God know the details.
> - So it seems to me that the AGU almost computes a "tag" for the CPU to use to refer themselves to
> the actual data entires, whilst the DTLB holds the actual physical location of these data entries?
> Or do I still have something wrong? The AGU seems very ambigious to me... Or perhaps the AGU is the
> unit that requests data to be fed to the other execution units? Recieving instructions from the scheduler
> to request certain data entries, which moves onto the DTLB which moves to the L1/L2?
There are two (main) types of memory addresses in a modern CPU: virtual and physical.
In general, software handles virtual address.
The operative system sets up a page table, which is just a big look up table which maps pages (4KB in x86) of virtual addresses into physical addresses and also contains access permissions.
Ie, something like
Virtual address => physical address, permissions, etc
0x00000000 => 0x19831, read, write, no execute
0x00000001 => 0x32911, read, no write, execute
...
This mechanism is required for any operative system more robust than DOS.
But before we go to the page table, an x86 instruction which accesses memory can use pretty complicated addressing, such as DS:EBX + 4*ESI + 39;
The AGU does all the math and comes up with a single number, which is called the virtual address.
The DTLB then performs a look up in the page table, to convert the virtual address into a physical memory address, permission bits, etc
> - So the store buffer is very unclear to me. Your explanation probably makes perfect sense,
> it's just me who probably doesnt understand. Though what I don't understand is; where do these
> store requests come from? I understand that the store buffer holds data before it is commited
> to the data caches, but where does this data come from? The execution units? If so, why would
> it be redirected back to the data caches if they were already "done" with?
The stores come from instructions which store data into memory.
> - So the prefetcher sortof acts like the data part of a loop detector? Or other patterns?
Yep, probably something like that. Only Intel and God know the details.