1.7 如何为你的Soc设计进行CPU选型
CPU选型在任何嵌入式系统设计当中都是一件有意思的事情,但是通常情况下是很随意。Stephen Olsen 曾经写过一篇关于在Soc设计过程中需要考虑哪些事情的的文章,文章里面包含了很多尤其关键的一些点,这些点的大多数也很适用于普通的板卡级别(board-based)系统设计,本章节内容就是基于Stephen Olsen的那篇文章。 ——Colin Walls
在接下来的Soc设计过程中如何CPU选型需要考虑很多因素,如果把Soc中的CPU比作汽车里面的发动机的话,你不会指望悍马车里装一个大众的发动机还能工作,同样,一个法拉利发动机也不适合这种车辆,它能提供与悍马发动机差不多的马力,但是它缺少扭矩力。简单使用汽车领域的评估指标“马力”来比喻CPU选型会产生误导,对某项功能来说,总有一个最优的的解决方案,这个同样也适用于SoC设计中的CPU选型,很多情况下,CPU选型是取决于系统架构师的知识结构和以往对某种设备(或某方面)的经验,实际上决定使用哪个CPU需要考虑整个系统规格:整体系统设计的复杂性,设计可重用性、系统保护、系统性能、功耗、尺寸、成本、开发工具以及中层软件(middleware )可获取性等等。
1.7.1 系统设计的复杂性
系统设计的复杂性对于CPU选择来说非常关键,例如,如果设计一个要求执行单状态机(single-state machine)且带一些中断的小的外设设备,你最好选择一些小的CPU或者MCU,像8051或Z80,最初的很多系统可能都适合这类CPU。例如一个寻呼机,它内存占用小,信号很慢,并且电池消耗要非常低。
算法和交互决定了系统的复杂性,也决定了是否需要RTOS。通常,当系统复杂性增加,需要更大位宽(bit-width)处理器可能性也会相应增加。
1.7.2 设计重用
设计持续重用导致系统复杂性持续增加。寻呼机在2000年设计出来,在2005升级成可以播放MP3,现在它需要支持触摸屏功能,显然一个8位的CPU已经不能满足。一个设计包含多少个交互接口可以很好的决定处理器的功耗需求,在寻呼机的例子,最初有2个交互接口:用户界面和射频连接(Radio link),比较新的设计里面包含了一个MP3播放器,我们为此需要增加一个存储器接口来存储数据和数据解码,还需要增加一个音频播放接口来播放数据(音乐),对比最初的设计,现在的设计的复杂性已经大幅增加,如果我们用前瞻性眼光来设计,很多早期的设计都可以被重用。确信你有为未来预留升级空间。现在的8位设计能适应MP3播放器,但是当这个设计被重用在机顶盒,一个需要更高带宽的外设,可能就要考虑重新设计完整解决方案,通过移植到ARM、MIPS或PowerPC架构下来处理这些新的约束和挑战。
1.7.3 存储器架构与保护
系统可能需要保护自身安全,抵抗外部或内它本身的“攻击”,这可能使得我们要去找那些包含(或支持)MMU的CPU,虚拟存储器允许被信任的程序能获取整个系统资源,不被信任的程序只能得到分配给它的那些资源,一个3G手机是一个关于系统保护最好例子,当一个恶意程序使你手机崩溃之后,你肯定不会再使用没有MMU的CPU了,尽管MMU不能完全避免系统崩溃,但是它减少了很难分辨系统故障的可能性。
三个主要的CPU架构周围包括了有8 bit、16 bit、32 bit 数据寄存器和16 bit、24 bit、32 bit地址总线,这些CPU主要的区别在于一个寄存器能存储多少信息以及所能寻址的空间范围
- 8 bit data/16 bit address =( 0-256 ),64K 地址空间
- 16 bit data/24 bit address =( 0-65535 ),16M 地址空间
- 32 bit data/24 bit address =( 0-2^32-1),4G 地址空间