目录
CPU
什么是cpu
cpu全称是Central Processing Unit, 翻译为中央处理单元,可以说是计算机最为核心的部件。它就像是人类的大脑,起到获取、处理指令等核心逻辑。cup由几十亿个晶体管组成,这些晶体管的多少决定着算力的大小。
CPU的工作
cpu的核心是从程序或者应用程序获取指令并执行计算。主要由三个阶段:提取指令、解码、执行。cpu从RAM(Random Access Memory -主存)中提取指令,然后解码指令的实际内从,由cpu的相关部分负责执行该指令。
CPU的内部结构
从功能上看cpu由:控制器、运算器、时钟、寄存器四部分组成,各个部分通过电信号通信。
- 寄存器: 暂存指令、数据和地址,是内存的一种
- 控制器: 将指令、数据从主存上读取到寄存器,根据指令结果控制计算机
- 运算器: 读入寄存器的数据进行算数处理和逻辑运算
- 时钟:发出cpu时钟信号
下面是java程序运行的大致流程,jvm虚拟机屏蔽了os的差异,将编译的成字节码文件翻译系统可以识别的机器码, 最后交由cpu执行。内存是程序和cpu临时存储介质。
cpu主要由两个部分组成:
- 控制单元:提取指令并解码执行
- 算数逻辑单元(ALU)处理算数和逻辑运算
寄存器
cpu是寄存器的集合,一个cpu大概有几十个寄存器。将选取程序计数器、标志寄存器,这两个比较重要的寄存器进行讲解,其他寄存器有兴趣的可以查阅相关资料。
程序计数器
程序计数器(Program Counter)是用来存储下一条指令所在单元的地址。
在程序执行时,pc初始值为程序的第一条指令。在顺序执行的程序时,控制器根据pc地址从内存中取出一条指令,然后分析、执行指令,同时将pc值加一指向下一条执行的指令。
下面是一个简单的例子,将a,b赋值,然后相加显示到显示器上。
程序计数器控制程序的流程。
int a =1,b=2;
System.out.println(a + b);
标志寄存器
cpu在进行计算的时候,标志寄存器会根据运算结果自动设定,运算结果正、负、零三种,分别由三个标志位表示。标志寄存器的第一、二、三位为1时,分别表示正数、0、负数。
cpu执行指令过程
cpu执行指令的过程可以分为5个部分:取指令、指令译码、执行指令、访问存储、结果回写。
- 取指令:将指令从内存读取到寄存器。
- 指令译码:指令译码器按照预定的格式,对取出的指令进行拆分和解释,识别区分不同的指令和各种获取操作数的方式。
- 执行指令:完成指令的具体操作,实现指令功能。
- 访问存储:需要从主存中提数时,会根据指令地址得到操作数在主存的地址,然后从主存中读取操作数用做运算。
- 结果回写:作为最后阶段,将前面阶段执行结果回写到存储介质:如cpu将结果回写到寄存器中,以便后续指令执行。
内存
什么是内存
内存(Memory)是计算机最重要的部件之一,是程序和cpu沟通的桥梁。计算机所有的程序都是运行在内存中的,内存通常又称为主存。内存的作用主要是存放cpu运行的数据,以及和硬盘等外部存储设备交换的数据。
计算机在运行的中,cpu会将需要的数据存储到内存中进行运算,等运算完成之后将结果传送出来。
内存的物理结构
相信大家一定看过下面的图片,这是一个海力士的4G内存条。记得上大学的时候卖的32位笔记本,当时电脑内存是2G,后面玩游戏感觉卡,又去买了个2G的内存条,当时花了我两百多。现在pc内存一般都是64位16G以上了,开几个办公个软件就占用了10G的内存。
存储内部就是IC电路组成的,主要是三种存储器:
- 随机存储器(ROM): 可以读写数据,掉电数据丢失;
- 只读存储器(RAM): 只可以读取数据,掉电数据不会丢失;
- 高速缓存(Cache):通常分为L1、L2、L3 Cache三级缓存,数字越大读写速度越慢越便宜,容量越大,L1 Cache 容量是多少KB,L2、L3Cache容量是多少MB。工作流程是:Cpu从cache中获取数据,没有数据再从主存中获取数据,然后主存缓存到cache中,cpu再次获取数据时直接从Cache中获取数据。
内存ic引脚的配置:
A0-A9是地址信号,D0-D7是数据信号,一次可以输入8bit = 1byte的数据,A0-A9地址信号可以表示0000 0000 00 -- 1111 1111 11共计2的10次方=1024个地址,每个地址存储1byte数据,那么整个ic可以存储1024*1byte=1kb的数据。实际情况下,一个内存的ic将会有更多的引脚可以存储更多的数据。
内存的现实模型
如上图每层可以存储1byte数据,一共有1024层。
我们程序的数据不仅有数据数值,还有数据类型。按照数据类型,数据占据的层数不同。
下图中a是byte类型的数据,那么分配内存的时候地址是00000 00000,占用一层;short类型的b数据,大小是16位占用两个字节,所以分配的内存是连续的两层:00000 00001 00000 00002。
byte a;
short b;
磁盘
什么是磁盘
内存和磁盘都是存储设备,内存是通过电信号存储数据,磁盘是通过磁记录技术实现存储的。相比于内存高速、昂贵的存储设备,磁盘特点是速度较慢、价格低廉。内存的数据在电脑断电后会丢失,磁盘的数据会永久保存。内存是内存存储设备,磁盘是属于外部存储设备。
磁盘的物理结构
磁盘表面被磁道分为不同的同心圆,然后每个磁道被划分为若干段,每段称作为扇区。扇区的大小一般是512个字节,一个扇区又称作为1簇,1簇可以是1kb、4kb、64kb。文件在存储到磁盘时最小单位是簇。
磁盘缓存
由于磁盘读取数据速度相对较慢,为了加快访问数据,设计了磁盘缓存。像从内存中读取数据缓存到高速缓存中一样,磁盘也有缓存。首次读取磁盘的数据时会缓存下来,接下来获取相同数据时就可以直接从缓存中获取数据,这样大大提高了读取速度。7200r/s磁盘的寻址速度是1/7200 = 0.14ms,而内存的寻址速度是ns级别的,两则速度相差了大概4、5个数量级。
下图是磁盘缓存逻辑图:
虚拟内存
虚拟内存是内存和磁盘交互的第二个介质。
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。