计算机操作系统
第一节
查看CPU中cache的大小
cat /sys/devices/system/cpu/cpu0/cache/index0/size
(index1,2,3)
cpu访问各个位置的差异
如果L1 cache为1秒 访问内存2分钟,SSD1.7天,机械硬盘为4个月
cpu cache的数据结构和读取过程是什么样的?
CPU 读取数据的时候,⽆论数据是否存放到 Cache 中,CPU 都是先访问 Cache,只有当 Cache
中找不到数据时,才会去访问内存,并把内存中的数据读⼊到 Cache 中,CPU 再从 CPU Cache 读取数据。
cpu怎么知道要访问的内存数据呢?
cpu通过直接映射的方式找到cache对应数据,直接映射这个策略:把内存块的地址直接映射到cpu的缓冲块上的地址,采用一个叫取模运算的方式,得到内存块Block对应的cpu line缓冲块
访问指定内存块实战
举个例⼦,内存共被划分为 32 个内存块,CPU Cache 共有 8 个 CPU Line,假设 CPU 想要访问第 15 号内存块,如果 15 号内存块中的数据已经缓存在 CPU Line 中的话,则是⼀定映射在 7 号 CPU Line 中,因为 15 % 8 的值是 7。
cpu访问一个内存地址会经历这几个步骤
先索引找到cpu缓存块位置,判断有效位判断组标记,然后根据偏移量,读取相应的字
中间有不对的直接就重新读取内存数据。
如何写出让cpu跑的更快的代码
访问cache会比访问内存快100倍,放在cache中的称为缓存命中,所以跑的快也意味着缓存命中率高,一个cache分为数据缓存和指令缓存。