Resources 学习资料汇总
以下是我学习过程中发现的比较好用的资料. 注意这里只是大概的分类, 同一个资料可能会在多个话题下有帮助, 但这里只列出一次 (在对我帮助最大的话题下), 顺序大致遵循学习规律.
★★☆☆☆ does not represent they are bad! Conversely, they are amazing! Only because I take away fewer information from them.
CPU
- An Introduction to Computing Systems Yale Patt: ★★★★★ 如果你大一想认真学一下计算机组成原理, 信我的, 读它准没错 (wetABQ 大佬推荐的).
- 本书详细讲了一个简单的 16-bit LC-3 CPU 的设计, 包括指令集、汇编语言、机器语言、微架构等内容.
- Bilibili: RISCV-MCU: ★★★★★ 一个基于 Digital 和 verilog 的 RISC-V CPU 仿真教程, 讲得非常好, 强推!
- 本人基于这个项目做了一个 my-riscv.
- The “Basic” Pipelined CPU: ★★★★★ 讲了 CPU 流水线 5 个阶段的工作原理.
- Dr. Chun Yan Cheung Lectures: ★★★★★ 强推!!!
RISCV
CS61C: ★★★☆☆ UC Berkeley 的 Great Ideas in Computer Architecture.
RVV 入门博客: ★★★★★ Spec 看不懂了可以过来, 讲了包括不限于如何在
C++里面使用 RVV 指令集.
RISCV spec 手册
- Spec pdf: 详细的官方 pdf 手册.
- 小蓝 spec 网页: 一般用来查指令格式.
- riscv-isa-pages: 一般的指令.
- RVV-web-page: RVV 指令.
EDA
How are Microchips Made?: ★★★★★ 伟大无需多言.
iEDA: ★★★★★ EDA 基础知识.
Neural Network
Netron: ★★★★★ 一个可视化神经网络结构和读取参数信息的工具, 支持多种模型格式 (
.onnx,.tflite, etc.) 强推!Animated AI [2]: ★★★★★ 可视化了以下概念: Convolution, Padding, Stride, Groups, Depthwise Convolution, Pointwise Convolution, Depthwise-Separable Convolution (DSC, 见 MobileNetv1), Pixel shuffle. 图像处理肯定会用到.
YOLO V1 Bilibili 讲解: ★★★★★ 非常清楚, 强推.
A Gentle Introduction to GNN: 图神经网络入门.
word2vec: ★★★★☆ Youtube 视频, 讲解了 word2vec 的原理.
Hand-written Number Recognition Visualized: ★★★★☆ 可视化了一个简单的 CNN 识别手写数字时每层神经元的激活情况.
Colah’s Blog: ★★★★★ Anthropic 和 Distill 的 co-founder Christopher Olah 的个人博客, 强推!!!
StatQuest on Transformers for Translation Tasks: ★★★★★ 我的评价是: 3b1b 不如他一根 (仅限于 transformer 中 attention 过程的讲解, 但要求你至少知道 \(Q, K, V\) 是什么).
一些 Transformer 讲解视频:
FPGA 理论
HDLBits: ★★★★★ 一个在线的 HDL 练习网站. 如果你对 verilog 一无所知, 直接上这个网站绝对没错.
Chisel Bootcamp: ★★☆☆☆ 可通过在线的练习来学习 Chisel 语言 (只需做前几章即可)
FPGA: ★☆☆☆☆ 用来学习 FPGA 的资料库.
FPGA: Architecture, Programmability and Advantageous: ★★★★☆ 一个讲解 FPGA 结构的视频, 很清楚.
HLS Design FPGA 并行编程
- Parallel Programming for FPGAs: ★★★★☆ Xilinx 研究院的 Steve 首席工程师与 UCSD 的 Ryan Kastner 教授团队合作, 推出了这本开源书, 全书通过 10 个算法实现案例完整的介绍了通过 HLS 工具利用 C/C++ 语言快速实现高性能 FPGA 实现的过程.
GPU
tiny-gpu: ★★☆☆☆ 一个小型的 GPU 实现.
VeriGPU: ★☆☆☆☆ 一个复杂点的 GPU 实现, 不适合用来入门.
Stanford CS336: ★★★★★ Stanford 的 Language Modeling from Scratch 课程.