AMD Am29000(Am29000、Am29kあるいは29kとも)は、AMDの32ビットRISCマイクロプロセッサ製品、またそれから派生した製品群。この製品群は、1980年代から1990年代にかけて、多くのメーカーのレーザープリンターに搭載されるなどRISCチップ市場で最も人気を誇った。しかし、1995年、AMDは29kの開発チームをx86互換チップ開発に異動、29kの様々なアイデアや回路がAMD K5の開発に使われた。組込応用市場用にはAm80186から派生した186ファミリを投入した。29kは、バークレーRISC()の影響下にあるサン・マイクロシステムズのSPARCやIntel i960と同様、レジスタ・ウィンドウを採用している。これはプロシージャコールを劇的に高速化する技法である。基本的なアイデアは大きなレジスタセットをコールスタックのように使うものである。元のバークレーの設計もSPARCもi960もレジスタウィンドウのサイズは固定であり性能上の問題を引き起こしていた。たとえば、SPARCではローカル変数をひとつも使用しないルーチンに対しても8本のレジスタが固定的に割り当てられ、ウィンドウオーバーフローの機会を増やし性能悪化の原因となっている。この知見を生かし、Am29000ではウィンドウサイズを可変にすることで効率を向上させた。例えば、2本のレジスタをウィンドウとして、ひとつをローカル変数として使い、もうひとつをリターンアドレス格納に使う。それ以外にも、レジスタ・ウィンドウ用の128本とは別の64本のグローバルレジスタを持っていて常にアクセスできる。SPARCでは全体で8面程度のレジスタ・ウィンドウを持ち、グローバル用に8本のレジスタを使っている。このようなレジスタ構造を、充分に高度なコンパイラを使うことで性能を向上させた。これに対し、Am29000はレジスタ・ウィンドウ・スタックをメモリにまで拡張している。プロシージャコールでレジスタセットを使い切っていると自動的にメモリ上のスタックにレジスタを退避する。逆にプロシージャからのリターンでレジスタセットを使い切るとスタックから復帰する。このように、29kのレジスタはコールスタックのキャッシュのように機能した。29kは条件分岐などに使うステータスレジスタを持たず、多量の汎用レジスタのどれにでも条件を保存でき条件分岐で参照できた。29kも多くの初期のRISCと同じく遅延実行方式を採用した。また、ブランチターゲットキャッシュ(BTC)とよばれる512バイトの命令キャッシュを持ち、これは過去に分岐先となったアドレスのインスタンスをキャッシュすることにより、分岐の際の性能を向上させた。ファミリの中でも、Am29005ではBTCは実装されず、Am29050では1024バイトに増量されていた。29kは、命令バスとデータバスを分離したハーバードアーキテクチャを採用した。これは、有限のメモリ帯域を命令フェッチとデータアクセスで分離することで、資源の競合/レイテンシーの悪化を回避しスループットを向上する効果がある。同時に、自己書き換えコードが正しく機能しないなどの問題もあるが、29kの主要な応用である組込用途に於いては、自己書き換えコードは不可欠なテクニックではなく問題として顕在化されることは殆どなかった。Am29050の後継プロセッサは、スーパースカラ、アウト・オブ・オーダー実行、レジスタ・リネーミングなど、その後のマイクロプロセッサで設計・実装される機能が計画されていた。これは最終的に製品にはならなかったが、x86互換プロセッサであるK5に受け継がれ、FPUはそのまま使われ、x86の命令をマイクロコードにより29000ファミリに似た命令に内部的に変換され実行された。
出典:wikipedia
LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。