Zynq-7000 All Programmable SoC アーキテクチャ ポーティング

Zynq-7000 All
Programmable SoC
アーキテ ク チ ャ ポーテ ィ ング
ク イ ッ ク ス ター ト ガイ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資
料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情
報につきましては、必ず最新英語版をご参照ください。
改訂履歴
次の表に、 こ の文書の改訂履歴を示 し ます。
日付
バージ ョ ン
2015 年 10 月 22 日
1.1.1
2015 年 8 月 31 日
1.1
「TrustZone」 セ ク シ ョ ン を更新。
2015 年 6 月 25 日
1.0
初版
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
内容
タ イ ト ルを更新。
japan.xilinx.com
2
目次
改訂履歴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
第 1 章 : は じ めに
第 2 章 : 移植上の留意点
ARM Cortex-A9 の機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
第 3 章 : アーキテ ク チ ャ間の機能比較
アーキ テ ク チ ャ の比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
ア ド レ ス マ ッ プ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
詳細なポーテ ィ ン グ ガ イ ド : MIPS、 PowerPC、 Intel、 Renesas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
付録 A : その他の リ ソ ースおよび法的通知
ザ イ リ ン ク ス リ ソ ース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ソ リ ュ ーシ ョ ン セ ン タ ー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
24
24
24
25
3
第 1章
は じ めに
こ の文書は、 ザ イ リ ン ク ス Zynq®-7000 All Programmable (AP) SoC の カ ス タ マーがエ ンベデ ッ ド ソ フ ト ウ ェ ア を 非
ARM ベース プ ロ セ ッ サか ら ARM アーキ テ ク チ ャ に移植する の をサポー ト し ます。こ のガ イ ド は、PowerPC®、Intel®、
Renesas-SH、 MIPS の各プ ロ セ ッ サか ら ARM プ ロ セ ッ サへの移植す る 際の参考資料 と な り ます (Zynq-7000 AP SoC は
ARM® Cortex®-A9 デ ュ アル コ ア プ ロ セ ッ サを内蔵)。
ARM Cortex-A9 は、 低消費電力 (つま り 発熱量に制限があ り ) かつ コ ス ト 重視のデバ イ ス向けの汎用プ ロ セ ッ サです。
こ のプ ロ セ ッ サは リ リ ース か ら 数年を経なが ら 、 今なおス マー ト フ ォ ン、 デジ タ ル テ レ ビ、 そ し て IoT を実現す る 一
般向けお よ び企業向け アプ リ ケーシ ョ ン に広 く 採用 さ れてい ます。 Cortex-A9 プ ロ セ ッ サは ARM がサポー ト す る さ
ま ざ ま な技術を提供 し ます。 こ の Cortex-A9 プ ロ セ ッ サは、 サ イ ズ と 構成におけ る 拡張性の高 さ か ら 、 次の よ う な幅
広い製品に用い ら れてい ます。
•
一般的な ス マー ト フ ォ ン
•
タブレ ッ ト
•
セッ ト ト ップ ボッ ク ス
•
ホーム メ デ ィ ア プ レーヤー
•
オー ト モーテ ィ ブ イ ン フ ォ テ イ ン メ ン ト
•
ルー タ ー
Zynq-7000 AP SoC フ ァ ミ リ はザ イ リ ン ク ス の All Programmable SoC アーキ テ ク チ ャ で構成 さ れてい ま す。 こ の製品
は、 豊富な機能を備え たデ ュ アル コ ア ARM Cortex-A9 MPCore™ ベース のプ ロ セ ッ シ ン グ シ ス テ ム (PS) と ザ イ リ ン
ク ス のプ ロ グ ラ マブル ロ ジ ッ ク (PL) を、 最先端の高性能低消費電力 (HPL)、 28nm、 high-k メ タ ル ゲー ト (HKMG) プ
ロ セ ス テ ク ノ ロ ジで、 1 つのデバ イ ス に統合 し た も のです。 PS は ARM Cortex-A9 MPCore マルチ コ ア プ ロ セ ッ サを
中核 と し て、 オンチ ッ プ メ モ リ 、 外部 メ モ リ イ ン タ ーフ ェ イ ス、 豊富な I/O ペ リ フ ェ ラ ルを備えてい ます。
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
4
第 2章
移植上の留意点
図 2-1 に Zynq®-7000 All Programmable (AP) SoC の全体図を示 し ます。 こ の図には、 ARM® Cortex™-A9 プ ロ セ ッ サお
よ びその コ ン ポーネ ン ト が示 さ れてい ます。
X-Ref Target - Figure 2-1
=\QT$36R&
,2
3HULSKHUDOV
86%
3URFHVVLQJ6\VWHP
&ORFN
*HQHUDWLRQ
86%
[86%
*LJ(
[*LJ(
*LJ(
[6'
5HVHW
$SSOLFDWLRQ3URFHVVRU8QLW
6:'7
)38DQG1(21(QJLQH
77&
6'6',2
.%
,&DFKH
,54
.%
'&DFKH
*,&
6'6',2
8$57
008
$50&RUWH[$
&38
.%
,&DFKH
.%
'&DFKH
6QRRS&RQWUROOHU$:'77LPHU
'0$
&KDQQHO
*3,2
0,2
$50&RUWH[$
&38
008
6\VWHP
/HYHO
&RQWURO
5HJV
)38DQG1(21(QJLQH
.%/&DFKH&RQWUROOHU
8$57
&$1
2&0
,QWHUFRQQHFW
&$1
,&
.
65$0
,&
0HPRU\
,QWHUIDFHV
&HQWUDO
,QWHUFRQQHFW
63,
63,
&RUH6LJKW
&RPSRQHQWV
0HPRU\
,QWHUIDFHV
65$0
125
''5
//3''5
&RQWUROOHU
'$3
21),
1$1'
'HY&
3URJUDPPDEOH/RJLFWR0HPRU\,QWHUFRQQHFW
463,
&75/
(0,2
;$'&
ELW$'&
*HQHUDO3XUSRVH
3RUWV
'0$
6\QF
,54
&RQILJ
$(66+$
+LJK3HUIRUPDQFH3RUWV
$&3
3URJUDPPDEOH/RJLF
1RWHV
$UURZGLUHFWLRQVKRZVFRQWUROPDVWHUWRVODYH
'DWDIORZVLQERWKGLUHFWLRQV$;,ELWELW$;,ELW$;,ELW$+%ELW$3%ELW&XVWRP
6HOHFW,2
5HVRXUFHV
;
図 2-1 : Zynq-7000 All Programmable SoC の全体図
Zynq-7000 AP SoC が備え る ARM Cortex-A9 プ ロ セ ッ サはデ ュ アル コ アです。 各 コ アは別々の L1 キ ャ ッ シ ュ を内蔵
し ますが、 L2 キ ャ ッ シ ュ は同 じ も のを共有 し ます。
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
5
第 2 章 : 移植上の留意点
ARM Cortex-A9 の機能
以降のセ ク シ ョ ンでは、 ARM プ ロ セ ッ サの重要な機能について説明 し ます。
CPU モー ド
CPU は常に 1 つのモー ド に し か入れ ませんが、 外部 イ ベン ト (割 り 込み) ま たはプ ロ グ ラ ム制御でそれを切 り 替え る
こ と がで き ます。
•
ユーザー モー ド : 唯一の非特権モー ド
•
FIQ モー ド : プ ロ セ ッ サが FIQ 割 り 込みを受け取る と 必ず入る 特権モー ド
•
IRQ モー ド : プ ロ セ ッ サが IRQ 割 り 込みを受け取 る と 必ず入 る 特権モー ド
•
スーパーバ イ ザー (svc) モー ド : CPU が リ セ ッ ト さ れ る か SVC 命令が実行 さ れ る と 必ず入 る 特権モー ド
•
アボー ト モー ド : プ リ フ ェ ッ チ アボー ト ま たはデー タ アボー ト 例外が発生す る と 必ず入 る 特権モー ド
•
未定義モー ド : 未定義命令例外が発生する と 必ず入る 特権モー ド
•
シ ス テ ム モー ド (ARMv4 以降) : 例外が発生 し て も 入 ら ない唯一の特権モー ド 。 こ のモー ド には、 カ レ ン ト プ ロ
グ ラ ム ス テー タ ス レ ジ ス タ (CPSR) のモー ド ビ ッ ト に明示的に書 き 込む命令を実行す る こ と に よ っ てのみ切 り
替わ り ます。
•
モニ タ ー モー ド (ARMv6 お よ び ARMv7 セキ ュ リ テ ィ 拡張、ARMv8 EL3) : ARM コ アの TrustZone® 拡張をサポー
ト す る ために用意 さ れてい ます。
•
Hyp モー ド (ARMv7 仮想化拡張、 ARMv8 EL2) : セキ ュ アでない CPU 動作の仮想化要件をサポー ト す る ハ イ パー
バ イ ザー モー ド です。
TrustZone
Cortex-A9 アーキ テ ク チ ャ は、 TrustZone テ ク ノ ロ ジ と し て提供 さ れてい る セキ ュ リ テ ィ 拡張を備え ます。 こ れはハー
ド ウ ェ ア ベース のア ク セ ス制御が可能な 2 個の仮想プ ロ セ ッ サ を提供する ため、SoC に別の専用セキ ュ リ テ ィ コ ア を
追加す る 必要がな く な り 、 セキ ュ リ テ ィ が低コ ス ト で実現 し ます。 こ の機能に よ っ て、 アプ リ ケーシ ョ ン コ アは (機
能 ド メ イ ン を意味す る 別の名前 と 混同 し ない よ う に) ワ ール ド と 呼ぶ 2 つの状態を切 り 換え る こ と で、 信頼性が高い
ワール ド か ら 信頼性が低い ワール ド に情報が漏れ る のを防ぎ ます。 一般に、 ワール ド の切 り 換えはプ ロ セ ッ サのほか
の機能に影響 さ れないため、 同 じ コ ア を使用 し ていて も 各ワ ール ド はほかの ワ ール ド か ら 独立 し て動作で き ます。 メ
モ リ お よ びペ リ フ ェ ラ ルは、 コ アの動作ワ ール ド を認識 し 、 こ れを用いてデバ イ ス上の機密 と コ ー ド へのア ク セ ス を
制御で き ます。
TrustZone テ ク ノ ロ ジの代表的な用途 と し て、信頼性が低い ワ ール ド で高機能なオペレーテ ィ ン グ シ ス テ ム を実行 し 、
よ り 信頼性が高い ワール ド で小規模なセキ ュ リ テ ィ 専用 コ ー ド を実行 し ます。 こ れに よ っ て、 ARM ベース デバ イ ス
におけ る メ デ ィ ア使用を制御す る ためのデジ タ ル著作権管理 (DRM) を さ ら に厳密にで き 、 デバ イ ス の無許可使用 も
防止で き ます。 ただ し 実際は、 ザ イ リ ン ク ス以外の多 く のシ リ コ ン ベン ダーは、 ARM TrustZone ハー ド ウ ェ アお よ び
関連 ソ フ ト ウ ェ アの具体的な実装の詳細を機密情報 と し て扱っ てい ます。 そのため、 その よ う なサー ド パーテ ィ の ソ
リ ュ ーシ ョ ンで ど の よ う なサービ ス が提供 さ れてい る かは必ず し も 明確ではあ り ません。ソ フ ト ウ ェ ア ス タ ッ ク の実
装を解析す る こ と で、 セキ ュ ア ワ ール ド の実装に関す る 詳細を得 る こ と が可能です。
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
6
第 2 章 : 移植上の留意点
一般的な ア プ リ ケーシ ョ ンの例
TrustZone に基づ く 次の よ う な一般的な アプ リ ケーシ ョ ンが ARM の TrustZone の ウ ェ ブサ イ ト [参照 3] に示 さ れてお
り 、 実際の TrustZone の使用方法をわか り やす く 示 し てい ます。
•
モバ イ ル ペ イ メ ン ト お よ びモバ イ ル バン キ ン グにおいてユーザー認証を強化す る ためのセキ ュ リ テ ィ 保護 さ れ
た PIN エン ト リ
•
ト ロ イ の木馬、 フ ィ ッ シ ン グ詐欺、 お よ び APT (Advanced Persistent Threat) 攻撃か ら の保護
•
高価値な メ デ ィ アの配信お よ び利用の有効化 (DRM)
•
BYOD (私的デバ イ ス活用) デバ イ ス におけ る 個人 と アプ リ ケーシ ョ ンの分離
•
ソ フ ト ウ ェ ア ラ イ セ ン ス管理
•
ロ イ ヤルテ ィ ベース アプ リ ケーシ ョ ン
•
ク ラ ウ ド ベース ド キ ュ メ ン ト のア ク セ ス制御
Thumb-2 命令セ ッ ト
プ ロ セ ッ サは Thumb ス テー ト で、 ARM 命令セ ッ ト のサブセ ッ ト に対応する コ ンパ ク ト な 16 ビ ッ ト エン コ ー ド であ
る Thumb 命令セ ッ ト を実行 し ます。 ほ と ん ど の Thumb 命令は、 通常の ARM 命令に直接対応 し ます。 その高い コ ー
ド 密度は、 命令オペ ラ ン ド のい く つか を明示す る こ と と 、 ARM 命令セ ッ ト ス テー ト で実行す る ARM 命令 と 比べて
数を制限す る こ と で実現 し てい ます。
Thumb では、 16 ビ ッ ト オペ コ ー ド の機能に制限があ り ます。 た と えば、 条件付 き は分岐命令のみであ り 、 オペコ ー
ド の多 く は CPU の汎用レ ジ ス タ 全体の半数に し かア ク セ ス で き ません。 オペ コ ー ド が短い こ と で、 一部の演算では
追加の命令が必要にな り ますが、 全体 と し ては コ ー ド 密度が向上 し ます。 メ モ リ のポー ト ま たはバ ス の幅が 32 ビ ッ
ト 未満に制限 さ れてい る 場合、 32 ビ ッ ト の ARM コ ー ド に比べて短い Thumb オペ コ ー ド を使 う こ と で、 メ モ リ 帯域
幅の上限を超え てプ ロ セ ッ サに書 き 込むべ き プ ロ グ ラ ム コ ー ド が少な く て済むため、 性能はむ し ろ向上 し ます。
Thumb-2 は、 制限があ る Thumb の 16 ビ ッ ト 命令セ ッ ト に 32 ビ ッ ト 命令を追加す る こ と で命令セ ッ ト を拡張 し 、 可
変長命令セ ッ ト と し てい ます。 Thumb-2 の目的は、 Thumb と 同等の コ ー ド 密度を維持 し なが ら 、 32 ビ ッ ト メ モ リ 上
の ARM 命令セ ッ ト と 同等の性能を実現す る こ と です。
SIMD サポー ト (NEON)
ア ド バン ス ド SIMD 拡張であ る NEON MPE (Media Processing Engine) は 64 ビ ッ ト と 128 ビ ッ ト を組み合わせた SIMD
命令セ ッ ト であ り 、メ デ ィ アお よ び信号処理アプ リ ケーシ ョ ンにおけ る 標準的な高速化手法です。NEON は Zynq-7000
AP SoC が内蔵す る Cortex-A9 の機能であ り 、 包括的な命令セ ッ ト 、 独立 し た レ ジ ス タ フ ァ イ ル、 独立 し た実行ハー
ド ウ ェ ア を特徴 と し てい ます。 NEON は、 8/16/32/64 ビ ッ ト 整数お よ び単精度 (32 ビ ッ ト ) 浮動小数点デー タ 、 お よ び
単一命令複数デー タ (SIMD) 演算をサポー ト し 、 オーデ ィ オお よ びビデオ処理、 さ ら にはグ ラ フ ィ ッ ク スお よ びゲー
ム処理をサポー ト し ます。 NEON では、 SIMD は最大 16 の演算を同時に実行 し ます。 NEON ハー ド ウ ェ アは、 VFP で
使用 し た も の と 同 じ 浮動小数点レ ジ ス タ を共有 し ます。NEON は 128 ビ ッ ト を一度に実行で き ますが、ARM Cortex-A9
プ ロ セ ッ サは 128 ビ ッ ト ベ ク タ ーをサポー ト し てい る に も かかわ ら ず、 一度に実行す る のは 64 ビ ッ ト です。 NEON
は、10MHz で動作す る CPU 上で MP3 オーデ ィ オ復号化を実行で き 、ま た GSM の適応マルチ レー ト (AMR) 音声 コ ー
デ ッ ク を 13MHz 以下で実行で き ます。
ベ ク タ ー浮動小数点ユニ ッ ト (VFPU) - 単精度、 倍精度
ARM アーキ テ ク チ ャ を拡張す る 浮動小数点 コ プ ロ セ ッ サです。
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
7
第 2 章 : 移植上の留意点
キャ ッ シュ
•
L1 デー タ キ ャ ッ シ ュ 32KB、 L1 命令キ ャ ッ シ ュ 32KB
°
•
それぞれ 4 ウ ェ イ セ ッ ト ア ソ シエ イ テ ィ ブ
L2 512KB キ ャ ッ シ ュ (デー タ と 命令に共通)
°
8 ウ ェ イ セ ッ ト ア ソ シエ イ テ ィ ブ
MMU
メ モ リ 管理ユニ ッ ト (MMU) は L1 お よ び L2 メ モ リ シ ス テ ム と 連携 し 、 仮想ア ド レ ス を物理ア ド レ ス に変換 し ます。
ま た、 外部 メ モ リ と のア ク セ ス も 制御 し ます。
•
4KB、 64KB、 1MB、 16MB をサポー ト す るページ テーブル エン ト リ
•
16 個の ド メ イ ン
•
グ ロ ーバルお よ びアプ リ ケーシ ョ ン固有の識別子を備え る ため、コ ン テ キ ス ト ス イ ッ チ用の変換ル ッ ク アサ イ ド
バ ッ フ ァ ー (TLB) フ ラ ッ シ ュ の要件を削除
•
ア ク セ ス許可チ ェ ッ ク 機能を拡張
OCM
オンチ ッ プ メ モ リ (OCM) モジ ュ ールは 256KB RAM を内蔵 し ます。OCM モジ ュ ールは、2 個の 64 ビ ッ ト AXI ス レー
ブ イ ン タ ーフ ェ イ ス ポー ト と 1 個の CPU 専用ア ク セ ラ レー タ コ ヒ ーレ ン シ ポー ト (ACP) に よ る ア ク セ ス をサポー
ト し ます。 こ のア ク セ ス は、 アプ リ ケーシ ョ ン処理装置 (APU)、 ス ヌープ制御装置 (SCU)、 プ ロ セ ッ シ ン グ シ ス テ ム
(PS) と プ ロ グ ラ マブル ロ ジ ッ ク (PL) 内の各バ ス マ ス タ ーが共有する 全装置を通 じ てな さ れます。bootROM メ モ リ は
ブー ト プ ロ セ ス でのみ使用 さ れ、 ユーザーには見え ません。
OCM に割 り 当て る ア ド レ ス範囲は、 ア ド レ ス マ ッ プの先頭ま たは末尾の 256KB に設定で き る ため、 ARM の ロ ー /ハ
イ ベ ク タ ー例外を柔軟に処理で き ます。 さ ら に、 CPU お よ び ACP AXI イ ン タ ーフ ェ イ ス は、 下位 1MB のア ド レ ス
範囲のア ク セ ス を、 SCU ア ド レ ス フ ィ ル タ リ ン グ機能を用いて DDR に転送で き ます。
割 り 込み
•
ARM のグ ロ ーバル割 り 込み コ ン ト ロ ー ラ ー (GIC) が割 り 込みを制御
•
3 個の ウ ォ ッ チ ド ッ グ タ イ マー (WDT) — コ ア 0 用、 コ ア 1 用、 シ ス テ ム用に各 1 個
•
各コ アは、 プ ラ イ ベー ト ペ リ フ ェ ラ ル割 り 込み (PPI) と 共有ペ リ フ ェ ラ ル割 り 込み (SPI) を それぞれ複数サポー ト
•
割 り 込みの優先度付けが可能
•
割 り 込みま たは イ ベン ト 信号の発生を待っ てい る 間、 CPU は待機ス テー ト (WFI) に入る こ と が可能
シ ス テム制御 コ プ ロ セ ッ サ (CP15)
シ ス テ ム制御 コ プ ロ セ ッ サ (CP15) は、 プ ロ セ ッ サの機能の ス テー タ ス情報を制御お よ び提供 し ます。 シ ス テ ム制御
コ プ ロ セ ッ サの主な機能は次の通 り です。
•
全体のシ ス テ ム制御お よ び設定
•
MMU の設定お よ び管理
•
キ ャ ッ シ ュ の設定お よ び管理
•
シ ス テ ム性能の監視
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
8
第 2 章 : 移植上の留意点
タ イ マー
Cortex-A9 プ ロ セ ッ サの各 コ アは、 それぞれ専用の 32 ビ ッ ト プ ラ イ ベー ト タ イ マ と 32 ビ ッ ト ウ ォ ッ チ ド ッ グ タ イ
マーを持っ てい ます。ま た、こ れ ら 2 つのプ ロ セ ッ サ コ アで 1 個の 64 ビ ッ ト グ ロ ーバル タ イ マーを共有 し てい ます。
こ れ ら の タ イ マーはすべて CPU の 1/2 の周波数 (CPU_3x2x) で常に ク ロ ッ キ ン グ さ れます。
シ ス テ ム レベルでは、 1 個の 24 ビ ッ ト ウ ォ ッ チ ド ッ グ タ イ マー と 2 個の 16 ビ ッ ト ト リ プル タ イ マー /カ ウ ン タ ー
を備え ます。 シ ス テ ム ウ ォ ッ チ ド ッ グ タ イ マーは、CPU の 1/4 ま たは 1/6 の周波数 (CPU_1x) で ク ロ ッ キ ン グす る か、
MIO ピ ン ま たは PL か ら の外部信号で ク ロ ッ キ ン グで き ます。
2 個の ト リ プル タ イ マー /カ ウ ン タ ーは、 常に CPU の 1/4 ま たは 1/6 の周波数 (CPU_1x) で ク ロ ッ キ ン グ さ れ、 MIO ピ
ン ま たは PL か ら の信号のパルス幅を計測 し ます。
命令セ ッ ト
ARM は RISC (縮小命令セ ッ ト コ ン ピ ュ ー タ ー ) プ ロ セ ッ サです。 その命令セ ッ ト には次の よ う な特徴があ り ます。
•
ロ ー ド /ス ト ア アーキ テ ク チ ャ
•
ハーフ ワ ー ド と シ ン グル ワー ド の ロ ー ド /ス ト ア命令のために非整列ア ク セ ス をサポー ト (ア ト ミ ッ ク 性を保証
し ないな ど の制限あ り )
•
均等な 16 × 32 ビ ッ ト レ ジ ス タ フ ァ イ ル (プ ロ グ ラ ム カ ウ ン タ ー、ス タ ッ ク ポ イ ン タ ー、リ ン ク レ ジ ス タ を含む)
•
デ コ ー ド と パ イ プ ラ イ ン処理が容易な 32 ビ ッ ト 固定長命令 ( コ ー ド 密度の観点では不利)
•
16 ビ ッ ト 命令で コ ー ド 密度を高め る Thumb 命令セ ッ ト
•
ほ と ん ど の命令を 1 ク ロ ッ ク サ イ ク ルで実行
簡潔な設計を補 う ため、 イ ン テル アーキ テ ク チ ャ と 比べて、 次の よ う な設計上の特徴があ り ます。
•
ほ と ん ど の命令が備え る 条件付 き 実行が、 分岐プ レデ ィ ク タ に代わっ て分岐のオーバーヘ ッ ド を低減
•
演算命令は必要な場合のみ条件 コ ー ド を変更
•
32 ビ ッ ト バレル シ フ タ ーは、 性能を低下 さ せる こ と な く 、 ほ と ん ど の演算命令 と ア ド レ ス計算で使用可能
•
強力な イ ンデ ッ ク ス付 き ア ド レ ッ シ ン グ モー ド
•
リ ン ク レ ジ ス タ が高速 リ ーフ関数呼び出 し をサポー ト
•
レ ジ ス タ バン ク 切 り 換え を備え、 シ ンプルかつ高速で 2 つの優先度レベルを持つ割 り 込みサブシ ス テ ム
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
9
第 2 章 : 移植上の留意点
レジス タ セ ッ ト
レ ジ ス タ セ ッ ト を次の表に示 し ます。
各 CPU モー ド と レ ジス タ
usr
sys
svc
abt
und
irq
fiq
R0
R1
R2
R3
R4
R5
R6
R7
R8
R8_fiq
R9
R9_fiq
R10
R10_fiq
R11
R11_fiq
R12
R12_fiq
R13
R13_svc
R13_abt
R13_und
R13_irq
R13_fiq
R14
R14_svc
R14_abt
R14_und
R14_irq
R14_fiq
SPSR_und
SPSR_irq
SPSR_fiq
R15
CPSR
SPSR_svc
SPSR_abt
レ ジ ス タ R0 ~ R7 は CPU モー ド に関わ ら ず同 じ で、 バン ク 化 さ れ る こ と はあ り ません。
R13 と R14 は、シ ス テ ム モー ド を除 く すべての特権 CPU モー ド でバン ク 化 さ れます。つま り 、例外が原因で入 る モー
ド は、 それぞれ専用の R13 と R14 があ り ます。 一般に こ れ ら の レ ジ ス タ は、 それぞれ ス タ ッ ク ポ イ ン タ ー と 関数呼
び出 し か ら の戻 り ア ド レ ス を持ち ます。
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
10
第 2 章 : 移植上の留意点
エ イ リ アス
•
R13 は SP (ス タ ッ ク ポ イ ン タ ー ) と も 呼ぶ
•
R14 は LR ( リ ン ク レ ジ ス タ ) と も 呼ぶ
•
R15 は PC (プ ロ グ ラ ム カ ウ ン タ ー ) と も 呼ぶ
カ レ ン ト プ ロ グ ラ ム ス テー タ ス レ ジ ス タ (CPSR) は次の 32 ビ ッ ト か ら な り ます。
•
M (ビ ッ ト 0 ~ 4) はプ ロ セ ッ サ モー ド ビ ッ ト
•
T (ビ ッ ト 5) は Thumb ス テー ト ビ ッ ト
•
F (ビ ッ ト 6) は FIQ デ ィ ス エーブル ビ ッ ト
•
I (ビ ッ ト 7) は IRQ デ ィ ス エーブル ビ ッ ト
•
A (ビ ッ ト 8) は不正確デー タ アボー ト デ ィ ス エーブル ビ ッ ト
•
E (ビ ッ ト 9) はデー タ エンデ ィ ア ン ビ ッ ト
•
IT (ビ ッ ト 10 ~ 15、 25、 26) は if-then ス テー ト ビ ッ ト
•
GE (ビ ッ ト 16 ~ 19) は greater-than-or-equal-to ビ ッ ト
•
DNM (ビ ッ ト 20 ~ 23) は書 き 換え禁止ビ ッ ト
•
J (ビ ッ ト 24) は Java ス テー ト ビ ッ ト
•
Q (ビ ッ ト 27) は ス テ ィ ッ キー オーバーフ ロ ー ビ ッ ト
•
V (ビ ッ ト 28) はオーバーフ ロ ー ビ ッ ト
•
C (ビ ッ ト 29) はキ ャ リ ー /ボ ロ ー /拡張ビ ッ ト
•
Z (ビ ッ ト 30) はゼ ロ ビ ッ ト
•
N (ビ ッ ト 31) は negative/less than ビ ッ ト
ほかのアーキ テ ク チ ャ か ら ARM に ソ フ ト ウ ェ ア を移植す る 場合、 必須事項 と 任意の留意点があ り ます。 次の章では
こ れ ら について説明 し ます。
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
11
第 3章
アーキテ ク チ ャ間の機能比較
アーキテ ク チ ャの比較
次の表で各アーキ テ ク チ ャ を比較 し ます。
機能
ARMv7
PowerPC
MIPS
Renesas-SH
x86
エンデ ィ ア ン
ビッグ
リ トル
ビッグ
リ トル
ビッグ
リ トル
ビッグ
リ トル
リ トル
ビッ ト
32
64 (32→ 64)
32 ビ ッ ト サブ
セ ッ ト を備え る
64 ビ ッ ト
アーキ テ ク チ ャ
64 (32→ 64)
32 ビ ッ ト サブ
セ ッ ト を備え る
64 ビ ッ ト
アーキ テ ク チ ャ
32
16、 32、 64
デー タ ビ ッ ト
3
3
1、 2、 3
2
2 (整数)
3 (AVX-512)
レジス タ - レジス タ
レジス タ - メ モ リ
レジス タ - メ モ リ
オペ ラ ン ド の移動
レジス タ - レジス タ レジス タ - レジス タ レジス タ - レジス タ
方式
RISC
RISC
RISC
RISC
CISC
レジス タ
16 (PC、 SP を含む)
32
32 x 4 バン ク
(ゼ ロ を含む)
16
6 (16 ビ ッ ト )
8 (32 ビ ッ ト )
16 (64 ビ ッ ト )
命令ビ ッ ト
ARM : 32 ビ ッ ト
Thumb : 16 ビ ッ ト
Thumb2 : 16 ~ 32
ビッ ト
32 ビ ッ ト
32 ビ ッ ト
16 ~ 32 ビ ッ ト
可変
拡張
NEON
VFP
TrustZone
Jazelle
LPAE
なし
x87、 IA-32、
MMX、 3DNow!、
SSE、 SSE2、 PAE、
x86-64、 SSE3、
SSE4、 SSE5、
AVX、 AES、 FMA
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
AltiVec、 APU、
VSX、 Cell
MDMX
MIPS-3D
japan.xilinx.com
12
第 3 章 : アーキテ ク チ ャ間の機能比較
関数呼び出 し の表記規則
通常、 ソ ース コ ー ド は C 言語な ど の高級言語で記述 さ れてい ます。 こ のため、 ツール チ ェ ーン を適切に変更す る こ
と で別のアーキ テ ク チ ャ への移植が可能です。 移植先のアーキ テ ク チ ャ に適 し て機械語を生成は、 コ ンパ イ ラ が担い
ます。
ただ し 、 場合に よ っ ては各種の最適化のために コ ー ド を微調整が必要です。 こ の場合、 コ ー ド の生成方法、 レ ジ ス タ
の用途、 呼び出 し シーケ ン ス な ど の詳細を開発者が理解 し てい る 必要があ り ます。
次の表で、 各アーキ テ ク チ ャ の関数呼び出 し の表記規則を比較 し ます。
ARM
PowerPC
MIPS
Renesas-SH
x86
関数の
パラ メ ーター
R0 ~ R3
R3 ~ R10
後続の引数 スタッ ク
先頭の 4 つの引数 レジス タ
($a0 ~ $a3)
後続の引数 スタッ ク
R4 ~ R7
スタッ ク
(ESS、 ESP)
パ ラ メ ー タ ーの
順序
左か ら 右
左か ら 右
左か ら 右
左か ら 右
右か ら 左
標準戻 り 値
レ ジ ス タ (R0)
R3
1 個の レ ジ ス タ
($v0)
R0
EIP
ロ ン グ (複素数)
戻り値
レジス タ
(R0 ~ R4)
R3 ~ R4
2 個の レ ジ ス タ
($v0、 $v1)
R0
EIP
スタック
ポ イ ン ター
R13
R1
レ ジ ス タ ($sp)
R15
ESS、 ESP
戻り アド レス
R14
( リ ン ク レジス タ)
LR
(ス タ ッ ク に保存)
レ ジ ス タ ($ra)
レ ジ ス タ (PR)
EIP
ロ ーカル変数の
配置方法
スタック
スタッ ク
スタッ ク
スタッ ク
スタッ ク
予約 さ れていない
レジス タ
R4 ~ R8
R0、 R2 ~ R10、 R12
FPR0 ~ FPR13
LR、 CTR、 XER、
CR0 ~ CR7
$0 ~ $15
$24、 $25
R1 ~ R7
すべての レ ジ ス タ
揮発性レ ジ ス タ
R4 ~ R11
R3 ~ R12
$8 ~ $15
$24、 $25
R1 ~ R3
すべての レ ジ ス タ
表記規則
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
13
第 3 章 : アーキテ ク チ ャ間の機能比較
関数呼び出 し 後の設定 と ク リ ーン ア ッ プ
RISC プ ロ セ ッ サ (ARM、 MIPS、 PowerPC、 Renesas-SH) は ABI/EABI (1) 規格の関数呼び出 し シーケ ン ス に従い ますが、
わずかな相違があ り ます。 表 3-1 に、 各アーキ テ ク チ ャ の呼び出 し プ ロ シージ ャ を示 し ます。
表 3-1 : 各アーキテ ク チ ャの関数呼び出 し プ ロ シージ ャ
アーキテ クチャ
プ ロ ローグ (関数を呼び出す準備)
エ ピ ローグ (関数呼び出 し を終え る準備)
ARM
r4 ~ r11 を ス タ ッ ク にプ ッ シ ュ す る 。
r14 の戻 り ア ド レ ス を ス タ ッ ク にプ ッ シ ュ す る 。
引数 (r0 ~ r3) を ロ ーカルの ス ク ラ ッ チ レ ジ ス タ (r4 ~ r11)
に コ ピーする 。
その他の ロ ーカル変数を残 り の ロ ーカル ス ク ラ ッ チ レ ジ
ス タ (r4 ~ r11) に割 り 当て る 。
必要に応 じ て、 BL を使っ て その他のサブルーチ ン を呼び
出す。
結果を r0 に入れ る 。
r4 ~ r11 を ス タ ッ ク か ら プルする 。
プ ロ グ ラ ム カ ウ ン タ ー r15 への戻 り ア ド レ ス を
プルす る 。
MIPS
ス タ ッ ク フ レ ーム の領域を予約す る 。 ス タ ッ ク フ レ ーム
は、 次に示す最大 5 つのセ ク シ ョ ン を持つ こ と がで き る 。
• 引数セ ク シ ョ ン
• 保存済みレ ジ ス タ セ ク シ ョ ン
• 戻り アド レス セクシ ョ ン
• パデ ィ ン グ セ ク シ ョ ン
• ロ ーカル デー タ ス ト レージ セ ク シ ョ ン
仮想フ レーム ポ イ ン タ ーを設定す る 。仮想フ レーム ポ イ ン
タ は、 フ レーム サ イ ズに追加 さ れ る sp($29) であ る 。
保存済みの各汎用レ ジ ス タ のビ ッ ト マ ス ク にビ ッ ト を設定
する。
保存の必要があ る レ ジ ス タ を保存す る 。
命令ポ イ ン タ ーを関数の先頭に設定す る 。
関数の実行を開始す る 。
結果を $v0 に配置す る 。
プ ロ ロ ー グ で保存 し た レ ジ ス タ ご と に復元命
令を発行す る 。
プ ロ シージ ャ か ら 戻 る 。
PowerPC
呼び出 さ れた関数自身が、 ス タ ッ ク フ レーム を割 り 当て、
ス タ ッ ク 内の 16 バ イ ト ア ラ イ ン メ ン ト を保つ必要があ る。
新規 ス タ ッ ク フ レ ーム の位置を示すために ス タ ッ ク ポ イ
ン タ ーをデ ク リ メ ン ト し 、 ス タ ッ ク ポ イ ン タ ーの前の値を
自身の リ ン ケージ エ リ アに書 き 込み、 呼び出 し か ら 戻っ た
時に ス タ ッ ク が必ず元の状態に戻 る よ う にす る 。
非揮発性の汎用浮動小数点レ ジ ス タ をすべて保存済みレ ジ
ス タ エ リ アに保存す る 。
リ ン ク レ ジ ス タ と 条件レ ジ ス タ の値を、 必要に応 じ て コ ー
ラ ーの リ ン ケージ エ リ アに保存す る 。
ス タ ッ ク フ レームには次の順で 4 つのセ ク シ ョ ンがあ る 。
• パラ メ ーター エ リ ア
• リ ン ケージ エ リ ア
• 保存済みレ ジ ス タ
• ロ ーカル変数
関数 コ ー ド を実行す る 。
ス タ ッ ク フ レ ーム に保存 し た非揮発性の汎用
浮動小数点レ ジ ス タ を復元す る 。
非揮発性レ ジ ス タ は、ス タ ッ ク ポ イ ン タ ーが更
新 さ れ る 前に、新規ス タ ッ ク フ レームに保存 さ
れ る 。 こ れは、 新規ス タ ッ ク フ レームが正常に
割 り 当て ら れ る 、レ ッ ド ゾーン と も 呼ばれ る ス
タ ッ ク ポ イ ン タ ーの下の領域に非揮発性 レ ジ
ス タ が フ ィ ッ ト す る 場合のみ。 レ ッ ド ゾ ーン
は、 非揮発性の汎用浮動小数点レ ジ ス タ をすべ
て保存す る の に十分な大 き さ を 持つ よ う に定
義 さ れてい る 。 ただ し 、 非揮発性ベ ク タ ー レ ジ
ス タ は含ま ない。
リ ン ケージ エ リ アに保存 し た、条件レ ジ ス タ と
リ ン ク レ ジ ス タ の値を復元する 。
ス タ ッ ク ポ イ ン タ ーを直前の値に復元する 。
リ ン ク レ ジ ス タ に保存 さ れた ア ド レ ス を 用い
て、 呼び出 し ルーチンに制御を戻す。
1. アプ リ ケーシ ョ ン バ イ ナ リ イ ン タ ーフ ェ イ ス/エンベデ ッ ド アプ リ ケーシ ョ ン バ イ ナ リ イ ン タ ーフ ェ イ ス
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
14
第 3 章 : アーキテ ク チ ャ間の機能比較
表 3-1 : 各アーキテ ク チ ャの関数呼び出 し プ ロ シージ ャ (続き)
アーキテ クチャ
プ ロ ローグ (関数を呼び出す準備)
エ ピ ローグ (関数呼び出 し を終え る準備)
x86
古いベース ポ イ ン タ ーを ス タ ッ ク の上にプ ッ シ ュ する 。
新 し いベース ポ イ ン タ ーの値を得 る 。 こ の値は次の ス テ ッ
プで設定 さ れ常に こ の位置を指す。
新規 ス タ ッ ク フ レ ーム が直前の ス タ ッ ク フ レ ーム の上に
作成 さ れ る (すなわち、 前の ス タ ッ ク フ レームの先頭が新
規ス タ ッ ク フ レームの末尾にな る) よ う に、 ス タ ッ ク ポ イ
ン タ ー値 (保存 さ れたベース ポ イ ン タ ー と 直前の ス タ ッ ク
フ レームの先頭を示す) をベース ポ イ ン ターに割 り 当て る。
ス タ ッ ク ポ イ ン タ ーを下げて、 変数 (関数の ロ ーカル変数)
を入れ る 場所を開け る 。
関数の コ ー ド を実行す る 。
ス タ ッ ク ポ イ ン タ ーを、プ ロ ロ ーグの前の値に
復元 で き る よ う に、 現在 の ベー ス ( ま た は フ
レーム) ポ イ ン タ ー値で置き 換え る 。
ベース ポ イ ン タ ーを、プ ロ ロ ーグの前の値に復
元で き る よ う に、 ス タ ッ ク か ら ポ ッ プす る 。
前の フ レ ー ム のプ ロ グ ラ ム カ ウ ン タ ー を ス
タ ッ ク か ら ポ ッ プ し 、 ジ ャ ンプす る こ と で、 関
数呼び出 し に戻 る 。
Renesas-SH
入力引数値を、 R4 ~ R7 と FR4 ~ FR11 か ら 引数のホーム
ロ ケーシ ョ ンに保存す る命令 (0 個以上) のシーケ ン ス。
保存す る すべてのパーマネ ン ト レ ジ ス タ と 戻 り ア ド レ ス
(PR) をプ ッ シ ュす る命令 (0 個以上) のシーケ ン ス。
フ レーム ポ イ ン ターを設定する命令 (1 個以上) のシーケン ス。
4 バ イ ト 境界に位置合わせ し たオ フ セ ッ ト を R15 か ら 減算
す る こ と で、 ロ ーカル変数、 コ ンパ イ ラ 生成一時フ ァ イ ル、
引数ビル ド のエ リ アに、 残 り の ス タ ッ ク フ レーム領域を割
り 当て る 命令 (0 個以上) のシーケ ン ス。
関数 コ ー ド を実行す る 。
フ レーム ポ イ ン タ ーを イ ン ク リ メ ン ト す る
1 個の追加命令。
命令のデ ス テ ィ ネーシ ョ ン オペ ラ ン ド ま た は
イ ン ク リ メ ン ト 後の メ モ リ ア ド レ ス オペ ラ ン
ド の中を参照 し 、 R15 を変更す る 複数の命令の
シーケ ン ス。
次のセ ク シ ョ ンでは、 各アーキ テ ク チ ャ の留意点を説明 し ます。
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
15
第 3 章 : アーキテ ク チ ャ間の機能比較
割 り 込みモデル
こ れ ら のアーキ テ ク チ ャ の割 り 込み ソ ース は、 特定の規格には従っ てい る わけではあ り ません。 利用可能な リ ソ ース
と 対象 と す る アプ リ ケーシ ョ ンに基づいてそれぞれ例外を定義 し てい ます。
ただ し 、 例外は大 き く 2 つのグループ、 つま り ソ フ ト ウ ェ ア例外 と 外部 イ ベン ト に分け ら れます。 次の表に、 アーキ
テ ク チ ャ 別に こ れ ら 2 つのグループの割 り 込みを示 し ます。
ARM
例外の タ イ プ
命令に よ る 例外
外部 ワール ド に
よ る 例外
SWI
未定義命令
プ リ フ ェ ッ チ アボー ト
デー タ アボー ト
リ セッ ト
IRQ
FIQ
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
MIPS
SYS
OV
TR
リ セッ ト
NMI
割 り 込み
AdEL
AdES
TLBL
TLBS
ICache エ ラ ー
DCache エ ラ ー
PowerPC
x86
ク リ テ ィ カル入力
マシ ン チ ェ ッ ク
シ ス テ ム呼び出 し
除算エ ラ ー
ブ レー ク ポ イ ン ト
不正オペ コ ー ド
セグ メ ン ト 不在
ス タ ッ ク セグ メ ン
ト 違反
一般保護違反
ページ違反
マシ ン チ ェ ッ ク
TRAP、
UBRKAFTER
NMI
ユーザー定義割 り
込み
リ セッ ト :
POWERON、
MANRESET、
HUDIReset、
ITLBMULTIHIT、
OLTBMULTIHIT
全般 :
UBRKBEFORE、
IADDERR、
ITLBMISS、
EXECPROT、
RESINST、
ILLSLOT、
FPUDIS、
SLOTFPUDIS、
RADDERR、
WADDERR、
READPROT、
FPUEXC、
FIRSTWRITE
割 り 込み :
NMI、 IRLINT、
PERIPHINT
デー タ ス ト レージ
命令ス ト レージ
外部ア ラ イ ン メ ン
ト プログラ ム
浮動小数点
PITimer
FITimer
WDTimer
TLB ミ ス
デバ ッ グ
japan.xilinx.com
Renesas-SH
16
第 3 章 : アーキテ ク チ ャ間の機能比較
ア ド レス マ ッ プ
Zynq-7000 AP SoC 内の ARM Cortex-A9 のア ド レ ス マ ッ プ
表 3-2 にシ ス テ ム レベルのア ド レ ス マ ッ プ を示 し ます。 ARM シ ス テ ムのア ド レ ス マ ッ プの詳細は、 『Zynq-7000 All
Programmable SoC テ ク ニ カル リ フ ァ レ ン ス マニ ュ アル』 (UG585) [参照 1] を参照 し て く だ さ い。
表 3-2 : シ ス テム レ ベルのア ド レ ス マ ッ プ
ア ド レ ス範囲
CPU と ACP
AXI_HP
その他の
バス マス タ ー
説明
OCM
OCM
OCM
ア ド レ スは SCU で フ ィ ル タ ー さ れず、OCM は下位
に割 り 当て る
DDR
OCM
OCM
ア ド レ スは SCU で フ ィ ル タ ー さ れ、OCM は下位に
割 り 当て る
0000_0000 ~ 0003_FFFF
ア ド レ スは SCU で フ ィ ル タ ー さ れ、OCM は下位に
割 り 当てない
DDR
ア ド レ スは SCU で フ ィ ル タ ー さ れず、OCM は下位
に割 り 当てない
0004_0000 ~ 0007_FFFF
ア ド レ スは SCU で フ ィ ル タ ー さ れ る
DDR
ア ド レ スは SCU で フ ィ ル タ ー さ れない
0008_0000 ~ 000F_FFFF
DDR
DDR
DDR
ア ド レ スは SCU で フ ィ ル タ ー さ れ る
DDR
DDR
ア ド レ スは SCU で フ ィ ル タ ー さ れない
DDR
DDR
全 イ ン タ ー コ ネ ク ト マ ス タ ーにア ク セ ス可
0010_0000 ~ 3FFF_FFFF
DDR
4000_0000 ~ 7FFF_FFFF
PL
PL
PL への汎用ポー ト #0、 M_AXI_GP0
8000_0000 ~ BFFF_FFFF
PL
PL
PL への汎用ポー ト #1、 M_AXI_GP1
E000_0000 ~ E02F_FFFF
IOP
IOP
I/O ペ リ フ ェ ラ ル レ ジ ス タ
E100_0000 ~ E5FF_FFFF
SMC
SMC
SMC メ モ リ
F800_0000 ~ F800_0BFF
SLCR
SLCR
SLCR レ ジ ス タ
F800_1000 ~ F880_FFFF
PS
PS
F890_0000 ~ F8F0_2FFF
CPU
FC00_0000 ~ FDFF_FFFF
ク ワ ッ ド SPI
FFFC_0000 ~ FFFF_FFFF
OCM
PS シ ス テ ム レ ジ ス タ
CPU プ ラ イ ベー ト レ ジ ス タ
ク ワ ッ ド SPI
OCM
OCM
リ ニア モー ド 用 ク ワ ッ ド SPI リ ニア ア ド レ ス
OCM は上位に割 り 当て る
OCM は上位に割 り 当てない
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
17
第 3 章 : アーキテ ク チ ャ間の機能比較
MIPS
図 3-1 に MIPS の メ モ リ マ ッ プ を示 し ます。
X-Ref Target - Figure 3-1
$FFHVVLQ
8VHU0RGH
[IIIIBIIII
[HB
0DSSHGNVHJ
0
&DFKHDEOH
7UDQVODWLRQ
[FB
0DSSHGVVHJ
0
8QGHUFRQWURO
RIWKH7/%
0DQGDWRU\±
([FHSWLRQLI
7/%LVPLVVHG
1R
1R
)RUFHGWR
ILUVW0
1R
&RKHUHQF\
ILHOGLQ&3
UHJLVWHU
)RUFHGWR
ILUVW0
1R
8QGHUFRQWURO
RIWKH7/%
0DQGDWRU\±
([FHSWLRQLI
7/%LVPLVVHG
<HV
[DB
8QPDSSHGXQFDFKHGNVHJ
0
[B
8QPDSSHGFDFKHGNVHJ
0
8VHUVSDFHNXVHJ
*
[B
;
図 3-1 : MIPS の メ モ リ マ ッ プ
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
18
第 3 章 : アーキテ ク チ ャ間の機能比較
PowerPC
図 3-2 に MMU の概略ブ ロ ッ ク 図を示 し ます。
X-Ref Target - Figure 3-2
,QVWUXFWLRQ
$FFHVVHV
($±($
($±($
'DWD
$FFHVVHV
$±$
($±($
($±($
($±($
($±($
,%$78
,%$7/
,%$78
6HJPHQW5HJLVWHUV
,%$7/
8SSHUELWVRI
YLUWXDODGGUHVV
2Q&KLS
7/%V
($±($
'%$78
'%$7/
'%$78
%$7
+LW
3DJH7DEOH
6HDUFK/RJLF
6'5
3$±3$
3$±3$
635
$±$
'%$7/
3$±3$
2SWLRQDO
3$±3$
;
図 3-2 : MMU の概略ブ ロ ッ ク図
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
19
第 3 章 : アーキテ ク チ ャ間の機能比較
x86
図 3-3 に x86 のア ド レ ス機構を示 し ます。
X-Ref Target - Figure 3-3
6HJPHQW5HJLVWHUV
66
*6
%DVH5HJLVWHU
6HOHFWRU
6HOHFWRU
,QGH[5HJLVWHU
6HOHFWRU
)6
6HOHFWRU
(6
6HOHFWRU
'6
6HOHFWRU
&6
6FDOH
RU
'HVFULSWRU5HJLVWHUV
'LVSODFHPHQW
LQLQVWUXFWLRQ
RUELWV
66
(IIHFWLYH
$GGUHVV
/LQHDU
$GGUHVV
/LPLW
$FFHVV5LJKWV
*6
$FFHVV5LJKWV )6
$FFHVV5LJKWV
/LPLW
(6
$FFHVV5LJKWV
/LPLW
'6
$FFHVV5LJKWV
/LPLW
%DVH5HJLVWHU
&6
$FFHVV5LJKWV
/LPLW
%DVH5HJLVWHU
/LPLW
%DVH5HJLVWHU
/LPLW
%DVH5HJLVWHU
%DVH5HJLVWHU
%DVH$GGUHVV
6HJPHQW
%DVH
$GGUHVV
;
図 3-3 : x86 のア ド レ ス機構
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
20
第 3 章 : アーキテ ク チ ャ間の機能比較
Renesas-SH
図 3-4 に Renesas-SH の メ モ リ マ ッ プ を示 し ます。
X-Ref Target - Figure 3-4
([WHUQDOPHPRU\VSDFH
3UHJLRQ
&DFKHDEOH
$GGUHVVWUDQVODWLRQ
SRVVLEOH
$UHD
$UHD
$UHD
$UHD
$UHD
$UHD
$UHD
$UHD
8UHJLRQ
&DFKHDEOH
$GGUHVVWUDQVODWLRQ
SRVVLEOH
3UHJLRQ
&DFKHDEOH
$GGUHVVWUDQVODWLRQ
QRWSRVVLEOH
3UHJLRQ
1RQ&DFKHDEOH
$GGUHVVWUDQVODWLRQ
QRWSRVVLEOH
$GGUHVVHUURU
3UHJLRQ
&DFKHDEOH
$GGUHVVWUDQVODWLRQ
SRVVLEOH
6WRUHTXHXHUHJLRQ
3UHJLRQ
1RQFDFKHDEOH
$GGUHVVWUDQVODWLRQ
QRWSRVVLEOH
$GGUHVVHUURU
3ULYLOHJHGPRGH
8VHUPRGH
;
図 3-4 : Renesas-SH の メ モ リ マ ッ プ
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
21
第 3 章 : アーキテ ク チ ャ間の機能比較
レジス タ セ ッ ト
次の表に、 各プ ロ セ ッ サ (ARM、 MIPS、 PowerPC、 x86、 Renesas-SH) の レ ジ ス タ の主な機能を示 し ます。
レジス タ タ イ プ
汎用レ ジ ス タ
特定用途レ ジ ス タ
特定用途レ ジ ス タ
ARM
MIPS
PowerPC
ユーザー モデル
(UISA)
GPR0 ~ 31
FPR0 ~ 31
CR
FPSCR
XER
LR
CTR
TBU/TBL
x86
Renesas-SH
汎用 : EAX、 EBX、
ECX、 EDX
セグ メ ン ト : CS、
DS、ES、FS、GS、SS
イ ンデ ッ ク ス :
ESI、 EDI、 EBP、
EIP、 ESP
イ ン ジ ケー タ ー :
EFLAGS
汎用、 バン ク 化 さ
れ る : R0 ~ R7
汎用、 バン ク 化 さ
れない : R8 ~ R15
浮動、 バン ク 化 さ
れ る : FR0-15、
XF0-15
R0 ~ R12
$8 ~ $15、 $24、
$25 : 一時的
(保存 さ れない)
$16 ~ $23 : 一時的
(保存 さ れ る )
R13 : ス タ ッ ク
ポ イ ン ター
R14 : リ ン ク レ ジ
スタ
R15 : プ ロ グ ラ ム
カ ウ ン ター
$0 : ゼ ロ 固定
$1 : アセ ンブ ラ ー
用に予約済み
$2、 $3 : 関数の
戻り値
$4 ~ $7 : 関数の
引数
$26、 $27 : OS 用に
予約済み
$28 : グ ロ ーバル
ポ イ ン ター
$29 : ス タ ッ ク
ポ イ ン ター
$30 : フ レーム
ポ イ ン ター
(保存 さ れ る )
$31 : リ ン ク レ ジ
スタ
なし
なし
制御レ ジ ス タ : SR、
GBR、 SSR、 SPC、
SGR、 DBR、 VBR
シ ス テム レ ジ ス タ :
MACH、 MACL、
PR、 FUPL、 PC、
FPSCR
システム
コプロセ ッサ
(CP15)
$SR、 $PC、 GBR、
VBR、 SGR、
DBR、 MACL、
MACH、 PR、 PC、
FPUL、 FPSCR、
TRA、 EXPEVT、
INTEVT、 PTEH、
PTEL、 TTB、
TEA、 MMUCR、
PASCR、 IRMCR、
CCR、 QACR0/1、
RAMCR、 LSA0/1、
LDA0/1、
CPUPOM、 PVR
スーパバ イ ザー
モー ド (OEA)
MSR
PVR
SDR1
ASR
DAR
DSISR
SRR0 ~ 1
SPRG0 ~ 3
FPECR
DABR
DEC
EAR
PIR
制御 : CR0 ~ 4
デバ ッ グ : DR0 ~ 7
テ ス ト : TR0 ~ 7
GDTR、 IDTR、
LDTR、 TR
なし
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
22
第 3 章 : アーキテ ク チ ャ間の機能比較
詳細なポーテ ィ ン グ ガ イ ド : MIPS、 PowerPC、 Intel、
Renesas
ARM Cortex-A9 ベース の SoC であ る ザ イ リ ン ク ス Zynq-7000 への移行については、 『UltraFast エンベデ ッ ド デザ イ ン
設計手法ガ イ ド 』 (UG1046) [参照 2] を参照 し て く だ さ い。 こ の文書は次について詳細に説明 し てい ます。
•
シ ス テ ム レベルの留意点
•
ハー ド ウ ェ ア デザ イ ンの留意点
•
ソ フ ト ウ ェ ア デザ イ ンの留意点
•
ハー ド ウ ェ ア デザ イ ン フ ロ ー
•
ソ フ ト ウ ェ ア デザ イ ン フ ロ ー
•
デバ ッ グ手法
•
SDSoC 環境
こ の設計手法ガ イ ド は、 ARM 以外のプ ラ ッ ト フ ォームか ら ARM プ ラ ッ ト フ ォームへのユーザー アプ リ ケーシ ョ ン
の移行をサポー ト し ます。
MIPS から ARM への移行
詳細説明は、 ARM のサ イ ト の 『MIPS か ら ARM への移行』 を参照 し て く だ さ い。
PowerPC か ら ARM への移行
詳細説明は、 ARM のサ イ ト の 『Power アーキ テ ク チ ャ か ら ARM への移行』 を参照 し て く だ さ い。
IA-32 か ら ARM への移行
詳細説明は、 ARM のサ イ ト の 『IA-32 か ら ARM への移行』 を参照 し て く だ さ い。
Renesas-SH から ARM への移行
詳細説明は、 ARM のサ イ ト の 『SH-4A か ら Cortex-A への移行』 (AN314) を参照 し て く だ さ い。
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
23
付録 A
その他の リ ソ ースおよび法的通知
ザイ リ ン ク ス リ ソ ース
ア ンサー、 資料、 ダ ウ ン ロ ー ド 、 フ ォー ラ ム な ど のサポー ト リ ソ ース は、 ザ イ リ ン ク ス サポー ト サ イ ト を参照 し て く だ さ い。
ソ リ ュ ーシ ョ ン セ ン タ ー
デバ イ ス、 ツール、 IP のサポー ト については、 ザ イ リ ン ク ス ソ リ ュ ーシ ョ ン セ ン タ ーを参照 し て く だ さ い。 デザ イ ン ア シ ス
タ ン ト 、 デザ イ ン ア ド バ イ ザ リ 、 ト ラ ブルシ ュ ー ト の ヒ ン ト な ど が含まれます。
参考資料
注記 : 日本語版のバージ ョ ンは、 英語版 よ り 古い場合があ り ます。
1.
『Zynq-7000 All Programmable SoC テ ク ニ カル リ フ ァ レ ン ス マニ ュ アル』 (UG585 : 英語版、 日本語版)
2.
『UltraFast エンベデ ッ ド デザ イ ン設計手法ガ イ ド 』 (UG1046 : 英語版、 日本語版)
3.
ARM TrustZone Technology (www.arm.com/products/processors/technologies/trustzone/index.php)
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
24
付録 A : その他の リ ソ ースおよび法的通知
法的通知
本通知に基づいて貴殿ま たは貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同 じ ) に開示 さ れ
る 情報 (以下 「本情報」 と いい ます) は、 ザ イ リ ン ク ス の製品を選択お よ び使用す る こ と のためにのみ提供 さ れます。 適用 さ れ る 法律が許容す
る 最大限の範囲で、 (1) 本情報は 「現状有姿」 、 お よ び全て受領者の責任で (with all faults) と い う 状態で提供 さ れ、 ザ イ リ ン ク ス は、 本通知を
も っ て、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますが こ れ ら に限 ら れません)、 全ての保証お よ び条件を
負わない (否認す る ) も の と し ます。 ま た、 (2) ザ イ リ ン ク ス は、 本情報 (貴殿ま たは貴社に よ る 本情報の使用を含む) に関係 し 、 起因 し 、 関連
す る 、 いかな る 種類 ・ 性質の損失ま たは損害について も 、 責任を負わない (契約上、 不法行為上 (過失の場合を含む)、 その他のいかな る 責任の
法理に よ る か を問わない) も の と し 、 当該損失ま たは損害には、 直接、 間接、 特別、 付随的、 結果的な損失ま たは損害 (第三者が起 こ し た行為
の結果被っ た、 デー タ 、 利益、 業務上の信用の損失、 その他あ ら ゆ る 種類の損失や損害を含みま す) が含ま れ る も の と し 、 それは、 た と え当
該損害や損失が合理的に予見可能であ っ た り 、 ザ イ リ ン ク ス がそれ ら の可能性について助言を受けていた場合であ っ た と し て も 同様です。 ザ
イ リ ン ク ス は、 本情報に含まれ る いかな る 誤 り も 訂正す る 義務を負わず、 本情報ま たは製品仕様のア ッ プデー ト を貴殿ま たは貴社に知 ら せ る
義務 も 負い ま せん。 事前の書面に よ る 同意のない限 り 、 貴殿 ま たは貴社は本情報を再生産、 変更、 頒布、 ま たは公に展示 し てはな り ません。
一定の製品は、 ザ イ リ ン ク ス の限定的保証の諸条件に従 う こ と と な る ので、 http://japan.xilinx.com/legal.htm#tos で見 ら れ る ザ イ リ ン ク ス の販売
条件を参照 し て下 さ い。IP コ アは、ザ イ リ ン ク ス が貴殿ま たは貴社に付与 し た ラ イ セ ン ス に含ま れ る 保証 と 補助的条件に従 う こ と にな り ます。
ザ イ リ ン ク ス の製品は、 フ ェ イ ルセーフ と し て、 ま たは、 フ ェ イ ルセーフ の動作を要求す る アプ リ ケーシ ョ ンに使用す る ために、 設計 さ れた
り 意図 さ れた り し てい ません。 その よ う な重大な アプ リ ケーシ ョ ンにザ イ リ ン ク ス の製品を使用す る 場合の リ ス ク と 責任は、 貴殿ま たは貴社
が単独で負 う も のです。 http://japan.xilinx.com/legal.htm#tos で見 ら れ る ザ イ リ ン ク ス の販売条件を参照 し て下 さ い。
自動車用のア プ リ ケーシ ョ ンの免責条項
ザ イ リ ン ク ス の製品は、 フ ェ イ ルセーフ と し て設計 さ れた り 意図 さ れてはお ら ず、 ま た、 フ ェ イ ルセーフ の動作を要求す る アプ リ ケーシ ョ ン
(具体的には、 (I) エアバ ッ グの展開、 (II) 車の コ ン ト ロ ール (フ ェ イ ルセーフ ま たは余剰性の機能 (余剰性を実行す る ためのザ イ リ ン ク ス の装置
に ソ フ ト ウ ェ ア を使用す る こ と は含ま れ ません) お よ び操作者が ミ ス を し た際の警告信号があ る 場合を除 き ます)、 (III) 死亡や身体傷害を導 く
使用、 に関す る アプ リ ケーシ ョ ン) を使用す る ために設計 さ れた り 意図 さ れた り も し てい ま せん。 顧客は、 その よ う な アプ リ ケーシ ョ ン にザ
イ リ ン ク ス の製品を使用す る 場合の リ ス ク と 責任を単独で負い ます。
© Copyright 2015 Xilinx, Inc. Xilinx、 Xilinx の ロ ゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 お よ び こ の文書に含ま れ る その他の
指定 さ れたブ ラ ン ド は、米国お よ びその他各国のザ イ リ ン ク ス社の商標です。すべてのその他の商標は、それぞれの保有者に帰属 し ます。ARM
は、 EU お よ びその他各国の ARM 社の登録商標です。 PowerPC の名称お よ び ロ ゴは IBM Corp. の登録商標であ り 、 ラ イ セ ン ス に基づいて使用
さ れてい ます。 すべてのその他の商標は、 それぞれの保有者に帰属 し ます。
こ の資料に関す る フ ィ ー ド バ ッ ク お よ び リ ン ク な ど の問題につ き ま し ては、 [email protected] ま で、 ま たは各ページの右下にあ る
[フ ィ ー ド バ ッ ク 送信] ボ タ ン を ク リ ッ ク す る と 表示 さ れ る フ ォ ームか ら お知 ら せ く だ さ い。 フ ィ ー ド バ ッ ク は日本語で入力可能です。 いただ
き ま し た ご意見を参考に早急に対応 さ せていただ き ます。 なお、 こ の メ ール ア ド レ スへのお問い合わせは受け付けてお り ません。 あ ら か じ め
ご了承 く だ さ い。
アーキテ ク チ ャ ポーテ ィ ング ガ イ ド
UG1181 (v1.1.1) 2015 年 10 月 22 日
japan.xilinx.com
25