JP5377182B2 - 制御装置 - Google Patents

制御装置 Download PDF

Info

Publication number
JP5377182B2
JP5377182B2 JP2009209224A JP2009209224A JP5377182B2 JP 5377182 B2 JP5377182 B2 JP 5377182B2 JP 2009209224 A JP2009209224 A JP 2009209224A JP 2009209224 A JP2009209224 A JP 2009209224A JP 5377182 B2 JP5377182 B2 JP 5377182B2
Authority
JP
Japan
Prior art keywords
sector
address
special
page
trim
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
Application number
JP2009209224A
Other languages
English (en)
Other versions
JP2011060007A (ja
Inventor
哲郎 木村
伸一 菅野
滋博 浅野
和弘 福冨
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009209224A priority Critical patent/JP5377182B2/ja
Priority to US12/716,547 priority patent/US8423709B2/en
Publication of JP2011060007A publication Critical patent/JP2011060007A/ja
Application granted granted Critical
Publication of JP5377182B2 publication Critical patent/JP5377182B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7205Cleaning, 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)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Description

本発明は、制御装置に関する。
例えば、ホスト機器で利用する記憶装置をHDD(Hard Disk Drive)からフラッシュメモリなどの半導体記憶装置に置換する場合、HDDに記憶されたデータをフラッシュメモリにコピーすることが考えられている。このHDDに不良セクタがあった場合、不良セクタの記憶位置を示すセクタアドレスから読み出されたデータは、復元不能な誤ったデータとして読み出される(例えば特許文献1参照)。このため、フラッシュメモリにコピーされた後、フラッシュメモリにおいてそのセクタアドレスに対応するデータの格納場所にアクセスする際には、不良セクタへのアクセスとして、なんらかの対策が必要である。
特開2005−293119号公報
例えば、不良セクタとフラッシュメモリにおけるデータの格納場所との対応関係をテーブルに登録しておき、フラッシュメモリにアクセスする際には、アクセス毎に、テーブルを参照して、アクセスする対象の格納場所が、不良セクタに相当するか否かを判断することが考えられる。しかし、HDDにおいて不良セクタが発生する可能性は低いため、アクセスする対象の格納場所が不良セクタに相当する可能性も低い。それにも関らず、アクセスの度に、テーブルを参照して、不良セクタに相当するか否かを判断することは、非効率である。このため、半導体記憶装置において、不良セクタなどの特殊なセクタへのアクセスに際して、全体の処理性能を向上させることが望まれていた。
本発明は、上記に鑑みてなされたものであって、半導体記憶装置において、処理性能の向上が可能な制御装置を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、制御装置であって、不揮発性メモリの記憶領域における論理的な記憶位置を示すセクタアドレスの集合と、前記不揮発性メモリの記憶領域における物理的な記憶位置をページ単位で示すページアドレスと、不良セクタ及びTRIMのコマンドによりトリムされたトリムセクタのうち少なくとも一方である特殊セクタが前記ページに無いか、前記不良セクタである前記特殊セクタが前記ページにあるか、前記トリムセクタである前記特殊セクタが前記ページ全てにあるか、前記トリムセクタである前記特殊セクタが前記ページの一部にあるかの何れかを示す管理情報とを対応付けて記憶する第1記憶部と、前記特殊セクタのセクタアドレスを記憶すると共に、記憶された当該セクタアドレスに対応する前記特殊セクタが前記不良セクタおよび前記トリムセクタの何れであるかを判別可能とした第2記憶部と、指定されたセクタアドレスへのアクセスが要求された場合、前記第1記憶部に記憶される前記管理情報を参照して、当該セクタアドレスに対応する前記ページアドレスによって特定される前記ページに前記特殊セクタがあるか否かを判定すると共に、前記特殊セクタが前記ページにあると判定した場合、前記不良セクタである前記特殊セクタが前記ページあるか、前記トリムセクタである前記特殊セクタが前記ページ全てにあるか、前記トリムセクタである前記特殊セクタが前記ページの一部にあるかを判定する第1判定部と、前記セクタアドレスが前記第2記憶部に記憶されているか否かを判定する第2判定部と、前記トリムセクタである前記特殊セクタが前記ページ全てにあると前記第1判定部により判定された場合、および、前記ページに前記特殊セクタがあると前記第1判定部により判定され、且つ、前記セクタアドレスが前記第2記憶部に記憶されていると前記第2判定部により判定された場合、前記特殊セクタが前記不良セクタおよび前記トリムセクタの何れであるか、および、アクセスの要求が読みだし要求および書き込み要求の何れであるかに応じて、異なる所定の応答データを作成する作成部と、前記ページに前記特殊セクタがないと前記第1判定部により判定された場合、前記第2判定部による判定を行うこと無く、前記セクタアドレスに対応する、前記不揮発性メモリの記憶位置にアクセスし、前記ページに前記特殊セクタがあると前記第1判定部に判定され、且つ、前記セクタアドレスが前記第2記憶部に記憶されていないと前記第2判定部により判定された場合、および、前記ページに前記トリムセクタである前記特殊セクタがあると前記第1判定部により判定され、且つ、前記アクセスの要求が書き込み要求である場合、前記セクタアドレスに対応する、前記不揮発性メモリの記憶位置にアクセスする制御部と、指定された第1セクタアドレスについて特殊セクタの登録が要求された場合、当該第1セクタアドレスの登録によって、当該セクタアドレスに対応する前記ページアドレスにより特定される前記ページ全てに前記トリムセクタである前記特殊セクタがあることになるか否かを判定する第3判定部と、前記第1記憶部に記憶された前記管理情報を更新する第1更新部とを備え、前記第1更新部は、前記ページ全てに前記トリムセクタである前記特殊セクタを含むことになると前記第3判定部に判定された場合、前記ページ全てに前記トリムセクタである前記特殊セクタがあることを示すよう、前記第1記憶部に記憶された前記管理情報を更新し、前記ページの一部に前記トリムセクタである前記特殊セクタがあることになると前記第3判定部により判定された場合、前記ページの一部に前記トリムセクタである前記特殊セクタがあることを示すよう、前記第1記憶部に記憶された前記管理情報を更新することを特徴とする。
本発明によれば、半導体記憶装置において、処理性能の向上が可能になる。
半導体記憶装置50のハードウェア構成を例示する図。 制御部51の機能的構成を例示する図。 アドレス変換テーブル記憶部70のデータ構成を例示する図。 特殊セクタ記憶部80のデータ構成を例示する図。 不良セクタを新たに登録する処理の手順を示すフローチャート。 トリムセクタを新たに登録する処理の手順を示すフローチャート。 トリムセクタを新たに登録する処理の手順を示すフローチャート。 フラッシュメモリ素子52からデータを読み出す処理の手順を示すフローチャート。 フラッシュメモリ素子52にデータを書き込む処理の手順を示すフローチャート。 フラッシュメモリ素子52にデータを書き込む処理の手順を示すフローチャート。 フラッシュメモリ素子52にデータを書き込む処理の手順を示すフローチャート。 不良セクタ記憶部と、トリムセクタ記憶部とのデータ構成を各々例示する図。
以下に添付図面を参照して、この発明にかかる制御装置の一実施の形態を詳細に説明する。
ここで、半導体記憶装置のハードウェア構成について図1を用いて説明する。本実施の形態にかかる半導体記憶装置50は、制御装置である制御部51とフラッシュメモリ素子52とを備える。フラッシュメモリ素子52は、例えば、NAND型フラッシュメモリで用いられる記憶素子である。制御部51は、プログラムを実行することにより装置全体を制御するCPU(Central Processing Unit)53と、各種データや各種プログラムを記憶するRAM(Random Access Memory)54と、上位装置であるホスト機器との通信を制御するホストI/F(interface)55と、フラッシュメモリとの間でデータ転送を制御するフラッシュメモリI/F(不図示)とを有する。
このような構成において、半導体記憶装置50は、ホストI/F55を介してホスト機器と通信し、ホスト機器からの要求を示すコマンドに応じて、ホスト機器から送信されるデータをフラッシュメモリ素子52に記憶したり、フラッシュメモリ素子52から読み出したデータをホスト機器に送信したり、特殊な処理を必要とするセクタ(特殊セクタという)を登録したりする。特殊な処理とは、特殊セクタへのアクセスが要求された際に、対応付けられた応答のデータ(応答データ)を返す処理である。応答の内容については後述する。特殊セクタとは、例えば、不良セクタや、TRIMのコマンドによりトリムされたセクタ(トリムセクタという) である。TRIMのコマンドについては、例えば、ATA TRIMの場合は以下の文献を参考にすれば良いため、ここではその説明を省略する。また、TRIMコマンドはATA TRIMのコマンドに限られず、他の規格のTRIMのコマンドであってもよい。
http://www.t13.org/Documents/UploadedDocuments/docs2009/d2015r1a-ATAATAPI_Command_Set_-_2_ACS-2.pdf
尚、ホスト機器からのコマンドの解釈は、RAM54に記憶されたプログラムをCPU53が実行することで実現される。ホスト機器から送信されるコマンドには、フラッシュメモリ素子52へのデータの読み出しやフラッシュメモリ素子52からのデータの書き込みなどのアクセスを要求するものや、特殊セクタの登録を要求するものなどがある。
ここで、データの格納場所について説明する。半導体記憶装置50内では、データの格納場所は、フラッシュメモリ素子52の記憶領域における物理的な記憶位置を示すアドレス(物理ブロックアドレスという)で表現される。一方、ホスト機器が半導体記憶装置50に対して発行するコマンドでは、データの格納場所は、フラッシュメモリ素子52の記憶領域における物理的な記憶位置とは異なる論理的な記憶位置を示すアドレス(論理ブロックアドレス又はセクタアドレスという)で表現される。
データの格納場所の大きさは、ホスト機器では通常512バイトを単位として扱うため、セクタアドレスは512バイトの単位の記憶領域を指定するのに用いられる。この512バイト単位の記憶領域をセクタと呼ぶ。これに対して、フラッシュメモリ素子52においてデータを読み書きする単位は、通常2048バイトや4096バイト等の512の2のベキ乗倍の大きさである。この単位の記憶領域をページと呼ぶ。
フラッシュメモリ素子52の1ページには、セクタアドレスの連続した領域が割当てられる。セクタアドレスがNビットで表現され、1ページの大きさが(512 x 2^n)バイト で表現される時、セクタアドレスから物理ブロックアドレスに変換するためには、まずセクタアドレスの上位(N-n)ビットから、フラッシュメモリ素子52内の対応するページを特定し、下位nビットでページ内の記憶位置を特定すれば良い。即ち、セクタアドレスの上位(N-n)ビットは、フラッシュメモリ素子52の記憶領域における論理的な記憶位置を示すセクタアドレスの集合であるといえる。また、物理ブロックアドレスは、フラッシュメモリ素子52内における物理的な記憶位置をページ単位で示すアドレス(ページアドレスという)を上位に、ページ内の記憶位置を下位にして結合したものである。
半導体記憶装置50内では、物理ブロックアドレスと、ホスト機器が発行するコマンドにおけるセクタアドレスとの対応関係は、フラッシュメモリ素子52へのデータの書き込みが行なわれる度に変化する。またあるセクタが正確なデータを記憶できなくなった場合でも、セクタアドレスを他の物理ブロックアドレスに対応付ければ良いため、不良セクタとしてそのセクタを特別扱いする必要はない。
ところが、例えば、ホスト機器で利用する記憶装置をHDDから半導体記憶装置50に置換する場合などでは、HDDの全ての内容が半導体記憶装置50にコピーされる。この時HDDに不良セクタが含まれる場合には、その不良セクタもコピー対象となる。HDDの不良セクタのセクタアドレスに対応する、フラッシュメモリ素子52での物理ブロックアドレスにアクセスする際に、不良セクタへのアクセスとしてエラーを返す必要がある。このため、半導体記憶装置50は、不良セクタの登録を要求するコマンドをホスト機器から受信すると、当該コマンドに応じて、不良セクタを登録し、登録された不良セクタへのアクセスを要求するコマンドをホスト機器から受信した場合には、エラーを示す応答データをホスト機器に返す。このように不良セクタについては特殊な処理を必要とする。トリムセクタについても同様に特殊な処理を必要とする。このような機能は半導体記憶装置50の制御部51によって実現される。以下、制御部51の機能的構成について具体的に説明する。
図2は、制御部51の機能的構成を例示する図である。制御部51は、命令解釈部60と、アドレス変換テーブル管理部61と、特殊セクタ管理部62と、特殊応答データ作成部63と、データアクセス制御部64と、データ選択部65と、応答出力部66とを有する。また、制御部51は、アドレス変換テーブル記憶部70と、特殊セクタ記憶部80とを有する。これらの記憶部は、例えばRAM54に記憶される。また、これらの記憶部のうち少なくとも一方は、バックアップのために、定期的又は任意のタイミングでフラッシュメモリ素子52へ記憶されるようにしても良い。
命令解釈部60は、ホストI/F55を介してホスト機器から受信したコマンドを解釈する。ホスト機器から送信されるコマンドは、データの読み出しを要求する場合には、引数として、読み出し対象のセクタアドレスを含み、データの書き込みを要求する場合には、書き込み対象のデータと、書き込み対象のセクタアドレスとを含み、特殊セクタの登録を要求する場合、登録対象のセクタアドレスを含む。また、特殊セクタとしてトリムセクタの登録を要求する場合には、引数として更にセクタ数を含む。このように、コマンドでは、アクセス対象の登録対象のセクタがセクタアドレスによって指定される。命令解釈部60は、このようなコマンドを解釈し、当該コマンドに応じて、読み出し対象や書き出し対象であるアクセス対象のセクタアドレスや、登録対象のセクタアドレスや、セクタ数や、書き込み対象のデータを適宜抽出する。
アドレス変換テーブル管理部61は、物理ブロックアドレス出力部71と、特殊セクタ有無情報出力部72とを有し、アドレス変換テーブル記憶部70へのエントリの記憶や削除やエントリへのアクセスを制御することにより、アドレス変換テーブル記憶部70を管理する。アドレス変換テーブル記憶部70は、セクタアドレスの上位(N-n)ビットに対応するページアドレスとの対応関係を記憶すると共に、管理情報を対応付けて記憶する。管理情報とは、ページ内に含まれるセクタのうち、特殊セクタの有無を示す情報である。図3は、アドレス変換テーブル記憶部70のデータ構成を例示する図である。同図に示されるアドレス変換テーブル記憶部70では、ページアドレス単位、即ち、ページ単位で管理情報が記憶される。
尚、管理情報は、特殊セクタの有無のみを示すように1ビットの情報であっても良いし、特殊セクタの種類として不良セクタかトリムセクタかを区別可能にするために、複数ビットの情報であっても良い。更に、アドレス変換テーブル記憶部70のエントリに対するパリティビットを管理情報に持たせて、これを誤り検出に役立てても良い。また、不良セクタとトリムセクタとを区別可能にする場合、1ページ内のセクタが全てトリムセクタである場合と、一部分のみがトリムセクタで残りが通常のセクタである場合とを更に区別可能にしても良い。具体的には、例えば、管理情報は2ビットの情報であるとし、例えば、その値が「00」である場合、特殊セクタがないことを示し、その値が「01」である場合、特殊セクタとして不良セクタがあることを示し、その値が「10」である場合、ページの一部に特殊セクタとしてトリムセクタがあることを示し、その値が「11」である場合、1ページ全てに特殊セクタとしてトリムセクタがあることを示すように管理情報を構成する。以降では、管理情報についてこれらの4値を取り扱う例について説明する。
アドレス変換テーブル管理部61は、ホスト機器から送信されたコマンドがデータの読み出し又はデータの書き込みを要求する場合、命令解釈部60が抽出したセクタアドレスの上位(N-n)ビットをキーとしてアドレス変換テーブル記憶部70を参照して、当該キーに対応するページアドレス及び管理情報を取得する。このページアドレスと、命令解釈部60が抽出したセクタアドレスの下位nビットとが結合される物理ブロックアドレスを物理ブロックアドレス出力部71はデータアクセス制御部64に出力する。特殊セクタ有無情報出力部72は、特殊セクタがあることが管理情報によって示される場合、当該管理情報を特殊セクタ管理部62に出力する。また、アドレス変換テーブル管理部61は、ホスト機器から送信されたコマンドが特殊セクタの登録を要求する場合、命令解釈部60が抽出したセクタアドレスの上位(N-n)ビットをキーとしてアドレス変換テーブル記憶部70を参照して、当該キーに対応するエントリであるページアドレスの管理情報に値を適宜書き込むことにより、管理情報を適宜更新する。
特殊セクタ管理部62は、特殊セクタ記憶部80へのエントリの記憶や削除やエントリへのアクセスを制御することにより、特殊セクタ記憶部80を管理する。特殊セクタ記憶部80は、特殊セクタのセクタアドレス(特殊セクタアドレスという)と、特殊セクタの種類とを対応付けて記憶する。図4は、特殊セクタ記憶部80のデータ構成を例示する図である。同図では、特殊セクタアドレスは、特殊セクタ記憶部80に記憶される順に配列されている。しかし、特殊セクタアドレスは、セクタアドレス順にソートされて記憶されるようにしても良い。また、トリムセクタのように、特殊セクタ記憶部80への登録や削除が頻繁に発生する可能性が高い場合には、リスト構造や木構造などの形式で特殊セクタアドレスが記憶されるようにしても良い。
特殊セクタ管理部62は、ホスト機器から送信されたコマンドがデータの読み出し又はデータの書き込みを要求する場合、特殊セクタ有無情報出力部72から出力された管理情報を受け取ると、命令解釈部60が抽出したセクタアドレスが、特殊セクタアドレスとして特殊セクタ記憶部80に記憶されているか否かを判定する。これにより、特殊セクタ管理部62は、命令解釈部60が抽出したセクタアドレスが、特殊セクタのアドレスであるか否かを判定する。尚、このような判定を、特殊セクタ有無情報出力部72から特殊セクタ管理部62に管理情報が出力されない場合には、特殊セクタ管理部62は行わない。即ち、命令解釈部60が抽出したセクタアドレスが特殊セクタアドレスである可能性が高い場合に、特殊セクタ管理部62は、当該セクタアドレスが特殊セクタアドレスであるか否かの判定を行い、当該セクタアドレスが特殊セクタアドレスである可能性がない場合には、当該判定を行わないことで、当該判定を効率的に行うことができる。そして、特殊セクタ管理部62は、命令解釈部60が抽出したセクタアドレスが特殊セクタアドレスであると判定した場合、特殊セクタ有無情報出力部72から出力された管理情報を特殊応答データ作成部63に出力する。
また、特殊セクタ管理部62は、ホスト機器から送信されたコマンドが特殊セクタの登録を要求する場合、命令解釈部60が抽出したセクタアドレスを用いて、特殊セクタ記憶部80にセクタアドレス及び特殊セクタの種類を対応付けて特殊セクタ記憶部80に記憶させる。尚、コマンドに応じたトリムセクタの登録によって、ページの一部にトリムセクタがある状態から1ページ全てにトリムセクタがある状態に遷移する場合には、特殊セクタ管理部62は、当該ページについて特殊セクタ記憶部80に記憶されているセクタアドレスの全てを削除する。
特殊応答データ作成部63は、命令解釈部60が抽出したセクタアドレスが特殊セクタアドレスであると特殊セクタ管理部62が判定した場合に、特殊セクタの種類に応じた応答データを作成する。具体的には、特殊セクタ記憶部80に当該セクタアドレスと対応付けられて記憶されている特殊セクタの種類が不良セクタである場合には、特殊応答データ作成部63は、エラーを示す応答データを作成する。また、特殊セクタの種類がトリムセクタである場合には、特殊応答データ作成部63は、ATA TRIMコマンドの取り扱いに関する規格で定められた応答データを作成する。例えば、特定の定数(例えば「0」など)や、乱数などがある。また、命令解釈部60が抽出したセクタアドレスに対応する物理ブロックアドレスに記憶されているデータを応答データとしても良い。この場合、特殊応答データ作成部63は、フラッシュメモリ素子52にアクセスして、当該物理ブロックアドレスに記憶されているデータを読み出す。
データアクセス制御部64は、フラッシュメモリ素子52にアクセスして、物理ブロックアドレス出力部71が出力したブロックアドレスに記憶されたデータを読み出したり、当該ブロックアドレスに、命令解釈部60が抽出した書き込み対象のデータを書き込んだりする。
データ選択部65は、データアクセス制御部64が読み出したデータや、特殊応答データ作成部63が作成した応答データを応答出力部66に出力する。尚、特殊セクタの種類がトリムセクタである場合には、特殊応答データ作成部63は、上述の規格で定められた応答データ又はフラッシュメモリ素子52にアクセスして読み出したデータを応答データとして選択してこれを応答出力部66に出力するようにしても良い。
応答出力部66は、ホスト機器から送信されたコマンドがデータの読み出しを要求する場合、データ選択部65が出力した応答データを、ホストI/F55を介してホスト機器に送信する。また、応答出力部66は、ホスト機器から送信されたコマンドがデータの書き込みを要求する場合且つデータの書き込みが終了した場合、データの書き込みが終了した旨を示す応答データをホストI/F55を介してホスト機器に送信する。また、応答出力部66は、ホスト機器から送信されたコマンドが特殊セクタの登録を要求する場合且つ特殊セクタの登録が終了した場合、特殊セクタの登録が終了した旨を示す応答データをホストI/F55を介してホスト機器に送信する。
以上のような構成において、ホスト機器から受信したコマンドが特殊セクタの登録を要求する場合、制御部51は、当該コマンドから抽出したセクタアドレスに対応するページアドレスの管理情報に値を書き込んだり、特殊セクタの種類に応じて、当該セクタアドレスを特殊セクタの種類と対応付けて特殊セクタ記憶部80に記憶したりする。また、ホスト機器から受信したコマンドがデータの読み出しを要求する場合、制御部51は、当該コマンドから抽出したセクタアドレスが特殊セクタアドレスであれば、所定の応答データを作成し、それ以外であれば、当該コマンドに従ってデータをフラッシュメモリ素子52から読み出す。また、ホスト機器から受信したコマンドがデータの書き込みを要求する場合、当該コマンドから抽出したセクタアドレスが特殊セクタアドレスであり特殊セクタの種類が不良セクタであれば、制御部51は、エラーを示す応答データを作成する。また、この場合、当該コマンドから抽出したセクタアドレスが特殊セクタアドレスであり特殊セクタの種類がトリムセクタであれば、制御部51は、当該コマンドに応じて、当該セクタアドレスに対応するフラッシュメモリ素子52の記憶位置にデータを書き込むと共に、当該セクタアドレスを正常なセクタのセクタアドレスとして取り扱いを変更する。尚、当該コマンドから抽出したセクタアドレスが特殊セクタアドレスでなければ、制御部51は、当該コマンドに従ってデータをフラッシュメモリ素子52に書き込む。
次に、本実施の形態にかかる半導体記憶装置50の行う処理の手順について説明する。まず、不良セクタを新たに登録する処理の手順について図5を用いて説明する。半導体記憶装置50の制御部51は、命令解釈部60の機能により、ホスト機器から受信したコマンドを解釈し、当該コマンドが不良セクタの登録を要求するものである場合、引数として含まれる登録対象のセクタアドレスを抽出する。そして、制御部51は、アドレス変換テーブル管理部61の機能により、抽出したセクタアドレスの上位(N-n)ビットをキーとしてアドレス変換テーブルを参照して、当該キーに対応するエントリであるページアドレスの管理情報に、特殊セクタとして不良セクタがあることを示す「01」を書き込む(ステップS1)。続いて、制御部51は、特殊セクタ管理部62の機能により、コマンドから抽出したセクタアドレスと、不良セクタであることを示すように特殊セクタの種類とを対応付けて特殊セクタ記憶部80に記憶することにより、不良セクタを新たに登録する(ステップS2)。このとき、制御部51は、想定される登録数が少なければ登録が要求された順にセクタアドレスを記憶するようにしても良いし、セクタアドレス順にソートしても良い。その後、制御部51は、応答出力部66の機能により、不良セクタの登録が完了した旨を示す応答をホスト機器に送信する(ステップS3)。
次に、トリムセクタを新たに登録する処理の手順について説明する。まず、セクタ数が「1」である場合にトリムセクタを新たに登録する処理の手順について図6を用いて説明する。制御部51は、命令解釈部60の機能により、ホスト機器から受信したコマンドを解釈し、当該コマンドがトリムセクタの登録を要求するものである場合、引数として含まれる登録対象のセクタアドレスとセクタ数とを抽出する。抽出したセクタ数が「1」である場合、制御部51は、コマンドから抽出したセクタアドレスの上位(N-n)ビットをキーとしてアドレス変換テーブルを参照して、当該キーに対応するページアドレスの管理情報に、ページの一部に特殊セクタとしてトリムセクタがあることを示す「10」を書き込む(ステップS10)。そして、制御部51は、特殊セクタ管理部62の機能により、コマンドから抽出したセクタアドレスと、トリムセクタであることを示すよう特殊セクタの種類とを各々対応付けて特殊セクタ記憶部80に記憶することにより、トリムセクタを新たに登録する(ステップS11)。その後、制御部51は、応答出力部66の機能により、トリムセクタの登録が完了した旨を示す応答をホスト機器に送信する(ステップS12)。
次に、セクタ数が「2」以上である場合にトリムセクタを新たに登録する処理の手順について図7を用いて説明する。制御部51は、命令解釈部60の機能により、ホスト機器から受信したコマンドを解釈し、当該コマンドがトリムセクタの登録を要求するものである場合、引数として含まれる登録対象のセクタアドレスとセクタ数とを抽出する。抽出したセクタ数が「2」以上である場合、抽出したセクタアドレスを開始位置として、抽出したセクタ数を長さとした記憶領域が登録対象として要求される範囲となる。この場合、制御部51は、当該記憶領域をページ区切りで分割し(ステップS20)、分割した各区間について以下の処理を実行する。ステップS21では、全ての区間について処理済であるか否かを制御部51は判定する。当該判定結果が否定的である場合、制御部51は、未処理の区間を処理対象として選択し、当該区間が1ページ全体であるか否かを判定する(ステップS22)。当該判定結果が肯定的である場合、制御部51は、コマンドから抽出したセクタアドレスの上位(N-n)ビットをキーとしてアドレス変換テーブルを参照して、当該キーに対応するページアドレスの管理情報に、1ページ全てにトリムセクタがあることを示す「11」を管理情報に書き込む(ステップS23)。その後ステップS21に戻る。
一方、ステップS22の判定結果が否定的である場合、制御部51は、当該区間の先頭のセクタアドレスの上位(N-n)ビットをキーとしてアドレス変換テーブル記憶部70を参照して、当該キーに対応するページアドレスの管理情報に、ページの一部にトリムセクタがあることを示す「10」を管理情報に書き込む(ステップS24)。その後、制御部51は、特殊セクタ管理部62の機能により、当該区間のセクタアドレスの全てについて、セクタアドレスと、トリムセクタであることを示すように特殊セクタの種類とを各々対応付けて特殊セクタ記憶部80に記憶することにより、トリムセクタを新たに登録する(ステップS25)。次いで、制御部51は、当該区間を含むページについて、特殊セクタ記憶部80に既に記憶されているセクタアドレスと、ステップS25で新たに記憶したセクタアドレスとを合わせると、ページ全体にトリムセクタがあることになるか否かを判定する(ステップS26)。当該判定結果が肯定的である場合、制御部51は、当該ページについて特殊セクタ記憶部80に記憶されているセクタアドレスの全てを削除する(ステップS27)。その後、制御部51は、当該ページについて、そのページアドレスキーをキーとしてアドレス変換テーブル記憶部70を参照して、当該キーに対応するページアドレスの管理情報に、1ページ全てにトリムセクタがあることを示す「11」を管理情報に書き込む(ステップS28)。その後ステップS21に戻る。ステップS26の判定結果が否定的である場合も、ステップS21に戻る。
全ての区間について上述の処理が終了して、ステップS21の判定結果が否定的となった場合、制御部51は、応答出力部66の機能により、トリムセクタの登録が完了した旨を示す応答をホスト機器に送信する(ステップS12)。
以上のようにして、コマンドから抽出したセクタアドレスを開始位置として、コマンドから抽出したセクタ数を長さとした記憶領域に複数のページが含まれる場合には、制御部51は、先頭のページと最終のページ以外の中間のページについて、アドレス変換テーブル記憶部70の該当のエントリの管理情報に、1ページ全てにトリムセクタがあることを示す「11」を管理情報に書き込む。先頭のページと最終のページとについては、制御部51は、1ページ全てにトリムセクタがあるか又は一部にトリムセクタがあるかを判定して、その判定結果に応じて、アドレス変換テーブル記憶部70の該当のエントリの管理情報に値を書き込む。
尚、アドレス変換テーブル記憶部70の管理情報によって、1ページ全てにトリムセクタがあるか又は一部にトリムセクタがあるかが判定可能であり、1ページ全てにトリムセクタがある場合には、コマンドから抽出したセクタアドレスが特殊セクタアドレスであることが管理情報のみによって判定できる。このため、この場合には、制御部51は、特殊セクタ記憶部80へのトリムセクタの登録を省略できる。また、ページの一部にトリムセクタがある場合には、当該ページにおいて、コマンドによって登録が要求された範囲外のセクタがトリムセクタとして既に登録されている場合を考慮し、制御部51は、同一のページに関するトリムセクタの登録を統一する。
次に、フラッシュメモリ素子52からデータを読み出す処理の手順について図8を用いて説明する。制御部51は、命令解釈部60の機能により、ホスト機器から受信したコマンドを解釈し、当該コマンドがデータの読み出しを要求するものである場合、引数として含まれる読み出し対象のセクタアドレスを抽出する。そして、制御部51は、アドレス変換テーブル管理部61の機能により、コマンドから抽出したセクタアドレスの上位(N-n)ビットをキーとしてアドレス変換テーブルを参照して、当該キーに対応するページアドレス及び管理情報を取得する(ステップS40)。そして、制御部51は、管理情報を用いて、ページ内に特殊セクタがあるか否かを判定する(ステップS41)。具体的には、制御部51は、管理情報の値が「00」である場合、ページ内に特殊セクタがないと判定し、管理情報の値が「01」、「10」又は「11」である場合、ページ内に特殊セクタがあると判定する。ページ内に特殊セクタがないと判定した場合(ステップS41:NO)、制御部51は、データアクセス制御部64の機能により、ステップS40で取得したページアドレスによって特定される、フラッシュメモリ素子52内のページにアクセスし、コマンドから抽出したセクタアドレスの下位nビットによって当該ページ内の記憶位置を特定し、当該記憶位置からデータを読み出す(ステップS47)。ステップS47では、このようにして、制御部51は、コマンドから抽出したセクタアドレスに対応する物理ブロックアドレスからデータを読み出す。その後ステップS48に進む。
一方、ページ内に特殊セクタがあると判定した場合(ステップS41:YES)、制御部51は、1ページ全てにトリムセクタがあるか否かを判定する(ステップS42)。具体的には、制御部51は、管理情報の値が「10」であるか否かを判定する。当該判定結果が否定的である場合、制御部51は、特殊セクタ管理部62の機能により、コマンドから抽出したセクタアドレスを特殊セクタ記憶部80において検索し(ステップS43)、当該セクタアドレスが特殊セクタ記憶部80に記憶されているか否かを判定する(ステップS44)。当該判定結果が否定的である場合には、ステップS47に進む。一方、ステップS44の判定の結果、コマンドから抽出したセクタアドレスが特殊セクタ記憶部80に記憶されており且つ当該セクタアドレスと対応付けられて記憶されている、特殊セクタの種類が不良セクタであることを示す場合、制御部51は、特殊応答データ作成部63の機能により、エラーを示す応答データを作成し、応答出力部66の機能により、当該応答データをホスト機器に送信する(ステップS45)。
また、ステップS44の判定の結果、コマンドから抽出したセクタアドレスが特殊セクタ記憶部80に記憶されており且つ当該セクタアドレスと対応付けられて記憶されている、特殊セクタの種類がトリムセクタであることを示す場合、ステップS46に進む。ステップS42の判定結果が肯定的である場合も、ステップS46に進む。ステップS46では、制御部51は、特殊応答データ作成部63の機能により、上述した規格に定められた応答データを作成し又はステップS47と同様にして、フラッシュメモリ素子52にアクセスしてデータを読み出す。その後ステップS48に進む。ステップS48では、制御部51は、データ選択部65の機能により、上述した規格に定められた応答データ又はフラッシュメモリ素子52から読み出したデータを応答データとして選択して、応答出力部66の機能により、当該応答データをホスト機器に送信する(ステップS48)。
次に、フラッシュメモリ素子52にデータを書き込む処理の手順について図9〜10を用いて説明する。制御部51は、命令解釈部60の機能により、ホスト機器から受信したコマンドを解釈し、当該コマンドがデータの書き込みを要求するものである場合、引数として含まれる書き込み対象のセクタアドレスと、書き込み対象のデータとを抽出する。そして、制御部51は、アドレス変換テーブル管理部61の機能により、コマンドから抽出したセクタアドレスの上位(N-n)ビットをキーとしてアドレス変換テーブルを参照して、当該キーに対応して記憶されているページアドレス及び管理情報を取得する(ステップS60)。そして、制御部51は、管理情報を用いて、ページ内に特殊セクタがあるか否かを判定する(ステップS61)。具体的には、制御部51は、管理情報の値が「00」である場合、ページ内に特殊セクタがないと判定し、管理情報の値が「01」、「10」又は「11」である場合、ページ内に特殊セクタがあると判定する。ページ内に特殊セクタがないと判定した場合(ステップS61:NO)、制御部51は、データアクセス制御部64の機能により、ステップS60で取得したページアドレスによって特定される、フラッシュメモリ素子52内のページにアクセスし、コマンドから抽出したセクタアドレスの下位nビットによって当該ページ内の記憶位置を特定し、当該記憶位置に、コマンドから抽出した書き込み対象のデータを書き込む(ステップS65)。尚、データの書き込みは、ページ単位で行う。このため、制御部51は、ステップS60で取得したページアドレスによって特定されるページのデータをフラッシュメモリ素子52のワーク領域に一旦読み出して、当該データにおいて、当該ページアドレスと、コマンドから抽出したセクタアドレスの下位nビットとから結合される論理ブロックアドレスに相当する記憶位置に、コマンドから抽出した書き込み対象のデータを書き込むことにより、当該ページのデータを書き換えた後、書き換えたデータを、フラッシュメモリ素子52において当該ページアドレスに書き込む。その後、制御部51は、応答出力部66の機能により、データの書き込みを終了した旨を示す応答データをホスト機器に送信する(ステップS66)。
一方、ページ内に特殊セクタがあると判定した場合(ステップS61:YES)、制御部51は、1ページ全てにトリムセクタがあるか否かを判定する(ステップS62)。具体的には、制御部51は、管理情報の値が「10」であるか否かを判定する。当該判定結果が否定的である場合(ステップS62:NO)、制御部51は、特殊セクタ管理部62の機能により、コマンドから抽出したセクタアドレスを特殊セクタ記憶部80において検索し(ステップS63)、当該セクタアドレスが特殊セクタ記憶部80に記憶されているか否かを判定する(ステップS64)。当該判定結果が否定的である場合、ステップS65に進む。一方、ステップS64の判定の結果、コマンドから抽出したセクタアドレスが特殊セクタ記憶部80に記憶されている場合(ステップS64:YES)、当該セクタアドレスと対応付けられて記憶されている、特殊セクタの種類が不良セクタであることを示しているか否かを判定する(ステップS67)。特殊セクタの種類が不良セクタであることを示す場合(ステップS67:YES)、制御部51は、特殊応答データ作成部63の機能により、エラーを示す応答データを作成し、応答出力部66の機能により、当該応答データをホスト機器に送信する(ステップS68)。
また、ステップS64の判定の結果、コマンドから抽出したセクタアドレスが特殊セクタ記憶部80に記憶されており、ステップS67の判定の結果、コマンドから抽出したセクタアドレスと対応付けられて記憶されている、特殊セクタの種類がトリムセクタであることを示す場合(ステップS67:NO)、制御部51は、ステップS104の処理を行う。この処理は、ステップSS66の処理と同様である。その後、ステップS105では、制御部51は、コマンドから抽出したセクタアドレスを特殊セクタ記憶部80から削除する。この結果、当該ページ内でトリムセクタとして登録されたセクタは、正常なセクタに変更される。その後ステップS106に進む。
一方、ステップS62の判定の結果、1ページ全てにトリムセクタがある場合(ステップS62:YES)、制御部51は、ステップS102の処理を行う。この処理は、ステップSS66の処理と同様である。その後、ステップS103では、制御部51は、当該ページ内のセクタについて、コマンドから抽出したセクタアドレス以外の全てのセクタアドレスを特殊セクタアドレスとして、トリムセクタであることを示す特殊セクタの種類と各々対応付けて特殊セクタ記憶部80に記憶する。この結果、コマンドから抽出したセクタアドレスのセクタは、正常なセクタに変更されると共に、当該ページ内で当該セクタ以外のセクタは、トリムセクタとして改めて登録される。その後ステップS106に進む。
ステップS106では、制御部51は、ステップS65と同様にして、データの書き込みを行う。ここでも上述したようにデータの書き込みはページ単位で行なう。その後、制御部51は、ステップS60で取得したページアドレスによって特定されるページ内の他のセクタにトリムセクタがあるか否かを判定する。具体的には、制御部51は、当該ページアドレスに対応する他のセクタアドレスが特殊セクタ記憶部80に記憶されている且つ当該他のセクタアドレスと対応付けられて記憶されている特殊セクタの種類がトリムセクタであることを示すか否かを判定する。当該判定の結果、当該ページ内の他のセクタにトリムセクタがないと判定した場合(ステップS107:NO)、制御部51は、アドレス変換テーブル記憶部70の当該ページアドレスの管理情報に、特殊セクタがないことを示す「00」を書き込む(S109)。その後、ステップS87に進む。ステップS87は図10で説明したものと略同様である。尚、ステップS106の判定の結果、当該ページ内の他のセクタにトリムセクタがあると判定した場合(ステップS107:YES)、制御部51は、アドレス変換テーブル記憶部70の当該ページアドレスの管理情報に、ページの一部にトリムセクタがあることを示す「10」を書き込む(ステップS108)。その後、ステップS87に進む。
以上のように、ページ内に特殊セクタがあるか否かを管理情報としてページ単位でアドレス変換テーブルに記憶し、ホスト機器からのコマンドによってアクセスが要求されたセクタアドレスに対応するセクタが特殊セクタである可能性があるか否かを、当該管理情報を参照して判定する。これにより、当該セクタが特殊セクタである可能性がない場合には、当該セクタアドレスが特殊セクタアドレスとして特殊セクタ記憶部80に記憶されているか否かをいちいち判定する必要がなく、当該セクタアドレスに対応するフラッシュメモリ素子52の記憶位置からデータを読み出したり、当該記憶位置にデータを書き込んだりすることができる。このため、半導体記憶装置において、全体の処理性能の向上が可能になる。
また、トリムセクタとして登録されたセクタを、データの書き込みによって、正常なセクタに変更することにより、フラッシュメモリ素子52の記憶効率を向上させることができる。
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
上述した実施の形態において、半導体記憶装置50で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供するように構成しても良い。
上述した実施の形態においては、フラッシュメモリ素子52にデータを書き込む処理において、コマンドから抽出されたセクタアドレスが特殊セクタアドレスとして特殊セクタ記憶部80に記憶されており当該セクタアドレスと対応付けられている特殊セクタの種類が不良セクタであることを示す場合、制御部51は、データの書き込みを行わないようにした。しかし、当該不良セクタは、例えばHDDにおける不良セクタに対応しているだけであって、フラッシュメモリ素子52においては実際には不良ではなく、当該セクタアドレスに対応するフラッシュメモリ素子52の記憶位置へのデータの読み書きを正常に行うことができる。このため、制御部51は、ホスト機器からのコマンドに応じて、当該セクタアドレスに対応するフラッシュメモリ素子52の記憶位置にデータを書き込むと共に、当該セクタアドレスを正常なセクタのセクタアドレスとして取り扱いを変更するようにしても良い。上述したように、データの書き込みはページ単位で行うため、制御部51は、1ページ分の書き込み対象のデータが揃った段階で、当該ページ内の他のセクタに不良セクタがあるか否かを判定し、不良セクタがない場合に、当該ページのページアドレスに対応付けられてアドレス変換テーブル記憶部70に記憶される管理情報に、特殊セクタがないことを示す「00」を書き込むことにより、管理情報を更新する。この結果、当該ページ内で不良セクタとして登録されたセクタは、データの書き込みによって、正常なセクタに変更される。
図12は、本変形例において、フラッシュメモリ素子52にデータを書き込む処理の手順を示すフローチャートである。ステップS60〜S64,67は、上述の実施の形態と同様である。ステップS67の判定の結果、コマンドから抽出したセクタアドレスと対応付けられて記憶されている、特殊セクタの種類がトリムセクタであることを示す場合(ステップS67:NO)、制御部51は、ステップS82の処理を行う。この処理は、ステップS66の処理と同様である。その後、ステップS83では、制御部51は、コマンドから抽出したセクタアドレスを特殊セクタ記憶部80から削除する。この結果、当該ページ内で不良セクタとして登録されたセクタは、正常なセクタに変更される。次いで、制御部51は、ステップS65と同様にして、データの書き込みを行う。ここでも上述したようにデータの書き込みはページ単位で行なう。その後、制御部51は、ステップS60で取得したページアドレスによって特定されるページ内の他のセクタに不良セクタがあるか否かを判定する(ステップS84)。具体的には、制御部51は、当該ページアドレスに対応する他のセクタアドレスが特殊セクタ記憶部80に記憶されている且つ当該他のセクタアドレスと対応付けられて記憶されている特殊セクタの種類が不良セクタであることを示すか否かを判定する。当該判定の結果、不良セクタがないと判定した場合(ステップS85:NO)、制御部51は、当該ページアドレスに対応付けられてアドレス変換テーブル記憶部70に記憶される管理情報に、特殊セクタがないことを示す「00」を書き込む(ステップS86)。その後ステップS87に進む。尚、ステップS84の判定の結果、ページ内の他のセクタに不良セクタがあると判定した場合(ステップS85:YES)、ステップS87に進む。ステップS87では、制御部51は、アドレス変換テーブル記憶部70において、セクタアドレスの上位(N-n)ビットとページアドレスとの対応関係を適宜更新する。
以上のように、不良セクタとして登録されたセクタを、データの書き込みによって、正常なセクタに変更することにより、フラッシュメモリ素子52の記憶効率を向上させることができる。
上述した実施の形態において、1ページ全てにトリムセクタがある場合、特殊セクタ記憶部80は、当該ページアドレスに対応する全てのセクタアドレスを記憶しないようにしたが、これに限らず、当該ページアドレスに対応する全てのセクタアドレスを記憶するようにしても良い。
上述した実施の形態において、特殊セクタとして、複数の種類を取り扱い、アドレス変換テーブル記憶部70の管理情報によってその種類を区別可能にした場合、特殊セクタ記憶部80として、不良セクタのセクタアドレスを記憶する不良セクタ記憶部と、トリムセクタのセクタアドレスを記憶するトリムセクタ記憶部とに分けるようにしても良い。図12は、本変形例にかかる不良セクタ記憶部と、トリムセクタ記憶部とのデータ構成を各々例示する図である。同図に示されるように、不良セクタ記憶部又はトリムセクタ記憶部に記憶される各セクタアドレスには、特殊セクタの種類を対応付けられていない。制御部51は、アドレス変換テーブル記憶部70の管理情報によって不良セクタがあることが示される場合、不良セクタ記憶部を参照し、アドレス変換テーブル記憶部70の管理情報によって1ページ全てにトリムセクタがある又はページの一部にトリムセクタがあることが示される場合、トリムセクタ記憶部を参照すれば良い。このような構成により、特殊セクタについて効率的な管理が可能になる。
50 半導体記憶装置
51 制御部
52 フラッシュメモリ素子
53 CPU
54 RAM
55 ホストI/F
60 命令解釈部
61 アドレス変換テーブル管理部
62 特殊セクタ管理部
63 特殊応答データ作成部
64 データアクセス制御部
65 データ選択部
66 応答出力部
70 アドレス変換テーブル
71 物理ブロックアドレス出力部
72 特殊セクタ有無情報出力部
80 特殊セクタ記憶部

Claims (6)

  1. 不揮発性メモリの記憶領域における論理的な記憶位置を示すセクタアドレスの集合と、前記不揮発性メモリの記憶領域における物理的な記憶位置をページ単位で示すページアドレスと、不良セクタ及びTRIMのコマンドによりトリムされたトリムセクタのうち少なくとも一方である特殊セクタが前記ページに無いか、前記不良セクタである前記特殊セクタが前記ページにあるか、前記トリムセクタである前記特殊セクタが前記ページ全てにあるか、前記トリムセクタである前記特殊セクタが前記ページの一部にあるかの何れかを示す管理情報とを対応付けて記憶する第1記憶部と、
    前記特殊セクタのセクタアドレスを記憶すると共に、記憶された当該セクタアドレスに対応する前記特殊セクタが前記不良セクタおよび前記トリムセクタの何れであるかを判別できるようにした第2記憶部と、
    指定されたセクタアドレスへのアクセスが要求された場合、前記第1記憶部に記憶される前記管理情報を参照して、当該セクタアドレスに対応する前記ページアドレスによって特定される前記ページに前記特殊セクタがあるか否かを判定すると共に、前記特殊セクタが前記ページにあると判定した場合、前記不良セクタである前記特殊セクタが前記ページあるか、前記トリムセクタである前記特殊セクタが前記ページ全てにあるか、前記トリムセクタである前記特殊セクタが前記ページの一部にあるかを判定する第1判定部と、
    前記セクタアドレスが前記第2記憶部に記憶されているか否かを判定する第2判定部と、
    前記トリムセクタである前記特殊セクタが前記ページ全てにあると前記第1判定部により判定された場合、および、前記ページに前記特殊セクタがあると前記第1判定部により判定され、且つ、前記セクタアドレスが前記第2記憶部に記憶されていると前記第2判定部により判定された場合、前記特殊セクタが前記不良セクタおよび前記トリムセクタの何れであるか、および、アクセスの要求が読み出し要求および書き込み要求の何れであるかに応じて、異なる所定の応答データを作成する作成部と、
    前記ページに前記特殊セクタがないと前記第1判定部により判定された場合、前記第2判定部による判定を行うこと無く、前記セクタアドレスに対応する、前記不揮発性メモリの記憶位置にアクセスし、前記ページに前記特殊セクタがあると前記第1判定部に判定され、且つ、前記セクタアドレスが前記第2記憶部に記憶されていないと前記第2判定部により判定された場合、および、前記ページに前記トリムセクタである前記特殊セクタがあると前記第1判定部により判定され、且つ、前記アクセスの要求が書き込み要求である場合、前記セクタアドレスに対応する、前記不揮発性メモリの記憶位置にアクセスする制御部と
    指定された第1セクタアドレスについて特殊セクタの登録が要求された場合、当該第1セクタアドレスの登録によって、当該第1セクタアドレスに対応する前記ページアドレスにより特定される前記ページ全てに前記トリムセクタである前記特殊セクタがあることになるか否かを判定する第3判定部と、
    前記第1記憶部に記憶された前記管理情報を更新する第1更新部と
    を備え
    前記第1更新部は、
    前記ページ全てに前記トリムセクタである前記特殊セクタを含むことになると前記第3判定部に判定された場合、前記ページ全てに前記トリムセクタである前記特殊セクタがあることを示すよう、前記第1記憶部に記憶された前記管理情報を更新し、前記ページの一部に前記トリムセクタである前記特殊セクタがあることになると前記第3判定部により判定された場合、前記ページの一部に前記トリムセクタである前記特殊セクタがあることを示すよう、前記第1記憶部に記憶された前記管理情報を更新する
    ことを特徴とする制御装置。
  2. 前記第2記憶部の記憶内容を更新する第2更新部をさらに備え、
    前記第2更新部は、
    指定された前記第1セクタアドレスについて前記不良セクタである前記特殊セクタの登録が要求された場合、前記第1セクタアドレスを前記第2記憶部に記憶させ、
    指定された第1セクタアドレスについて前記トリムセクタである前記特殊セクタの登録が要求された場合且つ前記第1セクタアドレスの登録によって、当該第1セクタアドレスに対応する前記ページアドレスによって特定される前記ページ全てに前記トリムセクタである前記特殊セクタがあることにはならないと前記第3判定部により判定された場合、前記第1セクタアドレスを前記第2記憶部に記憶させる
    ことを特徴とする請求項に記載の制御装置。
  3. 前記第2更新部は、
    指定された第1セクタアドレスについて前記トリムセクタである前記特殊セクタの登録が要求された場合且つ前記第1セクタアドレスの登録によって、当該第1セクタアドレスに対応する前記ページアドレスによって特定される前記ページ全てに前記トリムセクタである前記特殊セクタがあることになると前記第3判定部により判定された場合、前記ページアドレスに対応する全ての前記セクタアドレスを前記第2記憶部から削除する
    ことを特徴とする請求項に記載の制御装置。
  4. 前記第判定部は、
    指定されたセクタアドレスへのデータの書き込みが要求された場合、前記第1記憶部の前記管理情報を参照して、前記ページに前記トリムセクタである前記特殊セクタがあるか否かを判定し、
    前記制御部は、
    前記ページに前記トリムセクタである前記特殊セクタがあると前記第1判定部により判定され、且つ、前記セクタアドレスが前記トリムセクタのセクタアドレスとして前記第2記憶部に記憶されていると前記第2判定部に判定された場合、前記セクタアドレスに対応する前記記憶位置にアクセスして、前記データを書き込み、
    前記作成部は、
    前記セクタアドレスが前記トリムセクタのセクタアドレスとして前記第2記憶部に記憶されていると前記第2判定部により判定された場合、前記データの書き込みが終了した旨を示す前記応答データを作成し、
    前記第2更新部は、
    前記セクタアドレスが前記トリムセクタのセクタアドレスとして前記第2記憶部に記憶されていると前記第2判定部により判定された場合、当該セクタアドレスを前記第2記憶部から削除する
    ことを特徴とする請求項に記載の制御装置。
  5. 前記第2判定部は、
    指定されたセクタアドレスへのデータの書き込みが要求された場合且つ前記セクタアドレスが前記トリムセクタのセクタアドレスとして前記第2記憶部に記憶されていると判定された場合、前記セクタアドレスに対応する前記ページアドレスに対応する他のセクタアドレスが前記第2記憶部に記憶されているか否かを判定し、
    前記第1更新部は、
    前記他のセクタアドレスが前記第2記憶部に記憶されていないと前記第2判定部に判定された場合、前記ページに前記特殊セクタがないことを示すよう、前記第1記憶部に記憶された前記管理情報を更新し、前記他のセクタアドレスが前記トリムセクタのアドレスとして前記第2記憶部に記憶されていると前記第2判定部に判定された場合、前記ページの一部に前記トリムセクタである前記特殊セクタがあることを示すよう、前記第1記憶部に記憶された前記管理情報を更新する
    ことを特徴とする請求項に記載の制御装置。
  6. 前記第判定部は、
    指定されたセクタアドレスへのデータの書き込みが要求された場合、前記第1記憶部の前記管理情報を参照して、前記ページに前記特殊セクタがないか、前記ページに前記不良セクタである特殊セクタがあるか、前記ページ全てに前記トリムセクタである前記特殊セクタがあるか、または前記ページの一部に前記トリムセクタである前記特殊セクタがあるかを判定し、
    前記第2更新部は、
    前記ページ全てに前記トリムセクタである前記特殊セクタがあると前記第1判定部により判定された場合、前記セクタアドレスに対応する前記ページアドレスに対応する他のセクタアドレスを前記第2記憶部に記憶させる
    ことを特徴とする請求項に記載の制御装置。
JP2009209224A 2009-09-10 2009-09-10 制御装置 Active JP5377182B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009209224A JP5377182B2 (ja) 2009-09-10 2009-09-10 制御装置
US12/716,547 US8423709B2 (en) 2009-09-10 2010-03-03 Controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009209224A JP5377182B2 (ja) 2009-09-10 2009-09-10 制御装置

Publications (2)

Publication Number Publication Date
JP2011060007A JP2011060007A (ja) 2011-03-24
JP5377182B2 true JP5377182B2 (ja) 2013-12-25

Family

ID=43648538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009209224A Active JP5377182B2 (ja) 2009-09-10 2009-09-10 制御装置

Country Status (2)

Country Link
US (1) US8423709B2 (ja)
JP (1) JP5377182B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5341584B2 (ja) * 2009-03-17 2013-11-13 株式会社東芝 コントローラ、及びメモリシステム
US8201024B2 (en) 2010-05-17 2012-06-12 Microsoft Corporation Managing memory faults
US20120059976A1 (en) 2010-09-07 2012-03-08 Daniel L. Rosenband Storage array controller for solid-state storage devices
US8850114B2 (en) * 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
JP5269932B2 (ja) 2011-03-01 2013-08-21 株式会社東芝 コントローラ、データ記憶装置およびプログラム
JP2012221251A (ja) 2011-04-08 2012-11-12 Toshiba Corp メモリシステムの制御方法、情報処理装置、及びプログラム
JP2014522066A (ja) * 2011-08-09 2014-08-28 エルエスアイ コーポレーション 入出力デバイスとコンピューティングホストとの相互運用
JP2013232097A (ja) 2012-04-27 2013-11-14 Toshiba Corp 半導体記憶装置
US20140047210A1 (en) * 2012-08-08 2014-02-13 Lsi Corporation Trim mechanism using multi-level mapping in a solid-state media
US9032244B2 (en) 2012-11-16 2015-05-12 Microsoft Technology Licensing, Llc Memory segment remapping to address fragmentation
CN104304002B (zh) * 2014-08-29 2017-01-11 广西壮族自治区药用植物园 一种华南忍冬叶片不定芽的诱导方法
CN109471812B (zh) * 2015-01-19 2023-09-05 铠侠股份有限公司 存储装置及非易失性存储器的控制方法
US10175885B2 (en) * 2015-01-19 2019-01-08 Toshiba Memory Corporation Memory device managing data in accordance with command and non-transitory computer readable recording medium
US10095431B2 (en) 2015-06-18 2018-10-09 John Edward Benkert Device controller and method of enforcing time-based sector level security
US10216439B2 (en) * 2016-02-02 2019-02-26 International Business Machines Corporation Protecting unallocated data within a storage volume

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07153285A (ja) * 1993-11-29 1995-06-16 Sansei Denshi Japan Kk 不揮発性フラッシュメモリの制御方法とその装置
JP4143040B2 (ja) 2004-03-31 2008-09-03 東芝ソリューション株式会社 ディスクアレイ制御装置、同装置に適用されるデータ欠損検出時の処理方法及びプログラム
JP4688584B2 (ja) * 2005-06-21 2011-05-25 株式会社日立製作所 ストレージ装置
WO2009107286A1 (en) * 2008-02-29 2009-09-03 Kabushiki Kaisha Toshiba Information processing apparatus and nonvolatile semiconductor memory drive
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching

Also Published As

Publication number Publication date
US8423709B2 (en) 2013-04-16
US20110060863A1 (en) 2011-03-10
JP2011060007A (ja) 2011-03-24

Similar Documents

Publication Publication Date Title
JP5377182B2 (ja) 制御装置
US10860217B2 (en) System and method of management of multi-tier storage systems
US9928167B2 (en) Information processing system and nonvolatile storage unit
JP4832521B2 (ja) フラッシュメモリメディアにおけるデータ管理方法
JP5420814B2 (ja) バッファメモリに貯蔵されたデータを無効化させるスキームを有する貯蔵システム及びそれを含んだコンピューティングシステム
KR100725390B1 (ko) 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법
JP6034183B2 (ja) 半導体記憶装置
JP2006221627A (ja) 複数のマッピング技法を採用した適応型フラッシュメモリ制御装置及びそれを含むフラッシュメモリシステム
JP5631938B2 (ja) 半導体記憶装置
JP2013030254A (ja) 半導体記憶装置、情報処理装置
JP2007012060A (ja) 逆階層構造を有するファイルシステム
JP2007012054A (ja) ファイルシステム保全の最適化されたスタートアップ認証
TWI459198B (zh) 記憶體儲存裝置、其記憶體控制器與有效資料識別方法
JP2005222534A (ja) フラッシュメモリのデータ管理装置及び方法
US11003577B2 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium for storing program of access control with respect to semiconductor device memory
JP2012234482A (ja) 記憶制御装置及びその制御方法、並びにプログラム
US9329994B2 (en) Memory system
TWI715408B (zh) 快閃記憶體控制器、記憶體裝置以及存取快閃記憶體模組之方法
JP5323030B2 (ja) メモリ装置及びメモリ制御方法
TWI755168B (zh) 用來產生基於主機的快取資訊或基於快閃記憶體的快取資訊以建立及最佳化二元樹的快閃記憶體控制器、方法及記憶裝置
US8775746B2 (en) Information processing system and method
JP2013109404A (ja) 情報処理装置
KR102580075B1 (ko) 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치
KR101548917B1 (ko) 메모리제어장치 및 메모리제어장치의 동작 방법
JP2004227211A (ja) ディスクアレイ装置およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130805

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: 20130827

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130924

R151 Written notification of patent or utility model registration

Ref document number: 5377182

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

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