美文网首页
cache组相连,页着色

cache组相连,页着色

作者: 大a艺术家 | 来源:发表于2020-05-13 17:54 被阅读0次

粗略的了解了下cache的结构:

cache分为全相联,直接相连,组相连。重点讲讲组相连。

什么是cache行?cache是以行为单位进行存储的,如每个cache行为连续的32B。当然,每个cache行前面还有一些标记信息用来判定cache存的是内存哪部分的信息,是否有效等。

组相连是将cache分组,同时内存也分组。每次将内存的一个组存到cache中(这是由于局部性原理,最近访问的数据可能会被重复访问,他的邻居也极可能被访问,那把他们都放入cache最有效了)。具体如下:

设cache是n路组相连,将每n个连续的cache行编为一组(同时内存中也分成相同大小的组),假设分成了m个组。内存也分成n*(每cache行大小的组)的组,假设分成了p个组。用p%m来进行cache组和内存组之间的对应。对应好后,组的内部的cache行与内存行之间用全相连。

页着色的问题:

上文说了,cache行前是有信息来用于判定存的是内存的哪部分的,比如tags信息。tags存的是当前cache行映射的内存的部分物理地址。

为了加快判断cache是否命中,cpu一般会分两步走:1,使用tlb将线性地址转化为物理地址;2,等不及1步完成以便用物理地址来判断cache是否命中,先使用线性地址来进行cache是否命中的初步处理;到2步后期使用1步物理地址来确定是否命中。

假设内存4K一页,cache 32B一行,64KB,32位系统,4路组相连。

下面主要讲第二步:

本来,我们使用物理地址来找cache的,现在为了加快速度,我们使用线性地址来找对应的cache,这样更快,但是也会有相应的问题。。。

4k页的话,线性地址和物理地址的低12位(0~11)为页内偏移地址,他们是相等的无需映射。

32B的cache行的话,需要线性地址的5位(0~4)的cache行内偏移地址。

由于是64K的cache,cache行32B,4路组相连,故需64K/32*4共2^9个组。需9位来区分是那个cache组。需5~13,共9位线性地址。

这样就可以选定那个cache组,这时候tlb算物理地址也完成了,用物理地址&tags来判定选中的是组内的那个cache行。因为一个组只有4行,故最多只需判断4次,节约了时间。

那这里就出现了个问题,12~13这两位是线性地址,且与物理地址不一样(本来找cache是用物理地址的)。这样就会产生这种情况,本来要找的数据存在cache的a地址,但是线性地址的12~13位不可靠,不是物理地址,这样会有2个问题:

1,命中错误的cache行(设为地址b),误以为要找的数据没有在cache中,这样就会就数据在放到b中来。这样就会有同一数据在cache中的多个备份。(cache别名问题)

2,命中了错误的cache行,误以为那是正确的数据,导致数据错误。(当然后面会用1步算好的物理地址在去匹配一下,故这个错误不太可能发生)

故需页着色,4路组相连中,线性地址的12~13位必须和物理地址的12~13位相等——这可能需要在MMU等方面下足功夫才能保证。(嘿嘿,页着色解决的是cache别名的问题,但是解决方法和cache没有半毛钱关系)

同时也可以使内存分成16K来克服上述问题。还有一起其他的方法也可以解决页着色的问题。

————————————————

版权声明:本文为CSDN博主「yarsen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/yarsen/java/article/details/8223188

相关文章

  • cache组相连,页着色

    粗略的了解了下cache的结构: cache分为全相联,直接相连,组相连。重点讲讲组相连。 什么是cache行?c...

  • 上午选择题知识点

    2016上半年选择知识点摘要:1、主存和Cache的地址映射关系:全相连,组相连,直接映射。2、补码3、位移指令:...

  • Cache 替换算法和写策略

    前言:来吧,继续补 Cache 的知识。 替换算法 还记得组相联吗?就是主存中的一块可以放在 Cache 中的一组...

  • NO.4 - OpenGL小案例

    1、所需要工具类 着色器管理类 GLTools freeglut静态库 着色器管理类: 创建并管理着色器 提供一组...

  • SpringBoot热部署与打包分布

    /** DEBUG调试模式启动 热部署配置过程: spring.thymeleaf.cache=false 关闭页...

  • OpenGL ES for Android(几何着色器)

    简介 几何着色器(Geometry Shader)是一个可选功能,他介于在顶点和片段着色器之间,接收一组顶点数据,...

  • cache

    cache的直接相联,多路组相联, 全相联 要计算地址映射到cache的那一块,首先需要确定这个地址对应的块号 块...

  • 检测 SAP Spartacus 服务器端渲染页面响应时间的两种

    方法1:Chrome 开发者工具,disable cache,在 network 标签页里,监控页面的 Waiti...

  • OS-Memory Management

    进程管理:一组进程如何共享CPU内存管理:一组进程如何共享内存 stall ,cache memory和regis...

  • Arnold for C4D 16 【材质(十)】Convers

    本篇教程我们来综合讨论三组着色器:Conversion / Math / Shading state,以及各自包含...

网友评论

      本文标题:cache组相连,页着色

      本文链接:https://www.haomeiwen.com/subject/bcronhtx.html