P3 · RV32I 指令集:让 CPU 真正开始执行
本章目标 P2 给了这台机器状态(寄存器 + PC + 内存)。P3 给它规则——RV32I 指令集。 读完本章你能回答: 为什么 RV32I 只有 37 条指令,却”什么都能算”? 指令格式的六种分类(R/I/S/B/U/J)不是编号游戏,它的依据是什么? B-type 立即数在指令字里为什么是”乱的”? cpu.pc += 4 为什么是错的——至少是不完整的? ...
本章目标 P2 给了这台机器状态(寄存器 + PC + 内存)。P3 给它规则——RV32I 指令集。 读完本章你能回答: 为什么 RV32I 只有 37 条指令,却”什么都能算”? 指令格式的六种分类(R/I/S/B/U/J)不是编号游戏,它的依据是什么? B-type 立即数在指令字里为什么是”乱的”? cpu.pc += 4 为什么是错的——至少是不完整的? ...
本章目标 读完本章你能回答: “CPU 的状态” 用 C 怎么存?为什么这个问题的答案就是一个 struct 加一个字节数组? 为什么内存是 uint8_t[] 而不是 uint32_t[]? 为什么读内存要关心字节序和对齐? ./temu image.bin 那一瞬间,磁盘上的字节到底经历了什么? 以及你能动手做: 写一个带边界检查、路由到 pmem 或 ...
本章目标 读完本章你能回答: 为什么 stage 1 不写 CPU,而是写调试器?——可观测性先于可执行性 p $pc + 4 从按下回车到打印出 0x80000004,中间发生了哪 3 件事? 为什么 9 个调试命令里有 5 个”长得一样”? 怎么测试一个”自己就是解释器”的程序? 以及你能动手做: 写一个表驱动的 regex 词法分析器,处理 20 多种...
本章目标 读完本章你能回答: 模拟器(emulator)到底在模拟什么? 为什么”计算机 = 状态机”这句话不是口号,是真的可以写成 C 代码的? 为什么第一个 stage 不是写 CPU,而是写一个空壳 REPL? 一个”最小可维护”的 C 项目长什么样? 以及你能动手做: 从零搭一个可编译、可跑、可退出的 C 项目 用 getopt 规范地解析命令行...
我们需要一种统一的语言,用以直观地描述、评估并改变一个商业模式 商业模式:一个商业模式描述的是一个组织创造、传递以及获得价值的基本原理 商业体的四个主要部分:客户、产品或服务、基础设施以及金融能力 九大模块 CS 客户细分 customer segments 任何一个组织都会服务于一个或多个客户群体。 客户细分这一模块描述了一家企业想要获得的和期望服务的不同的目标人群和机构...
0. 写在前面:为什么操作系统课要讲并发? 并发不是“多线程编程”的内容吗,为什么放在操作系统里讲? 原因来自 UNIX 的 fork-execve 模型。在这个模型下,进程之间是不共享内存的——这看起来已经把并发问题给隔离掉了。但是有一个例外:系统调用是共享内存的。 当进程执行 syscall 指令时,控制流跳转到操作系统内核代码。所有进程的内核代码运行在“同一个 C 程序”...
REVIEW 问题动机:从零开始的系统 一台刚上电的计算机,什么软件都没运行。谁来决定第一条指令是什么?谁来把操作系统加载进内存? 这就是启动链(boot chain)要解决的问题。 关键约束:CPU 上电后不知道”系统在哪”,只知道跳转到一个固定的物理地址,剩下的事交给那里的代码。 启动链(Boot Chain) 整个过程是一条接力棒,每一级负责把下一级加载进来并...
两条主线:内存空间的分配与回收,内存空间的扩充! 内存管理相关概念 内存空间的分配与回收 操作系统作为系统资源的管理者,当然需要对内存进行管理,在管理内存的时候,需要管理什么呢? 操作系统负责内存空间的分配与回收 操作系统需要提供某种技术从逻辑上对内存空间进行扩充 操作系统需要提供地址转换功能(地址重定位),负责程序的逻辑地址与物理地址 ...
为什么需要 PAC 框架? 核心问题: 训练误差很低,但我们真正关心的是泛化误差。两者之间的关系能被量化吗? 具体而言,以下问题都没有严格答案: 训练误差 5%,测试误差能保证多少? 测试集上表现好,是“真好”还是“碰巧好”? 训练这个模型需要多少数据? 解决思路(Valiant, 1984): 引入概率,对“学习成功”给出概率性保证。 PAC 框架的基本符号与...
解决的问题:network的input一直是一个向量,输出可能是一个数值(regression)或者一个类别(classification),那么,如果输入长度是一个sequence,而且长度不一样呢 为什么需要 Self-Attention? 输入是一个向量序列 现实中很多任务的输入不是单一向量,而是长度可变的向量序列: NLP:句子 → 每个词是一个向量(one-hot 或...
A new version of content is available.