FPGA

20Q3.04A

そもそも「FPGA」って何なんですか? (5)

前回までの説明で FPGA (小人さん) を動かすための仕組みについて大雑把な話をしてきました。小人さんは流れ作業で仕事をするので、データフローのような記述をするとちゃんと変換できます。しかし、プログラム言語からハードウェア記述言語に変換する高位合成ツールは、少し難しいことをしていました。さらに、配置配線ツールは時間が掛かります。さて、最終回である今回は、これまであいまいにしてきた小人さんの正体に迫っていきたいと思います。 CPU はなぜプログラムを実行できる? 第一回でも説明しま...
20Q3.03B

FPGA の高速シリアルトランシーバ (5)

この連載もついに最終回です。前回は Xilinx の Transceiver Wizard で Aurora 64B/66B から送られてくる初期化シーケンスを受信するところまで見てきました。今回は初期化シーケンスを最後まで進め、データを送受信するところまでシミュレーションしてみます。 今回はデータの送信機能は実装せず、Xilinx のコアからのデータを受信するだけにとどめますが、入出力インタフェイスやクロック周りなどをしっかり実装すれば合成可能な実装に応用することもできます。前回の記事...
20Q3.07A

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

みなさんこんにちは。本シリーズ「FPGA で作る暗号は危険 ?」では、FPGA 内で暗号機能を実現する方法とその危険性を解説していきます。 前回までは共通鍵暗号 (AES 暗号) を中心に FPGA への実装方法やサイドチャネル攻撃について解説しました。今回からは公開鍵暗号について触れていきます。 ただし、公開鍵暗号については具体的な暗号の実装方法というよりも効率的な処理を行うために欠かせない処理を解説していきます。 今回の記事は数式が多い内容になりますが、決して難しい数学ではない...
20Q3.06B

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

FPGA 向けの真性乱数生成器 (TRNG) の設計法に関するコースの第4回です.今回は、SR ラッチを禁止状態から保持状態へと移行させた時の挙動 (メタスタビリティ) を用いた TRNG の構成と、その改良について紹介します。 なお、この記事の最後に紹介するラッチ-ラッチ構造 (Latch-latch composition) に関する論文 は、電子情報通信学会の Electronics Express (ELEX) 論文誌に掲載されています。オープンアクセスの電子ジャーナルなので、...
20Q3.05B

FPGAを用いた「組合せ問題」の高速計算 (4)

前回は、Parital MaxSAT の発見的解法である Dist アルゴリズムの FPGA 実装にあたっての難点を挙げ、アプリケーションを最大クリーク問題に特化することでそれらを回避できることを述べました。 今回は、その FPGA 実装について述べていきます。 全体像 まず、前回示した最大クリーク問題専用 Dist アルゴリズムを図 1 に再掲します。 図1 最大クリーク問題に特化した Dist アルゴリズム 次に、データを保持するためのテーブル類を図 2 に示...
20Q3.04A

そもそも「FPGA」って何なんですか? (4)

前回は、FPGA での処理は「いつ」「なにを」「どうする」だけではなく、「だれが」と「どこで」が必要という話をしました。また、言い換えれば、CPU はデータに対して処理を変えていくのに対し、FPGA は処理の連なりを作り、それにデータを流していきます。第4回では、この「処理の連なり」を作る方法について考えていきます。 いきなり登場、データフローグラフ! ここで現実の FPGA の世界とこれまでの回で説明してきた概念的な「小人さんの世界」との関係を対応付けしておきます。少し専門的な用...
20Q3.03B

FPGA の高速シリアルトランシーバ (4)

早いもので、この連載もいよいよ後半です。前回はちょっとディープな内容になってしまいましたが、今回はいよいよ Xilinx の Aurora 64B/66B コアと接続して通信する回路を作ってみます。前回あたりの記事は流し読み程度の理解でも大丈夫なように書いていきたいと思いますので、お付き合いいただければ幸いです。 まずは Aurora 64B/66B の仕様から Aurora 64B/66B に関する公式のドキュメントは Xilinx のウェブサイトの IP コア関係資料の、Aur...
20Q3.02A

高位合成で加速するアクセラレータ開発 (4) ~ HLS によるシストリックアレイの実装

はじめに このコースでは、高位合成を活用したアクセラレータ開発に関して、その考え方やフローを、事例を交えながら解説していきます。今回は、浮動小数点行列の積を計算するシストリックアレイの実装を紹介します。 まずは行列積についておさらいします。行列 A、B を1024行、1024列の行列とします。 行列 A、B の行列積を C とします。C も1024行、1024列の行列です。C のそれぞれの要素は A の行ベクトルと B の列ベクトルの内積となり、次の式で表され...
20Q3.07A

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

みなさんこんにちは。本シリーズ「 FPGA で作る暗号は危険 ? 」では、FPGA で暗号機能を実現する方法とその危険性を解説しています。 前回は共通鍵暗号として最も使用されている AES 暗号について、その動作と FPGA に実装する方法を解説しました。AES 暗号はデータの置換と排他的論理和 (XOR) のみで実現することができるので、処理を把握すれば FPGA 内に機能を実装することは比較的簡単です。 しかし、安易に FPGA に暗号機能を実装してしまうと「サイドチャネル攻撃...
20Q3.06B

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

FPGA 向けの真性乱数生成器 (TRNG) の設計法に関するコースの第3回です。今回は、前回に COSO 型、PLL 型の TRNG として紹介した、コヒーレントサンプリングを用いた TRNG やその利用のコツについて詳しく説明します。 なお、この記事で紹介する PLL 型の TRNG を Xilinx 社の最近の FPGA で扱う方法 についての詳細は、記事公開月の月末 (2020年11月) に開催される、日本発の計算機・ネットワーク関連の国際会議である CANDAR の PDAA...
20Q3.05B

FPGAを用いた「組合せ問題」の高速計算(3)

前回は、MaxSAT の一種である Partial MaxSAT の定義、最大クリーク問題の Partial MaxSAT への変換、局所探索法に基づく Parital MaxSAT の発見的解法である Dist アルゴリズムについて述べました。 今回は、Dist の FPGA 実装に当たっての難点と、それを回避するためにどのようにアルゴリズムの簡略化を行ったかについて説明します。 Dist アルゴリズム 図1に、Dist アルゴリズムの全体像を再掲します (ステップ5 〜 ...
20Q3.04A

そもそも「FPGA」って何なんですか? (3)

前回、FPGA は小人さんを流れ作業で働かせるという話をしました。第3回では、この「働かせる」という部分を掘り下げていきたいと思います。働かせるための指示書である CPU のプログラムとFPGA のそれがどう違うのかに迫っていきたいと思います。 CPU のプログラムって何? プログラムとは何でしょうか? 一般的には、やるべきことの順番を示したものですね。例えば、運動会のプログラムでは、1.入場行進、2.開会式、3.ラジオ体操、という具合です。コンピュータのプログラムも基本的に...
20Q3.03B

FPGA の高速シリアルトランシーバ (3)

前回の記事では Vivado で Aurora 64B/66B コアを生成し、シミュレーションで動かしてみましたが、中身はブラックボックスでした。外からわかるのは、 シリアルトランシーバから信号が出始めるまでは時間がかかる (約4.5µs)リンクが確立されるまではさらに時間がかかる (約19µs)データを送受信するパラレルインタフェイスは、シリアルリンクのラインレートのクロックを分周したものになっている といったことです。もちろん、Aurora 64B/66B コアを使ってデータを...
20Q3.02A

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

目次 2. アーキテクチャの検討 2-1. FPGA 優位のデザインパターンと典型問題 ■ 高性能アーキテクチャの鉄則 ■ タスク “内” の並列性と課題 ■ タスク “間” の並列性と課題 ■ HLS-C で表現できないケース 2-2. 実装品質の限界まで求められるケースも 2-3. そもそもハードウェア化すべきなのか? Coffee Break. 最終形は 「ML+X」 over 「AIE+PL」 かも?...
20Q3.07A

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

みなさんこんにちは。本シリーズ「FPGAで作る暗号は危険?」では、FPGAで暗号機能を実現する方法とその危険性を解説していきます。 第1回は一般的な「暗号」について解説し、暗号には「共通鍵暗号」と「公開鍵暗号」があることを紹介しました。第2回は「共通鍵暗号」について詳しく紹介していきます。 ストリーム暗号 共通鍵暗号は「暗号化と復号で同じ鍵を使用する暗号」でした。高速に動作出来ること、公開鍵暗号に比べて小さな回路規模で実装できることが共通鍵暗号の特徴です。 鍵の使い方に...
20Q3.06B

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

FPGA 向けの真性乱数生成器 (TRNG; True Random Number Generator) の設計法に関するコースの第2回です.今回は、FPGA の回路素子を用いた TRNG に関するサーベイ論文を土台に、FPGA 向きの TRNG の生成手法について、その基本的な考え方を説明します。 今回の記事は、FPGA 関連の世界最大級の国際会議の1つである FPL で2016年に発表された論文 を土台としています。ただ、紹介する手法のうちのいくつかは、私の手元の FPGA ボード...
20Q3.05B

FPGAを用いた「組合せ問題」の高速計算(2)

前回は、 FPGA のアプリケーションのひとつに「決定問題」や「最適化問題」などの「組合せ問題」があること、決定問題の代表例である SAT、 SAT を最適化問題に拡張した MaxSAT について述べ、また、 FPGA による組合せ問題の高速計算に関する文献を幾つか紹介しました。 今回から、筆者らの事例を題材に、組合せ問題の FPGA による高速計算について触れていきたいと思います。前回も述べましたが、これは、グラフ理論の最大クリーク問題を MaxSAT に置き換え、 FPGA 上で高速...
20Q3.04A

そもそも「FPGA」って何なんですか? (2)

前回、CPU はレシピを見ながら調理し、FPGA はレシピを覚えて調理する、という喩えで違いを説明しました。 第2回では、もう少し詳しく CPU と FPGA の動作の違いを見ていきます。そして「なぜ FPGA を働かせるのが難しい」のかに迫ってみたいと思います。 まずは進化の歴史から 本題に入る前に、CPU と FPGA の進歩の歴史について見ていきます。 CPU の進化の方向性 CPU の歴史は、コンピュータの歴史そのものと言っても良いほど劇的な進化を遂げてき...
20Q3.03B

FPGA の高速シリアルトランシーバ (2)

連載2回目となりました。前回は FPGA 設計ツールはさわらずに、高速シリアルトランシーバに関する基本的なことがらを紹介しましたが、「習うより慣れろ」とか「百聞は一見にしかず」と申しますので、今回は難しい設計は一切やらずに、Xilinx の Aurora コアをぽちぽちっと生成して、シミュレーションで動かしてみることにしましょう。シミュレーションなので、トランシーバのポートを持った FPGA ボードがなくてもできますし、ボードをお持ちの方はちょっと手を加えれば実機で動かすこともそれほど難しくあ...
20Q3.02A

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

すべての現象は他のものに依存して名前を与えられたことによって生じ、存在しているダライ・ラマ十四世 「空の智慧、科学のこころ (集英社新書)」より(共著 : 茂木健一郎) 高位合成と C ベース設計 ~はじめに 皆さん、はじめまして。Xilinx で FPGA を含む HW/SW の高位設計およびツールフローを担当している、黒田と申します。今回 Xilinx からの第3期ブログ連載 (全5回) の3回分を使い、対象がエンベか?/サーバーか?にかかわらず、高位合成 (High-Leve...
タイトルとURLをコピーしました