CN110249308A - 待决加载和存储的单独跟踪 - Google Patents

待决加载和存储的单独跟踪 Download PDF

Info

Publication number
CN110249308A
CN110249308A CN201880009818.6A CN201880009818A CN110249308A CN 110249308 A CN110249308 A CN 110249308A CN 201880009818 A CN201880009818 A CN 201880009818A CN 110249308 A CN110249308 A CN 110249308A
Authority
CN
China
Prior art keywords
counter
instruction
execution unit
response
memory sub
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
CN201880009818.6A
Other languages
English (en)
Inventor
马克·福勒
布莱恩·D·恩贝林
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN110249308A publication Critical patent/CN110249308A/zh
Pending legal-status Critical Current

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/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control 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 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/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

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

Abstract

本文公开了用于维持单独的待决加载计数器和存储计数器的系统、设备和方法。在一个实施方案中,一种系统包括至少一个执行单元、存储器子系统和针对每个执行线程的一对计数器。在一个实施方案中,所述系统实现用于管理指令之间的依赖性的基于软件的方法。在一个实施方案中,所述一个或多个执行单元维持计数器以支持所述用于管理指令之间的依赖性的基于软件的方法。所述一个或多个执行单元被配置为执行用于在运行时间期间管理所述依赖性的指令。在一个实施方案中,所述一个或多个执行单元执行等待指令以进行等待,直到给定计数器等于指定值,之后继续执行指令序列。

Description

待决加载和存储的单独跟踪
背景技术
相关技术的描述
处理器包括对加载存储器操作和存储存储器操作的支持,以用于促进处理器与处理器耦合到的存储器之间的数据传送。一般而言,加载存储器操作是指定将数据从存储器位置传送到处理器的操作。存储器位置是指存储器层级中的位置,其中存储器层级包括一个或多个级别的高速缓存和/或一个或多个级别的存储器。存储存储器操作是指定将数据从处理器传送到存储器层级中的位置的操作。
如本文所用的,术语“指令”是指指示有待由处理器执行的一个或多个操作的信息。“操作”可包括处理元件(例如,基于“空操作”或“无操作”指令或条件为假的条件指令)在给定处理周期期间不进行任何操作。指令可由给定指令集架构(ISA)定义。指令还可由微架构定义,而不是绑定到特定ISA。例如,ISA指令可被解码成一个或多个微操作,所述一个或多个微操作在它们指定有待由处理器执行的操作时也可以称为“指令”。因此,“存储指令”可能由ISA定义或可能不由ISA定义。存储指令包括指示有待执行的存储操作的信息,并且通常包括指示存储的目标存储器位置的信息。
在各种实现方式中,加载存储器操作和存储存储器操作可以是包括存储器操作的指令的隐式部分,或者可以是显式指令。“加载存储器操作”在本文中也称为“加载指令”或“加载操作”。类似地,“存储存储器操作”在本文中也称为“存储指令”或“存储操作”。应注意,术语“加载操作”或“存储操作”也可以指“原子操作”。原子操作执行来自寄存器位置的数据与来自存储器位置的数据的算术组合。还应注意,术语“加载操作”还可用于指“取样操作”。在从存储器位置读取数据值之后,取样操作使用取样器常量对数据值进行过滤。
许多加载和存储操作依赖于其他操作,尤其是在多线程共享数据时的多线程编程环境中。基于依赖性何时被解析来确定何时执行这些加载和存储可能具有挑战性。
附图说明
通过结合附图参见以下描述,可以更好地理解本文所述的方法和机制的优点,在附图中:
图1是计算系统的一个实施方案的框图。
图2是执行单元的一个实施方案的框图。
图3是软件环境的一个实施方案的框图。
图4是示出用于实现基于软件的方法的方法的一个实施方案的概括性流程图,所述基于软件的方法用于管理指令之间的依赖性。
图5是示出用于管理待决加载计数器和存储计数器的方法的一个实施方案的概括性流程图。
图6是示出用于单独地跟踪待决加载操作和存储操作的方法的一个实施方案的概括性流程图。
图7是示出用于实现等待指令的方法的一个实施方案的概括性流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对本文所提出的方法和机制的全面理解。然而,本领域普通技术人员应当认识到,各种实施方案可以在没有这些具体细节的情况下实践。在一些情况下,没有详细示出众所周知的结构、部件、信号、计算机程序指令和技术以避免模糊本文所描述的方法。应当了解,为了简单和清楚说明起见,图中示出的元件不一定按比例绘制。例如,一些元件的尺寸可以相对于其他元件放大。
本文公开了用于维持单独的待决加载计数器和存储计数器的系统、设备和方法。在一个实施方案中,一种系统包括至少一个执行单元、存储器子系统和针对每个执行线程的一对计数器。在一个实施方案中,所述系统实现用于管理指令之间的依赖性的基于软件的方法。在一个实施方案中,所述系统维持计数器以支持用于管理指令之间的依赖性的基于软件的方法。所述系统被配置为执行指令,所述指令用于通过引用所述计数器的值来在运行时间期间管理依赖性。
在一个实施方案中,所述系统被配置为响应于检测到第一线程的加载指令正在执行而使第一执行单元的第一计数器递增。所述系统还被配置为响应于确定已从所述存储器子系统检索到所述加载指令的数据而使所述第一计数器递减。另外,所述系统被配置为响应于检测到所述第一线程的存储指令正在执行而使所述第一执行单元的第二计数器递增。此外,所述系统被配置为响应于从所述存储器子系统接收到所述存储指令已经完成的确认而使所述第二计数器递减。当所述存储指令的数据被写入所述存储器子系统时并且当所述数据对其他线程可见时,所述存储指令已经完成。所述第一执行单元被配置为执行等待指令以进行等待,直到给定计数器等于给定值,其中所述给定值在所述等待指令中指定。
现参见图1,示出了计算系统100的一个实施方案的框图。在一个实施方案中,计算系统100包括耦合到存储器150的片上系统(SoC)105。SoC 105也可称为集成电路(IC)。在一个实施方案中,SoC 105包括中央处理单元(CPU)165的处理单元175A至175N、输入/输出(I/O)接口155、高速缓存160A至160B、结构120、图形处理单元(GPU)130、本地存储器110和一个或多个存储器控制器140。SoC 105还可包括未在图1中示出以避免模糊附图的其他部件。处理单元175A至175N表示任何数量和类型的处理单元。在一个实施方案中,处理单元175A至175N是CPU核心。在另一实施方案中,处理单元175A至175N中的一个或多个是其他类型的处理单元(例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP))。CPU 165的处理单元175A至175N耦合到高速缓存160A至160B和结构120。
在一个实施方案中,处理单元175A至175N被配置为执行特定指令集架构(ISA)的指令。每个处理单元175A至175N包括一个或多个执行单元、高速缓存存储器、调度器、分支预测电路等等。在一个实施方案中,处理单元175A至175N被配置为执行系统100的主控制软件(诸如操作系统)。通常,处理单元175A至175N在使用期间执行的软件可控制系统100的其他部件以实现系统100的期望的功能。处理单元175A至175N还可以执行其他软件(诸如应用程序)。
GPU 130至少包括计数器135和计算单元145A至145N,所述计算单元145A至145N表示用于图形或通用处理的任何数量和类型的计算单元。每个计算单元145A至145N包括任何数量的执行单元,并且每个计算单元的执行单元的数量根据实施方案而变化。GPU 130耦合到本地存储器110和结构120。在一个实施方案中,使用高带宽存储器(HBM)来实现本地存储器110。在一个实施方案中,GPU 130被配置为执行图形管线操作,诸如绘制命令、像素操作、几何计算以及用于将图像渲染到显示器的其他操作。在另一个实施方案中,GPU130被配置为执行与图形无关的操作。在另一个实施方案中,GPU 130被配置为执行图形操作和非图形相关操作。
在一个实施方案中,GPU 130利用计数器135来实现用于管理指令之间的依赖性的基于软件的方法。GPU 130的计算单元145被配置为执行用于在运行时间期间管理依赖性的指令。在一个实施方案中,GPU 130的计算单元145执行等待指令以进行等待,直到给定计数器等于指定值,之后继续执行指令序列。
在一个实施方案中,GPU 130被配置为响应于检测到第一线程的加载指令正在执行而使计数器135中的第一计数器递增。GPU 130还被配置为响应于确定已从存储器子系统检索到加载指令的数据而使第一计数器递减。另外,GPU 130被配置为响应于检测到第一线程的存储指令正在执行而使计数器135中的第二计数器递增。此外,GPU130被配置为响应于从高速缓存或存储器接收到存储指令已经完成的确认而使第二计数器递减。当存储指令的数据被写入高速缓存或存储器时并且当数据对其他线程可见时,存储指令已经完成。GPU130被配置为执行等待指令以进行等待,直到给定计数器等于给定值,其中所述给定值在所述等待指令中指定。
I/O接口155耦合到结构120,并且I/O接口155表示任何数量和类型的接口(例如,外围部件互连(PCI)总线、PCI扩展(PCI-X)、PCIE(PCI高速)总线、千兆以太网(GBE)总线、通用串行总线(USB))。各种类型的外围装置可耦合到I/O接口155。这类外围装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录装置、外部存储装置、网络接口卡等。
SoC 105耦合到存储器150,所述存储器150包括一个或多个存储器模块。存储器模块中的每一个包括安装在其上的一个或多个存储器装置。在一些实施方案中,存储器150包括安装在母板或其他载体上的一个或多个存储器装置,SoC 105也安装在所述母板或其他载体上。在一个实施方案中,存储器150用于实现在操作期间与SoC 105一起使用的随机存取存储器(RAM)。实现的RAM可以是静态RAM(SRAM)、动态RAM(DRAM)、电阻式RAM(ReRAM)、相变RAM(PCRAM)或任何其他易失性或非易失性RAM。用于实现存储器150的DRAM的类型包括(但不限于)双倍数据速率(DDR)DRAM、DDR2DRAM、DDR3DRAM等。尽管未在图1中明确示出,但是SoC 105还可包括处理单元175A至175N和/或计算单元145A至145N内部的一个或多个高速缓存存储器。在一些实施方案中,SoC 105包括由处理单元175A至175N利用的高速缓存160A至160B。在一个实施方案中,高速缓存160A至160B是包括高速缓存控制器的高速缓存子系统的一部分。
在各种实施方案中,计算系统100可以是计算机、膝上型计算机、移动装置、服务器或各种其他类型的计算系统或装置中的任何一种。应注意,计算系统100和/或SoC 105的部件数量可以根据实施方案而变化。可以存在比图1所示的数量更多或更少的每种部件/子部件。例如,在另一个实施方案中,SoC 105可包括耦合到多个存储器的多个存储器控制器。还应注意,计算系统100和/或SoC 105可包括未在图1中示出的其他部件。另外,在其他实施方案中,计算系统100和SoC 105可以除图1中所示之外的其他方式构造。
现转向图2,示出了执行单元205的一个实施方案的框图。在一个实施方案中,执行单元205至少包括控制逻辑220、加载计数器225和存储计数器230。在一个实施方案中,可以在(图1的)计算单元145A至145N中的每一个内实现多个执行单元205。应注意,术语“加载计数器”也可以称为“矢量存储器加载计数器”。类似地,术语“存储计数器”也可以称为“矢量存储器存储计数器”。还应注意,执行单元205为每个执行线程维持单独的一对加载计数器和存储计数器。
执行单元205耦合到存储器子系统210,其中存储器子系统210包括任何数量和类型的高速缓存和/或存储器装置。例如,在一个实施方案中,存储器子系统210包括一级(L1)高速缓存、二级(L2)高速缓存和系统存储器。在其他实施方案中,存储器子系统210可包括其他数量的高速缓存级别和/或其他类型的存储器。
在一个实施方案中,当执行单元205执行加载指令时,执行单元205使加载计数器225递增。当加载指令的数据从存储器子系统210检索到并且在执行单元205内可用时,那么执行单元205使加载计数器225递减。当执行单元205执行存储指令时,执行单元205使存储计数器230递增。当执行单元205从存储器子系统210接收到存储指令已经完成的确认时,那么执行单元205使存储计数器230递减。执行单元205被配置为执行等待指令,所述等待指令指定等待执行后续指令,直到指定计数器等于给定值。例如,在一个实施方案中,等待指令指定进行等待,直到加载计数器225等于零。等待指令还可指定执行单元205进行等待,直到指定的计数器等于非零值。
现在参见图3,示出了软件环境300的一个实施方案的框图。在一个实施方案中,软件环境300用来生成可在计算系统(例如,图1的计算系统100)上执行的可执行代码315。编译器310被配置为接收源代码305并且将源代码305编译成可执行代码315。当编译器310对源代码305执行优化时,编译器310具有将多种等待指令插入可执行代码315中的灵活性。
在一个实施方案中,编译器310在可执行代码315中插入等待指令以在多线程执行环境中管理指令之间的软件依赖性。当编译器310将给定的等待指令插入可执行代码315中时,给定的等待指令识别用于给定线程的对应的加载计数器或存储计数器。等待指令还识别在允许执行继续之前要等待的值。例如,在一个实施方案中,等待指令可指定要等待的非零计数值,并且当指定的计数器达到指定的非零计数值时,可执行来自指令序列的后续指令。
现转向图4,示出了用于实现基于软件的方法的方法400的一个实施方案,所述基于软件的方法用于管理指令之间的依赖性。出于论述的目的,此实施方案中的步骤和图5至图7的那些步骤按相继顺序示出。然而,应注意,在所描述的方法的各种实施方案中,所描述要素中的一者或多者可以同时执行,以与所示不同的顺序执行,或者可以被完全省略。也根据需要执行其他另外的要素。任何本文描述的各种系统或设备均被配置为实现方法400。
系统实现用于管理指令之间的依赖性的基于软件的方法(框405)。在一个实施方案中,系统(例如,图1的系统100)包括至少一个执行单元和存储器子系统。根据实施方案,系统还可包括任何数量的其他部件。系统维持多个计数器以支持用于管理指令之间的依赖性的基于软件的方法(框410)。在一个实施方案中,系统为每个执行线程维持一对计数器,其中第一计数器跟踪多个待决存储指令,并且第二计数器跟踪多个待决加载指令。系统的一个或多个执行单元被配置为执行指令,以用于通过引用计数器的值来在运行时间期间管理依赖性(框415)。在框415之后,方法400结束。
现参见图5,示出了用于管理待决加载计数器和存储计数器的方法500的一个实施方案。系统被配置为响应于检测到第一线程的加载指令正在执行而使第一执行单元的第一计数器递增(框505)。此外,系统被配置为响应于确定已从存储器子系统检索到加载指令所针对的数据而使第一计数器递减(框510)。另外,系统被配置为响应于检测到第一线程的存储指令正在执行而使第一执行单元的第二计数器递增(框515)。更进一步地,系统被配置为响应于从存储器子系统接收到存储指令已经完成的确认而使第二计数器递减(框520)。此外,系统被配置为执行等待指令以使第一执行单元停止,直到第一计数器或第二计数器等于给定值(框525)。在框525之后,方法500结束。
现转向图6,示出了用于单独地跟踪待决加载指令和存储指令的方法600的一个实施方案。执行单元启动执行指令序列(框605)。在一个实施方案中,执行单元执行交织了存储指令和加载指令的多线程指令序列。如果执行单元检测到加载指令正在执行(条件框610,“是”分支),那么执行单元使待决加载计数器递增(框615)。如果执行单元检测到存储指令正在执行(条件框620,“是”分支),那么执行单元使待决存储计数器递增(框625)。此外,如果执行单元接收到已从存储器子系统检索到待决加载指令的数据的指示(条件框630,“是”分支),那么执行单元使待决加载计数器递减(框635)。另外,如果执行单元从存储器子系统接收到存储指令已经完成的确认(条件框640,“是”分支),那么执行单元使待决存储计数器递减(框645)。在框645之后,方法600返回至框610。
现参见图7,示出了用于实现等待指令的方法700的一个实施方案。处理器检测指令序列中的等待指令,其中等待指令针对给定计数器(例如,加载计数器、存储计数器)指定给定值(框705)。接着,处理器执行等待指令(框710)。如果给定计数器已经达到给定值(条件框715,“是”分支),那么处理器执行指令序列中的后续指令(框720)。在框720之后,方法700结束。如果给定计数器尚未达到给定值(条件框715,“否”分支),那么阻止处理器执行指令序列中的后续指令(框725)。在一个实施方案中,在框725中,仅阻止处理器执行某些类型的指令(例如,加载指令、存储指令)。在框725之后,方法700返回至条件框715。
在各种实施方案中,软件应用的程序指令被用于实现先前描述的方法和/或机制。程序指令描述了高级编程语言(诸如C)中的硬件的行为。可替代地,使用硬件设计语言(HDL),诸如Verilog。程序指令存储在非暂时性计算机可读存储介质上。许多类型的存储介质是可用的。存储介质可在使用期间由计算系统访问,以向计算系统提供程序指令和随附数据以进行程序执行。计算系统至少包括一个或多个存储器以及被配置为执行程序指令的一个或多个处理器。
应当强调,上述实施方案仅是实现方式的非限制性实例。一旦完全了解了上述公开内容,许多变化和修改对于本领域技术人员来说将变得明显。意图将以下权利要求解释为涵盖全部这类变化和修改。

Claims (20)

1.一种系统,其包括:
存储器子系统;
一个或多个执行单元,其中所述一个或多个执行单元中的第一执行单元包括第一计数器和第二计数器;
其中所述系统被配置为:
响应于检测到第一线程的加载指令正在执行而使所述第一计数器递增;
响应于确定已从所述存储器子系统检索到所述加载指令所针对的数据而使所述第一计数器递减;
响应于检测到所述第一线程的存储指令正在执行而使所述第二计数器递增;并且
响应于从所述存储器子系统接收到所述存储指令已经完成的确认而使所述第二计数器递减。
2.如权利要求1所述的系统,其中所述第一执行单元被配置为执行等待指令以进行等待,直到给定计数器等于给定值,其中所述给定值在所述等待指令中指定。
3.如权利要求2所述的系统,其中所述给定计数器是所述第一计数器。
4.如权利要求2所述的系统,其中所述给定值是零。
5.如权利要求2所述的系统,其中所述给定值是非零值。
6.如权利要求1所述的系统,其中当所述存储指令的数据被写入所述存储器子系统时并且当所述数据对其他线程可见时,所述存储指令已经完成。
7.如权利要求1所述的系统,其中所述系统针对每个执行线程包括一对计数器。
8.一种方法,其包括:
响应于检测到第一线程的加载指令正在执行而使第一执行单元的第一计数器递增;
响应于确定已从存储器子系统检索到所述加载指令所针对的数据而使所述第一计数器递减;
响应于检测到所述第一线程的存储指令正在执行而使所述第一执行单元的第二计数器递增;以及
响应于从所述存储器子系统接收到所述存储指令已经完成的确认而使所述第二计数器递减。
9.如权利要求8所述的方法,其还包括:执行等待指令以进行等待,直到给定计数器等于给定值,其中所述给定值在所述等待指令中指定。
10.如权利要求9所述的方法,其中所述给定计数器是所述第一计数器。
11.如权利要求9所述的方法,其中所述给定值是零。
12.如权利要求9所述的方法,其中所述给定值是非零值。
13.如权利要求8所述的方法,其中当所述存储指令的数据被写入所述存储器子系统时并且当所述数据对其他线程可见时,所述存储指令已经完成。
14.如权利要求8所述的方法,其还包括:为每个执行线程维持一对计数器。
15.一种设备,其包括:
存储器子系统;以及
执行单元,所述执行单元包括第一计数器和第二计数器;
其中所述执行单元被配置为:
响应于检测到第一线程的加载指令正在执行而使所述第一计数器递增;
响应于确定已从存储器子系统检索到所述加载指令所针对的数据而使所述第一计数器递减;
响应于检测到所述第一线程的存储指令正在执行而使所述第二计数器递增;并且
响应于从所述存储器子系统接收到所述存储指令已经完成的确认而使所述第二计数器递减。
16.如权利要求15所述的设备,其中所述执行单元被配置为执行等待指令以进行等待,直到给定计数器等于给定值,其中所述给定值在所述等待指令中指定。
17.如权利要求16所述的设备,其中所述给定计数器是所述第一计数器。
18.如权利要求16所述的设备,其中所述给定值是零。
19.如权利要求16所述的设备,其中所述给定值是非零值。
20.如权利要求15所述的设备,其中当所述存储指令的数据被写入所述存储器子系统时并且当所述数据对其他线程可见时,所述存储指令已经完成。
CN201880009818.6A 2017-02-24 2018-02-23 待决加载和存储的单独跟踪 Pending CN110249308A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/442,412 2017-02-24
US15/442,412 US11074075B2 (en) 2017-02-24 2017-02-24 Wait instruction for preventing execution of one or more instructions until a load counter or store counter reaches a specified value
EP17159096.1A EP3367235B1 (en) 2017-02-24 2017-03-03 Separate tracking of pending loads and stores
EP17159096.1 2017-03-03
PCT/US2018/019517 WO2018156951A1 (en) 2017-02-24 2018-02-23 Separate tracking of pending loads and stores

Publications (1)

Publication Number Publication Date
CN110249308A true CN110249308A (zh) 2019-09-17

Family

ID=58227989

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880009818.6A Pending CN110249308A (zh) 2017-02-24 2018-02-23 待决加载和存储的单独跟踪

Country Status (6)

Country Link
US (1) US11074075B2 (zh)
EP (1) EP3367235B1 (zh)
JP (1) JP7092783B2 (zh)
KR (1) KR102515106B1 (zh)
CN (1) CN110249308A (zh)
WO (1) WO2018156951A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11327759B2 (en) * 2018-09-25 2022-05-10 Marvell Asia Pte, Ltd. Managing low-level instructions and core interactions in multi-core processors

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008117008A1 (en) * 2007-03-26 2008-10-02 Imagination Technologies Limited Processing long-latency instructions in a pipelined processor
US20140181349A1 (en) * 2012-12-21 2014-06-26 Apple Inc. Per-source ordering
US20150220341A1 (en) * 2014-02-03 2015-08-06 Nvidia Corporation System, method, and computer program product for implementing software-based scoreboarding

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6073159A (en) 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US5961630A (en) * 1997-12-30 1999-10-05 Intel Corporation Method and apparatus for handling dynamic structural hazards and exceptions by using post-ready latency
US6473832B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Load/store unit having pre-cache and post-cache queues for low latency load memory operations
US6481251B1 (en) 1999-10-25 2002-11-19 Advanced Micro Devices, Inc. Store queue number assignment and tracking
US6978360B2 (en) * 2001-05-11 2005-12-20 International Business Machines Corporation Scalable processor
US7409500B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Systems and methods for employing speculative fills
US8291431B2 (en) 2006-08-29 2012-10-16 Qualcomm Incorporated Dependent instruction thread scheduling
US7877559B2 (en) 2007-11-26 2011-01-25 Globalfoundries Inc. Mechanism to accelerate removal of store operations from a queue
US7941584B2 (en) * 2009-03-26 2011-05-10 Arm Limited Data processing apparatus and method for performing hazard detection
US9280343B2 (en) * 2009-08-10 2016-03-08 Oracle America, Inc. Store queue with token to facilitate efficient thread synchronization
US8127057B2 (en) 2009-08-13 2012-02-28 Advanced Micro Devices, Inc. Multi-level buffering of transactional data
US8966457B2 (en) * 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
US9535695B2 (en) 2013-01-25 2017-01-03 Apple Inc. Completing load and store instructions in a weakly-ordered memory model
US9569362B2 (en) * 2014-11-13 2017-02-14 Cavium, Inc. Programmable ordering and prefetch

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008117008A1 (en) * 2007-03-26 2008-10-02 Imagination Technologies Limited Processing long-latency instructions in a pipelined processor
US20140181349A1 (en) * 2012-12-21 2014-06-26 Apple Inc. Per-source ordering
US20150220341A1 (en) * 2014-02-03 2015-08-06 Nvidia Corporation System, method, and computer program product for implementing software-based scoreboarding

Also Published As

Publication number Publication date
WO2018156951A1 (en) 2018-08-30
EP3367235B1 (en) 2019-06-26
KR102515106B1 (ko) 2023-03-28
KR20190116260A (ko) 2019-10-14
US20180246724A1 (en) 2018-08-30
EP3367235A1 (en) 2018-08-29
JP2020523652A (ja) 2020-08-06
JP7092783B2 (ja) 2022-06-28
US11074075B2 (en) 2021-07-27

Similar Documents

Publication Publication Date Title
US10860326B2 (en) Multi-threaded instruction buffer design
US10877757B2 (en) Binding constants at runtime for improved resource utilization
CA2706737C (en) A multi-reader, multi-writer lock-free ring buffer
JP2020522797A (ja) Gpuタスクスケジューリングの継続分析タスク
EP3557434A1 (en) Computational resource pipelining in general purpose graphics processing unit
US9395997B2 (en) Request coalescing for instruction streams
US8195858B1 (en) Managing conflicts on shared L2 bus
WO2023173642A1 (zh) 指令调度的方法、处理电路和电子设备
US20180349058A1 (en) Buffer-based update of state data
US8656093B1 (en) Supporting late DRAM bank hits
US8624906B2 (en) Method and system for non stalling pipeline instruction fetching from memory
US8321618B1 (en) Managing conflicts on shared L2 bus
CN110249308A (zh) 待决加载和存储的单独跟踪
US11586462B2 (en) Memory access request for a memory protocol
US20200264879A1 (en) Enhanced scalar vector dual pipeline architecture with cross execution
CN111324439A (zh) 用于向量单元的密码引擎和调度方法
CN114218152B (zh) 流处理方法、处理电路和电子设备
EP1195718A2 (en) Parallel pipelined image rendering system
US9189295B2 (en) Generating an ordered sequence in a database system using multiple interleaved caches
KR102199342B1 (ko) 스토어 리플레이 정책
US20230195517A1 (en) Multi-Cycle Scheduler with Speculative Picking of Micro-Operations
US20240107031A1 (en) Methods and apparatus to utilize cache in dynamic image encoding
US20240192994A1 (en) Accelerated draw indirect fetching
CN117632792A (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