AMBA总线介绍

发布时间 2024-01-08 17:54:21作者: Icer_Newer

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需要硬件支持


How does Exclusive Access Work?