网站首页
本站精华
免费下载
游客:
注册
|
登录
|
会员
|
搜索
|
帮助
LoveUnix
»
AIX -IBM UNIX
» 技术分析:Power6与安腾走上了同一条道
‹‹ 上一主题
|
下一主题 ››
41
1/4
1
2
3
4
››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题:
[转贴]
技术分析:Power6与安腾走上了同一条道
本主题由 老农 于 2008-8-7 21:25 加入精华
colijia
LU幼天使
UID 107907
精华
1
积分 33
帖子 52
活跃指数 14
LU金币 154 个
LU金条 0 个
阅读权限 20
注册 2008-6-12
来自 石家庄
#1
大
中
小
使用道具
发表于 2008-8-6 12:48
资料
个人空间
短消息
加为好友
技术分析:Power6与安腾走上了同一条道
您现在的位置: IT专家网 > 服务器子站 > X86服务器
技术分析:Power6与安腾走上了同一条道
作者: 沈建苗, 出处:计算机世界, 责任编辑: 邵海宏, 2007-07-19 00:00
为了提高时钟频率,power6这个特立独行的架构改乱序执行为有序执行,终于走上了回归路。
从有序技术到乱序技术
直到大约15年前,大多数CPU一次只能处理一条指令。那时,如果采用流水线设计,譬如摩托罗拉68040或者英特尔80486,那么可以同时在不同执行阶段处理不同的指令。
到了1991年和1992年,出现了MIPS R4000、Alpha 21064和奔腾这些处理器,它们属于面向通用市场的第一批“超标量”处理器:每个CPU周期可以处理(读取、执行及退出)两条指令。
后来,1995年出现了Alpha 21264,我们就有了每个周期能处理四条指令的第一个CPU,时钟频率达到300MHz,这个速度在当时十分惊人。Alpha21664在微处理器论坛上一亮相,就引来了台下观众的一片赞叹,其中包括英特尔和IBM的设计者,更不用说Sun SPARC的设计者了。遗憾的是,Alpha最后没有成功。
不管怎样,这些厂商当时都采用了有条不紊的有序执行技术(In Order):程序指令在执行时,按顺序读取、执行及引退操作码,每次执行两条或者四条指令。
现在,不同指令需要不同的执行资源,而且程序流程往往是这样:执行需要等资源被释放出来,或者指令依赖性(dependency)得到解决,才能继续执行下一条指令。更糟的是,每出现新一代CPU,就需要重新编译代码,针对新CPU进行优化,不然读/写指令之间很可能会出现太多气泡(bubble)即空闲时间,导致性能提升幅度不大,与竞争产品相比优势也不大。
这时候,乱序执行(out of order execution)出场了。CPU硬件本身在读取指令后重新安排指令的执行顺序,根据现有资源情况,提供更多的执行单元、重新命名寄存器、处理好指令依赖性等等。所以,Pentium Pro和Alpha 21264之后的几乎所有新款CPU都是采用无序执行技术。
在多数情况下,乱序执行可以加快芯片的运行速度,有时候加速明显。21264的速度就是21164的将近两倍,而Pentium Pro的速度也比奔腾快了一大截。经过重大改进的最新MIPS架构R10000也采用了乱序执行。
从安腾到Power6
乱序执行一直发展良好,直到后来英特尔推出了一种全新的技术。意义重大的安腾处理器拥有真正独一无二的引擎,并使用了重要的显式并行指令计算(EPIC)技术。先不说安腾处理器的超过100种的指令格式组合、庞大的慢速寄存器组等,它实际上重新采用了有序执行技术。所以,编译器不得不完成所有工作,以确保执行单元始终处于忙碌状态。除了浮点处理密集型应用外,要做到这一点并非易事,只要看看安腾系统的基准测试结果就会明白。
在后续的发展中,安腾架构的这一做法从来没有变过。相反,Sun一度改用了富士通公司使用无序技术的SPARC64,而不是它自己的使用有序技术的UltraSPARC IV。其他的重要架构如x86则继续采用无序技术,使用了Core 2和K10等新引擎,并进一步改进了这种方案,以便充分利用每MHz。
如果你出于某种原因需要AIX,那么Power的重要性就不言而喻了。Power4和Power5都是高速、但复杂的采用乱序技术的RISC处理器,它结合了四路超标量执行机制和非常高的系统带宽。不过,Power6却回到了有序技术时代。原因何在?
一个答案就是,如果Power6的同步多线程效果好,那么对单一线程浪费执行资源就不用太担心:在这种情况下,只要同步运行两个线程就行。另外,为了进一步大幅提升性能,频率提高一倍、二级高速缓存增加一倍、缩短算术逻辑单元(ALU)的延迟等方面恐怕更关键。即使那样,浮点处理部件还会保留有一定的乱序执行功能——这是在通用处理器的浮点运算部分首次引入十进制浮点处理单元(FPU)。“同步双线程执行、负荷预测机制以及增强的数据和指令预取功能,提升了有序执行超标量核心的性能。”IBM是这么评价其新芯片的。
Power5+的五路无序执行被Power6的七路有序执行所取代,但即使如此,也有几个地方需要注意:Power5+一个线程每个周期最多只有五条指令,而Power6一个线程增加了二条指令,这对计算型线程和内存搜寻型线程组合来说更有优势。Power5+更关注内部资源,而Power6在大部分时候等待内存,所以每个周期两次操作完全够了。那么性能方面有什么提升呢?看一下基准测试specfp2006,频率为2.2GHz的Power5+在这方面能达到14.9,当然是在经过改动的Power5机器上实现的;而频率为4.7GHz的Power6能达到22.3,时钟频率提高了一倍多,性能提升却不到一半。
colijia
LU幼天使
UID 107907
精华
1
积分 33
帖子 52
活跃指数 14
LU金币 154 个
LU金条 0 个
阅读权限 20
注册 2008-6-12
来自 石家庄
#2
大
中
小
使用道具
发表于 2008-8-6 12:49
资料
个人空间
短消息
加为好友
第二页
所以,Power6的7.9亿个晶体管分布在尺寸比较大的341平方毫米上,超过了Barcelona/Agena的283平方毫米,仅比尺寸庞大的安腾小了一点,它确实大幅提升了性能,尽管没有了乱序技术。虽然高速缓存和内存带宽随着时钟频率的提高都水涨船高,但是仍然可以说,在时钟频率相同情况下,重新使用有序技术会在处理单线程任务时导致性能下降30%左右。
为此,我们不得不等待更新的Power6系统以及下一版本AIX在编译器方面的进展,以减少这种性能损耗。不过对Power6来说,采用有序技术确实明显提升了处理器的性能。安腾同样采用了有序技术,但是至少到现在还没有看到明显的成效。x86恐怕再也不会出现有序技术。
不过,处理器技术的发展一日千里,Power6设计者不会坐井观天。再过一段时间,英特尔公司的3.6GHz的Harpertown“Penryn”和AMD公司3GHz Barcelona处理器就会陆续面世,都会对IBM Power6构成重大挑战。IBM必须牢记: 对采用有序技术的这类处理器而言,随着每一代后续CPU的问世,在编译器方面需要做的工作更多。同时,并不是每个人都会有时间重新编译自己的应用程序。
johnny2010
技术专家
UID 476
精华
14
积分 2398
帖子 4136
活跃指数 750
LU金币 2738 个
LU金条 12388 个
阅读权限 200
注册 2003-10-14
#3
大
中
小
使用道具
发表于 2008-8-6 13:02
资料
个人空间
短消息
加为好友
你是不是觉得ibm设计chips的技术人员是傻瓜。没有得到ibm的一些核心芯片制造技术的支持,intel没有今天。amd年初的震荡,你是否知道。任何高新技术可靠性是最重要的东西,没有厂商能承受产品线出现重大失误。
[
本帖最后由 johnny2010 于 2008-8-6 13:07 编辑
]
skyping
LU天使
UID 87226
精华
1
积分 549
帖子 1026
活跃指数 36
LU金币 916 个
LU金条 0 个
阅读权限 80
注册 2007-3-28
#4
大
中
小
使用道具
发表于 2008-8-6 13:09
资料
个人空间
短消息
加为好友
很好的文章
雁过留声,人过留毛!
命由天定,运有自转!
colijia
LU幼天使
UID 107907
精华
1
积分 33
帖子 52
活跃指数 14
LU金币 154 个
LU金条 0 个
阅读权限 20
注册 2008-6-12
来自 石家庄
#5
大
中
小
使用道具
发表于 2008-8-6 13:16
资料
个人空间
短消息
加为好友
回复 #3 johnny2010 的帖子
呵呵,老大,我十分的佩服IBM的芯片设计人员,是从心底里佩服的.我又看了看这篇文章,你说的对,IBM在设计芯片的时候绝对不会这么大意的,IBM用这种指令处理技术肯定有IBM的用意的,而且可以这么说这个技术不是Power6的缺点,我刚开始的认为有点太不周密了. 我向你道歉.你也解开了我心理的一个疙瘩,一直以来我都以为这是Power 6的缺点呢.
yurual
(拉风小鱼翅)
技术专家
UID 36475
精华
2
积分 856
帖子 954
活跃指数 45
LU金币 2998 个
LU金条 0 个
阅读权限 200
注册 2005-11-14
来自 shanghai
#6
大
中
小
使用道具
发表于 2008-8-6 13:34
资料
个人空间
短消息
加为好友
看过这篇文章的全文,说着说着市场老大power成了孤家寡人
感觉像是hp sales写的枪文
Symmetrix
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
colijia
LU幼天使
UID 107907
精华
1
积分 33
帖子 52
活跃指数 14
LU金币 154 个
LU金条 0 个
阅读权限 20
注册 2008-6-12
来自 石家庄
#7
大
中
小
使用道具
发表于 2008-8-6 15:11
资料
个人空间
短消息
加为好友
回复 #6 yurual 的帖子
细看看,是有道理的,以后我就认准Power 了.呵呵.
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
daaxiang
LU幼天使
UID 35123
精华
1
积分 141
帖子 230
活跃指数 32
LU金币 2391 个
LU金条 0 个
阅读权限 20
注册 2005-10-6
#8
大
中
小
使用道具
发表于 2008-8-6 15:20
资料
个人空间
短消息
加为好友
学习了
*****************
日×回×五×帖
*****************
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
shala
技术专家
UID 19911
精华
5
积分 1233
帖子 2289
活跃指数 80
LU金币 1253 个
LU金条 37862 个
阅读权限 200
注册 2004-5-5
#9
大
中
小
使用道具
发表于 2008-8-6 15:21
资料
个人空间
短消息
加为好友
说明了一点IBM在有序执行上有了重大突破
http://shala.unixblog.net
沙拉◎为TH而奋斗
http://shala.loveunix.cn
------------
大老婆唠唠叨叨,小老婆叽叽喳喳,情况却一声不吭....烦啊,二房的感觉遥遥无期。
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
lj_cd
(蓝色竹叶)
LU天使
UID 42317
精华
4
积分 757
帖子 1366
活跃指数 88
LU金币 1832 个
LU金条 0 个
阅读权限 80
注册 2006-3-13
来自 sz
#10
大
中
小
使用道具
发表于 2008-8-6 15:54
资料
个人空间
短消息
加为好友
分久必合,合久必分。技术的发展总是忽左忽右,螺旋上升的。
orian
(x40)
版主
UID 18050
精华
27
积分 2550
帖子 4512
活跃指数 353
LU金币 5792 个
LU金条 251 个
阅读权限 210
注册 2004-4-14
来自 海上
#11
大
中
小
使用道具
发表于 2008-8-6 19:10
资料
个人空间
短消息
加为好友
有序执行,乱序执行各有优缺点,有序,cpu简单,主频高,稳定性好;乱序,cpu相对复杂,主频做不上去,稳定性差
谁能在自己的道路上做好,都不错。有序和乱序,我觉得是延续risc, cisc之争
垃圾猪 Orian
mail&msn://ensighine(at)yahoo.com
请访问垃圾猪的垃圾堆:
http://ensighine.spaces.live.com/
文明的曙光
sinister
技术专家
UID 36664
精华
14
积分 348
帖子 385
活跃指数 312
LU金币 2030 个
LU金条 0 个
阅读权限 200
注册 2005-11-17
#12
大
中
小
使用道具
发表于 2008-8-6 21:06
资料
个人空间
主页
短消息
加为好友
乱序也分读/写,在 x86 这种体系下只有”读乱顺“,而没有”写乱序“,在 x86 下写是严格顺
序的。这也给在 x86 平台上做开发的人大大的提供了方便,此类工作都是 CPU 帮你避免了。
而在其他 RISC 平台上的开发就没那么幸运了,这些问题必须你来考虑。
顺/乱续执行这种问题,先不提及其他,即便是在面向编程人员时,要想一两句话说清楚都是
非常困难的。当然这里不包括那些纯粹的高级语言,不涉及底层等低级操作没有这些概念。
这里举几个简单的例子。首先看下编译器的乱序(姑且先这么叫),现代编译器通常会
充分利用该体系 CPU 的乱序功能来进行优化。在编程中定义一个变量时,如果不想让编译
器对其进行乱序优化可以使用 volatile 关键字。如: volatile int *p1; 这样则基本上可以保证
编译出的代码没有对其进行乱序处理。可以反汇编验证如下代码的区别。
int *p1;
volatile int *p1 //以不同方式定义 p1;
int *p2;
......// 略掉一系列为 p1,p2 分配内存等操作。
*p1 = 1;
*p1 = 2;
*p2 = *p1;
但这仅是保证编译出来的代码不会乱序,并无法保证执行时的乱序。见如下代码:
typedef struct tag_barrier{
int n1;
int n2;
}barrier;
barrier mybarrier;
mybarrier.n1 = 0;
mybarrier.n2 = 1;
......
......
CPU 的乱序预测很可能会先执行 n2 = 1。然后再执行 n1 = 0; 如果你的代码是要根据前一
条指令的结果来决定后一条指令,那么这样编写就很有可能出现问题。不过要强调的是,
如果写成这样
mybarrier.n1 = 0;
mybarrier.n2 = mybarrier.n1;
那么 CPU 是的乱序执行是不会先执行后一条指令的。说白了就是在 CPU 看来两个不相关的
变量地址读/写会预测乱序执行。为了保证代码不乱序执行提出了一种叫做 "memory barrier"
内存屏障的概念。也就是在你的代码中要显示的加入一些函数来保证执行时的顺序。此类函
数最终是与体系相关的,在不同平台上所用的汇编指令不同。如 POWER PC AIX 上的
"memory barrier" 则是由 sync, eieio, lwsync 等指令实现的。
关于何时加,怎样加的问题,不是几个帖子能说清的,这里就不再继续了。
没有道德现象,只有现象的道德解释。
41
1/4
1
2
3
4
››
投票
交易
悬赏
活动
LoveUnix
专项技术区
> AIX -IBM UNIX
> 其他UNIX & Linux
> i5 (AS400) & IBM大机
> PC Server & HPC
> 存储设备
> 备份软件
> 网络 & 安全
> 编程开发 & Rational
> DB2 & Informix
> ORACLE等数据库
> 中间件技术
行业综合区
> 职业咨询 前程无忧
> 培训认证 行业入门
> 行业应用 项目实施
> 产品信息 商务交流
> Free download下载
交流灌水区
> 蓝色太平洋
> 墨香雅韵
> 论坛建设
> 博客专区
当前时区 GMT+8, 现在时间是 2008-12-1 22:51
乐悠LoveUnix论坛-京ICP备05005823号
Thanks to
Discuz!
© 2001-2007 Power by
LoveUnix.net
Processed in 0.099161 second(s), 7 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
乐悠LoveUnix
-
Archiver
界面风格
----------
Discuz! 5 Default
新DISCUZ风格
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计