流水线控制相关延迟消除方法技术

技术编号:2882002 阅读:259 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种流水线控制相关延迟消除方法,其目的是在满足硬件实现简单、功耗低的前提下,高效消除流水线控制相关延迟,提高微处理器性能。技术方案是:由编译器确定分支指令所有可能的转移目标地址并插入预取指令;由两个取指令部件提前读入当前分支指令的所有后继指令,并由选择器根据对当前分支指令的译码结果选择一个取指令部件提供的指令进行译码和执行。预取指令有fetch addr1,addr2、fetch addr、fetch stack三条,它们对应不同的分支指令,由取指令部件执行。指令预取以基本块为单位。本发明专利技术硬件实现复杂度低、功耗低,控制相关延迟消除率高,无效预取指令数少。采用本发明专利技术设计的微处理器有极高性能价格比。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及微处理器设计中流水线控制相关延迟的消除方法,尤其是要求功耗低、硬件实现简单的嵌入式微处理器设计中流水线控制相关延迟的消除方法。
技术介绍
目前,微处理器设计中消除流水线控制相关延迟的方法大致可以分为两类,即分支预测和延迟分支方法。分支预测方法主要利用程序运行时的局部性原理,根据分支指令执行结果的统计信息预测下次分支转移是否成功。分支预测的效果不仅取决于其准确性,而且与分支预测时的开销密切相关。流水线控制相关延迟取决于流水线的结构、预测的方法和预测错误后恢复所采取的策略。这种方法的不足之处在于,预测需要大量的硬件支持,例如预测表和预测错误后的恢复部件等,实现开销大、功耗高。延迟分支方法的主要思想是在控制相关暂停周期内执行与分支指令无关的指令,从而掩盖该暂停周期。这种方法的不足之处在于,无法填充所有的分支延迟槽,同时无法保证被调度的指令总是必须要执行的,如果不是必须的,那么性能得不到真正提高。嵌入式微处理器主要应用于家电、手机、微控制器等领域,要求功耗低,以上方法要么无法满足其功耗低、复杂度低的要求,要么控制相关延迟消除率低,无法充分提高其性能。即使在通用微处理器设计中,这些方法也无法高效率地消除流水线中的控制相关延迟。
技术实现思路
本专利技术所要解决的技术问题是在满足嵌入式微处理器硬件实现简单、功耗低的前提下,高效消除流水线控制相关延迟,提高微处理器性能。本专利技术的技术方案是由编译模块中的编译器确定分支指令所有可能的转移目标地址并插入预取指令;在取指令模块中设计两个取指令部件提前读入当前分支指令的所有可能的后继指令;在指令译码和执行模块中设计一个选择器,由选择器根据对当前分支指令的译码结果选择一个取指令部件提供的指令交指令译码部件和指令执行部件进行译码和执行,从而消除流水线控制相关延迟。目前国内外尚无采用这种方法进行流水线控制相关延迟消除的报道。本专利技术涉及到八个名词流水线、分支指令、流水线相关、控制相关、控制相关延迟、指令预取、预取指令、基本块,它们的定义是(1)流水线将微处理器的指令执行过程分解成若干个子过程,每个子过程都可以有效地在其专用功能段上与其他子过程同时执行,这就是指令执行的流水技术。流水线是流水技术的具体实现。在不同的微处理器设计中,流水线具体被分为多少个阶段也不相同。一般流水线都包括5个阶段取指、译码、执行、访存、写回。(2)分支指令改变程序计数器值的所有指令统称为分支指令,它包括四类条件转移指令、直接无条件转移指令、间接无条件转移指令和函数、过程返回指令(例如retum语句)。(3)流水线相关由于指令间的相互依赖关系造成的流水线停顿称为流水线相关。(4)控制相关由于分支指令引起的流水线相关叫控制相关。(5)控制相关延迟因为控制相关引起的流水线暂停时钟周期数就是控制相关延迟。(6)指令预取在指令被执行之前提前将指令从存储器中取出的操作称为指令预取。(7)预取指令负责完成预取的指令称为预取指令。(8)基本块程序的基本组成单元,它只有一个入口(即基本块的第一条语句)和一个出口(即基本块的最后一条语句),一个基本块至少含有两条指令,基本块的出口为分支指令,一个程序总是可以划分成若干个基本块。本专利技术的执行过程是1.由编译模块中的编译器确定分支指令所有可能的转移目标地址并插入预取指令;2.当程序开始运行时,取指令模块中,一个取指令部件读入第一个基本块,另一个取指令部件空闲。对于程序中的每一个基本块(a)负责读入该基本块的取指令部件依次读入基本块中的每一条指令,并判断它是否为预取指令。如果当前被读入的指令为预取指令,则将预取指令发送给另一个取指令部件,由它执行该预取指令;否则将指令发送给指令译码和执行模块中的译码部件进行译码。(b)当基本块的最后一条指令即分支指令译码结束后,指令译码和执行模块中的选择器根据译码结果选择一个取指令部件中的基本块作为当前基本块的后继基本块1)假设两个取指令部件分别为IF0和IF1,当前正在执行IF0中的指令,IF1则执行预取指令,预取当前基本块的后继目标指令。当指令顺序执行,即结束译码的指令不是分支指令或转移条件为False的分支指令时,选择IF0中的指令进行译码;当执行分支指令时,即结束译码的指令是转移条件为True的分支指令时,选择IF1中的指令进行译码。2)如果当前流水线正在执行IF1中的指令,选择策略正好相反,即如果指令依照程序顺序执行,即结束译码的指令不是分支指令或转移条件为False的分支指令时,选择IF1中的指令进行译码;当执行分支指令时,即结束译码的指令是转移条件为True的分支指令时,选择IF0中的指令进行译码。因此,在程序运行过程中,一个取指令部件负责为指令执行部件提供指令,另一个取指令部件负责完成指令预取,两个取指令部件并行工作,使得当分支指令译码结束时,所有可能的分支目标指令已经分别保存在两个取指令部件中。与一般编译器相比,本专利技术的编译器增加了两项特殊功能确定分支指令所有可能的转移地址并根据不同类型的分支指令向基本块中插入预取指令。编译器插入预取指令的流程是编译程序依次读出程序代码中的每一条指令,当遇到分支指令时,表示到达当前基本块的末尾,根据分支指令的类型在该分支指令所在基本块的第一条指令之后插入相应的预取指令。分支指令分为四类,本专利技术根据它们的不同情况设计了三条预取指令对应不同的分支指令。三条预取指令是fetch addr1,addr2、fetchaddr、fetch stack。(1) 条件分支指令转移可能成功也可能失败,有两个后继基本块,应同时预取当前基本块的两个后继基本块。有两个可能的转移地址,一个保存在指令中,另一个是该指令之后那条指令的地址。此时在该分支指令所在基本块的第一条指令之后插入预取指令fetch addr1,addr2,预取从地址addr1和addr2开始的两个基本块。addr1由该分支指令译码得到,addr2是该指令之后的指令地址,其值为分支指令地址加指令长度(单位为字节)。(2) 直接无条件分支指令转移总是成功,只有一个后继基本块,在编译时可以获得转移目标地址,预取目标基本块即可。只有一个可能的转移地址,保存在指令中。此时在该分支指令所在基本块的第一条指令之后插入预取指令fetch addr,预取从地址addr开始的基本块。addr由该分支指令译码得到。(3) 间接无条件分支指令转移总是成功,但由于转移目标地址保存在寄存器中,通常在编译时无法得到,对于这类分支指令,不进行处理。(4) 过程返回语句转移总是成功,只有一个后继基本块,这类语句通常出现在过程调用返回时,由于过程调用可能出现嵌套,本专利技术用一个栈来保存过程调用的返回地址(即预取地址),每次过程调用时将返回地址保存在栈顶单元,预取时从栈顶单元中获得预取地址。此时在该过程返回指令所在基本块的第一条指令之后插入预取指令fetch stack,预取从栈顶单元地址开始的基本块。与其他指令不同,预取指令由取指令部件执行。不同的RISC(精简指令集计算)指令集对应的预取指令的编码可能有所不同,但只要实现本专利技术相同的功能,都属于本专利技术保护范围。预取以基本块为单位进行,除了当条件分支指令转移失败时预取的一部分后继指令外,所预取的指令都将被执行。如果在分支本文档来自技高网...

【技术保护点】
一种流水线控制相关延迟消除方法,其总体逻辑结构包括编译模块、取指令模块、指令译码和执行模块,其特征在于由编译模块中的编译器负责确定分支指令所有可能的转移地址并根据分支指令的类型插入预取指令;取指令模块除了负责为指令译码和执行模块提供指令,还要进行指令预取,其功能通过两个取指令部件IF0和IF1完成;指令译码和执行模块中有一个选择器,负责根据当前分支指令的译码结果选择一个取指令部件提供的指令交指令译码部件和指令执行部件进行译码和执行;其执行过程是:1)由编译模块中编译器确定 分支指令所有可能的转移目标地址并插入预取指令;2)当程序开始运行时,取指令模块中一个取指令部件读入第一个基本块,另一个取指令部件空闲;对于程序中的每一个基本块;(a)负责读入该基本块的取指令部件依次读入基本块中的每一条指令,并判断它 是否为预取指令;如果当前被读入的指令为预取指令,则将预取指令发送给另一个取指令部件,由它执行该预取指令;否则将指令发送给译码部件进行译码;(b)当基本块的最后一条指令即分支指令译码结束后,指令译码和执行模块中的选择器根据分支指令译码结果 选择一个取指令部件中的基本块作为当前基本块的后继基本块:Ⅰ.如果当前正在执行IF↓[0]中的指令,IF↓[1]则执行预取指令,预取当前基本块的后继目标指令;当指令顺序执行,即结束译码的指令不是分支指令或转移条件为False的分支指令时, 选择IF↓[0]中的指令进行译码;当执行分支指令时,即结束译码的指令是转移条件为True的分支指令时,选择IF↓[1]中的指令进行译码;Ⅱ.如果当前流水线正在执行IF↓[1]中的指令,选择策略正好相反,即:如果指令依照程序顺序执行,即结 束译码的指令不是分支指令或转移条件为False的分支指令时,选择IF↓[1]中的指令进行译码;当执行分支指令时,即结束译码的指令是转移条件为True的分支指令时,选择IF↓[0]中的指令进行译码。...

【技术特征摘要】

【专利技术属性】
技术研发人员:戴葵王志英沈立王蓉晖王蕾张春元王明仕王进
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:43[中国|湖南]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1