CN107783785A - 一种没有分支预测损失的分支处理方法与系统 - Google Patents

一种没有分支预测损失的分支处理方法与系统 Download PDF

Info

Publication number
CN107783785A
CN107783785A CN201610803714.5A CN201610803714A CN107783785A CN 107783785 A CN107783785 A CN 107783785A CN 201610803714 A CN201610803714 A CN 201610803714A CN 107783785 A CN107783785 A CN 107783785A
Authority
CN
China
Prior art keywords
branch
instruction
address
memory
processor core
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
Application number
CN201610803714.5A
Other languages
English (en)
Inventor
林正浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Xinhao Bravechips Micro Electronics Co Ltd
Original Assignee
Shanghai Xinhao Bravechips Micro Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Xinhao Bravechips Micro Electronics Co Ltd filed Critical Shanghai Xinhao Bravechips Micro Electronics Co Ltd
Priority to CN201610803714.5A priority Critical patent/CN107783785A/zh
Publication of CN107783785A publication Critical patent/CN107783785A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

一种适用于电子计算机/微处理器的分支处理方法与系统,能根据存储的分支目标地址向存储器同时提供分支指令后顺序支及分支目标支的地址,存储器向处理器和同时提供顺序指令以及分支目标指令,由处理器核产生的分支判断选择一支指令完成执行。本方法与系统可避免分支预测错误导致的处理器性能损失。

Description

一种没有分支预测损失的分支处理方法与系统
技术领域
本发明涉及电子计算机和微处理器领域。
背景技术
分支(Branch)是处理器流水线性能损失的重要原因。典型的实现在分支成功时需要暂停流水线单数个或复数个周期。为了减少由此带来的性能损失,一个常用的解决方案是分支预测。分支预测猜测执行一条分支指令之后两支(branch)指令中的一支,能消除分支成功时的暂停流水线。如猜测错误,则中止执行猜测执行的一支指令而执行另一支指令。猜测错误导致分支惩罚,造成性能损失。
一个典型的实现如图1所示。图1是现有微处理器处理分支的实施例。图1中11为存储器,12为处理器核,13为分支目标缓冲器(BTB),17为选择器。处理器核12输出指令地址19。指令地址19经选择器17控制指令存储器器11输出指令16供处理器核12执行。当处理器核12第一次执行一条分支指令且分支判断为成功分支的,系统将分支指令的地址/分支目标指令地址对,以及成功分支的历史纪录于BTB 13。
当处理器核12执行分支指令时,19上的分支指令地址也被送到BTB 13。如果与13中记录的一条分支指令地址匹配,则匹配的指令地址对中的分支目标指令地址15被送到选择器17的一个输入。此时19上为分支指令后的顺序指令地址,送到选择器17的另一个输入。13中的分支历史纪录14控制选择器17。如历史纪录为不分支,选择器17选择19上地址,指令存储器器11输出分支指令后的顺序指令供处理器核12执行。如历史纪录为分支,选择器17选择分支目标地址15,指令存储器器11输出分支目标指令供处理器核12执行。如果处理器核12执行分支指令产生的分支判断与BTB中13中的分支历史纪录不同,则为分支预测错误,导致上述分支惩罚。此时也要更新BTB 13中的分支历史纪录。
发明内容
本发明提出一种分支(Branch)处理方法与系统,其特征是由存储器同时向处理器提供分支指令后两个分支的指令,由处理器核产生的分支判断选择,而避免分支预测以及分支预测错误导致的分支惩罚。
有益效果
本发明消除了分支预测错误导致的处理器性能损失。
附图说明
图1是现有微处理器处理分支的实施例;
图2是本发明所述同时提供分支指令后两支指令的实施例;
图3是本发明所述同时提供分支指令后两支指令的另一个实施例;
图4是本发明所述同时提供分支指令后两支指令的另一个实施例。
具体实施方式
以下结合附图和具体实施例对本发明提出的没有分支预测损失的分支处理方法与系统作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
需说明的是,为了清楚地说明本发明的内容,本发明特举多个实施例以进一步阐释本发明的不同实现方式,其中,该多个实施例是列举式并非穷举式。此外,为了说明的简洁,前实施例中已提及的内容往往在后实施例中予以省略,因此,后实施例中未提及的内容可相应参考前实施例。
虽然该发明可以以多种形式的修改和替换来扩展,说明书中也列出了一些具体的实施图例并进行详细阐述。应当理解的是,发明者的出发点不是将该发明限于所阐述的特定实施例,正相反,发明者的出发点在于保护所有基于由本权利声明定义的精神或范围内进行的改进、等效转换和修改。同样的元器件号码可能被用于所有附图以代表相同的或类似的部分。
此外,在本说明书中以包含处理器核的存储器系统为例进行说明,但本发明技术方案也可以被应用于包含任何合适的处理器(Processor)的存储器系统。例如,所述处理器可以是通用处理器(General Processor)中央处理器(CPU)、微控制器(MCU)、数字信号处理器(DSP)、图象处理器(GPU)、片上系统(SOC)、专用集成电路(ASIC)等。
本发明所述的指令地址(Instruction Address)指的是指令在主存储器中的存储地址,即可以根据该地址在主存储器中找到这条指令。在此为简单明了起见,均假设虚拟地址等于物理地址,对于需要进行地址映射的情况,本发明所述方法也可适用。在本发明中,当前指令可以指当前正在被处理器核执行或获取的指令;当前指令块可以指含有当前正被处理器执行的指令的指令块
图2是本发明所述同时提供分支指令后两支指令的实施例。此实施例中,31为双读口存储器,32为处理器核,13为分支目标缓冲器(BTB)。应当理解的是,这里列出各种部件的目的是为了便于描述,还可以包含其他部件,而某些部件可以被省略。这里的各种部件可以分布在多个系统中,可以是物理上存在的或是虚拟的,可以是硬件实现(如:集成电路)、软件实现或由硬件和软件组合实现。
处理器核32中流水线被分为前端流水线及后端流水线。从产生分支判断的流水线段开始到流水线最后一段为后端流水线,其余的流水线段为前端流水线。32中有两条前端流水线分别处理来自双读口指令存储器31的顺序指令20以及分支目标指令16。32中有一条共用的后端流水线。本发明公开中所述的各存储器各是存储器层次结构中的一个层次。所述存储器可以包含任何合适的存储设备,如:寄存器(register)或寄存器堆(registerfile)、静态存储器(SRAM)、动态存储器(DRAM)、闪存存储器(flash memory)、硬盘、固态磁盘(Solid State Disk)以及任何一种合适的存储器件或未来的新形态存储器。
可以用多种方式向存储器提供所述分支指令后两支的地址。在本实施例中基于现有的功能块,以处理器核提供顺序指令地址,以顺序指令地址与BTB中的分支指令地址匹配获得分支目标地址。处理器核32产生的指令地址19寻址指令存储器31的第一读口20向处理器核32中顺序前端流水线提供顺序指令。指令地址19也与BTB中指令地址匹配。如匹配,以匹配所得到的分支目标地址15寻址指令存储器31的第二读口16向处理器核32中分支目标前端流水线提供分支目标指令。当分支判断尚未产生时,处理器核32继续经19提供分支指令后的顺序指令地址。19上的顺序指令地址寻址指令存储器31的第一读口20向处理器核32中顺序前端流水线提供顺序指令。两条前端流水线分别处理相应指令。当后端流水线中分支判断流水线段产生分支判断时,该分支判断选择两条前端流水线产生的两个中间结果中的一个供共用的后端流水线执行。后端流水线产生的指令地址19控制指令存储器31中第一读口20提供后续指令供处理器核32中顺序前端流水线及后端流水线执行直到下一条发自指令。
图3是本发明所述同时提供分支指令后两支指令的另一个实施例。此实施例中,11为指令存储器,32为处理器核,13为分支目标缓冲器(BTB),17为选择器,21为指令读缓冲器IRB。此实施例中指令存储器11只有一个读口。指令读缓冲器21中存储部分指令,起到指令存储器的另一个读口的作用。指令读缓冲可以用上述各种存储设备实现。存储器11与指令读缓冲21组合,等效于一个双读口存储器。指令读缓冲器21的容量可以是指令存储器中单数个指令块的一部分,单数个指令块或复数个指令块,甚至是等于存储器11。以下以单数个指令块为例说明,其余情形可以依此类推。前端流水线的流水线段数可以是‘0’段至复数段,以下以单数段为例说明。
IRB21中内容为当前指令块。处理器核32输出的指令地址19中的块内偏移地址(offset)18寻址IRB 21。IRB 21向处理器核32中顺序前端流水线提供当前指令20。当当前指令为分支指令时,指令地址19也与BTB中指令地址匹配。选择器17默认选择匹配所得到的分支目标地址15。15寻址指令存储器11的读口16向处理器核32中分支目标前端流水线提供分支目标指令16。此时指令地址19提供分支指令后一条,顺序指令的地址。顺序指令地址中的块内偏移地址18寻址IRB 21,IRB21向处理器核32中顺序前端流水线提供顺序指令20。两条前端流水线分别处理相应指令。当后端流水线中分支判断流水线段产生分支判断时,该分支判断选择分支判断选择两条前端流水线产生的两个中间结果中的一个供共用的后端流水线执行。
如分支判断为不分支,分支判断选择顺序前端流水线产生的中间结果供后端流水线执行。存储器系统继续以指令地址19中的块内偏移地址18控制IRB 21向处理器核32顺序前端流水线提供顺序指令。当存储器系统检测到块内偏移地址18到达其最大值,即当18指向IRB 21中最后一条指令时,控制选择器17选择指令地址19。选择器17选择指令地址19上的顺序下一指令块地址。以19上地址寻址指令存储器11读出指令块经读口16存入IRB 21。块内偏移地址18控制IRB 21向处理器核32中顺序前端流水线提供顺序指令20。
如分支判断为分支,分支判断选择分支目标前端流水线产生的中间结果供后端流水线执行。分支判断也控制将指令存储器11经读口16输出的分支目标指令块存入IRB 21。块内偏移地址18(此时地址为分支目标指令之后一条指令的地址)控制IRB 21向处理器核32中顺序前端流水线提供顺序指令(此时为分支目标指令后的指令)。因为前段流水线段数为单数,因此前端流水线选择信号在一个周期后复原,选择顺序前端流水线产生的中间结果供后端流水线执行。
如处理器核32前端流水线的流水线段数是复数段,则可以在BTB 13输出的分支目标指令地址路径15中增添一个加法器,在分支目标指令地址基础上加上等于一条指令的字节数,向指令存储器11提供分支目标指令的后续指令地址。如此使得分支目标指令及其后续指令填满分支目标前端流水线。当分支判断为成功分支时,其选择分支目标前端流水线的周期数也等于前端流水线的段数,使得分支目标前端流水线中的复数条指令都被后端执行之后,再选择顺序指令流水线。
图4是本发明所述同时提供分支指令后两支指令的另一个实施例。此实施例中,11为指令存储器,12为处理器核,13为分支目标缓冲器(BTB),17与22为选择器,21为指令读缓冲器IRB。此为图3实施例中前端流水线段数为‘0’的实施例。图4处理器核12中分支判断23在流水线的第一段产生,因此不需要前端流水线,只需要单数条后端流水线,或者说单数条流水线不分前后端。
当处理器核12产生的分支判断23为不分支,23控制选择器22选择IRB的21输出。块内偏移地址18寻址IRB 21向处理器核12提供顺序指令20供执行。当处理器核12产生的分支判断23为成功分支,23控制选择器22选择指令存储器11的输出16。BTB 13匹配指令地址19提供分支目标地址15。经选择器17寻址后15寻址指令存储器11向处理器核12提供分支目标指令16供执行。其余操作与图3实施例相同,不再赘述。图2实施例也可以使用图4实施例中前端流水线段数为‘0’的实施方式,以简化处理器核。
需要说明的是,本发明所述全部技术方案还可以被扩展到更多层次的存储系统中。根据本发明技术方案和构思,还可以有其他任何合适的改动。对于本领域普通技术人员来说,所有这些替换、调整和改进都应属于本发明所附权利要求的保护范围。

Claims (12)

1.一种分支(Branch)处理方法,其特征是向存储器同时提供顺序指令地址以及分支目标地址;由存储器向处理器核提供分支指令后顺序支以及分支目标支的指令;由处理器核执行分支指令产生的分支判断选择所述两支指令中的一支;所述被选择的一支指令由处理器核完成执行。
2.根据权利要求1所述的分支处理方法,其特征在于由处理器核向指令存储器提供顺序指令的地址读取顺序指令;由所述顺序指令地址与分支目标缓冲器(BTB)中分支指令匹配,向指令存储器提供匹配所得的分支目标地址读取分支目标指令。
3.根据权利要求1所述的分支处理方法,其特征在于以所述顺序指令地址以及分支目标指令地址寻址双读口的存储器,同时向处理器核提供所述顺序指令以及分支目标指令。
4.根据权利要求1所述的分支处理方法,其特征在于以所述顺序指令地址寻址一个存储器向所述处理器核提供顺序指令;以所述分支目标指令地址寻址另一个存储器向所述处理器核提供分支目标指令。
5.根据权利要求4所述的分支处理方法,其特征在于所述提供顺序指令的存储器中的内容是所述提供分支目标指令的存储器内容的子集;当所述提供顺序指令的存储器中存储的指令中按指令顺序最后一条指令输出到处理器核时,由所述提供分支目标指令的存储器提供顺序下个指令块存入所述提供顺序指令的存储器;当分支判断为成功分支时,由所述提供分支目标指令的存储器提供分支目标指令块存入所述提供顺序指令的存储器。
6.根据权利要求1所述的分支处理方法,其特征在于所述处理器核具有两条前段流水线,分别处理顺序指令以及分支目标指令;所述前端流水线的流水线段数可以为0段至复数段;所述处理器核具有一条后端流水线,以作分支判断的流水线段为所述后端流水线的第一段;当所述分支判断为不分支,选择顺序指令前端流水线的处理结果由后端流水线完成执行;当所述分支判断为成功分支,选择分支目标指令前端流水线的处理结果由后端流水线完成执行。
7.一种分支(Branch)处理系统,其特征是向存储器同时提供顺序指令地址以及分支目标地址;由存储器向处理器核提供分支指令后顺序支以及分支目标支的指令;由处理器核执行分支指令产生的分支判断选择所述两支指令中的一支;所述被选择的一支指令由处理器核完成执行。
8.根据权利要求7所述的分支处理系统,其特征在于由处理器核向指令存储器提供顺序指令的地址读取顺序指令;由所述顺序指令地址与分支目标缓冲器(BTB)中分支指令匹配,向指令存储器提供匹配所得的分支目标地址读取分支目标指令。
9.根据权利要求7所述的分支处理系统,其特征在于以所述顺序指令地址以及分支目标指令地址寻址双读口的存储器,同时向处理器核提供所述顺序指令以及分支目标指令。
10.根据权利要求7所述的分支处理系统,其特征在于以所述顺序指令地址寻址一个存储器向所述处理器核提供顺序指令;以所述分支目标指令地址寻址另一个存储器向所述处理器核提供分支目标指令。
11.根据权利要求10所述的分支处理系统,其特征在于所述提供顺序指令的存储器中的内容是所述提供分支目标指令的存储器内容的子集;当所述提供顺序指令的存储器中存储的指令中按指令顺序最后一条指令输出到处理器核时,由所述提供分支目标指令的存储器提供顺序下个指令块存入所述提供顺序指令的存储器;当分支判断为成功分支时,由所述提供分支目标指令的存储器提供分支目标指令块存入所述提供顺序指令的存储器。
12.根据权利要求7所述的分支处理系统,其特征在于所述处理器核具有两条前段流水线,分别处理顺序指令以及分支目标指令;所述前端流水线的流水线段数可以为0段至复数段;所述处理器核具有一条后端流水线,以作分支判断的流水线段为所述后端流水线的第一段;当所述分支判断为不分支,选择顺序指令前端流水线的处理结果由后端流水线完成执行;当所述分支判断为成功分支,选择分支目标指令前端流水线的处理结果由后端流水线完成执行。
CN201610803714.5A 2016-08-24 2016-08-24 一种没有分支预测损失的分支处理方法与系统 Pending CN107783785A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610803714.5A CN107783785A (zh) 2016-08-24 2016-08-24 一种没有分支预测损失的分支处理方法与系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610803714.5A CN107783785A (zh) 2016-08-24 2016-08-24 一种没有分支预测损失的分支处理方法与系统

Publications (1)

Publication Number Publication Date
CN107783785A true CN107783785A (zh) 2018-03-09

Family

ID=61450334

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610803714.5A Pending CN107783785A (zh) 2016-08-24 2016-08-24 一种没有分支预测损失的分支处理方法与系统

Country Status (1)

Country Link
CN (1) CN107783785A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258649A (zh) * 2020-01-21 2020-06-09 Oppo广东移动通信有限公司 处理器、芯片和电子设备
CN111538535A (zh) * 2020-04-28 2020-08-14 支付宝(杭州)信息技术有限公司 一种cpu指令处理方法、控制器和中央处理单元

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258649A (zh) * 2020-01-21 2020-06-09 Oppo广东移动通信有限公司 处理器、芯片和电子设备
CN111258649B (zh) * 2020-01-21 2022-03-01 Oppo广东移动通信有限公司 处理器、芯片和电子设备
CN111538535A (zh) * 2020-04-28 2020-08-14 支付宝(杭州)信息技术有限公司 一种cpu指令处理方法、控制器和中央处理单元

Similar Documents

Publication Publication Date Title
JP7005670B2 (ja) メモリ圧縮を実行するシステム及び方法
JP4225851B2 (ja) データ処理装置用トレース要素生成システム
US9436611B2 (en) Processor, cache memory of the processor and control method of the processor
KR102465896B1 (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
JPH02297630A (ja) デイジタル・データ処理システム
JP2009009570A (ja) レジスタ状態エラー回復および再開機構
JP2007073052A (ja) 集積回路から外部メモリへのアクセス
KR20080036940A (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
CN106990942A (zh) 分支处理方法与系统
US20190108152A1 (en) Configurable hardware accelerators
CN107783785A (zh) 一种没有分支预测损失的分支处理方法与系统
US20210082520A1 (en) Processor in non-volatile storage memory
WO2015176315A1 (zh) 哈希连接方法、装置和数据库管理系统
US9003128B2 (en) Cache system and processing apparatus
JPH07121437A (ja) コンピュータシステム
TW201243594A (en) Cache access method and system
TWI321793B (zh)
KR20190112019A (ko) 비교 및 스왑 트랜잭션
KR101876574B1 (ko) 데이터 입출력 컨트롤러 및 이를 포함하는 시스템
US20050081018A1 (en) Register file bit and method for fast context switch
JPH112668A (ja) Ate回路テスターにおけるテストパターンのチェーン化及びループ化
US20100095071A1 (en) Cache control apparatus and cache control method
CN107111569A (zh) 支持具有混合页表使用的共享虚拟内存的内存管理方法以及相关机器可读介质
US8631173B2 (en) Semiconductor device
JP2013132006A5 (zh)

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180309

WD01 Invention patent application deemed withdrawn after publication