(57)【要約】【課題】フラッシュメモリとＲＡＭ間のデータ転送の効率化を図る。【解決手段】ＲＡＭからフラッシュメモリへのデータ転送では、ＣＰＵからＤＭＡコントローラに対して、Src_ad、Des_ad、Trf_size、ExSrc_ad、ExTrf_size、Loop_countのパラメータをセットする。ＤＭＡコントローラは、Src_adが示すＲＡＭのアドレスからDes_adが示すフラッシュメモリのアドレスに対するTrf_sizeが示す量のデータ転送、ExSrc_adが示すＲＡＭのアドレスからDes_adが示すフラッシュメモリのアドレスに対するExTrf_sizeが示す量のデータ転送を、Loop_countに対応した回数分繰り返す。これにより、データ部と冗長部が分割された構造のページデータを、ＤＭＡ転送要求に応じた一度のＤＭＡ転送により全て転送することが可能になる。【選択図】図５
2007286813.tif 000002
【特許請求の範囲】
【請求項１】
所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、上記実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、書込データ保持手段から上記記憶媒体に対して転送して書き込むために、
ダイレクトメモリアクセスにより、１つの実データ格納領域に格納されるべきデータを上記書込データ保持手段から読み出し、転送路を経由して、上記記憶媒体に対して書き込むようにされ、前回書き込まれたデータ格納単位のデータが書き込み済みの場合には、このデータに論理的に続くようにして書き込みを行う第１の媒体書込転送手段と、
１つの冗長情報格納領域に格納されるべきデータを上記書込データ保持手段から読み出し、転送路を経由して、上記第１の媒体書込転送手段により書き込まれたデータに対して論理的に続くようにして、上記記憶媒体に対して書き込む第２の媒体書込転送手段と、
各一回の上記第１の媒体書込転送手段と上記第２の媒体書込転送手段のデータ転送による１データ格納単位分のデータの書き込みを、上記単位データを形成するデータ格納単位ごとに応じて実行させる書込ループ制御手段と、
を備えることを特徴とするメモリ制御装置。
【請求項２】
上記第１の媒体書込転送手段は、
設定された実データ対応転送元アドレスに基づいた上記１つの実データ格納領域に格納されるべきデータの読み出しと、設定された実データ対応転送先アドレスに基づいた書き込みとを、設定された実データ転送量指定情報が示す１つの実データ格納領域に応じた転送データ量の分だけ実行し、
上記第２の媒体書込転送手段は、
設定された冗長情報対応転送元アドレスに基づいた上記１つの冗長情報格納領域に格納されるべきデータの読み出しと、設定された冗長情報対応転送先アドレスに基づいたデータの書き込みとを、設定された冗長情報転送量指定情報が指定する１つの冗長情報格納領域に応じた転送データ量の分だけ実行し、
上記書込ループ制御手段は、設定されたループ回数指定情報に応じて実行すべき回数分だけ、上記データ格納単位のデータの書き込みを繰り返して実行させることにより、上記単位データを形成するデータ格納単位ごとに応じた１データ格納単位分のデータの書き込みを行うようにされる、
ことを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
上記書込データ保持手段においては、一回の上記第１の媒体書込転送手段と上記第２の媒体書込転送手段のデータ転送によるデータ格納単位のデータの書き込みに際して、上記第１の媒体書込転送手段により転送される過程のデータを少なくとも利用して、エラー訂正符号を生成して保持するエラー訂正符号生成手段を含み、
上記第２の媒体書込転送手段は、上記エラー訂正符号生成手段が保持する上記エラー訂正符号のデータを転送するようにされる、
ことを特徴とする請求項１に記載のメモリ制御装置。
【請求項４】
上記エラー訂正符号生成手段は、上記第１の媒体書込転送手段により転送される過程のデータと、エラー訂正符号以外で上記第２の媒体書込転送手段により転送される過程の所定長のデータとを利用してエラー訂正符号を生成して保持するものとされ、
上記第２の媒体書込転送手段は、上記エラー訂正符号以外の所定長のデータの転送を完了したとされると、上記エラー訂正符号のデータの転送に切り換えるようにして、データ転送を行うように構成される、
ことを特徴とする請求項１に記載のメモリ制御装置。
【請求項５】
所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、上記実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、上記記憶媒体から読み出してデータ保持手段に対して転送するために、
ダイレクトメモリアクセスにより、１つの実データ格納領域に格納されるべきデータを上記記憶媒体から読み出し、転送路を経由して、上記データ保持手段に対して書き込むようにされ、前回書き込まれた実データ格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第１の媒体読出転送手段と、
上記第１の媒体読出転送手段によるデータ転送に続けて、ダイレクトメモリアクセスにより、１つの冗長情報格納領域に格納されるべきデータを上記記憶媒体から読み出し、転送路を経由して、上記データ保持手段に対して書き込むようにされ、前回書き込まれた冗長情報格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第２の媒体読出転送手段と、
各一回の上記第１の媒体読出転送手段と上記第２の媒体読出転送手段のデータ転送による１データ格納単位分のデータの読み出しを、上記単位データを形成するデータ格納単位ごとに応じて実行させる読出ループ制御手段と、
を備えることを特徴とするメモリ制御装置。
【請求項６】
上記第１の媒体読出転送手段は、
設定された実データ対応転送元アドレスに基づいた上記１つの実データ格納領域に格納されるべきデータの読み出しと、設定された実データ対応転送先アドレスに基づいた書き込みとを、設定された実データ転送量指定情報が示す１つの実データ格納領域に応じた転送データ量の分だけ実行し、
上記第２の転送手段は、
設定された冗長情報対応転送元アドレスに基づいた上記１つの冗長情報格納領域に格納されるべきデータの読み出しと、設定された冗長情報対応転送先アドレスに基づいた上記記憶媒体に対する書き込みとを、設定された冗長情報転送量指定情報が指定する１つの冗長情報格納領域に応じた転送データ量の分だけ実行し、
上記読出ループ制御手段は、設定されたループ回数指定情報に応じて実行すべき回数分だけ、上記データ格納単位のデータの読出を繰り返して実行させることにより、上記単位データを形成するデータ格納単位ごとに応じた１データ格納単位分のデータの読み出しを行うようにされる、
ことを特徴とする請求項５に記載のメモリ制御装置。
【請求項７】
所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、上記実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、書込データ保持手段から上記記憶媒体に対して転送して書き込むために、
ダイレクトメモリアクセスにより、１つの実データ格納領域に格納されるべきデータを上記書込データ保持手段から読み出し、転送路を経由して、上記記憶媒体に対して書き込むようにされ、前回書き込まれたデータ格納単位のデータが書き込み済みの場合には、このデータに論理的に続くようにして書き込みを行う第１の媒体書込転送手順と、
１つの冗長情報格納領域に格納されるべきデータを上記書込データ保持手段から読み出し、転送路を経由して、上記第１の媒体書込転送手順により書き込まれたデータに対して論理的に続くようにして、上記記憶媒体に対して書き込む第２の媒体書込転送手順と、
各一回の上記第１の媒体書込転送手順と上記第２の媒体書込転送手順とが行うデータ転送による１データ格納単位分のデータの書き込みを、上記単位データを形成するデータ格納単位ごとに応じて実行させる書込ループ制御手順と、
を実行することを特徴とするメモリ制御方法。
【請求項８】
所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、上記実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、上記記憶媒体から読み出してデータ保持手段に対して転送するために、
ダイレクトメモリアクセスにより、１つの実データ格納領域に格納されるべきデータを上記記憶媒体から読み出し、転送路を経由して、上記データ保持手段に対して書き込むようにされ、前回書き込まれた実データ格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第１の媒体読出転送手順と、
上記第１の媒体読出転送手順によるデータ転送に続けて、ダイレクトメモリアクセスにより、１つの冗長情報格納領域に格納されるべきデータを上記記憶媒体から読み出し、転送路を経由して、上記データ保持手段に対して書き込むようにされ、前回書き込まれた冗長情報格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第２の媒体読出転送手順と、
各一回の上記第１の媒体読出転送手順と上記第２の媒体読出転送手順が行うデータ転送による１データ格納単位分のデータの読み出しを、上記単位データを形成するデータ格納単位ごとに応じて実行させる読出ループ制御手順と、
を実行することを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばフラッシュメモリに代表される不揮発性メモリ素子などとしての記憶媒体を対象として、データ書き込み／読み出しなどについての制御を行う記憶媒体制御装置、及びその方法に関するものである。
【背景技術】
【０００２】
不揮発性の半導体記憶素子が、データ保存のための記憶媒体として広い用途で利用されるようになってきている状況にある。現状において、このような半導体記憶素子の記憶媒体としては、フラッシュメモリが代表的なものとなる。
周知のようにして、フラッシュメモリのフォーマット構造としては、その記憶領域がブロックといわれる固定長の単位により分割され、ブロックはページといわれる固定長の単位により分割される。さらにページは、データを格納する所定長の領域と、このデータに対応した所定内容の冗長的な情報を格納する所定長の領域とから成る。
また、近年ではフラッシュメモリの記憶容量は増加傾向にある。例えば記憶容量の増加に対してブロックなどについて以前からのフォーマットで規定されたままのサイズで維持させたとすると、ブロックの数は著しく増加することになり、メモリ管理が困難になってくる。そこで、フラッシュメモリのフォーマットとしては、記憶容量の増加に応じて、上記したブロックについても、その固定長のサイズを大きくして設定することが行われる。また、同じく、メモリ管理の観点からすると、このようにして大きなサイズを規定したブロックに格納されるページ数も一定以内に抑えることが好ましいことになる。そこで、ページのサイズについても、ブロックサイズを大きくしたことに応じて、相応に大きくしたサイズを規定することが行われる。
【０００３】
また、例えばフラッシュメモリに対応してデータの書き込み／読み出しが可能なシステムにあっては、例えば主記憶装置（ＲＡＭ）側からフラッシュメモリへのデータの書き込み、あるいはフラッシュメモリに記憶されるデータ主記憶装置に保持させるようなデータの読み出しを、ＤＭＡを伴って実行させることがしばしば行われる。
ＤＭＡ(Direct Memory Access)は周知のようにして、ＣＰＵを介さずに、装置とメモリとの間で、バス経由により直接的にデータ転送を行う方式のことをいう。データ転送にあたってＣＰＵの処理が介在しないようにされれば、それだけ単位データ量あたりの転送に要する時間は短縮されることになり、データ転送速度の高速化が図られることになる。フラッシュメモリに対するデータの書き込み／読み出しにＤＭＡ転送を採用することも、このようなデータ転送速度の高速化を目的として行われるものである。
【０００４】
【特許文献１】特開２００２−１６９７６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本願発明は、例えば上記しているような、フラッシュメモリなどの記憶媒体と主記憶装置側などとの間でのＤＭＡを伴うデータ転送に関して、記憶媒体のフォーマットの変更などに適合させて、より効率的なものとなるようにし、例えば、ＣＰＵの処理負担の軽減やデータ転送速度の低下の抑制、向上が図られるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
そこで本発明は上記した課題を考慮して、メモリ制御装置として次のように構成する。
つまり、所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、書込データ保持手段から上記記憶媒体に対して転送して書き込むために、ダイレクトメモリアクセスにより、１つの実データ格納領域に格納されるべきデータを書込データ保持手段から読み出し、転送路を経由して、記憶媒体に対して書き込むようにされ、前回書き込まれたデータ格納単位のデータが書き込み済みの場合には、このデータに論理的に続くようにして書き込みを行う第１の媒体書込転送手段と、１つの冗長情報格納領域に格納されるべきデータを書込データ保持手段から読み出し、転送路を経由して、第１の媒体書込転送手段により書き込まれたデータに対して論理的に続くようにして、記憶媒体に対して書き込む第２の媒体書込転送手段と、各一回の第１の媒体書込転送手段と第２の媒体書込転送手段のデータ転送による１データ格納単位分のデータの書き込みを、単位データを形成するデータ格納単位ごとに応じて実行させる書込ループ制御手段と、を備えてメモリ制御装置を構成することとした。
【０００７】
上記構成は、本願発明としてのダイレクトメモリアクセス（ＤＭＡ）によるデータ書き込みの場合、つまり、主記憶装置などを含むような書込データ保持手段から記憶媒体に対してデータを書き込む場合の構成となる。また、この場合において転送の対象となるデータは、固定長による単位データ（ページ）となるもので、さらにこの単位データは、固定長によるデータ格納単位（ＥＣＣユニット）を複数連結して形成される。データ格納単位の各々は、実データを格納する固定長の実データ格納領域（データ部）と、冗長情報を格納する冗長情報格納領域（冗長部）とから成るものとされている。
そして、この構成によれば、単位データを形成するデータ格納単位ごとに応じて、先ず、実データ格納領域のデータをＤＭＡにより転送し、続いて冗長情報格納領域のデータもＤＭＡにより転送することで、単位データの転送を完結させることになる。これにより、データ格納単位の転送ごとにＤＭＡによる転送要求を発生させる必要が無くなり、例えば単位データにおける全てのデータ格納単位のデータを、１回のＤＭＡによる転送要求に応答して転送させることが可能になる。
【０００８】
また、メモリ制御装置として次のようにも構成する。
つまり、所定の記憶媒体に対応して規定される、実データと、この実データに対応する冗長情報としてのデータを格納するもので、実データを格納する所定長の実データ格納領域と、この実データ格納領域に対応する冗長情報を格納する所定長の冗長情報格納領域とから成るデータ格納単位が所定数連結されて形成される所定長の単位データを、記憶媒体から読み出してデータ保持手段に対して転送するために、ダイレクトメモリアクセスにより、１つの実データ格納領域に格納されるべきデータを記憶媒体から読み出し、転送路を経由して、データ保持手段に対して書き込むようにされ、前回書き込まれた実データ格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第１の媒体読出転送手段と、この第１の媒体読出転送手段によるデータ転送に続けて、ダイレクトメモリアクセスにより、１つの冗長情報格納領域に格納されるべきデータを記憶媒体から読み出し、転送路を経由して、データ保持手段に対して書き込むようにされ、前回書き込まれた冗長情報格納領域に格納されるべきデータが存在する場合には、このデータに論理的に続くようにして書き込みを行う第２の媒体読出転送手段と、各一回の第１の媒体読出転送手段と第２の媒体読出転送手段のデータ転送による１データ格納単位分のデータの読み出しを、単位データを形成するデータ格納単位ごとに応じて実行させる読出ループ制御手段とを備えて構成することとした。
【０００９】
上記構成は、本願発明としてのデータ読み出しの場合、つまり、記憶媒体からデータを読み出して主記憶装置などを含むような書込データ保持手段に対して保持させる場合の構成となる。また、この場合においても転送の対象となるデータは、固定長による単位データ（ページ）となるもので、さらにこの単位データは、固定長によるデータ格納単位（ＥＣＣユニット）を複数連結して形成される。データ格納単位の各々は、実データを格納する固定長の実データ格納領域（データ部）と、冗長情報を格納する冗長情報格納領域（冗長部）とから成るものとされている。
そして、この構成によれば、単位データを形成するデータ格納単位ごとに応じて、先ず、実データ格納領域のデータをＤＭＡにより転送し、続いて冗長情報格納領域のデータもＤＭＡにより転送することで、単位データの転送を完結させることになる。これにより、データ格納単位の転送ごとにＤＭＡによる転送要求を発生させる必要が無くなり、例えば単位データにおける全てのデータ格納単位のデータを、１回のＤＭＡによる転送要求に応答して転送させることが可能になる。
【発明の効果】
【００１０】
このようにして本発明は、記憶媒体をデータ書き込み対象あるいは読み出し対象としてデータ転送させる場合において、単位データにおける全てのデータ格納単位のデータを、１回のＤＭＡによる転送要求に応答して転送させることが可能となる。これにより、例えばＤＭＡ転送をコントロールするＣＰＵなどは、単位データあたりについて１回のＤＭＡ転送の要求を発生させればよいことになり、記憶媒体に対するデータ書き込み、読み出しにあたっての処理負担が軽減される。また、これに伴って記憶媒体を対象とするデータ転送速度の向上も期待される。このようにして本願発明によっては、記憶媒体を対象とするＤＭＡ転送について、これまでよりも効率的なものとすることが可能となる。
【発明を実施するための最良の形態】
【００１１】
本願発明を実施するための最良の形態（以下、実施の形態という）としては、本発明に基づいた記憶媒体制御装置の構成を携帯型コンテンツプレーヤに適用した例を挙げることとする。
【００１２】
図１は、本実施の形態の携帯型コンテンツプレーヤ１の構成例を示すブロック図である。
この図において、ＣＰＵ(Central Processing Unit)１１は、後述する記憶部１４（あるいはＲＯＭ１２であってもよい）に記憶されたプログラムをＲＡＭ１３に展開して実行することで、各種所要の制御処理を実現する。
また、ＣＰＵ１１が制御処理を実行するのに伴っては、バス２３を経由して他の部位との通信を行うことができるようにされるが、この場合には、上記ＣＰＵ１１のほかに、ＲＯＭ１２、ＲＡＭ１３、メモリインターフェイス１５、ＤＭＡコントローラ１６、表示処理部１９、操作部２１、オーディオ再生処理部１７、及び外部データインターフェイス２２を、バス２３により接続した構成を示している。
【００１３】
ＲＯＭ１２には、例えば起動時にＣＰＵ１１が実行する起動用プログラムなどのほか、工場出荷時などに書き込みが行われた各種の設定データなどが記憶される。
ＲＡＭ１３は、ＣＰＵに対して主記憶装置となるもので、上記のようにしてＣＰＵ１１が実行すべきプログラムのデータが展開されるとともに、ＣＰＵ１１がプログラムに従って実行する各種演算のための作業領域として使用される。
【００１４】
記憶部１４は、主として、携帯型コンテンツプレーヤ１により再生出力するコンテンツのデータ（コンテンツデータ）を例えばファイル単位で管理するようにして記憶するための部位である。ここでいうコンテンツデータとは、例えば楽曲などとしてのオーディオデータや、映像などとしてのビデオデータなどとされる。現状において、このような携帯型コンテンツプレーヤ１に記憶されるコンテンツデータとしてのオーディオファイルやビデオデータファイルは、所定方式により圧縮符号化されることが一般的であるが、本実施の形態としては、コンテンツ記憶部１３に記憶されるコンテンツデータの種類、ファイル形式については特に限定されるものではない。
また、本実施の形態では、この記憶部１４に対して、ＣＰＵ１１が実行するプログラムのデータのほかに、例えば記憶部１４に記憶されるファイル管理などのためにＣＰＵ１１が利用する各種のシステムデータなども記憶させることとしている。
【００１５】
そして、本実施の形態においては、この記憶部１４が備える記憶媒体種別としてフラッシュメモリ(例えばNAND型)を採用することとしている。フラッシュメモリは、周知のようにして、半導体による不揮発性の記憶素子の１つである。また、フラッシュメモリの容量としては、このような携帯型コンテンツプレーヤ１の用途であれば、現状では、数ＧＢ程度のものが広く採用されている。
【００１６】
また、この場合においては、記憶部１４に対するデータの書き込み／読み出しは、メモリインターフェイス１５を介して行われるようになっている。この場合のメモリインターフェイス１５は、例えばフラッシュメモリのドライバ層に対応した機能を実現するためのハードウェア及びソフトウェアにより構成される部位となる。また、メモリインターフェイス１５においては、ＥＣＣ演算部１５ａを備えるが、このＥＣＣ演算部１５ａの動作については後述する。
【００１７】
なお、この場合の記憶部１４としてのフラッシュメモリは、装脱不可の状態で携帯型コンテンツプレーヤ１の本体に内蔵される形態を採ることとしている。しかしながら、例えば記憶部１４としてのフラッシュメモリとしての記憶媒体装置をリムーバブル形式としたうえで、携帯型コンテンツプレーヤ１の本体側に対応のドライブを備えるような構成であってもよい。このような構成の場合には、プログラムなどのデータは、携帯型コンテンツプレーヤ１内のＲＯＭや不揮発性メモリ、あるいは他の内蔵記憶媒体に記憶させることになる。
【００１８】
また、本実施の形態では、ＤＭＡコントローラ１６を備える。本実施の形態では、このＤＭＡコントローラ１６のデータ書き込み／読み出し制御により、少なくともＲＡＭ１３から記憶部１４へのデータ書き込みと、記憶部１４のデータをＲＡＭ１３に保持させるデータ読み出しとについて、ＤＭＡ転送により行うことが可能とされる。
また、本実施の形態では、ＤＭＡコントローラ１６において、ＤＭＡ転送を予め定めた所定の手順により実行するためのシーケンサ１６ａを備える。この場合のシーケンサ１６ａは、例えば論理回路等の組み合わせなどによるハードウェアとして構成される。
【００１９】
オーディオ再生処理部１７は、ＣＰＵ１１の制御に応じて、記憶部１４から読み出されたオーディオファイル形式のコンテンツデータを入力し、所要の再生信号処理を実行するようにされる。例えばオーディオ再生処理部１７は、オーディオデータの圧縮符号化に対する復調処理などをはじめとする各種所要の信号処理を施したうえで、最終的に、ヘッドフォン駆動のためのオーディオ信号として、ヘッドフォン端子１８に対して出力するようにされる。
【００２０】
また、表示部２０には、携帯型コンテンツプレーヤ１の動作に応じたユーザインターフェイスのための表示が行われる。また。例えばビデオデータファイルとしてのコンテンツデータを再生して得られる画像を表示出力させることも可能とされる。このために、ＣＰＵ１１は、表示処理部１９により所要の表示のための信号処理を実行させる。例えばユーザインターフェイスのための画像を表示させるのであれば、表示させるべきユーザインターフェイス画像に対応した表示用画像データを生成させる。また、ビデオデータファイルとしてのコンテンツの画像を表示出力させるのであれば、ＣＰＵ１１は、記憶部１４から読み出したビデオデータファイルを表示処理部１９に入力させ、ここで、圧縮符号化に対する復調処理のほか所要のビデオ信号処理を実行させて、表示用画像データを生成させる。そして、表示部２０において、このようにして生成された表示用画像データを利用した表示駆動のための動作が実行されることで、表示部２０の表示画面にて画像が表示される。
なお、表示部２０として実際に採用されるべき表示デバイスについては特に限定されるべきものではないが、現状であれば、液晶ディスプレイや有機ＥＬ(Electro Luminescence)ディスプレイなどを採用することができる。
【００２１】
操作部２１は、携帯型コンテンツプレーヤ１の本体に対して実際に設けられる操作子と、これらの操作子に対して行われた操作に応じて操作指示信号を生成してＣＰＵ１１に出力する部位とを一括して示したものとなる。ＣＰＵ１１は、操作部２１から出力される操作指示信号に応じて所要の処理を実行する。
【００２２】
また、本実施の形態の携帯型コンテンツプレーヤ１にあって、記憶部１４に記憶させるべきコンテンツデータを取得するためには、外部データインターフェイス２２を利用する。
つまり、携帯型コンテンツプレーヤ１と、そのホストとなるパーソナルコンピュータなどの装置とを、外部データインターフェイス２２を経由して接続し、コンテンツデータをホストから携帯型コンテンツプレーヤ１に転送させるようにする。そして、携帯型コンテンツプレーヤ１では、例えばＣＰＵ１１の制御に従って、転送されてくるコンテンツデータを受信取得し、この取得したコンテンツデータを、例えば一時的にＲＡＭ１３にて保持した後に、記憶部１４に書き込むようにして記憶させる。
【００２３】
この場合の外部データインターフェイス２２は、所定のデータ通信規格に応じたケーブル接続を介して、あるいは無線経由により外部デバイスと通信を行うためのハードウェア及びソフトウェアを備えて構成される部位とされる。この外部データインターフェイス２０が対応する通信規格としては、特に限定されるべきではないが、現状であれば、例えばＩＥＥＥ１３９４、ＵＳＢ、Ethernet（登録商標）、Bluetooth（登録商標）、IEEE802.11a/b/g/n等を採用することが考えられる。
【００２４】
続いて、図２及び図３を参照して記憶部１４として採用されるフラッシュメモリの物理フォーマットについて説明する。
フラッシュメモリの記憶領域全体は、例えば図２（ａ）に示すようにして、所定の固定長によるブロック（第１単位領域）０〜Ｎにより分割される。周知のようにして、フラッシュメモリは、データの上書きはできないことになっており、データの書き込みは、消去済みの領域に対して行われる。そして、このブロックは、データを消去するときの最小単位となる。
【００２５】
そして、図２（ａ）に示したブロックの各々は、図２（ｂ）に示すようにして、所定数（ｍ個）のページ０〜ｍにより分割される。
１ページは固定長であり、図２（ｃ）に示すように、所定サイズのデータ部と冗長部より成る。データ部はデータを格納する領域であり、冗長部は、ＥＣＣ(Error Correcting Code)及び各種の所要の管理情報項目などが格納される領域となる。
データ書き込みについては、ページが最小単位となる。つまり、フラッシュメモリは、データの消去はブロック単位で行われ、データの書き込みはページ単位で行われるべきものとなっており、データ消去単位とデータ書込単位のデータサイズが相互に異なるものとなっている。
【００２６】
上記図２（ｃ）に示したページ構造についての、より具体的な例を、図３に示す。
先ず図３（ａ）に示されるページ構造としては、２０４８バイトのデータ部と、これに続く６４バイトの冗長部から成るものとされている。そして、６４バイトの冗長部については、さらに、２４バイトの予備領域と、これに続く４０バイトのＥＣＣにより形成されるものとなっている。このＥＣＣにより、上記２０４８バイトのデータ部と冗長部における２４バイトの予備領域のデータについてのエラー訂正処理を行う。
【００２７】
また、ページ構造としては、近年、図３（ｂ）に示すフォーマットが採用されるようになってきている。
この図３（ｂ）おいては、ページ全体のサイズについては、２１１２バイトで図３（ａ）と同じとしたものを示しているが、計２０４８バイトのデータ部を各５１２バイトの第１〜第４データ部に４分割し、計６４バイトの冗長部についても各１６バイトの第１〜第４冗長部に４分割し、
第１データ部、第１冗長部、第２データ部、第２冗長部、第３データ部、第３冗長部、第４データ部、第４冗長部の順で配列させる。この配列では、分割されたデータ部とこれに続く冗長部を１つの単位としてみるようにされ、ここでは、これをＥＣＣユニットという。そして、図３（ｂ）の場合には、第１データ部と第１冗長部から成る第１ＥＣＣユニット、第２データ部と第２冗長部から成る第２ＥＣＣユニット、第３データ部と第３冗長部から成る第３ＥＣＣユニット、第４データ部と第４冗長部から成る第４ＥＣＣユニットの連結により１ページが形成されるものとなる。
【００２８】
この場合、第１〜第４冗長部の各々は、図示するようにして、６バイトの予備領域と１０バイトのＥＣＣの領域とにより形成されることになる。そして、この１０バイトのＥＣＣにより、自身を含むＥＣＣユニットにおける先頭から直前までのデータについてのエラー訂正を行う。つまり、例えば第１冗長部のＥＣＣによっては、第１データ部及び第１冗長部の予備領域についてのエラー訂正を行う。
【００２９】
フラッシュメモリの物理フォーマットとして以前から規定される基本的なページ構造は図３（ａ）に示したものとなるのであるが、現状においては、図３（ｂ）のフォーマットが採用されることが多くなってきている。これは下記のような理由による。
フラッシュメモリは例えばビット単価の低下などを背景として記憶容量が増加している傾向にある。例えば製品として市場に現れた当初は数十メガバイト（ＭＢ）程度とされていたものが、現状では、例えば数ギガバイト（ＧＢ）クラスにまで記憶容量が増加している。このようにして記憶容量が増加するのにかかわらず、例えば当初の記憶容量に応じて設定されたブロック容量、あるいはページ容量を維持したとすれば、フラッシュメモリの容量全体におけるブロック数、ページ数も著しく増加することになる。このような膨大な数のブロック、ページを管理しようとした場合、このための管理情報の容量も増加することになるが、このような管理情報も同じフラッシュメモリに記憶保持させる場合がある。従って、管理情報のサイズの肥大化によりフラッシュメモリにおけるユーザデータの記憶可能容量を圧迫するという不都合を生じることになる。また、管理情報を処理する際の処理速度の低下も問題になる場合がある。
そこで、フラッシュメモリの記憶容量を増加させるのに応じては、ブロック、ページの容量も相応に増加させるフォーマットとすることが行われるようになり、これが一般化している。このようなフォーマットとすれば、ブロック、ページの総数を適正な範囲で抑えることが可能となり、上記したような問題を回避できる。
具体例として、図３（ａ）（ｂ）には、ページサイズについて２１１２バイト（＝２０４８＋６４）とした場合が示されているが、この程度のページサイズは、実際のフラッシュメモリの全体容量が２ＧＢ〜４ＧＢ程度のクラスのものに用いられている。
【００３０】
先に述べたように、ページについての本来の基本構造は図３（ａ）に示したものとなる。
例えば図３（ａ）のページ構造のもとで、上記のようにしてページサイズを増加させていったとすると、必然的に１ページ内におけるデータ部のサイズも増加していくことになるが、このことをＥＣＣによるエラー訂正処理の観点から見ると、データ部のサイズの増加は、即ち、エラー訂正対象となる語長の増加となる。
エラー訂正に関する一般的なこととして、エラー訂正の対象となる単位データサイズができるだけ小さいほど、エラー訂正の信頼性は高くなる。このことからすると、図３（ａ）のページ構造のフォーマットによりページサイズを増加させていくことは、エラー訂正の信頼性の低下を招く可能性がある、ということになる。
そこで、例えば図３（ｂ）に示すようにして、１ページ内に占めるデータ部を所定数（この場合は４つ）に分割し、これらの分割したデータ部ごとの直後に対して、その分割されたデータ部(及び予備領域)のエラー訂正を行うだけのＥＣＣを格納した冗長部を連結する構造とすれば、ページサイズの増加にかかわらずエラー訂正の語長を適正範囲内に抑えることが可能になる。つまり、図３（ｂ）に示すページ構造は、主として、ページサイズの増加に起因するエラー訂正能力の低下を考慮して採用されるものである。
【００３１】
先に図１により説明した携帯型コンテンツプレーヤ１の構成では、ＤＭＡコントローラ１６を備えることで、ＤＭＡ（ダイレクトメモリアクセス：Direct Memory Access）方式によるデータ転送(ＤＭＡ転送)を併用してデータ書き込み／読み出しを行うことが可能とされている。
そこで、本実施の形態の携帯型コンテンツプレーヤ１において、フラッシュメモリである記憶部１４に対するデータ書き込み／読み出しのためのデータ転送について、ＤＭＡ転送を利用することとした場合について考察していくこととする。
【００３２】
先に説明したように、フラッシュメモリのフォーマットにあって、ページ構造としては、図３（ａ）に示すように、１ページ内に１つのデータ部と１つの冗長部を格納したものと、図３（ｂ）に示すようにして、データ部と冗長部を所定数に分割してＥＣＣユニット単位を連結させた構造とするものとがある。そして、現状と比較してフラッシュメモリの容量が少なかった以前においては、例えば図３（ａ）に示す構造が一般的とされていたものである。従って、フラッシュメモリの基本的なページ構造としては、図３（ａ）に示すものであるとの考え方をとることができる。
【００３３】
そこで、先ず、図３（ａ）に示す構造のページ単位を前提として、ＤＭＡ転送を用いたデータ転送を行うこととした場合を考えてみると、順当なものの１つとして、図４（ａ）に示される転送手順を挙げることができる。なお、以降においては、記憶部１４としての記憶媒体を、より一般化した概念により記載することを目的として、単にフラッシュメモリともいう場合がある。
【００３４】
図４（ａ）には、図３（ａ）に示した例と同じ構造の１ページ分のデータを対象として転送する場合の手順が示されている。
先ず、ＣＰＵ１１は、フラッシュメモリドライバ層よりも上位層からのデータ書込要求に応じて、図４（ａ）に示すように、ＤＭＡコントローラ１６に対してＤＭＡ転送の要求を行うようにされる。このとき、ＣＰＵ１１は、ＤＭＡコントローラ１６に対して、図７（ａ）に示すSource Address、Destination Address、Transfer Sizeのパラメータを指定するようにされる。
【００３５】
Source Addressは、転送元における転送対象のデータのアドレスを指定する。Destination Addressは、転送先において転送対象のデータを格納すべきアドレスを指定する。Transfer Sizeは、ＤＭＡ転送の要求に応じて転送すべきデータサイズを指定する。つまり、ここで例に挙げているフラッシュメモリに対するデータ書き込みの場合であれば、Source Addressにより、ＲＡＭ１３上の書き込み用データを保持しているアドレスが指定され、Destination Addressにより、フラッシュメモリにおけるデータを書き込むべきアドレスが指定され、Transfer Sizeにより、フラッシュメモリに転送して書き込むべきデータサイズが示される。
【００３６】
ＤＭＡ転送要求を受けたＤＭＡコントローラ１６は、Source Addressにより指定された転送元（ＲＡＭ１３）のアドレスにアクセスしてデータの読み出しを行い、この読み出したデータを、バス２３を少なくとも転送路として、指定されたDestination Addressが示す転送先（フラッシュメモリ）のアドレスに転送して書き込んでいくようにされる。そして、このようなデータ転送をTransfer Sizeが指定するサイズ分行うようにされる。つまり、ＤＭＡ転送が行われることになる。
なお、図１においては、フラッシュメモリである記憶部１４に対してメモリインターフェイス１５が備えられた形態が示されている。従って、図１との対応では、ＲＡＭ１２から読み出されたデータは、メモリインターフェイス１５に対して、Destination Addressの指定と共に転送され、メモリインターフェイス１５がフラッシュメモリ（記憶部１４）としての半導体記憶素子に対して、指定のDestination Addressに対する書き込みを行うようにされる。
【００３７】
この図４（ａ）の場合においてTransfer Sizeが指定するサイズは、例えばデータ部に対応した２０４８バイトとされる。従って、上記したＤＭＡ転送は、データ部に格納した２０４８バイトのデータの転送を完了させた時点で終了することになる。ここまでのＤＭＡ転送が終了したとされると、例えばＤＭＡコントローラ１６は、バス２３を解放してＣＰＵ１１に明け渡すようにされる。これに応じて、ＣＰＵ１１は、ＰＩＯ転送により、残る６４バイトの冗長部のデータを、転送先のフラッシュメモリに転送して、しかるべきアドレスに書き込むようにされる。
【００３８】
ＰＩＯ（Programmed I/O）転送は、周知のようにして、装置、メモリ（この場合にはフラッシュメモリとＲＡＭ）間のデータ転送をＣＰＵの管理、制御により行う方式である。この場合において、ページデータについては、データ部のデータをＤＭＡにより転送するのに対して、冗長部のデータについては、ＰＩＯにより転送するようにしているのは次のような理由による。
上記したように、ＤＭＡ転送としては、パラメータとしてSource Address、Destination Address、Transfer Sizeを指定して転送元から転送先へのメモリ−デバイス間転送を行う。例えば、ＲＡＭからフラッシュメモリへの書き込みであれば、ＤＭＡコントローラにより、ＲＡＭに保持されている書き込み用データのアドレスからTransfer Sizeが示すサイズ分のデータを読み出させ、この読み出されたTransfer Size分のデータを、フラッシュメモリにおけるDestination Addressが示すアドレスから書き込んでいくようにする。この場合において、Source Addressは、ＲＡＭ上のアドレスを指定することになるので、例えば、データ部のデータに続くアドレスに対して冗長部のデータを保持させておくようにして、その分、Transfer Sizeについて冗長部のデータ分加算した値を設定すれば、データ部に続けて冗長部のデータもＤＭＡ転送させることが可能になる、ということにはなる。
【００３９】
しかしながら、実際における冗長部の構造としては、図３（ａ）の下段にも示したように、予備領域とＥＣＣから成る。つまり、ＥＣＣを含む。
先の説明のようにして、ＥＣＣは、ページ内のデータ部と予備領域のデータを対象としてエラー訂正を行うためのものである。従って、ＥＣＣとして有効な値は、データ部のデータを転送し、さらに予備領域のデータを転送している過程において、例えば、図１のメモリインターフェイス１５におけるＥＣＣ演算部１５ａが、その転送過程のデータを取り込んで演算を行うことにより生成されるものとなる。つまり、ＥＣＣの内容は、データ部と予備領域のデータの転送後に確定される。このことは、ＥＣＣは、ＤＭＡ転送開始時には存在していないということであり、従って、ＤＭＡ転送のためのパラメータに、ＥＣＣ分のデータを反映させることはできない、ということになる。このことは、順当に考えれば、少なくともＥＣＣのデータの転送については、ＣＰＵ側の制御により転送することが必要になる、ということでもある。
そこで、１ページ分のデータ転送にあたり、ＤＭＡ転送としては、既にＲＡＭ上において保持されている状態が確定されているデータ部のデータのみとして、ＥＣＣを含む冗長部についてはＰＩＯ転送に切り換えることとしているものである。
なお、１つの冗長部について、予備領域のデータはＤＭＡにより転送し、ＥＣＣのデータのみをＰＩＯにより転送する、というようにして転送方式を振り分けた手順とすることも考えられるが、ここでは、例えば冗長部としての単位を同じＰＩＯ転送とすることのほうが効率的であるとの考え方に基づき、予備領域とＥＣＣから成る冗長部全体をＰＩＯ転送することとしているものである。
【００４０】
冗長部のデータをＰＩＯ転送するのにあたっては、例えば先ず、ＣＰＵ１１がＲＡＭに保持されている予備領域のデータにアクセスして読み出しを行い、これをメモリインターフェイス１５を介してフラッシュメモリに書き込むようにされる。この予備領域のデータの書き込みが完了した段階では、ＥＣＣ演算回路１５ａによる、直前に転送されたデータ部のデータと、この予備領域のデータを利用したＥＣＣ演算結果が得られていることになる。つまり、ＥＣＣ演算回路１５ａは、１ページ分に対応する有効なＥＣＣの生成を完了して、例えば自身のレジスタなどに保持している状態にある。
そこで、ＣＰＵ１１は、ＥＣＣ演算部１５ａに保持されるＥＣＣのデータを、先にフラッシュメモリに書き込んだ予備領域のデータに続けて書き込むための制御を実行するようにされる。ここまでの手順を実行してＰＩＯ転送が完了する。
【００４１】
このようにして、図４（ａ）に示す例では、１ページ分のデータを転送するのにあたっては、先ず、ＣＰＵからのＤＭＡ転送要求に応じてＤＭＡコントローラがデータ部のデータを転送し、データ部のデータの転送を完了すると、ＣＰＵのＰＩＯ転送により冗長部のデータとして予備領域のデータと、ＥＣＣのデータを転送させるようにされている。そして、このような転送手順を、ページ単位のデータを転送すべきタイミングごとに繰り返し実行することになる。
【００４２】
次いで、図３（ｂ）に示したページ構造を対象として、データ転送を行う場合を考えてみる。
図３（ｂ）のページ構造は、１ページ内において、図３（ａ）に示される各１つのデータ部、冗長部からなる単位（ＥＣＣユニット）が連結されたものであるとしてみることができる。従って、上記図４（ａ）により説明したデータ転送手順を、ＥＣＣユニットごとに実行していくようにすることで、図３（ｂ）に示すページ構造に対して適用することは可能であり、また、順当であるということがいえる。
上記のようにして、図４（ａ）のデータ転送手順を、図３（ｂ）に示すページ構造に対して適用したとする１ページデータあたりの転送手順は、図４（ｂ）に示される。
先ず、図４（ｂ）に示すようにして、ＣＰＵが１回目のＤＭＡ転送要求を発行して、第１ＥＣＣユニットにおける第１データ部のデータをＤＭＡ転送させ、続けて、第１冗長部のデータをＰＩＯ転送することになる。このようにして、第１ＥＣＣユニットのデータ転送を完了させたのに応じて、ＣＰＵ１１は、２回目のＤＭＡ転送要求を発行して、第２ＥＣＣユニットの第２データ部のデータのＤＭＡ転送と、これに続く第２冗長部のデータのＰＩＯ転送を行う。以降同様にして、順次、３回目のＤＭＡ転送要求の発行に応じた、第３ＥＣＣユニットの第３データ部のデータのＤＭＡ転送と第３冗長部のデータのＰＩＯ転送、及び４回目のＤＭＡ転送要求の発行に応じた、第４ＥＣＣユニットの第４データ部のデータのＤＭＡ転送と第４冗長部のデータのＰＩＯ転送を行う。
【００４３】
ここで、上記した図４（ａ）と図４（ｂ）のページデータ転送手順について比較してみると、ＤＭＡ転送とＰＩＯ転送の実行回数については、図４（ａ）の場合がそれぞれ１回のみであるのに対して、図４（ｂ）の場合ではページ全体がＥＣＣユニット単位により４分割されていることに応じて４回となっている。
このことをＣＰＵが実行する処理としてみると、１ページあたりのデータ転送につき、図４（ａ）の場合には、各１回のＤＭＡ転送要求とＰＩＯ転送を行っているのに対して、図４（ｂ）の場合には、各４回のＤＭＡ転送とＰＩＯ転送とを行っているということになる。
一般的なこととして、ＤＭＡ転送要求とＰＩＯ転送は、それがＣＰＵによる処理であることにより、相応に長い時間を要する。従って、図４（ａ）と図４（ｂ）の場合とについての総合的な処理時間を比較した場合には、ＣＰＵが実行するＤＭＡ転送要求とＰＩＯ転送の実行回数が増えている分、図４（ｂ）のほうが長時間化する。
即ち、フラッシュメモリの大容量化傾向を背景として、複数のＥＣＣユニットの連結から成るページ構造が一般化しつつあるが、図３（ａ）のページ構造を前提として順当とされるページデータ転送の手順（図４（ａ））を、図３（ｂ）のようなページ構造にそのまま適用して図４（ｂ）のようにしてデータ転送を行うこととすると、ＥＣＣユニット数の増加に応じてデータ転送速度が遅くなっていく、という不都合を抱えることになる。また、単位転送データ量あたりのＣＰＵ実行回数が増えることで、ＣＰＵの処理負荷も重くなる。
このような不都合は、例えばさらにフラッシュメモリの大容量化が推し進められていくのに伴って、より顕著なものとなる可能性がある。フラッシュメモリの容量が大きくなれば、ページサイズも大きくなっていくわけであり、その際に、ページ内のＥＣＣユニットの分割数も増加する可能性があるからである。
【００４４】
そこで、本実施の形態としては、複数のＥＣＣユニットにより形成される構造のページのデータを転送するのにあたり、ＣＰＵが実行する処理回数、負荷を軽減して、データ転送速度の向上が図られるようにすることを考慮して、以降説明していく構成を採るようにされる。
【００４５】
図５、図６は、携帯型コンテンツプレーヤ１において行われる、本実施の形態としてのページデータ転送の手順を模式的に示している。図５は、ＲＡＭ１３から記憶部１４（フラッシュメモリ）に対してデータ書き込みを行う際のページデータ転送手順を示し、図６は、記憶部１４（フラッシュメモリ）から読み出したデータをＲＡＭ１３に対して保持させるためのページデータ転送手順を示している。また、何れの図においても、書き込み・読み出しの対象となるページデータは、図４（ｂ）に示されるように、４つのＥＣＣユニットにより分割されたものを対象とする。
【００４６】
先ず、図５から説明する。
図５には、ＲＡＭ１３において、書き込み用データとして、１ページ分のデータ（ページデータ）が保持されている状態を示している。本実施の形態にあっては、例えばＲＡＭ１３上において保持されるページデータは、例えば図４（ｂ）に示す構造により論理的に結合されているのではなく、第１データ部から第４データ部までのデータ部分が配列されるデータ部保持領域と、第１冗長部から第４冗長部までに対応するデータが配列される冗長部保持領域とが、それぞれ異なる論理領域ごとにおいて保持されているようなイメージとなる。
【００４７】
そして、このようにしてＲＡＭ１３上でページデータが保持されている状態の下で、このページデータを指定してのデータ書込要求が行われたとする。すると、以降においては、ＤＭＡコントローラ１６により、図において示される１−１、１−２、１−３、２−１、２−２・・・３−３、４−１、４−２、４−３の番号で示される手順に従ったＤＭＡによるデータ転送を実行するようにされる。
【００４８】
先ず、ＤＭＡコントローラ１６は、手順１−１として示すように、ＲＡＭ１３のデータ部保持領域の先頭から、データ転送サイズを示す第１データ部のデータの読み出しを行い、これをメモリインターフェイス１５のＥＣＣ演算部１５ａを経由させるようなイメージでＤＭＡ転送を行って、データ書き込み用のアドレスに従ってフラッシュメモリに対する書き込みを行うようにされる。
【００４９】
続いてＤＭＡコントローラ１６は、手順１−２により、第１冗長部としてのデータを読み出し、同じく、ＥＣＣ演算部１５ａを経由させるようなイメージでＤＭＡ転送を行う。そして、この場合のフラッシュメモリへの書き込みは、データ書き込み用のアドレスに対して先の手順１−１により書き込まれた第１データ部のデータに続けて行うようにされる。つまり、フラッシュメモリへのＤＭＡ転送は、フラッシュメモリにおいて指定される１つの固定のアドレスに対してＦＩＦＯ(First In First Out)で転送を行っていくものとなる。
また、例えば図４（ｂ）に示される構造であれば、１つの冗長部は、６バイトの予備領域と１０バイトのＥＣＣから成るものとされているが、これに対応する手順１−２としては、６バイトの予備領域としてのデータと、これに続くＥＣＣ用の１０バイト分の領域を確保するための仮データを転送するようなものとなる。
【００５０】
手順１−１、手順１−２が完了した段階では、ＥＣＣ演算部１５ａにより、第１データ部のデータと第１冗長部における予備領域のデータを利用したＥＣＣ演算処理も完了し、第１データ部のデータと第１冗長部における予備領域のデータのための１０バイトのＥＣＣが生成保持されているものとされる。そこで、次の手順１−３としては、ＥＣＣ演算部１５ａに保持されているこの１０バイト分のＥＣＣのデータを、先の手順１−２により確保されている、第１冗長部におけるＥＣＣの領域に対して書き込むようにされる。このためには、例えばＤＭＡコントローラ１６は、データのポインタを、ＲＡＭからＥＣＣ演算部１５ａのレジスタに切り換えるようにした上で、このレジスタのデータを、これまでの書き込みデータに続けてＦＩＦＯで書き込むようにされる。つまり、本実施の形態では、ＥＣＣのデータは、ＰＩＯ転送ではなく、ＤＭＡコントローラ１６の制御によるＤＭＡ転送により書き込みが行われる。
そして、ここまでの手順１−１、１−２、１−３を完了した段階で、ページデータにおける第１ＥＣＣユニット分のデータの書き込みが完了する。
【００５１】
続いてＤＭＡコントローラ１６は、上記手順１−１、１−２、１−３に準じて、手順２−１、２−２、２−３を順次実行することにより、先ず、ＲＡＭ１３のデータ部保持領域における第２データ部のデータと、冗長情報格納領域における第２冗長部のデータと、ＥＣＣ演算部１５ａのレジスタに保持されたＥＣＣのデータを順次、ＦＩＦＯによりＤＭＡ転送して、フラッシュメモリのデータ書き込み用のアドレスに対して、これまの書き込みデータに続けて書き込む制御を実行する。これにより、フラッシュメモリにおいては、ページデータにおける第２ＥＣＣユニットまでのデータの書き込みが完了する。
これに続けて、ＤＭＡコントローラは、手順３−１、３−２、３−３と、これに続く手順４−１、４−２、４−３を順次実行することにより、上記と同様にして、ＤＭＡ転送により、フラッシュメモリのアドレスDes_adに対して、第２ＥＣＣユニットに続けて、第３ＥＣＣユニット（第３データ部、第３冗長部）、第４ＥＣＣユニット（第４データ部、第４冗長部）としてのデータを順次ＦＩＦＯにより転送して書き込むようにされる。ここまでの手順を完了すると、フラッシュメモリにおけるデータ書き込み用アドレスが示す位置に対して、例えば図４（ｂ）に示したとおりのページ構造により配列されたページデータが完全に書き込まれた状態が得られることになる。
【００５２】
続いては、図６により、フラッシュメモリから読み出したデータをＲＡＭ１３に保持させる、データ読み出しの手順について説明する。
フラッシュメモリにて記憶されるページデータは、上記図５にても説明しているように、図４（ｂ）に示したとおりのページ構造により配列された状態となっている。そして、例えばＣＰＵからのデータ読み出し要求が行われたとすると、以降においては、ＤＭＡコントローラ１６により、図における１−１、１−２、２−１、２−２、３−１、３−２、４−１、４−２の手順に従ったＤＭＡ転送を実行するようにされる。
【００５３】
先ず、ＤＭＡコントローラ１６は、手順１−１として示すように、フラッシュメモリ（記憶部１４）における指定のアドレスにアクセスすることで、読み出し対象のページデータにおける先頭の第１データ部のデータの読み出しを行うようにされる。そして、この読み出したデータをＲＡＭ１３に転送し、指定された書き込みアドレスに従って書き込みを行うようにされる。
なお、上記手順１−１を含み、以降において説明する各手順によるフラッシュメモリからのページデータ読み出しは、図６の書き込みの場合と対称に、フラッシュメモリにおいて固定となるアドレスからＦＩＦＯにより行うべきものとなる。
【００５４】
続いてＤＭＡコントローラ１６は、手順１−２により、第１冗長部としてのデータを読み出し、これについては、ＥＣＣ演算部１５ａを経由させるようにしてＤＭＡ転送を行う。
ここで、データ部のデータについては、ＥＣＣ演算部１５ａを経由させていないのに対して、冗長部のデータをＥＣＣ演算部１５ａに経由させることとして図示しているのは、ＥＣＣ演算部１５ａにより、エラー訂正処理のために、冗長部に格納されるＥＣＣのデータを抽出して取得するようにしていることを示しているものである。
そして、この手順１−２による冗長部のデータの書き込みは、ＲＡＭ１３への書き込みは、手順１−１により書き込まれた第１データ部のデータに続けて書き込むのではなく、データ部のデータとは論理的に離散したＲＡＭ１３上の領域に対する書き込みとなる。また、ＲＡＭ１３において保持される１冗長部あたりのデータとしては、上記のようにしてＥＣＣ演算部１５ａによりＥＣＣが抜き出されていることに応じて、例えば６バイトの予備領域のデータのみとされてもよい。しかしながら、ここでは、書き込み時と対応させて、予備領域のデータに続けてＥＣＣ用の１０バイトの領域も確保した状態で保持すべきものとする。
【００５５】
続けてＤＭＡコントローラ１６は、手順２−１により、フラッシュメモリに記憶される読み出し対象のページデータにおける第２データ部のデータの読み出しを行ってＲＡＭ１３に転送し、先に保持させた第１データ部のデータに続くアドレスに書き込むようにされる。続いて、手順２−２により、読み出し対象のページデータにおける第２データ部に続けて第２冗長部のデータを読み出して、ＥＣＣ演算部１５ａによりＥＣＣを抽出取得させたうえで、ＲＡＭ１３に対して転送するようにされる。
【００５６】
以降、同様にして、手順３−１，手順３−２、手順４−１、手順４−２により、フラッシュメモリから第３データ部、第３冗長部の順でデータの読み出しを行ってＲＡＭ１３への書き込みを行うようにされる。ＲＡＭ１３への書き込みにあたって、第３データ部のデータについては、第２データ部のデータに続くアドレスに書き込みを行い、第４データ部のデータについては、第３データ部のデータに続くアドレスに書き込みを行う。また、第３冗長部のデータについては、第２冗長部のデータに続くアドレスに書き込みを行い、第４冗長部のデータについては、第３冗長部のデータに続くアドレスに書き込みを行うようにされる。
【００５７】
このようにして１ページ分のデータ読み出しとしてのデータ転送が完了した段階では、図のＲＡＭ１３として示すようにして、第１〜第４データ部までのデータから成るデータ部保持領域と、第１〜第４冗長部までのデータから成る冗長部保持領域とが形成されることになる。また、これらデータ部保持領域のデータと冗長部保持領域（予備領域）のデータについてのエラー訂正は、所定のタイミングで例えばＥＣＣ演算部１５ａにより行われるべきものとなるのであるが、この実行タイミングについては、本実施の形態としては特に限定しない。例えば、上記手順１−１〜４−２までの手順によりＤＭＡ転送を行った後において、ＲＡＭ１３に保持されているデータ部保持領域の第１〜第４データ部までの各データと、冗長部保持領域の第１冗長部〜第４冗長部までの各データとを利用して行うようにしてもよいし、データ部のデータと冗長部のデータをＲＡＭ１３に書き込む前の段階で、ＥＣＣ演算部１５ａが転送過程のデータを対象にエラー訂正処理を実行するように構成することも考えられる。
【００５８】
続いて、上記図５、図６により説明した本実施の形態のページデータ転送に対応したＤＭＡコントローラの構成に関して説明していくことにする。
まず、一般的なこととして、ＤＭＡコントローラがＤＭＡ転送を行うのにあたっては、先にも図７（ａ）を参照して説明したように、パラメータとして、転送元のアドレスとなるSource Addressと、転送先のアドレスとなるDestination Addressと、転送データサイズを示すTransfer Sizeが必要となる。これにより、ＤＭＡコントローラは、転送元のSource Addressから転送データを読み出して、転送先のDestination Addressに対してデータを転送して書き込むという処理を、Transfer Sizeが指定するデータサイズ分実行するようにされる。
【００５９】
これに対して、本実施の形態としては、ＤＭＡコントローラに与えるべきパラメータとして、図７（ｂ）に示すようにして、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：ＲＡＭからフラッシュメモリへの書き込み（図５）にあたっては、転送元であるＲＡＭにおけるデータ部保持領域のアドレスを示す。フラッシュメモリからＲＡＭへの読み出し（図６）にあたっては、転送元であるフラッシュメモリにおいてページデータが格納されるアドレスを示す。
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：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 Transfer Size（ExTrf_size）、及びLoop count（Loop_count）（図７（ｂ）からExtra Destination Address(ExDes_ad)を省略した残り全てのパラメータ）が指定される。そこで、ステップＳ１０２によっては、これらのパラメータをシーケンサ１６ａにセットするようにされる。
【００６４】
ステップＳ１０２に続くステップＳ１０３以降の手順は、シーケンサ１６ａが実行するものとしてみることができる。
先ず、ステップＳ１０３では、セットされたSrc_adにより示されるＲＡＭ１３のアドレスにアクセスしてデータ読み出しを実行する。最初にＣＰＵ１１から指定されるSrc_adは、図５により模式的に示しているように、ＲＡＭ１３におけるデータ保持領域の先頭のアドレスを示している。このために、最初のステップＳ１０３によっては、このデータ保持領域の先頭となるアドレスにアクセスしてデータの読み出しを実行することになる。
【００６５】
次のステップＳ１０４では、ステップＳ１０２によりセットされたDes_adに従ってフラッシュメモリにアクセスして、上記ステップＳ１０３により読み出したデータを書き込むようにされる。つまり、フラッシュメモリにおいてDes_adにより示されるアドレスに書き込みを行う。
【００６６】
そして、上記ステップＳ１０３及びＳ１０４による１回のＤＭＡ転送が完了したとされると、ステップＳ１０５により、今回のステップＳ１０３、Ｓ１０４の繰り返し（ループ）により書き込んだ総データサイズが、ステップＳ１０２によりセットされたTrf_size以上となることを検知するようにされる。そして、ここで上記のことが検知されないのであれば、ステップＳ１０６によりSrc_adをインクリメントしたうえで、次のステップＳ１０３、Ｓ１０４の手順を実行するようにされる。この次のステップＳ１０３、Ｓ１０４によっては、インクリメントされたSrc_adに従ってＲＡＭ１３にアクセスしてＤＭＡ転送を行うことになる。このようにして、ステップＳ１０３、Ｓ１０４の動作が繰り返される（ループされる）ことで、データ部のデータについてのＤＭＡ転送が順次実行されていくことになる。
そして、これまでのステップＳ１０３、Ｓ１０４のループによる転送データの総量がTrf_size以上になったことがステップＳ１０５として検知されたのであれば、今回のステップＳ１０３、Ｓ１０４によるＤＭＡ転送のループを終了させる。
【００６７】
このようにして、１回分のステップＳ１０３及びＳ１０４によるＤＭＡ転送のループを終了した段階では、１つ分のデータ部のデータのＤＭＡ転送が完了した状態となっている。例えば、最初のステップＳ１０３、Ｓ１０４によるループを終了した段階では、図５の手順１−１として説明した第１データ部のデータのＤＭＡ転送が完了していることになる。また、このときのSrc_adは、データ部保持領域における第２データ部のデータの先頭アドレスを示した状態になっているものとされる。
【００６８】
上記のようにして１回分のステップＳ１０３及びＳ１０４によるＤＭＡ転送のループを終了させたとすると、シーケンサ１６ａは、ステップＳ１０７〜Ｓ１１２までの手順により、直前のステップＳ１０３〜Ｓ１０５の手順により転送させたデータ部に対応する冗長部のデータについての転送を行うようにされる。
先ず、ステップＳ１０７では、ステップＳ１０２によりセットされたExSrc_adが示すＲＡＭ１３のアドレスにアクセスする。最初にＣＰＵ１１が指定するExSrc_adは、冗長部保持領域における先頭アドレスを示したものとなっているので、最初のステップＳ１０７によっては、冗長部保持領域における第１冗長部の先頭のデータを読み出すことになる。そして、このようにして読み出したデータを、フラッシュメモリにおいてDes_adが示すアドレスにＤＭＡ転送するようにして書き込む。なお、フラッシュメモリへの書き込みは、先に図５によっても説明したように、最初にＣＰＵが指定したDes_adに対して、ＦＩＦＯにより転送して順次書き込んでいくようにされる。このためにDes_adについてはインクリメントされることなく固定となる。
【００６９】
上記ステップＳ１０７、Ｓ１０８としてのループ動作については、ステップＳ１１０によりExSrc_adをインクリメントしながら、ステップ１０９により、今回のステップＳ１０７、Ｓ１０８のループ動作によって転送されたデータの総サイズが、ExTrf_size以上になることが検知されるまで継続するようにしている。
そして、ステップＳ１０９により上記のことが検知されてステップＳ１０７、Ｓ１０８のループを終了させたときには、直前のステップＳ１０３、Ｓ１０４によりＤＭＡ転送されたデータ部と同じＥＣＣユニットに格納されるべき冗長部のデータについてのＤＭＡ転送が完了しており、ExSrc_adは、次の冗長部保持領域における先頭を示していることになる。例えば１回目（最初）のステップＳ１０７、Ｓ１０８のループが終了した段階では、図５の手順１−２としての第１冗長部のデータ転送を完了した状態に対応することになる。また、ExSrc_adは、冗長部保持領域における第２冗長部（次に転送対象となる冗長部）の先頭を示すことになる。
【００７０】
ステップＳ１０９の検知を経てステップＳ１１１に至った段階では、今回のステップＳ１０３、Ｓ１０４のループによる１つのデータ部相当のデータ転送と、同じ今回のステップＳ１０７、Ｓ１０８のループによる、対応する１つの冗長部相当のデータ転送が完了している。これに応じて、先に図５により説明したように、ＥＣＣ演算部１５ａにおいては、この１ＥＣＣユニット分のＥＣＣが生成されて保持されている状態にある。
そこで、シーケンサ１６ａは、ステップＳ１１１により、ＥＣＣ演算部１５ａのレジスタに保持されているＥＣＣを取り込むようにされる。このためには、例えばデータ読み出しのためのポインタを、ＲＡＭ１３からＥＣＣ演算部１５ａのレジスタに切り換えるようにされる。そして、続くステップＳ１１２により、フラッシュメモリのDes_adにアクセスして、取り込みにより取得したＥＣＣを書き込むようにされる。なお、ステップＳ１０７、Ｓ１０８のループ動作による冗長部のデータの書き込みによっては、予備データとしての有効なデータを書き込むとともに、これに続けてＥＣＣを書き込むべき領域が確保されるようになっている。ステップＳ１１２では、この確保された領域に対してデータの書き込みを実行するようにされる。
ここまでの段階により、フラッシュメモリに対するデータの書き込みとして、１ＥＣＣユニットに対応したデータの書き込みが完了することになる。
【００７１】
そして、ステップＳ１１２に続けては、ステップＳ１１３により、現在シーケンサ１６ａが保持しているLoop_countが０となる条件を満たしているか否かを検知する。ちなみに、先に説明したように、ＣＰＵ１１が最初にセットするLoop_countの初期値は、ページ内のＥＣＣユニット数ｎに対応するものであり、図５の例との対応では、Loop_countの初期値は３（＝ｎ−１）となる。この場合、Loop_countは、図８に示す手順の進行に応じて、３、２、１、０の４値をとる。
上記ステップＳ１１３にて上記のことが検知されないのであれば、ステップＳ１１４にてLoop_countをデクリメントしたうえで、ステップＳ１０３の手順に戻るようにされる。
【００７２】
このようにして、ステップＳ１１３にてLoop_count＝０となることが検知されるまで、これまでに説明した、ステップＳ１０３〜Ｓ１１２による、１ＥＣＣユニットごとに対応したデータ部とこれに続く冗長部とのデータのＤＭＡ転送がループして（繰り返し）実行されることになる。つまり、図５との対応では、第１ＥＣＣユニットに対応するデータのＤＭＡ転送から、続けて、第２ＥＣＣユニット、第３ＥＣＣユニット、第４ＥＣＣユニットのデータのＤＭＡ転送が順次行われていくことになる。
そして、最後のＥＣＣユニット（第４ＥＣＣユニット）のデータのＤＭＡ転送までが完了すると、ステップＳ１１３にてLoop_count＝０となることが検知されることになり、１ページ分のデータについての書き込み動作を終了することになる。
【００７３】
次に、図９により、ＲＡＭ１３からフラッシュメモリ（記憶部１４）への書き込みを行う際における、ＤＭＡコントローラ１６（シーケンサ１６ａ）の動作を説明する。
ここでのＤＭＡコントローラ１６は、ステップＳ２０１により、ＣＰＵ１１が発行するデータ読出要求を待機しており、データ読出要求が発行されたとすると、ステップＳ２０２以降の手順を実行する。
【００７４】
ステップＳ２０１に対応したデータ読出要求によっては、ＣＰＵ１１からＤＭＡコントローラ１６に対して、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）（図７（ｂ）からExtra Source Address（ExSrc_ad）を省略した残り全てのパラメータ）が指定される。ステップＳ２０２によっては、これらのパラメータをシーケンサ１６ａにセットするようにされる。
【００７５】
この場合においても、ステップＳ２０２に続くステップＳ２０３以降の手順は、シーケンサ１６ａが実行するものとしてみることができる。
先ず、ステップＳ２０３、ステップＳ２０４、ステップＳ２０５、ステップＳ２０６から成るシーケンスは、フラッシュメモリからＲＡＭ１３に対してデータ部１つ分のデータをＤＭＡ転送する動作となる。
つまり、ステップＳ２０３では、設定されたSrc_adが示すフラッシュメモリのアドレスに対してアクセスして先頭から順次読み出し、その読み出し順に従って出力させる。つまり、ＦＩＦＯとしてのデータ読み出しを行う。最初にＣＰＵ１１から指定されるSrc_adは、図６に示すように、フラッシュメモリにおいて読み出し対象のページが書き込まれているアドレスを示している。従って、最初のステップＳ２０３によっては、フラッシュメモリにおけるページデータの先頭である、第１データ部先頭のデータにアクセスすることになる。そして、ステップＳ２０４により、この読み出したデータをフラッシュメモリに転送し、Des_adにより示されるアドレスに書き込むようにされる。この場合において、ＣＰＵ１１が指定するDes_adは、ＲＡＭ１３におけるデータ部保持領域の先頭アドレスを示す。従って、このルーチンでの最初のステップＳ２０３、２０４によるＤＭＡ転送では、フラッシュメモリにおけるページデータの第１データ部先頭のデータが、ＲＡＭ１３におけるデータ部保持領域の先頭アドレスに書き込まれることになる。
【００７６】
上記ステップＳ２０３及びＳ２０４による１回のＤＭＡ転送が完了したとされると、ステップＳ２０５により、これまでループさせたステップＳ２０３、Ｓ２０４の動作により書き込んだ総データサイズが、ステップＳ２０２によりセットされたTrf_size以上となる条件を満たしているか否かについて検知する。ステップＳ２０５として、このことが検知されない場合には、ステップＳ２０６により、ＲＡＭのアドレスを示すDes_adのほうをインクリメントしたうえで、次のステップＳ２０３、Ｓ２０４の手順を実行するようにされる。なお、一方のSrc_adは、フラッシュメモリにおける読み出し対象のページデータを格納したアドレスを示すことになるので、１つ分のページデータを転送する間は固定となる。
そして、ステップＳ２０５にて、上記のことが検知されたのであれば、ステップＳ２０３及びＳ２０４によるＤＭＡ転送のループを終了する。
【００７７】
なお、確認のために述べておくと、この場合のTrf_sizeも、転送すべきデータ部１つ分のデータサイズを指定している。従ってステップＳ２０５にてTrf_size以上となったことの検知が行われたのに応じてステップＳ２０３及びＳ２０４によるループを終了させた段階では、１つのデータ部に格納されるべきデータのＤＭＡ転送が完了したことになる。また、ステップＳ２０３及びＳ２０４がループされるごとにステップＳ２０６によるDes_adのインクリメントも行われる結果、Des_adは、ＲＡＭ上でのデータ部保持領域における第２データ部のデータの先頭アドレスを示す。
具体的には、例えば、最初のステップＳ２０３及びＳ２０４によるループを終了させた段階では、第１データ部のデータ転送が完了した状態となっている。つまり、図６の手順１−１を完了した段階である。また、ステップＳ２０３及びＳ２０４がループされるごとにステップＳ２０６によるDes_adのインクリメントも行われる結果、このときのDes_adは、ＲＡＭ上でのデータ部保持領域における第２データ部のデータの先頭アドレスを示すことになる。
【００７８】
続いてシーケンサ１６ａは、ステップＳ２０７、ステップＳ２０８、ステップＳ２０９、ステップＳ２１０から成るシーケンスにより、フラッシュメモリからＲＡＭ１３に対して、先のステップＳ２０３〜２０６により転送されたデータ部と同じ冗長部のデータをＤＭＡ転送する。
先ず、ステップＳ２０７により、フラッシュメモリのSrc_adが示すアドレスから、ＦＩＦＯによりデータの読み出しを行う。このフラッシュメモリからの読み出しは、前述のようにして、アドレスSrc_adに記憶されるページデータ構造に対するＦＩＦＯの方式により行われる。従って、ステップＳ２０７によっては、先のステップＳ２０３〜２０６により転送されたデータ部に続く、同じＥＣＣユニットに含まれる冗長部のデータの読み出しを、ループごとに逐次行っていくことになる。そして、上記ステップＳ２０７により読み出されたデータを、ステップＳ２０８により、ＲＡＭ１３のExDes_adが示すアドレスに対してＤＭＡ転送して書き込むようにされる。
ここで、最初にＣＰＵ１１により指定されるExDes_adは、ＲＡＭ１３において確保した冗長部保持領域の先頭アドレスとなる。つまり、このステップＳ２０７、Ｓ２０８によるＤＭＡ転送は、ＲＡＭ１３の冗長部保持領域として確保された領域に対して冗長部を成すデータを書き込むための手順となる。ちなみに、最初のステップＳ２０７、Ｓ２０８によっては、第１冗長部の先頭データをＤＭＡ転送することになる。
【００７９】
上記ステップＳ２０７及びＳ２０８による１回のＤＭＡ転送が完了したとされると、ステップＳ２０９により、これまでループさせたステップＳ２０７、Ｓ２０８の動作により書き込んだ総データサイズが、ステップＳ２０２によりセットされたExTrf_size以上となる条件を満たしているか否かについて検知する。ステップＳ２０９として、このことが検知されない場合には、ステップＳ２１０により、ExDes_adをインクリメントしたうえで、次のステップＳ２０７、Ｓ２０８の手順を実行するようにされる。そして、ステップＳ２０９にて、上記のことが検知されたのであれば、ステップＳ２０７、Ｓ２０８によるＤＭＡ転送のループを終了する。
【００８０】
なお、この場合のExTrf_sizeも、転送すべき冗長部１つ分のデータサイズを指定している。従ってステップＳ２０９にてExTrf _size以上となったことの検知が行われたのに応じてステップＳ２０７及びＳ２０８によるループを終了させた段階では、直前のステップＳ２０３、Ｓ２０４によりＤＭＡ転送されたデータ部と同じＥＣＣユニットに格納されるべき冗長部１つ分のデータのＤＭＡ転送が完了したことになる。また、ステップＳ２０７、Ｓ２０８がループされるごとにステップＳ２１０によるDes_adのインクリメントも行われる結果、Des_adは、ＲＡＭ上での冗長部保持領域における第２冗長部のデータの先頭アドレスを示すことになる。
【００８１】
ステップＳ２０９の検知を経てステップＳ２１１に至った段階では、１ＥＣＣユニットを形成するデータ部と冗長部のデータが、ＲＡＭ１３上のデータ部保持領域と冗長部保持領域とに分けられてＤＭＡ転送により書き込まれていることになる。
そこで、ステップＳ２１１では、現在シーケンサ１６ａが保持しているLoop_countが０であるか否かについて判別する。この場合においても、ＣＰＵ１１が最初にセットするLoop_countの値は、ページ内のＥＣＣユニット数ｎに対応して、ｎ−１で表される。
【００８２】
上記ステップＳ２１１にて上記のことが検知されないのであれば、ステップＳ１１４にてLoop_countをデクリメントしたうえで、ステップＳ２０３に戻る。
【００８３】
このようにして、図９の手順では、ステップＳ１１３にてLoop_count＝０となることが検知されるまで、これまでに説明した、ステップＳ２０３〜Ｓ２１０までによる、１ＥＣＣユニットごとに対応したデータ部保持領域に対するデータ部のＤＭＡ転送と、これに続く冗長部保持領域に対する冗長部のデータのＤＭＡ転送とがループして（繰り返し）実行されることになる。
そして、最後のＥＣＣユニット（第４ＥＣＣユニット）のデータのＤＭＡ転送までが完了すると、ステップＳ１１３にてLoop_count＝０となることが検知されることになり、１ページ分のデータについての書き込み動作を終了することになる。
【００８４】
上記図８，図９のフローチャートにより説明した、本実施の形態としてのページデータ書き込みのためのＲＡＭ１３からフラッシュメモリへのデータ転送と、読み込みのためのフラッシュメモリからＲＡＭ１３へのデータ転送の手順を、例えば図３（ｂ）の構造のページに適用した場合には、図１０に示すものとなる。この図１０を、図４（ｂ）と比較してみると次のようなことがいえる。なお、図４（ｂ）には、同じ図３（ｂ）のページ構造に対して、先に図４（ａ）により説明した手順によるページデータ転送を適用した場合が示される。
【００８５】
例えば図４（ｂ）に示したページデータ転送では、先ず、ページを形成するＥＣＣユニットごとの冗長部のデータ転送については、ＰＩＯ転送としている。これに対して、本実施の形態では、データ部同様にＤＭＡ転送としている。
例えば図４により説明したデータ転送手順としては、ＥＣＣのデータを転送する必要上、冗長部のデータ転送には、ＰＩＯ転送を採用していたのであるが、本実施の形態としては、ＤＭＡコントローラ１６のシーケンサ１６ａにより、ＥＣＣ演算部１５ａに保持しているＥＣＣを転送させるように構成している。これにより本実施の形態としては、冗長部についてもＤＭＡ転送することが可能となっている。そして、このようして、冗長部のデータについてＤＭＡ転送が可能となることで、本実施の形態におけるページデータ転送としてはＤＭＡ転送が連続することになる。これにより、ページデータを形成するＥＣＣユニット数にかかわらず、ＤＭＡ転送要求の発行は、ページデータの転送を開始させる最初のタイミングにおける１回のみでよいことになる。これに対して、図４によるデータ転送では、冗長部がＰＩＯ転送となることで、データ部の先頭ごとにＤＭＡ転送要求を発行することが必要になり、例えば図４（ｂ）の場合であれば、１ページあたりのＤＭＡ転送要求は４回となっている。
【００８６】
先にも説明したように、ＤＭＡ転送要求、及びＰＩＯ転送は、ＣＰＵ１１による実行処理であるために相応に長い時間を要するものであり、このため、例えば図４（ｂ）に示されるようなデータ転送では、ページ内ＥＣＣユニット数が増加するほど転送時間が長くなってしまうという不都合を生じる。
これに対して、本実施の形態であれば、先ず、上記もしているように、１ページ分のデータ転送は全てＣＰＵを介在しないＤＭＡ転送となる。また、これに伴って、ページ内ＥＣＣユニット数にかかわらず、ＤＭＡ転送要求は１回のみでよくなる。つまり、１ページのデータ転送につき、ＣＰＵ１１が実行する処理は、１回のＤＭＡ転送要求を実行すればよい。
これにより、本実施の形態としては、ページデータの転送に要する時間を、例えば図４に示されるデータ転送手順と比較して短縮することが可能となる。特に、本実施の形態の場合には、ページデータ転送のためにＣＰＵが実行すべき処理は、最初のＤＭＡ転送要求のみであり、このことはページ内のＥＣＣユニット数に関係ない。換言すれば、例えば今後においてフラッシュメモリの記憶可能容量の増加に伴ってページ内のＥＣＣユニット数がさらに増加したとしても、１ページあたりにおいてＣＰＵが実行する処理が最初のＤＭＡ転送要求のみであることに変わりはない。また、このことからすれば、本実施の形態のデータ転送は、フラッシュメモリの大容量化などに応じてページ内のＥＣＣユニット数が増加するほど、その効果が顕著となるものである。
【００８７】
また、本実施の形態におけるページデータ転送として、フラッシュメモリからＲＡＭ１３へのデータ読み出しについては、図６においても模式的に示されているように、１ページ分のＤＭＡ転送が行われた結果として、データ部保持領域と冗長部保持領域とで振り分けられるようにしてデータがＲＡＭ１３上で保持されるようになっている。これは、図９による説明からも理解されるように、読み出しとしてのＤＭＡ転送にあたり、ＲＡＭに対応して指定する転送先アドレスとして、データ部に対応したSource Address（Src_ad）と、冗長部に対応したExtra Destination Address（ExDes_ad）とで、相互に異なるアドレスをＤＭＡコントローラ１６にセットするようにしているからである。
【００８８】
このようにして、ＲＡＭ上で、１ページ分のデータを、図３（ｂ）に示すような構造に応じた配列のままで保持するのではなく、データ部と冗長部とで異なる領域に保持するようにして管理するのは、例えば、本来のページ構造が図３（ａ）に示すものであり、ＲＡＭに読み込んだページデータを処理するＣＰＵとしても、このことを前提とした処理アルゴリズムとしていることが主たる理由である。
つまり、図３（ａ）の構造では、ページが１つのデータ部と１つの冗長部とから成っており、従って、データ部の実データは、元から論理的に連続した状態で転送が行われる。ＣＰＵは、このようにして論理的に連続してＲＡＭに保持されたデータを読み込んで処理を実行するようにされる。つまり、図３（ｂ）に示すページ構造のままで論理的に配列されるような結果でＲＡＭ上に読み込みを行った場合、ＣＰＵが実データを処理しようとするときには、アドレスを飛び越すようにして実データの読み出しを実行していく必要があることになり、例えばプログラム変更やＣＰＵの処理負担増加などの不利益が生じる。
そこで、本実施の形態としては、図６に示したように、ＲＡＭ１３上で、フラッシュメモリから読み出したデータが、データ部保持領域と冗長部保持領域とで振り分けられて保持されるようにすることで、実データが論理的に連続した状態で保持されるようにしているものである。
そして、本実施の形態としては、上記のようにしてＲＡＭ上でページデータがデータ部保持領域と冗長部保持領域とで振り分けられる状態が、フラッシュメモリからのページデータのＤＭＡ転送の結果として直に得られることに特徴を有するものである。この点について、例えば先に図４により説明したページデータ転送と比較すると次のようになる。
【００８９】
図１１は、先に図４（ｂ）に示したデータ転送を行った場合における、ＲＡＭ１３上での処理内容を示している。
先ずは、図４（ｂ）にても説明したように、フラッシュメモリからＲＡＭ１３に対して、第１〜第４ＥＣＣユニットごとに、データ部のＤＭＡ転送と冗長部のＰＩＯ転送とを組み合わせたデータ転送が順次行われることで、ＲＡＭ１３には、先ず、図４（ｂ）と同じ配列によりページデータが保持される結果となる。この状態では、第１データ部〜第４データ部は、それぞれ第１〜第３冗長部が間に介在することで不連続になっている。そこで、図示しているように、この図４（ｂ）のままの配列から、第１データ部〜第４データ部を抜き出してアドレス順に配列させることで、ページ内の実データの論理的連続性が得られた状態で保持し直すようにされる。また、残った第１〜第４冗長部までのデータについても、別の領域にてアドレス順に配列させるようにして保持し直すようにされる。このようにして、データ部と冗長部についての並び替えを行うことで、例えば図６に示したデータ部保持領域と冗長部保持領域と同様の管理状態を得る。なお、このようなＲＡＭ上に一旦保持された単位データの並び替えは、ＣＰＵが実行する。
【００９０】
このようにして、例えば図４に従ったデータ転送手順では、図６と同じ保持管理状態を得ようとするのにあたり、データ転送により一旦ＲＡＭに保持させたデータ構造に対して、さらにＲＡＭ上でのデータの並び替えの処理を実行する必要がある。
これに対して、本実施の形態では、ページデータの転送の完了時には、図６の保持管理状態となっているものであり、ＲＡＭ上での並び替えは必要がない。これによっても、例えばデータ転送速度、転送効率などが向上されることになる。
【００９１】
なお、本願発明としては、これまでに説明した実施の形態としての構成に限定されるものではない。
例えば、実施の形態としては、コンテンツファイル、プログラムなどを記憶させるための記憶媒体としてフラッシュメモリを備える携帯型コンテンツプレーヤに、本願発明を適用しているが、これ以外のフラッシュメモリを備える電子機器、装置全般に適用することができる。現状であれば、例えばフラッシュメモリにより構成される各種リムーバブル形式の記憶装置や、ＵＳＢメモリなどといわれる、ＵＳＢ（Universal Serial Bus）端子に差し込むようにして使用する、フラッシュメモリを内蔵した記憶装置などが考えられる。
また、例えば実施の形態のページに準じたような、実データと、これに対応する冗長的な情報から成るような構造が規定され、これがデータ転送単位とされるようなフラッシュメモリ以外の半導体メモリ装置に対しても本願発明を適用できる。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施の形態としての携帯型コンテンツプレーヤの構成例を示す図である。
【図２】フラッシュメモリの物理構造を示す図である。
【図３】ページの構造を示す図である。
【図４】実施の形態の携帯型コンテンツプレーヤの構成の下で考えることのできる、ページデータの転送手順を、ページ構造とともに模式的に示す図である。
【図５】実施の形態としての、ＲＡＭからフラッシュメモリへの書き込みのためのページデータの転送手順例を示す図である。
【図６】実施の形態としての、フラッシュメモリからＲＡＭへの読み出しのためのページデータの転送手順例を示す図である。
【図７】ＤＭＡコントローラにセットされるべきパラメータ例を、図４のデータ転送手順と実施の形態のデータ転送手順とで比較して示す図である。
【図８】実施の形態のＤＭＡコントローラが実行するとされる、ＲＡＭからフラッシュメモリへの書き込みのためのページデータの転送の手順を示すフローチャートである。
【図９】実施の形態のＤＭＡコントローラが実行するとされる、フラッシュメモリからＲＡＭへの読み出しのためのページデータの転送の手順を示すフローチャートである。
【図１０】実施の形態としてのページデータの転送手順を、ページ構造とともに模式的に示す図である。
【図１１】図４に示されるページデータの転送に伴う、ＲＡＭ上でのデータの並び替え処理の手順例を模式的に示す図である。
【符号の説明】
【００９３】
１  携帯型コンテンツプレーヤ、１１  ＣＰＵ、１２  ＲＯＭ、１３  ＲＡＭ、１４  記憶部（フラッシュメモリ）、１５  メモリインターフェイス、１６  ＤＭＡコントローラ、１６ａ  シーケンサ、１７  オーディオ再生処理部、１８  ヘッドフォン端子、１９  表示処理部、２０  表示部、２１  操作部、２２  外部データインターフェイス
【図１】
2007286813.tif 000003
【図２】
2007286813.tif 000004
【図３】
2007286813.tif 000005
【図４】
2007286813.tif 000006
【図５】
2007286813.tif 000007
【図６】
2007286813.tif 000008
【図７】
2007286813.tif 000009
【図８】
2007286813.tif 000010
【図９】
2007286813.tif 000011
【図１０】
2007286813.tif 000012
【図１１】
2007286813.tif 000013