CPU的一些基本知识总结( 三 )


并且 , 如果线程1在某一时刻获取了该核执行进程的能力 , 假设此刻该进程发出了IO请求 , 于是线程1掌握的执行进程的能力 , 就可以被线程2获取 , 即切换到线程2 。这是在执行线程间的切换 , 是非常轻量级的 。(WIKI: if resources for one process are not available, then another process can continue if its resources are available)
9、多线程可能会出现一种现象:假如2核4线程CPU , 有两个进程要被调度 , 那么只有两个线程会处于运行状态 , 如果这两个线程是在同一核上 , 则另一核完全空转 , 处于浪费状态 。更期望的结果是每核上都有一个CPU分别调度这两个进程 。
关于CPU上的高速缓存
1、最高速的缓存是CPU的寄存器 , 它们和CPU的材料相同 , 最靠近CPU或最接近CPU , 访问它们没有时延(<1ns) 。但容量很小 , 小于1kb 。

  • 32bit:32*32比特=128字节
  • 64bit:64*64比特=512字节
2、寄存器之下 , 是CPU的高速缓存 。分为L1缓存、L2缓存、L3缓存 , 每层速度按数量级递减、容量也越来越大 。
CPU的一些基本知识总结

文章插图
 
3、每核心都有一个自己的L1缓存 。L1缓存分两种:L1指令缓存(L1-icache)和L1数据缓存(L1-dcache) 。L1指令缓存用来存放已解码指令 , L1数据缓存用来放访问非常频繁的数据 。
4、L2缓存用来存放近期使用过的内存数据 。更严格地说 , 存放的是很可能将来会被CPU使用的数据 。
5、多数多核CPU的各核都各自拥有一个L2缓存 , 但也有多核共享L2缓存的设计 。无论如何 , L1是各核私有的(但对某核内的多线程是共享的) 。




推荐阅读