JP2017228172A - 情報処理システム - Google Patents

情報処理システム Download PDF

Info

Publication number
JP2017228172A
JP2017228172A JP2016125025A JP2016125025A JP2017228172A JP 2017228172 A JP2017228172 A JP 2017228172A JP 2016125025 A JP2016125025 A JP 2016125025A JP 2016125025 A JP2016125025 A JP 2016125025A JP 2017228172 A JP2017228172 A JP 2017228172A
Authority
JP
Japan
Prior art keywords
command
data
read
generation unit
information processing
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
JP2016125025A
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 JP2016125025A priority Critical patent/JP2017228172A/ja
Priority to US15/609,064 priority patent/US11029878B2/en
Publication of JP2017228172A publication Critical patent/JP2017228172A/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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

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号公報 特開2002−24007号公報 特開2004−164144号公報
データ先読み処理を実行する場合においては、サーバによって実際に使用されるデータを読み出すための通常のデータ読出しコマンドと、サーバによって使用されることが予測されるデータを読み出すためのデータ先読みコマンドが発行される。本開示は、データ先読みコマンドの実行により通常のデータ読出しコマンドの実行が遅延することを抑制することを目的とするものである。
開示の情報処理システムは、第1アドレス領域に格納された第1データを指定するコマンド生成要求に基づき、前記第1データを読出し対象とする第1読出しコマンドを生成する第1コマンド生成部と、前記コマンド生成要求に基づき、前記第1アドレス領域とは異なる第2アドレス領域に格納された第2データを読出し対象とする第2読出しコマンドを生成する第2コマンド生成部と、前記第1コマンド生成部によって生成された前記第1読出しコマンドを保持する第1コマンドバッファと、前記第2コマンド生成部によって生成された前記第2読出しコマンドを保持する第2コマンドバッファと、前記第1コマンドバッファ及び前記第2コマンドバッファに保持される前記第1読出しコマンド及び前記第2読出しコマンドを実行するコマンド実行部と、を有し、前記コマンド実行部は、前記第1コマンドバッファが空の状態であることを条件として、前記第2コマンドバッファに格納されている前記第2読出しコマンドを実行することを特徴とする
データ先読みコマンドの実行によりデータ通常読出しコマンドの実行が遅延することを抑制することができる。
第1実施例におけるシステム構成を示す図である。 第1実施例におけるシステムのハードウェア構成を示す図である。 第1実施例における効果を説明するための図である。 第1実施例における情報処理装置の機能ブロックを示す図である。 第1実施例におけるコマンドのデータ構成を示す図である。 第1実施例における保持データテーブルの内容例を示す図である。 第1実施例におけるストレージの機能ブロックを示す図である。 第1実施例におけるCPUによって実行される処理のフローチャートである。 第1実施例におけるメモリコントローラによって実行される処理のフローチャートである。 第1実施例におけるメモリコントローラによって実行される処理のフローチャートである。 第1実施例におけるCPUによって実行される処理のフローチャートである。 第2実施例におけるストレージの機能ブロックを示す図である。 第2実施例におけるデータ先読みコマンド生成部の機能ブロックの一例を示す図である。 図13に示されるデータ先読みコマンド生成部によって実行される処理のフローチャートである。 第2実施例におけるデータ先読みコマンド生成部の機能ブロックの他の例を示す図である。 図15に示されるデータ先読みコマンド生成部によって実行される処理のフローチャートである。 第3実施例における情報処理装置の機能ブロックを示す図である。 第3実施例における先読みリストテーブルの内容例を示す図である。 第3実施例におけるCPUによって実行される処理のフローチャートである。 第3実施例におけるCPUによって実行される処理のフローチャートである。 第3実施例の変形例におけるCPUによって実行される処理のフローチャートである。 第3実施例の変形例における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(ReRAM)、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と、インターフェースカード280を含む。メモリコントーラ200は、例えばFPGAである。メモリコントローラ200は、FPGA以外にも、CPUやMCUを用いて実現されてもよい。フラッシュメモリ250A、250B及び250Cは、データを格納するための不揮発性メモリデバイスの一例であり、例えばNAND型フラッシュメモリである。但しNAND型フラッシュメモリ以外にも、NOR型フラッシュメモリや、マスクROM、PROM、MRAM、ReRAM、FeRAM等も不揮発性メモリデバイスとして適用可能である。図2においては3つのチップのフラッシュメモリ250A、250B及び250Cが示されるが、これは不揮発性メモリデバイスのハードウェア構成の一例であり、不揮発性メモリデバイスの数(チップ数)を限定するものではない。本実施例では、不揮発性メモリデバイスの数を「チャネル数」と呼び、フラッシュメモリ250Aが第1チャネル、フラッシュメモリ250Bが第2チャネル、フラッシュメモリ250Cが第3チャネルにそれぞれ対応するものとする。また本明細書の以降の部分において、図示された3つのフラッシュメモリの何れかを特定する意図のない場合は、単に「フラッシュメモリ250」と表記するものとする。各チャネルのフラッシュメモリ250において、例えば2112バイトのメモリセルが1つのページを構成する。また例えば64ページにより一つのブロックが構成される。NAND型フラッシュメモリの場合、データ消去はブロック単位で行われ、データ読出し及びデータ書込みはページ単位で行われる。
インターフェースカード280は、情報処理装置10から送信されたコマンドを受信する。メモリコントローラ200は、インターフェースカード280にて受信されたコマンドに基づき、フラッシュメモリ250に対して、データの読出し、データ書込み及びデータ消去等の処理を行う。またメモリコントローラ200は、フラッシュメモリ250から読み出されたデータを、インターフェースカード280を介して情報処理装置10へ送信する。
ここで、データ先読み処理の概要について説明する。情報処理装置10のCPU100は、自身がデータ処理を実行する際に使用するデータがDRAM160に保持されていない場合は、当該データをストレージ20から読み出してDRAM160に保持させる。この際、CPU100は、当該データが格納されているフラッシュメモリ250のアドレスを指定するデータ読出しコマンド(データ通常読出しコマンド)を発行する。また、CPU100は、CPU100でのデータ処理に用いられることが予想されるデータを投機的に読み出すための追加のデータ読出しコマンド(データ先読みコマンド)の発行を、ストレージ20に指示する。データ先読みコマンドの発行指示は、データ通常読出しコマンド内に含ませることができる。CPU100によって発行されたデータ通常読出しコマンドは、情報処理装置10のインターフェースカード180及びストレージ20のインターフェースカード280を介してメモリコントローラ200へ送信される。メモリコントローラ200は、データ通常読出しコマンドを実行してフラッシュメモリ250からデータを読み出す。メモリコントローラ200は更に、CPU100からの指示に基づいてデータ先読みコマンドを発行して実行することで、フラッシュメモリ250から他のデータを読み出す。一つのデータ通常読出しコマンドに対して発行されるデータ先読みコマンドの数は1つであってもよく複数であってもよい。
NAND型のフラッシュメモリでは、データの読出しはページ単位で実行される。1ページのデータ読出しには例えば50μs程度の時間がかかる。そのためメモリコントローラ200は、複数のデータ読出しコマンドを受信した場合は、これらのコマンドを例えばFirst In First Out(FIFO)バッファに保持する。そしてメモリコントローラ200は、FIFOバッファに格納された複数のコマンドを順に実行し、実行中のコマンドの処理が終了するまで、他のコマンドをFIFOバッファにて待機させる。
ここで、図2に示されるような複数チャネルのフラッシュメモリ250へのデータ格納例及びデータ先読み処理例について説明する。例えば、CPU100によって連続してアクセスされる可能性がある2ページ分のデータをフラッシュメモリ250に格納する場合、2ページ分のデータのうち、1ページ分のデータ(第1データ)がフラッシュメモリ250A(第1チャネル)の第1ブロックの第1ページに格納され、残りの1ページ分のデータ(第2データ)がフラッシュメモリ250B(第2チャネル)の第1ブロックの第1ページに格納される。そしてフラッシュメモリ250Aの第1ブロックの第1ページへのデータ通常読出しコマンドの生成に伴い、フラッシュメモリ250Bの第1ブロックの第1ページへのデータ先読みコマンドが生成される。そしてフラッシュメモリ250Aに対してデータ通常読出しコマンドが実行されることにより第1データが読み出され、フラッシュメモリ250Bに対してデータ先読みコマンドが実行されることにより第2データが読み出される。これにより、第1データの読出しの完了を待つことなく、第2データが読み出される。また、第1データへのアクセスの後に第2データへのアクセスがなされた場合、第2データは既にストレージ20から読み出されて情報処理装置10のDRAM160に保持されているため、第2データの読出しに要する時間が短縮される。
尚、CPU100によって連続してアクセスされる可能性がある複数ページ分のデータとは、例えば1ページ分のデータ容量を超えるファイルデータであって、分割されて複数のページに跨ってフラッシュメモリ250に格納されたデータ等である。
図3は、第1実施例における効果を説明するための図である。例えば情報処理装置10のCPU100が、フラッシュメモリ250の特定のアドレスに対するデータ通常読出しコマンドAを発行する。またこのデータ通常読出しコマンドAに付随して、データ先読みコマンドXが発行される。データ通常読出しコマンドAは、フラッシュメモリ250A(第1チャネル)の第1ブロックの第1ページを対象アドレスとするものであり、データ先読みコマンドXはフラッシュメモリ250B(第2チャネル)の第1ブロックの第1ページを対象アドレスとするものであるとする。データ通常読出しコマンドA、データ先読みコマンドXはそれぞれ、第1チャネルに対して設けられたFIFOバッファと第2チャネルに対して設けられたFIFOバッファに格納される。その後、CPU100が更にデータ通常読出しコマンドBを発行したとする。データ通常読出しコマンドBは、フラッシュメモリ250B(第2チャネル)の第1ブロックの第2ページを指定するものであるとする。データ通常読出しコマンドBは、データ先読みコマンドXの次に第2チャネルに対して設けられたFIFOバッファに格納され、実行の待ち状態となる。
データ先読みコマンドXは、CPU100によって使用される可能性があるデータに対して、投機的に発行されるデータ読出しコマンドである。それゆえ、フラッシュメモリ250Bから読み出されてDRAM160に保持されても、実際にはCPU100によって利用されない場合もある。図3の(A)は、投機的に発行されたデータ先読みコマンドXがFIFOバッファに保持されているために、データ通常読出しコマンドBの実行が待たされる様子を示している。図3の(A)に示される例では、例えばフラッシュメモリ250の1ページの読出しに50μsを要するとすると、データ通常読出しコマンドBの実行は、データ先読みコマンドXがFIFOバッファ内に存在しない場合に比べて、50μs遅れることになる。本実施例は、データ通常読出しコマンドBの実施が、データ先読みコマンドXの実行により遅延することを抑制するためのものである。
本実施例においては、データ先読みコマンドXが発行された後にデータ通常読出しコマンドBが発行された場合、データ先読みコマンドXがFIFOバッファ内で実行待ちである状態であれば、データ先読みコマンドXの実行よりも、データ通常読出しコマンドBが優先して実行される。図3の(B)は、データ先読みコマンドXよりもデータ通常読出しコマンドBが優先して実行される様子を示すものである。図3の(B)に示された例では、図3の(A)に示された例に比べて早いタイミングで、データ通常読出しコマンドBが実行される。
図4は、第1実施例における情報処理装置10の、主に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に対してデータ通常読出しコマンドの生成を指示する。コマンド生成部112は、コマンド生成要求部104によって要求されたデータを読み出すためのデータ通常読出しコマンドを発行する。生成されたデータ通常読出しコマンドはデータ先読み情報生成部113に引き渡される。データ先読み情報生成部113は、コマンド生成要求部104によって要求されたデータとは別のデータであって、演算処理部102によって使用されることが予測されるデータを読み出すためのデータ先読み情報を生成してデータ通常読出しコマンドに付加する。データ先読み情報とは、先読み処理の対象となるデータが格納されているフラッシュメモリ250内のアドレス情報等である。
尚、コマンド生成部112及びデータ先読み情報生成部113がそれぞれデータ通常読出しコマンド及びデータ先読み情報を生成する際、演算処理部102が管理するアドレス(以下、「論理アドレス」と呼ぶ)は、ストレージ20の管理するアドレス(以下、「フラッシュメモリアドレス」と呼ぶ)に変換される。アドレス変換テーブル131は、論理アドレスとフラッシュメモリアドレスの対応関係を保持する。コマンド生成部112はデータ通常読出しコマンドを発行する際、アドレス変換テーブル131を参照することによりフラッシュメモリ250のアドレス、例えばチャネル番号、ブロック番号及びページ番号を特定する読出しデータ情報を、データ通常読出しコマンドに含ませる。またデータ先読み情報生成部113はデータ先読み情報を生成する際、必要に応じて、アドレス変換テーブル131を参照することによりフラッシュメモリ250のアドレス、例えばチャネル番号、ブロック番号及びページ番号を特定するデータ先読み情報を、データ通常読出しコマンドに付加する。データ先読み情報生成部113によってデータ先読み情報が付加されたデータ通常読出しコマンドは、コマンド送信部114を介してストレージ20へ送信される。
図5の(A)は、コマンド生成部112及びデータ先読み情報生成部113にて生成されるコマンドのデータ構成例を示す図である。コマンドは、「コマンドID」、「コマンドタイプ」、「フラッシュメモリアドレス」、「DRAMアドレス」及び「データ先読み情報」がそれぞれ登録される領域を含む。「コマンドID」は、各コマンドを識別するための識別子であり、コマンド毎に個別の識別子が付される。「コマンドタイプ」は、コマンドの種別を示す情報である。フラッシュメモリ250に対するコマンドの種別としては、例えばデータ読出しコマンド、データ書込みコマンド、データ消去コマンド等が挙げられる。データ通常読出しコマンドにおいては、「コマンドタイプ」の領域に、当該コマンドがデータの読出しを要求するコマンドであることを示す情報が登録される。データ読出しコマンドにおいては、「フラッシュメモリアドレス」の領域に、読出し対象のデータが格納されているフラッシュメモリ250のアドレスを特定する情報が登録される。例えば、チャネル番号、ブロック番号及びページ番号が、「フラッシュメモリアドレス」の領域に登録される。またコマンドがデータ読出しコマンドである場合は、「DRAMアドレス」の領域に、フラッシュメモリ250から読み出されたデータをDRAM160のどのアドレスに格納するかを特定するためのアドレス(以下、「DRAMアドレス」と呼ぶ)が登録される。また、「データ先読み情報」の領域には、当該コマンドがデータ読出しコマンドである場合に、データ先読みコマンドの生成要否を示す情報や、データ先読み対象となるフラッシュメモリ250のアドレス情報等が登録される。このデータ先読み情報は、データ先読み情報生成部113により生成され、データ通常読出しコマンドに付加される。
図5の(B)は、データ先読み情報の第1の例を示す図である。図5の(B)において、データ先読みコマンドの生成要否を示す情報が、データ先読み情報として登録される。例えば、データ先読み情報に登録される値「1」は、データ先読みコマンドの発行が要求されることを意味し、データ先読み情報に格納される値「0」は、データ先読みコマンドの発行が不要であることを意味する。例えばデータ先読み情報生成部113は、CPU100による直近の複数のデータアクセスが、ランダムな論理アドレスに対して行われている場合は、データ先読みコマンドの生成は不要と判断し、データ先読み情報として「0」を登録する。逆にデータ先読み情報生成部113は、CPU100による直近の複数のデータアクセスが、連続する論理アドレスに対して行われている場合は、データ先読みコマンドの生成が必要と判断し、データ先読み情報として「1」を登録する。ストレージ20は、受信したデータ通常読出しコマンドのデータ先読み情報が「1」である場合は、データ先読みコマンドを生成する。図5(B)において、データ先読み情報にはデータ先読みの対象となるフラッシュメモリアドレスは含まれていない。この場合、ストレージ20は、受信したデータ通常読出しコマンドの「フラッシュメモリアドレス」に登録されている情報を参照する。例えばデータ通常読出しコマンドにて指定される「フラッシュメモリアドレス」が、第1チャネルの第1ブロックの第1ページである場合は、第2チャネルの第1ブロックの第1ページをデータ先読みの対象アドレスとするデータ先読みコマンドと、第3チャネルの第1ブロックの第1ページをデータ先読みの対象アドレスとするデータ先読みコマンドを生成する。
図5の(C)は、データ先読み情報の第2の例を示す図である。第2の例においてはデータ先読みコマンドの生成要否を示す情報が、チャネル毎に、データ先読み情報として登録される。図5の(C)では、第1チャネルに関するデータ先読み情報が「0」、第2チャネルに関するデータ先読み情報が「1」、第3チャネルに関するデータ先読み情報が「0」である場合が示されている。尚、データ通常読出しコマンドにて指定される「フラッシュメモリアドレス」は、第1チャネルの第1ブロックの第1ページであるものとする。この場合、ストレージ20は、第2チャネルの第1ブロックの第1ページをデータ先読みの対象アドレスとするデータ先読みコマンドを生成するが、第1チャネル及び第3チャネルに対してはデータ先読みコマンドを生成しない。
図5の(D)は、データ先読み情報の第3の例を示す図である。第3の例においては、データ先読みコマンドの生成要否を示す情報に加え、チャネル毎にデータ先読み処理の対象アドレスが、データ先読み情報として登録される。これにより、チャネル毎に異なるフラッシュメモリアドレスを対象とするデータ先読みコマンドを生成させることができる。図5の(D)の例では、第1チャネルに関してはデータ先読みコマンドは生成されず、第2チャネルの第1ブロック、第2ページに対するデータ先読みコマンドと、第3チャネルの第2ブロック、第3ページに対するデータ先読みコマンドが、生成される。
図6は、図4に示される保持データテーブル132の内容例を示す図である。保持データテーブル132には、「コマンドID」、「論理アドレス」、「DRAMアドレス」及び「完了フラグ」に関する情報が登録され得る。コマンド生成部112及びデータ先読み情報生成部113は、データ通常読出しコマンド及びデータ先読み情報をそれぞれ生成した場合、生成されたデータ通常読出しコマンド及びストレージ20にて生成されるデータ先読みコマンドのコマンドIDと、読出し対象となるデータの論理アドレス(以下、「読出し対象アドレス」と呼ぶ)と、読み出されたデータの保持領域を示すDRAMアドレスを、保持データテーブル132に登録する。図6の(A)は、データ読出しコマンドの生成に対応し、関連する情報が登録された状態の保持データテーブル132の内容を例示する。例えばコマンド生成要求部104が、論理アドレス「a」についてのデータ読出しコマンドの生成要求を行い、コマンド生成部112が、論理アドレス「a」についてのデータ通常読出しコマンド(コマンドIDが「A」)を生成し、データ先読み情報生成部113が、論理アドレス「b」についてのデータ先読み情報(データ先読みコマンドのコマンドIDが「B」)の生成をストレージ20に指示したとする。この場合、図6の(A)に示されるように、生成されるコマンド毎に、コマンドIDと論理アドレスとDRAMアドレスとが保持データテーブル132に登録される。データ先読み情報生成部113は、データ先読みコマンドの生成をストレージ20に指示する際、コマンドID情報をデータ先読み情報に含める。尚、図6の(B)及び「完了フラグ」の意義については後述する。
図7は第1実施例におけるストレージ20の、主にメモリコントローラ200の機能ブロックを示す図である。ストレージ20のメモリコントローラ200は、コマンド受信部202、チャネル選択部204、データ先読みコマンド生成部260、第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は、情報処理装置10のコマンド送信部114から送信されたコマンドを受信する。チャネル選択部204は、コマンド受信部202にて受信されたコマンドを、当該コマンドに含まれるフラッシュメモリアドレスのチャネル情報に基づき、対応するチャネルを選択する。各チャネルにはそれぞれ第1コマンドキュー212、第2コマンドキュー215、コマンド選択部220、コマンド実行部230が設けられる。チャネル選択部204によりチャネルが選択されたコマンドは、選択されたチャネルの第1コマンドキュー212へ入力される。また、コマンド受信部202は、受信されたコマンドがデータ読出しコマンドである場合、当該コマンドを複製してデータ先読みコマンド生成部260へ送信する。データ先読みコマンド生成部260は、複製されたデータ通常読出しコマンドからデータ先読み情報を抽出し、データ先読みコマンドの生成要否を判断する。データ先読みコマンドを生成する必要がある場合は、データ先読みコマンド生成部260はデータ先読みコマンドを生成し、生成されたデータ先読みコマンドを、第2コマンドキュー215に保持させる。第1コマンドキュー212及び第2コマンドキュー215はそれぞれ、例えばFIFOバッファにより実現される。
このように本実施例では、データ通常読出しコマンド等のコマンドを保持する第1コマンドキュー212とは別に第2コマンドキュー215が設けられ、データ先読みコマンドが選択的に第2コマンドキュー215に入力される。尚、上記の例では、コマンド受信部202が、複製されたコマンドをデータ先読みコマンド生成部260へ送信したが、複製されたコマンドに代えて、受信されたコマンドに含まれるデータ先読み情報が選択的にデータ先読みコマンド生成部260へ通知されてもよい。この場合、データ先読みコマンド生成部260は、通知されたデータ先読み情報に基づいて、データ先読みコマンドの生成要否の判断及びデータ先読みコマンドの生成処理を実行する。
次にコマンド選択部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に完了フラグをして記録される。また、コマンドIDが「B」であり、論理アドレスが「b」であるコマンド(本実施例においてはデータ先読みコマンド)に関して、フラッシュメモリ250から読み出されたデータが、DRAMアドレスが「y」の領域に書込まれたことが、保持データテーブル132に完了フラグとして記録される。
次に、論理アドレス「b」を指定するデータ読出しコマンドの生成要求がコマンド生成要求部104によってなされた場合における、情報処理装置10内における処理を説明する。
コマンド生成要求受信部111は、論理アドレス「b」についてのデータ読出しコマンドの生成要求を受信する。コマンド生成要求受信部111は、保持データテーブル132を参照し、論理アドレス「b」に対応するデータが、DRAM160に格納されているか否かを判定する。図6の(B)に示す例では、論理アドレス「b」に対応するデータが既にDRAM160に格納されているため、コマンド生成要求受信部111はDRAM制御部115に、DRAMアドレス「y」の領域に格納されているデータの読出しを指示する。DRAM制御部115はDRAM160にアクセスし、DRAMアドレス「y」の領域に保持されたデータを読出して演算処理部102へ引き渡す。これにより演算処理部102が論理アドレス「b」のデータを使用する際、データ読出しに要する時間が短縮される。
図8は、CPU100によって実行される処理のうち、主にコマンドの生成に関する処理のフローチャートである。図8に示される処理フローは処理1000により開始され、処理1002においてコマンド生成要求部104が、コマンド生成要求を発行する。処理1004においてコマンド生成要求受信部111が、コマンド生成要求を受信する。処理1006においてコマンド生成要求受信部111が、受信されたコマンド生成要求が、データの読出しを要求するものであるか否かを判定する。コマンド生成要求がデータの読出しを要求するものであると判定されない場合は、処理フローは処理1008へ進み、コマンド生成要求がデータ読出しを要求するものであると判定された場合は、処理フローは処理1010へ進む。処理1008においてコマンド生成部112は、コマンド生成要求の要求内容に従い、コマンド、例えばデータ書込みコマンドやデータ消去コマンドを生成する。処理フローが処理1006から処理1010へ進んだ場合は、処理1010においてコマンド生成要求受信部111が、保持データテーブル132にアクセスする。そして処理1012において、コマンド生成要求にて要求されるデータがDRAM160に保持されているか否かを判定する。要求されたデータが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から送信されるコマンドが受信されたか否かを判定する。コマンドが受信されたと判定された場合は、処理フローは処理1104へ進み、コマンドが受信されたと判定されない場合は、コマンド受信部202が処理1102を繰り返し実行する。処理1102の後、処理1104においてチャネル選択部204が、受信されたコマンドに含まれるチャネル情報に基づいてチャネルを選択する。そして処理1106において選択されたチャネルの第1コマンドキュー212がコマンドを保持する。処理1108においてコマンド受信部202が、受信されたコマンドがデータ読出しコマンドか否かを判定する。コマンドがデータ読出しコマンドであると判定された場合は、処理フローは処理1110へ進み、コマンドがデータ読出しコマンドであると判定されない場合は、処理フローは処理1102へ戻る。処理1110においてコマンド受信部202は、受信されたコマンドを複製してデータ先読みコマンド生成部260へ送信する。処理1112においてデータ先読みコマンド生成部260は、複製されたコマンドに含まれるデータ先読み情報に基づき、データ先読みコマンドの生成の要否を判定する。処理1112においてデータ先読みコマンドの生成が必要と判定された場合は、処理1114においてデータ先読みコマンド生成部260は、データ先読みコマンドを生成し、処理1116において第2コマンドキュー215が、生成されたデータ先読みコマンドを保持する。処理1116の後、処理フローは処理1102へ戻る。処理1112においてデータ先読みコマンドの生成が必要と判定されない場合は、処理フローは処理1102へ戻る。尚、処理1104および処理1106と、処理1108以降の処理は、並列に実行されてもよい。
図10は、メモリコントローラ200によって実行される処理のうち、主に第1コマンドキュー212及び第2コマンドキュー215に保持されたコマンドの選択及び実行に関する処理のフローチャートである。図10における処理フローは処理1200により開始され、処理1202においてコマンド選択部220が、第1コマンドキュー212にコマンドが蓄えられているか否かを判定する。第1コマンドキュー212にコマンドが蓄えられていると判定された場合は、処理フローは処理1204へ進み、第1コマンドキュー212にコマンドが蓄えられていると判定されない場合は、処理フローは処理1208へ進む。処理1204においてコマンド選択部220が、第1コマンドキュー212に蓄えられているコマンドのうち、キューの先頭にあるコマンドを選択して取り出す。そして処理1206においてコマンド実行部230が、処理1204にて選択されたコマンドを実行する。一方、処理フローが処理1202から処理1208へ進んだ場合は、処理1208においてコマンド選択部220が、第2コマンドキュー215にデータ先読みコマンドが蓄えられているか否かを判定する。第2コマンドキュー215にデータ先読みコマンドが蓄えらえていると判定された場合は、処理フローは処理1210へ進み、第2コマンドキュー215にデータ先読みコマンドが蓄えられていると判断されない場合は、処理フローは処理1202へ戻る。処理1210においてコマンド選択部220が、第2コマンドキュー215に蓄えられているコマンドのうち、キューの先頭にあるデータ先読みコマンドを抽出する。そして処理1206においてコマンド実行部230がデータ先読みコマンドを実行する。処理1206の後、処理フローは処理1202へ戻る。
図11は、情報処理装置10の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実施例>
第1実施例においては、データ通常読出しコマンド用の第1コマンドキュー212と、データ先読みコマンド用の第2コマンドキュー215が並列に設けられることにより、データ先読みコマンドよりもデータ通常読出しコマンドが優先的に実行される。第2実施例においては、データ通常読出しコマンドとデータ先読みコマンドは、共通のコマンドキューに保持される。但し、データ先読みコマンドをコマンドキューに保持させるタイミングが制御されることにより、データ先読みコマンドよりもデータ通常読出しコマンドが優先的に実行される。尚、第1実施例において説明された図1(システム構成図)、図2(システムのハードウェア構成図)、図4(情報処理装置10の機能ブロック図)、図5(データ通常読出しコマンドのデータ構成図)、図8及び図11(情報処理装置10のCPU100によって実行される処理のフローチャート)は、第2実施例にも適用され得る。
図12は、第2実施例におけるストレージ20の、主にメモリコントローラ200の機能ブロック図である。図7に示される機能ブロックと同一の機能ブロックについては、図7にて付された参照符号と同一の参照符号が付され、説明は省略される。ストレージ20のメモリコントローラ200は、コマンド受信部202、チャネル選択部204、データ先読みコマンド生成部260、コマンドキュー218A、218B及び218C(3つのコマンドキューの何れかを特定する意図のない場合は、単に「コマンドキュー218」と表記する)、コマンド実行部230A、230B及び230C、及びデータ送信部240として機能する。
コマンド受信部202は、情報処理装置10からデータ通常読出しコマンドを受信すると、データ通常読出しコマンドを複製してデータ先読みコマンド生成部260に送信する。データ先読みコマンド生成部260は、チャネル毎にコマンドキュー218の状況を監視する。コマンドキュー218の状況とは、例えばコマンドキュー218内に保持されているコマンドの数に関する状況である。そしてデータ先読みコマンド生成部260は、コマンドキュー218の状況に基づいて、データ先読みコマンドを生成してコマンドキュー218へ送信する。尚、上記の例では、コマンド受信部202が、複製されたコマンドをデータ先読みコマンド生成部260へ送信したが、第1実施例と同様に、複製されたコマンドに代えて、受信されたコマンドに含まれるデータ先読み情報が選択的にデータ先読みコマンド生成部260へ通知されてもよい。
ここで、コマンドキュー218に所定数以上の数のコマンドが保持されている状況において、データ先読みコマンドが生成されてコマンドキュー218に入力されたと仮定する。この場合、データ先読みコマンドがコマンドキュー218の中で実行の順番待ち状態にある期間に、後続のコマンド(例えばデータ通常読出しコマンド)がコマンドキュー218に更に入力される可能性がある。この後続のコマンドの実行は、データ先読みコマンドの実行に要する時間だけ遅延することになる。そのため第2実施例では、データ先読みコマンド生成部260は、コマンドキュー218にコマンドが保持されていない、又はコマンドキュー218に保持されるコマンド数が一定値以下である場合に、データ先読みコマンドを生成してコマンドキュー218に保持させる。このように、データ先読みコマンドの生成タイミングを、コマンドキュー218の状況に基づいて制御することにより、データ通常読出しコマンドの実行が、データ先読みコマンドの実行により遅延することが抑制される。
図13は、図12に示されたデータ先読みコマンド生成部260内の機能ブロックを示す図である。データ先読みコマンド生成部260は、FIFOバッファ261と、判定部262と、生成部263とを有する。FIFOバッファ261は、コマンド受信部202から送信されたコマンドを保持する。判定部262は、FIFOバッファ261から複製コマンドを読み出す。また判定部262は、コマンドキュー218の状況を示す状況情報をコマンドキュー218から受信する。判定部262は、FIFOバッファ261から読み出したコマンドに含まれるデータ先読み情報と、コマンドキュー218の状況情報に基づいて、所定の条件が満たされたか否かを判定する。判定部262は、所定の条件が満たされた場合に、生成部263にデータ先読みコマンドの生成を指示する。生成部263は、判定部262からの指示に応じて、データ先読みコマンドを生成してコマンドキュー218へ送信する。
次に、判定部262の判定に用いられる所定の条件について、例を挙げて説明する。所定の条件として、「データ先読み処理の対象チャネルのコマンドキュー218の全てが空の状態である」という条件(以下、第1の条件と呼ぶ)が判定部262に対して設定されているとする。また、判定部262がFIFOバッファ261から読み出したコマンドに含まれるデータ先読み情報が、第1チャネル、第2チャネル及び第3チャネルのそれぞれに対してデータ先読みコマンドを生成することを規定するものだとする。ここで判定部262は、コマンドキュー218A、218B及び218Cの状況情報を取得する。コマンドキュー218A、218B及び218Cの状況情報から、判定部262は全てのチャネルのコマンドキュー218が空の状態であるか否かを判断する。全てのチャネルのコマンドキュー218が空の状態であると判定される場合、すなわち上記の所定の条件が満たされたと判定される場合には、判定部262は生成部263に、第1チャネル、第2チャネル及び第3チャネルのそれぞれに対するデータ先読みコマンドを生成し、コマンドキュー218A、218B及び218Cへ送信する。全てのチャネルのコマンドキュー218A、218B及び218Cはこの時点において空の状態であるため、データ先読みコマンドが各チャネルにおいて実行される。
判定部262の判定に用いられる所定の条件として、「データ先読み処理の対象チャネルのコマンドキュー218のうち、一定数以上(例えば2以上)のコマンドキューが空の状態である」という条件(以下、第2の条件と呼ぶ)が適用されてもよい。この場合、3つのコマンドキュー218A、218B及び218Cのうち、2つ以上のコマンドキュー218が空の状態であれば、判定部262は特定の条件が満たされたと判定される。そして判定部262は生成部263にデータ先読みコマンドの生成を指示する。3つのコマンドキューのうち、1つのコマンドキューが空の状態ではない状況が長時間続くことによってデータ先読みコマンドの生成が送れることを避けるために、第1の条件に代えて第2の条件が判定部262に対して設定されてもよい。
判定部262の判定に用いられる所定の条件として、「FIFOバッファ261に保持されるコマンドの数が所定数以上になる」という条件(以下、第3の条件と呼ぶ)が適用されてもよい。この場合、判定部262は、FIFOバッファ261に保持されているコマンドの数をカウントする。そして、カウントされたコマンド数が所定数以上となった場合に、コマンドキュー218の状況に依らずに、判定部262は所定の条件が満たされたと判定される。そして判定部262は、生成部263にデータ先読みコマンドの生成を指示する。
上記の第1乃至第3の条件を組み合わせた条件が、判定部262の判定に用いられる所定の条件として用いられてもよい。例えば「第1の条件と第3の条件の少なくとも一方の条件が満たされた」という条件が適用されてもよい。この場合、第1の条件が満たされなくても、第3の条件が満たされた場合には、判定部262は生成部263に対してデータ先読みコマンドの生成を指示する。これにより、第1の条件が満たされずにFIFOバッファ261の容量が飽和して新たなコマンドを受信できなくなることが防止される。
更に、判定部262に上記の第1乃至第3の条件又はこれらの条件を組み合わせた条件が設定された場合であって、FIFOバッファ261にコマンドが保持された状態で、設定された条件が満たされない期間が所定時間以上継続した場合に、判定部262が生成部263にデータ先読みコマンドの生成を指示するよう、データ先読みコマンド生成部260が構成されてもよい。この場合、特定の条件が満たされないことに起因してデータ先読み処理の実行が遅延されることが防止される。
図14は、データ先読みコマンド生成部260によって実行される処理のフローチャートである。処理フローは処理1400により開始され、処理1402においてFIFOバッファ261が、コマンド受信部202から送信されたコマンドを保持する。処理1404において判定部262が、所定の条件が満たされたか否かを判定する。所定の条件として、例えば前述の第1の条件から第3の条件のいずれか、もしくは第1の条件から第3の条件の任意の組み合わせ、が設定される。所定の条件が満たされたと判定されない場合は、判定部262は処理1404を繰り返し実行し、所定の条件が満たされたと判定された場合は、処理フローは処理1406へ進む。処理1406において生成部263は、コマンドのデータ先読み情報に基づいて、データ先読みコマンドの生成が要求されているか否かを判定する。データ先読みコマンドの生成が要求されていると判定されない場合は、処理フローは処理1402に戻り、データ先読みコマンドの生成が要求されていると判定される場合は、処理フローは処理1408へ進む。処理1408において生成部263が、データ先読みコマンドを生成し、処理1410において生成部263が、データ先読みコマンドをコマンドキュー218へ送信する。その後処理フローは処理1402へ戻る。
図15は、データ先読みコマンド生成部260の他の機能ブロック例である。図15において、データ先読みコマンド生成部260は生成部263、FIFOバッファ261A、261B及び261C(3つのFIFOバッファの何れかを特定する意図のない場合は、単に「FIFOバッファ261」と表記する)、判定部262及び発行部264A、264B及び264C(3つの発行部の何れかを特定する意図のない場合は、単に「発行部264」と表記する)を有する。生成部263は、コマンド受信部202から送信されるコマンドを受信し、チャネル毎にデータ先読みコマンドを生成する。FIFOバッファ261A、261B及び261Cは、生成部263の後段に配置され、生成部263が生成したデータ先読みコマンドをチャネル毎に保持する。FIFOバッファ261A、261B及び261Cは、それぞれ第1チャネル、第2チャネル、第3チャネルに対応する。判定部262は、コマンドキュー218の状況情報を取得し、所定の条件が満たされたか否かをチャネル毎に判定する。発行部264は特定の条件が満たされたチャネルに関して、FIFOバッファ261に保持されたデータ先読みコマンドを、対応するチャネルのコマンドキュー218へ送信する。
次に、判定部262の判定に用いられる所定の条件について、例を挙げて説明する。所定の条件として、「対応するチャネルのコマンドキュー218が空の状態である」という条件(以下、第4の条件と呼ぶ)が判定部262に対して設定されているとする。また、第1チャネルに対応するFIFOバッファ261Aにデータ先読みコマンドが保持されているものとする。判定部262は、各チャネルに対応するコマンドキュー218の状況情報を取得する。例えば第1チャネルに対応するコマンドキュー218Aが空の状態である場合、判定部262は、FIFOバッファ261Aに保持されているデータ先読みコマンドをコマンドキュー218Aに対して発行するよう、発行部264Aに指示する。発行部264Aは、判定部262の指示に基づき、FIFOバッファ261Aに保持されているデータ先読みコマンドをコマンドキュー218Aに送信する。
判定部262の判定に用いられる所定の条件として、「FIFOバッファ261A、261B、261Cにそれぞれ保持されるコマンドの数が所定数以上となった」という条件(以下、第5の条件と呼ぶ)が適用されてもよい。この場合、判定部262は、FIFOバッファ261A、261B及び261Cそれぞれに保持されているコマンドの数をカウントする。そして判定部262は、カウントされたコマンド数が所定数以上となったFIFOバッファ261に保持されているデータ先読みコマンドを、コマンドキュー218に送信するよう、対応する発行部264に指示する。
上記の第4及び第5の条件を組み合わせた条件が、判定部262の判定に用いられる所定の条件として用いられてもよい。例えば「第4の条件と第5の条件の少なくとも一方の条件が満たされた」という条件が適用されてもよい。この場合、第4の条件が満たされなくても、第5の条件が満たされた場合には、判定部262は発行部264に対してデータ先読みコマンドの発行を指示する。これにより、第4の条件が満たされずにFIFOバッファ261の容量が飽和して新たなデータ先読みコマンドを保持できなくなることが防止される。
更に、判定部262に上記の第4又は第5の条件又はこれらの条件を組み合わせた条件が設定された場合であって、FIFOバッファ261にデータ先読みコマンドが保持された状態で、設定された条件が満たされない期間が所定時間以上継続された場合に、判定部262が発行部264にデータ先読みコマンドの発行を指示するよう、データ先読みコマンド生成部260が構成されてもよい。この場合、所定の条件が満たされないことに起因してデータ先読み処理の実行が遅延されることを防止することができる。
図16は、図15に示されたデータ先読みコマンド生成部260によって実行される処理のフローチャートである。処理フローは処理1500により開始され、処理1502において生成部263が、コマンド受信部202から送信されたコマンドを受信する。処理1504において生成部263が、コマンドのデータ先読み情報に基づいて、データ先読みコマンドの生成が要求されているか否かを判定する。データ先読みコマンドの生成が要求されていると判定されない場合は、処理フローは処理1502に戻り、データ先読みコマンドの生成が要求されていると判定される場合は、処理フローは処理1506へ進む。処理1506において生成部263が、データ先読みコマンドを生成し、処理1508においてFIFOバッファ261が、生成されたデータ先読みコマンドを保持する。処理1510において判定部262が、所定の条件が満たされたか否かを判定する。所定の条件として、例えば前述の第4の条件及び第5の条件のいずれか、もしくは第4の条件と第5の条件の組み合わせ、が設定される。所定の条件が満たされたと判定されない場合は、判定部262は処理1510を繰り返し実行し、所定の条件が満たされたと判定された場合は、処理フローは処理1512へ進む。処理1512において発行部264が、FIFOバッファ261に保持されたデータ先読みコマンドをコマンドキュー218へ発行する。その後処理フローは処理1502へ戻る。
このように第2実施例では、データ先読みコマンドがデータ先読みコマンド生成部260からコマンドキュー218へ入力されるタイミングが制御されることにより、データ通常読出しコマンドの実行が遅延することが抑制される。
<第3実施例>
第3実施例では、データ先読みコマンドによってフラッシュメモリ250から読み出されたデータが、その後実際に演算処理部102による演算に使用されたか否かが監視される。そして、データ先読みコマンドにより読み出されたデータ(以下、「先読みデータ」と呼ぶ)であって、実際には演算に使用されなかったデータについては、データ先読みコマンドの発行はその後行われない。これにより、不要なデータ先読みコマンドの発行が抑制される。尚、第1実施例において説明された図1(システム構成図)、図2(システムのハードウェア構成図)、図5(データ通常読出しコマンドのデータ構成図)、図6(保持データテーブル132の内容例)、図7(ストレージ20の機能ブロック図)、図8及び図11(情報処理装置10のCPU100によって実行される処理のフローチャート)、図9及び図10(メモリコントローラ200によって実行される処理のフローチャート)が、第3実施例にも適用され得る。また、第2実施例において説明された、図12(ストレージ20の機能ブロック図)、図13及び図15(データ先読みコマンド生成部260の機能ブロック図)、図14及び図16(データ先読みコマンド生成部260によって実行される処理のフローチャート)が、第3実施例にも適用され得る。
図17は、第3実施例における情報処理装置10のCPU100の機能ブロックを示す図である。第1実施例にて示された機能ブロック(図4)と同一の機能を有する機能ブロックについては、図4にて付された参照符号と同一の参照符号が付され、説明は省略される。CPU100は、図4に示された機能ブロックに加え、記録部121、監視部122、タイマ123、判定部124及びフラグリセット部125として機能する。またCPU100は先読みリストテーブル141を有する。
図18は、先読みリストテーブル141の内容例を示す図である。先読みリストテーブル141には、「論理アドレス」と「書込み時刻」と「判定フラグ」が登録され得る。記録部121は、データ先読み情報生成部113がデータ先読み情報を生成した際、当該データ先読み情報で特定されるフラッシュメモリアドレスに対応する論理アドレスを、先読みリストテーブル141の「論理アドレス」に記録する。また記録部121は、当該データ先読みコマンドに対してストレージ20から送信されたコマンド実行完了通知の受信時刻をタイマ123から取得し、取得された時刻を先読みリストテーブル141の「書込み時刻」に記録する。図18の(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による演算には使用されなかったことを意味する。図18の(B)は、図18(A)にて例示された先読みリストテーブル141の内容が更新された状態を示す図である。図18の(B)においては、論理アドレス「a」についてのデータの先読み処理が行われた後、所定時間内に論理アドレス「a」についてデータ読出しコマンドの生成要求がなされず、論理アドレス「a」の欄に判定フラグが登録されている様子を示している。一方、論理アドレス「b」についてデータの先読み処理が行われた後、所定時間内に論理アドレス「b」についてデータ読出しコマンドの生成要求がなされ、論理アドレス「b」がデータ先読みコマンドリステーブル141から削除されている。尚、論理アドレス「c」については、データの先読み処理が行われてからまだ所定時間が経過しておらず、判定フラグがまだ付されない状態である。
このように、使用実績のない論理アドレスが先読みリストテーブル141に過去実績として蓄積される。
次に、上述の方法で作成された先読みリストテーブル141の利用方法について説明する。コマンド生成要求部104がデータ読出しコマンドの生成要求を行い、コマンド生成要求受信部111が当該生成要求を受信する。データ先読み情報生成部113は当該生成要求に基づき、所定のアルゴリズムに基づいてデータ先読み処理の対象となる論理アドレスを特定する。ここで判定部124は、特定された論理アドレスが、先読みリストテーブル141に記録されているか否かを判定する。特定された論理アドレスが先読みリストテーブル141に記録されており、かつ、当該論理アドレスに対して判定フラグが登録されている場合は、判定部124は、当該論理アドレスを対象としたデータ先読みコマンドの作成は不要であると判定する。そして判定部124は、データ先読み情報生成部113に、データ先読みコマンドの生成は不要であることを通知する。これにより、過去にデータ先読みコマンドにより読み出されたデータであって、実際には演算に使用されなかったデータに対する再度のデータ先読み処理が行われないようにすることができる。
図19は、第3実施例における情報処理装置10のCPU100により実施される処理のうち、主に監視部122によって実行される処理のフローチャートである。図19における処理フローは処理1600により開始され、処理1602において監視部122が、コマンド生成要求受信部111によりデータ読出しコマンドの生成要求が受信されたか否かを判定する。処理1602において、データ読出しコマンドの生成要求が受信されたと判定された場合は、処理フローは処理1604へ進み、データ読出しコマンドが受信されたと判定されない場合は、処理フローは処理1610へ進む。
まず、処理フローが処理1604へ進んだ場合について説明する。処理1604において監視部122は、受信された生成要求により指定される論理アドレスが、先読みリストテーブル141に記録されているか否かを判定する。処理1604において、指定された論理アドレスが先読みリストテーブル141に記録されていると判定された場合は、処理フローは処理1606へ進み、指定された論理アドレスが先読みリストテーブル141に記録されていると判定されない場合は、処理フローは処理1602へ戻る。処理1606において監視部122が、先読みリストテーブル141に登録された論理アドレスに判定フラグが登録されているか否かを判定する。処理1606において判定フラグが登録されていると判定されない場合は、処理フローは処理1608へ進み、判定フラグが登録されていると判定された場合は、処理フローは処理1602へ戻る。処理1608において監視部122が、該当する論理アドレスを先読みリストテーブル141から削除するよう記録部121に指示し、記録部121が先読みリストテーブル141から該当する論理アドレスを削除する。
一方、処理フローが処理1602から処理1610へ進んだ場合、処理1610において監視部122が、フラッシュメモリ250から読み出された後、利用されずに一定時間が経過した先読みデータがあるか否かを判定する。具体的には監視部122は、タイマ123が計測する時刻と、先読みリストテーブル141に記録された書込み時刻との差分に基づき、処理1610の判定を行う。処理1610において、利用されずに一定時間が経過した先読みデータがあると判定されない場合は、処理フローは処理1602へ戻り、利用されずに一定時間が経過した先読みデータがあると判定された場合は、処理フローは処理1612へ進む。処理1612において監視部122は、利用されないで一定時間が経過した先読みデータの欄に判定フラグを登録するよう記録部121へ指示し、記録部121が先読みリストテーブル141に判定フラグを登録する。処理フローは、処理1612の後処理1602へ戻る。このようにして、先読みデータの利用実績が先読みリストテーブル141に蓄積され、その後のデータ先読み情報の生成の際に参照される。
図20は、第3実施例における情報処理装置10のCPU100によって実行される処理のうち、データ先読み情報の生成に関する処理のフローチャートを示す図である。図20に示される処理フローは、図8にて示された処理1016に相当する。処理フローは処理1700により開始され、処理1702においてデータ先読み情報生成部113が、先読みの対象となる論理アドレスを特定する。処理1704において判定部124が、処理1702において特定された論理アドレスが先読みリストテーブル141に記録されているか否かを判定する。特定された論理アドレスが先読みリストテーブル141に記録されていると判定された場合は、処理フローは処理1706へ進み、特定された論理アドレスが先読みリストテーブル141に記録されていると判定されない場合は、処理フローは処理1710へ進む。処理1706において判定部124が、特定された論理アドレスに対して判定フラグが先読みリストテーブル141に登録されているか否かを判定する。判定フラグが登録されていると判定された場合は、処理フローは処理1720にて処理が終了する。この場合はデータ先読み情報として、データ先読みコマンドの生成が不要であることを示す「0」が生成される。判定フラグが登録されていると判定されない場合は、処理フローは処理1710へ進む。処理1710においてデータ先読み情報生成部113は、データ先読み情報として、データ先読みコマンドの生成が必要であることを示す「1」と、データ先読み処理の対象となるフラッシュメモリアドレスを、データ先読み情報として生成し、処理フローは処理1720において終了する。
このように第3実施例では、データ先読み処理によりフラッシュメモリ250から読み出された先読みデータが、その後、演算処理部102によって使用されたか否かが監視される。先読みデータが、読み出された後の一定時間以内に演算処理部102による演算処理において使用されていない場合は、先読みデータの論理アドレスと判定フラグとが対応付けられて先読みリストテーブル141に記録される。そして、以降にその論理アドレスに対するデータ先読みコマンドの発行は行われない。これにより、使用される可能性の低いデータに対するデータ先読みコマンドの発行が抑制される。
次に、図17に示されるフラグリセット部125について説明する。フラグリセット部125は、コマンド生成部112からフラッシュメモリ250に対するデータ書込みコマンドが発行された場合、当該コマンドによってデータが書き換えられる論理アドレス及び判定フラグを、先読みリストテーブル141から削除する機能を有する。データ書込みコマンドが発行された場合は、フラッシュメモリ250に格納されるデータ内容は変更されるため、あるフラッシュメモリアドレスに格納されていたデータであって変更前のものについてなされた論理アドレス及び判定フラグはリセットされる。
ここまで第3実施例について説明した。次に第3実施例の変形例について説明する。第3実施例では、データ先読み処理が行われた後、一定時間内に使用されなかった先読みデータに関して、不使用であることを示す判定フラグが登録される例が開示された。第3実施例の変形例では、DRAM160の先読みデータが保持される領域から、先読みデータが消去された時点で判定フラグが登録される。
本変形例において、保持データテーブル132には、先読みデータがDRAM160に書込まれた時刻が記録される。保持データテーブル132に記録された時刻情報は、当該先読みデータが演算処理部102で使用された場合には、当該先読みデータが使用された時刻により上書きされる。DRAM制御部115は、新しくフラッシュメモリ250から読み出されてくる先読みデータを順次DRAM160に書き込む一方、保持データテーブル132に記録された時刻情報により特定される時刻が古い先読みデータを順に消去する作業を行う。例えば、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から消去される。
図21は、第3実施例の変形例におけるCPU100によって実行される処理のうち、判定フラグの登録に関する処理のフローチャートである。処理フローは処理1800により開始され、処理1802において監視部122が、保持データテーブル132から消去された先読みデータがあるか否かを判定する。消去された先読みデータがあると判定された場合は、処理フローは処理1804へ進み、消去された先読みデータがあると判定されない場合は、監視部122は処理1802を繰り返し実行する。処理1804において監視部122が、保持データテーブル132から消去された先読みデータに対応する論理アドレスが、先読みリストテーブル141に記録されているか否かを判定する。消去された先読みデータに対応する論理アドレスが先読みリストテーブル141に記録されていると判定された場合は、処理フローは処理1806へ進み、消去された先読みデータに対応する論理アドレスが先読みリストテーブル141に記録されていると判定されない場合は、処理フローは処理1802へ戻る。処理1806において監視部122が、先読みリストテーブル141に記録されている論理アドレスに対して判定フラグを登録するよう記録部121に指示し、記録部121が、判定フラグを登録する。処理フローは、処理1806の後、処理1802へ戻る。
図22は、第3実施例の変形例におけるCPU100によって実行される処理のうち、先読みリストテーブル141から論理アドレスを消去する処理のフローチャートである。処理フローは処理1900により開始され、処理1902において監視部122が、データ読出しコマンドの生成要求がコマンド生成要求受信部111によって受信されたか否かを判定する。データ読出しコマンドの生成要求が受信されたと判定された場合は、処理フローは処理1904へ進み、データ読出しコマンドの生成要求が受信されたと判定されない場合は、監視部122は処理1902を繰り返し実行する。処理1904において監視部122が、コマンド生成要求にて指定される論理アドレスが先読みリストテーブル141に記録されているか否かを判定する。コマンド生成要求にて指定される論理アドレスが記録されていると判定された場合は、処理フローは処理1906へ進み、コマンド生成要求にて指定される論理アドレスが記録されていると判定されない場合は、処理フローは処理1902へ戻る。処理1906において監視部122が、コマンド生成要求にて指定される論理アドレスに判定フラグが登録されているか否かを判定する。判定フラグが登録されていると判定されない場合は、処理フローは処理1908へ進み、判定フラグが登録されていると判定された場合は、処理フローは処理1902へ戻る。そして処理1908において監視部122が、先読みリストテーブル141に記録されている論理アドレスを消去するよう記録部121に指示し、記録部121が論理アドレスを先読みリストテーブル141から消去する。処理フローは、処理1908の後、処理1902へ戻る。
開示の実施例に基づき、更に以下の付記を開示する。
(付記1)
第1アドレス領域に格納された第1データを指定するコマンド生成要求に基づき、前記第1データを読出し対象とする第1読出しコマンドを生成する第1コマンド生成部と、
前記コマンド生成要求に基づき、前記第1アドレス領域とは異なる第2アドレス領域に格納された第2データを読出し対象とする第2読出しコマンドを生成する第2コマンド生成部と、
前記第1コマンド生成部によって生成された前記第1読出しコマンドを保持する第1コマンドバッファと、
前記第2コマンド生成部によって生成された前記第2読出しコマンドを保持する第2コマンドバッファと、
前記第1コマンドバッファ及び前記第2コマンドバッファに保持される前記第1読出しコマンド及び前記第2読出しコマンドを実行するコマンド実行部と、
を有し、
前記コマンド実行部は、前記第1コマンドバッファが空の状態であることを条件として、前記第2コマンドバッファに格納されている前記第2読出しコマンドを実行する
ことを特徴とする情報処理システム。
(付記2)
前記情報処理システムは、情報処理装置と、前記情報処理装置に接続されたストレージとを有し、
前記情報処理装置は、第1メモリを有し、
前記ストレージは、第2メモリを有し、
前記第1読出しコマンド及び前記第2読出しコマンドが実行されることにより、前記第2メモリの前記第1アドレス領域及び前記第2アドレス領域にそれぞれ格納されている前記第1データ及び前記第2データが読み出され、読み出された前記第1データ及び前記第2データは、前記第1メモリに保持されることを特徴とする付記1に記載の情報処理システム。
(付記3)
前記第1コマンド生成部は、前記情報処理装置に設けられ、
前記第2コマンド生成部は、前記ストレージに設けられ、
前記第1コマンド生成部は、前記第2アドレス領域を示す情報を前記第2コマンド生成部へ送信することを特徴とする付記2に記載の情報処理システム。
(付記4)
前記情報処理装置は、情報処理に使用される前記第1データが格納される前記第1メモリの前記第1アドレス領域を指定する前記第1読出しコマンドを生成し、
前記情報処理装置は、前記第1アドレスに基づき、前記第2データが前記情報処理に使用されることを予測し、
前記情報処理装置は、前記予測に基づき、前記第2アドレス領域を特定し、
前記第2コマンド生成部は、特定された前記第2アドレス領域を読出し対象とする前記第2読出しコマンドを生成する
ことを特徴とする付記1乃至3何れか一に記載の情報処理システム。
(付記5)
前記第1コマンドバッファは、第1First In First Out(FIFO)バッファであり、
前記第2コマンドバッファは、第2FIFOバッファである
ことを特徴とする付記1乃至4何れか一に記載の情報処理システム。
(付記6)
前記第1メモリは揮発性メモリであり、
前記第2メモリは不揮発性メモリである
ことを特徴とする付記1乃至5何れか一に記載の情報処理システム。
(付記7)
第1アドレス領域に格納された第1データを指定するコマンド生成要求に基づき、前記第1データを読出し対象とする第1読出しコマンドを生成する第1コマンド生成部と、
前記コマンド生成要求に基づき、前記第1アドレス領域とは異なる第2アドレス領域に格納された第2データを読出し対象とする第2読出しコマンドを生成する第2コマンド生成部と、
前記第1コマンド生成部及び前記第2コマンド生成部によってそれぞれ生成された前記第1読出しコマンド及び前記第2読出しコマンドを保持する第1コマンドバッファと、
前記第1コマンドバッファに保持される前記第1読出しコマンド及び前記第2読出しコマンドを実行するコマンド実行部と、
を有し、
前記第2コマンド生成部は、前記第1コマンドバッファのコマンド保持状況に基づいて、前記第2コマンド生成部にて生成される前記第2読出しコマンドを、前記第1コマンドバッファに保持させるタイミングを制御することを特徴とする情報処理システム。
(付記8)
前記第2コマンド生成部は、前記第1コマンドバッファに保持されるコマンドの数が所定値以下である場合に、前記第2コマンド生成部にて生成される前記第2読出しコマンドを、前記第1コマンドバッファに保持させることを特徴とする付記7に記載の情報処理システム。
(付記9)
前記第1コマンド生成部によって生成された前記第1読出しコマンドは、前記第1コマンドバッファ及び前記第2コマンド生成部へ送信され、
前記第2コマンド生成部は、前記第1読出しコマンドを保持する第2コマンドバッファを有し、
前記第2コマンド生成部は、前記第2コマンドバッファに前記第1コマンド保持されるコマンドの数が所定値以上である場合に、前記第2コマンド生成部にて生成される前記第2読出しコマンドを、前記第1コマンドバッファに保持させることを特徴とする付記7又は8に記載の情報処理システム。
(付記10)
前記第2コマンド生成部は、生成された前記第2読出しコマンドを保持する第2コマンドバッファを有し、
前記第2コマンド生成部は、前記第2コマンドバッファに保持される前記第2読出しコマンドの数が所定値以上である場合に、前記第2読出しコマンドを前記第1コマンドバッファに保持させることを特徴とする付記7又は8に記載の情報処理システム。
(付記11)
前記情報処理システムは、情報処理装置と、前記情報処理装置に接続されたストレージとを有し、
前記情報処理装置は、第1メモリを有し、
前記ストレージは、第2メモリを有し、
前記第1読出しコマンド及び前記第2読出しコマンドが実行されることにより、前記第2メモリの前記第1アドレス領域及び前記第2アドレス領域にそれぞれ格納されている前記第1データ及び前記第2データが読み出され、読み出された前記第1データ及び前記第2データは、前記第1メモリに保持されることを特徴とする付記7乃至10何れか一に記載の情報処理システム。
(付記12)
前記第1コマンド生成部は、前記情報処理装置に設けられ、
前記第2コマンド生成部は、前記ストレージに設けられ、
前記第1コマンド生成部は、前記第2アドレス領域を示す情報を前記第2コマンド生成部へ送信することを特徴とする付記11に記載の情報処理システム。
(付記13)
前記情報処理装置は、情報処理に使用される前記第1データが格納される前記第2メモリの前記第1アドレス領域を指定する前記第1読出しコマンドを生成し、
前記情報処理装置は、前記第1アドレスに基づき、前記第2データが前記情報処理に使用されることを予測し、
前記情報処理装置は、前記予測に基づき、前記第2アドレス領域を特定し、
前記第2コマンド生成部は、特定された前記第2アドレス領域を読出し対象とする前記第2読出しコマンドを生成する
ことを特徴とする付記7乃至12何れか一に記載の情報処理システム。
(付記14)
前記第1コマンドバッファは、第1FIFOバッファであり、
前記第2コマンドバッファは、第2FIFOバッファである
ことを特徴とする付記7乃至13何れか一に記載の情報処理システム。
(付記15)
前記第1メモリは揮発性メモリであり、
前記第2メモリは不揮発性メモリである
ことを特徴とする付記7乃至14何れか一に記載の情報処理システム。
(付記16)
第1アドレス領域に格納された第1データを指定するコマンド生成要求に基づき、前記第1データを読出し対象とする第1読出しコマンドを生成する第1コマンド生成部と、
前記コマンド生成要求に基づき、前記第1アドレス領域とは異なる第2アドレス領域に格納された第2データを読出し対象とする第2読出しコマンドを生成する第2コマンド生成部と、
前記第1読出しコマンド及び前記第2読出しコマンドに基づき、前記第1アドレス及び前記第2アドレス領域からそれぞれ第1データ及び第2データを読み出すコマンド実行部と、
読み出された前記第1データ及び前記第2データを保持する第1メモリと、を有し、
第2コマンド生成部は、前記第2データが前記第1メモリに保持された後の一定期間内に、前記第2アドレス領域を指定する他のコマンド生成要求がなされなかった場合は、前記一定期間が経過した後に、前記第1アドレス領域を指定する他のコマンド生成要求がなされた場合に、前記第2アドレス領域を指定する第3読出しコマンドを生成しない
ことを特徴とする情報処理システム。
(付記17)
前記情報処理システムは、情報処理装置と、前記情報処理装置に接続されたストレージとを有し、
前記情報処理装置は、前記第1メモリを有し、
前記ストレージは、第2メモリを有する
ことを特徴とする付記16に記載の情報処理システム。
(付記18)
前記第1コマンド生成部は、前記情報処理装置に設けられ、
前記第2コマンド生成部は、前記ストレージに設けられ、
前記第1コマンド生成部は、前記第2アドレス領域を示す情報を前記第2コマンド生成部へ送信することを特徴とする付記17に記載の情報処理システム。
(付記19)
前記情報処理装置は、情報処理に使用される前記第1データが格納される前記第1メモリの前記第1アドレス領域を指定する前記第1読出しコマンドを生成し、
前記情報処理装置は、前記第1アドレスに基づき、前記第2データが前記情報処理に使用されることを予測し、
前記情報処理装置は、前記予測に基づき、前記第2アドレス領域を特定し、
前記第2コマンド生成部は、特定された前記第2アドレス領域を読出し対象とする前記第2読出しコマンドを生成する
ことを特徴とする付記16乃至18何れか一に記載の情報処理システム。
(付記20)
第1コマンド生成部は、前記第2データが前記第1メモリに保持された後の一定期間内に、前記第2アドレス領域を指定する第2読出しコマンド生成要求がなされなかった場合は、前記一定期間が経過した後に、前記第1アドレス領域を指定する他のコマンド生成要求がなされた場合に、前記第2アドレス領域を示す情報を前記第2コマンド生成部へ送信しないこと特徴とする付記16乃至19何れか一に記載の情報処理システム。
10 情報処理装置
11 データ処理部
12 データ保持部
20 ストレージ
21 制御部
22 データ格納部
100 CPU
150 ROM
160 DRAM
170 通信デバイス
180 インターフェースカード
190 バス
200 メモリコントローラ
250A、250B、250C フラッシュメモリ
280 インターフェースカード
101 アプリケーション層
102 演算処理部
103 ファイルシステム
104 コマンド生成要求部
105 OS
110 デバイスドライバ
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コマンドキュー
218A、218B、218C コマンドキュー
220A、220B、220C コマンド選択部
230A、230B、230C コマンド実行部
240 データ送信部
260 データ先読みコマンド生成部
261、261A、261B、261C FIFOバッファ
262 判定部
263 生成部
264A、264B、264C 発行部

Claims (10)

  1. 第1アドレス領域に格納された第1データを指定するコマンド生成要求に基づき、前記第1データを読出し対象とする第1読出しコマンドを生成する第1コマンド生成部と、
    前記コマンド生成要求に基づき、前記第1アドレス領域とは異なる第2アドレス領域に格納された第2データを読出し対象とする第2読出しコマンドを生成する第2コマンド生成部と、
    前記第1コマンド生成部によって生成された前記第1読出しコマンドを保持する第1コマンドバッファと、
    前記第2コマンド生成部によって生成された前記第2読出しコマンドを保持する第2コマンドバッファと、
    前記第1コマンドバッファ及び前記第2コマンドバッファに保持される前記第1読出しコマンド及び前記第2読出しコマンドを実行するコマンド実行部と、
    を有し、
    前記コマンド実行部は、前記第1コマンドバッファが空の状態であることを条件として、前記第2コマンドバッファに格納されている前記第2読出しコマンドを実行する
    ことを特徴とする情報処理システム。
  2. 前記情報処理システムは、情報処理装置と、前記情報処理装置に接続されたストレージとを有し、
    前記情報処理装置は、第1メモリを有し、
    前記ストレージは、第2メモリを有し、
    前記第1読出しコマンド及び前記第2読出しコマンドが実行されることにより、前記第2メモリの前記第1アドレス領域及び前記第2アドレス領域にそれぞれ格納されている前記第1データ及び前記第2データが読み出され、読み出された前記第1データ及び前記第2データは、前記第1メモリに保持されることを特徴とする請求項1に記載の情報処理システム。
  3. 前記第1コマンド生成部は、前記情報処理装置に設けられ、
    前記第2コマンド生成部は、前記ストレージに設けられ、
    前記第1コマンド生成部は、前記第2アドレス領域を示す情報を前記第2コマンド生成部へ送信することを特徴とする請求項2に記載の情報処理システム。
  4. 前記情報処理装置は、情報処理に使用される前記第1データが格納される前記第1メモリの前記第1アドレス領域を指定する前記第1読出しコマンドを生成し、
    前記情報処理装置は、前記第1アドレスに基づき、前記第2データが前記情報処理に使用されることを予測し、
    前記情報処理装置は、前記予測に基づき、前記第2アドレス領域を特定し、
    前記第2コマンド生成部は、特定された前記第2アドレス領域を読出し対象とする前記第2読出しコマンドを生成する
    ことを特徴とする請求項1乃至3何れか一項に記載の情報処理システム。
  5. 第1アドレス領域に格納された第1データを指定するコマンド生成要求に基づき、前記第1データを読出し対象とする第1読出しコマンドを生成する第1コマンド生成部と、
    前記コマンド生成要求に基づき、前記第1アドレス領域とは異なる第2アドレス領域に格納された第2データを読出し対象とする第2読出しコマンドを生成する第2コマンド生成部と、
    前記第1コマンド生成部及び前記第2コマンド生成部によってそれぞれ生成された前記第1読出しコマンド及び前記第2読出しコマンドを保持する第1コマンドバッファと、
    前記第1コマンドバッファに保持される前記第1読出しコマンド及び前記第2読出しコマンドを実行するコマンド実行部と、
    を有し、
    前記第2コマンド生成部は、前記第1コマンドバッファのコマンド保持状況に基づいて、前記第2コマンド生成部にて生成される前記第2読出しコマンドを、前記第1コマンドバッファに保持させるタイミングを制御することを特徴とする情報処理システム。
  6. 前記第2コマンド生成部は、前記第1コマンドバッファに保持されるコマンドの数が所定値以下である場合に、前記第2コマンド生成部にて生成される前記第2読出しコマンドを、前記第1コマンドバッファに保持させることを特徴とする請求項5に記載の情報処理システム。
  7. 前記第1コマンド生成部によって生成された前記第1読出しコマンドは、前記第1コマンドバッファ及び前記第2コマンド生成部へ送信され、
    前記第2コマンド生成部は、前記第1読出しコマンドを保持する第2コマンドバッファを有し、
    前記第2コマンド生成部は、前記第2コマンドバッファに前記第1コマンド保持されるコマンドの数が所定値以上である場合に、前記第2コマンド生成部にて生成される前記第2読出しコマンドを、前記第1コマンドバッファに保持させることを特徴とする請求項5又は6に記載の情報処理システム。
  8. 前記第2コマンド生成部は、生成された前記第2読出しコマンドを保持する第2コマンドバッファを有し、
    前記第2コマンド生成部は、前記第2コマンドバッファに保持される前記第2読出しコマンドの数が所定値以上である場合に、前記第2読出しコマンドを前記第1コマンドバッファに保持させることを特徴とする請求項7に記載の情報処理システム。
  9. 第1アドレス領域に格納された第1データを指定するコマンド生成要求に基づき、前記第1データを読出し対象とする第1読出しコマンドを生成する第1コマンド生成部と、
    前記コマンド生成要求に基づき、前記第1アドレス領域とは異なる第2アドレス領域に格納された第2データを読出し対象とする第2読出しコマンドを生成する第2コマンド生成部と、
    前記第1読出しコマンド及び前記第2読出しコマンドに基づき、前記第1アドレス及び前記第2アドレス領域からそれぞれ第1データ及び第2データを読み出すコマンド実行部と、
    読み出された前記第1データ及び前記第2データを保持する第1メモリと、を有し、
    第2コマンド生成部は、前記第2データが前記第1メモリに保持された後の一定期間内に、前記第2アドレス領域を指定する他のコマンド生成要求がなされなかった場合は、前記一定期間が経過した後に、前記第1アドレス領域を指定する他のコマンド生成要求がなされた場合に、前記第2アドレス領域を指定する第3読出しコマンドを生成しない
    ことを特徴とする情報処理システム。
  10. 前記情報処理システムは、情報処理装置と、前記情報処理装置に接続されたストレージとを有し、
    前記情報処理装置は、前記第1メモリを有し、
    前記ストレージは、第2メモリを有する
    ことを特徴とする請求項9に記載の情報処理システム。
JP2016125025A 2016-06-23 2016-06-23 情報処理システム Pending JP2017228172A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016125025A JP2017228172A (ja) 2016-06-23 2016-06-23 情報処理システム
US15/609,064 US11029878B2 (en) 2016-06-23 2017-05-31 Information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016125025A JP2017228172A (ja) 2016-06-23 2016-06-23 情報処理システム

Publications (1)

Publication Number Publication Date
JP2017228172A true JP2017228172A (ja) 2017-12-28

Family

ID=60677558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016125025A Pending JP2017228172A (ja) 2016-06-23 2016-06-23 情報処理システム

Country Status (2)

Country Link
US (1) US11029878B2 (ja)
JP (1) JP2017228172A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020123041A (ja) * 2019-01-29 2020-08-13 キオクシア株式会社 メモリシステムおよび制御方法
JP2022517718A (ja) * 2019-01-17 2022-03-10 マイクロソフト テクノロジー ライセンシング,エルエルシー 読取要求及び読取完了通知のキューイング及びバッチ処理によるi/oあたりのcpuオーバーヘッドの低減

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS641047A (en) * 1987-02-13 1989-01-05 Internatl Business Mach Corp <Ibm> Data processing system
JPH1078912A (ja) * 1996-09-02 1998-03-24 Matsushita Electric Ind Co Ltd データ入出力処理装置
JP2001014111A (ja) * 1999-06-29 2001-01-19 Hitachi Ltd 回転形記憶装置の制御方法
JP2004318940A (ja) * 2003-04-14 2004-11-11 Renesas Technology Corp 記憶装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966728A (en) * 1992-01-02 1999-10-12 International Business Machines Corp. Computer system and method for snooping date writes to cacheable memory locations in an expansion memory device
JP3175675B2 (ja) * 1997-12-04 2001-06-11 日本電気株式会社 プリフェッチ制御装置
US6484239B1 (en) * 1997-12-29 2002-11-19 Intel Corporation Prefetch queue
JP2001012589A (ja) 1999-06-29 2001-01-16 Jatco Transtechnology Ltd 自動変速機の油圧制御装置
JP3873589B2 (ja) 2000-07-12 2007-01-24 株式会社日立製作所 プロセッサシステム
US6832280B2 (en) * 2001-08-10 2004-12-14 Freescale Semiconductor, Inc. Data processing system having an adaptive priority controller
JP2004164144A (ja) 2002-11-12 2004-06-10 Hitachi Ltd ディスク装置
JP4151977B2 (ja) 2005-03-16 2008-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 先読み装置、先読み方法、および先読みプログラム
US7437520B2 (en) * 2005-07-11 2008-10-14 International Business Machines Corporation Adaptive snoop-and-forward mechanisms for multiprocessor systems
US8370456B2 (en) * 2006-09-22 2013-02-05 Microsoft Corporation Intelligent pre-fetching using compound operations
US8489851B2 (en) * 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
JP5036078B2 (ja) 2010-04-12 2012-09-26 ルネサスエレクトロニクス株式会社 記憶装置
JP2012064158A (ja) * 2010-09-17 2012-03-29 Toshiba Corp メモリ管理装置及びメモリ管理方法
JP5259755B2 (ja) * 2011-02-25 2013-08-07 株式会社東芝 マルチチャネルを有するメモリ装置及び同装置におけるメモリアクセス方法
US9569361B2 (en) * 2014-01-10 2017-02-14 Samsung Electronics Co., Ltd. Pre-fetch chaining
US9418013B2 (en) * 2014-06-30 2016-08-16 Intel Corporation Selective prefetching for a sectored cache
KR20160104387A (ko) * 2015-02-26 2016-09-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9858189B2 (en) * 2015-06-24 2018-01-02 International Business Machines Corporation Hybrid tracking of transaction read and write sets
US10152419B2 (en) * 2015-11-10 2018-12-11 International Business Machines Corporation Deferred response to a prefetch request

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS641047A (en) * 1987-02-13 1989-01-05 Internatl Business Mach Corp <Ibm> Data processing system
JPH1078912A (ja) * 1996-09-02 1998-03-24 Matsushita Electric Ind Co Ltd データ入出力処理装置
JP2001014111A (ja) * 1999-06-29 2001-01-19 Hitachi Ltd 回転形記憶装置の制御方法
JP2004318940A (ja) * 2003-04-14 2004-11-11 Renesas Technology Corp 記憶装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022517718A (ja) * 2019-01-17 2022-03-10 マイクロソフト テクノロジー ライセンシング,エルエルシー 読取要求及び読取完了通知のキューイング及びバッチ処理によるi/oあたりのcpuオーバーヘッドの低減
JP7437400B2 (ja) 2019-01-17 2024-02-22 マイクロソフト テクノロジー ライセンシング,エルエルシー 読取要求及び読取完了通知のキューイング及びバッチ処理によるi/oあたりのcpuオーバーヘッドの低減
JP2020123041A (ja) * 2019-01-29 2020-08-13 キオクシア株式会社 メモリシステムおよび制御方法
JP7159069B2 (ja) 2019-01-29 2022-10-24 キオクシア株式会社 メモリシステムおよび制御方法

Also Published As

Publication number Publication date
US11029878B2 (en) 2021-06-08
US20170371586A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
US10782910B2 (en) Methods for internal data movements of a flash memory device and apparatuses using the same
US8775739B2 (en) Memory system including first and second caches and controlling readout of data therefrom
US10101946B2 (en) Method of reading data from a memory device and information processing system controlling data reading
US8171239B2 (en) Storage management method and system using the same
JP5192228B2 (ja) フラッシュコントローラのキャッシュ構造
KR102618699B1 (ko) 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
JP5762930B2 (ja) 情報処理装置および半導体記憶装置
JP6517685B2 (ja) メモリシステムおよび制御方法
KR101078792B1 (ko) 비휘발성 메모리의 읽기 지연을 감소시키는 방법 및 장치
US20160232103A1 (en) Block storage apertures to persistent memory
JP5492156B2 (ja) 情報処理装置およびキャッシュ方法
KR20170032502A (ko) 스토리지 장치 및 그것의 인터럽트 발생 방법
US11513723B2 (en) Read handling in zoned namespace devices
US20200356491A1 (en) Data storage device and method for loading logical-to-physical mapping table thereof
US10235284B2 (en) Memory system
US8185687B2 (en) Semiconductor storage device and method of controlling semiconductor storage device
JP2011070365A (ja) メモリシステム
US12086462B2 (en) Pre-suspend before program in a non-volatile memory (NVM)
JP2021149374A (ja) データ処理装置
US11029878B2 (en) Information processing system
JP2013200692A (ja) メモリシステム
WO2015170702A1 (ja) ストレージ装置と情報処理システム及びストレージ制御方法とプログラム
JP6988445B2 (ja) ストレージシステム、制御装置及び制御方法
JP2016062406A (ja) メモリシステム、メモリシステムの制御方法及びプログラム
KR100541642B1 (ko) 플래시 메모리의 데이터 관리 장치 및 방법

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20180528

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190311

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201117

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210330