计算机组成原理概述

一、计算机的软硬件概念

1.1 计算机系统

计算机系统分为硬件和软件两大部分

  • 硬件:计算机的实体,如注解的外设等
  • 软件:具有各类特殊功能的信息(程序)组成
    • 系统软件:用来管理整个计算机系统(如:语言处理程序、操作系统、服务性程序、数据库管理系统、网络软件)
    • 应用软件

在这里插入图片描述

1.2 计算机系统的层次结构

在这里插入图片描述

1.3 计算机体系结构和计算机系统属性

  • 计算机体系结构:程序员所见到的计算机系统属性概念性的结构和功能结构(如:指令系统、数据类型、寻址技术、I/O机理)
  • 计算机组成:实现计算机体系结构所体现的属性(具体指令的实现)

二、计算机的基本组成

2.1 冯诺依曼计算机的特点

  1. 由五大部分组成

    • 运算器:计算机的主要功能是运算所以需要一个运算器
    • 控制器:运算的过程中有加减法之分,所以需要一个控制器进行控制
    • 存储器:冯诺依曼体系是存储程序的机器,指令和数据都需要进行存储
    • 输入设备:数据需要进行输入
    • 输出设备:数据需要进行输出
  2. 指令和数据以同等重要的地位存储于存储器,可按地址进行访问

  3. 指令和数据均是二进制

  4. 指令由操作码和地址码组成

    • 操作码:告诉计算机这条指令要做什么操作(比如:是加法还是减法)
    • 地址码:操作数所存储的地址
  5. 存储程序*:程序也是存储到存储器当中

    只要是有存储程序的计算机都属于冯诺依曼计算机

  6. 以运算器为中心

2.2 硬件框图

在这里插入图片描述

是不是很复杂?看不懂吧?看不懂也问题不大,当然看懂最好,我们接下来进行分析和改进

  • 问题:
    • 以运算器为中心,导致运算器成为系统的瓶颈
    • 图很乱,不具有层次化的特征
  • 改进:
    • 以存储器为中心

在这里插入图片描述

现在第一个问题解决了,但第二个问题还是存在图很乱,不具有层次化的特征

  • 在改进:3Y

    • 层次化(Hierachy):将被设计的系统划分为多个模块或子模块,将大问题划分为多个小问题
    • 模块化(Modylarity):要有明确定义的功能和接口,因为将多个小问题合并成大问题需要解决接口问题
    • 规则化(Regularity):模块更容易被重用,提高复用性

    基于3Y可以将将硬件划分如图

在这里插入图片描述
在这里插入图片描述

2.3 计算机的计算步骤

例如有这样一个式子:
ax^2+bx+cax2+bx+c
首先先对他化简
ax^2+bx+c=(ax+b)x+bax2+bx+c=(ax+b)x+b

然后计算机的计算步骤为

  1. 取x到运算器中
  2. 乘以x在运算器中
  3. 加b在运算器中
  4. 乘以x在运算器中
  5. 加c在运算器中
  • 指令格式举例

    ACC:accumulator累加器

    000001 0000001000 其中000001为操作码 0000001000为地址码

    • 取数α [α] -> ACC
    • 存数β [ACC] -> β
    • 加法γ [ACC] + [γ] -> ACC
    • 乘法δ [ACC] * [δ] -> ACC
    • 打印σ [σ] -> 打印机

指令和数据都是保持到存储器中的

2.4 存储器的基本组成

  • 存储体 —— 存储单元 —— 存储元件(0/1)

    • 存储单元:存放二进制编码

    • 存储字:存储党员中二进制代码的组合

    • 存储字长:存储党员中二进制代码的位数
      在这里插入图片描述

    • MAR:存储器地址寄存器 反映存储单元个数

    • MDR:存储器数据寄存器 反映存储字长

    设MAR=4 ——> 16 个存储单元

    MDR=8 每个存储单元8位

在这里插入图片描述

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

运算ACCMQX
加法被加数/和加数
减法被减数/差减数
乘法乘积高位乘数/乘积低位被乘数
除法被除数/余数除数

在这里插入图片描述

  • 组成:

    • ACC:累加器
    • MQ:乘商寄存器
    • X:寄存器
    • ALU:运算器
  • 加法:

    • 指令:在这里插入图片描述

    • 初态:ACC已经存储被加数了

    • 运算:

      • [M] -> X
      • [ACC] + [X] -> ACC
  • 减法:

    • 指令:在这里插入图片描述

    • 初态:ACC已经存储被减数了

    • 运算:

      • [M] -> X
      • [ACC] - [X] -> ACC
  • 乘法:

    • 指令:在这里插入图片描述

    • 初态:ACC已经存储被乘数了

    • 运算:

      • [M] -> MQ
      • [ACC] -> X
      • 0 -> ACC
      • [x]* [MQ] -> ACC//MQ
  • 除法:

    • 指令:在这里插入图片描述

    • 初态:ACC已经存储被除数了

    • 运算:

      • [M] -> X
      • [ACC] / [X] -> MQ

2.6 控制器

控制器的功能——解释指令,保证指令按需完成

控制器的基本结构如下图:

在这里插入图片描述

完成一条指令的步骤

  1. 取指令

    由PC完成

    PC(程序计数器)存放单曲执行指令的地址

    下一条指令地址位(PC)+ 1

  2. 分析指令

    由IR完成

    IR(指令寄存器)存放当前指令内容

  3. 执行指令

    由CU完成

    指令执行过程中有很多运行步骤,故需要CU参与保证运行顺序没问题

2.7 主机完成一条指令的过程

以取数为例

在这里插入图片描述

指令的执行分为三步

  1. 取指令
    1. 通过PC(程序计数器)获取当前指令地址,将其传给MAR(存储器地址寄存器)
    2. MAR通过其存储的地址到存储体中寻找指令
    3. 将找到的指令内容存储到MDR(存储器数据寄存器)中
    4. 将MDR中的指令传给IR(指令寄存器)
  2. 分析指令
    5. 将IR中指令的操作码部分传给CU(控制器)进行处理发现这是一条取数指令
  3. 执行指令
    6. IR将指令中地址码部分传给MAR
    7. MAR通过这个地址在存储体中寻找数据
    8. 将找到的内容传到MDR中
    9. 最后将MDR中的数据存到ACC(累加器)当中

注意:执行指令的每一步操作都需要CU的控制,因为需要CU控制执行的先后顺序

简化一下就是

  1. 取指令:PC -> MAR -> M -> MDR -> IR,(PC)+1 -> PC
  2. 分析指令:OP(IR) -> CU
  3. 执行指令:Ad(IR) -> MAR -> M -> MDR -> ACC

接下来我们再以存数为例

在这里插入图片描述

  1. 取指令
    1. 通过PC(程序计数器)获取当前指令地址,将其传给MAR(存储器地址寄存器)
    2. MAR通过其存储的地址到存储体中寻找指令
    3. 将找到的指令内容存储到MDR(存储器数据寄存器)中
    4. 将MDR中的指令传给IR(指令寄存器)
  2. 分析指令
    5. 将IR中指令的操作码部分传给CU(控制器)进行处理发现这是一条存数指令
  3. 执行指令
    6. IR将指令中地址码部分传给MAR
    7. MAR通过这个地址在存储体中开辟一块内存,用于存储数据
    8. 将ACC中的数据传到MDR
    9. 最后将MDR中的数据存到存储体当中

简化一下就是

  1. 取指令:PC -> MAR -> M -> MDR -> IR,(PC)+1 -> PC
  2. 分析指令:OP(IR) -> CU
  3. 执行指令:Ad(IR) -> MAR -> M,ACC -> MDR -> M

如果你仔细分析过了话,你会神奇的发现其实取指令的操作是一样的

三、计算机的硬件指标

3.1 机器字长

机器字长指CPU一次能处理的数据位数,与CPU中寄存器位数有关

一般来讲机器字长越长性能越好

3.2 运算速度

  • 主频:CPU内核工作的时钟频率
  • 核数:CPU的内核个数
  • CPI:执行一条指令所需的时钟周期数
  • IPC:一个时钟周期能完成的指令
  • MIPS:每秒执行百万条指令数
  • FLOPS:每秒浮点运算次数

3.3 存储容量

存放二进制信息的总位数

  1. 主存
    • 存储单元个数 * 存储字长 (例如MAR=16位,MDR=32位 => 64K * 32位)
    • 字节数:8G
  2. 辅存
    • 字节数:80G
  • 11
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值