0
点赞
收藏
分享

微信扫一扫

计算机组成原理 学习笔记

岁月不饶人老不正经 2022-04-01 阅读 284
数据库

计算机组成原理 学习笔记

控制器

控制器的组成及指令的执⾏

基本的计算机组成和功能

计算机系统的基本组成主要包括三个部分:中央处理器(cpu)、存储器和I/O系统,它们之间都是通过总线连接的。从物理上来说,总线就是

⼀组导线,起作⽤就是把信息从⼀个部件传到另⼀个部件。

连接系统的总线包括三种信号:地址信号、数据信号和控制信号,传送这三种新号的总线分别称为地址总线AB、数据总线DB和控制总线

CB。

地址总线总是来⾃于CPU或总线主设备、数据总线的作⽤是在CPU、存储器和I/O设备之间传送数据

计算机的主机包括运算器、控制器和主存三部分。运算器和控制器⼀起构成了CPU,它是整个计算机系统的核⼼。

CPU具有以下四个⽅⾯的基本功能:1.指令控制,确保计算机指令按程序的顺序执⾏。2.操作控制,⼀条指令的功能通常由若⼲个操作信号 组合起来实现,cpu控制这些微操作的产⽣、组合、传送和管理。3.时间控制,使各种微操作和指令的执⾏严格按照时间序列进⾏。4.数据 加⼯,由运算器对数据进⾏算术运算和逻辑运算。

控制器的组成

程序计数器PC

程序计数器的功能是⽤来存放当前正在执⾏的指令地址或者下⼀条指令的地址。

指令寄存器

控制器从内存中取出指令,存放在指令寄存器IR中,以便控制器对指令进⾏译码、执⾏。

指令译码器

指令划分为操作码和地址码字段,为了执⾏指令寄存器中的指令,必须对操作码进⾏译码以识别该指令所要求的操作。

操作控制信号形成部件

根据指令操作码的译码信号以及时序信号,产⽣取出指令和执⾏这条指令所需的各种操作控制信号,以便正确地建⽴数据通路,完成 取出指令和执⾏指令的控制。

时序信号产⽣器

提供时钟信号和机器周期信号,以规定每个操作的时间。

地址寄存器AR

专门的收纳可能有多种来源的地址,然后统⼀在规定的节拍将地址送上总线的寄存器

数据寄存器DR

当CPU把数据发送到存储器或I/O设备是,CPU⼀般会将数据送⼊DR,然后再从DR将数据送上数据总线。

时序及控制⽅式

时序信号

指令周期

计算机取出⼀条指令并完成该指令的执⾏所需要的时间。

机器周期/CPU周期

CPU与内存交换⼀次信息所需要的时间。

时钟周期/节拍周期

⼀个CPU周期包含若⼲个时钟周期,是处理操作的最基本时间单位

⼀个机器周期需要多少个节拍最合适取决于该周期时间内需要顺序完成的基本操作步数,可采⽤下述⽅法确定:统⼀节拍法、分 散节拍法、延长节拍法、时钟周期插⼊

时序信号产⽣器

产⽣指令周期中各时序信号的逻辑电路,由时钟源、环形脉冲发⽣器、节拍脉冲逻辑、启停控制逻辑等部分构成

控制⽅式

同步控制⽅式

异步控制⽅式

联合控制⽅式

数据通路和指令的执⾏过程

简单计算机系统的数据通路

存储器读操作

送地址到CPU⽚内总线,并送⼊地址寄存器AR

控制器放松存储器读信号,启动存储器读操作,并将读出的数据从数据总线上接收⾄数据寄存器DR

存储器写操作

送地址到CPU⽚内总线,并送⼊地址寄存器AR

送数据到DR,DR将数据送到数据总线,控制器发送存储器写信号,启动存储器写操作。

简单计算机系统主机各部件的实现⽅案

运算器

控制器

存储器

简单计算机系统中指令的执⾏过程

取指令

控制器先将第⼀条指令的地址置⼊程序计数器PC,PC将当前指令的地址送到地址寄存器AR,同时程序计数器PC的内容递增以指向下⼀条指令的地址,地址寄存器AR的输出通过地址总线送到存储器的地址端,指明指令所在的地址单元,控制器发出读控制信号,控 制从存储器中读出这条指令;该指令通过数据总线送到指令寄存器IR。指令取到指令寄存器IR后,⽴即由指令译码器对其进⾏分析译 码;指令译码器⾸先判断该指令是什么指令,然后将判断结果信息传递给操作控制信号形成部件。

执⾏指令

操作控制信号形成部件根据指令译码信息和时序周期信号,发出该指令所需的所有不见的有⼀定时序关系的控制信号序列,完成指令 的执⾏。

MIPS单周期CPU的数据通路和指令的执⾏过程

分析MIPS的指令格式,以及每种格式下指令的功能。

根据指令功能,罗列所需器件和器件之间的连接⽅式。

确定每个期间所需的控制信号。

单周期MIPS CPU要求在每个时钟周期执⾏⼀条指令。为保持在执⾏指令期间,指令存储器取出的指令不变,PC值在指令执⾏期间必须保持不变,因此PC+4的值应该在下个指令周期开始的时候付给PC。添加⼀个暂存PC⾃增值的寄存器PC_new,在指令周期clk的上升沿执⾏取指令操作,在clk的下降沿更新PC值。系统启动时PC复位,添加复位信号rst。

R型指令数据通路的设计

所有R型指令的共同特征是:操作码字段OP=000000b,指令的功能由功能码字段func指出。每条R型指令的操作数有3个,两个源操作数分别位于rs和rt字段所指定的寄存器中,⽽⽬的操作数则位于rd字段所制定的寄存器中。为实现R型指令,应添加多端⼝寄存器和多 功能运算器。

32*32位寄存器堆和多功能运算器ALU建⽴数据通路,控制信号都由译码及控制单元发出,⽽译码及控制单元可以采⽤硬布线⽅式 或微程序⽅式实现。

rs->读端⼝A的寄存器地址,rt->读端⼝B的寄存器地址,rd->寄存器堆的写端⼝,寄存器AB⼝数据->ALU的输⼊端AB,ALU计算 结果->寄存器堆的写数据端⼝

OP字段全为0->R型指令->func字段翻译成ALU的控制信号ALU_OP

clk上升沿:启动指令存储器,依据PC读出指令

在clk⾼电平持续期间:完成PC值的⾃增、指令译码、寄存器读操作、随后完成ALU运算

在clk下降沿:完成⽬的寄存器的写⼊、PC值的更新和标志寄存器的更新

将clk反相后作为寄存器堆、PC和标志寄存器的打⼊脉冲

add rd,rs,rt (算数加rs + rt -> rd)

clk的上升沿->启动指令存储器->依据PC读出add指令->clk⾼电平持续期间->PC_new寄存器=PC+4->指令译码->寄存器堆的读端

⼝AB分别以指令的rs和rt作为寄存器号同时读寄存器->R_Data_A和R_Data_B分别输出rs和rt寄存器的内容->译码和控制单元把

func字段翻译成ALU的控制信号ALU_OP->ALU按ALU_OP控制信号所指定的操作类型对这两个操作数进⾏加法操作->clk的下降沿->加法运算的结果写⼊⽬的寄存器->根据运算结果置标志寄存器->⽤PC_new的值更新PC值

I型指令数据通路的设计

数据传输类指令、访存指令、分⽀转移指令和含⽴即数的指令⼀般采⽤I型指令格式。

增加⼆选⼀数据选择器,⽀持⽬的寄存器的两种来源

当rd_rt_s=0时,⽬的寄存器是rd,将指令的rd字段送⼊写地址,当rd_rt_s=1时,⽬的寄存器是rt,将rt字段送⼊写地址

增加期间,使指令低16位⽴即数imm经过拓展与rs执⾏运算操作

当imm_s=1时,对于有符号数的运算执⾏符号拓展,⽤16位⽴即数的最⾼位填充⾼16位,从⽽构成32位的数,当imm_s=0时, 对于⽆符号数的运算执⾏0拓展。

增加⼆选⼀数据选择器,⽀持ALU运算数据的两种来源

当rt_imm_s=0时,将寄存器B端⼝读出的R_Data_B送⼊ALLU的B输⼊端,当rt_imm_s=1时,将扩展的⽴即数imm_data送⼊

ALU的B输⼊端

需要添加⼀个数据存储器RAM,存放指令访问的数据。

当Mem_Write=0时读存储器,当Mem_Write=1且clk下降沿(反相)到来时写存储器

使⽤ALU实现对有效地址EA的计算。

ALU的加数和被加数是rs和经过符号拓展的offset,计算得到的EA可以由ALU的输出直接送到存储器地址端⼝。

存 储 器 读 出 的 数 据 rd_rt_s=1选择写⼊rt寄存器,alu_men_s=0时将ALU的输出送⼊寄存器堆的写数据端⼝,当alu_men_s=1时,将存储器的读出数据送⼊寄存器堆的写数据端⼝

存储器的写⼊数据

将寄存器堆的B端⼝的数据直接送⾄存储器的写数据端⼝

addi rt,rs,imm (算数加rs + imm -> rt)

clk的上升沿->启动指令存储器->依据PC读出addi指令->clk⾼电平持续期间->PC_new=PC+4->指令译码->寄存器堆的读端⼝A以

rs读存储器输⼊到ALU->imm经过符号拓展(imm_s=1)输⼊到ALU(rt_imm_s=1)->与读出的rs寄存器的内容相加->clk的下 降沿->加法运算的结果写⼊寄存器rt(alu_men_s=0)(rd_rt_s=1)->根据运算结果置标志寄存器->PC_new=PC

lw rt,offset(rs) (取数(rs+offset)->rt)

clk的上升沿->启动指令存储器->依据PC读出lw指令->clk⾼电平持续期间->PC_new=PC+4->指令译码->寄存器堆的读端⼝A以rs 读存储器输⼊到ALU->offset经过符号拓展(imm_s=1)输⼊到ALU(rt_imm_s=1)->与读出的rs寄存器的内容相加->以加法的结果作为地址访存(Mem_Write=0)->clk的下降沿->加法运算的结果写⼊寄存器rt(rd_rt_s=1)->PC_new=PC

转移指令数据通路的设计

3种格式的转移指令

jr rs ®

beq rs,rt,label (I)

jal label (J)

转移地址的产⽣⽅法有三种

rs

PC+4+offset*4

{(PC+4)⾼四位,address,0,0}

送⼊PC完成跳转

加上PC⾃增,PC的来源有4种,需要⼀个4选1多路选择器,由两位控制信号PC_s[1:0]来选择

产⽣转移地址

对于PC⾃增,使⽤PC_new(PC+4)

对于rs,直接使⽤寄存器堆的读出A数据端⼝

对于相对转移,需要添加⼀个地址加法器,将PC_new和符号扩展兵左移2位后的offset相加

对于页⾯寻址的转移地址,则需要简单的左移和拼接操作

jr rs (rs -> PC)

clk的上升沿->启动指令寄存器->依据PC读出jr指令->clk⾼电平持续期间->指令译码->PC_new=PC+4->寄存器堆的读端⼝A以rs读 寄存器->clk下降沿->读出的rs寄存器的内容更新PC->PC_s[1:0]=1

beq rs,rt,label (if(rs == rt) then PC+4+offset4->PC else PC+4->PC))

clk上升沿->启动指令存储器->依据PC读出beq指令->clk⾼电平持续期间->指令译码->PC_new=PC+4->offset左移两位后与

PC_new的内容⼀起送到地址加法器ADD中相加->寄存器堆的读端⼝AB分别以rs和rt作为寄存器号同时读寄存器->由R_Data_A和

R_Data_B分别输rs和rt寄存器的内容到ALU中相减->clk的下降沿->根据运算结果置标志寄存器->根据ZF标志的值选择⽤

PC_new(PC+4)的内容或从ADD得到的相加的结果(PC+4+offset4)来更新PC值->PC_s[1:0]分别为0或2

jal label ((PC+4)->MYM31,{(PC+4)⾼四位,address,0,0}->PC)

clk的上升沿->启动指令存储器->依据PC读出jal指令->clk⾼电平持续期间->指令译码->PC_new=PC+4->address左移两位并将低

2位补00后与PC_new的⾼四位拼接在⼀起构成32为的转移地址->clk的下降沿->PC_new寄存器的内容写⼊MYM31寄存器-

硬布线控制器

MIPS硬布线多周期CPU的设计

多周期CPU设计原则

不同的指令依据功能需要可以包含不同数⽬的时钟周期,即每条指令需要多个时钟周期完成。

多周期CPU的数据通路

指令存储器和数据存储器合⼆为⼀

只设置⼀个ALU运算部件,节省了两个加法器:PC+4的加法器和相对转移地址加法器,使⽤ALU完成PC的⾃增和转移地址的计算

添加了2个专⽤寄存器(IR、MDR)和三个附加寄存器(A、B、F)

指令寄存器IR:⽤于保存从存储器读出的指令代码

存储器数据寄存器MDR:⽤于保存从存储器读出的数据

暂存器A:⽤于保存从寄存器堆读出的A⼝数据

暂存器B:⽤于保存从寄存器堆读出的B⼝数据

暂存器F:⽤于存储ALU的运算结果(数据或地址)

⼀个时钟周期内最多完成以下操作之⼀

⼀次存储器访问

⼀次寄存器访问

⼀次ALU操作

对上述每⼀个操作 其附加寄存器的设置和数据通路分析如下

存储器读操作:设置IR和MDR两个专⽤寄存器

读指令时,存储器地址由PC给出,存储器读出的内容为指令代码,置⼊指令寄存器IR

读数据时,存储器地址由ALU输出端的结果寄存器F提供,存储器读出的内容为数据,置⼊存储器数据寄存器MDR

存储器写操作

指的是写数据,存储器地址由暂存器F提供,写⼊的数据由暂存器B提供

寄存器堆读操作

同时进⾏A、B双端⼝的读/写,A端⼝的寄存器地址是由指令寄存器提供,B端⼝的寄存器地址也由指令寄存器提供,A端⼝读出的 数据置⼊暂存器A,B端⼝读出的数据置⼊暂存器B

寄存器堆写操作

写端⼝的寄存器地址由指令寄存器提供,写⼊寄存器的数据由暂存器F或者MDR寄存器提供,前者⼀般存放ALU的运算结果,后者

⼀般存放存储器读出的数据

ALU的运算操作

基本运算:实现运算类指令要求的各种算术和逻辑运算类功能,此时运算的数据由暂存器A和B提供,运算结果置⼊暂存器F

地址加法:完成有效地址的计算,即作为地址加法器,主要⽤于I型指令的相对寄存器寻址.此时,ALU的⼀个操作数由暂存器A提供

(内容为rs寄存器的数据),另⼀个操作数是指令寄存器的⽴即数字段imm经过符号拓展后的32位⽴即数,运算的结果为有效地址

EA,置⼊暂存器F

PC⾃增:完成取指令之后的PC+4操作,也作为简单的加法器使⽤.ALU的⼀个操作数即是PC,另⼀个操作数是常数4,加法结果直接置⼊PC

MIPS指令⼦集的执⾏过程

R型运算指令

取指令,PC⾃增:Mem[PC]->IR,PC+4->PC

读寄存器:Reg[rs]->A,Reg[rt]->B

ALU运算:A(op)B->f

结果寄存器:F->Reg[rd]

I型访存指令(lw rt,offset(rs))

取指令,PC⾃增:Mem[PC]->IR,PC+4->PC

读寄存器:Reg[rs]->A,Reg[rt]->B

计算有效地址EA:A+offset->F

读寄存器:Mem[F]->MDR

写结果寄存器:MDR->Reg[rt]

I型访存指令(sw rt,offset(rs))

取指令,PC⾃增:Mem[PC]->IR,PC+4->PC

读寄存器:Reg[rs]->A,Reg[rt]->B

计算有效地址EA:A+offset->F

写存储器:B->Mem[F]

I型分⽀指令(beq rs,rt,offset)

取指令,PC⾃增:Mem[PC]->IR,PC+4->PC

读寄存器和转移地址计算:Reg[rs]->A,Reg[rt]->B;PC+offset+4->F

完成分⽀:A - B,产⽣ZF;zero=1,则F->PC;zero=0,空操作

J型跳转指令(J address)

取指令,PC⾃增:Mem[PC]->IR,PC+4->PC

  1. 完成跳转:{PC[31:28],address,2’b00}->PC

多周期CPU的具体实现⽅案

细化数据通路的多路选择器

PC来源有三个

ALU的输出:即PC+4的值,⽤于取指令后的PC⾃增

F暂存器的内容:即分⽀⽬标地址,⽤于分⽀指令条件满⾜时执⾏转移操作

跳转⽬标地址拼接电路:即执⾏J指令时,将PC⾼四位、指令寄存器IR的低26位及两个0拼接成32位的⽬标地址,作为

PC的来源

主存地址的来源有两个

PC:即提供指令地址,⽤于取指令操作

F寄存器:即提供数据地址(rs+offset),⽤于取指令的取数据操作

寄存器的写⼊地址来源,即⽬的寄存器的选择有两个

IR的rd字段:写⼊rd指定的寄存器,⽤于R型指令

IR的rt字段:写⼊rt指定的寄存器,⽤于I型指令

寄存器的写⼊数据来源有两个

寄存器F的内容:意味着将运算结果写⼊⽬的寄存器,⼤多⽤于R型运算指令

MDR内容:意味着将存储器读出的数据写⼊⽬的寄存器,⼤多⽤于取数指令

ALU的A数据来源有两个

PC:⽤于执⾏PC+4或PC+offset*4时提供PC

A暂存器:⽤于执⾏ALU运算或者计算地址,暂存器A中保存了rs的内容

ALU的B数据来源有四个

常数4:⽤于执⾏PC+4时提供常数4

B暂存器:⽤于执⾏ALU运算,暂存器B中保存了rt的内容

偏移量或者⽴即数字段的拓展结果:IR的imm/offset字段经过符号/⽆符号扩展成32位后,可以送⼊ALU的B端⼝进

⾏地址加法或者ALU运算

偏移量扩展并左移两位的结果:提供IR的imm/offset字段经过符号扩展成32位后再左移两位后的结果,⽤于执⾏计算相对转移地址

添加部件的读写控制信号

硬布线控制器

微程序控制器

举报

相关推荐

0 条评论