信息处理装置和存储器访问方法与流程

文档序号:18301887发布日期:2019-07-31 10:15阅读:215来源:国知局
信息处理装置和存储器访问方法与流程

本技术涉及被配置为访问闪存的信息处理装置和存储器访问方法。



背景技术:

随着nand型闪存的容量的增加,固态驱动器(solidstatedrive,ssd)已经被用作替换现有技术的硬盘驱动器(harddiskdrive,hdd)的存储设备。与hdd相比,ssd具有以下属性:ssd具有以重复数据读/写操作中的较低耐久性为代价,可以以更高的速度和更低的功耗进行数据访问的优势。因此,ssd上的数据重写操作需要处理经历数据重写操作的分发区域。例如,如果重写请求来自主机中央处理单元(centralprocessingunit,cpu),则用不同的物理地址替换指定的逻辑块地址,从而将要重写的数据分发给尽可能多的存储器单元(以下例如参见ptl1)。

[引用列表]

[专利文献]

[ptl1]

wo2014/132346a1



技术实现要素:

[技术问题]

如上所述,由于ssd能够以高速访问,因此可以通过按需读取信息处理所需的大量数据来减少系统存储器的容量。另一方面,作为上述读取的结果,访问频率的增加使得ssd特有的管理处理中的问题变得显著。例如,管理处理包括以下内容。由于nand型闪存被禁止覆盖写入(overwriting),在如上所述将数据写入各个区域的情况下,需要将数据复制到给定级的连续区域并删除空区域中的数据以准备后来写入。

另外,还需要在给定级将数据保存到其他区域,以准备由于重复读取而发生设备电荷泄漏,从而导致数据破坏的可能性。此外,由于高速执行写入,还可以通过使用用于将每一个存储器单元一位记录为高速缓存的单级单元(singlelevelcell,slc),来实现数据再次被存储在三级单元(triplelevelcell,tlc)中,在三级单元中,每一个存储器单元以较晚的定时记录三位。如果这些管理处理操作优先于来自主机cpu的请求,则在信息处理中可能发生不可忽略的延迟时间。另一方面,除非以适当的定时进行管理处理,否则可能不处理来自主cpu的请求。

因此,本发明提出了与现有技术方法和装置相关的上述和其他问题,并通过提供可以使用ssd稳定地执行信息处理的技术,同时减少用于存储器访问的延迟时间,从而解决了所提出的问题。

[问题的解决方案]

在进行本发明时,并根据本发明的一个方面,提供了一种信息处理装置,包括:命令接受块,被配置为接受从主机处理器到存储器的访问请求;以及命令处理块,被配置为从多个队列中的任意一个队列中读取访问请求,在多个队列中以分类的方式存储访问请求,其中所述命令处理块利用根据为每个队列设置的规则的定时,将多个队列中的请求读取目的地队列切换到下一队列。

在进行本发明时,并根据本发明的另一方面,提供了一种存储器访问方法,包括:接受从主机处理器到存储器的访问请求的步骤;从多个队列中的任何一个队列中读取访问请求的步骤,在多个队列中以排序的方式存储访问请求;以及执行所读取的访问请求的步骤,其中读取步骤利用根据为每个队列设置的规则的定时,将多个队列中的请求读取目的地队列切换到下一队列。

顺便提及,如果在不同形式(诸如方法、装置、系统、计算机程序和记录计算机程序的记录介质)之间转换上述组成元件的其他组合或本发明的上述表达,它们仍构成本发明的有效实施例。

[发明的有益效果]

根据本发明,可以稳定地执行使用ssd的信息处理,同时减少用于存储器访问的延迟时间。

附图说明

图1是示出本实施例中的信息处理装置的电路配置的图。

图2是示出一个实施例中的信息处理装置的功能块的配置的图。

图3是示出本实施例中的队列的配置示例的图。

图4是示出本实施例中的在每个阶段中要处理的队列的类型、每个阶段中的命令的处理上限以及时间限制的设置示例的图。

图5是指示其中本实施例中的命令处理块在阶段1和阶段4中读取数据的处理操作的过程的流程图。

图6是指示其中本实施例中的命令处理块在阶段2中读取或写入数据的处理过程的流程图。

图7是指示其中本实施例中的命令处理块在阶段3中执行管理处理操作当中的读取处理的处理过程的流程图。

图8是指示其中本实施例中的命令处理块在阶段5中执行管理处理操作当中的写入处理和数据删除的处理过程的流程图。

图9是示出其中在本实施例中引入用于响应于来自主机单元的通知的相位之间切换的规则的模式的图。

图10是表示通过本实施例的集中于命令调整块进行的调整的闪存控制器的处理过程的流程图。

具体实施方式

现在,参考图1,示出了本实施例的信息处理装置的电路配置。这里,本示例中的信息处理装置可以是便携式游戏机、个人计算机、移动电话、桌面终端、个人数字助理(personaldigitalassistant,pda)和其他通用信息设备中的任何一种。信息处理装置10具有包括cpu的主机单元12、系统存储器14、nand型闪存20(以下简称为闪存20)和闪存控制器18。

主机单元12将存储在闪存20中的程序和数据加载到系统存储器14中,以便通过使用这些程序和数据来运行信息处理。另外,主机单元12从在未示出的记录介质驱动块中驱动的记录介质读取应用程序和数据,或者从通过通信块网络连接的服务器将应用程序和数据下载到闪存20中。此时主机单元12向闪存控制器18发出访问闪存20的访问请求,并且响应于此,闪存控制器18对闪存20执行读/写处理。

闪存20与两个或多个nand型闪存连接,以便以分布式方式将数据存储在两个或多个通道中(图中的“ch0”到“ch3”),如图所示。闪存控制器18具有具有用于与连接主机单元12接口的接口功能的主机控制器22、具有用于与闪存20接口的接口功能的存储器控制器28、以及静态随机存取存储器(sram)24。

主机单元12根据信息处理的进度生成用于访问闪存20的访问请求,并将所生成的访问请求存储在系统存储器14中。该访问请求包括访问目的地的逻辑地址(lba:逻辑块地址)。闪存控制器18的主机控制器22读取存储在系统存储器14中的访问请求,并将lba转换为闪存20的物理地址。此时,对于该转换所需的地址转换表,将最初存储在闪存20中的地址表的至少一部分预先开发到sram24中。

通过参考该地址转换表,主机控制器22将基于lba获得的物理地址提供给存储器控制器28。存储器控制器28通过基于该物理地址访问闪存20中的相应区域来读取或写入数据。要写入的数据已由主机单元12存储在系统存储器14中,并由存储器控制器28读取。所读取的数据由存储器控制器28存储在系统存储器14中,以供主机单元12读取。

通常,对闪存20的数据读/写操作在4096字节等的访问基础上执行。在使用nand型闪存的情况下,禁止数据覆盖写入,使得在写入数据时,需要分配没有写入任何内容的区域。如上所述,如果通过仅改变逻辑地址来重复数据更新以便分发写入区域,则存储失效的原始数据的区域的数量增加,最终导致可以新写入数据的区域的不足。

由于数据是以几个mib(1mib=1020字节)为块基础删除的,因此分配没有写入任何内容的区域需要将存储在要删除的块中的有效数据复制到另一个块,并且然后删除原始块中的整个数据。该处理通常被称为“垃圾回收”。也就是说,存储器控制器28需要在可以在闪存20中写入数据的区域耗尽时或之前执行垃圾回收。

此外,nand型闪存会由于电荷泄漏导致数据故障。通过在读取数据时的电压施加会加速电荷泄漏。存储器控制器28通常具有纠错功能以纠正这种缺陷数据;但是,如果高度频繁地执行读取操作,则错误率可能超过纠正性能,最终导致数据丢失。这种故障通常被称为“读取干扰”。

由于通过向除目标数据区域之外的区域施加电压来执行读取操作,因此重复对相同的块的读取操作会导致整个块上的故障。因此,当已经读取相同块的次数达到预定值时,存储器控制器28将相关的整个块中的数据保存到另一个块,从而对泄漏的电荷进行再充电。

此外,nand型闪存包括tlc,其通过将阈值设置为要累积的电荷量的数量的以提供八级来记录每一个存储器单元三位的数据。然而,由于与基于两级的电荷量的数量记录每一个存储器单元一位的数据的slc相比,tlc需要复杂的写入序列,因此写入处理需要时间。因此,闪存20的一部分被预先分配为用作高速缓存的slc区域,从而提高写入处理的速度。此时,存储器控制器28以与执行写入请求分开的适当定时将写入slc的数据复制到tlc。

因此,存储器控制器28必须与来自主机单元12的请求分开地执行nand型闪存特有的管理处理。一旦发生执行管理处理的必要时,必须将正常的数据读/写处理置于等待状态达相对较长的时间直到该管理处理完成。结果,可能发生对于信息处理不可忽略的延迟,或者整个处理的吞吐量可能显著降低。在频繁读取存储在闪存20中的数据以便绘制显示图像的模式中,管理处理的频率随着访问次数的增加而增加,使得随着高到图像显示的时间限制的严格性,问题可能变得显着。

因此,在本实施例中,在适当地保持数据读/写处理和信息处理所需的管理处理之间的执行频率的平衡并且无故障地执行两个处理操作的同时,信息处理的延迟被最小化。更具体地,通过处理的内容对如上所述的管理处理和来自主机单元12的访问请求进行分类,并且将分类的管理处理和访问请求存储在不同的队列中。然后,通过根据处理内容的类型特有的规则在目标队列之间切换,以绝对比例(scale)实现要确定要执行的处理。

此外,通过基于来自主机单元12的访问请求的处理频率与管理处理的必要发生的频率之间的因果关系来确定队列切换规则,优化了两个频率之间的平衡,并且促进了所需时间和带宽的估计。在下文中,用于管理处理的处理请求和来自主机单元12的访问请求可以统称为“命令”。

参考图2,示出了本实施例中的信息处理装置的功能块的配置。就硬件而言,图2中所示的每个功能都可以由图1中所示的电路配置实现;就软件而言,每个功能都是由存储在内部存储器中的程序实现的。因此,本领域技术人员将理解,每个功能可以仅通过硬件、仅通过软件或其组合来实现,并且因此不限于其中特定的一个。

主机单元12具有:命令发出块30,其被配置为发出用于访问闪存20的命令;信息处理块32,其被配置为处理应用程序等;以及数据输入/输出块34,其被配置为输入/输出要从闪存20读取或向闪存20写入的数据。系统存储器14具有:两个或多个队列36,其被配置为存储从主机单元12发出的命令,以及数据存储块38,其被配置为存储要从闪存20读取或向闪存20写入的数据。

闪存控制器18具有:命令接受块40,其被配置为从主机单元12获取已将命令发出的通知;管理命令生成块42,其被配置为生成用于管理闪存20的命令;两个或多个队列44,其被配置为存储包括管理命令的命令;命令处理块46,其被配置为顺序地处理存储在队列44中的命令;切换规则存储块48,被配置为存储在经历处理的队列之间切换的规则;以及命令调整块50,其被配置为通过预定方法调整管理处理的执行的比率。

主机单元12的信息处理块32处理用户选择的程序,诸如应用。在该过程中,如果发生读取存储在闪存20中的数据或将数据写入闪存20的需求,则信息处理块32通知其命令发出块30。作为响应,命令发出块30指定访问目的地的逻辑地址并发出读取或写入命令。

详细地,命令存储在系统存储器14的两个或多个队列36中的任何一个中,并且将其通知发送到闪存控制器18。此时,命令发出块30基于除了诸如读取请求或写入请求的访问的内容之外的紧急程度对命令进行分类,从而将分类结果存储到相应的队列中。因此,基于访问内容、时间限制和访问数据大小的命令分类规则以及相应队列的地址信息由例如由信息处理块32处理的程序预先设置。

在命令是写入请求的情况下,数据输入/输出块34从信息处理块32获取要写入的数据,并将所获取的数据存储到系统存储器14的数据存储块38中。另外,数据输入/输出块34通过闪存控制器18从数据存储块38读取从闪存20读取的数据,并将该数据提供给信息处理块32。

闪存控制器18的命令接受块40从主机单元12接受已将命令发出的通知,从系统存储器14中的相应队列读取命令,并且然后将命令存储到内部维护(hold)的两个或多个队列44中相应的一个中。在闪存控制器18中维护的队列44包括具有与系统存储器14内的两个或多个队列36的配置基本相同的配置的两个或多个队列。可替换地,系统存储器14内的队列36可以被配置为作为队列44的一部分的参考。

每当需要上述垃圾回收、用于避免读取干扰的数据复制、从slc到tlc的数据复制以及其他管理处理操作时,管理命令生成块42发出用于要求这些处理操作的命令。详细地,管理命令生成块42监视向闪存20的数据写入和从闪存20的数据读取的情况,以便确定发出管理处理命令的定时。对于管理处理的每个内容,预先设置决策规则。

接下来,将指定处理内容、数据复制源地址、数据复制目的地地址、要进行数据删除的块等的命令存储在用于队列44的管理处理的队列中的一个中,该队列对应于处理内容。应当注意,在图中,在队列44中,将其中存储有由主机单元12发出的命令的队列指示为白色,而将其中存储有由管理命令生成块42发出的命令的队列以网格指示用于区分。

命令处理块46顺序地处理存储在队列44中的命令。此时,基于先进先服务,对存储在一个队列中的命令进行处理。此外,命令处理块46根据为每个队列设置的切换规则将要经历处理的队列切换到下一个队列。也就是说,存储在另一队列中的命令可能以与发出顺序不同的顺序处理。队列切换规则预先存储在切换规则存储块48中,以供命令处理块46参考。

在从队列读取的命令是写入请求的情况下,命令处理块46从系统存储器14的数据存储块38读取要写入的数据,并将该数据写入到对应于包括在命令中的逻辑地址的区域。在命令是读取请求的情况下,命令处理块46将从对应于包括在命令中的逻辑地址的区域读取的数据存储到系统存储器14的数据存储块38中。在命令是闪存20内的数据移动的情况下,命令处理块46将数据从包括在命令中的复制源地址复制到复制目的地地址。另外,命令处理块46根据需要删除从其复制数据的块中的数据。

命令调整块50调整要执行的处理的比率,以防止存储器访问由于不完整的管理处理而失败。例如,当存储在队列44中的用于管理处理的命令的数量超过预定阈值时,临时改变存储在切换规则存储块48中的至少一部分队列切换规则,并且将其通知发送到主机单元12。

在前文中,增加时间限制的上限或被设置为从存储有用于管理处理的命令的队列切换到另一队列的规则的命令处理操作的数量的上限,或者减少另一队列中的命令处理操作的数量的上限。这种布置允许增加利用其基本上执行的管理处理的比率。当用于执行存储在队列44中的管理处理的命令的数量等于或低于上面提及的阈值时,队列切换规则返回到原始状态。

在向主机单元12发送通知时,主机单元12的命令发出块30接收通知并限制命令发出。例如,暂停紧急度低的命令的发出,或者将发出的频率限制在等于或低于预定值的水平。这种布置也大大增加了管理处理的执行的比率。应当注意,队列切换规则的改变和向主机单元12的通知可以在除了上面提及的那些之外的定时完成。

例如,由于避免垃圾回收和读取干扰的处理的必要性可以由到目前为止所进行的存储器访问的情况预测,因此可以预先采取针对这些问题的措施。更具体地,当可写块的数量等于或低于预定阈值时,则确定将很快发出垃圾回收命令。显然,这里所使用的阈值大于在实际发出垃圾回收命令时要使用的阈值。

可替换地,当在同一块上执行读取处理的次数达到预定阈值时,则确定将很快发出用于避免读取干扰的数据复制命令。显然,这里所使用的阈值小于实际发出数据复制命令时的阈值。然后,由于预先调整,改变队列切换规则或通过这些定时向主机单元12发送通知允许对调整量的限制。

定期向主机单元12通知可写块的数量和在同一块上执行读取处理的次数可以逐渐限制主机单元12的命令的发出。此外,采取用于改变队列切换规则的措施和对主机单元12的通知可以独立地或同时地执行。该调整处理允许适当地维持来自主机单元12的访问请求的处理与闪存20本身所需的管理处理之间的平衡,并确保用于处理高度紧急命令的低延迟。

参考图3,示意性地示出了队列44的配置示例。这里,每个圆柱示意性地指示队列,紧接在该队列之下指示了要存储在队列中的命令的类型。闪存20被划分为具有专门访问的不同名称空间(ns:namespace)的逻辑分区。还为这些分区中的每个布置队列;在图中,从上到下指示要为识别码a,b和c(“nsida”,“nsidb”和“nsidc”)的名称空间布置的队列。此外,在底部,指示要为指示管理处理的“bg工作”(后台工作,backgroundjob)布置的队列。

在该示例中,“nsida”是由普通文件系统访问的分区,并且具有其中标准读取命令和标准写入命令一起存储的队列51。“nsidb”是用于处理只读文件存档的分区;如果通过使用专用于写入命令的队列58来写入文件一次,则通过使用专用于读取命令的队列52、54和56来读取数据。

这里,根据紧急程度,专用于读取命令的队列由两个或多个队列配置;在该图中,布置了三个阶段,即最高紧急“紧急(emergency)”的队列52、次高紧急“高优先级(highpriority)”的队列54,以及最低紧急“正常优先级(normalpriority)”的队列56。然而,阶段的数量不限于这三个。此外,专用于写入命令的队列58是具有与“nsida”的队列51的优先级大致相同的优先级的标准队列。

“nsidc”是由slc配置的分区,并且具有快速只写队列60和其中读取命令和写入命令一起存储的队列62。后者是具有与“nsida”的队列51的优先级大致相同的优先级的标准队列。

对于如上所述的“bg工作”,布置了用于将数据从slc复制到tlc的命令的队列64、用于避免读取干扰的数据复制命令的队列66和用于垃圾回收命令的队列68。另外,例如,用于存储系统管理命令的队列可以与上面提及的在操作期间必须在后台执行的管理处理分开布置,如上所述。

如上所述,闪存控制器18的命令处理块46顺序地处理存储在队列中的命令,同时根据存储在切换规则存储块48中的规则在这些队列之间切换。详细地,队列51到68本身被划分为分配了处理间隔以用于循环的两种或多种类型。在某个类型的队列要经历处理的时间间隔内,当命令处理操作的数量已经达到上限或时间限制已经到期时,则进行到下一个类型的队列要经历处理的时间间隔的转换。可以独立于每种类型设置处理上限的数量和时间限制。在下文中,分配给每种类型队列的间隔称为“阶段”。

参考图4,示出了在每个阶段中要处理的队列类型、每个阶段中的命令的处理上限以及时间限制的设置示例。在该示例中,提供了五个阶段,阶段1到阶段5,其从阶段1到阶段2、到阶段3、到阶段4、到阶段5、到阶段1、到阶段2等循环并转换。首先,在阶段1中,用于nsidb的只读队列,即图3所示的示例中的三个队列52、54和56经历处理。在这些队列中,那些在紧急度高的优先经历处理。这里命令处理上限为50。应当注意,通过将对预定大小的数据的访问用作一个单位来对命令的数量计数。这与以下描述一致。

在阶段2中,用于nsidc的快速只写队列、用于nsida和nsidc的标准读/写队列以及用于nsidb的标准只写队列经历处理。在图3中,这些队列分别对应于队列60、51、62和58。在这些队列中,如果命令存储在快速只写队列60中,则可以通过对该命令进行优先级排序(prioritizing)来实现对slc的快速写入。

在阶段3中,“bg工作”,即用于管理处理的队列(图3所示的示例中的队列64、66和68)经历处理。存储在这些队列中的任何一个命令包括将已经存储在闪存20中的数据移动到另一区域的处理;在阶段3中,这些命令仅执行该处理的一部分,即原始数据的读取。已读取的数据临时存储在内部存储器或系统存储器14中。

在阶段4中,与阶段1一样,用于nsidb的只读队列经历处理。将相同队列的处理划分到两个间隔允许在下一个间隔中立即处理在前一个间隔结束之后立即发出的命令,从而减少最大延迟时间。在阶段5中,执行即存储在管理处理队列中的命令的“bg工作”、在阶段3中读取的数据的写入和由于复制而失效的数据的删除。

例如,在通过使用存储在nsidb中的数据以预定帧速率绘制显示图像时,由于该数据读取的延迟,屏幕可能被冻结或丢弃。由于存储在管理处理队列中的每个命令需要长时间来完成处理,因此可以在阶段3和阶段5中将处理划分成两个阶段,从而防止诸如绘制显示图像的需要实时的处理受到阻碍。

此外,与数据读取或对slc的写入相比,对tlc的写入和数据删除需要几倍长的时间。因此,后者被概括为阶段5,并且同时布置时间限制,从而即使处理正在进行,也能够通过暂停处理使得能够转换到另一阶段。在图中所示的示例中,阶段5的时间限制设置为“3.0毫秒(毫秒)”。除了时间限制的布置之外,可以在将命令存储到紧急度高的队列(诸如例如图3中所示的用于紧急读取的队列52)中时停止阶段5的处理。

因此,如上所述,在通过使用从nsidb读取的数据绘制显示图像的模式中,可以最小化对显示图像的影响。应当注意,在阶段5中的处理中断的情况下,可以跳过阶段2和阶段3以进行阶段转换,直到完成中断处理。

图4还示出了对每个阶段给出的命令数量的处理上限和从中假设的最大所需时间。在阶段1和阶段4中,用作为上限的“50”个命令处理从nsidb读取的数据。如果读取处理每个命令需要100微秒而另一个处理需要100微秒,则阶段1和阶段4的所需时间最大为5.1毫秒。在阶段2中,用“1”个命令处理nsidc到nsida的写入,并且用作为上限的“4”个命令处理读取。

如果这里要执行的对slc的写入处理是每个命令500微秒并且读取处理是每个命令100微秒,并且如上所述另一处理是100微秒,则对于写入处理和读取处理二者,阶段2所需时间最大为0.5毫秒。在阶段3中,用作为上限的“3”个命令处理从复制源的数据读取。如果读取处理每个命令需要100微秒并且另一处理如上所述需要100微秒,则阶段3所需时间最大为0.4毫秒。

在阶段5中,用作为上限的“1”个命令处理向复制目的地的数据写入。如上所述,用时间限制“3.0毫秒”对失效区域中的数据删除进行限制,以逐渐进行。如果给出了如上所述的限制,则从阶段1到阶段5的一个周期的处理最大为14.1毫秒,从而允许将存储器访问的延迟时间限制为等于或低于恒定值的水平。另外,可以将闪存20和闪存控制器18所需的带宽控制到等于或低于预定值的水平。

在图中所示的示例中,在每个命令的数据大小为65536b(字节)的情况下,在14.1毫秒的间隔期间,在阶段1和阶段4中执行最多100个命令的读取处理,使得所需的带宽为每nand通道65536×100/14.1=465mb/秒。同样,要在阶段2中处理的命令所需的带宽对于读取处理是每nand通道18.6mb/秒并且对于写入处理是每nand通道4.65mb/秒。应当注意,上述数值和设置仅是说明性的,并且因此可以根据信息处理的内容和处理性能来改变。

参考图5,示出了指示在阶段1和阶段4中命令处理块46从nsidb读取数据的处理过程的流程图。该示例假设根据如图3所示的紧急度将只读队列被分类为三个的情况。首先,检查命令是否存储在最高紧急的队列中(图3中所示的紧急读取队列52)(s10)。在存储命令的情况下(s10的y),命令处理块46首先读取存储在有关队列中的命令,并且然后通过例如将逻辑地址转换为物理地址来读取该区域中的数据(s12)。

只要命令存储在最高紧急的队列中,就顺序读取这些命令以进行处理(s10的y,s12)。如果在相关队列中没有要处理的命令(s10的n)并且到目前为止所处理的命令的数量低于处理上限(s14的y),则检查命令是否存储在次高紧急的队列中(图3中所示的高优先级的读取队列54)(s16)。在存储命令的情况下(s16的y),命令处理块46首先读取存储在有关队列中的命令,并且然后以与上述类似的方式读取数据(s18)。

如果通过上述处理不能达到处理上限设置(s20的y),则命令处理块46在每处理一个命令时再次检查命令是否存储在最高紧急队列的队列中并且,如果存储了命令,则处理这些命令(s10的y,s12)。如果在最高紧急的队列中没有要处理的命令(s10的n)并且到目前为止所处理的命令的数量低于处理上限设置(s14的y),则处理存储在次高紧急的队列中的命令(s16的y,s18)。如果在有关队列中没有要处理的命令(s16的n),则检查命令是否存储在最低紧急的队列中(图3中所示的正常优先级读取队列56)(s22)。

在存储命令的情况下(s22的y),命令处理块46首先读取存储在有关队列中的命令,并且然后以与上述相同的方式读取数据(s24)。如果通过上述处理不能达到处理上限设置(s20的y),则命令处理块46在每处理一个命令时再次检查命令是否存储在最高紧急队列的队列中并且,如果存储了命令,则处理这些命令(s10的y,s12)。如果在任何上述这些周期中命令处理的数量达到上限(s14的n或s20的n),或者如果没有更多要处理的命令(s22的n),则该阶段终止以转换到下一阶段。

如上所述的处理过程允许更频繁地监视在紧急度更高的队列,并且同时监视存储在这些队列中的命令的处理,从而最小化从命令的存储到其处理的延迟时间。另外,对于紧急度相对较低的命令,可以稍后执行处理,其中处理操作的数量的上限是约束条件,以便转换到另一阶段,从而在整个阶段中控制所需的时间和带宽。

参考图6,示出了指示在阶段2中命令处理块46nsidc到nsida上读取和写入数据的处理过程的流程图。命令处理块46首先检查命令是否存储在对nsidc的快速写入队列中(图3中所示的快速写入队列60)(s30)。在存储命令的情况下(s30的y),命令处理块46首先读取存储在有关队列中的命令,将逻辑地址转换为物理地址,并将从系统存储器14读取的数据写入有关区域(s32)。

如果处理的命令的数量已达到写入处理的上限的设置,则终止有关阶段以转换到下一阶段(s34的n)。根据图4中所示的处理上限的数量的设置。在图4中,一个命令是阶段2中写入的上限,使得一旦终止该阶段则执行s32的处理。在其他设置中,如果处理的命令的数量低于写入处理的上限设置(s34的y),则再次检查命令是否存储在快速写入队列中,并且如果存储了命令,则处理这些命令(s30的y,s32)。

当在重复上述处理中的过程已达到写入处理的上限时,则终止有关阶段,转换到下一阶段(s34的n)。如果快速写入队列中没有存储更多命令(s30的n),则检查命令是否存储在nsidc到nsida的任何一个标准读取或写入队列中(图3中所示的标准读/写队列51和62以及标准写入队列58)(s36)。

在存储命令的情况下(s36的y),命令处理块46首先读取存储在有关队列中的命令,并以与上述相同的方式执行数据读/写处理(s38)。在阶段2中,为读取处理和写入处理中的每一个设置处理上限,使得每次处理一个命令时,将命令的数量与该处理的内容的每一个的上限进行比较。如果尚未达到处理操作的数量(s34的y),则再次检查命令是否存储在快速写入队列中,并且如果存储了命令,则处理这些命令(s30的y,s32)。

如果在有关队列中没有更多要处理的命令(s30的n),则检查命令是否存储在标准读取或写入队列中,并且如果存储了命令,则处理这些命令(s36的y,s38)。如果处理的命令的数量已经达到有关周期的上限或者没有更多要处理的命令,则终止有关阶段以转换到下一阶段(s34的n或s36的n)。通过如上所述的处理过程,可以优先处理快速写入。应当注意,在s36中经历检查处理的队列的数量在图3所示的示例中是三个;然而,基本上,可以采用轮询方案,其中顺序地检查这些队列,并且如果存储了命令,则处理这些命令。

参考图7,示出了指示命令处理块46在阶段3中执行管理处理操作当中的读取处理的处理过程的流程图。命令处理块46检查命令是否存储在为管理处理布置的队列的任何一个中(图3中所示的slc到tlc复制队列64、读取干扰避免数据复制队列66和垃圾回收队列68)(s40)。在存储命令的情况下(s40的y),命令处理块46首先读取存储在有关队列中的命令,并且仅执行读取数据的处理(s42)。

如果处理的命令的数量低于阶段3中设置的上限,则只要队列中还剩余命令,就重复读取这些命令的处理(s44的y,s40的y,s42)。当已经达到处理的上限时(s44的n)或者如果在任何一个队列中没有更多要处理的命令(s40的n),则终止有关阶段以转换到下一阶段。应当注意,在s40中,经历检查处理的队列的数量是多个(在图3中示出的示例中为三个);然而,基本上,可以采用轮询方案,其中顺序地检查这些队列,并且如果存储了命令,则处理这些命令。

此外,在阶段3中,可以仅读取用于执行阶段5中的写入的处理操作,而不是以绝对值设置处理操作的数量的上限。此外,在大小为slc的大小的空闲区域变得小于预定大小的情况下,可以跳过用于在阶段2中写入slc的命令以转换到阶段3,从而首先处理到tlc的数据复制。同样在这种情况下,可以通过顺序执行阶段1和阶段4来执行必要的数据读取处理。

参考图8,示出了命令处理块46在阶段5中的管理处理操作中执行写入处理和数据删除的指示处理过程的流程图。应当注意,仅当通过标记等区别于其他命令将阶段3中的读取处理留在队列中时,执行管理处理命令。可替换地,可以通过分类为读取命令、写入命令和删除命令来存储管理处理命令,从而从队列中删除在阶段3中处理的读取命令。

首先,命令处理块46检查是否存在以前一阶段5的定时中断处理的任何命令(s50)。如上所述,由于阶段5中的处理需要的相对较长的时间,因此在命令存储在紧急读取队列中或者阶段5的时间限制已经到期的情况下中断处理,从而转换到阶段1。中断的处理的命令存储在未示出的队列中,或者以该命令可识别的状态留在原始队列中。

如果找到中断的命令(s50的y),则从有关命令中断的时间点重新开始处理(s54)。如果没有中断的命令(s50的n),则命令处理块46检查命令是否存储在为管理处理布置的队列的任何一个中(s52)。应当注意,这里的目标命令是在阶段3中仅执行了数据读取的命令。如果没有这样的命令,则终止有关阶段,转换到下一阶段(s52的n)。如果找到这样的命令(s52的y),则开始有关命令的写入处理和必要的数据删除处理(s54)。

然后,继续处理,同时检查命令是否未存储在nsidb的最高紧急的读取队列中,并且是否尚未达到为阶段5设置的时间限制(s56的n,s58的n和s60的n)。如果发生将命令存储到紧急队列或时间限制到期(s56的y或s58的y),则中断开始的处理,转换到下一阶段(s62)。在这种情况下,再次从阶段1到阶段4到阶段5进行转换,从而重新开始中断的处理。

如果完成处理而没有将命令存储到紧急队列中并且所涉及的时间限制没有到期(s60的y),则检查命令处理操作的数量是否已达到上限;在命令处理操作的数量已达到上限的情况下,终止有关阶段终止,转换到下一阶段(s64的n)。根据图4中所示的处理上限的数量的设置,阶段5中写入的上限是一个命令,使得在完成s60中的写入处理时终止当前阶段。另外,由于数据删除处理需要长时间,所以在完成处理时终止阶段。

如果在其他设置中处理命令的数量低于写入处理的上限设置(s64的y),则检查命令是否存储在每个队列中;如果存储了命令,则处理这些命令(s52的y,s54到s60)。也在这种情况下,如果将命令存储到紧急队列和时间限制到期中的一个发生(s56的y或s58的y),则中断开始的处理,转换到下一阶段(s62)。另一方面,如果在命令处理操作的数量达到上限的情况下完成了处理,则终止有关阶段,转换到下一阶段(s64的n)。

同时,在阶段3和阶段5中要执行的管理处理的发生频率受到在阶段1、阶段2和阶段4中要执行的命令的数量的影响。例如,将slc复制到tlc的处理在三页的基础上执行。在阶段2中每次都执行对slc的一页写入的情况下,每三个间隔中从slc到tlc复制一次可以达到目的。因此,剩余的66%的时间可以分配给另一管理处理操作。

此外,如果一个块具有768页并且在阶段3和阶段5中完成每个间隔三页的复制,则一个块的复制在256个间隔中完成。为了避免读取干扰,在读取相同的块平均1000000次并且在阶段1和阶段4中以每个间隔最大100次执行读取时复制有关块的情况下,块复制的必要性在10000个间隔中发生一次。假设如上所述对于一个块的复制需要256个间隔,则用于避免读取干扰的管理处理所需的时间率(rate)最大为256/10000≈2.5%。

通过考虑从主机单元12发出的命令数量与管理处理的发生之间的因果关系,以便如上所述以适当的平衡设置每个阶段中的命令处理上限的数量,所有这些都可以顺利地处理,而不引起管理处理失败。另外,根据处理内容和优先级在每个阶段中经历处理的队列之间的适当切换允许控制从每个命令的发出到处理的延迟时间。

例如,根据图4中所示的设置,在另一处理操作之后的对首先存储nsidb队列中的命令的处理的延迟时间可以减少到最大约3.0毫秒(阶段5的时间限制)。因此,在通过使用从nsidb读取的数据绘制显示图像的情况下,可以最小化屏幕冻结和丢弃等问题。

如到目前为止所描述的,在本实施例中,根据每个命令的内容独立地设置用于阶段以及队列的切换规则。因此,可以将更符合信息处理特性的规则设置为特定阶段。作为其一个示例,图9示出了引入了用于根据来自主机单元12的通知在阶段之间切换的规则的模式。在该示例中,信息处理装置重复绘制图像的处理,通过使用存储在闪存20中的数据,该图像要在与显示设备的帧显示间隔匹配之后立即显示。

在现场从闪存20读取绘图所需的数据的布置允许比预先读取大量数据更多地节省系统存储器14的容量。该图以从上到下的矩形示出了在显示装置上显示帧n、帧n+1、帧n+2...的间隔、绘制每个帧的间隔,以及闪存控制器18访问存储器的每个阶段。

顶部显示处理中的黑暗间隔对应于垂直消隐间隔(verticalblankingintervals)。对于这种周期性显示处理,信息处理装置(主要是主机单元12)需要在开始显示之前完成相同帧的绘制。取决于图像的内容,每个帧的绘制间隔以及从闪存20读取数据的请求的大小和频率是不同的。从绘图间隔的矩形向下的每个白色箭头(例如箭头80)示出来自主机单元12的读取命令的发出定时。

如图所示,在某个帧的绘制的完成和下一帧的绘制的开始之间的间隔中,出现了与帧绘制间隔一致的空闲时间tn+1,tn+2,tn+3,...。因此,通过使用这些时间共同执行在管理处理操作中的耗时的处理操作允许更多地减少绘制间隔中的读取处理的延迟。更具体地,每当完成一个帧的绘制处理时,将其通知从主机单元12发送到闪存控制器18。在该图中,通知定时由箭头82a、82b、82c和82d指示。

在接受相关通知后,闪存控制器18从阶段4转换到阶段5。在该图中,转换定时由箭头84a、84b、84c和84d指示。因此,与主机单元12中的处理进展情况相匹配的由闪存控制器18处理的命令类型之间的切换允许用适合于这些处理操作的定时执行主机单元12所需的处理和闪存20本身所需的处理。

在示出在图像中的示例中,仅在从主机单元12发出绘制数据读取命令的间隔(即,帧绘制间隔)中的阶段1到4执行命令处理,使得读取处理的延迟时间最多仅用于阶段2和阶段3的间隔。在设置处理上限的数量的情况下,如图4所示,有关延迟时间最大为0.9毫秒。

参考图10,示出了指示闪存控制器18的处理过程的流程图,该处理过程集中于由命令调整块50进行的调整。闪存控制器18的命令接受块40、管理命令生成块42和命令处理块46接受从主机单元12发出的命令,并生成用于管理处理的命令,以便如上所述顺序执行这些命令(s70)。如上所述,该步骤包括在阶段1到5中或在根据为切换规则存储块48设置的规则的每个阶段中的经历处理的队列之间进行切换的处理。

此外,如图9所示,可以包括在接受来自主机单元12的通知时转换到阶段5的操作。随着这样的命令处理,命令调整块50监视存储在闪存20中的相同块的读取次数是否已超过预定阈值(s72)。此外,命令调整块50还监视新可写块的数量是否等于或低于预定阈值(s74)。前者用于预先预测数据复制命令发出定时的到来,以避免读取干扰。

后者用于预先预测垃圾回收命令发出定时的到来。如果两个监视结果都是否定的,则命令调整块50的调整不执行,从而继续命令处理(s72的n,s74的n,s70)。如果读取相同块的次数超过预定阈值(s72的y)或新可写块的数量等于或低于预定阈值(s74的y),则命令调整块50调整存储在切换规则存储块48中的任何切换规则(s76)。

例如,在阶段1、阶段2和阶段4中,在存储在正常优先级的读取队列或标准写入和读取队列中的命令不会被临时处理或者其处理操作的数量受到限制的同时,增加阶段3和阶段5的处理上限的数量和时间限制。该设置增加了一个时间间隔内可用于管理处理的时间比率。

此外,命令调整块50向主机单元12通知读取相同块的次数已超过预定阈值并且新可写块的数量已经等于或低于预定阈值的信息(s78)。响应于该通知,主机单元12临时减少为正常优先级的读取处理和标准写入和读取处理发出命令的次数。随着切换规则的改变,该设置还会增加一个间隔内可用于管理处理的时间的比率。应当注意,时时通知主机单元12读取相同块的次数和可写块的数量也是可行的,从而在主机单元12侧调整发出命令的次数。

结果,在确保来自主机单元12的请求中的紧急度高的命令的处理的同时,可以避免由于延迟的管理处理而导致正确的数据读/写处理失败的情况。应当注意,可以仅使用s72和s74中的一个监视项目,或者可以使用或组合允许预测管理处理的必要性的其他监视项目。例如,可以通过从目前为止的命令存储情况预测存储的命令的数量,为实际存储在管理处理队列中的命令的数量设置阈值来确定调整的必要性。

此外,可以仅执行s76中的切换规则的改变和s78中的对主机单元12的通知中的一个。此外,尽管省略了图示,但是一旦完成监视项目所针对的管理处理,命令调整块50将切换规则返回到原始形式,并通过向主机单元通知返回到原始切换规则来向正常状态返回命令已经发出的次数。

根据到目前为止描述的本实施例,根据诸如读取和写入的处理内容及其优先级,将对闪存的访问请求存储在不同的队列中。然后,通过遵循为每个队列设置的规则,在目标队列之间进行切换以读取命令并执行处理。这种布置允许以适合于这样的信息处理特性(例如,如数据读取和数据写入的哪个更主导,哪个在时间约束条件上更严格,或者二者相等)的顺序和频率处理访问请求。

此外,对两个或更多队列进行分类,并且对于执行处理的每种类型布置间隔(阶段)。对于每个单独的队列,这种布置允许在同一阶段中对要处理的队列的切换规则以及阶段之间的切换规则的双重强加,从而通过组合这些切换规则来提供详细设置,并且最终提供适合实际情况的灵活操作。

用于诸如垃圾回收的管理处理、用于读取干扰避免的数据复制以及slc到tlc数据复制的队列同样被组装到上述系统中。这种布置可以防止由于管理处理导致的来自主机单元的紧急度高的访问请求的处理的拥塞。特别是,由于如上所述的管理处理根据来自主机单元的访问请求的内容和频率发生,因此使用每个队列的绝对索引来设置规则,诸如处理命令的次数的上限及其时间限制,可以优化二者之间的平衡,从而以低延迟无故障地执行必要的处理。而且,对阶段进行循环有助于处理间隔的估计,从而使带宽控制成为可能。

此外,上述一些管理处理具有独特的特征,即一旦必要性发生,虽然不频繁,但需要大量时间。通过预先预测这种处理的开始定时,暂时改变切换规则或者抑制主机单元紧急情度低的请求的发出。这种布置可以容易地实现灵活的措施,例如临时增加分配给管理处理的时间用于提升,同时为主机单元的处理确保最小必要访问处理。

虽然已经使用特定术语描述了本发明的优选实施例,但是这种描述仅用于说明性目的,并且本领域技术人员应当理解,在不脱离以下权利要求的精神或范围的情况下,可以对组件和处理过程的组合进行改变和变型。

[参考符号列表]

10信息处理装置,12主机单元,14系统存储器,18闪存控制器,20闪存,22主机控制器,24sram,28存储器控制器,30命令发出块,32信息处理块,34数据输入/输出块,36队列,40命令接受块,42管理命令生成块,44队列,46命令处理块,48切换规则存储块,50命令调整块。

[工业适用性]

如上所述,本发明可应用于执行存储器访问处理的信息处理装置和存储器控制器。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1