公开/公告号CN106933533A
专利类型发明专利
公开/公告日2017-07-07
原文格式PDF
申请/专利权人 北京国睿中数科技股份有限公司;
申请/专利号CN201511032209.7
申请日2015-12-31
分类号G06F9/30;G06F9/38;
代理机构北京清亦华知识产权代理事务所(普通合伙);
代理人张大威
地址 100085 北京市海淀区上地信息路5街高立二千科技大厦4层西区
入库时间 2023-06-19 02:48:20
法律状态公告日
法律状态信息
法律状态
2019-04-16
授权
授权
2018-10-16
专利申请权的转移 IPC(主分类):G06F9/30 登记生效日:20180920 变更前: 变更后: 申请日:20151231
专利申请权、专利权的转移
2017-08-01
实质审查的生效 IPC(主分类):G06F9/30 申请日:20151231
实质审查的生效
2017-07-07
公开
公开
技术领域
本发明涉及计算机技术领域,特别涉及一种访存部件及访存部件中访存指令读取数据的方法。
背景技术
在顺序发射乱序执行的处理器访存部件中,存储指令一般在位于保留站时从寄存器中获取数据源操作数。如果源操作数没有准备好,则该存储指令仍位于保留站中,后续与该存储指令不相关的访存指令便会被阻塞,无法发射或执行,从而导致处理器性能降低。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的在于提出一种访存部件,能够降低加载指令的阻塞延迟,提高处理器的性能。
本发明的另一个目的在于提出一种访存部件中访存指令读取数据的方法。
根据本发明第一方面实施例的访存部件,包括:保留站和流水线,所述保留站暂存有访存指令,所述访存指令从所述保留站顺序进入所述流水线,并从所述流水线顺序进入访存执行队列,其中,所述访存指令包括存储指令和加载指令;数据暂存区;访存执行队列,所述存储指令在进入所述访存执行队列后,从所述数据暂存区中获取所述存储指令的数据源操作数。
根据本发明实施例的访存部件,存储指令可在进入访存执行队列后,从数据暂存区中获取存储指令的数据源操作数,与相关技术相比,能够防止与存储指令不相关的加载指令因被阻塞而暂时无法继续发射或执行,从而降低了加载指令的阻塞延迟,提高了处理器的性能。
另外,根据本发明上述实施例的访存部件还可以具有如下附加的技术特征:
根据本发明的一个实施例,所述访存部件还包括:一级缓存和主存,用于写入成功获取所述数据源操作数的所述存储指令。
根据本发明的一个实施例,所述存储指令在位于所述保留站中时,获取所述存储指令的地址源操作数,所述加载指令在位于所述保留站中时,获取所述加载指令的地址源操作数。
进一步地,在顺序进入所述流水线的所述访存指令中,如果前一条指令为存储指令,后一条指令为加载指令,且所述加载指令的地址与所述存储指令的地址相关,则所述加载指令停留在所述流水线中,在所述存储指令成功从所述数据暂存区中获取所述存储指令的数据源操作数后,所述加载指令进入所述访存执行队列。
进一步地,在顺序进入所述流水线的所述访存指令中,如果前一条指令为存储指令,后一条指令为加载指令,且所述加载指令的地址与所述存储指令的地址不相关,则所述加载指令进入所述访存执行队列。
进一步地,所述数据暂存区包括:重排序缓存,所述加载指令在进入所述访存执行队列后,在写回时进入所述重排序缓存,以便对所述访存执行队列中乱序执行的所述加载指令进行重新排序。
根据本发明第二方面实施例的访存部件中访存指令读取数据的方法,包括以下步骤:位于保留站中的访存指令顺序进入流水线,其中,所述访存指令包括存储指令和加载指令;所述访存指令从所述流水线顺序进入访存执行队列;所述存储指令在进入所述访存执行队列后,从所述数据暂存区中获取所述存储指令的数据源操作数。
根据本发明实施例的访存部件中访存指令读取数据的方法,存储指令可在进入访存执行队列后,从数据暂存区中获取存储指令的数据源操作数,与相关技术相比,能够防止与存储指令不相关的加载指令因被阻塞而暂时无法继续发射或执行,从而降低了加载指令的阻塞延迟,提高了处理器的性能。
另外,根据本发明上述实施例的访存部件中访存指令读取数据的方法还可以具有如下附加的技术特征:
根据本发明的一个实施例,所述方法还包括:将成功获取所述存储指令的数据源操作数的所述存储指令写入一级缓存或主存。
根据本发明的一个实施例,所述方法还包括:位于保留站中的所述存储指令获取所述存储指令的地址源操作数,位于保留站中的所述加载指令获取所述加载指令的地址源操作数。
进一步地,所述方法还包括:在顺序进入所述流水线的所述访存指令中,如果前一条指令为存储指令,后一条指令为加载指令,且所述加载指令的地址与所述存储指令的地址相关,则所述加载指令停留在所述流水线中,在所述存储指令成功从所述数据暂存区中获取所述存储指令的数据源操作数后,所述加载指令进入所述访存执行队列。
进一步地,所述方法还包括:在顺序进入所述流水线的所述访存指令中,如果前一条指令为存储指令,后一条指令为加载指令,且所述加载指令的地址与所述存储指令的地址不相关,则所述加载指令进入所述访存执行队列。
进一步地,所述方法还包括:所述加载指令在进入所述访存执行队列后,在写回时进入重排序缓存,以便对所述访存执行队列中乱序执行的所述加载指令进行重新排序。
附图说明
图1为根据本发明一个实施例的访存部件的结构框图;
图2为根据本发明另一个实施例的访存部件的结构框图;
图3为根据本发明又一个实施例的访存部件的结构框图;
图4为根据本发明一个实施例的访存部件中访存指令读取数据的方法的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面结合附图描述本发明实施例的访存部件及访存部件中访存指令读取数据的方法。
图1为根据本发明一个实施例的访存部件的结构框图。
如图1所示,本发明实施例的访存部件,包括:保留站10、流水线20、数据暂存区30和访存执行队列40。
其中,保留站10暂存有访存指令,访存指令从保留站10顺序进入流水线20,并从流水线20顺序进入访存执行队列40,其中,访存指令包括存储指令和加载指令。在本发明的实施例中,访存指令在流水线中的相关处理过程也是顺序执行的。
存储指令在进入访存执行队列40后,从数据暂存区30中获取存储指令的数据源操作数。
一般地,访存指令在发射和执行的过程中可产生数据冲突,如果后一条访存指令的地址与前一条访存指令的地址相关,即后一条访存指令的地址受其前一条访存指令的地址的影响,则在前一条存储指令成功获取操作数前,后一条加载指令不得进行下一步的发射或执行。如果存储指令无法成功获取数据源操作数,则与该存储指令不相关的后一条加载指令也不得进行下一步的发射或执行。而若存储指令在进入访存执行队列后获取存储指令的数据源操作数,则不会影响加载指令从保留站10进入流水线20,以及从流水线20进入访存执行队列40。
根据本发明实施例的访存部件,存储指令可在进入访存执行队列后,从数据暂存区中获取存储指令的数据源操作数,与相关技术相比,能够防止与存储指令不相关的加载指令因被阻塞而暂时无法继续发射或执行,从而降低了加载指令的阻塞延迟,提高了处理器的 性能。
如图2所示,本发明实施例的访存部件,还可包括一级缓存50和主存60。成功获取数据源操作数的存储指令可写入一级缓存50或主存60。
在本发明的一个实施例中,存储指令可在位于保留站10中时,获取存储指令的地址源操作数,加载指令可在位于保留站10中时,获取加载指令的地址源操作数。在顺序进入流水线20的访存指令中,如果前一条指令为存储指令,后一条指令为加载指令,且加载指令的地址与存储指令的地址相关,即加载指令的地址受其前一条存储指令的地址的影响,则加载指令停留在流水线20中,在存储指令成功从数据暂存区30中获取存储指令的数据源操作数后,加载指令进入访存执行队列40;在顺序进入流水线20的访存指令中,如果前一条指令为存储指令,后一条指令为加载指令,且加载指令的地址与存储指令的地址不相关,即加载指令的地址不受其前一条存储指令的地址的影响,则加载指令进入访存执行队列40。
如图3所示,在本发明的实施例中,数据暂存区30可包括重排序缓存31。加载指令在进入访存执行队列40后,可在写回时进入重排序缓存31,以便对访存执行队列40中乱序执行的加载指令进行重新排序。
此外,在本发明的一个实施例中,数据暂存区30除可包括重排序缓存31外,还可包括寄存器堆和物理寄存器堆。
对应上述实施例,本发明还提出一种访存部件中访存指令读取数据的方法。
图4为根据本发明一个实施例的访存部件中访存指令读取数据的方法的流程图。
如图4所示,本发明实施例的访存部件中访存指令读取数据的方法,包括以下步骤:
S401,位于保留站中的访存指令顺序进入流水线,其中,访存指令包括存储指令和加载指令。
S402,访存指令从流水线顺序进入访存执行队列。
在本发明的实施例中,访存指令在流水线中的相关处理过程也是顺序执行的。
S403,存储指令在进入访存执行队列后,从数据暂存区中获取存储指令的数据源操作数。
一般地,访存指令在发射和执行的过程中可产生数据冲突,如果后一条访存指令的地址与前一条访存指令的地址相关,即后一条访存指令的地址受其前一条访存指令的地址的影响,则在前一条存储指令成功获取操作数前,后一条加载指令不得进行下一步的发射或执行。如果存储指令无法成功获取数据源操作数,则与该存储指令不相关的后一条加载指令也不得进行下一步的发射或执行。而若存储指令在进入访存执行队列后获取存储指令的数据源操作数,则不会影响加载指令从保留站进入流水线,以及从流水线进入访存执行队 列。
根据本发明实施例的访存部件中访存指令读取数据的方法,存储指令可在进入访存执行队列后,从数据暂存区中获取存储指令的数据源操作数,与相关技术相比,能够防止与存储指令不相关的加载指令因被阻塞而暂时无法继续发射或执行,从而降低了加载指令的阻塞延迟,提高了处理器的性能。
此外,在步骤S403之后,还可包括:将成功获取存储指令的数据源操作数的存储指令写入一级缓存或主存。
在本发明的一个实施例中,位于保留站中的存储指令获取存储指令的地址源操作数,位于保留站中的加载指令获取加载指令的地址源操作数。在顺序进入流水线的访存指令中,如果前一条指令为存储指令,后一条指令为加载指令,且加载指令的地址与存储指令的地址相关,即加载指令的地址受其前一条存储指令的地址的影响,则加载指令停留在流水线中,在存储指令成功从数据暂存区中获取存储指令的数据源操作数后,加载指令进入访存执行队列;在顺序进入流水线的访存指令中,如果前一条指令为存储指令,后一条指令为加载指令,且加载指令的地址与存储指令的地址不相关,即加载指令的地址不受其前一条存储指令的地址的影响,则加载指令进入访存执行队列。加载指令在进入访存执行队列后,可在写回时进入重排序缓存,以便对访存执行队列中乱序执行的加载指令进行重新排序。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特 征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
机译: 多路流水线数据库联接中的访存优化
机译: 一种使用称为Fetch的移动应用程序进行在线访存安排的系统和方法
机译: 通过选择性地访问双峰和基于访存的历史表来执行分支预测的电路,系统和方法