版权归原作者所有,如有侵权,请联系我们

[科普中国]-指令集

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

指令集是存储在CPU内部,对CPU运算进行指导和优化的指令集合。拥有这些指令集,CPU就可以更高效地运行。Intel主要有x86,EM64T,MMX,SSE,SSE2,SSE3,SSSE3 (Super SSE3),SSE4A,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX等指令集。AMD主要是x86,x86-64,3D-Now!指令集。

简介计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程。一台计算机中的所有指令的集合,称作指令集。就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。程序员用各种语言编写的程序要翻译(编译或解释)成以指令形式表示的机器语言之后,才能在计算机上运行。计算机硬件完成各条指令所规定的操作,并保证按程序所规定的顺序执行指令,所以指令系统反映了计算机的基本功能,是硬件设计人员和程序员都能见到的机器的主要属性1。

类型SSE指令集(Streaming SIMD Extensions)由于MMX指令并没有带来3D游戏性能的显著提升,1999年Intel公司在Pentium IIICPU产品中推出了数据流单指令序列扩展指令(SSE)。SSE兼容MMX指令,它可以通过SIMD(单指令多数据技术)和单时钟周期并行处理多个浮点来有效地提高浮点运算速度。

在MMX指令集中,借用了浮点处理器的8个寄存器,这样导致了浮点运算速度降低。而在SSE指令集推出时,Intel公司在Pentium III CPU中增加了8个128位的SSE指令专用寄存器。而且SSE指令寄存器可以全速运行,保证了与浮点运算的并行性。

SSE2指令集在Pentium 4 CPU中,Intel公司开发了新指令集SSE2。这一次新开发的SSE2指令一共144条,包括浮点SIMD指令、整形SIMD指令、SIMD浮点和整形数据之间转换、数据在MMX寄存器中转换等几大部分。其中重要的改进包括引入新的数据格式,如:128位SIMD整数运算和64位双精度浮点运算等。为了更好地利用高速缓存。另外,在Pentium 4中还新增加了几条缓存指令,允许程序员控制已经缓存过的数据。

SSE3指令集相对于SSE2,SSE3又新增加了13条新指令,此前它们被统称为pni(prescott new instructions)。13条指令中,一条用于视频解码,两条用于线程同步,其余用于复杂的数学运算、浮点到整数转换和SIMD浮点运算。

SSE4指令集SSE4又增加了50条新的增加性能的指令,这些指令有助于编译、媒体、字符/文本处理和程序指向加速。

SSE4指令集将作为Intel公司未来“显著视频增强”平台的一部分。该平台的其他视频增强功能还有Clear Video技术(CVT)和统一显示接口(UDI)支持等,其中前者是对ATi AVIVO技术的回应,支持高级解码、后处理和增强型3D功能。

3D Now!扩展指令集3D Now!指令集是AMD公司1998年开发的多媒体扩展指令集,共有21条指令。针对MMX指令集没有加强浮点处理能力的弱点,重点提高了AMD公司K6系列CPU对3D图形的处理能力。由于指令有限,3D Now!指令集主要用于3D游戏,而对其他商业图形应用处理支持不足。

**3DNow!+指令集:**在原有的指令集基础上,增加到52条指令,其中包含了部分SSE指令,该指令集主要用于新型的AMDCPU上。

X86指令集要知道什么是指令集,要从X86架构的CPU说起。X86指令集是Intel为其第一块16位CPU(i8086)专门开发的,IBM1981年推出的世界第一台PC机中的CPU—i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加的X87芯片系列数学协处理器则另外使用X87指令,

以后就将X86指令集和X87指令集统称为X86指令集。虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列。由于Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了庞大的X86系列及兼容CPU阵容。

EM64T指令集Intel公司的EM64T(Extended Memory 64 Technology)即64位内存扩展技术。该技术为服务器和工作站平台应用提供扩充的内存寻址能力,拥有更多的内存地址空间,可带来更大的应用灵活性,特别有利于提升音频视频编辑、CAD设计等复杂工程软件及游戏软件的应用。常说的64位指的是AMD公司出的64位CPU,而EM64T则是Intel公司按照自己的意思理解出来的64位,也就是和AMD公司的64位对应的另一种叫法。

RISC指令集RISC指令集是以后高性能CPU的发展方向。它与传统的CISC(复杂指令集)相对。相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。使用RISC指令集的体系结构主要有ARM、MIPS。MIPS 指令集是最早实现商用的精简指令集(RISC)之一,上个世纪80年代初由斯坦福大学的研究小组研发,并在1984年成立MIPS计算机公司2。随后MIPS 成为上世纪90年代最流行的指令集,一度与 x86 和ARM 指令集齐名。RISC具有设计更简单、设计周期更短等优点,并可以应用更多先进的技术,开发更快的下一代处理器。MIPS是出现最早的商业RISC架构芯片之一,新的架构集成了所有原来MIPS指令集,并增加了许多更强大的功能。随着移动互联网的兴起,MIPS 指令集逐渐衰落,公司也多次辗转被收购。

AVX指令集Intel AVX指令集在SIMD计算性能增强的同时也沿用了的MMX/SSE指令集。不过MMX/SSE的不同点在于增强的AVX指令,从指令的格式上就发生了很大的变化。x86 (IA-32/Intel 64)架构的基础上增加了prefix (Prefix),所以实现了新的命令,也使更加复杂的指令得以实现,从而提升了x86 CPU的性能。

AVX并不是x86 CPU的扩展指令集,可以实现更高的效率,同时和CPU硬件兼容性也好,并且也有着足够的扩展空间,这都和其全新的命令格式系统有关。更加流畅的架构就是AVX发展的方向,换言之,就是摆脱传统x86的不足,在SSE指令的基础上AVX也使SSE指令接口更加易用。

针对AVX的最新的命令编码系统,Intel也给出了更加详细的介绍,其中包括了大幅度扩充指令集的可能性。比如Sandy Bridge所带来的融合了乘法的双指令支持。从而可以更加容易地实现512bits和1024bits的扩展。而在2008年末到2009年推出的meniikoa CPU“Larrabee (LARAB)”处理器,就会采用AVX指令集。从地位上来看AVX也开始了Intel处理器指令集的新篇章。

AT指令集在移动卫星通信中的应用AT 命令集是由贺氏公司(Hayes)发明,贺氏公司起初是一家生产拨号调制解调器的公司,而 AT 命令集最初的用途正是为了控制拨号调制解调器,其控制协议采用文本格式,且每条指令以 AT 打头,AT 指令集因此得名。随着技术的不断进步,低速的拨号调制解调器逐步开始满足不了高带宽、高速率的应用需求,因此逐步被市场所淘汰。贺氏公司也在这一技术升级换代的浪潮中所消失。但是 AT 指令却得以保存,其后,当时几家主要的移动电话生产商诺基亚、摩托罗拉、HP和爱立信基于贺氏AT指令加以延伸扩展,针对移动电话中的 GSM模块控制,研制出了一套完整的 AT 指令。由此,之后GSM 07.05标准、GSM07.07标准均将AT指令纳入其中。并且工业上常用PDU、GPRS控制等也均采用AT 指令来进行实际的控制。因此,AT 指令也成为了这些产品的事实标准。ATCoP,是 AT Command Processor的缩写,它是负责软件实现 AT 指令的模块,我们对 AT 指令的新增和修改都是通过 AT 命令处理器来实现的。其具体流程为 :当 AT 命令处理器接收到串口的 AT 命令,进行相应的解析工作,并根据具体的解析结果去 AT 命令表查找是否存在对应的处理选项,若找到对应的项,则继续执行相应的处理过程,并在处理结束后将得到的响应数据返回到串口,AT命令处理器的实现架构如图所示。

SIO数据预处理模块的主要工作是将串口收到的AT命令先进行一个数据预处理,同时,将预处理所产生的非中断(null-terminated)命令行发送给 AT 命令解析模块。

AT 命令解析模块对传送来的非中断(null-terminated)命令行进行解析,并将每一个非中断命令行映射成一个 token 结构,并将此token结构放入到队列中,形成 AT命令表,等待AT命令处理模块进行查找调用。

AT命令处理模块处理AT命令时,对AT命令表中的token结构逐一进行查找,如果查找到匹配选项,则继续执行具体的处理函数,并将此token结构删除。AT命令响应产生模块主要是格式化解析AT命令产生的响应数据,并将此格式化的响应传送给数据终端设备(Data Terminal Equipment :数据终端设备)。

AT命令处理器的容错机制为 :一次只进行一条AT指令的处理,并且如果AT命令存在错误,在SIO 数据预处理模块就会给出一个错误响应,并产生一个错误代码,不再对其进行处理。

常规的卫星移动通信系统主要由卫星、卫星天线、功放及射频模块、信道模块以及用户组成。其中,地面站网络管理控制中心(Network Control Center,NCC)负责对整个卫星网内的各卫星地面站设备进行入网、退网、建立卫星业务通道、各种业务流程等进行统一的管理控制。卫星地面站设备包括卫星控制信道、卫星业务信道、射频及功放设备、卫星收发天线等。它负担着整个卫星业务的业务流程控制,业务数据采集、调制解调等工作。卫星控制信道主要负责整个卫星地面站设备的入网、退网等控制信令的传输控制,卫星业务信道负责对需要发送的卫星业务数据或者卫星话音数据进行加密、调制解调成射频信号传输给射频设备,或者对接收到的射频信号进行调制解调、解密转变成卫星业务数据或话音数据。射频设备以及卫星收发天线主要负责对经过信道处理的卫星数据进行发送或者接收对端传输来的卫星射频信号。当卫星地面站设备1的卫星用户1想和卫星地面站设备 N 的用户 N 进行卫星通信时,用户1通过卫星电话终端或者卫星数据终端进行卫星业务发起,这时,卫星控制信道将对业务发起的控制信令进行处理,通过地面站网络管理控制中心,为两个卫星地面站设备建立空中链路业务通道,之后两个地面站的用户就可以进行需要的业务通信了。当通信结束时,一方用户进行挂机操作,卫星控制终端将会发起业务结束控制信令,拆除两个卫星地面站设备之间的卫星链路。通过前面的简介可以知道,在整个卫星移动通信过程中,由于卫星通信天生的时延等特性,要进行正常的卫星业务通信,对每个卫星地面站设备的入退网管控、话音或者卫星数据流程的发起、结束,卫星业务链路的建立、拆除等控制流程起着至关重要的作用,因此这里我们将简单可靠的 AT 指令集引入,作为卫星移动通信系统的控制协议。这里我们将卫星控制信道称之为 AT命令解析器(AT Command Processor,AP),将卫星业务信道称之为信道处理器(Channel Processor,CP)在卫星控制信道中使用 AT 指令来进行具体对本地面站设备的的控制与解析、对卫星业务流程的发起管理与结束、以及对 CP 的设置与查询等指令。在 CP 中主要接收来自 AP 的一些参数的设置与查询命令,以及根据来自 AP 的 AT 指令进行业务通信的具体流程3。

本词条内容贡献者为:

孙锐 - 教授 - 合肥工业大学