CN100533373C - 一种处理单发射流水线数据相关的动态调度控制器和方法 - Google Patents

一种处理单发射流水线数据相关的动态调度控制器和方法 Download PDF

Info

Publication number
CN100533373C
CN100533373C CNB2007100386308A CN200710038630A CN100533373C CN 100533373 C CN100533373 C CN 100533373C CN B2007100386308 A CNB2007100386308 A CN B2007100386308A CN 200710038630 A CN200710038630 A CN 200710038630A CN 100533373 C CN100533373 C CN 100533373C
Authority
CN
China
Prior art keywords
instruction
data
relevant
streamline
control unit
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.)
Expired - Fee Related
Application number
CNB2007100386308A
Other languages
English (en)
Other versions
CN101030134A (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.)
Fudan University
Original Assignee
Fudan University
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 Fudan University filed Critical Fudan University
Priority to CNB2007100386308A priority Critical patent/CN100533373C/zh
Publication of CN101030134A publication Critical patent/CN101030134A/zh
Application granted granted Critical
Publication of CN100533373C publication Critical patent/CN100533373C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明属于微电子技术领域,具体公开了一种处理单发射流水线数据相关的动态调度控制器及动态调度方法。通过利用单指令缓冲器存放由于数据相关而受组塞的指令使后续指令继续执行的方法,减少了由于数据相关造成的流水线停顿。动态调度算法在硬件上由一个译码控制单元实现,数据相关检测单元检测所译码指令、流水线上指令以及单指令缓冲器内指令是否发生数据相关,根据检测结果,由译码控制单元利用状态机发出控制信号,控制译码器中指令发射、进入指令缓冲器及插入空闲状态等操作。该动态调度算法可以有效的提高流水线的利用率,减少流水线的停顿,提高处理器的性能。

Description

一种处理单发射流水线数据相关的动态调度控制器和方法
技术领域
本发明属微电子技术领域,具体涉及一种流水线动态调度控制器及动态调度方法,尤其涉及一种处理单发射流水线数据相关的动态调度控制器和动态调度方法。
背景技术
在现代的微处理器设计中通常采用流水线技术以提高处理器的速度。但是,流水线技术的采用也会带来数据相关的问题。随着当前对微处理器速度要求越来越高,设计中流水线深度的不断增加,数据相关所造成的性能损失越来越严重。为了解决这一问题,许多多发射、多级功能部件的复杂处理器采用Tomasulo算法来减少数据相关,提升其性能,而附加硬件相比于性能的提高则显得相对次要。对于为嵌入式系统所专门设计的处理器,基于面积和性能的折中考虑,这类处理器大多采用较简单的单发射、单级功能部件的流水线。对于这种类型的流水线,若采用Tomasulo算法,所带来的性能提升非常有限,并且由于算法的复杂性,附加面积很大,不符合嵌入式处理器对于面积的要求。
目前嵌入式处理器大多采用停流水线的方法来解决数据相关的问题,典型的停流水线方法如图1所示。
典型的停流水线的流程为,在译码阶段译码出被译码指令i2所需要的硬件资源,检测在流水线上是否有指令使用该硬件资源,判断流水线上正在被使用得硬件资源与即将用到的硬件资源是否有冲突。若有冲突,判断为数据相关。由于i2所需要的数据与之前的指令有冲突,因此将i2停在译码阶段,i2之前的指令继续执行,等到i2之前的指令执行完之后,i2才执行。
在这种典型的停流水线流程中,可以看到,由于i2与之前的指令发生了数据相关,因此i2不能继续执行,需要在译码阶段停顿,只有等到前面的指令执行完之后,i2才能继续执行。这种解决数据相关的方式导致处理器不能全速运行,频繁出现等待过程,严重影响了处理器的性能。
由于对现代的嵌入式处理器的速度要求越来越高,这种停流水线的方法已经不能适用于嵌入式系统的应用。
发明内容
本发明的目的在于提供一种处理单发射流水线数据相关的动态调度控制器,以及一种为解决单发射流水线数据相关的动态调度算法,以提高流水线的利用率,减少流水线停顿的次数,提高处理器的性能,最大化的减少由附加硬件造成的面积损失。
本发明提供的动态调度控制器,结构如图2所示。包括:
一个译码控制单元201,用于对指令进行译码,并完成动态调度的控制。
一个指令缓冲器202,用于存放发生数据相关受到阻塞的指令。
一个数据相关检测单元203,用于检测未发射指令,流水线上指令,以及指令缓冲器内指令之间的数据相关。
一个指令发射的切换控制单元204,用于选择指令发射的来源。
多个与各控制模块和寄存器相连的控制信号线,配合传输数据对各设备通信模块进行控制。
上述数据相关检测单元,对流水线上标志位、缓冲器中的标志位以及译码器的译码结果进行比较,分析出未发射指令、流水线上指令、以及缓冲器内指令之间的数据相关,判断的结果作为动态调度控制的控制条件。
上述指令缓冲器中的标志位用于判断缓冲器是否为空。
上述指令缓冲器,在数据检测单元检测到数据相关时,用于存放经译码器译码之后的指令控制及运算信息,指令数为一条。
上述动态调度控制由状态机实现,根据数据相关检测结果以控制译码后指令的发射情况。
上述的指令发射情况为译码后的指令可以选择发射到流水线,指令缓冲器或者不发射三种请况。
一种处理单发射流水线数据相关的动态调度算法,以译码控制单元为核心,在发生数据相关时进行指令发射的动态调度,该算法的调度步骤如下:
指令进入译码控制单元201,检测指令缓冲器202中是否为空;
1、若发现指令缓冲器为空,则继续检测该指令是否与正在流水线上运行的指令发生数据相关;
1.1 若该指令与流水线上运行的指令发生数据相关,则将该指令译码后的控制信号放入指令寄存器;
1.2 若该指令与流水线上运行的指令没有发生数据相关,则将该指令发射,进入下一级流水线;
2、若指令缓冲器不为空,则判断指令缓冲器中的指令是否还有数据相关的问题;
2.1 若指令缓冲器中的指令仍然有数据相关的问题,则检测译码控制单元中的指令是否与正在流水线上运行的指令发生数据相关;
2.2 若指令缓冲器中的指令已经没有数据相关的问题,则将指令缓冲器中的指令发射,进入下一级流水线;
3、若译码控制单元中的指令与正在流水线上运行的指令发生数据相关,则插入NOP,停流水线。
4、若译码控制单元中的指令与正在流水线上运行的指令没有数据相关,则将该指令发射,进入下一级流水线;
本发明的独到优势在于:对于单发射流水线,若发生数据相关,利用动态调度算法,将发生数据相关的指令存放在数据缓冲器中,同时使后续指令继续执行,以减少流水线停顿次数,提高处理器性能,由于缓冲器中只存储一条指令,附加硬件面积小,最大程度的减少了由于附加硬件而造成的面积损失。
附图说明
图1为传统的流水线停顿示意图。
图2为本文的动态调度控制器的结构示意图。
图3为为解决单发射,单级功能部件流水线数据相关的动态调度算法示意图。
图中标号如下:
101为预取指阶段,102为取指阶段,103为译码阶段,104为地址发生阶段,105为数据读取阶段,106为执行阶段,107为数据写回阶段201为译码控制单元,202为指令缓冲器,203为数据相关检测单元,204为切换控制单元,205为地址发生器。
具体实施方式
以下参照附图详细描述本发明的具体实施方式。
图2为本发明的动态调度控制器的结构示意图。
在本发明中,动态调度控制器包含一个译码控制单元201,用于对指令进行译码,该单元获得寄存器使用情况信息后,发出寄存器使用标志位,动态调度控制利用状态机以数据相关检测单元的检测结果为条件,利用状态的跳转来完成指令的发射和指令的存贮。
在本发明中,动态调度控制器包含一个指令缓冲器202,用于存放发生数据相关的指令。
在本发明中,动态调度控制器包含一个数据相关检测单元203,用于检测未发射指令、流水线上指令,以及指令缓冲器内指令之间的数据相关。
在本发明中,动态调度控制器包含一个指令发射的切换控制单元204,用于选择指令发射的来源。
在本发明中,动态调度控制器包含多个与各控制模块和寄存器相连的控制信号线,配合传输数据对各设备通信模块进行控制。
在本发明中,动态调度控制器包含一个数据缓冲器,用于数据检测单元检测到数据相关时,存放经译码器译码之后的指令控制及运算信息,并且该数据缓冲期仅存放一条指令的信息。
图4为为解决单发射流水线数据相关的动态调度算法,其工作的步骤如下:
401:指令进入译码控制单元,检测指令缓冲器中是否为空;
402:若发现指令缓冲器为空则继续检测该指令是否与正在流水线上运行的指令发生数据相关。
403:若该指令与流水线上运行的指令发生数据相关,则将该指令译码后的控制信号放入指令寄存器。
404:若该指令与流水线上运行的指令没有发生数据相关,则将该指令发射,进入下一级流水线。
405:若指令缓冲器不为空,则判断指令缓冲器中的指令是否还有数据相关的问题。
406:若指令缓冲器中的指令仍然有数据相关的问题,则检测译码控制单元中的指令是否与正在流水线上运行的指令发生数据相关。
407:若指令缓冲器中的指令已经没有数据相关的问题,则将指令缓冲器中的指令发射,进入下一级流水线。
408:若译码控制单元中的指令与正在流水线上运行的指令发生数据相关,则插入NOP,停流水线。
409:若译码控制单元中的指令与正在流水线上运行的指令没有数据相关,则将该指令发射,进入下一级流水线。

Claims (4)

1、一种处理单发射流水线数据相关的动态调度控制器,其特征在于,包括:
一个译码控制单元,用于对指令进行译码,并完成动态调度的控制;
一个指令缓冲器,用于存放发生数据相关受到阻塞的指令;
一个数据相关检测单元,用于检测未发射指令,流水线上指令,以及缓冲器内指令之间的数据相关;
一个指令发射的切换控制单元,用于选择指令发射的来源;
与上述译码控制单元、指令缓冲器、数据相关检测单元、切换控制单元相连的控制信号线,配合传输数据对上述这些通信模块进行控制;
其中,发射指令经切换控制单元选择后送入译码控制单元,进行译码,并送入数据相关检测单元,检测数据相关;数据相关检测单元检测到发射指令与流水线上运行指令发生数据相关时,该指令经译码控制单元译码后送入指令缓存器。
2、根据权利要求1所述的动态调度控制器,其特征在于所述的数据相关检测单元对流水线上标志位、缓冲器中的标志位以及译码器的译码结果进行比较,分析出未发射指令,流水线上指令,以及缓冲器内指令之间的数据相关,分析的结果作为动态调度控制的控制条件。
3、根据权利要求1所述的动态调度控制器,其特征在于所述的缓存器中的标志位用于判断缓冲器是否为空。
4、一种处理单发射流水线数据相关的动态调度方法,以译码控制单元为核心,在发生数据相关时进行指令发射的动态调度,具体的调度步骤如下:
指令进入译码控制单元,检测指令缓冲器中是否为空;
(1)若发现指令缓冲器为空则继续检测该指令是否与正在流水线上运行的指令发生数据相关;
(1.1)若该指令与流水线上运行的指令发生数据相关,则将该指令译码后的控制信号放入指令寄存器;
(1.2)若该指令与流水线上运行的指令没有发生数据相关,则将该指令发射,进入下一级流水线;
(2)若指令缓冲器不为空,则判断指令缓冲器中的指令是否还有数据相关的问题;
(2.1)若指令缓冲器中的指令仍然有数据相关的问题,则检测译码控制单元中的指令是否与正在流水线上运行的指令发生数据相关;
(2.2)若指令缓冲器中的指令已经没有数据相关的问题,则将指令缓冲器中的指令发射,进入下一级流水线;
(3)若译码控制单元中的指令与正在流水线上运行的指令发生数据相关,则插入N0P,停流水线;
(4)若译码控制单元中的指令与正在流水线上运行的指令没有数据相关,则将该指令发射,进入下一级流水线。
CNB2007100386308A 2007-03-29 2007-03-29 一种处理单发射流水线数据相关的动态调度控制器和方法 Expired - Fee Related CN100533373C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007100386308A CN100533373C (zh) 2007-03-29 2007-03-29 一种处理单发射流水线数据相关的动态调度控制器和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007100386308A CN100533373C (zh) 2007-03-29 2007-03-29 一种处理单发射流水线数据相关的动态调度控制器和方法

Publications (2)

Publication Number Publication Date
CN101030134A CN101030134A (zh) 2007-09-05
CN100533373C true CN100533373C (zh) 2009-08-26

Family

ID=38715508

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100386308A Expired - Fee Related CN100533373C (zh) 2007-03-29 2007-03-29 一种处理单发射流水线数据相关的动态调度控制器和方法

Country Status (1)

Country Link
CN (1) CN100533373C (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101710272B (zh) * 2009-10-28 2012-09-05 龙芯中科技术有限公司 指令调度装置和方法
CN103235716B (zh) * 2013-04-19 2016-03-02 中国科学院自动化研究所 一种用于检测流水线数据相关的装置
CN103294567B (zh) * 2013-05-31 2015-10-28 中国航天科技集团公司第九研究院第七七一研究所 一种单发射五级流水处理器的精确异常处理方法
CN103761073A (zh) * 2014-01-08 2014-04-30 东南大学 一种面向ARMv7的基于推测的指令动态调度方法
CN108494704A (zh) * 2018-03-05 2018-09-04 电子科技大学 一种基于通道的双缓冲技术的实时数据流处理方法

Also Published As

Publication number Publication date
CN101030134A (zh) 2007-09-05

Similar Documents

Publication Publication Date Title
CN100533373C (zh) 一种处理单发射流水线数据相关的动态调度控制器和方法
CN101710272B (zh) 指令调度装置和方法
CN1328657C (zh) 在计算机处理器中发出指令的方法以及计算机处理器
US10078357B2 (en) Power gating functional units of a processor
CN101477454A (zh) 嵌入式处理器的乱序执行控制装置
KR101541001B1 (ko) 아직 발행되지 않은 명령들에 대한 얼리 액세스를 가진 코프로세서를 구비한 프로세서
TWI827754B (zh) 誤預測恢復裝置以及用於自誤預測中恢復的方法
CN1222985A (zh) 在多级流水线结构中处理条件跳转的方法
CN109101276B (zh) 在cpu中执行指令的方法
CN105242963B (zh) 执行机构间的切换控制
CN100498691C (zh) 指令处理电路和处理程序指令的方法
CN105975252A (zh) 一种处理指令的流水线的实现方法、装置及处理器
CN102799418B (zh) 融合了顺序和vliw的处理器体系结构及指令执行方法
JP2007514237A (ja) 分岐先バッファにおいてエントリを割り当てる方法及び装置
CN104461758A (zh) 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构
CN103207776B (zh) 一种gene乱序发射处理器内核
CN106843816A (zh) 一种分支预测控制方法及装置
CN116991479B (zh) 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置
CN1266592C (zh) 依据确定延迟的动态vliw指令调度方法
CN102495724A (zh) 一种加快存储指令执行效率的数据处理器
US20140129805A1 (en) Execution pipeline power reduction
CN105487989A (zh) 一种降低响应延时提高系统效率的中断控制器及控制方法
CN113095026A (zh) 一种支持乱序多读写的寄存器组电路装置
CN100353346C (zh) 嵌入式系统及其指令预取装置和方法
US20030061466A1 (en) Method and apparatus for fast dependency cooridnate matching

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090826

Termination date: 20120329