查看现代 CPU 中的 Cache 结构的源代码
←
现代 CPU 中的 Cache 结构
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== 乱弹 == 在 OS 层面上,我们还有分页的概念,物理内存被分为若干个 Page Frame,其大小以 4KB 始。对 4KB 页大小的系统,其地址的低 12 位被用来索引页内数据 若系统采用 4KB 的 PAGE_SIZE,则第一个 Page Frame 总是会被索引到 cache 的前 256 组,第二个 Page Frame会被索引到 cache 的后 256 组,第三个又会到 cache 的前 256 组。。。。。。(给在前 256 的涂红色,给后 256 的涂黑色) 倘若系统在分别 PF 的时候,大多数的都跑到前 256 组去了,那就杯具了。在频繁换页的系统中,Cache的路数总是一定,用完了组内的行,系统就会复用一些行,原来的数据也就被替换,再访问时,就是 cache miss,性能就下来。那如何让系统在 “OS层面上物理页面(Page)的分配能够比较均匀的落在CPU层面上的SET中“? 通俗地说,就是让 OS 在分配页面的时候,让红色的页和黑色的页一样多。这个应该就是 Page Coloring 用颜色位更形式化地说: 作为一个理解的便利,请各位看官看看地址的组索引位和行内索引位所表示的空间大小是多少? 2^13 = 8KB,这个值正是 Cache 一路 (Way Array)的大小: 32KB/4 = 8KB (Way_Size) 因此拿到一个 Cache 在判断系统的 Color 位时,可以借助一个 Way Array 的概念,一路 Cache 的大小就是地址用来索引的低位空间,相当于用地址的低位访问 Cache 的一路内部存储 当 Way_Size > PAGE_SIZE 时,即 log2(Way_Size) > log2(PAGE_SIZE), 则用于索引一路 Cache 的地址低位较用于页内偏移的低位多了 log2(Way_Size) – log2(PAGE_SIZE),为了分析的方便,往往将这个多出的位称为颜色位 (color bit)。对于上述的 Cache,若系统采用 4KB 的 PAGE_SIZE,则Addr[12] 即为颜色位。则 OS 在分配页时,保证每种颜色的页一样多即可。如:Addr[13:12] 为颜色位的情形,00, 01, 10, 11 一样多即可。 若 log2(Way_Size) <= log2(PAGE_SIZE),则数据可以很均衡地进入 Cache 没有谈论的必要的,但可以作为另外一个思路,即:提高系统的 Page Size <br><br>
返回到
现代 CPU 中的 Cache 结构
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面