Title

【组原】主存与cache的地址映射

主存与cache的地址映射

全相联

image

理解:主存被分割成一个个具有一定大小的块,这些块内部又以行为单位继续进行分割。

通过块的大小和字长可以确定出行的大小和字地址长度(确定是哪一行)。

同时要使得设计出的地址能够将主存容量中的所有数据囊括其中,要好好算好标记位和字号位的大小总和。进而,可知一求一。

image

直接映射

直接映射方式也是一种多对一的映射关系,但一个主存块只能拷贝到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的空间大小来作为模数,将块地址进行了拆分,形成了标记部分和行部分(取决于这个模数,相当于对这个模数进行取余得到后的结果)。
image

组相联

对cache进行划分,分为一组一组的。主存中的某个位置先对应到组再对应到块。

image

image

image

这样的话一共有8组,按字节编址也就是说一个内存单元里面存放的是一个字节的量。主存129号单元=32*4+1,在第5块主存块中(注意,编号从0开始)。
选C

posted @   BeautifulWater  阅读(1623)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
点击右上角即可分享
微信分享提示