小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Computer & DL
  4. Linux
  5. 正文

计算机组成原理笔记第一章(2)

2018年9月4日 1601点热度 0人点赞 0条评论

第二节 计算机的基本组成

1.冯诺依曼计算机的特点

(1)计算机由五大部件组成:运算器、存储器、控制器、输入设备、输出设备。

(2)指令和数据以同等地位存于存储器,可按地址寻访;

(3)指令和数据用二进制表示;

(4)指令由操作码和地址码组成;

(5)存储程序;

(6)以运算器为中心。

图1 冯诺依曼结构(实线是数据传输,虚线是地址传输)

2.硬件系统的改进

问题1:以运算器为中心,导致运算器成为系统的瓶颈。

问题2:不具有层次化的特征。

改进1:以存储器为中心的计算机硬件框图

图2 以存储器为中心的计算机硬件框图

改进2:

运算器  ALU ---------CPU-----------主机

控制器  CU  ----|

存储器  -------主存----------------|

---|辅存

 

输入设备-------I/O设备

输出设备-------|

图3 改进2的计算机硬件框图(现代计算机硬件框图)

系统复杂性管理方法2(3Y)

1.层次化(Hierachy):将被设计的系统划分为多个模块或者子模块;

2.模块化(Modularity):有明确定义(well-defined)的功能和接口;

3.规则性(regularity):模块更容易被重用。

3.计算机的工作步骤

3.1上机前的准备

①建立数学模型

②确定计算方法

③编织解题程序:程序-运行的全部步骤;指令-每一个步骤。

编程举例:

计算ax2+bx+c

假设系统包含加法指令、乘法指令、取数指令、存数指令、打印指令和停机指令。

假设a,b,c已经保存起来了。计算步骤如下:

①首先取x至运算器中的累加器(寄存器)中;(取数指令)

②乘x,在运算器中,计算的x的平方,保存在累加器ACC中;(乘法指令)

③乘a,在运算器中,在累加器ACC中保存ax的平方;(乘法指令)

④存数指令,存ax的平方在存储器中;(存数指令)

⑤取b至运算器中;(取数指令)

⑥在运算器中,对b乘x,acc中保存bx;(乘法指令)

⑦把bx+ax2,在累加器中;(加法指令)

⑧加c,在累加器中;(加法指令)

一共执行8条指令,指令较多,运算速度慢存储量较大。但是如果做一个优化,将该式处理为(ax+b)x+c。计算步骤如下:

①取x至运算器中;(取数指令)

②a乘x,在运算器中;(乘法指令)

③把ax+b,在运算器中;(加法指令)

④乘x,在运算器中;(乘法指令)

⑤加c,在运算器中。(加法指令)

一共执行5条指令,相对来说指令少,运算速度快,存储量也小。

另外要说明的是,累加器是运算器的一个部分。

指令格式举例

操作码 地址码

取数(把内存单元α中的数据存储在ACC中)           [α]àACC

假设我们的指令有16位,操作码为6位,地址码为10位。则可以如下格式:

000001 0000001000

存数(把ACC中的数据保存在内存单元β当中)            [ACC]àβ

加 γ                                                 [ACC]+[γ]àACC

乘 σ                                                 [ACC]×[σ]àACC

打印 θ                                                [θ]à打印机

停机

假设内存和ACC均为8位长度,那么乘法会使数据边长,必然会导致数据溢出。应予以注意。

计算ax2+bx+c程序清单如下图所示。

图4 计算程序清单(x/a/b/c/存储结果均为二进制数存储)

冯诺依曼机中,指令和数据都是同等地位以二进制数据保存起来的。

3.2 计算机的解题过程

(1)存储器的基本组成

图5 存储器的基本组成

存储器-存储单元-存储元件(0/1,),类似于大楼-房间-床位(无人/有人)

存储单元:用来存放一串二进制代码;

存储字:存储单元中二进制代码的组合;

存储字长:存储单元中二进制代码的位数。

每个存储单元赋予一个地址号,实行按地址寻访。

MAR(Memory Address Register):存储器地址寄存器。反映存储单元的个数。

MDR(Memory Data Register):存储器数据计算器。反映存储的字长。

设MAR=4位,MDR=8位,则存储单元是16个(24),存储字长为8。

(2)运算器的基本组成及操作过程

图6 运算器各部分组成及功能

    运算器核心是算术逻辑单元(ALU),它是一个组合逻辑电路,也就是说当输入撤销之后,输出也会消失,因此后面需要存在一个寄存器,保存参与运算的数据,这两个寄存器为ACC(累加器)和X(数据寄存器)。如果做乘法运算,则多余出来的位数存放在MQ中。

注意:此结构仅限于本课程的一种类型。

对于加法来说,加数存放在X中,被加数存放在ACC中,和存放在ACC中;对于剪发说,被减数存在ACC中,减数存在X中,差在ACC中;对于乘法来说,乘法可以用加法和移位的方式来计算,被乘数存放在X中,乘数放在MQ中,乘积高位在ACC中,乘积地位在MQ中;对于除法来说,除法是用减法和移位来实现的,被除数在ACC,除数是X中,商在MQ中,余数在ACC中。

①加法操作过程

指令:

加 M

初态:ACC 被加数

第一条指令:[M]àX

执行加法指令:[ACC]+[M]àACC

如图7所示。

图7 加法(减法)操作过程图

②减法操作过程

指令:

减 M

初态: ACC中存在被减数

第一条指令:[M]àX

执行减法指令:[ACC]-[X]àACC

③乘法操作过程

指令

乘 M

初态 ACC  被乘数

第一条指令(乘数):[M]àMQ

第二条指令(被乘数):[ACC]àX

第三条指令(累加之前先将ACC置零):0àACC

乘法指令(累加+移位):[X]×[MQ]àACC//MQ(高位//地位)

只有ACC送到X以后才可以做乘法,才能把0送到ACC中。但是第一条指令和第二条指令顺序可以互换。这个先后顺序是控制器来控制的。

图8 乘法(除法)操作过程

④除法操作过程

指令

除 M

初态 ACC  被除数

第一步指令:[M]àX

第二步指令:[ACC]÷[X]àMQ

(余数在ACC中)

MQ又叫乘商寄存器。注意:[X]指的是X对应地址的内容。

(3)控制器的基本组成

控制器的功能:解释指令(从取指令、分析指令、取操作数……一直到完成指令);保证指令按序执行。

完成一条指令包括三步:①取指令PC(程序寄存器);②分析指令IR(指令寄存器);③执行指令CU。

PC中存放当前要执行指令的地址,指令地址是相邻的,因此PC具有计数功能,即把PC+1赋给PC。

IR存放当前欲执行的指令,控制单元可以把IR中的操作码取出来分析。操作控制就是CU完成。

具体框图如下:

图9 控制器的组成

(4)主机完成一条指令的过程

①以取数指令为例

图10 取数指令的过程

第一步:取指令。要执行指令的地址是PC中,指令存在存储体中。首先PC把地址给MAR,然后给存储体,在控制器控制下,存储体中存储的指令取出来送入MDR中,然后当前指令的地址存在IR中,取指令完成。

第二步:分析指令。把IR中的指令的操作码部分送入CU,译码之后进行下面的操作。

第三步:执行指令。在控制器的控制之下,要把IR指令当中的地址部分送给存储器(MAR),以便取出数据。然后MAR把地址送给存储体重,存储体把数送入MDR,然后送入ACC。

②以存数指令为例

图11 存数指令的过程

第一步:取指令。首先PC把当前指令的地址发送给MAR,然后MAR又发送到存储体,在控制器控制下,存储体中存储的指令取出来送入MDR,MDR将该指令存入IR之中。

第二步:分析指令。把IR中的指令的操作码送给CU,由CU对指令进行分析,CU发出响应控制信号。

第三步:执行指令。首先在CU控制下,把IR中的指令的地址码送入MAR中,MAR送入存储体,告诉存储体现在有一个数据要存进来和地址是多少。然后在CU控制下,ACC中的数据被送入到MDR中,然后再送入到存储体中,在存储体中的地址按照MAR的要求来确定。

(5)ax2+bx+c程序的运行过程

①将程序通过输入设备送至计算机。

②程序首地址送入PC中。

③启动程序运行:

取指令PCàMARàMàMDRàIR,(PC)+1àPC

分析指令:OP(IR)àCU(OP是操作码)

执行指令:加:Ad(IR)àMARàMàMDRàACC。(Ad代表地址码的意思)

④打印结果

⑤停机

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 计算机组成原理
最后更新:2018年9月4日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程小奥看房之鸿荣源珈誉府论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
期末考试终于结束了... Java数据库设计入门 算法学习(2):分治法(下) 计算机组成原理笔记第五章(5.1~5.4) [论文笔记]Investigation on LP-residual representations for speaker identification 计算机组成原理笔记第一章(2)
标签聚合
学习 高中 鸟哥的linux私房菜 Java 算法 leetcode Python python学习 生活 linux
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 9 个月前(10月20日) :wink:
niming 发布于 10 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号