首页天道酬勤arm9处理器的字是多少位的,arm处理器是哪个公司的

arm9处理器的字是多少位的,arm处理器是哪个公司的

张世龙 05-13 01:18 38次浏览

ARM7是认真的便当慢结构、三级流水线结构

ARM9、ARM11为哈佛结构、5级管线结构,性能稍高。

ARM9和ARM11通常都有内存管理器,对于运行操作系统有点好。 ARM7适合裸奔。

我们常说的ARM9系列有ARM9和ARM9E两个系列。 其中,ARM9属于ARM v4T架构,典型的处理器,例如ARM9TDMI和ARM922T; ARM9E是ARM v5TE体系结构,是典型的处理器,如ARM926EJ和ARM946E。 由于后者的芯片数量和APP应用更广泛,ARM9通常指ARM9E系列处理器(主要是ARM926EJ和ARM946E两种处理器)。 关于ARM9的介绍也集中在ARM9E上。

ARM7处理器和ARM9E处理器的流水线差别

对于嵌入式系统的设计者来说,硬件通常是首要考虑因素。 对于处理器来说,流水线是硬件差异最明显的标志,流水线设计会导致一系列硬件差异。 如图1所示,比较一下ARM7和ARM9E的管线。

您可以看到ARM9E已从ARM7的3级管线增加到5级。 ARM9E管线包含更多的逻辑操作,但各级逻辑操作更容易。 例如,在ARM7第三级流水中,需要内部读出寄存器,然后进行相关的逻辑运算和算术运算,并写回处理结果,完成的动作非常复杂,而在ARM9E的第五级流水中,进行寄存器读入、逻辑运算、结果写回这样可以大大提高处理器的工作频率。 由于各级流水与CPU的一个时钟周期相对应,一级流水中的逻辑太复杂,导致执行时间停止,必然需要的时钟周期延长,CPU的时钟频率不会提高。 因此,管线的延长有利于提高CPU时钟。 在典型的芯片制造工艺中,ARM7通常工作在100MHz左右,ARM9E至少在200MHz以上。

ARM9E处理器的存储器子系统

ARM926EJ和ARM946E是最常见的ARM9E处理器,它们包含一系列存储子系统,可提高系统性能并支持大型操作系统。 如图2所示,存储器子系统包括存储器管理单元(MMU )或存储器保护单元(MPU )、高速缓存、写缓冲器; CPU通过该子系统连接到系统内存系统。

引入缓存和写缓存是基于处理器速度远远快于内存访问速度的事实。 如果存储访问已成为系统性能瓶颈,则处理器需要花费大量时间等待存储,因此处理器速度快也没有用。 缓存用于解决此问题,它存储最近常用的代码和数据,并为CPU提供最快的处理速度(无需等待CPU访问Cache )。

图2 :复杂处理器内部的存储子系统。

MMU是支持存储管理的硬件单元,满足现代平台操作系统内存管理的需要; 主要有两个功能。 一种是支持虚拟/物理地址映射,另一种是提供不同存储地址空间的保护机制。 一个简单的例子有助于理解MMU的功能。

如图3所示,在一个操作系统下,程序开发者都在操作系统给定的API和编程模型下开发程序; 操作系统通常只向用户开放一个特定的存储地址空间。 这直接导致了一个问题,即所有APP应用程序都使用相同的内存地址空间。 当这些程序同时启动时,会发生内存访问冲突(在当前多任务系统中非常常见)。 操作系统如何避免这个问题呢?

操作系统使用MMU硬件单元完成存储访问从虚拟地址到物理地址的转换。 虚拟地址是程序员在程序中使用的逻辑地址,物理地址是实际存储单元的空间地址。 MMU可以根据一定规则将相同虚拟地址映射到不同的物理地址。 这样,即使启动了多个使用同一虚拟地址的程序进程,也可以通过MMU调度将其映射到不同的物理地址,而不会引起系统错误。

图3:MMU的功能和作用。

MMU除了地址映射功能之外还可以在不同的地址空间中设置不同的接入属性。 例如,操作系统将自己的内核地址空间设置为无法在用户模式下访问,这样用户APP应用程序就无法访问该空间,从而保证操作系统内核的安全。 MPU和MMU的区别在于,它们只有在地址空间中设置访问属性的功能,没有地址映射功能。

Cache和MMU等硬件单元的引入给系统程序员的编程模式带来了许多新的变化。 除了需要掌握基本的概念和使用方法外,系统优化的以下几个方面很有趣也很重要。

1、系统实时性考虑

由于用于保存地址映射规则的页面表(Page Table )非常巨大,所以通常MMU仅存储一点常用的页面表内容,大部分页面表内容存储在主存储器中; 调用新的地址映射规则时,MMU可能需要读取主内存才能更新页面表。 在某些情况下,系统可能会失去实时性。 例如,如果重要的程序代码需要执行,不巧该代码使用的地址空间不在当前MMU的页面表处理范围内,MMU首先更新页面表,然后完成地址映射,再进行合适的存储器访问整个地址解码过程非常长,对实时性有非常大的不利影响。 通常,基于MMU和Cache的系统在实时性方面不如简单的处理器。 但是。

一些办法能够帮助提高这些系统的实时效率。

一 个简单的办法是在需要的时候关闭MMU和Cache,这样就变成一个简单处理器了,可以马上提高系统实时性。当然很多情况下这不可行;在ARM的MMU和 Cache设计中,有一个锁定的功能,就是说你可以指定某一块页表在MMU中不会被更新掉,某一段代码或数据可以在Cache中锁定而不会被刷新掉;程序 员可以利用这个功能来支持那些实时性要求最高的代码,保证这些代码始终能够得到最快的响应和支持。

2、系统软件优化

在 嵌入式系统开发中,很多系统软件优化的方法都是相同和通用的,多数情况下这种规则也适用于ARM9E架构上。如果你已经是一个ARM7的编程xndhk,那么恭 喜你,以前你掌握的优化方法完全可以用在新的ARM9E平台上,但是会有一些新的特性需要你加倍注意。最重要的便是Cache的作用,Cache本身并不 带来编程模型和接口的变化,但是如果我们考察Cache的行为,就能够发现对于软件优化,Cache是有比较大的影响的。

Cache 在物理上就是一块高速SRAM,ARM9E的Cache组织宽度(cache line)都是4个word(也就是32个字节);Cache的行为受系统控制器控制而不是程序员,系统控制器会把最近访问存储器地址附近的内容复制到 Cache中去,这样,当CPU访问下一个存储器单元的时候(这个访问既可能是取指,也可能是数据),可能这个存储器单元的内容已经在Cache里了,所 以CPU不需要真的到主存储器上去读取内容,而直接读取Cache高速缓存上面的内容就可以了,从而加快了访问的速度。从Cache的工作原理我们可以看 到,其实Cache的调度是基于概率的,CPU要访问的数据既可能在Cache中已经存在(Cache hit),也可能没有存在(Cache miss)。在Cache miss的情况下,CPU访问存储器的速度会比没有Cache的情况更坏,因为CPU除了要从存储器访问数据以外,还需要处理Cache hit或miss的判断,以及Cache内容的刷新等动作。只有当Cache hit带来的好处超过Cache miss带来的牺牲的时候,系统的整体性能才能得到提高,所以Cache的命中率成为一个非常重要的优化指标。

根 据Cache行为的特点,我们可以直观地得到提高Cache命中率的一些方法,如尽可能把功能相关的代码和数据放置在一起,减少跳转次数;跳转经常会引起 Cache miss。保持合适的函数大小,不要书写太多过小的函数体,因为线性的程序执行流程是最为Cache友好的。循环体最好放置在4个word对齐的地址,这 样就能保证循环体在Cache中是行对齐的,并且占用最少的Cache行数,使得被多次调用的循环体得到更好的执行效率。

性能和效率的提升

前 面介绍了ARM9E相比于ARM7性能上的提高,这不仅表现在ARM9E有更快的主频、更多的硬件特性上面,还体现在某些指令的执行效率上面。执行效率我 们可以用CPU的时钟周期数(Cycle)来衡量;运行同一段程序,ARM9E的处理器可以比ARM7节省大约30%左右的时钟周期。

效 率的提高主要来自于ARM9E对于Load-Store指令执行效率的增强。我们知道在RISC架构的处理器中,程序中大约有30%的指令是Load- Store指令,这些指令的效率对系统效率的贡献是最明显的。ARM9E中有两个因素帮助提高Load-Store指令的效率:

1)ARM9内核是哈佛架构,拥有独立的指令和数据总线;相对应,ARM7内核是指令和数据总线复用的冯?危机的面包架构。

2)ARM9的5级流水线设计把存储器访问和寄存器写回放在不同的流水上面。

两 者结合,使得在指令流的执行过程中每个CPU时钟周期都可以完成一个Load或Store指令。下面的表格比较了ARM7和ARM9处理器之间的Load -Store指令。从中可以看出所有的Store指令ARM9比ARM7省1个周期,Load指令可以省2个周期(在没有互锁的情况下,编译工具能够通过 编译优化消除大多数的互锁可能)。

综合各种因素,ARM9E处理器拥有非常强大的性能。但是在实际的系统设计中,设计人员并不总是把处理器性能开到最大,理想情况是把处理器和系统运行频率降 低,使得性能刚好能满足应用需求;达到节省功耗和成本的目的。在评估系统能够提供的处理器能力过程中,DMIPS指标被很多人采用;同时它也被广泛应用于 不同处理器间的性能比较。

但是用DMIPS来衡量处理器性能存在很大的缺陷。 DMIPS并非字面上每秒百万条指令的意思,它是一个测量 CPU运行一个叫Dhrystone的测试程序时表现出来的相对性能高低的一个单位(很多场合人们也习惯用MIPS作为这个性能指标的单位)。因为基于程 序的测试容易受到恶意优化的干扰,并且DMIPS指标值的发布不受任何机构的监督,所以使用DMIPS进行评估时要慎重。例如对Dhrystone测试程 序进行不同的编译处理,在同一个处理器上运行也可以得出差别很大的结果,如图4中是ARM926EJ在32位0等待存储器上运行测试程序的结果。ARM一 直采用比较保守的值作为CPU的DMIPS标称值,如ARM926EJ是1.1DMPS/MHz。

图4:不同测试条件下ARM926EJ处理器的DMIPS值。

DMIPS 另外一个缺点是不能测量处理器的数字信号处理能力和Cache/MMU子系统的性能。因为Dhrystone测试程序不包含DSP表达式,只包含一些整型 运算和字符串处理,并且测试程序偏小,几乎可以完整地放在Cache里面运行而无需与外部存储器进行交互。这样就难以反映处理器在一个真实系统中的真正性 能。

一种值得鼓励的评估方法是站在系统的角度看问题,而不仅仅拘泥于CPU本身;而系统性能评估最好的测试向量就是用户应用程序或相近的测试程序,这是用户所需的最真实的结果。

ARM9E处理器的DSP运算能力

伴 随应用程序的多样化和复杂化,诸如多媒体、音视频功能在嵌入式系统里面也是全面开花。这些应用需要相当的DSP处理能力;如果是在传统的RISC架构上实 现这些算法,所需的资源(频率和存储器等)会非常不经济。ARM9E处理器一个非常重要的优势就是拥有轻量级的DSP处理能力,以非常小的成本(CPU增 加功能需要增加硬件)换来了非常实用的DSP性能。

因为CPU的DSP能力并不直接反映在像DMIPS这样的评测指标中,同时像以前的ARM7处理器中也没有类似的概念;所以这一点对所有使用ARM9E处理器进行开发的人来说,都是需要注意的一个要点。

ARM9E的DSP扩展指令如表2所示,主要包括三个类型。

1)单周期的16x16和32x16 MAC操作,因为数字信号处理中甚少32位宽的操作数,在32位寄存器中可以对操作数分段运算显得非常有用。

2)对原有的算术运算指令增加了饱和处理扩展,所谓饱和运算,就是当运算结果大于一个上限或小于一个下限时,结果就等于上限或是下限;饱和处理在音频数据和视频像素处理中普遍使用,现在一条单周期饱和运算指令就能够完成普通RISC指令“运算-判断-取值”这一系列操作。

3)前导零(CLZ)运算指令,提高了归一化和浮点运算以及除法操作的性能。

以 流行的MP3解码程序为例。整个解码过程中前端的三个步骤是运算量最大的,包括比特流的读入(解包)、霍夫曼译码还有反量化采样(逆变换)。ARM9E的 DSP指令正好可以高效地完成这些运算。以44.1 KHz@128 kbps码率的MP3音乐文件为例,ARM7TDMI需要占用20MHz以上的资源,而ARM926EJ则只要小于10MHz的资源

在 从ARM7到ARM9的平台转变过程中,有一件事情是非常值得庆幸的,即ARM9E能够完全地向后兼容ARM7上的软件;并且开发人员面对的编程模型和架 构基础也保持一致。但是毕竟ARM9E中增加了很多新的特性,为了充分利用这些新的资源,把系统性能优化好,需要我们对ARM9E做更多深入地了解。

lvds总线协议,lvds画面传输 m13是什么指令,stm32和arm9的区别