不超过是小于等于吗为什么,RISC-V学习笔记

张强律师 法律头条 2022-12-09 18:38:35

导读:不超过小于等于为什么?RISC-V学习笔记1.RISC-V的概述和历史。国产处理器芯片起步较晚。自2013年以来,集成电路的年进口额超过2000亿美元。RISC-V和AI(人工智能)芯片是中国最有

不超过小于等于为什么?RISC-V学习笔记

1.RISC-V的概述和历史。

国产处理器芯片起步较晚。自2013年以来,集成电路的年进口额超过2000亿美元。RISC-V和AI(人工智能)芯片是中国最有前景的领域之一。RISC-V用于对生态依赖不大的嵌入式系统或新兴的IoT(物联网)、边缘计算和人工智能领域,但RISC-V得到了业界和社区的广泛支持。同时很多企业也开始关注RISC-V,所以RISC-V。

CPU的指令集架构(ISA)是CPU支持的所有指令的字节级编码,它在计算机软件和硬件之间搭建了一座桥梁。不同的CPU家族,比如86,PowerPC,ARM,都有不同的isa。RISC-VISA是开源的,更确切的说它的指令集规范和标准都是开源的。

RISC-V源自加州大学伯克利分校。2010年夏天,Krste Asanovic教授带领他的两个学生Andrew Waterman和Yunsup Lee开始了一个为期3个月的项目,目标是针对x86和ARM指令集架构需要IP授权的问题,开发一个简化和开放的指令集架构。RISC-V基金会成立于2015年,是一家非营利组织。基金会董事会最初由七个单位组成:Bluespec、Google、Microsemi、NVIDIA、NXP、UC Berkeley和Western Digital。现任主席是Krste Asanovi教授。

现在有更多的成员单位:

为基金会的核心芯片架构建立标准和生态。这些标准是开放的,可以免费下载。该基金会拥有1000多名成员,包括高通、恩智浦、阿里巴巴和华为。RISC-V基金会成员可以使用RISC-V商标。RISC-V指令集架构由开源BSD授权,任何企业、高校和个人都可以根据RISC-V架构指南设计自己的CPU。秉承开放、中立的原则,RISC-V基金会总部从美国迁至瑞士,并于2020年3月在瑞士完成注册,更名为/[/k2/。近日,基金会CEO卡莉斯塔·雷德蒙为Chang RISC-V撰写了RISC-V Catalyst,文章指出RISC-V标准是免费开放的,任何实体都无法控制RISC-V技术。企业、学术界和机构可以在RISC-V指令集架构上自由创新,共同推动前沿计算技术的快速发展。

自从RISC-V架构诞生以来,市场上已经出现了几十个版本的RISC-V内核和SoC芯片,其中一些是开源免费的,而商业公司开发的RISC-V处理器内核和平台则需要商业授权。一些商业公司开发RISC-V内核供内部使用,但也可以开源运行。西部数据的SweRV架构(RV32IMC)是RISC-V核处理器的典型代表。它是一个32位顺序指令体系结构,具有双向超标量设计和9级流水线。采用28 nm制程工艺实现,运行频率高达1.8 GHz,可提供4.9 CoreMark/MHz的性能。比ARM略高的Cortex A15已经用在西部数据的SSD和HDD控制器上。SweRV项目是一个开源项目(芯片联盟)。典型的开源RISC-V内核有Rocket Core,这是加州大学伯克利分校开发的经典RV64设计。伯克利还开发了BOOM Core,与Rocket Core不同的是,它面向更高的性能。苏黎世理工大学开发的Zero-riscy是经典的RV32设计。苏黎世工业大学还开发了另一款RISC-V R15CY核,可配置为RV32E,针对超低功耗、超小芯片面积的应用场景。RISC-V Core-Clifford Wolf开发的Pico RV32专注于面积和CPU频率的优化。

开源RISC-V内核非常适合研究和教学,但对于商用芯片设计还有很多工作要做。SiFive(美国网络防御技术)由Yunsup Lee创立,他也是RISC-V的创始人之一,2017年,SiFive公司发布了首个RISC-V core SOC平台家族,以及相关配套软件和开发板。在这些芯片中,有采用28 nm制造工艺和Linux操作系统的64位多核CPUU500,也有采用180 nm制造工艺的多外设低成本IOT处理器核心E300。

2.RISC-V指令集功能

RISC-V指令集是基于精简指令集计算原理的开放式指令集架构(ISA),而RISC-V是基于指令集不断发展和成熟的全新指令。RISC-V ISA可以免费使用,允许任何人设计、制造和销售RISC-V芯片和软件。

RISC-V(读作“risk-five”)是一种新的指令集架构(ISA)。它最初用于支持计算机体系结构研究和教学,但现在我们希望它也能成为工业实现的标准、免费和开放的体系结构。RISC-VRISC-V的官方定义包括:

一个完全开放的 ISA,能够自由地提供给学术界和工业界使用。一个真正的 ISA,能够适合直接在硬件上实现,而不仅仅是适用于模拟或者二进制 翻译。一个避免对某一种微体系结构风格(例如微编码、按序、去耦合、乱序等)或者实 现技术(例如全定制、ASIC、FPGA)“过度体系结构化(over-architecting)”的 ISA, 但是也能够非常高效地利用任何一种技术实现。包含一个小的基本整数 ISA(可以作为一个定制的加速器的基础或者作为教学用途) 和多个可选的标准扩展的 ISA,可以支持通用的软件开发。支持修订的 2008 IEEE-754浮点标准[10]。ISA 支持丰富的用户级 ISA 扩展和各种特殊的变种。对应用程序、操作系统内核、硬件实现的32 位、64 位地址空间变种。ISA 支持高度并行的多核、众核实现,包括异构多处理器等。可选的变长指令,以支持扩展可用的指令编码空间、支持一个可选的密集指令编码, 以提高性能、静态代码大小和能耗效率。一个可完全虚拟化的 ISA,以简化虚拟机监督管理器(Hypervisor)的开发。ISA 支持新的管理员级(supervisor-level)和虚拟机监督管理级(hypervisor-level) ISA 设计。

3.关于RISC-V

RISC-V这个名字代表了UC Berkeley大学设计的第五代majorRISC ISAs(前四个分别是RISC-I关于为什么应该有RISC-V,发明者是这样说的:,RISC-II[11],SOAR(1)完全开源。对于RISC-V指令集的使用,RISC-V基金会并不收取高额的许可费。通过采用开源、宽松的BSD协议,企业可以完全免费、自由使用,同时允许企业添加自己的指令集,无需开放共享,实现差异化发展。和SPUR[14])。罗马数字“v”也意味着“变体”和“向量”,以支持各种架构研究,包括各种数据并行加速器,这也是本次ISA设计的明确目标。

4.发明者为什么要开发新的ISA?

[18]

我对在硬件上实现一些研究思路特别感兴趣(自该规范第一版发布以来,我们已经完成了11种不同的RISC-V硅片的制造),并在课堂上为学生们提供了真实的实现(在伯克利,RTLRISC-V处理器的设计代码已经在许多本科和研究生课程中使用)。在我们目前的研究中,由于传统晶体管的缩小带来的能量消耗,我们对特殊和异质加速器特别感兴趣。我们需要一个高度灵活和可扩展的基础ISA,在此基础上我们可以建立自己的研究。

我们总是被问到这个问题“为什么我们应该开发一个新的ISA?”。使用现有商业ISA的明显优势是它已经拥有丰富和广泛的支持。

软件生态系统包括开发工具和便携式应用程序,可用于研究和教学。的其他好处包括大量的文档和教程示例。然而,我们的经验证明,在科研和教学中使用商业指令集在实践中几乎没有什么好处,它也掩盖不了它的缺点:

l商业isa都是私有的。除了SPARC V8(这是一个开放的IEEE标准[1]),绝大多数ISA所有者都非常小心地保护自己的知识产权,不欢迎竞争的自由实现。这对于仅使用软件模拟器的学术研究和教学来说不是问题,但对于想要分享真实硬件实现的研究小组来说是个大问题。对于那些被迫只信任少数商业ISA实现并且不允许创建自己的洁净室实现的企业来说,这也是一个大问题。我们不能保证RISC-V的所有实现都不侵犯第三方专利,但是我们可以保证我们永远不会起诉RISC-V的一个实现者。

商业 ISA 仅仅在某个市场领域比较流行。当书写此文档时,最显而易 见的例子就是 ARM 体系结构在服务器领域并没有得到很好的支持, 而 Intel x86 体系结构(或者几乎任何一种其他的体系结构)在移动领 域并没有得到很好的支持,虽然 Intel 和 ARM 正在试图进入对方的市 场领域。另外一个例子是 ARC 和 Tensilica,它们提供了可扩展的内核, 但是只关注嵌入式市场。这种市场的划分,使得支持某种特定商业 ISA 获得的好处大大削弱,因为事实上软件生态系统只存在于某个领 域,到了别的领域,必须重新构建。商业 ISA 此起彼伏。以前基于商业 ISA 构建的研究基础设施,并不流 行(SPARC、MIPS),甚至不再生产(Alpha)。这对于一个活跃的软件 生态系统来说是一个大损失,一些围绕 ISA 和支持工具的知识产权问 题,也使得感兴趣的第三方难以继续支持这个 ISA。一个开放的 ISA 也可能失去流行性,但是任何感兴趣的人,都可以继续使用它并研发 相应的生态系统。流行的商业 ISA 是复杂的。占统治地位的 ISA(x86 和 ARM)若要支 持常用软件栈和操作系统,那么其硬件实现都非常复杂。更糟糕的是, 几乎所有的复杂性都来自于糟糕的、或者至少是过时的ISA设计考虑, 而不是那些真正提高效率的特性。仅靠商业 ISA 并不足以运行应用程序。即使我们努力实现了一个商业 ISA,对于运行一个现有的应用程序来说,仍然是不够的。绝大多数 应用程序需要一个完整的 ABI(application binary interface)才能运行, 而不仅仅是用户级 ISA。绝大多数 ABI 依赖于库(libraries),而库又 依赖于操作系统支持。为了运行一个已有的操作系统,需要实现管理 员级 ISA、OS 需要的设备接口。这些通常并没有很好的规范,而在实 现上比用户级 ISA 具有更大的复杂性。流行的商业 ISA 不是为可扩展性设计的。占统治地位的商业 ISA 并没 有为可扩展性而进行特殊的设计,结果就是,随着后续指令集不断地 增长,指令编码的复杂度大幅度增加。而类似 Tensilica(被 Cadence 公司收购)、ARC(被 Synopsys 公司收购)这样的公司,它们围绕 可扩展性构建了 ISA 和工具链(toolchain),但是它们瞄准的是嵌入 式应用而不是通用计算系统。

修改后的业务ISA实际上是一个新的ISA。我们的主要目标之一是支持架构研究,包括主要的ISA扩展。即使很小的扩展也会削弱使用标准ISA的好处,因为必须修改编译器,并且必须从源代码重新编译应用程序才能利用这些扩展。引入了新架构状态的更大扩展,并且需要修改操作系统。最终,修改后的业务ISA成为新的ISA,但是它必须承担所有基本ISA留下的负担。我们坚信ISA是整个计算系统中最重要的接口,没有理由把这么重要的接口私有。占主导地位的商业国际审计准则是基于具有30多年历史的指令集。软件开发人员应该能够找到一个开放的标准硬件目标机,商业处理器设计人员应该在实现的质量上进行竞争。我们不是第一个提出硬件实现的开放ISA设计的人。我们还考虑了其他现有的开放式ISA设计,其中OpenRISC架构[17]最接近我们的目标。

出于几个技术原因,没有采用OpenRISC ISA:

OpenRISC 有条件码(condition code)和分支延迟槽(branch delay slot), 这对于更高性能的实现来说,变得更为复杂。OpenRISC 使用了 32 位定长指令编码和 16 位立即数,阻碍了更密集 的指令编码,并对后续 ISA 扩展限制了空间。OpenRISC 并不支持 2008 修订的 IEEE-754 浮点标准。

我们开始的时候,64位OpenRISC设计还没有完成。从零开始,我们可以设计出满足我们所有需求的ISA。当然,这要比我们一开始预期的付出更多的努力。现在,我们投入了大量的精力构建RISC-V ISA基础架构,包括文档、编译器工具链、操作系统移植、参考ISA模拟器、FPGA实现、高效ASIC实现、架构测试套件、教材等。自从本文档的上一版以来,学术界和工业界都采用了这个RISC-V ISA,我们还创建了一个非营利性的RISC-V基金会来保护和推广这个标准。RISC-V基金会的网站在http://riscv.org,里面包含了基金会成员的最新信息以及各种使用RISC-V的开源项目

5.RISC-V指令集的优势

[27]

(2)架构简单。RISC-V集。在处理器领域,stream的架构是x8和ARM架构。x86 ARM架构的发展伴随着现代处理器架构技术的不断发展和成熟。但是作为商业架构,为了保持架构的向后兼容性,不得不保留许多过时的定义,导致指令数量庞大,指令冗余严重,文档数量巨大。所以开发新的操作系统,或者直接在这些架构上开发应用,是非常高的。而RISC-V架构则完全抛弃了包袱。借助计算机架构,经过多年的发展,已经成为成熟技术的优势,所以很容易上路。RISC-V只有40多条基本指令集,加上其他模块化扩展指令,总共只有几十条指令。RISC-V的规范文档只有145页,而特权架构文档的长度只有91页。

(3)易于移植操作系统。现代操作系统已经将特权指令从用户级指令中分离出来。特权在今天只能被操作系统调用,而用户级指令只能在用户模式下调用,以保证操作系统的稳定性。RISC-V提供了特权指令和用户级指令,以及RISC-V特权指令规范和RISC-V用户级指令规范的详细信息,非常方便开发者将Linux和UNIX系统移植到RISC-V平台。

(4)模块化设计。RISC-V架构不仅短小精悍,而且其不同的部分可以通过模块化的方式编织在一起,从而试图通过统一的架构来满足各种应用场景。用户可以灵活选择不同的模块组合,满足自己定制设备的需求。比如对于小面积低功耗的嵌入式场景,用户可以选择RV32IC组合的指令集,只使用机器模式;在高性能应用操作系统场景下,可以选择RV32IMFDC指令集,使用机器模式和用户模式。

(5)完整的工具链。对于设计CPU来说,工具链是软件开发人员与CPU交互的窗口。没有工具链,就要求软件开发者开发软件,甚至软件开发者也无法让CPU工作。在CPU设计中,工具链的开发是一项庞大的工作。如果用RISC-V设计芯片,芯片设计公司就不用再担心工具链问题,只需要专注于芯片设计。RISC-V社区已经提供了完整的工具链,并且RISC-V基金会持续维护着这个工具链。目前RISC-V的支持已经合并到各大工具中,比如GCC,一个用于编辑和评估的工具链,QEMU等等。

6.RISC-V的特征

1).没有直接的减法

只有立即加法指令(addi),没有立即减法指令(苏比)。减法呢?无论是数学上还是程序上,x-y都等价于x+(-y),也就是说,减法可以变成加法,被减数可以变成负数再加上减法,达到和减法一样的功能。RISC-V只提供立即加,不提供立即减,就是基于这个原理。如果需要立即减法,就要麻烦编译器把这个立即数转换成负数,然后继续用加法。这就是RISC-V将立即数视为有符号数的原因。

2).x0寄存器简化了指令集

x0寄存器的引入,使得许多特殊指令只需在普通指令中加入x0作为操作数即可求解,大大减少了指令数量,简化了处理器的解码电路。

3).32位常数

在之前的ARM处理器中,不能用立即数表示的常数存储在常数池中,然后由PC相关的LDR指令加载到寄存器中。RISC-V的常数完全由指令拼接,不需要Load指令。使用Load指令需要额外的访问周期。RISC-V一条指令可以表示一个12位有符号常数。超过12位需要两条指令来合成。其中一个指示是吕。lui指令加载常量的高20位,低12位可通过ADI指令相加。这个过程需要编译器计算出立即数是什么,因为ADI指令执行有符号加法,在参与计算之前,12位立即数将被符号扩展为32位有符号数。ARM的常量加载需要8个字节,一个指令加一个常量;RISC-V的恒定加载也需要8个字节和两条指令,占用相同的程序空间。

4).仅小于且大于或等于

RISC-V的比较跳转指令只有blt和bge,也就是只有小于和大于等于。但是,还需要大于或小于或等于。RISC-V用一种非常巧妙的方式,用两条指令实现了四条指令的工作。通过替换blt的两个操作数,得到bgt(大于跳转),通过替换bge的两个操作数,得到ble(小于等于跳转)。

5).让编译器做更多的工作

RISC的理解是处理器尽可能少做,编译器尽可能多做,非常合理。毕竟编制的数量远远小于执行的数量。以上几点提到了很多编译器要做的工作。比如B型是比较跳转指令的格式,J型是长跳转或者函数调用指令的格式。请注意它们的立即数的顺序,并将此处填充的立即数留给链接器。这样,偏移地址立即被释放,以简化处理器的设计,但这显然增加了编译器的工作。

6).其他省略的说明

省略了很多常用的指令,比如nop、move、not、neg等。,但所有这些功能都是用其他指令等效实现的。例如,not指令用xorird,rs,-1实现。

7.RISC-V的x0寄存器

Linux有两个特殊的设备:/dev/zero和/dev/。可以从/dev/zero连续读取0,写入dev/的任何东西都被丢弃。如果您想要创建一个带有零的文件,请从dev/zero中复制它,如

要丢弃一些输出,请将其重定向到/dev/。RISC-V的x0寄存器相当于硬件版本中/dev/zero和/dev/的组合。从0读取的永远是0,写入x0的永远被丢弃。所以x0提供了两个功能:一个是提供常数0,可以说是软件编程中最常用的常数;另一个是提供一个可以丢弃结果的地方。有了x0寄存器,很多原本需要单独指令的操作,可以通过在普通指令前加x0来实现。

(1)nop空指令。RISC-V不提供nop指令,而是使用addi x0,x0,0实现空指令。这个addi使用x0作为目标内存,会丢弃结果,所以这个指令不会对程序状态产生任何影响,完全等同于空指令,不需要单独的空指令。

(2)neg负指令,RISC-V由sub rd,x0,rs实现,x0-rs等价于0-rs,相当于-rs。有了x0,你可以用更普通的减法指令来实现负指令。

(3)j跳转指令,RISC-V没有单独的跳转指令,只有jal跳转链接指令。在跳转之前,总是把下一条指令的地址复制到寄存器,但是如果把x0作为jal的操作寄存器,也就是把下一条指令的地址复制到x0,那么效果就相当于J跳转指令,因为任何写入x0的值都会被丢弃。

(4)beqz等于零跳转指令和一系列与0比较的跳转指令。与0比较是程序中常见的操作。RISC-V中与0比较的指令是常见的比较跳转指令,是带有x0寄存器的指令的操作数。还有很多其他这样的指令,用普通指令加上x0作为操作数,可以实现没有x0寄存器的处理器需要单独指令或者两个指令组合才能实现的操作。

参考资料:

1、risc-v.org

2.基于risc-v的人工智能应用开发

3.对RISC-V程序开发有深刻的理解

4.计算机体系结构和SoC设计

处理器基础知识集锦

RISC-V学习笔记 [1]RISC-V概述

[1] 8位、16位、32位和64位

除了CISC和RISC,处理器指令集架构中的位数也是一个重要的概念。一般来说,处理器架构中的位数是指通用寄存器的宽度,决定了寻址范围的大小和数据运算能力的强弱。例如,对于32位处理器,通用寄存器的宽度为32位,可寻址范围为232Byte,即4GB的寻址空间,操作指令可操作的操作数为32位。

注意:处理器指令集架构的宽度与指令的编码长度无关。并不是说64位架构的指令长度是64位(这是一个常见的错误)。理论上,指令本身的编码长度越短越好,因为这样可以节省代码的存储空间。因此,即使在64位架构中,也有大量的16位编码指。

而且基本上64位指令代码很少。

综上所述,在不考虑任何实际成本和实现技术的情况下,理论上来说:。通用寄存器的宽度,即指令集架构中的位数越多越好,因为这样可以带来更大的寻址范围和更强的计算能力。

指令的长度越短越好,因为可以节省代码的存储空间。常见的架构位有8位、16位、32位和64位。早期的单片机主要是8位和16位,大家熟知的8051单片机就是广泛使用的8位架构。

目前,主流嵌入式微处理器正在向32位架构转移。

目前主流的移动手持、个人电脑、服务器领域都采用64位架构。

【2】CISCRISC

常见的指令集架构大致可以分为两类:复杂指令集架构(CISC)和精简指令集架构(RISC)。

RISC全称精简指令集计算机,精简指令集计算机。

CISC代表复杂指令集计算机,复杂指令集计算机。

CISC既有简单的指令,也有复杂的指令。后来发现典型程序中80%的语句使用了计算机中20%的指令,而这20%的指令属于简单指令。所以花更多的时间研究复杂指令只有20%的概率,复杂指令会影响计算机的执行速度。由于典型程序的80%是用简单指令完成的,剩下的20%语句可以用简单语句重新组合来模拟这些复杂指令,而不需要使用这些复杂指令,所以RISC出现了。

RISC的主要特点:

1)选择一些使用频率高的简单指令和一些非常有用但并不复杂的指令,让使用频率高的简单指令组合起来实现复杂指令的功能。

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

3)只有取/存指令访问存储器,其他指令的操作都在寄存器中完成。

4)CPU中有多个通用寄存器(比CISC的多)

5)使用流水线技术(RISC必须使用流水线),大部分指令在一个时钟周期内完成。采用超标量超级流水线技术,每条指令的平均时间可以小于一个时钟周期。

6)控制器采用组合逻辑控制代替微程序控制。

7)采用优化的编译器。

CICS的主要特点:

1)指令系统复杂庞大,指令数量一般可达200~300条。

2)指令长度不固定,指令格式和寻址方式种类繁多。

3)对可以被访问和存储的指令没有限制(RISC只有提取/存储指令可以访问存储器)

4)各种指令的执行时间差异很大,大部分指令需要多个时钟周期才能完成。

5)大多数控制器由微程序控制。

6)很难生成具有优化编译的高效目标代码程序。

RISC与CISC的比较

1.RISC比CISC更能提高电脑运算速度;更多RISC寄存器可以减少存储器访问次数,指令数量和寻址方式更少,指令解码更快。

2.RISC比CISC容易设计,可以降低成本,提高可靠性。

3.RISC可以有效支持高级语言程序。

4.CISC有丰富的指令系统,用特殊指令完成特定功能,所以处理特殊任务很有效率。

复杂指令集最常见的例子是AMD64指令集(也叫x86-64、x86_64、Intel 64、EM64T等。)被大部分家用电脑和网络服务器使用,基于发明者称之为AMD64。此外,还有一些使用和历史复杂指令集如IA-32,MC68000,MOS6502,Intel 8051,Intel 8080等等。复杂指令集的复杂性在于指令类型数量巨大,很多经常使用和不经常使用的功能都会集成到处理器指令集中。同时,复杂指令集系统中每条指令的操作数寻址方式复杂,几乎所有指令都可以直接访问内存。对应指令的机器码编码方式复杂,变长指令应用广泛。同时,复杂指令集系统一般没有独立的专用内存访问指令,处理器中设置的通用寄存器数量也很少。(比如IA-32没有严格意义上的通用整数寄存器,AMD64只勉强设置了8个通用整数寄存器。)

精简指令集最常见的例子是ARM指令集家族,常见于智能设备和嵌入式平台。另外还有一些用法和历史的简化指令集如LoongArch,MIPS,RISC-V,PowerPC,AVR等等。指令集简化是指保留最基本、最必要的指令,将复杂的功能完全交给上层的软件算法和下层的专用外设去解决。同时,精简指令集系统的指令寻址方式往往非常单一,除了特殊的访存指令外,所有指令都只能在寄存器范围内操作。相应的精简指令集系统一般采用定长指令,也会配备相对较多的通用寄存器。(比如上世纪的ARMv4T和MIPS32已经有29 ~ 31个通用寄存器,而同期的IA-32是0。)

其实在应用层面,对于高级语言程序,对于处理器设计,两种指令集架构差别不大。Intel和AMD的AMD64实现都使用微码,而复杂指令翻译的微码一般用class RISC设计。本世纪初,人们普遍认为指令集复杂的处理器速度更快。现在,精简指令集非常强大,完全比CISC快。有些CISC最后转换成RISC实现。

[3] 8位CISC——8051

8位和CISC看似矛盾,但8051已经辉煌了40年。

说到8051内核,几乎所有人都知道。851作为诞生了几十年的微处理器核,在8位嵌入式微处理器核领域是当之无愧的前辈。

自1980年Inlel开发出用于嵌入式系统的Intel MCS-51(一般称为8051)单片微控制器(MCU)以来,8051内核架构已经走过了近40个年头。英特尔还以专利转让的形式将8051内核转让给了许多其他半导体公司。这些公司进一步开发了基于8051内核的不同类型的微控制器芯片,从而形成了一个庞大的8051家族。

可以说,8051内核凭借几十年发展起来的庞大用户群和生态环境,以及多年来被肯定的众多成功产品,几乎成为了8位微处理器内核的行业标杆。8051内核架构在1998年失去专利保护,经过漫长的战斗后再次获得了强大的二次生命力。各种形式的8051架构MCU(微控制器单元)进一步涌入市场,基于8051内核的各种芯片产品层出不穷。8051内核IP的各种免费版本也可以从各种渠道获得。

当然,8051内核的管理还没有一个统一的组织和标准,所以也存在一些问题,比如架构混乱,各种增强的复杂度。虽然他们经常自称是8051内核,但实际上是不一样的,很难处处区分。不过这并不影响8051核心的经典地位。时至今日,虽然微处理器内核正在经历向32位架构迁移的大趋势,但8051内核仍然起着举足轻重的作用。在大量的MCU、混合信号芯片、SoC芯片中仍然可以看到它的身影,在适合8位架构处理器核的应用领域中也将继续长期使用。“廉颇,虽然可以这样说

851内核在嵌入式领域的成功可以归结为以下几个原因。

广泛的被认知度,简单的体系结构。没有知识产权的限制,商业和开源的版本众多,非常适合中小型芯片公司采用。用庞大的用户群以及相应的生态系统。成熟且免费的软件工具链支持。

——你似乎觉得RISC-V从出生开始就符合以上气质。

然而,8051作为诞生近40年的8位CISC (Complex Instruction Set,复杂指令集)架构内核,虽然“老当益壮”,但由于性能低下,寻址范围有限,已经难以适应更多新兴的应用领域。随着物联网的发展和兴起,虽然嵌入式领域对处理器核的需求更加井喷,但是越来越多的采用32位架构,很多传统的8位应用领域也开始向32位架构迁移。这个Cortex-M系列的ARM有机会成长。

但在80年代,刚推出单片机的时候,半导体制造工艺只能达到um级别,处理器能达到的时钟频率较低。而且当时硬件设计语言还处于初级阶段,没有自动化设计工具。大多数软件都是基于手工汇编编程。导致流水线设计的优势无法充分发挥,每条指令都需要多个时钟周期才能完成。基于以上原因,当时的指令集设计往往具有以下特点:

(1)尽量在每条指令中实现更多的功能。例如,8051的CJNE指令需要在一条指令中实现:

①用累加器减去。

②修改进位标志。

③平均比较结果。

④根据比较结果决定是否跳转。

(2)指令集庞大,可以实现更复杂的功能。例如,虽然8051是一个8位微控制器,但它的指令集包含多达255种不同的指令和格式。

(3)由于以上两点,变长指令的出现提高了内存利用率。有三种不同类型的851指令:单字节、双字节和三字节。除了解码指令之外,没有其他方法来帮助确定指令的长度。

(4)称呼方式多种多样。例如,在8051指令集中,对数值的操作包括以下几种方式

①立即数字寻址。在指令中包含常数。

②直接寻址。包括指令中的存储器地址。

③间接寻址。将内存地址放入寄存器,然后将寄存器地址包含在指令中。

④寄存器寻址。将操作数放入寄存器,然后在指令中包含寄存器地址。

[4] 8051具有CISC的所有缺点

1)尽量在每个引用中实现更多的功能。

为了在保持高吞吐量的同时实现这些复杂的功能,流水线的设计者不得不花费更多的时间来规划流水线的所有阶段。即便如此,有些指令还是达不到单周期吞吐量,比如上面提到的CJNE指令,需要两个时钟周期。

另外,在现代8051处理器的开发中,C语言已经取代了早期的汇编语言。然而,高级语言的编译器往往很难充分发挥这种复杂而多功能的机器指令的威力,这违背了原指令集的设计初衷。

当然,指令集的复杂性也不是一无是处。由于CISC指令集的复杂性,其代码密度一般优于同字宽的RISC处理器。

2)庞大的指令集浪费逻辑资源。

庞大的指令集必然会使指令的解码阶段更加复杂,消耗更多的逻辑资源。指令集分为两部分,每部分的解码占用流水线的一个阶段。这种设计的原因之一是为了在庞大的指令集下实现高吞吐量和高时钟频率而不得不做出的妥协。时钟频率相同的RISC-V处理器由于其指集相对简单,不需要做出这样的妥协,从而大大节省了逻辑资源,简化了流水线设计。

3)变长指令的出现提高了内存利用率。

有三种不同类型的851指令:单字节、双字节和三字节。除了解码,没有其他方法可以帮助确定指令长度。这种长指令结构使得难以确定指令之间的边界,甚至可能导致不对齐的内存访问,从而对流水线中的取指令设计提出了挑战。

851的内存架构是哈佛架构,代码和数据分开存储在不同的地址空间。这使得代码存储部分可以单独做一些优化设计。

由于8051指令集没有其他辅助手段来帮助确定指令长度,所以8051取指令器要花费比RISC-V更多的逻辑资源来确定指令的边界。

4)多种寻址模式。

由于8051有很多寻址方式,指令集中很多指令都可以访问内存间,这就很难判断流水线的数据冒险。有时,硬件必须自动插入操作(NOP)来保持数据的正确和完整。这不仅消耗了逻辑资源,还降低了流水线的效率,从而对功耗和性能造成了双重打击。

参考文献和参考书目:

基于FPGA和RISC-V的嵌入式系统设计

"RISC-V嵌入式开发快速入门"作者:胡振波

第六章:对vsRISC智虎:小威王的思考

“(计算机组成原理)RISC和CISC的区别”CSDN:我真的不聪明。

总结:以上内容是对不超过为什么小于等于的详细介绍?RISC-V学习笔记。文章内容部分转载自网络,希望对你了解不超过小于等于?

版权声明

本站搜集来源于网络,如侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。