CN102687113A - 程序、控制方法以及控制装置 - Google Patents

程序、控制方法以及控制装置 Download PDF

Info

Publication number
CN102687113A
CN102687113A CN2010800517732A CN201080051773A CN102687113A CN 102687113 A CN102687113 A CN 102687113A CN 2010800517732 A CN2010800517732 A CN 2010800517732A CN 201080051773 A CN201080051773 A CN 201080051773A CN 102687113 A CN102687113 A CN 102687113A
Authority
CN
China
Prior art keywords
page
leaf
descriptor
fault
shared
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2010800517732A
Other languages
English (en)
Inventor
桥本健一
增渕友裕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ubiquitous Corp
Original Assignee
Ubiquitous Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ubiquitous Corp filed Critical Ubiquitous Corp
Publication of CN102687113A publication Critical patent/CN102687113A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及能够缩短启动时间的程序、控制方法以及控制装置。在装配了存储器管理单元(MMU)的计算机系统中,针对MMU的表改写页表项,以便针对软件的运行所需要的页,在全部的页中发生页面错误。启动时,对于针对要访问的RAM产生的页面错误,执行已保存的存储器映像的页面单位的读入。通过进行这样的读入,不进行不需要的页的读入,能够缩短相应量的启动时间。本发明可以用于个人计算机或具备嵌入式计算机的电子设备。

Description

程序、控制方法以及控制装置
技术领域
本发明涉及程序、控制方法以及控制装置,特别涉及适合于控制软件的启动的程序、控制方法以及控制装置。
背景技术
在个人计算机中,使OS(Operating System)启动,直到使希望的软件工作为止需要花费数分钟的启动时间。作为使其高速启动的方法,存在称为休眠(hibernation)的方法(例如参照专利文献1)。
在专利文献1中,记载了把启动后的CPU(central processing unit)、I/O(input/output)寄存器、RAM(Random Access Memory)映像存储在硬盘驱动器(HDD)或闪速存储器中。并且,记载了在下次启动时,恢复所存储的RAM映像,之后,再设定CPU、I/O寄存器。在专利文献1中提出了通过如此启动使OS启动高速化。基于该提案的被称为休眠的方法已经在个人计算机中应用。
此外,在嵌入式计算机,例如在电视接收器、硬盘录像机这样的电子设备中嵌入的计算机中也应用了休眠的方法。
现有技术文献
专利文献
专利文献1:日本特开2005-149225号公报
专利文献2:日本特开2007-334383号公报
发明内容
发明要解决的课题
当将采用休眠使OS启动的情况与通常那样启动OS的情况相比时,采用休眠使OS启动能够更加高速地启动。但是,随着RAM的容量的增加,应该保存的RAM映像的大小也增加,在启动时,该RAM映像的展开时间也增加。结果,伴随RAM的大容量化,高速启动变得困难。
此外,个人计算机CPU的性能也比较高,所以即使RAM映像的大小增加,也能确保处理该RAM映像的性能。但是,在嵌入式计算机的情况下,很多时候使用CPU的性能比较低的计算机。因此,在为嵌入式计算机时,如果RAM映像增加,则即使使用休眠的方法,启动时的速度也会降低。即,在为嵌入式计算机时,由于RAM映像的增加导致的速度降低更加显著地体现。
此外,虽然提出了通过压缩RAM映像来减小RAM映像的大小,但是在启动时需要展开的处理。考虑到该展开处理给CPU带来的负荷、展开处理所需要的时间,不是在启动高速化这一方面有效的方法。
考虑到该情况,在专利文献2中提出了在休眠的全部映像的传输完成之前开始执行OS的方法。但是,在该方法中需要装配特别的硬件,并预先确定先行传输的页,因此存在由于该特别的硬件导致成本相应升高的问题。
本发明是鉴于这样的状况而提出的,其能够缩短启动时间。
用于解决课题的手段
作为本发明的一个方面的程序,用于具有管理存储器的功能的控制装置中,包含以下步骤:针对预定的软件的运行所需要的页改写页表项,以便在全部页中发生页面错误;在所述软件启动时,通过所述页表项发生页面错误,依次读出发生了该页面错误的页,如下这样执行处理:当所述页是由多个任务共享的共享页时,在管理所述共享页的页描述符中作为属性信息而包含表示对于发生了所述页面错误的页是否已经完成了读入的标志,在对于已有的页新确保了所述共享页的情况下,重写与该新确保的所述共享页对应的页描述符,以使对于确保了新确保的所述共享页的虚拟存储器地址也发生页面错误。
可以在所述预定的软件启动后改写所述页表项,将其启动时的数据、程序代码、表、页面错误处理程序、中断向量、以及寄存器存储在所述存储器中。
可以使所述存储器中的存储作为改写对象的所述页表项的存储器是RAM,存储要依次读出的所述页的存储器是非易失性存储器。
可以使嵌入式的计算机读入该程序。
作为本发明的一个方面的控制方法,是具有管理存储器的功能的控制装置的控制方法,包含以下的步骤:针对预定的软件的运行所需要的页改写页表项,以便在全部页中发生页面错误;在所述软件启动时,通过所述页表项发生页面错误,依次读出发生了该页面错误的页,当所述页是由多个任务共享的共享页时,在管理所述共享页的页描述符中作为属性信息而包含表示对于发生了所述页面错误的页是否已经完成了读入的标志,在对于已有的页新确保了所述共享页的情况下,重写与该新确保的所述共享页对应的页描述符,以使对于确保了新确保的所述共享页的虚拟存储器地址也发生页面错误。
作为本发明的一个方面的控制装置,是具有管理存储器的功能的控制装置,具有:针对预定的软件的运行所需要的页改写页表项,以便在全部页中发生页面错误的改写单元;在所述软件启动时,通过所述页表项发生页面错误,依次读出发生了该页面错误的页的读出单元,当所述页是由多个任务共享的共享页时,在管理所述共享页的页描述符中作为属性信息而包含表示对于发生了所述页面错误的页是否已经完成了读入的标志,在对于已有的页新确保了所述共享页的情况下,重写与该新确保的所述共享页对应的页描述符,以使对于确保了新确保的所述共享页的虚拟存储器地址也发生页面错误。
本发明的一个方面的程序、控制方法以及控制装置,针对预定的软件的运行所需要的页改写页表项,以便在全部页中发生页面错误,在软件启动时,通过页表项发生页面错误,依次读出发生了该页面错误的页。另外,进行控制,从而当所述页是由多个任务共享的共享页时,在管理所述共享页的页描述符中作为属性信息而包含表示对于发生了所述页面错误的页是否已经完成了读入的标志,在对于已有的页新确保了所述共享页的情况下,重写与该新确保的所述共享页对应的页描述符,以使对于确保了新确保的所述共享页的虚拟存储器地址也发生页面错误。
发明效果
根据本发明的一个方面,能够缩短OS等的启动时间。
附图说明
图1表示应用本发明的信息处理装置的一个实施方式的结构。
图2表示MMU的模型。
图3用于说明描述符。
图4用于说明描述符。
图5用于说明页读入标志。
图6用于说明物理页的读入。
图7用于说明物理页的读入。
图8用于说明物理存储器映射。
图9是用于说明启动处理的流程图。
图10是用于说明启动处理的流程图。
图11是用于说明启动处理的流程图。图12是用于说明启动处理的流程图。
图13是用于说明启动处理的流程图。
图14是用于说明启动处理的流程图。
图15是用于说明启动处理的流程图。
图16是用于说明空闲时间时的处理的流程图。
具体实施方式
以下,参照附图说明本发明的实施方式。
首先,说明本发明的概要。本发明是用于使在装配了存储器管理单元(Memory Management Unit(以下简写为MMU))的CPU(central processingunit)上运行的OS(Operating System)或应用程序等软件高速启动的方法。
作为高速启动对象的软件,一度通过通常的方法启动,该状态下的RAM(Random Access Memory)映像被保存在非易失性存储器等中。在将RAM映像保存在非易失性存储器等中时改写MMU的表,变更为在全部的页中发生页面错误。在成为对象的软件中准备了页面错误处理程序,在发生了页面错误时,从非易失性存储器仅加载产生了该页面错误的页。
在启动任意的软件,执行程序代码,或者为了读出该软件的运行所需要的数据而访问了RAM时,每次发生页面错误,把需要的页从非易失性存储器逐次加载到RAM中。由此,与现有的休眠启动不同,不需要预先把全部RAM映像从非易失性存储器加载到主RAM中,能够仅加载运行需要的最小限度的RAM映像。因此,能够高速地启动并运行希望的软件。
本申请人确认,通过使用本发明能够把以往需要数十秒~数分钟的OS或软件(以下简称为软件)的启动时间缩短到数秒程度。以下具体地说明。
(信息处理装置的结构)
图1表示采用本发明的信息处理装置的一个实施方式的结构。采用本发明的信息处理装置当然可以用于个人计算机(PC),还可以用于具有嵌入式计算机的装置。作为包含嵌入式计算机的装置,具有电视接收器、硬盘录像机这样的电子设备。在此,以针对硬盘录像机应用本发明时为例进行说明。
图1表示作为应用本发明的信息处理装置的硬盘录像机的结构。图示的硬盘录像机100具备:CPU101、RAM102、ROM(Read Only Memory)103、非易失性存储器104、MPEG(Moving Picture Experts Group)编码/解码部105、调谐器106、HDD接口107、HDD108、I/O部109、启动模式切换部110。
CPU101控制硬盘录像机100的各部。该CPU101装配了存储器管理单元(Memory Management Unit(以下记载为MMU)),具有将RAM102划分能够以小单位(页)管理的机制。在此,设MMU131包含在CPU101中来继续说明,但还可以为MMU131不被包含在CPU101中,而在外部具备的结构。此外,对于MMU131的形式没有特别的限制,但是成为能够以页单位设定许可/禁止访问的属性,在访问了禁止访问的页时,能够发生页面错误的例外的结构。另外,假设CPU101的MMU131将4千字节(以下记载为4KB)作为一页管理来继续说明。
RAM 102能够由SRAM(Static Random Access Memory)或DRAM(Dynamic Random Access Memory)等构成。RAM102具有CPU101使用的主存储装置的功能,如果具有这样的功能,则能够作为RAM102来使用。
ROM103是FLASH ROM(快闪只读存储器)或Mask ROM(屏蔽式堆读内存)等只读存储器。ROM103存储OS或应用程序软件,只要能够进行这样的存储,在本发明中可以使用任何种类的ROM。
非易失性存储器104是即使切断硬盘录像机100的电源,仍保存所存储的内容的存储器。例如能够由FLASH ROM或带有备份功能的SRAM、DRAM等构成。
非易失性存储器104在后述的软件启动后,存储在RAM102中存储的软件的存储器映像。因此,优选使非易失性存储器104的容量为RAM102的容量以上的容量。但是,在想要通过数据压缩等缩小数据时,非易失性存储器104的容量可以在RAM102的容量以下。此外,非易失性存储器104还可以兼用作HDD108(还可以将HDD108作为非易失性存储器108使用)。
MPEG编码/解码部105进行动画的压缩/展开。经由调谐器106提供动画。调谐器106根据用户的指示,从多个节目(动画)中选择一个动画,提供给MPEG编码/解码部105。MPEG编码/解码部105根据需要,经由HDD接口107向HDD108提供来自调谐器106的数据,或者经由HDD接口107接收来自HDD108的数据。此外,此时根据需要来执行编码或解码的处理。
I/O部109是为了CPU101读取启动模式切换部110的状态而设置的。以下说明的软件具有用于取得高速启动映像的通常启动模式、作为取得高速启动映像后的启动模式的高速启动模式。在这些启动模式的切换中使用I/O109和启动模式切换部110。为了通常启动模式和高速启动模式的切换,能够通过开关构成启动模式切换部110。此外,为了通常启动模式和高速启动模式的切换,也可以根据来自引导加载程序(Boot-loader)等的命令来切换启动模式切换部110。
此外,一旦生成高速启动的映像,则可以不需要通常启动模式,所以可以仅安装高速启动模式,不需要通常启动模式与高速启动模式的切换。在采用这样的结构时,也可以省略I/O部109和启动模式切换部110。
(MMU)
图2表示CPU101装备的MMU131的模型。图2所示的MMU131是32位(bit)级别以上的CPU101装备的模型。MMU131的结构、物理地址、虚拟地址、在各表的索引中使用的位数、表的段数等依赖于CPU101的制造商,但是不特别依赖于制造商的架构。在此,为了说明的方便,以32位等的具体的数字为例进行说明,但该数值不是表示本发明的应用范围的限定。
MMU131在指示最终的物理页的表内项的属性中实现许可访问或相当于许可访问的功能,至少具有在不许可访问的情况下进行了访问时,能够产生页面错误或相当于页面错误的例外处理的功能。
MMU寄存器200是安装在MMU131中的寄存器。在该寄存器中代入1级描述符表201的起始地址。1级描述符表201是设置在存储器上的1级存储器表。在物理地址空间为32位时,为了指示一个地址使用32位即4字节,所以1级描述符表201的大小通过12位空间=4KB空间×4字节成为16KB的大小。
虚拟地址202表示作为1级存储器表的索引而使用的虚拟地址的31位至20位。VA表示Virtual Address(虚拟地址)。当向预定的虚拟地址访问时,从1级描述符表201的起始地址开始,把虚拟地址的31位至20位作为索引,访问1级描述符203。
在物理地址空间为32位的CPU101时,为了表示一个地址使用32位即4字节,所以1级描述符的地址成为以下那样的式子。
1级描述符203的地址=1级描述符表201的起始地址+虚拟地址202(VA[31:20])×4
1级描述符203是由指示2级描述符表204的起始地址的指针和属性构成的描述符。从2级描述符表204的起始地址开始,把虚拟地址的19位至12位作为索引,访问2级描述符206。
在物理地址空间为32位的CPU101时,为了表示一个地址使用32位即4字节,所以2级描述符的地址成为以下那样的式子。
2级描述符206的地址=2级描述符表204的起始地址+虚拟地址205(VA[19:12])×4
2级描述符206是由表示4KB的物理页207的指针、和属性构成的描述符。物理页207是最终从虚拟地址变换为物理地址后的1页的物理存储器。通过虚拟地址208(VA[11:0])指定物理页207的4KB内的地址。
图3是1级描述符203、2级描述符206的一例。图3中的描述符只不过是一个例子,不表示本发明依赖于在这样的一例中表示的特定的CPU101或架构。
基地址301是指示下一个表或物理页的起始地址的指针。属性302至304分别是表示可/不可执行、特权模式/用户模式这样的属性的属性位。访问许可位305是表示是否许可针对该描述符表示的物理页的访问的位。当访问在该访问许可位305中设定为禁止访问的物理页时,一般执行被称为页面错误的例外处理,即中断处理,这种机构是必要的。因此,虽然不依赖于CPU101的架构,但需要在CPU101中配备页面错误、或相当于页面错误的功能。
在Linux或Windows(注册商标)等OS中,一般存在被称为共享存储器的概念(功能)。在各个任务间存在共用的存储器(在Linux等中意味着以最小单位分割的页,以下记载为页),具有可以从各个任务空间访问该相同的页(共享页)的机制。
为了使用共享页的功能并且实现高速启动,需要也可以应对对于已有的共享页、即其它任务指示的页新确保了共享页的情况。并且,通过将发生页面错误导致的动态读入的对象扩展到共享页,对于以往全部需要简单的事前读入的共享页,也能够进行动态读入,可以实现更高速的启动。并且,共享页也能够设为基于页面错误的动态加载的对象,结果,可以进一步改善软件的启动时间。
共享页的概念,作为一般的OS的存储器管理功能来实现,因此,不特别依存于OS或制造商等。因此,以下说明的实施方式也能够应用于一般的OS的存储器管理功能,不依存于OS的存储器管理功能而被限定。
图4表示了页描述符表和页描述符。存储了页描述符401-1至401-N的表是页描述符表402。在以下的说明中,在不需要单个区别页描述符401-1至401-N的情况下,简称为页描述符401。关于其它部分也同样地记载。
页描述符401例如是用于存储图2所示的物理页207的属性的页描述符。属性的信息依存于OS等,在应用本发明时,对于存储的属性的信息没有限制。存在与各物理页207对应的一个页描述符401。通常,与多个物理页、例如图6(后述)所示的物理页207-0至207-n分别对应的页描述符401-1至401-N,在页描述符表402内按照页顺序排列配置。
在图5中,页描述符的属性信息501-1至501-N分别表示页描述符401-1至401-N的属性信息。一般,属性信息501依存于OS等。在本实施方式中,在这些属性信息501中追加页读入标志502。页读入标志502是表示通过基于页面错误的动态读入,对于发生了该页面错误的页是否已经完成了读入的标志。(物理页)
图6模拟地表示了在RAM102(图1)上排列了物理页207的状态。在RAM102中,从物理页207-0开始按顺序直到物理页2-7-n排列了1页的物理页207。在装备了MMU131的CPU101上运行软件时,像这样以4KB至64KB为单位,作为1页来管理1页的物理页207的情况较多。
图7说明在软件为预定的运行状态时的物理页的使用状况。在图7中,记载了数字的页是已被使用的页,没有记载数字的页表示没有被使用的页。软件使用的程序代码或数据如图6所示,即使使用整个区域,在按照某个单位时间观察软件的状态时,很多时候如图7那样被使用。即,具有使用的页和未使用的页,并非使用全部的页。
在该软件为预定的运行状态时,使用物理页207-0、物理页207-2、物理页207-4、物理页207-5、物理页207-9、物理页207-16以及物理页207-18。即,如图6所示,在RAM102中,从物理页207-0开始按顺序直到物理页207-n为止排列了1页的物理页207,但是,当预定的软件为预定的运行状态时,并非使用全部的页,而如图7所示仅使用多个页。
在通过现有的休眠启动进行启动时,在软件运行之前,如图6所示,在从物理页207-0开始到物理页207-n依次进行读出后恢复运行开始,成为预定的运行状态。但是实际上,该软件为了成为预定的运行状态,如图7所示,仅读出预定的多个物理页207即可。因此,在本发明中,通过如后述那样控制读出,如图7所示,仅读出需要的物理页207。
在通过现有的休眠启动进行启动时,如图6所示从物理页207-0开始依次进行读出,换句话说,也读出不需要的物理页207,所以读出需要花费时间,结果,有时预定的软件(也包含OS等)的启动变得缓慢。但是,根据本发明,如图7所示,因为仅读出需要的物理页207,所以能够缩短读出花费的时间,能够使预定软件(也包含OS等)的启动加快。
图8表示软件的物理存储器映射。以下说明的处理依赖于CPU101或OS,如果安装了这些功能,则对结构或存储器配置没有限制,并非表示仅在以下的说明中采用本发明。
非易失性存储器104是即使切换电源也保存存储内容的存储器。在图8所示的例子中,作为非易失性存储器104对FLASH ROM进行了映像。非易失性存储器104被映射到主存储器上,但是即使切断电源也保存内容,并且具备RAM102以上的容量。但是,可以应用本发明的非易失性存储器104未必需要经由I/O的访问等映射到存储器映射上,对架构没有限制。
数据601是程序代码602使用的能够读写的数据区域。把数据601作为物理页207分割为某个特定的大小来进行存储。数据601需要能够读写,所以优选放置于RAM102上。
程序代码602表示要启动/执行的希望的程序。在一般的个人计算机中安装了Windows(注册商标)或Linux这样的OS,在为在该OS上运行的软件时,所谓程序包含该OS以及软件。把程序代码602作为物理页207,分割为某个特定的大小来存储。将该程序代码602放置在RAM102或ROM103上。
MMU表603表示图2所示的1级描述符表201以及2级描述符表204。页面错误处理程序604,是用于当MMU131的2级描述符206为禁止访问属性,并且发生了页面错误时,经由中断向量进行例外处理的程序。在此,与程序代码602区分地记述了页面错误处理程序604,但有时也包含在程序代码602中。
中断向量605是一般的CPU具有的中断向量。在发生了页面错误时,程序代码跳转到该中断向量内的页面错误,结果,调用页面错误处理程序604。
与数据601、程序代码602、MMU表603以及中断向量605的逻辑地址对应的物理地址可以映射到任意地址。
映像保存程序606是用于在启动希望的程序后,在希望的状态下把存储器映像保存在非易失性存储器104中的程序。映像保存程序606的逻辑地址和物理地址需要映射到同一地址。
映像恢复程序607是用于根据需要以物理页为单位从非易失性存储器104读入并恢复通过映像保存程序606的处理而保存的物理存储器映像,并且,从非易失性存储器104向对应的物理页读入并恢复数据601或程序代码602的程序。需要把映像恢复程序607的逻辑地址和物理地址映射到同一地址。
引导加载程序608是在接通电源或复位后最初启动的引导加载程序。引导加载程序608主要进行启动所需要的最低限度的I/O的初始化。软件具有这样的结构。
(软件的动作)
然后,说明应用了本发明的软件的动作。首先说明概要,然后详细地说明。根据本发明,可以利用软件的局部性(locality)来高速启动软件。在软件中还包含OS等。例如假设在具备容量为4GB的RAM的硬件上使预定的软件运行。假设该预定的软件的程序以及数据的容量的合计值为4GB。一般,软件具有各种模式和功能,仅由预定的单一功能使用全部4GB容量的可能性极低。
例如,软件在启动后在特定的状态下等待来自用户的按键输入。一般在硬件复位后启动引导加载程序,该软件启动,然后成为等待来自用户的按键输入的状态。在采用作为已知技术的休眠使该软件高速启动时,作为生成存储器映像的准备,在等待来自用户的按键输入的状态下保存CPU或各I/O的寄存器,把程序代码和数据的合计4GB存储在任何的非易失性存储器中。在启动时,相反地,并不进行通常的启动过程,而是展开4GB的存储器,恢复CPU和I/O寄存器,返回到按键输入的处理。
在上述软件中,考虑“等待来自用户的输入”这样的状态。在该状态下重复进行按键输入处理,与这样的按键输入所涉及的处理有关的程序代码或数据比较小。本发明使用这样的原理实现高速启动。动作大致分为以下种类。
(A)在通常启动模式下启动OS或希望的软件,使该软件处于希望的状态。
(B)启动映像保存程序,通过该启动后的映像保存程序,在为了禁止对MMU131的全部页表进行访问而把预定的信息改写为表示禁止访问的信息后,把上述(A)的存储器映像保存在寄存器中然后结束。
(C)在下一次以后,通过设为高速启动模式,在(A)希望的状态下启动。
在实现这样的高速启动时,作为基本的准备,如通常那样启动软件,使该软件成为希望的状态,然后保存存储器映像或寄存器。在高速启动时,与休眠启动不同,不是将全部的存储器映像在主存储器中展开,而是根据需要,把实际上所使用的存储器、即仅一部分程序代码或数据逐渐展开。
作为逐渐将程序代码或存储器在主存储器中展开的方法,作为本实施方式举出使用CPU具有的存储器管理单元(MMU131)的例子来进行说明。有时OS也使用MMU131,但是在OS使用前,应用了本发明的软件复原,OS不关心应用了本发明的软件操作了MMU131。
具体地说,在保存存储器映像之前,改写MMU131的表的内容,将全部的页设定为禁止访问。此外,应用了本发明的软件还具有赋予已将上述页设为禁止访问的标记(mark)的功能。
假设希望的软件在OS上运行,该OS使用MMU131的情况也相同。在高速启动时,仅MMU131的表以及CPU的寄存器先行被恢复。然后,返回生成存储器映像后的地址。MMU131的表被设定为全部禁止访问,所以在跳转到返回地址时产生页面错误。数据访问时也相同。处理页面错误的页面错误处理程序604根据发生了页面错误的地址计算页,并且,应用了本发明的软件检查已标注的标记,从非易失性存储器104向主存储器(例如RAM102)读入该页,把MMU131的表写回改写前的原始状态。
通过重复这样的处理,即使是大容量的存储器映像,为了恢复到希望的状态仅读入最低限度的存储器映像即可,能够高速启动。
(动作的细节)
如上所述,根据本发明,与通常的启动相比能够将希望的软件高速地启动到某状态。当大致划分进行该高速启动的过程时,为了方便记载,分为(A)、(B)、(C)三类。在参照流程说明之前对(A)、(B)、(C)做进一步说明。(A)、(B)的一系列的流程是如果执行一次,则不必每次进行的处理。通常,通过从(C)开始执行,能够进行高速启动。
(A)通常启动
(A-1)把启动模式切换部110设定为通常启动模式,通过通常的方法启动OS或希望的程序。
(A-2)在启动希望的程序后,操作软件来使软件成为希望的状态。在高速启动时,在该状态下启动。
(B)状态的保存
(B-1)根据某个按键或命令等启动映像保存程序606。对与该启动有关的启动方法没有特别的限制。
(B-2)映像保存程序606在下次以后想要高速启动的状态下,保存存储器映像和寄存器。具体地说,映像保存程序606把MMU131的表全部设定为禁止访问状态,把该时刻的数据601、程序代码602、MMU表603、页面错误处理程序604、中断向量605以及寄存器类保存在非易失性存储器104中。
(C)高速启动
(C-1)将启动模式切换部110设定为高速启动模式。引导加载程序608判断启动模式,在为高速启动模式时,调用映像恢复程序607。映像恢复程序607使映像保存程序606所保存的MMU表603、页面错误处理程序604、中断向量605恢复。
(C-2)返回即跳转到在B-1的处理中启动了映像保存程序606后的地址。因为MMU131全部被设定为禁止访问状态,所以在每次访问程序代码602或数据601时,在对应的地址产生页面错误,调用页面错误处理程序604。
(C-3)页面错误处理程序604从非易失性存储器104中读出一页的对应的物理页207,使MMU131复原。
(C-4)页面错误逐个发生,在成为A-2的状态之前持续发生必要的页面错误。
(C-5)读入物理页207直到成为A-2状态为止。在该处理中读入的物理页207还依赖于执行的软件或其状态,但是极其少,与通过现有的休眠技术进行的那样读入全部的物理页207相比,能够显著缩短启动时间。
参照图9至图11的流程图,进一步说明上述(A)、(B)、(C)的各动作。
图9的流程图相当于上述(A)、(B)的处理。即,主要是与从接通电源到保存映像的处理有关的流程图。在步骤S101中,接通硬盘录像机100(图1)的电源,或者发生复位来启动系统。
在步骤S102中,启动引导加载程序608(图8)。在该步骤S102启动的引导加载程序608为了运行OS或希望的软件,假设进行最低限度的硬件的初始化,或者根据需要把ROM103或HDD108中存储的软件传输到RAM102的处理,只要是能够执行这样的处理的引导加载程序即可。引导加载程序608依赖于系统,但并非是必须的。因此,根据系统有时省略该步骤S102。
在步骤S103中,检查启动模式切换部110的状态,切换通常启动模式或高速启动模式的迁移(判断通常启动开关是否为开(ON))。在启动模式切换部110为通常启动模式时,处理前进到步骤S104,在为高速启动模式时前进到步骤S161(图12)。
在步骤S103中,当判断为通常启动开关为开(ON)时,因为在通常启动模式下启动,所以把通常启动标志设为开(ON)。在把通常启动标志设为开(ON)时,处理进入到步骤S105,如果是装配了OS的系统,则启动OS。在为一般的系统时,在启动OS时对MMU131进行初始化,生成图2的MMU131的表。在本发明中,OS的装配不是必须的,但假设在没有装配OS时需要进行MMU131的初始化。此外,即使在装配了OS时,在OS的种类等方面不存在限制。
在步骤S106中,启动想要高速启动的希望的软件。在步骤S107中,启动的软件运行。该处理相当于上述的A-2的处理。使软件迁移到与通过高速启动启动后的状态相同的状态。例如,假设在希望的软件中存在多个模式,若要以其中的某个特定的模式高速启动,则操作软件迁移到该模式。例如,在为硬盘录像机100时,具有预约的模式、再生的模式、设定的模式等,但在用户频繁地使用再生的模式时,迁移到再生模式。
在步骤S108中,判断是否开始了映像保存程序606(图8)的处理。该处理相当于上述的B-1的处理。通过命令或按键操作、开关等,开始映像保存程序606的处理。对该映像保存程序606的执行单元没有限制。在步骤S108中判断为没有开始映像保存程序606(图8)的处理时,处理返回到步骤S107,重复这以后的处理。即,此时继续软件的运行。
另一方面,在步骤S107中判断为已经开始了映像保存程序606(图8)的处理时,换句话说,在判断为软件的运行结束时,处理前进到步骤S109。以下的步骤S109至S117的处理相当于上述B-2的处理。此外,步骤S109至步骤S117的处理是映像保存程序606执行的处理。
在步骤S109中,保存图1所示的I/O部109的寄存器。基本上取得设定的值并保存。关于I/O,如果不是能读取全部寄存器的形式的I/O,需要单独地应对。I/O的种类或形式是任意的,特别是在应用本发明方面没有限制。
在步骤S110中,保存CPU101的寄存器。基板上保存CPU101的全部寄存器。CPU101和寄存器的种类是任意的,特别在应用本发明的方面没有限制。
在步骤S111中进行地址空间的切换。CPU101通常在虚拟地址模式下工作。该模式从虚拟地址模式迁移到物理地址模式。因为从虚拟地址模式向物理地址模式的迁移方法依赖于MMU131的架构,所以在应用本发明的迁移方法中没有限制。此外,在从虚拟地址模式迁移到物理地址模式时,因为地址空间变化,所以在步骤S111的处理中,逻辑地址和物理地址需要映射到同一地址空间。
在步骤S112中,执行缓存清空(cache flush)。CPU101装配TLB(TranslationLook-aside Buffer)、一次高速缓冲存储器、二次高速缓冲存储器,在它们有效时,需要清空TLB以及高速缓冲存储器。这是因为,在下面的步骤S113中需要改写放置在RAM102上的MMU表603的内容,需要在全部的RAM102中反映在高速缓冲存储器中存储的数据。该步骤S112中的缓存清空的处理,根据需要来进行,根据情况也可以省略。
在步骤S113中,把MMU131的MMU表603改写为禁止访问全部的物理页207的信息。将在后面参照图10的流程图说明该步骤S113中的MMU表改写处理。
在步骤S113中,当改写了MMU131的MMU表603时,处理前进到步骤S114。在步骤S114中执行页描述符的初始化处理,关于该处理,参照图11的流程图在后面进行说明。
在步骤S115中,执行缓存清空。CPU101装配TLB、一次高速缓冲存储器、二次高速缓冲存储器,在它们有效时需要清空TLB以及高速缓冲存储器。这是为了可靠地向RAM102反映在前级的步骤S113的处理中改写的MMU131的MMU表603的内容。该步骤S115的缓存清空的处理,根据需要而执行,根据情况也可以省略。
在步骤S116中,对于非易失性存储器104,将RAM102的全部容量的内容全部保存。非易失性存储器104的相对于RAM102的地址的相对的地址位置需要一致。例如,假定把RAM102的物理地址从0x10000000映射到0x1fffffff。此时,例如需要针对非易失性存储器104,根据从0x40000000到0x4fffffff的地址,读入数据。
在该例子时,非易失性存储器104的相当于RAM102的地址的偏移为0x30000000,所以即使是针对RAM102的地址,仅通过相加0x30000000的偏移,就能够变换为非易失性存储器104内的地址。未必需要把非易失性存储器104映射到存储器映射上。只要能够以相加了上述偏移后的地址为关键字(key)进行读入即可。此外,针对非易失性存储器104的保存方法依赖于架构,但在应用本发明方面该保存方法没有限制。
在步骤S117中,结束映像保存程序606的处理。通过结束映像保存程序606的处理,成为能够切断电源或进行复位(RESET)的状态。
在图9所示的流程图中,还没有对在步骤S103中判断为通常启动开关不是开(ON)时的处理、和步骤S113中的MMU表改写处理进行详细说明,但是首先在此参照图10的流程图详细说明步骤S113中的MMU表改写处理。
基于图10所示的流程图的处理,是MMU131的MMU表603成为图2所示的结构,改写该MMU表603的处理。
在步骤S131中,当开始MMU131的MMU表603的改写时,首先,把1级描述符表201的初始地址代入到变量1级描述符指针中。在步骤S132中,从变量1级描述符指针指示的地址取得1级描述符203。
在步骤S133中,判断在步骤S132的处理中取得的1级描述符203中是否存在向2级描述符表204的指针。在步骤S133中判断为在1级描述符203内存在向2级描述符表204的指针时,处理前进到步骤S136,在判断为在1级描述符203内不存在向2级描述符表204的指针时,处理前进到步骤S134。
在步骤S134中,将变量1级描述符指针移动到下一个1级描述符指针的地址。然后,处理前进到步骤S135,判断1级描述符指针是否到达最后。
直到在步骤S135中判断出1级描述符指针到达最后为止,重复进行使处理返回到步骤S134,将变量1级描述符指针移动到下一个1级描述符指针的地址的处理。然后,当在步骤S135中判断出1级描述符指针到达最后时,处理前进到步骤S115(图9)。即,判断出MMU表的改写已结束,处理返回到图9所示的流程图的处理。
另一方面,当在步骤S133中判断为在1级描述符203内存在向2级描述符表204的指针时,处理前进到步骤S136。在步骤S136中,把2级描述符表204的初始地址代入到变量2级描述符指针中。
在步骤S137中,从变量2级描述符指针指示的地址得到2级描述符206。在步骤S138中判断在通过步骤S137的处理取得的2级描述符206内是否存在物理页207。当在步骤S138中判断为在取得的2级描述符206内存在物理页207时,处理前进到步骤S139,在判断在取得的2级描述符206内不存在物理页207时,处理前进到步骤S144。
在步骤S139中,判断在步骤S137的处理中取得的2级描述符206内的物理页207是否在步骤S116(图9)中成为保存对象的RAM102内的地址的范围内。当在S139中判断出2级描述符206内的物理页207在成为保存对象的RAM102内的地址范围内时,处理前进到步骤S140,当判断为不在成为保存对象的RAM102内的地址的范围内时,处理前进到步骤S144。
在步骤S140中,检查在步骤S137中取得的2级描述符206的访问许可位(图3的访问许可位305),判断是否许可访问该物理页207。当在步骤S140中判断为许可向物理页207访问时,处理前进到步骤S141,在判断为不许可向物理页207访问时,处理前进到步骤S144。
在步骤S141中,把在步骤S137的处理中取得的2级描述符206的访问许可位305改写为表示禁止访问的位。在步骤S142中,将页读入标志502(图5)设为开(ON)。然后,在步骤S143中,对改写后的2级描述符206执行标记(marking)。为了保存(标记)用于识别通过应用了本发明的软件还是通过其他软件例如通过本来的OS的动作改写了在步骤S137的处理中取得的2级描述符206的访问许可位305的信息而进行该处理。
步骤S143中的标记的方法依赖于架构,在应用本发明的方面没有限制。例如,如果在2级描述符206中存在不使用的空位,则可以将该空位作为嵌入标记的信息的位来使用。此外,可以具有其他的表来管理被标记的地方和没有被标记的地方。无论是哪种情况,假设是装配了OS等的系统,并且OS使用了这些位的情况下,通过采取共存的机制,能够实施本发明。
在步骤S144中,把变量2级描述符指针移动到下一个2级描述符206的指针的地址。当在步骤S138中判断为在2级描述符206内不存在物理页207时,在步骤S139中判断为2级描述符206没有指示RAM102时,或者在步骤S140中判断为没有许可向物理页207的访问时,来到该步骤S144的处理。
在步骤S145中,判断2级描述符指针是否到达了最后。直到在步骤S145中判断为2级描述符指针到达最后为止,处理返回到步骤S137,重复进行这以后的处理。另一方面,当在步骤S145中判断为2级描述符指针到达最后时,处理前进到步骤S134。已经说明了步骤S134以后的处理,所以省略其说明。
如此,改写MMU131的MMU表603。
然后,说明在MMU131的MMU表603被改写后执行的步骤S114(图9)中的处理。在步骤S141中执行页描述符的初始化处理。参照图11的流程图说明该页描述符的初始化处理。
在步骤S151中,当开始页描述符的初始化时,首先在步骤S152中,通过将页描述符表的指针移动到表的开头,执行初始化。例如,当图4所示的页描述符表402被设为处理对象时,将指针移动到页描述符401-1。
在步骤S153中,将页描述符内存在的读入标志设定为关(OFF)。例如,作为页描述符401-1的属性信息之一的页读入标志502(图5)被设定为关(OFF)。
在步骤S154中,将页描述符表的指针加1,处理前进到下一页描述符。即,例如当指针位于页描述符401-1时,将指针移动到页描述符401-2,将页描述符401-2设为处理对象。
在步骤S155中,判断页描述符表的指针是否为最终表。指针的值加1后的结果,处理移动到下一页描述符,但是,在为最后的情况下,应该处理的页描述符不存在。因此,在步骤S155中判断为页描述符的指针位于最终表时,结束处理,当判断为不位于最终表时,处理返回步骤S153,对于作为移动目的地的页描述符执行步骤S153以后的处理。
通过像这样把作为页描述符401内的属性信息的页写入标志全部设定为关(OFF),执行页描述符的初始化处理。此后,处理前进到步骤S114(图9),此后的处理如上所述那样执行。
(高速启动时的处理)
然后,说明高速启动时的处理。当在步骤S103中判断通常启动开关没有成为看开(ON)时,即在判断为将开关切换到高速启动时执行高速启动。图12的流程图是在步骤S103中判断为通常启动开关没有成为开(ON)时处理前进的流程图,是用于说明高速启动时的处理的流程图。
在步骤S161中,为了通过高速启动模式进行启动,把通常启动标志设定为关(OFF)(高速启动标志为开(ON))。在步骤S162中,根据需要把中断向量605、页面错误处理程序604、MMU表603读入到与保存映像时相同的RAM102的地址中。
在步骤S163中,读入MMU131的MMU表。将在后面参照图13的流程图说明在该步骤S163中执行的MMU表读入处理。
当MMU表的读入结束时,处理前进到步骤S164。在步骤S164中,把CPU101的地址空间从物理地址模式迁移到虚拟地址模式。在从物理地址模式向虚拟地址模式迁移时,因为地址空间变化,所以在步骤S164的处理中把逻辑地址和物理地址映射到同一地址空间。
在步骤S165中,从非易失性存储器104读出在步骤S110(图9)中保存的CPU101的寄存器的值,对于CPU101进行恢复。CPU101或寄存器的种类为任意的,在应用本发明方面没有限制。
在步骤S166中,从非易失性存储器104读出在步骤S109(图9)中保存的I/O的寄存器的值,对于I/O部109进行恢复。I/O的种类或形式为任意的,在应用本发明方面没有限制。
当如上所述恢复了寄存器等时,处理前进到步骤S107(图9)。在步骤S107中,软件运行。此时,不执行步骤S104至S106的处理,在步骤S107中软件开始运行。由此,至少能够将直到软件能够开始运行所花费的时间缩短执行步骤S104至S106的处理所需要的时间。特别是能够消除步骤S105中的OS的启动或MMU的初始化所需要的时间以及步骤S106中软件的启动所需要的时间,由此能够期待大幅度缩短时间。
返回图12的流程图的说明,参照图13的流程图详细说明在步骤S163中执行的MMU表读入处理。
在步骤S181中,当开始读出MMU表603时,首先读出1级描述符表201。该1级描述符表201在步骤S116(图9)的处理中,在非易失性存储器104中保存了RAM102的内容,但从在该非易失性存储器104中保存的内容中仅读出1级描述符表201。
在步骤S182中,把1级描述符表201的初始地址代入到变量1级描述符指针中。在步骤S183中,从变量1级描述符指针指示的地址取得1级描述符203。在步骤S184中,判断在通过步骤S183的处理取得的1级描述符203内是否存在向2级描述符表204的指针。
当在步骤S184中判断为在取得的1级描述符203内存在向2级描述符表204的指针时,处理前进到步骤S187,在判断为在取得的1级描述符203内不存在向2级描述符表204的指针时,处理前进到步骤S185。
在步骤185中,使变量1级描述符指针移动到下一个1级描述符指针的地址。然后,在步骤S186中,判断1级描述符指针是否到达最后。当在步骤S186中判断出1级描述符指针到达最后时,处理前进到步骤S164(图12)。即,此时,MMU表603的读入已完成,所以处理向下一个处理前进。
另一方面,当在步骤S186中判断为1级描述符203没有达到最后时,处理返回到步骤S183,重复其以后的处理。重复步骤S183至S186,当在步骤S184中判断为在取得的1级描述符203内存在向2级描述符表204的指针时,处理前进到步骤S187。
在步骤S187中判断在步骤S183中取得的1级描述符203内的向2级描述符表204的指针是否指示RAM102。当在步骤S187中判断为向2级描述符表204的指针指示RAM102时,处理前进到步骤S188,在判断为向2级描述符表204的指针没有指示RAM102时,处理前进到步骤S185,重复以后的处理。
在步骤S188中读出2级描述符表。该2级描述符表204在步骤S116(图9)的处理中,作为RAM102的内容保存在非易失性存储器104中,从在该非易失性存储器104中保存的内容中仅读出2级描述符表204。之后,处理前进到步骤S185,重复以后的处理。
如此,进行MMU表的读出。
(页面错误发生时的处理)
然后,参照图14的流程图,对发生了页面错误时执行的处理进行说明。在步骤S201中,当发生了页面错误时跳转到中断向量605。即,执行从中断向量605向进行实际的页面错误处理的中断处理器的跳转。
一般的CPU101在发生了页面错误时,作为中断处理跳转到特定的中断向量,作为其中断处理程序来处理。图14所示的发生页面错误时的处理的流程图假设处理页面错误的中断的中断处理程序,但它们依赖于CPU101的架构。关于本发明的应用,并没有根据CPU101的制造商或型号施加了限制。
在步骤S202中判断通常启动标志是否为开(ON)。例如,在步骤S104(图9)的处理中,把通常启动标志设定为开(ON)。当在步骤S202中判断为通常启动标志为开(ON)时,换句话说,在判断为通常启动时,处理前进到步骤S207。另一方面,当在步骤S202中判断为通常启动标志不是开(ON)时,换句话说,在判断为高速启动时,处理前进到步骤S203。
在步骤S203中判断成为对象的物理页207,即与发生了页面错误的地址对应的物理页207是否为被标记的物理页207。标记是在步骤S143(图10)的处理中执行的标记。即,被标记的物理页207是通过应用了本发明的软件被改写为禁止访问的物理页207。
一般在物理页207和地址中满足以下的计算式,但是因为它们依赖于CPU101的架构,所以该计算式不限定本发明的应用范围。
物理页=地址/页大小(例如在上述例子中为4KB)
如该计算式所示,物理页是地址除以页大小得到的计算值。
当在步骤S203中判断为与发生了页面错误的地址对应的物理页207是被标记的物理页207时,处理前进到步骤S204,在判断为是没有被标记的物理页207时,处理前进到步骤S207。
在步骤S204中,从通过步骤S116(图9)的处理在非易失性存储器104中保存的映像仅读出4KB的成为对象的物理页207,即与发生了页面错误的地址对应的物理页207。
在步骤S205中,把成为对象的物理页207,即与发生了页面错误的地址对应的物理页207的2级描述符206的访问许可位305改写为许可访问。在步骤S206中解除在步骤S143(图10)的处理中标记的识别信息。
如此,通过执行发生了页面错误时的处理,能够实现高速启动。
另一方面,在发生了页面错误,但是在步骤S202中判断为通常启动标志为开(ON)时,或者在步骤S203中判断为没有标记对象页时,处理前进到步骤S207。在步骤S207中执行标准的页面错误的处理。即,在通常启动时,或者在应用本发明的软件以外的软件(OS等)将访问设定为不许可时,执行通常启动或不许可访问时的处理。
当在应用了本发明的系统中装配了OS等时,通常安装了标准的页面错误处理程序。与此相对,当在系统中安装了上述那样的页面错误功能时,有时也需要重新执行OS本来进行的页面错误处理。该步骤S207的处理依赖于OS等系统,但不是必须的处理,所以作为本实施方式可以省略。
如此,通过执行发生了页面错误时的处理,能够实现高速启动。
(描述符的改写)
接着,说明2级描述符的改写处理。在具有共享页的功能的情况下,例如在物理页207(图2)被共享的情况下,有可能从多个任务被访问。2级描述符206是由表示物理页207的指针和属性构成的描述符,但是,当预定的任务(记为任务A)改写了2级描述符206后,有可能由与任务A不同的任务B访问物理页207。
因此,参照图15的流程图说明当高速启动后确保了共享存储器时,由任意的任务例如任务A或任务B改写2级描述符206时执行的处理。
当执行2级描述符206的改写处理时,在步骤S231中,执行改写的任务判断与确保了共享存储器时分配的物理页207对应的页描述符的页读入标志502(图5)是否为开(ON)。页读入标志502是表示通过基于页面错误的动态读入,对于发生了该页面错误的页是否已经完成了读入的标志,因此,在被设定为开时是已经完成了对于发生了页面错误的页的读入时。
在步骤S231中判断为页读入标志为开时,处理前进到步骤S232,执行指示该页的2级描述符206的标记处理。该标记处理,与在步骤S143(图10)中执行的“对于改写后的2级描述符206进行标记”的处理同样地进行。
另一方面,在步骤S231中判断出页读入标志为关时,处理前进到步骤S233,执行指示该页的2级描述符206的标记的解除。该标记的解除,与在步骤S206(图14)中执行的“对于对象页解除标记”的处理同样地进行。
如此执行2级描述符的改写。
(空闲时间时的处理)
如上所述,通过应用本实施方式能够进行高速启动,但是,为了实现进一步高速化,还能够在与上述的处理不同的定时进行以下的处理。一般,计算机等控制装置存在什么也不做的空闲时间。例如在用户进行某种操作的控制装置的情况下,存在不特别进行任何操作的时间。通过利用该时间、即空闲时间事前读入认为在后面的时刻需要读入的页,实现进一步的高速启动。
作为OS的功能,具有检测空闲时间的功能。在检测出空闲时间并判断为负荷较轻时,事前读入认为将来要读入的页。参照图16的流程图说明该处理。
当开始空闲时间的先行读入处理时,在步骤S301中,通过将指向页描述符表的页描述符表指针设为开头来执行初始化。与图11的流程图的步骤S152的处理同样地执行处理。例如,在将图4所示的页描述符表402作为处理对象时,将指针移动到页描述符401-1。
在步骤S302中,判断对于CPU101的负荷是否为低状态,与CPU的负荷相关的信息多数情况下由OS提供,利用基于该OS或提供方法而提供的信息,执行步骤S302中的处理。因此,与CPU的负荷相关的信息的取得或针对该负荷的判断,依存于OS或提供方法的实现,但是,在应用本发明时不意味着由OS等施加限制。
在步骤S302中判断为CPU101的负荷高时,重复步骤S302的处理。即,在判断CPU101的负荷为低之前,重复步骤S302的处理,在判断为低的时刻将处理转移到下面的处理。
在步骤S303中判断页读入标志是否为关(OFF)。通过由执行读入的任务判断对应于希望执行读入的物理页207的页描述符的页读入标志502(图5)是否为关,来进行判断。页读入标志502是表示通过基于页面错误的动态读入,对于发生了该页面错误的页是否已经完成了读入的标志,因此,在被设定为关时是针对发生了页面错误的页的读入尚未完成时。
在步骤S303中判断为页读入标志为关时,处理前进到步骤S304,被判断为关的页读入标志被设定为开(ON)。然后,在步骤S305中,与页描述符对应的页的一部分被空读(dummy-read)。对于该空读中的读入大小没有限制。即使以1字节来执行读入,也发生上述的页面错误,该页被读入。
即,在步骤S304和步骤S305中,尚未进行读入的页(页读入标志被设定为关的页)被读入,执行了读入,因此,为了表示该情况,将页读入标志设为开。如此判断未被读入的页并执行读入。
在步骤S305中执行了空读的情况下,或者在步骤S303中判断为页读入标志为开的情况下,处理前进到步骤S306,将页描述符表的指针加1,处理对象前进到下一页描述符。即,例如当指针位于页描述符401-1时,将指针移动到页描述符401-2,页描述符401-2被设为处理对象。
在步骤S307中判断页描述符表的指针是否为最终表。将指针的值加1的结果,处理移动到下一页描述符,但是,在为最后的情况下,不存在应该处理的页描述符。因此,在步骤S307中判断为页描述符的指针位于最终表时,结束处理,在判断为不位于最终表时,处理返回步骤S302,执行此后的处理。
这样,当判断为CPU101的负荷低时,通过执行空读,先读取将来有可能读入的页。当如上所述那样实现了高速启动时,在页访问时发生页面错误而动态地发生读入页的处理,因此,当读入的页数增大时,认为有可能使处理加重并使启动延迟。但是,通过执行该利用了空闲时间的处理,在空闲时间时先行读入认为将来要读取的页,可以减少动态存储器的读入处理,可以实现整体的速度提高。
在由于读入的页数增大而导致处理加重时,当然也可以使启动高速化,在读入的页数不多时,当然也可以实现进一步的高速化。
(效果)
如上所述,在装配了存储器管理单元(MMU)或与MMU相当的存储器管理功能的计算机系统上,对于MMU的表改写页表项,以便针对软件的运行所需要的RAM的最小单位、即所谓的页,在全部的页中发生页面错误,在启动时,针对对于要访问的RAM产生的页面错误,通过不仅把本来的OS等具有的已知技术、即页入/页出(pagein/pageout)的功能,还把发生的页面错误的功能用于所保存的存储器映像的以页为单位的读取,由此,具有以下的效果。
首先,能够实现必要的最小限度的存储器映像的读入容量。由此,例如能够缩短个人计算机的启动时间。具体地说,与目前需要数十秒至数分钟的启动时间相比,能够在数秒以内启动。
此外,能够缩短数字家电的启动时间。在电视接收器或硬盘录像机等数字家电(电子设备)中,具有装配了OS(预定的软件)的机种。虽然在装配了预定软件的设备时启动时间有时变长,但是通过应用本发明,能够缩短这些数字家电的启动时间。
此外,能够延长电池的寿命。作为现有的用于实现高速启动的方法,具有使CPU或存储器转移到省电模式的方法。在该方法中,虽然称为省电模式,但需要电力,对于通过电池工作的设备来说无法忽视其功耗。通过应用本发明,能够在非易失性存储器中保存启动映像,不需要使用在向RAM提供电源的情况下停止的所谓的挂起(对应于现有的省电模式)。由此,结果可以显著延长电池寿命。
并且,能够实现家电产品的节能化。电视接收器或硬盘录像机等一般启动慢,因此还存在具有成为“高速启动模式”的模式。但是,该“高速启动模式”为了高速启动家电产品,通常通过接通电源来实现高速启动。因此,与接通电源时同等地消耗电力。
但是,通过应用本发明可以缩短启动时间,可以通过与“高速启动模式”时使用的启动时间等同的、或者更短的启动时间进行启动,不需要设置“高速启动模式”。因此,能够取消在“高速启动模式”时必须始终接通电源的状态,因此能够实现节能化。
而且,通过应用本发明,除了上述效果以外,共享存储器也能够作为动态读入对象页来处理。另外,能够减小事前读入部分的大小,结果,能够进一步缩短启动时间。
上述计算机执行的程序,可以是按照在本说明书中说明的顺序按时间序列地进行处理的程序,还可以是并行地或者在进行了调用时等必要的时刻进行处理的程序。此外,还可以通过专用的硬件构成。此外,在本说明书中,系统表示由多个装置构成的装置全体。
本发明的实施方式不限于上述的实施方式,在不超出本发明主旨的范围内可以进行各种变更。
符号说明
100硬盘录像机;101CPU;102RAM;103ROM;104非易失性存储器;105MPEG编码/解码部;106调谐器;107HDD接口;108HDD;109I/O部;110启动模式切换部

Claims (6)

1.一种计算机可读取的程序,用于具有管理存储器的功能的控制装置中,所述程序的特征在于,
包含以下步骤:
针对预定的软件的运行所需要的页改写页表项,以便在全部页中发生页面错误;以及
在所述软件启动时,通过所述页表项发生页面错误,依次读出发生了该页面错误的页,
如下这样执行处理:
当所述页是由多个任务共享的共享页时,在管理所述共享页的页描述符中作为属性信息而包含表示对于发生了所述页面错误的页是否已经完成了读入的标志,
在对于已有的页新确保了所述共享页的情况下,重写与该新确保的所述共享页对应的页描述符,以使对于确保了新确保的所述共享页的虚拟存储器地址也发生页面错误。
2.根据权利要求1所述的程序,其特征在于,
在启动所述预定的软件后改写所述页表项,把该启动时的数据、程序代码、表、页面错误处理程序、中断向量以及寄存器存储在所述存储器中。
3.根据权利要求1所述的程序,其特征在于,
所述存储器中的存储成为改写对象的所述页表项的存储器是RAM,存储要依次读出的所述页的存储器是非易失性存储器。
4.根据权利要求1所述的程序,其特征在于,
由嵌入式计算机读入该程序。
5.一种具有管理存储器的功能的控制装置的控制方法,其特征在于,
包含以下步骤:
针对预定的软件的运行所需要的页改写页表项,以便在全部页中发生页面错误;以及
在所述软件启动时,通过所述页表项发生页面错误,依次读出发生了该页面错误的页,
当所述页是由多个任务共享的共享页时,在管理所述共享页的页描述符中作为属性信息而包含表示对于发生了所述页面错误的页是否已经完成了读入的标志,
在对于已有的页新确保了所述共享页的情况下,重写与该新确保的所述共享页对应的页描述符,以使对于确保了新确保的所述共享页的虚拟存储器地址也发生页面错误。
6.一种具有管理存储器的功能的控制装置,其特征在于,
具备:改写单元,其针对预定的软件的运行所需要的页改写页表项,以便在全部页中发生页面错误;以及
读出单元,其在所述软件启动时,通过所述页表项发生页面错误,依次读出发生了该页面错误的页,
当所述页是由多个任务共享的共享页时,在管理所述共享页的页描述符中作为属性信息而包含表示对于发生了所述页面错误的页是否已经完成了读入的标志,
在对于已有的页新确保了所述共享页的情况下,重写与该新确保的所述共享页对应的页描述符,以使对于确保了新确保的所述共享页的虚拟存储器地址也发生页面错误。
CN2010800517732A 2009-11-17 2010-03-05 程序、控制方法以及控制装置 Pending CN102687113A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009261511A JP2011107925A (ja) 2009-11-17 2009-11-17 プログラム、制御方法、並びに制御装置
JP2009-261511 2009-11-17
PCT/JP2010/053628 WO2011061948A1 (ja) 2009-11-17 2010-03-05 プログラム、制御方法、並びに制御装置

Publications (1)

Publication Number Publication Date
CN102687113A true CN102687113A (zh) 2012-09-19

Family

ID=44059434

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010800517732A Pending CN102687113A (zh) 2009-11-17 2010-03-05 程序、控制方法以及控制装置

Country Status (5)

Country Link
US (1) US20120254499A1 (zh)
EP (1) EP2503458A4 (zh)
JP (1) JP2011107925A (zh)
CN (1) CN102687113A (zh)
WO (1) WO2011061948A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108604317A (zh) * 2016-03-14 2018-09-28 欧姆龙株式会社 可扩展性持有装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662690B (zh) * 2012-03-14 2014-06-11 腾讯科技(深圳)有限公司 应用程序启动方法和装置
US9304711B2 (en) * 2012-10-10 2016-04-05 Apple Inc. Latency reduction in read operations from data storage in a host device
JP6381187B2 (ja) * 2013-08-09 2018-08-29 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
US9383935B1 (en) * 2014-12-16 2016-07-05 Vmware, Inc. Secondary CPU MMU initialization using page fault exception
CN106155507A (zh) * 2015-03-31 2016-11-23 北京搜狗科技发展有限公司 一种页面内容显示方法及电子设备
US11341058B2 (en) * 2018-07-26 2022-05-24 Vmware Inc. Handling software page faults using data from hierarchical data structures

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006202252A (ja) * 2004-12-24 2006-08-03 Canon Inc 電子機器、データ処理方法、及びコンピュータプログラム
JP2007334383A (ja) * 2006-06-12 2007-12-27 Sony Corp 情報処理装置とその起動方法およびプログラム
CN101180612A (zh) * 2005-03-31 2008-05-14 日本电气株式会社 计算机系统、存储器管理方法及其程序

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520197A (ja) * 1991-07-09 1993-01-29 Hitachi Ltd 記憶管理システム及びマイクロプロセツサ
US6694451B2 (en) * 2000-12-07 2004-02-17 Hewlett-Packard Development Company, L.P. Method for redundant suspend to RAM
US6546472B2 (en) * 2000-12-29 2003-04-08 Hewlett-Packard Development Company, L.P. Fast suspend to disk
JP2005149225A (ja) * 2003-11-17 2005-06-09 Sony Corp コンピュータシステム及びその起動方法
GB0505289D0 (en) * 2005-03-15 2005-04-20 Symbian Software Ltd Computing device with automated page based rem shadowing and method of operation
GB0507269D0 (en) * 2005-04-11 2005-05-18 Johnson Matthey Plc Steam reforming
US7523323B2 (en) * 2005-09-15 2009-04-21 Intel Corporation Method and apparatus for quick resumption
US7519808B2 (en) * 2006-04-25 2009-04-14 Apple Inc. Method and apparatus for quickly reanimating devices from hibernation
US7620784B2 (en) * 2006-06-09 2009-11-17 Microsoft Corporation High speed nonvolatile memory device using parallel writing among a plurality of interfaces
JP5289153B2 (ja) * 2009-04-14 2013-09-11 キヤノン株式会社 情報処理装置及びその制御方法、並びにコンピュータプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006202252A (ja) * 2004-12-24 2006-08-03 Canon Inc 電子機器、データ処理方法、及びコンピュータプログラム
CN101180612A (zh) * 2005-03-31 2008-05-14 日本电气株式会社 计算机系统、存储器管理方法及其程序
JP2007334383A (ja) * 2006-06-12 2007-12-27 Sony Corp 情報処理装置とその起動方法およびプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108604317A (zh) * 2016-03-14 2018-09-28 欧姆龙株式会社 可扩展性持有装置

Also Published As

Publication number Publication date
WO2011061948A1 (ja) 2011-05-26
EP2503458A4 (en) 2013-05-29
US20120254499A1 (en) 2012-10-04
EP2503458A1 (en) 2012-09-26
JP2011107925A (ja) 2011-06-02

Similar Documents

Publication Publication Date Title
CN102460384A (zh) 程序、控制方法以及控制装置
CN101218566B (zh) 用于方便快速唤醒快闪存储器系统的方法和系统
CN102782683B (zh) 用于数据库服务器的缓冲池扩展
TWI546818B (zh) 一種具有綠能資料持續模式的裝置驅動器
CN100394391C (zh) 用于在计算机系统上存储数据的系统和方法
CN102971716B (zh) 具有电力恢复后重新加载能力的高速缓存
TWI388983B (zh) 用於促進快閃記憶體系統之快速喚起的方法及系統
US8255614B2 (en) Information processing device that accesses memory, processor and memory management method
CN102687113A (zh) 程序、控制方法以及控制装置
CN100541665C (zh) 可编程并行查找存储器
US20090172280A1 (en) Systems and methods for fast state modification of at least a portion of non-volatile memory
TWI506429B (zh) 用於非依電性容錯寫入作業之方法、運算系統及相關電腦程式產品
CN103164346A (zh) Lba位图使用
CN101551780B (zh) 一种电视机及其数据存储方法、装置
JP2005115910A (ja) シリアルフラッシュメモリにおけるxipのための優先順位に基づくフラッシュメモリ制御装置及びこれを用いたメモリ管理方法、これによるフラッシュメモリチップ
CN103577574A (zh) 一种基于nand flash的高可靠线性文件系统
US20080162611A1 (en) Methods and apparatus for marking objects for garbage collection in an object-based memory system
US10146483B2 (en) Memory system
CN103842962A (zh) 用于改进计算设备的启动的方法
KR101392062B1 (ko) 고속 컴퓨터 시스템 파워 온 및 파워 오프 방법
US20190324868A1 (en) Backup portion of persistent memory
JP5506418B2 (ja) プログラム、制御方法、並びに制御装置
CN111026325A (zh) 闪存控制器、闪存控制器的控制方法及相关的电子装置
US8055853B2 (en) Data storage system and data storage program for atomic transactions
KR101582919B1 (ko) 전자장치 및 그 부팅방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C05 Deemed withdrawal (patent law before 1993)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20120919