ARM v7 Cortex A8及其开发平台 - 图文

更新时间:2024-05-14 23:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

ARM v7 Cortex A8及其开发平台

2011年03月06日 来源:网络 [责任编辑:doeboy]

中心议题

*ARM v7 Cortex A8及其开发平台

一、ARM Cortex处理器概述

随着嵌入式技术应用领域的不断扩展,对嵌入 式系统的要求越来越高,而作为嵌入式系统核心的微处理器也面临日益严竣的挑战。ARM公司从成立以来,一直以知识产权(IP,Intelligence Property)提供者的身份出售知识产权,在32位RISC CPU开发领域中不断取得突破,其设计的微处理器结构已经从v3发展到现在的v7。ARMv7架构是在ARMv6架构的基础上诞生的。该架构采用了 Thumb-2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案的完整的代码兼容性。Thumb-2技术 比纯32位代码少使用31%的内存,减小了系统开销,同时能够提供比已有的基于Thumb技术的解决方案高出38%的性能。ARMv7架构还采用丁 NEON技术,将DSP和媒体处理能力提高了近4倍。并支持改良的浮点运算,满足下一代3D图形、游戏物理应用以及传统嵌入式控制应用的需求。此 外,ARMv7还支持改良的运行环境,以迎合不断增加的JIT(Just In Time)和DAC(DynamicAdaptlve Compilation)技术的使用。

Cortex系列处理器是基于ARMv7架构的,分为Cortcx-M3、Cortex-R和Cortex-A三类。ARM Cortex-M3处理器是为存储器和处理器的尺寸对产品成本影响极大的各种应用专门开发设计的;ARM Cortex-R系列处理器目前包括ARM Cortex-R4和ARM Cortex-R4F两个型号,主要适用于实时系统的嵌入式处理器;而ARM Cortex-A8处理器是一款适用于复杂操作系统及用户应用的应用处理器。

Cortex-A8是ARM公司有史以来性能最强劲的一款处理器,主频为600MHz到1GHz,在65纳米工艺下,其功耗低于300毫瓦,而性能却高达2000MIPS。

ARM Cortex-A8处理器是第一款基于ARMv7架构的应用处理器,并且是有史以来ARM开发的性能最高、最具功率效率的处理器。Cortex-A8处理 器的速率可以在600MHz到超过1GHz的范围内调节,能够满足那些需要工作在300mW以下的功耗优化的移动设备的要求;以及满足那些需要2000 Dhrystone MIPS的性能优化的消费类应用的要求。

其结构如图:

Cortex-A8采用了复杂的流水线构架,针对强调功耗的应用,Cortex-A8采用了一个优化的装载/存储流水线,顺序执行,同步执行的超标量处理 器内核,其拥有13级主流水线,10级NEON多媒体流水线,可以提供2 DMIPS/MHZ的性能;它有优化的L1缓存,可以提高访存储问速度,并降低功耗;它有专用的L2缓存,在编译的时候,可以把缓存当作标准的RAM进行 处理,而缓存大小可以灵活配置,缓存的访问延迟也可以编程控制;它有基于执行记录的动态跳转预盼,这不仅提供高达95%准确性,而已也提供重放机制以有效 降低预判错误带来的性能损失;

在技术方面,使用了能够带来更高性能、功耗效率和代码密度的Thumb?-2技术。它首次采用了强大的NEONTM信号处理扩展集,对H.264和MP3等媒体编解码提供加速。Cortex-A8解决方案还包括Jazelle?-RCT Java加速技术,对实时(JIT)和动态调适编译(DAC)提供最优化,同时减少内存占用空间高达三倍。此外,新处理器还配置了用于安全交易和数字版权管理的TrustZone?技术和AMBA? 3 AXI?互连协议,而且实现低功耗管理的IEM功能。

不仅如此,针对Cortex-A8,ARM公司专门提供了新的函数库(Artisan Advantage-CE)。新的库函数可以有效的提高异常处理的速度并降低功耗。同时,新的库函数还提供了高级内存泄漏控制机制。

在高性能的90纳米和65纳米工艺下,Cortex-A8处理器运行速度最高可达到1GHz,从而满足高性能消费产品设计的需要,而这一切也使之成为实现下一代应用性能的最佳选择。 架构特性

ARM Cortex-A8处理器复杂的流水线架构基于双对称的,顺序发射的,13级流水线,带有先进的动态分支预测,可实现2.0 DMIPS/MHz。

顺序,双发射,超标量微处理器内核,13级主整数流水线

10级NEON媒体流水线 10-stage NEON media pipeline

专用的L2缓存,带有可编程的等待状态

基于全局历史的分支预测

结合功率优化的加载存储流水线,为功率敏感型应用提供2.0 DMIPS/MHz的速率 遵从ARMv7架构规范,其中包括:

用于实现更高的性能、能量效率和代码密度的Thumb-2技术

NEON?信号处理扩展,用于加速H.264和MP3等媒体编解码器

Jazelle RCT Java-加速技术,用于最优化即时(JIT)编译和动态自适应编译(DAC),并将存储器尺寸减小了多达3倍

TrustZone技术,用于安全交易和数字权限管理(DRM)

集成的L2缓存

使用标准编译的ARM建立而成

64K到2MB的可配置容量

可编程的延迟

优化的L1缓存

经过性能和功耗的优化

结合最小访问延迟和散列确定方式,以便将性能最大化,将功耗最小化。

动态分支预测

通过分支目标和全局历史缓冲区实现

按照行业基准,达到95%的准确率。

重放机制,以实现预测失败代价的最小化

存储器系统

访问L1缓存导致的单周期加载使用代价

L1缓存的散列数组使得只有在可能需要时才会启用存储器。

集成的、可配置L2缓存和用于数据流的NEON媒体单元之间的直连接口

Bank化的L2缓存设计,每次只设计1个Bank

支持多项与L3存储器之间的未完成事务,以充分利用CPU。

ARM公司日前发布最新的Cortex-A8处理器,它将给消费和低功耗移动产品带来重大变革,使得最终用户可以享受到更高水准的娱乐和创新。在于美国加州举行的第二届ARM开发者年度大会上发布的ARM Cortex-A8处理器最高能达到2000DMIPS,使它成为运行多通道视频、音频和游戏应用的要求越来越高的消费产品的最佳选择。在65纳米工艺下,ARM Cortex-A8处理器的功耗不到300毫瓦,能够提供业界领先的性能和功耗效率。ARM Cortex-A8处理器第一次为低费用、高容量的产品带来了台式机级别的性能。 支持智能能源管理(Intelligent Energy Manger,IEM)技术的ARM Artisan库以及先进的泄漏控制技术使得Cortex-A8处理器实现了非凡的速度和功耗效率。Cortex-A8处理器得到了大量ARM技术的支持,从而能够

实现快速的系统设计。这些支持包括:RealView DEVELOPOER软件开发工具,RealView ARCHITECT ESL工具和模型,CoreSight调试和追踪技术,以及对OpenMAX多媒体处理标准的软件库支持。 在同一天,德州仪器和ARM在第二届ARM开发者年度大会上共同宣布德州仪器第一个获得全新的ARM Cortex-A8处理器的授权。德州仪器同时也是在这一新处理器开发过程中领先的ARM合作伙伴。德州仪器将把Cortex-A8处理器用于其众多下一代超低功耗3G调制解调器以及高性能的OMPATM应用处理器。后者将以65纳米工艺进行生产,同时德州仪器的SmartReflex功耗和性能管理技术和M-ShieldTM安全解决方案也将提高其性能。 除了德州仪器之外,ARM已经成功地与另外四家公司达成了Cortex-A8处理器的授权协议,其中包括飞思卡尔、Matsushita和三星。同时,Cortex-A8处理器还获得了主要EDA和操作系统提供商今后的支持。 Cortex-A8处理器是第一款基于下一代ARMv7架构的应用处理器,使用了能够带来更高性能、功耗效率和代码密度的Thumb-2技术。它首次采用了强大的NEONTM信号处理扩展集,对H.264和MP3等媒体编解码提供加速。Cortex-A8解决方案还包括Jazelle-RCT Java加速技术,对实时(JIT)和动态调适编译(DAC)提供最优化,同时减少内存占用空间高达三倍。此外,新处理器还配置了用于安全交易和数字版权管理的TrustZone技术以及实现低功耗管理的IEM功能。 ARM市场营销执行副总裁Mike Inglis表示:“数字娱乐和移动通信技术的迅速融合对系统性能和安全提出了全新的要求,并且需要以有限的费用和功耗实现。全新的ARM Cortex-A8处理器及其背后提供支持的技术为家庭和移动市场带来了前所未有的性能和功耗水平,同时也将为消费者带来具有丰富媒体应用的创新的新设备。” Cortex-A8处理器配置了先进的超标量体系结构管线,能够同时执行多条指令,并且提供超过2.0 DMIPS/MHz。处理器集成了一个可调尺寸的二级高速缓冲存储器,能够同高速的16K或者32K一级高速缓冲存储器一起工作,从而达到最快的读取速度和最大的吞吐量。Cortex-A8处理器使用了先进的分支预测技术,并且具有专用的NEON整型和浮点型管线进行媒体和信号处理。在使用小于4平方毫米的硅片及低功耗的65纳米工艺的情况下,Cortex-A8处理器的运行速度将高于600MHz(不包括NEON,追踪技术和二级高速缓冲存储器)。在高性能的90纳米和65纳米工艺下,Cortex-A8处理器运行速度最高可达到1GHz,从而满足高性能消费产品设计的需要。 二、TI OAMP35x处理器的特点

德州仪器(TI)日前宣布推出四款新型 OMAP 处理器,采用最新上市的ARM Cortex-A8 内核技术,在单一芯片中实现了手持式功率级中堪比笔记本电脑的高性能功能组合。最新 OMAP35x 处理器进一步丰富了 TI 业经验证的领先无线手机技术,能够帮助主流客户满足新市场领域的要求,如车载应用、消费类设备、嵌入式以及医疗设备等。这种集成的单芯片处理器将照片级真实感 (photo-realistic) 图形效果与 TI 高级视频 DSP 技术相结合,在市场上各种单芯片组合中提供了最佳的集成多内核处理功能。这些革命性突破的应用处理器必将有助于 OEM 厂商针对重新定义用户界面、网页浏览、工作效率以及多媒体体验标准。

TI 的 OMAP35x? 处理器系列基于 ARM?Cortex?-A8 内核,由四款超标量应用处理器组成,提供了业界最佳的通用、多媒体和图形处理单芯片组合。Cortex-A8 是一款超标量内核,提供了超出 ARM9 四倍的性能提升。TI OMAP35x处理器系列共包含 OMAP3503、OMAP3515、:OMAP3525 以及 OMAP3530四款不同的单芯片处理器,其发展路线和主要特性如下两图:

OMAP3503:面向嵌入式主板运算处理的应用处理器

OMAP3503 应用处理器包含一个 ARM Cortex-A8 内核,集成了丰富的外设集,Cortex-A8 内核的时钟速度比 300MHz ARM9 提高了一倍,也因此实现了两倍性能的提升。由于采用弹性架构,OMAP3503再度提升两倍性能,能在单一处理器内支持指令级并行技术,从而在时钟速率不变的情况下加快了 CPU 吞吐量。Cortex-A8 的性能翻了两番,达到 1200 Dhrystone MIPS,从而能够运行 Windows Embedded CE 与 Linux 等全功能操作系统。它不仅能够帮助用户更快存取数据库、数据手册、电子表格、演示文件、电子邮件以及音视频附件,还可提高 网页浏览与视频会议等应用程序的运行速度。该处理器还支持更快的启动时间与Java 应用,非常适合嵌入式处理器电路板。

OMAP3515:面向游戏或便携式导航系统的应用

OMAP3515 应用处理器拥有与 OMAP3503 同样丰富的外设集和 ARM 内核,同时还附带有首次广泛提供的集成 OpenGL ES 2.0 图形引擎。基于 Imagination Technologies PowerVR SGX 图形加速器的 OMAP3515 可在手持设备上展现拥有 PC 游戏质量的图形,每秒可提供的多边形高达 1 千万个,能实现照片级真实感的图形效果,从而大幅增强了智能设备的用户界面。OMAP3515 是嵌入式游戏或简单便携式导航系统的理想处理器。

OMAP3525:面向嵌入式应用的多媒体处理功能

OMAP3525 应用处理器拥有与 OMAP3503 同样丰富的外设集和 ARM 内核,同时还附加集成达芬奇技术,用于音频、视频和成像,更能满足高清视频、影像、音频以及多媒体加速功能的需求。OMAP3525 是市场上首款能够在 500mW 以下提供高清解码的应用处理器。集成的达芬奇技术是硬件启用的视频和成像处理技术,加上专门的视频中心外设,能使 OMAP3525 以 720p、30fps 实现 MPEG-4 SP 高清视频解码。OMAP3525 是多媒体和视频应用的理想选择,将为用户带来新的性能标准,因此非常适合使用于便携式媒体播放器。。

OMAP3530:面向多媒体智能设备的单芯片解决方案

OMAP3530 应用处理器是一个扩展集器件,它将 OMAP3503、3515 和 3525 的所有特性合并于单一的芯片上。OMAP3530在单芯片上集成了 ARM、DSP、图形引擎、达芬奇技术以及丰富的外设集,因此能够满足高性能需求、低功耗工作与娱乐性应用。作为理想适用于因特网设备与便携式病人监护设备等各种潜在应用的处理器,OMAP3530 在针对电源而优化的设计中提供了高集成度特性,因而能够以更轻薄时尚的外形带来各种新型诱人应用。另外,全新用户接口与图形功能还有助于更方便地集成至现有的商业或消费类产品设计中。因此借助 OMAP3530,OEM 将能够向用户交付高性能、低功耗的娱乐应用。

为了提高该性能等级的产品对嵌入式应用的吸引力,OMAP35x 处理器还支持在电量极为有限的环境下运行有关应用。为了实现这种功耗等级,OMAP35x 处理器集成了三种技术。首先,处理器架构采用多内核设计,这样每个内核都能专注处理各自负责的任务,从而实现效率最大化。其次,该处理器采用 65 纳米低功耗工艺制造而成。最后,该产品采用 TI 的 SmartReflex技术,能根据设备工作情况、工作模式、工艺技术以及温度变化等因素动态控制电压、频率与功耗。

这些处理器提供了多种组件结合的不同解决方案,其中包括 Cortex-A8 内核、丰富的多媒体外设、符合 OpenGL ES 2.0 标准的图形引擎、视频加速器以及TMS320C64x+ DSP 内核。专为以视频为中心的客户设计的达芬奇软件技术,更可运用在最高视频性能的OMAP3525

与 OMAP3530中。由超过400多家公司组成的TI Developer Network也能提供从操作系统实施到应用用户接口的丰富专业技术,以支持最新OMAP35x 处理器的开发工作。上述应用处理器还支持12MP相片捕获功能,且引脚对引脚兼容,因此能够帮助 OEM 厂商在单一平台的基础上方便高效地创建完整产品系列。基于前代 ARM器件及 C64x+ DSP 开发的软件也能与 OMAP35x 处理器的内核相兼容。 三、EVM的行业应用

围 绕着TI全新的OMAP35X应用处理器,天漠科技立刻在第一时间推出了的基于OMAP35x系列的EVM开发平台,开发平台不仅拥有更加友好的用户界 面,便携式设备更加小巧、电池寿命更长,而且通过以单芯片在手持设备功率级上提供如同笔记本电脑般的性能,能更好的满足消费者的实际应用需要和特殊的应用 需求。这块命名Embest_OMAP_EVM的开发平台,主要包括如下配置:

DDR 266或333,容量可扩展到64*32bit

标准的FLASH,扩展可以多种容量(<32GB,如果要启动容量<8G) 兼容4/8位,1.8V/3.3V逻辑的SD/MMC接口。 高速 USB OTG,HOST接口 100M/10M自适应网卡 立体声输出、输入 S-VIDEO输出 RS232接口 12位的Camera接口 24位色彩 3.3V逻辑 的LCD接口

多功能扩展接口(SPI、IIC、UART、MMC、MCBSP、GPIO) 6*6的矩阵键盘接口 总线接口 JTAG调试接口

该开发平台将成为这些新型设备和如下应用的核心: 1. 安防终端设备解决方案

安全是指保护资产(物理和逻辑)免遭非法访问、失窃或损坏。在当今日渐无常的世界中,人们对安全、防卫和隐私保障的需求日渐增强,这也就促进了各种智能安防解决方案的诞生,包括防卫监控,指纹识别、加密以及智能卡等新型技术。

如利用Embest开发平台上的Camera接口,视频处理技术,音频处理技术等,可以做监控应用 ,如图所示:

为了能在所有照明条件下工作,我们也可以在其监控范围内添加了 LED,需要使用的 LED 数量取决于目标距离,以及成像器的大小和类型。对于彩色、黑白和红外成像器来说,要求各不相同。确定所需 LED 数量的最佳方法仍是根据经验判断所需的照明。我们通过TI 的 TPS54xx/TPS402xx 能够高效地提供转换以驱动 LED。在具有嘈杂声音的地方,如商业区或街道,具有集成数据转换器的 MSP430 非常适合于对声音进行处理并对信号预进行过滤,以便将数据转换器的敏感度调节到噪声基底。OPA36x 缓冲器系列和 DRV13x/DRV600 音频驱动器能确保在整个传输路径中保持信号保真度。在软件方面,可通过电机控制算法使安全操作员能够通过操纵杆接口控制摄象机的移动,软件还会创建用于显 示摄像机名称、日期和时间的时间戳。为摄像机中的图像标上时间戳可以最大限度地减少对操作员级视频输入的外部篡改能力。在音频信号路径中,软件将对数据转 换器的灵敏度进行筛选和修改,并负责同步音频和视频。

2. 工业终端设备解决方案

GPS 技术已成功应用到许多资源中,远远超出了其导航和资产跟踪的初始设计目标。新的便携式 GPS 导航设备 (PND) 可提供精准定位并且集成了许多消费类电子功能,GPS 帮助人们提高了效率,并且使通勤变得更加安全、轻松。

如利用Embest开发平台本身的处理计算能力,视频处理技术,音频处理技术在接上GPS模块,就可以做个人导航设备应用了 ,如图所示:

精准定位是 GPS 的主要目标;实现便携性要求更小尺寸、更低成本、更低功耗和更高性能的分立 GPS 解决方案。OMAP 处理器是一款节能型的 TI 增强型基于 ARM 架构的应用处理器,它将高性能生产应用与移动娱乐应用组合在一起。 3. 视频和影像终端设备解决方案

典型的 IP 视频电话是一款小型一体化台式电话,它消除了视频会议的复杂性并且允许在全球任何地方通过宽带 IP 连接拨打免费的面对面视频电话。这些产品为大小型企业、政府机构和教育环境提供更有成效的工具,更高效地提供培训和教育,并省去沉重的出差费用。随着 IP 网络部署的继续增长,消费者期望获得额外功能和经济高效地集成视频流功能。 Embest开发平台在对实时图像进行捕捉处理,颜色空间变换和实时显示,压缩与解压缩,以及在多个视频流上同时执行 IP 包优化的功能。如图所示:

IP 视频电话解决方案具有以下 各种功能:

实时多通道视频集成到现有的 IP 语音电话; 三方视频会议;

以及实时同步视频与 IP 网络语音。

不仅如此,客户可以利用TI在视频方面深厚而广泛的专业技术快速而经济高效地差异化在所有细分市场中的产品。Embest也分别拥有一系列针对不同细分市场的定制解决方案,通过提供软件、工具、第三方和本地支持简化了开发过程。

4. 通信与电信终端设备解决方案

如果当今的智能电话集成了具有基础多媒体功能的个人整理程序和电子邮件管理工具,以及手持终端功能,则通常的“开机”时间相比入门级移动电话的开机时间, 对于最终用户而言更为关键。特性集推动了对强大处理功能、更大(更清晰)显示屏、触摸屏控制和麦克风功能的需求。若要满足电话的性能和外形尺寸要求,必须 仔细考虑电源电流和封装尺寸。因此,迁移到集成了音频、ESD 保护、电源管理和整体供电效率的 D 类音频放大器、触摸屏控制器就尤为重要。

为了满足不断扩大的中端无线市场对高级多媒体特性的日益增长的需求,Embest 提供了基于OMAP的解决方案。通过外加一些通信模块,就可以做成一个实现了多个通信标准以及无线LAN、GPS和Bluetooth?手持终端,凭借创新的 3D 图像、高质量视频应用和高级用户界面提升了用户体验。 如下图:

5. 无线通信终端设备解决方案

Embest开发平台加上一个天线模块和音频处理模块也完全可以做一个PDA的应用,允许用户通过触摸屏或键盘使用命令将数据输入到 PDA 中。视频、图片、因特网、应用程序显示在小型 LCD 上,有时也可以通过电视或投影仪连接显示在大屏幕上。可通过个人耳机连接、外部音频输出插口或内置扬声器输出音频。也可以把 PDA 连接到其它外设,例如通过 USB 或无线 LAN 连接到 PC、连接到蓝牙耳机、通过电视输出、S 视频或 HDMI 收发器连接到电视或监视器、连接到 MMC/SD 存储卡。应用如图所示:

6. 消费电子终端设备解决方案

在消费类电子Embest开发平台基于OMAP 35X系列芯片可以做到很多应用,比如做一个便携式媒体播放器,它能录制并播放来自电视、DVD 播放器、摄像机的音频/视频 (A/V) 或从因特网下载的媒体文件的手持音频/视频系统。这些器件通常基于硬盘或闪存介质,能够保存数小时的内容和提供娱乐,给用户带来无比愉悦的视听享受。其应用如下图:

7. 医疗电子终端设备解决方案

对于医疗器械方面的应用,TI一直在做着不懈的努力,而Embest开发平台加上其他的模块,也可以用到医疗器械上,比如:便携式医疗仪表,数字听诊器, 病患监控,输液泵,通风机,心电图仪器等,我们以病患监控仪为例,来谈谈这块开发平台的应用。病人监护仪是能够适应各种临床应用、支持各种有线和无线接口 的灵活的便携式设备。无论监护仪是单参数设备还是多参数设备,目标功能、功耗和多功能系统通常是关键要求。如今,监护仪可以跟随病人出入手术室、重症监护 室、病房,甚至他们的住宅。这对当今世界医疗事业极为重要。应用如图:

当今的病人监护仪最重要的特性是可移动性、简便易用和可轻松进行病人数据传输。可移动性包含便携性和与其它医疗设备(如麻醉机或除颤器)相连的能力。简便 易用可通过触摸屏和多级菜单驱动的配置文件来实现,这些配置文件可以根据环境和病人的重要统计数据进行配置。需要在从无线到 RS232 的所有设备上实现数据传输。所有地区的医院可能都会支持某个特定的基础设施;而救护车、住宅和其它环境则需要支持不同的协议。最大程度地降低医疗成本这一 不断增加的需要正在促使医疗供应商在医院外进行病人治疗和监

控。为新兴经济体中人口高度集中的农村和偏远地区提供医疗正在推动对远程病人监控和远程医疗的 需要。

四、未来Cortex A系列处理器发展趋势

面对未来市场需求,ARM也将研发重点放在Cortex系列处理器,以实现更高性能和更低功耗及成本。

Cortex A9是ARM于2007年下半年推出的最新一代内核,有单核和多核两个版本。单核的Cortex-A9在性能上大抵相当于已推出的Cortex-A8处理器。A9系列还有两个、三个乃至四个内核集群的产品,能提供超过8,000Dhrystone Mips(DMIPS)的对称多处理(SMP)性能。这种内核是可综合的,采用先进工艺时的时钟频率有望超过1GHz,不过当时钟减慢或内核被关断时才可达到最大功率效率。此外,这种架构可以扩展到四个以上的内核。相对于Cortex A8,Cortex A9的功耗更低,效率更高。

A9内核是Cortex-A8的改进版,它增加了几条支持多处理的额外指令,并后向兼容。像A8一样,A9也是超标量体系结构,带有一个多事件8级流水线。程序对前面的分支解算进行异步评估,目的在于取指,每时钟周期允许连续获取和解码两条指令。 不过A9流水线更进一步,还支持乱序指令分发及完成。 这种新的架构带有一个支持硬件加速器和DMA单元的加速器一致性端口(ACP),增强了ARM目前的多处理器能力;带有中断虚拟化功能,支持TrustZone技术;还带有一个通用中断控制器(GIC)。

作为一个完全成熟的ARMv7器件,A9 MPcore支持Thumb2 指令、TrustZone、浮点运算单元(FPU)与Neon——用于流媒体处理的ARM单指令多数据扩展。与每个内核相关的指令和一级数据缓存都整合了缓存一致性支持,通过一个Snoop控制单元(SCU)进行同步。有一条本地一致总线与SCU相链接。

预计2009年底第一款使用Cortex-A9的器件将上架销售,2010年开始量产。 至于下一代体系结构的发展是由不断涌现的新产品和变化的市场来推动的。关键的设计约束是显而易见的,功能,性能,速度,功耗,面积和成本必须与每一种应用的需求 相平衡。保证领先的性能/功耗(MIPS/Watt)在过去是ARM成功的基石,在将来的应用中它也是一个重要衡量标准。随着计算和通讯持续覆盖许多消费领域,功能也变得愈来愈复杂,消费者期望有高级的用户界面,多媒体以及增强的产品性能。

ARM多核Cortex-A9处理器解剖

2011年03月06日 来源:网络 [责任编辑:doeboy]

中心议题

*ARM Cortex-A9处理器解剖

许多主流处理器应用对性能的要求都日益提高,以实现更快的数据速率、更多的媒体服务和更多新功能(如利用丰富动态用户界面的加密和安全等功能)。在此类应 用中,消费者需求是促进产品开发的主要驱动力,因此降低终端产品成本就成了制造商面临的一大挑战。这并不仅仅是竞争问题:同时也关乎在发展中国家开辟新市 场的工作,这些国家的可支配收入要比西方世界少得多。

在应用领域,既要求低成本又要求高性能的实例不在少数,比如:联网手提电脑及其他便携式设备、手机、PDA、机顶盒应用、游戏机以及车载信息娱乐设备等等,不一而足。 消费者不但希望产品功能更强大,也期望便携式产品的电池使用寿命更长。如今,全天候使用已经成为最低要求,为了达到这一要求,电话、智能电话和PDA厂商们必须着眼如何有效率地提升产品性能、增加产品功能。

拿智能电话来说,其性能要求既包括待机时的非活动状态,也包括游戏时的高度活动状态。因此,其系统架构必须能够有效支持产品性能的“两极”。

采用多核处理器架构不但能够解决峰值性能的要求,而且其设计也能够大大降低功耗。多核设备具有性能可扩展性高和功耗低的特点,为设计提供了极大的灵活性。

最新开发的ARM Cortex-A9处理器是ARM处理器系列中性能最高的一款产品,该款处理器采用了广受支持的ARM v7架构,充分实现了其丰富性。Cortex-A9处理器的设计是基于最先进的推测型八级流水线,该流水线具有高效、动态长度、多发射超标量及无序完成特征,这款处理器的性能、功效和功能均达到了前所未有的水平,完全能够满足消费、网络、企业和移动应用等领域尖端产品的要求。

Cortex-A9微架构提供两种选项:可扩展的Cortex-A9 MPCoreTM多核处理器和较为传统的Cortex-A9单核处理器。可扩展的多核处理器和单核处理器(两款不同的独立产品)支持16、32或64KB四路组相联一级缓存的配置,具有无与伦比的灵活性,皆能达到特定应用和市场的要求。

满足多重市场的要求

Cortex- A9处理器为包括手机、高端消费类电子和企业产品在内的多种市场应用提供了一种具有可扩展性的解决方案,因为该款处理器满足了以下各项要求:1. 降低功耗、提升功效和性能;2. 提升峰值性能,适应各种要求最为严苛的应用,开发不同设备时可复用软件和工具;3. 两款Cortex-A9处理器皆具有完美的应用兼容性;4. 媒体处理引擎(MPE)或浮点运算单元(FPU)还能加强特定应用中的性能表现,进一步扩大了这两款处理器的市场应用范围。

两款处理器的应用设计配置均具有极大的灵活性,允许根据具体应用和特定市场的要求进行定制。 先进的微架构

Cortex- A9微架构的设计不但着眼于解决超高频设计的效率低下问题,而且把目标定为在不增加嵌入式设备硅成本的前提下最大限度地提升处理效率。通过综合技术,这种 处理器设计能使设备的时钟频率超过1GHz,而且提供了较高的功效水平,满足了长时间电池供电工作的要求。 流水线性能介绍

Cortex- A9处理器最主要的流水线性能包括以下几条:第一,先进的取指及分支预测处理,可避免因访问指令的延时而影响跳转指令的执行;第二,最多支持四条指令 Cache Line预取挂起,这可进一步减少内存延时的影响,从而促进指令的顺利传输;第三,每个周期内可连续将两至四条指令发送到指令解码,确保充分利用超标量流 水线性能。Fast-loop模式:执行小循环时提供低功耗运行;第四,超标量解码器可在每个周期内完成两条完全指令的解码;第五,支持指令预测执行:通 过将物理寄存器动态地重新命名至虚拟寄存器池来实现。 第六,提升了流水线的利用效率,消除了相邻指令之间的数据依赖性,减少 了中断延时;第七,支持寄存器的虚拟重命名:以一种有效的、基于硬件的循环展开方法,提高了代码执行效率,而不会增加代码大小和功耗水平;第八,四个后续 流水线中的任何一个均可从发射队列中选择执行指令—提供了无序分配,进一步提高了流水线利用效率,无需借助于开发者或编译器指令调度。确保专为上一代处理 器进行优化的代码能够发挥最大性能,也维护了现有软件投资。

第九,每周期支持两个算术流水线、加载-存储(load- store)或计算引擎以及分支跳转的并行执行;第十,可将有相关性load-store指令提前传送至内存系统进行快速处理,进一步减少了流水线暂停, 大幅提高了涉及存取复杂数据结构或C++函数的高级代码的执行效率;第十一,支持四个数据Cache Line的填充请求:而且还能通过自动或用户控制预取操作,保证了关键数据的可用性,从而进一步减少了内存延时导致的暂停现象;第十二,支持无序指令完成 回写:允许释放流水线资源,无需受限于系统提供所需数据的顺序。 Cortex-A9 MPCore技术

Cortex-A9 MPCore多核处理器是一种设计定制型处理器,以集成缓存一致的方式支持1到4个CPU内核。可单独配置各处理器,设定其缓存大小以及是否支持FPU、 MPE或PTM接口等。此外,无论采用何种配置,处理器都可应用一致性加速口,允许其他无缓冲的系统控制外设

及加速器(如DMA引擎或加密加速器)核与一 级处理器缓存保持缓存一致。另外还集成了一种符合GIC架构的综合中断及通信系统,该系统配有专用外设,其性能和软件可移植性都更上一层楼,适当配置后, 可支持0(legacy bypass 模式)到224个独立中断资源。这种处理器可支持单个或两个64位AMBA3 AXITM互联接口。

Cortex-A9 MPCore多核处理器采用了通过硅验证的ARM MPCore技术的增强版,实现了可扩展型多核处理: 侦测控制单元(SCU)

SCU 是ARM多核技术的中央情报局,负责为支持MPCore技术的处理器提供互联、仲裁、通信、缓存间及系统内存传输、缓存一致性及其他多核功能的管理。同 时,Cortex-A9 MPCore处理器还率先向其他系统加速器及无缓冲的DM A驱动控制外设开启此类功能,通过处理器缓存层次的共享,有效地提高了性能、减少了整个系统的功耗水平。不仅如此,利用这种系统来维持每个操作系统驱动中 的软件一致性,软件复杂性就大大降低了。 加速器链接埠

这个与AMBA 3 AXI兼容的Slave接口位于SCU之上,为多种系统Master接口提供了一个互联接口;出于总体系统性能、功耗或软件简化等方面的考虑,最好直接将 这些Master接口与Cor tex-A9 MPCore处理器相连。这是个标准的AMBA 3 AXI Slave接口,支持所有标准读写事务,对所接部件无任何附加一致性要求。

然而,指向某个一致内存区的读取事务要与SCU发生作用,以检测所需信息是否已经存储在处理器的一级缓存之中。若检 测出确已存储,相应信息将被直接返回给发出请求的组件。如果一级缓存中不存在该信息,在最终传给主内存之前也可能检测二级缓存。对于指向一致内存区的写入 事务,SCU会在把写入事务传送至内存系统之前强制确保一致性。也可选择性地将事务分配给二级缓存,以避免直接写入片外内存所带来的功耗及性能影响。 通用中断控制器(GIC)

该 GIC采用了最近标准化和架构的中断控制器,为处理器间通信及系统中断的路由选择及优先级的确定提供了一种丰富而灵活的解决办法。最多支持224个独立中 断,通过软件控制,可在整个CPU中对每个中断进行分配、确定其硬件优先级并在操作系统与信任区软件管理层之间进行路由。这种路由灵活性加上对中断虚拟进 入操作系统的支持,是进一步提升基于半虚拟化管理器解决方案功能的关键因素之一。 先进的总线接口单元

Cortex-A9 MPCore处理器增强了处理器与系统互联之间的接口性能,其先进特色功能最大限度地提高了系统性能,为各种系统集成芯片设计理念创造了更大的灵活性。

这 种处理器支持单个或两个64-b i t AMBA 3 AXI Master接口的设计配置,可以按CPU的速度全负荷地将事务传送至系统互联之中,最高速度可达12G B/s以上。另外,第二接口也可定义某种事务过滤,只处理全局地址空间的一部分;也就是说,可在处理器内部直接对地址空间进行切分,进一步加强了系统设计 的灵活性。

而且每个接口还支持不同的CPU-总线频率比(包括同步半时钟比),不但提高了设计灵活性,而且为需要考虑DVFS或高速集成内存的设计增加了系统带宽。同时为完整的A RM智能能量管理 (IEM)功能提供了良好的支持。 特定应用的计算引擎加速

处理器不但拥有优化的标准架构特色,而且还可增加以下任一设计功能:

先进二级缓存控制器:ARM二级缓存控制器(PrimeCell PL310)与Cortex-A9系列处理器同步设计,旨在提供一种能匹配Cortex-A9处理器性能和吞吐能力的优化二级缓存控制器。

最新开发的ARM Cortex-A9处理器采用了广受支持的ARM v7架构,处理器性能、功效和功能均达到了前所未有的水平,完全能够满足消费、网络、企业和移动应用等领域尖端产品的要求。。

PL310最多可为每个接口提供8项AXI事务支持,支持按Master接口进行锁定;这样一来,即通过将PL310用作加速器与处理器之间的缓冲器,充分利用一致性加速口,实现多个CPU或组件之间的可控共享,既提升了系统性能,也降低了相关功耗水平。

另外,PL310不但具有Cortex-A9先进总线接口单元的各项功能,支持同步1/2时钟比,有助于减少高速处理器设计中的延时现象,而且能够对第二MasterAXI 接口设置地址过滤,分割地址和频率域、以及集成片上内存的快速存取提供了支持。

PL310最高可支持2 M B的四至十六路组相联二级缓存,可与奇偶校验及支持E C C的R A M集成,而且运行速率能够与处理器保持一致。而先进的锁定技术也提供了必要的机制,从而将缓存用作相关性加速器和处理器之间的传输RAM。

Cortex-A9 程序跟踪宏单元(PTM):Cortex-A9 PTM为两款Cortex-A9处理器提供了兼容ARM CoreSight技术的程序流跟踪功能,能够对处理器中的实际指令流实现完全可视化的管理。Cortex-A9 PTM通过周期计数实施性能分析,可对所有代码分支和程序流变动进行跟踪管理。 另外提供Cortex-A9 CoreSight设计套件,可使来自多个处理器的跟踪流具备相关性,而且包括跟踪和调试Cortex-A9 MPCore多处理器设计所需要的全部CoreSight组件。 综合灵活性和参考方法

Cortex- A9处理器充分发挥了综合性设计流程的灵活性,其相关产品能够应用于任何代工厂和工艺节点。通过与各大EDA公司开展持续合作,ARM制定了专门的“实现 参考方法”(iRM),使Cortex-A9处理器的授权客户能够根据所选工艺技术对处理器进行定制、实现、验证和差异化处理。这些参考方法结合了逻辑和 物理综合技术,提供了一条可预测的硅技术之路,构成了定制方法开发的基础。此外,iRM还可整合ARM Artisan前端库文件以及经过预编译的RAM,增强了iR M实现处理器实施工艺的能力,在完整性上远远超过了已有参考解决方案。

开发工具与生态系统

所有ARM处理器都拥有ARM RealView开发工具套装、多种第三方工具、操作系统和EDA厂商的支持。

ARM RealView工具拥有独特的功能,其所提供的解决方案涵盖从概念化到最终产品的整个开发过程。RealView套装中的每种工具都与ARM硬件和软件 IP协同开发,为IP发挥最佳性能提供了保障。没有其他供应商能够为ARM IP提供这种涵盖系统、处理器设计和软件开发全部过程的独特端对端工具链支持。

通过ARM RealView套装提供的多种既相互独立又相互联系的工具,构架设计师和开发人员完全可以满怀信心地、以前所未有的速度将优质产品投放市场。

第三方支持

ARM 合作伙伴联盟是业界规模最大的合作伙伴网络,由领先的硅、系统、设计支持、软件和培训服务供应商组成。通过这个网络,系统设计师可以获得大量ARM 技术和优化IP,并为基于A R M架构的产品提供了一个涵盖设计、制造和最终应用等过程的完整解决方案。有关详情,可访问http://www.arm.com/community。 物理IP

ARM 的Artisan物理IP产品的设计目的是在性能、密度、功耗和特定制造工艺的产量之间达最佳平衡。产品涵盖各种45-250纳米工艺,同时提供多种格式 和模型,并为业界主要的EDA工具提供了支持。ARM Artisan IP平台及产品组合提供了多种选择,完全能够满足系统集成(SoC)设计师的需求。 AMBA

AMBA互联总线协议构成了集成互联规范(起到集成设计框架的作用)实际行业标准的基础, 有效提供了将各个IP组件粘接起来的‘数字胶水’。同时也是ARM 设计可复用战略的主干。 通 过更广范围的系统集成商的支持,ARM将竭力提供业界技术最先进、支持最完善且免费的互联规范。目前,外设 IP的PrimeCell组合支持AMBA协议的第2和第3版发表的协议,该协议定义了AMBA AXITM、AHBTM、AHB-Lite、APB和ATB规范。

完整的系统解决方案

两款ARM Cortex-A9处理器都包含ARM特定应用架构扩展集,包括DSP和SIMD扩展集和Jazelle® 技术、TrustZone和智能功耗管理(IEM?)技术。此外,ARM已开发一整套支持新处理器的技术,以缩短设计时间并加快产品上市时间。这一完整的系统解决方案包括:

? 浮点单元(FPU):Cortex-A9 FPU提供高性能的单精度和双精度浮点指令。

? 媒体处理:Cortex-A9 NEON媒体处理引擎(MPE)提供了Cortex-A9 FPU所具有的性能和功能,以及在Cortex-A8处理器中首次推出的用于加速媒体和信号处理功能的ARM NEON 先进 SIMD指令集。

? 物理IP:提供在Cortex-A9处理器上实现低功耗、高性能应用所需的众多标准单元库和存储器。标准单元包括功耗管理工具包,可实现动态和漏泄功耗节省技术,例如时钟门控、多电压岛和功率门控。还提供具有先进的功耗节省功能的存储编译器。

? Fabric IP:Cortex-A9处理器得到广泛的 PrimeCell® fabric IP元件的支持。这些元件包括:一个动态存储控制器、一个静态存储控制器、一个AMBA® 3 AXI可配置的内部互连及一个优化的L2 Cache 控制器,用于匹配Cortex-A9处理器在高频设计中的性能和吞吐能力。

? 图形加速: ARM Mali? 图形处理单元及Cortex-A9处理器的组合,将使得SoC合作活动能够创造高度整合的系统级解决方案,带来最佳的尺寸、性能和系统带宽优势。

? 系统设计:ARM RealView® SoC Designer工具提供快速的架构优化和性能分析,并允许在硬件完成以前很长时间即可进行软件驱动程序和对时间要求很严格的代码的早期开发。 RealView系统发生器(RealView System Generator)工具为基于Cortex-A9处理器的虚拟平台的采用提供超快建模能力。Realview工具中关于Cortex-A9处理器的基于周期的(cycle based)及程序员视角的模型将于2008年第二季度上市。

? 调试: ARM CoreSight?片上技术加速了复杂调试的时间,缩短了上市时间。程序追踪宏单元技术(Program Trace Macrocell technology)具有程序流追踪能力,能够将处理器的指令流完全可视化,同时配置与ARMv7架构兼容的调试接口,实现工具标准化和更高的调试性能。用于Cortex-A9处理器的CoreSight设计工具包扩展了其调试和追踪能力,以涵盖整个片上系统,包括多个ARM处理器、DSP以及智能外设。

? 软件开发:ARM RealView开发套件(ARM RealView Development Suite)包括先进的代码生成工具,为Cortex-A9处理器提供卓越的性能和无以比拟的代码密度。这套工具还支持矢量编译,用于NEON媒体和信号处理扩展集,使得开发者无需使用独立的DSP,从而降低产品和项目成本。包括先进的交叉触发在内的Cortex-A9 MPCore多核处理器调试得到RealView ICE和Trace产品的支持,同时也得到一系列硬件开发板的支持,用于FPGA系统原型设计和软件开发。

40nm版(台积电)

ARM Cortex-A9 ,基于台积电的40nm-G制造工艺,已经开发出两款Cortex-A9微架构双核处理器设计方案,分别对应高性能和低能耗。其高性能版本将把ARM处理器的频率上限提高到2GHz以上。

ARM的Cortex系列处理器设计近来在移动市场大行其道,包括iPhone 3GS、Palm Pre以及频率高达1GHz的东芝TG-01等最新顶级智能手机实际上都是基于Coretex-A8核心,而近来发展方兴未艾的Smartbook智能本基本上也都是这一架构处理器的应用产品。

Cortex-A9将继续这一路线,由于从Cortex-A8普遍使用的65nm工艺升级到40nm,Cortex-A9高性能版本将在使用双核心的同时,把频率拉高到2GHz以上,同时依然保持超低功耗,预计高性能Smartbook将是它的主要战场。

低功耗版本方面,主要面向机顶盒、数字电视、打印机及其他应用,运算能力可达4000DMIPS,同时功耗不足0.25W。

和Cortex-A8一样,ARM将把该核心设计授权给多家厂商进行再开发和制造,包括德州仪器、Broadcom、高通、三星等ARM授权厂商预计从今年第四季度开始就将推出该架构的处理器产品。

28nm版(GlobalFoundries)

GlobalFoundries成功流片了基于ARM Cortex-A9双核心处理器的技术质量检验装置(TQV),而且第一家使用了28nm HP高性能工艺、HKMG(高K金属栅极)技术。

28nm与40nm的比较

GF透露,这次TQV是今年八月份在位于德国德累斯顿的Fab 1晶圆厂内完成的,使用了一整套优化的ARM Cortex-A9物理IP,能从每一个方面模拟真正的SoC产品,从而实现最大程度的频率分析、缩短产品设计周期的时间,还有完整的可测性设计 (DFT)。据透露,新处理器的工作频率在2.0-2.5GHz之间,比上代40nm工艺版本快了500MHz左右,性能也有明显提升。

GF、ARM估计,相比于40nm工艺,新的28nm工艺制造平台能带来40%的计算性能提升、30%的功耗下降、100%的待机电池续航能力提升。

这也是GF、ARM去年十月宣布的战略合作的一部分。GF预计今年年底拿出新处理器的实际样品。

顺便说一句,ARM处理器可能会让很多人感到陌生而遥远,但实际上我们身边到处都是它的影子,目前全球使用量估计高达200亿颗,占全部嵌入式32位RISC处理器的90%之多。

双核Orion(三星)

三星公布了基于Cortex-A9架构的全新双核处理器,这或许也是首款真正意义上的双核手机

处理器。先不问它的主频如何如何高,三星官方对这款新处理器的描述,说了个细节:3D运算处理提升五倍!

不过,这款名叫Orion的处理器,主频仍然为1GHz,远没有之前传言的 2.0-2.5GHz那样强大(2.0-2.5GHz应该是指诸如平板电脑这种移动终端设备)。并且工艺是45NM的,虽然比起Cortex-A8的 60NM有提高,但仍没达到GlobalFoundries前两天Cortex-A9的28NM(不过28NM工艺的手机处理器,迟早的事)。 由于这款处理器是双核的,想必未来若运用到手机上,在多任务处理上,提升也会很大的。同时,这颗双核处理器还将支持1080p全高清视频解码能力,且能通过HDMI接口同时对3个屏幕进行视频输出。

目前,Cortex-A8被广泛运用到高端旗舰手机上面。诸如iPhone 4、i9000、3GS和Milestone等强机,均是采用的此构架的处理器,其性能,用过的也都知道它的强大。

至于Cortex-A9什么时候正式上市,据三星官方称,这颗基于Cortex-A9架构的双核处理器将于2011年上半年正式投产。

飞思卡尔iMX515

主频为800MHz,目前还到不了1GHz,采用该方案的山寨平板样机已经可以在市场上看到,内存可支持到512M,最高视频输出为720P。这样的硬件平台和Android2.2配合起来才比较理想。

三星C100/C110

基于ARM Cortex-A8内核,主频在1GHz,512M内存,可以直接上Android2.2,性能超强,据说iPad里面的A4处理器,都是三星设计和代工,苹果虽然不承认,但三星芯片的强大大家都是知道的。不说iPad,魅族手机被称为最像iPhone的手机,它的下一代M9手机,就是采用三星C110 芯片。

Nvidia Tegra 2

一直以来,Tegra都是非常让人期待的,就是外面吹的挺响,不见产品出来。现在终于有眉目了,万利达即将上市的一款ZPad,就准备采用Tegra 2芯片。Tegra 2性能很强劲,内建ARM双核Cortex A9处理器,主频到1GHz,最高支持1GB内存,支持1080P的全高清视频播放,多媒体方面增加了对Flash 10的支持,3D性能是Nvidia的强项就不用多说。不过大家要做好心理准备,Nvidia的东西是不会太便宜,估计终端的品牌价格会达到3K。

本文小结

Cortex-A9和Cortex-A9 MPCore是ARM处理器家族中的两个新成员,旨在满足单核和多核处理器设计需求。两款产品采用了相同的微架构,整合了多种特色功能,使处理器核心和整个集成系统的架构功能、性能和功效得到了大幅提升。

单 核处理器比现有ARM11级设备提供了更好的性能和功效,不但增强了移动设计的功能,而且降低了功耗水平,延长了电池使用寿命。而在实现方面,这款处理器 还具有出色的架构软件兼容性,能够在达到Cortex-A8级性能的前提下降低成本,从而扩大了相关软件投资的市场应用范围。

而MPCore型处理器则拥有先进的电源管理功能,能够进一步降低功耗,达到并超过了日益增多的市场和应用对功耗的要求。除此之外,Cortex-A9 MPCore还拥有卓绝的性能可扩展性,将 A RM 处理器设计中浑然天成的功效特性奉献给了更多的市场领域。

全部配套技术专门针对两款Cortex-A9处理器而设计,能够很好地满足特定应用和市场所要求的性能,尤其是无线、娱乐、成像及其他高端多媒体应用。 Linux 的 Spinlock 在 MIPS 多核处理器中的设计与实现 引言

随着科技的发展,尤其是在嵌入式领域,高性能、低功耗的处理器成为众多厂商追逐的目标,但是由于技术和工艺的瓶颈,试图在单核处理器上达到这样的目标变得越发困难,于是人们提出了多核处理器的概念。多核处理器的核心思想是一个处理器中包含若干个核(或线程),所有核(或线程)之间共享 IO、Cache、内存等资源,对于这些资源的使用和分配由硬件来完成,用户无需关注细节,因此每个核(或线程)对于用户来说就好像一个独立的虚拟 CPU,从用户角度来看,这个虚拟 CPU 独占所有的外设资源。 目前比较流行的多核处理器的架构有下面几种: (1)SMP(Symmetric Multi-Processor) 这种架构的处理器由多个核组成,每个核有自己独立的 Cache,所有核共享内存和 IO。 (2)SMT(Symmetric Multi-Thread) 这种架构的处理器的每个核由多个线程组成(此处的线程指的硬件线程,而不是我们所说的操作系统的线程概念),每个核下的所有线程共享寄存器、ALU(CPU 运算单元)、Cache、内存、IO 等资源,线程之于用户也像一个虚拟的 CPU。这种架构的最大优势在于线程和线程之间的切换很快,通常一个时钟周期内就能完成。 (3)NUMA(Non-Uniform Memory Access) 这种架构和前面两种的区别在于它不是简单的一个处理器,而是一个由多个处理器组成的系统,每个处理器作为一个结点在该系统中存在。对于内存、IO 等资源所有结点也是共享的。 目前比较流行的处理器架构大多都推出了多核处理器的产品,比如 Intel 的 X86 双核处理器、Freescale 的 PPC 多核处理器、SUN 的 SPARC 多核处理器、RMI 和 Cavium 的 MIPS 多核处理器等。 MIPS 这种架构诞生于 Standford 大学,它的名字含义有双重意义,一是 “Microcomputer without Inter-locked Pipeline Stages”,另一种是 “Millions of Instructions Per Second”,它设计思想的核心是采用多级指令流水线技术达到高效的处理速度,目前比较常用的 MIPS 采用5级流水线的技术。因其性能高效、结构简单,MIPS 被誉为 RISC(Reduced Instruction Set Computing) 家族中最优美的一款处理器架构。基于 MIPS 的多核处理器因为其低功耗、高性能从而在嵌入式市场得到了广泛的应用。 针对上述这些多核处理器的特点,Linux 提出了 Multi-Processing 的概念,它的调度器可以将操作系统的线程均分到各个核(或硬件线程)上去执行,以此达到并行计算的目的,从而也可以极大地提高系统的性能。 回页首 Spinlock 的思想 Linux 在推出了 Multi-Processing 之后,多核处理器的并行处理的能力得到了极大的发挥,但是这同时也带来了一个问题,并行执行势必就存在多个核同时访问共享资源的情况,如何能够保证一个核在访问共享资源时,该共享资源不会被其它核所改写呢? 我们没有方法去控制对共享资源访问的有序性,但是我们有能力对共享资源采用锁的保护机制,当某个共享资源被锁住时,只有获取该锁的 CPU 核能够操作共享资源,其余试图访问共享资源的 CPU 核只能够等待这个锁的释放,这就是在 Linux 中被称为 Spinlock 的自旋锁保护机制。 Spinlock 的设计思想是基于一种被称为 Test-and-Set 的机制,它的操作分为三部分: (1)INIT 初始化 lock 值。示例如下: lock := CLEAR; (2)LOCK 这个流程包括两部分:首先 CPU 核反复轮询 lock 值直到它处于空闲状态为止,然后利用 Test-and-Set 方式尝试设置该 lock 值,Test-and-Set 的操作可以描述成三步: (a)读取 lock 值; (b)设置 lock 值; (c)检查 lock 值是否设置成功,如果在步骤 (a) 之后还存在别的对 lock 值的操作,说明存在有并发访问 lock 值的情况,则步骤 (b) 的 lock 值将不能设置成功,还需要回到步骤 (a) 重新执行这个流程。 示例如下: while ((lock == BUSY) || (TestAndSet(lock) == BUSY)); (3)UNLOCK 释放 lock 值。示例如下: lock := CLEAR; 回页首 MIPS 中 Spinlock 的实现 传统的 C 语言是无法实现 Test-and-Set 的机制的,因为它无法在多核之间建立一个交互的机制,因此 Test-and-Set 需要处理器给以相应的支持。以 MIPS 为例,它提供了 LL(Load Linked Word) 和 SC(Store Conditional Word) 这两个汇编指令来实现对共享资源的保护。 LL 指令的功能是从内存中读取一个字,以实现接下来的 RMW(Read-Modify-Write) 操作;SC 指令的功能是向内存中写入一个字,以完成前面的 RMW 操作。LL/SC 指令的独特之处在于,它们不是一个简单的内存读取/写入的函数,当使用 LL 指令从内存中读取一个字之后,比如 LL d, off(b),处理器会记住 LL 指令的这次操作(会在 CPU 的寄存器中设置一个不可见的 bit 位),同时 LL 指令读取的地址 off(b) 也会保存在处理器的寄存器中。接下来的 SC 指令,比如 SC t, off(b),会检查上次 LL 指令执行后的 RMW 操作是否是原子操作(即不存在其它对这个地址的操作),如果是原子操作,则 t 的值将会被更新至内存中,同时 t 的值也会变为1,表示操作成功;反之,如果 RMW 的操作不是原子操作(即存在其它对这个地址的访问冲突),则 t 的值不会被更新至内存中,且 t 的值也会变为0,表示操作失败。 SC 指令执行失败的原因有两种: (1)在 LL/SC 操作序列的过程中,发生了一个异常(或中断),这些异常(或中断)可能会打乱 RMW 操作的原子性。 (2)在多核处理器中,一个核在进行 RMW 操作时,别的核试图对同样的地址也进行操作,这会导致 SC 指令执行的失败。 采用 LL/SC 指令实现 Spin_Lock/Spin_Unlock 的范例如下。 MIPS 的 Spin_Lock 对于 MIPS 的 Spin_Lock 操作,可以用如下的方式实现:

表1. Spin_Lock 1 Spin_Lock(lockkey) 2 1: 3 ll t0, lockkey 4 bnez t0, 1b 5 li t0, 1 6 sc t0, lockkey 7 beqz t0, 1b 8 sync

Line 1: lockKey 是共享资源锁,这是块能被多核所共享的内存地址,该值为0表示锁处于空闲状态,为1表示锁已经被某个核所获取,其余核若想获取它只能等待,以下对于 lockKey 的定义相同。 Line 3: 将 lockKey 读入t0寄存器中。 Line 4: 比较 lockKey 是否空闲,如果该锁不可用的话则跳转到 Line 1。 Line 5: 给 t0 寄存器赋值为1。 Line 6: 将 t0 寄存器的值保存入 lockKey 中,并返回操作结果于 t0 寄存器中。 Line 7: 判断 t0 寄存器的值是否为0,如果为0表示 Line 5 中的操作失败,则返回 Line 1 重新开始;如果为1表示 Line 5 中的操作成功。 Line 8: Sync 是内存操作同步指令,用来保证 sync 之前对于内存的操作能够在 sync 之后的指令开始之前完成。 MIPS 的 Spin_Unlock 对于 MIPS 的 Spin_Unlock 操作,可以用如下的方式实现: 表 2. Spin_Unlock Spin_Unlock(lockkey) 1 sync 2 sw zero, lockkey Line 2: 给 lockKey 赋值为 0,表示这个锁被释放。 回页首 Spinlock 的不足和改进 Spinlock 在多核处理器中得到了广泛的运用,但是它也存在一些不足,特别是在对共享资源竞争很激烈的情况下,这种不足会带来很严重的后果。 (1)Spin_Lock 操作是不可重入的,在同一个核上如果在释放锁之前调用了多次 Spin_Lock,这将导致当前 CPU 核处于死锁状态,严重情况下会引起系统的崩溃。 (2)Spinlock 不能保证进程对共享资源访问的公平性和有序性,先申请锁的进程有可能反而在后申请锁的进程之后获取锁,严重时甚至可能导致某个进程长时间无法获取锁而处于饥饿状态。 (3)当 Spinlock 被用于保护共享内存时,对于并发读操作的保护是多余的,反而会降低系

统性能。 为了解决 Spinlock 的上述不足,我们提出了以下的改进措施,有些措施已经在 Linux 中有所体现。 Spinlock 的可重入性 Spinlock 的设计初衷是为多核处理器所提供的,如果在一个核上调用多次 Spin_Lock,会发生什么样的事情呢?这个问题在 Linux 的多线程编程中是个值得考虑的问题。 比如 Thread A 在用 Spin_Lock 取得共享资源操作权限后,在 Spin_Unlock 之前,它的操作由于某种原因被打断了(比如说其它高优先级的线程 Thread B 抢占,中断或者异常的发生等),在新的线程、中断(或异常)的处理程序中如果再次调用了 Spin_Lock,这种后果可能是灾难性的。因为 Spin_Lock 采用的是如果无法取得锁就会无限等待的策略,因此一个核在没有释放锁的情况下多次调用 Spin_Lock 会引起当前 CPU 核性能低下,甚至导致系统崩溃。 针对这种情况,Linux 提供了对于共享资源保护的原则: (1)如果是单核中的共享资源保护,采用 Semphore 的机制; (2)如果是多核中的共享资源保护,采用 Spinlock 的机制。 同时需要注意的是,因为 Semphore 和 Spinlock 的策略都是循环等待锁释放,因此对于它们的使用需要小心,比如不能在中断处理函数中使用等。 针对上述原则,我们可以提供一种更安全的 Spinlock ——可重入的 Spinlock 机制,它的思想是,在入参中同时提供一个标志核 ID 的 Owner 字段,当某个 CPU 核获取锁后,Owner 字段就等于当前核的 ID。在申请锁时,首先判断 Owner 字段是否等于申请者的核 ID,如果相等,则跳过后面的检查流程直接操作共享资源,否则再进行 Spin_Lock 的操作。 改进后的可重入的 Reent_Spin_Lock 实现如下:

表3. Reent_Spin_Lock Reent_Spin_Lock(lockkey, owner) if (owner != currentCoreId) {

Spin_Lock(lockkey); owner = currentCoreId; }

改进后的可重入的 Reent_Spin_Unlock 实现如下:

表4. Reent_Spin_Unlock Reent_Spin_Unlock(lockkey, owner) Spin_Unlock(lockkey); owner = 0xFFFFFFFF;

Spinlock 的排队策略 Linux 在提出 Spinlock 的概念时,是没有考虑到如何保证等待中的进程有序地获取共享资源锁的问题的。设想一下,如果让先申请锁的进程眼睁睁地看着后来者得到锁,而它自己却迟迟得不到,这种饥饿状态是很不公平的。 因此 Linux 的内核开发者 Nick Piggin 在 Linux 2.6.25 版本中提出了排队 Spinlock(FIFO Ticket Spinlock) 的概念,他的设计思路是将一个锁用 next 和 owner 两个字段来表示,并将申请锁的过程分为两个阶段,一个是初次申请阶段,另一个是重复申请阶段。当初次申请锁时,当前 CPU 核取 next 字段作为自己的 ticket,并且 next 字段增加1,同时判断 ticket 与 owner 字段是否相等,如果相等则获取锁成功;当重复申请锁时,只需要判断 ticket 与 owner 字段是否相等以决定锁是否申请成功即可。在释放锁时,将 owner 字段增加1。 排队 Spinlock 能够保证进程按照先来先到的原则有序地访问共享资源,从而保证了锁申请的公平性和有序性。 读写 Spinlock 对内存的访问分为读和写两部分,在用 Spinlock 保护共享内存时,内存的并发读、并发写以及并发读写是完全互斥的。事实上因为读操作不会修改内存,并发读中设置锁保护反而降低了性能,因此 Linux 专门提供了读写锁的机制用来保证并发写和并发读写的锁保护,同时也不影响并发读的效率,在对内存访问进行保护时,可以采用读写锁来代替传统的 Spinlock。 读写锁分为 4 部分:Read_Lock、Read_Unlock、Write_Lock、Write_Unlock。

表5. Read_Lock Read_Lock(lockKey) 1:

ll t0, lockKey bltz t0, 1b add t0, 1 sc t0, lockKey beqz t0, 1b nop sync

对于 Read_Lock 操作,首先读取 lockKey 的值,判断该值是否小于0,如果小于0则表示当前锁被写操作所保护着,该锁无法被读操作所获取;否则给 lockKey 值加1,该值表示当前发生的读操作的次数。

表6. Read_Unlock Read_Unlock(lockKey) 1:

ll t0, lockKey sub t0, 1 sc t0, lockKey beqz t0, 1b sync

对于 Read_Unlock 操作,首先读取 lockKey 的值,然后将该值减1,表示减少一次当前发生的读操作的次数。

表7. Write_Lock Write_Lock(lockKey) 1:

ll t0, lockKey bnez t0, 1b lui t0, 0x8000 sc t0, lockKey beqz t0, 1b sync

对于 Write_Lock 操作,首先读取 lockKey 的值,判断该值是否为0,如果为0表示当前没有任何读操作或者写操作发生,然后获取该锁,并将 lockKey 赋值为0x80000000(一个负数),表示当前锁被写操作所占用。

表8. Write_Unlock Write_Unlock(lockKey) 1: sync sw zero, lockKey

对于 Write_Unlock 操作,直接将 lockKey 赋值为0即可,表示该锁被释放。 还需要完善的地方 Spinlock 离完美还距离很远,随着多核处理器被越来越多地应用,更多的缺陷还有待完善,比如: (1)虽然排队 Spinlock 解决了获取锁的有序性和公平性,但是进程优先级的概念无法体现,不能保证优先级高的进程优先获取锁。 (2)等待锁释放是一个循环等待的过程,如果等待时间很长的话是对系统资源的一种浪费,可以增加一些诸如超时一类的机制。 (3)在很多核同时竞争锁的情况下,系统负荷会比较重,从而影响系统的性能。 参考资料 《See MIPS Run》,Dominic Sweetman,这本书介绍了 Linux 如何在 MIPS 中运行。 《The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors》,Thomas E. Anderson,这篇文章介绍了 Spinlock 性能方面的问题。 《Linux 内核的排

本文来源:https://www.bwwdw.com/article/27z7.html

Top