第一章 计算机系统概论1
文章目录
- 李宏伟《计算机组成原理》
- 引入:计算机组成原理这门课程讲什么?
- 课程概貌
- 本课程在课程体系中的地位
- 课程内容的组织
- 课程的分割整合
- 第一章 计算机系统简介
- 1.1、计算机系统简介
- 一、计算机的软硬件概念
- 二、计算机系统的层次结构
- 三、计算机体系结构和计算机组成
- 计算机系统结构:
- 计算机组成:
- 1.2、计算界的基本组成
- 一、冯.诺依曼计算机的特点
- 几大部分组成的功能
- 二、计算机硬件框图
- 1、以存储器为中心的计算机硬件框图
- 2、现代计算机硬件框图
- 三、计算机的工作步骤
- 1、上机前的准备
- 编程举例
- 指令格式举例
- 指令和数据都是保存在存储器中的
- 2、计算机的解题过程
- (1)存储器的基本组成
- (2)存储器的基本组成以及操作过程
- ①加法操作过程
- ②减法操作过程
- ③乘法操作过程
- ④除法操作过程
- (3)控制器的基本组成
- (4)主机完成一条指令的过程
- 以取数指令为例
- 以存数指令为例
- (5)ax2+bx+cax^2 + bx + cax2+bx+c程序的运行过程
- 1.3、计算机硬件的主要技术指标
- 1、机器字长
- 2、运算速度
- 3、存储容量
本视频是来自于哈尔滨工业大学李宏伟老师的《计算机组成原理》,是看FCCJK转载的视频所记录,再次感谢这些优秀的老师和转载的道友。
李宏伟《计算机组成原理》
引入:计算机组成原理这门课程讲什么?
组成:计算机硬件的逻辑组成,
课程概貌
讲授内容
● 基本部件的结构和组织方式
● 基本运算的操作原理
● 基本部件和单元的设计思想
特色
● 计算机组成的一般原理,不一具体机型为依托
● 采用自顶向下的方式、层层细化
教材
● 唐朔飞.计算机组成原理(第2版).高等教育出版社出版
教材:计算机组成原理(第2版)
● 普通高等教育”十二五“规划教材
● 面向21世纪课程教材
● 全国高等学校优秀教材二等奖
● 普通高等教育精品教材
参考教材
● David A.Patterson. John L.Hennessy. Computer Organization &Design: A Hardwar/Software Interface《数字设计和计算机体系结构》
● David Harris, Sarah Harris. Digital Design and Computer Architecture. Morgan Kaufmann,2007
本课程在课程体系中的地位
课程内容的组织
● 第1篇:概论
● 第2篇:计算机系统的硬件结构
● 第3篇:CPU
● 第4篇:CU
课程的分割整合
● 计算机组成原理之机器
○ 1、计算机的系统的基本概念
○ 2、总线
○ 3、存储器
○ 4、输入输出系统
● 计算机组成原理之数字
○ 1、计算机中数的表示
○ 2、计算机的运算方法和运算器
● 计算机组成原理之CPU
○ 1、指令系统
○ 2、CPU的结构和功能
○ 3、控制单元
○ 4、控制单元的设计
第一章 计算机系统概论
第二章 计算机的发展及应用
第三章 系统总线
第四章 存储器
第五章 输入输出系统
第六章 计算机的运算
第七章 指令系统
第八章 CPU的结构和
第九章 控制单元的功能
第十章 控制单元的设计
第一章 计算机系统简介
1.1、计算机系统简介
问题1:现代计算机系统又哪两部分构成?
现代计算机的多态性
把感应器和装备嵌入到电网、铁路、挑梁、隧道、公路、建筑、大坝、油气管道等各种物体中,并且被普遍连接,形成所谓”物联网“,然后将”物联网“与现有的互联网整合起来,实现人类社会与物理系统的整合,形成智慧地球。
跑的最快的计算机(截止2014年11月)
一、计算机的软硬件概念
计算机系统
简单的一个层次结构
二、计算机系统的层次结构
系统复杂性管理的方法1——抽象
不同的抽象
● 对于一个过程或者一件制品的某些细节有目的的隐藏,以便把其他地方面、细节或者结构表达的更加清楚——百度百科
● 指高级的模型,和低级的实体相对——维基百科
● 隐藏系统中不重要的细节——David Harris
● 从物理构成角度把计算机可抽象成九层(从上到下)
○ Application Software:应用软件层,
○ Operating Systems:操作系统层,
○ Architecture:体系结构层,
○ Micro-architecture:微结构层,
○ Logic:逻辑层,计算机组成原理这门课程主要研究的是逻辑层和微体系结构层。我们要学习计算机中主要部件的逻辑实现,和主要部件之间的连接,来实现data path和实现控制
○ Digital Circuits:数字电路层,利用模拟元件构建与门、非门。
○ Analog Circuits:模拟电路层,利用下层的接口,进一步地构建放大器、滤波器等模拟部件,这些部件工作在连续的电压下。
○ Devices:电子元件层,系统的工作是利用电子元件来工作的,利用电子在不同物质的特征构建电子元件。这些电子元件体现出来的特征可以用连接点,或者是管脚它的电流和电压的特征进行描述。
○ Physics:最底层是物理抽象,电子设备依靠电子移动来工作,我们可以量子机制和麦克斯韦方程来描述电子的移动。
下面我们程序员的视角对计算机的层次结构进行再一次的抽象。
语言的向上发展:根据计算的发展,最早出现的是机器语言,就是实际硬件机器的语言,编程人员利用机器提供的指令集利用二进制对硬件机器直接编程操作,而这样的01这样的代码很难记忆,使用,为了简化程序的编程,进而又提出了汇编语言进行编程,将间接机器语言符号码01,编程难度降低,但实际的机器或者硬件机器不能直接使用汇编语言,汇编语言要在硬件上使用的话,必须对这台机器提供汇编程序,将汇编语言编写的程序转换成机器程序,然后再在硬件上面跑,实际上就是在硬件的外层罩了一层软件,这层软件完成了由编程语言和硬件语言之间的翻译。汇编语言是符号语言,一条汇编语言的指令对应了机器语言的指令。尽管如此,但是理解起来仍然很复杂,所以,在汇编的基础上又发展出了高级语言,相当于在汇编软件上又罩了一层软件,负责把高级语言和汇编语言连接起来。
语言的向下发展:一条机器语言的执行也是很复杂的,比如说把一条机器语言的程序从存储器中取出来,要把这条指令的地址传输给存储器,这条指令取出来之后要送给控制器进行译码,译码的结果再控制取操作数,再完成相应的操作,这一系列过程也是非常复杂的,这些操作之间也是有相互关系的,有些操作时同时进行,有些操作具有先后顺序。这样的话我们把一条机器指令继续进行细化,在每个时间点上能够进行的操作,放到微指令当中,执行之间有不同顺序的放到另一个指令当中,通过对微指令的操作顺序来控制这些操作之间的先后顺序,那么这样的话,对于利用微指令编写微程序实现机器语言指令的程序来说,它所面对的指令就是一个微程序机器,这台机器能够执行微程序,进而实现对机器语言程序以及机器指令的操作运行。
中间部分:这部分也是一层机器,就是我们的操作系统,程序员可以利用操作系统提供的功能进行操作,操作系统可以管理软硬件的资源。比如说汇编语言中用到MOV
AH,4CH,INT,21H,这两条利用了汇编程序的退出,返回了DOS系统,实际上就是汇编语言调用了DOS系统中提供的中断功能。
根据程序员的角度,我们可以把程序划分成5个层次。
问题:计算机组成与计算机系统结构从研究内容上来说有什么区别呢?
三、计算机体系结构和计算机组成
计算机系统结构:
程序员所见到的计算机系统的属性概念性的结构与功能特性(指令系统、数据类型、寻址技术、I/O机理)————有无乘法指令
计算机组成:
实现计算机体系结构所体现的属性(具体指令的实现)————如何实现乘法指令
1.2、计算界的基本组成
一、冯.诺依曼计算机的特点
● 1、计算机由五大部分组成
● 2、指令和数据以同等地位存于存储器,可按地址寻访
● 3、指令和数据用二进制表示
● 4、指令由操作码和地址码组成
● 5、存储程序
● 6、以运算器为中心
冯.诺依曼计算机硬件框图
黑色实线表示数据通路,数据通过这些实线进行流动。
黑色虚线表示控制和状态反馈。
从上面可以看出来,存储器中的内容可以送到而控制器,哪些内容可以送到控制器呢?要执行一条指令,这条指令要从存储器中取出来,送到控制器中进行分析。运算器要进行运算的话要从把数据从存储器中取出来,放到运算器中进行分析,然后把计算的结果保存到存储器中。
几大部分组成的功能
● 运算器:为了完成算数运算和逻辑运算。
● 存储器:存放数据和程序。
● 控制器:指挥控制程序的运行,完成程序的先后顺序都是由控制器完成的。
● 输入设备:将(人能识别的)信息转换成机器能识别的形式,再由运算器把它保存到存储器当中去。
● 输出设备:将结果转换成人们熟悉的形式。
那这个机器会存在什么问题呢?
这个机器以运算器为核心,输入输出必须要经过运算器,这样一来,运算器就是这个机器当中最繁忙的部分,算数运算和逻辑运算都需要通过运算器来做,这就决定了运算器就会成计算机的瓶颈。
瓶颈说明
● 1、以运算器为中心,导致运算器成为了计算机的瓶颈。
● 2、这个图结构比较乱,不具有层次化的特征。
我们能否对冯诺依曼结构进行改造?
————————————————以自顶向下的方式进行改进,下面就做这两件事情。
二、计算机硬件框图
1、以存储器为中心的计算机硬件框图
双线表示数据的传输。
存储器是核心。数据或者程序通过输入设备可以直接保存再存储器当中。运算器运算的数据可以从存储器中直接取,再将运算结果存储到存储器当中,再通过输出设备进行输出。控制器通过控制信号和状态反馈信号,对整个系统进行控制。
2、现代计算机硬件框图
系统复杂性管理的方法2——(3’y)
● 层次化(Hierachy):将被设计的系统划分为多个模块或子模块
● 模块化(Mondularity):有明确定义(well-defined)的功能和接口
● 规则性(regularity):模块更容易被重用——标准化。
问题:一个现实中的问题,如何用计算机来解决?
问题:是不是所有的问题都可以用计算的方法来解决(参考可计算理论知识)?
假设我们面对是一个可以有计算机解决的问题,如何用计算机来解决这个问题呢?
三、计算机的工作步骤
1、上机前的准备
● 建立数学模型 u=UmSinwtu = U_mSinwtu=UmSinwt
● 确定计算方法sinx=x−x33!+x55!−x77!+x99!−...sinx = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + \frac{x^9}{9!} - ...sinx=x−3!x3+5!x5−7!x7+9!x9−... yn+1=12(yn+xyn)(n=0,1,2,...)y_{n+1} = \frac{1}{2}(y_n + \frac{x}{y_n})(n=0,1,2,...)yn+1=21(yn+ynx)(n=0,1,2,...)
● 编制解题程序 程序——运算的全部步骤 指令——每一个步骤
编程举例
计算 ax2+bx+cax^2 +bx +cax2+bx+c
ax2+bx+cax^2 +bx +cax2+bx+c | (ax+b)x+c(ax +b)x +c(ax+b)x+c |
---|---|
● 取x 至运算器中 | ● 取x 至运算器中 |
● 乘以x在运算器中 | ● 乘以a在运算器中 |
● 乘以a在运算器中 | ● 加b至运算器中 |
● 存ax2ax^2ax2在存储其中 | ● 乘以x在运算器中 |
● 取b至运算器中 | ● 加c至运算器中 |
● 乘以x在运算器中 | |
● 加ax2ax^2ax2在运算器中 | |
● 加c在运算器中 |
指令格式举例
指令和数据都是保存在存储器中的
● 存储器的结构?
● 如何进行访问?
● 每次访问获得的数据位数是多少呢?
2、计算机的解题过程
(1)存储器的基本组成
存储体(类比大楼)——存储单元(类比房间)——存储元件(类比床位:无人/有人)(0/1)、
存储单元:存放一串二进制代码
存储字:存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位置,每个存储单元赋予一个地址号
按地址寻访:
MAR:存储器地址寄存器反映存储单元的个数
MDR:存储器数据寄存器反应存储字长
已经知道了存储器的基本组成,运算器的结构是什么?运算器功能是什么?是如何工作的——加法、乘法?
(2)存储器的基本组成以及操作过程
MQ:在运算器中,乘商寄存器主要负责数据的乘法与除法运算并可保存运算结果,是运算器的基本组成部分,是运算器三个基本寄存器之一。
ACC和ALU的区别:
ACC:Accumulator,累加器,是运算器中既能存放运算前的操作数,又能存放运算结果的寄存器。累加器:运算时存放一个操作数。运算后存放运算结果,所以称它为累加器。
ALU-arithmetic and logic unit 算术逻辑单元,简称ALU,是计算机的数学大脑,也就是计算机里负责运算的组件。
算术运算:加、减、乘、除等
逻辑运算:与、或、非、异或等
辅助功能:移位、求补等
所以ACC只作为寄存器使用并没有运算功能。
①加法操作过程
②减法操作过程
③乘法操作过程
④除法操作过程
控制器的基本结构如何?控制器的功能——解释指令保证指令的按序执行。
(3)控制器的基本组成
运算器、控制器、存储器构成了什么?
● 一条指令在主机上的完成过程
● 程序在主机上是如何执行的
(4)主机完成一条指令的过程
以取数指令为例
取指令:要想取指令,就要知道这个指令的地址在哪里,要执行的指令是保存在PC当中的,指令是保存在存储器当中的,所以取指令的第一个步骤就是PC把指令的地址送给MAR,MAR送给存储器,再控制器的控制下,存储器把指定单元当中保存的那条取数指令取出来,送到MDR当中,MDR取出来的指令,要送给IR,因为IR是保存当前正在执行的指令,经过PC——>MAR——>存储器——>MDR——>IR,取数指令已完成。
分析指令:在此图上是非常简单的,实际上大量的操作在控制单元内部进行,后面慢慢细化。把IR把保存正在当前执行的指令送给CU,CU上有很多信号,就是有这些信号控制相应的部件,去执行指令要求的各种操作。我们这条指令是数指令,取出指令的功能是把保存在内存单元的数据,把它取到,ACC这个寄存器当中,在控制器的控制之下,我们要把指令当中的地址部分送给存储器(MAR),以便我们把数据从存储器(MDR)取出来,这个操作还是从IR开始,因为IR中保存了当前正在执行的指令,同时也保存了当前执行指令的地址,同时也保存了当前指令操作数的地址。那我们把IR的地址部分区出送给MAR,再有MAR送给存储器,再在控制器的控制下,从存储体当中把取数指令取得那个数取出来,存入到MDR,然后把它送到ACC,就完成了取数操作。
执行指令:以上在CU控制下所进行的各个步骤都是执行指令。
以存数指令为例
取指令:把指令从存储器中取出来,必须要知道指令的地址,那么指令的地址在哪里呢?我们在控制器的时候介绍过,它是保存在PC当中,那从PC开始,把PC的指令送给MAR,MAR送给存储体,在CPU的控制下,从存储体当中把这条指令取出来,放入到MDR当中,然后再用控制单元控制,把MDR当中的指令取出来送给IR当中,取指令的过程就算完成了。
分析指令:是把IR当中操作码部分送给CU,CU对指令进行分析,通过分析,我们知道这条指令该做什么样的操作,CU就会发出相应的指令完成指令要求的信号,这里是存数指令,由CU控制IR中地址码部分送给MAR,再由MAR部分送给存储体,告诉存储体有一个数据要存起来,地址是多少,下一步操作的内容就是把ACC当中的内容送给MDR,这里保存存储体当中输入和输出的这些数据,进而在控制器的控制下,把MDR中的数据保存到存储体当中,此时存数据就做完了。
执行指令:
(5)ax2+bx+cax^2 + bx + cax2+bx+c程序的运行过程
● 将程序通过输入设备送至计算机
● 程序首地址——>PC
● 启动程序运行
● 取指令 PC——>MAR——>M——>IR,(PC)+ 1 ——>PC
● 分析指令OP(IR) ——> CU
● 执行指令Ad(IR) ——>MAR ——>M——>MDR——>ACC
● 。。。
● 打印结果
● 停机
如果打算买一台机器,如何进行合适的选择呢?
● 买这台机器做什么
● 你有多少钱
● 机器的性能否满足你的要求
● 机器的性能能否1满足你的要求
○ 如何在购买前对计算机的性能进行评价
■ 处理速度快、内存容量大(计算机硬件的指标)
1.3、计算机硬件的主要技术指标
1、机器字长
CPU一次能处理数据的位数,与CPU中的 寄存器位数有关。
2、运算速度
MIPS:Million Instructions Per Second,每秒执行的次数越多,这台机器的速度就越快,我这个说法有点问题,这里面还要看,每条指令到底执行了多少算数运算、多少逻辑运算,指令复杂度如何,这里面涉及到体系结构的知识。
我们从吉普森方、CPI(IPC:CPI的倒数)、MIPS实际上都是在指令执行的角度来衡量计算的速度,实际上在执行程序的时候,执行指令只是一个手段,我们的目的是完成一个算数或者逻辑运算,所以衡量计算机速度一个更合理的指标是是在相同的时间里面,大家完成了多少或者逻辑运算——FLOPS,这个是从机器能够做多少操作来衡量,比前面每秒执行多少个指令,或者一个指令执行多少秒都科学。还有一个最直接的方法,就看我们最常用的那个程序,在要满的机器上,运行速度如何,比如把一个游戏安装在要满的机器上,看这个机器卡不卡。
3、存储容量
存放二进制信息的总位数