计算机组成原理学习笔记(第一部分 总线和存储器)

学习视频

随看随记

计算机系统

计算机系统简介

  • 计算机系统主要分为两大部分,硬件和软件。
  • 在这里插入图片描述

软件

  • 软件主要分为两个部分
  • 系统软件(用来管理整个计算机系统)
    1. 语言处理程序(Linux中的gcc等)
    2. 操作系统(Linux)
    3. 服务性程序(协调多个进程之间的服务)
    4. 数据库管理系统(存储,使用数据等)
    5. 网络软件(各种计算机之间的通信)
  • 应用软件 按任务需要编制成的各种程序(日常使用的软件)

硬件

  • 计算机从高级慢慢向底层转换,高级语言->汇编语言->操作系统->机器语言->微指令语言
  • 在这里插入图片描述
    在这里插入图片描述

计算机体系结构和计算机组成的不同(理论与实践的关系)

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

计算机的基本组成

冯.诺依曼计算机的特点

  1. 计算机由五大部件组成:运算器,控制器,存储器,输入设备,输出设备
  2. 指令和数据以同等地位存于存储器,可按地址寻访:同等地位存储于存储器中,目前也可以将指令和数据分开存储,并分开查询。但是两者的地位还是相同的。
  3. 指令和数据用二进制表示
  4. 指令由操作码和地址码组成
  5. 存储程序
  6. 运算器为中心

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

以运算器为中心的计算机硬件框架图
  • 实线表示数据流动,虚线表示控制在这里插入图片描述
  • 运算器处于中心位置:其功能有算术运算和逻辑运算。
  • 存储器:其功能有存放数据和程序
  • 控制器:指挥程序的运行
  • 输入设备:将信息转换成机器能识别的形式
  • 输出设备:将结果转换成人能识别的形式
  • 输入设备需要将信息传递到运算器中,运算器进行运算后,传递到存储器中。通过运算器将结果处理好后,传递到输出设备进行输出。
以存储器为中心的计算机硬件框架图
  • 在这里插入图片描述
现代计算机硬件框架图
  • 这个图有点小毛病,辅存也是I/O设备中的一种。
  • 我的理解:辅存是硬盘,主存是内存条。
  • 在这里插入图片描述
    在这里插入图片描述
  • 系统复杂性管理的方法-2 (3’Y)
  1. 层次化(Hierachy) :将被设计的系统划分为多个模块或子模块
  2. 模块化(Modularity) :有明确定义(well-defined)的功能和接口
  3. 规则性(regularity) :模块更容易被重用

计算机解决现实问题

  • 运算器包含:ACC(累加器),ALU(逻辑单元)等。
  • 下图中的计算过程是在运算器中的ACC进行运算的。
  • 在这里插入图片描述
  • ACC存在于运算器中,β在内存中。[]表示取地址中的内容,和C++中的个’&‘一样。
  • 这个图表示加减都是在ACC中完成的。
  • 从这个图中也可以看出操作码:1是取,2是存,3是加,4是乘,5是打印,6是停机。地址码都是寻找后面的数据,使用二进制表示。
  • =

存储器的基本组成

  • 存储器包括三个部分组成:存储体,MAR,MDR。
  • 在这里插入图片描述

存储体

  • 存储体 - 存储单元 - 存储元件(0/1 )
    大楼 - 房间 - 床位 (无人/有人)
    一个存储体包含若干个存储的单元,一个存储单元包括若干个存储元件
  • 存储单元: 存放一串二进制代码
  • 存储字: 存储单元中二进制代码的组合
  • 存储字长: 存储单元中二进制代码的位数,每个存储单元赋予一个地址
  • 按地址寻访

MAR和MDR

  • MAR存储器地址寄存器:反映存储单元的个数
  • MDR存储器数据寄存器:反映存储字长
  • 假设设MAR=4位,MDR=8位
  • 存储单元个数2^4=16存储字长8位。
  • 在这里插入图片描述

运算器的基本组成

  • ACC累加寄存器
  • ALU(算术逻辑单元(arithmetic and logic unit) )
  • X:临时存储位置
  • MQMultiple—Quotient Register):乘除时使用
  • 进行运算时各种计算器的作用如下表。
  • 在这里插入图片描述
  • 下面的M均表示地址。黄色均表示最后的步骤和返回的位置

加法

  • 在这里插入图片描述
  • 步骤:
    1. 最开始ACC寄存器中存有原数字,当作被加数。
    2. 在地址M中取出数放到X中
    3. 在ALU中将ACC的数字(被加数)和[X]的数字(加数)进行相加得到数字,存储到ACC中。

减法

  • 在这里插入图片描述
  • 步骤:
    1. 最开始ACC寄存器中存有原数字,当作被减数。
    2. 在地址M中取出数放到X中
    3. 在ALU中将ACC的数字(被减数)和[X]的数字(减数)进行匀速那得到数字,存储到ACC中。

乘法(比较复杂)

  • 在这里插入图片描述
  • 步骤:
    1. 最开始ACC寄存器中存有原数字,当作被乘数。
    2. 在地址M中取出数放到MQ中
    3. 在ACC中取出数放到X中
    4. 将ACC中的数字赋值为0
    5. 在ALU中将X的数字(被乘数)和MQ(乘数)的数字进行乘法处理得到数字,高位存储到ACC中,低位存储到MQ中

除法

  • 在这里插入图片描述
  • 步骤:
    1. 最开始ACC寄存器中存有原数字,当作被除数。
    2. 在地址M中取出数放到X中
    3. 在ALU中将ACC的数字(被除数)和X的数字(除数)进行除法运算得到数字,余数存储到ACC中,商存储到MQ。也就是java中的‘%’存放到ACC,‘/’存放到MQ

控制器的基本组成

  • 控制器的作用解释指令,保证指令的按序执行
  • 取指令-> PC程序计数寄存器(Program Counter Register)
    PC存放当前欲执行指令的地址,具有计数功能,当一个指令取过后,计数器加一。
  • 分析指令-> IR指令寄存器(IR,Instruction Register)
    IR存放当前欲执行的指令。
  • 执行指令-> CU控制单元 (Control Unit)
  • 在这里插入图片描述

主机完成一条指令的过程

  • MAR和MDR时寄存器,本身不具备存储的功能,只是从存储体里查找。

以取数据为例

  • 在这里插入图片描述
  1. PC的地址指向MAR。
  2. MAR从存储体找到所需指令的地址
  3. 在MDR中根据所需指令的地址找到需要的指令
  4. 指令存储到IR中,解析指令
  5. 解析后的指令给CU进行操作
  6. IR执行指令,找到MAR
  7. MAR从存储体找到所需数据的地址
  8. 在MDR中根据所需数据的地址找到需要的数据
  9. 将该数据存到ACC中

以存数据为例

-取数据和存数据相同,唯一的不同就是

  • 第8步骤时从ACC中取数据到MDR中
  • 第9步骤时将储存好的数据,编好地址保存到存储体
    在这里插入图片描述

以ax^2+bx+c程序的运行为例

  • 其主要过程就是指令相关运行过程的重复运行。
  • 指令相关运行过程主要分为三个:
    1. 取指令 PC->M
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值