文章内容直接摘自百度百科https://baike.baidu.com/item/%E6%8C%87%E4%BB%A4%E9%9B%86/238130?fr=aladdin
计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程。指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效的工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分 [1] 。
目录
编辑
在计算机中,指示计算机硬件执行某种运算、处理功能的命令称为指令。指令是计算机运行的最小的功能单位,而硬件的作用是完成每条指令规定的功能。一台计算机上全部指令的集合,就是这台计算机的指令系统。指令系统也称指令集,是这台计算机全部功能的体现。而人们设计计算机首要考虑的是它拥有的功能,也就是首先要按功能档次设计指令集,然后按指令集的要求在硬件上实现。指令系统不仅仅是指令的集合,还包括全部指令的指令格式、寻址方式和数据形式。所以,各计算机执行的指令系统不仅决定了机器所要求的能力,而且也决定了指令的格式和机器的结构。反过来说,不同结构的机器和不同的指令格式应该具有与之相匹配的指令系统。为此,设计指令系统时,要对指令格式、类型及操作功能给予应有的重视。软件是为了使用计算机而编写的各种系统和用户的程序,程序由一个序列的计算机指令组成。从这个角度上说,指令是用于设计程序的一种计算机语言单位 [2] 。
计算机的指令系统是指一台计算机上全部指令的集合,也称计算机的指令集。指令系统包括指令格式、寻址方式和数据形式。一台计算机的指令系统反映了该计算机的全部功能,机器类型不同,其指令系统也不同,因而功能也不同。指令系统的设置和机器的硬件结构密切相关,一台计算机要有较好的性能,必须设计功能齐全、通用性强、内含丰富的指令系统,这就需要复杂的硬件结构来支持 [2] 。
常见的指令集有: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!指令集。
编辑
由于MMX指令并没有带来3D游戏性能的显著提升,1999年Intel公司在Pentium IIICPU产品中推出了数据流单指令序列扩展指令(SSE)。SSE兼容MMX指令,它可以通过SIMD(单指令多数据技术)和单时钟周期并行处理多个浮点来有效地提高浮点运算速度。
在MMX指令集中,借用了浮点处理器的8个寄存器,这样导致了浮点运算速度降低。而在SSE指令集推出时,Intel公司在Pentium III CPU中增加了8个128位的SSE指令专用寄存器。而且SSE指令寄存器可以全速运行,保证了与浮点运算的并行性。
在Pentium 4 CPU中,Intel公司开发了新指令集SSE2。这一次新开发的SSE2指令一共144条,包括浮点SIMD指令、整形SIMD指令、SIMD浮点和整形数据之间转换、数据在MMX寄存器中转换等几大部分。其中重要的改进包括引入新的数据格式,如:128位SIMD整数运算和64位双精度浮点运算等。为了更好地利用高速缓存。另外,在Pentium 4中还新增加了几条缓存指令,允许程序员控制已经缓存过的数据。
相对于SSE2,SSE3又新增加了13条新指令,此前它们被统称为pni(prescott new instructions)。13条指令中,一条用于视频解码,两条用于线程同步,其余用于复杂的数学运算、浮点到整数转换和SIMD浮点运算。
SSE4又增加了50条新的增加性能的指令,这些指令有助于编译、媒体、字符/文本处理和程序指向加速。
SSE4指令集将作为Intel公司未来“显著视频增强”平台的一部分。该平台的其他视频增强功能还有Clear Video技术(CVT)和统一显示接口(UDI)支持等,其中前者是对ATi AVIVO技术的回应,支持高级解码、后处理和增强型3D功能。
3D Now!指令集是AMD公司1998年开发的多媒体扩展指令集,共有21条指令。针对MMX指令集没有加强浮点处理能力的弱点,重点提高了AMD公司K6系列CPU对3D图形的处理能力。由于指令有限,3D Now!指令集主要用于3D游戏,而对其他商业图形应用处理支持不足。
3DNow!+指令集:在原有的指令集基础上,增加到52条指令,其中包含了部分SSE指令,该指令集主要用于新型的AMDCPU上。
要知道什么是指令集,要从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阵容。
Intel公司的EM64T(Extended Memory 64 Technology)即64位内存扩展技术。该技术为服务器和工作站平台应用提供扩充的内存寻址能力,拥有更多的内存地址空间,可带来更大的应用灵活性,特别有利于提升音频视频编辑、CAD设计等复杂工程软件及游戏软件的应用。常说的64位指的是AMD公司出的64位CPU,而EM64T则是Intel公司按照自己的意思理解出来的64位,也就是和AMD公司的64位对应的另一种叫法。
RISC指令集是以后高性能CPU的发展方向。它与传统的CISC(复杂指令集)相对。相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。使用RISC指令集的体系结构主要有ARM、MIPS。MIPS 指令集是最早实现商用的精简指令集(RISC)之一,上个世纪80年代初由斯坦福大学的研究小组研发,并在1984年成立MIPS计算机公司 [3] 。随后MIPS 成为上世纪90年代最流行的指令集,一度与 x86 和ARM 指令集齐名。RISC具有设计更简单、设计周期更短等优点,并可以应用更多先进的技术,开发更快的下一代处理器。MIPS是出现最早的商业RISC架构芯片之一,新的架构集成了所有原来MIPS指令集,并增加了许多更强大的功能。随着移动互联网的兴起,MIPS 指令集逐渐衰落,公司也多次辗转被收购。
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 命令集是由贺氏公司(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 指令进行业务通信的具体流程 [4] 。