计算机组成笔记1——计算机基本结构

1、计算机基本结构

1.1 电子计算机的兴起

现代电子计算机之父:冯-洛伊曼

1946.2.14 世界上第一台通用电子计算机ENIAC 在宾夕法尼亚大学诞生

1939 世界上第一台电子计算机ABC 阿塔纳索夫-贝里计算机

冯诺依曼指出,ENIAC的开关定位和转插线只不过代表着一些数字信息,完全可以像受程序管理的数据一样,存放于主存储器中(存储程序的概念)

1945 宾夕法尼亚大学 冯诺依曼所著的《关于EDVAC的报告草案》描述了冯诺依曼计算机结构,也成为今天我们所使用的绝大部分计算机的结构——存储程序式计算机

  • 实现了存储程序的概念,大幅提高了任务效率
  • 指令和数据采用二进制,极大简化了逻辑线路(ENIAC采用的是十进制)
  • 有五个基本部分组成
    • 运算器、控制器、存储器、输入设备、输出设备
  • 1949.8 EDVAC交付 1951正式运行 1962退役

1949.5 剑桥大学 莫里斯.威尔克斯 以EDVAC为蓝本设计了第一台实用的存储程序式计算机EDSAC

  • 有五个组成部分:
    • 运算器、控制器(电子管);存储器(水银延迟线);输入设备(从穿孔纸带输入);输出设备(电传打印机)

UNIVAC开启了商用计算机的时代

1.2 冯诺依曼结构的要点
两个重要设计思想
  • 控制计算机的程序应该存放在存储器中,而不是用开关连线来实现
  • 计算机应该采用二进制,而不是十进制
计算机五个部分
  • 运算器、控制器;存储器;输入设备、输出设备
MCS-4芯片组(Micro Computer Set)

微处理器(CPU):运算器、控制器

RAM:随机存储器(可读写,断电信息消失)

I/O移位寄存器:输入输出设备

ROM:只读存储器,不属于冯诺依曼结构五部分(只读,断电信息保存)

冯诺依曼结构的要点

运算器(CA):central arithmetical

控制器(CC):central control

存储器(M):memory

输入设备(I):input

输出设备(O):output

①计算机应由运算器、控制器、存储器、输入设备和输出设备共5个部分组成

②数据和程序均以二进制代码形式不加区别地存放在存储器中,存放位置由存储器的地址指定

③计算机在工作时能够自动地从存储器中取出指令加以执行

第②和③都是围绕着存储程序的概念设计,包括运算器、控制器和存储器三部分

冯诺依曼结构的核心

运算器、控制器和存储器是冯诺依曼结构的核心,运算器(CA)和控制器(CC)对应于现在的CPU,存储器(M)对应于现在的内存,CPU和内存之间通过系统总线进行连接

内存的组织形式(二进制)

地址:每个存储单元对应的序号,从0开始

内容:存储单元中存放的信息(一个单元一般是一个字节),存放计算机中所需要使用的程序和数据

程序和数据无区别存放在存储器中

如何将程序和数据不加区分的存放在存储器中呢?数据的存放很好理解,程序其实可以理解为由一条条的指令组成,而每条指令就会像每条数据一样无区别地存放在存储器中了

以餐馆为例,冯诺依曼结构的方式是把厨房比作CPU,其中厨师为控制器、铁锅为运算器,把仓库比作内存,仓库里的每一个货架栏就是相应的存储单元,货架栏上无区别地放着任务单(指令)和食材(数据),其中每一个任务单可能是切菜、加盐等操作,多个任务单组成一个菜单的烧制过程(也就是多条指令组成程序);而非冯诺依曼结构则是将仓库单纯用来存放食材,菜单由服务员发送,这样就是程序和数据的分离(ENIAC的工作方式)

总的工作流程

计算机所需要的程序和数据通过输入设备(I)进入存储器(RAM);

控制器发出地址给存储器,获得程序中对应的指令或相应的数据,随后控制器根据指令发送命令给运算器,指挥运算器对数据进行相应的运算,运算器可能会向存储器返回一些运算状态(成功or失败),运算的结果会存放到存储器中;

最后通过输出设备,将结果输出到计算机外部的某些存储介质上

1.3 计算机运行过程的类比
类比对象

厨房:CPU

  • 大厨:控制器
    • 厨师的备忘录,上面写着下一张任务单的位置(放在仓库的第几格):发送给存储器的地址
    • 放置当前任务单的位置(以供任务单的查看):
    • 装菜的盘子:通用寄存器(用于临时存放运算器的运算结果或要送到运算器的操作数)
  • 厨具:运算器

仓库:内存

  • 货架:内存中的存储单元
  • 货架每一格的编号:内存中的地址
  • 货架上的材料:存储单元中的内容
    • 任务单:计算机指令
    • 食材:数据
计算机运转

计算机运转的核心内容是执行指令,完成一条指令的主要步骤如下:

  • 取指(Fetch)
  • 译码(Decode)
  • 执行(Execute)
  • 回写(Write-back)
取值(Fetch)

1、厨师在备忘录上查看下一张任务单的位置在哪,假设为第一格,于是向仓库发送了需要第一格物品的请求(此时厨师并不知道第一格存放的是什么,他只是根据编号向仓库发送请求)

2、仓库具有控制逻辑,会响应控制器的请求,找到第一格的物品并送过去

3、厨师收到任务单,就把他存放在存放当前任务单的位置,然后更新下张任务单的位置

译码(Decode)

1、分析拿到的任务单(包括原料的位置和要执行的操作):

  • 制作方法:炒
  • 原料位置:仓库第六格、A号盘子(CPU中的通用寄存器)
  • 成品盛放:A号盘子

2、控制器把它转换成若干控制信号

执行(Execute)——核心步骤

1、执行已经分析完的任务:

  • 向内存发送请求,取第六格的物品
  • 取到食材(第一个运算数),厨师(控制器)把它放在炒锅(运算器)的其中一个入口
  • 取A号盘子(CPU里的通用寄存器)里的食材(第二个运算数),厨师(控制器)把它放在炒锅(运算器)的另一个入口
  • 获取对应的控制信号(炒)给运算器(炒锅),执行对应的运算,并产生运算结果
回写(Write-back)——保存结果
  • 根据指令要求,运算结果放在A号盘子(通用寄存器)
查看备忘录上下一张任务单的位置,重复上述四步操作
计算机运行过程
  • 取值(Fetch):CPU里的控制器查询下一条指令的地址,并向存储器发起请求;存储器返回该地址对应的存储单元上的指令给控制器并存放到存放当前指令的位置上,此时控制器更新下一条指令的地址
  • 译码(Decode):控制器解析指令,将之转化为一系列的控制信号(包括去哪里取运算数,对应的运算符,运算结果的存放位置等)
  • 执行(Execute):根据译码的控制信号执行指令,从存储器的存储单元或CPU内部的通用寄存器上读取运算数,然后根据指令规定的运算符,让运算器进行运算
  • 回写(Write-back):根据指令要求,把运算器的运算结果存储到某个通用寄存器上
1.4 计算机结构的简化模型
模型机

包含CPU和存储器两大布局,中间通过系统总线相连

系统总线分为:

  • 控制总线
  • 地址总线
  • 数据总线

如果地址总线的宽度为n,则CPU能管理的存储单元最多为 2 n 2^n 2n

系统总线

地址总线:MAR(memory address register存储地址寄存器)是用于存放CPU目前正在读写的存储单元的地址(既可以存放指令instruction的地址也可以存放数据data的地址)

数据总线:MDR(memory data address存储数据寄存器)用于存放CPU目前正在读写的存储单元的数据

控制总线:跟控制逻辑相连,用于接收来自CPU的读写信号、或向CPU反馈传输已经完成等控制信号

存储器

存储器中除了MAR存放地址,MDR存放数据之外,还有控制逻辑接收控制总线传来的控制信号,地址译码器对MAR中的地址译码以得到对应地址上的内容

这里需要注意的是,地址总线是单向的,MAR(用于存放CPU正在操作的存储单元地址)只能是从CPU指向存储器;而控制总线和数据总线是双向的,MDR(用于存放CPU正在操作的存储单元内容)负责存储MAR对应的内容,控制总线则决定该内容是读操作、写操作还是已完成等的控制信号

模型机的CPU:控制器

控制器用于控制计算机各部件完成取指令、分析指令、执行指令等操作

IR(instruction register指令寄存器):即存放当前指令的位置

PC(program counter程序计数器):存放下一条指令的地址,可以自增更新下一条地址,即指令备忘录

MAR(memory address register存储器地址寄存器):存放当前访问的存储单元的地址

MDR(memory data register存储器数据寄存器):存放当前访问(读/写)的存储单元的内容

指令译码部件:对IR中的指令进行译码,确定和分析存放的指令

控制电路:产生控制信号,这些控制信号在持续脉冲的同步下去控制CPU中各个控制部件的动作

模型机的CPU:运算器

运算器用于算术运算和逻辑运算

  • 算数运算:加、减、乘、除等
  • 逻辑运算:与、或、非等

核心部分:ALU(算术逻辑单元),用于完成算术运算和逻辑运算

两个操作数Y、X分别从ALU的A端口和B端口进入,经过ALU计算后,将结果送到输出端口Z;其中X、Y、Z是ALU用来暂时保存数据的寄存器,是ALU的一部分;而F用于存放运算结果的状态,如是否产生进位、是否溢出等

ALU所需的数据来源于存储器,但是如果每一次运算都去存储器取数,运行效率太低;所以一些常用的数需要提前从存储器中取出来,相应的,需要在运算器中有临时存放这些数的器件,就是所谓的通用寄存器

R 0 , . . . , R n − 1 R_0,..., R_{n-1} R0,...,Rn1是n个通用寄存器,用于临时存放数据,数据可以来自于存储器、其他通用寄存器或ALU的输出

CPU的内部总线

通用寄存器、ALU以及控制器中的若干寄存器之间要传递数据的话,就必须要经过CPU的内部总线(注意:所有寄存器的数据传递都需要经过总线!)

内部总线是用于CPU内部各个部件之间传递数据的装置,注意到总线和X、Y、Z的数据传输是单向的,其他数据传输的双向的

模型机概览
2.5 计算及执行指令的过程

执行指令是计算机运行过程中的核心,执行指令的过程是计算机运行原理的关键

执行指令,模型机,四步:取值、译码、执行、回写

基本格式

指令格式:ADD R0,[6]

ADD:加法指令;R0:通用寄存器R0的内容;[6]:地址为6的存储单元的内容

默认第一个操作数R0既是原操作数又是默认目的操作数,因此运算结果就会更新到通用寄存器R0

模拟机运行过程

初始状态如下:

PC里存的是当前即将要取指的地址,即0001,对应存储器的值为10101010,这是指令译码前的二进制值;通用寄存器R0中已经保存了初始值00000011

取指:
  • 控制器会发出控制信号,将PC中的地址经过CPU的内部总线传送到MAR中,此时MAR更新为0001
  • 然后MAR将该地址送到地址总线上,此时控制电路会在控制总线上发出相应的控制信号,代表这次访问寄存器的操作是要读数据
  • 存储器的MAR寄存器收到地址总线上传来的地址并保存
  • 存储器中的控制逻辑接收控制总线中传来的控制信号,得知这次操作为读操作
  • 存储器通过地址译码器得到0001地址上的存储单元的内容为10101010,并将该存储单元的内容送到MDR寄存器中
  • 存储器的控制逻辑通过控制总线向CPU反馈,本次传输已经准备好了,同时MDR中的内容也会送到数据总线上
  • CPU中的控制电路检测到来自控制总线的"准备好"的ready信号,就知道当前数据总线上已经准备好了数据,此时MDR寄存器就会将当前数据总线上传来的数值保存下来,获得所要取的指令
  • MDR中的内容通过CPU内部总线传送到指令寄存器IR中,此时IR内容更新为10101010PC寄存器更新为下一条指令访问地址,即从0001更新为0010
译码:
  • 指令寄存器IR中的指令编码会送到指令译码部件,将10101010翻译为ADD R0,[6]
  • 控制电路据此产生相应的控制信号,发送到相关部件中
执行:
  • 根据指令可知,还需要去取操作数,其中一个操作数在存储器中,因此在MAR中放置要访问的存储器中存储单元的地址,即[6]对应的0110

  • 随后的操作类似于取值,MDR接收从存储器得到的00000010

  • 由于要执行加法运算,控制器会进一步将MDR的数据传送到ALU的输入端口,Y寄存器中;控制器还会将通用寄存器R0的数据传送到ALU的另一个输入端口,X寄存器中;在控制电路的作用下,ALU会将XY进行加法运算,运算结果存放到Z寄存器中,即00000101

回写:
  • 控制电路给出相应信号,将Z寄存器中的运算结果通过内部总线传送到通用寄存器R0
下一步:

继续执行下一条指令

1.5 计算机的输入和输出

外部记录介质R(outside recording medium):断电后信息不丢失

穿孔纸带属于输入设备的来源,即外部记录介质

电传打字机属于输出设备,打印机输出的纸张可以被看作是外部记录介质R

硬盘即可以当输入设备,也可以当输出设备,且断电后信息不丢失,因此硬盘中记录信息的磁片是外部记录介质R

模型机添加输入输出设备

将系统总线的控制总线连接到输入输出设备的控制逻辑上,地址总线连接到输入输出设备的MAR上,数据总线连接到输入输出设备的MDR上,假设我们的输入输出设备通过8个开关来控制输入,而输出则是八个灯泡的显示,并且输入输出设备的地址与存储器的地址并不冲突

模拟输入

假设8个输入开关的状态是11100000,CPU会把MAR上的地址1111发送到地址总线上,由于现在有存储器和输入输出设备两部分连接在地址总线上,因此总线会有一些简单电路进行地址的识别,可以发现这个1111地址应该发送到输入输出设备而不是存储器,而控制总线会发出读的信号

此时输入输出设备的控制逻辑和地址译码器就会从地址为1111的单元中读出相关信息,并送到数据总线上,最终送到CPU中,完成输入操作

模拟输出

与输入同理,CPU将MAR上的地址传送到地址总线上,并在控制总线上给出写的控制信号,数据总线上给出想输出的数据11001100

此时输入输出设备就会根据总线信息判断要向地址为1110的单元写入数据11001100,随后完成输出的操作

1.7 冯诺依曼结构与具体实现
计算机架构

CPU包含CC和CA,通过北桥芯片与内存M相连,而内存M的信息断电就会消失;南桥芯片(I/O)内部集成了很多输入输出设备的控制器,其中包括了硬盘的控制器,所以硬盘R实际是和南桥芯片相连

硬盘属于外部记录介质R,内部保存在计算机系统所需的程序和数据,而硬盘读取比较复杂,需要程序来控制,即硬盘驱动程序

所以计算机刚启动时,内存中没有指令,CPU也无法从硬盘中获自己想要的得第一条指令,那第一条指令来自于哪里呢?

实际上在主板上还会有一个很小的芯片叫BIOS芯片,它会与南桥相连,这个芯片的存储容量很小,但是会保存一段比较简单但十分重要的程序,包括检查主板上都有哪些设备,这些设备是否工作正常。这个芯片实际上是一颗只读存储器(ROM?),当系统断电以后,只读存储器中保存的信息是不会丢失的,所以当计算机启动后,CPU可以依次通过北桥、南桥,访问到bios芯片,从里面读到指令

需要注意的是,bios虽然是一颗只读存储器,但是从冯诺依曼结构来看,他并不属于存储器的范围,而是和硬盘一样,属于外部记录介质R;严格的说,bios是指这颗只读存储器中存储的软件,它是基本输入输出系统的缩写,通常我们把保存了bios这个软件的只读存储器称为BIOS芯片

CPU从BIOS中取出指令后,会依次地检查主板上的各个设备,包括显卡(通过显卡点亮显示器)、键盘等,显卡中的图形处理单元,即GPU,支持很多复杂的数学运算,拥有很强的运算能力,因此GPU也承担了一些运算器和控制器的功能

北桥芯片提供了各个芯片之间互相访问的通道,北桥中主要会有内存控制器,对外连接着内存,而现在的显卡一般会采用PCIE显卡,因此在北桥中会集成PCIE控制器,对外通过PCIE的插槽,连接PCIE的显卡,然后再连接显示器;当然如果对显卡性能要求不高,也可以通过北桥内部自带的集成显卡,直接连接显示器

北桥还连接着南桥,南桥集中了大多数O/I设备的控制器

南北桥芯片的演变

下图是最先的南北桥架构

为了缓解北桥的压力,将北桥中的内存控制器转移到了CPU中,于是CPU可以直接访问内存,而不再需要通过北桥,以提高数据的传输率

而在最新的计算机设计中,CPU不仅包括了内存控制器,还包含了PCIE控制器,CPU不仅可以直接访问内存,还可以在外部直接连接显卡,此时北桥的剩余功能被合并到南桥芯片中,整个个人计算机的主板,由三片式的架构缩减成了两片式

既然有三片式缩减成两片式,那能不能继续缩减成一片呢?这就是系统芯片(System-on-a-Chip,Soc)的概念,它将计算机系统或其他电子系统集成到单一的芯片上,应用于智能手机、平板等移动电子设备

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值