SO中文参考
首页
(current)
程序语言
c
java
python
c++
go
javascript
swift
c#
操作系统
linux
ubuntu
centos
unix
数据库
oracle
mysql
mongodb
postgresql
框架
node.js
angular
react-native
avalon
django
twisted
hadoop
.net
移动开发
android
ios
搜索
了解缓存中的块偏移位
问题描述
投票:0
回答:2
我一直在阅读 Bryant 和 O'Hallaron 所著的《计算机系统:程序员的视角》中有关高速缓存的章节,并且我无法理解有关块偏移位的内容。这是书中的快照:
在此示例中,他们假设单词长度为 4 个字节,这是直接映射,每行包含 8 个字节。他们使用 3 位来决定距最左侧单元格的偏移量,因此根据我的理解,如果块偏移量为 010,则缓存会将数据从 w2 返回到 w5。但我不明白如果块偏移量为 100 会发生什么,块中没有第 8 个单元,因此我们无法返回从 w5 开始的 4 字节字,因此仅使用 2 位会更有意义块偏移。我在这里犯了什么错?
caching
memory
block
2个回答
0
投票
你说得对。
无法返回从 w5 开始的 4 字节字。
但是该图的二进制位为 100 -> 2^2 -> w4。所以你从 w4 开始。数到 w7,你会得到 4 个字节,也就是一个单词,它由 w_4、w_5、w_6、w_7 组成字节。
0
投票
您的理解略有缺陷,如果块偏移量为010,则缓存不会返回4个字的范围。相反,它只返回第二个索引处 4 个字节长的单个单词。
它一行中有多个单词的原因是受益于空间局部性的概念。如果您提供的下一个地址与相同的标签匹配,但具有不同的偏移量,则可以看到这一点。
最新问题
如何在power bi中检索AD组和成员?
JavaScript wait、try/catch 和微任务队列
使用私有 API 进行 authController 和用户模型
如何指示 Azure Monitor 根据容器名称选择角色实例?
如何获得所有分组中存在的唯一值组合
Font Awesome 图标不会在 IE11 中打印
如何过滤键盘事件?
通过 PS/2 端口发送数据
Npgsql 循环期间负载均衡不均匀
JavaScript 自动完成,无需外部库
依赖于计算groupby对象中两列单元格之间差异的列
从未初始化的内存中读取每次都会返回不同的答案
Mailgun:取消排队的电子邮件
cosign验证时如何在Rekor中查找记录?
Matlab - 仅将轴标题的一部分设为粗体
类中字符串中未定义的名称
在 Python 中嵌入 Matplotlib 动画(谷歌 Colab 笔记本)
ActiveMQ Artemis 通配符安全设置未按预期运行
ps/2键盘接口VHDL
Stimulus.js 调用 connect() 生命周期回调中定义的方法
© www.soinside.com 2019 - 2024. All rights reserved.