• CISC和RISC的比较


    指令系统的发展朝向两种截然不同的方向,一种是增强原有指令的功能,设置更为复杂的新指令实现软件功能的硬化,这类机器称为复杂指令系统计算机(CISC),典型的有采用X86架构的计算机;另一种是减少指令种类和简化指令功能,提高指令的执行速度,这类机器称为精简指令系统计算机(RISC),典型的是ARM、MIPS架构的计算机。

    指令系统的发展朝向两种截然不同的方向,一种是增强原有指令的功能,设置更为复杂的新指令实现软件功能的硬化,这类机器称为复杂指令系统计算机(CISC),典型的有采用X86架构的计算机;另一种是减少指令种类和简化指令功能,提高指令的执行速度,这类机器称为精简指令系统计算机(RISC),典型的是ARM、MIPS架构的计算机。

    CISC(Complex Instruction Set Computer)

    CISC的主要特点有:

    1)指令系统复杂庞大,指令数目一般为200条以上。

    2)指令的长度不固定,指令格式多,寻址方式多。

    3)可以访存的指令不受限制。

    4)各种指令使用频度相差很大。

    5)各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成。

    6)控制器大多数采用微程序控制。

    7)难以用优化编译生成高效的目标代码程序。

    如此庞大的指令系统,对指令的设计提出了极高的要求,研制周期变得很长。后来人们发现,一味追求指令系统的复杂和完备程度不是提高计算机性能的唯一途径。在对传统CISC指令系统的测试表明,各种指令的使用频率相差悬殊,大概只有20%的比较简单的指令被反复使用,约占整个程序的80%;而有80%左右的指令则很少使用,约占整个程序的20%。从这一事实出发,人们开始了对指令系统合理性的研究,于是RISC随之诞生。

    RISC(Reduced Instruction Set Computer)

    RISC的主要特点有:

    1)选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现。

    2)指令长度固定,指令格式种类少,寻址方式种类少。

    3)只有Load/Store(取数/存数)指令访存,其余指令的操作都在寄存器之间进行。

    4)CPU中通用寄存器数量相当多。

    5)RISC一定采用指令流水线技术,大部分指令在一个时钟周期内完成。

    6)以硬布线控制为主,不用或少用微程序控制。

    7)特别重视编译优化工作,以减少程序执行时间。

    值得注意的是,从指令系统兼容性看,CISC大多能实现软件兼容,即高档机包含了低档机的全部指令,并可加以扩充。但RISC简化了指令系统,指令条数少,格式也不同于老机器,因此大多数RISC机不能与老机器兼容。由于RISC具有更强的实用性,故应该是未来处理器的发展方向。但事实上,当今时代Intel几乎一统江湖,且早期很多软件都是根据CISC设计的,单纯的RISC将无法兼容。此外,现代CISC结构的CPU已经融合了很多RISC的成分,其性能差距已经越来越小。复杂指令CSC可以提供更多的功能,这是程序设计所需要的。

    比较

    1)RISC更能充分利用VLSI芯片的面积。CISC的控制器大多采用微程序控制,其控制存储器在CPU芯片内所占的面积为50%以上,而RISC控制器采用组合逻辑控制,其硬布线逻辑只占CPU芯片面积的10%左右。

    2)RISC更能提高运算速度。RISC的指令数、寻址方式和指令格式种类少,又设有多个通用寄存器,采用流水线技术,所以运算速度更快,大多数指令在一个时钟周期内完成。

    3)RISC便于设计,可降低成本,提高可靠性。RISC指令系统简单,故机器设计周期短;其逻辑简单,故可靠性高。

    4)RISC有利于编译程序代码优化。RISC指令类型少,寻址方式少,使编译程序容易选择更有效的指令和寻址方式,并适当地调整指令顺序,使得代码执行更高效化。

    对比项目\类别CISCRISC
    指令系统复杂、庞大简单、精简
    指令字长一般大于200条,一般小于100条
    指令数目不固定定长
    指令流水线可以通过一定的方式实现必须实现
    目标代码难以优化编译生成高效的目标代码程序采用优化编译程序,生成的代码较为高效
    控制方式绝大多数微程序控制绝大多数采用组合逻辑控制
    可访存指令不加限制只有load/store指令
    各种指令执行时间相差较大多数在一个周期内完成
    各指令使用频度相差很大都比较常用
    通用寄存器数量较少

    完!

  • 相关阅读:
    100万级连接,爱奇艺WebSocket网关如何架构
    CocosCreator3.8研究笔记(四)CocosCreator 脚本说明及使用(上)
    day12-Servlet02
    快速入门JWT+Redis实现Token验证
    【20221114】【每日一题】子集
    【RocketMQ专题】快速实战及集群架构原理详解
    微信/QQ/TIM防撤回补丁
    GoogleNet论文精读
    c++——内存管理
    数据结构---串(整个部分)
  • 原文地址:https://blog.csdn.net/qusikao/article/details/130848415