CISC和RISC指令集

文章目录

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.mfbz.cn/a/782354.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【高中数学之函数】四种幂函数图线(二次、三次、开方、开立方)

【图像】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>UNASSIGNED</title><style type"text/css">.c…

【智能算法应用】灰狼算法求解二维栅格路径规划问题

目录 1.算法原理2.二维路径规划数学模型3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】灰狼算法&#xff08;GWO&#xff09;原理及实现 2.二维路径规划数学模型 栅格法模型最早由 W.E. Howden 于 1968 年提出&#xff0c;障碍物的栅格用黑色表示&#xff0c;可通…

基于pi控制的数字锁相环simulink建模与仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视频&#xff09…

基于MATLAB的PEF湍流风场生成器模拟与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于MATLAB的PEF湍流风场生成器模拟与仿真。PEF&#xff08;Primitive Equations Formulation&#xff09;湍流风场模型&#xff0c;是大气科学和气象学中用来描述大气流动和气…

咬文嚼字:词元是当今生成式人工智能失败的一个重要原因

生成式人工智能模型处理文本的方式与人类不同。了解它们基于"标记"的内部环境可能有助于解释它们的一些奇怪行为和顽固的局限性。从 Gemma 这样的小型设备上模型到 OpenAI 业界领先的 GPT-4o 模型&#xff0c;大多数模型都建立在一种称为转换器的架构上。由于转换器在…

subset使用

在R语言中&#xff0c;subset()函数用于从数据框中选择满足特定条件的观测。其语法如下&#xff1a; subset(x, subset, select, drop FALSE) 参数说明&#xff1a; x&#xff1a;数据框或矩阵。 subset&#xff1a;逻辑条件&#xff0c;用于筛选满足特定条件的行。 select…

Linux Bridge - Part 2

概览 在前一篇文章中&#xff0c;我描述了Linux 网桥&#xff08;bridge&#xff09;的配置&#xff0c;并展示了一个实验&#xff0c;其中使用Wireshark来分析流量。在本文中&#xff0c;我将讨论当创建一个网桥时会发生什么&#xff0c;以及Linux 网桥&#xff08;bridge&am…

给您介绍工控CAN总线

CAN是什么 CAN&#xff0c;全称Controller Area Network&#xff0c;即控制器局域网&#xff0c;是一种由Bosch公司在1983年开发的通信协议。它主要用于汽车和工业环境中的电子设备之间的通信。CAN协议定义了物理层和数据链路层的通信机制&#xff0c;使得不同的设备能够通过CA…

数据驱动的内容优化:Kompas.ai如何提升内容表现

在数字化营销时代&#xff0c;内容是企业与用户沟通的重要桥梁。然而&#xff0c;随着信息量的爆炸性增长&#xff0c;如何让内容在激烈的竞争中脱颖而出&#xff0c;成为每个营销人员面临的问题。数据驱动的内容优化策略&#xff0c;通过精准分析和科学决策&#xff0c;帮助品…

基于Java+SpringMvc+Vue技术的实验室管理系统设计与实现

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…

基于Transformer的端到端的目标检测 | 读论文

本文正在参加 人工智能创作者扶持计划 提及到计算机视觉的目标检测&#xff0c;我们一般会最先想到卷积神经网络&#xff08;CNN&#xff09;&#xff0c;因为这算是目标检测领域的开山之作了&#xff0c;在很长的一段时间里人们都折服于卷积神经网络在图像处理领域的优势&…

SQLite 嵌入式数据库

目录&#xff1a; 一、SQLite 简介二、SQLite 数据库安装1、安装方式一&#xff1a;2、安装方式二&#xff1a; 三、SQLite 的命令用法1、创建、打开、退出数据库&#xff1a;2、编辑数据库&#xff1a; 四、SQLite 的编程操作1、打开 / 创建数据库的 C 接口&#xff1a;2、操作…

欧拉函数.

性质1&#xff1a;质数n的欧拉函数为n-1. 性质2&#xff1a;如果p&#xff0c;q都是质数&#xff0c;那么ϕ ( p ∗ q ) ϕ ( p ) ∗ ϕ ( q ) ( p − 1 ) ∗ ( q − 1 ) 证明&#xff1a;p&#xff0c;2p....q*p都不与q*p互质&#xff0c;q同理&#xff0c;所以总的不互质个…

WPS+Python爬取百度之星排名

运行效果 手动拉取 https://www.matiji.net/exam/contest/contestdetail/146 如果手动查找&#xff0c;那么只能通过翻页的方式&#xff0c;每页10行&#xff08;外加一行自己&#xff09;。 爬取效果预览 本脚本爬取了个人排名和高校排名&#xff0c;可以借助WPS或MS Offi…

专业140+总分420+天津大学815信号与系统考研经验天大电子信息与通信工程,真题,大纲,参考书。

顺利上岸天津大学&#xff0c;专业课815信号与系统140&#xff0c;总分420&#xff0c;总结一些自己的复习经历&#xff0c;希望对于报考天大的同学有些许帮助&#xff0c;少走弯路&#xff0c;顺利上岸。专业课&#xff1a; 815信号与系统&#xff1a;指定教材吴大正&#xf…

缺失行处理(R和python)

R(complete.cases) rm(listls()) # 创建一个包含缺失值的数据框 # df <- data.frame( # x c(1, 2, NA, 4), # y c(NA, 2, 3, 4), # z c(1, NA, 3, 3) # ) # # # 使用complete.cases函数筛选包含缺失值的数据行 # missing_rows <- !complete.cases(df) # # # …

Vue2前端实现数据可视化大屏全局自适应 Vue实现所有页面自适应 Vue实现自适应所有屏幕

Vue自适应所有屏幕大小,目前页面自适应,尤其是数据可视化大屏的自适应更是案例很多 今天就记录一下使用Vue全局自适应各种屏幕大小的功能 在Vue.js中创建一个数据大屏,并使其能够自适应不同屏幕大小,通常涉及到布局的响应式设计、CSS媒体查询、以及利用Vue的事件系统来处理…

C++面向对象的常见面试题目(一)

1. 面向对象的三大特征 &#xff08;1&#xff09;封装&#xff1a;隐藏对象的内部状态&#xff0c;只暴露必要的接口。 #include <iostream> #include <string>// 定义一个简单的类 Person class Person { private: // 私有成员&#xff0c;外部不可直接访问std…

通俗易懂的信道复用技术详解:频分、时分、波分与码分复用

在现代通信网络中&#xff0c;信道复用技术 扮演着至关重要的角色。今天&#xff0c;我们将用通俗易懂的语言来讲解几种常见的信道复用技术&#xff1a;频分复用、时分复用、波分复用 和 码分复用。这篇文章特别适合基础小白&#xff0c;希望能帮助你快速理解这些概念。 一、频…

Bean的管理

1.主动获取Bean spring项目在需要时&#xff0c;会自动从IOC容器中获取需要的Bean 我们也可以自己主动的得到Bean对象 &#xff08;1&#xff09;获取bean对象&#xff0c;首先获取SpringIOC对象 private ApplicationContext applicationContext //IOC容器对象 (2 )方法…