当前位置: 首页 > news >正文

RSIC-V“一芯”学习笔记(一)——概述

考研的文章和资料之后想写的时候再写怕趴

文章目录

  • 一、阶段设计
  • 二、环境、开发语言和工具
  • 三、最重要的两个观念
  • 四、处理器芯片设计
  • 五、处理器芯片设计包含很多软件问题
  • 六、处理器芯片的评价指标
  • 七、复杂系统的构建和维护
  • 八、专业世界观
  • 九,提问的艺术(提问模板)
  • 十、考核情况

一、阶段设计

  1. B阶段:以RVE为主、将RT-Thread移植到AM、在给定的面积预算内优化处理器设计
  2. A阶段:从RVE转到RV64IMAC、最终运行Linux发行版
  3. 开源EDA
    在这里插入图片描述

二、环境、开发语言和工具

Linux环境:我准备直接用虚拟机了
软件:C语言、C++(少量)、gcc编译器。
(幸好之前苏嵌学过gcc、makefile等基础知识,底子打的好)
硬件开发:verilog 开源verilator仿真器+开源gtkwave波形查看器
(对于verilog,看了看之前学fpga的时候,倒是了解过一点,但是学的不是很深入)

硬件配置:笔记本电脑就行,无需FPGA
(当然自己设计的处理器放在上面跑也是可以的)
这里比较推荐的是ASIC

三、最重要的两个观念

1.硬件需要软件的支持才能发挥作用
狭义的处理器芯片设计: RTL开发
广义的处理器芯片设计:计算机系统软硬件协同设计

2.复杂系统是迭代演进的(多周期->流水线->超标量->乱序执行)
做事规律-从易到难,逐步推进
推荐阅读:《 系统设计黄金法则:简单之美》,包云岗
KISS法则- Keep It Simple, Stupid

四、处理器芯片设计

本质:实例化和连续
可以用面包板开发,但是逐渐转成RTL开发(效率高、更方便)

补充:RTL级和Verilog语言
RTL:寄存器传输级
Verilog可以从五个层次对电路(系统)进行描述,包括:系统级、算法级、寄存器传输级(即RTL级)、门级、开关级。我们平时用的最多的为RTL级,故Verilog代码也经常被称为RTL代码。
入门verilog文章–想学verilog的,可以看看这篇文章

五、处理器芯片设计包含很多软件问题

两个本质原因

  1. 处理器芯片和其他芯片不同,离开软件就无法工作.
  2. 代码即软件- RTL代码也是,即使它描述的是硬件
    需要使用合适的软件技术管理/维护/测试/评估/优化代码

软件怎么在处理器上运行?等等

六、处理器芯片的评价指标

  1. 正确性-最基本。运行100000000次后,是否也能正常运行?
  2. 软件支持–你设计的芯片只能运行排序程序,还是能启动Linux
  3. 微结构复杂度 - 单周期 复杂度 cache 分支预测
  4. PPA(性能(IPC主频)、功耗、面积)
  5. 可配置性
  6. 代码可读性、可维护性

七、复杂系统的构建和维护

  1. 了解全系统的每一处细节,为调bug有大方向
  2. 先完成后完美,体会每一项技术对系统带来的性能提升
  3. 构建正确的工具,提升开发速率
  4. 经验总结

八、专业世界观

  1. 代码要独立完成

在这里插入图片描述

九,提问的艺术(提问模板)

模板:
请回答以下问题:

  1. 你认为本问题是否属于能力训练的范畴?
  • 是, 我应该尽最大努力解决这个问题来得到训练
  • 否, 我要汇报讲义或框架代码中的问题, 或提供改进的建议
  • 其他, 请补充说明
  1. 这个问题是否可以通过自己动手试一试来了解答案? (例如类似"执行ls会发生什么"/“C语言中除0会发生什么”/“Cache是直接相联更好还是组相联更好”)
  • 是, 我试一试就可以知道答案
  • 否, 这个问题不属于此类别
  1. 是否已经阅读并理解相关的报错信息
  • 不适用, 这个问题没有报错信息
  1. 是否已经仔细阅读了讲义, 并确认讲义中没有提到相关信息
  • 不适用, 这个问题属于调试的训练, 需要我独立解决
  1. 是否可以通过重新编译解决问题?
  • 不适用, 这个问题和代码无关
  1. 是否已经尝试STFW?
  • 不适用, 这个问题和我的代码强相关, 无法在网上直接搜索到相关信息
  1. 是否已经尝试RTFM?

  • 不适用, 这个问题和手册无关
  1. 是否已经尝试RTFSC(包括Makefile等脚本和相关配置文件)?
  • 不适用, 这个问题和代码无关
  1. 这个问题是否可以稳定复现?
  1. 请列出你认为对解决问题有帮助的版本信息, 可以是系统/工具/代码等版本.

  2. 请详细描述复现这个问题的具体步骤(需要的时候附上截图).

  3. 请描述你期望看到的结果.

  4. 请阐述你尝试的过程和得到的结果, 并针对这些尝试结果进行分析, 给出自己的思考(需要的时候附上截图).

十、考核情况

在所提交的项目里面随机注入三个bug,
覆盖软件、硬件、环境
约45分钟找出bug

相关文章:

RSIC-V“一芯”学习笔记(一)——概述

考研的文章和资料之后想写的时候再写怕趴 文章目录 一、阶段设计二、环境、开发语言和工具三、最重要的两个观念四、处理器芯片设计五、处理器芯片设计包含很多软件问题六、处理器芯片的评价指标七、复杂系统的构建和维护八、专业世界观九,提问的艺术(提问模板)十、…...

MATLAB读取图片并转换为二进制数据格式

文章目录 前言一、MATLAB 文件读取方法1、文本文件读取2、二进制文件读取3、 图像文件读取4、其他文件读取 二、常用的图像处理标准图片链接三、MATLAB读取图片并转换为二进制数据格式1、matlab 源码2、运行结果 前言 本文记录使用 MATLAB 读取图片并转换为二进制数据格式的方…...

时序数据库

SELECT *,max(lp_index) FROM lp.tdm_lp_original_data where ts > 2023-12-28 18:11:33.521 and ts < 2023-12-29 19:03:12.148 INTERVAL(2s) FILL(PREV) 在时间序列数据库TDengine中&#xff0c;FILL函数与GROUP BY子句结合使用&#xff0c;提供了对于在指定间隔内…...

【第一次使用finalshell连接虚拟机内的centos】小白处理方式

第一次使用finalshell连接centos7的时候&#xff0c;因为都是新环境什么都没有配置&#xff0c;所以就需要安装finalshell和对新的centos7 进行一些配置。 安装finalshel&#xff0c;默认不安装d盘&#xff0c;就需要对安装路径做一下调整&#xff0c;其余都是下一步默认安装的…...

Pinia 踩坑记录

1、子store中如何使用router 以user.ts 这个store为例 错误写法 // 说明&#xff1a;不能使用插件实例化router&#xff0c;否则获取不到router的函数 // 错误写法如下&#xff1a;import { useRouter } from "vue-router"actions:{login(){const router useRout…...

在ASP.NET MVC中使用JQuery提供的弹出窗口(模态窗口)

在ASP.NET MVC中使用JQuery提供的弹出窗口&#xff08;模态窗口&#xff09; 原理 使用<div>图层灵活显示在浏览器的任何位置。默认情况下指定<div>不可见 引用 样式表 在JQuery的官方网站可以下载对应的css样式表。打开官网的样例页。 找到样式表引用路径 …...

基本工具配置

github加速 github.ur1.fun java # ubuntu20.04 安装 openjdk-17-jdk sudo apt install openjdk-17-jdk java -version javac -version which java参考 openjdk gradle换源 修改gradle-wrapper.properties distributionBaseGRADLE_USER_HOME distributionPathwrapper/dis…...

计算机网络——应用层(3)

计算机网络——应用层&#xff08;3&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 点对点&#xff08;P2P&#xff09;P2P网络一般用途优点缺点总结 套接字编程基本步骤UDP套接字TCP套接字基本步骤 二者对比 小程一言 我的计算机网络专栏&#xff0c;是自…...

配置ssh实现互相免密登陆

一、实验要求 通过两台linux主机 配置ssh 实现互相免密登陆 的操作 二、实验思路 免密登录我们可以理解为使用公钥登录&#xff0c;这里分别使用两台主机&#xff08;client&#xff09;和&#xff08;server&#xff09;作为实验主机。 首先让client免密登录server&#x…...

【UEFI基础】EDK网络框架(ARP)

ARP ARP协议说明 从这里开始涉及到的网络协议都是比较通用的了&#xff0c;在一般的TCP/IP四层模型中都能够看到这些内容&#xff0c;不过这里主要介绍的还是其在BIOS下的实现&#xff0c;但是在此之前还是需要先说明ARP的作用。 ARP的全称是Address Resolution Protocol&am…...

Linux进阶课:目录(文件夹)与文件操作

1、ls与cat的区别是是什么&#xff1f; 答&#xff1a;ls命令的含义是list&#xff0c;显示当前目录中内容。不加参数时它显示当前目录中除隐藏文件外的所有文件及目录的名字。 cat命令是linux下的一个文本输出命令&#xff0c;通常是用于查看某个文件的内容的。 2、[abc]这个…...

Flink自定义Source模拟数据流

maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…...

[易语言]使用易语言部署工业级人脸检测模型

【框架地址】 https://github.com/ShiqiYu/libfacedetection 【算法介绍】 Libfacedetection是一个开源的计算机视觉库&#xff0c;主要用于实时的人脸检测。它利用深度学习技术&#xff0c;特别是卷积神经网络&#xff08;CNN&#xff09;&#xff0c;实现了高精度的脸部定位…...

2024年海外推广怎么做?

要说如何做海外推广&#xff0c;绝大多数的外贸小伙伴都能说上一些&#xff0c;但是大部分人对于推广系统知识略知一二&#xff0c;没有构建一个系统化的知识框架。 海外推广的几大步骤 1.定策略 做海外推广前&#xff0c;我们需要制定一套营销策略&#xff0c;需要去定义一…...

Redis分布式锁--java实现

文章目录 Redis分布式锁方案&#xff1a;SETNX EXPIRE基本原理比较好的实现会产生四个问题 几种解决原子性的方案方案&#xff1a;SETNX value值是&#xff08;系统时间过期时间&#xff09;方案&#xff1a;使用Lua脚本(包含SETNX EXPIRE两条指令)方案&#xff1a;SET的扩展…...

好消息,Linux Kernel 6.7正式发布!

据有关资料显示&#xff0c;该版本是有史以来合并数最多的版本之一&#xff0c;包含 17k 个非合并 commit&#xff0c;实际合并的超过1K个。 那么该版本主要有哪边变化呢&#xff1f;下面我来一一列举一下&#xff1a; Bcachefs文件系统已被合并到主线内核&#xff0c;这是一款…...

【k8s】Kubernetes 声明式 API、命令式

1. 资源管理方式&#xff1a; 1>. 命令式对象管理∶直接使用命令去操作kubernetes资源 kubectl run nginx-pod --imagenginx:1.17.1 --port802>. 命令式对象配置∶通过命令配置和配置文件去操作kubernetes资源 kubectl create/patch -f nginx-pod.yaml3>. 声明式对…...

解锁营销新高度:幽灵鲨CRM推广平台线索对接功能详解

数字营销时代&#xff0c;线索对接是推动业务增长的关键。你是否为线索分布在不同的平台而来回切换&#xff1f;你是否为无法及时联系客户而错失商机&#xff1f;幽灵鲨CRM系统作为一款领先的客户关系管理解决方案&#xff0c;不仅实现了对主流推广平台的全面对接&#xff0c;更…...

uniapp 创建组件

组件&#xff1a;用于将某个功能的 HTML、CSS、JS 封装到一个文件中&#xff0c;提高代码的复用性和可维护性。 创建组件 一、在根目录中创建 components 文件夹&#xff0c;右键点击新建组件。 二、输入组件名称、选择默认模板、点击创建组件。 三、在组件中正常编写内容即可…...

Linux--部署 Tomcat 及其负载均衡

1.案例前置知识点 1&#xff09;Tomcat简介 名称由来&#xff1a;Tomcat最初是由 Sun的软件构架师詹姆斯邓肯戴维森开发的。后来他帮助将其变 为开源项目&#xff0c;并由Sun贡献给Apache软件基金会。由于大部分开源项目OReilly都会出一本相关的 书&#xff0c;并且将其封面设…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 &#xff08;1&#xff09;确定回溯算法函数的参数和返回值&#xff08;一般是void类型&#xff09; &#xff08;2&#xff09;因为是用递归实现的&#xff0c;所以我们要确定终止条件 &#xff08;3&#xff09;单层搜索逻辑 二…...

如何通过git命令查看项目连接的仓库地址?

要通过 Git 命令查看项目连接的仓库地址&#xff0c;您可以使用以下几种方法&#xff1a; 1. 查看所有远程仓库地址 使用 git remote -v 命令&#xff0c;它会显示项目中配置的所有远程仓库及其对应的 URL&#xff1a; git remote -v输出示例&#xff1a; origin https://…...