SNIA の Non-Volatile Memory Programming Model について
ストレージベンダーを中心とした業界団体 SNIA(スニアと発音する) は、NVM Express とは別に不揮発性メモリ(Non Volatile Memory; NVM)に関する様々な規格を決めようとしている。その一環としてSNIA NVM Programming Techinical Work Groupで NVM を使ったプログラムモデルの提唱を行っている。
- SNIA NVM Programming Model Working Draft September 30, 2013
- SDC 2013 での Andy Rudoff 氏(Intel) の講演資料 The Impact of the NVM Programming Model … プログラミングモデルの話がはじまるのは 23 ページ以降
上記の資料等で SNIA は NVM と Persistent Memory(PM) の二つの用語を使い分けている。境界は微妙だが NVM とは永続性のあるメディアで、PM とは storage technology with performance characterisics suitable for a load and store programming model だそうな。SSD、PCI SSD、SD カード等は NVM で、PRAM、ReRAM、MRAM や ULLtraDIMM (id:nminoru:20140122:mcs) などは PM という位置づけだと思われる。
1. の SNIA NVM Programming Model では 4 つのモデルが提唱されている。
- ファイルシステムとして NVM を使わせる (NVM.FILE mode)
- ブロックデバイスとして NVM を使わせる (NVM.BLOCK mode)
- ボリュームとして PM を使わせる (NVM.PM.VOLUME mode)
- ファイルシステムとして PM を使わせる (NVM.PM.FILE mode)
さらに 2. の講演では PM を malloc ライクなライブラリで使わせるライブラリ(pmem)が提唱されている。
pmem と NVM.PM.FILE モデルの PMFS は、Linux ベースの実装が github 上に公開されている。ただし PM は簡単に手に入らないので、DRAM を persistent memory に見立てて実験するしかない。
メモリバス直結型のフラッシュメモリ
IBM がメモリバスに直結するフラッシュメモリを搭載した新x86アーキテクチャを発表した。フラッシュストレージは eFlash DIMM と呼ばれ DDR3 チャンネルを介してアクセスする。IBM はこのフラッシュを使って実現したストレージを eXFlash と呼んでいる。遅延時間は5〜10マイクロ秒になる。
- IBM のプレス | IBM Introduces X6 Architecture, Optimizes x86-Based Servers for Cloud, Analytics
- ITpro | 日本IBM、メモリースロットに挿すDIMM型のFlashストレージ「eXFlash」を発表
- Publickey | IBM、x86のメモリバスにフラッシュメモリを直結した新アーキテクチャのx86ハイエンドサーバを発表。最大で12テラバイトの超高速ストレージ統合サーバ
数日後に SanDisk が ULLtraDIMM を発表。IBM の eFlash DIMM の中身は ULLtraDIMM だったようだ。
ULLtraDIMM の技術の素は diablo technologies 社の Memory Channel Storage(MCS)。説明スライドもある。
- diablo technologies | Memory Channel Stroage
いわゆる Flash Translation Layer(FTL) は DIMM のモジュール内にある。FTL は x86 CPU 自身を使って動作できるような構造に見えないので、DIMM 上にマイコンが載っているのかもしれない。
MCS の書き換え単位は 4KB のようだ。Flashとしては非常に小さな更新単位だが、通常のメモリがキャッシュラインサイズ(64 バイト)で、場合によっては1バイト単位で更新していることを考えると、MCS をそのまま byte-addressable memory として使うというのではなさそうだ。
データ・サイエンスのプログラミング言語が Rから Python に置き換わる
- readwrite | Python Displacing R As The Programming Language For Data Science
- readwrite.jp | データ・サイエンスのプログラミング言語はRからPythonに置き換わる
データ分析系言語と言えば、かつては S 言語、今は R 言語だといわれたが、今は Python とは移り気な世界だ。
HP-UX と NonStop OS が x86 アーキテクチャに移植されることが決定、さらば Itanium
- MAINFRAME | HP to Port HP-UX to Intel X86
- AllThinsD | Hewlett-Packard CEO Meg Whitman Has a Lot to Say (Interview)
- The Inquirer | HP hammers nail into Itanium coffin, ports Nonstop servers to x86
Hewlett-Packard は PA-RISC アーキテクチャ上で動く HP-UX マシンと、Tandem コンピュータを買収して手に入れた NonStop サーバの 2 つのラインがあり、それぞれが Itanium (IA-64) アーキテクチャへポーティングされていた。今日、前者は HP Integrity サーバー、後者は HP Integrity NonStop サーバーというラインナップになっている。
2. は今年 6 月の記事だが、Hewlett-Packard CEO の Meg Whitman へのインタビューで、HP-UX を x86 へポーティングし x86 アーキテクチャベースの HP Intergrity サーバを作る、(言外に Itanium を止める)、という話をしている。
3. は今月に入っての記事だが、x86 アーキテクチャベースの HP Integrity NonStop サーバーを作る、(言外に Itanium を止める)、という話をしている。
HP-UX 上のアプリは CPU が Itanium から x86 へ変わったら少なくともリコンパイルが必要になるが、NonStop OS アプリの場合はリコンパイルの必要はないそうな*1。
2011年の段階では HP-UX は Itanium ベース(id:nminoru:20111124:odyssey)を止めないと言っていたがついに観念したようだ。とはいえ NonStop サーバまでも止めてしまうとは驚きだ。
Windows の銀行勘定系システムが 10 行目の導入
日本ユニシスが開発した世界初の Windows 上で動作する銀行勘定系システム BankVision は、10行目の地銀を獲得したそうだ。BankVision が最初に百五銀行に導入されたのが2007年5月(id:nminoru:20070508:bankvision)だったが、地道に増えていたのね。
Mellanox が Messaging Accelerator(VMA) をオープンソース化
InfiniBand や ethernet 機器を作っているイスラエルの Mellanox 社が、Messaging Accelerator(VMA) をオープンソース化した。
VMA は従来イーサーネットカードを挿した Linux マシン上で TCP/UDP で動作させていたプログラムがあった場合、InfiniBand HCA & ネットワーク機器とこの VMA ライブラリを使うことでプログラムの書き換えなしで通信速度を向上させることができるというもの。通信のレイテンシーを 300%、スループットを 200% 向上させることができる。どちらかというと通信帯域よりも遅延の削減の方に効果があるライブラリだ。同じカテゴリーの製品としては Chelsio の Wire Direct、Solarflare の OpenOnload がある。
このソフトは socket/sendmsg/recvmsg などのシステム関数呼び出しをフックして InfiniBand の通信に置き換えるのだが、実際にソースを見ていると IP 通信が InfiniBand の UD(Unreliable Datagram) に置き換わっている。
イーサーネットを InfiniBand に置き換えて低遅延化できるのはいくつか理由がある。
- 物理層・ネットワーク層がイーサネットよりも InfiniBnad の方が簡素になっている。
- InfiniBand のプロトコル処理がイーサーネットよりも軽い。
- InfiniBand のソフトスタックは(初期化やエラー処理を除く)運用中の通信でカーネルランドへの遷移が不要になっている。InfiniBand HCA & ドライバがユーザランドプロセスに mmap した領域へデータを配置すると自動的に送受信が始まるでの、sendmsg/recvmsg や poll/select などカーネルに戻る処理がない。よって軽い。
そのため VMA のようなオーバーヘッドがあっても高速になるようだ。とはいえプログラムが書き換えられるなら SDP(Sockets Direct Protocol) などに書き換えるほうが高速であろう。