CPU 指令集(Instruction Set Architecture, ISA)
本文摘自网络
概念
指令集是存储在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)的更多相关文章
- 【硬件基础知识】指令集框架(ISA:Instruction Set Architecture)
指令框架(ISA:Instruction Set Architecture) 定义 指令集架构(英语:Instruction Set Architecture,缩写为ISA),又称指令集或指令集体系, ...
- CPU指令集
cpu作为一台电脑中的核心,它的作用是无法替代的.而cpu本身只是在块硅晶片上所集成的超大规模的集成电路,集成的晶体管数量可达到上亿个,是由非常先进复杂的制造工艺制造出来的,拥有相当高的科技含量. C ...
- 编译TensorFlow CPU指令集优化版
编译TensorFlow CPU指令集优化版 如题,CPU指令集优化版,说的是针对某种特定的CPU型号进行过优化的版本.通常官方给的版本是没有针对特定CPU进行过优化的,有网友称,优化过的版本相比优化 ...
- CPU指令集不同导致的core分析
最近程序需要支持CGSL系统运行,测试中发现相同操作系统的两台机器,编译机运行正常,测试机coredump.core信息汇总如下,可以看出是由于测试机不支持编译后的指令导致的问题: Program t ...
- 常见的CPU指令集介绍
本文摘自网络 一.X86 是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,属于CISC. 1.1.简介 X86指令集是美国Intel ...
- Dlib支持CPU指令集编译问题(SSE4.2或者AVX)
The compile script is: mkdir build cd build cmake ../../tools/python -DUSE_SSE2_INSTRUCTIONS=ON cmak ...
- 【基础知识】CPU指令集
计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程.指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计 ...
- CPU指令集的虚拟化(x86)
IA-32 (x86)[edit] Main article: X86 virtualization The IA-32 instruction set of the Pentium processo ...
- 如何查看ipa包支持哪些cpu指令集
将ipa包下载到本地 cd 到其所在目录 unzip lipo -info Moon(app名)
随机推荐
- 使用jconsole监控远程JVM
使用jconsole监控远程JVM 学习了:https://www.linuxidc.com/Linux/2015-02/113420.htm https://www.cnblogs.com/thin ...
- 1.7-BGP②
BGP的更新源(BGP Neighbor Update Source Address): 原则1: 在默认情况下, BGP路由器以自己路由表中,到达对方BGP邻居的地址的那条路由所指示的出接口(物理接 ...
- Rsync命令的使用
Rsync的命令格式能够为下面六种: rsync [OPTION]- SRC DEST rsync [OPTION]- SRC [USER@]HOST:DEST rsync [OPTION]- [US ...
- 自由宣言--《I Have a Dream》(马丁.路德.金)
I Have a Dream by Martin Luther King, Jr. I am happy to join with you today in what will go down in ...
- Python3基础(十) 类的初印象
Python是一种面向对象的脚本语言,所以它也提供了面向对象编程的所有基本特征:允许多继承的类继承机制.派生类可以重写它父类的任何方法.一个方法可以调用父类中同名的方法.对象可以包含任意数量和类型的数 ...
- Android 高仿 频道管理----网易、今日头条、腾讯视频 (能够拖动的GridView)附源代码DEMO
距离上次公布(android高仿系列)今日头条 --新闻阅读器 (二) 相关的内容已经半个月了.近期利用空暇时间,把今日头条client完好了下.完好的功能一个一个所有实现后.就放整个源代码.开发的进 ...
- Android BroadcastAnyWhere(Google Bug 17356824)漏洞具体分析
Android BroadcastAnyWhere(Google Bug 17356824)漏洞具体分析 作者:简行(又名 低端码农) 继上次Android的LaunchAnyWhere组件安全漏洞后 ...
- error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'
[root@luozhonghua ~]# /usr/bin/mysqladmin -u root password 'aaaaaa' /usr/bin/mysqladmin: connect t ...
- ios dyld: Library not loaded: @rpath/xxx.framework/xxx 之根本原因
碰到问题 dyld: Library not loaded: @rpath/xxx.framework/xxx Referenced from: /var/containers/Bundle/Appl ...
- [Supervisor]supervisor监管gunicorn启动DjangoWeb时异常退出
一开始配置 [program:django_web] command=gunicorn -w 4 -b 0.0.0.0:8080 superadmin.wsgi:application directo ...