精简指令集(RISC)和复杂指令集(CISC)的区别

article/2025/10/10 23:24:39

RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构,x86是CISC的代表架构,占领了95%以上的桌面计算机和服务器市场。Arm作为RISC的一种,在智能手机、可穿戴设备等移动处理器市场占领主要地位。

它们的区别在于不同的CPU设计理念和方法。

CPU架构是厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示

早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。比如对于乘法运算,在CISC架构的CPU上,您可能需要这样一条指令:MUL ADDRA, ADDRB就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。比如上面的例子,C程序中的a*=b就可以直接编译为一条乘法指令。今天只有Intel及其兼容CPU还在使用CISC架构。

RISC架构要求软件来指定各个操作步骤。上面的例子如果要在RISC架构上实现,将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作都必须由软件来实现,比如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。

复杂指令集计算机(CISC)

长期来,计算机性能的提高往往是通过增加硬件的复杂性来获得.随着集成电路技术.特别是VLSI(超大规模集成电路)技术的迅速发展,为了软件编程方便和提高程序的运行速度,硬件工程师采用的办法是不断增加可实现复杂功能的指令和多种灵活的编址方式.甚至某些指令可支持高级语言语句归类后的复杂操作.至使硬件越来越复杂,造价也相应提高.为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外.还通过存于只读存贮器(ROM)中的微程序来实现其极强的功能 ,傲处理在分析每一条指令之后执行一系列初级指令运算来完成所需的功能,这种设计的型式被称为复杂指令集计算机(Complex Instruction Set Computer-CISC)结构.一般CISC计算机所含的指令数目至少300条以上,有的甚至超过500条.

精简指令集计算机(RISC)

采用复杂指令系统的计算机有着较强的处理高级语言的能力.这对提高计算机的性能是有益的.当计算机的设计沿着这条道路发展时.有些人没有随波逐流.他们回过头去看一看过去走过的道路,开始怀疑这种传统的做法:IBM公司没在纽约Yorktown的JhomasI.Wason研究中心于1975年组织力量研究指令系统的合理性问题.因为当时已感到,日趋庞杂的指令系统不但不易实现.而且还可能降低系统性能.1979年以帕特逊教授为首的一批科学家也开始在美国加册大学伯克莱分校开展这一研究.结果表明,CISC存在许多缺点.首先.在这种计算机中.各种指令的使用率相差悬殊:一个典型程序的运算过程所使用的80%指令.只占一个处理器指令系统的20%.事实上最频繁使用的指令是取、存和加这些最简单的指令.这样-来,长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器.同时.复杂的指令系统必然带来结构的复杂性.这不但增加了设计的时间与成本还容易造成设计失误.此外.尽管VLSI技术现在已达到很高的水平,但也很难把CISC的全部硬件做在一个芯片上,这也妨碍单片计算机的发展.在CISC中,许多复杂指令需要极复杂的操作,这类指令多数是某种高级语言的直接翻版,因而通用性差.由于采用二级的微码执行方式,它也降低那些被频繁调用的简单指令系统的运行速度.因而.针对CISC的这些弊病.帕特逊等人提出了精简指令的设想即指令系统应当只包含那些使用频率很高的少量指令.并提供一些必要的指令以支持操作系统和高级语言.按照这个原则发展而成的计算机被称为精简指令集计算机(Reduced Instruction Set Computer-RISC)结构.简称RISC.

CISC与RISC的区别

我们经常谈论有关"PC"与"Macintosh"的话题,但是又有多少人知道以Intel公司X86为核心的PC系列正是基于CISC体系结构,而 Apple公司的Macintosh则是基于RISC体系结构,CISC与RISC到底有何区别?

从硬件角度来看CISC处理的是不等长指令集,它必须对不等长指令进行分割,因此在执行单一指令的时候需要进行较多的处理工作。而RISC执行的是等长精简指令集,CPU在执行指令的时候速度较快且性能稳定。因此在并行处理方面RISC明显优于CISC,RISC可同时执行多条指令,它可将一条指令分割成若干个进程或线程,交由多个处理器同时执行。由于RISC执行的是精简指令集,所以它的制造工艺简单且成本低廉。

从软件角度来看,CISC运行的则是我们所熟识的DOS、Windows操作系统。而且它拥有大量的应用程序。因为全世界有65%以上的软件厂商都理为基于CISC体系结构的PC及其兼容机服务的,象赫赫有名的Microsoft就是其中的一家。而RISC在此方面却显得有些势单力薄。虽然在RISC上也可运行DOS、Windows,但是需要一个翻译过程,所以运行速度要慢许多。

目前CISC与RISC正在逐步走向融合,Pentium Pro、Nx586、K5就是一个最明显的例子,它们的内核都是基于RISC体系结构的。他们接受CISC指令后将其分解分类成RISC指令以便在遇一时间内能够执行多条指令。由此可见,下一代的CPU将融合CISC与RISC两种技术,从软件与硬件方面看二者会取长补短。

复杂指令集CPU内部为将较复杂的指令译码,也就是指令较长,分成几个微指令去执行,正是如此开发程序比较容易(指令多的缘故),但是由于指令复杂,执行工作效率较差,处理数据速度较慢,PC 中 Pentium的结构都为CISC CPU。
RISC是精简指令集CPU,指令位数较短,内部还有快速处理指令的电路,使得指令的译码与数据的处理较快,所以执行效率比CISC高,不过,必须经过编译程序的处理,才能发挥它的效率,我所知道的IBM的 Power PC为RISC CPU的结构,CISCO 的CPU也是RISC的结构。

咱们经常见到的PC中的CPU,Pentium-Pro(P6)、Pentium-II,Cyrix的M1、M2、AMD的K5、K6实际上是改进了的CISC,也可以说是结合了CISC和RISC的部分优点。

CISC与RISC的主要特征对比

比较内容CISCRISC
指令系统复杂,庞大简单,精简
指令数目一般大于200一般小于100
指令格式一般大于4一般小于4
寻址方式一般大于4一般小于4
指令字长不固定等长
可访存指令不加限制只有LOAD/STORE指令
各种指令使用频率相差很大相差不大
各种指令执行时间相差很大绝大多数在一个周期内完成
优化编译实现很难很容易
程序源代码长度较短较长
控制器实现方式绝大多数为微程序控制绝大多数为硬布线控制
软件系统开发时间较短较长

 


http://chatgpt.dhexx.cn/article/0F4PlEkh.shtml

相关文章

精简指令集与复杂指令集

精简指令集与复杂指令集对比 补充: 时钟周期: 一个时钟脉冲所需要的时间。在计算机组成原理中又叫 T 周期或节拍脉冲。是 CPU 和其他单片机的基本时间单位。 机器周期:通常用从内存中读取一个指令字的最短时间来规定 CPU 周期(机…

一文读懂,CPU、精简指令集、复杂指令集该如何理解?

大家好,我是七七。欢迎来到我们的频道,一起见证ARM架构的崛起。 如今,芯片相关的话题广受关注,我们经常会听到芯片、CPU架构、ARM架构、芯片研发等相关内容。CPU、指令集、架构、微架构、芯片,这一组概念很容易混淆&am…

精简指令集(MIPS为例)常用指令特点及其格式

精简指令集(MIPS为例)常用指令特点及其格式 一、指令集 指令集是指一台计算机的全部指令;不同的计算机有不同的指令集,但是在许多方面都有共同之处。早期的计算机有非常简单的指令集:实现简单,许多现代计…

精简指令集

精简指令集编辑risc(精简指令集)一般指精简指令集 本词条缺少 信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来 编辑吧! RISC的英文全称是Reduced Instruction Set Computer,中文是精简指…

Centos7 连接wifi (PEAP)

1 注意连接的wifi 2 安全中的设置,按照下图 3 有问题,记得reboot重启一下!

802.1x EAP(证书)、PEAP(证书、EAP-MSCHAP v2)认证配置(NPS、组策略)

802.1x EAP(证书) NPS 组策略 PEAP(证书、EAP-MSCHAP v2) NPS 组策略按需配置,下图是PEAP证书

Android Wifi连接 (PEAP)

Wifi PEAP方式的连接与Android的版本有很大关系,三个大的差别对应的版本分别是4.3以下,4.3到6.0之间,以及6.0以上,现在就基于版本分析。 如果要连接wifi,那么得创建WifiConfiguration 版本4.3以下,需要采…

AP与mAP的详解

AP和mAP是图像分类任务中的评价方法。 mAP的计算方法: 1、首先使用训练好的模型获得所有测试样本的confideutnce score,每个类别(如person、car等)都会获得一组confidence score,假设现在共有20个测试样本&#xff0…

AP,mAP

AP(Average Precision) AP (Average precision)是主流的目标检测模型的评价指标。 定义:平均精度,就是对PR曲线上的Precision值求均值,即PR曲线下的面积。 由于IoU有三种计算方式,对应地,AP也…

RADIUS 服务器之 hostapd 配置说明

RADIUS 服务器之 hostapd 配置说明 本文提供了企业级加密的 RADIUS 服务器配置环境搭建,供读者参考。 一. 安装 hostapd $ sudo apt-get install libnl1 libnl-dev libnl-doc $ sudo apt-get install libssl-dev $ sudo apt-get install bridge-utils $ sudo ap…

EAP-TLS/EAP-TTLS/EAP-PEAP

原文:http://blog.chinaunix.net/uid-26422163-id-3457357.html IEEE的802.1X使用了EAP认证框架,因为EAP提供了可扩展的认证方法,但是这些认证方法的安全性完全取决于具体的认证方法,比如EAP-MD5、EAP-LEAP、EAP-GTC等&#xff0c…

peaks

文章目录 语法说明示例 peaks:包含两个变量的示例函数 语法 Z peaks; Z peaks(n); Z peaks(V); Z peaks(X,Y); peaks(...) [X,Y,Z] peaks(...);说明 peaks 是从高斯分布转换和缩放得来的包含两个变量的函数,在演示 mesh、surf、pcolor、contour 等函数中很有…

Radius协议、EAP协议、EAP-MSCHAPv2、EAP-TLS、EAP-TTLS和EAP-PEAP

1. Radius协议 Radius协议是目前AAA服务中所使用的最广泛的协议,它对认证,授权以及计费的功能都提供支持。Radius服务器通过建立一个唯一的用户数据库,存储用户名,用户密码等一系列信息,接入用户通过发送自己的用户名…

使用 freeradius 搭建 EAP PEAP MS-CHAPv2 验证环境

企业级 Wi-Fi 搭建起来有点小复杂,我们知道自己家使用的 Wi-Fi 非常简单,几乎只需要配置一下热点的 SSID 和密码就可以了,实际上这是两种 Wi-Fi 认证类型。想要快速部署企业级 Wi-Fi 验证环境,首先要理解企业级 Wi-Fi 部署的一些核…

IEEE 802.1X-PEAP认证过程分析(抓包)

IEEE 802.1X-PEAP认证过程分析(抓包) 本文介绍IEEE802.1X认证的PEAP认证方式,是带有radius服务器的EAP中继认证。 IEEE802.1X认证是使用EAP报文格式在申请者和认证者之间交换信息。带有radius服务器,即认证者不对申请者发送的数据…

PEP是什么

转载 :https://www.cnblogs.com/abella/p/10056875.html PEP是什么? PEP的全称是Python Enhancement Proposals,其中Enhancement是增强改进的意思,Proposals则可译为提案或建议书,所以合起来,比较常见的翻…

企业级无线渗透之PEAP

0x00 前言 上月,受邀在C-SEC上海快递行业安全会议上做了关于无线安全威胁的议题分享。介绍了家庭级的无线网络薄弱环节及攻击方法,同时列举了乌云上因无线边界被突破,造成内网沦陷的诸多例子。后半部分,简要的介绍了企业级无线网络…

深度讲解linux中fputc()函数

字符写入fputc函数 int fputc(int char, FILE *stream) 返回值 如果没有发生错误,则返回被写入的字符。如果发生错误,则返回 EOF,并设置错误标识符。 ch 为要写入的字符,fp 为文件指针。fputc() 写入成功时返回写入的字符&…

文件操作之函数fputc(),fgetc()

目录 引言 一、fputc()与putchar()的联系 二、fgetc()与getchar()的联系 总结 引言 引用自《C程序设计-清华大学出版社 (2017)》 一、fputc()与putchar()的联系 fputc(ch,fp)是将ch输出到fp所指的文件里面putchar(ch)是将ch输出到屏幕 FILE*fpfopen("text.txt",…

文件操作:fgetc与fputc函数的使用

在成功打开文件后,我们便可以对文件进行操作,以下是字符输入函数fgetc和字符输出函数fputc的简单使用说明。 如果还不知道如何打开文件的可以看看我的另一篇文章。 点我 fputc函数的使用 当我们以读的形式打开文件的时候,便可以使用fputc函数…