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名)
随机推荐
- update city_demo set city=(select city from city order by rand() limit1);
update city_demo set city=(select city from city order by rand() limit1); 因为使用了rand()函数,所以每一次查询的结果是不 ...
- dhtmlx中添加一列(将相似button、下拉列表、输入框显示在一行上)
{ type: "label", list: [ { { type: "label", labelWidth: 55 }, { type: "newc ...
- Android studio 解决setText中文乱码问题
我在用Android Studio编译器的时候,总会遇到非常多乱码的问题.第一个乱码问题是在Layout文件中面定义了EditText.在代码中须要将获取到的内容填充到EditText里面,这时候假设 ...
- Codeforces 91C Ski Base 加边求欧拉回路数量
题目链接:点击打开链接 题意: 给出n个点m条无向边的图 開始图里没有边.每次加一条边,然后输出图里欧拉回路的条数. 思路: We will count the number of ski bases ...
- HTTPS那些事 用java实现HTTPS工作原理
HTTPS那些事 用java实现HTTPS工作原理 博客分类: java历险 今天被问到关于https原理的问题,结果由于知识掌握不牢靠,停留于表面,很多细节都无法回答清楚,于是决定把https的 ...
- View载入具体解释
文章一開始我要对前面一篇文章做点补充 相信大家都知道View有两个方法. public boolean post(Runnable action) public boolean postDelayed ...
- 一看就懂系列之 由浅入深聊一聊php的垃圾回收机制
前言 是的,平时经常听到大牛说到的gc,就是垃圾回收器,全称Garbage Collection. 早期版本,准确地说是5.3之前(不包括5.3)的垃圾回收机制,是没有专门的垃圾回收器的.只是简单的判 ...
- jQuery 插件开发全解析
jQuery插件的开发包含两种: 一种是类级别的插件开发,即给jQuery加入新的全局函数,相当于给jQuery类本身加入方法.jQuery 的全局函数就是属于jQuery命名空间的函数,还有一种是对 ...
- Uva 10036 - Divisibility
Consider an arbitrary sequence of integers. One can place + or - operators between integers in the s ...
- vs2010 下使用C#开发activeX控件
1.创建一个类库 2.项目属性-应用程序-程序集信息-"使程序集COM可见"勾上; 3.项目属性-生成-"为COM互操作注册"勾上.(这个折腾一天,否则注册事件 ...