So a cache needs figure out the address of the home node for a memory
block, based on its addressed. Without the uniform distribution of
addresses, how would you propose to handle this in a real system?
You could have holes in the physical address space, I suppose, which the
OS would know about and could avoid allocating. (This is assuming that
the "natural" mapping, with each module being assigned a fixed chunk of
physical addresses. In your case, you could assume 512MB per module,
but the OS would know that the "missing" 384MB in your smaller module is
not available, so it would never allocating anything to those addresses.)
Otherwise, it would appear to me that you would need some sort of table
that gives the mapping of addresses to memory modules. If that's a
reasonable model of the system, then you could implement such a table in
Ruby, and change mapAddressToDirectory accordingly.
...Greg
Héctor Montaner wrote:
Hi,
I have 4 processors with 1 memory module per processor. The thing is that
I would like to have different memory sizes, for example, 128MB in one
processor and 512MB in the rest.
The problem is that when a cache forwards a request to a directory, it
uses map_Address_to_Directory (RubySlicc_ComponentMapping.h), and this
function uses a set of bits in the address to determine the corresponding
directory. This means that, by default, Ruby distributes the physical
memory space in a symmetric way.
Any idea?
Thanks in advance
Hector
_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.
|