专利名称:用于存储器覆盖的设备和方法
技术领域:
本描述涉及一种用于多任务系统中的存储器覆盖的设备和方法。
背景技术:
随着处理器的功能快速地发展,并且,应用程序的复杂性也快速地增加,多任务技术正被应用以同时处理一个处理器中的若干任务,由此,提高处理器的使用率。一般来说,计算机系统使用分层存储器阵列结构。在存储器阵列结构中,靠近中央处理单元(CPU)设置的存储器快,但是,具有相对较小的容量且昂贵。相反,远离CPU设置的存储器慢,但是,具有相对较大的容量且不昂贵。因此,虽然在数据处理方面内部存储器优于外部存储器,但是在系统包括若干个内部存储器时,其可以增加系统的成本。因此,当小尺寸的内部存储器在各种任务中被有效地共享时,可以实现系统的高性能。近来,在嵌入系统中,对于数据处理,正在以更大的比率使用被称为便笺式存储器(scratch pad memory)的高速内部存储器。为了共享高速内部 存储器,覆盖方案替代虚拟存储器方案被广泛地用于嵌入系统中。但是,虚拟存储器方案导致用于必要的寻呼硬件的高成本,并且难以应用于实时的计算系统中。
发明内容
前述的和/或其它的方面通过提供一种存储器覆盖设备来实现,该存储器覆盖设备包括:内部存储器,该内部存储器包括指示改变的存储器区域的脏位;存储器管理单元,该存储器管理单元控制外部存储器,以仅仅存储改变的数据,使得只有在覆盖期间被任务实际上使用的数据被存储和恢复;以及直接存储器访问(DMA)管理单元,该直接存储器访问管理单元在改变任务时确认脏位,并且在内部存储器和外部存储器之间移动任务的数据区域。任务的栈区域可以包括从在覆盖期间由栈指针(SP)寄存器指示的地址到栈区域中的设置脏位的最低地址的区域,并且从内部存储器被存储到外部存储器。在覆盖期间被恢复的任务栈可以包括从由后一任务的SP寄存器指示的地址到栈的底部的区域,并且从外部存储器被恢复到内部存储器。任务区域可以使用脏位将数据从内部存储器存储到外部存储器。下一个任务区域可以完全从外部存储器恢复到内部存储器。
存储器管理单元可以在命令数据的存储时将要存储数据的地址的脏位设置为I。DMA管理单元可以执行从内部存储器到外部存储器的DMA,使得只有设置脏位的地址的数据被复制到内部存储器。DMA管理单元可以在复制数据时将数据被复制的任务的脏位初始化为零。前述的和/或其它的方面通过提供一种存储器覆盖方法来实现,该存储器覆盖方法包括:维持内部存储器,该内部存储器包括指示改变的存储器区域的脏位;控制外部存储器,以仅仅存储改变的数据,使得只有在覆盖期间被任务实际上使用的数据被存储和恢复;以及在改变任务时确认脏位,并且在内部存储器和外部存储器之间移动任务的数据区域。存储器覆盖方法还可以包括:在命令数据的存储时,将要存储数据的地址的脏位设置为I。存储器覆盖方法还可以包括:执行从内部存储器到外部存储器的直接存储器访问(DMA),使得只有设置脏位的地址的数据被复制到内部存储器。存储器覆盖方法还可以包括:在复制数据时,将数据被复制的任务的脏位初始化为零。前述的和/或其它的方面还通过提供存储器覆盖方法来实现,该存储器覆盖方法包括:在发生上下文切换(context switch)时,存储由当前执行的任务正在使用的寄存器数据;选择下一个要执行的任务;将当前执行的任务的数据区域从内部存储器复制到外部存储器;将在栈区域中包括的栈指针(SP)的上存储器的脏位初始化为零;将下一个要执行的任务的数据区域从外部存储器复制到内部存储器;以及恢复下一个要执行的任务的寄存器数据。·存储器覆盖方法还可以包括:恢复下一个要执行的任务的程序计数器。前述的和/或其它的方面还通过提供多任务系统来管理任务数据组来实现,其中,每一组与各个任务相关联,并且,该系统包括:内部存储器,该内部存储器包括存储任务数据的多个数据地址,其中,每一个地址包括各自的标志位;外部存储器;直接存储器访问管理单元,将任务数据从内部存储器存储到外部存储器,并且,将任务数据从外部存储器恢复到内部存储器;以及存储器管理单元,在存储任务数据时,将每一个标志位初始化为第一状态,并且,当在内部存储器中的数据地址中通过各个任务改变任务数据时,将各自的标志位设置为第二状态,其中,直接存储器访问管理单元只存储来自具有被设置为第二状态的各自的标志位值的地址的数据。示例实施例的另外的方面、特征和/或优点将在下面的描述中被部分地阐述,并且,根据该描述部分地是清楚的,或者,可以通过本公开的实践来获知。
根据下面结合附图的对示例实施例的描述,这些和/或其它方面和优点将变得清楚并更容易被理解,在附图中:图1示出根据示例实施例的任务的数据区域的分类的例子;图2示出根据示例实施例的存储器覆盖设备的结构;图3示出根据示例实施例的覆盖任务的数据区域的方法;
图4示出根据示例实施例的存储器覆盖设备的操作结构;图5不出根据不例实施例的存储器存储命令的例子;图6示出根据示例实施例的直接存储器访问(DMA)的操作过程;图7示出根据示例实施例的存储器覆盖方法;以及图8示出根据示例实施例的上下文切换的过程。
具体实施例方式现在将详细地介绍示例实施例,其例子在附图中示出,在附图中,相同的附图标记始终是指相同的要素。下面通过参照附图描述示例实施例,以解释本公开。在下面的描述中,如果公开的现有技术或配置的详细描述被确定为不必要地使本描述的主题模糊,那么将会省略这些详细描述。下面要使用的术语基于其在本描述中的功能被定义,并且可以根据用户、用户的意图或实践而改变。因此,应该基于整个说明书来确定这些术语的定义。图1示出根据示例实施例的任务的数据区域的分类的例子。参照图1,根据示例实施例的存储器覆盖设备可以按分类的方式来使用任务的数据区域。例如,任务的只读(RO)区域是指存储可读但不可写的数据的区域。任务的读写(RW)区域是指能 够读和写的数据区域。任务的堆区域是指动态地分配给用户的数据区域。任务的栈区域是指用于在函数中定义的自动变量的区域。图2示出根据示例实施例的存储器覆盖设备的结构。参照图2,存储器覆盖设备可以包括:内部存储器210、存储器管理单元230和直接存储器访问(DMA)管理单元240,内部存储器210包括指示改变的存储器区域的脏位(dirtybit);存储器管理单元230控制外部存储器220仅仅存储改变的数据,使得只有在覆盖期间被任务实际上使用的数据被存储和恢复;DMA管理单元240在改变任务时确认脏位,并且在内部存储器210和外部存储器220之间移动任务的数据区域。图3示出根据示例实施例的覆盖任务的数据区域的方法。参照图3,根据示例实施例的存储器覆盖设备可以向内部存储器提供指示改变的存储器区域的脏位,使得仅由任务实际上正在使用的数据被存储或恢复,并且,该存储器覆盖设备可以只将在覆盖期间改变的部分存储在外部存储器中。根据一个方面,任何的栈区域可以包括从在覆盖期间由栈指针(SP)寄存器指示的地址到栈区域中的设置脏位的最低地址的区域。栈区域可以从内部存储器被存储到外部存储器。在覆盖期间被恢复的任务栈可以包括从由下一个任务的SP寄存器指示的地址到栈的底部的区域,并且可以从外部存储器被恢复到内部存储器。当前的任务区域可以使用脏位将数据从内部存储器存储到外部存储器。下一个任务区域(例如,RO区域、Rff区域和堆区域)可以完全从外部存储器被恢复到内部存储器。图4示出根据示例实施例的存储器覆盖设备的操作结构。
参照图4,存储器覆盖设备可以将脏位添加到内部存储器,并且,当存储器管理单元命令数据的存储时,存储器覆盖设备可以将要存储数据的地址的脏位设置为I。在改变任务时,考虑到脏位,DMA管理单元可以在内部存储器和外部存储器之间移动任务的数据区域。图5示出根据示例实施例的存储器存储命令的例子。参照图5,当在内部存储器中存储存储器存储命令时,用于将对应地址的脏位设置为I的代码可以被添加到存储器存储命令。图6示出根据示例实施例的DMA的操作过程。参照图6,存储器覆盖设备可以另外执行使用脏位执行DMA的DMA更新功能。DMA管理单元可以执行从内部存储器到外部存储器的DMA,使得只有设置脏位的地址的数据被复制到内部存储器。如图6的操作610、620、630和640中所示,DMA管理单元的DMA更新功能(S卩,Src_addr、Size和Dst_addr)可以是指执行从内部存储器到外部存储器的DMA的功能。DMA管理单元可以在操作630中将与Size —样大小的数据从Src_addr复制到Dst_addr,并且在操作640中只将设置脏位的数据复制到内部存储器。在复制数据时,DMA管理单元可以在操作650中将复制数据的任务的脏位初始化为零。在下文中,将描述根据示例实施例的存储器覆盖方法。图7示出根据示例实施例的存储器覆盖方法。在操作710中,根据示例实施例的存储器覆盖设备可以在发生上下文切换时存储由当前正在执行的任务使用的寄存器数据。在操作720中,存储器覆盖设备可以选择下一个要执行的任务。在操作730中,存储器覆盖设备可以将当前执行的任务的数据区域从内部存储器复制到外部存储器。在操作740中,存储器覆盖设备可以将在栈区域中包括的SP的上存储器的脏位初始化为零。在操作750中,存储器覆盖设备可以将下一个要执行的任务的数据区域从外部存储器复制到内部存储器。在操作760中,存储器覆盖设备可以恢复下一个要执行的任务的寄存器数据。在操作770中,存储器覆盖设备可以恢复下一个要执行的任务的程序计数器。图8示出根据示例实施例的上下文切换的过程。参照图8,当使用调度器发生上下文切换时,在操作801中,根据示例实施例的存储器覆盖设备可以存储由当前执行的任务正在使用的寄存器的内容。在操作802中,存储器覆盖设备可以选择下一个要执行的任务。另外,在操作803、804,805和806中,存储器覆盖设备可以使用DMA更新将当前执行的任务的数据区域的RW区域、堆区域和栈区域从内部存储器复制到外部存储器。在操作807中,存储器覆盖设备可以将在栈区域中包含的SP的上存储器的脏位初始化为零。在操作808、809、810和811中,存储器覆盖设备可 以使用DMA将下一个要执行的任务的数据区域从外部存储器复制到内部存储器。在操作812中,存储器覆盖设备可以恢复下一个要执行的任务的寄存器的内容并恢复下一个要执行的任务的程序计数器。根据示例实施例,可以在使用覆盖方案共享小容量的内部存储器的计算机系统环境中有效地管理任务的数据区域。此外,可以使在存储器覆盖期间存储器复制所导致的开销最小化。根据上述示例实施例的方法可以被记录在非暂态计算机可读介质中,该非暂态计算机可读介质包括实现由计算机实施的各种操作的程序指令。该介质还可以包含单独的数据文件、数据结构等,或者可以包括与程序指令组合的数据文件、数据结构等。在介质上记录的程序指令可以是为了示例实施例的目的而专门设计和构造的程序指令,或者,它们可以是计算机软件领域的技术人员公知或可用的类型的程序指令。非暂态计算机可读介质的例子包括:磁介质(例如,硬盘、软盘和磁带);光学介质(例如⑶ROM盘和DVD);磁光介质(例如,光盘);以及被专门配置为存储和执行程序指令的硬件装置(例如,只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。计算机可读介质还可以是分布式网络,使得程序指令以分布式的方式被存储和执行。程序指令可以由一个或多个处理器执行。计算机可读介质还可以在至少一个执行(如处理器一样处理)程序指令的专用集成电路(ASIC)或者场可编程门阵列(FPGA)中被实施。介质可以是传输介质,例如,光学线、金属线,或者包括用于传送指定程序命令和数据结构的信号的载波的波导。程序指令的例子包括(例如由编译器产生的)机器代码和包 含更高级代码的文件二者,该更高级代码可以由计算机使用翻译器来执行。上述的硬件装置可以被配置为充当一个或多个软件模块,以便执行上述的示例实施例的操作,反之亦然。虽然已经示出和描述了示例实施例,但是本领域的技术人员将会认识到,在不脱离本公开的原理和精神的情况下,可以对这些示例实施例进行改变,并且,本公开的范围在权利要求及其等同物中被限定。
权利要求
1.一种存储器覆盖设备,包括: 内部存储器,该内部存储器包括指示改变的存储器区域的脏位; 存储器管理单元,该存储器管理单元控制外部存储器仅存储改变的数据,使得仅在覆盖期间被任务实际上使用的数据被存储和恢复;以及 直接存储器访问DMA管理单元,该DMA管理单元在改变任务时确认脏位,并且在内部存储器和外部存储器之间移动任务的数据区域。
2.根据权利要求1所述的存储器覆盖设备,其中,任务的栈区域包括从在覆盖期间由栈指针寄存器指示的地址到栈区域中的设置脏位的最低地址的区域,并且从内部存储器被存储到外部存储器。
3.根据权利要求1所述的存储器覆盖设备,其中,在覆盖期间被恢复的任务栈包括从由后一任务的栈指针寄存器指示的地址到栈的底部的区域,并且从外部存储器被恢复到内部存储器。
4.根据权利要求1所述的存储器覆盖设备,其中,任务区域使用脏位将数据从内部存储器存储到外部存储器。
5.根据权利要求1所述的存储器覆盖设备,其中,下一个任务数据完全从外部存储器被恢复到内部存储器。
6.根据权利要求1所述的存储器覆盖设备,其中,存储器管理单元在命令数据的存储时将要存储数据的地址的脏位设置为I。
7.根据权利要求1所述的存储器覆盖设备,其中,DMA管理单元执行从内部存储器到外部存储器的DMA,使 得只有设置脏位的地址的数据被复制到内部存储器。
8.根据权利要求7所述的存储器覆盖设备,其中,DMA管理单元在复制数据时将数据被复制的任务的脏位初始化为零。
9.一种存储器覆盖设备,包括: 由处理器维持内部存储器,该内部存储器包括指示改变的存储器区域的脏位; 控制外部存储器,以仅存储改变的数据,使得仅在覆盖期间被任务实际上使用的数据被存储和恢复;以及 在改变任务时确认脏位;以及 在内部存储器和外部存储器之间移动任务的数据区域。
10.根据权利要求9所述的存储器覆盖方法,还包括:在命令数据的存储时,将要存储数据的地址的脏位设置为I。
11.根据权利要求9所述的存储器覆盖方法,还包括:执行从内部存储器到外部存储器的直接存储器访问DMA,使得只有设置脏位的地址的数据被复制到内部存储器。
12.根据权利要求11所述的存储器覆盖方法,还包括:在复制数据时,将数据被复制的任务的脏位初始化为零。
13.一种存储器覆盖方法,包括: 在发生上下文切换时,存储由当前执行的任务正在使用的寄存器数据; 选择下一个要执行的任务; 由处理器将当前执行的任务的数据区域从内部存储器复制到外部存储器; 将在栈区域中包括的栈指针的上存储器的脏位初始化为零;将下一个要执行的任务的数据区域从外部存储器复制到内部存储器;以及 恢复下一个要执行的任务的寄存器数据。
14.根据权利要求13所述的存储器覆盖方法,还包括:恢复下一个要执行的任务的程序计数器。
15.一种管理任务数据组的多任务系统,每一组与各个任务相关联,并且,该系统包括: 内部存储器,该内部存储器包括要存储任务数据的多个数据地址,其中,每一个地址包括各自的标志位; 外部存储器; 直接存储器访问管理单元,将任务数据从内部存储器存储到外部存储器,并且,将任务数据从外部存储器恢复到内部存储器;以及 存储器管理单元,在存储任务数据时,将每一个标志位初始化为第一状态,并且,当在内部存储器中的数据地址中通过各个任务改变任务数据时,将各自的标志位设置为第二状态, 其中,直接存储器访问管理单元只存储来自具有被设置为第二状态的各自的标志位值的地址 的数据。
全文摘要
一种存储器覆盖设备包括内部存储器,该内部存储器包括指示改变的存储器区域的脏位;存储器管理单元,该存储器管理单元控制外部存储器,以仅仅存储改变的数据,使得只有在覆盖期间被任务实际上使用的数据被存储和恢复;以及直接存储器访问(DMA)管理单元,该直接存储器访问管理单元在改变任务时确认脏位,并且在内部存储器和外部存储器之间移动任务的数据区域。
文档编号G06F3/06GK103246482SQ20131004744
公开日2013年8月14日 申请日期2013年2月6日 优先权日2012年2月6日
发明者李在敦, 李承远, 林采石, 李时和 申请人:三星电子株式会社