本专栏主要记录自己学习计算机组成原理的整个过程。
大致分为以下二部分:
视频学习。
[计算机科学速成课](https://www.bilibili.com/video/BV1EW411u7th?from=search&seid=9430587122372415279&spm_id_from=333.337.0.0) 【看前10个视频】
- 通过相应图书进行学习。
入门级:《计算机是怎么样跑起来》 《程序是怎么跑起来的》《Computer Organization》
深入级:《计算机组成与设计:硬件 / 软件接口》《深入理解计算系统》
一.计算机科学速成课
视频链接: 计算机科学速成课
本阶段学习笔记:公开分享版本【计算机科学速成课】 笔记
学习进度:前十节课【已完成】
备注:上面的笔记并不是博主本人编写,来源于网络。
二. 哈工大的《计算机组成原理》-第一章
视频链接: 计算机组成原理(唐朔飞)
(一) 计算机组成的简介
1.课程概貌
2.课程用书以及参考教材
(1) 课程用书
- 课程用书:唐朔飞《计算机组成原理》(第2版)
- 辅导用书:《计算机组成原理学习指导与习题解答》
- 作者详情:百度百科-唐朔飞
- 备注:《计算机组成原理》目前最新版本为《计算机组成原理》(第3版)
(2) 参考教程
- David A.Patterson. ,John L.Hennessy.
- David Harris,Sarah Harris
3.本节课在课程体系中的地位
4.本书结构
(二) 计算机的基本组成
1.计算机系统概论
前面过渡:物联网概念,传感器,计算机,服务器,超级计算机..
计算机的分类:
按处理方式分为:模拟计算机和数字计算机。
按专用性分为:通用计算机和专用计算机。
按规模分为:巨型机、大型机、小型机、微型机等几类。
按功能分为:超级计算机、网络计算机、工业控制、个人电脑和嵌入式五类。
问题:现代计算机系统由哪二部分构成?
通过百度百科-抽象的方式进行描述:
软件的分类:
系统软件
:用来管理整个计算机系统应用软件
:按任务需要编制成的各种程序
2.计算机层次机构
(1) 从计算机物理结构进行抽象
(2) 从计算机程序员【硬件程序员】视角进行抽象
3.计算机体系结构
4.计算机的基本组成
(1) 百度百科-冯诺依曼计算机的特点
(2) 百度百科-冯诺依曼计算机硬件框图
各个部件的功能:
- 运算器:算术运算和逻辑运算
- 存储器:存放数据和程序
- 控制器:指挥和控制程序的运行
- 输入设备:把信息转换成机器能识别的形式
- 输出设备:将结果转换成人们熟悉的形式
下图的硬件框图以运算器为核心:
备注:虚线表示控制和状态反馈,实线表示数据通过。
冯诺依曼计算机硬件框图的改进(硬件框图以存储器为核心):
备注:双箭头表示传输
(3) 现代计算机的硬件框图
(4) 系统复杂性管理的方法(3'Y)
(三) 计算机工作步骤
本节课提出问题:
- 一个现实中的问题,如何用计算机来解决?
- 是不是所有的问题都可以用计算的方法来解决?
1.一个现实中的问题,如何用计算机来解决?
(1) 计算机解决现实中问题步骤
- 建立数学模型
- 确定计算方法
- 编制解题程序
(2) 计算ax^2+bx+c
编程举例(下图左右分别为二种不同的解题方式):
很明显右边的程序要远远优于左面的程序,运行的指令更少,执行速度更快。
指令格式举例:
程序清单:
- 指令=操作码+地址码
- 指令和数据都是保存在存储器中
2.是不是所有的问题都可以用计算的方法来解决?
- 可计算理论
- 假设说函数的定义域是D,值域是R,如果存在一种算法对于D当中给定的任意一个X,都能计算出F(x)的值,就说明这个函数是可计算的
- 可计算问题表示一类问题是否可以通过计算机来解决
- 不可计算问题:图灵机停机,歌德巴赫猜想,理发师问题,煎鸡蛋...
3.存储器,运算器
(1) 存储器的基本组成
- 存储器的结构?
答:存储体+MAR+MDR
- 如何进行访问?
答:按地址进行访问(按地址寻访)
- 每次访问获得的数据的位数是多少呢?
答:每次访问一个地址对应一个存储单元,一般一个存储单元8bit.
存储体:
把存储体比作大楼,存储单元就是大楼里的房间(一个存储单元对应一个地址,一个存储单元对应一个房间门牌号),而存储元件就是某间房间的床位(床位有人无人对应存储原件的状态)。
存储单元:
存放一串二进制代码存储字:
存储单元中二进制代码组合存储字长:
存储单元中二进制代码的位数,每个存储单元赋予一个地址。存储元件:
(元件状态-> 0:低电平 1:高电平)
MAR,MDR:
MAR
:存储器地址寄存器,反映存储单元的个数(一个地址对应一个存储单元)MDR
:存储器数据寄存器,反映存储字长
例题:设MAR=4位,MDR=8位对应的存储单元个数为16(地址数量:2^4=16),存储字长为8
(2) 运算器的基本组成及操作过程(下图运算器采用累加型计算机)
- 运算器的结构是什么?
答:ALU,ACC寄存器,MQ寄存器,X寄存器
- 运算器的功能是什么?如何工作?
答:运算器的功能就是运算,核心就是ALU,加减乘除工作过程如下
下面分别通过加减乘除相应运算来理解表格含义。
加法:
举例:a=1,b=1求a+b的过程。
第一步:将a
被加数放入ACC
寄存器中
第二步:将[M]
的值放入X寄存器中([M]->x
),[M]表示内存地址中M地址执行的值b
第三步:ALU执行加法操作:[ACC]+[x]
第四步:将运算的结果保存到ACC
当中
减法:
减法的执行过程和加法一致:
举例:a=1,b=1,求a-b的过程
- 将被减数
a
放入ACC
寄存器中 - 将
[M]
的值放入X寄存器中([M]->x
),[M]表示内存地址中M地址执行的值b
ALU
执行减法操作:[ACC]-[X]
- 将运算的结果保存到
ACC
当中
乘法:
举例:a=1,b=1,求a*b的整个过程。
第一步:将被乘数a
放入到ACC
寄存器当中
第二步:将乘数[M]
的值b放入到MQ
寄存器中
第三步:将[ACC]
里的值a放入到X
寄存器中
第四步:将ACC
寄存器的数据清零
第五步:ALU
进行乘法运算:[x]X[MQ]
第六步:将运算结果高位
保存到ACC
寄存器低位
保存到MQ
寄存器
备注:上文中第一步和第二步的运算过程顺序可以对换,该顺序由控制器控制。
除法:
举例:a=1,b=1,求a/b的整个过程。
第一步:将被除数a
放入ACC寄存器中
第二步:将[M]
对应的值b
放入X寄存器中
第三步:ALU执行除法运算:[ACC]÷[x]
第四步:将余数
放入ACC
寄存器,运算结果放入MQ
寄存器
4.控制器
(1) 控制器组成和功能
本节问题:
控制器的基本结构如何呢?
答:CU,IR,PC
- 控制器的功能?
答:解释指令,保证指令的按序执行
控制器的基本组成:
- PC存放当前欲执行指令的地址,具有计数功能(PC)+1->PC
- IR存放当前欲执行的指令
- CU执行指令
(2) 主机完成一条指令的过程
指令执行过程:
- 取指令
- 分析指令
- 执行指令
完成一条取数
指令:
第一步:PC将地址交给MAR寄存器,让MAR从存储体中取出对应的要执行的指令
第二步:MAR寄存器从存储体中取出要执行的指令
第三步:存储体将指令交给MDR存储器
第四步:MDR寄存器将指令存放到IR寄存器中
第五步:IR寄存器将指令交给CU控制单元执行指令
第六步:CU执行取
指令,IR寄存器将要取的数据地址交给MAR
第七步:MAR将地址交给存储体
第八步:存储体将对应地址的数据交给MDR
第九步:MDR将数据交给ACC寄存器
完成一条存数
指令:
前面七步步骤和取指令一致,但是CU执行的指令为存
指令。
第八步:MAR的地址指向存储体中ACC的数据地址,ACC将数据交给MDR
第九步:MDR将数据交给存储体进行存储
5.ax^2+bx+c指令执行过程
(PC)+1->PC:
表示当前这条指令执行完之后,执行下一条指令
6.计算机的挑选和相关性能参数
(1) 如何买一台合适的机器
(2) 计算机硬件的主要技术指标