【CS202计算机组成原理】一次性搞懂cache中size, block, index, offset, tag相关计算

这篇具有很好参考价值的文章主要介绍了【CS202计算机组成原理】一次性搞懂cache中size, block, index, offset, tag相关计算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、按字节(字)编址、寻址

首先应该弄懂一个概念叫:按字节编址或寻址。
指的是存储空间的最小编址单位是字节(byte),也就是说一个地址对应1 byte的内存空间。同理,按字编址,是指存储空间的最小编址单位是字(word)。

二、Memory Size、Block Size、Cache Size

以下举例均为(Direct Mapped Cache)。
Memory Size:就是内存的大小,最小单位根据(一)中所描述的最小编址(寻址)单位而定。
Cache Size:就是cache的大小,最小单位也是根据(一)中所描述的最下编址(寻址)单位而定。
Block Size: Block可以理解为一种组织内存的方式,将内存一段一段地划分开来形成许多Blocks。假如一个Block大小为4 words,那么一个Block就能存4 words=16 bytes的数据。

二、offset、index、tag

如图,CPU根据地址在内存中寻找数据时,需要根据一个32位的cache地址(这里的cache地址非内存中的地址,其中的Tag来搜索。假定cache_size为1 KiByte,block_size为4 words,内存最小寻址单元是1 byte,则有如下地址划分:
cachesize和blocksize,硬件工程,fpga开发,硬件架构
下面我们来讨论每一个数据是如何得到的:

1、Offset的确定

要确定offset的位数,需要知道一个block的size大小。上述一个block的size为16 bytes,说明一个block能存16 bytes 的数据,每一个byte对应一个地址。因为 16 = 2 4 16=2^4 16=24,所以要表示16个byte的地址只需要4个比特,第一个block能储存的地址从0000到1111。当第1个block被存满时,下一个字节的存储地址又重新从0000开始,第二个block储存的地址范围从原来的00000-01111变成了10000-11111。

2、Index的确定

首先我们知道,index指的是cache中block的序号,所以Index数就等于block的个数。承接上面的Offset,根据block的size我们知道了Offset占地址的低4比特(address[3:0])。当每一个block被存满时,都会向第5位进1,即block的Index+1——结合下图理解更加直观。而我们知道,cache_size=1 KiByte,而block_size=16 bytes,所以将两者相除就能得到cache中的block数: 1024   b y t e s / 16   b y t e s = 64 1024\ bytes/16\ bytes=64 1024 bytes/16 bytes=64个,因为 64 = 2 6 64=2^6 64=26,所以要表示64个block只需要6位比特即可。所以Index需要6位,即地址的4到9位(address[4:9])。
cachesize和blocksize,硬件工程,fpga开发,硬件架构

3、Tag的含义

因为一个block中能存储16 bytes的数据,所以不同的两个数据有可能存在同一个block中,那么怎么知道我所寻址的数据就是我想要的数据呢,这时候就要用到tag来作为区分标记。因为每一个地址都是独一无二的,所以在32位地址中,后10位分别用作index和offset后,前22位就可以拿来当作确定数据唯一性的标签。

三、例题

下面分享几道例题帮助大家理解。

【例1】常规offet、index、tag、block计算

For a direct-mapped cache of 2048 bytes, assume that the block size is 256 bytes, the main memory address is 32-bit long, which is in unit of byte. We can know that offset is from bit_____(left) to______bit (right), index is from bit____(left) to bit______(right), tag is from bit_____(left) to bit______(right), assuming that the least significant bit is bit 0. For address 0x12345678, it should be in which block?______.

solution:
我们要得到index是从几位到几位,首先要知道offset占几位。由题意得,block_size是256 bytes,即 2 8 2^8 28,所以offset占地址的0-7比特位。
因为cache_size=2048 bytes,所以cache中包含 2048 / 256 = 2 3 2048/256=2^3 2048/256=23个blocks。所以index总共占地址的8-10比特位。
剩下的9-31位均为tag。
最后一个空有两种做法:
方法一: 直接将地址转换成二进制形式:0001_0010_0011_0100_0101_0110_0111_1000.找到其中的8-10位: 11 0 ( 2 ) = 6 110_{(2)}=6 110(2)=6. 所以地址0x12345678在第6个block。
方法二: 如果地址是以十进制形式给出:305,419,896,先用地址除以block_size,得到在main memory中block的index: 305 , 419 , 896 / 256 = 1 , 193 , 046 305,419,896/256=1,193,046 305,419,896/256=1,193,046,再用得到的商模上cache中block数的比特数8: 1 , 193 , 046 ≡ 6 ( m o d 8 ) 1,193,046 \equiv 6(mod 8) 1,193,0466(mod8).所以地址0x12345678在cache中第6个block。
综上:答案为:7, 0, 10, 8, 31, 11, 6.

【例2】提高题

For a direct-mapped cache design with a 32-bit address, the following bits of the address are used to access the cache.
cachesize和blocksize,硬件工程,fpga开发,硬件架构
(1)What is the cache block size (in words)?
(2)How many entries does the cache have?
(3)Starting from power on, the following byte-addressed cache references are recorded.
cachesize和blocksize,硬件工程,fpga开发,硬件架构
Fill in blanks (show index and tag in decimal, and indicate replace using Y/N).
cachesize和blocksize,硬件工程,fpga开发,硬件架构
(4) What is the hit ratio?
(5) List the final state of the cache, with each valid entry represented as a record of <index, tag, data>.

Solution:
(1) 8
Since the unit of the block-size is in words, the Byte Offset is 2 bits. Therefore, the size of cache block is 2 5 − 2 = 2 3 = 8 2^{5−2} = 2^3 = 8 252=23=8 words.
(2) 32
Since there 5 bits for Index, there are 2 5 = 32 2^5 = 32 25=32 entries in cache.
(3)
cachesize和blocksize,硬件工程,fpga开发,硬件架构
(4) 33.33%
There are 4 hits in 12 references, so hit ratio = 4/12= 33.33%
(5)
cachesize和blocksize,硬件工程,fpga开发,硬件架构文章来源地址https://www.toymoban.com/news/detail-783881.html

到了这里,关于【CS202计算机组成原理】一次性搞懂cache中size, block, index, offset, tag相关计算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机组成原理(一)计算机系统概论

    计算机组成原理这门课可以说是计算机专业最重要的基础,身为计算机专业非常重要,所以需要自己好好琢磨,不要应付考试。 计算机硬件系统的主要组成为五大部分,分别为存储器、运算器、控制器、输入设备和输出设备。 简述一下计算机的工作原理,假设要用计算机来

    2024年02月08日
    浏览(57)
  • 计算机组成原理(1)--计算机系统概论

    计算机系统由“硬件”和“软件”两大部分组成。 所谓“硬件”,是指计算机的实体部分,它由看得见摸得着的各种电子元器件,各类光、电、机 设备的实物组成,如主机、外部设备等。 所谓“软件”,它看不见摸不着,由人们事先编制的具有各类特殊功能的程序组成。(

    2024年01月16日
    浏览(44)
  • 计算机组成原理

    作为还在学习的学生和不断进步的同事,学习计算机组成原理具有以下几个重要的好处:它可以帮助你深入理解计算机系统的工作原理,包括处理器、存储器、输入输出设备等组成部分之间的交互关系。这种深入理解可以提高你对计算机系统的整体把握能力,让你能够更好地

    2024年02月08日
    浏览(42)
  • 计算机组成原理复习

    内容是对唐朔飞老师的计算机组成原理(第三版)的梳理,之前做了各个章节的总结,本文仅做为目录  1. 计算机系统概述 2. 系统总线 3. 主存与缓存 4. 虚拟内存与辅存 5. I/O 6. 运算 7. 指令系统 8. CPU的结构与功能 9. 控制单元的功能与设计

    2024年02月11日
    浏览(43)
  • 计算机组成原理实验

    上学期刚结束了计算机组成原理课程,在这里把上学期做过的实验都记录一下。这里一共有4个:海明码的编码和解码、ALU、字库、RAM。我们是使用的谭志虎:自己动手画CPU。 中间参考了很多大佬,我在gitee上fork一下原来的代码,再把我自己的上传到仓库中。这里贴一下我的

    2024年02月04日
    浏览(48)
  • 计算机组成原理汇总

    生活不可能像你想象得那么好,但也不会像你想象得那么糟。 我觉得人的脆弱和坚强都超乎自己的想象。 有时,我可能脆弱得一句话就泪流满面;有时,也发现自己咬着牙走了很长的路 机器字长:计算机一次整数运算所能处理的二进制位数 .exe文件就是用机器语言描述的程

    2023年04月22日
    浏览(41)
  • 计算机组成原理——课程设计

      深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。 1.    TEC-2机一台 2.    电脑一台 3.    TEC-2模拟软件一套 1.分析TEC-2机的功

    2024年02月08日
    浏览(37)
  • (三)计算机组成原理——总线

    接下来呢,我们就开始介绍有关总线的相关知识了,说起总线,值得一提的是,它的英文名是BUS,也就是公共汽车,接下来我们会介绍为什么他会叫这个名字。好啦,就让我们开始今天的学习吧! 首先我们提出一个问题:那就是,我们为什么要使用总线?原因很简单,就是我

    2024年01月20日
    浏览(47)
  • 【计算机组成原理】存储系统

    🎄欢迎来到@边境矢梦°的csdn博文🎄 🎄本文主要梳理计算机组成原理中 存储系统的知识点和值得注意的地方 🎄 🌈我是边境矢梦°,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路🎆 目录 存储器的分类 半导体随机读写存

    2024年02月05日
    浏览(43)
  • 计算机组成原理——期末习题

    目录 一、二、概论 三、总线 四、存储器 五、输入输出系统 六、计算机的运算方法 七、指令系统 ALU(算术逻辑单元)包含ACC、MQ、X,可做加减乘除(均转化为加法来做),能做算术运算、逻辑运算!!!可以保存中间运算结果!!不能存放运算结果!  技术指标: 运算速

    2024年01月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包