什么叫做软件,软件指的是什么东西

首页 > 教育 > 作者:YD1662024-04-27 07:42:40

指令是软件和硬件交互的媒介。软硬件划分,其实就是确定“指令”复杂度的过程。通过“指令”复杂度,确定五个典型的计算平台:CPU、协处理器、GPU、FPGA和ASIC,依次“指令”复杂度越来越高,也依次从软件平台转向硬件平台。

1. 软件和硬件

什么是软件?什么硬件?记得计算机入门课本中可以获取的通俗定义是这样的:计算机硬件看得见摸得着,而计算机软件则看不见摸不着。更详细严谨一些的定义是:

从上面的定义,我们可以看到软件和硬件的界限非常清楚,我们可以明确的知道哪些是软件,哪些是硬件。但是,当我们深入到底层的技术细节,却会发现:软件和硬件的界限并不完全清晰。

指令是计算机技术的核心概念,指令是送到处理器以执行动作的命令,指令集体系结构(ISA,Instruction Set Architecture)是处理器与软件程序进行交互的媒介。或者说,指令是CPU中软件和硬件交互的接口(区别于IO设备接口的软件和硬件处理的数据交互接口),我们编写的程序和相应的数据是软件,而支持软件运行的CPU和内存则是硬件。

我们定义了网卡、硬盘以及打印机等各种IO设备是硬件,但这些IO设备需要驱动及控制程序才能工作,并且IO设备内部也会有各种固件,才能保证设备正常工作。运行在CPU上的IO设备驱动及控制程序是软件,IO设备内部协调硬件工作的固件是软件。这其中,运行固件的载体必然是内部的某个嵌入式处理器和内部存储体(ROM、RAM等),而处理器和内存又是硬件。

2. 硬件加速的示例

DES(Data Encryption Standard,数据加密标准)算法是一个非常经典的加密算法。以DES为例,MBire McLoone等人发表的《A High Performance Implementation of DES》文章中给出了一组数据,具体如 表1 所示。硬件加速器的性能是CPU软件性能的接近30倍,如果不考虑频率影响的话,性能对比则高达140倍。一次数据处理单位是64bits,软件实现(CPU执行指令的方式)的话,要完成一次DES,需要执行好几百条指令,一次64bits的处理需要大概140个时钟周期;专用加速器实现,一次64bits的DES处理却只需要1个时钟周期。

表1 DES算法CPU和硬件加速器对比

运行平台

频率

性能

性能对比

折算性能100MHz

折算性能对比

Alpha 8400处理器

300MHz

137Mb/s

1

45.67Mb/s

1

Xilinx Virtex

XCV1000-4 BG560

60.5MHz

3873.15Mb/s

28.27

6402Mb/s

140

另一个经典的例子就是近来非常火爆的比特币挖矿,比特币使用的技术区块链核心算法是SHA-256。它在各个平台上的性能对比如下:

3. 性能的三个维度

我们举个形象的例子:

这意味着:在一个小时里,团队A可以完成1000个零件的加工,而团队B则可以完成1920个零件的加工。

衡量一个处理器的性能,需要通过三个维度:

3.1 “指令”复杂度

CPU是硬件,基于CPU运行的程序是软件;GPU是硬件,基于GPU运行的程序是软件。那么CPU和GPU的差别在哪里?CPU我们一般也称为通用处理器,是相对于DSP(数字信号处理器)、GPU等概念所说的。CPU(不考虑协处理器)支持的指令称为通用指令,包括整形计算类、浮点类、数据传输类、控制类等。相比通用指令,一些复杂类指令(复杂类指令需要复杂的硬件逻辑来处理),则需要专用的硬件处理单元。比如SIMD(单指令流多数据流,Single Instruction Multiple Data)类和MIMD(多指令多数据流,Multiple Instruction Multiple Data)类指令,则可能是在GPU运行。

对硬件加速单元(Accelerator,从设计架构的角度也就是ASIC)来说,“指令”则是对算法的一次处理。例如在上节提到的DES算法设计,其“指令”为一次64bits DES计算。CPU对DES的一次处理需要上百条指令,而在DES硬件加速器这里,只需要一条“指令”,可见DES硬件加速器“指令”的复杂度远大于CPU指令的复杂度。

鱼和熊掌不可兼得,指令复杂度和编程灵活性是两个互反的特征:指令越简单,编程灵活性越高,因此我们才说软件有更高的灵活性;指令越复杂,性能越高,因此而受到的限制越多,只能用于特定场景的应用,其软件灵活性越差。

当我们通过定制硬件加速器的方式来获得性能提升,同时也就意味着放弃了软件应有的灵活性。

3.2 运行频率

频率越高,计算速度越快。不考虑其他因素的制约,计算速度和频率是正比的关系。而频率受电路中的关键路径(延迟最大路径)约束,两者呈反比关系:关键路径越短,频率则越高。

如 图1 ,频率受关键路径制约,而关键路径与两个因素有关:

一个是关键路径所包含门的数量,即从前一级寄存器到后一级寄存器之间的最长路径所包含的逻辑门的数量;

另一个则是单个逻辑门的延迟时间,逻辑门的延迟时间跟半导体生产工艺相关,一般情况下,工艺尺寸越小,单个逻辑门的延迟越小。

什么叫做软件,软件指的是什么东西(1)

(a) 组合电路示例

什么叫做软件,软件指的是什么东西(2)

(b) 数字电路中的关键路径

图1 运行频率与电路逻辑的关系

当逻辑门的延迟越小,或者两级寄存器之间的逻辑门数量越少,则频率越高,计算速度也就越快。要想减小逻辑门延迟,就需要采用更先进的工艺;要想减少两级寄存器间逻辑门的数量,则需要采用更多级的流水,这样每一级流水所做的事情越少,所需要的逻辑门也就越少。

3.3 并行度

并行的设计在硬件逻辑设计里非常常见。例如:

通过不同方向、不同层次的并行技术,都可以提升硬件系统的性能。我们把不同复杂度的单位处理都当作了“指令”,那么,我们就可以通过IPC(Instruction per Cycle)来评价并行度。对一个CPU核来说,IPC代表的是每个周期执行的指令数;对一个硬件加速模块来说,IPC则代表了一个周期所能进行的单位处理的数量。

4. 综合分析

我们通过“指令”复杂度、运行频率、并行度三个维度,对CPU、协处理器、GPU、FPGA和ASIC五种平台进行定性分析(受各种不同硬件平台和型号、不同架构实现、不同工艺的影响,很难对每个维度给出定量的分析数据),具体如 表2 所示。

表 2 CPU等各硬件平台性能定性分析

平台

“指令”复杂度

运行频率

并行度

CPU

通用指令集,最简单。指令越简单灵活性越大

极致优化的流水线,最高的运行频率

单核IPC一般为个位数

协处理器

SIMD等扩展型指令,比通用指令要复杂

频率等于或低于处理器

一般情况下,并行度跟CPU在同一数量级

GPU

类SIMD和MIMD/VLIW“指令”等,比协处理器指令复杂一些

受限于访存、指令计算的复杂度,频率一般低于CPU

超多的线程,每个线程进行一次算术逻辑计算,可以有成百上千的并行度

FPGA

完整算法的单位处理,复杂度远超通用指令

受限于FPGA硬件可编程,同工艺同设计下,一般运行频率ASIC的1/6左右

受资源限制,并行度比ASIC低

ASIC

“指令”复杂度和FPGA相当或超过FPGA复杂度

因为算法本身的复杂度,即使有流水线的实现,但运行频率依然会明显低于CPU

资源规模大一些,一般会有比FPGA更多的并行度

如 图2 所示,我们可以看到,不同的硬件平台具有不同的灵活性和性能:

什么叫做软件,软件指的是什么东西(3)

图2 CPU、协处理器、GPU、FPGA、ASIC不同硬件对比分析

从设计角度来看,FPGA和ASIC都会实现基于特定任务或算法处理的硬件加速模块,也就是我们通常所说的加速器。

100%的纯硬件没有意义,即使是硬件加速单元,依然离不开软件的参与,至少都需要软件驱动来初始化和配置模块,以此来控制模块的运行。而DSA是在ASIC基础上一定程度的“妥协”回调,在ASIC针对特定场景的基础上,定义了少量的指令,以此来提升ASIC的灵活性。DSA依然属于ASIC的范畴,当作是ASIC的特例,或者升级。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.