CN103119555A - 下一指令类型字段 - Google Patents
下一指令类型字段 Download PDFInfo
- Publication number
- CN103119555A CN103119555A CN2011800450652A CN201180045065A CN103119555A CN 103119555 A CN103119555 A CN 103119555A CN 2011800450652 A CN2011800450652 A CN 2011800450652A CN 201180045065 A CN201180045065 A CN 201180045065A CN 103119555 A CN103119555 A CN 103119555A
- Authority
- CN
- China
- Prior art keywords
- instruction
- type field
- programmed instruction
- pipeline
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 98
- 230000008569 process Effects 0.000 claims description 27
- 238000003860 storage Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 230000015572 biosynthetic process Effects 0.000 claims description 8
- 238000011112 process operation Methods 0.000 claims description 5
- 230000013011 mating Effects 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000009189 diving Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
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)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Image Processing (AREA)
- Variable-Direction Aerials And Aerial Arrays (AREA)
Abstract
绘图处理单元核心26包含多个处理管线38、40、42、44。由处理管线执行的程序指令线程中的程序指令包含下一指令类型字段36,下一指令类型字段36指示在所关注的处理线程中接续在当前程序指令之后的下一程序指令的指令类型。使用此下一指令类型字段来控制在获取并译码下一指令之前,对下一指令将被发布至哪个处理管线的选择。下一指令类型字段可作为与当前程序指令32相关联的程序计数器值中的最低有效四位而沿着处理管线被传递。下一指令类型字段也可用来在获取或译码下一程序指令之前,在线程在处理管线之间转移时控制线程状态变量在处理管线之间的转发。
Description
技术领域
本发明涉及数据处理系统的领域。更具体地,本发明涉及如何在数据处理系统中指定将被执行的下一指令。
背景技术
已知提供了用以执行供执行的程序指令线程中的程序指令序列的数据处理系统。在此种系统中,可使用指令预先获取(prefetching)电路与分支预测电路来预先获取将被执行的指令并在遭遇分支时预测执行流向,从而使得可以在分支指令被确定之前提供将被执行的新指令给处理管线。这些措施有效地使深处理管线被高效支持并利用。然而,就电路面积、电路复杂度、功率消耗以及花费而言,与这些机制相关联的成本日渐显著。
还已知提供了同时执行多个程序线程的数据处理系统。此种系统的示例为绘图处理(graphic processing)单元,其中(例如)可并行执行一百个以上的程序线程,每一个程序线程对应于正处理的绘图图像的不同部分。对于此种系统而言,用于指令预先获取与分支预测的已知机制表现不佳。在寻求预先获取用于大量单独线程的指令以及预测用于这些大量程序线程的分支行为时,与这些机制相关联的成本是不利的。然而,单纯地等待直到正执行的程序指令完成然后获取下一指令,会带来显著的预先获取潜时(latency)。随着执行大量并行线程的系统更广泛地被普及且被应用于除了绘图处理领域之外的更为一般用途的处理(其中预先获取潜时变得更明显),这种不利影响也变得更为显著。
发明内容
本发明的一个方面提供了一种用于响应一个或多个程序指令线程而处理数据的装置,该装置包含:数据处理电路,该数据处理电路被配置为响应于程序指令线程中的当前程序指令,而执行由当前程序指令所指定的当前数据处理操作,其中当前程序指令包含下一指令类型字段,该下一指令类型字段指定该线程中将被执行的下一程序指令的类型。
本技术在当前程序指令中提供下一指令类型字段。此与本发明领域中的技术偏见背道而行(该技术偏见寻求减少程序指令的尺寸)。考虑此技术偏见将认识到,在当前程序指令中提供下一指令类型字段以及提供下一程序指令自身代表程序中的冗余(redundancy),因为下一程序指令自身也将指定下一程序指令的类型。然而,本技术认识到,可利用当前程序指令中的下一指令类型字段的额外程序尺寸开销,来提供很多实际优点。
数据处理电路可在下一指令类型字段的控制之下,执行一个或多个处理操作。这允许当前程序指令发起与下一指令相关联的处理操作(如果不这样做,与下一程序指令相关联的处理操作将需要等到下一程序指令(例如)被获取及译码时才被执行)。
在一些实施例中,响应于下一指令类型字段而被执行的部分处理可在从存储下一程序指令的存储器获取下一程序指令的全部之前(甚至在开始获取下一程序指令之前)进行。
本技术在包含多个处理管线的系统的领域中具有特定效用。虽然多个处理管线可完全相同,但是在许多具体实施例中,将提供多个不同类型(种类)的处理管线,其中每一不同类型的处理管线被配置为执行不同类型的处理操作。作为示例,多个处理管线可包含算术管线、加载/存储管线、以及变形管线(texturing pipeline,也译为纹理化管线)中的一个或多个。
在包含多个处理管线的系统的背景中,在下一指令类型字段的控制之下执行的下一程序指令的部分处理可包含选择下一处理管线,其中下一程序指令被引导至该下一处理管线以供执行。因此,例如,下一指令类型字段可被用来控制调度(scheduling)电路,其中该调度电路将下一程序指令调度到适当的下一处理管线。作为示例,算术指令可被引导至算术管线,加载/存储指令可被引导至加载/存储管线,且变形指令可被引导至变形管线。
在当前处理管线执行当前程序指令期间,下一指令类型字段将下一程序指令引导至的下一处理管线可为与当前处理管线相同的处理管线,或为与当前处理管线不同的处理管线。
每一处理管线可具有相关联的队列电路,该队列电路被提供以存储将由此管线执行的程序指令队列。在此种系统中,当前处理管线可由下一指令类型字段控制,以触发将下一程序指令加入与下一指令类型字段匹配的队列。
将下一程序指令加入此种队列可响应于当前程序指令被从当前处理管线撤出(retire)而被方便地执行,据此,只要一个程序指令撤出,用于此线程的另一程序指令即被加入至将执行的指令队列。因为来自大量不同的线程的程序指令将同时在不同管线中的不同管线阶段经受处理,所以等到线程的当前程序指令在此线程的下一程序指令被放入执行队列之前被撤出,并不会显著减少总体数据吞吐量(throughput)。因为来自不同线程的程序指令已在硬件中被执行,所以保持了高层级的硬件利用率与效率。
可由下一指令类型字段控制的部分处理的另一示例包含:将与下一程序指令相关联的一个或多个状态变量路由(routing)到下一处理管线。以此方式,若线程在管线之间转移,则凭借由当前程序指令中的下一指令类型字段所提供的较早的转移指示,与此线程相关联的状态变量将更快速地在新管线中变为可用。
可由下一指令类型字段控制的部分处理的其他示例包含:预先译码(pre-decoding)下一程序指令、预先获取(pre-fetching)下一程序指令、以及分派(dispatching)下一程序指令。
当前程序指令可具有相关联的当前程序计数器值。从当前程序计数器值的最低有效位位置延伸的此当前程序计数器值的部分可以被用来存储指示下一指令类型字段的值。在具有相对较大的经对准的程序指令的系统中,程序计数器的低次序部分通常未被使用。
在此种系统中,程序计数器值可由逻辑或(logic OR)操作导出,该逻辑或操作将存储当前程序指令的存储器中的存储器地址与对准存储器地址的最低有效位端的下一指令类型字段相结合。
将认识到,尽管本技术可以被用在执行单个程序指令线程的系统中,但是该技术在多个线程被执行时尤其有用。
在下一指令类型字段被定位于程序指令中的固定的预定位置中时,本技术的实施被简化。
程序指令线程将不会无限地执行,因此在下一指令类型字段的一个值为指示线程被以当前指令终止的终止类型的具体实施例中,可方便地支持在线程结束时将执行的对操作的控制。
本领域技术人员将认识到,当前程序指令的一个类型可为非直接分支操作。对于此种非直接分支指令,指向存储下一程序指令的存储器地址的指针是由下一非直接分支指令自身计算出来的。在下一程序指令的类型已知并且被编码在非直接分支指令的下一指令类型字段中时,可结合利用下一指令类型字段计算出的地址形成用于非直接分支指令的目标地址,从而允许基于由非直接分支指令计算出的作为目标地址的指针,再利用基于程序计数器值控制该部分处理的机制。
如前所述,下一指令类型字段与下一程序指令一起表示存在于线程的程序指令中的一定程度的冗余信息。可通过检测下一指令类型字段与下一程序指令之间的任何不匹配,来利用此冗余生成指示这些项目中至少一者中的损坏的异常(exception)。以此方式,可达成对于指令的数据损坏的一定程度的保护。
在下一指令类型字段的控制之下执行的处理通常将在下一程序指令的译码发生之前被执行。因此,下一指令类型字段可提供一种方式来至少部分地解决潜时(该潜时与必须等到下一程序指令的完整获取、发布与译码相关联)。
将认识到,本技术一般应用于数据处理装置(诸如,通用处理器、数字信号处理器等)领域。然而,本技术特别地适合于其中处理装置包含绘图处理单元且一个或多个线程包含多个绘图处理线程的系统。这些高度并行的多线程系统非常不适合传统的指令预先获取机制与分支预测机制,并可从使用当前程序指令中的下一指令类型字段获取显著的利益。
本发明的另一方面提供了一种用于响应一个或多个程序指令线程而处理数据的装置,该装置包含:数据处理构件,用于执行程序指令线程中的当前程序指令所指定的当前数据处理操作,其中当前程序指令包含下一指令类型字段,该下一指令类型字段指定该线程中将被执行的下一程序指令的类型。
本发明的另一方面提供了一种响应一个或多个程序指令线程而处理数据的方法,该方法包含以下步骤:响应于程序指令线程中的当前程序指令,执行由当前程序指令指定的当前数据处理操作,其中当前程序指令包含下一指令类型字段,该下一指令类型字段指定该线程中将被执行的下一程序指令的类型。
本发明的另一方面提供了一种计算机程序产品,该计算机程序产品具有非瞬时性(non-transitory)的形式,并存储用于控制数据处理装置响应于一个或多个程序指令线程而执行数据处理的计算机程序,其中该计算机程序包含程序指令线程中的当前程序指令,该当前程序指令包含下一指令类型字段,该下一指令类型字段指定该线程中将被执行的下一程序指令的类型。
本发明的另一方面提供了一种虚拟机,该虚拟机包含计算机,该计算机执行程序以提供如前所述的用以处理数据的装置的虚拟机实施方式。将认识到,处理装置的虚拟化变得更实际,且因此本技术的一种实施类型为虚拟机实施,其中由计算机程序控制通用处理器充当如前述讨论的处理装置。
附图说明
现在将仅通过示例结合附图描述本发明的实施例,其中:
图1示意性地示出了包含绘图处理单元的处理装置,该绘图处理单元利用了当前程序指令中的下一指令类型字段;
图2示意性地示出了并行执行的多个程序线程;
图3示意性地示出了当前程序指令中的下一指令类型字段;
图4示意性地示出了绘图处理单元核心;
图5示意性地示出了结合存储当前程序指令的存储器地址与下一指令类型字段以产生程序计数器值;
图6为示意性地示出处理管线选择的流程图;
图7为示意性地示出与不匹配异常生成相关联的处理的流程图;
图8给出了用以代表不同种类的下一程序指令的不同种类的下一指令类型字段的示例;以及
图9示意性地示出了用于提供本技术的虚拟机类型实施的装置。
具体实施方式
图1示意性地示出了数据处理系统2,数据处理系统2包含连接至存储器6的芯片上系统集成电路4。芯片上系统集成电路4包含通用处理器核心8、绘图处理单元10、芯片上系统高速缓存12、以及存储器控制器14,其中芯片上系统集成电路4上包括的组件全部经由系统总线16链结。存储器控制器14提供对存储器6的存取。存储器6存储由通用处理器8执行的通用程序18、由绘图处理单元10执行的绘图程序20、以及供通用核心8操纵的通用数据22与供绘图处理单元10操纵的绘图数据24。
绘图处理单元10包含多个绘图处理单元核心26,多个绘图处理单元核心26中的每一个绘图处理单元核心在每一核心中以及在核心之间并行执行多个线程的程序指令。这些绘图处理单元核心26中的每一个绘图处理单元核心可包含多个处理管线,且这些处理管线中的每一个处理管线可在处理管线的指令管线的不同阶段中,执行来自不同程序线程的程序指令。因此,在任意给定时间由绘图处理单元10执行的程序线程的总数可以很高,例如超过一百。
绘图处理单元核心26中的每一个绘图处理单元核心具有与其自身相关联的第一级高速缓冲存储器28,以供自身使用。绘图处理单元核心26还共享第二级高速缓冲存储器30,其中该第二级高速缓冲存储器30被提供为绘图处理单元10的部分。将认识到,为了提升性能,绘图处理单元10可包含大量进一步的本地高速缓冲存储器与数据储存装置。为了清晰起见,图1省略了这些细节。
图2示意性地示出了可由绘图处理单元10并行执行的多个程序指令线程。在此示例中,有N+1个程序指令线程并行执行。线程0包含X+1个程序指令。线程0的这些程序指令以循环方式被执行,直到满足终止条件为止。本领域技术人员将认识到,通常相同程序的许多实例可被作为单独线程并行执行,其中每一线程对绘图图像的不同区域执行相同的操纵。在此情况下,不同的程序线程可具有定位于程序线程中的相同数目的程序指令。也可使用不同的代码、出于不同的目的执行不同的程序线程。这些线程也可并行执行。作为示例,可有一组线程执行算术操作(例如,顶点旋转)并有一组线程在像素值上执行变形操作。
图3示意性地示出了当前程序指令32。当前程序指令32在第一字节中包含四位当前指令类型字段34与四位下一指令类型字段36。当前指令类型字段34对对应于当前指令32的指令类型(例如,当前指令32为算术指令、加载/存储指令、变形指令、分支指令或类似指令)进行编码。下一指令类型字段36对此相同类型的信息进行编码,但是该信息是关于正执行的程序指令线程中的当前程序指令32之后的下一程序指令的。下一指令类型字段36增大了当前程序指令32的尺寸,但是在下一程序指令被译码之前或在下一程序指令被获取之前提供了执行与下一程序指令相关联的部分处理的可能性。这可以减少与下一程序指令的获取与译码相关联的潜时。
图4示意性地示出了绘图处理单元核心26。绘图处理单元核心26包含多个处理管线,该多个处理管线包含第一算术与分支管线38、第二算术与分支管线40、加载/存储与变量管线42、以及变形管线44。这些不同的处理管线38、40、42、44为不同的类型,并执行不同类型的处理操作。算术与分支管线38、40分别执行算术与分支处理操作。加载/存储与变量管线42执行与对存储器6的加载与存储相关联的处理操作、以及与固定或可编程的变量相关联的操作。变形管线44执行变形像素处理操作,其中变形像素处理操作利用着色器(shader)程序所使用的存储在绘图数据24中的变形数据来生成正被生成的绘图图像中的像素值。
处理管线38、40、42、44的每一个处理管线具有相关联的指令队列46、48、50、52,将被处理管线38、40、42、44执行的程序指令被放置于指令队列46、48、50、52中,指令队列46、48、50、52被排入处理管线38、40、42、44中。调度电路54负责将程序指令加入各个指令队列46、48、50、52。因此,调度电路54选择程序指令将被放入的适当的处理管线38、40、42、44。变形指令必须被放入指令队列52中,加载/存储指令和与变量相关联的指令必须被放入指令队列50中。算术指令与分支指令必须被放入指令队列46或48之一。
在新线程第一次被执行时,此线程的第一指令将需要由调度电路54至少部分地译码,以判定此第一指令需被放入指令队列46、48、50、52的哪一者中。可选地,可在指向新线程中的第一指令的指针的最低有效位中编码第一指令的类型,如下文进一步描述。一旦程序线程的第一程序指令已被执行并到达其在适当的处理管线38、40、42、44中的撤退阶段,则可使用与当前程序指令相关联的下一指令类型字段36来控制调度电路54,以将下一程序指令调度到与当前程序指令的下一指令类型字段36匹配(即,由下一指令类型字段指定)的指令队列46、48、50、52中。如果第一程序指令为算术指令,且第二程序指令也为算术指令,则下一指令类型字段36将指示第二程序指令应被放入与第一程序指令相同的指令队列(这避免了需要将线程状态变量(数据)转移至另一算术管线)。然而,由于在此线程中需要执行不同类型的程序指令,所以程序线程也可能在处理管线38、40、42、44之间转移。因此,线程的第一部分可为算术指令,其中一个或多个变形指令接续在该算术指令之后。在程序线程转移时,如由最后的算术指令中的下一指令类型字段36所指示,与线程相关联的线程状态变量可从算术与分支管线38、40中的相关的一个转移至变形管线44。线程状态变量可包含程序计数器值、线程标识符、与线程相关联的描述符等。线程转移至的处理管线44可能会需要此线程状态。此线程状态变量的转移可由先前处理管线38、40上执行的最后的程序指令中的下一指令类型字段控制,且因此可在将在新处理管线44上执行的第一程序指令实际被获取或译码之前被发起。
将认识到,基于下一指令类型字段36执行调度电路54的控制。作为使用大型经对准指令的结果,下一指令类型字段36可通过使用程序计数器值的未使用的最低有效位以方便的方式被存储在指令管线38、40、42、44中,其中程序计数器值与处理管线38、40、42、44中的每一阶段的每一程序指令相关联。由于此示例实施例中的程序指令长度为128位的倍数,所以程序计数器PC[3:0]的最低有效四位将为未使用(程序指令为128位对准于存储器6中),且因此程序计数器值中的此位空间可被方便地用来存储下一指令类型字段36,其中该下一指令类型字段36与对应于此程序计数器值PC的当前程序指令相关联。因此,如图4所示,在当前程序指令到达处理管线38、40、42、44的终端且被从管线撤出时,在此阶段可将程序计数器值PC[3:0]的最低有效位部分供应至调度电路54,以指示下一程序指令的类型从而指导指令队列46、48、50、52接收此下一指令。
也可在沿着当前程序指令通过处理管线38、40、42、44行进的过程中的其他点使用下一指令类型字段36,以控制与下一程序指令相关联的部分处理。以此方式控制的下一程序指令的部分处理可包含下列处理中的一者或多者:预先译码下一程序指令、预先获取下一程序指令、以及分派下一程序指令。对于下一程序指令的部分处理的其他可能性对于本领域技术人员来说将是显而易见的,也包含于本技术中。
绘图处理单元核心26还包含寄存器文件56。寄存器文件56包含由不同处理管线38、40、42、44使用的寄存器,这些寄存器用于数据值的管线内部(intra-pipeline)操纵以及在不同的处理管线38、40、42、44之间的数据值的传输。
图5示意性地示出了与当前程序指令32相关联的存储器地址58(通过将当前指令长度加入当前指令的存储器地址,可用其指向下一指令)如何经受存储器地址58的最低有效四位与下一指令类型字段36的逻辑或操作以产生程序计数器值60,其中程序计数器值60与当前程序指令32一同存储,且伴随当前程序指令32沿着当前程序指令32的处理管线38、40、42、44行进。由于程序指令的长度为128位的倍数,且以128位对准在存储器6中,所以存储器地址58的最低有效四位为未使用,且因此可使用此逻辑或操作填充下一指令类型字段36。在当前指令从当前指令的处理管线撤退时,此程序计数器值可直接地由调度电路54使用,以将下一指令引导至适当的指令队列46、48、50、54,并发起从存储器系统获取下一指令。
图6为示意性地示出由调度电路54执行的管线选择的流程图。在步骤62,程序计数器值60的最低有效四位被读取(可在当前程序指令撤退时由处理阶段38、40、42、44之一的终端供应程序计数器值60)。在步骤64,由PC[3:0]表示的下一指令类型字段被与终止代码相比较,以判定当前程序指令32是否为程序线程中的最后一个程序指令。如果当前程序指令32为程序线程中的最后一个程序指令,则对于此线程的管线的选择终止(此选择将由用于新线程的单独处理来控制)。如果线程不终止,则步骤66使用PC[3:0]的值来选择下一程序指令将被发布至的管线。在此阶段图6的流程图继续描述关于在步骤66将下一程序指令放入所选择的管线而执行的处理。在步骤68,此程序指令被译码。随后,步骤70将程序计数器增加与经译码指令的长度相匹配的量。同时,可执行图5中示出的逻辑或操作,以将下一指令类型字段36放入刚生成的经增加的程序计数器值的最低有效四位位置。因此,程序计数器值指向下一程序指令的存储器地址,而程序计数器的最低有效四位指示此下一指令的类型。可从来自图3中所示的位位置的指令读取下一指令类型字段36。对于所有指令来说这些位位置是固定且预定的,因此容易被识别。
步骤72判定步骤68的指令译码器是否为非直接分支指令。非直接分支指令(如果被识别出)在步骤74继续进行,以将在步骤70生成的程序计数器值替换为由分支指令计算出的程序计数器值,作为用于此分支指令的目标地址,且在其最低有效四位中包含下一指令类型字段36。在步骤72或步骤74之后,在指令从相关的处理管线38、40、42、44中被撤出时处理进行至步骤62。
图7为示意性地示出在所译码的指令与来自前一指令的下一指令类型字段之间发生不匹配时生成异常的流程图。步骤76对指令进行译码。步骤78将从对指令的译码得出的指令类型与从线程中的前一指令中读取的该指令的下一指令类型字段进行比较。如果通过这些不同机制识别出的类型之间存在不匹配,则处理进行至步骤80,在步骤80生成指示发生了指令类型的不匹配的异常。这对下一指令类型字段36或程序指令32自身的损坏(或对它们两者的损坏,如果这两个损坏不匹配)提供了一定程度的抗性。如果没有不匹配,则步骤82执行指令。
图8示出了可由下一指令类型字段36表示的不同的指令类型。存在对应于将由加载/存储管线42执行的指令的一种类型。存在将由变形管线44执行的至少一种指令类型。存在对应于将由算术与分支管线38、40之一执行的不同长度的程序指令的多个指令类型。还存在对应于将由算术与分支管线38、40之一执行的非直接分支的指令类型。剩余的可由下一指令类型字段36的四位表示的可能的编码未使用。将认识到,下一指令类型字段36的不同的四位图样可以任意不同的方式分配,以表示不同类理的指令。
图9示出了可使用的虚拟机实施方式。尽管早先描述的具体实施例以操作特定处理硬件(该硬件支持所关注的技术)的装置与方法的形式来实施本发明,但是也可提供所谓的硬件设备的虚拟机实施方式。这些虚拟机实施方式在主处理器530上运行,主处理器530运行支持虚拟机程序510的主操作系统520。通常,需要大型的强有力的处理器来提供以合理速度运行的虚拟机实施方式,但此种做法在某些环境下可被调整,诸如在为了兼容性或重复使用的理由而运行专有于另一处理器的代码时。虚拟机程序510提供到应用程序500的应用程序接口,该应用程序接口与由真实硬件提供的应用程序接口相同,其中真实硬件为虚拟机程序510模拟的设备。因此,程序指令(包含先前描述的对存储器存取的控制)可使用虚拟机程序510执行应用程序500中的程序指令,以模拟程序指令与虚拟机硬件的交互。
Claims (27)
1.一种用于响应一个或多个程序指令线程而处理数据的装置,该装置包含:
数据处理电路,该数据处理电路被配置为响应于程序指令线程中的当前程序指令,而执行由所述当前程序指令所指定的当前数据处理操作,其中
所述当前程序指令包含下一指令类型字段,该下一指令类型字段指定所述线程中将被执行的下一程序指令的类型。
2.如权利要求1所述的装置,其中所述数据处理电路在所述下一指令类型字段的控制之下执行一个或多个处理操作,该一个或多个处理操作形成所述下一程序指令的部分处理。
3.如权利要求2所述的装置,其中在所述下一程序指令的全部被从存储所述下一程序指令的存储器获取之前,执行所述部分处理。
4.如权利要求2和3中任一项所述的装置,其中所述处理电路包含多个处理管线。
5.如权利要求4所述的装置,其中所述多个处理管线包含多个不同种类的处理管线,所述不同种类的处理管线中的每一种处理管线被配置为执行不同种类的处理操作。
6.如权利要求4和5中任一项所述的装置,其中所述多个处理管线包含以下管线中的一个或多个:
算术管线,该算术管线被配置为执行算术处理操作;
加载/存储管线,该加载/存储管线被配置为执行加载/存储处理操作;以及
变形管线,该变形管线被配置为执行像素变形处理操作。
7.如权利要求4至6中任一项所述的装置,其中所述下一程序指令的所述部分处理包含从所述多个处理管线中选择下一处理管线,其中所述下一程序指令被引导至所述下一处理管线以供执行。
8.如权利要求7所述的装置,包含调度电路,该调度电路被配置为响应于所述下一指令类型字段,而调度所述下一程序指令供所述下一处理管线执行。
9.如权利要求8所述的装置,其中所述下一处理管线为下列管线之一:
所述多个处理管线中与所述当前处理管线相同的一个处理管线;以及
所述多个处理管线中与所述当前处理管线不同的一个处理管线。
10.如权利要求8和9中任一项所述的装置,其中所述下一处理管线包含队列电路,该队列电路被配置为存储将由所述下一处理管线执行的程序指令队列,所述当前处理管线在所述下一指令类型字段的控制之下,将所述下一程序指令加入所述队列。
11.如权利要求10所述的装置,其中响应于所述当前程序指令被从所述当前处理管线撤出,所述下一程序指令被加入所述队列。
12.如权利要求7至11中任一项所述的装置,其中所述部分处理包含将与所述下一程序指令相关联的一个或多个状态变量路由到所述下一处理管线。
13.如权利要求2至12中任一项所述的装置,其中所述部分处理包含下列处理中的一者或多者:
预先译码所述下一程序指令;
预先获取所述下一程序指令;以及
分派所述下一程序指令。
14.如前述权利要求中任一项所述的装置,其中当所述处理电路执行所述当前数据处理操作时,当前程序计数器值被与所述当前程序指令相关联地存储,且从所述当前程序计数器值的最低有效位位置延伸的一部分存储指示所述下一指令类型字段的值。
15.如权利要求14所述的装置,其中存储所述当前程序指令的存储器中的存储器地址被与对准所述存储器地址的最低有效位端的所述下一指令类型字段进行逻辑或操作,以形成所述当前程序计数器值。
16.如前述权利要求中任一项所述的装置,其中所述一个或多个线程包含多个线程。
17.如前述权利要求中任项所述的装置,其中所述下一指令类型字段被定位于所述程序指令线程的程序指令中的固定的预定位置中。
18.如前述权利要求中任一项所述的装置,其中所述下一指令类型字段的一个值是终止类型,该终止类型指示所述线程被终止。
19.如前述权利要求中任一项所述的装置,其中在所述当前程序指令为非直接分支指令时,所述下一指令类型字段被用来形成存储所述下一程序指令的所述非直接分支的目标存储器地址的部分。
20.如前述权利要求中任一项所述的装置,其中所述处理电路响应于所述下一指令类型字段与所述下一程序指令之间的不匹配,而生成指示所述下一指令类型字段与所述下一程序指令中的至少一者中的损坏的异常。
21.如权利要求2至20中任一项所述的装置,其中在所述部分处理被执行之后,所述下一程序指令的完全译码发生。
22.如前述权利要求中任一项所述的装置,其中所述处理电路包含绘图处理单元,且所述一个或多个线程包含多个并行的绘图处理线程。
23.一种用于响应一个或多个程序指令线程而处理数据的装置,该装置包含:
数据处理构件,用于执行由程序指令线程中的当前程序指令所指定的当前数据处理操作,其中
所述当前程序指令包含下一指令类型字段,该下一指令类型字段指定所述线程中将被执行的下一程序指令的类型。
24.一种响应一个或多个程序指令线程而处理数据的方法,该方法包含以下步骤:
响应于程序指令线程中的当前程序指令,而执行由所述当前程序指令所指定的当前数据处理操作,其中
所述当前程序指令包含下一指令类型字段,该下一指令类型字段指定所述线程中将被执行的下一程序指令的类型。
25.一种计算机程序产品,该计算机程序产品具有非瞬时性形式并存储用于控制数据处理装置响应于一个或多个程序指令线程而执行数据处理的计算机程序,其中所述计算机程序包含程序指令线程中的当前程序指令,所述当前程序指令包含下一指令类型字段,该下一指令类型字段指定所述线程中将被执行的下一程序指令的类型。
26.如权利要求25所述的计算机程序产品,其中所述线程包含多个程序指令,且所述线程中的所有程序指令包含下一程序类型字段。
27.一种虚拟机,该虚拟机包含计算机,该计算机执行程序以提供如权利要求1至24中任一项所述的用于处理数据的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1016072.9A GB2483903A (en) | 2010-09-24 | 2010-09-24 | Instruction which specifies the type of the next instruction to be executed |
GB1016072.9 | 2010-09-24 | ||
PCT/GB2011/051589 WO2012038713A1 (en) | 2010-09-24 | 2011-08-24 | Next-instruction-type field |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103119555A true CN103119555A (zh) | 2013-05-22 |
CN103119555B CN103119555B (zh) | 2016-10-12 |
Family
ID=43127900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180045065.2A Active CN103119555B (zh) | 2010-09-24 | 2011-08-24 | 下一指令类型字段 |
Country Status (10)
Country | Link |
---|---|
US (1) | US9977675B2 (zh) |
EP (1) | EP2585906B1 (zh) |
JP (1) | JP5712295B2 (zh) |
KR (1) | KR101849110B1 (zh) |
CN (1) | CN103119555B (zh) |
GB (1) | GB2483903A (zh) |
IL (1) | IL224507A (zh) |
MY (1) | MY168248A (zh) |
TW (1) | TWI511077B (zh) |
WO (1) | WO2012038713A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227507A (zh) * | 2016-07-11 | 2016-12-14 | 姚颂 | 计算系统及其控制器 |
CN111310910A (zh) * | 2017-10-30 | 2020-06-19 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981807B (zh) * | 2012-11-08 | 2015-06-24 | 北京大学 | 一种基于cuda并行环境的gpu程序优化方法 |
KR102301937B1 (ko) * | 2014-12-22 | 2021-09-15 | 삼성전자주식회사 | 가상 머신 환경에서의 입출력 방법 |
EP3588280B1 (en) * | 2018-06-25 | 2021-09-08 | ARM Limited | Handling load-exclusive instructions in apparatus having support for transactional memory |
US11907126B2 (en) | 2020-09-25 | 2024-02-20 | Advanced Micro Devices, Inc. | Processor with multiple op cache pipelines |
US11803391B2 (en) * | 2020-10-20 | 2023-10-31 | Micron Technology, Inc. | Self-scheduling threads in a programmable atomic unit |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4953078A (en) * | 1987-10-28 | 1990-08-28 | Digital Equipment Corporation | Apparatus and method for multi-threaded program execution in a microcoded data processing system |
JPH0628187A (ja) * | 1992-07-10 | 1994-02-04 | Nec Corp | データロード方法及びそれを用いた演算プロセッサ |
EP0949564A2 (en) * | 1998-04-08 | 1999-10-13 | Matsushita Electric Industrial Co., Ltd. | High speed virtual machine and compiler |
US6904514B1 (en) * | 1999-08-30 | 2005-06-07 | Ipflex Inc. | Data processor |
CN101826056A (zh) * | 2009-02-20 | 2010-09-08 | Arm有限公司 | 数据处理设备和方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63234322A (ja) * | 1987-03-23 | 1988-09-29 | Toshiba Corp | プロセツサ |
JP2609618B2 (ja) * | 1987-08-13 | 1997-05-14 | 株式会社東芝 | データ処理装置 |
JPH05346854A (ja) * | 1992-04-16 | 1993-12-27 | Fuji Electric Co Ltd | 演算処理装置 |
DE69433124T2 (de) * | 1993-11-05 | 2004-05-27 | Intergraph Corp., Huntsville | Befehlsspeicher mit assoziativem Kreuzschienenschalter |
US5933629A (en) | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for detecting microbranches early |
US6742110B2 (en) * | 1998-10-06 | 2004-05-25 | Texas Instruments Incorporated | Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution |
EP0992893B1 (en) * | 1998-10-06 | 2008-12-31 | Texas Instruments Inc. | Verifying instruction parallelism |
WO2001025900A1 (en) * | 1999-10-06 | 2001-04-12 | Cradle Technologies | Risc processor using register codes for expanded instruction set |
US8327175B2 (en) * | 2005-07-07 | 2012-12-04 | Samsung Electronics Co., Ltd. | Data processing systems and methods of operating the same in which memory blocks are selectively activated in fetching program instructions |
-
2010
- 2010-09-24 GB GB1016072.9A patent/GB2483903A/en not_active Withdrawn
-
2011
- 2011-08-24 EP EP11752622.8A patent/EP2585906B1/en active Active
- 2011-08-24 CN CN201180045065.2A patent/CN103119555B/zh active Active
- 2011-08-24 KR KR1020137005861A patent/KR101849110B1/ko active IP Right Grant
- 2011-08-24 WO PCT/GB2011/051589 patent/WO2012038713A1/en active Application Filing
- 2011-08-24 JP JP2013529706A patent/JP5712295B2/ja active Active
- 2011-08-24 MY MYPI2013700237A patent/MY168248A/en unknown
- 2011-09-01 US US13/137,657 patent/US9977675B2/en active Active
- 2011-09-14 TW TW100133041A patent/TWI511077B/zh active
-
2013
- 2013-01-30 IL IL224507A patent/IL224507A/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4953078A (en) * | 1987-10-28 | 1990-08-28 | Digital Equipment Corporation | Apparatus and method for multi-threaded program execution in a microcoded data processing system |
JPH0628187A (ja) * | 1992-07-10 | 1994-02-04 | Nec Corp | データロード方法及びそれを用いた演算プロセッサ |
EP0949564A2 (en) * | 1998-04-08 | 1999-10-13 | Matsushita Electric Industrial Co., Ltd. | High speed virtual machine and compiler |
US6904514B1 (en) * | 1999-08-30 | 2005-06-07 | Ipflex Inc. | Data processor |
CN101826056A (zh) * | 2009-02-20 | 2010-09-08 | Arm有限公司 | 数据处理设备和方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227507A (zh) * | 2016-07-11 | 2016-12-14 | 姚颂 | 计算系统及其控制器 |
CN106227507B (zh) * | 2016-07-11 | 2019-10-18 | 北京深鉴智能科技有限公司 | 计算系统及其控制器 |
CN111310910A (zh) * | 2017-10-30 | 2020-06-19 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN111310910B (zh) * | 2017-10-30 | 2023-06-30 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
US9977675B2 (en) | 2018-05-22 |
KR101849110B1 (ko) | 2018-04-16 |
KR20130108547A (ko) | 2013-10-04 |
TW201224991A (en) | 2012-06-16 |
GB2483903A (en) | 2012-03-28 |
IL224507A (en) | 2015-07-30 |
JP2013542500A (ja) | 2013-11-21 |
EP2585906A1 (en) | 2013-05-01 |
CN103119555B (zh) | 2016-10-12 |
EP2585906B1 (en) | 2018-09-19 |
TWI511077B (zh) | 2015-12-01 |
JP5712295B2 (ja) | 2015-05-07 |
GB201016072D0 (en) | 2010-11-10 |
US20120079243A1 (en) | 2012-03-29 |
WO2012038713A1 (en) | 2012-03-29 |
MY168248A (en) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102346079B1 (ko) | 벡터 계산 유닛 | |
US11797304B2 (en) | Instruction set architecture for a vector computational unit | |
EP2569694B1 (en) | Conditional compare instruction | |
CN103119555A (zh) | 下一指令类型字段 | |
CN100357884C (zh) | 用于处理指令的方法、处理器以及系统 | |
CN103250131B (zh) | 包括用于早期远分支预测的影子缓存的单周期多分支预测 | |
EP0455345B1 (en) | Programmable controller | |
CN101802779B (zh) | 具有可重新组构的浮点单元的处理器 | |
KR20150019349A (ko) | 다중 쓰레드 실행 프로세서 및 이의 동작 방법 | |
JP5941488B2 (ja) | 条件付きショート前方分岐の計算的に等価な述語付き命令への変換 | |
CN104899181A (zh) | 用于处理向量操作数的数据处理装置和方法 | |
EP1546869A2 (en) | Apparatus, method, and compiler enabling processing of load immediate instructions in a very long instruction word processor | |
US20140129805A1 (en) | Execution pipeline power reduction | |
CN108139911A (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
CN101371223A (zh) | 运算数的提早有条件选择 | |
KR102332523B1 (ko) | 연산 처리 장치 및 방법 | |
JP4771079B2 (ja) | Vliw型プロセッサ | |
CN111742296B (zh) | 用于数据处理的装置、方法和计算机可读存储介质 | |
KR101420592B1 (ko) | 컴퓨터 시스템 | |
KR20150081148A (ko) | 프로세서 및 프로세서 제어 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |