计算机组成原理笔记

第一章:概述

传统冯诺依曼结构:

  • 输入设备
  • 输出设备
  • 存储器
    • 主存:地址寄存器MAR、数据寄存器MDR
    • 辅存
  • 运算器
    • 算术逻辑单元ALU
    • 程序状态寄存器PSW
    • 累加器、乘商寄存器、操作数寄存器、变址寄存器…
  • 控制器
    • 程序计数器PC:存放当前欲执行指令的地址,可以自动加一生成下一条指令地址。
    • 指令寄存器IR:存放当前指令
    • 控制单元CU:分析来自IR的数据,发出微操作指令

语言分类:

  • 机器语言

  • 汇编语言

  • 高级语言

编译程序:一次全部翻译,然后执行。 编译之后形成可执行文件.exe

解释程序:翻译一条执行,然后再翻译。 翻译不生成目标代码。

计算机性能指标:

  • 机器字长:计算机进行一次整数运算可处理的二进制位数
  • 指令字长:一个指令字中的二进制位数
  • 存储字长:一个存储单元存储的二进制代码长度

第二章:数据的表示和运算

2.1、进制转换

  • 二进制转换为八进制/十六进制:把二进制的3/4位 编为一组
  • 八进制 与 十六进制相互转换:先转化为二进制
  • 任意进制转换为十进制:数码与权值相乘,乘积相加
  • 十进制转换为任意进制:
    • 整数部分:除基取余
    • 小数部分:乘积取整

2.2、定点数

**原码:**最高位为符号位,其余各位表示数的绝对值

  • -127 ~127

反码:

  • 正数:反码与原码相同
  • 负数:数值位全部取反
  • -127~127

补码:

  • 正数:补码与原码相同
  • 负数:反码末位加1
  • -128~127

移码:

  • 补码的基础上,将符号位取反

移位运算:

  • 算术移位
  • 逻辑移位
  • 循环移位

加减运算:

  • 加法:[A+B]补 = [A]补 + [B]补
  • 减法:[A-B]补 = [A]补 + [-B]补

乘除运算:

2.3、浮点数

浮点数的表示:

  • 阶符 | 阶码数值部分 | 数符 | 数码数值部分

IEEE754:

  • 隐含数值最高位

浮点数的加减运算:

  • 对阶
  • 尾数求和
  • 规格化
  • 舍入:0舍1入法、恒置1法、直接舍入法
  • 溢出判断

数据的大端方式和小端方式:

  • 大端方式:主观上认为的方式;高位字节存放在低地址
  • 小端方式:低位字节存放在低地址,高位字节存放在高地址。

第三章:存储器

3.1、概述

分类:

按存储介质分:

  • 磁表面存储器:磁盘、磁带
  • 半导体存储器:主存、cache
  • 光存储器:光盘(CD-ROM)

按存取方式分:

  • RAM随机存储器:随机存取
  • ROM只读存储器:只能随即读出,而不能写入;ROM所存数据,一般是装入整机前事先写好的
  • 串行访问存储器:对存储单元读写时,要按其物理位置的先后顺序访址

RAM与ROM ?

RAM为易失性存储器,ROM为非易失性存储器。

分类。。。

信息可保存性:

  • 易失性存储器:断电后,存储信息丢失(主存、cache)
  • 非易失性存储器:断电后信息仍保持(ROM)

读出类型:

  • 破坏性读出:读出后需对存储信息再生(DRAM)
  • 非破坏性读出:不会对原存储信息破坏(SRAM)

存储器的层次化结构:

  • CPU
  • 寄存器
  • cache
  • 主存
  • 磁盘
  • 磁带、光盘

主存-辅存:虚拟存储系统,解决了主存容量不足的问题

**主存-cache:**解决CPU与主存速度不匹配的问题

3.2、SRAM与DRAM

存放一个二进制位的物理器件称为存储元,地址码相同的多个存储元构成一个存储单元,若干存储单元的集合构成存储体

SRAM 静态随机存储器

  • 存储元是用双稳态触发器来记忆信息(MOS管)
  • 非破坏性读出
  • 存储速度快,但集成度低,成本高,功耗大

**DRAM 动态随机存储器 **

  • 即主存,但目前的主存通常采用SDRAM
  • 采用栅极电容来存储信息
  • 破坏性读出,必须刷新
  • 存储速度慢,但集成度高,成本低,功耗低,容量大
  • **刷新:**DRAM上电荷只能维持1~2ms,每隔一段时间必须刷新
    • 集中刷新:在一个刷新周期内,利用一段固定时间,对存储器的所有行进行刷新,存在死区时间
    • 分散刷新:把对每行的刷新分散到各个工作周期,每个工作周期前半部分用于读写,后半部分用于刷新,没有死区时间
    • 异步刷新:刷新周期除以行数,得到一个时间间隔 t,则每隔时间 t 刷新一次。缩短了死区时间
    • 透明刷新:刷新安排在译码阶段,不存在死时间。

两者核心区别:

  • 存储元不同

    • 双稳态触发器, 采用MOS管, 非破坏性读出,读写速度快

    • 栅极电容,放电,是破坏性读出,需重写(再生),读写速度慢

3.3、ROM

特点:

  • 非易失性存储器
  • 结构简单,位密度比可读写存储器高
  • 主板上的BIOS芯片(ROM)存储自举装入程序,也是主存的一部分

类型:

  • MROM 掩膜式只读存储器:生产过程中写入,写入后无法改变内容
  • PROM 一次性可编程只读存储器:允许用户用专门设备读入内容,内容一旦写入就无法改变
  • EPROM 可擦除可编程只读存储器:可以写入信息,可以对内容多西修改,但修改次数有限
    • UVEPROM:紫外线照射,擦除所有信息
    • EEPROM:“电擦除”特定的字
  • Flash 闪速存储器:U盘,SD卡。长期保存信息,读比写快
  • SSD 固态硬盘:由Flash芯片组成快速擦除与重写,读写速度快。

3.4、主存和CPU的连接

主存通过数据总线、地址总线、控制总线与CPU连接。

主存容量的扩展:

  • 位扩展:增加存储字长,增加数据总线数
  • 字扩展:增加字的数量,
  • 字位同时扩展:同时增加存储字的数量和存储字的长度

存储器芯片的地址分配和片选:

  • 线选法:n条线–》n个选片信号,电路简单;地址空间不连续
  • 译码片选法:n条线–》2的n次方个片选信号,电路复杂,地址空间可连续

3.5、双端口RAM和多模块存储器

目的

  • CPU与主存的速度差异,主存恢复时间长(DRAM存取时间后有一段恢复时间)
  • 为了提高CPU访问存储器的速度,可采用双端口RAM(空间并行)、多模块存储器(时间并行)等技术。

双端口RAM:

  • 一个存储器有左右两个独立端口,分别具有两组独立的数据线、地址线、读写控制线
  • 允许两端异步的访问存储单元
  • tip:不能同时对同一地址写,不能同时对同一地址一个写一个读。

多模块存储器:

  • 单体多字存储器:每个存储单元存储多个字,总线宽度也为多个字,一次并行读出多个字。
    • 优点:增大了带宽,提高了单体存储器工作速度。
    • 缺点:每次同时取出多个字,因此指令和数据在内存内必须连续存放。
  • 多体并行存储器:由多个模块组成,可理解为多根内存条。
    • 高位交叉编址
      • 竖着编址,按顺序访问存储模块。
      • 不能很好的满足程序局部性原理。
    • 低位交叉编制:(俗称:双通道)
      • 横着编码,程序放在相邻模块,采用流水线存取。
      • 满足程序的局部性
      • 连续存储n个字,耗时:T + ( n - 1 ) r

内存条插入:

  • 相同颜色,采用低位交叉编址。
  • 不同颜色,采用高位交叉编址。

3.6、高速缓冲存储器

引入:

  • 双端口RAM和多模块存储器,提高了存储器的工作速度,但优化后CPU与存储器速度差异仍然很大
  • ==》更高速的存储单元设计
  • ==》价格 ↑ ,容量 ↓ ==》cache
  • ==》结合程序访问的局部性原理
  • ==》Cache - 主存

程序访问的局部性原理

  • 时间局部性:现在被引用的信息,一段时间后还会被引用。多用在循环结构。
  • 空间局部性:正在被引用的信息,其附近位置的信息将来也会被引用。多用在数组结构。
Cache工作的基本原理:
  • Cache和主存都被划分相等的块;
  • CPU发出请求时,若访存地址在Cache中,则直接访问;
  • 若Cache未命中,则仍需访问主存,将用到的块调入Cache
  • tip:
    • CPU与Cache交换的基本单位是字,Cache与主存交换的基本单位是块。
    • 为什么划分成块? :基于局部性原理,当前访存地址周围的字也放入Cache
分块中的问题 ?
  • 如何区分Cache与主存的数据块对应关系? =======》 Cache与主存的映射方式
  • Cache满了怎么办? **=========》**Cache中的替换算法
  • CPU修改了Cache中的数据副本,如何保持数据一致性? **============》**Cache写策略
1、Cache与主存的映射方式:

按照某种规则将主存的信息存入Cache

  • 直接映射:放固定的位置

    • 标记 Cache行号 块内地址

    • 主存块号 % Cache块数 = Cache行号

    • CPU根据Cache行号,找到Cache对应行,,若其标记为1,则根据块内地址存取信息;若标记为0,则在内存中找到对应的块调入Cache,并标记为1。

  • 全相联映射:随意放

    • 主存数据块放在Cache中的任意位置,用主存地址的高位做标记
    • 访存过程:CPU访存遍历Cache,对照标记看Cache内是否命中。
  • 组相联映射:放特定的组

    • 将Cache分为不同的组,组间采用直接映射,组内采用全相联映射
    • 标记 Cache组号 块内地址
    • 访存过程:先找到对应的Cache组,将对应组中的每个标记与主存地址的高位比较,若相等且有效位为1就命中。
2、Cache中的替换算法
  • 随机算法:随机决定替换的Cache。
  • 先进先出算法:替换最早调入的。
  • 近期最少使用算法:替换近期最久没有访问过的,用计数器记录每个块多久没被访问。
  • 最不经常使用算法:替换一段时间内访问次数最少的,用计数器记录每个块被访问过几次。
3、Cache写策略
  • 写命中:
    • 全写法:对数据写命中后,把数据同时写入Cache和主存
    • 写回法:写命中后,只修改Cache内容,被换出时才写回主存。
  • 写不命中:
    • 写分配法:加载主存中的块到Cache中,然后更新Cache块
    • 非写分配法:只写入主存,不进行调块

写回法与写分配法搭配;全写法与非写分配法搭配

3.7、虚拟存储器

将主存或辅存的地址空间统一编址称为虚地址,主存地址空间是实地址

页式虚拟存储器:

  • 虚页号 + 页内地址
  • 虚拟地址转化为物理地址:页表基址寄存器得到页表基址,结合虚页号在页表中找到对应的实页号,实页号和页内地址一起组成物理地址。

块表TLB:

  • 根据局部性原理,将一些经常访问的页放入高速缓冲器构成快表,

段式虚拟存储器:

  • 按照程序的逻辑结构划分
  • 段号 + 段内地址
  • 根据段号和段表基址得到对应的段表行,从段表中读出该段的起始地址,与段内地址相加得到实地址。

段页式虚拟存储器:

  • 段号 + 段内页号 + 页内地址
  • 根据段号和段表基址得到段表地址,从段表中取出页表起始地址,结合段内页号得到页表地址,从页表中读出实页号,与页内地址组成实地址。

3.8、虚拟存储器与Cache

相同:

  • 为了提高系统性能
  • 以块作为数据传输单位
  • 按照局部性原理,将活跃的数据放在高速部件中。

不同:

  • Cache主要解决系统速度问题,虚拟存储器主要解决容量问题
  • Cache全部由硬件实现,是硬件存储器;虚拟存储器由操作系统和硬件共同实现,是逻辑上的存储器
  • Cache硬件,因此对所有程序员透明;虚拟存储器对应用程序员透明,对系统程序员不透明。

第四章:指令系统

4.1、指令格式

结构

  • 操作码 + 地址码
  • 执行什么功能? 被操作信息的地址。

长度分类:

  • 单字长指令
  • 双字长指令
  • 半字长指令

操作数地址码数分类:

  • 零地址指令
  • 一地址指令
  • 二地址指令
  • 三地址指令
  • 四地址指令

定长操作码

  • 简化硬件设计,提高指令译码和识别速度

**扩展操作码指令格式:**操作码位数不固定

  • **目的:**在指令字长有限的前提下,保持比较丰富的指令种类,

  • 增加了指令译码和分析的难度,硬件设计变复杂。

  • **tip:**短码不能是长码的前缀

4.2、寻址方式

指令寻址

  • 顺序寻址: PC + 1
  • 跳跃寻址:转移类指令

数据寻址 (操作码 + 寻址特征 + 形式地址A)

  • 隐含寻址:在指令中隐含操作数地址规定累加器作为操作数地址,操作数隐含在ACC中,最后又被写回ACC
  • 立即数寻址:地址字段给出的不是操作数地址,而是操作数本身
  • 直接寻址:指令字中的形式地址就是真实地址
  • 间接寻址:指令字中的形式地址是存储信息的地址(类似于套娃)
  • 寄存器寻址:指令字给出操作数所在的寄存器编号
  • 寄存器间接寻址:操作数给出寄存器编号,寄存器中给出操作数所在主存单元的地址
  • 相对寻址:PC的内容加上形式地址形成操作数的有效地址。
  • 基址寻址:基址寄存器加上形式地址形成操作数有效地址
  • 变址寻址:变址寄存器加上形式地址。。。
  • 堆栈寻址:
    • 堆栈是存储区或寄存器组中一块按先进先出原则管理的存储区
    • 硬堆栈:寄存器够成的堆栈
    • 软堆栈:主存划分出的区域
    • 大部分指令表现为无操作数,操作数地址隐含使用SP。

4.3、CISC和RISC

CISC:复杂指令系统计算机 、 RISC:精简指令系统计算机

CISCRISC
控制方式微程序控制组合逻辑控制,硬布线使用少
架构X86架构ARM架构
指令指令复杂、庞大,指令数目多指令简单、精简、指令数目少
指令流水线可以实现必须实现
特点有利于编译程序代码优化

第五章:中央处理器

5.1、CPU的功能和基本结构

功能

  • 指令控制、操作控制…

结构

  • 运算器:
    • ALU、ACC、PSW、…
  • 控制器:
    • PC、IR、MAR、MDR…

5.2、指令执行过程

取址周期

  • 根据PC的内容从主存中取出指令代码并放在IR中

间址周期

  • 取出操作数的有效地址

执行周期

  • 执行指令

中断周期

  • 处理中断请求

5.3、数据通路

**概念:**数据在功能部件之间传送的路径

功能:实现CPU内部的运算器和寄存器之间的数据交换。

基本结构:

  • CPU内部单总线方式
  • CP内部三总线方式
  • 专用数据通路方式

数据传送:

  • 寄存器之间
  • 主存与CPU之间

5.4、控制器

**结构:**PC、IR、MAR、MDR、指令译码器

**功能:**取指令,对指令译码,指挥并控制CPU、主存、输入输出设备之间的数据流动

硬布线控制器
  • 根据指令要求、当前时序、以及外部和内部的状态产生一系列微操作控制信号。
  • 由复杂的组合逻辑门电路和一些触发器构成,因此又称为组合逻辑控制器。
微程序控制器

采用逻辑存储实现,也就是把微操作信号代码化,使每条机器指令转化成为一段微程序并存入一个专门的存储器(控制存储器)中,微操作控制信号由微指令产生。

设计思想:将每条机器指令编写成一个微程序,每个微程序包含若干微指令,每条微指令对应一个或几个微操作命令;微程序存放在控制存储器中,用寻址机器指令的方法来寻址。

基本概念

  • 微命令与微操作:微命令是微操作的控制信号,微操作是微命令的执行过程
硬布线控制器微程序控制器
工作原理组合逻辑电路根据当前指令码、状态和时序产生微操作控制信号微操作信号以微程序的形式存放在控制存储器中,执行指令时读出
执行速度
应用场合RISC(ARM架构)CISC(x86架构)
易扩充性不易扩充易扩充修改

5.5、指令流水线

特点:

  • 一个任务分解成多个任务,并依靠多个功能部件并行工作来缩短程序执行时间。
  • 每个功能部件后要有一个锁存器,保存本流水段的结果
  • 流水线各功能段的时间应尽量相等

影响流水线的因素:

  • 结构相关:
    • 同一时刻争抢同一资源
    • 解决:冲突的指令之间插入暂停周期
  • 数据相关:
    • 一个指令的执行要等待前一个指令的结果;写后读
    • 解决:1、对相应指令进行阻塞 2、数据旁路:直接把前一条指令的计算结果作为输入
  • 控制相关:
    • 出现转移指令或者其他改变PC值的指令造成断流
    • 分支预测,尽早生成转移目标地址、…

第六章:总线

早期大多采用分散连接,不易实现增减外部设备,为了更好解决IO设备和主机之间连接的灵活性,从分散连接发展为总线连接。

6.1、概述

分类:

  • 片内总线
    • 芯片内部,CPU内部寄存器与寄存器之间,寄存器与ALU之间的公共连接线
  • 系统总线
    • 各个功能部件之间(CPU、主存、外设)
    • 数据总线、地址总线、控制总线
  • 通信总线
    • 计算机系统之间或与其他系统之间
    • 也被称为“外部总线”

6.2、总线仲裁

如何解决设备争用总线的问题 ? -----》总线仲裁

集中仲裁方式

1、链式查询方式

  • 主设备发出总线请求信号
  • 由总线控制器判优,仲裁逻辑按一定优先等级确定谁使用总线,发出请求响应
  • 主设备开始传送数据

2、计数器定时查询方式

  • 总线控制器收到总线请求信号时,计数器开始计数
  • 计数值通过设备地址线发向各个设备,计数器的数值与设备地址一致时,该设备获得总线控制权

3、独立请求方式

  • 需要利用排队器
  • 设备发送总线请求,总线请求信号在总线控制器中排队
  • 总线控制器按照一定的优先次序决定哪个设备获得总线使用权。

分布仲裁方式:

不需要中央仲裁器,每个潜在主模块都有自己的仲裁号和仲裁器,然后进行仲裁号比较,获胜者仲裁号保存在仲裁总线。

6.3、总线操作和定时

总线传输

  • 申请分配阶段
  • 寻址阶段
  • 传输阶段
  • 结束阶段

传输方式:

  • 同步定时传输

    • 采用统一的时钟信号协调发送方和接收方的传送定时关系
  • 异步定时传输

    • 没有统一的时钟信号,完全按照传送双方相互制约的握手信号实现控制
  • 半同步通信

    • 同步和异步相结合
  • 分离式通信

    • 充分发挥系统总线的潜力,各模块准备数据时不占用总线,总线利用率提高

第七章:输入输出系统

磁盘阵列

  • RAID指将多个物理磁盘组成一个独立的逻辑磁盘,数据在多个物理盘上交叉存储,并行访问,具有更好的存储性能、可靠性、安全性

RAID分级:

  • RAID0:无冗余无校验磁盘阵列,没有备份,没有容错能力,提升了读写速度
  • RAID1:镜像磁盘阵列,有备份,有容错
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值