分散收集列表的乱序处理方法
文献发布时间:2023-06-19 09:29:07
技术领域
本发明一般来说涉及用于处理读取命令的系统及方法。
背景技术
例如固态硬盘(SSD)的半导体存储装置的性能很大程度上受到处理读取命令的速度的影响。为了增加读取命令处理速度且限制延时,一些系统使用为从主机接收的数据标签预提取描述符并将所述描述符存储于本地RAM中直到所描述数据被处理为止的系统。从主机接收的读取命令可通过物理区域页(PRP)格式请求来描述,或可呈分散收集列表(SGL)的形式。SGL允许更灵活地描述要传送的数据的位置,但允许使用任一数目个描述符来描述数据传送。
在大多数情形中,主机使用的SGL数据描述符格式使用小数目个描述符来描述数据传送,但在一些情形中,SGL格式命令包含与传送相关联的大数目个描述符。在此类情形中,使用描述符预提取的系统迅速地用光所有可用本地内存空间以尝试预提取并存储与数据标签的非典型地大数目个SGL数据描述符相关联的描述符。而且,处理非典型SGL要比处理典型短数据描述符的时间长得多。处理非典型SGL数据描述符阻碍对由小数目个描述符描述的典型数据标签的处理并导致装置的缓冲器及存储器的低效使用,从而减慢总体传送速率。
因此,未满足设计能够高效地处理分散收集列表中的数据的系统的需要。
发明内容
在一方面中,一种半导体存储装置包含控制器,所述控制器包含数据直接存储器存取(DDMA)控制器。所述控制器从主机装置接收多个读取命令,其中所述多个读取命令被分割成与多个数据传送描述符相关联的多个数据标签。所述DDMA控制器接收所述多个数据传送描述符并从所述主机装置预提取与所述多个数据标签中的一或多者相关联的一或多个描述符,第一数据标签具有与存储器的连续块对应的一定数目个相关联描述符。所述DDMA控制器还确定与所述第一数据标签相关联的描述符的数目是否满足阈值量,且如果不满足,那么将所述第一数据标签移动到第一列表,并且当所述第一数据标签到达所述第一列表的开头且与所述第一数据标签相关联的数据就绪以被传送时,将所述第一数据标签移动到第二列表。当所述第一数据标签位于所述第二列表的开头处时,所述DDMA控制器传输与所述第一数据标签相关联的所述数据。
在另一方面中,一种将命令的直接存储器存取(DMA)描述符提取到半导体存储装置的方法包含对于在芯片上随机存取存储器(RAM)中的命令列表的开头处分割成多个数据标签且包含多个数据传送描述符的第一命令包含:确定描述所述第一命令的与第一数据标签相关联的描述符的数目,所述数目个描述符对应于存储器的连续块;及将与所述第一数据标签相关联的描述符的所述数目与阈值进行比较。如果与所述第一数据标签相关联的描述符的所述数目不满足所述阈值,那么所述方法包含通过以下方式处理所述第一数据标签:将所述第一数据标签存储于第一列表中;及当与所述数目个描述符相关联的所述数据就绪时,将所述第一数据标签移动到第二列表。所述方法进一步包含:提取与所述第一数据标签相关联的多个额外描述符;及在所述第一数据标签到达所述第二列表的开头时执行与所述第一数据标签相关联的所述数据的数据传送。
附图说明
图1展示固态存储器系统的框图;
图2展示处理读取命令的决策图;
图3展示处理与读取命令相关联的非典型数据描述符的框图;
图4展示排队读取命令的图式;
图5A展示处理多个典型及非典型数据描述符的图式;
图5B展示处理多个典型及非典型数据描述符的步骤;
图5C展示处理多个典型及非典型数据描述符的步骤;
图5D展示处理多个典型及非典型数据描述符的步骤;
图5E展示处理多个典型及非典型数据描述符的步骤;
图5F展示处理多个典型及非典型数据描述符的步骤;
图5G展示处理多个典型及非典型数据描述符的步骤;
图5H展示处理多个典型及非典型数据描述符的步骤;
图5I展示处理多个典型及非典型数据描述符的步骤;
图5J展示处理多个典型及非典型数据描述符的步骤;
图5K展示处理多个典型及非典型数据描述符的步骤;
图5L展示处理多个典型及非典型数据描述符的步骤;
图5M展示处理多个典型及非典型数据描述符的步骤;
图5N展示处理多个典型及非典型数据描述符的步骤;且
图6展示图解说明处理读取命令的方法的流程图。
具体实施方式
图1展示半导体存储系统100的框图。半导体存储系统100包含主机102、主机存储器103、固态硬盘(SSD)104、半导体芯片111及外围组件互连(PCIe)核心116。半导体芯片111包含:数据直接存储器存取(DDMA)控制器108,其具有内部随机存取存储器(RAM)110;命令解码器106;数据标签执行控制器105;命令分离器107;及快闪后端109。快闪后端109通信地耦合到第一存储器112及第二存储器114,第二存储器114可为快闪存储器或任何其它存储器类型。PCIe 116通过主机接口118通信地耦合到主机102。DDMA控制器108通信地耦合到PCIe 116及命令解码器106。命令解码器106通信地耦合到命令分离器107,命令分离器107通信地耦合到数据标签执行控制器105。数据标签执行控制器105还通信地耦合到DDMA控制器108及快闪后端109。尽管快闪后端109仅经图解说明为连接到位于SSD上的两个存储器,但快闪后端109可耦合到任一数目个内部或外部存储器。
PCIe 116经由主机接口118从主机102接收命令并将所述命令传输到命令解码器106。命令解码器106对所述命令进行解码并针对命令处置系统的其余部分使所述命令就绪。命令解码器106将所述命令传送到DDMA控制器108,DDMA控制器108管理主机传送执行,包含下文所论述的提取描述符及乱序SGL执行。DDMA控制器108通信地耦合到命令分离器107,命令分离器107将命令划分成包括数据标签片段的若干部分。命令分离器107通信地耦合到数据标签执行控制器105及DDMA控制器108两者。数据标签执行控制器105管理由命令分离器107产生的数据标签的执行。每一读取命令由命令分离器107分成一定数目个数据标签,每一数据标签具有描述所请求数据的位置的一定数目个相关联描述符。命令及描述符由主机102存储于主机存储器103中。DDMA控制器108通过将与命令相关联的描述符从主机存储器103拉入DDMA控制器108来执行‘预提取’。描述符存储于RAM 110中,且由DDMA以命令分离器107所产生的数据标签大小的片段来处置。数据标签执行控制器105管理数据标签的执行,包含向快闪后端109请求相关联数据。当已从第一存储器112及第二存储器114检索到数据时,将数据传送到主机102。
DDMA控制器108接收具有PRP或SGL描述符的命令,且在RAM 110中维护列表以存储PRP及SGL描述符,并在RAM 110中维护列表以撕开PRP及SGL描述符。DDMA控制器108进一步从主机102预提取描述符,且发出数据传送(DMA)请求以进行数据传送,从而允许在其中描述数据标签的描述符的数目满足阈值的典型条件中借助经预提取PRP及SGL描述符进行乱序传送。预提取描述符会减少系统的总体延时。预提取描述符并乱序处理命令可致使性能比不预提取或乱序处理数据描述符的系统改进10%到20%。
默认地,PRP格式描述符具有单个指针,且DDMA控制器108通过预提取所述描述符且在所请求数据变得可用时传送所请求数据来处理这些PRP格式描述符。SGL格式描述符可用于描述非连续数据块,且虽然SGL命令通常每数据标签具有一个或两个描述符,但在一些非典型情形中可具有与数据标签相关联的任一数目个描述符。在这些非典型情形中,数据标签无法预提取描述符,因为存储经预提取描述符将消耗过多的芯片上RAM110。在此非典型情形中,存储器限制意味无法乱序处理数据标签。尝试在乱序处理算法中包含非典型数据标签导致对典型数据标签的处理受到阻碍且产生具有高延时的低效系统。
图2展示DDMA控制器108处理读取命令的过程的决策图。DDMA控制器108从PCIe116及命令解码器106接收命令及描述命令的数据标签,且将命令106的数据标签或数据传送请求存储于RAM 110中。在步骤202处,DDMA控制器108提取数据标签的预设定数目个描述符。为后续数据标签保存任何未使用的描述符。将经预提取描述符存储于RAM110中。通常,DDMA控制器108从主机102一次检索与数据标签相关联的经设定分配的描述符,举例来说,64字节的描述符。对于给定或数据标签或‘数据传送请求’,并非所有由DDMA控制器检索的描述符都是必需的。未使用的描述符存储于在本地RAM 110中在描述符存储器分段中的列表(被称作描述符存储器分段列表)中。
在步骤204处,DDMA控制器108确定与第一数据标签相关联的描述符的数目是否超过预设定阈值。如果与数据标签相关联的描述符的数目超过所述阈值,那么数据标签被视为非典型的,因为所述数据标签包含太多描述符而不能像典型数据标签一样被处理,所述典型数据标签具有数目不超过阈值的相关联描述符。通过不同于典型数据标签的方法来单独处理非典型数据标签。
在步骤206处,保存典型数据标签以用于RAM 110中的乱序处理,而DDMA控制器108通过检索与描述符相关联的数据来处理典型数据标签。快闪后端109经由第一通信信道120及第二通信信道122从第一存储器112及第二存储器114检索数据。在一些实施方案中,当数据在快闪后端109中可用时,设定数据标签中的就绪位,并将典型数据标签移动到执行列表,尽管在其它实施方案中未将典型数据标签移动到列表。在步骤208处,当数据是可用的时,DDMA控制器108经由命令控制器106及主机接口118将与典型数据标签相关联的数据传送到主机102。
当与典型数据标签相关联的数据就绪时DDMA控制器108将所述数据传送到主机102,而不管乱序处理列表中的次序如何。在就绪时而非按次序传送与典型数据标签相关联的数据会确保数据被高效地传送且缓冲器在处理命令期间并非闲置的。典型数据标签的乱序处理及传送会增加处理效率且使得装置能够始终如一地将数据传输到主机,而无需继续等待在乱序处理队列的开头处的数据标签被处理。
通过移除具有太多描述符的非典型数据标签并单独处理所述非典型数据标签,所述非典型数据标签可从乱序处理中被移除且可替代地在步骤210处开始而被按次序处理。在步骤210处,DDMA控制器108将非典型数据标签添加到存储于RAM 110中的每个命令列表的结尾,其中非典型数据标签等待处理。在步骤212处,当非典型数据标签到达每个命令列表的开头且就绪时,DDMA控制器108将数据标签移动到非典型执行列表以等待轮到其被处理。
在步骤214处,当数据标签位于非典型执行列表的开头时,DDMA控制器108提取未在步骤202中经预提取的任何剩余描述符。DDMA控制器108将所述描述符与非典型命令描述符列表中的先前经预提取描述符一起存储于RAM 110中。DDMA控制器108检索与非典型数据标签的经预提取及经提取描述符相关联的数据,并经由命令控制器106及第二主机接口118将与非典型数据标签相关联的数据传送到主机102。
DDMA控制器108按次序且与典型数据标签分开地处理非典型数据标签,使得非典型数据标签不减慢对典型数据标签的处理,从而阻止对大缓冲器的需要。非典型数据标签可由具有许多描述符的SGL描述,而典型数据标签可由针对系统具有预期数目个描述符的SGL描述。举例来说,在一个实施例中,典型数据标签可具有两个描述符。非典型数据标签可具有比在系统的硬件寄存器中设定的阈值高的任一数目个描述符。在实例中,1MB命令可由单个1MB描述符描述,且非典型1MB命令具有1,000个相关联1KB描述符。预提取及存储1,000个描述符将消耗芯片上RAM 110,因此DDMA控制器单独地且在不预提取所有描述符的情况下处理非典型数据标签,如图2中所展示。
图3展示处理与DDMA控制器108所处理的读取命令相关联的数据标签的数据结构图300。DDMA控制器108将特定于每一所接收命令的信息与命令ID分段302中所展示的信息一起存储于RAM 110中,命令ID分段302中所展示的信息包含展示数据标签是典型还是非典型且因此被视为‘顽皮’的标识,以及非典型的数据标签列表(所谓的第一列表)的开始及末尾的指示,以及经预提取描述符存储于RAM 110中的位置的地址。
DDMA控制器108进一步将列表306中的数据标签信息存储于RAM 110中,数据标签信息列表306包含命令标识、端口标识、就绪位、是否已分配数据标签的指示、已存储数据标签的描述符的位置的地址。就绪指示符(或就绪位)指示相关联数据是否可用于传送。所分配指示符指示包含数据及元数据两者的描述符是否全部可用于数据标签。列表包含RAM110中的描述符列表的索引。
DDMA控制器108将指针存储器分段列表304中的与数据标签相关联的描述符存储于RAM 110中。描述符存储器分段列表304具有用于存储描述符的有限量的空间,使得当描述符存储器分段列表已满时,不可将额外描述符添加到列表直到通过将相关联数据传送到主机102来移除一些描述符为止。一次处理一个非典型数据标签进一步防止RAM110溢出且防止缓冲器以典型数据标签为代价被非典型数据标签用光。在一些实施方案中,一次仅使用一个缓冲器来处理非典型数据标签。将描述符与描述符是否进一步对应于另一描述符的指示一起进行存储。举例来说,主机存储器地址1指向相关联指针主机存储器地址2。
DDMA控制器108维护每个端口的多个列表且命令的执行分布在SSD 104的端口之间。
图4展示具有典型及非典型数据描述符部分的排队读取命令408的图式400。垂直轴展示与命令408相关联的递增逻辑块地址(LBA)经图解说明为402。读取命令408包含是“典型的”的第一命令状态404及是“非典型的”的第二命令状态406。第一命令状态404具有第一数据标签A 410,且由大小是2KB的数据描述符‘0’418描述,数据描述符‘0’418在本文中还称为指针。由数据标签A 410描述的第一命令状态404是可使用如上文关于图2所描述的乱序处理来处理的典型命令。读取命令408总共是11KB且由四个数据标签及各种大小的六个描述符描述。为了简单,假定读取命令408不具有元数据。
第二命令状态406由三个数据标签(数据标签B 412、数据标签C 414及数据标签D416)描述。数据标签B 412具有各自为1KB的四个相关联描述符,数据描述符‘1’420、数据描述符‘2’422、数据描述符‘3’424及数据描述符‘4’426。数据标签C 414及数据标签D 416与单个描述符(数据描述符‘5’428,其大小总共为5KB)相关联。DDMA控制器108必须按次序读取数据描述符‘0’418、数据描述符‘1’420、数据描述符‘2’422、数据描述符‘3’424、数据描述符‘4’426及数据描述符‘5’428。使用SGL描述符,对于传送数据标签D 416有必要的信息可仅在预处理数据标签A 412、数据标签B 414及数据标签C 414以找到与这些数据标签相关联的描述符(其对应于相关联数据标签D 416)之后显而易见。
由于数据标签B 412具有比阈值数目多(在此实例中两个相关联描述符),因此数据标签B 412被确定为非典型的(“顽皮的”)且将根据图2被按次序处理。数据标签C 414及D416继数据标签B 412之后,且因此也是非典型的(“顽皮的”)且也将通过此方法来处理。即使数据标签C 414或数据标签D 416中的一者是典型的,且具有数目小于阈值量的相关联描述符,命令中跟随非典型数据标签的所有后续数据标签均通过非典型数据传送请求方法来处置。由于继非典型数据标签之后的数据标签根据按次序处理方法来处置,因此将与相同命令相关联的所有后续数据标签添加到每个命令列表的末尾且被指定为顽皮的。
如图3中所展示,数据标签与描述数据的位置的数据描述符或指针相关联。数据标签及描述符在当数据标签被DDMA控制器108处理时经更新的列表中存储于本地RAM110中。数据标签引用将数据标签变换为独立数据结构所需要的描述符。然而,包含引用太多描述符的数据标签的非典型命令部分无法在不消耗可用芯片上存储器的大部分的情况下将经预提取描述符存储于RAM 110中。如果RAM 110完全被命令的顽皮部分中的数据标签的经预提取描述符消耗,那么将不存在可用于处理其它典型数据标签的存储器,且一旦已经完成的数据标签的队列中的任何数据被传送到主机102,便将不存在数据传送直到非典型数据标签结束处理为止。另外,如果按次序提取针对非典型数据标签未经预提取的剩余描述符,那么后端缓冲器将忙于提取大量描述符且将不可用于预提取其它典型数据标签,借此减慢系统。以此方式运行的系统将是非常低效的。
通过描述符数目依据数据标签中所检索到的数据量来确定数据标签是典型的还是非典型的。在实例中,DDMA控制器基于命令的配置而从数据标签执行控制器105所传输的数据标签队列检索为4KB的倍数的数据标签。典型命令阈值极限基于单个4KB数据标签,且更大数据标签基于此大小的倍数进行比例缩放。数据标签中的描述符数目确定是否将使用乱序处理将数据标签处理为典型数据标签,或是否将使用按次序处理将其处理为非典型(“顽皮”)数据标签。
图5A到5M图解说明根据图2中所图解说明的过程处置图4中所展示的命令。
图5A展示由多个列表500图解说明的处理图4的数据标签的第一步骤。多个列表500包含命令ID表502、数据标签索引存储器506、由DDMA控制器108从命令控制器106接收的来自主机存储器508的命令传送数据、描述符存储器分段510、工作副本非典型命令列表512及供与非典型数据标签一起使用的顽皮执行列表504。命令ID表502由识别命令的性质的命令ID索引。描述符存储器分段510含有多个列表。在此第一步骤中,已经发生从主机提取初始描述符组,且由DDMA控制器108处理数据标签A 532。在命令ID表502中,顽皮指示符被设定到0,待从主机提取的下一描述符由来自主机存储器508的命令传送数据指示,且由DDMA控制器108检索到但不描述第一数据标签A 532的额外描述符(描述符516、518、520)经指示为在额外描述符列表上存储于描述符存储器分段510中。
DDMA控制器108预提取预设定量的描述符以用于处理第一数据标签A 532,所述描述符包含与数据标签A 532相关联的2KB数据描述符‘0’514,以及1KB数据描述符‘1’516、1KB数据描述符‘2’518及1KB数据描述符‘3’520。数据描述符‘0’514完整地描述数据标签A532,且不对应于任何额外描述符。1KB数据描述符‘1’516、1KB数据描述符‘2’518及1KB数据描述符‘3’520是不描述数据标签A 532且存储于描述符存储器分段510中的额外描述符,其中1KB数据描述符‘1’516引用1KB数据描述符‘2’518作为下一描述符,且1KB数据描述符‘2’518引用1KB数据描述符‘3’520作为下一描述符。所有数据描述符均存储于描述符存储器分段510中,而数据标签A532参考数据描述符‘0’514在描述符存储器分段510中的位置存储于数据标签存储器506中。
图5B图解说明处理图4的读取命令的下一步骤。DDMA控制器108检索数据标签B534并处理与数据标签B 534相关联的已提取描述符,从而确定描述符数目超过在硬件寄存器中设定的阈值且因此被视为非典型的或“顽皮的”。DDMA控制器108在命令ID表502中指示:命令在命令ID表502中被视为非典型的或“顽皮的”并将数据标签B 534作为每个命令列表的一部分存储于数据标签存储器506中。与先前与数据标签A 532一起经检索的数据标签B534相关联的经预提取描述符存储于描述符存储器分段510中,且此时不为数据标签B 534预提取额外描述符。
阈值的可接受数目个典型描述符取决于可用于预提取描述符的本地RAM 110的大小而可为任一数目个描述符。在一些实施例中,阈值被设定为两个描述符。在其它实施例中,阈值被设定为三个、四个或更多个描述符。增加设定为阈值的可接受描述符的数目会使用更多存储器,且可需要额外存储器添加到装置,从而增加装置的大小。在一些实施例中,外部RAM用于存储经预提取描述符,然而使用外部RAM会增加系统的延时。在一些实施例中,作为与所描述算法组合地存储经预提取描述符的流程而包含外部RAM。
典型SGL数据标签具有单个描述符,或在一些情形中两个描述符。虽然此处所描述的数据标签及描述符与用于读取命令的数据相关联,但用以确定将乱序还是按次序处理数据标签的算法可应用于由例如元数据描述符的其它类型的描述符描述的其它标签。在一些实施方案中,数据描述符包含元数据描述符,且元数据描述符被计数在待与阈值进行比较以确定数据标签是否被视为非典型的描述符数目之内。在一些实施方案中,数据描述符包含元数据描述符,且元数据描述符未被计数在待与阈值进行比较的描述符数目之内
图5C图解说明处理图4的读取命令的下一步骤。DDMA控制器108检索数据标签C536且当命令已经被视为顽皮的时,将其作为每个命令列表的一部分跟随每个命令列表中的数据标签B 534而添加到数据标签存储器506。由于数据标签C 536跟随数据标签B534。在一些实施例中,可用每个端口顽皮列表替换每个命令列表,此将降低请求处理的效率但节省存储器。与数据标签B 534一样,数据标签C 536被识别为非典型且命令ID表502将数据标签C536识别为非典型或顽皮数据命令的新末尾或结尾。
图5D图解说明处理图4的读取命令的下一步骤。数据标签C 536变得就绪且数据标签C 536的就绪位经设定为就绪。然而,由于命令是非典型的,因此数据标签C 536无法被乱序处理且必须等待数据标签B 534(非典型命令的开头)变得就绪且被处理。
在图5E中,数据标签B 534现在变得就绪且数据标签B 534的就绪位经设定为就绪。由于数据标签B 534是数据标签存储器506中的命令的顽皮部分的开头,因此DDMA控制器108将其添加到顽皮执行列表504。数据标签C 536也就绪且DDMA控制器108也将其添加到顽皮执行列表504。
当数据标签B 534(命令的顽皮部分的开头及数据标签存储器506中的每个命令列表的开头)就绪时,DDMA控制器108将数据标签B 534及数据标签C 536从数据标签存储器506中的每个命令列表移动到顽皮执行列表504。通过等待直到顽皮命令部分的开头就绪以进行数据传送接着将命令移动到顽皮执行列表504并提取剩余数据描述符,非典型数据标签的处理不阻挡其它典型数据标签。
在图5F中,DDMA控制器108检索数据标签D 538并将其添加到数据标签存储器506,添加到每个命令列表的末尾。数据标签D 538尚未就绪,且因此不被添加到顽皮执行列表504。
在图5G中,数据标签B 534位于顽皮执行列表504的开头处且DDMA控制器108开始通过将数据描述符‘1’516、数据描述符‘2’518及数据描述符‘3’520移动到用于顽皮列表512的工作副本来处理数据传送请求标签B 534。在一些实施例中,用于顽皮列表512的工作副本是描述符存储器分段510中的另一列表。
在图5H中,DDMA控制器108将与数据描述符‘1’516、数据描述符‘2’518及数据描述符‘3’520相关联的数据传送到主机102,且从用于顽皮列表512的工作副本并从本地RAM110移除描述符。然而,数据标签B 534尚未完成。
在图5I中,DDMA控制器108从主机存储器508提取与数据标签相关联的额外64字节的描述符并以适当方式更新命令ID表502。DDMA控制器108检索数据描述符‘4’540及5KB数据描述符‘5’542并将数据描述符存储于用于顽皮列表512的工作副本中以完成数据标签B534的传送。
在图5J中,DDMA控制器108检索并传送与数据描述符‘4’540相关联的数据以完成数据标签B 534的处理。完成数据标签B 534且从数据标签表506移除数据标签B 534。
在图5K中,DDMA控制器108已完成数据标签B 534的传送。数据描述符‘5’542不与数据标签B 534相关联且从用于顽皮列表512的工作副本移动到描述符存储器分段510中的额外描述符列表。
在图5L中,DDMA控制器108在数据标签C 536是顽皮执行列表504的开头时处理数据标签C 536。由于数据描述符‘5’542不对应于下一数据描述符,因此DDMA控制器将数据描述符‘5’542移动到用于顽皮列表512的工作副本,且接着传送相关联数据。在DDMA控制器109结束传送与数据标签C 536相关联的数据之后,从数据标签存储器506移除数据标签C536。由于数据描述符‘5’542仅被部分地消耗,因此其被更新并从用于顽皮列表512的工作副本移除并作为1KB数据描述符‘6’542存储于描述符存储器分段510中。
在图5M中,数据标签A 532变得就绪且就绪指示符指示就绪。在图5N中,DDMA控制器108将与数据标签A 532相关联的数据传送到主机102。由于数据标签A 532是典型数据标签,因此其可被处理且数据一变得就绪就被传送到主机。数据标签D 538连同描述符存储器分段510中的相关联数据描述符‘6’542一起被留在数据标签存储器506中。由于已处理并传送数据标签B 534及数据标签C 532,因此数据标签D 538可在就绪而且是顽皮执行列表504的开头(因为不存在次序上在前面的数据标签)时被传送。
当DDMA控制器108处理数据标签A 532、数据标签B 534、数据标签C 536及标签D538时,其它项可连续地添加到数据标签存储器506。由DDMA控制器108检索的与其它命令相关联的其它典型数据标签可添加到数据标签存储器506且在数据变得可用于传送时被乱序处理。
在一些实施例中,一次仅一个缓冲器处理非典型数据标签,而所有其它缓冲器按次序处理典型数据标签以高效地利用所述缓冲器来完成读取数据传送请求。在一些实施例中,可同时用于处理或传送非典型数据标签的缓冲器的数目多于1,举例来说,是2或3。
图6展示图解说明处理读取命令的方法的流程图600。在步骤602处,DDMA控制器108从命令控制器106接收描述读取命令的多个数据标签。在步骤604处,DDMA控制器108检索所述多个数据标签中的一定数目个数据标签。在一些实施例中,DDMA控制器108检索预设定大小量的数据标签,举例来说,4KB的数据。
在步骤606处,DDMA控制器108预提取与数据标签相关联的设定数目个描述符。在一些实施例中,DDMA控制器108预提取与所述多个数据标签相关联的预设定大小量的描述符。在步骤608处,DDMA控制器108将第一数据标签的描述符数目与硬件注册表中所设定的阈值进行比较。
如果第一数据标签的描述符数目超过阈值数目,那么在步骤610处,DDMA控制器108将第一数据标签添加到第一列表。第一数据传送请求被视为非典型的且将被按次序处理,而先前由DDMA控制器提取并处理的任何典型数据标签在数据变得可用于传送时被乱序处理。
在步骤612处,在后端检索与第一数据标签的经预提取描述符相关联的数据。DDMA控制器108将不提取描述第一数据标签的任何剩余描述符,直到第一数据标签就绪以执行(即,第一数据标签经标记为就绪),经预提取描述符数据是可用的,且第一数据标签位于执行列表的开头处。
在步骤614处,在第一列表中按次序处理第一数据标签。在经预提取描述符数据已经检索且可用于传送而且第一数据标签位于执行列表的开头处时发生此情况。当第一数据标签位于第一列表的开头处且与第一数据标签相关联的数据就绪以被传送时,将第一数据标签移动到第二列表。当第一数据标签位于第二列表的开头时,传送相关联数据。如果需要额外描述符完成数据相关联数据标签的传送,那么提取描述符且在数据变得可用时传送数据。可仅在处理第一数据标签并传送(例如,按次序)相关联数据之后处理列表中的后续数据标签。
如果与第一数据标签相关联的描述符的数目不满足所述阈值,那么DDMA控制器108在相关联数据就绪(例如,乱序)时传输与第一数据标签相关联的数据。
本发明的各个方面的其它目标、优点及实施例将为所属领域的技术人员所明了且在说明及附图的范围内。举例来说但不具限制地,可与本发明一致地重新布置结构或功能元件。类似地,根据本发明的原理可应用于其它实例,所述实例即使未在此处经详细地具体描述,但仍将在本发明的范围内。
- 分散收集列表的乱序处理方法
- 一种分散畜禽养殖废弃物收集处理方法