累加器

计数器

中央处理器中,累加器 (accumulator) 是一种寄存器,用来储存计算产生的中间结果。如果没有像累加器这样的寄存器,那么在每次计算 (加法,乘法,移位等等) 后就必须要把结果写回到 记忆体,也许马上就得读回来。然而存取主存的速度是比从算术逻辑单元到有直接路径的累加器存取更慢。

标准的例子就是把一列的数字加起来。一开始累加器设定为零,每个数字依序地被加到累加器中,当所有的数字都被加入后,结果才写回到主存中。

现今的 CPU 通常有很多寄存器,所有或多数都可以被用来当作累加器。因为这个原因,"累加器" 这名词就显得有些老旧。这个名词已经几乎不在 微处理器 寄存器中使用,例如,运算寄存器的名称中的符号以 "A" 开头的表示是从 "accumulator" 这个历史因素得来的 (有时候认为并非 "arithmetic")。也可能混淆的是寄存器的名字前置 "A" 也表示 "address",比如说像是 Motorola 68000 家族。

早期的 4 位、8 位微处理器,典型具有单个累加器。8051 微控制器有两个累加器:主累加器与从累加器,其中的从累加器只用于乘法(MUL AB)与除法(DIV AB)。乘法的 16 位结果放入两个 8 位累加器中。除法时,商放入主累加器,余数放入从累加器。8008 的直接后继产品——80808086,开创了 x86 指令集体系结构,仍然使用两个累加器:主累加器 EAX 与从累加器 EDX 用于乘法与除法的大数运算。例如,MUL ECX 将把两个 32 位寄存器 ECX 与 EAX 相乘,64 位结果放入 EAX 与 EDX。但是 MUL 与 DIV 之外的其他算术——逻辑指令(ADD、SUB、CMP、AND、OR、XOR、TEST)可以使用 8 个寄存器:EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI 作为目的操作数(即存储结果的位置)。

参考

本条目部分或全部内容出自以GFDL授权发布的《自由线上电脑词典》(FOLDOC)。