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
© Copyright 2025 ExpyDoc