精华内容
下载资源
问答
  • 最近一直比较疑惑,RISC指令集以及CISC指令集区别在哪些方面呢?趁机也就补充了相关资料,进行了一些总结。 目前CISC(复杂指令集)的代表为X86(CISC),RISC(精简指令集)的代表为ARM、MIPS(RISC)还有新兴的...

    最近一直比较疑惑,RISC指令集以及CISC指令集区别在哪些方面呢?趁机也就补充了相关资料,进行了一些总结。

    目前CISC(复杂指令集)的代表为X86(CISC),RISC(精简指令集)的代表为ARM、MIPS(RISC)还有新兴的RISCV指令集架构。

    很长一段时间,我关于处理器的相关知识,都是大学课程《微机系统原理》中的8086,甚至不涉及到x86处理器。在实际项目或者工作中,更多的却是ARM/MIPS等处理器。所以工作过程中,难免疑惑不解,张冠李戴。为什么很多基本知识在面对ARM和MIPS时不再适用,主要是因为X86属于复杂指令集系统(CISC),而ARM,MIPS属于精简指令集系统(RISC)。

    load-store体系结构

    RISC使用的是load-store结构。load-store结构的本质,在于RISC技术的CPU只处理(指逻辑,算术运算处理)寄存器中的数据。相反,X86却能够直接处理存储器中的数据。

    RISC体系架构的CPU,存储器和寄存器之间的数据交互,由专门的load和store指令负责。存储器是指内存或者Flash(NOR Flash)等可以被CPU直接寻址的存储单元。CPU要将某个地址的数据放入寄存器中,只能够使用load指令;要将寄存器中的值存放到存储器中,只能够使用store指令。

    CISC体系架构的CPU对存储器数据操作则要复杂得多。在X86下,数据的传送都是使用MOV指令。MOV指令既负责寄存器和寄存器之间数据的交互,又负责寄存器和存储器之间的数据交互。X86能够直接处理存储器中的数据,而这一点在RISC体系的CPU中是无法做到的。

    将存储器单元0x00000020中的数加上8,结果存放到该存储单元中。假设存储单元的地址0x00000020已经存放在寄存器reg中,即reg=0x00000020,下文中,(reg)表示reg地址处的值,即存储单元中的值。下面我们看看在X86下和ARM/MIPS下分别是如何操作的。

    X86能够直接处理存储器中的数据, 所以X86直接寻址到存储器地址,将存储器中的值和立即数相加,结果存放到存储器单元中。整个过程使用下面一条指令就可以完成:

    add (reg) 0x08 //直接将存储器单元(reg)中的值加0x08,结果仍然存放在该存储器单元中

    ARM/MIPS只能够处理寄存器中的数据,所以需要将该存储器中的值用load命令加载到寄存器中,然后对寄存器中的值进行算术运算,最后使用store命令将运算结果送回存储单元中:

    ld reg2 (reg) //将存储器单元(reg)中的值加载到寄存器reg2中 add reg2 0x08 //将寄存器reg2中的值加0x08,结果存到在寄存器reg2中 store (reg) reg2 //将寄存器reg2中的值放回存储器单元(reg)中

    指令集

    RISC指令长度固定。例如对于32位的ARM或者MIPS处理器,所有的指令长度都是32位。对于X86,不同指令的长度却不同。8086的指令编码长度就在1~6个字节范围内。显然,RISC处理器的平均代码长度要比CISC大。这样设计,RISC程序不是更占存储空间吗?确实是这样的,但是RISC指令固定长度,可以实现流水线(pipeline)。

    另外,RISC的指令更加简单,简洁。CISC处理器可能为某个特定的操作专门设计一条指令,而RISC处理器却需要多条指令组合来完成这个操作。最明显的例子就是x86拥有专门的进栈,出栈指令PUSH和POP,而MIPS却没有这个指令,而是使用load/store以及add等多条命令组合完成这个操作。在软件上来看,相同的程序代码,在不同的指令集上实现,最终的codesize大概率不同。

    流水线

    RISC拥有流水线。每条指令的处理过程被拆分成几个更小、更能够被流水线并行执行的单元。而CISC处理器指令的执行需要调用微代码的一个微程序。

    RISC使用固定长度的指令集也是为了实现指令的流水线执行。

    寄存器

    RISC拥有更多的通用寄存器,而CISC则都是用于特定目的的专用寄存器。下面简单的说明一下ARM,MIPS,X86的寄存器的情况,建立一个整体了解。

    X86处理器,以最基础的,也是现在很多大学课程中学习的8086为例:

    1. 8086的通用寄存器分为通用数据寄存器和通用地址寄存器。
    2. 通用数据寄存器为AX,BX,CX,DX。这4个寄存器都是16位寄存器,每个寄存器可以分为高低8位寄存器使用,例如AX可以分为AH和AL两个8位寄存器。
    3. 通用地址指针寄存器为SP,BP,SI,DI。通用地址指针寄存器只能够使用16位,用于存放存储器段内16位偏移地址值。
    4. 和通用地址指针寄存器相对应,8086还有4个16位的段寄存器,分别为CS,DS,SS,ES。4个16位的段寄存器和4个地址指针寄存器产生20位的地址,用于存储器寻址。
    5. 然后就是状态标志寄存器FR,也是16位。
    6. 最后,就是16位的指令指针寄存器IP,用于存放当前将要执行指令的16位偏移地址。相当于RISC处理器中的程序计数器PC寄存器。

    ARM处理器,以经典的ARM7处理器为例:

    1. ARM的通用寄存器分为数据寄存器和程序状态寄存器,在ARM模式下,一共有16个数据寄存器r0~r15,1个程序状态寄存器cpsr。这些寄存器都是32位。
    2. 16个数据寄存器中,r13用作堆栈指针寄存器(sp),r14用作链接返回寄存器(lr),r15用作程序计数寄存器(pc)。

    当然,ARM处理器还可能切换到其它的运行模式,寄存器的数目,使用略有不同。

    MIPS处理器,以MIPS32指令集的处理器为例,这也是最为成功和经典的MIPS指令集:

    1. MIPS32拥有32个通用寄存器\(0~\)31,都是32位。下面就一些特殊用途的,和X86以及ARM处理器有对比关系的寄存器列举出来。
    2. \(31被用作返回地址寄存器(ra,return address),\)30被用作帧指针寄存器(s8/fp),$29被用作堆栈指针寄存器(sp)。

    由上面的对比可以看出,最纯粹的RISC结构处理器MIPS拥有最多的通用寄存器,并且没有程序状态寄存器,也没有程序计数寄存器。作为吸收了RISC和CISC各自优势的ARM处理器,则拥有了程序状态寄存器cpsr,并且把通用寄存器r15当做程序计数寄存器pc。而作为CISC的8086,则除了4个通用数据寄存器外,其它的寄存器基本上都是用作专门用途的。最明显的就是SP寄存器,在ARM和MIPS中,都是使用的通用寄存器当做SP寄存器,而8086则专门设置了一个堆栈指针寄存器。

    展开全文
  • 指令集架构、微架构、处理器架构、CPU架构、内核

    万次阅读 多人点赞 2017-12-08 11:27:04
    查阅相关资料后又陆续碰到了“指令集架构”、“微架构”、“处理器架构”等词,于是就更加懵逼了。接着又陆陆续续的看了些资料,同时结合自己的一些理解,给出这些词的解释,也方便以后查阅。以下关于“指令集架构”...

         前两天看书碰到了“CPU架构”这个词,脑子里感觉有点模糊不懂。查阅相关资料后又陆续碰到了“指令集架构”、“微架构”、“处理器架构”等词,于是就更加懵逼了。接着又陆陆续续的看了些资料,同时结合自己的一些理解,给出这些词的解释,也方便以后查阅。以下关于“指令集架构”和“微架构”的英文解释摘录于维基百科(参考资料1和2):

    1. 指令集架构
       An instruction set architecture (ISA, 指令集架构) is an abstract model of a computer. It is also referred to as architecture or computer architecture. A realization of an ISA is called an implementation. An ISA permits multiple implementations that may vary in performance, physical size, and monetary cost (among other things); because the ISA serves as the interface between software and hardware. Software that has been written for an ISA can run on different implementations of the same ISA. This has enabled binary compatibility between different generations of computers to be easily achieved, and the development of computer families.
       An instruction set architecture is distinguished from a microarchitecture (微架构), which is the set of processor design techniques used, in a particular processor, to implement the instruction set. Processors with different microarchitectures can share a common instruction set. For example, the Intel Pentium and the Advanced Micro Devices Athlon implement nearly identical versions of the x86 instruction set, but have radically different internal designs.
    2. 微架构
       In electronics engineering and computer engineering, microarchitecture(微架构), also called computer organization and sometimes abbreviated as µarch or uarch, is the way a given instruction set architecture (ISA, 指令集架构), or the ways the PCB is pathed in the Processing unit, is implemented in a particular processor. A given ISA may be implemented with different microarchitectures; Implementations may vary due to different goals of a given design or due to shifts in technology.

         根据以上维基百科关于指令集架构和微架构的解释以及我自己的理解。我对指令集架构的粗略理解是:指令集架构就是设计了一堆指令(数据处理和存储操作、算术和逻辑操作以及控制流操作等,具体的就是一段一段的机器二进制编码)。由于整个计算机系统是硬件和软件的集合,最后指令的具体执行就是在计算机硬件(主要是CPU)上的二进制机器码对应着的高电平与低电平的变化。假设加指令对应着二进制机器码:10010010. 在设计完指令集架构之后,还得去具体地去实现该指令集。具体的实现就是怎么去设计CPU里面的硬件电路啥的使得CPU收到这一串二进制机器码之后就做出指令集架构规定的加指令相应的操作并得到对应的结果。指令集的硬件实现就是微架构处理器架构和CPU架构是一个比较模糊的概念,它们同时包含了指令集架构和微架构的内容。
         对于同一个指令集架构可以有不同的微架构,比如 Intel Pentium 和 Advanced Micro Devices Athlon 都采用的是x86指令集,但是它们的微架构却完全不同。不同的微架构可能是考虑到了性能、物理尺寸以及成本多方面的问题,具体可看如下摘录自维基百科的介绍:

    • An ISA specifies the behavior of machine code running on implementations of that ISA in a fashion that does not depend on the characteristics of that implementation, providing binary compatibility between implementations. This enables multiple implementations of an ISA that differ in performance, physical size, and monetary cost (among other things), but that are capable of running the same machine code, so that a lower-performance, lower-cost machine can be replaced with a higher-cost, higher-performance machine without having to replace software. It also enables the evolution of the microarchitectures of the implementations of that ISA, so that a newer, higher-performance implementation of an ISA can run software that runs on previous generations of implementations.

         指令集架构是计算机的一种抽象模型。指令集架构是具体硬件和软件之间的接口。针对同一指令集架构编写的软件可以运行在采用该指令集架构而微架构不同的机器上。由于指令集架构中的指令较多,如果直接使用机器码(也就是指令对应的二进制码)来编写软件会比较困难。这样就出现了如c++等高级语言,经过高级语言编写完程序之后再经过编译器软件将高级语言编译成对应的机器码就可以在机器上执行了,因为实际的硬件只认识机器码。
         参考资料3、4和5也是对指令集架构和微架构区别等的相关解释。参考资料6对常见的指令集架构做了相关解释和列表。
      
    ---------------------------------------------分割线(2020.09.04)------------------------------------------------------------------------

         指令集架构有很多的分类方法,主要的分类通过架构的复杂度来分类,可以分为复杂指令集计算机(complex instruction set computer, CISC) 和精简指令集计算机(reduced instruction set computer, RISC) 。复杂指令集计算机有许多特别的指令,它们中的一下很少在程序中使用。精简指令集计算机通过只实现经常被使用的指令来达到对复杂指令集计算机精简的目的,对于一些不太经常使用的操作可以通过经常使用的简单指令的组合来实现。
         复杂指令集计算机简单的理解就是提供的指令很多,也都很复杂。以 intel 的 x86 架构为代表,主要针对的操作系统是微软的 Windows 和苹果的 maxOS。另外 Linux,一些 UNIX 等,都可以运行在复杂指令集架构的微处理器。(参考与这里
         精简指令集计算机简单理解就是提供的指令很少,也都比较简单,只是一些基础的指令。以 ARM 公司的 arm 架构为代表。当前有 UNIX、Linux 以及包括 iOS、Android、Windows Phone 等在内的大多数移动操作系统运行在精简指令集的处理器上。(参考与这里

         内核,在不同领域里表达的是不同的东西,是指一个东西的核心部分,具体是什么,要看你指的是什么东西。
    参考于这里):

    • 在操作系统领域,内核指的是操作系统的核心部分。通常包括中断处理、任务管理、调度等功能,同时又有微内核、宏内核、混合内核等分类。
    • 在浏览器领域,内核一般是指浏览器的渲染引擎,也是浏览器的核心部分,比如是webkit还是IE等等。你说的UC内核,指的是浏览器领域的内核概念。
    • CPU领域,一般都叫核心,简单的理解就是CPU的核心部分,早期CPU只有一个核,但是随着技术的发展现在也出现了包含多个核的CPU。

         现在举个简单的例子,ARM公司就是一个设计指令集架构的公司,一些芯片生产公司购买ARM公司的授权来生产芯片就相当于是在生产微架构。做嵌入式工作的都知道,经常在芯片的datasheetdatasheetdatasheet里面看到说该芯片是基于ARM某某内核,这里的内核指的是指令集架构。

         参考资料:

    1. https://en.wikipedia.org/wiki/Microarchitecture#Aspects_of_microarchitecture
    2. https://en.wikipedia.org/wiki/Instruction_set_architecture#Machine_language
    3. https://www.quora.com/What-is-the-difference-between-architecture-and-microarchitecture-in-CPU
    4. https://sidkashyap.wordpress.com/2012/10/06/instruction-set-architecture-vs-micro-architecture/
    5. https://www.zhihu.com/question/23474438
    6. https://en.wikipedia.org/wiki/Comparison_of_instruction_set_architectures
    展开全文
  • 了解RISC-V指令集架构

    2021-07-25 14:41:43
    浅析RISC-V指令集架构 0. 基础知识 CPU的指令集,其实就是指令的合集,那什么是指令呢?就是你吩咐CPU去做的事情。我在这里给大家打个比方:你有一个佣人,你给他下命令做饭、洗碗、端茶、倒水……这就是指令。把...

    参考资料:
    ARM与RISC-V的恩爱情仇
    ARM与RISC-V架构的区别
    第五代精简指令集计算机RISC-V你了解多少?
    RISC-V能否“重构”芯片产业格局
    浅析RISC-V指令集架构


    0. 基础知识

    CPU的指令集,其实就是指令的合集,那什么是指令呢?就是你吩咐CPU去做的事情。我在这里给大家打个比方:你有一个佣人,你给他下命令做饭、洗碗、端茶、倒水……这就是指令。把所有的指令总结在一起就是指令集。如果指令集里面没有“洗脚”这个命令,那么你下这个命令CPU也不会执行。CPU必须要有指令集才能工作,不同的CPU有不同的指令集,基本上可以分为两种:复杂指令集CISC和精简指令集RISC。

    关于CPU的指令集架构,我们最熟悉的应该就是X86和ARM了,需要注意的是它们都不免费。Intel的X86指令集架构除了自家以外只授权给了AMD和威盛(VIA),ARM稍微好一点不过价格也是不菲,一直有“天下苦ARM久矣”的玩笑。

    那除了它们俩之外还有其他指令集架构吗?答案当然是有,接下来要介绍的RISC-V就是一个,而且还是开源免费的。

    可以说ARM 是商业授权的指令集;RISC-V 是开源的指令集。

    想详细了解指令集知识可参考此篇博文:CPU指令集科普:CISC指令集和RISC指令集ARM指令集和X86指令集对比

    1. RISC-V的起源

    RISC-V起源于2010年的美国加州大学伯克利分校(USNews世界大学排名第4),当时伯克利研究团队要研发一款CPU,上面我们说过了要研发CPU就需要有指令集,X86指令集授权严格,ARM指令集授权费用昂贵,其他指令集要么老旧要么也需要授权,在这种情况下伯克利研究团队决定从零开始设计一套全新的指令集,也就是我们今天说的RISC-V了。据说当时团队四个人仅用了3个月就完成并发布了第一版指令集。当时第一个版本只包含了不到50条指令,可以用于实现一个具备定点运算和特权模式等基本功能的处理器。

    2. RISC-V的特点

    • 完全开源,对指令集使用,RISC-V基金会不收取高额的授权费。开源采用宽松的BSD协议,企业完全自由免费使用,同时也容许企业添加自有指令集拓展而不必开放共享以实现差异化发展。

    • 简单,这也是RISC-V架构的设计哲学。在处理器领域,X86与ARM架构的发展过程也伴随了现代处理器架构技术的不断发展成熟,为了能够保持架构的向后兼容性,其不得不保留许多过时的定义,导致其指令数目多,指令冗余严重,文档数量庞大,所以操作系统或者开发应用门槛就会很高。而RISC-V架构则能完全抛弃包袱,借助计算机体系结构经过多年的发展已经成为比较成熟技术的优势,从轻上路。RISC-V的规范文档仅有145页,而“特权架构文档”的篇幅也仅为91页。

    • 模块化,RISC-V架构不仅短小精悍,而且其不同的部分还能以模块化的方式组织在一起,从而试图通过一套统一的架构满足各种不同的应用场景。用户能够灵活选择不同的模块组合,来实现自己定制化设备的需要,比如针对于低功耗嵌入式场景,用户可以选择RV32IC组合的指令集,仅使用Machine Mode(机器模式);而高性能应用操作系统场景则可以选择譬如RV32IMFDC的指令集,使用Machine Mode(机器模式)与User Mode(用户模式)两种模式。

    如果说 ARM 借助IP授权的商业模式,降低了 CPU 设计难度,让信息技术世界进入泛处理器时代,那么 RISC-V 就是以免费开放的开源指令集模式,降低了 CPU IP的设计门槛,让芯片行业进入到一个满是 CPU IP 的时代。

    3. RISC-V的现状

    RISC-V这几年一直都是比较火的话题,因为同为开源项目,很多人都把他上升到了芯片设计领域的“Linux”地位,在这两年见到的很多芯片设计商业计划书中,RISC-V也是一个频频出现的名词。

    依靠开源和免费,RISC-V 非常受大学和科研院所青睐,并有望在教学领域大展拳脚,而这又会给 RISC-V 培养源源不断的后备军。对于商业公司来说,由于 ARM 的授权费昂贵,也有较强的动力去做 RISC-V,避免被绑死在 ARM 上。

    RISC-V 目前已经有 200 多家成员,不过所有的技术或者商业模式优势,最终还是要转化成商业成功。目前所有参与 RISC-V 的企业,其实还是小公司居多,或者是大公司的小项目有涉及,还没有特别赚钱的。

    不过,RISC-V 也存在一个隐忧,那就是缺乏强有力的主导者,进而导致破碎化的问题。当年的MIPS其实也非常学院派,MIPS阵营的商业公司可以自由添加指令,比如龙芯就以MIPS为基础添加了1000多条新指令,进而形成了自己的指令集 LoongISA。这又使开发软件的时候,即便同样属于MIPS,也必须分为龙芯版和普通MIPS版。

    由于RISC-V也允许用户自己加新指令,这就有可能使RISC-V破碎化,也许未来华为、高通、谷歌开发出的 RISC-V 处理器虽然都属于 RISC-V,但却不能跑同样一套软件。毕竟完全开放与自成一脉是一对矛盾,如果无法解决这个问题,恐怕RISC-V很难成长到能与X86和ARM争雄的水平。

    4. 总结

    最后,引用步日欣老师文章的段落作为最后总结。

    关于RISC-V在国内的消息,较为引人关注的是2019年7月,阿里“平头哥”推出的“玄铁910”,属于嵌入式CPU,正是基于RISC-V指令集架构,主要应用场景将会集中在5G、AI人工智能、自动驾驶以及网络通信方面。
    当然了,对于一款新型芯片的推出,特别是CPU核心芯片,光有芯片是不够的,更要有产业的支持,形成生态。
    生态问题,也是RISC-V同其他RISC,以及CSIC在市场竞争中的焦点所在。这个焦点,也是回答RISC-V究竟面临什么样的机会,能够颠覆或者重构芯片设计行业的终极答案。
    就如同Linux,就算功能很完善了,迄今为止也没有颠覆Windows的一统PC的局面。RISC-V也是一样的。
    开源,硬件领域的开源,是RISC-V的一个大胆尝试,也是优势所在,借助开源的力量,将从CPU设计、软件开发和支持、外围接口电路,片上系统设计等各个方面促进RISC-V在产业界的推广使用。除了前面提到的“平头哥”,西部数据、英伟达、华米等也都在将RISC-V用在自己的芯片中。
    生态正在逐步形成,但任重道远。毕竟面对的竞争对手不但包括独霸天下的X86(CSIC),还有其他RISC强悍厂商(ARM),他们就如同操作系统领域中的微软,已经凭借Windows,建立了稳固的城池。如果没有划时代的产业变革,很难攻城拔寨,只能慢慢渗透。
    所以,目前的RISC-V风生水起的,还主要在一些非主流的CPU应用中,比如平头哥的“玄铁910”,属于嵌入式CPU;比如一些低成本、超低功耗应用设计等等。
    正如芯原微在招股说明书中说的那样,RISC-V、MIPS和PowerPC相继开放其指令集架构,由于三种指令集各有自己的特色和典型应用领域,三者既有一定的竞争,也可相互依存。这种前所未有的指令集开源模式,给芯片设计者带来了广泛的自由和选择的机会,除了降低芯片的设计门槛,并从一定程度上降低芯片的设计成本之外,会给半导体工业带来前所未有的发展活力,促进半导体设计领域的重大创新和发展。
    大而全有其存在的理由,小而精也有其生存空间,这就是RISC-V的未来。

    展开全文
  • ARM 处理器RISC与CISC 是什么? 0. 基础知识 0.1 什么是指令集 所谓指令集,是CPU中用来计算和控制计算机系统的一套指令的集合。指令的强弱是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。 CPU依靠...

    参考资料:
    国产CPU,指令集之殇
    RISC-V能否“重构”芯片产业格局
    ARM 和 x86 有什么区别?
    ARM 处理器:RISC与CISC 是什么?


    0. 基础知识

    0.1 什么是指令集

    所谓指令集,是CPU中用来计算和控制计算机系统的一套指令的集合。指令的强弱是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。

    指令集是一个比较模糊和虚化的概念,我们的看到的指令集是一个指令列表,几百种CPU指令命令,而CPU看到的指令集则是一连串的“01010101”电信号,每种电信号代表一种运算命令。而CPU的设计当中,就必须固化好各种指令对应的芯片电路模块

    CPU依靠指令计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。与其他硬件电路相配合,决定的是这一款CPU的生态系统。因此,指令集搭建的是一个桥梁,是软硬件之间沟通的桥梁,简单来说,软件通过指令集和硬件讲话。因此,指令集对形成生态至关重要,从这个意义上讲,不同的CPU指令集决定了这款CPU设计的复杂程度

    从现阶段的主流体系结构讲,指令集可分为复杂指令集(CISC, complex instruction set computer)和精简指令集(RISC, reduced instruction set computer)两部分。简单来讲,RISC功能简洁,代表着简洁的CPU设计,CISC功能完备,代表着复杂的CPU设计。RISC的简洁代表着效率,CISC的功能完备代表着臃肿。这里引用步日欣老师文章中的一段话:

    CPU的指令,就如同盖房子的砖,如果都是小块的标准砖头,也能盖起各种不同的房子,这就是RISC;如果除了标准砖头,还设计了很多的砖瓦结构件,适用于拐角、吊梁等,这就是CISC。不同的模式,都能盖起房子,但是效率却大不一样,RISC的标准砖头,小平房可以盖,摩天大楼也可以盖,底层的原材料很简单,都是标准化的砖头;CISC的各种复杂的结构件,对于盖一种房子的时候效率确实高,吊起结构件随便一拼装就ok,但是如果要盖的房子种类多了,就需要定义更多更复杂的结构件,结构件的管理就会越来越复杂,而且在建设某种常见建筑的时候,大部分特殊的结构架是闲置不用的,大大影响了施工效率。
    基于CISC模式下的CPU设计,在各种新需求下,堆叠的功能越来越复杂,芯片设计难度也越来越高,效率低下,因此就出现了RISC精简指令集的概念。

    • 注:指令集架构ISA,Instruction Set Architecture)也可简单地理解为指令集。

    0.2 RISC指令集的由来

    一开始的处理器都是CISC架构,随着时间演进,有越来越多的指令集加入。由于当时编译器的技术并不成熟,程序都会直接以机器码或是汇编语言写成,为了减少程序设计师的设计时间,逐渐开发出单一指令,复杂操作的程序码,设计师只需写下简单的指令,再交由CPU去执行。但是后来有人发现,整个指令集中,只有约20%的指令常常会被使用到,约占整个程序的80%;剩余80%的指令,只占整个程序的20%。于是1979年美国加州大学伯克莱分校的David Patterson教授提出了RISC的想法,主张硬件应该专心加速常用的指令,较为复杂的指令则利用常用的指令去组合。

    这里也提供一个小小的概念,CISC是在RISC出现之后才出现的相对名词,并不是从一开始就有CISC、RISC这两种处理器架构。

    1. CISC复杂指令集

    1.1 CISC体系的指令特征

    1. 使用微代码。指令集可以直接在微代码存储器(比主存储器的速度快很多)里执行,新设计的处理器,只需增加较少的电晶体就可以执行同样的指令集,也可以很快地编写新的指令集程序。

    2. 庞大的指令集。可以减少编程所需要的代码行数,减轻程序员的负担。高级语言对应的指令集:包括双运算元格式、寄存器到寄存器、寄存器到存储器以及存储器到寄存器的指令。

    1.2 CISC体系的优缺点

    1. 优点:能够有效缩短新指令的微代码设计时间,允许设计师实现 CISC 体系机器的向上兼容。新的系统可以使用一个包含早期系统的指令超集合,也就可以使用较早电脑上使用的相同软件。另外微程序指令的格式与高级语言相匹配,因而编译器并不一定要重新编写。

    2. 缺点:指令集以及芯片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。

    1.3 CISC复杂指令集阵营

    Intel的X86。

    2. RISC精简指令集

    2.1 RISC体系的指令特征

    1. 精简指令集:包含了简单、基本的指令,通过这些简单、基本的指令,就可以组合成复杂指令。

    2. 同样长度的指令:每条指令的长度都是相同的,可以在一个单独操作里完成。

    3. 单机器周期指令:大多数的指令都可以在一个机器周期里完成,并且允许处理器在同一时间内执行一系列的指令。

    2.2 RISC体系的优缺点

    1. 优点:在使用相同的芯片技术和相同运行时钟下,RISC 系统的运行速度将是 CISC 的2~4倍。由于RISC处理器的指令集是精简的,它的内存管理单元、浮点单元等都能设计在同一块芯片上。RISC 处理器比相对应的 CISC 处理器设计更简单,所需要的时间将变得更短,并可以比CISC处理器应用更多先进的技术,开发更快的下一代处理器。

    2. 缺点:多指令的操作使得程序开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外就是RISC体系的处理器需要更快的存储器,这通常都集成于处理器内部,就是L1 Cache(一级缓存)。

    2.3 RISC精简指令集阵营

    ARM、RISC-V、MIPS。

    3. 对比CISC和RISC

    1. 指令的形成:CISC 因指令复杂,故采用微指令码控制单元的设计,而RISC的指令90%是由硬件直接完成,只有10%的指令是由软件以组合的方式完成,因此指令执行时间上RISC较短,但RISC所须ROM空间相对的比较大,至于RAM使用大小应该与程序的应用比较有关系。

    2. 寻址模式:CISC的需要较多的寻址模式,而RISC只有少数的寻址模式,因此CPU在计算存储器有效位址时,CISC占用的汇流排周期较多。

    3. 指令的执行:CISC指令的格式长短不一,执行时的周期次数也不统一,而RISC结构刚好相反,故适合采用流水线处理架构的设计,进而可以达到平均一周期完成一指令的方向努力。显然的,在设计上RISC较CISC简单,同时因为CISC的执行步骤过多,闲置的单元电路等待时间增长,不利于平行处理的设计,所以就效能而言RISC较CISC还是占了上风,但RISC因指令精简化后造成应用程式码变大,需要较大的存储器空间,且存在指令种类较多等等的缺点。

    展开全文
  • 大家好,我是痞子衡,是正经搞技术的痞子。本系列痞子衡给大家介绍的是RISC-V指令集架构微控制器相关知识...在RISC-V指令集架构之前,伯克利分校已经有了四代RISC指令集架构的设计经验,第一代RISC指令集早在1981年...
  • (4)处理器架构即微结构,指令集架构决定微结构的一部分硬件逻辑设计(解码逻辑和执行单元) (5)指令集:顾名思义是一组指令的集合; (6)指令集架构:区分CPU 的主要标准,CPU 灵魂,有时简称称为“处理器...
  • 一种全新的指令集架构RISC-V

    万次阅读 多人点赞 2018-09-02 16:32:10
    RISC-V指令集架构介绍 通用寄存器模型 RISC-V特权级 RISC-V指令集描述 RISC-V总结 RISC-V指令集架构介绍 RISC-V(英文发音为"risk-five")是一个全新的指令集架构,该架构最初由美国加州大学伯克利...
  • 本文介绍了RV32I的基本指令格式及内容,为之后进行处理器的实现打下了基础。
  • Amber核心与ARM v2a指令集架构(ISA)完全兼容,因此受GNU工具集支持。 支持这个旧版本的ARM指令集,因为它仍然得到GNU工具链的完全支持,并且不受专利保护,因此可以在没有ARM许可的情况下实现。 Amber项目提供了...
  • 处理器指令集架构

    千次阅读 2019-04-27 17:49:35
    现在真是一个IT技术大发展的时代,不断的有新概念...首先了解指令集架构。 目前已存的指令集架构有4种: 复杂指令集运算(Complex Instruction Set Computing,CISC);精简指令集运算(Reduced Instruction Set Comp...
  • RISC(Reduced Instruction Set Computer,精简指令集计算机) CISC(复杂指令集) 即 冯·诺依曼结构(普林斯顿结构),指令与数据存储在同一存储器中; 采用CISC结构的处理器,指令线与数据线分时复用;...
  • RISC-V指令集架构特点及其总结

    千次阅读 2020-04-05 20:42:30
    本文章对E203开源核的Decode模块进行总结。 一、 指令总结 六种基本指令格式,分别是: 用于寄存器-寄存器操作的 R 类型指令 ...RISC-V的指令有几个有点: 指令只有六种格式,并且所有的指令都是 32...
  • 中央处理单元架构具有从“指令集架构”到其设计工作的能力。CPU的架构设计是RISC(精简指令集计算)和CISC(复杂指令集计算)。CISC能够在一个指令集中执行寻址模式或多步操作。这是CPU的设计,其中一条指令执行许多底层...
  • 龙芯中科4月15日发布消息,龙芯自主指令系统架构(Loongson Architecture,以下简称龙芯架构或LoongArch)的基础架构通过国内第三方知名知识产权评估机构的评估,并在...
  • 一开始的处理器都是CISC架构,随着时间演进,有越来越多的指令集加入。由于当时编译器的技术并不纯熟,程序都会直接以机器码或是汇编语言写成,为了减少程序设计师的设计时间,逐渐开发出单一指令,复杂操作的程序码...
  • 基于RISC-V架构的开源处理器及SoC研究综述(一)

    万次阅读 多人点赞 2017-02-12 22:24:56
    V是一种新的指令集架构,发布以来得到了大量关注,在描述了RISC-V的产生背景、基本设计的基础上,简单比较了其与现有的开源指令集架构、商业指令集架构的优劣,随后详细介绍了现有的采用RISC-V架构的开源处理器、...
  • RISC-V是加州大学伯克利分校(University of California at Berkeley,以下简称UCB)设计并发布的一种开源指令集架构,其目标是成为指令集架构领域的Linux,应用覆盖IoT(Internet of Things)设备、桌面计算机、高...
  • V是一种新的指令集架构,发布以来得到了大量关注,在描述了RISC-V的产生背景、基本设计的基础上,简单比较了其与现有的开源指令集架构、商业指令集架构的优劣,随后详细介绍了现有的采用RISC-V架构的开源处理器、...
  • V是一种新的指令集架构,发布以来得到了大量关注,在描述了RISC-V的产生背景、基本设计的基础上,简单比较了其与现有的开源指令集架构、商业指令集架构的优劣,随后详细介绍了现有的采用RISC-V架构的开源处理器、...
  • X86架构、ARM架构、Power PC架构 ...ARM架构是基于精简指令集RISC)的处理器架构。 Power PC架构也是基于精简指令集RISC)的处理器架构。 像MIPS架构也是RISC处理器架构。 x86处理器、ARM处理器、Po...
  • 指令集架构标准 RISC与CISC RISC(全称Reduced Instruction Set Computer,精简指令系统计算机)则是一套优化过的指令架构 更像是 指令集架构标准,并不是实现。 指令集架构实现 体系结构 汇编指令集 x86 x86_64 ...
  • 文章目录SIMD指令集架构类型CISC的产生、发展和现状RISC的产生、发展和现状IA-64(EPIC)产生、发展和现状RISC与 IA-64(EPIC)相比指令集介绍一、X86**二、X64****三、ARM**四、SSE指令集五、SSE2指令集六、SSE3指令...
  • 他的主要功能是解释计算机指令(指令是指示计算机执行某种操作的命令。它由一串二进制数码组成)以及处理计算机软件中的数据。  微处理器由一片或少数几片大规模集成电路组成的中央处理器。  CP...
  • 在AI和IoT即将爆发的前夕,这个小小的计算机指令集架构(ISA)就像一颗小石子,必将在新的计算时代掀起自由和开放的创新浪潮。而对多年来一直寻求突破的中国芯片产业来说,RISC-V能否成为我们实现自主、可控、创新和...
  • 前言 没钱没设备还是别学了,我还以为买了书会有用,看了作者的公众号才知道,买开发板送书,你可以去...risk5 指令集架构简介 1.模块化的指令子集 risk5的每个模块用一个字母表示,最基本的指令集模块是 I ——基本整
  • 指令集可以直接在微代码存储器(比主存储器的速度快很多)里执行,新设计的处理器,只需增加较少的电晶体就可以执行同样的指令集,也可以很快地编写新的指令集程序。 2) 庞大的指令集。可以减少编程所需要的代码行数...
  • 今天笔者就来谈谈处理器架构指令集。 我们知道一台手机最重要的就是处理器,也就是处理器,那么什么是处理器呢? 处理器就是一堆数字电路(架构)以高低电平的各种组合实现了各种基本的运算(指令)。 接下来...
  • 点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两...
  • 处理器架构 指令集

    2020-03-19 12:23:59
    处理器完成一条指令过程 取指令指令译码和执行指令 时钟周期 机器周期 指令周期 程序 我们在编写程序的时候其实可以对程序的代码划分为两个部分, 一部分是程序编写完成后就不再需要对其进行修改了的(也就是逻辑...
  • 一、实现功能 实现了部分RV32I指令集中的部分指令类型,如下表 具体指令如下: 实现了单周期CPU和五级流水线。其中,五级流水线为顺序读取、顺序放回;跳转指令可以冲刷流水线...占用资源较多,微架构面积较大。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,215
精华内容 2,486
关键字:

属于risc指令集架构的处理器