JP2020194524A - アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体 - Google Patents

アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体 Download PDF

Info

Publication number
JP2020194524A
JP2020194524A JP2020003206A JP2020003206A JP2020194524A JP 2020194524 A JP2020194524 A JP 2020194524A JP 2020003206 A JP2020003206 A JP 2020003206A JP 2020003206 A JP2020003206 A JP 2020003206A JP 2020194524 A JP2020194524 A JP 2020194524A
Authority
JP
Japan
Prior art keywords
access
request
data
access requests
merge
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020003206A
Other languages
English (en)
Other versions
JP7039631B2 (ja
Inventor
リン リー
Lin Li
リン リー
ユー チャン
Chun Yu
ユー チャン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2020194524A publication Critical patent/JP2020194524A/ja
Application granted granted Critical
Publication of JP7039631B2 publication Critical patent/JP7039631B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4072Drivers or receivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】クラウドコンピューティング分野ににおいて、アクセスリクエストを管理する方法を提供する。【解決手段】コンピューティングシステムのユーザモードで実施される記憶装置のドライバにおいて実施される方法であって、コンピューティングシステム内記憶装置における1組のアドレスに対するアクセス操作を示す1組のアクセスリクエストを取得するステップと、1組のアドレスのアドレス範囲に基づいて、1組のアドレスをソートするステップと、ソートされた1組のアクセスリクエストにおける、連続するアドレスに基づいて、マージリクエストを生成するステップと、マージリクエストに基づいて、記憶装置に対してデータアクセス操作を実行するステップと、を含む。【効果】コンピューティングシステムにおける記憶装置へのアクセスをより効果的に管理することができ、コンピューティングシステムの性能を向上させることができる。【選択図】図3

Description

発明の詳細な説明
本開示の実施形態は、主に記憶装置の管理に関するものであり、より具体的には、記憶装置へのアクセスリクエストを管理するための方法、装置、デバイス、およびコンピュータ記憶媒体に関する。
コンピュータ技術の発展に伴い、現在、より高いハードウェアアクセス速度を持つ高速記憶装置が登場している。ハードウェアの高速化に伴い、記憶装置のドライバは、高速記憶装置の潜在力を最大限に利用するように変更することが求められている。如何にして高速記憶装置へのアクセスをより効果的に管理するかは、技術的難題となっている。
本開示の例示的な実施形態によって、アクセスリクエストを管理するための方法が提供されている。
本開示の第1態様において、アクセスリクエストを管理するための方法を提供する。該方法は、コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、記憶装置における1組のアドレスに対するアクセス操作をそれぞれ示す1組のアクセスリクエストを取得するステップと、記憶装置における1組のアドレスのそれぞれのアドレス範囲に基づいて、1組のアドレスをソートするステップと、ソートされた1組のアクセスリクエストにおける、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するステップと、マージリクエストに基づいて、記憶装置に対してデータアクセス操作を実行するステップと、を含み、該方法は記憶装置のドライバにおいて実施され、ドライバは前記コンピューティングシステムのユーザモードにおいて実施される、アクセスリクエストを管理するための方法。
本開示の第2態様において、アクセスリクエストを管理するための装置を提供する。該装置は、コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、記憶装置における1組のアドレスに対するアクセス操作をそれぞれ示す1組のアクセスリクエストを取得するように構成された取得モジュールと、記憶装置における前記1組のアドレスのそれぞれのアドレス範囲に基づいて、1組のアドレスをソートするように構成されたソートモジュールと、ソートされた1組のアクセスリクエストにおける、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するように構成された生成モジュールと、マージリクエストに基づいて、記憶装置に対してデータアクセス操作を実行するように構成された実行モジュールと、を含み、該装置は、記憶装置のドライバにおいて実施され、ドライバはコンピューティングシステムのユーザモードにおいて実施される。
本開示の第3態様において、1つまたは複数のプロセッサと、1つまたは複数のプログラムを格納するための記憶装置と、を含む、アクセスリクエストを管理するための装置であって、1つまたは複数のプログラムは、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに第1態様に記載の方法を実施させるアクセスリクエストを管理するための装置を提供する。
本開示の第4態様において、コンピュータプログラムが格納されているコンピュータ可読媒体であって、プログラムは、プロセッサによって実行されると、第1態様に記載の方法を実施するコンピュータ可読媒体を提供する。
発明の概要の部分に記載された内容は、本開示の実施形態のかなめとなる特徴または重要な特徴を限定するためのものでもなく、本開示の範囲を制限するためのものでもないことを理解されたい。本開示の他の特徴は、以下の説明により容易に理解できるようになる。
本出願の上記実施形態および他の特徴、目的および利点は、添付図面を参照して下記の詳細な説明から、より明らかになるであろう。添付図面においては、同一または類似する符号は、同一または類似する要素を示す。
図1は、コンピューティングシステム内の記憶装置にアクセスするための例示的なプロセスを概略的に示すブロック図である。 図2は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための技術的解決手段を概略的に示すブロック図である。 図3は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための方法を概略的に示すフローチャートである。 図4は、本開示の例示的な実施形態に係る、1組のアクセスリクエストをソートし、ソートされた1組のアクセスリクエストに基づいてマージリクエストを生成するためのプロセスを概略的に示すブロック図である。 図5Aは、本開示の例示的な実施形態に係る、2つの読み出しリクエストに基づいてマージリクエストを生成するプロセスを概略的に示すブロック図である。 図5Bは、本開示の例示的な実施形態に係る、2つの書き込みリクエストに基づいてマージリクエストを生成するプロセスを概略的に示すブロック図である。 図6Aは、本開示の例示的な実施形態に係る、読み出したデータを分割するためのプロセスを概略的に示すブロック図である。 図6Bは、本開示の例示的な実施形態に係る、記憶装置へデータを書き込み、および2つの書き込みリクエストそれぞれに応答をリターンするプロセスを概略的に示すブロック図である。 図7は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための装置を概略的に示すブロック図である。 図8は、本開示の複数の実施形態を実施可能なコンピューティングデバイスを示すブロック図である。
以下、本開示の実施形態について図面を参照しながらより詳しく説明する。本開示のいくつかの実施形態は図面に示されているが、本開示は様々な形態で実施され得ることを理解されたい。つまり、本開示の内容はここで説明された実施形態に限定されない。これらの実施形態は、本開示の内容をより詳細かつ完全に理解するために提供されたものである。本開示の図面および実施形態は、例示的な役割のみに使用されるものであって、本開示の保護範囲を制限するためのものではないことを理解されたい。
本開示の実施形態の説明では、用語「…を含む」およびそれに類似する用語は、「…を含むがそれらに限定されない」という非限定の表現として理解されるべきである。用語「…に基づいて」は、「少なくとも部分的に…に基づいて」と理解されるべきである。用語「1つの実施形態」または「該実施形態」は、「少なくとも1つの実施形態」と理解されるべきである。用語「第1」「第2」などは、異なるまたは同じ対象を指すことができる。以下では、他の明確か暗黙的な定義がさらに含まれ得る。
以下では、まず、図1を参照しながら、本開示の適用環境について説明する。図1は、コンピューティングシステム110内の記憶装置120にアクセスするための例示的なプロセスのブロック図100を概略的に示している。図1に示されるように、コンピューティングシステム110は、1つまたは複数の記憶装置120を含むことができ、コンピューティングシステム110内で動作する(または、該コンピューティングシステム110にリモートアクセスする)1つまたは複数のアプリケーション130は、記憶装置120におけるデータにアクセスするために1組のアクセスリクエスト140を配信することができる。
記憶装置のハードウェア技術の発展に伴い、高速記憶装置が開発されており、データセンターに占める高速記憶装置の割合が高くなる一方である。従来の低速記憶装置と比較して、高速記憶装置は、データアクセス速度が非常に高く、アクセス遅延が比較的に低い。例えば、NVMe SSDは、従来のSASやSATA温氏ディスクより千倍も速く、初期のSATA SSDよりも5倍から10倍も速くなっている。したがって、高速記憶装置の優位性をより多く発揮するために、ハードウェア技術の発展に伴って記憶装置のドライバを改善することが期待されている。
カーネルモードで実施される従来のドライバの機能と効率は、高速デバイスの優位性を発揮しにくい。記憶装置120の応答効率を向上させるために、記憶装置120のドライバをカーネルモードからユーザモードに遷移させる技術的解決手段が提案されている。このようにして、カーネルコンテキストの切り替えを回避することができる。これにより、中央処理ユニット(CPU)の負担が低減され、CPUがより多くの命令サイクルを実際のデータ格納処理の作業に使用することができる。
ユーザモードで記憶装置120にアクセスする動作を実行する際に、記憶装置120に対するアクセスリクエストをポーリングモードで処理し、アクセスリクエストを迅速に配信することにより、待ち時間を短縮し、遅延を削減することができる。しかし、この方式では、個々のアクセスリクエストを単独で処理するため、複数のアクセスリクエストを全体的に考慮して最適化することはできない。ユーザモードで記憶装置120にアクセスする動作を実行することは、一部のデータの読み書き動作の性能を向上させることができるが、その他のタイプのデータの読み書き動作に有益な効果を与えられないばかりではなく、データアクセス性能を低下させてしまう恐れさえある。したがって、アクセスリクエストをより効率的に管理することが望ましい。
上記の技術的解決手段の欠陥を少なくとも部分的に克服するために、本開示の例示的な実施によって、ユーザモードで実施される、アクセスリクエストを管理するための方法が提供される。該方法では、受信した1組のアクセスリクエストのアクセスパターンを考慮する。1組のアクセスリクエスト内の複数のアクセスリクエストがアクセスした記憶装置120におけるアドレス空間が連続アドレス空間である場合、該複数のアクセスリクエストをマージする。次に、マージされたアクセスリクエストに基づいて、記憶装置120に対してデータアクセス操作を実行することができる。上記の方法は、記憶装置120のドライバにおいて実施されることができ、本開示の各実施形態は、コンピューティングシステム110のカーネルモードによる介入がない前提で、コンピューティングシステム110のユーザモードで実施されることができることは、言うまでもない。
本開示の例示的な実施形態によれば、ドライバがコンピューティングシステム110のユーザモードで動作することは、ドライバがカーネルモードに係らないことを意味する。これにより、カーネルのコンテキストの切り替えや割り込みを回避し、CPU処理のオーバヘッドを大幅に節約し、CPUのより多くのクロックサイクルに実際のデータ記憶を実行させることができる。
コンピューティングシステム110のオペレーティングシステムは、通常、カーネルと複数のサーバに分割されることができる。ここで、マイクロカーネルは、主に(1)プロセス(スレッド)管理(プロセスやスレッドのスケジューリング)、(2)低レベルメモリ管理(ユーザプログラム論理空間からメモリ空間への物理アドレスの変換)、並びに(3)割り込みおよびトラップ管理(割り込みおよびトラップ)に用いられる。マイクロカーネル構造が存在するため、ドライバはカーネルモードまたはユーザモードで動作することができる。カーネルモードとユーザモードは、オペレーティングシステムの2種のオペレーティングレベルである。
1つのタスク(プロセス)がシステムコールを実行してカーネルコードにトラップされて実行される場合、これはプロセスのカーネル実行モード(または、「カーネルモード」)と呼ばれ、プロセスの他の実行方式はユーザモードに属する。通常、ユーザプログラムはユーザモード、オペレーティングシステムはカーネルモードで動作する。ユーザモードとカーネルモードとの間で変換を行うことができる。例えば、システムコール、例外および周辺機器の割り込みによって行うことができる。ユーザモードとカーネルモードとの切替えは、余分な時間のオーバヘッドとコンピューティングリソースのオーバヘッドを招くことがある。
本開示の例示的な実施形態を用いると、カーネルモードの介入を必要とせずに、完全にユーザモードでアクセスリクエストを管理するプロセスを実行することができる。このようにして、ユーザモードとカーネルモードとの間での切り替えを回避し、コンピューティングシステム110全体の性能を向上させることができる。さらに、本開示の例示的な実施形態により、上記の方法をユーザモードで実施することで、比較的にばらつきのあるアクセスリクエストをより広い空間的なアクセスリクエストにマージすることができる。このようにして、ばらつきのあるアクセスリクエストのそれぞれを処理するために生じるワークロードを低減することができる。さらに、上記の方法はユーザモードで実施され、カーネルモードの介入を必要としないため、CPUのワークロードが低減され、CPUはより多くの命令サイクルをその他のタスクに使用することができる。
以下、図2を参照しながら、本開示の例示的な実施形態についてより詳しく説明する。図2は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための技術的解決手段のブロック図200を概略的に示している。図2に示されるように、1組のアクセスリクエスト140は、受信した記憶装置120へのアクセスのための各アクセスリクエストを含むことができる。例えば、アクセスリクエストリスト140は、アクセスリクエスト210、212、214、216などを含むことができる。本開示の例示的な実施形態によれば、記憶装置120に対するドライバ230においてマージプロセスを実施することができる。図2に示されるように、例えば、連続アドレス空間へのアクセスリクエスト214と216をマージして、新たなマージリクエスト220を形成することができる。
なお、1組のアクセスリクエスト140は、複数のアクセスリクエストを含むことができ、連続アドレス空間に係らないアクセスリクエスト210、…、および212は、従来のように処理することができることは、言うまでもない。例えば、それぞれアクセスリクエスト210、…、および212における各アクセスリクエストに基づいて、記憶装置120にアクセスすることができる。例えば、アクセスリクエスト210、…、および212は読み出しタイプのアクセスリクエストである場合に、記憶装置120から、アクセスリクエスト210、…、および212で指定されたアドレス範囲内のデータをそれぞれ読み出すことができる。また、例えば、アクセスリクエスト210、…、および212は書き込みタイプのアクセスリクエストである場合に、記憶装置120における、アクセスリクエスト210、…、および212で指定されたアドレス範囲内に、相応するデータを書き込むことができる。
図3は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための方法300のフローチャートを概略的に示している。該方法300は、記憶装置120のドライバ230において実施されることができる。ここで、該ドライバ230は、コンピューティングシステム110のユーザモードにおいて実施されている。
図3に示されるように、ブロック310において、コンピューティングシステム110内の記憶装置120に対するデータアクセスのための1組のアクセスリクエスト140を取得することができる。ここで、1組のアクセスリクエスト140それぞれは、記憶装置120における1組のアドレスに対するアクセス操作を示す。言い換えれば、各アクセスリクエストは、記憶装置120に対する1つのデータアクセス操作を示す。
本開示の例示的な実施形態によれば、1組のアクセスリクエスト140は、記憶装置120へアクセスするためのアクセスリクエストを格納している循環連結リスト410から取得されることができる。以下では、図4を参照しながら、循環連結リストの詳細について説明する。図4は、本開示の例示的な実施形態に係る、1組のアクセスリクエスト140をソートし、ソートされた1組のアクセスリクエストに基づいてマージリクエストを生成するためのプロセスのブロック図400を概略的に示している。図4に示されるように、循環連結リスト410は、受信した記憶装置120へのアクセスのための複数のアクセスリクエストを記憶することができる。該循環連結リスト410は、処理対象のアクセスリクエストのうちの最初のアクセスリクエストを指すヘッドポインタ412と、処理対象のアクセスリクエストのうちの最後のアクセスリクエストを指すテールポインタ422とを含むことができる。
本開示の例示的な実施形態によれば、1組のアクセスリクエスト140は、所定の時間間隔内で循環連結リスト410から選択されることができる。なお、アクセスリクエストを受信するたびに、直ちに記憶装置120におけるアクセスリクエストによって指定されたデータにアクセスすると、記憶装置120へのアクセスが頻繁になりすぎることは言うまでもない。特に、各アクセスリクエストに係るデータ量が小さい場合に、記憶装置120に対して頻繁にアクセスリクエストを実行することは、コンピューティングシステム110の全体的な性能の低下につながることがある。本開示では、所定の時間間隔の長さを指定することができる。これにより、アクセス操作の全体的な性能を向上するために、所定の時間間隔内で受信した複数のアクセスリクエストを集中的に処理することができる。
本開示の例示的な実施形態によれば、1組のアクセスリクエスト140の数は、閾値の数よりも高くない。閾値の数は例えば32、16、8など所定の数値に設定されることができる。例えば、該数値は、アクセスリクエストを受信する頻度または数に応じて確定されることもできれば、応答時間に対するコンピューティングシステム110の要求に応じて確定されることもできる。図4に示されるように、アクセスリクエスト210、212、…、214、216は、循環連結リスト410から取得されることができる。ここでの各アクセスリクエストは、相応するアクセスアドレスを含むことができるため、1組のアクセスリクエスト140は、1組のアクセスアドレスを含むことができることは、言うまでもない。
図3に戻る。ブロック320においては、、1組のアクセスのうちの各アドレスの記憶装置におけるアドレス範囲に基づいて、1組のアドレスをソートすることができる。ここで、1組のアクセスリクエスト140は、読み出しタイプと書き込みタイプのアクセスリクエストを含むことができることは、言うまでもない。本開示の例示的な実施形態によれば、同じタイプのアクセスリクエストをソートすることを選択することができる。例えば、1組のアクセスリクエスト140のうちの読み出しタイプのアクセスリクエストを先に処理することができる。1組のアクセスリクエスト140から読み出しタイプのアクセスリクエストを選択し、選択された読み出しタイプのアクセスリクエストをソートすることができる。昇順または降順に従ってソートすることができる。本開示の例示的な実施形態によれば、類似する方法により、1組のアクセスリクエスト140のうちの書き込みタイプのアクセスリクエストを処理することもできる。
図4に示されるように、アクセスリクエスト210、212、…、214および216に対してソート420を実行し、ソートされたアクセスリクエスト214、216、212、…、210を取得することができる。次に、ソートされたアクセスリクエストに基づいて、マージリクエスト220を生成することができる。図3に戻る。ブロック330においては、ソートされた1組のアクセスリクエストのうち、連続アドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエスト220を生成する。1組のアクセスリクエスト140における各アドレスが連続しているか否かに基づいて、後続処理を実行することができる。本開示の例示的な実施形態によれば、同じタイプのアクセスリクエストしかマージできないため、マージリクエスト220を生成する際には、各リクエストのタイプも考慮する必要がある。上述したように、読み出しリクエストと書き込みリクエストに基づいて各アクセスリクエストをそれぞれソートした場合には、ソートされたリクエストに基づいて、マージリクエストを直接生成することができる。
本開示の例示的な実施形態によれば、アクセスリクエストのタイプを区別せずに、1組のアクセスリクエストを直接ソートすることもできる。このとき、まず、アドレスが連続する2つのアクセスリクエストが同じタイプに属するか否かを判断する必要がある。判断結果が「はい」であれば、マージリクエスト220を生成することができる。2つのアクセスリクエストのタイプが異なれば、アクセスアドレスが連続していても、2つのアクセスリクエストそれぞれに対して処理を実行する必要がある。
本開示の例示的な実施形態によれば、少なくとも一部のアクセスリクエストにおいては、複数の連続するアクセスリクエストのそれぞれについて、一つ一つ処理を行うことができる。具体的には、連続アドレスを有する第1のアクセスリクエストと第2のアクセスリクエストとを確定し、第1のアクセスリクエストのアドレスの開始アドレスと第2のアクセスリクエストのアドレスの終了アドレスとに基づいて、マージリクエスト220のアドレスを確定することができる。以下では、図5Aおよび図5Bそれぞれを参照して、マージリクエスト220を生成する方法について説明する。
図5Aは、本開示の例示的な実施形態に係る、2つの読み出しリクエストに基づいてマージリクエストを生成するプロセスのブロック図500Aを概略的に示している。図5Aに示されるように、アクセスリクエスト510Aが読み出しリクエストであり、それに係るアドレス範囲が(0x10…00,0x1F…FF)であり、アクセスリクエスト512Aが読み出しリクエストであり、それに係るアドレス範囲が(0x20…00,0x2F…FF)であるとする場合には、アクセスリクエスト510Aの開始アドレス「0x10…00」とアクセスリクエスト512Aの終了アドレス「0x2F…FF」に基づいて、マージリクエスト520Aを生成することができる。このとき、マージリクエスト520Aは、アドレス範囲(0x10…00,0x2F…FF)におけるデータの読み出しに係る。
図5Bは、本開示の例示的な実施形態に係る、2つの書き込みリクエストに基づいてマージリクエストを生成するプロセスのブロック図500Bを概略的に示している。図5Bに示されるように、アクセスリクエスト510Bが書き込みリクエストであり、それに係るアドレス範囲が(0x10…00,0x1F…FF)であり、アクセスリクエスト512Bが書き込みリクエストであり、それに係るアドレス範囲が(0x20…00,0x2F…FF)であるとする場合には、アクセスリクエスト510Bの開始アドレス「0x10…00」とアクセスリクエスト512Bの終了アドレス「0x2F…FF」に基づいて、マージリクエスト520Bを生成することができる。このとき、マージリクエスト520Bは、アクセスリクエスト510Bにおけるデータ「DATA1」とアクセスリクエスト512Bにおけるデータ「DATA2」をアドレス範囲(0x10…00,0x2F…FF)に書き込むことに係る。
マージリクエストに係るアドレスの範囲が大きすぎると、データの読み出し/書き込みに時間がかかりすぎる可能性があることは、言うまでもない。したがって、マージされたアクセスリクエストに係るアドレス範囲が所定の閾値以下であると指定することもできる。言い換えれば、1組のアクセスリクエストをマージするプロセスにおいて、マージされたアクセスリクエストのマージアドレスの範囲が所定の閾値よりも低いと判断された場合には、マージプロセスが有効であると考えられる。そうでなければ、マージプロセスを実行しないか、または一部のアドレスが連続するアクセスリクエストのみをマージする。
図3に戻る。ブロック340においては、マージリクエスト220に基づいて、記憶装置220に対してデータアクセス操作を実行する。このとき、マージリクエスト220のアクセスタイプは、マージされる前の各アクセスリクエストのタイプと同じである。図5Aに示される例に戻る。このとき、マージリクエスト520AはREAD(0x10…00,0x2F…FF,RDATA)であり、アドレス範囲(0x10…00,0x2F…FF)におけるデータをデータブロックRDATAに読み出すことを示す。該マージリクエスト520Aが実行された後、該データブロックRDATAには、本来、それぞれアクセスリクエスト510Aと512AからリターンされるべきデータブロックRDATA1、RDATA2におけるデータが含まれる。
本開示の例示的な実施形態によれば、アクセスリクエスト510Aと512Aそれぞれに応答するように、リターンされたバルクデータを分割する必要がある。具体的には、1組のアクセスリクエストとマージリクエストのアクセスタイプが読み出しタイプである場合、記憶装置における、マージリクエストによって指定されたマージアドレスから、データ(例えば、データブロックRDATAにおけるデータ)を読み出すことができる。次に、第1のアクセスリクエストのアドレスと第2のアクセスリクエストのアドレスそれぞれに基づいて、読み出されたデータを分割することができる。以下では、図6Aを参照しながら、データ分割の詳細について説明する。
図6Aは、本開示の例示的な実施形態に係る、読み出したデータを分割するためのプロセスのブロック図600Aを概略的に示している。図6Aに示されるように、データ610Aを取得するために、記憶装置120に対してマージリクエスト520Aを実行することができる。次に、アクセスリクエスト510Aのアドレス(0x10…00,0x1F…FF)とアクセスリクエスト512Aのアドレス(0x20…00,0x2F…FF)それぞれに基づいて、データ610Aを第1のデータ620Aと第2のデータ622Aに分割することができる。
次いで、各アクセスリクエストのそれぞれに対して相応するデータをリターンすることができる。図6Aに示されるように、アクセスリクエスト510Aに対して第1のデータ620Aを、アクセスリクエスト512Aに対して第2のデータ622Aをリターンすることができる。このとき、アクセスリクエスト510Aに関連するデータブロックRDATA1に第1のデータ620Aを、アクセスリクエスト512Aに関連するデータブロックRDATA2に第2のデータ622Aを書き込むことができる。
本開示の例示的な実施形態によれば、1組のアクセスリクエストのアクセスタイプが書き込みタイプである場合、第1のアクセスリクエストにおける第1のデータと第2のアクセスリクエストにおける第2のデータとに基づいて、マージデータを生成することができる。以下では、図6Bを参照しながら、リクエスト書き込みの実行手順について説明する。
図6Bは、本開示の例示的な実施形態に係る、記憶装置へデータを書き込み、および2つの書き込みリクエストそれぞれに、応答をリターンするプロセスのブロック図600Bを概略的に示している。図6Bに示されるように、データ610Bが記憶装置120に書き込まれるように、記憶装置120に対してマージリクエスト520Bを実行することができる。次に、マージリクエスト520Bの実行が成功した場合、アクセスリクエスト510Bがうまく実行されたことを示す第1の応答620Bを該アクセスリクエスト510Bに提供することができる。また、アクセスリクエスト512Bがうまく実行されたことを示す第2の応答620Bを該アクセスリクエスト512Bに提供することもできる。
上記では、図5A、5B、6Aおよび6Bを参照して、マージされたリクエストを処理する方法について説明した。1組のアクセスリクエスト140には、アドレスが連続しないアクセスリクエストが含まれている可能性があることは、言うまでもない。この場合、1組のアクセスリクエスト140のうち、アドレスが連続するアクセスリクエストを除くその他のアクセスリクエストについては、その他のアクセスリクエストそれぞれに基づいて、記憶装置120に対して、対応するデータアクセス操作を行うことができる。図4に戻る。アクセスリクエスト214と216は既にマージされてマージリクエスト220を形成しているが、アクセスリクエスト212と210は連続していない。そのため、記憶装置120に対してアクセスリクエスト212と210をそれぞれ実行することができる。
図3〜図6Bを参照しながら上述したように、1組のアクセスリクエスト140のそれぞれを処理することができる。本開示の例示的な実施形態によれば、1組のアクセスリクエスト140をうまく処理した後に、さらに1組のアクセスリクエストが処理されたことを示すように循環連結リストのポインタを修正することができる。上述した方法300を周期的に実行することができることは、言うまでもない。方法300の実行中に、循環連結リスト410におけるアクセスリクエストの数を増やすことができる。循環連結リスト410におけるアクセスリクエストの数が所定の閾値に達した場合、実行方法300を再びトリガすることができる。このように、1組のアクセスリクエスト140の取得は一定の時間のオーバヘッドを招くことがあるが、各アクセスリクエストをマージすることにより、記憶装置120に対して分散かつ連続したアクセスリクエストを頻繁に実行するためのパフォーマンスのオーバヘッドを大幅に低減することができる。特に、記憶装置120に対して大量の連続アクセスリクエストを頻繁に実行する場合、コンピューティングシステム110の全体的なパフォーマンスを著しく向上させることができる。
アクセスリクエストを管理する方法300の複数の実施形態は、上記で詳細に説明された。本開示の例示的な実施形態によれば、アクセスリクエストを管理するための装置も提供されている。以下では、図7を参照しながら詳細に説明する。図7は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための装置700のブロック図を概略的に示している。図7に示されるように、装置700は、コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、記憶装置における1組のアドレスに対するアクセス操作をそれぞれ示す1組のアクセスリクエストを取得するように構成された取得モジュール710と、1組のアドレスのそれぞれの記憶装置におけるアドレス範囲に基づいて、1組のアドレスをソートするように構成されたソートモジュール720と、ソートされた1組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するように構成された生成モジュール730と、マージリクエストに基づいて、記憶装置に対してデータアクセス操作を実行するように構成された実行モジュール740と、を含む。装置700は、記憶装置のドライバにおいて実施され、ドライバはコンピューティングシステムのユーザモードにおいて実施される。
本開示の例示的な実施形態によれば、ソートモジュール720は、少なくとも一部のアクセスリクエストが同一の、読み出しタイプと書き込みタイプを含むアクセスタイプを有すると判定されたことに対応して、マージリクエストを生成するように構成されたマージモジュールを含む。
本開示の例示的な実施形態によれば、ソートモジュール720は、少なくとも一部のアクセスリクエストにおいて、連続するアドレスを有する第1のアクセスリクエストと第2のアクセスリクエストを確定するように構成されたリクエスト確定モジュールと、第1のアクセスリクエストのアドレスの開始アドレスと、第2のアクセスリクエストのアドレスの終了アドレスとに基づいて、マージリクエストのマージアドレスを確定するように構成されたアドレス確定モジュールと、を含む。
本開示の例示的な実施形態によれば、マージリクエストのマージアドレスの範囲が所定の閾値を超えていないと判定されたことに対応して、マージリクエストを生成するように構成された閾値モジュールをさらに含む。
本開示の例示的な実施形態によれば、実行モジュール740は、1組のアクセスリクエストのアクセスタイプが読み出しタイプであると判定されたことに対応して、記憶装置におけるマージアドレスからデータを読み出すように構成されたデータ読み出しモジュールと、第1のアクセスリクエストのアドレスと第2のアクセスリクエストのアドレスとに基づいて、読み出したデータから、第1のアクセスリクエストに関連する第1のデータと第2のアクセスリクエストに関連する第2のデータをそれぞれ確定するように構成されたデータ確定モジュールと、それぞれ第1のデータを第1のアクセスリクエストにリターンし、第2のデータを第2のアクセスリクエストにリターンするように構成されたデータリターンモジュールと、を含む。
本開示の例示的な実施形態によれば、実行モジュール740は、1組のアクセスリクエストのアクセスタイプが書き込みタイプであることに応じて、第1のアクセスリクエストにおける第1のデータと第2のアクセスリクエストにおける第2のデータに基づいて、マージデータを生成するように構成されたデータマージモジュールと、記憶装置におけるマージアドレスへのマージデータの書き込みに応じて、第1のアクセスリクエストと第2のアクセスリクエストそれぞれに第1の応答と第2の応答をリターンするように構成された書き込み応答モジュールと、を含む。
本開示の例示的な実施形態によれば、1組のアクセスリクエストにおける少なくとも一部のアクセスリクエストを除くその他のアクセスリクエストに基づいて、記憶装置に対してデータアクセス操作を実行するように構成されたリクエスト実行モジュールをさらに含む。
本開示の例示的な実施形態によれば、取得モジュールは、記憶装置へアクセスするためのアクセスリクエストが記憶されている循環連結リストから1組のアクセスリクエストを取得するように構成されたリクエスト取得モジュールを含む。
本開示の例示的な実施形態によれば、所定の時間間隔内で、循環連結リストから、閾値数以下の数の1組のアクセスリクエストを選択するように構成されたリクエスト選択モジュールをさらに含む。
本開示の例示的な実施形態によれば、1組のアクセスリクエストが処理されたことを示すように、循環連結リストのポインタを修正するように構成された修正モジュールをさらに含む。
図8は、本開示の複数の実施形態を実施可能なコンピューティングデバイス800のブロック図を示している。デバイス800は、図3に説明された方法を実施するために使用され得る。図示するように、デバイス800は、読み取り専用メモリ(ROM)802に記憶されたコンピュータプログラムコマンドまたは記憶ユニット808からランダムアクセスメモリ(RAM)803にロードされたコンピュータプログラムコマンドにより、様々な適切な動作および処理を実行できる中央処理ユニット(CPU)801を含み得る。RAM803には、デバイス800の動作に必要な各種プログラムやデータも記憶され得る。CPU801、ROM802、およびRAM803は、バス804を介して相互に接続されている。入出力(I/O)インターフェース805もバス804に接続されている。
I/Oインターフェース805には、キーボード、マウスなどの入力ユニット806と、様々なタイプのディスプレイ、スピーカなどの出力ユニット807と、磁気ディスク、光ディスクなどの記憶ユニット808と、ネットワークカード、モデム、無線通信トランシーバーなどの通信ユニット809とを含むデバイス800の複数のコンポーネントが接続されている。通信ユニット809により、デバイス800は、インターネットなどのコンピュータネットワークおよび/または様々な電気通信ネットワークを介して、他のデバイスと情報/データを交換することができる。
処理ユニット801は、上述した方法300のような様々な方法および処理を実行する。例えば、いくつかの実施形態では、方法300は、記憶ユニット808などの機械可読媒体に有形的に含まれるコンピュータソフトウェアプログラムとして実施することができる。いくつかの実施形態では、コンピュータプログラムの一部または全ては、ROM802および/または通信ユニット809を介してデバイス800にロードおよび/またはインストールされることができる。コンピュータプログラムがRAM803にロードされ、CPU801によって実行されると、上述した方法300の1つまたは複数のステップを実行することができる。あるいは、他の実施形態では、CPU801は、他の任意の適切な方法を通じて(例えば、ファームウェアを介して)方法300を実行するように構成されることができる。
本開示の例示的な実施形態によれば、コンピュータプログラムが格納されたコンピュータ可読記憶媒体が提供される。プログラムがプロセッサによって実行されると、本開示で説明した方法を実施する。
本明細書で説明した機能は、少なくとも部分的に1つまたは複数のハードウェアロジックコンポーネントによって実行されることができる。例えば、採用できる汎用型のハードウェアロジックコンポーネントには、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)、コンプレックスプログラマブルロジックデバイス(CPLD)などが含まれる。
本開示の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサまたはコントローラに提供されることができる。これらのプログラムコードがプロセッサまたはコントローラによって実行されると、フローチャートおよび/またはブロック図に規定された機能または操作が実施される。プログラムコードは、完全にデバイス上で実行されることも、部分的にデバイス上で実行されることも、スタンドアロンソフトウェアパッケージとして部分的にデバイス上で実行されながら部分的にリモートデバイス上で実行されることも、または完全にリモートデバイスもしくはサーバ上で実行されることも可能である。
本開示のコンテキストでは、機械可読媒体は、有形の媒体であってもよい。それは、命令実行システム、装置またはデバイスが使用するため、または命令実行システム、装置またはデバイスと組み合わせて使用するためのプログラムを含むか、または格納することができる。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であり得る。機械可読媒体は、電子的、磁気的、光学的、電磁的、赤外線、または半導体システム、装置またはデバイス、またはこれらの任意の適切な組み合わせを含むことができるが、これらに限定されない。機械可読記憶媒体のより具体的な例には、1本または複数本のケーブルに基づく電気的接続、携帯型コンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、コンパクトディスク読み取り専用メモリ(CD‐ROM)、光学記憶装置、磁気記憶装置、または上記の任意の適切な組み合わせが含まれ得る。
また、各操作は特定の順序で示されているが、所望の結果を得られるために、このような操作は示された特定の順序にてまたは順を追って実行されることを要求するか、または、図に示されたすべての操作が実行されることを要求するものと理解されるべきである。特定の環境では、マルチタスクと並列処理が有利である可能性がある。同様に、上記ではいくつかの具体的な実施詳細を説明したが、これらは本開示の範囲への制限と解釈されるべきではない。個別の実施形態のコンテキストで説明された、いくつかの特徴は、単一の実施において組み合わせて実施されることもできる。逆に、単一の実施のコンテキストで説明された様々な特徴は、複数の実施において、個別にまたは任意の適切なサブセットで実施されることもできる。
本主題は、構造特徴および/または方法のロジック動作に特定された言語で記述されたが、特許請求の範囲内に限定される主題が、必ずしも上記に記載された特定の特徴または動作に限定されるものではないことを理解されたい。逆に、上述した特定の特徴および動作は、特許請求の範囲を実施するための例示的な形態にすぎない。
以下、図2を参照しながら、本開示の例示的な実施形態についてより詳しく説明する。図2は、本開示の例示的な実施形態に係る、アクセスリクエストを管理するための技術的解決手段のブロック図200を概略的に示している。図2に示されるように、1組のアクセスリクエスト140は、受信した記憶装置120へのアクセスのための各アクセスリクエストを含むことができる。例えば、1組のアクセスリクエスト140は、アクセスリクエスト210、212、214、216などを含むことができる。本開示の例示的な実施形態によれば、記憶装置120に対するドライバ230においてマージプロセスを実施することができる。図2に示されるように、例えば、連続アドレス空間へのアクセスリクエスト214と216をマージして、新たなマージリクエスト220を形成することができる。
図6Bは、本開示の例示的な実施形態に係る、記憶装置へデータを書き込み、および2つの書き込みリクエストそれぞれに、応答をリターンするプロセスのブロック図600Bを概略的に示している。図6Bに示されるように、データ610Bが記憶装置120に書き込まれるように、記憶装置120に対してマージリクエスト520Bを実行することができる。次に、マージリクエスト520Bの実行が成功した場合、アクセスリクエスト510Bがうまく実行されたことを示す第1の応答620Bを該アクセスリクエスト510Bに提供することができる。また、アクセスリクエスト512Bがうまく実行されたことを示す第2の応答62Bを該アクセスリクエスト512Bに提供することもできる。

Claims (22)

  1. アクセスリクエストを管理するための方法であって、
    コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、前記記憶装置における1組のアドレスに対するアクセス操作をそれぞれ示す1組のアクセスリクエストを取得するステップと、
    前記1組のアドレスのそれぞれの、前記記憶装置におけるアドレス範囲に基づいて、前記1組のアドレスをソートするステップと、
    ソートされた前記1組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するステップと、
    前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップと、を含み、
    前記方法は前記記憶装置のドライバにおいて実施され、前記ドライバは前記コンピューティングシステムのユーザモードにおいて実施される、アクセスリクエストを管理するための方法。
  2. ソートされた前記1組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するステップは、
    前記少なくとも一部のアクセスリクエストが同一のアクセスタイプを有すると判定されたことに応じて、前記マージリクエストを生成することを含み、ここで、前記アクセスタイプは、読み出しタイプと書き込みタイプを含む、請求項1に記載の方法。
  3. ソートされた前記1組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するステップは、
    前記少なくとも一部のアクセスリクエストにおいて、連続するアドレスを有する第1のアクセスリクエストと第2のアクセスリクエストを確定することと、
    前記第1のアクセスリクエストのアドレスの開始アドレスと、前記第2のアクセスリクエストのアドレスの終了アドレスとに基づいて、前記マージリクエストのマージアドレスを確定することと、を含む、請求項1に記載の方法。
  4. 前記マージリクエストの前記マージアドレスの範囲が所定の閾値を超えていないと判定されたことに応じて、前記マージリクエストを生成するステップをさらに含む、請求項3に記載の方法。
  5. 前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップは、
    前記1組のアクセスリクエストのアクセスタイプが読み出しタイプであると判定されたことに応じて、前記記憶装置における前記マージアドレスからデータを読み出すことと、
    前記第1のアクセスリクエストの前記アドレスと前記第2のアクセスリクエストの前記アドレスとに基づいて、読み出された前記データから、前記第1のアクセスリクエストに関連する第1のデータと前記第2のアクセスリクエストに関連する第2のデータをそれぞれ確定することと、
    それぞれ前記第1のデータを前記第1のアクセスリクエストにリターンし、前記第2のデータを前記第2のアクセスリクエストにリターンすることと、を含む、請求項3に記載の方法。
  6. 前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップは、
    前記1組のアクセスリクエストのアクセスタイプが書き込みタイプであると判定されたことに応じて、前記第1のアクセスリクエストにおける第1のデータと前記第2のアクセスリクエストにおける第2のデータに基づいて、マージデータを生成することと、
    前記マージデータが前記記憶装置における前記マージアドレスに書き込まれたことに応じて、前記第1のアクセスリクエストと前記第2のアクセスリクエストに第1の応答と第2の応答をそれぞれリターンすることと、を含む、請求項3に記載の方法。
  7. 前記1組のアクセスリクエストのうち、前記少なくとも一部のアクセスリクエストを除くその他のアクセスリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するステップをさらに含む、請求項1に記載の方法。
  8. コンピューティングシステム内の記憶装置に対してデータアクセスを行うための1組のアクセスリクエストを取得するステップは、
    前記記憶装置へアクセスするためのアクセスリクエストが記憶されている循環連結リストから前記1組のアクセスリクエストを取得することを含む、請求項1に記載の方法。
  9. 所定時間間隔内で、前記循環連結リストから、閾値数よりも高くない数の前記1組のアクセスリクエストを選択するステップをさらに含む、請求項8に記載の方法。
  10. 前記1組のアクセスリクエストが処理されたことを示すように、前記循環連結リストのポインタを修正するステップをさらに含む、請求項8に記載の方法。
  11. アクセスリクエストを管理するための装置であって、
    コンピューティングシステム内の記憶装置に対してデータアクセスを行うための、前記記憶装置における1組のアドレスに対するアクセス操作をそれぞれ示す1組のアクセスリクエストを取得するように構成された取得モジュールと、
    前記1組のアドレスのそれぞれの、前記記憶装置におけるアドレス範囲に基づいて、前記1組のアドレスをソートするように構成されたソートモジュールと、
    ソートされた前記1組のアクセスリクエストのうち、連続するアドレスを有する少なくとも一部のアクセスリクエストに基づいて、マージリクエストを生成するように構成された生成モジュールと、
    前記マージリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するように構成された実行モジュールと、を含み、
    前記装置は、前記記憶装置のドライバにおいて実施され、前記ドライバは前記コンピューティングシステムのユーザモードにおいて実施される、アクセスリクエストを管理するための装置。
  12. 前記ソートモジュールは、
    前記少なくとも一部のアクセスリクエストが同一のアクセスタイプを有すると判定されたことに応じて、前記マージリクエストを生成するように構成されたマージモジュールを含み、ここで、前記アクセスタイプは、読み出しタイプと書き込みタイプを含む、請求項11に記載の装置。
  13. 前記ソートモジュールは、
    前記少なくとも一部のアクセスリクエストにおいて、連続するアドレスを有する第1のアクセスリクエストと第2のアクセスリクエストを確定するように構成されたリクエスト確定モジュールと、
    前記第1のアクセスリクエストのアドレスの開始アドレスと、前記第2のアクセスリクエストのアドレスの終了アドレスとに基づいて、前記マージリクエストのマージアドレスを確定するように構成されたアドレス確定モジュールと、を含む、請求項11に記載の装置。
  14. 前記マージリクエストの前記マージアドレスの範囲が所定の閾値を超えていないと判定されたことに応じて、前記マージリクエストを生成するように構成された閾値モジュールをさらに含む、請求項13に記載の装置。
  15. 前記実行モジュールは、
    前記1組のアクセスリクエストのアクセスタイプが読み出しタイプであると判定されたことに応じて、前記記憶装置における前記マージアドレスからデータを読み出すように構成されたデータ読み出しモジュールと、
    前記第1のアクセスリクエストの前記アドレスと前記第2のアクセスリクエストの前記アドレスとに基づいて、読み出した前記データから、前記第1のアクセスリクエストに関連する第1のデータと前記第2のアクセスリクエストに関連する第2のデータをそれぞれ確定するように構成されたデータ確定モジュールと、
    それぞれ前記第1のデータを前記第1のアクセスリクエストにリターンし、前記第2のデータを前記第2のアクセスリクエストにリターンするように構成されたデータリターンモジュールと、を含む、請求項13に記載の装置。
  16. 前記実行モジュールは、
    前記1組のアクセスリクエストのアクセスタイプが書き込みタイプであることに応じて、前記第1のアクセスリクエストにおける第1のデータと前記第2のアクセスリクエストにおける第2のデータに基づいて、マージデータを生成するように構成されたデータマージモジュールと、
    前記マージデータが前記記憶装置における前記マージアドレスに書き込まれたことに応じて、前記第1のアクセスリクエストと前記第2のアクセスリクエストに第1の応答と第2の応答をそれぞれリターンするように構成された書き込み応答モジュールと、を含む、請求項13に記載の装置。
  17. 前記1組のアクセスリクエストのうち、前記少なくとも一部のアクセスリクエストを除くその他のアクセスリクエストに基づいて、前記記憶装置に対してデータアクセス操作を実行するように構成されたリクエスト実行モジュールをさらに含む、請求項11に記載の装置。
  18. 前記取得モジュールは、
    前記記憶装置へアクセスするためのアクセスリクエストが記憶されている循環連結リストから前記1組のアクセスリクエストを取得するように構成されたリクエスト取得モジュールを含む、請求項11に記載の装置。
  19. 所定時間間隔内で、前記循環連結リストから、閾値数よりも高くない数の前記1組のアクセスリクエストを選択するように構成されたリクエスト選択モジュールをさらに含む、請求項18に記載の装置。
  20. 前記1組のアクセスリクエストが処理されたことを示すように、前記循環連結リストのポインタを修正するように構成された修正モジュールをさらに含む、請求項18に記載の装置。
  21. 1つまたは複数のプロセッサと、
    1つまたは複数のプログラムを格納するための記憶装置であって、前記1つまたは複数のプログラムが前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに請求項1〜10のいずれか1項に記載の方法を実施させる記憶装置と、
    を備えるアクセスリクエストを管理するための装置。
  22. コンピュータプログラムが格納されているコンピュータ可読媒体であって、
    前記プログラムがプロセッサによって実行されると、請求項1〜10のいずれか1項に記載の方法を実施するコンピュータ可読媒体。
JP2020003206A 2019-05-24 2020-01-10 アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体 Active JP7039631B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910440376.7A CN110187835B (zh) 2019-05-24 2019-05-24 用于管理访问请求的方法、装置、设备和存储介质
CN201910440376.7 2019-05-24

Publications (2)

Publication Number Publication Date
JP2020194524A true JP2020194524A (ja) 2020-12-03
JP7039631B2 JP7039631B2 (ja) 2022-03-22

Family

ID=67717638

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020003206A Active JP7039631B2 (ja) 2019-05-24 2020-01-10 アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体

Country Status (4)

Country Link
US (1) US11474712B2 (ja)
JP (1) JP7039631B2 (ja)
KR (1) KR102236419B1 (ja)
CN (1) CN110187835B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948279A (zh) * 2019-11-26 2021-06-11 伊姆西Ip控股有限责任公司 管理存储系统中的访问请求的方法、设备和程序产品
CN111176566B (zh) * 2019-12-25 2023-09-19 山东方寸微电子科技有限公司 一种支持queue命令的eMMC读写控制方法及存储介质
CN112015672A (zh) * 2020-08-28 2020-12-01 北京浪潮数据技术有限公司 一种存储系统中数据处理方法、装置、设备及存储介质
CN112712167B (zh) * 2020-12-31 2024-07-05 北京清微智能科技有限公司 支持多种卷积神经网络加速的存储器访问方法及系统
CN113553292B (zh) * 2021-06-28 2022-04-19 睿思芯科(深圳)技术有限公司 一种向量处理器及相关数据访存方法
CN114416178A (zh) * 2021-12-16 2022-04-29 北京小米移动软件有限公司 数据访问方法、装置及非临时性计算机可读存储介质
US20240078017A1 (en) * 2022-09-01 2024-03-07 Advanced Micro Devices, Inc. Memory controller and near-memory support for sparse accesses
CN118245406A (zh) * 2024-05-27 2024-06-25 广东匠芯创科技有限公司 数据访问方法和系统、psram控制器、存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0991098A (ja) * 1995-09-27 1997-04-04 Nec Software Ltd デバイスドライバアクセス方式
US20100180086A1 (en) * 2009-01-14 2010-07-15 International Business Machines Corporation Data storage device driver
JP2015505091A (ja) * 2011-12-13 2015-02-16 エーティーアイ・テクノロジーズ・ユーエルシーAti Technologies Ulc キャッシュのプレローディングにgpuコントローラを使用するための機構
JP2015526806A (ja) * 2012-08-17 2015-09-10 インテル コーポレイション 共有仮想メモリ

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774682A (en) * 1995-12-11 1998-06-30 International Business Machines Corporation System for concurrent cache data access by maintaining and selectively merging multiple ranked part copies
JPH09269927A (ja) * 1996-03-29 1997-10-14 Mitsubishi Electric Corp バスアクセス方法、バス、並びにバス接続システム
CA2415888C (en) * 2000-08-04 2008-10-21 Avaya Technology Corporation Intelligent demand driven recognition of url objects in connection oriented transactions
US6944731B2 (en) * 2001-12-19 2005-09-13 Agere Systems Inc. Dynamic random access memory system with bank conflict avoidance feature
US8289984B2 (en) 2003-01-13 2012-10-16 Emlilex Design & Manufacturing Corporation Allocation-unit-based virtual formatting methods and devices employing allocation-unit-based virtual formatting methods
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8898417B1 (en) * 2009-10-20 2014-11-25 Micron Technology, Inc. Block-based storage device with a memory-mapped interface
US8650354B2 (en) * 2011-07-22 2014-02-11 International Business Machines Corporation Prefetching tracks using multiple caches
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US20150213047A1 (en) * 2014-01-24 2015-07-30 Netapp Inc. Coalescing sequences for host side deduplication
CN105280215B (zh) * 2014-06-09 2018-01-23 华为技术有限公司 动态随机存取存储器dram的刷新方法、设备以及系统
CN105320462A (zh) * 2014-07-08 2016-02-10 广明光电股份有限公司 固态硬盘存取数据的方法
US20160062911A1 (en) * 2014-08-27 2016-03-03 Advanced Micro Devices, Inc. Routing direct memory access requests in a virtualized computing environment
CN104850502B (zh) * 2015-05-05 2018-03-09 华为技术有限公司 一种数据的访问方法、装置及设备
US10628233B2 (en) * 2016-12-30 2020-04-21 Samsung Electronics Co., Ltd. Rack-level scheduling for reducing the long tail latency using high performance SSDS
CN107635027B (zh) * 2017-09-27 2021-03-30 网易(杭州)网络有限公司 一种域名解析方法、介质、装置和计算设备
CN109725827B (zh) * 2017-10-27 2022-05-13 伊姆西Ip控股有限责任公司 管理存储系统的方法、系统和计算机程序产品
TWI685744B (zh) * 2018-09-06 2020-02-21 大陸商深圳大心電子科技有限公司 指令處理方法及使用所述方法的儲存控制器
US10908841B2 (en) * 2018-09-24 2021-02-02 Cisco Technology, Inc. Increasing throughput of non-volatile memory express over fabric (NVMEoF) via peripheral component interconnect express (PCIe) interface
US11429526B2 (en) * 2018-10-15 2022-08-30 Texas Instruments Incorporated Credit aware central arbitration for multi-endpoint, multi-core system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0991098A (ja) * 1995-09-27 1997-04-04 Nec Software Ltd デバイスドライバアクセス方式
US20100180086A1 (en) * 2009-01-14 2010-07-15 International Business Machines Corporation Data storage device driver
JP2015505091A (ja) * 2011-12-13 2015-02-16 エーティーアイ・テクノロジーズ・ユーエルシーAti Technologies Ulc キャッシュのプレローディングにgpuコントローラを使用するための機構
JP2015526806A (ja) * 2012-08-17 2015-09-10 インテル コーポレイション 共有仮想メモリ

Also Published As

Publication number Publication date
CN110187835B (zh) 2023-02-03
US11474712B2 (en) 2022-10-18
JP7039631B2 (ja) 2022-03-22
KR20200135718A (ko) 2020-12-03
CN110187835A (zh) 2019-08-30
KR102236419B1 (ko) 2021-04-08
US20200371696A1 (en) 2020-11-26

Similar Documents

Publication Publication Date Title
JP7039631B2 (ja) アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
WO2021254135A1 (zh) 任务执行方法及存储设备
US20170068574A1 (en) Multiple pools in a multi-core system
US20090165007A1 (en) Task-level thread scheduling and resource allocation
JP7282823B2 (ja) メモリアクセスリクエストスケジューリング方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム
US20130232495A1 (en) Scheduling accelerator tasks on accelerators using graphs
JP2016151852A (ja) 実行情報通知プログラム、情報処理装置および情報処理システム
CN108205469B (zh) 一种基于MapReduce的资源分配方法及服务器
CN111782147B (zh) 用于集群扩缩容的方法和装置
Clemente-Castelló et al. Performance model of mapreduce iterative applications for hybrid cloud bursting
Ouyang et al. Active SSD design for energy-efficiency improvement of web-scale data analysis
US11188532B2 (en) Successive database record filtering on disparate database types
CN110781159B (zh) Ceph目录文件信息读取方法、装置、服务器及存储介质
US8862786B2 (en) Program execution with improved power efficiency
JP6123487B2 (ja) 制御装置、制御方法及び制御プログラム
CN117093335A (zh) 分布式存储系统的任务调度方法及装置
US10089265B2 (en) Methods and systems for handling interrupt requests
US20160335321A1 (en) Database management system, computer, and database management method
US8762776B2 (en) Recovering from a thread hang
US10747446B2 (en) Computer system and storage device activation control method
Zhou et al. ApproxSSD: Data layout aware sampling on an array of SSDs
US20240320035A1 (en) Task analysis device and operating method thereof
KR20240143619A (ko) 태스크 분석 장치 및 그것의 동작 방법
CN118672778A (zh) 一种处理器调度规则设置方法及计算设备

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200304

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210406

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210706

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210831

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211227

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20211227

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220117

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20220118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220309

R150 Certificate of patent or registration of utility model

Ref document number: 7039631

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150