当前位置: 代码迷 >> C语言 >> CPU和内存中间加个缓存为什么会提高CPU利用率?
  详细解决方案

CPU和内存中间加个缓存为什么会提高CPU利用率?

热度:398   发布时间:2007-08-24 00:05:48.0
CPU和内存中间加个缓存为什么会提高CPU利用率?

800MHz 的PIII CPU 的一条指令执行时间约为1.25ns ,而133MHz 的SDRAM 存取时间为7.5ns ,
即83% 的时间CPU 都处于等待状态,运行效率极低。

这句话怎么理解?是内存向外设取指令需要7.5ns,而CPU必须等待内存把指令取过来才能再从内存里把指令取到CPU的吧?就是说,内存在向外设取指令的时候CPU得在那看着内存把指令取到内存里?
而中间加了个缓存就相当于中间加了个传送带,每次内存取了指令就放传送带上,CPU就是从传送带上去指令,这是一本书上的解释。
但是我不明白了,CPU取的快,内存放的慢,一会CPU不就把传送带上的指令取完了吗?那取完了他不还得等?
CPU运算一条指令只需要1.25ns,而内存取个指令就7.5ns,也就是说,CPU运算完6条指令内存才取过来1条,比如传送带上有6条,CPU把这6条都运算完了,内存这才取过来1条而已,内存取来指令不是立即就能被CPU取走吗?接下来CPU运算完那一条,内存这边那个7.5ns还没过完指令还没取到呢,不就又成CPU等待内存了吗?

我到底哪理解错了?请高人指点一下,快快!!拜托了!!!

搜索更多相关的解决方案: CPU  内存  缓存  利用率  指令  

----------------解决方案--------------------------------------------------------

是cpu向内存的存取时间要7.5ns,如果是内存与外设的话那更慢,而且一般是DMA控制,就是说内存在于外设交换数据的话,CPU只在开始和结束的时候需要参与,其他的时候都是DMA控制器控制传输

内存到缓存是有很多种机制的,这种机制互相结合,其主要目的就是在于把CPU经常执行的指令放到缓存,然后CPU需要执行
的时候就到缓存中去找,如果找到就叫命中。如果内存到缓冲的这种机制设计得好(现在基本上都可达到99% 以上),那么CPU所需要的大部分指令都在缓存中,而且指令中很多重复指令,从而就大大减少了CPU的等待时间。


----------------解决方案--------------------------------------------------------
回复:(maoguoqing)是cpu向内存的存取时间要7.5ns,...
恩,明白了你的道理,但是我还有一问,据说8086里EU和BIU之间是指令队列来连接的,这个指令队列起到什么作用?
----------------解决方案--------------------------------------------------------
和现在的缓存类似差不多吧,是六个字节,把要处理的六个字节数字取到指令队列,供cpu取用
提高了效率。以后的cpu都是在8086基础上做的,8086也是做的最成功的,现在都是其基础上的产品
理解8086就容易理解现在d的cpu。原理一样!
----------------解决方案--------------------------------------------------------
  相关解决方案