「AMD Am29000」の版間の差分

削除された内容 追加された内容
Alexbot (会話 | 投稿記録)
m ロボットによる 追加: pt:AMD Am29000
m +→‎脚注: 、K5 OoOだがAm29050は違う
2行目:
'''AMD Am29000'''('''Am29000'''、'''Am29k'''とも)は、[[アドバンスト・マイクロ・デバイセズ|AMD]]の[[RISC]]ベース32ビット[[マイクロプロセッサ]]のシリーズである。
 
このシリーズは一時期、様々なメーカーの[[レーザープリンタ]]に搭載されるなどRISCチップ市場で最も人気を誇ったことがある。1995年、AMDはAm29000シリーズの開発チームを他に回し、結果として開発をやめた。AMDが現在組み込み市場用に揃えているのは80186から派生した186ファミリであるを投入した。AMDのリソースは高性能な[[80x86|x86]]互換チップに集中され、29kの様々なアイデアや回路が[[AMD K5]]の開発に使われた。
 
==特長==
===レジスタ・ウィンドウ===
Am29000は[[サン・マイクロシステムズ]]の[[SPARC]]や[[Intel i960]]と同様にバークレーの[[RISC]]に基づいて生み出された。バークレー系統の設計では共通して[[レジスタ・ウィンドウ]]というトリックが使われている。これは[[関数 (プログラミング)|プロシージャコール]]を劇的に高速化する技法である。基本的なアイデアは大きな[[レジスタ (コンピュータ)|レジスタ]]セットを[[コールスタック]]のように使うものである。
 
元のバークレーの設計もSPARCもi960もレジスタウィンドウのサイズは固定である。SPARCでは、ローカル変数をひとつしか使用しないルーチンに対しても8本のレジスタが固定的に割り当てられていて、リソースを無駄遣いしておりウィンドウオーバーフローの機会を増やし性能悪化の原因となってい。Am29000はそれらとは異なり、ウィンドウサイズを可変にしてすることで効率を向上させている。例えば、2本のレジスタをウィンドウとして、ひとつをローカル変数として使い、もうひとつをリターンアドレス格納に使う。それ以外にも、レジスタ・ウィンドウ用の128本とは別の64本のグローバルレジスタを持っていて、どこからでもアクセスできる。SPARCでは全体で128本程度のレジスタを持ち、グローバル用には通常のウィンドウと同じく8本のレジスタを使っている。このようなレジスタ構成でそれなりに賢いコンパイラを使うことで性能を向上させた。Am29000はレジスタ・ウィンドウ・スタックをメモリにまで拡張している。プロシージャコールをするときにレジスタを使い切っていると自動的にメモリ上のスタックにレジスタを退避し、戻ってくるときにメモリから戻すようになっている。Am29000のレジスタの使い方は他のバークレー系統の設計と比較して、最も進んでいた。
 
===ステータスの格納===
もうひとつの特長はそれほど奇抜なものではなく、29000は条件分岐などに使うための固定の[[ステータスレジスタ]]を持たない。どのレジスタでもこの用途に使うことができ、簡単に条件をセーブできる。
 
===遅延実行とブランチターゲットキャッシュ===
===命令プリフェッチ・バッファ===
Am29000も初期の多くのRISCと同じく遅延実行方式を採用した。また、ブランチターゲットキャッシュとよばれる512バイトの[[命令キャッシュ]]をもち、これは過去に分岐先となったアドレスの命令オブジェクトをキャッシュしておくことにより分岐の際の性能を向上させるこを意図しており、Am29005では実装されず、Am29050では1024バイトに増量された。<ref name="am29050">[http://www.amd.com/epd/29k/050_ds/050_ds.pdf Am29050 Microprocessor Datasheet 1994](英語)</ref>
[[命令プリフェッチ]][[バッファ]]は16個の命令を格納し、これにより分岐の際の性能を向上させる。29000は分岐予測機構を持たないので、分岐する際には遅延が避けられない([[スーパースケーラ]]でもないので、分岐の両方を同時に実行することもできない)。そのバッファは分岐する場合のアドレスから4命令を持ってきて格納する機能があり、これによって分岐による遅延をなるべく起こさないようになっている。(訳注:一部のマイクロプロセッサでは branch target cacheと呼ばれていた機能)
 
===ハーバード・アーキテクチャ===
Am29000は、命令バスとデータバスを分離したハーバードアーキテクチャを採用している。{{Main|ハーバード・アーキテクチャ}}
 
==シリーズ==
*マイクロプロセッサ<ref name="am29050"/>
**Am29000 ([[1988年]]): [[MMU]]内蔵。[[FPU]]は別チップ (29027)
**Am29005 : ローコスト版(MMUなし、ブランチターゲットキャッシュなし)
**Am29005 : 機能限定版(?)
**Am29030 : 4Kバイト命令キャッシュ内蔵
**Am29035 : 8Kバイト命令キャッシュ内蔵
**Am29040 : [[FPU]]8Kバイト命令キャッシュ内蔵、4Kバイトデータキャッシュ内蔵
**Am29050 : [[FPU]]内蔵、1024バイトブランチターゲットキャッシュ内蔵、4エントリ物理アドレスキャッシュ内蔵
**Am29050 : [[スーパースケーラ]]構成(4命令同時実行)、[[アウト・オブ・オーダー実行]]、[[投機的実行]]。[[FPU]]高速化。
*[[マイクロコントローラ]]<ref name="am29050">[http://www.amd.com/epd/techdocs/ AMD - Embedded Products Available Literature](英語)</ref>
 
*[[*Am29200 : 32ビットマイクロコントローラ]]
**Am29202 : ローコスト版(IEEE-1284 パラレルI/F内蔵)
**29200
**Am29205 : ローコスト版(16ビットバスインターフェース)
**29205
**Am29240 : 4Kバイト命令キャッシュ内蔵、4Kバイトデータキャッシュ内蔵
**Am29243 : DRAM パリティ機能内蔵
**Am29245 : ローコスト版、4Kバイト命令キャッシュ内蔵、
 
==その後==
29050Am29050の一部の高速化機能はx86互換プロセッサであるK5に受け継がれた。FPUはそのまま使われ、x86の命令を[[マイクロプログラム方式|マイクロコード]]でそのFPUの命令に変換して使用された。
 
==脚注==
<references />
 
{{AMD_processors}}