KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

有关于世界上最可怕的事......(现已成为硬件讨论贴)[版主ps.帖子长且话题已转换,请

[ 64436 查看 / 274 回复 ]

回复:有关于世界上最可怕的事......(现已成为硬件讨论贴)[版主ps.帖子长且话题已转

以下引用MAGICWING在2004-7-25 18:53:54的发言:


我没问题。。。还有谁想听?


要听的先发教科书一本……
上传文件447
2007/2/20凌晨01:14:45,获得称号「大骗子」
orz

QQ群 宅在日本 74481628
宅女腐女招募中
http://www.otkjp.cn/
TOP

回复:有关于世界上最可怕的事......(现已成为硬件讨论贴)[版主ps.帖子长且话题已转

以下引用MAGICWING在2004-7-25 18:02:41的发言:

比如缓存工作原理或超长流水线分支管理之类的。。。


这个好…想听= =+
老了…
不能每天爬KFC的高楼了…
upload/KFCFile4235_wing.jpg
天空…遥远的天空之梦
咳咳...年轻真好啊…
TOP

回复:有关于世界上最可怕的事......(现已成为硬件讨论贴)[版主ps.帖子长且话题已转

高速缓冲存储器Cache是位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在Cache中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从Cache中调用,从而加快读取速度。由此可见,在CPU中加入Cache是一种高效的解决方案,这样整个内存储器(Cache+内存)就变成了既有Cache的高速度,又有内存的大容量的存储系统了。Cache对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与Cache间的带宽引起的。

  高速缓存的工作原理

  1.读取顺序

  CPU要读取一个数据时,首先从Cache中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入Cache中,可以使得以后对整块数据的读取都从Cache中进行,不必再调用内存。

  正是这样的读取机制使CPU读取Cache的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在Cache中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先Cache后内存。

  2.缓存分类

  前面是把Cache作为一个整体来考虑的,现在要分类分析了。Intel从Pentium开始将Cache分开,通常分为一级高速缓存L1和二级高速缓存L2。

  在以往的观念中,L1 Cache是集成在CPU中的,被称为片内Cache。在L1中还分数据Cache(I-Cache)和指令Cache(D-Cache)。它们分别用来存放数据和执行这些数据的指令,而且两个Cache可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。

  在P4处理器中使用了一种先进的一级指令Cache——动态跟踪缓存。它直接和执行单元及动态跟踪引擎相连,通过动态跟踪引擎可以很快地找到所执行的指令,并且将指令的顺序存储在追踪缓存里,这样就减少了主执行循环的解码周期,提高了处理器的运算效率。

  以前的L2 Cache没集成在CPU中,而在主板上或与CPU集成在同一块电路板上,因此也被称为片外Cache。但从PⅢ开始,由于工艺的提高L2 Cache被集成在CPU内核中,以相同于主频的速度工作,结束了L2 Cache与CPU大差距分频的历史,使L2 Cache与L1 Cache在性能上平等,得到更高的传输速度。L2Cache只存储数据,因此不分数据Cache和指令Cache。在CPU核心不变化的情况下,增加L2 Cache的容量能使性能提升,同一核心的CPU高低端之分往往也是在L2 Cache上做手脚,可见L2 Cache的重要性。现在CPU的L1 Cache与L2 Cache惟一区别在于读取顺序。

  3.读取命中率

  CPU在Cache中找到有用的数据被称为命中,当Cache中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有2级Cache的CPU中,读取L1 Cache的命中率为80%。也就是说CPU从L1 Cache中找到的有用数据占数据总量的80%,剩下的20%从L2 Cache读取。由于不能准确预测将要执行的数据,读取L2的命中率也在80%左右(从L2读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经是一个相当小的比例了。在一些高端领域的CPU(像Intel的Itanium)中,我们常听到L3 Cache,它是为读取L2 Cache后未命中的数据设计的—种Cache,在拥有L3 Cache的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。

  为了保证CPU访问时有较高的命中率,Cache中的内容应该按一定的算法替换。一种较常用的算法是“最近最少使用算法”(LRU算法),它是将最近一段时间内最少被访问过的行淘汰出局。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出Cache,提高Cache的利用率。
GalGame专题视听体验艺术研讨站点GGM欢迎大家:
http://www.ggmix.com
GGM论坛:
http://www.ggmix.net/bbs/Boards.asp
TOP

回复:有关于世界上最可怕的事......(现已成为硬件讨论贴)[版主ps.帖子长且话题已转

我还以为是会以数字电路模式来解析緩存的工作原理呢…

超长流水线分支管理这个太复杂了
老了…
不能每天爬KFC的高楼了…
upload/KFCFile4235_wing.jpg
天空…遥远的天空之梦
咳咳...年轻真好啊…
TOP

回复:有关于世界上最可怕的事......(现已成为硬件讨论贴)[版主ps.帖子长且话题已转

现在CPU都是利用分支预测(Branch Prediction)来增加效率,但分支预测并不是100%完全正确。以最新最热门的Prescott核心P4 CPU(含C D)为例。当31级中任一个出错的话,工作就需要重新进行,而其它需要得到这个相关这个工作的指令也很可能要重新执行,管线数目越多分支预测出错时所做成的牵连及延误就越大。因此通过增加管线来提升频率的同时能否从而提升性能,关键在于分支预测的准确度。要令Branch Prediction做得好是十分困难的,31级管线能否增加性能,就要看频率的增加所提高的性能能否消除分支预测错误所带来的负面影响。


长流水线第二个弊端是在于流水线内的单元很难被全部填满,因此硬件资源利用率比较低。因此Intel研制出超线程技术来提高流水线的利用率,但超线程技术也无法改变长流水线的弊端,同样采用NetBurst架构的的Prescott也存在这个问题,不过Intel采用两个措施来缓解这个问题,一是增加增大分支目标缓存以提高预测命中率,第二则是增加指令追踪缓存来降低预测失败造成的损失。


分支目标缓存用于存放流水线的分支预测的目标信息,同时还承担着指令编译和二级缓存分配等处理任务。分支缓存存储的数据量越大、提供的信息越多,分支预测的精度也越高。对于常规型处理器,如果出现分支预测错误,处理器就必须将整条流水线清空后从错误处开始执行,这对拥有超长管线的处理器而言是个致命的弊端,所以Intel使用指令追踪缓存来有效的解决问题,指令追踪缓存作用是在出现分支预测的时候能够迅速地定位到断点。Prescott的指令追踪缓存可存储16KμOps微操作指令和128KB数据(老P4为12KμOps微操作指令、80KB数据),虚拟地址追踪的数目增加到了4096条(老P4仅为2048条)。这就意味着在预测失败时,Prescott可以返回到更深层次的上级指令,可以说加强的分支预测能力在很大程度上弥补了过长流水线带来的性能损失。
GalGame专题视听体验艺术研讨站点GGM欢迎大家:
http://www.ggmix.com
GGM论坛:
http://www.ggmix.net/bbs/Boards.asp
TOP

回复:有关于世界上最可怕的事......(现已成为硬件讨论贴)[版主ps.帖子长且话题已转

以下引用MAGICWING在2004-7-25 19:57:57的发言:
现在CPU都是利用分支预测(Branch Prediction)来增加效率,但分支预测并不是100%完全正确。以最新最热门的Prescott核心P4 CPU(含C D)为例。当31级中任一个出错的话,工作就需要重新进行,而其它需要得到这个相关这个工作的指令也很可能要重新执行,管线数目越多分支预测出错时所做成的牵连及延误就越大。因此通过增加管线来提升频率的同时能否从而提升性能,关键在于分支预测的准确度。要令Branch Prediction做得好是十分困难的,31级管线能否增加性能,就要看频率的增加所提高的性能能否消除分支预测错误所带来的负面影响。


长流水线第二个弊端是在于流水线内的单元很难被全部填满,因此硬件资源利用率比较低。因此Intel研制出超线程技术来提高流水线的利用率,但超线程技术也无法改变长流水线的弊端,同样采用NetBurst架构的的Prescott也存在这个问题,不过Intel采用两个措施来缓解这个问题,一是增加增大分支目标缓存以提高预测命中率,第二则是增加指令追踪缓存来降低预测失败造成的损失。


分支目标缓存用于存放流水线的分支预测的目标信息,同时还承担着指令编译和二级缓存分配等处理任务。分支缓存存储的数据量越大、提供的信息越多,分支预测的精度也越高。对于常规型处理器,如果出现分支预测错误,处理器就必须将整条流水线清空后从错误处开始执行,这对拥有超长管线的处理器而言是个致命的弊端,所以Intel使用指令追踪缓存来有效的解决问题,指令追踪缓存作用是在出现分支预测的时候能够迅速地定位到断点。Prescott的指令追踪缓存可存储16KμOps微操作指令和128KB数据(老P4为12KμOps微操作指令、80KB数据),虚拟地址追踪的数目增加到了4096条(老P4仅为2048条)。这就意味着在预测失败时,Prescott可以返回到更深层次的上级指令,可以说加强的分支预测能力在很大程度上弥补了过长流水线带来的性能损失。


这个是介绍改善分支预测(Branch Prediction)中长流水线弊端的方案-指令追踪缓存?

文中31级綫是指?
老了…
不能每天爬KFC的高楼了…
upload/KFCFile4235_wing.jpg
天空…遥远的天空之梦
咳咳...年轻真好啊…
TOP

回复:有关于世界上最可怕的事......(现已成为硬件讨论贴)[版主ps.帖子长且话题已转

就是P4为了弥补单纯为了提高频率设计那长长长管线的弊端采取措施喽|||||||||||
AJI,舰狗
TOP

回复:有关于世界上最可怕的事......(现已成为硬件讨论贴)[版主ps.帖子长且话题已转

提高频率是需要较多的管线
但管线越多…任一出错(预测错误)就会影响效率(出错就要重新把指令重作)

因而创出两个应对方法
增大分支目标缓存以提高预测命中率
增加指令追踪缓存来降低预测失败造成的损失(读取指令的断点再行工作)

理解如此...

PS:31级管綫究竟是…?
老了…
不能每天爬KFC的高楼了…
upload/KFCFile4235_wing.jpg
天空…遥远的天空之梦
咳咳...年轻真好啊…
TOP

回复:有关于世界上最可怕的事......(现已成为硬件讨论贴)[版主ps.帖子长且话题已转

好专业哇~ 从可怕的事到CPU处理 这个变化真可怕(真是什么都能变)
TOP

回复:有关于世界上最可怕的事......(现已成为硬件讨论贴)[版主ps.帖子长且话题已转

答PS:CPU处理流水线的长度...
GalGame专题视听体验艺术研讨站点GGM欢迎大家:
http://www.ggmix.com
GGM论坛:
http://www.ggmix.net/bbs/Boards.asp
TOP