JP2007286813A - メモリ制御装置、メモリ制御方法 - Google Patents
メモリ制御装置、メモリ制御方法 Download PDFInfo
- Publication number
- JP2007286813A JP2007286813A JP2006112072A JP2006112072A JP2007286813A JP 2007286813 A JP2007286813 A JP 2007286813A JP 2006112072 A JP2006112072 A JP 2006112072A JP 2006112072 A JP2006112072 A JP 2006112072A JP 2007286813 A JP2007286813 A JP 2007286813A
- Authority
- JP
- Japan
- Prior art keywords
- data
- transfer
- medium
- read
- storage area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Bus Control (AREA)
Abstract
【課題】フラッシュメモリとRAM間のデータ転送の効率化を図る。
【解決手段】RAMからフラッシュメモリへのデータ転送では、CPUからDMAコントローラに対して、Src_ad、Des_ad、Trf_size、ExSrc_ad、ExTrf_size、Loop_countのパラメータをセットする。DMAコントローラは、Src_adが示すRAMのアドレスからDes_adが示すフラッシュメモリのアドレスに対するTrf_sizeが示す量のデータ転送、ExSrc_adが示すRAMのアドレスからDes_adが示すフラッシュメモリのアドレスに対するExTrf_sizeが示す量のデータ転送を、Loop_countに対応した回数分繰り返す。これにより、データ部と冗長部が分割された構造のページデータを、DMA転送要求に応じた一度のDMA転送により全て転送することが可能になる。
【選択図】図5
【解決手段】RAMからフラッシュメモリへのデータ転送では、CPUからDMAコントローラに対して、Src_ad、Des_ad、Trf_size、ExSrc_ad、ExTrf_size、Loop_countのパラメータをセットする。DMAコントローラは、Src_adが示すRAMのアドレスからDes_adが示すフラッシュメモリのアドレスに対するTrf_sizeが示す量のデータ転送、ExSrc_adが示すRAMのアドレスからDes_adが示すフラッシュメモリのアドレスに対するExTrf_sizeが示す量のデータ転送を、Loop_countに対応した回数分繰り返す。これにより、データ部と冗長部が分割された構造のページデータを、DMA転送要求に応じた一度のDMA転送により全て転送することが可能になる。
【選択図】図5
Description
本発明は、例えばフラッシュメモリに代表される不揮発性メモリ素子などとしての記憶媒体を対象として、データ書き込み/読み出しなどについての制御を行う記憶媒体制御装置、及びその方法に関するものである。
不揮発性の半導体記憶素子が、データ保存のための記憶媒体として広い用途で利用されるようになってきている状況にある。現状において、このような半導体記憶素子の記憶媒体としては、フラッシュメモリが代表的なものとなる。
周知のようにして、フラッシュメモリのフォーマット構造としては、その記憶領域がブロックといわれる固定長の単位により分割され、ブロックはページといわれる固定長の単位により分割される。さらにページは、データを格納する所定長の領域と、このデータに対応した所定内容の冗長的な情報を格納する所定長の領域とから成る。
また、近年ではフラッシュメモリの記憶容量は増加傾向にある。例えば記憶容量の増加に対してブロックなどについて以前からのフォーマットで規定されたままのサイズで維持させたとすると、ブロックの数は著しく増加することになり、メモリ管理が困難になってくる。そこで、フラッシュメモリのフォーマットとしては、記憶容量の増加に応じて、上記したブロックについても、その固定長のサイズを大きくして設定することが行われる。また、同じく、メモリ管理の観点からすると、このようにして大きなサイズを規定したブロックに格納されるページ数も一定以内に抑えることが好ましいことになる。そこで、ページのサイズについても、ブロックサイズを大きくしたことに応じて、相応に大きくしたサイズを規定することが行われる。
周知のようにして、フラッシュメモリのフォーマット構造としては、その記憶領域がブロックといわれる固定長の単位により分割され、ブロックはページといわれる固定長の単位により分割される。さらにページは、データを格納する所定長の領域と、このデータに対応した所定内容の冗長的な情報を格納する所定長の領域とから成る。
また、近年ではフラッシュメモリの記憶容量は増加傾向にある。例えば記憶容量の増加に対してブロックなどについて以前からのフォーマットで規定されたままのサイズで維持させたとすると、ブロックの数は著しく増加することになり、メモリ管理が困難になってくる。そこで、フラッシュメモリのフォーマットとしては、記憶容量の増加に応じて、上記したブロックについても、その固定長のサイズを大きくして設定することが行われる。また、同じく、メモリ管理の観点からすると、このようにして大きなサイズを規定したブロックに格納されるページ数も一定以内に抑えることが好ましいことになる。そこで、ページのサイズについても、ブロックサイズを大きくしたことに応じて、相応に大きくしたサイズを規定することが行われる。
また、例えばフラッシュメモリに対応してデータの書き込み/読み出しが可能なシステムにあっては、例えば主記憶装置(RAM)側からフラッシュメモリへのデータの書き込み、あるいはフラッシュメモリに記憶されるデータ主記憶装置に保持させるようなデータの読み出しを、DMAを伴って実行させることがしばしば行われる。
DMA(Direct Memory Access)は周知のようにして、CPUを介さずに、装置とメモリとの間で、バス経由により直接的にデータ転送を行う方式のことをいう。データ転送にあたってCPUの処理が介在しないようにされれば、それだけ単位データ量あたりの転送に要する時間は短縮されることになり、データ転送速度の高速化が図られることになる。フラッシュメモリに対するデータの書き込み/読み出しにDMA転送を採用することも、このようなデータ転送速度の高速化を目的として行われるものである。
DMA(Direct Memory Access)は周知のようにして、CPUを介さずに、装置とメモリとの間で、バス経由により直接的にデータ転送を行う方式のことをいう。データ転送にあたってCPUの処理が介在しないようにされれば、それだけ単位データ量あたりの転送に要する時間は短縮されることになり、データ転送速度の高速化が図られることになる。フラッシュメモリに対するデータの書き込み/読み出しにDMA転送を採用することも、このようなデータ転送速度の高速化を目的として行われるものである。
本願発明は、例えば上記しているような、フラッシュメモリなどの記憶媒体と主記憶装置側などとの間でのDMAを伴うデータ転送に関して、記憶媒体のフォーマットの変更などに適合させて、より効率的なものとなるようにし、例えば、CPUの処理負担の軽減やデータ転送速度の低下の抑制、向上が図られるようにすることを目的とする。
そこで本発明は上記した課題を考慮して、メモリ制御装置として次のように構成する。
つまり、所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、書込データ保持手段から上記記憶媒体に対して転送して書き込むために、ダイレクトメモリアクセスにより、1つの実データ格納領域に格納されるべきデータを書込データ保持手段から読み出し、転送路を経由して、記憶媒体に対して書き込むようにされ、前回書き込まれたデータ格納単位のデータが書き込み済みの場合には、このデータに論理的に続くようにして書き込みを行う第1の媒体書込転送手段と、1つの冗長情報格納領域に格納されるべきデータを書込データ保持手段から読み出し、転送路を経由して、第1の媒体書込転送手段により書き込まれたデータに対して論理的に続くようにして、記憶媒体に対して書き込む第2の媒体書込転送手段と、各一回の第1の媒体書込転送手段と第2の媒体書込転送手段のデータ転送による1データ格納単位分のデータの書き込みを、単位データを形成するデータ格納単位ごとに応じて実行させる書込ループ制御手段と、を備えてメモリ制御装置を構成することとした。
つまり、所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、書込データ保持手段から上記記憶媒体に対して転送して書き込むために、ダイレクトメモリアクセスにより、1つの実データ格納領域に格納されるべきデータを書込データ保持手段から読み出し、転送路を経由して、記憶媒体に対して書き込むようにされ、前回書き込まれたデータ格納単位のデータが書き込み済みの場合には、このデータに論理的に続くようにして書き込みを行う第1の媒体書込転送手段と、1つの冗長情報格納領域に格納されるべきデータを書込データ保持手段から読み出し、転送路を経由して、第1の媒体書込転送手段により書き込まれたデータに対して論理的に続くようにして、記憶媒体に対して書き込む第2の媒体書込転送手段と、各一回の第1の媒体書込転送手段と第2の媒体書込転送手段のデータ転送による1データ格納単位分のデータの書き込みを、単位データを形成するデータ格納単位ごとに応じて実行させる書込ループ制御手段と、を備えてメモリ制御装置を構成することとした。
上記構成は、本願発明としてのダイレクトメモリアクセス(DMA)によるデータ書き込みの場合、つまり、主記憶装置などを含むような書込データ保持手段から記憶媒体に対してデータを書き込む場合の構成となる。また、この場合において転送の対象となるデータは、固定長による単位データ(ページ)となるもので、さらにこの単位データは、固定長によるデータ格納単位(ECCユニット)を複数連結して形成される。データ格納単位の各々は、実データを格納する固定長の実データ格納領域(データ部)と、冗長情報を格納する冗長情報格納領域(冗長部)とから成るものとされている。
そして、この構成によれば、単位データを形成するデータ格納単位ごとに応じて、先ず、実データ格納領域のデータをDMAにより転送し、続いて冗長情報格納領域のデータもDMAにより転送することで、単位データの転送を完結させることになる。これにより、データ格納単位の転送ごとにDMAによる転送要求を発生させる必要が無くなり、例えば単位データにおける全てのデータ格納単位のデータを、1回のDMAによる転送要求に応答して転送させることが可能になる。
そして、この構成によれば、単位データを形成するデータ格納単位ごとに応じて、先ず、実データ格納領域のデータをDMAにより転送し、続いて冗長情報格納領域のデータもDMAにより転送することで、単位データの転送を完結させることになる。これにより、データ格納単位の転送ごとにDMAによる転送要求を発生させる必要が無くなり、例えば単位データにおける全てのデータ格納単位のデータを、1回のDMAによる転送要求に応答して転送させることが可能になる。
また、メモリ制御装置として次のようにも構成する。
つまり、所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、記憶媒体から読み出してデータ保持手段に対して転送するために、ダイレクトメモリアクセスにより、1つの実データ格納領域に格納されるべきデータを記憶媒体から読み出し、転送路を経由して、データ保持手段に対して書き込むようにされ、前回書き込まれた実データ格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第1の媒体読出転送手段と、この第1の媒体読出転送手段によるデータ転送に続けて、ダイレクトメモリアクセスにより、1つの冗長情報格納領域に格納されるべきデータを記憶媒体から読み出し、転送路を経由して、データ保持手段に対して書き込むようにされ、前回書き込まれた冗長情報格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第2の媒体読出転送手段と、各一回の第1の媒体読出転送手段と第2の媒体読出転送手段のデータ転送による1データ格納単位分のデータの読み出しを、単位データを形成するデータ格納単位ごとに応じて実行させる読出ループ制御手段とを備えて構成することとした。
つまり、所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、記憶媒体から読み出してデータ保持手段に対して転送するために、ダイレクトメモリアクセスにより、1つの実データ格納領域に格納されるべきデータを記憶媒体から読み出し、転送路を経由して、データ保持手段に対して書き込むようにされ、前回書き込まれた実データ格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第1の媒体読出転送手段と、この第1の媒体読出転送手段によるデータ転送に続けて、ダイレクトメモリアクセスにより、1つの冗長情報格納領域に格納されるべきデータを記憶媒体から読み出し、転送路を経由して、データ保持手段に対して書き込むようにされ、前回書き込まれた冗長情報格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第2の媒体読出転送手段と、各一回の第1の媒体読出転送手段と第2の媒体読出転送手段のデータ転送による1データ格納単位分のデータの読み出しを、単位データを形成するデータ格納単位ごとに応じて実行させる読出ループ制御手段とを備えて構成することとした。
上記構成は、本願発明としてのデータ読み出しの場合、つまり、記憶媒体からデータを読み出して主記憶装置などを含むような書込データ保持手段に対して保持させる場合の構成となる。また、この場合においても転送の対象となるデータは、固定長による単位データ(ページ)となるもので、さらにこの単位データは、固定長によるデータ格納単位(ECCユニット)を複数連結して形成される。データ格納単位の各々は、実データを格納する固定長の実データ格納領域(データ部)と、冗長情報を格納する冗長情報格納領域(冗長部)とから成るものとされている。
そして、この構成によれば、単位データを形成するデータ格納単位ごとに応じて、先ず、実データ格納領域のデータをDMAにより転送し、続いて冗長情報格納領域のデータもDMAにより転送することで、単位データの転送を完結させることになる。これにより、データ格納単位の転送ごとにDMAによる転送要求を発生させる必要が無くなり、例えば単位データにおける全てのデータ格納単位のデータを、1回のDMAによる転送要求に応答して転送させることが可能になる。
そして、この構成によれば、単位データを形成するデータ格納単位ごとに応じて、先ず、実データ格納領域のデータをDMAにより転送し、続いて冗長情報格納領域のデータもDMAにより転送することで、単位データの転送を完結させることになる。これにより、データ格納単位の転送ごとにDMAによる転送要求を発生させる必要が無くなり、例えば単位データにおける全てのデータ格納単位のデータを、1回のDMAによる転送要求に応答して転送させることが可能になる。
このようにして本発明は、記憶媒体をデータ書き込み対象あるいは読み出し対象としてデータ転送させる場合において、単位データにおける全てのデータ格納単位のデータを、1回のDMAによる転送要求に応答して転送させることが可能となる。これにより、例えばDMA転送をコントロールするCPUなどは、単位データあたりについて1回のDMA転送の要求を発生させればよいことになり、記憶媒体に対するデータ書き込み、読み出しにあたっての処理負担が軽減される。また、これに伴って記憶媒体を対象とするデータ転送速度の向上も期待される。このようにして本願発明によっては、記憶媒体を対象とするDMA転送について、これまでよりも効率的なものとすることが可能となる。
本願発明を実施するための最良の形態(以下、実施の形態という)としては、本発明に基づいた記憶媒体制御装置の構成を携帯型コンテンツプレーヤに適用した例を挙げることとする。
図1は、本実施の形態の携帯型コンテンツプレーヤ1の構成例を示すブロック図である。
この図において、CPU(Central Processing Unit)11は、後述する記憶部14(あるいはROM12であってもよい)に記憶されたプログラムをRAM13に展開して実行することで、各種所要の制御処理を実現する。
また、CPU11が制御処理を実行するのに伴っては、バス23を経由して他の部位との通信を行うことができるようにされるが、この場合には、上記CPU11のほかに、ROM12、RAM13、メモリインターフェイス15、DMAコントローラ16、表示処理部19、操作部21、オーディオ再生処理部17、及び外部データインターフェイス22を、バス23により接続した構成を示している。
この図において、CPU(Central Processing Unit)11は、後述する記憶部14(あるいはROM12であってもよい)に記憶されたプログラムをRAM13に展開して実行することで、各種所要の制御処理を実現する。
また、CPU11が制御処理を実行するのに伴っては、バス23を経由して他の部位との通信を行うことができるようにされるが、この場合には、上記CPU11のほかに、ROM12、RAM13、メモリインターフェイス15、DMAコントローラ16、表示処理部19、操作部21、オーディオ再生処理部17、及び外部データインターフェイス22を、バス23により接続した構成を示している。
ROM12には、例えば起動時にCPU11が実行する起動用プログラムなどのほか、工場出荷時などに書き込みが行われた各種の設定データなどが記憶される。
RAM13は、CPUに対して主記憶装置となるもので、上記のようにしてCPU11が実行すべきプログラムのデータが展開されるとともに、CPU11がプログラムに従って実行する各種演算のための作業領域として使用される。
RAM13は、CPUに対して主記憶装置となるもので、上記のようにしてCPU11が実行すべきプログラムのデータが展開されるとともに、CPU11がプログラムに従って実行する各種演算のための作業領域として使用される。
記憶部14は、主として、携帯型コンテンツプレーヤ1により再生出力するコンテンツのデータ(コンテンツデータ)を例えばファイル単位で管理するようにして記憶するための部位である。ここでいうコンテンツデータとは、例えば楽曲などとしてのオーディオデータや、映像などとしてのビデオデータなどとされる。現状において、このような携帯型コンテンツプレーヤ1に記憶されるコンテンツデータとしてのオーディオファイルやビデオデータファイルは、所定方式により圧縮符号化されることが一般的であるが、本実施の形態としては、コンテンツ記憶部13に記憶されるコンテンツデータの種類、ファイル形式については特に限定されるものではない。
また、本実施の形態では、この記憶部14に対して、CPU11が実行するプログラムのデータのほかに、例えば記憶部14に記憶されるファイル管理などのためにCPU11が利用する各種のシステムデータなども記憶させることとしている。
また、本実施の形態では、この記憶部14に対して、CPU11が実行するプログラムのデータのほかに、例えば記憶部14に記憶されるファイル管理などのためにCPU11が利用する各種のシステムデータなども記憶させることとしている。
そして、本実施の形態においては、この記憶部14が備える記憶媒体種別としてフラッシュメモリ(例えばNAND型)を採用することとしている。フラッシュメモリは、周知のようにして、半導体による不揮発性の記憶素子の1つである。また、フラッシュメモリの容量としては、このような携帯型コンテンツプレーヤ1の用途であれば、現状では、数GB程度のものが広く採用されている。
また、この場合においては、記憶部14に対するデータの書き込み/読み出しは、メモリインターフェイス15を介して行われるようになっている。この場合のメモリインターフェイス15は、例えばフラッシュメモリのドライバ層に対応した機能を実現するためのハードウェア及びソフトウェアにより構成される部位となる。また、メモリインターフェイス15においては、ECC演算部15aを備えるが、このECC演算部15aの動作については後述する。
なお、この場合の記憶部14としてのフラッシュメモリは、装脱不可の状態で携帯型コンテンツプレーヤ1の本体に内蔵される形態を採ることとしている。しかしながら、例えば記憶部14としてのフラッシュメモリとしての記憶媒体装置をリムーバブル形式としたうえで、携帯型コンテンツプレーヤ1の本体側に対応のドライブを備えるような構成であってもよい。このような構成の場合には、プログラムなどのデータは、携帯型コンテンツプレーヤ1内のROMや不揮発性メモリ、あるいは他の内蔵記憶媒体に記憶させることになる。
また、本実施の形態では、DMAコントローラ16を備える。本実施の形態では、このDMAコントローラ16のデータ書き込み/読み出し制御により、少なくともRAM13から記憶部14へのデータ書き込みと、記憶部14のデータをRAM13に保持させるデータ読み出しとについて、DMA転送により行うことが可能とされる。
また、本実施の形態では、DMAコントローラ16において、DMA転送を予め定めた所定の手順により実行するためのシーケンサ16aを備える。この場合のシーケンサ16aは、例えば論理回路等の組み合わせなどによるハードウェアとして構成される。
また、本実施の形態では、DMAコントローラ16において、DMA転送を予め定めた所定の手順により実行するためのシーケンサ16aを備える。この場合のシーケンサ16aは、例えば論理回路等の組み合わせなどによるハードウェアとして構成される。
オーディオ再生処理部17は、CPU11の制御に応じて、記憶部14から読み出されたオーディオファイル形式のコンテンツデータを入力し、所要の再生信号処理を実行するようにされる。例えばオーディオ再生処理部17は、オーディオデータの圧縮符号化に対する復調処理などをはじめとする各種所要の信号処理を施したうえで、最終的に、ヘッドフォン駆動のためのオーディオ信号として、ヘッドフォン端子18に対して出力するようにされる。
また、表示部20には、携帯型コンテンツプレーヤ1の動作に応じたユーザインターフェイスのための表示が行われる。また。例えばビデオデータファイルとしてのコンテンツデータを再生して得られる画像を表示出力させることも可能とされる。このために、CPU11は、表示処理部19により所要の表示のための信号処理を実行させる。例えばユーザインターフェイスのための画像を表示させるのであれば、表示させるべきユーザインターフェイス画像に対応した表示用画像データを生成させる。また、ビデオデータファイルとしてのコンテンツの画像を表示出力させるのであれば、CPU11は、記憶部14から読み出したビデオデータファイルを表示処理部19に入力させ、ここで、圧縮符号化に対する復調処理のほか所要のビデオ信号処理を実行させて、表示用画像データを生成させる。そして、表示部20において、このようにして生成された表示用画像データを利用した表示駆動のための動作が実行されることで、表示部20の表示画面にて画像が表示される。
なお、表示部20として実際に採用されるべき表示デバイスについては特に限定されるべきものではないが、現状であれば、液晶ディスプレイや有機EL(Electro Luminescence)ディスプレイなどを採用することができる。
なお、表示部20として実際に採用されるべき表示デバイスについては特に限定されるべきものではないが、現状であれば、液晶ディスプレイや有機EL(Electro Luminescence)ディスプレイなどを採用することができる。
操作部21は、携帯型コンテンツプレーヤ1の本体に対して実際に設けられる操作子と、これらの操作子に対して行われた操作に応じて操作指示信号を生成してCPU11に出力する部位とを一括して示したものとなる。CPU11は、操作部21から出力される操作指示信号に応じて所要の処理を実行する。
また、本実施の形態の携帯型コンテンツプレーヤ1にあって、記憶部14に記憶させるべきコンテンツデータを取得するためには、外部データインターフェイス22を利用する。
つまり、携帯型コンテンツプレーヤ1と、そのホストとなるパーソナルコンピュータなどの装置とを、外部データインターフェイス22を経由して接続し、コンテンツデータをホストから携帯型コンテンツプレーヤ1に転送させるようにする。そして、携帯型コンテンツプレーヤ1では、例えばCPU11の制御に従って、転送されてくるコンテンツデータを受信取得し、この取得したコンテンツデータを、例えば一時的にRAM13にて保持した後に、記憶部14に書き込むようにして記憶させる。
つまり、携帯型コンテンツプレーヤ1と、そのホストとなるパーソナルコンピュータなどの装置とを、外部データインターフェイス22を経由して接続し、コンテンツデータをホストから携帯型コンテンツプレーヤ1に転送させるようにする。そして、携帯型コンテンツプレーヤ1では、例えばCPU11の制御に従って、転送されてくるコンテンツデータを受信取得し、この取得したコンテンツデータを、例えば一時的にRAM13にて保持した後に、記憶部14に書き込むようにして記憶させる。
この場合の外部データインターフェイス22は、所定のデータ通信規格に応じたケーブル接続を介して、あるいは無線経由により外部デバイスと通信を行うためのハードウェア及びソフトウェアを備えて構成される部位とされる。この外部データインターフェイス20が対応する通信規格としては、特に限定されるべきではないが、現状であれば、例えばIEEE1394、USB、Ethernet(登録商標)、Bluetooth(登録商標)、IEEE802.11a/b/g/n等を採用することが考えられる。
続いて、図2及び図3を参照して記憶部14として採用されるフラッシュメモリの物理フォーマットについて説明する。
フラッシュメモリの記憶領域全体は、例えば図2(a)に示すようにして、所定の固定長によるブロック(第1単位領域)0〜Nにより分割される。周知のようにして、フラッシュメモリは、データの上書きはできないことになっており、データの書き込みは、消去済みの領域に対して行われる。そして、このブロックは、データを消去するときの最小単位となる。
フラッシュメモリの記憶領域全体は、例えば図2(a)に示すようにして、所定の固定長によるブロック(第1単位領域)0〜Nにより分割される。周知のようにして、フラッシュメモリは、データの上書きはできないことになっており、データの書き込みは、消去済みの領域に対して行われる。そして、このブロックは、データを消去するときの最小単位となる。
そして、図2(a)に示したブロックの各々は、図2(b)に示すようにして、所定数(m個)のページ0〜mにより分割される。
1ページは固定長であり、図2(c)に示すように、所定サイズのデータ部と冗長部より成る。データ部はデータを格納する領域であり、冗長部は、ECC(Error Correcting Code)及び各種の所要の管理情報項目などが格納される領域となる。
データ書き込みについては、ページが最小単位となる。つまり、フラッシュメモリは、データの消去はブロック単位で行われ、データの書き込みはページ単位で行われるべきものとなっており、データ消去単位とデータ書込単位のデータサイズが相互に異なるものとなっている。
1ページは固定長であり、図2(c)に示すように、所定サイズのデータ部と冗長部より成る。データ部はデータを格納する領域であり、冗長部は、ECC(Error Correcting Code)及び各種の所要の管理情報項目などが格納される領域となる。
データ書き込みについては、ページが最小単位となる。つまり、フラッシュメモリは、データの消去はブロック単位で行われ、データの書き込みはページ単位で行われるべきものとなっており、データ消去単位とデータ書込単位のデータサイズが相互に異なるものとなっている。
上記図2(c)に示したページ構造についての、より具体的な例を、図3に示す。
先ず図3(a)に示されるページ構造としては、2048バイトのデータ部と、これに続く64バイトの冗長部から成るものとされている。そして、64バイトの冗長部については、さらに、24バイトの予備領域と、これに続く40バイトのECCにより形成されるものとなっている。このECCにより、上記2048バイトのデータ部と冗長部における24バイトの予備領域のデータについてのエラー訂正処理を行う。
先ず図3(a)に示されるページ構造としては、2048バイトのデータ部と、これに続く64バイトの冗長部から成るものとされている。そして、64バイトの冗長部については、さらに、24バイトの予備領域と、これに続く40バイトのECCにより形成されるものとなっている。このECCにより、上記2048バイトのデータ部と冗長部における24バイトの予備領域のデータについてのエラー訂正処理を行う。
また、ページ構造としては、近年、図3(b)に示すフォーマットが採用されるようになってきている。
この図3(b)おいては、ページ全体のサイズについては、2112バイトで図3(a)と同じとしたものを示しているが、計2048バイトのデータ部を各512バイトの第1〜第4データ部に4分割し、計64バイトの冗長部についても各16バイトの第1〜第4冗長部に4分割し、
第1データ部、第1冗長部、第2データ部、第2冗長部、第3データ部、第3冗長部、第4データ部、第4冗長部の順で配列させる。この配列では、分割されたデータ部とこれに続く冗長部を1つの単位としてみるようにされ、ここでは、これをECCユニットという。そして、図3(b)の場合には、第1データ部と第1冗長部から成る第1ECCユニット、第2データ部と第2冗長部から成る第2ECCユニット、第3データ部と第3冗長部から成る第3ECCユニット、第4データ部と第4冗長部から成る第4ECCユニットの連結により1ページが形成されるものとなる。
この図3(b)おいては、ページ全体のサイズについては、2112バイトで図3(a)と同じとしたものを示しているが、計2048バイトのデータ部を各512バイトの第1〜第4データ部に4分割し、計64バイトの冗長部についても各16バイトの第1〜第4冗長部に4分割し、
第1データ部、第1冗長部、第2データ部、第2冗長部、第3データ部、第3冗長部、第4データ部、第4冗長部の順で配列させる。この配列では、分割されたデータ部とこれに続く冗長部を1つの単位としてみるようにされ、ここでは、これをECCユニットという。そして、図3(b)の場合には、第1データ部と第1冗長部から成る第1ECCユニット、第2データ部と第2冗長部から成る第2ECCユニット、第3データ部と第3冗長部から成る第3ECCユニット、第4データ部と第4冗長部から成る第4ECCユニットの連結により1ページが形成されるものとなる。
この場合、第1〜第4冗長部の各々は、図示するようにして、6バイトの予備領域と10バイトのECCの領域とにより形成されることになる。そして、この10バイトのECCにより、自身を含むECCユニットにおける先頭から直前までのデータについてのエラー訂正を行う。つまり、例えば第1冗長部のECCによっては、第1データ部及び第1冗長部の予備領域についてのエラー訂正を行う。
フラッシュメモリの物理フォーマットとして以前から規定される基本的なページ構造は図3(a)に示したものとなるのであるが、現状においては、図3(b)のフォーマットが採用されることが多くなってきている。これは下記のような理由による。
フラッシュメモリは例えばビット単価の低下などを背景として記憶容量が増加している傾向にある。例えば製品として市場に現れた当初は数十メガバイト(MB)程度とされていたものが、現状では、例えば数ギガバイト(GB)クラスにまで記憶容量が増加している。このようにして記憶容量が増加するのにかかわらず、例えば当初の記憶容量に応じて設定されたブロック容量、あるいはページ容量を維持したとすれば、フラッシュメモリの容量全体におけるブロック数、ページ数も著しく増加することになる。このような膨大な数のブロック、ページを管理しようとした場合、このための管理情報の容量も増加することになるが、このような管理情報も同じフラッシュメモリに記憶保持させる場合がある。従って、管理情報のサイズの肥大化によりフラッシュメモリにおけるユーザデータの記憶可能容量を圧迫するという不都合を生じることになる。また、管理情報を処理する際の処理速度の低下も問題になる場合がある。
そこで、フラッシュメモリの記憶容量を増加させるのに応じては、ブロック、ページの容量も相応に増加させるフォーマットとすることが行われるようになり、これが一般化している。このようなフォーマットとすれば、ブロック、ページの総数を適正な範囲で抑えることが可能となり、上記したような問題を回避できる。
具体例として、図3(a)(b)には、ページサイズについて2112バイト(=2048+64)とした場合が示されているが、この程度のページサイズは、実際のフラッシュメモリの全体容量が2GB〜4GB程度のクラスのものに用いられている。
フラッシュメモリは例えばビット単価の低下などを背景として記憶容量が増加している傾向にある。例えば製品として市場に現れた当初は数十メガバイト(MB)程度とされていたものが、現状では、例えば数ギガバイト(GB)クラスにまで記憶容量が増加している。このようにして記憶容量が増加するのにかかわらず、例えば当初の記憶容量に応じて設定されたブロック容量、あるいはページ容量を維持したとすれば、フラッシュメモリの容量全体におけるブロック数、ページ数も著しく増加することになる。このような膨大な数のブロック、ページを管理しようとした場合、このための管理情報の容量も増加することになるが、このような管理情報も同じフラッシュメモリに記憶保持させる場合がある。従って、管理情報のサイズの肥大化によりフラッシュメモリにおけるユーザデータの記憶可能容量を圧迫するという不都合を生じることになる。また、管理情報を処理する際の処理速度の低下も問題になる場合がある。
そこで、フラッシュメモリの記憶容量を増加させるのに応じては、ブロック、ページの容量も相応に増加させるフォーマットとすることが行われるようになり、これが一般化している。このようなフォーマットとすれば、ブロック、ページの総数を適正な範囲で抑えることが可能となり、上記したような問題を回避できる。
具体例として、図3(a)(b)には、ページサイズについて2112バイト(=2048+64)とした場合が示されているが、この程度のページサイズは、実際のフラッシュメモリの全体容量が2GB〜4GB程度のクラスのものに用いられている。
先に述べたように、ページについての本来の基本構造は図3(a)に示したものとなる。
例えば図3(a)のページ構造のもとで、上記のようにしてページサイズを増加させていったとすると、必然的に1ページ内におけるデータ部のサイズも増加していくことになるが、このことをECCによるエラー訂正処理の観点から見ると、データ部のサイズの増加は、即ち、エラー訂正対象となる語長の増加となる。
エラー訂正に関する一般的なこととして、エラー訂正の対象となる単位データサイズができるだけ小さいほど、エラー訂正の信頼性は高くなる。このことからすると、図3(a)のページ構造のフォーマットによりページサイズを増加させていくことは、エラー訂正の信頼性の低下を招く可能性がある、ということになる。
そこで、例えば図3(b)に示すようにして、1ページ内に占めるデータ部を所定数(この場合は4つ)に分割し、これらの分割したデータ部ごとの直後に対して、その分割されたデータ部(及び予備領域)のエラー訂正を行うだけのECCを格納した冗長部を連結する構造とすれば、ページサイズの増加にかかわらずエラー訂正の語長を適正範囲内に抑えることが可能になる。つまり、図3(b)に示すページ構造は、主として、ページサイズの増加に起因するエラー訂正能力の低下を考慮して採用されるものである。
例えば図3(a)のページ構造のもとで、上記のようにしてページサイズを増加させていったとすると、必然的に1ページ内におけるデータ部のサイズも増加していくことになるが、このことをECCによるエラー訂正処理の観点から見ると、データ部のサイズの増加は、即ち、エラー訂正対象となる語長の増加となる。
エラー訂正に関する一般的なこととして、エラー訂正の対象となる単位データサイズができるだけ小さいほど、エラー訂正の信頼性は高くなる。このことからすると、図3(a)のページ構造のフォーマットによりページサイズを増加させていくことは、エラー訂正の信頼性の低下を招く可能性がある、ということになる。
そこで、例えば図3(b)に示すようにして、1ページ内に占めるデータ部を所定数(この場合は4つ)に分割し、これらの分割したデータ部ごとの直後に対して、その分割されたデータ部(及び予備領域)のエラー訂正を行うだけのECCを格納した冗長部を連結する構造とすれば、ページサイズの増加にかかわらずエラー訂正の語長を適正範囲内に抑えることが可能になる。つまり、図3(b)に示すページ構造は、主として、ページサイズの増加に起因するエラー訂正能力の低下を考慮して採用されるものである。
先に図1により説明した携帯型コンテンツプレーヤ1の構成では、DMAコントローラ16を備えることで、DMA(ダイレクトメモリアクセス:Direct Memory Access)方式によるデータ転送(DMA転送)を併用してデータ書き込み/読み出しを行うことが可能とされている。
そこで、本実施の形態の携帯型コンテンツプレーヤ1において、フラッシュメモリである記憶部14に対するデータ書き込み/読み出しのためのデータ転送について、DMA転送を利用することとした場合について考察していくこととする。
そこで、本実施の形態の携帯型コンテンツプレーヤ1において、フラッシュメモリである記憶部14に対するデータ書き込み/読み出しのためのデータ転送について、DMA転送を利用することとした場合について考察していくこととする。
先に説明したように、フラッシュメモリのフォーマットにあって、ページ構造としては、図3(a)に示すように、1ページ内に1つのデータ部と1つの冗長部を格納したものと、図3(b)に示すようにして、データ部と冗長部を所定数に分割してECCユニット単位を連結させた構造とするものとがある。そして、現状と比較してフラッシュメモリの容量が少なかった以前においては、例えば図3(a)に示す構造が一般的とされていたものである。従って、フラッシュメモリの基本的なページ構造としては、図3(a)に示すものであるとの考え方をとることができる。
そこで、先ず、図3(a)に示す構造のページ単位を前提として、DMA転送を用いたデータ転送を行うこととした場合を考えてみると、順当なものの1つとして、図4(a)に示される転送手順を挙げることができる。なお、以降においては、記憶部14としての記憶媒体を、より一般化した概念により記載することを目的として、単にフラッシュメモリともいう場合がある。
図4(a)には、図3(a)に示した例と同じ構造の1ページ分のデータを対象として転送する場合の手順が示されている。
先ず、CPU11は、フラッシュメモリドライバ層よりも上位層からのデータ書込要求に応じて、図4(a)に示すように、DMAコントローラ16に対してDMA転送の要求を行うようにされる。このとき、CPU11は、DMAコントローラ16に対して、図7(a)に示すSource Address、Destination Address、Transfer Sizeのパラメータを指定するようにされる。
先ず、CPU11は、フラッシュメモリドライバ層よりも上位層からのデータ書込要求に応じて、図4(a)に示すように、DMAコントローラ16に対してDMA転送の要求を行うようにされる。このとき、CPU11は、DMAコントローラ16に対して、図7(a)に示すSource Address、Destination Address、Transfer Sizeのパラメータを指定するようにされる。
Source Addressは、転送元における転送対象のデータのアドレスを指定する。Destination Addressは、転送先において転送対象のデータを格納すべきアドレスを指定する。Transfer Sizeは、DMA転送の要求に応じて転送すべきデータサイズを指定する。つまり、ここで例に挙げているフラッシュメモリに対するデータ書き込みの場合であれば、Source Addressにより、RAM13上の書き込み用データを保持しているアドレスが指定され、Destination Addressにより、フラッシュメモリにおけるデータを書き込むべきアドレスが指定され、Transfer Sizeにより、フラッシュメモリに転送して書き込むべきデータサイズが示される。
DMA転送要求を受けたDMAコントローラ16は、Source Addressにより指定された転送元(RAM13)のアドレスにアクセスしてデータの読み出しを行い、この読み出したデータを、バス23を少なくとも転送路として、指定されたDestination Addressが示す転送先(フラッシュメモリ)のアドレスに転送して書き込んでいくようにされる。そして、このようなデータ転送をTransfer Sizeが指定するサイズ分行うようにされる。つまり、DMA転送が行われることになる。
なお、図1においては、フラッシュメモリである記憶部14に対してメモリインターフェイス15が備えられた形態が示されている。従って、図1との対応では、RAM12から読み出されたデータは、メモリインターフェイス15に対して、Destination Addressの指定と共に転送され、メモリインターフェイス15がフラッシュメモリ(記憶部14)としての半導体記憶素子に対して、指定のDestination Addressに対する書き込みを行うようにされる。
なお、図1においては、フラッシュメモリである記憶部14に対してメモリインターフェイス15が備えられた形態が示されている。従って、図1との対応では、RAM12から読み出されたデータは、メモリインターフェイス15に対して、Destination Addressの指定と共に転送され、メモリインターフェイス15がフラッシュメモリ(記憶部14)としての半導体記憶素子に対して、指定のDestination Addressに対する書き込みを行うようにされる。
この図4(a)の場合においてTransfer Sizeが指定するサイズは、例えばデータ部に対応した2048バイトとされる。従って、上記したDMA転送は、データ部に格納した2048バイトのデータの転送を完了させた時点で終了することになる。ここまでのDMA転送が終了したとされると、例えばDMAコントローラ16は、バス23を解放してCPU11に明け渡すようにされる。これに応じて、CPU11は、PIO転送により、残る64バイトの冗長部のデータを、転送先のフラッシュメモリに転送して、しかるべきアドレスに書き込むようにされる。
PIO(Programmed I/O)転送は、周知のようにして、装置、メモリ(この場合にはフラッシュメモリとRAM)間のデータ転送をCPUの管理、制御により行う方式である。この場合において、ページデータについては、データ部のデータをDMAにより転送するのに対して、冗長部のデータについては、PIOにより転送するようにしているのは次のような理由による。
上記したように、DMA転送としては、パラメータとしてSource Address、Destination Address、Transfer Sizeを指定して転送元から転送先へのメモリ−デバイス間転送を行う。例えば、RAMからフラッシュメモリへの書き込みであれば、DMAコントローラにより、RAMに保持されている書き込み用データのアドレスからTransfer Sizeが示すサイズ分のデータを読み出させ、この読み出されたTransfer Size分のデータを、フラッシュメモリにおけるDestination Addressが示すアドレスから書き込んでいくようにする。この場合において、Source Addressは、RAM上のアドレスを指定することになるので、例えば、データ部のデータに続くアドレスに対して冗長部のデータを保持させておくようにして、その分、Transfer Sizeについて冗長部のデータ分加算した値を設定すれば、データ部に続けて冗長部のデータもDMA転送させることが可能になる、ということにはなる。
上記したように、DMA転送としては、パラメータとしてSource Address、Destination Address、Transfer Sizeを指定して転送元から転送先へのメモリ−デバイス間転送を行う。例えば、RAMからフラッシュメモリへの書き込みであれば、DMAコントローラにより、RAMに保持されている書き込み用データのアドレスからTransfer Sizeが示すサイズ分のデータを読み出させ、この読み出されたTransfer Size分のデータを、フラッシュメモリにおけるDestination Addressが示すアドレスから書き込んでいくようにする。この場合において、Source Addressは、RAM上のアドレスを指定することになるので、例えば、データ部のデータに続くアドレスに対して冗長部のデータを保持させておくようにして、その分、Transfer Sizeについて冗長部のデータ分加算した値を設定すれば、データ部に続けて冗長部のデータもDMA転送させることが可能になる、ということにはなる。
しかしながら、実際における冗長部の構造としては、図3(a)の下段にも示したように、予備領域とECCから成る。つまり、ECCを含む。
先の説明のようにして、ECCは、ページ内のデータ部と予備領域のデータを対象としてエラー訂正を行うためのものである。従って、ECCとして有効な値は、データ部のデータを転送し、さらに予備領域のデータを転送している過程において、例えば、図1のメモリインターフェイス15におけるECC演算部15aが、その転送過程のデータを取り込んで演算を行うことにより生成されるものとなる。つまり、ECCの内容は、データ部と予備領域のデータの転送後に確定される。このことは、ECCは、DMA転送開始時には存在していないということであり、従って、DMA転送のためのパラメータに、ECC分のデータを反映させることはできない、ということになる。このことは、順当に考えれば、少なくともECCのデータの転送については、CPU側の制御により転送することが必要になる、ということでもある。
そこで、1ページ分のデータ転送にあたり、DMA転送としては、既にRAM上において保持されている状態が確定されているデータ部のデータのみとして、ECCを含む冗長部についてはPIO転送に切り換えることとしているものである。
なお、1つの冗長部について、予備領域のデータはDMAにより転送し、ECCのデータのみをPIOにより転送する、というようにして転送方式を振り分けた手順とすることも考えられるが、ここでは、例えば冗長部としての単位を同じPIO転送とすることのほうが効率的であるとの考え方に基づき、予備領域とECCから成る冗長部全体をPIO転送することとしているものである。
先の説明のようにして、ECCは、ページ内のデータ部と予備領域のデータを対象としてエラー訂正を行うためのものである。従って、ECCとして有効な値は、データ部のデータを転送し、さらに予備領域のデータを転送している過程において、例えば、図1のメモリインターフェイス15におけるECC演算部15aが、その転送過程のデータを取り込んで演算を行うことにより生成されるものとなる。つまり、ECCの内容は、データ部と予備領域のデータの転送後に確定される。このことは、ECCは、DMA転送開始時には存在していないということであり、従って、DMA転送のためのパラメータに、ECC分のデータを反映させることはできない、ということになる。このことは、順当に考えれば、少なくともECCのデータの転送については、CPU側の制御により転送することが必要になる、ということでもある。
そこで、1ページ分のデータ転送にあたり、DMA転送としては、既にRAM上において保持されている状態が確定されているデータ部のデータのみとして、ECCを含む冗長部についてはPIO転送に切り換えることとしているものである。
なお、1つの冗長部について、予備領域のデータはDMAにより転送し、ECCのデータのみをPIOにより転送する、というようにして転送方式を振り分けた手順とすることも考えられるが、ここでは、例えば冗長部としての単位を同じPIO転送とすることのほうが効率的であるとの考え方に基づき、予備領域とECCから成る冗長部全体をPIO転送することとしているものである。
冗長部のデータをPIO転送するのにあたっては、例えば先ず、CPU11がRAMに保持されている予備領域のデータにアクセスして読み出しを行い、これをメモリインターフェイス15を介してフラッシュメモリに書き込むようにされる。この予備領域のデータの書き込みが完了した段階では、ECC演算回路15aによる、直前に転送されたデータ部のデータと、この予備領域のデータを利用したECC演算結果が得られていることになる。つまり、ECC演算回路15aは、1ページ分に対応する有効なECCの生成を完了して、例えば自身のレジスタなどに保持している状態にある。
そこで、CPU11は、ECC演算部15aに保持されるECCのデータを、先にフラッシュメモリに書き込んだ予備領域のデータに続けて書き込むための制御を実行するようにされる。ここまでの手順を実行してPIO転送が完了する。
そこで、CPU11は、ECC演算部15aに保持されるECCのデータを、先にフラッシュメモリに書き込んだ予備領域のデータに続けて書き込むための制御を実行するようにされる。ここまでの手順を実行してPIO転送が完了する。
このようにして、図4(a)に示す例では、1ページ分のデータを転送するのにあたっては、先ず、CPUからのDMA転送要求に応じてDMAコントローラがデータ部のデータを転送し、データ部のデータの転送を完了すると、CPUのPIO転送により冗長部のデータとして予備領域のデータと、ECCのデータを転送させるようにされている。そして、このような転送手順を、ページ単位のデータを転送すべきタイミングごとに繰り返し実行することになる。
次いで、図3(b)に示したページ構造を対象として、データ転送を行う場合を考えてみる。
図3(b)のページ構造は、1ページ内において、図3(a)に示される各1つのデータ部、冗長部からなる単位(ECCユニット)が連結されたものであるとしてみることができる。従って、上記図4(a)により説明したデータ転送手順を、ECCユニットごとに実行していくようにすることで、図3(b)に示すページ構造に対して適用することは可能であり、また、順当であるということがいえる。
上記のようにして、図4(a)のデータ転送手順を、図3(b)に示すページ構造に対して適用したとする1ページデータあたりの転送手順は、図4(b)に示される。
先ず、図4(b)に示すようにして、CPUが1回目のDMA転送要求を発行して、第1ECCユニットにおける第1データ部のデータをDMA転送させ、続けて、第1冗長部のデータをPIO転送することになる。このようにして、第1ECCユニットのデータ転送を完了させたのに応じて、CPU11は、2回目のDMA転送要求を発行して、第2ECCユニットの第2データ部のデータのDMA転送と、これに続く第2冗長部のデータのPIO転送を行う。以降同様にして、順次、3回目のDMA転送要求の発行に応じた、第3ECCユニットの第3データ部のデータのDMA転送と第3冗長部のデータのPIO転送、及び4回目のDMA転送要求の発行に応じた、第4ECCユニットの第4データ部のデータのDMA転送と第4冗長部のデータのPIO転送を行う。
図3(b)のページ構造は、1ページ内において、図3(a)に示される各1つのデータ部、冗長部からなる単位(ECCユニット)が連結されたものであるとしてみることができる。従って、上記図4(a)により説明したデータ転送手順を、ECCユニットごとに実行していくようにすることで、図3(b)に示すページ構造に対して適用することは可能であり、また、順当であるということがいえる。
上記のようにして、図4(a)のデータ転送手順を、図3(b)に示すページ構造に対して適用したとする1ページデータあたりの転送手順は、図4(b)に示される。
先ず、図4(b)に示すようにして、CPUが1回目のDMA転送要求を発行して、第1ECCユニットにおける第1データ部のデータをDMA転送させ、続けて、第1冗長部のデータをPIO転送することになる。このようにして、第1ECCユニットのデータ転送を完了させたのに応じて、CPU11は、2回目のDMA転送要求を発行して、第2ECCユニットの第2データ部のデータのDMA転送と、これに続く第2冗長部のデータのPIO転送を行う。以降同様にして、順次、3回目のDMA転送要求の発行に応じた、第3ECCユニットの第3データ部のデータのDMA転送と第3冗長部のデータのPIO転送、及び4回目のDMA転送要求の発行に応じた、第4ECCユニットの第4データ部のデータのDMA転送と第4冗長部のデータのPIO転送を行う。
ここで、上記した図4(a)と図4(b)のページデータ転送手順について比較してみると、DMA転送とPIO転送の実行回数については、図4(a)の場合がそれぞれ1回のみであるのに対して、図4(b)の場合ではページ全体がECCユニット単位により4分割されていることに応じて4回となっている。
このことをCPUが実行する処理としてみると、1ページあたりのデータ転送につき、図4(a)の場合には、各1回のDMA転送要求とPIO転送を行っているのに対して、図4(b)の場合には、各4回のDMA転送とPIO転送とを行っているということになる。
一般的なこととして、DMA転送要求とPIO転送は、それがCPUによる処理であることにより、相応に長い時間を要する。従って、図4(a)と図4(b)の場合とについての総合的な処理時間を比較した場合には、CPUが実行するDMA転送要求とPIO転送の実行回数が増えている分、図4(b)のほうが長時間化する。
即ち、フラッシュメモリの大容量化傾向を背景として、複数のECCユニットの連結から成るページ構造が一般化しつつあるが、図3(a)のページ構造を前提として順当とされるページデータ転送の手順(図4(a))を、図3(b)のようなページ構造にそのまま適用して図4(b)のようにしてデータ転送を行うこととすると、ECCユニット数の増加に応じてデータ転送速度が遅くなっていく、という不都合を抱えることになる。また、単位転送データ量あたりのCPU実行回数が増えることで、CPUの処理負荷も重くなる。
このような不都合は、例えばさらにフラッシュメモリの大容量化が推し進められていくのに伴って、より顕著なものとなる可能性がある。フラッシュメモリの容量が大きくなれば、ページサイズも大きくなっていくわけであり、その際に、ページ内のECCユニットの分割数も増加する可能性があるからである。
このことをCPUが実行する処理としてみると、1ページあたりのデータ転送につき、図4(a)の場合には、各1回のDMA転送要求とPIO転送を行っているのに対して、図4(b)の場合には、各4回のDMA転送とPIO転送とを行っているということになる。
一般的なこととして、DMA転送要求とPIO転送は、それがCPUによる処理であることにより、相応に長い時間を要する。従って、図4(a)と図4(b)の場合とについての総合的な処理時間を比較した場合には、CPUが実行するDMA転送要求とPIO転送の実行回数が増えている分、図4(b)のほうが長時間化する。
即ち、フラッシュメモリの大容量化傾向を背景として、複数のECCユニットの連結から成るページ構造が一般化しつつあるが、図3(a)のページ構造を前提として順当とされるページデータ転送の手順(図4(a))を、図3(b)のようなページ構造にそのまま適用して図4(b)のようにしてデータ転送を行うこととすると、ECCユニット数の増加に応じてデータ転送速度が遅くなっていく、という不都合を抱えることになる。また、単位転送データ量あたりのCPU実行回数が増えることで、CPUの処理負荷も重くなる。
このような不都合は、例えばさらにフラッシュメモリの大容量化が推し進められていくのに伴って、より顕著なものとなる可能性がある。フラッシュメモリの容量が大きくなれば、ページサイズも大きくなっていくわけであり、その際に、ページ内のECCユニットの分割数も増加する可能性があるからである。
そこで、本実施の形態としては、複数のECCユニットにより形成される構造のページのデータを転送するのにあたり、CPUが実行する処理回数、負荷を軽減して、データ転送速度の向上が図られるようにすることを考慮して、以降説明していく構成を採るようにされる。
図5、図6は、携帯型コンテンツプレーヤ1において行われる、本実施の形態としてのページデータ転送の手順を模式的に示している。図5は、RAM13から記憶部14(フラッシュメモリ)に対してデータ書き込みを行う際のページデータ転送手順を示し、図6は、記憶部14(フラッシュメモリ)から読み出したデータをRAM13に対して保持させるためのページデータ転送手順を示している。また、何れの図においても、書き込み・読み出しの対象となるページデータは、図4(b)に示されるように、4つのECCユニットにより分割されたものを対象とする。
先ず、図5から説明する。
図5には、RAM13において、書き込み用データとして、1ページ分のデータ(ページデータ)が保持されている状態を示している。本実施の形態にあっては、例えばRAM13上において保持されるページデータは、例えば図4(b)に示す構造により論理的に結合されているのではなく、第1データ部から第4データ部までのデータ部分が配列されるデータ部保持領域と、第1冗長部から第4冗長部までに対応するデータが配列される冗長部保持領域とが、それぞれ異なる論理領域ごとにおいて保持されているようなイメージとなる。
図5には、RAM13において、書き込み用データとして、1ページ分のデータ(ページデータ)が保持されている状態を示している。本実施の形態にあっては、例えばRAM13上において保持されるページデータは、例えば図4(b)に示す構造により論理的に結合されているのではなく、第1データ部から第4データ部までのデータ部分が配列されるデータ部保持領域と、第1冗長部から第4冗長部までに対応するデータが配列される冗長部保持領域とが、それぞれ異なる論理領域ごとにおいて保持されているようなイメージとなる。
そして、このようにしてRAM13上でページデータが保持されている状態の下で、このページデータを指定してのデータ書込要求が行われたとする。すると、以降においては、DMAコントローラ16により、図において示される1−1、1−2、1−3、2−1、2−2・・・3−3、4−1、4−2、4−3の番号で示される手順に従ったDMAによるデータ転送を実行するようにされる。
先ず、DMAコントローラ16は、手順1−1として示すように、RAM13のデータ部保持領域の先頭から、データ転送サイズを示す第1データ部のデータの読み出しを行い、これをメモリインターフェイス15のECC演算部15aを経由させるようなイメージでDMA転送を行って、データ書き込み用のアドレスに従ってフラッシュメモリに対する書き込みを行うようにされる。
続いてDMAコントローラ16は、手順1−2により、第1冗長部としてのデータを読み出し、同じく、ECC演算部15aを経由させるようなイメージでDMA転送を行う。そして、この場合のフラッシュメモリへの書き込みは、データ書き込み用のアドレスに対して先の手順1−1により書き込まれた第1データ部のデータに続けて行うようにされる。つまり、フラッシュメモリへのDMA転送は、フラッシュメモリにおいて指定される1つの固定のアドレスに対してFIFO(First In First Out)で転送を行っていくものとなる。
また、例えば図4(b)に示される構造であれば、1つの冗長部は、6バイトの予備領域と10バイトのECCから成るものとされているが、これに対応する手順1−2としては、6バイトの予備領域としてのデータと、これに続くECC用の10バイト分の領域を確保するための仮データを転送するようなものとなる。
また、例えば図4(b)に示される構造であれば、1つの冗長部は、6バイトの予備領域と10バイトのECCから成るものとされているが、これに対応する手順1−2としては、6バイトの予備領域としてのデータと、これに続くECC用の10バイト分の領域を確保するための仮データを転送するようなものとなる。
手順1−1、手順1−2が完了した段階では、ECC演算部15aにより、第1データ部のデータと第1冗長部における予備領域のデータを利用したECC演算処理も完了し、第1データ部のデータと第1冗長部における予備領域のデータのための10バイトのECCが生成保持されているものとされる。そこで、次の手順1−3としては、ECC演算部15aに保持されているこの10バイト分のECCのデータを、先の手順1−2により確保されている、第1冗長部におけるECCの領域に対して書き込むようにされる。このためには、例えばDMAコントローラ16は、データのポインタを、RAMからECC演算部15aのレジスタに切り換えるようにした上で、このレジスタのデータを、これまでの書き込みデータに続けてFIFOで書き込むようにされる。つまり、本実施の形態では、ECCのデータは、PIO転送ではなく、DMAコントローラ16の制御によるDMA転送により書き込みが行われる。
そして、ここまでの手順1−1、1−2、1−3を完了した段階で、ページデータにおける第1ECCユニット分のデータの書き込みが完了する。
そして、ここまでの手順1−1、1−2、1−3を完了した段階で、ページデータにおける第1ECCユニット分のデータの書き込みが完了する。
続いてDMAコントローラ16は、上記手順1−1、1−2、1−3に準じて、手順2−1、2−2、2−3を順次実行することにより、先ず、RAM13のデータ部保持領域における第2データ部のデータと、冗長情報格納領域における第2冗長部のデータと、ECC演算部15aのレジスタに保持されたECCのデータを順次、FIFOによりDMA転送して、フラッシュメモリのデータ書き込み用のアドレスに対して、これまの書き込みデータに続けて書き込む制御を実行する。これにより、フラッシュメモリにおいては、ページデータにおける第2ECCユニットまでのデータの書き込みが完了する。
これに続けて、DMAコントローラは、手順3−1、3−2、3−3と、これに続く手順4−1、4−2、4−3を順次実行することにより、上記と同様にして、DMA転送により、フラッシュメモリのアドレスDes_adに対して、第2ECCユニットに続けて、第3ECCユニット(第3データ部、第3冗長部)、第4ECCユニット(第4データ部、第4冗長部)としてのデータを順次FIFOにより転送して書き込むようにされる。ここまでの手順を完了すると、フラッシュメモリにおけるデータ書き込み用アドレスが示す位置に対して、例えば図4(b)に示したとおりのページ構造により配列されたページデータが完全に書き込まれた状態が得られることになる。
これに続けて、DMAコントローラは、手順3−1、3−2、3−3と、これに続く手順4−1、4−2、4−3を順次実行することにより、上記と同様にして、DMA転送により、フラッシュメモリのアドレスDes_adに対して、第2ECCユニットに続けて、第3ECCユニット(第3データ部、第3冗長部)、第4ECCユニット(第4データ部、第4冗長部)としてのデータを順次FIFOにより転送して書き込むようにされる。ここまでの手順を完了すると、フラッシュメモリにおけるデータ書き込み用アドレスが示す位置に対して、例えば図4(b)に示したとおりのページ構造により配列されたページデータが完全に書き込まれた状態が得られることになる。
続いては、図6により、フラッシュメモリから読み出したデータをRAM13に保持させる、データ読み出しの手順について説明する。
フラッシュメモリにて記憶されるページデータは、上記図5にても説明しているように、図4(b)に示したとおりのページ構造により配列された状態となっている。そして、例えばCPUからのデータ読み出し要求が行われたとすると、以降においては、DMAコントローラ16により、図における1−1、1−2、2−1、2−2、3−1、3−2、4−1、4−2の手順に従ったDMA転送を実行するようにされる。
フラッシュメモリにて記憶されるページデータは、上記図5にても説明しているように、図4(b)に示したとおりのページ構造により配列された状態となっている。そして、例えばCPUからのデータ読み出し要求が行われたとすると、以降においては、DMAコントローラ16により、図における1−1、1−2、2−1、2−2、3−1、3−2、4−1、4−2の手順に従ったDMA転送を実行するようにされる。
先ず、DMAコントローラ16は、手順1−1として示すように、フラッシュメモリ(記憶部14)における指定のアドレスにアクセスすることで、読み出し対象のページデータにおける先頭の第1データ部のデータの読み出しを行うようにされる。そして、この読み出したデータをRAM13に転送し、指定された書き込みアドレスに従って書き込みを行うようにされる。
なお、上記手順1−1を含み、以降において説明する各手順によるフラッシュメモリからのページデータ読み出しは、図6の書き込みの場合と対称に、フラッシュメモリにおいて固定となるアドレスからFIFOにより行うべきものとなる。
なお、上記手順1−1を含み、以降において説明する各手順によるフラッシュメモリからのページデータ読み出しは、図6の書き込みの場合と対称に、フラッシュメモリにおいて固定となるアドレスからFIFOにより行うべきものとなる。
続いてDMAコントローラ16は、手順1−2により、第1冗長部としてのデータを読み出し、これについては、ECC演算部15aを経由させるようにしてDMA転送を行う。
ここで、データ部のデータについては、ECC演算部15aを経由させていないのに対して、冗長部のデータをECC演算部15aに経由させることとして図示しているのは、ECC演算部15aにより、エラー訂正処理のために、冗長部に格納されるECCのデータを抽出して取得するようにしていることを示しているものである。
そして、この手順1−2による冗長部のデータの書き込みは、RAM13への書き込みは、手順1−1により書き込まれた第1データ部のデータに続けて書き込むのではなく、データ部のデータとは論理的に離散したRAM13上の領域に対する書き込みとなる。また、RAM13において保持される1冗長部あたりのデータとしては、上記のようにしてECC演算部15aによりECCが抜き出されていることに応じて、例えば6バイトの予備領域のデータのみとされてもよい。しかしながら、ここでは、書き込み時と対応させて、予備領域のデータに続けてECC用の10バイトの領域も確保した状態で保持すべきものとする。
ここで、データ部のデータについては、ECC演算部15aを経由させていないのに対して、冗長部のデータをECC演算部15aに経由させることとして図示しているのは、ECC演算部15aにより、エラー訂正処理のために、冗長部に格納されるECCのデータを抽出して取得するようにしていることを示しているものである。
そして、この手順1−2による冗長部のデータの書き込みは、RAM13への書き込みは、手順1−1により書き込まれた第1データ部のデータに続けて書き込むのではなく、データ部のデータとは論理的に離散したRAM13上の領域に対する書き込みとなる。また、RAM13において保持される1冗長部あたりのデータとしては、上記のようにしてECC演算部15aによりECCが抜き出されていることに応じて、例えば6バイトの予備領域のデータのみとされてもよい。しかしながら、ここでは、書き込み時と対応させて、予備領域のデータに続けてECC用の10バイトの領域も確保した状態で保持すべきものとする。
続けてDMAコントローラ16は、手順2−1により、フラッシュメモリに記憶される読み出し対象のページデータにおける第2データ部のデータの読み出しを行ってRAM13に転送し、先に保持させた第1データ部のデータに続くアドレスに書き込むようにされる。続いて、手順2−2により、読み出し対象のページデータにおける第2データ部に続けて第2冗長部のデータを読み出して、ECC演算部15aによりECCを抽出取得させたうえで、RAM13に対して転送するようにされる。
以降、同様にして、手順3−1,手順3−2、手順4−1、手順4−2により、フラッシュメモリから第3データ部、第3冗長部の順でデータの読み出しを行ってRAM13への書き込みを行うようにされる。RAM13への書き込みにあたって、第3データ部のデータについては、第2データ部のデータに続くアドレスに書き込みを行い、第4データ部のデータについては、第3データ部のデータに続くアドレスに書き込みを行う。また、第3冗長部のデータについては、第2冗長部のデータに続くアドレスに書き込みを行い、第4冗長部のデータについては、第3冗長部のデータに続くアドレスに書き込みを行うようにされる。
このようにして1ページ分のデータ読み出しとしてのデータ転送が完了した段階では、図のRAM13として示すようにして、第1〜第4データ部までのデータから成るデータ部保持領域と、第1〜第4冗長部までのデータから成る冗長部保持領域とが形成されることになる。また、これらデータ部保持領域のデータと冗長部保持領域(予備領域)のデータについてのエラー訂正は、所定のタイミングで例えばECC演算部15aにより行われるべきものとなるのであるが、この実行タイミングについては、本実施の形態としては特に限定しない。例えば、上記手順1−1〜4−2までの手順によりDMA転送を行った後において、RAM13に保持されているデータ部保持領域の第1〜第4データ部までの各データと、冗長部保持領域の第1冗長部〜第4冗長部までの各データとを利用して行うようにしてもよいし、データ部のデータと冗長部のデータをRAM13に書き込む前の段階で、ECC演算部15aが転送過程のデータを対象にエラー訂正処理を実行するように構成することも考えられる。
続いて、上記図5、図6により説明した本実施の形態のページデータ転送に対応したDMAコントローラの構成に関して説明していくことにする。
まず、一般的なこととして、DMAコントローラがDMA転送を行うのにあたっては、先にも図7(a)を参照して説明したように、パラメータとして、転送元のアドレスとなるSource Addressと、転送先のアドレスとなるDestination Addressと、転送データサイズを示すTransfer Sizeが必要となる。これにより、DMAコントローラは、転送元のSource Addressから転送データを読み出して、転送先のDestination Addressに対してデータを転送して書き込むという処理を、Transfer Sizeが指定するデータサイズ分実行するようにされる。
まず、一般的なこととして、DMAコントローラがDMA転送を行うのにあたっては、先にも図7(a)を参照して説明したように、パラメータとして、転送元のアドレスとなるSource Addressと、転送先のアドレスとなるDestination Addressと、転送データサイズを示すTransfer Sizeが必要となる。これにより、DMAコントローラは、転送元のSource Addressから転送データを読み出して、転送先のDestination Addressに対してデータを転送して書き込むという処理を、Transfer Sizeが指定するデータサイズ分実行するようにされる。
これに対して、本実施の形態としては、DMAコントローラに与えるべきパラメータとして、図7(b)に示すようにして、Source Address(実データ対応転送元アドレス)、Destination Address(実データ対応転送先アドレス)、及びTransfer Size(実データ転送量指定情報)に加えて、Extra Source Address(冗長情報対応転送元アドレス)、Extra Destination Address(冗長情報対応転送先アドレス)、Extra Transfer Size(冗長情報転送量指定情報)、及びLoop count(ループ回数指定情報)を規定する。
そして、このようにして規定されるSource Address、Destination Address、Transfer Size、Extra Source Address、Extra Destination Address、Extra Transfer Size、及びLoop countは、それぞれ次のような意義を有する。
Source Address:RAMからフラッシュメモリへの書き込み(図5)にあたっては、転送元であるRAMにおけるデータ部保持領域のアドレスを示す。フラッシュメモリからRAMへの読み出し(図6)にあたっては、転送元であるフラッシュメモリにおいてページデータが格納されるアドレスを示す。
Destination Address:RAMからフラッシュメモリへの書き込み(図5)にあたっては、転送先となるフラッシュメモリにおいてページデータが書き込まれるべきアドレスを示す。フラッシュメモリからRAMへの読み出し(図6)にあたっては、転送先のRAMにおいてデータ部のデータが書き込まれるべきデータ部保持領域のアドレスを示す。
Transfer Size:1つのデータ部を対象として転送元から転送先に転送すべきデータ転送量を指定する。図4(b)のフォーマットであれば、512バイトとなる。
Extra Source Address、:RAMからフラッシュメモリへの書き込み(図5)にあたっては、転送元であるRAMにおける冗長部保持領域のアドレスを示す。フラッシュメモリからRAMへの読み出し(図6)にあたっては、使用されない。
Extra Destination Address:RAMからフラッシュメモリへの書き込み(図5)にあたっては、特に用いられない。フラッシュメモリからRAMへの読み出し(図6)にあたっては、転送先のRAMにおいて冗長部のデータが書き込まれるべき冗長部部保持領域のアドレスを示す。
Extra Transfer Size:1つの冗長部を対象として転送元から転送先に転送すべきデータ転送量を指定する。図4(b)のフォーマットであれば、ECCを含めた場合には16バイトとなる。
Loop count:1ページ分のデータのDMA転送のために実行するループ実行回数を指定するもので、その初期値としては、ページ内におけるECCユニットの数をnとすると、n−1により表されるものとなる。
そして、このようにして規定されるSource Address、Destination Address、Transfer Size、Extra Source Address、Extra Destination Address、Extra Transfer Size、及びLoop countは、それぞれ次のような意義を有する。
Source Address:RAMからフラッシュメモリへの書き込み(図5)にあたっては、転送元であるRAMにおけるデータ部保持領域のアドレスを示す。フラッシュメモリからRAMへの読み出し(図6)にあたっては、転送元であるフラッシュメモリにおいてページデータが格納されるアドレスを示す。
Destination Address:RAMからフラッシュメモリへの書き込み(図5)にあたっては、転送先となるフラッシュメモリにおいてページデータが書き込まれるべきアドレスを示す。フラッシュメモリからRAMへの読み出し(図6)にあたっては、転送先のRAMにおいてデータ部のデータが書き込まれるべきデータ部保持領域のアドレスを示す。
Transfer Size:1つのデータ部を対象として転送元から転送先に転送すべきデータ転送量を指定する。図4(b)のフォーマットであれば、512バイトとなる。
Extra Source Address、:RAMからフラッシュメモリへの書き込み(図5)にあたっては、転送元であるRAMにおける冗長部保持領域のアドレスを示す。フラッシュメモリからRAMへの読み出し(図6)にあたっては、使用されない。
Extra Destination Address:RAMからフラッシュメモリへの書き込み(図5)にあたっては、特に用いられない。フラッシュメモリからRAMへの読み出し(図6)にあたっては、転送先のRAMにおいて冗長部のデータが書き込まれるべき冗長部部保持領域のアドレスを示す。
Extra Transfer Size:1つの冗長部を対象として転送元から転送先に転送すべきデータ転送量を指定する。図4(b)のフォーマットであれば、ECCを含めた場合には16バイトとなる。
Loop count:1ページ分のデータのDMA転送のために実行するループ実行回数を指定するもので、その初期値としては、ページ内におけるECCユニットの数をnとすると、n−1により表されるものとなる。
そして、本実施の形態のDMAコントローラ16としては、上記のようにして規定されたSource Address、Destination Address、Transfer Size、Extra Source Address、Extra Destination Address、Extra Transfer Size、及びLoop countのパラメータに基づいたDMA転送が可能なように、シーケンサ16aを実装するようにされる。
シーケンサ16aは、例えば論理回路などによりハードウェアとして形成されるもので、上記のようにして規定したパラメータが設定されることに応じて、以降説明するような動作を実行する。これにより、図5、図6により模式的に示したような本実施の形態としてのページデータ転送が実現される。
なお、実際におけるシーケンサ16aのハードウェア構成そのものは比較的小さい規模であり、従って、DMAコントローラ16に対してシーケンサ16aが追加されたことによる回路規模の拡大やコストアップなどの問題は特に生じるものではない。
シーケンサ16aは、例えば論理回路などによりハードウェアとして形成されるもので、上記のようにして規定したパラメータが設定されることに応じて、以降説明するような動作を実行する。これにより、図5、図6により模式的に示したような本実施の形態としてのページデータ転送が実現される。
なお、実際におけるシーケンサ16aのハードウェア構成そのものは比較的小さい規模であり、従って、DMAコントローラ16に対してシーケンサ16aが追加されたことによる回路規模の拡大やコストアップなどの問題は特に生じるものではない。
図8及び図9は、シーケンサ16aを備えるDMAコントローラ16の動作を、フローチャートとして示したものである。つまり、DMAコントローラ(シーケンサ16a)としては、以降説明する図8及び図9の流れによる動作が得られるようにして構成すればよい、ということになる。
また、以降の説明にあたり、各パラメータの値については、下記のようにして表記することとする。
Source Address:Src_ad
Destination Address:Des_ad
Transfer Size:Trf_size
Extra Source Address:ExSrc_ad
Extra Destination Address:ExDes_ad
Extra Transfer Size:ExTrf_size
Loop count:Loop_count
また、以降の説明にあたり、各パラメータの値については、下記のようにして表記することとする。
Source Address:Src_ad
Destination Address:Des_ad
Transfer Size:Trf_size
Extra Source Address:ExSrc_ad
Extra Destination Address:ExDes_ad
Extra Transfer Size:ExTrf_size
Loop count:Loop_count
先ず、図8は、RAM13からフラッシュメモリ(記憶部14)への書き込みを行う際における、DMAコントローラ16(シーケンサ16a)の動作を示している。
DMAコントローラ16では、例えばステップS101により、CPU11によるデータ書込要求が発行されるのを待機しており、データ書込要求が発行されたとすると、ステップS102以降の手順を実行する。
DMAコントローラ16では、例えばステップS101により、CPU11によるデータ書込要求が発行されるのを待機しており、データ書込要求が発行されたとすると、ステップS102以降の手順を実行する。
ステップS101に対応したデータ書込要求によっては、CPU11からDMAコントローラ16に対して、Source Address(Src_ad)、Destination Address(Des_ad)、Transfer Size(Trf_size)、Extra Source Address(ExSrc_ad)、Extra Transfer Size(ExTrf_size)、及びLoop count(Loop_count)(図7(b)からExtra Destination Address(ExDes_ad)を省略した残り全てのパラメータ)が指定される。そこで、ステップS102によっては、これらのパラメータをシーケンサ16aにセットするようにされる。
ステップS102に続くステップS103以降の手順は、シーケンサ16aが実行するものとしてみることができる。
先ず、ステップS103では、セットされたSrc_adにより示されるRAM13のアドレスにアクセスしてデータ読み出しを実行する。最初にCPU11から指定されるSrc_adは、図5により模式的に示しているように、RAM13におけるデータ保持領域の先頭のアドレスを示している。このために、最初のステップS103によっては、このデータ保持領域の先頭となるアドレスにアクセスしてデータの読み出しを実行することになる。
先ず、ステップS103では、セットされたSrc_adにより示されるRAM13のアドレスにアクセスしてデータ読み出しを実行する。最初にCPU11から指定されるSrc_adは、図5により模式的に示しているように、RAM13におけるデータ保持領域の先頭のアドレスを示している。このために、最初のステップS103によっては、このデータ保持領域の先頭となるアドレスにアクセスしてデータの読み出しを実行することになる。
次のステップS104では、ステップS102によりセットされたDes_adに従ってフラッシュメモリにアクセスして、上記ステップS103により読み出したデータを書き込むようにされる。つまり、フラッシュメモリにおいてDes_adにより示されるアドレスに書き込みを行う。
そして、上記ステップS103及びS104による1回のDMA転送が完了したとされると、ステップS105により、今回のステップS103、S104の繰り返し(ループ)により書き込んだ総データサイズが、ステップS102によりセットされたTrf_size以上となることを検知するようにされる。そして、ここで上記のことが検知されないのであれば、ステップS106によりSrc_adをインクリメントしたうえで、次のステップS103、S104の手順を実行するようにされる。この次のステップS103、S104によっては、インクリメントされたSrc_adに従ってRAM13にアクセスしてDMA転送を行うことになる。このようにして、ステップS103、S104の動作が繰り返される(ループされる)ことで、データ部のデータについてのDMA転送が順次実行されていくことになる。
そして、これまでのステップS103、S104のループによる転送データの総量がTrf_size以上になったことがステップS105として検知されたのであれば、今回のステップS103、S104によるDMA転送のループを終了させる。
そして、これまでのステップS103、S104のループによる転送データの総量がTrf_size以上になったことがステップS105として検知されたのであれば、今回のステップS103、S104によるDMA転送のループを終了させる。
このようにして、1回分のステップS103及びS104によるDMA転送のループを終了した段階では、1つ分のデータ部のデータのDMA転送が完了した状態となっている。例えば、最初のステップS103、S104によるループを終了した段階では、図5の手順1−1として説明した第1データ部のデータのDMA転送が完了していることになる。また、このときのSrc_adは、データ部保持領域における第2データ部のデータの先頭アドレスを示した状態になっているものとされる。
上記のようにして1回分のステップS103及びS104によるDMA転送のループを終了させたとすると、シーケンサ16aは、ステップS107〜S112までの手順により、直前のステップS103〜S105の手順により転送させたデータ部に対応する冗長部のデータについての転送を行うようにされる。
先ず、ステップS107では、ステップS102によりセットされたExSrc_adが示すRAM13のアドレスにアクセスする。最初にCPU11が指定するExSrc_adは、冗長部保持領域における先頭アドレスを示したものとなっているので、最初のステップS107によっては、冗長部保持領域における第1冗長部の先頭のデータを読み出すことになる。そして、このようにして読み出したデータを、フラッシュメモリにおいてDes_adが示すアドレスにDMA転送するようにして書き込む。なお、フラッシュメモリへの書き込みは、先に図5によっても説明したように、最初にCPUが指定したDes_adに対して、FIFOにより転送して順次書き込んでいくようにされる。このためにDes_adについてはインクリメントされることなく固定となる。
先ず、ステップS107では、ステップS102によりセットされたExSrc_adが示すRAM13のアドレスにアクセスする。最初にCPU11が指定するExSrc_adは、冗長部保持領域における先頭アドレスを示したものとなっているので、最初のステップS107によっては、冗長部保持領域における第1冗長部の先頭のデータを読み出すことになる。そして、このようにして読み出したデータを、フラッシュメモリにおいてDes_adが示すアドレスにDMA転送するようにして書き込む。なお、フラッシュメモリへの書き込みは、先に図5によっても説明したように、最初にCPUが指定したDes_adに対して、FIFOにより転送して順次書き込んでいくようにされる。このためにDes_adについてはインクリメントされることなく固定となる。
上記ステップS107、S108としてのループ動作については、ステップS110によりExSrc_adをインクリメントしながら、ステップ109により、今回のステップS107、S108のループ動作によって転送されたデータの総サイズが、ExTrf_size以上になることが検知されるまで継続するようにしている。
そして、ステップS109により上記のことが検知されてステップS107、S108のループを終了させたときには、直前のステップS103、S104によりDMA転送されたデータ部と同じECCユニットに格納されるべき冗長部のデータについてのDMA転送が完了しており、ExSrc_adは、次の冗長部保持領域における先頭を示していることになる。例えば1回目(最初)のステップS107、S108のループが終了した段階では、図5の手順1−2としての第1冗長部のデータ転送を完了した状態に対応することになる。また、ExSrc_adは、冗長部保持領域における第2冗長部(次に転送対象となる冗長部)の先頭を示すことになる。
そして、ステップS109により上記のことが検知されてステップS107、S108のループを終了させたときには、直前のステップS103、S104によりDMA転送されたデータ部と同じECCユニットに格納されるべき冗長部のデータについてのDMA転送が完了しており、ExSrc_adは、次の冗長部保持領域における先頭を示していることになる。例えば1回目(最初)のステップS107、S108のループが終了した段階では、図5の手順1−2としての第1冗長部のデータ転送を完了した状態に対応することになる。また、ExSrc_adは、冗長部保持領域における第2冗長部(次に転送対象となる冗長部)の先頭を示すことになる。
ステップS109の検知を経てステップS111に至った段階では、今回のステップS103、S104のループによる1つのデータ部相当のデータ転送と、同じ今回のステップS107、S108のループによる、対応する1つの冗長部相当のデータ転送が完了している。これに応じて、先に図5により説明したように、ECC演算部15aにおいては、この1ECCユニット分のECCが生成されて保持されている状態にある。
そこで、シーケンサ16aは、ステップS111により、ECC演算部15aのレジスタに保持されているECCを取り込むようにされる。このためには、例えばデータ読み出しのためのポインタを、RAM13からECC演算部15aのレジスタに切り換えるようにされる。そして、続くステップS112により、フラッシュメモリのDes_adにアクセスして、取り込みにより取得したECCを書き込むようにされる。なお、ステップS107、S108のループ動作による冗長部のデータの書き込みによっては、予備データとしての有効なデータを書き込むとともに、これに続けてECCを書き込むべき領域が確保されるようになっている。ステップS112では、この確保された領域に対してデータの書き込みを実行するようにされる。
ここまでの段階により、フラッシュメモリに対するデータの書き込みとして、1ECCユニットに対応したデータの書き込みが完了することになる。
そこで、シーケンサ16aは、ステップS111により、ECC演算部15aのレジスタに保持されているECCを取り込むようにされる。このためには、例えばデータ読み出しのためのポインタを、RAM13からECC演算部15aのレジスタに切り換えるようにされる。そして、続くステップS112により、フラッシュメモリのDes_adにアクセスして、取り込みにより取得したECCを書き込むようにされる。なお、ステップS107、S108のループ動作による冗長部のデータの書き込みによっては、予備データとしての有効なデータを書き込むとともに、これに続けてECCを書き込むべき領域が確保されるようになっている。ステップS112では、この確保された領域に対してデータの書き込みを実行するようにされる。
ここまでの段階により、フラッシュメモリに対するデータの書き込みとして、1ECCユニットに対応したデータの書き込みが完了することになる。
そして、ステップS112に続けては、ステップS113により、現在シーケンサ16aが保持しているLoop_countが0となる条件を満たしているか否かを検知する。ちなみに、先に説明したように、CPU11が最初にセットするLoop_countの初期値は、ページ内のECCユニット数nに対応するものであり、図5の例との対応では、Loop_countの初期値は3(=n−1)となる。この場合、Loop_countは、図8に示す手順の進行に応じて、3、2、1、0の4値をとる。
上記ステップS113にて上記のことが検知されないのであれば、ステップS114にてLoop_countをデクリメントしたうえで、ステップS103の手順に戻るようにされる。
上記ステップS113にて上記のことが検知されないのであれば、ステップS114にてLoop_countをデクリメントしたうえで、ステップS103の手順に戻るようにされる。
このようにして、ステップS113にてLoop_count=0となることが検知されるまで、これまでに説明した、ステップS103〜S112による、1ECCユニットごとに対応したデータ部とこれに続く冗長部とのデータのDMA転送がループして(繰り返し)実行されることになる。つまり、図5との対応では、第1ECCユニットに対応するデータのDMA転送から、続けて、第2ECCユニット、第3ECCユニット、第4ECCユニットのデータのDMA転送が順次行われていくことになる。
そして、最後のECCユニット(第4ECCユニット)のデータのDMA転送までが完了すると、ステップS113にてLoop_count=0となることが検知されることになり、1ページ分のデータについての書き込み動作を終了することになる。
そして、最後のECCユニット(第4ECCユニット)のデータのDMA転送までが完了すると、ステップS113にてLoop_count=0となることが検知されることになり、1ページ分のデータについての書き込み動作を終了することになる。
次に、図9により、RAM13からフラッシュメモリ(記憶部14)への書き込みを行う際における、DMAコントローラ16(シーケンサ16a)の動作を説明する。
ここでのDMAコントローラ16は、ステップS201により、CPU11が発行するデータ読出要求を待機しており、データ読出要求が発行されたとすると、ステップS202以降の手順を実行する。
ここでのDMAコントローラ16は、ステップS201により、CPU11が発行するデータ読出要求を待機しており、データ読出要求が発行されたとすると、ステップS202以降の手順を実行する。
ステップS201に対応したデータ読出要求によっては、CPU11からDMAコントローラ16に対して、Source Address(Src_ad)、Destination Address(Des_ad)、Transfer Size(Trf_size)、Extra Destination Address(ExDes_ad)、Extra Transfer Size(ExTrf_size)、及びLoop count(Loop_count)(図7(b)からExtra Source Address(ExSrc_ad)を省略した残り全てのパラメータ)が指定される。ステップS202によっては、これらのパラメータをシーケンサ16aにセットするようにされる。
この場合においても、ステップS202に続くステップS203以降の手順は、シーケンサ16aが実行するものとしてみることができる。
先ず、ステップS203、ステップS204、ステップS205、ステップS206から成るシーケンスは、フラッシュメモリからRAM13に対してデータ部1つ分のデータをDMA転送する動作となる。
つまり、ステップS203では、設定されたSrc_adが示すフラッシュメモリのアドレスに対してアクセスして先頭から順次読み出し、その読み出し順に従って出力させる。つまり、FIFOとしてのデータ読み出しを行う。最初にCPU11から指定されるSrc_adは、図6に示すように、フラッシュメモリにおいて読み出し対象のページが書き込まれているアドレスを示している。従って、最初のステップS203によっては、フラッシュメモリにおけるページデータの先頭である、第1データ部先頭のデータにアクセスすることになる。そして、ステップS204により、この読み出したデータをフラッシュメモリに転送し、Des_adにより示されるアドレスに書き込むようにされる。この場合において、CPU11が指定するDes_adは、RAM13におけるデータ部保持領域の先頭アドレスを示す。従って、このルーチンでの最初のステップS203、204によるDMA転送では、フラッシュメモリにおけるページデータの第1データ部先頭のデータが、RAM13におけるデータ部保持領域の先頭アドレスに書き込まれることになる。
先ず、ステップS203、ステップS204、ステップS205、ステップS206から成るシーケンスは、フラッシュメモリからRAM13に対してデータ部1つ分のデータをDMA転送する動作となる。
つまり、ステップS203では、設定されたSrc_adが示すフラッシュメモリのアドレスに対してアクセスして先頭から順次読み出し、その読み出し順に従って出力させる。つまり、FIFOとしてのデータ読み出しを行う。最初にCPU11から指定されるSrc_adは、図6に示すように、フラッシュメモリにおいて読み出し対象のページが書き込まれているアドレスを示している。従って、最初のステップS203によっては、フラッシュメモリにおけるページデータの先頭である、第1データ部先頭のデータにアクセスすることになる。そして、ステップS204により、この読み出したデータをフラッシュメモリに転送し、Des_adにより示されるアドレスに書き込むようにされる。この場合において、CPU11が指定するDes_adは、RAM13におけるデータ部保持領域の先頭アドレスを示す。従って、このルーチンでの最初のステップS203、204によるDMA転送では、フラッシュメモリにおけるページデータの第1データ部先頭のデータが、RAM13におけるデータ部保持領域の先頭アドレスに書き込まれることになる。
上記ステップS203及びS204による1回のDMA転送が完了したとされると、ステップS205により、これまでループさせたステップS203、S204の動作により書き込んだ総データサイズが、ステップS202によりセットされたTrf_size以上となる条件を満たしているか否かについて検知する。ステップS205として、このことが検知されない場合には、ステップS206により、RAMのアドレスを示すDes_adのほうをインクリメントしたうえで、次のステップS203、S204の手順を実行するようにされる。なお、一方のSrc_adは、フラッシュメモリにおける読み出し対象のページデータを格納したアドレスを示すことになるので、1つ分のページデータを転送する間は固定となる。
そして、ステップS205にて、上記のことが検知されたのであれば、ステップS203及びS204によるDMA転送のループを終了する。
そして、ステップS205にて、上記のことが検知されたのであれば、ステップS203及びS204によるDMA転送のループを終了する。
なお、確認のために述べておくと、この場合のTrf_sizeも、転送すべきデータ部1つ分のデータサイズを指定している。従ってステップS205にてTrf_size以上となったことの検知が行われたのに応じてステップS203及びS204によるループを終了させた段階では、1つのデータ部に格納されるべきデータのDMA転送が完了したことになる。また、ステップS203及びS204がループされるごとにステップS206によるDes_adのインクリメントも行われる結果、Des_adは、RAM上でのデータ部保持領域における第2データ部のデータの先頭アドレスを示す。
具体的には、例えば、最初のステップS203及びS204によるループを終了させた段階では、第1データ部のデータ転送が完了した状態となっている。つまり、図6の手順1−1を完了した段階である。また、ステップS203及びS204がループされるごとにステップS206によるDes_adのインクリメントも行われる結果、このときのDes_adは、RAM上でのデータ部保持領域における第2データ部のデータの先頭アドレスを示すことになる。
具体的には、例えば、最初のステップS203及びS204によるループを終了させた段階では、第1データ部のデータ転送が完了した状態となっている。つまり、図6の手順1−1を完了した段階である。また、ステップS203及びS204がループされるごとにステップS206によるDes_adのインクリメントも行われる結果、このときのDes_adは、RAM上でのデータ部保持領域における第2データ部のデータの先頭アドレスを示すことになる。
続いてシーケンサ16aは、ステップS207、ステップS208、ステップS209、ステップS210から成るシーケンスにより、フラッシュメモリからRAM13に対して、先のステップS203〜206により転送されたデータ部と同じ冗長部のデータをDMA転送する。
先ず、ステップS207により、フラッシュメモリのSrc_adが示すアドレスから、FIFOによりデータの読み出しを行う。このフラッシュメモリからの読み出しは、前述のようにして、アドレスSrc_adに記憶されるページデータ構造に対するFIFOの方式により行われる。従って、ステップS207によっては、先のステップS203〜206により転送されたデータ部に続く、同じECCユニットに含まれる冗長部のデータの読み出しを、ループごとに逐次行っていくことになる。そして、上記ステップS207により読み出されたデータを、ステップS208により、RAM13のExDes_adが示すアドレスに対してDMA転送して書き込むようにされる。
ここで、最初にCPU11により指定されるExDes_adは、RAM13において確保した冗長部保持領域の先頭アドレスとなる。つまり、このステップS207、S208によるDMA転送は、RAM13の冗長部保持領域として確保された領域に対して冗長部を成すデータを書き込むための手順となる。ちなみに、最初のステップS207、S208によっては、第1冗長部の先頭データをDMA転送することになる。
先ず、ステップS207により、フラッシュメモリのSrc_adが示すアドレスから、FIFOによりデータの読み出しを行う。このフラッシュメモリからの読み出しは、前述のようにして、アドレスSrc_adに記憶されるページデータ構造に対するFIFOの方式により行われる。従って、ステップS207によっては、先のステップS203〜206により転送されたデータ部に続く、同じECCユニットに含まれる冗長部のデータの読み出しを、ループごとに逐次行っていくことになる。そして、上記ステップS207により読み出されたデータを、ステップS208により、RAM13のExDes_adが示すアドレスに対してDMA転送して書き込むようにされる。
ここで、最初にCPU11により指定されるExDes_adは、RAM13において確保した冗長部保持領域の先頭アドレスとなる。つまり、このステップS207、S208によるDMA転送は、RAM13の冗長部保持領域として確保された領域に対して冗長部を成すデータを書き込むための手順となる。ちなみに、最初のステップS207、S208によっては、第1冗長部の先頭データをDMA転送することになる。
上記ステップS207及びS208による1回のDMA転送が完了したとされると、ステップS209により、これまでループさせたステップS207、S208の動作により書き込んだ総データサイズが、ステップS202によりセットされたExTrf_size以上となる条件を満たしているか否かについて検知する。ステップS209として、このことが検知されない場合には、ステップS210により、ExDes_adをインクリメントしたうえで、次のステップS207、S208の手順を実行するようにされる。そして、ステップS209にて、上記のことが検知されたのであれば、ステップS207、S208によるDMA転送のループを終了する。
なお、この場合のExTrf_sizeも、転送すべき冗長部1つ分のデータサイズを指定している。従ってステップS209にてExTrf _size以上となったことの検知が行われたのに応じてステップS207及びS208によるループを終了させた段階では、直前のステップS203、S204によりDMA転送されたデータ部と同じECCユニットに格納されるべき冗長部1つ分のデータのDMA転送が完了したことになる。また、ステップS207、S208がループされるごとにステップS210によるDes_adのインクリメントも行われる結果、Des_adは、RAM上での冗長部保持領域における第2冗長部のデータの先頭アドレスを示すことになる。
ステップS209の検知を経てステップS211に至った段階では、1ECCユニットを形成するデータ部と冗長部のデータが、RAM13上のデータ部保持領域と冗長部保持領域とに分けられてDMA転送により書き込まれていることになる。
そこで、ステップS211では、現在シーケンサ16aが保持しているLoop_countが0であるか否かについて判別する。この場合においても、CPU11が最初にセットするLoop_countの値は、ページ内のECCユニット数nに対応して、n−1で表される。
そこで、ステップS211では、現在シーケンサ16aが保持しているLoop_countが0であるか否かについて判別する。この場合においても、CPU11が最初にセットするLoop_countの値は、ページ内のECCユニット数nに対応して、n−1で表される。
上記ステップS211にて上記のことが検知されないのであれば、ステップS114にてLoop_countをデクリメントしたうえで、ステップS203に戻る。
このようにして、図9の手順では、ステップS113にてLoop_count=0となることが検知されるまで、これまでに説明した、ステップS203〜S210までによる、1ECCユニットごとに対応したデータ部保持領域に対するデータ部のDMA転送と、これに続く冗長部保持領域に対する冗長部のデータのDMA転送とがループして(繰り返し)実行されることになる。
そして、最後のECCユニット(第4ECCユニット)のデータのDMA転送までが完了すると、ステップS113にてLoop_count=0となることが検知されることになり、1ページ分のデータについての書き込み動作を終了することになる。
そして、最後のECCユニット(第4ECCユニット)のデータのDMA転送までが完了すると、ステップS113にてLoop_count=0となることが検知されることになり、1ページ分のデータについての書き込み動作を終了することになる。
上記図8,図9のフローチャートにより説明した、本実施の形態としてのページデータ書き込みのためのRAM13からフラッシュメモリへのデータ転送と、読み込みのためのフラッシュメモリからRAM13へのデータ転送の手順を、例えば図3(b)の構造のページに適用した場合には、図10に示すものとなる。この図10を、図4(b)と比較してみると次のようなことがいえる。なお、図4(b)には、同じ図3(b)のページ構造に対して、先に図4(a)により説明した手順によるページデータ転送を適用した場合が示される。
例えば図4(b)に示したページデータ転送では、先ず、ページを形成するECCユニットごとの冗長部のデータ転送については、PIO転送としている。これに対して、本実施の形態では、データ部同様にDMA転送としている。
例えば図4により説明したデータ転送手順としては、ECCのデータを転送する必要上、冗長部のデータ転送には、PIO転送を採用していたのであるが、本実施の形態としては、DMAコントローラ16のシーケンサ16aにより、ECC演算部15aに保持しているECCを転送させるように構成している。これにより本実施の形態としては、冗長部についてもDMA転送することが可能となっている。そして、このようして、冗長部のデータについてDMA転送が可能となることで、本実施の形態におけるページデータ転送としてはDMA転送が連続することになる。これにより、ページデータを形成するECCユニット数にかかわらず、DMA転送要求の発行は、ページデータの転送を開始させる最初のタイミングにおける1回のみでよいことになる。これに対して、図4によるデータ転送では、冗長部がPIO転送となることで、データ部の先頭ごとにDMA転送要求を発行することが必要になり、例えば図4(b)の場合であれば、1ページあたりのDMA転送要求は4回となっている。
例えば図4により説明したデータ転送手順としては、ECCのデータを転送する必要上、冗長部のデータ転送には、PIO転送を採用していたのであるが、本実施の形態としては、DMAコントローラ16のシーケンサ16aにより、ECC演算部15aに保持しているECCを転送させるように構成している。これにより本実施の形態としては、冗長部についてもDMA転送することが可能となっている。そして、このようして、冗長部のデータについてDMA転送が可能となることで、本実施の形態におけるページデータ転送としてはDMA転送が連続することになる。これにより、ページデータを形成するECCユニット数にかかわらず、DMA転送要求の発行は、ページデータの転送を開始させる最初のタイミングにおける1回のみでよいことになる。これに対して、図4によるデータ転送では、冗長部がPIO転送となることで、データ部の先頭ごとにDMA転送要求を発行することが必要になり、例えば図4(b)の場合であれば、1ページあたりのDMA転送要求は4回となっている。
先にも説明したように、DMA転送要求、及びPIO転送は、CPU11による実行処理であるために相応に長い時間を要するものであり、このため、例えば図4(b)に示されるようなデータ転送では、ページ内ECCユニット数が増加するほど転送時間が長くなってしまうという不都合を生じる。
これに対して、本実施の形態であれば、先ず、上記もしているように、1ページ分のデータ転送は全てCPUを介在しないDMA転送となる。また、これに伴って、ページ内ECCユニット数にかかわらず、DMA転送要求は1回のみでよくなる。つまり、1ページのデータ転送につき、CPU11が実行する処理は、1回のDMA転送要求を実行すればよい。
これにより、本実施の形態としては、ページデータの転送に要する時間を、例えば図4に示されるデータ転送手順と比較して短縮することが可能となる。特に、本実施の形態の場合には、ページデータ転送のためにCPUが実行すべき処理は、最初のDMA転送要求のみであり、このことはページ内のECCユニット数に関係ない。換言すれば、例えば今後においてフラッシュメモリの記憶可能容量の増加に伴ってページ内のECCユニット数がさらに増加したとしても、1ページあたりにおいてCPUが実行する処理が最初のDMA転送要求のみであることに変わりはない。また、このことからすれば、本実施の形態のデータ転送は、フラッシュメモリの大容量化などに応じてページ内のECCユニット数が増加するほど、その効果が顕著となるものである。
これに対して、本実施の形態であれば、先ず、上記もしているように、1ページ分のデータ転送は全てCPUを介在しないDMA転送となる。また、これに伴って、ページ内ECCユニット数にかかわらず、DMA転送要求は1回のみでよくなる。つまり、1ページのデータ転送につき、CPU11が実行する処理は、1回のDMA転送要求を実行すればよい。
これにより、本実施の形態としては、ページデータの転送に要する時間を、例えば図4に示されるデータ転送手順と比較して短縮することが可能となる。特に、本実施の形態の場合には、ページデータ転送のためにCPUが実行すべき処理は、最初のDMA転送要求のみであり、このことはページ内のECCユニット数に関係ない。換言すれば、例えば今後においてフラッシュメモリの記憶可能容量の増加に伴ってページ内のECCユニット数がさらに増加したとしても、1ページあたりにおいてCPUが実行する処理が最初のDMA転送要求のみであることに変わりはない。また、このことからすれば、本実施の形態のデータ転送は、フラッシュメモリの大容量化などに応じてページ内のECCユニット数が増加するほど、その効果が顕著となるものである。
また、本実施の形態におけるページデータ転送として、フラッシュメモリからRAM13へのデータ読み出しについては、図6においても模式的に示されているように、1ページ分のDMA転送が行われた結果として、データ部保持領域と冗長部保持領域とで振り分けられるようにしてデータがRAM13上で保持されるようになっている。これは、図9による説明からも理解されるように、読み出しとしてのDMA転送にあたり、RAMに対応して指定する転送先アドレスとして、データ部に対応したSource Address(Src_ad)と、冗長部に対応したExtra Destination Address(ExDes_ad)とで、相互に異なるアドレスをDMAコントローラ16にセットするようにしているからである。
このようにして、RAM上で、1ページ分のデータを、図3(b)に示すような構造に応じた配列のままで保持するのではなく、データ部と冗長部とで異なる領域に保持するようにして管理するのは、例えば、本来のページ構造が図3(a)に示すものであり、RAMに読み込んだページデータを処理するCPUとしても、このことを前提とした処理アルゴリズムとしていることが主たる理由である。
つまり、図3(a)の構造では、ページが1つのデータ部と1つの冗長部とから成っており、従って、データ部の実データは、元から論理的に連続した状態で転送が行われる。CPUは、このようにして論理的に連続してRAMに保持されたデータを読み込んで処理を実行するようにされる。つまり、図3(b)に示すページ構造のままで論理的に配列されるような結果でRAM上に読み込みを行った場合、CPUが実データを処理しようとするときには、アドレスを飛び越すようにして実データの読み出しを実行していく必要があることになり、例えばプログラム変更やCPUの処理負担増加などの不利益が生じる。
そこで、本実施の形態としては、図6に示したように、RAM13上で、フラッシュメモリから読み出したデータが、データ部保持領域と冗長部保持領域とで振り分けられて保持されるようにすることで、実データが論理的に連続した状態で保持されるようにしているものである。
そして、本実施の形態としては、上記のようにしてRAM上でページデータがデータ部保持領域と冗長部保持領域とで振り分けられる状態が、フラッシュメモリからのページデータのDMA転送の結果として直に得られることに特徴を有するものである。この点について、例えば先に図4により説明したページデータ転送と比較すると次のようになる。
つまり、図3(a)の構造では、ページが1つのデータ部と1つの冗長部とから成っており、従って、データ部の実データは、元から論理的に連続した状態で転送が行われる。CPUは、このようにして論理的に連続してRAMに保持されたデータを読み込んで処理を実行するようにされる。つまり、図3(b)に示すページ構造のままで論理的に配列されるような結果でRAM上に読み込みを行った場合、CPUが実データを処理しようとするときには、アドレスを飛び越すようにして実データの読み出しを実行していく必要があることになり、例えばプログラム変更やCPUの処理負担増加などの不利益が生じる。
そこで、本実施の形態としては、図6に示したように、RAM13上で、フラッシュメモリから読み出したデータが、データ部保持領域と冗長部保持領域とで振り分けられて保持されるようにすることで、実データが論理的に連続した状態で保持されるようにしているものである。
そして、本実施の形態としては、上記のようにしてRAM上でページデータがデータ部保持領域と冗長部保持領域とで振り分けられる状態が、フラッシュメモリからのページデータのDMA転送の結果として直に得られることに特徴を有するものである。この点について、例えば先に図4により説明したページデータ転送と比較すると次のようになる。
図11は、先に図4(b)に示したデータ転送を行った場合における、RAM13上での処理内容を示している。
先ずは、図4(b)にても説明したように、フラッシュメモリからRAM13に対して、第1〜第4ECCユニットごとに、データ部のDMA転送と冗長部のPIO転送とを組み合わせたデータ転送が順次行われることで、RAM13には、先ず、図4(b)と同じ配列によりページデータが保持される結果となる。この状態では、第1データ部〜第4データ部は、それぞれ第1〜第3冗長部が間に介在することで不連続になっている。そこで、図示しているように、この図4(b)のままの配列から、第1データ部〜第4データ部を抜き出してアドレス順に配列させることで、ページ内の実データの論理的連続性が得られた状態で保持し直すようにされる。また、残った第1〜第4冗長部までのデータについても、別の領域にてアドレス順に配列させるようにして保持し直すようにされる。このようにして、データ部と冗長部についての並び替えを行うことで、例えば図6に示したデータ部保持領域と冗長部保持領域と同様の管理状態を得る。なお、このようなRAM上に一旦保持された単位データの並び替えは、CPUが実行する。
先ずは、図4(b)にても説明したように、フラッシュメモリからRAM13に対して、第1〜第4ECCユニットごとに、データ部のDMA転送と冗長部のPIO転送とを組み合わせたデータ転送が順次行われることで、RAM13には、先ず、図4(b)と同じ配列によりページデータが保持される結果となる。この状態では、第1データ部〜第4データ部は、それぞれ第1〜第3冗長部が間に介在することで不連続になっている。そこで、図示しているように、この図4(b)のままの配列から、第1データ部〜第4データ部を抜き出してアドレス順に配列させることで、ページ内の実データの論理的連続性が得られた状態で保持し直すようにされる。また、残った第1〜第4冗長部までのデータについても、別の領域にてアドレス順に配列させるようにして保持し直すようにされる。このようにして、データ部と冗長部についての並び替えを行うことで、例えば図6に示したデータ部保持領域と冗長部保持領域と同様の管理状態を得る。なお、このようなRAM上に一旦保持された単位データの並び替えは、CPUが実行する。
このようにして、例えば図4に従ったデータ転送手順では、図6と同じ保持管理状態を得ようとするのにあたり、データ転送により一旦RAMに保持させたデータ構造に対して、さらにRAM上でのデータの並び替えの処理を実行する必要がある。
これに対して、本実施の形態では、ページデータの転送の完了時には、図6の保持管理状態となっているものであり、RAM上での並び替えは必要がない。これによっても、例えばデータ転送速度、転送効率などが向上されることになる。
これに対して、本実施の形態では、ページデータの転送の完了時には、図6の保持管理状態となっているものであり、RAM上での並び替えは必要がない。これによっても、例えばデータ転送速度、転送効率などが向上されることになる。
なお、本願発明としては、これまでに説明した実施の形態としての構成に限定されるものではない。
例えば、実施の形態としては、コンテンツファイル、プログラムなどを記憶させるための記憶媒体としてフラッシュメモリを備える携帯型コンテンツプレーヤに、本願発明を適用しているが、これ以外のフラッシュメモリを備える電子機器、装置全般に適用することができる。現状であれば、例えばフラッシュメモリにより構成される各種リムーバブル形式の記憶装置や、USBメモリなどといわれる、USB(Universal Serial Bus)端子に差し込むようにして使用する、フラッシュメモリを内蔵した記憶装置などが考えられる。
また、例えば実施の形態のページに準じたような、実データと、これに対応する冗長的な情報から成るような構造が規定され、これがデータ転送単位とされるようなフラッシュメモリ以外の半導体メモリ装置に対しても本願発明を適用できる。
例えば、実施の形態としては、コンテンツファイル、プログラムなどを記憶させるための記憶媒体としてフラッシュメモリを備える携帯型コンテンツプレーヤに、本願発明を適用しているが、これ以外のフラッシュメモリを備える電子機器、装置全般に適用することができる。現状であれば、例えばフラッシュメモリにより構成される各種リムーバブル形式の記憶装置や、USBメモリなどといわれる、USB(Universal Serial Bus)端子に差し込むようにして使用する、フラッシュメモリを内蔵した記憶装置などが考えられる。
また、例えば実施の形態のページに準じたような、実データと、これに対応する冗長的な情報から成るような構造が規定され、これがデータ転送単位とされるようなフラッシュメモリ以外の半導体メモリ装置に対しても本願発明を適用できる。
1 携帯型コンテンツプレーヤ、11 CPU、12 ROM、13 RAM、14 記憶部(フラッシュメモリ)、15 メモリインターフェイス、16 DMAコントローラ、16a シーケンサ、17 オーディオ再生処理部、18 ヘッドフォン端子、19 表示処理部、20 表示部、21 操作部、22 外部データインターフェイス
Claims (8)
- 所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、上記実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、書込データ保持手段から上記記憶媒体に対して転送して書き込むために、
ダイレクトメモリアクセスにより、1つの実データ格納領域に格納されるべきデータを上記書込データ保持手段から読み出し、転送路を経由して、上記記憶媒体に対して書き込むようにされ、前回書き込まれたデータ格納単位のデータが書き込み済みの場合には、このデータに論理的に続くようにして書き込みを行う第1の媒体書込転送手段と、
1つの冗長情報格納領域に格納されるべきデータを上記書込データ保持手段から読み出し、転送路を経由して、上記第1の媒体書込転送手段により書き込まれたデータに対して論理的に続くようにして、上記記憶媒体に対して書き込む第2の媒体書込転送手段と、
各一回の上記第1の媒体書込転送手段と上記第2の媒体書込転送手段のデータ転送による1データ格納単位分のデータの書き込みを、上記単位データを形成するデータ格納単位ごとに応じて実行させる書込ループ制御手段と、
を備えることを特徴とするメモリ制御装置。 - 上記第1の媒体書込転送手段は、
設定された実データ対応転送元アドレスに基づいた上記1つの実データ格納領域に格納されるべきデータの読み出しと、設定された実データ対応転送先アドレスに基づいた書き込みとを、設定された実データ転送量指定情報が示す1つの実データ格納領域に応じた転送データ量の分だけ実行し、
上記第2の媒体書込転送手段は、
設定された冗長情報対応転送元アドレスに基づいた上記1つの冗長情報格納領域に格納されるべきデータの読み出しと、設定された冗長情報対応転送先アドレスに基づいたデータの書き込みとを、設定された冗長情報転送量指定情報が指定する1つの冗長情報格納領域に応じた転送データ量の分だけ実行し、
上記書込ループ制御手段は、設定されたループ回数指定情報に応じて実行すべき回数分だけ、上記データ格納単位のデータの書き込みを繰り返して実行させることにより、上記単位データを形成するデータ格納単位ごとに応じた1データ格納単位分のデータの書き込みを行うようにされる、
ことを特徴とする請求項1に記載のメモリ制御装置。 - 上記書込データ保持手段においては、一回の上記第1の媒体書込転送手段と上記第2の媒体書込転送手段のデータ転送によるデータ格納単位のデータの書き込みに際して、上記第1の媒体書込転送手段により転送される過程のデータを少なくとも利用して、エラー訂正符号を生成して保持するエラー訂正符号生成手段を含み、
上記第2の媒体書込転送手段は、上記エラー訂正符号生成手段が保持する上記エラー訂正符号のデータを転送するようにされる、
ことを特徴とする請求項1に記載のメモリ制御装置。 - 上記エラー訂正符号生成手段は、上記第1の媒体書込転送手段により転送される過程のデータと、エラー訂正符号以外で上記第2の媒体書込転送手段により転送される過程の所定長のデータとを利用してエラー訂正符号を生成して保持するものとされ、
上記第2の媒体書込転送手段は、上記エラー訂正符号以外の所定長のデータの転送を完了したとされると、上記エラー訂正符号のデータの転送に切り換えるようにして、データ転送を行うように構成される、
ことを特徴とする請求項1に記載のメモリ制御装置。 - 所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、上記実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、上記記憶媒体から読み出してデータ保持手段に対して転送するために、
ダイレクトメモリアクセスにより、1つの実データ格納領域に格納されるべきデータを上記記憶媒体から読み出し、転送路を経由して、上記データ保持手段に対して書き込むようにされ、前回書き込まれた実データ格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第1の媒体読出転送手段と、
上記第1の媒体読出転送手段によるデータ転送に続けて、ダイレクトメモリアクセスにより、1つの冗長情報格納領域に格納されるべきデータを上記記憶媒体から読み出し、転送路を経由して、上記データ保持手段に対して書き込むようにされ、前回書き込まれた冗長情報格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第2の媒体読出転送手段と、
各一回の上記第1の媒体読出転送手段と上記第2の媒体読出転送手段のデータ転送による1データ格納単位分のデータの読み出しを、上記単位データを形成するデータ格納単位ごとに応じて実行させる読出ループ制御手段と、
を備えることを特徴とするメモリ制御装置。 - 上記第1の媒体読出転送手段は、
設定された実データ対応転送元アドレスに基づいた上記1つの実データ格納領域に格納されるべきデータの読み出しと、設定された実データ対応転送先アドレスに基づいた書き込みとを、設定された実データ転送量指定情報が示す1つの実データ格納領域に応じた転送データ量の分だけ実行し、
上記第2の転送手段は、
設定された冗長情報対応転送元アドレスに基づいた上記1つの冗長情報格納領域に格納されるべきデータの読み出しと、設定された冗長情報対応転送先アドレスに基づいた上記記憶媒体に対する書き込みとを、設定された冗長情報転送量指定情報が指定する1つの冗長情報格納領域に応じた転送データ量の分だけ実行し、
上記読出ループ制御手段は、設定されたループ回数指定情報に応じて実行すべき回数分だけ、上記データ格納単位のデータの読出を繰り返して実行させることにより、上記単位データを形成するデータ格納単位ごとに応じた1データ格納単位分のデータの読み出しを行うようにされる、
ことを特徴とする請求項5に記載のメモリ制御装置。 - 所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、上記実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、書込データ保持手段から上記記憶媒体に対して転送して書き込むために、
ダイレクトメモリアクセスにより、1つの実データ格納領域に格納されるべきデータを上記書込データ保持手段から読み出し、転送路を経由して、上記記憶媒体に対して書き込むようにされ、前回書き込まれたデータ格納単位のデータが書き込み済みの場合には、このデータに論理的に続くようにして書き込みを行う第1の媒体書込転送手順と、
1つの冗長情報格納領域に格納されるべきデータを上記書込データ保持手段から読み出し、転送路を経由して、上記第1の媒体書込転送手順により書き込まれたデータに対して論理的に続くようにして、上記記憶媒体に対して書き込む第2の媒体書込転送手順と、
各一回の上記第1の媒体書込転送手順と上記第2の媒体書込転送手順とが行うデータ転送による1データ格納単位分のデータの書き込みを、上記単位データを形成するデータ格納単位ごとに応じて実行させる書込ループ制御手順と、
を実行することを特徴とするメモリ制御方法。 - 所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、上記実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、上記記憶媒体から読み出してデータ保持手段に対して転送するために、
ダイレクトメモリアクセスにより、1つの実データ格納領域に格納されるべきデータを上記記憶媒体から読み出し、転送路を経由して、上記データ保持手段に対して書き込むようにされ、前回書き込まれた実データ格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第1の媒体読出転送手順と、
上記第1の媒体読出転送手順によるデータ転送に続けて、ダイレクトメモリアクセスにより、1つの冗長情報格納領域に格納されるべきデータを上記記憶媒体から読み出し、転送路を経由して、上記データ保持手段に対して書き込むようにされ、前回書き込まれた冗長情報格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第2の媒体読出転送手順と、
各一回の上記第1の媒体読出転送手順と上記第2の媒体読出転送手順が行うデータ転送による1データ格納単位分のデータの読み出しを、上記単位データを形成するデータ格納単位ごとに応じて実行させる読出ループ制御手順と、
を実行することを特徴とするメモリ制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006112072A JP2007286813A (ja) | 2006-04-14 | 2006-04-14 | メモリ制御装置、メモリ制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006112072A JP2007286813A (ja) | 2006-04-14 | 2006-04-14 | メモリ制御装置、メモリ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007286813A true JP2007286813A (ja) | 2007-11-01 |
Family
ID=38758535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006112072A Pending JP2007286813A (ja) | 2006-04-14 | 2006-04-14 | メモリ制御装置、メモリ制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007286813A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150140621A (ko) * | 2013-08-23 | 2015-12-16 | 실리콘 모션 인코포레이티드 | 플래시 메모리의 저장 유닛에 액세스하기 위한 방법 및 그 방법을 사용하는 장치 |
US9459962B2 (en) | 2013-08-23 | 2016-10-04 | Silicon Motion, Inc. | Methods for accessing a storage unit of a flash memory and apparatuses using the same |
JP2016194952A (ja) * | 2013-04-12 | 2016-11-17 | クアルコム,インコーポレイテッド | フラッシュメモリの信頼性および寿命を改善するシステムおよび方法 |
US9513995B2 (en) | 2013-08-23 | 2016-12-06 | Silicon Motion, Inc. | Methods for accessing a storage unit of a flash memory and apparatuses using the same |
JP2017054442A (ja) * | 2015-09-11 | 2017-03-16 | ラピスセミコンダクタ株式会社 | 情報処理装置 |
US9977714B2 (en) | 2013-08-23 | 2018-05-22 | Silicon Motion, Inc. | Methods for programming a storage unit of a flash memory in multiple stages and apparatuses using the same |
WO2018105587A1 (ja) * | 2016-12-07 | 2018-06-14 | いすゞ自動車株式会社 | 制御装置、及び、制御装置へのデータ書き込み方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000305798A (ja) * | 1999-04-26 | 2000-11-02 | Matsushita Electric Ind Co Ltd | エラー検出コード発生方法および装置 |
-
2006
- 2006-04-14 JP JP2006112072A patent/JP2007286813A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000305798A (ja) * | 1999-04-26 | 2000-11-02 | Matsushita Electric Ind Co Ltd | エラー検出コード発生方法および装置 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016194952A (ja) * | 2013-04-12 | 2016-11-17 | クアルコム,インコーポレイテッド | フラッシュメモリの信頼性および寿命を改善するシステムおよび方法 |
US9778861B2 (en) | 2013-04-12 | 2017-10-03 | Qualcomm Incorporated | Systems and methods to improve the reliability and lifespan of flash memory |
KR101677534B1 (ko) | 2013-08-23 | 2016-11-18 | 실리콘 모션 인코포레이티드 | 플래시 메모리의 저장 유닛에 액세스하기 위한 방법 및 그 방법을 사용하는 장치 |
KR20150140621A (ko) * | 2013-08-23 | 2015-12-16 | 실리콘 모션 인코포레이티드 | 플래시 메모리의 저장 유닛에 액세스하기 위한 방법 및 그 방법을 사용하는 장치 |
US9513995B2 (en) | 2013-08-23 | 2016-12-06 | Silicon Motion, Inc. | Methods for accessing a storage unit of a flash memory and apparatuses using the same |
US9459962B2 (en) | 2013-08-23 | 2016-10-04 | Silicon Motion, Inc. | Methods for accessing a storage unit of a flash memory and apparatuses using the same |
US9977714B2 (en) | 2013-08-23 | 2018-05-22 | Silicon Motion, Inc. | Methods for programming a storage unit of a flash memory in multiple stages and apparatuses using the same |
JP2017054442A (ja) * | 2015-09-11 | 2017-03-16 | ラピスセミコンダクタ株式会社 | 情報処理装置 |
WO2018105587A1 (ja) * | 2016-12-07 | 2018-06-14 | いすゞ自動車株式会社 | 制御装置、及び、制御装置へのデータ書き込み方法 |
CN110050262A (zh) * | 2016-12-07 | 2019-07-23 | 五十铃自动车株式会社 | 控制装置及向控制装置的数据写入方法 |
US20190339910A1 (en) * | 2016-12-07 | 2019-11-07 | Isuzu Motors Limited | Control device and method for writing data to control device |
EP3553660A4 (en) * | 2016-12-07 | 2019-11-20 | Isuzu Motors Limited | CONTROL DEVICE AND METHOD FOR WRITING DATA IN SUCH A CONTROL DEVICE |
CN110050262B (zh) * | 2016-12-07 | 2023-09-15 | 五十铃自动车株式会社 | 控制装置及向控制装置的数据写入方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4628750B2 (ja) | バッファメモリを内蔵したフラッシュメモリ装置及びフラッシュメモリシステム | |
JP3792259B2 (ja) | 複数のデバイスへ同時書き込み操作を行うことにより高まるフラッシュメモリデバイスにおけるメモリ性能 | |
JP6046216B2 (ja) | ホストシステム及びホストコントローラ | |
US8417901B2 (en) | Combining write commands to overlapping addresses or to a specific page | |
JP3898305B2 (ja) | 半導体記憶装置、半導体記憶装置の制御装置及び制御方法 | |
US20080028132A1 (en) | Non-volatile storage device, data storage system, and data storage method | |
JP5090819B2 (ja) | メモリーカード及び該データ格納方法 | |
JP2007286813A (ja) | メモリ制御装置、メモリ制御方法 | |
JP2006092019A (ja) | コントローラ、メモリカード及びその制御方法 | |
JP2007087388A (ja) | メモリコントローラ及びそれを含んだデータ処理システム | |
JP5914148B2 (ja) | Ssd(ソリッドステートドライブ)装置 | |
WO2019090493A1 (zh) | 内存块回收方法和装置 | |
JP2008027383A (ja) | 情報記録装置及びその制御方法 | |
JP2007193448A (ja) | 情報記録装置及びその制御方法 | |
JP2007193865A (ja) | 情報記録装置及びその制御方法 | |
JP2017027479A (ja) | データ読出し方法及び情報処理システム | |
JP2010157129A (ja) | 半導体記憶装置 | |
JP2006195565A (ja) | 半導体記憶装置の制御方法、メモリカード、及びホスト機器 | |
JP2003076605A (ja) | ブロック消去型不揮発メモリを搭載した半導体記憶装置とそのデータの書込み・読出し方法 | |
JP2010026584A (ja) | メモリコントローラおよび不揮発性記憶装置 | |
WO2022116067A1 (zh) | 闪存的数据处理方法和数据处理装置 | |
JP2007293987A (ja) | 情報記録装置及びその制御方法 | |
JP3747213B1 (ja) | シーケンシャルromインターフェース対応nand型フラッシュメモリーデバイス及びそのコントローラ | |
JP2007079715A (ja) | データ転送方法、プログラムおよび装置 | |
KR100479170B1 (ko) | 메모리 억세스 제어장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090408 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120110 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120508 |