CN107209664B - 用于扇出生产指令的结果的方法和设备及计算机可读媒体 - Google Patents

用于扇出生产指令的结果的方法和设备及计算机可读媒体 Download PDF

Info

Publication number
CN107209664B
CN107209664B CN201680008217.4A CN201680008217A CN107209664B CN 107209664 B CN107209664 B CN 107209664B CN 201680008217 A CN201680008217 A CN 201680008217A CN 107209664 B CN107209664 B CN 107209664B
Authority
CN
China
Prior art keywords
instruction
bits
operand
block
result
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
Application number
CN201680008217.4A
Other languages
English (en)
Other versions
CN107209664A (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 CN107209664A publication Critical patent/CN107209664A/zh
Application granted granted Critical
Publication of CN107209664B publication Critical patent/CN107209664B/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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Abstract

本发明提供一种用于使用存储器单元的第一至第四集合及电路扇出生产者指令的结果的计算机处理器核心。存储器单元的所述第一集合是经配置以存储生产者指令的所述结果的专用寄存器。所述第二至第四集合是消费者指令的保留站记录。所述第二集合经配置以存储所述消费者指令的操作代码。所述第三集合经配置以存储所述消费者指令的操作数选择信息。所述第四集合经配置以存储所述消费者指令的操作数。所述电路可经配置以将所述第四集合连接到执行单元,并且响应于所述第三集合中的信息而使所述执行单元经配置以选择性地接收所述第一集合的内容作为所述第二指令的所述操作数。所述消费者指令的格式包含指定用于所述操作代码及所述操作数选择信息的位的集合。

Description

用于扇出生产指令的结果的方法和设备及计算机可读媒体
技术领域
本文所揭示的方面大体上涉及指令的结果的扇出,且更确切地说,涉及显式数据图形执行(EDGE)指令集架构的指令的结果的扇出。
背景技术
计算机程序表示作为指令序列的算法。序列的次序称为程序次序。通常,在编程器可理解的源代码中表示的计算机程序中的指令通过编译器重组成由处理单元可执行的机器代码。随着消费者为越来越多的应用程序提供了市场,电子工业一直寻求提高处理单元的速度。
同时执行多个指令(即,并行处理)的能力是提高处理单元的速度的一个方法。在并行处理中,处理单元包含多个执行单元。在一个方法中,响应于指令所需的所有操作数已通过执行单元接收,通过所述执行单元执行指令。因为使用此方法,可在通过第二执行单元执行第二指令之前通过第一执行单元执行第一指令,即使第一指令在程序次序中的位置晚于第二指令,所以此处理单元可称为乱序(OOO)处理单元。
然而,因为计算机程序通常包含第一指令(即,生产指令)的结果是第二指令(即,消费指令)的操作数的情况,所以OOO处理单元的实施方案需要考虑消费指令的操作数取决于生产指令的情况。当消费指令等待生产指令使其结果可用于消费指令时出现的延迟(即,时延)可逐渐损坏并行处理的优点。
解决时延问题的一个策略是具有经配置以包含生产指令结果的目标的标识的生产指令及具有经配置使得保留站的列阵中用于消费指令的操作数的记录位置的标识可为生产指令结果的目标的标识的微架构。以此方式,响应于用于生产指令的执行单元生产生产指令的结果,用于消费指令的执行单元可直接接收生产指令的结果作为操作数。显式数据图形执行(EDGE)指令集架构是经设计以实施此并行处理方法的一组机器代码指令。
发明内容
示例性方面可涉及用于扇出第一指令的结果的设备。设备可包含存储器单元及电路。存储器单元可包含第一集合、第二集合、第三集合及第四集合。第一集合可经配置以存储第一指令的结果。第二集合可经配置以存储第二指令的操作代码(即,操作码)。第三集合可经配置以存储第二指令的信息。第四集合可经配置以存储第二指令的操作数。电路可经配置以将第四集合连接到执行单元,并且经配置以响应于第三集合中存在所述信息而使所述执行单元经配置以接收第一集合的内容作为第二指令的操作数。第一集合、第二集合、第三集合及第四集合可不相交。第二指令的格式可包含指定用于操作代码的位的集合及指定用于信息的位的集合。
另一示例性方面可涉及用于扇出第一指令的结果的另一设备。其它设备可包含:用于存储第一指令的结果的装置;用于存储第二指令的操作代码的装置;用于存储第二指令的信息的装置;用于存储第二指令的操作数的装置;及用于响应于在用于存储所述信息的所述装置中存在所述信息而使用于执行所述第二指令的装置经配置以接收用于存储所述结果的所述装置的内容作为所述第二指令的操作数的装置。用于存储结果的装置、用于存储操作代码的装置、用于存储信息的装置及用于存储操作数的装置可不相交。第二指令的格式可包含指定用于操作代码的位的集合及指定用于信息的位的集合。
又另一示例性方面可涉及用于扇出第一指令的结果的方法。第一指令的结果可存储在存储器单元的第一集合中。第二指令的操作代码可存储在存储器单元的第二集合中。第二指令的信息可存储在存储器单元的第三集合中。可提供存储器单元的第四集合。存储器单元的第四集合可经配置以存储第二指令的操作数。可响应于第三集合中存在所述信息而使执行单元经配置以接收第一集合的内容作为第二指令的操作数。存储器单元的第一集合、存储器单元的第二集合、存储器单元的第三集合及存储器单元的第四集合可不相交。第二指令的格式可包含指定用于操作代码的位的集合及指定用于信息的位的集合。
又另一示例性方面可涉及计算机处理器核心。计算机处理器核心可包含阵列及电路。阵列可具有保留站。保留站可具有记录。所述记录可具有存储器单元的第一集合及存储器单元的第二集合。存储器单元的第一集合可经配置以存储指令的操作代码。存储器单元的第二集合可经配置以存储指令的信息。存储器单元的第二集合及存储器单元的第一集合可不相交。指令的格式可包含指定用于操作代码的位的集合及指定用于信息的位的集合。指令可具有指令块。指令块可根据基于块的指令集架构进行配置。电路可经配置以确定存储器单元的第二集合中存在所述信息。电路可经配置以响应于所述确定而选择指令的操作数的源。电路可经配置以执行作为单元的指令块。
附图说明
在详细描述、所附权利要求书及附图中描述这些及其它样本方面。
图1是说明其中可操作基于块的计算机处理单元的系统的实例的框图。
图2是说明基于块的计算机处理器核心的实例的框图。
图3是说明用于扇出指令的结果的设备的实例的框图。
图4是说明图3中所说明的设备的环境的实例的框图。
图5至16是说明图3中所说明的设备的变化的实例的框图。
图17及18是说明可通过图3至16中所说明的设备执行的指令的格式的实例的图式。
图19至23是说明与用于描述系统的操作的实例情形相关联的一些存储器单元及开关的状态的图式,所述系统包含图16中所说明的设备的方面。
图24是说明用于扇出指令的结果的方法的实例的流程图。
根据惯例,图式中所说明的各种特征可能并非按比例绘制。因此,为了清晰起见,可任意扩大或减小各种特征的尺寸。另外,为了清楚起见,可简化图式中所说明的实施方案。因此,图式可能并未说明给定设备或装置的全部组件。最后,可贯穿说明书及图式使用相同参考标号来表示相同特征。
具体实施方式
本文所揭示的方面大体上涉及指令的结果的扇出,且更确切地说,涉及显式数据图形执行(EDGE)指令集架构的指令的结果的扇出。
在EDGE指令集架构中,计算机程序中的指令可被分配到还可称为块的群组。EDGE指令集架构可经配置以通过根据基于块的微架构配置的乱序(OOO)计算机处理单元操作。在基于块的微架构中,计算机处理单元的计算机处理器核心可经配置以执行作为单元的指令块。EDGE指令集架构可为基于块的指令集架构的实例。
基于块的计算机处理器核心可包含多个执行单元。响应于指令所需的所有操作数已通过执行单元接收,可通过所述执行单元执行指令块的指令。在可通过第二执行单元执行第二指令之前可通过第一执行单元执行第一指令是可能的,即使第一指令在程序次序中的位置晚于第二指令。
然而,一般来说,基于块的计算机处理单元可经配置,使得在第一指令块在程序次序中的位置早于第二指令块的情况下,在第二指令块的指令开始执行之前第一指令块的指令开始执行。
指令块中的指令数可处于一至最大数目(包含地)的范围内。可相对于计算机处理器核心的微架构界定最大数目。举例来说,最大数目可等于计算机处理器核心的保留站的阵列中的保留站数目。举例来说,但非限制性地,如果计算机处理器核心的保留站的阵列具有32个保留站,那么指令块中的指令数目可限制于最大数目32。
一般来说,编译器可经配置以根据指令的程序次序将指令分配到指令块。然而,编译器还可经配置以识别或预测指令之间的依赖性并且优选地将指令分配到指令块,使得相依指令被分配到相同指令块。
指令块可包含块标头。块标头可至少用于识别一个指令块的指令及区分此指令块与其它指令块。在一个方面中,块标头可包含用于识别指令块中的多个指令的信息。
通常,计算机程序可包含源代码中的指令序列,其中第一指令(即,原因指令)经配置以确定条件的有效性,并且第二指令(即,有效指令)经配置以基于原因指令(例如,分支指令(例如,如果X正确,那么Y))的结果执行。此外,有时可存在配置的有效指令的两个集合,使得有效指令的第一集合(即,有效条件指令)经配置以在原因指令的结果指示条件有效的情况下执行,并且有效指令的第二集合(即,无效条件指令)经配置以在原因指令的结果指示条件无效的情况下执行(例如,如果X正确,那么Y,否则Z)。
然而,在基于块的计算机处理器核心中,可在执行原因指令之前(即,在已确定条件的有效性之前)执行至少一个有效指令。
因为原因指令及有效指令两者可被分配到相同指令块,所以可配置基于块的计算机处理器核心,使得给定指令块的指令的结果是推测性结果,直到基于块的计算机处理器核心确定哪些推测性结果是可靠结果。推测性结果可存储在缓冲存储器中。使基于块的计算机处理器核心确定给定指令块的哪些推测性结果是可靠结果的过程可称为使指令块提交可靠结果。
举例来说,如果在执行原因指令之前(即,在已确定条件的有效性之前)执行有效条件指令、无效条件指令或两者中的至少一者,这些有效指令的推测性结果可存储在缓冲存储器中。在原因指令执行以确定条件的有效性之后,基于块的计算机处理器核心可确定哪些推测性结果是可靠结果。举例来说,如果原因指令的结果指示条件有效,那么基于块的计算机处理器核心可提交有效条件指令的结果;如果原因指令的结果指示条件无效,那么基于块的计算机处理器核心可提交无效条件指令的结果。
在一个方面中,基于块的计算机处理器核心可经配置以响应于指令块的指令的执行处于特定状态而使指令块提交。在一个方面中,指令块可响应于以下各项中的至少一者的完成而提交:(1)指令块中将信息写入架构寄存器的指令;(2)指令块中将信息存储在存储器中的指令,或(3)指令块中分叉到另一指令块的指令。在一个方面中,块标头可包含用于识别哪个架构寄存器是指令块的写入指令的目标的信息。在一个方面中,块标头可包含用于识别指令块中的哪些指令将信息存储在存储器中的信息。在一个方面中,块标头可包含用于根据程序次序识别指令块中将信息存储在存储器中的指令的次序的信息。
如上所述,可配置基于块的计算机处理器核心,使得在执行原因指令之前执行至少一个有效指令。另外,可配置基于块的架构,使得原因指令的结果可为有效指令的操作数。换句话说,原因指令可为生产指令并且有效指令可为消费指令。在这种情况下,此操作数可称为谓词。因为可配置基于块的架构,使得直到指令所需的所有操作数已通过执行单元接收才通过执行单元执行指令,所以使原因指令的结果作为有效指令的操作数可有利地防止基于块的计算机处理器核心不必要地执行有效指令。防止基于块的计算机处理器核心不必要地执行有效指令可有利地减少基于块的计算机处理器核心所消耗的电量。
举例来说,可配置基于块的架构,使得如果原因指令的结果指示条件有效,那么此结果可为有效条件指令的谓词操作数,使得有效条件指令的执行单元可经配置以执行有效条件指令;然而,此结果将不是无效条件指令的谓词操作数,使得可防止无效条件指令的执行单元不必要地执行无效条件指令。同样,举例来说,如果原因指令的结果指示条件无效,那么此结果可为无效条件指令的谓词操作数,使得无效条件指令的执行单元可经配置以执行有效条件指令;然而,此结果将不是有效条件指令的谓词操作数,使得可防止有效条件指令的执行单元不必要地执行有效条件指令。
如上所述,原因指令及有效指令两者可被分配到相同指令块。另外,原因指令及有效指令中的至少一者可被分配到不同指令块。因为原因指令及有效指令中的至少一者可被分配到不同指令块,所以基于块的计算机处理器核心可经配置以包含块预测器。块预测器可经配置以预测计算机程序中包含的指令块之中的哪个指令块包含可能基于当前指令块中包含的原因指令的结果而执行的有效指令中的至少一者。在一个方面中,块预测器可使用当前指令块的块标头中的信息来预测计算机程序中包含的指令块之中的哪个指令块包含可能基于当前指令块中包含的原因指令的结果而执行的有效指令中的至少一者。在一个方面中,可在已提取当前指令块的块标头之后,但在当前指令块的指令开始执行之前作出此预测。在一个方面中,由于此预测,在当前指令块的指令开始执行之后,但在当前指令块的指令完成执行之前,可提取指令块的块标头,所述指令块包含可能基于原因指令的结果而执行的有效指令中的所预测至少一者。在一个方面中,由于此预测,在当前指令块的指令开始执行之后,但在当前指令块的指令完成执行之前,包含可能基于原因指令的结果而执行的有效指令中的所预测至少一者的指令块的指令可开始执行。
在一个方面中,块预测器可经配置以通过与常规OOO计算机处理单元中的分支预测器类似的方式预测执行路径。在一个方面中,基于块的计算机处理单元的编译器可经配置以执行数据流测试指令以将分支化指令转换成谓词的有向非循环图(DAG)。在一个方面中,块预测器可经配置以将预测存储在预测表中并且跨越基于块的计算机处理器核心分配这些预测表的至少部分。在一个方面中,块预测器可经配置以产生关于预测的可信度的信息。在一个方面中,块预测器可经配置以在基于通过谓词确定的执行路径、先前执行的指令块的历史或两者而执行当前指令块之后预测待执行的下一指令块。
图1是说明其中可操作基于块的计算机处理单元102的系统100的实例的框图。系统100可包含(举例来说,但非限制性地)至少一个基于块的计算机处理单元102、系统总线104、至少一个存储器系统106、至少一个网络接口模块108、至少一个输入模块110及至少一个输出模块112。
至少一个基于块的计算机处理单元102可包含至少一个基于块的计算机处理器核心114、二级(L2)缓存116,及任选地,核心互连网络118。举例来说,但非限制性地,图1中说明八个基于块的计算机处理器核心114-a、114-b、114-c、114-d、114-e、114-f、114-g及114-h。至少一个基于块的计算机处理器核心114可经配置以接入二级缓存116以接收待执行的至少一个指令块,存储至少一个指令块的执行的结果或两者。
在其中基于块的计算机处理单元102包含多个基于块的计算机处理器核心114的方面中,核心互连网络118可用于促进基于块的计算机处理器核心114之间的通信。举例来说,基于块的计算机处理单元102可经配置以经由核心互连网络118使至少一个基于块的计算机处理器核心114经配置以独立地操作,经配置以结合至少一个基于块的计算机处理器核心114中的至少另一者操作,或前述内容的组合。当基于块的计算机处理单元102经配置以使至少一个基于块的计算机处理器核心114结合至少一个基于块的计算机处理器核心114中的至少另一者操作时,此配置可称为核心合成或核心融合。
举例来说,为了以并行方式在例如可通过图形处理单元(GPU)或数字信号处理器(DSP)完成的多线程部分上执行应用程序,基于块的计算机处理单元102可配置一个基于块的计算机处理器核心114以在多线程部分中的一者上独立地操作及至少另一个基于块的计算机处理器核心114以在多线程部分中的至少另一者上操作。举例来说,为了在例如可通过中央处理单元(CPU)完成的单一线程上有效地执行应用程序,基于块的计算机处理单元102可配置一个基于块的计算机处理器核心114以结合至少另一个基于块的计算机处理器核心114操作。举例来说,但非限制性地,图1说明一种配置,其中:(1)基于块的计算机处理器核心114-a、114-b、114-e及114-f中的每一者经配置以与计算机处理器核心114-a、114-b、114-e及114-f彼此结合操作作为第一核心合成120;(2)基于块的计算机处理器核心114-c经配置以结合基于块的计算机处理器核心114-d操作作为第二核心合成122;(3)基于块的计算机处理器核心114-g经配置以独立地操作;及(4)基于块的计算机处理器核心114-h经配置以独立地操作。第一核心合成120可经配置以执行第一应用程序。第二核心合成122可经配置以执行第二应用程序。基于块的计算机处理器核心114-g可经配置以执行第三应用程序的第一线程,并且基于块的计算机处理器核心114-h可经配置以执行第三应用程序的第三线程。或者,基于块的计算机处理器核心114-g可经配置以执行第三应用程序,并且基于块的计算机处理器核心114-h可经配置以执行第四应用程序。
至少一个基于块的计算机处理单元102可耦合到系统总线104,并且经由系统总线104通过交换地址、控制及数据信息与系统100的其它装置通信。
至少一个存储器系统106可包含至少一个存储器控制器124及至少一个存储器单元126。存储器系统106可耦合到系统总线104。至少一个存储器单元126可包含(举例来说,但非限制性地)随机存取存储器(RAM)单元。
至少一个网络接口模块108可包含经配置以促进至及从网络128的数据的交换的硬件、软件或两者的组合。至少一个网络接口模块108可经配置支持至少一个通信协议。至少一个网络接口模块108可耦合到系统总线104。网络128可为任何类型的网络,包含但不限于,有线或无线网络、公共或专用网络、个域网(PAN)、局域网(LAN)、广局域网(WLAN)、及因特网。
至少一个输入模块110可包含(举例来说,但非限制性地)用户接口、图形用户接口、键盘、指向装置(例如,鼠标)、触控板、触摸屏、开关、按钮、语音处理器、其类似者,或前述内容的任何组合。至少一个输入模块110可耦合到系统总线104。
至少一个输出模块112可包含(举例来说,但非限制性地)打印机、显示器、音频输出装置、图形输出装置、视频输出装置、另一视觉指示器、其类似者,或前述内容的任何组合。至少一个输出模块112可耦合到系统总线104。在一个方面中,至少一个输出模块112可包含至少一个显示器130。至少一个显示器130可包含但不限于,阴极射线管、液晶显示器、等离子显示器、发光二极管显示器、有机发光二极管显示器、其类似者,或前述内容的任何组合。系统100可进一步包含经配置以经由系统总线104从至少一个基于块的计算机处理单元102接收控制信息的至少一个显示控制器132。至少一个显示控制器132可经配置以经由至少一个视频处理器134将信息发送到至少一个显示器130。至少一个视频处理器134可经配置以从至少一个显示控制器132接收信息,处理信息使得所述信息具有与至少一个显示器130兼容的形式,及将经处理信息发送到至少一个显示器130。
系统100可并入(举例来说,但非限制性地)到机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝电话、智能手机、计算机、桌上型计算机、便携式计算机、膝上型计算机、平板计算机、个人数字助理(PDA)、监视器、计算机监视器电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、视频播放器、数字视频播放器、便携式数字视频播放器、数字视频光盘(DVD)播放器、其类似者,或前述内容的任何组合中。
图2是说明基于块的计算机处理器核心114的实例的框图。基于块的计算机处理器核心114可经配置以耦合到二级缓存116。基于块的计算机处理器核心114可经配置以接入二级缓存116以接收待执行的至少一个指令块,存储至少一个指令块的执行的结果或两者。任选地,基于块的计算机处理器核心114可经配置以耦合到核心互连网络118。在其中基于块的计算机处理单元102包含多个基于块的计算机处理器核心114的方面中,核心互连网络118可用于促进基于块的计算机处理器核心114之间的通信。
基于块的计算机处理器核心114可包含若干已知数字逻辑元件、半导体电路、处理核心、其它元件、其类似者,或其任何组合中的任一者。本文中所描述的各方面并不限于任何特定元件布置,且所揭示技术可在半导体裸片或封装上以不同结构或布局实现。
基于块的计算机处理器核心114可包含(举例来说,但非限制性地)一级(L1)指令缓存202、块预测器204、块定序器206、至少一个指令解码级208、指令处理电路210、至少一个执行单元212、加载/存储单元214、一级(L1)数据缓存216,及物理寄存器组218。举例来说,但非限制性地,指令处理电路210可包含指令缓冲器220及指令调度器222。在其中基于块的计算机处理单元102包含多个基于块的计算机处理器核心114的方面中,基于块的计算机处理器核心114可包含核心合成接口224。举例来说,但非限制性地,核心合成接口224可包含在物理寄存器组218中。
L1指令缓存202可经配置以从L2缓存116接收指令块226。L1指令缓存202可经配置以将信息传输到L2缓存116。L1指令缓存202可经配置以存储指令块226。L1指令缓存202可经配置以将关于指令块226的信息传输到块定序器206。L1指令缓存202可经配置以将指令块226传输到至少一个指令解码级208。举例来说,L1指令缓存202可经配置以从L2缓存116接收指令块226-a至226-N。
块预测器204可经配置以在执行当前指令块226之后预测待执行的下一指令块226。在一个方面中,块预测器204可经配置以通过与常规OOO计算机处理单元中的分支预测器类似的方式预测执行路径。在一个方面中,块预测器204可经配置以在基于由通过执行数据流测试指令以将分支化指令转换成有向非循环图(DAG)所产生的谓词确定的执行路径、先前执行的指令块226的历史或两者而执行当前指令块226之后预测待执行的下一指令块226。块预测器204可经配置以从块定序器206接收关于指令块226的信息。块预测器204可经配置以将关于预测的信息传输到块定序器206。
块定序器206可经配置以从L1指令缓存202接收关于指令块226的信息及从块预测器204接收关于预测的信息。块定序器206可经配置以确定指令块226的次序。在其中基于块的计算机处理单元102包含多个基于块的计算机处理器核心114的方面中,块定序器206可经配置以与核心合成接口224交换信息。
至少一个指令解码级208可经配置以从L1指令缓存202接收指令块226。至少一个指令解码级208可经配置以对指令块226中的指令进行解码。举例来说,至少一个指令解码级208可经配置以对指令块226-a至226-N中的指令进行解码。至少一个指令解码级208可经配置以将指令块226中的指令传输到指令处理电路210。
指令处理电路210的指令缓冲器220可经配置以从至少一个解码级208接收指令块226。指令缓冲器220可经配置以在预期执行指令块226中的指令时存储所述指令。
指令处理电路210的指令调度器222可经配置以将已开始执行指令的过程的指令块226中的指令传输到至少一个执行单元212。可同时由单个基于块的计算机处理器核心114执行的指令块226的数目可处于(包含地)一至最大数目的范围内。可相对于计算机处理器核心114的微架构界定最大数目。举例来说,可同时执行的指令块226的最大数目可等于计算机处理器核心114的保留站402的阵列(参看图4)的数目。举例来说,但非限制性地,如果计算机处理器核心114具有四个保留站阵列,那么可同时执行的指令块226的最大数目可限制于四个指令块226。举例来说,但非限制性地,如果可同时执行的指令块226的最大数目限制于四个指令块,那么可同时执行指令块226-a、226-b、226-c(未说明)及226-d(未说明)。
至少一个执行单元212的执行单元212可经配置以从指令调度器222接收指令。执行单元212可经配置以从以下各项中的至少一者接收操作数:(1)经由指令调度器222的另一指令的结果,(2)物理寄存器组218中的寄存器,或(3)经由加载/存储单元214的至少一个存储器单元126。执行单元212可经配置以响应于指令所需的所有操作数已通过执行单元212接收而执行从指令调度器222接收的指令。执行单元212可经配置以将指令的结果传输到以下各项中的至少一者:(1)经由指令调度器222的另一指令,(2)物理寄存器组218中的寄存器,或(3)经由加载/存储单元214的至少一个存储器单元126。举例来说,但非限制性地,执行单元212可包含算术逻辑单元(ALU)或浮点单元(FPU)中的至少一者。
加载/存储单元214可经配置以从至少一个执行单元212接收数据。加载/存储单元214可经配置以经由L2缓存116及L1数据缓存216从至少一个存储器单元126接收数据。加载/存储单元214可经配置以将数据传输到至少一个执行单元212。加载/存储单元214可经配置以经由L1数据缓存216及L2缓存116将数据传输到至少一个存储器单元126。
L1数据缓存216可经配置以从加载/存储单元214接收数据。L1数据缓存216可经配置以从L2缓存116接收数据。L1数据缓存216可经配置以存储数据。L1数据缓存216可经配置以将数据传输到加载/存储单元214。L1数据缓存216可经配置以将数据传输到L2缓存116。
物理寄存器组218可经配置以从至少一个执行单元212接收数据。物理寄存器组218可经配置以存储数据。物理寄存器组218可经配置以将数据传输到至少一个执行单元212。举例来说,但非限制性地,物理寄存器组218可包含随机存取存储器(RAM)单元,例如,可具有至少一个专用读取端口及至少一个专用写入端口的快速静态RAM。
在其中基于块的计算机处理单元102包含多个基于块的计算机处理器核心114的方面中,核心合成接口224可经配置以与块定序器交换信息并且与核心互连网络118交换信息以促进基于块的计算机处理器核心114之间的通信。
如上所述,生产指令的结果可为消费指令的操作数,并且生产指令可经配置以包含保留站的阵列中用于消费指令的操作数的记录位置的标识作为生产指令的结果的目标的标识。然而,单个生产指令的结果通常可为多个消费指令的操作数。这可称为生产指令的结果的扇出。因此,可需要经配置以识别生产指令的结果的多于一个目标的基于块的微架构。
在用于解决此需求的一个方法中,生产指令可经配置以包含保留站的阵列中用于多于一个消费指令的操作数的保留站位置的标识作为生产指令的结果的多于一个目标的标识。然而,此方法可消耗大量区域来获得存储生产指令的结果的多于一个目标的标识所需的额外存储器单元。此外,此方法可仅提供受限程度的改进。举例来说,在生产指令的结果是多于两个消费指令的操作数的情况下,其中每个记录包含足以存储生产指令的结果的两个目标的标识的多个存储器单元的保留站阵列可仅提供受限程度的改进。
此问题可通过提供以下项解决:(1)存储器单元的具体集合,使得存储器单元的所述具体集合的位置的标识可在生产指令中识别为生产指令的结果的目标;及(2)在指令的每一者中指定用于存储信息的位的集合,使得信息在指令中的任一者中的存在可使对应执行单元接收存储器单元的具体集合的内容作为所述指令的操作数。以此方式,生产指令的结果可存储在存储器单元的具体集合中,并且每个消费指令可经配置以包含信息以使对应执行单元接收存储器单元的所述具体集合的内容作为所述指令的操作数。
图3是说明用于扇出指令的结果的设备300的实例的框图。设备300可包含存储器单元及第一电路302。存储器单元可包含第一集合304、第二集合306、第三集合308及第四集合310。第一集合304可经配置以存储第一指令的结果。第一指令可为生产指令。第二集合306可经配置以存储第二指令的操作代码(即,操作码)。第二指令可为消费指令。第三集合308可经配置以存储第二指令的信息。第四集合310可经配置以存储第二指令的操作数。第一电路302可经配置以将第四集合310连接到执行单元312并且经配置以响应于第三集合308中存在所述信息而使执行单元312经配置以接收第一集合304的内容作为第二指令的操作数。执行单元312可为至少一个执行单元212中的一者(参看图2)。
举例来说,第一电路302可经配置以确定第三集合308中存在所述信息,及响应于所述确定而选择第二指令的操作数的源。举例来说,可配置第一电路302,使得第四集合310可为第一指令的结果的目标的第一候选者。举例来说,可配置第一电路302,使得第一集合304可为第一指令的结果的目标的第二候选者。举例来说,第一电路302可经配置以响应于第三集合308中存在所述信息而选择第一集合304的内容作为第二指令的操作数的源。
第一集合304、第二集合306、第三集合308及第四集合310可不相交。第二指令的格式可包含指定用于操作代码的位的集合及指定用于信息的位的集合。举例来说,指定用于信息的位的集合可为单个位。信息可为位的值。
在一个方面中,第二集合306的每个存储器单元可包含随机存取存储器单元。第三集合308的每个存储器单元可包含触发器。存储于第三集合308中的信息可由单个位或若干数目个位表示。有利的是,触发器可比常规随机存取存储器单元更块地改变状态。
在一个方面中,第一电路302可包含至少一个开关314。举例来说,可配置至少一个开关314,使得执行单元312可经配置以接收第四集合310的内容,而不管至少一个开关314的位置,但经配置以仅当至少一个开关314的位置闭合时才接收第一集合304的内容。编译器可经配置以通过某种方式重组源程序,使得响应于第三集合308中存在所述信息,生产指令的结果不存储在第四集合310中。至少一个开关314可包含中继器、微机电开关、半导体装置、晶体管、多路复用器、导通门、其类似者,或前述内容的任何组合。
图4是说明设备300的环境400的实例的框图。环境400可包含保留站402的阵列的集合。举例来说,保留站402的阵列的集合可包含在指令调度器222(参看图2)中。保留站402的阵列的集合可包含至少一个阵列404。举例来说,但非限制性地,图4中说明阵列404-a、404-b、404-c及404-d。每个阵列404可包含至少一个保留站记录406。举例来说,在图4中的阵列404-a中说明N个记录406-a、406-b、……、406-N。举例来说,但非限制性地,N可为32。每个记录406可包含第二集合306、第三集合308及第四集合310。每个记录406可具有对应第一电路302。举例来说,如图4中所说明,记录406-a可具有对应第一电路302-a,记录406-b可具有对应第一电路302-b,并且记录406-n可具有对应第一电路302-N。
每个第一电路302可具有对应执行单元312。举例来说,如图4中所说明,第一电路302-a可具有对应执行单元312-a,第一电路302-b可具有对应执行单元312-b,并且第一电路302-N可具有对应执行单元312-N。或者,代替使每个第一电路302具有对应执行单元312,另一电路(未说明)可耦合在每个第一电路302与较少数目的执行单元312之间。另一电路可为优先级编码器或仲裁器。另一电路可经配置以协调将已接收指令所需的所有操作数的每个指令路由到较少数目的执行单元312中的一者。较少数目的执行单元312可为只有两个执行单元312。较少数目的执行单元312可为只有一个执行单元312。或者,使用较少数目的执行单元312可允许另外消耗用于获得大量执行单元312的区域可用于另一电路。
保留站402的阵列的集合可不包括第一集合304。在一个方面中,第一集合304可配置为寄存器。举例来说,寄存器可包含在物理寄存器组218(参看图2)中。然而,第一集合304的函数可不同于物理寄存器组218中的常规寄存器的函数。在一个方面中,第一集合304可配置为基于块的计算机处理器核心114(参看图1及2)中的随机存取存储器,其中配置第一电路(例如,第一电路302-a、302-b、……、302-N),使得存储在第一集合304中的数据可由对应于阵列(例如,阵列404-a)的任何执行单元(例如,执行单元312-a、312-b、……、312-N中的任一者)访问,而不要求数据穿过第一集合304与任何执行单元(例如,执行单元312-a、312-b、……、312-N中的任一者)之间的缓存(例如,L2缓存116)。
举例来说,记录406-a可经配置以存储第一指令,并且记录406-b可经配置以存储第二指令。第一指令可为生产指令。第一指令的结果可存储在第一集合304中。第二指令可为消费指令。响应于第二指令的第三集合308中存在所述信息,第一电路302-b可使执行单元312-b经配置以接收第一集合304的内容作为第二指令的操作数。另外,另一指令可为消费指令(例如,存储在记录406-N中的N指令)。响应于另一指令(例如,N指令)的第三集合中存在所述信息,对应第一电路(例如,第一电路302-N)可使对应执行单元(例如,执行单元312-N)经配置以接收第一集合304的内容作为另一指令(例如,N指令)的操作数。以此方式,第一指令的结果可为第二指令及另一指令(例如,N指令)的操作数。换句话说,以此方式,可实现第一指令的结果的扇出。
图5是说明设备300的变化的实例的框图。在一个方面中,第一集合304可包含第一子集502及第二子集504。第四集合310可包含第三子集506及第四子集508。第三子集506可经配置以存储第二指令的第一操作数。第四子集508可经配置以存储第二指令的第二操作数。第一电路302可经配置以响应于第三集合308中存在所述信息而使执行单元312经配置以接收第一子集502的内容作为第二指令的第一操作数。第一电路302可经配置以响应于第三集合308中存在所述信息而使执行单元312经配置以接收第二子集504的内容作为第二指令的第二操作数。
举例来说,至少一个开关314可包含第一开关510及第二开关512。举例来说,可配置第一开关510,使得执行单元312可经配置以接收第三子集506的内容,而不管第一开关510的位置,但经配置以仅当第一开关510的位置闭合时才接收第一子集502的内容。举例来说,可配置第二开关512,使得执行单元312可经配置以接收第四子集508的内容,而不管第二开关512的位置,但经配置以仅当第二开关512的位置闭合时才接收第二子集504的内容。编译器可经配置以通过某种方式重组源程序,使得响应于第三集合308中存在所述信息,生产指令的结果不存储在第三子集506、第四子集508或两者中。
图6是说明设备300的另一变化的实例的框图。在一个方面中,第三集合308可包含第五子集602及第六子集604。第五子集602可经配置以存储第二指令的第一信息。第六子集604可经配置以存储第二指令的第二信息。第一电路302可经配置以响应于第五子集602中存在第一信息而使执行单元312经配置以接收第一子集502的内容作为第二指令的第一操作数。第一电路302可经配置以响应于第六子集604中存在第二信息而使执行单元312经配置以接收第二子集504的内容作为第二指令的第二操作数。以此方式,第一开关510及第二开关512可独立于彼此操作。
或者,第一开关510、第二开关512或两者可经配置以具有两个触点。举例来说,第一开关510可具有第一触点(未说明)及第二触点。第一触点可经配置以将执行单元312连接到第三子集506。第二触点可经配置以将执行单元312连接到第一子集502。举例来说,第二开关512可具有第一触点(未说明)及第二触点。第一触点可经配置以将执行单元312连接到第四子集508。第二触点可经配置以将执行单元312连接到第二子集504。
图7是说明设备300的另一变化的实例的框图。在一个方面中,存储器单元可进一步包含经配置以存储第二指令的谓词操作数的第五集合702。指令的格式可进一步包含指定用于谓词操作数的位的集合。第一集合304可包含第一子集704及第二子集706。第一电路302可经配置以响应于第三集合308中存在所述信息而使执行单元312经配置以接收第一子集704的内容作为第二指令的操作数。第一电路302可经配置以响应于第三集合308中存在所述信息而使第五集合702经配置以接收第二子集706的内容作为第二指令的谓词操作数。举例来说,第一电路302可经配置以响应于第三集合308中存在所述信息而选择第二子集706的内容作为第二指令的谓词操作数的源。
举例来说,至少一个开关314可包含第一开关708及第二开关710。举例来说,可配置第一开关708,使得执行单元312可经配置以接收第四集合310的内容,而不管第一开关708的位置,但经配置以仅当第一开关708的位置闭合时才接收第一子集704的内容。
图8是说明设备300的另一变化的实例的框图。在一个方面中,第三集合308可包含第三子集802及第四子集804。第三子集802可经配置以存储第二指令的第一信息。第四子集804可经配置以存储第二指令的第二信息。第一电路302可经配置以响应于第三子集802中存在第一信息而使执行单元312经配置以接收第一子集704的内容作为第二指令的操作数。第一电路302可经配置以响应于第四子集804中存在第二信息而使第五集合702经配置以接收第二子集706的内容作为第二指令的谓词操作数。举例来说,第一电路302可经配置以响应于第三集合308中存在所述信息而选择第二子集706的内容作为第二指令的谓词操作数的源。以此方式,第一开关708及第二开关710可独立于彼此操作。
或者,第一开关708可经配置以具有两个触点。举例来说,第一开关708可具有第一触点(未说明)及第二触点。第一触点可经配置以将执行单元312连接到第四集合310。第二触点可经配置以将执行单元312连接到第一子集704。
图9是说明设备300的另一变化的实例的框图。在一个方面中,存储器单元可进一步包含经配置以存储第一指令(或另一指令)的结果的第五集合902。信息可经配置以具有第一值或第二值。或者,信息可包含第一信息或第二信息。第一电路302可经配置以响应于第三集合308中存在具有第一值的信息而使执行单元312经配置以接收第一集合304的内容作为第二指令的操作数。举例来说,第一电路302可经配置以响应于第三集合308中存在第一信息而选择第一集合304的内容作为第二指令的操作数的源。第一电路302可经配置以响应于第三集合308中存在具有第二值的信息而使执行单元312经配置以接收第五集合902的内容作为第二指令的操作数。举例来说,第一电路302可经配置以响应于第三集合308中存在第二信息而选择第五集合902的内容作为第二指令的操作数的源。
举例来说,至少一个开关314可包含第一开关904及第二开关906。举例来说,可配置第一开关904,使得执行单元312可经配置以接收第四集合310的内容,而不管第一开关904的位置,但经配置以仅当第一开关904的位置闭合时才接收第一集合304的内容。可配置第二开关906,使得执行单元312可经配置以接收第四集合310的内容,而不管第二开关906的位置,但经配置以仅当第二开关904的位置闭合时才接收第五集合902的内容。
或者,第一开关904、第二开关906或两者可经配置以具有两个触点。举例来说,第一开关904可具有第一触点(未说明)及第二触点。第一触点可经配置以将执行单元312连接到第四集合310。第二触点可经配置以将执行单元312连接到第一集合304。举例来说,第二开关906可具有第一触点(未说明)及第二触点。第一触点可经配置以将执行单元312连接到第四集合310。第二触点可经配置以将执行单元312连接到第五集合902。
或者,至少一个开关314可包含经配置以具有两个触点的一个开关(未说明)。举例来说,一个开关可具有第一触点(未说明)及第二触点(未说明)。一个开关可经配置以响应于第三集合308中存在具有第一值的信息而闭合到第一触点,以将执行单元312连接到第一集合304。一个开关可经配置以响应于第三集合308中存在具有第二值的信息而闭合到第二触点,以将执行单元312连接到第五集合902。
指定用于第二指令的信息的位的集合可经配置以表示二进制数。举例来说,二进制数00可指示第三集合308中不存在所述信息,使得执行单元312可经配置以接收第四集合310的内容作为第二指令的操作数。举例来说,二进制数01可为第一值,使得执行单元312可经配置以接收第一集合304的内容作为第二指令的操作数。举例来说,二进制数10可为第二值,使得执行单元312可经配置以接收第五集合902的内容作为第二指令的操作数。如果配置设备,使得存储器单元包含经配置以存储第一指令的结果的第六集合(未说明),那么二进制数11可用作某一值,使得执行单元312可经配置以接收第六集合(未说明)的内容作为第二指令的操作数。有利的是,如果指定用于第二指令的信息的位的集合经配置以表示二进制数,那么可用两个位表示三个不同集合。
或者,指定用于第二指令的信息的位的集合可配置为位图。(参看图6)。举例来说,存储在第五子集602中的位的集合可对应于第一子集502,并且存储在第六子集604中的位的集合可对应于第二子集504。举例来说,位图中的00(0存储在第五子集602中及0存储在第六子集604中)可指示第三集合308中不存在所述信息,使得执行单元312可经配置以接收第四集合310的内容(第三子集506及第四子集508)作为第二指令的操作数。举例来说,位图中的01(1存储在第五子集602中及0存储在第六子集604中)可使执行单元312经配置以接收第一子集502的内容作为第二指令的第一操作数。举例来说,位图中的10(0存储在第五子集602中及1存储在第六子集604中)可使执行单元312经配置以接收第二子集504的内容作为第二指令的第二操作数。举例来说,位图中的11(1存储在第五子集602中及1存储在第六子集604中)可使执行单元312经配置以接收第一子集502的内容作为第二指令的第一操作数及接收第二子集504的内容作为第二指令的第二操作数。有利的是,如果指定用于第二指令的信息的位的集合经配置为位图,使得位的集合中的每个位置对应于经配置以存储第一指令(或另一指令)的结果的子集,那么两个位可用于使执行单元312经配置以接收两个子集的内容。
图10是说明设备300的另一变化的实例的框图。在一个方面中,设备300可进一步包含第二电路1002。第二电路1002可经配置以防止执行单元312经配置以接收第一集合304的内容,直到在第一指令的结果已存储在第一集合304中之后。在一个方面中,第二电路1002可包含至少一个开关1004。至少一个开关1004可包含中继器、微机电开关、半导体装置、晶体管、多路复用器、导通门、其类似者,或前述内容的任何组合。举例来说,因为在计算机处理器核心114开始执行当前指令块之前,第一集合304可具有存储在其中的值,所以至少一个开关1004可经配置以打开,直到在第一指令的结果已存储在第一集合304中之后。以此方式,在第一指令的结果已存储在第一集合304中之前,可防止执行单元312错误地接收存储在第一集合304中的值。至少一个开关1004可经配置以响应于第一指令的结果已存储在第一集合304中而闭合。
图11是说明设备300的另一变化的框图。在一个方面中,存储器单元可进一步包含经配置以存储第一指令(或另一指令)的结果的第五集合902。第二电路1002可进一步经配置以防止执行单元312经配置以接收第五集合902的内容,直到在第一指令(或另一指令)的结果已存储在第五集合902中之后。举例来说,至少一个开关1004可包含第一开关1102及第二开关1104。举例来说,第一开关1102可经配置以防止执行单元312经配置以接收第一集合304的内容,直到在第一指令的结果已存储在第一集合304中之后。举例来说,第二开关1104可经配置以防止执行单元312经配置以接收第五集合902的内容,直到在第一指令(或另一指令)的结果已存储在第五集合902中之后。
图12是说明设备300的另一变化的框图。在一个方面中,第一集合304可包含第一子集502及第二子集504。第二电路1002可经配置以防止执行单元312经配置以接收第一集合304的内容,直到在第一指令的结果已存储在第一子集502、第二子集504或两者中之后。举例来说,至少一个开关1004可包含第一开关1202及第二开关1204。举例来说,第一开关1202及第二开关1204可经配置以防止执行单元312经配置以接收第一集合304的内容,直到第一指令的结果已存储在第一子集502、第二子集504或两者中之后。举例来说,响应于第一指令的结果已存储在第一子集502、第二子集504或两者中,可闭合第一开关1202及第二开关1204两者。
图13是说明设备300的另一变化的框图。在一个方面中,第一集合304可包含第一子集502及第二子集504。第二电路1002可经配置以防止执行单元312经配置以接收第一子集502的内容,直到在第一指令的结果已存储在第一子集502中之后。第二电路1002可经配置以防止执行单元312经配置以接收第二子集504的内容,直到在第一指令的结果已存储在第二子集504中之后。举例来说,至少一个开关1004可包含第一开关1202及第二开关1204。举例来说,第一开关1202可经配置以防止执行单元312经配置以接收第一子集502的内容,直到在第一指令的结果已存储在第一子集502中之后。举例来说,第二开关1204可经配置以防止执行单元312经配置以接收第二子集504的内容,直到在第一指令的结果已存储在第二子集504中之后。以此方式,第一开关1202及第二开关1204可独立于彼此操作。
图14是说明设备300的另一变化的框图。在一个方面中,第一集合304可包含第一子集704及第二子集706。存储器单元可进一步包含经配置以存储第二指令的谓词操作数的第五集合702。第二指令的格式可进一步包含指定用于谓词操作数的位的集合。第二电路1002可经配置以防止执行单元312及第五集合702经配置以接收第一集合304的内容,直到在第一指令的结果已存储在第一子集704、第二子集706或两者中之后。举例来说,至少一个开关1004可包含第一开关1402及第二开关1404。举例来说,第一开关1402及第二开关1404可经配置以防止执行单元312及第五集合702经配置以接收第一集合304的内容,直到在第一指令的结果已存储在第一子集704、第二子集706或两者中之后。举例来说,响应于第一指令的结果已存储在第一子集704、第二子集706或两者中,可闭合第一开关1402及第二开关1404两者。
图15是说明设备300的另一变化的框图。在一个方面中,第一集合304可包含第一子集704及第二子集706。存储器单元可进一步包含经配置以存储第二指令的谓词操作数的第五集合702。第二指令的格式可进一步包含指定用于谓词操作数的位的集合。第二电路1002可经配置以防止执行单元312经配置以接收第一子集704的内容,直到在第一指令的结果已存储在第一子集704中之后。第二电路1002可经配置以防止第五集合702经配置以接收第二子集706的内容,直到在第一指令的结果已存储在第二子集706中之后。举例来说,至少一个开关1004可包含第一开关1402及第二开关1404。举例来说,第一开关1402可经配置以防止执行单元312经配置以接收第一子集704的内容,直到在第一指令的结果已存储在第一子集704中之后。举例来说,第二开关1404可经配置以防止第五集合702经配置以接收第二子集706的内容,直到在第一指令的结果已存储在第二子集706中之后。以此方式,第一开关1402及第二开关1404可独立于彼此操作。
本领域技术人员将理解,举例来说在图16中说明可通过上文参考图3至15(例如)描述的方面的不同组合实现的其它方面。图16是说明设备300的另一变化的框图。在一个方面中,存储器单元可进一步包含集合702及集合902。集合902可包含子集1602、子集1604及子集1606。集合304可包含子集502、子集504及子集706。集合310可包含子集506及子集508。至少一个开关314可包含开关510、开关512、开关710、开关906、开关1608及开关1610。至少一个开关1004可包含开关1202、开关1204、开关1404、开关1104、开关1612及开关1614。可配置开关906,使得执行单元312可经配置以接收子集1602的内容。可配置开关1608,使得执行单元312可经配置以接收子集1604的内容。可配置开关1610,使得集合702可经配置以接收子集1606的内容。开关1104可经配置以防止执行单元312经配置以接收子集1602的内容,直到在第一指令(或另一指令)的结果已存储在子集1602中之后。开关1612可经配置以防止执行单元312经配置以接收子集1604的内容,直到在第一指令(或另一指令)的结果已存储在子集1604中之后。开关1614可经配置以防止集合702接收子集1606的内容,直到在第一指令(或另一指令)的结果已存储在子集1606中之后。
图17是说明可通过设备300执行的指令的格式1700的实例的图式。在一个方面中,格式1700可包含位1702的集合、位1704的集合、位1706的集合、位1708的集合、位1710的集合、位1712的集合、位1714的集合、位1716的集合、位1718的集合、位1720的集合、位1722的集合,及位1724的集合。
位1702的集合可指定用于操作代码(即,操作码)。举例来说,位1702的集合可存储在集合306中。位1704的集合可指定用于指令的第一信息。举例来说,位1704的集合可存储在集合308中。举例来说,集合308中存在第一信息可致使第一电路302使执行单元312经配置以接收集合304或集合902的内容。
位1706的集合可指定用于指令的第二信息。举例来说,位1706的集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在第二信息可指示指令需要第一操作数。位1708的集合可指定用于指令的第三信息。举例来说,位1708的集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在第三信息可指示执行单元312已接收第一操作数。位1710的集合可指定用于指令的第四信息。举例来说,位1710的集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在第四信息可指示指令需要第二操作数。位1712的集合可指定用于指令的第五信息。举例来说,位1712的集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在第五信息可指示执行单元312已接收第二操作数。
位1714的集合可指定用于指令的第六信息。举例来说,位1714的集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在第六信息可指示指令需要谓词操作数。位1716的集合可指定用于指令的谓词操作数。举例来说,谓词操作数可存储在集合702中。举例来说,集合702中存在谓词操作数可指示谓词操作数已通过指令接收。位1718的集合可指定用于指令的第七信息。举例来说,位1718的集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在第七信息可指示指令需要谓词操作数具有真值。位1720的集合可指定用于指令的第八信息。举例来说,位1720的集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在第八信息可指示通过指令接收的谓词操作数具有真值。
举例来说,位1718的集合可为“异或非”门1726的第一输入,并且位1720的集合可为“异或非”门1726的第二输入。如果位1718的集合中存在第七信息指示谓词操作数需要具有真值并且位1720的集合中存在第八信息指示通过指令接收的谓词操作数具有真值,那么“异或非”门1726的输出具有真值。如果位1718的集合中不存在第七信息指示谓词操作数需要具有虚值并且位1720的集合中不存在第八信息指示通过指令接收的谓词操作数具有虚值,那么“异或非”门1726的输出具有真值。举例来说,位1716的集合可为“与”门1728的第一输入,“异或非”门1726的输出可为“与”门1728的第二输入,并且“与”门1728的输出可使执行单元312能够经配置以执行指令。集合702中存在谓词操作数指示谓词操作数已通过指令接收并且“异或非”门1726的输出具有真值(指示通过指令接收的谓词操作数的值与指令所需的谓词操作数的值相同),随后“与”门1728的输出具有真值并且可使执行单元312能够经配置以执行指令。
位1722的集合可指定用于指令的结果的第一目标的标识。举例来说,位1722的集合可存储在存储器单元的集合中。位1724的集合可指定用于指令的结果的第二目标的标识。举例来说,位1724的集合可存储在存储器单元的集合中。
举例来说,位1702的集合中的操作代码、位1704的集合中的第一信息(致使第一电路302使执行单元312经配置以接收集合304的内容)、位1706的集合中的第二信息(指示指令需要第一操作数)、位1710的集合中的第四信息(指示指令需要第二操作数)、位1714的集合中的第六信息(指示指令需要谓词操作数)、位1718的集合中的第七信息(指示指令需要谓词操作数具有真值)、位1720的集合中的指令的结果的第一目标的标识,及位1722的集合中的指令的结果的第二目标的标识可在指令块通过指令缓冲器220(参看图2)接收时包含在所述指令中。
举例来说,可将位1708的集合中的第三信息(指示执行单元312已接收第一操作数)、位1712的集合中的第五信息(指示执行单元312已接收第二操作数)、位1716的集合中的谓词操作数、位1720的集合中的第八信息(指示通过指令接收的谓词操作数具有真值)提供给指令,因为在执行指令块的过程中产生这些信息项。
举例来说,如果不存在位1706的集合中的第二信息(指示指令需要第一操作数),这可指示指令不需要第一操作数,那么位1708的集合中的第三信息(指示执行单元312已接收第一操作数)可默认地设定成真值,使得当不需要第一操作数时,在预期接收第一操作数时不延迟指令的执行。举例来说,如果不存在位1710的集合中的第四信息(指示指令需要第二操作数),这可指示指令不需要第二操作数,那么位1712的集合中的第五信息(指示执行单元312已接收第二操作数)可默认地设定成真值,使得当不需要第二操作数时,在预期接收第二操作数时不延迟指令的执行。举例来说,如果不存在位1714的集合中的第六信息(指示指令需要谓词操作数),这可指示指令不需要谓词操作数,那么位1716的所有集合(指示指令已接收谓词操作数)、位1718的的集合中的第七信息(指示指令需要谓词操作数具有真值)及位1720的集合中的第八信息(指示通过指令接收的谓词操作数具有真值)可默认地设定成真值,使得当不需要谓词操作数时,在预期接收谓词操作数时不延迟指令的执行。
图18是说明可通过设备300执行的指令的另一格式1800的实例的图式。在一个方面中,格式1800可包含位1702的集合、位1704的集合、位1706的集合、位1708的集合、位1710的集合、位1712的集合、位1714的集合、位1718的集合、位1722的集合、位1724的集合、位1802的集合,及位1804的集合。位1802的集合可指定用于第九信息。举例来说,位1802的集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在第九信息可指示谓词操作数已通过指令接收并且谓词操作数具有真值。位1804的集合可指定用于第十信息。举例来说,位1804的集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在第十信息可指示谓词操作数已通过指令接收并且谓词操作数具有虚值。
举例来说,谓词操作数可为位1802的集合及反相器1806的输入。反相器1806的输出可为位1804的集合的输入。如果谓词操作数已通过指令接收并且谓词操作数具有真值,那么位1802的集合可具有真值。如果谓词操作数已通过指令接收并且谓词操作数具有虚值,那么位1804的集合可具有真值。举例来说,位1802的集合可为多路复用器1808的第一输入,位1804的集合可为多路复用器1808的第二输入,位1718的集合可为多路复用器1808的选择器输入,并且多路复用器1808的输出可使执行单元312能够经配置以执行指令。如果位1718的集合中存在第七信息指示谓词操作数需要具有真值,那么多路复用器1808可经配置以选择位1802的集合以使执行单元312能够经配置以执行指令。如果位1718的集合中不存在第七信息指示谓词操作数需要具有虚值,那么多路复用器1808可经配置以选择位1804的集合以使执行单元312能够经配置以执行指令。
下文展示用于描述包含图16中所说明的设备300的方面的系统的操作的实例情形。在实例情形中,用于准备纳税申报表的计算机程序可执行指令I0至I7。在指令I0中,已婚夫妇支付的房屋贷款利息($10,000)从至少一个存储器单元126(参看图1)中的存储器单元M1的集合中加载,并且存储在指令I2的子集506中作为第一操作数。在指令I1中,夫妻支付的不动产税($4,000)从至少一个存储器单元126中的存储器单元M2的集合中加载,并且存储在指令I2的子集508中作为第二操作数。在指令I2中,分项扣除(支付的房屋贷款利息加上支付的不动产税)进行计算、存储在指令I4的子集506中作为第一操作数,及存储在指令I6的子集508中作为第二操作数。在指令I3中,标准扣除的值($12,200)从物理寄存器组218(参看图2)中的寄存器R0读取,存储在指令I4的子集508中作为第二操作数,及存储在指令I7的子集508中作为第二操作数。在指令I4中,如果分项扣除大于标准扣除且存储在子集706中以作为谓词操作数扇出,那么谓词操作数设定成真实的。在指令I5中,夫妻的收入($60,000)从至少一个存储器单元126的存储器单元M0的集合中加载并且存储在子集502中以作为谓词操作数扇出。在指令I6中,如果谓词操作数是真值,那么执行可征税收入的第一计算(从收入中减去分项扣除),并且第一计算的结果存储在存储器单元M3的集合中。在指令I7中,如果谓词操作数是虚值,那么执行可征税收入的第二计算(从收入中减去标准扣除),并且第二计算的结果存储在存储器单元M3的集合中。
图19至23是说明与用于描述包含图16中所说明的设备300的方面的系统的操作的实例情形相关联的一些存储器单元及开关的状态的图式。在实例情形中,设备300执行具有图17中所说明的格式1700的指令。
图19说明在时间t=0处,即指令块通过指令缓冲器220(参看图2)接收时,一些存储器单元及开关的状态。
在时间t=0处,开关1202、1204、1404、1104、1612及1614中的每一者打开。因为在指令I0、I1、I3及I5中的每一者中,位1706的集合(指示指令需要第一操作数)设定成虚值(0),所以位1708的集合(指示对应执行单元312已接收第一操作数)默认地设定成真值(1)。因为在指令I0、I1、I3及I5中的每一者中,位1710的集合(指示指令需要第二操作数)设定成虚值(0),所以位1712的集合(指示对应执行单元312已接收第二操作数)默认地设定成真值(1)。因为在指令I0、I1、I3及I5中的每一者中,位1714的集合(指示指令需要谓词操作数)设定成虚值(0),所以位1716的所有集合(指示指令已接收谓词操作数)、位1718的集合(指示指令需要谓词操作数具有真值),及位1720的集合(指示通过指令接收的谓词操作数具有真值)默认地设定成真值(1)。因此,在指令I0、I1、I3及I5中的每一者中,对应执行单元312具有如通过位1708、1712及1716的对应集合中的每一者中的真值及通过位1718的对应集合中的值等于位1720的对应集合中的值确定的所有其操作数。因此,对应执行单元312可执行指令。
图20说明在已执行指令I0、I1、I3及I5中的每一者之后,在时间t=1处一些存储器单元及开关的状态。
在已执行指令I0之后,如指令I0的位1722的集合(指定用于指令的结果的第一目标的标识)中所指示,存储器单元M1的集合的值(10,000)存储在指令I2的子集506中作为第一操作数。在存储器单元M1的集合的值(10,000)已存储作为指令I2的第一操作数之后,真值(1)存储在指令I2的位1708的集合(指示对应执行单元312已接收第一操作数)中。
在已执行指令I1之后,如指令I1的位1722的集合(指定用于指令的结果的第一目标的标识)中所指示,存储器单元M2的集合的值(4,000)存储在指令I2的子集508中作为第二操作数。在存储器单元M2的集合的值(4,000)已存储作为指令I2的第二操作数之后,真值(1)存储在指令I2的位1712的集合(指示对应执行单元312已接收第二操作数)中。
因为在指令I2中,位1714的集合(指示指令需要谓词操作数)设定成虚值(0),所以位1716的所有集合(指示指令已接收谓词操作数)、位1718的集合(指示指令需要谓词操作数具有真值),及位1720的集合(指示通过指令接收的谓词操作数具有真值)默认地设定成真值(1)。因此,在指令I2中,对应执行单元312具有如通过位1708、1712及1716的对应集合中的每一者中的真值及通过位1718的对应集合中的值等于位1720的对应集合中的值确定的所有其操作数。因此,对应执行单元312可执行指令。
在已执行指令I3之后,寄存器R0的值(12,200):(1)如在指令I3的位1722的集合(指定用于指令的结果的第一目标的标识)中所指示,存储在指令I4的子集508中作为第二操作数;及(2)如在指令I3的位1724的集合(指定用于指令的结果的第二目标的标识)中所指示,存储在指令I7的子集508中作为第二操作数。在寄存器R0的值(12,200)已存储作为指令I4的第二操作数之后,真值(1)存储在指令I4的位1712的集合(指示对应执行单元312已接收第二操作数)中。在寄存器R0的值(12,200)已存储作为指令I7的第二操作数之后,真值(1)存储在指令I7的位1712的集合(指示对应执行单元312已接收第二操作数)中。
在已执行指令I5之后,如指令I5的位1722的集合(指定用于指令的结果的第一目标的标识)中所指示,存储器单元M0的集合的值(60,000)存储在集合304的子集502中作为第一操作数扇出。在存储器单元M0的集合的值(60,000)已存储在集合304的子集502中之后,开关1202闭合。
因为在指令I6中,位1704的集合中的第一信息(致使第一电路302使对应执行单元312经配置以接收集合304或集合902的内容)具有值01,所以对应执行单元312经配置以接收集合304的内容,所述内容是配置用于作为第一操作数扇出的子集502的内容。因此,真值(1)存储在指令I6的位1708的集合(指示对应执行单元312已接收第一操作数)中。
因为在指令I7中,位1704的集合中的第一信息(致使第一电路302使对应执行单元312经配置以接收集合304或集合902的内容)具有值01,所以对应执行单元312经配置以接收集合304的内容,所述内容是配置用于作为第一操作数扇出的子集502的内容。因此,真值(1)存储在指令I7的位1708的集合(指示对应执行单元312已接收第一操作数)中。
或者,对于指令I6、指令I7或两者,代替响应于位1704的集合中的第一信息具有值01而具有存储在位1708的集合中的真值(1),位(未说明)的集合可指定用于关于集合304的内容的信息。举例来说,位的此集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在所述信息可指示集合304已接收所述内容。举例来说,位的此集合可为“或”门(未说明)的第一输入,位1708的集合可为“或”门的第二输入,并且“或”门的输出可指示对应执行单元312已接收指令的第一操作数。在一个方面中,位(未说明)的另一集合可指定用于关于集合902的内容的信息。举例来说,位的此集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在所述信息可指示集合902已接收所述内容。举例来说,位的此集合可为“或”门的第三输入。举例来说,如果集合304的内容及集合902的内容都经配置以通过对应执行单元312接收作为操作数,那么其它电路(未说明)可指示误差。
图21说明在已执行指令I2之后,在时间t=2处一些存储器单元及开关的状态。
在已执行指令I2之后,第一操作数(10,000)加上第二操作数(4,000)的和的值(14,000):(1)如在指令I2的位1722的集合(指定用于指令的结果的第一目标的标识)中所指示,存储在指令I4的子集506中作为第一操作数;及(2)如在指令I2的位1724的集合(指定用于指令的结果的第二目标的标识)中所指示,存储在指令I6的子集508中作为第二操作数。在和的值(14,000)已存储作为指令I4的第一操作数之后,真值(1)存储在指令I4的位1708的集合(指示对应执行单元312已接收第一操作数)中。在和的值(14,000)已存储作为指令I6的第二操作数之后,真值(1)存储在指令I6的位1712的集合(指示对应执行单元312已接收第二操作数)中。
因为在指令I4中,位1714的集合(指示指令需要谓词操作数)设定成虚值(0),所以位1716的所有集合(指示指令已接收谓词操作数)、位1718的集合(指示指令需要谓词操作数具有真值),及位1720的集合(指示通过指令接收的谓词操作数具有真值)默认地设定成真值(1)。因此,在指令I4中,对应执行单元312具有如通过位1708、1712及1716的对应集合中的每一者中的真值及通过位1718的对应集合中的值等于位1720的对应集合中的值确定的所有其操作数。因此,对应执行单元312可执行指令。
图22说明在已执行指令I4之后,在时间t=3处一些存储器单元及开关的状态。
在已执行指令I4之后,谓词操作数的值设定成真值(1),因为第一操作数的值(14,000)大于第二操作数的值(12,200)。如在指令I4的位1722的集合(指定用于指令的结果的第一目标的标识)中所指示,谓词操作数(1)的值存储在集合304的子集706中以作为谓词操作数扇出。在谓词操作数的值(1)已存储在集合304的子集706中之后,开关1404闭合。
因为在指令I6中,位1704的集合中的第一信息(致使第一电路302使对应执行单元312经配置以接收集合304或集合902的内容)具有值01,所以对应执行单元312经配置以接收集合304的内容,所述内容是配置用于分别作为第一操作数及谓词操作数扇出的子集502的内容及子集706的内容。因此,真值(1)存储在指令I6的位1716的集合(指示对应执行单元312已接收谓词操作数)中。
或者,代替响应于位1704的集合中的第一信息具有值01而具有存储在位1716的集合中的真值(1),位(未说明)的集合可指定用于关于集合304的内容的信息。举例来说,位的此集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在所述信息可指示集合304已接收所述内容。举例来说,位的此集合可为“或”门(未说明)的第一输入,位1716的集合可为“或”门的第二输入,并且“或”门的输出可指示对应执行单元312已接收指令的第一操作数。在一个方面中,位(未说明)的另一集合可指定用于关于集合902的内容的信息。举例来说,位的此集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在所述信息可指示集合902已接收所述内容。举例来说,位的此集合可为“或”门的第三输入。举例来说,如果集合304的内容及集合902的内容都经配置以通过对应执行单元312接收作为操作数,那么其它电路(未说明)可指示误差。
因为谓词操作数(存储在子集706中)具有真值(1),所以真值(1)存储在指令I6的位1720的集合(指示通过指令接收的谓词操作数具有真值)中。因此,在指令I6中,对应执行单元312具有如通过位1708、1712及1716的对应集合中的每一者中的真值及通过位1718的对应集合中的值等于位1720的对应集合中的值确定的所有其操作数。因此,对应执行单元312可执行指令。
因为在指令I7中,位1704的集合中的第一信息(致使第一电路302使对应执行单元312经配置以接收集合304或集合902的内容)具有值01,对应执行单元312经配置以接收集合304的内容,所述内容是配置用于分别作为第一操作数及谓词操作数扇出的子集502的内容及子集706的内容。因此,真值(1)存储在指令I7的位1716的集合(指示对应执行单元312已接收谓词操作数)中。
或者,代替响应于位1704的集合中的第一信息具有值01而具有存储在位1716的集合中的真值(1),位(未说明)的集合可指定用于关于集合304的内容的信息。举例来说,位的此集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在所述信息可指示集合304已接收所述内容。举例来说,位的此集合可为“或”门(未说明)的第一输入,位1716的集合可为“或”门的第二输入,并且“或”门的输出可指示对应执行单元312已接收指令的第一操作数。在一个方面中,位(未说明)的另一集合可指定用于关于集合902的内容的信息。举例来说,位的此集合可存储在存储器单元的集合中。举例来说,存储器单元的此集合中存在所述信息可指示集合902已接收所述内容。举例来说,位的此集合可为“或”门的第三输入。举例来说,如果集合304的内容及集合902的内容都经配置以通过对应执行单元312接收作为操作数,那么其它电路(未说明)可指示误差。
因为谓词操作数(存储在子集706中)具有真值(1),所以真值(1)存储在指令I7的位1720的集合(指示通过指令接收的谓词操作数具有真值)中。因此,在指令I7中,对应执行单元312不具有如通过位1718的对应集合中的值不等于位1720的对应集合中的值,即使位1708、1712及1716的对应集合中的每一者具有对应真值而确定的所有其操作数。因此,对应执行单元312无法执行指令。
图23说明在已执行指令I6之后,在时间t=4处一些存储器单元及开关的状态。
在已执行指令I6之后,如在指令I6的位1722的集合(指定用于指令的结果的第一目标的标识)中所指示,从第一操作数(60,000)减去第二操作数(14,000)的差值(46,000)存储在存储器单元M3的集合中。
图24是说明用于扇出指令的结果的方法2400的实例的流程图。在方法2400中,在操作2402处,第一指令的结果可存储在存储器单元的第一集合中。在操作2404处,第二指令的操作代码(即,操作码)可存储在存储器单元的第二集合中。在操作2406处,第二指令的信息可存储在存储器单元的第三集合中。第二指令的格式可包含指定用于操作代码的位的集合及指定用于信息的位的集合。在操作2408处,可提供经配置以存储第二指令的操作数的存储器单元的第四集合。存储器单元的第一集合、存储器单元的第二集合、存储器单元的第三集合及存储器单元的第四集合可不相交。在操作2410处,可响应于存储器单元的第三集合中存在所述信息而使执行单元经配置以接收存储器单元的第一集合的内容作为第二指令的操作数。
本领域技术人员将了解,可使用多种不同技术及技艺中的任一者来表示信息及信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个以上描述中参考的数据、指令、命令、信息、信号、位、符号及芯片。
尽管前述描述提供说明性方面,但应注意,可在不脱离如由所附权利要求书所定义的范围的情况下对这些说明性方面作出各种改变及修改。

Claims (15)

1.一种用于扇出生产指令的结果的设备(400),其包括:
第一寄存器,其经配置以存储生产指令的结果,且所述生产指令进一步经配置,以使得可以在所述生产指令中将存储器单元的位置的标识识别为所述生产指令的所述结果的目标;
存储器单元的两个或多于两个集合,其经配置以针对对应两个或多于两个消费指令的信息,存储与所述生产指令的所述结果有关的信息;及
两个或多于两个电路(302-b...302-N),其经配置以基于针对所述两个或多于两个消费指令存储在存储器单元的所述两个或多于两个集合中的相应信息的存在而将所述第一寄存器中的所述生产指令的所述结果的扇出作为所述两个或多于两个消费指令的源操作数提供到一或多个执行单元(312-b...312-N),
其中所述设备是基于块的计算机架构的一部分,并且
其中所述生产指令及所述两个或多于两个消费操作都处于相同指令块内。
2.根据权利要求1所述的设备,其中:
所述第一寄存器包括随机存取存储器单元;及
存储器单元的所述两个或多于两个集合包括触发器。
3.根据权利要求1所述的设备,其中所述两个或多于两个电路中的每一者包括至少一个开关(314)。
4.根据权利要求3所述的设备,其中所述至少一个开关包括:中继器、微机电开关、半导体装置、晶体管、多路复用器、导通门,或其任何组合。
5.根据权利要求1所述的设备,其进一步包括:
保留站的阵列,其包括保留站记录,其中所述生产指令及所述两个或多于两个消费指令存储在相应保留站记录中;及
保留站的所述阵列不包括所述第一寄存器。
6.根据权利要求1所述的设备,其进一步包括第二电路(1002),其经配置以防止所述第一寄存器的内容提供到所述一或多个执行单元中的至少一者,直到在所述生产指令的所述结果已存储在所述第一寄存器中之后。
7.根据权利要求1所述的设备,其中所述生产指令的所述结果是谓词操作数,所述两个或多于两个消费指令是基于所述谓词操作数而有条件地执行。
8.一种用于扇出生产指令的结果的方法,所述方法包括:
将所述生产指令的所述结果存储在设备的第一寄存器中,所述生产指令经配置,以使得可以在所述生产指令中将存储器单元的位置的标识识别为所述生产指令的所述结果的目标;
将针对两个或多于两个消费指令的与所述生产指令的所述结果有关的信息存储在所述设备的存储器单元的对应两个或多于两个集合中;及
基于针对所述两个或多于两个消费指令存储在存储器单元的所述两个或多于两个集合中的相应信息的存在,将所述第一寄存器中的所述生产指令的所述结果作为所述两个或多于两个消费指令的源操作数扇出到所述设备的一或多个执行单元(312-b...312-N),
其中所述设备是基于块的计算机架构的一部分,并且
其中所述生产指令及所述两个或多于两个消费操作都处于相同指令块内。
9.根据权利要求8所述的方法,其中:
所述第一寄存器包括随机存取存储器单元;及
存储器单元的所述两个或多于两个集合包括触发器。
10.根据权利要求8所述的方法,其包括使用所述两个或多于两个电路(302-b…302-N)扇出所述结果,以将所述第一寄存器连接到所述一或多个执行单元。
11.根据权利要求10所述的方法,其中所述两个或多于两个电路中的每一者包括至少一个开关(314)。
12.根据权利要求8所述的方法,其进一步包括:
将所述生产指令及所述两个或多于两个消费指令存储在包括保留站记录的保留站的阵列中的相应保留站记录中;及
从保留站的所述阵列中排除所述第一寄存器。
13.根据权利要求8所述的方法,其进一步包括防止所述第一寄存器的内容提供到所述一或多个执行单元中的至少一者,直到在所述生产指令的所述结果已存储在所述第一寄存器中之后。
14.一种用于扇出生产指令的结果的系统,其包括用于执行根据权利要求8至13中任一权利要求所述的方法的装置。
15.一种计算机可读媒体,其包括用于使计算机或处理器执行根据权利要求8至13中任一权利要求所述的方法的至少一个指令。
CN201680008217.4A 2015-02-09 2016-01-15 用于扇出生产指令的结果的方法和设备及计算机可读媒体 Active CN107209664B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/617,910 2015-02-09
US14/617,910 US20160232006A1 (en) 2015-02-09 2015-02-09 Fan out of result of explicit data graph execution instruction
PCT/US2016/013569 WO2016130275A1 (en) 2015-02-09 2016-01-15 Reservation station having instruction with selective use of special register as a source operand according to instruction bits

Publications (2)

Publication Number Publication Date
CN107209664A CN107209664A (zh) 2017-09-26
CN107209664B true CN107209664B (zh) 2021-04-27

Family

ID=55273550

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680008217.4A Active CN107209664B (zh) 2015-02-09 2016-01-15 用于扇出生产指令的结果的方法和设备及计算机可读媒体

Country Status (4)

Country Link
US (1) US20160232006A1 (zh)
EP (1) EP3256942A1 (zh)
CN (1) CN107209664B (zh)
WO (1) WO2016130275A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160092217A1 (en) * 2014-09-29 2016-03-31 Apple Inc. Compare Break Instructions
JP6428488B2 (ja) * 2015-05-28 2018-11-28 富士通株式会社 加減算器及び加減算器の制御方法
US20170083339A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Prefetching associated with predicated store instructions
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US20170083338A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Prefetching associated with predicated load instructions
WO2022036690A1 (zh) * 2020-08-21 2022-02-24 华为技术有限公司 一种图计算装置、处理方法及相关设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
EP1199629A1 (en) * 2000-10-17 2002-04-24 STMicroelectronics S.r.l. Processor architecture with variable-stage pipeline
CN101421733A (zh) * 2006-03-24 2009-04-29 新思公司 通过保留长线路和共享长线路进行fpga布线
CN102754069A (zh) * 2010-02-18 2012-10-24 国际商业机器公司 加载/存储分离设施及其指令

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
AU3330793A (en) * 1991-12-23 1993-07-28 Intel Corporation Interleaved cache for multiple accesses per clock in a microprocessor
US6128721A (en) * 1993-11-17 2000-10-03 Sun Microsystems, Inc. Temporary pipeline register file for a superpipelined superscalar processor
US6219780B1 (en) * 1998-10-27 2001-04-17 International Business Machines Corporation Circuit arrangement and method of dispatching instructions to multiple execution units
US6359827B1 (en) * 2000-08-22 2002-03-19 Micron Technology, Inc. Method of constructing a very wide, very fast distributed memory
US20060149930A1 (en) * 2004-12-08 2006-07-06 Hiroaki Murakami Systems and methods for improving performance of a forwarding mechanism in a pipelined processor
WO2007057831A1 (en) * 2005-11-15 2007-05-24 Nxp B.V. Data processing method and apparatus
US20090249035A1 (en) * 2008-03-28 2009-10-01 International Business Machines Corporation Multi-cycle register file bypass
US9152427B2 (en) * 2008-10-15 2015-10-06 Hyperion Core, Inc. Instruction issue to array of arithmetic cells coupled to load/store cells with associated registers as extended register file
US9158328B2 (en) * 2011-12-20 2015-10-13 Oracle International Corporation Memory array clock gating scheme
US10102003B2 (en) * 2012-11-01 2018-10-16 International Business Machines Corporation Intelligent context management
US9471325B2 (en) * 2013-07-12 2016-10-18 Qualcomm Incorporated Method and apparatus for selective renaming in a microprocessor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
EP1199629A1 (en) * 2000-10-17 2002-04-24 STMicroelectronics S.r.l. Processor architecture with variable-stage pipeline
CN101421733A (zh) * 2006-03-24 2009-04-29 新思公司 通过保留长线路和共享长线路进行fpga布线
CN102754069A (zh) * 2010-02-18 2012-10-24 国际商业机器公司 加载/存储分离设施及其指令

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"TRIPS: A Polymorphous Architecture for Exploiting ILP, TLP, and DLP";KARTHIKEYAN SANKARALINGAM et.al;《ACM Transactions on Architecture and Code Optimization》;20040331;第1卷(第1期);论文第2节 *

Also Published As

Publication number Publication date
WO2016130275A1 (en) 2016-08-18
US20160232006A1 (en) 2016-08-11
CN107209664A (zh) 2017-09-26
EP3256942A1 (en) 2017-12-20

Similar Documents

Publication Publication Date Title
CN107250978B (zh) 基于多核块的指令集架构中的寄存器重命名
CN107209664B (zh) 用于扇出生产指令的结果的方法和设备及计算机可读媒体
US11853763B2 (en) Backward compatibility by restriction of hardware resources
CN106406849B (zh) 提供向后兼容性的方法和系统、非暂态计算机可读介质
US20170083313A1 (en) CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
US9195466B2 (en) Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media
JP2018523242A (ja) 命令オペランドのための狭い生成値をアウトオブオーダプロセッサ内のレジスタマップ内に直接記憶すること
KR20180127379A (ko) 프로세서-기반 시스템들 내의 로드 경로 이력에 기반한 어드레스 예측 테이블들을 사용하는 로드 어드레스 예측들의 제공
CN104834503A (zh) 具有粒度的增加立即数能力的处理器和方法
CN109308191B (zh) 分支预测方法及装置
US10664280B2 (en) Fetch ahead branch target buffer
US20140047221A1 (en) Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
WO2016093975A1 (en) Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media
US20210089306A1 (en) Instruction processing method and apparatus
JP6317339B2 (ja) レジスタ関連優先度に基づく実行パイプラインへの命令の発行、ならびに関係する命令処理回路、プロセッサシステム、方法、およびコンピュータ可読媒体
US11451241B2 (en) Setting values of portions of registers based on bit values
US11093401B2 (en) Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
US10452434B1 (en) Hierarchical reservation station
US20190294443A1 (en) Providing early pipeline optimization of conditional instructions in processor-based systems
US20160092232A1 (en) Propagating constant values using a computed constants table, and related apparatuses and methods

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