由于嵌入式使用领域的多样性,每一个体系都具有各自的特色。在进行体系程序设计的时分,必定要进行详细剖析,充分利用这些特色,取长补短。
结合ARM架构自身的一些特色,在这里评论几个常见的关键。
1.ARM 仍是 Thumb?
在评论 ARM 仍是 Thumb 之前,先阐明 ARM 内核类型和 ARM 结构体系之间的差异和联络。
如图-1所示,ARM 的结构体系主要从版别 4 开端,开展到了现在的版别 6,结构体系的改变,对程序员而言最直接的影响便是指令集的改变。结构体系的演化意味着指令集的不断扩展,值得幸亏的是 ARM 结构体系的开展一向坚持了向上兼容,不会形成老版别程序在新结构体系上的不兼容。
图-1 ARM 结构体系和处理器宗族的演化开展
在图中的横坐标上,显现了每一个体系结构上都含有很多的处理器类型,这是在同一体系结构下依据硬件装备和存储器体系的不同而作的进一步细分。 需求留意的是一般咱们用来差异 ARM 处理器宗族的 ARM7、ARM9 或 ARM10,或许跨过不同的体系结构。
在ARM的体系结构版别4与5中, 还能够再细分出几个小的扩展版别: V4T、V5TE和V5TEJ,其差异如图-2中所示,这些后缀名也反映在各自具有的处理器类型上面,能够进行直观的分辩。V6 结构体系由于包含了曾经版别的一切特性,所以不需求再进行分类。
图-2 结构体系特征
上面介绍了整个 ARM 处理器宗族的散布,主要是阐明在一个特定的平台上编写程序的时分,必定要先弄清楚方针的特性和一些纤细的不同,特别是需求详细优化特征的时分。
从 ARM 体系结构 V4T 今后,最大的改变是增加了一套 16 位的指令集——Thumb。到底在一个详细使用中要否选用 Thumb呢?首要咱们来剖析一下 ARM和 Thumb 各自的特色和优势。先看下面一张功能剖析图:
图-3 ARM 和 Thumb指令集的比较
图中的纵坐标是测验向量 Dhrystone 在 20MHz 频率下运转 1 秒钟的成果, 其值越大标明功能越好;横坐标是体系存储器体系的数据总线宽度。成果标明:
(a) 当体系具有32 位的数据总线宽度时,ARM 比 Thumb有更好的功能体现。
(b) 当体系的数据总线宽度小于32 位时,Thumb比 ARM 的功能更好。
由此可见, 并不是32位的ARM指令集功能必定强于16位的Thumb指令集,要详细情况详细剖析。调查个中的原因,其实不难发现,由于当在一个 16 位存储器体系里边取1 条 32位指令的时分,需求消耗2 个存储器拜访周期;比之 32位的体系,其速度正好大约下降一半左右。而 16 位指令在 32 位存储器体系或16 位存储器体系里的体现根本相同。正是存储器形成的体系瓶颈导致了这个风趣的不同。
除了在窄带宽体系里边的功能优势外, Thumb 指令的别的一个优点是代码尺度。相同一段 C 代码,用 Thumb 指令编译的成果,其长度大约只占 ARM 编译成果的 65%左右,能够明显地节约存储器空间。在大多数情况下,紧凑的代码和窄带宽的存储器体系,还会带来功耗上的优势。
当然,如果在 32 位的体系上面,而且对体系功能要求很高的情况下,ARM是一个更好的挑选。究竟在这种情况下,只要 32 位的指令集才干彻底发挥 32位处理器的优势来。
因而,挑选 ARM 仍是 Thumb,需求从存储器开支和功能要求两方面加以权衡考虑。