CSAPP 第六章 存储器体系

CSAPP 第六章 存储器体系

存储器简介 局部性 高速缓存 编写适合高速缓存的代码 总结 存储器简介 练习 6.2 计算一个磁盘的容量 磁盘容量 = 2 盘片 * 2面 * 10000个柱面=磁道 * 400个扇区 * 512个字节 = 8192000000, 换算成M 大概是 8192000000/1000/1000 = 81

CSAPP 第五章 依赖机器的优化

CSAPP 第五章 依赖机器的优化

现代处理器 处理器的抽象模型-关键路径 循环展开 并行计算 优化的限制因素 内存性能 章节总结 现代处理器 现代处理器并不是完全像之前的流水线模型一样 一条指令按照次序通过所有的流水线. 实际上一条指令的执行顺序不一定和机器代码的顺序相同, 译码也不是简单的将一条指令译成我们按照字节顺序取出的那样.

CSAPP 第五章 不依靠具体机器的优化

CSAPP 第五章 不依靠具体机器的优化

编译器的优化能力和局限性 表示程序性能 消除循环的低效 减少过程调用 消除内存引用 编译器的优化能力和局限性 编译器的一大安全的优化特点, 就是需要考虑程序所有的情况, 否则运行时可能会出问题. 比如在操作指针的时候, 如果两个参数相同, 其结果可能和希望的不同. 如果编译器无法确定, 则必须假设两

CSAPP 第四章 Y86-64的顺序实现与流水线处理器

CSAPP 第四章 Y86-64的顺序实现与流水线处理器

将处理指令的过程抽象为阶段 OPq系列指令和 rrmovq ,irmovq指令 rmmovq 和 mrmovq 指令 pushq 和 popq 指令 跳转指令 call 和 ret 条件传送系列指令 流水线 将处理抽象为阶段 要设计一个处理器, 需要将指令分为不同的阶段, 根据不同的阶段来优化. 各

CSAPP 第四章 HCL语言

CSAPP 第四章 HCL语言

HCL和布尔表达式 多路复用器 集合 存储器和时钟 HCL和布尔表达式 对于看过计算机系统要素的我, 这一部分的很多概念就很熟悉了. GO! HCL类似于用布尔表达式来书写门电路的组合方式, 像这个bool eq = (a && b) || (!a && !b);. 离散数学中提到, 不管多复杂的逻

CSAPP 第四章 Y86-64指令集

CSAPP 第四章 Y86-64指令集

简化的计算机模型和指令集 异常代码 特殊指令 - %rsp入栈出栈 简化的计算机模型和指令集 为了研究处理器的架构, CSAPP设计了一套简化的计算机模型和对应的指令集叫做Y86-64. 主要特点如下: 15个寄存器, 不包括%r15. 这样内部寻址可以用0-15来选择寄存器. %rsp依然用作栈指

CSAPP 第三章 浮点数

CSAPP 第三章 浮点数

浮点寄存器 浮点数指令 - 传送和转换操作 浮点数指令 - 寄存器分配 浮点数指令 - 浮点数的运算和浮点常数 浮点数指令 - 浮点数的位级操作 浮点数指令 - 浮点数比较 浮点寄存器 AVX2的浮点寄存器一共有16个, 命名比较规则, 从%YMM0 - %YMM15, 每个寄存器都是256位长.

CSAPP 第三章 指针操作与缓冲区溢出

CSAPP 第三章 指针操作与缓冲区溢出

指针 缓冲区溢出 缓冲区保护 变长栈帧 指针 这里借着底层知识实际上就把指针又复习了一遍, 指针有如下特性: 指针有类型, 是指向的是哪一类对象, 指针的类型对于机器级程序表示没有任何用处, 只是为了给编译器看和计算出地址 指针的值是一个无符号整数, 表示内存地址, 如果为0表示NULL, 即没有指

CSAPP 第三章 数据结构

CSAPP 第三章 数据结构

数组 结构 联合 数据对齐 数组 感觉CSAPP这里实际上是把C语言的数组和汇编语言一起讲了. 声明一个数组T A[N]实际上的意义如下: 分配N个T类型大小的连续空间 指向这个连续空间的第一个T类型大小的指针叫做A, A中的地址就是这个数组的第一个元素. 按照索引往后查找的时候, 只需要用地址加上