硬盘:CPU你太快了!这可咋整!

 

在cpu内部有专门用于存储数据和指令的高速缓冲区 L1和L2。那多核CPU之间是怎样共享数据的呢?L3。cpu不能直接从硬盘中处理数据,只能通过中间层即缓冲区。  将所需的数据加载到缓冲区中后,然后将使用高频的数据或指令加载到L3、L2、L1中,这样cpu在操作高频数据或指令的时候就不需要再从缓冲区中获取了。通过将数据缓存在多个层中,cpu可以以更快的速度获得到数据。

在没有缓存的时候,需要向硬盘直接发起请求。当有缓存的时候,如果在缓存中命中了50%的请求,则此时仅有50%的请求直接向硬盘发起了请求。

由下图中HHD的处理每条指令所需时间是10ms,也就是在使用一块此类型的HHD时,每秒可以处理100次请求。当有5000次直接请求到HHD的时候,已经超过了此HHD的最大负荷。

当使用一块此类型的内存的时候,处理一条指令的时间是100nm,也就是每秒可以处理10 000 000次请求。可想而知,使用内存来缓存数据,可以肩负起大量的请求,当命中率较高时,则仅有少量的请求直接访问HHD来获取数据。

将高频数据或指令缓存在L1,L2,L3中,并在内存中缓存数据,相当于建立了两层隔离墙,穿过这两层隔离墙的请求才会通过访问HHD来获取数据。

我们通过在CPU中添加高速cache的方式,解决了CPU与内存之间速度严重失衡的问题。

在多核CPU之间我们通过L3高速cache来实现数据的共享,既然有多个核心,就会出现数据的一致性的问题。如果要更新的数据是1号内核所独有的,只需要直接在1号内核的高速cache中修改就可以了,如果要修改的信息在2号内核中也存在,则需要将2号核心中的数据标记为‘已修改’。如果需要更新的数据不是1号内核所独有的,就需要将2号内核中的对应的数据的状态修改为‘无效’,然后再将1号内核中的对应数据更新。那么在什么时候这个独有的数据会被同步到2号核心呢?就是在读取这个数据的时候,它就会变成共享状态。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值