(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-13
(45)【発行日】2022-06-21
(54)【発明の名称】データアクセス方法、データアクセス装置、機器及び記憶媒体
(51)【国際特許分類】
G06F 12/00 20060101AFI20220614BHJP
【FI】
G06F12/00 560B
(21)【出願番号】P 2019209717
(22)【出願日】2019-11-20
【審査請求日】2019-11-20
(31)【優先権主張番号】201811391728.6
(32)【優先日】2018-11-21
(33)【優先権主張国・地域又は機関】CN
【前置審査】
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(73)【特許権者】
【識別番号】521457387
【氏名又は名称】クンルンシン テクノロジー (ベイジン) カンパニー リミテッド
【氏名又は名称原語表記】Kunlunxin Technology (Beijing) Company Limited
【住所又は居所原語表記】CW Section, F/4, Building 1, No.10, Shangdi 10th Street, Haidian District, 100101, Beijing, China
(74)【代理人】
【識別番号】100118913
【氏名又は名称】上田 邦生
(74)【代理人】
【識別番号】100142789
【氏名又は名称】柳 順一郎
(74)【代理人】
【識別番号】100201466
【氏名又は名称】竹内 邦彦
(72)【発明者】
【氏名】リャン, ジハオ
(72)【発明者】
【氏名】オウヤン, ジャン
【審査官】北村 学
(56)【参考文献】
【文献】特開2006-092169(JP,A)
【文献】特開2007-241576(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/00
(57)【特許請求の範囲】
【請求項1】
データアクセス方法であって、
記憶装置に対する第1のアクセス要求及び第2のアクセス要求を取得するステップと、
前記第1のアクセス要求に関連付けられた第1のデータをソース装置から事前に割り当てられたバッファエリアにロードするステップであって、前記バッファエリアは、前記記憶装置の単一の物理ストレージブロックと同じサイズを有するステップと、
前記第2のアクセス要求に関連付けられた第2のデータの第1のサイズが前記バッファエリアの利用可能なスペースの第2のサイズより小さいか否かを決定するステップと、
前記第1のサイズが前記第2のサイズより小さくないと決定されたことに応答して、前記利用可能なスペースと同じサイズを有する、前記第2のデータにおける第1の部分を決定するステップと、
第1のアクセス要求及び前記第2のアクセス要求に関連付けられた目標装置に前記第1のデータ及び前記第1の部分を提供するステップと、を含み、
前記第1のアクセス要求及び前記第2のアクセス要求は、読み出し要求であり、前記ソース装置は、前記記憶装置であることを特徴とする、データアクセス方法。
【請求項2】
前記方法は、
前記目標装置に前記第1のデータ及び前記第1の部分を提供することが完了したことに応答して、前記バッファエリアの前記利用可能なスペースを前記バッファエリアのすべてのスペースに更新するステップと、
更新された前記利用可能なスペースに、前記第2のデータにおける前記第1の部分とは異なる第2の部分をロードするステップと、をさらに含むことを特徴とする、請求項1に記載の方法。
【請求項3】
前記方法は、
前記第1のアクセス要求及び前記第2のアクセス要求に関連付けられた命令における第3のアクセス要求を受信したか否かを決定するステップであって、前記第3のアクセス要求のタイプは、前記第1のアクセス要求及び前記第2のアクセス要求のタイプと同じであるステップと、
前記第3のアクセス要求が受信されていないと決定されたことに応答して、前記第2の部分を前記目標装置に提供するステップと、をさらに含むことを特徴とする、請求項2に記載の方法。
【請求項4】
前記方法は、
前記第1のサイズが前記第2のサイズより小さいことに応答して、前記第2のデータを前記バッファエリアの前記利用可能なスペースにロードするステップをさらに含むことを特徴とする、請求項1に記載の方法。
【請求項5】
前記方法は、
前記第1のアクセス要求及び前記第2のアクセス要求に関連付けられた命令における第3のアクセス要求を受信したか否かを決定するステップであって、前記第3のアクセス要求のタイプは、前記第1のアクセス要求及び前記第2のアクセス要求のタイプと同じであるステップと、
前記第3のアクセス要求が受信されていないと決定されたことに応答して、前記第1のデータ及び前記第2のデータを前記目標装置に提供するステップと、をさらに含むことを特徴とする、請求項4に記載の方法。
【請求項6】
データアクセス装置であって、
記憶装置に対する第1のアクセス要求及び第2のアクセス要求を取得するように構成される取得モジュールと、
前記第1のアクセス要求に関連付けられた第1のデータをソース装置から事前に割り当てられたバッファエリアにロードするように構成される第1のロードモジュールであって、前記バッファエリアは、前記記憶装置の単一の物理ストレージブロックと同じサイズを有する第1のロードモジュールと、
前記第2のアクセス要求に関連付けられた第2のデータの第1のサイズが前記バッファエリアの利用可能なスペースの第2のサイズより小さいか否かを決定するように構成される第1の決定モジュールと、
前記第1のサイズが前記第2のサイズより小さくないと決定されたことに応答して、前記利用可能なスペースと同じサイズを有する、前記第2のデータにおける第1の部分を決定するように構成される第2の決定モジュールと、
第1のアクセス要求及び前記第2のアクセス要求に関連付けられた目標装置に前記第1のデータ及び前記第1の部分を提供するように構成される第1の提供モジュールと、を含み、
前記第1のアクセス要求及び前記第2のアクセス要求は、読み出し要求であり、前記ソース装置は、前記記憶装置であることを特徴とする、データアクセス装置。
【請求項7】
前記
データアクセス装置は、
前記目標装置に前記第1のデータ及び前記第1の部分を提供することが完了したことに応答して、前記バッファエリアの前記利用可能なスペースを前記バッファエリアのすべてのスペースに更新するように構成される更新モジュールと、
更新された前記利用可能なスペースに、前記第2のデータにおける前記第1の部分とは異なる第2の部分をロードするように構成される第2のロードモジュールと、をさらに含むことを特徴とする、請求項
6に記載の
データアクセス装置。
【請求項8】
前記
データアクセス装置は、
前記第1のアクセス要求及び前記第2のアクセス要求に関連付けられた命令における第3のアクセス要求を受信したか否かを決定するように構成される第3の決定モジュールであって、前記第3のアクセス要求のタイプは、前記第1のアクセス要求及び前記第2のアクセス要求のタイプと同じである第3の決定モジュールと、
前記第3のアクセス要求が受信されていないと決定されたことに応答して、前記第2の部分を前記目標装置に提供するように構成される第2の提供モジュールと、をさらに含むことを特徴とする、請求項
7に記載の
データアクセス装置。
【請求項9】
前記
データアクセス装置は、
前記第1のサイズが前記第2のサイズより小さいことに応答して、前記第2のデータを前記バッファエリアの前記利用可能なスペースにロードするように構成される第3のロードモジュールをさらに含むことを特徴とする、請求項
6に記載の
データアクセス装置。
【請求項10】
前記
データアクセス装置は、
前記第1のアクセス要求及び前記第2のアクセス要求に関連付けられた命令における第3のアクセス要求を受信したか否かを決定するように構成される第4の決定モジュールであって、前記第3のアクセス要求のタイプは、前記第1のアクセス要求及び前記第2のアクセス要求のタイプと同じである第4の決定モジュールと、
前記第3のアクセス要求が受信されていないと決定されたことに応答して、前記第1のデータ及び前記第2のデータを前記目標装置に提供するように構成される第3の提供モジュールと、をさらに含むことを特徴とする、請求項
9に記載の
データアクセス装置。
【請求項11】
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するためのメモリと、を含む電子機器であって、
前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行される場合に、前記電子機器が、請求項1から
5のいずれかに記載の方法を実現することを特徴とする、電子機器。
【請求項12】
コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体であって、
前記プログラムがプロセッサによって実行される場合に、請求項1から
5のいずれかに記載の方法が実現されることを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施例は、主にデータ記憶の分野に関し、より詳細には、データアクセス方法、装置、機器及びコンピュータ読み取り可能な記憶媒体に関する。
【背景技術】
【0002】
技術の発展に伴い、ソフトウェア・ハードウェア協調設計は、既に様々な分野で応用され始めている。従来の純粋なソフトウェア設計及び純粋なハードウェア設計とは異なり、ソフトウェア・ハードウェア協調設計は、ソフトウェアのプログラム可能な柔軟性を備えているだけでなく、ハードウェアの並列処理及びパイプライン処理を利用してデータ処理効率を向上させることもできる。
【0003】
ソフトウェア・ハードウェア協調システムでは、複数のコプロセッサが存在する場合があり、一部のコプロセッサは、動作中に同一の記憶装置に同時にアクセスする場合があるため、記憶装置のアクセス効率をどのように向上させるかが既に注目される焦点となっている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示の例示的な実施例によれば、データアクセスための技術案を提供する。
【課題を解決するための手段】
【0005】
本開示の第1の態様において、記憶装置に対する第1のアクセス要求及び第2のアクセス要求を取得するステップと、第1のアクセス要求に関連付けられた第1のデータをソース装置から事前に割り当てられたバッファエリアにロードするステップであって、バッファエリアは、記憶装置の単一の物理ストレージブロックと同じサイズを有するステップと、第2のアクセス要求に関連付けられた第2のデータの第1のサイズがバッファエリアの利用可能なスペースの第2のサイズより小さいか否かを決定するステップと、第1のサイズが第2のサイズより小さくないと決定されたことに応答して、利用可能なスペースと同じサイズを有する、第2のデータにおける第1の部分を決定するステップと、第1のアクセス要求及び第2のアクセス要求に関連付けられた目標装置に第1のデータ及び第1の部分を提供するステップと、を含み、前記第1のアクセス要求及び前記第2のアクセス要求は、読み出し要求であり、前記ソース装置は、前記記憶装置であるデータアクセス方法が提供される。
【0006】
本開示の第2の態様において、記憶装置に対する第1のアクセス要求及び第2のアクセス要求を取得するように構成される取得モジュールと、第1のアクセス要求に関連付けられた第1のデータをソース装置から事前に割り当てられたバッファエリアにロードするように構成される第1のロードモジュールであって、バッファエリアは、記憶装置の単一の物理ストレージブロックと同じサイズを有する第1のロードモジュールと、第2のアクセス要求に関連付けられた第2のデータの第1のサイズがバッファエリアの利用可能なスペースの第2のサイズより小さいか否かを決定するように構成される第1の決定モジュールと、第1のサイズが第2のサイズより小さくないと決定されたことに応答して、利用可能なスペースと同じサイズを有する、第2のデータにおける第1の部分を決定するように構成される第2の決定モジュールと、第1のアクセス要求及び第2のアクセス要求に関連付けられた目標装置に第1のデータ及び第1の部分を提供するように構成される第1の提供モジュールと、を含み、前記第1のアクセス要求及び前記第2のアクセス要求は、読み出し要求であり、前記ソース装置は、前記記憶装置であるデータアクセス装置が提供される。
【0007】
本開示の第3の態様において、機器が提供され、前記機器は、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するための記憶装置と、を含み、一つ又は複数のプログラムが一つ又は複数のプロセッサによって実行される場合に、一つ又は複数のプロセッサが、本開示の第1の態様に係る方法を実現する。
【0008】
本開示の第4の態様において、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体を提供し、当該プログラムがプロセッサによって実行される場合に、本開示の第1の態様に係る方法が実現される。
【0009】
なお、発明の概要に説明された内容は、本開示の実施例の肝心又は重要な特徴を限定することを意図しておらず、本開示の範囲を限定することも意図していない。本開示の他の特徴は、以下の説明により容易に理解され得る。
【図面の簡単な説明】
【0010】
本開示の各実施例の前述及び/又は付加的な特徴及び利点は、図面を参照した以下の詳細な説明により、より明らかになる。図面では、同一又は類似の符号は、同一又は類似の要素を表す。
【
図1】従来のソフトウェア・ハードウェア協調システムオンチップの概略図を示す。
【
図2】本開示のいくつかの実施例に係る記憶システムの概略図を示す。
【
図3】本開示のいくつかの実施例に係るデータアクセス方法のフローチャートを示す。
【
図4A】本開示のいくつかの実施例に係る異なるデータをスプライシングする概略図を示す。
【
図4B】本開示のいくつかの実施例に係る異なるデータをスプライシングする概略図を示す。
【
図4C】本開示のいくつかの実施例に係る異なるデータをスプライシングする概略図を示す。
【
図5】本開示の実施例に係るデータアクセスの装置の概略ブロック図を示す。
【
図6】本開示の複数の実施例を実施可能なコンピューティング機器のブロック図を示す。
【発明を実施するための形態】
【0011】
以下に、図面を参照しながら本開示の実施例をさらに詳しく説明する。図面には、本開示の一部の実施例を示したが、本開示は、種々な形式により実現することができ、ここで説明された実施例に限定されるものであると理解されてはならない。逆に、これらの実施例を提供する目的は、本開示がより完全に理解されることである。なお、本開示の図面及び実施例は、単に例示するためのものであり、本開示の保護範囲を限定するものと理解されてはならない。
【0012】
本開示の実施例の説明において、「含む」との用語及びその類似用語は、開放的に含まれ、即ち、「含むがこれらに限定されない」と理解すべきである。「基づく」は、「少なくとも部分に基づく」と理解すべきである。「一実施例」又は「当該実施例」は、「少なくとも一つの実施例」であると理解すべきである。「第1」、「第2」等は、異なる又は同一の対象を指してもよい。以下の記載において、その他の明確及び暗黙的な定義も含み得る。
【0013】
前述したように、ソフトウェア・ハードウェア協調システムオンチップ(SoC)システムでは、記憶装置へのアクセス効率は、直接システム全体のデータ処理効率に影響を与える。
図1は、本開示の実施例に係るSoCシステム100の概略図を示す。
図1に示すように、SoCシステム100は、組み込みプロセッサ110、組み込みプロセッサ110に関連付けられた複数のコプロセッサ120-1、120-2、120-3、及び120-N(コプロセッサ120と総称する又は個別にいう)、複数の記憶装置130-1、130-2、及び130-M(記憶装置130と総称する又は個別にいう)を含む。いくつかの実施例では、記憶装置130は、リードオンリーメモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、又はランダムアクセスメモリ(RAM)などを含むことができる。
【0014】
図1に示すように、複数のコプロセッサ(例えば、記憶装置120-1と記憶装置120-2)は、単一の記憶装置(例えば、記憶装置130-1)に関連付けることができるため、コプロセッサ120-1及びコプロセッサ120-2が記憶装置130-1に同時にアクセスする場合がある。したがって、記憶装置130へのアクセス効率をどのように向上させるかがSoCシステム100の鍵となる。
【0015】
また、ハードウェアの設計では、記憶装置130の最小ユニット(すなわち、記憶装置130における単一の物理ストレージブロックのサイズ)を、オペレーティングシステムが処理できる単一のデータのサイズより大きくすることが多く、記憶装置130の単一の物理アドレスに複数のデータを記憶することができる。しかしながら、オペレーティングシステムは、単一のデータのサイズを最小操作単位とすることが多いため、記憶装置130における単一の物理アドレスは、複数のファイルアドレスを含むことが多い。例えば、処理精度が32ビットの単精度浮動小数点数であるオペレーティングシステムは、その最小操作単位が4バイトであるが、記憶装置130における最小ユニットは、例えば、16バイトであってもよい。
【0016】
このような場合、コプロセッサ120が記憶装置130への多数の連続アクセスを行うと、記憶装置130のアクセスポートを長時間占有するが、コプロセッサ120は、アクセスするたびに、ファイルシステムの単一のデータサイズ(例えば、4バイト)のみにアクセスする。このため、記憶装置130のサポート可能なアクセスビット幅(16バイト)を大きく浪費し、記憶装置130のアクセス効率の低下をもたらす。
【0017】
本開示の実施例によれば、データアクセス技術案が提供される。当該技術案では、記憶装置に対する第1のアクセス要求及び第2のアクセス要求を取得した場合に、記憶システムは、記憶装置の最小ユニットと同じサイズのバッファエリアに、第1のアクセス要求に関連付けられた第1のデータを書き込み、バッファエリアの残りの利用可能なスペースのサイズが第2のアクセス要求に関連付けられた第2のデータをサポートすることができるか否かを決定し、利用可能なスペースが第2のデータをサポートするのに足りない場合、第1のアクセス要求及び第2のアクセス要求に関連付けられた目標装置に第1のデータ及び第2のデータの第1の部分を提供し、第1の部分は、利用可能なスペースと同じサイズを有する。このような方式に基づいて、記憶システムは、バッファエリアを用いて複数のアクセス要求を組み合わせて、記憶装置の利用可能なビット幅を最大限に利用することができる。また、スプライシングプロセスでは、バッファエリアにデータを一回だけロードすればよいので、記憶システムのアクセス効率が向上する。
【0018】
以下、
図2~
図4を合わせて本開示の実施例に係るデータアクセス技術案を説明する。
図2は、本開示のいくつかの実施例に係る記憶システム200の概略図を示す。
図2に示すように、記憶システム200は、コプロセッサ210と、データスプライサ220と、記憶装置230とを含む。いくつかの実施例では、記憶装置230は、リードオンリーメモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、又はランダムアクセスメモリ(RAM)などを含むことができる。例えば、記憶装置230は、SoCシステム200におけるスタティックランダムアクセスメモリ(SRAM)であってもよい。
【0019】
図2に示すように、コプロセッサ210は、デコーダ212と、データプロセッサ214を含むことができる。いくつかの実施例では、コプロセッサ210は、例えば、組み込みプロセッサからアクセス命令を受信することができる。いくつかの実施例では、当該アクセス命令は、アクセスする必要があるデータの開始アドレス、データのタイプ、データの長さなどを明示的に含むことができる。コプロセッサ210は、当該命令を受信した後、受信した命令をデコーダ212によってデコードすることにより、命令におけるファイルシステムアドレスに対するアクセス要求を記憶装置230の物理アドレスに対する複数のアクセス要求に変換することができる。
【0020】
いくつかの実施例では、データスプライサ220は、複数のアクセス要求に対応する異なるデータをスプライシングするように構成され、これにより、記憶システム200の効率を向上させることができる。その具体的なスプライシングプロセスは、
図3-
図4を合わせて以下に詳細に説明する。いくつかの実施例では、データプロセッサ214は、集約操作などのデータスプライサ220によって返されたデータを、集約操作を実行するなどして処理するように構成されることができる。
【0021】
図3は、本開示のいくつかの実施例に係るデータアクセス方法300のフローチャートを示す。方法300は、記憶システム200におけるデータスプライサ210によって実施することができる。以下、
図2に示される記憶システム200を参照して方法300に係る動作を説明する。
【0022】
ブロック302において、データスプライサ220は、記憶装置230に対する第1のアクセス要求及び第2のアクセス要求を取得する。いくつかの実施例では、前述したように、コプロセッサ210は、受信し命令をデコーダ212によってデコードして、記憶装置230に対する複数のアクセス要求に変換し、当該複数のアクセス要求をデータスプライサ220に送信することができる。記憶装置230に対する第1のアクセス要求及び第2のアクセス要求は、同じシステムの操作命令に関連付けられている。
【0023】
いくつかの実施例では、第1のアクセス要求及び第2のアクセス要求は、記憶装置230における異なる物理アドレスに対する読み出し要求であってもよい。いくつかの実施例では、第1のアクセス要求及び第2のアクセス要求は、連続した目標物理アドレスを有することができる。例えば、第1のアクセス要求は、特定のストレージブロック(例えば、16バイト)における先頭の4バイトを読み出すことができ、第2のアクセス要求は、当該ストレージブロックの5番目~8番目のバイトを読み出すことができる。いくつかの実施例では、第1のアクセス要求及び第2のアクセス要求は、連続しない目標物理アドレスを有することができる。例えば、第2のアクセス要求は、第1のアクセス要求の目標ストレージブロックとは異なる他のストレージブロック内のデータを読み出すことができ、又は、第2のアクセス要求は、第1のアクセス要求の目標ストレージブロックと同じストレージブロック内の異なるデータを読み出すことができる。
【0024】
いくつかの実施例では、データスプライサ220は、コプロセッサ210から記憶装置230における異なる物理アドレスに対する複数の書き込み要求を受信することができる。記憶装置230に書き込まれるデータが連続したものであることが求められるため、記憶装置230への複数の書き込み要求を受信することに応答して、データスプライサ220は、複数の書き込み要求から第1の書き込み要求及び第2の書き込み要求を決定することができる。第1の書き込み要求に対応する記憶装置230における目標位置と、第2の書き込み要求に対応する記憶装置230における目標位置とは、連続するものである。例えば、第1のアクセス要求は、順次に実行される第1の書き込み要求であってもよく、特定のストレージブロック(例えば、16バイト)の先頭の4バイトに対するものであり、書き込みの正確な実行を実現するために、第2の書き込み要求の目標物理アドレスは、第1の書き込み要求の目標アドレスと連続する必要があり、例えば、当該ストレージブロックの5番目~8番目バイトである。
【0025】
ブロック304において、データスプライサ220は、第1のアクセス要求に関連付けられた第1のデータをソース装置から事前に割り当てられたバッファエリアにロードし、バッファエリアは、記憶装置230の単一の物理ストレージブロックに対応するサイズを有する。いくつかの実施例では、データスプライサ220は、レジスタを採用して記憶装置の最小ユニットと同じサイズのバッファエリアを構成することができる。
図4は、本開示の実施例に係る異なるデータをスプライシングする概略図を示す。
図4Aに示すように、例えば、第1のアクセス要求に関連付けられた第1のデータ410のサイズは10バイトであり、バッファエリア420のサイズは、記憶装置230の最小ユニットに揃っており、サイズは16バイトである。
【0026】
いくつかの実施例では、データスプライサ220は、バッファエリア420内の利用可能なスペースの開始位置を示すパラメータINDEXを記録することもできるバッファエリア。いくつかの実施例では、第1の書き込みの時点で、INDEXはデフォルトで0に設定されており、バッファエリア320内のすべてのスペースは、利用可能な状態である。
【0027】
いくつかの実施例では、第1のアクセス要求が読み出し要求である場合、データスプライサ220は、記憶装置230から第1のデータ410を読み出し、第1のデータ410をバッファエリア420にロードすることができる。
図4Bに示すように、データスプライサ220は、第1のデータ410のサイズ(10バイト)に基づいてINDEX値を更新することもでき、例えば、INDEXが10に更新される。
【0028】
いくつかの実施例では、第1のアクセス要求が書き込み要求である場合、データスプライサ220は、コプロセッサ210によって送信された書き込み要求に基づいて、第1のアクセス要求に関連付けられた第1のデータ410を取得し、第1のデータ410の目標ストレージブロックにおけるオフセットを決定することができる。例えば、第1のデータ410が目標ストレージブロック(16バイト)における5番目~8番目バイトである場合、そのオフセットは5である。第1のデータ410をバッファエリア420に書き込む前に、データスプライサ220は、当該オフセットに基づいてINDEX値を更新することができ、例えば、5に更新する。その後、データスプライサ220は、当該INDEXによって示された開始位置から第1のデータ410を書き込むことができ、例えば、第1のデータ410の4バイトをバッファエリア420の5番目~8番目バイトに書き込む。その後、
図4Bに示すように、データスプライサ220は、第1のデータ410のサイズ(10バイト)に基づいてINDEX値を更新することもでき、例えば、INDEXは15に更新される。
【0029】
引き続き
図3を参照すると、ブロック306において、データスプライサ220は、第2のアクセス要求に関連付けられた第2のデータの第1のサイズがバッファエリアの利用可能なスペースの第2のサイズより小さいか否かを決定する。いくつかの実施例では、データスプライサ220は、バッファエリア420のINDEX値及びバッファエリア420のサイズに基づいてバッファエリア420の残りの利用可能なスペースのサイズを決定することができる。例えば、前述した読み出し要求の例では、残りの利用可能なスペースのサイズは6バイトである。例えば、前述した書き込み要求の例では、残りの利用可能なスペースのサイズは2バイトである。
【0030】
ブロック306において第1のサイズが第2のサイズより小さくないと決定されたことに応答して、方法300は、ブロック308に進み、すなわち、データスプライサ220は、第2のアクセス要求に関連付けられた第2のデータの第1のサイズがバッファエリアの利用可能なスペースの第2のサイズより小さいか否かを決定する。
図4の例を続けると、
図4Bに示すように、例えば、第2のデータ430は、同様に10バイトのサイズであり、この場合、第2のデータ430のサイズがバッファエリア420の利用可能なスペースより大きい。以下、それぞれ読み出し要求および書き込み要求の場合に対して、ブロック308の具体的なプロセスを説明する。
【0031】
前述した第1のアクセス要求及び第2のアクセス要求が読み出し要求である例を続ける。いくつかの実施例では、例えば、データスプライサ220は、INDEX及びバッファエリア420のサイズに基づいて、利用可能なスペースのサイズが第2のデータ430のサイズ(例えば、10バイト)より小さい6バイトであると決定することができる。その後、データスプライサ220は、利用可能なスペースのサイズ(6バイト)に基づいて第2のデータ430を二つの部分に分割こすることができ、第1の部分432は、利用可能なスペースと同じサイズ(6バイト)を有し、第2のデータ430における残りの部分は、第2の部分(4バイト)を構成する。この場合、第1のデータ410と第2のデータ430の第1の部分432とは、記憶装置230の最小ユニット(16バイト)のサイズを構成する。
【0032】
前述した第1のアクセス要求及び第2のアクセス要求が書き込み要求である例を続ける。いくつかの実施例では、例えば、データスプライサ220は、INDEX及びバッファエリア420のサイズに基づいて、利用可能なスペースのサイズが第2のデータ430のサイズ(例えば、10バイト)より小さい2バイトであると決定することができる。その後、データスプライサ220は、利用可能なスペースのサイズ(2バイト)に基づいて第2のデータ430を二つの部分に分割することができ、第1の部分432は、利用可能なスペースと同じサイズ(2バイト)を有し、第2のデータ430における残りの部分は、第2の部分(8バイト)を構成する。この場合、第1のデータ410及び第2のデータ430の第1の部分432は、記憶装置230の最小ユニット(16バイト)のサイズを構成する。
【0033】
引き続き
図3を参照すると、ブロック310において、データスプライサ220は、第1のアクセス要求及び第2のアクセス要求に関連付けられた目標装置に第1のデータ及び第1の部分432を提供する。
【0034】
前述した第1のアクセス要求及び第2のアクセス要求が読み出し要求である例を続ける。この場合、ソース装置は記憶装置230であり、目標装置はコプロセッサ210である。いくつかの実施例では、データスプライサ220は、コプロセッサ210におけるデータプロセッサ214に、バッファエリア420に記憶された第1のデータ410及び第2のデータ430の第1の部分432を提供することができる。このような方式により、ファイルシステムの最小ユニットと記憶装置230の最小ユニットとが揃わない問題を解決するとともに、第2のデータ430の第1の部分432をバッファエリア420に読み出す必要がなく、記憶システムの読み出し効率を向上させる。
【0035】
いくつかの実施例では、第1のデータ410及び第2のデータ430の第1の部分432をコプロセッサ210に提供することが完了した後、データスプライサ220は、INDEXを0にリセットすることによって、バッファエリア420の利用可能なスペースをバッファエリア420のすべてのスペースに更新することができる。いくつかの実施例では、データスプライサ220は、第2のデータ430の第2の部分434をバッファエリア420に書き込み、第2の部分434のサイズ(4バイト)に基づいてINDEX値を更新することができ、例えば4に更新することができる。
【0036】
いくつかの実施例では、その後、データスプライサ220は、第1のアクセス要求及び第2のアクセス要求に関連付けられた命令における第3のアクセス要求を受信したか否かを決定することができる。第3のアクセス要求のタイプは、第1のアクセス要求及び第2のアクセス要求のタイプと同じである(当該例では、いずれも読み出し要求である)。データスプライサ220が第3のアクセス要求を受信していないと決定した場合、データスプライサ220は、バッファエリア420における有効データ(例えば、第2の部分434)をコプロセッサ210に送信して、当該命令に対するすべての応答を完了させることができる。データスプライサ220が第3のアクセス要求を受信したと決定した場合、データスプライサ220は、上記の方法に従って新しい読み出し要求のデータスプライシングを継続して実行することができるが、ここでは詳細に説明しない。
【0037】
いくつかの実施例では、データスプライサ220は、記憶装置230の目標ストレージブロックに、バッファエリア420記憶された第1のデータ410及び第2のデータ430の第1の部分432を書き込むことができる。いくつかの実施例では、データスプライサ220は、バッファエリア420における有効データの区間に基づいてマスク信号を生成することができる。例えば、上記の例では、バッファエリア420における先頭の4バイトには有効データがないため、対応するストレージブロックにおける先頭の4バイトにデータの書き込みを実行しないことをマスク信号によって記憶装置230に通知する。このようなの方式により、ファイルシステムの最小ユニットと記憶装置230の最小ユニットとが揃わない問題を解決するとともに、第2のデータ430の第1の部分432をバッファエリア420に書き込む必要がなく、記憶システムの書き込み効率を向上させる。
【0038】
前述した第1のアクセス要求及び第2のアクセス要求が書き込み要求である例を続ける。この場合、ソース装置はコプロセッサ210であり、目標装置は記憶装置230である。いくつかの実施例では、第1のデータ410及び第2のデータ430の第1の部分432を記憶装置230に書き込むことを完了した後、データスプライサ220は、INDEXを0にリセットすることによって、バッファエリア420の利用可能なスペースをバッファエリア420のすべてのスペースに更新することができる。いくつかの実施例では、データスプライサ220は、第2のデータ430の第2の部分434をバッファエリア420に書き込み、第2の部分434のサイズ(8バイト)に基づいてINDEX値を更新することができ、例えば8に更新することができる。
【0039】
いくつかの実施例では、その後、データスプライサ220は、第1のアクセス要求及び第2のアクセス要求に関連付けられた命令における第3のアクセス要求を受信したか否かを決定することができる。第3のアクセス要求のタイプは、第1のアクセス要求及び第2のアクセス要求のタイプと同じである(当該例では、いずれも書き込み要求である)。データスプライサ220が第3のアクセス要求が存在しないと決定した場合、データスプライサ220は、バッファエリア420における有効データ(例えば、第2の部分434)を記憶装置230に書き込んで、当該命令に対するすべての応答を完了させることができる。データスプライサ220が第3のアクセス要求が存在すると決定した場合、データスプライサ220は、目標アドレスが第2の部分434のアドレスに連続する書き込み要求があるか否かをさらに決定し、データスプライサ220が新しいアクセス要求が存在すると決定した場合、データスプライサ220は、上記の方法に従って新しいアクセス要求のデータスプライシングを継続して実行することができるが、ここでは詳細に説明しない。アドレスが連続する書き込み要求が存在しない場合、データスプライサ220は、バッファエリア420における有効データ(例えば、第2の部分434)を記憶装置230に書き込み、次の未実行の書き込み要求の実行を開始することができる。
【0040】
ブロック306において第1のサイズが第2のサイズより小さいと決定されたことに応答して、方法300はブロック312に進み、すなわち、データスプライサ220は、前記第2のデータを前記バッファエリアの前記利用可能なスペースに書き込む。いくつかの実施例では、例えば、第2のデータ430がバッファエリア420の利用可能なスペースのサイズより小さい場合、データスプライサは、第2のデータ430をバッファエリア420の利用可能なスペースに直接書き込み、第2のデータ430のサイズに基づいてINDEX値を更新することができる。例えば、第2のデータ430のサイズは4バイトであり、元のINDEXは10であり、更新されたINDEXは14になる。
【0041】
いくつかの実施例では、データスプライサ220は、新しいスプライシング可能なアクセス要求があるか否かを判断することができ、新しいアクセス要求が存在すると決定した場合、データスプライサ220は、上記の技術案に従ってバッファエリア420および新しいINDEXに基づいてデータのスプライシング操作を継続して実行することができる。新しいアクセス要求が存在ないと決定した場合、データスプライサ220は、バッファエリア420における有効データを第1のアクセス要求及び第2のアクセス要求に関連付けられた目標装置に直接提供することによって、命令に対するすべての応答を完了させることができる。
【0042】
上記の技術案により、本開示のデータアクセスの技術案は、ハードウェアアドレススペースとソフトウェアアドレススペースとが揃わないという問題を解決することによって、記憶システムの応答効率を向上させる。また、本明細書の技術案は、独立したデータスプライサを設置することによって、当該独立したデータスプライサは、揃わないアクセスをサポートしないコプロセッサに追加することができ、技術案のスケーラビリティが大幅に向上する。
【0043】
図5は、本開示の実施例に係るデータのアクセス装置500のブロック図を示す。装置500は、
図2のデータスプライサ220に含まれるか、又はデータスプライサ220として実現することができる。
図5に示すように、装置500は、記憶装置に対する第1のアクセス要求及び第2のアクセス要求を取得するように構成される取得モジュール510を含む。装置500は、第1のアクセス要求に関連付けられた第1のデータをソース装置から事前に割り当てられたバッファエリアエリアにロードするように構成される第1のロードモジュール520をさらに含み、バッファエリアは、記憶装置の単一の物理ストレージブロックと同じサイズを有する。装置500は、第2のアクセス要求に関連付けられた第2のデータの第1のサイズがバッファエリアの利用可能なスペースの第2のサイズより小さいか否かを決定するように構成される第1の決定モジュール530をさらに含む。装置500は、第1のサイズが第2のサイズより小さくないと決定されたことに応答して、利用可能なスペースと同じサイズを有する、第2のデータにおける第1の部分を決定するように構成される第2の決定モジュール540をさらに含む。また、装置500は、第1のアクセス要求及び第2のアクセス要求に関連付けられた目標装置に第1のデータ及び第1の部分を提供するように構成される第1の提供モジュール550をさらに含む。
【0044】
いくつかの実施例では、装置500は、目標装置に第1のデータ及び第1の部分を提供することが完了したことに応答して、バッファエリアの利用可能なスペースをバッファエリアのすべてのスペースに更新するように構成される更新モジュールと、更新された利用可能なスペースに、第2のデータにおける第1の部分とは異なる第2の部分をロードするように構成される第2のロードモジュールと、をさらに含む。
【0045】
いくつかの実施例では、装置500は、第1のアクセス要求及び第2のアクセス要求に関連付けられた命令における第3のアクセス要求を受信したか否かを決定するように構成される第3の決定モジュールであって、第3のアクセス要求のタイプは、第1のアクセス要求及び第2のアクセス要求のタイプと同じである第3の決定モジュールと、第3のアクセス要求が受信されていないと決定されたことに応答して、第2の部分を目標装置に提供するように構成される第2の提供モジュールと、をさらに含む。
【0046】
いくつかの実施例では、装置500は、第1のサイズが第2のサイズより小さいことに応答して、第2のデータをバッファエリアの利用可能なスペースにロードするように構成される第3のロードモジュールをさらに含む。
【0047】
いくつかの実施例では、装置500は、第1のアクセス要求及び第2のアクセス要求に関連付けられた命令における第3のアクセス要求を受信したか否かを決定するように構成される第4の決定モジュールであって、第3のアクセス要求のタイプは、第1のアクセス要求及び第2のアクセス要求のタイプと同じである第4の決定モジュールと、第3のアクセス要求が受信されていないと決定されたことに応答して、第1のデータ及び第2のデータを目標装置に提供するように構成される第3の提供モジュールと、をさらに含む。
【0048】
いくつかの実施例では、第1のアクセス要求及び第2のアクセス要求は、読み出し要求であり、ソース装置は、記憶装置である。
【0049】
いくつかの実施例では、第1のアクセス要求及び第2のアクセス要求は、書き込み要求であり、目標装置は、記憶装置である。第1のアクセス要求に対応する記憶装置における第1の目標位置と、第2のアクセス要求に対応する記憶装置における第2の目標位置とは、連続するものである。
【0050】
図6は、本開示の実施例を実現できる例示的な機器600を示す概略ブロック図である。図に示すように、機器600は、リードオンリーメモリ(ROM)602に記憶されたコンピュータプログラム命令、又は記憶ユニット608からランダムアクセスメモリ(RAM)603にローディングされたコンピュータプログラム命令に基づいて、各種の適切な動作と処理を実行できる中央処理装置(CPU)601を含む。RAM603には、機器600の操作に必要な各種のプログラム及びデータをさらに記憶することができる。CPU601と、ROM602と、RAM603とは、バス604を介して互いに接続されている。入力/出力(I/O)インタフェース605もバス604に接続されている。
【0051】
機器600におけるの複数のコンポーネントはI/Oインタフェース605に接続され、前記複数のコンポーネントは、キーボードやマウス等の入力ユニット606と、種々なディスプレイやスピーカ等の出力ユニット607と、磁気ディスクや光学ディスク等の記憶ユニット608と、ネットワークカード、モデム、無線通信トランシーバー等の通信ユニット609と、を含む。通信ユニット609は、機器600がインターネットのようなコンピュータネット及び/又は種々なキャリアネットワークを介してその他の機器と情報/データを交換することを許可する。
【0052】
処理ユニット601は、前述した各方法及び処理、例えばプロセス300を実行する。例えば、いくつかの実施例では、プロセス300は、記憶ユニット608のような機械読み取り可能な媒体に有形的に含まれるコンピュータソフトウエアプログラムとして実現することができる。一部の実施例では、コンピュータプログラムの一部又は全ては、ROM602及び/又は通信ユニット609を介して、機器600にロード及び/又はインストールすることができる。コンピュータプログラムがRAM603にロードされてCPU601によって実行される場合に、前述したプロセス300の一つ又は複数のステップを実行することができる。追加的に、他の実施例では、CPU601は、他の任意の適当な方式(例えば、ファームウェアを借りる)によりプロセス300を実行するように構成される。
【0053】
本明細書では、前述した機能は、少なくとも部分的に一つ又は複数のハードウェアロジックコンポーネントによって実行することができる。例えば、非限定的に、使用可能なハードウェアロジックコンポーネントとしては、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準品(ASSP)、システムオンチップ(SOC)、ロードプログラマブルロジックデバイス(CPLD)等が挙げられる。
【0054】
本開示の方法を実施するためのプログラムコードは、一つ又は複数のプログラミング言語の任意の組み合わせにより作成することができる。これらのプログラムコードは、汎用コンピュータ、専門コンピュータ又はその他のプログラミングデータ処理装置のプロセッサ又はコントローラに提供されることにより、プログラムコードがプロセッサ又はコントローラによって実行される場合に、フローチャート及び/又はブロック図に規定された機能/操作を実行することができる。プログラムコードは、完全にマシンで実行されてもよく、部分的にマシンで実行されてもよく、独立したソフトパッケージとして部分的にマシンで実行されるとともに、部分的にリモートマシンで実行されてもよく、又は完全にリモートマシン又はサーバで実行されてもよい。
【0055】
本開示の説明において、機械読み取り可能な媒体は、有形な媒体であってもよく、命令実行システム、装置又は機器によって、又は命令実行システム、装置又は機器と合わせて使用されるプログラムを含み、又は記憶する。機械読み取り可能な媒体は、機械読み取り可能な信号媒体又は機械読み取り可能な記憶媒体であってもよい。機械読み取り可能な媒体は、電子、磁気、光学、電磁、赤外線、又は半導体システム、装置、又はデバイス、又は前述した内容の任意の適切な組み合わせを含むことができるがこれらに限定されない。機械読み取り可能な記憶媒体のさらなる具体例として、1つ又は複数の配線に基づいた電気的接続、ポータブルコンピュータディスクカートリッジ、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能なプログラマブルリードオンリーメモリ(EPROM又はフラッシュメモリ)、光ファイバー、ポータブルコンパクトディスクリードオンリーメモリ(CD-ROM)、光学記憶装置、磁気記憶装置、又は前述した内容の任意の組み合わせを含む。
【0056】
また、特定の順番で各操作を説明したが、このような操作を、示される特定の順番又は順次実行することが求められ、又は図示した操作の全てを実行して所望の結果を取得することが求められることを理解されたい。一定の環境において、複数のタスク及び並列処理が有利である可能性がある。同様に、以上の説明には、若干の具体的な実現詳細が含まれたが、それが本開示の範囲を限定するものと理解されてはならない。個別の実施例に説明された一部の特徴は、一つの実施形態で組み合わせて実現することができる。逆に、一つの実施形態に説明された種々な特徴は、個別又は任意の適切なサブ組み合わせの方式で複数の実施形態で実現することができる。
【0057】
構成の特徴及び/又は方法の論理動作を特定した言語により、本テーマを説明したが、特許請求の範囲に限定されるテーマは、上記の特定の特徴又は動作に限定されない。逆に、上記の特定の特徴と動作は、特許請求の範囲を実現する一例に過ぎない。