Articles

アキュムレータとは何ですか?


ベストアンサー

アキュムレータは、平均、標準偏差、分を効率的に計算するために必要な合計、カウントを段階的に追跡するオブジェクトです。 、最大など。毎回再計算する必要はありません。

回答

質問を少し絞り込みます。アキュムレータ命令セットアーキテクチャと汎用レジスタ命令セットアーキテクチャの違いは何ですか?

これらは、命令セットの設計空間における2つのポイントを表しています。 CPU命令が何をする必要があるかを考えてください。今のところ、計算の手順を検討してください。少なくとも、次の情報を提供する必要があります。

  • 実行する計算(加算、減算、シフト、比較)
  • 計算を実行する値(計算への入力)
  • 結果(計算の出力)を置く場所

たとえば、高レベルのプログラムステートメントを記述した場合X = Y + Z、YとZに保持されている値をフェッチして追加し、結果をXに書き込むようにプロセッサに指示する必要があります。

アキュムレータアーキテクチャでは、ほとんどの場合計算命令は、アキュムレータと呼ばれる特殊レジスタで動作します。したがって、ほとんどの操作には、命令に対する暗黙的引数としてアキュムレータがあります。アキュムレータは、命令への入力を提供するか、命令から出力を受け取るか、またはその両方を行います。アキュムレータベースのマシンでX = Y + Zを実行するには、命令シーケンスはおおよそ次のようになります。

  • Yをアキュムレータにロードします
  • Zをアキュムレータに追加します
  • アキュムレータをXに格納します

「I = J + K + L + M +」などのより複雑な式がある場合N + O “の場合、シーケンスは次のようになります。

  • Jをアキュムレータにロードします
  • Kをアキュムレータに追加します
  • Lをアキュムレータに追加しますアキュムレータ
  • アキュムレータにMを追加
  • アキュムレータにNを追加
  • アキュムレータにOを追加
  • アキュムレータをIに保存

ほとんどの操作にはアキュムレータが含まれるため、指定するためにopcodeビットを割り当てる必要はありません。前述したように、アキュムレータはです。暗黙的。また、マシン自体では、アキュムレータを算術ユニット自体に直接組み込むことができ、ハードウェアを簡素化できます。

汎用レジスタアーキテクチャでは、命令を計算します。 ■複数の引数を取り、値を読み取るレジスタを指定します。これにより、柔軟性が高まります。ただし、柔軟性には代償が伴います。操作するレジスタを指定するには、より多くのオペコードビットが必要であり、これらすべてのレジスタのパスを算術演算ユニットに提供する必要があります。

上記の式の例、コードはそれほど変わらないようになります。

  • YをレジスタR0にロードします
  • ZをレジスタR1にロードします
  • R0をR1に追加し、 R2の結果
  • R2をXに格納する

汎用レジスタマシンは、多くの操作にわたってレジスタに値を保持できる場合に利点を示し始めます。たとえば、次の少し複雑なプログラムを実行したいとします。

X = A + B

Y = A - B

アキュムレータマシンでは、両方の操作でAとBをリロードする必要があります。汎用マシンでは、AとBを1回だけロードします。

汎用レジスタマシンには、複数の種類もあります(このリストは網羅的ではありません。また、一部のアーキテクチャではこれらの概念がブレンドされています。 )

  • レジスタ-メモリ:1つのオペランドはレジスタから取得され、1つのオペランドはメモリから取得されます。
  • Register-Register、2-address:両方のオペランドはレジスタから取得されますが、結果は入力の1つを上書きする必要があります。
  • Register-Register、3-address:両方のオペランドはから取得されますレジスターであり、結果は独自のレジスターに送られます。

たとえば、x86プロセッサーは、2アドレスのレジスターレジスター命令も提供するレジスター・メモリー・マシンです。ほとんどのRISCマシンは、3アドレスのレジスタレジスタマシンであり、個別のロード/ストア命令があります。どちらも汎用レジスタマシンです。

アキュムレータマシンである 6502 と比較してください。ほとんどの算術演算(加算、減算、回転、シフト)はAレジスタで動作します。他の2つのレジスタXとYは、インクリメント、デクリメント、および比較のみをサポートします。これらは「主にメモリとループカウンタのインデックス作成に使用されます。

言及しなかった3番目のアーキテクチャタイプは、スタックアーキテクチャです。スタックアーキテクチャは、すべての計算が単一のポイントに集中するという点でアキュムレータアーキテクチャに似ています。違いは、スタックアーキテクチャは常にスタックから引数を読み取り、その結果を常にスタックに置くことです。計算命令の入力と出力はどちらも暗黙的です。 他の命令では、スタックへの値のプッシュとスタックからの値のポップを管理する必要があります。

実際のチップには多くのスタックアーキテクチャはありませんが、インタプリタ(Javaバイトコードなど)では人気があります。 、またはFORTH)、およびHPのRPNベースの計算機などの特定の計算機。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です