(57)【要約】      （修正有）【課題】システムのエネルギー消耗を減らし、同時に性能を向上させることが可能なメモリーシステムを提供する。【解決手段】メモリーシステム１０は、プロセッサ２０と、ファブリックネットワーク３０と、プールメモリー１００を備える。プールメモリーは、データを格納する複数のメモリー１２０と、複数のメモリーに格納されたデータを読み取ってマップ演算を行い、マップ演算の結果データを複数のメモリーに格納するプールメモリーコントローラー１１０を備える。【選択図】図２
2020017263.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する複数のメモリーと、
前記複数のメモリーに格納された前記データを読み取ってマップ演算を行い、前記マップ演算の結果データを前記複数のメモリーに格納するプールメモリーコントローラーと、
を備えるメモリーシステム。
【請求項２】
前記プールメモリーコントローラーが、
ファブリックネットワークを介してプロセッサと前記プールメモリーコントローラーの間でパケットを中継するインターフェースと、
該インターフェースを介して伝達された前記データに対し前記マップ演算を行い、前記マップ演算の結果データを、前記インターフェースを介して前記複数のメモリーに格納する加速器と、
を備える請求項１に記載のメモリーシステム。
【請求項３】
前記インターフェースが、
複数のチャンネルを介して前記加速器と連結される請求項２に記載のメモリーシステム。
【請求項４】
前記複数のチャンネルのリンク数は、前記プロセッサのリンク数より多い請求項３に記載のメモリーシステム。
【請求項５】
前記プールメモリーコントローラーが、
前記プロセッサから前記インターフェースを介してマップ演算要請パケットを受信する請求項２に記載のメモリーシステム。
【請求項６】
前記マップ演算要請パケットが、
前記マップ演算に使用されるデータが格納されたアドレス、前記データの大きさ及び前記マップ演算の結果データを格納する住所のうち少なくとも何れか一つ以上の情報を含む請求項５に記載のメモリーシステム。
【請求項７】
前記プールメモリーコントローラーが、
前記インターフェースを介してマップ演算応答パケットを前記プロセッサに送信する請求項２に記載のメモリーシステム。
【請求項８】
前記プールメモリーコントローラーが、
前記複数のメモリーから前記マップ演算に必要なデータを読み取って前記加速器に伝達する請求項２に記載のメモリーシステム。
【請求項９】
前記プールメモリーコントローラーが、
前記加速器によって演算された前記マップ演算の結果データを読み取り、前記複数のメモリーに格納する請求項２に記載のメモリーシステム。
【請求項１０】
前記プールメモリーコントローラーが、
前記マップ演算の終了時に前記インターフェースを介して前記プロセッサにインターラプトパケットを伝達する請求項２に記載のメモリーシステム。
【請求項１１】
前記プールメモリーコントローラーが、
前記複数のメモリーに格納された前記マップ演算の結果データを読み取り、前記インターフェースを介して前記プロセッサに伝達する請求項２に記載のメモリーシステム。
【請求項１２】
前記プールメモリーコントローラーが、
前記複数のメモリーに対してインターリビングを行う請求項１に記載のメモリーシステム。
【請求項１３】
前記プールメモリーコントローラーが、
前記複数のメモリーに対してアドレスリマッピングを行う請求項１に記載のメモリーシステム。
【請求項１４】
前記プールメモリーコントローラーが、
前記マップ演算時にマップ−リデュースアプリケーションを利用する請求項１に記載のメモリーシステム。
【請求項１５】
プロセッサと連結されたファブリックネットワークと、
前記ファブリックネットワークを介して前記プロセッサとパケットを中継し、前記プロセッサの要請時メモリーに格納されたデータを前記プロセッサに伝達するプールメモリーと、
を備え、
前記プールメモリーが、
前記メモリーに格納されたデータを読み取ってマップ演算をオフ−ローディングし、前記マップ演算の結果データを前記メモリーに格納するプールメモリーコントローラーを備えるメモリーシステム。
【請求項１６】
前記プールメモリーコントローラーが、
前記ファブリックネットワークを介して前記プロセッサと前記プールメモリーコントローラーの間でパケットを中継するインターフェースと、
前記インターフェースを介して伝達された前記データに対し前記マップ演算をオフ−ローディングし、前記マップ演算の結果データを、前記インターフェースを介して前記メモリーに格納する加速器と、
を備える請求項１５に記載のメモリーシステム。
【請求項１７】
前記プールメモリーコントローラーが、
前記プロセッサから前記インターフェースを介してマップ演算要請パケットを受信し、前記インターフェースを介してマップ演算応答パケットを前記プロセッサに送信する請求項１６に記載のメモリーシステム。
【請求項１８】
前記プールメモリーコントローラーが、
前記メモリーから前記マップ演算に必要なデータを読み取って前記加速器に伝達し、前記加速器によって演算された前記マップ演算の結果データを前記メモリーに格納する請求項１６に記載のメモリーシステム。
【請求項１９】
前記プールメモリーコントローラーが、
前記マップ演算の終了時に前記インターフェースを介して前記プロセッサにインターラプトパケットを伝達し、前記メモリーに格納された前記マップ演算の結果データを読み取り、前記インターフェースを介して前記プロセッサに伝達する請求項１６に記載のメモリーシステム。
【請求項２０】
前記プールメモリーコントローラーが、
前記メモリーに対してインターリビング及びアドレスリマッピング動作のうち少なくとも何れか一つを行う請求項１５に記載のメモリーシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリーシステムに関するものであり、大容量メモリー装置の加速器（Ａｃｃｅｌｅｒａｔｏｒ）に関する技術である。
【背景技術】
【０００２】
最近、スマートフォン、タブレットＰＣのような移動通信端末機の普及が大衆化している。そして、ソーシャルネットワークサービス（ＳＮＳ、Ｓｏｃｉａｌ  Ｎｅｔｗｏｒｋ  Ｓｅｒｖｉｃｅ）、モノ（機械）のネットワーク（Ｍ２Ｍ、Ｍａｃｈｉｎｅ  ｔｏ  Ｍａｃｈｉｎｅ）、センサネットワーク（Ｓｅｎｓｏｒ  Ｎｅｔｗｏｒｋ）の使用が増加している。これにより、データの量、生成速度及びその多様性が幾何級数的に増加している。ビッグデータの処理のためには、メモリーの速度も重要であるが、格納容量が大きいメモリー装置及びメモリーモジュールが要求される。
【０００３】
このため、メモリーシステムは、メモリーの物理的限界を克服しつつデータの格納容量を増やすために複数の統合されたメモリーを具備する。一例として、クラウドデータセンター（Ｃｌｏｕｄ  Ｄａｔａ  Ｃｅｎｔｅｒ）のサーバー構造（Ｓｅｒｖｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ）がビッグデータアプリケーション（Ｂｉｇ−Ｄａｔａ  Ａｐｐｌｉｃａｔｉｏｎ）を効率的に実行させるための構造に変わっている。
ビッグデータを効率的に処理するために、複数のメモリーが統合されたプールメモリー（Ｐｏｏｌｅｄ  Ｍｅｍｏｒｙ）を使用する。プールメモリーは、多い容量と高い帯域幅（Ｂａｎｄｗｉｄｔｈ）を提供でき、インメモリデータベース（Ｉｎ−ｍｅｍｏｒｙ  Ｄａｔａｂａｓｅ）等で有用に使用できる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、プールメモリー内部に加速器を備え、システムのエネルギー消耗を減らし、同時に性能を向上させることができるようにするメモリーシステムを提供する。
【課題を解決するための手段】
【０００５】
本発明の実施形態に係るメモリーシステムは、データを格納する複数のメモリーと、複数のメモリーに格納されたデータを読み取ってマップ演算を行い、マップ演算の結果データを複数のメモリーに格納するプールメモリーコントローラーと、を備える。
【０００６】
また、本発明の他の実施形態によるメモリーシステムは、プロセッサと連結されたファブリックネットワークと、ファブリックネットワークを介してプロセッサとパケットを中継し、プロセッサの要請時メモリーに格納されたデータをプロセッサに伝達するプールメモリーと、を備え、プールメモリーが、メモリーに格納されたデータを読み取ってマップ演算をオフ−ローディングし、マップ演算の結果データをメモリーに格納するプールメモリーコントローラーを備える。
【発明の効果】
【０００７】
本発明の実施形態は、システムの性能を向上させ、データ演算のために必要なエネルギーを節約できるようにする効果を提供する。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態に係るメモリーシステムの概念を説明するための図面である。
【図２】本発明の実施形態に係るメモリーシステムの構成を示す図面である。
【図３】図２のプールメモリーコントローラーに関する詳細構成を示す図面である。
【図４】本発明の実施形態に係るメモリーシステムの動作を説明するための図面である。
【図５】本発明の実施形態に係るメモリーシステムの動作を説明するための図面である。
【図６】本発明の実施形態に係るメモリーシステムの動作を説明するための図面である。
【図７】本発明の実施形態に係るメモリーシステムの性能改善を示す図面。
【発明を実施するための形態】
【０００９】
以下、添付の図面を参照し本発明の実施形態に対して詳しく説明する。本発明の実施形態を説明することにおいて、ある部分が他の部分と『連結』されているという時、これは、『直接的に連結』されている場合だけでなく、その中間に他の素子を間に置いて『電気的に連結』されている場合も含む。また、ある部分がある構成要素を『含む』又は『具備』するという時、これは、特別に反対される記載がない限り、他の構成要素を除外するのではなく、他の構成要素をさらに含むか具備できることを意味する。また、明細書全体の記載において、一部構成要素を単数形で記載したからといって、本発明がそれに限られるものではなく、当該構成要素が複数でなり得ることが分かる。
【００１０】
データセンターアプリケーションは、データの大きさが益々大きくなるにつれ、さらに多いハードウェア資源を必要とする。サーバーアーキテクチャ（Ｓｅｒｖｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ）は、ハードウェア資源をより効率的に使用しようとする方向に進化している。
【００１１】
一例として、クラウドデータセンター（Ｃｌｏｕｄ  Ｄａｔａ  Ｃｅｎｔｅｒ）では、ディープラーニング（Ｄｅｅｐ  Ｌｅａｒｎｉｎｇ）をはじめとする多くのマシンラーニング（Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ）アプリケーションが実行されている。前記のようなディープラーニング、マシンラーニング等のアプリケーションは、大部分時間的地域性（Ｔｅｍｐｏｒａｌ  Ｌｏｃａｌｉｔｙ）が低いため、中央処理装置（ＣＰＵ；Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）よりはグラフィック処理装置（ＧＰＵ；Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等のハードウェア加速器（Ｈａｒｄｗａｒｅ  Ａｃｃｅｌｅｒａｔｏｒ）を介して演算を行うのが一般的である。
【００１２】
ここで、時間的地域性（ｔｅｍｐｏｒａｌ  ｌｏｃａｌｉｔｙ）は、一度接近したデータに比較的近い時間内に再び接近することを意味する。すなわち、前記のアプリケーションは、頻繁に接近されるホット（ｈｏｔ）データよりしばらく接近のないコールド（ｃｏｌｄ）データを使用する。
【００１３】
プロセッサ（例えば、中央処理装置）が加速器（Ａｃｃｅｌｅｒａｔｏｒ）にジョブ（Ｊｏｂ）をオフ−ローディング（Ｏｆｆ−ｌｏａｄｉｎｇ）する過程を検討してみれば、次の通りである。まず、プロセッサのローカルメモリー（Ｌｏｃａｌ  Ｍｅｍｏｒｙ）から加速器のローカルメモリーにデータを移す。以後に、加速器が演算を終了すれば、その結果データをプロセッサの方に再び移さなければならない。
【００１４】
もし、データを移す費用がデータを演算する費用より高ければ、データをできるだけ少なく移すようにアーキテクチャを具現するのが全体費用を節減できる。このために、最近、メモリー駆動コンピューティングコンセプト（Ｍｅｍｏｒｙ−Ｄｒｉｖｅｎ  Ｃｏｍｐｕｔｉｎｇ  Ｃｏｎｃｅｐｔ）が提案された。
【００１５】
図１は、本発明の実施形態によるメモリーシステムの概念を説明するための図面である。
図１の実施形態は、システムオンチップ（ＳｏＣ；Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）、すなわち、プロセッサ中心のコンピューティング（演算装置）構造からメモリー中心のコンピューティング構造にアーキテクチャが変化されることを示す。プロセッサ中心のコンピューティング構造では、一つのシステムオンチップが一つのメモリーと一対一方式で連結される。
【００１６】
メモリー駆動コンピューティング（Ｍｅｍｏｒｙ−Ｄｒｉｖｅｎ  Ｃｏｍｐｕｔｉｎｇ）とは、複数のシステムオンチップがファブリックネットワーク（Ｆａｂｒｉｃ  Ｎｅｔｗｏｒｋ）を介して連結された統合メモリー（Ｕｎｉｆｉｅｄ  Ｍｅｍｏｒｙ）を使用する。システムオンチップ（ＳｏＣ）間にデータを取り交わす時には、メモリー帯域幅（Ｍｅｍｏｒｙ  Ｂａｎｄｗｉｄｔｈ）でデータを取り交わすようになる。
【００１７】
また、ファブリックネットワークで連結された一つの統合メモリーは、データを取り交わすために既存のようにメモリーコピー（Ｍｅｍｏｒｙ  Ｃｏｐｙ）をしなくてもよい。前記のようなメモリー駆動コンピューティング（Ｍｅｍｏｒｙ−Ｄｒｉｖｅｎ  Ｃｏｍｐｕｔｉｎｇ）が常用化されるためには、メモリー意味的相互連結（Ｍｅｍｏｒｙ  Ｓｅｍａｎｔｉｃ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）の高い帯域幅（Ｂａｎｄｗｉｄｔｈ）、低いレイテンシ（Ｌａｔｅｎｃｙ）、一貫性（Ｃｏｈｅｒｅｎｃｙ）等を支援しなければならない。
【００１８】
本発明の実施形態が属する技術分野では、これに関連してトランザクション基盤（Ｔｒａｎｓａｃｔｉｏｎ−ｂａｓｅｄ）メモリーシステムの相互連結（Ｉｎｔｅｒｃｏｎｎｅｃｔ）に対する研究が活発に進行中である。
【００１９】
加速器に関連しては、近接データ処理（Ｎｅａｒ  Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ；ＮＤＰ）或いはプロセッシングインメモリー（Ｐｒｏｃｅｓｓｉｎｇ  Ｉｎ  Ｍｅｍｏｒｙ；ＰＩＭ）のようにワークロード（Ｗｏｒｋｌｏａｄ）の特性による加速器の位置に対する研究も広く進行されている。ここで、プロセッシングインメモリーは、データ処理速度及びデータ転送速度を増加させるために、プロセッサロジックがメモリーセルに密接に結合されたメモリーを意味する。
【００２０】
本発明の実施形態は、多数のメモリーが統合されたプールメモリー構造（Ｐｏｏｌｅｄ  Ｍｅｍｏｒｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ）及びそれに適合するイン−メモリーデータベース運用（Ｉｎ−ｍｅｍｏｒｙ  Ｄａｔａｂａｓｅ  Ｕｓａｇｅ）に関する技術である。以下では、本発明の実施形態に係るマップ−リデュースアプリケーション（Ｍａｐ−Ｒｅｄｕｃｅ  Ａｐｐｌｉｃａｔｉｏｎ）の特徴を説明し、マップ（Ｍａｐ）演算をプールメモリー（Ｐｏｏｌｅｄ  Ｍｅｍｏｒｙ）内の加速器（後述する）で処理する過程を説明する。
【００２１】
図２は、本発明の実施形態によるメモリーシステムの構成を示す図面である。
本発明の実施形態によるメモリーシステム１０は、前記で説明したメモリー駆動コンピューティング（Ｍｅｍｏｒｙ−Ｄｒｉｖｅｎ  Ｃｏｍｐｕｔｉｎｇ）構造を基盤とする。このようなメモリーシステム１０は、複数のプロセッサ（例えば、中央処理装置、ＣＰＵ）２０、ファブリックネットワーク３０、複数のチャンネル４０及び複数のプールメモリー１００を備える。
【００２２】
ここで、複数のプロセッサ２０は、ノードＣＮＤを介してファブリックネットワーク３０と連結される。そして、複数のプロセッサ２０は、ファブリックネットワーク３０を介して複数のプールメモリー１００と連結される。また、プールメモリー１００は、複数のチャンネル４０を介してファブリックネットワーク３０に連結される。すなわち、複数のプールメモリー１００のそれぞれは、Ｎ個のチャンネル４０を介してファブリックネットワーク３０に連結されてもよい。
【００２３】
複数のプールメモリー１００のそれぞれは、複数のメモリー１２０と、複数のメモリー１２０（又はメモリー装置）を制御するためのプールメモリーコントローラー（ＰＭＣ；Ｐｏｏｌｅｄ  Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ）１１０を備える。プールメモリーコントローラー１１０は、バス（ＢＵＳ）を介して各メモリー１２０と連結される。
【００２４】
それぞれのメモリー１２０は、ファブリックネットワーク３０に直ぐ連結されてもよい。しかし、多数のメモリー１２０が一つの統合されたプールメモリー１００に含まれ、プールメモリー１００がファブリックネットワーク３０に連結されてもよい。
【００２５】
プールメモリー１００が多数のメモリー１２０を備える場合、プールメモリーコントローラー１１０は、ファブリックネットワーク３０と多数のメモリー１２０の間で各メモリー１２０を管理する。
【００２６】
ここで、プールメモリーコントローラー１１０は、処理率（Ｔｈｒｏｕｇｈｐｕｔ）を高めるためにメモリーインターリビング（Ｍｅｍｏｒｙ  Ｉｎｔｅｒｌｅａｖｉｎｇ）を行うか、信頼性（Ｒｅｌｉａｂｉｌｉｔｙ）、可用性（Ａｖａｉｌａｂｉｌｉｔｙ）及び耐久性（Ｓｅｒｖｉｃｅａｂｉｌｉｔｙ）等を高めるためにアドレスリマッピング（Ａｄｄｒｅｓｓ  Ｒｅｍａｐｐｉｎｇ）を支援する。
【００２７】
イン−メモリーデータベース（Ｉｎ−ｍｅｍｏｒｙ  Ｄａｔａｂａｓｅ）とは、早い接近のためにデータベース（ＤＢ）をストレージ（Ｓｔｏｒａｇｅ）ではないメインメモリー（Ｍａｉｎ  Ｍｅｍｏｒｙ）に格納するデータベース管理システムである。
【００２８】
現在のサーバーシステム（Ｓｅｒｖｅｒ  Ｓｙｓｔｅｍ）は、メモリー（Ｍｅｍｏｒｙ）の容量を増加させることに物理的な限界がある。これによって、アプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）がデータベースの大きさを各サーバー（Ｓｅｒｖｅｒ）が有しているメモリー容量以上に大きくできない。データベースの大きさが大きくなれば、仕方なく複数のサーバーに分けてデータベースを格納するようになり、複数のサーバーを組み合わせる過程で性能が低下される部分がある。プールメモリー１００は、多い容量と高い帯域幅（Ｂａｎｄｗｉｄｔｈ）を提供するため、イン−メモリーデータベース（Ｉｎ−ｍｅｍｏｒｙ  Ｄａｔａｂａｓｅ）で有用に使用され得る。
【００２９】
図３は、図２のプールメモリーコントローラー１１０に関する詳細構成を示す図面である。
プールメモリーコントローラー１１０は、インターフェース１１１と加速器１１２を備える。ここで、インターフェース１１１は、ファブリックネットワーク３０と加速器１１２及びメモリー１２０の間でパケットを中継する。インターフェース１１１は、複数のチャンネルＣＮを介して加速器１１２と連結される。
【００３０】
本発明の実施形態において、インターフェース１１１は、ファブリックネットワーク３０と加速器１１２及びメモリー１２０の間でパケットを中継するためのスイッチを備えてもよい。本発明の実施形態では、インターフェース１１１がスイッチを含むことを一例として説明したが、パケットを中継するための手段はこれに限定されない。
【００３１】
そして、加速器１１２は、インターフェース１１１を介して印加されるデータの演算処理を行う。例えば、加速器１１２は、インターフェース１１１を介してメモリー１２０から印加されるデータのマップ演算を行い、マップ演算結果に対するデータを、インターフェース１１１を介してメモリー１２０に格納する。
【００３２】
本発明の実施形態では、プールメモリーコントローラー１１０に一つの加速器１１２が含まれることを一例として説明する。しかし、本発明の実施形態はこれに限定されるものではなく、プールメモリーコントローラー１１０に多数の加速器１１２が備えられてもよい。
【００３３】
マップ−リデュース（Ｍａｐ−Ｒｅｄｕｃｅ）アプリケーションは、大容量データ処理を分散並列コンピューティングで処理するための目的で制作したソフトウェアフレームワーク（Ｓｏｆｔｗａｒｅ  Ｆｒａｍｅｗｏｒｋ）である。多様なアプリケーションでこのマップ−リデュースライブラリを使用している。マップ−リデュースアプリケーションにおいて、マップ演算は、（ｋｅｙ、ｖａｌｕｅ）形態で中間情報を抽出すれば、リデュース演算がこれを集めて望む最終結果を出力する。
【００３４】
例えば、マップ−リデュースアプリケーションを介して『毎年の最も高かった地球気温』を検索すると仮定すれば、マップ演算は、テキストファイルを読んで年度及び気温に対する情報を抽出し（年度、気温）形態のリストを出力する。そして、リデュース演算は、この結果を収集して温度順に整列し望む最終結果を出力する。ここで、注目すべき点は、マップ演算に使用されるデータは大体大容量である一方、マップ演算の結果データは比較的大きさが小さいということである。
【００３５】
本発明の実施形態は、マップ−リデュースアプリケーションのマップ演算のように大容量データを処理するが、データ再使用（Ｄａｔａ  Ｒｅｕｓｅ）の少ない演算をプールメモリーコントローラー１１０内の加速器１１２でオフ−ローディング（Ｏｆｆ−ｌｏａｄｉｎｇ）できる。ここで、オフ−ローディングとは、プロセッサ２０からの要請を受信して解釈し演算を行った後、その演算結果を出力する一連の過程を示す。データをプールメモリー１００内で処理するようになれば、プロセッサ２０のノードＣＮＤまでデータを伝達するためのエネルギーを節約でき、性能もさらに高めることができる。
【００３６】
本発明の実施形態に係る加速器１１２は、プールメモリーコントローラー１１０の内に具備されるか、メモリー１２０内に位置してよい。近接データ処理の観点では、データを各メモリー１２０内で処理することがプールメモリーコントローラー１１０の内部で処理することよりさらに効率的である。
【００３７】
プールメモリーコントローラー１１０は、高い帯域幅（Ｂａｎｄｗｉｄｔｈ）を提供するためにメモリーインターリビング（Ｍｅｍｏｒｙ  Ｉｎｔｅｒｌｅａｖｉｎｇ）を行う。このような場合、データが複数のメモリー１２０に分かれて格納される。このようになれば、加速器１１２が必要とするデータもまた複数のメモリー１２０に分かれ得るため、本発明の実施形態では、加速器１１２の物理的な位置がプールメモリーコントローラー１１０内に配置されることを一例として説明する。
【００３８】
ここからは、マップ−リデュースアプリケーションのマップ演算を加速器１１２でオフ−ローディングすることが性能（Ｐｅｒｆｏｒｍａｎｃｅ）とエネルギー（Ｅｎｅｒｇｙ）の観点でメモリーシステム１０全体的にどの程度利得であるかを検討する。
【００３９】
マップ−リデュースアプリケーションのマップ演算のように加速器１１２が処理する演算が単純であれば、加速器１１２における演算時間は、データをメモリーから読み取る帯域幅によって左右される。したがって、加速器１１２の帯域幅を高めることで加速器１１２の演算時間を減らすことができる。
【００４０】
図３に示された通り、一連のプロセッサ２０のノードＣＮＤは、ファブリックネットワーク３０を経てプールメモリー１００と連結される。各ノードＣＮＤは、各プロセッサ２０別に１個のリンク（Ｌｉｎｋ）Ｌ１を有しており、プールメモリーコントローラー１１０内部の加速器１１２が４個のリンクＬ２を有すると仮定する。すなわち、プロセッサ２０のリンクＬ１より加速器１１２のリンクＬ２に対する帯域幅をさらに広く割り当てる。そうすれば、マップ演算を加速器１１２にオフ−ローディングする場合、プロセッサ２０で処理することより４倍早く演算できる。
【００４１】
マップ演算及びリデュース演算をプロセッサ２０が全て行う場合、マップ演算に所要される時間が全体実行時間の９９％であると仮定する。また、一つのプロセッサ２０で複数のアプリケーションが実行されるが、そのうちマップ−リデュースアプリケーションの実行時間が全体アプリケーションの実行時間の１０％を占めると仮定する。マップ演算を加速器１１２にオフ−ローディングする場合、マップ演算時間が１／４に減っていくのにつれ、全体システム性能は８１％向上され得る。
【００４２】
図４乃至図６は、本発明の実施形態によるメモリーシステム１０の動作を説明するための図面である。
まず、図４の経路１によって示されるように、プロセッサ２０は、プールメモリー１００側にマップ演算要請パケットを伝達する。すなわち、プロセッサ２０から送信されたマップ演算要請パケットは、ファブリックネットワーク３０を介してプールメモリーコントローラー１１０のインターフェース１１１を経て加速器１１２に伝達される。ここで、マップ演算要請パケットは、マップ演算に使用されるデータが格納されたアドレス、データの大きさ及びマップ演算結果データを格納する住所等に対する情報が含まれてよい。
【００４３】
次に、プールメモリーコントローラー１１０は、図４の経路２によって示されるように、マップ演算応答パケットをファブリックネットワーク３０を介してプロセッサ２０に伝達する。すなわち、プールメモリーコントローラー１１０は、加速器１１２がマップ演算要請パケットをよく受信したことを知らせる信号をプロセッサ２０に伝達する。
【００４４】
その後、図５の経路３によって示されるように、プールメモリーコントローラー１１０は、各メモリー１２０でマップ演算に必要なデータを読み取り加速器１１２に伝達する。ここで、加速器１１２で必要とするデータが複数のメモリー１２０に分かれてよく、このような場合、加速器１１２は、多数のメモリー１２０からデータを読み取る。そうすれば、加速器１１２は、メモリー１２０から読み取られたデータに基づいてマップ演算を行う。
【００４５】
次いで、プールメモリーコントローラー１１０は、図５の４経路でのように、加速器１１２によって演算されたマップ演算結果データを読み取り、各メモリー１２０に伝達して格納する。加速器１１２によって演算されたデータは多数のメモリー１２０に分かれて格納されてよい。
【００４６】
次に、図６の５経路でのように、プールメモリーコントローラー１１０は、プロセッサ２０側にインターラプトパケットを伝達する。すなわち、プールメモリーコントローラー１１０は、加速器１１２のマップ演算が終了したことを示すインターラプトパケットを、ファブリックネットワーク３０を介してプロセッサ２０に伝達する。
【００４７】
その後、プールメモリーコントローラー１１０は、図６の６経路でのように、メモリー１２０に格納されたマップ演算結果データを読み取り、インターフェース１１１、ファブリックネットワーク３０を介してプロセッサ２０に伝達する。
【００４８】
図７は、本発明の実施形態によるメモリーシステムの性能改善を示す図面である。図７は、加速器１１２でマップ演算を行う場合、加速器１１２のチャンネルＣＮ数を増加させることによって全体システムの性能（Ｐｅｒｆｏｒｍａｎｃｅ）がどの程度増加するかを示す結果グラフである。
【００４９】
加速器１１２のチャンネル（Ｃｈａｎｎｅｌ）ＣＮ数を増加させることによって性能も共に増加することが分かる。しかし、チャンネルＣＮ数を増加させる費用に比べ性能増加量は益々小くなるため、本発明の実施形態では加速器１１２のチャンネルＣＮを２個乃至４個に設定することを一例として説明する。
【００５０】
プロセッサ２０のノードＣＮＤを介してデータを移動させるのに1リンクＬ１当たり１ｐＪ（エネルギー消耗量）／ビート（ｂｉｔ）を消耗すると仮定する。プロセッサ２０でデータを処理するためには、図３でメモリー１２０のバスＢＵＳ、ファブリックネットワーク３０のチャンネル４０及びプロセッサ２０のノードＣＮＤ、すなわち、総３個のリンクを経なければならないため３ｐＪ／ｂｉｔが消耗される。しかし、マップ演算を加速器１１２でオフ−ローディングするようになれば、データがメモリー１２０のバスＢＵＳのみ経るようになるため、データを移動するのに消耗されるエネルギーを１／３である１ｐＪ／ｂｉｔに減らすことができる。全体システムでどれ程のエネルギーが節約されるかを計算するためには、各ハードウェアのスタティックパワー（Ｓｔａｔｉｃ  Ｐｏｗｅｒ）に対し全て考慮しなければならない。
【００５１】
以上のように、本発明の実施形態によるプールメモリー１００は、多い容量と高い帯域幅を提供でき、イン−メモリーデータベース等で有用に使用できる。プールメモリーコントローラー１１０内部に加速器１１２を追加し、加速器１１２でマップ−リデュースアプリケーションのマップ演算をオフ−ローディングすることで、全体システムの性能を高めるとともにエネルギーを節約できる。
【００５２】
本発明が属する技術分野の当業者は、本発明がその技術的思想や必須的特徴を変更せずに他の具体的な形態で実施され得るため、以上で記述した実施形態は全ての面において例示的なものであり、限定的ではないものとして理解しなければならない。本発明の範囲は、詳細な説明よりは後述する特許請求の範囲によって表れるようになり、特許請求の範囲の意味及び範囲、そしてその等価概念から導出される全ての変更又は変形された形態が、本発明の範囲に含まれるものとして解釈されなければならない。
【符号の説明】
【００５３】
１０：  メモリーシステム
２０：  複数のプロセッサ
３０：  ファブリックネットワーク
４０：  複数のチャンネル
１００：  複数のプールメモリー
【図１】
2020017263.tif 000003
【図２】
2020017263.tif 000004
【図３】
2020017263.tif 000005
【図４】
2020017263.tif 000006
【図５】
2020017263.tif 000007
【図６】
2020017263.tif 000008
【図７】
2020017263.tif 000009