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


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

    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系统调用
  • 相关阅读:
    luogu P5494 【模板】线段树分裂
    珂朵莉树(ODT)
    luogu P5787 二分图 /【模板】线段树分治
    线段树
    luogu P1450 [HAOI2008]硬币购物
    树形DP
    luogu P3047 [USACO12FEB]Nearby Cows G
    1069: 向Z同学学习
    1067: 有问题的里程表
    1066: 字符分类统计
  • 原文地址:https://www.cnblogs.com/2499mly/p/11765863.html
Copyright © 2020-2023  润新知