探索内存架构:处理性能的基石

发布者:花开堂前最新更新时间:2007-10-08 来源: EDN China关键字:嵌入式  缓存  缓冲 手机看文章 扫描二维码
随时随地手机看文章
处理器架构的一个主要性能特点是单位时间内能执行多少专用工作。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(紧密耦合的内存)、多阶缓存、及易失性与非易失性片上内存与片外内存。

现代的优化编译器在管理使用处理器寄存器方面很合适,但在管理与优化其它内存上则较差。这种情况部分是由于利用本地查看程序代码,优化使用寄存器与战术实施配合良好。为了在基于处理器的系统中优化使用其它内存结构,如TCM,需要更具全局性地查看系统,此功能正出现在多数的编译器中。

局部内存或连接到处理器核的TCM通过局部或专门的内存总线来存取类似于缓存的性能。内存存取确定机制为TCM与缓存间的主要区别。人工暂时锁定缓存线可在线级使能缓存,使其作为一个TCM。程序指令与通过TCM实施代码存取具有确定的能力,但对于缓存,设计人员必须考虑缓存丢失的最坏情况。“对于缓存丢失处理的典型经验法则是,存取延迟比前一级别增长一个数量级”Innovative Silicon的架构总监David Fisch 说。“L2 内存存取延迟是L1 缓存存取延迟的10 倍,而L3缓存存取延迟又是L2 内存存取延迟的10倍。”使用TCM将任务加给软件开发人员手动的管理内存空间,通常是使用DMA 控制器,以便在处理器 需要时,使必要的代码和数据在TCM 中。

缓存由速度稍慢的内存构成来掩藏大量速度较慢内存的延迟。较慢的内存密度更大,所以也更便宜。缓存依赖暂存的空间局部区域来掩藏较慢内存的存取延迟。“暂存局部性” 描述了这种区域特点:如果处理器请求一些数据,那么,处理器很快又需要相同的数据。通过在存储中保留数据复本,缓存可以避免数据进入较慢的内存中。“空间局部性” 描述了区域的另一种特性:即处理器请求在某个内存位置的代码,而下一处理器请求为下一内存位置或与其相近位置的代码。利用在初始取数同时预取靠近当前请求数据的一定量的数据,缓存在其存储中就可以有下几个数据位置,而不会从较慢内存中发生另一取数的延迟。

较大缓存通常意味着牺牲更多芯片面积而实现较少的缓存丢失。提高表示特定的内存可存在于缓存中的位置数的缓存相关性,几乎总能减少缓存丢失。缓存线长度可根据应用的特性作正向或反向变化。Tensilica首席架构师Bill Huffman告诉我们:“配置缓存是一项迭代任务,它高度依赖可在处理器中执行的应用集。”

平衡各种缓存参数是一个复杂的过程,涉及到在芯片面积与丢失率间的取舍(图3)。图中列出了JPEG编码应用的缓存配置范围:从负载丢失率为13.4% 的4k字节直接映射的16 字节线的配置,到负载丢失率为1.9%的32k字节、四路相关的64 字节线的配置(参考文献2)。尽管缓存越大越好,但对32k字节缓存有优势收益递减的趋势。提高缓存线大小所具有的性能优势比缓存大小增加一倍所提高的性能更多,缓存线越长,芯片成本越小。尽管大缓存相关性越高越好,但在此例中,从两路到四路相关性能产生的优势很少。简而言之,对于配置缓存并没有明确的经验法则。

决策驱动器


处理器内核架构为内存架构选项中设计人员的第一选择。原因是设计人员构建内核时假定了内存组件与内核如何接口并对其如何补充。Von Neumann 和Harvard 架构为两种常见的处理器架构,分别模仿并实施不同的方法来查看和存取内存。基于von Neumann 架构模型的处理器将系统内存建模成保存程序指令和数据的单一存储结构,并有单一总线接口服务所有程序和数据存取。基于Harvard 架构的处理器对系统内存建模,程序指令和数据作为物理和逻辑分离存储结构,以不同的总线接口,一个用于指令,另一个用于数据。Harvard 架构支持同时存取程序指令与数据,而von Neumann 架构则不会。

为了选择一个优化的内存设计 ,设计人员还必须了解应用的特点和要求。对内存设计的考虑有: 应用的数据如何进出系统,处理器能否直接加载数据或外部代理,DMA控制器能否将数据载入处理器的局部RAM中?同时也必须对输出提出类似的问题:处理器会不会直接驱动输出端口?或由外部代理,如DMA 控制器来驱动,能否将数据从处理器的局部RAM 传输到I/O 接口中?其它问题包括:什么是应用的启动过程?系统能否有效地利用特殊内存接口?片上内存资源能否容纳所有的代码与应用数据,还是仅能容纳性能敏感的代码与数据?

应用启动要求从何处存储初始化代码,以及系统通过什么接口进行存取。片上OTP(一次性可编程)ROM很小且具有较高的芯片密度,所以对于储存启动代码非常有用。它支持快速启动,因为在启动后到开始执行不需要等待时间。初始化代码可能在闪存中的某个位置驻存并执行,也可以存在于芯片外内存中,也可映射到片上指令RAM中,这可造成系统启动时间较长。如果应用代码和数据能驻存于片上内存中,就没有必要支持片外内存接口。如果性能敏感的程序代码可载入局部内存中,设计人员就不需要实施缓存了。

设计人员可根据已知应用的约束条件调整处理器,这些处理器仅包括应用所需的随机和非易失性内存量。TCM的大小和参数、缓存或特殊内存都是针对应用而设计的。针对较宽应用的处理器通常实施一个普通的内存架构,这些架构包括应用的最大资源要求,以提供较少资源的各种设备来满足较低的成本要求。对于采用类似处理器核架构的系统,内存子系统成为更高级的驱动器,以提供系统可交付的处理性能、功耗及价格(参见附文2“多种选择”)。

内存控制器对所服务的内存模块的实现进行抽象处理,使其成为对处理器系统的数据管道。它们包含读取内存模块所必须的逻辑,根据所服务内存的类型,还包括写入、刷新、测试与校正错误内存等。对于片上内存,内存控制器能够显示公司的专有发明,它的处理器设备不同于竞争者的类似设备。结果,多数的处理器厂商不愿过于详细地讨论其内存控制器。他们指出了一种用于内存控制器的技术,包括使用宽数据总线,多路复用或交错式存取内存库、缓冲、流水线、交易记录以及专门和不确定的存取模式等。

除了实现的内存的特性外,影响内存控制器设计和效率的系统级因素还包括物理寻址如何映射到内部演示内存系统上,寻址模式的类 型(如突发、随机与并行存取模式)、混合读写、未使用的内存如何进入低功耗模式。其主要的使用模型通常确定了内存控制器的架构,以使图形或多媒体控制器可优化进行序列存取,而嵌入式通讯系统的内存控制器可在较大的内存范围内优化随机存取。对于有系统级可靠性要求的嵌入式内存,针对额外的复杂性,内存控制器可提供ECC(错误纠正代码)保护。

内存控制器的流量模式在单核处理器系统与多核处理系统之间有很大区别。单核系统的内存处理器可使用一个数据流,但在多核心系统中的共享内存,内存控制器需要有处理多个数据流及随机流量的能力。对于多核设计,内存架构必须支持快速及有效的信息传递,以及处理器间的数据共享。尽管不同的方法可实现这些目标,但没有单一配置对所有类型的通信都有效。快速的点对点通道及队列,对交换短小且重要的信息非常重要,然而共享内存对于共享较大的数据结构更为有益。当使用共享内存时,用户需要对同步和内存管理的编程支持。

随着越来越多的嵌入式系统组合到多内核作为设计的一部分,特别的异构内核,开发工具的发展会更好地协助开发人员从空间和时间上安置代码和数据,来实现更好的延迟容差,并使复杂性越来越高的设计发挥出最佳性能。开发工具必须可协助开发人员更好地了解系统的全局行为。并将该行为与系统中可用的内存子系统进行匹配。否则,内存和芯片设计人员必须继续将更复杂的控制算法组合到内存控制器中,以明确地补偿软件设计人员和开发工具对内存系统的行为缺少可视性的缺点。

参考文献
1. Schuchmann, David, “Tuning an Application to Prevent M1 Memory Contention,” Application Note AN3076, Freescale Semiconductor Inc, May 2006.
2. “How to Optimize SOC Performance Through Memory Tuning,” White Paper, Tensilica.

附文1:方便使用

编程的简易性对软件开发人员来说是一种十分重要的特性。可隐藏内存体系的平坦的地址空间,便于开发人员进行编程。Microchip Technology数字信号控制器部门的技术人员Brian Boles 说,“一般来讲,将应用针对通用的内存架构而设计编译器比较容易些。”要让编译器最佳地将代码和数据分配到专用的内存结构,而对应用代码的全局的动态特性没有可视性是比较困难的。

对于操作系统的复杂应用,如Linux,内存架构需要支持虚拟寻址。然而,使用大型操作系统满足上市时间表压力的开发人员来说,可能会失去对如何分隔软件利用片上资源来节能和节省成本的深入考虑。冲突的某些问题是权衡与确定有多少片上内存需要操作系统通过片上内存运行,以及这种方法留给应用的内存数量。“到目前为止,通用操作系统没有什么虚假的连接规定完整的物理到内存系统的映射,促进基础内存系统最佳使用。”Intel嵌入式与通讯集团营销经理Phil Ames说。“然而,在嵌入式设计中采用手动调整软件,使内存系统得到最佳使用是十分普遍的。”

管理各种不同类别的内存需要专门的软件。例如,小容量NAND闪存(528 字节/每页)与大容量 NAND 闪存(2112 字节/每页)通常需要不同的闪存管理软件。一个解决这种情况的方法是将软件设计成模块化嵌入层中,以使软件开发人员在必须修改时,尽量减少重写量。Toshiba内存产品集团的技术人员Doug Wong说:“NAND 闪存为最早的商品化内存,将重要的智能特性加入内存设备中,以使其更易使用。”Toshiba的LBA-NAND 与兼容eMMC的嵌入式NAND 中都含有可执行NAND管理功能的内置控制器,如模块管理、损耗均衡、及逻辑到物理模块的转换及自动错误校正等。这种方法明显地降低了系统架构师或软件工程师在对FFS(闪存文件系统)或FTL(闪存转换层)管理NAND闪存设备的负担。

附文2:多种选择

以下的范例使用基于ARM7的NXP LPC2129 处理器内核,说明了某些处理器核架构对内存架构可能的第一决策影响(图A)。ARM7 为三级流水线von Neumann架构机器,有一个端口通过AHB(高级高性能总线)桥连接到ARM 高性能总线。该桥是提供在处理器与外设频率间同步的必要途径。以容纳处理器接口,或作为与多个主控设备总线的接口。尽管该桥非常必要,但当处理器通过AHB存取任何数据时,应用一个双时钟延迟处理,如果地址超出序列,则应用一个额外的性能处理。

一个放置程序和数据内存的明显位置是在AHB 一侧的总线上,以便处理器可存取内存,且外设可直接存取内存数据。但是,AHB 桥还是应用了两周期的延迟处理。为了优化 处理性能,设计人员将程序内存放置在AHB桥的处理器的局部总线一侧。尽管这种结构提高了处理性能,但其它总线主控设备不能直接存取此内存,迫使设计人员将更多的内存放置在DMA 主控设备的AHB 一侧。这种方法增加了旧工艺的成本,但在深亚微米工艺中,性能增加比成本增长更重要。

闪存比6T(6个三极管)SRAM 单元速度慢,但由于闪存具有非易失性、固态可靠性、较低的功耗及设计灵活性,所以在嵌入系统中使用闪存非常重要。在单一内存类型内的许多子体系结构允许你调整架构以满足应用的需求。这些需求包括存取速度、编程速度、读电压功耗水平及成本等。其它对闪存的重要考虑有,使用年限及支持的擦除次数。

嵌入式闪存的随机存取速度约为50 ns、商业闪存约85 ns,在针对速度超过100 MHz的处理器时就会出现问题。然而,因为存取嵌入式闪存并不受针脚限制,嵌入式闪存子系统可使用带有某些接口逻辑的较宽的位宽来提高性能。在此例中,128 位的宽度允许系统同时存取四个处理器数据字,该数据字为线性码提供了80 MHz 的有效存取频率。将以可缓冲逻辑四字的存取与读取结合,在以闪存执行时,可允许分支预测实现可接受的性能。这种方法实现了更为节省成本和功耗的SRAM 或闪存作为本地内存以随机存取数据,多数为程序代码的线性存取,而不仅是SRAM 实现。

有多种选择可以实现总线架构来支持高带宽外设。一种是使用多层总线,它是一种矩阵,允许多个主控设备以不同方式存取内存资源。另一种方法是设计一个AHB至AHB 桥,这样就有两个或更多的独立总线。由于局部内存SRAM 并不支持DMA,不论选择哪种方法,任何高带宽外设(如以太网或USB)都应有专门的内存资源可直接存取内存。所存储的数据包和帧的数量、数据速率及处理器速度决定着专用内存的大小。

关键字:嵌入式  缓存  缓冲 引用地址:探索内存架构:处理性能的基石

上一篇:基于ARM核处理器的机器人手臂控制系统
下一篇:基于双CPU实时图像监控系统的设计

推荐阅读最新更新时间:2024-03-30 21:24

2013年暮春硅谷纪行:嵌入式软件是EDA领域的下一场革命
    嵌入式软件是EDA领域的下一场革命        随着芯片设计和系统复杂度的不断增长,软件代码量越来越大,所需的软件设计师也成倍增加。即便如此,仍有60%的嵌入式软件项目无法按计划完成,或被迫取消。因此,设计界对EDA工具的期待更加强烈。        从流片前的虚拟原型设计、模拟、FPGA原型,到流片后的首批硅片及参考设计,都需要加速开发的工具支持。        Mentor董事会主席兼CEO Wally Rhines在峰会上指出:“嵌入式软件将是EDA领域的下一场革命。”        Mentor公布了其所开发的嵌入式软件工具Sourcery CodeBench虚拟版,这套EDA工具包括IDE和创建工具、GN
[手机便携]
“2012中国国际嵌入式大会暨展览会”参会注册全面启动
在科技部、工信部及市科委的支持下,由上海市计算机学会和上海科学院等共同主办的“2012中国国际嵌入式大会暨展览会” 将于2012年6月19日—21日在上海世博展览馆4号馆举行。参会注册方式:登陆 www.embeddedchina.org 或致电021-54065141 2012中国国际嵌入式大会暨展览会日程表 注:主办方保留修改议程的权利
[嵌入式]
“2012中国国际<font color='red'>嵌入式</font>大会暨展览会”参会注册全面启动
可实现多串口转换的嵌入式串口网关的设计
引言 Internet 技术的广泛普及,全球各个领域的不同企业已经对 让设备联网 达成共识,而在工业控制和通信设备中,更多的却是符合RS232 标准的串行口设备。如何将多个串行口的数据转发到网络上,实现设备的远程控制、数据的远程传输便成了一个亟待解决的问题。同时,考虑到成本问题,以往设备又不可能全部淘汰。因此,本文提出一种嵌入式网关可从根本上解决这一难题。多串口转换网关使得串口数据流到以太网数据流的传输成为可能。它能连接多个RS232 串口设备,并将串口数据进行选择和处理,把RS232 接口的数据流转化成以太网数据流,这样就可以进行网络化的数据处理,实现串行数据的网络化。采用此种方案,无需淘汰原有串口设备,多台设备可同时入网,既
[电源管理]
关于嵌入式智能设备的测试方法的研究
   1 前言   智能软件Agent是能够为用户执行特定的任务、具有一定程度的智能、能够自主的执行部分任务并以一种合适的方式和环境相互作用的软件程序。Agent 有自主性、响应性、学习能力和社会性等特性。这使得它适合在高度动态的环境下做出及时的响应。   嵌入式技术和新一代移动通讯网络的发展使得嵌入式智能设备大量的涌现。这些设备的大都具有嵌入式操作系统的支持, 并运行着越来越丰富的应用程序。如何对这些应用程序进行测试,就成为一个需要研究的课题。本文将Agent技术引入嵌入式智能设备的测试中,使用目标设备Agent, 测试控制Agent, 网络环境Agent分别模拟和处理测试设备,测试工程师和测试环境的复杂性,利用Agent自
[测试测量]
关于<font color='red'>嵌入式</font>智能设备的测试方法的研究
德州仪器:壮大模拟及嵌入式产品阵营
  ●为了增加自己在不同模拟领域的实力,TI持续通过小规模的策略性并购强化自身在电源|稳压器管理、转换器、控制器与放大器等领域的实力。      ●太阳能电池、LED照明、风能发电等替代能源应用成为半导体市场的新热点。       通过收购扩大产品领域      模拟市场是所有半导体市场中最分散的部分,TI以13.6%的市场份额就已占据模拟半导体市场第一的位置,仍然有相当大的成长空间。2009年2月并购CiclonSemiconductorDevice,使TI涉足功率MOSFET市场,并提升产品的电源管理效率。在收购Ciclon一年之后,TI推出面向高电流DC/DC应用,成功打响进军MOSFET市场的第一役。此外,2008年TI收购
[半导体设计/制造]
嵌入式LWIP网络客户端设计教程
引言 嵌入式技术的兴起使得传统的基于PC机的互联网技术优势不再,嵌入式网络客户端与服务端技术成为热点,而该技术需要移植性高、占用资源小的协议栈,轻量级TCP/IP协议栈LWIP (light weight Internet protocol)比较适合嵌入式设备中存储容量有限的情况,而且能实现TCP/IP协议栈的基木功能,不影响设备的网络互联与传输服务。轻量级网络协议LWIP依附的硬件操作系统有RT_Thread 和uC/OS-II ,鉴于uC/OS-II是一款应用较为广泛、技术较成熟的操作系统,本文采用uC/OS-II操作系统设计网络客户端。实验结果表明:ping 32字节的数据,其收发正确,错误率为0%。 1 系统硬件
[嵌入式]
嵌入式系统开发现状及未来应用趋势解读
嵌入式系统(Embeddedsystem),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电器工程师协会的定义,嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。由于嵌入式系统通常进行大量生产。所以单个的成本节约,能够随着产量进行成百上千的放大。   嵌入式系统产业伴随着国家产业发展从通信、消费电子转战到汽车电子、智能安防、工业控制和北斗导航,今天嵌入式系统已经无处不在,在应用数量上已远超通用计算机,据相关机构统计,2012
[模拟电子]
<font color='red'>嵌入式</font>系统开发现状及未来应用趋势解读
ST与厦门大学合作研发32位嵌入式系统
2009年1月12日,意法半导体协同其增值服务商深圳市博巨兴,宣布与厦门大学签订合作协议,成立“ST嵌入式系统联合实验室”,并举行实验室揭牌仪式。意法半导体持续推动校园合作计划,与中国的大学携手开发嵌入式应用技术和培训电子工程专业学生,再迈出重要的一步。 作为32位微控制器的主导厂商之一,意法半导体将向厦门大学提供先进的基于32位ARM CORTEX-M3的STM32微控制器及其开发工具,信息科学与技术学院(通信工程系、电子工程系、自动化系、计算机系及智能科学与技术系)的本科生及研究生将参与意法半导体的实际项目的开发。此外,意法半导体将提供所需的全部培训和技术支持,从事教学和学术研究,协助大学院校及产业界培养更多的嵌入式系统设计
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved