速度《深入理解计算机系统》总结

速度《深入理解计算机系统》总结

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.存储器层次结构

    存储技术:不同存储技术的访问时间差异很大。速度较快的技术每字节的成本要比速度较慢的技术高,而且容量较小。CPU和主存之间的速度差距在增大。
    计算机软件:一个编写良好的程序倾向于展示出良好的局部性。
    硬件和软件的这些基本属性互补得很完美。根据这一性质,人们想到了一个组织存储器系统的方法,即存储器层次结构。从高层向底层走,存储设备变得更慢,更大,更便宜。

5.Linux、x86-64系统中的异常

    (1)Linux/x86-64故障和终止
       - 除法错误
       - 缺页
       - 一般保护故障
       - 机器检查
    (2) Linux/x86-64系统调用
posted @ 2019-10-30 18:08  20199124-马璐瑶  Views(295)  Comments(0Edit  收藏  举报