(57)【要約】      （修正有）【課題】クラウドコンピューティング分野ににおいて、アクセスリクエストを管理する方法を提供する。【解決手段】コンピューティングシステムのユーザモードで実施される記憶装置のドライバにおいて実施される方法であって、コンピューティングシステム内記憶装置における１組のアドレスに対するアクセス操作を示す１組のアクセスリクエストを取得するステップと、１組のアドレスのアドレス範囲に基づいて、１組のアドレスをソートするステップと、ソートされた１組のアクセスリクエストにおける、連続するアドレスに基づいて、マージリクエストを生成するステップと、マージリクエストに基づいて、記憶装置に対してデータアクセス操作を実行するステップと、を含む。【効果】コンピューティングシステムにおける記憶装置へのアクセスをより効果的に管理することができ、コンピューティングシステムの性能を向上させることができる。【選択図】図３
2020194524.tif 000002
【特許請求の範囲】
【請求項１】
アクセスリクエストを管理するための方法であって、
コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、前記記憶装置における１組のアドレスに対するアクセス操作をそれぞれ示す１組のアクセスリクエストを取得するステップと、
前記１組のアドレスのそれぞれの、前記記憶装置におけるアドレス範囲に基づいて、前記１組のアドレスをソートするステップと、
ソートされた前記１組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するステップと、
前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップと、を含み、
前記方法は前記記憶装置のドライバにおいて実施され、前記ドライバは前記コンピューティングシステムのユーザモードにおいて実施される、アクセスリクエストを管理するための方法。
【請求項２】
ソートされた前記１組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するステップは、
前記少なくとも一部のアクセスリクエストが同一のアクセスタイプを有すると判定されたことに応じて、前記マージリクエストを生成することを含み、ここで、前記アクセスタイプは、読み出しタイプと書き込みタイプを含む、請求項１に記載の方法。
【請求項３】
ソートされた前記１組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するステップは、
前記少なくとも一部のアクセスリクエストにおいて、連続するアドレスを有する第１のアクセスリクエストと第２のアクセスリクエストを確定することと、
前記第１のアクセスリクエストのアドレスの開始アドレスと、前記第２のアクセスリクエストのアドレスの終了アドレスとに基づいて、前記マージリクエストのマージアドレスを確定することと、を含む、請求項１に記載の方法。
【請求項４】
前記マージリクエストの前記マージアドレスの範囲が所定の閾値を超えていないと判定されたことに応じて、前記マージリクエストを生成するステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップは、
前記１組のアクセスリクエストのアクセスタイプが読み出しタイプであると判定されたことに応じて、前記記憶装置における前記マージアドレスからデータを読み出すことと、
前記第１のアクセスリクエストの前記アドレスと前記第２のアクセスリクエストの前記アドレスとに基づいて、読み出された前記データから、前記第１のアクセスリクエストに関連する第１のデータと前記第２のアクセスリクエストに関連する第２のデータをそれぞれ確定することと、
それぞれ前記第１のデータを前記第１のアクセスリクエストにリターンし、前記第２のデータを前記第２のアクセスリクエストにリターンすることと、を含む、請求項３に記載の方法。
【請求項６】
前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップは、
前記１組のアクセスリクエストのアクセスタイプが書き込みタイプであると判定されたことに応じて、前記第１のアクセスリクエストにおける第１のデータと前記第２のアクセスリクエストにおける第２のデータに基づいて、マージデータを生成することと、
前記マージデータが前記記憶装置における前記マージアドレスに書き込まれたことに応じて、前記第１のアクセスリクエストと前記第２のアクセスリクエストに第１の応答と第２の応答をそれぞれリターンすることと、を含む、請求項３に記載の方法。
【請求項７】
前記１組のアクセスリクエストのうち、前記少なくとも一部のアクセスリクエストを除くその他のアクセスリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップをさらに含む、請求項１に記載の方法。
【請求項８】
コンピューティングシステム内の記憶装置に対してデータアクセスを行うための１組のアクセスリクエストを取得するステップは、
前記記憶装置へアクセスするためのアクセスリクエストが記憶されている循環連結リストから前記１組のアクセスリクエストを取得することを含む、請求項１に記載の方法。
【請求項９】
所定時間間隔内で、前記循環連結リストから、閾値数よりも高くない数の前記１組のアクセスリクエストを選択するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
前記１組のアクセスリクエストが処理されたことを示すように、前記循環連結リストのポインタを修正するステップをさらに含む、請求項８に記載の方法。
【請求項１１】
アクセスリクエストを管理するための装置であって、
コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、前記記憶装置における１組のアドレスに対するアクセス操作をそれぞれ示す１組のアクセスリクエストを取得するように構成された取得モジュールと、
前記１組のアドレスのそれぞれの、前記記憶装置におけるアドレス範囲に基づいて、前記１組のアドレスをソートするように構成されたソートモジュールと、
ソートされた前記１組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するように構成された生成モジュールと、
前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するように構成された実行モジュールと、を含み、
前記装置は、前記記憶装置のドライバにおいて実施され、前記ドライバは前記コンピューティングシステムのユーザモードにおいて実施される、アクセスリクエストを管理するための装置。
【請求項１２】
前記ソートモジュールは、
前記少なくとも一部のアクセスリクエストが同一のアクセスタイプを有すると判定されたことに応じて、前記マージリクエストを生成するように構成されたマージモジュールを含み、ここで、前記アクセスタイプは、読み出しタイプと書き込みタイプを含む、請求項１１に記載の装置。
【請求項１３】
前記ソートモジュールは、
前記少なくとも一部のアクセスリクエストにおいて、連続するアドレスを有する第１のアクセスリクエストと第２のアクセスリクエストを確定するように構成されたリクエスト確定モジュールと、
前記第１のアクセスリクエストのアドレスの開始アドレスと、前記第２のアクセスリクエストのアドレスの終了アドレスとに基づいて、前記マージリクエストのマージアドレスを確定するように構成されたアドレス確定モジュールと、を含む、請求項１１に記載の装置。
【請求項１４】
前記マージリクエストの前記マージアドレスの範囲が所定の閾値を超えていないと判定されたことに応じて、前記マージリクエストを生成するように構成された閾値モジュールをさらに含む、請求項１３に記載の装置。
【請求項１５】
前記実行モジュールは、
前記１組のアクセスリクエストのアクセスタイプが読み出しタイプであると判定されたことに応じて、前記記憶装置における前記マージアドレスからデータを読み出すように構成されたデータ読み出しモジュールと、
前記第１のアクセスリクエストの前記アドレスと前記第２のアクセスリクエストの前記アドレスとに基づいて、読み出した前記データから、前記第１のアクセスリクエストに関連する第１のデータと前記第２のアクセスリクエストに関連する第２のデータをそれぞれ確定するように構成されたデータ確定モジュールと、
それぞれ前記第１のデータを前記第１のアクセスリクエストにリターンし、前記第２のデータを前記第２のアクセスリクエストにリターンするように構成されたデータリターンモジュールと、を含む、請求項１３に記載の装置。
【請求項１６】
前記実行モジュールは、
前記１組のアクセスリクエストのアクセスタイプが書き込みタイプであることに応じて、前記第１のアクセスリクエストにおける第１のデータと前記第２のアクセスリクエストにおける第２のデータに基づいて、マージデータを生成するように構成されたデータマージモジュールと、
前記マージデータが前記記憶装置における前記マージアドレスに書き込まれたことに応じて、前記第１のアクセスリクエストと前記第２のアクセスリクエストに第１の応答と第２の応答をそれぞれリターンするように構成された書き込み応答モジュールと、を含む、請求項１３に記載の装置。
【請求項１７】
前記１組のアクセスリクエストのうち、前記少なくとも一部のアクセスリクエストを除くその他のアクセスリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するように構成されたリクエスト実行モジュールをさらに含む、請求項１１に記載の装置。
【請求項１８】
前記取得モジュールは、
前記記憶装置へアクセスするためのアクセスリクエストが記憶されている循環連結リストから前記１組のアクセスリクエストを取得するように構成されたリクエスト取得モジュールを含む、請求項１１に記載の装置。
【請求項１９】
所定時間間隔内で、前記循環連結リストから、閾値数よりも高くない数の前記１組のアクセスリクエストを選択するように構成されたリクエスト選択モジュールをさらに含む、請求項１８に記載の装置。
【請求項２０】
前記１組のアクセスリクエストが処理されたことを示すように、前記循環連結リストのポインタを修正するように構成された修正モジュールをさらに含む、請求項１８に記載の装置。
【請求項２１】
１つまたは複数のプロセッサと、
１つまたは複数のプログラムを格納するための記憶装置であって、前記１つまたは複数のプログラムが前記１つまたは複数のプロセッサによって実行されると、前記１つまたは複数のプロセッサに請求項１〜１０のいずれか１項に記載の方法を実施させる記憶装置と、
を備えるアクセスリクエストを管理するための装置。
【請求項２２】
コンピュータプログラムが格納されているコンピュータ可読媒体であって、
前記プログラムがプロセッサによって実行されると、請求項１〜１０のいずれか１項に記載の方法を実施するコンピュータ可読媒体。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
本開示の実施形態は、主に記憶装置の管理に関するものであり、より具体的には、記憶装置へのアクセスリクエストを管理するための方法、装置、デバイス、およびコンピュータ記憶媒体に関する。
【背景技術】
【０００２】
コンピュータ技術の発展に伴い、現在、より高いハードウェアアクセス速度を持つ高速記憶装置が登場している。ハードウェアの高速化に伴い、記憶装置のドライバは、高速記憶装置の潜在力を最大限に利用するように変更することが求められている。如何にして高速記憶装置へのアクセスをより効果的に管理するかは、技術的難題となっている。
【発明の概要】
【０００３】
本開示の例示的な実施形態によって、アクセスリクエストを管理するための方法が提供されている。
【０００４】
本開示の第１態様において、アクセスリクエストを管理するための方法を提供する。該方法は、コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、記憶装置における１組のアドレスに対するアクセス操作をそれぞれ示す１組のアクセスリクエストを取得するステップと、記憶装置における１組のアドレスのそれぞれのアドレス範囲に基づいて、１組のアドレスをソートするステップと、ソートされた１組のアクセスリクエストにおける、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するステップと、マージリクエストに基づいて、記憶装置に対してデータアクセス操作を実行するステップと、を含み、該方法は記憶装置のドライバにおいて実施され、ドライバは前記コンピューティングシステムのユーザモードにおいて実施される、アクセスリクエストを管理するための方法。
【０００５】
本開示の第２態様において、アクセスリクエストを管理するための装置を提供する。該装置は、コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、記憶装置における１組のアドレスに対するアクセス操作をそれぞれ示す１組のアクセスリクエストを取得するように構成された取得モジュールと、記憶装置における前記１組のアドレスのそれぞれのアドレス範囲に基づいて、１組のアドレスをソートするように構成されたソートモジュールと、ソートされた１組のアクセスリクエストにおける、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するように構成された生成モジュールと、マージリクエストに基づいて、記憶装置に対してデータアクセス操作を実行するように構成された実行モジュールと、を含み、該装置は、記憶装置のドライバにおいて実施され、ドライバはコンピューティングシステムのユーザモードにおいて実施される。
【０００６】
本開示の第３態様において、１つまたは複数のプロセッサと、１つまたは複数のプログラムを格納するための記憶装置と、を含む、アクセスリクエストを管理するための装置であって、１つまたは複数のプログラムは、１つまたは複数のプロセッサによって実行されると、１つまたは複数のプロセッサに第１態様に記載の方法を実施させるアクセスリクエストを管理するための装置を提供する。
【０００７】
本開示の第４態様において、コンピュータプログラムが格納されているコンピュータ可読媒体であって、プログラムは、プロセッサによって実行されると、第１態様に記載の方法を実施するコンピュータ可読媒体を提供する。
【０００８】
発明の概要の部分に記載された内容は、本開示の実施形態のかなめとなる特徴または重要な特徴を限定するためのものでもなく、本開示の範囲を制限するためのものでもないことを理解されたい。本開示の他の特徴は、以下の説明により容易に理解できるようになる。
【図面の簡単な説明】
【０００９】
本出願の上記実施形態および他の特徴、目的および利点は、添付図面を参照して下記の詳細な説明から、より明らかになるであろう。添付図面においては、同一または類似する符号は、同一または類似する要素を示す。
【図１】図１は、コンピューティングシステム内の記憶装置にアクセスするための例示的なプロセスを概略的に示すブロック図である。
【図２】図２は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための技術的解決手段を概略的に示すブロック図である。
【図３】図３は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための方法を概略的に示すフローチャートである。
【図４】図４は、本開示の例示的な実施形態に係る、１組のアクセスリクエストをソートし、ソートされた１組のアクセスリクエストに基づいてマージリクエストを生成するためのプロセスを概略的に示すブロック図である。
【図５Ａ】図５Ａは、本開示の例示的な実施形態に係る、２つの読み出しリクエストに基づいてマージリクエストを生成するプロセスを概略的に示すブロック図である。
【図５Ｂ】図５Ｂは、本開示の例示的な実施形態に係る、２つの書き込みリクエストに基づいてマージリクエストを生成するプロセスを概略的に示すブロック図である。
【図６Ａ】図６Ａは、本開示の例示的な実施形態に係る、読み出したデータを分割するためのプロセスを概略的に示すブロック図である。
【図６Ｂ】図６Ｂは、本開示の例示的な実施形態に係る、記憶装置へデータを書き込み、および２つの書き込みリクエストそれぞれに応答をリターンするプロセスを概略的に示すブロック図である。
【図７】図７は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための装置を概略的に示すブロック図である。
【図８】図８は、本開示の複数の実施形態を実施可能なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、本開示の実施形態について図面を参照しながらより詳しく説明する。本開示のいくつかの実施形態は図面に示されているが、本開示は様々な形態で実施され得ることを理解されたい。つまり、本開示の内容はここで説明された実施形態に限定されない。これらの実施形態は、本開示の内容をより詳細かつ完全に理解するために提供されたものである。本開示の図面および実施形態は、例示的な役割のみに使用されるものであって、本開示の保護範囲を制限するためのものではないことを理解されたい。
【００１１】
本開示の実施形態の説明では、用語「…を含む」およびそれに類似する用語は、「…を含むがそれらに限定されない」という非限定の表現として理解されるべきである。用語「…に基づいて」は、「少なくとも部分的に…に基づいて」と理解されるべきである。用語「１つの実施形態」または「該実施形態」は、「少なくとも１つの実施形態」と理解されるべきである。用語「第１」「第２」などは、異なるまたは同じ対象を指すことができる。以下では、他の明確か暗黙的な定義がさらに含まれ得る。
【００１２】
以下では、まず、図１を参照しながら、本開示の適用環境について説明する。図１は、コンピューティングシステム１１０内の記憶装置１２０にアクセスするための例示的なプロセスのブロック図１００を概略的に示している。図１に示されるように、コンピューティングシステム１１０は、１つまたは複数の記憶装置１２０を含むことができ、コンピューティングシステム１１０内で動作する(または、該コンピューティングシステム１１０にリモートアクセスする)１つまたは複数のアプリケーション１３０は、記憶装置１２０におけるデータにアクセスするために１組のアクセスリクエスト１４０を配信することができる。
【００１３】
記憶装置のハードウェア技術の発展に伴い、高速記憶装置が開発されており、データセンターに占める高速記憶装置の割合が高くなる一方である。従来の低速記憶装置と比較して、高速記憶装置は、データアクセス速度が非常に高く、アクセス遅延が比較的に低い。例えば、ＮＶＭｅ ＳＳＤは、従来のＳＡＳやＳＡＴＡ温氏ディスクより千倍も速く、初期のＳＡＴＡ ＳＳＤよりも５倍から１０倍も速くなっている。したがって、高速記憶装置の優位性をより多く発揮するために、ハードウェア技術の発展に伴って記憶装置のドライバを改善することが期待されている。
【００１４】
カーネルモードで実施される従来のドライバの機能と効率は、高速デバイスの優位性を発揮しにくい。記憶装置１２０の応答効率を向上させるために、記憶装置１２０のドライバをカーネルモードからユーザモードに遷移させる技術的解決手段が提案されている。このようにして、カーネルコンテキストの切り替えを回避することができる。これにより、中央処理ユニット(ＣＰＵ)の負担が低減され、ＣＰＵがより多くの命令サイクルを実際のデータ格納処理の作業に使用することができる。
【００１５】
ユーザモードで記憶装置１２０にアクセスする動作を実行する際に、記憶装置１２０に対するアクセスリクエストをポーリングモードで処理し、アクセスリクエストを迅速に配信することにより、待ち時間を短縮し、遅延を削減することができる。しかし、この方式では、個々のアクセスリクエストを単独で処理するため、複数のアクセスリクエストを全体的に考慮して最適化することはできない。ユーザモードで記憶装置１２０にアクセスする動作を実行することは、一部のデータの読み書き動作の性能を向上させることができるが、その他のタイプのデータの読み書き動作に有益な効果を与えられないばかりではなく、データアクセス性能を低下させてしまう恐れさえある。したがって、アクセスリクエストをより効率的に管理することが望ましい。
【００１６】
上記の技術的解決手段の欠陥を少なくとも部分的に克服するために、本開示の例示的な実施によって、ユーザモードで実施される、アクセスリクエストを管理するための方法が提供される。該方法では、受信した１組のアクセスリクエストのアクセスパターンを考慮する。１組のアクセスリクエスト内の複数のアクセスリクエストがアクセスした記憶装置１２０におけるアドレス空間が連続アドレス空間である場合、該複数のアクセスリクエストをマージする。次に、マージされたアクセスリクエストに基づいて、記憶装置１２０に対してデータアクセス操作を実行することができる。上記の方法は、記憶装置１２０のドライバにおいて実施されることができ、本開示の各実施形態は、コンピューティングシステム１１０のカーネルモードによる介入がない前提で、コンピューティングシステム１１０のユーザモードで実施されることができることは、言うまでもない。
【００１７】
本開示の例示的な実施形態によれば、ドライバがコンピューティングシステム１１０のユーザモードで動作することは、ドライバがカーネルモードに係らないことを意味する。これにより、カーネルのコンテキストの切り替えや割り込みを回避し、ＣＰＵ処理のオーバヘッドを大幅に節約し、ＣＰＵのより多くのクロックサイクルに実際のデータ記憶を実行させることができる。
【００１８】
コンピューティングシステム１１０のオペレーティングシステムは、通常、カーネルと複数のサーバに分割されることができる。ここで、マイクロカーネルは、主に(１)プロセス(スレッド)管理(プロセスやスレッドのスケジューリング)、(２)低レベルメモリ管理(ユーザプログラム論理空間からメモリ空間への物理アドレスの変換)、並びに(３)割り込みおよびトラップ管理(割り込みおよびトラップ)に用いられる。マイクロカーネル構造が存在するため、ドライバはカーネルモードまたはユーザモードで動作することができる。カーネルモードとユーザモードは、オペレーティングシステムの２種のオペレーティングレベルである。
【００１９】
１つのタスク(プロセス)がシステムコールを実行してカーネルコードにトラップされて実行される場合、これはプロセスのカーネル実行モード(または、「カーネルモード」)と呼ばれ、プロセスの他の実行方式はユーザモードに属する。通常、ユーザプログラムはユーザモード、オペレーティングシステムはカーネルモードで動作する。ユーザモードとカーネルモードとの間で変換を行うことができる。例えば、システムコール、例外および周辺機器の割り込みによって行うことができる。ユーザモードとカーネルモードとの切替えは、余分な時間のオーバヘッドとコンピューティングリソースのオーバヘッドを招くことがある。
【００２０】
本開示の例示的な実施形態を用いると、カーネルモードの介入を必要とせずに、完全にユーザモードでアクセスリクエストを管理するプロセスを実行することができる。このようにして、ユーザモードとカーネルモードとの間での切り替えを回避し、コンピューティングシステム１１０全体の性能を向上させることができる。さらに、本開示の例示的な実施形態により、上記の方法をユーザモードで実施することで、比較的にばらつきのあるアクセスリクエストをより広い空間的なアクセスリクエストにマージすることができる。このようにして、ばらつきのあるアクセスリクエストのそれぞれを処理するために生じるワークロードを低減することができる。さらに、上記の方法はユーザモードで実施され、カーネルモードの介入を必要としないため、ＣＰＵのワークロードが低減され、ＣＰＵはより多くの命令サイクルをその他のタスクに使用することができる。
【００２１】
以下、図２を参照しながら、本開示の例示的な実施形態についてより詳しく説明する。図２は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための技術的解決手段のブロック図２００を概略的に示している。図２に示されるように、１組のアクセスリクエスト１４０は、受信した記憶装置１２０へのアクセスのための各アクセスリクエストを含むことができる。例えば、アクセスリクエストリスト１４０は、アクセスリクエスト２１０、２１２、２１４、２１６などを含むことができる。本開示の例示的な実施形態によれば、記憶装置１２０に対するドライバ２３０においてマージプロセスを実施することができる。図２に示されるように、例えば、連続アドレス空間へのアクセスリクエスト２１４と２１６をマージして、新たなマージリクエスト２２０を形成することができる。
【００２２】
なお、１組のアクセスリクエスト１４０は、複数のアクセスリクエストを含むことができ、連続アドレス空間に係らないアクセスリクエスト２１０、…、および２１２は、従来のように処理することができることは、言うまでもない。例えば、それぞれアクセスリクエスト２１０、…、および２１２における各アクセスリクエストに基づいて、記憶装置１２０にアクセスすることができる。例えば、アクセスリクエスト２１０、…、および２１２は読み出しタイプのアクセスリクエストである場合に、記憶装置１２０から、アクセスリクエスト２１０、…、および２１２で指定されたアドレス範囲内のデータをそれぞれ読み出すことができる。また、例えば、アクセスリクエスト２１０、…、および２１２は書き込みタイプのアクセスリクエストである場合に、記憶装置１２０における、アクセスリクエスト２１０、…、および２１２で指定されたアドレス範囲内に、相応するデータを書き込むことができる。
【００２３】
図３は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための方法３００のフローチャートを概略的に示している。該方法３００は、記憶装置１２０のドライバ２３０において実施されることができる。ここで、該ドライバ２３０は、コンピューティングシステム１１０のユーザモードにおいて実施されている。
【００２４】
図３に示されるように、ブロック３１０において、コンピューティングシステム１１０内の記憶装置１２０に対するデータアクセスのための１組のアクセスリクエスト１４０を取得することができる。ここで、１組のアクセスリクエスト１４０それぞれは、記憶装置１２０における１組のアドレスに対するアクセス操作を示す。言い換えれば、各アクセスリクエストは、記憶装置１２０に対する１つのデータアクセス操作を示す。
【００２５】
本開示の例示的な実施形態によれば、１組のアクセスリクエスト１４０は、記憶装置１２０へアクセスするためのアクセスリクエストを格納している循環連結リスト４１０から取得されることができる。以下では、図４を参照しながら、循環連結リストの詳細について説明する。図４は、本開示の例示的な実施形態に係る、１組のアクセスリクエスト１４０をソートし、ソートされた１組のアクセスリクエストに基づいてマージリクエストを生成するためのプロセスのブロック図４００を概略的に示している。図４に示されるように、循環連結リスト４１０は、受信した記憶装置１２０へのアクセスのための複数のアクセスリクエストを記憶することができる。該循環連結リスト４１０は、処理対象のアクセスリクエストのうちの最初のアクセスリクエストを指すヘッドポインタ４１２と、処理対象のアクセスリクエストのうちの最後のアクセスリクエストを指すテールポインタ４２２とを含むことができる。
【００２６】
本開示の例示的な実施形態によれば、１組のアクセスリクエスト１４０は、所定の時間間隔内で循環連結リスト４１０から選択されることができる。なお、アクセスリクエストを受信するたびに、直ちに記憶装置１２０におけるアクセスリクエストによって指定されたデータにアクセスすると、記憶装置１２０へのアクセスが頻繁になりすぎることは言うまでもない。特に、各アクセスリクエストに係るデータ量が小さい場合に、記憶装置１２０に対して頻繁にアクセスリクエストを実行することは、コンピューティングシステム１１０の全体的な性能の低下につながることがある。本開示では、所定の時間間隔の長さを指定することができる。これにより、アクセス操作の全体的な性能を向上するために、所定の時間間隔内で受信した複数のアクセスリクエストを集中的に処理することができる。
【００２７】
本開示の例示的な実施形態によれば、１組のアクセスリクエスト１４０の数は、閾値の数よりも高くない。閾値の数は例えば３２、１６、８など所定の数値に設定されることができる。例えば、該数値は、アクセスリクエストを受信する頻度または数に応じて確定されることもできれば、応答時間に対するコンピューティングシステム１１０の要求に応じて確定されることもできる。図４に示されるように、アクセスリクエスト２１０、２１２、…、２１４、２１６は、循環連結リスト４１０から取得されることができる。ここでの各アクセスリクエストは、相応するアクセスアドレスを含むことができるため、１組のアクセスリクエスト１４０は、１組のアクセスアドレスを含むことができることは、言うまでもない。
【００２８】
図３に戻る。ブロック３２０においては、、１組のアクセスのうちの各アドレスの記憶装置におけるアドレス範囲に基づいて、１組のアドレスをソートすることができる。ここで、１組のアクセスリクエスト１４０は、読み出しタイプと書き込みタイプのアクセスリクエストを含むことができることは、言うまでもない。本開示の例示的な実施形態によれば、同じタイプのアクセスリクエストをソートすることを選択することができる。例えば、１組のアクセスリクエスト１４０のうちの読み出しタイプのアクセスリクエストを先に処理することができる。１組のアクセスリクエスト１４０から読み出しタイプのアクセスリクエストを選択し、選択された読み出しタイプのアクセスリクエストをソートすることができる。昇順または降順に従ってソートすることができる。本開示の例示的な実施形態によれば、類似する方法により、１組のアクセスリクエスト１４０のうちの書き込みタイプのアクセスリクエストを処理することもできる。
【００２９】
図４に示されるように、アクセスリクエスト２１０、２１２、…、２１４および２１６に対してソート４２０を実行し、ソートされたアクセスリクエスト２１４、２１６、２１２、…、２１０を取得することができる。次に、ソートされたアクセスリクエストに基づいて、マージリクエスト２２０を生成することができる。図３に戻る。ブロック３３０においては、ソートされた１組のアクセスリクエストのうち、連続アドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエスト２２０を生成する。１組のアクセスリクエスト１４０における各アドレスが連続しているか否かに基づいて、後続処理を実行することができる。本開示の例示的な実施形態によれば、同じタイプのアクセスリクエストしかマージできないため、マージリクエスト２２０を生成する際には、各リクエストのタイプも考慮する必要がある。上述したように、読み出しリクエストと書き込みリクエストに基づいて各アクセスリクエストをそれぞれソートした場合には、ソートされたリクエストに基づいて、マージリクエストを直接生成することができる。
【００３０】
本開示の例示的な実施形態によれば、アクセスリクエストのタイプを区別せずに、１組のアクセスリクエストを直接ソートすることもできる。このとき、まず、アドレスが連続する２つのアクセスリクエストが同じタイプに属するか否かを判断する必要がある。判断結果が「はい」であれば、マージリクエスト２２０を生成することができる。２つのアクセスリクエストのタイプが異なれば、アクセスアドレスが連続していても、２つのアクセスリクエストそれぞれに対して処理を実行する必要がある。
【００３１】
本開示の例示的な実施形態によれば、少なくとも一部のアクセスリクエストにおいては、複数の連続するアクセスリクエストのそれぞれについて、一つ一つ処理を行うことができる。具体的には、連続アドレスを有する第１のアクセスリクエストと第２のアクセスリクエストとを確定し、第１のアクセスリクエストのアドレスの開始アドレスと第２のアクセスリクエストのアドレスの終了アドレスとに基づいて、マージリクエスト２２０のアドレスを確定することができる。以下では、図５Ａおよび図５Ｂそれぞれを参照して、マージリクエスト２２０を生成する方法について説明する。
【００３２】
図５Ａは、本開示の例示的な実施形態に係る、２つの読み出しリクエストに基づいてマージリクエストを生成するプロセスのブロック図５００Ａを概略的に示している。図５Ａに示されるように、アクセスリクエスト５１０Ａが読み出しリクエストであり、それに係るアドレス範囲が(０ｘ１０…００，０ｘ１Ｆ…ＦＦ)であり、アクセスリクエスト５１２Ａが読み出しリクエストであり、それに係るアドレス範囲が(０ｘ２０…００，０ｘ２Ｆ…ＦＦ)であるとする場合には、アクセスリクエスト５１０Ａの開始アドレス「０ｘ１０…００」とアクセスリクエスト５１２Ａの終了アドレス「０ｘ２Ｆ…ＦＦ」に基づいて、マージリクエスト５２０Ａを生成することができる。このとき、マージリクエスト５２０Ａは、アドレス範囲(０ｘ１０…００，０ｘ２Ｆ…ＦＦ)におけるデータの読み出しに係る。
【００３３】
図５Ｂは、本開示の例示的な実施形態に係る、２つの書き込みリクエストに基づいてマージリクエストを生成するプロセスのブロック図５００Ｂを概略的に示している。図５Ｂに示されるように、アクセスリクエスト５１０Ｂが書き込みリクエストであり、それに係るアドレス範囲が(０ｘ１０…００，０ｘ１Ｆ…ＦＦ)であり、アクセスリクエスト５１２Ｂが書き込みリクエストであり、それに係るアドレス範囲が(０ｘ２０…００，０ｘ２Ｆ…ＦＦ)であるとする場合には、アクセスリクエスト５１０Ｂの開始アドレス「０ｘ１０…００」とアクセスリクエスト５１２Ｂの終了アドレス「０ｘ２Ｆ…ＦＦ」に基づいて、マージリクエスト５２０Ｂを生成することができる。このとき、マージリクエスト５２０Ｂは、アクセスリクエスト５１０Ｂにおけるデータ「ＤＡＴＡ１」とアクセスリクエスト５１２Ｂにおけるデータ「ＤＡＴＡ２」をアドレス範囲(０ｘ１０…００，０ｘ２Ｆ…ＦＦ)に書き込むことに係る。
【００３４】
マージリクエストに係るアドレスの範囲が大きすぎると、データの読み出し/書き込みに時間がかかりすぎる可能性があることは、言うまでもない。したがって、マージされたアクセスリクエストに係るアドレス範囲が所定の閾値以下であると指定することもできる。言い換えれば、１組のアクセスリクエストをマージするプロセスにおいて、マージされたアクセスリクエストのマージアドレスの範囲が所定の閾値よりも低いと判断された場合には、マージプロセスが有効であると考えられる。そうでなければ、マージプロセスを実行しないか、または一部のアドレスが連続するアクセスリクエストのみをマージする。
【００３５】
図３に戻る。ブロック３４０においては、マージリクエスト２２０に基づいて、記憶装置２２０に対してデータアクセス操作を実行する。このとき、マージリクエスト２２０のアクセスタイプは、マージされる前の各アクセスリクエストのタイプと同じである。図５Ａに示される例に戻る。このとき、マージリクエスト５２０ＡはＲＥＡＤ(０ｘ１０…００，０ｘ２Ｆ…ＦＦ，ＲＤＡＴＡ)であり、アドレス範囲(０ｘ１０…００，０ｘ２Ｆ…ＦＦ)におけるデータをデータブロックＲＤＡＴＡに読み出すことを示す。該マージリクエスト５２０Ａが実行された後、該データブロックＲＤＡＴＡには、本来、それぞれアクセスリクエスト５１０Ａと５１２ＡからリターンされるべきデータブロックＲＤＡＴＡ１、ＲＤＡＴＡ２におけるデータが含まれる。
【００３６】
本開示の例示的な実施形態によれば、アクセスリクエスト５１０Ａと５１２Ａそれぞれに応答するように、リターンされたバルクデータを分割する必要がある。具体的には、１組のアクセスリクエストとマージリクエストのアクセスタイプが読み出しタイプである場合、記憶装置における、マージリクエストによって指定されたマージアドレスから、データ(例えば、データブロックＲＤＡＴＡにおけるデータ)を読み出すことができる。次に、第１のアクセスリクエストのアドレスと第２のアクセスリクエストのアドレスそれぞれに基づいて、読み出されたデータを分割することができる。以下では、図６Ａを参照しながら、データ分割の詳細について説明する。
【００３７】
図６Ａは、本開示の例示的な実施形態に係る、読み出したデータを分割するためのプロセスのブロック図６００Ａを概略的に示している。図６Ａに示されるように、データ６１０Ａを取得するために、記憶装置１２０に対してマージリクエスト５２０Ａを実行することができる。次に、アクセスリクエスト５１０Ａのアドレス(０ｘ１０…００，０ｘ１Ｆ…ＦＦ)とアクセスリクエスト５１２Ａのアドレス(０ｘ２０…００，０ｘ２Ｆ…ＦＦ)それぞれに基づいて、データ６１０Ａを第１のデータ６２０Ａと第２のデータ６２２Ａに分割することができる。
【００３８】
次いで、各アクセスリクエストのそれぞれに対して相応するデータをリターンすることができる。図６Ａに示されるように、アクセスリクエスト５１０Ａに対して第１のデータ６２０Ａを、アクセスリクエスト５１２Ａに対して第２のデータ６２２Ａをリターンすることができる。このとき、アクセスリクエスト５１０Ａに関連するデータブロックＲＤＡＴＡ１に第１のデータ６２０Ａを、アクセスリクエスト５１２Ａに関連するデータブロックＲＤＡＴＡ２に第２のデータ６２２Ａを書き込むことができる。
【００３９】
本開示の例示的な実施形態によれば、１組のアクセスリクエストのアクセスタイプが書き込みタイプである場合、第１のアクセスリクエストにおける第１のデータと第２のアクセスリクエストにおける第２のデータとに基づいて、マージデータを生成することができる。以下では、図６Ｂを参照しながら、リクエスト書き込みの実行手順について説明する。
【００４０】
図６Ｂは、本開示の例示的な実施形態に係る、記憶装置へデータを書き込み、および２つの書き込みリクエストそれぞれに、応答をリターンするプロセスのブロック図６００Ｂを概略的に示している。図６Ｂに示されるように、データ６１０Ｂが記憶装置１２０に書き込まれるように、記憶装置１２０に対してマージリクエスト５２０Ｂを実行することができる。次に、マージリクエスト５２０Ｂの実行が成功した場合、アクセスリクエスト５１０Ｂがうまく実行されたことを示す第１の応答６２０Ｂを該アクセスリクエスト５１０Ｂに提供することができる。また、アクセスリクエスト５１２Ｂがうまく実行されたことを示す第２の応答６２０Ｂを該アクセスリクエスト５１２Ｂに提供することもできる。
【００４１】
上記では、図５Ａ、５Ｂ、６Ａおよび６Ｂを参照して、マージされたリクエストを処理する方法について説明した。１組のアクセスリクエスト１４０には、アドレスが連続しないアクセスリクエストが含まれている可能性があることは、言うまでもない。この場合、１組のアクセスリクエスト１４０のうち、アドレスが連続するアクセスリクエストを除くその他のアクセスリクエストについては、その他のアクセスリクエストそれぞれに基づいて、記憶装置１２０に対して、対応するデータアクセス操作を行うことができる。図４に戻る。アクセスリクエスト２１４と２１６は既にマージされてマージリクエスト２２０を形成しているが、アクセスリクエスト２１２と２１０は連続していない。そのため、記憶装置１２０に対してアクセスリクエスト２１２と２１０をそれぞれ実行することができる。
【００４２】
図３〜図６Ｂを参照しながら上述したように、１組のアクセスリクエスト１４０のそれぞれを処理することができる。本開示の例示的な実施形態によれば、１組のアクセスリクエスト１４０をうまく処理した後に、さらに１組のアクセスリクエストが処理されたことを示すように循環連結リストのポインタを修正することができる。上述した方法３００を周期的に実行することができることは、言うまでもない。方法３００の実行中に、循環連結リスト４１０におけるアクセスリクエストの数を増やすことができる。循環連結リスト４１０におけるアクセスリクエストの数が所定の閾値に達した場合、実行方法３００を再びトリガすることができる。このように、１組のアクセスリクエスト１４０の取得は一定の時間のオーバヘッドを招くことがあるが、各アクセスリクエストをマージすることにより、記憶装置１２０に対して分散かつ連続したアクセスリクエストを頻繁に実行するためのパフォーマンスのオーバヘッドを大幅に低減することができる。特に、記憶装置１２０に対して大量の連続アクセスリクエストを頻繁に実行する場合、コンピューティングシステム１１０の全体的なパフォーマンスを著しく向上させることができる。
【００４３】
アクセスリクエストを管理する方法３００の複数の実施形態は、上記で詳細に説明された。本開示の例示的な実施形態によれば、アクセスリクエストを管理するための装置も提供されている。以下では、図７を参照しながら詳細に説明する。図７は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための装置７００のブロック図を概略的に示している。図７に示されるように、装置７００は、コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、記憶装置における１組のアドレスに対するアクセス操作をそれぞれ示す１組のアクセスリクエストを取得するように構成された取得モジュール７１０と、１組のアドレスのそれぞれの記憶装置におけるアドレス範囲に基づいて、１組のアドレスをソートするように構成されたソートモジュール７２０と、ソートされた１組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するように構成された生成モジュール７３０と、マージリクエストに基づいて、記憶装置に対してデータアクセス操作を実行するように構成された実行モジュール７４０と、を含む。装置７００は、記憶装置のドライバにおいて実施され、ドライバはコンピューティングシステムのユーザモードにおいて実施される。
【００４４】
本開示の例示的な実施形態によれば、ソートモジュール７２０は、少なくとも一部のアクセスリクエストが同一の、読み出しタイプと書き込みタイプを含むアクセスタイプを有すると判定されたことに対応して、マージリクエストを生成するように構成されたマージモジュールを含む。
【００４５】
本開示の例示的な実施形態によれば、ソートモジュール７２０は、少なくとも一部のアクセスリクエストにおいて、連続するアドレスを有する第１のアクセスリクエストと第２のアクセスリクエストを確定するように構成されたリクエスト確定モジュールと、第１のアクセスリクエストのアドレスの開始アドレスと、第２のアクセスリクエストのアドレスの終了アドレスとに基づいて、マージリクエストのマージアドレスを確定するように構成されたアドレス確定モジュールと、を含む。
【００４６】
本開示の例示的な実施形態によれば、マージリクエストのマージアドレスの範囲が所定の閾値を超えていないと判定されたことに対応して、マージリクエストを生成するように構成された閾値モジュールをさらに含む。
【００４７】
本開示の例示的な実施形態によれば、実行モジュール７４０は、１組のアクセスリクエストのアクセスタイプが読み出しタイプであると判定されたことに対応して、記憶装置におけるマージアドレスからデータを読み出すように構成されたデータ読み出しモジュールと、第１のアクセスリクエストのアドレスと第２のアクセスリクエストのアドレスとに基づいて、読み出したデータから、第１のアクセスリクエストに関連する第１のデータと第２のアクセスリクエストに関連する第２のデータをそれぞれ確定するように構成されたデータ確定モジュールと、それぞれ第１のデータを第１のアクセスリクエストにリターンし、第２のデータを第２のアクセスリクエストにリターンするように構成されたデータリターンモジュールと、を含む。
【００４８】
本開示の例示的な実施形態によれば、実行モジュール７４０は、１組のアクセスリクエストのアクセスタイプが書き込みタイプであることに応じて、第１のアクセスリクエストにおける第１のデータと第２のアクセスリクエストにおける第２のデータに基づいて、マージデータを生成するように構成されたデータマージモジュールと、記憶装置におけるマージアドレスへのマージデータの書き込みに応じて、第１のアクセスリクエストと第２のアクセスリクエストそれぞれに第１の応答と第２の応答をリターンするように構成された書き込み応答モジュールと、を含む。
【００４９】
本開示の例示的な実施形態によれば、１組のアクセスリクエストにおける少なくとも一部のアクセスリクエストを除くその他のアクセスリクエストに基づいて、記憶装置に対してデータアクセス操作を実行するように構成されたリクエスト実行モジュールをさらに含む。
【００５０】
本開示の例示的な実施形態によれば、取得モジュールは、記憶装置へアクセスするためのアクセスリクエストが記憶されている循環連結リストから１組のアクセスリクエストを取得するように構成されたリクエスト取得モジュールを含む。
【００５１】
本開示の例示的な実施形態によれば、所定の時間間隔内で、循環連結リストから、閾値数以下の数の１組のアクセスリクエストを選択するように構成されたリクエスト選択モジュールをさらに含む。
【００５２】
本開示の例示的な実施形態によれば、１組のアクセスリクエストが処理されたことを示すように、循環連結リストのポインタを修正するように構成された修正モジュールをさらに含む。
【００５３】
図８は、本開示の複数の実施形態を実施可能なコンピューティングデバイス８００のブロック図を示している。デバイス８００は、図３に説明された方法を実施するために使用され得る。図示するように、デバイス８００は、読み取り専用メモリ（ＲＯＭ）８０２に記憶されたコンピュータプログラムコマンドまたは記憶ユニット８０８からランダムアクセスメモリ（ＲＡＭ）８０３にロードされたコンピュータプログラムコマンドにより、様々な適切な動作および処理を実行できる中央処理ユニット（ＣＰＵ）８０１を含み得る。ＲＡＭ８０３には、デバイス８００の動作に必要な各種プログラムやデータも記憶され得る。ＣＰＵ８０１、ＲＯＭ８０２、およびＲＡＭ８０３は、バス８０４を介して相互に接続されている。入出力（Ｉ／Ｏ）インターフェース８０５もバス８０４に接続されている。
【００５４】
Ｉ／Ｏインターフェース８０５には、キーボード、マウスなどの入力ユニット８０６と、様々なタイプのディスプレイ、スピーカなどの出力ユニット８０７と、磁気ディスク、光ディスクなどの記憶ユニット８０８と、ネットワークカード、モデム、無線通信トランシーバーなどの通信ユニット８０９とを含むデバイス８００の複数のコンポーネントが接続されている。通信ユニット８０９により、デバイス８００は、インターネットなどのコンピュータネットワークおよび／または様々な電気通信ネットワークを介して、他のデバイスと情報／データを交換することができる。
【００５５】
処理ユニット８０１は、上述した方法３００のような様々な方法および処理を実行する。例えば、いくつかの実施形態では、方法３００は、記憶ユニット８０８などの機械可読媒体に有形的に含まれるコンピュータソフトウェアプログラムとして実施することができる。いくつかの実施形態では、コンピュータプログラムの一部または全ては、ＲＯＭ８０２および/または通信ユニット８０９を介してデバイス８００にロードおよび/またはインストールされることができる。コンピュータプログラムがＲＡＭ８０３にロードされ、ＣＰＵ８０１によって実行されると、上述した方法３００の１つまたは複数のステップを実行することができる。あるいは、他の実施形態では、ＣＰＵ８０１は、他の任意の適切な方法を通じて(例えば、ファームウェアを介して)方法３００を実行するように構成されることができる。
【００５６】
本開示の例示的な実施形態によれば、コンピュータプログラムが格納されたコンピュータ可読記憶媒体が提供される。プログラムがプロセッサによって実行されると、本開示で説明した方法を実施する。
【００５７】
本明細書で説明した機能は、少なくとも部分的に１つまたは複数のハードウェアロジックコンポーネントによって実行されることができる。例えば、採用できる汎用型のハードウェアロジックコンポーネントには、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準製品（ＡＳＳＰ）、システムオンチップ（ＳＯＣ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）などが含まれる。
【００５８】
本開示の方法を実施するためのプログラムコードは、１つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサまたはコントローラに提供されることができる。これらのプログラムコードがプロセッサまたはコントローラによって実行されると、フローチャートおよび/またはブロック図に規定された機能または操作が実施される。プログラムコードは、完全にデバイス上で実行されることも、部分的にデバイス上で実行されることも、スタンドアロンソフトウェアパッケージとして部分的にデバイス上で実行されながら部分的にリモートデバイス上で実行されることも、または完全にリモートデバイスもしくはサーバ上で実行されることも可能である。
【００５９】
本開示のコンテキストでは、機械可読媒体は、有形の媒体であってもよい。それは、命令実行システム、装置またはデバイスが使用するため、または命令実行システム、装置またはデバイスと組み合わせて使用するためのプログラムを含むか、または格納することができる。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であり得る。機械可読媒体は、電子的、磁気的、光学的、電磁的、赤外線、または半導体システム、装置またはデバイス、またはこれらの任意の適切な組み合わせを含むことができるが、これらに限定されない。機械可読記憶媒体のより具体的な例には、１本または複数本のケーブルに基づく電気的接続、携帯型コンピュータディスク、ハードディスク、ランダムアクセスメモリ(ＲＡＭ)、読み取り専用メモリ(ＲＯＭ)、消去可能プログラマブル読み取り専用メモリ(ＥＰＲＯＭまたはフラッシュメモリ)、光ファイバ、コンパクトディスク読み取り専用メモリ(ＣＤ‐ＲＯＭ)、光学記憶装置、磁気記憶装置、または上記の任意の適切な組み合わせが含まれ得る。
【００６０】
また、各操作は特定の順序で示されているが、所望の結果を得られるために、このような操作は示された特定の順序にてまたは順を追って実行されることを要求するか、または、図に示されたすべての操作が実行されることを要求するものと理解されるべきである。特定の環境では、マルチタスクと並列処理が有利である可能性がある。同様に、上記ではいくつかの具体的な実施詳細を説明したが、これらは本開示の範囲への制限と解釈されるべきではない。個別の実施形態のコンテキストで説明された、いくつかの特徴は、単一の実施において組み合わせて実施されることもできる。逆に、単一の実施のコンテキストで説明された様々な特徴は、複数の実施において、個別にまたは任意の適切なサブセットで実施されることもできる。
【００６１】
本主題は、構造特徴および/または方法のロジック動作に特定された言語で記述されたが、特許請求の範囲内に限定される主題が、必ずしも上記に記載された特定の特徴または動作に限定されるものではないことを理解されたい。逆に、上述した特定の特徴および動作は、特許請求の範囲を実施するための例示的な形態にすぎない。
【図１】
2020194524.tif 000003
【図２】
2020194524.tif 000004
【図３】
2020194524.tif 000005
【図４】
2020194524.tif 000006
【図５Ａ】
2020194524.tif 000007
【図５Ｂ】
2020194524.tif 000008
【図６Ａ】
2020194524.tif 000009
【図６Ｂ】
2020194524.tif 000010
【図７】
2020194524.tif 000011
【図８】
2020194524.tif 000012
【手続補正書】
【提出日】令和2年3月4日(2020.3.4)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
以下、図２を参照しながら、本開示の例示的な実施形態についてより詳しく説明する。図２は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための技術的解決手段のブロック図２００を概略的に示している。図２に示されるように、１組のアクセスリクエスト１４０は、受信した記憶装置１２０へのアクセスのための各アクセスリクエストを含むことができる。例えば、１組のアクセスリクエスト１４０は、アクセスリクエスト２１０、２１２、２１４、２１６などを含むことができる。本開示の例示的な実施形態によれば、記憶装置１２０に対するドライバ２３０においてマージプロセスを実施することができる。図２に示されるように、例えば、連続アドレス空間へのアクセスリクエスト２１４と２１６をマージして、新たなマージリクエスト２２０を形成することができる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４０
【補正方法】変更
【補正の内容】
【００４０】
図６Ｂは、本開示の例示的な実施形態に係る、記憶装置へデータを書き込み、および２つの書き込みリクエストそれぞれに、応答をリターンするプロセスのブロック図６００Ｂを概略的に示している。図６Ｂに示されるように、データ６１０Ｂが記憶装置１２０に書き込まれるように、記憶装置１２０に対してマージリクエスト５２０Ｂを実行することができる。次に、マージリクエスト５２０Ｂの実行が成功した場合、アクセスリクエスト５１０Ｂがうまく実行されたことを示す第１の応答６２０Ｂを該アクセスリクエスト５１０Ｂに提供することができる。また、アクセスリクエスト５１２Ｂがうまく実行されたことを示す第２の応答６２２Ｂを該アクセスリクエスト５１２Ｂに提供することもできる。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アクセスリクエストを管理するための方法であって、
コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、前記記憶装置における１組のアドレスに対するアクセス操作をそれぞれ示す１組のアクセスリクエストを取得するステップと、
前記１組のアドレスのそれぞれの、前記記憶装置におけるアドレス範囲に基づいて、前記１組のアドレスをソートするステップと、
ソートされた前記１組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するステップと、
前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップと、を含み、
前記方法は前記記憶装置のドライバにおいて実施され、前記ドライバは前記コンピューティングシステムのユーザモードにおいて実施される、アクセスリクエストを管理するための方法。
【請求項２】
ソートされた前記１組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するステップは、
前記少なくとも一部のアクセスリクエストが同一のアクセスタイプを有すると判定されたことに応じて、前記マージリクエストを生成することを含み、ここで、前記アクセスタイプは、読み出しタイプと書き込みタイプを含む、請求項１に記載の方法。
【請求項３】
ソートされた前記１組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するステップは、
前記少なくとも一部のアクセスリクエストにおいて、連続するアドレスを有する第１のアクセスリクエストと第２のアクセスリクエストを確定することと、
前記第１のアクセスリクエストのアドレスの開始アドレスと、前記第２のアクセスリクエストのアドレスの終了アドレスとに基づいて、前記マージリクエストのマージアドレスを確定することと、を含む、請求項１に記載の方法。
【請求項４】
前記マージリクエストの前記マージアドレスの範囲が所定の閾値を超えていないと判定されたことに応じて、前記マージリクエストを生成するステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップは、
前記１組のアクセスリクエストのアクセスタイプが読み出しタイプであると判定されたことに応じて、前記記憶装置における前記マージアドレスからデータを読み出すことと、
前記第１のアクセスリクエストの前記アドレスと前記第２のアクセスリクエストの前記アドレスとに基づいて、読み出された前記データから、前記第１のアクセスリクエストに関連する第１のデータと前記第２のアクセスリクエストに関連する第２のデータをそれぞれ確定することと、
それぞれ前記第１のデータを前記第１のアクセスリクエストにリターンし、前記第２のデータを前記第２のアクセスリクエストにリターンすることと、を含む、請求項３に記載の方法。
【請求項６】
前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップは、
前記１組のアクセスリクエストのアクセスタイプが書き込みタイプであると判定されたことに応じて、前記第１のアクセスリクエストにおける第１のデータと前記第２のアクセスリクエストにおける第２のデータに基づいて、マージデータを生成することと、
前記マージデータが前記記憶装置における前記マージアドレスに書き込まれたことに応じて、前記第１のアクセスリクエストと前記第２のアクセスリクエストに第１の応答と第２の応答をそれぞれリターンすることと、を含む、請求項３に記載の方法。
【請求項７】
前記１組のアクセスリクエストのうち、前記少なくとも一部のアクセスリクエストを除くその他のアクセスリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップをさらに含む、請求項１に記載の方法。
【請求項８】
コンピューティングシステム内の記憶装置に対してデータアクセスを行うための１組のアクセスリクエストを取得するステップは、
前記記憶装置へアクセスするためのアクセスリクエストが記憶されている循環連結リストから前記１組のアクセスリクエストを取得することを含む、請求項１に記載の方法。
【請求項９】
所定時間間隔内で、前記循環連結リストから、閾値数よりも高くない数の前記１組のアクセスリクエストを選択するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
前記１組のアクセスリクエストが処理されたことを示すように、前記循環連結リストのポインタを修正するステップをさらに含む、請求項８に記載の方法。
【請求項１１】
アクセスリクエストを管理するための装置であって、
コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、前記記憶装置における１組のアドレスに対するアクセス操作をそれぞれ示す１組のアクセスリクエストを取得するように構成された取得モジュールと、
前記１組のアドレスのそれぞれの、前記記憶装置におけるアドレス範囲に基づいて、前記１組のアドレスをソートするように構成されたソートモジュールと、
ソートされた前記１組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するように構成された生成モジュールと、
前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するように構成された実行モジュールと、を含み、
前記装置は、前記記憶装置のドライバにおいて実施され、前記ドライバは前記コンピューティングシステムのユーザモードにおいて実施される、アクセスリクエストを管理するための装置。
【請求項１２】
前記ソートモジュールは、
前記少なくとも一部のアクセスリクエストが同一のアクセスタイプを有すると判定されたことに応じて、前記マージリクエストを生成するように構成されたマージモジュールを含み、ここで、前記アクセスタイプは、読み出しタイプと書き込みタイプを含む、請求項１１に記載の装置。
【請求項１３】
前記ソートモジュールは、
前記少なくとも一部のアクセスリクエストにおいて、連続するアドレスを有する第１のアクセスリクエストと第２のアクセスリクエストを確定するように構成されたリクエスト確定モジュールと、
前記第１のアクセスリクエストのアドレスの開始アドレスと、前記第２のアクセスリクエストのアドレスの終了アドレスとに基づいて、前記マージリクエストのマージアドレスを確定するように構成されたアドレス確定モジュールと、を含む、請求項１１に記載の装置。
【請求項１４】
前記マージリクエストの前記マージアドレスの範囲が所定の閾値を超えていないと判定されたことに応じて、前記マージリクエストを生成するように構成された閾値モジュールをさらに含む、請求項１３に記載の装置。
【請求項１５】
前記実行モジュールは、
前記１組のアクセスリクエストのアクセスタイプが読み出しタイプであると判定されたことに応じて、前記記憶装置における前記マージアドレスからデータを読み出すように構成されたデータ読み出しモジュールと、
前記第１のアクセスリクエストの前記アドレスと前記第２のアクセスリクエストの前記アドレスとに基づいて、読み出した前記データから、前記第１のアクセスリクエストに関連する第１のデータと前記第２のアクセスリクエストに関連する第２のデータをそれぞれ確定するように構成されたデータ確定モジュールと、
それぞれ前記第１のデータを前記第１のアクセスリクエストにリターンし、前記第２のデータを前記第２のアクセスリクエストにリターンするように構成されたデータリターンモジュールと、を含む、請求項１３に記載の装置。
【請求項１６】
前記実行モジュールは、
前記１組のアクセスリクエストのアクセスタイプが書き込みタイプであることに応じて、前記第１のアクセスリクエストにおける第１のデータと前記第２のアクセスリクエストにおける第２のデータに基づいて、マージデータを生成するように構成されたデータマージモジュールと、
前記マージデータが前記記憶装置における前記マージアドレスに書き込まれたことに応じて、前記第１のアクセスリクエストと前記第２のアクセスリクエストに第１の応答と第２の応答をそれぞれリターンするように構成された書き込み応答モジュールと、を含む、請求項１３に記載の装置。
【請求項１７】
前記１組のアクセスリクエストのうち、前記少なくとも一部のアクセスリクエストを除くその他のアクセスリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するように構成されたリクエスト実行モジュールをさらに含む、請求項１１に記載の装置。
【請求項１８】
前記取得モジュールは、
前記記憶装置へアクセスするためのアクセスリクエストが記憶されている循環連結リストから前記１組のアクセスリクエストを取得するように構成されたリクエスト取得モジュールを含む、請求項１１に記載の装置。
【請求項１９】
所定時間間隔内で、前記循環連結リストから、閾値数よりも高くない数の前記１組のアクセスリクエストを選択するように構成されたリクエスト選択モジュールをさらに含む、請求項１８に記載の装置。
【請求項２０】
前記１組のアクセスリクエストが処理されたことを示すように、前記循環連結リストのポインタを修正するように構成された修正モジュールをさらに含む、請求項１８に記載の装置。
【請求項２１】
１つまたは複数のプロセッサと、
１つまたは複数のプログラムを格納するための記憶装置であって、前記１つまたは複数のプログラムが前記１つまたは複数のプロセッサによって実行されると、前記１つまたは複数のプロセッサに請求項１〜１０のいずれか１項に記載の方法を実施させる記憶装置と、
を備えるアクセスリクエストを管理するための装置。
【請求項２２】
コンピュータプログラムが格納されているコンピュータ可読媒体であって、
前記プログラムがプロセッサによって実行されると、請求項１〜１０のいずれか１項に記載の方法を実施するコンピュータ可読媒体。
【請求項２３】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項１〜１０のいずれか１項に記載の方法を実現する、コンピュータプログラム。
【外国語明細書】
2020194524000001.pdf