代码改变世界

1.1 cpu运行原理

2020-11-20 11:26  kuter  阅读(686)  评论(1)    收藏  举报

cpu 原材料二氧化硅经过一系列工艺加工制作集成上亿颗晶体管,通过逻辑电路连接而成。

cpu 执行指令是通过时钟发生器(震荡通电断电:主频),一步一步读取内存中的数据进行计算(高低电位的转换),执行多少步取决于指令所需要的时钟周期;计算完成写回电信号;高电位是1,低电位是0;cpu是多少位就是每次cpu能处理的01的个数;即:32位cpu每次可以处理32位01,64位的cpu每次能处理64位的01;

cpu只是认识高低电位,即0,1;

cpu 组成 :

1、PC(程序计数器:指令地址)、

2、Registers(寄存器:暂时存储cpu计算需要用到的数据,几十上百个,每个寄器的作用不相同,如inter的:AX(16位) EAX(32位) RAX(64位),寄存器位数也是常说的多少位的cpu)

3、ALU 全称:Arithmetic & Logic Unit  运算逻辑单元,cpu运算用的

4、cu 全称: control Unit控制单元,作控制用,比如中断信号

5、mmu 全称:Memory Management Unit 内存管理单元

6、Cache 缓存等组成 

超线程cpu 指的是:一个ALU对应多组(PC和Registers)

缓存:是因为cpu到内存的速度太慢了,cpu到Register的时间小于1ns,到L1(1级缓存)约1ns,至L2约3ns,到L3约15ns,到内存约80ns,cpu到Register与cpu到内存比大约是1:100;

多核cpu,L1和L2位于cpu的同一核内,L3多核共享

缓存 :按块读取,DMA Direct Memory Access 直接内存访问,直接把硬盘的数据按块读取到内存中;

Cache line缓存行,缓存行越大,局部性空间效率高,读取时间越慢,缓存行越小,局部性空间效率低,读取时间越慢;取折中值 :inter cpu取的64字节

多核cpu缓存数据要保证一致性,缓存一致性协议,inter采用的MESI(Modify:修改,Exclusive:独享,Share:共享,Involved,失效)协议,有的数据一个缓存行装不下,跨越多个缓存行或者无法被缓存的数据,就必须使用缓存锁,锁总线,只能一个核去访问,基它cpu访问不了;

缓存对齐:对于某些特殊敏感(经常修改)的数字,会存在多线程高争取的访问,为了保证不发生伪共享(即:不同数据存在同一缓存行,cpu之间要保证数据一致性,性能会比较低)JDK8:采用注解:@Contended 加虚拟机参数:-XX:RestrictContended

汇编语言:本质是01,但是01不利于人们的使用,用一个便于人们理解的字母等代替了一个一个32位或者64位的01;