AMD Am29000(Am29000、Am29kあるいは29kとも)は、AMDの32ビットRISCマイクロプロセッサ製品、またそれから派生した製品群。以下本稿では製品群全体、または製品としてのAm29000につきAm29kという。
この製品群は、1980年代から1990年代にかけて、Postscriptインタプリタと組み合わせて多くのメーカーのレーザープリンターに搭載されるなどRISCチップ市場で最も人気を誇った[1]。しかし、1995年、AMDはAm29kの開発チームをx86互換チップ開発に異動させ、Am29kシリーズは終焉を迎えた。Am29kの様々なアイデアや回路がAMD K5の開発に使われた。組込応用市場用にはAm80186から派生した186ファミリを投入した。 Am29kは、バークレーRISC(en:Berkeley RISC
目次
1 特長
1.1 レジスタ・ウィンドウ
1.2 ステータスの格納
1.3 遅延実行とブランチターゲットキャッシュ
1.4 ハーバード・アーキテクチャ
2 シリーズ
3 その後
4 脚注
5 参考
特長
レジスタ・ウィンドウ
元のバークレーの設計もSPARCもi960もレジスタウィンドウのサイズは固定であり性能上の問題を引き起こしていた。たとえば、SPARCではローカル変数をひとつも使用しないルーチンに対しても8本のローカルレジスタと8本の引数引渡しのレジスタが割り当てられウインドウを1面消費する。プロシージャコールが深くなるに伴い使用するウインドウ数が嵩んでウィンドウオーバーフローを引き起こし、性能悪化の原因となっている。この知見を生かし、29kではウィンドウサイズを可変にすることで効率を向上させた。レジスタ・ウィンドウ用に備えられた128本のレジスタにつき、ひとつのプロシージャでは例えば、2本のレジスタをウィンドウとして、ひとつをローカル変数として使い、もうひとつをリターンアドレス格納に使って4本のレジスタのみを消費する。レジスタ・ウインドウとは別に64本のグローバルレジスタも持っており、いずれのプロシージャからも常にアクセスできる。SPARCでは全体で8面程度[2]のレジスタ・ウィンドウを持ち、グローバル用に8本のレジスタを使っている。充分に高度なコンパイラを使うことで、このようなレジスタ構造に適したコードを生成し性能を向上させた。これに対し、Am29kはレジスタ・ウィンドウ・スタックをメモリにまで拡張している。プロシージャコールでレジスタセットを使い切ると自動的にメモリ上のスタックにレジスタを退避する。逆にプロシージャからのリターンでレジスタセットを使い切るとスタックから復帰する。このように、Am29kのレジスタはコールスタックのキャッシュのように機能した[3]。 他の典型的なCPUでは条件分岐などの判断に供するステータスレジスタを持つが、Am29kはこれを持たず、多数の汎用レジスタのいずれでも条件判断に供することができ、その内容で分岐の可否を判断できる。 Am29kも多くの初期のRISCと同じく遅延実行方式を採用した。また、ブランチターゲットキャッシュ(BTC)とよばれる512バイトの命令キャッシュ Am29kは、命令バスとデータバスを分離したハーバードアーキテクチャを採用した[5]。これは、有限のメモリ帯域を命令フェッチとデータアクセスで分離することで、資源の競合/レイテンシーの悪化を回避しスループットを向上する効果がある。同時に、自己書き換えコードが正しく機能しないなどの問題もあるが、Am29kの主要な応用である組込用途に於いては、自己書き換えコードは不可欠なテクニックではなく問題として顕在化されることは殆どなかった。詳細は「ハーバード・アーキテクチャ」を参照 Am29050の後継プロセッサは、スーパースカラ、アウト・オブ・オーダー実行、レジスタ・リネーミングなど、その後のマイクロプロセッサで設計・実装される機能が計画されていた[7]。
ステータスの格納
遅延実行とブランチターゲットキャッシュ
ハーバード・アーキテクチャ
シリーズ
マイクロプロセッサ[4]
Am29000 : MMU内蔵。FPUは別チップ (Am29027)
Am29005 : ローコスト版(MMUなし、ブランチターゲットキャッシュなし)
Am29030 : 4Kバイト命令キャッシュ内蔵
Am29035 : 8Kバイト命令キャッシュ内蔵
Am29040 : 8Kバイト命令キャッシュ内蔵、4Kバイトデータキャッシュ内蔵
Am29050 : FPU内蔵、1024バイトブランチターゲットキャッシュ内蔵、4エントリ物理アドレスキャッシュ内蔵
マイクロコントローラ[6]
Am29200 : 32ビットマイクロコントローラ
Am29202 : ローコスト版(IEEE-1284 パラレルI/F内蔵)
Am29205 : ローコスト版(16ビットバスインターフェース)
Am29240 : 4Kバイト命令キャッシュ内蔵、4Kバイトデータキャッシュ内蔵
Am29243 : DRAM パリティ機能内蔵
Am29245 : ローコスト版、4Kバイト命令キャッシュ内蔵、
その後
Size:21 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef