linux上から大容量sataストレージに ダイレクト・ …102...

1
102 Linux 上から大容量 SATA ストレージにダイレクト・アクセス! Zynq搭載 ZedBoard+Spartan-6 搭載 SATA 接続FMC拡張ボードで試す Linux 上から大容量 SATA ストレージに ダイレクト・アクセス! 三好 健文 Takehumi Miyoshi Zynq のストレージといえば SD カードや USB メモリがよく使われますが,安価で大容量な記憶装置として SATA デバイス (HDD や SSD) は魅力的です.とはいえ,評価ボード ZedBoard に搭載の Zynq には SATA デバイスは直結できません.そこで FMC 拡張コネタ ク経由で FPGA 搭載 SATA ボードを接続し,評価ボードのロジックとユーザ・プログラムから明示的に大容量ストレージを利用する 方法について解説します. す.SATAコントローラは,ディスクとの通信路の 確立,ディスクの初期化,ソフトウェアの要求に対応 する読み書きコマンドのハンドリングを担当します. 一方,デバイス・ドライバは,Linuxの要求する読み 書きやオープン/クローズに対応したSATAコント ローラへのアクセスを担当します. ここでは,SATAで接続したSSDやHDDをLinux から読み書きするための最小限の構成を考えてみま す.具体的には,SATAコントローラではデバイス の初期化や識別のための制御,読み書きのコントロー ラを実装し,デバイス・ドライバはSATAコントロー ラとアクセスできるように実装します.この号では, SATAコントローラの実装方法にスポットを当てま す. 外付けSATAコントローラ・ボード(e7SATA- FMC) 冒頭に延べたように,FPGA の高速トランシーバを 使ってSATA接続のHDDやSSDにアクセスできま す.Zynqシリーズにも高速トランシーバを搭載する デバイスがあり,それらを使用することでHDDや SSD を直接接続できます. しかし,安価で手軽に入手可能な Zynq搭載ボード には,SATAポートが搭載されていないものも多く あります.既存のFPGAボードにSATAコネクタを FPGA でも SATA デバイスが 使いたい 1 Zynqを使ったLinuxシステムがいろいろと使われ ていますが,その多くは,主なストレージ・デバイス として,フラッシュ・メモリやSDカード,USBメモ リを利用しています.しかし,手軽に入手可能でより 大容量で高速なストレージといえば,SATA接続の ハード・ディスク・ドライブ(HDD)あるいはソリッ ド・ステート・ドライブ(SSD)です. FPGA に搭載されている高速シリアル・トランシー バを使用することで,FPGAでもSATAディスクを 接続できることはよく知られています.FPGA マガジ ン No.4 (1) でも,高速シリアル ATA ×FPGA の特集が 組まれています.FPGA 上の Linux から SATA ディス クを使う人が増えることを願って,この記事および次 の記事では,FPGA にディスクを接続してLinux でス トレージ・デバイスとして使えるようにするまでの開 発事例を紹介します. ディスクを使えるようにするためには? ディスクをZynqに接続してLinux上から使用する ためには,図1 のように,ディスクと通信するための SATAコントローラと,Linux にブロック・デバイス として認識させるためのデバイス・ドライバが必要で T バイト・ オーダの領域が 使える 図 1 ディスクを Zynq に接続して Linux で使用するには SATA コントローラとデバイス・ドライバが必要 Zynq PL(FPGA)部 SATA コントローラ • ディスクとの通信 • 読み書き・制御 コマンドの発行 PS(プロセッサ)部 Linux カーネル ユーザ・ アプリケーション ユーザ HDD/SSD SATA SATA デバイス・ ドライバ Linuxに ブロック・ デバイスに みせる

Upload: others

Post on 15-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linux上から大容量SATAストレージに ダイレクト・ …102 Linux上から大容量SATAストレージにダイレクト・アクセス! Zynq搭載ZedBoard+Spartan-6搭載SATA接続FMC拡張ボードで試す

102 Linux上から大容量SATAストレージにダイレクト・アクセス!

Zynq搭載ZedBoard+Spartan-6搭載SATA接続FMC拡張ボードで試すLinux上から大容量SATAストレージに

ダイレクト・アクセス!三好 健文 Takehumi Miyoshi

 ZynqのストレージといえばSDカードやUSBメモリがよく使われますが,安価で大容量な記憶装置としてSATAデバイス(HDDやSSD)は魅力的です.とはいえ,評価ボードZedBoardに搭載のZynqにはSATAデバイスは直結できません.そこでFMC拡張コネタク経由でFPGA搭載SATAボードを接続し,評価ボードのロジックとユーザ・プログラムから明示的に大容量ストレージを利用する方法について解説します.

す.SATAコントローラは,ディスクとの通信路の確立,ディスクの初期化,ソフトウェアの要求に対応する読み書きコマンドのハンドリングを担当します.一方,デバイス・ドライバは,Linuxの要求する読み書きやオープン/クローズに対応したSATAコントローラへのアクセスを担当します. ここでは,SATAで接続したSSDやHDDをLinuxから読み書きするための最小限の構成を考えてみます.具体的には,SATAコントローラではデバイスの初期化や識別のための制御,読み書きのコントローラを実装し,デバイス・ドライバはSATAコントローラとアクセスできるように実装します.この号では,SATAコントローラの実装方法にスポットを当てます.● 外付けSATAコントローラ・ボード(e7SATA-FMC)

 冒頭に延べたように,FPGAの高速トランシーバを使ってSATA接続のHDDやSSDにアクセスできます.Zynqシリーズにも高速トランシーバを搭載するデバイスがあり,それらを使用することでHDDやSSDを直接接続できます. しかし,安価で手軽に入手可能なZynq搭載ボードには,SATAポートが搭載されていないものも多くあります.既存のFPGAボードにSATAコネクタを

FPGAでもSATAデバイスが使いたい1

 Zynqを使ったLinuxシステムがいろいろと使われていますが,その多くは,主なストレージ・デバイスとして,フラッシュ・メモリやSDカード,USBメモリを利用しています.しかし,手軽に入手可能でより大容量で高速なストレージといえば,SATA接続のハード・ディスク・ドライブ(HDD)あるいはソリッド・ステート・ドライブ(SSD)です. FPGAに搭載されている高速シリアル・トランシーバを使用することで,FPGAでもSATAディスクを接続できることはよく知られています.FPGAマガジンNo.4(1)でも,高速シリアルATA×FPGAの特集が組まれています.FPGA上のLinuxからSATAディスクを使う人が増えることを願って,この記事および次の記事では,FPGAにディスクを接続してLinuxでストレージ・デバイスとして使えるようにするまでの開発事例を紹介します.● ディスクを使えるようにするためには? ディスクをZynqに接続してLinux上から使用するためには,図1のように,ディスクと通信するためのSATAコントローラと,Linuxにブロック・デバイスとして認識させるためのデバイス・ドライバが必要で

Tバイト・オーダの領域が使える

図1 ディスクをZynqに接続してLinuxで使用するにはSATAコントローラとデバイス・ドライバが必要

Zynq

PL(FPGA)部

SATAコントローラ

• ディスクとの通信• 読み書き・制御 コマンドの発行

PS(プロセッサ)部

Linux

カーネル ユーザ・アプリケーション

ユーザ

HDD/SSDSATASATA

デバイス・ドライバ

Linuxにブロック・デバイスにみせる