当前位置: 首页 > news >正文

CSAPP第4章:RISC和CISC指令集

RISC和CISC指令集

 IA32被称为复杂指令集计算机(CISC),与精简指令集计算机(RISC)相对。

从历史上看,先出现了CISC机器,计算机不断发展使指令集非常大。

RISC设计理念在80年代早期发展,使用更简单的指令集产生高效的代码。

许多加到指令集中的高级指令很难被编译器产生,并且这些指令很少被用到,一个简单的指令集可以很少的硬件实现,能以高效的流水线组织起来。

CISC和RISC比较:

(1)CISC指令数量多,Intel描述全套指令有700多页。

RISC指令数量少,通常少于100个

(2)CISC有些指令执行时间很长,包括一个整块从存储器的一个部分拷贝到另一部分的指令,以及其他一些多个寄存器的值拷贝到存储器或从存储器拷贝到多个寄存器的指令。

(3)RISC没有较长执行时间的指令。

 有些早期的RISC机器没有整数乘法指令,要求编译器通过一系列加法实现乘法。

CISC编码长度可变。

RISC编码是固定长度的,所有指令编码都是4个字节。

(4)CISC指定操作数的方式多样,存储器操作数指示符可以由基址、变址或伸缩因子组成。

RISC只有简单寻址方式,通常只有基址和位移寻址。

(5)CISC可以对存储器和寄存器操作数进行算术和逻辑运算。

         RISC使用load/store体系结构。

RISC只能对寄存器操作数进行算术和逻辑运算,允许使用存储器引用的只有load和store指令。

load是从存储器读到寄存器,store从寄存器写到存储器。

(6)CISC对机器级程序实现细节不可见。

RISC对机器级程序来说实现细节可见。

有些RISC机器禁止某些特殊的指令序列,而有些跳转要到下一条指令执行完后才生效,编译器必须在这些约束条件下进行性能优化。

(7)CISC有条件码,设置了一些特殊的标志位,可以用来作为条件分支检测。

RISC没有条件码,相反对条件检测来说,要用明确的测试指令,将测试结果放在一个普通的寄存器中。

(8)CISC是栈密集的过程链接,栈被用来存取过程参数和返回地址。

      RISC是寄存器密集的过程链接。寄存器被用来存取过程参数和返回地址。

 所以有些过程能完全避免存储器引用,通常处理器有更多的(<=32)寄存器。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [POI2006] OKR-Periods of Words——最大周期长度(扩展最小周期长度)
  • could not read ok from ADB Server
  • linux生产者消费者模型
  • 大语言模型(LLM)综述(六):大型语言模型的基准和评估
  • 基于springboot+vue的影城管理系统
  • C嘎嘎之类和对象下
  • @Bean有哪些属性
  • Comparator接口与Lambda表达式
  • 回调函数——qsort的模拟实现
  • 『MySQL快速上手』-③-库的操作
  • 一、Hadoop初始化配置(final+ubuntu保姆级教程)
  • 钉钉内嵌H5遇到的一些问题
  • html中使用JQ自定义锚点偏移量
  • 价钱统计
  • 数字摄影测量
  • 【知识碎片】第三方登录弹窗效果
  • Angular2开发踩坑系列-生产环境编译
  • ES6系列(二)变量的解构赋值
  • express.js的介绍及使用
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • markdown编辑器简评
  • Netty 4.1 源代码学习:线程模型
  • node学习系列之简单文件上传
  • Python socket服务器端、客户端传送信息
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 如何优雅地使用 Sublime Text
  • 使用 @font-face
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 提醒我喝水chrome插件开发指南
  • 王永庆:技术创新改变教育未来
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ![CDATA[ ]] 是什么东东
  • ## 基础知识
  • #stm32整理(一)flash读写
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #在 README.md 中生成项目目录结构
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (Java入门)学生管理系统
  • (备忘)Java Map 遍历
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (简单) HDU 2612 Find a way,BFS。
  • (南京观海微电子)——示波器使用介绍
  • (三分钟)速览传统边缘检测算子
  • (十六)视图变换 正交投影 透视投影
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)Neo4j下载安装以及初次使用
  • (转)C#调用WebService 基础
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .NET Core使用NPOI导出复杂,美观的Excel详解