计算机体系结构复习:电路

本文详细介绍了数字电路的基础知识,包括逻辑门的类型和使用注意事项,多路复用器(MUX)与多路信号分离器(DEMUX)的工作原理,以及时序电路如D锁存器、D触发器和寄存器的设计。此外,还探讨了内存数组的结构,如ROM、PROM和可编程逻辑阵列。最后,文章讲解了ALU(算术逻辑单元)和CPU的工作进程,包括单周期、多周期和流水线处理机的概念。
摘要由CSDN通过智能技术生成

目录

第一章  逻辑电路

 1.逻辑门

2.画出电路图

(1)单个表达式

(2)多个表达式

 (3)一般的电路图设计如下

 3. MUX(multiplexer) :多路复用器

(1)性质:

 (2)多路信号分离器(DEMUX Demultiplexer)(一生多)

 4.Multiplexer Logic

 第二章 时序电路(sequential circuits)

1. 基本概念

(1)双稳态元件

 ​编辑​编辑(2)SR锁存器(锁存0和1)

(3)D锁存器

(4)D触发器

(5)寄存器

2.时序电路逻辑

(1)Finite state machines(FSMS):有限状态机

(2)分类

(3)设计Moore Machines:以智能交通信号灯为例(输出只受状态影响)

(4)米利型状态机(mealy machine)模式检测器(pattern Dectector)

(5)总结:用有限状态机设计时序电路

第三章 内存数组

1. 地址编码器(decoder)是解复用器(demultiplexer)。

 2. 存储单元(bit cell)

3. 读取存储单元

(1)ROM(只能读的内存)

(2)PROM(Programmable Read Only Memory)

(3)可编程式逻辑阵列

 第四章 ALU

1. 半加器(half adder)/全加器(full adder):

2.多字节全加器

3.减法运算:a-b等于-b的补码加a

4. ALU:算术逻辑整合单元

5.怎么使用ALU

(1)ALU在CPU里的电路长啥样

 (2)如何向寄存器文件提供指令

(3) 怎么按顺序向ALU传输指令

(4)我们可以增加一些指令的形式

(5)如何设计支持type-i和r指令的电路

(6)type-j 跳转指令

(7)存储问题

第五章 CPU

1.CPU工作进程

 2. 处理机

(1)单周期处理机(single-cycle processor)

 (2)多周期处理机(multicycle processor)

 (3)流水线处理机(pipelined processor)

(4)三个处理机的比较

3.缓存

1)命中率(hit rate):CPU成功请求到数据的概率

​(2)丢失率(miss rate)

 (3)存储器平均访问时间(AMAT)


第一章  逻辑电路

 1.逻辑门

AND(a*b)

OR(a+b)

NOT(a取反)

buffer(通路,不管他)

 

 

 使用逻辑门时,注意:

(1). 不要使逻辑门销保持浮动

(2). 不要并行进行多个输出。

 (3).逻辑门需要时间来对它们的输入做出反应

2.画出电路图

(1)单个表达式

先按照表达式画一个稍微复杂的图

我们进行化简,将 ,i2,i0三个值做一个真值表

我们发现这符合异或门的规律,所以我们可以将 这部分的图用

来代替

可以化简成这样

(2)多个表达式

我们先提取出表达式里面都有些什么

好了,最主要的就是i0~3了,我们将他们初步画在电路图上

接着用与门造出小部分的组合

最后用或门把他们都拼接起来

 (3)一般的电路图设计如下

 3. MUX(multiplexer) :多路复用器

多路复用器根据选择信号的值(s1,s0)从几个输入中选择出一个输出(多生一)

(1)性质:

2^n:1的MUX的选择信号对有n个信号

选择信号的宽度取决于输入信号的宽度

输出值(y)是一个1位信号

 

 (2)多路信号分离器(DEMUX Demultiplexer)(一生多)

 

 4.Multiplexer Logic

最简单的方式:多路复用器可以用作查找表来执行逻辑功能。

 

 更先进的方式:我们可以通过用该变量来表示输出来组合行对来消除一个输入变量。这可以返回一个小的(半大小的)真值表。

 从多路复用器读取表达式

1.创造真值表

2.找出最小项创建SOP

3.写出表达式

 第二章 时序电路(sequential circuits)

1. 基本概念

组合电路的输出仅依赖于电流的输入,而时序电路输出取决于电流输入内存

(1)双稳态元件

特点:非门是交叉耦合的,这意味着i1的输入是i2的输出,反之亦然

 

 
(2)SR锁存器(锁存0和1)

它的状态可以通过S(设置)和R(重置)输入进行控制。

 

 第一种情况:R=0,S=0, 这个时候输出的是内存

第二种和第三种情况的分析:

最后一种情况无法输出

 那为什么不单独用S或者R来算Q或者!Q,因为当S和R都为1时,输出来的Q和!Q是错误的,无法输出,单独输入S或R是不会出现这种情况的,所以S和R得捆绑在一起输入。

既然可以捆绑,那整个SR锁存器可以进行封装

那有没有可以控制S和R状态改变的呢,我们可以在封装外面加上CLK和D来控制,也就是D锁存器

(3)D锁存器

我们用D(data)信号来控制下一个状态是什么

用CLK(clock)信号来控制什么时候状态要进行改变

 时钟信号是一个周期变化的信号,他的图长这样

 D锁存器的输出随着时钟信号的变化而变化

 D锁存器对于电平变化非常敏感,如果时钟信号处于高电平,则将D的输出传给Q,D的输出和Q的一样,和!Q相反

但是问题来了:如果时钟信号处于高电平位置时,D必须保持稳定状态,这样Q的输出才能是稳定的,然而在上面的图里面,在CLK处于高电平状态时,D上升,D的上升变化立即传播到Q,Q跟着上升。Q复制了D上升的那段斜线,此时Q的状态不稳定(介于1和0之间)。

那么怎样使Q能够稳定输出呢,D触发器告诉了我们答案

(4)D触发器

D触发器由两个D锁存器组成,

第一个D锁存器用来存储D的输入,当第二个D锁存器的CLK信号和第一个同步时,进行输出。

D触发器有两种形式

(1)小圆点在后一个锁存器上的

 D触发器将D在时钟的下降边缘复制到Q(negative edge-triggered


(2)小圆点在前一个锁存器上 

 

D触发器在时钟的上升边缘复制D到Q(positive edge-triggered

(5)寄存器

N位寄存器是一个N个触发器组,它们共享一个公共的CLK输入,因此寄存器的所有位都可以同时更新

①平行寄存器(PIPO)

 ②移位寄存器(SISO)

它有一个串行输入Sin,一个串行输出输出。在时钟的每一个下降/上升边缘,一个新的位从Sin移位,所有后续内容向前移位。

 ③串行并行输出(SIPO)寄存器

从Sin输入数据,从Q0到Q3输出数据

 ④并行操作中串行输出(PISO)寄存器

从D0到D3输入数据,从Sout输出数据

2.时序电路逻辑

时序电路设计:时序电路设计是组合电路(combinational)加上存储元件(storage element)

时序电路和组合电路的区别:

*时序电路的值取决于当前值和之前输入的值。

时序电路(Sequential Circuit)等于触发器+组合电路。

触发器存的值是状态值(state),x和状态值Q同时输入,产生结果y和新的状态值Q+,Q+被存在

存储元件中。

(1)Finite state machines(FSMS):有限状态机

用于展示状态值变化的过程

有限的理解:因为存储元件存的有限元素,输出的y也是有限的。

state的值有1个,同输入时会得都2个不同的结果

state的状态值有n个的话,结果就有2^n个

FSM的状态表示:状态转换图

解读状态转换图

一个封闭的圆表示一个状态,图中有两个状态S0,s1,最右边的0/0表示:输入/输出。

箭头从Q=1返回到Q=1表示,输入为0时,状态值不变,输出的结果y=0

同理:从S1指向S0的箭头1/0,表示在状态值S1时输入1,状态值被改变为S0,并且输出结果y=0

如果输出结果和输入没有关系,结果可以写在圆内:

上图中的S1状态下无论输入是0还是1,输出结果都为0,只有状态改变,所以我们可以把y=0写在圆内

(2)分类

FSMs可以分为两类:Moore machines和Mealy machines

两者区别:摩尔型(Moore)的输入->状态->输出,输入不直接影响输出

米利型(mealy)的输入->状态->输出同时输入->输出,输入可以直接影响输出

状态真值表:

已知Fsms的输入:状态值+输入(Q+a),输出:新的状态值+输出(Q^+ 和 y),所以我们可以对新的转态值和输出做真值表,并且求出等式。

(3)设计Moore Machines:以智能交通信号灯为例(输出只受状态影响)

输入:两个交通信号Ta Tb,输出:两个信号灯信号La,Lb

要求:当交通拥挤时保持绿灯

1.设计状态转换图:x表示无论1还是0都不影响结果

2.求状态真值表和状态等式

注意我们对状态进行二进制编码00表示Sa,01表示sb(用二进值编码把状态值存在寄存器里面)

同样结果有三种(红橙黄),所以我们对结果进行二进制编码求出等式

最后构建电路图

总结:state Diagram->state table->state/output expression->sequential circuit

(4)米利型状态机(mealy machine)模式检测器(pattern Dectector)

输入是比特流0,1序列,并检测到101时输出1

状态转换图

从Sa开始,当输入1时切换状态输入0时才转换状态,最后再无论结果是0还是1都回到Sa。

简单来说:先和101的1匹配再和0匹配最后和1匹配。

后面和交通信号灯大同小异:把状态量二进制编码表示,求表达式不多展开

分析时序电路就反过来

(5)总结:用有限状态机设计时序电路

第一步:确定选用什么机

第二步:画出状态表和输出表,并写出表达式

状态表包含当前状态,输入和下一状态

输出表

第三步:根据表达式画出电路图

这里的画图有两个方法:逻辑门方法和用可编逻辑阵列方法

举个例子:画出下面表达式的电路图

用逻辑门可以这样画                                       用可编逻辑阵列可以这样画

 

 可编逻辑阵列的方法后面会提到,在这里先说一下打叉的地方说明取的是这里的输出

练习:

根据图片画出状态表和输出表(其中Sa = 00、Sb = 01、Sc=10(即,如果状态为10,则为Q1 = 1;Q0 = 0))



同步电路和异步电路分析(Synchronous and Asynchronous Sequential Logic):

同步电路:电路元件只有寄存器或者组合电路,所有的寄存器用一样的时钟信号

异步电路:可能有多种时钟信号

第三章 内存数组

内存数组是由单元(cell)组成的二维数组。

读取数据时每次读取一行,每行都有一个对应地址,地址是固定的。

1. 地址编码器(decoder)是解复用器(demultiplexer)。

输入和VDD连接,以选择信号作为地址信号

一个输入信号对应地址的一位,输出的结果是y中的某一个,总的来说是一个地址信号对应一个输出y,更像是一种映射关系。

Ps:我们常说的地址和内存的物理地址是不一样的,地址解码器是把地址映射为在内存上的实际地址。

 2. 存储单元(bit cell)

每个bit cell存着一个bit数据,如果wordline(字线)为0,位线(bitline)和bit cell不连接,为1则连接

位线可以改变bitcell的内容,字线用来决定位线是否发挥作用

DRAM中,一行存储单元共用一条字线和多条位线。

不同的类型的bitcell存储数据的方式不一样:

DRAM(Dynamic RAM):给电容充能,充能表示1,接地表示0

优点:便宜和快,缺点:每次数据在读完后或者每隔一段时间要重新充能,因为电容的电会泄露

SRAM(Static RAM):用双稳态电路直接保留高低电平表示0,1,有比DRAM更多的电级管

优点:不用充能,缺点:贵和慢

3. 读取存储单元

位线开始不连接bitcell,字线打开后,位线连接,bitcell的值输出位线0或1

写入bitcell:位线被驱动,字线被打开,位线写入。

写入可以k不用地址解码器,应为写入哪个位置由系统决定,如果精准写入就会用到。

(1)ROM(只能读的内存)

用有无晶体管表示是否存储数据。

电流只能从字线流向位线。

像这里有点的位置表示有数据存储在这里。

(2)PROM(Programmable Read Only Memory)

只能被写入一次

原理:一开始假设字线和位线连通,输出高电压破坏连接,不可逆。

EPROM:EROM的一种,不同在于破坏数据用强紫外线。

(3)可编程式逻辑阵列

一种固定结构逻辑器件,具有可编程与门可编程或门

体系结构对应于SOP形成的逻辑表达式。

根据真值表设计电路

数据读取形式:找点对应的字母,先纵向查看有没有字母组合,最后在最下方进行横向查看,用或门的特性把刚刚的字母组合加起来

 第四章 ALU

1. 半加器(half adder)/全加器(full adder):

全加器                                                            半加器

 输入:

a,b

Cin是进位输入

输出:

Cout : 就是在计算过程中出现的进位的数字

y:a+b的最终结果


根据真值表求出表达式构造就好了 

2.多字节全加器

1.把全加器的C out和下一个全加器C in连接

这种叫做(Ripple-Carry Adder)行波进位全加器

n位全加器含义2*n+1个门

2.先行进位全加器,进位的运算不用用前一个C out直接求出表达式(CLA)

运算只用到三个门

3.减法运算:a-b等于-b的补码加a


-b的补码等于将b包括符号位按位取反+1 

减法就转化为加法(a-b = a + (-b)),加完把最前面超出位数的去掉就行

乘法(无符号数)

两个规则:1.必须前面补符号位2减去最后一个数

移位:左移/逻辑右移/算术右移

逻辑移补0,算术移补符号位

逻辑与位异或:略

4. ALU:算术逻辑整合单元

一个ALU将各种数学和逻辑运算组合成一个单元,不只是可以进行加法,还可以计算减法啊,逻辑位移那些。而且ALU相当于一个计算器,他是不会存储计算结果的。

F:表示操作模式,a,b表示输入,y表示输出

5.怎么使用ALU

(1)ALU在CPU里的电路长啥样

使用寄存器提供ALU输入信号并捕获输出。该寄存器文件包含多个寄存器。哪些寄存器为ALU提供输入数据取决于地址(A1、A2)。哪个寄存器将存储结果取决于地址A3

 (2)如何向寄存器文件提供指令

计算机先将输入的指令存储到指令内存中,接着指令内存输入部分指令到ALU和寄存器文件

(3) 怎么按顺序向ALU传输指令

我们使用一个附加的寄存器和一个加法器来生成程序计数器(PC)信号。在每个循环中,PC的值都增加了1。因此,指令可以逐个转到寄存器文件。

(4)我们可以增加一些指令的形式

type-r指令,r表示register,由3个寄存器名字和1个函数的形式

type-i指令,i表示immediate number立即数,由操作码(opcode),两个寄存器和立即数组成

比如这条指令

put 29 into register $1 " or " set $2 = $1 + 29

例如:
当操作码 = 1,表示将立即数放到寄存器2,忽略寄存器1

当操作码 = 2,表示寄存器2 = 寄存器1的数据+立即数

(5)如何设计支持type-i和r指令的电路

我们可以加上一个控制单元来存储函数和操作符

(6)type-j 跳转指令

设计type-j指令电路 

 sign extend 画了一条线返回加法器,这个地方就是返回return步骤

(7)存储问题

我们的ALU只是一个计算工具,如果我们想要在上一次计算结果下继续计算,又该怎么做呢

计算机为此设置了一个数据内存,每一次计算结果,符号,命令等都会存在这里面,可以从里面调用数据重新返回给寄存器文件和ALU进行下一次计算

第五章 CPU

1.CPU工作进程

 2. 处理机

(1)单周期处理机(single-cycle processor)

特点:在单个周期中执行命令,如果遇到一条比较长的命令,CLK的周期必须足够长

 (2)多周期处理机(multicycle processor)

特点:通过添加一组寄存器,将一条指令分解为多个更短的步骤

 (3)流水线处理机(pipelined processor)

将单周期处理器细分为五个流水线阶段。因此,多条指令可以同时执行,每个阶段各执行一个。

每个寄存器将整个图分成5大块

 和多周期处理机的区别是多条指令能不能同时进行

(4)三个处理机的比较

单周期处理机指令逐个执行,每个指令的执行时间相同,命令处理完到下一条命令会有一个空档期

多周期处理机指令逐个执行,有些指令可以比其他指令执行得更快。

流水线处理机指令同时执行

练习:

您的任务是通过重新设计单周期处理器的结构来提高其速度。给定的CPU假设有3个不同的指令。这些指令的执行过程如下所示。

命令1: 获取指令、解码、执行和回写。

命令2: 获取指令、解码和回写。

命令3: 获取指令、解码和内存写入

当前,每个进程步骤的时间消耗为:获取命令4ns;解码1ns;执行8ns;回写4ns;内存写入: 8ns。哪种优化对提高速度的效果最好?

A. 内存写入: 8ns -> 2ns

B. 获取指令: 4ns -> 2ns

C. 执行时间: 8ns -> 5ns

这道题答案选C,不是选A哦

单周期处理器,每一条命令的执行是单独的,需要等第一条命令处理完才能开始第二条命令。

命令一总时间17ns,命令二总时间9ns,命令三总时间13ns

这种问题其实是一种木桶效应的问题,命令一总时间最长,说明他是这个进程里面的短板,我们就要给他缩短时间填补短板,而命令1缩短时间最好办法就是C选项的处理方法

3.缓存

CPU可以从缓存中请求数据。

如果缓存包含数据(缓存命中),缓存可以立即将数据传递给CPU(以非常高的速度)。

如果缓存不包含数据(缓存丢失),CPU将从内存中获取数据(并将数据放入缓存中以备将来使用)

(1)命中率(hit rate):CPU成功请求到数据的概率

下图CPU有6个箭头通过缓存指向内存,说明命中4个数据,丢失了6个数据



(2)丢失率(miss rate)

 (3)存储器平均访问时间(AMAT)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值