-
2024-01-16 #lan
新基础类型
- 虽然随着C99加入了
long long类型而且编译器很早便支持了这个类型,但是直到C++11才正式加入标准 UTF-8是一种可变长度的编码方法,一般直接用char类型处理(C++20加入了char8_t以和普通字符区分). 而UTF-16和UTF-32编码则分别对应char16_t和char32_t.
命名空间
- 可以内联命名空间,
inline namespace V2,利用此特
- 虽然随着C99加入了
-
2024-01-04 #arch
冒险与停顿
- 结构冒险
- 每个部件每个周期只能被一条指令使用
- 数据冒险
- 前递(forwarding)或旁路: 上级已经计算出新值,下一级(以及之后)不必等待,直接拿到数据 e.g.
sub x2, x1, x3; and x12, x2, x5,其中x2在sub指令的EX阶段算出来新值后可以立即前递给and指令的EX阶段 - 停顿(stall)或气泡: 无法前递的冒险(比如载入-使用型数据冒险)只能
- 前递(forwarding)或旁路: 上级已经计算出新值,下一级(以及之后)不必等待,直接拿到数据 e.g.
- 结构冒险
-
2023-12-27 #arch 🌟
代码都在这里
刚学完AXI-Lite,在用
valid/ready握手在一条链上传递信息的时候,发现每传递一个消息,每一级都需要切换idle和wait两个状态,当时就在想能不能砍掉idle状态,毫无停顿地发下去.学到Double Buffer FIFO的时候,才发现原来可以这样简单地就解决了.Bubble FIFO
先考虑最简单的Bubble FIFO,每个Buffer只有两种状态:空
empt -
2023-12-24 #lan
- Tour of Scala,中文版
- Scala Online Playground
- A Compact Benchmark in C++, Java, Go, and Scala from Google(PDF)
Basic
// Types // Any is the supertype of all types, Nothing is the subtype of all types / -
2023-12-20 #web
Commits
- 2023-07-30:
Initial commit, 智能车比赛结束之后从济南回来,正值数据结构实习,先学了几天next.js,感觉后端和SEO还是不太妙,用回了熟悉的Django - 2023-08-08: 基本博客系统写完了,有在线MD编辑器了,初步部署
- 2023-08-14: 前端UI设计基本成形, ~~不纠结了~~
- 2023-08-23: 评论系统完成
- 2023-11-26
- 2023-07-30:
-
Types
Datais the root of the Chisel type system.UIntandSIntextendBits虽然chisel能够自动推断宽度,但是最好还是指定一下宽度(如
4.W)UInt () UInt (8.W) 3.U(4.W) // An 4-bit constant of 3We will need Scala vars to write
-
2023-12-07 #linux
参考Pro Git,一些vsc不方便代替的有用命令备忘
快速clone
只克隆指定分支的提交记录
git clone --branch <分支名称> --single-branch <远程仓库地址>只克隆最近一次提交,后续还可以
git fetch --depth=N获取更多git clone --depth=1 <远程仓库地址>提交
自动把所有已经
-
2023-11-01 #fpga
-
2023-10-21 #arch
注: 啃手册自用,基于riscv-spec-20191213-1版本,使用DeepL辅助翻译,人工二次修改校对,若有纰漏,望谅指正.
riscv-spec
Chapter 9 “Zicsr” CSR
“Zicsr”, 控制和状态寄存器(CSR) 指令, Version 2.0
RISC-V 定义了一个由 4096 个控制和状态寄存器及其Hart(硬件线程)组成的独立地址空间。本章定义了在这些 CS
-
又是一个没写多少代码,但是却花了半个晚上思考程序OOP结构的夜晚,我发现这是在浪费时间,而且会让你的大脑很累,感觉昏昏沉沉的.所以我痛定思痛,写下下面的一些感悟总结. 不一定对,而且随着时间变化,一些观点也会改变吧.
- OOP不是必要: 当需要实例化多个相同类型的对象时,使用OOP来组织程序是很好的,但当整个程序中只存在一个实例(单例)的时候,面向对象设计得到的收益并不是很大.
- C++不是必要:
-
2023-08-23 #lan
介绍
之前一直用Valgrind这个工具来定位C/C++程序的各种内存问题,结果发现还有这个由Google开发的调试工具Sanitizers,提供更全面的报错和更好的性能(Valgrind会导致程序减慢大概20到50倍,而Sanitizers只会减慢大概2到4倍)
Sanitizers能够覆盖到如下这些Valgrind不能检测到的问题:
- Out-of-bounds access in stack
-
2023-08-22 #arch
RV32I指令集和多周期 RV32I CPU代码的笔记,可用于RV32I指令集速查
指令格式
RISC-V指令集是模块化设计的,其中RV32I是基本的32位整数ISA,只有47种指令,但是足以提供给现代操作系统足够的基本支持以及作为编译器的编译目标。
| 助记符 | 描述 | | ------ | ------------- | | I
-
2023-08-10 #lan 🌟
-
2023-08-08 #web
时至今日还能回忆起第一次自己部署网站的痛苦(笑),当时前后搞了一周多,记得当时有个非常神奇的bug困扰了我好久:网站部署后随机丢失css和js文件,当时左查右查,最后发现是Django的
SECRET_KEY字段,我是这样写的:SECRET_KEY = get_random_secret_key(),看似没有问题,但是当uWSGI启动多线程时,线程之间的SECRET_KEY却因此不同,导致了这样神奇