Nios II カスタム・インストラクションによるキャスト(型変換)の高速化

Similar documents
アルテラ USB-Blastre ドライバのインストール方法 for Windows OS

複数の Nios II を構成する際の注意事項

FPGA 外部のメモリをアバロン・MM・インタフェースへ接続する方法

Nios II Flash Programmer ユーザ・ガイド

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

オンチップ・メモリ クイック・ガイド for Cyclone III

Quartus II はじめてガイド - プロジェクトの作成方法

Microsoft Word - ALT0982_program_epcs_by_niosii_v10.doc

Nios II 簡易シミュレーション

Quartus II Web Edition インストール・ガイド

Quartus II クイック・スタート・ガイド

ModelSim-Altera - RTL シミュレーションの方法

Quartus II はじめてガイド - プロジェクトの作成方法

Quartus II はじめてガイド - デバイス・プログラミング方法

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

Nios II - Vectored Interrupt Controller の実装

Nios II SBT Flash Programmer ユーザ・ガイド

Quartus II はじめてガイド - Convert Programming File の使い方

ModelSim-Altera Edition インストール & ライセンスセットアップ Linux ver.11

PLL クイック・ガイド for Cyclone III

Quartus II - デバイスの未使用ピンの状態とその処理

Quartus II クイック・スタートガイド

Quartus Prime はじめてガイド - デバイス・プログラミングの方法

Nios II ハードウェア・チュートリアル

PCI-Express ハード IP を使用した DMA の実現 for Cyclone V GT FPGA 開発キット(ソフトウェア編)

Nios II 簡易チュートリアル

Quartus Prime - プログラミング・ファイルの生成や変換(Convert Programming Files)

インテル(R) Visual Fortran コンパイラ 10.0

Nios II 簡易チュートリアル

WES7/WE8SシンクライアントVMwareHorizonClientアップデート手順書

WES7シンクライアントIE11アップデート手順書

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

簡単設定でスマホをブロック!仮想化時代の情報漏えい対策に最適なツール

プロセッサ・アーキテクチャ

FPGAメモリおよび定数のインシステム・アップデート

HLS はじめてガイド - 簡易チュートリアル

AN1609 GNUコンパイラ導入ガイド

MS104-SH2 USBドライバ(仮想COMポートドライバ)の不具合について

Nios® II HAL API を使用したソフトウェア・サンプル集 「Modular Scatter-Gather DMA Core」

WindowsシンクライアントでPCと同じ組み合わせキーを利用する方法

HP Device Manager4.7インストール・アップデート手順書

目次 1. 概要 動作環境

Microsoft PowerPoint - kougi2.ppt

DWR-S01D Updater 取扱説明書 発行日 :2011/2/28

Oracle ESB - レッスン02: CustomerDataバッチCSVファイル・アダプタ

Quartus II はじめてガイド - Device & Pin Options 設定方法

Microsoft Word - DWR-S01D_Updater_取扱説明書_120514A.doc

Microsoft Word - Android_実習環境

Quartus II はじめてガイド - EDA ツールの設定方法

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

AN1526 RX開発環境の使用方法(CS+、Renesas Flash Programmer)

RW-4040 導入説明書 Windows 7 用 2017 年 7 月 シャープ株式会社

Visual DSP++ install and tutorial

ご注意 1) 本書の内容 およびプログラムの一部 または全部を当社に無断で転載 複製することは禁止されております 2) 本書 およびプログラムに関して将来予告なしに変更することがあります 3) プログラムの機能向上のため 本書の内容と実際の画面 操作が異なってしまう可能性があります この場合には 実

発環境を準備しよう2 章開Eclipseをインストールしようそれでは Eclipseをセットアップしましょう Eclipseは Eclipse Foundationのサイトからダウンロードできます ダウンロードのページを開くと いく

Quartus II はじめてガイド - EDA ツールの設定方法

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

Visual DSP++ install and tutorial

A 既製のプロジェクトがある場合

Oracle ESB レッスン03: ESB CustomerData SOAP

Ver.70 改版履歴 版数 日付 内容 担当 V /09/5 初版発行 STS V /0/8 証明書バックアップ作成とインストール手順追加 STS V /0/7 文言と画面修正 STS V..0 0//6 Firefox バージョンの変更 STS V..40

Microsoft Word - FactoryActivationManagerQuickManualR00

ModelSim - アルテラ・シミュレーション・ライブラリ作成および登録方法

講習No.12

DWT-B01 Updater 取扱説明書 発行日 :2011/3/23

Quartus II はじめてガイド - 回路図エディタの使い方

FTDI USB-Serial Converter デバイスドライバのインストール(Rev.1.01)

はじめに 京セラ製スマートフォンを指定の microusb ケーブル ( 別売 ) またはこれと共通仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をインストールしてい

FA/LAインストールガイド(トライアル版)

プログラミング実習I

HP ThinUpdateを使用したWESシンクライアントイメージリストア手順書

1 検証概要 目的及びテスト方法 1.1 検証概要 Micro Focus Server Express 5.1 J の Enterprise Server が提供する J2EE Connector 機能は 多くの J2EE 準拠アプリケーションサーバーについて動作検証がなされています 本報告書は

AN424 Modbus/TCP クイックスタートガイド CIE-H14

Application Note Application Note No. ESC-APN 文書番号 : ESC-APN Tcl link library インストールガイド はじめに Tcl link library インストールガイド ( 以下 本書 ) では Act

Intuit QuickBooks との統合

Ver.50 改版履歴 版数 日付 内容 担当 V..00 0//6 初版発行 STS V..0 03/4/7 サポート環境の追加 STS V..0 06/9/5 画面の修正 STS V /4/ 画面の修正 STS V // 文言と画面修正 FireFox のバージョン変更に

はじめに URBANO PROGRESSO を microusb ケーブル 01 ( 別売 ) またはこれと共通の仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をイン

PowerPoint Presentation

目次 1. HLA Fusion 3.0 がインストール可能な環境 HLA Fusion 3.0 のインストール HLA Fusion 3.4 のインストール 初期設定用データベース接続 ( 初めての方のみ ) 既存データベースのUpg

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows : インストール・ガイド

1. はじめに 本書は スプリット演算器 MFS2 用コンフィギュレータソフトウェア の取扱方法 操作手順 注意事項などを説明したものです Windows の操作や用語を理解している方を前提にしています Windows の操作や用語については それぞれのマニュアルを参照してください 1.1. MFS

M7_DWG.doc

Maser - User Operation Manual

Application Note Application Note No. ESC-APN Document No.: ESC-APN adviceluna Linux デバッグ手順 (MIPS コア編 ) はじめに adviceluna Linux デバッグ手順 ( 以

Windows インタフェースモジュール (ver1.451) の更新方法 2017 年 12 月 21 日 株式会社ハイバーテック 本メール添付インストーラを使用して,Windows インタフェースモジュールを更新 ( インストール ) する方法を記載します. 本メール添付ファイル (ver145

Microsoft Word - Android開発環境構築.doc

Windows Layout SDK プログラミング マニュアル

HP USB Port Managerご紹介資料 -シンクライアント

ここをクリックしてダウンロードする ダウンロードした zip ファイルを解凍する とインストーラが現れます インストーラを 起動してインストールを開始しましょう イ ンストーラの [ Next > ] ボタンを押してい けばインストールできます ライセンスの画面では I accept the ter

Microsoft Word - nvsi_100207jp_quantumi40.doc

機能仕様書フォーマット

foobar2000

Cプログラミング1(再) 第2回

改訂履歴 版番号改訂日改訂者改訂内容 年 2 月 2 日ネットワールド 新規 I

CrossCore Embedded Studio install and tutorial

Microsoft iSCSI Software Targetを使用したクラスタへの共有ディスク・リソースの提供

Microsoft Word - AW-SF100導入手順書(スタンドアローン版)_ doc

始める スタート > 全てのプログラム > Cypress > PSoC Creator 2.0 > PSoC Creator 2.0 をクリックします プロジェクトを作成する / 開く Start Page の "Create New Project" をクリックし 要求されたプロジェクト情報を入

HP Elitex3 評価ガイド シン クライアント 編

Quartus II はじめてガイド - プロジェクトの作成方法

Transcription:

ver. 9.1 2009 年 12 月 1. はじめに Nios II にオプションで実装できる浮動小数演算カスタム インストラクションは 浮動小数四則演算はサポートしているものの 整数から浮動小数にキャスト ( 型変換 ) する機能やその逆の機能は備えていません この資料では 単精度浮動小数型と整数型の変換を簡単に Nios II のカスタム インストラクションに実装する方法を紹介しています なお この手法を応用することで MegaCore Function で用意されている平方根 (ALTFP_SQRT) や対数 (ALTFP_LOG) 指数関数 (ALTFP_EXP) なども実装することができます 2. 対象となるバージョン Quartus II Version 9.1 Nios II Integrated Development Environment Version 9.1 Page 1 of 14 Altima Corporation

3. 操作方法 3-1. ベース プロジェクトの作成 Nios II が動作する Quartus II プロジェクトをあらかじめ用意してください 3-2. MegaWizard Plug-In Manager を使用した HDL ソース ファイルの生成 1 Quartus II の Tools メニュー MegaWizard Plug-In Manager を選択し 表示された MegaWizard Plug-In Manager [page 1] で Create a new custom megafunction variation を指定し Next をクリックします 2 MegaWizard Plug-In Manager [page 2a] が表示されたら Arithmetic を展開し ALTFP_CONVERT を選択します その後 生成する HDL タイプ ファイル パスおよびファイル名を設定し Next をクリックします ここでは浮動小数から整数に変換する HDL を ftoi.v として生成します ver. 1.0 2009 年 12 月 Page 2 of 14 Altima Corporation

3 MegaWizard Plug-In Manager [page 3 of 7] の ALTFP_CONVERT のダイアログが表示されたら パラメータを下記の設定にして Finish をクリックします Operation mode : A floating point to an integer Integer data : 32bit Input floating point Settings : Single precision(32bit) Output floating point Settings : 設定無効 ver. 1.0 2009 年 12 月 Page 3 of 14 Altima Corporation

Optional inputs : Create a clock enable port 4 同様に 整数から浮動小数に変換する HDL を itof.v として生成します Operation mode : An integer to a floating point Integer data : 32bit ver. 1.0 2009 年 12 月 Page 4 of 14 Altima Corporation

Input floating point Settings : 設定無効 Output floating point Settings : Single precision(32bit) Optional inputs : Create a clock enable port ver. 1.0 2009 年 12 月 Page 5 of 14 Altima Corporation

3-3. SOPC Builder でのカスタム インストラクションのコンポーネントの登録 1 Quartus II から SOPC Builder を起動し File メニュー New Component を選択します 2 Component Editor で HDL Files タブを選択し Add をクリック後 先ほど生成した ftoi.v を選択します HDL に問題が無ければ Analyzing < ファイル名 > Completed ダイアログ ボックスが表示されますので Close をクリックして閉じてください ver. 1.0 2009 年 12 月 Page 6 of 14 Altima Corporation

3 Interfaces タブを開いて Custom Instruction Slave を選択し Clock Cycles に 7 Operands に 1 を設定します Clock Cycles はコアの実行から結果が出力されるまでのクロック数です ALTFP_CONVERT の Pipeline は 6 ですので ( 詳細は Floating Point Converter (ALTFP_CONVERT) Megafunction User Guide を参照してください ) +1 した 7 を設定します Operands は引数の数となりますので 入力値が一つの ALTFP_CONVERT は 1 を設定します ver. 1.0 2009 年 12 月 Page 7 of 14 Altima Corporation

4 Signals タブを選択し clk_en / clock / data / result を下記のように設定します 5 再び Interfaces タブに戻り Remove interfaces With No Signals ボタンが有効になっていればクリックします こうすることで 割り当ての無いインタフェースを削除することができます 6 Component Wizard タブを選択し Class Name や Display Name Group などを設定後 Finish ボタンをクリックして閉じます 7 同様に itof.v もカスタム インストラクションのコンポーネントとして登録します ver. 1.0 2009 年 12 月 Page 8 of 14 Altima Corporation

8 SOPC Builder の Nios II Processor を開き Custom Instructions タブを選択します 先ほどの Component Editor で追加した ftoi と itof が左側のリストに表示されますので 選択して Add をクリックして右側のリストに追加します 9 Finish ボタンをクリックして カスタム インストラクションの登録は完了です SOPC Builder において Generate 実行をし その後 Quartus II でコンパイルしてください ver. 1.0 2009 年 12 月 Page 9 of 14 Altima Corporation

3-4. Nios II IDE (Integrated Development Environment) でのカスタム インストラクションの実装 1 Nios II IDE を起動後 新規にプロジェクトを生成し Build します 2 system.h を確認して 登録したカスタム インストラクションのマクロが存在するか確認します : : /* * custom instruction macros * */ #define ALT_CI_FTOI_INST_N 0x00000000 #define ALT_CI_FTOI_INST(A) builtin_custom_ini(alt_ci_ftoi_inst_n,(a)) #define ALT_CI_ITOF_INST_N 0x00000001 #define ALT_CI_ITOF_INST(A) builtin_custom_ini(alt_ci_itof_inst_n,(a)) : : FTOI( 浮動小数 整数変換 ) が 0 番 ITOF( 整数 浮動小数変換 ) が 1 番で登録されていることが分かります 3 動作を確認するため main 関数を下記のように記述して実行してください #include <stdio.h> #include "system.h" int main() { int n = 0; float f = 1234.5678; n = builtin_custom_inf(alt_ci_ftoi_inst_n, f); printf("ftoi=%d n", n); f = builtin_custom_fni(alt_ci_itof_inst_n, n); printf("itof=%f n", f); } return 0; コンソールに ftoi=12345 itof=12345.0000000 と表示されれば正常に動作しています カスタム インストラクションのマクロは 引数と戻り値の型により下記のような記述が可能です builtin_custom_ < 戻り値の型 > n < 第一引数の型 >< 第二引数の型 >( カスタム インストラクション番号 引数 ) 例えば 戻り値が int 型 第一引数が単精度小数型 第二引数が整数型の場合 下記の記述になります builtin_custom_infi また 引数が一つしか無い場合には 最後の文字を省略し builtin_custom_inf 戻り値が無い場合には n の前の文字を省略します builtin_custom_nf 型 int float void * 記述 n f p ver. 1.0 2009 年 12 月 Page 10 of 14 Altima Corporation

4 続いて C 言語のキャスト記述でカスタム インストラクションが実行されるよう コンパイル フラグを設定します アプリケーション プロジェクトの Properties を開いて Compile Flags に -mcustom-fixsi=0 -mcustom-floatis=1 と設定します -mcustom-fixsi は浮動小数から整数への変換のためのカスタム コンポーネント (FTOI) の番号 (0) を指定し -mcustom-floatis は整数から浮動小数への変換のためのカスタム コンポーネント (ITOF) の番号 (1) を指定します 5 main 関数を下記のように変更して実行してください #include <stdio.h> #include "system.h" int main() { int n = 0; float f = 1234.5678; n = (int)f; printf("%d n", n); f = (float)n; printf("%f n", f); } return 0; 6 正常に動作していることが確認できたら カスタム インストラクションで動作しているかを確認するため Debug で起動します ver. 1.0 2009 年 12 月 Page 11 of 14 Altima Corporation

7 Debug 画面に切り替わったら Disassembly ウィンドウを確認してください 下記のように カスタム インストラクションが呼ばれるようになっていれば正常です ver. 1.0 2009 年 12 月 Page 12 of 14 Altima Corporation

4. 補足 4-1. 性能比較 単精度浮動小数による各種の演算を ソフトウェアとハードウェアで実行した際の動作クロックの比較です 検証は下記の構成で行っています Device : Cyclone III EP3C120F780C7 Processor core : Nios II/f 100MHz Instruction Memory : On-Chip RAM (Tightly Coupled instruction bus) Data Memory : On-Chip RAM (Tightly Coupled data bus) Optimize option : -O3 演算 ソフトウェア実行時 (us) カスタム インストラクション実装時 (us) 標準四則演算 型変換コア追加時 各演算コア追加時 + 3.400 0.130 0.130 0.130-3.632 0.120 0.120 0.120 * 3.551 0.140 0.140 0.140 / 5.536 0.370 0.370 0.370 (int) 0.953 0.974 0.090 0.090 (float) 2.811 2.853 0.090 0.090 sqrtf() 6.031 5.553 5.561 0.190 logf() 97.791 9.691 9.760 0.240 expf() 90.228 12.340 12.250 0.200 型変換をソフトウェアで実装した場合と比べ 整数型変換では 10 倍 浮動小数型変換では 31 倍の高速化が実現できています また 平方根 (sqrt) でも 31 倍 対数 (log) では 407 倍 指数関数 (exp) では 451 倍もの大幅な高速化が可能です なお 上記の計測結果はシステムの構成によって変動する場合がありますので 参考値としてお考えください ver. 1.0 2009 年 12 月 Page 13 of 14 Altima Corporation

弊社より資料を入手されましたお客様におかれましては 下記の使用上の注意を一読いただいた上でご使用ください 1. 本資料は非売品です 許可無く転売することや無断複製することを禁じます 2. 本資料は予告なく変更することがあります 3. 本資料の作成には万全を期していますが 万一ご不明な点や誤り 記載漏れなどお気づきの点がありましたら 弊社までご一報いただければ幸いです 4. 本資料で取り扱っている回路 技術 プログラムに関して運用した結果の影響については 責任を負いかねますのであらかじめご了承ください 5. 本資料は製品を利用する際の補助的な資料です 製品をご使用になる場合は 英語版の資料もあわせてご利用ください 横浜本社 222-8563 横浜市港区新横浜 1-5-5 マクニカ第二ビル TEL 045-476-2155 FAX 045-476-2156 大阪営業所 532-0003 大阪市淀川区宮原 3-4-30 ニッセイ新大阪ビル 17 階 TEL 06-6397-1053 FAX 06-6397-1054 名古屋営業所 460-0003 名古屋市中区錦 1-6-5 名古屋錦シティビル 7 階 TEL 052-202-1024 FAX 052-202-1025 宇都宮営業所 321-0953 宇都宮市東宿郷 4-2-24 センターズビル 7 階 TEL 028-637-4488 FAX 028-637-4489 ver. 1.0 2009 年 12 月 Page 14 of 14 Altima Corporation