回答受付が終了しました

凡用レジスタは、なぜ演算を行うためにメモリから読みだしたデータを保持するのですか?

回答(8件)

0

CPUを設計してる人が詳しいと思いますが、 ●ALUという演算装置に入っていく前段で、足し算や引き算をするのに2つの値が必要だったりしますが、その2つの値がそろってからALUに流すために、凡用レジスタはあるのだと思います。CPUはクロックというタンバリンの「パンッパンッ」のようなリズムに合わせて動くということも関係しているかも ●凡用レジスタ無しに、メモリーとALUを直接つなぐと、メモリーは2つの値のために同時にアクセスすることを許さなきゃいけないとか。(デュアルポートメモリーは同時アクセス可能ですが、昔のビデオメモリー用で今はあまり使われていません) ●メモリーからの電気は大変微弱でセンスアンプというものでないと捕まえられず、ALUと直接つなぐには不向きだとか…(CPU設計してる人が何と言うかはわかりませんが…) ●何より計算するときは、使い勝手の良い小箱がすぐそこに いくつかあったほうが計算も効率良く はかどるでしょう。 また、CPUは計算だけでなく他にも仕事があるから、ちょっと置いとく みたいなことも必要になるんだと思います。 ●あと他の回答者さんもおっしゃるように、メモリー(充電素子のコンデンサを使う低速なDRAM)に比べて、レジスタ(FF回路という、常に通電されてるような電気回路)のほうが電気的に はるかに高速なんです。凡用レジスタは高性能なんです。 というわけで推測もあり すみませんが、忙しいCPUの中では便利で高速な一時保管の凡用レジスタが必要ということです。大まかにでもわかってもらえると良いかも、です。 (あと凡用は汎用と書いたほうが良いかな?)

0

汎用レジスタは「そのようなこと」をしません。プログラマがそのようなプログラムを書いた、というだけです。 ではなぜ「そのようなプログラムを書く」のか? それは「そのCPUの仕様上そうせざるを得ないから」でしょうなぁ。

0

C言語とCPUを対比してみると考えやすいです。 C言語 変数=メモリ 外部=ファイル CPU 変数=レジスタ 外部=メモリ 質問をC言語に置き換えると・・・ C言語の変数は、なぜ演算を行うためにファイルから読みだしたデータを保持するのですか? これなら解がわかるでしょう。CPUにとってはメモリは外部デバイスで、読み込みと書き出ししかできません。

0

レジスタは脳内の記憶場所と考えてください。 メモリはノート。 ノートの情報を脳内に読み込んで処理します。 脳内に取り込まずにノートの情報を処理することなど不可能。

0

メモリーの内容を直接演算できないからです。 CPUが直接操作できるのはCPUに内蔵されているレジスタの値だけです。