0
点赞
收藏
分享

微信扫一扫

CPU及内存

椰果玩安卓 2022-03-31 阅读 44
java

1.CPU三级缓存

为什么要用三级缓存?

        内存跟不上CPU的发展速度,CPU离内存较远,减少CPU与内存的交互,而且考虑到工艺成本,只做一个L1缓存的话,会比较占空间

速度:寄存器>L1>L2>L3

大小:L3>L2>L1>寄存器

L3被当前CPU所有核共享,L1和L2为内核所独享。。。。一个物理核可以处理2个线程,所以一般逻辑是物理核的2倍。

缓存最小存储单元叫缓存行,为64Byte。

CPU从内存读取数据的过程:

        加入内存中有数据X=0,CPU也从L1中取,没有再去L2中取,没有再去L3中取,没有再去内存中取,拿到数据后,复制数据到L3,再复制到L2,再复制到L1,再复制到寄存器,进行运算,所以以后不用每次都去内存中取。

2.空间局部性

        CPU好不容易从内存中拿一回数据,所以它要拿跟临近的,连续的数据都要拿过来。

3.时间局部性

        缓存中拿到了一个数据,可能不会立马丢掉,有可能接下来一段时间内还会用到(时间不能太长),比如:循环、递归、方法的反复调用。

4.线程的上下文切换

        举例说明:CPU执行了2个线程T1和T2,当T1还没有执行完,则先保存T1的执行结果,切换到T2执行。

5.CPU运行的安全级别

        r0>r1>r2>r3

r0:内核态,操作系统运行级别

r3:用户态,其他第三方运行级别

jvm创建线程有操作系统创建(PThread 线程库),由用户态切到内核态,所以有两个堆栈,分别在用户空间和内核空间,操作系统执行完还得切回用户态

6.线程模型

KLT:内核线程模型--java,线程由内核调度

ULT:用户线程模型--使用比较少,线程创建都是自己做的

举报

相关推荐

0 条评论