2013-05-26 2 views
6

これは初めての質問ですが、私はもう一度考えたときに古いSNESのゲームをしていましたが、それよりも多くのことを知っている人から答えを求めていました。Xビットコンピュータは2Xビット数でどのように動作しますか?

例えば、スーパー任天堂に参加してください。それは16ビットシステムです。 16ビットでは、最大65536、つまり2^16までカウントできます。それで、私のマシンは、例えば65536を超えるスコアをどうやって対処していますか?

+0

関連する質問:http://stackoverflow.com/questions/12718536/how-does-a-32bit-computer-work-with-large-bit-numbers-ex -512ビットの整数 – reima

答えて

4

実際にはもう少し複雑ですが、簡単な説明は、16ビットプロセッサは16ビットの数値を1回の操作で処理でき、大きな数値を扱うことができます。たとえば、2つの32ビット数値を加算するには、1回の操作で最下位ワードを追加し、次に最上位ワードを追加してからキャリービットを追加します。

明らかにこれはずっと遅く(1つではなく3つの命令)、ほとんどの操作は必要に応じて実行できます。これは、大きな単語を持つプロセッサが高速になる理由です。いくつかの命令ではなく、単一の命令でより大きな操作を行うことができます。プログラマの観点から見ると、コンパイラは通常これを処理しますが、アセンブリを記述しない限り、手作業で行うことはありません。

実際には、多くのプロセッサには演算処理専用のハードウェアが搭載されているため、32ビットまたは64ビットのプロセッサを呼び出すには、実際にはメモリアドレッシングとレジスタのサイズが関係します。

+2

ほとんどの場合2つの命令で、3つではありません。ほとんどのプロセッサフ​​ァミリには、2つの数値とキャリービットを追加する特別な命令があります。キャリービットを追加するためのハードウェアコストは最小限に抑えられています。これは、数値がすでにキャリービットを伝播して小さなチャンクに分割されていることを想像すると意味します。LSBに余分なキャリービットがあることに気付くでしょう。 –

+1

@DietrichEpp MIPSにはフラグがありません。そのためには3つの手順を使用する必要があります。これは高性能コンピュータアーキテクチャでは本当に奇妙な例外です –

0

ビット数の少ないプロセッサの実際の制限は、それほど多くのメモリを扱うことができないということです.32ビットは4GBしかアドレスできません。数学的演算に関しては、16ビットと32ビットの両方のプロセッサがA FTTM(有限テープチューリングマシン)と同等であり、したがって同様の計算能力を有する。例えば、JavaのBigIntegerは、あなたが望むほど大きくすることができます

関連する問題