(57)【特許請求の範囲】
【請求項１】
同時に処理可能な複数の処理段階によって各々が順次に処理される複数のデータの各処理状況を、前記処理段階に対応した互いに異なる複数の第１のアドレスを用いて管理するＣＰＵと、
各々が互いに異なる第２のアドレスを有し、前記データに関する情報を前記データ毎に格納する、複数の管理用記憶部と、
前記処理状況の進行に伴い、前記第２のアドレスに対応する前記第１のアドレスを循環的に変化させ、前記変化させた対応関係に基づき前記第１のアドレスを前記第２のアドレスに変換するアドレス変換部とを備えることを特徴とする、
データ処理管理装置。
【請求項２】
請求項１に記載のデータ処理管理装置であって、
第１の前記データが処理される前記処理段階が第２の前記データが処理される前記処理段階よりも後である状態から、前記第１の前記データが処理される前記処理段階が前記第２の前記データが処理される前記処理段階よりも先である状態へ遷移するのに伴って、
前記第１の前記データについての前記第２のアドレスに対応する前記第１のアドレスと、前記第２の前記データについての前記第２のアドレスに対応する前記第１のアドレスとを交替することを特徴とする、
データ処理管理装置。
【請求項３】
データ処理管理装置であって、
同時に処理可能な複数の処理段階によって各々が順次に処理される複数のデータの各処理状況を、前記処理段階に対応した互いに異なる複数の第１のアドレスを用いて管理するＣＰＵと、
各々が互いに異なる第２のアドレスを有し、前記データに関する情報を前記データ毎に格納する、複数の管理用記憶部と、
前記第１のアドレスを前記第２のアドレスに変換するアドレス変換部とを備え、
前記データ処理管理装置は、第１の前記データが処理される前記処理段階が第２の前記データが処理される前記処理段階よりも後である状態から、前記第１の前記データが処理される前記処理段階が前記第２の前記データが処理される前記処理段階よりも先である状態へ遷移するのに伴って、前記第１の前記データについての前記第２のアドレスに対応する前記第１のアドレスと、前記第２の前記データについての前記第２のアドレスに対応する前記第１のアドレスとを交替し、前記交替した対応関係に基づき前記第１のアドレスを前記第２のアドレスに変換することを特徴とする、
データ処理管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、複数のデータ処理を同時にないしは並列に行なう環境において各データの処理状況を管理するための技術に関する。
【０００２】
【従来の技術】
一般的に、ＣＰＵ（Central Processing Unit)がプログラムを実行する場合、例えば(1)命令のフェッチ、(2)命令のデコード、(3)命令の実行等の単純な処理の複数を組み合わた一連の処理を繰り返す。例えばデータ転送処理も、このような一連の処理を繰り返すことにより行われる。
【０００３】
ここで、半導体記憶装置がホスト・コンピュータ（以下、単に「ホスト」とも呼ぶ）からセクタ単位のデータを受け取る場合において、上記記憶装置の内部のＣＰＵが実行する処理を説明する。図７は、データＤ１に対する各処理ないしは処理段階ＳＴ１〜ＳＴ４を実行した後に、次のデータＤ２に対して各処理ＳＴ１〜ＳＴ４を実行する場合を図示したタイミングチャートである。図７に示すように、記憶装置内のＣＰＵは、▲１▼データを取得して記憶装置内のセクタバッファヘ保存する（処理ＳＴ１）、▲２▼受け取ったデータに誤り訂正符号（ＥＣＣ：Error Correcting Codes）を付加する（処理ＳＴ２）、▲３▼記憶装置内のフラッシュメモリにデータを書き込む（処理ＳＴ３）、▲４▼書き込み結果を確認する（処理ＳＴ４）という一連の処理を繰り返す。なお、処理ＳＴ４→処理ＳＴ３→処理ＳＴ２→処理ＳＴ１の順に、ＣＰＵが実行すべき優先順位が低くなる。
【０００４】
上記処理ＳＴ１〜ＳＴ４から成る一連の処理を高速に実行するための有効な方法の一例として、データ処理のパイプライン化が挙げられる。即ち、各処理ＳＴ１〜ＳＴ４用の回路を独立に且つ並列に稼働させることによって、処理効率を上げる。このようなパイプライン処理の様子を図８のタイミングチャートに示す。図８に示すように、例えばデータ取得処理ＳＴ１用の回路は複数のデータＤ１〜Ｄ５に対して処理ＳＴ１を連続して実行する。図７及び図８を比較すれば分かるように、このようなパイプライン処理化によって時刻ｔ０〜時刻ｔ８の同一時間内に２．５倍の処理量を実行可能である。
【０００５】
ところで、データ転送処理を実行している間、ＣＰＵは、データ転送に使用される上記各セクタバッファの状態や実行中の全処理の状態等を常に管理している。即ち、ＣＰＵは、各回路があるデータに対する処理が終了し、次のデータに対する処理が実行可能か否かを確認して、実行可能な状態であれば次のデータに対する処理を実行する。また、データ取得処理ＳＴ１においてホストからのデータ読み出し順序を間違わないように管理している。
【０００６】
ここで、パイプライン化されたデータ転送処理及びＣＰＵによる上述のデータ処理の管理をより具体的に説明する。図９は、ＣＰＵが使用するＲＡＭ（Random Access Memory）１２Ｐ内の従来のアドレス空間の模式図である。図９に示すように、ＲＡＭ１２Ｐは、ＣＰＵを動作させるために必要な命令ないしはプログラム（一般にファームウェア（Ｆ／Ｗ）と呼ばれる）を格納するための領域であるファームウェア（Ｆ／Ｗ）処理領域１３Ｐと、パイプライン処理の管理のための処理領域（以下、「ワークバッファ」と呼ぶ）１４Ｐとを備える。
【０００７】
ワークバッファ１４Ｐは第１乃至第４ワークバッファ１４１Ｐ〜１４４Ｐから成り、４つのワークバッファ１４１Ｐ〜１４４Ｐにはそれぞれ処理中の所定のデータの現在の処理状況等が格納される。例えば、図８において、時刻ｔ０において（状態Ｓ１を参照）、ＣＰＵは、処理ＳＴ１用の回路を制御することによってデータＤ１の取得処理ＳＴ１を実行する一方で、データＤ１が処理ＳＴ１中であることを示す情報を第１ワークバッファ１４１Ｐに記述する。その後、時刻ｔ１（状態Ｓ２を参照）において、ＣＰＵは、処理ＳＴ２用の回路を制御することによって、セクタバッファに収められたデータＤ１に対するＥＣＣ付加処理ＳＴ２を実行すると共に、データＤ１が処理ＳＴ２中であることを示す情報を第１ワークバッファ１４１Ｐに記述する。他方、同時刻ｔ１において、ＣＰＵは、処理ＳＴ１用の回路を制御することによってデータＤ２の取得処理ＳＴ１を実行すると共に、上述の状態Ｓ１と同様にデータＤ２が処理ＳＴ１中であることを第２ワークバッファ１４３Ｐに記述する。このようにして順次に処理を進めていく。なお、例えば第１ワークバッファ１４１Ｐは、データＤ１に対する一連の処理ＳＴ１〜ＳＴ４が終了するまでデータＤ１用のワークバッファとして占有される。
【０００８】
このとき、ＣＰＵが各ワークバッファ１４１Ｐ〜１４４Ｐを利用する際の従来のアクセス方法として、（ａ）各ワークバッファ１４１Ｐ，１４２Ｐ，１４３Ｐ，１４４Ｐの絶対アドレスＡＤ１４１Ｐ，ＡＤ１４２Ｐ，ＡＤ１４３Ｐ，ＡＤ１４４Ｐをファームウェアないしプログラム中で指定する方法や、（ｂ）第１ワークバッファ１４１ＰのアドレスＡＤ１４１Ｐをベースアドレスとして他のワークバッファ１４２Ｐ，１４３Ｐ，１４４Ｐをオフセットアドレスで指定する方法等がある。
【０００９】
なお、上記アドレスＡＤ１４１Ｐ，ＡＤ１４２Ｐ，ＡＤ１４３Ｐ，ＡＤ１４４ＰはそれぞれＣＰＵが有するアドレス空間内のアドレスＰ１Ｐ，Ｐ２Ｐ，Ｐ３Ｐ，Ｐ４Ｐにマッピングされており、ＣＰＵはアドレスＰ１Ｐ，Ｐ２Ｐ，Ｐ３Ｐ，Ｐ４Ｐにアクセスすることによってそれぞれ上記アドレスＡＤ１４１Ｐ，ＡＤ１４２Ｐ，ＡＤ１４３Ｐ，ＡＤ１４４Ｐにアクセスする。
【００１０】
【発明が解決しようとする課題】
一般的に、ＣＰＵが上述の処理管理を実行する場合、その分だけＣＰＵが実行すべき処理量、即ち、処理時間が増大する。その結果、データ処理の速度ないしはデータ転送のパフォーマンスが低下する。かかる傾向はパイプライン処理するデータ数が多いほど顕著である。複数のデータ処理を並列処理する場合に上述のデータ処理の管理は必要であるので、そのような処理管理を実行しつつもＣＰＵの処理効率を向上させることが強く望まれている。かかる要請に応えうる手段の一つとして、ＣＰＵのワークバッファへのアクセスの改善が挙げられる。即ち、上述した従来の両アクセス方法（ａ），（ｂ）は、以下の問題点を有している。
【００１１】
詳細には、両アクセス方法（ａ），（ｂ）では、各データＤ１〜Ｄ５と第１乃至第４ワークバッファ１４１Ｐ〜１４４Ｐとの対応をＣＰＵが管理しなければならない。例えば図８において、ＣＰＵが最優先に処理すべき処理ＳＴ４の処理対象は、時刻ｔ３〜時刻ｔ４間の状態Ｓ４から時刻ｔ４〜時刻ｔ５間の状態Ｓ５に移行する場合、データＤ１からデータＤ２に変わる。このとき、処理ＳＴ４の処理対象の変更に伴って、処理ＳＴ４の実行時にＣＰＵがアクセスすべきワークバッファは第１ワークバッファ１４１Ｐから第２ワークバッファ１４２Ｐに変わる。このため、従来の両アクセス方法（ａ），（ｂ）では、各処理ＳＴ１，ＳＴ２，ＳＴ３，ＳＴ４の実行時にＣＰＵがアクセスすべきワークバッファのアドレスＡＤ１４１Ｐ〜ＡＤ１４４Ｐを、ＣＰＵ自体が常に記憶・管理しなければならない。
【００１２】
更に、例えば状態Ｓ４から状態Ｓ５に移行する場合、データＤ１用として占有されていた第１ワークバッファ１４１Ｐが開放されて（空き状態にされて）次のデータＤ５用に利用可能になる。即ち、第１乃至第４ワークバッファ１４１Ｐ〜１４４Ｐの内のいずれがデータ取得処理ＳＴ１に利用可能であるかを、ＣＰＵが常に記憶・管理する必要がある。
【００１３】
このように、従来の両アクセス方法（ａ），（ｂ）では、上述のデータ処理の状況管理に加えて、その状況管理のためにアクセスするワークバッファのアドレス及びそれの空き状態をもＣＰＵが管理しなければならない。
【００１４】
かかるワークバッファのアドレス及び空き状態の管理を軽減しうると考えられる管理方法の一つとして、以下の方法がある。即ち、第２ワークバッファ１４２Ｐ内の情報を開放された第１ワークバッファ１４１Ｐヘコピーし、第３ワークバッファ１４３Ｐ内の情報を第２ワークバッファ１４２Ｐへコピーするというように、各バッファ１４２Ｐ〜１４４Ｐ内の情報を順次にコピー（移転）する方法が考えられる。この管理方法によれば、第１乃至第４ワークバッファ１４１Ｐ〜１４４Ｐはそれぞれが特定のデータに対応していたアクセス方法（ａ），（ｂ）とは異なり、この順序で処理ＳＴ４〜ＳＴ１の優先順位に対応する。このため、例えば処理ＳＴ４の実行時にＣＰＵは常に第１ワークバッファ１４１Ｐにアクセスすればよい。また、上記空き状態を調べるためには、ＣＰＵは第４ワークバッファ１４４Ｐをアクセスすれば済む。しかしながら、全てのワークバッファ１４１Ｐ〜１４４Ｐについて上述のコピーを実行するためには、ＣＰＵは数十μｓｅｃオーダーの処理時間を費やさなければならない。即ち、かかる管理方法では、ＣＰＵの処理効率の向上という所期の目的の達成、換言すればデータ処理の高速化は難しいと考えられる。
【００１５】
本発明は、上述の問題点に鑑みてなされたものであり、ＣＰＵの処理効率が改善されたデータ処理管理装置を提供することを目的とする。
【００１６】
【課題を解決するための手段】
（１）請求項１に記載の発明に係るデータ処理管理装置は、同時に処理可能な複数の処理段階によって各々が順次に処理される複数のデータの各処理状況を、前記処理段階に対応した互いに異なる複数の第１のアドレスを用いて管理するＣＰＵと、各々が互いに異なる第２のアドレスを有し、前記データに関する情報を前記データ毎に格納する、複数の管理用記憶部と、前記処理状況の進行に伴い、前記第２のアドレスに対応する前記第１のアドレスを循環的に変化させ、前記変化させた対応関係に基づき前記第１のアドレスを前記第２のアドレスに変換するアドレス変換部とを備えることを特徴とする。
【００１７】
（２）請求項２に記載の発明に係るデータ処理管理装置は、請求項１に記載のデータ処理管理装置であって、第１の前記データが処理される前記処理段階が第２の前記データが処理される前記処理段階よりも後である状態から、前記第１の前記データが処理される前記処理段階が前記第２の前記データが処理される前記処理段階よりも先である状態へ遷移するのに伴って、前記第１の前記データについての前記第２のアドレスに対応する前記第１のアドレスと、前記第２の前記データについての前記第２のアドレスに対応する前記第１のアドレスとを交替することを特徴とする。
【００１８】
（３）請求項３に記載の発明に係るデータ処理管理装置は、同時に処理可能な複数の処理段階によって各々が順次に処理される複数のデータの各処理状況を、前記処理段階に対応した互いに異なる複数の第１のアドレスを用いて管理するＣＰＵと、各々が互いに異なる第２のアドレスを有し、前記データに関する情報を前記データ毎に格納する、複数の管理用記憶部と、前記第１のアドレスを前記第２のアドレスに変換するアドレス変換部とを備え、前記データ処理管理装置は、第１の前記データが処理される前記処理段階が第２の前記データが処理される前記処理段階よりも後である状態から、前記第１の前記データが処理される前記処理段階が前記第２の前記データが処理される前記処理段階よりも先である状態へ遷移するのに伴って、前記第１の前記データについての前記第２のアドレスに対応する前記第１のアドレスと、前記第２の前記データについての前記第２のアドレスに対応する前記第１のアドレスとを交替し、前記交替した対応関係に基づき前記第１のアドレスを前記第２のアドレスに変換することを特徴とする。
【００１９】
【発明の実施の形態】
＜実施の形態１＞
図１に、実施の形態１に係る半導体記憶装置１の構成の模式的なブロック図を示す。図１に示すように、半導体記憶装置１はホスト２と接続されている。そして、半導体記憶装置１は、ホスト２とのデータの受け渡しを行なうホストインタフェース回路４１と、データを記憶するフラッシュメモリ４５と、両者４１，４５間に介在するセクタバッファ４３とを備える。セクタバッファ４３は、ホスト２からフラッシュメモリ４５へ転送するデータ又はフラッシュメモリ４５からホスト２へ転送するデータを一時的に格納する。なお、図１に示すように、セクタバッファ４３は第１乃至第４セクタバッファ４３１〜４３４から成る。また、上記フラッシュメモリ４５は複数個のフラッシュメモリで構成しても良い。
【００２０】
第１乃至第４セクタバッファ４３１〜４３４のそれぞれは、バスセレクタ回路４２を介してホストインタフェース回路４１と接続されていると共に、バスセレクタ回路４４を介してフラッシュメモリ４５に接続されている。バスセレクタ回路４２のデータバスの選択によって、ホストインタフェース回路４１と第１乃至第４セクタバッファ４３１〜４３４との接続形態が制御される。同様に、バスセレクタ回路４４によって、フラッシュメモリ４５と第１乃至第４セクタバッファ４３１〜４３４との接続形態が制御される。
【００２１】
また、半導体記憶装置１はバスセレクタ回路４４に接続されたＥＣＣ回路４６を備える。ＥＣＣ回路４６は、ホスト２から受取ったデータに対するエラー訂正用の符号（ＥＣＣ）を生成したり、フラッシュメモリ４５から読み出したデータにエラーが発生していないかを検出・訂正する。
【００２２】
なお、以下の説明では、回路４１〜４６から成る要素を「転送処理部４０」とも呼ぶ。
【００２３】
更に、半導体記憶装置１は、ＣＰＵ１１と、シーケンサ回路３０とを備える。ＣＰＵ１１は上記各回路４１〜４６の制御及び各回路４１〜４６とのデータ・信号のやり取りを直接に又はシーケンサ回路３０を介して行う。これにより、ホスト２とフラッシュメモリ４５との間で既述の処理ないしは処理段階ＳＴ１〜ＳＴ４に基づくデータ転送処理が実行される。なお、シーケンサ回路３０はＣＰＵ１１の命令に基づいて所定の制御信号ないしは制御信号波形を生成・出力することによって各回路４１〜４６を制御する。
【００２４】
例えばデータ取得処理ＳＴ１は以下のように実行される。まず、ＣＰＵ１１の命令に基づいてシーケンサ回路３０がデータ取得処理ＳＴ１用の制御信号を生成し、当該制御信号によってホストインタフェース回路４１，バスセレクタ回路４２及びセクタバッファ４３を制御する。かかる制御により、処理ＳＴ１であるホスト−セクタバッファ間転送処理が実行される。このとき、ホストインタフェース回路４１，バスセレクタ４２及びセクタバッファ４３が処理ＳＴ１用の回路に該当する。
【００２５】
同様に、ＥＣＣ付加処理ＳＴ２は、シーケンサ回路３０が処理ＳＴ２用の制御信号で以てセクタバッファ４３，バスセレクタ回路４４及びＥＣＣ回路４６を制御することにより実行される。このとき、セクタバッファ４３，バスセレクタ回路４４及びＥＣＣ回路４６が処理ＳＴ２用の回路に該当する。なお、ＥＣＣ回路４６での処理は後に詳述する。また、書き込み処理ＳＴ３は、処理ＳＴ３用の制御信号で以て、処理ＳＴ３用の回路に該当する、セクタバッファ４３，バスセレクタ回路４４及びフラッシュメモリ４５を制御することにより実行される。これらに対して、書き込み確認処理ＳＴ４は、ＣＰＵ１１が直接にフラッシュメモリ４５のステータスを確認することにより実行される。
【００２６】
このとき、シーケンサ回路３０が上記各処理ＳＴ１〜ＳＴ３用の制御信号を独立に生成することによって、処理ＳＴ１〜ＳＴ４のパイプライン化が実現される。
【００２７】
ここで、ＥＣＣ付加処理ＳＴ２におけるＥＣＣ回路４６の動作に説明を加える。
【００２８】
まず、ホスト２からフラッシュメモリ４５へデータ転送する場合、即ち、データを符号化する場合を説明する。データ取得処理ＳＴ１においてセクタバッファ４３、例えば第１セクタバッファ４３１へ転送されたデータを、バスセレクタ回路４４を介してＥＣＣ回路４６へコピーする。そして、ＥＣＣ回路４６はコピーされたデータに基づいてＥＣＣを生成して当該回路４６内のレジスタに保存する。次に、ＣＰＵ１１が上記保存されたＥＣＣを利用して第１セクタバッファ４３１内のデータに付加する。その後、書き込み処理ＳＴ３において、ＥＣＣが付加されたデータがバスセレクタ回路４４を介してフラッシュメモリ４５へ転送される。
【００２９】
また、フラッシュメモリ４５からホスト２へデータを転送する場合、即ち、データを復号化する場合は、ＥＣＣ回路４６は以下の処理を実行する。まず、シーケンサ回路３０によって、フラッシュメモリ４５内のＥＣＣ付きデータがバスセレクタ回路４４を介してＥＣＣ回路４６及び例えば第１セクタバッファ４３１の双方に転送される。ＥＣＣ回路４６は転送されたデータを復号化し、その結果を保存する。このとき、エラーが発生してはいるがそれが訂正可能な場合、ＥＣＣ回路４６は訂正用データを生成してＥＣＣ回路４６内のレジスタに保存する。そして、ＣＰＵ１１が上記復号化結果を確認し、エラーが発生している場合にはＣＰＵ１１が上記訂正用データを利用して第１セクタバッファ４３１内のデータを修正する。その後、第１セクタバッファ４３１内のデータは、シーケンサ回路３０によってバスセレクタ回路４２及びホストインタフェース回路４１を介してをホスト２へ転送される。
【００３０】
更に、半導体記憶装置１は、ＣＰＵ１１のアドレス空間（図示せず）内のアドレス（第１のアドレス）を所定のアドレスに変換するアドレスデコーダ（アドレス変換部）２１と、ＣＰＵ１１が使用するＲＡＭ１２とを備える。上述のデータ処理ＳＴ１〜ＳＴ４は、ＣＰＵ１１とアドレスデコーダ２１とＲＡＭ１２（特に、ＲＡＭ１２内の後述のワークバッファ１４及びワークレジスタ１５１）とから成るデータ処理管理部（データ処理管理装置）１０によって管理される。図１に加えて図２及び図３を参照しつつ、データ処理管理部１０を説明する。なお、図２はＲＡＭ１２のアドレス空間を示す模式図であり、図３はデータ処理管理部１０、特にアドレスデコーダ２１での処理を説明するためのブロック図である。
【００３１】
図２に示すように、ＲＡＭ１２は、ＣＰＵ１１を動作させるために必要なファームウェア（Ｆ／Ｗ）を格納するための領域であるファームウェア処理領域１３と、パイプライン処理の管理のためのワークバッファ（管理用記憶部）１４と、ワークレジスタ１５１とを備える。ワークバッファ１４は第１乃至第４ワークバッファ１４１〜１４４から成り、各ワークバッファ１４１，１４２，１４３，１４４は、一連の処理ＳＴ１〜処理ＳＴ４が終了するまで各々異なる所定のデータ用として占有される。各ワークバッファ１４１〜１４４には所定のデータに関する情報、例えばそのデータの名前、或いは更にその現在の処理状況等の情報がデータ毎に格納される。ワークレジスタ１５１は、ＣＰＵ１１がアクセス可能であり、ＣＰＵ１１が設定する所定の値（後述する）を格納する。
【００３２】
ＣＰＵ１１が有するアドレス空間には、ＲＡＭ１２やシーケンサ回路３０等の周辺回路が有するレジスタがマッピングされている。マッピング方法、即ち、アドレスデコーダ２１でのアドレス変換処理を図３を用いて説明する。ＣＰＵ１１が上記アドレス空間内の所定のアドレスＡＤ１１にアクセスすると、そのアドレスＡＤ１１と、当該アドレスＡＤ１１がどのアクセス先のアドレスであるか、即ち、Ｆ／Ｗ処理領域１３，ワークバッファ１４，ワークレジスタ１５１又はシーケンサ回路３０のいずれのアドレスであるかを示す選択信号ＳＧ１１とを、ＣＰＵ１１がアドレスデコーダ２１に対して出力する。アドレスデコーダ２１は選択信号ＳＧ１１に基づいてアドレスＡＤ１１を所定のアクセス先のアドレスＡＤ２１に変換する。そして、選択信号ＳＧ１１で特定されたアクセス先に対してのみ選択信号ＳＧ２１を送信することにより、ＣＰＵ１１は所望のアクセス先、即ち、Ｆ／Ｗ処理領域１３，ワークバッファ１４，ワークレジスタ１５１又はシーケンサ回路３０における所望のアドレスＡＤ２１へアクセスすることができる。
【００３３】
特に、ＣＰＵ１１が第１乃至第４ワークバッファ１４１〜１４４へアクセスする場合、実施の形態１に係るアドレスデコーダ２１はワークレジスタ１５１の値Ｒ１５１に基づいてアドレス変換を行う。図２に示すように、ワークレジスタ１５１の値Ｒ１５１が”１”の場合、ＣＰＵ１１のアドレス空間内のアドレス（第１のアドレス）Ｐ１，Ｐ２，Ｐ３，Ｐ４はそれぞれワークバッファ１４１，１４２，１４３，１４４のアドレス（第２のアドレス）ＡＤ１４１，ＡＤ１４２，ＡＤ１４３，ＡＤ１４４（先頭アドレス）に変換される（マッピングされる）。また、ワークレジスタ１５１の値Ｒ１５１が”２”の場合、アドレスＰ１，Ｐ２，Ｐ３，Ｐ４はそれぞれアドレスＡＤ１４２，ＡＤ１４３，ＡＤ１４４，ＡＤ１４１に変換される。図２に示すように、各アドレスＰ１，Ｐ２，Ｐ３，Ｐ４は、第１乃至第４ワークバッファ１４１〜１４４に対してワークレジスタ１５１の値Ｒ１５１に基づいて循環的に変化する（ローテイションする）。
【００３４】
ここで、上述の「循環的に変化する（循環する）」を説明する。図４に示すように、アドレスＰ１→アドレスＰ２→アドレスＰ３→アドレスＰ４→アドレスＰ１というようにアドレスＰ１〜Ｐ４が環状に関連付けられる。また、アドレスデコーダ２１の基本機能として、各アドレスＰ１，Ｐ２，Ｐ３，Ｐ４はアドレスＡＤ１４１〜ＡＤ１４４のいずれかに対応付けられる（変換される）。なお、図４に示すアドレスの対応付けは、図２に示すようにワークレジスタ１５１の値Ｒ１５１が”１”の場合である。このように、各アドレスＰ１，Ｐ２，Ｐ３，Ｐ４が上述の環状の関連付けを保ったままアドレスＡＤ１４１〜ＡＤ１４４に対して順次にシフトすることを「（アドレスＰ１，Ｐ２，Ｐ３，Ｐ４が）循環的に変化する」と表現する。ここでは、アドレスＰ１が順次にアドレスＡＤ１４１→アドレスＡＤ１４２→・・・に対応付けられる方向にアドレスＰ１〜Ｐ４を循環させる。
【００３５】
かかる循環により得られた各対応付けは、図２に示すように、更にワークレジスタ１５１の値Ｒ１５１（＝”１”〜”４”）に関連付けられる。これにより、ワークレジスタ１５１の値Ｒ１５１（＝”１”〜”４”）に基づいて、ＣＰＵ１１のアドレス空間内のアドレスＰ１〜Ｐ４が第１乃至第４ワークバッファ１４１〜１４４のアドレスＡＤ１４１〜ＡＤ１４４に変換される。
【００３６】
アドレスデコーダ２１では例えば以下のようにしてアドレス変換を行う。例えばワークレジスタの値Ｒ１５１が”１”の場合における、アドレスＰ１〜Ｐ４とアドレスＡＤ１４１〜ＡＤ１４４との対応をアドレスデコーダ２１に予めに付与しておく。そして、図３に示すように、アドレスデコーダ２１がワークバッファ１４を選択する信号ＳＧ１１を受信すると、選択信号ＳＧ２１によらず、アドレスデコーダ２１はワークレジスタ１５１の値Ｒ１５１を参照する。例えば参照した値Ｒ１５１が”３”であれば、予めに付与された上記対応付けを上述の循環方向に２回シフト（循環）することにより所定の対応付けが得られる。当該得られた所定の対応付けに基づいてアドレスデコーダ２１はアドレス変換を行う。
【００３７】
データ処理管理部１０は、パイプライン処理される各データＤ１〜Ｄ５（図８参照）に関する情報を以下のように管理する。なお、データ処理管理部１０では、ＣＰＵ１１の第１乃至第４ワークバッファ１４１〜１４４へのアクセス方法に特徴があるため、かかる点を中心に説明する。
【００３８】
まず、従来の半導体記憶装置と同様に、既述の図８における状態Ｓ１〜状態Ｓ４の間、第１乃至第４ワークバッファ１４１，１４２，１４３，１４４をそれぞれデータＤ１，Ｄ２，Ｄ３，Ｄ４用として割り当てる。このとき、ＣＰＵ１１はワークレジスタ１５１の値Ｒ１５１を”１”に設定している。かかる設定により、ＣＰＵ１１はアドレスＰ１，Ｐ２，Ｐ３，Ｐ４へアクセスすることによってそれぞれ第１乃至第４ワークバッファ１４１，１４２，１４３，１４４へアクセスすることができる。
【００３９】
次に、状態Ｓ４から状態Ｓ５へ移行すると、状態Ｓ４までの間データＤ１用として占有されていた第１ワークバッファ１４１が開放され、次に取得するデータＤ５用として使用される。かかる移行に伴って、ＣＰＵ１１はワークレジスタ１５１に”２”を書き込む。これにより、ＣＰＵ１１はアドレスＰ１，Ｐ２，Ｐ３，Ｐ４へアクセスすることによってそれぞれワークバッファ１４２，１４３，１４４，１４１へアクセスすることができる（図２参照）。このとき、ＣＰＵ１１は、データＤ２〜Ｄ４に関して、引き続きＣＰＵ１１のアドレス空間内のアドレスを採用して処理を進める。
【００４０】
同様に、ＣＰＵ１１は、状態Ｓ５から状態Ｓ６への移行に伴いワークレジスタ１５１を”３”に変更し、状態Ｓ６から状態Ｓ７への移行に伴いワークレジスタ１５１を”４”に変更する。このように、データ処理の状況に伴ってＣＰＵ１１がワークバッファ１５１の値Ｒ１５１を変化させることによって、アドレスデコーダ２１がアドレスＰ１〜Ｐ４をアドレスＡＤ１４１〜ＡＤ１４４に対して循環的に変化させる。このようにして、アドレスデコーダ２１は、アドレスＰ１〜Ｐ４とアドレスＡＤ１４１〜ＡＤ１４４とを、処理状況の進行に伴って変動する対応関係で対応付ける。
【００４１】
特に、図２及び図８を参照すれば分かるように、アドレスＰ１〜Ｐ４とアドレスＡＤ１４１〜ＡＤ１４４との上述の対応付け（図２参照）によれば、以下の対応関係が常に成立する。なお、処理ＳＴ１〜ＳＴ４の優先順位に対応させてパイプライン処理されている複数のデータを処理ＳＴ４に最も近い順番から降順に順位付けし、最も高い順位のデータに関する情報が格納されているワークバッファを「最高順位のワークバッファ」のように表現する。例えば状態Ｓ４以前での最高順位のワークバッファは第１ワークバッファ１４１であり、状態Ｓ５における最高順位のワークバッファは第２ワークバッファ１４２である。このとき、最高順位のワークバッファのアドレスＡＤ１４１，ＡＤ１４２，ＡＤ１４３又はＡＤ１４４とアドレスＰ１とが常に対応する。つまり、ＣＰＵ１１はアドレスＰ１へアクセスすることによって、最高順位のワークバッファへ常にアクセスすることができる。同様に、各アドレスＰ２，Ｐ３，Ｐ４は、第２番目の順位のワークバッファ、第３番目の順位のワークバッファ、最低順位のワークバッファに常に対応付けられる。即ち、アドレスＰ１→アドレスＰ２→アドレスＰ３→アドレスＰ４という順序は、常に、ワークバッファ１４１〜１４４の順位の降順、即ち、処理段階ＳＴ１〜ＳＴ４の優先順位の降順に対応している。
【００４２】
このように、ＣＰＵ１１のアドレス空間内のアドレスＰ１〜Ｐ４は処理段階ＳＴ１〜ＳＴ４に対応し、また、アドレスデコーダ２１によってアドレスＰ１〜Ｐ４はデータの処理状況の進行に伴って変動する対応関係で以てアドレスＡＤ１４１〜ＡＤ１４４と対応付けられる。このため、各ワークバッファ１４１〜１４４が格納している内容ないしは情報を処理状況の進行に伴って移転する必要がない。しかも、ＣＰＵ１１はどのデータＤ１〜Ｄ５がどの処理段階ＳＴ１〜ＳＴ４において処理されているかを管理することなく、アドレスＰ１〜Ｐ４の選択によって処理ＳＴ１〜ＳＴ４の所望の処理段階での処理状況を把握することができる。従って、ＣＰＵ１１が処理状況を管理するために必要な処理量及び処理時間を従来よりも削減できる。これにより、ＣＰＵの処理効率を向上することができる。このとき、ファームウェア中に上述の移転処理やデータＤ１〜Ｄ５と処理段階ＳＴ１〜ＳＴ４との対応付けを記述する必要が無いので、ファームウェアを単純化及び小容量化することができる。即ち、効率の良いファームウェアを構築することができる。
【００４３】
ここで、図８に示すパイプライン処理のように複数のデータＤ１〜Ｄ５がいずれも順次に同一の処理を受ける際に各処理段階ＳＴ１，ＳＴ２，ＳＴ３，ＳＴ４での（複数の）データＤ１〜Ｄ５の処理の順番が処理段階ＳＴ１，ＳＴ２，ＳＴ３，ＳＴ４毎に変わらない又は異ならない場合には、図２に示すように、アドレスＰ１〜Ｐ４を循環的に変化させても、アドレスＰ１〜Ｐ４の順序とアドレスＡＤ１４１〜ＡＤ１４４の順序との相対関係が崩れない。このため、例えばアドレスＰ１をベースアドレスとした場合のオフセットアドレスを各アドレスＰ１〜Ｐ４として利用することができる。このとき、ファームウェア中にアドレスＰ１〜Ｐ４の全てを記述する必要性は無いので、ファームウェアの単純化及び小容量化を更に容易にすることができる。かかる点からもＣＰＵ２２の処理効率を向上することができる。
【００４４】
その結果、半導体記憶装置１によれば、従来の半導体記憶装置と比較して、効率良く且つ高速にデータ転送を行うことができる。
【００４５】
なお、例えば、ワークレジスタ１５１の値Ｒ１５１として”１”〜”４”の代わりに”０”〜”３”を用いる場合、ＣＰＵ１１が処理ＳＴ４の終了に伴って＋１ずつインクリメントするカウンタ（図示せず）を準備して、当該カウンタの値を４で除算した余りをワークレジスタ１５１に書き込んでも良い。
【００４６】
＜実施の形態２＞
次に、実施の形態２に係る半導体記憶装置を説明する。当該装置は既述の半導体記憶装置１（図１及び図３参照）と同等の構成を有しており、アドレスデコーダ２１におけるアドレス変換処理に特徴がある。このため、かかる点を中心に説明し、既述の構成要素と同等のものには同一の符号を付してその詳細な説明を援用する。図５に、アドレスデコード２１での実施の形態２に係るアドレス変換処理を説明するための模式図を示す。図５中のワークレジスタ１５２は既述のワークレジスタ１５１（図２参照）に相当する。
【００４７】
特に、実施の形態２に係るデータ処理管理部１０では、ＣＰＵ１１がワークバッファ１４１〜１４４の各順位を直接に指定してワークレジスタ１５２へ記述する。図５に示すように、例えばワークバッファ１４１，１４２，１４３，１４４をこの順序で順位付けする場合、ＣＰＵ１１は”４３２１”をワークレジスタ１５２へ書き込む。これにより、アドレスデコーダ２１はワークレジスタ１５２の値Ｒ１５２（＝”４３２１”）を参照して、ワークバッファ１４１，１４２，１４３，１４４にこの順序で降順の順位を付与し、当該降順の順位とアドレスＰ１→アドレスＰ２→アドレスＰ３→アドレスＰ４という順序（処理段階ＳＴ１〜ＳＴ４の降順の優先順位に対応）とを対応付ける。なお、この順位は、既述のワークレジスタ１５１に”１”を設定した場合に相当する（図２参照）。ここでは、”４３２１”を成す数字の並びの内で右側又は下位側ほど順位が高いものとする。このとき、”１”〜”４”の４種の数字（文字）から成る４桁の値を表記するために、ワークレジスタ１５２は１６bitレジスタで構成される。
【００４８】
同様に、ワークレジスタ１５２に”１４３２”を書き込むことにより、既述のワークレジスタ１５１に”４”を設定した場合に相当する順位付け及び対応付けができる（図２参照）。また、他の一例として、ワークレジスタ１５２の値Ｒ１５２が”３４２１”の場合、アドレスＰ１，Ｐ２，Ｐ３，Ｐ４とアドレスＡＤ１４１，ＡＤ１４２，ＡＤ１４４，ＡＤ１４３とがこの順序で対応付けられる。このとき、実施の形態１と同様に、各ワークバッファ１４１〜１４４が格納している内容ないしは情報を順次に移転する必要がない。
【００４９】
実施の形態２に係るデータ処理管理部１０によれば、各ワークバッファ１４１〜１４４の順位をワークレジスタ１５２へ書き込む値Ｒ１５２で以て任意に指定することができる。このため、一連の複数のデータ処理ＳＴ１〜ＳＴ４を各データの処理状況に応じて順序を変更してパイプライン処理する場合にも、当該管理部１０を適用可能である。以下に、このような処理順序を入れ替える場合の一例を挙げて、実施の形態２に係るデータ処理管理部１０をより詳しく説明する。なお、ここでは、フラッシュメモリ４５が２つのフラッシュメモリから成るものとする。
【００５０】
例えば図８中の状態Ｓ４（時刻ｔ３〜時刻ｔ４）においてデータＤ２が一方のフラッシュメモリに対して書き込まれている最中に、データＤ３に対するＥＣＣ付加処理ＳＴ２が終了している場合、図８に相当する図６中の状態Ｓ４ａに示すように、データＤ３を、待機中である他方のフラッシュメモリに書き込むことができる。ここでは、説明の理解を助けるため、データＤ１，Ｄ４はそれぞれ次の処理に移行しないものとする。
【００５１】
ところで、フラッシュメモリは例えば５１２Byte〜数ＫByte程度の大きさのブロック単位で消去及び書き込みをすることができる。上述の大きさ程度のブロックの書き込みには数μｓｅｃc〜数ｍｓｅｃかかるが、この書き込み時間は書き込みブロック毎にばらつきがある。かかる書き込み時間のばらつきに起因して、データＤ３の書き込みの方がデータＤ２のそれよりも先に終了する場合が生じうる。このとき、図６中の状態Ｓ４ｂに示すように、データＤ２の書き込み処理ＳＴ３及び確認処理ＳＴ４の終了を待つことなく、ＣＰＵ１１がデータＤ３の書き込み確認処理ＳＴ４を実行する。これにより、データＤ３の処理のために占有されていた第３ワークバッファ１４３を開放することができる。この開放の後、図６中の状態Ｓ４ｃに示すように、次のデータＤ５の取得処理ＳＴ１を実行する。
【００５２】
このとき、データＤ３が処理される処理段階ＳＴ２がデータＤ２が処理される処理段階ＳＴ３よりも後である状態Ｓ４ａから、データＤ３が処理される処理段階ＳＴ４がデータＤ２が処理される処理段階ＳＴ３よりも先である状態Ｓ４ｂへ遷移するのに伴って、ＣＰＵ１１は、ワークレジスタ１５２の値Ｒ１５２を”４３２１（図５参照）から”４２３１（図５参照）”へ変更する。即ち、図５に示す対応関係において、データＤ３に関する情報が格納されている第３ワークバッファ１４３のアドレスＡＤ１４３に対応するアドレスＰ３と、データＤ２に関する情報が格納されている第２ワークバッファ１４２のアドレスＡＤ１４２に対応するアドレスＰ２とを交替する。かかる交替により、ワークバッファ１４１〜１４４の降順の順位と、アドレスＰ１→アドレスＰ２→アドレスＰ３→アドレスＰ４という順序（即ち、処理段階ＳＴ１〜ＳＴ４の降順の優先順位）とを対応付けを変更することができる。このため、アドレスＰ１〜Ｐ４を用いることにより、処理段階ＳＴ１〜ＳＴ４に対応した、処理状況の管理を確実に行うことができる。
【００５３】
実際には、データＤ１に対する書き込み確認処理ＳＴ４は状態Ｓ４ａの時点で終了可能であるので、第１ワークバッファ１４１をも開放してそれの順位を下げることができる。また、データＤ２が書き込み処理ＳＴ３へ移行した時点で、データＤ４に対するＥＣＣ付加処理ＳＴ２が実行可能である。
【００５４】
なお、両データＤ２，Ｄ３のフラッシュメモリ４５への転送は、以下のように実施可能である。即ち、書き込み処理ＳＴ３は、（ｉ）セクタバッファ４３からフラッシュメモリ４５へのデータ転送処理と、（ｉｉ）フラッシュメモリ４５内で実行されるメモリセルへのデータ書き込み処理とに大別される。このため、前者のデータ転送処理（ｉ）の終了後にバスセレクタ回路４４を切り替えたとしても、後者の書き込み処理（ｉｉ）を実行可能である。また、前者（ｉ）の処理時間はμｓｅｃオーダーであるのに対して、後者（ｉｉ）のそれはｍｓｅｃオーダーである。従って、データＤ２，Ｄ３の一方が上述のメモリセルへのデータ転送処理（ｉ）が終了した後に、バスセレクタ回路４４を切り替えることによってデータＤ２，Ｄ３の他方を所定のフラッシュメモリへ転送する処理（ｉ）を行うことができる。勿論、バスセレクタ回路４４を、２つのデータの各々に対してバスを形成しうる構成としても良い。
【００５５】
このように、実施の形態２に係るデータ処理管理部１０によれば、各データに対する処理状況に応じてデータ処理の順序を入れ替える場合にも、ワークレジスタ１５２の値Ｒ１５２を適宜に変更することによって柔軟に対応することができる。その結果、処理順序の適正な変更によりパイプライン処理の高効率化が実現可能であるので、実施の形態１に係る半導体記憶装置１と比較して、より高効率で高速なデータ転送を実行することができる。
【００５６】
＜実施の形態３＞
データ処理管理部１０を、アドレスデコーダ２１を実施の形態１，２に係る双方のアドレス変換を実行可能な構成としても良い。このとき、例えばアドレスデコーダ２１内での制御によって又はＣＰＵ１１による制御によって、ワークレジスタ１５１，１５２の双方の値Ｒ１５１，Ｒ１５２が互いに反映されるようにする。例えば、実施の形態２に係るアドレス変換の後に実施の形態１に係るアドレス変換を行う場合、ワークレジスタ１５２に書き込んだ値Ｒ１５２を基にし、ワークレジスタ１５１の値Ｒ１５１に基づいてアドレスＰ１〜Ｐ４を循環的に変化させる。
【００５７】
かかる構成によれば、各データの処理状況に応じていずれかの方法で以てアドレスＰ１〜Ｐ４とアドレスＡＤ１４１〜ＡＤ１４４との対応関係を変更することにより、双方のアドレス変換方法が奏する効果を適宜に得ることできる。従って、両アドレス変換方法のいずれか一方のみを用いる場合と比較して、更に効率的なデータ転送を実行することができる。
【００５８】
なお、以上の説明ではホスト２からフラッシュメモリ４５へのデータ転送を主に述べたが、フラッシュメモリ４５からホスト２へデータを転送する場合にも上述のデータ処理管理部１０は適用可能である。また、データ処理管理部１０は、フラッシュメモリ４５に相当する記憶部とホスト２に相当する他の記憶部とが同一の装置内に存在する場合にも適用可能であることは明らかである。更に、各ワークレジスタ１５１，１５２へ書き込む値Ｒ１５１，Ｒ１５２の上記各表記方法はあくまで一例であり、種々の形式で表記可能であることは言うまでもない。
【００５９】
また、アドレスＰ１〜Ｐ４とアドレスＡＤ１４１〜１４４とを、処理状況の進行に伴って変動する対応関係で対応付ける処理は、パイプライン処理にも適用可能である。即ち、各データ処理が一連の処理を構成しない場合、換言すれば、複数のデータの全てが同一の処理を受けない場合であっても、同時に処理可能な複数の処理段階によって複数のデータの各々が順次に処理される場合には、上述の対応付けは可能であり、それによって各データの処理状況を管理することができる。
【００６０】
【発明の効果】
（１）請求項１に係る発明によれば、第１のアドレスはデータの処理段階に対応し、また、第１のアドレスはデータの処理状況の進行に伴って変動する対応関係で以て第２のアドレスと対応付けられる。このため、各管理用記憶部が格納している内容を処理状況の進行に伴って移転する必要がない。しかも、ＣＰＵはどのデータがどの処理段階において処理されているかを管理することなく、（複数の）第１のアドレスの選択によって所望の処理段階での処理状況を把握することができる。従って、処理状況を管理するために必要な処理量及び処理時間を従来よりも削減できる。このとき、処理状況を管理するためにＣＰＵが実行するプログラムを従来よりも単純化及び小容量化することができる。これらの結果、ＣＰＵの処理効率を向上することができる。
【００６１】
（２）請求項１に係る発明によれば、複数のデータがいずれも同一の処理を受ける際に各処理段階での（複数の）データの処理の順番が処理段階毎に変わらない又は異ならない場合には、第１のアドレスを循環的に変化させても、第１のアドレスの順序と第２のアドレスの順序との相対関係が崩れない。このため、ＣＰＵが所望の管理用記憶部にアクセスする際に、複数の第１のアドレスの内の一つに対するオフセットアドレスを用いることができる。このとき、ＣＰＵが実行するプログラム中に（複数の）第１のアドレスの全てを記述する必要性は無いので、上記プログラムの単純化及び小容量化を更に容易にすることができる。
【００６２】
（３）請求項２，３に係る発明によれば、第１のデータが処理されている処理段階と第２のデータが処理されている処理段階との先後関係がデータの処理状況に応じて変わる場合でも、（複数の）第１のデータを用いることにより、処理段階に対応した、処理状況の管理を確実に行うことができる。
【図面の簡単な説明】
【図１】  実施の形態１に係る半導体記憶装置の構成を説明するための模式的なブロック図である。
【図２】  実施の形態１に係るアドレス変換を説明するための模式図である。
【図３】  実施の形態１に係るデータ処理管理部の構成を説明するための模式的なブロック図である。
【図４】  アドレスの循環を説明するための模式的図である。
【図５】  実施の形態２に係るアドレス変換を説明するための模式図である。
【図６】  実施の形態２に係る半導体記憶装置の構成を説明するための模式的なブロック図である。
【図７】  ＣＰＵがパイプライン処理を行わずに一連の処理を実行する場合のタイミングチャートである。
【図８】  ＣＰＵがパイプライン処理を行って一連の処理を実行する場合のタイミングチャートである。
【図９】  ＣＰＵが使用するＲＡＭの従来のアドレス空間の模式図である。
【符号の説明】
１１  ＣＰＵ、１４，１４１〜１４４  ワークバッファ（管理用記憶部）、１０  データ処理管理部（データ処理管理装置）、２１  アドレスデコーダ（アドレス変換部）、ＡＤ１４１〜ＡＤ１４４  アドレス（第２のアドレス）、Ｄ１〜Ｄ５  データ、Ｐ１〜Ｐ４  アドレス（第１のアドレス）、Ｓ１〜Ｓ８，Ｓ４ａ，Ｓ４ｂ，Ｓ４ｃ  状態、ＳＴ１〜ＳＴ４  処理段階。
【図１】
0004201927.tif 000002
【図２】
0004201927.tif 000003
【図３】
0004201927.tif 000004
【図４】
0004201927.tif 000005
【図５】
0004201927.tif 000006
【図６】
0004201927.tif 000007
【図７】
0004201927.tif 000008
【図８】
0004201927.tif 000009
【図９】
0004201927.tif 000010