CS61C|Lec14-Pipelining
前面介绍了一下关于如何衡量处理器性能,还有一些关于功耗的问题,感觉不太重要就随便听了一下,所以也没记笔记。 Pipelining 用流水线来提高吞吐量 流水线的作用: 流水线不会减少单个任务的延迟,但它可以提高整个工作负载的吞吐量。 流水线允许多个任务同时使用不同的资源。 加速的潜力: 流水线的理论…
6.S081|实验环境搭建
环境介绍,本人使用M1Pro芯片的Macbook,采用orbstack运行x86的Ubuntu22.04容器。 工具链 根据官网介绍(一般在顶部导航栏的Labs下面的tools里面),选择Ubuntu的安装命令,一键安装。 SSH到Orb容器 在VSCode上连接到容器,没什么难点,略过。 安装插件…
CS61C|Lec13-Single-Cycle CPU Datapath Controls
Control and Status Registers 控制状态寄存器CSRs,不属于寄存器堆中的寄存器(x0-x31),也就是不属于数据寄存器。被用于监视状态和性能,标准的RISCV最多可以有4096个CSRs。 他不属于基础指令集(因为模块化的原因被移除了),但是几乎存在于每个处理器中。 不知…
CS61C|Lec12-Single-Cycle CPU Datapath
What's a CPU Your CPU in two parts Datapath(数据通路):数据在功能部件之间传送的路径称为数据通路,路径上的部件称为数据通路部件,如ALU、通用寄存器等。 Control(控制器):它需要根据输入指令做出决策,例如确定当前执行的操作类型、是否需要从内存中获取…
CS61C|Lec11-Sequential-Digital-Logic
Muxes Data Multiplexor 多路转换器是一个选择器,N-to-1 下面是一个n位的2选1多路选择器 如图所示,接受了两个n位的输入,输出一个n位 接下来我们将来实现一个1位的2选一MUX 下面是一个1位4选一MUX的示例 思考一下真值表会有多少行? 答案是26,因为我们有a,b,c…
CS61C|Lec10-Combinational Logic
Hardware Design Overview Synchronous Digital Systems (SDS) Synchronous: 所有操作由中央时钟协调。 系统的“心跳(Heartbeat)”(处理器频率(processor frequency)) Digital: 将所有的值都表示成…
CS61C|Lec9-CALL
Translation vs. Interpretation 怎么运行一个用源码写成的程序? Interpreter:用源码直接执行程序 解释器是一种程序,它可以逐行读取并直接执行源语言程序。解释器不生成任何中间代码或目标代码,而是直接解析并执行源代码。 Translator:将源码用别的语言转换成…
使用Frp进行coder-server部署
步骤概览 首先在本地机上运行code- server。记住端口,待会配置文件要用。 提前先将域名解析到公网服务器,用A类就行,解析好了之后申请一个ssl证书,将证书下载下来,后续要用。 接着配置frp 配好frp之后,现在应该可以通过你设置的域名+端口的方式访问到服务 使用nginx反向代理实现直接…
CS61C|Lec8-RISC-V Instruction Formats
Stored-Program Concept 以前的计算机是非常难reprogram的,因为要用编程线和开关进行编程。通常需要2到3天去编一个新程序 Big Idea:Stored-Program Concept 指令可以用bit来表示 整个程序像是数据一样被保存在内存中 重新编程就是重写数据(而不…
CS61C|Lec7-RISCV-Functions
Pseudo-Instructions Assemby Instructions 低级程序语言的指令会与特定架构的操作相匹配 代码可以被编译成不同的汇编语言,但是一种汇编语言只能在支持它的硬件上运行。 Pseudo-Instructions 为了程序员的利益,可以有一些并不真正由硬件实现,而是由转换…