美文网首页
计算机组成

计算机组成

作者: 谭英智 | 来源:发表于2020-08-30 17:15 被阅读0次

冯诺依曼

重要的设计思想

  • 存储程序,而不是开关连线
  • 二进制,而不是十进制

组成

  • 运算器
  • 控制器
  • 存储器
  • 输入设备
  • 输出设备

要点

  • 数据和程序以二进制代码不加区分的存放在存储器中,存放位置由存储器的地址指定
  • 计算机工作时能够自动的从存储器中取出指令执行
co-archi

执行指令步骤

  • 取指
  • 译码
  • 执行
  • 回写

模型

co-model
  • IR:指令寄存器
  • PC:程序计数器,自动增加,或者强制写入
  • MAR:存储器地址寄存器
  • MDR:存储器数据存储器,对存储器进行读写
  • ALU:加/减/乘/除/与/或/非...
  • Z:运算结果
  • F:结果状态,零/正负/进位/溢出
  • Rn:通用寄存器

输入输出

co-inoutmodel
co-inout

南北桥演变

co-sn1
co-sn2
co-sn3

演进的方向是,随着输入输出设备越来越快,它们对CPU的读写性能也要求更高,对于多个IO共享南北桥的方法,会严重影响读写效率,所以为了适应这些高速IO,会逐渐地使用增加芯片,增加总线,增加存储等方法,对高速IO做特殊化处理,使得计算机可以充分利用这些高速IO

指令系统

寄存器结构

8086

co-8086
  • IP:16位地址,访问地址时,使用4位段加偏移,可以方位20位的存储地址
co-address

80386

co-80386

8664

co-8664

X86指令

co-codeType

特点:

  • 变长
  • 一个指令可以从存储器获取数据,也可以从寄存器获取数据
  • 译码复杂
  • 高度封装
  • 共用F寄存器,难以并发

MIPS指令

设计思想

  • 减少指令类型
  • 降低指令复杂度
  • 一个越简单的CPU会是一个更快的CPU

特点

  • 固定长度
  • 指令要么只操作存储器,要么只操作寄存器
  • 运算只能操作寄存器
  • 指令少,功能简单
  • 简单的寻址模式

算术运算与逻辑运算

门电路

co-gate
  • N:当Gate通电,则闭合,否则打开
  • P:当Gate不通电,则闭合,否则打开

非门

co-not

VDD为高电频

A通电,则P门打开,M门闭合

Y输出低电平

与门

co-and
co-and0

或门

co-or

异或门

co-nor

通过组合与门和或门,得到异或门

寄存器原理

D触发器

co-d
  • 存储器的一位由一个D触发器组成
  • 由若干逻辑门组成,有多种实现方法
  • 由一个输入,一个输出和一个时钟输入组成
  • 当输入稳定,时钟上升沿(0->1),采样输入,并传送到输出,其余时间输出不变

逻辑ALU

co-alu

输入x(32位),y(32位),分别接入与/或/非等门电路,并产生n个输出,通过控制电路,选择其中一个,并输出

加法

半加器

co-helf-add

在不考虑进位的情况下,通过分析输入输出的逻辑运算,可以通过异或和与门实现加法

全加器

co-add

通过两个半加器,实现带进位的加法器

优化

通过上述的全加器,可以通过串行的方法,实现多位的加法运算

但是如果每个步骤都需要等待前一位的进位才可以进行,效率会非常差

co-addopt

根据以上公式,可以通过实现复杂的逻辑电路,通过三级门直接计算出进位c,实现优化的目的

co-addoptgate

随着位数的增加,这种方法实现的门电路就会越复杂。所以对于32位的加法,会通过4个8位超前加法器组合实现。

乘法

十进制的乘法,需要查找乘法表,并进行中间结果的累加,计算方法非常复杂

二进制的乘法,不需要查找乘法表,只需要通过移位计算出中间结果,并进行中间结果的累加,计算简单

初始版本

co-multi0
  • 8位的被乘数
  • 移位运算
  • 4位的乘数
  • 8位的加法器
  • 8位的结果

优化

  • 运算并行化

    对运算进行并行法,例如移位与加法可以在同一个时钟进行运算

  • 存储最优化

co-multopt

除法

通过移位和减法实现

co-divide

优化

co-diviedopt

单周期处理器设计

取指电路

co-fetch
  • PC为指令地址寄存器
  • clk在时钟上升沿,获取PC+4或者转移指令,通过nPC_sel控制
  • 并把指令传送到指令寄存器

加法电路

co-design-add

rd = rs + rt

  • rs和rt为加法输入寄存器,它们的值被送到busA和busB中,如果加法的一个操作数为立即数,那么通过ALUSrc选择并产生ALU的一个输入
  • ALU通过ALUCtr控制,产生运算的选择
  • RegWr控制是否产生输出,此时为选择产生
  • RegDst控制输出是输出到rd还是rt

读存储电路

co-design-load

rt = addressLoad(rs+imm16)

  • 寄存器rs和立即数传入ALU
  • ALU计算出存储器地址,并输出
  • Data Memory接收地址,并进行访存,并产生输出
  • MemtoReg通过控制电路选择访存的输出
  • 并输送到寄存器rt中

写存储电路

co-design-save

address(rt+imm16) = rs

  • rt和立即数通过ALU运算得到地址
  • Data Memory得到存储器位置
  • 用rs的数值写入存储器

流水线处理器

标量流水线

co-water

用串行的方法来设计cpu,需要进行取指-》译码-》执行-》访存-》写回

每个步骤都必须等待上一阶段完成,才可以进行

那么在执行每条指令时,会浪费大量的时间在等待

为了提高每个步骤的吞吐量,可以使用流水线的方式来设计CPU

co-watertimeling

从上图可以看到,cpu的吞吐量增加了,但是对于单条指令,执行的时间却变长了。

可以看出,流水线的切分,并不是越细越好。在达到一定的粒度时,性能会不升反降

超标量流水线

标量流水线,只有一条工作的路线

超标量,会有多条线路并行的进行流水线工作

多核CPU

一个核的CPU拥有一个超标量流水线

多核CPU则拥有多个超标量流水线

流水线冒险

定义

阻止下一条指令在下一时钟周期执行的情况

  • 结构冒险

    所需的硬件正在为之前的指令工作

co-water-struct

如果冲突,则把指令推迟到下一周期执行

如果在一个时钟周期内可以完成两个以上的操作,例如读写,则在时钟的前半周期先进行操作,后面的指令在时钟的后半部分进行操作

  • 数据冒险

    需要等待之前的指令完成数据的读写

co-water-data
  • 控制冒险

    需要根据之前的指令的结果决定下一步的行为

co-water-control

存储层次

对比

co-cache

CPU跟DRAM(内存)的差距越来越大,如果直接相连,会让CPU浪费大量的时间在等待,SRAM虽然价格高,但是速度快,可以作为cache作为中间层,提高CPU的数据读写性能

访问存储

  • CPU读cache
  • cache命中,则返回
  • 不命中,读主存,并返回

cache映射策略

通过主存地址,hash

co-cache-hash

冲突替换算法

  • 随机
  • 轮询
  • 最近最少使用

设计

数据和代码存在不同的cache中

中断与异常

由于计算机难免陷入异常状态,例如除0,此时计算机的状态是异常的,无法正确的进行下一指令的操作,那么此时需要引入异常处理,通过触发中断,计算机根据中断号,执行相关的代码,进行状态的修复。

中断的另一个用途是,低速外设,例如键盘输入,通过中断,CPU指定中断程序,把键盘输入写入内存,进行数据交换

如果外设拥有大量的数据需要交换,此时单靠中断和CPU直接操作,会消耗大量的CPU资源,使得CPU无法进行其他程序的执行,此时需要引入其他的芯片,例如显卡,处理数据,并进行数据的传输,等传输完成,再由CPU对数据进行运算

过程

  • 关中断
  • 保存断点
  • 识别中断源
  • 保护现场
  • 执行中断例程
  • 恢复现场并返回

输入输出设备

编址方式

  • 统一编址

    地址与存储器地址共用

    • 优点:操作方便,统一接口
    • 缺点:会占用内存地址
  • 独立编址

    地址与内存地址分开,使用独立端口访问

    • 优点:不占用内存地址
    • 缺点:操作复杂

IO控制方式

CPU如果控制外设的数据传送

  • 程序控制方式

    • 无条件传送

      CPU直接跟外设发送指令,不管外设是否准备好

    • 查询传送

      CPU执行程序,判断外设是否就绪,如果就绪则传送数据

  • 中断控制方式

    外设通过中断方式通知CPU可读或者可写

    CPU进行数据的交换操作

  • 直接存储访问

    CPU通知DMA

    DMA负责外设与存储器的数据交换

    交换完成,DMAC通知CPU

    CPU进行数据运算

相关文章

  • 计算机组成原理

    计算机组成原理重点知识复习提纲(参考) 计算机组成原理

  • 【Linux基础】计算机及操作系统基础

    计算机的组成及其功能 计算机的组成 简单来说,计算机应由两部分组成:第一部分:硬件 冯诺依曼结构体系 当前计算机主...

  • 计算机的基本组成

    计算机的基本组成,我们就以我们的台式电脑为例,说说计算机的硬件组成。 1. 硬件组成 CPU计算机的核心部件,所有...

  • 一、Linux学习-计算机基础知识

    1、描述计算机的组成及其功能。 计算机主要组成部分: 计算机的主要组成部分可以归纳为以下五个部分:控制器、运算器、...

  • 第一阶段第一章节 测试基础

    一、计算机的组成: 计算机由软件和硬件组成,软件分为系统软件和应用软件,下面介绍一下硬件的组成:计算机硬件主要分为...

  • 计算机硬件组成

    计算机硬件组成 (内容资料来源于网络,本文仅做归纳整理) 一、计算机硬件组成 一台完整的计算机通常包括以下组成部分...

  • 第二部分 计算机组成原理(45 分)

    (一)计算机系统概述 1、计算机发展历程2、计算机系统层次结构(1)计算机系统的基本组成(2)计算机硬件的基本组成...

  • Linux基础(1)

    一、描述计算机的组成及其功能。 整个计算机由硬件与软件组成 1.硬件 计算机硬件由以下五大基本部件组成,遵循冯诺依...

  • 软件设计师考试 | 第一章 计算机系统知识 | 计算机系统基础知

    (一)计算机系统硬件基本组成 计算机系统是由硬件和软件组成的,它们协同工作来运行程序。计算机的硬件组成: 运算器 ...

  • Linux基础命令及帮助

    1、描述计算机的组成及其功能。 计算机由CPU,主板,内存,硬盘,io设备等硬件组成。 CPU是计算机的大脑,包括...

网友评论

      本文标题:计算机组成

      本文链接:https://www.haomeiwen.com/subject/cgyesktx.html