CN101135998A - 用于调度总线上的命令的方法和装置 - Google Patents

用于调度总线上的命令的方法和装置 Download PDF

Info

Publication number
CN101135998A
CN101135998A CNA2007101477520A CN200710147752A CN101135998A CN 101135998 A CN101135998 A CN 101135998A CN A2007101477520 A CNA2007101477520 A CN A2007101477520A CN 200710147752 A CN200710147752 A CN 200710147752A CN 101135998 A CN101135998 A CN 101135998A
Authority
CN
China
Prior art keywords
order
priority
address
bus
command
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
CNA2007101477520A
Other languages
English (en)
Inventor
C·B·麦克布莱德
D·A·诺加德
J·D·艾里希
D·M·特伦
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101135998A publication Critical patent/CN101135998A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Advance Control (AREA)

Abstract

在第一方面,提供了一种调度将要在总线上发布的命令的第一方法。该第一方法包括以下步骤:(1)将地址和优先级与将要在所述总线上发布的多个命令中的每一个相关联,其中与每个命令关联的优先级基于与所述命令关联的地址;(2)在预定的时间周期之后,更新与每个命令关联的优先级;以及(3)基于与将要发布的命令关联的地址和经更新的优先级,从所述多个命令选择将要在所述总线上发布的命令。提供了众多其它的方面。

Description

用于调度总线上的命令的方法和装置
技术领域
本发明一般涉及处理器,并且更具体而言,涉及用于调度总线上的优先化命令的方法和装置。
背景技术
在常规系统中,第一处理器可以从第二处理器接收将要放置在总线上命令。第一处理器可以将所接收的命令分成读命令流和写命令流,将读命令存储在读队列中以及将写命令存储在写队列中。
通过确定读队列顶部的读命令是否依赖于未决写命令的完成和/或写队列顶部的写命令是否依赖于未决读命令的完成,常规系统可以维护命令流之间的次序。更具体而言,常规系统采用读地址冲突列表来跟踪与未决读命令关联的地址,以及采用写地址冲突列表来跟踪与未决写命令关联的地址。
常规系统可以维护指示读命令对写命令的依赖的第一依赖矩阵。当通过相应的读命令索引时,该第一依赖矩阵可以由来自写地址冲突列表的数据输出填充。类似地,常规系统可以维护指示写命令对读命令的依赖的第二依赖矩阵。当通过相应的写命令索引时,该第二依赖矩阵可以由来自读地址冲突列表的数据输出填充。
常规系统可以采用依赖矩阵和地址冲突列表来确定读队列顶部的命令是否依赖于写命令和/或写队列顶部的命令是否依赖于读命令,并且从其发布命令。然而,只是基于地址冲突依赖而在总线上发布命令的这种方法不一定适应系统的需要。因此,用于在总线上发布命令的改进的方法和装置是值得期望的。
发明内容
在本发明的第一方面,提供了一种调度将要在总线上发布的命令的第一方法。所述第一方法包括以下步骤:(1)将地址和优先级与将要在所述总线上发布的多个命令中的每一个相关联,其中所述优先级基于与所述命令关联的地址;(2)在预定的时间周期之后,更新与所述命令关联的优先级;以及(3)基于所述关联地址和经更新的优先级,从所述多个命令选择将要在所述总线上发布的命令。
在本发明的第二方面,提供了一种用于调度将要在总线上发布的命令的第一装置。所述第一装置包括:(1)总线;以及(2)命令发布逻辑,所述命令发布逻辑耦合于所述总线并且适于(a)将地址和优先级与将要在所述总线上发布的多个命令中的每一个相关联,其中与每个命令关联的优先级基于与所述命令关联的地址;(b)在预定的时间周期之后,更新与每个命令关联的优先级;以及(c)基于与将要发布的命令关联的地址和经更新的优先级,从所述多个命令选择将要在所述总线上发布的命令。
在本发明的第三方面,提供了一种用于调度将要在总线上发布的命令的第一系统。所述第一系统包括:(1)第一处理器;以及(2)第二处理器,所述第二处理器耦合于所述第一处理器并且适于从所述第一处理器接收多个命令。所述第二处理器包括用于在总线上发布命令的装置,其具有(a)总线;以及(b)命令发布逻辑,所述命令发布逻辑耦合于所述总线并且适于(i)将地址和优先级与将要在所述总线上发布的多个命令中的每一个相关联,其中与每个命令关联的优先级基于与所述命令关联的地址;(ii)在预定的时间周期之后,更新与每个命令关联的优先级;以及(iii)基于与将要发布的命令关联的地址和经更新的优先级,从所述多个命令选择将要在所述总线上发布的命令。提供了众多其它的方面,如依照本发明的这些其它的方面的系统和装置。
根据以下详细的描述、所附权利要求以及附图,本发明的其它特征和方面将变得更加充分明显。
附图说明
图1A-B是依照本发明的实施例的系统的框图,该系统用于基于命令的优先级和地址冲突依赖来调度将要在总线上发布的命令;
图2依照本发明的实施例说明了图1A-B的系统的示例性依赖矩阵;
图3依照本发明的实施例说明了图1A-B的系统的依赖矩阵及由此所采用的信号;以及
图4依照本发明的实施例说明了图1A-B的系统中所包括的命令发布逻辑的细节。
具体实施方式
本发明提供了用于调度将要在总线上发布的命令的改进方法和装置。本方法可以采用常规系统的读写地址冲突列表以及第一和第二依赖矩阵。另外,本发明可以维护指示写命令对其它写命令的依赖的第三依赖矩阵。当通过相应的写命令索引时,该第三依赖矩阵可以由来自写地址冲突列表的数据输出填充。类似地,本发明可以维护指示读命令对其它读命令的依赖的第四依赖矩阵。当通过相应的读命令索引时,该第四依赖矩阵可以由来自读地址冲突列表的数据输出填充。
另外,除了地址冲突依赖之外,本发明还可以基于分派给命令的相应优先级来调度将要在总线上发布的命令。分派给命令的优先级可以基于与该命令关联的地址(例如,被该命令定为目标的地址)。例如,与预定范围内的地址关联的命令可以具有第一、正常优先级,并且将预定范围之外的地址定为目标的命令可以具有第二、较低的优先级。本方法和装置可以延迟较低优先级命令在总线上发布,直到在总线上发布了正常优先级命令。然而,为了防止无限期地延迟较低优先级命令,本方法和装置可以在预定的时间周期之后将较低优先级命令的优先级增加到正常优先级,以便可以在总线上发布该命令。以这样的方式,本发明可以提供用于调度将要在总线上发布的命令的方法和装置,其可以适应系统需要。
图1A-B是依照本发明的实施例的系统100的框图,该系统100用于基于命令的优先级和地址冲突依赖来调度将要在总线上发布的命令。参照图1A-B,系统100可以包括耦合于第二处理器104的第一处理器102,第二处理器104可以耦合于存储器106。第一处理器102可以适于从第二处理器104接收命令(例如,通往I/O子系统的读和/或写命令)。例如,第一处理器102可以是输入/输出(I/O)处理器,并且第二处理器104可以是向第一处理器102发布命令的主处理器或CPU 104。
第一处理器102可以包括耦合于命令发布逻辑110(例如,总线主逻辑)的I/O控制器108。I/O控制器108可以适于从第二处理器104接收命令并且向命令发布逻辑110传输这样的命令。更具体而言,I/O控制器108可以包括命令队列112,命令队列112适于存储从第二处理器104接收的命令并且由此向命令发布逻辑110发布命令。
命令发布逻辑110可以耦合于处理器总线114。命令发布逻辑110可以适于确定和跟踪由此接收的命令的地址冲突依赖。更具体而言,命令发布逻辑110可以适于确定与所接收的命令关联(例如,被所接收的命令定为目标)的地址是否和与先前接收到的命令关联的地址相同。此外,命令发布逻辑110可以适于基于与这样的命令关联(例如,被这样的命令定为目标)的地址是否在预定的地址范围内来向命令分派优先级。命令发布逻辑110可以适于分别基于命令的地址冲突依赖和分派给命令的优先级而在处理器总线114上发布命令。下面描述命令发布逻辑110的另外的细节。
处理器总线114可以耦合于一个或多个组件和/或通过其可以访问与命令关联的地址的I/O设备接口。例如,处理器总线114可以耦合于嵌入第一处理器102的处理器116。另外,处理器总线114可以耦合于适于耦合至PCI总线(未示出)的PCI快速卡(Express card)118。此外,处理器总线114可以耦合于网卡120(例如,10/100 Mbps以太网卡),第一处理器110通过其可以访问诸如广域网(WAN)或局域网(LAN)的网络122。另外,处理器总线114可以耦合于存储控制器(例如,双倍数据速率(DDR2)存储控制器)124,第一处理器110通过其可以耦合于第二存储器126。再者,处理器总线114可以耦合于通用异步收发机(UART)128,第一处理器110通过其可以耦合于调制解调器130。以上到处理器总线114的连接是示例性的。因此,处理器总线114可以耦合于更大或更小数量的组件或I/O设备接口。此外,处理器总线114可以耦合于不同类型的组件和/或I/O设备接口。如下所述,命令发布逻辑110可以在处理器总线114上高效率地发布命令,这可能需要访问耦合于处理器总线114的组件和/或I/O设备接口。
命令发布逻辑110可以包括流分路器逻辑(stream splitter logic)132,其适于将第一处理器102接收的命令分离成读命令流和写命令流。流分路器逻辑132可以向所接收的读命令分派相应的读标签以及向所接收的写命令分派相应的写标签。
流分路器逻辑132的第一输出134可以耦合于写地址冲突列表138的第一输入136。写地址冲突列表138可以类似于适于基于输入数据(例如,字)而输出数据的内容寻址存储器(CAM)。可以采用写地址冲突列表138的第一输入136来为写命令和与其关联的相应地址输入条目。以这样的方式,写地址冲突列表138可以包括对应于被分派了写标签的每个接收的写命令的条目。
类似地,流分路器逻辑132的第二输出140可以耦合于读地址冲突列表144的第一输入142。读地址冲突列表144也可以类似于适于基于输入数据而输出数据的CAM。可以采用读地址冲突列表144的第一输入142来为读命令和与其关联的相应地址输入条目。以这样的方式,读地址冲突列表144可以包括对应于被分派了读标签的每个接收的读命令的条目。
此外,流分路器逻辑132的第三输出146可以耦合于写地址冲突列表138的第二输入148,以便可以由写地址冲突列表138输入与读命令关联的地址。基于这样的输入,写地址冲突列表138可以通过其第一输出150输出一个或多个比特,第一输出150可以耦合于读写依赖矩阵154的第一输入152。以这样的方式,可以将比特按行存储在读写依赖矩阵154中(例如,响应于命令发布逻辑110的行设置命令)。
流分路器逻辑132的第四输出156可以耦合于写地址冲突列表138的第三输入158,以便可以由写地址冲突列表138输入与写命令关联的地址。基于这样的输入,写地址冲突列表138可以通过其第二输出160输出一个或多个比特,第二输出160可以耦合于写写依赖矩阵164的第一输入162。以这样的方式,可以将比特按行存储在写写依赖矩阵164中(例如,响应于命令发布逻辑110的行设置命令)。
此外,流分路器逻辑132的第五输出166可以耦合于读地址冲突列表144的第二输入168,以便可以由读地址冲突列表144输入与写命令关联的地址。基于这样的输入,读地址冲突列表144可以通过其第一输出170输出一个或多个比特,第一输出170可以耦合于写读依赖矩阵174的第一输入172。以这样的方式,可以将比特按行存储在写读依赖矩阵174中(例如,响应于命令发布逻辑110的行设置命令)。
流分路器逻辑132的第六输出176可以耦合于读地址冲突列表144的第三输入178,以便可以由读地址冲突列表144输入与读命令关联的地址。基于这样的输入,读地址冲突列表144可以通过第二输出180输出一个或多个比特,第二输出180可以耦合于读读依赖矩阵184的第一输入182。以这样的方式,可以将比特按行存储在读读依赖矩阵184中(例如,响应于命令发布逻辑110的行设置命令)。
另外,流分路器逻辑132的第七输出186可以耦合于第一优先级检测器逻辑190的输入188,该第一优先级检测器逻辑190适于基于与所接收的读命令关联的优先级来调整(例如,通过列设置命令)读读依赖矩阵184和/或写读依赖矩阵174中的读命令的依赖。第一优先级检测器逻辑190的第一输出191可以耦合于读读依赖矩阵184的第二输入192。列设置命令可以从第一优先级检测器逻辑190输出以及由读读依赖矩阵184输入。类似地,第一优先级检测器逻辑190的第二输出193可以耦合于写读依赖矩阵174的第二输入194。列设置命令可以从第一优先级检测器逻辑190输出以及由写读依赖矩阵174输入。此外,第一优先级检测器逻辑190可以耦合于适于存储读命令的队列195。
类似地,流分路器逻辑132的第八输出209可以耦合于第二优先级检测器逻辑211的输入210,该第二优先级检测器逻辑211适于基于与所接收的写命令关联的优先级来调整(例如,通过列设置命令)写写依赖矩阵164和/或读写依赖矩阵154中的写命令的依赖。第二优先级检测器逻辑211的第一输出212可以耦合于写写依赖矩阵164的第二输入213。列设置命令可以从第二优先级检测器逻辑211输出以及由写写依赖矩阵164输入。类似地,第二优先级检测器逻辑211的第二输出214可以耦合于读写依赖矩阵154的第二输入215。列设置命令可以从第二优先级检测器逻辑211输出以及由读写依赖矩阵154输入。此外,第二优先级检测器逻辑211可以耦合于适于存储写命令的队列216。
写命令队列216的输出217可以耦合于第二依赖检查逻辑219的第一输入218。此外,写读矩阵174的第一输出220可以耦合于第二依赖检查逻辑219的第二输入221。类似地,写写依赖矩阵164的第一输出222可以耦合于第二依赖检查逻辑219的第三输入223。第二依赖检查逻辑219可以适于确定是否已经清除了与所接收的写命令关联的依赖。更具体而言,第二依赖检查逻辑219可以(例如,通过其第二输入221)接收这样的信息的一个或多个比特,即该信息指示一个或多个写命令对来自写读依赖矩阵174、从其第一输出220输出的读命令的依赖。此外,第二依赖检查逻辑219可以(例如,通过其第三输入223)接收这样的信息的一个或多个比特,即该信息指示一个或多个写命令对来自写写依赖矩阵164、从其第一输出222输出的其它写命令的依赖。基于这样的比特,第二依赖检查逻辑219可以确定是否已经清除了与写队列中相应的命令关联的依赖。
读命令对列195的输出196可以耦合于第一依赖检查逻辑198的第一输入197。此外,读写依赖矩阵154的第一输出199可以耦合于第一依赖检查逻辑198的第二输入200。类似地,读读依赖矩阵184的第一输出201可以耦合于第一依赖检查逻辑198的第三输入202。第一依赖检查逻辑198可以适于确定是否已经清除了与所接收的读命令关联的依赖。更具体而言,第一依赖检查逻辑198可以(例如,通过其第二输入200)接收这样的信息的一个或多个比特,即该信息指示一个或多个读命令对来自读写依赖矩阵154、从其第一输出199输出的写命令的依赖。此外,第一依赖检查逻辑198可以(例如,通过其第二输入202)接收这样的信息的一个或多个比特,即该信息指示一个或多个读命令对来自读读依赖矩阵184、从其第一输出201输出的其它读命令的依赖。基于这样的比特,第一依赖检查逻辑198可以确定是否已经清除了与读队列中相应的命令关联的依赖。
第一依赖检查逻辑198可以耦合于形成总线接口204的第一部分的读接口203,命令通过该接口被发布到总线114。一旦从读命令队列195选择了不依赖于其它命令的命令,就可以将这样的命令提供给读接口203。当读命令在总线上完成时,读接口203可以更新读读和写读矩阵184、174以更新存储在其中的命令对所选择的读命令的依赖(例如,通过列重置命令)。例如,列重置命令可以从读接口203通过其第一输出205输出以及由读读矩阵184的第二输入206输入。类似地,列重置命令可以从读接口203通过其第二输出207输出以及由写读矩阵174的第二输入208输入。
第二依赖检查逻辑219可以耦合于形成总线接口204的第二部分的写接口224。一旦从写命令队列216选择了不依赖于其它命令的命令,就可以将这样的命令提供给写接口224。写接口224可以更新写写和读写矩阵164、154以更新存储在其中的命令对所选择的写命令的依赖(例如,通过列重置命令)。例如,列重置命令可以从写接口224通过其第一输出225输出以及由写写矩阵164的第三输入226输入。类似地,列重置命令可以从写接口224通过其第二输出227输出以及由读写矩阵154的第二输入228输入。
分派给各个命令的优先级可以基于存储在多个寄存器中的值。例如,命令发布逻辑110可以包括适于定义这样的值的第一寄存器232(例如,优先级启用寄存器),其中该值指示第一处理是否正基于优先级在处理器总线114上发布命令。此外,命令发布逻辑110可以包括适于定义地址范围的第二和第三寄存器(例如,低优先级地址范围寄存器)234、236。可以为与这样的范围中的地址关联的命令分派比存储在该地址范围之外的命令(例如,正常优先级)更低的优先级(例如,低未决优先级)。另外,命令发布逻辑110可以包括适于存储这样的值的第四寄存器238(例如,优先级间隔寄存器),其中该值用于定义此后可以更新命令的优先级的间隔。例如,该值可以由命令发布逻辑110的计数器(图4中的432)采用。在计数器从0计数到该间隔或者从该间隔计数到0之后,较低优先级命令的优先级可以被相应地更新到较高的优先级。
图2依照本发明的实施例说明了图1A-B的系统100的示例性依赖矩阵250。参照图2,示例性依赖矩阵250可以是系统100的读读依赖矩阵(图1A-B中的184)。可以将依赖矩阵250安排到行252和列254中。依赖矩阵250的行252可以对应于可以被分派给命令发布逻辑110中的命令的读标签。例如,假设命令发布逻辑110可以将n个标签分派给读命令,依赖矩阵250的第一行256可以对应于被分派Read _Tag 0的命令,依赖矩阵250的第二行258可以对应于被分派Read _Tag 1的命令,等等,从而使得依赖矩阵250的第(n-1)行260可以被分派Read_Tag n。
类似地,依赖矩阵250的列254可以对应于可以被分派给命令发布逻辑110中的命令的读标签。例如,依赖矩阵250的第一列262可以对应于被分派Read_Tag 0的命令,依赖矩阵250的第二列264可以对应于被分派Read_Tag 1的命令,等等,从而使得依赖矩阵250的第(n-1)列266可以被分派Read_Tag n。行252可以表示依赖值,并且列254可以表示独立值。以这样的方式,存储在对应于分派给命令的读标签的行中的比特可以指示命令对被分派了其它读标签的一个或多个命令(例如,一列或多列)的依赖。例如,在第二行258中断言的比特(例如,逻辑“1”)指示被分派Read_Tag 1的命令依赖于被分派Read_Tag n-1的命令。因此,可以不在总线(图1A-B中的114)上发布被分派Read_Tag 1的命令,直到被分派Read_Tag n-1的命令被发布在处理器总线114上并且完成。可以以类似的方式将系统100的其余的依赖矩阵(图1A-B中的154、164、174)安排到行和列中。因此,对于读写依赖矩阵154来说,行252对应于读标签并且列254对应于写标签。
一个或多个优先级比特268可以与依赖矩阵250的各行252关联。行252的优先级比特可以指示分派给与对应于这样的行252的读标签关联的命令的优先级。例如,优先级比特状态“00”可以指示与其关联的命令具有正常优先级,优先级比特状态“10”可以指示与其关联的命令具有低于正常优先级的“低活性(Low Active)”优先级,并且优先级比特状态“01”可以指示与其关联的命令具有低于低活性优先级的“低未决”优先级。剩余的优先级比特状态“11”可以是未定义的(尽管这样的状态可以表示另一优先级级别)。仅可以在处理器总线114上发布不依赖于依赖矩阵250中其它命令的、正常优先级的命令。此外,依赖矩阵250可以包括和/或耦合于优先级设置/重置逻辑270,优先级设置/重置逻辑270可以适于更新与对应于依赖矩阵250的条目的命令关联的优先级。例如,优先级设置/重置逻辑270可以包括第一输入272,可以在第一输入272上接收信号Update(更新)并将其输入到优先级设置/重置逻辑270。当优先级设置/重置逻辑270接收到信号Update时,优先级设置/重置逻辑270可以更新对应于依赖矩阵250的各行252的一个或多个优先级比特。可以更新对应于行252的优先级比特,以便可以将指示“低未决”优先级的优先级比特变成指示“低活性”优先级的优先级比特。此外,可以更新对应于行252的优先级比特,以便可以将指示“低活性”优先级的优先级比特变成指示“正常”优先级的优先级比特。基于这样的优先级比特,命令发布逻辑110可以更新依赖矩阵250的列254,以便创建虚地址冲突依赖。虚依赖(dummydependencies)实际上基于与新命令关联的地址是否在由低优先级地址范围寄存器234、236所定义的地址范围内。如果不是的话,则新命令具有正常优先级。可以为较低优先级的依赖矩阵250中的所有命令创建虚地址冲突依赖。
图3依照本发明的实施例说明了图1A-B的系统100的依赖矩阵154、164、174、184以及由此所采用的信号。参照图3,说明了由系统100的依赖矩阵154、164、174、184输入或从系统100的依赖矩阵154、164、174、184输出的信号的细节。例如,由矩阵154的第一输入152输入的读行设置命令RdRowSet(0:n)可以将数据存储在读写矩阵154的行252中。以这样的方式,可以更新读写矩阵154以包括关于依赖于写命令的读命令(因为它们与相同的地址关联)的信息(例如,地址冲突依赖信息)。可以响应于查找而从写地址冲突列表138输出这样的数据。由矩阵154的第二输入215输入的写列设置命令WrColumSet(0:n)可以在读写矩阵154中更新读命令对写命令的依赖。例如,当接收到正常优先级的写命令时,命令发布逻辑110可以采用写列设置命令来更新由矩阵154存储的具有较低优先级的读命令的依赖。以这样的方式,可以基于与其关联的相应优先级为这样的读命令设置对正常优先级写命令的虚地址冲突依赖。由矩阵154的另一输入228输入的写列重置WrColumReSet(0:n)可以在读写矩阵154中更新读命令对已经完成的写命令的依赖。以这样的方式,当写命令完成时,更新对写命令有依赖的读命令,以便该读命令不再对其依赖。读写矩阵154可以包括可以在其上接收信号Enable(启用)的另一输入300。信号Enable可以指示命令发布逻辑110是否分别将优先级与命令相关联,并且基于这样的优先级在处理器总线114上发布命令。读写矩阵154可以通过第一输出199输出关于读命令对写命令的依赖的数据dep_clear(0:n)。可以将这样的数据提供给第二依赖检查逻辑219,其可以基于该数据选择将要在处理器总线114上发布的写命令。
类似地,由矩阵164的第一输入162输入的写行设置命令WrRowSet(0:n)可以将数据存储在写写矩阵164的行252中。以这样的方式,可以更新写写矩阵164以包括关于依赖于写命令的写命令(因为它们与相同的地址关联)的信息(例如,地址冲突依赖信息)。可以响应于查找而从写地址冲突列表138输出这样的数据。由矩阵164的第二输入213输入的写列设置命令WrColumSet(0:n)可以在写写矩阵164中更新写命令对写命令的依赖。例如,当接收到正常优先级的新的写命令时,命令发布逻辑110可以采用写列设置命令来更新由矩阵164存储的具有较低优先级的写命令的依赖。以这样的方式,可以基于与其关联的相应优先级为这样的写命令设置对正常优先级写命令的虚地址冲突依赖。由矩阵164的第三输入226输入的写列重置命令WrColumReSet(0:n)可以在写写矩阵164中更新写命令对已经完成的写命令的依赖。以这样的方式,当写命令完成时,更新对完成的写命令有依赖的写命令,从而使得该写命令不再对其依赖。写写依赖矩阵164可以包括可以在其上接收信号Enable的另一输入302,信号Enable指示是否将优先级分派给了命令。写写依赖矩阵164可以通过第一输出223输出关于写命令对其它写命令的依赖的数据dep_clear(0:n)。可以将这样的数据提供给第二依赖检查逻辑219,其可以基于该数据选择将要在处理器总线114上发布的写命令。
类似地,由矩阵174的第一输入172输入的写行设置命令WrRowSet(0:n)可以将数据存储在写读依赖矩阵174的行252中。以这样的方式,可以更新写读依赖矩阵174以包括关于依赖于读命令的写命令(因为它们与相同的地址关联)的信息(例如,地址冲突依赖信息)。可以响应于查找而从读地址冲突列表144输出这样的数据。由矩阵174的第二输入194输入的读列设置命令RdColumSet(0:n)可以在写读矩阵174中更新写命令对读命令的依赖。例如,当接收到正常优先级的读命令时,命令发布逻辑110可以采用读列设置命令来更新由矩阵174存储的具有较低优先级的写命令的依赖。以这样的方式,可以基于与其关联的相应优先级为这样的写命令设置对正常优先级读命令的虚地址冲突依赖。由矩阵174的第三输入208输入的读列重置命令RdColumReSet(0:n)可以在写读依赖矩阵174中更新写命令对完成的读命令的依赖。以这样的方式,当读命令完成时,更新对读命令有依赖的写命令,以便该写命令不再对其依赖。写读依赖矩阵174可以包括可以在其上接收信号Enable的另一输入304。信号Enable可以指示命令发布逻辑110是否分别将优先级与命令相关联,并且基于这样的优先级在处理器总线114上发布命令。写读依赖矩阵174可以通过第一输出220输出关于写命令对读命令的依赖的数据dep_clear(0:n)。可以将这样的数据提供给第二依赖检查逻辑219,其可以基于该数据选择将要在处理器总线114上发布的写命令。
类似地,由矩阵184的第一输入182输入的读行设置命令RdRowSet(0:n)可以将数据存储在读读依赖矩阵184的行252中。以这样的方式,可以更新读读依赖矩阵184以包括关于依赖于其它读命令的读命令(因为它们与相同的地址关联)的信息(例如,地址冲突依赖信息)。可以响应于查找而从读地址冲突列表144输出这样的数据。由矩阵184的第二输入192输入的读列设置命令RdColumSet(0:n)可以在读读依赖矩阵184中更新读命令对新的读命令的依赖。例如,当接收到正常优先级的读命令时,命令发布逻辑110可以采用读列设置命令来更新由矩阵184存储的具有较低优先级的读命令的依赖。以这样的方式,可以基于与其关联的相应优先级为这样的读命令设置对正常优先级读命令的虚地址冲突依赖。由矩阵184的第三输入206输入的读列重置命令RdColumReSet(0:n)可以在读读依赖矩阵184中更新读命令对完成的读命令的依赖。以这样的方式,当读命令完成时,更新对完成的读命令有依赖的读命令,从而使得该读命令不再对其依赖。读读矩阵184可以包括可以在其上接收信号Enable的另一输入306。读读矩阵184可以通过第一输出201输出关于读命令对读命令的依赖的数据dep_clear(0:n)。可以将这样的数据提供给第一依赖检查逻辑198,其可以基于该数据选择将要在处理器总线114上发布的读命令。
每个依赖矩阵154、164、174、184都可以与一组优先级比特268以及优先级设置/重置逻辑270相关联。然而,为方便起见,图3中未示出这样的优先级比特268和优先级设置/重置逻辑。
图4依照本发明的实施例说明了图1A-B的系统100中所包括的命令发布逻辑110的细节。参照图4,命令发布逻辑110可以接收与地址关联的新的I/O命令。可以包括在流分路器逻辑132中和/或耦合于流分路器逻辑132的标签分派逻辑400可以接收新的命令。标签分派逻辑400可以适于将读标签与标签分派逻辑400接收到的每个读命令以及将写标签与标签分派逻辑400接收到的每个写命令相关联。
命令发布逻辑110可以包括命令缓冲器402、404,其适于分别存储由逻辑110接收的读和写命令。如果命令发布逻辑110可以将n个读标签与读命令以及将n个写标签与写命令相关联,则命令缓冲器402、404可以各包括n个条目(尽管可以采用更大或更小数目的条目)。另外,对于每个命令缓冲器402、404来说,命令发布逻辑110可以包括耦合于其上的指针的队列406、407(例如,先进先出(FIFO))。指针的队列406、407可以适于跟踪命令缓冲器的结构(例如,其最初和最后的条目)。指针的队列可以采用标签指针移位器来为具有排序要求的那些命令维护命令次序以及管理具有一列空闲空间的命令缓冲器。指针的读队列406可以通过第一多路复用器408耦合于读命令缓冲器402,并且指针的写队列407可以通过第二多路复用器409耦合于写命令缓冲器404。可以将每个新的命令及其关联的标签提供给对应的命令缓冲器402、404和/或指针的队列406、407,以便可以将这样的命令存储在命令缓冲器402、404中。
如图所示,可以将与地址关联的每个新的命令连同与该命令关联的标签提供给读地址冲突列表144和写地址冲突列表138。以这样的方式,如以上参照图1A-B所描述的,可以利用新接收的读命令及其关联的地址更新读地址冲突列表144,以及可以利用新接收的写命令及其关联的地址更新写地址冲突列表138。此外,可以为与地址和标签关联的每个新的命令进行读地址冲突列表查找和写地址冲突列表查找。以这样的方式,可以如以上参照图1A-B所述填充依赖矩阵154、164、174、184。
如所述,命令发布逻辑110可以包括优先级设置/重置逻辑410、411、412、413并且分别为每个依赖矩阵154、164、174、184存储优先级比特414、415、416、417,从而使得优先级比特与依赖矩阵条目之间的映射为1∶1。可以采用优先级设置/重置逻辑410、411、412、413来设置与存储在一个或多个依赖矩阵154、164、174、184中的新命令关联的优先级比特414、415、416、417。
此外,依赖矩阵154、164、174、184可以耦合于命令选择控制逻辑418,其可以包括在依赖检查逻辑198、219中和/或耦合于依赖检查逻辑198、219。命令选择控制逻辑418可以接收关于读命令对写命令和其它读命令的依赖的数据。此外,命令选择控制逻辑418可以接收关于写命令对读命令和其它写命令的依赖的数据。另外,命令选择控制逻辑418可以接收关于与来自一个或多个依赖矩阵154、164、174、184的一个或多个条目关联的优先级的数据。命令选择控制逻辑418的第一输出420可以耦合于第一多路复用器410,并且命令选择控制逻辑418的第二输出422可以耦合于第二多路复用器409。基于依赖和优先级数据,命令选择控制逻辑418可以输出用作第一或第二多路复用器408、409的控制信号的信号,该信号确定来自指针的队列406、407的指针424,可以从多路复用器408、409通过其输出426、428输出该指针424。从多路复用器408、409输出的指针424可以用作命令缓冲器402、404的头指针,其标识将要从命令缓冲器402、404输出到总线(图1A-B中的114)上的下一读或写命令。
命令发布逻辑110可以包括存储变换输入/输出(MMIO)接口430,其耦合于优先级启用寄存器232、低优先级地址范围寄存器234、236以及优先级间隔寄存器238。处理器(例如,I/O处理器102)可以采用MMIO接口430来设置存储在这样的寄存器232、234、236、238中的值。存储在优先级启用寄存器232中的值可以用作信号Enable,该信号指示第一处理器102是否基于分派给命令的相应优先级在处理器总线114上发布了命令。信号Enable可以通过优先级设置/重置逻辑410、411、412、413耦合于依赖矩阵154、164、174、184,在一些实施例中,信号Enable可以直接耦合于依赖矩阵154、164、174、184。
命令发布逻辑110可以包括耦合于比较逻辑434的计数器(例如,优先级间隔计数器)432。此外,比较逻辑434可以耦合于优先级间隔寄存器238的输出436。计数器432可以适于从0向上计数。比较逻辑434可以适于确定计数器432的值(例如,从0开始以后)何时等于由优先级间隔寄存器238存储的值。如果比较逻辑434确定计数器值等于优先级间隔寄存器值,则命令发布逻辑110可以重置计数器值。此外,当比较逻辑434确定计数器值等于优先级间隔寄存器值时,优先级设置/重置逻辑410、411、412、413可以通过更新与存储在矩阵154、164、174、184中的命令关联的优先级比特来更新与存储在依赖矩阵154、164、174、184中的命令关联的相应优先级。例如,优先级设置/重置逻辑410、411、412、413可以将具有优先级“低未决”的所有命令变成优先级“低活性”,并且可以将具有优先级“低活性”的所有命令变成“正常”优先级。以这样的方式,可以在为命令分派正常优先级之前对其延迟接近两倍间隔,以便可以从总线发布该命令。在一些实施例中,尽管计数器432向上计数,然而计数器432可以适于从优先级间隔寄存器值向下计数至0。
现参照图1-4描述用于在处理器总线114上发布命令的系统100的示例性操作。第一处理器102可以从第二处理器104接收一个或多个命令(例如,I/O命令)。每个命令可以与(例如,目标或要求访问的)地址相关联。可以在I/O控制器108中接收每个命令并且将其存储在命令队列112中。从命令队列112,可以将命令提供给流分路器逻辑132。如果新的命令是读命令,则流分路器逻辑132可以将该命令引导至读命令队列195。可选地,如果新的命令是写命令,则流分路器逻辑132可以将该命令引导至写命令队列216。流分路器逻辑132可以基于标签可用性将标签分派给新的命令。流分路器逻辑132可以采用零优先级来将标签分派给命令。例如,假设新的命令是读命令并且命令发布逻辑110采用十六个读标签Read_Tag 0-Read_Tag 15。如果使用了Read _Tag 0和Read_Tag 1并且剩余的读标签空闲,则流分路器逻辑132可以将Read_Tag 2分派给该新的读命令。然而,流分路器逻辑132可以以不同的方式分派标签。
命令发布逻辑110可以确定新的命令是否与一个或多个先前接收到的命令将相同的地址定为目标,并且因此,对其依赖。例如,可以采用与新的命令关联的地址来索引地址冲突列表138、144。作为响应,读和写地址冲突列表138、144中的每一个均可以输出这样的数据(例如,地址冲突依赖数据),即该数据指示了与该新的命令将相同的地址定为目标的先前接收到的命令。命令发布逻辑110可以对与命令关联的地址采用任意字节边界(尽管可以采用全部地址)。例如,对于这样的地址可以采用256字节的边界。因此,可以在256字节的边界上索引地址冲突列表138、144。
此外,命令发布逻辑110可以适于将与新命令关联的地址与存储在低优先级地址范围寄存器234、236中的地址进行比较。如果地址是在由寄存器234、236所定义的低优先级地址范围内,则命令发布逻辑110可以将“低未决”优先级分派给该命令。否则,命令发布逻辑110可以将“正常”优先级分派给该命令。
与新命令相关的地址冲突依赖数据和优先级数据可以存储在一个或多个依赖矩阵154、164、174、184中。例如,与新的读命令相关的地址冲突依赖数据和优先级数据可以存储在读读和读写依赖矩阵184、154中。类似地,如果新命令是写命令,则与该命令相关的地址冲突依赖数据和优先级数据可以存储在写写和写读矩阵164、174中。可以在这样的依赖矩阵154、164、174、184中将新命令的条目放置在对应于分派给该命令的标签的行252中。再次假设将Read_Tag 2分派给新的读命令,则与该新的读命令相关的地址冲突依赖数据和优先级数据可以存储在读读和读写依赖矩阵184、154中每一个的第三行中。
可以将新的命令提供给对应的地址冲突依赖列表138、144以更新这样的列表138、144。例如,可以将新的读命令提供给读地址冲突列表144,以便可以将对应于该新的读命令的条目添加到列表144。条目可以包括读命令及其关联的地址,并且可以由所分派的标签对其进行索引。如果新的命令是写命令,则可以以类似的方式更新写地址冲突依赖列表138。
可以通过对应的优先级检测器逻辑190、211将新的命令从流分路器逻辑132传输至关联队列。例如,可以通过第一优先级检测器逻辑190将新的读命令从流分路器逻辑132传输至读命令队列195。如果与新命令关联的地址具有“正常”优先级,则对于一个或多个依赖矩阵154、164、174、184,优先级检测器逻辑190、211可以(例如,通过列设置命令)将数据写到对应于分派给该新命令的标签的列。对于由分派给新命令的标签所索引的依赖矩阵154、164、174、184的这样的列写入可以设置对具有有效标签的所有较低优先级命令(例如,“低未决”和“低活性”优先级命令)创建对新命令的依赖(如果还未设置的话)。以这样的方式,可以基于分派给命令的相应优先级为先前接收到的命令创建对新命令的虚地址冲突依赖。如果新的命令是正常优先级读命令,则第一优先级检测器逻辑190可以在读读矩阵184和写读矩阵174中写入列254。可选地,如果新的命令是正常优先级写命令,则第二优先级检测器逻辑211可以在写写矩阵164和读写矩阵154中写入列254。因而,命令发布逻辑110可以为命令创建前向和反向交叉依赖(例如,命令可以具有先前接收的和随后接收的命令的依赖)。
第一处理器102可以继续接收命令(例如,从第二处理器104)。当优先级间隔计数器432的值达到优先级间隔寄存器值的时候,命令发布逻辑110可以更新(例如,通过优先级设置/重置逻辑270)分派给存储在依赖矩阵154、164、174、184中的命令的所有优先级。例如,优先级设置/重置逻辑270可以将具有优先级“低未决”的命令变成优先级“低活性”,并且可以将具有优先级“低活性”的命令变成优先级“正常”。可以更新与命令关联的优先级比特414、415、416、417以改变命令的优先级。以这样的方式,当启用优先级并且优先级计数器432的值与优先级间隔寄存器238的值匹配的时候,每个依赖矩阵154、164、174、184中所有的有效低活性优先级比特都从低活性优先级切换到正常优先级。然而,可以不对此时是基于优先级的地址冲突依赖或虚地址冲突依赖进行改变。而是,当促成这样的依赖的独立命令完成时(例如,当在处理器总线114上通过其相应的接口203、224发布之后完成),可以通过列重置命令清除地址冲突依赖和/或虚地址冲突依赖。以这样的方式,通常可以在能够在处理器总线114上发布命令之前清除依赖。
依赖检查逻辑198、219可以接收与存储在依赖矩阵154、164、174、184中的命令相关的地址冲突依赖和优先级数据,并且确定是否已经清除了地址冲突依赖和虚地址冲突依赖。当清除了存储在队列195、216中的命令的所有地址冲突依赖和虚地址冲突依赖时,可以基于是否启用了命令优先级(例如,基于存储在优先级启用寄存器232中的值),在处理器总线114上通过其关联接口203、224发布命令。例如,如果启用了命令优先级,则命令发布逻辑110可以基于优先级不按次序地从命令队列195、216(例如,命令缓冲器402、404)将命令发布在处理器总线114上。可以采用命令选择控制逻辑418来从指针的队列406、407选择指针424,该指针424用作命令缓冲器402、404的头指针,其中从命令缓冲器402、404选择将要在处理器总线114上发布的命令。如果队列195、216中没有低优先级(例如,低活性和/或低未决)命令,则命令发布逻辑110可以像依赖清除一样从这样的队列195、216以FIFO次序发布命令。可选地,如果没有启用命令优先级,则可以从命令队列195、216以FIFO次序将命令发布在处理器总线114上(例如,与优先级级别无关)。
以上描述了由第一处理器102接收和处理的读命令的细节。然而,可以以类似的方式接收和处理写命令。
通过使用本方法和装置,可以采用命令的地址冲突依赖以及命令相应的优先级来针对系统100的需要设计在处理器总线114上的命令发布。例如,可以基于与命令关联的地址冲突依赖和优先级级别停止将要在处理器总线114上发布的命令。更具体而言,本方法和装置可以采用诸如常规地址冲突列表和修改的常规依赖矩阵这样的依赖逻辑来存储和更新优先级比特以及其它逻辑,以便将正常或较低优先级分派给所接收的命令,从而为命令创建地址冲突依赖,以及在接收到新的正常优先级命令时为较低优先级命令创建虚地址冲突依赖。该方法和装置可以在命令发布逻辑110内采用MMIOable寄存器232-238来存储定义了较低优先级命令的地址范围。此外,本方法和装置可以在预定数目的循环之后增加较低优先级命令的优先级,而不管正常优先级命令是否出现。以这样的方式,在可能定义较高优先级通信(traffic)的情况下,可以不接近较低优先级命令的最大循环数,并且因此不无限期地延迟较低优先级命令。因此,基于与命令关联的地址是否在预定范围内以及基于预定的时间间隔,本方法和装置可以通过施加依赖来优先化I/O命令。即本方法和装置可以将依赖施加在组的所有成员上,其中,利用在每个预定时间周期(例如,优先级间隔)末尾终止的循环优先级(revolving priority),该组的所有成员被优先化于另一组的成员之后。可以根据需要调整预定时间周期,从而增加命令优先化系统的灵活性。
因而,诸如系统设计者的用户可以采用可以是I/O芯片内的机制的本方法和装置,以便基于系统需要优先化通过第一处理器102的命令通信(command traffic)。在示例性系统中,从第二处理器104到第一处理器102的主要命令通信可以将与网络122(例如,LAN或WAN)相关的地址定为目标。然而,示例性系统可以接收与耦合于UART 128的调制解调器130相关的间歇第二命令通信。系统设计者可能想要防止与调制解调器130相关的命令通信反过来影响与网络122相关的命令通信。通过使用本方法和装置,用户可以在不得不在处理器总线114上发布主要命令时延迟第二命令在处理器总线114上的发布。示例性系统可以基于预定的时间间隔(例如,当预定的时间间隔结束时)将优先级分派给命令通信以及被分派给该命令的经更新的相应优先级。以这样的方式,可以在预定的时间周期之后增加与第二命令关联的相应优先级,并且因此,甚至在主要命令通信量高时,也不会无限期地停止这样的通信。
因而,类似于常规I/O处理器,本发明提供了一种I/O处理器102,其可以通过I/O接口从另一处理器(例如,CPU)接收读、写,确保按序执行来自另一处理器(例如,CPU)的I/O(eieio)和/或类似命令。该I/O处理器102可以缓冲命令并且将命令控制到处理器总线114(例如,本地处理器总线(PLB))上,由此可以将命令传递到适当的设备(例如,PCI快速接口卡或DDR2存储控制器)。为了在等待读命令完成时防止写命令不必要的停止,该I/O处理器可以将所接收到的命令分成分离的读和写流。因为以这样的方式来分离命令,所以应当在流之间维护命令次序。取决于所涉及的接口以及命令目标地址,排序规则可以从严格到宽松。严格的排序规定读和写命令必须按照与它们被从CPU发布的相同次序完成。宽松的排序规定读和写命令如果没有将相同的地址空间定为目标就可以各自传递。然而,可以采用另一排序规则。当命令从CPU流出时与该命令一起传递排序规则。使用每个流的依赖矩阵以及计算依赖的地址查找列表来维护读和写流之间的次序。当读和写命令达到其各自队列的顶部时,进行依赖检查以查看是否有任何未清的依赖。如果有依赖,那么停止命令及其相应的队列,直到清除该依赖。
相比于常规I/O处理器,本方法和装置在当前正在进行中(in-flight)的读和/或写命令上存储读和写命令二者的依赖。因而,采用了四个依赖矩阵154、164、174、184。存储在依赖矩阵154、164、174、184中的依赖是地址冲突依赖。例如,如果读命令之后是以相同地址空间为目标的写命令,则该写命令可以得到对该读命令的依赖并且直到该读命令结束才会完成。相比于常规I/O处理器,本方法和装置可以创建和向命令分派优先级。可以在预定的时间周期之后更新这样的优先级。此外,本方法和装置可以基于这样的优先级为命令创建虚地址冲突依赖。优先级和虚地址冲突依赖可以存储在依赖矩阵154、164、174、184中。基于地址冲突依赖、虚地址冲突依赖以及优先级,本方法和装置可以提供一种调度将要在总线上发布的命令的、可定制和高效的方法。
前述描述仅公开了本发明的示例性实施例。对以上公开的装置和方法进行的落入本发明范围之内的修改对本领域的普通技术人员来说是显而易见的。例如,尽管通过在系统用户指定的优先级间隔上施加地址冲突依赖来基于相应的目标地址优先化命令的系统100采用了三种优先级级别(例如,低未决、低活性以及未决),然而可以采用更大或更小数目的优先级级别。
因此,虽然已经结合其示例性实施例公开了本发明,但是应当理解到其它实施例也可能落入由以下权利要求所定义的本发明的精神和范围之内。

Claims (21)

1.一种调度将要在总线上发布的命令的方法,所述方法包括:
将地址和优先级与将要在所述总线上发布的多个命令中的每一个相关联,其中与每个命令关联的优先级基于与所述命令关联的地址;
在预定的时间周期之后,更新与每个命令关联的优先级;以及
基于与将要发布的命令关联的关联地址和经更新的优先级,从所述多个命令选择将要在所述总线上发布的命令。
2.根据权利要求1的方法,其进一步包括:在所述总线上发布所选择的命令。
3.根据权利要求1的方法,其中所述优先级基于与所述命令关联的地址是否在预定的地址范围之内。
4.根据权利要求1的方法,其中更新与所述命令关联的优先级包括:增加与所述命令关联的优先级。
5.根据权利要求1的方法,其进一步包括:防止在所述总线上发布所述命令,直到所述命令的优先级级别被改变成较高的优先级或者在所述总线上发布了具有所述较高优先级的随后接收到的命令。
6.根据权利要求1的方法,其中基于所述关联地址和经更新的优先级选择所述命令包括:基于与所述命令关联的地址是否还与先前接收到的命令相关联以及所述经更新的优先级是否是预定的优先级来选择所述命令。
7.根据权利要求1的方法,其中从所述多个命令选择将要在所述总线上发布的命令包括:当与相同的地址关联的另一命令完成时,基于所述经更新的优先级从所述多个命令选择将要在所述总线上发布的命令。
8.一种用于调度将要在总线上发布的命令的装置,所述装置包括:
总线;以及
命令发布逻辑,所述命令发布逻辑耦合于所述总线并且适于:
将地址和优先级与将要在所述总线上发布的多个命令中的每一个相关联,其中与每个命令关联的优先级基于与所述命令关联的地址;
在预定的时间周期之后,更新与每个命令关联的优先级;以及
基于与将要发布的命令关联的地址和经更新的优先级,从所述多个命令选择将要在所述总线上发布的命令。
9.根据权利要求8的装置,其中所述命令发布逻辑进一步适于:在所述总线上发布所选择的命令。
10.根据权利要求8的装置,其中所述优先级基于与所述命令关联的地址是否在预定的地址范围之内。
11.根据权利要求8的装置,其中所述命令发布逻辑进一步适于:增加与所述命令关联的优先级。
12.根据权利要求8的装置,其中所述命令发布逻辑进一步适于:防止在所述总线上发布所述命令,直到所述命令的优先级级别被改变成较高的优先级或者在所述总线上发布了具有所述较高优先级的随后接收到的命令。
13.根据权利要求8的装置,其中所述命令发布逻辑进一步适于:基于与所述命令关联的地址是否还与先前接收到的命令相关联以及所述经更新的优先级是否是预定的优先级来选择所述命令。
14.根据权利要求8的装置,其中所述命令发布逻辑进一步适于:当与相同的地址关联的另一命令完成时,基于所述经更新的优先级从所述多个命令选择将要在所述总线上发布的命令。
15.一种用于调度将要在总线上发布的命令的系统,所述系统包括:
第一处理器;以及
第二处理器,所述第二处理器耦合于所述第一处理器并且适于从所述第一处理器接收多个命令;
其中所述第二处理器包括用于在总线上发布命令的装置,其具有:
总线;以及
命令发布逻辑,所述命令发布逻辑耦合于所述总线并且适于:
将地址和优先级与将要在所述总线上发布的多个命令中的每一个相关联,其中与每个命令关联的优先级基于与所述命令关联的地址;
在预定的时间周期之后,更新与每个命令关联的优先级;以及
基于与将要发布的命令关联的地址和经更新的优先级,从所述多个命令选择将要在所述总线上发布的命令。
16.根据权利要求15的系统,其中所述命令发布逻辑进一步适于:在所述总线上发布所选择的命令。
17.根据权利要求15的系统,其中所述优先级基于与所述命令关联的地址是否在预定的地址范围之内。
18.根据权利要求15的系统,其中所述命令发布逻辑进一步适于:增加与所述命令关联的优先级。
19.根据权利要求15的系统,其中所述命令发布逻辑进一步适于:防止在所述总线上发布所述命令,直到所述命令的优先级级别被改变成较高的优先级或者在所述总线上发布了具有所述较高优先级的随后接收到的命令。
20.根据权利要求15的系统,其中所述命令发布逻辑进一步适于:基于与所述命令关联的地址是否还与先前接收到的命令相关联以及所述经更新的优先级是否是预定的优先级来选择所述命令。
21.根据权利要求15的系统,其中所述命令发布逻辑进一步适于:当与相同的地址关联的另一命令完成时,基于所述经更新的优先级从所述多个命令选择将要在所述总线上发布的命令。
CNA2007101477520A 2006-08-30 2007-08-28 用于调度总线上的命令的方法和装置 Pending CN101135998A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/468,377 2006-08-30
US11/468,377 US20080059672A1 (en) 2006-08-30 2006-08-30 Methods and Apparatus for Scheduling Prioritized Commands on a Bus

Publications (1)

Publication Number Publication Date
CN101135998A true CN101135998A (zh) 2008-03-05

Family

ID=39153370

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007101477520A Pending CN101135998A (zh) 2006-08-30 2007-08-28 用于调度总线上的命令的方法和装置

Country Status (2)

Country Link
US (1) US20080059672A1 (zh)
CN (1) CN101135998A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977321A (zh) * 2016-10-24 2018-05-01 三星电子株式会社 存储器控制器的操作方法和包括其的存储装置的操作方法
CN112585570A (zh) * 2018-08-08 2021-03-30 美光科技公司 存储器系统中用于提高命令总线利用率的控制器命令调度

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9542192B1 (en) * 2008-08-15 2017-01-10 Nvidia Corporation Tokenized streams for concurrent execution between asymmetric multiprocessors
US8612648B1 (en) * 2010-07-19 2013-12-17 Xilinx, Inc. Method and apparatus for implementing quality of service in a data bus interface
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US9367347B1 (en) * 2013-06-17 2016-06-14 Marvell International, Ltd. Systems and methods for command execution order control in electronic systems
US9170928B1 (en) * 2013-12-31 2015-10-27 Symantec Corporation I/O scheduling and load balancing across the multiple nodes of a clustered environment
TWI588652B (zh) * 2015-09-01 2017-06-21 慧榮科技股份有限公司 讀取及寫入命令排程方法以及使用該方法的裝置
CN105550152B (zh) * 2015-12-11 2018-03-30 中国航空工业集团公司西安航空计算技术研究所 一种基于时间的gjb289数据总线命令调度电路及方法
US10353833B2 (en) * 2017-07-11 2019-07-16 International Business Machines Corporation Configurable ordering controller for coupling transactions
KR102386811B1 (ko) * 2017-07-18 2022-04-15 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588134A (en) * 1992-09-25 1996-12-24 Amdahl Corporation System for establishing priority among selected tasks based on location of tasks and sequence that the tasks were stored whereas task is always stored in location with the lowest available address
FR2705804B1 (fr) * 1993-05-27 1995-08-11 Sgs Thomson Microelectronics Architecture de processeur multi-tâches.
US5572686A (en) * 1995-06-05 1996-11-05 Apple Computer, Inc. Bus arbitration scheme with priority switching and timer
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
GB9719047D0 (en) * 1997-09-08 1997-11-12 Sgs Thomson Microelectronics Arbitration system
KR100716950B1 (ko) * 2000-08-11 2007-05-10 삼성전자주식회사 버스 시스템
EP1213650A3 (en) * 2000-08-21 2006-08-30 Texas Instruments France Priority arbitration based on current task and MMU
JP3506175B2 (ja) * 2000-10-05 2004-03-15 日本電気株式会社 メモリ制御回路とメモリ制御方法
US6594196B2 (en) * 2000-11-29 2003-07-15 International Business Machines Corporation Multi-port memory device and system for addressing the multi-port memory device
US6880028B2 (en) * 2002-03-18 2005-04-12 Sun Microsystems, Inc Dynamic request priority arbitration
US6842821B2 (en) * 2002-12-02 2005-01-11 Lsi Logic Corporation DDR SDRAM memory controller with multiple dependency request architecture and intelligent requestor interface
EP1482412B1 (en) * 2003-05-30 2006-08-23 Agilent Technologies Inc Shared storage arbitration
DE102004013635B4 (de) * 2004-03-19 2006-04-20 Infineon Technologies Ag Verfahren zur Vergabe von Buszugriffsrechten in Multimaster-Bussystemen, sowie Multimaster-Bussystem zur Durchführung des Verfahrens

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977321A (zh) * 2016-10-24 2018-05-01 三星电子株式会社 存储器控制器的操作方法和包括其的存储装置的操作方法
CN112585570A (zh) * 2018-08-08 2021-03-30 美光科技公司 存储器系统中用于提高命令总线利用率的控制器命令调度

Also Published As

Publication number Publication date
US20080059672A1 (en) 2008-03-06

Similar Documents

Publication Publication Date Title
CN101135998A (zh) 用于调度总线上的命令的方法和装置
CN102053930B (zh) 用于外围组件的命令队列
CN101241428A (zh) 用于将命令发布到总线上的方法、装置和系统
CN1327370C (zh) 资源管理装置
CN105190539B (zh) 使用动态端口重映射避免指令调度期间死锁的方法和装置
US7660952B2 (en) Data bus bandwidth scheduling in an FBDIMM memory system operating in variable latency mode
US8935491B2 (en) Memory architecture for dynamically allocated manycore processor
CN104520932A (zh) 闪存存储器控制器
CN103019810A (zh) 具有不同执行优先级的计算任务的调度和管理
CN103034454B (zh) 柔性闪存命令
US20080126641A1 (en) Methods and Apparatus for Combining Commands Prior to Issuing the Commands on a Bus
CN102428451A (zh) 用于数据存储装置的命令及中断分组
US20210019185A1 (en) Compute task state encapsulation
KR20140048186A (ko) 메모리 콘트롤러와 이 메모리 콘트롤러의 작동방법
CN102332290A (zh) 用来管理和存取闪存模块的控制器
CN101606130A (zh) 在处理器系统的指令级使能资源分配标识的方法和装置
CN102165424A (zh) 高速缓冲存储器、存储器系统及其控制方法
US20080276240A1 (en) Reordering Data Responses
US20170046102A1 (en) Flexible interface for nand flash memory
US20120102262A1 (en) Memory control device, storage device, and memory control method
US8166246B2 (en) Chaining multiple smaller store queue entries for more efficient store queue usage
CN103279379A (zh) 用于在没有指令解码的情况下调度指令的方法和装置
CN102402401A (zh) 一种磁盘io请求队列调度的方法
CN113342477A (zh) 一种容器组部署方法、装置、设备及存储介质
CN101546293B (zh) 缓存控制装置、信息处理装置和缓存控制方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20080305

C20 Patent right or utility model deemed to be abandoned or is abandoned