计算机组成原理:P1-计算机系统概述

本系列文章为哈尔滨工业大学刘宏伟计算机组成原理学习笔记

文章目录

  • 一、计算机系统简介
    • 1.1 课程结构
    • 1.2 计算机系统简介
  • 二、计算机的基本组成
    • 2.1 计算机的基本结构
    • 2.2 计算机运算过程
    • 2.3 存储器
    • 2.4 运算器
    • 2.5 控制器
  • 三、计算机硬件的主要技术指标


一、计算机系统简介

1.1 课程结构

首先,我们对这门课程的课程名称进行分析

这门课程名称包含三部分:计算机、组成、原理
计算机组成原理:P1-计算机系统概述_第1张图片
计算机:在计算机的发展历程中,出现过许多种类的计算机,比如:机械式计算机、模拟电子计算机、数字电子计算机。现在的计算机几乎都是数字电子计算机。
组成:计算机硬件系统的逻辑实现
原理:计算机硬件系统的逻辑实现的一般原理


根据上面的分析结果,我们可以看出,需要学习的内容主要分以下三大部分:

①基本部件的结构和组织方式
②基本运算的操作原理
③基本部件和单元的设计思想


现代计算机专业课程体系(下图的右半部分)就是根据下图左半部分进行构建的:

在下图左部分中,中间蓝色的部分是指令集体系结构,也是计算机软硬件系统的交界处,对应的学习课程为计算机系统结构。计算机体系结构计算机组成原理这两门课有很大的区别,计算机组成原理讲如何实现,实现的细节。计算机体系结构采用分析+评测的方法来说明为什么要采用这样的设计。比如说,我们是否要将一条指令引入到计算机指令集当中,我们需要采用分析+评测的方法来确定加入这条指令会带来什么好处和问题。一旦引入,计算机组成的人员就要确定如何去实现,用什么方式实现。
计算机组成原理:P1-计算机系统概述_第2张图片


本课程的主要体系如下:

计算机组成原理之机器
------计算机系统的基本概念
------总线
------存储器
------输入输出系统
计算机组成原理之数字
------计算机中数的表示
------计算机的运算方法和运算器
计算机组成原理之CPU
------指令系统
------CPU的结构和功能
------控制单元
------控制单元的设计


1.2 计算机系统简介

开始这门课之前,我们先看一个问题:什么是计算机?

小到一些传感器、手机,大到台式电脑、服务器,这些可以进行计算的机器都是计算机。
计算机组成原理:P1-计算机系统概述_第3张图片
现在很多计算机科学家也提出:网络就是计算机。由此提出了物联网、智慧地球这些概念。
智慧地球:把感应器嵌入和装备到电网、铁路、桥梁、隧道、公路、建筑、供水系统、大坝、油气管道等各种物体中,并且被普遍连接,形成所谓“物联网”,然后将“物联网”与现有的互联网整合起来,实现人类社会与物理系统的整合,形成智慧地球


计算机系统分为两部分:

硬件:计算机的实体,如主机、外设等
软件:由具有各类特殊功能的信息(程序)组成


计算机软件又分为两部分:

系统软件: 用来管理整个计算机系统
----语言处理程序:高级语言想要在计算机上执行,必须要有编译程序的支持。经过编译链接生成后的可执行文件才能在计算机上执行
----操作系统:管理计算机的软硬件资源,提供软硬件交互
----服务性程序:比如一些超级计算机需要使用数学库,数学库就是服务型程序。
----数据库管理系统
----网络软件
应用软件:按任务需要编制成的各种程序


实际上计算机的组成非常复杂,我们可以将其抽象为以下:
计算机组成原理:P1-计算机系统概述_第4张图片


下面我们根据程序员的视角,对计算机系统的层次结构进行抽象。

最早出现的是机器语言(全是0和1),直接在实际的机器上进行执行
在这里插入图片描述
机器语言不好记忆,于是人们提出了汇编语言,将机器语言符号化。但是机器无法直接识别汇编语言,需要为这台机器配置汇编程序,将汇编语言转换为机器语言在机器上执行。这就相当于在实际的硬件外面又罩了一层软件,这层软件完成汇编语言到机器语言的翻译。
计算机组成原理:P1-计算机系统概述_第5张图片
但是汇编语言与人类语言仍然有很大差距。高级语言要在计算机上执行,必须要为其提供编译程序或解释程序,相当于在汇编语言外面又加了一层软件。
计算机组成原理:P1-计算机系统概述_第6张图片
从上面我们可以看出,我们的计算机在向上发展。实际上,我们的计算机也在向下发展。机器语言执行其实也是很复杂的,我们要把这条机器语言指令从存储器中取出来,然后把这条指令的地址传递给处理器,让处理器去读取。这条指令取出来之后要传递给控制器进行译码,根据译码的结果再完成相应的操作。可以看出这个执行过程很复杂,而且各个操作之间是有先后关系的。于是,每一个时间点上能够执行的那些操作,我们将其放到一个微指令当中。对于有先后顺序的操作,我们将其放到不同的微指令当中。
计算机组成原理:P1-计算机系统概述_第7张图片
最后,程序员加入了一层操作系统,汇编程序员可以通过操作系统提供的功能进行编程,同时可以通过操作系统管理软硬件资源。
计算机组成原理:P1-计算机系统概述_第8张图片
上面我们将计算机划分成了5个层次,每个层次对应的功能和分类如下图所示:
计算机组成原理:P1-计算机系统概述_第9张图片


现在我们可以回答出计算机体系结构和计算机组成各自完成的事情是什么

计算机体系结构:程序员所见到的计算机系统的属性概念性的结构与功能特性(指令系统、数据类型、寻址技术、I/O机理)
计算机组成:实现计算机体系结构所体现的属性(具体指令的实现)


二、计算机的基本组成

2.1 计算机的基本结构

现在的计算机都是存储结构的计算机,我们的数据、程序都是以二进制的形式存放在计算机当中的。这种结构的机器,我们称之为:冯·诺依曼计算机。

冯·诺依曼计算机的特点
①计算机由五大部件组成
②指令和数据以同等地位存于存储器,可按地址寻访
③指令和数据用二进制表示
④指令由操作码和地址码组成
存储程序(核心特征)
⑥以运算器为中心


我们来具体看看冯诺依曼计算机具体由哪五部分组成,每一部分的功能是什么。

以运算器为核心的冯诺依曼结构:
计算机组成原理:P1-计算机系统概述_第10张图片
①图中,实线代表数据通路,虚线代表控制和状态反馈。
我们想输入信息到计算机中,需要输入设备将信息输入至运算器,然后运算器将这些信息放到存储器中。我们想输出信息,需要从存储器取出数据并计算,将结果送到输出设备。
②各个部分的功能如下:
运算器:算术运算和逻辑运算
存储器:存放数据和程序
控制器:指挥程序运行
输入设备:将信息转换成机器能识别的形式
输出设备:把结果转换成人们熟悉的形式
问题
------输入输出必须径路运算器,运算器还要处理各种计算,这使得运算器成为系统中非常繁忙的部分,运算器也会成为计算机的瓶颈。
------这个结构看着比较乱,不具有层次性


改进:以存储器为中心,实现输入输出直接与存储器之间直接的信息交换

以存储器为中心的计算机硬件框图
计算机组成原理:P1-计算机系统概述_第11张图片


但是这个图看着还是比较乱,我们继续进行改进

我们将运算器和控制器组成CPU;将CPU和主存组成主机;将辅存和输入设备输出设备组成I/O设备;将主机和I/O设备组成最终的计算机硬件。
计算机组成原理:P1-计算机系统概述_第12张图片
对应的框图如下:
计算机组成原理:P1-计算机系统概述_第13张图片


对于上面的计算机结构设计,我们可总结出系统复杂性管理的方法(简称3’Y

①层次化(Hierachy):将被设计的系统划分为多个模块或子模块
②模块化(Modularity):有明确定义(well-defined)的功能和接口
③规则性(regularity):模块更容易被重用


2.2 计算机运算过程

上面我们介绍了计算机的结构框图,现在我们通过让计算机解决一个具体问题来对这个框图进行仔细分析。

问题描述:计算 a x 2 + b x + c ax^2 + bx + c ax2+bx+c
思路:首先,假设我们的机器是一台累加器(Accumulator, ACC)型的机器。在运行加减乘除的操作时,参与运算的操作数有两个,其中一个保存在累加器中,另外一个操作数来自计算机的主存储器。此外,我们假设我们使用的机器包含了6条指令:加法指令、乘法指令、把数据从内存中取出来的取数指令、存储计算结果的存数指令、将运算结果输出到显示器的打印指令、停机指令。
具体的操作指令如下:
----取 x x x 至运算器中
----乘以 x x x 在运算器中
----乘以 a a a 在运算器中
----存 a x 2 ax^2 ax2 在存储器中
----取 b b b 至运算器中
----乘以 x x x 在运算器中
----加 a x 2 ax^2 ax2 在运算器中
----加 c c c 在运算器中
优化 a x 2 + b x + c = ( a x + b ) x + c ax^2+bx+c=(ax+b)x+c ax2+bx+c=(ax+b)x+c
具体的操作指令如下:
----取 x x x 至运算器中
----乘以 a a a 在运算器中
----加 b b b 在运算器中
----乘以 x x x 在运算器中
----加 c c c 在运算器中

上面我们介绍了计算 a x 2 + b x + c ax^2 + bx + c ax2+bx+c的两种算法对应的操作指令,现在我们来具体对每一条指令进行分析。

首先,我们对这六种指令进行定义,每条指令包含操作码和地址码。操作码代表执行的操作,地址码代表数据存放的位置。
----取数 α,[α]->ACC。
----存数 β,[ACC]->β
----加 γ,[ACC]+[γ]->ACC
----乘 δ,[ACC]×[δ]->ACC
----打印 σ \rm{\sigma} σ,[ σ \rm{\sigma} σ]->打印机
----停机
程序对应的清单如下所示:
计算机组成原理:P1-计算机系统概述_第14张图片


2.3 存储器

在这些指令执行过程中,指令和数据都是保存在存储器中的。我们来具体了解下存储器,包含存储器的结构、如何进行访问、每次访问获得的数据的位数是多少

存储器的结构如下图所示:
计算机组成原理:P1-计算机系统概述_第15张图片
存储体
存储体又包含了若干存储单元,存储单元又包含了若干存储元件:存储体 – 存储单元 – 存储元件(0/1)
这些包含关系可以形象成这样:大楼 – 房间 – 床位 (无人/ 有人)
存储单元:存放一串二进制代码
存储字:存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位数
按地址寻访:每个存储单元赋予一个地址号
MAR与MDR
MAR(Memory Address Register):存储器地址寄存器,保存了存储单元的地址,反映存储单元的个数
MDR(Memory Date Register):存储器数据寄存器,保存了准备往存储体中写入的数据,反映存储字长
假设MAR=4,MDR=8,那么代表存储体中有16个存储单元,每个存储单元保存8位的数据
计算机组成原理:P1-计算机系统概述_第16张图片


2.4 运算器

我们已经知道了存储器的基本组成,下现在需要了解运算器,包括运算器的结构、运算器的功能、运算器是如何工作的。

运算器主要做算术逻辑运算,所以它的核心部件是算术逻辑单元(arithmetic and logic unit, ALU)。ALU经常是一个组合电路,其特点是:如果输入撤销,输出结果也会相应撤销。为了让ALU完成运算,并保存运算结果,必须有3个寄存器保存参与计算的数据。这3个寄存器分别是:ACC(Accumulator, 累加器)、MQ(Multiple Quotient Register, 乘商寄存器)、X
计算机组成原理:P1-计算机系统概述_第17张图片
在做加减乘除时,各个寄存器保存的数据如下所示:
计算机组成原理:P1-计算机系统概述_第18张图片


下面我们来具体分析运算器做各种计算时的流程

加法运算

加法指令格式加 | M。前面是操作码,后面是地址码。
初始状态:由于被加数是存放在ACC中的,因此在做加法运算之前,要先将被加数放到ACC中。
[M]->X 先将内存中M位置的加数送到X
加法运算指令
[ACC]+[X]->ACC 执行加法运算,结果放在ACC中
最后运算器状态如下:黄色代表结果存放位置,紫色代表计算过程中用到的部件。可以看出MQ寄存器没用过。
计算机组成原理:P1-计算机系统概述_第19张图片

减法运算

减法指令格式减 | M。前面是操作码,后面是地址码。
初始状态:由于被减数是存放在ACC中的,因此在做减法运算之前,要先将被减数放到ACC中。
[M]->X 先将内存中M位置的减数送到X
减法运算指令
[ACC]-[X]->ACC 执行减法运算,结果放在ACC中
最后运算器状态如下:黄色代表结果存放位置,紫色代表计算过程中用到的部件。可以看出,和加法运算一样,MQ寄存器没用过。
计算机组成原理:P1-计算机系统概述_第20张图片

乘法运算

乘法指令格式乘 | M。前面是操作码,后面是地址码。
初始状态:将被乘数放到ACC中的,
[M]->MQ将内存中M位置上的乘数放到MQ中。
[ACC]->X由于这里和加减运算不一样,被乘数要放到X中,因此将ACC中的被乘数放到X中去。
0->ACC由于乘法是移位累加的操作方式,因此要有寄存器来保存累加结果。我们用ACC来保存累加结果,同时要先将其初始化为0。
减法运算指令
[X]×[MQ]->ACC // MQ 由于乘法运算结果长度会翻倍,所以运算结果高位放在ACC中,低位放在MQ中。
最后运算器状态如下:黄色代表结果存放位置,紫色代表计算过程中用到的部件。可以看出,和加法运算一样,MQ寄存器没用过。
计算机组成原理:P1-计算机系统概述_第21张图片

除法运算

除法指令格式除 | M。前面是操作码,后面是地址码。
初始状态:将被乘数放到ACC中的,
[M]->X将内存中M位置上的除数放到X中。
减法运算指令
[ACC] ÷ [X]->MQ 运算结果余数放在ACC中,商放在MQ中。
最后运算器状态如下:黄色代表结果存放位置,紫色代表计算过程中用到的部件。可以看出,和加法运算一样,MQ寄存器没用过。
计算机组成原理:P1-计算机系统概述_第22张图片


2.5 控制器

接下来我们看看控制器的结构和功能

控制器的功能
①解释指令
②保证指令的按序执行
控制器的基本组成
控制器包含了三个部分:
PC(Program Counter):程序计数器,存放当前欲执行指令的地址
IR(Instruction Register):指令寄存器,存放当前欲执行的指令
CU(Control Unit):控制单元,控制整个系统执行指令
计算机组成原理:P1-计算机系统概述_第23张图片
完成一条指令
取指令---->需要知道这条指令的地址,因此将这条指令地址存放到PC中
分析指令---->把指令从内存单元中取出,并存在IR中
执行指令---->CU执行指令(过程很复杂,后面再细分析)


运算器、控制器、存储器构成了主机,我们现在分析一条指令在主机上的完成过程

取数指令

从存储体中取一个数的指令的操作流程如下:
计算机组成原理:P1-计算机系统概述_第24张图片
①PC将指令的地址送给MAR
②MAR将指令地址送给存储体
③存储体将指令地址保存的取数指令取出来,送到MDR中
④MDR将取出来的指令送到IR中。
经过这四步操作,取指令操作就完成了
⑤IR中保存的指令的操作码部分送到CU
⑥CU对指令操作进行分析,发现要取数,需要将指令中的地址部分送给存储器。于是控制让IR将指令对应的地址送到MAR
⑦MAR将地址送到存储体
⑧存储体将数取出, 送到MDR
⑨MDR将取出的数送到运算器中的ACC


存数指令

向存储体中存一个数的指令的操作流程如下:
计算机组成原理:P1-计算机系统概述_第25张图片
取指令操作和前面一样
①PC将指令的地址送给MAR
②MAR将指令地址送给存储体
③存储体将指令地址保存的取数指令取出来,送到MDR中
④MDR将取出来的指令送到IR中。
⑤IR中保存的指令的操作码部分送到CU
⑥CU对指令操作进行分析,发现要存数,需要将指令中的地址部分送给存储器,告诉存储器有个数要存进来。于是控制让IR将指令对应的地址送到MAR
⑦MAR将地址送到存储体
⑧将ACC中的数据送到MDR
⑨MDR将数据送入存储体中


我们来看看一个具体的例子: a x 2 + b x + c ax^2+bx+c ax2+bx+c 程序的运行过程

①将程序通过输入设备送至计算机
②程序首地址->PC
③启动程序运行
程序的第一行指令是个取数指令,于是下面开始执行取数指令:
④取指令PC->MAR->M->MDR->IR,(PC)+1->PC
⑤分析指令OP(IR)->CU
⑥执行指令Ad(IR)->MAR->M->MDR->ACC
取数指令执行完毕,下面继续执行其他指令。

⑧打印结果
⑨停机


三、计算机硬件的主要技术指标

机器字长

计算机的机器字长:指CPU一次能处理数据的位数,与CPU中的寄存器位数有关。
计算机的机器字长越大,性能越好。比如我们要做两个64位数相加,然后将和保存在64位的寄存器中。如果我们机器字长是8位,寄存器位数也是8,要完成一次64位的加法,我们要做8次加法,即相对应的8位相加。

运算速度

运算速度主要与下面这些指标有关:
①主频
②核数,每个核支持的线程数
③CPI,执行一条指令所需时钟周期数
④MIPS,每秒执行百万条指令
⑤FLOPS,每秒浮点运算次数

存储容量

①主存容量
------存储单元个数×存储字长表示法。比如MAR=10(代表地址长度是1),MDR=8位,0容量为 2 10 × 8 2^{10}\times8 210×8
------字节数表示法。比如 2 13 b = 1 K B \rm{2^{13}b}=1KB 213b=1KB
②辅存容量
------字节数。比如80GB

你可能感兴趣的:(计算机组成原理,操作系统,电脑硬件,硬件,硬件工程,其他)