CISC和RISC指令集

news2024/12/27 13:38:45

文章目录

1. 指令集

2. CISC(复杂指令集计算)

3. RISC(精简指令集计算)

4. RISC的设计初衷

5. CISC和RISC流程对比

CISC(复杂指令集计算)的实现

RISC(精简指令集计算)的实现

比较与总结

6. CISC与RISC指令对比

7. RISC-V


1. 指令集

指令集(Instruction Set)是计算机处理器(CPU)能够识别和执行的所有指令的集合。它是计算机体系结构的一个关键组成部分,定义了处理器如何执行软件指令,并与计算机硬件进行交互。指令集包括各种操作码(Opcode),每个操作码对应一种特定的操作,如数据传输、算术运算、逻辑运算、控制流等。

基本组成: 一个指令集通常包括以下几个部分:

  1. 操作码(Opcode)

    • 操作码是指令的核心部分,指定了要执行的操作类型(如加法、减法、数据加载等)。
    • 例如,ADD操作码表示加法操作,MOV操作码表示数据传输操作。
  2. 操作数(Operands)

    • 操作数是指令中指定的数据或地址,可以是立即数、寄存器、内存地址等。
    • 例如,在ADD R1, R2指令中,R1R2是操作数,表示要相加的寄存器。
  3. 寻址模式(Addressing Modes)

    • 寻址模式定义了如何解释和访问操作数。
    • 常见的寻址模式包括立即寻址、寄存器寻址、直接寻址、间接寻址、变址寻址等。
    • 例如,在直接寻址模式中,操作数是一个内存地址;在寄存器寻址模式中,操作数是一个寄存器。
  4. 指令格式(Instruction Format)

    • 指令格式是指令集的结构,包括操作码和操作数的排列方式。
    • 不同的指令集架构(ISA)可能采用不同的指令格式,指令长度可以是固定的或可变的。

CISC(Complex Instruction Set Computers,复杂指令集计算集)和RISC(Reduced Instruction Set Computers,精减指令集计算集)是两大类主流的CPU指令集类型。

2. CISC(复杂指令集计算)

代表:Intel、AMD的x86 CPU

特点

  • 复杂指令集:CISC处理器的指令集包含大量复杂的指令,每条指令可以执行多个低级操作(如内存访问、算术运算等)。
  • 可变指令长度:CISC指令的长度不固定,可以根据具体操作的需要变化。
  • 多种寻址模式:支持多种复杂的寻址模式,增加了指令的灵活性和功能。
  • 微代码控制:通常使用微代码(microcode)来实现复杂指令的执行,将复杂指令分解为一系列更简单的微操作。

优点

  • 编程简便:由于指令集丰富,程序员可以使用较少的指令实现复杂的功能。
  • 代码密度高:复杂指令能够执行多个操作,减少了程序代码的长度。

缺点

  • 设计复杂:CISC处理器的设计和实现较为复杂,增加了设计和制造成本。
  • 执行速度较慢:由于指令的复杂性,每条指令的执行时间较长,难以实现高效的流水线处理。

应用

  • 个人计算机:广泛应用于桌面电脑和笔记本电脑,提供高性能计算和多媒体处理能力。
  • 服务器:广泛应用于数据中心和云计算服务器,提供高性能计算、虚拟化和大规模数据处理能力。

3. RISC(精简指令集计算)

代表:ARM、IBM Power,以及开源的RISC-V

特点

  • 简化指令集:RISC处理器的指令集较为简单,通常只有几百条指令,每条指令执行一个低级操作(如加载、存储、算术运算等)。
  • 固定指令长度:RISC指令的长度固定,通常为32位,这简化了指令的解码和执行过程。
  • 少数寻址模式:支持少数几种寻址模式,简化了硬件设计。
  • 硬连线控制:通常使用硬连线控制逻辑(hardwired control)来实现指令的执行,提高了指令的执行速度。

优点

  • 高效执行:由于指令简单统一,每条指令在一个时钟周期内完成,有助于实现高速流水线处理。
  • 设计简便:RISC处理器的设计和实现较为简单,减少了设计和制造成本。
  • 高效流水线:简化指令集和固定指令长度使得RISC处理器能够高效实现流水线处理,提高了指令的执行速度。

缺点

  • 编程复杂:由于指令集简单,程序员需要编写更多的指令来实现复杂的功能。
  • 代码密度低:由于指令简单,每个操作需要更多的指令,增加了程序代码的长度。

应用

  • 移动设备:如智能手机和平板电脑,主要使用ARM Cortex-A系列处理器,提供高效能和低功耗的解决方案。
  • 嵌入式系统:如工业控制、家电和智能家居设备,广泛使用ARM Cortex-M系列微控制器。
  • 物联网设备:低功耗物联网节点和传感器,使用ARM Cortex-M或ARM Cortex-R系列处理器。

4. RISC的设计初衷

RISC的设计初衷是为了克服CISC处理器的一些弊端。CISC处理器的复杂指令集虽然可以简化编程,但也带来了设计和实现的复杂性、执行速度的限制以及较高的功耗。RISC的设计理念主要包括以下几个方面:

简化指令集

  • RISC处理器选择了一些可以在单个CPU周期内完成的简单指令,这些指令大多是基本的算术和逻辑操作、数据传输操作等。简化指令集的目的是减少处理器的复杂性,使得指令的解码和执行更加高效。

固定指令长度

  • RISC指令的长度固定,通常为32位。这种固定长度的设计简化了指令的解码过程,使得处理器能够更快地读取和执行指令。

高效流水线

  • 简化指令集和固定指令长度使得RISC处理器能够更高效地实现指令流水线。在流水线中,不同的指令在不同的阶段并行执行,提高了处理器的执行效率和吞吐量。

将复杂性交给编译器

  • 在RISC设计中,将复杂的操作留给编译器处理,而不是处理器本身。编译器负责将高级语言代码优化并转换为高效的RISC指令序列,从而提高整体系统的性能。

5. CISC和RISC流程对比

图中展示了如何实现乘法运算的差异。具体操作是:将变量a乘以变量b,然后将结果存储回变量a中,表示为a = a * b。这个过程需要以下四个步骤:

CISC(复杂指令集计算)的实现

  1. 读取a:从内存中读取变量a的值。
  2. 读取b:从内存中读取变量b的值。
  3. 乘法操作:直接在CPU中执行乘法操作,将a和b相乘。
  4. 写回结果:将乘法结果写回到变量a中。

特点

  • 单条复杂指令:CISC架构提供了一个复杂的乘法指令,可以在一条指令中完成上述所有操作。这条指令可能需要多个CPU周期才能完成。
  • 高指令密度:由于每条CISC指令可以执行多个操作,代码的长度(指令数目)较短。
  • 复杂硬件实现:由于指令复杂,CISC处理器的硬件实现较为复杂,需要微代码或其他控制机制来解码和执行这些复杂指令。

优点

  • 编程简便:程序员可以使用较少的指令实现复杂的操作。
  • 代码紧凑:由于每条指令执行多个操作,程序代码更短。

缺点

  • 执行速度较慢:每条复杂指令需要多个CPU周期才能完成,执行速度相对较慢。
  • 硬件复杂:处理器的设计和实现较为复杂,增加了设计和制造成本。

RISC(精简指令集计算)的实现

  1. 读取a:从内存中读取变量a的值,并将其加载到寄存器中。
  2. 读取b:从内存中读取变量b的值,并将其加载到寄存器中。
  3. 乘法操作:在寄存器中执行乘法操作,将a和b相乘,并将结果存储在一个寄存器中。
  4. 写回结果:将乘法结果从寄存器写回到变量a中。

特点

  • 多条简单指令:RISC架构没有提供复杂的乘法指令,而是通过多条简单的指令来完成上述操作,每条指令在单个CPU周期内完成。
    • LOAD R1, a:将变量a加载到寄存器R1中。
    • LOAD R2, b:将变量b加载到寄存器R2中。
    • MUL R3, R1, R2:将R1和R2中的值相乘,并将结果存储在寄存器R3中。
    • STORE R3, a:将寄存器R3中的结果存储回变量a中。

优点

  • 高执行效率:每条指令在一个CPU周期内完成,可以实现高效的流水线处理。
  • 硬件设计简便:处理器的设计和实现相对简单,减少了设计和制造成本。
  • 高效流水线:简化指令集和固定指令长度使得RISC处理器能够高效实现流水线处理。

缺点

  • 编程复杂:程序员需要编写更多的指令来实现复杂的操作。
  • 代码长度增加:由于每个操作需要单独的指令,程序代码长度增加。

比较与总结

1. 指令能力

CISC

  • 指令能力强:CISC的指令集包含许多复杂的指令,每条指令可以执行多个操作。这些指令使得编程更加简便,因为程序员可以使用少量的指令完成复杂的任务。
  • 可变长格式:CISC指令的长度不固定,可以根据需要变化,这增加了指令的灵活性。
  • 微程序控制:CISC处理器通常使用微程序(microcode)控制,将复杂指令分解为多个微操作执行。微程序在CPU制造时已经存储在微程序存储器中,并在运行时被调用执行。

RISC

  • 指令能力简化:RISC的指令集包含较少的简单指令,每条指令执行一个基本操作。这种简化的指令集减少了处理器的复杂性,并提高了指令的执行效率。
  • 固定长格式:RISC指令的长度固定,通常为32位,这简化了指令的解码和执行过程。
  • 硬连线控制:RISC处理器主要依赖硬连线控制逻辑(hardwired control)来执行指令,而不是依赖于微程序。这使得RISC处理器能够更快地执行指令。

2. 寻址方式

CISC

  • 多种寻址方式:CISC处理器支持多种复杂的寻址方式,如直接寻址、间接寻址、基址加变址寻址等。这些寻址方式增加了指令的灵活性,但也增加了指令的解码复杂性。

RISC

  • 少量寻址方式:RISC处理器支持的寻址方式较少,通常只有立即寻址、寄存器寻址和简单的内存寻址。这些简化的寻址方式有助于提高指令的执行速度和处理器的设计效率。

3. 实现方式

CISC

  • 微程序控制技术:CISC处理器通过微程序控制复杂指令的执行。微程序将复杂指令分解为一系列微操作,这些微操作在CPU内部依次执行。微程序的执行是不可中断的,增加了处理器的复杂性。

RISC

  • 硬连线逻辑控制:RISC处理器主要使用硬连线逻辑控制来执行指令。这种方式依赖于硬件电路,而不是微程序,简化了处理器的设计,提高了指令执行的速度和效率。
  • 流水线处理:RISC处理器广泛采用流水线技术,使得多个指令可以在不同阶段同时执行,提高了指令的吞吐量和整体性能。

4. 研发周期

CISC

  • 研发周期长:由于CISC处理器的复杂性,设计和实现一个新的CISC处理器需要较长的时间。复杂的指令集和多种寻址方式增加了设计和验证的工作量。

RISC

  • 研发周期短:RISC处理器的设计相对简单,硬件实现较为简便,使得研发周期较短。此外,RISC指令集依赖于编译器优化,将复杂操作交给编译器处理,进一步简化了处理器设计。
特点CISC(复杂指令集计算)RISC(精简指令集计算)
代表Intel、AMD的x86 CPUARM、IBM Power、RISC-V
指令能力强,单条指令可以完成多个操作,指令集复杂简化,大部分为单周期指令,指令长度固定
指令长度可变长格式固定长度,通常为32位
寻址方式多种复杂的寻址方式少量简单的寻址方式
控制方式微程序控制,执行复杂指令硬连线逻辑控制,执行简单指令
执行效率单条指令执行时间较长,难以高效流水线处理每条指令执行时间短,容易实现高效流水线
实现方式通过微程序控制复杂指令的实现增加了通用寄存器,主要采用流水线方式执行
硬件设计复杂,增加设计和制造成本简单,降低设计和制造成本
编程难度编程较为简单,指令数量少编程复杂,指令数量多
代码密度高,程序代码长度较短低,程序代码长度较长
研发周期长,设计和验证工作量大短,硬件设计简单,依赖编译器优化
优势指令集丰富,编程简便,代码密度高指令执行高效,硬件设计简便,易于流水线处理
应用领域个人计算机、服务器、高性能计算移动设备、嵌入式系统、物联网设备、高性能计算

6. CISC与RISC指令对比

功能CISC指令示例(x86架构)RISC指令示例(ARM架构)
数据传送MOV AX, [1234H]LDR R0, [R1]
从内存地址1234H处读取数据到AX寄存器中从内存地址R1处读取数据到R0寄存器中
加法ADD AX, BXADD R0, R1, R2
将BX寄存器的值加到AX寄存器中将R1和R2寄存器的值相加,结果存储在R0中
减法SUB AX, [1234H]SUB R0, R1, R2
将内存地址1234H处的值从AX寄存器中减去将R2寄存器的值从R1寄存器中减去,结果存储在R0中
乘法MUL BXMUL R0, R1, R2
将AX寄存器和BX寄存器的值相乘,结果存储在AX中将R1和R2寄存器的值相乘,结果存储在R0中
数据存储MOV [1234H], AXSTR R0, [R1]
将AX寄存器的值存储到内存地址1234H处将R0寄存器的值存储到内存地址R1处
无条件跳转JMP 1234HB label
无条件跳转到内存地址1234H处无条件跳转到标签label处
条件跳转JZ 1234HBEQ label
如果零标志设置,则跳转到内存地址1234H处如果零标志设置,则跳转到标签label处
比较CMP AX, BXCMP R0, R1
比较AX和BX寄存器的值,根据结果设置标志寄存器比较R0和R1寄存器的值,根据结果设置条件标志
空操作NOPNOP
不执行任何操作不执行任何操作

通过这些对比可以看出,CISC指令通常较为复杂,能够在一条指令中执行多个操作,而RISC指令则较为简化,每条指令只执行一个基本操作。这种设计使得RISC处理器能够更高效地执行指令,并更容易实现流水线处理。

7. RISC-V

RISC-V是一个开源的RISC(精简指令集计算)指令集架构(ISA),由加州大学伯克利分校的研究人员开发,它以其开放性和模块化设计而广受欢迎。

背景

RISC-V的开发始于2010年,创建了一个简洁且易于理解的指令集架构,同时避免商业化指令集的各种限制和专利问题。

  • 简化架构设计:创建一个简洁且高效的指令集,易于理解和实现。
  • 开放性:提供一个开源的指令集架构,任何人都可以免费使用和修改。
  • 灵活性和可扩展性:支持多种实现方式和应用场景,从简单的嵌入式处理器到高性能多核处理器。

特点

  1. 开源性

    • 自由使用和修改:RISC-V的指令集架构是开放的,任何人都可以免费下载、使用和修改。这使得RISC-V成为学术研究、教学以及工业应用的理想选择。
    • 避免专利问题:由于其开源性,RISC-V避免了使用商业化指令集可能面临的专利和许可问题。
  2. 模块化设计

    • 基础指令集:RISC-V定义了一个基础的指令集,称为RV32I(32位整数指令集)和RV64I(64位整数指令集)。这些基础指令集包含了一组核心指令,适用于大多数计算任务。
    • 可选扩展:在基础指令集之上,RISC-V提供了多种可选扩展模块,如浮点运算(F、D扩展)、原子操作(A扩展)、压缩指令集(C扩展)等。用户可以根据具体需求选择适当的扩展模块。
  3. 灵活性和可扩展性

    • 多种实现方式:RISC-V的设计支持从简单的嵌入式处理器到高性能多核处理器的多种实现方式。设计者可以根据具体应用场景进行优化。
    • 适应不同应用场景:RISC-V适用于嵌入式系统、物联网设备、移动设备、高性能计算等多种应用场景。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1905764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Bug记录:【com.fasterxml.jackson.databind.exc.InvalidDefinitionException】

bug记录 序列化错误 异常com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 完整错误(主要是FAIL_ON_EMPTY_BEANS) 00:15:20.250 [http-nio-3000-exec-1] ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] - S…

【教程】新的Selenium!整合了隐藏浏览器指纹等功能

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 前景提要 driver Driver() 常用driver 接口 最后的话 前景提要 新的selenium,整合了隐藏浏览器指纹,非常好用&#x…

【Linux】网络新手村

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 引言 今天,我们就开始学习Linux网络相关的内容。这篇博客作为Linux网络板块的第一篇博客看,我们首先要带着大家明白Linux网络的一些名词的概念,为之后的学习扫清障碍。然后我…

基于CS模型和CV模型的多目标协同滤波跟踪算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于CS模型和CV模型的多目标协同滤波跟踪算法matlab仿真,在计多目标跟踪领域,基于CS模型和CV模型的多目标协同滤波跟踪算法是近年来发展起来的先进技术…

HackTheBox--Headless

Headless测试过程 1 信息收集 NMAP端口扫描 nmap -sSCV 10.10.11.85000端口测试 检查页面功能,请求 For questions 功能,跳转到 /support 目录 目录扫描 发现 /dashboard 目录 访问 /dashboard 目录,显示未认证,如果通过认证…

Postgresql - 用户权限数据库

1、综述 在实际的软件项目开发过程中,用户权限控制可以说是所有运营系统中必不可少的一个重点功能,根据业务的复杂度,设计的时候可深可浅,但无论怎么变化,设计的思路基本都是围绕着用户、部门、角色、菜单这几个部分展…

C语言 | Leetcode C语言题解之第222题完全二叉树的节点个数

题目&#xff1a; 题解&#xff1a; bool exists(struct TreeNode* root, int level, int k) {int bits 1 << (level - 1);struct TreeNode* node root;while (node ! NULL && bits > 0) {if (!(bits & k)) {node node->left;} else {node node-&…

音频处理5_时频谱1

介绍 时频谱&#xff0c;mel谱&#xff0c; MFCC 1. 概念 magnitude&#xff08;幅值&#xff09;& amplitude&#xff08;振幅)&#xff1a; 振幅指时域信号的瞬时强度或波的高度&#xff0c;它表示信号的最大偏离平均值的程度。 对于一个正弦波信号&#xff0c;振幅是从…

根据RTL图编写Verilog程序

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 参考代码 描述 根据以下RTL图&#xff0c;使用 Verilog HDL语言编写代码&#xff0c;实现相同的功能&#xff0c;并编写testbench验证功能。 输入描述&#xff1a; clk&#xff1a;系统时钟信号 rst_n&#xff1a;…

第11章 规划过程组(二)(11.9估算活动持续时间)

第11章 规划过程组&#xff08;二&#xff09;11.9估算活动持续时间&#xff0c;在第三版教材第393~395页&#xff1b;文字图片音频方式 第一个知识点&#xff1a;主要工具与技术 1、类比估算 是一种使用相似活动或项目的历史数据&#xff0c;来估算当前活动或项目的持续时间或…

【运维】Windows server 2022 开启 telnet 功能

控制面板》启动或关闭Windows 功能 仪表盘》添加角色和功能》功能》telnet客户端

使用Python+OpenCV实现姿态估计--20240705

姿态估计使用Opencv+Mediapipe来时实现 什么是Mediapipe? Mediapipe是主要用于构建多模式音频,视频或任何时间序列数据的框架。借助MediaPipe框架,可以构建令人印象深刻的ML管道,例如TensorFlow,TFLite等推理模型以及媒体处理功能。 安装命令: pip install mediapipe如果…

回顾 DTC 2024 大会——聚焦数据技术创新:揭秘下一代纯实时搜索引擎 INFINI Pizza

2024 年 4 月 12 日至 13 日&#xff0c;备受瞩目的第十三届“数据技术嘉年华”&#xff08;DTC2024&#xff09;在北京新云南皇冠假日酒店盛大开幕。本次大会由中国 DBA 联盟&#xff08;ACDU&#xff09;与墨天轮社区联合主办&#xff0c;以“智能云原生一体化——DB 与 AI 协…

通过IDEA生成webapp及web.xml配置文件

1、选择File->Project Structure 2、选择Modules-> + -> Web 有的springboot工程选择是war工程,这个web可能已经存在了。 如果不存在,就手动创建,创建后,需要修改pom.xml中的配置 <packaging>war</packaging> 3、创建webapp根目录 这步重点就是创建…

Camera Raw:编辑 - 配置文件

Camera Raw “编辑”模块中的配置文件 Profile面板为照片编辑提供了一个坚实的基础&#xff0c;能够显著改善照片的初始外观&#xff0c;使编辑过程更加高效和灵活。 使用配置文件&#xff0c;可以控制如何呈现照片中的颜色和色调。配置文件旨在作为照片编辑的起点和基础。 ◆ …

在BI软件上使用SQL查询其实很简单

如何在BI软件上使用SQL查询&#xff1f; 我理解在BI上使用SQL是对原始数据进行查询、筛选、清洗&#xff0c;这一点主流BI工具像power BI&#xff0c;tableau、superset都可以支持。 你只需要写好SQL代码&#xff0c;对数据里的相关表进行查询&#xff0c;就可以对查询后的新…

C++ | Leetcode C++题解之第221题最大正方形

题目&#xff1a; 题解&#xff1a; class Solution { public:int maximalSquare(vector<vector<char>>& matrix) {if (matrix.size() 0 || matrix[0].size() 0) {return 0;}int maxSide 0;int rows matrix.size(), columns matrix[0].size();vector<…

warning: GOPATH set to GOROOT (D:\go) has no effect

warning: GOPATH set to GOROOT (D:\go) has no effect gopath 设置一下&#xff0c;并且不要和 goroot 设置成同一个目录

学习笔记——动态路由——OSPF(特殊区域)

十、OSPF特殊区域 1、技术背景 早期路由器靠CPU计算转发&#xff0c;由于硬件技术限制问题&#xff0c;因此资源不是特别充足&#xff0c;因此是要节省资源使用&#xff0c;规划是非常必要的。 OSPF路由器需要同时维护域内路由、域间路由、外部路由信息数据库。当网络规模不…

Vue3中为Ant Design Vue中Modal.confirm自定义内容

在一次业务开发时代码时&#xff0c;碰到了一种既想要Modal.confirm样式&#xff0c;又想要定制其content内容的情况。 大部分情况下&#xff0c;使用Modal.method()这种方式时&#xff0c;可能content内容固定都是字符串&#xff0c;那如果想要做更高级的交互怎么办&#xff…