79430628

Date: 2025-02-11 16:18:39
Score: 3.5
Natty:
Report link

I understand your point to some extent, but I still have a few questions. Suppose the virtual address is 40 bits and the TLB has 16 sets. If the TLB I design needs to support 4KB, 2MB, and 1GB mixed page sizes, then we need to store [39:16] as the tag in the TLB. And every time we update and replace a valid cache line, we store the corresponding page size to calculate the tag mask. Finally, we use vld, tag, and tag_mask together to check if the cache line hits. Is my understanding correct? My questions are as follows: How should the set index be designed? If the set index includes the bits [29:13] of the 1GB offset and below, then it may cause the virtual address of the same 1GB page to be indexed into different sets. In the worst case, this would mean that the 1GB page needs to be missed and cached in each set. If we don't include [29:13], for example, using [33:30] as the set index, then a large number of consecutive 4KB and 2MB small pages will be indexed into the same set, resulting in frequent replacement conflicts. Is there any way to solve these two problems simultaneously? I would really appreciate it if you could provide some insights or suggestions on this issue. Looking forward to your reply.

Reasons:
  • Blacklisted phrase (1.5): Looking forward to your
  • Blacklisted phrase (1): Is there any
  • Long answer (-1):
  • No code block (0.5):
  • Contains question mark (0.5):
  • Low reputation (1):
Posted by: Jay Liao