采用 Linux 与 DSP/BIOS RTOS 实施双 OS 信号处理技术
例如,德州仪器 (TI) 的 DSP/BIOS 以软件中断和任务的形式仅支持优先级调度。与 Linux 调度器一样,软件中断和任务都属于先占型的。但是,DSP/BIOS 也为应用编程人员提供了直接存取硬件中断的条件,该资源仅适用于 Linux 内核模式。
直接存取硬件中断使应用编程人员可在理论上实现底层硬件所支持的最短时延响应。对控制环路等需要绝对最低时延的应用而言,这种精细粒度的硬件中断控制机制通常是一种非常重要的特性。
受保护的资源访问
Linux 与大多数通用操作系统的一个基本属性就是用户空间程序与所用的底层系统资源相分离。仅在工作处于监控(如内核)模式下时才允许直接访问存储器和设备外设。
如果用户程序希望访问系统资源,那么它必须通过称作驱动器的内核模块从内核发出请求。该应用位于用户存储器空间,并将通过虚拟文件访问驱动程序。然后,虚拟文件将应用的请求转至驱动器执行的内核存储器空间。
Linux 可提供特性极为丰富的驱动器模型,其中包括标准流媒体外设、模块存储设备以及文件系统,甚至还包括网络与基于网络的文件系统。
驱动器与用户空间应用的分离可实现高度的稳健性。此外,通用驱动器接口上的抽象水平使其便于将数据流传输给串行端口、闪存文件系统或网络共享文件夹,且仅需对底层应用代码稍作更改。
然而,实现这种灵活性需要付出代价。应用与物理资源的严格分离会加大开销。如果用户空间程序要访问设备外设,则内核模式必须进行环境交换才能处理该请求。
由于数据是成块访问,而非逐个样本 (sample-by-sample) 访问,因此通常来说这不会造成太大的局限性。这样,内核模式下每次块访问仅需进行一次环境交换即可。
但是,在某些情况下,应用代码需与物理硬件严格匹配。如果使用 DSP 等对数据吞吐量要求较高且不能容忍停顿的高性能处理器时,通常就会出现此类情况。这时,内核空间的物理资源与用户空间的应用相分离的做法就可能会严重影响系统性能。
应用与硬件的匹配
我们不妨使用 TMS320DM643x 处理器架构来研究在执行块视频处理时会遇到的典型情况,该架构采用一个 600 MHz / 4800 MIPS DSP 处理内核以及诸如功能丰富的视频端口子系统等各种多媒体外设。这种硬件通常用于将输入视频流进行 H.264 格式压缩。
为了充分发挥 DSP 内核的处理能力,处理的数据应从周期操作内部存储器读取,而不是从速度较慢的外部存储器读取。尽管在技术上可以让具有足够快的片上存储器的处理器存储一个或多个完整的视频帧,但这种技术对大多数目标市场来说成本太高。因此,采用可提供 80 KB 的单周期操作片上数据存储器的处理器取而代之。
80 KB 虽然小,不能存储完整的视频帧,但 TI 通过模拟检测认为,这样的存储量足够为 H.264与其它视频处理算法提供最佳的面积/性能综合比。
DSP 通过直接存储器存取 (DMA) 控制器为该存储器提供数据,这种控制器还可用于内外部存储器之间高效传输数据子块,而不会占用处理器内核的周期操作(见以下图 1)。
图 1. DSP 处理器采用DMA 硬件将外部存储器中较小的视频帧子块传输到内部存储器中,以供 DSP内核进行处理。
图1. DSP 处理器采用 DMA 硬件将外部存储器中较小的视频帧子块传输到内部存储器中,以供 DSP内核进行处理。
从整体系统的角度来说,这种方法可提供几乎相当于具有整个视频缓冲器的芯片所提供的性能,但成本却非常低。不过,为了实现这样的高性能,就需要应用、操作系统以及底层存储器与 DMA 硬件之间的紧密配合。
首先,应用必须能够区别快速内部存储器与大容量外部存储器。其次,应用必须能够执行许多时间精确的小型 DMA 操作。由于访问 DMA 时发生的所有时延在 DMA 访问每个视频帧时都会放大数百倍乃至数千倍,因而在 Linux 驱动程序模型内高效实现 DMA 操作虽非不可能,但也极为困难。
这种方法的实际实施可通过 DSP/BIOS 完成,并提供原生 API 来实现应用对内外部存储器的请求,同时也使应用可直接访问 DMA 寄存器,不会产生环境交换损失。
两种操作系统的优势结合
尽管众多多媒体应用的大部分处理器周期操作都用来进行信号处理,但能满足消费需求的产品同时还必须执行许多更高级的功能,如用户界面、显示功能、网络以及文件处理等。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论