gpt4 book ai didi

motorola - 为什么Motorola 68k的32位通用寄存器分为数据寄存器和地址寄存器?

转载 作者:行者123 更新时间:2023-12-03 08:58:32 27 4
gpt4 key购买 nike

68k 寄存器分为两组,每组八个。八个数据寄存器(D0 至 D7)和八个地址寄存器(A0 至 A7)。分开是为了什么,团结起来不是更好吗?

最佳答案

简单的回答是,这种分离来自于架构限制和当时做出的设计决策。

长答案:

M68K 实现了相当多的寻址模式(特别是与基于 RISC 的处理器相比),其许多指令支持大多数(如果不是全部)这些模式。这在每条指令中提供了多种寻址模式组合。

这也增加了操作码执行的复杂性。举个例子:

move.l $10(pc), -$20(a0,d0.l)

该指令只是将一个长字从一个位置复制到另一个位置,很简单。但为了实际执行操作,处理器需要找出源操作数和目标操作数所使用的实际(原始)内存地址。这个解码(解析)操作数寻址模式的过程称为有效地址计算

对于这个例子:

  1. 为了计算源有效地址 - $10(pc),处理器加载PC(程序)计数器寄存器的值并添加$10

  2. 为了计算目的地有效地址 - -$20(a0,d0.l),处理器加载A0寄存器的值,加上D0寄存器的值,然后减去20 美元

单个操作码的计算量相当大,不是吗?

但是 M68K 执行这些计算的速度相当快。为了快速计算有效地址,它实现了专用的地址单元(AU)。

一般来说,数据寄存器的操作由ALU(算术逻辑单元)处理,涉及地址计算的操作由AU(地址单元)处理.

AU 针对 32 位地址操作进行了很好的优化:它在一个总线周期(4 个 CPU 时钟周期)内执行 32 位减法/加法,而 ALU 则不然(32 位操作需要 2 个总线周期) .

但是,AU仅限于加载和基本加法/减法操作(由寻址模式决定),并且它不连接到CCR(有条件的)代码寄存器),这就是地址寄存器上的操作永远不会更新标志的原因。

话虽如此,AU应该是为了优化复杂寻址模式的计算而存在的,但它只是无法完全取代ALU(毕竟,有M68K 中只有大约 68K 晶体管),因此有两个寄存器组(数据和地址寄存器),每个寄存器组都有自己的专用单元。

关于motorola - 为什么Motorola 68k的32位通用寄存器分为数据寄存器和地址寄存器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53015463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com