JP6132010B2 - Control device, control program, and control method - Google Patents
Control device, control program, and control method Download PDFInfo
- Publication number
- JP6132010B2 JP6132010B2 JP2015506463A JP2015506463A JP6132010B2 JP 6132010 B2 JP6132010 B2 JP 6132010B2 JP 2015506463 A JP2015506463 A JP 2015506463A JP 2015506463 A JP2015506463 A JP 2015506463A JP 6132010 B2 JP6132010 B2 JP 6132010B2
- Authority
- JP
- Japan
- Prior art keywords
- logical
- address
- physical
- data
- block
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本発明は、制御装置、制御プログラム、および制御方法に関する。 The present invention relates to a control device, a control program, and a control method.
従来、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理システムが知られている。このような情報処理システムの一例として、複数のNANDフラッシュメモリデバイスをストレージとして使用する情報処理システムが知られている。なお、以下の説明では、NANDフラッシュメモリデバイスをNANDデバイスと記載する。 Conventionally, an information processing system using a nonvolatile memory that operates at a higher speed than a magnetic disk is known. As an example of such an information processing system, an information processing system using a plurality of NAND flash memory devices as storage is known. In the following description, the NAND flash memory device is described as a NAND device.
例えば、NANDデバイスからデータを読み出すコントローラは、情報処理システムがデータの指定に用いる論理アドレスと、読み出し対象となるデータが格納されたNANDデバイスの領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。また、コントローラは、データの読み出し要求と読み出し対象の論理アドレスとを受信すると、受信した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルから取得する。そして、コントローラは、取得した物理アドレスが示す領域にアクセスして、NANDデバイスからデータの読み出しを行う。 For example, a controller that reads data from a NAND device has an address conversion table that associates a logical address used for data designation by the information processing system with a physical address indicating an area of the NAND device in which data to be read is stored. Have. When the controller receives the data read request and the logical address to be read, the controller obtains a physical address associated with the received logical address from the address conversion table. The controller then accesses the area indicated by the acquired physical address and reads data from the NAND device.
ここで、アドレス変換テーブルのサイズは、NANDデバイスの総容量に比例するので、大容量のストレージについて、アドレス変換テーブルの全てをコントローラに記憶させるのは、現実的ではない。このため、アドレス変換テーブルをNANDデバイス上に格納し、コントローラがアドレス変換テーブルの一部を保持する技術が知られている。 Here, since the size of the address conversion table is proportional to the total capacity of the NAND device, it is not realistic to store the entire address conversion table in the controller for a large capacity storage. For this reason, a technique is known in which an address conversion table is stored on a NAND device, and a controller holds a part of the address conversion table.
例えば、コントローラは、アドレス変換テーブルの一部と、アドレス変換テーブルが格納された物理アドレスを示す変換テーブルタグとを保持する。そして、コントローラは、読み出し要求と論理アドレスとを受信すると、保持するアドレス変換テーブルに受信した論理アドレスが含まれるか否かを判定する。そして、コントローラは、保持するアドレス変換テーブルに受信した論理アドレスが含まれている場合は、論理アドレスに対応付けられた物理アドレスを用いて、NANDデバイスからデータの読み出しを行う。 For example, the controller holds a part of the address conversion table and a conversion table tag indicating a physical address in which the address conversion table is stored. When receiving the read request and the logical address, the controller determines whether or not the received logical address is included in the held address conversion table. When the received logical address is included in the held address conversion table, the controller reads data from the NAND device using the physical address associated with the logical address.
一方、コントローラは、保持するアドレス変換テーブルに受信した論理アドレスが含まれていない場合は、変換テーブルタグを用いて、受信した論理アドレスを含むアドレス変換テーブルが記憶された物理アドレスを識別する。また、コントローラは、識別した物理アドレスを用いて、NANDデバイスからアドレス変換テーブルの一部を読み出す。そして、コントローラは、読み出したアドレス変換テーブルから、論理アドレスに対応付けられた物理アドレスを取得し、取得した物理アドレスを用いて、NANDデバイスからデータの読み出しを行う。 On the other hand, if the received logical address is not included in the held address conversion table, the controller uses the conversion table tag to identify the physical address in which the address conversion table including the received logical address is stored. In addition, the controller reads a part of the address conversion table from the NAND device using the identified physical address. Then, the controller acquires a physical address associated with the logical address from the read address conversion table, and reads data from the NAND device using the acquired physical address.
しかしながら、上述したアドレス変換テーブルの一部をコントローラが保持する技術では、保持するアドレス変換テーブルに読み出し対象の論理アドレスが含まれていないと、アドレス変換テーブルをNANDデバイスから読み出す。その後、読み出したアドレス変換テーブルに従って、NANDデバイスからデータの読み出しを行うので、NANDデバイスからデータを読み出す際のレイテンシが増加するという問題がある。 However, in the technique in which the controller holds a part of the address conversion table described above, the address conversion table is read from the NAND device if the held address conversion table does not include the logical address to be read. Thereafter, data is read from the NAND device in accordance with the read address conversion table, so that there is a problem that latency when reading data from the NAND device increases.
また、NANDデバイスの容量が増大すると、アドレス変換テーブル全体の大きさも増大する。この結果、コントローラが保持するアドレス変換テーブルに読み出し対象の論理アドレスが含まれる確率が低くなるので、レイテンシが増加してしまう。 As the capacity of the NAND device increases, the size of the entire address conversion table also increases. As a result, the probability that the logical address to be read is included in the address conversion table held by the controller is lowered, and the latency is increased.
1つの側面では、本願は、不揮発性メモリに対するアクセスにおいて、アドレス変換に要する時間の短縮を目的とする。 In one aspect, an object of the present application is to shorten the time required for address conversion in accessing a nonvolatile memory.
1つの側面では、記憶装置からデータを読み出す制御装置である。また、制御装置は、論理ブロック番号と論理ページ番号とを組み合わせた論理番号に、物理ブロック番号と物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する。また、制御装置は、複数の論理ブロック番号を含むグループごとに、データの読み出し要求の数と、データの書き込み要求の数とを計数する。また、制御装置は、計数した読み出し要求の数から書き込み要求の数を減算した数が最も多いグループに含まれる論理ブロック番号を1つ選択し、選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を変換テーブルから識別する。また、制御装置は、識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させる。また、制御装置は、データを移動させたブロックの物理ブロック番号と、選択部が選択した論理ブロック番号とを対応付けた早引きテーブルを記憶する。そして、制御装置は、読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を早引きテーブルから取得する。その後、制御装置は、取得した物理ブロック番号が示すブロックに格納されたデータのうち、受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す。 In one aspect, the control device reads data from a storage device. Further, the control device stores a conversion table in which a physical number obtained by combining a physical block number and a physical page number is associated with a logical number obtained by combining a logical block number and a logical page number. The control device counts the number of data read requests and the number of data write requests for each group including a plurality of logical block numbers. Further, the control device selects one logical block number included in the group having the largest number obtained by subtracting the number of write requests from the counted number of read requests, and associates it with the logical number including the selected logical block number. Identifies the physical number from the conversion table. In addition, the control device stores the data in the storage area indicated by the identified physical number in the storage area included in one block and indicated by the same physical page number as the logical page number included in the logical number of the data Move to. In addition, the control device stores a quick lookup table in which the physical block number of the block to which the data has been moved is associated with the logical block number selected by the selection unit. Then, when receiving the logical number indicating the area in which the data to be read is stored, the control device acquires the physical block number associated with the logical block number included in the received logical number from the early lookup table. Thereafter, the control device reads data stored in the area indicated by the same physical page number as the logical page number included in the received logical number, among the data stored in the block indicated by the acquired physical block number.
1つの側面では、不揮発性メモリに対するアクセスにおいて、アドレス変換に要する時間を短縮できる。 In one aspect, the time required for address conversion can be shortened in accessing a nonvolatile memory.
以下に添付図面を参照して本願に係る制御装置、制御プログラムおよび制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により開示技術が限定されるものではない。また、各実施例は、矛盾しない範囲で適宜組みあわせてもよい。 Hereinafter, embodiments of a control device, a control program, and a control method according to the present application will be described in detail with reference to the accompanying drawings. The disclosed technology is not limited by this embodiment. In addition, the embodiments may be combined as appropriate within a consistent range.
以下の実施例1では、図1を用いて、本願に係る制御装置を含む情報処理装置の一例を説明する。図1は、実施例1に係る情報処理装置を説明する図である。図1に示す例では、情報処理装置1は、複数のメモリ2a、2b、複数のCPU(Central Processing Unit)3a、3b、I/O(Input Output)ハブ4、複数のSSD(Solid State Drive)5a、5bを有する。また、SSD5aは、NANDコントローラ6a、および複数の記憶デバイス7a〜10aを有する。
In the following first embodiment, an example of an information processing device including a control device according to the present application will be described with reference to FIG. FIG. 1 is a diagram illustrating the information processing apparatus according to the first embodiment. In the example shown in FIG. 1, the
また、SSD5bは、NANDコントローラ6b、および複数の記憶デバイス7b〜10bを有する。なお、以下の説明では、NANDコントローラ6b、および複数の記憶デバイス7b〜10bは、NANDコントローラ6a、および複数の記憶デバイス7a〜10aと同様の機能を発揮するものとして、説明を省略する。
The SSD 5b includes a
各メモリ2a、2bは、各CPU3a、3bが演算処理に用いるデータを記憶する記憶装置である。また、各CPU3a、3bは、メモリ2a、2bが記憶するデータを用いて、各種演算処理を行う演算処理装置である。例えば、CPU3a、3bは、NUMA(Non-Uniform Memory Access)の技術を用いて、メモリ2a、2bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。
The
また、CPU3a、3bは、I/Oハブ4を介して、各SSD5a、5bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。詳細には、CPU3aは、SSD5aに対し、データの読み出し要求や書き込み要求を発行し、各記憶デバイス7a〜10aからデータの読み出しや書き込みを行う。例えば、CPU3aは、SSD5aに対し、データを指定する論理アドレスが格納された読み出し要求を発行する。また、CPU3aは、データの書き込み先を指定する論理アドレスと、書き込み対象となるデータとが格納された書き込み要求を発行する。
Further, the CPUs 3a and 3b acquire data stored in the
記憶デバイス7aは、各種データを記憶する不揮発性メモリである。詳細には、記憶デバイス7aは、データの記憶領域であるページを複数有し、ページ単位でデータの書き込みを行う。また、記憶デバイス7aは、複数のページを有するブロックを複数有し、ブロック単位でデータの消去を行う。
The
NANDコントローラ6aは、各記憶デバイス7a〜10aに対してアクセスし、データの読み出しや書き込みを行う。例えば、NANDコントローラ6aは、各CPU3a、3bがデータが記憶された記憶領域を指定する際に用いる論理アドレスと、データが格納された記憶デバイス7a〜10aの記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。
The
そして、NANDコントローラ6aは、読み出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読み出しを行う。その後、NANDコントローラ6aは、I/Oハブ4を介して、読み出したデータをCPU3aに送信する。
When the
なお、以下の説明では、理解を容易にするため、各ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、情報処理装置1が実行するシステムは、各ページの先頭アドレスとなる論理アドレスに対する読み出し要求や書き込み要求を発行するものとする。
In the following description, in order to facilitate understanding, a logical address that is the top address of each page is simply described as a logical address, and a physical address that is the top address of each page is simply described as a physical address. In addition, the system executed by the
また、NANDコントローラ6aは、記憶デバイス7a〜10aが、複数のブロックを有し、各ブロックに2q個のページが含まれている場合は、以下の処理を行う。まず、NANDコントローラ6aは、論理アドレスの下位qビットを論理的な1つのブロック内において、ページを識別するための論理ページ番号とし、残りの論理アドレスの上位pビットを論理的な1つのブロックを示す論理ブロックアドレスとする。Also,
また、NANDコントローラ6aは、物理アドレスの上位pビットを物理的な1つのブロックを示す物理ブロックアドレスとし、物理アドレスの下位qビットを物理的な1つのブロック内において、各ページを識別するための物理ページ番号とする。つまり、NANDコントローラ6aは、論理アドレスを、論理ブロックを示す論理ブロックアドレスと、論理ページを論理ブロックごとに示す論理ページ番号とに分割する。また、NANDコントローラ6aは、物理アドレスを、物理ブロックを示す物理ブロックアドレスと、物理ページを物理ブロックごとに示す物理ブロック番号とに分割する。
Further, the
ここで、アドレス変換テーブルを用いて論理アドレスを物理アドレスに変換する技術では、記憶デバイスの容量が増大すると、アドレス変換テーブルのエントリ数も増大してしまい、NANDコントローラの回路規模が増大してしまう。例えば、図2は、従来の書き込み処理を説明するための第1の図である。なお、図2に示す例では、理解を容易にするため、ブロック数を「8」とし、各ブロック内のページ数が「4」の記憶デバイスについて記載した。また、図2に示す例では、論理ブロックアドレスと物理ブロックアドレスとを対応付けたアドレス変換テーブルを有するNANDコントローラが実行する処理について記載した。 Here, in the technique of converting a logical address to a physical address using the address conversion table, when the capacity of the storage device increases, the number of entries in the address conversion table also increases, and the circuit scale of the NAND controller increases. . For example, FIG. 2 is a first diagram for explaining a conventional writing process. In the example shown in FIG. 2, in order to facilitate understanding, a storage device in which the number of blocks is “8” and the number of pages in each block is “4” is described. In the example illustrated in FIG. 2, processing executed by the NAND controller having an address conversion table in which a logical block address and a physical block address are associated with each other is described.
例えば、ファイルシステムは、図2中(A)に示すように、論理ブロックアドレス「L4」に含まれる論理ページのうち、論理ページ番号「1」が示す論理ページに対する書き込み要求を発行する。すなわち、ファイルシステムは、論理アドレス「L4−1」に対する書き込み要求を発行する。すると、NANDコントローラは、図2中(B)に示すように、論理ブロックアドレス「L4」に対応付けられた物理ブロックアドレス「P7」を取得し、図2中(C)に示すように、書き込み対象となるページを含むブロックを識別する。 For example, as shown in FIG. 2A, the file system issues a write request for the logical page indicated by the logical page number “1” among the logical pages included in the logical block address “L4”. That is, the file system issues a write request for the logical address “L4-1”. Then, the NAND controller obtains the physical block address “P7” associated with the logical block address “L4” as shown in (B) of FIG. 2, and writes it as shown in (C) of FIG. Identify the block that contains the page of interest.
続いて、NANDコントローラは、図2中(D)に示すように、物理ブロックアドレス「P7」が示す物理ブロックの全データを予備ブロックにコピーする。この際、NANDコントローラは、書き込み要求の対象となる論理ページ番号「1」と同じ物理ページ番号「1」のデータを書き込み対象となるデータで更新する。その後、NANDコントローラは、図2中(E)に示すように、論理ブロックアドレス「L4」と対応付けられていた物理ブロックアドレス「P7」を予備ブロックの物理ブロックアドレス「P8」に更新する。そして、NANDコントローラは、物理ブロックアドレス「P7」が示すブロックのデータを消去する。 Subsequently, as shown in FIG. 2D, the NAND controller copies all data of the physical block indicated by the physical block address “P7” to the spare block. At this time, the NAND controller updates the data with the same physical page number “1” as the logical page number “1” that is the target of the write request with the data that is the target of the write. Thereafter, as shown in FIG. 2E, the NAND controller updates the physical block address “P7” associated with the logical block address “L4” to the physical block address “P8” of the spare block. Then, the NAND controller erases the data of the block indicated by the physical block address “P7”.
また、別の従来例として、アドレス変換テーブルをページごとに管理する場合がある。例えば、図3は、従来の書き込み処理を説明するための第2の図である。なお、図3に示す例では、理解を容易にするため、図2と同様に、ブロック数を「8」とし、各ブロック内のページ数を「4」の記憶デバイスについて記載した。また、図3に示す例では、論理アドレスと物理アドレスとを対応付けたアドレス変換テーブルを有するNANDコントローラが実行する処理について記載した。 As another conventional example, an address conversion table may be managed for each page. For example, FIG. 3 is a second diagram for explaining a conventional writing process. In the example shown in FIG. 3, for the sake of easy understanding, the storage device in which the number of blocks is “8” and the number of pages in each block is “4” is described as in FIG. In the example illustrated in FIG. 3, the process executed by the NAND controller having the address conversion table in which the logical address and the physical address are associated is described.
例えば、図3中(F)に示すように、ファイルシステムは、論理ブロックアドレス「L0」の論理ページ番号「3」、すなわち論理アドレス「L0−3」に書き込み要求を発行する。すると、NANDコントローラは、図3中(G)に示すように、論理アドレス「L0−3」に対応付けられた物理アドレス「P4−3」を取得し、図3中(H)に示すように、更新前のデータが格納されているページを識別する。続いて、NANDコントローラは、図3中(I)に示すように、物理アドレス「P4−3」が示すページのデータを更新して予備ブロックにコピーする。その後、NANDコントローラは、図3中(J)に示すように、論理アドレス「L0−3」と対応付けられていた物理アドレス「P4−3」を「P8−0」に更新し、処理を終了する。 For example, as shown in FIG. 3F, the file system issues a write request to the logical page number “3” of the logical block address “L0”, that is, the logical address “L0-3”. Then, the NAND controller acquires the physical address “P4-3” associated with the logical address “L0-3” as shown in (G) of FIG. 3, and as shown in (H) of FIG. Identify the page where the pre-update data is stored. Subsequently, as shown in (I) of FIG. 3, the NAND controller updates the data of the page indicated by the physical address “P4-3” and copies it to the spare block. Thereafter, the NAND controller updates the physical address “P4-3” associated with the logical address “L0-3” to “P8-0” as illustrated in (J) of FIG. To do.
しかしながら、従来のNANDシステムでは、アドレス変換テーブルをブロックごとに記憶する場合であっても、ページ単位で記憶する場合であっても、アドレス変換テーブルの大きさは、NANDデバイスの総容量に比例して増大してしまう。 However, in the conventional NAND system, the size of the address conversion table is proportional to the total capacity of the NAND device regardless of whether the address conversion table is stored for each block or page unit. Will increase.
そこで、NANDコントローラ6aは、アドレス変換テーブルを記憶デバイス7a〜10aに格納しており、アドレス変換テーブルの一部を保持する。例えば、アドレス変換テーブルには、各論理アドレスと対応付けられたエントリに、論理アドレスが示す記憶領域を物理的に示す物理アドレスが格納されている。また、NANDコントローラ6aは、論理アドレスの上位iビットが共通する論理アドレスを物理アドレスに変換するアドレス変換テーブルが格納された物理アドレスと、論理アドレスの上位iビットとを対応付けた変換テーブルタグを保持する。
Therefore, the
そして、NANDコントローラ6aは、読み出し対象、または書き込み対象となる論理アドレスの上位iビットと対応付けられた物理アドレスを変換テーブルタグから取得し、取得した物理アドレスが示す記憶領域から、アドレス変換テーブルの一部を読み出す。ここで、1つの物理アドレスが示す記憶領域には、論理アドレスの下位jビットと対応付けられた複数のエントリに変換先の物理アドレスが格納されたアドレス変換テーブルが格納されている。このため、NANDコントローラ6aは、読み出したアドレス変換テーブルのうち、読み出し対象、または書き込み対象となる論理アドレスの下位jビットと対応付けられたエントリの物理アドレスを読み出すことができる。なお、以下の説明では、論理アドレスの上位iビットを単に上位アドレスと記載し、下位jビットを下位アドレスと記載する。
Then, the
ここで、アドレス変換テーブルの一部をNANDコントローラが保持する技術では、処理対象の論理アドレスが保持するアドレス変換テーブルに含まれていない場合は、処理対象の論理アドレスを含むアドレス変換テーブルをNANDコントローラから取得する。そして、NANDコントローラから取得したアドレス変換テーブルを用いて論理アドレスを物理アドレスに変換し、変換後の物理アドレスを用いてメモリアクセスを行う。この結果、アドレス変換テーブルの一部をNANDコントローラが保持する技術では、アドレス変換に時間がかかり、メモリアクセスのレイテンシが増大してしまう。 Here, in the technology in which the NAND controller holds a part of the address conversion table, when the logical address to be processed is not included in the address conversion table to be held, the NAND controller converts the address conversion table including the logical address to be processed. Get from. Then, the logical address is converted into a physical address using the address conversion table acquired from the NAND controller, and the memory is accessed using the converted physical address. As a result, in the technique in which the NAND controller holds a part of the address conversion table, it takes time for address conversion, and the latency of memory access increases.
そこで、NANDコントローラ6aは、所定の条件がそろうと、以下の整列処理を実行する。すなわち、NANDコントローラ6aは、論理ブロックアドレスが共通する複数の論理アドレスを選択し、アドレス変換テーブルを用いて、選択した論理アドレスと対応付けられた物理アドレスを識別する。
Therefore, the
そして、NANDコントローラ6aは、識別した物理アドレスに格納されているデータを、論理ページ番号の順で、予備のブロックに含まれる先頭のページから各ページへと移動させる。すなわち、NANDコントローラ6aは、各データの論理ページ番号と、移動先の物理ページ番号が同じ値になるように、各データを整列移動させる。そして、NANDコントローラ6aは、整列移動させたデータの論理ブロックアドレスと、データを移動させたブロックの物理ブロックアドレスとを対応付けて記憶する。
Then, the
また、NANDコントローラ6aは、読み出し要求とともに論理アドレスを受信すると、受信した論理アドレスの上位ビット、すなわち読み出し対象となるデータの論理ブロックアドレスと対応付けて記憶する物理ブロックアドレスを取得する。ここで、整列移動させたブロック内では、各データの論理ページ番号と物理ページ番号とが同一の値となっている。そこで、NANDコントローラ6aは、取得した物理ブロックアドレスに受信した論理アドレスの論理ページ番号を付加することで、読み出し対象となるデータが格納された物理アドレスを取得する。その後、NANDコントローラ6は、取得した物理アドレスを用いて、読み出し対象となるデータを取得する。
When the
このように、NANDコントローラ6aは、論理ブロックアドレスが共通する論理アドレスによって指定されるページの各データを、1つの物理ブロックに移動させる。この際、NANDコントローラ6aは、各データの論理ページ番号と同一の物理ページ番号が示すページに各データを移動させる。そして、NANDコントローラ6aは、各データの移動先となる物理ブロックを示す物理ブロックアドレスと、移動させたデータの論理ブロックアドレスとを対応付けた早引きテーブル13を記憶する。
As described above, the
その後、NANDコントローラ6aは、読み出し対象の論理アドレスを受信すると、論理アドレスに含まれる論理ブロックアドレスと対応付けられた物理ブロックアドレスを早引きテーブル13から取得する。そして、NANDコントローラ6aは、取得した物理ブロックアドレスに、受信した論理アドレスの論理ページ番号を付加することで、読み出し対象となるデータが格納された記憶領域を示す物理アドレスを取得する。
Thereafter, when receiving the logical address to be read, the
この結果、NANDコントローラ6aは、アドレス変換テーブルキャッシュ12に、読み出し対象となる論理アドレスと対応する物理アドレスが格納されていない場合にも、アドレス変換テーブル20の読み出し処理を行わなずともアドレス変換を実現できる。このため、NANDコントローラ6aは、アドレス変換処理のレイテンシを短縮することができる。
As a result, even when the physical address corresponding to the logical address to be read is not stored in the address
ここで、図4、図5を用いてNANDコントローラ6aが実行する処理の一例について説明する。まず、図4を用いて、NANDコントローラ6aが実行する整列処理について説明する。図4は、整列処理の流れを説明する図である。なお、図4に示す例では、理解を容易にするため、図2と同様に、ブロック数を「8」とし、各ブロック内のページ数を「4」の記憶デバイス7a〜10aについて記載した。
Here, an example of processing executed by the
例えば、NANDコントローラ6aは、早引きテーブルを確認し、図4中(K)に示すように、論理ブロックアドレス「L0」に物理ブロックアドレスが対応付けられておらず、未登録、もしくは有効な物理ブロックアドレスが対応付けられていないと判定する。このような場合には、NANDコントローラ6aは、図4中(L)に示すように、論理ブロックアドレス「L0」を含む論理アドレス「L0−0」〜「L0−3」を選択する。また、NANDコントローラ6aは、アドレス変換テーブルを用いて、論理アドレス「L0−0」〜「L0−3」を物理アドレス「P0−0」、「P7−0」、「P2−2」、「P4−3」に変換する。そして、図4中(M)に示すように、各物理アドレスが示すページを識別する。
For example, the
次に、NANDコントローラ6aは、識別した各ページのデータを予備ブロックに移動させる。この際、NANDコントローラ6aは、図4中(N)に示すように、各データを指定する際に用いる論理アドレスの論理ページ番号と、データの移動先となるページの物理ページ番号とが同一となるように、各データを移動させる。
Next, the
詳細には、NANDコントローラ6aは、物理アドレス「P4−0」に格納されていた論理アドレス「L0−0」のデータを物理アドレス「P8−0」に移動させる。また、NANDコントローラ6aは、物理アドレス「P7−0」に格納されていた論理アドレス「L0−1」のデータを物理アドレス「P8−1」に移動させる。また、NANDコントローラ6aは、物理アドレス「P2−2」に格納されていた論理アドレス「L0−2」のデータを物理アドレス「P8−2」に移動させる。また、NANDコントローラ6aは、物理アドレス「P4−3」に格納されていた論理アドレス「L0−3」のデータを物理アドレス「P8−3」に移動させる。
Specifically, the
そして、NANDコントローラ6aは、図4中(O)に示すように、アドレス変換テーブルを更新するとともに、図4中(P)に示すように、早引きテーブルに、論理ブロックアドレス「L0」と物理ブロックアドレス「P8」とを対応付けて記憶する。
Then, the
次に、図5を用いてNANDコントローラ6aがデータの読み出し時に早引きテーブルを用いて実行する処理の一例について説明する。図5は、読み出し処理の流れを説明する図である。なお、図5に示す例では、理解を容易にするため、図2と同様に、ブロック数を「8」とし、各ブロック内のページ数を「4」の記憶デバイス7a〜10aについて記載した。
Next, an example of processing executed by the
例えば、図5に示す例では、図5中(Q)に示すように、ファイルシステムが論理アドレス「L0−3」への読み出し要求を発行する。このような場合には、NANDコントローラ6aは、図5中(R)に示すように、論理アドレス「L0−3」の論理ブロックアドレス「L0」と対応付けられた物理ブロックアドレス「P8」を早引きテーブルから取得する。ここで、物理ブロックアドレス「P8」が示すブロック中では、各データが、各データの論理ページ番号と同一の物理ページ番号に格納されている。
For example, in the example shown in FIG. 5, the file system issues a read request to the logical address “L0-3” as shown in (Q) of FIG. In such a case, as illustrated in (R) in FIG. 5, the
このため、NANDコントローラ6aは、図5中(S)に示すように、物理ブロックアドレス「P8」のブロックに含まれるページのうち、論理アドレス「L0−3」の論理ページ番号「3」と同じ物理ページ番号「3」が示すページからデータの読み出しを行う。この結果、NANDコントローラ6aは、保持するアドレス変換テーブルに、論理アドレス「L0−3」が含まれていない場合にも、記憶デバイス7a〜10aからアドレス変換テーブルを読み出すことなく、アドレス変換を行うことができる。
Therefore, the
次に、図6を用いて、NANDコントローラ6aの機能構成について説明する。図6は、実施例1に係るNANDコントローラの機能構成を説明する図である。図6に示す例では、NANDコントローラ6aは、変換テーブルタグ11、アドレス変換テーブルキャッシュ12、早引きテーブル13、リクエスタインタフェース部14、リクエスト調停部15を有する。また、NANDコントローラ6aは、アドレス変換制御部16、デバイスアクセス制御部17、データ整列制御部18、ガベージコレクション制御部19を有する。また、記憶デバイス7a〜10aは、アドレス変換テーブル20とユーザデータ21とを記憶する。
Next, the functional configuration of the
変換テーブルタグ11は、上位アドレスと、上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレスとを対応付けたテーブルである。例えば、図7は、変換テーブルタグを説明する図である。図7に示す例では、変換テーブルタグ11は、論理アドレスの上位アドレス「0」〜「2i−1」とそれぞれ対応付けられた複数のエントリを有する。The
また、変換テーブルタグ11の各エントリには、対応付けられた上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレス(テーブルPA:Physical Address)「a」〜「m」が格納されている。なお、物理アドレス「a」〜「m」の値は、NANDコントローラ6aが保持するアドレス変換テーブルの一部を変更する度に、異なる値に変化することとなる。
In addition, each entry of the
図6に戻って、アドレス変換テーブルキャッシュ12は、記憶デバイス7a〜10a上に格納されたアドレス変換テーブル20の一部である。例えば、図8は、NANDコントローラが保持するアドレス変換テーブルの一例を説明する図である。図8に示す例では、アドレス変換テーブルキャッシュ12は、下位アドレス「0」〜「2j−1」と対応付けられたエントリを有する。また、アドレス変換テーブルキャッシュ12は、各エントリにバリッドビット(Valid)とデータが格納された物理アドレスであるデータPA「BA」〜「BN」を対応付けて格納している。Returning to FIG. 6, the address
ここで、バリッドビットは、対応付けられた物理アドレスが有効な物理アドレスであるか否かを示すビットである。例えば、図8に示す例では、下位アドレス「2」と対応付けられたエントリの物理アドレス「BC」は、有効な物理アドレスであるが、下位アドレス「1」と対応付けられたエントリの物理アドレス「BB」は、有効な物理アドレスではない。 Here, the valid bit is a bit indicating whether or not the associated physical address is a valid physical address. For example, in the example shown in FIG. 8, the physical address “BC” of the entry associated with the lower address “2” is a valid physical address, but the physical address of the entry associated with the lower address “1”. “BB” is not a valid physical address.
なお、NANDコントローラ6aは、アドレス変換テーブル20のうち、変換テーブルタグによって示された物理アドレスで指定される範囲をアドレス変換テーブルキャッシュ12として保持する。例えば、図8、10に示す例では、NANDコントローラ6aは、物理アドレスが「b」となる物理ページに格納されたアドレス変換テーブルキャッシュ12を保持する。
Note that the
図6に戻って、早引きテーブル13は、論理ブロックアドレスと物理ブロックアドレスとを対応付けて記憶する。例えば、図9は、早引きテーブルの一例を説明する図である。例えば、図9に示す例では、早引きテーブルは、論理ブロックアドレス「0」〜「2p−1」と対応付けたエントリを有する。また、早引きテーブル13は、各エントリに登録フラグと、物理ブロックアドレスとを対応付けて格納している。ここで、登録フラグとは、対応付けられた物理ブロックアドレスが示すブロックにデータを整列移動させたか否かを示すフラグであり、データを整列移動させた場合は、「1」となり、データを整列移動させていない場合は、「0」となる。Returning to FIG. 6, the early lookup table 13 stores the logical block address and the physical block address in association with each other. For example, FIG. 9 is a diagram for explaining an example of the early lookup table. For example, in the example illustrated in FIG. 9, the early lookup table includes entries associated with logical block addresses “0” to “2 p −1”. In addition, the fast-drawing table 13 stores a registration flag and a physical block address in association with each entry. Here, the registration flag is a flag indicating whether or not the data is aligned and moved to the block indicated by the associated physical block address. When the data is aligned and moved, the flag is “1” and the data is aligned. When it is not moved, it is “0”.
図6に戻って、アドレス変換テーブル20は、物理アドレスを論理アドレスに変換する際に用いるアドレス変換テーブルである。例えば、図10は、アドレス変換テーブルの全体を説明する図である。例えば、図10に示すように、アドレス変換テーブル20は、記憶デバイス7a〜10aが有する記憶領域のうち、物理アドレス「a」〜「m」の範囲に格納されたテーブルである。また、アドレス変換テーブル20は、1つのページ内に、論理ページ番号「0」〜「2j−1」と対応付けられたエントリを有し、各エントリ内に、バリッドビットと各論理ページ番号が示すデータが格納された物理アドレスが格納されている。Returning to FIG. 6, the address conversion table 20 is an address conversion table used when converting a physical address into a logical address. For example, FIG. 10 is a diagram illustrating the entire address conversion table. For example, as shown in FIG. 10, the address conversion table 20 is a table stored in the range of physical addresses “a” to “m” in the storage areas of the
例えば、物理アドレス「a」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「0」で下位アドレスが「0」〜「2j−1」である論理アドレスに対応する物理アドレス「AA」〜「AN」が格納されている。また、物理アドレス「b」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「1」で下位アドレスが「0」〜「2j−1」である論理アドレスに対応する物理アドレス「BA」〜「BN」が格納されている。また、物理アドレス「m」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「2i−1」で下位アドレスが「0」〜「2j−1」である論理アドレスに対応する物理アドレス「MA」〜「MN」が格納されている。ここで、アドレス変換テーブルに格納された物理アドレス「a」〜「m」と論理アドレスの上位アドレス「0」〜「2i−1」との対応は、変換テーブルタグ11によって管理されている。For example, in the address conversion table stored in the page indicated by the physical address “a”, the physical address “0” and the lower addresses “0” to “2 j −1” corresponding to the logical addresses “0” to “2 j −1” are stored. AA "to" AN "are stored. Further, the address conversion table stored in the page indicated by the physical address “b” includes the physical address “1” corresponding to the logical address having the upper address “1” and the lower addresses “0” to “2 j −1”. BA "to" BN "are stored. Further, the address conversion table stored in the page indicated by the physical address “m” corresponds to the logical address having the upper address “2 i −1” and the lower addresses “0” to “2 j −1”. Physical addresses “MA” to “MN” are stored. Here, the correspondence between the physical addresses “a” to “m” stored in the address conversion table and the higher addresses “0” to “2 i −1” of the logical address is managed by the
図6に戻り、リクエスタインタフェース部14は、I/Oハブを介して、読み出し要求、または書き込み要求を受信する。リクエスタインタフェース部14は、読み出し要求を受信すると、受信した読み出し要求をリクエスト調停部15に出力する。また、リクエスタインタフェース部14は、デバイスアクセス制御部17から読み出し要求の対象となるデータを受信すると、受信したデータを読み出し要求の発行元となるCPU3a、3bに出力する。
Returning to FIG. 6, the
また、リクエスタインタフェース部14は、書き込み要求を受信すると、以下の書き込み処理を実行する。例えば、リクエスタインタフェース部14は、受信した書き込み要求に格納された論理アドレスを含む読み出し要求をリクエスト調停部15に出力する。そして、リクエスタインタフェース部14は、読み出し対象のデータを受信すると、受信したデータを書き込み対象のデータで更新する。そして、リクエスタインタフェース部14は、受信した書き込み要求に格納された論理アドレスと、更新後のデータとを含む書き込み要求をリクエスト調停部15に出力する。
When the
リクエスト調停部15は、リクエスタインタフェース部14、データ整列制御部18、およびガベージコレクション制御部19からの読み出し要求および書き込み要求を調停し、調停結果に応じた順序で実行する。例えば、リクエスト調停部15は、読み出し要求を受信すると、読み出し対象となる論理アドレスをアドレス変換制御部16に出力する。そして、リクエスト調停部15は、アドレス変換制御部16から、読み出し対象となる物理アドレスを受信すると、受信した物理アドレスに対する読み出し要求をデバイスアクセス制御部17に発行する。
The
また、リクエスト調停部15は、書き込み要求を受信すると、アドレス変換制御部16に問い合わせる等して、各ページにデータが格納されていない予備ブロックの物理アドレスを取得する。その後、リクエスト調停部15は、取得した物理アドレスに対して、更新したデータの書き込みを要求する書き込み要求をデバイスアクセス制御部17に出力する。また、リクエスト調停部15は、書き込み要求に格納されていた論理アドレスとデータを格納した物理アドレスとをアドレス変換制御部16に出力する。
Further, when receiving a write request, the
アドレス変換制御部16は、論理アドレスを物理アドレスに変換する。例えば、アドレス変換制御部16は、論理アドレスを受信すると、早引きテーブル13を参照し、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリを識別する。また、アドレス変換制御部16は、識別したエントリの登録フラグが「1」であるか否かを判定する。
The address
そして、アドレス変換制御部16は、識別したエントリの登録フラグが「1」である場合は、識別したエントリに格納された物理ブロックアドレスを取得する。また、アドレス変換制御部16は、取得した物理ブロックアドレスに対し、受信した論理アドレスの下位qビット、すなわち論理ページ番号を付加することで、物理アドレスを生成する。
If the registration flag of the identified entry is “1”, the address
一方、アドレス変換制御部16は、識別したエントリの登録フラグが「0」である場合、すなわち、受信した論理アドレスが整列移動されていない場合は、アドレス変換テーブルを用いたアドレス変換処理を実行する。例えば、アドレス変換制御部16は、変換テーブルタグ11の各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリに格納されている物理アドレスを取得する。
On the other hand, if the registration flag of the identified entry is “0”, that is, if the received logical address is not aligned, the address
そして、アドレス変換制御部16は、取得した物理アドレスをデバイスアクセス制御部17に出力することで、アドレス変換テーブル20の一部を取得する。すると、アドレス変換制御部16は、受信したアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12とする。そして、アドレス変換制御部16は、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリに格納されている物理アドレスを取得する。その後、アドレス変換制御部16は、取得した物理アドレスをリクエスト調停部15に出力する。
Then, the address
また、アドレス変換制御部16は、リクエスト調停部15から、書き込み要求に格納されていた論理アドレスとデータを格納した物理アドレスとを受信する。すると、アドレス変換制御部16は、受信した論理アドレスの上位アドレスを用いてアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12として取得する。そして、アドレス変換制御部16は、取得したアドレス変換テーブルキャッシュ12のうち、論理アドレスの下位アドレスと対応付けられたエントリの物理アドレスを、リクエスト調停部15から受信した物理アドレスで書き換える。
The address
その後、アドレス変換制御部16は、アドレス変換テーブルキャッシュ12をデバイスアクセス制御部17に出力し、記憶デバイス7a〜10aが記憶するアドレス変換テーブル20の書き換えを指示する。ここで、アドレス変換テーブルキャッシュ12を記憶デバイス7a〜10aに書き戻す際は、キャッシュ元のページに書き戻されるわけではない。このため、アドレス変換制御部16は、アドレス変換テーブルキャッシュ12を書き戻した物理アドレスと、書き戻したアドレス変換テーブルキャッシュ12に対応する論理アドレスの上位ビットとを対応付けるよう変換テーブルタグ11を更新する。
Thereafter, the address
また、アドレス変換制御部16は、早引きテーブル13の各エントリのうち、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリの登録フラグを「0」にする。つまり、アドレス変換制御部16は、データの書き込みにより、整列されたデータが他の物理ブロックに移動した場合には、早引きテーブル13の各エントリのうち、対応するエントリを無効にする。
In addition, the address
次に、図11、12を用いて、アドレス変換制御部16が実行するアドレス変換の一例を説明する。まず、図11を用いて、アドレス変換制御部16がアドレス変換テーブルを用いて実行するアドレス変換の流れについて説明する。図11は、アドレス変換テーブルを用いたアドレス変換の流れを説明する図である。
Next, an example of address conversion executed by the address
まず、アドレス変換制御部16は、論理アドレスを受信すると、図11中(S)に示すように、変換テーブルタグ11の各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリの物理アドレスを取得する。すると、アドレス変換制御部16は、物理アドレス「b」を取得するので、図11中(T)に示すように、物理アドレス「b」に格納されたアドレス変換テーブルをアドレス変換テーブルキャッシュ12として取得する。
First, when receiving the logical address, the address
次に、アドレス変換制御部16は、図11中(U)に示すように、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリに格納された物理アドレス「BC」を取得する。そして、アドレス変換制御部16は、図11中(V)に示すように、取得した物理アドレス「BC」を変換結果としてリクエスト調停部15に出力する。
Next, as shown in FIG. 11 (U), the address
次に、図12を用いて、アドレス変換制御部16が早引きテーブル13を用いて実行するアドレス変換について説明する。図12は、早引きテーブルを用いたアドレス変換の流れを説明する図である。例えば、アドレス変換制御部16は、図12中(W)に示すように、早引きテーブル13の各エントリのうち、受信した論理アドレスの上位pビットである論理ブロックアドレスと対応付けられたエントリを識別する。ここで、識別したエントリの登録フラグが「1」であるので、アドレス変換制御部16は、識別したエントリに格納されている物理ブロックアドレス「B」を取得する。
Next, the address conversion executed by the address
また、アドレス変換制御部16は、図12中(X)に示すように、受信した論理アドレスの下位qビットである論理ページ番号を物理ページ番号として、早引きテーブル13から取得した物理ブロックアドレス「B」の下位に付加する。この結果、アドレス変換制御部16は、受信した論理アドレスを物理アドレスに変換するアドレス変換テーブルを保持していない場合にも、記憶デバイス7a〜10aからアドレス変換テーブルを読み出すことなく、アドレス変換を行うことができる。
Further, as shown in (X) of FIG. 12, the address
図6に戻って、デバイスアクセス制御部17は、記憶デバイス7a〜10aに対するデータの書き込み、読み出し処理を実行する。例えば、デバイスアクセス制御部17は、リクエスト調停部15、またはアドレス変換制御部16からデータの書き込み要求を受信する。このような場合には、デバイスアクセス制御部17は、受信した書き込み要求に格納されている物理アドレスが示すページに対して、書き込み要求に格納されているデータの書き込みを行う。そして、デバイスアクセス制御部17は、書き込み要求の発行元に対して、書き込み完了通知を送信する。
Returning to FIG. 6, the device
また、デバイスアクセス制御部17は、リクエスト調停部15、またはアドレス変換制御部16からデータの読み出し要求を受信すると、受信した読み出し要求に格納されている物理アドレスが示すページからデータの読み出しを行う。そして、デバイスアクセス制御部17は、読み出したデータを読み出し要求の発行元に送信する。
When the device
データ整列制御部18は、所定のタイミングでデータの整列処理を実行する。例えば、データ整列制御部18は、各論理ブロックアドレス「0」〜「2p−1」について、以下の処理を実行する。まず、データ整列制御部18は、直接、もしくはリクエスト調停部15、およびアドレス変換制御部16を介して、早引きテーブル13の各エントリのうち、整列処理の対象となる論理ブロックアドレスと対応付けられたエントリの登録フラグを確認する。そして、データ整列制御部18は、登録フラグが「1」である場合は、次の論理ブロックアドレスと対応付けられたエントリの登録フラグを確認する。The data
そして、データ整列制御部18は、整列処理の対象となる論理ブロックアドレスと対応付けられたエントリの登録フラグが「0」である場合は、以下の処理を実行する。まず、データ整列制御部18は、データの整列先となる予備物理ブロックを確保する。例えば、データ整列制御部18は、ガベージコレクション制御部19にガベージコレクションを実行させ、予備物理ブロックを確保する。そして、データ整列制御部18は、各論理ページ番号「0」〜「2q−1」が示すページのデータを、予備物理ブロックの各物理ページ番号「0」〜「2q−1」が示すページに移動させる。When the registration flag of the entry associated with the logical block address that is the target of the alignment process is “0”, the data
詳細な例を説明する。例えば、データ整列制御部18は、ある論理ブロックアドレス「x」について整列処理を行うため、物理ブロックアドレス「X」の予備物理ブロックを確保する。すると、データ整列制御部18は、論理ブロックアドレス「x」、論理ページ番号「0」が示すページのデータを読み出すよう読み出し要求を発行する。そして、データ整列制御部18は、読み出したデータを物理ブロックアドレス「X」、論理ページ番号「0」が示すページに書き込むよう書き込み要求を発行する。
A detailed example will be described. For example, the data
次に、データ整列制御部18は、論理ブロックアドレス「x」、論理ページ番号「1」が示すページのデータを読み出すよう読み出し要求を発行する。そして、データ整列制御部18は、読み出したデータを物理ブロックアドレス「X」、論理ページ番号「1」が示すページに書き込むよう書き込み要求を発行する。このような処理を論理ページ番号「2q−1」まで繰り返し実行することで、データ整列制御部18は、論理ブロックアドレスが「x」となるデータについての整列を行う。Next, the data
また、データ整列制御部18は、1つの論理ブロックアドレスについて整列処理が終了すると、早引きテーブル13の更新を行うよう、リクエスト調停部15を介して、デバイスアクセス制御部17に指示する。詳細には、データ整列制御部18は、整列処理を行った論理ブロックアドレスと対応付けられたエントリに、データの移動先となる物理ブロックを示す物理ブロックを格納するよう指示する。この結果、デバイスアクセス制御部17は、整列処理を行った論理ブロックアドレスと対応付けられたエントリに、データの移動先となる物理ブロックアドレスを格納し、登録フラグを「1」に変更する。
In addition, when the alignment process is completed for one logical block address, the data
また、データ整列制御部18は、1つの論理ブロックアドレスについて整列処理が終了すると、次の論理ブロックアドレスと対応付けられた早引きテーブル13のエントリの登録フラグが「0」であるか否かを判別する。このような処理を全ての論理ブロックアドレスについて実行することで、データ整列制御部18は、全てのデータを整列させることができる。
In addition, when the alignment process is completed for one logical block address, the data
ガベージコレクション制御部19は、一部のページに有効なデータが格納されている物理ブロックを予備ブロックとするガベージコレクションを実行する。例えば、ガベージコレクション制御部19は、アドレス変換テーブル20の読み出し等を行い、一部のページに有効なデータが格納されている物理ブロックを消去対象ブロックとして識別する。そして、ガベージコレクション制御部19は、消去対象ブロック内の有効なデータが格納されているページを指定して読み出し要求を発行し、データの読み出しを行う。
The garbage
次に、ガベージコレクション制御部19は、消去対象ブロック以外の物理ブロックのうち、有効なデータが格納されていないページを指定して、読み出したデータの書き込みを行う。そして、ガベージコレクション制御部19は、消去対象ブロックのデータの消去を指示する消去要求をリクエスト調停部15に出力する。このような場合にはリクエスト調停部15はデバイスアクセス制御部17に消去要求を転送する。すると、デバイスアクセス制御部17は、消去対象となるブロックのデータを消去する。
Next, the garbage
例えば、リクエスタインタフェース部14、リクエスト調停部15、アドレス変換制御部16、デバイスアクセス制御部17、データ整列制御部18、ガベージコレクション制御部19とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
For example, the
また、変換テーブルタグ11、アドレス変換テーブルキャッシュ12、早引きテーブル13とは、RAM(Random Access Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子などの記憶装置に格納された情報である。
The
次に、図13を用いて、NANDコントローラ6aがデータの読み出しを行う際に実行する処理の流れについて説明する。図13は、データの読み出し処理の流れを説明するためのフローチャートである。例えば、NANDコントローラ6aは、各CPU3a、3bが実行するプログラム等により実現されるシステムから論理アドレスを含む読み出し要求を受信する(ステップS101)。すると、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、受信した論理アドレスの上位ビットである論理ブロックアドレスと対応付けられたエントリを検索する(ステップS102)。そして、NANDコントローラ6aは、検索したエントリの登録フラグが「1」であるか否かを判定する(ステップS103)。
Next, the flow of processing executed when the
ここで、NANDコントローラ6aは、検索したエントリの登録フラグが「1」ではない場合は(ステップS103否定)、変換テーブルタグ11の各エントリのうち受信した論理アドレスの上位アドレスと対応付けられたエントリを検索する(ステップS104)。また、NANDコントローラ6aは、検索したエントリに格納されている物理アドレスを用いて、アドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12として取得する。そして、NANDコントローラ6aは、取得したアドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを検索する(ステップS105)。
Here, if the registration flag of the searched entry is not “1” (No at Step S103), the
ここで、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」であるか否かを判定する(ステップS106)。そして、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」ではない場合は(ステップS106否定)、アドレス例外エラー通知をシステムに通知し(ステップS107)、処理を異常終了する。一方、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」である場合は(ステップS106肯定)、受信した論理アドレスを検索したエントリに格納された物理アドレスにアドレス変換する(ステップS108)。
Here, the
そして、NANDコントローラ6aは、取得した物理アドレスを含む読み出し要求(Read)を発行し(ステップS109)。読み出したデータをシステムに返送し(ステップS110)、処理を終了する。一方、NANDコントローラ6aは、検索したエントリの登録フラグが「1」である場合は(ステップS103肯定)、ステップS104〜S106の処理をスキップする。そして、NANDコントローラ6aは、検索したエントリに格納されている物理ブロックアドレスと受信した論理アドレスの論理ページ番号とを組み合わせた物理アドレスに論理アドレスを変換する(ステップS108)。
Then, the
次に、図14を用いて、NANDコントローラ6aがデータの書き込みを行う際に実行する処理の流れについて説明する。図14は、データの書き込み処理の流れを説明するためのフローチャートである。例えば、NANDコントローラ6aは、システムから論理アドレスを含む書き込み要求を受信する(ステップS200)。すると、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、受信した論理アドレスの上位ビットである論理ブロックアドレスと対応付けられたエントリを検索する(ステップS201)。そして、NANDコントローラ6aは、検索したエントリの登録フラグが「1」であるか否かを判定する(ステップS202)。
Next, the flow of processing executed when the
ここで、NANDコントローラ6aは、検索したエントリの登録フラグが「1」ではない場合は(ステップS202否定)、変換テーブルタグ11の各エントリのうち受信した論理アドレスの上位アドレスと対応付けられたエントリを検索する(ステップS203)。また、NANDコントローラ6aは、検索したエントリに格納されている物理アドレスを用いて、アドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12として取得する。そして、NANDコントローラ6aは、取得したアドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを検索する(ステップS204)。
Here, if the registration flag of the searched entry is not “1” (No at Step S202), the
ここで、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」であるか否かを判定する(ステップS205)。そして、NANDコントローラ6aは、バリッドビットが「1」である場合は(ステップS205肯定)、受信した論理アドレスを検索したエントリに格納された物理アドレスにアドレス変換する(ステップS206)。一方、NANDコントローラ6aは、検索したエントリの登録フラグが「1」である場合は(ステップS202肯定)、ステップS203〜S205の処理をスキップする。そして、NANDコントローラ6aは、検索したエントリに格納されている物理ブロックアドレスと受信した論理アドレスの論理ページ番号とを組み合わせた物理アドレスに論理アドレスを変換する(ステップS206)。
Here, the
続いて、NANDコントローラ6aは、取得した物理アドレスが示す物理ページに読み出し要求を発行し(ステップS207)、読み出したデータを書き込みデータで更新する(ステップS208)。そして、NANDコントローラ6aは、新たな物理ページに対して、更新したデータの書き込み要求(Write)を発行する(ステップS209)。
Subsequently, the
また、NANDコントローラ6aは、アドレス変換テーブルキャッシュ12のうち、システムから受信した書き込み要求の論理アドレスに対応付けられた物理アドレスを、新たにデータを書き込んだ物理ページを示す物理アドレスに更新する。そして、NANDコントローラ6aは、アドレス変換テーブルキャッシュ12を記憶デバイス7a〜10aに書き戻し、アドレス変換テーブル20を更新する(ステップS210)。
In addition, the
また、NANDコントローラ6aは、変換テーブルタグ11を更新する(ステップS211)。詳細には、NANDコントローラ6aは、アドレスシステムから受信した論理アドレスの上位ビットと対応付けられたエントリの物理アドレスを、アドレス変換テーブルキャッシュ12を書き戻した物理アドレスに更新する。次に、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリの登録フラグを「0」にすることで無効化する(ステップS212)。その後、NANDコントローラ6aは、完了通知をシステムに返送し(ステップS213)、処理を終了する。
Also, the
なお、NANDコントローラ6aは、検索したエントリのバリッドビットが「0」である場合は、検索したエントリに格納されている物理アドレスが示す物理ページにデータが格納されていないので、ステップS206〜S208の処理をスキップする。
If the valid bit of the searched entry is “0”, the
次に、図15を用いて、NANDコントローラ6aが実行する整列処理の流れについて説明する。図15は、整列処理の流れを説明するためのフローチャートである。例えば、NANDコントローラ6aは、所定の時間間隔、もしくはシステムからの実行指示を契機として、図15に示す整列処理を実行する。
Next, the flow of alignment processing executed by the
まず、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、論理ブロックアドレス「0」と対応付けられたエントリを検索する(ステップS301)。そして、NANDコントローラ6aは、検索したエントリの登録フラグが「0」であるか否かを判定する(ステップS302)。
First, the
ここで、NANDコントローラ6aは、登録フラグが「0」である場合は(ステップS302肯定)、続くステップS303〜S307の整列処理を実行する。まず、NANDコントローラ6aは、整列用の予備物理ブロックを確保する(ステップS303)。次に、NANDコントローラ6aは、論理ブロックアドレスが「0」で論理ページ番号が「0」のページに対して、読み出し要求を発行する(ステップS304)。続いてNANDコントローラ6aは、読み出したデータを、予備物理ブロックの物理ページのうち、論理ページ番号「0」と同じ物理ページ番号が示す物理ページに書き込む(ステップS305)。
Here, when the registration flag is “0” (Yes at Step S302), the
また、NANDコントローラ6aは、論理ブロックアドレスが「0」の全ての論理ページ番号について、データを整列させたか否かを判定する(ステップS306)。そして、NANDコントローラ6aは、論理ブロックアドレスが「0」の全ての論理ページ番号についてデータを整列させていない場合は(ステップS306否定)、他の論理ページ番号(例えば論理ページ番号「1」)について、ステップS304の処理を行う。
Further, the
また、NANDコントローラ6aは、論理ブロックアドレスが「0」の全ての論理ページ番号について、データを整列させた場合は(ステップS306肯定)、早引きテーブル13を更新する(ステップS307)。詳細には、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、論理ブロックアドレス「0」と対応付けられたエントリに予備物理ブロックの物理ブロックアドレスを格納し、登録フラグを「1」にする。
In addition, when the data is aligned for all the logical page numbers having the logical block address “0” (Yes at Step S306), the
その後、NANDコントローラ6aは、整列処理を全ての論理ブロックアドレスについて実行したか否かを判定する(ステップS308)。そして、NANDコントローラ6aは、整列処理を全ての論理ブロックアドレスについて実行していない場合は(ステップS308否定)、次の論理ブロックアドレス(例えば論理ブロックアドレス「1」)について、ステップS301の処理を実行する。また、NANDコントローラ6aは、検索したエントリの登録フラグが「0」ではない場合は(ステップS302否定)、すでに整列処理が行われているので、整列処理をスキップし、ステップS308の処理を実行する。
Thereafter, the
[NANDコントローラ6aの効果]
上述したように、NANDコントローラ6aは、論理ブロックアドレスと論理ページ番号とを含む論理アドレスに、物理ブロックアドレスと物理ページ番号とを対応付けたアドレス変換テーブルキャッシュ12を記憶する。また、NANDコントローラ6aは、1つの論理ブロック番号を選択し、選択した論理ブロック番号を含む論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルキャッシュ12から取得する。そして、NANDコントローラ6aは、取得した物理アドレスが示す物理ページのデータを、1つの物理ブロックに含まれる物理ページであって、各データの論理アドレスに含まれる論理ページ番号と同一の物理ページ番号が示す物理ページに移動させる。その後、NANDコントローラ6aは、データを移動させた物理ブロックの物理ブロックアドレスと、選択した論理ブロック番号とを対応付けて早引きテーブル13に格納する。[Effect of
As described above, the
また、NANDコントローラ6aは、読み出し対象のデータが格納された論理ページを示す論理アドレスを受信すると、論理アドレスに含まれる論理ブロックアドレスと対応付けられた物理ブロックアドレスを早引きテーブル13から取得する。そして、NANDコントローラ6aは、早引きテーブル13から取得した物理ブロックアドレスが示す物理ブロックに含まれた各物理ページのうち、受信した論理アドレスに含まれる論理ページ番号と同一の物理ページ番号が示す物理ページからデータを読み出す。
Further, when receiving the logical address indicating the logical page in which the data to be read is stored, the
このため、NANDコントローラ6aは、読み出し対象のデータが格納された論理ページを示す論理アドレスを物理アドレスに変換するアドレス変換テーブル20を保持していない場合にも、アドレス変換に要する時間を短縮することができる。この結果、NANDコントローラ6aは、記憶デバイス7a〜10aに対するアクセスのレイテンシを改善することができる。
For this reason, the
また、例えば、アドレス変換テーブルの一部を保持する技術では、アドレス変換テーブルのサイズが大きくなると、保持する割合が相対的に小さくなるので、論理アドレスがキャッシュヒットする確率が悪化し、アドレス変換に要する時間が増大してしまう。また、アドレス変換テーブルのサイズが増大すると、変換テーブルタグの大きさも増大するので、変換テーブルタグの一部をキャッシュすることで、回路規模の増大を防ぐ手法が考えられる。しかしながら、このような手法では、記憶デバイスからデータの読み出しや書き込みを行う際に、複数回のアクセスが行われることとなる。この結果、記憶デバイスにアクセスする際のレイテンシが増大してしまう。 In addition, for example, in the technology that holds a part of the address conversion table, the holding ratio becomes relatively small as the size of the address conversion table increases, so the probability that a logical address hits the cache deteriorates, and the address conversion becomes difficult. The time required will increase. Further, as the size of the address conversion table increases, the size of the conversion table tag also increases. Therefore, a technique for preventing an increase in circuit scale by caching a part of the conversion table tag can be considered. However, in such a method, when data is read from or written to the storage device, a plurality of accesses are performed. As a result, latency when accessing the storage device increases.
しかし、NANDコントローラ6aは、アドレス変換テーブル20の大きさによらず、整列処理を行った論理アドレスについては、必ずアドレス変換を行うことができる。この結果、NANDコントローラ6aは、記憶デバイス7a〜10aに対する読み出し性能、および書き込み性能を向上させることができる。
However, regardless of the size of the address conversion table 20, the
また、早引きテーブル13は、記憶デバイス7a〜10aが有する物理ブロックの数と同数のエントリで実現可能である。この結果、早引きテーブル13のサイズは、アドレス変換テーブル20に記憶デバイス7a〜10aが有する物理ページの数と同数のエントリを設定する場合よりも、非常に小さくなる。このため、NANDコントローラ6aは、回路規模を増大させることなく、記憶デバイス7a〜10aに対する読み出し性能、および書き込み性能を向上させることができる。
In addition, the quick lookup table 13 can be realized with the same number of entries as the number of physical blocks included in the
また、NANDコントローラ6aは、論理アドレスの上位ビットを論理ブロックアドレスとし、論理アドレスの下位ビットを論理ページ番号とする。また、NANDコントローラ6aは、物理アドレスの上位ビットを物理ブロックアドレスとし、物理アドレスの下位ビットを物理ページ番号とする。このため、NANDコントローラ6aは、任意の数の論理ページを早引きテーブルの構成単位とすることができる。また、NANDコントローラ6aは、複雑な処理を行うことなく、容易にアドレス変換を行うことができる。
Also, the
また、NANDコントローラ6aは、使用されていない物理ページを含む物理ブロックに格納されたデータを他のブロックに複製し、使用されていない物理ページを含む物理ブロック内のデータを消去するガベージコレクション制御部19を有する。そして、NANDコントローラ6aは、ガベージコレクション制御部19がデータを消去した物理ブロックを予備ブロックとして利用するので、記憶デバイス7a〜10aの空き容量が少ない場合にも、効率的にデータの整列処理を行うことができる。
Further, the
上述したNANDコントローラ6aは、データ整列処理を実行する際に、早引きテーブル13の全エントリを対象としていた。しかし、実施例はこれに限定されるものではない。例えば、NANDコントローラ6aは、1回の整列処理で、全論理ブロックアドレスのうち、一部の論理ブロックアドレスのみについて整列制御を行っても良い。
The
例えば、NANDコントローラ6aは、早引きテーブル13の各エントリについて整列処理を実行し、所定の時間が経過した場合には、整列処理を行った最後の論理ブロックアドレスを記憶する。そして、NANDコントローラ6aは、次回の整列処理を行う際に、記憶した論理ブロックアドレスの次の論理ブロックアドレスから整列処理を再開してもよい。
For example, the
以下、図16を用いて、NANDコントローラ6aが実行する処理の流れについて説明する。図16は、整列処理の第1のバリエーションを説明するためのフローチャートである。なお、図16に示す処理のうち、ステップS403〜ステップS409は、図15に示すステップS301〜S307と同様の処理を実行するものとして、説明を省略する。
Hereinafter, the flow of processing executed by the
例えば、NANDコントローラ6aは、前回の整列処理において最後に整列処理を行った論理ブロックアドレスである終了アドレスをロードする(ステップS401)。次に、NANDコントローラ6aは、ロードした終了アドレスに1を加算した値を整列処理の開始アドレスとする(ステップS402)。そして、NANDコントローラ6aは、開始アドレスからステップS403の処理を実行する。
For example, the
また、NANDコントローラ6aは、ステップS409の処理を実行すると、整列処理を開始してから一定時間が経過したか否かを判定する(ステップS410)。そして、NANDコントローラ6aは、一定時間が経過している場合は(ステップS410肯定)、整列処理を実行した最後の論理ブロックアドレスを終了アドレスとして保存し(ステップS411)、処理を終了する。一方、NANDコントローラ6aは、整列処理を開始してから一定時間が経過していない場合は(ステップS410否定)、次の論理ブロックアドレスについて、ステップS403の処理を実行する。
Further, when executing the process of step S409, the
また、NANDコントローラ6aは、早引きテーブル13の各エントリを複数のグループに分割し、各グループにグループ番号(グループNo)を付与する。そして、NANDコントローラ6aは、1回の整列処理で1つのグループについてのみ整列処理を行っても良い。
In addition, the
例えば、図17は、整列処理の第2のバリエーションを説明するためのフローチャートである。なお、図17に示す処理のうち、ステップS503〜ステップS509は、図15に示すステップS301〜S307と同様の処理を実行するものとして、説明を省略する。 For example, FIG. 17 is a flowchart for explaining a second variation of the alignment process. Of the processes shown in FIG. 17, steps S503 to S509 are the same as the processes in steps S301 to S307 shown in FIG.
例えば、NANDコントローラ6aは、前回の整列処理において最後に整列処理を行ったグループ番号をロードする(ステップS501)。次に、NANDコントローラ6aは、ロードしたグループ番号の次のグループ番号を整列処理の対象とする(ステップS502)。そして、NANDコントローラ6aは、整列処理の対象とするグループ番号が付与された最初のエントリについて、ステップS503の処理を実行する。
For example, the
また、NANDコントローラ6aは、ステップS509の処理を実行すると、早引きテーブル13の各エントリのうち、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行ったか否か判定する(ステップS510)。そして、NANDコントローラ6aは、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行った場合は(ステップS510肯定)、整列処理を実行したグループ番号を保存し(ステップS511)、処理を終了する。一方、NANDコントローラ6aは、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行っていない場合は(ステップS510否定)、次の論理ブロックアドレスについて、ステップS503の処理を実行する。
Further, when executing the process of step S509, the
NANDコントローラ6aは、論理ブロックアドレスの一部ずつについて整列処理を実行した場合は、1回の整列処理に要する処理時間を短縮することができる。この結果、NANDコントローラ6aは、整列処理のスケジューリングを柔軟にすることができる。
When the
また、NANDコントローラ6aは、読み出し要求、または書き込み要求の発生頻度を論理ブロックアドレスごとに計数し、読み出し要求の発生頻度が多く、書き込み要求の発生頻度が少ない論理ブロックアドレスについて、整列処理を実行しても良い。以下、読み出し要求の発生頻度が多く、書き込み要求の発生頻度が少ない論理ブロックアドレスのグループについて、整列処理を実行するNANDコントローラ6cについて説明する。
In addition, the
図18は、読み出し要求と書き込み要求との発生頻度に応じて整列処理を実行するNANDコントローラの機能構成を説明する図である。なお、図18に示すNANDコントローラ6cの機能構成のうち、図6に示すNANDコントローラ6aと同様の機能構成については、同一の符号を付し、説明を省略する。
FIG. 18 is a diagram illustrating a functional configuration of a NAND controller that executes alignment processing according to the frequency of occurrence of read requests and write requests. Of the functional configuration of the
例えば、NANDコントローラ6cは、データ整列制御部18a、リクエストカウンタ22を有する。リクエストカウンタ22は、リクエスタインタフェース部14がI/Oハブ4を介して受信した読み出し要求、および書き込み要求の内容を取得する。そして、リクエストカウンタ22は、複数の論理ブロックアドレスを含むグループごとに、リクエスタインタフェース部14が受信した読み出し要求の数、および書き込み要求の数を計数する。
For example, the
また、リクエストカウンタ22は、データ整列制御部18aから整列処理の実行通知を受信すると、グループごとに、計数した読み出し要求の数から書き込み要求の数を減算した値を算出する。そして、リクエストカウンタ22は、算出した値が最も大きいグループに含まれる論理ブロックアドレスをデータ整列制御部18aに通知する。すなわち、リクエストカウンタ22は、読み出し要求の数が大きく、書き込み要求の数が少ないグループに含まれる論理ブロックアドレスをデータ整列制御部18aに通知する。
Further, when receiving the notification of execution of the alignment process from the data
データ整列制御部18aは、所定の時間間隔、もしくはシステムからの整列処理実行要求に応じて、整列処理を実行する場合は、整列処理の実行通知をリクエストカウンタ22に通知する。そして、データ整列制御部18aは、リクエストカウンタ22から論理ブロックアドレスを受信すると、データ整列制御部18と同様に、受信した論理ブロックアドレスについて整列処理を実行する。
The data
例えば、データ整列制御部18a、リクエストカウンタ22とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
For example, the data
次に、図19を用いて、NANDコントローラ6cが実行する整列処理の流れを説明する。図19は、整列処理の第3のバリエーションを説明するためのフローチャートである。なお、図19に示す処理のうち、ステップS603〜ステップS609は、図15に示すステップS301〜S307と同様の処理を実行するものとして、説明を省略する。
Next, the flow of alignment processing executed by the
例えば、NANDコントローラ6cは、各グループの読み出し要求の数から書き込み要求の数を減算する(ステップS601)。次に、NANDコントローラ6cは、減算結果の値が最も大きいグループを今回の整列処理の対象に設定する(ステップS602)。そして、NANDコントローラ6cは、整列処理の対象となったグループに含まれる論理アドレスについて、ステップS603の処理を実行する。また、NANDコントローラ6cは、ステップS609の処理を実行すると、グループ内の全ての論理ブロックアドレスについて整列処理を実行したか否かを判定する(ステップS610)。
For example, the
そして、NANDコントローラ6cは、グループ内の全ての論理ブロックアドレスについて整列処理を行った場合は(ステップS610肯定)、処理を終了する。一方、NANDコントローラ6cは、グループ内全ての論理ブロックアドレスについて整列処理を行っていない場合は(ステップS610否定)、グループ内の次の論理ブロックアドレスについて、ステップS603の処理を実行する。
When the
[NANDコントローラ6cの効果]
上述したように、NANDコントローラ6cは、論理ブロックアドレスごとに、読み出し要求の数と書き込み要求の数とを計数する。そして、NANDコントローラ6cは、読み出し要求の数から書き込み要求の数を減算した数が最も多い論理ブロックアドレスについて、整列処理を実行する。このため、NANDコントローラ6cは、効果的な整列処理を実行することができる。[Effect of
As described above, the
すなわち、読み出し要求の数が多く、書き込み要求の数が少ない論理ブロックアドレスの各論理ページを物理ブロック上で整列させた場合は、無効になる確率が少なく、早引きテーブル13を用いたアドレス変換が多く実行されると考えられる。このため、NANDコントローラ6cは、読み出し要求の数が多く、書き込み要求の数が少ない論理ブロックアドレスを優先的に整列させるので、効率的な整列処理を実行することができる。
That is, when logical pages with logical block addresses with a large number of read requests and a small number of write requests are aligned on a physical block, there is little probability of invalidity, and address conversion using the early lookup table 13 is performed. Many are thought to be implemented. For this reason, the
実施例1、2では、論理ブロック、および物理ブロックを早引きテーブル13に登録したデータ単位としたが、実施例はこれに限定されるものではない。すなわち、NANDコントローラ6a〜6cは、任意のデータ単位で、論理アドレス、および物理アドレスを分割し、早引きテーブル13に登録してもよい。
In the first and second embodiments, the logical unit and the physical block are data units registered in the quick-draw table 13, but the embodiment is not limited to this. In other words, the
例えば、NANDコントローラ6a〜6cは、論理アドレスの上位iビットと、物理アドレスの上位iビットとを対応付けて早引きテーブル13としてもよい。また、このような分割を行う場合は、変換テーブルタグ11と早引きテーブル13とを共通化してもよい。
For example, the
以下、図20を用いて、変換テーブルタグ11と早引きテーブル13とを共通化したNANDコントローラ6dについて説明する。図20は、変換テーブルタグと早引きテーブルとを共通化したNANDコントローラの機能構成を説明する図である。なお、図20に示すNANDコントローラ6dの機能構成のうち、図6に示すNANDコントローラ6aと同様の機能構成については、同一の符号を付し、説明を省略する。
Hereinafter, a
例えば、NANDコントローラ6dは、早引きテーブル13a、およびアドレス変換制御部16aを有する。早引きテーブル13aは、論理アドレスのうち上位iビットと対応付けられた複数のエントリを有する。そして、早引きテーブル13aは、早引きテーブル13と同様に、各エントリに登録フラグと、物理アドレスの上位iビットとを対応付けて記憶する。また、早引きテーブル13aは、変換テーブルタグ11と同様に、各エントリに、各エントリと対応付けられた上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレスをさらに格納する。
For example, the
アドレス変換制御部16aは、アドレス変換制御部16と同様の処理を行う。この際、アドレス変換制御部16aは、早引きテーブル13aを変換テーブルタグ11、および早引きテーブル13として利用する。以下、図21を用いて、アドレス変換制御部16aが実行するアドレス変換処理の流れを説明する。
The address
図21は、変換テーブルタグと早引きテーブルとを共通化した際のアドレス変換処理の流れを説明する図である。図21に示すように早引きテーブル13aの各エントリには、論理アドレスの上位iビットである上位アドレス「0」〜「2i−1」が対応付けられている。また、早引きテーブル13aの各エントリには、物理アドレスの上位iビットである「A」〜「M」が格納されている。また、早引きテーブル13aの各エントリには、対応する上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレス「a」〜「m」が格納されている。FIG. 21 is a diagram for explaining the flow of the address conversion process when the conversion table tag and the early lookup table are shared. As shown in FIG. 21, each entry in the early lookup table 13a is associated with upper addresses “0” to “2 i −1” that are upper i bits of the logical address. In addition, each entry of the fast-drawing table 13a stores “A” to “M” that are the higher-order i bits of the physical address. In addition, each entry of the early lookup table 13a stores physical addresses “a” to “m” in which an address conversion table for converting a logical address including a corresponding higher address into a physical address is stored.
例えば、アドレス変換制御部16aは、論理アドレスを受信すると、図21中(a)に示すように、早引きテーブル13aの各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリを識別する。例えば、アドレス変換制御部16aは、図21に示す例では、上位アドレス「1」と対応付けられたエントリを識別する。
For example, when the address
そして、アドレス変換制御部16aは、識別したエントリの登録フラグが「0」である場合は、以下の処理を実行する。まず、アドレス変換制御部16aは、識別したエントリに格納された物理アドレス「b」を取得し、図21中(b)に示すように、物理アドレス「b」に格納されているアドレス変換テーブル20の一部を取得する。そして、アドレス変換制御部16aは、図21中(c)に示すように、取得したアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12とする。
Then, when the registration flag of the identified entry is “0”, the address
また、アドレス変換制御部16aは、図21中(d)に示すように、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを識別する。そして、アドレス変換制御部16aは、識別したエントリに格納されている物理アドレス「BC」を変換後の物理アドレスとして、リクエスト調停部15に出力する。
Further, the address
なお、アドレス変換制御部16aは、例えば、受信した論理アドレスの上位アドレスが「2i−1」であった場合は、早引きテーブル13aの各エントリのうち、上位アドレス「2i−1」と対応付けられたエントリを識別する。そして、アドレス変換制御部16aは、識別したエントリの登録フラグが「1」であるので、識別したエントリに格納されている物理アドレスの上位iビット「M」を取得する。そして、アドレス変換制御部16aは、取得した「M」を上位iビットとし、受信した論理アドレスの下位アドレスを下位jビットとする物理アドレスを変換後の物理アドレスとして、リクエスト調停部15に出力する。The address
例えば、アドレス変換制御部16aは、電子回路である。ここで、電子回路の例として、ASICやFPGAなどの集積回路、またはCPUやMPUなどを適用する。また、早引きテーブル13aとは、半導体メモリ等の記憶装置に記憶される情報である。
For example, the address
[NANDコントローラ6dの効果]
このように、NANDコントローラ6dは、アドレス変換テーブルキャッシュ12を記憶する。また、NANDコントローラ6dは、論理アドレスの上位ビットと、登録フラグと、データの整理先となる物理記憶領域を示す物理アドレスの上位ビットとを対応付けたエントリを有する早引きテーブル13aを有する。また、NANDコントローラ6dは、早引きテーブル13aに、同一エントリの論理アドレスの上位ビットを含む論理アドレスを物理アドレスに変換する変換テーブルが格納された物理アドレスを各エントリに格納する。[Effect of
Thus, the
そして、NANDコントローラ6dは、読み出し対象の論理アドレスから上位ビットを取得し、取得した上位ビットと対応付けられた登録フラグが「0」である場合は、取得した上位ビットと対応付けられた物理アドレスを用いて、アドレス変換テーブルを取得する。また、NANDコントローラ6dは、取得した上位ビットと対応付けられた登録フラグが「1」である場合は、取得した上位ビットと対応付けられた物理アドレスの上位ビットを取得する。そして、NANDコントローラ6dは、取得した上位ビットに読み出し対象の論理アドレスの下位ビットを付加した物理アドレスが示すページからデータの読み出しを行う。
Then, the
このように、NANDコントローラ6dは、変換テーブルタグ11と早引きテーブル13aとを1つのテーブルに統合する。この結果、NANDコントローラ6dは、テーブルの検索や更新に要するレイテンシを削減し、記憶デバイス7a〜10aに対するアクセス性能を向上させることができる。また、NANDコントローラ6dは、変換テーブルタグ11と早引きテーブル13aとを記憶するための記憶容量を削減するので、回路規模を縮小することができる。
As described above, the
実施例1〜3では、早引きテーブルをNANDコントローラ6a〜6d上に設置する例について記載したが、実施例はこれに限定されるものではない。そこで、以下の実施例4では、早引きテーブル13aを記憶デバイス7a〜10a上に設置し、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして保持するNANDコントローラ6eについて説明する。
In the first to third embodiments, an example in which the quick-drawing table is installed on the
図22は、早引きテーブルの一部を保持するNANDコントローラの機能構成を説明する図である。なお、図22に示すNANDコントローラ6eの機能構成のうち、図6に示すNANDコントローラ6aと同様の機能構成については、同一の符号を付し、説明を省略する。例えば、NANDコントローラ6eは、早引きテーブルタグ11a、アドレス変換制御部16b、および早引きテーブルキャッシュ13bを有する。また記憶デバイス7a〜10aは、早引きテーブル13aを記憶する。
FIG. 22 is a diagram for explaining the functional configuration of the NAND controller that holds a part of the early lookup table. Of the functional configuration of the
早引きテーブルタグ11aは、論理アドレスの上位アドレスのうちの上位kビットであるインデックスと、対応するインデックスを含んだ上位アドレスを含む各論理アドレスの早引きテーブルを記憶する物理アドレスとを対応付けて記憶する。また、早引きテーブルキャッシュ13bは、記憶デバイス7a〜10aが記憶する早引きテーブル13aの一部である。
The early
以下、図23を用いて、アドレス変換制御部16bが実行する処理の流れについて説明する。図23は、早引きテーブルタグを用いて実行するアドレス変換処理の流れを説明する図である。例えばアドレス変換制御部16bは、読み出し要求の対象となる論理アドレスを受信すると、図23中(f)に示すように、受信した論理アドレスの上位kビットであるインデックスを用いて早引きテーブルタグ11aを検索する。そして、アドレス変換制御部16bは、受信した論理アドレスに含まれる上位アドレスの早引きを行うための早引きテーブルが格納された物理アドレス「z」を早引きテーブルタグ11aから取得する。
Hereinafter, the flow of processing executed by the address
次に、アドレス変換制御部16bは、図23中(g)に示すように、取得した物理アドレス「z」が示すページに格納されている早引きテーブル13aの一部を取得し、図23中(h)に示すように、早引きテーブルキャッシュ13bとする。次に、アドレス変換制御部16bは、図23中(i)に示すように、早引きテーブルキャッシュ13bの各エントリのうち、読み出し要求の対象となる論理アドレスの上位アドレスと対応付けられたエントリを識別する。
Next, as shown in (g) of FIG. 23, the address
ここで、アドレス変換制御部16bは、識別したエントリの登録フラグが「0」であるので、識別したエントリに格納された物理アドレス「f」を取得する。また、アドレス変換制御部16bは、図23中(j)に示すように、物理アドレス「f」に格納されているアドレス変換テーブル20の一部を取得する。そして、アドレス変換制御部16bは、図23中(k)に示すように、取得したアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12とする。
Here, since the registration flag of the identified entry is “0”, the address
また、アドレス変換制御部16bは、図23中(l)に示すように、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを識別する。そして、アドレス変換制御部16bは、図23中(m)に示すように、識別したエントリに格納されている物理アドレス「BC」を変換後の物理アドレスとして、リクエスト調停部15に出力する。
Further, as shown in (l) of FIG. 23, the address
例えば、アドレス変換制御部16bは、電子回路である。ここで、電子回路の例として、ASICやFPGAなどの集積回路、またはCPUやMPUなどを適用する。また、早引きテーブルタグ11a、早引きテーブルキャッシュ13bとは、半導体メモリ等の記憶装置に記憶される情報である。
For example, the address
[NANDコントローラ6eの効果]
このように、NANDコントローラ6eは、インデックスと、インデックスを含む上位アドレスを含む論理アドレスについての早引きテーブルを記憶するページを示す物理アドレスとを対応付けた早引きテーブルタグ11aを有する。また、NANDコントローラ6eは、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして記憶する。[Effect of
As described above, the
そして、NANDコントローラ6eは、読み出し対象の論理アドレスのインデックスと対応付けられた物理アドレスを早引きテーブルタグ11aから取得する。その後、NANDコントローラ6eは、取得した物理アドレスを用いて、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして保持する。また、NANDコントローラ6eは、保持した早引きテーブルキャッシュ13bから、読み出し対象の論理アドレスの上位ビットと対応付けられた物理アドレスの上位ビットを取得する。
Then, the
このように、NANDコントローラ6eは、早引きテーブル13aを記憶デバイス7a〜10a上に保持し、早引きテーブル13aの一部を保持する。このため、NANDコントローラ6eは、記憶デバイス7a〜10aの容量が増大し、アドレス変換テーブルの容量が増大する結果、早引きテーブル13aの容量が増大した場合であっても、早引きテーブルを用いたアドレス変換を行える。
In this way, the
また、早引きテーブル13aの大きさは、アドレス変換テーブル20のサイズの例えば100分の1から1000分の1程度に収めることができる。この結果、NANDコントローラ6eは、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして保持した場合であっても早引きテーブルのキャッシュヒット率をあまり下げない。このため、NANDコントローラ6eは、アドレス変換に要する時間が増大するのを防ぐことができる。
In addition, the size of the quick lookup table 13a can be within, for example, about 1/100 to 1/1000 of the size of the address conversion table 20. As a result, the
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例5として本発明に含まれる他の実施例を説明する。 Although the embodiments of the present invention have been described so far, the embodiments may be implemented in various different forms other than the embodiments described above. Therefore, another embodiment included in the present invention will be described below as a fifth embodiment.
(1)整列処理の単位について
上述したNANDコントローラ6aは、記憶デバイス7a〜10aの物理ブロックにあわせた論理ブロックごとにデータの整列処理を行った。しかし、実施例はこれに限定されるものではない。すなわち、NANDコントローラ6aは、論理ブロックの大きさを記憶デバイス7a〜10aの物理ブロックにあわせる必要はなく、任意の大きさの論理ブロックについて、データの整列処理を実行することができる。(1) Unit of Alignment Processing The
例えば、NANDコントローラ6aは、数ページ程度の物理ブロックよりも小さな連続する論理ページを整列処理の単位としてもよい。また、NANDコントローラ6aは、複数の物理ブロックほどの大きさを持つ論理ブロック単位でデータの整列処理を実行することもできる。すなわち、NANDコントローラ6aは、論理アドレスを論理ブロックアドレスと論理ページアドレスとに分割する際に、任意のビット数で分割を行うことができる。
For example, the
(2)記憶デバイスの寿命について
上述したNANDコントローラ6a〜6eは、整列処理を実行するにあたり、データの移動にともなうデータの書き込み処理を実行する。ここで、記憶デバイス7a〜10aの寿命を考慮した場合は、書き込み処理の回数を削減するため、過剰な整列を行わないようにするのが望ましい。特に、ファイルシステムが実際には使用していないデータに対する整列処理を行わないようにするのが望ましい。(2) Life of Storage Device
そこで、NANDコントローラ6a〜6eは、Trimと呼ばれるデータ無効通知コマンドを考慮した整列処理を行っても良い。例えば、NANDコントローラ6a〜6eは、Trimの対象となったページを管理対象から除外することで、実際には使用していないデータに対する整列処理を回避するようにしてもよい。
Therefore, the
(3)早引きテーブルとアドレス変換テーブルとについて
上述したNANDコントローラ6aは、論理アドレスを受信すると、早引きテーブル13を確認し、論理アドレスに含まれる論理ブロックアドレスに対応するエントリの登録フラグが「1」である場合には、早引きテーブル13を用いたアドレス変換を行った。また、NANDコントローラ6aは、対応するエントリの登録フラグが「0」である場合は、アドレス変換テーブルを用いたアドレス変換処理を実行した。(3) About the early lookup table and the address conversion table When the
しかし、実施例はこれに限定されるものではない。例えば、NANDコントローラ6aは、早引きテーブル13を用いたアドレス変換処理とアドレス変換テーブルを用いたアドレス変換処理とを平行して実行し、いずれかの処理においてアドレス変換が完了した場合には、他方の処理を中止してもよい。
However, the embodiment is not limited to this. For example, the
(4)プログラム
上記の実施例で説明した各種の処理は、予め用意された制御プログラムをNANDコントローラ内の演算処理装置が実行することで実現してもよい。そこで、以下では、図24を用いて、上記のNANDコントローラ6aと同様の機能を有する制御プログラムを実行するコンピュータの一例について説明する。(4) Program The various processes described in the above embodiments may be realized by executing a control program prepared in advance by an arithmetic processing unit in the NAND controller. In the following, an example of a computer that executes a control program having the same function as that of the
図24は、制御プログラムを実行するNANDコントローラの一例について説明する図である。図24に示すように、NANDコントローラ6fは、CPU(Central Processing Unit)30、デバイスアクセス制御部35を有する。また、CPU30は、メモリデバイス6gと接続される。
FIG. 24 is a diagram illustrating an example of a NAND controller that executes a control program. As illustrated in FIG. 24, the NAND controller 6 f includes a CPU (Central Processing Unit) 30 and a device
メモリデバイス6gには、変換テーブルタグ11、アドレス変換テーブルキャッシュ12、早引きテーブル13、制御プログラム36があらかじめ記憶される。また、記憶デバイス7a〜10aには、アドレス変換テーブル20、およびユーザデータ21があらかじめ格納されている。
In the memory device 6g, a
ここで、CPU30がメモリデバイス6gから制御プログラム36を読み出して展開して実行することにより、制御プログラム36は、以下の様に機能する。すなわち、制御プログラム36は、アドレス変換制御プロセス31、リクエスト調停プロセス32、データ整列制御プロセス33、ガベージコレクション制御プロセス34として機能する。ここで、アドレス変換制御プロセス31、リクエスト調停プロセス32、データ整列制御プロセス33は、図6に示すアドレス変換制御部16、リクエスト調停部15、データ整列制御部18と同様の機能を発揮する。また、ガベージコレクション制御プロセス34は、図6に示すガベージコレクション制御部19と同様の機能を発揮する。
Here, when the
なお、上記の制御プログラム36については、必ずしも最初からメモリデバイス6gに記憶させておく必要はない。例えば、フレキシブルディスク、いわゆるFD(Flexible Disk)、CD(Compact Disk)−ROM、DVD(Digital Versatile Disk)、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。
Note that the
そして、NANDコントローラ6fが各CPU3a、3bを解して、これらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WAN(Wide Area Network)などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを取得して実行するようにしてもよい。 Then, the NAND controller 6f may solve the CPUs 3a and 3b to acquire and execute each program from these portable physical media. Further, each program stored in another computer or a server device may be acquired and executed via a public line, the Internet, a LAN, a WAN (Wide Area Network), or the like.
1 情報処理装置
2a、2b メモリ
3a、3b CPU
4 I/Oハブ
5a、5b SSD
6a〜6f NANDコントローラ
6g メモリデバイス
7a〜10a、7b〜10b 記憶デバイス
11 変換テーブルタグ
11a 早引きテーブルタグ
12 アドレス変換テーブルキャッシュ
13、13a 早引きテーブル
13b 早引きテーブルキャッシュ
14 リクエスタインタフェース部
15 リクエスト調停部
16、16a、16b アドレス変換制御部
17 デバイスアクセス制御部
18、18a データ整列制御部
19 ガベージコレクション制御部
20 アドレス変換テーブル
21 ユーザデータ
30 CPU
31 アドレス変換制御プロセス
32 リクエスト調停プロセス
33 データ整列制御プロセス
34 ガベージコレクション制御プロセス1
4 I /
6a to 6f NAND controller
31 Address
Claims (7)
複数の論理ブロック番号を含むグループごとに、データの読み出し要求の数と、前記データの書き込み要求の数とを計数する計数部と、
前記計数部が計数した前記読み出し要求の数から前記書き込み要求の数を減算した数が最も多いグループに含まれる1つの論理ブロック番号を選択する選択部と、
前記選択部が選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を前記第1の記憶部が記憶する変換テーブルから識別する識別部と、
前記識別部が識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させる移動部と、
前記移動部が前記データを移動させたブロックの物理ブロック番号と、前記選択部が選択した論理ブロック番号とを対応付けた早引きテーブルを記憶する第2の記憶部と、
読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第2の記憶部が記憶する早引きテーブルから取得する取得部と、
前記取得部が取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す読み出し部と
を有することを特徴とする制御装置。 A physical block number that physically indicates the block and a logical number that combines a logical block number that logically indicates a block having a plurality of storage areas and a logical page number that logically indicates a storage area included in the block, and the storage A first storage unit that stores a conversion table in which physical numbers that combine physical page numbers that physically indicate areas are associated;
For each group including a plurality of logical block numbers, a counting unit that counts the number of data read requests and the number of data write requests ;
A selection unit that selects one logical block number included in a group having the largest number obtained by subtracting the number of write requests from the number of read requests counted by the counting unit ;
An identification unit for identifying a physical number associated with a logical number including a logical block number selected by the selection unit from a conversion table stored in the first storage unit;
The data in the storage area indicated by the physical number identified by the identification unit is stored in a storage area indicated by the same physical page number as the logical page number included in the logical number of the data. A moving part to be moved;
A second storage unit that stores a fast-drawing table that associates the physical block number of the block to which the moving unit has moved the data with the logical block number selected by the selection unit;
When a logical number indicating an area in which data to be read is stored is received, a physical block number associated with the logical block number included in the received logical number is acquired from the fast lookup table stored in the second storage unit. An acquisition unit to
A reading unit that reads data stored in an area indicated by the same physical page number as the logical page number included in the received logical number, among the data stored in the block indicated by the physical block number acquired by the acquisition unit; A control device comprising:
前記移動部は、前記消去部がデータを消去したブロックに対し、前記データを移動させることを特徴とする請求項1または2に記載の制御装置。 It has an erasing unit for erasing data in the block by copying the data stored in the block including the unused storage area to another block,
The control device according to claim 1, wherein the moving unit moves the data to a block from which the erasing unit has erased the data.
前記第2の記憶部は、前記移動部が前記データを移動させたブロックの物理ブロック番号と、当該ブロックに前記移動部がデータを移動させたか否かを示すフラグと、前記選択部が選択した論理ブロック番号とを対応付けた早引きテーブル、および、当該論理ブロック番号を含む論理番号を物理番号に変換する変換テーブルが記憶された領域を示す物理番号とを対応付けた変換テーブルタグを記憶し
前記移動部は、前記データを移動させると、当該データを移動させたブロックの物理ブロック番号と対応付けて前記データを移動させた旨を示すフラグを前記早引きテーブルに格納し、
前記取得部は、読み出し対象の論理番号に含まれる論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられている場合は、当該論理ブロック番号と対応付けられた物理ブロック番号を取得し、該論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられていない場合は、当該論理ブロック番号に対応付けられた物理番号が示す記憶領域に格納された変換テーブルを前記第1の記憶部に格納し、
前記読み出し部は、前記読み出し対象の論理番号に含まれる論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられていない場合は、前記第1の記憶部に格納された変換テーブルを用いて、読み出し対象の論理番号に対応付けられた物理番号を取得し、当該取得した物理番号が示す記憶領域からデータの読み出しを行うことを特徴とする請求項1または2に記載の制御装置。 The first storage unit stores a part of the conversion table stored in a storage device,
The second storage unit selects the physical block number of the block to which the moving unit has moved the data, a flag indicating whether the moving unit has moved the data to the block, and the selection unit selected Stores a conversion table tag that associates a fast lookup table that associates a logical block number with a physical number indicating an area in which a conversion table that converts a logical number including the logical block number into a physical number is stored. When the moving unit moves the data, the moving unit stores a flag indicating that the data has been moved in association with the physical block number of the block to which the data has been moved, in the quick lookup table,
If the flag indicating that the data has been moved is associated with the logical block number included in the logical number to be read, the acquisition unit sets the physical block number associated with the logical block number. If the flag indicating that the data has been moved is not associated with the logical block number, the conversion table stored in the storage area indicated by the physical number associated with the logical block number is stored. Storing in the first storage unit;
The reading unit, when a flag indicating that the data has been moved is not associated with the logical block number included in the logical number to be read, the conversion table stored in the first storage unit 3. The control device according to claim 1, wherein a physical number associated with a logical number to be read is acquired using and the data is read from a storage area indicated by the acquired physical number. .
前記第2の記憶部は、記憶装置が記憶する前記早引きテーブルの一部を記憶し、
前記取得部が、読み出し対象の論理アドレスの上位ビットのインデックスと対応付けられた物理アドレスを前記第3の記憶部から取得し、当該取得した物理アドレスが示す記憶領域から読み出した早引きテーブルを前記第2の記憶部に格納し、当該第2の記憶部に格納した早引きテーブルから、前記読み出し対象の論理アドレスの上位ビットと対応付けられた物理アドレスの上位ビットを取得することを特徴とする請求項2に記載の制御装置。 A physical address indicating a storage area in which the early lookup table is stored is associated with an index that is an upper bit of the logical address stored in the early lookup table stored in the storage area indicated by the physical address. A third storage unit;
The second storage unit stores a part of the quick lookup table stored in a storage device,
The acquisition unit acquires the physical address associated with the higher-order bit index of the logical address to be read from the third storage unit, and reads the fast lookup table read from the storage area indicated by the acquired physical address. The high-order bit of the physical address associated with the high-order bit of the logical address to be read is acquired from the quick lookup table stored in the second storage unit and stored in the second storage unit. The control device according to claim 2.
記憶領域を複数有するブロックを論理的に示す論理ブロック番号を複数含むグループごとに、データの読み出し要求の数と、前記データの書き込み要求の数とを計数し、
計数した前記読み出し要求の数から前記書き込み要求の数を減算した数が最も多いグループに含まれる論理ブロック番号を1つ選択し、
論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第1の記憶部から、前記選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を識別し、
前記識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させ、
前記データを移動させたブロックの物理ブロック番号と、前記選択した論理ブロック番号とを対応付けて第2の記憶部に記憶させ、
読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第2の記憶部から取得し、
前記取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す
処理を実行させることを特徴とする制御プログラム。 In the computer of the control device that reads data from the storage device,
For each group including a plurality of logical block numbers that logically indicate blocks having a plurality of storage areas, the number of data read requests and the number of data write requests are counted ,
Select one logical block number included in the group with the largest number obtained by subtracting the number of write requests from the number of read requests counted ,
A logical number obtained by combining a logical block number and a logical page number that logically indicates a storage area included in the block, and a physical block number that physically indicates the block and a physical page number that physically indicates the storage area. Identifying a physical number associated with a logical number including the selected logical block number from a first storage unit storing a conversion table in which the combined physical numbers are associated;
The storage area data indicated by the identified physical number is moved to a storage area included in one block and indicated by the same physical page number as the logical page number included in the logical number of the data,
The physical block number of the block to which the data has been moved and the selected logical block number are associated with each other and stored in the second storage unit,
When a logical number indicating an area in which data to be read is stored is received, a physical block number associated with a logical block number included in the received logical number is acquired from the second storage unit,
Out of the data stored in the block indicated by the acquired physical block number, the process of reading the data stored in the area indicated by the same physical page number as the logical page number included in the received logical number is executed. A characteristic control program.
記憶領域を複数有するブロックを論理的に示す論理ブロック番号を複数含むグループごとに、データの読み出し要求の数と、前記データの書き込み要求の数とを計数し、
計数した前記読み出し要求の数から前記書き込み要求の数を減算した数が最も多いグループに含まれる論理ブロック番号を1つ選択し、
論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第1の記憶部から、前記選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を識別し、
前記識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させ、
前記データを移動させたブロックの物理ブロック番号と、前記選択した論理ブロック番号とを対応付けて第2の記憶部に記憶させ、
読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第2の記憶部から取得し、
前記取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す
処理を実行することを特徴とする制御方法。 A control device that reads data from the storage device
For each group including a plurality of logical block numbers that logically indicate blocks having a plurality of storage areas, the number of data read requests and the number of data write requests are counted ,
Select one logical block number included in the group with the largest number obtained by subtracting the number of write requests from the number of read requests counted ,
A logical number obtained by combining a logical block number and a logical page number that logically indicates a storage area included in the block, and a physical block number that physically indicates the block and a physical page number that physically indicates the storage area. Identifying a physical number associated with a logical number including the selected logical block number from a first storage unit storing a conversion table in which the combined physical numbers are associated;
The storage area data indicated by the identified physical number is moved to a storage area included in one block and indicated by the same physical page number as the logical page number included in the logical number of the data,
The physical block number of the block to which the data has been moved and the selected logical block number are associated with each other and stored in the second storage unit,
When a logical number indicating an area in which data to be read is stored is received, a physical block number associated with a logical block number included in the received logical number is acquired from the second storage unit,
Executing the process of reading the data stored in the area indicated by the same physical page number as the logical page number included in the received logical number among the data stored in the block indicated by the acquired physical block number Characteristic control method.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2013/057909 WO2014147768A1 (en) | 2013-03-19 | 2013-03-19 | Control device, control program, and control method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPWO2014147768A1 JPWO2014147768A1 (en) | 2017-02-16 |
| JP6132010B2 true JP6132010B2 (en) | 2017-05-24 |
Family
ID=51579500
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2015506463A Active JP6132010B2 (en) | 2013-03-19 | 2013-03-19 | Control device, control program, and control method |
Country Status (2)
| Country | Link |
|---|---|
| JP (1) | JP6132010B2 (en) |
| WO (1) | WO2014147768A1 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10552316B2 (en) | 2018-06-29 | 2020-02-04 | Micron Technology, Inc. | Controlling NAND operation latency |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009301491A (en) * | 2008-06-17 | 2009-12-24 | Tdk Corp | Memory controller, flash memory system equipped with memory controller, and control method for flash memory |
| JP5295286B2 (en) * | 2011-02-23 | 2013-09-18 | 株式会社日立製作所 | Storage device and computer equipped with the same |
-
2013
- 2013-03-19 WO PCT/JP2013/057909 patent/WO2014147768A1/en not_active Ceased
- 2013-03-19 JP JP2015506463A patent/JP6132010B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| JPWO2014147768A1 (en) | 2017-02-16 |
| WO2014147768A1 (en) | 2014-09-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110781096B (en) | Apparatus and method for performing garbage collection by predicting demand time | |
| JP2020046963A (en) | Memory system and control method | |
| CN108345545B (en) | Storage device performing hash translation between logical and physical addresses | |
| JP2015001908A (en) | Information processing apparatus, control circuit, control program, and control method | |
| CN108804350A (en) | A kind of memory pool access method and computer system | |
| US11048623B2 (en) | Memory controller including mapping tables to efficiently process an iteration command and a method of operating the same | |
| CN106527963A (en) | Memory system and host apparatus | |
| JP2015001909A (en) | Information processing apparatus, control circuit, control program, and control method | |
| US20200201782A1 (en) | Memory controller and memory page management method | |
| US11662932B2 (en) | Tiered storage system with defragmentation based on weighted flash fragmentation factor | |
| JP6167646B2 (en) | Information processing apparatus, control circuit, control program, and control method | |
| JP5967307B2 (en) | Information processing apparatus, control circuit, control program, and control method | |
| US20180276115A1 (en) | Memory system | |
| JP2014229216A (en) | Information processing device, control circuit, control program, and control method | |
| WO2016101145A1 (en) | Controller, method for identifying data block stability and storage system | |
| JP6179355B2 (en) | Information processing apparatus, data transfer control method, and data transfer control program | |
| JP6132010B2 (en) | Control device, control program, and control method | |
| JP5967308B2 (en) | Information processing apparatus, control circuit, control program, and control method | |
| KR20150139383A (en) | Semiconductor device | |
| JP2013109404A (en) | Information processing device | |
| JP5253471B2 (en) | Memory controller | |
| US10725675B2 (en) | Management apparatus, information processing apparatus, management method, and computer program product | |
| CN118860298B (en) | Cache data management method and device, storage medium and program product | |
| TWI900800B (en) | Key-value persistent storage device and method for two-level indexing therefor | |
| JP6028866B2 (en) | Information processing apparatus, control circuit, control program, and control method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20161213 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170131 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170321 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170403 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6132010 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |