(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-08
(45)【発行日】2023-06-16
(54)【発明の名称】マシンラーニング装置、及びそれを利用したマシンラーニングシステム
(51)【国際特許分類】
G06N 20/00 20190101AFI20230609BHJP
G06N 3/06 20060101ALI20230609BHJP
G06F 12/00 20060101ALI20230609BHJP
【FI】
G06N20/00
G06N3/06
G06F12/00 560F
(21)【出願番号】P 2019005632
(22)【出願日】2019-01-17
【審査請求日】2021-12-21
(31)【優先権主張番号】10-2018-0059754
(32)【優先日】2018-05-25
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】310024033
【氏名又は名称】エスケーハイニックス株式会社
【氏名又は名称原語表記】SK hynix Inc.
【住所又は居所原語表記】2091, Gyeongchung-daero,Bubal-eub,Icheon-si,Gyeonggi-do,Korea
(74)【代理人】
【識別番号】100118913
【氏名又は名称】上田 邦生
(74)【代理人】
【識別番号】100142789
【氏名又は名称】柳 順一郎
(74)【代理人】
【識別番号】100163050
【氏名又は名称】小栗 眞由美
(74)【代理人】
【識別番号】100201466
【氏名又は名称】竹内 邦彦
(72)【発明者】
【氏名】ナムヨン, アン
【審査官】山本 俊介
(56)【参考文献】
【文献】特開平06-347563(JP,A)
【文献】特開2018-028910(JP,A)
【文献】特開2002-207713(JP,A)
【文献】特開平07-036699(JP,A)
【文献】特開平11-015773(JP,A)
【文献】国際公開第2017/171769(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
メモリモジュールインタフェースを介してホスト装置から提供されたローデータ及びコマンドデータ、前記ローデータがマシンラーニングされたマシンラーニングデータ、並びに前記マシンラーニングデータに対する位置データを格納するデータ格納部と、
既にプログラミングされたマシンラーニングロジックに従って前記ローデータを処理することで前記マシンラーニングデータを生成するマシンラーニングロジック部と、
前記コマンドデータに基づき、前記データ格納部から前記ローデータを読み取って前記マシンラーニングロジック部に提供し、前記マシンラーニングデータを前記位置データとともに前記データ格納部に書き込むマシンラーニングコントローラと、
を備えるマシンラーニング装置。
【請求項2】
前記データ格納部が、DIMM(Dual-Inline Memory Module)インタフェースを介して前記ホスト装置とデータの送信/受信を行う請求項1に記載のマシンラーニング装置。
【請求項3】
前記データ格納部は複数のメモリ素子を備え、各メモリ素子が、前記ローデータ、前記コマンドデータ、前記マシンラーニングデータ及び前記位置データが格納される領域が予め設定されるように構成される請求項1に記載のマシンラーニング装置。
【請求項4】
前記マシンラーニングロジック部が、前記マシンラーニングロジックがプログラミングされた複数のFPGA(Field Programmable Gate Array)を備える請求項1に記載のマシンラーニング装置。
【請求項5】
前記複数のFPGAが、それぞれ独立して前記マシンラーニングコントローラから前記ローデータの提供を受けてマシンラーニングを行い、前記マシンラーニングデータを前記マシンラーニングコントローラに提供する請求項4に記載のマシンラーニング装置。
【請求項6】
前記複数のFPGAが、前記マシンラーニングロジックを順次行うことで、最終のFPGAが前記マシンラーニングデータを前記マシンラーニングコントローラに提供する請求項4に記載のマシンラーニング装置。
【請求項7】
前記複数のFPGAが、それぞれ、
前記マシンラーニングコントローラから提供された前記ローデータを格納する入力バッファと、
マシンラーニングデータを格納する出力バッファと、
前記マシンラーニングロジックがプログラミングされ、プログラミングロジックに従い前記入力バッファに格納された前記ローデータを処理して前記出力バッファに出力するロジック部と、
を備える請求項4に記載のマシンラーニング装置。
【請求項8】
前記マシンラーニングロジック部が、前記複数のFPGAと一対一に対応され、前記複数のFPGAと前記マシンラーニングコントローラの間に伝送される前記ローデータと前記マシンラーニングデータを一時格納する複数のメモリ素子をさらに備える請求項4に記載のマシンラーニング装置。
【請求項9】
前記マシンラーニングコントローラが、前記データ格納部の既に設定された領域に前記コマンドデータが格納されたのかを周期的にモニタリングし、前記コマンドデータに基づいて前記データ格納部から前記ローデータを読み取った後、読み取った前記ローデータを前記マシンラーニングロジック部に提供する請求項1に記載のマシンラーニング装置。
【請求項10】
前記マシンラーニングコントローラが、前記マシンラーニングデータを前記データ格納部に格納した後、前記データ格納部の既に設定された領域に前記マシンラーニングデータが格納された位置を知らせる前記位置データを格納する請求項9に記載のマシンラーニング装置。
【請求項11】
前記マシンラーニングコントローラが、前記マシンラーニングデータを前記データ格納部に格納した後、前記データ格納部の既に設定された領域に前記マシンラーニングデータが格納された位置を知らせる前記位置データを格納する請求項1に記載のマシンラーニング装置。
【請求項12】
前記データ格納部が、前記マシンラーニングコントローラに内蔵される請求項1に記載のマシンラーニング装置。
【請求項13】
一つ以上のプロセッサを備えるホスト装置と、
前記ホスト装置からの書込みコマンドに従って提供されたローデータを、既にプログラミングされたマシンラーニングロジックに従って処理することでマシンラーニングデータを生成し、前記ホスト装置からの読取りコマンドに従って前記マシンラーニングデータを前記ホスト装置に提供するマシンラーニング装置と、
を備え、
前記マシンラーニング装置が、コンピュータマザーボード(motherboard)との連結を可能にするチップピン(chip pins)
、該チップピンと連結され、前記ローデータ及び前記マシンラーニングデータを格納するデータ格納部と、該データ格納部に格納された前記ローデータを処理して前記マシンラーニングデータを生成するマシンラーニングロジック部とを備えるメモリモジュールの形態を有
し、
前記データ格納部が、前記チップピンを介して前記ホスト装置から直接前記ローデータの提供を受け、前記チップピンを介して前記ホスト装置に直接前記マシンラーニングデータを提供するマシンラーニングシステム。
【請求項14】
前記マシンラーニング装置が、DIMM(Dual-Inline Memory Module)標準によるメモリモジュールの形態を有する請求項13に記載のマシンラーニングシステム。
【請求項15】
前記マシンラーニング装置が
、前記データ格納部から前記ローデータを読み取って前記マシンラーニングロジック部に提供し、前記マシンラーニングロジック部で生成された前記マシンラーニングデータを前記データ格納部に書き込むマシンラーニングコントローラ
を備える請求項13に記載のマシンラーニングシステム。
【請求項16】
前記ホスト装置が、書込みコマンド及び第1アドレス情報を利用して前記ローデータとともにコマンドデータを前記データ格納部に書き込み、読取りコマンド及び第2アドレス情報を利用して前記データ格納部に格納されたマシンラーニングデータを読み取るように構成される請求項15に記載のマシンラーニングシステム。
【請求項17】
前記ホスト装置が、前記データ格納部の既に指定された領域を周期的にモニタリングすることで、前記データ格納部に前記マシンラーニングデータが格納されたのか否かを確認するように構成される請求項15に記載のマシンラーニングシステム。
【請求項18】
前記マシンラーニングロジック部が、前記マシンラーニングロジックがプログラミングされた複数のFPGA(Field Programmable Gate Array)を備える請求項15に記載のマシンラーニングシステム。
【請求項19】
前記複数のFPGAが、それぞれ、
前記マシンラーニングコントローラから提供された前記ローデータを格納する入力バッファと、
マシンラーニングデータを格納する出力バッファと、
前記マシンラーニングロジックがプログラミングされ、プログラミングロジックに従い前記入力バッファに格納された前記ローデータを処理して前記出力バッファに出力するロジック部と、
を備える請求項18に記載のマシンラーニングシステム。
【請求項20】
前記データ格納部が、前記マシンラーニングコントローラに内蔵される請求項15に記載のマシンラーニングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マシンラーニング装置に関し、より詳しくは、汎用のメモリモジュールインタフェースを有するマシンラーニング装置に関する。
【背景技術】
【0002】
マシンラーニングシステム(machine learning system)は、外部から与えられるデータを介して学習し、学習の結果を踏まえて入力に応じた出力を予測するシステムであって、マシンラーニングシステムの開発は活発に行われている。
このようなマシンラーニングシステムは、マシンラーニングのための別途の専用ボードまたはUSBタイプの装置でなるか、GPU(Graphic Process Unit)を用いるグラフィックカード形態の構成を有する場合が大部分である。
マシンラーニングを活用した技術がなおさら日常生活に染み込んでいる状況で、より多様な形態のマシンラーニング装置の開発が求められている実情である。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本実施形態は、既存のコンピュータシステムに容易に適用することができる汎用のメモリモジュールインタフェースを有するマシンラーニング装置を提供する。
【課題を解決するための手段】
【0004】
本発明の一実施形態に係るマシンラーニング装置は、メモリモジュールインタフェースを介してホスト装置から提供されたローデータ及びコマンドデータ、前記ローデータがマシンラーニングされたマシンラーニングデータ、並びに前記マシンラーニングデータに対する位置データを格納するデータ格納部と、既にプログラミングされたマシンラーニングロジックに従って前記ローデータを処理することで前記マシンラーニングデータを生成するマシンラーニングロジック部と、前記コマンドデータに基づき、前記データ格納部から前記ローデータを読み取って前記マシンラーニングロジック部に提供し、前記マシンラーニングデータを前記位置データとともに前記データ格納部に書き込むマシンラーニングコントローラとを備えることができる。
【0005】
本発明の一実施形態に係るマシンラーニングシステムは、一つ以上のプロセッサを含むホスト装置と、前記ホスト装置からの書込みコマンドに従って提供されたローデータを、既にプログラミングされたマシンラーニングロジックに従って処理することでマシンラーニングデータを生成し、前記ホスト装置からの読取りコマンドに従って前記マシンラーニングデータを前記ホスト装置に提供するマシンラーニング装置と備え、該マシンラーニング装置が、コンピュータマザーボード(motherboard)との連結を可能にするチップピン(chip pins)を備えるメモリモジュールの形態を有することができる。
【0006】
本発明の一実施形態に係るデータ格納装置は、メモリに格納されたデータを演算し、演算された値をメモリに格納するように求めるメモリコマンドを出力するホストと、前記ホストからのメモリコマンドに従いメモリに格納された演算対象データを読み取って演算し、演算の結果をメモリの目的地アドレスに格納するメモリ制御装置とを備えることができる。
【発明の効果】
【0007】
本実施形態では、マシンラーニング装置を汎用のメモリモジュールの形態に形成することにより、通常のコンピュータにマシンラーニング機能を容易に適用することができる。
【図面の簡単な説明】
【0008】
【
図1】本発明の一実施形態に係るマシンラーニングシステムの構成を示す図である。
【
図2】
図1の構成において、ホスト装置とマシンラーニング装置の関係をより詳しく示した図である。
【
図3】本発明の一実施形態に係る
図2のマシンラーニング装置の構成をより詳しく示した図である。
【
図4】メモリ素子において各データが格納される領域が物理的に区分されていることを示す図である。
【
図5】
図3におけるマシンラーニングロジック部の各FPGAの構成をより詳しく示した図である。
【
図6】本発明の一実施形態に係るホスト装置とマシンラーニング装置の動作を説明するためのタイミング図である。
【
図7】本発明の他の実施形態に係るマシンラーニング装置の構成を示す図である。
【
図8】本発明のまた他の実施形態に係るマシンラーニング装置300の構成を示す図である。
【発明を実施するための形態】
【0009】
以下、図を参照しつつ、本発明の多様な実施形態について詳しく説明する。本文書において図上の同一の構成要素に対しては同一の参照符号を使用し、同一の構成要素について重複された説明は省略する。
本文書に開示されている本発明の多様な実施形態について、特定の構造的ないし機能的な説明は、ただ本発明の実施形態を説明するための目的に例示されたもので、本発明の多様な実施形態は幾多の形態に実施されてよく、本文書に説明された実施形態に限定されるものとして解釈されてはならない。
【0010】
多様な実施形態で用いられた『第1』または『第2』などの表現は、多様な構成要素を、順序及び/または重要度に係わりなく修飾することができ、当該構成要素を限定しない。例えば、本発明の権利範囲を外れないつつ第1構成要素は第2構成要素に命名されてよく、同様に第2構成要素も第1構成要素に変えて命名されてよい。
本文書で用いられた用語等は、ただ特定の実施形態を説明するために用いられたもので、他の実施形態の範囲を限定しようとする意図ではないことがある。単数の表現は、文脈上明らかに異なる意味を有しない限り、複数の表現を含むことができる。
【0011】
技術的や科学的な用語を含めてここで用いられる全ての用語は、本発明の技術分野で通常の知識を有する者によって一般に理解されるものと同一の意味を有してよい。一般に用いられる辞書に定義されている用語等は、関連技術の文脈上有する意味と同一または類似の意味を有するものとして解釈されてよく、本文書で明らかに定義されない限り、理想的や過度に形式的な意味に解釈されない。場合によって、本文書で定義されている用語であっても、本発明の実施形態等を排除するように解釈され得ない。
【0012】
図1は、本発明の一実施形態に係るマシンラーニングシステムの構成を示す図である。
図1に示したマシンラーニングシステムは、ホスト装置100、メモリ装置200及びマシンラーニング装置300を含むことができる。
【0013】
図1に示す通り、ホスト装置100は、一つ以上のプロセッサを含む中央処理装置(CPU)またはグラフィック処理装置(Graphic Processing Unit、GPU)などのような演算装置を含むことができる。ホスト装置100は、メモリ装置200と通信することで演算動作に必要なデータの提供をメモリ装置200から受けて演算の結果をメモリ装置200に格納する。また、ホスト装置100は、マシンラーニング装置300にマシンラーニング遂行の命令及びマシンラーニングに必要なデータを提供し、マシンラーニング装置300からマシンラーニングの結果の提供を受ける。このとき、ホスト装置100は、ホスト装置100内に備えられているメモリコントローラ(MC)を介してメモリ装置200及びマシンラーニング装置300と通信することができる。
【0014】
メモリ装置200は、ホスト装置100から提供されたデータ、またはホスト装置100に提供されるデータを格納し、ホスト装置100の演算動作を補助する動作を行うことができる。メモリ装置200は、揮発性メモリを含む如何なる格納媒体にも具現されてよい。このようなメモリ装置200は、DIMM(Dual-Inline Memory Module)標準によるモジュールの形態に形成されてよい。例えば、メモリ装置200は、UDIMM(Unbuffered Dual In-Line Memory Module)、RDIMM(Registered DIMM)、LRDIMM(Load Reduced DIMM)、NVDIMM(Non Volatile DIMM)などを含むことができる。
【0015】
マシンラーニング装置300は、ホスト装置100からの書込み命令とともに提供されたロー(raw)データを、既にプログラミングされたマシンラーニングロジックに従って処理することでマシンラーニングデータを生成し、ホスト装置100からの読取り命令に従ってマシンラーニングデータをホスト装置100に提供する。マシンラーニング装置300は、コンピュータマザーボード(motherboard)10との連結を可能にするチップピン(chip pins)を含む回路基板(circuit board)上に多重DRAMチップ等を含むメモリモジュールの形態に形成されてよい。例えば、マシンラーニング装置300は、メモリ装置200と同様にDIMM(Dual-Inline Memory Module)標準によるメモリモジュールの形態に形成されてよい。すなわち、ホスト装置100の観点では、マシンラーニング装置300もメモリ装置200と同様にDIMMに取り扱われる。
【0016】
図1におけるホスト装置100、メモリ装置200及びマシンラーニング装置300は、データセンター内サーバ(図示省略)のマザーボード10に取り付けられた形態に形成されてよい。
【0017】
図2は、
図1の構成において、ホスト装置100とマシンラーニング装置300の関係をより詳しく示した図である。
図2に示す通り、ホスト装置100は、マシンラーニングが必要な場合、メモリコントローラ(MC)を介してマシンラーニングのために必要なデータ(DATA_CMD、DATA_RAW)をマシンラーニング装置300に提供し、マシンラーニングされたデータ(マシンラーニングデータ)(DATA_ML)の提供をマシンラーニング装置300から受ける。このとき、ホスト装置100は、メモリ装置200にデータを書き込むか読み取る時と同じ方法で、メモリコントローラ(MC)を利用したDIMMインタフェースを介してマシンラーニング装置300にデータを書き込むか読み取ることによりマシンラーニング装置300と通信する。すなわち、ホスト装置100は、メモリ装置200にデータを書き込む時と同じ方法でマシンラーニング装置300にマシンラーニングのためのデータ(DATA_CMD、DATA_RAW)を提供し、メモリ装置200のデータを読み取る時と同じ方法でマシンラーニング装置300からマシンラーニングデータ(DATA_ML)の提供を受ける。
【0018】
例えば、ホスト装置100は、マシンラーニング装置300にマシンラーニングを行わせようとする場合、クロック信号(CLK)、書込みコマンド(CMD_W)及びアドレス情報(ADDR)を利用し、コマンドデータ(DATA_CMD)、及びマシンラーニングに用いられる原データであるローデータ(DATA_RAW)を、マシンラーニング装置300内のメモリ素子等(例えば、DRAM)に書き込む。以後、ホスト装置100は、クロック信号(CLK)、読取りコマンド(CMD_R)及びアドレス情報(ADDR)を利用してマシンラーニング装置300内のメモリ素子等に格納されたデータを読み取ることによりマシンラーニングデータ(DATA_ML)の提供を受ける。すなわち、ホスト装置100は、マシンラーニング装置300をDIMMのように取り扱ってデータを書き込むか読み取る。マシンラーニングされたデータ(DATA_ML)を読み取る時、ホスト装置100は、マシンラーニング装置300のメモリ素子の特定の位置を周期的にモニタリングすることで、マシンラーニングされたデータ(DATA_ML)が格納されたのか否かを先ず確認することができる。
【0019】
マシンラーニング装置300は、既にプログラミングされたマシンラーニングロジックに従ってホスト装置100から提供されたローデータ(DATA_RAW)を処理することでマシンラーニングを行い、マシンラーニングされたマシンラーニングデータ(DATA_ML)をホスト装置100に提供する。例えば、マシンラーニング装置300は、ホスト装置100がメモリ素子に書き込んだコマンドデータ(DATA_CMD)及びローデータ(DATA_RAW)を利用してマシンラーニングを行い、マシンラーニングを介して得られた結果データ(DATA_ML)をメモリ素子に格納する。このようなマシンラーニング装置300は、マシンラーニングロジックがプログラミングされた複数のFPGA(Field Programmable Gate Array)等を備えることができる。
【0020】
図3は、本発明の一実施形態に係る
図2のマシンラーニング装置300の構成をより詳しく示した図である。
図3に示す通り、マシンラーニング装置300は、データ格納部310、マシンラーニングロジック部320及びマシンラーニングコントローラ330を備えることができる。
【0021】
データ格納部310は、ホスト装置100から提供されたデータ(DATA_CMD、DATA_RAW)、マシンラーニング装置300で生成されたマシンラーニングデータ(DATA_ML)、及びマシンラーニングデータ(DATA_ML)に対する格納位置を知らせる位置データ(DATA_LOC)を格納する。データ格納部310は、従来のDIMMと同様に、ホスト装置100とはマザーモード10の信号ライン等を通じたDIMMインタフェースにデータの送信/受信を行う。また、データ格納部310は、マシンラーニングコントローラ330とはマシンラーニング装置300内の信号ライン等を通じてデータを送信/受信する。
【0022】
このようなデータ格納部310の各メモリ素子は、
図4に示す通り、ホスト装置100とのデータの送信/受信のためのデータ(DATA_CMD、DATA_LOC)が格納される領域、及び実際に送信/受信の対象となるデータ(DATA_RAW、DATA_ML)が格納される領域を含み、各領域は予め物理的に区分されるように定められてよい。
【0023】
したがって、ホスト装置100は、指定された位置にコマンドデータ(DATA_CMD)を書き込み、指定された位置にアクセスして位置データ(DATA_LOC)を読み取ることができる。特に、ホスト装置100との通信のためのデータ(DATA_CMD、DATA_LOC)が格納される位置(アドレス)が予め指定されることにより、ホスト装置100は、指定された位置にアクセスしてコマンドデータ(DATA_CMD)を書き込み、指定された位置にアクセスして位置データ(DATA_LOC)を読み取ることができる。このようなデータ格納部310のメモリ素子等は、揮発性メモリ素子、例えば、DRAMを備えることができる。
【0024】
マシンラーニングロジック部320は、マシンラーニングコントローラ330からローデータ(DATA_RAW)の提供を受けると、既にプログラミングされたマシンロジックに従ってローデータ(DATA_RAW)を処理することでマシンラーニングを行い、マシンラーニングされたデータ(DATA_ML)をマシンラーニングコントローラ330に提供する。マシンラーニングロジック部320は、マシンラーニングロジックがプログラミングされたFPGA(Field Programmable Gate Array)(FPGA 1~FPGA n)を備えることができる。
【0025】
このとき、FPGA(FPGA 1~FPGA n)は、それぞれ独立してマシンラーニングコントローラ330からローデータ(DATA_RAW)の提供を受けてマシンラーニングを行った後、マシンラーニングされたマシンラーニングデータ(DATA_ML)をマシンラーニングコントローラ330に提供することができる。もしくは、FPGA(FPGA 1~FPGA n)は、マシンラーニングロジックを順次行うことができる。例えば、FPGA 1は、提供されたローデータを利用し、既にプログラミングされたロジックに従ってマシンラーニングを行った後、その結果データをFPGA 2に提供し、FPGA 2は、FPGA 1で処理されたデータを利用し、既にプログラミングされたロジックに従ってマシンラーニングを行った後、その結果データをFPGA 3に提供することができる。このような方法でFPGA nまで順次マシンラーニングを行った後、最終のFPGA nがマシンラーニングコントローラ330に完了したマシンラーニングデータ(DATA_ML)を提供することができる。
【0026】
マシンラーニングコントローラ330は、データ格納部310に格納されたローデータ(DATA_RAW)をマシンラーニングロジック部320に提供し、マシンラーニングロジック部320によってマシンラーニングされたデータ(DATA_ML)をデータ格納部310に格納する。例えば、マシンラーニングコントローラ330は、データ格納部310の特定の領域にコマンドデータ(DATA_CMD)が格納されたのか否かを周期的にモニタリングし、コマンドデータ(DATA_CMD)に基づいてデータ格納部310からローデータ(DATA_RAW)を読み取った後、これをマシンラーニングロジック部320に提供する。
【0027】
マシンラーニングコントローラ330は、マシンラーニングロジック部320でマシンラーニングを行う間にはデータ格納部310との連結を遮断することができる。マシンラーニングが完了すれば、マシンラーニングコントローラ330は、マシンラーニングされたデータ(DATA_ML)の提供をマシンラーニングロジック部320から受けてデータ格納部310に書き込む。次いで、マシンラーニングコントローラ330は、マシンラーニングされたデータ(DATA_ML)の格納位置を知らせる位置データ(DATA_LOC)を予め設定された位置に書き込む。
【0028】
図5は、
図3におけるマシンラーニングロジック部320の各FPGAの構成をより詳しく示した図である。
図5では、説明の便宜のため、隣接した二つのFPGA(FPGA 1、FPGA 2)の構成、及びこれらとマシンラーニングコントローラ330の関係のみを例示的に示している。
図5に示す通り、各FPGAは、ロジック部322、入力バッファ324及び出力バッファ326を備えることができる。
【0029】
ロジック部322は、マシンラーニングロジックがプログラミングされ、プログラミングされたロジックに従って入力バッファ324に格納されたローデータ(DATA_RAW)を処理することでマシンラーニングデータ(DATA_ML)を生成し、生成されたマシンラーニングデータ(DATA_ML)を出力バッファ326に出力する。
【0030】
入力バッファ324は、マシンラーニングコントローラ330と連結され、マシンラーニングコントローラ330から提供されたローデータ(DATA_RAW)を一時格納する。
【0031】
出力バッファ326は、マシンラーニングコントローラ330または次のFPGAの入力バッファと連結され、ロジック部322で処理されたデータ(DATA_ML)を一時格納する。最後のFPGA(FPGA n)の出力バッファ326は、マシンラーニングコントローラ330と連結される。
【0032】
図6は、本発明の一実施形態に係るホスト装置とマシンラーニング装置の動作を説明するためのタイミング図である。
図6に示す通り、マシンラーニング装置300のマシンラーニングコントローラ330は、データ格納部310で予め指定された特定の格納位置を周期的にアクセスし、当該位置にホスト装置100からのコマンドデータ(DATA_CMD)が格納されたのか否かをモニタリングする(ステップ(1))。
【0033】
ホスト装置100は、マシンラーニングが必要な場合、DIMMインタフェースを介しマシンラーニング装置300のデータ格納部310にアクセスしてローデータ(DATA_RAW)を書き込み、マシンラーニングの開始を指示するコマンド、及びローデータ(DATA_RAW)が格納された位置を知らせる情報を含むコマンドデータ(DATA_CMD)を指定された位置に書き込む(ステップ(2))。
【0034】
ホスト装置100がコマンドデータ(DATA_CMD)及びローデータ(DATA_RAW)を書き込むと、マシンラーニングコントローラ330は、ステップ(1)のような周期的なモニタリングを介し、データ格納部310にコマンドデータ(DATA_CMD)が格納されたことが分かるようになる。
【0035】
コマンドデータ(DATA_CMD)が格納されたことを確認したマシンラーニングコントローラ330は、コマンドデータ(DATA_CMD)が知らせる格納位置にアクセスしてローデータ(DATA_RAW)を読み取った(ステップ(3))後、読み取ったローデータ(DATA_RAW)をマシンラーニングロジック部320の入力バッファ324に伝送する(ステップ(4))。
【0036】
マシンラーニングロジック部320は、提供されたローデータ(DATA_RAW)を既にプログラミングされたマシンラーニングロジックに従って処理することでマシンラーニング動作を行う(ステップ(5))。
【0037】
このとき、マシンラーニングロジック部320のFPGA(FPGA 1~FPGA n)は、それぞれ独立してマシンラーニングコントローラ330から提供されたローデータ(DATA_RAW)を処理した後、そのマシンラーニングデータ(DATA_ML)をマシンラーニングコントローラ330に提供することができる。
【0038】
マシンラーニングプログラムのサイズが大きいため、一つのFPGAだけで処理が不可能な場合は、FPGA(FPGA 1~FPGA n)は、順次マシンラーニングを行うことができる。例えば、FPGA 1は、提供されたローデータを利用し、既にプログラミングされたロジックに従ってマシンラーニングを行った後、その結果データをFPGA 2に提供する。FPGA 2は、FPGA 1から提供されたデータ(または、FPGA 1から提供されたデータと自分の入力バッファのデータ)を利用し、既にプログラミングされたロジックに従ってマシンラーニングを行った後、その結果データをFPGA 3に提供する。このような方法で、FPGA nまで順次マシンラーニングが行われる。
【0039】
マシンラーニングが完了したデータ(DATA_ML)は、マシンラーニングコントローラ330に伝送される(ステップ(6))。
マシンラーニングコントローラ330は、データ格納部310にアクセスしてマシンラーニングされたデータ(DATA_ML)を書き込み、既に指定された特定の位置にマシンラーニングされたデータ(DATA_ML)が格納された位置を知らせる位置データ(DATA_LOC)を書き込む(ステップ(7))。
【0040】
ホスト装置100は、ローデータ(DATA_RAW)を書き込んだ後、データ格納部310で予め指定された特定の格納位置を周期的にアクセスし、当該位置に位置データ(DATA_LOC)が格納されているのかをモニタリングする(ステップ(8))。
【0041】
位置データ(DATA_LOC)が格納されたことを確認したホスト装置100は、位置データ(DATA_LOC)が知らせる格納位置にアクセスしてマシンラーニングデータ(DATA_ML)を読み取る(ステップ(9))。
【0042】
図7は、本発明の他の実施形態に係るマシンラーニング装置300の構成を示す図である。
図3のマシンラーニング装置では、マシンラーニングロジック部320のFPGA(FPGA 1~FPGA n)が、
図5に示す通り、その内部にバッファ324、326を含み、バッファ324、326を介してマシンラーニングコントローラ330と、ローデータ(DATA_RAW)及びマシンラーニングされたデータ(DATA_ML)の送信/受信を行った。
【0043】
一方、
図7のマシンラーニング装置300におけるマシンラーニングロジック部340は、FPGA(FPGA 1’~FPGA n’)の外部に別に形成されたメモリ素子340を備えることができる。すなわち、FPGA(FPGA 1’~FPGA n’)とマシンラーニングコントローラ350は、メモリ素子340を介してローデータ(DATA_RAW)及びマシンラーニングされたデータ(DATA_ML)を送信/受信することができる。
【0044】
図7に示す通り、マシンラーニング装置300は、データ格納部310、マシンラーニングロジック部340及びマシンラーニングコントローラ350を備えることができる。
【0045】
データ格納部310は、
図3におけるデータ格納部310とその構造及び機能が同一である。よって、これに対する説明は省略する。
マシンラーニングロジック部340は、マシンラーニングコントローラ330から提供されたローデータ(DATA_RAW)を、既にプログラミングされたマシンロジックに従って処理することでマシンラーニングデータ(DATA_ML)を生成し、生成されたマシンラーニングデータ(DATA_ML)をマシンラーニングコントローラ330に提供する。マシンラーニングロジック部340は、マシンラーニングロジックがプログラミングされたFPGA(FPGA 1’~FPGA n’)、及びFPGA(FPGA 1’~FPGA n’)と一対一に対応されるように形成される複数のメモリ素子342を備えることができる。
【0046】
FPGA(FPGA 1’~FPGA n’)は、メモリ素子342に格納されたローデータ(DATA_RAW)を読み取り、マシンラーニングロジックに従って処理し、マシンラーニングされたデータ(DATA_ML)をメモリ素子342に書き込む。FPGA(FPGA 1’~FPGA n’)のマシンラーニングロジックは、
図3のFPGA(FPGA 1~FPGA n)のマシンラーニングロジックと同様にプログラミングされてよい。ただし、FPGA(FPGA 1’~FPGA n’)は、内部のバッファを介してデータを入力/出力することなく、外部のメモリ素子342にデータを書き込むか、メモリ素子342に格納されたデータを読み取る方式でデータを入力/出力するという点で、
図3のFPGA(FPGA 1~FPGA n)と違いがある。
【0047】
FPGA(FPGA 1’~FPGA n’)は、それぞれ独立してローデータ(DATA_RAW)を処理することでマシンラーニングデータ(DATA_ML)を生成するか、順次マシンラーニングを行うことで最終のFPGA(FPGA n’)がマシンラーニングデータ(DATA_ML)を生成することができる。
【0048】
メモリ素子342は、
図5において、各FPGA(FPGA 1~FPGA n)に内蔵された入力バッファ及び出力バッファの役割を担う。メモリ素子342は、データ格納部310のメモリ素子と同様に、各データ(DATA_CMD、DATA_LOC、DATA_RAW、DATA_ML)が格納される領域が予め物理的に区分されて定められてよい。
【0049】
マシンラーニングコントローラ350は、データ格納部310に格納されたローデータ(DATA_RAW)をメモリ素子342に伝達し、メモリ素子342に格納されたマシンラーニングデータ(DATA_ML)をデータ格納部310に伝達する。すなわち、マシンラーニングコントローラ350は、ホスト装置100がデータ格納部310に書き込んだローデータ(DATA_RAW)を読み取ってメモリ素子342に書き込み、FPGA(FPGA 1’~FPGA n’)がメモリ素子342に書き込んだマシンラーニングデータ(DATA_ML)を読み取ってデータ格納部310に書き込む。
【0050】
このとき、マシンラーニングコントローラ350がデータ格納部310を介してホスト装置100とデータ(DATA_RAW、DATA_ML)の送信/受信を行う方法は、
図3において、マシンラーニングコントローラ330がデータ格納部310を介してホスト装置100とデータ(DATA_RAW、DATA_ML)の送信/受信を行う方法と同一であってよい。また、マシンラーニングコントローラ350がメモリ素子342を介してFPGA(FPGA 1’~FPGA n’)とデータ(DATA_RAW、DATA_ML)の送信/受信を行う方法も、
図3において、マシンラーニングコントローラ330がデータ格納部310を介してホスト装置100とデータ(DATA_RAW、DATA_ML)の送信/受信を行う方法と同一であってよい。よって、本実施形態ではこれに対する説明は省略する。
【0051】
図8は、本発明のまた他の実施形態に係るマシンラーニング装置300の構成を示す図である。
本実施形態を
図3の実施形態と比べると、本実施形態では、
図3のデータ格納部310に対応されるメモリ素子362が、マシンラーニングコントローラ360内に内蔵される形態に形成されるという点で違いがある。メモリ素子362の構造及び機能は、
図3のデータ格納部310に含まれるメモリ素子等と同一である。
【0052】
図8は、
図3の構造を変形した形態でのみ説明したが、
図7の構造でもデータ格納部310のメモリ素子等は、マシンラーニングコントローラ350に内蔵される形態に形成されてよい。
【0053】
以上の説明は、本発明の技術思想を例示的に説明したことに過ぎないものであって、本発明の属する技術分野で通常の知識を有する者であれば、本発明の本質的な特性から外れない範囲で多様な修正及び変形が可能なはずである。
したがって、本発明に開示されている実施形態等は、本発明の技術思想を限定するためではなく説明するためのものであり、このような実施形態によって本発明の技術思想の範囲が限定されるものではない。本発明の保護範囲は、特許請求の範囲によって解釈されなければならず、それと同等な範囲内にある全ての技術思想は、本発明の権利範囲に含まれるものとして解釈されなければならないはずである。
【符号の説明】
【0054】
100 ホスト装置
200 メモリ装置
300 マシンラーニング装置
310 データ格納部、第1データ格納部
320、350 マシンラーニングロジック部
322 ロジック部
324 入力バッファ
326 出力バッファ
330、360、370 マシンラーニングコントローラ
340 第2データ格納部