计算机组成原理笔记---第一章 计算机系统概论

本文深入探讨了冯·诺依曼计算机架构的核心特点,包括计算机系统的组成、硬件与软件的关系、指令执行流程以及衡量计算机性能的关键指标。通过详细的硬件框图和指令执行步骤,读者能够全面理解计算机的工作原理。

计算机系统概论

凡是决心取得胜利的人是永远不说不可能的

笔记框架

0.0 学习计算机要学什么

这是一个计算机的学习框架

计算机学习框架

在这里插入图片描述

徐文浩老师给出的框架

在这里插入图片描述
计算机组成原理就是围绕着计算机如何组织运作展开的

1.1计算机系统组成及结构

软件+硬件
在这里插入图片描述

计算机是由软件与硬件组成的,而这门课程主要针对硬件实现进行学习

二者之间的关系:
1.硬件和软件具有逻辑上的等效性
2.硬件具有较高的执行速度,软件更灵活
计算机系统的层次结构

要想知道计算机的硬件是如何实现我们所编写的代码功能的就必须知道计算机系统的层次结构

在这里插入图片描述
这个图如果是从底层向上可以这么理解:

1.在对硬件进行操作的时候首先要将机器指令在存储器中取出

M0:控制部件通过控制线向执行部件发出各种控制指令,从而对硬件操作

2在控制计算机硬件时计算机的硬件只能识别机器语言,也就是 0,1 表示的二进制代码

M1 : 用微指令解析机器指令,看看让硬件做什么操作

4.操作系统提供了一些汇编语言和机器语言使用实现中所需的基本操作,还能控制软件和硬件的作用

M2: 实现软件硬件的控制与交互

5.但是二进制代码很难让人理解,于是出现了 汇编语言,他用符号 ADD,SUB,MUL,DIV 进行一些加减乘除的操作,然后再将汇编语言翻译成机器可以识别的机器语言

M3: 将汇编语言翻译成机器语言

6.由于每台机器都有一种对应的汇编语言,这就要求开发者必须掌握不同系统的指令进行开发,这时高级语言就产生了,如 C,BASIC 都是高级语言

M4: 用编译程序将高级语言翻译成汇编语言程序

上下层之间的关系:
1.上层与下层是可以分割的,只有下层没有上层也可以
2.上层是下层的功能实现,上层在下层的基础上实现更加丰富的功能

翻译程序:将高级语言翻译成机器语言程序的软件称为翻译程序。
翻译程序有两种:
1.编译程序:将用户编写的高级语言程序(源程序)的全部语句一次全部翻译成机器语言程序,最终会生成与一个目标文件然后再执行机器语言程序.如:C,C++
2.解释程序:将源程序的一条语句翻译成对应机器语言的一条语句,并立刻执行这条语句,接着翻译源程序的下一条语句并执行下一条语句,因此不会生成目标文件速度较慢。如:java,python

编译与汇编的区别:
将高级语言转变成汇编语言----编译
将汇编语言转变成机器语言----汇编

1.2 冯·诺依曼计算机的特点

1945年冯·诺依曼在研究 EDVAC机时提出存储程序的概念,以此概念为基础的各类计算机成为 冯·诺依曼机
冯·诺依曼机最根本特征是 存储程序“原理,基本控制方式是 驱动流控制方式
特点如下:


 1. 计算机由 运算器 、存储器 、控制器 、输入设备 、 输出设备 五大部件组成
 2. 机器已运算器为中心,输入输出设备与存储器之间的数据传送通过存储器完成
 3. 指令和数据以同等地位存放在存储器内,可按地址寻访
 4. 指令和数据均用二进制表示
 5. 指令由操作码和地址构成,操作码表示操作的性质,地址码表示存储数在存储器中的地址
 6. 指令在存储器内按顺序存放

1.2.1 计算机的硬件框图

下面给出了三个不同的时期计算机硬件的划分

1.以运算器为中心的硬件图

运算器为中心
(实线:数据线,代表数据传输。虚线:控制线和反馈线)
各个部件的功能如下:
运算器(ALU): 用来完成算数运算和逻辑运算,并将运算的结果暂存在运算器内
控制器(CU): 控制,指挥程序和数据的输入,运行以及处理运算的结果
存储器: 用于存放数据和程序,CPU可以直接访问主存,辅存信息要先调入到主存,CPU才可访问
输入设备: 将人们熟悉的信息形式转换为机器可以识别的信息形式
输出设备: 将机器运算结果转化为人们熟悉的信息形式

这是典型的冯·诺依曼 计算机是以运算器为中心的,但是这就导致了所有的数据传输都要经过运算器,运算器快,I/O 慢,比较耽误时间,于是有了下面的以存储器为中心的计算机结构

2.以存储器为中心的硬件图
以存储器为中心

(实线:控制线。虚线:反馈线。双实线:数据线)

这样在进行数据传输的过程就更加的简单便捷

3.现代计算机硬件的进一步划分

现代的计算机又将模块进行进一步的层次化的划分

在这里插入图片描述
在这里插入图片描述
于是计算机就分为了 主机 + I/O 设备

1.2.2计算机的工作步骤

比如要计算
a x 2 + b x + c ax^{2}+bx+c ax2+bx+c
计算机的运行步骤是怎样的

操作码与操作性质的对应表(拍照)
~~ax2+bx+c 程序清单~~

指令=操作码(6位)+地址码(10位)

以存储在 0 位置的指令为例 :000001 00000010000
000001 代表取数的操作,取数操作是将存储单元中操作的数送到运算器的累加器 ACC中(后面介绍 ACC)

00000010000 是取数的地址,是存储器位置 8 的 x 的值 ,可以与程序清单中一一对应

从存储的内容可以得到:我们将指令和数据都保存在存储器当中,这可以验证 冯·诺依曼 计算机的一个特点,指令和数据具有相同的地位

下面根据五大件的具体组成看一个操作是如何实现的

1.2.3计算机5大组成部分的具体概述

细化的计算及组成框图(拍照)

1.主存储器

主存储器

主存储器组成
主存储器由:存储体M ,MDR, MAR 组成

存储体由许多存储单元组成,每个存储单元包含若干个存储元件,每个存储元件一个存储 一位 0/1 的二进制数

一个存储单元可以存储一串二进制代码,称这串二进制代码为一个存储字 (000001 00000010),这串二进制代码的位数称为存储字长 (16位)

如果将一个存储体看做一个大楼,存储单元就是一个个房间,每个存储单元可以看做一个个床位,床位有人就是1,没有人就是 0

名称作用反映举例
MAR存储器地址寄存器,用来存放欲访问的存储单元的地址(如 0111011)其位数对应的存储单元的个数MAR 10位,则有 210=1024 个存储单元(即多少个房间)
MDR存储器数据寄存器,用来存放从存储体某单元取出的代码或者准备往存储单元存入的代码(如 M 的值)与存储字节相同MDR 16 位,共有16个床

(虽然说 MAR,MDR 为存储器,但是现代计算机他们是放在CPU 中的)
MAR 可以接收来自 PC 的地址号(在控制器中讲述),MDR 接收来自 总线上的数据,最终实现对于数据的按地址存取

2.运算器

运算数据:算术运算( + -* / )+逻辑预算(与或非)

~~运算器结构~~
运算器包含 3个 寄存器(还有其它寄存器,但这三个是必须的) + 一个算术逻辑单元
不同的寄存器放置的操作数也不一样
以加减乘除为例,不同的寄存器存放不同的操作数

在这里插入图片描述

具体的加减乘除的计算过程可见连接
运算过程

表中要声明的是,乘除法与加减法的过程不同,乘除法因为存储数据长度的改变所以需要 MQ 寄存器对数据进行存储于串接(//为串接过程)

串接过程,在进行乘法操作时,结果位数会加倍,16位*16位=32位,就放不下了,所以把前16为称为高位放在累加器ACC中,后低位放于乘商寄存器MQ中

寄存器的速度>Cache

3.控制器
控制器是计算机的神经中枢,指挥各个部件自动协调的操作,完成一个指令主要由以下三个阶段进行控制

控制器处理操作的三个阶段:
在这里插入图片描述

~~控制器三阶段~~

PC: 存放当前欲执行指令的地址,它与主存的 MAR 之间有一条通路,它将要执行的操作赋给 MAR ,MAR 再根据地址向 主存中去操作的内容。 (PC)+1–>PC 进行指令的跳转,就是执行下一条指令

IR: 存放当前的指令,IR内容来自主存 MDR
IR 中的操作码送往 CU ,表示为 OP(IR) --> CU,让 CU 分析指令。
其地址码送往存储器的MAR,作为操作数的地址,表示为 Ad(IR)–>MAR
CU: 分析当前指令需要完成的操作,发送微操作命令序列,控制所有被控制对象

一条指令是如何执行的

那么一条指令是如何通过上面的三个阶段执行的
一条指令是如何运行的
比如
“取存储单元 M 中的值 ” 指令:

1.取指令操作
获取指令
1:从 PC 保存的指令中得到要执行的指令地址,送往存储器的 MAR
2:由 MAR 中存储的指令地址在存储体中寻找指令
3:得到 “取M的值的指令” 将指令存储在 MDR 中
4:将 MDR 中的指令传送给控制的 IR

可以表示为 : PC -->MAR --> M --> MDR --> IR

2.分析指令
当我们得到一个指令之后我们只是有这个字符串,这个指令具体的操作需要通过分析指令才能知道
5:将指令的操作码传给 CU,再由 CU 上方的信号去分析相应的指令,应该执行什么样的操作 OP(IR)–> CU

【分析,取M值指令的操作是将内存中存储单元M的数值放入ACC 寄存器当中】

3.执行指令
6:M 的地址是放在 IR 的后半部分, 也就是上面讲的地址码, 将 IR 指令中 M 的地址取出送给 MAR (用 OP(IR)–>MAR表示)
7:再由 MAR 将地址送给存储体
8:存储体将取出来的数值传给 MDR
9:将数值送给 ACC 后就完成了值的读取

这样一个取值指令就完成了

如果我们想再进行下一个指令可以执行 (PC)+1–>PC

同理

“存储单元 M 中的值 ” 指令:

在这里插入图片描述
这里有几点声明一下:
1.取指令和分析指令的步骤相同
2.执行的时候一个是 ACC 向 主存写入,一个是读取 ACC 中的值写入 主存,所以第9步就是将 MDR 中的数据保存在存储体中

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

衡量计算机性的优劣的主要由三个指标:机器字长,存储容量,运算速度

机器字长: CPU 一次能处理数据的位数,通常与 CPU 寄存器的位数有关。一般来讲字长越长,运算速度越快。通常说的计算机为 8位就是指一次可处理 8位数据

存储容量: 存储容量一般是指主存中存放的二进制代码的总位数
存储容量=存储单元个数 * 字长
如:MAR =16位 216=65536 (64K) 个存储单元
如果 MDR 为 32位 那么内存的大小为 216 *32 = 2M
在这里插入图片描述

但是计算机中常常用 字节 表示容量大小,一个字节 = 8个 二进制位
所以 容量为 218B/256 K

运算速度: 运算速度与许多因素有关

在这里插入图片描述
主频和核数都是数值越高代表性能越好

如何计算运算速度:

以前,计算一个计算机的性能是通过计算一个程序中每一条指令的时间,再求平均值,便得到运算速度。但是会出现一些耗时的指令也许 出现的次数比较少,这样会使真实值变大,于是出现了吉普森法
吉普森法: Tm 为机器运行速度,fi 代表 第 i 种指令占得操作的百分比数,ti 代表第 i 种指令的执行时间,这样就会避免上述问题

CPI: 执行一条指令需要的时钟周期。但是有的计算机在单位时间内可以执行多条指令,那么 IPC 值便可代表一个时钟周期执行的指令数

MIPS: 是一个计量单位,如 某机 200W条/s 的速度执行指令,可记作 2MIPS

FLOPS: 也是一种计量单位

这是课本中给出的办法,这种办法比较书面化,那么怎样更好的理解一个计算机的性能呢?(延伸)

1.衡量计算机性能的两个因素

1.相应时间
响应为执行时间,代表执行一个程序所花费的时间。

2.吞吐率
又称为带宽,是指在一定的时间范围内,到底可以处理多少数据或者执行的程序指令。

如何提高计算机的性能:

1.对于响应时间
增加 CPU 核数,增加 CPU 的核数相当于更多的 CPU 来处理同一个数据。好比搬冰箱,两个人抬同一个冰箱所用的时间自然就少了。
但是 对于 CPU 性能上的提升远没有那么容易,技术受到很大的限制。

2.对于吞吐率
提升吞吐率的办法有很多,只要添加一些硬件,多添加一些机器就好

2.CPU 时钟

常常用 CPU 时钟去作为程序执行时间的一个测量单位

测试一个软件从开始执行到最后执行结束所消耗的时间成为他的 Wall Clock Time

显然不能只从 Wall Clock Time 去评价一个程序的执行速度好坏,因为影响一个程序运行时长的因素有很多,如:
1.线程切换不同程序时各自的执行时间
2.从网络,硬盘读取所用数据的时间
3.功耗

$ time seq 1000000 | wc -l
1000000


real  0m0.101s  
user  0m0.031s
sys   0m0.016s

在 Linux 中有对于指令的计时功能,执行这段代码,它大体是说打印 1~100000 这些数,并统计它的个数(我的理解也许有误)

real   就是所谓的 Wall Clock Time
user   CPU 执行程序时在用户指令中运行的时间
sys    CPU 执行程序在系统内核中执行的时间

user + sys 就是程序实际运行的时长,可以看出程序真正运行的时间是少于 Wall Clock Time 的


总结

本章学习了:
1.计算机学习与计算机组成原理学习的整体框架
2.计算机的层次结构
3.冯·诺依曼 计算机的特点
4.一个指令是如何在计算机中执行的
5.衡量计算机性能的指标

{ 笔记声明:
	我是一名大四的学生,写这个笔记是为了考研而准备的。红字是出题点
	课本使用的是唐朔飞老师编写的《计算机组成原理》
	笔记借鉴了慕课的 刘宏伟 老师以及极客时间的 徐文浩 老师的课程
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值