JP2017027479A - データ読出し方法及び情報処理システム - Google Patents

データ読出し方法及び情報処理システム Download PDF

Info

Publication number
JP2017027479A
JP2017027479A JP2015147261A JP2015147261A JP2017027479A JP 2017027479 A JP2017027479 A JP 2017027479A JP 2015147261 A JP2015147261 A JP 2015147261A JP 2015147261 A JP2015147261 A JP 2015147261A JP 2017027479 A JP2017027479 A JP 2017027479A
Authority
JP
Japan
Prior art keywords
data
command
read command
memory
address
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.)
Pending
Application number
JP2015147261A
Other languages
English (en)
Inventor
風間 哲
Satoru Kazama
哲 風間
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015147261A priority Critical patent/JP2017027479A/ja
Priority to US15/202,695 priority patent/US10101946B2/en
Publication of JP2017027479A publication Critical patent/JP2017027479A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits

Abstract

【課題】データ先読みコマンドの実行により通常のデータ読出しコマンドの実行遅延を抑制するデータ読出し方法及び情報処理システムを提供する。【解決手段】データ通常読出しコマンドを保持する第1コマンドキューと、データ先読みコマンドを保持する第2コマンドキューとを個別に設け、第1コマンドキューにコマンドが保持されているコマンドを、第2コマンドキューに保持されているコマンドよりも優先して実行させる。【選択図】図7

Description

本開示は、データ読出し方法及び情報処理システムに関する。
サーバ等の情報処理装置がストレージ等の外部記憶装置にアクセスし、外部記憶装置に格納されているデータを読み出す際、データの読出しに要する時間を短縮することが望まれている。ストレージ内には、Hard Disk Drive(HDD)やフラッシュメモリ等の不揮発性メモリが設けられ、不揮発性メモリにデータが格納されている。一般に不揮発性メモリのデータ読出しに要する時間は、Dynamic Random Access Memory(DRAM)やStatic Random Access Memory(SRAM)等の揮発性メモリに比べて長い。例えばNAND型フラッシュメモリでは、ページ単位でのデータ読出しが行われ、1ページの読出しに例えば50μs程度の時間を要する。
不揮発性メモリからのデータ読出しに要する時間を短縮するための方法として、データ先読み又はデータの投機的読出しと呼ばれる処理が知られている。このデータ先読み処理は、例えばサーバがあるデータを不揮発性メモリから読み出す際、その後にサーバでの演算処理等に使用される可能性があると予測されるデータも併せて読み出し、サーバに設けられた揮発性メモリに保持しておく方法である。サーバは、データ先読み処理によってデータが予め揮発性メモリに保持されている場合には、不揮発性メモリへのデータ読出しを行うことなく、揮発性メモリに保持されたデータを使用することができ、演算処理の高速化を図ることができる。データ先読み処理の具体的な処理は、不揮発性メモリの第1アドレスを指定したデータ読出しコマンドがサーバから発行される際、サーバは、データ先読み処理の対象となる第2アドレスを特定する。そして第1アドレスを読出し対象とする通常のデータ読出しコマンドと、第2アドレスを読出し対象とするデータ先読みコマンドが、サーバからストレージに対して発行される。ストレージは、通常のデータ読出しコマンド及びデータ先読みコマンドを実行し、不揮発性メモリから読み出されたデータをサーバへ送信する。
データ先読み処理において、先読みの対象アドレスを特定する方法として、例えばLook Aheadと呼ばれるアルゴリズムが知られている。Look Aheadは、通常のデータ読出しコマンドで指定されたアドレスに続く次のアドレスを、データ先読み処理の対象アドレスとして特定する方法である。
特開2001−12589号公報 特開2006−260067号公報 特開2010−191983号公報
データ先読み処理を実行する場合においては、サーバによって実際に使用されるデータを読み出すための通常のデータ読出しコマンドと、サーバによって使用されることが予測されるデータを読み出すためのデータ先読みコマンドが発行される。本開示は、データ先読みコマンドの実行により通常のデータ読出しコマンドの実行が遅延することを抑制することを目的とするものである。
開示のデータ読出し方法は、第1メモリの第1アドレスを指定する第1読出しコマンド生成要求に基づき、第1読出しコマンドを生成する工程と、前記第1読出しコマンド生成要求に基づき、前記第1メモリの、前記第1アドレスとは異なる第2アドレスを指定する第2読出しコマンドを生成する工程と、前記第2読出しコマンドを生成した後に、前記第1メモリの第3アドレスを指定する第2読出しコマンド生成要求に基づき、第3読出しコマンドを生成する工程と、前記第1読出しコマンド及び前記第3読出しコマンドに基づき、前記第1メモリの前記第1アドレスから第1データを、前記第1メモリの前記第3アドレスから第3データをそれぞれ読み出した後に、前記第2読出しコマンドに基づき、前記第1メモリの前記第2アドレスから第2データを読み出す工程とを有することを特徴とする。
データ先読みコマンドの実行により通常のデータ読出しコマンドの実行が遅延することを抑制することができる。
第1実施例におけるシステム構成を示す図である。 第1実施例におけるシステムのハードウェア構成例を示す図である。 第1実施例にて解決される課題を説明するための図である。 第1実施例におけるCPUの機能ブロックを示す図である。 第1実施例におけるコマンドのデータ構成例を示す図である。 第1実施例における保持データテーブルの内容例を示す図である。 第1実施例におけるストレージの機能ブロックを示す図である。 第1実施例におけるCPUによって実行される処理のフローチャートを示す図である。 第1実施例におけるメモリコントローラによって実行される処理のフローチャートを示す図である。 第1実施例におけるメモリコントローラによって実行される処理のフローチャートを示す図である。 第1実施例におけるCPUによって実行される処理のフローチャートを示す図である。 第2実施例におけるCPUの機能ブロック図を示す図である。 第2実施例における先読みリストテーブルの内容例を示す図である。 第2実施例におけるCPUによって実行される処理のフローチャートを示す図である。 第2実施例におけるCPUによって実行される処理のフローチャートを示す図である。 第2実施例の変形例におけるCPUによって実行される処理のフローチャートを示す図である。 第2実施例の変形例におけるCPUによって実行される処理のフローチャートを示す図である。
<第1実施例>
図1は、第1実施例におけるシステムの構成を示す図である。本実施例で開示されるシステムは、情報処理装置10とストレージ20を含む。情報処理装置10としてはサーバ等のホスト装置の他、Personal Computer(PC)等の端末装置も適用可能である。ストレージ20としてはSolid State Drive(SSD)やHDDが適用可能である。情報処理装置10は、データ処理を実行するデータ処理部11と、データ処理部11でのデータ処理に使用されるデータ又はデータ処理部11にて処理がなされたデータを保持するデータ保持部12を含む。ストレージ20は、データを格納するデータ格納部22と、データ格納部22へのデータ格納処理やデータ格納部22からのデータ読出しの処理を制御する制御部21とを含む。
図2は、第1実施例におけるシステムのハードウェア構成例を示す図である。情報処理装置10は、Central Processing Unit(CPU)100と、Read Only Memory(ROM)150と、DRAM160と、通信デバイス170と、インターフェースカード180と、バス190とを有する。CPU100は、ROM150に格納されたコンピュータプログラムをDRAM160にダウンロードして実行することにより、所定のデータ処理を行う。CPU100は、プロセッサチップの一例であり、Micro Control Unit(MCU)、Micro Processing Unit(MPU)、Digital Signal Processor(DSP)、Field Programmable Gate Array(FPGA)等がCPU100の代わりに用いられてもよい。
ROM150には、CPU100によって実行されるコンピュータプログラム等が格納される。ROM150は不揮発性メモリの一例であり、Mask Read Only Memory(マスクROM)や、Programable Read Only Memory(PROM)、フラッシュメモリ、Magnetoresistive Random Access Memory(MRAM)、Resistance Random Access Memory(RRAM)(登録商標)、Ferroelectric Random Access Memory(FeRAM)等が適用可能である。
DRAM160には、ROM150に格納されているコンピュータプログラムがダウンロードされる。またDRAM160は、CPU100によって処理されるデータを、ストレージ20から受信して保持する。DRAM160は揮発性メモリの一例であり、SRAMがDRAM160の代わりとして用いられてもよい。通信デバイス170は、情報処理装置10が他の情報処理装置とデータ通信を行うためのデバイスであり、無線通信デバイス又は有線通信デバイスを含み得る。バス190は、CPU100、ROM150、DRAM160、通信デバイス170を相互に接続し、互いのデータ通信の経路として機能する。インターフェースカード180は、バス190によりCPU100やDRAM160に接続される。インターフェースカード180は、ストレージ20に対してデータ読出しコマンド(リードコマンド)やデータ書込みコマンド(プログラムコマンド)等のコマンドを送信したり、ストレージ20から読み出されたデータを受信する。
一方のストレージ20は、メモリコントローラ200、フラッシュメモリ250A、250B及び250Cと、インターフェースカード260を含む。メモリコントーラ200は、例えばFPGAチップである。メモリコントローラ200は、FPGA以外にも、CPUやMCUを用いて実現されてもよい。フラッシュメモリ250A、250B及び250Cは、データを格納するための不揮発性メモリの一例であり、例えばNAND型フラッシュメモリである。但しNAND型フラッシュメモリ以外にも、NOR型フラッシュメモリや、マスクROM、PROM、MRAM、RRAM、FeRAM等も不揮発性メモリとして適用可能である。図2においては3つのチップのフラッシュメモリ250A、250B及び250Cが示されるが、これは不揮発性メモリのハードウェア構成の一例であり、不揮発性メモリのチップ数を限定するものではない。本実施例では、不揮発性メモリのチップの数を「チャネル」と呼び、フラッシュメモリ250Aが第1チャネル、フラッシュメモリ250Bが第2チャネル、フラッシュメモリ250Cが第3チャネルにそれぞれ対応するものとする。また本明細書の以降の部分において、図示された3つのフラッシュメモリの何れかを特定する意図のない場合は、単に「フラッシュメモリ250」と表記するものとする。各チャネルのフラッシュメモリ250において、例えば2112バイトのメモリセルが1つのページを構成する。また例えば64ページにより一つのブロックが構成される。NAND型フラッシュメモリの場合、データ消去はブロック単位で行われ、データ読出し及びデータ書込みはページ単位で行われる。
インターフェースカード260は、情報処理装置10から送信されたコマンドを受信する。メモリコントローラ200は、インターフェースカード260にて受信されたコマンドに基づき、フラッシュメモリ250に対して、データの読出し、データ書込み及びデータ消去等の処理を行う。またメモリコントローラ200は、フラッシュメモリ250から読み出されたデータを、インターフェースカード260を介して情報処理装置10へ送信する。
ここで、データ先読み処理の処理手順について説明する。CPU100は、自身がデータ処理を実行する際に使用するデータがDRAM160に保持されていない場合は、当該データをストレージ20から読み出してDRAM160に保持させる。この際、CPU100は、当該データが格納されているフラッシュメモリ250のアドレスを指定するデータ読出しコマンド(以下、「データ通常読出しコマンド」と呼ぶ)を発行する。また、CPU100は、データ通常読出しコマンドとは別に、CPU100でのデータ処理に用いられることが予想されるデータを投機的に読み出すための追加のデータ読出しコマンド(以下、「データ先読みコマンド」と呼ぶ)を発行する。一つのデータ通常読出しコマンドに対して発行されるデータ先読みコマンドの数は1つであってもよく複数であってもよい。本明細書の以降の部分において、「データ読出しコマンド」という表記は、「データ通常読出しコマンド」と「データ先読みコマンド」の両方を含む上位概念の文言として使用される。また「コマンド」という表記は、データ読出しコマンドや、その他データ書込みコマンド(プログラムコマンド)やデータ消去コマンド(イレースコマンド)等を含めた更なる上位概念の文言として使用される。
CPU100によって発行されたデータ通常読出しコマンド及びデータ先読みコマンドは、情報処理装置10のインターフェースカード180及びストレージ20のインターフェースカード260を介してメモリコントローラ200へ送信される。メモリコントローラ200は、データ通常読出しコマンドにて指定されたアドレスに格納されたデータをフラッシュメモリ250から読出す。例えばNAND型のフラッシュメモリでは、データの読出しはページ単位で実行される。1ページのデータ読出しには例えば50μs程度の時間がかかる。そのためメモリコントローラ200は、複数のデータ読出しコマンドを受信した場合は、これらのコマンドを例えば先入れ先出し型バッファ(First In First Out(FIFO)バッファ)に保持する。そしてメモリコントローラ200は、FIFOバッファに格納された複数のコマンドを順に実行し、実行中のコマンドの処理が終了するまで、他のコマンドをFIFOバッファにて待機させる。
図3は、第1実施例にて解決される課題を説明するための図である。例えば情報処理装置10が、フラッシュメモリ250の特定のアドレスに対するデータ通常読出しコマンドAを発行したとする。またこのデータ通常読出しコマンドAに付随して、データ先読みコマンドX及びデータ先読みコマンドYが発行されたものとする。データ通常読出しコマンドA、データ先読みコマンドX及びデータ先読みコマンドYは、メモリコントローラ200によってFIFOバッファに格納される。ここで、CPU100が更にデータ通常読出しコマンドBを発行したとする。データ通常読出しコマンドBは、データ先読みコマンドX及びデータ先読みコマンドYの次にFIFOバッファに格納され、実行の待ち状態となる。
データ先読みコマンドは、CPU100によるデータ処理に使用されることが確定したデータではないが、CPU100によって使用される可能性があると判断されたデータに対して、投機的に発行されるデータ読出しコマンドである。それゆえ、フラッシュメモリ250から読み出されてDRAM160に保持されても、実際にはCPU100によって利用されない場合もある。図3の(A)は、投機的に発行されたデータ先読みコマンドがFIFOバッファに入力されたがゆえに、実際にCPU100によって必要とされるデータを読み出すためのデータ通常読出しコマンドBの実行が待たされる様子を示している。図3の(A)に示される例では、例えばフラッシュメモリ250の1ページの読出しに50μsを要するとすると、データ通常読出しコマンドBは、データ先読みコマンドX及びデータ先読みコマンドYがFIFOバッファ内に存在しない場合に比べて、100μsの時間、実行が遅れることとなる。本実施例は、データ通常読出しコマンドの実施が、データ先読みコマンドの実行により遅延することを抑制するためのものである。
本実施例においては、データ先読みコマンドが発行された後にデータ通常読出しコマンドが発行された場合、データ先読みコマンドがFIFOバッファ内で実行待ちである状態であれば、データ先読みコマンドの実行よりも、データ通常読出しコマンドが優先して実行される。図3の(B)は、データ先読みコマンドX及びデータ先読みコマンドYよりもデータ通常読出しコマンドBが優先して実行される様子を示すものである。図3の(B)に示された例では、図3の(A)に示された例に比べて早いタイミングで、データ通常読出しコマンドBが実行されることになる。
図4は、第1実施例におけるCPU100の機能ブロックを示す図である。CPU100は、例えばROM150からDRAM160にロードされたコンピュータプログラムを実行することにより、演算処理部102、コマンド生成要求部104、コマンド生成要求受信部111、コマンド生成部112、データ先読みコマンド生成部113、コマンド送信部114及びDRAM制御部115として機能する。図4においては、演算処理部102は、例えばアプリケーション層101により実現される。コマンド生成要求部104は、Operating System(OS)105の例えばファイルシステム103により実現される。コマンド生成要求受信部111、コマンド生成部112、データ先読みコマンド生成部113、コマンド送信部114及びDRAM制御部115は、OS105の例えばデバイスドライバ110により実現される。またCPU100は、アドレス変換テーブル131及び保持データテーブル132を保持する。
演算処理部102は、DRAM160に保持されたデータに基づく演算処理を実行する。コマンド生成要求部104は、演算処理部102の演算処理に使用されるデータをストレージ20から読み出すために、データ読出しコマンドの生成をコマンド生成要求受信部111に対して要求する。コマンド生成要求受信部111は、コマンド生成要求部104からデータ読出しコマンドの生成要求を受けると、コマンド生成部112及びデータ先読みコマンド生成部113に対してデータ通常読出しコマンド及びデータ先読みコマンドの生成を指示する。コマンド生成部112は、コマンド生成要求部104によって要求されたデータを読み出すためのデータ通常読出しコマンドを発行する。一方、データ先読みコマンド生成部113は、コマンド生成要求部104によって要求されたデータとは別のデータであって、演算処理部102によって使用されることが予測されるデータを読み出すためのデータ先読みコマンドを生成する。使用されるデータをどのようにして予測するかについては、様々なアルゴリズムの適用が可能である。例えばLook Aheadと呼ばれる方法に基づき、データ通常読出しコマンドにより指定されるアドレスの次のアドレス、例えばNAND型フラッシュメモリにおいては、データ通常読出しコマンドで指定されるページの次のページをアドレス指定する方法が、一例として挙げられる。
尚、コマンド生成部112及びデータ先読みコマンド生成部113がそれぞれデータ通常読出しコマンド及びデータ先読みコマンドを発行する際、演算処理部102が管理するアドレス(以下、「論理アドレス」と呼ぶ)は、ストレージ20の管理するアドレス(以下、「フラッシュメモリアドレス」と呼ぶ)に変換される。アドレス変換テーブル131は、論理アドレスとフラッシュメモリアドレスの対応関係を保持する。コマンド生成部112及びデータ先読みコマンド生成部113はそれぞれコマンドを発行する際、アドレス変換テーブル131を参照することによりフラッシュメモリ250のアドレス、例えばチャネル、ブロック及びページを特定する情報を、コマンドに含ませる。コマンド生成部112及びデータ先読みコマンド生成部113によって生成されたコマンドは、コマンド送信部114を介してストレージ20へ送信される。
図4に示されるその他の機能ブロックの説明の前に、図5及び図6の説明を行う。図5は、コマンド生成部112及びデータ先読みコマンド生成部113にて発行されるコマンドのデータ構成例を示す図である。コマンドは、「コマンドID」、「コマンドタイプ」、「フラッシュメモリアドレス」、「DRAMアドレス」及び「データ先読みコマンドタグ」をそれぞれ格納する領域を含む。「コマンドID」は、各コマンドを互いに識別するための識別子であり、コマンド毎に個別の識別子が付される。「コマンドタイプ」は、コマンドの種別を示す情報である。フラッシュメモリ250の対するコマンドの種別としては、例えばデータ読出しコマンド、データ書込みコマンド、データ消去コマンド等が挙げられる。データ通常読出しコマンド及びデータ先読みコマンドにおいては、コマンドの「コマンドタイプ」の領域に、当該コマンドがデータの読出しを要求するコマンドであることを示す情報が登録される。データ読出しコマンドにおいては、コマンドの「フラッシュメモリアドレス」の領域に、読出し対象のデータが格納されているフラッシュメモリ250のアドレスを特定する情報が登録される。例えば、複数のチャネルのうちの何れかのチャネルを特定するためのチャネル情報と、当該チャネルに含まれる複数のブロックのうちの何れかのブロックを特定するためのブロック情報と、当該ブロックに含まれる複数のページのうちの何れかのページを特定するページ情報とが、コマンドの「フラッシュメモリアドレス」の領域に含まれる。またコマンドがデータ読出しコマンドである場合は、コマンドの「DRAMアドレス」の領域に、フラッシュメモリ250から読み出されたデータをDRAM160のどのアドレスに格納するかを特定するためのアドレス(以下、「DRAMアドレス」と呼ぶ)が登録される。また、コマンドの「データ先読みコマンドタグ」の領域には、当該コマンドがデータ先読みコマンドであるか他のコマンドであるかを識別するためのタグが登録される。データ先読みコマンドタグをコマンドに含ませる代わりに、当該コマンドがデータ先読みコマンドであるか否かが分かるようにコマンドIDが設定されてもよい。
図6は、保持データテーブル132の内容例を示す図である。保持データテーブル132には、「コマンドID」、「論理アドレス」、「DRAMアドレス」及び「完了フラグ」に関する情報が格納され得る。コマンド生成部112及びデータ先読みコマンド生成部113は、データ通常読出しコマンド及びデータ先読みコマンドをそれぞれ生成した場合、生成されたコマンドのコマンドIDと、読出し対象となるデータの論理アドレス(以下、「読出し対象アドレス」と呼ぶ)と、読み出されたデータの保持領域を示すDRAMアドレスを、保持データテーブル132に書き込む。図6の(A)は、データ読出しコマンドが生成された場合に、関連する情報が登録された状態の保持データテーブル132の内容を例示する。例えばコマンド生成要求部104が、論理アドレス「a」についてのデータ読出しコマンドの生成要求を行い、コマンド生成部112が、論理アドレス「a」についてのデータ通常読出しコマンド(コマンドIDが「A」)を生成し、データ先読みコマンド生成部113が、論理アドレス「b」についてのデータ先読みコマンド(コマンドIDが「B」)を生成したとする。この場合、図6の(A)に示されるように、生成されたコマンド毎に、コマンドIDと論理アドレスとDRAMアドレスとが保持データテーブル132に登録される。尚、図6に示される「完了フラグ」の意義等については後述する。
図7は第1実施例におけるストレージ20の機能ブロックを示す図である。ストレージ20のメモリコントローラ200は、コマンド受信部202、チャネル選択部204、キュー選択部210A、210B及び210C(3つのキュー選択部の何れかを特定する意図のない場合は、単に「キュー選択部210」と表記する)、第1コマンドキュー212A、212B及び212C(3つの第1コマンドキューの何れかを特定する意図のない場合は、単に「第1コマンドキュー212」と表記する)、第2コマンドキュー215A、215B及び215C(3つの第2コマンドキューの何れかを特定する意図のない場合は、単に「第2コマンドキュー215」と表記する)、コマンド選択部220A、220B及び220C(3つのコマンド選択部の何れかを特定する意図のない場合は、単に「コマンド選択部220」と表記する)、コマンド実行部230A、230B及び230C(3つのコマンド実行部の何れかを特定する意図のない場合は、単に「コマンド実行部230」と表記する)、及びデータ送信部240として機能する。メモリコントローラ200がFPGAを用いて実装される場合は、FPGA内に設けられた再構成可能な複数のゲート(ゲートアレイ)を所望の接続状態とすることによって上述の各機能ブロックが実現される。またメモリコントローラ200がCPU等のプロセッサを用いて実装される場合は、上述の各機能ブロックは、プロセッサがコンピュータプログラムを実行することにより実現される。
コマンド受信部202は、図4にて示されたコマンド送信部114から送信されたコマンドを受信する。チャネル選択部204は、コマンド受信部202にて受信されたコマンドを、当該コマンドに含まれるチャネル情報に基づき、対応するチャネルを選択する。各チャネルにはそれぞれキュー選択部210、第1コマンドキュー212、第2コマンドキュー215、コマンド選択部220、コマンド実行部230が設けられる。チャネル選択部204によりチャネルが選択されたコマンドはキュー選択部210へ入力される。キュー選択部210は、当該コマンドのデータ先読みコマンドタグの有無に基づき、当該コマンドがデータ先読みコマンドであるか否かを判定する。そしてキュー選択部210は、当該コマンドがデータ先読みコマンドである場合は、当該コマンドを第2コマンドキュー215に入力する。また当該コマンドがデータ先読みコマンド以外のコマンド、例えばデータ通常読出しコマンドである場合は、当該コマンドを第1コマンドキュー212へ入力する。第1コマンドキュー212及び第2コマンドキュー215はそれぞれ、例えばFIFOバッファにより実現される。このように本実施例では、データ通常読出しコマンド等のコマンドを保持する第1コマンドキュー212とは別に第2コマンドキュー215が設けられ、データ先読みコマンドが選択的に第2コマンドキュー215に入力される。
次にコマンド選択部220は、第1コマンドキュー212と第2コマンドキュー215に蓄えらえているコマンドを選択して取り出し、コマンド実行部230に引き渡す。コマンド選択部220は、第1コマンドキュー212にコマンドが蓄積されている場合は、仮に第2コマンドキュー215にデータ先読みコマンドが蓄積されている場合であっても、第1コマンドキュー212に蓄積されているコマンドを優先的に選択して取り出す。コマンド選択部220にて選択されたコマンドはコマンド実行部230により実行される。コマンド実行部230は、コマンドに登録されたコマンドタイプを示す情報に基づき、コマンドを実行する。当該コマンドのコマンドタイプがデータ読出しである場合は、コマンド実行部230はフラッシュメモリ250からのデータの読出しを実行する。
コマンド選択部220は、第1コマンドキュー212に蓄積されているコマンドを全て処理し、第1コマンドキュー212が空の状態になった場合には、第2コマンドキュー215にデータ先読みコマンドが蓄積されているか否かを確認する。コマンド選択部220は、第2コマンドキュー215にデータ先読みコマンドが蓄積されている場合は、当該データ先読みコマンドを第2コマンドキュー215から取り出し、コマンド実行部230へ引き渡す。そしてデータ先読みコマンドがコマンド実行部230により実行され、フラッシュメモリ250からデータが読み出される。このように、データ通常読出しコマンドが、データ先読みコマンドの実行よりも優先的に実行されることにより、データ通常読出しコマンドの実行の遅延を抑制することができる。
フラッシュメモリ250から読み出されたデータは、データ送信部240を介して情報処理装置10へ送信される。データ送信部240から送信されるデータは、情報処理装置10から発行されたコマンドに含まれるDRAMアドレスの情報と共に送信される。またデータ送信部240は、コマンド実行完了通知を情報処理装置10へ送信する。
ここで図4の説明に戻り、DRAM制御部115は、ストレージ20のデータ送信部240から送信されたデータを受信する。そしてDRAM制御部115は、受信されたデータを、DRAM160の所定のアドレスに書き込む。またコマンド生成部112又はデータ先読みコマンド生成部113は、データ送信部240から送信されたコマンド実行完了通知に基づき、対応するコマンドについてデータ読出し処理が完了したことを示す完了フラグを保持データテーブル132に登録する。図6の(B)は、完了フラグが登録された状態の保持データテーブル132の内容を示す。コマンドIDが「A」であり、論理アドレスが「a」であるコマンドに関して、フラッシュメモリ250から読み出されたデータが、DRAMアドレスが「x」の領域に書込まれたことが、保持データテーブル132に記録される。
次に、論理アドレス「a」を指定するデータ読出しコマンドの生成要求がコマンド生成要求部104によってなされた場合における、情報処理装置10内における処理を説明する。
コマンド生成要求受信部111は、論理アドレス「a」についてのデータ読出しコマンドの生成要求を受信する。コマンド生成要求受信部111は、保持データテーブル132を参照し、論理アドレス「a」に対応するデータが、DRAM160に格納されているか否かを判定する。図6の(B)に示す例では、論理アドレス「a」に対応するデータが既にDRAM160に格納されているため、コマンド生成要求受信部111はDRAM制御部115に、DRAMアドレス「x」の領域に格納されているデータの読出しを指示する。DRAM制御部115はDRAM160にアクセスし、DRAMアドレス「x」の領域に保持されたデータを読出して演算処理部102へ引き渡す。これにより演算処理部102が論理アドレス「a」のデータを使用する際、データ読出しに要する時間が短縮される。
図8は、CPU100によって実行される処理のうち、主にコマンドの生成に関する処理のフローチャートを示す図である。図8に示される処理フローは処理1000により開始され、処理1002においてコマンド生成要求部104が、コマンド生成要求を発行する。処理1004においてコマンド生成要求受信部111が、コマンド生成要求を受信する。処理1006においてコマンド生成要求受信部111が、受信されたコマンド生成要求が、データ読出しを要求するものであるか否かを判定する。処理1006において、コマンド生成要求がデータ読出しを要求するものでないと判定された場合は、処理フローは処理1008へ進み、コマンド生成要求がデータ読出しを要求するものであると判定された場合は、処理フローは処理1010へ進む。処理1008においてコマンド生成部112は、コマンド生成要求の要求内容に従い、コマンド、例えばデータ書込みコマンドやデータ消去コマンドを生成する。処理フローが処理1006から処理1010へ進んだ場合は、処理1010においてコマンド生成要求受信部111が、保持データテーブル132にアクセスする。そして処理1012において、コマンド生成要求にて要求されるデータがDRAM160に保持されているか否かを判定する。処理1012において、要求されたデータがDRAM160に保持されていると判定された場合は、処理フローは処理1018へ進み、要求されたデータがDRAM160に保持されていないと判定された場合は、処理フローは処理1014へ進む。処理1018においてコマンド生成要求受信部111は、該当するデータのDRAM160からの読出しをDRAM制御部115へ指示する。この場合はコマンドの生成処理は行われず、処理1022にて処理フローが終了する。一方、処理フローが処理1012から処理1014へ進んだ場合は、処理1014においてコマンド生成部112が、データ通常読出しコマンドを生成する。更に、処理1016においてデータ先読みコマンド生成部113が、データ先読みコマンドを生成する。そして処理1020においてコマンド送信部114が、処理1008にて生成されたコマンド、または処理1014及び処理1016にて生成されたデータ通常読出しコマンド及びデータ先読みコマンドを送信し、処理1022にて処理フローが終了する。
図9は、メモリコントローラ200によって実行される処理のうち、主に第1コマンドキュー212及び第2コマンドキュー215へのコマンドの入力に関する処理のフローチャートを示す図である。図9における処理フローは処理1100により開始され、処理1102においてコマンド受信部202が、コマンド送信部114から送信されるコマンドが受信されたか否かを判定する。処理1102においてコマンドが受信されたと判定された場合は、処理フローは処理1104へ進み、コマンドが受信されたと判定されない場合は、コマンド受信部202が処理1102を繰り返し実行する。処理1104においてチャネル選択部204が、受信されたコマンドに含まれるチャネル情報に基づいてチャネルを選択し、選択されたチャネルに対応するキュー選択部210にコマンドを振り分ける。処理1106においてキュー選択部210が、コマンドに含まれるコマンドタイプ情報に基づき、当該コマンドがデータ読出しコマンドであるか否かを判定する。処理1106において、当該コマンドがデータ読出しコマンドであると判定された場合は、処理フローは処理1108へ進み、データ読出しコマンドではないと判定された場合は、処理フローは処理1112へ進む。処理フローが処理1112へ進んだ場合、処理1112においてキュー選択部210は、コマンドを第1コマンドキュー212に入力する。一方、処理フローが処理1108へ進んだ場合、処理1108においてキュー選択部210が、コマンドのデータ先読みコマンドタグに基づいて、当該コマンドがデータ先読みコマンドであるか否かを判定する。処理1108において、当該コマンドがデータ先読みコマンドではないと判定された場合は、処理フローは処理1112へ進み、当該コマンドがデータ先読みコマンドであると判定された場合は、処理フローは処理1110へ進む。処理1110においてキュー選択部210が、コマンドを第2コマンドキュー215に入力する。コマンドが第1コマンドキュー212又は第2コマンドキュー215に保持された後、処理フローは処理1102へ戻る。
図10は、メモリコントローラ200によって実行される処理のうち、主に第1コマンドキュー212及び第2コマンドキュー215に蓄えられたコマンドの選択及び実行に関する処理のフローチャートを示す図である。図10における処理フローは処理1200により開始され、処理1202においてコマンド選択部220が、第1コマンドキュー212にコマンドが蓄えられているか否かを判定する。処理1202において、第1コマンドキュー212にコマンドが蓄えられていると判定された場合は、処理フローは処理1204へ進み、第1コマンドキュー212にコマンドが蓄えられていないと判定された場合は、処理フローは処理1208へ進む。処理1204においてコマンド選択部220が、第1コマンドキュー212に蓄えられているコマンドのうち、キューの先頭にあるコマンドを選択して取り出す。そして処理1206においてコマンド実行部230が、処理1204にて選択されたコマンドを実行する。一方、処理フローが処理1202から処理1208へ進んだ場合は、処理1208においてコマンド選択部220が、第2コマンドキュー215にデータ先読みコマンドが蓄えられているか否かを判定する。処理1208において第2コマンドキュー215にデータ先読みコマンドが蓄えらえていると判定された場合は、処理フローは処理1210へ進み、第2コマンドキュー215にデータ先読みコマンドが蓄えられていないと判断された場合は、処理フローは処理1202へ戻る。処理1210においてコマンド選択部220が、第2コマンドキュー215に蓄えられているコマンドのうち、キューの先頭にあるデータ先読みコマンドを抽出する。そして処理1206においてコマンド実行部230がデータ先読みコマンドを実行する。処理1206の後、処理フローは処理1202へ戻る。
図11は、CPU100によって実行される処理のうち、主にDRAM160へのデータの書込みに関する処理のフローチャートを示す図である。図11の処理フローは処理1300により開始され、処理1302においてDRAM制御部115が、ストレージ20から受信したデータをDRAM160に書き込む。処理1304においてコマンド生成部112又はデータ先読みコマンド生成部113はストレージ20から受信したコマンド実行完了通知に基づき、保持データテーブル132に完了フラグを登録し、処理1306において処理フローが終了する。
このように、第1実施例によれば情報処理装置10は、コマンドが発行される際、当該コマンドがデータ先読みコマンドであるか否かを示すデータ先読みコマンドタグをコマンドに含める。コマンドを受信したストレージ20は、当該コマンドがデータ先読みコマンドであるか否かを判定する。ストレージ20は、受信したコマンドを、データ先読みコマンドとそれ以外のコマンドに分類し、それぞれに対して設けられたコマンドキューに入力する。データ先読みコマンド以外のコマンド用のキューである第1コマンドキュー212にコマンドが蓄積されている場合には、第1コマンドキュー212に蓄えられているコマンドが、データ先読みコマンド用のキューである第2コマンドキュー215に蓄えられているコマンドよりも優先して実行される。これにより、データ先読みコマンドの実行によってデータ通常読出しコマンドの実行が遅延することが抑制される。
<第2実施例>
第2実施例では、データ先読みコマンドによってフラッシュメモリ250から読み出されたデータが、その後実際に演算処理部102による演算に使用されたか否かを監視される。そして、データ先読みコマンドにより読み出されたデータ(以下、「先読みデータ」と呼ぶ)であって、実際には演算に使用されなかったデータについては、データ先読みコマンドの発行はその後行われない。これにより、不要なデータ先読みコマンドの発行が抑制される。
図12は、第2実施例におけるCPU100の機能ブロックを示す図である。第1実施例(図4)にて示された機能ブロックと同一の機能を有する機能ブロックについては、図4にて付された参照符号と同一の参照符号を付し、説明を省略する。CPU100は、図4に示された機能ブロックに加え、記録部121、監視部122、タイマ123、判定部124及びフラグリセット部125として機能する。またCPU100は先読みリストテーブル141を保持する。尚、第2実施例においてストレージ20には、第1実施例(図7)に示された機能ブロックと同一の機能ブロックが適用され得る。
図13は、先読みリストテーブル141の内容例を示す図である。先読みリストテーブル141には、「論理アドレス」と「書込み時刻」と「判定フラグ」が登録され得る。記録部121は、データ先読みコマンド生成部113がデータ先読みコマンドを生成した際、当該コマンドの読出し対象アドレスを、先読みリストテーブル141の「論理アドレス」の欄に記録する。また記録部121は、当該データ先読みコマンドに対してストレージ20から送信されたコマンド実行完了通知の受信時刻をタイマ123から取得し、取得された時刻を先読みリストテーブル141の「書込み時刻」の欄に記録する。図13の(A)には、論理アドレスが「a」、「b」及び「c」のデータについてそれぞれデータ先読みコマンドが発行されたことが記録されている。また、これらのデータ先読みコマンドの実行が完了したことを示すコマンド実行完了通知が、それぞれ「9時13分21.37秒」、「9時13分21.89秒」、「9時13分22.15秒」に、データ先読みコマンド生成部113によって受領されたことが記録されている。
データ先読みコマンドが発行された後、監視部122はフラッシュメモリ250から読み出されたデータが、実際に演算処理部102によって利用されたか否かを監視する。具体的には監視部122は、先読みリストテーブル141に登録されている内容と、コマンド生成要求受信部111にて受信されるコマンド生成要求と、タイマ123が計測する時刻とをモニターする。そして、コマンド生成要求にて読出しが要求されるデータの論理アドレスが、先読みリストテーブル141に記録されているか否かを判定する。該当する論理アドレスが先読みリストテーブル141に記録されている場合であって、先読みリストテーブル141に記録されている書込み時刻から所定時間(例えば1秒)が未だ経過していない場合は、先読みリストテーブル141から該当する論理アドレスを削除する。逆に、先読みリストテーブル141に記録されている書込み時刻から所定時間が経過しても、当該論理アドレスに対するデータ読出しコマンドの生成要求がなされない場合には、先読みリストテーブル141に判定フラグを登録する。言い換えれば、先読みリストテーブル141の判定フラグは、当該論理アドレスについてデータの先読み処理が行われたが、読み出されたデータは実際には演算処理部102による演算には使用されなかったことを意味する。図13の(B)は、図13(A)にて例示された先読みリストテーブル141の内容が更新された状態を示す図である。図13の(B)においては、論理アドレス「a」についてのデータの先読み処理が行われた後、所定時間内に論理アドレス「a」についてデータ読出しコマンドの生成要求がなされず、論理アドレス「a」の欄に判定フラグが登録されている様子を示している。一方、論理アドレス「b」についてデータの先読み処理が行われた後、所定時間内に論理アドレス「b」についてデータ読出しコマンドの生成要求がなされ、論理アドレス「b」がデータ先読みコマンドリステーブル141から削除されている。尚、論理アドレス「c」については、データの先読み処理が行われてからまだ所定時間が経過しておらず、判定フラグがまだ付されない状態である。
このように、使用実績のない論理アドレスが先読みリストテーブル141に過去実績として蓄積される。
次に、上述の方法で作成された先読みリストテーブル141の利用方法について説明する。コマンド生成要求部104がデータ読出しコマンドの生成要求を行い、コマンド生成要求受信部111が当該生成要求を受信する。データ先読みコマンド生成部113は当該生成要求に基づき、所定のアルゴリズムに基づいて先読みの対象となる論理アドレスを特定する。ここで判定部124は、特定された論理アドレスが、先読みリストテーブル141に記録されているか否かを判定する。特定された論理アドレスが先読みリストテーブル141に記録されており、かつ、当該論理アドレスに対して判定フラグが登録されている場合は、判定部124は、当該論理アドレスを対象としたデータ先読みコマンドの作成は不要であると判定する。そして判定部124は、データ先読みコマンド生成部113に、データ先読みコマンドの生成を行わないよう指示する。これにより、過去にデータ先読みコマンドにより読み出されたデータであって、実際には演算に使用されなかったデータに対する再度のデータ先読み処理が行われないようにすることができる。
図14は、第2実施例におけるCPU100により実施される処理のうち、主に監視部122によって実行される処理のフローチャートを示す図である。図14における処理フローは処理1400により開始され、処理1402において監視部122が、コマンド生成要求受信部111によりデータ読出しコマンドの生成要求が受信されたか否かを判定する。処理1402において、データ読出しコマンドの生成要求が受信されたと判定された場合は、処理フローは処理1404へ進み、データ読出しコマンドが受信されていないと判定された場合は、処理フローは処理1410へ進む。
まず、処理フローが処理1404へ進んだ場合について説明する。処理1404において監視部122は、受信された生成要求により指定される論理アドレスが、先読みリストテーブル141に記録されているか否かを判定する。処理1404において、指定された論理アドレスが先読みリストテーブル141に記録されていると判定された場合は、処理フローは処理1406へ進み、指定された論理アドレスが先読みリストテーブル141に記録されていないと判定された場合は、処理フローは処理1402へ戻る。処理1406において監視部122が、先読みリストテーブル141に登録された論理アドレスに判定フラグが登録されているか否かを判定する。処理1406において判定フラグが登録されていないと判定された場合は、処理フローは処理1408へ進み、判定フラグが登録されていると判定された場合は、処理フローは処理1402へ戻る。処理1408において監視部122が、該当する論理アドレスを先読みリストテーブル141から削除するよう記録部121に指示し、記録部121が先読みリストテーブル141から該当する論理アドレスを削除する。
一方、処理フローが処理1402から処理1410へ進んだ場合、処理1410において監視部122が、フラッシュメモリ250から読み出された後、利用されずに一定時間が経過した先読みデータがあるか否かを判定する。具体的には監視部122は、タイマ123が計測する時刻と、先読みリストテーブル141に記録された書込み時刻との差分に基づき、処理1410の判定を行う。処理1410において、利用されずに一定時間が経過した先読みデータはないと判定された場合は、処理フローは処理1402へ戻り、利用されずに一定時間が経過した先読みデータがあると判定された場合は、処理フローは処理1412へ進む。処理1412において監視部122は、利用されないで一定時間が経過した先読みデータの欄に判定フラグを登録するよう記録部121へ指示し、記録部121が先読みリストテーブル141に判定フラグを登録する。処理フローは、処理1412の後処理1402へ戻る。このようにして、先読みデータの利用実績が先読みリストテーブル141に蓄積され、その後のデータ先読みコマンドの生成の際に参照される。
図15は、第2実施例におけるCPU100によって実行される処理のうち、データ先読みコマンドの生成に関する処理のフローチャートを示す図である。図15に示される処理フローは、図8にて示された処理1016に相当する。処理フローは処理1500により開始され、処理1502においてデータ先読みコマンド生成部113が、先読みの対象となる論理アドレスを特定する。処理1504において判定部124が、処理1502において特定された論理アドレスが、先読みリストテーブル141に記録されているか否かを判定する。処理1504において、特定された論理アドレスが先読みリストテーブル141に記録されていると判定された場合は、処理フローは処理1506へ進み、特定された論理アドレスが先読みリストテーブル141に記録されていないと判定された場合は、処理フローは処理1510へ進む。処理1506において判定部124が、特定された論理アドレスに対して判定フラグが先読みリストテーブル141に登録されているか否かを判定する。処理1506において、判定フラグが登録されていると判定された場合は、処理フローは処理1520にて処理が終了する。この場合はデータ先読みコマンドは生成されない。また処理1506において、判定フラグが登録されていないと判定された場合は、処理フローは処理1510へ進む。処理1510においてデータ先読みコマンド生成部113は、データ先読みコマンドを生成し、処理フローは処理1520において終了する。
このように第2実施例では、データ先読みコマンドによりフラッシュメモリ250から読み出されたデータが、その後、演算処理部102によって使用されたか否かが監視される。データ先読み処理によりフラッシュメモリ250から読み出されたデータが、読み出された後の一定時間以内に演算処理部102による演算処理において使用されていない場合は、先読みデータの論理アドレスと判定フラグとが対応付けられて先読みリストテーブル141に記録される。そして、以降にその論理アドレスに対するデータ先読みコマンドの発行は行われない。これにより、使用される可能性の低いデータに対するデータ先読みコマンドの発行が抑制される。
次に、フラグリセット部125の機能および処理内容について説明する。フラグリセット部125は、コマンド生成部112からフラッシュメモリ250に対するデータ書込みコマンドが発行された場合、当該コマンドによってデータが書き換えられる論理アドレス及び判定フラグを、先読みリストテーブル141から削除する機能を有する。データ書込みコマンドが発行された場合は、フラッシュメモリ250に格納されるデータ内容は変更されるため、あるフラッシュメモリアドレスに格納されていたデータであって変更前のものについてなされた論理アドレス及び判定フラグはリセットされる。
ここまで第2実施例について説明した。次に第2実施例の変形例について説明する。第2実施例では、データ先読み処理が行われた後、一定時間内に使用されなかった先読みデータに関して、不使用であることを示す判定フラグが登録される例が開示された。第2実施例の変形例では、DRAM160の先読みデータが保持される領域から、先読みデータが消去された時点で判定フラグが登録される。
本変形例において、保持データテーブル132には、先読みデータがDRAM160に書込まれた時刻が記録される。保持データテーブル132に記録された時刻情報は、当該先読みデータが演算処理部102で使用された場合には、当該先読みデータが使用された時刻により上書きされる。DRAM制御部115は、新しくフラッシュメモリ250から読み出されてくる先読みデータを順次DRAM160に書き込む一方、DRAM160に書込まれてから時間が経過した古い先読みデータを順に消去する作業を行う。例えば、DRAM160のデータ保持領域のうち先読みデータ用に割り当てられた領域の空き容量が閾値以下となった場合、保持データテーブル132に記録された時刻情報によって特定される時刻からの経過時間が長いデータが順に消去される。またDRAM制御部115は、DRAM160から先読みデータを消去した場合には、保持データテーブル132の内容を更新する。すなわちDRAM160から先読みデータが消去された場合には、保持データテーブル132から対応する論理アドレスが削除される。
監視部122は、保持データテーブル132の内容をモニターする。例えば保持データテーブル132に記録されていた論理アドレス「a」が消去されたとする。この場合、監視部122は、先読みリストテーブル141にアクセスし、論理アドレス「a」が先読みリストテーブル141に記録されているか否かを判定する。論理アドレス「a」が先読みリストテーブル141に記録されていれば、論理アドレス「a」に対応して判定フラグを登録するよう、記録部121に指示する。これにより、論理アドレス「a」に対して判定フラグが登録される。また監視部122は、コマンド生成要求受信部111により受信されたコマンド生成要求を検出する。例えばコマンド生成要求受信部111が、論理アドレス「a」を指定するデータ読出しコマンドの生成要求を受信したとする。この場合、監視部122は、先読みリストテーブル141に論理アドレス「a」が記録されているか否かを判定する。論理アドレス「a」が先読みリストテーブル141に記録されている場合、監視部122は更に、論理アドレス「a」に対応して判定フラグが登録されているか否かを判定する。判定フラグが登録されていない場合は、監視部122は、論理アドレス「a」を先読みリストテーブル141から消去するよう、記録部121に指示する。これにより、論理アドレス「a」が先読みリストテーブル141から消去される。
図16は、第2実施例の変形例におけるCPU100によって実行される処理のうち、判定フラグの登録に関する処理のフローチャートを示す図である。処理フローは処理1600により開始され、処理1602において監視部122が、保持データテーブル132から消去された先読みデータがあるか否かを判定する。処理1602において、消去された先読みデータがあると判定された場合は、処理フローは処理1604へ進み、消去された先読みデータがないと判定された場合は、監視部122は処理1602を繰り返し実行する。処理1604において監視部122が、保持データテーブル132から消去された先読みデータに対応する論理アドレスが、先読みリストテーブル141に記録されているか否かを判定する。処理1604において、消去された先読みデータに対応する論理アドレスが先読みリストテーブル141に記録されていると判定された場合は、処理フローは処理1606へ進み、消去された先読みデータに対応する論理アドレスが先読みリストテーブル141に記録されていなと判定された場合は、処理フローは処理1602へ戻る。処理1606において監視部122が、先読みリストテーブル141に記録されている論理アドレスに対して判定フラグを登録するよう記録部121に指示し、記録部121が、判定フラグを登録する。処理フローは、処理1606の後、処理1602へ戻る。
図17は、第2実施例の変形例におけるCPU100によって実行される処理のうち、先読みリストテーブル141から論理アドレスを消去する処理のフローチャートを示す図である。処理フローは処理1700により開始され、処理1702において監視部122が、データ読出しコマンドの生成要求がコマンド生成要求受信部111によって受信されたか否かを判定する。処理1702において、データ読出しコマンドの生成要求が受信されたと判定された場合は、処理フローは処理1704へ進み、データ読出しコマンドの生成要求が受信されていないと判定された場合は、監視部122は処理1702を繰り返し実行する。処理1704において監視部122が、コマンド生成要求にて指定される論理アドレスが先読みリストテーブル141に記録されているか否かを判定する。処理1704において、コマンド生成要求にて指定される論理アドレスが記録されていると判定された場合は、処理フローは処理1706へ進み、コマンド生成要求にて指定される論理アドレスが記録されていないと判定された場合は、処理フローは処理1702へ戻る。処理1706において監視部122が、コマンド生成要求にて指定される論理アドレスに判定フラグが登録されているか否かを判定する。処理1706において、判定フラグが登録されていないと判定された場合は、処理フローは処理1708へ進み、判定フラグが登録されていると判定された場合は、処理フローは処理1702へ戻る。そして処理1708において監視部122が、先読みリストテーブル141に記録されている論理アドレスを消去するよう記録部121に指示し、記録部121が論理アドレスを先読みリストテーブル141から消去する。処理フローは、処理1708の後、処理1702へ戻る。
開示の実施例に基づき、更に以下の付記を開示する。
(付記1)
第1メモリの第1アドレスを指定する第1読出しコマンド生成要求に基づき、第1読出しコマンドを生成する工程と、
前記第1読出しコマンド生成要求に基づき、前記第1メモリの、前記第1アドレスとは異なる第2アドレスを指定する第2読出しコマンドを生成する工程と、
前記第2読出しコマンドを生成した後に、前記第1メモリの第3アドレスを指定する第2読出しコマンド生成要求に基づき、第3読出しコマンドを生成する工程と、
前記第2読出しコマンドに基づく前記第1メモリの前記第2アドレスからの第2データの読出しよりも先に、前記第1読出しコマンド及び前記第3読出しコマンドに基づき、前記第1メモリの前記第1アドレスから第1データを、前記第1メモリの前記第3アドレスから第3データをそれぞれ読み出す工程と、
を有することを特徴とするデータ読出し方法。
(付記2)
前記第1読出しコマンド及び前記第3読出しコマンドは、第1バッファに保持され、
前記第2読出しコマンドは、第2バッファに保持され、
前記第1バッファに格納されているコマンドが全て実行された場合に、前記第2バッファに格納されているコマンドが実行されることを特徴とする付記1に記載のデータ読出し方法。
(付記3)
前記第2読出しコマンドに基づいて前記第1メモリから読み出された前記第2データは、第2メモリに保持され、
前記第1メモリの前記第2アドレスを指定する第4読出しコマンド生成要求がなされた場合は、前記第2メモリから前記第2データが読み出される
ことを特徴とする付記1又は2に記載のデータ読出し方法。
(付記4)
前記第1読出しコマンド、前記第2読出しコマンド及び前記第3読出しコマンドは、情報処理装置により発行され、
前記第1メモリは、前記情報処理装置の外部記憶装置に設けられた不揮発性メモリであり、
前記第2メモリは、前記情報処理装置に設けられた揮発性メモリである
ことを特徴とする付記3に記載のデータ読出し方法。
(付記5)
前記第1読出しコマンド生成要求は、前記情報処理装置のプロセッサがアプリケーションプログラムを実行することにより生成され、
前記第1読出しコマンド生成要求は、前記第1アドレスを特定する情報を含み、前記第2アドレスを特定する情報を含まず、
前記第1読出しコマンド及び前記第2読出しコマンドは、前記プロセッサのデバイスドライバにより生成される
ことを特徴とする付記4に記載のデータ読出し方法。
(付記6)
情報処理装置と、
ストレージと、
を有し、前記情報処理装置は、
前記ストレージに設けられた第1メモリの第1アドレスを指定する第1読出しコマンド生成要求に基づき、第1読出しコマンドを生成し、
前記情報処理装置は、前記第1読出しコマンド生成要求に基づき、前記第1メモリの、前記第1アドレスとは異なる第2アドレスを指定する第2読出しコマンドを生成し、
前記情報処理装置は、前記第2読出しコマンドを生成した後に、前記第1メモリの第3アドレスを指定する第2読出しコマンド生成要求に基づき、第3読出しコマンドを生成し、
前記ストレージは、
前記第2読出しコマンドに基づく前記第1メモリの前記第2アドレスからの第2データの読出しよりも先に、前記第1読出しコマンド及び前記第3読出しコマンドに基づき、前記第1メモリの前記第1アドレスから第1データを、前記第1メモリの前記第2アドレスから第3データをそれぞれ読み出す
ことを特徴とする情報処理システム。
(付記7)
前記第1読出しコマンド及び前記第3読出しコマンドは、前記ストレージに設けられた第1バッファに保持され、
前記第2読出しコマンドは、前記ストレージに設けられた第2に保持され、
前記ストレージは、前記第1に格納されているコマンドが全て実行された場合に、前記第2バッファに格納されているコマンドを実行する
ことを特徴とする付記6に記載の情報処理システム。
(付記8)
前記第2読出しコマンドに基づいて前記第1メモリから読み出された前記第2データは、前記情報処理装置の第2メモリに保持され、
前記情報処理装置は、前記第1メモリの前記第2アドレスを指定する第3読出しコマンド生成要求がなされた場合は、前記第2メモリから前記第2データを読み出す
ことを特徴とする付記6又は7に記載の情報処理システム。
(付記9)
前記第1メモリは、不揮発性メモリであり、
前記第2メモリは、揮発性メモリである
ことを特徴とする付記8に記載の情報処理システム。
(付記10)
前記第1読出しコマンド生成要求は、前記情報処理装置のプロセッサがアプリケーションプログラムを実行することにより生成され、
前記第1読出しコマンド生成要求は、前記第1アドレスを特定する情報を含み、前記第2アドレスを特定する情報を含まず、
前記第1読出しコマンド及び前記第2読出しコマンドは、前記プロセッサのデバイスドライバにより生成される
ことを特徴とする付記6乃至9何れか一つに記載の情報処理システム。
(付記11)
第1メモリの第1アドレスを指定する第1読出しコマンド生成要求に基づき、第1読出しコマンドを生成する工程と、
前記第1読出しコマンド生成要求に基づき、前記第1メモリの、前記第1アドレスとは異なる第2アドレスを指定する第2読出しコマンドを生成する工程と、
前記第2読出しコマンドに基づき前記第1メモリの前記第2アドレスから第2データを読み出す工程と、
前記第1メモリから読み出された前記第2データを、第2メモリに保持する工程と、
前記第2データが前記第2メモリに保持された後の一定期間内に、前記第1メモリの前記第2アドレスを指定する第2読出しコマンド生成要求がなされなかった場合は、前記一定期間が経過した後に、前記第1メモリの前記第1アドレスを指定する第3読出しコマンド生成要求がなされた場合に、前記第1メモリの前記第2アドレスを指定する第3読出しコマンドを生成しない
を有することを特徴とするデータ読出し方法。
(付記12)
前記第2データが前記第2メモリに保持された後の前記一定期間内に前記第2読出しコマンド生成要求がなされた場合は、前記一定期間が経過した後に、前記第1メモリの前記第1アドレスを指定する前記第3読出しコマンド生成要求がなされた場合に、前記第1メモリの前記第2アドレスを指定する前記第3読出しコマンドを生成すること特徴とする付記11に記載のデータ読出し方法。
(付記13)
前記第2データが前記第2メモリに保持された後の前記一定期間内に前記第2読出しコマンド生成要求がなされた場合は、前記第2メモリから前記第2データが読み出されることを特徴とする付記11又は12に記載のデータ読出し方法。
(付記14)
前記第1読出しコマンド、前記第2読出しコマンド及び前記第3読出しコマンドは、情報処理装置により発行され、
前記第1メモリは、前記情報処理装置の外部記憶装置に設けられた不揮発性メモリであり、
前記第2メモリは、前記情報処理装置に設けられた揮発性メモリである
ことを特徴とする付記12又は13に記載のデータ読出し方法。
10 情報処理装置
11 データ処理部
12 データ保持部
20 ストレージ
21 制御部
22 データ格納部
100 CPU
150 ROM
160 DRAM
170 通信デバイス
180 インターフェースカード
190 バス
200 メモリコントローラ
250A、250B、250C フラッシュメモリ
260 インターフェースカード
101 アプリケーション層
105 OS
103 ファイルシステム
110 デバイスドライバ
102 演算処理部
104 コマンド生成要求部
111 コマンド生成要求受信部
112 コマンド生成部
113 データ先読みコマンド生成部
114 コマンド送信部
115 DRAM制御部
121 記録部
122 監視部
123 タイマ
124 判定部
125 フラグリセット部
131 アドレス変換テーブル
132 保持データデーブル
141 先読みリストテーブル
202 コマンド受信部
204 チャネル選択部
210A、210B、210C キュー選択部
212A、212B、212C 第1コマンドキュー
215A、215B、215C 第2コマンドキュー
220A、220B、220C コマンド選択部
230A、230B、230C コマンド実行部
240 データ送信部

Claims (10)

  1. 第1メモリの第1アドレスを指定する第1読出しコマンド生成要求に基づき、第1読出しコマンドを生成する工程と、
    前記第1読出しコマンド生成要求に基づき、前記第1メモリの、前記第1アドレスとは異なる第2アドレスを指定する第2読出しコマンドを生成する工程と、
    前記第2読出しコマンドを生成した後に、前記第1メモリの第3アドレスを指定する第2読出しコマンド生成要求に基づき、第3読出しコマンドを生成する工程と、
    前記第2読出しコマンドに基づく前記第1メモリの前記第2アドレスからの第2データの読出しよりも先に、前記第1読出しコマンド及び前記第3読出しコマンドに基づき、前記第1メモリの前記第1アドレスから第1データを、前記第1メモリの前記第3アドレスから第3データをそれぞれ読み出す
    を有することを特徴とするデータ読出し方法。
  2. 前記第1読出しコマンド及び前記第3読出しコマンドは、第1バッファに保持され、
    前記第2読出しコマンドは、第2バッファに保持され、
    前記第1バッファに格納されているコマンドが全て実行された場合に、前記第2バッファに格納されているコマンドが実行されることを特徴とする請求項1に記載のデータ読出し方法。
  3. 前記第2読出しコマンドに基づいて前記第1メモリから読み出された前記第2データは、第2メモリに保持され、
    前記第1メモリの前記第2アドレスを指定する第4読出しコマンド生成要求がなされた場合は、前記第2メモリから前記第2データが読み出される
    ことを特徴とする請求項1又は2に記載のデータ読出し方法。
  4. 前記第1読出しコマンド、前記第2読出しコマンド及び前記第3読出しコマンドは、情報処理装置により発行され、
    前記第1メモリは、前記情報処理装置の外部記憶装置に設けられた不揮発性メモリであり、
    前記第2メモリは、前記情報処理装置に設けられた揮発性メモリである
    ことを特徴とする請求項3に記載のデータ読出し方法。
  5. 前記第1読出しコマンド生成要求は、前記情報処理装置のプロセッサがアプリケーションプログラムを実行することにより生成され、
    前記第1読出しコマンド生成要求は、前記第1アドレスを特定する情報を含み、前記第2アドレスを特定する情報を含まず、
    前記第1読出しコマンド及び前記第2読出しコマンドは、前記プロセッサのデバイスドライバにより生成される
    ことを特徴とする請求項4に記載のデータ読出し方法。
  6. 情報処理装置と、
    ストレージと、
    を有し、前記情報処理装置は、
    前記ストレージに設けられた第1メモリの第1アドレスを指定する第1読出しコマンド生成要求に基づき、第1読出しコマンドを生成し、
    前記情報処理装置は、前記第1読出しコマンド生成要求に基づき、前記第1メモリの、前記第1アドレスとは異なる第2アドレスを指定する第2読出しコマンドを生成し、
    前記情報処理装置は、前記第2読出しコマンドを生成した後に、前記第1メモリの第3アドレスを指定する第2読出しコマンド生成要求に基づき、第3読出しコマンドを生成し、
    前記ストレージは、
    前記第2読出しコマンドに基づく前記第1メモリの前記第2アドレスからの第2データの読出しよりも先に、前記第1読出しコマンド及び前記第3読出しコマンドに基づき、前記第1メモリの前記第1アドレスから第1データを、前記第1メモリの前記第2アドレスから第3データをそれぞれ読み出す
    ことを特徴とする情報処理システム。
  7. 前記第1読出しコマンド及び前記第3読出しコマンドは、前記ストレージに設けられた第1バッファに保持され、
    前記第2読出しコマンドは、前記ストレージに設けられた第2バッファに保持され、
    前記ストレージは、前記第1バッファに格納されているコマンドが全て実行された場合に、前記第2バッファに格納されているコマンドを実行する
    ことを特徴とする請求項6に記載の情報処理システム。
  8. 前記第2読出しコマンドに基づいて前記第1メモリから読み出された前記第2データは、前記情報処理装置の第2メモリに保持され、
    前記情報処理装置は、前記第1メモリの前記第2アドレスを指定する第3読出しコマンド生成要求がなされた場合は、前記第2メモリから前記第2データを読み出す
    ことを特徴とする請求項6又は7に記載の情報処理システム。
  9. 第1メモリの第1アドレスを指定する第1読出しコマンド生成要求に基づき、第1読出しコマンドを生成する工程と、
    前記第1読出しコマンド生成要求に基づき、前記第1メモリの、前記第1アドレスとは異なる第2アドレスを指定する第2読出しコマンドを生成する工程と、
    前記第2読出しコマンドに基づき前記第1メモリの前記第2アドレスから第2データを読み出す工程と、
    前記第1メモリから読み出された前記第2データを、第2メモリに保持する工程と、
    前記第2データが前記第2メモリに保持された後の一定期間内に、前記第1メモリの前記第2アドレスを指定する第2読出しコマンド生成要求がなされなかった場合は、前記一定期間が経過した後に、前記第1メモリの前記第1アドレスを指定する第3読出しコマンド生成要求がなされた場合に、前記第1メモリの前記第2アドレスを指定する第3読出しコマンドを生成しない
    を有することを特徴とするデータ読出し方法。
  10. 前記第2データが前記第2メモリに保持された後の前記一定期間内に前記第2読出しコマンド生成要求がなされた場合は、前記一定期間が経過した後に、前記第1メモリの前記第1アドレスを指定する前記第3読出しコマンド生成要求がなされた場合に、前記第1メモリの前記第2アドレスを指定する前記第3読出しコマンドを生成すること特徴とする請求項9に記載のデータ読出し方法。
JP2015147261A 2015-07-24 2015-07-24 データ読出し方法及び情報処理システム Pending JP2017027479A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015147261A JP2017027479A (ja) 2015-07-24 2015-07-24 データ読出し方法及び情報処理システム
US15/202,695 US10101946B2 (en) 2015-07-24 2016-07-06 Method of reading data from a memory device and information processing system controlling data reading

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015147261A JP2017027479A (ja) 2015-07-24 2015-07-24 データ読出し方法及び情報処理システム

Publications (1)

Publication Number Publication Date
JP2017027479A true JP2017027479A (ja) 2017-02-02

Family

ID=57836133

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015147261A Pending JP2017027479A (ja) 2015-07-24 2015-07-24 データ読出し方法及び情報処理システム

Country Status (2)

Country Link
US (1) US10101946B2 (ja)
JP (1) JP2017027479A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521350B2 (en) 2016-07-20 2019-12-31 International Business Machines Corporation Determining the effectiveness of prefetch instructions
US10169239B2 (en) 2016-07-20 2019-01-01 International Business Machines Corporation Managing a prefetch queue based on priority indications of prefetch requests
US10452395B2 (en) 2016-07-20 2019-10-22 International Business Machines Corporation Instruction to query cache residency
US10621095B2 (en) * 2016-07-20 2020-04-14 International Business Machines Corporation Processing data based on cache residency
JP7089423B2 (ja) * 2018-07-12 2022-06-22 ルネサスエレクトロニクス株式会社 情報処理装置及び制御方法
CN109445686B (zh) * 2018-09-28 2020-11-17 方一信息科技(上海)有限公司 一种存储磁盘以及存取数据的方法
US11442865B1 (en) * 2021-07-02 2022-09-13 Vmware, Inc. Smart prefetching for remote memory

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295860A (ja) * 2003-03-07 2004-10-21 Fujitsu Ltd ストレージシステム及びそのデイスク負荷バランス制御方法
US20050125608A1 (en) * 2000-03-31 2005-06-09 Intel Corporation Determining an amount of data read from a storage medium

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001012589A (ja) 1999-06-29 2001-01-16 Jatco Transtechnology Ltd 自動変速機の油圧制御装置
US6499090B1 (en) * 1999-12-28 2002-12-24 Intel Corporation Prioritized bus request scheduling mechanism for processing devices
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
JP4247132B2 (ja) * 2004-01-29 2009-04-02 株式会社ルネサステクノロジ 情報処理装置
JP4151977B2 (ja) 2005-03-16 2008-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 先読み装置、先読み方法、および先読みプログラム
US8438356B2 (en) * 2007-10-01 2013-05-07 Marvell World Trade Ltd. Flash memory controller
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
JP5036078B2 (ja) 2010-04-12 2012-09-26 ルネサスエレクトロニクス株式会社 記憶装置
JP6160294B2 (ja) * 2013-06-24 2017-07-12 富士通株式会社 ストレージシステム、ストレージ装置及びストレージシステムの制御方法
KR102074329B1 (ko) * 2013-09-06 2020-02-06 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
US9411521B2 (en) * 2014-05-30 2016-08-09 Macronix International Co., Ltd. Method and apparatus for improving sequential memory read preformance

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050125608A1 (en) * 2000-03-31 2005-06-09 Intel Corporation Determining an amount of data read from a storage medium
JP2004295860A (ja) * 2003-03-07 2004-10-21 Fujitsu Ltd ストレージシステム及びそのデイスク負荷バランス制御方法

Also Published As

Publication number Publication date
US20170024165A1 (en) 2017-01-26
US10101946B2 (en) 2018-10-16

Similar Documents

Publication Publication Date Title
JP2017027479A (ja) データ読出し方法及び情報処理システム
US10025531B2 (en) Reducing read command latency in storage devices
KR102618699B1 (ko) 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
KR101790913B1 (ko) 플래시 메모리에 저장된 데이터의 추론적 프리페칭
KR101176702B1 (ko) 판독 실패 관리 방법 및 시스템
JP5762930B2 (ja) 情報処理装置および半導体記憶装置
JP5030796B2 (ja) データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法
US20180275921A1 (en) Storage device
JP2012511789A (ja) 並行且つパイプライン化されたメモリ動作用の不揮発性メモリデバイス
US11513723B2 (en) Read handling in zoned namespace devices
KR20170032502A (ko) 스토리지 장치 및 그것의 인터럽트 발생 방법
JP2007528079A (ja) フラッシュコントローラのキャッシュ構造
JP6855704B2 (ja) ストレージシステム、ストレージ制御装置及びデータ格納方法
US10585822B2 (en) Operation method of host system including storage device and operation method of storage device controller
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
US20160342542A1 (en) Delay destage of data based on sync command
US20210141559A1 (en) Memory controller and storage device including the same
US10528285B2 (en) Data storage device and method for operating non-volatile memory
US9990280B2 (en) Methods for reading data from a storage unit of a flash memory and apparatuses using the same
JP2007286813A (ja) メモリ制御装置、メモリ制御方法
US11029878B2 (en) Information processing system
TWI626540B (zh) 一般及垃圾回收的資料存取方法以及使用該方法的裝置
JP2021149374A (ja) データ処理装置
JP6988445B2 (ja) ストレージシステム、制御装置及び制御方法
WO2015170702A1 (ja) ストレージ装置と情報処理システム及びストレージ制御方法とプログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20160401

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20180528

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190327

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191030

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

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20191030

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20191106

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

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20191112

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20200131

C211 Notice of termination of reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C211

Effective date: 20200204

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20200707

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20200721

C23 Notice of termination of proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C23

Effective date: 20210302

C03 Trial/appeal decision taken

Free format text: JAPANESE INTERMEDIATE CODE: C03

Effective date: 20210406

C30A Notification sent

Free format text: JAPANESE INTERMEDIATE CODE: C3012

Effective date: 20210406