前言
本次计算机组成原理学习主要分为两块
- 1、计算机组成原理学习(一)
主要对计算计结构和微处理器(CPU)功能原理进行学习 - 2、计算机组成原理学习(二)
主要对CPU,操作系统,汇编、编程语言之间的运行原理进行学习
通过计算机编程语言的基本数据类型设计的知识学习,如果你还想深度了解一下编程语言如何通过编译器在计算机中运行,那么请接着看下面的内容:
一、冯诺依曼结构
- 冯·诺依曼结构组成
运算器、控制器、存储器(一个)、输入设备和输出设备
- 冯·诺依曼结构体系结构上主要特点有:
1、以运算单元为中心
2、采用存储程序原理
3、存储器是按地址访问、线性编址的空间
4、控制流由指令流产生
5、指令由操作码和地址码组成
6、数据以二进制编码
冯·诺依曼结构提出后的贡献就是存储程序概念的提出,并且得到了实现,因为指令和数据都是二进制码,指令和操作数的地址又密切关联,所以基于当时的电子电路结构水平,选择这种结构是必然的。
缺点就是这种指令和数据共享同一总线的结构,而且必须按照顺序执行,使得信息流的传输成为限制计算机性能的瓶颈,影响了数据处理速度的提高。
- 完整执行一条指令结果流程如下:
目前大多数的计算机运行都遵守冯诺依曼结构。
二、哈佛结构
- 哈佛结构组成
运算器、控制器、指令存储器(一个)、数据存储器(一个)、输入设备和输出设备
个人认为哈佛结构特点继承了冯诺依曼结构的特点。
哈佛结构是将程序指令存储和数据存储分开的处理器结构,两条总线数据宽度可以不一致。
- 完整执行一条指令结果流程如下:
注意
1、一些51单片机,还有部分DSP芯片是哈佛结构模式,所以它们只能执行较少的任务。
2、随着科技的发展,目前的计算机基本上混用两种结构模式,多核心多处理器高级处理芯片大多外围采用冯诺依曼结构,局部采用哈佛结构.
3、哈佛结构与冯诺依曼最大的区别在于存储器分切割应用上,因为哈佛结构将存储器分为指令和数据两种,从而CPU与存储器之间有两条总线。
二、CPU
在上面中,我们已经简单的了解了CPU与存储器之间的通信,接下来我尽可能把自己的一些认知加进去,一起共同深度学习CPU的工作原理
1、CPU功能
现在市面上的CPU都有下图的四大功能
注意:
现在新的CPU都有多个核心以及多级内部复杂的缓存设计,这样的设计可以同时取到多条指令执行,从而体现并行处理的目的,即便是这样程序指令的顺序执行一直是一条严谨的规则。
2、CPU的组成
为了实现上面的功能,CPU一般有运算器,控制器,寄存器三大组成部分,其内部可以分的更细,如下图所示:
他们之间的逻辑处理如下图所示:
尽管我们熟悉了CPU的运作流程,但是必须要对以下几个概念要熟悉掌握
- 指令周期
1、指令周期:执行一条指令所需要的时间,一般由若干个[机器周期]组成,是从取指令、分析指令到执行完所需的全部时间。指令周期的长短与指令的复杂程度有关。
2、CPU周期:又称机器周期,机器内部各种操作大致可归属为对CPU内部的操作和对主存的操作两大类,由于CPU内部操作速度较快,CPU访问一次内存所花的时间较长,因此用从内存读取一条指令字的最短时间来定义,这个基准时间就是CPU周期(机器周期)。一指令周期常常用若干个CPU周期数来表示。
3、时钟周期:也称为振荡周期,定义为时钟频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟周期是一个时间的量。时钟周期表示了SDRAM所能运行的最高频率。更小的时钟周期就意味着更高的工作频率。一个CPU周期包含有若干个时钟周期。 - 时序产生器
CPU中一个类似"作息时间"的东西,使计算机可以准确、迅速、有条不紊地工作。机器一旦被启动,即CPU开始取指令并执行指令时,操作控制器就利用定时脉冲的顺序和不同的脉冲间隔,提供计算机各部分工作时所需的各种微操作定时控制信号,有条理、有节奏地指挥机器的动作,规定在这个脉冲到来时做什么,在那个脉冲到来时又做什么,给计算机各部分提供工作所需的时间标志。
注意:
1、一条指令分为两部分:操作码+地址码。
2、执行一条指令的顺序是:CPU先把该指令从主存读取到数据寄存器中,然后再传送至指令寄存器。
3、执行任何给定的指令:首先必须对操作码进行测试,目的是识别所要求的操作,而指令译码器(Instruction Decoder,ID)就是完成这项工作的。
4、执行指令时:CPU能自动递增PC的内容,使其始终保持将要执行的下一条指令的主存地址,为取下一条指令做好准备。
5、一个CPU至少要有一个累加寄存器
6、这里的数据缓冲寄存器就是数据寄存器
7、微操作:控制器在实现一条指令的功能时,总是把每一条指令分解成一系列时间上先后有序的最基本、最简单、不可再分的操作控制动作,这种最基本、最简单、不可再分的操作称为微操作
8、数据通路:通常把许多寄存器之间传输信息的通路称为数据通路(Data Path),它控制信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器。