![]() |
[EN]: は、アメリカのサイトへのジャンプを意味しています。 |
アカウント・インフォ
![]()
|
April 2009|
|
LatticeMico32 システムがLatticeMico32ベース・プラットフォームの "インラインメモリ" をサポートLatticeMico32システムのMicoSystemBuilderツールを使用して作成されたシステム・プラットフォームに、インラインメモリを内蔵可能に LatticeMico32 (CPU) を、WISHBONEインターフェイスではなく、LatticeMico32の専用プロセッサ・ローカルバスを通じて、オンチップ・メモリ(EBR)に接続できるようになりました。このようにCPUに高速接続されたメモリはインラインメモリと呼ばれます。図1に示すように、プロセッサ・ローカルバスはインラインメモリとの間に高速なポイントツーポイント・リンクを実現し、LatticeMico32の命令(およびデータ)ポートを提供します。 インラインメモリには次の2種類があります。
![]() 図 1
LatticeMico32システムビルダで作られた設計では、すべてのコンポーネント(LatticeMico32を含む)がシステムWISHBONEバスに接続されます。このアーキテクチャには、LatticeMico32の性能を低下させる2つの要因があります。
インラインメモリを使用すると、LatticeMico32が必要とするアプリケーション・プログラムとデータの両方に対して、WISHBONEバスでEBRを使用した場合の前述の欠点が解消されます。LatticeMico32とインラインメモリとの間の専用ポイントツーポイント・リンクによって、リソース競合が確実に防止されます。そのためLatticeMico32は、システムWISHBONEバス上に実行中のトランザクションが存在していても、インラインメモリへのアクセスを開始でき、LatticeMico32の性能がシステム上の問題による影響を受けなくなります。また、このポイントツーポイント・リンクはLatticeMico32と密結合されているため、シングルサイクル・アクセスが可能です。 インラインメモリの主な特長
インラインメモリの適用範囲 インラインメモリを使用可能な設計の代表は、ソフトウェア全体がシステムWISHBONEバス上のオンチップ・メモリに格納されているものです。このような設計では、WISHBONEベースのオンチップ・メモリをインラインメモリに置換すると、EBRリソースを浪費することなく、アプリケーションの性能が高まります。その他の例としては、LatticeMico32ベースの設計のソフトウェア・サイズが大きく、DRAMやSRAMなどのオフチップ・メモリが必要になる場合があります。そうした設計ではインラインメモリも使用可能ですが、サイズに制限があるため、アプリケーションのタイム・クリティカルな部分のみをインラインメモリに格納するとよいでしょう。その一例としては、LatticeMico32上で実行されるリアルタイム・オペレーティング・システム (RTOS)があります。RTOSの特長の1つは、割り込みなど一部のイベントはタイミングが重要で、可能な限り高速に処理する必要があることです。そのような実装では、ソフトウェアのタイム・クリティカルなイベントを処理する部分をインラインメモリに割り当てると、応答時間が保証されます。 LatticeMico32キャッシュを持たないWISHBONEベースのメモリに対するパフォーマンス上の利点LatticeMico32とインラインメモリを直接接続すると、LatticeMico32でシングルサイクルの読み書きアクセスが可能になるという利点があります。図2は、インラインメモリを使用した場合と、WISHBONEインターフェイスでLatticeMico32に接続されたオンチップメモリ(EBR)を使用した場合の、サイクルレベルでの性能上の利点の分析を示しています。図2では、インラインメモリとWISHBONEベースのオンチップEBRが、LatticeMico32からの読み取りアクセスに要するサイクル数を比較しています。インラインメモリが起動した読み取りアクセスは、その次のサイクルで完了しますが、WISHBONEベースのEBRが起動した読み取りアクセスには4サイクルかかっています。LatticeMico32が起動した書き込みアクセスでも、同様の動作が見られます。したがって、プログラム・コードやデータをインラインメモリに格納すると、WISHBONEベースのメモリに比べて3倍以上の高速化を実現できます。
![]() 図 2
LatticeMico32キャッシュを持つWISHBONEベースのメモリに対する性能の利点LatticeMico32に命令およびデータキャッシュを構成し、WISHBONEベースのメモリによるパフォーマンスへの影響を軽減することはよく行われます。キャッシュを使用すると、理論上はシングルサイクル・アクセスが可能になります。ただし実際には、シングルサイクルのキャッシュアクセスが行えず、インラインメモリの方が性能が向上することがよくあります。次のシナリオがあります。
インラインメモリを持つLatticeMico32デザインの作成 インラインメモリは、MicoSystemBuilder(MSB)のLatticeMico32 GUIを使用して、自動的に実装することができます。実装されると、設計内の他のメモリ・コンポーネントと同様に認識されます。インラインメモリのサイズは、FPGA上で利用可能なEBRリソースの数のみに制限されます。このメモリは、4GB(32ビットアドレス可能な範囲)内の任意のアドレスに配置でき、設計者がアドレスを決定することも、MSBで自動的に配置することもできます。 ソフトウェア開発者にとって、インラインメモリは設計内の他のメモリ・コンポーネントと同じであり、LatticeMico32 C/C++ SPEを使用してインラインメモリに、アプリケーション全体を自動的に割り当てることも、デフォルトのアプリケーション部分(.boot、.text、.rodata、.data、.bss)を割り当てることもできます。このプロセスは、ソフトウェアを他のWISHBONEベースのメモリに割り当てるために使用するプロセスと同一です。それに対して、前述のようにインラインメモリのアプリケーションや用途の代表例は、ソフトウェアコードとデータのタイム・クリティカルな部分のみをインラインメモリに割り当てることです。これを実現するためには、ソフトウェア開発者がソフトウェアコードとデータのタイム・クリティカルな部分を確認し、ユーザ定義のセクションに分離してから、それをユーザ定義のリンカスクリプトでインラインメモリに割り当てる必要があります。このようなユーザ定義のセクションとリンカスクリプトの作成は、オープンソース・コミュニティでは一般的であり、広く使用されています。ソフトウェア開発者に便利なよう、このプロセスはLatticeMico32 Software Developer User Guideに詳しくまとめてあります(コード例もあります)。 |