zoukankan      html  css  js  c++  java
  • 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指令读取内存中的数据到寄存器,其余的指令只能对寄存器的操作数进行处理。
    • 大多数指令长度相同,字段位置(尤其是操作码的位置)固定,且具有“条件执行”模式。
  • 相关阅读:
    mysql root密码重置
    fetch跨域问题
    HTML5触摸事件(touchstart、touchmove和touchend)
    react-router-dom
    清理网站缓存
    从零开始学java (标识符,关键字,基本数据类型)
    从零开始学java ( 初始java)
    入职一年心得
    guava 函数式编程三兄弟
    java读取各种类型文件
  • 原文地址:https://www.cnblogs.com/EIMadrigal/p/9248207.html
Copyright © 2011-2022 走看看