在不受i/o协议或目标设备支持时提供队列屏障的制作方法_2

文档序号:9693209阅读:来源:国知局
QBR)指示符(例如,标签或标记)来标记特定任务。然而,主机设备与其通信的目标I/O设备和/或所使用的I/O通信协议可能不支持这样的QBR指示符。因此,在主机I/O控制器处理用QBR指示符加标签/标记的任务时,它直至(在目标I/O设备处)先前排入队列的所有任务都已被执行才将该任务发送到目标I/O设备。目标I/O设备可以在每一任务被执行或处理时向主机I/O控制器发送执行确认。主机设备处的主机I/O控制器也可延迟/抑制在标记QBR的任务之后排入队列的所有任务并且只有在标记QBR的任务被执行之后才将它们传递给目标I/O设备。因而,队列屏障可作为I/O接口的一部分被实现在主机设备的主机I/O控制器中。例如,在队列屏障不由I/O通信协议和/或目标I/O设备原生支持的情况下,主机I/O控制器处的这样的队列屏障可以是有用的。在其他实例中,即使在I/O通信协议支持队列屏障的情况下,主机I/O控制器处的这样的队列屏障也可以是有用的。例如,可能存在以下情况:即使I/O通信协议支持队列屏障,它也可能仍然期望允许主机I/O控制器实现队列屏障,诸如在I/O通信协议可能不允许在其他任务仍然在进行中的同时发送队列屏障命令时。这一概念构想了在队列中一个或多个标记/加标签为QBR的任务在任何一个时刻(即,同时)被使用。
[0036]示例性操作环境
[0037]图1是包括经由总线106耦合到目标I/O设备104且被适配成实现队列屏障功能性的主机设备102的系统的框图。主机设备102可包括主机软件108、任务队列109、以及主控制器110。目标I/O设备104可包括控制器112、任务队列、以及存储设备116。主机任务队列109可以抑制正被发送给目标I/O设备104的任务。例如,这样的主机任务队列109可由主机软件108用来向主控制器110提供任务且可被用来抑制任务直至它们被发送给目标I/O设备104。
[0038]在各实施例中,目标I/O设备104可以是与主机设备不同或分开的组件,或者目标I/O设备104可以连同主机设备102—起被集成为单个半导体芯片的一部分。例如,目标I/O设备104可以是顺应联合电子器件工程联合委员会(JEDEC)的嵌入式多媒体控制器(eMMC)标准的闪存设备。队列屏障有时被各协议定义为允许为一任务定义相对于其他任务的执行次序。然而,这只在目标I/O设备识别并遵循这样的屏障标签/标记所定义的执行次序时才起作用。
[0039]根据一种办法,主机软件108可以生成应当按相对于其他任务的特定次序来执行的任务。例如,第一任务必须在所有后续任务之前执行。因此,主机软件108可以用队列屏障(QBR)指示符(例如,标签、标记、或位)来标记第一任务以指示第一任务应当按相对于其他任务的特定次序来执行(例如,第一任务必须在先于它发出的所有任务之后执行和/或第一任务必须在晚于它发出的所有任务之前执行,等等)。主控制器110可以识别第一任务被用QBR指示符作了标记。因此,主控制器110可以延迟或抑制第一任务,而非将它发送到目标1/0设备104,直至接收到所有先前任务已被目标I/O设备104执行的确认或指示。同样,主控制器110可延迟或抑制所有后续任务,而非将它们发送到目标I/O设备104。一旦主控制器104接收到关于所有在先任务都已被目标I/O设备104执行的指示,它就将第一任务发送到目标I/O设备104。主控制器110随后在将后续任务发送到目标I/O设备104之前等待接收第一任务已被目标I/O设备104执行的指示。注意,本文所公开的“任务”可以是数据和/或非数据任务(例如,命令、指令,等等)。在一个示例中,任务可包括读和/或写操作。
[0040]图2是示出队列屏障功能可被如何实现的流程图。主机软件108可以生成任务1...η204并将它们提供给主控制器110。主控制器110随后将任务1...η发送到目标控制器112,目标控制器112将它们提供给任务队列114,从任务队列114中它们可被执行或处理208。
[0041]主机软件108还可生成用队列屏障指示符212(例如,标记或标签)标记的任务R210。任务R被提供给主控制器110。然而,因为任务R被加标签/标记为QBR,所以主控制器110延迟或抑制任务R 216。主控制器110等待来自目标I/O设备104的关于所有先前发送的任务已被执行或处理的确认。一旦接收到关于任务1...η已被目标I/O设备104执行或处理的确认217,主控制器110就将任务R发送给目标控制器112。注意,在一些实现中,关于任务1...η已被执行或处理的确认可以在最后一个任务(即,任务η)正被处理但这样的处理尚未完成时发送。从目标控制器112,任务R被传递给任务队列114,从任务队列114它被处理或执行226。
[0042]同时,主控制器110延迟或抑制222在任务R之后生成的任何任务?...?218,直至它接收到关于任务R已被目标I/O设备104执行或处理的确认。一旦接收到关于任务R已被目标I/O设备104执行或处理的确认224,主控制器110就将任务发送到目标控制器112,目标控制器112将它传递给任务队列114,从任务队列114它们被处理或执行228。
[0043]以此方式,主控制器110能够单方地为任务实现队列屏障,即使在目标I/O控制器和/或I/o协议不支持队列屏障时。因此,任务执行排序可由主控制器110实现。
[0044]注意,一个或多个标记/加标签为QBR的任务可在任务队列中在任何一个时刻(即,同时)使用。因此,多个加标签/标记为QBR的任务可被置于主机设备队列中,每一标记/加标签为QBR的任务以它被置于主机设备任务队列中的次序被发送给目标I/O设备。
[0045]图3(包括图3A、3B和3C)图形化地解说主机设备上的队列屏障指示符的示例性实现的处理。主机设备102可以实现任务被放置在其中以供主控制器110处理的第一任务队列302。目标设备104可类似地实现目标控制器112所接收到的任务被放置在其中以供目标设备104处理的第二任务队列304。
[0046]第一任务队列302中的任务可以用队列屏障指示符来加标签或标记。例如,队列屏障指示符=“0”指示没有队列屏障,而队列屏障指示符=“1”指示队列屏障。主控制器110可以在执行或处理每一任务之前检查每一任务的队列屏障指示符。如果特定任务的队列屏障指示符=“0”,则主控制器处理该任务。否则,如果特定任务的队列屏障指示符=“1”,则主控制器延迟或停止处理该任务(以及可能地所有后续任务),直至它接收到关于所有先前发送的任务已被目标设备104处理的指示或确认为止。
[0047]在时间k,主控制器110可以通过将任务η发送到目标设备104来执行或处理任务n,在目标设备104处任务η被置于第二任务队列304中。在目标设备104处理每一任务时,它可以将每一任务的执行确认发送给主机设备102。
[0048]在时间k+i,主控制器110可以通过将任务n+i发送到目标设备104来执行或处理任务n+i,在目标设备104处任务n+i被置于第二任务队列304中。
[0049]在时间k+i+Ι,主控制器110可准备好执行或处理任务p。在检查任务p的队列屏障指示符之际,主控制器检测到它被启用或设为“1”,从而指示任务P的队列屏障被断言。因此,主控制器110停止或延迟任务p(以及所有后续任务)的处理,直至它接收到关于发送到目标设备104的所有先前任务已被处理的确认或指示。
[0050]到时间k+i+j,主控制器110可接收到了关于所有先前任务(包括任务n+i)已被目标设备104执行或处理的确认。因此,在时间k+i+j+Ι,主控制器110可处理任务p。主控制器110可延迟所有后续任务,直至任务p(即,具有队列屏障指示符的任务)已被目标设备处理的指示或确收。在时
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1