基于闪存的固态驱动器中的保持感知块映射的制作方法

文档序号:18201964发布日期:2019-07-17 06:13阅读:225来源:国知局
基于闪存的固态驱动器中的保持感知块映射的制作方法

本申请要求于2018年1月10日提交的、名称为“基于闪存的ssd中的保持感知块映射”的临时申请62/615,839的优先权,该临时申请已转让给本申请的受让人并且其全部内容通过引用明确并入本文。

本公开总体涉及基于闪存的固态驱动器中的保持感知块映射,并且更特别地,涉及一种具有提高的保持效率的存储装置以及一种用于提高存储介质的保持效率的方法。



背景技术:

固态驱动器(ssd)可以包含多个闪速存储器,每个闪速存储器通常包含数千个物理闪速存储块。即使没有电源,每个闪存块也可以在无损失的情况下保持数据达相对长的时段,诸如几天到几年,这取决于闪速存储器的使用年限。

由于工艺变化,每个闪存块可以保持数据达不同特征的保持时间。同样,存储在闪速存储器中的不同数据文件可以具有不同的使用或更新频率。一些数据文件可以在较短的时间,诸如几小时或几天内被更新,而其它数据文件可以在较长的时间,例如几个月或甚至几年内被更新。现有的ssd系统忽略了不同闪存块之间的保持能力变化,将数据写入分配给块而不论预期数据更新频率如何。



技术实现要素:

描述了一种用于分析非暂时性存储器(例如,闪速存储器管芯)中的存储块以确定其保持能力并基于保持为其分配标签的技术。在示例中,具有提高的保持效率的存储系统包括:多个管芯;位于多个管芯内的多个存储块;以及控制器。控制器被配置为获取多个存储块的预期存储保持时间。控制器进一步被配置为基于预期存储保持时间将多个存储块划分为两个或更多个超级块。各个超级块与超级块保持时间范围有关联。各个超级块进一步包含具有在超级块保持时间范围内的预期存储保持时间的存储块。

附图说明

图1示出了根据本公开的某些实施例的错误校正系统的示例性高级框图。

图2a示出了固态驱动器中的示例性管芯。图2b示出了管芯中的示例性存储块。

图3a示出了固态驱动器中的传统超级块。图3b示出了根据实施例的基于保持时间组织的固态驱动器中的超级块。

图4a示出了根据实施例的将存储块与超级块相关联的示例性查找表。图4b示出了根据实施例的基于查找表识别的示例性记录。图4c示出了根据实施例的逻辑块寻址。

图5示出了根据实施例的基于外推保持曲线的存储块保持时间的估计。

图6示出了根据实施例的用于提高存储介质的保持效率的示例性流程。

图7示出了根据实施例的用于写入超级块的示例性流程。

图8示出了根据实施例的用于选择将写入的超级块的示例性流程。

图9示出了根据实施例的用于生成超级块查找表的示例性流程。

图10示出了根据实施例的用于更新超级块查找表的示例性流程。

图11示出了根据实施例的基于超级块查找表选择将写入的超级块的示例性流程。

图12示出了根据本公开的某些实施例的可以使用的系统的一种可能的实现方式。

具体实施方式

描述了用于分析非暂时性存储器(例如,闪速存储器管芯)中的存储块以确定其随时间的保持能力的技术。超级块(sb)可以由位于不同的管芯中的、具有可比性的保持能力的物理块形成。如同通常的情况,当所存储数据的更新频率不均匀时,所公开的系统和方法提高了存储效率。此外,所公开的实施例提高了固态驱动器(ssd)的可靠性,并且由于周期性刷新而降低了数据刷新频率和写入放大。特别地,在传统系统中,通过基于(物理块(例如,管芯上的物理块的物理位置)的)索引对不同管芯上的物理块进行分组来形成超级块。在这样的系统中,超级块的保持能力等同于物理块之中的最小保持能力。换句话说,如果物理块中的一个(例如,具有最小保持能力的物理块)不再可用,则整个超级块被回收并且不再可用。相比之下,本文的实施例优化了超级块的保持能力和可用性。特别地,通过对具有相似保持能力的物理块进行分组来形成超级块。如果物理块中的一个变得不可用,则只回收该物理块。不可用的物理块从超级块被移除并且超级块中的物理块的分组被动态更新。因此,超级块仍然可用。另外,基于预期的数据保持和超级块的保持能力将数据写入超级块。换句话说,热数据可以存储在具有短保持时间的超级块中,而冷数据可以存储在具有长保持时间的超级块中。相比之下,在传统系统中,冷数据可能被写入短保持的超级块,从而可能导致数据的丢失。

图1示出了根据本公开的某些实施例的错误校正系统100的示例高级框图。如图所示,错误校正码(ecc)编码器110接收包括期望被存储在存储系统120中的数据的信息位。经编码的数据由ecc编码器110输出并被写入到存储系统120。在各种实施例中,存储系统120可以包括多种存储类型或介质,诸如(例如,磁性)磁盘驱动器存储装置、快闪存储装置等。

当(例如,由存储数据的应用程序或用户)请求或以其他方式期望所存储的数据时,检测器130从存储系统120接收数据。接收到的数据可以包括一些噪声或错误。检测器130对接收到的数据执行检测并输出判定和/或可靠性信息。例如,软输出检测器输出可靠性信息和对每个被检测位的判定。另一方面,硬输出检测器输出对每个位的判定而不提供相应的可靠性信息。作为示例,硬输出检测器可以输出特定位为“1”还是“0”的判定,而不指示检测器在该判定中有多确定或多肯定。相反,软输出检测器输出判定和与判定有关联的可靠性信息。通常,可靠性值指示检测器在给出的判定中有多确定。在一个示例中,软输出检测器输出对数似然比(llr),其中符号指示决定(例如,正值对应于判定“1”而负值对应于判定“0”)且幅度指示检测器在该判定中有多肯定或多确定(例如,大幅度指示高可靠性或确定性)。

判定和/或可靠性信息被传递到ecc解码器140,ecc解码器140使用判定和可靠性信息执行ecc解码。软输入解码器利用判定和可靠性信息两者来对码字进行解码。硬解码器仅利用解码器中的判定值来对码字进行解码。由ecc解码器140生成的被解码的位被传递到适当的对象(例如,请求它的用户或应用程序)。利用恰当的编码和解码,信息位与被解码位相匹配。

在各种实施例中,所示系统可以使用包括以下的多种技术来实施:专用集成电路(asic)、现场可编程门阵列(fpga)和/或通用处理器(例如,高级risc机器(arm)内核)。

固态驱动器(ssd),诸如来自图1的示例的存储系统120,可以包含多个闪速存储器,闪速存储器中的每一个通常包含数千个物理闪速存储块。典型的闪速存储器被组织成管芯,例如十六个管芯。图2a示出了固态驱动器中的示例管芯210、220和230。可以为各个管芯编号,例如,用于通过闪存控制器寻址的目的。在该示例中,管芯210被编号为“0”,并且管芯230被编号为“15”。诸如管芯210的每个管芯又可以包含多个物理存储块,例如2000个块。图2b示出了管芯中的示例存储块。在该示例中,管芯“0”可以包含许多存储块,存储块中的每一个可以由闪速存储器控制器使用诸如物理块位置250的物理块位置来寻址。

位于不同管芯上的多个物理存储块可以被组织成超级块(sb),其可以是可作为逻辑单元而由控制器寻址的。图3a示出了固态驱动器中的传统超级块。传统超级块通常通过存储块的物理位置来组织。在该示例中,在它们各自管芯,诸如管芯310、320和330中具有相同物理块位置的所有存储块一起形成超级块340。例如,如图3a所示,管芯上第一物理位置(如位置“0”所示)处的所有块属于第一超级块(即,如图所示的超级块340,其可作为超级块“0”而被寻址)。然而,这种传统策略可能导致效率低下,因为在同一超级块中的不同物理块可能具有不同的特性并且它们的保持能力可能不同。

特别地,当传统系统的控制器写入存储块而不顾及数据的更新时间或存储块的保持时间时,可能发生这些时间尺度之间的不匹配。如果存储块的保持时间与数据的更新时间相比太短,则ssd可能变得不可靠,因为访问数据的时间将可能导致未校正的错误。相反,如果保持时间与更新时间相比太长,则控制器的数据写入效率会受到影响,因为具有高保持时间的较少的块将可用于存储其它数据。此外,如果数据文件跨越多个存储块,则文件的存储可靠性可能会受到块之中的最短保持时间的限制。由于传统sb能够混合不同保持能力的存储块,因此写入给定sb的文件能够同时跨越具有比所需更短和更长保持时间的两个存储块。与传统ssd相比,本公开可以通过在数据写入期间将数据的所需更新时间与存储块的保持能力相匹配来显著地提高存储效率和可靠性。

所公开的系统和方法可以根据它们的性能,特别是它们的预期存储保持时间来组织sb。图3b示出了根据实施例的基于保持时间组织的固态驱动器中的超级块。在该示例中,每个管芯,诸如管芯350、360、370和380中的不同存储块根据它们的估计存储保持时间而被分类为若干组,并且根据它们各自的组而被分配有标识符(例如,标签、编号等)。图中所示的每种阴影样式代表一组。在各种实施例中,可以将组分类为保持时间的线性缩放范围、保持时间的对数缩放范围、或基于任何其它分组方法来分类。可选地,分组可以基于估计的最大保持时间(例如,少于一天,少于一周,少于一个月,少于一年)。分类可以是粗粒度的(即,相对少数的组)或细粒度的。在实施例中,可以通过启发式机器学习,诸如聚类或无监督学习,来对组进行分类。可选地,系统可以具有预定义的范围,并根据这些范围对保持时间进行分组。

一旦被分类,系统可以选择属于相同组的块以形成超级块,诸如超级块390。在该示例中,超级块390中的块属于不同的管芯,并且在各自管芯内位于不同位置。以这种方式,系统能够最小化每个超级块内的物理块的保持能力的变化。然后,系统可以基于超级块标识符和管芯编号,例如通过使用将标识符和管芯编号与管芯内的物理位置相关联的查找表来访问超级块。例如,如图3b所示,第一个管芯上的第一个块(即管芯“0”上的块“0”)和最后一个管芯上的最后一个块(即管芯“15”上的块“1999”)尽管在各自管芯上具有不同的物理位置,但是都属于超级块390,因为这些块具有相似或相匹配的保持能力。

图4a示出了根据实施例的将存储块与超级块相关联的示例性查找表400。在该示例中,该表可以包含与超级块有关联的属性,诸如超级块标识符410,相应超级块在每个管芯(例如,16个管芯)中的物理块位置420,以及最大保持时间425,或保持时间范围。注意,在各种实施例中,超级块标识符可以是标签、编号等。

在该示例中,查找表400识别标记为“0”的超级块包括在管芯“0”上的物理块位置“0”处的存储块、在管芯“1”上的物理块位置“13”处的存储块,等等。查找表400进一步标识超级块“0”具有一天的保持能力。从而系统能够确定管芯“0”上的块“0”、管芯“1”上的块“13”等中的每一个也具有相似的一天的保持能力。

图4b示出了根据实施例的基于查找表识别的示例性记录430。例如,控制器可以在从主机接收到写入请求之后使用记录430,以便将从主机接收的逻辑块地址(lba)转换为用于写入数据的物理地址。在该示例中,记录430可以包含一系列属性,诸如<sb,die,page>。此处,“sb”表示超级块标识符440,“die”表示管芯标识符450,并且“page”表示管芯内存储器页面的物理位置460。因此,查找表能够识别超级块和属于超级块的每个块的物理位置。识别超级块可以涉及指定超级块标识符(例如,超级块10),并且识别块同样可以涉及指定块标识符(例如,块22)。块标识符可以对应于管芯上的物理位置(例如,块22可以是其各自管芯上的第22块)。

图4c示出了根据实施例的逻辑块寻址。总存储空间(或可连续寻址的虚拟存储空间)可以在小组块(chunk)或诸如4kb大小的存储器页面中寻址。每个页面可以通过逻辑块地址(lba)进行寻址。例如,如果总存储空间为1tb,并且存储器页面大小为4kb,则存储系统包含可由lba寻址的大约2.56亿个存储器页面。在该示例中,根据操作系统对它们写入的频率,可以将各个lba或lba范围分类为“热”或“冷”。例如,如果操作系统在给定时间间隔内对lba范围470写入两次,则lba范围470可以被分类为“热”,其可以指示与lba范围470有关联的数据文件具有短的更新时间。否则,诸如lba范围480的lba范围可以被分类为“冷”,以指示较长的更新时间。

为了确定物理存储块的保持时间,系统可以基于存储块的原始位错误率(ber)或错误校正能力的测量值作为保持时间的函数来执行分析。图5示出了根据实施例的基于外推保持曲线520来估计存储块保持时间。系统可以在对块中的一个或若干个存储器页面编程之后立即对它们的原始ber进行采样。然后系统可以在随后的间隔处,例如一小时、几小时、一天、几天等之后,对原始ber进行采样。在另一示例中,系统可以在对块进行预定义数量的写入或读取循环之后,例如,在对块进行一百次数据写入之后,在从块进行二百次数据读取之后等对原始ber进行采样。基于这种在线测量,控制器可以获取原始ber和保持时间之间的关系520。系统还可以利用关于能够被固定的闪存控制器的错误校正码(ecc)系统容忍的错误的信息。在实施例中,系统可以使用ecc的错误校正能力,例如,ecc能够在给定的物理存储块中校正的位错误数量。

在示例中,存储块可以包含多个字线或存储器单元行。ecc可以各条字线进行独立解码,以便检测和校正错误。对于包含太多待被解码的错误的字线,ecc可以通过使用关于相同块或超级块中的其它字线的信息来对这些“失败的”字线进行解码。例如,系统可以使用诸如chipkill或任何其它方法的方法对这种失败的字线进行解码,并且不受本公开的限制。因此,ecc可以校正多达一定总数量的位错误,例如,例如4kb数据的块的总存储容量中的200个位错误。然后控制器可以设置错误的阈值数量510,例如,该最大值的固定比例,诸如80%,或160个位错误。

系统可以使用测量的ber来确定块是否支持该能力,以使ecc将能够校正该块的字线。在实施例中,系统不限于该能力,并且可以与另一阈值数量或该能力的固定比例,诸如80%,或160个位错误进行比较,以设置安全裕度。为了确定块是否能够支持该功能,系统可以对块的页面进行采样,并测量ecc提供的位错误数量。在典型示例中,ecc可能无法校正所有错误,但可以输出指示存在的位错误数量的校验和。然后系统可以生成ber,作为检测到的错误位数量与从页面解码的总位数之比。系统可以随时间(例如,如图所示,在第0天、第1天、第2天和第3天)重复这种测量。

然后,控制器可以外推测量的原始ber关系520以预测每个物理块的保持时间。在给定页面中的总位数的情况下,控制器可以将ber转换为位错误数量,并将该外推出的数量与错误校正能力的预设数量(例如,200的80%=160位个错误)进行比较。在该示例中,基于观察到的历史关系的外推530,预测原始ber曲线在四天之后达到特定物理存储块的位错误阈值510(例如,160个位错误)。因此,控制器可以估计物理块具有四天的保持寿命。基于这种预测,系统可以分析每个闪存物理块,并将块粗略地分类为有限的几个组。

图6示出了根据实施例的用于提高存储介质的保持效率的示例性流程。存储介质可包括位于多个管芯内的多个存储块。计算机系统、存储装置或诸如闪存控制器的控制器被描述为执行示例性流程的特定操作。在示例中,计算机系统可以包括一个或多个处理器以及一个或多个存储器,其中存储器包括数据存储装置。存储器存储计算机可读指令以体现系统特有的功能。当由计算机系统的处理器执行指令时,指令导致操作的执行。存储在存储器中的指令与底层处理器一起表示用于执行操作的装置。尽管以特定顺序示出了操作,但是对于本领域技术人员来说是显而易见的是,可以对操作进行其它布置,并且可以跳过一些操作。

如图所示,示例性流程开始于操作610,在操作610中,系统获取多个存储块的预期存储保持时间。如在图5的示例中所讨论的,系统可以通过估计物理存储块的ber并且外推观察到的ber与时间之间的关系来确定存储保持时间。在实施例中,系统可以进一步更新估计的存储保持时间。例如,当已经对超级块执行了至少预定义数量的写入操作时,系统可以确定应该更新一个或多个预期存储保持时间。然后系统可以重新估计ber,并更新对存储块保持时间的估计。

在操作620中,系统将多个存储块划分为两个或更多个超级块。在实施例中,系统可以基于识别各个块的保持时间之中的匹配来划分存储块,并且基于所识别的匹配来形成超级块。特别地,可以基于诸如聚类或无监督学习的机器学习技术来执行这种匹配。可选地,系统可以具有超级块的预定义或预定的保持时间范围,并通过将估计的存储保持时间与这些范围进行匹配来对估计的保持时间进行分组。

例如,假定预定义范围包括少于一周、在一周和一个月之间、以及多于一个月。如果管芯上的块具有一至七天的估计保持时间,则可以用与小于一周的第一范围相关联的第一标识符来标记该块。如果块的估计保持时间在8至30天之间,则可以替代地用与一周至一个月的第二范围相关联的第二标识符来标记该块。

在一些实施例中,各个超级块包括每个管芯上的一个块,并且不能包括相同的管芯上的多个块。在示例中,控制器可以将具有相似保持能力的多个超级块组织起来,使得如果在相同管芯上的两个块具有相等同或相似的保持时间,则控制器可以将它们分配给适当保持能力的两个不同超级块。控制器可以通过与其保持时间的最接近匹配将块分配给超级块,或者如果两个超级块具有相同的保持能力,则可以随机或顺序地分配存储块。

已将物理存储块组成成超级块之后,系统可以基于预期更新时间和超级块保持时间将新写入请求与超级块相匹配。特别地,为了提高ssd保持效率和可靠性并降低数据清除(refresh)频率和写入放大,系统可以使用对数据更新频率的估计以将所请求的数据写入与包括具有适当保持时间的存储块的超级块相匹配。图7示出了根据实施例的用于写入超级块的示例性流程。示例性流程开始于操作710,在操作710中系统获取将写入存储系统的数据和数据的预期更新时间。在示例中,可以从主机接收写入请求和/或将写入的数据。在将新数据写入ssd之前,系统可以首先检查数据被预测的下次更新时间。

为了确定预期更新时间,在一些实施例中,所公开的系统可以利用对正在被写入的数据文件的更新周期的预测。在ssd中,可以从诸如高速非易失性存储器(nvme)的协议获得这样的信息,在nvme中主机上的软件能够提供关于数据写入访问频率的信息。因此,在一些实施例中,系统基于从主机接收这种信息来确定更新周期。对于非nvme驱动器,控制器可以替代地执行对数据文件或特定的lba范围的更新频率的历史跟踪。如在图4c的示例中所讨论的,系统可以跟踪写入模式并分析“热”和“冷”lba范围以确定特定范围和/或文件的历史更新频率。基于这种历史跟踪,系统能够例如通过将历史趋势外推到将来,和/或通过推断可能的用户行为,来预测写入请求的预期更新时间。

接下来,在操作720中,系统基于将数据的预期更新时间与关联于第一超级块的超级块保持时间范围相匹配来选择第一超级块。例如,如果预测的更新时间在一天之内,则控制器可以将数据编程到具有一天的最大预期保持时间的超级块或物理块。如果预测的更新时间在一周之内,则控制器可以将这种数据编程到能够保持数据一周的超级块或物理块。最后,在操作730,系统将数据写入所选择超级块。

在实施例中,系统基于已经过的时间来调整预期更新时间和/或超级块保持时间。图8示出了根据实施例的基于将预期数据更新时间与超级块保持时间相匹配来选择将写入的超级块的示例性流程。如图所示,示例性流程开始于操作810,在操作810中系统从主机或垃圾收集(gc)系统接收写入请求。接下来,在操作820中,系统预测所更新数据的更新寿命。如图4c和图7的示例中所描述的,系统可以基于预测的寿命估计将被写入的数据的更新寿命。然后系统可以基于自前次更新以来所经过的时间来调整数据的更新时间。例如,系统可以将lba和/或数据文件的gc写入寿命设置为,原始预测值减去自主机上次写入该数据以来所经过的时间。

同样地,系统可以基于自第一超级块开放以来所经过的时间来调整超级块保持时间或保持时间范围。在操作830中,系统搜索剩余时间匹配超级块保持时间或保持时间范围。对于多流的每个开放超级块,如果超级块是新开放的,则系统可以获取sb的保持寿命,如图5和图7的示例中所描述的。如果sb是已开放的,则系统可以基于自第一超级块开放以来所经过的时间来调整sb保持寿命。例如,系统可以将剩余的sb寿命设置为估计的寿命减去自sb开放以来所经过的时间。在一个示例中,如果具有长保持能力的sb已经开放很长时间,并因而具有与lba的或数据文件的寿命相匹配的短剩余寿命,则系统可以将具有短更新寿命的数据文件编程到该sb。

如在图7的示例中那样,系统然后可以通过将数据剩余寿命与sb或块的剩余寿命相匹配来将数据写入映射到sb和/或物理存储块。然后系统写入到所选择sb和/或物理存储块。

在一些实施例中,系统可以利用查找表来关联lba、存储块和超级块,如图4a、图4b和图4c的示例中那样。例如,当写入到所选择sb时,系统可以基于表中的查找来定位sb之内的存储块。该表可以包括包含sb标识符、管芯编号和sb之内存储块的物理位置的记录。

在示例中,当将多个存储块分组为超级块时,系统可以进一步在查找表中生成记录。图9示出了根据实施例生成将超级块与存储块相关联的超级块查找表的示例性流程。示例流程开始于操作910,在操作910中系统确定第一存储块的第一预期存储保持时间和第二存储块的第二预期存储保持时间与对应于第一超级块的第一超级块保持时间范围相匹配。第一存储块可以在存储介质中的第一管芯内具有第一物理位置。第二存储块可以在存储介质中的第二管芯内具有第二物理位置。第二物理位置不需要对应于第一物理位置,即第一和第二存储块在它们各自的管芯中不需要具有相同的物理位置。

在示例中,在操作910中,尚未生成第一超级块。也就是说,确定第一和第二预期存储保持时间相匹配可以仅涉及将第一和第二预期存储保持时间彼此进行比较。可选地,系统可以使用机器学习或聚类启发式,例如通过确定它们与彼此比与ssd中其它存储块的保持时间更相似。基于这种确定,然后系统可以决定形成包括第一和第二存储块的新超级块。

在另一示例中,第一超级块可以已经存在,并且系统可以确定第一和第二预期存储保持时间都与第一超级块相匹配。在实施例中,系统可以基于对应于第一超级块的现有第一超级块保持时间或保持时间范围来确定这一点。可选地,系统可以基于与第一和第二预期存储保持时间相匹配来改变第一超级块保持时间范围。例如,系统可以使用聚类或无监督学习启发式来确定第一和第二预期存储保持时间与第一超级块比与任何其它超级块匹配得更紧密。在实施例中,然后系统可以基于第一和第二预期存储保持时间来修改第一超级块保持时间范围。

已将第一和第二存储块与第一超级块相匹配之后,在操作920中,系统在查找表中生成第一记录和第二记录。第一记录可以将第一物理位置与第一超级块相关联,且第二记录可以将第二物理位置与第一超级块相关联。

此外,系统还可以基于估计保持时间的改变来更新查找表。图10示出了根据实施例的更新超级块查找表的示例性流程。该示例性流程可以为图9的示例性流程提供进一步的细节。示例性流程开始于操作1010,在操作1010中系统确定对第二预期存储保持时间的改变。接下来,在操作1020中,系统移除将第二物理位置与第一超级块相关联的第二记录。然后,在操作1030中,系统确定第二预期存储保持时间和第一存储器管芯上的第三存储块的第三预期存储保持时间与对应于第二超级块的第二超级块保持时间范围相匹配。最后,在操作1040中,系统更新查找表中的记录以将第二存储块和第三存储块与第二超级块相关联。

如上所述,系统还可以在将数据写入sb时使用查找表。图11示出了根据实施例的基于超级块查找表选择将写入的超级块的示例性流程。示例性流程开始于操作1110,在操作1110中系统从主机接收写入指示lba的数据的请求。在操作1120中,系统基于所接收的lba识别第一超级块。在操作1130中,系统基于查找表和第一超级块的标识符识别第一存储块的第一物理位置。最后,在操作1140中,系统基于第一物理位置将数据的一部分写入第一存储块。

图12示出了根据本公开的某些实施例的可以使用的系统的一种可能的实施方式。图12仅仅是对本公开的实施例的说明,并不限制如权利要求中所述的本公开的范围。在一个实施例中,该系统是计算机系统1200,其通常包括监视器1210、计算机1220、用户输出装置1230、用户输入装置1240、通信接口1250等。

如图12所示,计算机1220可以包括通过总线子系统1290与数个外围装置通信的处理器1260。这些外围装置可以包括用户输出装置1230、用户输入装置1240、通信接口1250和存储子系统,诸如随机存取存储器(ram)1270和磁盘驱动器1280。

用户输入装置1230包括用于向计算机系统1220输入信息的所有可能类型的装置和机构。这些装置和机构可以包括键盘、小键盘、结合到显示器中的触摸屏、诸如语音识别系统的音频输入装置、麦克风和其它类型的输入装置。在各种实施例中,用户输入装置1230通常实现为计算机鼠标、轨迹球、触控板、操纵杆、无线遥控器、绘图板、语音命令系统、眼动跟踪系统等。用户输入装置1230通常允许用户通过诸如点击按钮或类似的命令来选择出现在监视器1210上的对象、图标、文本等。

用户输出装置1240包括用于从计算机1220输出信息的所有可能类型的装置和机构。这些装置和机构可以包括显示器(例如,监视器1210)、诸如音频输出装置的非可视显示器等等。

通信接口1250提供到其它通信网络和装置的接口。通信接口1250可以用作用于从其它系统接收数据和向其它系统传送数据的接口。通信接口1250的实施例通常包括以太网卡、调制解调器(电话、卫星、电缆、isdn)、(异步)数字用户线(dsl)单元、火线接口、usb接口,等等。例如,通信接口1250可以联接到计算机网络、火线总线等。在其它实施例中,通信接口1250可以物理地集成在计算机1220的母板上,并且可以是软件程序,诸如软dsl等。

在各种实施例中,计算机系统1200还可以包括能够通过诸如http、tcp/ip、rtp/rtsp协议等的网络进行通信的软件。在本公开的可选实施例中,还可以使用其它通信软件和传输协议,例如ipx、udp等。在一些实施例中,计算机1220包括来自intel的一个或多个至强微处理器作为处理器1260。此外,在一个实施例中,计算机1220包括基于unix的操作系统。

ram1270和磁盘驱动器1280是被配置为存储诸如本公开的实施例的数据的有形媒体的示例,包括可执行计算机代码、人类可读代码等。其它类型的有形媒体包括软盘,可移动硬盘,诸如cd-rom、dvd和条形码的光盘存储媒体,诸如闪速存储器的半导体存储器,非暂时性只读存储器(roms),电池支持的易失性存储器,网络存储装置等等。ram1270和磁盘驱动器1280可以被配置为存储提供本公开的功能性的基本编程和数据构造。

提供本公开的功能性的软件代码模块和指令可以存储在ram1270和磁盘驱动器1280中。这些软件模块可以由处理器1260执行。ram1270和磁盘驱动器1280还可以提供用于存储根据本公开所使用的数据的储存库。

ram1270和磁盘驱动器1280可以包括数个存储器,其中存储器包括用于在编程执行期间存储指令和数据的主随机存取存储器(ram)和其内存储固定的非暂时性指令的只读存储器(rom)。ram1270和磁盘驱动器1280可以包括文件存储子系统,其为编程和数据文件提供持久的(非易失性)存储。ram1270和磁盘驱动器1280还可以包括可移动存储系统,诸如如可移动闪速存储器。

总线子系统1290提供用于使计算机1220的各种组件和子系统按预计彼此通信的机构。尽管总线子系统1290被示意性地示为单条总线,但总线子系统的替代实施例可以利用多条总线。

图12是能够实现本公开的计算机系统的代表。对于本领域普通技术人员来说将显而易见的是,许多其它硬件和软件配置适用于本公开的使用。例如,计算机可以是台式、便携式、机架式或平板式配置。另外,计算机可以是一系列联网计算机。此外,可以考虑使用其它微处理器,诸如pentiumtm或itaniumtm微处理器;来自超威半导体公司的opterontm或athlonxptm微处理器;等等。此外,可以考虑其它类型的操作系统,诸如来自微软公司的等,来自太阳微系统公司的solaris,linux,unix等。在另外的其它实施例中,上文描述的技术可以在芯片或辅助处理板上实施。

本公开的各种实施例可以以软件或硬件中的逻辑形式或两者的组合来实施。该逻辑可以存储在计算机可读或机器可读的非暂时性存储介质中,作为适于指示计算机系统的处理器执行本公开的实施例中公开的一组步骤的一组指令。该逻辑可以形成适于指示信息处理装置执行本公开的实施例中公开的一组步骤的计算机程序产品的一部分。基于本文提供的公开和教导,本领域普通技术人员将理解实施本公开的其它方式和/或方法。

本文描述的数据结构和代码可以部分或完全存储在计算机可读存储介质和/或硬件模块和/或硬件设备上。计算机可读存储介质包括但不限于易失性存储器,非易失性存储器,诸如磁盘驱动器、磁带、cd(光盘)、dvd(数字多功能光盘或数字视频光盘)的磁性和光学存储装置,或者现在已知或以后开发的能够存储代码和/或数据的其它媒体。本文描述的硬件模块或设备包括但不限于专用集成电路(asic)、现场可编程门阵列(fpga)、专用或共享处理器、和/或现在已知或以后开发的其它硬件模块或设备。

本文描述的方法和进程可以部分或完全地实现为存储在计算机可读存储介质或装置中的代码和/或数据,使得当计算机系统读取并执行该代码和/或数据时,计算机系统执行相关联的方法和进程。方法和进程还可以部分或完全地实现在硬件模块或设备中,使得当激活硬件模块或设备时,它们执行相关联的方法和进程。可以使用代码、数据与硬件模块或设备的组合来实现本文公开的方法和进程。

尽管为了清楚理解的目的,已经相当详细地描述了前述实施例,但是本公开不限于所提供的细节。有许多实施本公开的替代方式。所公开的实施例是说明性的而非限制性的。

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