《深入理解计算机系统》读书笔记

文章探讨了计算机系统的基本构成,包括编译过程、链接器的作用、CPU的运作、虚拟内存的概念以及操作系统内核的功能。此外,还详细讨论了程序性能优化的策略,如内存引用优化、循环展开和代码移动,以及存储器层次结构的影响,强调了局部性和缓存命中对性能的重要性。
摘要由CSDN通过智能技术生成

目录

说明:只是作为一个索引笔记,具体的优化实现方法要结合书籍。

第1章 计算机系统漫游

编译系统:
hello.c(文本文件)----编译器---->hello,o(可重定位的目标文件)-----链接器---->hello(目标文件)

字是被设计为在系统总线上传输的字节块。根据不同的操作系统,x86-32系统中一个字等于4个字节,而x86-64位系统中一个字等于8个字节。

CPU处理器中的程序计数器(PC)—用来指向主存中的某条机器语言指令,并让cpu执行。

操作系统的内核 -----是操作系统代码常驻主存的部分。
系统调用即应用程序通过操作系统提供的函数接口,让操作系统的内核执行某种操作。

虚拟内存—为每个进程提供了一个假象,即每个进程都在独占地使用主存。每个进程看到的内存都是一致的,称为虚拟地址空间。把一个进程虚拟内存的内容存储在磁盘上,然后用主存作为磁盘的高速缓存。

第2章 信息的表示和处理

字节:一个字节等于8位,是内存寻址的最小单位。
字:每台计算机都有一个字长,字长决定的是虚拟地址空间的最大大小。
虚拟内存地址就是机器级编程的物理内存地址的映射。
如果是32位操作系统,一个字是4个字节,虚拟地址空间的最大大小就是2^32。32位字长限制了虚拟地址空间的大小为4G
如果是64位操作系统,一个字是8个字节,虚拟地址空间的最大大小就是2^64。64位字长限制了虚拟地址空间的大小为16EB(16GG)。

typedef—给数据类型命名的方式,提高了代码的可读性。

第3章 程序的机器及表示(讲汇编的)

X86----CPU的机器指令架构,目前得到广泛应用的指令集。

第4章 处理器体系结构(讲CPU的)

第5章 优化程序性能

5.1 优化编译器的能力和局限性

影响编译器优化性能的因素:一、 内存引用。二、函数调用
内联函数替换优化函数的调用,减少内存引用

5.2 表示程序的性能

循环展开(即循环步长相对设置比1长,减少循环的次数)

5.4 消除循环的低效率

代码移动 (即对每次循环中不变的量,代码用全局变量存储,减少每次循环的重复调用

5.5 减少过程调用

消除循环中的函数重复调用no

5.6 消除不必要的内存引用

引入临时变量
以上是通过程序编写改进代码,接下来结合硬件特性来改进代码

5.8 循环展开

循环展开的程序要结合处理器的寄存器个数,例如x86-64有16个YMM寄存器,一旦循环变量的数量超过了可用寄存器的数量,程序就必须在栈上分配一些变量。可能导致程序的性能反而下降。

5.9 提高并行性

5.9.2 重新结合变换
通过改变运算的顺序,在底层机器实现上也会对性能进行提升。

第6章 存储器层次结构

局部性原理:CPU获取存储层次较高的数据时,所需的时钟周期越少。所以所编写的程序访问数据时,应尽可能访问层次较高的结构这样才是局部性较好的程序。

6.1存储技术

静态RAM(SRAM)—层次更高,速度更快,价格更高
动态RAM(DRAM)—层次稍低,速度略慢,价格稍低

存储结构:
CPU寄存器-----L1高速缓存(SRAM)----L2高速缓存(SRAM)----L3高速缓存(SRAM)----主存(DRAM)----固态硬盘(闪存等)

缓存命中:当CPU需要一个存储器中的数据时,在他的高速缓存中找到了这个数据的副本,称为缓存命中,比直接去低级的存储器读取速度更快。

第7章 链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值