使用bpram来布局和执行软件应用

文档序号:8287849阅读:433来源:国知局
使用bpram来布局和执行软件应用
【专利说明】使用BPRAM来布局和执行软件应用
[0001]背景
[0002]各计算机系统在它们被打开时都会经历引导阶段,该引导阶段为使用准备计算机并接管硬件对操作系统的控制。一般来说,硬件包括一些初始化该硬件的固件,诸如基本输入/输出系统(B1S)和扩展固件接口(EFI)。固件随后一般关注盘驱动器以标识要运行的主引导记录(MBR)或其他第一指令集。这些指令可调用引导加载器,该引导加载器随后加载并初始化操作系统(或潜在地提供操作系统的从其引导计算机系统的菜单)。类似地,一旦操作系统被加载,应用就也经历初始化阶段,在初始化阶段期间,与应用相关联的软件和数据模块被加载、存储器状态被(例如用资源或其他数据)初始化等等。
[0003]这些引导和初始化过程通常是耗时的。不仅复杂的硬件可花费时间来初始化并到达操作状态,而且软件也要花费时间来从盘加载并花费时间来运行以执行各种初始化任务。计算机系统的用户无法使用系统或应用,直到该过程完成,因此时间被浪费了。此外,在诸如将计算机从睡眠状态、低功率状态或休眠唤醒之类的其他时段期间,系统可执行相似的类引导过程,该类引导过程延迟了用户对计算机系统的使用。对于移动设备、游戏控制台、路由器和其他设备(它们被内部地实现为计算机系统,虽然消费者可能将它们看成为集成的消费者电子设备)而言,用于引导的时间可显著地降低该设备的可用性。
[0004]在标准操作系统中,诸如内核之类几乎不被更新的恒定代码以与用户应用代码相同的方式从传统驱动器中被读出。这导致小于优化引导时间,因为操作系统经由复杂的加载序列将其自身从硬盘驱动器或其他相对慢速的资源带入操作状态。即使使用现代的基于闪存的盘驱动器,用于加载软件代码并设置初始配置的读写数量也可消耗用户可察觉的时间量。这对于可涉及访问和加载许多库并随后用数据来初始化这些库所指定的存储器区域的应用而言同样正确。该数据中的大部分都是每次操作系统或应用加载时都相同的恒定数据。过去的技术已关注在现有的、字节不可寻址的硬盘驱动器上重新排列该数据的方式(该方式仍涉及可察觉的延迟),或关注在应用被用户请求之前尽早执行普通初始化序列(参见例如微软 ? WINDOWS? Prefetch 和 SuperFetch 特征)。
[0005]概述
[0006]本文中描述了通过以下方式来加速计算机系统引导时间和/或应用初始化时间的软件布局系统:将恒定数据和可执行代码移入非易失性的高性能存储器(例如,ReRAM或PCM)中,而将改变数据保留在易失性存储(诸如,DRAM)上。该系统确定操作系统或应用的哪些组件和方面是恒定的并且不遭受改变或遭受最少的改变。该系统从此信息构建高性能存储器ReRAM/PCM高速缓存以提供对这些被频繁使用的组件(包括内核)的更快速访问。结果是内核或应用代码和数据结构关于存储器取回具有高性能访问和执行时间。对于应用而言,该系统可执行类似的过程。软件应用还经历常见的启动序列来初始化可使用本文中描述的技术来预测和加速的过程数据结构、线程、资源等。在一些情况下,诸如在高性能高速缓存为字节直接可寻址的情况下,该系统甚至可直接从该高速缓存引导或执行。因此,该软件布局系统提供了更快的方式来为正常操作准备操作系统和应用,并降低了在初始化上所花的时间。
[0007]提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的概念选择。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
[0008]附图简述
[0009]图1是示出一个实施例中的软件布局系统的各组件的框图。
[0010]图2是示出一个实施例中的软件布局系统用于检查操作系统内核以标识要预布局在BPRAM中的代码和数据的处理的流程图。
[0011 ]图3是示出一个实施例中的软件布局系统用于从BPRAM初始化操作系统内核的处理的流程图。
[0012]图4是示出一个实施例中的软件布局系统用于检查应用以标识要预布局在BPRAM中的代码和数据的处理的流程图。
[0013]图5是示出一个实施例中的软件布局系统用于从BPRAM初始化应用的处理的流程图。
[0014]图6是示出一个实施例中的各种类型的存储与软件布局系统所使用的数据的关系的框图。
[0015]详细描述
[0016]本文中描述了通过以下方式来加速计算机系统引导时间和/或应用初始化时间的软件布局系统:将恒定数据和可执行代码移入非易失性的高性能存储器(例如,ReRAM或PCM)中,而将改变数据保留在易失性存储(诸如,DRAM)上。该系统确定操作系统或应用的哪些组件和方面是恒定的并且不遭受改变或遭受最少的改变。该系统从此信息构建高性能存储器ReRAM/PCM高速缓存以提供对这些被频繁使用的组件(包括内核)的更快速访问。例如,该系统可将内核数据结构和代码保持在非易失性和高性能ReRAM中,而将动态/改变数据保留在易失性DRAM存储器中。结果是内核或应用代码和数据结构关于存储器取回具有高性能访问和执行时间。
[0017]该系统可对应用执行类似的过程。软件应用还经历常见的启动序列来初始化过程数据结构、线程、资源等,这些启动序列可使用本文中描述的技术来预测和加速。例如,该系统可标识应用的启动序列中的引用几乎不改变的数据的各部分,并可将该数据高速缓存非易失性、高性能存储器高速缓存中,其中每次该应用启动时该数据都可被访问。在一些实施例中,该系统还以供快速转移到存储器中以使得内核或过程变得活跃的方式来对数据进行布局。例如,该系统可确定操作系统或应用在操作期间在存储器中的最终布局,将那个布局的图像存储在高性能高速缓存中,并随后在下一次操作系统或应用被选择启动时,该系统可使用直接存储器存取(DMA)或其他高性能复制技术来将预布局引导/初始化图像转移到存储器中以供执行。在一些情况下,诸如在高性能高速缓存为字节直接可寻址的情况下,该系统甚至可直接从该高速缓存引导或执行。因此,软件布局系统提供为正常操作准备操作系统和应用的更快方式并降低了在初始化上所花的时间。
[0018]如本文中所描述的,软件布局系统在两个概念阶段中操作:布局和启动。在布局阶段期间,该系统分析一个或多个操作系统或应用以确定操作系统或应用如何初始化其自身。该系统可使用本领域公知的各种静态和动态分析技术来分析二进制的可执行文件、存储器内数据、实况执行或其他信息以标识操作系统或应用在启动期间所使用的指令和数据。例如,MICROSOFT? WINDOWS?操作系统所使用的可移植可执行文件格式(PE)包含可被标记为只读或读/写的数据部分,并且该软件布局系统可使用此信息来将这些只读部分放置在ReRAM或另一高速缓存中。该系统还可跟踪历史改变信息来构建关于哪些指令或数据几乎不改变的图片。此几乎不改变的数据随后被定向用于从更快速的存储(诸如ReRAM)中加载。该系统创建描述分析的结果且提供软件指令和/或数据的布局图像或其他数据结构以供使用更快速的存储器来进行存储。
[0019]在启动阶段期间,该系统利用先前执行的布局工作来使得操作系统或应用的启动更快。这可包括定向B1S或其他启动指令以从ReRAM高速缓存直接访问初始化图像,或者可包括用于使用DMA或其他快速转移方法来将准备执行的图像从高速缓存复制到易失性存储器中以进行传统执行的指令。由于与加载许多图像碎片相比,这样的转移更快,因此存在初始化过程的显著加速以及关于应用何时准备好被用户使用的时间方面的降低。
[0020]在任何现代操作系统中,数据要么是可变得要么是不可变的。诸如应用的堆内包含的数据之类的数据通常是可变的,因为它在应用执行期间改变。可执行图像(软件代码)和全局常量是不可变数据的示例。目前,可变和不可变数据两者都被保持在耐久存储(诸如闪存或硬盘驱动器)中,并且在执行期间被高速缓存在DRAM中使得它对应用而言是可访问的。硬盘驱动器和闪存通常是字节不可寻址的,因此执行通常无法从这样的设备直接进行。这是为什么这样的数据首先被复制到DRAM(其是字节可寻址的)原因,在DRAM中可通过执行软件代码来执行并访问这样的数据。
[0021]一般来说,目前的存储器分层结构在慢速、持久、批量存取技术和快速、字节可寻址、非持久技术之间具有区分。字节可寻址的持久存储器技术(诸如,相变存储器、ReRAM或忆阻器)通过提供即字节可寻址又持久的存储来提供桥接DRAM和持久存储之间的间隙的存储器。在本文中将这些技术称为BPRAM(字节可寻址的持久随机存取存储器)。这些不同的存储器技术全部都具有变化的性能以及耐久性(耗损)保证,但它们引入了可在现代计算机中使用的一种新型存储器。使用BPRAM来存储不可变对象可改善性能、释放DRAM并节省功率,并且该软件布局系统标识应用或操作系统内可被迀移到BPRAM中以得到这些优点的数据结构。
[0022]由对BPRAM的这种使用所引入的一个新的考虑是耗损。由于在耗损之前向BPRAM设备写入的次数通常远小于DRAM或硬盘,因此通常需要关注以确保该数据不会由于该技术耗损而被丢失。因此,对BPRAM的最简单使用是首先使得该BPRAM在与DRAM并排的存储器总线上可用。接着,可考虑仅将应用可执行代码放在可用的持久存储器上。不是从较慢速的批量存储中提取应用二进制代码并将这些二进制代码高速缓存在易失性存储器中,这些可执行代码可被简单地存储在BPRAM中并直接从BPRAM执行。由于可执行代码与应用数据相比被不频繁得多地更新,因此可以肯定BPRAM将具有长生存期。一个问题可能是执行将变慢,因为BPRAM通常比DRAM更慢,然而CPU预取和高速缓存可隐藏大多数差异,并且BPRAM可比硬盘驱动器快得多。BPRAM中高速缓存的可执行代码可包括任何类型的二进制码,包括应用、二进制代码、动态链接库(DLL)或构成操作系统的组件。
[0023]除了简单地高速缓存可执行代码外,计算环境的其他部分也可被高速缓存在BPRAM中。例如,当代码被编译时,被定义为“常量”或“只读”(如用可执行格式来标记或通过另一种方法来确定)的数据可被放置在BPRAM中而非被保持在DRAM中。使用大量静态数据来进行计算的应用可释放DRAM并改为将那些数据结构放置在BPRAM中。
[0024]最后,运行时可被设计成将数据结构迀移到BPRAM中以及将数据结构从BPRAM中迀移出,这取决于它们的存取模式。例如,散列表可真正地被表示成状态机,其中该散列表被频繁地更新、随后被读取者排他地访问、并随后被再次更新。这些类型的存取模式可意味着数据结构可在
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1