CPU缓存行学习笔记

硬件基础知识

CPU的制作过程

Intel cpu的制作过程

https://haokan.baidu.com/v?vid=11928468945249380709&pd=bjh&fr=bjhauthor&type=video

CPU是如何制作的(文字描述)

https😕/www.sohu.com/a/255397866_468626

CPU的原理

计算机需要解决的最根本问题:如何代表数字

晶体管是如何工作的:

https://haokan.baidu.com/v?vid=16026741635006191272&pd=bjh&fr=bjhauthor&type=video

晶体管的工作原理:

https://www.bilibili.com/video/av47388949?p=2

汇编语言(机器语言)的执行过程

汇编语言的本质:机器语言的助记符 其实它就是机器语言

计算机通电 -> CPU读取内存中程序(电信号输入)

->时钟发生器不断震荡通断电 ->推动CPU内部一步一步执行

(执行多少步取决于指令需要的时钟周期)

->计算完成->写回(电信号)->写给显卡输出(sout,或者图形)

计算机的组成:

核心:CPU和内存

CPU的组成

PC:Program Counter 程序计数器(记录当前指令的地址)

Registers(寄存器): 暂时存储CPU计算需要用到的数据

ALU:Arithmetic & Logic Unit运算单元

CU -> Control Unit 控制单元

MMU -> Memory Management Unit 内存管理单元
在这里插入图片描述

超线程:一个ALU对应多个PC| Registers所谓的四核八线程
在这里插入图片描述

在这里插入图片描述

因为寄存器速度很,主存和磁盘的速度慢,寄存器一次计算需要等很久,因此在中间加入了缓存的概念。
在这里插入图片描述

在这里插入图片描述

按块读取:读取相邻的一系列数字。

不管是从硬盘往内存读还是内存往缓存读,都是应用的按块读取。

程序局部性原理,可以提高效率

充分发挥总线CPU针脚等一次性读取更多数据的能力

在这里插入图片描述

数据会从内存将一个缓存行一层层从L3往L1读。

如果两个CPU需要保持一致,需要准从MESI CACHE 一致性协议

在这里插入图片描述

总线锁:从内存和缓存L1之间将线程锁住,直至多个CPU之间的数据修改完毕。因为其他所有线程停止工作效率低,所以一般能用一致性协议使用一致性协议。

缓存行:

缓存行越大,局部性空间效率越高,但读取时间慢

缓存行越小,局部性空间效率越低,但读取时间快

取一个折中值,目前多用:64字节

缓存行对齐:

对于有些特别敏感的数字,会存在线程高竞争的访问,为了保证不发生伪共享,可以使用缓存行对齐的编程方式。

JDK7中,很多采用long padding提高效率

在这里插入图片描述

JDK8,加入了@Contended注解(实验)需要加上:JVM -XX:-RestrictContended。(可以让变量放在不同的缓存行)
在这里插入图片描述

以让变量放在不同的缓存行)

[外链图片转存中…(img-TM7gPN4d-1611513152257)]

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页