ISA Introduction
介绍一下X86、MIPS、ARM三种指令集:
1. X86指令集
X86指令集是典型的CISC(Complex Instruction Set Computer)指令集。
X86指令集外部看起来是CISC指令集,事实上,它是采用类RISC内核,将部分复杂指令通过micro-op模式进行翻译成简单指令,再处理。
X86指令集的几个特性
- 后向兼容
Intel每推出一代新处理器,总会兼容以前处理器的feature。这是由于长期积累的用户习惯和生态环境不容更改,否则没法赚钱了~
后向兼容导致指令集愈发庞大、愈发复杂,同时功耗也会比较大,不过由于Intel超高的工艺水平,这都不是事。 - 变长指令
X86指令集采用变长指令(1~15Bytes),一般每条指令为2~3Bytes。这样可以提高码字的利用率,但也使得译码以及读取指令时比较复杂,因为不知道一条指令应该读多长。 - 多种寻址方式
X86指令集可以采用多种寻址方式,比如立即寻址、寄存器寻址、寄存器相对寻址…… - 通用寄存器个数有限
X86-32的系统有8个通用寄存器,之后X86-64系统扩展到了16个。 - 指令执行时,最多只能有一个操作数在内存里,另一个操作数必为立即数或者寄存器。
- 由于后向兼容以及类RISC内核,导致功耗增加;同时,有很多复杂的指令利用率很低。
2. MIPS指令集
MIPS指令集是典型的RISC(Reduced Instruction Set Computer)指令集。
精简指令集系统的设计思想就是:把复杂指令集中一些不常用的指令踢出指令集,这些复杂指令由日益强大的软件技术(编译)去实现,这样使得每个指令的流水线分段比较均匀,充分利用了处理器的流水线结构,提高了主频。
MIPS指令集以32个寄存器为中心,只能通过Load/Store指令访问内存,其余涉及计算的指令都从寄存器堆中读取数据,并且将计算结果写入寄存器堆中。
另外,MIPS指令的格式比较规整,所有指令长度一致,指令操作码都在固定的位置;寻址方式、对于每条指令的操作都很简单。
那么CISC与RISC的区别是什么呢?
最大的区别在于:RISC只能通过Load/Store指令访问内存,而CISC指令集则没有这个限制。
3. ARM指令集
ARM指令集属于RISC指令集,每条指令32位。
ARM也有16位的压缩指令集,这是为了避免32位出现的码字浪费,提高运行速度推出的。
- ARM指令由于属于RISC指令集,一般完成的操作比较简单。程序员可以通过多条简单的指令组合实现一个复杂的操作。
- 同样的,ARM指令集也是只能通过Load/Store指令读取内存中的数据到寄存器,其余的指令只能对寄存器的操作数进行处理。
- 大多数指令长度相同,字段位置(尤其是操作码的位置)固定,且具有“条件执行”模式。
ISA Introduction的更多相关文章
- 关于oc运行时 isa指针详解
Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助. 1.Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境. 是什么因素使一个程序成为Co ...
- Core Java Volume I — 4.1. Introduction to Object-Oriented Programming
4.1. Introduction to Object-Oriented ProgrammingObject-oriented programming, or OOP for short, is th ...
- NSObject中的isa到底是个什么?
首先看一下NSObject的定义: @interface NSObject <NSObject> { Class isa OBJC_ISA_AVAILABILITY; } 官方解释:Eve ...
- An Introduction to Laravel Policy
An Introduction to Laravel Policy 30 Dec 2018 . Laravel. 7.6K views If you heard about Laravel Polic ...
- A chatroom for all! Part 1 - Introduction to Node.js(转发)
项目组用到了 Node.js,发现下面这篇文章不错.转发一下.原文地址:<原文>. ------------------------------------------- A chatro ...
- Is-A,Has-A,Use-A(转载)
原文地址:http://blog.csdn.net/loveyou128144/article/details/4749576 而Is-A,Has-A,Use-A则是用来描述类与类之间关系的.简单的说 ...
- Introduction to graph theory 图论/脑网络基础
Source: Connected Brain Figure above: Bullmore E, Sporns O. Complex brain networks: graph theoretica ...
- INTRODUCTION TO BIOINFORMATICS
INTRODUCTION TO BIOINFORMATICS 这套教程源自Youtube,算得上比较完整的生物信息学领域的视频教程,授课内容完整清晰,专题化的讲座形式,细节讲解比国内的京师大 ...
- mongoDB index introduction
索引为mongoDB的查询提供了有效的解决方案,如果没有索引,mongodb必须的扫描文档集中所有记录来match查询条件的记录.然而这些扫描是没有必要,而且每一次操作mongod进程会处理大量的数据 ...
随机推荐
- web自动化浏览器chrome和驱动chromedriver
1.web自动化下载浏览器和对应的浏览器驱动,以谷歌浏览器为例 电脑上安装谷歌浏览器,查看谷歌浏览器的版本,输入chrome://settings/help 2.chromedriver国内镜像地址h ...
- django、celery异步发邮件
django.celery异步发邮件 django自带的send_mail发邮件功能执行发邮件功能会因为网络的原因造成花费的时间过长,为了解决这个问题,可以用celery + redis代替 安装包: ...
- Codeup 25593 Problem G 例题5-7 求圆周率pi的近似值
题目描述 用如下公式 4*Π = 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 - 1/15 - 求圆周率PI的近似值,直到发现某一项的绝对值小于10-6为止(该项不 ...
- 文件上传——客户端检测绕过(JavaScript检测)(一)
前言 通常再一个web程序中,一般会存在登陆注册功能,登陆后一般会有上传头像等功能,如果上传验证不严格就可能造成攻击者直接上传木马,进而控制整个web业务控制权.下面通过实例,如果程序只进行了客户端J ...
- bootstrapTable随机改变列颜色
{ title: '运单编号', field: 'waybillNumber', align: 'center', valign: 'middle', cellStyle: function (val ...
- AJ学IOS(20)UI之UIPickerView_点菜系统
AJ分享,必须精品 先看效果图 ## UIPickerView控件 UIPickerView用处: 用来展示很多行(row) 很多列(component )的数据,多用于电子商务的点菜,城市选择等等. ...
- 15分钟从零开始搭建支持10w+用户的生产环境(二)
上一篇文章,把这个架构的起因,和操作系统的选择进行了详细说明. 原文地址:15分钟从零开始搭建支持10w+用户的生产环境(一) 二.数据库的选择 对于一个10W+用户的系统,数据库选择很重要. 一 ...
- github使用--配置sshkey
配置sshkey 好处:每次提代码都不要输入用户名和密码. 1.生成key: 输入命令ssh-keygen -t rsa -C "邮箱地址" [邮箱地址:注册github时填写的邮 ...
- redis: Jedis API(十四)
1.Key操作 package com.kuang; import redis.clients.jedis.Jedis; import java.util.Set; public class Test ...
- HTML+CSS教程(二)frameset框架和iframe内嵌
一.框架 (frameset)1.用<frameset></frameset>代替了<body></body>2.rows设置行的占页面的百分比:col ...