(57)【要約】      （修正有）【課題】記憶装置のアクセス効率を向上させるためのデータアクセス方法、データアクセス装置、機器及び記憶媒体を提供する。【解決手段】データアクセス方法は、記憶装置に対する第１のアクセス要求及び第２のアクセス要求を取得するステップと、第１のアクセス要求に関連付けられた第１のデータをソース装置から事前に割り当てられたバッファエリアにロードするステップと、第２のアクセス要求に関連付けられた第２のデータの第１のサイズがバッファエリアの利用可能なスペースの第２のサイズより小さいか否かを決定するステップと、第１のサイズが第２のサイズより小さくないと決定されたことに応答して、利用可能なスペースと同じサイズを有する、第２のデータにおける第１の部分を決定するステップと、第１のアクセス要求及び第２のアクセス要求に関連付けられた目標装置に第１のデータ及び第１の部分を提供するステップと、を含む。【選択図】図３
2020087470.tif 000002
【特許請求の範囲】
【請求項１】
データアクセス方法であって、
記憶装置に対する第１のアクセス要求及び第２のアクセス要求を取得するステップと、
前記第１のアクセス要求に関連付けられた第１のデータをソース装置から事前に割り当てられたバッファエリアにロードするステップであって、前記バッファエリアは、前記記憶装置の単一の物理ストレージブロックと同じサイズを有するステップと、
前記第２のアクセス要求に関連付けられた第２のデータの第１のサイズが前記バッファエリアの利用可能なスペースの第２のサイズより小さいか否かを決定するステップと、
前記第１のサイズが前記第２のサイズより小さくないと決定されたことに応答して、前記利用可能なスペースと同じサイズを有する、前記第２のデータにおける第１の部分を決定するステップと、
第１のアクセス要求及び前記第２のアクセス要求に関連付けられた目標装置に前記第１のデータ及び前記第１の部分を提供するステップと、を含むことを特徴とする、データアクセス方法。
【請求項２】
前記方法は、
前記目標装置に前記第１のデータ及び前記第１の部分を提供することが完了したことに応答して、前記バッファエリアの前記利用可能なスペースを前記バッファエリアのすべてのスペースに更新するステップと、
更新された前記利用可能なスペースに、前記第２のデータにおける前記第１の部分とは異なる第２の部分をロードするステップと、をさらに含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記方法は、
前記第１のアクセス要求及び前記第２のアクセス要求に関連付けられた命令における第３のアクセス要求を受信したか否かを決定するステップであって、前記第３のアクセス要求のタイプは、前記第１のアクセス要求及び前記第２のアクセス要求のタイプと同じであるステップと、
前記第３のアクセス要求が受信されていないと決定されたことに応答して、前記第２の部分を前記目標装置に提供するステップと、をさらに含むことを特徴とする、請求項２に記載の方法。
【請求項４】
前記方法は、
前記第１のサイズが前記第２のサイズより小さいことに応答して、前記第２のデータを前記バッファエリアの前記利用可能なスペースにロードするステップをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項５】
前記方法は、
前記第１のアクセス要求及び前記第２のアクセス要求に関連付けられた命令における第３のアクセス要求を受信したか否かを決定するステップであって、前記第３のアクセス要求のタイプは、前記第１のアクセス要求及び前記第２のアクセス要求のタイプと同じであるステップと、
前記第３のアクセス要求が受信されていないと決定されたことに応答して、前記第１のデータ及び前記第２のデータを前記目標装置に提供するステップと、をさらに含むことを特徴とする、請求項４に記載の方法。
【請求項６】
前記第１のアクセス要求及び前記第２のアクセス要求は、読み出し要求であり、前記ソース装置は、前記記憶装置であることを特徴とする、請求項１に記載の方法。
【請求項７】
前記第１のアクセス要求及び前記第２のアクセス要求は、書き込み要求であり、前記目標装置は、前記記憶装置であり、前記第１のアクセス要求に対応する前記記憶装置における第１の目標位置と、前記第２のアクセス要求に対応する前記記憶装置における第２の目標位置とは、連続するものであることを特徴とする、請求項１に記載の方法。
【請求項８】
データアクセス装置であって、
記憶装置に対する第１のアクセス要求及び第２のアクセス要求を取得するように構成される取得モジュールと、
前記第１のアクセス要求に関連付けられた第１のデータをソース装置から事前に割り当てられたバッファエリアにロードするように構成される第１のロードモジュールであって、前記バッファエリアは、前記記憶装置の単一の物理ストレージブロックと同じサイズを有する第１のロードモジュールと、
前記第２のアクセス要求に関連付けられた第２のデータの第１のサイズが前記バッファエリアの利用可能なスペースの第２のサイズより小さいか否かを決定するように構成される第１の決定モジュールと、
前記第１のサイズが前記第２のサイズより小さくないと決定されたことに応答して、前記利用可能なスペースと同じサイズを有する、前記第２のデータにおける第１の部分を決定するように構成される第２の決定モジュールと、
第１のアクセス要求及び前記第２のアクセス要求に関連付けられた目標装置に前記第１のデータ及び前記第１の部分を提供するように構成される第１の提供モジュールと、を含むことを特徴とする、データアクセス装置。
【請求項９】
前記装置は、
前記目標装置に前記第１のデータ及び前記第１の部分を提供することが完了したことに応答して、前記バッファエリアの前記利用可能なスペースを前記バッファエリアのすべてのスペースに更新するように構成される更新モジュールと、
更新された前記利用可能なスペースに、前記第２のデータにおける前記第１の部分とは異なる第２の部分をロードするように構成される第２のロードモジュールと、をさらに含むことを特徴とする、請求項８に記載の装置。
【請求項１０】
前記装置は、
前記第１のアクセス要求及び前記第２のアクセス要求に関連付けられた命令における第３のアクセス要求を受信したか否かを決定するように構成される第３の決定モジュールであって、前記第３のアクセス要求のタイプは、前記第１のアクセス要求及び前記第２のアクセス要求のタイプと同じである第３の決定モジュールと、
前記第３のアクセス要求が受信されていないと決定されたことに応答して、前記第２の部分を前記目標装置に提供するように構成される第２の提供モジュールと、をさらに含むことを特徴とする、請求項９に記載の装置。
【請求項１１】
前記装置は、
前記第１のサイズが前記第２のサイズより小さいことに応答して、前記第２のデータを前記バッファエリアの前記利用可能なスペースにロードするように構成される第３のロードモジュールをさらに含むことを特徴とする、請求項８に記載の装置。
【請求項１２】
前記装置は、
前記第１のアクセス要求及び前記第２のアクセス要求に関連付けられた命令における第３のアクセス要求を受信したか否かを決定するように構成される第４の決定モジュールであって、前記第３のアクセス要求のタイプは、前記第１のアクセス要求及び前記第２のアクセス要求のタイプと同じである第４の決定モジュールと、
前記第３のアクセス要求が受信されていないと決定されたことに応答して、前記第１のデータ及び前記第２のデータを前記目標装置に提供するように構成される第３の提供モジュールと、をさらに含むことを特徴とする、請求項１１に記載の装置。
【請求項１３】
前記第１のアクセス要求及び前記第２のアクセス要求は、読み出し要求であり、前記ソース装置は、前記記憶装置であることを特徴とする、請求項８に記載の装置。
【請求項１４】
前記第１のアクセス要求及び前記第２のアクセス要求は、書き込み要求であり、前記目標装置は、前記記憶装置であり、前記第１のアクセス要求に対応する前記記憶装置における第１の目標位置と、前記第２のアクセス要求に対応する前記記憶装置における第２の目標位置とは、連続するものであることを特徴とする、請求項８に記載の装置。
【請求項１５】
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するためのメモリと、を含む電子機器であって、
前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行される場合に、前記電子機器が、請求項１から７のいずれかに記載の方法を実現することを特徴とする、電子機器。
【請求項１６】
コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体であって、
前記プログラムがプロセッサによって実行される場合に、請求項１から７のいずれかに記載の方法が実現されることを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施例は、主にデータ記憶の分野に関し、より詳細には、データアクセス方法、装置、機器及びコンピュータ読み取り可能な記憶媒体に関する。
【背景技術】
【０００２】
技術の発展に伴い、ソフトウェア・ハードウェア協調設計は、既に様々な分野で応用され始めている。従来の純粋なソフトウェア設計及び純粋なハードウェア設計とは異なり、ソフトウェア・ハードウェア協調設計は、ソフトウェアのプログラム可能な柔軟性を備えているだけでなく、ハードウェアの並列処理及びパイプライン処理を利用してデータ処理効率を向上させることもできる。
【０００３】
ソフトウェア・ハードウェア協調システムでは、複数のコプロセッサが存在する場合があり、一部のコプロセッサは、動作中に同一の記憶装置に同時にアクセスする場合があるため、記憶装置のアクセス効率をどのように向上させるかが既に注目される焦点となっている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示の例示的な実施例によれば、データアクセスための技術案を提供する。
【課題を解決するための手段】
【０００５】
本開示の第１の態様において、記憶装置に対する第１のアクセス要求及び第２のアクセス要求を取得するステップと、第１のアクセス要求に関連付けられた第１のデータをソース装置から事前に割り当てられたバッファエリアにロードするステップであって、バッファエリアは、記憶装置の単一の物理ストレージブロックと同じサイズを有するステップと、第２のアクセス要求に関連付けられた第２のデータの第１のサイズがバッファエリアの利用可能なスペースの第２のサイズより小さいか否かを決定するステップと、第１のサイズが第２のサイズより小さくないと決定されたことに応答して、利用可能なスペースと同じサイズを有する、第２のデータにおける第１の部分を決定するステップと、第１のアクセス要求及び第２のアクセス要求に関連付けられた目標装置に第１のデータ及び第１の部分を提供するステップと、を含むデータアクセス方法が提供される。
【０００６】
本開示の第２の態様において、記憶装置に対する第１のアクセス要求及び第２のアクセス要求を取得するように構成される取得モジュールと、第１のアクセス要求に関連付けられた第１のデータをソース装置から事前に割り当てられたバッファエリアにロードするように構成される第１のロードモジュールであって、バッファエリアは、記憶装置の単一の物理ストレージブロックと同じサイズを有する第１のロードモジュールと、第２のアクセス要求に関連付けられた第２のデータの第１のサイズがバッファエリアの利用可能なスペースの第２のサイズより小さいか否かを決定するように構成される第１の決定モジュールと、第１のサイズが第２のサイズより小さくないと決定されたことに応答して、利用可能なスペースと同じサイズを有する、第２のデータにおける第１の部分を決定するように構成される第２の決定モジュールと、第１のアクセス要求及び第２のアクセス要求に関連付けられた目標装置に第１のデータ及び第１の部分を提供するように構成される第１の提供モジュールと、を含むデータアクセス装置が提供される。
【０００７】
本開示の第３の態様において、機器が提供され、前記機器は、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するための記憶装置と、を含み、一つ又は複数のプログラムが一つ又は複数のプロセッサによって実行される場合に、一つ又は複数のプロセッサが、本開示の第１の態様に係る方法を実現する。
【０００８】
本開示の第４の態様において、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体を提供し、当該プログラムがプロセッサによって実行される場合に、本開示の第１の態様に係る方法が実現される。
【０００９】
なお、発明の概要に説明された内容は、本開示の実施例の肝心又は重要な特徴を限定することを意図しておらず、本開示の範囲を限定することも意図していない。本開示の他の特徴は、以下の説明により容易に理解され得る。
【図面の簡単な説明】
【００１０】
本開示の各実施例の前述及び／又は付加的な特徴及び利点は、図面を参照した以下の詳細な説明により、より明らかになる。図面では、同一又は類似の符号は、同一又は類似の要素を表す。
【図１】従来のソフトウェア・ハードウェア協調システムオンチップの概略図を示す。
【図２】本開示のいくつかの実施例に係る記憶システムの概略図を示す。
【図３】本開示のいくつかの実施例に係るデータアクセス方法のフローチャートを示す。
【図４Ａ】本開示のいくつかの実施例に係る異なるデータをスプライシングする概略図を示す。
【図４Ｂ】本開示のいくつかの実施例に係る異なるデータをスプライシングする概略図を示す。
【図４Ｃ】本開示のいくつかの実施例に係る異なるデータをスプライシングする概略図を示す。
【図５】本開示の実施例に係るデータアクセスの装置の概略ブロック図を示す。
【図６】本開示の複数の実施例を実施可能なコンピューティング機器のブロック図を示す。
【発明を実施するための形態】
【００１１】
以下に、図面を参照しながら本開示の実施例をさらに詳しく説明する。図面には、本開示の一部の実施例を示したが、本開示は、種々な形式により実現することができ、ここで説明された実施例に限定されるものであると理解されてはならない。逆に、これらの実施例を提供する目的は、本開示がより完全に理解されることである。なお、本開示の図面及び実施例は、単に例示するためのものであり、本開示の保護範囲を限定するものと理解されてはならない。
【００１２】
本開示の実施例の説明において、「含む」との用語及びその類似用語は、開放的に含まれ、即ち、「含むがこれらに限定されない」と理解すべきである。「基づく」は、「少なくとも部分に基づく」と理解すべきである。「一実施例」又は「当該実施例」は、「少なくとも一つの実施例」であると理解すべきである。「第１」、「第２」等は、異なる又は同一の対象を指してもよい。以下の記載において、その他の明確及び暗黙的な定義も含み得る。
【００１３】
前述したように、ソフトウェア・ハードウェア協調システムオンチップ（ＳｏＣ）システムでは、記憶装置へのアクセス効率は、直接システム全体のデータ処理効率に影響を与える。図１は、本開示の実施例に係るＳｏＣシステム１００の概略図を示す。図１に示すように、ＳｏＣシステム１００は、組み込みプロセッサ１１０、組み込みプロセッサ１１０に関連付けられた複数のコプロセッサ１２０−１、１２０−２、１２０−３、及び１２０−Ｎ（コプロセッサ１２０と総称する又は個別にいう）、複数の記憶装置１３０−１、１３０−２、及び１３０−Ｍ（記憶装置１３０と総称する又は個別にいう）を含む。いくつかの実施例では、記憶装置１３０は、リードオンリーメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、又はランダムアクセスメモリ（ＲＡＭ）などを含むことができる。
【００１４】
図１に示すように、複数のコプロセッサ（例えば、記憶装置１２０−１と記憶装置１２０−２）は、単一の記憶装置（例えば、記憶装置１３０−１）に関連付けることができるため、コプロセッサ１２０−１及びコプロセッサ１２０−２が記憶装置１３０−１に同時にアクセスする場合がある。したがって、記憶装置１３０へのアクセス効率をどのように向上させるかがＳｏＣシステム１００の鍵となる。
【００１５】
また、ハードウェアの設計では、記憶装置１３０の最小ユニット（すなわち、記憶装置１３０における単一の物理ストレージブロックのサイズ）を、オペレーティングシステムが処理できる単一のデータのサイズより大きくすることが多く、記憶装置１３０の単一の物理アドレスに複数のデータを記憶することができる。しかしながら、オペレーティングシステムは、単一のデータのサイズを最小操作単位とすることが多いため、記憶装置１３０における単一の物理アドレスは、複数のファイルアドレスを含むことが多い。例えば、処理精度が３２ビットの単精度浮動小数点数であるオペレーティングシステムは、その最小操作単位が４バイトであるが、記憶装置１３０における最小ユニットは、例えば、１６バイトであってもよい。
【００１６】
このような場合、コプロセッサ１２０が記憶装置１３０への多数の連続アクセスを行うと、記憶装置１３０のアクセスポートを長時間占有するが、コプロセッサ１２０は、アクセスするたびに、ファイルシステムの単一のデータサイズ（例えば、４バイト）のみにアクセスする。このため、記憶装置１３０のサポート可能なアクセスビット幅（１６バイト）を大きく浪費し、記憶装置１３０のアクセス効率の低下をもたらす。
【００１７】
本開示の実施例によれば、データアクセス技術案が提供される。当該技術案では、記憶装置に対する第１のアクセス要求及び第２のアクセス要求を取得した場合に、記憶システムは、記憶装置の最小ユニットと同じサイズのバッファエリアに、第１のアクセス要求に関連付けられた第１のデータを書き込み、バッファエリアの残りの利用可能なスペースのサイズが第２のアクセス要求に関連付けられた第２のデータをサポートすることができるか否かを決定し、利用可能なスペースが第２のデータをサポートするのに足りない場合、第１のアクセス要求及び第２のアクセス要求に関連付けられた目標装置に第１のデータ及び第２のデータの第１の部分を提供し、第１の部分は、利用可能なスペースと同じサイズを有する。このような方式に基づいて、記憶システムは、バッファエリアを用いて複数のアクセス要求を組み合わせて、記憶装置の利用可能なビット幅を最大限に利用することができる。また、スプライシングプロセスでは、バッファエリアにデータを一回だけロードすればよいので、記憶システムのアクセス効率が向上する。
【００１８】
以下、図２〜図４を合わせて本開示の実施例に係るデータアクセス技術案を説明する。図２は、本開示のいくつかの実施例に係る記憶システム２００の概略図を示す。図２に示すように、記憶システム２００は、コプロセッサ２１０と、データスプライサ２２０と、記憶装置２３０とを含む。いくつかの実施例では、記憶装置２３０は、リードオンリーメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、又はランダムアクセスメモリ（ＲＡＭ）などを含むことができる。例えば、記憶装置２３０は、ＳｏＣシステム２００におけるスタティックランダムアクセスメモリ（ＳＲＡＭ）であってもよい。
【００１９】
図２に示すように、コプロセッサ２１０は、デコーダ２１２と、データプロセッサ２１４を含むことができる。いくつかの実施例では、コプロセッサ２１０は、例えば、組み込みプロセッサからアクセス命令を受信することができる。いくつかの実施例では、当該アクセス命令は、アクセスする必要があるデータの開始アドレス、データのタイプ、データの長さなどを明示的に含むことができる。コプロセッサ２１０は、当該命令を受信した後、受信した命令をデコーダ２１２によってデコードすることにより、命令におけるファイルシステムアドレスに対するアクセス要求を記憶装置２３０の物理アドレスに対する複数のアクセス要求に変換することができる。
【００２０】
いくつかの実施例では、データスプライサ２２０は、複数のアクセス要求に対応する異なるデータをスプライシングするように構成され、これにより、記憶システム２００の効率を向上させることができる。その具体的なスプライシングプロセスは、図３−図４を合わせて以下に詳細に説明する。いくつかの実施例では、データプロセッサ２１４は、集約操作などのデータスプライサ２２０によって返されたデータを、集約操作を実行するなどして処理するように構成されることができる。
【００２１】
図３は、本開示のいくつかの実施例に係るデータアクセス方法３００のフローチャートを示す。方法３００は、記憶システム２００におけるデータスプライサ２１０によって実施することができる。以下、図２に示される記憶システム２００を参照して方法３００に係る動作を説明する。
【００２２】
ブロック３０２において、データスプライサ２２０は、記憶装置２３０に対する第１のアクセス要求及び第２のアクセス要求を取得する。いくつかの実施例では、前述したように、コプロセッサ２１０は、受信し命令をデコーダ２１２によってデコードして、記憶装置２３０に対する複数のアクセス要求に変換し、当該複数のアクセス要求をデータスプライサ２２０に送信することができる。記憶装置２３０に対する第１のアクセス要求及び第２のアクセス要求は、同じシステムの操作命令に関連付けられている。
【００２３】
いくつかの実施例では、第１のアクセス要求及び第２のアクセス要求は、記憶装置２３０における異なる物理アドレスに対する読み出し要求であってもよい。いくつかの実施例では、第１のアクセス要求及び第２のアクセス要求は、連続した目標物理アドレスを有することができる。例えば、第１のアクセス要求は、特定のストレージブロック（例えば、１６バイト）における先頭の４バイトを読み出すことができ、第２のアクセス要求は、当該ストレージブロックの５番目〜８番目のバイトを読み出すことができる。いくつかの実施例では、第１のアクセス要求及び第２のアクセス要求は、連続しない目標物理アドレスを有することができる。例えば、第２のアクセス要求は、第１のアクセス要求の目標ストレージブロックとは異なる他のストレージブロック内のデータを読み出すことができ、又は、第２のアクセス要求は、第１のアクセス要求の目標ストレージブロックと同じストレージブロック内の異なるデータを読み出すことができる。
【００２４】
いくつかの実施例では、データスプライサ２２０は、コプロセッサ２１０から記憶装置２３０における異なる物理アドレスに対する複数の書き込み要求を受信することができる。記憶装置２３０に書き込まれるデータが連続したものであることが求められるため、記憶装置２３０への複数の書き込み要求を受信することに応答して、データスプライサ２２０は、複数の書き込み要求から第１の書き込み要求及び第２の書き込み要求を決定することができる。第１の書き込み要求に対応する記憶装置２３０における目標位置と、第２の書き込み要求に対応する記憶装置２３０における目標位置とは、連続するものである。例えば、第１のアクセス要求は、順次に実行される第１の書き込み要求であってもよく、特定のストレージブロック（例えば、１６バイト）の先頭の４バイトに対するものであり、書き込みの正確な実行を実現するために、第２の書き込み要求の目標物理アドレスは、第１の書き込み要求の目標アドレスと連続する必要があり、例えば、当該ストレージブロックの５番目〜８番目バイトである。
【００２５】
ブロック３０４において、データスプライサ２２０は、第１のアクセス要求に関連付けられた第１のデータをソース装置から事前に割り当てられたバッファエリアにロードし、バッファエリアは、記憶装置２３０の単一の物理ストレージブロックに対応するサイズを有する。いくつかの実施例では、データスプライサ２２０は、レジスタを採用して記憶装置の最小ユニットと同じサイズのバッファエリアを構成することができる。図４は、本開示の実施例に係る異なるデータをスプライシングする概略図を示す。図４Ａに示すように、例えば、第１のアクセス要求に関連付けられた第１のデータ４１０のサイズは１０バイトであり、バッファエリア４２０のサイズは、記憶装置２３０の最小ユニットに揃っており、サイズは１６バイトである。
【００２６】
いくつかの実施例では、データスプライサ２２０は、バッファエリア４２０内の利用可能なスペースの開始位置を示すパラメータＩＮＤＥＸを記録することもできるバッファエリア。いくつかの実施例では、第１の書き込みの時点で、ＩＮＤＥＸはデフォルトで０に設定されており、バッファエリア３２０内のすべてのスペースは、利用可能な状態である。
【００２７】
いくつかの実施例では、第１のアクセス要求が読み出し要求である場合、データスプライサ２２０は、記憶装置２３０から第１のデータ４１０を読み出し、第１のデータ４１０をバッファエリア４２０にロードすることができる。図４Ｂに示すように、データスプライサ２２０は、第１のデータ４１０のサイズ（１０バイト）に基づいてＩＮＤＥＸ値を更新することもでき、例えば、ＩＮＤＥＸが１０に更新される。
【００２８】
いくつかの実施例では、第１のアクセス要求が書き込み要求である場合、データスプライサ２２０は、コプロセッサ２１０によって送信された書き込み要求に基づいて、第１のアクセス要求に関連付けられた第１のデータ４１０を取得し、第１のデータ４１０の目標ストレージブロックにおけるオフセットを決定することができる。例えば、第１のデータ４１０が目標ストレージブロック（１６バイト）における５番目〜８番目バイトである場合、そのオフセットは５である。第１のデータ４１０をバッファエリア４２０に書き込む前に、データスプライサ２２０は、当該オフセットに基づいてＩＮＤＥＸ値を更新することができ、例えば、５に更新する。その後、データスプライサ２２０は、当該ＩＮＤＥＸによって示された開始位置から第１のデータ４１０を書き込むことができ、例えば、第１のデータ４１０の４バイトをバッファエリア４２０の５番目〜８番目バイトに書き込む。その後、図４Ｂに示すように、データスプライサ２２０は、第１のデータ４１０のサイズ（１０バイト）に基づいてＩＮＤＥＸ値を更新することもでき、例えば、ＩＮＤＥＸは１５に更新される。
【００２９】
引き続き図３を参照すると、ブロック３０６において、データスプライサ２２０は、第２のアクセス要求に関連付けられた第２のデータの第１のサイズがバッファエリアの利用可能なスペースの第２のサイズより小さいか否かを決定する。いくつかの実施例では、データスプライサ２２０は、バッファエリア４２０のＩＮＤＥＸ値及びバッファエリア４２０のサイズに基づいてバッファエリア４２０の残りの利用可能なスペースのサイズを決定することができる。例えば、前述した読み出し要求の例では、残りの利用可能なスペースのサイズは６バイトである。例えば、前述した書き込み要求の例では、残りの利用可能なスペースのサイズは２バイトである。
【００３０】
ブロック３０６において第１のサイズが第２のサイズより小さくないと決定されたことに応答して、方法３００は、ブロック３０８に進み、すなわち、データスプライサ２２０は、第２のアクセス要求に関連付けられた第２のデータの第１のサイズがバッファエリアの利用可能なスペースの第２のサイズより小さいか否かを決定する。図４の例を続けると、図４Ｂに示すように、例えば、第２のデータ４３０は、同様に１０バイトのサイズであり、この場合、第２のデータ４３０のサイズがバッファエリア４２０の利用可能なスペースより大きい。以下、それぞれ読み出し要求および書き込み要求の場合に対して、ブロック３０８の具体的なプロセスを説明する。
【００３１】
前述した第１のアクセス要求及び第２のアクセス要求が読み出し要求である例を続ける。いくつかの実施例では、例えば、データスプライサ２２０は、ＩＮＤＥＸ及びバッファエリア４２０のサイズに基づいて、利用可能なスペースのサイズが第２のデータ４３０のサイズ（例えば、１０バイト）より小さい６バイトであると決定することができる。その後、データスプライサ２２０は、利用可能なスペースのサイズ（６バイト）に基づいて第２のデータ４３０を二つの部分に分割こすることができ、第１の部分４３２は、利用可能なスペースと同じサイズ（６バイト）を有し、第２のデータ４３０における残りの部分は、第２の部分（４バイト）を構成する。この場合、第１のデータ４１０と第２のデータ４３０の第１の部分４３２とは、記憶装置２３０の最小ユニット（１６バイト）のサイズを構成する。
【００３２】
前述した第１のアクセス要求及び第２のアクセス要求が書き込み要求である例を続ける。いくつかの実施例では、例えば、データスプライサ２２０は、ＩＮＤＥＸ及びバッファエリア４２０のサイズに基づいて、利用可能なスペースのサイズが第２のデータ４３０のサイズ（例えば、１０バイト）より小さい２バイトであると決定することができる。その後、データスプライサ２２０は、利用可能なスペースのサイズ（２バイト）に基づいて第２のデータ４３０を二つの部分に分割することができ、第１の部分４３２は、利用可能なスペースと同じサイズ（２バイト）を有し、第２のデータ４３０における残りの部分は、第２の部分（８バイト）を構成する。この場合、第１のデータ４１０及び第２のデータ４３０の第１の部分４３２は、記憶装置２３０の最小ユニット（１６バイト）のサイズを構成する。
【００３３】
引き続き図３を参照すると、ブロック３１０において、データスプライサ２２０は、第１のアクセス要求及び第２のアクセス要求に関連付けられた目標装置に第１のデータ及び第１の部分４３２を提供する。
【００３４】
前述した第１のアクセス要求及び第２のアクセス要求が読み出し要求である例を続ける。この場合、ソース装置は記憶装置２３０であり、目標装置はコプロセッサ２１０である。いくつかの実施例では、データスプライサ２２０は、コプロセッサ２１０におけるデータプロセッサ２１４に、バッファエリア４２０に記憶された第１のデータ４１０及び第２のデータ４３０の第１の部分４３２を提供することができる。このような方式により、ファイルシステムの最小ユニットと記憶装置２３０の最小ユニットとが揃わない問題を解決するとともに、第２のデータ４３０の第１の部分４３２をバッファエリア４２０に読み出す必要がなく、記憶システムの読み出し効率を向上させる。
【００３５】
いくつかの実施例では、第１のデータ４１０及び第２のデータ４３０の第１の部分４３２をコプロセッサ２１０に提供することが完了した後、データスプライサ２２０は、ＩＮＤＥＸを０にリセットすることによって、バッファエリア４２０の利用可能なスペースをバッファエリア４２０のすべてのスペースに更新することができる。いくつかの実施例では、データスプライサ２２０は、第２のデータ４３０の第２の部分４３４をバッファエリア４２０に書き込み、第２の部分４３４のサイズ（４バイト）に基づいてＩＮＤＥＸ値を更新することができ、例えば４に更新することができる。
【００３６】
いくつかの実施例では、その後、データスプライサ２２０は、第１のアクセス要求及び第２のアクセス要求に関連付けられた命令における第３のアクセス要求を受信したか否かを決定することができる。第３のアクセス要求のタイプは、第１のアクセス要求及び第２のアクセス要求のタイプと同じである（当該例では、いずれも読み出し要求である）。データスプライサ２２０が第３のアクセス要求を受信していないと決定した場合、データスプライサ２２０は、バッファエリア４２０における有効データ（例えば、第２の部分４３４）をコプロセッサ２１０に送信して、当該命令に対するすべての応答を完了させることができる。データスプライサ２２０が第３のアクセス要求を受信したと決定した場合、データスプライサ２２０は、上記の方法に従って新しい読み出し要求のデータスプライシングを継続して実行することができるが、ここでは詳細に説明しない。
【００３７】
いくつかの実施例では、データスプライサ２２０は、記憶装置２３０の目標ストレージブロックに、バッファエリア４２０記憶された第１のデータ４１０及び第２のデータ４３０の第１の部分４３２を書き込むことができる。いくつかの実施例では、データスプライサ２２０は、バッファエリア４２０における有効データの区間に基づいてマスク信号を生成することができる。例えば、上記の例では、バッファエリア４２０における先頭の４バイトには有効データがないため、対応するストレージブロックにおける先頭の４バイトにデータの書き込みを実行しないことをマスク信号によって記憶装置２３０に通知する。このようなの方式により、ファイルシステムの最小ユニットと記憶装置２３０の最小ユニットとが揃わない問題を解決するとともに、第２のデータ４３０の第１の部分４３２をバッファエリア４２０に書き込む必要がなく、記憶システムの書き込み効率を向上させる。
【００３８】
前述した第１のアクセス要求及び第２のアクセス要求が書き込み要求である例を続ける。この場合、ソース装置はコプロセッサ２１０であり、目標装置は記憶装置２３０である。いくつかの実施例では、第１のデータ４１０及び第２のデータ４３０の第１の部分４３２を記憶装置２３０に書き込むことを完了した後、データスプライサ２２０は、ＩＮＤＥＸを０にリセットすることによって、バッファエリア４２０の利用可能なスペースをバッファエリア４２０のすべてのスペースに更新することができる。いくつかの実施例では、データスプライサ２２０は、第２のデータ４３０の第２の部分４３４をバッファエリア４２０に書き込み、第２の部分４３４のサイズ（８バイト）に基づいてＩＮＤＥＸ値を更新することができ、例えば８に更新することができる。
【００３９】
いくつかの実施例では、その後、データスプライサ２２０は、第１のアクセス要求及び第２のアクセス要求に関連付けられた命令における第３のアクセス要求を受信したか否かを決定することができる。第３のアクセス要求のタイプは、第１のアクセス要求及び第２のアクセス要求のタイプと同じである（当該例では、いずれも書き込み要求である）。データスプライサ２２０が第３のアクセス要求が存在しないと決定した場合、データスプライサ２２０は、バッファエリア４２０における有効データ（例えば、第２の部分４３４）を記憶装置２３０に書き込んで、当該命令に対するすべての応答を完了させることができる。データスプライサ２２０が第３のアクセス要求が存在すると決定した場合、データスプライサ２２０は、目標アドレスが第２の部分４３４のアドレスに連続する書き込み要求があるか否かをさらに決定し、データスプライサ２２０が新しいアクセス要求が存在すると決定した場合、データスプライサ２２０は、上記の方法に従って新しいアクセス要求のデータスプライシングを継続して実行することができるが、ここでは詳細に説明しない。アドレスが連続する書き込み要求が存在しない場合、データスプライサ２２０は、バッファエリア４２０における有効データ（例えば、第２の部分４３４）を記憶装置２３０に書き込み、次の未実行の書き込み要求の実行を開始することができる。
【００４０】
ブロック３０６において第１のサイズが第２のサイズより小さいと決定されたことに応答して、方法３００はブロック３１２に進み、すなわち、データスプライサ２２０は、前記第２のデータを前記バッファエリアの前記利用可能なスペースに書き込む。いくつかの実施例では、例えば、第２のデータ４３０がバッファエリア４２０の利用可能なスペースのサイズより小さい場合、データスプライサは、第２のデータ４３０をバッファエリア４２０の利用可能なスペースに直接書き込み、第２のデータ４３０のサイズに基づいてＩＮＤＥＸ値を更新することができる。例えば、第２のデータ４３０のサイズは４バイトであり、元のＩＮＤＥＸは１０であり、更新されたＩＮＤＥＸは１４になる。
【００４１】
いくつかの実施例では、データスプライサ２２０は、新しいスプライシング可能なアクセス要求があるか否かを判断することができ、新しいアクセス要求が存在すると決定した場合、データスプライサ２２０は、上記の技術案に従ってバッファエリア４２０および新しいＩＮＤＥＸに基づいてデータのスプライシング操作を継続して実行することができる。新しいアクセス要求が存在ないと決定した場合、データスプライサ２２０は、バッファエリア４２０における有効データを第１のアクセス要求及び第２のアクセス要求に関連付けられた目標装置に直接提供することによって、命令に対するすべての応答を完了させることができる。
【００４２】
上記の技術案により、本開示のデータアクセスの技術案は、ハードウェアアドレススペースとソフトウェアアドレススペースとが揃わないという問題を解決することによって、記憶システムの応答効率を向上させる。また、本明細書の技術案は、独立したデータスプライサを設置することによって、当該独立したデータスプライサは、揃わないアクセスをサポートしないコプロセッサに追加することができ、技術案のスケーラビリティが大幅に向上する。
【００４３】
図５は、本開示の実施例に係るデータのアクセス装置５００のブロック図を示す。装置５００は、図２のデータスプライサ２２０に含まれるか、又はデータスプライサ２２０として実現することができる。図５に示すように、装置５００は、記憶装置に対する第１のアクセス要求及び第２のアクセス要求を取得するように構成される取得モジュール５１０を含む。装置５００は、第１のアクセス要求に関連付けられた第１のデータをソース装置から事前に割り当てられたバッファエリアエリアにロードするように構成される第１のロードモジュール５２０をさらに含み、バッファエリアは、記憶装置の単一の物理ストレージブロックと同じサイズを有する。装置５００は、第２のアクセス要求に関連付けられた第２のデータの第１のサイズがバッファエリアの利用可能なスペースの第２のサイズより小さいか否かを決定するように構成される第１の決定モジュール５３０をさらに含む。装置５００は、第１のサイズが第２のサイズより小さくないと決定されたことに応答して、利用可能なスペースと同じサイズを有する、第２のデータにおける第１の部分を決定するように構成される第２の決定モジュール５４０をさらに含む。また、装置５００は、第１のアクセス要求及び第２のアクセス要求に関連付けられた目標装置に第１のデータ及び第１の部分を提供するように構成される第１の提供モジュール５５０をさらに含む。
【００４４】
いくつかの実施例では、装置５００は、目標装置に第１のデータ及び第１の部分を提供することが完了したことに応答して、バッファエリアの利用可能なスペースをバッファエリアのすべてのスペースに更新するように構成される更新モジュールと、更新された利用可能なスペースに、第２のデータにおける第１の部分とは異なる第２の部分をロードするように構成される第２のロードモジュールと、をさらに含む。
【００４５】
いくつかの実施例では、装置５００は、第１のアクセス要求及び第２のアクセス要求に関連付けられた命令における第３のアクセス要求を受信したか否かを決定するように構成される第３の決定モジュールであって、第３のアクセス要求のタイプは、第１のアクセス要求及び第２のアクセス要求のタイプと同じである第３の決定モジュールと、第３のアクセス要求が受信されていないと決定されたことに応答して、第２の部分を目標装置に提供するように構成される第２の提供モジュールと、をさらに含む。
【００４６】
いくつかの実施例では、装置５００は、第１のサイズが第２のサイズより小さいことに応答して、第２のデータをバッファエリアの利用可能なスペースにロードするように構成される第３のロードモジュールをさらに含む。
【００４７】
いくつかの実施例では、装置５００は、第１のアクセス要求及び第２のアクセス要求に関連付けられた命令における第３のアクセス要求を受信したか否かを決定するように構成される第４の決定モジュールであって、第３のアクセス要求のタイプは、第１のアクセス要求及び第２のアクセス要求のタイプと同じである第４の決定モジュールと、第３のアクセス要求が受信されていないと決定されたことに応答して、第１のデータ及び第２のデータを目標装置に提供するように構成される第３の提供モジュールと、をさらに含む。
【００４８】
いくつかの実施例では、第１のアクセス要求及び第２のアクセス要求は、読み出し要求であり、ソース装置は、記憶装置である。
【００４９】
いくつかの実施例では、第１のアクセス要求及び第２のアクセス要求は、書き込み要求であり、目標装置は、記憶装置である。第１のアクセス要求に対応する記憶装置における第１の目標位置と、第２のアクセス要求に対応する記憶装置における第２の目標位置とは、連続するものである。
【００５０】
図６は、本開示の実施例を実現できる例示的な機器６００を示す概略ブロック図である。図に示すように、機器６００は、リードオンリーメモリ（ＲＯＭ）６０２に記憶されたコンピュータプログラム命令、又は記憶ユニット６０８からランダムアクセスメモリ（ＲＡＭ）６０３にローディングされたコンピュータプログラム命令に基づいて、各種の適切な動作と処理を実行できる中央処理装置（ＣＰＵ）６０１を含む。ＲＡＭ６０３には、機器６００の操作に必要な各種のプログラム及びデータをさらに記憶することができる。ＣＰＵ６０１と、ＲＯＭ６０２と、ＲＡＭ６０３とは、バス６０４を介して互いに接続されている。入力／出力（Ｉ／Ｏ）インタフェース６０５もバス６０４に接続されている。
【００５１】
機器６００におけるの複数のコンポーネントはＩ／Ｏインタフェース６０５に接続され、前記複数のコンポーネントは、キーボードやマウス等の入力ユニット６０６と、種々なディスプレイやスピーカ等の出力ユニット６０７と、磁気ディスクや光学ディスク等の記憶ユニット６０８と、ネットワークカード、モデム、無線通信トランシーバー等の通信ユニット６０９と、を含む。通信ユニット６０９は、機器６００がインターネットのようなコンピュータネット及び／又は種々なキャリアネットワークを介してその他の機器と情報／データを交換することを許可する。
【００５２】
処理ユニット６０１は、前述した各方法及び処理、例えばプロセス３００を実行する。例えば、いくつかの実施例では、プロセス３００は、記憶ユニット６０８のような機械読み取り可能な媒体に有形的に含まれるコンピュータソフトウエアプログラムとして実現することができる。一部の実施例では、コンピュータプログラムの一部又は全ては、ＲＯＭ６０２及び／又は通信ユニット６０９を介して、機器６００にロード及び／又はインストールすることができる。コンピュータプログラムがＲＡＭ６０３にロードされてＣＰＵ６０１によって実行される場合に、前述したプロセス３００の一つ又は複数のステップを実行することができる。追加的に、他の実施例では、ＣＰＵ６０１は、他の任意の適当な方式（例えば、ファームウェアを借りる）によりプロセス３００を実行するように構成される。
【００５３】
本明細書では、前述した機能は、少なくとも部分的に一つ又は複数のハードウェアロジックコンポーネントによって実行することができる。例えば、非限定的に、使用可能なハードウェアロジックコンポーネントとしては、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準品（ＡＳＳＰ）、システムオンチップ（ＳＯＣ）、ロードプログラマブルロジックデバイス（ＣＰＬＤ）等が挙げられる。
【００５４】
本開示の方法を実施するためのプログラムコードは、一つ又は複数のプログラミング言語の任意の組み合わせにより作成することができる。これらのプログラムコードは、汎用コンピュータ、専門コンピュータ又はその他のプログラミングデータ処理装置のプロセッサ又はコントローラに提供されることにより、プログラムコードがプロセッサ又はコントローラによって実行される場合に、フローチャート及び／又はブロック図に規定された機能／操作を実行することができる。プログラムコードは、完全にマシンで実行されてもよく、部分的にマシンで実行されてもよく、独立したソフトパッケージとして部分的にマシンで実行されるとともに、部分的にリモートマシンで実行されてもよく、又は完全にリモートマシン又はサーバで実行されてもよい。
【００５５】
本開示の説明において、機械読み取り可能な媒体は、有形な媒体であってもよく、命令実行システム、装置又は機器によって、又は命令実行システム、装置又は機器と合わせて使用されるプログラムを含み、又は記憶する。機械読み取り可能な媒体は、機械読み取り可能な信号媒体又は機械読み取り可能な記憶媒体であってもよい。機械読み取り可能な媒体は、電子、磁気、光学、電磁、赤外線、又は半導体システム、装置、又はデバイス、又は前述した内容の任意の適切な組み合わせを含むことができるがこれらに限定されない。機械読み取り可能な記憶媒体のさらなる具体例として、１つ又は複数の配線に基づいた電気的接続、ポータブルコンピュータディスクカートリッジ、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、消去可能なプログラマブルリードオンリーメモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバー、ポータブルコンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、光学記憶装置、磁気記憶装置、又は前述した内容の任意の組み合わせを含む。
【００５６】
また、特定の順番で各操作を説明したが、このような操作を、示される特定の順番又は順次実行することが求められ、又は図示した操作の全てを実行して所望の結果を取得することが求められることを理解されたい。一定の環境において、複数のタスク及び並列処理が有利である可能性がある。同様に、以上の説明には、若干の具体的な実現詳細が含まれたが、それが本開示の範囲を限定するものと理解されてはならない。個別の実施例に説明された一部の特徴は、一つの実施形態で組み合わせて実現することができる。逆に、一つの実施形態に説明された種々な特徴は、個別又は任意の適切なサブ組み合わせの方式で複数の実施形態で実現することができる。
【００５７】
構成の特徴及び／又は方法の論理動作を特定した言語により、本テーマを説明したが、特許請求の範囲に限定されるテーマは、上記の特定の特徴又は動作に限定されない。逆に、上記の特定の特徴と動作は、特許請求の範囲を実現する一例に過ぎない。
【図１】
2020087470.tif 000003
【図２】
2020087470.tif 000004
【図３】
2020087470.tif 000005
【図４Ａ】
2020087470.tif 000006
【図４Ｂ】
2020087470.tif 000007
【図４Ｃ】
2020087470.tif 000008
【図５】
2020087470.tif 000009
【図６】
2020087470.tif 000010