(57)【要約】  マルチタスク再帰型ニューラルネットワークに関する、コンピュータ記憶媒体にエンコードされたコンピュータプログラムを含む方法、システム、および装置。方法のうち１つは、再帰型ニューラルネットワークのために、複数のメモリ領域の各々について別々の内部領域を指定するデータを保持することと、現在の入力を受信することと、現在の入力によって定義されるメモリアクセスアドレスの特定のメモリ領域を識別することと、保持されたデータ内で指定された内部状態から、特定のメモリ領域についての内部状態を選択することと、特定のメモリ領域について選択された内部状態に従って、再帰型ニューラルネットワークを用いて入力のシーケンス内の現在の入力を処理して、予測されたメモリアクセスアドレスの確率分布を定義する出力を生成し、特定のメモリ領域の選択された内部状態を更新することと、更新された、選択された内部状態を、保持されたデータ内の特定のメモリ領域と関連付けることとを備える。
2021525404.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
複数のメモリ領域内のコンピュータプログラムのメモリアクセスアドレスを予測するように訓練された再帰型ニューラルネットワークのために、前記複数のメモリ領域の各々について別々の内部状態を指定する内部状態データを保持することと、
前記コンピュータプログラムの以前のメモリアクセスアドレスのシーケンスを定義する入力のシーケンス内の現在の入力を受信することと、
前記入力のシーケンス内の前記現在の入力によって定義される前記メモリアクセスアドレスの特定のメモリ領域を識別することと、
保持された前記データ内で指定された内部状態から、前記特定のメモリ領域についての前記内部状態を選択することと、
前記特定のメモリ領域について選択された前記内部状態に従って、前記再帰型ニューラルネットワークを用いて前記入力のシーケンス内の前記現在の入力を処理して、
前記特定のメモリ領域内の前記コンピュータプログラムの将来のメモリアクセスアドレスである予測されたメモリアクセスアドレスの確率分布を定義する出力を生成し、
前記特定のメモリ領域の選択された前記内部状態を更新することと、
更新された、選択された前記内部状態を、保持された前記データ内の前記特定のメモリ領域と関連付けることとを備える、方法。
【請求項２】
予測された前記メモリアクセスアドレスは、前記特定のメモリ領域内の前記コンピュータプログラムの次のメモリアクセスアドレスである、請求項１に記載の方法。
【請求項３】
前記入力のシーケンスは、前記コンピュータプログラムの以前のプログラムカウンタアドレスのシーケンスおよび対応するデルタ値を含み、各デルタ値は、それぞれの第１のメモリアクセスアドレスとそれぞれの第２のメモリアクセスアドレスとの差を定義し、前記第１のメモリアクセスアドレスは、対応する前記プログラムカウンタアドレスによって示される命令が実行されたときにアクセスされたアドレスであり、前記第２のメモリアクセスアドレスは、前記第１のメモリアドレスがアクセスされる前にアクセスされたアドレスである、請求項１または２に記載の方法。
【請求項４】
前記第１のメモリアクセスアドレスおよび前記第２のメモリアクセスアドレスは、前記複数のメモリ領域の同じメモリ領域内にある、請求項３に記載の方法。
【請求項５】
予測された前記メモリアクセスアドレスと関連付けられたメモリアクセスはリードアクセスである、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記分布内の１つ以上の確率が閾値基準を満たすと判断することと、
それに応じて、前記基準を満たす前記１つ以上の確率と関連付けられた、予測された前記１つ以上のメモリアクセスアドレスからデータをフェッチすることと、
前記データをローカルキャッシュに格納することとをさらに備える、請求項５に記載の方法。
【請求項７】
前記分布内の１つ以上の確率が閾値基準を満たすと判断することと、
１つ以上のプリフェッチ命令を前記コンピュータプログラムに自動的に挿入することとをさらに備え、前記１つ以上のプリフェッチ命令の実行によって、前記基準を満たす前記１つ以上の確率と関連付けられた、予測された前記１つ以上のメモリアクセスアドレスからデータがフェッチされ、前記１つ以上のプリフェッチ命令は、予測された前記メモリアクセスを生じる命令の前に前記コンピュータプログラムに挿入される、請求項５に記載の方法。
【請求項８】
回路であって、
再帰型ニューラルネットワークの動作を行うように構成された再帰型ニューラルネットワークセル（ＲＮＮセル）と、
複数の状態レジスタとを備え、各状態レジスタは、ｉ）前記再帰型ニューラルネットワークのために内部状態データを格納するように構成され、ｉｉ）前記ニューラルネットワークが行うように訓練された複数のタスクのそれぞれのタスクに対応し、前記回路はさらに、
回路構成要素を備え、前記回路構成要素は、
入力のシーケンス内の現在の入力とシーケンス識別データとを受信することと、
前記シーケンス識別データに基づいて前記複数のタスクのうち１つのタスクを識別することと、
識別された前記タスクに対応する前記状態レジスタから内部状態データを取得することと、
取得した前記内部状態データと前記現在の入力とを前記ＲＮＮセルに提供して、前記ＲＮＮセルに、取得した前記内部状態データと前記現在の入力とを処理して、ニューラルネットワーク出力と識別された前記タスクについて更新された内部状態データとを生成させることと、
前記ニューラルネットワーク出力と識別された前記タスクについて更新された前記内部状態データとを、前記ＲＮＮセルから受信することと、
更新された前記内部状態データを、識別された前記タスクに対応する前記状態レジスタに書込むこととを含む動作を行うように構成された、回路。
【請求項９】
前記シーケンス識別データは、前記現在の入力のプロパティに基づく、請求項８に記載の回路。
【請求項１０】
前記シーケンス識別データは、ユーザ入力に基づく、請求項８に記載の回路。
【請求項１１】
それぞれの前記タスクは、前記ＲＮＮセルがメモリアクセスアドレスを予測することを含む、請求項８に記載の回路。
【請求項１２】
前記ＲＮＮセルは、前記再帰型ニューラルネットワークの固定重みのセットを保持するように構成される、請求項８〜１１のいずれか１項に記載の回路。
【請求項１３】
前記回路構成要素はマルチプレクサを含み、前記マルチプレクサは、
前記シーケンス識別データに基づいて、識別された前記タスクに対応する前記状態レジスタを選択し、
取得した前記内部状態データを前記ＲＮＮセルに提供するように構成される、請求項８〜１２のいずれか１項に記載の回路。
【請求項１４】
１つ以上のコンピュータと、１つ以上のコンピュータによって実行されると前記１つ以上のコンピュータに請求項１〜７のいずれか１項に記載の前記動作を行わせる命令を格納する１つ以上の記憶デバイスとを備える、システム。
【請求項１５】
１つ以上のコンピュータによって実行されると前記１つ以上のコンピュータに請求項１〜７のいずれか１項に記載の前記動作を行わせる命令でエンコードされた、１つ以上のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
本明細書は、再帰型ニューラルネットワークに関する。
【背景技術】
【０００２】
ニューラルネットワークは、複数の層の動作を用いて１つ以上の入力から１つ以上の出力を予測する機械学習モデルである。ニューラルネットワークは、入力層と出力層との間に位置する１つ以上の隠れ層を含むことが典型的である。各隠れ層の出力は、次の層、たとえば次の隠れ層または出力層への入力として用いられる。
【０００３】
ニューラルネットワークの各層は、層への入力に対して行われる１つ以上の変換動作を指定する。なかには、ニューロンと呼ばれる、動作を有するニューラルネットワーク層もある。各ニューロンは、１つ以上の入力を受信し、他のニューラルネットワーク層によって受信される出力を生成する。多くの場合、各ニューロンは他のニューロンから入力を受信し、各ニューロンは１つ以上の他のニューロンに出力を提供する。
【０００４】
各層は、当該層についてのパラメータのセットの現在値を用いて１つ以上の出力を生成する。ニューラルネットワークの訓練には、連続して、入力に対してフォワードパスを行うことと、勾配値を計算することと、各層についてパラメータのセットの現在値を更新することとが含まれる。ニューラルネットワークが訓練されると、生産システムにおいて、パラメータの最終的なセットを用いて予測することが可能になる。
【０００５】
ニューラルネットワークのいくつかは、再帰型ニューラルネットワークである。再帰型ニューラルネットワークは、入力シーケンスを受信し入力シーケンスから出力シーケンスを生成するニューラルネットワークである。特に、再帰型ニューラルネットワークは、現在の時間ステップにおいて出力を計算する際に以前の時間ステップからネットワークの内部状態の一部またはすべてを用いることができる。これによって、再帰型ニューラルネットワークは、時間的な動的振る舞いを見せる。すなわち、再帰型ニューラルネットワークは、現在の時間ステップまでに受信したすべての情報を集約し、データのシーケンスの長期にわたる依存性を収集することが可能である。
【発明の概要】
【課題を解決するための手段】
【０００６】
概要
本明細書は、マルチタスク再帰型ニューラルネットワーク、より詳細には、マイクロプロセッサにおいて時系列予測を向上するマルチタスク再帰型ニューラルネットワークについて説明する。
【０００７】
マルチタスク再帰型ニューラルネットワークを実装する回路は、再帰型ニューラルネットワークの動作を行うように構成された再帰型ニューラルネットワークセル（「ＲＮＮセル」）を備える。つまり、ＲＮＮセルは、再帰型ニューラルネットワーク内の各層によって定義される変換動作を行うように構成される。回路はまた、状態レジスタを備える。各状態レジスタは、（ｉ）再帰型ニューラルネットワークのために内部状態データを格納するように構成され、（ｉｉ）ニューラルネットワークが行うように訓練されたそれぞれのタスクに対応する。状態データは、複数の時間ステップにわたって存続するデータ、すなわち、シーケンス内の次の入力を処理する際に使用されるシーケンス内の１つの入力を処理した後に保持されるデータである。たとえば、再帰型ニューラルネットワークが長・短期記憶（ＬＳＴＭ）ネットワークの場合、状態データは、ネットワーク内の各ＬＳＴＭユニットについて、隠れ状態ｈとセル状態ｃとを含み得る。
【０００８】
回路は、入力のシーケンス内の現在の入力とシーケンス識別データとを受信する。回路は、シーケンス識別データに基づいて特定のタスクを識別する。回路は、識別されたタスクに対応する状態レジスタから内部状態データを取得する。回路は、取得した内部状態データと現在の入力とをＲＮＮセルに提供して、ＲＮＮセルに、取得した内部状態データと現在の入力とを処理して、ニューラルネットワーク出力と識別されたタスクについて更新された内部状態データとを生成させる。回路は、ニューラルネットワーク出力と識別されたタスクについて更新された内部状態とを、ＲＮＮセルから受信する。回路は最後に、更新された内部状態データを、識別されたタスクに対応する状態レジスタに書込む。
【０００９】
上述の回路は、以下で説明する方法に従ってコンピューティングシステム内のメモリアクセスをより正確に予測するために使用可能である。回路は、複数のメモリ領域のうち１つにおけるコンピュータプログラムのメモリアクセスアドレスを予測するように訓練された再帰型ニューラルネットワークのために、メモリ領域の各々について別々の内部状態を指定するデータを保持することと、コンピュータプログラムの以前のメモリアクセスアドレスのシーケンスを定義する入力のシーケンス内の現在の入力を受信することと、入力のシーケンス内の現在の入力によって定義されるメモリアクセスアドレスの特定のメモリ領域を識別することと、保持されたデータにおいて指定された内部状態から、特定のメモリ領域についての内部状態を選択することと、特定のメモリ領域について選択された内部状態に従って、再帰型ニューラルネットワークを用いて、入力のシーケンス内の現在の入力を処理して、（ｉ）特定のメモリ領域内のコンピュータプログラムの将来のメモリアクセスアドレスである予測されたメモリアクセスアドレスの確率分布を定義する出力を生成し、（ｉｉ）特定のメモリ領域の選択された内部状態を更新することと、更新された、選択された内部状態を、保持されたデータ内の特定のメモリ領域と関連付けることとが可能である。
【００１０】
いくつかの実施形態では、１つ以上のコンピュータ可読記憶媒体は、１つ以上の処理デバイスによって実行されると１つ以上の処理デバイスに本明細書で説明するいずれかの実施形態または態様に従って方法およびステップを含む動作を実行させる命令で、エンコードされる。
【００１１】
いくつかの実施形態では、システムは、１つ以上のコンピュータと、１つ以上のコンピュータによって実行されるとコンピュータに本明細書で説明するいずれかの実施形態または態様に従って方法およびステップを行わせる命令を格納する１つ以上の記憶デバイスとを備える。
【００１２】
本明細書で説明する主題は、以下の利点のち１つ以上を実現するように、特定の実施形態で実現可能である。再帰型ニューラルネットワークに連結された状態レジスタに再帰型ニューラルネットワーク状態を格納することを含む、ハードウェアにおける再帰型ニューラルネットワークの実装によって、再帰型ニューラルネットワークは異なるタスクを立て続けに行うことができ、これはマルチタスキングとして知られている。より詳細に、各状態レジスタは、それぞれのタスクについて状態を格納可能である。再帰型ニューラルネットワークは、第１の状態レジスタから第１の状態を取得して、第１の入力シーケンスを処理することができ、第１の入力シーケンスの処理が完了する前に、第２の状態レジスタから第２の状態を取得して、第２の異なる入力シーケンスを処理できる。たとえば、再帰型ニューラルネットワークを実装する１つのハードウェア回路は、単にそれぞれの状態レジスタからタスクのうち１つに対応する状態を取得することによって、メモリアクセス、キャッシュミス、およびブランチを予測することができる。状態データを状態レジスタに格納することによって、ＲＮＮが各時間ステップにおいて計算しなければならないシーケンス依存性の数が減少し、入力シーケンスの長さだけ、全レイテンシーが低減する。
【００１３】
本明細書はまた、入力シーケンスの分類および潜在的な要因による分割が行われ得る態様について説明する。データプリフェッチでは、潜在的な要因による分割の一例は、メモリの異なる領域内のメモリアクセスアドレスのインターリーブされたストリームを分けることである。これらの領域の各々は異なるメモリアクセスパターンを有してもよく、機械学習モデルは、再帰型ニューラルネットワークへの入力として用いられる前にストリームが分けられるかどうか、より効果的に知ることができる。データプリフェッチにおける潜在的な要因による分割の他の例は、これらのメモリアクセスを生じたデータ構造によってメモリアクセスのストリームを分けることである。ここでも、そうすることによって、より効果的に機械学習モデルに学習させることが可能である。
【００１４】
本明細書の主題の１つまたは複数の実施形態について、添付の図面および以下の記載において詳細に説明する。本主題の他の特徴、態様、および利点は、説明、図面、および請求項から明らかとなるであろう。
【図面の簡単な説明】
【００１５】
【図１】ハードウェアで実装される再帰型ニューラルネットワークの例を示す図である。
【図２】状態レジスタとマルチプレクサとを有する再帰型ニューラルネットワークシステムの例を示す図である。
【図３】ハードウェア回路を用いてマルチタスク再帰型ニューラルネットワークを処理するためのプロセスの例を示すフローチャートである。
【図４】メモリからデータをプリフェッチするように構成されたコンピューティングシステムの例を示す図である。
【図５】コンピューティングシステムにおいて実行されるコンピュータプログラムの将来のメモリアクセスアドレスを予測するためのプロセスの例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
さまざまな図面における同様の参照番号および名称は、同様の要素を示す。
詳細な説明
本明細書は、マルチタスク再帰型ニューラルネットワーク、より詳細には、マイクロプロセッサにおいて時系列予測を向上するマルチタスク再帰型ニューラルネットワークについて説明する。
【００１７】
図１は、ハードウェアで実装される再帰型ニューラルネットワーク１００を示す図である。再帰型ニューラルネットワークは通常、入力層と、１つ以上の隠れ層と、出力層とを含む。
【００１８】
再帰型ニューラルネットワークの入力層は通常、０〜現在の時間ステップＮの各時間ステップにおけるそれぞれの入力を含む入力のシーケンスを受信し、入力のシーケンスを処理してシーケンスの特徴表現を生成するように構成される。
【００１９】
再帰型ニューラルネットワークの隠れ層は再帰層であり、これは、これらの層が、シーケンス内の入力間の状態を保持し、かつ、現在の時間ステップについて出力を生成する一部として現在の状態を更新することを表す。従来の再帰型ニューラルネットワークは、層について出力および次の状態を計算する隠れ層を有し、次の状態は、以前の状態および現在の入力に基づく。状態は、時間ステップにわたって保持され、入力シーケンスにおける依存性を捉える。
【００２０】
特定の種類の再帰型ニューラルネットワークは、長・短期記憶（ＬＳＴＭ）ネットワークである。ＬＳＴＭネットワーク内の隠れ層は、入力シーケンス内の入力ごとに１つのＬＳＴＭユニットを含む。各ＬＳＴＭユニットは、それ自体の層内の他のＬＳＴＭユニットに、および、次の隠れ層または出力層内のＬＳＴＭユニットに、出力を提供する。各ＬＳＴＭユニットは、隠れ状態ｈ、セル状態ｃ、入力ゲートｉ、忘却ゲートｆ、および出力ゲートｏを含む。これらの３つのゲートの各々は、加重和の起動を計算する個別のニューロンであると考えることができる。直感的に、入力ゲートは、新しい値がセルに流入する範囲を制御し、忘却ゲートは、値がセルに留まる範囲を制御し、出力ゲートは、セル内の値を用いてＬＳＴＭユニットの出力起動を計算する範囲を制御する。すなわち、これらのゲートは、ＬＳＴＭユニットが「記憶する」もの、またはその状態が以前の状態によって影響を受ける態様を制御する。
【００２１】
再帰型ニューラルネットワークの出力層は通常、最後の隠れ層から入力を受信し、各時間ステップにおいて出力、たとえば予測を生成するように構成される。出力層は、ソフトマックス層、ロジスティック層、または線形層などでもよい。ソフトマックス出力層は、時間ステップについて可能な出力にわたって離散確率分布を生成する。つまり、各々の可能な出力は、離散点数と関連付けられる。ロジスティック出力層は、パラメータ、たとえば、時間ステップについて可能な出力にわたる分布の平均、ログスケール、または混合重みを生成する。また、線形層は、最後の隠れ層の出力を好適な出力空間内に投影する。実現例によっては、再帰型ニューラルネットワークは出力層を有さない、すなわち、最後の隠れ層の出力は、再帰型ニューラルネットワークの出力である。
【００２２】
再帰型ニューラルネットワークのための訓練データは、入力のシーケンスおよびこれらの入力のシーケンスのラベルを含む。各ラベルは、特定の入力シーケンスについて特定の時間ステップで所望されるまたは予想される出力に対応する。再帰型ニューラルネットワークの訓練は、所与の入力のシーケンスについて実際の出力と予測される出力との間の不一致を最小限にするために、ネットワークの重み、たとえば、入力層、ＲＮＮセル、および出力層の重みを設定することを含む。所与の入力のシーケンスについて実際の出力と予測される出力との間に不一致がある場合、再帰型ニューラルネットワークの重みを、たとえば時間訓練技術による従来のバックプロパゲーションを用いて更新可能である。再帰型ニューラルネットワークの重みを更新するために、従来技術で公知の他の技術を用いることも可能である。
【００２３】
再帰型ニューラルネットワーク１００は、隠れ層ごとに１つの状態レジスタと、隠れ層ごとに１つのＲＮＮセルとを含む再帰型ニューラルネットワークのハードウェア実装である。実現例によっては、各ＲＮＮセルは、処理ユニットのシストリックアレイにおける処理ユニットである。各処理ユニットは、たとえば、行数の乗算を一括して行う乗算・累算ユニットのセットと、任意の必要なゲーティング関数を適用し、要素単位の乗算を行う他の回路構成要素とを含むことによって、行数の乗算とハードウェア内の再帰型ニューラルネットワーク層の他の動作とを行う。
【００２４】
時間ステップＮにおいて、入力ユニット１１０は、入力のシーケンス内の入力Ｎを受信し、その入力の特徴表現を生成する。ＲＮＮセル１２０および１３０は、再帰型ニューラルネットワークの固定パラメータと、各隠れ層について状態レジスタに格納されている状態データとの両方を用いて、特徴表現を処理する。ＲＮＮセル１３０の出力はその後出力ユニット１４０に提供され、出力ユニット１４０は、時間ステップＮ＋１について出力を生成する。ＲＮＮセル１２０および１３０はまた、それぞれの状態レジスタ内の状態データを更新して、入力Ｎを反映する。この状態データは、すべての以前の入力および状態を捉える。
【００２５】
図２は、異なる態様で状態レジスタを利用する再帰型ニューラルネットワークシステム２００の例を示す図である。状態レジスタ２１０ａ〜２１０ｎは各々、再帰型ニューラルネットワークの異なる内部状態を指定するデータを格納可能である。各内部状態、およびそれゆえ各状態レジスタは、ニューラルネットワークが行うように訓練されたそれぞれ異なるタスクに対応する。たとえば、第１の状態レジスタは、メモリアクセスアドレスの予測に対応する内部状態を指定するデータを格納可能である、すなわち、アドレスのロードおよび格納が可能である一方で、第２の状態レジスタは、コンピュータプログラムの分岐の予測に対応する内部状態を指定するデータを格納可能である。その一方で、他の状態レジスタはたとえば、将来のプログラム命令またはキャッシュミスの予測に対応する内部状態を指定するデータを格納可能である。
【００２６】
マルチプレクサであるＲＮＮセレクタ２２０は、シーケンス識別データに基づいて、再帰型ニューラルネットワークが特定の時間に用いる特定の内部状態を選択可能である。シーケンス識別データは、状態レジスタ、およびそれゆえ、ＲＮＮ計算セル２３０にロードされるべき内部状態を指定する。シーケンス識別データは、ＲＮＮ計算セル２３０が行うべき、たとえば、（分岐、プログラム命令、またはキャッシュミスとは対照的に）メモリアクセスアドレスを予測するべき特定のタスクを指定するユーザ入力に基づき得る。代替的に、シーケンス識別データは、現在の入力についての観測に基づき得る。たとえば、シーケンス識別データは、現在の入力がキャッシュアドレスであるという観測に基づき得る。そのような状況では、シーケンス識別データは、キャッシュミスを予測するタスクに対応する内部状態がＲＮＮ計算セル２３０にロードされるべきであると指定することがある。
【００２７】
再帰型ニューラルネットワークシステム２００はまた、固定パラメータのセットがロードされる入力ユニット２４０も含む。入力ユニット２４０は、現在の入力の受信、現在の入力の特徴表現の生成、および、ＲＮＮ計算セル２３０への特徴表現の提供が可能である。
【００２８】
選択された状態、特徴表現、およびＲＮＮ計算セル２３０内に保持されている固定重みのセットを用いて、ＲＮＮ計算セル２３０は、タスクについての予測および次の状態を生成可能である。再帰型ニューラルネットワークが複数の隠れ層を有する場合、ＲＮＮ計算セル２３０は、それ自体の状態レジスタとＲＮＮセレクタとを有するであろう他のＲＮＮ計算セルに対して、生成された予測を提供可能である。また、再帰型ニューラルネットワークシステムは、任意に出力ユニットを含み得る。その一方で、ＲＮＮ計算セル２３０は、適切な状態レジスタ２１０ａ〜２１０ｎに、タスクについて次の状態を提供して、当該レジスタの以前の状態を上書き可能である。上述したようなマルチタスク再帰型ニューラルネットワークの訓練には、各タスクを行うように再帰型ニューラルネットワークを訓練することが必要である。
【００２９】
代替的に、状態レジスタ２１０ａ〜２１０ｎは各々、複数のメモリ領域内のコンピュータプログラムのメモリアクセスアドレスを予測するように訓練された再帰型ニューラルネットワークのために、複数のメモリ領域の各々について別々の内部状態を指定するデータを格納可能である。１つのメモリ領域内のメモリアクセスは通常２つ以上のメモリ領域にわたるメモリアクセスよりも予測可能なパターンをたどるため、このようにメモリ領域によってメモリアクセスを分割することによって、メモリアクセス予測を向上可能である。すなわち、ＲＮＮ計算セル２３０は、アドレス空間全体にわたるのではなく特定のメモリ領域においてメモリアクセスを予測するときに、より正確な予測を生成する。
【００３０】
図３は、マルチタスク再帰型ニューラルネットワークを処理するためのプロセス３００の例を示すフローチャートである。プロセス３００は、適切にプログラムされた回路によって行われる。回路は、再帰型ニューラルネットワークの動作を行うように構成されたＲＮＮセル、複数の状態レジスタ、および他の回路構成要素を備える。各状態レジスタは、（ｉ）再帰型ニューラルネットワークのために内部状態データを格納するように構成されており、（ｉｉ）ニューラルネットワークが行うように訓練された複数のタスクのそれぞれのタスクに対応する。
【００３１】
回路は、入力のシーケンス内の現在の入力およびシーケンス識別データを受信する（３１０）。入力シーケンスは、複数の時間ステップの各々におけるそれぞれの入力を含む。時間ステップは、連続していてもしていなくてもよい。シーケンス識別データは、タスク、およびそれゆえ、内部状態がＲＮＮセルにロードされる状態レジスタを指定する。
【００３２】
回路は、シーケンス識別データに基づいて行われるべき特定のタスクを識別する（３２０）。シーケンス識別データは、ＲＮＮセルが行うべき、たとえば、（分岐、プログラム命令、またはキャッシュミスとは対照的に）メモリアクセスアドレスを予測すべき特定のタスクを指定するユーザ入力に基づき得る。代替的に、シーケンス識別データは、現在の入力についての観測に基づき得る。たとえば、シーケンス識別データは、現在の入力がキャッシュアドレスであるという観測に基づき得る。そのような状況では、シーケンス識別データは、キャッシュミスを予測するタスクに対応する内部状態がＲＮＮセルにロードされるべきであると指定することがある。
【００３３】
回路は、識別されたタスクに対応する状態レジスタから内部状態データを取得する（３３０）。回路は、取得した内部状態データおよび現在の入力をＲＮＮセルに提供して、ＲＮＮセルに、取得した内部状態データおよび現在の入力を処理させて、ニューラルネットワーク出力および識別されたタスクについて更新された内部状態データを生成する（３４０）。
【００３４】
回路は、ＲＮＮセルから、ニューラルネットワーク出力および識別されたタスクについて更新された内部状態を受信する（３５０）。回路は最後に、識別されたタスクに対応する状態レジスタに、更新された内部状態を書込む（３６０）。
【００３５】
図１および図２を参照して説明した再帰型ニューラルネットワークの例および図３を参照して説明したプロセスの例は、コンピューティングシステム内の将来のメモリアクセスアドレスを予測するために使用可能である。
【００３６】
コンピュータプログラムは、コンピューティングシステムに、コンピューティングシステム内のさまざまな記憶場所に格納されたデータに対する動作を行わせる。通常、コンピューティングシステムは、データに対して動作を行うことが可能になる前に、メインメモリまたはローカルキャッシュからローカルレジスタにデータをロードする必要がある。しかしながら、メインメモリは通常大きく、かつローカルレジスタから物理的に離れているため、データをメインメモリからロードするには特に時間がかかる。そのため、定期的にコンピューティングシステムにメインメモリからデータを検索させるコンピュータプログラムは、そうでないコンピュータプログラムよりも実行に時間がかかる。メインメモリからデータをプリフェッチし、それが必要になる前により早いローカルキャッシュに格納することによって、コンピューティングシステムは、コンピュータプログラムのランタイムを短縮可能である。再帰型ニューラルネットワークは、プリフェッチされるべきデータを予測するために使用可能である。
【００３７】
図４は、メモリからデータをプリフェッチし、かつ、ローカルキャッシュに当該データを格納するように構成されたコンピューティングシステム４００の例を示す図である。コンピューティングシステム４００は、図示されていない１つ以上のプロセッサを用いて、コンピュータプログラム命令を実行可能である。特に、コンピューティングシステム４００は、命令メモリ内にコンピュータプログラムを格納し、その後、コンピュータプログラムによって定義される順番で命令を実行可能である。
【００３８】
コンピューティングシステム４００は、プログラムカウンタ４１０を有する。プログラムカウンタ、つまり、命令アドレスレジスタは、実行されるべき次のコンピュータプログラム命令を示す値を格納するレジスタである。すなわち、プログラムカウンタ４１０は、実行されるべき次のコンピュータプログラム命令が格納されるメモリアドレスを格納する。
【００３９】
命令サイクルが開始すると、コンピューティングシステム４００は、プログラムカウンタ４１０によって指定されたアドレスから次のコンピュータプログラム命令を受信する。プログラムカウンタ４１０に格納されたアドレスは、メモリ４２０内のメモリのブロックである命令メモリ４２２内の場所に対応する。
【００４０】
典型的には、所与のコンピュータプログラム命令が、たとえばロード、格納、加算、減算、否定論理和、分岐などの動作、１つ以上の発信元レジスタ、および宛先レジスタを指定する。コンピューティングシステム４００は、発信元レジスタ内に格納されたデータに対して指定された動作を行い、その結果を宛先レジスタに格納する。たとえば、コンピュータプログラム命令は、レジスタＡに格納されたデータがレジスタＢに格納されたデータに加算されるべきであり、かつ、結果がレジスタＣに格納されるべきであると指定し得る。
【００４１】
通常、コンピューティングシステムは、限定された数のローカルレジスタを有し、そのため、動作が行われるべきデータは、必要な場合にのみこれらのローカルレジスタにロードされる。しかしながら、メモリからデータをフェッチするのは時間がかかり、コンピュータプログラムの実行を遅くする。この問題の１つの解決策は、将来動作が行われるであろうデータを予測し、そのデータをプリフェッチし、それをローカルキャッシュ４３０などのより速いローカルメモリに格納することである。ローカルキャッシュは概してメインメモリよりシステムに物理的に近くメインメモリよりも小さいため、ローカルキャッシュからのデータのフェッチは、メインメモリからのデータのフェッチよりも速い。
【００４２】
しかしながら、ローカルキャッシュはサイズも限られており、コンピューティングシステムは、任意の所与の時間にローカルキャッシュにメインメモリの小さなサブセットしか格納できない。したがって、コンピューティングシステム４００は有利なことに、将来のメモリアクセスアドレスのサブセットを予測し、これらのアドレスからのデータをローカルキャッシュに格納することができる。コンピューティングシステムが正確な予測を行う場合、コンピューティングシステムは、コンピュータプログラム命令をより速く実行可能である。
【００４３】
コンピューティングシステム４００の予測サブシステム４４０は、以前のプログラムカウンタアドレスのシーケンスおよび対応するメモリアクセスアドレスを受信し、かつ、将来のメモリアクセスアドレスを予測するように構成される。予測サブシステム４４０は、ニューラルネットワークサブシステム４４２を含む。ニューラルネットワークサブシステム４４２は、図２を参照して説明した再帰型ニューラルネットワークシステムでもよい。ニューラルネットワークサブシステム４４２は、図２を参照して説明した構成要素に加えて、複数のメモリ領域から各メモリアクセスの特定のメモリ領域を求めるように構成されたメモリ領域分類器４４４を含む。１つのメモリ領域内のメモリアクセスは通常２つ以上のメモリ領域にわたるメモリアクセスよりも予測可能なパターンをたどるため、メモリ領域によってメモリアクセスを分けることによって、メモリアクセス予測を向上可能である。メモリを領域に分割する重要性について、図５を参照してより詳細に説明する。
【００４４】
予測サブシステム４４０は、コンピュータプログラムが実行される同じコンピュータで実装可能である、または、異なるコンピュータで実装可能である。
【００４５】
予測サブシステム４４０が特定のメモリアクセスアドレスを予測した後で、コンピューティングシステム４００は、そのアドレスからデータをプリフェッチし、それをローカルキャッシュ４３０に格納する。予測サブシステム４４０は、コンピュータプログラムが実行されるとメモリアクセスアドレスの予測を継続する、すなわち、コンピューティングシステム４００はこれらのアドレスからのデータのプリフェッチを継続する。データメモリ４２４からデータをフェッチするよりも、ローカルキャッシュ４３０からデータをフェッチする方が速い。これによって、コンピューティングシステム４００によるコンピュータプログラムの実行がより速くなる。
【００４６】
本明細書は主にデータのプリフェッチについてのみ説明するが、本明細書で説明する再帰型ニューラルネットワークシステムは、マイクロプロセッサにおいて他の時系列予測を行うように構成可能である。たとえば、システムは、命令メモリから命令をプリフェッチするために用いることができる。
【００４７】
また、システムを、メモリ曖昧性除去を最適化するために用いることが可能である。メモリ曖昧性除去は、順不同にメモリアクセス命令を実行するコンピューティングシステムによって用いられる技術のセットである。これらの技術によって、メモリ動作間の依存性が検出または予測されて、メモリアクセス効率および速度が増加する。
【００４８】
本明細書で説明する再帰型ニューラルネットワークシステムはまた、キャッシュ置換ポリシーを最適化するために使用可能である。キャッシュはサイズが限られており、コンピューティングシステムがデータをキャッシュ内に置くと、通常、キャッシュから対応する量のデータを除去する必要がある。再帰型ニューラルネットワークシステムは、最良のデータ、たとえば、近い将来にコンピューティングシステムによって最も用いられそうにないデータを予測して、キャッシュから除去可能である。代替的に、再帰型ニューラルネットワークシステムは、近い将来に最も使用される可能性のあるデータを予測し、確実にデータがキャッシュ内に留まるようにすることが可能である。たとえば、「最も長い間使われていない」キャッシュにおいて、すなわち、新しいデータを優先してキャッシュ内の最も長い間使われていないデータが除去されるべきであると指定する置換ポリシーを有するキャッシュにおいて、システムは、近い将来に使用されると予測されるデータについて「世代ビット（age bit）」の更新が可能である。世代ビットを更新することによって、確実にデータが新しいデータによって置換されることはない。
【００４９】
図５は、コンピューティングシステムで実行されるコンピュータプログラムの将来のメモリアクセスアドレスを予測するためのプロセス５００の例を示すフローチャートである。図２を参照して説明した再帰型ニューラルネットワークシステムは、プロセス５００の例を行うことができる。代替的に、プロセス５００は、ソフトウェアで実装可能である。便宜上、プロセス５００は、１つ以上の場所で１つ以上のコンピュータの適切にプログラムされたシステムによって実行されると説明される。
【００５０】
システムは、複数のメモリ領域内のコンピュータプログラムのメモリアクセスアドレスを予測するように訓練された再帰型ニューラルネットワークのために、複数のメモリ領域の各々について別々の内部状態を指定するデータを保持する（５１０）。
【００５１】
システムは、コンピュータプログラムの以前のメモリアクセスアドレスのシーケンスを定義する入力のシーケンス内の現在の入力を受信する（５２０）。入力のシーケンスは、以前のプログラムカウンタアドレスのシーケンスおよび対応するデルタ値でもよい。各デルタ値は、それぞれの第１のメモリアクセスアドレスとそれぞれの第２のメモリアクセスアドレスとの間の差を定義する。第１のメモリアクセスアドレスは、対応するプログラムカウンタアドレスによって示される命令が実行されたときにアクセスされたメモリアドレスを定義する。たとえば、特定のプログラムカウンタアドレスは、実行されるとメモリからデータをフェッチする命令を格納するメモリアドレスを示し得る。そのような場合、当該データのメモリアドレスは、第１のメモリアクセスアドレスである。第２のメモリアクセスアドレスは、第１のメモリアドレスがアクセスされる前にアクセスされたメモリアドレスである。各々の以前のメモリアクセスアドレスは、コンピューティングシステムのメインメモリ内の複数のメモリ領域のうち１つの領域内のアドレスである。システムは、メモリアクセスがタッチするメモリページを識別することによって、メモリ領域を求めることができる。代替的に、システムは、クラスタリングアルゴリズム、たとえば、ｋ-meansクラスタリングアルゴリズムをメモリアクセスに適用することによって、メモリ領域を求めることができる。
【００５２】
いくつかの実現例では、システムは、現在の入力の入力表現を生成する。たとえば、現在の入力がプログラムカウンタアドレスおよびデルタ値である実現例では、システムは、入力表現としての機能を果たす高次元空間内の数字埋込みにプログラムカウンタアドレスおよびデルタ値をマッピング可能である。この埋込みは、高次元の実数値ベクトルである。
【００５３】
システムは、訓練されたニューラルネットワークによって生成されたルックアップテーブルを用いて、埋込みを生成可能である。たとえば、プログラムカウンタアドレスおよびデルタ値のペアはインデックスにマッピング可能であり、インデックスは、ルックアップテーブル内で埋込みを検索するために用いることが可能である。代替的に、システムは、訓練されたニューラルネットワークに直接プログラムカウンタアドレスおよびデルタ値を提供することによって、埋込みを生成可能である。
【００５４】
システムは、入力のシーケンス内の現在の入力によって定義されたメモリアクセスアドレスの特定のメモリ領域を識別する（５３０）。
【００５５】
システムは、保持されたデータ内で指定された内部状態から、特定のメモリ領域について内部状態を選択する（５４０）。
【００５６】
システムは、特定のメモリ領域について選択された内部状態に従って、再帰型ニューラルネットワークを用いて入力のシーケンス内の現在の入力を処理して、出力を生成し、選択された内部状態を更新する（５５０）。出力は、予測されたメモリアクセスアドレスの確率分布を定義する。予測されたメモリアクセスアドレスは、特定のメモリ領域内のコンピュータプログラムの将来のメモリアクセスアドレスである。
【００５７】
システムは、閾値基準を設定し、分布内の確率のいずれかが閾値基準を満たすかどうか判断することが可能である。たとえば、閾値基準は、０．５の確率であり得る、すなわち、特定のメモリアドレスが将来のメモリアクセスアドレスである、つまり、コンピュータプログラムがコンピューティングシステムにメモリアドレス内のデータにアクセスさせる可能性が５０％であり得る。システムは、動的に閾値基準を調整可能である。たとえば、システムは、メモリ帯域幅の利用率が高いときにより高い閾値を設定可能であり、メモリ帯域幅利用率が低いときにより低い閾値を設定可能である。
【００５８】
確率分布内の特定の確率が閾値基準を満たさないという判断に応じて、システムは、その確率と関連するメモリアクセスからデータをフェッチし、そのデータをローカルキャッシュに格納可能である。場合によっては、システムは、複数の確率が閾値基準を満たすと判断し、これらの確率と関連する複数のメモリアドレスからデータをプリフェッチしてもよい。そうすることによって、正しいデータがプリフェッチされる可能性が増す。このため、コンピューティングシステム上で実行されるコンピュータプログラムのランタイムが減少する。
【００５９】
システムは通常、識別されたメモリ領域内の次のメモリアクセスアドレスを予測するように構成される。しかしながら、今後さらに先のメモリアクセスアドレスを予測するように、再帰型ニューラルネットワークを訓練することが可能である。たとえば、再帰型ニューラルネットワークは、識別されたメモリ領域内の２つ先（Ｎ＋２）、４つ先（Ｎ＋４）、または８つ先（Ｎ＋８）のメモリアクセスアドレスを予測するように訓練可能である。再帰型ニューラルネットワークは、順次メモリアクセスアドレスとは異なり、たとえば、時間ステップＮにおけるメモリアクセスアドレスと時間ステップＮ−２におけるメモリアクセスアドレスとを用いて各々計算されたデルタ値を再帰型ニューラルネットワークに提供することによって、２つ先のメモリアクセスアドレスを予測するように訓練可能である。
【００６０】
いくつかの実現例では、上述のようなデータのプリフェッチの代わりに、システムは、フェッチ命令をコンピュータプログラムに挿入可能である。フェッチ命令の実行によって、データは、閾値基準を満たす確率と関連する将来のメモリアドレスからフェッチされる。フェッチ命令は、そうでなければデータがメモリからフェッチされるであろうコンピュータプログラムの将来の命令の前に、コンピュータプログラム内に挿入される必要がある。このように、将来の命令が実行されるときに、将来の命令が必要とするデータがローカルキャッシュ内に既に存在する。将来の命令の実行は、キャッシュミスではなくキャッシュヒットになり、システムは、メモリからデータをフェッチする必要がなくなる。これにより、メモリからのデータのフェッチは非常に時間がかかるため、コンピュータプログラムをより速く実行可能である。システムは、２つ以上の確率が閾値基準を満たす場合、２つ以上のフェッチ命令をコンピュータプログラムに挿入可能である。
【００６１】
実現例によっては、システムは、さらに他の特徴を再帰型ニューラルネットワークに提供する。たとえば、システムは、最も直近のアクセスがロードであったか格納であったかを表示可能である。システムはまた、再帰型ニューラルネットワークに現在のキャッシュ占有率を提供可能である。現在のキャッシュ占有率は、上述のような閾値基準に影響を及ぼし得る。
【００６２】
システムは最後に、更新された、選択された内部状態を、保持されたデータ内の特定のメモリ領域と関連付ける（５６０）。
【００６３】
本明細書において記載される主題および機能的動作の実施形態は、本明細書に開示される構造およびそれらの構造的等価物を含む、デジタル電子回路構成要素において、有形で実施されるコンピュータソフトウェアもしくはファームウェアにおいて、コンピュータハードウェアにおいて、またはそれらの１つ以上の組合せにおいて実現され得る。本明細書において記載される主題の実施形態は、１つ以上のコンピュータプログラムとして、すなわち、データ処理装置による実行のために、または、データ処理装置の動作を制御するために有形の非一時的な記憶媒体上でエンコードされたコンピュータプログラム命令の１つ以上のモジュールとして、実現され得る。コンピュータ記憶媒体は、機械可読記憶装置、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、または、それらの１つ以上の組合せであり得る。代替的に、またはさらに、プログラム命令は、データ処理装置による実行に好適な受信側装置への送信のために情報をエンコードするよう生成される、たとえばマシンにより生成された電気信号、光信号、または電磁気信号などの、人為的に生成された伝搬信号上でエンコードすることができる。
【００６４】
「データ処理装置」という用語は、データ処理ハードウェアのことを言い、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、およびマシンを包含する。装置はまた、既製のもしくは特注の並列処理サブシステム、たとえば、ＧＰＵもしくは他の種類の専用処理サブシステムでもよい、またはこれをさらに含んでもよい。装置はまた、専用論理回路構成要素、たとえば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）もしくはＡＳＩＣ（特殊用途向け集積回路）でもよい、またはこれをさらに含んでもよい。装置は任意に、ハードウェアに加えて、コンピュータプログラムの実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの１つ以上の組合せを含んでもよい。
【００６５】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプトまたはコードとも呼ばれる、または記載されることもあるコンピュータプログラムは、コンパイル型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む任意の形態のプログラミング言語で記述され得、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、もしくは、コンピューティング環境での使用に好適な他のユニットとして任意の形態で展開され得る。プログラムは、ファイルシステムにおけるファイルに対応し得るが、対応する必要があるわけではない。プログラムは、当該プログラムに専用である単一のファイルにおいて、または、複数の連携ファイル（coordinated files）（たとえばコードの１つ以上のモジュール、サブプログラムまたは部分を格納するファイル）において、他のプログラムまたはデータ（たとえばマークアップ言語ドキュメントに格納される１つ以上のスクリプト）を保持するファイルの一部に格納され得る。コンピュータプログラムは、１つの場所に位置するかもしくは複数の場所にわたって分散されデータ通信ネットワークによって相互接続される１つのコンピュータまたは複数のコンピュータ上で実行されるように展開され得る。
【００６６】
本明細書で使用する「エンジン」または「ソフトウェアエンジン」は、入力と異なる出力を提供する、ソフトウェアによって実現される入出力システムのことを言う。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット（software development kit：「ＳＤＫ」）またはオブジェクト等の機能の符号化ブロックであってもよい。各エンジンは、適切な任意の種類の計算装置上で実現することができ、この計算装置は、たとえば、サーバ、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、音楽再生機器、電子書籍リーダー、ラップトップもしくはデスクトップコンピュータ、ＰＤＡ、スマートフォン、または、１つ以上のプロセッサとコンピュータ読取可能媒体とを含むその他の静止もしくは移動デバイスである。くわえて、エンジンの２つ以上は、同一の計算装置上で実現されても、異なる計算装置上で実現されてもよい。
【００６７】
本明細書に記載のプロセスおよび論理フローは、入力データに対して作用し出力を生成することによって機能を果たすために１つ以上のコンピュータプログラムを実行する１つ以上のプログラマブルコンピュータによって実行することができる。また、プロセスおよび論理フローは、専用ロジック回路構成要素たとえばＦＰＧＡまたはＡＳＩＣによって、または、専用ロジック回路構成要素と１つ以上のプログラムされたコンピュータとの組合せによって、実行可能である。
【００６８】
コンピュータプログラムの実行に好適なコンピュータは、汎用マイクロプロセッサもしくは特殊目的マイクロプロセッサもしくはその両方または任意の種類の中央処理ユニットに基づき得る。通常、中央処理ユニットは、リードオンリメモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令を実行するための中央処理ユニットと、命令およびデータを格納するための１つ以上のメモリデバイスとである。中央処理ユニットおよびメモリは、特殊目的論理回路構成要素によって補足され得るか、または特殊目的論理回路に組込まれ得る。通常、コンピュータはさらに、たとえば磁気ディスク、光磁気ディスクまたは光ディスクといった、データを格納するための１つ以上の大容量記憶装置を含むか、当該１つ以上の大容量記憶装置からデータを受け取るかもしくは当該１つ以上の大容量記憶装置にデータを転送するよう動作可能に結合されるか、またはその両方を行う。しかしながら、コンピュータはそのような装置を有する必要はない。さらに、コンピュータはたとえば、携帯電話、携帯情
報端末（ＰＤＡ）、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム（ＧＰＳ）受信機、またはポータブル記憶装置（たとえばユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ）といった別のデバイスに埋め込まれ得る。
【００６９】
コンピュータプログラム命令およびデータを格納するのに好適なコンピュータ可読媒体は、例として、たとえばＥＰＲＯＭ、ＥＥＰＲＯＭおよびフラッシュメモリデバイスといった半導体メモリデバイスを含むすべての形態の不揮発性メモリ、媒体およびメモリデバイス；たとえば内部ハードディスクまたはリムーバブルディスクといった磁気ディスク；光磁気ディスク；ならびにＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクを含む。
【００７０】
ユーザとの対話を与えるために、本明細書に記載される主題の実施形態は、たとえばＣＲＴ（陰極線管）またはＬＣＤ（液晶ディスプレイ）モニタといったユーザに対して情報を表示するための表示デバイスと、たとえばマウス、トラックボール、または存在感知ディスプレイまたは他のサーフェスといったユーザがコンピュータに入力を与えることができるキーボードおよびポインティングデバイスとを有するコンピュータ上で実現され得る。他の種類のデバイスが、同様に、ユーザとの対話を与えるために用いられ得る；たとえば、ユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックといった任意の形態の感覚フィードバックであり得る；ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取られ得る。くわえて、コンピュータは、ユーザが使用するデバイスにドキュメントを送信しユーザが使用するデバイスからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと対話し得る。また、コンピュータは、テキストメッセージまたは他の形式のメッセージを個人用デバイス、たとえばスマートフォンなどに送信し、メッセージングアプリケーションを実行し、ユーザから応答メッセージを受信することにより、ユーザと対話できる。
【００７１】
本明細書は多くの特定の実現例の詳細を含んでいるが、これらは如何なる発明の範囲または請求され得るものの範囲に対する限定としても解釈されるべきではなく、特定の発明の特定の実施形態に特有の特徴であり得る記載として解釈されるべきである。別個の実施形態の文脈で本明細書において記載されるある特徴は、単一の実施形態において組合せでも実現され得る。反対に、単一の実施形態の文脈において記載されるさまざまな特徴は、複数の実施形態において別々に、または任意の好適な部分的組合わせでも実現され得る。さらに、特徴は、ある組合せにおいて作用すると上で記載され、最初はそのように請求されていさえする場合もあるが、請求される組合せからの１つ以上の特徴はいくつかの場合には当該組合せから削除され得、請求される組合せは、部分的組合わせまたは部分的組合わせの変形例に向けられ得る。
【００７２】
同様に、動作が図においては特定の順に示されているが、そのような動作は、望ましい結果を達成するために、示された当該特定の順もしくは連続した順で実行される必要があると理解されるべきではなく、または、すべての示された動作が実行される必要があると理解されるべきではない。ある状況においては、マルチタスキングおよび並列処理が有利であり得る。さらに、上述の実施形態におけるさまざまなシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、記載されるプログラムコンポーネントおよびシステムは通常単一のソフトウェア製品に統合され得るかまたは複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。
【００７３】
主題の特定の実施形態が記載された。他の実施形態は以下の請求の範囲内にある。たとえば、請求項において記載されるアクションは、異なる順で実行され得、それでも望ましい結果を達成し得る。一例として、添付の図において示されるプロセスは、望ましい結果を達成するために、示された特定の順または連続する順であることを必ずしも必要としない。ある場合においては、マルチタスキングおよび並列処理が有利であり得る。
【図１】
2021525404.tif 000003
【図２】
2021525404.tif 000004
【図３】
2021525404.tif 000005
【図４】
2021525404.tif 000006
【図５】
2021525404.tif 000007
【手続補正書】
【提出日】令和2年12月4日(2020.12.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
複数のメモリ領域内のコンピュータプログラムのメモリアクセスアドレスを予測するように訓練された再帰型ニューラルネットワークのために、前記複数のメモリ領域の各々について別々の内部状態を指定する内部状態データを保持することと、
前記コンピュータプログラムの以前のメモリアクセスアドレスのシーケンスを定義する入力のシーケンス内の現在の入力を受信することと、
前記入力のシーケンス内の前記現在の入力によって定義される前記メモリアクセスアドレスの特定のメモリ領域を識別することと、
保持された前記内部状態データ内で指定された内部状態から、前記特定のメモリ領域についての前記内部状態を選択することと、
前記特定のメモリ領域について選択された前記内部状態に従って、前記再帰型ニューラルネットワークを用いて前記入力のシーケンス内の前記現在の入力を処理して、
前記特定のメモリ領域内の前記コンピュータプログラムの将来のメモリアクセスアドレスである予測されたメモリアクセスアドレスの確率分布を定義する出力を生成し、
前記特定のメモリ領域の選択された前記内部状態を更新することと、
更新された、選択された前記内部状態を、保持された前記内部状態データ内の前記特定のメモリ領域と関連付けることとを備える、方法。
【請求項２】
予測された前記メモリアクセスアドレスは、前記特定のメモリ領域内の前記コンピュータプログラムの次のメモリアクセスアドレスである、請求項１に記載の方法。
【請求項３】
前記入力のシーケンスは、前記コンピュータプログラムの以前のプログラムカウンタアドレスのシーケンスおよび対応するデルタ値を含み、各デルタ値は、それぞれの第１のメモリアクセスアドレスとそれぞれの第２のメモリアクセスアドレスとの差を定義し、前記第１のメモリアクセスアドレスは、対応する前記プログラムカウンタアドレスによって示される命令が実行されたときにアクセスされたアドレスであり、前記第２のメモリアクセスアドレスは、前記第１のメモリアクセスアドレスがアクセスされる前にアクセスされたアドレスである、請求項１または２に記載の方法。
【請求項４】
前記第１のメモリアクセスアドレスおよび前記第２のメモリアクセスアドレスは、前記複数のメモリ領域の同じメモリ領域内にある、請求項３に記載の方法。
【請求項５】
予測された前記メモリアクセスアドレスと関連付けられたメモリアクセスはリードアクセスである、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記確率分布内の１つ以上の確率が閾値基準を満たすと判断することと、
それに応じて、前記閾値基準を満たす前記１つ以上の確率と関連付けられた、予測された前記１つ以上のメモリアクセスアドレスからデータをフェッチすることと、
前記データをローカルキャッシュに格納することとをさらに備える、請求項５に記載の方法。
【請求項７】
前記確率分布内の１つ以上の確率が閾値基準を満たすと判断することと、
１つ以上のプリフェッチ命令を前記コンピュータプログラムに自動的に挿入することとをさらに備え、前記１つ以上のプリフェッチ命令の実行によって、前記閾値基準を満たす前記１つ以上の確率と関連付けられた、予測された前記１つ以上のメモリアクセスアドレスからデータがフェッチされ、前記１つ以上のプリフェッチ命令は、予測された前記メモリアクセスを生じる命令の前に前記コンピュータプログラムに挿入される、請求項５に記載の方法。
【請求項８】
回路であって、
再帰型ニューラルネットワークの動作を行うように構成された再帰型ニューラルネットワークセル（ＲＮＮセル）と、
複数の状態レジスタとを備え、各状態レジスタは、ｉ）前記再帰型ニューラルネットワークのために内部状態データを格納するように構成され、ｉｉ）前記再帰型ニューラルネットワークが行うように訓練された複数のタスクのそれぞれのタスクに対応し、前記回路はさらに、
回路構成要素を備え、前記回路構成要素は、
入力のシーケンス内の現在の入力とシーケンス識別データとを受信することと、
前記シーケンス識別データに基づいて前記複数のタスクのうち１つのタスクを識別することと、
識別された前記タスクに対応する前記状態レジスタから内部状態データを取得することと、
取得した前記内部状態データと前記現在の入力とを前記ＲＮＮセルに提供して、前記ＲＮＮセルに、取得した前記内部状態データと前記現在の入力とを処理して、ニューラルネットワーク出力と識別された前記タスクについて更新された内部状態データとを生成させることと、
前記ニューラルネットワーク出力と識別された前記タスクについて更新された前記内部状態データとを、前記ＲＮＮセルから受信することと、
更新された前記内部状態データを、識別された前記タスクに対応する前記状態レジスタに書込むこととを含む動作を行うように構成された、回路。
【請求項９】
前記シーケンス識別データは、前記現在の入力のプロパティに基づく、請求項８に記載の回路。
【請求項１０】
前記シーケンス識別データは、ユーザ入力に基づく、請求項８に記載の回路。
【請求項１１】
それぞれの前記タスクは、前記ＲＮＮセルがメモリアクセスアドレスを予測することを含む、請求項８に記載の回路。
【請求項１２】
前記ＲＮＮセルは、前記再帰型ニューラルネットワークの固定重みのセットを保持するように構成される、請求項８〜１１のいずれか１項に記載の回路。
【請求項１３】
前記回路構成要素はマルチプレクサを含み、前記マルチプレクサは、
前記シーケンス識別データに基づいて、識別された前記タスクに対応する前記状態レジスタを選択し、
取得した前記内部状態データを前記ＲＮＮセルに提供するように構成される、請求項８〜１２のいずれか１項に記載の回路。
【請求項１４】
１つ以上のコンピュータと、１つ以上のコンピュータによって実行されると前記１つ以上のコンピュータに請求項１〜７のいずれか１項に記載の前記方法を行わせる命令を格納する１つ以上の記憶デバイスとを備える、システム。
【請求項１５】
１つ以上のコンピュータによって実行されると前記１つ以上のコンピュータに請求項１〜７のいずれか１項に記載の前記方法を行わせる命令を含む、プログラム。
【国際調査報告】
2021525404.tif 000008
2021525404.tif 000009
2021525404.tif 000010