CN107408039A - 供无序处理器执行循环指令的保留站电路、相关方法和计算机可读媒体 - Google Patents
供无序处理器执行循环指令的保留站电路、相关方法和计算机可读媒体 Download PDFInfo
- Publication number
- CN107408039A CN107408039A CN201680013286.4A CN201680013286A CN107408039A CN 107408039 A CN107408039 A CN 107408039A CN 201680013286 A CN201680013286 A CN 201680013286A CN 107408039 A CN107408039 A CN 107408039A
- Authority
- CN
- China
- Prior art keywords
- instruction
- reservation station
- circulation
- data flow
- consumer
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 239000012634 fragment Substances 0.000 claims abstract description 110
- 238000003860 storage Methods 0.000 claims abstract description 16
- 230000004044 response Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 abstract 1
- 238000007726 management method Methods 0.000 description 17
- 239000000872 buffer Substances 0.000 description 14
- 238000012545 processing Methods 0.000 description 7
- 238000012797 qualification Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000007420 reactivation Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/82—Architectures of general purpose stored program computers data or demand driven
- G06F15/825—Dataflow computers
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- 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
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
公开了提供对通过无序处理器OOP的循环指令的数据流执行的低开销管理以及相关电路、方法和计算机可读媒体。在一个方面中,提供一种包含多个保留站片段的保留站电路,每个保留站片段存储计算机程序循环的循环指令。每个保留站片段还存储指示是否可提供对应的循环指令以用于数据流执行的指令执行信用指示符。所述保留站电路还包含数据流监测器,其提供每条循环指令的条目,每个条目包括消费者计数指示符和保留站RS标签计数指示符。所述数据流监测器经配置以确定是否已基于循环指令的所述消费者计数指示符和所述RS标签计数指示符而执行所述循环指令的所有消费者指令。如果已执行,那么所述数据流监测器将指令执行信用发布给所述循环指令。
Description
优先权申请
本申请要求2015年3月20日提交且标题为“提供对通过无序处理器(OOP)的循环指令的数据流执行的低开销管理以及相关电路、方法和计算机可读媒体(PROVIDING LOWER-OVERHEAD MANAGEMENT OF DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS(OOPS),AND RELATED CIRCUITS,METHODS,AND COMPUTER-READABLEMEDIA)”的美国临时专利申请序列号62/135,738的优先权,所述申请的全文内容通过引用并入本文中。
本申请还要求2015年6月18日提交且标题为“提供对通过无序处理器(OOP)的循环指令的数据流执行的低开销管理以及相关电路、方法和计算机可读媒体(PROVIDINGLOWER-OVERHEAD MANAGEMENT OF DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS(OOPs),AND RELATED CIRCUITS,METHODS,AND COMPUTER-READABLEMEDIA)”的美国专利申请序列号14/743,198的优先权,所述申请的全文内容通过引用并入本文中。
技术领域
本公开的技术大体上涉及通过无序处理器(OOP)的循环指令的数据流执行。
背景技术
许多现代处理器是能够对程序指令进行数据流执行的无序处理器(OOP)。在使用数据流执行方法的情况下,OOP对程序指令的执行次序由每条程序指令的输入数据的可用性(“数据流次序”)而不是程序指令的程序次序来确定。因此,程序指令的所有输入数据一生成,OOP就可执行程序指令,这可能会产生性能增益。例如,当检索输入数据以便获得较旧程序指令时,OOP可继续执行能够立即执行的最近提取的指令,而不是不得不“故意拖延”(即,有意引入处理延迟)。以此方式,OOP可富有成效地利用处理器时钟周期(否则将被浪费)。
常规OOP可采用指令窗口,所述指令窗口指定可无序执行的程序指令集。当指令窗口内的程序指令的执行完成时,执行结果可为“确定”的或使所述执行结果不具有推测性,且可从指令窗口撤回程序指令以便为新的程序指令腾出空间以供执行。然而,在一些情况下,从指令窗口收回程序指令可导致OOP的操作效率低下。例如,如果程序指令是循环的一部分,那么可在多个循环迭代内反复地执行相同程序指令。因此,在执行循环时可从指令窗口反复地提取、执行和撤回程序指令。
可通过使用保留站片段来改善OOP在上述情况中的性能。保留站片段是可存储程序指令和执行所需的相关信息(例如操作数)的OOP微架构特征。OOP可将与循环相关联的每条程序指令加载对应的保留站片段。每个保留站片段可经配置以保持程序指令达指定次数的循环迭代,而不是在循环完成之前撤回程序指令。当保留站片段确定其程序指令的所有输入数据可用时,保留站片段将程序指令及其输入数据提供给处理器来执行。只有在循环已经完成所有迭代之后,才从对应的保留站片段撤回与所述循环相关联的程序指令。
使用保留站片段所引起的一个问题是相对于程序指令的输入数据的消费来管理输入数据的产生。如果生产者指令生成数据的速率大于消费者指令可将数据用作输入的速率,那么数据可能会丢失。或者,可能需要使用额外存储装置或缓冲机构,这对处理器周期和/或功耗来说可能较为昂贵。
发明内容
详细描述中所公开的各方面包含提供对通过无序处理器(OOP)的循环指令的数据流执行的低开销管理。还公开了相关电路、方法以及计算机可读媒体。就此而言,一方面,提供一种用于管理OOP中循环指令的数据流执行的保留站电路。保留站电路包括多个保留站片段。每个保留站片段包含经配置以存储循环指令的循环指令寄存器。每个保留站片段进一步包含指令执行信用指示符,其经配置以存储指示是否可提供循环指令以用于数据流执行的指令执行信用。保留站电路进一步包括数据流监测器,其包括对应于多个保留站片段的循环指令的多个条目。多个条目中的每个条目包括指示对应的循环指令的消费者指令数的消费者计数指示符,以及指示消费者指令的执行次数的保留站(RS)标签计数指示符。数据流监测器经配置以确定是否已基于第一循环指令的消费者计数指示符和RS标签计数指示符而执行所述第一循环指令的所有消费者指令。数据流监测器进一步经配置以响应于确定已执行第一循环指令的所有消费者指令而将指令执行信用发布给第一循环指令的保留站片段。通过在已经执行了循环指令的所有消费者指令之后追踪消费者指令的执行以及将指令执行信用发布给循环指令,数据流监测器可实现循环指令的数据流执行的管理而不会带来额外开销(例如额外缓冲空间)。
另一方面,提供一种用于管理OOP中循环指令的数据流执行的方法。所述方法包括通过数据流监测器确定是否已执行第一循环指令的所有消费者指令。此确定是基于指示第一循环指令的消费者指令数的第一循环指令的消费者计数指示符,以及指示消费者指令的执行次数的第一循环指令的RS标签计数指示符。所述方法进一步包括响应于确定已执行第一循环指令的所有消费者指令而将指令执行信用发布给对应于第一循环指令的保留站片段。
另一方面,提供一种其上存储有计算机可执行指令的非暂时性计算机可读媒体。计算机可执行指令在由处理器执行时致使处理器确定是否已执行第一循环指令的所有消费者指令。此确定是基于指示第一循环指令的消费者指令数的第一循环指令的消费者计数指示符,以及指示消费者指令的执行次数的第一循环指令的RS标签计数指示符。计算机可执行指令进一步致使处理器响应于确定已执行第一循环指令的所有消费者指令而将指令执行信用发布给对应于第一循环指令的保留站片段。
附图说明
图1是说明包含管理循环指令的数据流执行的保留站电路的示例性无序处理器(OOP)的框图;
图2是说明示例性保留站片段的图;
图3是说明多个保留站片段以及每个保留站片段之间的数据依赖性的框图;
图4是说明由示例性数据流监测器提供给图3的保留站片段以用于追踪消费者指令的执行的条目的框图;
图5是说明在示例性循环执行期间图3的每个保留站片段的指令执行信用和消费者指令计数的图表;
图6A到6B是说明用于提供图1的示例性OOP中的循环指令的低开销管理的示例性操作的流程图;并且
图7是可包含图1的保留站电路的示例性基于处理器的系统的框图。
具体实施方式
现参考各图,描述本公开的数个示例性方面。词语“示例性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示例性”的任何方面未必理解为比其它方面优选或有利。
详细描述中所公开的各方面包含提供对通过无序处理器(OOP)的循环指令的数据流执行的低开销管理。还公开了相关电路、方法以及计算机可读媒体。就此而言,一方面,提供一种用于管理OOP中循环指令的数据流执行的保留站电路。保留站电路包括多个保留站片段。每个保留站片段包含经配置以存储循环指令的循环指令寄存器。每个保留站片段进一步包含指令执行信用指示符,其经配置以存储指示是否可提供循环指令以用于数据流执行的指令执行信用。保留站电路进一步包括数据流监测器,其包括对应于多个保留站片段的循环指令的多个条目。多个条目中的每个条目包括指示对应的循环指令的消费者指令数的消费者计数指示符,以及指示消费者指令的执行次数的保留站(RS)标签计数指示符。数据流监测器经配置以确定是否已基于第一循环指令的消费者计数指示符和RS标签计数指示符而执行所述第一循环指令的所有消费者指令。数据流监测器进一步经配置以响应于确定已执行第一循环指令的所有消费者指令而将指令执行信用发布给第一循环指令的保留站片段。通过在已经执行完循环指令的所有消费者指令之后追踪消费者指令的执行以及将指令执行信用发布给循环指令,数据流监测器可实现循环指令的数据流执行的管理而不会带来额外开销(例如额外缓冲空间)。
就此而言,图1是经配置以提供程序指令的无序数据流执行的低开销管理的OOP100的框图。具体地说,OOP 100包含用于管理循环指令的数据流执行的保留站电路102。OOP 100可涵盖已知数字逻辑元件、半导体电路、处理核心和/或存储器结构以及其它元件中的任一个或其组合。本文中所描述的各方面并不限于任何特定元件布置,且所公开的技术可易于扩展到半导体裸片或封装上的各种结构和布局。虽然图1说明了单个OOP100,但应理解一些方面可提供多个通信耦合的OOP 100。
在一些环境中,应用程序可概念化为内核的“流水线”(即,特定功能区域),其中每个内核在穿过流水线的数据令牌流上操作。图1的OOP 100可体现用于实施一或多个内核的功能性以及用于将所述功能性反复地应用到流式传输到OOP 100的不同数据集的可编程核心。为了以高效节能方法提供内核功能性,OOP 100可提供本文中被称为“指令再活化”的过程特征。指令再活化使程序指令集能够一起一次性加载OOP 100,且随后被多次执行,而不会从OOP 100撤回或收回。以此方式,OOP 100可对流式传输到OOP 100中的连续数据项迭代地执行指令集。指令再活化因此可通过消除对多级执行流水线的需要而减少OOP 100的能耗且改善其处理器性能。由于编程构造的迭代特性(例如循环),指令再活化可使OOP 100尤其适合于处理包括循环指令的内核。
OOP 100组织成一或多个保留站块(本文中也被称为“RSB”),其中每个保留站块可对应于一般类型的程序指令。例如,流RSB 104可处理用于经由通道单元106接收数据流的指令,如由箭头108指示。计算RSB 110可处理存取一或多个功能单元112(例如,算术逻辑单元(ALU)和/或浮点单元)以执行计算操作的指令,如由箭头114指示。由计算RSB 110中的指令产生的结果可作为输入由计算RSB 110中的其它指令消费。加载RSB116处理用于加载来自数据存储区(例如存储器118)的数据以及将数据输出到数据存储区,如由箭头120和122指示。应理解,OOP 100可组织成流RSB 104、计算RSB 110和/或加载RSB 116中的每一个的多于一个。流RSB 104、计算RSB 110和加载RSB 116分别包含一或多个保留站片段(本文中也被称为“RSS”)124(0-X)、126(0-Y)和128(0-Z)。保留站片段124(0-X)、126(0-Y)和128(0-Z)中的每一个存储单一指令以及驻存指令的数据流执行所需的相关联数据。
在典型操作中,输入通信总线130将待由OOP 100执行的内核指令传达到OOP 100的指令单元132,如由箭头134指示。指令单元132接着基于指令类型而将指令加载到流RSB104的一或多个保留站片段124(0-X)(如由箭头136指示)、计算RSB 110的一或多个保留站片段126(0-Y)(如由箭头138指示)和/或加载RSB 116的一或多个保留站片段128(0-Z)(如由箭头140指示)。数据流监测器142还可接收例如要执行的循环迭代次数等初始化数据,如由箭头143指示。
OOP 100接着可以任何合适的次序执行保留站片段124(0-X)、126(0-Y)和/或128(0-Z)的驻存指令。作为非限制性实例,OOP 100可以数据流执行次序来执行保留站片段124(0-X)、126(0-Y)和/或128(0-Z)的驻存指令。通过执行每条驻存指令和驻存指令的标识符而产生的结果(如果存在)由保留站片段124(0-X)、126(0-Y)和/或128(0-Z)广播,如分别由箭头144、146和148指示。保留站片段124(0-X)、126(0-Y)和/或128(0-Z)接着接收广播数据作为输入流(如分别由箭头150、152和154指示)。保留站片段124(0-X)、126(0-Y)和/或128(0-Z)可监测由箭头150、152和154指示的相应输入流以根据先前执行的指令标识需要作为输入操作数(未展示)的结果。一旦检测到,就可存储输入操作数,且在接收到所有所需操作数之后,可提供与保留站片段124(0-X)、126(0-Y)和/或128(0-Z)相关联的驻存指令以用于数据流执行。循环的循环指令因此可以数据流方式迭代地执行,直到数据流监测器142检测到循环的所有迭代已经完成为止。数据可从OOP 100流式传出到输出通信总线156,如由箭头158指示。
图1的OOP 100可能引起的一个问题是相对于指令的输入数据的消费来管理输入数据的产生。如果生产者指令以超过消费者指令可将数据用作输入的速率的速率生成数据,那么数据可能会丢失。可通过使用用于输入数据中间存储装置或其它缓冲机构而缓和此问题,但是这以额外的处理器周期和/或能耗为代价。
就此而言,提供图1的保留站电路102。保留站电路102的数据流监测器142和保留站片段124(0-X)、126(0-Y)和/或128(0-Z)相配合以提供确定何时允许在循环迭代期间的任何给定时间执行每条指令的基于信用的系统。具体地说,图1的数据流监测器142用于确保在循环迭代期间只有其所有消费者指令已经完成执行才容许执行循环指令(通过例如发布指令执行信用)。如本文所使用,“消费者指令”是指作为输入的取决于先前循环指令(“生产者指令”)的输出的循环指令。给定循环指令因此既可以是消费者指令,也可以是生产者指令。
保留站片段124(0-X)、126(0-Y)和128(0-Z)中的每一个与指令执行信用指示符相关联,这在下文相对于图2进行更详细的论述。在一些方面,每个指令执行信用指示符可包括计数器,和/或可以是旗标和/或其它状态指示符。作为待由OOP 100执行的内核的初始化的部分,数据流监测器142可将初始指令执行信用160分配给保留站片段124(0-X)、126(0-Y)和128(0-Z)中的每一个,如分别由箭头163、164和166指示。保留站片段124(0-X)、126(0-Y)和128(0-Z)中的每一个使其相关联的驻存循环指令的执行取决于相关联的指令执行信用指示符。换句话说,只有相关联的驻存循环指令由对应的指令执行信用指示符指示,才可提供相关联的驻存循环指令以供保留站片段124(0-X)、126(0-Y)和128(0-Z)执行。在一些方面,其中指令执行信用指示符是计数器,只有指令执行信用指示符的值大于零(0),才可提供相关联的驻存循环指令以用于执行。以此方式,可在消费者指令能够通过消费所产生的输入数据而“跟上”之前一直阻止执行生产者指令。
数据流监测器142经配置以在已执行相关联的驻存循环指令的所有消费者指令时,将额外指令执行信用162发布给保留站片段124(0-X)、126(0-Y)和128(0-Z)中的每一个。为了确定何时可将额外指令执行信用162分配给保留站片段124(0-X)、126(0-Y)和128(0-Z),数据流监测器142维持对应于与保留站片段124(0-X)、126(0-Y)和128(0-Z)相关联的每条循环指令的条目(未展示)。每个条目包含消费者计数指示符(未展示),其指示取决于循环指令的输出的消费者指令数。每个条目进一步包含RS标签计数指示符(未展示),其指示对应于条目的循环指令的消费者指令已执行的次数。当执行保留站片段124(0-X)、126(0-Y)和128(0-Z)的循环指令时,数据流监测器142从保留站片段124(0-X)、126(0-Y)和128(0-Z)接收一或多个操作数源RS标签(未展示),如由箭头168、170和172指示。每个操作数源RS标签标识与生成由循环指令使用的操作数的“生产者”循环指令相关联的保留站片段124(0-X)、126(0-Y)和128(0-Z)。数据流监测器142使对应于每个操作数源RS标签的“生产者”循环指令的RS标签计数指示符递增,以指示已执行“生产者”循环指令的消费者指令。
数据流监测器142接着可通过将每条循环指令的消费者计数指示符与对应的RS标签计数指示符进行比较而评估条目,以确定是否已执行每条循环指令的所有消费者指令。如果消费者计数指示符与RS标签计数指示符相等,那么数据流监测器142可得出已执行循环指令的所有消费者指令的结论。数据流监测器142接着可将循环指令的RS标签计数指示符复位为零(0),且将执行信用发布给循环指令的保留站片段124(0-X)、126(0-Y)和128(0-Z)。以此方式,可能在已执行其所有消费者指令之前一直不容许再次执行循环指令。这可通过例如不需要额外缓冲存储空间以追踪不同循环迭代的不同操作数值来实现循环指令的数据流执行的低开销管理。以下相对于图4更详细地论述由数据流监测器142存储的条目的元素,且以下相对于图5更详细地论述用于调整RS标签计数指示符和发布额外执行信用的数据流监测器142的示例性操作。
数据流监测器142、流RSB 104、计算RSB 110和/或加载RSB 116的各方面可采用不同技术来检测循环迭代的完成。在一些方面,RSB(即,流RSB 104、计算RSB 110和加载RSB116中的一个)可维持在循环迭代I期间已执行的指令的计数。当针对循环迭代I执行的指令的计数变得等于RSB中的指令数时,RSB将结束循环迭代I状态(未展示)传达到数据流监测器142。当数据流监测器142已从所有RSB接收到结束循环迭代I状态时,数据流监测器142了解针对循环迭代I的所有指令已结束执行。数据流监测器142接着可发布额外指令执行信用162。
一些方面可设置每个保留站片段124(0-X)、126(0-Y)和128(0-Z)包含结束位(未展示),其表示每条驻存指令是否是指令的数据流排序中的“叶”指令(即,其上不存在数据依赖性的指令)。当所有结束旗标指令已经执行时,循环迭代完成。因此,每条驻存指令在执行时广播其结束旗标。数据流监测器142针对特定循环迭代I维持结束旗标指令执行次数的计数,以及循环迭代I内的结束旗标指令的总数。一旦针对循环迭代I的结束旗标指令执行次数变得等于结束旗标指令的总数,数据流监测器142可得出针对循环迭代I的所有指令已完成执行的结论。数据流监测器142接着可发布额外指令执行信用162。
图2是说明例如图1的保留站片段124(0-X)、126(0-Y)或128(0-Z)中的一个的示例性保留站片段200的元件的图。应理解,图2中所展示的元件仅用于说明性目的,且图1的保留站片段124(0-X)、126(0-Y)和/或128(0-Z)的一些方面可包含比图2中所展示的更多或更少的元件。
图2的保留站片段200包含RS标签202,其充当保留站片段200的唯一标识符。保留站片段200还包含循环指令寄存器204,其存储与保留站片段200相关联的循环指令(“instr”)206。作为非限制性实例,循环指令206可以是指令操作码。在图2的实例中,RS标签202包含7位标识符(ID)标签208和1位结束旗标210。在被设定时,结束旗标210指示与保留站片段200相关联的循环指令206是“叶”指令。通过检测已执行的循环指令206的RS标签202内的设定结束旗标210,图1的数据流监测器142可确定循环迭代已完成。在一些方面,循环迭代可包含超过一个叶指令。因此,数据流监测器142可经配置以追踪在循环迭代内执行的叶指令的计数。应理解保留站片段200的其它方面可采用其它技术以确定循环迭代已完成。作为非限制性实例,RSB(保留站片段200是其一部分)可维持已在每个循环迭代期间执行的指令的计数。
保留站片段200还提供供循环指令206执行可能需要的数据的存储。在图2的实例中,循环指令206与第一操作数和第二操作数相关联。因此,为了存储与第一操作数相关联的数据,保留站片段200提供操作数源RS标签212和操作数缓冲区214(0)。操作数源RS标签212可标识与生成第一操作数的“生产者”指令(未展示)相关联的保留站片段(未展示)。操作数缓冲区214(0)包含一或多个操作数缓冲区条目216(0)-216(N)以及对应的一或多个操作数备用旗标218(0)-218(N)。操作数缓冲区条目216(0)-216(N)中的每一个可存储在对应的循环迭代0-N(未展示)期间生成的操作数值,而每个操作数备用旗标218(0)-218(N)可指示相关联的操作数缓冲区条目216(0)-216(N)何时准备好由循环指令206消费。
类似地,为了存储与第二操作数相关联的数据,保留站片段200提供操作数源RS标签220和操作数缓冲区214(1)。操作数缓冲区214(1)包含一或多个操作数缓冲区条目222(0)-222(N)以及对应的一或多个操作数备用旗标224(0)-224(N)。操作数源RS标签220、操作数缓冲区条目222(0)-222(N)和操作数备用旗标224(0)-224(N)可以分别对应于操作数源RS标签212、操作数缓冲区条目216(0)-216(N)和操作数备用旗标218(0)-218(N)的功能性的方法起作用。
保留站片段200还包含迭代计数器226。迭代计数器226可被设定成初始值为零(0),且随后可以随着循环指令206的每次执行而递增。当提供循环指令206以用于数据流执行时,迭代计数器226的当前值可由保留站片段200提供。以此方式,迭代计数器226的当前值可由随后执行的消费者指令使用以确定其中执行循环指令206的循环迭代。
保留站片段200另外包含指令执行信用指示符228,其存储由图1的数据流监测器142分配给保留站片段200的指令执行(“instr ex”)信用230。保留站片段200可配置成仅当指令执行信用指示符228指示可执行循环指令206时才提供循环指令206以用于执行。例如,在一些方面,指令执行信用指示符228可包括计数器,所述计数器的值可在循环指令206每次执行之后递减。保留站片段200因此可配置成仅当指令执行信用指示符228当前正在存储大于零(0)的值时才提供循环指令206以用于执行。
图3到5说明如由图1的保留站电路102实施的基于指令执行信用执行指令的示例性保留站片段可如何提供循环指令的数据流执行的低开销管理。图3展示保留站片段及它们之间的数据依赖性。图4说明对应于图3的保留站片段的数据流监测器条目的初始状态。图5说明指令执行信用可如何被分配给图3的保留站片段以控管循环迭代期间的循环指令的数据流执行。
在图3中,说明共计六个(6)保留站片段(RSS)。每个RSS 300、302和304与从例如图1的通道单元106等通道单元检索数据令牌(未展示)的驻存流指令(未展示)相关联。为清楚起见,假定始终易于从通道单元106获得每个RSS 300、302和304的驻存流指令的输入。RSS306和RSS 308各自与计算两个操作数(未展示)的乘积的乘法指令(未展示)相关联。RSS306接收由RSS 300和RSS 302提供的数据作为操作数,如分别由箭头310和312指示。类似地,RSS 308接收由RSS 302和RSS 304提供的数据作为操作数,如分别由箭头314和316指示。数据依赖性因此存在于RSS 306与每个RSS 300和302之间、以及RSS 308与每个RSS 302和304之间。RSS 318与计算两个操作数的总和的加法指令(未展示)相关联。RSS 318接收由RSS 306和RSS 308生成的结果作为操作数,如分别由箭头320和322指示。
在图3的实例中,不存在任何依赖于由与RSS 318相关联的加法指令生成的结果的指令。因此,RSS 318包含结束旗标324以向图1的数据流监测器142指示RSS 318的加法指令的执行表示一个循环迭代的结束。在一些方面,结束旗标324可包括作为RSS318的RS标签的一部分存储的一位指示符,例如图2的RS标签202的结束旗标210。
图4说明可由图1的数据流监测器142提供的分别对应于图3的RSS 300、302、304、306、308和318的示例性数据流监测器条目402、404、406、408、410和412的框图400。如图4中所见,条目402-412中的每一个包含消费者计数指示符414和RS标签计数指示符416。每个条目402-412的消费者计数指示符414指示与对应的RSS 300-308、318相关联的循环指令(未展示)的消费者指令数。因此,对应于RSS 300、304、306、308和318的循环指令各自具有一条消费者指令,而与RSS 302相关联的循环指令具有两条消费者指令。条目402-412中的每一个的RS标签计数指示符416被初始化为零(0)。
为了说明图1的保留站电路102可如何利用图4的条目402-412以将指令执行信用分配给图3的每个RSS 300、302、304、306、308和318来管理循环指令的数据流执行,提供了图5。图5说明指令执行信用(例如图2的指令执行信用230)相对于循环迭代变化的图表500,以及RS标签计数指示符(例如图4的RS标签计数指示符416)相对于循环迭代变化的图表502。图3的每个RSS 300、302、304、306、308和318由图表500和502中的每一个中的列表示,同时图表500和502的行表示循环迭代期间的时间间隔504。在图5中,假定例如图2的指令执行信用指示符228等与每个RSS 300、302、304、306、308和318相关联的指令执行信用指示符是计数器。为清楚起见,参考图1到4的元件描述图5。
在时间间隔0处,保留站电路102的数据流监测器142将例如图1的初始指令执行信用160等初始指令执行信用分配给每个RSS 300、302、304、306、308和318。在此实例中,初始指令执行信用160具有的值为一(1)。数据流监测器142进一步使每个RSS300、302、304、306、308和318的RS标签计数指示符初始化为零(0)以指示尚未执行任何相关联的驻存循环指令的消费者指令。接着开始循环指令的执行。
由于RSS 300、RSS 302和RSS 304的驻存流指令的输入数据易于获得,因此驻存流指令实际上没有数据依赖性。因此,与RSS 300、RSS 302和RSS 304相关联的驻存流指令具有数据流执行的资格。在图5的实例中,在时间间隔1处,RSS 300提供其驻存流指令以用于执行。RSS 300接着使其指令执行信用递减至零(0)。与RSS 300相关联的流指令的执行结果将被广播给其它RSS 302、304、306、308和318,且将在例如图2的操作数缓冲区条目216等操作数缓冲区条目中由RSS 306进行检测和存储。以类似方式,RSS 302提供其驻存流指令以用于执行,且在时间间隔2处使其指令执行信用递减至零(0)。与RSS 302相关联的流指令的执行结果将作为操作数由RSS 306和RSS 308两者进行检测和存储。由于与RSS 306和RSS308相关联的指令确实取得操作数,所以它们不会向数据流监测器142供应任何操作数源RS标签,且因此图表502中所展示的RS标签计数指示符在时间间隔2内不会变化。
在时间间隔3处,已接收到RSS 306的驻存乘法指令的两个操作数,且因此驻存乘法指令具有数据流执行的资格。RSS 304的驻存流指令也具有数据流执行的资格,因为其具有大于零(0)的指令执行信用且没有有效的数据依赖性。在此实例中,RSS 306将其驻存乘法指令提供给例如图1的功能单元112等功能单元以用于执行。RSS 306接着使其指令执行信用递减至零(0)。RSS 306的乘法指令的执行结果将由RSS 318接收作为操作数。RSS 306的操作数源RS标签(即,RSS 300和RSS 302的RS标签)也将由数据流监测器142接收,所述数据流监测器142使RSS 300和RSS 302的RS标签计数指示符递增至一(1)。应注意在时间间隔3处,尚不满足与RSS 308相关联的驻存乘法指令以及与RSS 318相关联的驻存加法指令的数据依赖性,且因此这些指令不具有数据流执行的资格。
在时间间隔4处,数据流监测器142确定RSS 300的消费者计数指示符(其具有的值为1,如图4中所见)等于RSS 300的RS标签计数指示符,如图表502中所见。因此,数据流监测器142得出已执行与RSS 300相关联的循环指令的所有消费者指令的结论。数据流监测器142因此将额外执行信用发布给RSS 300,从而使其指令执行信用变为一(1),且将RSS 300的RS标签计数指示符复位为零(0)。
在时间间隔5处,与RSS 300和RSS 304相关联的驻存流指令中的任一个具有数据流执行的资格。在图5的实例中,RSS 304提供其驻存流指令以用于执行,且使其指令执行信用递减至零(0)。因此,在时间间隔6处,已接收到RSS 308的驻存乘法指令的两个操作数(从RSS 302和RSS 304),且因此驻存乘法指令具有数据流执行的资格。因此,在此实例中,RSS308将其驻存乘法指令提供给例如图1的功能单元112等的功能单元以用于执行。RSS 308接着使其指令执行信用递减至零(0)。RSS 308的乘法指令的执行结果将由RSS 318接收作为操作数。RSS 308的操作数RS标签(即,RSS 302和RSS 304的RS标签)也将由数据流监测器142接收,所述数据流监测器142使RSS 302的RS标签计数指示符递增至二(2)且使RSS 304的RS标签计数指示符递增至一(1)。
在时间间隔7处,数据流监测器142确定RSS 302的消费者计数指示符(其具有的值为2,如图4中所见)等于RSS 302的RS标签计数指示符,如图表502中所见。因此,数据流监测器142得出已执行与RSS 302相关联的循环指令的所有消费者指令的结论。数据流监测器142因此将额外执行信用发布给RSS 302,从而使其指令执行信用变为一(1),且将RSS 302的RS标签计数指示符复位为零(0)。类似地,数据流监测器142确定RSS 304的消费者计数指示符(即,1,如图4中所见)等于RSS 304的RS标签计数指示符,如图表502中所展示。数据流监测器142得出已执行与RSS 304相关联的循环指令的所有消费者指令的结论,且将额外执行信用发布给RSS 304,从而使其指令执行信用变为一(1)。数据流监测器142还将RSS 302的RS标签计数指示符复位为零(0)。
在时间间隔8处,与RSS 300、RSS 302和RSS 304相关联的驻存流指令以及与RSS318相关联的驻存加法指令各自具有执行的资格。在图5的实例中,与RSS 300、RSS 302和RSS 304相关联的驻存流指令经选择以分别在时间间隔8、9和10期间执行。RSS 300、RSS302和RSS 304中的每一个的指令执行信用递减至零(0)。
最后,在时间间隔11处,与RSS 318相关联的驻存加法指令是仅有的其中指令执行信用大于零(0)的指令。因此,虽然输入数据可用于RSS 300、RSS 302、RSS 306、RSS308和/或RSS 318的驻存指令,但是所有驻存指令都不可再次执行,直到数据流监测器142分配额外信用为止。这允许RSS 318的驻存指令通过提供消费由其生产者指令生产的数据的时间而“跟上”。因此,在时间间隔11处,RSS 318将其驻存加法指令提供给功能单元112以用于执行,且使其指令执行信用递减至零(0)。RSS 318的操作数RS标签(即,RSS 306和RSS 308的RS标签)也将由数据流监测器142接收,所述数据流监测器142使RSS 306和RSS 308的RS标签计数指示符递增至一(1)。
在一些方面,在执行RSS 318的驻存加法指令时,数据流监测器142可检测RSS 318的结束旗标324且可确定一个循环迭代已完成。因此,在时间间隔11处,数据流监测器142可将额外指令执行信用分配给RSS 300、RSS 302、RSS 304、RSS 306、RSS 308和RSS 318(未展示)中的每一个。在此情况下,额外指令执行信用的分配将具有以下影响:使与每个RSS300、302、304、306、308和318相关联的指令执行信用递增至一(1)。RSS 300、RSS 302、RSS304、RSS 306、RSS 308和RSS 318的驻存指令的数据流执行将接着以此方式继续进行。
为了说明用于提供图1的示例性OOP 100中的循环指令的低开销管理的示例性操作,提供了图6A和6B。图6A是流程图,其说明用于分配初始指令执行信用以及使用例如图4的RS标签计数指示符416等的RS标签计数指示符来追踪消费者指令的执行的操作。图6B展示用于确定是否已执行循环指令的所有消费者指令且因此是否可发布指令执行信用的操作。为清楚起见,参考图1到4的元件描述图6A和6B。
在图6A中,操作从以下开始:数据流监测器142任选地将初始指令执行信用160分配给对应于循环指令206的例如保留站片段200等的保留站片段(框600)。如上文所论述,每个保留站片段300、302、304、306、308、318可存储循环的循环指令206。保留站片段200接着确定保留站片段200的指令执行信用230是否指示可提供循环指令206以用于数据流执行(框602)。如果指令执行信用230指示不可提供循环指令206以用于数据流执行,那么处理可在图6A的框602处继续。然而,如果保留站片段200在框602处确定指令执行信用230指示可提供循环指令206以用于数据流执行,那么保留站片段200提供保留站片段200的循环指令206以用于数据流执行(框604)。在一些方面,框604的操作可包含:保留站片段200确定保留站片段200的一或多个操作数缓冲区214含有循环指令206所需的一或多个操作数。保留站片段200接着可提供循环指令206和一或多个操作数以用于数据流执行。
在提供循环指令206以用于数据流执行之后,保留站片段200可使循环指令206的指令执行信用230递减(框606)。数据流监测器142接着可接收循环指令206的一或多个操作数源RS标签212、220(框608)。数据流监测器142随后可使由一或多个操作数源RS标签212、220指示的一或多个条目402-412的RS标签计数指示符416递增(框610)。处理接着在图6B的框612处恢复。
现在参考图6B,数据流监测器142确定是否已基于循环指令206的消费者计数指示符414和RS标签计数指示符416而执行循环指令206的所有消费者指令(框612)。在一些方面,消费者计数指示符414指示循环指令206的消费者指令数,而RS标签计数指示符416指示消费者指令的执行次数。一些方面可设置数据流监测器142通过确定循环指令206的消费者计数指示符414和RS标签计数指示符416是否相等而确定是否已执行循环指令206的所有消费者指令。如果数据流监测器142在框612处确定尚未执行循环指令206的所有消费者指令,那么处理可在图6A的框602处恢复。然而,如果数据流监测器142在框612处确定已执行循环指令206的所有消费者指令,那么数据流监测器142将额外指令执行信用162发布给对应于循环指令206的保留站片段200(框614)。数据流监测器142接着可将循环指令206的RS标签计数指示符416复位为零(0)(框616)。以此方式,通过在循环指令的所有消费者指令已经执行时追踪循环指令的消费者指令的执行以及将指令执行信用发布给循环指令,数据流监测器142可提供循环指令的数据流执行的低开销管理。
根据本文所公开的各方面的提供对通过OOP的循环指令的数据流执行的低开销管理以及相关电路、方法和计算机可读媒体可提供于任何基于处理器的装置中或集成到任何基于处理器的装置中。实例包含(但不限于)机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、桌上型计算机、个人数字助理(PDA)、监测器、计算机显示器、电视机、调谐器、收音机、卫星收音机、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘(DVD)播放器以及便携式数字视频播放器。
就此而言,图7说明可采用图1中所说明的保留站电路102的基于处理器的系统700的实例。在此实例中,基于处理器的系统700包含一或多个中央处理单元(CPU)702,其各自包含一或多个处理器704,所述一或多个处理器可包括图1的保留站电路(RSC)102。CPU 702可具有耦合到处理器704以用于快速存取临时存储数据的高速缓存存储器706。CPU 702耦合到系统总线708且可使包含于基于处理器的系统700中的主控装置与受控装置相互耦合。众所周知,CPU 702通过经由系统总线708交换地址、控制和数据信息而与这些其它装置通信。例如,CPU 702可将总线交易请求传达到存储器系统710,所述存储器系统710提供存储器单元712(0)-712(N)。
其它主控和受控装置可连接到系统总线708。如图7中所说明,这些装置可包含(作为实例)存储器控制器714、一或多个输入装置716、一或多个输出装置718、一或多个网络接口装置720和一或多个显示器控制器722。输入装置716可包含任何类型的输入装置,包含但不限于输入键、开关、话音处理器等。输出装置718可包含任何类型的输出装置,包含但不限于音频、视频、其它视觉指示符等等。网络接口装置720可以是经配置以允许数据与网络724之间的交换的任何装置。网络724可以是任何类型的网络,包含但不限于有线或无线网络、私人或公共网络、局域网(LAN)、广域网(WLAN)和因特网。网络接口装置720可经配置以支持所要的任何类型的通信协议。
CPU 702还可经配置以经由系统总线708存取显示器控制器722以控制发送到一或多个显示器726的信息。显示器控制器722将信息发送到显示器726以经由一或多个视频处理器728显示,所述视频处理器728处理待显示成适合于显示器726的格式的信息。显示器726可包含任何类型的显示器,包含但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
所属领域的技术人员将进一步了解,结合本文中公开的各方面所描述的各种说明性逻辑块、模块、电路和算法可被实施为电子硬件、存储于存储器或另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或这两者的组合。作为实例,本文中所描述的主控装置和受控装置可用于任何电路、硬件组件、集成电路(IC)或IC芯片中。本文所公开的存储器可以是任何类型和大小的存储器,且可经配置以存储所要的任何类型的信息。为清楚地说明这种可互换性,上文已大体上关于各种说明性组件、块、模块、电路和步骤的功能性对它们加以描述。如何实施此功能性取决于特定应用、设计选项和/或强加于整个系统的设计约束。熟练的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为引起偏离本公开的范围。
结合本文中公开的各方面所描述的各种说明性逻辑块、模块和电路可用以下各项来实施或执行:处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或其经设计以执行本文中所描述的功能的任何组合。处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器、一或多个微处理器结合DSP核心,或任何其它此类配置。
本文公开的各方面可以硬件和存储于硬件中的指令来体现,且可驻存于(例如)随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可装卸式磁盘、CD-ROM或所属领域中已知的任何其它形式的计算机可读媒体中。示例性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并且将信息写入到存储媒体。在替代方案中,存储媒体可集成到处理器。处理器和存储媒体可驻存于ASIC中。ASIC可驻存于远程站中。在替代方案中,处理器和存储媒体可作为离散组件驻存于远程站、基站或服务器中。
还应注意,描述本文中的示例性方面中的任一个中所描述的操作步骤以提供实例和论述。可以用除了所说明的顺序之外的大量不同顺序执行所描述的操作。此外,单个操作步骤中所描述的操作实际上可在许多不同步骤中执行。另外,可组合在示例性方面中所论述的一或多个操作步骤。应理解,所属领域的技术人员将容易清楚,流程图中所说明的操作步骤可经受众多不同的修改。所属领域的技术人员还将了解,可使用多种不同技术和技法中的任一种来表示信息和信号。例如,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
提供本公开的前述描述以使所属领域的技术人员能够制造或使用本公开。所属领域的技术人员将易于清楚对本公开的各种修改,且本文中界定的一般原理可应用于其它变化而不脱离本公开的精神或范围。因此,本公开并不意欲限于本文中所描述的实例和设计,而是应被赋予与本文中所公开的原理和新颖特征相一致的最广范围。
Claims (20)
1.一种用于管理无序处理器OOP中循环指令的数据流执行的保留站电路,其包括:
多个保留站片段,其各自包括:
循环指令寄存器,其经配置以存储循环指令;以及
指令执行信用指示符,其经配置以存储指示是否可提供所述循环指令以用于数据流执行的指令执行信用;以及
数据流监测器,其包括对应于所述多个保留站片段的所述循环指令的多个条目,每个条目包括:
消费者计数指示符,其指示对应的循环指令的消费者指令数;以及
保留站RS标签计数指示符,其指示所述消费者指令的执行次数;
所述数据流监测器经配置以:
确定是否已基于第一循环指令的所述消费者计数指示符和所述RS标签计数指示符而执行所述第一循环指令的所有所述消费者指令;并且
响应于确定已执行所述第一循环指令的所有所述消费者指令,将指令执行信用发布给所述第一循环指令的保留站片段。
2.根据权利要求1所述的保留站电路,其中所述数据流监测器经配置以通过确定所述第一循环指令的所述消费者计数指示符和所述RS标签计数指示符是否相等而确定是否已执行所述第一循环指令的所有所述消费者指令。
3.根据权利要求1所述的保留站电路,其中所述数据流监测器进一步经配置以响应于确定已执行所述第一循环指令的所有所述消费者指令,将所述第一循环指令的所述RS标签计数指示符复位为零(0)。
4.根据权利要求1所述的保留站电路,其中所述数据流监测器进一步经配置以在执行第二循环指令时:
接收所述第二循环指令的一或多个操作数源RS标签;并且
使由所述一或多个操作数源RS标签指示的所述多个条目中的每个条目的所述RS标签计数指示符递增。
5.根据权利要求1所述的保留站电路,其中所述数据流监测器进一步经配置以将初始指令执行信用分配给所述多个保留站片段中的每个保留站片段的所述指令执行信用指示符。
6.根据权利要求1所述的保留站电路,其中所述多个保留站片段中的每个保留站片段经配置以反复地:
确定所述保留站片段的所述指令执行信用指示符的所述指令执行信用是否指示可提供所述循环指令以用于数据流执行;并且
响应于确定所述指令执行信用指示可提供所述循环指令以用于数据流执行:
提供所述保留站片段的循环指令以用于数据流执行;并且
使所述保留站片段的所述指令执行信用递减。
7.根据权利要求1所述的保留站电路,其集成到集成电路IC中。
8.根据权利要求1所述的保留站电路,其集成到选自由以下组成的群组的装置中:机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、桌上型计算机、个人数字助理PDA、监测器、计算机显示器、电视机、调谐器、收音机、卫星收音机、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘DVD播放器以及便携式数字视频播放器。
9.一种用于管理无序处理器OOP中循环指令的数据流执行的方法,其包括:
通过数据流监测器确定是否已基于指示第一循环指令的消费者指令数的所述第一循环指令的消费者计数指示符以及指示所述消费者指令的执行次数的所述第一循环指令的保留站RS标签计数指示符而执行所述第一循环指令的所有消费者指令;并且
响应于确定已执行所述第一循环指令的所有所述消费者指令,将指令执行信用发布给对应于所述第一循环指令的保留站片段。
10.根据权利要求9所述的方法,其中确定是否已执行所述第一循环指令的所有所述消费者指令包括确定所述第一循环指令的所述消费者计数指示符和所述RS标签计数指示符是否相等。
11.根据权利要求9所述的方法,其进一步包括:响应于确定已执行所述第一循环指令的所有所述消费者指令,将所述第一循环指令的所述RS标签计数指示符复位为零(0)。
12.根据权利要求9所述的方法,其进一步包括在执行第二循环指令时:
接收所述第二循环指令的一或多个操作数源RS标签;以及
使由所述一或多个操作数源RS标签指示的一或多条循环指令的所述RS标签计数指示符递增。
13.根据权利要求9所述的方法,其进一步包括将初始指令执行信用分配给对应于所述第一循环指令的所述保留站片段。
14.根据权利要求9所述的方法,其进一步包括针对多个保留站片段的每条循环指令:
确定所述循环指令的所述保留站片段的所述指令执行信用是否指示可提供所述循环指令以用于数据流执行;以及
响应于确定所述循环指令的所述保留站片段的所述指令执行信用指示可提供所述循环指令以用于数据流执行:
提供所述循环指令以用于数据流执行;以及
使所述循环指令的所述保留站片段的所述指令执行信用递减。
15.一种其上存储有计算机可执行指令的非暂时性计算机可读媒体,所述计算机可执行指令在由处理器执行时致使所述处理器进行以下操作:
通过数据流监测器确定是否已基于指示第一循环指令的消费者指令数的所述第一循环指令的消费者计数指示符以及指示所述消费者指令的执行次数的所述第一循环指令的保留站RS标签计数指示符而执行所述第一循环指令的所有消费者指令;并且
响应于确定已执行所述第一循环指令的所有所述消费者指令,将指令执行信用发布给对应于所述第一循环指令的保留站片段。
16.根据权利要求15所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器通过确定所述第一循环指令的所述消费者计数指示符和所述RS标签计数指示符是否相等而确定是否已执行所述第一循环指令的所有所述消费者指令。
17.根据权利要求15所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器响应于确定已执行所述第一循环指令的所有所述消费者指令而将所述第一循环指令的所述RS标签计数指示符复位为零(0)。
18.根据权利要求15所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器在执行第二循环指令时:
接收所述第二循环指令的一或多个操作数源RS标签;并且
使由所述一或多个操作数源RS标签指示的一或多条循环指令的所述RS标签计数指示符递增。
19.根据权利要求15所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器将初始指令执行信用分配给对应于所述第一循环指令的所述保留站片段。
20.根据权利要求15所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器针对多个保留站片段的每条循环指令:
确定所述循环指令的所述保留站片段的所述指令执行信用是否指示可提供所述循环指令以用于数据流执行;并且
响应于确定所述循环指令的所述保留站片段的所述指令执行信用指示可提供所述循环指令以用于数据流执行:
提供所述循环指令以用于数据流执行;并且
使所述循环指令的所述保留站片段的所述指令执行信用递减。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562135738P | 2015-03-20 | 2015-03-20 | |
US62/135,738 | 2015-03-20 | ||
US14/743,198 US20160274915A1 (en) | 2015-03-20 | 2015-06-18 | PROVIDING LOWER-OVERHEAD MANAGEMENT OF DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA |
US14/743,198 | 2015-06-18 | ||
PCT/US2016/019518 WO2016153714A1 (en) | 2015-03-20 | 2016-02-25 | Reservation station circuit for execution of loop instructions by out-of-order processor, ανd related method, and computer-readable media |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107408039A true CN107408039A (zh) | 2017-11-28 |
Family
ID=56923911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680013286.4A Pending CN107408039A (zh) | 2015-03-20 | 2016-02-25 | 供无序处理器执行循环指令的保留站电路、相关方法和计算机可读媒体 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20160274915A1 (zh) |
EP (1) | EP3271815A1 (zh) |
JP (1) | JP2018508908A (zh) |
KR (1) | KR20170128335A (zh) |
CN (1) | CN107408039A (zh) |
WO (1) | WO2016153714A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10191747B2 (en) * | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
CN107483101B (zh) * | 2017-09-13 | 2020-05-26 | 中国科学院国家天文台 | 卫星导航通信终端、中心站、系统及导航通信方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5898865A (en) * | 1997-06-12 | 1999-04-27 | Advanced Micro Devices, Inc. | Apparatus and method for predicting an end of loop for string instructions |
US6269440B1 (en) * | 1999-02-05 | 2001-07-31 | Agere Systems Guardian Corp. | Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously |
CN1348561A (zh) * | 1999-04-22 | 2002-05-08 | 关一 | 计算机系统 |
US6775765B1 (en) * | 2000-02-07 | 2004-08-10 | Freescale Semiconductor, Inc. | Data processing system having instruction folding and method thereof |
US20060150161A1 (en) * | 2004-12-30 | 2006-07-06 | Board Of Control Of Michigan Technological University | Methods and systems for ordering instructions using future values |
US20130159669A1 (en) * | 2011-12-20 | 2013-06-20 | International Business Machines Corporation | Low latency variable transfer network for fine grained parallelism of virtual threads across multiple hardware threads |
CN103942033A (zh) * | 2013-01-21 | 2014-07-23 | 想象力科技有限公司 | 基于推测度量将资源分配给线程 |
US20150007188A1 (en) * | 2013-06-29 | 2015-01-01 | Bambang Sutanto | Method and apparatus for implementing dynamic portbinding within a reservation station |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6055558A (en) * | 1996-05-28 | 2000-04-25 | International Business Machines Corporation | Pacing of multiple producers when information is required in natural order |
US6662273B1 (en) * | 2000-09-29 | 2003-12-09 | Intel Corporation | Least critical used replacement with critical cache |
US7353414B2 (en) * | 2005-03-30 | 2008-04-01 | Intel Corporation | Credit-based activity regulation within a microprocessor based on an allowable activity level |
US7490223B2 (en) * | 2005-10-31 | 2009-02-10 | Sun Microsystems, Inc. | Dynamic resource allocation among master processors that require service from a coprocessor |
US8589666B2 (en) * | 2006-07-10 | 2013-11-19 | Src Computers, Inc. | Elimination of stream consumer loop overshoot effects |
US7987462B2 (en) * | 2006-11-16 | 2011-07-26 | International Business Machines Corporation | Method for automatic throttling of work producers |
US8140883B1 (en) * | 2007-05-03 | 2012-03-20 | Altera Corporation | Scheduling of pipelined loop operations |
US8190624B2 (en) * | 2007-11-29 | 2012-05-29 | Microsoft Corporation | Data parallel production and consumption |
-
2015
- 2015-06-18 US US14/743,198 patent/US20160274915A1/en not_active Abandoned
-
2016
- 2016-02-25 WO PCT/US2016/019518 patent/WO2016153714A1/en active Application Filing
- 2016-02-25 EP EP16711395.0A patent/EP3271815A1/en not_active Withdrawn
- 2016-02-25 JP JP2017548420A patent/JP2018508908A/ja active Pending
- 2016-02-25 CN CN201680013286.4A patent/CN107408039A/zh active Pending
- 2016-02-25 KR KR1020177026147A patent/KR20170128335A/ko unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5898865A (en) * | 1997-06-12 | 1999-04-27 | Advanced Micro Devices, Inc. | Apparatus and method for predicting an end of loop for string instructions |
US6269440B1 (en) * | 1999-02-05 | 2001-07-31 | Agere Systems Guardian Corp. | Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously |
CN1348561A (zh) * | 1999-04-22 | 2002-05-08 | 关一 | 计算机系统 |
US6775765B1 (en) * | 2000-02-07 | 2004-08-10 | Freescale Semiconductor, Inc. | Data processing system having instruction folding and method thereof |
US20060150161A1 (en) * | 2004-12-30 | 2006-07-06 | Board Of Control Of Michigan Technological University | Methods and systems for ordering instructions using future values |
US20130159669A1 (en) * | 2011-12-20 | 2013-06-20 | International Business Machines Corporation | Low latency variable transfer network for fine grained parallelism of virtual threads across multiple hardware threads |
CN103942033A (zh) * | 2013-01-21 | 2014-07-23 | 想象力科技有限公司 | 基于推测度量将资源分配给线程 |
US20150007188A1 (en) * | 2013-06-29 | 2015-01-01 | Bambang Sutanto | Method and apparatus for implementing dynamic portbinding within a reservation station |
Also Published As
Publication number | Publication date |
---|---|
WO2016153714A1 (en) | 2016-09-29 |
JP2018508908A (ja) | 2018-03-29 |
US20160274915A1 (en) | 2016-09-22 |
EP3271815A1 (en) | 2018-01-24 |
KR20170128335A (ko) | 2017-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10142098B2 (en) | Optimized SHA-256 datapath for energy-efficient high-performance Bitcoin mining | |
US20190057300A1 (en) | Weight prefetch for in-memory neural network execution | |
US9195466B2 (en) | Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
CN107924380A (zh) | 使用业务类别分配高速缓存的方法、装置和系统 | |
CN107851028A (zh) | 将指令操作数的窄生成值直接存储在乱序处理器中的寄存器映射中 | |
CN108702286A (zh) | 抗功率侧信道攻击的高级加密标准加速器处理器 | |
CN104951702B (zh) | 用于有效地执行散列操作的方法和设备 | |
US20160019061A1 (en) | MANAGING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA | |
CN103959237A (zh) | 用于提供向量横向比较功能的指令和逻辑 | |
TW201723811A (zh) | 於指令集架構中排序資料及合併經排序資料之技術 | |
CN104884145A (zh) | 指令合并优化 | |
CN107408039A (zh) | 供无序处理器执行循环指令的保留站电路、相关方法和计算机可读媒体 | |
US11593154B2 (en) | Operating system assisted prioritized thread execution | |
CN108780399A (zh) | 提供有待由处理器执行的近期提供的指令的先前解码的指令的参考 | |
US20190354508A1 (en) | System and method of loading and replication of sub-vector values | |
CN104025036A (zh) | 低时延集群计算 | |
US20170228252A1 (en) | System and method for multi-tile data transactions in a system on a chip | |
CN107077335A (zh) | 使用所预测值表来提供循环不变值预测,以及相关设备、方法和计算机可读媒体 | |
US20160019060A1 (en) | ENFORCING LOOP-CARRIED DEPENDENCY (LCD) DURING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA | |
TWI701590B (zh) | 管線重組態電路、基於失序(ooo)處理器之系統及重組態一執行管線之方法 | |
EP2856304B1 (en) | Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media | |
CN106796561A (zh) | 将强有序写入事务桥接到弱有序域中的装置和相关设备、方法和计算机可读媒体 | |
CN106104466B (zh) | 在超越控制分支预测器中的推测历史转递以及相关电路、方法和计算机可读媒体 | |
WO2022140043A1 (en) | Condensed command packet for high throughput and low overhead kernel launch | |
US9626231B2 (en) | Database dispatcher |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171128 |
|
WD01 | Invention patent application deemed withdrawn after publication |