CN101506774A - 相依指令线程调度 - Google Patents

相依指令线程调度 Download PDF

Info

Publication number
CN101506774A
CN101506774A CNA2007800316587A CN200780031658A CN101506774A CN 101506774 A CN101506774 A CN 101506774A CN A2007800316587 A CNA2007800316587 A CN A2007800316587A CN 200780031658 A CN200780031658 A CN 200780031658A CN 101506774 A CN101506774 A CN 101506774A
Authority
CN
China
Prior art keywords
thread
data
instruction
unpredictable
context
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
CNA2007800316587A
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.)
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 CN101506774A publication Critical patent/CN101506774A/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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种线程调度器包括用于管理线程的执行的上下文单元,其中每一上下文单元包括加载参考计数器,所述加载参考计数器用于维持指示与特定上下文单元相关联的若干数据请求与若干数据返回之间的差的计数器值。线程上下文单元的上下文控制器经配置以避免在所述计数器值为非零时转发线程的指令且所述指令包括指示所述指令需要由先前指令返回的数据的数据相依性指示符。

Description

相依指令线程调度
技术领域
本发明大体来说涉及图形处理器且更具体来说涉及对具有相依指令的线程的线程调度。
背景技术
经常使用专用处理器来执行与一种类型的应用程序相关的具体功能,以有效且快速地执行与所述应用程序相关的操作。举例来说,图形处理器执行各种图形操作来处理图像数据并再现图像且有效地操纵并显示计算机图形。由于其高度并行的结构,对于各种各样的复杂算法,图形处理器比典型的通用处理器更有效。图形处理器以以下方式来实施若干图形图元操作:使通过主机中央处理单元(CPU)执行所述操作比直接向屏幕呈现所述图形快得多。
为有效地利用专用处理器(例如,图形处理器)中的资源,经常将任务组织为线程,其中可同时或伪同时执行所述线程的执行。由于资源在给定时间通常仅可寻址单个指令,因此使用线程调度器来控制对各种线程的指令的执行的计时且有效地向所述线程分配资源。然而,某些指令需要从具有不可预测的延迟的数据源检索数据。举例来说,由于数据大小或位置,从处理器系统内的某些存储器检索数据可具有不可预测的延迟。具有不可预测的延迟的数据源的另一实例是在图形处理器中返回纹理数据的纹理引擎。由于纹理指令的可变复杂性,不能够预测返回纹理数据所需要的时间。线程的指令可以或可不需要从具有不可预测的延迟的数据源检索数据。在线程的执行期间,相依指令可需要由先前指令获取的数据来执行所述相依指令。当从不可预测延迟数据源获取所述所需数据时,可能无法及时返回所述所需数据来执行所述相依指令。
用于在常规系统中管理线程的一种技术包括在执行特定线程的每一指令之前检查数据可用性。然而,所述方法需要利用资源的复杂检测方案。用于常规系统中的另一技术包括暂停指令,直到完成加载指令,此导致低效率。
因此,需要一种用于有效地管理具有相依指令的线程的执行的线程调度器。
发明内容
一种线程调度器包括用于提交线程的指令供所述线程调度器调度的线程上下文单元,其中每一上下文寄存器包括用于维持指示与特定上下文寄存器相关联的若干数据请求与若干数据返回之间的差的计数器值的加载参考计数器。所述上下文单元的线程上下文控制器经配置以避免在所述计数器值为非零时提交线程的指令且所述指令包括指示所述指令需要由先前指令返回的数据的数据相依性指示符。
附图说明
图1是根据本发明的实例性实施例的线程管理系统的框图。
图2是根据所述实例性实施例的线程控制的状态机图。
图3是根据所述实例性实施例的管理具有相依指令的线程的方法的流程图。
具体实施方式
本文所用措词“实例性”意指“充当实例、示例或例证”。本文说明为“实例性”的任何实施例未必解释为优选或优于其它实施例。
图1是根据本发明的实例性实施例的线程管理系统100的框图。除参照图1所论述的那些以外,线程管理系统100可包括其它过程、实体、引擎及/或功能。可使用硬件、软件及/或固件的任一组合来实施图1中所图解说明的块。此外,可以任何数量的装置、电路或元件来实施图1中所说明的块的功能及操作。可将所述功能块中的两者或更多者集成在单个装置中,且可在若干装置上实施说明为在任一单个装置中执行的功能。线程管理系统100的适合实施方案的实例包括将系统100实施为多线程处理器101的部分。然而,可将所论述的技术应用到用于调度并处理多个线程的各种处理器或计算机系统中的任一者。
在所述实例性实施例中,在多线程处理器101中实施线程调度器102、算术逻辑单元(ALU)106、加载控制器108、指令高速缓存器(未显示)、寄存器堆库(未显示)、常数随机存取存储器(RAM)(未显示)、其它功能。多线程处理器101是经配置以有效地处理特定类型的数据串流的可编程处理器。适合的多线程处理器101的实例包括多线程处理器,所述多线程处理器包括用于有效地处理多媒体数据串流(例如,视频、音频等)的常数数据。所述常数RAM通过改善寄存器库检索效率来支持所述ALU。指令高速缓存器存储线程的指令以向线程调度器102提供指令。在线程调度器102的控制下,加载控制器108用来自存储器128的指令加载指令高速缓存器且用来自存储器128及/或纹理引擎130的数据加载所述常数RAM及所述寄存器堆库。所述指令指示针对每一线程将要执行的具体操作。适合操作的实例包括算术操作、初等函数及存储器存取操作。
所述常数RAM存储由ALU 106使用的常数值。所述寄存器堆库可存储临时结果以及线程的来自ALU 106的最终结果。输出接口(未显示)从寄存器堆库接收已执行线程的最终结果且将所述结果提供到对应的应用程序。
线程管理系统100从(举例来说)应用程序接收线程,例如图形线程。大体来说,线程调度器102接收线程串流且执行各种功能来调度并管理线程的执行。举例来说,线程调度器102可调度线程的处理、确定特定线程所需要的资源是否可用,且经由加载控制器108将线程数据移动到寄存器堆库。线程调度器102与加载控制器108介接以使所接收线程的资源同步。线程调度器102还可监视从特定应用程序接收线程的次序且致使这些线程以与接收时的相同次序或序列被输出。
线程调度器102选择活动线程以用于执行,检查所选择线程之间的读取/写入端口冲突,如果不存在冲突,那么将来自线程的适当指令指派到ALU 106中且将另一线程的另一指令发送到加载控制器108。在线程调度器102的请求下,加载控制器108还可经配置以从不可预测延迟数据源104(例如,纹理引擎130或外部存储器128)获得与线程相关联的数据。举例来说,存储器128可包括全局数据高速缓存器及/或外部存储器装置。除发出对丢失指令的提取请求以外,加载控制器108将线程数据加载到寄存器堆库(未显示)中且将相关联指令加载到指令高速缓存器(未显示)中。线程调度器102还移除已由ALU 106处理的线程。
ALU 106可以是单个四元组ALU或可包括四个标量ALU。在所述实例性实施例中,ALU 106对多达四个像素的属性的一个分量执行像素并行处理。在某些情况下,ALU 106对单个像素的属性的多达四个分量执行分量并行处理。ALU 106从寄存器堆库提取数据且从常数RAM接收常数。理想地,ALU 106在每一时钟循环处理数据,使得其不空闲,从而提高处理效率。ALU 106在到寄存器堆库的接口上包括多个读取及写入端口,使得其能够在新线程数据在每一时钟循环被提取/读取时提供线程结果。
所述线程调度器包括用于通过线程仲裁/资源管理器(在本文中称作资源管理器)132来管理并提交用于执行的线程的多个线程上下文单元110、112、114。每一线程被指派到线程槽且在相关联的线程上下文单元110、112、114上被管理。每一线程上下文单元110、112、114内的线程上下文寄存器134、136、138存储所述线程的每一指令的指令类型及其它信息。每一线程上下文单元110、112、114内的线程上下文控制器140、142、144控制向资源管理器132对指令的提交。线程上下文单元从资源管理器132请求资源。当资源可用时,所述资源管理器批准所述请求。线程调度器102内的流控制器(未显示)及资源管理器132允许每一线程存取ALU 106、加载控制器108及指令高速缓存器(未显示)以允许每一线程上下文单元110、112、114加载数据且使指令由适当的资源执行以执行所述线程。
为执行指令,线程上下文单元首先请求将所述指令加载到指令高速缓存器中。所述指令至少部分地被解码且线程上下文单元110内的上下文控制140基于相依性指示符的存在及线程上下文单元110的加载参考计数器(LRC)116的值来确定是否应执行所述指令。当线程上下文单元提交指令时,指令类型向资源管理器132指示执行所述指令所需要的资源。举例来说,所请求的资源可以是ALU 106、存储器128或纹理引擎130。当所述资源被批准时,将所述指令转发到可用资源以用于执行。因此,资源管理器(线程仲裁管理器)132管理所请求资源的分配以向请求线程上下文单元批准所请求的资源。
线程内的指令可具有可预测的延迟或不可预测的延迟。具有可预测的延迟的指令在本文中称作可预测延迟指令且包括在已知数量的时钟循环内执行的指令。可预测延迟指令的实例包括ALU操作及不需要多线程处理器核心外部的资源的其它操作。在所述实例性实施例中,内部多线程处理器101操作经设计而具有标准的延迟。不具有可预测延迟的指令在本文中称作不可预测延迟指令。不可预测延迟指令的实例包括需要多线程处理器101外部的外部资源的操作。举例来说,存取外部存储器的与纹理相关的指令及数据检索指令具有不可预测的延迟。
因此,特定指令可需要从具有不可预测的延迟的数据源检索数据。在所述实例性实施例中,不可预测数据源104可以是纹理引擎130或存储器128。所述线程内与纹理相关的指令需要纹理引擎130处理由所述指令提供的信息并返回纹理数据。与存储器相关的指令需要检索存储在存储器128内的所存储数据。当所述存储器为芯片外时,检索所请求数据所需要的时间可不可预测。当特定数据检索事件具有不可预测的延迟时,可引发其它情形。
所述线程上下文单元包括用于管理线程的执行的适当资源。除线程上下文寄存器134、126、138以外,线程上下文单元110、112、114还包括实施在用于管理线程的执行的逻辑中的上下文控制器140、142、144。如下文参照图2所论述,可用状态机来建模上下文控制器,其中所述上下文控制器在有限组状态之间转换。在所述实例性实施例中,每一线程上下文寄存器110、112、114包括加载参考计数器(LRC)116、120、124且每一上下文控制器140、142、144包括相依性指示符检测器(DID)118、122、126。当从执行线程的相关联线程上下文单元发出对数据的请求时,将每一LRC递增。当从所述源返回所请求的数据时,将每一LRC递减一。因此,所述加载参考计数器(LRC)经配置以针对所述特定线程维持指示若干数据请求与若干数据返回之间的差的计数器值。相依性指示符检测器118、122、126经配置以检测指令中的相依指示符。所述相依性指示符可以是任何类型的数据、旗标、位或指示所述指令是否需要来自所述线程中的先前指令的数据的其它指示符。当源代码经编译以创建线程代码时,添加相依性指示符。在所述实例性实施例中,向所述线程的每一数据相依指令添加单个位相依性指示符。因此,线程的需要来自先前指令的数据的每一指令包括相依性指示符。
在线程的执行期间,根据对应线程的数据请求及返回来递增及递减每一LRC。当相依性指示符检测器(DID)112、122、126识别指令相依于来自先前指令的数据时,评价所述LRC以确定其是否为零。如果所述LRC为非零,那么线程上下文单元避免提交所述指令且将所述线程上下文单元置于等待状态。当所述LRC等于零时,执行所述指令。
图2是根据所述实例性实施例的线程控制的状态机图。所述状态机图是由状态、转换及动作组成的行为的模型。由于其反映从系统开始到目前的输入改变,因此状态存储关于过去的信息。转换由图2中的箭头指示且所述转换指示状态改变。必须遇到特定条件来使转换发生。图2是线程上下文单元的状态及转换的表示图。因此,每一线程上下文单元在线程调度器的操作期间可处于不同的状态。
在所述实例性实施例中,所述线程上下文单元可处于包括以下状态的七个状态中的一者:空闲状态202、ALU状态204、加载状态206、流状态208、DEP状态210、等待状态212及发射状态214。所有线程均以空闲状态202开始及结束。线程上下文单元在空闲状态202中等待新线程。当从空闲状态转换到等待状态204(其中线程上下文单元等待资源变得可用)时,指令类型被呈现到资源管理器132。当加载控制器可用时,从指令高速缓存器加载所述指令且所述指令被执行。所述指令可包括ALU操作、加载操作或纹理操作。依据特定指令及当前状态,线程上下文单元转换为适当状态。在流状态208中,线程上下文单元执行流控制任务且更新程序计数器。在加载状态206中,线程上下文单元执行加载任务,例如初始加载、加载纹理数据、加载来自存储器的数据及其它加载及存储执行。在等待状态204中,线程上下文单元等待资源。算术逻辑单元(ALU)106在ALU状态204中被存取以执行算术或逻辑指令。当在指令中检测到相依性指示符且LRC为非零时,线程上下文单元进入DEP状态210。当LRC返回到零时,线程上下文单元转换为先前的退出状态。在发射状态214期间,所述指令的所返回结果被移动出上下文寄存器。
图3是根据所述实例性实施例的管理具有相依指令的线程的方法的流程图。虽然所述方法可应用于其它结构,但在所述实例性实施例中,所述方法由线程上下文单元执行。以下步骤提供执行参照图2论述的与相依指令相关的技术的实例。因此,可用在图3中省略(为了清晰及简明起见)的其它块或流程表来建模线程上下文单元的其它操作。在所述实例性实施例中,所述方法由执行上下文控制器140、142、144的操作的逻辑电路执行。
如下文所论述,所述上下文控制器逻辑的动作由经编译的线程代码规定。因此,在所述编译程序期间,编译器识别较高级代码中所指示的相依性且将所述相依性指示符插入所述指令的由所述上下文控制器辨别的适当位置内。
在步骤302处,针对新线程初始化程序计数器(PC)及加载参考计数器值(LRC_VAL)。全局寄存器针对所述线程设定经初始化的值。当应用程序需要线程在并非步骤0(第一步骤)的步骤处开始时,INIT_PC可以是非零且可将所述PC设定为非零值。当不需要预加载数据时,INIT_LRC_VAL为零。然而,如果所述线程需要预加载数据(例如,纹理数据),那么(举例来说)可将INIT_LRC_VAL设定为非零值。线程上下文单元处于空闲状态202且等待新线程。当指派新线程时,所述方法在步骤304处继续。
在步骤304处,确定当前指令是否是相依指令。如果在所述指令中检测到相依性指示符,那么将所述指令识别为相依指令且所述方法在步骤306处继续。否则,所述方法进行到步骤312。
在步骤306处,确定LRC值(LRC_VAL)是否等于零。如果所述LRC等于零,那么所述方法在步骤312处继续。如果所述LRC值为非零,那么所述方法进行到步骤308。
在步骤308处,确定是否已检索到所请求的数据。在所述实例性实施例中,加载控制器指示所述数据已被返回到适当的寄存器堆。如果已返回数据,那么所述方法在步骤310处继续,在步骤310中将LRC递减1。否则,所述方法返回到步骤308。在步骤310之后,方法返回到步骤306。
在步骤312处,发出对用以执行所述指令的适当资源的请求。当所述资源可用且由资源管理器(线程仲裁管理器)132批准时,所述指令由所述适当资源执行。
在步骤314处,确定所述指令是否已请求数据。如果已请求数据,那么在所述方法进行到步骤318之前,所述方法在步骤316处继续,在步骤316中将LRC值递增1。如果未请求数据,那么所述方法进行到步骤318。
在步骤318处,将程序计数器递增1。在步骤320处,针对所述线程确定下一PC指令是否存在。如果存在更多指令,那么所述方法返回到步骤304。否则,所述方法返回到步骤302以等待下一线程。
所属技术领域中的技术人员应了解,可使用各种不同技法及技术中的任一者来表示信息及信号。举例来说,以上说明通篇可能提及的数据、指令、命令、信息、信号、位、符号及码片可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任一组合来表示。
所属技术领域中的技术人员应进一步了解,结合本文所揭示实施例说明的各种说明性逻辑块、模块、电路、及算法步骤可实施为电子硬件、计算机软件或两者的组合。为清楚地图解说明硬件与软件的此种可互换性,上文已就其功能性总体说明了各种说明性组件、块、模块、电路及步骤。此种功能性实施为硬件还是软件取决于特定应用及施加到整个系统上的设计约束条件。所属技术领域中的技术人员可针对每一特定应用以不同的方法来实施所说明的功能性,但此类实施决策不应被视为导致背离本发明的范围。
可用以下装置来实施或执行结合本文所揭示实施例说明的各种说明性逻辑块、模块及电路:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其设计用于执行本文所说明功能的任一组合。通用处理器可以是微处理器,但另一选择为,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、一个或一个以上微处理器与DSP核心的联合或任何其它此类配置。
结合本文所揭示实施例所说明方法的步骤可直接体现在硬件中、由处理器执行的软件模块中或两者的组合中。软件模块可驻存在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬磁盘、可抽换磁盘、CD-ROM或所属技术领域中已知的任何其它形式的存储媒体中。实例性存储媒体耦合到所述处理器,使得所述处理器可从所述存储媒体读取信息及向所述存储媒体写入信息。另一选择为,存储媒体可集成到处理器中。处理器及存储媒体可驻存在ASIC中,ASIC可驻存在用户终端中。另一选择为,处理器及存储媒体可作为离散组件驻存在用户终端中。
提供对所揭示实施例的以上说明旨在使所属技术领域中的技术人员能够制作或使用本发明。所属技术领域中的技术人员将易于明了这些实施例的各种修改,且本文所定义的一般原理也可在不背离本发明的精神或范围的情况下应用于其它实施例。因此,并非打算将本发明限定为本文所示实施例,而是要赋予其与本文所揭示原理及新颖特征相一致的最宽广范围。

Claims (20)

1、一种线程上下文单元,其经配置以转发线程的指令以供执行,所述线程上下文单元包含:
加载参考计数器,其经配置以维持指示若干数据请求与若干数据返回之间的差的计数器值;及
上下文控制器,其经配置以避免在所述计数器值为非零时提交线程的指令且所述指令包括指示所述指令需要由先前指令返回的数据的数据相依性指示符。
2、如权利要求1所述的线程上下文单元,其中所述若干数据请求是对来自不可预测延迟数据源的数据的若干数据请求且所述若干数据返回是来自所述不可预测延迟数据源的若干数据返回。
3、如权利要求2所述的线程上下文单元,其中所述不可预测延迟数据源是存储器。
4、如权利要求2所述的线程上下文单元,其中所述不可预测延迟数据源是纹理引擎。
5、如权利要求2所述的线程上下文单元,其中所述上下文控制器被实施在逻辑中且包含经配置以检测所述数据相依性指示符的相依性指示符检测器。
6、如权利要求1所述的线程上下文单元,其中所述上下文控制器进一步经配置以在所述计数器值为零时执行所述指令。
7、如权利要求2所述的线程上下文单元,其中所述上下文控制器进一步经配置以在识别所述对来自所述不可预测延迟数据源的数据的请求时递增所述计数器且经配置以响应于识别来自所述不可预测延迟的数据的所述返回时递减所述计数器。
8、一种线程调度器,其经配置以向用于管理线程的执行的多个线程上下文寄存器分配所请求的资源,所述线程调度器包含:
多个加载参考计数器,每一加载参考计数器经配置以维持指示与线程上下文单元相关联的若干数据请求与若干数据返回之间的差的计数器值,所述线程调度器经配置以避免在与线程相关联的计数器值为非零时转发所述线程的数据相依指令以供执行且所述数据相依指令包括指示所述指令需要由所述线程的先前指令返回的数据的数据相依性指示符。
9、如权利要求8所述的线程调度器,其中所述若干数据请求是对来自不可预测延迟数据源的数据的若干数据请求且所述若干数据返回是来自所述不可预测延迟数据源的若干数据返回。
10、如权利要求9所述的线程调度器,其中不可预测延迟数据源是存储器。
11、如权利要求9所述的线程调度器,其中不可预测延迟数据源是纹理引擎。
12、如权利要求9所述的线程调度器,其中所述线程调度器进一步包含多个相依性指示符检测器,每一相依性指示符检测器经配置以检测所述数据相依性指示符。
13、如权利要求8所述的线程调度器,其中所述线程调度器进一步经配置以在所述计数器值为零时执行所述指令。
14、如权利要求9所述的线程调度器,其中所述线程调度器进一步经配置以在识别所述对来自所述不可预测延迟数据源的数据的请求时递增所述计数器且经配置以响应于识别来自所述不可预测延迟的数据的所述返回时递减所述计数器。
15、一种用于处理图形线程的图形处理器,所述图形处理器包含:
算术逻辑单元,其经配置以根据由线程上下文单元管理的图形线程的指令来执行算术功能;
加载控制器,其经配置以根据所述指令从不可预测延迟时间源中检索数据;
线程调度器,其经配置以向线程上下文单元分配所请求的资源且包含:
多个加载参考计数器,每一加载参考计数器经配置以维持指示由线程上下文单元呈现的对来自不可预测延迟数据源的数据的若干数据请求与由所述加载控制器执行的来自所述不可预测延迟数据源且与所述线程上下文单元相关联的若干数据返回之间的差的计数器值,所述线程调度器经配置以避免在与图形线程相关联的计数器值为非零时转发所述图形线程的数据相依指令以供执行且所述数据相依指令包括指示所述指令需要由所述线程的先前指令返回的数据的数据相依性指示符。
16、如权利要求15所述的图形处理器,其中不可预测延迟数据源是存储器。
17、如权利要求15所述的图形处理器,其中不可预测延迟数据源是纹理引擎。
18、如权利要求15所述的图形处理器,其中所述线程调度器进一步包含多个相依性指示符检测器,每一相依性指示符检测器经配置以检测所述数据相依性指示符。
19、如权利要求15所述的图形处理器,其中所述线程调度器进一步经配置以在所述计数器值为零时执行所述指令。
20、如权利要求15所述的图形处理器,其中所述线程调度器进一步经配置以在识别所述对来自所述不可预测延迟数据源的数据的请求时递增所述计数器且经配置以响应于识别来自所述不可预测延迟的数据的所述返回时递减所述计数器。
CNA2007800316587A 2006-08-29 2007-08-27 相依指令线程调度 Pending CN101506774A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/468,221 US8291431B2 (en) 2006-08-29 2006-08-29 Dependent instruction thread scheduling
US11/468,221 2006-08-29

Publications (1)

Publication Number Publication Date
CN101506774A true CN101506774A (zh) 2009-08-12

Family

ID=38739898

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007800316587A Pending CN101506774A (zh) 2006-08-29 2007-08-27 相依指令线程调度

Country Status (6)

Country Link
US (1) US8291431B2 (zh)
EP (1) EP2080090A1 (zh)
JP (1) JP2010503070A (zh)
KR (1) KR20090045944A (zh)
CN (1) CN101506774A (zh)
WO (1) WO2008027823A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102830954A (zh) * 2012-08-24 2012-12-19 北京中科信芯科技有限责任公司 指令调度方法及装置
CN105308672A (zh) * 2013-06-10 2016-02-03 夏普株式会社 电子设备和视频解码的方法
CN106133689A (zh) * 2014-03-27 2016-11-16 国际商业机器公司 多线程计算机系统中的线程上下文恢复
CN107209662A (zh) * 2014-09-26 2017-09-26 高通股份有限公司 指令的相依性预测
CN111045814A (zh) * 2018-10-11 2020-04-21 华为技术有限公司 资源调度方法和终端设备

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9317290B2 (en) * 2007-05-04 2016-04-19 Nvidia Corporation Expressing parallel execution relationships in a sequential programming language
US8933953B2 (en) 2008-06-30 2015-01-13 Intel Corporation Managing active thread dependencies in graphics processing
US8527740B2 (en) * 2009-11-13 2013-09-03 International Business Machines Corporation Mechanism of supporting sub-communicator collectives with O(64) counters as opposed to one counter for each sub-communicator
US9311102B2 (en) * 2010-07-13 2016-04-12 Advanced Micro Devices, Inc. Dynamic control of SIMDs
KR20120017294A (ko) 2010-08-18 2012-02-28 삼성전자주식회사 어플리케이션을 효율적으로 처리하는 스케쥴링 시스템 및 스케쥴링 방법
US8732711B2 (en) * 2010-09-24 2014-05-20 Nvidia Corporation Two-level scheduler for multi-threaded processing
KR101869939B1 (ko) * 2012-01-05 2018-06-21 삼성전자주식회사 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치
US9400653B2 (en) 2013-03-14 2016-07-26 Samsung Electronics Co., Ltd. System and method to clear and rebuild dependencies
GB2514618B (en) 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
TWI564807B (zh) 2015-11-16 2017-01-01 財團法人工業技術研究院 排程方法及應用其的處理裝置
US11074075B2 (en) 2017-02-24 2021-07-27 Advanced Micro Devices, Inc. Wait instruction for preventing execution of one or more instructions until a load counter or store counter reaches a specified value
US11740908B2 (en) * 2020-03-16 2023-08-29 Arm Limited Systems and methods for defining a dependency of preceding and succeeding instructions
US11740907B2 (en) * 2020-03-16 2023-08-29 Arm Limited Systems and methods for determining a dependency of instructions
US20220188144A1 (en) * 2020-12-11 2022-06-16 Oracle International Corporation Intra-Process Caching and Reuse of Threads
US20230070949A1 (en) * 2021-09-07 2023-03-09 Visa International Service Association System and method of scheduling processes for execution on a resource
US20230409336A1 (en) * 2022-06-17 2023-12-21 Advanced Micro Devices, Inc. VLIW Dynamic Communication

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp., Maynard, Mass. Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
JP3730252B2 (ja) 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
US5923862A (en) 1997-01-28 1999-07-13 Samsung Electronics Co., Ltd. Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions
US6279100B1 (en) 1998-12-03 2001-08-21 Sun Microsystems, Inc. Local stall control method and structure in a microprocessor
US6557095B1 (en) 1999-12-27 2003-04-29 Intel Corporation Scheduling operations using a dependency matrix
US7847803B1 (en) * 2000-07-26 2010-12-07 Ati Technologies Ulc Method and apparatus for interleaved graphics processing
EP1227666A1 (en) * 2001-01-18 2002-07-31 Sony Service Centre (Europe) N.V. Method and device for downloading application data
US6950927B1 (en) 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
US20070260856A1 (en) * 2006-05-05 2007-11-08 Tran Thang M Methods and apparatus to detect data dependencies in an instruction pipeline
JP2008015562A (ja) 2006-06-30 2008-01-24 Kenichiro Ishikawa キャッシュミス/ヒット予想

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102830954A (zh) * 2012-08-24 2012-12-19 北京中科信芯科技有限责任公司 指令调度方法及装置
CN102830954B (zh) * 2012-08-24 2014-10-29 北京中科信芯科技有限责任公司 指令调度方法及装置
CN105308672A (zh) * 2013-06-10 2016-02-03 夏普株式会社 电子设备和视频解码的方法
CN106133689A (zh) * 2014-03-27 2016-11-16 国际商业机器公司 多线程计算机系统中的线程上下文恢复
CN106133689B (zh) * 2014-03-27 2019-03-22 国际商业机器公司 多线程计算机系统中的线程上下文恢复
CN107209662A (zh) * 2014-09-26 2017-09-26 高通股份有限公司 指令的相依性预测
CN107209662B (zh) * 2014-09-26 2020-11-03 高通股份有限公司 指令的相依性预测
CN111045814A (zh) * 2018-10-11 2020-04-21 华为技术有限公司 资源调度方法和终端设备
CN111045814B (zh) * 2018-10-11 2023-12-08 华为技术有限公司 资源调度方法和终端设备

Also Published As

Publication number Publication date
JP2010503070A (ja) 2010-01-28
US20080059966A1 (en) 2008-03-06
EP2080090A1 (en) 2009-07-22
US8291431B2 (en) 2012-10-16
WO2008027823A1 (en) 2008-03-06
KR20090045944A (ko) 2009-05-08

Similar Documents

Publication Publication Date Title
CN101506774A (zh) 相依指令线程调度
US9262160B2 (en) Load latency speculation in an out-of-order computer processor
JP3792200B2 (ja) 電力管理のための性能抑制機構を採用するマイクロプロセッサ
JP2021174506A (ja) 事前設定された未来時間において命令を実行するためのパイプライン制御を備えるマイクプロセッサ
US20130117543A1 (en) Low overhead operation latency aware scheduler
JPH0778738B2 (ja) ディジタル・コンピュータ・システム
JP2006107497A (ja) 制御方法、処理方法、またはそれらを利用した処理システム、コンピュータ処理システム、コンピュータのネットワーク
US9052910B2 (en) Efficiency of short loop instruction fetch
JP2011054161A (ja) マルチコア/スレッドのワークグループ計算スケジューラ
US9405547B2 (en) Register allocation for rotation based alias protection register
JP2000105699A (ja) 命令レベル並列性を増加させるためのリザベ―ションステ―ション
CN109564546B (zh) 通过绕过加载存储单元来跟踪存储和加载
JP2017102919A (ja) 命令を処理するための複数の実行ユニットを備えるプロセッサ、プロセッサを使用して命令を処理するための方法、およびプロセッサの設計プロセスにおいて使用される設計構造
CN114610394B (zh) 指令调度的方法、处理电路和电子设备
WO2023278323A1 (en) Providing atomicity for complex operations using near-memory computing
KR20150101870A (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
JP2014056425A (ja) データ管理装置、データ管理システム、処理割当方法および処理割当プログラム
US11829762B2 (en) Time-resource matrix for a microprocessor with time counter for statically dispatching instructions
US7058938B2 (en) Method and system for scheduling software pipelined loops
US20040128484A1 (en) Method and apparatus for transparent delayed write-back
US11513802B2 (en) Compressing micro-operations in scheduler entries in a processor
US20230315474A1 (en) Microprocessor with apparatus and method for replaying instructions
US20230195517A1 (en) Multi-Cycle Scheduler with Speculative Picking of Micro-Operations
US9323521B2 (en) Decimal floating-point processor
US20240311156A1 (en) Microprocessor with apparatus and method for replaying load instructions

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090812