福田昭のセミコン業界最前線
オラクルのCPUアクセラレータ技術「ソフトウェア・イン・シリコン」
2017年4月24日 12:14
筆者は最近になってOracle(以降は「オラクル」と表記)の日本法人である日本オラクルから、SPARCプロセッサの最新世代である「M7プロセッサ」と「S7プロセッサ」の技術概要と、Sun Microsystems(以降は「サンマイクロ」と表記)の買収から現在に至るまでのSPARCプロセッサの開発状況を説明していただく機会を得た。
初めに買収以降のプロセッサ開発状況と、「M7プロセッサ」の技術概要をレポート(日本オラクル、買収以降のSPARCプロセッサと最新世代の「M7」を解説)し、次に「S7プロセッサ」の技術概要をレポート(日本オラクル、最新のSPARCプロセッサ「S7」を解説)した。
今回は、「M7プロセッサ」と「S7プロセッサ」の両方に搭載されているアクセラレータ回路技術「ソフトウェア・イン・シリコン」の概略をご報告する。
なお今回は、日本オラクルからご提供いただいた資料とインタビューをベースに、オラクルが公表してきた資料を追加して筆者が独自の解説を加えている。以下の内容は日本オラクルの公式見解ではないので、あらかじめご了承されたい。
4種類のCPUアクセラレータ回路
「M7プロセッサ」と「S7プロセッサ」が搭載したアクセラレータ回路技術「ソフトウェア・イン・シリコン」は、大別すると2種類のハードウェア・アクセラレータによって構成されている。1つはデータベース処理(データベース処理とデータ解析処理)用のアクセラレータ、もう1つはセキュリティ強化用のアクセラレータである。
データベース処理用アクセラレータは2つある。1つはデータベースのクエリを高速に実行する回路(オラクルは「SQL(Structured Query Language)・イン・シリコン」と呼ぶ)、もう1つはデータの圧縮と解凍を高速に実行する回路(オラクルは「キャパシティ・イン・シリコン」と呼ぶ)であり、いずれも「M7プロセッサ」と「S7プロセッサ」で新しく追加された。なお、「SQL・イン・シリコン」と「キャパシティ・イン・シリコン」をまとめて「DAX(Data Analytics Accelarator)」とオラクルでは呼んでいる。
セキュリティ強化用アクセラレータも2つある。1つは不適切なアクセスからメモリを保護する回路(オラクルは「シリコン・セキュアド・メモリ(SSM: Silicon Secured Memory)」と呼ぶ)、もう1つはデータの暗号化と復号化を高速に実行する回路(オラクルは「クリプト・アクセラレーション」と呼ぶ)である。SSMは、「M7プロセッサ」と「S7プロセッサ」で新しく追加された。クリプト・アクセラレーションは、過去のSPARCプロセッサでも搭載されていた機能で、オラクル(および前身のサンマイクロ)のSPARCプロセッサ・シリーズ全体の特長だと言える。
最新のデータベース「インメモリ」の性能を極限まで引き出す
上記のように、暗号化アクセラレータを除く3つのアクセラレータ回路は、「M7プロセッサ」と「S7プロセッサ」で新しく搭載した。これら3つの回路には、共通の特徴がある。いずれも「インメモリ・データベース」のために開発された回路であることた。具体的には、オラクルのデータベース管理ソフトウェア「Oracle Database12c」のオプション機能である「Oracle Database In-Memory」(2014年に提供を開始)のために開発された。
「インメモリ・データベース」とは、DRAMで構成される主記憶(メインメモリ)にデータを格納するデータベースのことである。最近になって導入され始めたデータベース構造だ。
従来、データベースのデータはハードディスク装置(HDD)に格納するのが普通だった。「オンディスク・データベース」と呼ぶアーキテクチャである。最近ではNANDフラッシュメモリの高速ストレージ(「Flashストレージ」とオラクルは呼んでいる)をデータの格納に利用することで、データベースの性能を高めたシステムが珍しくない。
これらのストレージ・ベースのデータベースは、記憶容量は極めて大きいものの、遅延時間(レイテンシ)が長い、入出力速度が制限される、バンド幅(データ転送速度)を高めるにはストレージの台数を増やす必要がある、といった弱点を抱える。これらの弱点を根本的に解決するのが、メインメモリ(DRAM)にデータを格納する「インメモリ・データベース」だ。「インメモリ・データベース」では「オンディスク・データベース」に比べ、レイテンシが極めて短くなるとともに、入出力速度が大きく高まり、バンド幅が大きく広がる。
過去には、DRAMの記憶容量当たりの価格がHDDに比べると遥かに高く、メインメモリを「データベース化する」ことは現実的ではなかった。しかしDRAMの記憶容量当たりの価格は、急速に下がり続けてきた。日本オラクルの資料(2014年)によると、1999年のDRAMは64MB DIMMの時代で、MB当たりの単価は約1ドルもあった。それが2013年には32GB DIMMの時代となり、記憶容量は512倍に増大し、記憶容量当たりの単価は100分の1以下に低下した。そして今後も、記憶容量の増大と単価の低下が見込める。DRAM DIMMの容量拡大と単価低減を将来に渡って見込んだことが、「OracleDatabase 12c」における「インメモリ・データベース」機能の搭載につながった。
ソフトウエア・イン・シリコンによって「真に」インメモリに適応
オラクルが「インメモリ・データベース」機能を導入した2014年7月当時の最新のSPARCプロセッサは、前世代の「M6プロセッサ」である。「M6プロセッサ」では、上記の3つのアクセラレータ回路は搭載していない。それでも、「M6プロセッサ」のシステムでインメモリ・データベースを導入すれば、データベースの性能は大幅に高くなる。しかし、インメモリ・データベースの性能を極限にまで引き出しているとは言えなかった。インメモリ・データベースにはいくつかの弱点が存在していたからだ。
ここでは弱点を大きく3つにまとめて説明する。1つは、クエリの実行によってCPUの負荷がかなり増大することである。もう1つは、DRAMは過去に比べると安価になったものの、依然ストレージに比べると高価であり、大量のDRAMを搭載するとシステムのコストが著しく上昇してしまうこと。3つめは、ストレージに格納したデータに比べると、メインメモリに格納したデータは構造が単純なために不適切なアクセスを許してしまうリスクが高いことである。
粗く言ってしまうと、「M7プロセッサ」と「S7プロセッサ」で新しく搭載された3つの回路(ハードウェア)「ソフトウエア・イン・シリコン」は、上記の3つの弱点を解消するために開発された。なお、回路化(ハードウェア化)できた理由には、データベースのアルゴリズムの変化もある。従来のHDDベースのデータベースはアルゴリズムが複雑すぎるという制約があり、ハードウェア化には適していなかった。インメモリ化によってデータベースのアルゴリズムが簡素になることで、従来はソフトウェアで処理せざるを得なかった部分を、ハードウェアで処理できるようになった、とも言える。
クエリの専用実行回路でCPUの負荷を大きく軽減
3つの回路技術を再掲しよう。「SQL・イン・シリコン」、「キャパシティ・イン・シリコン」、「シリコン・セキュアド・メモリ(SSM: Silicon Secured Memory)」である。以下はこれらの技術を説明していく。
はじめは「SQL・イン・シリコン」である。SQLで記述したクエリを実行する専用回路である。「SQL・イン・シリコン」の搭載によってCPUコアがクエリを処理する必要がなくなり、CPUコアは例えばオンライン・トランザクション処理(OLTP: Online Transaction Processing)といったほかの処理に多くのリソースを割り当てられるようになる。つまり、システム全体の性能が向上する。
高速の圧縮解凍回路でデータベースのインメモリ化を促進
次は「キャパシティ・イン・シリコン」である。このアクセラレータ回路は主に、データの圧縮と解凍を担う。ストレージからメインメモリにデータを転送するときには、ストレージのデータを圧縮してメインメモリに格納する。
データを圧縮するのは、高価なメインメモリ(DRAM)を効率的に活用するためだ。DRAMは安価になったとは言え、記憶容量当たりの価格はストレージに比べるとまだ高い。メインメモリのコストを効率良く利用するためには、データ圧縮は不可欠とも言える。
ただし問題となるのが、CPUコアで圧縮と解凍を実行するのでは、オーバーヘッドが非常に大きくなるおそれがあることだ。そこで専用の圧縮・解凍回路「キャパシティ・イン・シリコン」を載せることにした。
「Oracle Database 12c」のインメモリ・データベース機能「Oracle Database In Memory」では、6段階の圧縮レベル(そのうち1つは圧縮なし)を用意している。圧縮率は選択したレベル、データの型、テーブルの内容によって違い、おおよそ2倍~20倍である(「Oracle Database In-Memory」のホワイトペーパーによる数値)。また圧縮形式によっては、データを解凍することなしに、検索クエリを実行できる(その場合は、結果を出力するときにデータが解凍される)。このことも検索速度の向上に寄与する。
「SQL・イン・シリコン」と「キャパシティ・イン・シリコン」をまとめて「DAX(データ・アナリティクス・アクセラレータ)」と呼ぶことはすでに述べた。「DAX」と呼ぶ回路ユニットで「SQL・イン・シリコン」と「キャパシティ・イン・シリコン」は一体となってシリコンダイに実装されている。M7プロセッサではDAXユニットを8個、S7プロセッサではDAXユニットを4個、それぞれ搭載している。
メインメモリのデータを不適切なアクセスから保護
3つ目は、「シリコン・セキュアド・メモリ(SSM: Silicon Secured Memory)」である。すでに述べたように、メインメモリに格納したデータは構造が比較的単純なために、不適切なアクセスを許してしまうリスクが高い。メモリの内容を保護する、何らかの仕組みが欠かせない。このメモリ保護技術が、「シリコン・セキュアド・メモリ(SSM: Silicon Secured Memory)」である。
SSMの仕組みは、いわゆるポインタのカラーリング(色付け)である。メインメモリのデータを「色(カラー)付け」し、それを指し示す専用ポインタにデータと照合させる「色(カラー)」を添付してアプリケーションに返す。アプリケーション・プログラムがデータを読み出すときには、この専用ポインタにカラーをセットしてアクセスしなければならない。カラー・ポインタが違っていたり、カラー・ポインタがなかったりした場合は不正なアクセスがあったとみなし、プログラムの実行を強制的に終了する。プログラム側ではメモリのアロケータをSSMに対応させる必要があるものの、それ以外の変更は基本的に不要である。
これら3つの専用回路によって、「M7プロセッサ」あるいは「S7プロセッサ」を搭載したシステムでは、オラクルが提供するインメモリ・データベースの機能を最大化できることが分かる。ただしこれまで触れてこなかったが、インメモリ・データベースには揮発性(電源をオフにするとデータが失われる)という弱点がある。HDDあるいはフラッシュストレージにログを書き込んでおくことで、インメモリ・データベースは通常、システムのクラッシュからデータを守る。それでも復旧段階でメインメモリにデータをストレージから転送しなければならず、復旧の完了までには、ある程度の時間を必要とする。
将来に起こりそうな対策に、DIMMの不揮発性化、すなわちNV-DIMM(不揮発性DIMM)の搭載がある。NANDフラッシュメモリの記憶容量当たりの単価は、DRAMよりもはるかに低い。DRAM DIMMと同じ記憶容量のNANDフラッシュメモリをDIMMに追加したとしても、メモリのコストは2倍にはならない。DRAMとNANDフラッシュメモリの両方を搭載したDIMMをメインメモリに実装し、電源喪失後のデータ復旧時間を極めて短くする。筆者はインメモリ・データベースの将来をこのように予測する。