Cpu architecture 查找允许TLB访问与标记获取重叠的最小页面大小

Cpu architecture 查找允许TLB访问与标记获取重叠的最小页面大小,cpu-architecture,virtual-memory,cpu-cache,Cpu Architecture,Virtual Memory,Cpu Cache,作业问题,所以请把我推向正确的方向 考虑一个具有物理寻址缓存的系统,并假设使用了40位虚拟地址和32位物理地址,并且内存是字节可寻址的。进一步假设缓存是4路集关联的,缓存线大小为64字节,缓存的总大小为64 KB 该系统中允许TLB访问和缓存访问重叠的最小页面大小应该是多少 我一直被这个问题困扰着,甚至不知道如何开始。有人能给我一个提示来找到解决方案吗?我认为问题中最重要的信息是 TLB访问和缓存访问的重叠 这意味着,我们在访问TLB的同时访问缓存。实际上,我们真正要做的是,我们使用虚拟地址中的

作业问题,所以请把我推向正确的方向

考虑一个具有物理寻址缓存的系统,并假设使用了40位虚拟地址和32位物理地址,并且内存是字节可寻址的。进一步假设缓存是4路集关联的,缓存线大小为64字节,缓存的总大小为64 KB

该系统中允许TLB访问和缓存访问重叠的最小页面大小应该是多少


我一直被这个问题困扰着,甚至不知道如何开始。有人能给我一个提示来找到解决方案吗?

我认为问题中最重要的信息是

TLB访问和缓存访问的重叠

这意味着,我们在访问TLB的同时访问缓存。实际上,我们真正要做的是,我们使用虚拟地址中的索引位对缓存进行索引,当我们在缓存中找到条目时,我们将拥有来自TLB的数据(物理地址)。然后我们可以与物理地址进行标记比较。换句话说,缓存充当虚拟索引、物理标记(VIPT)缓存

尽管该方案听起来很有效,但需要注意的是,用于索引缓存的位数不能高于表示页面大小所需的位数。简单地说,页面大小可以对缓存条目的数量设置上限

现在回到你的问题上来

它是一个64KB的缓存,具有4路设置关联,缓存线为64KB

Number of cachelines = (64KBytes/4)/64Bytes = 2^8 cachelines
这意味着如果一个页面是256字节或更大,我们可以使用这种机制。如果一个页面小于256字节,那么我们不能假设虚拟地址和物理地址的索引位是相同的

此系统中允许的最小页面大小应该是多少 TLB访问和缓存访问重叠


以下是您必须执行的操作:1-计算缓存中的集合数。2-将物理地址划分为缓存线偏移字段、缓存集索引字段和缓存线标记字段。3-对虚拟地址执行相同的操作。4-确定最小页面大小,以便缓存集索引不需要虚拟到物理转换(因为位的值将保持不变),这将启用并行访问。VIPT缓存通常不要求所有索引位都来自页面偏移量以下。只有当您希望它具有与PIPT缓存相同的同音词/同义词别名缺失时,才需要该要求,这是问题所指定的(物理寻址缓存)。VIPT仅作为PIPT的一种速度技巧,通常是VIPT的特例。您还可以使用页面着色来处理别名:。@PeterCordes谢谢您的帮助,我不知道。如果我理解正确,在4K页面场景(12位)中,如果我想要13位缓存索引,我仍然可以使用VIPT,前提是操作系统确保PA的13位=VAYup的13位,否则操作系统必须刷新页面表更改上的缓存。IDK,如果你真的想用页面着色来调用VIPT一个物理寻址的缓存,尽管通过软件协作,它的行为是这样的,并且避免了任何额外的刷新。一些早期的CPU使用VIVT缓存,或者(更简单的)直接映射虚拟缓存,操作系统只需刷新上下文开关上的缓存或对页表的更改。但随着缓存变得越来越大,越来越有价值,即使对于L1d来说,这也不是一个有吸引力的选择。@PeterCordes,但这个答案是不正确的。对于256字节的页面,一些(事实上,大多数)索引位需要翻译才能访问PIPT缓存。@HadiBrais:很好,我没有检查答案其余部分的数学或推理。我只是在评论第一段(这确实解释了正确的概念,即所有索引位都来自页面偏移量下方,并免费翻译)
256Bytes