CN102508641A - 低成本的程序计数器数据传输装置 - Google Patents
低成本的程序计数器数据传输装置 Download PDFInfo
- Publication number
- CN102508641A CN102508641A CN2011103467159A CN201110346715A CN102508641A CN 102508641 A CN102508641 A CN 102508641A CN 2011103467159 A CN2011103467159 A CN 2011103467159A CN 201110346715 A CN201110346715 A CN 201110346715A CN 102508641 A CN102508641 A CN 102508641A
- Authority
- CN
- China
- Prior art keywords
- instruction
- program counter
- counter
- unit
- prediction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
一种低成本的程序计数器数据传输装置,指令预取单元、预解码单元、分支预测单元和分支指令处理单元依次采用流水线处理方式;数据传输装置还包括:程序计数器缓存单元,程序计数器指令处理单元,用于将与程序计数器相关指令的程序计数器信息传送到程序计数器缓存单元输入端口,分支预测单元产生预测目标指令程序计数器,将预测目标指令程序计数器和当前指令程序计数器传送到程序计数器缓存单元,分支指令和与程序计数器相关指令在分支指令处理单元执行时,从程序计数器缓存单元的输出端口读取程序计数器信息。本发明提供一种能够有效降低程序计数器在传递过程中的硬件成本的低成本的程序计数器数据传输装置。
Description
技术领域
本发明关于一种低成本的程序计数器传输数据装置,通过缓存分支指令的当前程序计数器和预测目标程序计数器,与程序计数器相关指令的当前程序计数器,使其不随流水线寄存器传输,从而减小硬件开销,适用于多级流水线结构的处理器。
背景技术
程序计数器用于存放下一条指令所在内存单元的地址,保证程序能够连续地执行下去。在程序开始执行前,将它的起始地址,即程序的一条指令所在的内存单元地址送入程序计数器,因此程序计数器的内容即是从内存提取的第一条指令的地址。当执行指令时,处理器将自动修改程序计数器的内容,即每执行一条指令,程序计数器增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。当执行分支指令时,分支指令执行的最终结果就是改变程序计数器的值,以此实现分支跳转。
在近几年,分支预测被广泛用于嵌入式处理器以及高性能通用处理器,以提高处理器性能。分支指令的类型可以分为条件分支指令和无条件分支指令,由于分支指令目标地址的不同,无条件分支又可以进一步分为立即分支指令,间接分支指令和返回分支指令。其中立即分支跳转可以采用BTB(Branch Target Buffer,分支预测缓冲区)这种方式预测精确,返回型跳转可以采用返回地址栈(RAS)精确预测。经过预测的分支指令会携带预测跳转信息和预测跳转地址,以及自身的程序计数器。而分支预测一般是在取指阶段进行,在指令执行阶段才能用到这些预测信息,期间这些信息会经过取指级与译码级之间、译码级与执行级之间的寄存器,以及一些指令缓存装置,硬件消耗明显。
发明内容
为了克服现有的分支预测处理过程中程序计数器在传递过程中的硬件成本较高的不足,本发明提供一种能够有效降低程序计数器在传递过程中的硬件成本的低成本的程序计数器数据传输装置。
为实现上述目的,本发明的技术方案是:
一种低成本的程序计数器数据传输装置,所述数据传输装置包括:
指令预取单元,用于负责指令的预取;
预解码单元,用于对所取指令进行预解码,解码出分支指令,以及与程序计数器相关的指令;
分支预测单元,用于对分支指令进行分支预测,产生预测目标程序计数器;
分支指令处理单元,用于负责分支指令和与程序计数器相关指令的执行,将程序计数器缓存单元的数据读取并经行计算;
所述指令预取单元、预解码单元、分支预测单元和分支指令处理单元依次采用流水线处理方式;
程序计数器缓存单元,用于缓存分支指令的当前程序计数器和预测目标程序计数器,缓存与程序计数器有关指令的当前程序计数器和目标程序计数器;
程序计数器指令处理单元,用于将与程序计数器相关指令的程序计数器信息传送到程序计数器缓存单元输入端口,分支预测单元产生预测目标指令程序计数器,将预测目标指令程序计数器和当前指令程序计数器传送到程序计数器缓存单元,分支指令和与程序计数器相关指令在分支指令处理单元执行时,从程序计数器缓存单元的输出端口读取程序计数器信息。
进一步,分支指令的当前程序计数器和预测目标程序计数器、与程序计数器相关指令的当前程序计数器和目标程序计数器被创建进程序计数器缓存单元,在流水线执行级,当分支指令处理单元需要指令程序计数器信息时,程序计数器缓存单元的输出端口输出所需指令程序计数器信息,该指令的程序计数器信息未经过流水线取指级与译码级之间,以及译码级与执行级之间的寄存器。
再进一步,所述程序计数器缓存单元采用先进先出机制,依次创建和清空单元。
更进一步,当出现全局清空信号时,程序计数器缓存单元缓存的程序计数器信息被清空。
本发明中,通过缓存分支指令的当前程序计数器和预测目标程序计数器,与程序计数器相关指令的当前程序计数器和目标程序计数器,使其不随流水线寄存器传输,从而降低硬件成本。
本发明的有益效果为:通过避免分支指令、与程序计数器相关指令的程序计数器信息在取指级、译码级以及执行级流水线寄存器之前的传递,大大降低了流水线寄存器的硬件成本。
附图说明
图1是一种低成本的程序计数器数据传输装置的基本架构。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1,一种低成本的程序计数器数据传输装置,包括:指令预取单元,用于负责指令的预取;预解码单元,用于对所取指令进行预解码,解码出分支指令,以及与程序计数器相关的指令;分支预测单元,用于对分支指令进行分支预测,产生预测目标程序计数器;分支指令处理单元,用于负责分支指令和与程序计数器相关指令的执行,将程序计数器缓存单元的数据读取并经行计算;所述指令预取单元、预解码单元、分支预测单元和分支指令处理单元依次采用流水线处理方式;程序计数器缓存单元,用于缓存分支指令的当前程序计数器和预测目标程序计数器,缓存与程序计数器有关指令的当前程序计数器和目标程序计数器;程序计数器指令处理单元,用于将与程序计数器相关指令的程序计数器信息传送到程序计数器缓存单元输入端口,分支预测单元产生预测目标指令程序计数器,将预测目标指令程序计数器和当前指令程序计数器传送到程序计数器缓存单元,分支指令和与程序计数器相关指令在分支指令处理单元执行时,从程序计数器缓存单元的输出端口读取程序计数器信息。
指令预取单元将取到的指令传送到预解码单元的输入端口,预解码单元解码出分支指令和与程序计数器相关指令,将分支指令传送到分支预测单元输入端口,将与程序计数器相关指令的程序计数器信息传送到程序计数器缓存单元输入端口,分支预测单元产生预测目标指令程序计数器,将预测目标指令程序计数器和当前指令程序计数器传送到程序计数器缓存单元,分支指令和与程序计数器相关指令在处理单元执行时,从程序计数器缓存单元的输出端口读取程序计数器信息。
若在流水线取指级取到一条分支指令,如进位为1分支指令,指令编码通过指令预取单元传输到预解码单元输入端口,经过预解码单元的预解码,解码出该条指令为分支指令。预解码单元将该分支指令的预解码信息传送到分支预测单元的输入端口,分支预测单元根据自身的预测机制,预测进位是否为1,以及跳转的目标程序计数器。分支预测单元将预测产生的预测目标程序计数器,以及当前指令的程序计数器信息传送到程序计数器缓存单元输入端口。程序计数器缓存单元根据先进先出机制,创建缓存单元,缓存分支指令的当前程序计数器和预测目标程序计数器。该条分支指令的预解码信息同时通过取指级和译码级之间的流水线寄存器传送到译码级的指令解码单元,解码出完整的指令信息。该完整的指令解码信息通过译码级和执行级之间的流水线寄存器传送到分支指令处理单元,分支指令处理单元在执行该分支指令时,需要分支指令的当前程序计数器和预测目标程序计数器,程序计数器缓存单元将分支指令处理单元需要的信息传送到分支指令处理单元的输入端口,分支指令处理单元根据这些程序计数器信息执行该条分支指令。
若在流水线取指级取到一条与程序计数器相关的指令,如存储器读入指令,指令编码通过指令预取单元传输到预解码单元输入端口,经过预解码单元的预解码,解码出该条指令为存储器读入指令。预解码单元将存储器读入指令的当前程序计数器和目标程序计数器信息传送到程序计数器缓存单元输入端口。程序计数器缓存单元根据先进先出机制,创建缓存单元,缓存分支指令的当前程序计数器和目标程序计数器。该条存储器读入指令的预解码信息(不包括当前程序计数器和目标程序计数器)同时通过取指级和译码级之间的流水线寄存器传送到译码级的指令解码单元,解码出完整的指令信息。该完整的指令解码信息通过译码级和执行级之间的流水线寄存器传送到分支指令处理单元,分支指令处理单元在执行该存储器读入指令时,需要存储器读入指令的当前程序计数器和目标程序计数器,程序计数器缓存单元将分支指令处理单元需要的信息传送到分支指令处理单元的输入端口,分支指令处理单元根据这些程序计数器信息执行该条存储器读入指令。
综上所述,在流水线取指级,分支指令的当前程序计数器和预测目标程序计数器、与程序计数器相关指令的当前程序计数器和目标程序计数器被创建进程序计数器缓存单元,在流水线执行级,当分支指令处理单元需要指令程序计数器信息时,程序计数器缓存单元的输出端口输出所需指令程序计数器信息,该指令的程序计数器信息未经过流水线取指级与译码级之间,以及译码级与执行级之间的寄存器,降低了流水线寄存器的硬件成本。
Claims (4)
1.一种低成本的程序计数器数据传输装置,所述数据传输装置包括:
指令预取单元,用于负责指令的预取;
预解码单元,用于对所取指令进行预解码,解码出分支指令,以及与程序计数器相关的指令;
分支预测单元,用于对分支指令进行分支预测,产生预测目标程序计数器;
分支指令处理单元,用于负责分支指令和与程序计数器相关指令的执行,将程序计数器缓存单元的数据读取并经行计算;
所述指令预取单元、预解码单元、分支预测单元和分支指令处理单元依次采用流水线处理方式;
其特征在于:所述数据传输装置还包括:
程序计数器缓存单元,用于缓存分支指令的当前程序计数器和预测目标程序计数器,缓存与程序计数器有关指令的当前程序计数器和目标程序计数器;
程序计数器指令处理单元,用于将与程序计数器相关指令的程序计数器信息传送到程序计数器缓存单元输入端口,分支预测单元产生预测目标指令程序计数器,将预测目标指令程序计数器和当前指令程序计数器传送到程序计数器缓存单元,分支指令和与程序计数器相关指令在分支指令处理单元执行时,从程序计数器缓存单元的输出端口读取程序计数器信息。
2.如权利要求1所述的低成本程序计数器传输装置,其特征在于:分支指令的当前程序计数器和预测目标程序计数器、与程序计数器相关指令的当前程序计数器和目标程序计数器被创建进程序计数器缓存单元,在流水线执行级,当分支指令处理单元需要指令程序计数器信息时,程序计数器缓存单元的输出端口输出所需指令程序计数器信息,该指令的程序计数器信息未经过流水线取指级与译码级之间,以及译码级与执行级之间的寄存器。
3.如权利要求1或2所述的低成本程序计数器传输装置,其特征在于:所述程序计数器缓存单元采用先进先出机制,依次创建和清空单元。
4.如权利要求1或2所述的低成本程序计数器传输装置,其特征在于:当出现全局清空信号时,程序计数器缓存单元缓存的程序计数器信息被清空。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103467159A CN102508641A (zh) | 2011-11-04 | 2011-11-04 | 低成本的程序计数器数据传输装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103467159A CN102508641A (zh) | 2011-11-04 | 2011-11-04 | 低成本的程序计数器数据传输装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102508641A true CN102508641A (zh) | 2012-06-20 |
Family
ID=46220735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103467159A Pending CN102508641A (zh) | 2011-11-04 | 2011-11-04 | 低成本的程序计数器数据传输装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102508641A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016101473A1 (zh) * | 2014-12-26 | 2016-06-30 | 中兴通讯股份有限公司 | 计数处理方法及装置 |
CN113254082A (zh) * | 2021-06-23 | 2021-08-13 | 北京智芯微电子科技有限公司 | 条件分支指令处理方法及系统、cpu、芯片 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5442756A (en) * | 1992-07-31 | 1995-08-15 | Intel Corporation | Branch prediction and resolution apparatus for a superscalar computer processor |
CN1222985A (zh) * | 1996-05-03 | 1999-07-14 | 艾利森电话股份有限公司 | 在多级流水线结构中处理条件跳转的方法 |
CN101111819A (zh) * | 2004-12-02 | 2008-01-23 | 高通股份有限公司 | 用于页内程序计数器相对或绝对地址转移指令的转换后备缓冲器(tlb)访问抑制 |
US20080162907A1 (en) * | 2006-02-03 | 2008-07-03 | Luick David A | Structure for self prefetching l2 cache mechanism for instruction lines |
-
2011
- 2011-11-04 CN CN2011103467159A patent/CN102508641A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5442756A (en) * | 1992-07-31 | 1995-08-15 | Intel Corporation | Branch prediction and resolution apparatus for a superscalar computer processor |
CN1222985A (zh) * | 1996-05-03 | 1999-07-14 | 艾利森电话股份有限公司 | 在多级流水线结构中处理条件跳转的方法 |
CN101111819A (zh) * | 2004-12-02 | 2008-01-23 | 高通股份有限公司 | 用于页内程序计数器相对或绝对地址转移指令的转换后备缓冲器(tlb)访问抑制 |
US20080162907A1 (en) * | 2006-02-03 | 2008-07-03 | Luick David A | Structure for self prefetching l2 cache mechanism for instruction lines |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016101473A1 (zh) * | 2014-12-26 | 2016-06-30 | 中兴通讯股份有限公司 | 计数处理方法及装置 |
CN105786718A (zh) * | 2014-12-26 | 2016-07-20 | 中兴通讯股份有限公司 | 计数处理方法及装置 |
CN113254082A (zh) * | 2021-06-23 | 2021-08-13 | 北京智芯微电子科技有限公司 | 条件分支指令处理方法及系统、cpu、芯片 |
CN113254082B (zh) * | 2021-06-23 | 2021-10-08 | 北京智芯微电子科技有限公司 | 条件分支指令处理方法及系统、cpu、芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5917616B2 (ja) | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 | |
TWI506552B (zh) | 迴圈預測器指導的迴圈緩衝器 | |
JP5722396B2 (ja) | 明示的サブルーチンコールの分岐予測動作をエミュレートするための方法および装置 | |
EP2864868B1 (en) | Methods and apparatus to extend software branch target hints | |
US20060277397A1 (en) | Method and apparatus for predicting branch instructions | |
TWI512626B (zh) | 微處理器中存取及管理程式碼轉譯 | |
US11579885B2 (en) | Method for replenishing a thread queue with a target instruction of a jump instruction | |
US9547358B2 (en) | Branch prediction power reduction | |
US9552032B2 (en) | Branch prediction power reduction | |
US11231933B2 (en) | Processor with variable pre-fetch threshold | |
US20170115988A1 (en) | Branch look-ahead system apparatus and method for branch look-ahead microprocessors | |
KR101026978B1 (ko) | 리턴 스택을 운용하는 방법 및 장치 | |
RU2602335C2 (ru) | Способ и устройство для предсказания ветвлений | |
JP5012084B2 (ja) | 情報処理装置 | |
CN102508641A (zh) | 低成本的程序计数器数据传输装置 | |
US11055099B2 (en) | Branch look-ahead instruction disassembling, assembling, and delivering system apparatus and method for microprocessor system | |
CN103744642A (zh) | 用于改进处理器中直接跳转的方法及系统 | |
CN113986354A (zh) | 基于risc-v指令集的六级流水线cpu | |
CN102087634A (zh) | 用于提高缓存命中率的装置及方法 | |
US20160147538A1 (en) | Processor with multiple execution pipelines | |
JP2007193433A (ja) | 情報処理装置 | |
US6842846B2 (en) | Instruction pre-fetch amount control with reading amount register flag set based on pre-detection of conditional branch-select instruction | |
US20140344551A1 (en) | Dual-mode instruction fetching apparatus and method | |
US20140372735A1 (en) | Software controlled instruction prefetch buffering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120620 |