本文摘自网络

概念

指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序,用来引导CPU进行加减运算和控制计算机操作系统的一系列指令集合。拥有这些指令集,CPU就可以更高效地运行。系统所下达的每一个命令都需要CPU根据预先设定好的某一条指令来完成。这些预先定好的指令统称为cpu指令集,它是预存在CPU里边的。CPU依靠外来指令“激活”自己内存的指令,来计算和操控电脑。 每款CPU在设计时就规定了一系列与电脑其它部件相配合的指令系统。预先存储的指令越多,CPU就越“聪明”。可以做的“动作”越多。预先存储的指令越先进,CPU就越高级。可以这样说指令集是软件与CPU之间的一个接口而CPU就是接口的实列化。其实指令集就是一组汇编指令的集合,不同的CPU使用的指令集不同。

CPU指令集是在CPU设计时固化在里面的“硬程序”,整合在CPU内部的逻辑电路中,不是什么代码,也谈不上“存储”。所以我们在CPU里是不可能找到“指令集”的实体的,如果非要具象化,那它就是“汇编语言”转换到“机器码”(相当于一个翻译过程)+CPU执行机器码的晶体管和逻辑电路的集合,也可以说CPU指令集的存放位置.是CPU中的"译码电路".

作用

指令集定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,所处理的操作数存放的地址空间以及操作数类型。ISA规定的内容包括数据类型及格式,指令格式,寻址方式和可访问地址空间的大小,程序可访问的寄存器个数、位数和编号,控制寄存器的定义,I/O空间的编制方式,中断结构,机器工作状态的定义和切换,输入输出结构和数据传送方式,存储保护方式等。因此,可以看出,指令集体系结构是指软件能够感知到的部分,也称软件可见部分。

指令集的存在规定了CPU如何识别汇编指令,以及如何与操作系统(上层)交互。打个比方说,指令集就像路上的红绿灯,红灯停绿灯行,车辆什么时候可以走,什么时候不可以走,都是按这个既定规则才能执行的,而且这个规则不可变动。我们常用的win7、win10等操作系统的底层架构就是基于CPU的指令集进行设计的,必须无条件服从指令集体系。

软件意义上, "指令集"实际上是一个规范, 规范汇编的文件格式.
以下为一条x86汇编代码:
mov word ptr es:[eax + ecx * 8 + 0x11223344], 0x12345678

这里可以体现出指令集的格式限制:
1. 可以使用mov指令, 但它只能有2个操作数.
2. 它的操作数长度是16 (word), 不要看到后面0x12345678就认为是32位操作数.
3. 它带有段超越前缀, 这里使用了es, 还可以使用ds, cs, ss, fs, gs. 但是只能用这几个.
4. 第一个操作数是一个内存地址, 第二个是立即数. 但是, 这个内存地址不能乱写, 写成[eax+ecx*10+0x11223344]就错了。

分类

1、CISC(复杂指令集)
 指令集较丰富,对特殊任务有专用的特殊指令,执行特殊功能(科学计算之类的)也就是说指令集里面的每个指令较长,每个指令都分成好几个微指令来处理,正是因为指令集丰富所以在开发程序时较简单,但在执行时效率较低,处理数据时速度较慢,使得译   码器翻译二进制代码时较慢。

2、RISC(精简指令集计算机)

注重的是指令集的优化,RISC的设计者对哪些常用的指令进行优化使它们更加简单高效,对于那些不常用的指令会将其组合起来去实现某些特殊的功能,所以RISC指令集位数较短,所 以执行效率高,译码和处理数据较快。

两类指令集的比较

 
  CISC RISC
指令系统 指令比较多,基本上是一个功能一条指令;每个特定、复杂的功能都有专门的指令。因此实现特殊功能容易,每条指令可以处理的工作比较丰富;格式不规则,执行时间较长 只有少数的常用指令;对不常用的功能或大部分复杂操作使用简单指令合成。因此实现复杂功能时,效率可能不高。但可例用流水线和超标量技术加以改进和弥补。格式非常标准;每条指令执行时间都很短
操作  指令多,操作直接。使用微程序来实现指令操作。  有限制,控制简单。大多数操作都是在寄存器之间的操作。
CPU架构  电路单元丰富,结构复杂,面积大,功耗大  单元电路较少,结构简单,布局紧凑,面积小,功耗小

总之,指令集决定了CPU的架构和设计,在CPU基础上决定了操作系统的实现,也决定了编译性语言的编译器的实现,也就影响到应用程序的编写,甚至决定了行业生态。

CPU 指令集(Instruction Set Architecture, ISA)的更多相关文章

  1. 【硬件基础知识】指令集框架(ISA:Instruction Set Architecture)

    指令框架(ISA:Instruction Set Architecture) 定义 指令集架构(英语:Instruction Set Architecture,缩写为ISA),又称指令集或指令集体系, ...

  2. CPU指令集

    cpu作为一台电脑中的核心,它的作用是无法替代的.而cpu本身只是在块硅晶片上所集成的超大规模的集成电路,集成的晶体管数量可达到上亿个,是由非常先进复杂的制造工艺制造出来的,拥有相当高的科技含量. C ...

  3. 编译TensorFlow CPU指令集优化版

    编译TensorFlow CPU指令集优化版 如题,CPU指令集优化版,说的是针对某种特定的CPU型号进行过优化的版本.通常官方给的版本是没有针对特定CPU进行过优化的,有网友称,优化过的版本相比优化 ...

  4. CPU指令集不同导致的core分析

    最近程序需要支持CGSL系统运行,测试中发现相同操作系统的两台机器,编译机运行正常,测试机coredump.core信息汇总如下,可以看出是由于测试机不支持编译后的指令导致的问题: Program t ...

  5. 常见的CPU指令集介绍

    本文摘自网络   一.X86 是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,属于CISC. 1.1.简介 X86指令集是美国Intel ...

  6. Dlib支持CPU指令集编译问题(SSE4.2或者AVX)

    The compile script is: mkdir build cd build cmake ../../tools/python -DUSE_SSE2_INSTRUCTIONS=ON cmak ...

  7. 【基础知识】CPU指令集

    计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程.指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计 ...

  8. CPU指令集的虚拟化(x86)

    IA-32 (x86)[edit] Main article: X86 virtualization The IA-32 instruction set of the Pentium processo ...

  9. 如何查看ipa包支持哪些cpu指令集

    将ipa包下载到本地 cd 到其所在目录 unzip lipo -info Moon(app名)

随机推荐

  1. C#之选择排序

    算法描述 1.假定未排序序列中第一位为数组最小值,通过与后面的数值进行比较,找到未排序序列中最小值,与未排序序列第一位交换位置: 2.重复步骤一,对剩余未排序序列进行比较找出最小值,与未排序序列中第一 ...

  2. Android Path路径设置,针对error opening trace file:No such file or directory

    对于android的开发者来说,首先要做的就是环境变量的配置.学习过java的人都知道,java是须要配置环境变量的,那么android开发是否也须要我们配置环境变量呢?当然,安卓的环境变量须要我们配 ...

  3. Unix/Linux环境C编程新手教程(40) 初识文件操作

     1.函数介绍 close(关闭文件) 相关函数 open,fcntl,shutdown.unlink,fclose 表头文件 #include<unistd.h> 定义函数 int ...

  4. intellij idea 写 Helloworld

    http://www.jetbrains.com/idea/webhelp/creating-and-running-your-first-java-application.html Creating ...

  5. J - 玩游戏

    小A和小B玩游戏,初始的时候小A给小B一组包含n个数的数组.他们按如下的规则进行: 每次小B得到一组数,他把这组数的和加到自己的分数里面(他的初始分数是0),然后他把这组数还给小A. 如果小A得到的这 ...

  6. 【转】Andorid获取状态栏高度

    在应用开发中,有时我们需要用代码计算布局的高度,可能需要减去状态栏(status bar)的高度.状态栏高度定义在Android系统尺寸资源中status_bar_height,但这并不是公开可直接使 ...

  7. Quartz.net使用入门(三)

    Windows服务,自定义安装,卸载服务+Quartz.net app.config配置文件 <?xml version="1.0"?> <configurati ...

  8. ubuntu 16.04 Hbase 安装

    1.解压安装包至路径 /usr/local 1.1.sudo tar -zxf ~/下载/hbase-1.1.2-bin.tar.gz -C /usr/local 2.将解压的文件名hbase-1.1 ...

  9. 8.4 IP地址的划分及子网划分

    都是比较灵活的一些计算题.只要掌握了其中的规则,还是比较容易解题的.在了解子网的划分如何进行之前呢,一定要弄清楚一个概念:子网掩码.这是弄清楚如何进行子网划分的一个关键. IP地址是四段二进制码拼合而 ...

  10. myeclipse配背景色

    1:使jsp,html等页面为纯黑色. 2:发现JS的背景颜色还是默认的.而且还是块状的.将它设置背景为黑色的. *效果图: 参考:http://blog.csdn.net/ltqwby/articl ...