MIPS,PowerPC和ARM

来源:百度文库 编辑:神马文学网 时间:2024/04/28 04:05:19
多核 MIPS 之 RMI XLR
2008-11-18 14:48
XLR 系 RMI (Raza Microelectronics, Inc) 于 2005 年推出的多核多线程处理器,主要面向高端的通信和网络应用。
同样的,RMI,fabless 也。下图是 XLR 8 核版本 (XLR732/532) 的一个框图:

XLR732 含 8 个 MIPS64 R1 的核,
每核为单发射定序 10 级流水线 (Single In-order Issue),分支预测方面,其具有 2K 项的 G-share table 以及 8 项返回地址栈 (Return Address Stack), 实现 4 个硬件线程,且具有 64KB 的 L1 Cache (32KB D-Cache, 32KB I-Cache)。单核具有 64 个 TLB 项,可配置为每个线程各用 16 项,且互不干扰。
多核 MIPS 之 Tile64
2008-09-05 15:25
Tile64 是由美国 Tilera 公司设计的 64 核的 MIPS。这个 Tilera 是一个 fabless。

Tile64 瞄准通用和高端嵌入式领域,主要面向网络、视频和电信应用。其于 2007 年 8 月发布,看上去挺彪悍的 :)

64 个核通过片内 Mesh 网络 (Tilera's iMesh) 互联,各核皆通过自身的非阻塞 switch 连入 Mesh 网。Mesh 的互联带宽可达 31 Tbps
与一般的多核 MIPS 实现不同, Tile64 的每个核都有 L2 Cache。
核内采用顺序 (In-order) 3 发射 (three-issue) 短流水线,实现 MIPS-derived VLIW 指令集。
整个性能可以到 443 billion operations per second (BOPS)
片内还集成有 4 个 DDR2 控制器,2 个 10GbE XAUI MAC/PHY,2 个 4x PCI-E,2 个 GbE MAC,1 个 Flexible I/O 接口。
I/O 的带宽能达到 50Gbps
操作频率 500MHz ~ 866MHz。
700MHz 时所有核都跑有应用的情形下,功耗是 11 ~ 22W。这个有点牛 B 了,平均每个核的功耗是 0.34375W。
MIPS,PowerPC和ARM访问I/O方式的比较
2008-02-03 17:39
最近看了一下PowerPC(E500)的MMU部分,看了ioremap的介绍,比较有感触,所以简单比较了一下MIPS,PowerPC和ARM(这里只考虑32位版本的,MIPS64和PowerPC64不在此范围内)访问I/O的方式。首先这三种体系结构都使用存储器映射的I/O,都是32位物理地址空间(排除一些特殊的处理器,比如PowerPC E500 v2支持36位物理地址)。下面分别说明一下具体的访问方式:
MIPS:
由于MIPS的地址空间映射机制比较特殊,kernel在访问kseg0和kseg1段时,根本不需要经过MMU,虚拟地址直接减去一个偏移就是物理地址(虽说PowerPC和ARM看起来也是虚拟地址减一个偏移,但是实际上都是经过TLB的)。MIPS处理器一般把外设映射到虚拟地址0xA0000000-0xBFFFFFFF之间的512MB地址空间中,而且不通过Cache。所以只要知道外设的物理地址,则只需在代码中直接加上0xA0000000就是外设的虚拟地址,这样访问起来速度比较快。但是,缺点是灵活性比较差,主内存和外设都只能映射在512MB的地址空间中,限制比较多。
PowerPC(E500):
对于E500来说,不管访问什么地址都是要通过MMU的。kernel启动的时候,已经把kernel的虚拟地址空间的kmalloc区域在TLB1中建立了直接映射。而访问I/O则需要通过ioremap()函数,在页表中建立虚拟地址和物理地址的映射后才能正常访问。范围一般是ioremap_base(一般是0xFE000000)到ioremap_bot。这里需要注意的是,ioremap_bot是小于ioremap_base的。而这会影响vmalloc区域的使用,这段区域是从VMALLOC_START到ioremap_bot,也就是说PowerPC的vmalloc区域是随着ioremap_bot的变化而变化的。所以PowerPC访问外设要先建立页表(在TLB0中),比较麻烦,访问速度比较慢。访问结束后要使用iounmap()撤销映射。当然PowerPC也提供另外一种访问I/O的方式——io_block_mapping()。可以在TLB1中建立永久的块映射,最大可以到256MB,这样访问的时候就不需要调用ioremap()临时分配虚拟地址,并建立页表了。不过Linux PowerPC的maintainer并不推荐这种方式,原因是滥用io_block_mapping会破坏PowerPC内核虚拟地址空间的布局。
ARM:
ARM有点类似于PowerPC,访问任何地址都要通过MMU。但是ARM Linux的做法是为每一个平台定义一个静态数组standard_io_desc[],其中定义了每一个外设的物理地址和对应的虚拟地址,这是由程序员自己根据需要分配的,一般来讲是分配在虚拟地址的高端部分,比如在0xF0000000以上,并且不与vmalloc区域重叠(对于ARM来说,vmalloc区域在kmalloc区域+8MB——I/O区域之间,不同的平台地址不太一样)。然后调用xxx_map_io()函数建立页表,一般会根据不同设备的地址范围的大小使用1MB或者4KB的页,这样就建立了外设的物理地址和内核虚拟地址的映射关系。然后,一般还会在头文件中定义外设的各个寄存器的虚拟地址,在操作外设时就直接读写这些宏所定义的虚拟地址就可以了,不需要调用ioremap动态的建立页表。这种方法类似于PowerPC的io_block_mapping()。所以ARM访问外设的速度要比PowerPC快一点,因为省去了动态建立页表的步骤。
总得来说,MIPS,PowerPC和ARM访问I/O的方式各有千秋,MIPS是速度较快,操作简单,但是灵活性较差;PowerPC是灵活性大但是速度较慢;ARM算是在二者之间取了一个平衡。
WindRiver与Motorola结成战略联盟
2007-08-13 15:16
Motorola和WindRiver结成战略联盟,共同推广ATCA和uTCA设备。Motorola生产的ATCA和uTCA设备,将会捆绑WindRiver的Linux和VxWorks。这些产品主要面向下一代互联网基础架构,电信,军事,航天,医疗和工业自动化。VxWorks跑在dataplane上,Linux跑在controlplane上,属于典型的AMP应用。相比于同行业的其他竞争者,WindRiver具有这种优势——既有RTOS产品,也有商业Linux产品。
Palm Foleo用的是Wind River Linux
2007-08-08 11:47
今天浏览了一下LinuxDevices.com,发现一个重要新闻,Palm的Foleo采用Wind River Linux了。Palm Foleo将使用Freesacel i.MX31处理器,有1024x768分辨率的10.2英寸彩屏,256MB内存,有CF,SD和USB接口,支持蓝牙和WiFi。Palm Foleo发行时,将带有SDK给用户,但是SDK中不带有Wind River的工具。
具体信息,请点击这里。
SAS VS SATA
2007-09-06 15:39
看了一个关于SAS和SATA的材料,总结了一下SAS和SATA之间的区别。
* SATA设备由端口号来识别,而SAS设备是通过一个全球独一无二的名字来识别(有点像网卡的Mac地址)
* 大多数SAS设备使用Tagged Command Queuing,而新的SATA设备使用Native Command Queuing
* SATA设备遵循ATA命令集,因此只支持硬盘和CD/DVD驱动器,SAS理论上可以支持扫描仪,打印机之类的   设备
* SAS支持硬件multipath I/O,但是SATA不支持,不过可能会在SATA2中支持
* SATA的市场只是普通PATA设备的替代品,而SAS设备的市场服务器应用
* SAS有比SATA更干净的错误恢复和报告功能
* SAS设备的信号电压比SATA设备高
* SAS设备的电缆可以有8m长,而SATA设备电缆最长不超过1m
* 当然SAS设备和SATA设备在Linux内核中有不同的配置,SAS的配置通过Fusion MPT device来实现