自适应多核系统中的缓存内存资源管理与UML映射研究
按需分配的性能与能源结果
在多核系统中,按需分配内存资源是一个重要的研究方向。下面通过两个表格展示了按需分配的性能和能源结果。
| 重分配点 | 核心数量 | 运动估计 | 矩阵乘法 | JPEG | 归并排序 | 总体 |
|---|---|---|---|---|---|---|
| 10% | 16 | 3% | 3% | -4% | -2% | 1.2% |
| 32 | 2% | 2% | -5% | -3% | 0.1% | |
| 64 | 1% | 2% | -6% | -5% | -0.6% | |
| 25% | 16 | 18% | 11% | -3% | -3% | 12% |
| 32 | 12% | 7% | -8% | -6% | 6% | |
| 64 | 7% | 5% | -10% | -7% | 3% | |
| 50% | 16 | 23% | 17% | -9% | -2% | 18% |
| 32 | 20% | 14% | -14% | -5% | 14% | |
| 64 | 16% | 10% | -20% | -8% | 11% | |
| 75% | 16 | -5% | -3% | -2% | -3% | -3.5% |
| 32 | -3% | -2% | -1% | -2% | -2.3% | |
| 64 | -2% | -1% | -1% | -1% | -1.4% |
从性能结果表格可以看出,不同的重分配点和核心数量对不同应用的性能影响差异较大。例如,在重分配点为25%和50%时,多数应用能获得较好的性能提升;而在75%重分配点时,部分应用出现性能下降。
| 重分配点 | 核心数量 | 运动估计 | 矩阵乘法 | JPEG | 归并排序 | 总体 |
|---|---|---|---|---|---|---|
| 10% | 16 | 4% | 5% | -5% | -2% | 2% |
| 32 | 1% | 3% | -6% | -4% | 0.6% | |
| 64 | 1% | 2% | -7% | -6% | -0.2% | |
| 25% | 16 | 20% | 12% | -3% | -4% | 13% |
| 32 | 19% | 7% | -8% | -7% | 9% | |
| 64 | 8% | 7% | -9% | -6% | 4% | |
| 50% | 16 | 25% | 21% | -9% | -3% | 22% |
| 32 | 23% | 19% | -15% | -8% | 18% | |
| 64 | 18% | 12% | -22% | -10% | 13% | |
| 75% | 16 | -7% | -6% | -3% | -4% | -5.6% |
| 32 | -4% | -4% | -2% | -3% | -3.7% | |
| 64 | -3% | -2% | -3% | -1% | -2.3% |
能源结果与性能结果呈现相似的模式,但能源节省略高于性能提升。这可能是因为访问外部内存的能源成本高于时间访问惩罚。然而,在执行到75%时进行重分配的惩罚更高。
相关工作
虽然在文献中未发现使用基于动态集群的方法来管理内存资源的研究,但有一些资源管理技术可扩展到内存子系统。
-
Qureshi和Patt的重分配机制
:在L1私有/L2共享缓存架构中,通过窥探机制将一个缓存(溢出器)中被驱逐的行分配到系统中的另一个缓存(接收器)中。该方法旨在扩展一个缓存的大小,并使数据在芯片内停留更长时间。不过,它考虑的是单个地址空间和来自同一应用的多个线程,与全局方法有所不同。
-
入侵式计算
:这是一种多核编程范式,旨在充分利用大型多核处理器。它依赖于可灵活改变并行度的应用程序。在应用层,程序员使用触发入侵过程的函数。当应用程序发送入侵请求时,分布式资源管理器会根据所需资源量和每个核心的估计加速比来评估请求。但该方法在不同抽象层次上工作,程序员需要了解其方法学,而内存聚类方法对程序员是透明的。
TargetLink工具与UML映射
在嵌入式系统开发中,UML(统一建模语言)和Simulink是常用的建模工具。TargetLink是Matlab/Simulink的一个工具箱,可通过一键操作从Simulink模型生成批量生产代码。
TargetLink数据字典元素
TargetLink数据字典用于参数化和描述TargetLink模型中使用的所有元素,以下是与UML映射相关的元素:
-
Pool
:TargetLink数据字典分为Config、Pool和Subsystem三个区域,本文只考虑Pool区域。该区域包含代码生成所需的所有数据元素,如定点变量的缩放值或变量的类型定义。
-
Blocks
:是TargetLink数据字典的主要元素,对代码生成至关重要。基于块的描述,可以直接从TargetLink数据字典生成Simulink块。本文主要关注TL Function类型的块,它们代表待开发软件组件的基础架构。
-
Signature和SignaturePort
:Signature包含Signature - Ports,Signature - Ports分为输入、输出和用户端口。Signatures用于描述TL Function块的可用输入和输出端口。用户端口可根据不同用例自由配置,端口可用于连接TL Function块和变量。
-
Variable
:用于在不同TL Function块之间交换信息。变量的属性定义了生成代码中的外观,其实际类型由Typedef元素定义,值范围可通过Scaling元素设置。
-
Typedef
:指定Variable元素的数据类型,在TargetLink数据字典中由变量引用。
-
Scaling
:用于定义变量的值范围,在定点代码生成时很有必要,还可定义最低有效位(LSB)、偏移量和物理单位的值。
mermaid图如下:
graph LR;
Pool --> TL Function Block;
Pool --> Variable;
Pool --> Signature;
TL Function Block --> Signature;
Signature --> Signature - Port;
Signature - Port --> Variable;
Variable --> Typedef;
Variable --> Scaling;
这个流程图展示了TargetLink数据字典中各元素的关系。从图中可以清晰看出,变量相对独立,而TL Function块通过Signature和Signature - Port与变量相连接。
原型TargetLink模型在UML中的表示
为了将TargetLink模型映射到UML,选择了复合结构图。复合结构图可以描述类的内部结构或不同类之间的协作,它有结构 - 动态视图和结构 - 静态视图。静态视图中,系统先被划分为子系统,子系统再分为组件,每个组件包含多个带属性的类。
复合结构图的元类包括类、部分、端口、接口和连接器。类是对象的构建计划,部分用于将类划分为子集,部分可通过端口扩展以实现元素间的通信,连接器用于连接不同部分的端口。
原型将系统分为系统级和变量级。系统级可描述TL Function块、Signatures和Signature - Ports,变量级描述变量、Typedefs和Scalings。在UML中,TL Function块被描绘为部分,Signature - Ports被映射到UML Ports,这样就实现了将TargetLink数据字典元素映射到UML元素的目的。通过这种映射,可以复用架构模型的属性,并将其注释到TargetLink模型中,用于后续的自动代码生成。
自适应多核系统中的缓存内存资源管理与UML映射研究
内存聚类概念及整体效果
内存聚类的核心思想是,由于不同应用程序对内存的需求不同,为那些耗时较长的应用程序预留更多的内存资源(实际上是L2缓存),并从对内存需求不那么高的应用程序中获取这些资源。整体实验结果表明,根据内存资源重新分配的时间点不同,整个系统在性能和能源利用方面都有提升的空间。
在之前的实验中,已经确定了对于特定实验,在系统整体执行时间的25%和50%这两个时间点进行重新分配能取得较好的效果。然而,在实际情况中,如果对应用程序没有先验知识,最佳的重新分配时间点可能会有所不同。
未来研究方向
- 确定内存重新分配的最佳时机 :后续将研究其他方法来确定内存重新分配的最佳时刻。目前的实验虽然找到了特定实验下的最佳重新分配时间点,但在缺乏应用程序先验知识的情况下,最佳时间点可能会改变。例如,可以通过监测系统的实时负载、内存使用情况等指标来动态确定重新分配的时机。
- 分析缓存缺失情况 :进一步研究重新分配时间点前后的缓存缺失情况,以更好地刻画初始性能损失的原因以及内存重新分配的效果。这有助于深入理解内存重新分配对系统性能的影响机制,从而优化内存资源的管理策略。
UML与TargetLink映射的优势及应用场景
将UML组件架构模型与TargetLink模型进行映射具有诸多优势,以下是一些具体的优势和应用场景:
|优势|具体描述|
| — | — |
|复用架构属性|可以复用UML架构模型中的属性,如接口描述等,并将其注释到TargetLink模型中,减少重复工作,提高开发效率。|
|提高代码生成质量|通过UML模型对TargetLink模型进行约束和规范,有助于生成更符合架构设计的代码,提高代码的质量和可维护性。|
|支持跨团队协作|UML是一种广泛使用的建模语言,不同团队成员可以基于UML模型进行沟通和协作,而TargetLink则专注于代码生成,这种映射方式可以促进不同团队之间的协作和交流。|
在实际应用中,这种映射方式尤其适用于安全关键项目,如汽车行业和航空航天领域的嵌入式系统开发。在这些领域,对代码的质量和可靠性要求较高,通过UML和TargetLink的映射,可以更好地实现从系统设计到代码生成的无缝过渡。
总结与展望
综上所述,内存资源管理和UML与TargetLink的映射在嵌入式系统开发中都具有重要的意义。内存聚类方法通过合理分配内存资源,为系统的性能和能源利用带来了提升的潜力。而UML与TargetLink的映射则为嵌入式系统的开发提供了一种有效的方式,能够提高开发效率、保证代码质量。
未来,随着嵌入式系统的不断发展和复杂化,对内存资源管理和建模工具的要求也会越来越高。我们需要不断探索新的方法和技术,进一步优化内存资源的分配策略,完善UML与TargetLink的映射机制,以满足日益增长的开发需求。同时,也需要加强不同领域之间的交流与合作,共同推动嵌入式系统开发技术的进步。
mermaid图如下:
graph LR;
A[嵌入式系统开发] --> B[UML建模]
A --> C[Simulink建模]
C --> D[TargetLink代码生成]
B --> E[UML与TargetLink映射]
D --> E
E --> F[高质量代码]
这个流程图展示了嵌入式系统开发中从建模到代码生成的整个过程,以及UML与TargetLink映射在其中的关键作用。通过这种方式,可以确保开发出高质量的嵌入式系统代码。
超级会员免费看
1394

被折叠的 条评论
为什么被折叠?



