方才你笑我:我想问算术运算是在ALU单元还是累加器中完成的。我看过一本书,上面说累加器是做算术的寄存器。
Accumulator表示此
如果没有像累加器这样的寄存器,就必须将每次计算(加法、乘法、移位等)的结果写入主存储器,也许只是为了在下一次操作中使用而被再次读取。
这是否意味着没有蓄能器,操作本身仍然可以完成?
我是从高级语言学来的我需要理解它。
方才你笑我:我想问算术运算是在ALU单元还是累加器中完成的。我看过一本书,上面说累加器是做算术的寄存器。
Accumulator表示此
如果没有像累加器这样的寄存器,就必须将每次计算(加法、乘法、移位等)的结果写入主存储器,也许只是为了在下一次操作中使用而被再次读取。
这是否意味着没有蓄能器,操作本身仍然可以完成?
我是从高级语言学来的我需要理解它。
2条答案
按热度按时间cs7cruho1#
是的,CPU不需要累加器。例如,基于堆栈的处理器通常只有一个或两个堆栈指针,但没有累加器。正如文章所说,这些处理器在运算之前从内存加载要运算的值。
vybvopom2#
否,CPU不需要累加器。
例如,EDVAC和许多其他早期的真空管计算机一样,其指令看起来像
告诉计算机从存储器(在两个绝对存储器地址处)加载2个数字,并且将和存储回存储器(在第三个绝对存储器地址处)。
(In换句话说,它们是3操作数机器,所有3个操作数都在存储器中)。
再举一个例子,Connection Machine1的每个处理单元,像一些早期的集成电路计算机一样,同样没有累加器,只有几个标志。
它具有可用于将来自内存的2个数字相加(在两个绝对内存地址,一个源地址和一个目的地址),并将总和存储回内存(在相同的目的地址)的纳米指令。
(In换句话说,它是2操作数机器,两个操作数都在存储器中)。
这是否意味着没有蓄能器,操作本身仍然可以完成?
是的,像AND、OR、NOT、ADD、MULU等运算都是在ALU中计算的。但是,只有ALU是不够的。
为了使ALU正常工作,需要有其他东西来保持ALU的两个输入值的稳定,直到ALU计算出它的输出值,然后通常需要将输出值存储在某个地方。这些其他东西是进行算术运算的过程的一部分。
与几乎所有其它寄存器一样,累加器仅临时保存数据值(不改变数据值),直到加载其它数据值。
累加器是用于进行算术运算的寄存器。
我怀疑这句话的作者是在试图区分各种程序员可见的寄存器。
某些CPU(如Motorola 68000 series中的处理器)具有多组寄存器:
其它CPU,如ARM处理器、MIPS处理器、DLX processors和RISC-V处理器,其大多数寄存器都在一个组中:“通用寄存器”的“统一寄存器堆”。
程序员可以使用这些寄存器中的任何一个作为数据寄存器(通常ALU的两个输入来自这些寄存器中的任何两个,ALU的输出也存储在这些寄存器中的任何一个中)。所以有些人说所有这些寄存器都是累加器。程序员,如果他们选择,可以使用这些寄存器中的任何一个作为地址寄存器或索引寄存器。
西部设计中心W 65 C 02 S,像每年销售的大多数CPU一样,只有一个特殊的寄存器(“A”)紧密连接到ALU --在大多数算术或逻辑指令中,A寄存器总是ALU的输入之一,并且指令还使用A寄存器来保持来自ALU的结果值。
(In换句话说,它是1操作数机器,也称为累加器机器)。
W 65 C 02 S,像几乎所有的CPU一样,也有一些其他的寄存器,它们不是累加器--索引寄存器,PC等等。