中断实时性及处理技术简介
关键词:RISC-V 处理器 ,平头哥玄铁 CPU,RISC-V 指令集,IoT 芯片,中断任务
【导语】本文为 RISC-V 知识图谱系列中“处理器”主题的系列内容,主要介绍 CPU 处理外部事件的中断技术。
1.什么是中断
中断是 CPU 处理外部事件的一个重要技术。它能使 CPU 暂停正在执行的任务,转而处理中断请求,处理完成后返回断点,继续执行原来的任务。
2. 中断与轮询的区别
在一个 SoC 中,外部设备与 CPU 的交互一般有两种手段:轮询和中断。
轮询是指 CPU 不断查询外设的状态寄存器,从而了解设备的状态,进行必要的操作。为了节约 CPU 资源,查询工作往往不是连续的,而是定时进行。轮询方式具有简单,易实现,易控制的优势,同时也存在浪费 CPU 和系统资源,无法及时感知设备状态变化的不足。 中断,顾名思义,就是打断正在进行的工作。中断不需要处理器轮询设备的状态,设备在自己发生状态改变时将主动发送一个中断请求给处理器,后者在接收到这一请求时,会暂停当前正在执行的任务,转而去处理外设的中断请求。
目前大多数 SoC 的外设都采用中断的方式与处理器进行沟通,本文将重点介绍与中断实时性相关的技术。
3. 中断实时性的概念
中断实时性是指 CPU 响应中断的快慢程度,我们可以用中断响应时间来衡量它。CPU 响应中断,可以分为以下几个步骤:
(1) 完成当前指令的执行
(2) 保护现场
(3) 寻找中断入口
(4) 执行中断处理程序
(5) 中断返回并恢复现场
中断响应时间,就是从上述第(1)步开始,到第(4)步的第一条指令为止,所花费的时间。在很多系统,特别是实时系统中,必须尽量缩短中断响应时间,以提高中断的实时性。
4. 提高中断实时性的技术
我们重点介绍两项技术,分别用来加速上述的第(1)步和第(4)步。
4.1 中断快速响应模式——加速完成当前指令
在通常情况下,CPU 会在每条指令的“退休”阶段响应中断。所谓“退休”,是指一条指令已经完成了所有的操作,即将从流水线上退出。如果 CPU 执行了多周期指令或者执行延时不可预期指令,那么该条指令需要较长的时间才能到达“退休”阶段。此时的中断响应速度会受到极大影响,大幅降低系统的实时性。在中断快速响应模式下,CPU 无需等待指令退休,即可直接响应中断。这一机制可以打断较长执行延时的指令,从而提高中断响应的速度。
【例】玄铁 R807 实现了中断快速响应模式,软件可以通过控制寄存器打开/关闭此功能。
假设当前指令是一条 Load 指令,在没有 cache 或 cache miss 的情况下,CPU 需要读取 memory。受总线带宽和 memory 延时的影响,该指令的执行时间不确定。
在普通模式下,CPU 必须等到 Load 指令退休以后才能响应中断,等待时间可能是几十~几百个时钟周期,严重影响实时性。
在中断快速响应模式下,CPU 放弃当前的 Load 指令,直接响应中断,等待时间几乎为零。
4.2 利用 TCM——更快开始处理中断
TCM 是 Tightly Coupled Memory 的缩写,意思是紧耦合 Memory。所谓“紧耦合”,是指与 CPU 的流水线紧密结合。我们可以把 TCM 通俗地理解为“CPU 身边的 memory”。它可以像一般 memory 一样读写,同时不受总线带宽的影响,可以保证单周期访问。TCM 用于存放对实时性有严格要求的指令和数据,当然也是加速中断处理的有力手段。
【例】玄铁 I805 和 R807 实现了 TCM。下面对比一下使用 TCM 与否的差别。
不使用 TCM:处理中断时,CPU 跳转到普通 memory 空间取指令,访问延时不确定。虽然 Cache 可以起到加速的作用,但是 Cache 存在 Miss、Eviction 等不确定因素,所以不能 100%保证实时性。
使用 TCM:系统初始化时,通过专用接口将一些关键中断的处理函数搬运到 TCM,并且把中断入口地址映射到 TCM。处理中断时,CPU 跳转到 TCM 区域取指令,TCM 可以保证稳定的低延时指令流,从而 100%满足实时性的要求。
本文转自芯片开放社区(OCC),更多内容请点击 https://occ.t-head.cn/space?channelName=1。
评论