(57)【要約】      （修正有）【課題】汎用のメモリモジュールインタフェースを有するマシンラーニング装置を提供する。【解決手段】マシンラーニングシステムにおいて、マシンラーニング装置３００は、メモリモジュールインタフェースを介してホスト装置から提供されたロー（ｒａｗ）データとコマンドデータ、ローデータがマシンラーニングされたマシンラーニングデータ、及びマシンラーニングデータに対する位置データを格納するデータ格納部３１０と、既にプログラミングされたマシンラーニングロジックに従ってローデータを処理することでマシンラーニングデータを生成するマシンラーニングロジック部３２０と、コマンドデータに基づき、データ格納部からローデータを読み取ってマシンラーニングロジック部に提供し、マシンラーニングデータを位置データとともにデータ格納部に書き込むマシンラーニングコントローラ３３０とを備える。【選択図】図３
2019204485.tif 000002
【特許請求の範囲】
【請求項１】
メモリモジュールインタフェースを介してホスト装置から提供されたローデータ及びコマンドデータ、前記ローデータがマシンラーニングされたマシンラーニングデータ、並びに前記マシンラーニングデータに対する位置データを格納するデータ格納部と、
既にプログラミングされたマシンラーニングロジックに従って前記ローデータを処理することで前記マシンラーニングデータを生成するマシンラーニングロジック部と、
前記コマンドデータに基づき、前記データ格納部から前記ローデータを読み取って前記マシンラーニングロジック部に提供し、前記マシンラーニングデータを前記位置データとともに前記データ格納部に書き込むマシンラーニングコントローラと、
を備えるマシンラーニング装置。
【請求項２】
前記データ格納部が、ＤＩＭＭ（Ｄｕａｌ−Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）インタフェースを介して前記ホスト装置とデータの送信／受信を行う請求項１に記載のマシンラーニング装置。
【請求項３】
前記データ格納部は複数のメモリ素子を備え、各メモリ素子が、前記ローデータ、前記コマンドデータ、前記マシンラーニングデータ及び前記位置データが格納される領域が予め設定されるように構成される請求項１に記載のマシンラーニング装置。
【請求項４】
前記マシンラーニングロジック部が、前記マシンラーニングロジックがプログラミングされた複数のＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を備える請求項１に記載のマシンラーニング装置。
【請求項５】
前記複数のＦＰＧＡが、それぞれ独立して前記マシンラーニングコントローラから前記ローデータの提供を受けてマシンラーニングを行い、前記マシンラーニングデータを前記マシンラーニングコントローラに提供する請求項４に記載のマシンラーニング装置。
【請求項６】
前記複数のＦＰＧＡが、前記マシンラーニングロジックを順次行うことで、最終のＦＰＧＡが前記マシンラーニングデータを前記マシンラーニングコントローラに提供する請求項４に記載のマシンラーニング装置。
【請求項７】
前記複数のＦＰＧＡが、それぞれ、
前記マシンラーニングコントローラから提供された前記ローデータを格納する入力バッファと、
マシンラーニングデータを格納する出力バッファと、
前記マシンラーニングロジックがプログラミングされ、プログラミングロジックに従い前記入力バッファに格納された前記ローデータを処理して前記出力バッファに出力するロジック部と、
を備える請求項４に記載のマシンラーニング装置。
【請求項８】
前記マシンラーニングロジック部が、前記複数のＦＰＧＡと一対一に対応され、前記複数のＦＰＧＡと前記マシンラーニングコントローラの間に伝送される前記ローデータと前記マシンラーニングデータを一時格納する複数のメモリ素子をさらに備える請求項４に記載のマシンラーニング装置。
【請求項９】
前記マシンラーニングコントローラが、前記データ格納部の既に設定された領域に前記コマンドデータが格納されたのかを周期的にモニタリングし、前記コマンドデータに基づいて前記データ格納部から前記ローデータを読み取った後、読み取った前記ローデータを前記マシンラーニングロジック部に提供する請求項１に記載のマシンラーニング装置。
【請求項１０】
前記マシンラーニングコントローラが、前記マシンラーニングデータを前記データ格納部に格納した後、前記データ格納部の既に設定された領域に前記マシンラーニングデータが格納された位置を知らせる前記位置データを格納する請求項９に記載のマシンラーニング装置。
【請求項１１】
前記マシンラーニングコントローラが、前記マシンラーニングデータを前記データ格納部に格納した後、前記データ格納部の既に設定された領域に前記マシンラーニングデータが格納された位置を知らせる前記位置データを格納する請求項１に記載のマシンラーニング装置。
【請求項１２】
前記データ格納部が、前記マシンラーニングコントローラに内蔵される請求項１に記載のマシンラーニング装置。
【請求項１３】
一つ以上のプロセッサを備えるホスト装置と、
前記ホスト装置からの書込みコマンドに従って提供されたローデータを、既にプログラミングされたマシンラーニングロジックに従って処理することでマシンラーニングデータを生成し、前記ホスト装置からの読取りコマンドに従って前記マシンラーニングデータを前記ホスト装置に提供するマシンラーニング装置と、
を備え、
前記マシンラーニング装置が、コンピュータマザーボード（ｍｏｔｈｅｒｂｏａｒｄ）との連結を可能にするチップピン（ｃｈｉｐ  ｐｉｎｓ）を備えるメモリモジュールの形態を有するマシンラーニングシステム。
【請求項１４】
前記マシンラーニング装置が、ＤＩＭＭ（Ｄｕａｌ−Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）標準によるメモリモジュールの形態を有する請求項１３に記載のマシンラーニングシステム。
【請求項１５】
前記マシンラーニング装置が、
前記ローデータ及び前記マシンラーニングデータを格納するデータ格納部と、
既にプログラミングされたマシンラーニングロジックに従って前記ローデータを処理することで前記マシンラーニングデータを生成するマシンラーニングロジック部と、
前記データ格納部から前記ローデータを読み取って前記マシンラーニングロジック部に提供し、前記マシンラーニングロジック部で生成された前記マシンラーニングデータを前記データ格納部に書き込むマシンラーニングコントローラと、
を備える請求項１３に記載のマシンラーニングシステム。
【請求項１６】
前記ホスト装置が、書込みコマンド及び第１アドレス情報を利用して前記ローデータとともにコマンドデータを前記データ格納部に書き込み、読取りコマンド及び第２アドレス情報を利用して前記データ格納部に格納されたマシンラーニングデータを読み取るように構成される請求項１５に記載のマシンラーニングシステム。
【請求項１７】
前記ホスト装置が、前記データ格納部の既に指定された領域を周期的にモニタリングすることで、前記データ格納部に前記マシンラーニングデータが格納されたのか否かを確認するように構成される請求項１５に記載のマシンラーニングシステム。
【請求項１８】
前記マシンラーニングロジック部が、前記マシンラーニングロジックがプログラミングされた複数のＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を備える請求項１５に記載のマシンラーニングシステム。
【請求項１９】
前記複数のＦＰＧＡが、それぞれ、
前記マシンラーニングコントローラから提供された前記ローデータを格納する入力バッファと、
マシンラーニングデータを格納する出力バッファと、
前記マシンラーニングロジックがプログラミングされ、プログラミングロジックに従い前記入力バッファに格納された前記ローデータを処理して前記出力バッファに出力するロジック部と、
を備える請求項１８に記載のマシンラーニングシステム。
【請求項２０】
前記データ格納部が、前記マシンラーニングコントローラに内蔵される請求項１５に記載のマシンラーニングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マシンラーニング装置に関し、より詳しくは、汎用のメモリモジュールインタフェースを有するマシンラーニング装置に関する。
【背景技術】
【０００２】
マシンラーニングシステム（ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ  ｓｙｓｔｅｍ）は、外部から与えられるデータを介して学習し、学習の結果を踏まえて入力に応じた出力を予測するシステムであって、マシンラーニングシステムの開発は活発に行われている。
このようなマシンラーニングシステムは、マシンラーニングのための別途の専用ボードまたはＵＳＢタイプの装置でなるか、ＧＰＵ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓ  Ｕｎｉｔ）を用いるグラフィックカード形態の構成を有する場合が大部分である。
マシンラーニングを活用した技術がなおさら日常生活に染み込んでいる状況で、より多様な形態のマシンラーニング装置の開発が求められている実情である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本実施形態は、既存のコンピュータシステムに容易に適用することができる汎用のメモリモジュールインタフェースを有するマシンラーニング装置を提供する。
【課題を解決するための手段】
【０００４】
本発明の一実施形態に係るマシンラーニング装置は、メモリモジュールインタフェースを介してホスト装置から提供されたローデータ及びコマンドデータ、前記ローデータがマシンラーニングされたマシンラーニングデータ、並びに前記マシンラーニングデータに対する位置データを格納するデータ格納部と、既にプログラミングされたマシンラーニングロジックに従って前記ローデータを処理することで前記マシンラーニングデータを生成するマシンラーニングロジック部と、前記コマンドデータに基づき、前記データ格納部から前記ローデータを読み取って前記マシンラーニングロジック部に提供し、前記マシンラーニングデータを前記位置データとともに前記データ格納部に書き込むマシンラーニングコントローラとを備えることができる。
【０００５】
本発明の一実施形態に係るマシンラーニングシステムは、一つ以上のプロセッサを含むホスト装置と、前記ホスト装置からの書込みコマンドに従って提供されたローデータを、既にプログラミングされたマシンラーニングロジックに従って処理することでマシンラーニングデータを生成し、前記ホスト装置からの読取りコマンドに従って前記マシンラーニングデータを前記ホスト装置に提供するマシンラーニング装置と備え、該マシンラーニング装置が、コンピュータマザーボード（ｍｏｔｈｅｒｂｏａｒｄ）との連結を可能にするチップピン（ｃｈｉｐ  ｐｉｎｓ）を備えるメモリモジュールの形態を有することができる。
【０００６】
本発明の一実施形態に係るデータ格納装置は、メモリに格納されたデータを演算し、演算された値をメモリに格納するように求めるメモリコマンドを出力するホストと、前記ホストからのメモリコマンドに従いメモリに格納された演算対象データを読み取って演算し、演算の結果をメモリの目的地アドレスに格納するメモリ制御装置とを備えることができる。
【発明の効果】
【０００７】
本実施形態では、マシンラーニング装置を汎用のメモリモジュールの形態に形成することにより、通常のコンピュータにマシンラーニング機能を容易に適用することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態に係るマシンラーニングシステムの構成を示す図である。
【図２】図１の構成において、ホスト装置とマシンラーニング装置の関係をより詳しく示した図である。
【図３】本発明の一実施形態に係る図２のマシンラーニング装置の構成をより詳しく示した図である。
【図４】メモリ素子において各データが格納される領域が物理的に区分されていることを示す図である。
【図５】図３におけるマシンラーニングロジック部の各ＦＰＧＡの構成をより詳しく示した図である。
【図６】本発明の一実施形態に係るホスト装置とマシンラーニング装置の動作を説明するためのタイミング図である。
【図７】本発明の他の実施形態に係るマシンラーニング装置の構成を示す図である。
【図８】本発明のまた他の実施形態に係るマシンラーニング装置３００の構成を示す図である。
【発明を実施するための形態】
【０００９】
以下、図を参照しつつ、本発明の多様な実施形態について詳しく説明する。本文書において図上の同一の構成要素に対しては同一の参照符号を使用し、同一の構成要素について重複された説明は省略する。
本文書に開示されている本発明の多様な実施形態について、特定の構造的ないし機能的な説明は、ただ本発明の実施形態を説明するための目的に例示されたもので、本発明の多様な実施形態は幾多の形態に実施されてよく、本文書に説明された実施形態に限定されるものとして解釈されてはならない。
【００１０】
多様な実施形態で用いられた『第１』または『第２』などの表現は、多様な構成要素を、順序及び／または重要度に係わりなく修飾することができ、当該構成要素を限定しない。例えば、本発明の権利範囲を外れないつつ第１構成要素は第２構成要素に命名されてよく、同様に第２構成要素も第１構成要素に変えて命名されてよい。
本文書で用いられた用語等は、ただ特定の実施形態を説明するために用いられたもので、他の実施形態の範囲を限定しようとする意図ではないことがある。単数の表現は、文脈上明らかに異なる意味を有しない限り、複数の表現を含むことができる。
【００１１】
技術的や科学的な用語を含めてここで用いられる全ての用語は、本発明の技術分野で通常の知識を有する者によって一般に理解されるものと同一の意味を有してよい。一般に用いられる辞書に定義されている用語等は、関連技術の文脈上有する意味と同一または類似の意味を有するものとして解釈されてよく、本文書で明らかに定義されない限り、理想的や過度に形式的な意味に解釈されない。場合によって、本文書で定義されている用語であっても、本発明の実施形態等を排除するように解釈され得ない。
【００１２】
図１は、本発明の一実施形態に係るマシンラーニングシステムの構成を示す図である。
図１に示したマシンラーニングシステムは、ホスト装置１００、メモリ装置２００及びマシンラーニング装置３００を含むことができる。
【００１３】
図１に示す通り、ホスト装置１００は、一つ以上のプロセッサを含む中央処理装置（ＣＰＵ）またはグラフィック処理装置（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、ＧＰＵ）などのような演算装置を含むことができる。ホスト装置１００は、メモリ装置２００と通信することで演算動作に必要なデータの提供をメモリ装置２００から受けて演算の結果をメモリ装置２００に格納する。また、ホスト装置１００は、マシンラーニング装置３００にマシンラーニング遂行の命令及びマシンラーニングに必要なデータを提供し、マシンラーニング装置３００からマシンラーニングの結果の提供を受ける。このとき、ホスト装置１００は、ホスト装置１００内に備えられているメモリコントローラ（ＭＣ）を介してメモリ装置２００及びマシンラーニング装置３００と通信することができる。
【００１４】
メモリ装置２００は、ホスト装置１００から提供されたデータ、またはホスト装置１００に提供されるデータを格納し、ホスト装置１００の演算動作を補助する動作を行うことができる。メモリ装置２００は、揮発性メモリを含む如何なる格納媒体にも具現されてよい。このようなメモリ装置２００は、ＤＩＭＭ（Ｄｕａｌ−Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）標準によるモジュールの形態に形成されてよい。例えば、メモリ装置２００は、ＵＤＩＭＭ（Ｕｎｂｕｆｆｅｒｅｄ  Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）、ＲＤＩＭＭ（Ｒｅｇｉｓｔｅｒｅｄ  ＤＩＭＭ）、ＬＲＤＩＭＭ（Ｌｏａｄ  Ｒｅｄｕｃｅｄ  ＤＩＭＭ）、ＮＶＤＩＭＭ（Ｎｏｎ  Ｖｏｌａｔｉｌｅ  ＤＩＭＭ）などを含むことができる。
【００１５】
マシンラーニング装置３００は、ホスト装置１００からの書込み命令とともに提供されたロー（ｒａｗ）データを、既にプログラミングされたマシンラーニングロジックに従って処理することでマシンラーニングデータを生成し、ホスト装置１００からの読取り命令に従ってマシンラーニングデータをホスト装置１００に提供する。マシンラーニング装置３００は、コンピュータマザーボード（ｍｏｔｈｅｒｂｏａｒｄ）１０との連結を可能にするチップピン（ｃｈｉｐ  ｐｉｎｓ）を含む回路基板（ｃｉｒｃｕｉｔ  ｂｏａｒｄ）上に多重ＤＲＡＭチップ等を含むメモリモジュールの形態に形成されてよい。例えば、マシンラーニング装置３００は、メモリ装置２００と同様にＤＩＭＭ（Ｄｕａｌ−Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）標準によるメモリモジュールの形態に形成されてよい。すなわち、ホスト装置１００の観点では、マシンラーニング装置３００もメモリ装置２００と同様にＤＩＭＭに取り扱われる。
【００１６】
図１におけるホスト装置１００、メモリ装置２００及びマシンラーニング装置３００は、データセンター内サーバ（図示省略）のマザーボード１０に取り付けられた形態に形成されてよい。
【００１７】
図２は、図１の構成において、ホスト装置１００とマシンラーニング装置３００の関係をより詳しく示した図である。
図２に示す通り、ホスト装置１００は、マシンラーニングが必要な場合、メモリコントローラ（ＭＣ）を介してマシンラーニングのために必要なデータ（ＤＡＴＡ＿ＣＭＤ、ＤＡＴＡ＿ＲＡＷ）をマシンラーニング装置３００に提供し、マシンラーニングされたデータ（マシンラーニングデータ）（ＤＡＴＡ＿ＭＬ）の提供をマシンラーニング装置３００から受ける。このとき、ホスト装置１００は、メモリ装置２００にデータを書き込むか読み取る時と同じ方法で、メモリコントローラ（ＭＣ）を利用したＤＩＭＭインタフェースを介してマシンラーニング装置３００にデータを書き込むか読み取ることによりマシンラーニング装置３００と通信する。すなわち、ホスト装置１００は、メモリ装置２００にデータを書き込む時と同じ方法でマシンラーニング装置３００にマシンラーニングのためのデータ（ＤＡＴＡ＿ＣＭＤ、ＤＡＴＡ＿ＲＡＷ）を提供し、メモリ装置２００のデータを読み取る時と同じ方法でマシンラーニング装置３００からマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）の提供を受ける。
【００１８】
例えば、ホスト装置１００は、マシンラーニング装置３００にマシンラーニングを行わせようとする場合、クロック信号（ＣＬＫ）、書込みコマンド（ＣＭＤ＿Ｗ）及びアドレス情報（ＡＤＤＲ）を利用し、コマンドデータ（ＤＡＴＡ＿ＣＭＤ）、及びマシンラーニングに用いられる原データであるローデータ（ＤＡＴＡ＿ＲＡＷ）を、マシンラーニング装置３００内のメモリ素子等（例えば、ＤＲＡＭ）に書き込む。以後、ホスト装置１００は、クロック信号（ＣＬＫ）、読取りコマンド（ＣＭＤ＿Ｒ）及びアドレス情報（ＡＤＤＲ）を利用してマシンラーニング装置３００内のメモリ素子等に格納されたデータを読み取ることによりマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）の提供を受ける。すなわち、ホスト装置１００は、マシンラーニング装置３００をＤＩＭＭのように取り扱ってデータを書き込むか読み取る。マシンラーニングされたデータ（ＤＡＴＡ＿ＭＬ）を読み取る時、ホスト装置１００は、マシンラーニング装置３００のメモリ素子の特定の位置を周期的にモニタリングすることで、マシンラーニングされたデータ（ＤＡＴＡ＿ＭＬ）が格納されたのか否かを先ず確認することができる。
【００１９】
マシンラーニング装置３００は、既にプログラミングされたマシンラーニングロジックに従ってホスト装置１００から提供されたローデータ（ＤＡＴＡ＿ＲＡＷ）を処理することでマシンラーニングを行い、マシンラーニングされたマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）をホスト装置１００に提供する。例えば、マシンラーニング装置３００は、ホスト装置１００がメモリ素子に書き込んだコマンドデータ（ＤＡＴＡ＿ＣＭＤ）及びローデータ（ＤＡＴＡ＿ＲＡＷ）を利用してマシンラーニングを行い、マシンラーニングを介して得られた結果データ（ＤＡＴＡ＿ＭＬ）をメモリ素子に格納する。このようなマシンラーニング装置３００は、マシンラーニングロジックがプログラミングされた複数のＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等を備えることができる。
【００２０】
図３は、本発明の一実施形態に係る図２のマシンラーニング装置３００の構成をより詳しく示した図である。
図３に示す通り、マシンラーニング装置３００は、データ格納部３１０、マシンラーニングロジック部３２０及びマシンラーニングコントローラ３３０を備えることができる。
【００２１】
データ格納部３１０は、ホスト装置１００から提供されたデータ（ＤＡＴＡ＿ＣＭＤ、ＤＡＴＡ＿ＲＡＷ）、マシンラーニング装置３００で生成されたマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）、及びマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）に対する格納位置を知らせる位置データ（ＤＡＴＡ＿ＬＯＣ）を格納する。データ格納部３１０は、従来のＤＩＭＭと同様に、ホスト装置１００とはマザーモード１０の信号ライン等を通じたＤＩＭＭインタフェースにデータの送信／受信を行う。また、データ格納部３１０は、マシンラーニングコントローラ３３０とはマシンラーニング装置３００内の信号ライン等を通じてデータを送信／受信する。
【００２２】
このようなデータ格納部３１０の各メモリ素子は、図４に示す通り、ホスト装置１００とのデータの送信／受信のためのデータ（ＤＡＴＡ＿ＣＭＤ、ＤＡＴＡ＿ＬＯＣ）が格納される領域、及び実際に送信／受信の対象となるデータ（ＤＡＴＡ＿ＲＡＷ、ＤＡＴＡ＿ＭＬ）が格納される領域を含み、各領域は予め物理的に区分されるように定められてよい。
【００２３】
したがって、ホスト装置１００は、指定された位置にコマンドデータ（ＤＡＴＡ＿ＣＭＤ）を書き込み、指定された位置にアクセスして位置データ（ＤＡＴＡ＿ＬＯＣ）を読み取ることができる。特に、ホスト装置１００との通信のためのデータ（ＤＡＴＡ＿ＣＭＤ、ＤＡＴＡ＿ＬＯＣ）が格納される位置（アドレス）が予め指定されることにより、ホスト装置１００は、指定された位置にアクセスしてコマンドデータ（ＤＡＴＡ＿ＣＭＤ）を書き込み、指定された位置にアクセスして位置データ（ＤＡＴＡ＿ＬＯＣ）を読み取ることができる。このようなデータ格納部３１０のメモリ素子等は、揮発性メモリ素子、例えば、ＤＲＡＭを備えることができる。
【００２４】
マシンラーニングロジック部３２０は、マシンラーニングコントローラ３３０からローデータ（ＤＡＴＡ＿ＲＡＷ）の提供を受けると、既にプログラミングされたマシンロジックに従ってローデータ（ＤＡＴＡ＿ＲＡＷ）を処理することでマシンラーニングを行い、マシンラーニングされたデータ（ＤＡＴＡ＿ＭＬ）をマシンラーニングコントローラ３３０に提供する。マシンラーニングロジック部３２０は、マシンラーニングロジックがプログラミングされたＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）（ＦＰＧＡ  １〜ＦＰＧＡ  ｎ）を備えることができる。
【００２５】
このとき、ＦＰＧＡ（ＦＰＧＡ  １〜ＦＰＧＡ  ｎ）は、それぞれ独立してマシンラーニングコントローラ３３０からローデータ（ＤＡＴＡ＿ＲＡＷ）の提供を受けてマシンラーニングを行った後、マシンラーニングされたマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）をマシンラーニングコントローラ３３０に提供することができる。もしくは、ＦＰＧＡ（ＦＰＧＡ  １〜ＦＰＧＡ  ｎ）は、マシンラーニングロジックを順次行うことができる。例えば、ＦＰＧＡ  １は、提供されたローデータを利用し、既にプログラミングされたロジックに従ってマシンラーニングを行った後、その結果データをＦＰＧＡ  ２に提供し、ＦＰＧＡ  ２は、ＦＰＧＡ  １で処理されたデータを利用し、既にプログラミングされたロジックに従ってマシンラーニングを行った後、その結果データをＦＰＧＡ  ３に提供することができる。このような方法でＦＰＧＡ  ｎまで順次マシンラーニングを行った後、最終のＦＰＧＡ  ｎがマシンラーニングコントローラ３３０に完了したマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）を提供することができる。
【００２６】
マシンラーニングコントローラ３３０は、データ格納部３１０に格納されたローデータ（ＤＡＴＡ＿ＲＡＷ）をマシンラーニングロジック部３２０に提供し、マシンラーニングロジック部３２０によってマシンラーニングされたデータ（ＤＡＴＡ＿ＭＬ）をデータ格納部３１０に格納する。例えば、マシンラーニングコントローラ３３０は、データ格納部３１０の特定の領域にコマンドデータ（ＤＡＴＡ＿ＣＭＤ）が格納されたのか否かを周期的にモニタリングし、コマンドデータ（ＤＡＴＡ＿ＣＭＤ）に基づいてデータ格納部３１０からローデータ（ＤＡＴＡ＿ＲＡＷ）を読み取った後、これをマシンラーニングロジック部３２０に提供する。
【００２７】
マシンラーニングコントローラ３３０は、マシンラーニングロジック部３２０でマシンラーニングを行う間にはデータ格納部３１０との連結を遮断することができる。マシンラーニングが完了すれば、マシンラーニングコントローラ３３０は、マシンラーニングされたデータ（ＤＡＴＡ＿ＭＬ）の提供をマシンラーニングロジック部３２０から受けてデータ格納部３１０に書き込む。次いで、マシンラーニングコントローラ３３０は、マシンラーニングされたデータ（ＤＡＴＡ＿ＭＬ）の格納位置を知らせる位置データ（ＤＡＴＡ＿ＬＯＣ）を予め設定された位置に書き込む。
【００２８】
図５は、図３におけるマシンラーニングロジック部３２０の各ＦＰＧＡの構成をより詳しく示した図である。図５では、説明の便宜のため、隣接した二つのＦＰＧＡ（ＦＰＧＡ  １、ＦＰＧＡ  ２）の構成、及びこれらとマシンラーニングコントローラ３３０の関係のみを例示的に示している。
図５に示す通り、各ＦＰＧＡは、ロジック部３２２、入力バッファ３２４及び出力バッファ３２６を備えることができる。
【００２９】
ロジック部３２２は、マシンラーニングロジックがプログラミングされ、プログラミングされたロジックに従って入力バッファ３２４に格納されたローデータ（ＤＡＴＡ＿ＲＡＷ）を処理することでマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）を生成し、生成されたマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）を出力バッファ３２６に出力する。
【００３０】
入力バッファ３２４は、マシンラーニングコントローラ３３０と連結され、マシンラーニングコントローラ３３０から提供されたローデータ（ＤＡＴＡ＿ＲＡＷ）を一時格納する。
【００３１】
出力バッファ３２６は、マシンラーニングコントローラ３３０または次のＦＰＧＡの入力バッファと連結され、ロジック部３２２で処理されたデータ（ＤＡＴＡ＿ＭＬ）を一時格納する。最後のＦＰＧＡ（ＦＰＧＡ  ｎ）の出力バッファ３２６は、マシンラーニングコントローラ３３０と連結される。
【００３２】
図６は、本発明の一実施形態に係るホスト装置とマシンラーニング装置の動作を説明するためのタイミング図である。
図６に示す通り、マシンラーニング装置３００のマシンラーニングコントローラ３３０は、データ格納部３１０で予め指定された特定の格納位置を周期的にアクセスし、当該位置にホスト装置１００からのコマンドデータ（ＤＡＴＡ＿ＣＭＤ）が格納されたのか否かをモニタリングする（ステップ（１））。
【００３３】
ホスト装置１００は、マシンラーニングが必要な場合、ＤＩＭＭインタフェースを介しマシンラーニング装置３００のデータ格納部３１０にアクセスしてローデータ（ＤＡＴＡ＿ＲＡＷ）を書き込み、マシンラーニングの開始を指示するコマンド、及びローデータ（ＤＡＴＡ＿ＲＡＷ）が格納された位置を知らせる情報を含むコマンドデータ（ＤＡＴＡ＿ＣＭＤ）を指定された位置に書き込む（ステップ（２））。
【００３４】
ホスト装置１００がコマンドデータ（ＤＡＴＡ＿ＣＭＤ）及びローデータ（ＤＡＴＡ＿ＲＡＷ）を書き込むと、マシンラーニングコントローラ３３０は、ステップ（１）のような周期的なモニタリングを介し、データ格納部３１０にコマンドデータ（ＤＡＴＡ＿ＣＭＤ）が格納されたことが分かるようになる。
【００３５】
コマンドデータ（ＤＡＴＡ＿ＣＭＤ）が格納されたことを確認したマシンラーニングコントローラ３３０は、コマンドデータ（ＤＡＴＡ＿ＣＭＤ）が知らせる格納位置にアクセスしてローデータ（ＤＡＴＡ＿ＲＡＷ）を読み取った（ステップ（３））後、読み取ったローデータ（ＤＡＴＡ＿ＲＡＷ）をマシンラーニングロジック部３２０の入力バッファ３２４に伝送する（ステップ（４））。
【００３６】
マシンラーニングロジック部３２０は、提供されたローデータ（ＤＡＴＡ＿ＲＡＷ）を既にプログラミングされたマシンラーニングロジックに従って処理することでマシンラーニング動作を行う（ステップ（５））。
【００３７】
このとき、マシンラーニングロジック部３２０のＦＰＧＡ（ＦＰＧＡ  １〜ＦＰＧＡ  ｎ）は、それぞれ独立してマシンラーニングコントローラ３３０から提供されたローデータ（ＤＡＴＡ＿ＲＡＷ）を処理した後、そのマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）をマシンラーニングコントローラ３３０に提供することができる。
【００３８】
マシンラーニングプログラムのサイズが大きいため、一つのＦＰＧＡだけで処理が不可能な場合は、ＦＰＧＡ（ＦＰＧＡ  １〜ＦＰＧＡ  ｎ）は、順次マシンラーニングを行うことができる。例えば、ＦＰＧＡ  １は、提供されたローデータを利用し、既にプログラミングされたロジックに従ってマシンラーニングを行った後、その結果データをＦＰＧＡ  ２に提供する。ＦＰＧＡ  ２は、ＦＰＧＡ  １から提供されたデータ（または、ＦＰＧＡ  １から提供されたデータと自分の入力バッファのデータ）を利用し、既にプログラミングされたロジックに従ってマシンラーニングを行った後、その結果データをＦＰＧＡ  ３に提供する。このような方法で、ＦＰＧＡ  ｎまで順次マシンラーニングが行われる。
【００３９】
マシンラーニングが完了したデータ（ＤＡＴＡ＿ＭＬ）は、マシンラーニングコントローラ３３０に伝送される（ステップ（６））。
マシンラーニングコントローラ３３０は、データ格納部３１０にアクセスしてマシンラーニングされたデータ（ＤＡＴＡ＿ＭＬ）を書き込み、既に指定された特定の位置にマシンラーニングされたデータ（ＤＡＴＡ＿ＭＬ）が格納された位置を知らせる位置データ（ＤＡＴＡ＿ＬＯＣ）を書き込む（ステップ（７））。
【００４０】
ホスト装置１００は、ローデータ（ＤＡＴＡ＿ＲＡＷ）を書き込んだ後、データ格納部３１０で予め指定された特定の格納位置を周期的にアクセスし、当該位置に位置データ（ＤＡＴＡ＿ＬＯＣ）が格納されているのかをモニタリングする（ステップ（８））。
【００４１】
位置データ（ＤＡＴＡ＿ＬＯＣ）が格納されたことを確認したホスト装置１００は、位置データ（ＤＡＴＡ＿ＬＯＣ）が知らせる格納位置にアクセスしてマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）を読み取る（ステップ（９））。
【００４２】
図７は、本発明の他の実施形態に係るマシンラーニング装置３００の構成を示す図である。
図３のマシンラーニング装置では、マシンラーニングロジック部３２０のＦＰＧＡ（ＦＰＧＡ  １〜ＦＰＧＡ  ｎ）が、図５に示す通り、その内部にバッファ３２４、３２６を含み、バッファ３２４、３２６を介してマシンラーニングコントローラ３３０と、ローデータ（ＤＡＴＡ＿ＲＡＷ）及びマシンラーニングされたデータ（ＤＡＴＡ＿ＭＬ）の送信／受信を行った。
【００４３】
一方、図７のマシンラーニング装置３００におけるマシンラーニングロジック部３４０は、ＦＰＧＡ（ＦＰＧＡ  １’〜ＦＰＧＡ  ｎ’）の外部に別に形成されたメモリ素子３４０を備えることができる。すなわち、ＦＰＧＡ（ＦＰＧＡ  １’〜ＦＰＧＡ  ｎ’）とマシンラーニングコントローラ３５０は、メモリ素子３４０を介してローデータ（ＤＡＴＡ＿ＲＡＷ）及びマシンラーニングされたデータ（ＤＡＴＡ＿ＭＬ）を送信／受信することができる。
【００４４】
図７に示す通り、マシンラーニング装置３００は、データ格納部３１０、マシンラーニングロジック部３４０及びマシンラーニングコントローラ３５０を備えることができる。
【００４５】
データ格納部３１０は、図３におけるデータ格納部３１０とその構造及び機能が同一である。よって、これに対する説明は省略する。
マシンラーニングロジック部３４０は、マシンラーニングコントローラ３３０から提供されたローデータ（ＤＡＴＡ＿ＲＡＷ）を、既にプログラミングされたマシンロジックに従って処理することでマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）を生成し、生成されたマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）をマシンラーニングコントローラ３３０に提供する。マシンラーニングロジック部３４０は、マシンラーニングロジックがプログラミングされたＦＰＧＡ（ＦＰＧＡ  １’〜ＦＰＧＡ  ｎ’）、及びＦＰＧＡ（ＦＰＧＡ  １’〜ＦＰＧＡ  ｎ’）と一対一に対応されるように形成される複数のメモリ素子３４２を備えることができる。
【００４６】
ＦＰＧＡ（ＦＰＧＡ  １’〜ＦＰＧＡ  ｎ’）は、メモリ素子３４２に格納されたローデータ（ＤＡＴＡ＿ＲＡＷ）を読み取り、マシンラーニングロジックに従って処理し、マシンラーニングされたデータ（ＤＡＴＡ＿ＭＬ）をメモリ素子３４２に書き込む。ＦＰＧＡ（ＦＰＧＡ  １’〜ＦＰＧＡ  ｎ’）のマシンラーニングロジックは、図３のＦＰＧＡ（ＦＰＧＡ  １〜ＦＰＧＡ  ｎ）のマシンラーニングロジックと同様にプログラミングされてよい。ただし、ＦＰＧＡ（ＦＰＧＡ  １’〜ＦＰＧＡ  ｎ’）は、内部のバッファを介してデータを入力／出力することなく、外部のメモリ素子３４２にデータを書き込むか、メモリ素子３４２に格納されたデータを読み取る方式でデータを入力／出力するという点で、図３のＦＰＧＡ（ＦＰＧＡ  １〜ＦＰＧＡ  ｎ）と違いがある。
【００４７】
ＦＰＧＡ（ＦＰＧＡ  １’〜ＦＰＧＡ  ｎ’）は、それぞれ独立してローデータ（ＤＡＴＡ＿ＲＡＷ）を処理することでマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）を生成するか、順次マシンラーニングを行うことで最終のＦＰＧＡ（ＦＰＧＡ  ｎ’）がマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）を生成することができる。
【００４８】
メモリ素子３４２は、図５において、各ＦＰＧＡ（ＦＰＧＡ  １〜ＦＰＧＡ  ｎ）に内蔵された入力バッファ及び出力バッファの役割を担う。メモリ素子３４２は、データ格納部３１０のメモリ素子と同様に、各データ（ＤＡＴＡ＿ＣＭＤ、ＤＡＴＡ＿ＬＯＣ、ＤＡＴＡ＿ＲＡＷ、ＤＡＴＡ＿ＭＬ）が格納される領域が予め物理的に区分されて定められてよい。
【００４９】
マシンラーニングコントローラ３５０は、データ格納部３１０に格納されたローデータ（ＤＡＴＡ＿ＲＡＷ）をメモリ素子３４２に伝達し、メモリ素子３４２に格納されたマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）をデータ格納部３１０に伝達する。すなわち、マシンラーニングコントローラ３５０は、ホスト装置１００がデータ格納部３１０に書き込んだローデータ（ＤＡＴＡ＿ＲＡＷ）を読み取ってメモリ素子３４２に書き込み、ＦＰＧＡ（ＦＰＧＡ  １’〜ＦＰＧＡ  ｎ’）がメモリ素子３４２に書き込んだマシンラーニングデータ（ＤＡＴＡ＿ＭＬ）を読み取ってデータ格納部３１０に書き込む。
【００５０】
このとき、マシンラーニングコントローラ３５０がデータ格納部３１０を介してホスト装置１００とデータ（ＤＡＴＡ＿ＲＡＷ、ＤＡＴＡ＿ＭＬ）の送信／受信を行う方法は、図３において、マシンラーニングコントローラ３３０がデータ格納部３１０を介してホスト装置１００とデータ（ＤＡＴＡ＿ＲＡＷ、ＤＡＴＡ＿ＭＬ）の送信／受信を行う方法と同一であってよい。また、マシンラーニングコントローラ３５０がメモリ素子３４２を介してＦＰＧＡ（ＦＰＧＡ  １’〜ＦＰＧＡ  ｎ’）とデータ（ＤＡＴＡ＿ＲＡＷ、ＤＡＴＡ＿ＭＬ）の送信／受信を行う方法も、図３において、マシンラーニングコントローラ３３０がデータ格納部３１０を介してホスト装置１００とデータ（ＤＡＴＡ＿ＲＡＷ、ＤＡＴＡ＿ＭＬ）の送信／受信を行う方法と同一であってよい。よって、本実施形態ではこれに対する説明は省略する。
【００５１】
図８は、本発明のまた他の実施形態に係るマシンラーニング装置３００の構成を示す図である。
本実施形態を図３の実施形態と比べると、本実施形態では、図３のデータ格納部３１０に対応されるメモリ素子３６２が、マシンラーニングコントローラ３６０内に内蔵される形態に形成されるという点で違いがある。メモリ素子３６２の構造及び機能は、図３のデータ格納部３１０に含まれるメモリ素子等と同一である。
【００５２】
図８は、図３の構造を変形した形態でのみ説明したが、図７の構造でもデータ格納部３１０のメモリ素子等は、マシンラーニングコントローラ３５０に内蔵される形態に形成されてよい。
【００５３】
以上の説明は、本発明の技術思想を例示的に説明したことに過ぎないものであって、本発明の属する技術分野で通常の知識を有する者であれば、本発明の本質的な特性から外れない範囲で多様な修正及び変形が可能なはずである。
したがって、本発明に開示されている実施形態等は、本発明の技術思想を限定するためではなく説明するためのものであり、このような実施形態によって本発明の技術思想の範囲が限定されるものではない。本発明の保護範囲は、特許請求の範囲によって解釈されなければならず、それと同等な範囲内にある全ての技術思想は、本発明の権利範囲に含まれるものとして解釈されなければならないはずである。
【符号の説明】
【００５４】
１００    ホスト装置
２００    メモリ装置
３００    マシンラーニング装置
３１０    データ格納部、第１データ格納部
３２０、３５０    マシンラーニングロジック部
３２２    ロジック部
３２４    入力バッファ
３２６    出力バッファ
３３０、３６０、３７０    マシンラーニングコントローラ
３４０    第２データ格納部
【図１】
2019204485.tif 000003
【図２】
2019204485.tif 000004
【図３】
2019204485.tif 000005
【図４】
2019204485.tif 000006
【図５】
2019204485.tif 000007
【図６】
2019204485.tif 000008
【図７】
2019204485.tif 000009
【図８】
2019204485.tif 000010