计组学习记录第一天 CPU的控制器 6.20

文章详细介绍了CPU控制器的功能,包括从指令和数据两方面的作用,控制器的种类如硬布线控制器和微程序控制器的工作原理,以及微指令的执行过程和编码方式。重点讨论了取指周期中的微操作,并对比了不同控制器的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

控制器的功能和工作原理

控制器部件主要包括指令寄存器IR,控制信号产生电路、程序计数器PC
简单来说图片就是这样

众所周知指令中一定有功能码,译码之后功能码会产生一定的控制逻辑由电路输出控制信号。
(画图太烂了连数据通路都没画不过我相信大家这块看的懂)

控制器的功能(从指令和数据两方面看)

  1. 从主存中取出一条指令,并指出下一条指令在主存中的位置。我的理解是计数器PC的功能。
  2. 对指令进行译码测试,以产生相应的操作控制信号,这里操作控制信号就是控制cpu其他部件进行动作的flag。
  3. 指挥数据流动方向,包括但不限于cpu内部和cpu外部。cpu外部的数据通路就是和主存进行存取的系统总线,内部的数据通路是特定的通路,由CPU是单总线还是多总线决定。

控制器的种类

硬布线控制器

硬布线控制器,又称组合逻辑控制器,主要通过一系列时序逻辑来达到操作分时控制的功能。学过数字逻辑都知道,触发器可以暂存数据,如果再配上CPU所谓的时钟频率(节拍),阁下该如何应对就可以实现根据时间返回对应的微操作。
注意区分这块是节拍,到时候我会再将易混淆的知识点更新单独一章出来。
主要实现如下:
节拍发生器传送时间信号,IR经过译码传送操作信号,只用在CU里打包时间和操作判断就行,在正确的时间发送正确的操作,简单吧

微操作代码

首先是微操作必写的四件套

(PC)->MAR
M(MAR)->MDR
(MDR)->IR
(PC)+1->PC

这四句话描绘了一个取值微操作,PC存的当前指令地址传入与主存单方向交互的MAR(adress),然后MAR作为地址在主存里找到后返回给MDR(data),再将返回的data,也就是指令存入指令寄存器IR,最后再找下一条指令的PC。
我必须在这里提醒一下,我认为PC每次的自增就是寻找到下一条指令的地址,所以编制方式和指令长度都会对PC+几有影响,大家可能常常看到PC+4,这里又PC+1。PC+4通常大家看到是因为按字节编码的地址配上32位机器,也就是32位指令长,这样PC就需要加4个地址,也就是4个字节4*8=32才能找到下一个指令。

以上是取指周期,接下来的间指周期和执行周期我都觉得没什么必要写了,需要根据寻址方式和执行手段来写。

微程序控制器

将微操作信号代码化,以一个微程序代替指令,然后微程序分为若干微指令,微指令又分若干微命令

微指令我觉得需要注意的地方

首先,这个微程序的控制方法就是将指令又变小一丢,我愿取名为元操作,所有理解都可以类比指令
1、微命令的互斥和相容,类比线性代数的线性相关和无关
2、微指令包含的信息:前半是自己需要执行的,后半是查找下一条的(后半类似PC)。
那么指令里的IR和MDR,MAR对应着微程序的什么呢?

指令微程序
IRCMDR
MDR
MARCMAR

MDR为什么没对应东西,因为MDR类似于指令在主存里的index,微指令的后半段对应。

微指令执行过程

一条机器指令取出
经过译码找到该机器指令的微程序入口地址,送入CMAR
找到微指令逐条执行。
执行完一个微程序后,再重新读入下一条机器指令。

微指令编码方式

直接编码
前半段为操作控制,一位对应一个操作
后半段为转移控制,转移条件位数+下地址位数

字段直接编码
用相容的分组,每一组内包括所有互斥的(组内不能并行操作),一组里只能挑一个出来运行,要么一个不挑,所以假设字段长度3位,23只能表示7条互斥的微命令,还少一个什么都不执行

微指令的格式

水平型
以上两种均为水平型,没有任何纵向深度

垂直型
增加一层纵向的译码,减少指令长度

两者各有优缺,懂得都懂。

微指令代码

经典四件套多点东西咯,毕竟还要考虑每执行一条微指令都会传入下一条微指令地址:

(PC)->MAR
Ad(CMDR)->CMAR #下一条微指令地址
M(MAR)->MDR  (PC)+1->PC
Ad(CMDR)->CMAR# 传入下一条微指令地址
(MDR)->IR
OP(IR) -> 微地址形成部件->C MAR

今天主要写了控制器在CPU中的一些操作,原本还想写异常处理和流水线明天见!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值