先进的雷达技术让人觉得处理器架构似乎并不是那么重要。但实际上,迄今为止,机载雷达的大多数先进能力都是依靠数字信号处理器数据吞吐率的大幅提升来实现的。
在1970年代,战斗机的多模式任务能力就是通过将原来的硬件快速傅立叶变换处理器更换为具有每秒130万次运算能力的可编程信号处理器来实现的。
到1990年代中期,这些战斗机使用定制的基于离散线性时不变系统的数字信号处理器,之后又开始使用定制的集成电路(专用集成电路ASIC)。
1980年代,高速专用集成电路的发展又将数据吞吐率提高了4倍,这使得附加的实时合成孔径雷达处理成为可能。在十九世纪九十年代的十年间,微处理器的处理能力提高了至少30倍。这种数据吞吐率的大幅提升拓展了现代战斗机(如F-22和Eurofighter)雷达的性能和功能。
到1990年代后期,基于商用货架产品的商用微处理器和数字信号处理器能够用来进行雷达信号处理了。由于处理能力的增长和标准处理模块的应用,可扩展和模块化的雷达处理解决方案进入实用阶段,且商用货架产品也开始被航空应用环境所接受。
可扩展,模块化和高性能数据处理使先进雷达功能从理论走向实践,并且使雷达可以与其他的射频功能联系起来,如将电子反对抗(ECCM)和通信,电子战功能集成到一起的集成射频系统。
对于更好的雷达和传感器系统处理性能的需求不断增长,至少要与可用处理能力相匹配。这些需求来源于分辨率、测绘面积以及数字化带宽的提高,多功能化和传感器融合,以及无人平台上传感器的应用。
基本的处理架构
我们将从处理过程的架构特点开始讨论这个问题。从架构上来说,存储程序式计算机的基本构件是控制器、运算器、内存、输入和输出。
控制器包括从指令和数据内存中提取数据或指令,以及将数据存储到内存中。控制器还负责解释和解码获取的指令,并控制运算器按指令进行数据处理。运算器负责将数据分配到计算单元,执行计算,并与内存进行数据交换。
大多数处理器是同步的并依赖于一个矩形波作为时钟来进行计算。所有的操作和数据传输发生在时钟的上升沿或下降沿并且会占用一个或多个周期。时钟频率是以赫兹为单位来计量的,大多数现代处理器的时钟频率在千兆赫(109Hz)级别。
内存用来存储指令和数据。处理器的内存系统如图2所示的分层结构,其中容量小速度快的内存在最顶层而容量大速度慢的在最底层。最快的数据存储器是处理器的寄存器组,它们通常可以在一个时钟周期内完成存取。
现代化的处理器花费了大量的复杂度和电路来减小低速大容量存储的影响,通常使用高速缓存。高速缓存是处理器中的一些小容量快速存储器,用来映射主内存中的内容。
高速缓存是基于数据访问的局部性原理,意思是下一个将要访问的数据或指令很有可能存储在上一次访问的数据或指令的内存地址附近。处理器硬件和操作系统软件保证了内部高速缓存映射后续需要的内容并且当缓存内容改变时及时更新主存。
输入和输出提供大家熟悉的用户输入功能,如键盘,麦克风,和显示器。同时也包括支持在内存中存取数据和程序代码的高速通信通道。
处理器指令周期
处理器执行一个程序的简单顺序是:
1、处理器从内存中的某个地址取一条指令。地址由控制单元计算。
2、指令由控制单元完成译码,这条指令决定了处理器下一步将要干什么。
3、译码后的指令被执行。这条指令的选项有:
a. 来自于处理器寄存器的内存地址,或者
b. 对一个或多个寄存器中的内容执行一条算数操作或者逻辑操作,或者
c. 如果这条指令是一条分支指令,那么在满足某些条件时,为程序计数器计算一个新值。
4、写入阶段。这一阶段的选项有:
a. 将执行阶段中算术和逻辑运算单元(ALU)计算的结果写入到一个寄存器,或者
b. 将寄存器中的内容写入到执行阶段设置好的内存地址,或者
c. 从执行阶段设置好的内存地址中读取内容到处理器寄存器。
架构的分类
这种简单的处理器指令周期在现代处理器中要复杂的多。这是每次执行单条指令完成单个操作。在实际系统中,程序员基于处理器的设计模式进行编程,通常使用并行技术。有一些基本的术语来描述并行计算架构。一种通用的架构分类是基于如何访问指令和数据,称为Flynn分类法。这种分类法将计算机分成四种基本架构:
1、单指令,单数据(SISD)
在一个时钟周期内,处理器对一串数据流执行一条指令;例如将两个值相加。
2、单指令,多数据(SIMD)
在一个时钟周期内,处理器对多串数据流执行一条指令;如,将两个矢量相加。
3、多指令,多数据流(MIMD)
在任何一个时钟周期内处理器对多串数据流执行多条指令;例如,对一个矢量乘一个标量,同时将两个其他的矢量相加。
4、多指令,单数据流(MISD)
在任何一个时钟周期,处理器对一串数据流执行多条指令。例如,对于两个矩阵相乘的情况:有多条指令完成从多个地址取操作数,同时其他的指令控制算术单元完成相乘操作。
高级语言程序员看到的架构和实际的硬件之间可能有区别。这些差异被高级语言编译器或硬件实现方式所掩盖。
例如,硬件可能有一条指令管道,用来检查指令是否可以由并行计算单元并行执行或调度。这种处理器硬件技术称为超标量调度。如果处理器能够一次启动N条指令,那么它就被称为N个问题的超标量体系架构(图3)。然而,从程序员的角度来看,这种并行性的复杂性是可以隐藏的,而系统架构看起来就像是SISD架构。
Flynn分类法也适用于多核处理器。目前市场上的大多数处理器设备都是多核处理器,它们对多个数据流的执行多条指令,因此可以认为是MIMD架构。
然而,程序员更喜欢编写多线程程序,这种程序运行时每个处理器执行一个线程,并在需要交换数据的处理器之间进行同步。因此,多核处理器的这种操作方式更准确地说应称为单程序、多数据流(SPMD)。
在标准商用微处理器设计中增加SIMD矢量处理硬件对于雷达信号处理尤为重要。ALU组成的集合由一个公共指令控制,每个ALU从相应的寄存器中获得自己的数据流。
数的表示
计算机以二进制格式(1和0组成的数字串)存储和操作数字数据。数字具有不同的二进制表示形式,最常见的是无符号整数、二进制补码和浮点数。
无符号整数:可以表示非负整数。N位无符号整数可以表示的整数范围为0-2N。
二进制补码:可以表示正整数和负整数。N位二进制补码表示范围为:-2N-1到2N-1-1。32位二进制表示的整数范围为:-4,294,967,296到+4,294,967,295.
浮点数:为实数的二进制近似表示形式。可以认为是科学记数法的二进制等价形式。32位浮点数(单精度)表示范围为:~±10-38到~±10+38,而64位浮点数的表示范围为:~±10-308到~±10+308
比特数增加,取整和动态范围
当执行算术运算时,存储结果所需的比特数可能会增加。如果结果不能用可用的位数表示,那么结果的最重要的部分将被保留,而余数则被丢弃或四舍五入。这被称为尺度变换(rescaling),或重整化(renormalization)和舍入(rounding)。
对于整数运算,必须手动管理。在可编程逻辑门阵列 (FPGA)应用中,尺度变换和舍入需要显式地实现和控制。尺度变换和舍入的方法会对结果有显著影响。
浮点数处理单元会自动处理浮点数的重整化,因此大大减轻了程序员的负担。我们大多数人都用过科学计算器或者电子表格,当我们必须选择科学表示法来显示特别大或者特别小的数的时候都需要进行浮点数的重整化。
当今时代,大多数的雷达处理过程都使用浮点数,特别是双精度浮点数。双精度浮点数在算法稳定性很重要的场合非常有用。
例如,在恒虚警计算,卡尔曼滤波,以及求逆矩阵时。双精度浮点数比32位整数的精度更高且动态范围更大。然而,缺点就是双精度数的计算速度比单精度要慢1.6倍。
整数处理在信号处理的早期阶段仍然会使用,如FPGA经常会用来处理高吞吐率,低延迟的计算过程,包括正交信号的数字化采样,数字下变频,滤波器和FFT。
原文始发于微信公众号(雷达通信电子战)