AMBA总线介绍
AMBA介绍
- AMBA总线应用:IOT系统/智能手机/网络SoC
- 何处使用AMBA系统:相机\手机\电脑
应用场景
规格说明
软硬件划分
- 软硬件划分:哪一部功能软件做,哪一部分硬件做,软件适合做控制比较灵活的工作,硬件适合做运算量大比较规整的操作
- 主要功能进行音频解码和视频解码
- 1080P:一幅图有1080行,一般图像是16:9的比例,1080(16/9)=1920列,有10801920像素点
- 刷新率:1s图像的刷新率
- 视频运算量巨大,使用硬件进行解析,音频运算量小,使用软件进行
软硬件交互
- vedio_core要将数据从Flash搬移到vedio_core中进行解码,CPU不适合搬移数据,CPU需要完成其他的功能,通过DMA的方式进行搬移数据
- Vedio_Core完成处理之后,产生中断与CPU进行交互
IP选择
- 选择CPU:CPU选择ARM922T
- 选择BUS:AHB
SoC系统架构
- AHB_Arbiter - 决定哪个master控制总线
- AHB_DEC - decoder,进行地址译码,将命令传送给哪一个slave
- EMI - Ext Memory Interface - 片外存储接口
- DMA - 搬移数据
- Interrupt Controller - 中断控制器
AMBA历史
- ATB 1.0 - 数据是单向的,进行CPU debug使用
- AHB-Lite - 专门针对只有1个master所设计的协议
- AXI3 - 有5个通道
AMBA和ARM处理器
Memory Model & Memory type
- memory map在应用层面上可以将memory地址空间的数据分成几类:
设备相关的寄存器,比如GPIO,UART
OS相关的指令和数据
应用相关的指令和数据
- 每种数据类型对应的属性是不同的,比如设备寄存器的属性是uncached,访问它的数据是不能进入cache,访问寄存器的数据是想要让其立即生效,如果访问该数据进入到cache中,就不知道什么时候cache中的数据会写到寄存器中,效率比较低
- 数据空间的访问权限也可以限制:OS的指令和数据只能在CPU处于特权模式下访问,应用程序的指令和数据在CPU非特权模式下访问
Memory Type
- Normal Memory - 数据存放在RAM和ROM中,作为普通存储数据,对于系统没有影响,读数据可以进入到cache中,写的数据也可以进入到buffer中,这些数据CPU执行效率是最高的
- Device Memory - 往往是指一些寄存器或者对于读写敏感的寄存器,读不可以进入cache,但是写数据可以进入到buffer
- Strong-Ordered - 不能进入cache和buffer,一旦访问这种存储器中的数据希望其立即生效,.比如clock开关寄存器,访问这个数据,希望时钟立即生效
Memory类型和系统性能
- Bus接收到CPU的命令之后立即返回resp给到CPU,然后再将命令传送给memory,memory再返回数据
- Bus接收到多个CPU传输命令,可以将命令进行merge,然后发送给slave
- Device Memory访问过程与Normal Memory访问过程类似
- 对于strongly-ordered Memory访问CPU效率是最低的
Secure and Non-Secure
- Memory Map分为两个region,一个是secure region,另外一个是non-secure region,secure region存储的是非常重要的信息,比如账号密码\指纹等
- Processor State - 分为nomal状态和secure state,之后在secure state下才能访问到secure region
- 应用程序最初为user mode -->如果要访问secure region,程序会转到priviledge mode -->CPU转到monitor mode检查是否允许程序访问secure region --> 在监控程序下判断完成允许访问secure region,可以进入到用user mode或者privilege mode下访问secure region
Trustzone Hardware Architecture
- 支持Secure和None Secure的机制称为TrustZone
- CPU在secure mode下发出secure region的secure的访问,可以通过总线直接访问secure模块,CPU处于non secure mode,发送non secure的访问去访问secure region,secure的模块是可以拒绝访问的
Cache
- Cache是偏上的一小块memory,因为是偏上存储,所以访问速度比较快,主要用于存储CPU最近访问memory的数据
- CPU经常访问的数据放在cache中,CPU可以直接访问,减小对于bus interconnection的访问频率,相应减少带宽的需求,同时也会减小power consumption
- on chip mem访问相对于外部存储的访问功耗小
Cache Structure
- Data RAM - 存放数据
- Tag RAM - 存放地址
- Line - 4/8 word组成
- Way - 可以理解为片
- Set - 不同way中相同的line
- Tag - 用于标记memory地址,来自与访问地址,存放在tag RAM中
- CPU发出访问的时候,首先查找tag ram,看有没有匹配的地址,如果匹配的话就会从data ram中拿到数据
- index - 用与寻找way中的line,来自与访问地址,cpu根据index查找数据在哪个cache line中
Example:16KB 2-Way Cache
- 一个Way中有256个line,每个line有8个word,可以通过地址的[4:2]选择对应的哪个word
- [12:5] - 8bit用于寻址line
- [13:31] - 用于Tag地址
2-Way Set Associative Cache
Allocation
Read Allocation
Write Allocation
Cache Write Strategy
Process & Thread
- 进程和线程的关系
- 进程 Process - 车间,进行不同的工作
- 线程 Thread - 工人
- 工厂中有共同的资源,会造成冲突,mutex(互斥锁)保证资源每次只有一个使用,一个在使用,其他人不能使用
- semaphore - 共享资源可以被多个人使用,但是要有钥匙,资源分配完成之后,其他人需要进行等待
Atomic Access(原子访问)
- 实现mutex和semaphore需要硬件支持