git 学习笔记
git 基础工作区:在本地磁盘上看到、正在编辑的文件,Git 不会自动记录这里的修改暂存区:存放的是:下一次 commit 要包含的内容,git add 的文件会放入暂存区本地仓库:git commit 后,文件会放入本地仓库 1工作区 -- git add --> 暂存区 -- git commit --> 本地仓库 git 文件状态 Untracked:文件存在于工作区,Git 从未记录过它,不在暂存区,也不在仓库中Tracked:文件 add 后,属于 TrackedUnmodified:文件已被 Git 跟踪,工作区内容 == 最近一次 commitModified:文件已被跟踪,工作区内容 ≠ 暂存区Staged:文件已放入暂存区 git stashgit stash 是 Git 中的一个命令,用来临时保存当前工作目录和暂存区的修改(即未提交的更改),以便可以切换到其他分支或执行其他操作,而不会丢失当前的工作进度。 在 main 分支上写了一些代码,还没提交,这时需要切到 dev 分支修一个 bug,但当前的修改又不能提交,这时...
cache
Direct mapped caches(直接映射)我们假设block的大小为1byte 我们将memory按cache进行分块,可以看到,将memory按cache进行分块后,memory中每个块中的行对应cache中的相应行,即我们可以通过index来知道我们想要的数据在哪里,这里我们的block只有1byte,如果block的大小大于1byte是什么样呢? 当block的大小等于2byte时,我们依然将memory按cache进行分块,这时如果只有index的话,我们只知道数据在哪一行,但不能确定数据的正确位置,因此,我们需要offset来确定数据的具体位置 那我们怎么知道cache中的某一行来自memory中的哪个地址呢?这时我们需要使用tag,我们将memory按cache进行分块后,给每个块加上索引,即这个索引就是tag 我们来看一个例子 假设cache的大小为32byte,memory为4GB,每个block为4byte,那么我们的cache有8行,我们需要2bit来确定offset,3bit来确定index,那么32 - 2 - 3 = 27bit来...
cs61c 学习笔记
Performance CPU execution time: CPU 执行时间 CPU clock cycle: CPU 时钟周期数 clock rate: 时钟频率 clock cycle time: 时钟周期 CPU execution time = CPU clock cycle * clock cycle time = CPU clock cycle / clock rate project 2函数调用caller 可以随意使用保存寄存器, s0 - s11, 在caller调用callee后,保存寄存器的值不会改变,对于callee来说,使用保存寄存器前,应先保存保存寄存器的值到内存中,即压栈,在callee返回前,应对保存寄存器中的值进行恢复,即弹栈,因此,保存寄存器为callee保存寄存器 一个函数可能是caller,也可能是callee,因此,当函数被一个函数调用后且需要调用其他函数时,当他需要使用保存寄存器时,要先将保存寄存器保存到内存中进行压栈,注意,返回地址也需要保存,到他需要返回时,将保存寄存器中的值和返回地址进行恢复 可...