已阅读5页,还剩60页未读, 继续免费阅读
(计算机系统结构专业论文)8087数值兼容协处理器的设计与验证.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 i n t e l 8 0 8 7 数值协处理器,是为i n t e l 8 0 8 6 8 0 8 8 芯片设计的数值协处理器扩展 ( n p x ) 芯片。它专门用于数值计算,能有效地提高数值处理的速度和精度,并 广泛应用于科学计算、信号处理、自动控制以及国防等领域。 本文在对i n t e l8 0 8 7 芯片功能和指令系统进行深入分析的基础上,针对初等函 数和超越函数的计算,探讨了适合于硬件电路实现的坐标旋转数字计算机算法和 体系结构,设计了接口同步单元和内部运算单元,并用微程序控制方式调度各内 部单元完成了运算功能。最后,使用v e r i l o g 硬件描述语言完成了h d l 模型的设 计,其功能和指令系统与i n t e l8 0 8 7 完全兼容,并使用m o d e l s i m 软件进行了仿真 和验证,获得了理想的结果。本文的研究工作,基本上完成了8 0 8 7 数值兼容协处 理器的前端设计,并且对微处理器设计、通用f p u 设计及其它数字系统的设计具 有参考价值。 关键词:8 0 8 7 协处理器超越函数坐标旋转数字计算机微程序 a b s t r a c t t h ei n t e l8 0 8 7m a t hc o p r o c e s s o ri sa ne x t e n s i o nt ot h ei n t e l8 0 8 6 8 0 8 8 m i c r o p r o c e s s o ra r c h i t e c t u r e ,i t i su s e di nn u m e r i c a lc a l c u l a t i o ns p e c i a l l y , a n dc a l l i m p r o v et h ep e r f o r m a n c eo fs p e e da n dp r e c i s i o ne f f e c t i v e l y i th a sb e e nw i d e l yu s e di n s c i e n t i f i cc a l c u l a t i o n ,s i g n a lp r o c e s s i n g ,a u t oc o n t r o la n dn a t i o n a ld e f e n s ef i e l d se t c e x t e n s i v e l y , t h i sp a p e ri so nt h eb a s i so fa n a l y z i n gt ot h ef u n c t i o n sa n di n s t r u c t i o ns y s t e m so f i n t e l8 0 8 7c h i p c o n s i d e r i n gi t s c a l c u l a t i o no ft h et r a n s c e n d e n t a lf u n c t i o na n d e l e m e n t a r yf u n c t i o n ,w ep r o b ei n t ot h ec o r d i c ( t h ec o o r d i n a t er o t a t i o nd i g i t a l c o m p u t e r ) a l g o r i t h m ,w h i c hi ss u i t e dt ot h er e a l i z a t i o nb yh a r d w a r ec i r c u i t ,a n dd e s i g n t h es y n c h r o n o u si n t e r f a c eu n i t sa n dt h ei n s i d eo p e r a t i o nu n i t sa n df i n i s ht h ef u n c t i o n so f c a l c u l a t i o nw h i rt h em e t h o do fm i c r op r o g r a mc o n t r 0 1 f i n a l l y , w ed e s i g nah d lm o d e l w i t ht h ev e r i l o gh a r d w a r ed e s c r i p t i o nl a n g u a g e ,w h i c hi st o t a l l yc o m p a t i b l ew i t hi n t e l 8 0 8 7i nf u n c t i o n sa n di n s t r u c t i o ns y s t e m s w eu s et h em o d e l s i mt oc a r r yo nt h e e m u l a t i o na n dv e r i f i c a t i o no ft h em o d e l ,a n dh a v eo b t a i n e da ni d e a lr e s u l t ,b yt h e r e s e a r c hw o r ko ft h i sp a p e r w ef i n i s ht h ef r o n td e s i g no ft h ei n t e l8 0 8 7m a t h c o p r o c e s s o r , a n dn o to n l yf o rm i c r o p r o c e s s o rd e s i g n ,b u ta l s oi ng e n e r a lf p ud e s i g n a n do t h e rd i g i t a ls i g n a lp r o c e s s ,t h ev a l u eo f t h i sr e s e a r c hi se v i d e n t k e y w o r d :8 0 8 7m a t hc o p r o c e s s o r t r a n s c e n d e n t a lf u n c t i o nc o r d i c m i c r op r o g r a m y l o o 9 0 8 5 创新| 生声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我同工作的同志对本研究所做 的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本入承担一切相关责任。 本人签名:垂遮日期墨吐j ! 重 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生 在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕业 离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。学 校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部 或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论文在 解密后遵守此规定) 本学位论文属于保密,在l 年解密后适用本授权书。 本人签名:銮波 。 日期盆畦缸圭 导师签名:耋牡同期堕唑奠一 第一章绪论 第一章绪论 1 i8 0 8 7 的发展历史 1 9 7 1 年,h t e l 公司推出型号为4 0 0 4 的4 位微处理器,掀开了微处理器发展 史的第一页。随着微处理器性能的不断提高,在科研、工程计算、航空航海及国 防领域中,经常需要对大量数掘进行实时处理,并要求计算三角函数、对数函数、 指数函数等“超越”函数的值。8 0 年代的微小型计算机、乃至中大型计算机中, 超越函数的计算多借助于软件来实现,即通过调用一些子程序来实现函数的计 算,但是子程序的频繁调用会显著降低处理的速度。同时,计算机的发展日益需 要微处理器具有高精度的浮点运算能力,为了提高计算机的数值处理能力,就必 须提供相应的硬件支持。从当时计算机体系结构发展的趋势来看,一个很有希望 的技术方向就是制造专用的处理器,根据应用的需要将其加到原有的通用计算机 上,然后进行负载分担,让其分别并行执行各自的功能,从而提高整个系统的性 能。 市场的需要以及l s i 技术的快速发展,使得数值处理器的出现成为可能。1 9 7 7 年,i n t e l 公司引入一个以二进制浮点格式表达实数的标准,并在此标准基础上丌 发了第一个商业软件产品浮点运算库( f p a l ) 。f p a l 是设计用于8 0 8 0 和8 0 8 5 的一套单精度( 3 2 位) 实数算术运算子程序库。对1 6 m h z8 0 8 0 a c p u 而言,如 果使用f p a l ,运行一条单精度乘法大约只需要1 5 m s 。此后,h l t e l 公司继续致 力于改进浮点处理。它的下一步便是推出8 2 3 2 芯片,用于8 0 8 0 8 0 8 5 系列的单片 算术处理器。此芯片既可用单精度数工作,也可用双精度数工作,如果以2 m h z 的时钟速度运行,单精度乘法大约需要l o o p s 而双精度( 6 4 位) 乘法大约需要 8 7 5us 。1 9 7 8 年,i n t e l 公司在推出8 0 8 6 8 0 8 8 微处理器的时候。就充分意识到了 浮点处理能力的重要性。1 9 7 9 年,i e e e 开始研究浮点数据用二进制表达的工业 标准, e e e 提出的格式与m t e l 早先使用过的一致。1 9 8 0 年,1 1 1 t e l 公司推出了 8 0 8 6 8 0 8 8 的浮点处理扩展8 0 8 7 芯片。8 0 8 7 以n m o s 工艺制造,主要有5 m h z 、 8 m h z 、1 0 m h z 三种型号,最大功耗为2 4 0 0 m w 。8 0 8 7 中已经确立了浮点协处理 器8 0 位的数据精度,定义了一个非常强大的浮点运算内核,不仅能够进行加、 减、乘、除等基本算术运算的操作,而且用硬件实现了类型转换、符号拷贝以及 三角函数和双曲函数等超越函数的计算。 2 8 0 8 7 数值兼容协处理器的设计与验证 8 0 8 7 为c p u 增加了一些新的数据类型、寄存器和指令。8 0 8 7 与8 0 8 6 8 0 8 8 结合在一起构成的数值处理器( n d p ) 能够处理8 位、1 6 位、3 2 位及6 4 位的二 进制整数:1 8 位的b c d 数;3 2 位、6 4 位及8 0 位的浮点实数。在8 0 8 7 内部,所 有的数据都是以8 0 位宽度的临时实数格式表示,这也是8 0 8 7 能够提供精确结果 的决定因素。8 0 8 7 的存取数据指令能够实现操作数类型的自动转换,这种转换过 程对程序员来说是完全透明的。8 0 8 7 的内部包括8 个8 0 位宽的数据寄存器,和 4 个专用寄存器:控制寄存器( 1 6 位) 、状态寄存器( 1 6 位) 、指令寄存器( 3 2 位) 和数据指示器( 3 2 位) 。8 0 8 7 中所有的计算都集中在8 个8 0 位的寄存器堆 栈中进行,指令可以隐含地访问堆栈顶部的一个或两个单元,也可以显性地指出 所要访问的寄存器,这种访问方式是相对于栈顶进行的。 8 0 8 7 具有6 8 条指令,按其功能可以分为传送、比较、算术运算、取常数、 超越函数计算及控制六种类型。8 0 8 7 的指令与8 0 8 6 8 0 8 8 的指令混合编制在一个 完整的程序中,8 0 8 7 和c p u 一起对指令进行译码,指令的分配是硬件自动完成 的。5 m h z 的8 0 8 7 能够在大约1 9us 内执行一条单精度乘法及在大约2 7us 内 执行一条双精度乘法,平均大约是8 2 3 2 的十倍,是f p a l 的1 0 0 倍,8 0 8 6 8 0 8 8 c p u 与8 0 8 7 构成的数值处理机将8 0 8 6 8 0 8 8 的数值处理能力提高了将近1 0 0 倍。 1 2 研究意义及应用前景 8 0 8 7 作为第一代浮点处理单元( f p u ) ,是以后各种f p u 设计和应用的基础, 具有十分重要的应用价值和理论意义。2 0 多年来,f p u 的发展仅经历了两代: 第一代是以8 0 x 8 7 和8 0 4 8 6 为代表的串行执行结构;第二代是以p e n t i u m 系列处 理器中的浮点运算单元为代表的并发流水执行结构。在功能上变化并不大,基本 上都是与i e e e 7 5 4 标准兼容;但是在计算精度和速度等各方面有了质的飞跃。 浮点处理器的应用领域十分广泛,包括了国民经济运行中的各个方面,如: 航空领域,主要涉及飞行控制、导航等方面;航天领域,主要涉及卫星遥感、遥 测、实时信息传输等方面;信号处理领域主要包括数字滤波、自适应滤波、f f t 变换等;人工智能领域,主要涉及实时语音、图像信号的处理等:c a d c a m 领 域,应用浮点运算功能的c a d 软件,如a u t o c a d 、g e n e r i c c a d 等:金融领域, 主要涉及指数运算的应用,如计算利息中的复利;办公自动化领域,如应用浮点 处理器的电子制表软件;等等。 第一章绪论 f p u 的发展和c p u 的发展一脉相承,息息相关。目前,世界上只有少数几 个大公司掌握着最先进的微处理器设计和生产技术,垄断着整个世界的微处理器 市场。在国内,由于种种原因,对浮点处理器的研究较少,也没有进行深入的计 算机算术研究,只有部分单位在进行浮点r i s c 的研究和开发工作,并且属于专 用浮点单元的设计,尚未出现真正的产品。 随着我国现代化进程的加快,对各种包括浮点部件的微处理器的需求越来越 大,大多数不得不采用进口产品来满足。进口浮点处理器不仅在可靠性和货源上 缺少保障,而且还造成了高科技发展和军事应用处处受制于人的局面。因此,研 发具有自主知识产权的浮点处理器具有十分重要的意义。 8 0 8 7 协处理器是i n t e l 8 0 x 8 7 系列的第一代产品,作为专用的浮点运算单元, 功能强大,而结构相对简单。以8 0 8 7 作为切入点,通过分析得到其内部的有用 信息,进行兼容性芯片设计,有利于缩短开发的周期,同时对于制造能与8 0 x 8 7 系列相兼容的国产f p u 芯片,以及含有f p u 的嵌入式设计,进一步发展为功能 更为强大的浮点处理器,具有重要的意义。 1 3 论文的内容安排 本论文是基于8 0 8 7 协处理器兼容芯片的正向设计及验证。在分析8 0 8 7 功能 和指令集的基础上,按照自顶向下( t o p d o w n ) 的数字系统正向设计方法用 v e r i | o g h d l 完成8 0 8 7 协处理器的总体设计,并进行验证。 这一过程包括以下几个步骤:首先对8 0 8 7 的体系结构和指令系统进行深入分 析,划分出8 0 8 7 的接口同步单元,内部控制单元和数值执行单元;然后根据 8 0 8 6 8 0 8 7 同步时序完成接口控制单元的设计;用改进的坐标旋转数字计算机 ( t h ec o o r d i n a t er o t a t i o nd i g i t a lc o m p u t e r ,c o r d i c ) 算法,完成数值执行单元 的设计;制定出合理可行的微指令格式,并采用微指令完成内部控制单元的设计: 最后对设计进行了验证,并给出验证结果。 在论文的第二章,首先介绍8 0 8 7 的外部管脚及其功能,然后结合反向设计的 结果归纳出8 0 8 7 的内部结构,最后对8 0 8 7 的指令系统进行分析。重点是根据外 部功能推测出内部结构,该结构是币向设计时功能模块划分的基础。 在论文的第三章,在分析8 0 8 7 的数值表示系统的基础上,对8 0 8 7 运算过程 中所采用的坐标旋转矢量机( c o r d i c ) 算法进行了研究,提出了一种占用资源 4 8 0 8 7 数值兼弈协处理器的设计与验证 面积比较小,并且结构规则简单,利于v l s i 实现的硬件实现超越函数运算的方 法,并用c 语言程序实现算法,验证算法设计的正确性。 在论文的第四章,结合第二章得到的内部结构,采用状态机的形式,完成接 口控制单元的设计;结合第三章提出的c o r d i c 算法实现方法,设计出数值运 算所需的各单元;勾勒出运算过程中可能遇到的各种控制行为,设计出一套具体 的微指令编码格式,并将c o r d i c 算法转化成一套微指令程序,完成超越函数的 运算。 在论文的第五章,在分析片上系统( s y s t 锄o nac h i p ,s o c ) 验证方法的基 础上,根据8 0 8 7 的系统功能和同步时序,在用户功能级上利用8 0 8 7 的指令系统 来建立测试程序,并对照实际c p u 运行测试程序后获得的结果,完成对指令系 统和数据流的测试。 在论文的第六章,阐述了论文所作的工作和存在的不足,主要为结论部分。 第二章8 0 8 7 的体系结构 第二章8 0 8 7 的体系结构 2 18 0 8 7 的引脚功能说明 8 0 8 7 共有4 0 条引脚,如图2 1 所示。其中1 7 、1 8 、2 9 、3 0 是悬空的,i 和 2 0 是g n d ,4 0 是v c c 。 面s t d ) 0 d l q s o a d 2 q s ! 皿j u ) 4 3 如s i 8 0 8 7 篓;面i s 2 k i ) 8 一 曲9 r q i c t o a n l 0 r q g i i 仰k d l i ; i n t d a d l l 4 5 b u s t r e d t a 1 6 $ 3 ,c u a l l 8 7 ,s s : r e s e t a 。1 9 ”$ 6 。 图2 18 0 8 7 引脚排列图 8 0 8 7 引脚名称和功能如下: 1 ta d i r d o a d d r e s s d a t a ( 地址数据) :这些引脚组成存储器地址( 在t l 时钟) 和 数据( 在t 2 、t 3 、t w 、t 4 时钟) 的分时复用总线。a o 对于数据总线的低字节 ( 引脚d 7 一d o ) 来说,其作用与数据总线高字节使能信号b h e 类似。t ,时钟期 间凡是低电平,表示在存储器操作中,一个字节在总线的低位部分传送。与总 线低字节相连的八位型设备,通常用凡来选片。在8 0 8 7 控制总线时,它们为输 入或输出端,而当c p u 控制总线时,它们受8 0 8 7 的监视,为输入端。 2 a , 9 1 s 6 ,a 1 8 ,s s ,a 1 7 $ 4 ,a 1 6 $ 3 a d d r e s s m e m o r y ( 地址存储器) :在t l 时钟期间这个引脚是存储器地址 的最高四位。在存储器操作期间的t 2 ,t 3 ,t w 和t 4 等时钟周期这些引脚上的状 态信号有效。在8 0 8 7 控制总线周期时,s 6 ,s 4 和s 3 总为离电平,s 5 总为低电平。 在c p u 控制总线时,它们为受8 0 8 7 监视的输入端。 6 8 0 8 7 数值兼容协处理器的设计与验证 3 b h e s 7 b u s h i g he n a b l e ( 高位总线使能信号) :在t l 时钟期问,b h e 信号表 示数据总线的高八位( d 1 5 一d 8 ) 有效。与数据总线的高字节进行数据传送的八位 型设备,通常使用b h e 来选片。当要把一个字节传送到总线的高位时,在读和 写周期的t i 期间,b h e 为低电平。在t 2 ,t 3 ,t w 和t 4 等时钟期间,它为状态 信号s 7 。该信号低电平有效。在c p u 控制总线周期的期间,s 7 为受8 0 8 7 监视 的输入端。 4 s z ,s l ,s o s t a t u s ( 状态) :在8 0 8 7 控制总线周期时,状态线编码如下: 表2 18 0 8 7 总线控制组合 一 一 s 2 s ls o 状态 0 ( 低) xx不用 1 ( 高) 00 不用 101 读存储器 1 1o 写存储器 111被动状态 在t 4 时钟期间建立状态信号,在t 1 和t 2 时钟期间保留该状态,而当r e a d y 为高电平时,在t 3 和t w 期间返回至被动状态( 1 ,1 1 ) 。这些状态被8 2 8 8 总 线控制器用来产生所有的存储器存取控制信号。t 4 时钟期间s 2 ,s ,或s o 状态的 任何变化都用来表示一个总线周期的开始,以及在t 3 或t 、v 时钟期间返回到被动 状态用来表示一个总线周期的结束。当c p u 控制总线时,8 0 8 7 监视着这些信号。 5 r q g t o r e q u e s t g r a n t o ( 请求准许) :为进行数据传送或由于其他总线控制器的 要求,8 0 8 7 使用请求准许端之一相连。在该引脚上的请求同意序列如下: ( 1 ) 一个时钟宽度的脉冲传送c p u ,表示8 0 8 7 或与8 0 8 7 的r q g t l 引脚相 连的总线控制器发出局部总线请求信号。 ( 2 ) 8 0 8 7 等待同意脉冲,当接收到同意脉冲,在该脉冲后的时钟周期起动总 线传送,或者如果刚才的请求信号是其他的总线控制器发出的话,那么同意脉冲 第二章8 0 8 7 的体系结构 通过r q g t l 引脚送出。 ( 3 ) 在完成8 0 8 7 最后总线周期或者从r q g t t 上的总线控制器收到释放总线 脉冲后的一个时钟周期中,8 0 8 7 产生一个释放脉冲送到c p u 。 6 r q g t l r e q u e s t g r a n t ( 请求同意) :其他局部总线控制器通过本请求同意引脚,迫 使8 0 8 7 请求局部总线。当产生请求时,如8 0 8 7 没有控制着总线则请求同意端 的请求信号延迟一个时钟周期通过8 0 8 7 的r q g t o 引脚送出。为了再同步,此后 的同意和释放脉冲也通过8 0 8 7 进行传送,它们分别延迟两个和一个时钟周期。 r q g t ,有一个正偏电阻,从而可以被脱开不作任何连接。如果8 0 8 7 控制着总线, 请求同意序列如下: ( 1 )来自其他局部总线控制器的一个时钟宽度脉冲表示向8 0 8 7 请求局部 总线( 脉冲1 ) 。 ( 2 )在8 0 8 7 的下一个t 4 或t 1 时钟期间,个时钟宽度脉冲从8 0 8 7 送至 提出请求的主控设备( 脉冲2 ) ,表示8 0 8 7 已允许局部总线浮动,并且在下一个 时钟,将进入“r q g t 响应”状态,在“r q g t 响应”状态期问,8 0 8 7 的控制 单元与局部总线的连接被切断。 ( 3 )提出请求的主控设备发出一个时钟宽度的脉冲到8 0 8 7 ( 脉冲3 ) ,表 示“r q g t ”请求即将结束,8 0 8 7 在下一个时钟可重新使用局部总线。 主控设备之间交换局部总线的控制权是三个脉冲的一个序列。在总线交换之 后,必须有个固定的时钟周期。脉冲低电平有效。 7 q s l ,q s o q s i ,q s o 向8 0 8 7 提供能跟踪c p u 指令队列的状态。 表2 28 0 8 7 跟踪c p u 的状态信号 q s q s o 状态 0 ( 低) o无操作 01从队列送出操作码的第一个字节 1 ( 高) o队列空 11从队列送出下面的字节 8 i n t 8 0 8 7 数值兼容协处理器的设计与验证 i n t e r r u p t ( 中断) :该信号用来表示,当8 0 8 7 允许中断时,在数值指令 执行期间,产生了不可屏蔽的中断。如果为8 0 8 6 系统则将此信号连接到8 2 5 9 a 上,i n t 高电平有效。 9 b u s y b u s y ( 忙) :该信号表示8 0 8 7n e u f 在执行一条数值运算指令。它连 接于c p u 的t e s t 引脚,用以保持两者的同步。在非屏蔽中断的情况下,b u s y 保持有效,直到中断被清除。b u s y 信号是高电平有效。 1 0 r e a d y r e a d y ( 就绪) :就绪信号是被访问的存储器在完成数据传送后发出的应答 信号。对8 0 8 6 系统,从存储器来的r e a d y 信号是由8 2 8 4 a 时钟发生器同步形 成r e a d y 信号的。该信号高电平有效。 1 1 r e s e t r e s e t ( 复位) :复位信号使处理器立即中止现在的工作。该信号要产生作用, 至少要保持四个时钟周期的高电平。复位在内部被同步。 1 2 c l k c l o c k ( 时钟) :时钟信号为处理器及总线控制器提供基本定时信息。它的 占空比为1 :3 提供最佳的内部定时。 1 3 v c c p o w e r ( 电源) :v c c 是提供+ 5 v 电压驱动的引脚。 1 4 g n d : g r o u n d ( 地) :g n d 是接地的引脚。 2 28 0 8 7 的体系结构 与处理器一样,协处理器是一个复杂的微电路的阵列,被设计用来实现复 杂的功能。处理器与协处理器之间相互补充并且按一定的顺序协同工作。处 理器取指令、译码,并且计算存储器操作数的地址:而协处理器同步译码,并 且处理那些特殊编码的浮点指令( 指令编码的高5 位为“1 1 0 1 l ”,称为谜逸”指 令) 。由于处理器与协处理器在物理上及程序上都是相对独立的微处理器,因此, 协处理器能够相对于主处理器异步运行,而且两者经常使用不同的时钟发生器 和时钟速度。虽然协处理器的功能很强大,但它在结构上是比处理器更为简单 第二章8 0 8 7 的体系结构 9 的器件。 8 0 8 7 协处理器按其功能可分为总线接口、数据缓冲、控制单元和数据路径 四大部分。一般只将其分为控制部件( c u ) 和数值执行部件( n e u ) 等两大模 块。协处理器的体系结构如图2 2 的简化框图所示。基于对8 0 8 7 电路的分析,可 将8 0 8 7 分为总线接口单元和浮点执行单元两部分。总线接口单元中包括状态字 和控制字、指令队列、操作数队列、接口和地址文件等。浮点执行单元中包括微 程序执行和控制单元,微码只读存储器和数据通道( 包括指数和尾数运算器和常 数r o m ) 等等。控制部件访问并暂存操作数及操作码,并传送给n e u 。它还执 行对协处理器的控制指令。n e u 执行译码后的数值指令,计算数据并将结果返回 给控制部件。这些部件的操作将在下面详细分析。 总蚝控制部分曩据接口与控制部舟浮点运算部分 图2 28 0 8 7 系统结构框图 控制部件 控制部件的任务之一是同步协处理器与处理器之间的操作。当两个处理器必 须交换信息、彼此访问运行的结果时,或者指令译码时,保持同步是必要的。例 如,数值协处理器扩展( n p x ) 的指令经常混在应用程序目标码的普通处理器指 08 0 8 7 数值兼容协处理器的设计与堕堑 令中。只有处理器执行取指令,然而n p x 控制部件是通过硬件连接到处理器的 状态线上,并且能够与处理器并行取指令。 要保证处理器协处理器成对正确运行,n p x 就必须读取和译码与主处理器 相同的指令。因此,协处理器必须模拟它的宿主处理器取址和译码特性。例如, n p x 保留了一个与处理器在大小上一致的预取指令队列,长度为6 条指令。需要 时,协处理器要识别它的相伴处理器的复位情况,并且自动匹配队列的长度:然 后n p x 监控指令队列以便从队列中移去指令,并且与c p u 同时译码。 处理器及协处理器能同时译码一类特殊的指令,即浮点指令或e s c 指令, 它们属于n p x 的范围。如果8 0 8 7 在指令队列中检测到e s c 指令,它就立刻对其 进行译码操作,以找到微程序的入口地址。对于所有的应用,处理器不管这些指 令而由n p x 的控制部件对它们译码。然而,处理器对e s c 指令译码是为了区分 它是否访问存储器。如果e s c 指令访问存储器,那么处理器就计算存储器操作数 的有效存储地址,并初始化一个读存储器总线周期处理器忽略作为读周期的结 果而放在总线上的数据,而将局部总线的主控权交给8 0 8 7 。8 0 8 7 锁存此有效地 址,然后从局部总线上读取数据,被读出的数据进入8 0 8 7 后,先存储在操作数 队列中,随后经过转换以临时实数格式存入相应的8 2 位堆栈单元( 多加的两位 是堆栈数据单元的状态标志位) ,进行处理。如果e s c 指令不包含对存储器的访 问,那么c p u 立刻开始译码下一条指令。如果下一条指令是另一条e s c 指令或 是要使用未完成的e s c 指令的结果,c p u 就停下来等待:否则c p u 并行执行下 一条指令。 一 n p x 控制部件最后负责执行总线操作的细节。虽然是处理器计算有效地址, 但这些操作是协处理器所需要的。如果正在访问内存,那么n p x 保存操作数的 有效地址。如果指定了寄存器操作数,那么操作数的值要被保存。例如,由于大 小和对准的原因,如果操作数要求多于一个总线周期去访问,那么n p x 控制部 件就要控制系统总线,并传送操作数的余下部分。如果要写入存储器的一个操作 数,那么,处理器计算有效地址并初始化一个读总线周期。n p x 控制单元变成局 部总线控制器并按要求初始化写周期,来向存储器传送操作数。8 0 8 7 完成对操作 数的存取后将局部总线的控制权交还给c p u 。如果n e u 没有完成阿一条指令, 则要求n e u 参与的下一条e s c 指令就无法开展。无需n e u 参加的e s c 指令, 如f s t s w 、f s t c w 、f l d c w 、f s t e n v 和f l d e n v 等少数指令,由控制部件 第二章8 0 8 7 的体系结构 独立于n e u 来执行。 数值执行部件: 协处理器的另一个主要部件为数值执行部件( n e u ) ,它包括8 个8 2 位的操 作数堆栈( 由于设置了栈指针,可以视为8 个通用寄存器) 、i 临时寄存器、移位 寄存器、指数运算模块、尾数运算模块、常数r o m 、舍入控制器和桶形移位器 等单元。如图2 2 所示,n e u 爿是n p x 中实际上的浮点处理器,它执行8 0 8 7 中 所有寄存器数据的访问和处理操作。n e u 可以进行算术、逻辑及超越函数等的运 算,计算超越函数的算法是后面将要介绍的c o r d i c 算法。 在常数r o m 中,8 0 8 7 还能提供部分运算中用到的数值常数,这样的常数分 为两类。一类是8 0 8 7 的常数装载指令所要装载的常数,如+ o 0 、+ 1 0 、丌、1 0 9 2 1 0 、 l 0 9 2 e 、l o g l 0 2 和l o g e 2 ;另一类是算术迭代过程中所需的常数,如c o r d i c 算法 在计算正切函数时所需的t a n l ( 2 1 ) 的值。 由于8 0 8 7 的数字系统只是实数系统的一个子集,所以对8 0 8 7 不能表示的数 值都必须进行舍入,这就要用到舍入控制单元。8 0 8 7 对所有的计算结果都要进行 舍入舍入的具体方法由8 0 8 7 控制字中的舍入控制字段决定。 8 0 8 7 中的桶形移位器具有特殊的结构,它可以左右移位,最大移位的位数是 6 3 位,如此高的移位效率可以很方便地将各种数据类型转换为内部临时格式,6 3 位桶形移位器实际上是操作数队列到寄存器堆栈之间的接口部件。 n e u 的数值寄存器是8 0 位宽,刚好与8 0 位临时实数数据类型相配。在内部, 数据按两条途径处理,6 4 位尾数总线和1 6 位符号指数总线。在寄存器栈外,另 有4 位附加到尾数总线上,总共有6 8 位。指数和尾数分开并行运算,就需要指 数运算模块和尾数运算模块。这两个模块是8 0 8 7 完成计算的最基本硬件设施, 也是8 0 8 7 体系结构中最具特点的部分。 e s c 指令译码后,它们被送入微指令顺序发生器然后按次序控制片上的硬 件单元,按每条指令的要求执行具体操作。原始的操作数存放在堆栈中,栈顶指 针指向的操作数为默认操作数,8 0 8 7 未显式地指明操作数的操作都默认是对栈顶 操作数进行,操作的结果也存放在堆栈中。 当e s c 指令丌始执行时,n e u 激活b u s y 信号。n e u 的b u s y 状态在n p x 的控制字中报告。而且还要驱动可由处理器监控的外部管脚。此信号可用来连接 8 0 8 7 数值兼容协处理器的设计与验证 处理器的w a i t 指令,以便使协处理嚣与处理器重新同步。 8 0 8 7 除了有上述部件外,还有寄存器组、指令和数据指示器等,并有相应的 状态字、特征字、控制字等描述状念和控制信息的部件。 可以看出,8 0 8 7 是针对快速浮点处理而设计的高性能、高自主性的c p u 其设计目标是在尽可能小的硬件设计规模下,实现f p u 的功能。8 0 8 7 特殊的处 理能力决定了它特殊的体系结构,为了满足高精度浮点运算的要求,在内部设置 了8 0 位的数据通道,并选择了c o r d i c 算法实现其超越函数的运算。 2 38 0 8 7 指令系统简介 表2 _ 3 列出了8 0 8 7 的指令格式。 表2 38 0 8 7 的指令格式 字节i字节2可选择的域 1 1 0 1 l o p a lm o dlo p br m d i s p l s i b 1 1 0 i lm fo p am o do p br m d i s p ,s i b l 1 0 1 ldpo p al io p - b 1 1 0 o0l1 llo p l l o l loli 1 l lo p 注i d i s p 位移量存储器操作数的l 字节2 字节或4 字节位移量。 m f存储 | 格式。译码为:0 0 - - 3 2 位实型0 1 3 2 位整型1 0 埘位实型1 1 1 6 位整型, m o d 方式域寻址方式与处理器m o d r m 字节的定义相同 p 弹出。译码为:o 一不弹出堆栈l 一在操作之后弹出堆栈。 r m 寄存器存储器域 m 寄存嚣数目i m r r 时s t ( i ) 的值。 s i b 比例变址基址。为扩展寻址方式而存在的字节 : 8 0 8 7 的6 8 条指令,按其功能可以分为传送、比较、算术运算、取常数、超 t :。t t 越函数计算及控制六种类型。在一个完整的程序中,8 0 8 7 的指令与8 0 8 6 1 8 0 8 8 的 1 : 指令是混合编制在一起。8 0 8 7 和c p u 同时对指令迸行译码,8 0 8 7 只执行编码高 5 位为“1 1 0 1 1 ”的e s c 指令。表2 4 列出了8 0 8 7 的主要指令。 表2 48 0 8 7 的主要指令 分类 指令 数据传送取数、存数、交换 算术运算 + 、一、x 、反向减、反向除、换算、求余、取整、变符号、求绝对值 比较 比较、铡试、检验 。 超越函数 部分正切、部分反正切、2 x 1 、y - l o g 爿、y l 0 9 2 ( x + 1 ) 取常数 - t o 0 、+ 1 o 、f 、i o g z l 0 、l 0 9 2 e 、l o g i 0 2 、l o g t 2 控 制 初始化、中断控制、存i 取控制字、存杭态字、状态,环境的保护、清除异常 第二章8 0 8 7 的体系结构 1 3 附录a 详细地介绍了8 0 8 7 的指令系统,从中可以看出,8 0 8 7 指令的操作数 可以为一个、两个或者没有:这些操作数可以是立即数、寄存器数或者是存储器 中的数据:从指令队列到运算器移位器寄存器,从常数r o m 到运算器寄存器, 从状态字控制字寄存器到数据总线,以及寄存器和运算器、移位器之间,都必须 实现数据的传送,并且往往要经过暂存器。 8 0 8 7 数值兼容协处理器的设计与验证 第三章数值系统与算法模型 3 1 数值系统 数值处理器的设计必须首先规定数值系统,然后在此基础上根据实际需求 确定具体的算法和体系结构。 理论上而言,人们用纸和笔所进行的计算是完全精确的,不带任何误差。这 是因为人们所使用的数值系统是连续的,任意大小的数值都可以被表示出来,在 计算过程中对数值的大小和精度没有上限和下限。人们也很希望计算机也能做到 这一点,但在实际上是不可能的。因为计算机的寄存器和存储器总是有限的,这 使得它所能表示的数值大小和精度受到限制。实际上,计算机的实数系统仅仅是 实数系统的一个子集,是由一组离散的、有限的数值组成的。对计算机数值系统 的设计,关键是设计一个满足具体要求的近似的实数系统。 计算机通常是用二进制表示的,即用一定格式的二进制串表示整数,对于小 数,常用的方法是用定点表示法。定点小数可以在一定的范围内,同时表示整数 和小数,但这种方法存在以下两种主要缺点:第一,当只有小数而且小数是“很 小”的时候,大部分的二进制位将被“0 ”占据,导致小数的精度丢失;反之, 如果一个数的小数部分为0 时,则有一半的二进制位被浪费。第二,这种表示方 法所能表示的数的范围与浮点表示法相比是相对较小的。 在十进制数中,通常用科学计数法,如1 2 3 0 0 0 = 1 2 3 1 0 2 、0 0 0 4 5 6 = 4 5 6 l o - 3 ;我们称等式右边的数为规格化的科学表示,即小数点左边只有一位非零的 数字。因为在这种十进制表示方法中,小数点的位置不是固定的,这种类型的表 示方法称为“浮点法”。同样,在二进制中也有相应的浮点数表示方法。 3 1 1i e e e 7 5 4 标准 8 0 8 7 出现以前,在能够处理浮点数的小型机甚至大型机上,由于缺少浮点数 的标准表达方式,不同的浮点处理器以及在不同的浮点处理机上运行的程序不能 兼容,严重影响了浮点运算的性能。i n t e l 意识到开发适用于微处理器的浮点运算 标准的重要性,在1 9 7 7 年提出了第一个浮点运算标准,其目的是为了避免在微 处理器领域出现类似于中型机和大型机的混乱局面。i n t e l 基于此标准开发了浮点 运算程序库( f 队l ) 和8 0 8 7 。i e e e 在i n t e l 的浮点运算标准的基础上,于1 9 8 5 年推出了i e e e 7 5 4 浮点运算标准,此后又推出了i e e e 8 5 4 标准,8 5 4 标准主要是 第三章数值系统与算法模型 在7 5 4 标准的基础上扩充了十进制运算。 下面将具体介绍i e e e 7 5 4 标准中的单精度和双精度浮点数格式。 类似于十进制浮点数的表示方法,一个二进制浮点数由三部分组成。第一部 分是符号位( s i g n ) ,即表示数据是_ i f 数还是负数;第二部分是数据的有效数字位, 即尾数( f r a c t i o n ) ;第三部分是阶码( e x p o n e n t ) ,即表示2 的多少次方,用偏移 码表示,偏移码值根据不同的字长而定。对于规格化的二进制浮点数而言,小数 前面的整数始终为1 ,所以在阶码和尾数之间规定了一位隐藏位“1 ”。i e e e 7 5 4 标准规定的单精度和双精度浮点数格式如下: 1 i e e e 7 5 4 标准中的单精度浮点格式 i e e e 7 5 4 单精度( s i n g l e - p r e c i s i o n ) 浮点格式为3 2 位,如图3 1 所示,其中 偏移值为1 2 7 ,尾数有一位隐藏位。 3 1 3 02 32 20 图3 1i e e e 7 5 4 的单精度浮点格式 ( 1 ) 规格化数:0 e 2 5 5 ,值v = ( 一1 ) 3 x 2e - 1 2 7 1 厶 ( 2 ) ( + o ,- - 0 ) :如果e = 0 且f = - 0 ,则v = ( 一1 ) 5 x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理给药的安全管理
- 安徽省蚌埠市田家炳中学2026届高三(下)5月段考化学试题试卷含解析
- 胡北省武汉市2026届高三年级五月供题生物试卷
- 护理不良事件对患者的伤害
- 护理安全感染控制
- 护理礼仪培训与提升
- 广东湛江市2025-2026学年度高二第一学期期末调研考试数学试题(解析版)
- 护理论文的学术交流与学术会议
- 船台总装物资保障方案
- 口腔护理试题及答案大全
- 小牛串焊机培训
- 老年人手机课件
- 2025年甘肃省甘南州农林牧草科学院高层次人才引进13人备考练习题库及答案解析
- 2025年党建工作知识竞赛测试题库附答案
- 石油化工安装工程预算定额(2019版)
- 医院收费窗口服务规范
- 2025年供销社笔试题目及答案
- 2025年《农产品质量安全法》试题及答案
- 《火力发电企业电力监控系统商用密码应用技术要求》
- 2025年石家庄市市属国有企业招聘笔试考试试题(含答案)
- 工厂绿化养护管理办法
评论
0/150
提交评论