累加器

计数器

中央處理器中,累加器 (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)。