CN112567340A - 用于执行指令的系统、方法和装置 - Google Patents

用于执行指令的系统、方法和装置 Download PDF

Info

Publication number
CN112567340A
CN112567340A CN201980053058.3A CN201980053058A CN112567340A CN 112567340 A CN112567340 A CN 112567340A CN 201980053058 A CN201980053058 A CN 201980053058A CN 112567340 A CN112567340 A CN 112567340A
Authority
CN
China
Prior art keywords
operations
memory
instructions
instruction
metadata
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.)
Pending
Application number
CN201980053058.3A
Other languages
English (en)
Inventor
柯蒂斯·格伦·邓纳姆
帕维尔·沙米斯
詹姆师德·加拉
迈克尔·菲利普
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
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 ARM Ltd filed Critical ARM Ltd
Publication of CN112567340A publication Critical patent/CN112567340A/zh
Pending legal-status Critical Current

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/30181Instruction operation extension or modification
    • 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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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/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 or look ahead
    • G06F9/3824Operand accessing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

一种用于对处理交易序列进行排序的系统、装置以及方法。所述方法包括从存储器访问要执行的操作的程序序列。接收到指令,其中一些指令具有标识符或助记符,用于将那些已识别的操作与其他没有标识符或助记符的操作区分开。助记符指示操作的程序序列的执行的分配。基于助记符将操作的程序序列分组,以使某些操作与其他操作分开。

Description

用于执行指令的系统、方法和装置
背景技术
在许多指令执行系统中,希望合并存储器访问。然而,尽管存储器合并通常具有某些效率优点,但是在某些情况下,指令会被分组成使得对合并的工作并不是所期望的。
随着计算系统的发展,已经开发了一些限制存储器访问的现有屏障指令(barrierinstruction)技术,以防止发生不期望的存储器访问。通常,现有的屏障指令技术试图通过强制执行存储器排序来完成指令的排序,但是这种强制执行过于缓慢并且给设备存储器带来不必要的负担。试图改变存储器系统来参与现有屏障的语义(semantics)是极其困难和不合理的。此外,用于I/O存储器访问的现有屏障具有有害的性能影响,因为在等待确认(该确认来自处理器和存储器(例如,PCI根联合体(PCI root complex))之间的连接)时,其会导致流水线的停顿或延迟。
附图说明
附图提供了视觉表示,其将用于更全面地描述各种代表性实施例,并且可以被本领域技术人员用来更好地理解所公开的代表性实施例及其固有优点。在这些附图中,相同的附图标记标识相应的元件。
图1示出了根据本公开的系统的框图。
图2示出了根据各种代表性实施例可以使用的流程图的示例。
图3示出了根据各种代表性实施例可以使用的流程图的示例。
图4示出了根据各种代表性实施例的可以与硬件结合使用的流程图的示例。
图5示出了根据各种代表性实施例的缓冲区的示例。
图6示出了根据各种代表性实施例的存储器模块的示例。
图7示出了根据实施例的流程图。
虽然本公开可以有许多不同形式的实施例,在附图中示出并且将在本文中详细描述特定实施例,但是应理解为将本公开视为所述原理的示例,而无意于将本公开限制为示出和所述的特定实施例。在下面的描述中,相同的附图标记用于描述附图中的若干视图中的相同、相似或相应的部分。
具体实施方式
在本文档中,诸如第一和第二、顶部和底部等的关系用语可以仅用于将一个实体或动作(action)与另一实体或动作区分开,而不必要求或暗示这些实体或动作之间有任何实际的这种关系或顺序。用语“包括(comprise)”、“包括(comprises)”、“包括(comprising)”或其任何其他变体旨在涵盖非排他性包括,使得包括一系列要素的过程、方法、物品或装置不只是包括那些要素,还可以包括未明确列出或此类过程、方法、物品或装置所固有的其他要素。在没有更多限制的情况下,以“包括...”开头的要素并不排除在包括此要素的过程、方法、物品或装置中存在另外的相同要素。
在本文档中,对“一个实施例”、“某些实施例”、“一实施例”或类似用语的引用意指结合此实施例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,此类短语在整个说明书中出现或在各处出现不一定都指同一实施例。此外,可以在一个或多个实施例中以任何适当的方式组合特定特征、结构或特性而没有限制。
本文所使用的“或”一词将被解释为包括性的或意指任何一者或任何组合。因此,“A,B或C”意指“以下任何一种情况:A;B;C;A和B;A和C;B和C;A,B和C”。仅当元件、功能、操作或动作的组合以某种方式固有地相互排斥时,才会出现此定义的例外情况。
为了图示的简单和清楚起见,附图标记可以在附图之间重复,以指示相应或相似的元件。阐述了许多细节,以提供对本文描述的实施例的理解。可以在没有这些细节的情况下实践实施例。在其他实例中,没有详细描述公知的方法、流程和部件,以避免使所述实施例模糊不清。此描述不应被视为限于本文描述的实施例的范围。
在本公开的各种实施例的描述中可以使用以下术语。
辅助的:附加的,补充的。
屏障指令:一种指令,促使CPU或编译器对该指令之前和之后发出的存储器操作强制执行排序约束。
缓冲区:通常在RAM中的临时存储区。大多数缓冲区的目的是充当保存(holding)区,使CPU能够在将数据传输到设备之前对其进行操控。
缓存:缓存存储器,也称为CPU存储器,是随机存取存储器(RAM),与访问常规RAM相比,计算机微处理器可以更快地对其进行访问。此存储器通常直接与CPU芯片集成在一起,或被置于总线互连与CPU分开的单独芯片上。缓存存储器是一种小型的易失性计算机存储器,可提供对处理器的高速数据访问并存储常用的计算机程序、应用程序以及数据。其仅在计算机启动之前存储和保留数据。
合并:合并相似类型的两条指令。可以在有两条相似的指令要执行、区块被释放(freed)的时候进行合并,或可以将合并推迟到以后的某个时间(称为延迟合并),或者可能根本不能完成合并。
CPU:中央处理单元;计算机中的电子电路,其通过执行指令所指定的基本算术、逻辑、控制以及输入/输出(I/O)操作来执行计算机程序的指令。
执行:计算机的基本操作过程。其是计算机从其存储器中检索程序指令,确定指令所指示的动作,以及执行这些动作的过程。从启动到关闭计算机,中央处理单元(CPU)都会连续重复此循环。
流程图:一种表示算法、工作流程或过程的图表类型。流程图将方法的操作或动作显示为各种类型的框及其顺序。
粒度:系统包含独立部件(如颗粒)的程度。系统中的部件越多,或粒度越大,则其越灵活。
接口:硬件连接或用户接口。接口也可以用作动词,描述两个设备如何相互连接。硬件接口用于将两个或多个电子设备连接在一起。
加载队列:等待处理的工作对象的序列。
元数据:附加的数据,通常对有关数据的基本信息进行汇总,使查找和使用特定数据实例更加容易。
微架构:计算机组织,在特定处理器中实现给定指令集架构(ISA)的方式。
助记符:名称或标识符或代码,长度较短,但提供的功能与原始功能相同。
I/O:输入/输出,数据处理系统中处理器与外围设备之间的数据传输。I/O设备可以包括可以直接耦合或通过中间I/O控制器耦合的键盘、显示器、定点设备等。
模块:程序或设备的组分或部分,可以包含硬件或软件,或者硬件和软件的组合。在包括软件的模块中,软件可以包含一个或多个例程或子例程。一个或多个模块可以组成一个程序和/或设备。
单调:在保留或反转给定顺序的有序集合之间对方案进行排序。
操作:计算机在程序执行中执行的单个动作。
排序标签:一种元数据,其帮助描述条目(item)并允许通过浏览或搜索再次找到它。
外围设备:计算机设备,诸如,键盘或打印机,其不是计算机必不可少的(即存储器和微处理器)的一部分。这些辅助设备通常应连接到计算机。
源代码:使用人类可读的编程语言(通常为纯文本)编写的任何代码集合,可能带有注释。程序的源代码经过特殊设计,以方便计算机程序员的工作,他们主要通过编写源代码来指定计算机要执行的动作。通常,源代码会由汇编器或编译器转换为计算机可以理解的二进制机器码。然后可以将机器码存储起来以便以后执行。或者,源代码可以被解读,且因此被立即执行。
存储队列:正在存储的工作对象的序列。
本公开的实施例利用存储操作的存储器位置。在存储器位置处接收一条新的指令,此指令具有助记符“SEP”(代表“Separate”)。此指令的行为是为了防止程序顺序或程序序列中在该指令之前进行的存储器访问与在该指令之后进行的存储器访问相结合。
虽然在一些商用CPU架构中,存储器合并行为是微架构式的,即不会暴露于编程接口,但是对存储器和指令的一些控制可能有助于与I/O设备的有效通信。这在一定程度上控制了程序序列或指令序列的执行,并可以使等待时间减少一个数量级,并且不会引起任何流水线停顿。本文所述的实施例是特别有用的,因为在对存储器系统进行最小的实现修改和不做修改的情况下,性能得到显著改善。
本公开的实施例提出了一种屏障指令技术,所述屏障指令技术基于一些存储器操作的合并效率或抑制一些存储器操作合并的效率来分离存储器操作。
这种带有助记符(separate(单独的)或“SEP”)的屏障指令是通过指定“执行”存储器操作之后的阶段存在而实现的,在此阶段中,存储器交互被缓冲并且可能合并。此阶段被指定为存储器阶段(“MEM”)。实际上,依存储器模型而定,阶段存储器或MEM可以是架构式、微架构式,或非架构式的。例如,架构式实施例可以用于总存储排序(Total StoreOrdering)。非架构式实施例可以用于其他排序模型。
在架构式、微架构式或非架构式实施例中的任一者中,可以通过向每个存储器操作分配元数据值来强制执行带有助记符的屏障指令,此屏障指令可以被识别为分离或“SEP”。元数据可以是阶段颜色(phase color)或排序标签,或无符号整数,或其他合适的标签、标识符,或指示符。
在一个实施例中,助记符SEP使单调递增的计数器递增,所述计数器用于向存储器/操作分配顺序标签。SEP本身不执行任何存储器功能。因此,可以在解码阶段之后立即应用此标签,这样就不会影响潜在的无序存储器操作(即SEP助记符不强制执行排序,因此,SEP之后的多个存储器操作可以在SEP提交之前执行并合并)。在这样的实施例中,MEM阶段仅合并同一元数据标签的存储器操作,从而满足所需的语义,但是助记符SEP不需要生成微操作、重命名、发出或执行。
可以通过一个或多个运算对象(operand)来扩展这个概念,这些运算对象限制指令影响哪些存储器操作,例如,仅写入/存储指令。
另外,本文公开的另一实施例是存储器操作,诸如,“写入”操作,或对存储器执行的其他操作。在此实施例中,程序员可以控制在存储器串流处停止执行。这可以通过使用在每次有命令时增加“1”的存储器阶段标识符在CPU中实现。只有共享同一标识符的操作被组合。
图1示出了系统100,所述系统包括第一模块110,第一模块110经由双向通信总线112(a)...(n)(其中,“n”是与系统100相称的任何合适的数字)可操作地耦合到各种外围/辅助模块114(a)...(n)(其中,“n”是与系统100相称的任何合适的数字)。这些元件中的每一个元件都将在本文中更详细地描述。
模块110包括经由接口104可操作地耦合至处理器106的存储器102。处理器104分别经由相关联的接口126(a),(b)...(n)可操作地耦合至存储器模块130(a)、I/O模块130(b)以及外围/辅助模块130(n),其中,“n”是任何合适的数字。
存储器模块102耦合到或包括附加的存储器位置或存储器模块,附加的存储器位置或存储器模块包括,例如:缓冲区116;加载队列118;存储队列120;以及缓存存储器122。虽然示出了四个补充存储器模块116、118、120和122,但是可以使用任何合适数量的补充存储器模块。
缓冲区模块116可以用于缓冲在存储器模块102处接收的各种指令。缓冲区116充当保存(holding)区域,使CPU能够在将数据传输到模块或设备之前操控数据。
加载队列模块118用于存储要执行的指令。
存储队列120用于存储可以访问和处理的指令。
存储器模块102经由接口104可操作地耦合到处理器106,并且可以利用存储器模块122、116、118和120。接口104可以是任何合适的接口,例如,AXI接口,其是由
Figure BDA0002940599940000061
公司开发的接口。接口104提供硬件接口以连接存储器模块102和处理器106,从而可以交换信息和数据以及通信和控制信号。
处理器模块106可以是具有CPU的任何合适的处理器,所述处理器具有足够的处理能力以基于模型、规则或算法来执行排序,所述模型、规则或算法可以存储在诸如缓存存储器之类的存储器中,或者可以由处理器模块106从远程存储器访问。处理器模块106能够存储指令、代码、算法、模型,以及其他操作和执行参数。
如本文所使用的,术语“处理器”可以包含或利用可编程硬件,诸如:计算机、微控制器、嵌入式微控制器、微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA),以及复杂的可编程逻辑器件(CPLD)。这些硬件示例可以进一步组合使用,以实现所需的功能控制器模块。可以使用诸如汇编、C、C++、C#等的语言对计算机、微控制器和微处理器进行编程。通常使用诸如VHSIC硬件描述语言(VHDL)或Verilog之类的硬件描述语言(HDL)对FPGA、ASIC以及CPLD进行编程,这些语言在可编程设备上以较少功能配置内部硬件模块之间的连接。
处理器模块106经由相关联的接口或总线126(a)...(n)可操作地耦合到一个或多个模块130(a)...(n),其中,“n”是任何合适的数字。
包括存储器102、处理器106以及相关模块130(总体而言)的第一模块110分别经由相关联的双向接口或总线112(a)...(n)可操作地耦合到多个外围/辅助模块114(a)...(n)(其中,“n”是任何合适的数字)。
外围/辅助模块114可以是任何I/O(输入/输出)、计算机外围设备,诸如,鼠标、键盘、打印机、端口等,或与系统100相称的辅助存储器或辅助处理器。
图2示出了根据实施例的流程图200。一系列动作200可以以任何适合的编程语言存储在非易失性存储器或其他适合的存储器或计算机可用介质上。
图2中所示的一系列动作存储在存储器102中,如图2所示,并且如图2所示,可以由处理器106来执行。
如图2所示,算法开始(202)。访问程序顺序或序列(204)。通常经由接口来接收或访问指令(206)。评估指令以确定此指令是否包括组改变指示符(208),所述指示符可以是助记符或“开始/停止”命令或符号。组改变顺序指示符可以是多个指示符中的任何一者。组改变指示符修改存储器操作序列。一个实施例包括作为助记符的指示符,其中助记符是命令或元数据。作为另一个实施例,指示符是开始/停止指示符。
具有指示符的指令用于区分存储器对操作的分配。所述分配通常基于助记符或其他标识符。存储器对操作的这种分配通常涉及对操作进行分组,因此,由一个或多个第一操作组成的第一组相对于一个或多个第二操作是不同的。
实际上,作为一个实施例,第二操作可以是开放组,因为,这些操作将在第一组中的操作处理之后进行处理。
如果确定(208)指令不包括序列改变指示符(210),则执行操作(212)。在执行操作(212)之后,确定是否存在另一指令(216)。如果是(218),则通常从接口接收下一指令(206)。如果没有其他指令,则算法结束(270)。
如果确定(208)存在作为接收的指令的一部分的序列修改指示符(222),则修改程序操作序列(224)。发出命令(226),以执行以下任一操作:停止;开始;插入屏障;或依据序列修改指示符的类型或与其相关联的命令来修改操作的序列。指示符实际上可以执行或不执行任何命令控制功能,而仅充当指针。例如,“SEP”可以不执行任何存储器功能,而只是更新计数器,以便后续的存储器操作获得不同的元数据标签。
修改程序序列,其总体而言可以是存储器操控(228)。此存储器操控或修改可以包括,例如,合并某些指令,防止某些指令合并,开始执行,停止执行,或指令或其他存储器操作的执行顺序的任何其他修改或改变。
在算法的这一点上,可以实现许多不同的实施例。一个实施例是将元数据标签或值分配给存储器操作(230)。此元数据标签或值可以被视为阶段颜色或排序标签,或从计数器(诸如,单调递增的计数器)分配的无符号整数。然后,将标签应用于存储器操作(232)。
另外,如上所述,所述值可以是例如由单调递增计数器(234)分配的无符号整数。在此实施例中,SEP实际上不执行任何存储器功能,而只是用于使计数器递增,以便为后续的存储器操作分配不同的元数据标签。因此,可以在解码阶段之后立即应用此标签。因此,SEP不会强制执行排序,从而允许SEP之后的多个存储器操作可以在SEP提交之前执行并合并。在此实施例中,缓冲阶段或MEM阶段将仅合并具有同一元数据标签的存储器操作。这满足了所需的语义,但是SEP不需要生成微操作,也不需要重命名、发出或执行。
在又一个实施例中,可以以流水线方式识别“开始/停止”命令(236)。在此流水线处理中,命令用于区分边界条件。此边界条件用于操控处理序列或顺序,并且可以用于识别或用作屏障指令。
不管是否有标签(232)、计数器(234)或命令(236),都将标识符(232)、(234)、(236)与预定标准或其他度量标准进行比较(238)。例如,当使用元数据标签时,可以将一个操作的元数据标签与另一操作的元数据标签进行比较。另外,可以将一个操作的计数器值与另一操作的计数器值进行比较。此外,命令“开始”或“停止”可以被识别为使操作开始或使操作停止。
依据比较(238)的结果,确定匹配项,或致动或功能(248)。如果确定存在匹配项或没有屏障,则可以发生存储器合并(252)。如果没有匹配项,或存在屏障,则不会发生存储器合并(258)。
在执行了操作之后,无论是合并(252)还是不合并(258),都可以对操作进行重命名。
确定是否还有其他指令(216)。如果是(218),则通常从接口接收下一指令(206)。如果没有其他指令,则算法结束(270)。
图3示出了根据本公开的实施例可以使用的示例性算法或流程图300。流程图300可以以任何合适的编程语言存储在非易失性存储器或其他合适的存储器或计算机可用介质上。
算法开始(302),并且通常经由接口在处理器处接收第一指令(304)。通常经由接口在处理器处接收第二指令(306)。指示符与第一指令相关联(308)。通常,此指示符可以是元数据、元数据标签、元数据值、命令(“开始/停止”)或增量值。
与第一指令相关联的指示符可以被修改、更新或改变(308),使得新的指示符与第二指令相关联(312)。在一个实施例中,第一指示符在一些实例中将与第二指示符相同。实际上,与第二指令相关联的指示符可以使得其表明第一指令的指令类型与第二指令的指令类型之间的匹配。
与第一指令相关联的指示符和与第二指令相关联的指示符的使用使得可以将这些指示符进行比较或分析(314),以确定是否存在屏障指令或指示符是否导致程序序列的改变,或操作执行顺序的改变。
比较用于确定指示符是否匹配(316)或以其他方式表明执行顺序是否应当改变。如果确定的结果(316)是指示符不匹配,或者存在执行修改标识符(318),则存储器操作不合并(320)。
如果确定的结果(316)是指示符匹配,或者不存在执行修改标识符(324),则存储器操作被合并(326)。
在存储器合并(326)或不合并(320)之后,可以将指示符重命名,以用于后续指令。
确定是否还有更多指令(330),如果是(334),则表明接收到另一指令(304)。如果没有其他指令(336),则算法结束(340)。
图4示出了参考硬件部件以实现实施例的流程图。图4的元件共同表示为400,其部件可以在硬件、存储器、处理器、外围设备、辅助部件、接口以及软件的计算机处理环境中使用。软件可以以任何合适的编程语言存储在非易失性存储器或其他合适的存储器或计算机可用介质上。
图4示出了可以访问的指令缓存(402)。指令缓存可以是存储器模块、存储器,或任何合适的电子存储介质,其可以是本地的或远程的。指令缓存存储多个指令。
在访问指令缓存时,提取指令(406)。此指令可以是处理器、存储器或其组合使用的任何所需的指令。
指令被解码(410)。指令的解码可用于解析指令的各个方面,诸如,指示符、助记符、元数据标签、元数据值、计数器值、命令(开始/停止),或与此指令相关联的任何其他可用信息,以用于识别目的。所述识别有助于确定指令是否包括指示应当修改程序顺序或执行序列的指示符。
一旦指令已被解码和识别,就将其重命名(412)。执行重命名,以维持对已发出或执行的那些指令的控制。此重命名确保后续的存储器操作获得不同的指示符,诸如,不同的元数据标签或不同的命令。
然后,发出指令(414)以实现操作的执行。在发出指令(414)之后,可以访问其他单元或操作(416)。
执行存储器操作(418)。可以基于指示符或解码的指令来修改这些存储器操作(410)。通常,存储器操作访问存储器模块(420),存储器模块可以包括加载队列模块(422)和存储队列模块(424)。其他存储器寄存器或子模块也可以位于存储器模块(420)中。
图5更详细地示出了存储队列(424)。存储队列(424)可以是,例如,缓冲区,诸如,写入组合缓冲区(WCB),并且包括可以被访问的多个寄存器,或存储区域,或存储器位置。尽管在此示出并描述了一个缓冲区424,但是在本公开的范围内,系统可以具有任何合适数量的缓冲区,包括多个WCB。
图6示出了数据缓存存储器模块522,其可操作地耦合到存储队列424,使得存储队列424可以访问来自缓存模块522的数据。数据缓存模块522保存数据并且可以访问缓冲区和存储器位置。
在一个实施例中,存储队列424可以是WCB,其是弱排序的存储器类型。WCB可以可操作地耦合到数据缓存模块522。这允许WCB比较慢的控制消息更快地做出反应。可以映射WCB,以允许每个WCB独立于处理器或CPU内核中的其他WCB缓冲区而运行。WCB的使用允许将数据组合并临时存储在其中,然后可以将数据放在一起,而不是(立即)写入为单个位(bit)或小块(chunk)。
如图5所示,缓冲区424的存储器寄存器具有存储分配单元(storage allocation)526、528、530、532、534、536和538。这些存储分配用于存储来自具有寄存器552(a)...(n)的缓存522的数据。缓冲区424的存储寄存器可以存储或可以不存储数据。实际上,可以操控缓冲区中数据的存储位置,以使得可以合并的存储器操作是有效的,并且当识别出诸如命令或标签之类的屏障指示符时,存储器操作不会被合并。示出了缓冲区424的存储容量维度540。如缓冲区424所示,存储分配单元526、528、530、532、534、536和538可以小于维度540。
图6示出了数据缓存522的表示。此数据缓存522具有集合(通常示为列552),此集合具有子寄存器552(a)...(n)(其中,“n”是任何合适的数字)。示出了数据缓存522的宽度尺寸560。寄存器552中的数据(通常)可以被访问和操控,并存储在缓冲区424中。存储在缓冲区424中的数据可以在突发(burst)中,而不是在单个位或较小的段(segment)中被利用。
图7示出了根据实施例的流程图700。一系列动作700可以以任何合适的编程语言存储在非易失性存储器或其他合适的存储器或计算机可用介质上。
图7中所示的一系列动作可以存储在存储器102中,如图7所示,并且可以由处理器106来执行,如图7所示。
如图7所示,算法开始(702)。访问程序顺序或要执行的操作的序列(704)。通常经由接口来接收或访问指令(706)。
评估指令,以识别(208)组改变指示符或助记符,组改变指示符或助记符作为此指令的一部分,指示操作序列有区别。指示符可以是助记符或“开始/停止”命令或符号。组改变顺序指示符可以是多个指示符中的任一者。组改变指示符可以用于修改存储器操作序列。一个实施例包括作为助记符的指示符,其是命令或元数据。作为另一个实施例,指示符是开始/停止指示符。
具有指示符的指令用于区分存储器对操作的分配。所述分配通常基于助记符或其他标识符。存储器对操作的这种分配通常涉及对操作进行分组,因此,由一个或多个第一操作组成的第一组相对于一个或多个第二操作是不同的。
实际上,作为一个实施例,第二操作可以是开放组,因为这些操作将在第一组中的操作处理之后进行处理。
如果确定(708)指令不包括序列改变指示符,则默认情况下将操作分配给第二组(709),第二组被执行(720)。
当指令包括指示操作序列有区别的助记符时,执行指令(710)。
基于助记符或具有助记符的指令来区分操作的分配(712)。基于区别将操作分离、分开或分组(714)。通常,分离是对未合并的第一组进行的,或对基于助记符按顺序执行的操作进行的。第二组可以是开放组,可以合并。或者,可以通过可能与存储器合并无关的其他处理操作来区分出第一组。
如图7所示,执行被区分为第一组的操作(716)。然后,执行第二组中的操作(720)。
确定是否存在附加操作(722)。如果是(724),则访问操作序列(704)。如果否(726),则算法结束(730)。
可以利用一种或多种计算机可用或计算机可读介质的任何组合。计算机可用或计算机可读介质可以是,例如,但不限于,电子、磁性、光学、电磁、红外或半导体系统、装置、设备或传播介质。计算机可读介质的更具体示例(非详尽列表)将包括:具有一根或多根电线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CDROM)、光学存储设备、传输介质(诸如,支持Internet或Intranet的介质),或磁性存储设备。
计算机可用或计算机可读介质甚至可以是纸张或在其上打印程序的其他合适介质,因为可以经由,例如,对纸张或其他介质进行光学扫描来以电子方式捕获程序,然后根据需要以适当的方式对其进行编译、解读,或以其他方式进行处理,然后将其存储在计算机存储器中。在本文档的上下文中,计算机可用或计算机可读介质可以是可以包含、存储、传达、传播或传输程序以供指令执行系统、装置或设备使用或与其结合使用的任何介质。计算机可用介质可以包括包含有计算机可用程序代码的已传播的数据信号,此数据信号可以在基带中或作为载波的一部分。可以使用任何适当的介质(包括但不限于无线、有线、光缆、RF等)来传输计算机可用程序代码。
可以以一种或多种编程语言的任何组合来编写用于执行本公开的操作的计算机程序代码,所述编程语言包括,诸如,Java、Smalltalk、C++、C#等面向对象的编程语言以及常规的过程编程语言,诸如,“C”编程语言或类似的编程语言。程序代码可以完全在用户的计算机上执行,部分在用户的计算机上作为独立软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以与外部计算机建立连接(例如,通过使用Internet服务提供商的Internet)。
下面参考根据本公开的实施例的方法、装置、系统以及计算机程序产品的流程图图示和/或框图来描述本公开。将理解的是,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以由计算机程序指令来实现。
可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,以生成机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图方框中指定的功能/动作的装置。这些计算机程序指令还可以存储在计算机可读介质中,所述计算机可读介质可以指导计算机或其他可编程数据处理设备以特定方式起作用,使得存储在计算机可读介质中的指令产生制品,所述制品包括指令装置,用于实现流程图和/或框图方框中指定的功能/动作。
所述计算机程序指令还可以被加载到计算机或其他可编程数据处理装置上,以促使一系列操作在计算机或其他可编程装置上执行,以产生计算机实现的过程,从而使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图方框中指定的功能/动作的过程。
如本领域技术人员将理解的,实施例可以被描述为系统、方法或计算机程序产品。因此,本公开可以采用纯硬件实施例、纯软件实施例(包括固件、常驻软件、微代码等)或结合了软件和硬件方面的实施例的形式,这些实施例在本文中一般被称为“电路”、“模块”或“系统”。此外,本公开可以采用包括在任何有形的表达介质中的计算机程序产品的形式,所述介质中包括计算机可用程序代码。
可以看出,本文提出的系统和方法论对现有技术实现了改进。
因此,下文提出了一些公开的实施例:
一个实施例涉及一种方法(“所述方法”),所述方法包括以下步骤:从存储器访问要执行的操作的程序序列;访问一条或多条指令,其中所述一条或多条指令中的一些指令具有相关联的助记符;识别一条或多条具有助记符的指令,所述助记符指示操作的程序序列有区别;执行一条或多条已识别的指令;以及区分存储器对操作的分配,所述分配基于助记符的存在,所述分配表示一个或多个第一操作相对于一个或多个第二操作的第一分组,所述第一分组与所述一个或多个第二操作有区别。
所述方法还包括基于助记符为选定的操作分配元数据标签。
所述方法,其中元数据标签确定操作的序列。
所述方法,其中元数据标签指示在操作分配上有区别。
所述方法,其中元数据标签包括阶段颜色。
所述方法,其中元数据标签包括排序标签。
所述方法还包括以下步骤:重命名助记符,以使后续操作具有不同的元数据标签;和基于元数据标签来合并操作。
所述方法,其中助记符包括整数。
所述方法,其中接收一条或多条指令包括经由接口接收指令。
所述方法还包括修改与一条或多条后续指令或操作相关联的助记符。
所述方法还包括:在执行前一条指令之后执行具有助记符的一个或多个操作;和在执行具有助记符的指令之前,合并一个或多个操作。
所述方法,其中,选定的操作独立于助记符来执行。
所述方法还包括基于匹配的助记符来合并存储器操作。
所述方法还包括基于独立于助记符的已识别指令来合并操作。
另一个实施例涉及一种方法,所述方法包括以下步骤:接收区分存储器访问的第一指令;访问第二指令,所述第二指令访问输入地址;将第一元数据值与第一指令相关联;通过向每个存储器操作分配第一元数据值来实现第一指令;使计数器递增,使得后续的存储器操作被分配第二元数据值;将第二元数据值应用于下一解码阶段;将第一元数据值与第二元数据值进行比较,使得:当第一元数据值与第二元数据值匹配时,将相关联的操作与匹配的元数据值分组;以及当第一元数据值与第二元数据值不同时,将相关联的操作与不匹配的元数据值分组。
如上所述的方法,其中第二指令提供对具有兼容元数据的存储器操作的访问。
如上所述的方法,其中第一指令被分配了执行状态,所述执行状态独立于执行但是随其他指令的分组而变化。
如上所述的方法,其中第一指令控制第一指令之前的存储器访问和第一指令之后的存储器访问。
一种装置,包括:存储器;和处理器,耦合到所述存储器,以执行存储在所述存储器中的指令,所述指令包括:从存储器访问要执行的操作的程序序列;访问一条或多条指令,其中所述一条或多条指令中的一些指令具有相关联的助记符;识别一条或多条具有助记符的指令,所述助记符指示操作的程序序列有区别;执行一条或多条已识别的指令;以及区分存储器对操作的分配,所述分配基于助记符的存在,所述分配表示一个或多个第一操作相对于一个或多个第二操作的第一分组,所述第一分组与所述一个或多个第二操作有区别。
已经通过举例而非限制的方式呈现了已经在本文中详细描述的各种代表性实施例。本领域技术人员将理解,可以对所述实施例的形式和细节进行各种更改,从而使等同的实施例仍在所附权利要求书的范围内。

Claims (19)

1.一种方法,包括:
从存储器访问要执行的操作的程序序列;
访问一条或多条指令,其中,所述一条或多条指令中的一些指令具有相关联的助记符;
识别一条或多条具有助记符的指令,所述助记符指示所述操作的程序序列有区别;
执行一条或多条已识别的指令;以及
区分所述存储器对操作的分配,所述分配基于所述助记符的存在,所述分配相对于一个或多个第二操作来标记一个或多个第一操作的第一分组,所述第一分组与所述一个或多个第二操作有区别。
2.根据权利要求1所述的方法,还包括:
基于所述助记符为选定的操作分配元数据标签。
3.根据权利要求2所述的方法,其中,所述元数据标签确定所述操作的序列。
4.根据权利要求2或3所述的方法,其中,所述元数据标签指示在所述操作的分配上有区别。
5.根据权利要求2至4中的任一项所述的方法,其中,所述元数据标签包括阶段颜色。
6.根据权利要求2至5中的任一项所述的方法,其中,所述元数据标签包括排序标签。
7.根据前述权利要求中的任一项所述的方法,还包括:
重命名所述助记符,以使后续操作具有不同的元数据标签;以及
基于所述元数据标签来合并操作。
8.根据前述权利要求中的任一项所述的方法,其中,所述助记符包括整数。
9.根据前述权利要求中的任一项所述的方法,其中,接收一条或多条指令包括经由接口接收指令。
10.根据前述权利要求中的任一项所述的方法,还包括:
修改与一个或多个后续指令或操作相关联的助记符。
11.根据前述权利要求中的任一项所述的方法,还包括:
在执行前一条指令之后执行具有助记符的一个或多个操作;以及
在执行具有助记符的指令之前,合并一个或多个操作。
12.根据前述权利要求中的任一项所述的方法,其中,选定的操作独立于所述助记符来执行。
13.根据前述权利要求中的任一项所述的方法,还包括:
基于匹配的助记符来合并存储器操作。
14.根据权利要求1至12中的任一项所述的方法,还包括:
基于独立于助记符的已识别指令来合并操作。
15.一种方法,包括:
接收区分存储器访问的第一指令;
接收访问输入地址的第二指令;
将第一元数据值与所述第一指令相关联;
通过向每个存储器操作分配第一元数据值来实现所述第一指令;
使计数器递增,使得后续的存储器操作被分配第二元数据值;
将所述第二元数据值应用于下一解码阶段;
将第一元数据值与第二元数据值进行比较,使得:
当所述第一元数据值与所述第二元数据值匹配时,将所关联的操作与匹配的元数据值分组;以及
当所述第一元数据值与所述第二元数据值不同时,将所关联的操作与不匹配的元数据值分组。
16.根据权利要求15所述的方法,其中,所述第二指令提供对具有兼容元数据的存储器操作的访问。
17.根据权利要求15或16所述的方法,其中,所述第一指令被分配了执行状态,所述执行状态独立于执行但是随其他指令的分组而变化。
18.根据权利要求15至17中的任一项所述的方法,其中,所述第一指令控制所述第一指令之前的存储器访问和所述第一指令之后的存储器访问。
19.一种装置,包括:
存储器;和
处理器,耦合到所述存储器,所述处理器执行存储在所述存储器中的指令,所述指令包括:
从存储器访问要执行的操作的程序序列;
访问一条或多条指令,其中,所述一条或多条指令中的一些指令具有相关联的助记符;
识别一条或多条具有助记符的指令,所述助记符指示所述操作的程序序列有区别;
执行一条或多条已识别的指令;以及
区分所述存储器对操作的分配,所述分配基于所述助记符的存在,所述分配相对于一个或多个第二操作来标记一个或多个第一操作的第一分组,所述第一分组与所述一个或多个第二操作有区别。
CN201980053058.3A 2018-08-16 2019-08-06 用于执行指令的系统、方法和装置 Pending CN112567340A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/103,995 2018-08-16
US16/103,995 US11409530B2 (en) 2018-08-16 2018-08-16 System, method and apparatus for executing instructions
PCT/GB2019/052205 WO2020035659A1 (en) 2018-08-16 2019-08-06 System, method and apparatus for executing instructions

Publications (1)

Publication Number Publication Date
CN112567340A true CN112567340A (zh) 2021-03-26

Family

ID=67659899

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980053058.3A Pending CN112567340A (zh) 2018-08-16 2019-08-06 用于执行指令的系统、方法和装置

Country Status (7)

Country Link
US (1) US11409530B2 (zh)
EP (1) EP3837600A1 (zh)
JP (1) JP7410126B2 (zh)
KR (1) KR20210033501A (zh)
CN (1) CN112567340A (zh)
IL (1) IL280585A (zh)
WO (1) WO2020035659A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008027341A (ja) * 2006-07-25 2008-02-07 Matsushita Electric Ind Co Ltd 命令セットおよび情報処理装置
JP2014063385A (ja) * 2012-09-21 2014-04-10 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
CN104778030A (zh) * 2013-12-20 2015-07-15 想象技术有限公司 具有虚拟化指令集架构的处理器和方法
CN107347253A (zh) * 2015-02-25 2017-11-14 米雷普里卡技术有限责任公司 用于专用处理器的硬件指令生成单元

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3205406B2 (ja) * 1992-11-10 2001-09-04 富士通株式会社 参照対象変数決定処理方法および翻訳処理システム
US6038646A (en) * 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
US6711670B1 (en) * 1999-10-14 2004-03-23 Hewlett-Packard Development Company, L.P. System and method for detecting data hazards within an instruction group of a compiled computer program
JP3629551B2 (ja) * 2000-01-06 2005-03-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 基本キャッシュ・ブロックを利用したマイクロプロセッサ
US6813704B1 (en) * 2001-12-20 2004-11-02 Lsi Logic Corporation Changing instruction order by reassigning only tags in order tag field in instruction queue
US7552317B2 (en) * 2004-05-04 2009-06-23 Sun Microsystems, Inc. Methods and systems for grouping instructions using memory barrier instructions
US7793080B2 (en) * 2007-12-31 2010-09-07 Globalfoundries Inc. Processing pipeline having parallel dispatch and method thereof
US8997103B2 (en) * 2009-09-25 2015-03-31 Nvidia Corporation N-way memory barrier operation coalescing
US20120216020A1 (en) * 2011-02-21 2012-08-23 Olson Christopher H Instruction support for performing stream cipher
US9582276B2 (en) * 2012-09-27 2017-02-28 Apple Inc. Processor and method for implementing barrier operation using speculative and architectural color values
US10255075B2 (en) * 2013-07-18 2019-04-09 Nvidia Corporation System, method, and computer program product for managing out-of-order execution of program instructions
US9292337B2 (en) * 2013-12-12 2016-03-22 International Business Machines Corporation Software enabled and disabled coalescing of memory transactions
US10671393B2 (en) 2015-04-24 2020-06-02 International Business Machines Corporation Techniques for facilitating cracking and fusion within a same instruction group
US20180069767A1 (en) * 2016-09-06 2018-03-08 Advanced Micro Devices, Inc. Preserving quality of service constraints in heterogeneous processing systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008027341A (ja) * 2006-07-25 2008-02-07 Matsushita Electric Ind Co Ltd 命令セットおよび情報処理装置
JP2014063385A (ja) * 2012-09-21 2014-04-10 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
CN104778030A (zh) * 2013-12-20 2015-07-15 想象技术有限公司 具有虚拟化指令集架构的处理器和方法
CN107347253A (zh) * 2015-02-25 2017-11-14 米雷普里卡技术有限责任公司 用于专用处理器的硬件指令生成单元

Also Published As

Publication number Publication date
US11409530B2 (en) 2022-08-09
JP7410126B2 (ja) 2024-01-09
KR20210033501A (ko) 2021-03-26
EP3837600A1 (en) 2021-06-23
JP2021535471A (ja) 2021-12-16
IL280585A (en) 2021-03-25
WO2020035659A1 (en) 2020-02-20
US20200057640A1 (en) 2020-02-20

Similar Documents

Publication Publication Date Title
US10515049B1 (en) Memory circuits and methods for distributed memory hazard detection and error recovery
US8904153B2 (en) Vector loads with multiple vector elements from a same cache line in a scattered load operation
KR102074961B1 (ko) 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치
CN111868702A (zh) 用于可配置空间加速器中的远程存储器访问的装置、方法和系统
US7458069B2 (en) System and method for fusing instructions
TW565778B (en) A general and efficient method for transforming predicated execution to static speculation
US20120060016A1 (en) Vector Loads from Scattered Memory Locations
WO2020005444A1 (en) Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US20110185158A1 (en) History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
CN102890624B (zh) 用于管理无序毫码控制操作的方法和系统
CN105468336A (zh) 用以改善在处理器中重新执行加载的装置与方法
CN105573721A (zh) 用以改善在处理器中重新执行加载的装置与方法
US9727340B2 (en) Hybrid tag scheduler to broadcast scheduler entry tags for picked instructions
US6883089B2 (en) Method and apparatus for processing a predicated instruction using limited predicate slip
EP3871081A1 (en) Register renaming-based techniques for block-based processors
US9959122B2 (en) Single cycle instruction pipeline scheduling
JP7410126B2 (ja) 命令を実行するためのシステム、方法、および装置
CN105573714A (zh) 用以改善在处理器中重新执行加载的装置与方法
CN105573720A (zh) 用以改善在处理器中重新执行加载的装置与方法
US20050066151A1 (en) Method and apparatus for handling predicated instructions in an out-of-order processor
US6668306B2 (en) Non-vital loads
CN105573784A (zh) 用以改善在处理器中重新执行加载的装置与方法
CN105549953A (zh) 用以改善在处理器中重新执行加载的装置与方法
US10552156B2 (en) Processing operation issue control
CN105511842A (zh) 用以改善在处理器中重新执行加载的装置与方法

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