(微电子学与固体电子学专业论文)基于zsp400的c程序优化方法研究.pdf_第1页
(微电子学与固体电子学专业论文)基于zsp400的c程序优化方法研究.pdf_第2页
(微电子学与固体电子学专业论文)基于zsp400的c程序优化方法研究.pdf_第3页
(微电子学与固体电子学专业论文)基于zsp400的c程序优化方法研究.pdf_第4页
(微电子学与固体电子学专业论文)基于zsp400的c程序优化方法研究.pdf_第5页
已阅读5页,还剩74页未读 继续免费阅读

(微电子学与固体电子学专业论文)基于zsp400的c程序优化方法研究.pdf.pdf 免费下载

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

文档简介

摘要 摘要 本文首先给出超标量处理器的关键技术一流水线和超标量,然后深入讨论了 z s p 4 0 0 的架构特征及各功能模块的工作原理。在此基础上分析z s p 4 0 0 应用c 程 序设计的特殊性,说明程序优化的目的、意义和可行性,提出c 程序优化的评估 标准,并给出一般优化流程。通过改进c 程序结构并结合z s p 4 0 0 的架构特点提出 基于c 语言的程序优化方法,利用这些方法编写简单的示例程序,用z v i e w l d e 分别对优化前后的示例程序进行编译与调试,通过比较二者函数统计信息来判定 示例程序性能是否提高,从而验证优化方法的正确性与可行性。最后应用这些优 化方法对离散余弦变换( d c t , d i s c r e t ec o s i n et r a n s f o r m ) c 实现程序进行了优化,使 程序性能获得了明显的提高,进一步验证了优化方法的正确性和可行性。本文所 有仿真结果都是在z n i e w i d ec 编译器自动优化级选项设为最高( 即0 3 级) 的情 况下得到的。 关键词:z s p 4 0 0 超标量z v i e w i d e 优化 a b s t r a c t i i i a b s t r a c t t h et h e s i sg i v e st h ek e yt e c h n o l o g i e so fs u p e r s c a l a rp r o c e s s o r - - p i p e l i n ea n d s u p e r s c a l a r , p r o b e si n t ot h ea r c h i t e c t u r ec h a r a c t e r so fz s p 4 0 0a n do p e r a t i o np r i n c i p l e s o fe v e r yf u n c t i o n a lm o d u l e s t a r t i n gw i t ht h ef o r m e rw o r k ,a n a l y z e st h ed e s i g n p a r t i c u l a r i t yo fca p p l i c a t i o nb a s e do nz s p 4 0 0 ,s h o w st h em o t i v e ,s i g n i f i c a n c ea n d f e a s i b i l i t ya b o u to p t i m i z a t i o n , a n di l l u s t r a t e st h eg e n e r a lo p t i m i z a t i o nf l o w o fc p r o g r a m p r o p o s e ss o m eo p t i m i z a t i o nm e t h o d sb a s e do ncl a n g u a g eb yi m p r o v i n gc p r o g r a ms t r u c t u r ea n di n t e g r a t i n gt h ea r c h i t e c t u r ef e a t u r e so fz s p 4 0 0 ,w r i t e ss o m e s i m p l ed e m o n s t r a t i o np r o g r a m su s i n gt h e s em e t h o d s ,c o m p i l e sa n dd e b u g st h e u n o p t i m i z e da n do p t i m i z e dp r o g r a m sw i t hz v i e w i d er e s p e c t i v e l y a c c o r d i n gt o c o m p a r i n g t h e i rs t a t i s t i c i n f o r m a t i o n , j u d g e s w h e t h e rt h e o p t i m i z e dp r o g r a m s p e r f o r m a n c ei se n h a n c e d ,t h u sv e r i f i e st h ev a l i d i t ya n df e a s i b i l i t yo fo p t i m i z a t i o n m e t h o d s i nt h ee n d ,t h et h e s i so p t i m i z e sc i m p l e m e n t a t i o np r o g r a m sb a s e do nd i s c r e t e c o s i n et r a n s f o r ma l g o r i t h m sw i t ht h eh e l po fo p t i m i z a t i o nm e t h o d sp r o p o s e db ya b o v e p a r a g r a p h s ,e n h a n c e st h ep r o g r a m s p e r f o r m a n c ep r o m i n e n t l y , a n df u r t h e rv e r i f i e st h e v a l i d i t ya n df e a s i b i l i t yo fo p t i m i z a t i o nm e t h o d s a l lt h es i m u l a t i o nr e s u l t so ft h et h e s i s w e r eg o tu n d e rt h ec o n d i t i o nt h a ta u t o m a t i co p t i m i z a t i o nl e v e lo fz v i e w l d ec c o m p i l e rw a ss e ta ss u p e r l a t i v ed e g r e e ( - 0 3l e v e l ) k e y w o r d :z s p 4 0 0s u p e r s e a l a rz v i e w l d eo p t i m i z e 西安电子科技大学 学位论文创新性声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名:型筵奎鲎日期:圣皇1 3 :;! 至 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属于西安电子科技大学。学校有权 保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分 内容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业 后结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。 本人签名: 导师签名: 日期:垒牡 日期:塑生:】,墨 第一章绪论 第一章绪论 1 1 课题的背景 嵌入式处理器是嵌入式系统的核心,是控制、辅助系统运行的硬件单元。嵌 入式处理器的一个重要指标就是“位数”,即处理器处理二进制数据的位宽。我们 常说某处理器是1 6 位或3 2 位,指的就是这一参数。 嵌入式处理器已从最初的4 位、8 位发展到今天的1 6 位、3 2 位以至6 4 位。 嵌入式系统的发展是如此迅猛,以致没有人能说清世界上到底上有多少种嵌入式 处理器。据不完全统计,目前世界上具有嵌入式功能特点的处理器已经超过1 0 0 0 种,流行的体系结构有3 0 多个系列。 嵌入式处理器范围如此广泛,要对其进行准确地分类是一件困难的事,目前 尚未找到公认的统一的标准。业界看法相对一致的分类【1 】为:第一类是嵌入式微处 理器( m p u ,m i c r o p r o c e s s o ru m o ,由通用计算机的c p u ( c e n t r a lp r o c e s s i n gu n i t ) 演 变而来,具有小体积、轻重量、低成本和高可靠性等优点。第二类是嵌入式微控 制器( m c u ,m i c r o c o n t r o l l e ru n i t ) ,m c u 又称单片机,其最大特点是单片化,体积 大大减小,可靠性提高,是目前嵌入式系统工业的主流。第三类是嵌入式数字信 号处理器( d s p , d i g i t a ls i g n a lp r o c e s s o r ) ,d s p 是执行高速数字信号处理的集成电 路,在系统架构和指令算法方面进行了特殊设计,编译效率高,指令执行速度快, 实时性好,具有很强的数字信号处理能力,目前已广泛应用于音视频编解码、无 线通信、移动多媒体等领域。第四类是嵌入式片上系统( s o c ,s y s t e mo nc h i p ) ,s o c 将整个系统集成在一颗芯片上,能实现更复杂的功能,具有高性能、高集成度、 高可靠性、低设计成本、短上市时间、低功耗等特点【2 】,目前s o c 的发展势头非 常迅猛,这主要得益于e d a ( e l e c t r o n i cd e s i g na u t o m a t i o n ) 工具的推广和超大规模 集成电路技术与工艺的突破。 本文介绍的z s p 4 0 0 就是嵌入式数字信号处理器的一种。它基于s c ( g e d u c e d i n s t r u c t i o ns e tc o m p u t e r ) 架构,具有1 6 位正交指令集,采用5 级超标量流水线处 理技术,每个周期最多可执行4 条指令,指令执行的峰值速率可达8 0 0 m i p s ( m i l l i o n i n s t r u c t i o n sp e rs e c o n d ) 。硬件处理流水线相关性问题,并应用了静态分支预测技术, 减少了分支指令给流水线带来的危害。数据存储器操作使用l o a d 和s t o r e 指令,这 两个指令是唯一能访问数据存储器的指令。特有的数据链接结构保持了数据缓存 对连续不断的数据流的填满。指令和数据缓存提高了指令和数据的访问速度,增 强了处理器的性能,降低了它的功耗。z s p 4 0 0 还包含两个寄存器阵列,分别由2 6 2 基于z s p 4 0 0 的c 程序优化方法研究 个1 6 位控制寄存器和1 6 个1 6 位通用寄存器组成。前者主要用于执行控制信息、 处理器状态码和配置核的一些特征等,后者主要作为操作数寄存器使用。z s p 4 0 0 以其灵活的解决方案和出色的性能而占有了d s p 市场的一席之地,目前主要应用 于语言、无线通信和多媒体等领域。国内外许多著名公司的s o c 芯片中都集成了 z s p 4 0 0 内核,以作为协处理器使用。 1 2 课题的主要工作 本文首先给出超标量处理器的关键技术一流水线和超标量,然后深入研究 z s p 4 0 0 的架构特征及各功能模块的工作原理,并依此为出发点分析基于z s p 4 0 0 应用c 程序设计的特殊性,说明c 程序优化的目的、意义及可行性,给出优化的 评估标准和流程。通过改进c 程序结构并结合z s p 4 0 0 的架构特点提出基于c 语 言的程序优化方法,利用优化方法编写相应的示例程序,在z s p 4 0 0 集成开发环境 z v i e w i d e 平台下分别对优化前后的示例程序进行编译与调试,比较两者的运行结 果与函数统计信息,以此判定示例程序性能是否提高,从而验证优化方法的正确 性和可行性。本文最后做了几类离散余弦变换( d o t , d i s c r e t ec o s i n et r a n s f o r m ) 程序 的优化工作。有针对性地选择d c t 有效算法,然后基于这些算法编写d c t 程序, 利用前文经过验证的优化方法对d c t 程序进行优化设计,使得d c t 程序的性能 有了明显的提高,进一步证明了优化方法的正确性和可行性。 1 3 论文的结构安排 论文的结构安排如下: 第一章,绪论。介绍课题背景及来源、课题的主要工作及目标。 第二章,超标量处理器关键技术。阐述流水线、超标量等关键技术,并介绍 一些其它辅助技术。 第三章,z s p 4 0 0 架构分析。给出z s p 4 0 0 架构的主要特征,并分析其主要功 能模块的结构特点和工作原理。 第四章,基于z s p 4 0 0 的c 程序优化方法。说明优化的目的、意义和可行性, 给出c 程序优化的评价依据,通过改进c 程序结构并结合z s p 4 0 0 的架构特征提 出基于c 语言的程序优化方法,在z v i e w i d e 环境下进行验证,分析优化结果。 第五章,基于z s p 4 0 0 的d c t 程序优化设计。有针对性地选择d c t 有效算法, 基于这些算法编写d c t 程序,利用第四章提出的优化方法对d c t 程序进行优化, 并在z v i e w l d e 环境下验证。 第六章,总结与展望。总结课题的主要工作,并指出有待改进的地方。 第二章超标量处理器关键技术 第二章超标量处理器关键技术 由于z s p 4 0 0 是一款基于r i s c 架构的嵌入式数字信号处理器,采用超标量流 水线处理方案,所以它同时也是一种超标量处理器。超标量处理器的最大特点是 每个周期任一流水段都可执行多条指令,即指令的执行在时间和空间上均具有并 行性,并通过配置多个功能部件,增强了并行执行程序的能力,提高了吞吐率。 它的另一个主要特点是支持指令的乱序执行。对超标量处理器的设计来说,流水 线和超标量是最关键的技术。本章将对这些内容进行较深入的讨论。 2 1 1 提出的动机 2 1 流水线技术 流水线技术是指令集处理器设计中的最基本技术,但是流水线这个概念绝对 不是发明于处理器设计领域,可能来自生产车间。在处理器设计领域,提出流水 线的最初动机是提高系统吞吐率的同时几乎不增加硬件的开销。系统吞吐率或者 称为带宽( b a n d w i d t h ) ,用系统单位时间内完成的任务数目来衡量,它刻画了系统的 性能。对于一个系统,如果它在一段时间内完成一个任务,那么吞吐率( t h r o u g h p u t ) 就是1 d ,d 是任务的延迟或者称为系统完成任务的延迟。 流水线技术就是把系统任务分割成k 段,并且在段与段之间增加适当的缓冲 ( 通常是边沿触发的寄存器) ,这些段以及段与段之间的缓冲就构成了流水线。 这样,系统原来的运算量就被分割成k 个分量,分别由流水线的k 个段来处理。 当某一任务通过了流水线的第一段后,新的任务就可以进入流水线。因此,每隔 d k 个时间单位就可以启动新的任务,而不再是非流水线情形下的d 个时间单位 了。同时,流水线中k 个分量的计算是重叠的,即多个任务可以在时间上流水线 式地重叠执行,k 段流水线最多可同时处理k 个任务。这里,我们假设系统完成任 务的延迟d 被均匀地分摊到k 个流水段中,并且所增加的缓冲没有带来额外的延 迟。因此,流水线可使系统的吞吐率达到原来的k 倍。 2 1 2 流水线理想假设 要使流水线全速不停地运行,需要满足以下3 个理想假设【3 】: ( 1 ) 一致的运算分量:要完成的整个运算量可以均匀地分成延迟一致的若干分 4 基于z s p 4 0 0 的c 程序优化方法研究 量。 ( 2 ) 重复的运算:输入数据有大量相同的、重复的运算。 ( 3 ) 独立的运算:所有相同的重复运算之间没有相关性。 在设计流水线处理器时,3 条流水线理想假设恰好体现了设计的3 个挑战。流 水线处理器设计的主要任务就是缩小理想假设与实际情况的差异。3 条流水线理想 假设对应的3 个主要设计挑战剐4 】: ( 1 ) 一致的运算分量- 保持流水段均衡 ( 2 ) 重复的运算- 统一指令类型 ( 3 ) 独立的运算- 尽量减少流水线停顿 2 1 3 流水线技术对处理器性能的影响 首先看一个衡量处理器性能的公式: 1 二= c c t ( 2 1 ) 尸 式( 2 1 ) 中p ( p e r f o r m a n c e ) 表示性能,i c ( i n s t r u c t i o nc o u n t ) 表示指令数, c p i ( c y c l e sp e ri n s t r u c t i o n ) 表示执行每一条指令耗费的时钟周期数,t 表示机器的 时钟周期时间。由于在非流水线机器中,指令是一条一条地串行执行,即后一条 指令要等前一条指令执行完成后才能进入处理器执行,所以每条指令都平均花费 c p i t 的执行时间,而在这个c p i x t 的时间内,处理器一般要完成这几项工作: 取指,译码,执行,访存和写回。一般的过程是:处理器先从存储器或高速缓存 中将需要执行的指令取进来,然后送到译码部件进行译码,指令被译码后送入 a l u ( a r i t h m e t i cl o g i cu n i t ) 部件执行,如果是访存指令,则执行的结果要被送回存 储器,所以启动相应的访存操作,如果是寄存器指令,则执行的结果要被写回寄 存器中,所以就启动相应的写回操作。这样,非流水线机器中所有这些操作就被 混杂在一起,没有严格的界限,也就是说,所有这些操作加起来需要耗费c p i x t 的时间,并且一条指令在执行时,其它的指令都只能在处理器外部等待,这就耗 费了很多不必要的等待周期。 将流水线技术应用于处理器后,大大提高了指令执行的效率。基本思想为: 将处理器内部执行一条指令的过程划分为取指( ) 、译码( d ) 、执行( e x ) 、访存 ( m e m ) 和写回( 、b ) 等5 段,每段所占用的处理器时间为c p i t 5 。当一条指令由 取指阶段进入译码阶段时,不是让后续的指令继续在处理器外部等待,而是让它 进入处理器内部的取指阶段,因为此时取指部件已经空出来了。当先前的指令进 入执行阶段时,紧接着的一条指令又可顺势进入译码阶段,这时处理器外部又有 一条指令可以进入处理器内部的取指阶段,以此类推,形成一个5 段的流水线。 第二章超标量处理器关键技术 当流水线充满时,指令在处理器内部的分布情况如表2 - 1 所示: 表2 1 指令在流水线中的分布 周期 指令 12 3 4567 89 指令i i f i d e xm e mw be n d 指令i + l i fi de xm e mw be n d 指令i + 2 i fi de xm e m、v be n d 指令i + 3 i f1 i )e x m e mw be n d 指令i + 4 i fi d e xm e mw b 由表2 1 知,如果周期1 是开始周期,而到时钟周期5 的时候流水线已经完全 充满,理想情况下,从时钟周期6 开始,每一个时钟周期可以执行完一条指令。 由于此时的一个时钟周期时间为c p i x t 5 ( 实际情况可能会大于c p i t 5 ) ,而i c 不变,由公式( 2 1 ) 知,处理器性能为非流水情况下的5 倍。这就是流水线的魅力 所在。 2 2 1 超标量流水线 2 2 超标量流水线技术 一般地,2 1 节所描述的流水线被称为标量流水线。它虽然看上去很强大,但 实际上也存在着以下几种局限性【5 】: ( 1 ) 标量流水线最大的吞吐率不会超过每周期一条指令。 ( 2 ) 将不同类型的指令放在一条流水线中处理,效率低下。 ( 3 ) 为了保证流水线的步调一致而插入的停顿使流水线产生很多气泡。 为了克服这些局限性,人们设计出超标量结构。超标量流水线也因此成为标 量流水线的一个理想替代品。 超标量流水线可以看作从标量流水线衍化而来,它属于并行流水线,本质特 点是每个周期可同时发射多条指令,并在执行阶段配置多个功能部件,增强了并 行执行程序的能力,提高了吞吐率。此外,它还支持指令的乱序执行( o u to fo r d e r e x e c u t i o n ) ,即不按照原始的指令顺序执行。因此超标量流水线具有以下三大特征: ( 1 ) 并行流水线。所谓并行流水线就是多条指令可同时位于同一流水段,并能 在同一周期启动多条指令执行的流水线,是时间并行和空间并行的结合体。图2 。l 为机器并行性的各种结构。( a ) 为无并行性;( b ) 为时间并行性;( c ) 为空间并行性; 基于z s p 4 0 0 的c 程序优化方法研究 ( d ) 为时间并行和空间并行融合。每个周期最多可执行的指令数称为超标量流水线 的宽度。图2 1 ( d ) 的结构就是超标量流水线。 佃,町例开仃柙芏唧开玎矗芎 图2 1 机器并行性 机器的并行度可以用任一时刻能够同时处理的最大指令数来衡量。一条k 级 的标量流水线中最多可同时有k 条指令在执行,因此相对于非流水机器,它可以 获得k 倍的加速比。但是对超标量流水线来说,如果k 级流水线的宽度( 每个周 期能同时发射的最多指令数) 为s ,那么超标量流水线最多可同时有k xs 条指令, 所以相对于非流水机器,它可获得k x s 倍的加速比,相对于标量流水线机器,它 可获得s 倍的加速比。 ( 2 ) 多配置流水线。在执行阶段为不同类型的指令提供了不同的执行部件( 子 流水线) 的并行流水线称为多配置流水线。不同类型的指令执行所需的硬件资源 是截然不同的。标量流水线中将执行不同类型指令的硬件集中在一条流水线中实 现,因此效率很低。既然每种类型的指令只用到执行部件的一个子集,没有必要 流过执行部件的所有段,所以在不必要的流水段中,这些指令只有一个空操作而 已。所有指令的延迟是相等的,都等于流水线的长度。这种实现给后续指令带来 了不必要的停顿并且需要额外的电路【6 】。并行流水线似乎可以减少这些不必要的停 顿,因为它可以把不同类型的指令发射到不同的流水线上去。但由于并行流水线 中每条流水线都是相同的,为了适应各种指令,流水线中配置了一些冗余的阶段, 某些指令在这些阶段上还是要以空操作的方式流过,即没有彻底解决标量流水线 第二章超标量处理器关键技术 7 留下的问题。而多配置流水线相当于一种全定制的并行流水线,它把各种指令中 共性的阶段抽取出来,合成在一条流水线中,而个性的阶段再分成多条流水线, 这多条流水线是以指令类型来划分的,每条所经过的阶段都不一样( 而不是像并 行流水线那样重复配置) ,因此每条指令流过属于自己的流水线,不会产生任何不 必要的空操作或停顿【7 1 。 ( 3 ) 动态流水线。动态流水线就是支持指令乱序执行的并行流水线。多配置流 水线似乎已经很完美了,但是实际情况可能比想象中的要复杂一点。一般情况下, 多配置流水线在指令相关性化解以后,并不能以任意的顺序将指令发射到执行部 件去执行,即后面的指令是不可以先于前面的指令执行的。因为指令在执行过程 中可能会产生异常,比如以下两条指令: 1 1 :b r l a b e l l 1 2 :d i vr 2 ,r 1 ( 这里假设r 1 = o ) 假设指令2 先于指令l 发生到执行单元中去,则会产生一个除以0 异常,但 是实际上由于它前面的指令是一条分支跳转指令,分支跳转后,指令2 根本没有 机会得到执行,更说不上会产生什么除以0 异常了,所以此时产生的除以0 异常 就是不精确的,即精确异常现象,这种情况应该避免发生。 我们知道,标量流水线是严格的( r i g i d ) ,所有指令必须前后紧接,步调一致【8 】。 一旦标量流水线的某段停顿,那么它之前的所有流水段都必须停顿,这就造成了 流水线产生了过多的不必要的停顿周期,使得效率低下。同样地,如果多配置流 水线不采取一些特殊的措施,那么它就和标量流水线一样就会造成过多的不必要 的流水线停顿,虽然可能只是其中的某一条流水线,但也会导致效率变低。 如果采用重排序队列,使指令乱序发射,有序提交,就可以大大减少停顿引 起的多个周期的开销,提高指令的执行效率,这就是动态流水线。只有具备了动 态结构的多配置并行流水线才是真正的超标量流水线。 2 2 2 其它辅助技术 流水线和超标量是现代处理器设计中的核心技术。为了高效地实现这些技术, 还需要一些其它辅助技术,主要有: ( 1 ) 分支预测技术。流水线机器只有在流水模式( s t r e a m i n gm o d e ) 下才能达到最 大的吞吐率。在取指段,流水模式是指从程序存储器中的连续位置顺序地取指。 每当程序的控制流背离了顺序的方向,流水模式就会被打破。对于无条件分支指 令,直到分支地址确定以后,下一条指令才能取出;而对于条件分支,处理器必 须等待分支条件的结果,若分支跳转,则继续等待分支地址产生,否则顺序读取 下一条指令。换句话说,只有当条件分支指令在分支部件中处理完毕并且条件和 基于z s p 4 0 0 的c 程序优化方法研究 分支目标地址均确定之后,取指段才能正确地读取下一条指令。可见分支指令能 造成不少停顿开销。 实验研究表明,分支指令的行为是可以预测的。要减少分支开销,增加指令 流吞吐率,一种有效的方法就是对分支指令的目标地址和判定条件进行预测,即 分支预测技术。一条静态分支指令在程序运行时经常会被重复执行,它的动态行 为是有章可循的,因此可以根据该指令过去的行为对它将来的行为进行有效地预 测。分支预测主要包括两部分,即分支目标地址的推测和分支条件的推测。任意 一种推测机制都必须能够验证分支预测的结果,并且在预测失败时能够恢复正确 的执行方式【9 】,这是设计推测机制的前提条件。分支目标地址的推测可以通过设置 分支目标缓冲( b t b ,b r a n c ht a r g e tb u f f e r ) 来实现。采用基于历史信息的分支预测策 略对分支方向进行预测时,跳转还是不跳转取决于先前已经发生的分支方向。分 支方向的推测有多种方法,其中最简单的是设置取指硬件总是预测为不跳转。 ( 2 ) 寄存器重命名技术。数据相关性是流水线必须解决的核心问题之一。流水 线运行过程中可能会遇到假数据相关、反相关和输出相关等问题,如果直接去处 理,会耗费一些不必要的周期。假数据相关、反相关和输出相关是由于寄存器重 用( r e g i s t e rr e u s e ) 弓i 起的。解决这个问题的一种有效方法是为同一体系结构寄存器 中的多个定义动态分配不同的名字,称为寄存器重命名( r e g i s t e r r e n a m e ) 。寄存器重 命名需要硬件的支持并可以在执行时撤销寄存器重用,恢复所有当前指令的值与 寄存器之间的一一对应关系。通过重命名,程序在执行过程中重新生成了单一赋 值代码,从而消除了反相关和输出相关,使得本来具有假相关的指令可以并行地 执行【10 1 。实现寄存器重命名的一般方法是在体系结构寄存器文件( a r f , a r c h i t e c t u r e r e g i s t e rf i l e ) 之外配置一个独立的重命名寄存器文件( r r f ,r e n a m e dr e g i s t e rf i l e ) 。 ( 3 ) 超流水技术。通用的流水线分为取指、译码、执行、写回等4 个流水段, 把这样的流水线叫做基准流水线。超流水是相对于基准流水线而言的。由式( 2 1 ) 及流水线对处理器性能的影响知,如果流水级数越多,处理器性能越高。因此, 超流水就是通过增加基准流水线的级数,将某些功能进一步细分,使得在更短的 时间内就可以从处理器流出一条指令。6 4 位m i p s ( m i c r o p r o c e s s o rw i t h o u t i n t e r l o c k e dp i p e l i n es t a g e s ) r 4 0 0 0 处理器是第一个采用超流水技术的处理器。需要 指出的是,流水级也不是越多越好,流水级的增加将会导致更多的硬件开销,使 成本增加,性能降低。在硬件电路的实现上也要受到组合逻辑的最长和最短延迟 之差、建立和保持时间、时钟偏差和抖动等因素的制约。因此需要在性能和硬件 开销之间权衡。 ( 4 ) 高速缓存( c a c h e ) 技术。前文在讨论流水线时一直假设访存操作可以在一个 周期内完成,这是说明流水线的工作原理时必须作的假设,否则,流水就没法形 成。事实上,处理器在访存阶段是不可能在一个周期内完成的,起码需要几十个 第二章超标量处理器关键技术 周期。也就是说,流水线的第一级一取指段就要等待几十个周期,这显然是流水 线所不能容忍的,它要求每一个流水级都必须在一个周期内完成,否则流水化就 不能实现。于是,高速缓存技术应运而生。处理器访问c a c h e 的速度要远远快于访 问内存的速度,此外,c a c h e 中保存着最近访问的数据或指令,根据程序访问的局 部性原理【1 ,处理器下一拍准备访问的数据或指令,多数情况下都可以在c a c h e 中找到,即满足一拍就能从c a c h e 中取出数据或指令。这就满足了流水线设计的要 求。 2 3 本章小结 本章主要阐述了超标量处理器的关键技术一流水线和超标量,给出流水线技 术的提出动机、理想假设以及所面临的设计挑战,分析流水线技术对处理器性能 的影响,然后讨论并行流水线、多配置流水线、动态流水线等超标量流水线技术 的三大特征,并介绍一些超标量流水线的关键辅助技术。 第三章z s p 4 0 0 架构分析 第三章z s p 4 0 0 架构分析 z s p 4 0 0 是一种基于r i s c 架构,采用超标量处理方案的1 6 位定点嵌入式数字 信号处理器,指令执行速度快,最高可达8 0 0 m i p s ,并应用了特有的低功耗技术, 支持a m b a 总线标准,易接入外部设备而构成复杂系统,因其出色的数字信号处 理能力而常被作为s o c 中的协处理器使用。 z s p 4 0 0 架构的主要特征: ( 1 ) 基于r i s c 架构,采用超标量流水线处理方案。每个周期可执行多条( 最 多4 条) 指令,硬件处理流水线相关性问题,应用静态分支预测技术减少分支指 令给流水线带来的危害。 ( 2 ) l o a d s t o r e 架构。数据存储器操作使用l o a d 和s t o r e 指令,它们是唯一能访 问数据存储器的指令。数据从数据存储器移动到寄存器通过数据缓存完成。所有 其它指令都是寄存器对寄存器操作,寄存器操作节省了存储器的带宽。z s p 4 0 0 支 持数据前推机制,使一个功能单元的结果可被任一功能单元在下个周期无损失地 使用。 ( 3 ) 数据链接。数据链接结构保证数据缓存对连续不断的数据流的填满,链接 允许流动的操作数旁路到通用寄存器上。共有三个通用寄存器可支持链接。索引 寄存器的内容用于链接自动更新。 ( 4 ) 高速缓存技术。指令和数据缓存提高了指令和数据的访问速度,增强了处 理器的性能,降低了它的功耗,指令和数据缓存的预取器支持确定性操作,扩展 精度操作数可存储于数据存储器任何位置,不受队列的限制。 ( 5 ) 寄存器阵列。z s p 4 0 0 架构共包含1 6 个1 6 位通用寄存器和2 6 个1 6 位控 制寄存器。前者主要作为操作数寄存器使用,后者主要用于执行控制信息、处理 器状态码和配置核的一些特征等。 3 1 基本功能单元 z s p 4 0 0 架构由7 个基本功能单元组成:数据单元( d u ,d a t au n i t ) ,指令单元( t o , i n s t r u c t i o nu n i t ) ,流水控制单元( p c u ,p i p e l i n ec o n t r o lu n i t ) ,执行单元( e u , e x e c u t i o nu n i t ) ,控制寄存器阵列( c r ec o n t r o lr e g i s t e rf i l e ) ,中断控制单元( i c u , i n t e r r u p tc o n t r o lu n i t ) 和器件仿真单元( d e u ,d e v i c ee m u l a t i o nu n i t ) 。图3 1 为典型 的基于z s p 4 0 0 的s o c 系统框图。其中,j t a g ( j o i n tt e s t a c t i o ng r o u p ) 控制器、锁 相环( p l l ,p h a s el o c k e dl o o p ) 、引导用只读存储器( b o o tr o m ) 、程序存储器 1 2 基于z s p 4 0 0 的c 程序优化方法研究 ( p r o g r a mm e m o r y ) 、数据存储器( d a t am e m o r y ) 、直接存储器访问( d m a ,d i r e c t m e m o r ya c c e s s ) 控制器、外部存储器接口单元( m x u ,e x t e r n a lm e m o r y i n t e r f a c eu n i o 和外设等模块不是z s p 4 0 0 内核的组成部分。 图3 1 基于z s p 4 0 0 的s o c 系统框图 所有指令都从中去取,然后被送至p c u ,p c u 对指令进行分组,并负责 内务处理和算术单元结果旁路,使流水线操作同步,同时处理来自i c u 的中断请 求。l o a d 和s t o r e 指令通过d u 执行,而算术和逻辑操作则被送到e u ,操作结果 相继被写回到操作数寄存器阵列( o 瓯o p e r a n dr e g i s t e rf i l e ) 中的寄存器。d e u 监 控流水线中出现的诸如地址和数据断点这样的事件,d e u 主要是通过外部j t a g 接口来控制。 3 2 指令单元( i u ) i u 由指令缓存、指令预取器、分支预测逻辑和指令分配器构成。 指令缓存排列从指令存储器中取出的指令,用于减少指令存储器功耗。预取 器保证指令缓存饱和,并使流水线停顿最少。分支预测逻辑使流水线刷新时间最 短。指令分配器总是从指令缓存中取4 条指令并进行解码。分配器每个周期最多 第三章z s p 4 0 0 架构分析 可发射4 条指令给d u 和p c u 。然后d u 和p c u 从寄存器或存储器中读出所需的 操作数并执行指令。 3 2 1 指令缓存和指令预取器 指令缓存和预取器的主要功能分别是排列指令和降低指令存储器功耗,工作 时二者互相配合。 z s p 4 0 0 的指令缓存由8 个缓存行组成,每行可保存4 条指令。图3 2 给出了 缓存行的结构。指令缓存每个周期从程序存储器中读取4 条指令。 6 4 位 缓存榔臣互堕工互丑卫 缓存行1 i 指令4i 指令5i 指令6 指令7 h 一 1 6 位 图3 2 缓存行结构 z s p 4 0 0 的指令缓存是一个直接映射缓存,即指令存储器的每行都映射到一个 特定的缓存行( 主存储器行地址对缓存行数取模) 1 2 】。 玎从指令缓存中取指令时经常会引起缓存差错,在每个引起缓存差错的程序 流中断发生时,流水线最少受到两个周期的停顿惩罚。 当执行外部存储器任务时,不使用预取器。如果被请求的4 待取指令不在指 令缓存中,则流水线中断而外部存储器被访问,并且指令被保存到缓存中。预取 器在发出请求前不会读取指令。当执行外部存储器指令时,流水线停止的次数 取决于存储器等待状态的数目。 从指令缓存中取指时可能会出现跨越缓存行的现象。如果4 指令的取包跨 越了两个缓存行的话,直接从指令存储器取指就需要两个独立的s r a m ( s t a t i c r a n d o ma c c e s sm e m o r y ) 输出端口。此外,取指段和译码段在z s p 4 0 0 流水线中合 并为一。取指段直接访问指令缓存中的寄存器而不是指令存储器。后台工作的预 取器将指令从指令存储器取出。 为了简化存储器设计,z s p 4 0 0 采用一个更短的5 级流水线和仅有一个单读端 口的指令存储器。指令分派器总会找到缓存中4 个预取的指令,除非程序流发生 中断,比如出现一个无条件分支或者一个分支预测错误。在一个程序中断处,即 下一取包跨越了两个缓存行并且在缓存中不可用时,这两个缓存行都必须被写入 指令缓存。这个写入引起3 个周期的启动惩罚。因此,把分支目标排列到缓存行 的开头( 即第一个指令) 可以节省一个启动周期。 一般情况下,预取器只预先读取大约个缓存行的指令。在指令分配器发现 1 4 基于z s p 4 0 0 的c 程序优化方法研究 所有缓存中的指令情况下,主存储器( 不管是片上还是片外) 将不被访问。所以, 每个周期缓存使得主存储器避免被多次访问,这就降低了系统级功耗。 总的来说,若在程序中断后出现的第一个取包对应一个缓存行并已不在指令 缓存中,则会产生2 个周期的建立时间惩罚。否则,由于必须从主存储器中检索 到两缓存行,这样就会引起3 周期惩罚。这些惩罚只与执行于片上存储器的程序 相关。片外的程序执行不使用预取器并且依赖于外部存储器等待状态的数目。 3 2 2 分支预测 z s p 4 0 0 架构使用的是静态分支预测技术。在静态分支预测技术中,条件分支 的方向是基于分支的类型和分支方向的。预取器假定分支目标并将其送入流水线 中。若分支目标假定错误,则刷新流水线,并将实际目标的指令送入流水线。一 般而言,预测结果都是准确的且分支不会受到惩罚。使用静态分支预测,就不需 要其它处理器所必需的分支延迟槽。 若预测错误的取包排列在一个缓存行中,一个预测错误的分支指令通常会导 致一个5 周期的惩罚。否则,预测错误惩罚为6 个周期,因为另外一个缓存行必 须被读取到指令缓存中去。 当预测错误的取包位于指令缓存中时,缓存读取就不必暂停2 个周期。这样, 对于分支预测错误,处理器将只受到3 个周期的流水线刷新惩罚。 总之,如果分支目标指令位于缓存中,则会受到3 个周期预测错误惩罚。另 外,如果分支目标被排列在缓存行起始处时,分支预测错惩罚就是5 个周期,否 则为6 个周期。 3 3 数据单元( d u ) d u 由数据缓存、数据预取器和环形缓冲器单元构成。d u 也可使数据构成数 据链接,它在使用前能减少从存储器到通用寄存器的操作数写入。d u 每个周期能 预取和缓存4 数据字。写逻辑每个周期可执行单字或双字写入。d u 也向2 个环形 缓冲器和3 个数据链接寄存器的运行提供硬件支搏13 1 。 3 3 1 数据缓存、数据预取器和数据链接 数据缓存是一个完全相关的完全写x ( w r i t e t h r o u g h ) 缓存,由1 7 个缓存行构成, 每行可保存4 个单精度( 1 6 位) 操作数。 数据链接由数据链接索引寄存器存储的值来确定。这些索引寄存器,位于执 第三章z s p 4 0 0 架构分析 行单元的通用寄存器阵列中,它们是r 1 3 ,r 1 4 和r 1 5 。无论何时,一个地址被存进 一个数据链接索引寄存器中,数据单元都会重置链指针。当链寄存器引用的数据 在下一次被l o a d 指令调用时,数据预取器从数据存储器中取出两个缓存行的数据 到数据缓存中并建立数据链。 z s p 4 0 0 支持3 个数据链接寄存器或3 组离散的连续数据流。一旦数据链接建 立完成,这3 组数据任一个的连续操作数的访问不会招致寄存器l o a d 惩罚。 由于l o a d 指令每个周期可以从数据缓存中读取4 个1 6 位操作数或者2 个3 2 位操作数,而数据缓存每个周期又可从数据存储器取出6 4 位的一个缓存行,这样 填充率与消耗率正好相匹配。然而,数据预取器每周期只能为一个数据链服务, 这样,通常就需要在建立序列内预取两个缓存行,以确保z s p 4 0 0 不会用完一个循 环中的数据。 然而,如果一个数据链的第一个操作数排列在缓存行的起始位置,那么第二 个缓存行不必立即取用,因为下一个3 2 位的操作数已经位于同一个缓存行中。数 据预取器填充缓存的速度总可以比机器消耗链中数据的速度快,这样,z s p 4 0 0 就 可以在数据链接建立时节省一个周期。 除了给数据缓存写入两个缓存行所需要的建立惩罚之外,数据链接建立由于 检测环形缓冲器的边界还会招致一个周期的额外惩罚。 ! 型曼二竺已黼躺 ! 图3 3 数据链接结构 数据缓存的其它优点在于它降低了系统级功耗。通常并不是每个周期都需要 从数据存储器中读取一个包含操作数的缓存行,这样,当不需要操作数时,就不 必访问数据存储器。这就降低了系统功耗。 1 6 基于z s p 4 0 0 的c 程序优化方法研究 3 3 2 数据链接建立 一旦链寄存器中的值被m o v 或l o a d 指令改写,则该链接重置。下一次这个链 寄存器就用作l o a d 指令的索引,且需要一个链接建立序列来构成新的数据链。这 个序列涉及到两个从数据存储器写入数据缓存的缓存行。图3 4 所示为数据链接的 建立,该例中假设数据是在片上存储器中。 f orew 9 4口3 1 21 17 n 1 3 n5 数据链被重置 0 59 4 1 41 21 1 n + 1 1 51 3 停顿被涪零的数据链第一次l o a d 发送m e m ( n5 ) 地址给数据存侍器增量为n 5 口59 4 1 4 1 2n n + 2 1 51 3 停顿俱存缓;i t - 行 1 到数据缓存行麓送r r l e g r lcr 15 ) 地址给数据存 储器增量为r l5 a 5口4 i 4 1 2 1 1 n + 3

温馨提示

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

评论

0/150

提交评论