CN115437695A - 一种分支延时槽处理方法及装置 - Google Patents

一种分支延时槽处理方法及装置 Download PDF

Info

Publication number
CN115437695A
CN115437695A CN202210765360.5A CN202210765360A CN115437695A CN 115437695 A CN115437695 A CN 115437695A CN 202210765360 A CN202210765360 A CN 202210765360A CN 115437695 A CN115437695 A CN 115437695A
Authority
CN
China
Prior art keywords
instruction
branch
delay slot
fetching
request
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.)
Granted
Application number
CN202210765360.5A
Other languages
English (en)
Other versions
CN115437695B (zh
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.)
Wuxi Core Field Microelectronics Co ltd
Original Assignee
Wuxi Core Field Microelectronics 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 Wuxi Core Field Microelectronics Co ltd filed Critical Wuxi Core Field Microelectronics Co ltd
Priority to CN202210765360.5A priority Critical patent/CN115437695B/zh
Publication of CN115437695A publication Critical patent/CN115437695A/zh
Application granted granted Critical
Publication of CN115437695B publication Critical patent/CN115437695B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks

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

本发明公开了一种分支延时槽处理方法,包括:步骤一,执行站台发起分支跳转取指请求;步骤二,关联一个ID号;步骤三,取得的指令携带其ID号控制取指并管理取指缓冲;步骤四,分支延时槽计数器计满后切换ID号;步骤五,清除原ID号对应的取指缓冲,同时从新ID号对应的取指缓冲中派发指令。本发明还公开了一种分支延时槽处理装置。克服了现有技术的缺陷,保证分支延时槽指令正确执行同时尽可能减少冗余取指,提升取指效率,进而提升超长指令字核心性能。

Description

一种分支延时槽处理方法及装置
技术领域
本发明涉及超长指令字核心架构设计技术领域,特别是涉及一种分支延时槽处理方法及装置。
背景技术
超长指令字架构由编译器将可以并行的指令打包放置在一个固定长度的指令字中,但有 时找不到足够多并行的指令,因此指令字可能放不满。为了增加可执行码的指令密度,编译 器常常将超长指令字合并放置,同时每条指令携带一个并行指示位表示可以和其他指令并行 发射,在不影响原程序执行顺序的情况下减少指令字空洞,由此造成分支延时槽内的指令执 行不完整并增加分支延时槽外的无用指令,进而降低超长指令字核心性能。
发明内容
本发明的目的是克服现有的缺陷,提供一种分支延时槽处理方法及装置,保证分支延时 槽内的指令被完整执行并尽可能减少取得的分支延时槽外的无用指令,进而提升超长指令字 核心性能。
作为本发明的第一个方面,提供一种分支延时槽处理方法,包括步骤一,执行站台发起 分支跳转取指请求;步骤二,关联一个ID号;步骤三,取得的指令携带其ID号控制取指并 管理取指缓冲;步骤四,分支延时槽计数器计满后切换ID号;步骤五,清除原ID号对应的取指缓冲,同时从新ID号对应的取指缓冲中派发指令。
进一步的,指令字同时在指令分析整理站台设置两套指令缓冲和一个分支延时槽计数器。
进一步的,当执行站台发起分支跳转取指请求时,取指站台待分支延时槽内的指令发送 完毕,则切换ID号并从分支跳转目标处开始取指。
进一步的,指令分析整理站台根据原ID号已经发出的执行指令包数设置分支延时槽计数 器初值,继续整理发送原ID号对应的执行指令包,每发送一个计数器加1。
作为本发明的第二个方面,提供一种分支延时槽处理装置,包括:执行站台,用于发起 分支跳转取指请求并连接分支延时槽计数器;取指站台,连接分支延时槽计数器,用于查看 分支延时槽计数器内的指令是否发送完毕;指令分析整理站台,连接分支延时槽计数器,对 其设置初值;分支延时槽计数器,根据执行指令包计数。
本发明涉及的前端指令流水线整体结构如图1所示,地址仲裁(ARB)站台设置一个取指 ID号FetchID,一个延时计数器DelayCnt,以及一个分支目标地址队列BrTargetQueue,取指 请求绑定ID号并流向后续站台;分析整理(PACK)站台设置一个取指ID号FetchID,一个取 指计数器FetchCnt,2套取指缓冲IBuf0和IBuf1,一个延时计数器DelayCnt和一个分支请求 队列BrReqQueue。地址仲裁站台和分析整理站台配合管理取指和指令发送。
有益效果:
本发明能够保证分支延时槽内的指令被完整执行并尽可能减少取得的分支延时槽外的无用指 令,进而提升超长指令字核心性能。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的实施例一起 用于解释本发明,并不构成对本发明的限制。在附图中:
图1是前端指令流水线整体结构图
图2是分支延时槽取指流程图
图3是分支取指情况分析图
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅 用于说明和解释本发明,并不用于限定本发明。
如图2所示,ARB站台进行取指地址仲裁,来源包括顺序取指地址、CHECK站台重取地址, EXE分支目标取指地址以及异常/中断地址ICA站台接受ARB站台仲裁出的地址并访问指令缓 存;
CHECK站台检查取指是否命中指令缓存以及PACK站台是否可以接收指令,如果有一个条 件不满足则产生重新取指请求反馈到ARB站台,同时清除ICA站台正在处理的取指请求;
PACK站台缓存指令,对取得的指令字进行并行位分析,完成并行指令包的拆分和合并;
DISP站台完成并行指令包中指令到具体执行部件的分派;
DEC站台进行指令译码;
EXE站台开始执行指令并得到分支跳转目标地址,反馈到ARB站台参与取指仲裁。
当地址仲裁站台收到分支取指请求后,指令流水线上的取指情况如图2所示,B0表示分支指令,T0为其目标地址,S1至S5为分支延时槽。此时流水线上从ICA到DEC站台正在处理的有5个指令字,这5个指令字至少包含了所有的分支延时槽指令。
地址仲裁站台首先查看当前是否满足可以从分支目标处取指的条件,即当拍命中检查站 台是否发生了重取请求、指令缓存是否有未解决的缺失、指令整理站台的取指缓冲是否可以 接收。
如果收到分支取指请求时指令缓存有未解决的缺失情况或者取指缓冲不能接收,说明S1 至S3发生过重取请求并且尚未被处理,因此要将当前分支取指请求悬挂起来,优先处理悬挂 的重取请求。
如果收到分支取指请求时恰好发生重取请求,说明S4取指请求因指令缓存缺失或者取指 缓冲不能接收而被阻塞,因此要将重取请求和分支取指请求都悬挂起来,并且优先处理重取 请求。
如果收到分支取指请求时既没有发生重取请求,也没有未解决的指令缓存缺失,且取指 缓冲也可以接收,则需要检查流水线上的有效取指是否已经包含了分支延时槽内的所有指令。 由于分析整理站台和地址仲裁站台间隔2个站台,因此ARB站台收到分支取指请求后,分析 整理站台最快发送分支延时槽内的3个并行指令包,最慢可能1个也没有发送,因此一定处 于分支延时槽内。因为ICache访问站台和命中检查站台尚有正在处理的取指请求,不确定分 支延时槽内的指令是否都已经取出,因此可以尝试从分支目标处取指,但同时要将当前的分 支取指请求记录下来,以待之后产生重取请求后重新处理。此时分支取指请求仲裁成功,则 从分支目标地址处开始取指,切换取指ID号,将FetchID取反。
当分析整理站台将分支延时槽内的指令都已发送完毕,当前指令缓存不存在未解决的缺 失且取指缓冲可以接收时,若有悬挂的分支取指请求,则从分支目标地址处开始取指,同时 切换取指ID号,即将FetchID取反。此时地址仲裁站台已经发出的取指可能仍在处理,可能 会多取指令,但因取指ID号不同,则可以在分析整理站台进行清除。
若分支延时槽中嵌套分支,则在延时槽取指期间会再次收到分支取指请求。若地址仲裁 站台仍在处理分支延时槽取指时再次收到分支取指请求,则将其写入分支目标队列 BrTargetQueue中。执行部件发出的分支取指请求需要指示其是否处在分支延时槽内,且需 标记其在分支延时槽中的位置。因此,分支延时槽内的取指请求会携带其取指地址、延时槽 位置以及延时槽指示标记一起写入分支目标队列中。
当分析整理站台将分支延时槽内的指令都已发送完毕后通知地址仲裁站台,此时地址仲 裁站台延时计数器DelayCnt开始计数,当分支目标队列中存在有效请求且队头请求的延时槽 位置和DelayCnt相等时,将队头元素读出并从该取指请求处取指,同时将FetchID取反。如 此方法处理分支目标队列中的所有请求。DelayCnt计满分支延时槽的长度,或者地址仲裁站 台收到新的非分支延时槽内分支取指请求时将DelayCnt清零。
同样,分支延时槽内的分支取指请求也会产生重新取指请求。因此需要对分支目标队列 的头指针和延时计数器进行备份,每个取指请求都携带其地址仲裁时的分支目标队列的头指 针和延时计数器流向后续站台,当命中检查站台产生重取请求后,将该取指请求携带的分支 目标队列的头指针和延时计数器恢复到BrTargetQueue和DelayCnt中。
分析整理站台已经获得了从指令缓存中取得的指令,根据其携带的FetchID号将其写入 取指缓冲IBuf0或者IBuf1中,同时根据其自身的FetchID号对IBuf0或者IBuf1中的指令 进行并行位分析,整理形成并行指令包后发送到后续站台。
当分析整理站台收到分支取指请求后,根据自身当前是否发出指令,指令分派站台和指 令译码站台是否有指令设置取指计数器FetchCnt初值,之后每发送一个指令包就将FetchCnt 加一。FetchCnt计满延时槽长度后切换FetchID,将FetchCnt清零,将原FetchID对应的取 指缓冲清空,延时计数器DelayCnt开始计数,同时通知地址仲裁站台当前分支延时槽指令已 经发送完毕,之后从新FetchID对应的取指缓冲中读取指令并发送到后续站台,每发送一个 并行指令包就将DelayCnt加一。
由于取指是以指令字单位进行,而整理发送则是以并行指令包为单位进行,即可能会多 取指令,因此在FetchID已经切换后可能还会收到原FetchID的指令字,此时不再写入取指 缓冲当中。
若分析整理站台在分支延时槽内指令尚未发送完毕时再收到分支取指请求,或者执行部 件发出的分支取指请求仍处在分支延时槽内且延时槽位置和DelayCnt不等时,将分支取指请 求及其延时槽位置写入分支请求队列BrReqQueue中。
当BrReqQueue中存在有效请求且队头请求延时槽位置和DelayCnt相等时,将BrReqQueue 队头请求读出,切换FetchID,清空原FetchID对应的取指缓冲。如此方法处理BrReqQueue 中的所有请求。
当DelayCnt计满分支延时槽的长度,或者整理分析站台收到新的非分支延时槽内分支取 指请求时将DelayCnt清零。
对于分支指令而言,取得的指令直到执行后才能知晓跳转的目标地址,期间称为分支延时槽。为了提升程序执行效率,通常由编译器在分支延时槽内填充不相关的指令,以防止流水线停顿,提升处理效率。如图2所示的超长指令字核心流水线,分支指令从取指到执行需要6个时钟周期,分支延时槽为5个时钟周期,可容纳5个并行指令包。
由于编译器将指令码做了压缩合并处理,因此一个指令字中可能包含多个并行指令包, 而一个并行指令包也可能跨越指令字边界。取指时并不知道是否已经取到分支指令,等到发 现有分支指令时,可能有如下3种情况:
1.由于指令缓存缺失或者流水线后端不可接收等原因,还未将分支延时槽内的指令全部 取得;
2.恰好取得分支延时槽内的指令,并且准备跳转到分支目标地址处执行;
3.由于分支延时槽内的并行指令包空洞较多,压缩度较高,取指已经超出了分支延时槽 内的指令。
对于情况1,在收到分支跳转请求时仍要继续将分支延时槽内的指令取完才可以从分支 目标处取指;
对于情况2,可以从分支目标处取指;
对于情况3,相当于多取了指令,因此将分支延时槽内的并行指令包发送完毕后清除多余的指令,再发送分支目标处的指令。
对于分支延迟槽内嵌套分支指令的情形需要特殊处理,首先要保证分支延迟槽内的指令全都取得,然后跳至分支目标处执行,再根据延迟槽内分支与上一条分支的距离决定槽内分 支的取指时机,距离几个指令执行包就在首条分支目标处取几个指令执行包,再跳转至延迟 槽内分支目标处执行。
如图3所示,分支指令用B表示,延时槽内指令用S表示,情形2中分支B0延迟槽内第2个执行包中包含分支B2,第4个执行包中包含分支B4,则保证分支B0的延迟槽中指令全 部取得后跳至分支B2目标处取指,取得2个执行包后再跳至分支B4目标处取指。
综上,对于超长指令字核心架构中的分支指令,既要保证分支延时槽内指令准确执行,即不漏取指令也不会将多取指令发送到指令流水线后端,而且对于分支延时槽内嵌套分支的 情形也要在合适的时机跳转到相应的目标地址处取指执行,在保证正确性的前提下提高核心 取指效率,尽可能减少冗余取指。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管 参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前 述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发 明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围 之内。

Claims (5)

1.一种分支延时槽处理方法,其特征在于,包括:
步骤一,执行站台发起分支跳转取指请求;
步骤二,关联一个ID号;
步骤三,取得的指令携带其ID号控制取指并管理取指缓冲;
步骤四,分支延时槽计数器计满后切换ID号;
步骤五,清除原ID号对应的取指缓冲,同时从新ID号对应的取指缓冲中派发指令。
2.根据权利要求1所述的一种分支延时槽处理方法,其特征在于,指令字同时在指令分析整理站台设置两套指令缓冲和一个分支延时槽计数器。
3.根据权利要求1所述的一种分支延时槽处理方法,其特征在于,当执行站台发起分支跳转取指请求时,取指站台待分支延时槽内的指令发送完毕,则切换ID号并从分支跳转目标处开始取指。
4.根据权利要求1所述的一种分支延时槽处理方法,其特征在于,指令分析整理站台根据原ID号已经发出的执行指令包数设置分支延时槽计数器初值,继续整理发送原ID号对应的执行指令包,每发送一个计数器加1。
5.一种分支延时槽处理装置,其特征在于,包括:
执行站台,用于发起分支跳转取指请求并连接分支延时槽计数器;
取指站台,连接分支延时槽计数器,用于查看分支延时槽计数器内的指令是否发送完毕;
指令分析整理站台,连接分支延时槽计数器,对其设置初值;
分支延时槽计数器,根据执行指令包计数。
CN202210765360.5A 2022-07-01 2022-07-01 一种分支延时槽处理方法及装置 Active CN115437695B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210765360.5A CN115437695B (zh) 2022-07-01 2022-07-01 一种分支延时槽处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210765360.5A CN115437695B (zh) 2022-07-01 2022-07-01 一种分支延时槽处理方法及装置

Publications (2)

Publication Number Publication Date
CN115437695A true CN115437695A (zh) 2022-12-06
CN115437695B CN115437695B (zh) 2024-01-23

Family

ID=84241607

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210765360.5A Active CN115437695B (zh) 2022-07-01 2022-07-01 一种分支延时槽处理方法及装置

Country Status (1)

Country Link
CN (1) CN115437695B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6889320B1 (en) * 1999-12-30 2005-05-03 Texas Instruments Incorporated Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter
US7039790B1 (en) * 1999-11-15 2006-05-02 Texas Instruments Incorporated Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit
CN101702118A (zh) * 2009-11-12 2010-05-05 中国人民解放军国防科学技术大学 非完全锁步的vliw处理器流水线控制方法
CN102799418A (zh) * 2012-08-07 2012-11-28 清华大学 融合了顺序和vliw的处理器体系结构及指令执行方法
CN106990942A (zh) * 2011-06-29 2017-07-28 上海芯豪微电子有限公司 分支处理方法与系统
CN109074259A (zh) * 2016-04-28 2018-12-21 微软技术许可有限责任公司 用于块isa处理器的并行指令调度器
CN110928832A (zh) * 2019-10-09 2020-03-27 中山大学 异步流水线处理器电路、装置及数据处理方法
CN113760366A (zh) * 2021-07-30 2021-12-07 浪潮电子信息产业股份有限公司 一种条件跳转指令的处理方法、系统及相关装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7039790B1 (en) * 1999-11-15 2006-05-02 Texas Instruments Incorporated Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit
US6889320B1 (en) * 1999-12-30 2005-05-03 Texas Instruments Incorporated Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter
CN101702118A (zh) * 2009-11-12 2010-05-05 中国人民解放军国防科学技术大学 非完全锁步的vliw处理器流水线控制方法
CN106990942A (zh) * 2011-06-29 2017-07-28 上海芯豪微电子有限公司 分支处理方法与系统
CN102799418A (zh) * 2012-08-07 2012-11-28 清华大学 融合了顺序和vliw的处理器体系结构及指令执行方法
CN109074259A (zh) * 2016-04-28 2018-12-21 微软技术许可有限责任公司 用于块isa处理器的并行指令调度器
CN110928832A (zh) * 2019-10-09 2020-03-27 中山大学 异步流水线处理器电路、装置及数据处理方法
CN113760366A (zh) * 2021-07-30 2021-12-07 浪潮电子信息产业股份有限公司 一种条件跳转指令的处理方法、系统及相关装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
TINGTING DENG: "Global Resource Allocation for High Throughput and Low Delay in High-Density VANETs", IEEE TRANSACTIONS ON WIRELESS COMMUNICATIONS, vol. 21, no. 11, XP011927081, DOI: 10.1109/TWC.2022.3177315 *
李笑天;郭德源;何虎;: "分支预测与值预测在VLIW处理器中的实现", 微电子学与计算机, no. 01 *
王晶;樊晓桠;张盛兵;王海;: "同时多线程结构的2级调度策略", 西北工业大学学报, no. 03 *
郭阳;甄体智;李勇;: "YHFT-DX高性能DSP指令控制流水线设计与优化", 计算机工程与应用, no. 07 *

Also Published As

Publication number Publication date
CN115437695B (zh) 2024-01-23

Similar Documents

Publication Publication Date Title
KR100303673B1 (ko) 저장인스트럭션의결과전달방법및이를구현한프로세서
US11275590B2 (en) Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
JP3542020B2 (ja) 複数予測分岐命令にわたる命令フェッチの位置合わせ命令キャッシュ処理を実行するプロセッサ装置およびプロセッサ制御方法
EP1071010B1 (en) Decoupled instruction fetch-execute with static branch prediction support
US5237666A (en) Apparatus using address of a predetermined preceding instruction and target instruction address stored in history table to prefetch target instruction
US20020087849A1 (en) Full multiprocessor speculation mechanism in a symmetric multiprocessor (smp) System
JP2018060491A (ja) ローカル分岐デコーダを有するマルチ発行マイクロコードユニットを備えたパイプラインプロセッサ
US7711934B2 (en) Processor core and method for managing branch misprediction in an out-of-order processor pipeline
US9495170B2 (en) Determining each stall reason for each stalled instruction within a group of instructions during a pipeline stall
US10628160B2 (en) Selective poisoning of data during runahead
KR980010787A (ko) 인스트럭션 루프를 사변적으로 실행하는 프로세서및 그 방법
CN116991479B (zh) 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置
CN117270971B (zh) 加载队列控制方法、装置及处理器
US20100306513A1 (en) Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline
GB2310740A (en) Storing exception messages in an instruction queue
CN115437695A (zh) 一种分支延时槽处理方法及装置
CN110825442A (zh) 一种指令预取方法及处理器
US20130151809A1 (en) Arithmetic processing device and method of controlling arithmetic processing device
US8032710B1 (en) System and method for ensuring coherency in trace execution
US6668306B2 (en) Non-vital loads
JPS5991551A (ja) 分岐先アドレス予測を行なう命令先取り装置
US20140019722A1 (en) Processor and instruction processing method of processor
WO2007084202A2 (en) Processor core and method for managing branch misprediction in an out-of-order processor pipeline
JP3765111B2 (ja) 分岐登録命令を有するプロセッサ
CN109614146B (zh) 一种局部跳转指令取指方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant