RISCV Reader笔记_1 RISCV的意义

news2024/9/21 2:41:20

RISCV Reader

RISCV的诞生

出众之处

RISCV架构被设计的目的就是成为一个通用的指令集架构 ISA。不仅支持从微控制器到高性能计算机的各种处理器,兼容各种编程语言,还适应FPGA ASIC等所有实现技术,稳定……

计算机体系结构为了在指令集更新的时候保持其向后兼容性,传统做法是增量ISA,新处理器要实现新的ISA扩展和所有旧扩展。x86就是如此,但是其弊端在于哪怕过去的实现是错误的,为了兼容每次也必须实现。

而RISCV是模块化的,核心是RV32I基础ISA,运行一个完整的软件栈;其他扩展模块硬件可以根据自己的需要选择包含或者不包含。这使得RISCV有轻量,低能耗的特点。比如要包含乘法RV32M,单精度浮点RV32F,双精度浮点RV32D这三个扩展,加入基础ISA后的指令集名称为:RV32IMFD。

ISA设计中的7个衡量标准

成本

芯片/晶粒是从晶圆上切割出来的。

1687335413470

晶圆上可能有瑕疵,这样切割下来的晶粒如果包含瑕疵也用不了。因此晶粒体积越小包含瑕疵的比重也越少,利用率越高。ISA越简洁,晶粒越小,成本也因此减小。

简洁性

可以通过对指令的调整实现。简单指令的组合会比复杂指令性能更好。

性能

程序包含的指令数 * 指令平均需要的周期数 * 每个时钟周期用时=程序用时。

RISCV在这三个方面都有一定的优势。

架构和具体实现的分离

具体表现在于:架构师可能为了优化某一部分的性能和成本,在ISA中包含某些指令,但是这种做法可能给以后的实现造成负担;而程序员了解架构后能写出正确的程序,却不一定能保证性能。比如提升了单发射流水线的指令可能造成多指令并行流水线的负载降低,吞吐量整体降低。

提升空间

摩尔定律差不多终结了,不能再指望着晶体管翻番,有更多的地址存指令了。应当专注于特定领域来进行提升比如机器学习,图形,AR等特殊指令。因此ISA是否保留了操作码空间以供未来提升也是一个重要的衡量要素。

比如Thumb2,引入了16位的Thumb指令,和16+32位指令的Thumb2,并用一位模式位来切换。

程序大小

程序小了需要存储空间也少了,芯片面积也可以缩减;而且指令缓存未命中问题也会减少(因为一共就没用几条指令),功耗也会降低。这个并不是说单纯指令短了程序就小,x86的变长指令代码反而比RV32C和Thumb2大。

易于编程/编译/链接

一方面,我们知道存储金字塔模型中寄存器是最顶端速度最快的,因此要合理分配好寄存器。RISCV有32个。

另一方面,每条指令的执行速度应当保持稳定。在缓存命中的前提下RISCV的指令基本稳定一个时钟周期执行完成,但是比如x86的算数操作数有可能在寄存器里,有可能在存储器里……这种位置不确定的操作数,复杂的指令使得运行速度不一定稳定,性能测试难以保证。

本书介绍

在后面的章节中会首先介绍RV32I,各种RV32G(General)包括RV32M,RV32F和RV32D,RV32A 原子操作,16位的压缩扩展RV32C,向量扩展RV32V,RV64G,以及RISCV基金会在考虑的新扩展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/675656.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Iceberg从入门到精通系列之一:Iceberg核心概念理解

Iceberg从入门到精通系列之一:Iceberg核心概念理解 一、Iceberg核心概念二、Iceberg表结构三、数据文件四、表快照Snapshot五、清单列表Manifest list六、表快照、数据文件和清单列表之间的关系七、Catalog八、Hive Catalog九、Hadoop Catalog十、Hive Catalog和Had…

Alamouti,MRC以及beam三种方式的误码率对比MATLAB仿真程序

Alamouti,MRC以及beam三种方式的误码率对比MATLAB仿真程序 完整程序: clc; clear; close all; warning off; addpath(genpath(pwd)); %%%%%%%%%%%%%%%%%%%%%%%%% Initialization %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N = 10^6; r_n = rand(1,N)>0.5; BPSK = 2*r_n-1; E_n_d…

chatgpt赋能python:Python生成GUI的步骤和工具

Python生成GUI的步骤和工具 Python是一种广泛使用的编程语言,其语法简洁、易学、可读性强等特点深受程序员喜爱。 Python的GUI编程让我们可以为用户提供友好的界面,帮助用户更好地理解和使用程序。Python生成GUI的过程并不复杂,本文将为您介…

代码随想录算法训练营第42天 | 01背包问题理论基础 + 416.分割等和子集

今日任务 目录 01背包问题 二维数组 01背包问题 一维/滚动数组 416.分割等和子集 - Medium 01背包问题 二维数组 理论基础:代码随想录 01 背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品…

课程18:角色权限功能实现

🚀前言 本文是《.Net Core从零学习搭建权限管理系统》教程专栏的课程(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:以实战为线索,基于.Net 7 + REST + Vue、前后端分离,不依赖任何第三方框架,从零一步一步讲解权限管理系统搭建。 专栏适用于人群:We…

chatgpt赋能python:Python生成C++代码-提高生产力的利器

Python 生成 C 代码 - 提高生产力的利器 Python 作为一种高级编程语言,在数据分析、机器学习等领域都有着广泛的应用。但是,Python 被认为速度慢,无法处理一些高性能的任务。此时,C这种低级语言就被用来替代 Python,以…

实战:构建工具-共享库配置实践-2023.6.22(测试成功)

实战:构建工具-共享库配置实践-2023.6.22(测试成功) 目录 推荐文章 https://www.yuque.com/xyy-onlyone/aevhhf?# 《玩转Typora》 实验环境 gitlab/gitlab-ce:15.0.3-ce.0 jenkins/jenkins:2.346.3-2-lts-jdk11实验软件 链接:https://pan.baidu.com/…

Flutter Dart操作符

常见的操作符大家都知道就不多介绍了,主要来看看Java所没有的。 类型判定操作符 as、 is、 和 is! 操作符是在运行时判定对象 类型的操作符 操作符解释as类型转换is如果对象是指定的类型返回 Trueis!如果对象是指定的类型返回 False as 操作符把对象转换为特定的类…

如何加入开源社

开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、项目孵化” 为使命的开源社区联合体。开源社积极…

chatgpt赋能python:Python生成GUID:让你的代码变得更加唯一

Python生成GUID:让你的代码变得更加唯一 在现代软件开发领域中,一个核心的问题是如何确保代码生成的ID是唯一的。通过Python语言生成全球唯一标识符(GUID)是一个非常流行的方法,而且是非常容易实现的。 什么是Python…

FutureTask源码

介绍 在创建线程的方式中,我们可以直接继承Thread和实现Callable接口来创建线程,但是这两种创建线程的方式不能返回执行的结果。于是从JDK1.5开始提供了Callable接口和Future接口,这两种创建线程的方式可以在执行完任务之后返回执行结果。 …

Java8 LocalDateTime获取当前周是本年第几周weekOfYear,用WeekFields

Java8 LocalDateTime获取当前周是本年第几周weekOfYear, 可用WeekFields LocalDateTime 没有直接获得 weekOfYear 的方法 LocalDateTime 有一个 get(TemporalField field) 方法, 返回 int public int get(TemporalField field) {if (field instanceof ChronoField chronoFiel…

读发布!设计与部署稳定的分布式系统(第2版)笔记09_一窝蜂和容量

1. 停电事故后电力恢复的方式 1.1. 停电后常见的情形是,送电几秒钟后又再次断电 1.2. 数百万台空调和冰箱的用电需求,使刚刚恢复的电力供应发生过载 1.3. 当电力供应不足时,增加的电流很快就到达满负荷,导致过载,触…

chatgpt赋能python:Python中的点形状:了解点与其表现形式

Python中的点形状:了解点与其表现形式 在Python编程中,点是一种十分重要的形状,它不仅可以用来表示数据结构中的节点,还可以用来绘制图形。本篇文章将介绍Python中点形状的表现形式和相关知识点。 点的表现形式 在Python中&…

跨 OT 部门管理来自新兴技术的网络风险挑战

本文首发微信公众号网络研究院,关注获取更多。 随着 AI 和自动化工具被引入企业,解决这些新技术(包括 OT 环境中的生成 AI)带来的网络风险需要一种综合方法。 这些新兴技术进步可以在 OT(运营技术)基础设…

【夜深人静写数据结构与算法 | 第八篇】哈希算法与哈希表

目录 前言: 哈希: 哈希表: 哈希表组成: 哈希表实例: 哈希函数: TIPS: 总结 前言: 如果此时我要你默写一个有一百位的数字,你要如何做才能保证不会漏写呢&#xf…

Jenkins安装手册

Jenkins安装手册 一、前期准备工作 因为我是在Windows系统上连接Linux服务器以及需要把在Windows系统下载的安装包上传到Linux系统,所以需要用到两个工具---putty 和FileZilla。 Putty是一个免费的、Windows 32平台下的telnet、rlogin和ssh客户端,但是…

IDEA新UI速览,成了VS Code的样子?

IntelliJ IDEA 2023.1 现已发布。此版本包括对新 UI 的改进,根据从用户那里收到的反馈进行了彻底改造。此外还实现了性能增强,从而在打开项目时更快地导入 Maven 和更早地使用 IDE 功能。由于采用了 background commit checks,新版本提供了简…

【首发】随身wifi编译/使用ffmpeg方法,包含openwrt和debian

目录 1.硬件改造 2.软件改造 3.下一步计划 背景是23年4月入了随身wifi的坑后,发现除了硬件上的改造,软件的可玩性也很大,网上可以找到不少打印机,直播推流,甚至家庭智能硬件的改造教程。笔者是因为改造遥控小车&…

【前端】Element-UI和Element-Plus的区别

文章目录 对移动端支持区别框架区别开发中使用的区别el-tableel-dialogel-buttonel-date-pickerel-iconechartsIcon图标库变化了组件的插槽slot使用变化了新增组件 来源 对移动端支持区别 Element-UI对应Element2:基本不支持手机版 Element-Plus对应Element3&…