计算机组成原理

计算机系统概述

计算机发展简史

  1. 1945年,美国制造出第一台电子计算机"ENIAC"。
  2. 计算机发展历程
  • 第一代 电子管电子计算机
  • 第二代 晶体管电子计算机
  • 第三代 集成电路计算机
  • 第四代 超大规模集成电路计算机
  • 第五代 普适计算机(PC、手机等计算机终端)

计算机结构与组成

  1. 计算机体系结构和计算机组成
  • 计算机体系结构 指能够被程序员见到的计算机系统的属性,概念性的结构与功能特性。
  • 计算机组成 指如何实现计算机体系结构所体现的属性,对程序员透明。指令系统体现机器的属性,这些属于计算机结构的范畴。只要两台机器的指令系统相同,就认为他们具有相同的体系结构。但指令的具体实现属于计算机组成的范畴。
  • 系列计算机 指一系列具有相同体系结构的计算机集合。这些计算机具有相同的指令系统,但性能和具体构造却各式各样。
  1. 计算机的基本组成
  • 冯·诺依曼体系 1945年数学家冯·诺依曼等人提出存储程序的概念。它的主要特点如下:
    (1) 计算机由 运算器、控制器、存储器、I/O设备5部分组成。
    (2) 指令与数据以同等地位存放于存储器内,并可以按地址访问。
    (3) 与数据均用二进制码表示。
    (4) 指令由操作码和地址码组成。
    (5) 指令在存储器内按顺序存放。
    (6) 机器以运算器为中心,输入输出设备与存储器的数据传送通过运算器。
  • 哈佛体系 哈佛结构是一种将指令存储与数据存储分开的存储结构,是一种并行结构,主要特点是程序和数据各有独立编址和独立访问的存储器,由4条总线构成,可同时获取指令和操作数。

运算基础

数据的编码和表示

  1. 数制
  • BCD 码 : 用4位二进制码表示1位十进制数的编码,常见的是8421 BCD 码。
  1. 定点数
  • 原码 & 补码 & 反码 & 移码
  1. 浮点数
  • 机器硬件表示: [阶符] [阶码] [数符] [尾数]
  • 浮点数的表示:[尾符] [8位阶码(移码)] [剩余尾数]
    规格化的尾数是左移一位,则隐藏掉小数点左边的的"1",实际精度多一位。移码的偏移值,单精度127,双精度1023。
  • 上溢 & 下溢
    当正数 > 1.11 ·· 1x2^127 正上溢。小于 2^-126 正下溢。
  • 浮点数的表示密度
    在尾数相同时,取阶数相差相同的几组数之间能表示的浮点数个数不均匀。阶数越小,数值越密。
  • 特殊值 & 非规格化数
    (1) NaN (Not a Number)
    (2) +/- ∞
    (3)非规格化数,小于规格化表示的最小数 1.0x2^-126 时,采用阶数为 0,尾数不为 0 的表示方法,密度均匀。

浮点数的运算

  1. 浮点数相加
  • 对阶操作
  • 尾数相加
  • 结果规格化

检错码与纠错码

  1. 校验码是在数据中加进冗余码。纠错码则加进更多冗余码,可以发现错误的准确位置以纠错。常用的有奇偶校验、循环冗余码校验(CRC)和海明码
  2. 海明距离
    长度相同的两个二进制编码对应数字不同的比特数,如1001的海明距离为2
    将两个有效数字之间的海明距离增加到3,用111000表示两个状态。假如传输出错一位,与111000海明距离近的,则判断为该状态。
  3. 奇偶校验
    为待校验码补充一位校验位,奇校验补充校验位使1的总数为奇数。偶校验使1的总数为偶数。
  4. CRC校验
    计算循环冗余码:设信息码多项式M = [1100]生成多项式G = [1011],M 为3阶 => M' = [1100000],用M'对G进行异或除法,余数即为 冗余码。
  5. 海明码
    海明码Ci(i=1~k)排放在第2^i位。
    C1=H1=H3 ⊕ H5 ⊕ H7 ⊕ H9 ⊕ H11
    C2=H2=H3 ⊕ H6 ⊕ H7 ⊕ H10 ⊕ H11
    C3=H4=H5 ⊕ H6 ⊕ H7 ⊕ H12
    C4=H8=H9 ⊕ H10 ⊕ H11 ⊕ H12
    简单海明码纠错
          M M M M C M M M C M C C
          8 7 6 5 4 4 3 2 3 1 2 1

address   1 1 1 1   0 0 0   0      C4=0
          1 0 0 0   1 1 1   0      C3=1
          0 1 1 0   1 1 0   1      C2=1
          0 1 0 1   1 0 1   1      C1=1

sendbyte  0 0 1 1 0 1 0 0 1 1 1 1

recebyte  0 0 1 1 0 1 1 0 1 1 1 1
          
address   1 1 1 1   0 0 0   0      C4=0
          1 0 0 0   1 1 1   0      C3=0
          0 1 1 0   1 1 0   1      C2=0
          0 1 0 1   1 0 1   1      C1=1

数字电路和逻辑电路基础

逻辑函数

  1. 布尔代数
  • AND ·
  • OR +
  • NOT -
  1. 逻辑函数的化简
  • 代数法化简
  • 卡诺图化简

组合逻辑电路

  1. 定义:如果逻辑电路的输出仅与当前输入有关,而与过去的输入无关,称为组合逻辑电路。
  2. 加法器
  • 半加器:Hn = XnYn
  • 全加器:Hn = XnYnCn-1;Cn = Xn·Yn + (XnYn)·Cn-1
  • 行波进位加法器:第n位的加法必须等到第n-1位的进位后才能进行。
  • 超前进位加法器:
  1. 译码器
  • 2 - 4 译码器
  1. 算术逻辑单元(ALU)
  • ALU是计算机的核心逻辑部件,能进行各种算术运算和逻辑运算。
  1. 数据选择器(MUX)
  • MUX是在地址选择信号的控制下,从多路输入数据中选择一路作为输出的电路,也叫多路开关

时序逻辑电路

  1. 触发器触发器是能够存储一位二进制的逻辑电路,是时序逻辑电路的存储部件。
  • 同步 R-S 触发器:Q(n+1) = S + R'Q(n)
  • J-K 触发器:Q(n+1) = JQ'(n) + K'Q(n)
  • D 触发器:Q(n+1) = D
  1. 寄存器和移位寄存器
  • 数码寄存器:并行D触发器组成。
  • 移位寄存器:D触发器级联组成。
  1. 计数器:D触发器组成2进制计数器,4个D触发器可以组成一个十进制计数器。

阵列逻辑电路

阵列逻辑电路指逻辑原件在硅芯片上以阵列形式排列。主要有半导体存储器和可编程逻辑器件。

  1. 只读存储器
  • 掩模式 ROM
    掩模式ROM的数据是在ROM芯片制造过程中固化到芯片内部的,因此无法再次更改。
    掩模式ROM一般包括地址译码矩阵存储单元矩阵输出缓冲区组成。
  • 可编程只读存储器
    熔丝型PROM,在每个存储单元都有一段熔丝,熔断即存储0,因此可由用户编程,但PROM只能写入一次。
  • 可擦除可编程只读存储器
    EPROM(光可擦除PROM) or EEPROM(电可擦除PROM)。
  • Flash 存储器:归于EEPROM
  1. 随机存储器
  • RAM可分为SRAM和DRAM
    SRAM(Static RAM)内部使用类似D触发器,是数字电路结构,只要不断电,数据可长久保存,速度快,广泛用于Cache中。
    DRAM(Dynamic RAM)使用晶体管和小电容组成的存储单元存放数据,是模拟电路。DRAM容量较大,但速度比SRAM慢很多,因此主要用作主存。
  1. 可编程逻辑器件(FPGA)
  • FPGA 主要包括:可配置逻辑块(CLB)、可编程输入输出块(IOB)、可编程内部连线(PI)、重构逻辑的程序存储器。
  • CLB 实现了FPGA中的大部分逻辑,逻辑函数发生器通过查表(Lookup Tables,LUT)实现组合逻辑。

VHDL 硬件描述语言

  1. HDL 设计层次自上而下分别是:
    (1) 第一层行为描述,对整个系统的数学模型进行描述。
    (2) 第二层RTL方式描述,也称数据流描述。
    (3) 第三层逻辑综合,利用逻辑组合工具,将RTL描述的程序转换成用基本原件表示的文件。
  2. VHDL超高速集成电路硬件描述语言
  3. VHDL语法
  • 一个 VHDL 程序包括实体(Entity)、结构体(Architecture)、配置(Configuration)、包集合(Package)、库(Library)5部分。
library ieee ;
    use ieee.std_logic_1164.all ;
    use ieee.numeric_std.all ;

entity mux is
  port (d0 , d1 , sel: IN std_logic; q : OUT std_logic) ;
end entity ; -- mux

architecture connect of mux is
signal tmp: std_logic;
begin
    process(d0,d1,sel)
    begin
    tmp <= (d0 and sel) or (d1 and (not sel));
    q <= tmp;
    end process;
end architecture ; -- connect

系统总线

系统总线概述

  1. 计算机5大模块之间的互联方式有两种:
    一种是分散式连接,早期以运算器为中心,后以存储器为中心。后来则出现了总线连接方式。
    总线是连接多个模块的信息传输线,某一时刻,只允许一个模块向总线发送信息,而多个模块可以同时从总线接收信息。
    总线连接的计算机结构以 CPU 为中心。
  2. 总线的分类
  • 片内总线:芯片内的总线,连接寄存器与寄存器以及ALU。
  • 系统总线:即"微机总线",由蚀刻在主板上的一系列平行的铜线组成。可分为三类:
    (1) 地址总线:存储器寻址。
    (2) 数据总线:双向传输。
    (3) 控制总线:主要作用是协调计算机系统的各个部件完成对数据总线和地址总线的访问。
  • 通信总线:是微机之间或与其他系统(仪器仪表等)之间信息传输的通道。常用的标准有:USB(通用串行总线)、Firewire(火线,IEEE 1394)和 Infiniband等。
  1. 总线的特性和性能指标
  • 总线特性:
    (1) 机械特性
    (2) 电气特性
    (3) 功能特性
    (4) 时间特性
  • 性能指标:
    (1) 总线时钟频率
    (2) 总线宽度
    (3) 标准传输率
    (4) 时钟同步/异步
    (5) 总线复用
    (6) 信号线数
    (7) 总线控制方式
    (8) 总线负载能力

总线的通信方式

  1. 同一时刻总线上只允许一对模块进行信息交换,采用分时方式轮换交替使用总线。
    (1) 申请分配阶段:主模块向总线仲裁器提出使用总线的申请。
    (2) 寻址阶段
    (3) 数据交换阶段
    (4) 撤销阶段:传输完毕,主模块将总线控制权交还总线仲裁器。
  2. 同步通信方式
    同步通信方式,模块之间的通信必须建立在精确稳定的系统时钟的指引下进行各自的操作。
    (1) 主模块送出从模块的地址到总线,稳定后送出一个控制信号(地址有效),凡挂在总线上的模块检查自身地址,若匹配,准备与主机模块通信。
    (2) 主模块送出读/写控制信号,交换数据。
    (3)T4 后半周期送出撤销信号。
    缺点:长距离传输相位会漂移,因此同步总线很短。总线必须以最慢的设备为基准,所以只适用各设备存取时间比较一致的场合。
  3. 异步通信方式
    异步通信不需要统一的系统时钟,通信双方通过应答方式(握手方式)进行通信。
  • 不互锁方式:主模块发出请求信号后,不等待从模块应答,而是经过一段时间确认从模块收到请求信号后撤销请求信号;从模块接收到请求信号后,在条件允许时发送回答信号,经过一段时间确认主模块收到回答信号后,自动撤销回答信号。
  • 半互锁方式:主模块发出请求信号等待从模块应答后再撤销请求信号;从模块应答后不等待主模块回答,一段时间后自动撤销回答信号。
  • 全互锁方式。

总线仲裁

  1. 集中式仲裁方式:由一个单独的总线仲裁器来决定下一次该哪个设备使用总线。
  • 链式查询:总线仲裁器使用三根控制线与所有部件相连,分别是总线请求、总线忙、总线同意
  • 计数器定时查询:与链式查询相比多了一条设备地址线,多了一根总线同意线。
  • 独立请求方式:每个设备都有一对"总线请求"和"总线同意"线。
  1. 分布式仲裁方式:没有集中的总线仲裁器,所有设备按照菊花链方式连接,最左端的设备具有最高的优先级。

总线结构

  1. 单总线结构:所有模块都链接到单一总线上,接口简单、便于扩充。
  2. 双独立总线:一条连接外部总线,引出芯片外作为系统总线,连接到主板上,用于和主存储器、I/O通信;另一条称为后端线,连接片上的L2 Cache。
  3. 多总线结构:将速度较低的I/O设备从系统总线上分出去,形成系统总线与I/O总线分开的双总线结构。可以进一步扩展到三总线结构.

常用总线标准

  1. ISA总线:由 IBM 公司推出。
  • ISA总线使用独立于CPU的时钟,有利于CPU性能的提高。
  • ISA总线没有支持总线仲裁的逻辑,不能支持多台总线主控设备系统。
  • ISA总线上的数据传输必须通过CPU或MDA接口来管理,降低了CPU效率。
  • EISA 是对 ISA 的扩充。
  1. PCI总线:PCI自1992年问世以来,就成为迄今为止最成功的接口规范之一,广泛应用于声卡、显示卡、网络设备及I/O等接口。
  • PCI总线的主要特点:
    (1) 突出的高性能:实现了33MHz和66MHz的同步总线操作,传输速率为133~533MB/s。支持突发工作方式。
    (2) 良好的兼容性:PCI总线部件和插件接口相对于处理器是独立的。
    (3) 支持即插即用。
    (4) 支持多主设备。
    (5) 提供奇偶校验,保证数据的完整性。
    (6) 优良的软件兼容性。
    (7) 定义了5V和3.3V两种信号环境。
    (8) 低成本。
  • PCI的典型应用:
    PCI不适合作内存总线,所以处理器和内存之间使用内存总线。内存总线和PCI总线通过桥接芯片完成共存。桥接芯片连接CPU、DRAM、PCI。当单PCI驱动力不够时,可以采用多层PCI的结构。
  • PCI使用的是集中式的总线仲裁器。
  1. AGP总线:为满足3D图形和视频显示的需求,1996年Intel提出了AGP(Accelerated Graphics Port)。AGP使用66MHz基本时钟,还支持2倍(2X)、4倍(4X)时钟数据传输模式。最大带宽能达到2133MB/s。但AGP只是专用于图形显示的总线,并不能代替PCI。
  2. PCI Express:
    随着设备技术的发展,PCI的速度已不能满足需求。PCI Express 定义了一个弹性的、高速串行的、点到点的、支持热插拔而且与PCI兼容的一种互联模式。
  • PCI Express 的体系结构
    PCI-E 彻底摒弃了在并行导线上连接众多主设备和从设备的传统总线模式,代之以基于高速点对点的串行连接设备的方式,它从交换式以太网中借鉴了很多重要的思想。
    CPU、内存和Cache之间依然使用传统总线连接方式,但增加了一个交换设备,其他的I/O设备可以通过点到点连线链接到交换设备。
    PCI-E 采用集中式交换网络代替了多站的总线结构;串行的点到点连接取代了并行的总线结构;PCI通信是主设备先申请总线使用权,然后寻找从设备。而PCI-E则是从一个设备发送一个数据包到另一个设备,包由包头和有效负载组成。
  • PCI-E 包括:物理层、链接层、事物层、软件层。

存储器

(未完...我就没继续了,已经搁置了一年多了,以后找时间补回来!)

推荐阅读更多精彩内容