计算机基本组成

以下内容均来自计算机组成原理(唐朔飞),是哈尔滨工业大学刘宏伟教授讲解,
B站视频地址

1.计算器由五大部件组成

1.冯诺依曼计算机硬件框图

实线表示数据通路,虚线表示控制和状态反馈

=实线表示数据通路,虚线表示控制和状态反馈
此结构计算器会十分繁忙,计算器是系统瓶颈。
.指令和数据以同等地位存于存储器,可按地址寻访
.指令和数据用二进制表示
.指令由操作码和地址码组成
.存储程序
.以运算器为中心

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

在这里插入图片描述

3.现代计算机硬件框图

在这里插入图片描述

  1. 系统复杂性管理的方法(3Y)
    -层次化(Hierachy):将被设计的系统划分为多个模块或子模块
    -模块化(Modularity):有明确定义(Well-defined)的功能和接口
    -规则化(regularity):模块更容易被重用

    	问题:一个现实中的问题,如何用计算机来解决?
    	问题:是不是所有问题都可以用计算机的方法来解决?
    	
    
    	可计算理论是研究计算可行性和函数算法的理论,又称为算法理论。可计算性通常指一类问题是否可以被
    	计算机来解决(比如煎鸡蛋是没有办法来计算的,不可计算问题中比较著名的是图灵机停机问题)
    
    	假设我们面对的是一个可以有计算机解决的问题,如何用计算机去解决这个问题呢?
    

计算机的工作步骤

  1. 上机前的准备
    • 建立数学模型
    • 确定计算方法
    • 编制解题程序
      程序—运算的全部步骤
      指令—每一个步骤
    • 编程举例
      计算    a x 2 x^2 x2+b x x x+c    =   (a x x x+b)x+c
           取 x x x到运算器中     取 x x x到运算器中
           乘以 x x x在运算器中    乘以a在运算器中
           乘以a在运算器中    加b在运算器中
           存a x 2 x^2 x2到存储器中    乘以 x x x在运算器中
           取b到运算器中     加c到运算器中
           乘以 x x x在运算器中    5个指令执行结束
           加a x 2 x^2 x2到运算器中
           加c到运算器中
           8个指令执行结束

    指令格式举例

    指令包含操作码和地址码
    取数 α \alpha α [ α \alpha α] → \rightarrow ACC(累加器,默认的,不需要指令中指出)
    000001 0000001000(假设指令一共16位,其中6位是操作码部分,指明了要做什么操作,000001表示取数;10位是内存地址部分,0000001000表示把存放在内存单元8位置的数据取出来,放到ACC中)
    存数 β \beta β [ACC] → \rightarrow β \beta β(将数据从ACC中存放到内存单元 β \beta β中,指令的二进制,同样是6位操作码,10位的地址码)
    γ \gamma γ ,假设另外一个操作数默认保存在了ACC里面,加法结果也默认保存在ACC
    [ACC]+ γ \gamma γ → \rightarrow ACC
    δ \delta δ [ACC] × \times × δ \delta δ → \rightarrow ACC(考虑溢出,16位,乘积有可能会超过16位,大于16位的没地方存储)
    打印 σ \sigma σ [ σ \sigma σ] → \rightarrow 打印机
    停机

    计算a x 2 x^2 x2+b x x x+c程序的清单

指令和数据存于主存单元的地址指令注释
操作码地址码
00000010000001000取数X至ACC
10001000000001001乘a得ax,存至ACC中
20000110000001010加b得ax+b,存于ACC中
30001000000001000乘x得到(ax+b)x,存于ACC中
40000110000001011加c得到ax^2+bx+c,存于ACC中
50000100000001100将ax^2+bx+c,存于主存单元
60001010000001100打印
70001100停机
8x原始数据x
9x原始数据a
10x原始数据b
11c原始数据c
12存放结果

此表中的地址位从8开始,都是存放的原始数据,前面的是存放操作指令和原始数据的存储位置(操作码是有固定规范的。)

  • 指令和数据都是保存在存储器中的

  • 存储器结构?
    (1)存储器的基本组成

  • 如果访问?

  • 每次访问获得的数据位数是多少呢?
    在这里插入图片描述
    存储体—存储单元(电子设备)— 存储元件(0/1)
    存储体有若干个存储单元构成,刚才表格中的指令(操作码和地址码)就存储在存储单元中
    存储单元由多个存储元件构成。
    存储元件存放的是0或者1。
    举例:存储体相当于大楼,存储单元相当于房间,存储元件相当于床位(有人/无人,表示0/1)

    存储单元存放一串二进制代码(比如存储单元由6个存储元件,那么存储单元可以存放6位二进制数字)
    存储字 存储单元中二进制代码的组合(比如存放的000100,就是存储字)
    存储字长 存储单元中二进制代码的位数(比如存放的000100 ,字长是6)

    每个存储单元赋予一个地址,一个存储单元中存放一个存储字,然后就可以通过地址对存储单元进行访问。
    存储单元是按地址寻访,CPU想取数,需要给出存储单元的地址

    MAR(Memory Address Register)是寄存器,名字是存储器地址寄存器(反映存储单元的个数)
    MDR保存了要送入CPU或者刚从存储体中取出的,存储器数据寄存器(反应存储字长)
    设MAR =4位,二进制4位,存储单元个数16个,MDR=8位,表明存储字的字长是8位。
    对存储单元的读和写,需要用到MAR和MDR

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

在这里插入图片描述

		ACC 数字寄存器 保存运算结果,乘法超出部分会保存到MQ中,Accumulator,累加器,运算器中运算前存放操作数、运算后存放运算结果的寄存器;
		ALU 算术逻辑单元(arithmetic and logic unit) 是能实现多组算术运算和逻辑运算的组合逻辑电路
		MQ 乘商寄存器,Multiple—Quotient Register,乘商寄存器主要负责数据的乘法与除法运算并可保存运算结果,是运算器的基本组成部分,是运算器三个基本寄存器之一。
		X  此字母没有专指的缩写含义,可以用作任一部件名,在此表示操作数寄存器,即运算器中工作寄存器之一,用来存放操作数;
ACCMQX
加法被加数加数
减法被减数减数
乘法乘积高位乘数被乘数
乘积地位
除法被除数除数
余数
运算器的结构
运算器的功能,工作原理
1.加法操作过程

指令 加 M
初态 ACC 存放 被加数
【M】 → \rightarrow X     M是加数在内存单元中的地址,把加数从内存单元中取出保存到X寄存器

【ACC】+【X】 → \rightarrow ACC  加法操作通过ALU执行操作,然后存放的ACC中

2.减法操作

被减法保存在ACC中,减数保存在X,有ALU完成减法操作,存放到ACC
指令 减 M
初态 ACC 存放 被减数
【M】 → \rightarrow X     M是减数在内存单元中的地址,把减数从内存单元中取出保存到X寄存器
【ACC】-【X】 → \rightarrow ACC   加法操作通过ALU执行操作,然后存放的ACC中

3.乘法操作

指令 乘 M
初始状态 ACC 被乘数
【M】 → \rightarrow MQ(将M中存放数据,取出存放到MQ中,存放的是乘数)
【ACC】 → \rightarrow X (将被乘数从ACC中取出,存放到X寄存器)
0 → \rightarrow ACC (把ACC清0)
【X】 × \times × 【MQ】 → \rightarrow ACC\MQ(ACC存放高位,MQ存放低位)

4.除法

指令 除 M
被除数隐含的保存在ACC(在除法操作之前,先执行一条指令,将被除数放到ACC中)
初态 ACC 被除数
【M】 → \rightarrow X
【ACC】 ÷ \div ÷【X】 → \rightarrow MQ
余数在ACC中

控制器的功能,工作原理

解释指令
保证指令的按序执行
完 成 一 条 指 令 { 取 指 令 P C 分 析 指 令 I R 执 行 指 令 C U 完成一条指令\begin{cases} 取指令 & PC \\ 分析指令 & IR \\ 执行指令 & CU \end{cases} PCIRCU

PC(Program Counter)存放当前欲执行指令的地址,具有计数功能(PC+1) → \rightarrow PC,至于加几跟具体的结构有关

IR(Instruction register)指令寄存器的缩写,存放当前欲执行的指令

CU(Control Unit) 控制单元

主机完成一条指令的过程

以取数指令为例

在这里插入图片描述

			1.从PC中取出指令的地址码送入到MAR
			2.从MAR中找到指令在存储体中存储的位置
			3.将指令从存储体中放入到MDR
			4.指令从MDR送入的IR,
			5.IR送入到CU,进行指令分析
			6.将数据的地址码从IR中送入到MAR
			7.从MAR中找到数据在存储体中位置
			8.将数据送入到MDR中
			9.将数据从MDR存放到ACC中
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值