对存储器读取或写入的制作方法

文档序号:6361073阅读:165来源:国知局
专利名称:对存储器读取或写入的制作方法
技术领域
本发明涉及数据的存储或检索,以及特别地,涉及读取和/或写入用于应用的数据流。
背景技术
在计算机上运行的、由一个或多个处理器执行的应用的速度主要由以下确定对要被处理的信息的访问速度,以及经处理的信息在需要用于进一步处理或输入之前可以被存储的速度。在计算机系统中使用具有不同特性、特别是不同速度,从而具有不同价格的不同存储器类型。进一步地,在存储器和运行应用的处理器之间使用的不同总线,并且连接到总 线的组件影响读取和/或写入速度。进一步地,存储器的特征在演进,以及在计算机中或由计算机使用的存储器可以被更新成更快的存储器。在存储器之间的基本划分是存储器是缓存,其是用作用于被频繁访问的指令和数据的高速存储的缓冲存储器;或者存储器是所谓的主存储器或存储。基本上存在两种类型的存储器I/o (即,写入/读取)操作直接访问存储或使用所有数据流传递到主存储器和/或自主存储器传递所通过的缓存。当前使用缓存是默认解决方案。然而,有时直接访问存储可以更有效率并且具有更少开销。WO 2008/004149公开了解决方案,其中用作存储的闪存的部分被分配成用作用于闪存的其余部分的缓冲,以最小化时间开销和闪存的磨损。在该解决方案中,所有写入和读取请求经过存储器控制器。当存储器控制器接收待被写入存储器的数据流时,其将所接收的数据流的大小与预先确定数量的数据分组进行比较,以及如果该数据流大于预先确定数量的数据分组,则该数据流被直接存储到其目标目的地,否则该数据流被存储到缓冲部分以稍后被存储到目标目的地并且从缓冲部分被读取,只要该数据流在缓冲部分。当来自缓冲部分的数据被存储,并且存在具有相同目的地的多于一块数据时,仅存储最新的一块数据。在WO 2008/004149中的解决方案在存储内仍然发生,并且到存储器控制器和来自存储器控制器的数据流经由缓存传递,尽管直接访问闪存可能更有效率。

发明内容
下述介绍了本发明的简要发明内容,以提供对本发明的一些方面的基本理解。该发明内容不是本发明的全面概述。其并不意在识别本发明的关键/决定性元素或详述本发明的范围。其唯一目的是以简要形式介绍本发明的一些构思,作为稍后介绍的更详细描述的前序。一些实施例的方面包括基于关于数据流的块大小的信息和为该块大小的确定的缓存和存储性能,来判定是使用缓存还是直接使用存储,并且相应地采取行动。本发明的各个方面包括在独立权利要求中定义的方法、设备和计算机程序产品。在从属权利要求中公开了本发明的进一步实施例。


在下面,将参考附图更详细地描述不同实施例,在附图中图I是根据实施例的简化框图;以及图2至4是图示实施例的流程图。
具体实施例方式现在在下文中,将参考附图更全面地描述本发明的示例性实施例,其中示出了本发明的一些而非所有实施例。实际上,本发明可以以许多不同形式实施,并且不应当被解释为限于在本文中阐述的实施例;相反,提供了这些实施例,使得本公开将满足适用的法律要件。尽管本说明书在若干位置中可能引用了 “一个”或“一些”实施例,然而,这不一定意为每一个这样的引用针对相同(一个或多个)实施例、或特征仅应用于单个实施例。还可以对不同实施例的单个特征进行组合来提供其他实施例。本发明的实施例适于计算设备、计算机、对应组件和/或支持使用缓存的任何计算系统或网络。计算设备可以包括任何类型的处理器、操作系统和一个或多个存储器。因此,所有词和表达应当被宽泛解释,并且意在说明而非限制实施例。在图I中图示了根据实施例的计算设备的一般布置。图I是仅示出计算设备的一些组件的简化框图,该组件被用来说明实施例。应当理解的是,计算设备可以包括不需要在此详细描述的其他组件、模块、连接、耦合等。描绘计算环境的计算设备100包括运行应用120并且经由总线101耦合到判定组件130的处理器110。判定组件130,以及从而处理器和应用,经由总线102被进一步耦合到缓存140并且经由总线103被进一步耦合到存储150。例如,实现在下面利用实施例描述的判定组件130的功能的计算设备100不仅包括现有技术装置,而且包括用于判定是使用 缓存还是直接使用存储的装置。更精确地,计算设备包括用于实现利用实施例描述的功能的装置,并且可以包括用于每一个分开的功能的分开的装置、或装置可以被配置成执行两个或更多个功能,并且甚至组合不同实施例的功能。通常,处理器110是中央处理单元(CPU),但是处理器可以是另外的操作处理器。应当理解的是,计算设备可以包括其他组件,和/或缓存和存储可以位于经由接口可访问的另一个计算设备中。判定组件130被配置成执行在下面利用实施例描述的功能,并且其可以被配置成执行来自不同实施例的功能。出于这个目的,判定组件可以包括用于存储判定表131的小量存储器,并且取决于实施方式,而被连接到处理器110或自身包括用于执行功能的处理器(图I中未示出)。进一步地,判定组件可以包括其他单元,并且,其例如包括用于接收和转送控制信息、数据以及写入或读取请求的不同接口。根据实施例的判定组件一般可以是连接到内部存储器和设备的各种接口的控制器、控制单元、微控制器等等。判定组件可以被配置为微处理器,诸如单片机元件、或作为芯片组、或至少包括用于提供用于算术运算的存储区域的存储器和用于执行算术运算的运算处理器的板。判定组件可以包括一个或多个计算机处理器、专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理器件(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)和/或已以用于执行一个或多个实施例的一个或多个功能的方式被编程的其他硬件组件。实施例将判定组件提供为在任何计算设备分布/数据存储介质上实施的计算机程序,其包括当被加载入设备时构成判定单元的程序指令。程序,也被称为程序产品,包括软件例程、构成“程序库”的程序片段、小应用程序(applet)和宏,该程序可以被存储在任何介质中,并且可以被下载到计算设备中。缓存140和存储150可以是易失性和/或非易失性存储器,并且它们可以是不同类型的。例如,缓存和/或存储可以存储计算机程序代码,诸如软件应用或操作系统、信息、数据、内容等以供中央处理单元或对应处理器执行与应用120的操作相关联的步骤。缓存和/或存储可以是例如随机存取存储器、硬盘、闪存、固态存储器(SSD)或其他固定数据存储器或存储装置。进一步地,缓存和/或存储或它的(它们的)一部分可以是可拆卸地连接到设备的可移除存储器。总线102和总线103可以是在组件之间传送任何类型的数据的任何类型的总线,并且它们可以是不同类型的。总线可以是在多个线上并行载送数据的并行总线、或以位串 行方式载送数据的串行总线、或使用并行和位串行连接两者的总线。因此,总线102和总线103可以是任何物理布置,包含提供数据的传送的不同连接和组件。尽管在图I中已经将计算设备描绘为一个实体,然而,可以以一个或多个物理或逻辑实体实现存储器。例如,可以将缓存和/或存储实现为跨多个计算设备的分布式(共享)存储装置,并且总线可以在计算设备内部或在计算设备之间传送数据。单元和功能可以是软件和/或软件-硬件和/或固件组件(被不可消除地记录在诸如只读存储器的介质上或在硬连线计算机电路中实施)。图2图示根据实施例的判定组件的功能。在该实施例中,判定组件通过测量特定块大小来确定是使用缓存还是直接存储到存储更有效率,即存储类型中的哪一个是更有效率的类型。块大小例如可以是512、1、2、4、......、1024kB。(块是写入和/或读取的单元)。在该实施例中,判定组件分别执行下述步骤以用于读取(输入)和写入(输出)。应当理解的是,它们可以几乎同时被执行和/或按照除下述的顺序外的另一个顺序被执行。在另一个实施例中,判定组件仅用于读取或写入而执行下述步骤,然后将结果用于读取和写入两者。然而,由于读取和写入是分开的任务,为读取和写入两者执行步骤具有I/O的总体性能是在计算设备中可获得的最有效率的优势。在图示的示例中,为了清晰起见,假设读取(或写入)的时间被用作判定因素来判定哪个是更有效率的。然而,并没有对用作判定因素的内容作出限制,并且其可以是不同因素的组合。例如,判定因素可以与使用诸如CPU资源的处理器资源有关(更有效率的方式将更少CPU资源用于相同量的工作或相同量的CPU资源执行更多工作)、或判定因素可以考虑时间和处理器资源使用两者。进一步地,使用计算设备的读取和/或写入操作的应用可以具有影响判定因素的需求。在实施例中,例如,可以通过向用户提供选择列表来给予用户选择判定因素的机会,然后使用用户的选择。判定组件取得第一块大小(步骤201),在步骤202中,从缓存读取该量,同时测量其花费的时间。然后,在步骤203中,直接从存储读取相同量,并且测量其花费的时间。接着,在步骤204中,判定单元选择更有效率的存储器类型,即在图示的示例中最快的一个,并且在步骤205中,将存储器类型与该块大小相关联用于读取。然后,在步骤206中,检查是否所有块大小均与存储器类型相关联。如果不是,则判定组件对于下一块执行上述内容,即在步骤201中继续。如果所有块大小均与存储器类型相关联,则它们准备好用于(步骤207)读取(输入)。在该实施例中,然后重复上面步骤以用于写入。换句话说,替代读取,在步骤202和203中执行写入。然后,结果可以是具有分别用于读取和用于写入的特定于块大小的存储器类型选择的判定表,用于读取的存储器类型与用于写入的相同或不同,如图I中所图
/Jn o该实施例的优势是当确定待使用的存储器类型时,根据其实际功能考虑所有组件、不同总线等。这具有进一步优势最小化处理器的负荷,从而生成了更少热量,以及需要更少能源。 在本发明的进一步实施例中,替代执行诸如测量时间的测量,判定组件获取系统参数,诸如存储器(即,缓存和存储)的大小、目前存在多少可用存储器、总线速度,并且使用该信息来为每一个块大小计算更有效率的存储器类型(经由缓存存储或直接存储)。在进一步实施例中,判定组件被配置成既测量又计算,并且将测量结果与计算结果比较来验证硬件。由验证硬件提供的优势是其帮助检测可能的故障,从而便于在任何更大故障发生之前进行故障校正。上面说明的测量/计算可以在打开电源时、以特定间隔、和/或当在计算设备中存在诸如操作系统在线更新、驱动更新、缓存管理软件更新、安装新的存储器板等的硬件或软件改变时执行。在另一个实施例中,在每次数据流开始时对由该数据流使用的块大小执行测量/计算。图3图示了在步骤301中,判定组件接收数据流的块大小的指示和关于数据流是要被读取还是写入的信息的情况。然后,在步骤302,判定组件使用接收的指示来从创建的表获取值,例如如在上面利用图2说明的,该值是“缓存”或“存储”。如果接收的块大小不是测试的块大小中的一个,即其不具有与之关联的存储器类型,则取决于实施方式,其被向上或向下舍入至下一块大小、或使用最接近的块大小。然后,在步骤303,将获取的存储器类型用于该数据流。例如,如果该数据流要被写入,则取决于在步骤302获取了哪一个,将该数据流从判定组件转送到缓存或存储。上面内容还应用到数据流的块大小的指示和关于数据流要被读取还是写入的信息经过判定组件,但是实际数据流不经过判定组件的实施方式。判定组件可以是对应用透明的。然而,图4图示了实施例,其中在块大小与对应存储器类型关联以用于读取/写入之后,在步骤401,判定组件确定最佳块大小,并且在步骤402,向应用通告该最佳块大小。通过使用在利用图2描述的过程期间获取的测量和/或计算结果来优选确定最佳块大小,并且该最佳是给出最好总体结果(例如,最好速度或最好性能)的块大小。因此,实施例提供了要被通告的动态最佳值,该值通过考虑计算环境和对其做出的改变的测量和/或计算来获取。通告这样的值提高了效率,这对于现有技术的硬编码通告的值的情况很少见,该现有技术的硬编码通告的值由基于开发者做出的估计,即是在其被硬编码时开发者的最好猜测。在图2至4中的上述步骤和相关功能没有绝对时间顺序,并且可以同时或按照与给出顺序不同的顺序执行该步骤中的一些。例如,可以在取得另一个块大小之前(步骤201和206)对于一个块大小执行读取和写入测量(步骤202-205)。还可以在步骤之间或在步骤内执行其他功能。还可以省略步骤中的一些或步骤中的一部分。例如,读取和/或写入数据的应用可以请求其自身的控制以读取和/或写入,在这种情况下,尽管数据流可以经由判定组件传递,然而,判定组件响应于该请求,不获取要被使用的存储器类型,即,然后跳过步骤302和303。进一步地,步骤中的一些或步骤中的一部分还可以被整合在一起或由对应步骤或步骤的一部分替代。例如,替代在步骤202和203中测量时间或除此之外,可以测量CPU的使用。对本领域技术人员应当显而易见的是,随着技术发展,可以以各种方式实现发明构思。本发明和其实施例并不限于上述示例,而是可以在权利要求的范围内变化。·
权利要求
1.一种用于计算环境的方法,所述方法包括 对于块大小确定使用缓存还是直接使用存储更有效率;并且 响应于具有所述块大小的数据流,将所确定的更有效率的方式用于所述块大小。
2.根据权利要求I所述的方法,其中所述确定进一步包括 对于特定块大小测量使用缓存还是直接使用存储更有效率; 对于每一个测量的块大小选择所述的更有效率的方式;并且 将所述块大小与所选择的方式关联。
3.根据权利要求I所述的方法,其中所述确定进一步包括 获取所述计算环境的系统参数,所获取的系统参数影响存储器使用的效率; 通过使用所获取的系统参数,对于特定块大小计算使用缓存还是直接使用存储更有效率; 对于每一个计算的块大小选择所述的更有效率的方式;并且 将所述块大小与所选择的方式关联。
4.根据权利要求2所述的方法,进一步包括 获取所述计算环境的系统参数,所获取的系统参数影响存储器使用的效率; 通过使用所获取的系统参数,对于所述特定块大小计算使用缓存和直接使用存储的效率; 将对应的测量结果与计算结果进行比较来验证在所述计算环境中的硬件。
5.根据权利要求2、3或4所述的方法,进一步包括 接收关于数据流的块大小的信息; 确定所述数据流的所述块大小对应于哪个测量的块大小;并且 将所关联的方式用于所述数据流。
6.根据权利要求2、3、4或5所述的方法,进一步包括 基于凭以执行所述选择的所述测量或计算结果,确定最佳块大小;并且 向应用通告所述最佳块大小。
7.根据在前权利要求中的任何一项所述的方法,进一步包括分别对于读取和写入执行所述步骤。
8.根据在前权利要求中的任何一项所述的方法,进一步包括基于读取所述块花费的时间和/或写入所述块花费的时间和/或用于读取所述块的处理器资源的使用量和/或用于写入所述块的处理器资源的使用量和/或通过处理器资源的特定使用读取和/或写入的数据量,来执行所述判定。
9.一种包括计算机程序代码的计算机程序产品,所述计算机程序代码被配置成当在设备上执行时,执行如权利要求I至8中的任何一项所述的方法。
10.一种设备,所述设备包括用于实现如权利要求I至8中的任何一项所述的方法的装置。
11.根据权利要求10所述的设备,所述设备包括所述缓存、所述存储和数据流所流经的组件,所述组件至少是用于基于对于块大小的所述的更有效率的方式将所述缓存或所述存储用于所述块大小的装置。
12.—种计算机组件,被配置成对于特定块大小测量使用缓存还是直接使用存储更有效率; 对于每一个测量的块大小选择所述的更有效率的方式; 将所述块大小与所选择的方式关联;并且 响应于具有所述块大小的数据流,将所确定的更有效率的方式用于所述块大小。
13.根据权利要求12所述的计算机组件,进一步被配置成测量读取所述块花费的时间和/或写入所述块花费的时间和/或用于读取所述块的处理器资源的使用量和/或用于写入所述块的处理器资源的使用量和/或通过处理器资源的特定使用读取和/或写入的数据量,并且基于对所述缓存和直接使用所述存储获取的测量结果来选择更有效率的方式。
14.根据权利要求12或13所述的计算机组件,所述计算机组件是控制器、控制单元、微控制器、单片机元件、芯片组或板。
全文摘要
为了提高运行应用的效率,确定使用缓存(140)还是直接使用存储(150)是特定于块大小地更有效率的(131);并且将确定的存储器类型用于具有对应块大小的数据流。
文档编号G06F12/08GK102971719SQ201180032435
公开日2013年3月13日 申请日期2011年6月21日 优先权日2010年6月29日
发明者绍博尔奇·绍卡希茨 申请人:图科塞拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1