CN102722341B - 存储载入单元投机执行控制装置 - Google Patents
存储载入单元投机执行控制装置 Download PDFInfo
- Publication number
- CN102722341B CN102722341B CN201210157282.7A CN201210157282A CN102722341B CN 102722341 B CN102722341 B CN 102722341B CN 201210157282 A CN201210157282 A CN 201210157282A CN 102722341 B CN102722341 B CN 102722341B
- Authority
- CN
- China
- Prior art keywords
- instruction
- storing
- loading
- loaded
- storage
- 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.)
- Active
Links
Landscapes
- Advance Control (AREA)
Abstract
一种存储载入单元投机执行控制装置,包括:存储/载入指令投机发射序列单元,用于以程序顺序接收存储/载入指令流,并创建保存指令顺序的程序序列矩阵;完成存储/载入指令的数据相关性消除工作,投机地将数据相关性已经消除但地址相关性无法判断的存储/载入指令发射到存储/载入指令执行单元中,并且将未消除数据相关性的存储/载入指令存入指令缓存器中;存储/载入指令执行单元,用于接收来自投机发射序列发射的存储/载入指令,按照指令的类型完成相应的操作;存储/载入指令重排序缓冲器,用于对存储/载入指令的执行进行监控。本发明在处理深流水线处理时加速存储载入操作、保证正确性、提升存储器性能。
Description
技术领域
本发明涉及存储器管理技术,尤其是一种存储载入单元。
背景技术
程序设计者将一段程序按照一定顺序交给微处理器进行计算运行,通常这个特定顺序叫做程序顺序。微处理器获得指令流后根据程序顺序,以及执行指令的特定规则下发给其各个执行单元进行运算。其中存储载入指令将发射给存储载入单元执行,修改存储器或者获得存储器中的数值,以及其他相关操作。
一种可以使存储载入单元根据程序顺序正确执行存储载入指令的方法是简单根据程序顺序来执行存储载入指令,按序的读入指令,按序的读取或修改寄存器和存储器,按序的退休指令。
然而当存储载入单元遇到的指令与前序指令,特别是长周期指令,有数据相关关系时,该阻塞指令将长期无法执行而导致后续无关的存储载入指令无法执行。而如果使用乱序投机的存储载入单元,可以避免阻塞指令后续的存储载入指令长期等待而可以提前执行,从而减少因为阻塞指令导致的长时间存储载入单元空闲,实现效能的提升。
乱序执行的存储载入的控制单元,其能够乱序地对存储器进行存储和载入控制,使得无相关的存储载入行为能够最大限度地进行乱序高速执行。由于存储\载入单元需要直接修改内存和寄存器,不仅涉及到数据相关性的维护,而且还涉及地址相关性的消除,但是深流水线处理的地址相关性往往需要较晚才能得知,所以需要一种投机执行的乱序存储\载入单元,加速存储载入操作,并保证存储载入操作的正确性。
发明内容
为了克服已有乱序执行的存储载入单元在处理深流水线处理时操作速度较慢、操作正确性较差、限制了存储器性能的不足,本发明提供一种在处理深流水线处理时加速存储载入操作、保证正确性、提升存储器性能的存储载入单元投机执行控制装置。
本发明解决其技术问题所采用的技术方案是:
一种存储载入单元投机执行控制装置,所述投机执行控制装置包括:
存储/载入指令投机发射序列单元,用于以程序顺序接收存储/载入指令流,并创建保存指令顺序的程序序列矩阵;根据存储/载入指令操作数的相关性信息,完成存储/载入指令的数据相关性消除工作,投机地将数据相关性已经消除但地址相关性无法判断的存储/载入指令发射到存储/载入指令执行单元中,并且将未消除数据相关性的存储/载入指令存入指令缓存器中;
存储/载入指令执行单元,用于连接至存储/载入指令投机发射序列,接收来自投机发射序列发射的存储/载入指令,按照指令的类型完成相应的操作;
存储/载入指令重排序缓冲器,用于根据位于存储/载入指令投机发射序列记录指令顺序的程序序列矩阵和存储/载入指令执行单元执行的存储/载入指令,对存储/载入指令的执行进行监控,检测乱序执行的指令是否因为地址相关性而出现投机错误,将指令执行指令投机错误的信息输出到存储/载入指令投机发射序列;存储/载入指令投机发射序列将指令执行的正确与否的信息输出给微处理器将指令错误信息反馈给微处理器。
进一步,所述存储/载入指令投机发射序列单元中,建立程序序列矩阵时,运用矩阵行列二维更新的特性,记录指令序列的创建信息,为存储/载入指令重排序缓冲器提供依据。
再进一步,所述存储/载入指令执行单元中,进行地址计算和内存存储访问,将执行完成的结果反馈回存储/载入指令乱序发射序列。
更进一步,所述存储/载入指令重排序缓冲器中,对存储/载入指令的执行进行监控的过程为:检查当前正在执行指令的前序指令是否还有未完成的;同时检查是否有和当前指令访问地址相同的前序指令;如果有未完成的并且访问地址相同的前序指令,则返回存储/载入指令重排序缓冲器投机执行错误;避免因为地址相关性导致的投机执行错误。
优选的,如果发现存储/载入指令投机执行错误,则存储/载入单元获得投机失败信号并反馈给微处理器内部控制逻辑,由微处理器内部控制单元重新执行该指令之后的所有指令。
本发明中,所述数据相关性是指前序指令的输出数据与后序存储载入指令的输入数据之间有相关关系,地址相关性是指前序指令的输出数据与后序指令的地址之间有相关关系。
本发明的有益效果主要表现在:在处理深流水线处理时加速存储载入操作、保证正确性、提升存储器性能。
附图说明
图1是乱序执行的存储载入单元框架图。
图2是乱序执行的存储载入单元结构图。
图3是存储/载入指令乱序发射序列流程图。
图4是存储/载入指令执行单元流程图。
图5是存储/载入指令重排序缓冲器流程图。
图6是程序序列矩阵操作示意图,其中,(a)为初始状态矩阵内所有位全部清零,(b)为指令m进入存储载入单元,(c)为对于指令n,程序顺序比它早的指令为指令2和指令m。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图6,一种存储载入单元投机执行控制装置,该单元包括存储/载入指令乱序发射序列、存储/载入指令执行单元、存储/载入指令重排序缓冲器。
存储/载入指令投机发射序列(11)接收来自微处理器取指单元的顺序指令(31),判断该指令的数据相关性是否消除(32)。如果该存储\载入指令数据相关性,则顺序下发该指令(33)。如果该指令具有数据相关性,则存储该指令(34),发射后续无相关性的指令,等待该指令的数据相关性消除后再发射该指令(35),从而实现指令的投机乱序发射。
存储/载入指令投机发射序列(11)接收来自微处理器取指单元的顺序指令(31),并根据指令的运行顺序,建立程序序列矩阵。该矩阵为二维N*N变方阵(N为存储载入单元最多能同时容纳的指令数目)(61)。一条指令进入存储/载入指令投机发射序列时,将程序序列矩阵该条指令对应的横列全部清除,将该条指令对应的纵列全部置位,以此来记录指令的先后顺序(62)。当需要得知在A指令之前的所有指令时,只要查看A指令所对应的横行,若某条横行标志位为1,则该指令的程序顺序在A指令之前;若某条横行标志位为1,则该指令的程序顺序在A指令之后(63)。
存储/载入指令执行单元(12)接收来自存储/载入指令乱序发射序列的指令,并根据存储载入指令的规则执行存储载入运算(41)。运算结果需要修改存储器时,按照存储指令在存储/载入指令乱序发射序列中记录的顺序按序提交请求给总线(44),若要修改寄存器,则按照载入指令在存储/载入指令乱序发射序列中记录的顺序按序修改寄存器(47)。运算结束信息返回存储/载入指令乱序发射序列,并由乱序发射序列反馈微处理器。
存储/载入指令重排序缓冲器(13)监测存储/载入指令执行单元中指令的执行过程。存储/载入指令重排序缓冲器对每一条存储指令进行监测(51):当存储指令执行结束前,存储/载入指令重排序缓冲器根据程序序列矩阵中记录的指令顺序,监测是否有程序顺序位于该条存储指令之后的载入指令已经被执行(55),若存在这样的载入指令且该载入指令的地址和存储指令的地址相同(56),则存储/载入指令重排序缓冲器向微处理器反馈指令执行错误信息(57),否则投机执行正确。投机错误的指令将被存储/载入单元重新执行。
Claims (5)
1.一种存储/载入单元投机执行控制装置,其特征在于:所述投机执行控制装置包括:
存储/载入指令投机发射序列单元,用于以程序顺序接收存储/载入指令流,并创建保存指令顺序的程序序列矩阵;根据存储/载入指令操作数的相关性信息,完成存储/载入指令的数据相关性消除工作,投机地将数据相关性已经消除但地址相关性无法判断的存储/载入指令发射到存储/载入指令执行单元中,并且将未消除数据相关性的存储/载入指令存入指令缓存器中;
存储/载入指令执行单元,用于连接至存储/载入指令投机发射序列单元,接收来自存储/载入指令投机发射序列单元发射的存储/载入指令,按照指令的类型完成相应的操作;
存储/载入指令重排序缓冲器,用于根据位于存储/载入指令投机发射序列单元记录指令顺序的程序序列矩阵和存储/载入指令执行单元执行的存储/载入指令,对存储/载入指令的执行进行监控,检测乱序执行的指令是否因为地址相关性而出现投机错误,将指令执行投机错误的信息输出给微处理器。
2.如权利要求1所述的存储/载入单元投机执行控制装置,其特征在于:所述存储/载入指令投机发射序列单元中,建立程序序列矩阵时,运用矩阵行列二维更新的特性,记录指令顺序的创建信息,为存储/载入指令重排序缓冲器提供依据。
3.如权利要求1或2所述的存储/载入单元投机执行控制装置,其特征在于:所述存储/载入指令执行单元中,进行地址计算和内存存储访问,将执行完成的结果反馈回存储/载入指令投机发射序列单元。
4.如权利要求1或2所述的存储/载入单元投机执行控制装置,其特征在于:所述存储/载入指令重排序缓冲器中,对存储/载入指令的执行进行监控的过程为:检查当前正在执行指令的前序指令是否还有未完成的;同时检查是否有和当前指令访问地址相同的前序指令;如果有未完成的并且访问地址相同的前序指令,则返回存储/载入指令重排序缓冲器投机执行错误。
5.如权利要求4所述的存储/载入单元投机执行控制装置,其特征还在于:如果发现存储/载入指令投机执行错误,则存储/载入单元获得投机失败信号并反馈给微处理器内部控制单元,由微处理器内部控制单元重新执行该指令之后的所有指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210157282.7A CN102722341B (zh) | 2012-05-17 | 2012-05-17 | 存储载入单元投机执行控制装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210157282.7A CN102722341B (zh) | 2012-05-17 | 2012-05-17 | 存储载入单元投机执行控制装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102722341A CN102722341A (zh) | 2012-10-10 |
CN102722341B true CN102722341B (zh) | 2014-12-24 |
Family
ID=46948127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210157282.7A Active CN102722341B (zh) | 2012-05-17 | 2012-05-17 | 存储载入单元投机执行控制装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102722341B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10423423B2 (en) | 2015-09-29 | 2019-09-24 | International Business Machines Corporation | Efficiently managing speculative finish tracking and error handling for load instructions |
US9830270B2 (en) * | 2015-11-25 | 2017-11-28 | GM Global Technology Operations LLC | Optimized memory layout through data mining |
CN116348850A (zh) * | 2020-11-06 | 2023-06-27 | 华为技术有限公司 | 处理指令的方法以及图计算装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0707385A1 (en) * | 1994-04-22 | 1996-04-17 | Ntt Mobile Communications Network Inc. | Method for receiving code division multiplex signal |
CN1237732A (zh) * | 1998-06-01 | 1999-12-08 | 国际商业机器公司 | 分布式指令完成逻辑 |
CN1971537A (zh) * | 2005-11-25 | 2007-05-30 | 杭州中天微系统有限公司 | 一种矩阵数据存取方法及其矩阵数据存储装置 |
CN101114218A (zh) * | 2006-07-27 | 2008-01-30 | 中国科学院计算技术研究所 | 复杂指令集体系结构中的深度优先异常处理方法 |
CN101526896A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微系统有限公司 | 嵌入式处理器的加载/存储单元 |
CN101710272A (zh) * | 2009-10-28 | 2010-05-19 | 北京龙芯中科技术服务中心有限公司 | 指令调度装置和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7281120B2 (en) * | 2004-03-26 | 2007-10-09 | International Business Machines Corporation | Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor |
JP2011008548A (ja) * | 2009-06-25 | 2011-01-13 | Fujitsu Ltd | データ中継装置およびストレージシステム |
-
2012
- 2012-05-17 CN CN201210157282.7A patent/CN102722341B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0707385A1 (en) * | 1994-04-22 | 1996-04-17 | Ntt Mobile Communications Network Inc. | Method for receiving code division multiplex signal |
CN1237732A (zh) * | 1998-06-01 | 1999-12-08 | 国际商业机器公司 | 分布式指令完成逻辑 |
CN1971537A (zh) * | 2005-11-25 | 2007-05-30 | 杭州中天微系统有限公司 | 一种矩阵数据存取方法及其矩阵数据存储装置 |
CN101114218A (zh) * | 2006-07-27 | 2008-01-30 | 中国科学院计算技术研究所 | 复杂指令集体系结构中的深度优先异常处理方法 |
CN101526896A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微系统有限公司 | 嵌入式处理器的加载/存储单元 |
CN101710272A (zh) * | 2009-10-28 | 2010-05-19 | 北京龙芯中科技术服务中心有限公司 | 指令调度装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102722341A (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9619233B2 (en) | Computer processor providing exception handling with reduced state storage | |
US20100325395A1 (en) | Dependence prediction in a memory system | |
EP2972878B1 (en) | Mechanism for facilitating dynamic and efficient management of instruction atomicity violations in software programs at computing systems | |
US10970079B2 (en) | Parallel dispatching of multi-operation instructions in a multi-slice computer processor | |
US20180107510A1 (en) | Operation of a multi-slice processor implementing instruction fusion | |
US20170235577A1 (en) | Operation of a multi-slice processor implementing a mechanism to overcome a system hang | |
CN104461468A (zh) | 基于处理器指令快速完成的精确异常维护方法及装置 | |
CN102722341B (zh) | 存储载入单元投机执行控制装置 | |
US20130326200A1 (en) | Integrated circuit devices and methods for scheduling and executing a restricted load operation | |
US20130013283A1 (en) | Distributed multi-pass microarchitecture simulation | |
CN101371223B (zh) | 运算数的提早有条件选择 | |
CN106843816A (zh) | 一种分支预测控制方法及装置 | |
US9424165B2 (en) | Debugging processor hang situations using an external pin | |
CN104216681A (zh) | 一种cpu指令处理方法和处理器 | |
CN102799419B (zh) | 寄存器写冲突检测方法及装置、以及处理器 | |
CN114116002B (zh) | 一种存储重命名的实现方法、处理器及计算机设备 | |
US20190294571A1 (en) | Operation of a multi-slice processor implementing datapath steering | |
US10248555B2 (en) | Managing an effective address table in a multi-slice processor | |
CN113168367A (zh) | 位精确跟踪中的处理器存储器重排序提示 | |
CN113703842B (zh) | 一种基于分支预测的值预测方法、装置及介质 | |
CN115687131A (zh) | 一种程序调试方法 | |
CN101593095B (zh) | 基于流水级的数据处理方法和系统 | |
US20190213055A1 (en) | Operation of a multi-slice processor implementing a hardware level transfer of an execution thread | |
CN117270972B (zh) | 指令处理方法、装置、设备和介质 | |
CN116841614B (zh) | 乱序访存机制下的顺序向量调度方法 |
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 |