(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-14
(45)【発行日】2023-08-22
(54)【発明の名称】コンピュータシステム及びその動作方法
(51)【国際特許分類】
G06F 12/06 20060101AFI20230815BHJP
G06F 11/20 20060101ALI20230815BHJP
G06F 3/06 20060101ALI20230815BHJP
【FI】
G06F12/06 515B
G06F12/06 515H
G06F12/06 550C
G06F11/20 617
G06F3/06 301P
G06F3/06 301Y
G06F12/06 524
(21)【出願番号】P 2018238441
(22)【出願日】2018-12-20
【審査請求日】2021-11-25
(31)【優先権主張番号】10-2018-0035174
(32)【優先日】2018-03-27
(33)【優先権主張国・地域又は機関】KR
【前置審査】
(73)【特許権者】
【識別番号】310024033
【氏名又は名称】エスケーハイニックス株式会社
【氏名又は名称原語表記】SK hynix Inc.
【住所又は居所原語表記】2091, Gyeongchung-daero,Bubal-eub,Icheon-si,Gyeonggi-do,Korea
(74)【代理人】
【識別番号】110000796
【氏名又は名称】弁理士法人三枝国際特許事務所
(72)【発明者】
【氏名】イ ジュン ソ
【審査官】松平 英
(56)【参考文献】
【文献】特開2017-162065(JP,A)
【文献】国際公開第2015/114829(WO,A1)
【文献】特開2011-118744(JP,A)
【文献】米国特許出願公開第2009/0049270(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
11/16-11/20
12/00-12/06
13/16-13/18
(57)【特許請求の範囲】
【請求項1】
ターゲットデータ及び前記
ターゲットデータの住所情報を提供するホストと、
前記
ターゲットデータを格納するメモリシステムと、
を備え、
前記メモリシステムは、
少なくとも1つのメモリ装置グループにグループ化された複数のメモリ装置及び前記複数のメモリ装置の各々を制御するコントローラを備え、
前記コントローラは、
前記
ターゲットデータの種類を反映した前記ホストの要請に応じて前記メモリ装置グループを再設定するグループ設定部と、
前記
ターゲットデータの種類に対応する前記メモリ装置グループにアクセスするプロセッサと、
を備え、
前記
ターゲットデータは、迅速な処理を要する加速化データと迅速な処理を要しない非加速化データとに分類され、
前記ターゲットデータに対する読み出し(Read)回数が予め設定された閾値より大きい場合に前記加速化データとして判断され、
前記グループ設定部は、
前記加速化データを格納する第1のメモリ装置グループ及び前記非加速化データを格納する第2のメモリ装置グループに区分して前記メモリ装置グループを設定するコンピュータシステム。
【請求項2】
前記コントローラは、
前記複数のメモリ装置のそれぞれの状態情報を確認して格納し、前記状態情報に基づいて、前記複数のメモリ装置のうち、バッドメモリ装置を選別する状態確認部をさらに備える請求項1に記載のコンピュータシステム。
【請求項3】
前記状態確認部は、
前記バッドメモリ装置の状態情報を前記ホストに伝達する請求項2に記載のコンピュータシステム。
【請求項4】
前記グループ設定部は、
前記バッドメモリ装置の状態情報に基づいた前記ホストの要請に基づいて、前記メモリ装置グループを再設定する請求項3に記載のコンピュータシステム。
【請求項5】
前記コントローラは、
前記
ターゲットデータの種類に対応するメモリ装置グループ内で、前記ホストによって選択されたメモリ装置のメモリブロックを前記
ターゲットデータのサイズに基づいて選択するデータ割当部をさらに備える請求項1に記載のコンピュータシステム。
【請求項6】
前記プロセッサは、
前記選択されたメモリブロックに前記
ターゲットデータを格納する請求項5に記載のコンピュータシステム。
【請求項7】
前記プロセッサは、
非加速化データの処理より加速化データを優先して処理する加速器を備える請求項1に記載のコンピュータシステム。
【請求項8】
前記加速器は、
DMA(direct memory access)を備える請求項7に記載のコンピュータシステム。
【請求項9】
コンピュータシステムの動作方法において、
コントローラによって複数のメモリ装置を少なくとも1つのメモリ装置グループにグループ化するステップと、
ホストが前記コントローラに
ターゲットデータ及び前記
ターゲットデータの住所情報を提供するステップと、
前記
ターゲットデータの種類を反映して、前記メモリ装置グループを設定するようにホストが前記コントローラに要請するステップと、
前記要請に応じて前記メモリ装置グループを再設定するステップと、
前記
ターゲットデータの種類を反映して、前記再設定されたメモリ装置グループに前記
ターゲットデータをアクセスするステップと、
を含み、
前記
ターゲットデータは、迅速な処理を要する加速化データと迅速な処理を要しない非加速化データとに分類され、
前記ターゲットデータに対する読み出し(Read)回数が予め設定された閾値より大きい場合に前記加速化データとして判断され、
前記メモリ装置グループを再設定するステップは、
前記加速化データを格納する第1のメモリ装置グループ及び前記非加速化データを格納する第2のメモリ装置グループに区分して前記メモリ装置グループを設定するコンピュータシステムの動作方法。
【請求項10】
前記複数のメモリ装置のそれぞれの状態情報を確認して格納し、前記状態情報に基づいて、前記複数のメモリ装置のうち、バッドメモリ装置を選別するステップをさらに含む請求項9に記載のコンピュータシステムの動作方法。
【請求項11】
前記バッドメモリ装置の状態情報を前記ホストに伝達するステップをさらに含む請求項10に記載のコンピュータシステムの動作方法。
【請求項12】
前記メモリ装置グループを設定するステップは、
前記バッドメモリ装置の状態情報に基づいた前記ホストの要請に応じて、前記メモリ装置グループを再設定する請求項11に記載のコンピュータシステムの動作方法。
【請求項13】
前記
ターゲットデータの種類に対応するメモリ装置グループ内で、前記ホストによって選択されたメモリ装置のメモリブロックを前記
ターゲットデータのサイズに基づいて選択するステップをさらに含む請求項9に記載のコンピュータシステムの動作方法。
【請求項14】
前記
ターゲットデータをアクセスするステップは、
前記選択されたメモリブロックに前記
ターゲットデータを書き込む請求項13に記載のコンピュータシステムの動作方法。
【請求項15】
前記
ターゲットデータをアクセスするステップは、
非加速化データの処理より加速化データを優先して処理する請求項9に記載のコンピュータシステムの動作方法。
【請求項16】
メモリシステムにおいて、
少なくとも1つのメモリ装置グループにグループ化された複数のメモリ装置と、
前記複数のメモリ装置の各々を制御するコントローラと、
を備え、
前記コントローラは、
ターゲットデータの種類を反映したホストの要請に応じて前記メモリ装置グループを再設定するグループ設定部と、
前記
ターゲットデータの種類に対応する前記メモリ装置グループにアクセスするプロセッサと、
を備え、
前記
ターゲットデータは、迅速な処理を要する加速化データと迅速な処理を要しない非加速化データとに分類され、
前記ターゲットデータに対する読み出し(Read)回数が予め設定された閾値より大きい場合に前記加速化データとして判断され、
前記グループ設定部は、
前記加速化データを格納する第1のメモリ装置グループ及び前記非加速化データを格納する第2のメモリ装置グループに区分して前記メモリ装置グループを設定するメモリシステム。
【請求項17】
前記コントローラは、
前記複数のメモリ装置のそれぞれの状態情報を確認して格納し、前記状態情報に基づいて、前記複数のメモリ装置のうち、バッドメモリ装置を選別する状態確認部をさらに備える請求項16に記載のメモリシステム。
【請求項18】
前記グループ設定部は、
前記バッドメモリ装置の状態情報に基づいた前記ホストの要請に基づいて前記メモリ装置グループを再設定する請求項17に記載のメモリシステム。
【請求項19】
コンピュータシステムにおいて、
複数のメモリ装置を備えるメモリシステムと、
第1種類データを処理するために第1のメモリグループ及び第2種類データを処理するために第2のメモリグループの各々に前記複数のメモリ装置を個別的に割り当てるための第1要請を前記メモリシステムに提供し、
ターゲットデータが第1種類データであるか、あるいは第2種類データであるかに基づいて、前記第1のメモリグループ及び前記第2のメモリグループのうち、前記ターゲットデータが格納されるターゲットメモリグループを選択し、前記ターゲットデータ及び前記ターゲットメモリグループ内のターゲットメモリブロックに対する住所情報を前記メモリシステムに提供するホストと、
を備え、
前記メモリシステムは、
前記第1要請に基づいて、前記第1のメモリグループ及び前記第2のメモリグループ内に複数のメモリ装置を各々割り当て、前記住所情報に基づいて、前記ターゲットメモリブロックに前記ターゲットデータを書き込み、
前記ホストは、アップデートされた前記複数のメモリ装置の状態に基づいて、前記第1のメモリグループ及び前記第2のメモリグループ内の前記複数のメモリ装置を再割当する第2要請を前記メモリシステムに提供し、
前記第1種類データは、迅速な処理を要する加速化データであり、前記第2種類データは、迅速な処理を要しない非加速化データであ
り、
前記ターゲットデータに対する読み出し(Read)回数が予め設定された閾値より大きい場合に前記加速化データとして判断されるコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムに関し、より具体的には、効率的なデータ処理のためのコンピュータシステム及びその動作方法に関する。
【背景技術】
【0002】
データは、第4次産業革命時代において企業等のビジネスに最も重要な資産となっており、これにより、大規模データを早く送信及び分析するように支援する最新技術に対する需要が次第に増加している。例えば、人工知能、自律走行、ロボット、ヘルスケア、仮想現実(virtual reality、VR)/拡張現実(augmented reality、AR)、スマートホームなどが拡大されるにつれて、サーバやデータセンタに対する需要の増加が予想されている。
【0003】
レガシ(legacy)データセンタは、資源等(例えば、コンピュータ、ネットワーク、ストレージ)を1つの装備内に含める構造であった。しかしながら、未来の大容量データセンタは、資源を各々別に構成し、論理的に資源を再構成する構造を有することができる。例えば、大容量データセンタは、資源を各々ラック(rack)水準でモジュール化し、用途に応じて資源を再構成して供給できる構造を有することができる。したがって、未来の大容量データセンタに使用するのに適した統合型ストレージまたはメモリデバイスが求められている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、データの性格に基づいて、効率的なメモリ割当及び迅速なデータ処理が可能なコンピュータシステム及びその動作方法について提案する。
【課題を解決するための手段】
【0005】
本発明の実施形態に係るコンピュータシステムにおいて、ターゲットデータ及び前記ターゲットデータの住所情報を提供するホストと、前記ターゲットデータを格納するメモリシステムとを備え、前記メモリシステムは、少なくとも1つのメモリ装置グループにグループ化された複数のメモリ装置及び前記複数のメモリ装置の各々を制御するコントローラを備え、前記コントローラは、前記ホストの要請に応じて前記メモリ装置グループを再設定するグループ生成部及び前記再設定されたメモリ装置グループを反映して、前記ターゲットデータを読み出しあるいは書き込みするプロセッサを備えることができる。
【0006】
本発明の実施形態に係るコンピュータシステムの動作方法において、コントローラによって複数のメモリ装置を少なくとも1つのメモリ装置グループにグループ化するステップと、前記メモリ装置グループに対してホストが前記コントローラに再設定要請するステップと、前記コントローラによって前記再設定要請に応じて前記メモリ装置グループを再設定するステップと、前記再設定されたメモリ装置グループを反映してターゲットデータを読み出しあるいは書き込みするステップとを含むことができる。
【0007】
本発明の実施形態に係るメモリシステムにおいて、少なくとも1つのメモリ装置グループにグループ化された複数のメモリ装置及び前記複数のメモリ装置の各々を制御するコントローラを備え、前記コントローラは、前記ホストの要請に応じて前記メモリ装置グループを再設定するグループ生成部及び前記再設定されたメモリ装置グループを反映して前記ターゲットデータを読み出しあるいは書き込みするプロセッサを備えることができる。
【発明の効果】
【0008】
本発明の実施形態によれば、データ性格及びサイズに基づいて、データが格納されるメモリ装置及びメモリブロックを予め割り当て、迅速にデータを処理でき、全体的なシステムの効率性を増加させることができる。
【図面の簡単な説明】
【0009】
【
図2】本発明の実施形態に係るコンピュータラックの構造を概略的に示した図である。
【
図3】本発明の実施形態に係るコンピュータラックのブロック構成を示した図である。
【
図4】本発明の実施形態に係る演算ボードの構成を示した図である。
【
図5】本発明の実施形態に係るメモリボードの構成を示した図である。
【
図6】本発明の実施形態に係るコンピュータシステムの構造を概略的に示した図である。
【
図7】本発明の実施形態に係るコンピュータシステムの動作を概略的に示したフローチャートである。
【
図8】本発明の実施形態に係るコンピュータシステムの動作を概略的に示したフローチャートである。
【発明を実施するための形態】
【0010】
以下、本発明に係る好ましい実施形態を添付した図面を参照して詳細に説明する。下記の説明では、本発明に係る動作を理解するのに必要な部分のみが説明され、それ以外の部分の説明は、本発明の要旨を濁さないように省略されるであろうということに留意すべきである。
【0011】
図1は、データ処理システム10を示した図である。
図1に示すように、データ処理システム10は、複数のコンピュータラック(computing racks、20)と管理インターフェース(management interface、30)、そして、これらの間の通信が可能なようにするネットワーク(network、40)を備えることができる。このようなラックスケール構造(rack-scale architecture)を有するデータ処理システム10は、大容量データ処理のためのデータセンタなどに使用されることができる。
【0012】
複数のコンピュータラック20の各々は、他のコンピュータラック20との組み合わせで1つのコンピュータシステムを実現できる。このようなコンピュータラック20の具体的な構成及び動作についての説明は、後述されるであろう。
【0013】
管理インターフェース30は、ユーザがデータ処理システム10を調整、運営、または管理できるようにするインタラクティブインターフェース(interactive interface)を提供できる。管理インターフェース30は、コンピュータ、マルチプロセッサシステム、サーバ、ラックマウント(rack-mount)サーバ、ボード(board)サーバ、ラップトップ(lap-top)コンピュータ、ノートブックコンピュータ、タブレットコンピュータ、ウェアラブルコンピュータシステム、ネットワーク機器、ウェブ機器、分散コンピュータシステム、プロセッサ基盤システム、及び/又は消費者電子機器を備える、任意類型の演算デバイスとして実現されることができる。
【0014】
一部の実施形態等において、管理インターフェース30は、コンピュータラック20により行われることができる演算機能や、管理インターフェース30により行われることができるユーザインターフェース機能を有する分散システムにより実現されることができる。他の一部の実施形態等において、管理インターフェース30は、ネットワーク40を介して分散された多重コンピュータシステムにより構成され、クラウド(cloud)として動作する仮想サーバ(virtual server)により実現されることができる。管理インターフェース30は、プロセッサ、入力/出力サブシステム、メモリ、データストレージデバイス、及び通信回路を備えることができる。
【0015】
ネットワーク40は、コンピュータラックと管理インターフェース30との間及び/又はコンピュータラック間でのデータを送受信できる。ネットワーク40は、適切な数の様々な有線及び/又は有線ネットワークにより実現されることができる。例えば、ネットワーク40は、有線または無線LAN(local area network)、WAN(wide area network)セルラネットワーク、及び/又はインターネットのように公開的にアクセス可能なグローバルネットワーク(publicly-accessible、global network)により実現されるか、これを含むことができる。さらに、ネットワーク40は、補助的なコンピュータ、ルータ(router)、及びスイッチ等のような適切な数の補助的なネットワークデバイスを含むことができる。また、ネットワーク40は、CCIX(Cache Coherent Interconnect for accelerators)及びGEN-Zのようなインターフェース規格にしたがって連結されることができる。
【0016】
図2は、本発明の実施形態に係るコンピュータラック構造を概略的に示した図である。
【0017】
図2に示すように、コンピュータラック20は、構成要素等の構造、形態、及び呼称などに制限されるものではないが、様々な形態の構成要素を備えることができる。例えば、コンピュータラック20は、複数のドロワー(drawer)21~29を備えることができる。複数のドロワー21~29の各々は、複数のボード(board)を備えることができる。
【0018】
様々な実施形態において、コンピュータラック20は、適切な数の演算ボード(compute board)、メモリボード(memory board)、及び/又は相互接続ボード(interconnect board)の組み合わせにより実現されることができる。ここでは、コンピュータラック20が複数のボードの組み合わせにより実現されることと定義されているが、これに代えて、ドロワー、モジュール、トレイ、ボード、シャシ、またはユニットなどの様々な名前で実現されることと定義され得ることに留意すべきである。このようなコンピュータラック20の構成要素等は、実現の都合上、機能別に分類及び区別される構造を有することができる。制限されるものではないが、コンピュータラック20は、上端から相互接続ボード、演算ボード、メモリボードの順序に分類された構造を有することができる。このようなコンピュータラック20及びこれにより実現されるコンピュータシステムは、「ラックスケールシステム(rack-scale system)」または「分類システム(disaggregated system)」として命名されることができる。
【0019】
様々な実施形態において、コンピュータシステムは、1つのコンピュータラック20により実現されることができる。これに代えて、コンピュータシステムは、2個以上のコンピュータラックに含まれる全ての構成要素により実現されるか、2個以上のコンピュータラックに含まれる一部の構成要素等の組み合わせにより実現されるか、1つのコンピュータラック20に含まれる一部の構成要素等により実現されることができる。
【0020】
様々な実施形態において、コンピュータシステムは、コンピュータラック20に含まれる適切な数の演算ボード、メモリボード、及び相互接続ボード(interconnect board)の組み合わせにより実現されることができる。例えば、コンピュータシステム20Aは、2個の演算ボード、3個のメモリボード、及び1個の相互接続ボードにより実現されることができる。他の例として、コンピュータシステム20Bは、3個の演算ボード、2個のメモリボード、及び1個の相互接続ボードにより実現されることができる。さらに他の例として、コンピュータシステム20Cは、1個の演算ボード、4個のメモリボード、及び1個の相互接続ボードにより実現されることができる。
【0021】
例え、
図2では、コンピュータラック20が適切な数の演算ボード、メモリボード、及び/又は相互接続ボードの組み合わせにより実現される場合を示しているが、コンピュータラック20は、通常のサーバなどで確認されることができる、パワーシステム、冷却システム、入力/出力デバイス等のような追加的な構成要素を備えることができる。
【0022】
図3は、本発明の実施形態に係るコンピュータラック20のブロック構成を示した図である。
【0023】
図3に示すように、コンピュータラック20は、複数の演算ボード(compute boards、200)、複数のメモリボード(memory boards、400)、及び相互接続ボード(interconnect board、300)を備えることができる。複数の演算ボード200は、プール演算ボード(pooled compute boards)、プール演算システムなどと呼ばれることができる。同様に、複数のメモリボードは、プールメモリボード(pooled memory board)、プールメモリシステムなどと呼ばれることができる。ここでは、コンピュータシステムが複数のボードの組み合わせにより実現されることと定義されているが、これに代えて、ドロワー、モジュール、トレイ、ボード、シャシ、またはユニットなどの様々な名前で実現されることと定義され得ることに留意すべきである。
【0024】
複数の演算ボード200の各々は、1つまたはそれ以上のプロセッサ、プロセシング/コントロール回路、または中央処理処置(central processing unit、CPU)のようなプロセシング要素を備えることができる。
【0025】
複数のメモリボード400の各々は、複数の揮発性メモリ(volatile memory)及び/又は不揮発性メモリ(nonvolatile memory)などのような様々な形態のメモリを備えることができる。例えば、複数のメモリボード400の各々は、複数のDRAM(Dynamic Random Access Memory)、フラッシュメモリ(flash memory)、メモリカード、ハードディスクドライブ(hard disk drive、HDD)、ソリッドステートドライブ(solid state drive、SSD)、及び/又はこれらの組み合わせを含むことができる。
【0026】
複数のメモリボード400の各々は、演算ボード200の各々に含まれる1つ以上のプロセシング要素により分割されるか、割り当てられるか、または指定されて使用されることができる。また、複数のメモリボード400の各々は、演算ボード200により初期化及び/又は実行されることができる1つ以上のオペレーティングシステム(operating system、OS)などを格納することができる。
【0027】
相互接続ボード300は、演算ボード200の各々に含まれる1つ以上のプロセシング要素により分割、割当、または指定されて使用されることができる、任意の通信回路、デバイス、またはこれらの組み合わせにより実現されることができる。例えば、相互接続ボード300は、任意個数のネットワークインターフェースポート、カード、またはスイッチとして実現されることができる。相互接続ボード300は、通信を実行させるための、1つ以上の有線または有線通信技術等と関連したプロトコルを使用することができる。例えば、相互接続ボード300は、PCIe(Peripheral Component Interconnect Express)、QPI(QuickPath Interconnect)、イーサネット(登録商標)(Ethernet)などのようなプロトコルにしたがって演算ボード200とメモリボード400との間の通信を支援できる。さらに、相互接続ボード300は、CCIX(Cache Coherent Interconnect for accelerators)及びGEN-Zのようなインターフェース規格にしたがって演算ボード200と連結されることができる。
【0028】
図4は、本発明の実施形態に係る演算ボード200の構成を示した図である。
【0029】
図4に示すように、演算ボード200は、1つ以上の中央処理処置(central processing unit、CPU、210)、1つ以上のローカルメモリ(local memory、220)、及び入出力(input/output、I/O)インターフェース(interface、230)を備えることができる。
【0030】
CPU(210)は、
図3に示された複数のメモリボード400の中で使用するための少なくとも1つのメモリボードを分割、割当、または指定することができる。また、CPU(210)は、分割、割当、または指定された少なくとも1つのメモリボードを初期化し、これらを介してデータの読み出し動作、書き込み(または、プログラム)動作などを行うことができる。
【0031】
ローカルメモリ220は、CPU(210)の動作実行中に必要なデータを格納することができる。様々な実施形態において、1つのローカルメモリ220は、1つのCPU(210)に一対一に対応する構造を有することができる。
【0032】
I/Oインターフェース230は、
図3の相互接続ボード300を介してのCPU(210)とメモリボード400との間でのインターフェーシングを支援できる。I/Oインターフェース230は、1つ以上の有線または有線通信技術等と関連したプロトコルを使用して、CPU(210)から相互接続ボード300への送信データを出力し、相互接続ボード300からCPU(210)への受信データを入力できる。例えば、I/Oインターフェース230は、PCIe(Peripheral Component Interconnect Express)、QPI(QuickPath Interconnect)、イーサネット(登録商標)(Ethernet)などのようなプロトコルにしたがってCPU(210)と相互接続ボード300との間の通信を支援できる。さらに、I/Oインターフェース230は、CCIX(Cache Coherent Interconnect for accelerators)及びGEN-Zのようなインターフェース規格にしたがってCPU(210)と相互接続ボード300との間の通信を支援できる。
【0033】
図5は、本発明の実施形態に係るメモリボード400の構成を示した図である。
【0034】
図5に示すように、メモリボード400は、コントローラ410と複数のメモリ420とを備えることができる。複数のメモリ420は、コントローラ410の制御によってデータを格納(または、書き込み)し、格納されたデータを出力(または、読み出し)することができる。複数のメモリ420は、第1のグループのメモリ420A、第2のグループのメモリ420B、及び第3のグループのメモリ420Cを備えることができる。第1のグループのメモリ420A、第2のグループのメモリ420B、及び第3のグループのメモリ420Cは、互いに同じ特性を有することができ、互いに異なる特性を有することもできる。様々な実施形態等において、第1のグループのメモリ420A、第2のグループのメモリ420B、及び第3のグループのメモリ420Cは、格納容量(capacity)またはレイテンシ(latency)の側面で互いに異なる特性を有するメモリでありうる。
【0035】
コントローラ410は、データコントローラ(data controller、510)、メモリコントローラ(memory controller、MC、520A-520C)、及びI/Oインターフェース530を備えることができる。
【0036】
データコントローラ510は、
図3の演算ボード200と複数のメモリ420との間で送受信されるデータを制御できる。例えば、書き込み要請またはコマンドに応答して、データコントローラ510は、演算ボード200からの書き込みのためのデータを受信し、このデータを複数のメモリ420のうち、該当するメモリに書き込む書き込み動作を制御できる。他の例として、読み出し要請またはコマンドに応答して、データコントローラ510は、演算ボード200から複数のメモリ420のうち、特定メモリに格納されたデータを読み出し、読み出しデータを演算ボード200のうち、該当する演算ボードに出力する読み出し動作を制御できる。
【0037】
メモリコントローラ520A~520Cは、データコントローラ510と複数のメモリ420との間に位置し、これらの間でのインターフェーシングを支援できる。メモリコントローラ520は、複数のメモリ420に含まれる第1のグループのメモリ420A、第2のグループのメモリ420B、及び第3のグループのメモリ420Cの各々に対応するメモリコントローラ(iMC0、520A)、メモリコントローラ(iMC1、520B)、メモリコントローラ(iMC2、520C)を備えることができる。メモリコントローラ(iMC0、520A)は、データコントローラ510と第1のグループのメモリ420Aとの間に位置し、これらの間でのデータ送受信を支援できる。メモリコントローラ(iMC1、520B)は、データコントローラ510と第2のグループのメモリ420Bとの間に位置し、これらの間でのデータ送受信を支援できる。メモリコントローラ(iMC2、520C)は、データコントローラ510と第3のグループのメモリ420Cとの間に位置し、これらの間でのデータ送受信を支援できる。例えば、第3のグループのメモリ420Cがフラッシュメモリである場合、メモリコントローラ(iMC2、520C)は、フラッシュコントローラ(flash controller)でありうる。第1のグループないし第3のグループのメモリ420A~420Cは、説明の便宜のための例示であり、これに制限されるものではない。
【0038】
I/Oインターフェース530は、
図3の相互接続ボード300を介してのデータコントローラ510と演算ボード200との間でのインターフェーシングを支援できる。I/Oインターフェース530は、1つ以上の有線または有線通信技術等と関連したプロトコルを使用して、データコントローラ510から相互接続ボード300への送信データを出力し、相互接続ボード300からデータコントローラ510への受信データを入力できる。例えば、I/Oインターフェース530は、PCIe(Peripheral Component Interconnect Express)、QPI(QuickPath Interconnect)、イーサネット(登録商標)(Ethernet)などのようなプロトコルにしたがってデータコントローラ510と相互接続ボード300との間の通信を支援できる。さらに、I/Oインターフェース530は、CCIX(Cache Coherent Interconnect for accelerators)及びGEN-Zのようなインターフェース規格にしたがってデータコントローラ510と相互接続ボード300との間の通信を支援できる。
【0039】
前述したように、未来のデータセンタのようなサーバシステムまたはデータ処理システムは、演算ボード、メモリ、またはストレージボードなどのような複数のボードが単位ラック内で区別されて装着される構造を有することができる。このとき、1つのメモリボードには、様々なユーザワークロード(user workload)を充足させるために、互いに異なる特性を有する複数のメモリが含まれ得る。すなわち、1つのメモリボードは、DRAM、PCRAM、MRAM、STT-RAM、フラッシュメモリのような複数のメモリが統合された形態を有する統合メモリデバイス(convergence memory device)でありうる。このような統合メモリデバイスは、各メモリが互いに異なる特性を有するので、様々な使用モデル(usage model)に活用されることができる。
【0040】
図6は、本発明の実施形態に係るコンピュータシステム600の構造を概略的に示した図である。本発明の実施形態に係るコンピュータシステム600は、
図2において説明されたコンピュータシステムと対応することができる。
【0041】
コンピュータシステム600は、ホスト610及びメモリシステム630を備えることができる。
【0042】
ホスト610は、
図3及び
図4において説明された少なくとも1つ以上の演算ボード200及び相互接続ボード300を備えることができる。
【0043】
ホスト610は、加速化判断部617を備えることができる。加速化判断部617は、処理対象となるターゲットデータの性格に基づいて、当該ターゲットデータが加速化データであるか、非加速化データであるか判断することができる。加速化データとは、迅速な処理を要するデータである。逆に、非加速化データは、迅速な処理を要しないデータである。迅速な処理を要する基準は、ユーザが設定できる。例えば、ターゲットデータに対する読み出し(Read)回数が予め設定された閾値より大きい場合、加速化判断部617は、当該ターゲットデータを加速化データとして判断することができる。さらに他の例を挙げれば、ターゲットデータが接近した回数が予め設定された閾値より大きい場合、加速化判断部617は、ターゲットデータが加速化データであると判断することができる。ただし、これは、実施形態に該当し、これに制限されるものではない。
【0044】
加速化判断部617が、ターゲットデータが加速化データであるか、あるいは非加速化データであるか判断し、ホスト610は、加速化判断部617の判断に基づいて、ターゲットデータが格納されるメモリ装置のグループを選択できる。さらには、ホスト610は、選択されたメモリ装置グループ内の複数のメモリ装置のうち、ターゲットデータが格納されるメモリ装置をターゲットデータに対応する住所情報に基づいて選択することができる。すなわち、メモリ装置グループが、加速化データが格納される第1のメモリ装置グループ667及び非加速化データが格納される第2のメモリ装置グループ669に区分された場合、ターゲットデータが加速化データであれば、ホスト610は、ターゲットデータが格納されるメモリ装置グループとして第1のメモリ装置グループ667を選択でき、さらには、ホスト610は、第1のメモリ装置グループに含まれたメモリ装置をターゲットデータに対応する住所情報に基づいて選択することができる。
【0045】
また、ホスト610は、以下において説明される複数のメモリ装置の各々に対応する住所情報及び状態情報を格納できるキャッシュメモリ613を備えることができる。そして、ホスト610は、周期的に複数のメモリ装置のそれぞれの住所情報及び状態情報をアップデートできる。キャッシュメモリ613は、
図4において説明された地域メモリ220と対応することができる。
【0046】
上記のように、ホスト610は、複数のメモリシステムの各々に対してデータを分割、割当、または指定することができる。
【0047】
メモリシステム630は、
図5において説明されたメモリボード200と対応することができる。メモリシステム630は、コントローラ633及び複数のメモリ装置で構成されたメモリ装置プール635を備えることができる。
図6には、1つのメモリシステム630が図示されているが、これは、1つの例示であり、これに制限されるものではない。
【0048】
コントローラ633は、
図5において説明されたコントローラ410と対応することができる。
【0049】
コントローラ633は、ホストインターフェース651、データ割当部653、状態確認部655、グループ設定部657、プロセッサ659、及びメモリインターフェース663を備えることができる。
【0050】
ホストインターフェース651は、
図5において説明されたI/Oインターフェース530と対応することができる。ホストインターフェース651は、ホスト610のコマンド及びデータを処理し、様々なインターフェースプロトコルのうち、少なくとも1つを介してホスト610と通信するように構成されることができる。例えば、
図5において説明されたように、PCIe(Peripheral Component Interconnect Express)、QPI(QuickPath Interconnect)、イーサネット(登録商標)(Ethernet)などのようなプロトコルにしたがってホスト610との通信を支援できる。
【0051】
データ割当部653は、ホスト610から伝達されたデータのサイズを判断できる。さらには、データ割当部653は、メモリ装置プール635内の複数のメモリ装置のそれぞれの様々な格納容量を有するメモリブロックの住所情報を格納できる。それにより、データ割当部653は、データサイズ及び住所情報に基づいて、当該データが格納されるメモリブロックを選択できる。例えば、ターゲットデータが加速化データであり、ターゲットデータのサイズが80KBであり、ターゲットデータがプログラムされるメモリ装置に80KBサイズを有するメモリブロック及び40KBサイズのメモリブロックが存在すると仮定する。データ割当部653は、ホスト610により選択された第1のメモリ装置グループ667内のメモリ装置に含まれたメモリブロックのうち、80KBと同じであるか、大きい容量を有したメモリブロックを選択できる。したがって、データ割当部653は、前記80KBサイズを有するメモリブロックに対応する住所情報に基づいて、当該メモリブロックを選択できる。ただし、80KBサイズのメモリブロックが存在しないならば、データ割当部653は、複数の40KBサイズを有するメモリブロックに対応する住所情報に基づいて複数のメモリブロックを選択できる。上記のように、データ割当部653は、データの量によってメモリブロックを効率的に管理して、データが格納され得る容量を容易に確保することができる。また、データ割当部653の動作によって、メモリブロックのサイクリング回数が減少され得るので、メモリセルのストレスが減少され得るし、これにより、メモリ装置プール635に含まれた複数のメモリ装置の信頼度が改善され得る。
【0052】
状態確認部655は、周期的にメモリ装置プール635内に含まれた複数のメモリ装置のそれぞれの状態を確認して、状態情報として格納することができる。具体的に、状態情報は、複数のメモリ装置の各々に含まれたメモリブロックのイレースカウント、エラーカウント、読み出しカウントを含むことができる。状態確認部655は、複数のメモリ装置の各々に対応するイレースカウント、エラーカウント、読み出しカウントをホスト610から伝達されるコマンドに基づいてカウントすることができる。例えば、ホスト610が特定メモリ装置に含まれた特定メモリブロックに対してイレースコマンドをイシューした場合、当該メモリブロックに対するイレース動作が行われることとは別に、状態確認部655は、当該メモリブロックに対するイレースコマンドに基づいて1回カウントすることができる。さらには、状態確認部655は、複数のメモリ装置の各々に含まれた複数のメモリブロックの各々に対応するイレースカウントを格納できる。さらに、状態確認部655は、イレースカウントの各々を対応する複数のメモリ装置の各々に格納することができる。今後、状態確認部655が複数のメモリ装置の各々に含まれた複数のメモリブロックの各々に対応するイレースカウントを確認するとき、状態確認部655は、状態確認部655に格納されているイレースカウント及び複数のメモリ装置の各々に格納されているイレースカウントを介して複数のメモリ装置の各々に含まれた複数のメモリブロックの各々に対応するイレースカウントを確認できる。
【0053】
そして、状態確認部655は、状態情報に基づいて複数のメモリ装置のうち、バッドメモリ装置(bad memory device)を検出できる。例えば、複数のメモリ装置の各々は、100個のメモリブロックを備えており、イレースカウントが「10」回以上の値を有するメモリブロックがバッドメモリブロック(bad memory block)と仮定し、「60」個以上のバッドメモリブロックが含まれたメモリ装置はバッドメモリ装置と仮定する。このとき、状態確認部655は、イレースカウントに基づいて、複数のメモリ装置の各々に含まれたバッドメモリブロックの個数を確認できる。仮りに、特定のメモリ装置が「10」回以上のイレースカウント値を有するメモリブロックを「60」個以上含むならば、状態確認部655は、当該メモリ装置をバッドメモリ装置として検出することができる。
【0054】
さらには、状態確認部655は、選別されたバッドメモリ装置に関する情報(以下、バッドメモリ装置情報)をホスト610に伝達することができ、ホスト610は、バッドメモリ装置の情報を伝達されてキャッシュメモリ613に格納されたバッドメモリ装置情報をアップデートすることができる。バッドメモリ装置情報は、当該メモリ装置のID情報を含むことができる。
【0055】
グループ設定部657は、ホスト610要請に基づいて、メモリ装置プール635内のメモリ装置グループを設定できる。具体的に、グループ設定部657は、メモリ装置プール635内の複数のメモリ装置に対して加速化データが格納される第1のメモリ装置グループ667及び非加速化データが格納される第2のメモリ装置グループ669に区分して設定することができる。
【0056】
さらには、グループ設定部657は、ホスト610の要請に応じて既存に設定されたメモリ装置グループを可変して再設定することができる。例えば、ホスト610が状態確認部655から伝達されたバッドメモリ装置情報に基づいて、第1のメモリ装置グループ667に含まれたバッドメモリ装置を第2のメモリ装置グループ669に変更するようにメモリ装置グループに対する再設定を要請した場合、グループ設定部657は、ホスト610要請に応じて当該バッドメモリ装置を第2のメモリ装置グループ669に含まれるようにメモリ装置グループを再設定できる。また、加速化データに対する処理要請が多い場合、グループ設定部657は、メモリ装置プール635全体を加速化データだけを格納できるようにメモリ装置グループを設定できる。
【0057】
グループ設定部657は、メモリシステム630がブーティングされる当時だけでなく、メモリシステム630が動作する途中にもメモリ装置グループを設定できる。
【0058】
プロセッサ659は、ターゲットデータをメモリ装置プール635内の複数のメモリ装置に対して読み出しあるいは書き込みすることができる。プロセッサ659は、ホスト610で選択されたメモリ装置グループによって異なるようにデータを処理できる。仮りに、ターゲットデータが加速化データであれば、プロセッサ659は、第1のメモリ装置グループ667に含まれたメモリ装置に対して読み出しあるいは書き込みすることができる。それに対し、ターゲットデータが非加速化データであれば、プロセッサ659は、第2のメモリ装置グループ669に含まれたメモリ装置に対して読み出しあるいは書き込みすることができる。
【0059】
さらには、プロセッサ659は、非加速化データの処理より加速化データの処理に優先権を付与できる加速器661を備えることができる。加速器661は、DMA(Direct Memory Access)を備えることができ、加速器661は、DMAを介してターゲットデータを早く処理することができる。具体的に、加速器661は、第1のメモリ装置グループ667に含まれた複数のメモリ装置のそれぞれのメモリマップを格納することができる。したがって、加速器661は、DMAに格納された第1のメモリ装置グループ667に含まれた複数のメモリ装置のそれぞれのメモリマップに基づいてターゲットデータを直接処理することができる。すなわち、コントローラ633が管理する別のメモリマップをスキャンしなくても、加速器661は、DMAに含まれたメモリマップを活用してターゲットデータを早く処理することができる。さらには、DMAは、全てのデータ送信が終了されれば、ホスト610に割り込み信号を送信できる。したがって、加速器661は、当該加速化データを先に選択されたメモリブロックに基づいてプログラムすることができる。さらには、加速器661は、CAIA(Coherent Accelerator Interface Architecture)を利用できる。CAIAは、標準PCIeバスを使用して加速器661をコンピュータシステム600に一貫して連結するためのインターフェース構造である。
【0060】
メモリインターフェース(以下、メモリI/F、663)は、コントローラ633とメモリ装置プール635との間でのインターフェーシングを支援できる。例えば、メモリI/F(663)は、コントローラ633とメモリ装置プール635との間でのデータ送受信を支援できる。また、メモリI/F(663)は、PCIe、DIMM(Duel in-line memory module)、NVD(non-volatile DIMM)などのようなプロトコルにしたがってコントローラ633とメモリ装置プール635との間の通信を支援できる。さらには、メモリ装置プール635が互いに異なる種類の複数のメモリ装置で構成されても、メモリI/F(663)は、一種のプロトコル、例えば、DIMMEで構成されることができる。
【0061】
メモリ装置プール635は、複数のメモリ装置を備えることができる。複数のメモリ装置は、
図5において説明された複数のメモリ420と対応することができる。メモリ装置プール635内の複数のメモリ装置は、PCRAM、DRAM、NAND、STT-MRAM、ReRAMなどで構成されることができる。
【0062】
前述したように、メモリ装置プール635は、グループ設定部657によって第1のメモリ装置グループ667と第2のメモリ装置グループ669とに区分されることができる。また、メモリ装置プール635に含まれた複数のメモリ装置は、種類が互いに異なることができる。例えば、メモリ装置プール635は、複数のDRAMと複数のPCRAMとで構成されることができる。仮りに、メモリ装置プール635が30個のDRAMと70個のPCRAMとで構成されているならば、前述した第1のメモリ装置グループ667は、20個のDRAMで構成され、第2のメモリ装置グループ669は、10個のDRAM及び70個のPCRAMで構成されることができる。さらに他の例として、第1のメモリ装置グループ667は、30個のDRAM及び10個のPCRAMで構成され、第2のメモリ装置グループ669は、60個のPCRAMで構成されることができる。これは、1つの実施形態であり、これに制限されるものではない。
【0063】
図7は、本発明の一実施形態に係るコンピュータシステム600の動作を概略的に示したフローチャートである。
【0064】
まず、ステップS701において、
図6において説明されたように、加速化判断部617は、ターゲットデータが加速化データであるか、あるいは非加速化データであるか判断することができる。
【0065】
仮りに、ターゲットデータが加速化データであれば(ステップS701において「Yes」)、ステップS703において、ホスト610は、ターゲットデータを格納するために、第1のメモリ装置グループ667を選択することができる。
【0066】
それに対し、ターゲットデータが非加速化データであれば(ステップS701において「No」)、ステップS705において、ホスト610は、ターゲットデータを格納するために、第2のメモリ装置グループ669を選択することができる。
【0067】
さらには、ステップS707において、ホスト610は、ターゲットデータに対応する住所情報に基づいてメモリ装置を選択することができる。例えば、ターゲットデータが加速化データである場合、ホスト610は、第1のメモリ装置グループ667内でターゲットデータに対応する住所情報に基づいてメモリ装置を選択できる。それに対し、ターゲットデータが非加速化データである場合、ホスト610は、第2のメモリ装置グループ669内でターゲットデータに対応する住所情報に基づいてメモリ装置を選択できる。
【0068】
ステップS701~ステップS707までの動作は、ホスト610によって行われることができる。
【0069】
そして、ステップS709において、ホスト610は、コントローラ633にターゲットデータを伝達できる。
【0070】
それから、ステップS711において、データ割当部653は、ターゲットデータのサイズを判断できる。さらには、
図6において説明されたように、データ割当部653は、ターゲットデータのサイズに基づいて、前記選択されたメモリ装置のメモリブロックを選択できる。
【0071】
ステップS713において、プロセッサ659は、ターゲットデータを前記選択されたメモリ装置のメモリブロックにプログラムすることができる。例えば、ターゲットデータが加速化データである場合、プロセッサ659は、第1のメモリ装置グループ667内の選択されたメモリ装置の少なくとも1つ以上のメモリブロックに前記ターゲットデータをプログラムすることができる。それに対し、ターゲットデータが非加速化データであれば、プロセッサ659は、第2のメモリ装置グループ669内の選択されたメモリ装置の少なくとも1つ以上のメモリブロックに前記ターゲットデータをプログラムすることができる。
【0072】
図8は、本発明の一実施形態に係るコンピュータシステム600の動作を概略的に示したフローチャートである。具体的に、
図8は、メモリ装置プール635を調節するコンピュータシステム600の動作を示したフローチャートである。
【0073】
ステップS801において、状態確認部655は、周期的にメモリ装置プール635内の複数のメモリ装置のそれぞれの状態を確認できる。さらには、状態確認部655は、メモリ装置プール635内の複数のメモリ装置のそれぞれの状態情報をメモリI/F(663)を介して伝達されることができる。
【0074】
ステップS803において、状態確認部655は、受信された状態情報に基づいて、
図6において説明されたように、バッドメモリ装置を検出できる。
【0075】
ステップS805において、状態確認部655は、検出されたバッドメモリ装置に関する情報をホストI/F(651)を介してホスト610に知らせることができる。
【0076】
ステップS807において、ホスト610は、状態確認部655から伝達されたバッドメモリ装置情報に基づいて、メモリ装置グループ、すなわち、メモリ装置プール635内のメモリ装置グループを再設定するためのコントローラ633に要請することができる。例えば、ホスト610は、第1のメモリ装置グループ667に含まれたバッドメモリ装置を第2のメモリ装置グループ669に属するようにメモリ装置グループを調節するようにコントローラ633に要請することができる。さらに、ホスト610が自体的に判断して、データの処理量によってメモリ装置グループを調節するために要請することができる。さらに他の例を挙げれば、持続的に加速化データのみを処理しなければならない場合、ホスト610は、メモリ装置プール635全体を第1のメモリ装置グループ667に活用するようにコントローラ633に要請することができる。
【0077】
ステップS809において、前記ホスト610の要請に基づいて、グループ設定部657は、メモリ装置グループを再設定できる。例えば、グループ設定部657は、第1のメモリ装置グループ667及び第2のメモリ装置グループ669の範囲を設定できる。さらには、図面に図示されてはいないが、グループ設定部657は、メモリ装置グループを設定した後、当該事実をホスト610に知らせることができ、ホスト610は、前記設定事実を伝達されて複数のメモリ装置のそれぞれの住所情報をアップデートすることができる。
【0078】
本発明に係るコンピュータシステムは、ホスト610から入力されるデータの量を判断して、当該データ量により格納するメモリ装置及びメモリブロックを設定し、ホスト610から入力されるデータの性格によって加速化可否を判断して、加速化あるいは非加速化して設定された領域に格納することにより、メモリの格納効率及び処理速度を向上させることができる。
【0079】
一方、本発明の詳細な説明では、具体的な実施形態に関して説明したが、本発明の範囲から逸脱しない限度内で様々な変形が可能であることはもちろんである。したがって、本発明の範囲は、説明された実施形態に限定されて決められてはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものなどにより決められるべきである。