【手続補正書】
【提出日】令和1年11月21日(2019.11.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
実行可能なデータを格納するメモリデバイスを提供することと、
前記メモリデバイスに結合され、前記実行可能なデータを抽出及び実行するように動作可能な処理デバイスを提供することと、
前記処理デバイスによって、バッファ初期化命令をアプリケーションから受信することと、
前記バッファ初期化命令に応じて、
前記処理デバイスによって、バッファとして前記メモリデバイスの一部分を割り当てること、
前記処理デバイスによって、前記メモリデバイスの前記一部分を参照するためにハードウェアバッファコントローラのある状態を引き起こすこと、及び
前記処理デバイスによって、前記ハードウェアバッファへの参照をアプリケーションへ返すことと、
前記処理デバイスによって、前記アプリケーションを実行することであって、前記アプリケーションから前記バッファにアクセスするためのリクエストを実行することを含み、前記リクエストが、前記ハードウェアバッファへの前記参照のみにアドレス指定され、前記メモリデバイスの前記一部分内の何れのアドレスも含まない、前記アプリケーションを実行することと、
前記リクエストに応じて、前記処理デバイスによって前記リクエストを前記ハードウェアバッファコントローラに入力することと、
前記ハードウェアバッファコントローラによって、前記リクエストを処理することであって、前記リクエストを処理することが前記リクエスト毎に、
前記ハードウェアバッファコントローラの前記状態に基づいて前記メモリデバイスの前記一部分内のアドレスを生成すること、
前記アドレスを含むメモリアクセス命令を前記メモリデバイスへ出力すること、及び
前記ハードウェアバッファコントローラの前記状態を更新すること
により行われる、前記リクエストを処理することと
を含む、方法。
【請求項２】
前記ハードウェアバッファコントローラは先入れ先出し（ＦＩＦＯ）バッファを実施し
、
前記ハードウェアバッファコントローラの前記状態は読み出しポインタ及び書き込みポインタを含み、
前記ハードウェアバッファコントローラの前記状態を更新することは、前記リクエストの内の書き込みリクエスト毎に前記書き込みポインタをインクリメントすることを含み、
前記ハードウェアバッファコントローラの前記状態を更新することは、前記リクエストの内の読み出しリクエスト毎に前記読み出しポインタをインクリメントすることを含む、請求項１に記載の方法。
【請求項３】
前記書き込みポインタをインクリメントすることは、１クロック周期中に受信された複数の書き込みリクエストの数を特定することと、前記複数の書き込みリクエストの前記数だけ前記書き込みポインタをインクリメントすることとを含み、
前記読み出しポインタをインクリメントすることは、前記クロック周期中に受信された複数の読み出しリクエストの数を特定することと、前記複数の読み出しリクエストの前記数だけ前記読み出しポインタをインクリメントすることとを含む、
請求項２に記載の方法。
【請求項４】
前記ハードウェアバッファコントローラの前記状態に基づいて前記バッファ内の前記アドレスを生成することは、前記リクエストの内の書き込みリクエスト毎に前記書き込みポインタの現在値を出力することを含み、
前記ハードウェアバッファコントローラの前記状態に基づいて前記バッファ内の前記アドレスを生成することは、前記リクエストの内の読み出しリクエスト毎に前記読み出しポインタの現在値を出力することを含む、
請求項２に記載の方法。
【請求項５】
前記処理デバイスによって、前記書き込みリクエストの量と前記読み出しリクエストの量との差を計算することと、
前記処理デバイスによって、前記差が第１の閾値よりも少なくゼロではないと判定することと、
前記差が第１の閾値よりも少なくゼロではないと判定することに応じて、前記処理デバイスによって、前記バッファがほぼ空であることを示すイベントを出力することと、
前記バッファがほぼ空であることを示す前記イベントに応じて、前記処理デバイスによって、前記処理デバイスによって実行される１つ以上の実行スレッドが読み出しリクエストを生成することをブロックすることと
を更に含む、請求項４に記載の方法。
【請求項６】
前記ハードウェアバッファコントローラによって、前記書き込みリクエストの量と前記読み出しリクエストの量との差を計算することと、
前記ハードウェアバッファコントローラによって、前記差が第１の閾値よりも大きいと判定することと、
前記差が第１の閾値よりも大きいと判定することに応じて、前記ハードウェアバッファコントローラによって、前記バッファがほぼ満杯であることを示すイベントを出力することと、
前記バッファがほぼ満杯であることを示す前記イベントに応じて、前記処理デバイスによって、前記処理デバイスによって実行される１つ以上の実行スレッドが書き込みリクエストを生成することをブロックすることと
を更に含む、請求項４に記載の方法。
【請求項７】
前記ハードウェアバッファコントローラによって前記リクエストを処理することは、
前記リクエストの内の複数の書き込みリクエストを集計することと、
前記複数の書き込みリクエストに対応する前記バッファ内の複数のアドレスを含む集計書き込み命令を前記メモリデバイスへ送信することと、
前記リクエストの内の複数の読み出しリクエストを集計することと、
前記複数の読み出しリクエストに対応する前記バッファ内の複数のアドレスを含む集計読み出し命令を前記メモリデバイスへ送信することと
を更に含み、
前記複数の書き込みリクエストは、前記リクエストの内のその他のリクエストが前記ハードウェアバッファコントローラに入力されるよりも前に、前記書き込みリクエストの内の少なくとも１つの書き込みリクエストが受信されるような重複方式で、複数の実行スレッドによって発行される、
請求項１に記載の方法。
【請求項８】
前記処理デバイスによって、前記ハードウェアバッファコントローラの前記状態を評価することと、
前記処理デバイスによって、前記ハードウェアバッファコントローラの前記状態が閾条件を満たすと判定することと、
前記ハードウェアバッファコントローラの前記状態が前記閾条件を満たすと判定することに応じて、前記処理デバイスによって、前記ハードウェアバッファコントローラを参照する更なるリクエストを前記複数の実行スレッドが発行することをブロックすることと
を更に含む、請求項７に記載の方法。
【請求項９】
実行可能なデータを格納するためのメモリデバイスと、
処理デバイスと、
前記処理デバイスに動作可能に結合されたハードウェアバッファコントローラと
を含み、
前記処理デバイスは、前記メモリデバイスに結合され、前記実行可能なデータを抽出及び実行するように動作可能であり、前記処理デバイスは、バッファリクエストをアプリケーションから受信すること、並びに、前記バッファリクエストに応じて、
前記メモリデバイスの一部分を前記バッファリクエストに割り当てること、
前記メモリデバイスの前記一部分を参照するために前記ハードウェアバッファコントローラのある状態を引き起こすこと、及び
前記ハードウェアバッファへの参照を前記アプリケーションへ返すこと
をするようにプログラムされ、
前記ハードウェアバッファコントローラは、前記処理デバイス及び前記メモリデバイスに結合され、前記ハードウェアバッファコントローラは、
前記メモリデバイス内の何れの格納位置に対する何れのアドレスも含まず、前記ハードウェアバッファのみにアドレス指定されたメモリアクセスリクエストを前記処理デバイスにより実行される前記アプリケーションから受信すること、
前記ハードウェアバッファコントローラの状態に基づいて、前記メモリデバイスの前記一部分内の生成アドレスを生成すること、
前記生成アドレスを含むメモリアクセス命令を前記メモリデバイスへ出力すること、
前記ハードウェアバッファコントローラの前記状態を更新すること
をするようにプログラムされる、
システム。
【請求項１０】
前記ハードウェアバッファコントローラの前記状態は先入れ先出し（ＦＩＦＯ）バッファを実施し、
前記ハードウェアバッファコントローラは、前記リクエストの内の書き込みリクエスト毎に書き込みポインタをインクリメントすることによって、前記ハードウェアバッファコントローラの前記状態を更新するように更にプログラムされ、
前記ハードウェアバッファコントローラの前記状態を更新することは、前記リクエストの内の読み出しリクエスト毎に読み出しポインタをインクリメントすることを含み、
前記ハードウェアバッファコントローラは、１クロック周期中に受信された複数の書き込みリクエストの数を特定することと、前記複数の書き込みリクエストの前記数だけ前記書き込みポインタをインクリメントすることとによって、前記書き込みポインタをインクリメントするように更にプログラムされ、
前記ハードウェアバッファコントローラは、前記クロック周期中に受信された複数の読み出しリクエストの数を特定することと、前記複数の読み出しリクエストの前記数だけ前記読み出しポインタをインクリメントすることとによって、前記読み出しポインタをインクリメントするように更にプログラムされる、
請求項９に記載のシステム。
【請求項１１】
前記ハードウェアバッファコントローラは、前記リクエストの内の書き込みリクエスト毎に前記書き込みポインタの現在値を出力することによって、前記ハードウェアバッファコントローラの前記状態に基づいて、前記バッファに割り当てられた前記メモリデバイスの前記領域内の前記生成アドレスを生成するように更にプログラムされ、
前記ハードウェアバッファコントローラは、前記リクエストの内の読み出しリクエスト毎に前記読み出しポインタの現在値を出力することによって、前記ハードウェアバッファコントローラの前記状態に基づいて、前記バッファに割り当てられた前記メモリデバイスの前記領域内の前記生成アドレスを生成するように更にプログラムされる、
請求項１０に記載のシステム。
【請求項１２】
前記ハードウェアバッファコントローラは、
前記書き込みリクエストの量と前記読み出しリクエストの量との差を計算すること、及び
前記差が第１の閾値よりも少なくゼロではない場合に、前記バッファがほぼ空であることを示すイベントを出力すること
をするように更にプログラムされ、
前記処理デバイスは、前記バッファがほぼ空であることを示す前記イベントに応じて、前記処理デバイスによって実行される１つ以上の実行スレッドが読み出しリクエストを生成することをブロックするように更にプログラムされる、
請求項１１に記載のシステム。
【請求項１３】
前記ハードウェアバッファコントローラは、
前記書き込みリクエストの量と前記読み出しリクエストの量との差を計算すること、及び
前記差が第２の閾値よりも大きい場合に、前記処理デバイスによって、前記バッファがほぼ満杯であることを示すイベントを出力すること
をするように更にプログラムされ、
前記処理デバイスは、前記バッファがほぼ満杯であることを示す前記イベントに応じて、前記処理デバイスによって実行される１つ以上の実行スレッドが書き込みリクエストを生成することをブロックするように更にプログラムされる、
請求項１２に記載のシステム。
【請求項１４】
前記ハードウェアソフトウェアバッファコントローラは、
前記リクエストの内の複数の書き込みリクエストを集計することと、
前記複数の書き込みリクエストに対応する前記バッファ内の複数のアドレスを含む集計書き込み命令を前記メモリデバイスへ送信することと、
前記リクエストの内の複数の読み出しリクエストを集計することと、
前記複数の読み出しリクエストに対応する前記バッファ内の複数のアドレスを含む集計
読み出し命令を前記メモリデバイスへ送信することと
によって前記リクエストを処理するように更にプログラムされる、請求項９に記載のシステム。
【請求項１５】
前記ハードウェアソフトウェア構成要素は、前記リクエストの内のその他のリクエストが前記ハードウェアバッファコントローラに入力されるよりも前に、前記書き込みリクエストの内の少なくとも１つの書き込みリクエストが受信されるような重複方式で、前記処理デバイスによって実行される複数の実行スレッドから前記複数の書き込みリクエストを受信するようにプログラムされ、前記ハードウェアバッファコントローラは、
前記ハードウェアバッファコントローラの前記状態を評価すること、及び
前記ハードウェアバッファコントローラの前記状態が閾条件を満たす場合に、前記ハードウェアバッファコントローラを参照する更なるリクエストを前記複数の実行スレッドが発行することを、前記処理デバイスによってブロックすることを引き起こすこと
をするように更にプログラムされる、請求項１４に記載のシステム。