Skip to content

408 > ### 计算机组成原理 > #### CO-05-02 数据通路(运算器/寄存器组/内部总线)


一、定位信息

项目内容
所属章节第5章 中央处理器
知识单元编号CO-05-02
主题数据通路(运算器/寄存器组/内部总线)
考纲要求掌握数据通路的组成与工作原理
历年考查频率高频(选择题+综合题)
预计分值2-6分(选择)/ 10-15分(综合)

二、知识点讲解

1. 数据通路概述

数据通路(Data Path)是CPU中数据在各功能部件之间流动的路径。它由操作元件(如ALU)和存储元件(如寄存器)以及连接它们的互连结构(如总线、多路选择器)组成。数据通路是CPU执行指令的物理基础,每条指令的执行过程本质上就是在数据通路上流动数据的过程。

数据通路的设计直接影响CPU的性能和复杂度。数据通路越宽(位数越多),CPU一次能处理的数据量越大;数据通路的级数越多,指令执行需要的时钟周期越多。

2. 运算器(ALU及周围部件)

运算器的核心是算术逻辑单元ALU,它接收两个操作数,执行指定的算术或逻辑运算,输出结果。ALU的功能由控制信号决定,不同控制信号对应不同运算。

ALU周围通常有以下关键部件:

  • 输入端多路选择器(MUX):ALU的两个输入端各有一个MUX,用于从多个数据源中选择一个送入ALU。数据源可能包括通用寄存器组的输出、总线上的数据、立即数等。
  • 暂存寄存器(如Y寄存器):在某些数据通路设计中,ALU的一个输入先存入暂存寄存器Y,另一个输入直接来自寄存器组或总线。这样可以在一个时钟周期内完成二元运算。
  • 移位器(Shifter):ALU输出端可能连接一个移位器,对运算结果进行移位操作后再写回寄存器。
  • 状态标志寄存器(PSW/Flags):ALU运算后产生的标志位(如零标志Z、进位标志C、溢出标志V、符号标志S)存入PSW,供后续条件判断使用。

典型数据流:以执行 ADD R1, R2, R3(R1←R2+R3)为例:

  1. R2的值通过寄存器读端口A送入ALU的输入端X
  2. R3的值通过寄存器读端口B送入ALU的输入端Y(或先存入暂存器Y)
  3. ALU执行加法运算
  4. 结果经移位器(此处不移位)送入寄存器写数据端口
  5. 目标寄存器R1在写控制信号下锁存该结果

3. 寄存器组(Register File)

寄存器组是CPU内部的高速存储单元,通常包含多个通用寄存器。现代CPU的寄存器组通常支持多端口同时访问

  • 双读端口:可以同时读出两个寄存器的值,分别送往ALU的两个输入端
  • 单写端口:在同一时钟周期内可以写入一个寄存器

寄存器组的读操作是组合逻辑(无需时钟沿),写操作是时序逻辑(需要时钟沿触发)。寄存器的编址通过地址线指定,读出数据通过数据线输出,写入数据通过写数据线输入。

以一个包含8个32位寄存器的寄存器组为例:

  • 读端口:2组,每组包含3位地址线(选择R0-R7中的一个)和32位数据输出线
  • 写端口:1组,包含3位地址线、32位数据输入线和1位写使能信号

4. 内部总线

CPU内部总线是连接CPU内部各部件的数据传输通道。按数据传输方式可分为:

按总线结构分类

总线类型特点优缺点
单总线结构所有部件共享一条总线结构简单,但同一时刻只能传输一组数据,速度慢
双总线结构两条数据总线可同时传输两组数据到ALU,提高了并行性
三总线结构三条数据总线ALU两个输入和一个输出各占一条,效率最高

按数据通路中的位置分类

  • CPU内部总线:连接CPU内部各寄存器和ALU
  • 系统总线:连接CPU、主存和I/O设备

5. 数据通路的实现方式

数据通路的控制方式决定了数据如何在各部件间流动:

(1)专用数据通路方式:为每个数据传输路径设置专用连线。速度快(每个操作可以在一个时钟周期内完成),但硬件复杂度高。

(2)总线共享数据通路方式:多个部件共享总线传输数据。结构简单,但同一时刻只能进行一次数据传输,可能需要多个时钟周期完成一条指令。

典型CPU内部总线数据通路结构描述

在一个单总线结构的CPU中,各寄存器(PC、R0-Rn、MAR、MDR等)的输出端都通过三态门连接到内部总线上。ALU的两个输入分别来自总线和一个暂存寄存器Y。ALU的输出经过移位器后也连接到总线。各寄存器的输入端通过多路选择器或直接连接到总线。

数据流动过程:当需要将R2和R3相加结果存入R1时——

  1. 第一个时钟周期:R2的内容经三态门送上总线,总线数据送入暂存寄存Y,同时R3的内容经三态门送上总线,总线数据送入ALU的另一个输入端(注意:在单总线结构下,R2和R3的读取不能在同一时钟周期完成,需要两个周期)
  2. 第二个时钟周期:R3的内容送上总线,送入ALU的输入端;ALU执行加法(输入为Y中暂存的R2值和总线上的R3值)
  3. 第三个时钟周期:ALU结果送上总线,R1的写使能信号有效,R1锁存该结果

这说明在单总线结构下,一条加法指令可能需要3个时钟周期才能完成,而采用专用数据通路或三总线结构可以缩短为1个时钟周期

6. 数据通路与指令执行的对应关系

不同指令在数据通路上的操作步骤不同。以常见指令为例:

指令类型示例数据通路操作步骤
寄存器-寄存器运算ADD R1, R2, R3取指→读R2,R3→ALU运算→写R1
访存指令(LOAD)LW R1, offset(R2)取指→读R2→ALU计算地址→访存→写R1
访存指令(STORE)SW R1, offset(R2)取指→读R1,R2→ALU计算地址→写内存
分支指令BEQ R1, R2, offset取指→读R1,R2→ALU比较→更新PC

三、记忆辅助

  1. "ALU是心脏,总线是血管,寄存器是仓库":ALU负责运算(心脏供血),总线传输数据(血管输送),寄存器暂存数据(仓库存储)。数据通路就是这三者的组合。

  2. 单总线vs多总线对比口诀:"单总线轮流来,一个周期一件事;双总线两边来,两个数据一起到;三总线同时来,输入输出不打架。"

  3. 数据通路五步法:取指(IF)→译码(ID)→执行(EX)→访存(MEM)→写回(WB)。任何指令在数据通路上的操作都可以分解为这五步的组合。


四、例题精解

例题1

题目:某CPU采用单总线结构,内部有一条CPU内部总线。执行指令 ADD R1, R2, R3(功能:R1←R2+R3),至少需要几个时钟周期?

四步解题

第一步:审题——单总线结构意味着同一时刻只有一组数据能在总线上传输。

第二步:分析数据流动

  • 周期1(取指):PC→MAR,读内存,指令→IR,PC+1
  • 周期2:R2的内容送上总线→暂存器Y(因为单总线同一时刻只能传输一个数据)
  • 周期3:R3的内容送上总线→ALU的另一个输入端;ALU执行加法(Y+R3)
  • 周期4:ALU结果送上总线→写入R1

第三步:计算——取指需要1个周期,执行需要3个周期(读R2→读R3并运算→写R1),共需要4个时钟周期

第四步:答案——至少需要 4个时钟周期

注:如果题目问的是"执行阶段"需要几个周期(不含取指),则答案为3个。


例题2

题目:某CPU的数据通路如下图所示,采用双总线结构(A总线和B总线),ALU有两个输入端分别连接A总线和B总线。执行 ADD R1, R2, R3(R1←R2+R3),执行阶段至少需要几个时钟周期?

四步解题

第一步:审题——双总线结构意味着可以同时在两条总线上传输两组数据。

第二步:分析数据流动

  • 周期1:R2的值送A总线,R3的值送B总线,ALU同时接收两个操作数并执行加法运算
  • 周期2:ALU的结果送上总线,写入R1

第三步:计算——执行阶段只需要2个时钟周期(同时送两个操作数+写回结果)。

第四步:答案——执行阶段至少需要 2个时钟周期

对比:单总线需要3个周期,双总线只需2个周期,体现了总线数量对性能的影响。


例题3

题目:在CPU的通用寄存器组中,若采用双读端口、单写端口设计,则在同一时钟周期内可以完成的操作是( )。 A. 读出R1和R2的值,并将结果写入R3 B. 读出R1的值,并分别写入R2和R3 C. 同时读出R1、R2和R3的值 D. 同时将数据写入R1和R2

四步解题

第一步:审题——双读端口意味着同时读2个寄存器,单写端口意味着同一时刻只能写1个寄存器。

第二步:分析

  • A:同时读R1、R2(2个读操作,满足双读端口),写R3(1个写操作,满足单写端口)。可行。
  • B:读R1(1个读操作),写R2和R3(2个写操作,超出单写端口能力)。不可行。
  • C:同时读R1、R2、R3(3个读操作,超出双读端口能力)。不可行。
  • D:同时写R1和R2(2个写操作,超出单写端口能力)。不可行。

第三步:验证——双读单写的寄存器组在同一时钟周期内最多支持2次读+1次写,A选项恰好满足。

第四步:答案——选 A


五、考情分析

维度说明
考查题型选择题(判断数据通路操作步数)+ 综合题(画数据通路/分析执行过程)
考查重点单总线/多总线结构下的执行周期数、数据流动过程分析
命题趋势综合题中常结合具体指令要求画出数据通路或分析微操作序列
分值预估选择题2分,综合题10-15分
复习建议熟练掌握不同总线结构下各类指令的数据流动过程,能够写出微操作序列

六、易错点

  1. 单总线结构下取指也要占用总线:在计算指令执行周期时,取指阶段(PC→MAR→读内存→IR)也需要占用总线,不能忽略。很多考生只算执行阶段的周期数,遗漏了取指阶段。

  2. 双总线不能同时完成三个操作:双总线可以同时传输两组数据,但如果需要读三个寄存器(如某些三操作数指令),仍然需要多个周期。不要误以为双总线就能在一个周期内完成所有操作。

  3. ALU是组合逻辑元件,不需要时钟周期:ALU本身是纯组合逻辑,输入变化后输出立即变化。时钟周期的限制来自于总线传输和寄存器写入操作,而非ALU运算本身。

  4. 暂存寄存器Y的作用容易被忽略:在单总线结构中,ALU的两个输入不能同时从总线获取。因此需要一个暂存寄存器Y先存放第一个操作数,再从总线获取第二个操作数送入ALU。

  5. 寄存器读是组合逻辑,写是时序逻辑:寄存器读操作不需要等待时钟沿,只要地址有效数据就输出;写操作必须在时钟沿到来时且写使能有效才能完成。


七、来源标注

来源说明
主要教材唐朔飞《计算机组成原理》第3版,第5章5.2节
辅助教材袁春风《计算机组成与系统结构》第3版
考纲依据全国硕士研究生招生考试计算机学科专业基础综合考试大纲(408)
补充参考Patterson & Hennessy《计算机组成与设计》第5章

考研全科复习资料 - 基于2026考研统考大纲