FPGA

21Q1.04A

HPC アプリを FPGA 上で加速! (1)

みなさん、こんにちは。広島市立大学の窪田と申します。今回、ACRi ブログを執筆する機会をいただきましたので、高位合成ツールである Xilinx Vitis を使って連立一次方程式の求解法である Conjugate Gradient (CG) 法を FPGA で動かす例題を使って、ソフトウェアの FPGA への移植について説明します。 はじめに 私自身は、主に HPC 向けのソフトウェアや並列化コンパイラを研究、開発してきたのですが、最近は FPGA を使った処理の高速化にも手を広...
21Q1.03A

ACRi ルームの FPGA で○×ゲームを作って遊んでみよう (1)

ACRi ルームではリモートで FPGA を利用できる環境が提供されています。セットアップ済みの開発ツールを使ってすぐに FPGA 開発をはじめることができます。…と言われても、さて何からはじめてみよう、という人もいるかもしれません。身近な問題から FPGA に向くものを選んで実装するというのは (残念ながら) 簡単ではないので仕方ないことだと思います。 そこで、楽しく FPGA 開発をはじめてみる題材としてゲームを作ってみるのはいかがでしょう。この連載では、FPGA を使った○×ゲーム...
21Q1.02B

FPGA for HPC:宇宙物理アプリケーションをマルチ FPGA で高速化 (1)

どうも皆さんお久しぶりです。筑波大学計算科学研究センター所属の小林諒平です。 昨年はスーパーコンピュータでも使われ始めた FPGA という記事を執筆させて頂き、そして今年また本ブログにて記事を執筆させて頂く機会を賜りましたので、今回は計算科学研究センター (以下、当センター) にて FPGA をどのように活用しているのかについて紹介していきたいと思います。 このコースは、ACRiQ1.04 と同じように FPGA やアダプティブコンピューティングの研究論文をその著者が紹介するシリー...
20Q4.02B

FPGA を対象とした非同期式回路の設計 (5)

皆さん、こんにちは。今回は、前回までに合成した非同期式回路の機能検証と評価を説明していきます。前回をご覧になっていない場合は、初めにそちらをご覧下さい。 設計フローの続き 図1は、前々回示した設計フローです。 図1 設計フロー 前回の終了時点で、タイミング違反がないことを確認しました。今回は、その段階での Quartus Prime プロジェクトを想定して、説明をしていきます。 機能検証 ここでは、第2回で解説した RTL シミュレーションと同じ...
20Q4.04A

BRAM 達人への道 (4) FIFO に使ってみる-非同期型2

前回からの続き 第3回では、非同期型の FIFO について2つの設計例を示しましたが、いずれも特定の条件下では有効に機能するが、万能ではない結果となってしまいました。今回はこれに対し改善を試みます。 アドレス交換法3 非常に安直な考え方ですが、前回説明のアドレス交換法1と2の両方の良いとこ取りという意味で、ハイブリッド型を考えてみます。アドレス交換法1と2とで異なるタイミングにて、一方のクロック系から他方のクロック系にアドレスを渡しあうわけですが、アドレス交換法1と2のタイミ...
20Q4.02B

FPGA を対象とした非同期式回路の設計 (4)

皆さん、こんにちは。前回までに、非同期式回路の合成について説明をしました。今回は、タイミング検証や遅延調整など残りの部分について説明したいと思います。前回を読んでいない方は、まずはそちらをご覧ください。 タイミング制約 設計フローの続きを解説する前に、タイミング制約を説明します。今回使用したモデルでは、セットアップ制約、ホールド制約、およびパルス幅制約の3種類のタイミング制約を満足する必要があります。 注意:今回の回路モデルは、直線的な処理をしているため、これらの...
20Q4.04A

BRAM 達人への道 (3) FIFO に使ってみる-非同期型1

はじめに BRAM アプリケーションとして FIFO を扱っていますが、第2回では同期型 (書き込み側のクロックと読み出し側のクロックが同一の場合) を扱いました。今回は非同期型 (書き込み側のクロックと読み出し側のクロックが独立な場合) を扱います。 どうしたら非同期型の FIFO ができるか まず、前回の基本構成を図3-1に示します。 図3-1 同期型 FIFO のブロック図 書き込みアドレスカウンタ、読み出しアドレスカウンタは独立したクロックで動作し、互いに...
20Q4.03A

FPGA 使え、って社長に言われた。さぁ、どうする? (3)

前回までのお話  FPGA を組み込んだ新製品開発に向けて調査を始めた Y 君。そもそも FPGA って何だろう、というところから見直そうと大学時代の研究室を訪問。大学時代の恩師に相談するも、「満足度の高い製品開発が重要であり FPGA を使うことが重要ではない」とそもそも論から諭される。それでも、と FPGA についていくつか教わり、一旦会社に戻ることにした。(前回の話はこちら) 質問する際は事前準備をしっかりと Y 君:ただいま、帰りました。 U 氏:おー、帰ってき...
20Q4.02B

FPGA を対象とした非同期式回路の設計 (3)

皆さん、こんにちは。今回は、前回 (FPGA を対象とした非同期式回路の設計 (2)) で準備した回路モデルを Intel の FPGA を対象に合成していきます。前回を読んでいない方は、最初に前回を確認してください。 また、Quartus Prime が必要になりますので、インストールしていない方は Quartus Prime Lite (無償版) を準備してください。 設計フロー 図1は、今回用いる設計フローです。今回は合成に必要となるものと合成までを解説...
20Q4.01A

Vitis を用いたアクセラレータの開発 (3) Vitis Target Platform SW 構築編

「Vitis Target Platform HW構築編」の記事で、Vivado を使った HW Component 構築方法について紹介しました。3回目となる今回は PetaLinux 2019.2 を利用して Vitis Target Platform の作成 Software 編の Flow のご紹介をいたします。 SW Component の Flow まずは前回の復習ですが、Vitis での Acceleration Application の Tool Flow は以下...
20Q4.04A

BRAM 達人への道 (2) FIFO に使ってみる-同期型

本連載は今回から、BRAM を用いたアプリケーションの一つとして、FIFO を扱うことにします。 はじめに FIFO は First In First Out の略で、最初に書き込まれたデータが最初に読み出せる→データが書き込んだ順に読み出せる記憶機能、と考えることができます。何らかのデータを扱うアプリケーションにおいては、非常に便利な構成要素で、その記憶素子として BRAM を使うととても便利です。FIFO の記憶容量として RAMB36 が大きすぎてもったいない場合もありますが...
20Q4.03A

FPGA 使え、って社長に言われた。さぁ、どうする? (2)

前回までのお話  FPGA 事業部の立ち上げに伴い課長に昇進。うれしくもあるが FPGA について余り知らない Y 君。FPGA についてネットで調べると「わからないことはわからない」ということがわかったぐらい。ならば、餅は餅屋。FPGA に関する知識と希望を求めて、大学時代の研究室を訪れることにした。(前回の話はこちら) FPGA は神チップ? Y 君:FPGA について誤解がある、というお話ですが一体何が誤解なのでしょうか。 先生:ん~、やっぱり、次回までの宿題、に...
20Q4.02B

FPGA を対象とした非同期式回路の設計 (2)

皆さんこんにちは。今回は、設計の対象となる回路モデルを紹介していきたいと思います。今回は、前回紹介したFPGA を対象とした非同期式回路の設計 (1) で取り上げた制御回路モデルを用いますので、まだ読んでない方はそちらを先に読んでいただければと思います。 対象モデル (同期式回路) 最終的に設計した後、どのくらいの性能になるのかを確認するために、今回は同期式回路の設計から始めていきます。図1は、対象となる回路モデルです。算術演算を5段パイプラインで実現しています。 ...
20Q4.04A

BRAM 達人への道 (1) 構造と基本的な使い方

FPGA を用いて AI のアクセラレーションのような高度な処理を行うことが当たり前の時代になりました。しかし、FPGA を利用する全てのエンジニアがそうしたアプリケーションに携わっているわけではなく、初心者、初級者レベルのエンジニアが多数おられるということも事実ではないかと思います。 この記事では、現場レベルで使えるちょっとした工夫や考え方のヒントを紹介し、初級者のレベルアップや、現場の方々の手助けにつながればと考えています。 はじめに 題材としては、FPGA の基本要素と...
20Q4.03A

FPGA 使え、って社長に言われた。さぁ、どうする? (1)

 Y 君は大学を卒業し、1 回の転職を経て、とある通信系中堅企業の開発事業部で日々エンジニアとして働いている。そんな Y 君を襲った出来事を通して FPGA について見ていきましょう。 FPGA 事業部の立ち上げ。でも、ちょっと待てよ。  誰に感化されたのか、社長の年頭挨拶は冒頭より「次の時代は FPGA」、そして終わりには「新規事業部をこの春より立ち上げる」だった。同僚と自分の机に戻る道すがら社長に呼ばれた Y 君。社長室で受けた内示は、4月より FPGA 事業部の課長、とのこと...
20Q4.02B

FPGA を対象とした非同期式回路の設計 (1)

皆さん、こんにちは。これから5回にかけて、FPGA に非同期式回路を実現するための方法を解説していきたいと思います。以前、こちらのブログでも紹介があった「非同期式回路と FPGA ~ 作ってみる編」(1) から (5) と被るところもありますので、ご了承いただきたいと思います。 内容を理解する上で、「非同期式回路と FPGA ~ 作ってみる編」を先に見ておいた方が良いです。あまり冗長にしないためにも、今回は非同期式回路とはどういったものかなどの説明は割愛させていただこうと思います。以下に...
20Q4.01A

Vitis を用いたアクセラレータの開発 (1) Vitisとは?

はじめまして。 AVNET 仲見です。ここでは XILINX 社が Release している統合開発環境の Vitis という Tool の概要、構築するための Flow についてご紹介いたします。 XILINX 社の Tool はどんなものがあるの? まずはじめに、XILINX 社が現在 Release している Tool について Hardware、Software のそれぞれの開発では以下が用意されています。 Hardware 開発 Vivado Design S...
20Q3.02A

高位合成で加速するアクセラレータ開発 (5) ~ 高位合成と C ベース設計 3章

高位合成と Alveo を使い、ビジネスとして成立するレベルのアクセラレータを短期間で開発するために、開発フロー全体の中に C ベース設計をどう位置付ければいいのか、考えていきます。
20Q3.07A

FPGA で作る暗号は危険? (5)

みなさんこんにちは。本シリーズ「FPGA で作る暗号は危険 ?」では、FPGA 内で暗号機能を実現する方法とその危険性を解説しています。今回は前回取り上げた公開鍵暗号に対するサイドチャネル攻撃を解説します。また、本シリーズの最終回になりますので、暗号以外も含めたセキュリティについても少し紹介します。 公開鍵暗号に対するサイドチャネル攻撃 第3回で紹介した AES 暗号に対するサイドチャネル攻撃と異なり、公開鍵暗号に対するサイドチャネル攻撃は簡単かつ短時間で行うことができる危険な攻撃...
20Q3.06B

FPGA と予測不可能性と乱数 (5)

FPGA 向けの真性乱数生成器 (TRNG) の設計法に関するコースも今回が最終回です.今回も、SR ラッチを禁止状態から保持状態へと移行させた時の挙動 (メタスタビリティ) を利用した TRNG を扱います。前回と異なるのは、最終的な出力ではなくメタスタビリティが解消されるまでの時間 (発振の回数) に注目する点です。 なお、この記事で紹介する TC-TERO (Three-path Configurable TERO) 型 TRNG に関する論文 は、FPGA 関連の世界最大級の国...
タイトルとURLをコピーしました