汇编语言执行过程
- 汇编的本质:助记符,本质就是机器语言
- 计算机通电,CPU读取内存程序
- 时钟发生器不断震荡,通断电,推动CPU一步步执行
- 执行多少步骤取决于指令需要的时钟周期
- 计算完成后,回写,输出给显卡
CPU制作与原理
- 沙子提纯,做成硅锭,切片,晶圆
- 涂抹光刻胶、光刻(非常复杂,光刻机一台1~2亿)
- 蚀刻、清除光刻胶、电镀、抛光
- 铜层、测试、切片、封装
- 思考:晶体管是如何工作的?
最重要的是要解决用什么代表数字?后来发现用电是最合适的
量子计算机
- 量子比特,1比特既可以代表0,也可以代表1
- 还可以同时代表0和1
- 还可以代表0和1之间的任意状态
- 量子计算机可轻松暴力破解现在常见加密算法
计算机基本组成
- PC:程序计数器,记录当前指令地址
- Registers:寄存器,暂存CPU计算需用到的数据,分很多种,离CPU最近,速度最快
- ALU: 运算逻辑单元
- CU: 控制单元
- MMU: 内存管理单元
- cache:
超线程
- 一个ALU 对应多个PC+Registers
- 所谓的四核八线程大概就是这种设计
存储器的层次结构
- CPU内部存在多级缓存架构设计
- registers < 1ns
- L1 cache ≈ 1ns
- L2 cache ≈ 3ns
- L3 cache ≈ 15ns
- main memory ≈ 80ns
- L1 与 L2 为核心独享
- L3 为多核心共享
CPU 乱序执行
- 本质是同步执行,提升计算效率
- CPU会对指令重排
- java中可加volatile禁止指令重排序
- CPU层面如何禁止重排序?内存屏障
- 内存屏障:两条指令存储在内存中,中间存在一个分割线,表示上下两个指令不可互换
- intel使用3条原语指令或 lock汇编指令实现内存屏障
- jvm在写操作与读操作前后都加了内存屏障
- jvm内部有一个hanppens-before原则,一共8条规则
- 不管如何重排序,单线程执行结果一定保持不变
- NUMA:优先分配在CPU最近的内存中