Cache基础知识OR1200在ICache一个简短的引论

Cache基础知识OR1200在ICache一个简短的引论

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

以下摘录《步骤吓得核心——软-core处理器的室内设计与分析》一本书

 

12.1 Cache基本知识

12.1.1 Cache的作用

      处理器的设计者通常会声称其设计的处理器一秒钟能做多少次乘法、每条指令仅仅占用xx个时钟周期,但是当我们实际使用处理器时,就会发现并非那么回事。比方在第11章,从图11.8中能够发现,当程序运行在简单SOPC上时。原先设计在运行阶段仅仅须要一个时钟周期的指令l.movhi却使用了6个时钟周期才完毕运行。造成实际情况与设计不符的原因是因为实际情况是一个由多个模块、设备组成的系统。读者朋友应该都知道“短板效应”,一个水桶能装载的最大水量取决于组成水桶的最短木板的长度。相同。当其余模块速度非常慢时,即使处理器速度非常快,整个系统的速度也不会快。当中影响系统速度的一个重要模块就是存储器,第11章的简单SOPC就是因为从存储器取指须要多个时钟周期导致处理器暂停以等待指令取到,从而使得l.movhi指令用了多个时钟周期才运行完毕。

      处理器的工作频率一直都在突飞猛进。可是存储器(包括内存、硬盘等)的工作频率却增长缓慢。事实上也能够将程序、数据都存储在处理器内部的存储空间中(就像本书第2章建立的最小系统,其将程序、数据都存放在OR1200内部的QMEM中。所以能够实如今一个时钟周期内读取指令,两个时钟周期内读取存储数据)。可是处理器内部的存储空间可谓寸土寸金,为了在价格和性能之间找到一个平衡,现代计算机一般採用多级存储层次,如图12.1所看到的。硬盘是最廉价的,所以能够使用大容量的硬盘,可是速度是最慢的。Cache通常是处理器内部的SRAM。成本最高,能够使用的容量有限。可是速度非常快,一般能够在一个时钟周期完毕訪问;内存位于两者之间,速度上优于硬盘,但不如Cache,成本上优于Cache,但不如硬盘。

Cache基础知识OR1200在ICache一个简短的引论

       在Cache中存放的是近期訪问的或者可能即将訪问的数据(此处的数据包含指令、数据),CPU须要数据时,首先在Cache中查找,假设在Cache中找到须要的数据,就直接訪问Cache中的数据,假设在Cache中没有找到须要的数据,那么再到内存中查找。查找结束。将查找到的数据及其附近数据存放到Cache中,这样下一次查找相同内容或者附近内容时就能够在Cache中找到。

      Cache提高处理器性能是利用了程序的局部性原理,包含时间局部性、空间局部性,例如以下:

  •   时间局部性:假设某个数据被訪问,那么在不久的将来它非常可能再次被訪问,典型的样例就是循环,循环体代码被处理器反复运行,直到循环结束。第一次訪问循环体代码时会从内存中读取,同一时候将该代码存放到Cache中。这样在后面的循环中CPU都可以在Cache中查找到所需代码,从而加速了取指过程
  •   空间局部性:假设某个数据被訪问。那么与它临近的数据非常可能非常快被訪问,典型的样例就是数组,数组中的元素经常依照顺序依次被程序訪问

12.1.2 Cache的结构与工作过程

      Cache是依照块进行管理的。内存被切割成大小同样的块。数据以块为单位调入CacheCache中设有一个文件夹表,该表的项称为lineline相应于内存中的一个块,包含该内存块的块地址高位部分,称为标识。line中还包含该内存块的内容,以及是否有效标志位V。如图12.2所看到的。图中如果内存块大小是16字节、文件夹表有512line,此时也称为有8KB Cache

Cache基础知识OR1200在ICache一个简短的引论

      从12.1.1节对Cache作用的描写叙述可知。Cache涉及到的主要操作就是查找、存放。查找操作就是给出一个地址推断该地址相应数据是否在Cache中。存放操作就是将从内存中读取的数据放到Cache中,这两个操作引入了两个问题:

      (1)当把数据调入Cache时。放在文件夹表的哪个位置?

      (2Cache是怎样通过文件夹表查找数据的?

      上述两个问题的不同解决方法形成不同的Cache映射方式,有三种Cache映射方式:全关联映射、直接映射、分组关联映射。这一点与MMU的映射方式是一样的,在OR1200处理器中仅仅实现了直接映射方式。所以本书也仅仅介绍直接映射方式。读者朋友能够查阅书籍了解其余Cache映射方式。直接映射是指内存中的每个块仅仅能被放置到Cache中唯一的一个位置,这样方便查找。採用直接映射时。Cache查找过程如图12.3所看到的,此处还是如果内存块是16字节,Cache中文件夹表有512line

Cache基础知识OR1200在ICache一个简短的引论

      送入Cache中要查找的数据地址通常是物理地址(比方:在OR1200Cache位于MMU之后,所以送入Cache的是物理地址),因为块大小是16字节,Cache中有512line,所以使用该物理地址4-12位的值作为索引读出相应line。将line中的标识与物理地址的高19位比較,假设相等,且line中的标志位V1。则Cache命中(Cache hit),反之Cache失靶(Cache miss)。

      当Cache命中且为读操作时。根据物理地址的低4位(即块内偏移)从line16字节数据中读出相应的数据返回给处理器。当Cache失靶且为读操作时,须要从内存中读出相应地址的数据以及与其处于同一个内存块的数据,将须要的数据送往CPU,同一时候将全部读出的数据写入Cache,要写入的文件夹表索引由地址的4-12位决定。

从上述过程能够更深刻的理解直接映射:直接映射方式中。内存的每个块仅仅能被放置到Cache唯一的一个位置。

      假设处理器要运行写操作。而且要写的目的地址在Cache中能找到,称之为写命中。当处理器改动了Cache中的数据,内存中相应的数据怎样改变,这涉及到写策略。经常使用的有通写法(Write through)、回写法(Write back)。不同的写策略决定了Cache不同的工作方式。在下一章剖析DCache时会具体说明。

12.2 OR1200Cache简单介绍

      OR1200处理器採用Harvard结构,具有分开的指令CacheICache)、数据CacheDCache)。參考图1.6可知ICache位于IMMU之后、DCache位于DMMU之后。所以送入ICacheDCache的地址都是物理地址。

      ICache仅仅有读操作,可是DCache可读可写。DCache涉及到写操作时的情况,较复杂,所以笔者分开分析。在本章仅仅剖析ICache。在下一章剖析DCache

      ICache涉及到的宏定义例如以下。从中可知ICache可以配置为512B4KB8KB16KB32KB。默认是8KB。本章採用默认配置,后面分析时不再反复说明。

此时内存块是16字节,採用直接映射。ICache文件夹表有512行,因此使用地址的4-12bit作为ICache文件夹表的查找索引。

or1200_defines.v
//`define OR1200_NO_IC           //是否有ICache。默认是凝视掉,也就是有ICache

//`define OR1200_IC_1W_512B
//`define OR1200_IC_1W_4KB
`define OR1200_IC_1W_8KB         //配置ICache的大小。默认是8KB
//`define OR1200_IC_1W_16KB
//`define OR1200_IC_1W_32KB

`ifdef OR1200_IC_1W_32KB         //假设配置ICache是32KB。那么内存块大小是32字节
 `define OR1200_ICLS		5
`else
 `define OR1200_ICLS		4        //其余情况下,内存块大小都是16字节
`endif
                                                  
`ifdef OR1200_IC_1W_8KB          //假设配置ICache为8KB,那么一些宏定义例如以下
`define OR1200_ICSIZE		13	//ICache是8KB。所以地址宽度是13
`define OR1200_ICINDX		`OR1200_ICSIZE-2	    // 11
`define OR1200_ICINDXH		`OR1200_ICSIZE-1	  // 12
`define OR1200_ICTAGL		`OR1200_ICINDXH+1	    // 13

//13位地址中的高9位是ICache文件夹表的索引
`define	OR1200_ICTAG		`OR1200_ICSIZE-`OR1200_ICLS	

//标识的宽度,包含物理地址的高19位、有效标志位V
`define	OR1200_ICTAG_W	20                     
`endif

 

 

 

 

 

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117213.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 保姆级-红米AC2100之breed不死后台刷写openwrt官方版&第三方改良版「建议收藏」

    保姆级-红米AC2100之breed不死后台刷写openwrt官方版&第三方改良版「建议收藏」刷机有风险!!!后果自负准备1.红米AC21002.基础的电脑操作breed不死后台第一步:环境准备进入小米路由器原始的管理页,miwifi.com或者192.168.31.1登录之后,检查固件版本第二步:降级这里必须降级,我们降到到2.0.7降级包地址链接提取码:tenk然后等几分钟连接上降级后的wifi,正常是redmi开头无密码连上后重新进入后台192.168.31.1自行设置向导,这里忽略然后检查一下系统版本是否降级成功第三步:写入breed此时注意浏览器

    2022年10月29日
  • c++ char数组初始化_二维字符串数组初始化

    c++ char数组初始化_二维字符串数组初始化chars[10]=”Hello”;//剩余全用0填充chars[10]={‘H’,’e’,’l’,’l’,’o’,’\0′};//和上面效果一样chars[10]={‘H’,’e’,’l’,’l’,’o’};//和前面效果一样chars[10]={0}//全部初始化为0chars[10]=”Hello,world.\n”;//超出部分丢…

  • response.setContentType()的作用及参数

    response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。例如web浏览器就是通过MIME类型来判断文件是GIF图片。通过MIME类型来处理json字符串。Tom…

  • mariadb 的安装及基本配置

    mariadb 的安装及基本配置文章目录一、mariadb介绍二、mariadb下载及安装三、mariadb的启停命令四、mariadb的配置五、添加用户,设置权限Navicat连接数据库一、mariadb介绍MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎

  • TortoiseSVN中分支和合并实践

    TortoiseSVN中分支和合并实践

  • dsp调音软件通用吗_交叉火力dsp调音数据下载

    dsp调音软件通用吗_交叉火力dsp调音数据下载18。为什么在CCS下编译工具工作不正常?在CCS下有部分客户会碰到编译工具工作不正常,常见错误为:1)autoexec.bat的路径“outofmemory”。修改autoexec.bat,清除无用的PATH路径。2)编译的输出文件(OUT文件)写保护,无法覆盖。删除或修改输出文件的属性。3)Windows有问题。重新安装windows。4)Windows下有程序对CCS有影响。建议用一…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号