Android线程篇(六):CPU内存架构

作者:Android开发者社区
地址:https://www.jianshu.com/p/3d1eb589b48e
声明:本文是 Android开发者社区 原创投稿,转发等请联系原作者授权。

有人会问,为什么要讲CPU的内存架构呢?代码的运行他离不开CUP,理解好CUP内存架构,才能明白Java虚拟机是如何和CUP联合工作的。So,这篇文章给大家粗浅的来讲解一下CPU的内存架构,如有不当之处,还忘各位读者指正……

来一张,现在大多数计算机硬件架构的简图:

现在的计算机,基本都是多个CPU,并且有些CPU还是多核的,因此你的Java程序中,每个CUP执行一个线程,并且俩个或者俩个以上的CPU在同时执行任务,这种情况就是我么所说的:并发。

什么是寄存器,点击访问,百度百科:寄存器

每个CPU都有自己的寄存器,CPU在寄存器上执行操作的速度,远远大于在主内存中。

每个CPU还有自己的高速缓存层,CPU访问缓存层的速度快于访问主存的速度,但比访问内部寄存器的速度还要慢一点。

一个计算机还包含一个主存。所有的CPU都可以访问主存。主存通常比CPU中的缓存大得多。

通常情况下,当CPU需要读取主内存的时候,他会将部分数据读到,CPU缓存中,甚至可以将CPU缓存中的部分数据读到寄存器中,然后在寄存器中操作,操作完成后,需要将数据写入主存中的时候,先将数据刷新至CPU缓存中,然后在某个时间点将数据刷新到主存中。

当CPU需要在缓存层存放一些东西的时候,存放在缓存中的内容通常会被刷新回主存。CPU缓存可以在某一时刻将数据局部写到它的内存中,和在某一时刻局部刷新它的内存。它不会再某一时刻读/写整个缓存。

For example:
int i=i+1
当线程执行这个语句时,会先从主内存中读取i的值,然后复制一份到CPU的高速缓存中,然后CPU执行指令对i进行加1的操作,然后将数据写入高速缓存,最后将最新的i值刷新到主存当重。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值