java底层知识_Java底层知识总结

1.找到数据的指针。(指针可能会存放在寄存器中,所以这一步就已经包括寄存器的全部工作了)

2.将指针送往内存管理单元(MMU),由MMU将虚拟的内存地址转换成实际的物理地址。

3.物理地址送往内存控制器(Memory Controller)。由内存控制器找出该地址在哪一根内存插槽上。

4.确认数据在哪一个内存块上,从该块读取数据

5.数据先送回内存控制器,再送回CPU,然后开始使用。

现在的CPU一般有3级缓存架构(后面会讲到),为什么需要CPU Cache呢?因为CPU震荡的频率太快了,快到主存跟不上了。这样在处理器时钟周期内,CPU常常要等待主存,浪费资源。所以Cache的出现,是为了缓解CPU和内存之间速度的匹配问题

带有CPU Cache的CPU执行计算的流程:

1.将程序和数据加载到主内存中。

2.将指令和数据加载到CPU Cache。

3.CPU执行指令,将结果写到CPU Cache。

4.CPU Cache写回到主内存中。

bb336fb2a339be89225225aadf74cd63.png

CPU Cache的意义在何处?

1.时间局部性:如果某个数据被访问,那么在不久的将来它很可能被再次访问。

2.空间局部性:如果某个数据被访问,那么与它相邻的数据很快也可能会被访问。

在CPU访问存储设备时,无论是存取数据或者是存取指令,都趋于聚集在一片连续的区域中,被称为局部性原理。

说到这里,我要说一个协议,CPU多级缓存一致性协议(MESI)。这个协议用于保证多个CPU Cache之间缓存共享数据的一致性。我的电脑就有CPU三级缓存,后面会详细介绍CPU三级缓存。

在CPU里面,缓存是以缓存行(Cache line)的形式存在。Cache line缓存存储数据的单元,每个Cache line有4种状态,分别是Modified(修改)、Exclusive(独占)、Shared(共享)、Invaild(无效)。一个Cache line有64Byte(字节,一个字节等于8bit)

4种状态详细说明如下

bb336fb2a339be89225225aadf74cd63.png

对于M和E状态而言总是精确的,它们和该缓存行的真正状态是一致的,而S状态可能是非一致的。如果一个缓存将处于S状态的Cache line作废了,而另一个缓存实际上独享了该Cache line,但该缓存却不会将该Cache line设置为E状态。

这是因为其他缓存不会广播它们作废该Cache line的通知,同样由于缓存并没有保存该Cache line的Copy数量,即便有这种通知也无法确定自己是否已经独享了该缓存行。

可以看出E状态是一种投机性优化。如果一个CPU想修改一个处于S状态的Cache line,总线事务需要将所有Cache line的Copy变成Invalid状态,而修改E状态的缓存不需要使用到总线事务。

关于CPU的计算机基础知识

存储单元是以字节为单位的,1B=8b 1KB=1024B 1MB=1024KB 1GB=1024MB

2^32 = 4GB 2^64=1800万TB

比如64位的操作系统只是字节的64位,数据总线是64根,真正决定内存大小的是地址总线的数目,即寻址空间。

数据总线:

1.是CPU与内存或者其他器件之间的数据传送的通道。

2.数据总线的宽度决定了CPU和外界的数据传送速度。

3.每条传输线一次只能传输1位二进制数据,比如32位操作系统,32根数据线一次可传送32位二进制数据,也就是4个字节。

4.数据总线是数据线数量之和。

地址总线:

1.CPU是通过地址总线来执行存储单元的。

2.地址总线决定了CPU所能访问的最大内存空间大小。比如32位操作系统有32根地址线,那么CPU就能访问2^32=4GB存储单元。

3.地址总线是地址线数量之和。

控制总线:

1.CPU通过控制总线对外部器件进行控制。

2.控制总线的宽度决定了CPU对外部器件中的控制能力。

3.控制总线是控制线数量之和。

来总结一波,每个CPU芯片都有很多管脚,这些管脚和总线相连。也就是说这些管脚引出总线。一个CPU可以引出3种总线的宽度标志了这个CPU的不同方面的性能。

地址总线的宽度决定了CPU寻址能力。

数据总线的宽度决定了CPU与其他器件进行数据传送时一次数据传送量。

控制总线的宽度决定了CPU对系统中其他器件的控制能力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值