(计算机系统结构专业论文)高性能通用处理器中浮点乘加部件的设计.pdf_第1页
(计算机系统结构专业论文)高性能通用处理器中浮点乘加部件的设计.pdf_第2页
(计算机系统结构专业论文)高性能通用处理器中浮点乘加部件的设计.pdf_第3页
(计算机系统结构专业论文)高性能通用处理器中浮点乘加部件的设计.pdf_第4页
(计算机系统结构专业论文)高性能通用处理器中浮点乘加部件的设计.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

(计算机系统结构专业论文)高性能通用处理器中浮点乘加部件的设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高性能通用处理器中浮点乘加部件的设计: 摘要 摘要 随着集成电路集成密度的持续提高和成本的不断降低,单一芯片内能够集成 更多的器件,采用更复杂的结构,完成更强大的功能。 浮点运算能力是考察一款通用处理器性能的重要指标之一。浮点乘加部件作 为一种功能强大且用途广泛的运算部件,可以显著提高处理器的浮点运算能力。 这一点已被多款商用的通用处理器所证明因此,高性能通用处理器有必要增加 浮点乘加部件 浮点乘加部件的优点包括:速度快,精度高,能够降低对总线带宽的需求, 减少读写寄存器堆的压力,提高指令吞吐率等。此外,浮点乘加部件能够执行单 独的乘法和加法指令,还能够在软件控制下进行除法、开根运算,实现基本函数 功能。 传统的浮点乘加部件采用“乘法一加法一规格化一舍入”的结构与此不同, 本文采用更为先进的浮点乘加部件结构,即“乘法一规格化一加法并舍入”,有 效降低了延时,性能更为突出。缺点是付出了较大的面积代价。 前导1 预测( l o p ) 是浮点乘加部件设计的关键算法之一。浮点乘加部件需 要实现3 个操作数的前导l 预测电路,传统的l o p 算法不能直接处理3 个操作 数,通过问接方法实现又会增加关键路径延时并增大电路面积。针对这一局限, 本文提出了三个操作数的前导l 预测算法,进行了理论推导和实验比较,可以 有效缩短前导l 预测电路的延时并减少面积,从而缩短整个乘加部件的延时。 通过浮点乘加部件执行乘加、乘法、加法的延时都是一样的,这可能会造 成某些应用下乘加部件的性能反而不如乘法器和加法器的情况乘法加法旁 路技术可以改变这种情况,将浮点乘加部件执行乘法j a 法的时问有效降低, 从而提高浮点乘加部件的总体浮点性能。 关键词:乘加部件,前导1 预测,3 操作数前导1 预测,乘法旁路,加法旁路 双通路 高性能通用处理器中浮点乘加部件的设计; a b s t r a c t t h e d e s i g no ff l o a t i n g - p o i n tm u l t i p l y a d df u s e du n i t si ng e n e r a lp u r p o s e p r o c e s s o r s x i a o l um e i ( c o m p u t e ra r c h i t e c t u r e ) d i r e c t e db yp r o f z h i m i nt a n g w i t hd e v e l o p m e n to fv l s it e c h n o l o g y , t h ed e n s i t yo fas i n g l ec h i pi si n c r e a s i n g a n dt h ec o s to fc h i p si sr e d u c e dc o n t i n u o u s l y s o m o d e mp r o c e s s o r sh a v et h ea b i l i t y t oi n t e g r a t em o r ea n dm o r ed e v i c e s ,h a v em o r ec o m p l e xa r c h i t e c t u r e sa n dp e r f o r m m o r ep o w e r f u l l y f l o a t i n g p o i n tp e r f o r m a n c ei sa ni m p o r t a n tm e a s u r e m e n tf o rg e n e r a lp u r p o s e p r o c e s s o r s f l o a t i n g - p o i n tm u l t i p l y - a d df u s e d ( f m a nu n i tc a r lp r o m i n e n t l yi m p r o v e t h ef l o a t i n g - p o i n tp e r f o r m a n c eo fm i c r o p r o c e s s o r s , w h i c hi sp r o v e db ys e v e r a lr e c e n t c o m m e r c i a lp r o c e s s o r s a sa r e s u l t ,h i g h p e r f o r m a n c e ,g e n e r a lp u r p o s ep r o c e s s o rh a s ar e q u i r e m e n tf o rt h ef m a fu n i t 1 1 1 ea d v a n t a g e so ff m a fu n i ti n c l u d el o wl a t e n c ya n dm o r ep r e c i s i o nt h a n i n d i v i d u a lm u l t i p l ya n da d di n s t r u c t i o n ,t h el o wr e q u e s tf o rb u sb a n d w i d t h t h e r e d u c t i o no ft h er e g i s t e rf i l ep r e s s u r e t h ei n c r e m e n to fi n s t r u c t i o n st h r o u g h p u t t h e f m a fu n i tc a na l s op e r f o r mi n d i v i d u a lm u l t i p l yo ra d di n s t m c t i o nb ys e to n e o p e r a t i o nt ob el o r0 m o r e o v e r , t h ef m a fu n i th a v et h ea b i l i t yt oi m p l e m e n t d i v i s i o na n ds q u a r er o o ta n dc o m p u t et r a n s c e n d e n t a lf u n c t i o n sb ys o f t w a r e t h es t r u c t u r eo ft r a d i t i o n a lf m a fi s “m u l t i p l y a d d n o r m a l i z e r o u n d d i f 凳r e n tf r o mt r a d i t i o n a io n e t h ep r o p o s e df m a fs t r u c t u r ei s “m u l t i p l y n o r m a l i z e a d da n dr o u n d ”w h i c hr e d u c e st h ec r i t i c a lp a t hd e l a ya n dg r e a t l yi m p r o v e st h e f l o a t i n g - p o i n tp e r f o r m a n c e n ed i s a d v a n t a g eo ft h i ss t r u c t u r ei st h a ti tn e e d sm o r e d e v i c e sa n dt h eh a r d w a r ec o s ti sh i g h e rt h a nt r a d i t i o n a lo n e l e a d i n g o n ep r e d i c t i o n ( l o p , o rn a m e dl z af o rt h es h o r to fl e a d i n g z e r o a n t i c i p a t e li sak e yl o g i ci nt h ed e s i g no ff m a fu n i t t h ef m a fu n i tn e e d sal o p c i r c u i tt od e a l 、v i t l l3o p e r a n d s h o w e v e r , t h et r a d i t i o n a ll o pa r i t h m e t i cc a nn o td e a l t i l3o p e r a n d sd i r e c t l y m i l e i na ni n d i r e c tw a y , t h et r a d i t i o n a ll o pa r i t h m e t i cw i l l i n c r e a s et h ed e l a yo f t h ec r i t i c a lp a t ha n de n l a r g et h ec i r c u i ta r e a t h ep a p e rd e s c r i b e s t h ed e s i g no fa3 - o p e r a n dl e a d i n g o n ep r e d i c t i o n ( l o p ) l o g i c i tc a l l e f f e c t i v e l y r e d u c et h ec r i t i c a lp a t hd e l a ya n da r e ai nl o pc i r c u i t t h r o e l g ht h ef m a fu n i t ,t h el a t e n c yo f m u l t i p l y - a d d ,m u l t i p l y ,a d do p e r a t i o n sa r e a l lt h es a m e i t sp o s s i b l et h a tf o rs o m es p e c i a la p p l i c a t i o n st h ep e r f o r m a n c eo f f m a f u n i ti sl o w e rt h a nt h eo n eo ff a d du n i ta n df m u lu n i t t h em u l t i p l i c a t i o n a d d i t i o n b y p a s st e c h n o l o g yc a l la v o i dt h e s ec a s e s 1 1 1 em u l t i p l i c a t i o n a d d i t i o nb y p a s sc a n r e d u c et h el a t e n c yo ff l o a t i n g - p o i n tm u l t i p l i c a t i o n a d d i t i o ne f f e c t i v e l yt h r o u g ht h e f m a fu n i t w i t ht h e s et e c h n o l o g i e s 。t h eo v e r a l lf l o a t i n g - p o i n tp e r f o r m a n c eo fo u r c p uc a nb eg r e a t l yi m p r o v e d k e y w o r d s :m u l t i p l y - a d df u s e d ,m u l t i p l ya c c u m u l a t e ,l e a d i n g o n ep r e d i c t i o n , 3 - o p e r a n dl e a d i n g o n ep r e d i c t i o n ,m u l t i p l i c a t i o nb y p a s s ,a d d i t i o nb y p a s s , d o u b l e d a t a p a t h i i 声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得 的研究成果。就我所知,除了文中特别加以标注和致谢的地方外,论文中 不包含其他人已经发表或撰写过的研究成果。与我一同工作的同志对本研 究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 作者签名:才刍j 、:露 日期:力。,6 6 关于论文使用授权的说明 中国科学院计算技术研究所有权处理、保留送交论文的复印件,允许 论文被查阅和借阅;并可以公布论文的全部或部分内容,可以采用影印、 缩印或其它复制手段保存该论文。 储鹳鹕小孙师签炒一“ 1 1 乘加部件的提出 第一章浮点乘加部件概述 集成电路的集成密度和成本在过去的2 0 多年问发生了革命性的变化。芯片 的集成度始终按照莫尔定律( m o o r et a w ) 预测的速度发展,即单个芯片上集成 的晶体管数目随时问按指数规律增长,大约每三年翻两番。同时,随着c m o s 工艺尺寸的不断降低,单位数量晶体管的制造成本也在不断降低这些发展趋势 使得通用处理器可以采用更复杂的体系结构结构、集成更多的功能部件 典型的通用处理器的功能部件包括整数加法、乘法、除法和开根部件,浮点 加法、乘法,除法和开根部件,以及完成比较( c o m p a r e ) 、移动( m o v e ) ,转换 ( c o n v e r t ,整数转浮点数,浮点数转整数) 功能的其他部件等。然而,已有的功 能部件并不能很好地满足大规模科学计算和工程计算问题对处理器浮点运算能 力的要求,迫切需要一类更加强大的功能部件。 应用程序是衡量通用处理器性能的最好标准。人们通常采用s p e c 作为测试 程序,它是一组被广泛采用的测试处理器性能的基准程序,由若干应用程序组成, 涵盖了操作系统、科学计算、工程应用等许多领域,分为整数测试程序和浮点测 试程序两部分,分别得到整数性能指标s p e c i n t 和浮点性能指标s v e c f p 。在文 章【1 1 中1 9 9 7 年o b e r m a n 研究了s p e c 9 2 中的各个浮点应用程序( 1 4 个) ,得出 各种浮点指令( 包括加法、减法、乘法、除法以及开根等) 占所有浮点指令的百 分比,如图1 1 所示( s p e c 9 2 中的各个应用程序编译时都采用0 3 的优化选项) 紊4 0 o g 薹 五3 0 0 艮2 0 0 ( i vs q r tm u la d ds u b a d sm o ve v t d n a gc , v t w 图1 1 浮点指令的分布图 中国科学院硕士论文高性能通用处理器中浮点乘加部件的设计 在图1 1 中,浮点加法指令包括a d d ,s u b ,m o v e ,c o n v e r t 指令,浮点加法 指令大约占所有浮点指令的5 5 ,浮点乘法大约占3 7 。通过研究浮点基准测 试程序,我们发现大量的浮点加法和乘法指令出现在矩阵运算中,最频繁的矩阵 运算是矩阵相乘或向量相乘( 点积) ,归结起来就是计算内积( 见书【2 j ) , c i 口i b l + 口2 。b 2 + + 口4 玩 在计算内积的过程中,大量的浮点乘法和浮点加法是交叠的( i n t e r l e a v e d ) , 即相邻的乘法和加法指令具有数据依赖关系如果将具有依赖关系的浮点乘法和 加法合并成一条运算指令,使用一个功能部件计算,经过一个始终周期得到结果, 那么将会有效降低浮点运算的执行时问,显著提升通用处理器的浮点运算性能。 根据这一启发,l b mr i s cs y s t e m 6 0 0 0 提供一条指令计算a b + c ,称为联合的 乘加操作( f u s e dm u l t i p l y a d d ) 或乘加联合操作( m u l t i p l y a d df u s e d ) 。 按照【3 1 中的规定,乘加联合( 缩写为m a f ) 操作定义为执行x := a b + c 的 操作,将寄存器a 与寄存器b 的值相乘,乘积与寄存器c 的值相加,结果写到寄 存器x 中。整个操作只进行一次舍入,中间结果既不舍入,也不写回寄存器。 完成乘加联合操作的运算部件称为乘加联合部件,分为整数( f i x p o i n t ) 和 浮点( f l o a t i n g - p o i n t ) 两类,本文重点放在浮点乘加联合部件上。图1 2 是实现 浮点乘加联合部件的典型结构。 2 s ca b r e s u l t 图1 2 典型的浮点乘加联合部件的设计结构 另一种功能类似的运算称为乘累加( m u l t i p l y a c c u m u l a t e ,缩写为m a c ) 操 第一蕈浮占乘加部件概述 作,它将寄存器a 与寄存器b 的值相乘,乘积与寄存器s 的值相加,结果写回到 寄存器s 中,即 s := a + b + s 乘累加部件与乘加联合部件最大的不同在于,前者需要3 个操作数而后者需 要4 个。 在本文中我们约定,以乘加操作作为乘加联合操作( m a f ) 和乘累加操作 ( m a c ) 的统称,除非特别指明乘加联合操作或者乘累加操作 浮点乘加操作作为科学计算和工程应用程序的一项基本操作,可以显著提升 通用处理器的浮点运算能力目前已有大量的通用处理器使用浮点乘加部件,如 i n t e l 的l t a n i u m ,i b m 的r l s cs y s t e m 6 0 0 0 ,p o w e r 系列( p o w e r 2 ,p o w e r 3 , p o w e r 4 ) 和p o w e r p c6 0 3 e ,p o w e r p c6 0 4 e ,m i p s 的r 8 0 0 0 ,r 1 0 0 0 0 ,h p 的 p a - r i s c 等等。 在图形处理( g r a p h i c s p r o c e s s i n g ) 丰1 1 数字信号处理( d i g i t a ls i g n a lp r o c e s s i n g ) 等领域,大量的浮点计算都可以归结为浮点乘加操作许多图形处理器( g p u , g r a p h i c s p r o c e s s i n g u n i t ) 和数字信号处理器( d 洒t a l s i g n a l p r o c e s s o r ) 也采用浮 点乘加部件来提高浮点运算能力,如h i t a c h i 的s h 4 和s o n y 的e m o t i o ne n 【g i n ef o r p l a y s t a t i o n2 都含有浮点乘加部件以加速3 d 图像处理。我们将在第二章展开详 细叙述 此外,一些嵌入式处理器和i pc o r e 也提供浮点乘加功能,如a r m 7 和s l e ( s i l i c o nl o g i ce n g i n e e r i n g ) 公司的f l o a t i n g - p o i n tm u l t i p l ya c c u m u l a t eu n i t 。 1 2 采用浮点乘加部件的意义 浮点乘加部件是针对矩阵相乘,向量点乘( d o tp r o d u c t ) ,多项式求值等操作 的需求而产生的。浮点乘加部件精确地计算a ,b + c ,然后进行舍入。整个乘加过 程只有一次舍入,中问结果( 乘积) 不进行舍入。 舍入一次有两个优点:第一,实现舍入要花很大代价,因为可能需要一次加 法。通过只舍入一次,可以取消一次加法操作,使乘加部件的延时低于顺序执行 乘法和加法的总延时第二,乘加操作的附加精度可以用于正确计算与舍入除法、 开平方根等操作,而这些额外的精度是不可能用硬件实现的。浮点乘加还可以用 于实现浮点多精度软件包。我们将在以下- - d , 节详细介绍。 1 2 1 浮点乘加部件的应用需求 科学和工程计算( s c i e n t i f i c e n g i n e e r i n g c o m p u t i n g ) 等应用中大量使用到矩 阵相乘,向量点乘( d o tp r o d u o ) ,多项式求值等复杂而又耗时的浮点运算。矩阵 相乘和向量点乘都可以归结为内积运算,表示如下 两个n 位向量( 4 1 ,口2 7 ,q ) 和慨,屯,吒) 的点积c 净i 吼+ 口2 b 2 + + 口l 瓯 内积通常按照如下序列顺序计算: 5 1 :| o l b l & 1 s t - l4 - a i b k ,f o r k l 3 中国科学院硕士论文一高性能通用处理器中浮点乘加部件的设计 5 就是向量a 和b 的内积。因此,n 位的内积运算可以分解为( n 1 ) 个乘 加操作。 多项式求值一般按照h o m o r sr u l e 计算,衷示如下: 通过顺序计算 晶一1 | a p l + a 善 毛:篁a i + 工s i “i = 0 1,n 2 即可得到多项式的值如。因此,r l 阶多项式求值可以分解为n 个乘加操作。 以上这些操作大量出现在浮点运算当中,通过采用浮点乘加部件,可以显著 加速此类运算,减少计算时间( 见论文【4 】) 。 1 2 2 浮点乘加部件的优点之一:速度快,精度高 浮点乘加部件将乘法和加法合并在一起,中间结果不舍入,其延时低于顺序 执行乘法和加法的总延时此外,由于乘加操作只进行一次舍入操作,结果的精 度要高于先乘法再加法产生的结果。以r o u n dt o n e a r e s t 为例,使用乘法指令和加 法指令产生的舍入误差如下: ( 仁6 l + c ) ,。篁( 口:b - ( 1 + 毛) + c ) ( 1 + e :) ,f 毛i c 2 ”,l s :i c 2 ” 其中n 是操作数的有效位宽度。 浮点乘加部件产生的舍入误差如下: ( 口缶+ c l 暑a 6 + c ) ( 1 + ) ,h 0 脚标r n 表示舍入模式为r o u n dt on e a r e s t 。一旦y 达到了精度要求,q := a y 即为a ,b 的值,按照除法所需的舍入模式对q 舍入即可: ( a b 乙;( q 乙 “r n d ”表示用户指定的除法舍入模式 以上浮点除法( 开根类似) 正好可以利用浮点乘加操作精度高的特性。以下 使用i a - 6 4 指令举一个实现双精度浮点除法的例子 1 y o = 1 b ( 1 + o ) ,2 一,m = 8 8 8 6 2 q ot ( 口_ ) ,o l a b ( 1 + o ) 3 e ot 【1 一b y o l - 一o 4 y l 一( y o + p o ) ,o l - v b q 一0 2 ) 5 q l 一( q o + e o q o ls a b u 一0 2j 6 q = p ;l 一; 7 y :一( ) ,+ 巳) ,。l 一班o - e :) 8 q 2 一( q ,+ 巳吼l - a b o - e :j 9 e 2 一k l 一; 1 0 y ,- 【y 2 + e 2 y 2 ) l 一6 【1 一:j 1 1 q ,一( q 2 + e 2 碍2 l - a b 妊一:j 6 第一荜浮点乘加部件概述 1 2 r 0 一( 口- b q ,l 一4 : , 一、 1 3 q 4 - k 3 + 厂o 叮3j r ,d ;b 1 1 一rj 以上除了1 1 ,1 2 ,1 3 步将结果存储在双精度寄存器中,其他步骤都使用双精 度扩展寄存器。 i a 6 4i s a 6 p 提供一条指令f r c p a ,功能足从查找表中给出输入操作数的倒数的 近似值。浮点除法的第一步是调用指令f r c p a 从查找表哩查到1 b 的初始值,赋给 y 0 ,误差范围亦可确定,m = 8 8 8 6 。步骤3 与4 ,6 与7 ,9 与l o 代表三次迭代,精度 逐渐提高。步骤1 3 是按照指定的除法舍入模式m d 对结果舍入算法中出现了7 个 乘加操作,需要7 条乘加指令。构成关键路径的只有7 条指令,因为指令2 与3 ,4 、 5 与6 ,7 、8 与9 ,1 0 与1 1 都可以并行执行 用汇编语言实现的程序如下,a 存储在寄存器f 6 中,b 存储在寄存器f 7 中: ( 1 ) f r c p a s of 8 p 6 = f 6 f 7 ;y o = l i bi nf 8 ( 2 ) ( p 6 ) f m a s lf g = f 6 ,f 8 ,f o q o = a + y oi nf 9 ( 3 ) ( p 6 ) f n m a s lf l o = f 7 ,f 8 ,f l ;e o = 1 一b * y oi nf l o 4 ) ( p 6 ) f m a s lf s = f l o ,f 8 ,f 8y l = y o + e o y oi nf 8 ( 5 ) ( p 6 ) f m a s lf g = f l o ,f 9 ,f 9q l = q o + e o q oi nf 9 ( 6 ) ( p 6 ) f m a s lf l l = f l o f l o ,f o ;ie l = e o + e oi nf 1 1 1 7 ) ( p 6 ) f m a s lf s = f 1 1 ,f 8 ,f 8y 2 = y l + e l y li nf 8 ( 8 l ( p 6 ) f m a s 1f g = f l l ,f 9 ,f 9q 2 = q l + e 1 q li nf 9 ( 9 ) ( p 6 ) f m a s 1f l o = f 1 1 ,f 1 1 ,f o ;e 2 = e l e li nf l o ( 1 0 ) ( p 6 ) f m a s lf s = f l o ,f 8 ,f 8y 3 = y 2 + e 2 y 2i nf 8 ( 1 1 ) ( p 6 ) f m a d s 1f g = f l o ,f 9 ,f 9 ;q 3 = q 2 + e 2 + q 2 1 nf 9 ( 1 2 ) ( p 6 ) f n m a d s lf 6 = f 7 ,f 9 ,f 6 ;r o = a b + q 3i nf 6 ( 1 3 ) ( p 6 ) f m a d s of s = f 6 ,f 8 ,f 9 ;q 4 = q 3 + r o y 3i nf 8 注意第一条指令f r c p a q b 的谓词p 6 断言( p r e d i c a t e ) 随后的所有指令f t c p a 的 输出寄存器必须与最后一条指令的输出寄存器一致,因为一旦f k p a 遭遇例外情 况,譬如除零,例外程序( e x c e p t i o nh a n d l e r ) 将会给出除法的结果,并且清除 谓词p 6 ,使得指令2 到指令1 3 都不会被执行,但除法的结果还是给出的。另外, 第一条指令与最后一条指令使用用户状态域( u s e rs t a t u sf i e l d ) s f 0 ,对可能发生 的例外作出反应,而中间的指令都使用状态域s f l ,这样使得除法操作象一条原 子操作一样,符合i e e e - 7 5 4 标准。以上程序可以正确设置所有浮点例外形成的状 态标记,包括无效操作( i n v a l i do p e r a t i o n ) ,非规格化数( d e n o r m a lo p e m n d ) , 除零( d i v i d e b y z e r o ) ,上溢( o v e r f l o w ) ,下溢( u n d e r f l o w ) 以及结果不精确 ( i n e x a c tr e s u l t ) 在i a - 6 4 中处理浮点开根与除法类似,不再赘述整数除法、求余数和开根 操作也都通过浮点乘加部件实现,详情参见论文1 1 1 】。 除此之外,许多基本函数( e l e m e n tf u n c t i o n ) 都可以采用浮点乘加部件通过 软件实现,有助于加速执行时间详情参见论文1 1 2 1 ,【1 3 l 和1 1 4 1 。 1 3 论文的基本架构 本文主要涉及通用处理器中浮点乘加联合部件的设计。乘加部件分为两种: 7 中国科学院硕士论芄一商性能通用处理器中浮点乘加部件的设计 乘加联合部件( m u l t i p l y a d df u s e d ,m a f ) ,乘累加部件( m u l t i p l y a c c u m u l a t e , m a c ) 。按照操作数的不同又可以分为整数乘加部件和浮点乘加部件,设计结构 大不相同。论文的所有工作都围绕为高性能通用处理器设计高性能的浮点乘加联 合部件( f l o a t i n g - p o i n t m u l t i p l y - a d d f u s e d ,f m a f ) 而展开,对乘累加部件( m a c ) 和整数乘加部件做了简单的介绍,目的是与浮点乘加联合部件的设计结构做对 比。论文关注的重点足浮点乘加联合部件的设计结构,以及3 个操作数的前导l 直接预测算法的实现。 为此目的,本文研究了目前主流处理器所采用的浮点乘加部件设计结构,基 于到目前为止最快的m a f 结构进行了修改,提出了改进的浮点乘加部件结构, 并就三操作数前导1 预测算法和乘法加法旁路技术进行了较为深入的研究。 论文的第一章给出了乘加部件的定义,介绍了设计乘加部件的动机,详细说 明了浮点乘加部件带来的好处,包括:速度快,精度高,可以单独执行加法和乘 法,减少对总线带宽的需求,降低读写寄存器堆的压力,提高指令吞吐率以及改 善编译器的优化调度能力。本章最后以i n t e ll t a n i u m 为例,介绍了通过软件的方 法如何将浮点除法、开根及基本函数功能调度为浮点乘加指令序列。 第二章讲述了目前整数和浮点乘加部件的研究焦点及其在设计上面临的挑 战,然后介绍了乘加部件在通用处理器、数字信号处理和图像处理领域的研究现 状和,在商用处理器上的使用情况,侧重于介绍各款通用处理器浮点乘加部件的 特点及功能上的差异。研究d s p 和图像处理领域主要是为了借鉴其他设计的优 点本章重点介绍了i b mr s 6 0 0 0 采用浮点乘加部件后运算能力的提升,并且 比较了r s 6 0 0 0 与同时代的其他处理器的性能,还有i n t e li t a n i u m 通过浮点寄存 器复用让浮点乘加部件实现整数乘加功能。 第三章提出了改进的浮点乘加部件的设计结构。首先介绍了三种具有代表性 的浮点乘加部件( i b mr s 6 0 0 0 ,p o w e r p c6 0 3 e & 6 0 4 e ,t h o m a s l a n g 结构) 的设计结构以及彼此的差别,在此基础上提出了浮点乘加部件应该采用的结构, 详细说明了各个模块的功能、实现途径,虽后讨论了例外处理。 第四章在具体分析本文浮点乘加部件的特点之后,提出了3 个操作数时的前 导l 预测算法,进行了理论推导。通过实验得出如下结论:在浮点乘加部件这个 特定应用下,三操作数前导l 预测算法的延时和面积均优于已有的l o p 算法,3 操作数前导1 预测电路比2 操作数前导1 预测电路在关键路径上的延时降低了约 1 6 6 7 ,前导1 预测电路的面积减少了约1 9 6 3 。 第六章给出了优化浮点乘加部件的三种可行的方案,包括乘法旁路,加法旁 路,以及采用新的4 :2c a r r ys a v ea d d e r ( 4 :2 保留进位加法器,简称4 :2c s a ) 结构替代现有的4 :2c s a 。通过附加额外的加法器和舍入逻辑,f m a f 苗i 以实现 对浮点乘法的b y p a s s ,乘法执行时间为4 个时钟周期。通过采用双通路结构, f m a f 能够实现对浮点加法的b y p a s s ,加法执行时间为3 个时钟周期。并且,采 用两种b y p a s s 通路后,f m a f 执行乘加的时间没有增大,仍然为5 个时钟周期。 目前数据通路中的3 :2 c s a 采用定制的标准单元,4 :2 。c s a 由3 :2 c s a 搭建而成, 4 :2c s a 仍有优化的空问。采用本章介绍的方法设计4 :2c s a ,能够降低器件的 延时和功耗,是一种有益的尝试。 第五章是整个论文的总结和今后的工作 8 r 第二章乘加部件的研究现状和使用情况 乘加操作按照操作数的数目分为乘加( m u l t i p l y - a d df u s e d ,m a f ) 和乘累加 ( m u l t i p l y - a c c u m u l a t e ,m a c ) ,按照操作数格式分为整数乘加和浮点乘加乘 加部件在通用处理器,d s p ,图形处理等方面都有着广泛的应用。按照分类的不 用,应用领域也不相同。 整数乘加部件多用在d s p 中。通用处理器也有采用整数乘加部件的,主要是 为了提高加密、解密等应用的性能,如i n t e l 的i t a n i u m 。 不需要规格化和舍入,使得整数乘加部件的结构较为简单。在整数乘加部件 中,乘法模块占了大部分面积。限制整数m a c 部件性能的瓶颈主要有两处:一 个是乘法模块中的部分积约减( p a r t i a lp r o d u c t sr e d u c t i o nn e t w o r k ) ,另一个是加 法器这两处都需要将大量的操作数相加求和,形成很长的进位链传播,影响了 性能当前,整数乘累加部件的研究集中于优化部分积约减网络,缩减进位链传 播,改善延时。 通过把加数c 插入到部分积约减模块中可以有效改善第二类瓶颈,这种技术 称为“m e r g e d a r i t h m e t i c ”,论文1 1 5 1 ,【1 6 1 和【1 7 1 都讨论了这种实现方法。 ba 2 n + l b i t 图2 1 整数乘加部件结构图( m e r g e da r c h i t e c t u r e ) 整数乘加部件研究的另一个焦点集中于采用向量( v e c t o r ) 或单指令多数据 ( s i m d ) 形式实现乘加,提高并行处理能力。图2 2 所示为m o t o r o l a f r e e s c a l e 为实现其整数乘累加部件而采用的向量结构。详情见论文【1 8 】。 9 中国科学院硕士论史高性能通用处理器中浮点莱加部件的设计 图2 2 向量形式的乘累加部件 浮点乘加部件的结构比整数乘加部件复杂得多,这足因为前者需要支持 i e e e - 7 5 4 标准的诸多规定,例如4 种舍入模式( r z ,r p ,r m ,对呕) ,规格化, 精确舍入,例外处理等。一些浮点乘加部件对i e e e - 7 5 4 标准提供不完全的支持, 从而换来了结构的简化和性能的提升。例如,图形处理器所采用的浮点m a f 不 保证结果舍入的正确性,也不支持i e e e - 7 5 4 标准定义的全部4 种舍入模式。 在浮点乘加部件的研究中,优化设计架构( 见文章1 1 9 1 ,【2 0 ,【2 1 】) ,研究 前导1 预测算法( 见文章1 2 2 】) ,加数与乘法树合并( 见文章1 1 6 1 ,【2 3 ,【1 7 】) , 乘法与加法的旁路( 见文章1 2 4 ,【2 5 1 ,【2 6 】) 等,部是国际上竞相研究的焦点, 目前已产生了不少的研究成果。 下面按照不同的应用领域介绍乘加部件的研究和使用现状。 2 1 通用处理器领域 最早关于浮点乘加联合部件的报道见于1 9 9 0 年的i b mr 1 s cs y s t e m 6 0 0 0 中 ( 见文章【6 1 ,【2 7 1 ) t 它的采用成为r i s cs y s t e m 6 0 0 0 浮点性能提高的主要原因, 其设计结构也成为传统浮点乘加部件设计的典范,影响深远。随后,i n t e l ,h p , m 1 p s s g i ,a r m ,m o t o r o l a f r e e s c a l e 等都相继开发了乘加部件,各有特色。 2 1 1i b m 采用的乘加部件 i b mr i s cs y s t e m 6 0 0 0 ( 后来改名为r s 6 0 0 0 ,现在称为e s e r v e rp s e r i e s ) 是 一款面向工作站的3 2 位超标量( s u p e r s c a l a r ) 通用处理器,它的浮点功能部件只 有一个,即浮点乘加部件( f l o a t i n g p o i n tm u l t i p l y - a d df u s e d ) 。浮点乘加部件兼 容l e e e - 7 5 4 标准1 2 8 1 ,拥有3 2 个6 4 位浮点寄存器。虽然处理器核心是3 2 位宽 的,但m a f 却为6 4 位宽( 见文章1 2 9 】) ,每个时钟周期发射一条乘加指令。在 1 0 第二章乘加部件的研究现状和使用情况 时钟频率2 5m h z 时可以达到5 0m f l o p s 的峰值浮点运算能力( 一条浮点乘加 操作相当于两条浮点运算操作) 。m a f 的结构如图2 3 。 图2 3i b mr s 6 0 0 0 浮点乘加部件流水线示意图 r i s cs y s t e n 9 6 0 0 0 拥有一个转移部件( b r a n c hu n i t ) ,一个3 2 位宽的整数功 能部件和一个6 4 位宽的浮点乘加部件。r i s cs y s t e m 6 0 0 0 非常重视浮点性能, 在设计之初就确定乘加部件为6 4 位,每时钟周期发射一条乘加指令通过观察 还发现,许多情况下浮点性能由定点性能决定,例如,大多数的矩阵操作需要大 量计算l o a d s t o r e 的地址因此,为了增加浮点乘加的效果,整数功能部件、转 移部件和浮点乘加部件重叠执行:整数功能部件执行所有的存储操作和地址计 算,转移部件执行取指和转移,浮点乘加部件执行乘加,见论文【2 9 1 。 作为第一个商用的浮点乘加部件,r s 6 0 0 0 的浮点m a f 当中很多算法还比较 简单,例如前导l 预测算法( l e a d i n g - z e r o a n t i c i p a t e ,见文章 3 0 1 ) ,规格化移位 器的宽度与指数差的关系也没有细化。尽管如此,m a f 的采用还是令r s ,6 0 0 0 的浮点运算性能得到了大幅度的提升 论文 3 1 1 以2 4 个l i v e r m o r ef o r t r a nk e r n e l s ( 见文章 3 2 】) 代码为例,比较了3 类处理器r s 6 0 0 0 ,z s 1 和d e c s t a t i o n3 1 0 0 的性能差别。r s 6 0 0 0 是一款r i s c 超 中国科学院硕士论文高性能通用处理器中浮点乘加部件的设计 标量处理器。z s 1 是威斯康星大学与伊利诺斯大学d e c o u p l e d a c c e s s e x e c u t e ( d a e ) 项目的产物,体系结构属于d a e 。d e c s t a t i o n3 1 0 0 是一款简单f f j r i s c 处理器,c p u 是m i p sr 2 0 0 0 ,协处理器足m i p sr 2 0 1 0 。比较结果如图2 4 所示。 2j|7坩t 槿at55t 7 慷t j 趵2 1 野萄g , i k e r n e ln u m b e r 图2 42 4 个l i v e r m o r ef o r t r a nk e r n e l s 代码的测试性能 将2 4 组比较结果计算调和平均值,得至l j d e c s t a t i o n3 1 0 0 的浮点性能( 百万浮 点操作每秒) 是1 8 4m f l o p s ,z s i 是3 8m f l o p s ,r s 6 0 0 0 是6 2 1m f l o p s a 若禁止f o r t r a n 编译器产生乘加指令,则r s 脚浮点性能的调和平均值会下降 9 个百分点,从6 2 1m f l o p s 降至t 1 5 7 7m f l o p s 。 l o sa l a m o s 实验室以常用的科学计算程序测试i b mr 1 s cs y s t e m 6 0 0 0 和其 他两台向量处理器后得出如下结论,见图2 5 。 弧b l 4 c o m p a r i l o no fb e n e h m a r ke x e c u t a o n t i i d e s lf o rt h e4 0 mm mr 碍cs 裕l e ma n d 童 s i n g l ep t e 口o ft h ec o n v e xc - 2 4 0 c o n v e z4 0 m 硎r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论