「AMD Am29000」の版間の差分

削除された内容 追加された内容
編集の要約なし
AuBot~jawiki (会話 | 投稿記録)
6行目:
==特長==
===レジスタ・ウィンドウ===
Am29000は[[サン・マイクロシステムズ]]の[[SPARC]]や[[Intel i960]]と同様にバークレーの[[RISC]]に基づいて生み出された。バークレー系統の設計では共通して[[レジスタ・ウィンドウ]]というトリックが使われている。これは[[関数 (プログラミング)|プロシージャコール]]を劇的に高速化する技法である。基本的なアイデアは大きな[[レジスタ (CPUコンピュータ)|レジスタ]]セットをスタックのように使うものである。
 
元のバークレーの設計もSPARCもi960もレジスタウィンドウのサイズは固定である。SPARCでは、ローカル変数をひとつしか使用しないルーチンに対しても8本のレジスタが固定的に割り当てられていて、リソースを無駄遣いしていた。Am29000はそれらとは異なり、ウィンドウサイズを可変にして効率を向上させている。例えば、2本のレジスタをウィンドウとして、ひとつをローカル変数として使い、もうひとつをリターンアドレス格納に使う。それ以外にも、レジスタ・ウィンドウ用の128本とは別の64本のグローバルレジスタを持っていて、どこからでもアクセスできる。SPARCでは全体で128本のレジスタを持ち、グローバル用には通常のウィンドウと同じく8本のレジスタを使っている。このようなレジスタ構成でそれなりに賢いコンパイラを使うことで性能を向上させた。Am29000はレジスタ・ウィンドウ・スタックをメモリにまで拡張している。プロシージャコールをするときにレジスタを使い切っていると自動的にメモリ上のスタックにレジスタを退避し、戻ってくるときにメモリから戻すようになっている。Am29000のレジスタの使い方は他のバークレー系統の設計と比較して、最も進んでいた。