Linux嵌入式开发基础——计算机组成原理
目录
1.计算机体系
计算由硬件系统和软件系统两大部分组成。
按照功能可以分为:1)指令系统;2)存储系统;3)输入输出系统等。
按照存储结构分为:1)冯诺依曼结构;2)哈佛结构。
1.1 冯诺依曼结构
该结构把计算机分成了运算器、控制器、存储器、输入设备和输出设备5个部分。
工作原理:计算机的指令存储在存储器内,工作的流程是从存储器取出指令,由运算器运算指令,控制器负责处理输入和输出设备。
缺点:数据和指令放在一起,运算器在取指令的时候不能同时取数据,造成工作流程上的延迟,运算效率不高。哈佛结构解决了该缺点。
1.2 哈佛结构
最大的特点:指令和数据分开存储。
控制器可以先读取指令,然后交给运算器解码,得到数据地址后,控制器读取数据交给运算器;在运算器运算的时候,控制器可以读取下一条指令或者数据。
优点:执行效率高;分开存储可以使指令和数据使用不同的数据宽度,方便芯片的设计。
在嵌入式系统中,大多数的处理器都使用的哈佛结构,如常见的ARM处理器,以及一些单片机。
2.中央处理器(CPU)
组成:运算器、控制器、寄存器和内部总线。
参数:工作频率(包括主频、外频和外部总线频率)、字长(位宽)、指令集和缓存。
主频是CPU的实际工作频率,外频是CPU工作的基准频率。字长决定CPU处理数据的能力,是CPU在一个周期能处理的最大数据宽度。 因此,衡量一个CPU的处理能力要看工作频率和字长。
CPU指令集按照指令的执行方式分为:1)复杂指令集(CISC);2)精简指令集(RISC)。
1)CISC:特点是使程序按照顺序执行。优点是结构简单,便于控制。缺点是计算机各部分不能同时工作,执行效率不高。常见的CISC指令集CPU是Intel的X86系列。
2)RISC:特点是简化了每条指令的复杂度并且减少了总的指令数量。改进了复杂指令集的缺少。嵌入式系统CPU大多采用RISC指令集,如ARM系列的CPU。
缓存主要用来暂时存储指令和数据,缓存越大,CPU相对处理指令的能力就越强。
3.存储系统
计算机的存储系统采用了速度由慢到快,容量由大到小和价格由低到高的多层次存储结构。
4.总线系统
总线是CPU连接外部设备的通道。
- DataBus(数据总线):从外部设备读取或者写入信息;
- AddressBus(地址总线):向外部设备发送地址信息;
- ControlBus(控制总线):发送信号控制外部设备。
5.输入输出系统
组成:外部设备、输入输出控制器。
CPU通过总线与输入输出系统相连。由于外部设备是速度差异,CPU可以通过不同的方式控制外部设备的访问,常见的又轮询方式、中断控制方式和DMA方式。
- 轮询方式:CPU不断查询某个外部设备的状态,如果外部设备准备好,就可以向其发送数据或读取数据。缺点:由于CPU不断查询总线,导致指令执行受到影响,效率非常低。
- 中断控制方式:正常情况下,CPU执行指令,不会主动去检查外部设备的状态。外部设备的数据准备好之后,向CPU发送中断信号,CPU收到中断信号后停止当前工作,根据中断信号指定的设备号处理相应的设备。优点:既不影响CPU的运行,也能保证外部设备的数据得到及时处理,工作效率很高。嵌入式系统通常会设计许多的中断信号控制线,供连接不同的外部设备。缺点:不适合大量数据传输的情况,因为每收到一个数据包后都会向CPU发出一个中断,大量的中断会导致CPU忙于处理中断而减小对指令的处理,效率会变得很低。
- DMA方式:直接内存访问(Direct Memory Access),外部设备在数据准备好之后只需要向DMA控制器发送一个命令,把数据的地址和大小传送过去,由DMA控制器负责把数据从外部设备直接存放到内存 。优点:对处理大量数据十分有效,越来越多的嵌入式处理器支持它。
参考文献:弓雷的《ARM嵌入式Linux系统开发详解》第2版