累加器(ACC)寄存器输入工作机制及总线流向疑问
《But How Do It Know?》中ACC寄存器总线疑问解答
你的猜测完全正确
ACC引出的向下总线是单向输出总线,不会和R0输入ACC的总线产生冲突。
具体实现方式
单向总线的硬件保障
那条从ACC连接到通用总线的下行线路,是ACC的专属输出通道,硬件上通过三态缓冲器实现单向传输:只有当ACC的e(使能)位被激活时,这条总线才会输出ACC内的数据;未激活时,总线处于高阻态,完全不影响其他设备的输入信号。两路输入的冲突规避
ACC的两路输入(ALU输出、通用寄存器直接输入)并非同时接入寄存器核心,而是通过**多路选择器(MUX)**做二选一切换:- 当执行ALU运算并保存结果时,电路选通ALU输出作为ACC的输入,此时通用寄存器到ACC的路径被切断;
- 当需要直接载入通用寄存器的值到ACC时,才会切换到通用寄存器的输入路径,同时ALU输出路径处于无效状态。
书中的
s(save)位实际是控制多路选择器的选通逻辑,同一时间只会打开一路输入,所以不存在两路输入冲突的问题。
与普通寄存器的总线差异说明
普通通用寄存器的1入1出总线,通过s(写入控制)和e(读出控制)位分别管控读写,避免同一时间读写冲突;而ACC的“3条总线”本质是:
- 2条可选输入路径(经MUX合并为1路实际写入通道)
- 1条固定输出路径
只是为了适配ALU运算结果写入、通用寄存器值直接载入这两种场景,扩展了输入的选择分支,核心的寄存器读写规则和普通寄存器完全一致。
内容的提问来源于stack exchange,提问作者famesyasd
相关产品推荐
相关产品推荐

