64 位多处理器多任务管理
· 阅读需 38 分钟
本文的目的是实现在 64 位的多处理器环境下,多 CPU 并行执行任务。
高速缓存

缓存线
缓存是由相同长度的缓存线组成的。
缓存线的尺寸是组成缓存数据的基本长度。
即使只访问一个字节,也要从内存中加载该字段前后以组成一个完整的缓存线。
缓存线尺寸可以通过 cpuid 指令获得。数据按缓存线尺寸对齐,也就是说被缓存的数据在内存中一定起始于一个能被 32 整除的地址。
高速缓存缓存数据是跟内存的位置相关的。如果你要存储的数据刚好是一个缓存线尺寸,但实际上数据在内存中存储时,并不是从缓存线尺寸对齐的位置开始的,那么实际上还是要缓存两个缓存线尺寸的内存区块的。这种现象称为 "缓存行分裂"(Cache Line Splitting)。在多核环境下可能引发假共享问题(这个以后再探究)。
缓存基本概念
- 缓存空间有限,需要淘汰已存在的缓存来腾出空间,这就是缓存线替换
