用于实时应用的嵌入式存储器管理方案的制作方法

文档序号:9383074阅读:237来源:国知局
用于实时应用的嵌入式存储器管理方案的制作方法
【专利说明】
【背景技术】
[0001]如本文中所使用的,术语“嵌入式系统”指的是计算机系统,其被设计为在另一个且通常更大的系统内或为该另一个且通常更大的系统执行控制功能。因为这样的计算机系统通常是更大的系统的组成部分,因此它被称为被“嵌入”该更大的系统中。例如,控制车辆“信息娱乐(infotainment)”系统的各种部件的计算机系统在本文被认为是嵌入式系统。控制手机的部件的计算机系统在本文被认为是嵌入式系统。另一方面,诸如个人计算机或“PC”之类的并且没有连接到更大的系统或形成更大的系统的一部分的通用计算机并不是嵌入式系统。
[0002]需要许多嵌入式系统能够同时或本质上同时运行许多不同类型的应用或程序。许多嵌入式系统也采用不同类型的物理存储器设备来降低成本却优化具有相应不同的重要性水平的不同程序的执行。这样的系统可能使用的存储器设备的类型可以包括IRAM(内部RAM,其位于与处理器相同的半导体管芯上)和外部RAM设备(诸如DDRl、DDR2、SDRAM、闪存(FLASH)或甚至硬盘驱动器)。
[0003]每种类型的RAM将具有不同的访问时间,即可以将数据写入到设备中的位置以及从设备中的位置读取数据的速率。IRAM经常是最快的,这是由于其中的位置是在与CPU相同的时钟速率下可访问的。另一方面,闪速RAM经常是最慢的。
[0004]需要将数据写入到不同类型的RAM设备以及从不同类型的RAM设备读取数据的CPU时钟周期的数量可以变成对将运行在嵌入式计算机系统上的程序(即嵌入式应用)将实际上如何在该系统上执行的关键贡献因素(contributor)。因为相对快的RAM设备经常是比相对慢速的RAM设备更昂贵的,很多嵌入式计算机系统被设计为通过使用相对小量的快速RAM与更大量的慢速RAM相结合来降低成本,其示例包括SDRAM和闪速存储器。
[0005]在不得不运行不同程序的嵌入式系统中,需要被快速执行的程序经常一直分配数据到快速存储器设备中,该快速存储器设备的示例是在与CPU或处理器相同的半导体管芯上的存储器设备和位置。不太重要的程序或不需要被快速执行的那些程序通常一直分配数据到相对慢速的存储器设备中,该相对慢速的存储器设备通常是CPU或处理器外部的存储器设备或者是使用固有更慢的技术所制成的。所谓的DDR-2存储器设备具有更短的访问时间以及因此比SDRAM设备更快。SDRAM设备可以具有更短的访问时间以及因此可以比配置和操作为随机访问存储器的磁盘(即硬盘驱动器)更快。
[0006]对可用于存储用于具有不同执行优先级的不同程序的程序数据的不同类型的存储器设备进行最优共享可能是对于嵌入式计算机系统而言至关重要的任务。随着嵌入式计算机系统必须执行的任务的数量增加,存储器空间的最优使用变得更为关键。
[0007]图1是现有技术嵌入式计算机系统100的简化的框图。使用对于半导体领域中的普通技术人员众所周知的技术来将半导体基板102形成为具有中央处理单元或CPU 104和若干可单独寻址的随机访问存储器(RAM)位置106。为了说明的目的,芯片上RAM 106位置的地址被示出从零到一千(十进制)编号。DDR-2随机访问存储器(RAM)设备108和SDRAM设备110在管芯102的外部但经由相同的常规总线112来访问。总线112也将CPU 104耦合到需要CPU 104来控制的各种不同外围设备114。
[0008]因为芯片上RAM位置106处于与CPU 104相同的半导体管芯102上以及当然地比其他外部存储器设备108、110更接近于CPU 104,CPU 104能够在比CPU 104访问CPU 104外部的存储器设备(即DDR2 108和SRAM110)所花费的时间明显更少的时间内访问芯片上存储器位置106。需要被快速访问的程序因此优选地被存储在芯片上RAM位置106中以及从芯片上RAM位置106执行。
[0009]本领域普通技术人员知道由CPU 104控制的不同外围设备114可能需要来自CPU104的不同响应度。在现有技术中,当写入计算机程序以控制特定外围设备114时,该程序可以被写入为包括编译器命令或“编译指示(pragma)”,其在被编译时将实施存储器映射,该存储器映射将指导存储器管理器114在存储器中在何处加载数据段。这样的编译器命令通常被称为存储器分配函数或(malloc(arg)),其中变元(argument)指定存储器设备的大小和类型两者,其中随后的程序指令将由存储器管理器114来加载。
[0010]在以下语句(1)、(2)和(3)中,性能关键存储器和性能非关键存储器由编译器通过使用相同的存储器分配(malloc)函数但改变函数的变元来分配。对应的数据分配将被加载到相应不同的物理存储器设备中。
[0011]pSlow = malloc(sizeof(rtSlowArray)); (I)pFast = malloc(sizeof(rtFastArray)); (2)pSlow2 = malloc(sizeof(nrtSlowArray)); (3)
其中pSl0W、pFast和pSlow2是在存储器设备中的地址或指向位置的指针。为了说明的目的,“rtSlowArray”生成存储器的相对慢速或非实时的块的分配,其将适合于不需要CPU密集计算的程序。变元“rtFastArray”生成快速存储器的分配,其将适合于需要CPU密集计算的程序。变元“nrtSlowArray”将生成慢速存储器的分配,其将适合于非实时应用。遗憾的是,当编译器命令需要特定程序被加载到特定类型的存储器设备中时,用于该程序的空间必须在编译器指导的存储器设备中是可用的,否则被该程序请求的数据段将不被系统的存储器管理器114加载。
[0012]图2是现有技术方法的流程图,通过该方法,用于嵌入式计算机系统100的现有技术存储器管理器114响应于存储器函数malloc来为程序分配存储器空间。在图2中示出的方法200是十分简单的。当由malloc函数生成的指令被执行时,在步骤202处这些指令有效地询问存储器管理器114以确定所需大小的存储器块是否可用于供默认存储器设备(通常是SDRAM)中的特定程序所使用。如果所需存储器大小是可用的,在步骤204处该存储器被分配以及在步骤206处返回指向开始位置的指针。如果所需的空间大小在所需的默认存储器设备中不是可用的,则由程序请求的数据段将不会被加载;它将不会被运行。
[0013]为了保证程序将被加载,因此必须提供充足量的存储器。明智的系统设计者或集成者必须因此提供足够的各种类型的存储器以便能够适应理论上可能被同时运行的所有程序,即使这样的要求也许从来不会发生。
[0014]如果有可能在嵌入式系统的不同物理设备中动态地分配存储器,可以避免对于提供也许从不会被需要的高速存储器的成本。下述方法和装置因此将是相比现有技术的改进:通过该方法和装置,快速存储器可以被需要快速响应的可执行程序有效地共享。

【发明内容】

[0015]依照本发明实施例,在嵌入式计算机系统中动态地共享或分配存储器。首先确定作为该系统的一部分的存储器的类型。其后,确定可用于供使用的存储器的量。根据所需要的空间的量来确定由程序或应用所需要的存储器的类型。如果在第一类型的所请求的存储器中可以被分配给程序的存储器空间的量大于或至少等于由计算机程序所需要的存储器空间的量,那么该程序被加载到可用存储器中。如果所请求类型的储器不可用或者没有足够的所请求的存储器可用,如果在其他类型的存储器设备中的一个或多个中存在充足的空间,则考虑和使用该其他类型的存储器设备。
【附图说明】
[0016]图1是表示具有不同类型的存储器设备的嵌入式计算机系统的框图,所述不同类型的存储器设备具有相应不同的访问时间,所述不同类型的存储器设备存储控制耦合到计算机系统的不同外围设备的程序;
图2是图示了现有技术存储器分配方法的流程图;
图3是图示了动态存储器分配方法的步骤的流程图;
图4是具有动态存储器管理器的嵌入式计算机系统的框图;以及图5是动态存储器管理器的框图。
【具体实施方式】
[0017]当高速存储器变得可用时,在高速存储器设备中的高速存储器位置可以被重新使用并且在不同嵌入式应用之间共享。用于实时应用程序的嵌入式存储
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1