一、冯诺依曼计算机模型详解
重要性:现代计算机的产生是基于冯诺依曼计算机模型设计的。
计算机五大核心组成部分
- 运算器:顾名思义,主要进行计算,算术运算、逻辑运算等都由它来完成。
- 存储器:这里存储器只是内存,不包括内存,用于存储数据、指令信息。
- 控制器:控制器是是所有设备的调度中心,系统的正常运行都是有它来调配。
- 输入设备:负责向计算机中输入数据,如鼠标、键盘等。
- 输出设备:负责输出计算机指令执行后的数据,如显示器、打印机等。
根据冯诺依曼计算机模型发展至今,衍生出来的硬件很多,但对于我们程序员来说比较核心的有两部分:CPU、内存,所以下面我们重点学习的也是这两部分。
二、CPU
定义:CPU(central processing unit),即*处理器。在冯诺依曼计算机体系中,CPU一般是由控制器和运算器两部分组成。
PS:一个计算机可以装多个CPU【主板决定的】
PS:多个CPU和多个核是不一样的概念,一个CPU可以有多个核
PS:核又分为逻辑核和物理核。【windows可以通过任务管理器查看】
//打印逻辑核数量 int i = Runtime.getRuntime().availableProcessors();
CPU指令结构
CPU内部结构:
- 控制单元
- 运算单元
- 数据单元
下面通过一张图来简单了解一下CPU和内存交互的模型:
控制单元
定义:控制单元是整个CPU的指挥控制中心,对协调整个电脑有序工作极为重要。
组成:
- 指令寄存器IR(Instruction Register)
- 指令译码器ID(Instruction Decoder)
- 操作控制器OC(Operation Controller)
工作流程:
根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中
通过指令译码器ID进行指令译码(分析)确定应该进行什么操作
操作控制器OC按确定的时序,向相应的部件发出微操作控制信号。
运算单元
定义:运算单元是运算器的核心。可以执行算术运算和逻辑运算。
工作流程:运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的。【执行部件】
存储单元
定义:CPU 中暂时存放数据的地方
组成:
- CPU片内缓存Cache
- 寄存器组
PS:CPU 访问寄存器所用的时间要比访问内存的时间短。寄存器是CPU内部的元件,拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。
CPU缓存结构
现代CPU为了提升执行效率,减少CPU与内存的交互(交互影响CPU效率),一般在CPU上集成了多级缓存架构,常见的为三级缓存结构:
- L1 :分为数据缓存和指令缓存,逻辑核独占
- L2 :物理核独占,逻辑核共享
- L3 :所有物理核共享
PS:L1、L2内核独享 L3内核共享【均无法跨CPU共享】
存储器存储空间大小:内存>L3>L2>L1>寄存器
存储器速度快慢排序:寄存器>L1>L2>L3>内存
CPU做多级缓存【一般3级】的原因:
- CPU发展很快【摩尔定律18个月性能提升一个档次】,内存发展跟不上。
- CPU和内存插在不同的地方上,通信要通过物理的连接通道,影响性能。
缓存行
定义:缓存的最小存储区块
大小:通常为64byte【字节】
举个
相关文章
- 计算机原理(一)操作系统底层浅析
- 计算机组成原理学习笔记(一) - 玫瑰奶奶
- 计算机网络-AAA原理概述-一、AAA概述
- 论文翻译 | 【深入挖掘Java技术】「底层原理专题」深入分析一下并发编程之父Doug Lea的纽约州立大学的ForkJoin框架的本质和原理
- Java CAS同步机制 原理详解(为什么并发环境下的COUNT自增操作不安全): Atomic原子类底层用的不是传统意义的锁机制,而是无锁化的CAS机制,通过CAS机制保证多线程修改一个数值的安全性。
- 操作系统底层原理与Python中socket解读
- Dubbo学习(一) Dubbo原理浅析
- mysqll底层分享(一):MySQL索引背后的数据结构及算法原理
- lucene底层数据结构——底层filter bitset原理,时间序列数据压缩将同一时间数据压缩为一行
- 【java并发编程艺术学习】(三)第二章 java并发机制的底层实现原理 学习记录(一) volatile