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

简介: 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

相关文章
|
7月前
|
SQL 消息中间件 Serverless
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
182 4
|
8月前
|
人工智能 自然语言处理 Linux
OSUM:告别ASR单一功能,西工大开源的语音大模型会「读心」!识别+情感分析+年龄预测等8大任务1个模型全搞定
OSUM 是西北工业大学开发的开源语音理解模型,支持语音识别、情感分析、说话者性别分类等多种任务,基于 ASR+X 训练策略,具有高效和泛化能力强的特点。
620 8
OSUM:告别ASR单一功能,西工大开源的语音大模型会「读心」!识别+情感分析+年龄预测等8大任务1个模型全搞定
|
机器学习/深度学习 vr&ar 异构计算
diffusers
【9月更文挑战第22天】
665 75
|
7月前
|
人工智能
MV-MATH:中科院开源多模态数学推理基准,多视觉场景评估新标杆
MV-MATH 是中科院自动化所推出的多模态数学推理基准数据集,旨在评估多模态大语言模型在多视觉场景中的数学推理能力。该数据集包含2009个高质量的数学问题,涵盖11个数学领域和3个难度级别,适用于智能辅导系统和多模态学习研究。
151 0
|
SQL 人工智能 自然语言处理
一次中稿10篇EMNLP22,达摩院对话智能团队在研究什么
达摩院Conversational AI团队在EMNLP 2022上发表了10篇论文,涵盖了任务型对话、表格型对话、文档型对话、多模态对话和对话终身学习等多个前沿方向。团队构建了首个大规模中文任务型对话评估数据集CGoDial,用于提升对话系统的真实世界表现,并提出了一种新的预训练模型STAR,增强模型对复杂和抽象信息查询的处理能力。此外,他们还研究了多模态情感分析和对话情绪识别,以及终身学习对话系统的解决方案,以减少灾难性遗忘问题。这些研究旨在推动对话智能的发展,提高人机交互的效率和准确性。
|
消息中间件 安全 Dubbo
java 的Remote 的使用
在Java中,"Remote" 的概念通常与Java RMI(Remote Method Invocation,远程方法调用)技术相关,它允许一个Java虚拟机(JVM)上的对象调用另一个JVM上对象的方法,就像调用本地对象一样。但是,值得注意的是,从Java 9开始,RMI已经被标记为不推荐使用(deprecated),并且在新版本的Java中可能不再得到支持和更新。尽管如此,了解RMI的基本概念仍然对理解分布式Java应用程序的设计和开发有所帮助。 ### RMI的基本步骤 1. **定义远程接口**: 远程接口是扩展了 `java.rmi.Remote` 接口的Java接口。它
618 13
|
安全 测试技术 C++
【C++篇】从零实现 C++ Vector:深度剖析 STL 的核心机制与优化1
【C++篇】从零实现 C++ Vector:深度剖析 STL 的核心机制与优化
236 7
|
SQL 存储 关系型数据库
DB2常见错误码注释(三)
DB2常见错误码注释
646 0
|
存储 负载均衡 NoSQL
Redis的集群模式是什么?它的优点和缺点是什么?
Redis的集群模式是什么?它的优点和缺点是什么?
261 0