COA计算机组织与结构笔记
导论
组成与结构
计算机结构是对程序员可见的属性
计算机组成是实现结构规范的操作单元及其连接
比如,计算机是否有乘法指令是结构上的问题,乘法指令底层怎么实现是组成的问题
冯诺依曼机器
组成部分:
- 存储器
- 处理单元
- 控制单元
- 输入输出设备
摩尔定律
单芯片上所能包含的晶体管数量每隔一年翻一倍,到1970年后变为每18个月翻一倍
影响:
- 单个芯片成本基本不变,说明计算机逻辑电路和存储器电路的成本明显下降
- 集成度更高,电子线路长度更短,提高工作速度
- 计算机变得更小,可以放在各种环境中
- 减小了电能损耗对冷却的要求
- 芯片间的连接变少,而集成电路间的连接比焊接可靠
计算机简史
真空管 → 晶体管 → 集成电路
计算机系统性能
简答题
(1) 冯诺依曼存储程序的思想:
把程序的数据都以二进制的形式存储
(2) 衡量计算机系统的主要指标?
速度:响应时间、吞吐率。
响应时间是开始到完成的时间,吞吐率是单位时间的工作量。
(3) CPU时钟频率越高,机器越快吗?
还要考虑其他因素,比如存储器、I/O模块存取速度、总线传输速度等
(4) MIPS越大,性能越好吗?
不是,MIPS数反映的是机器执行定点指令的速度。不同机器的指令集不同,指令的功能也不同。
Internal Memory 内部存储
存储器
https://blog.csdn.net/lishuhuakai/article/details/8934540
存储器由一定数量的单元构成,每个单元可以被唯一标识,每个单元都有存储一个数值的能力。
- 地址:单元的唯一标识符(采用二进制)
- 地址空间:可唯一标识的单元总数
- 寻址能力:存储在每个单元中的信息的位数•大多数存储器是字节寻址的,而执行科学计算的计算机通常是64位寻址的
Q:每个计算机所能访问的地址有限?
寻址能力决定,n长01串决定了2n个地址
由计算机的设计决定的,不由总线(地址线)决定
eg. 16位的线可以传2次表示32位地址
存储组织的特点:
- 呈现两种稳定状态,表示0、1
- 能够写入信息(至少一次)来设置状态
- 能够读出状态信息
RAM 随机存取存储器
注意:本节的都是随机存取的,只是RAM先出来所有这样命名它
(1) 特点
- 易读、易写
- 易失性(一段电就没了),不是个好特性,但是材料受限
(2) DRAM
- 特性:长时间不通电会漏电,需要一段时间刷新一次
(3) SRAM
- 不需要一直刷新
(4) 对比DRAM和SRAM
- 相似:都具有断电易失性
- 不同:
- DRAM具有更高的集成度(体积小),但是需要不断地刷新
- DRAM更便宜
- DRAM更多地被用于大容量的存储器上(比如电脑都是DRAM)
- SRAM更快
- SRAM用于cache而DRAM用于主存储器
(5) 升级版 SDRAM和DDR SDRAM
SDRAM 就是同步DRAM 同步刷新,使SDRAM在处理请求时主控器可以做别的事情
DDR SDRAM是双速率SDRAM,每个时钟周期发送两次数据,一次在时钟脉冲的上升沿,一次在时钟脉冲的下降沿。
ROM、PROM、EPROM
(1) ROM Read-only memory
-
特点:
- 非易失性
- 可读但是不可写入新数据
注:不是不能写,是只能写一次(出厂的时候)
-
缺点:容错性差,一点错误就整个都不能用了
(2) PROM 可编程ROM
- 特点:
- 非易失性
- 出厂后可以写一次,且只能一次(用电信号)
(3) EPROM 可擦除PROM
- 特点:
- 可以写、读,非易失性
- 在强紫外线下可以擦除,且可以重复进行
- 每次擦除是全擦除,且要花20+min,不过可以重复进行
- 贵
(4)) EEPROM 电可擦除PROM
- 特点:
- 在前者的基础上,修改不用这么麻烦,不用擦除,直接覆盖
- 字节级的
- 缺点的贵、写得慢、比EPROM密度低
(5) Flash Memory 闪存
- 特点:
- 重编程速度快
- 使用电擦除技术,擦除某些块(而不是整块芯片,也不是字节级)
- 可以获得与EPROM一样高密度的存储(相比于EEPROM)
组合阵列
(1) 位拓展
地址线不改变、数据线增加
即位数增多
(2) 字拓展
地址线增多,数据线不改变
即位数不变,个数增多
电脑上多插一根内存条属于字拓展
(3) 都拓展
又字拓展、又位拓展
问题小结
-
存储位元的三个属性
-
随机是什么意思?
访问每个单元所需的时间是一样的,这里指的单元是寻址单元(可能有多个位元)
-
DRAM和SRAM对比
-
为什么要用ROM?
因为断电不易失
-
排列方式?方阵。原因?减少选址线
-
拓展方式?三个
Cache
一些概念
存储器层次结构
随着层次下降
- 每位价格下降
- 容量增多
- 存储时间变长
- 处理器访问存储器频率变低
所以可以利用局部性原理
Cache
RAID
RAID 0
- 不采用冗余来改善性能
- 条带化
优点:
-
更快的数据传输
-
更高的IO响应
原因:
- 如果单个IO请求由多个盘上的条带组成,可以并行处理
- 如果两个IO请求位于不同的数据块,被请求的块可能位于不同的盘上,可以同时发出,减少IO排队时间
RAID 1
- 简单地备份所有数据
- 和RAID0一样使用条带
优点:
- 一个读请求可以由包含请求数据的两个磁盘中的某一个提供服务。(读性能由快的决定)
- 一个写请求需要更新两个对应的条带,但是可以并行完成。(写性能由较慢的决定)
- 写的时候无“写损失”(相比于RAID 2 - 6 在修改单个条带的时候要先计算,然后修改的同时还要修改校验位)
- 恢复损坏的磁盘简单
缺点:贵
RAID 2
- RAID2和RAID3使用了并行存取。即所有磁盘都参与了每个IO请求的执行,各个驱动器的轴同步旋转。因此,每个磁盘上的每个磁头在任何时刻都处于同一位置。
- 使用数据条带,但是条带很小。使用海明码,能单纠错,双检错。
慢慢被淘汰了,因为磁盘越来越稳定
RAID 3
-
只需要一个冗余盘,奇偶校验。
-
当一个盘坏了,可以恢复
-
同时只能执行一个IO请求(2、3都是如此)
RAID 4
(没有被采用,因为原理上有错)
-
独立存取
-
使用数据条带,但是条带相对大一点,通过每个数据盘上的相应条带来逐位计算奇偶校验条带
-
修改某一位数据时候,不用读其他的盘,奇偶校验位
RAID 5
-
与RAID4相似,但是把校验条带分散到不同的盘上
-
并非完全独立了,写一个盘的时候会影响到两行两列
eg. 更新block1,占用disk1和disk5,影响了两行两列
-
更新一个数据的时候最多需要两读两写
优点:
开销小(只需要多一个盘!)
缺点:
与RAID1相比,修复能力差,坏一个盘可以,但如果坏了两个盘就完蛋了。
RAID 6
- 使用两种不同的奇偶校验计算,存在不同的磁盘中
- 这样一来,即使是两个盘损坏,也可以重新生成
对比总表
问题汇总
RAID2为什么在实际中没有被用?
RAID2采用了并行存取,条带小,所有磁盘都要参与每次的读写。虽然RAID2提供了较好的纠错机制,但是冗余盘的数量与数据盘的数量对数成正比,代价较大,且现有的磁盘已经具有较高的可靠性。
RAID4为什么在实际中没有被用?
RAID4采用了独立存取技术,每个磁盘的操作都是独立的。他对每个数据盘的相应条带来计算奇偶校验位,存放在校验盘上。但是由于所有的校验条带都位于一个盘上,校验盘需要参与每一次写操作,会成为性能瓶颈。
总结了一下,这种题目的答题套路差不多就是:采用了条带化/镜像/并行存取/独立存取的技术,具体技术是怎么样的,冗余盘代价如何,有什么问题/优势。
BUS
定义
连接CPU、内存、IO控制器和其他设备的线
分为数据线、地址线、控制线三种
数据线决定了一次可以传输的数据大小
地址线决定了地址空间的大小
设计要素
(1)总线类型:
-
专用的
优点:冲突小,高吞吐率
缺点:体积大
-
复用的
优点:布线数量小,节约空间和成本
缺点:需要复杂的控制电路;可能导致性能下降,因为事件可能会冲突
(2)仲裁方式:
总线可以听到不同设备的请求,但是同一时间只能发一个信息,所以要仲裁由谁发
需要考虑优先级和平衡性,使得优先级高的应该先发,而优先级低的不能一直在等
-
集中式:
有一个专门的硬件来负责,称为仲裁器或者总线控制器
-
Daisy Chain 菊花链式
优点:严格保证优先级;便于拓展添加设备
缺点:
- 有一个设备坏了会影响到后面
2. 无法保证公平性
3. 限制了总线的速度
- 有一个设备坏了会影响到后面
-
Query By A Counter 计数器查询
优点:
-
比较灵活,可以保证优先级也可以保证公平
如果要固定优先级,每次从0开始叫号;
如果要保证公平性,就从上次请求的继续叫号;
-
对单个设备损坏不敏感
缺点:
- 加了很多条ID线(logn)
- 需要解码并且比较ID,响应速度慢
-
-
Independently Request 独立请求
优点:快速响应;可编程的优先级
缺点:逻辑复杂,需要更多的控制线
-
-
分布式
-
Self Selection
图中优先级为3>2>1>0
设备发送请求后会进行监听,如果不是自己的数据(比如两个设备同时请求了,冲突了),就会暂停数据传输并且停随机时间后再请求
-
(3)时序:
-
Synchronous 同步
总线上的事件发生由时钟决定
同步就是约定好了时间
总线事务 = 一个地址+n个数据块
- 优点:便于实现和测试
- 缺点:
- 所有的设备共享一个时钟,速度受慢的设备约束
- 总线长度受限制(线太长的话时间便宜,就不准了)
-
Asynchronous 异步
总线上一个事件的发生取决于前一个事件的发生
-
握手机制:三次握手
注:Ack为acknowledged线
-
优点:对不同速度的设备灵活
-
缺点:对噪声敏感;逻辑复杂
-
例子:
-
-
Semi-Synchronous 半同步
为了解决噪声对异步的干扰
Ready and reply signals are valid in the rising edges of clock
-
Split Bus Transaction
(4)带宽、数据传输率、总线宽度:
- 带宽是最大传输率,不考虑额外开销
- 数据传输率要考虑地址传递等
- 总线宽度:
- 数据线越宽,一次传送的位数越多
- 地址线越宽,可以定位到的地址越多
(5)多层次结构
控制器
微操作
每个指令周期分为取指周期、间指周期、执行周期和中断周期,其中取指周期和执行周期是必须有的。
每个周期又可以细分成一系列的步骤,称为微操作
取指周期
间指周期
中断周期
处理器控制
功能需求
所有微操作可以如下分类
- 在寄存器之间传送数据
- 将数据从寄存器传到外部接口(如系统总线)
- 将数据从外部接口传到寄存器
- 将寄存器作为输入、输出,完成算术或逻辑运算
为了完成一个指令周期的操作,控制器完成两个基本任务
- 定序:使CPU以恰当的顺序一步步通过一系列微操作
- 执行:使得每个微操作得以完成
控制信号
- 输入:
- 时钟
- 指令:指令的操作码和寻址方式决定了完成何种微操作
- 标志:确定CPU状态和前一个ALU的结果
- 来自控制总线的控制信号
- 输出:
- CPU内的控制信号:
- 用于寄存器和寄存器之间的数据传送
- 用于启动特定的ALU功能
- 到控制总线的控制信号:
- 到存储器的控制信号
- 到I/O模块的控制信号
- CPU内的控制信号:
- 三种控制信号
- 启动ALU功能
- 控制数据通路
- 外部系统总线上的或其他外部接口上的控制信号
实现方式
硬连线(真值表)
输入:
-
IR
-
时钟
作为计数器,每个时钟周期有不同的输出
-
控制信号
微程序
- 微程序以微指令序列组成,这些微指令是用于指定微操作的非常简单的指令。
- 微程序控制器是一个相对简单的逻辑电路
- 能够定序各个微指令
- 能够生成执行微指令的控制信号
- 微指令产生的控制信号一样用于引发寄存器传送和ALU操作
- 微指令:介于软件和硬件间的,固件。
- 每条微指令结束后,定序逻辑都要将新的一组地址装入到控制地址寄存器,取决于:
- 顺序取下一条指令:控制地址寄存器+1
- 基于跳转指令转移到新的例程:把控制缓冲寄存器的地址字段装入控制地址寄存器
- 转移到一个机器指令例程:根据IR中的操作码向控制地址寄存器装入机器指令例程的第一条微指令
Q:一个指令周期有四个阶段:取值、间指、执行和中断。硬布线实现时需要用一个两位的寄存器标记状态,而微程序实现时不用,为什么?
A:因为硬布线实现的时候这两位作为输入来进行布尔运算并产生控制信号;而微程序实现时每一条微指令结束后会根据定序逻辑进入到不同阶段,从而时序地给出存储在控制存储器中的指令。
Input/Output
Q:为什么不把外设直接连到总线上?
A:各种外设操作不同;各种外设速度不同,有的比存储器或处理器快,有的慢;各种外设的数据格式的长度不同。
因此,IO模块是必要的
IO模块的功能
-
处理器通信
包括命令译码、数据交换、状态报告(IO是否busy或者ready?)、地址识别(识别每个外设的唯一地址)
-
设备通信
包括命令、状态、数据
-
控制和定时
协调相应顺序等
例如:控制从外设到处理器数据传输
- 处理器查询IO模块,检验外设状态
- I/O模块返回状态
- 如果ready,处理器向IO模块发出命令,请求数据传输
- IO模块获取外设的数据单元
- IO模块把数据传给处理器
-
数据缓存
-
检错、纠错
IO技术
(I) 编程式 Programmed IO
I/O操作对应的事件用程序存着
问题:在整个过程中,CPU被I/O占用
其中的指令=命令+地址
地址的编制方式有:
-
内存映射
- 坏处:牺牲掉一部分内存空间
- 好处:只要2条控制线,简单
-
独立编址
地址线+选择线(地址指向Memory还是IO?)
(II) 中断驱动
-
I/O模块视角:
- 接受READ命令
- 从外设中读数据
- 当数据进入到数据寄存器后,IO模块通过控制总线发一个中断信号
- 等待处理器响应后,传数据,然后进行下一个IO任务
-
处理器视角:
- 发送READ命令,然后去做别的事
- 每个指令周期结束后检查中断
- 如果有中断,保存状态,然后中断处理
(III) DMA
上述两种方式存在许多缺陷,比如:
- IO传送速度受到处理器测试和服务设备速度限制
- 每次IO处理器要执行很多指令
但是,DMA也有影响到CPU,因为指令在内存中,DMA也要访问内存,会有冲突
当冲突的时候,DMA优先级高。如果处理器停止访问存储器,除了处理时间延长外不会产生其他问题。但一些DMA可能连接高速数据传输设备,如果不及时写入数据到存储器的话可能会因为缓冲区溢出而造成数据损失。