2020-11

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.01B

AXI でプロセッサとつながる IP コアを作る (4)

この記事は、AXI を使ってプロセッサと連携する回路の設計例について説明するコースの第4回です。今回からは、いよいよフル機能の AXI を扱っていきます……が、必ずしもその機能の全てを使うわけではありません。そのため、今回はまず AXI のインタフェースをより少ない種類の信号で制御する、インタフェース変換回路を設計してみます。 なお、第4回~第5回で使用する回路の SystemVerilog 記述は、GitHub からダウンロードできるようにしています。今回取り上げる回路記述に対応するフ...
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.01B

AXI でプロセッサとつながる IP コアを作る (3)

この記事は、AXI を使ってプロセッサと連携する回路の設計例について説明するコースの第3回です。前回は、AXI-Lite で制御や少量のデータのやりとりを行うインタフェース回路について説明しました。今回は、AXI-Stream でテストパターンの動画像を生成する IP コアを作成し、これらを既存の IP コアと組み合わせて、HDMI 接続のディスプレイにテストパターンを表示させるシステムを構築します。 今回示すシステムは HDMI を扱うため、残念ながらその動作を ACRi ルームの検証...
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 ボード...
タイトルとURLをコピーしました