计算机原理与嵌入式系统笔记:第十一篇
CPU总线
计算系统包括微处理器(CPU)、输入输出设备(I/O Devices)和存储器。
总线(bus) 是系统组件之间的公共连接,是CPU与存储器和设备进行通信的机制,定义它们之间通信的协议。
协议(protocol) 定义了设备之间如何通信。
四周期握手协议
- 设备1升高查询信号的输出电平,告诉设备2准备监听数据。
- 当设备2准备好接收数据时,它使应答信号为高电平。这时设备1和设备2已准备好发送或接收数据。
- 一旦数据传送完毕,设备2使应答信号为低电平,表示已经接收完数据。
- 检测到应答信号变低,设备1降低其查询信号的输出电平
典型总线结构
总线的基本操作是读和写,典型的总线结构包括以下组件:
- Clock:时钟,用于总线各组件之间的同步。
- R/W:当总线读时,R/W为1;当总线写时,R/W为0。
- Address:是一个a位信号束(bundle),传输访问的地址。
- Data:是一个n位信号束,用于传输CPU发送或者接收的数据。
- Data ready:数据就绪,表示数据信号束上的值有效。
传输由CPU控制,R/W和地址是单向信号,CPU决定地址和方向。
总线操作的时序图与顺序图
总线上的读或写操作称为事务(Transaction)。
下面是一个一个先读后写的总线传输顺序图(sequence diagram):
- CPU首先从内存中读取一个存储单元的数据;
- 然后,CPU再将数据写入到设备dev1中;
- 对于读或写事务,每次都由总线协议进行管理。
时序图(timing diagram)表示总线上的信号如何随时间变化。为了保证该信号在正确时间达到正确值,时序图经常显示时序约束(timing constraint)。时序约束既定义顺序也定义时间差。
等待状态与突发传输
总线操作的状态机视图
直接存储器访问与总线主控器
直接存储器访问(direct memory access, DMA)是一种不由CPU控制的总线读写操作。DMA传输由DMA控制器控制,它从CPU请求总线控制,得到控制权后,DMA控制器直接在设备和存储器之间执行读写操作。
- 总线请求(bus request) 是CPU的输入信号,通过它DMA控制器请求总线控制权。
- 总线授权(bus grant) 信号表示总线已经授权给DMA控制器。
能够自己启动总线传输的设备叫总线主控器(bus master)。
默认情况下CPU是总线控制器,由CPU来启动DMA传输。 DMA控制器也可以申请控制总线,使用总线请求和总线授权两个信号来获得总线控制权,过程类似四周期握手协议。CPU将总线控制权授予DMA控制器之前,将完成所有未完成的总线事务。在DMA工作期间,CPU不使用总线,停止驱动总线信号。只要DMA控制器成为总线控制器,它就拥有对所有总线信号的控制权。
DMA控制器包括以下三个寄存器:
- 起始地址寄存器:从何处开始传输;
- 长度寄存器:要传输的字的个数;
- 状态寄存器:用于CPU操作DMA控制器。
DMA控制器的工作模式
DMA传输期间,CPU不能使用总线。如CPU需要总线,则停止,等待DMA交出控制权。为防止CPU空闲太长时间,大多数DMA控制器实现了一次只占用总线几个周期的工作模式(4、8、16个字)。
DMA请求的周期调度:每块数据后,DMA控制器交还控制权给CPU,进入一个预置的睡眠周期,之后再次为下一块数据传输请求总线。
此外,DMA在CPU不使用总线时为系统提供并行(parallelism)。
系统总线配置
一个微处理器系统可能含有多条总线,高速设备连到高速总线上,低速设备连到其他总线上。总线之间通过**桥接器(bridge)**互连。
使用多总线与桥接器的优点:
- 总线速度越高,能提供的数据带宽越大。
- 高速总线通常需要更昂贵的电路和连接器。可通过使用较慢、较便宜的总线来降低低速设备的成本。
- 桥接器允许总线独立操作,这样在I/O操作中可提供某些并行性。
AMBA总线
AMBA规范包括两条总线:
- 高性能总线AHB:经过优化专为高速传输服务,直接连接到ARM处理器上。支持一些高性能特性:流水线技术、突发传输、分离传输(split transfer)和多总线主控器等。
- 外设总线APB:设计简易,便于实现,功耗也较低。
调研报告中有详细介绍,这里不做展开。
存储设备
- 存储设备组织:
- 容量
- 数据宽度
- 256Mb存储器
- 64M×4位
- 32M×8位
- 长宽比(aspect ratio)
存储器内部,数据是存放在二维阵列存储单元中,n位地址被分成行地址r和列地址c(n=r+c)。行列地址联合起来选定一个特定存储单元(1位或子集)。
随机存储器
- 随机存储器(RAM):可以被读和写,地址可以按任意顺序读取。
- 静态随机存储器SRAM(Static Random AccessMemory):小容量快速存储器。
- 动态随机存储器DRAM(Dynamic Random AccessMemory):密度大、需要周期刷新。
- 同步DRAM(Synchronous DRAM,SDRAM):使用同步时钟来提升DRAM的性能,内部刷新及数据传输都以系统时钟为准。
- 双倍数据速率DRAM(DDR SDRAM):速度更快的同步动态随机存储器,能够在时钟的上升沿和下降沿各传输一次数据,因此一个时钟周期内传输两次数据。
电脑中使用的内存即为DDR内存,现在已经到DDR5了。
笔记本中的内存封装为SO-DIMM,DIMM表示双列直插内存模块,与之对应的是SIMM(单列直插内存模块)。
只读存储器
嵌入式系统中很多代码以及数据不随时间改变,对辐射感应错误相对不敏感。只读存储器(read-only memory,ROM) 所存数据稳定,断电后所存数据也不会改变,并且其结构较简单,读出较方便。
闪存存储器
闪存(flash)是非易失性存储器,可以电擦除。闪存使用标准系统电压擦写和编程,允许在标准系统内部再编程。擦写次数有限:104~105次。闪存使用随机读访问,写操作比读操作慢的多。
闪存分为两大类:
- NOR Flash:按字访问,整块擦除。地址线和数据线分开,适于随机读或写,可用作启动代码的存储芯片。
- NAND Flash:读一页,整块擦除。更便宜,擦写速度快。 共用地址和数据线,适于顺序访问,可以用作存储媒体数据。
存储系统组织
存储芯片内部的组织方式:
- 多片存储器芯片串联,组合成更大容量。
- 多片存储器芯片并联,组合成更大数据宽度。
通道和组是提高内存系统并行度的两种方式。
I/O接口
这一块不知道有啥好考的。我觉得基本不考。
监视定时器
看门狗定时器(watchdog timer)是一个用于系统内部操作的I/O设备。看门狗定时器连接到CPU总线和CPU复位线上。CPU的软件在定时器未达到超时限制前,周期性的重置监视定时器;一旦定时器达到该限制,它的超时动作就复位处理器。
之前折腾ESP系列单片机,在Watchdog上面卡了好久,总是跑到一半就自动复位。后来发现程序中的延时设置的不好,超过看门狗上限了。
定时器&计数器
- 定时器和计数器很相似,区别主要在用途,而不是其逻辑电路。
- 它们都是由带有保存当前值的寄存器和向当前寄存器值加1的一个增量输入的加法器逻辑电路组成。
- 定时器让它的计数连到周期性时钟信号上以测量时间间隔;而计数器让它的计数连到非周期性信号上以计算外部事件的发生次数。
- 完成设定的定时时间或计数次数通常会产生中断。
触摸屏
触摸屏分为电阻屏和电容屏两种。
- 电阻屏:精度高、噪声小;需要触笔、单点触控。
- 电容屏:精度低、噪声大;用手指、多点触控。
还有一种叫电磁屏,三星Note系列手机采用。电磁屏不仅具备电容屏的所有功能,还支持触笔。以前有台三星Note2,2012年的手机,自带的S-Pen已经支持1024级压感了。
计算平台的设计与性能分析
系统的体系结构
体系结构指共同构成一个单元的一组元件及元件之间的关系。 嵌入式计算系统的体系结构是实现嵌入式计算系统的蓝图(blueprint),定义系统需要的元件和如何连接。
嵌入式计算系统的体系结构包括:
- 硬件体系结构
- 软件体系结构
硬件体系结构
硬件体系结构包括以下单元:
- CPU:多种不同体系结构,一种体系结构内也有不同的时钟速度、存储结构、集成的外围设备等。
- 总线:总线的选择对系统的限制也许比CPU更多,必须保证总线能够提供足够的数据带宽。
- 存储器:不是有没有,而是有什么特性。存储容量?ROM与RAM的比例?SRAM还是DRAM?速度和带宽?
- 输入/输出设备:网络?传感器?接口?使用某一设备的难度与耗费在最终选择中起着重要作用。
软件体系结构
软件体系结构设计的基本任务是划分——以利于实现、测试和修改的方式把系统功能分成块。良好的程序设计需要代表体系结构的结构设计,将系统的功能按照操作的主要方式和设备的功能分成块。
硬件平台
评估板
在嵌入式系统设计的初期阶段,首先考虑采用微处理器造商和合作公司提供的评估板(evaluation board)。典型的评估板包括CPU、存储器、下载程序的串行链接和少数的I/O设备。
CPLD和FPGA
- IOB:可编程输入输出单元
- CLB:可配置逻辑单元
- DCM:数字时钟管理单元
- BRAM:嵌入式块RAM
PC
个人计算机(PC)也经常用作嵌入式计算的平台。
-
优点:
- 预留I/O接口多,可扩展丰富的I/O设备。
- 提供丰富的编程环境。
-
缺点:
- 体积大
- 耗电量大
- 比定制硬件平台昂贵
基于PC的嵌入式系统通常用在对体积大小和耗电量不敏感的场合。
典型的计算平台硬件架构
软件层次
层次图用于描述系统不同软件组件之间的关系:
- 硬件抽象层(HAL)提供硬件平台的基本功能抽象。
- 设备驱动(drivers)和电源管理借助HAL来访问底层硬件。
- 操作系统和文件系统提供构建应用程序的基本接口。
- 应用程序通过复用库函数来进行设计。
带宽传输
必考。
带宽(bandwidth) 指数据传输的速率,涉及到嵌入式计算系统中的多个组件:
- 总线
- 存储器
- CPU
必须经过时钟周期和带宽的换算,为系统每一部分的性能评估提供正确的参考,因为:
- 系统不同部分采用不同的时钟频率
- 系统不同部分的接口数据位宽也不相同
基本传输
突发传输
带宽瓶颈
练习
假设CPU以30帧/秒的速度通过总线从存储器中读取高清视频(分辨率是1920×1080),分别计算满足带宽需求时,总线和存储器的最低时钟频率。
-
总线时钟频率计算:
宽度4字节,突发模式B=16,D=1,O=3。
-
存储器时钟频率计算:
宽度4字节,突发模式B=4,D=1,O=4。
答案
第一问:
先计算每秒要传输的字节。
N = 30x1920x1080x3x8 = 1492992000 bits = 186624000 bytes
T = (16x1+3)xN/BW = 55404000 cycles,则最低时钟频率为55404000。
第二问:
T' = (4x1+4)xN/BW = 93312000 cycles,则最低时钟频率为93312000
下一章会开始讲程序的设计与分析,内容比较少