どちらが速くて便利ですか? アキュムレータ、レジスタ、またはスタック?
5 に答える
レジスターは最速です。アキュムレータは、中間の算術および論理結果が格納されるレジスタでもあります (ウィキペディアからの情報)。
スタックはメモリの領域であるため遅くなり、メモリは常にレジスタよりも遅くなります。
ただし、CPU ストレージは非常にコストがかかるため、常にレジスタよりも多くのメモリを使用できます。
結論: それらはすべて有用であり、速度は使用可能なストレージに反比例します。
CPU アーキテクチャや達成したいその他の情報に関するコンテキストがないこれらの質問には、有用な方法で回答することはできません。
通常、アキュムレータはレジスタの 1 つにすぎません。最新の CPU はもはや区別されないため、古い CPU ではアキュムの方が高速である可能性があります。実際には、特定の操作を許可する唯一のレジスタです。レジスタは常に外部メモリよりも高速ですが、レジスタの数は限られています (また、コンパイラ/アセンブリによって明示的に名前を付ける必要があります)。
スタックは、データを格納するために使用される RAM の領域です。だから、それは確かに遅いです:)
質問は完全に正しくありません。「高速」は、レジスタなどではなく、操作に関連しています。別のポイント-最初のメッセージにはCPUのアーキテクチャについては何もありません:-)
CPU アーキテクチャによっては、アキュムレータはレジスタですが、特別な実装を持つことができます。このようにして、アキュムレータを使用する操作は通常、レジスタ操作よりも高速です。
スタックについて。一部のプロセッサは、Register-Register 操作 (つまり、入出力プロセッサ) をサポートしていません。その場合、実効アドレスを計算する必要がないため、スタック上の一部の操作が高速になる可能性があります。
一般に、レジスタは実際にはマイクロプロセッサの一部であるため、高速です。また、アキュムレータはレジスタの 1 つにすぎません (通常、さまざまな操作の結果を格納するもの)。
スタックは、リターンアドレスとローカル変数を追跡する目的で割り当てられた、他のメモリと同様の単なるメモリです。
ただし、使用できるレジスタの数は非常に限られているため、すべてにレジスタを使用することはできません。
これらの質問をした理由を説明すれば、もう少し意味が通じるかもしれません。
Register は、データをメモリに取り込まないため、常に高速ですが、状況がより明確になります。
レジスタは、x64 や Arm アーキテクチャのようなものが多数ある場合に役立ちます。