ソフトウェア移行設計ガイド
このガイドでは、PowerPC* (PPC) のコードからインテル® アーキテクチャー・プラットフォームへの移行手順と、インテル® ソフトウェア開発製品を使用するタイミングについてご案内します。状況に応じた決定も含まれているため、移行ソリューションおよび計画の大まかな流れとしてご利用ください。
各手順における詳細な設計情報については、インテル® エンベデッド・デザイン・センターまでお問い合わせください。
移行には、5 つの手順があります。以下の手順を踏んで、対象となるインテル® アーキテクチャー・プラットフォームでオペレーティング・システム (OS) の要件、ハードウェアの差分、ソフトウェア最適化に対応します。
手順 1 – 対象となるオペレーティング・システムにコードを移植する
|
アーキテクチャーの移行に、異なるオペレーティング・システムへの移植を伴う場合は、新しいオペレーティング・システムに移植してから、PPC ソフトウェアをインテル・アーキテクチャー・ハードウェアに移行してください。 この手順の目標は、ソフトウェアを新しい OS で予想どおりに正しく動作させることです。この手順では、対象 OS で動作する同じコードの安定性が求められるため、この段階でその他のソフトウェアの設計変更は行わないでください。詳細については、ホワイトペーパー:PowerPC* からインテル® アーキテクチャーへの移行 - パブリックの OS のセクションを参照してください。 |
手順 2 – 1 つのインテル® アーキテクチャー・コア上での正しくコードを実行する
インテル・アーキテクチャーのオペレーティング・システム関連のコードを更新します現在および対象の OS が同じかそうでないかにかかわらず、デバイスドライバー、ライブラリー、ソフトウェア開発ツールがインテル・アーキテクチャーで利用可能かどうかを調べる必要があります。
デバイスドライバーまたはライブラリーがインハウスで開発されている場合は、インテル・アーキテクチャー用に書き直す必要があります。 サードパーティー製ドライバーまたはライブラリーが必要な場合は、相当するインテル・アーキテクチャー製品についてサードパーティー・ベンダーにお問い合わせください。 インテル・アーキテクチャー用の開発ツール インテルのツールについては、インテル® ソフトウェア開発製品のセクションを参照し、OS サポートについては、製品のウェブサイトを参照してください。インテル・アーキテクチャー用のオンチップ・デバッグ・ツールは、American Arium* または Macraigor* Systems LLC によってサポートされています (2009年2月)。 システム初期化の方法を選びますBIOS – 設計が複数の標準インターフェイスと拡張スロットをサポートするか、幅広いプリ OS 機能を備え、複数のアプリケーションを実行できるメインストリームの OS を使用する場合には、BIOS や UEFI ファームウェアを選択します。 ブートローダー – スピード、サイズ、または具体的なシステム要件への最適化が要求される場合や、最小限のアップグレードまたは拡張機能をサポートする場合は、最小限または専用のファームウェア・スタック用のブートローダーを選択します。QNX* Fastboot Technology は、インテル® Atom™ プロセッサーでご利用になれます。 組み込み機器向けインテル・アーキテクチャーの設計では、CPU コア、メモリー、I/O、周辺機器、グラフィックスを初期化するファームウェア・スタックを搭載し、オペレーティング・システムのランタイムサポートを提供します。これらのファームウェア・テクノロジーの概要については、ホワイトペーパー:「組み込み機器向けインテル® アーキテクチャー設計におけるファームウェアの実装」を参照してください。 コードのいずれかの部分がアセンブリー言語で書かれている場合には、インテル・アーキテクチャーの命令に更新します基本アセンブリー命令 – インテル® 64 および IA-32 アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアルを使用して、基本アセンブリー命令を手動で更新します。 N.A.Software*/PowerPC*/AltiVec* - インテル®/SSE 変換ツールを使用して、ベクター指向コードを変換します。 Vector Signal Image Processing Library (VSIPL) – これは、信号および画像処理アプリケーション用の効率的な計算ミドルウェアです。VSIPL は、組み込み機器向け信号および画像処理ソフトウェア / ハードウェア・ベンダーのオープンスタンダードです。ハードウェア実装の詳細を抽象化するので、ソフトウェアを書き換えることなく、アプリケーションはプロセッサーの種類や世代を越えて移植できます。このツールは VSIPL ライブラリー、または変換を要するインハウス・ライブラリー用のプレーン C 版、C-VSIPL として提供されます。N.A.Software もカスタム・インハウス DSP ライブラリーをインテル・アーキテクチャーに移植します。 AltiVec.h include file for Intel® architecture – これは PPC AltiVec.h と同じですが、AltiVec ではなくインテル® SSE 命令セットを対象にしています。 このアプリケーションの DSP コードは変更ありません。 AltiVec assembler to Intel® assembler-compiler – このツールは、PPC AltiVec アセンブラーの比較的小さいブロックを C コードに変換し、これにより、SSE アセンブラー・コードにコンパイルできます。このツールは現在、開発中です。 ソフトウェアはプロセッサーのメモリー・アーキテクチャーを抽象化しますか?はい – コードはエンディアン・ニュートラルです。変更は必要ありません。 いいえ – コードはリトルエンディアン・メモリー・アーキテクチャーに更新する必要があります。手動でコードのエンディアンネスの差分を更新します。必要な変更には、インテルのエンディアンネスに関するホワイトペーパーを参照してください。 表 1. PPC とインテル® ハードウェア・アーキテクチャーの違い
|
||||||||||||||||||||||||||
手順 3 – 1 つのインテル・アーキテクチャー・コア上でパフォーマンスにコードを最適化する
|
最終製品がマルチコア・アーキテクチャーで動作するとしても、パフォーマンス・チューニングの手法では、まずシリアルコードをシリアル・パフォーマンスに最適化する必要があります。 トップダウンの閉ループ・パフォーマンス手法を使用します。 該当する場合は、適切なインテル® ソフトウェア開発製品を使用します。 コード・パフォーマンスを解析しますインテル® VTune™ パフォーマンス・アナライザーを使用して、利用可能なコア間で処理が分散されるコードのホットスポットを正確に特定します。 インテル® スレッド・プロファイラーを使用してスレッドの不均衡を特定します。 代わるものを生成してコードの変更を実装しますインテル® C++ コンパイラーを使用します。機能を選択して、プロファイルに基づく最適化 (PGO) を使用した高度な最適化、実行可能なサイズ、消費電力を実装します。 インテル® パフォーマンス・ライブラリーを使用して、インテル・アーキテクチャーに高度に最適化された各種 API でパフォーマンスを高めます。 関数には、ビデオ、画像処理、圧縮、暗号化、オーディオ、音声認識、信号処理の関数と、デジタルメディアおよびデータ処理アプリケーション用のコーデック・コンポーネントの関数があります。 コードをデバッグしますインテル® スレッド・チェッカーを使用して、データレースやデッドロック状態などのスレッド化のバグを特定します。 オペレーティング・システム・ベンダー (OSV) も、ソフトウェア開発ツールセットを提供しているはずです。OSV に利用可能なツールを確認してください。 ハードウェアレベルでの低レベルデバッグや、高レベルデバッガーがタイミングを重視するコードに干渉する可能性がある場合には、オンチップ・デバッグ・ツール (JTAG) を使用します。 |
手順 4 – マルチコア・ソフトウェア設計のアップデートを適用する
|
インテル® マルチコア・プロセッサーは、インテル® Core™ マイクロアーキテクチャーをベースにしています。 マルチコアの恩恵を得る方法はいくつかあります。PPC の移行は、シリアルコード・ベースから始まる可能性が最も高いでしょう。したがって、対象となるソフトウェア設計では移行要件を満たせるソリューションを見極める必要があります。 SMP (Symmetric Multiprocessing) は、アプリケーションのパフォーマンスを高めることができ、プロセッサーの数とともに拡張するように設計することができます。 注: SMP では、コードで並列化の機会を特定するための解析と、マルチスレッド化を採用して並列化を導入するためのソースの書き換えが必要になります。CPU に負荷がかかるコードについては、SMP やマルチスレッド化を用いて並列処理用に再設計するのは困難なので、AMP (Asymmetric Multiprocessing) が代替ソリューションとなります。 AMP、SMP、仮想化の詳細については、ホワイトペーパー:PowerPC* からインテル® アーキテクチャーへの移行 - パブリックを参照してください。 アプリケーションに適したマルチコア設計を選択しますAMP – 移行要件として、アプリケーションやオペレーティング・システムに変更を加えられないということであれば、AMP を選択します。 SMP – 1 つのオペレーティング・システムを動かし、すべてのコアを同等のプロセシング・リソースとして使用し、アプリケーションの並列処理を実現して SMP システムの恩恵を受けられる場合には、SMP を選択します。SMP アフィニティーは、特定のタスクを特定のコアにピニングすることでデータの局所性を高め、マルチプロセッサー・システムにおけるキャッシュのヒット率を引き上げる場合があります。 仮想化 – システム統合、OS コロケーションのほか、セキュリティー、サービス品質 (QoS)、高可用性 (HA)、負荷分散といった機能によるさらなる効果を求める場合は、仮想化を選択します。 |
手順 5 – マルチコアのインテル・アーキテクチャー・パフォーマンスにソフトウェアを最適化する
|
設計が SMP であっても AMP であっても、マルチコア・ソフトウェアの設計には専用のソフトウェア開発ツールが必要です。 SMP では、ツールを用いることで、コードに並列化を特定・実装し、レース状態、デッドロック、スレッド負荷の不均衡といったスレッド化の問題を正確に特定することができます。複数のコアで複数のプロセッサーやスレッドを正しく効率的に同時実行することを目標とする場合を除いて、チューニング方法はユニプロセッサーと同じです。マルチコア・ツールを用いることで、並列化を実装し、並列化されたコードのチューニングやデバッグを実行することができます。 トップダウンの閉ループ・パフォーマンス手法を使用します。 該当する場合は、以下のインテル・ソフトウェア開発製品を使用します。 インテル® VTune™ パフォーマンス・アナライザー – このツールは、利用可能なコア間で処理が分散されるコードのホットスポットを正確に特定します。 Intel® C++ コンパイラー – マルチコア機能には、OpenMP や自動並列があります。 インテル® パフォーマンス・ライブラリー – インテル・アーキテクチャー・マルチコアに高度に最適化されたパフォーマンス・スレッド API により、並列化が向上します。 インテル® スレッド化ツール – インテル® スレッド・ビルディング・ブロックを使用してスレッドを実装します。インテル® スレッドチェッカーでスレッドのデバッグを行います。インテル® スレッド・プロファイラーにより、ワークロードの不均衡やスレッドのロック競合を特定します。 OSV も、マルチコア開発ツールセットを提供しているはずです。OSV に利用可能なツールを確認してください。 ハードウェアレベルでの低レベルデバッグや、高レベルデバッガーがタイミングを重視するコードに干渉する可能性がある場合には、オンチップ・デバッグ・ツール (JTAG) を使用します。 |
インテルへのお問い合わせ
-
ご質問サポートをご利用ください。サポートオプション >

-
設計支援 >組み込み機器プロジェクトに関して、インテルの担当者からの連絡を希望。
-
ライブサポート
英語でのチャットは、平日に終日受付
簡体字中国語による受付可
平日: 9 AM ~ 5 PM 北京時間
