CN101008928A - 用于跟踪命令次序依赖性的方法和设备 - Google Patents
用于跟踪命令次序依赖性的方法和设备 Download PDFInfo
- Publication number
- CN101008928A CN101008928A CNA2007100039497A CN200710003949A CN101008928A CN 101008928 A CN101008928 A CN 101008928A CN A2007100039497 A CNA2007100039497 A CN A2007100039497A CN 200710003949 A CN200710003949 A CN 200710003949A CN 101008928 A CN101008928 A CN 101008928A
- Authority
- CN
- China
- Prior art keywords
- order
- dependence
- command
- command queue
- scoring plug
- 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 45
- 230000015572 biosynthetic process Effects 0.000 claims description 48
- 230000001419 dependent effect Effects 0.000 claims description 30
- 230000000052 comparative effect Effects 0.000 claims description 7
- 238000005755 formation reaction Methods 0.000 description 45
- 238000010586 diagram Methods 0.000 description 42
- 230000002411 adverse Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 238000007689 inspection Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004044 response Effects 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种用于跟踪要由命令处理器执行的命令的依赖性的方法和设备。通过确定进入命令相对于等待执行的所有命令的依赖性,可将依赖性信息存储在依赖性记分板中。这样的依赖性记分板可用来确定是否准备要由命令处理器发出命令。例如,随着命令完成,还可通过与命令的发出相关的信息,来更新依赖性记分板。
Description
技术领域
本发明一般涉及跟踪命令队列内的命令的依赖性(dependency)。
背景技术
计算系统经常包括中央处理单元(CPU)。经常从系统内的其它装置向CPU做出执行命令的请求。可向CPU做出命令请求的装置的例子包括系统内的视频卡、声卡、或I/O装置。可将用于CPU的输入或输出(I/O)流量分类为入站(Inbound)或出站(Outbound)。入站流量从I/O装置进入到CPU。出站流量源自CPU,并流向I/O装置。随着命令进入到CPU,它们被置于命令队列中。命令队列用来维持CPU接收的不同命令之中的次序和优先级。在某些CPU中,命令队列为FIFO(先进先出)队列、或以接收命令的次序来执行命令的队列。
命令队列可包括依赖于相同或其它命令队列内的命令的命令。依赖命令的例子为:在写入一个地址的命令之后接收的用来从同一地址读取的命令。如果在写入命令之前执行读取命令,则所读取的数据可能不是当前的(未从写入命令更新数据,即“失效(stale)”)。因此,关键在于:命令队列以这样的次序发出要由CPU执行的命令:不会存在命令依赖性的不利影响(例如,读取的数据未失效)。
用来避免命令依赖性的不利影响的一种途径为:以软件方式增强I/O命令的排序。换句话说,可能需要写入软件,从而不允许向同时正在处理(in-flight)的同一存储位置加载或存储命令。然而,此方案不是理想的,这是因为,它限制了使用DMA(直接存储器访问)引擎以及对存储器的流水线式访问的软件的能力。
用来避免命令依赖性的不利影响的另一种途径为:使用包含多个指针的第二FIFO命令队列。所述指针指向第一命令队列内的命令。当将第一命令队列内的两个命令设置为使用同一地址时,设置停止(stall)指针来标记新的“冲突(collide)”命令。停止“冲突”命令及其之后的所有命令,直到其之前的所有命令(包括针对于同一地址的命令)已退出队列为止。此解决方案的缺点在于:其强制使用第二FIFO,阻止不具有依赖性的命令在具有依赖性的命令之前进行,并且过度地停止命令,因为此方法仅同时观察一个依赖性,而不是各自观察每一个依赖性。
因此,存在对用于跟踪命令队列内的命令依赖性的改进的方法和设备的需要。
发明内容
本发明一般地提供了一种用于跟踪处理装置的命令队列内的命令依赖性的方法和设备。
一个实施例提供了一种用于跟踪处理器的一个或多个命令队列内的命令的依赖性的方法。通常,该方法包括:(a)生成依赖性信息,其标识被接收到命令队列中的第一命令是否依赖于先前在命令队列中接收到的其它命令;(b)将命令依赖性信息存储在命令依赖性记分板中;(c)如果命令依赖性记分板中的依赖性信息指示第一命令依赖于命令队列中的其它命令,则阻止发出第一命令;(d)在已完成从命令队列发出的命令之后,更新存储在命令依赖性记分板中的命令依赖性信息。
另一个实施例提供了一种处理装置,其通常包括用于存储命令的一个或多个命令队列、命令依赖性记分板、以及命令处理逻辑。通常,将命令处理逻辑配置为:生成依赖性信息,其标识被接收到命令队列中的命令是否依赖于先前在命令队列中接收到的其它命令;将命令依赖性信息存储在命令依赖性记分板中;以及利用存储在命令依赖性记分板中的信息,来阻止发出依赖于先前在命令队列中接收到的未完成的其它命令的命令。
另一个实施例提供了一种系统,其通常包括一个或多个输入/输出(I/O)装置、以及处理装置。处理装置通常包括用于存储从I/O装置接收的命令的一个或多个命令队列、命令依赖性记分板、以及命令处理逻辑。通常,将命令处理逻辑配置为:生成依赖性信息,其标识被接收到命令队列中的命令是否依赖于先前在命令队列中接收到的其它命令;将命令依赖性信息存储在命令依赖性记分板中;以及利用存储在命令依赖性记分板中的信息,来阻止发出依赖于先前在命令队列中接收到的未完成的其它命令的命令。
附图说明
于是,可详细地理解实现本发明的上述特征、优点和目的的方式,可通过参照在附图中图解的本发明的实施例,而得到上面概述的本发明的更具体的描述。
然而注意,附图仅图解了本发明的典型实施例,并且因此,附图不被认为限制其范围,因为本发明可导出其它等效的实施例。
图1是图解根据本发明的一个实施例的计算环境的框图。
图2是图解根据本发明的一个实施例的命令处理排序逻辑的框图。
图3是图解根据本发明的一个实施例的填充命令依赖性记分板的方法的流程图。
图4是图解根据本发明的一个实施例的利用命令依赖性记分板来控制命令执行的方法的流程图。
图5是图解根据本发明的一个实施例的命令依赖性记分板的示意图。
图6是图解根据本发明的一个实施例的内容可寻址存储器(CAM)比较单元的使用的框图。
图7是图解根据本发明的一个实施例的命令依赖性记分板拓扑的框图。
图8是图解根据本发明的一个实施例的用来跟踪多个命令队列内的命令依赖性的命令依赖性记分板的使用的框图。
图9A-C是图解根据本发明的一个实施例的命令依赖性记分板拓扑的框图。
具体实施方式
本发明的实施例允许用于跟踪要由处理器执行的命令的依赖性的灵活且可调节的(scaleable)机制。通过确定进入命令相对于所有等待执行的命令的依赖性,可将依赖性信息存储在依赖性记分板中。这样的依赖性记分板可用来确定是否准备好由命令处理器发出命令。此外,例如,在完成命令时,还可利用与命令的发出相关的信息来更新依赖性记分板。这样的命令依赖性记分板的使用减小了等待时间(latency),避免了命令依赖性的不利影响,并保持了命令的次序。
下面,对本发明的实施例做出参照。然而,应理解,本发明不限于具体描述的实施例。相反,考虑与不同实施例相关或不相关的下面的特征和元素的任意组合,来实现和实践本发明。此外,在各个实施例中,本发明提供了超越现有技术的大量优点。然而,尽管本发明的实施例可实现超越其它可能的解决方案和/或超越现有技术的优点,但给定实施例是否实现特定优点并不是本发明的限制。由此,下面的方面、特征、实施例和优点仅为说明性的,并且不被认为是所附权利要求的元素或限制,除非是在权利要求中被显式地限定的情况。同样,对“本发明”的引用不应被解释为对在这里公开的任意发明主题的概括,并且不应被视为所附权利要求的元素或限制,除非是在权利要求中被显式地限定的情况。
示例系统
图1是图解根据本发明的一个实施例耦接到I/O装置104的中央处理单元(CPU)102的框图。在一个实施例中,CPU102可驻留在计算机系统内,如个人计算机或游戏系统。I/O装置104也可驻留在同一计算机系统内。在现代的计算系统中,可能存在附接到CPU102的多个I/O装置104。例如,I/O装置104可包括随机存取存储器(RAM)、视频卡、或硬盘。I/O装置104可通过总线,以物理方式附接到计算系统内部的CPU102。
I/O装置104将向CPU102发送用来执行的命令。CPU102可用结果来响应I/O装置104。在一个实施例中,命令处理系统112可驻留在CPU102内。在命令处理系统112内,可存储并准备(即,地址转换)从I/O装置104发送的命令,以便由CPU102执行。CPU102可包含片上总线108,用于在诸如命令处理系统112和嵌入处理器106的不同的CPU102逻辑装置之间通信。
在CPU102接收到命令时,在命令处理系统112中处理所述命令。图2是图解根据本发明的一个实施例的命令处理系统112的框图。随着命令被I/O装置104发送、并由CPU102接收,可将所述命令置于输入命令队列202中。输入命令队列202可为FIFO(先进先出),以便以接收命令的次序来执行命令。随后,可将输入命令队列202中的命令发送到转换接口输入控制204。
根据本发明的一个实施例,转换接口输入控制204执行与命令依赖性的确定和跟踪相关的过程。转换接口输入控制204可访问依赖性记分板206。依赖性记分板206可用来跟踪命令相对于已由CPU接收的其它命令的依赖性。一旦转换接口输入控制204接收到命令,便执行用来确定该命令是否依赖于已由输入命令队列202接收到的任何其它命令的过程。在本发明的一个实施例中,通过使用CAM(内容可寻址存储器)比较单元来创建命中(hit)和失中(miss)的向量、来将命令的目标地址和先前命令的目标地址相比较,而执行依赖性确定。向量可为包括“1”和“0”的位串,其中,“1”可表示命中,而“0”可表示失中。随后,可使用此比较结果来填充依赖性记分板206。下面,在图5和6中进一步描述了通过使用CAM比较单元的依赖性记分板206的填充。
如果新命令具有对早先接收到的命令的依赖性,则新命令将需要被停止,直到其依赖的命令已从下游逻辑单元接收到响应为止。转换接口输入控制204可经由读取指针来控制命令的停止。如果对CAM比较的比较结果是输入命令队列202中的命令不具有对队列202中的任何其它命令的依赖性,则转换接口输入控制可将命令、及其关联的命令指针发送到转换接口输出控制210。命令处理系统112还可包括转换逻辑208,用来帮助虚拟地址到物理地址的转换。在一个实施例中,转换接口输出控制210执行与将命令发出到CPU102的片上总线108相关的过程。
在命令已被发出到片上总线108且被执行之后,转换接口输出控制210将命令完成信号发回到转换接口输入控制204。例如,此信号可用来通过清除与刚由嵌入处理器124执行的命令相关的任何依赖性,而更新依赖性记分板206。
示例操作
图3是图解根据本发明的一个实施例的用于填充命令依赖性记分板206的方法300的流程图。方法300是可由转换接口输入控制204执行的操作的例子。该方法在步骤302开始,其中接收到新命令。接下来,方法300前进到步骤304,其中,执行针对于队列中的其它命令的依赖性的检查。
可通过将该命令针对的地址发送到CAM比较单元,而执行在步骤304中执行的检查。通过将该命令的地址发送到CAM比较单元,CAM比较单元将返回指示该命令依赖的命令队列内的所有其它命令的结果。在图6中进一步描述用来确定命令依赖性的CAM比较单元的使用。
接下来,方法300前进到步骤306,其中,将步骤304的结果(即,命令的依赖性)存储在依赖性记分板206中。将此方法300示出为在三个步骤中发生,然而,在处理器102内,可在单个周期内发生所述三个步骤。一旦更新,便可使用依赖性记分板206来确定何时能够执行命令。为确保不存在来自命令依赖性的不利影响,不应执行命令,直到已执行了其依赖的所有其它命令为止。为确定何时已执行了其依赖的所有其它命令,转换接口输入控制204可使用依赖性记分板206。
图4是图解根据本发明的一个实施例、利用命令依赖性记分板206来控制命令执行的方法400的流程图。方法400在步骤402开始,其中,向依赖性记分板206检查与要发出的命令相关的条目。接下来,在步骤404,执行用来确定命令是否具有依赖性的查询。可通过检查依赖性记分板206而做出该确定。如果不存在依赖性,则由转换接口输入控制204发送到转换接口输出控制210的命令等待执行。如果该命令具有依赖性,则方法400前进到步骤406,其中,转换接口输入控制204阻止或停止命令的执行,直到已清除了该命令所依赖的(一个或多个)命令为止。接下来,在步骤408,在完成了其它独立命令时,更新依赖性记分板206。在完成了步骤408之后,方法400返回到步骤402,以重复方法400。
示例依赖性记分板
图5是图解根据本发明的一个实施例的依赖性记分板500的示意图。可通过表示依赖命令的行和与独立命令相对应的列来构造依赖性记分板500。如图5的510所示,行和列的交点(在此被称为单元)可由逻辑装置组成。在一个实施例中,每个单元可存储多于一位的依赖性信息。在另一个实施例中,每个单元仅可存储一位依赖性信息。例如,位于行3和列12的交点的单元可具有被设置为“1”的位,其指示依赖命令[3](命令标识号、或索引3)依赖于独立命令[12]。
在一个实施例中,具有用于n+1个命令的n+1个寄存器的命令队列可具有n+1行和n+1列。当在转换接口输入控制204中接收到命令时,向其检查依赖性。这可通过使用CAM比较单元来执行。在图6中进一步描述了用来确定命令依赖性的CAM比较单元的使用。可将CAM检查的结果置于与命令在输入命令队列202中的位置相对应的行中。如果CAM检查的结果指示命令针对于与其它早先接收到的命令相同的地址、或者存在某种其它类型的依赖性,则可在依赖性记分板500中与该命令所依赖的命令相对应的每列中设置位。
可通过将CAM比较的结果发送到依赖性记分板500,而将CAM比较的结果写入到依赖性记分板500中。使用写入指针(wr_ptr(0:m))、以及写入数据线(wr_data(0:n)),可将CAM比较的结果写入到依赖性记分板的适当行中。写入指针(wr_ptr(0:m))指示依赖性记分板内的哪一行要写入数据,而写入数据线(wr_data(0:n))将来自CAM比较的结果数据传送到依赖性记分板500中。
例如,假定接收到作为输入命令队列202中的命令[3]的命令,其针对于与输入命令队列202中的命令[12]相同的地址。在此例子中,可通过依赖性记分板500中的第3行来表示命令[3]的依赖性信息。可通过依赖性记分板500中的第12列来表示独立命令[12]。如果输入命令队列202中的命令[3]依赖于输入命令队列202中的命令[12],并将CAM比较单元输出写入到依赖性记分板500的第3行,则CAM比较的结果将使位于依赖性记分板500的第3行和第12列的交点的位被设置为“1”。这个“1”代表命令[3]对命令[12]的依赖性。
在510上图解了用来存储依赖性信息的位的依赖性单元的一个例子。如果从CAM比较的结果接收到指示命令依赖性的新数据,则在510上图解的单元将依赖性记分板500的该位设置为“1”。现在,转换接口控制204可通过读取依赖性记分板内的数据515,而使用依赖性记分板500,以确定命令是否无依赖性并可被发出。
在此例子中,将不发出命令[3],因为依赖性记分板的检查将示出与命令[3]相对应的第3行第12列中的位被设置为“1”。由此,依赖性记分板500反映出命令[3]对命令[12]的依赖性。然而,通过检查命令依赖性记分板,转换接口控制204可确定命令[12]不依赖于任何其它命令。现在,转换接口控制204可将命令[12]发出到嵌入处理器106,以便执行。
一旦发出了命令[12],便需要更新依赖性记分板,使得现在可发出依赖于命令[12]的命令(如命令[3])。为更新命令依赖性记分板,当从转换接口输出控制2 12返回命令完成信号时,清除与命令[12]相对应的依赖性记分板中的列。通过使用用来将列中的位设置为“0”的清除信号、以及用来指向已被发出的命令的列的清除指针(clear_ptr(0:m)),来执行记分板的清除。例如,如果已发出了命令[12],则将从转换接口输出控制210返回命令完成信号。由此,现在呈现清除信号,并且,将清除指针设置到列[12](clear_ptr(12))。由此,列12中的所有单元将被设置为“0”。在先前的例子中,这将在位于列12和行3的交点上的单元(以及该列中的所有其它单元)中放置“0”。由此,在下一次转换接口控制204通过执行行3中的位的读取(即,将读取指针设置为行3:rd_ptr(3))而向依赖性记分板500检查命令[3]的依赖性时,转换接口控制204将看到第3行中的位都未被设置为“1”。因此,转换接口控制204将把命令[3]发送到转换接口输出控制210。
图6是图解根据本发明的一个实施例、转换接口输入控制204对CAM比较单元605的使用的框图。转换接口输入控制204将使用CAM比较单元605来确定到输入命令队列202的新命令是否依赖于已经驻留在输入命令队列202中的任何命令。图6还图解了如图5所示的使用CAM比较结果的依赖性记分板的填充。为确定命令[3]是否具有对已经在输入命令队列202中的任何其它命令的依赖性,转换接口输入控制204将使用CAM比较单元605,将命令[3]的目标地址与输入命令队列202中的所有其它命令(即,命令(0-n))的目标地址(即,地址(0-n))相比较。转换接口控制204将发送最近接收到的命令(即,命令[3])的目标地址,并且,CAM比较单元605将返回数据610。
此数据为n+1个位宽,其中,n+1的值对应于输入命令队列202内的命令的数目。该数据可全部由“1”和“0”组成。结果中的“1”的位置可与针对同一地址的、已经在输入命令队列202中存在的其它命令相对应。结果中的“0”的位置可与非针对同一地址的、已经在输入命令队列202中存在的其它命令相对应。CAM比较单元数据610可用来通过将CAM比较单元605的输出写入到依赖性记分板500(例如,写入数据615:wr_data(0:n)),而填充依赖性记分板500。可通过使用写入指针(wr_ptr(0:m))505来将写入数据(wr_data(0:n))615写入到依赖性记分板500的正确行。例如,如果与CAM相比较的命令是输入命令队列中的命令[3],则通过将写入指针设置为第3行(wr_ptr(3)),而将来自CAM的数据写入到依赖性记分板500的第3行。
图7是图解根据本发明的一个实施例、用来跟踪单个相互依赖的命令队列710内的命令依赖性的命令依赖性记分板705的框图。图7中还图解了依赖于命令[12]的命令[3]的先前的例子。依赖性记分板705具有在行3和列12相交的单元中被设置为“1”的单个位。如图6所示,可能已通过CAM比较而将此位设置为“1”。这个“1”说明了这样的事实:命令队列710的命令[3]依赖于同一命令队列710的命令[12]。由此,转换接口输入控制204的检查将示出依赖性,并且,转换接口输入控制204将阻止发出命令[3],或“停止”命令[3],直到已发出了命令[12]为止。
多命令队列依赖性拓扑
不仅可使用依赖性记分板来跟踪命令对同一命令队列内的命令的依赖性,还可跟踪命令对其它命令队列内的命令的依赖性。图8是图解两个命令队列的方框图。图8示出了包含读取命令和写入命令两者的单个共享输入命令队列805。此共享命令队列805可被分为两个独立的命令队列:读取命令队列810和写入命令队列815。在一个实施例中,读取命令队列810独立于写入命令队列815。也就是说,以接收读取命令的次序来执行读取命令,而不管读取命令队列810中的其后的命令是什么。写入命令队列815中的命令可依赖于读取命令队列内的命令。例如,写入命令队列815内的写入命令[3]可依赖于读取命令队列810内的读取命令[12]。可使用依赖性记分板来监视这两个队列之间的依赖性,并确定何时可执行所述命令。
图9A是图解依赖性记分板910的框图,其中,依赖性记分板910跟踪图8中的读取命令队列810和写入命令队列815之间的依赖性。在关于图8而给出的例子中,写入命令[3]依赖于读取命令[12]。
通过将所有独立命令放置在依赖性记分板910的列中、而将所有依赖命令放置在记分板910的行中,而构造用来跟踪此类依赖性的依赖性记分板拓扑。在进行与依赖命令的地址的CAM比较之后,将在依赖性记分板上将针对同一地址的独立的读取命令示出为行和列在记分板910上相交处的“1”。
现在,可使用记分板910,通过检查看依赖性记分板910中的行是否包含任何“1”,而确定是否可发出依赖写入命令,如命令[3]。如果尚未发出命令[12],那么,如图9所示,将把驻留在列12和行3的交点中的位设置为“1”,其向转换接口输入控制202指示:不应发出命令[3]。然而,一旦发出了命令[12],便将通过复位信号来清除该位。如果这已发生,则在转换接口输入控制下一次检查命令[3]的依赖性时,其将不会找到任何“1”,并且将发出命令[3]。
图9B是图解根据本发明的一个实施例、用来跟踪三个命令队列之间的命令依赖性的命令依赖性记分板拓扑925的框图。在一个实施例中,CPU102可包含三个不同的命令队列。一个命令队列,即命令队列C940,可以是独立的。其它两个命令队列,即命令队列A935和命令队列B930,可依赖于独立的命令队列C940内的特定命令。
在一个实施例中,依赖性记分板拓扑925可被构造为跟踪命令队列A935和B930对独立的命令队列C940内的命令的依赖性。这通过使依赖性记分板925内的所有列表示独立的命令队列C940内的命令来完成。此外,通过依赖性记分板925内的行来表示依赖命令队列内的依赖命令。在一个实施例中,可通过将表示一个依赖命令队列的一系列行堆积在表示另一个依赖命令队列的依赖性记分板925中的另一系列行的顶部上,而在依赖性记分板925中表示多个依赖命令队列。
这可以在依赖性记分板925中被看作被堆积在表示命令队列B的第二系列行的顶部上的表示命令队列A的一系列行。图9B还示出了:命令队列A935中例如命令[3]的命令可如何依赖于独立的命令队列内的命令,比如说命令队列C940的命令[4]和[12]。通过位于队列A的列4和行3的交点处的“1”、以及位于队列A的列12和行3的交点处的“1”,而在依赖性记分板925中图解了此依赖性。此外,图9B示出了命令队列B930中的命令[3]可如何依赖于的命令队列C940的命令[4]和[12]。通过位于队列B的列4和行3的交点处的“1”、以及位于队列B的列12和行3的交点处的“1”,而在依赖性记分板925中图解此依赖性。
图9C是图解根据本发明的一个实施例、用来跟踪四个命令队列之间的命令依赖性的命令依赖性记分板拓扑945的框图。在一个实施例中,CPU102可包含四个不同的命令队列。例如,在CPU102中可能存在两个独立的命令队列:命令队列C950、以及命令队列D955。此外,在CPU102中可能存在两个依赖命令队列:命令队列A960、以及命令队列B965。
可构造依赖性记分板拓扑945,以跟踪依赖命令队列A960和B965内的命令对独立命令队列C950和D955内的命令的依赖性。在一个实施例中,这可通过将命令队列C950中的所有独立命令表示为依赖性记分板945中的一系列列而实现。此外,可将命令队列D955内的所有独立的命令表示为与表示命令队列C950的一系列列紧邻的、依赖性记分板945中的一系列列
可通过将表示一个依赖命令队列的一系列行堆积在依赖性记分板中表示另一个依赖命令队列的另一系列行的顶部上,而在依赖性记分板945中表示多个依赖命令队列的所有依赖命令。图9C中的依赖性记分板945通过示出堆积在表示命令队列B965中的依赖命令的行的顶部上的命令队列A960中的依赖命令的行而图解了上述情况。图9C还图解了可在依赖性记分板内部如何跟踪依赖命令的两个例子。
第一个例子说明了依赖于命令队列C950内的命令[4]、以及命令队列D955内的命令[4]的命令队列A960内的命令,即命令[3]。可通过在依赖性记分板945的QA部分的行3与依赖性记分板的QC部分的列4相交的位置、以及在依赖性记分板945的QA部分的行3与依赖性记分板945的QD部分的列4相交的位置上的“1”,在依赖性记分板945中图解这些依赖性。
第二个例子说明了依赖于命令队列C950内的命令[4]、以及命令队列D955内的命令[4]的命令队列B965内的命令,即命令[3]。可通过在依赖性记分板945的QB部分的行3与依赖性记分板945的QC部分的列4相交的位置、以及在依赖性记分板945的QB部分的行3与依赖性记分板945的QD部分的列4相交的位置上的“1”,在依赖性记分板945中图解这些依赖性。在由转换接口输出控制210发出独立命令队列内的命令时,通过来自转换接口输出控制210的复位信号,在依赖性记分板945内清除它们的代表列。
结论
通过检查进入命令相对于已经存在于命令队列中的命令的依赖性、并保存此结果,可创建依赖性记分板。此记分板可用来确定应当发出还是停止命令。还可通过有关基于正在进行的发出的命令的信息,来更新命令依赖性记分板。结果,如在此描述的这样的命令依赖性记分板减小了等待时间,避免的命令依赖性的不利影响,并保持了命令的次序。此外,命令依赖性记分板可跟踪单个命令队列或多个命令队列之中的命令依赖性。
尽管前述内容针对于本发明的实施例,但可导出本发明的其它实施例,而不会脱离本发明的基本范围,并且通过所附权利要求来确定本发明的范围。
Claims (20)
1、一种用于跟踪处理器的一个或多个命令队列内的命令的依赖性的方法,包括:
(a)生成依赖性信息,其标识被接收到命令队列中的第一命令是否依赖于先前在命令队列中接收到的其它命令;
(b)将命令依赖性信息存储在命令依赖性记分板中;
(c)如果命令依赖性记分板中的依赖性信息指示第一命令依赖于命令队列中的其它命令,则阻止发出第一命令;以及
(d)在已完成从命令队列发出的命令之后,更新存储在命令依赖性记分板中的命令依赖性信息。
2、如权利要求1所述的方法,其中:
在第一命令队列中接收第一命令;以及
依赖性信息标识第一命令是否依赖于先前在第一命令队列中接收到的其它命令。
3、如权利要求1所述的方法,其中:
在第一命令队列中接收第一命令;以及
依赖性信息标识第一命令是否依赖于在至少第二命令队列中接收到的其它命令。
4、如权利要求1所述的方法,其中,生成依赖性信息包括:确定第一命令所针对的地址是否与先前在命令队列中接收到的一个或多个命令所针对的地址相同。
5、如权利要求4所述的方法,其中:确定第一命令所针对的地址是否与先前在命令队列中接收到的一个或多个命令所针对的地址相同包括:使用内容可寻址存储器,其中,对内容可寻址存储器的比较类型访问产生向量输出,其指示与第一命令所针对的地址匹配的内容可寻址存储器内的一个或多个条目。
6、如权利要求5所述的方法,其中,将命令依赖性信息存储在命令依赖性记分板中包括:将对内容可寻址存储器的比较类型访问的向量输出存储在命令依赖性记分板中。
7、如权利要求1所述的方法,其中:
命令依赖性记分板是二维网格,其具有沿着与独立命令相对应的一个轴的行或列、以及沿着与依赖命令相对应的另一个轴的列或行;以及
将指示第一命令和第二命令之间的依赖性的信息存储在与第一命令相对应的行或列、以及与第二命令相对应的列或行的交点上。
8、一种处理装置,包括:
用于存储命令的一个或多个命令队列;
命令依赖性记分板;以及
命令处理逻辑,其被配置为:生成依赖性信息,其标识被接收到命令队列中的命令是否依赖于先前在命令队列中接收到的其它命令;将命令依赖性信息存储在命令依赖性记分板中;以及利用存储在命令依赖性记分板中的信息,阻止发出依赖于先前在命令队列中接收到的未完成的其它命令的命令。
9、如权利要求8所述的处理装置,其中,命令处理逻辑还被配置为:
监视从命令队列发出的命令的完成;以及
在已完成了从命令队列发出的命令之后,更新存储在命令依赖性记分板中的命令依赖性信息。
10、如权利要求8所述的处理装置,其中,存储在命令依赖性记分板中的依赖性信息标识公共命令队列中的命令是否相互依赖。
11、如权利要求8所述的处理装置,其中,存储在命令依赖性记分板中的依赖性信息标识第一命令队列中的命令是否依赖于在至少一个其它命令队列中接收到的其它命令。
12、如权利要求8所述的处理装置,还包括:
内容可寻址存储器,其存储命令队列中的命令的地址;以及
其中,对内容可寻址存储器的比较类型访问产生向量输出,其指示内容可寻址存储器内的一个或多个条目。
13、如权利要求12所述的处理装置,其中,将随着第一命令的地址而呈现的内容可寻址存储器的向量输出存储在依赖性记分板中,作为第一命令的依赖性信息。
14、如权利要求8所述的处理装置,其中:
命令依赖性记分板是二维网格,其具有沿着与独立命令相对应的一个轴的行或列、以及沿着与依赖命令相对应的另一个轴的列或行;以及
将指示第一命令和第二命令之间的依赖性的信息存储在与第一命令相对应的行或列、以及与第二命令相对应的列或行的交点上。
15、一种系统,包括:
一个或多个输入/输出(I/O)装置;以及
处理装置,其包括用于存储从I/O装置接收的命令的一个或多个命令队列、命令依赖性记分板、以及命令处理逻辑,其中,将命令处理逻辑配置为:生成依赖性信息,其标识被接收到命令队列中的命令是否依赖于先前在命令队列中接收到的其它命令;将命令依赖性信息存储在命令依赖性记分板中;以及利用存储在命令依赖性记分板中的信息,来阻止发出依赖于先前在命令队列中接收到的未完成的其它命令的命令。
16、如权利要求15所述的系统,其中处理装置的命令处理逻辑还被配置为:
监视从命令队列发出的命令的完成;以及
在已完成了从命令队列发出的命令之后,更新存储在命令依赖性记分板中的命令依赖性信息。
17、如权利要求15所述的系统,其中,存储在命令依赖性记分板中的依赖性信息标识第一命令队列中的命令是否依赖于在至少一个其它命令队列中接收到的其它命令。
18、如权利要求15所述的系统,其中:
命令依赖性记分板是二维网格,其具有沿着与独立命令相对应的一个轴的行或列、以及沿着与依赖命令相对应的另一个轴的列或行;以及
将指示第一命令和第二命令之间的依赖性的信息存储在与第一命令相对应的行或列、以及与第二命令相对应的列或行的交点上。
19、如权利要求18所述的系统,其中,处理装置还包括:
内容可寻址存储器,其存储命令队列中的命令的地址;以及
其中,对内容可寻址存储器的比较类型访问产生向量输出,其指示内容可寻址存储器内的一个或多个条目。
20、如权利要求19所述的系统,其中,将随着第一命令的地址而呈现的内容可寻址存储器的向量输出存储在依赖性记分板中,作为第一命令的依赖性信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/340,736 US7634591B2 (en) | 2006-01-26 | 2006-01-26 | Method and apparatus for tracking command order dependencies |
US11/340,736 | 2006-01-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101008928A true CN101008928A (zh) | 2007-08-01 |
Family
ID=38286904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100039497A Pending CN101008928A (zh) | 2006-01-26 | 2007-01-19 | 用于跟踪命令次序依赖性的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7634591B2 (zh) |
JP (1) | JP5077531B2 (zh) |
CN (1) | CN101008928A (zh) |
TW (1) | TW200809608A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102934102A (zh) * | 2010-05-26 | 2013-02-13 | 日本电气株式会社 | 多处理器系统、执行控制方法和执行控制程序 |
CN103597460A (zh) * | 2011-04-08 | 2014-02-19 | 奥特拉有限公司 | 用于利用存储命令的系统和方法 |
CN107430509A (zh) * | 2015-04-19 | 2017-12-01 | 森蒂彼得塞米有限公司 | 基于近似寄存器访问规范的代码执行的运行时间并行化 |
CN111226196A (zh) * | 2017-11-30 | 2020-06-02 | 国际商业机器公司 | 在乱序处理器中具有一个或多个摘要位的可扩展依赖矩阵 |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7487267B2 (en) * | 2006-02-03 | 2009-02-03 | International Business Machines Corporation | Method and apparatus for managing dependencies between split transaction queues |
US8165301B1 (en) | 2006-04-04 | 2012-04-24 | Bitmicro Networks, Inc. | Input-output device and storage controller handshake protocol using key exchange for data security |
US7620748B1 (en) * | 2006-04-06 | 2009-11-17 | Bitmicro Networks, Inc. | Hardware assisted non-volatile memory-to-input/output direct memory access (DMA) transfer |
US8269780B2 (en) * | 2007-06-07 | 2012-09-18 | Apple Inc. | Batching graphics operations with time stamp tracking |
US8115773B2 (en) * | 2007-06-07 | 2012-02-14 | Apple Inc. | Serializing command streams for graphics processors |
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
US8316219B2 (en) | 2009-08-31 | 2012-11-20 | International Business Machines Corporation | Synchronizing commands and dependencies in an asynchronous command queue |
US9135190B1 (en) | 2009-09-04 | 2015-09-15 | Bitmicro Networks, Inc. | Multi-profile memory controller for computing devices |
US8665601B1 (en) | 2009-09-04 | 2014-03-04 | Bitmicro Networks, Inc. | Solid state drive with improved enclosure assembly |
US8447908B2 (en) | 2009-09-07 | 2013-05-21 | Bitmicro Networks, Inc. | Multilevel memory bus system for solid-state mass storage |
US8560804B2 (en) | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
US9372755B1 (en) | 2011-10-05 | 2016-06-21 | Bitmicro Networks, Inc. | Adaptive power cycle sequences for data recovery |
US8769487B2 (en) | 2012-04-10 | 2014-07-01 | Oracle International Corporation | Configurable auto content testing framework for technical documentation |
US10936591B2 (en) | 2012-05-15 | 2021-03-02 | Microsoft Technology Licensing, Llc | Idempotent command execution |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
US9239868B2 (en) | 2012-06-19 | 2016-01-19 | Microsoft Technology Licensing, Llc | Virtual session management and reestablishment |
US9251194B2 (en) | 2012-07-26 | 2016-02-02 | Microsoft Technology Licensing, Llc | Automatic data request recovery after session failure |
US8898109B2 (en) | 2012-07-27 | 2014-11-25 | Microsoft Corporation | Automatic transaction retry after session failure |
US9235464B2 (en) | 2012-10-16 | 2016-01-12 | Microsoft Technology Licensing, Llc | Smart error recovery for database applications |
US9423457B2 (en) | 2013-03-14 | 2016-08-23 | Bitmicro Networks, Inc. | Self-test solution for delay locked loops |
US9916213B1 (en) | 2013-03-15 | 2018-03-13 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US10489318B1 (en) | 2013-03-15 | 2019-11-26 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9875205B1 (en) | 2013-03-15 | 2018-01-23 | Bitmicro Networks, Inc. | Network of memory systems |
US9842024B1 (en) | 2013-03-15 | 2017-12-12 | Bitmicro Networks, Inc. | Flash electronic disk with RAID controller |
US9971524B1 (en) | 2013-03-15 | 2018-05-15 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US9858084B2 (en) | 2013-03-15 | 2018-01-02 | Bitmicro Networks, Inc. | Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9734067B1 (en) | 2013-03-15 | 2017-08-15 | Bitmicro Networks, Inc. | Write buffering |
US9798688B1 (en) | 2013-03-15 | 2017-10-24 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9720603B1 (en) | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
US9672178B1 (en) | 2013-03-15 | 2017-06-06 | Bitmicro Networks, Inc. | Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system |
US9501436B1 (en) | 2013-03-15 | 2016-11-22 | Bitmicro Networks, Inc. | Multi-level message passing descriptor |
US9400617B2 (en) | 2013-03-15 | 2016-07-26 | Bitmicro Networks, Inc. | Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained |
US9952991B1 (en) | 2014-04-17 | 2018-04-24 | Bitmicro Networks, Inc. | Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation |
US9811461B1 (en) | 2014-04-17 | 2017-11-07 | Bitmicro Networks, Inc. | Data storage system |
US10078604B1 (en) | 2014-04-17 | 2018-09-18 | Bitmicro Networks, Inc. | Interrupt coalescing |
US10042792B1 (en) | 2014-04-17 | 2018-08-07 | Bitmicro Networks, Inc. | Method for transferring and receiving frames across PCI express bus for SSD device |
US10025736B1 (en) | 2014-04-17 | 2018-07-17 | Bitmicro Networks, Inc. | Exchange message protocol message transmission between two devices |
US10055150B1 (en) | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
US10552050B1 (en) | 2017-04-07 | 2020-02-04 | Bitmicro Llc | Multi-dimensional computer storage system |
CN110825440B (zh) | 2018-08-10 | 2023-04-14 | 昆仑芯(北京)科技有限公司 | 指令执行方法和装置 |
CN112486638A (zh) * | 2019-09-11 | 2021-03-12 | 百度时代网络技术(北京)有限公司 | 用于执行处理任务的方法、装置、设备和存储介质 |
KR102465846B1 (ko) * | 2019-12-20 | 2022-11-10 | 주식회사 케이티 | 네트워크 장비를 제어하는 제어 시스템 및 방법 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4229790A (en) * | 1978-10-16 | 1980-10-21 | Denelcor, Inc. | Concurrent task and instruction processor and method |
US5465336A (en) * | 1994-06-30 | 1995-11-07 | International Business Machines Corporation | Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system |
US5710902A (en) * | 1995-09-06 | 1998-01-20 | Intel Corporation | Instruction dependency chain indentifier |
US6718375B1 (en) * | 1997-01-31 | 2004-04-06 | Hewlett-Packard Development Company, L.P. | Using local storage to handle multiple outstanding requests in a SCI system |
US6006326A (en) * | 1997-06-25 | 1999-12-21 | Sun Microsystems, Inc. | Apparatus for restraining over-eager load boosting in an out-of-order machine using a memory disambiguation buffer for determining dependencies |
US6128672A (en) * | 1998-03-10 | 2000-10-03 | Motorola, Inc. | Data transfer using software interrupt service routine between host processor and external device with queue of host processor and hardware queue pointers on external device |
US6557095B1 (en) * | 1999-12-27 | 2003-04-29 | Intel Corporation | Scheduling operations using a dependency matrix |
US6823511B1 (en) * | 2000-01-10 | 2004-11-23 | International Business Machines Corporation | Reader-writer lock for multiprocessor systems |
US6629195B2 (en) * | 2001-06-26 | 2003-09-30 | Intel Corporation | Implementing semaphores in a content addressable memory |
-
2006
- 2006-01-26 US US11/340,736 patent/US7634591B2/en not_active Expired - Fee Related
- 2006-12-22 JP JP2006346804A patent/JP5077531B2/ja not_active Expired - Fee Related
-
2007
- 2007-01-05 TW TW096100403A patent/TW200809608A/zh unknown
- 2007-01-19 CN CNA2007100039497A patent/CN101008928A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102934102A (zh) * | 2010-05-26 | 2013-02-13 | 日本电气株式会社 | 多处理器系统、执行控制方法和执行控制程序 |
CN103597460A (zh) * | 2011-04-08 | 2014-02-19 | 奥特拉有限公司 | 用于利用存储命令的系统和方法 |
CN103597460B (zh) * | 2011-04-08 | 2016-11-02 | 奥特拉有限公司 | 用于利用存储命令的系统和方法 |
CN107430509A (zh) * | 2015-04-19 | 2017-12-01 | 森蒂彼得塞米有限公司 | 基于近似寄存器访问规范的代码执行的运行时间并行化 |
CN111226196A (zh) * | 2017-11-30 | 2020-06-02 | 国际商业机器公司 | 在乱序处理器中具有一个或多个摘要位的可扩展依赖矩阵 |
CN111226196B (zh) * | 2017-11-30 | 2023-12-01 | 国际商业机器公司 | 在乱序处理器中具有一个或多个摘要位的可扩展依赖矩阵 |
Also Published As
Publication number | Publication date |
---|---|
US7634591B2 (en) | 2009-12-15 |
JP5077531B2 (ja) | 2012-11-21 |
TW200809608A (en) | 2008-02-16 |
JP2007200295A (ja) | 2007-08-09 |
US20070174493A1 (en) | 2007-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101008928A (zh) | 用于跟踪命令次序依赖性的方法和设备 | |
CN103257933B (zh) | 无序处理器中的事务存储器执行的方法、设备和系统 | |
US9824004B2 (en) | Methods and apparatuses for requesting ready status information from a memory | |
TWI294573B (en) | Apparatus and method for controlling establishing command order in an out of order dma command queue, and computer readable medium recording with related instructions | |
US20080189501A1 (en) | Methods and Apparatus for Issuing Commands on a Bus | |
US20070220361A1 (en) | Method and apparatus for guaranteeing memory bandwidth for trace data | |
CN105608490B (zh) | 细胞阵列计算系统以及其中的通信方法 | |
US11163710B2 (en) | Information processor with tightly coupled smart memory unit | |
KR101747966B1 (ko) | 자율 서브시스템 아키텍처 | |
US8990451B2 (en) | Controller for direct access to a memory for the direct transfer of data between memories of several peripheral devices, method and computer program enabling the implementation of such a controller | |
CN107305534A (zh) | 对使用NVMe接口的装置同时进行的内核模式和用户模式访问 | |
KR20170124995A (ko) | 자율 메모리 아키텍처 | |
US11435952B2 (en) | Memory system and control method controlling nonvolatile memory in accordance with command issued by processor | |
KR102442682B1 (ko) | 머신 러닝 시스템에서 직렬화된 키 값 접근을 방지하기 위한 시스템 및 방법 | |
US8397005B2 (en) | Masked register write method and apparatus | |
US20200117449A1 (en) | Accelerated Access to Computations Results Generated from Data Stored in Memory Devices | |
US9053092B2 (en) | System authorizing direct data transfers between memories of several components of that system | |
US9965321B2 (en) | Error checking in out-of-order task scheduling | |
CN100583048C (zh) | 传送数据的方法和系统 | |
US20190227838A1 (en) | System and method for batch accessing | |
US7552247B2 (en) | Increased computer peripheral throughput by using data available withholding | |
US11500802B1 (en) | Data replication for accelerator | |
CN115563053A (zh) | 高性能片上内存控制器及其执行的方法 | |
US10002087B1 (en) | Communication between an external processor and FPGA controller | |
JP4780333B2 (ja) | データプリフェッチデバイス、データプリフェッチ方法およびデータプリフェッチプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |