华硕主板关闭开机自检检L2 Cache立刻死机怎么办

为了兼顾速度和容量的问题,一
0.5*5+0.5*0.9*(50+5)+0.5*0.1*(400+50+5)=50
0.5*5+0.5*0.9*55+0.5*0.1*455=50
l1命中 + l1未命中+l2命中 +l1,2未命中 内存寻找。
5+50*0.5+400*0.5*0.1 = 5+25+20 = 50
为了兼顾速度和容量的问题,一般采用两级Cache结构,第一级Cache小而快,第二辑Cache容量大。
平均的访问时间=命中时间(L1)+失效率(L1)*失效开销(L1)
=命中时间(L1)+失效率(L1)*((命中时间(L2)+失效率(L2)*失效开销(L2))
time=5+0.5*(50+0.1*400)=50
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
京ICP备号-4
扫一扫,把题目装进口袋扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
谁知道CACHE_Flush(CACHE_L2,&ping_data,1)起什么作用?还有如题flush it out of the
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
清除缓存,也有丢弃的意思.这句应该是在L2缓存里清除ping_data,第三个参数1可以查阅相关手册
查看原帖>>
为您推荐:
其他类似问题
扫描下载二维码深入理解Cache
我的图书馆
深入理解Cache
&&& &存储器是分层次的,离CPU越近的存储器,速度越快,每字节的成本越高,同时容量也因此越小。寄存器速度最快,离CPU最近,成本最高,所以个数容量有限,其次是高速缓存(缓存也是分级,有L1,L2等缓存),再次是主存(普通内存),再次是本地磁盘。& & & & & & & & & & & && & &寄存器的速度最快,可以在一个时钟周期内访问,其次是高速缓存,可以在几个时钟周期内访问,普通内存可以在几十个或几百个时钟周期内访问。& &&& & & & & (注 本图来自Ulrich Drepper大牛的讲稿,如有侵权,通知即删)& & 存储器分级,利用的是局部性原理。我们可以以经典的阅读书籍为例。我在读的书,捧在手里(寄存器),我最近频繁阅读的书,放在书桌上(缓存),随时取来读。当然书桌上只能放有限几本书。我更多的书在书架上(内存)。如果书架上没有的书,就去图书馆(磁盘)。我要读的书如果手里没有,那么去书桌上找,如果书桌上没有,去书架上找,如果书架上没有去图书馆去找。可以对应寄存器没有,则从缓存中取,缓存中没有,则从内存中取到缓存,如果内存中没有,则先从磁盘读入内存,再读入缓存,再读入寄存器。& & 本系列的文章重点介绍缓存cache。了解如何获取cache的参数,了解缓存的组织结构,了解cache对程序的影响,了解如何利用cache提升性能。& &&& &&&本文作为系列文章的第一篇,讲述的如何获取cache的组成结构和如何获取cache的参数。& & cache分成多个组,每个组分成多个行,linesize是cache的基本单位,从主存向cache迁移数据都是按照linesize为单位替换的。比如linesize为32Byte,那么迁移必须一次迁移32Byte到cache。 这个linesize比较容易理解,想想我们前面书的例子,我们从书架往书桌搬书必须以书为单位,肯定不能把书撕了以页为单位。书就是linesize。当然了现实生活中每本书页数不同,但是同个cache的linesize总是相同的。& & 所谓8路组相连(&8-way set associative)的含义是指,每个组里面有8个行。&& & 我们知道,cache的容量要远远小于主存,主存和cache肯定不是一一对应的,那么主存中的地址和cache的映射关系是怎样的呢?& & 拿到一个地址,首先是映射到一个组里面去。如何映射?取内存地址的中间几位来映射。& & 举例来说,data cache: 32-KB, 8-way set associative, 64-byte line size& & Cache总大小为32KB,8路组相连(每组有8个line),每个line的大小linesize为64Byte,OK,我们可以很轻易的算出一共有32K/8/64=64 个组。& & 对于32位的内存地址,每个line有2^6 = 64Byte,所以地址的【0,5】区分line中的那个字节。一共有64个组。我们取内存地址中间6为来hash查找地址属于那个组。即内存地址的【6,11】位来确定属于64组的哪一个组。组确定了之后,【12,31】的内存地址与组中8个line挨个比对,如果【12,31】为与某个line一致,并且这个line为有效,那么缓存命中。& & OK,cache分成三类,& & 1 直接映射高速缓存,这个简单,即每个组只有一个line,选中组之后不需要和组中的每个line比对, & & & 因为只有一个line。& & 2 组相联高速缓存,这个就是我们前面介绍的cache。 S个组,每个组E个line。  &3 全相联高速缓存,这个简单,只有一个组,就是全相联。不用hash来确定组,直接挨个比对高位地址,来确定是否命中。可以想见这种方式不适合大的缓存。想想看,如果4M 的大缓存 linesize为32Byte,采用全相联的话,就意味着4* = 128K 个line挨个比较,来确定是否命中,这是多要命的事情。高速缓存立马成了低速缓存了。&  描述一个cache需要以下参数 :& & 1 cache分级,L1 cache, L2 cache, L3 cache,级别越低,离cpu越近& & 2 &cache的容量& & 3 &cache的linesize& & 4 &cache 每组的行个数.& & 组的个数完全可以根据上面的参数计算出来,所以没有列出来.& & Intel手册中用这样的句子来描述cache:& & 8-MB L3 Cache, 16-way set associative, 64-byte line size&& & 如何获取cache的参数呢,到了我们的老朋友cpuid指令,当eax为0x2的时候,cpuid指令获取到cache的参数. 下面给出代码:& && & 我的电脑上运行结果如上图,查看intel的手册可知参考文献:1&Intel? Processor Identification andthe CPUID Instruction2&Professional Assembly Language &Richard Blum著3 深入理解计算机系统&&&&首先言明,本文严格意义上将不能算作原创,因为我写这些东西只不过是博客&的学习心得,不能将版权划到自己名下,毕竟咱不是喜欢45度角仰望天空的郭四姑娘。由于原文是英文版,而且作者用的是C++。原文提到的实验,我做了一部分,加深了对Cache的理解。英文比较好的兄弟就不必听我聒噪了,直接点链接看原文好了。& & OK,继续我们的探索之旅。深入理解cache(1)得到了我的PC的cache参数如下:& 1 测试cache的linesize&& & 代码看起来有点长,但是分成了3段。先看第一个测试,测试cache的linesize。& & 我们知道,cache的迁移是以linesize为单位的,所以,用户纵然只访问一个int,PC需要从主存拷贝1条line 进入Cache,对于我的电脑来说,就是copy 64B。& & 看下面的代码,测试linesize,如果K=1,遍历整个数组,如果K=16,只访问16倍数位置的值。依次类推。如果K=16,乘法的个数是K=1的时候1/16。我们可以推测,K=16的时候,程序执行时间是K=1的时候的1/16左右。是不是这样的。看下第一个测试用例的结果。当K = 1 ,2,4 ......16的时候,虽然计算乘法的次数相差很大,但是,代码执行的时间是相近的都是80ms附近,但是当K = 32,64的时候,随着计算乘法的次数减半,代码执行的时间也减半。& & 原因在于,16 = (linesize)/sizeof(int)= 64/4,当K &16的时候,第一个int不命中,接下来的都命中的,乘法的个数虽然减半,但是从主存向Cache拷贝数据并没有减半。乘法消耗的指令周期要远低于从主存往cache里面copy数据,所以当K&16 的时候,既然从主存Cp数据到Cache的次数是相同的,那么总的执行时间差距不大就可以理解了。& & 当K&16的时候,每次都需要去主存取新的line,所以步长K增大一倍,去主存copy数据到cache的次数就减少为原来的一半,所以运行时间也减少为 原来的1半。& & 2 Cache的大小。& & 我的PC 有三级Cache,容量分别是32K &256K ,3M .这些参数对程序有什么影响呢。  下面的测试代码,执行的次数是一样的,都是64M次但是array的大小不一样。我们分别传入参数为1K,2K ,4K ,8K.....64MB 。在执行之前我们先分析下。& & 目前,如果array的大小是多大,循环执行的次数是一样的。我们的1级Cache大小是32KB,也就是最多容纳8192个int。如果我们的数组大小就是8192个int,那么除了第一次执行需要将数据从 主存--&L3 Cache---&L2 Cache --&L1 Cache传上来,后面再次执行的时候,由于整个数组全在L1 Cache,L1 Cache命中,速度很快。当然如果数组大小小于8192个int,L1更能容纳的下。8192是个坎。数组大于8192个int,性能就会下降一点。& & 如果我们的array大小大于L1 cache容量会怎样呢?看下我们的L2 Cache,大小256KB,即64K个int,换句话说,如果数组长度小于64K个int,也不赖,至少L2 Cache 容纳的下,虽然L1 Cache每写满32KB就需要将交换出去。换句话说,64K是个坎,数组大于64K个int,性能就会下降。& & L3Cache我就不说,毕竟我不是唐僧,一样的情况,对于我的3M 缓存,3M/4 = 768K 是个坎,如果数组大于768个int,那么性能又会下降。& & 好了可以看下面的图了,和我们想的一样,& & 当低于8192的时候,都是120ms 左右,& & [8192,64K ]的时候,都是200ms 左右& & [64K ,768K ]的时候,都是300ms左右& & 大于768的时候,1200ms左右。& & 第三部分我就不讲了,源代码给出大家可以自己在电脑上研究。不过第三部分要比较难懂,而且我前面提到的那篇讲的也不是很好懂。&& & 下面是我的测试全代码出自:http://blog.chinaunix.net/uid--id-2777989.html
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢> 问题详情
PC机中CPU执行MOV指令从存储器读取数据时,数据搜索的顺序是()。A.从L1 cache开始,然后依次为L2
悬赏:0&答案豆
提问人:匿名网友
发布时间:
PC机中CPU执行MOV指令从存储器读取数据时,数据搜索的顺序是()。A.从L1 cache开始,然后依次为L2 cache、DRAM和外设B.从L2 cache开始,然后依次为L1 cache、DRAM和外设C.从外设开始,然后依次为DRAM、L2 cache和L1 cacheD.从外设开始,然后依次为DRAM、L1 cache和L2 cache请帮忙给出正确答案和分析,谢谢!
为您推荐的考试题库
您可能感兴趣的试题
1在现行的PC机中,常用的16位系统总线是(   )。A.PC/XT总线B.PC/AT总线(ISA总线)C.EISA总线D.IEEE-488总线2下面关于串行通信的叙述中,错误的是(   )。A.异步通信时,起始位和停止位用来完成每一帧信息的收发同步B.二进制数据序列在串行传送过程中,无论是发送还是接收,都必须由时钟信号对传送数据进行定位C.串行通信有单工、半双工和全双工三种方式D.对传送数据进行校验时,如果发送方按偶校验产生校验位,那么接受方可按偶校验进行校验,也可按奇校验进行校验3使用两个8259A进行级联,最大可以获得的有效硬件中断源的个数为(   )。A.4个B.8个C.16个D.15个4使用Pentium CPU的PC机中,DIMM内存条的数据宽度为(   )。A.64位B.32位C.16位D.8位
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
找答案会员
享三项特权
找答案会员
享三项特权
找答案会员
享三项特权
选择支付方式:
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
恭喜你被选中为
扫一扫-免费查看答案!
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
提示:请截图保存您的账号信息,以方便日后登录使用。
常用邮箱:
用于找回密码
确认密码:}

我要回帖

更多关于 开机自检 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信