福田昭のセミコン業界最前線

オラクルのCPUアクセラレータ技術「ソフトウェア・イン・シリコン」

 筆者は最近になって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プロセッサ・シリーズ全体の特長だと言える。

「M7プロセッサ」の概要 ※日本オラクルの説明資料から
「S7プロセッサ」の概要。「M7プロセッサ」と同じ「ソフトウェア・イン・シリコン」技術を搭載した ※日本オラクルの説明資料から
「S7プロセッサ」のシリコンダイ・レイアウト。「シリコン・セキュアド・メモリ」と「クリプト・アクセラレーション」(暗号化アクセラレータ)の回路はCPUコア内(赤い枠)に、「SQL・イン・シリコン」と「キャパシティ・イン・シリコン」の回路(「DAX(Data AnalyticsAcceralator)」と総称)は端部(黒い枠)にレイアウトしている ※日本オラクルの説明資料から

最新のデータベース「インメモリ」の性能を極限まで引き出す

 上記のように、暗号化アクセラレータを除く3つのアクセラレータ回路は、「M7プロセッサ」と「S7プロセッサ」で新しく搭載した。これら3つの回路には、共通の特徴がある。いずれも「インメモリ・データベース」のために開発された回路であることた。具体的には、オラクルのデータベース管理ソフトウェア「Oracle Database12c」のオプション機能である「Oracle Database In-Memory」(2014年に提供を開始)のために開発された。

 「インメモリ・データベース」とは、DRAMで構成される主記憶(メインメモリ)にデータを格納するデータベースのことである。最近になって導入され始めたデータベース構造だ。

 従来、データベースのデータはハードディスク装置(HDD)に格納するのが普通だった。「オンディスク・データベース」と呼ぶアーキテクチャである。最近ではNANDフラッシュメモリの高速ストレージ(「Flashストレージ」とオラクルは呼んでいる)をデータの格納に利用することで、データベースの性能を高めたシステムが珍しくない。

高性能なデータベースを実現する技術。「Flashストレージ」の活用 ※日本オラクルの説明資料から
高性能なデータベースを実現する技術(続き) ※日本オラクルの説明資料から

 これらのストレージ・ベースのデータベースは、記憶容量は極めて大きいものの、遅延時間(レイテンシ)が長い、入出力速度が制限される、バンド幅(データ転送速度)を高めるにはストレージの台数を増やす必要がある、といった弱点を抱える。これらの弱点を根本的に解決するのが、メインメモリ(DRAM)にデータを格納する「インメモリ・データベース」だ。「インメモリ・データベース」では「オンディスク・データベース」に比べ、レイテンシが極めて短くなるとともに、入出力速度が大きく高まり、バンド幅が大きく広がる。

 過去には、DRAMの記憶容量当たりの価格がHDDに比べると遥かに高く、メインメモリを「データベース化する」ことは現実的ではなかった。しかしDRAMの記憶容量当たりの価格は、急速に下がり続けてきた。日本オラクルの資料(2014年)によると、1999年のDRAMは64MB DIMMの時代で、MB当たりの単価は約1ドルもあった。それが2013年には32GB DIMMの時代となり、記憶容量は512倍に増大し、記憶容量当たりの単価は100分の1以下に低下した。そして今後も、記憶容量の増大と単価の低下が見込める。DRAM DIMMの容量拡大と単価低減を将来に渡って見込んだことが、「OracleDatabase 12c」における「インメモリ・データベース」機能の搭載につながった。

DRAM DIMMの記憶容量当たり単価の推移(左)と、DRAMとHDDのコスト性能比の違い(右) ※日本オラクルの説明資料から
「さらに」高性能なデータベースを実現する技術。メインメモリ(DRAM)にデータを格納する ※日本オラクルの説明資料から

ソフトウエア・イン・シリコンによって「真に」インメモリに適応

 オラクルが「インメモリ・データベース」機能を導入した2014年7月当時の最新のSPARCプロセッサは、前世代の「M6プロセッサ」である。「M6プロセッサ」では、上記の3つのアクセラレータ回路は搭載していない。それでも、「M6プロセッサ」のシステムでインメモリ・データベースを導入すれば、データベースの性能は大幅に高くなる。しかし、インメモリ・データベースの性能を極限にまで引き出しているとは言えなかった。インメモリ・データベースにはいくつかの弱点が存在していたからだ。

 ここでは弱点を大きく3つにまとめて説明する。1つは、クエリの実行によってCPUの負荷がかなり増大することである。もう1つは、DRAMは過去に比べると安価になったものの、依然ストレージに比べると高価であり、大量のDRAMを搭載するとシステムのコストが著しく上昇してしまうこと。3つめは、ストレージに格納したデータに比べると、メインメモリに格納したデータは構造が単純なために不適切なアクセスを許してしまうリスクが高いことである。

 粗く言ってしまうと、「M7プロセッサ」と「S7プロセッサ」で新しく搭載された3つの回路(ハードウェア)「ソフトウエア・イン・シリコン」は、上記の3つの弱点を解消するために開発された。なお、回路化(ハードウェア化)できた理由には、データベースのアルゴリズムの変化もある。従来のHDDベースのデータベースはアルゴリズムが複雑すぎるという制約があり、ハードウェア化には適していなかった。インメモリ化によってデータベースのアルゴリズムが簡素になることで、従来はソフトウェアで処理せざるを得なかった部分を、ハードウェアで処理できるようになった、とも言える。

「ソフトウエア・イン・シリコン」技術の考え方。データベースのインメモリ化によってアルゴリズムが簡素になり、ハードウェアで処理が可能になった ※日本オラクルの説明資料から
インメモリ・データベースを強化する3つの「ソフトウエア・イン・シリコン」技術 ※日本オラクルの説明資料から

クエリの専用実行回路でCPUの負荷を大きく軽減

 3つの回路技術を再掲しよう。「SQL・イン・シリコン」、「キャパシティ・イン・シリコン」、「シリコン・セキュアド・メモリ(SSM: Silicon Secured Memory)」である。以下はこれらの技術を説明していく。

 はじめは「SQL・イン・シリコン」である。SQLで記述したクエリを実行する専用回路である。「SQL・イン・シリコン」の搭載によってCPUコアがクエリを処理する必要がなくなり、CPUコアは例えばオンライン・トランザクション処理(OLTP: Online Transaction Processing)といったほかの処理に多くのリソースを割り当てられるようになる。つまり、システム全体の性能が向上する。

クエリ実行速度(1時間当たりの単一クエリ実行数)の違い。インメモリ・データベースと「SQL・イン・シリコン」の組み合わせ(左)は、フラッシュストレージを使ったデータベース(右)と比べて83倍も高速になる ※日本オラクルの説明資料から
M7プロセッサにおける「SQL・イン・シリコン」の効果。オンライン・トランザクション処理(OLTP)とデータベースの検索処理を同時に実行した場合の処理性能(速度と応答時間)。左は2個の「Xeon E5-2699 v3」プロセッサ(汎用CPU)による性能。右は1個のM7プロセッサによる性能 ※日本オラクルの説明資料から
S7プロセッサにおける「SQL・イン・シリコン」の効果。オンライン・トランザクション処理(OLTP)とデータベースの検索処理を同時に実行した場合の処理性能(速度と応答時間)。左は2個の「Xeon E5-2699 v3」プロセッサによる性能。右は2個のS7プロセッサによる性能 ※日本オラクルの説明資料から

高速の圧縮解凍回路でデータベースのインメモリ化を促進

 次は「キャパシティ・イン・シリコン」である。このアクセラレータ回路は主に、データの圧縮と解凍を担う。ストレージからメインメモリにデータを転送するときには、ストレージのデータを圧縮してメインメモリに格納する。

 データを圧縮するのは、高価なメインメモリ(DRAM)を効率的に活用するためだ。DRAMは安価になったとは言え、記憶容量当たりの価格はストレージに比べるとまだ高い。メインメモリのコストを効率良く利用するためには、データ圧縮は不可欠とも言える。

 ただし問題となるのが、CPUコアで圧縮と解凍を実行するのでは、オーバーヘッドが非常に大きくなるおそれがあることだ。そこで専用の圧縮・解凍回路「キャパシティ・イン・シリコン」を載せることにした。

 「Oracle Database 12c」のインメモリ・データベース機能「Oracle Database In Memory」では、6段階の圧縮レベル(そのうち1つは圧縮なし)を用意している。圧縮率は選択したレベル、データの型、テーブルの内容によって違い、おおよそ2倍~20倍である(「Oracle Database In-Memory」のホワイトペーパーによる数値)。また圧縮形式によっては、データを解凍することなしに、検索クエリを実行できる(その場合は、結果を出力するときにデータが解凍される)。このことも検索速度の向上に寄与する。

インメモリ・データベース機能「Oracle Database In-Memory」におけるデータ圧縮のレベルと圧縮の概要。この表組みで上のレベルから下のレベルにいくほど、圧縮率が高くなる。最上位は圧縮なし ※2016年8月に米国で開催されたイベント「Hot Chips 28」でオラクルが発表した「M7プロセッサ」のスライドから
「キャパシティ・イン・シリコン」の概要。「OZIP(Oracle ZIP)」とあるのは「Oracle Database In-Memory」専用の圧縮形式で、強い方から2番目の圧縮レベル「FOR CAPACITY LOW」あるいは3番目の圧縮レベル「FOR QUERY HIGH」を指定すると、適用される。OZIP形式で圧縮されたデータは、解凍が極めて高速になる ※2016年8月に米国で開催されたイベント「Hot Chips 28」でオラクルが発表した「M7プロセッサ」のスライドから

 「SQL・イン・シリコン」と「キャパシティ・イン・シリコン」をまとめて「DAX(データ・アナリティクス・アクセラレータ)」と呼ぶことはすでに述べた。「DAX」と呼ぶ回路ユニットで「SQL・イン・シリコン」と「キャパシティ・イン・シリコン」は一体となってシリコンダイに実装されている。M7プロセッサではDAXユニットを8個、S7プロセッサではDAXユニットを4個、それぞれ搭載している。

「DAX(データ・アナリティクス・アクセラレータ)」の搭載による効果。インメモリ・データベースの処理速度がおよそ10倍に向上する ※日本オラクルの説明資料から

メインメモリのデータを不適切なアクセスから保護

 3つ目は、「シリコン・セキュアド・メモリ(SSM: Silicon Secured Memory)」である。すでに述べたように、メインメモリに格納したデータは構造が比較的単純なために、不適切なアクセスを許してしまうリスクが高い。メモリの内容を保護する、何らかの仕組みが欠かせない。このメモリ保護技術が、「シリコン・セキュアド・メモリ(SSM: Silicon Secured Memory)」である。

 SSMの仕組みは、いわゆるポインタのカラーリング(色付け)である。メインメモリのデータを「色(カラー)付け」し、それを指し示す専用ポインタにデータと照合させる「色(カラー)」を添付してアプリケーションに返す。アプリケーション・プログラムがデータを読み出すときには、この専用ポインタにカラーをセットしてアクセスしなければならない。カラー・ポインタが違っていたり、カラー・ポインタがなかったりした場合は不正なアクセスがあったとみなし、プログラムの実行を強制的に終了する。プログラム側ではメモリのアロケータをSSMに対応させる必要があるものの、それ以外の変更は基本的に不要である。

「シリコン・セキュアド・メモリ(SSM)」の概要。カラー・ポインタの種類は14色まで。キャッシュライン(64Byte)ごとにカラー・ポインタを付与する。SSMを有効にするデータ領域の単位はページ(8KByte)ごと。なお、SSMは以前に「ADI(Application Data Integrity)」とオラクルが呼んでいたメモリ保護機能と同じものである ※日本オラクルの説明資料から
SSMを利用可能なアプリケーションの要件 ※日本オラクルの説明資料から
SSMによるメモリ保護の仕組み(左)とSSMの実行によるオンライントランザクション処理(OLTP)性能の変化(右)。SSMを実行しても、処理性能は変わらない ※2016年8月に米国で開催されたイベント「Hot Chips 28」でオラクルが発表した「M7プロセッサ」のスライドから

 これら3つの専用回路によって、「M7プロセッサ」あるいは「S7プロセッサ」を搭載したシステムでは、オラクルが提供するインメモリ・データベースの機能を最大化できることが分かる。ただしこれまで触れてこなかったが、インメモリ・データベースには揮発性(電源をオフにするとデータが失われる)という弱点がある。HDDあるいはフラッシュストレージにログを書き込んでおくことで、インメモリ・データベースは通常、システムのクラッシュからデータを守る。それでも復旧段階でメインメモリにデータをストレージから転送しなければならず、復旧の完了までには、ある程度の時間を必要とする。

 将来に起こりそうな対策に、DIMMの不揮発性化、すなわちNV-DIMM(不揮発性DIMM)の搭載がある。NANDフラッシュメモリの記憶容量当たりの単価は、DRAMよりもはるかに低い。DRAM DIMMと同じ記憶容量のNANDフラッシュメモリをDIMMに追加したとしても、メモリのコストは2倍にはならない。DRAMとNANDフラッシュメモリの両方を搭載したDIMMをメインメモリに実装し、電源喪失後のデータ復旧時間を極めて短くする。筆者はインメモリ・データベースの将来をこのように予測する。