计算机是如何工作的
冯诺伊曼体系
执行与存储分离
访问速度 cpu>>内存>硬盘
存储空间 硬盘>内存>>cpu
键盘,屏幕,音箱都属于IO设备 U盘这种属于外部存储设备
cpu
cpu基本情况
x86 arm 指令集架构
一个cpu对应着一个指令集 对应的汇编语言机器语言不同
16位 32位 64位 cpu 对应着不同的内存最大容量(寻址空间)
cpu的构成
门电路 => 半加器 =》 全加器 =》 加法器 =》 ALU运算器 =》 CPU
门电路由晶体管构成 晶体管小到nm级别 目前最先进的制程 3nm 越小集成程度越高 算力更强
但是晶体管不能无限小,小到一定程度普通物理定律失效,进入量子力学领域,但也不能把cpu规模做大,规模做大,加工时良品率会大大降低 所以最后cpu只能朝着多核心的方向发展提升算力
多核cpu
每个核心都相当于一个一个完整的cpu 软件要将任务拆分到每个核心去执行,由此引入了并发编程
在每个物理核心的基础上将一个核心当成两个核心来用,两个逻辑核心,这就是超线程技术,所以可以看到8核16线程
cpu频率
描述单个cpu核心工作的速度 hz 描述一秒钟执行多少次(时钟周期)
一个指令 可以看为一个时钟周期搞定,运算速度极快
睿频技术 cpu频率动态发生变化,根据任务数决定
cpu单核性能 基准频率(最小) 最大睿频
指令执行
寄存器: cpu上存储数据的单元,主要是为了支持cpu完成运算,保存中间结果,访问速度比内存快三到四个数量级,空间极小
指令其实就是内存中的一段数据,写好的代码要想运行,需要操作系统先把代码编译成的指令加载到内存中,然后cpu才能执行
所以,存储是与执行分离的,指令周期包括去内存中取指令,然后才能执行的操作,而数据也需要从内存当中取出,处理完之后再返回到内存当中,解耦合设计,去内存中取指令相较于执行指令来说,速度非常非常慢,开销大,所以要通过缓存和流水线等技术进行优化
现在cpu执行速度过快,内存的访问速度已经大大跟不上cpu执行速度,因此需要引入缓存设计来解决内存影响指令执行效率的问题,现在的缓存集成到了cpu上,L1,L2,L3,流水线技术则是cpu在执行的时候就将去内存中将下一条指令取出,执行完之后马上执行下一条指令。
cpu解析指令,需要指令表,指令表是写死到cpu中的
操作系统
本质上是一个软件,作用是管理硬件设备与为其他软件提供稳定的运行环境,操作系统还为不同的硬件设备提供统一的操作api,抽象封装之后,开发不必再关注硬件,而是面向操作系统开发即可(多线程编程,网络编程)
JVM又是对系统的抽象封装,最终结果就是我们只需要使用JVM提供的API就可以控制不同的系统 完成编程效果,与C++不同,Java不鼓励多进程编程,因为每一个Java进程都需要开启一个JVM虚拟机,需要耗费大量资源