408计组-1计算机组成原理概述

一 、CPU+内存 工作的流程

还是得先讲一下计算机组成原理的第一章:  cpu+内存 工作的流程

 

NOTE:现代计算机CPU已经集成MAR、MDR

--------------------------------------------------------------

整个过程主要分为三个步骤:1.取指令,2.分析指令、3.执行指令

程序中的第一条指令位于PC(process count)程序计数器,根据pc取出第一条指令,经过移码,执行步骤等,控制计算机个功能部件协同运行,完成这条指令的功能,并计算下一条指令的地址。用得到的指令地址继续读出第二条指令并执行,知道程序结束为止。

===============================

1. 取指令:PC->MAR->M->MDR->IR

根据PC取到指令到IR。

(1)将PC中的送MAR

(2)MAR中的内容直接送地址线,同时控制器将读信号送读写信号线

(主存的操作:主存根据地址线上的地址的读信号,从指定存储单元读出指令,送到数据线上)

(3)MDR从数据线接受指令信息

(4)并传送到IR中

2. 分析指令: OP(IR) ->CU

(5)指令译码并送出控制信号。控制器根据IR中指令的操作码,生成相应的控制信号,送到不同的执行部件。

3.执行指令:IR->MAR->M->MDR->ACC

取数操作。

(6)将IR中指令的地址码送MAR

(7)MAR中的内容送地址线,同时控制器将读信号送读/写信号线,从主存指定存储单元读出操作数

(8)存储通过数据线送至MDR

(9)再传送至ACC中。

over

========================

此外,每取完一条指令,还必须为取下一条指令做准备,形成一条指令的地址,即(PC) + 1 -> PC

二、CPU组件介绍

 

1. CPU(Central Processing Unit,中央处理器)

这是这台计算机的大脑,所有的设备都围绕它展开。包括三个部分,运算单元、数据单元和控制单元:

运算单元只管算,例如做加法、做位移等等。但是,它不知道应该算哪些数据,运算结果应该放在哪里。运算单元计算的数据如果每次都要经过总线,到内存里面现拿,这样就太慢了,所以就有了数据单元。

 

数据单元包括 CPU 内部的缓存和寄存器组,空间很小,但是速度飞快,可以暂时存放数据和运算结果。有了放数据的地方,也有了算的地方,还需要有个指挥到底做什么运算的地方,这就是控制单元。

控制单元是一个统一的指挥中心,它可以获得下一条指令,然后执行这条指令。这个指令会指导运算单元取出数据单元中的某几个数据,计算出个结果,然后放在数据单元的某个地方。

 

三、总线

总线分三种:地址总线、数据总线、控制总线

CPU 和其他设备连接,要靠一种叫作总线(Bus)的东西,其实就是主板上密密麻麻的集成电路,这些东西组成了 CPU 和其他设备的高速通道。

当然总线上还有一些其他设备,例如显卡会连接显示器、磁盘控制器会连接硬盘、USB 控制器会连接键盘和鼠标等等。

四、内存

在这些设备中,最重要的是内存(Memory)。因为单靠 CPU 是没办法完成计算任务的,很多复杂的计算任务都需要将中间结果保存下来,然后基于中间结果进行进一步的计算。CPU 本身没办法保存这么多中间结果,这就要依赖内存了。

 

架构图:

 

五、CPU处理详情:

我们将软件安装在硬盘上,是二进制的,里面就是一行行的指令,会操作一些数据。

程序中包含进程,进程一旦运行,比如图中两个进程 A 和 B,会有独立的内存空间,互相隔离,程序会分别加载到进程 A 和进程 B 的内存空间里面,形成各自的代码段。

当然真实情况要复杂的多,进程的内存虽然隔离但不连续,除了简单的区分代码段和数据段,还会分得更细。

程序运行的过程中要操作的数据和产生的计算结果,都会放在数据段里面。

==============================

1.执行过程:(参考第一节)

那 CPU 怎么执行这些程序,操作这些数据,产生一些结果,并写入回内存呢?

CPU 的控制单元里面,有一个指令指针寄存器,它里面存放的是下一条指令在内存中的地址。

控制单元会不停地将代码段的指令拿进来,先放入指令寄存器。

当前的指令分两部分,一部分是做什么操作,例如是加法还是位移;一部分是操作哪些数据。

要执行这条指令,就要把第一部分交给运算单元,第二部分交给数据单元。

数据单元根据数据的地址,从数据段里读到数据寄存器里,就可以参与运算了。

运算单元做完运算,产生的结果会暂存在数据单元的数据寄存器里。

最终,会有指令将数据写回内存中的数据段。

========================

2.进程切换相关概念

你可能会问,上面算来算去执行的都是进程 A 里的指令,那进程 B 呢?

CPU 里有两个寄存器,专门保存当前处理进程的代码段的起始地址,以及数据段的起始地址。

这里面写的都是进程 A,那当前执行的就是进程 A 的指令,等切换成进程 B,就会执行 B 的指令了,这个过程叫作进程切换(Process Switch)。

六、总线详细介绍

到这里,你会发现,CPU 和内存来来回回传数据,靠的都是总线。其实总线上主要有两类数据,一个是地址数据,也就是我想拿内存中哪个位置的数据,这类总线叫地址总线(Address Bus);另一类是真正的数据,这类总线叫数据总线(Data Bus)

所以说,总线其实有点像连接 CPU 和内存这两个设备的高速公路,说总线到底是多少位,就类似说高速公路有几个车道。但是这两种总线的位数意义是不同的。地址总线的位数,决定了能访问的地址范围到底有多广。例如只有两位,那 CPU 就只能认 00,01,10,11 四个位置,超过四个位置,就区分不出来了。位数越多,能够访问的位置就越多,能管理的内存的

=======================

为什么32位操作系统只支持4GB的内存空间

因为32位操作系统的地址总线只有32根,能寻址的字节数位 2^30 * 2^2 = 4GB

-----------------

而MAR是寻址内存单元的,内存单元的大小 =  存储字长

内存的大小 = 内存管理单元的个数 * 存储字长

NOTE:图片中有一处错,“数据总线是以字节为单位传输的”, 这里的数据总线应为 “地址总线”!!!

====================

over

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值