发明名称 流水线控制相关延迟消除方法
摘要 本发明公开了一种流水线控制相关延迟消除方法,其目的是在满足硬件实现简单、功耗低的前提下,高效消除流水线控制相关延迟,提高微处理器性能。技术方案是:由编译器确定分支指令所有可能的转移目标地址并插入预取指令;由两个取指令部件提前读入当前分支指令的所有后继指令,并由选择器根据对当前分支指令的译码结果选择一个取指令部件提供的指令进行译码和执行。预取指令有fetch addr1,addr2、fetch addr、fetch stack三条,它们对应不同的分支指令,由取指令部件执行。指令预取以基本块为单位。本发明硬件实现复杂度低、功耗低,控制相关延迟消除率高,无效预取指令数少。采用本发明设计的微处理器有极高性能价格比。
申请公布号 CN1142485C 申请公布日期 2004.03.17
申请号 CN01131569.5 申请日期 2001.11.28
申请人 中国人民解放军国防科学技术大学 发明人 戴葵;王志英;沈立;王蓉晖;王蕾;张春元;王明仕;王进
分类号 G06F9/38 主分类号 G06F9/38
代理机构 湖南兆弘专利事务所 代理人 赵洪
主权项 1.一种流水线控制相关延迟消除方法,其总体逻辑结构包括编译 模块、取指令模块、指令译码和执行模块,其特征在于由编译模块中 的编译器负责确定分支指令所有可能的转移地址并根据分支指令的 类型插入预取指令;取指令模块除了负责为指令译码和执行模块提供 指令,还要进行指令预取,其功能通过两个取指令部件IF0和IF1完 成;指令译码和执行模块中有一个选择器,负责根据当前分支指令的 译码结果选择一个取指令部件提供的指令交给指令译码部件和指令 执行部件进行译码和执行;其执行过程是: 1)由编译模块中编译器确定分支指令所有可能的转移目标地址并插 入预取指令; 2)当程序开始运行时,取指令模块中一个取指令部件读入第一个基 本块,另一个取指令部件空闲;对于程序中的每一个基本块: (a)负责读入该基本块的取指令部件依次读入基本块中的每一条 指令,并判断它是否为预取指令;如果当前被读入的指令为预 取指令,则将预取指令发送给另一个取指令部件,由它执行该 预取指令;否则将指令发送给译码部件进行译码; (b)当基本块的最后一条指令即分支指令译码结束后,指令译码和 执行模块中的选择器根据分支指令译码结果选择一个取指令部 件中的基本块作为当前基本块的后继基本块: I.如果当前正在执行IF<sub>0</sub>中的指令,IF<sub>1</sub>则执行预取指令, 预取当前基本块的后继目标指令;当指令顺序执行,即结束译 码的指令不是分支指令或转移条件为False的分支指令时,选 择IF<sub>0</sub>中的指令进行译码;当执行分支指令时,即结束译码的 指令是转移条件为True的分支指令时,选择IF<sub>1</sub>中的指令进 行译码; II.如果当前流水线正在执行IF<sub>1</sub>中的指令,选择策略正好相 反,即:如果指令依照程序顺序执行,即结束译码的指令不是 分支指令或转移条件为False的分支指令时,选择IF<sub>1</sub>中的指 令进行译码;当执行分支指令时,即结束译码的指令是转移条 件为True的分支指令时,选择IF<sub>0</sub>中的指令进行译码。
地址 410073湖南省长沙市砚瓦池正街47号中国人民解放军国防科学技术大学计算机学院