深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
4、CPU的控单元
五、指令周期
1、指令周期的数据流
一、计算机组成概述
本章节从计算机简介、组成、执行过程、性能指标四个方面进行论述。
1.计算机系统简介
计算机系统软硬件
硬件:计算机的实体,如主机、外设等。
软件:由具有各类特殊功能的信息(程序组成),可分为两类:系统软件、应用软件。
计算机系统层次结构
1.1、早期的冯·诺依曼机
他提出程序存储思想,根据这一原理制造的计算机被称为冯·诺依曼结构计算机
**程序存储:**指令以代码的形式事先输入到计算机的主存储器中,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。即按地址访问并顺序执行指令
五大特点:
- 计算机硬件系统由五大部件组成(存储器、运算器、控制器、输出设备、输入设备)
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
以运算器为中心,且是单处理机,基本工作方式是控制流驱动方式!
1.2、现代计算机组结构
2、计算机的组成
计算机有五大部分组成:
<1> 输入设备,是指将外部信息以计算机能读懂的方式输入进来,如键盘,鼠标等
<2> 输出设备,就是将计算机处理的信息以人所能接受的方式输出出来,比如显示屏,打印
机。
<3> 存储器,存储器分为 主存储器(内存储器,CPU能直接访问)和 辅助存储器(外存储器,协助主存储器记忆更多的信息,辅助存储器的信息需要导入到主存储器中,才可以被CPU访问)。
<4> 运算器,是计算机的运算单元,用于算术运算和逻辑运算,运算器的核心单元是算术逻辑单元(ALU)。
<5> 控制器,控制器是计算机的指挥中心,有其指挥各部件自动协调第进行工作,现代计算机将运算器和控制器集成到一个芯片上,合成为中央处理器,简称CPU。有程序计数器(PC)、指令寄存器(IR)和控制单元(CU)。
2.1、存储器
主存储器是由地址寄存器(MAR),数据寄存器(MDR),存储体,时序控制逻辑组成。
地址寄存器存放访存地址,经过地址译码后找到所选的存储单元。 数据寄存器,是存储器与其他部件的中介,用于暂存要从存储器读或写的信息。 时序控制逻辑用于产生存储器操作所需的各种时序信号。
主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式(相联存储器既可以既可以按照地址寻址,又可以按照内容寻址,为了与传统存储器区别,又称为内容寻址的存储器!)
2.2、运算器
2.3控制器
有程序计数器(PC)、指令寄存器(IR)和控制单元(CU)。
3、计算机的执行过程
一般将运算器和控制器集成到同一个芯片上,称为中央处理器(CPU)。CPU和主存储器共同构成主机。CPU和主存之间通过一组总线相连,总线中有地址、控制和数据3组信号线。MAR中的地址信息会直接送到地址线上,用于指向读/写操作的主存存储单元;控制线中有读/写信号线,指出数据是从CPU写入主存还是从主存读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中。
演示计算机执行乘操作的执行过程
IR存放当下欲执行的指令;PC存放下一条指令的地址;
MAR存放欲访问的存储单元地址;MDR存放从存储单元取来的数据!
地址译码器是主存的构成部分,不属于CPU;地址寄存器虽然一般属于主存,但是现代计算机中绝大多数CPU内集成了地址寄存器!
关于CPU存取速度的比较:寄存器(CPU内部)> Cache(高速的SRAM) > 内存 (SDRAM)
取数
运算
存数
停机
4、计算机的性能指标
二、系统总线
- 总线是连接各个部件的信息传输线,是各个部件共享的传输介质。
- 总线上信息的传送的两种方式:串行和并行。
1、总线的结构
有单总线、双总线、三总线和四总线等。
单总线:
双总线以CPU为核心:
双总线以寄存器为核心:
三总线的两种结构:
四总线结构:
2、总线的分类
- 片内总线:芯片内部的总线
- 系统总线:计算机各部件之间的信息传输线
- 数据总线:双向 与机器字长、存储字长有关
- 地址总线:单向 与存储地址、I/O地址有关,由CPU发出
- 控制总线:有出 有入,存储器读、存储器写、总线允许、中断确认
- 通信总线
- 用于计算机系统之间或计算机系统与其他系统(如控制仪表、移动通信等)之间的通信
- 传输方式:串行通信总线、并行通信总线。
三、存储器
1、存储器的分类
- 按存储器介质份分类
- 半导体存储器(TTL(集成度低、功耗高、速度快)、MOS(功耗低,集成度高))。U盘等;易失
- 磁表面存储器(磁头、载磁体)。如磁盘、磁带等;非易失
- 磁芯存储器(硬磁材料、环状元件);非易失
- 光盘存储器(激光、磁光材料);非易失
- 按存取方式分类
- 存取时间与物理地址无关(随机访问)
- 随机存储器 在程序的执行过程中可读可写
- 只读存储器 在程序的执行过程中只读
- 存取时间与物理地址有关(串行访问)
- 顺序存取存储器 磁带
- 直接存取存储器 磁盘
- 在计算机中的作用分类
- 主存储器
- RAM(可读可写);静态RAM、动态RAM
- ROM(只读);MROM、PROM、EPROM、EEPROM
- 辅助存储器 磁盘、磁带、光盘
- Flash Memory
- 高速缓冲存储器(Cache)
2、存储器的层次结构
- 存储器三个主要特性:速度 容量 价格/位
缓存用来解决主存与CPU速度差距太大的问题,辅存用来解决主存容量问题
3、主存储器
- 主存的基本组成
- 主存与CPU的联系
- 分类
* 随机存储器 RAM(可读可写);静态RAM、动态RAM
* 只读存储器 ROM;MROM、PROM、EPROM、EEPROM - 提高访存速度的措施
* 采用高速器件
* 采用层次结构 Cache-主存
* 调整主存结构
4、高速缓冲存储器
为了避免CPU出现空等现象,用在CPU与主存之间。
4.1、缓存的工作原理
主存和缓存中都有字块,通过字块号主存与缓存想和关联,关联的字块中存放相同数据。CPU想读写主存某字块时,实际去读写缓存中与之对应的字块。缓存的结构如下图:
- 读操作过程:
- 写操作过程: CPU直接写到缓存中,关键点在于保证缓存与主存的一致性。
- 写直达法:
- 写操作时数据既写入cache又写入主存
- 写操作时间就是访问主存的时间,Cache块退出时,不需要对主存执行写操作,更新策略比较容易实现
- 写回法(Write-back)
* 写操作时只把数据写入Cache而不写入主存,当Cache数据被替换出去时才写回主存
* 写操作时间就是访问Cache的时间,Cache块退出时,被替换的块需写回主存增加了Cache的复杂性
- 缓存的改机
- 增加Cache的级数,片载(片内)Cache,现在系统中基本都是三级缓存。
- 统一缓存和分立缓存,指令Cache 数据Cache,与指令执行的控制方式有关(是否是流水线)。
4.2、缓存与主存的地址映射
- 直接映射(离CPU近就采用这种方式)某一主存块只能固定映射到某一缓存块 不灵活、速度快
- 全相连映射 某一主存块能映射到任一缓存块 成本高、速度低
- 组相连映射 速度快、cache的命中率高
- Cache中主存块的替换算法
- 随机算法(RAND):随机地确定替换的 Cache块。它的实现比较简单,但没有依据程序访问的局部性原理,故可能命中率较低
- 先进先出算法(FIFO):选择最早调入的行进行替换。它比较容易实现,但也没有依据程序访问的局部性原理,可能会把一些需要经常使用的程序块(如循环程序)也作为最早进入 Cache的块替换掉。
- 近期最少使用算法(LRU):依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换的行,平均命中率要比FFO要高,是堆栈类算法。
- LRU算法对每行设置一个计数器, Cache每命中一次,命中行计数器清0,而其他各行计数器均加1,需要替换时比较各特定行的计数值,将计数值最大的行换出。
- 最不经常使用算法(LFU):将一段时间内被访问次数最少的存储行换出。每行也设置一个计数器,新行建立后从0开始计数,每访问一次,被访问的行计数器加1,需要替换时比较各特定行的计数值,将计数值最小的行换出。
四、CPU的结构和功能
1、CPU的功能
(1)取指令(PC保存下一条指令的存放地址,IR存放当前指令)
控制器必须具备能自动地从存储器中取出指令的功能
(2)分析指令(CU负责分析指令)
分析指令包括两部分内容:其一,分析此指令要完成什么操作,即控制器需发出什么操作命令;其二,分析参与这次操作的操作数地址,即操作数的有效地址。
(3)执行指令(ALU负责执行运算)
执行指令就是根据分析指令产生的“操作命令”和“操作数地址”的要求,形成操作控制信号序列,通过对运算器、存储器以及I/O设备的操作,执行每条指令。
(4)控制程序 (CU也是控制单元)
CPU必须具有控制程序的顺序执行(称指令控制)、产生完成每条指令的控制命令(称操作控制)、对各种操作加以时间上的控制(称时间控制)。
(5)数据加工(ALU 数据逻辑运算)
对数据进行算术运算和逻辑运算(称数据加工)。
(6)中断处理
处理异常情况和特殊请求
2、CPU的结构图
3、CPU的寄存器
3.1、用户可见寄存器
- 通用寄存器组(RO~R3)
- 存放操作数可作某种寻址方式所需的专用寄存器
- 数据寄存器(DR)
- 存放操作数(满足各种数据类型)两个寄存器拼接存放双倍字长数据
- 地址寄存器(AR)
- 存放地址,其位数应满足最大的地址范围用于特殊的寻址方式段基值栈指针
- 条件码寄存器
- 存放条件码,可作程序分支的依据
- 指令计数器(PC)
- 放现行指令的地址,通常具有计数功能。当遇到转移类指令时,PC的值可被修改。
- 程序状态字寄存器(PSW)
- 存放条件码和其他状态信息。
3.2、用户不可见寄存器
- 存储器地址寄存器(MAR)
- 用于存放将被访问的存储单元的地址。
- 存储器数据寄存器(MDR)
- 用于存放欲存入存储器中的数据或最近从存储器中读出的数据。
- 指令寄存器(IR)
- 存放当前欲执行的指令。
3.3、用户控制和状态寄存器
- 控制寄存器 控制CPU操作
P C → M A R → M → M D R → I R
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
AR)
- 用于存放将被访问的存储单元的地址。
- 存储器数据寄存器(MDR)
- 用于存放欲存入存储器中的数据或最近从存储器中读出的数据。
- 指令寄存器(IR)
- 存放当前欲执行的指令。
3.3、用户控制和状态寄存器
- 控制寄存器 控制CPU操作
P C → M A R → M → M D R → I R
[外链图片转存中…(img-FUB8ucPd-1715400222394)]
[外链图片转存中…(img-My7JObOc-1715400222394)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!