速度《深入理解计算机系统》总结 1.“hello”程序的生命周期 (1) “hello”程序的生命周期是从一个源程序开始的,即程序员通过编辑器创建并保存文本文件hello.c; (2)每条C语句都必须转化为一系列的低级机器语言指令才能在系统上运行,源文件要被转化为编译文件并存放在磁盘上; (3)将文件名输入到成为shell的应用程序中才能运行该可执行文件,如下: linux>./hello hello,world linux> (4)运行“hello”程序 2.压入和弹出栈数据 栈是一种数据结构,可以添加或者删除值。不过,要遵循“先进后出”的原则,通过push操作把数据压入栈中,通过pop操作删除数据。指令效果如下表。 将一个四字值压入栈中,首先要将栈指针减8,然后将值写到新的栈顶地址。因此指令pushq %rab的行为相当于下面两条指令: subq $8,%rsp movq %rab,(%rsp) 数据具体移动存储过程如下图。 3.Y86-64的顺序实现和流水实现 (1)顺序实现:取指,译码,执行,访存,写回,更新PC。下图是SEQ的硬件结构(一种顺序实现) (2)流水实现:SEQ+重新安排计算 插入流水线寄存器 对信号进行重新编排和标号 预测下一个PC 4.存储器层次结构 存储技术:不同存储技术的访问时间差异很大。速度较快的技术每字节的成本要比速度较慢的技术高,而且容量较小