CN109716292A - 在块原子数据流架构中提供存储器相依性预测 - Google Patents

在块原子数据流架构中提供存储器相依性预测 Download PDF

Info

Publication number
CN109716292A
CN109716292A CN201780056834.6A CN201780056834A CN109716292A CN 109716292 A CN109716292 A CN 109716292A CN 201780056834 A CN201780056834 A CN 201780056834A CN 109716292 A CN109716292 A CN 109716292A
Authority
CN
China
Prior art keywords
instruction
load
interdependent
block
store
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
CN201780056834.6A
Other languages
English (en)
Other versions
CN109716292B (zh
Inventor
何辰瀚
G·M·赖特
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN109716292A publication Critical patent/CN109716292A/zh
Application granted granted Critical
Publication of CN109716292B publication Critical patent/CN109716292B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开在块原子数据流架构中提供存储器相依性预测。在一个方面中,提供一种存储器相依性预测电路。所述存储器相依性预测电路包括配置成存储多个预测器表条目的预测器表,所述预测器表条目各自包括存储指令标识符、块达到组和加载组。使用这一数据,所述存储器相依性预测电路在通过执行管道提取指令块后确定所述指令块是否含有达到相依加载指令的存储指令。如果是,那么将所述存储指令标记为具有待唤醒的相依加载指令。在一些方面,所述存储器相依性预测电路配置成确定所述指令块是否含有由存储指令达到的相依加载指令。如果是,那么所述存储器相依性预测电路延迟所述相依加载指令的执行。

Description

在块原子数据流架构中提供存储器相依性预测
优先权申请
本申请案要求2016年9月19日申请且标题为“在块原子数据流架构中提供存储器相依性预测(PROVIDING MEMORY DEPENDENCE PREDICTION IN BLOCK-ATOMIC DATAFLOWARCHITECTURES)”的美国专利申请案第15/269,254号的优先权,所述申请案以全文引用的方式并入本文中。
技术领域
本公开的技术大体上涉及存储器相依性预测,且确切地说,涉及块原子数据流架构中的存储器相依性预测。
背景技术
如本文中所使用,“块原子数据流架构”是一种计算机架构,其中计算机程序细分为数据流指令块,所述数据流指令块中的每一者包括以群组形式进行原子级提取、执行和提交的多个数据流指令。数据流指令按通过输入操作数的可用性确定的顺序执行(亦即,无论数据流指令的程序顺序如何,一旦其输入操作数全部可用就允许执行数据流指令)。数据流指令块内的加载指令和存储指令进行缓冲直到数据流指令块的执行完成为止,此时所有的加载指令和存储指令一起提交。
为了提高系统性能,基于块原子数据流架构的乱序处理器(out-of-orderprocessor;OoP)可采用存储器相依性预测技术来预测在指令执行时间时,加载指令与存储指令之间的相依性。成功的存储器相依性预测可使得OoP能够确保存储指令和其相依加载指令按正确顺序执行,因此避免存储器相依性违反。存储器相依性预测还可允许OoP推测性地执行乱序的其它加载指令和存储指令以防止处理器暂停,所述暂停可不利地影响性能。
然而,块原子数据流架构对存储器相依性预测提出了独特挑战。由于数据流指令在数据流指令块中的执行顺序不保证对应于程序顺序,因此OoP可能需要使其存储器相依性预测基于块层级信息而不是基于更细微的(finer-grained)指令层级信息。此外,OoP可能不能够有效地动态地确定是否将执行或提取存储器相依性预测所基于的加载指令。甚至搜索基于程序顺序的相依加载指令和对应存储指令可能是困难的,因为即使在提取数据流指令时在数据流指令块中也可能不存在数据流指令的严格排序。类似地,当在执行存储指令后“唤醒”相依加载指令时,OoP可能不能够依赖于相依加载指令和其对应存储指令的程序顺序。
发明内容
详细描述中所公开的方面包含在块原子数据流架构中提供存储器相依性预测。在一个方面中,提供一种存储器相依性预测电路。存储器相依性预测电路通信地连接到处理器装置的执行管道,所述处理器装置基于块原子数据流架构。存储器相依性预测电路提供用于存储多个预测器表条目的预测器表,所述多个预测器表条目用于追踪存储器相依性违反的出现。每一预测器表条目包含:存储指令标识符,其对应于存储指令的例子;以及块达到组和加载组,其用于所述存储指令。块达到组含有块标识符,所述块标识符对应于含有对存储指令的例子具有存储器相依性的相依加载指令的指令块,而加载组含有加载指令标识符,所述加载指令标识符对应于用于存储指令的相依加载指令。当提取指令块时,存储器相依性预测电路使用预测器表的存储指令标识符以识别指令块内的达到一或多个相依加载指令的任何存储指令。存储器相依性预测电路将此类存储指令标记为具有待唤醒的相依加载指令。存储器相依性预测电路还基于存储于预测器表中的块达到组和加载组而确定指令块是否含有由对应存储指令达到的相依加载指令。如果是,那么当执行指令块时,延迟一或多个相依加载指令的执行。在执行对应存储指令时,稍后“唤醒”一或多个相依加载指令以供执行。在一些方面,处理器装置的加载/存储单元配置成通过提供标记物表和延迟缓冲器来与存储器相依性预测电路相协调,所述标记物表和延迟缓冲器用于标记加载和存储指令且延迟相依加载指令的执行。
在另一方面中,提供一种存储器相依性预测电路。存储器相依性预测电路包括配置成存储多个预测器表条目的预测器表。多个预测器表条目的每一预测器表条目包括存储指令标识符,所述存储指令标识符对应于存储指令的例子。每一预测器表条目进一步包括块达到组,所述块达到组包括对应于至少一个指令块的至少一个块标识符,所述至少一个指令块各自含有对存储指令的例子具有存储器相依性的一或多个相依加载指令。每一预测器表条目还包括加载组,所述加载组包括对应于一或多个相依加载指令的一或多个加载指令标识符。存储器相依性预测电路配置成在通过执行管道提取指令块后基于预测器表的多个预测器表条目的一或多个存储指令标识符而确定指令块是否含有达到一或多个相依加载指令的一或多个存储指令。存储器相依性预测电路进一步配置成响应于确定指令块含有达到一或多个相依加载指令的一或多个存储指令而将一或多个存储指令标记为具有待唤醒的一或多个相依加载指令。
在另一方面中,提供一种用于提供存储器相依性预测的方法。所述方法包括通过存储器相依性预测电路来检测通过处理器装置的执行管道对指令块的提取。方法还包括基于预测器表的多个预测器表条目的一或多个存储指令标识符而确定指令块是否含有达到一或多个相依加载指令的一或多个存储指令。方法还包括响应于确定指令块含有达到一或多个相依加载指令的一或多个存储指令而将一或多个存储指令标记为具有待唤醒的一或多个相依加载指令。
在另一方面中,提供一种存储器相依性预测电路。所述存储器相依性预测电路包括用于检测通过处理器装置的执行管道对指令块的提取的装置。存储器相依性预测电路进一步包括用于基于预测器表的多个预测器表条目的一或多个存储指令标识符来确定指令块是否含有达到一或多个相依加载指令的一或多个存储指令的装置。存储器相依性预测电路还包括用于响应于确定指令块含有达到一或多个相依加载指令的一或多个存储指令而将一或多个存储指令标记为具有待唤醒的相依加载指令的装置。
附图说明
图1是实施块原子数据流架构且包含用于提供存储器相依性预测的存储器相依性预测电路的示范性处理器装置的框图;
图2是说明图1的存储器相依性预测电路的预测器表的示范性内容的框图;
图3A到3D是说明用于填入预测器表的图1的存储器相依性预测电路的示范性通信流的图式;
图4A到4D是说明用于预测存储器相依性的图1的存储器相依性预测电路和加载/存储单元的示范性通信流的图式;
图5A和5B是说明用于通过将存储指令标记为具有相依加载指令且在执行指令块时延迟相依加载指令的执行来提供在块原子数据流架构中的存储器相依性预测的示范性过程的流程图;
图6是说明用于在执行对应存储指令时唤醒延迟的相依加载指令的示范性过程的流程图;
图7A和7B是说明用于响应于存储器相依性违反的检测而填入图1的存储器相依性预测电路的预测器表的示范性过程的流程图;
图8是说明用于在不确认相依加载指令与对应存储指令的存储器相依性的情况下减少用于相依加载指令的置信度指示符的示范性操作的流程图;和
图9是可包含图1的块原子数据流处理器核心的示范性基于处理器的系统的框图。
具体实施方式
现参考各图,描述本公开的数个示范性方面。词语“示范性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示范性”的任何方面不必解释为比其它方面优选或有利。
详细描述中所公开的方面包含在块原子数据流架构中提供存储器相依性预测。在论述用于执行存储器相依性预测的存储器相依性预测电路前,描述基于块原子数据流架构的处理器装置的示范性元件和操作。在这点上,图1说明示范性处理器装置100,所述处理器装置基于块原子数据流架构且配置成执行一序列指令块,诸如指令块102(0)到102(X)。在一些方面,处理器装置100可以是多个块原子数据流处理器核心中的一者,其各自执行单独序列的指令块102(0)到102(X)和/或协调以执行单一序列的指令块102(0)到102(X)。处理器装置100可涵盖已知的数字逻辑元件、半导体电路、处理核心和/或存储器结构中的任一者以及其它元件,或其组合。本文中所描述的各方面并不限于任何特定元件布置,且所公开技术可容易地延伸到半导体裸片或封装上的各种结构和布局。
在示范性操作中,处理器装置100的层级1(L1)指令高速缓存104可接收指令块(例如,指令块102(0)到102(X))以供执行。应理解,在任何给定时间,处理器装置100可处理比图1中所说明的指令块102(0)到102(X)更多或更少的指令块。块预测器106确定指令块102(0)到102(X)的预测执行路径。在一些方面,块预测器106可以类似于常规乱序处理器(OoP)的分支预测器的方式预测执行路径。执行管道110内的块定序器108对指令块102(0)到102(X)进行排序,且将指令块102(0)到102(X)推进到一或多个指令解码阶段112中的一者以供解码。
在解码后,在等待执行期间将指令块102(0)到102(X)保持在指令缓冲器114中。指令排程器116将活跃的指令块102(0)到102(X)的指令(未展示)分发到处理器装置100的一或多个执行单元118中的一者。作为非限制性实例,一或多个执行单元118可包括算术逻辑单元(ALU)和/或浮点单元。一或多个执行单元118可将指令执行的结果提供到加载/存储单元120,其继而可将执行结果存储在L1数据高速缓存122中。
指令块102(0)到102(X)可包含用于执行存储器写入操作的存储指令(未展示)和/或用于执行存储器读取操作的加载指令(未展示)。由于处理器装置100可执行乱序的指令,因此理想的是处理器装置100采用存储器相依性预测技术来推测性地确定加载指令与存储指令之间在指令执行时间上的相依性。然而,通过处理器装置100进行的指令执行的乱序性质对有效的存储器相依性预测提出挑战。举例来说,处理器装置100可能需要使其存储器相依性预测基于块层级信息而不是更细微的指令层级信息,且另外可能不能够动态地确定是否将执行或提取用于做出存储器相依性预测的加载指令。另外,基于程序顺序定位相依加载指令和对应存储指令可能是困难的,因为即使当提取数据流指令时在指令块中也可能不存在严格的指令排序。
在这点上,提供图1的存储器相依性预测电路124以实现用于处理器装置100的存储器相依性预测。存储器相依性预测电路124利用预测器表126来维持通过处理器装置100检测到的存储器相依性违反的历史。随后,在提取每一指令块102(0)到102(X)时,存储器相依性预测电路124使用存储于预测器表126中的数据来识别每一指令块102(0)到102(X)内的达到一或多个相依加载指令的任何存储指令。随后将存储指令标记为具有待唤醒的相依加载指令。存储器相依性预测电路124还基于预测器表126来确定每一指令块102(0)到102(X)是否含有由对应存储指令达到的相依加载指令。如果是,那么当执行指令块102(0)到102(X)时,延迟一或多个相依加载指令的执行。在执行对应存储指令时,稍后“唤醒”一或多个相依加载指令以供执行。一些方面可提供的是,处理器装置100的加载/存储单元120配置成通过分别提供用于标记加载和存储指令且延迟相依加载指令的执行的标记物表128和延迟缓冲器130来与存储器相依性预测电路124相协调。
为了更详细地解释图1的存储器相依性预测电路124的示范性配置和操作,提供图2、3A到3D和4A到4D。图2说明图1的存储器相依性预测电路124的预测器表126的示范性内容。参照图3A到3D论述在填入预测器表126中涉及的示范性操作和通信流,同时图4A到4D说明用以使用标记物表128来标记加载和存储指令且用以使用延迟缓冲器130来延迟相依加载指令的执行的示范性操作和通信流。
如图2中所见,图1的存储器相依性预测电路124的预测器表126配置成存储一或多个预测器表条目200(0)到200(P)。响应于检测到的存储器相依性违反而生成和更新预测器表条目200(0)到200(P)中的每一者,且所述预测器表条目中的每一者对应于图1的指令块102(0)到102(X)中的一者中的存储指令的例子(未展示)。因此,预测器表条目200(0)到200(P)各自包含识别存储指令的存储指令标识符202(0)到202(P),所述存储指令标识符对应于检测到的存储器相依性违反。在一些方面,作为非限制性实例,存储指令标识符202(0)到202(P)中的每一者可包括用于存储指令的标识数据,诸如程序计数器(PC)。一些方面(诸如指令不与PC相关联的那些方面)可提供存储指令标识符202(0)到202(P),所述存储指令标识符包含含有存储指令的指令块102(0)到102(X)的PC以及指示指令块102(0)到102(X)内的存储指令的逻辑顺序的在存储指令内编码的指令标识符。或者,根据一些方面的存储指令标识符202(0)到202(P)中的每一者可包含指令块102(0)到102(X)的PC和指示存储指令相对于指令块102(0)到102(X)的起点的位置的偏移。在一些方面,存储指令标识符202(0)到202(P)各自可包含对应存储指令的存储器地址。
预测器表条目200(0)到200(P)中的每一者还包含块达到组204(0)到204(P)和加载组206(0)到206(P)。块达到组204(0)到204(P)含有识别指令块102(0)到102(X)的至少一个块标识符208(0)到208(N)、208'(0)到208'(N'),所述指令块含有取决于存储指令的加载指令。如下文更详细地描述,块达到组204(0)到204(P)可由存储器相依性预测电路124使用来确定存储指令的“达到”。如果检测到给定存储指令的多个例子(例如,多次执行的存储指令),那么每次提取含有存储指令的指令块102(0)到102(X)时都更新对应的块达到组204(0)到204(P),以包含识别具有取决于存储指令的加载指令的不同指令块102(0)-102(X)的块标识符208(0)到208(N)、208'(0)到208'(N')。
加载组206(0)到206(P)含有识别存储指令的相依加载指令的一或多个加载指令标识符210(0)到210(Y)、210'(0)到210'(Y')。作为非限制性实例,一些方面可提供的是,加载指令标识符210(0)到210(Y)、210'(0)到210'(Y')中的每一者可包括用于加载指令的标识数据,诸如PC。根据一些方面,加载指令标识符210(0)到210(Y)、210'(0)到210'(Y')中的每一者可包含含有加载指令的指令块102(0)到102(X)的PC以及指示指令块102(0)到102(X)内的加载指令的逻辑顺序的在加载指令内编码的指令标识符。一些方面可提供的是,加载指令标识符210(0)到210(Y)、210'(0)到210'(Y')各自可包含指令块102(0)到102(X)的PC和指示加载指令相对于指令块102(0)到102(X)的起点的位置的偏移。在一些方面,加载指令标识符210(0)到210(Y)、210'(0)到210'(Y')中的每一者可包含对应加载指令的存储器地址。
在一些方面,加载组206(0)到206(P)还可包含对应于加载指令标识符210(0)到210(Y)、210'(0)到210'(Y')的置信度指示符212(0)到212(Y)、212'(0)到212'(Y')。置信度指示符212(0)到212(Y)、212'(0)到212'(Y')可由存储器相依性预测电路124使用来确定相对于给定加载指令与存储指令之间的相依性的确定性水平。作为非限制性实例,存储器相依性预测电路124可仅在对应置信度指示符212(0)到212(Y)、212'(0)到212'(Y')超过指定置信度阈值214时才使存储器相依性预测基于特定加载指令标识符210(0)到210(Y)、210'(0)到210'(Y')。
如上所述,响应于通过存储器相依性预测电路124检测到的存储器相依性违反而生成和更新预测器表126的预测器表条目200(0)到200(P)。为了说明用于填入预测器表126的操作,提供图3A到3D。在图3A到3D中,展示三个(3)指令块102(0)到102(X)(分别“块X”、“块Y”和“块Z”)。指令块102(0)到102(X)中的每一者包含对应块标头300(0)到300(X),作为非限制性实例,所述块标头可含有用于指令块102(0)到102(X)的识别和控制数据。指令块102(0)包含存储指令302(“存储”)和其相关标识符(“ID”)304。类似地,指令块102(1)和102(X)分别包含具有对应ID 308(0)和308(1)的加载指令306(0)(“加载A”)和306(Y)(“加载B”)。应理解,在图3A到3D的实例中,加载指令306(0)和306(Y)取决于存储指令302。出于说明的目的,图3A到3D还展示图1的存储器相依性预测电路124和预测器表126。
在图3A中,假设试图在执行存储指令302之前执行相依加载指令306(0)导致存储器相依性违反(未展示),所述存储器相依性违反已由存储器相依性预测电路124检测到。作为响应,存储器相依性预测电路124对预测器表126进行存取以确定预测器表条目(诸如图2的预测器表条目200(0)到200(P))是否含有对应于相依加载指令306(0)所取决的存储指令302的存储指令标识符(例如,图2的存储指令标识符202(0))。
在图3A的实例中,预测器表126是空白的。因此,如图3B中所见,存储器相依性预测电路124生成预测器表条目200(0)。将对应于存储指令302的存储指令标识符202(0)添加到预测器表条目200(0)。在一些方面,存储指令标识符202(0)可包括识别存储指令302的数据(诸如ID 304)和/或识别含有存储指令302的指令块102(0)的数据。还将块达到组204(0)和加载组206(0)添加到预测器表条目200(0),其中块达到组204(0)含有对应于指令块102(0)的块标识符208(0)(“块X”),且加载组206(0)含有对应于相依加载指令306(0)的加载指令标识符210(0)(“加载A”)。另外,在一些方面,将与相依加载指令306(0)相关联的置信度指示符212(0)(例如,具有值零(0))添加到加载组206(0)。置信度指示符212(0)可通过存储器相依性预测电路124与置信度阈值214(在这一实例中,值一(1))相比较以确定是否提供存储器相依性预测。
现参看图3C,进一步假设由试图在执行存储指令302之前执行相依加载指令306(Y)导致的另一存储器相依性违反出现且通过存储器相依性预测电路124检测到。存储器相依性预测电路124再次对预测器表126进行存取以确定对应于相依加载指令306(Y)所取决的存储指令302的存储指令标识符202(0)是否存在。在这种情况下,预测器表条目200(0)含有用于存储指令302的存储指令标识符202(0)。存储器相依性预测电路124随后检查加载组206(0)以确定对应于相依加载指令306(Y)的加载指令标识符210(0)到210(Y)是否存在。在确定如图3B中所展示的加载设置206(0)不含有用于相依加载指令306(Y)的加载指令标识符210(0)到210(Y)后,存储器相依性预测电路124将用于相依加载指令306(Y)的加载指令标识符210(1)添加到加载组206(0)。
存储器相依性预测电路124还查询预测器表条目200(0)的块达到组204(0)以确定用于指令块102(X)的块标识符208(0)到208(N)是否存在。由于用于指令块102(X)的块标识符208(0)到208(N)在块达到组204(0)中不存在,因此存储器相依性预测电路124将用于指令块102(X)的块标识符208(1)添加到块达到组204(0)。
在图3D的实例中,再次假设由于另外试图在已执行存储指令302之前执行相依加载指令306(0),因此存储器相依性违反已发生。在这种情况下,存储器相依性预测电路124确定预测器表条目200(0)含有对应于存储指令302的存储指令标识符202(0)以及对应于相依加载指令306(0)的加载指令标识符210(0)两者。因此,存储器相依性预测电路124可增加置信度指示符212(0)的值以指示在未来存储器相依性违反的可能性中的较高置信度。
图4A到4D说明预测器表126可如何与标记物表128和延迟缓冲器130结合用于一些方面以延迟相依加载指令的执行以便防止存储器相依性违反。图4A到4D展示如图3A到3D中所说明的指令块102(0)到102(X)、存储指令302、相依加载指令306(0)和306(Y)、存储器相依性预测电路124以及预测器表126。图4A到4D还展示如在图3D中所填入的预测器表条目200(0),且说明图1的加载/存储单元120和执行管道110。如图4A到4D中所见,加载/存储单元120提供标记物表128和延迟缓冲器130,下文更详细地论述其功能。
图4A说明在一些方面中在提取指令块102(0)后发生的示范性操作和通信流。当提取指令块102(0)时,存储器相依性预测电路124识别属于指令块102(0)且达到一或多个加载指令的全部存储指令。在图4A的实例中,存储器相依性预测电路124识别指令块102(0)中的存储指令302。存储器相依性预测电路124随后在预测器表条目200(0)中定位对应于存储指令302的存储指令标识符202(0)。存储器相依性预测电路124因此能够推断存储指令302达到一或多个相依加载指令(亦即,相依加载指令306(0)和306(Y))。存储器相依性预测电路124通过使得用于存储指令302的标记物400生成和存储于加载/存储单元120的标记物表128中来将存储指令302标记为具有待唤醒的相依加载指令306(0)、306(Y)。
当提取指令块102(1)时,图4B中所说明的操作和通信流发生。当存储器相依性预测电路124检测指令块102(1)的提取时,存储器相依性预测电路124检查预测器表条目200(0),且将相依加载指令306(0)识别为属于指令块102(1)且由存储指令302达到。存储器相依性预测电路124生成用于相依加载指令306(0)的加载延迟标记物402,指示加载指令306(0)的执行将延迟直到执行对应存储指令302后为止。在图4B的实例中,加载延迟标记物402还存储于标记物表128中。
在图4C中,已选择相依加载指令306(0)以供执行。此时,存储器相依性预测电路124基于预测器表条目200(0)和/或标记物表128来确定相依加载指令306(0)的执行将延迟。因此,在这个实例中,存储器相依性预测电路124使得加载/存储单元120将加载指令306(0)传递到延迟缓冲器130,其中保持所述加载指令直到已执行存储指令302为止。
最后,如图4D中所见,当选择存储指令302以供执行时,存储器相依性预测电路124检查加载/存储单元120的标记物表128,且基于标记物400来将存储指令302识别为具有待唤醒的相依加载指令306(0)。因此,在执行存储指令302后,存储器相依性预测电路124查询预测器表126且生成识别待唤醒的全部相依加载指令306(0)、306(Y)的唤醒掩码404。唤醒掩码404发送到加载/存储单元120,所述加载/存储单元在存储指令302已完成执行后将相依加载指令306(0)转移到执行管道110以待执行。
图5A和5B是说明用于在块原子数据流架构中提供存储器相依性预测的存储器相依性预测电路124的示范性操作的流程图。为清楚起见,在描述图5A到5B时引用图1、2、3A到3D和4A到4D的元件。在图5A中,操作从存储器相依性预测电路124开始,所述存储器相依性预测电路通过处理器装置100的执行管道110检测对指令块102(0)的提取(框500)。在这点上,存储器相依性预测电路124在本文中可以被称为“用于通过处理器装置的执行管道检测对指令块的提取的装置”。存储器相依性预测电路124接下来基于预测器表126的多个预测器表条目200(0)到200(P)的一或多个存储指令标识符202(0)到202(P)来确定指令块102(0)是否含有达到一或多个相依加载指令306(0)到306(Y)的一或多个存储指令302(框502)。因此,存储器相依性预测电路124在本文中可以被称为“用于基于预测器表的多个预测器表条目的一或多个存储指令标识符来确定指令块是否含有达到一或多个相依加载指令的一或多个存储指令的装置”。
如果存储器相依性预测电路124在判定框502处确定指令块102(0)的确含有达到一或多个相依加载指令306(0)到306(Y)的一或多个存储指令302,那么存储器相依性预测电路124将一或多个存储指令302标记为具有待唤醒的相依加载指令306(0)到306(Y)(框504)。存储器相依性预测电路124可因此在本文中被称为“用于响应于确定指令块含有达到一或多个相依加载指令的一或多个存储指令而将一或多个存储指令标记为具有待唤醒的相依加载指令的装置”。处理随后在图5B的框506处恢复。然而,如果存储器相依性预测电路124在判定框502处确定不存在达到一或多个相依加载指令306(0)到306(Y)的存储指令302,那么处理在图5B的框508处恢复。
现参看图5B,存储器相依性预测电路124接下来确定指令块102(0)是否含有由一或多个存储指令302达到的一或多个相依加载指令306(0)到306(Y)(框508)。这一确定基于预测器表126的多个预测器表条目200(0)到200(P)的一或多个块达到组204(0)到204(P),每一块达到组204(0)到204(P)包括对应于至少一个指令块102(0)到102(X)的至少一个块标识符208(0)到208(N),所述至少一个指令块各自含有一或多个相依加载指令306(0)到306(Y)。所述确定进一步基于预测器表126的多个预测器表条目200(0)到200(P)的一或多个加载组206(0)到206(P),每一加载组206(0)到206(P)包括对应于一或多个相依加载指令306(0)到306(Y)的一或多个加载指令标识符210(0)到210(Y)。在这点上,存储器相依性预测电路124在本文中可以被称为“用于基于预测器表的多个预测器表条目的一或多个块达到组(其各自包括对应于各自含有一或多个相依加载指令的至少一个指令块的至少一个块标识符)和一或多个加载组(其各自包括对应于一或多个相依加载指令的一或多个加载指令标识符)来确定指令块是否含有由一或多个存储指令达到的一或多个相依加载指令的装置”。
如果存储器相依性预测电路124在判定框508处确定指令块102(0)不含有由一或多个存储指令302达到的一或多个相依加载指令306(0)到306(Y),那么所提取指令块102(0)的处理照常继续(框506)。然而,如果指令块102(0)的确含有一或多个相依加载指令306(0)到306(Y),那么在一些方面中,存储器相依性预测电路124可确定置信度指示符212(0)到212(Y)是否超过置信度阈值214(框510)。如果不,那么处理在框506处恢复。如果存储器相依性预测电路124在判定框510处确定置信度指示符212(0)到212(Y)超过置信度阈值214,那么根据一些方面的存储器相依性预测电路124可基于预测器表126的多个预测器表条目200(0)到200(P)的一或多个块达到组204(0)到204(P)和一或多个加载组206(0)到206(P)来生成识别一或多个相依加载指令306(0)到306(Y)的加载延迟标记物402(框512)。因此,存储器相依性预测电路124在本文中可以被称为“用于响应于确定指令块含有由一或多个存储指令达到的一或多个相依加载指令而基于预测器表的多个预测器表条目的一或多个块达到组和一或多个加载组来生成识别一或多个相依加载指令的加载延迟标记物的装置”。
存储器相依性预测电路124随后延迟一或多个相依加载指令306(0)到306(Y)的执行(框514)。存储器相依性预测电路124可因此在本文中被称为“用于响应于确定指令块含有由一或多个存储指令达到的一或多个相依加载指令而在执行指令块时延迟一或多个相依加载指令的执行的装置”。在一些方面,用于延迟一或多个相依加载指令306(0)到306(Y)的执行的框514的操作可包含存储器相依性预测电路124基于加载延迟标记物402将一或多个相依加载指令306(0)到306(Y)传递到延迟缓冲器130(框516)。在这点上,存储器相依性预测电路124在本文中可以被称为“用于基于加载延迟标记物将一或多个相依加载指令传递到延迟缓冲器的装置”。
为了说明用于在执行对应存储指令302时唤醒延迟的相依加载指令306(0)到306(Y)的示范性过程,提供图6。为清楚起见,在描述图6时引用图1、2、3A到3D和4A到4D的元件。图6中的操作从存储器相依性预测电路124开始,所述存储器相依性预测电路检测存储指令302的执行(框600)。因此,存储器相依性预测电路124在本文中可以被称为“用于检测存储指令的执行的装置”。存储器相依性预测电路124接下来确定是否将存储指令302标记为具有待唤醒的相依加载指令306(0)到306(Y)(框602)。存储器相依性预测电路124可因此在本文中被称为“用于确定是否将存储指令标记为具有待唤醒的相依加载指令的装置”。在一些方面,用于确定是否将存储指令302标记为具有相依加载指令306(0)到306(Y)的操作可包含确定加载/存储单元120的标记物表128是否含有对应于存储指令302的标记物400(未展示)。
如果存储器相依性预测电路124在判定框602处确定不将存储指令302标记为具有待唤醒的相依加载指令306(0)到306(Y),那么存储指令302的处理照常继续(框604)。然而,如果存储器相依性预测电路124在判定框602处确定将存储指令302标记为具有待唤醒的相依加载指令306(0)到306(Y),那么存储器相依性预测电路124接下来识别存储指令302的一或多个延迟的相依加载指令306(0)到306(Y)(框606)。在这点上,存储器相依性预测电路124在本文中可以被称为“用于响应于确定将存储指令标记为具有待唤醒的一或多个相依加载指令而识别存储指令的一或多个延迟的相依加载指令的装置”。
存储器相依性预测电路124随后唤醒存储指令302的一或多个延迟的相依加载指令306(0)到306(Y)以供执行(框608)。因此,存储器相依性预测电路124在本文中可以被称为“用于唤醒存储指令的一或多个延迟的相依加载指令以供执行的装置”。在一些方面,用于唤醒一或多个延迟的相依加载指令306(0)到306(Y)的框608的操作可包含存储器相依性预测电路124基于预测器表126的多个预测器表条目200(0)到200(P)的一或多个块达到组204(0)到204(P)和一或多个加载组206(0)到206(P)来生成识别待唤醒的一或多个延迟的相依加载指令306(0)到306(Y)的唤醒掩码404(框610)。存储器相依性预测电路124可因此在本文中被称为“用于基于预测器表的多个预测器表条目的一或多个块达到组和一或多个加载组来生成识别待唤醒的一或多个延迟的相依加载指令的唤醒掩码的装置”。加载/存储单元120可随后基于唤醒掩码404将一或多个延迟的相依加载指令306(0)到306(Y)自延迟缓冲器130传递到处理器装置100的执行管道110以供执行(框612)。在这点上,加载/存储单元120在本文中可以被称为“用于基于唤醒掩码将一或多个延迟的相依加载指令自延迟缓冲器传递到处理器装置的执行管道以供执行的装置”。
提供图7A和7B来说明用于响应于存储器相依性违反的检测而填入图1的存储器相依性预测电路124的预测器表126的示范性操作。为清楚起见,在描述图7A和7B时引用图1、2、3A到3D和4A到4D的元件。在图7A中,操作从存储器相依性预测电路124开始,所述存储器相依性预测电路检测由在对应存储指令302之前执行相依加载指令306(0)造成的存储器相依性违反(框700)。因此,存储器相依性预测电路124在本文中可以被称为“用于检测由在对应存储指令之前执行相依加载指令造成的存储器相依性违反的装置”。
存储器相依性预测电路124接下来确定预测器表126是否存储具有对应于存储指令302的存储指令标识符202(0)的预测器表条目200(0)(框702)。存储器相依性预测电路124可因此在本文中被称为“用于确定预测器表是否存储具有对应于存储指令的存储指令标识符的预测器表条目的装置”。如果预测器表126在判定框702处确定不含有具有存储指令标识符202(0)的预测器表条目200(0),那么处理在图7B的框704处恢复。否则,存储器相依性预测电路124接下来确定对应于相依加载指令306(0)的加载指令标识符210(0)是否存在于预测器表条目200(0)的加载组206(0)中(框706)。在这点上,存储器相依性预测电路124在本文中可以被称为“用于响应于确定预测器表的确存储预测器表条目而确定对应于相依加载指令的加载指令标识符是否存在于预测器表条目的加载组中的装置”。如果在判定框706处确定对应于相依加载指令306(0)的加载指令标识符210(0)存在于预测器表条目200(0)的加载组206(0)中,那么处理在图7B的框708处恢复。
如果存储器相依性预测电路124在判定框706处确定预测器表条目200(0)的加载组206(0)不含有对应于相依加载指令306(0)的加载指令标识符210(0),那么存储器相依性预测电路124将对应于相依加载指令306(0)的加载指令标识符210(0)添加到预测器表条目200(0)的加载组206(0)(框710)。因此,存储器相依性预测电路124在本文中可以被称为“用于响应于确定对应于相依加载指令的加载指令标识符存在于预测器表条目的加载组中而将对应于相依加载指令的加载指令标识符添加到预测器表条目的加载组的装置”。处理在图6B中的框712处恢复。
现参看图7B,如果存储器相依性预测电路124在图7A的判定框702处确定预测器表126不含有具有存储指令标识符202(0)的预测器表条目200(0),那么存储器相依性预测电路124生成新预测器表条目200(0),所述新预测器表条目含有:存储指令标识符202(0),其对应于存储指令302;块达到组204(0),其含有对应于相依加载指令306(0)的指令块102(0)的块标识符208(0);和加载组206(0),其含有对应于相依加载指令306(0)的加载指令标识符210(0)(框704)。在这点上,存储器相依性预测电路124在本文中可以被称为“用于响应于确定预测器表并不存储预测器表条目而生成含有存储指令标识符(其对应于存储指令)、块达到组(其含有对应于相依加载指令的指令块的块标识符)和加载组(其含有对应于相依加载指令的加载指令标识符)的新预测器表条目的装置”。检测到的存储器相依性违反的处理随后照常继续(框714)。
如果存储器相依性预测电路124在图7A的判定框706处确定对应于相依加载指令306(0)的加载指令标识符210(0)存在于预测器表条目200(0)的加载组206(0)中,那么在一些方面中,存储器相依性预测电路124可增加对应于加载指令标识符210(0)的置信度指示符212(0)(框708)。存储器相依性预测电路124可因此在本文中被称为“用于响应于确定对应于相依加载指令的加载指令标识符存在于预测器表条目的加载组中而增加置信度指示符的装置”。检测到的存储器相依性违反的处理随后照常继续(框714)。
如果存储器相依性预测电路124在图7A的判定框706处确定预测器表条目200(0)的加载组206(0)不含有对应于相依加载指令306(0)的加载指令标识符210(0),那么在将加载指令标识符210(0)添加到加载组206(0)后,存储器相依性预测电路124确定预测器表条目200(0)的块达到组204(0)是否含有对应于相依加载指令306(0)的指令块102(0)的块标识符208(0)(框712)。因此,存储器相依性预测电路124在本文中可以被称为“用于确定预测器表条目的块达到组是否含有对应于相依加载指令的指令块的块标识符的装置”。如果预测器表条目200(0)的块达到组204(0)含有对应于相依加载指令306(0)的指令块102(0)的块标识符208(0),那么检测到的存储器相依性违反的处理照常继续(框714)。否则,存储器相依性预测电路124将对应于相依加载指令306(0)的指令块102(0)的块标识符208(0)添加到预测器表条目200(0)的块达到组204(0)(框716)。存储器相依性预测电路124可因此在本文中被称为“用于响应于确定预测器表条目的块达到组不含有对应于相依加载指令的指令块的块标识符而将对应于相依加载指令的指令块的块标识符添加到预测器表条目的块达到组的装置”。检测到的存储器相依性违反的处理随后照常继续(框714)。
提供图8以说明用于在不确认相依加载指令306(0)与对应存储指令302的存储器相依性的情况下减少用于延迟的相依加载指令306(0)的置信度指示符212(0)的示范性操作。为清楚起见,在描述图8时引用图1、2、3A到3D和4A到4D的元件。图8中的操作从存储器相依性预测电路124开始,所述存储器相依性预测电路检测延迟的相依加载指令306(0)的执行(框800)。在这点上,存储器相依性预测电路124在本文中可以被称为“用于检测延迟的相依加载指令的执行的装置”。存储器相依性预测电路124确定是否确认用于延迟的相依加载指令306(0)的预测存储器相依性(框802)。因此,存储器相依性预测电路124在本文中可以被称为“用于确定是否确认用于延迟的相依加载指令的预测存储器相依性的装置”。如果是,处理继续(框804)。然而,如果不确认用于延迟的相依加载指令306(0)的预测存储器相依性,那么存储器相依性预测电路124减少预测器表126中的用于延迟的相依加载指令306(0)的置信度指示符212(0)(框806)。存储器相依性预测电路124可因此在本文中被称为“用于响应于确定不确认用于延迟的相依加载指令的预测存储器相依性而减少预测器表中的用于延迟的相依加载指令的置信度指示符的装置”。
根据本文中所公开的各方面的在块原子数据流架构中提供存储器相依性预测可设置于或集成到任何基于处理器的装置中。实例包含但不限于机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、全球定位系统(GPS)装置、移动电话、蜂窝电话、智能电话、会话起始协议(SIP)电话、平板计算机、平板手机、服务器、计算机、便携式计算机、移动计算装置、可穿戴计算装置(例如,智能手表、健康状况或健身追踪器、眼镜等)、台式计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、收音机、卫星收音机、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘(DVD)播放器、便携式数字视频播放器、汽车、车辆部件、航空电子系统、无人机和多轴直升机。
在这点上,图9说明可采用图1中所说明的存储器相依性预测电路(MDPC)124的基于处理器的系统900的实例。在这个实例中,基于处理器的系统900包含一或多个中央处理单元(CPU)902,所述一或多个中央处理单元各自包含一或多个处理器904。一或多个处理器904可包含图1的处理器装置100,且可包括图1的存储器相依性预测电路(MDPC)124。一或多个CPU 902可以是主装置。一或多个CPU 902可具有连接到一或多个处理器904以用于快速存取临时存储的数据的高速缓存存储器906。一或多个CPU902连接到系统总线908且可与包含于基于处理器的系统900中的主装置和从属装置相互连接。如所熟知,一或多个CPU 902通过经由系统总线908交换地址、控制和数据信息来与这些其它装置通信。举例来说,一或多个CPU 902可将总线事务请求传送到作为从属装置的一实例的存储器控制器910。
其它主装置和从属装置可连接到系统总线908。如图9中所说明,作为实例,这些装置可包含存储器系统912、一或多个输入装置914、一或多个输出装置916、一或多个网络接口装置918和一或多个显示器控制器920。一或多个输入装置914可包含任何类型的输入装置,包含但不限于输入键、开关、话音处理器等。一或多个输出装置916可包含任何类型的输出装置,包含但不限于音频、视频、其它视觉指示器等等。一或多个网络接口装置918可以是配置成允许数据与网络922间的交换的任何装置。网络922可以是任何类型的网络,包含但不限于有线或无线网络、私人或公共网络、局域网(LAN)、广域网(WLAN)和因特网。一或多个网络接口装置918可配置成支持所要的任何类型的通信协议。存储器系统912可包含一或多个存储器单元924(0)到924(Z)。
一或多个CPU 902还可配置成经由系统总线908对一或多个显示器控制器920进行存取以控制发送到一或多个显示器926的信息。一或多个显示器控制器920经由一或多个视频处理器928将信息发送到待显示的一或多个显示器926,所述一或多个视频处理器将待显示的信息处理成适用于一或多个显示器926的格式。一或多个显示器926可包含任何类型的显示器,包含但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
所属领域的技术人员将进一步了解,结合本文中所公开的各方面所描述的各种说明性逻辑块、模块、电路和算法可实施为电子硬件、存储于存储器中或另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或这两者的组合。作为实例,本文中所描述的主装置和从属装置可用于任何电路、硬件组件、集成电路(IC)或IC芯片中。本文中所公开的存储器可以是任何类型和大小的存储器,且可配置成存储所要的任何类型的信息。为了清楚地说明这一可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。如何实施此类功能性取决于特定应用、设计选项和/或强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施方案不应解释为引起对本公开的范围的偏离。
结合本文中所公开的各方面所描述的各种说明性逻辑块、模块和电路可通过以下来予以实施或执行:处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或设计为执行本文中所描述的功能的其任何组合。处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器的组合、一或多个微处理器与DSP核心结合或任何其它此类配置。
本文所公开的各方面可体现于硬件中和存储于硬件中的指令中,且可驻存在(例如)随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、动态RAM(DRAM)、同步DRAM(SDRAM)、硬盘、可移除式磁碟、CD-ROM或本领域中已知的计算机可读媒体的任何其它形式中。示范性存储媒体连接到处理器,使得处理器可从存储媒体读取信息和将信息写入到所述存储媒体。在替代方案中,存储媒体可与处理器成整体。处理器和存储媒体可驻存在ASIC中。ASIC可驻存在远程站中。在替代方案中,处理器和存储媒体可作为离散组件驻存在远程站、基站或服务器中。
还应注意,描述本文中的示范性方面中的任一者中所描述的操作步骤是为了提供实例和论述。可以除了所说明的集合之外的大量不同集合来执行所描述的操作。此外,单个操作步骤中所描述的操作实际上可在许多不同步骤中执行。另外,可组合在示范性方面中所论述的一或多个操作步骤。应理解,流程图中所说明的操作步骤可经受如所属领域的技术人员将容易显而易见的许多不同修改。所属领域的技术人员还将了解,可使用多种不同技法和技术中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
提供本公开的先前描述以使得所属领域的技术人员能够制造或使用本公开。本公开的各种修改将对所属领域的技术人员容易显而易见,且本文中所定义的一般原理可应用于其它变化形式而不会脱离本公开的精神或范围。因此,本公开并非意图限于本文中所描述的实例和设计,而应被赋予与本文中所公开的原理和新颖特征相一致的最广范围。

Claims (30)

1.一种存储器相依性预测电路,其包括:
预测器表,其配置成存储多个预测器表条目,所述预测器表条目各自包括:
存储指令标识符,其对应于存储指令的例子;
块达到组,其包括对应于至少一个指令块的至少一个块标识符,所述至少一个指令块各自含有对所述存储指令的所述例子具有存储器相依性的一或多个相依加载指令;和
加载组,其包括对应于所述一或多个相依加载指令的一或多个加载指令标识符;
所述存储器相依性预测电路配置成在通过执行管道提取指令块后进行以下操作:
基于所述预测器表的所述多个预测器表条目的一或多个存储指令标识符而确定所述指令块是否含有达到一或多个相依加载指令的一或多个存储指令;和
响应于确定所述指令块含有达到一或多个相依加载指令的一或多个存储指令而将所述一或多个存储指令标记为具有待唤醒的一或多个相依加载指令。
2.根据权利要求1所述的存储器相依性预测电路,其进一步配置成:
基于所述预测器表的所述多个预测器表条目的一或多个块达到组和一或多个加载组而确定所述指令块是否含有由一或多个存储指令达到的一或多个相依加载指令;和
响应于确定所述指令块含有由一或多个存储指令达到的一或多个相依加载指令而在执行所述指令块时延迟所述一或多个相依加载指令的执行。
3.根据权利要求2所述的存储器相依性预测电路,其进一步配置成:
检测存储指令的执行;
确定所述存储指令是否标记为具有待唤醒的一或多个相依加载指令;和
响应于确定将所述存储指令标记为具有待唤醒的一或多个相依加载指令而进行以下操作:
识别所述存储指令的一或多个延迟的相依加载指令;和
唤醒所述存储指令的所述一或多个延迟的相依加载指令以供执行。
4.根据权利要求3所述的存储器相依性预测电路,其配置成通过配置成进行以下操作来延迟所述一或多个相依加载指令的执行:
响应于确定所述指令块含有由一或多个存储指令达到的一或多个相依加载指令而基于所述预测器表来生成识别所述一或多个相依加载指令的加载延迟标记物;和
基于所述加载延迟标记物而将所述一或多个相依加载指令传递到延迟缓冲器。
5.根据权利要求4所述的存储器相依性预测电路,其配置成通过配置成进行以下操作来唤醒所述存储指令的所述一或多个延迟的相依加载指令以供执行:
基于所述预测器表而生成识别所述待唤醒的一或多个延迟的相依加载指令的唤醒掩码;和
基于所述唤醒掩码而将所述一或多个延迟的相依加载指令从所述延迟缓冲器传递到处理器装置的所述执行管道以供执行。
6.根据权利要求2所述的存储器相依性预测电路,其进一步配置成:
检测由在对应存储指令之前执行相依加载指令造成的存储器相依性违反;
确定所述预测器表是否存储具有对应于所述存储指令的存储指令标识符的预测器表条目;和
响应于确定所述预测器表并不存储预测器表条目而生成新预测器表条目,所述新预测器表条目含有:存储指令标识符,其对应于所述存储指令;块达到组,其含有对应于所述相依加载指令的所述指令块的块标识符;和加载组,其含有对应于所述相依加载指令的加载指令标识符。
7.根据权利要求6所述的存储器相依性预测电路,其进一步配置成响应于确定所述预测器表的确存储预测器表条目而进行以下操作:
确定对应于所述相依加载指令的加载指令标识符是否存在于所述预测器表条目的所述加载组中;
响应于确定对应于所述相依加载指令的加载指令标识符不存在于所述预测器表条目的所述加载组中而进行以下操作:
将对应于所述相依加载指令的加载指令标识符添加到所述预测器表条目的所述加载组;
确定所述预测器表条目的所述块达到组是否含有对应于所述相依加载指令的所述指令块的块标识符;和
响应于确定所述预测器表条目的所述块达到组不含有对应于所述相依加载指令的所述指令块的块标识符而将对应于所述相依加载指令的所述指令块的块标识符添加到所述预测器表条目的所述块达到组;
其中所述存储器相依性预测电路配置成响应于确定所述预测器表并不存储具有对应于所述存储指令的存储指令标识符的预测器表条目而生成所述新预测器表条目。
8.根据权利要求7所述的存储器相依性预测电路,其中:
所述多个预测器表条目各自进一步包括置信度指示符;
所述存储器相依性预测电路进一步配置成响应于确定对应于所述相依加载指令的加载指令标识符存在于所述预测器表条目的所述加载组中而增加所述置信度指示符;和
所述存储器相依性预测电路配置成进一步响应于超过置信度阈值的所述置信度指示符而延迟所述一或多个相依加载指令的执行。
9.根据权利要求8所述的存储器相依性预测电路,其进一步配置成:
检测延迟的相依加载指令的执行;
确定是否确认用于所述延迟的相依加载指令的预测存储器相依性;和
响应于确定不确认用于所述延迟的相依加载指令的预测存储器相依性而减少所述预测器表中的用于所述延迟的相依加载指令的所述置信度指示符。
10.根据权利要求1所述的存储器相依性预测电路,其中每一存储指令标识符包括以下中的一者:
含有所述存储指令的所述例子的指令块的程序计数器PC和对所述指令块内的所述存储指令的逻辑顺序的指示;
含有所述存储指令的所述例子的所述指令块的所述PC和指示所述存储指令相对于所述指令块的起点的位置的偏移;和
所述存储指令的存储器地址。
11.根据权利要求1所述的存储器相依性预测电路,其中所述一或多个加载指令标识符的每一加载指令标识符包括以下中的一者:
含有对应于所述加载指令标识符的相依加载指令的指令块的PC和对所述指令块内的所述相依加载指令的逻辑顺序的指示;
所述指令块的所述PC和指示对应于所述加载指令标识符的所述相依加载指令相对于所述指令块的起点的位置的偏移;和
对应于所述加载指令标识符的所述相依加载指令的存储器地址。
12.根据权利要求1所述的存储器相依性预测电路,其集成到集成电路IC中。
13.根据权利要求1所述的存储器相依性预测电路,其集成到选自由以下组成的群组的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;全球定位系统GPS装置;移动电话;蜂窝电话;智能电话;会话起始协议SIP电话;平板计算机;平板手机;服务器;计算机;便携式计算机;移动计算装置;可穿戴计算装置(例如,智能手表、健康状况或健身追踪器、眼镜等);台式计算机;个人数字助理PDA;监视器;计算机监视器;电视机;调谐器;收音机;卫星收音机;音乐播放器;数字音乐播放器;便携式音乐播放器;数字视频播放器;视频播放器;数字视频光盘DVD播放器;便携式数字视频播放器;汽车;车辆部件;航空电子系统;无人机;和多轴直升机。
14.一种用于提供存储器相依性预测的方法,其包括:
通过存储器相依性预测电路来检测通过处理器装置的执行管道对指令块的提取;
基于预测器表的多个预测器表条目的一或多个存储指令标识符来确定所述指令块是否含有达到一或多个相依加载指令的一或多个存储指令;和
响应于确定所述指令块含有达到一或多个相依加载指令的一或多个存储指令而将所述一或多个存储指令标记为具有待唤醒的一或多个相依加载指令。
15.根据权利要求14所述的方法,其进一步包括:
基于所述预测器表的所述多个预测器表条目的一或多个块达到组和一或多个加载组而确定所述指令块是否含有由一或多个存储指令达到的一或多个相依加载指令,其中每一块达到组包括对应于各自含有一或多个相依加载指令的至少一个指令块的至少一个块标识符,且每一加载组包括对应于一或多个相依加载指令的一或多个加载指令标识符;和
响应于确定所述指令块含有由一或多个存储指令达到的一或多个相依加载指令而在执行所述指令块时延迟所述一或多个相依加载指令的执行。
16.根据权利要求15所述的方法,其进一步包括:
检测存储指令的执行;
确定所述存储指令是否标记为具有待唤醒的一或多个相依加载指令;和
响应于确定将所述存储指令标记为具有待唤醒的一或多个相依加载指令而进行以下操作:
识别所述存储指令的一或多个延迟的相依加载指令;和
唤醒所述存储指令的所述一或多个延迟的相依加载指令以供执行。
17.根据权利要求16所述的方法,其中延迟所述一或多个相依加载指令的执行包括:
响应于确定所述指令块含有由一或多个存储指令达到的一或多个相依加载指令而基于所述预测器表的所述多个预测器表条目的一或多个块达到组和一或多个加载组来生成识别所述一或多个相依加载指令的加载延迟标记物;和
基于所述加载延迟标记物而将所述一或多个相依加载指令传递到延迟缓冲器。
18.根据权利要求17所述的方法,其中唤醒所述存储指令的所述一或多个延迟的相依加载指令以供执行包括:
基于所述预测器表的所述多个预测器表条目的一或多个块达到组和一或多个加载组而生成识别所述待唤醒的一或多个延迟的相依加载指令的唤醒掩码;和
基于所述唤醒掩码而将所述一或多个延迟的相依加载指令从所述延迟缓冲器传递到所述处理器装置的所述执行管道以供执行。
19.根据权利要求15所述的方法,其进一步包括:
检测由在对应存储指令之前执行相依加载指令造成的存储器相依性违反;
确定所述预测器表是否存储具有对应于所述存储指令的存储指令标识符的预测器表条目;和
响应于确定所述预测器表并不存储预测器表条目而生成新预测器表条目,所述新预测器表条目含有:存储指令标识符,其对应于所述存储指令;块达到组,其含有对应于所述相依加载指令的所述指令块的块标识符;和加载组,其含有对应于所述相依加载指令的加载指令标识符。
20.根据权利要求19所述的方法,其进一步包括响应于确定所述预测器表的确存储预测器表条目而进行以下操作:
确定对应于所述相依加载指令的加载指令标识符是否存在于所述预测器表条目的所述加载组中;
响应于确定对应于所述相依加载指令的加载指令标识符不存在于所述预测器表条目的加载组中而进行以下操作:
将对应于所述相依加载指令的加载指令标识符添加到所述预测器表条目的所述加载组;
确定所述预测器表条目的所述块达到组是否含有对应于所述相依加载指令的所述指令块的块标识符;和
响应于确定所述预测器表条目的所述块达到组不含有对应于所述相依加载指令的所述指令块的块标识符而将对应于所述相依加载指令的所述指令块的块标识符添加到所述预测器表条目的所述块达到组;
其中生成所述新预测器表条目是响应于确定所述预测器表并不存储具有对应于所述存储指令的存储指令标识符的预测器表条目。
21.根据权利要求20所述的方法,其中:
所述多个预测器表条目各自进一步包括置信度指示符;
所述方法进一步包括响应于确定对应于所述相依加载指令的加载指令标识符存在于所述预测器表条目的所述加载组中而增加所述置信度指示符;且
延迟所述一或多个相依加载指令的执行是进一步响应于超过置信度阈值的所述置信度指示符。
22.根据权利要求21所述的方法,其进一步包括:
检测延迟的相依加载指令的执行;
确定是否确认用于所述延迟的相依加载指令的预测存储器相依性;和
响应于确定不确认用于所述延迟的相依加载指令的预测存储器相依性而减少所述预测器表中的用于所述延迟的相依加载指令的所述置信度指示符。
23.根据权利要求14所述的方法,其中所述一或多个存储指令标识符的每一存储指令标识符包括以下中的一者:
含有对应存储指令的例子的指令块的程序计数器PC和对所述指令块内的所述存储指令的逻辑顺序的指示;
含有所述对应存储指令的所述例子的所述指令块的所述PC和指示所述存储指令相对于所述指令块的起点的位置的偏移;和
所述存储指令的存储器地址。
24.根据权利要求14所述的方法,其中所述一或多个加载指令标识符的每一加载指令标识符包括以下中的一者:
含有对应于所述加载指令标识符的相依加载指令的指令块的PC和对所述指令块内的所述相依加载指令的逻辑顺序的指示;
所述指令块的所述PC和指示对应于所述加载指令标识符的所述相依加载指令相对于所述指令块的起点的位置的偏移;和
对应于所述加载指令标识符的所述相依加载指令的存储器地址。
25.一种存储器相依性预测电路,其包括:
用于检测通过处理器装置的执行管道对指令块的提取的装置;
用于基于预测器表的多个预测器表条目的一或多个存储指令标识符来确定所述指令块是否含有达到一或多个相依加载指令的一或多个存储指令的装置;和
用于响应于确定所述指令块含有达到一或多个相依加载指令的一或多个存储指令而将所述一或多个存储指令标记为具有待唤醒的一或多个相依加载指令的装置。
26.根据权利要求25所述的存储器相依性预测电路,其进一步包括:
用于基于所述预测器表的所述多个预测器表条目的一或多个块达到组和一或多个加载组来确定所述指令块是否含有由一或多个存储指令达到的一或多个相依加载指令的装置,其中每一块达到组包括对应于各自含有一或多个相依加载指令的至少一个指令块的至少一个块标识符,且每一加载组包括对应于一或多个相依加载指令的一或多个加载指令标识符;和
用于响应于确定所述指令块含有由一或多个存储指令达到的一或多个相依加载指令而在执行所述指令块时延迟所述一或多个相依加载指令的执行的装置。
27.根据权利要求26所述的存储器相依性预测电路,其进一步包括:
用于检测存储指令的执行的装置;
用于确定所述存储指令是否标记为具有待唤醒的一或多个相依加载指令的装置;
用于响应于确定将所述存储指令标记为具有待唤醒的一或多个相依加载指令而识别所述存储指令的一或多个延迟的相依加载指令的装置;和
用于唤醒所述存储指令的所述一或多个延迟的相依加载指令以供执行的装置。
28.根据权利要求27所述的存储器相依性预测电路,其中所述用于延迟所述一或多个相依加载指令的执行的装置包括:
用于响应于确定所述指令块含有由一或多个存储指令达到的一或多个相依加载指令而基于所述预测器表的所述多个预测器表条目的一或多个块达到组和一或多个加载组来生成识别所述一或多个相依加载指令的加载延迟标记物的装置;和
用于基于所述加载延迟标记物来将所述一或多个相依加载指令传递到延迟缓冲器的装置。
29.根据权利要求28所述的存储器相依性预测电路,其中所述用于唤醒所述存储指令的所述一或多个延迟的相依加载指令以供执行的装置包括:
用于基于所述预测器表的所述多个预测器表条目的一或多个块达到组和一或多个加载组而生成识别所述待唤醒的一或多个延迟的相依加载指令的唤醒掩码的装置;和
用于基于所述唤醒掩码来将所述一或多个延迟的相依加载指令从所述延迟缓冲器传递到所述处理器装置的所述执行管道以供执行的装置。
30.根据权利要求26所述的存储器相依性预测电路,其进一步包括:
用于检测由在对应存储指令之前执行相依加载指令造成的存储器相依性违反的装置;
用于确定所述预测器表是否存储具有对应于所述存储指令的存储指令标识符的预测器表条目的装置;和
用于响应于确定所述预测器表并不存储预测器表条目而生成新预测器表条目的装置,所述新预测器表条目含有:存储指令标识符,其对应于所述存储指令;块达到组,其含有对应于所述相依加载指令的所述指令块的块标识符;和加载组,其含有对应于所述相依加载指令的加载指令标识符。
CN201780056834.6A 2016-09-19 2017-08-22 在块原子数据流架构中提供存储器相依性预测 Active CN109716292B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/269,254 2016-09-19
US15/269,254 US10684859B2 (en) 2016-09-19 2016-09-19 Providing memory dependence prediction in block-atomic dataflow architectures
PCT/US2017/047946 WO2018052668A1 (en) 2016-09-19 2017-08-22 Providing memory dependence prediction in block-atomic dataflow architectures

Publications (2)

Publication Number Publication Date
CN109716292A true CN109716292A (zh) 2019-05-03
CN109716292B CN109716292B (zh) 2023-01-24

Family

ID=59738527

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780056834.6A Active CN109716292B (zh) 2016-09-19 2017-08-22 在块原子数据流架构中提供存储器相依性预测

Country Status (3)

Country Link
US (1) US10684859B2 (zh)
CN (1) CN109716292B (zh)
WO (1) WO2018052668A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10831678B2 (en) * 2017-11-21 2020-11-10 Arm Limited Multi-tier cache placement mechanism
US10678549B2 (en) 2017-11-28 2020-06-09 International Business Machines Corporation Executing processor instructions using minimal dependency queue
US10936321B2 (en) * 2019-02-01 2021-03-02 International Business Machines Corporation Instruction chaining
US10929142B2 (en) 2019-03-20 2021-02-23 International Business Machines Corporation Making precise operand-store-compare predictions to avoid false dependencies
US11243774B2 (en) 2019-03-20 2022-02-08 International Business Machines Corporation Dynamic selection of OSC hazard avoidance mechanism
US11119767B1 (en) * 2020-06-19 2021-09-14 Apple Inc. Atomic operation predictor to predict if an atomic operation will successfully complete and a store queue to selectively forward data based on the predictor
US11243773B1 (en) * 2020-12-14 2022-02-08 International Business Machines Corporation Area and power efficient mechanism to wakeup store-dependent loads according to store drain merges

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1415088A (zh) * 2000-01-03 2003-04-30 先进微装置公司 具有不训练的存储至加载转送预测器
CN101014934A (zh) * 2004-09-08 2007-08-08 先进微装置公司 具有相关机制以预测是否加载与较旧储存相关的处理器
US20100325395A1 (en) * 2009-06-19 2010-12-23 Doug Burger Dependence prediction in a memory system
CN102652304A (zh) * 2009-12-22 2012-08-29 国际商业机器公司 预测并避免乱序微处理器中的操作数-存储-比较冒险
CN103455309A (zh) * 2012-05-04 2013-12-18 苹果公司 加载-储存相关性预测器内容管理
US20140282601A1 (en) * 2013-03-15 2014-09-18 Soft Machines, Inc. Method for dependency broadcasting through a block organized source view data structure
CN104823168A (zh) * 2012-06-15 2015-08-05 索夫特机械公司 用于实现从由加载存储重新排序和优化所引发的推测性转发缺失预测/错误中恢复的方法和系统
CN104903851A (zh) * 2013-01-15 2015-09-09 高通股份有限公司 数据高速缓存通路预测
CN105190540A (zh) * 2013-03-15 2015-12-23 高通股份有限公司 优化用于上下文相关指令的性能

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781752A (en) * 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
US5987595A (en) * 1997-11-25 1999-11-16 Intel Corporation Method and apparatus for predicting when load instructions can be executed out-of order
US6108770A (en) 1998-06-24 2000-08-22 Digital Equipment Corporation Method and apparatus for predicting memory dependence using store sets
US6212622B1 (en) * 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Mechanism for load block on store address generation
US6463523B1 (en) * 1999-02-01 2002-10-08 Compaq Information Technologies Group, L.P. Method and apparatus for delaying the execution of dependent loads
US20030065909A1 (en) * 2001-09-28 2003-04-03 Jourdan Stephan J. Deferral of dependent loads until after execution of colliding stores
WO2005106648A2 (en) * 2004-04-15 2005-11-10 Sun Microsystems, Inc. Entering scout-mode when speculatiive stores exceed the capacity of the store buffer
US8285947B2 (en) * 2009-02-06 2012-10-09 Apple Inc. Store hit load predictor
US9262171B2 (en) 2009-06-30 2016-02-16 Oracle America, Inc. Dependency matrix for the determination of load dependencies
US10198265B2 (en) * 2013-03-15 2019-02-05 Intel Corporation Microprocessor for gating a load operation based on entries of a prediction table
US9606806B2 (en) 2013-06-25 2017-03-28 Advanced Micro Devices, Inc. Dependence-based replay suppression
US9619750B2 (en) 2013-06-29 2017-04-11 Intel Corporation Method and apparatus for store dependence prediction
US9244827B2 (en) 2013-09-25 2016-01-26 Intel Corporation Store address prediction for memory disambiguation in a processing device
US11977891B2 (en) * 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US20170083331A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Memory synchronization in block-based processors
US11681531B2 (en) * 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US20170371660A1 (en) * 2016-06-23 2017-12-28 Microsoft Technology Licensing, Llc Load-store queue for multiple processor cores
US20180032344A1 (en) * 2016-07-31 2018-02-01 Microsoft Technology Licensing, Llc Out-of-order block-based processor
US20180081806A1 (en) * 2016-09-22 2018-03-22 Qualcomm Incorporated Memory violation prediction

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1415088A (zh) * 2000-01-03 2003-04-30 先进微装置公司 具有不训练的存储至加载转送预测器
CN101014934A (zh) * 2004-09-08 2007-08-08 先进微装置公司 具有相关机制以预测是否加载与较旧储存相关的处理器
US20100325395A1 (en) * 2009-06-19 2010-12-23 Doug Burger Dependence prediction in a memory system
CN102652304A (zh) * 2009-12-22 2012-08-29 国际商业机器公司 预测并避免乱序微处理器中的操作数-存储-比较冒险
CN103455309A (zh) * 2012-05-04 2013-12-18 苹果公司 加载-储存相关性预测器内容管理
CN104823168A (zh) * 2012-06-15 2015-08-05 索夫特机械公司 用于实现从由加载存储重新排序和优化所引发的推测性转发缺失预测/错误中恢复的方法和系统
CN104903851A (zh) * 2013-01-15 2015-09-09 高通股份有限公司 数据高速缓存通路预测
US20140282601A1 (en) * 2013-03-15 2014-09-18 Soft Machines, Inc. Method for dependency broadcasting through a block organized source view data structure
CN105190540A (zh) * 2013-03-15 2015-12-23 高通股份有限公司 优化用于上下文相关指令的性能

Also Published As

Publication number Publication date
CN109716292B (zh) 2023-01-24
WO2018052668A1 (en) 2018-03-22
US10684859B2 (en) 2020-06-16
US20180081686A1 (en) 2018-03-22

Similar Documents

Publication Publication Date Title
CN109716292A (zh) 在块原子数据流架构中提供存储器相依性预测
US11379234B2 (en) Store-to-load forwarding
CN106462505B (zh) 同步计算环境中对状态指示符的更新
US9946549B2 (en) Register renaming in block-based instruction set architecture
CN104126179B (zh) 用于多核处理器中的核心间通信的方法和装置
CN106462394B (zh) 使用共享硬件资源的群集处理器核心中硬件线程的动态负载平衡以及相关的电路、方法和计算机可读媒体
CN108780398A (zh) 在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测
US8874587B2 (en) Tenant placement in multitenant cloud databases with one-to-many data sharing
CN104054053A (zh) 警告追踪中断设施
CN109716293A (zh) 在基于处理器的系统中使用融合处理器核心执行分布式分支预测
CN105683905A (zh) 在多核心处理器中并行功能的高效率硬件分派及相关的处理器系统、方法及计算机可读媒体
CN107209664B (zh) 用于扇出生产指令的结果的方法和设备及计算机可读媒体
US20200097296A1 (en) Providing late physical register allocation and early physical register release in out-of-order processor (oop)-based devices implementing a checkpoint-based architecture
CN112631775A (zh) 模型训练方法、装置、电子设备和计算机可读存储介质
CN104054052A (zh) 由一个程序向另一个程序提供对警告追踪设施的存取
CN104854556A (zh) 建立用于子例程返回的分支目标指令高速缓冲存储器(btic)条目以减少执行管线泡,以及相关系统、方法和计算机可读媒体
CN106104466B (zh) 在超越控制分支预测器中的推测历史转递以及相关电路、方法和计算机可读媒体
CN115702415A (zh) 响应于处理器中的危险而在指令流水线冲刷后重用已取回的、经冲刷的指令以减少指令重取
US9317636B1 (en) System and method for stopping integrated circuit simulation
CN112789594B (zh) 提供预测指令调度节流以防止基于无序处理器(oop)的设备中的资源溢出
CN104854557B (zh) 存取高速缓存的设备和方法
US20150186586A1 (en) Integrated circuit layouts and methods to improve performance
CN107924310A (zh) 使用避免转出表(pat)预测计算机处理器中的存储器指令转出
CN104335167B (zh) 用于处理计算机指令的方法和处理器
CN105700855A (zh) 改进的simd k最近邻实现

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