Chinaunix首页 | 论坛 | 博客
  • 博客访问: 687122
  • 博文数量: 112
  • 博客积分: 2486
  • 博客等级: 大尉
  • 技术积分: 1541
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-14 18:30
文章分类

全部博文(112)

文章存档

2012年(5)

2011年(48)

2010年(26)

2009年(33)

我的朋友

分类: LINUX

2011-09-01 21:07:47

英文文档见android-ndk-r5b的documentation.html

属于Android Native Development Kit (NDK)的一部分

见http://developer.android.com/sdk/ndk/(需要代理)

翻译仅个人见解

-----------------

 

Android NDK CPU Features detection library:

 

Android NDK CPU特性检测库:

-------------------------------------------

 

This NDK provides a small library named "cpufeatures" that can be used at runtime to detect the target device's CPU family and the optional features it supports.

 

NDK提供一个名为cpufeatures的小型库,它可以用于在运行期检测目标设备的CPU家族和它支持的可选特性。

 

Usage:

 

用法:

------

 

The library is available as an import module. To use it, you must:

 

这个库作为导入模块可用。要使用它,你必须:

 

To use it, you must:

 

要使用它,你必须:

 

  * List 'cpufeatures' in your list of static library dependencies, as in:

 

  * 在你的静态库依赖列表中列出cpufeatures,正如这样:

 

        LOCAL_STATIC_LIBRARIES := cpufeatures

 

  * At the end of your Android.mk, import the 'android/cpufeatures' module, as in:

 

  * 在你的Android.mk结束处,导入android/cpufeatures模块,正如这样:

 

        $(call import-module,android/cpufeatures)

 

  * In your source code, include the header named

 

  * 在你的源代码中,包含名为的头文件

 

Here is a simple example:

 

这里是一个简单示例:

 

/jni/Android.mk:

    LOCAL_PATH := $(call my-dir)

 

    include $(CLEAR_VARS)

    LOCAL_MODULE :=

    LOCAL_SRC_FILES :=

    LOCAL_STATIC_LIBRARIES := cpufeatures

    include $(BUILD_SHARED_LIBRARY)

 

    $(call import-module,android/cpufeatures)

 

 

Features:

 

特性:

---------

 

Two functions are provided for now:

 

现在提供两个函数:

 

   AndroidCpuFamily   android_getCpuFamily();

 

Returns the target device's CPU Family as an enum. For now, the only supported family is ANDROID_CPU_FAMILY_ARM.

 

用一个枚举值返回目标设备的CPU家族。现在,唯一支持的家族是ANDROID_CPU_FAMILY_ARM。

 

   uint64_t   android_getCpuFeatures();

 

Returns the set of optional features supported by the device's CPU. The result is a set of bit-flags, each corresponding to one CPU Family-specific optional feature.

 

返回设备CPU支持的可选特性。结构是一个位标志集合,每个位标志对应一项CPU家族特定的可选特性。

 

Currently, only the following flags are defined, for the ARM CPU Family:

 

目前,只为ARM CPU家族定义了如下标志:

 

   ANDROID_CPU_ARM_FEATURE_ARMv7

      Indicates that the device's CPU supports the ARMv7-A instruction set as supported by the "armeabi-v7a" abi (see CPU-ARCH-ABIS.html). This corresponds to Thumb-2 and VFPv3-D16 instructions.

 

   ANDROID_CPU_ARM_FEATURE_ARMv7

      指出设备的CPU支持ARMv7-A指令集,它由armeabi-v7a的ABI(注:应用程序二进制接口,操作系统暴露的接口,使二进制程序不需要重 新编译即可在兼容ABI的操作系统上运行)支持(参考CPU-ARCH-ABIS.html)。它对应Thumb-2和VFPv3-D16指令。

 

 

   ANDROID_CPU_ARM_FEATURE_VFPv3

      Indicates that the device's CPU supports the VFPv3 hardware FPU instruction set extension. Due to the definition of 'armeabi-v7a', this will always be the case if ANDROID_CPU_ARM_FEATURE_ARMv7 is returned.

 

   ANDROID_CPU_ARM_FEATURE_VFPv3

      指出设备CPU支持VFPv3硬件FPU(注:FPU是浮点运算单元的缩写)指令集扩展。由于armeabi-v7a的定义,它将总是返回 ANDROID_CPU_ARM_FEATURE_ARMv7(注:这里的意思可能是,它总是和 ANDROID_CPU_ARM_FEATURE_ARMv7一起返回)。

 

      Note that this corresponds to the minimum profile VFPv3-D16 that _only_ provides 16 hardware FP registers.

 

  注意它对应最小型号是VFPv3-D16,它只提供16个硬件浮点寄存器。

 

   ANDROID_CPU_ARM_FEATURE_NEON

      Indicates that the device's CPU supports the ARM Advanced SIMD (a.k.a. NEON) vector instruction set extension. Note that ARM mandates that such CPUs also implement VFPv3-D32, which provides 32 hardware FP registers (shared with the NEON unit).

 

   ANDROID_CPU_ARM_FEATURE_NEON

      指出设备CPU支持ARM高级SIMD(即NEON)(注:NEON技术是ARM SIMD扩展指令,用于多媒体处理的硬件加速)向量指令集扩展。注意ARM授权这种CPU还实现了VFPv3-D32,提供32个硬件浮点寄存器(与NEON单元共享)。

 

 

Important Note:

 

重要注意事项:

---------------

 

The cpufeatures library will be updated to support more CPU families and optional features in the future. It is designed to work as-is on all official Android platform versions.

 

cpufeatures库将被更新以支持未来更多CPU家族和可选特性。它被设计为在所有官方Android平台版本上保持原样地工作。



ARM架构
维基百科,自由的百科全书

标志

ARM架构,过去称作高级精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个(RISC)架构,其广泛地使用在许多设计。由于节能的特点,ARM处理器非常适用于领域,符合其主要设计目标为低成本、高性能、低耗电的特性。

在今日,ARM家族占了所有32位嵌入式处理器75%的比例,使它成为占全世界最多数的32位架构之一。ARM处理器可以在很多消费性电子产品上看到,从可携式设备(、、多媒体播放器、掌上型电子游戏,和)到电脑外设(、桌面型)甚至在的弹载计算机等军用设施中都有他的存在。在此还有一些基于ARM设计的派生产品,重要产品还包括的架构和的系列。

目录 []
[] 历史
一颗主要用于的 ARM处理器
用于松下多媒体播放机的芯片

ARM的设计是公司(Acorn Computers Ltd)于1983年开始的。

这个团队由和带领,着手开发一种新架构,类似高级的处理器。有一大堆建构在架构上的电脑,因此能设计出一颗类似的芯片即意味着对公司有很大的优势。

团队在1985年时开发出ARM1 Sample版,而首颗"真正"的产能型ARM2于次年量产。ARM2具有32位的、26位的,并提供64 Mbyte的寻址范围与16个32-bit的。这些暂存器其中有一颗做为(word大小),其前面6 bits和后面2 bits用来保存()。ARM2可能是全世界最简单实用的32位微处理器,其仅容纳了30,000个(相较于Motorola六年后的其包含了70,000颗)。之所以精简的原因在于它不含(请参阅)(这大概占了68000的1/4至1/3),而与当时大多数的CPU相同,它没有包含任何的。这个精简的特色使它只需消耗很少的电能,却能发挥比 更好的性能.。后继的处理器ARM3更备有4KB的高速缓存,使它能发挥更佳的性能。

在1980年代晚期,开始与合作开发新版的ARM核心,由于这项目非常重要,甚至于1990年将设计团队另组成一间名为的新公司。也基于这原因,使得ARM有时候反而称作Advanced RISC Machine而不是 RISC Machine。由于其母公司于1998年的和挂牌上市,使得Advanced RISC Machines成了ARM Ltd旗下拥有的产品。

这个项目到后来进入了ARM6,首版的式样在1991年释出,然后苹果电脑使用ARM6架构的ARM 610来当作他们 PDA的基础。在1994年,使用ARM 610做为他们电脑内的。

在这些变革之后,内核部份却大多维持一样的大小。ARM2有30,000颗晶体管,但ARM6却也只增长到35,000颗。主要概念是以的方式,使ARM核心能搭配一些选配的零件而制成一颗完整的CPU,而且可在现有的里制作并以低成本的方式达到很大的性能。

ARM的经营模式在于出售其(),授权厂家依照设计制作出建构于此核的和。最成功的实现案例属 ,几乎卖出了数亿套自带单片机的设备。

购买这个架构的产权(此处会造成混淆在于其本身也制造 并研发出。在 233 MHz 的频率下,这颗 CPU 只消耗一的电能(后来的芯片消耗得更少)。这项设计后来为了和 的控诉和解而技术移转,Intel 因而趁机以 StrongARM 架构补强他们老旧的 产线。Intel 后来开发出他们自有的高性能实现,称作,之后也卖给了。

支持、和其他最常见的架构是ARMv4。 和 处理器是ARMv5TE,而且比起建构在 ARMv4 的 、 和 等处理器还更常见于许多高级设备上。架构版本如下栏所示。

[] 内核种类
家族 架构 内核 特色 高速缓存 (I/D)/ 常规 于 MHz 应用
ARM1 ARMv1 ARM1


ARM2 ARMv2 ARM2 Architecture 2 加入了MUL(乘法)指令 4 MIPS @ 8MHz
ARMv2a ARM250 Integrated MEMC (MMU),图像与IO处理器。Architecture 2a 加入了SWP和SWPB(置换)指令。 无,MEMC1a 7 MIPS @ 12MHz
ARM3 ARMv2a ARM2a 首次在ARM架构上使用处理器高速缓存 均为4K 12 MIPS @ 25MHz
ARM6 ARMv3 ARM610 v3 架构首创支持寻址32位的存储器(针对26位) 均为4K 28 MIPS @ 33MHz
ARM7 ARMv3



ARMv4T ARM7TDMI(-S) 三级流水线 15 MIPS @ 16.8 MHz ,,
ARM710T
均为8KB, MMU 36 MIPS @ 40 MHz ,,
ARM720T
均为8KB, MMU 60 MIPS @ 59.8 MHz
ARM740T
MPU

ARMv5TEJ ARM7EJ-S Jazelle DBX

StrongARM ARMv4




ARM8 ARMv4



ARM9TDMI ARMv4T ARM9TDMI 五级流水线

ARM920T
16KB/16KB, MMU 200 MIPS @ 180 MHz ,,(第一颗内核), ( i. MX1)
ARM922T
8KB/8KB, MMU

ARM940T
4KB/4KB, MPU
(第二颗内核)
ARMv5TE ARM946E-S
可变动,tightly coupled memories, MPU
, Conexant 802.11 chips
ARM966E-S
无高速缓存,TCMs

ST Micro STR91xF,包含Ethernet [2]

ARM968E-S
无高速缓存,TCMs

ARMv5TEJ ARM926EJ-S Jazelle DBX 可变动,TCMs, MMU 220 MIPS @ 200 MHz 移动电话:(K, W系列), 和 (x65 系列和新版的)
ARMv5TE ARM996HS 无振荡器处理器 无高速缓存,TCMs, MPU

ARM10E ARMv5TE ARM1020E (VFP),六级流水线 32KB/32KB, MMU

ARM1022E (VFP) 16KB/16KB, MMU

ARMv5TEJ ARM1026EJ-S Jazelle DBX 可变动,MMU or MPU

ARMv5TE 80200/IOP310/IOP315 I/O处理器


80219

400/600MHz Thecus N2100
IOP321

600 @ 600 MHz
IOP33x



IOP34x 1-2核,RAID加速器 32K/32K L1, 512K L2, MMU

PXA210/PXA250 应用处理器,七级流水线

SL-5600
PXA255
32KB/32KB, MMU 400 @ 400 MHz , E2
PXA26x

可达 400 MHz
PXA27x

800 MIPS @ 624 MHz Universal, SL-C1000,3000,3100,3200, x30, x50,和 x51 系列
PXA800(E)F



Monahans

1000 MIPS @ 1.25 GHz Mavell PXA300/PXA310/PXA320, Max frequency : PXA300@624Mhz, PXA310/PXA320@806Mhz
PXA900


Blackberry 8700, Blackberry Pearl (8100)
IXC1100 Control Plane Processor


IXP2400/IXP2800



IXP2850



IXP2325/IXP2350



IXP42x


IXP460/IXP465



ARM11 ARMv6 ARM1136J(F)-S SIMD, Jazelle DBX, (VFP),八级流水线 可变动,MMU ?? @ 532-665MHz (i.MX31 SoC) ,,
ARMv6T2 ARM1156T2(F)-S SIMD, Thumb-2, (VFP),九级流水线 可变动,MPU

ARMv6KZ ARM1176JZ(F)-S SIMD, Jazelle DBX, (VFP) 可变动,MMU+TrustZone

ARMv6K ARM11 MPCore 1-4核对称多处理器,SIMD, Jazelle DBX, (VFP) 可变动,MMU

Cortex ARMv7-A Cortex-A8 Application profile, VFP, NEON, Jazelle RCT, Thumb-2, 13-stage pipeline 可变动 (L1+L2), MMU+TrustZone up to 2000(2.0 DMIPS/MHz 从600 MHz到超过1 GHz的速度) Texas Instruments
Cortex-A9



Cortex-A9 MPCore



ARMv7-R Cortex-R4(F) Embedded profile, (FPU) 可变动高速缓存,MMU可选配 600 DMIPS is a user
ARMv7-M Cortex-M3 Microcontroller profile 无高速缓存,(MPU) 120 DMIPS @ 100MHz Luminary Micro 单片机家族
ARMv6-M Cortex-M0



Cortex-M1



ARMv7-ME Cortex-M4
Optional 8 region MPU with sub regions and background region 1.25 DMIPS/MHz
家族 架构 内核 特色 高速缓存 (I/D)/ 常规 于 MHz 应用
[] 设计文件

讲求精简又快速的设计方式,整体电路化却又不采用,就像早期使用在微电脑的8位处理器。

ARM架构包含了下述特性:

  • 读取/存储 架构
  • 不支持地址不对齐存储器访问(ARMv6内核现已支持)
  • 正交指令集(任意访问指令可以任意的访问数据)
  • 大量的16 × 32-bit 寄存器阵列()
  • 固定的32 bits 操作码(opcode)长度,降低编码数量所产生的耗费,减轻解码和流水线化的负担。
  • 大多均为一个CPU周期运行。

为了补强这种简单的设计方式,相较于同时期的处理器如和,还多加了一些特殊设计:

  • 大部分指令可以条件式地运行,降低在分支时产生的负重,弥补分支预测器()的不足。
  • 算数指令只会在要求时更改条件编码()
  • 32-bit筒型位移器()可用来运行大部分的算数指令和寻址计算而不会损失性能
  • 强大的索引()
  • 精简但快速的双优先级子系统,具有可切换的暂存器组

有个附加在ARM设计中好玩的东西,就是使用一个4-bit 条件编码 在每个指令前头,表示每支指令的运行是否为有条件式的

这大大的减低了在存储器访问指令时用到的编码位,换句话说,它避免在对小型叙述如if做分支指令。有个标准的示例引用的算法:

在中,循环为:

int gcd (int i, int j) { while (i != j) if (i > j) i -= j; else j -= i; return i; }

在ARM 中,循环为:

loop CMP Ri, Rj ; 設定條件為 "NE"(不等於) if (i != j) ; "GT"(大於) if (i > j), ; or "LT"(小於) if (i < j) SUBGT Ri, Ri, Rj ; 若 "GT"(大於), i = i-j; SUBLT Rj, Rj, Ri ; 若 "LT"(小於), j = j-i; BNE loop ; 若 "NE"(不等於),則繼續迴圈

这避开了then和else子句之间的分支。

另一项指令集的特色是,能将位移(shift)和回转(rotate)等功能并成"数据处理"型的指令(算数、逻辑、和暂存器之间的搬移),因此举例来说,一个C语言的叙述

a += (j << 2);

在ARM之下,可简化成只需一个word和一个cycle即可完成的指令

ADD Ra, Ra, Rj, LSL #2

这结果可让一般的ARM程序变得更加紧密,而不需经常使用存储器访问,流水线也可以更有效地使用。即使在ARM以一般认定为慢速的速度下运行,与更复杂的CPU设计相比它仍能运行得不错。

ARM处理器还有一些在其他RISC的架构所不常见到的特色,例如-相对寻址(的确在ARM上为16个暂存器的其中一个)以及 前递加或后递加的寻址模式。

另外一些注意事项是 ARM 处理器会随着时间,不断地增加它的指令集。某些早期的 ARM 处理器(比ARM7TDMI更早),譬如可能并未具备指令可以读取两 Bytes 的数量,因此,严格来讲,对这些处理器产生代码时,就不可能处理如 C 语言对象中使用 "volatile short" 的数据型态。

ARM7 和大多数较早的设计具备三阶段的流水线化(Pipeline):提取指令、解码,并运行。较高性能的设计,如 ARM9,则有五阶段的流水线化。提高性能的额外方式,包含一颗较快的加法器,和更广的分支预测逻辑线路。

这个架构使用“协处理器”提供一种非侵入式的方法来延伸指令集,可通过软件下 MCR、MRC、MRRC和MCRR 等指令来对协处理器寻址。协处理器空间逻辑上通常分成16个协处理器,编号分别从 0 至 15 ,而第15号协处理器(CP15)是保留用作某些常用的控制功能,像是使用高速缓存和运算(若包含于处理器时)。

在 ARM 架构的机器中,周边设备连接处理器的方式,通常通过将设备的实体暂存器对应到 ARM 的存储器空间、协处理器空间,或是连接到另外依序接上处理器的设备(如总线)。协处理器的访问延迟较低,所以有些周边设备(例如 中断控制器)会设计成可通过不同方式访问(通过存储器和协处理器)。

[] Thumb

较新的ARM处理器有一种16-bit指令模式,叫做Thumb,也许跟每个条件式运行指令均耗用4位的情形有关。在Thumb模式下,较小的 opcode有更少的功能性。例如,只有分支可以是条件式的,且许多opcode无法访问所有CPU的暂存器。然而,较短的opcode提供整体更佳的编 码密度(注:意指代码在存储器中占的空间),即使有些运算需要更多的指令。特别在存储器端口或总线宽度限制在32 以下的情形时,更短的Thumb opcode能更有效地使用有限的存储器带宽,因而提供比32位代码更佳的性能。典型的嵌入式硬件仅具有较小的32-bit datapath寻址范围以及其他更窄的16 bits寻址(例如)。在这种情形下,通常可行的方案是编译成 Thumb 代码,并自行优化一些使用(非Thumb)32位指令集的CPU相关程序区,因而能将它们置入受限的32-bit总线宽度的存储器中。

首颗具备 Thumb 技术的处理器是 ARM7TDMI。所有 ARM9 和后来的家族,包括 都纳入了 Thumb 技术。

[] Jazelle

ARM 还开发出一项技术, (Direct Bytecode eXecution),允许它们在某些架构的硬件上加速运行,就如其他运行模式般,当调用一些无法支持bytecodes的特殊软件时,能提供某些bytecodes的加速运行。它能在现存的ARM与Thumb模式之间互相运行。

首颗具备Jazelle技术的处理器是ARM7EJ-S:Jazelle以一个英文字母'J'标示于CPU名称中。它用来让手机制造商能够加速运行的游戏和应用程序,也因此促使了这项技术不断地开发。

[] Thumb-2

Thumb-2 技术首见于 ARM1156 核心 ,并于2003年发表。Thumb-2 扩充了受限的 16-bit Thumb 指令集,以额外的 32-bit 指令让指令集的使用更广泛。因此 Thumb-2 的预期目标是要达到近乎 Thumb 的编码密度,但能表现出近乎 ARM 指令集在 32-bit 存储器下的性能。

Thumb-2 至今也从 ARM 和 Thumb 指令集中派生出多种指令,包含位栏(bit-field)操作、分支建表(table branches),和条件运行等功能。

[编辑] Thumb Execution Environment (ThumbEE)

ThumbEE,也就是所谓的Thumb-2EE,业界称为技术,于2005年发表,首见于 Cortex-A8 处理器。ThumbEE 提供从 Thumb-2 而来的一些扩充性,在所处的运行环境(Execution Environment)下,使得指令集能特别适用于运行阶段(Runtime)的编码产生(例如)。Thumb-2EE 是专为一些语言如 、、、 和 ,并能让 能够输出更小的编译码却不会影响到性能。

ThumbEE 所提供的新功能,包括在每次访问指令时自动检查是否有无效指针,以及一种可以运行数组范围检查的指令,并能够分支到分类器(handlers),其包含一小部份经常调用的编码,通常用于高级语言功能的实现,例如对一个新对象做存储器配置。

[] 高级 SIMD (NEON)

高级 SIMD 延伸集,业界称为NEON技术,它是一个结合 64 和 128 bit 的 (Single Instruction Multiple Data 单指令多重数据)指令集,其针对多媒体和信号处理程序具备标准化加速的能力。NEON 可以在 10 MHz 的 CPU 上运行 MP3 音效解码,且可以运行 13 MHz 频率以下的 AMR (Adaptive Multi-Rate) 语音。NEON具有一组广泛的指令集、各自的寄存器阵列,以及独立运行的硬件。NEON 支持 8-, 16-, 32- 和 64-bit 的整数及单精度浮点数据,并以 的方式运算,运行图形和游戏处理中关于语音/视频的部分。SIMD 在 中是个决定性的要素,它具备同时多项处理功能。在 NEON 技术中,SIMD 最高可支持到同时 16 个运算。

[] VFP

VFP(矢量浮点)是在协同处理器针对ARM架构的派生技术。它提供低成本的单精度和倍精度浮点运算能力,并完全兼容于。VFP 提供大多数适用于浮点运算的应用,例如PDA、智慧手机、语音压缩与解压、3D图像以及数字音效、打印机、机上盒,和汽车应用等。VFP 架构也支持 (单指令多重数据)平行化的短矢量指令运行。这在图像和信号处理等应用上,非常有助于降低编码大小并增加输出效率。

在ARM-based处理器中,其他可见的浮点、或 SIMD 的协同处理器还包括了 FPA, FPE, 。他们提供类似 VFP 的功能但在层面上来说并不具有兼容性。

[] 安全性扩充 (TrustZone)

TrustZone(TM) 技术出现在 ARMv6KZ 以及较晚期的应用核心架构中。它提供了一种低成本的方案,针对() 内加入专属的安全核心,由硬件建构的访问控制方式支持两颗虚拟的处理器。这个方式可使得应用程序核心能够在两个状态之间切换(通常改称为领域 (worlds)以避免和其他功能领域的名称混淆),在此架构下可以避免信息从较可信的核心领域泄漏至较不安全的领域。这种内核领域之间的切换通常是与处 理器其他功能完全无关系性(), 因此各个领域可以各自独立运作但却仍能使用同一颗内核。存储器和周边设备也可因此得知目前内核运作的领域为何,并能针对这个方式来提供对设备的机密和编码 进行访问控制。典型的 TrustZone 技术应用是要能在一个缺乏安全性的环境下完整地运行操作系统,并在可信的环境下能有更少的安全性的编码。

[] ARM 授权方式

ARM 公司本身并不靠自有的设计来制造或出售 CPU ,而是将处理器架构授权给有兴趣的厂家。ARM 提供了多样的授权条款,包括售价与散播性等项目。对于授权方来说,ARM 提供了 ARM 内核的集成硬件叙述,包含完整的软件开发工具(编译器、debugger、SDK),以及针对内含 ARM CPU 硅芯片的销售权。对于无晶圆厂的授权方来说,其希望能将 ARM 内核集成到他们自行研发的芯片设计中,通常就仅针对取得一份生产就绪的(IP Core)认证。对这些客户来说,ARM 会释出所选的 ARM 核心的闸极电路图,连同抽象模拟模型和测试程序,以协助设计集成和验证。需求更多的客户,包括集成组件制造商(IDM)和晶圆厂家,就选择可合成的RTL(暂存器转移层级,如 ) 形式来取得处理器的智财权(IP)。借着可集成的 RTL,客户就有能力能进行架构上的优化与加强。这个方式能让设计者完成额外的设计目标(如高震荡频率、低能量耗损、指令集延伸等)而不会受限于无法更动 的电路图。虽然 ARM 并不授予授权方再次出售 ARM 架构本身,但授权方可以任意地出售制品(如芯片组件、评估板、完整系统等)。商用晶圆厂是特殊例子,因为他们不仅授予能出售包含 ARM 内核的硅晶成品,对其它客户来讲,他们通常也保留重制 ARM 内核的权利。

就像大多数 IP 出售方,ARM 依照使用价值来决定 IP 的售价。在架构上而言,更低性能的 ARM 内核比更高性能的内核拥有较低的授权费。以硅芯片实现而言,一颗可集成的内核要比一颗硬件宏(黑箱)内核要来得贵。更复杂的价位问题来讲,持有 ARM 授权的商用晶圆厂(例如韩国三星和日本富士通)可以提供更低的授权价格给他们的晶圆厂客户。通过晶圆厂自有的设计技术,客户可以更低或是免费的ARM预付 授权费来取得 ARM 内核。相较于不具备自有设计技术的专门半导体晶圆厂(如和),富士通/三星对每片晶圆多收取了两至三倍的费用。对中少量的应用而言,具备设计部门的晶圆厂提供较低的整体价格(通过授权费用的补助)。对于量产而言,由于长期的成本缩减可借由更低的晶圆价格,减少ARM的NRE成本,使得专门的晶圆厂也成了一个更好的选择。

许多半导体公司持有 ARM 授权:、、、(于2004从公司独立出来)、、(借由和的控诉调停)、,,,,(于2006年从独立出来)、,,,, 和 等许多这些公司均拥有各个不同形式的ARM授权。虽然ARM的授权项目由所涵盖,在知识产权工业,ARM是广为人知最昂贵的CPU内核之一。单一的客户产品包含一个基本的 ARM 内核可能就需索取一次高达美金20万的授权费用。而若是牵涉到大量架构上修改,则费用就可能超过千万美元。

[] ARM 内核的授权与应用
ARM 内核 设备 产品
ARM1 ARM1 second processor for
ARM2 ARM2 ,
ARM250 ARM250
ARM3 ARM3
ARM60 ARM60 , Zarlink GPS Receiver
ARM610 ARM610 ,
ARM700 ARM700 prototype CPU card
ARM710 ARM710
ARM710a ARM7100, ARM 7500 and ARM7500FE , , (ARM7100), (ARM7500), (ARM7500FE), (ARM7500FE)
ARM7TDMI(-S) 7, and , , , , , , 导航设备 (1990s – early 2000s)
ARM710T
, /Revo Plus/Diamond Mako
ARM720T
StrongARM SA-110, SA-1100, SA-1110 SA-110 2x00 series, , Rebel/Corel Netwinder, Chalice CATSSA-1100SA-1110, Intel Assabet, H36x0, , SL-5x00, 7xx, , Palm Zire 31
ARM810
prototype CPU card
ARM920T AT91RM9200, 9, Cirrus Logic EP9302, EP9307, EP9312, EP9315, S3C2442 and S3C2410 , , (first core), ( i.MX1), Hewlett-Packard HP-49/50 Calculators, , , ), 导航设备 (mid–late 2000s), 导航设备
ARM922T
ARM940T
(second core), Meizu
ARM926EJ-S 德州仪器 1710, 1610, 1611, 1612, , ; MSM6100, MSM6125, MSM6225, MSM6245, MSM6250, MSM6255A, MSM6260, MSM6275, MSM6280, MSM6300, MSM6500, MSM6800; , i.MX27, i.MX28, 9, , S3C2412 , NEC C10046F5-211-PN2-A SoC – 未文件化的内核有可能将 绘图芯片用于 Wii, Telechips TCC7801, TCC7901, ZMS-05, RK2806 and RK2808, MiMagic Family MM6, MM6+, MM8, MTV. Mobile phones: (K, W series); 以及 (x65 series and newer); ; GPH Wiz; Controller (Samsung S3C2412). ; TeraStation Live (); (); Western Digital MyBook I World Edition; Western Digital MyBook II World Edition; STDSD10G-RK; GoFlex Home; Classic
ARM946E-S
, , , , Conexant 802.11 chips, Samsung S5L2010
ARM966E-S STR91xF
ARM968E-S
ARM1026EJ-S so4610 以及 so4615 ADSL SoC
XScale Intel 80200, 80219, PXA210, PXA250, PXA255, PXA263, PXA26x, PXA27x, PXA3xx, PXA900, IXC1100, IXP42x 80219Thecus N2100IOP321PXA210/PXA250 SL-5600, H3900, NX60, NX70V, NZ90PXA255, E2, SL-C860, , iRex PXA263 NX73V, NX80VPXA26xPXA27x, , PXA270 COM, Universal, hx4700, SL-C1000, 3000, 3100, 3200, x30, x50, and x51 series, Motorola Q, , , , Motorola Ezx Platform A728, A780, A910, A1200, E680, E680i, E680g, E690, E895, Rokr E2, Rokr E6, Fujitsu Siemens LOOX N560, Toshiba Portégé G500, Trēo 650-755p, , HP iPaq 614c Business Navigator, PDA2PXA3XXSamsung Omnia, PXA900Blackberry 8700, Blackberry Pearl (8100)IXP42x
ARM1136J(F)-S 德州仪器 2420, MSM7200, MSM7201A, MSM7227, Freescale i.MX31 以及 MXC300-30 OMAP2420, , , , , , , MSM7200, , Freescale original Zune 30 GB, Toshiba Gigabeat S and Kindle DXFreescale MXC300-30 , , , , , , , , , , , , , Qualcomm MSM7201A, , , , , , MSM7227 Link, , ,
ARM1176JZ(F)-S , ; Telechips TCC9101, TCC9201, TCC8900, , Samsung S3C6410, S3C6430, Qualcomm MSM7627, Infineon X-GOLD 213 , , , , S3C6410, , , ,Qualcomm MSM7627, LG Optimus V (VM670) and Motorola Calgary/Devour
ARM11 MPCore (Tegra)
德州仪器 , i.MX51-, , ZMS-08, , Samsung S5PC100/S5PC110 , ARMADA 500/600, RK2918 , SBM7000, Oregon State University , , , , , (), (), (), , , , MX, , , , , , , , , , , , , , , , , , ,,.
Texas Instruments , U8500 / U5500, Nvidia , Qualcomm QSD8672/MSM8260/MSM8660, Orion / Exynos 4210 , 意法半导体 SPEAr1310, Xilinx Extensible Processing Platform, Trident PNX847x/8x/9x STB SoC, Freescale i.MX6 , (), , LG Optimus 3D, , Motorola DROID BIONIC, , , PS VITA(NGP), ,
Qualcomm MSM8960, 德州仪器 OMAP5, Samsung, ST Ericsson, Nvidia
Cortex-R4(F) , 德州仪器 TMS570
Cortex-M0 , , , , , ,
Cortex-M1 Actel ProASIC3, ProASIC3L, IGLOO and Fusion PSC devices, , other FPGA products are also supported e.g.
Stellaris, STM32, , TMPM330, EM3xx, 3, , , ,
Cortex-M4 , , 意法半导体
ARM 内核 设备 产品
阅读(4325) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~