【组原】主存与cache的地址映射
主存与cache的地址映射
全相联
理解:主存被分割成一个个具有一定大小的块,这些块内部又以行为单位继续进行分割。
通过块的大小和字长可以确定出行的大小和字地址长度(确定是哪一行)。
同时要使得设计出的地址能够将主存容量中的所有数据囊括其中,要好好算好标记位和字号位的大小总和。进而,可知一求一。
直接映射
直接映射方式也是一种多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。cache的行号 i 和主存的块号 j 有如下函数关系:
i = j mod m
式中m为cache中的总行数。显然,主存的第0块,第m块,第2m块,…,第2s - m块只能映射到cache的第0行;而主存的第1块,第m + 1块,第2m + 1块,…只能映射到cache的第1行。
cache假设为8行,主存假设为256块,故以8为模进行映射。这样,允许存于cache第0行的主存块号是$$B_0, B_8, B_{16}, …,B_{248} $$(共32块)。同样,能映射到第7行的主存块也是32块。假设cache容量16行,主存容量256块,则地址2,18,34, ….., 242等都存放在cache的第2行内,如果第一次地址2在cache中,下次如果访问地址34的内容,则不管cache其他位置的内容访问情况,都会引起cache第2行内容的替换
直接映射用cache的空间大小来作为模数,将块地址进行了拆分,形成了标记部分和行部分(取决于这个模数,相当于对这个模数进行取余得到后的结果)。
组相联
对cache进行划分,分为一组一组的。主存中的某个位置先对应到组再对应到块。
这样的话一共有8组,按字节编址也就是说一个内存单元里面存放的是一个字节的量。主存129号单元=32*4+1,在第5块主存块中(注意,编号从0开始)。
选C
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?