質問

登録変数は、高速アクセスを得るためのよく知られている方法です(register int i)。しかし、なぜ階層の上部(レジスタ、キャッシュ、メインメモリ、セカンダリメモリ)に登録があるのですか?アクセスを非常に速くアクセスするすべてのことは何ですか?

役に立ちましたか?

解決

レジスタはCPUの中核部分であり、CPUの命令セットの多くは、メモリの場所ではなくレジスタに反対するように調整されます。通常、レジスタの値にアクセスするには、メモリにアクセスするとすぐに、クロックサイクルが非常に少なくなります(おそらく1つだけ)、物事がより複雑になり、キャッシュコントローラー /メモリバスが関与し、操作にはかなり時間がかかります。

他のヒント

レジスタは、文字通りALUに直接配線された回路であり、算術の回路が含まれています。すべてのクロックサイクル、CPUコアのレジスタユニットは、半ダースほどの変数を他の回路に送ることができます。実際、データパス内のユニット(ALUなど)は、互いに直接データを送ることができます。 バイパスネットワーク, 、ある意味では、登録上の階層レベルを形成しますが、レジスタ数を使用してお互いに対処します。 (完全にパイプ化されたCPUの制御セクションは、データパスユニットを動的にマップして番号を登録します。)

register Cのキーワードは役に立たず、使用しないでください。コンパイラは、レジスタにどのような変数があるかを決定します。

レジスタは、本質的に内部CPUメモリです。したがって、レジスタへのアクセスは、他の種類のメモリアクセスよりも簡単かつ速いです。

小さな記憶は一般的に大きな記憶よりも速いです。また、対処するために少ないビットが必要になる場合もあります。 32ビット命令ワードは、3つの4ビットレジスタアドレスを保持し、オペコードなどのスペースがたくさんあることがあります。 1つの32ビットのメモリアドレスは、他の何も余地がないことを完全に埋め尽くします。さらに、メモリに対処するために必要な時間は、メモリサイズのログに比例するよりも高い速度で増加します。 4ギグメモリスペースからワードにアクセスするには、16ワードのレジスタファイルからアクセスするよりも数百倍長くても数十倍かかります。

小さな高速レジスタファイルからほとんどの情報要求を処理できるマシンは、すべてに遅いメモリを使用するものよりも高速になります。

すべてのマイクロコントローラーには、法案が述べたようにCPUがあります。これには、ALUの基本的なコンポーネント、いくつかのRAM、およびその運用を支援する他の形式のメモリがあります。 RAMは、あなたがメインメモリと呼んでいるものです。

ALUは、すべての筋膜論理操作を処理し、オペランドを操作してこれらの計算を実行するために、オペランドをレジスタにロードし、これらの操作を実行し、プログラムがこれらのレジスタに直接または間接的に保存された結果にアクセスします。

レジスタはCPUの中心に最も近く(別名あなたのプロセッサの脳)、レジスタで直接実行されるチェーンでより高く、クロックサイクルの量が少ない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top