




已阅读5页,还剩59页未读, 继续免费阅读
(计算机科学与技术专业论文)epic体系结构研究与流水线设计及实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
独创性声明 本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示谢意。 学位论文题目:! p ! ! 堡歪丝抱丑巍生逾查丝遮主工丛丢些 ,。 学位论文作者签名:亟釜 日期:oo g 立年月2 0 日 学位论文版权使用授权书 本人完全了解国防科学技术大学有关保留、使用学位论文的规定。本人授权 国防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子 文档,允许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密学位论文在解密后适用本授权书。) 学位论文题目:! ! 垡苤茎圭堑珏窒生速盛缝遮让丛塞塾 学位论文作者签名:白釜 日期:。年,月j d 日 作者指导教师签名:;厶亟竖日期:彻年,月卯日 国防科学技术大学研究生院学位论文 摘要 本课题是8 6 3 重大课题6 4 位高性能通用微处理器芯片设计子课题的前期工作,对基 于e p i c 体系结构的处理器进行深入研究和分析。e p i c 体系结构的特点是紧密结合编译器 和硬件来提升性能。本文的重点是研究基于e p i c 体系结构处理器指令分支预测和整数流 水线的设计与实现。 本文首先分析了e p i c 体系结构,深入研究了其中的前瞻和判断执行等技术。接着以 第一个商用的e p i c 处理器i t a n i u m 为背景,研究了指令分支预测机制,设计了流水线前 端的多级分支预测,并实现了每级预测器,通过多级预测策略提高了预测精度,改善了性 能。最后,阐述了基于e p i c 体系结构的高性能微处理器整数流水线核的设计与实现。其 中包括寄存器栈、寄存器旋转机制的研究和指令分派机制、指令旋转的实现,以及寄存器 重命名和整数部件的设计策略及实现方案。同时对一些特殊整数指令的实现进行了处理和 优化,并给出了模拟和流水线验证结果。 【关键字】e p i c ,处理器,流水线,分支预测,指令分派,指令旋转 国防科学技术大学研究生院学位论文 a b s t r a c t t h i sp r o j e c ti st h ep r e p a r a t i o nf o rt h e6 4 - b i tg e n e r a lp u r p o s eh i g h p e r f o r m a n c e m i c r o d r o c e s s o rc h i pd e s i g n ”8 6 3 ”s i g n i f i c a n tp d o e c t r e s e a m ha n da n a l y s i sa r em a d e d e t a i l e do ne p i cb a s e dm i c r o p r o c e s s o r e p i ca r c h i t e c t u r et i g h tc o m b i n eh a r d w a r ea n d s o f t w a r et oi m p r o v ep e r f o r m a n c e t h ed e s i g no fb r a n c hp r e d i c t i o ni sm a i n l ys t u d i e da n d t h ei n t e g e rp i p e l i n eo fp r o c e s s o rb a s e do ne p i ca r c h i t e c t u r ei sd e s i g n e da n dr e a l i z e di n t h i sp a p e r f i r s te p l ca r c h i t e c t u r ei sa n a l y z e da n di t ss p e c u l a t i o nt e c h n i q u ea n dp r e d i c a t e d e x e c u t i o nt e c h n i q u ea r et h o r o u g h l ys t u d i e d t h e nm u l t i - l e v e lb r a n c hp r e d i c t i o ni nt h e f r o n te n di sa n a l y z e dc a r e f u l l ya n de a c h l e v e lp r e d i c t o ri si m p e m e n t e d0 nt h eb a s i so f i t a n i u mp r o c e s s o rw h i c hi sac o m m e r c i a le p i cp r o c e s s o rt h r o u g hm u l t i l e v e ip r e d i c t i o n s t r a t e g y p r e d i c t i o np r e c i s i o na n dp r o c e s s o rp e r f o r m a n c ea r ee n h a n c e di na d d i t i o n ,i ti s d e v e l o p e dt h a ta ni n t e g e rp i p e l i n i n gd e s i g na n di m p l e m e n t a t i o no fh i g h p e r f o r m a n c e p r o c e s s o rb a s e do ne p i ca r c h i t e c t u r e i nt h i sd e s i g n r e g i s t e rs t a c km e c h a n i s ma n d r e g i s t e rr o t a t i o nm e c h a n i s mi nd e s i g ni ss t u d i e da n di n s t r u c t i o nd i s p a t c ha n di n s t r u c t i o n r o t a t i o nf u n c t i o na r ea c h i e v e da tt h es a m et i m e ,t h es t r a t e g yo fr e g i s t e rr e n a m ea n d d e s i g n i n gi n t e g e ru n i t sa r ep u tf o r w a r da n ds o m es p e c i a l i n t e g e ri n s t r u c t i o n sa r e d i s p o s e da n do p t i m i z e ds p e c i a l l yf i n a l l y i ti sg i v e nt h a tt h er e s u l to fs i m u l a t i o na n d v a l i d a t i o nf o rt h ew h o l ei n t e g e rp i p e l i n e 【k e y w o r d s 】e p i c ,p r o c e s s o p i p e l i n e ,b r a n c hp r e d i c t i o n ,i n s t r u c t i o nd i s p a t c h n s t r u c t i o nr o t a t i o n i 】 国防科学技术大学研究生院学位论文 第一章绪论 1 1 课题研究背景 随着科学计算规模的不断扩大,多媒体应用种类的不断增多,事务处理和科学领域研 究的不断深入,以及互连网通讯、电子商务、决策支持系统、可视化计算模型和计算密集 型的c a d 等新兴应用的出现对通用微处理器的性能提出了更高的要求。而处理器的性能 不完全取决于主频,体系结构对性能也有着重要的影响。对于传统的微处理器体系结构, 为了提高性能,普遍采用多发射技术,即每个时钟周期发射多条指令并行执行。目前传统 体系结构并行性开发所采取的主流技术是超标量技术和超长指令字( v e r yl a r g e i n s t r u c t i o nw o r d ) 技术。但是随着应用的升级,这些技术本身存在的局限性也越来越明显。 超标量技术是一种通过并行( 并发) 执行多条标量指令来提高处理器性能的技术。它是 通过在芯片上增加更多的控制逻辑和智能来提高指令的并行度。当前,超标量技术无论从 理论上还是从实践上都已经发展得十分完善,正处在成熟和应用阶段。但超标量技术自身 具有严重的局限性,因此很难进一步提高它的性能,估计纯粹的超标量技术的性能潜力将 在下一代微处理器中耗尽。总的说来,超标量技术中存在的问题主要表现在以下四个方面: 超标量技术只能开发出有限的i l p 。 超标量技术的实现复杂度随着规模( 发射带宽、乱序回溯指令条数等) 的增加增 长很快。 超标量处理器中资源利用率低。 不断增长的处理器和主存性能差距对超标量处理器的性能影响很大。 v l i w 是完全利用编译技术静态地开发程序中的指令级并行性( 1 l p ) 的一种技术。由 于编译器可以对程序进行全局的指令分析,在一个很大的虚拟指令窗口中调度指令,所以 有可能开发出比超标量技术更大的i l p ;而且由于指令调度完全由编译器完成,所以硬件 设计相对规整、简化,不会出现超标量中的实现复杂度问题。正是由于这两个突出的优点, v l i w 被学术界和厂家看好,已经在d s p 和媒体处理器领域被广泛接受,在高性能通用微 处理器中也以开始使用,可以说v l i w 技术正在逐步走向成熟。但v l i w 技术也暴露出许 多缺点,主要表现在以下四个方面: 静态开发指令级并行性,难以处理程序中众多的动态不确定性因素,如分支的动 态特性、存取延迟的不确定性等。 代码兼容性是一个主要问题。不仅v l i w 体系结构与当今的x 8 6 或r i s c 程序不 兼容,而且不同v l i w 代次问的代码也不兼容,这将是v l i w 推广中遇到的最大 障碍。 执行代码体积膨胀大。 资源利用率低和受存储延迟影响大的问题在v l i w 中也很严重。 总之,超标量和v l i w 的缺陷就在于只是孤立地利用了硬件或编译器。超标量技术是 完全动态地开发i l p ,v l i w 则是完全静态地开发i l p ,它们都没有充分发挥硬件和软件相 结合的合力。 为了更进一步开发i l p ,提高处理器性能,许多大学和研究所都展开了新型指令级并 行体系结构的研究,其中当以i n t e l 与h p 联合提出的e p i c ( e x p l i c i t l yp a r a l l e l i n s t r u c t i o n 第1 页 国防科学技术大学研究生院学位论文 c o m p u t i n g ) l i ! 显式并行指令计算体系结构最为突出。 e p i c 体系结构有机地结合超标量技术和v l i w 技术的优点,克服了传统体系结构的 弱点,能够在运行时充分利用编译程序所产生的许多有用信息提高指令并行度。e p i c 是 一种新的没计思想,是利用编译程序和处理器协同能力来提高指令的并行度。它充分发挥 了静态调度和动态调度的优点,引进了编译器与处理器之间的通信机制,处理器把硬件特 征充分暴露给编译器,由编译器进行指令的优化调度;而处理器要利用编译器产生的各种 提示性信息,在执行时予以支持。同时e p i c 体系结构为了克服传统体系结构中程序分支 指令和存贮器延迟对处理器性能的影响,分别采取了判断执行技术和前瞻技术,解决了上 述两种性能瓶颈,增强了处理器的执行效率。e p i c 技术很有可能开创一个新的微处理器 技术代。 在指令级并行体系结构中,除了上面介绍的超标量、v l i w 和e p i c 外,还有向量技 术。通过采用c m o s 工艺,向量机基本上克服了时钟周期难以提高的困难,可扩展性问 题也得以逐步解决。 另外,国内外在体系结构方面除了研究指令级并行外,也开展了面向线程,进程级并行 的开发,包括可重构处理器、单芯片多处理器、多线程超标量和踪迹处理器等,其中可重 构处理器和单芯片多处理器与当前流行的i s a 不兼容是它们面临的主要问题,而多线程超 标量和踪迹处理器还处于理论研究的阶段,投入生产和应用还有待时日。 可见在众多研究的新型体系结构中,e p i c 作为一种优秀的体系结构,打破了传统体 系结构的局限脱颖而出。 本文将针对这种优秀的体系结构进行深入研究,剖析该体系结构的几种关键技术,并 以第一个商用的e p i c 指令系统体系结构i a 一6 4 为背景,以i a - 6 4 的第一代处理器芯片 l t a n i u m 为基础,对高性能处理器的流水线进行设计和实现。 1 2 课题研究内容 本课题来源于国家“十五”8 6 3 重点课题高性能通用c p 0 芯片设计。设计中主要以 i a 一6 4 的第一代高性能处理器芯片i t a n i u m 为基础。 本课题研究涉及了新型e p i c 体系结构的相关理论和关键技术,以及处理器流水线设 计的重要实现技术,其中包括: 显式并行指令处理机制; 消除存贮延迟的前瞻技术; 去除部分分支影响的判断执行技术; 并行比较和多路分支的原理和实现: 支持过程调用的寄存器栈机制和支持软件流水的寄存器旋转机制的实现; 流水线部件的设计原理; 硬件结构的模拟技术等。 1 3 课题完成的工作 在课题的研制过程中,本人主要完成了以下几个方面的工作 研究了e p i c 体系结构关键技术; 分析了多级分支预测结构; 第2 页 萤爨器 学撞术大学硬突生貌学位论文 设计实现了e p i c 指令分派机制和寄存嚣的重命名: 对一些特殊的整数运算提出了新的设计方法; 设计了处理器整个整数流水线的各流水段模块,并编程对整数流水线进行了模拟和综 合,分析了模拟和综合的结果。 t 4 本文薛缀织 作为全文的介绍,下面给出熟余备章的内容摘要。 第二章介绍了e p i c 体系结构的关键技术,在这一章中简单叙述了e p i c 体系结构的 e p i c 机制、前瞻和判断执行技术、并行比较和多路分支技术,另外还介绍了高性能微处 理器i t a n i u m 斡擞体系结构。 第三耄会绥了浚瘩线蔻壤懿多级分支羲弱懿浚诗,溺述了多级分支羧测舞稳帮各级羲 测器的设计,详细分析了分支预测的硬件机制和软件提示。 第四章论述了流水线指令分派网络的设计,提出了流水线寄存器熏命名可综合的公式 和设计思想,并给出了具体实现。 第五章详细讨论了高性能微处理器整数部件的设计,提出了整数流水线的设计思想, 实理了相应瓣熬数部件,著给蝰了一些特殊整数指令戆处理及其优化方豢,对实现的整数 滚末线速簿了验l 歪。 第六牵对本论文的主要工作及贡献进行了总结,势对下一步的工 肇邋行了展望。 第3 页 国防科学技术大学研究生院学位论文 第二章e p i c 体系结构的关键技术 传统体系结构自身的局限性使得它们在开发指令并行性时总显得”心有余而力不足“, 为此一种新型的e p i c 体系结构应运而生。它能够在运行时充分利用编译程序所产生的许 多有用信息来提高指令并行度,充分发挥了硬件和软件相结合的合力。同时它也克服了传 统体系结构中程序分支指令和存贮器延迟对处理器性能的限制。下面将从几个主要方面来 介绍e p i c 体系结构的关键技术。 2 1e p i c 机制 传统体系结构没有充分开发出指令间的并行性,它没有把编译器和硬件对指令并行的 开发有效地结合起来。图2 - 1 给出了传统体系结构并行示意图,可见处理器的资源没有得 到充分的利用。 源代码 编译器9 l ;器 硬件 井行代码 1 再蓓翮 隅i e 传统结构:受限的并行性( 处理i 髂0 空闱) 图2 1 传统结构并行示意图 针对上面的不足,国际上提出了一种新的指令级并行开发机制e p l c 机制。e p i c 机制是一种新的设计思想,克服了传统体系结构并行性开发中的缺点,利用编译程序和处 理器协同能力来提高指令并行度,充分发挥了编译静态调度和硬件动态调度的优点,引进 了编译器与处理器之间的通信机制。这种通讯机制的基本原则如下: 由编译器负责指令的优化调度。 硬件提供信息,辅助编译器开发静态的指令级并行( i l p ) 。 硬件提供机制,把编译器的优化指导信息传递给执行部件。 e p i c 机制,即显式并行指令处理机制,它采用了“显式的并行性”,即编译器在微处 理器执行指令之前就对整个程序的代码做出优化安排,使得微处理器在执行编译过的指令 时,能更好地利用程序中的并行性。图2 - 2 为显式并行的示意图,可见与传统体系结构并 行示意图相比,资源得到了有效的利用。 e p i c 机制继承了超长指令字能够开发更大的指令级并行性的能力,利用指令分派技 术克服了v l i w 代码空间浪费和兼容性差的缺点,提供了分支提示信息、c a c h e 提示信息 等来指导相应的硬件结构。同时,e p i c 机制采用多个不同的执行部件,能够并行执行多 条指令,从而使e p i c 机制能发挥出最佳的性能。 第4 页 国防科学技术大学研究生院学位论文 源代码 并行的机器代码 _ _ _ _ 一_ _ _ 一 _ _ _ 一o _ _ _ 一 图2 - 2 显式并行示意图 当然,为了能同时处理e p i c 机制并行开发的多条指令,必须拥有大量的资源,这在 v l s i 技术发展初期j c 集成度不是很大的情况下,的确是技术上和经济上的致命弱点,这 也是当时e p i c 体系结构提出时不能盛行的原因。但随着v l s i 技术的飞速发展,增加资 源不再是技术和经济上的难题,相反,它还推动了现代v l s i 技术的发展。因此,e p i c 机 制也就脱颖而出,成为了开发高性能处理器指令并行性的主流。 总之,e p i c 机制通过软硬件的合力很好地发掘出了指令间的并行性。它的基本思想 就是通过充分利用编译程序和提供必要的资源来提高性能和简化传统r i s c 体系结构中复 杂的处理器控制逻辑。 2 2 前瞻技术 从19 8 7 年开始,c p u 的性能是每年提高5 5 ,主存性能虽然也在提高,可是速度却 慢的多。c p u 和主存之间在速度上的差异越来越大,存储延迟已经成为影响微处理器性能 提高的严重瓶颈。虽然处理器可以通过缓冲机制避免等待存储器写操作完成,但必须等数 据载入结束后才可以利用其结果。而且l o a d 操作往往是一个计算序列中的第一步,数据载 入的延迟会极大地降低系统性能。可见解决存储延迟的关键在于解决l o a d 操作问题。 克服载入延迟的关键思想是通过预取数据来隐藏延迟,在硬件上可以增加数据预取部 件,把处理器将来可能需要的数据提前读取到c a c h e 中。既便如此,运算前还得先将数据 从c a c h e 载入到寄存器中。软件的方法可以通过编译器调度l o a d 指令提前执行,这样当 需要l o a d 指令的操作数时,它已经在寄存器中准备好了。 2 2 1 前瞻数据载入的两个关键问题 实现前瞻数据载入必须解决两个关键问题:第一,如何进行前瞻性指令调度;第二, 如何执行前瞻性的数据载入指令。第一个问题的主要限制不在于把l o a d 指令从原始基本块 移动到前面的基本块,而是提前载入的数据不能被前面基本块里的指令使用或覆盖,因为 这个数据是留给它原始基本块中的计算指令所使用的。通过使用编译时的重命名转换技术 可以解决这个问题。对于第二个问题,如果前瞻性l o a d 指令在执行的时候非常顺利,未发 生异常,而且确认机制确认这个数据载入操作应该执行,那么前瞻的目的就达到了,在后 续计算需要数据时,它己经准备好了。但如果前瞻性l o a d 发生了异常,注意,这个异常可 能仅仅是由于把l o a d 操作提前才引起的,如按照原来的执行顺序可能不会发生异常。在这 第5 页 国防科学技术大学研究生院学位论文 种情况下,如果处理器不能正确地处理前瞻的异常,将会降低系统的性能。 针对前瞻数据载入的这两个关键问题,e p i c 体系结构采用了编译器和体系结构相结 合的前瞻技术。这种技术将通过编译器进行数据载入的前瞻性调度,并利用体系结构的异 常检测机制来保证前瞻指令执行的正确性。 根据提前执行的l o a d 操作是否处于分支中可将前瞻分为两类:控制前瞻和数据前瞻。 在这两种前瞻之中,编译器通过提前发出l o a d 操作,并将这种操作的延迟从关键路径上消 除,来提高i l p 。如果编译器有理由认为前瞻是有用的,则前瞻性地发出一个操作。要使 这种做法生效,必须具备两个条件:该操作必须是频繁出现的,其需要恢复的概率极小; 而且提前发出这种操作能够暴露出更进一步提高i l p 的可能。 下面分别介绍e p i c 体系结构的控制前瞻和数据前瞻。 2 2 2 控制前瞻 控制前瞻是指一条指令在它知道程序的动态控制流实际上是否需要该指令执行之前 就执行,即把分支指令中的l o a d 操作提前到分支指令之前执行。指令提前执行允许编译器 把执行和其他工作重叠,增加并行性,减少总执行时间。当编译器认为程序的动态控制流 很可能最终需要该计算时,就实施优化。如果不需要该计算,在这种控制流情况下,只要 丢弃结果就可以了( 处理的结果不用就行了) ,此时处理器无非是多执行个l o a d 操作而 不使用它的结果而己,对程序的正确性和性能没有什么恶劣影响。 考虑下列代码: i f ( a b ) i o a d ( i d _ a d d r l ,t a r g e t l ) ;u s et a r g e t l ;) 如果操作i o a d ( i d _ a d d r l ,t a r g e t l ) 在( a b ) 决定之前执行,那么这个操作就具有关于( a b ) 条件的控制前瞻性。在正常执彳亍条件下,操作i o a d ( i d a d d r l ,t a r g e t l ) 可能执行,也可能不 执行。如果新的控制前瞻载入导致了异常,那么只有当( a ,b ) 时才需要处理异常。编译器使 用控制前瞻时,在原始的位置放置一个检查操作,该操作验证是否已经发生异常,如果是 的话就转移到恢复代码处。上述代码序列现在就变为: s l o a d ( i d a d d r l ,t a r g e t l ) : i f ( a b ) s c h e c k ( t a r g e t l ,r e c o v e r y _ a d d r l ) ; u s et a r g e t l ; ) 图2 - 3 给出了控制前瞻结构示意图,除了l o a d 指令可以提前外,使用l o a d 数据的指 令也可提前,这样就可更进一步提高i l p 。 对于控制前瞻来说,既然程序有可能不需要前瞻性的指令序列,那么就不允许告知遇 到了程序可能的异常,直到确定程序的控制流确实需要这个指令序列的执行。因此,需要 提供一种机制记录异常的发生,以便于它能在稍后的某个必要时刻被告知。在这种情况下, 就说异常被延期了。当一个异常被一条指令延期时,在目的寄存器中写一个特殊的令牌, 以指示程序中延期异常的存在。 对基于e p i c 的i t a n i u m 处理器来说,为了支持控制前瞻,在硬件上提供了保存异常 标记的机制。但这种延期异常的保存机制在通用寄存器和浮点寄存器之中的表示是不同 的。在通用寄存器中,每个寄存器都定义了一个附加位n a t 位( n o tat h i n g ) ,因而 通用寄存器有6 5 位。n a t 位为1 标志着寄存器中保存着延期异常,那么此时6 4 位寄存器 中的内容将是一个软件不可依赖的值。在浮点寄存器中,延期异常是用一个特定的叫做 第6 页 国防科学技术大学研究生院学位论文 n a t v a l 的伪零编码来标识的。然后在程序中确知一个前瞻计算结果是否需要的地方,使用 一条前瞻检测指令( c h ks ) ,该指令测试一个延期异常标识,如果没找到,则前瞻计算是 成功的,程序正常运行。如果发现一个延期异常标志,则前瞻计算是失败的,这时必须重 做。在这种情况下,c h ks 指令转移到一个新的地址( 由c h k s 指令中的一个立即数偏移指 定) 。 2 2 3 数据前瞻 f 断, 副 控制前瞻 ii l l _ 啾a j l 、 i l i n s h 2l i l b r a n c h 卧 图2 - 3 控制前瞻结构示意图 在存在名相关的情况下,编译器不能改变载入和存储指令在原来的程序中指定的顺 序。为了克服这个调度局限性,定义一种特殊的提前载入指令,它可以被调度到一个或多 个与本载入有名相关的存储之前执行,这种技术就是数据前瞻技术。数据前瞻是指在先于 载八的一个存储器的存储之前执行载入,而且可能存在名相关。也即把s t o r e 操作后面的 l o a d 操作先于s t o r e 操作执行,而无论是否存在着地址重叠。数据前瞻也被称作“提前载 入”。 正如控制前瞻,编译器也能前瞻与提前载入相关的操作,以后再插入一条断定前瞻是 否成功的检查指令。对于数据前瞻,检查可以放在任何原始的非数据前瞻性载入可能调度 的地方。 一个数据前瞻性指令序列包括一个提前载入,没有或有多个依赖载入值的指令,一条 检查指令。这意味着任何存储指令序列后跟一个载入,可以转换成提前载入指令后跟一系 列存储后跟一个检查。要决定是否实施这样的转换,在很大程度上依赖于从不成功的数据 前瞻恢复的可能性和开销。图2 4 给出了数据前瞻结构示意图。 考虑下列代码: s t o r e ( s t _ a d d r , d a t a ) ; i o a d ( i c l a d d r , t a r g e t ) ; u s e ( t a r g e t ) ; 如果i da d d r 和s ta d d r 不能在编译时确定存储器地址的关系,并且如果载入要在存 储之前执行,那么载入就具有关于存储的数据前瞻性。如果在执行期间存储器地址重叠, 在存储之前流出的数据前瞻性载入就会返回一个不同于在存储之后流出的常规载入的值。 因此,当编译器数据前瞻一个载入时,在载入的原始位置就应该放置一条检查指令,该检 查指令用来验证是否发生了地址重叠,如果是的话,就转移到恢复代码处。通过这种方式 第7 页 国防科学技术大学研究生院学位论文 上述代码就变成: a l o a d ( i d a d d r , t a r g e t ) ; s t o r e ( s t _ a d d r , d a t a ) ; a c h e c k ( t a r g e t ,r e c o v e 哼_ a d d r ) u s e ( t a r g e t ) 目哳, 叫 数据前瞻 f i 了 日 图2 4 数据前瞻结构示意图 同样的,和控制前瞻一样,为了支持数据前瞻,在硬件上必须提供用于保证前瞻指令 正确性的硬件结构。在基于e p i c 的i t a n i u m 处理器中,采用了提前取数地址表( a d v a n c e d l o a d a d d r e s s t a b l e ,a l a t ) 的硬件结构。当执行一个提前取数操作时,在a l a t 表中创 建一项。执行相应的检测指令时,将检查a l a t ,在该表中如果存在相应的项则表明数据 前瞻成功,否则前瞻失败。当前瞻失败时,必须进行恢复工作,这时检测指令转移到编译 器产生的恢复代码处。恢复代码包括从依赖于失败的数据前瞻取值到检查指令处的全部指 令。 从上可以清楚得知:数据前瞻的关键在于建立了a l a t 表。图2 5 给出了i t a n i u m 中 a l a 丁组织结构图。a l a t 组织成两路组相连的结构,记录着寄存器的i d 和存储的物理地 址信息。 当执行提前取数指令时,对a l a t 表进行如下操作: 计算提前取数的a u 汀寄存器标识 用寄存器标识进行检索,如果存在某项与a l a t 寄存器标识匹配,则将其移走 在a l 声l t 中开辟新的一项,包括了新的a u 盯寄存器标识,取数大小,和一个由物 理内存地址产生的标识 当执行s t e r e 指令时,对a l a t 表进行如下操作: 计算存储的物理地址 用存储的物理地址进行检索,如果存在某项与a l a t 物理地址重叠,则将其移走 当执行提前取数检测指令时,对a l a t 表进行如下操作: 寻找一个匹配的a l a t 项目,如果找到了,则转到下一条指令执行 如果没有找到匹配的话,c h ka 将转移到恢复代码处 通过a u 汀体系结构硬件上的支持,实现了数据前瞻技术,克服了存贮延迟的限制。 第8 页 国防科学技术大学研究生院学位论文 r e g l o d :0 q n d e x ) 2 3 1 判断执行技术的提出 图2 5a l 芦汀组织结构图 2 3 判断执行技术 l16s e l s 分支指令带来了控制相关,它的目的地址的不确定性是提高微处理器指令并行能力的 主要障碍。传统体系结构通常采用以下两种方法来解决这一瓶颈。 利用循环展开技术,减少一部分分支指令,从而消除控制相关: 通过分支预测技术,预测分支的目标地址; 但是这些技术都有各自的局限性:首先,受物理寄存器数目的限制,循环展开的次数 不可能无限大;其次分支预测不可能1 0 0 准确,误预测引起的开销可能很大。可见传统 体系结构对于分支指令对性能的影响没有得到很好的解决,尚未充分开发出指令问的并行 性。而e p i c 体系结构则推出了判断执行技术来克服这一弊端,消除了程序中的i f 条件分 支指令,把对应的控制相关转变成数据相关,同时也消除了预测失败的情况,并且扩大了 基本块的大小,这样编译器发现并行的范围变大,可开发的并行性将会增加。在i n t e l 公 布的几个通用检测程序上所做的一项测试表明,使用判断执行技术可以减少5 0 的分支语 句,同时也可降低分支预测的失误率。可以看出,判断执行技术是一种有效地解决分支瓶 颈的技术,下面将讲述i t a n i u r n 中判断执行技术的实现。 2 3 2 判断执行技术的实现 判断执行也称作推测执行,是指令的条件执行( c o n d i t i o n a le x e c u t i o n ) 。在e p i c 体 系结构中,使用谓词( p r e d i c a t e ) 来实现这种功能。它在硬件上定义了一组1 位的谓词寄 存器,用来保存比较指令的结果,该谓词寄存器可被所有优先级别的所有程序访问到。每 条判断指令使用一个谓词寄存器,用于指示执行条件是否成立。如果谓词值为真,则指令 执行且更新状态;否则指令的运行就如同一个空操作。 例如:一个非推测指令 r l = r 2 + r 3 如果推测执行,则形式变为 ( p 5 ) r l = r 2 + r 3 f li f ( p 5 ) r l = r 2 + r 3 第9 页 国防科学技术大学研究生院学位论文 这里p 5 即谓词,如果p 5 为真,则操作正常执行;否则,作为一个n o p ( 空操作) 执行。 谓词是由比较指令( c r o p ) 来赋值的。推测执行避免了分支,将控制相关转化为数据相关。 考虑下面的代码: i f ( a b ) c = c + l e l s ed = d + e + f 在( a ,b ) 处的分支可通过转化为推测执行的代码而被消除。转化的代码如下: p t , p f = c o m p a r e ( a b ) ( p t ) c = c + l ( p f ) d = d * e + f 当条件为真时谓词p t 被置1 ,条件为假时p t 置0 ,p f 总是p t 的补。分支中的指令 c = c + 1 与d = d + e + f 的控制相关现在被转化成了数据相关,通过c o m p a r e ( a b ) 置位p t 与 p f ,分支被消除了。 有了判断执行技术后,可以分析一下e p i c 体系结构对_ :j 二分支代码是如何运作的。考 虑f 面的一段代码: 日s e 此代码是下述i f 语句翻译的机器代码 i f a p t r ! = o t h e nb 川= a 叫 e l s e b 【i 】_ a 【: i = i + l ; 它由四个基本块组成,包含两个分支,其中至少有一个分支是难预测的。而且并行执 行的可能性不大,最多是每个基本块内的指令可以并行执行。有了y - 4 断执行技术后,e p i c 体系结构是怎样处理的呢? 图2 6 给出了使用判断执行技术生成的代码。 从代码中可以分析出,由c m p 指令产生所需要的谓词值,并且用产生的值设置分配 给指令3 ,4 ,5 ,6 的谓词寄存器。在本例中,如果条件为真,那么谓词p 1 将被置为1 , p 2 被置为0 。指令3 ,4 和指令5 ,6 的控制相关性现在变成了数据相关性。通过这种技术, 完全消除了分支,代码的大小也变小了,而且避免了分支预测失败的可能性。 此外,指令推测技术使并行执行的机会增多,因为现在的代码是一个基本块,编译器 可以在更大的范围内寻求并行性。很明显,指令5 ,6 和指令3 ,4 不再存在相关,可以并 行执行,但是这并没有带来多大好处,因为正常情况下,只需执行指令5 ,6 或指令3 ,4 , 也就是处理器做了无用功。然而,通过把代码合并成一个基本块,指令1 ,2 有可能和指 令3 - - 6 并行执行,只要指令1 ,2 的执行不影响比较的结果;同时指令7 也可以和它前面 的指令并行执行。 第1 0 页 国防科学技术大学研究生院学位论文 e l s e 1 :l o a da 卟p t r 2 :p 1 p 2 = c m pa qp t r ! = 0 3 : l o a da 0 1 i 4 : s t o r eb i 】 5 : l o a da 【日r 6 : s t o r eb i 1 7 :i = i - + 1 图2 - 6 判断执行技术生成的机器代码 总之,判断执行技术消除了分支以及分支预测失效带来的开销,增大了程序的基本块, 使编译器能够在更大的范围内开发出指令的并行性。研究表明,使用判断执行和前面介绍 的控制前瞻和数据前瞻技术的微处理器性能比不使用这些技术的微处理器性能会有很大 的提高。 2 4 1 并行比较 2 4 并行比较和多路分支 利用判断执行技术可以消除汗条件分支,但当分支指令的条件是一个复合条件时,仅 是使用判断执行技术就显得比较麻烦。因为复杂的复合条件计算通常需要类似于树状的极 端过程以将几个条件变成一个。例如下述类型的l f 语句( 无e l s e 的形式) : i f ( r a r b & r c) ( s 1 ;r i f 块指令 s 2 ;+ i f 块后的指令 仅使用判断执行技术得到的机器代码为: c m pe qp l ,p 0 = r a ,0 p 1 ) b r c o n ds 2 :i c m pe qp 2 ,p 0 = r b ,0 ( p 2 ) b r c o n ds 2 : c r n pe qp 3 ,p 0 = r c ,0 ( p 3 ) b r c o n ds 2 : s 1 ;i f 块指令 s 2 ;,计块后的指令, 上述序列在所有条件都为t r u e 的情形下至少需要3 个时钟周期的执行时间,在个或 多个分支预测失效的情形下,可能需要更多的时钟周期。 为降低这种复杂条件的计算开销,e p i c 体系结构提供了特殊的并行比较指令来优化 具有a n d 或o r 操作的表达式。该比较指令的特殊性在于其允许在单个指令组中的多个 第l i 页 国防科学技术大学研究生院学位论文 a n d o r 比较指令对相同的谓词进行赋值。该特征使复杂的条件语句在一个时钟内得到结 果成为可能。但为了支持这种应用,必须保证对相同谓词寄存器进行赋值的指令,在 a n d o r 方式下,要么写入相同的值,要么根本不对该寄存器进行写操作。同时也需要在 并行比较之前对并行比较中用到的谓词进行初始化。 如果使用并行比较,对于上述代码可以得到如下改进的机器代码: c r o p e qp l ,p 0 = r 0 ,r 0 :i n i tp l = 1 c m p n e a n dp l ,p 0 :r a ,0 c r n p n e a n dp l ,p 0 = r b ,0 c r n p n e a n dp l ,p 0 = r c ,0 : ( p 1 ) s 1 广j f 块指令 s 2 * i f 块后的指令 上述序列仅在个时钟内就可得到复杂条件计算的结果。图2 - 7 给出了使用并行比较 前后的结构图,从图中看出,使用并行比较缩短了程序的关键路径,提高了性能。 二 c m p a n dp a b c : c m pa n dp a b c = 入 图2 7 并行比较结构图 除了可以利用a n d o r 方式的并行比较处理上面的条件外,还可以处理更加复杂的条 件,如( r a o ) 等。 并行比较的另外一个应用场合是当l f 和e l s e 中存在复杂条件的时候,此时不是使 用a n d 或o r 方式,而是采用o ra n d c m 方式同时计算谓词和其补足语。o r a n d c m 方式 不同于a n d o r 方式,它要么根本不对该谓词寄存器进行写操作,要么把一对互补的值写 入两个谓词寄存器。例如对于下面的l f 语句( 有e l s e 的形式) : j f ( r a = :0 i ir b = = 1 0 ) t h e nr l 2r 2 + r 3 e l s er 42r 5 一r 6 ; 使用o r a n d c m 并行比较得到如下机器代码: c m p n ep l ,p 2 = r 0 ,r 0 ,:,初始化p 1 ,p 2 c m p e q o r a n d c mp l ,p 2 = r a 巾 c r o pe qo ra n d c mp l ,p 2 = r b 1 0 : ( p 1 ) a d dr l = r 2 ,r 3 ( p 2 ) s u b r 4 = r 5 ,r 6 从上面的分析可以得知,e p i c 体系结构利用判断执行技术和并行比较彻底消除了汗 条件分支,即使分支的条件非常复杂也能处理。 第l2 页 国防科学技术大学研突生院学健论文 2 。4 ;2 多路分支 程e p i c 体系结构中指令可戬踌越分支障磷谳被提前执行,这样盼络蒙将可能导致褥 连续酌多拿分支存在,每个分支霆令鸯窖露数趣翻。为了有羧逑处理这释漆况,e p i c 蘩 蔫了多鼹分支菠术。刭霆该鼓寒霹数实臻令瓣镑溺麓瘀撬行多冬分支瓣令,著基爵敷逸 撵多个分支秘标。当然为了保滋渡技术正确蟪蜜现撩痔功镌,登须要求羚幸亍执行嚣多拿分 支指令中,只有一个指令的结栗谢效。可以通过谓词来判断多分支指令执幸予跳转的方向。 图2 - 8 给出了使用多路分支前后的示意图,对予图中指令 ( p 1 ) b r e x i t l ( p 3 ) b r e x i t 2 ( p s ) b re x i t 3 :; 霹泓在一个对镑羹鬟肉抵行。扶嚣2 * 8 蓉爨,嫒蕊矮多鼹分支缩短了程序熬关键菠经, 提离了链熬。 出 圈2 螬多路分支示意图 2 。5l t a n i u m 照邋器壤述 静蔼拢较深入她剖析了e p i c 体系结构鼬关键技术,而设计中要研制酌离性能邋尉徽 处理器核则是以笫一个商用的e p i c 指令系统体系结构l a 与4 为背最,以i a - 6 4 的第一 代处理器芯片i t a n i u m 为基础的。因此为了设计和疑现高性能微处理器的流水线,必须了 解i t a n i u m 处理器。下面从i t a n i u r n 十旨令系统和i t a n i u m 流水线两个方面对i t a n i u m 处理器 作个简要奔缨。 2 5 1i t a n i u m 指令系统 i t a n i u m 中的指令以指令包b u n d l e 的形式存在,每个指令包为1 2 8 饿,镪含三i 个指令 横和一个横叛字段,如图2 - 9 所示,每个指令横s l o t 含有一个具有独立功畿的操作,摸掇 字段受责糖搔令浃象到撬行帮传。 第1 3 页 国防科学技术大学研究生院学位论文 1 2 78 7 8 64 6 4 5 5 40 豢令耱2攒令壤l摆令稽o模投 图2 9i t a n i u m 指令包格式 簿个指令槽包含一条指令,在i t a n i u m 中每条指令4 1 位,形式类似于r i s c 搬令,格 式如图2 1 0 所示。 4 0 2 72 62 01 91 31 2650 r 厂_ t 【操作码f 目标寄存器源寄存# 胆源寄存器1 f 谓词寄存器 l。,1、,j一、。,。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电厂消防安全施工方案详解
- 线下观赛推广活动方案
- 石油材料公司活动方案
- 端午木门建材活动方案
- 电信促销活动方案
- 禁毒义捐活动方案
- 童装营业活动方案
- 电玩城场地活动方案
- 组织员活动沙龙活动方案
- 祖国诵读活动方案
- (完整word版)理论力学答案(谢传峰版)
- 下肢深静脉血栓的护理查房PPT
- 中国产业结构与布局的历史演变
- GB/T 41697-2022康复辅助器具一般要求和试验方法
- GB/T 156-2007标准电压
- AM咨询I治理方法论
- 工程财务决算审计服务方案
- 自考英语考试真题及答案新版
- Q∕GDW 11612.1-2018 低压电力线高速载波通信互联互通技术规范 第1部分:总则
- 净化实验室施工组织方案
- 110KV变电站负荷及短路电流计算及电气设备的选择及校验
评论
0/150
提交评论