基于处理器的系统依靠多个异构内存子系统来实现更好的系统性能、功耗及成本效率。
要 点
内存子系统与软件只要保持其理论上的最大性能就可发挥处理器的最佳性能。
处理器架构是设计内存子系统可选的一阶驱动器。
处理器的延迟容差是实现一个快速而昂贵的内存体系还是缓慢且廉价的内存体系在速度、成本及功耗方面的一种权衡。
保持提供内存存取延迟容差的机制对开发人员而言仍多是手工进行。
处理器架构的一个主要性能特点是单位时间内能执行多少专用工作。
EEMBC (嵌入式微处理器基准协会)基准与Dhrystone MIPS (每秒百万次指令) 评分不同,它描述了在嵌入式系统应用中执行任务的处理器性能。EEMBC 基准的1.0版本并未涉及对处理器性能系统级的影响,如内存子系统,因为该基准经常在处理器的第一缓存内起作用。但EEMBC的第二代针对网络与数字娱乐的系统级基准,更实际地强调具有较大缓存内存的处理器。
处理器内存子系统的系统级影响越来越重要,因为内存类型和大小及系统中的存取方式规定了处理器内核性能的上限。据 ARM处理器部门的Gerard Williams III认为,理
想内存系统的处理器必然要采用缓存,并有理想的存取总线的方式。芯片设计师必须首先了解处理器的IPC (每周期指令)能力,然后尝试实现能将性能损失降到最低的
内存架构。这种性能损失可能来自缓存或内存存取影响,如由于容量损失、缓存大小或冲突失效形成的丢失率。
匹配良好的内存子系统可以保持处理器的最大IPC 率,而匹配不好的内存子系统会空置内核的执行单元,而大大地降低处理器的性能。虽然构建与实现内存子系统不会影响处理器内核的性能,但还是具有很大的挑战性,因为在处理器逻辑与内存间存在的性能差异正随着每次工艺技术的变化而逐步增大。实际上,内存存取延迟的改进及每个工艺技术步骤接收内存请求的时间都比处理器内核逻辑的同量时钟速率提高要少。
同样,软件开发人员通过有预见性地在内存子系统中安置编程指令与数据,可实现的最佳性能影响,就是保持处理器的最大IPC率。然而,在设备使用情况下,内存子系统中匹配不当的程序指令和数据,会极大地降低处理器的性能。Freescale关于防止M1存储冲突的应用注释提供了一个范例,说明了由于存储冲突会造成54% 处理器性能下降,开发人员可通过更好地安置数据缓冲器来避免发生这种情况(参考文献1)。
一般而言,编译器与仿真工具以全局的优化对在内存中放置指令和数据可提供有限的帮助。Green Hills的优化编译器支持内存中的功能重新安排,以优化缓存命中率。Texas Instruments的CodeSizeTune 基于仿真的编译工具可帮助开发人员探索配置,采用影响代码大小和执行速度的不同的编译器设置自动构建和仿真不同版本软件(图1)。一般来说,对许多高效和实时约束系统来说,软件开发人员的困难就是要了解内存子系统以避免由于系统不能有效地使用处理与内存资源,而承担不必要的BOM (物料清单)成本。

延迟容差
在实现内存架构时最主要的担心就是使处理器能够对系统使用的内存的存取延迟实现容差。设计合理的内存子系统可以掩藏系统多数的内存存取延迟,并能提供足够的读/写吞吐速率,即相同数据模块中随后发生的数据内存存取时间,以支持连续存取。这种情况避免了空置处理器的执行单位的指令和数据。内存设计人员必须根据内存的芯片面积、内存消耗的总功率、软件开发人员对内存使用的方便性及工具等因素对内存存取延迟进行权衡(参见附文1“方便使用”)。
内存存取延迟的直接诱因为用来执行地址解码、激活适当字线、检测位线及驱动检测放大器输出的时间。地址解码延迟为锁定地址,确定哪个字线需要激活的时间,此过程将O(n log n) 时间作为内存行与列寻址大小的函数。因此,随着内存结构的扩大,解码与寻址所需的时间也相应增加。字线激活延迟是字线上升所需的时间,主要是与线长相关的RC 延迟,线长越长则延迟越长。位线检测延迟是检测放大器检测单元内容所需的时间。位线架构、检测驱动线的RC、单元与位的容量比、及检测放大器拓扑等都会影响位线检测延迟。输出驱动延迟是一种RC 延迟,驱动从检测放大器到输出端传送数据的时间。
内存与管理内存的逻辑占用了许多基于处理器设备的芯片面积。结果,内存可以是设备的芯片成本最大的部件,也是系统中消耗动态和静态功率最大的部件。许多类型的易失与非易失内存各有好坏,系统设计人员必须要兼顾并管理重要的参数,以较低的成本和功耗来实现足够好的内存性能。
为了兼顾掩藏内存存取延迟、芯片成本及功耗,基于处理器的设备通常都依赖一个多层内存结构,将少量快速而昂贵的内存靠近处理器内核,而将大量慢速内存远离处理器内核(图2)。处理器寄存器是系统中最快且最难得的内存资源,内存体系还可以使用局部内存或TCM(紧密耦合的内存)、多阶缓存、及易失性与非易失性片上内存与片外内存。