CS372H Spring 2010 Homework 12
This week's homework will review virtual memory, to reinforce the concepts from way back in the semester.
Problem 1
Consider the following piece of code which multiplies
two matrices:
int a[1024][1024], b[1024][1024], c[1024][1024];
multiply()
{
unsigned i, j, k;
for(i = 0; i < 1024; i++)
for(j = 0; j < 1024; j++)
for(k = 0; k < 1024; k++)
c[i][j] += a[i,k] * b[k,j];
}
Assume that the binary for executing this
function fits in one page, and the stack also fits in one page.
Assume further that an integer requires 4 bytes for storage.
Compute the number of TLB misses if the page size is 4096 and the TLB has
8 entries with a replacement policy consisting of LRU.
Problem 2
- A computer system has a page size of 1,024 bytes and maintains the page
table for each process in main memory.
The overhead required for doing a lookup in the page table is 500 ns.
To reduce this overhead, the comnputer has a TLB that caches 32 virtual pages
to physical frame mappings. A TLB lookup requires 100ns.
What TLB hit-rate is required to ensure an average virtual address
translation time of 200ns?
- Discuss the issues involved in picking a page size for a virtual memory
system.
- Name one issue that argues for small page sizes?
Name two that argue for large page sizes?
- How do the characteristics of disks influence the selection of a page
size?
Problem 3
Consider a system with a virtual address size of 64MB (2^26),
a physical memory of size 2GB (2^31), and a page size of 1K (2^10).
Under the target workload, 32 processes (2^5) are running;
half of the processes are smaller than 8K (2^13) and half use the full
64MB virtual address space. Each page has 4 control bits.
- What is the size of a single top-level page table entry (and why)?
- What is the size of a single bottom-level page table entry (and why)?
- If you had to choose between two arrangements of page table:
2-level and 3-level, which would you choose and why?
Compute the expected space overhead for each variation: State the
space overhead for each small process and each large process.
Then compute the total space overhead for the entire system.