CPU 是计算机的大脑,它主要和内存进行交互,从内存中提取指令并执行它
程序实际上就是一条条指令,程序的运行过程就是指令一步步的执行起来,cpu本质上就是执行指令;
用于控制整个cpu的工作, 主要包含 指令寄存器(IR), 程序计数器(PC), 地址寄存器(AR), 指令编译器(ID)
当cpu执行一条指令时, 先把他从内存储器到缓冲寄存器中, 在送入IR暂存, 指令编译器根据IR的内容产生各种微操作指令, 控制其他的组成部件工作, 完成所需的功能
pc具有寄存信息和计算两种功能, 又称为指令计数器, 程序执行分为两种情况 , 一是顺序执行, 二是转移执行, 当程序开始执行前, 将程序的起始地址送入pc, 该地址在程序加载的内容是确定的, 因此pc的内容即是程序第一条指令的地址, 执行指令时cpu自动修改pc的内容, 以便使其保持的总是将要执行的下一条指令的地址
AR保存当前cpu所访问的内存单元的地址, 由于内存和cpu存在着操作速度上的差异, 所以需要使用AR保持地址信息, 直到内存的读写操作完成为止
ALU是运算器的重要组成部件, 负责处理出局, 实现对数据的算术运算和逻辑运算
在对内部存储器进行读写操作时, 用DR暂时存放由内存储器读写的一条指令或一个数据, 将不同时间段内读写的数据隔离开来, DR作为cpu和内存, 外部设备之间的数据传送中转站
我们知道, cpu处理的指令是从缓存中获取的, cpu处理指令的速度非常快, 但是将指令从缓存中加载到寄存器中的速度相对来说是比较慢的, 那么怎么处理这个问题呢? 接下来就要引出缓存的概念了
寄存器是cpu的组成部分, 是一种直接整合到cpu中的, 有限的告诉访问速度的存储器, 他是有一些与非门组合成的, 分为通用寄存器和特殊寄存器, cpu访问寄存器的速度是最快的, 但是寄存器的容量非常小
缓存时cpu的一部分, 位于cpu中
在没有缓存之前, cpu一直都是在内存中读取数据的, 但由于两者速度差异, cpu每次都要等内存的’回信’, 缓存的设计是用来解决cpu与内存速度差异问题
假设一个8核的cpu, 每个核都有自己独立的L1 Cache和L2 Cache, 而L3 Cache是8核共享的
缓存大小 : 离核心越近, 等级越高越小, 速度越快, L1 Cache缓存最小, 速度最快
内存的数据会笑加载到共享的L3 Cache中, 在加载到每个核心独有的L2 Cache, 最后进入到最快的L1 Cache
略
cpu从寄存器读取最快, 接下来是缓存 , 接下来是内存
运行的程序的是操作系统,可以操作计算机硬件
在内核态运行的指令被称为特权指令, 能访问所有的内存空间和对象, 且所占用的处理机是不允许被抢占的
运行的程序是应用程序,不能操作计算机硬件
在用户态执行的指令叫非特权指令, 能访问的内存空间和对象收到限制, 处理机会被抢占
应用程序可以通过操作系统提供的一些api, 库函数来操作硬件, 实现由用户态转到内核态
比如发生缺页异常, 也会由用户态转化为内核态
为什么从用户态转化为内存态比较耗时呢 ?
因为涉及到了上下文切换
下一篇文章具体讲解cpu的上下文切换