跳至主要内容

【转】ARM9简介

ARM9简介
2007-04-02 13:08

ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,主要包括ARM9TDMIARM9E-S等系列。

    以手机应用为例,2G手机只需提供语音及简单的文字短信功能,而目前的25G和未来的3G手机除了提供这两项功能外,还必须提供各种其他的应用功能。主要包括:(1)无线网络设备:手机上网、电子邮件及其他定位服务等功能;(2)PDA功能:含有用户操作系统(Windows CESymbian OSLinux)及其他功能;(3)高性能功能:音频播放器、视频电话、手机游戏等。在25G3G的应用中ARM9已经全面替代了ARM7。因为ARM9的新特性能够满足各种新需求的同时减少产品研发时间并降低研发费用。

    新一代的ARM9处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。

1 时钟频率的提高

    ARM7处理器采用3级流水线,而ARM9采用5级流水线,如图123所示。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在同样的加工工艺下,ARM9TDMI处理器的时钟频率是ARM7TDMI1822倍。

2 指令周期的改进

    指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能的提高在30%左右。

21 loads 指令矛n stores指令

    指令周期数的改进最明显的是loads指令和stores指令。从ARM7ARM9这两条指令的执行时间减少了30%。指令周期的减少是由于ARM7ARM9两种处理器内的两个基本的微处理结构不同所造成的。

(1)ARM9有独立的指令和数据存储器接口,允许处理器同时进行取指和读写数据。这叫作改进型哈佛结构。而ARM7只有数据存储器接口,它同时用来取指令和数据访问。

(2)5级流水线引入了独立的存储器和写回流水线,分别用来访问存储器和将结果写回寄存器。

以上两点实现了一个周期完成loads指令和stores指令。

22 互锁(interlocks)技术

    当指令需要的数据因为以前的指令没有执行完而没有准备好就会产生管道互锁。当管道互锁发生时,硬件会停止这个指令的执行,直到数据准备好为止。虽然这种技术会增加代码执行时间,但是为初期的设计者提供了巨大的方便。编译器以及汇编程序员可以通过重新设计代码的顺序或者其他方法来减少管道互锁的数量。

23 分枝指令

    ARM9ARM7的分枝指令周期是相同的。而且ARM9TDMIARM9E-S并没有对分枝指令进行预测处理。

3 ARM9结构及特点

    ARM9E-S为例介绍ARM9处理器的主要结构及其特点。ARM9E-S的结构如图4所示。其主要特点如下:

(1)32bit定点RISC处理器,改进型ARMThumb代码交织,增强性乘法器设计。支持实时(real-time)调试;

(2)片内指令和数据SRAM,而且指令和数据的存储器容量可调;

(3)片内指令和数据高速缓冲器(cache)容量从4K字节到1M字节;

(4)设置保护单元(protcction unit),非常适合嵌入式应用中对存储器进行分段和保护;

(5)采用AMBA AHB总线接口,为外设提供统一的地址和数据总线;

(6)支持外部协处理器,指令和数据总线有简单的握手信令支持;

(7)支持标准基本逻辑单元扫描测试方法学,而且支持BIST(built-in-self-test)

(8)支持嵌入式跟踪宏单元,支持实时跟踪指令和数据。

4 ARM9的典型应用

    TI公司的OMAP730是最新的无线通信基带信号处理器。该处理器是TIGPRS Class 12通信模块与专用于应用处理的ARM926通用处理器(GPP)的集成。由于GPP的速度可达200MHz,因此OMAP730具有两倍于上一代OMAP710处理器的应用处理性能。如同所有的OMAP处理器一样,OMAP730可支持领先的移动操作系统,其中包括Microsoft的智能电话与Pocket PC PhoneEditionSvmbian OSSeries 60Palm OS以及Linux

    TI OMAP730结构如图5所示。其中ARM926TEJ处理器的主要特性包括:(1)最高频率200MHz(2)16KB指令高速缓存,8KB数据高速缓存;(3)硬件JAVA加速;(4)扩展多媒体指令集结构。

    ARM微处理器是一种高性能、低功耗的32位微处器,它被广泛应用于嵌入式系统中。ARM9代表了ARM公司主流的处理器,已经在手持电话、机顶盒、数码像机、GPS、个人数字助理以及因特网设备等方面有了广泛的应用。

ARM920T的内部结构图

评论

此博客中的热门博文

【转】VxWorks中的地址映射

在运用嵌入式系统VxWorks和MPC860进行通信系统设计开发时,会遇到一个映射地址不能访问的问题。 缺省情况下,VxWorks系统已经进行了如下地址的映射:   memory地址、bcsr(Board Control and Status)地址、PC_BASE_ADRS(PCMCIA)地址、Internal Memory地址、rom(Flach memory)地址等,但是当你的硬件开发中要加上别的外设时,如(falsh、dsp、FPGA等),对这些外设的访问也是通过地址形式进行读写,如果你没有加相应的地址映射,那么是无法访问这些外设的。   和VxWorks缺省地址映射类似,你也可以进行相应的地址映射。   如下是地址映射原理及实现:   1、 地址映射结构 在Tornado\target\h\vmLib.h文件中 typedef struct phys_mem_desc { void *virtualAddr; void *physicalAddr; UINT len; UINT initialStateMask; /* mask parameter to vmStateSet */ UINT initialState; /* state parameter to vmStateSet */ } PHYS_MEM_DESC; virtualAddr:你要映射的虚拟地址 physicalAddr:硬件设计时定义的实际物理地址 len;要进行映射的地址长度 initialStateMask:可以初始化的地址状态: 有如下状态: #define VM_STATE_MASK_VALID 0x03 #define VM_STATE_MASK_WRITABLE 0x0c #define VM_STATE_MASK_CACHEABLE 0x30 #define VM_STATE_MASK_MEM_COHERENCY 0x40 #define VM_STATE_MASK_GUARDED 0x80 不同的CPU芯片类型还有其特殊状态 initialState:实际初始化的地址状态: 有如下状态: #define VM_STATE_VALID 0x01 #define VM_STATE_VALID_NOT 0x00 #define VM_STATE_WRITA

【转】多迷人Gtkmm啊

前边已经说过用glade设计界面然后动态装载,接下来再来看看怎么改变程序的皮肤(主题)     首先从 http://art.gnome.org/themes/gtk2 下载喜欢的主题,从压缩包里提取gtk-2.0文件夹让它和我们下边代码生成的可执行文件放在同一个目录下,这里我下载的的 http://art.gnome.org/download/themes/gtk2/1317/GTK2-CillopMidnite.tar.gz     然后用glade设计界面,命名为main.glade,一会让它和我们下边代码生成的可执行程序放在同一个目录下边     然后开始写代码如下: //main.cc #include <gtkmm.h> #include <libglademm/xml.h> int main(int argc, char *argv[]) {     Gtk::Main kit(argc,argv);         Gtk::Window *pWnd;        gtk_rc_parse("E:\\theme-viewer\\themes\\gtk-2.0\\gtkrc");       Glib::RefPtr<Gnome::Glade::Xml> refXml;     try     {         refXml = Gnome::Glade::Xml::create("main.glade");     }     catch(const Gnome::Glade::XmlError& ex)     {         Gtk::MessageDialog dialog("Load glade file failed!", false,       \                                   Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK);         dialog.run();               return 1;     }         refXml->get_widget("main", pWnd);     if(pW

【转】https客户端的实现(libcurl)

一、              概念 1.         为什么要使用libcurl 1)        作为http的客户端,可以直接用socket连接服务器,然后对到的数据进行http解析,但要分析协议头,实现代理…这样太麻烦了。 2)        libcurl是一个开源的客户端url传输库,支持FTP,FTPS,TFTP,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP,支持Windows,Unix,Linux等平台,简单易用,且库文件占用空间不到200K 2.         get和post方式 客户端在http连接时向服务提交数据的方式分为get和post两种 1)        Get方式将所要传输的数据附在网址后面,然后一起送达服务器,它的优点是效率比较高;缺点是安全性差、数据不超过1024个字符、必须是7位的ASCII编码;查询时经常用此方法。 2)        Post通过Http post处理发送数据,它的优点是安全性较强、支持数据量大、支持字符多;缺点是效率相对低;编辑修改时多使用此方法。 3.         cookie与session 1)        cookie cookie是发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个Web站点会话之间持久地保持数据。cookie在客户端。 2)        session session是访问者从到达某个特定主页到离开为止的那段时间。每一访问者都会单独获得一个session,实现站点多个用户之间在所有页面中共享信息。session在服务器上。 3)        libcurl中使用cookie 保存cookie, 使之后的链接与此链接使用相同的cookie a)         在关闭链接的时候把cookie写入指定的文件 curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "/tmp/cookie.txt"); b)        取用现在有的cookie,而不重新得到cookie curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookie.txt"); b)        ht