(57)【特許請求の範囲】
【請求項１】
中央処理装置と、外部バスを介して外部に接続されるメモリを制御可能なメモリコントローラと、を有するデータプロセッサであって、
前記メモリは、アドレス信号の下位側所定ビット数分のアドレス範囲のデータを一時的に保持することができるバッファを有し、アクセスアドレスが前記アドレス範囲で変化するアクセス要求に対して前記バッファと外部との間のデータ転送によってデータの入出力を行うバースト動作が可能にされ、
前記メモリコントローラは前記メモリを制御するとき、チップイネーブル信号、アウトプットイネーブル信号、及び前記アドレス信号を、前記外部バスを介して前記メモリへ出力し、
前記メモリコントローラは、前記メモリをバースト動作させてリードアクセスしているとき、前記下位側所定ビット数よりも上位のビットの変化から前記アドレス範囲を超えることで前記外部に接続されるメモリのバッファの境界を跨いだバーストアクセスを検出して休止信号が出力されたとき、前記チップイネーブル信号を出力し続け、前記アウトプットイネーブル信号を一旦ネゲートしてバースト動作を休止し、再び前記アウトプットイネーブル信号をアサートして、前記メモリのバースト動作を継続可能とするアクセス制御を行い、
前記メモリコントローラは、バースト回数を指定するフィールド、前記外部バスのバス幅を指定するフィールド、バースト２回目以降のアクセスタイムを指定するフィールド、メモリタイプを指定するフィールド、チップイネーブル信号をアサートしてからアウトプットイネーブル信号をアサートするまでに挿入するウェイトサイクル数を指定するフィールド、及びアウトプットイネーブル信号をアサートしてからデータを読み込むまでに挿入するウェイトサイクル数を指定するフィールドを備えたレジスタを有し、
前記メモリコントローラは、前記レジスタで指定されたバースト回数を計測するバースト回数カウンタと、前記中央処理装置からの開始アドレスに応じてバースト動作のアドレス信号を生成する回路と、前記アドレス範囲を超えるアクセスを検出するバースト休止検出回路を有し、
前記アドレス範囲を超えるアクセスを検出して前記バースト動作を休止した後、前記バースト回数カウンタは、前記レジスタに指定されたバースト回数に到達するまで計数を継続し、
前記バースト休止検出回路は、前記バースト回数カウンタと、前記レジスタに指定された前記バースト回数、前記バス幅、前記メモリタイプ及び、アクセス先のアドレス、アクセスサイズの情報および、前記前記バースト回数カウンタの計測値を元に、前記バッファが保持するデータのアドレス範囲を超えるリード要求を検出したときにバースト動作の休止を示す前記休止信号を生成するバースト休止判定回路を有するデータプロセッサ。
【請求項２】
前記メモリコントローラは、前記休止信号に応じて、前記レジスタに指定されたチップイネーブル信号をアサートしてからアウトプットイネーブル信号をアサートするまでに挿入するウェイトサイクル数の期間、前記アウトプットイネーブル信号をネゲートする請求項１記載のデータプロセッサ。
【請求項３】
前記メモリコントローラは、前記中央処理装置から前記開始アドレスを受けてリードアクセスを指示されることによって、前記レジスタの設定値に従って前記メモリに対するバースト動作を制御する請求項２記載のデータプロセッサ。
【請求項４】
前記メモリコントローラを介して前記メモリをアクセス可能なダイレクト・メモリ・アクセス・コントローラを有する請求項３記載のデータプロセッサ。
【請求項５】
前記レジスタの設定値で指定可能なバースト回数は、前記バッファの記憶容量をｍバイト、前記外部バスのビット数をｎバイトとするとき、最大でｍ／ｎとされる請求項４記載のデータプロセッサ。
【請求項６】
前記メモリはフラッシュメモリ、ＥＥＰＲＯＭ、マスクＲＯＭおよびＳＲＡＭから選ばれた単数又は複数のメモリである請求項５記載のデータプロセッサ。
【請求項７】
前記メモリコントローラは、前記レジスタのバースト回数の指定値に到達するまで前記バースト動作を継続し、前記バースト動作が継続する間、前記チップセレクト信号を出力する請求項６記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリコントローラを備えたデータプロセッサ、特にメモリに対するバーストアクセス制御に関し、例えば外部に接続されたフラッシメモリに対してバーストアクセス可能なデータプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
アドレスの入力に応答して一定のアクセスタイムの後にそのアドレスに記憶されているデータが読み出し可能にされるスタティックＲＡＭインタフェースを有するメモリでは、リード動作を高速化するためにバーストモードを採用することができる。例えば、電気的に書き換え可能なフラッシュメモリはメモリアレイとデータ入出力端子との間にバーストバッファを持つ。リード動作においてアドレス信号の上位側でメモリアレイから選択されたデータがバーストバッファに転送され、バーストバッファに転送されたデータはそのアドレス信号の下位側で選択されて外部に出力される。バーストバッファからのデータ出力はアウトプットイネーブル信号がイネーブルにされることによって可能にされる。この後、アウトプットイネーブル信号をイネーブルに保った状態で、バーストバッファの記憶容量の範囲でアドレス信号の下位側を変化させれば、バーストバッファに保持されているデータが外部に出力される。例えばバーストバッファのサイズが１６バイトのとき、バイトアドレスで下位側４ビット分のアドレス範囲のデータはバースト動作でバーストバッファから外部に出力することができる。【０００３】
なお、特許文献１には非同期の読出しに対してクロック同期でバースト読出しを可能にしたフラッシュメモリの記載がある。【０００４】
【特許文献１】特開平１１−３３９４８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明者はスタティックＲＡＭインタフェースを有するメモリをバースト動作させるアクセス制御形態について検討した。すなわち、バーストバッファの記憶容量に応ずるアドレス範囲を超えるアクセスを行う場合にはメモリアレイから複数回にわたりデータの読出しを行うことが必要になる。したがって、バースト回数の設定はバースト動作の開始アドレスを考慮しなければならない。例えば、データバス幅を１６ビット、バーストバッファのサイズを８ワード(１６バイト)とする。上位側アドレスＡ４〜Ａｘ(ｘは５以上の任意の整数)を固定し、下位側アドレスＡ１〜Ａ３の３ビットを変化させることにより、バーストバッファ内のデータを１ワード(１６ビット)単位で選択し、バーストアクセスを行うことができる。バーストアクセスの開始アドレスがＨ’００の場合、順次アドレスをＨ’０２、Ｈ’０４、Ｈ’０６、Ｈ’０８、Ｈ’０Ａ、Ｈ’０Ｃ、Ｈ’０Ｅの順に変化させることによってデータＤ０〜Ｄ７まで８回連続してバーストアクセスを行うことができる。この場合には、メモリコントローラには最高８回のバースト回数を設定すればよい。しかしながら、その設定で、バースト動作の開始アドレスがＨ’０８のとき、順次アドレスをＨ’０８、Ｈ’０Ａ、Ｈ’０Ｃ、Ｈ’０Ｅ、Ｈ’１０、Ｈ’１２、Ｈ’１４、Ｈ’１６の順に変化させると、バーストバッファの境界を跨ぐＨ’１０以降のデータは、期待するタイミングで出力されない。その理由は、アドレスがＨ’０ＥからＨ’１０に変化（アドレスの４ビット目が変化）したとき、メモリはバースト動作の１回目のアクセスと認識し、メモリアレイからバーストバッファへのデータ読み込みが発生し、期待するアクセスタイムでデータを出力することができないためである。このような不都合を生じないようにするには、バーストバッファの境界を跨いだバーストアクセスが起こらないように、アドレスＨ’０８のような途中のアドレスから開始するバーストアクセスをソフトウェアで禁止したり、或いは、許容する開始アドレスがＨ’００でもＨ’０８でも期待するデータを出力できるように、メモリコントローラに設定可能なバースト回数の値を例えば４回以下に制限することが考えられる。しかしながら、どちらの方法でもメモリアクセスによるデータ転送性能の低下を免れない。【０００６】
本発明の目的はメモリとの間でバーストアクセスによるデータ転送性能を向上させることができるデータプロセッサを提供することにある。【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。【０００９】
〔１〕データプロセッサは中央処理装置と外部に接続されるメモリ（８）を制御可能なメモリコントローラ（６）とを有する。前記メモリは、アドレス信号の下位側所定ビット数分のアドレス範囲のデータを一時的に保持することができるバッファ（２５）を有し、アクセスアドレスが前記アドレス範囲で変化するアクセス要求に対して前記バッファと外部との間のデータ転送によってデータの入出力を行うバースト動作が可能にされる。前記メモリコントローラは、前記メモリをバースト動作させてアクセスしているとき、前記アドレス範囲を超えるアクセスを検出したときは前記メモリのバースト動作を継続可能とする所定のアクセス制御を行う。これにより、メモリコントローラは前記メモリをバーストアクセスしているとき、前記アドレス範囲を超えるアクセスを検出したときは前記メモリのバースト動作を継続可能とするアクセス制御を行うから、前記アドレス範囲を超えるバーストアクセスを制限したり、バースト回数を制限することを要せず、バーストアクセスによるデータ転送性能を向上させることができる。【００１０】
本発明の具体的な形態では、前記メモリコントローラは、前記下位側所定ビット数よりも上位のビットが変化するか否かによって前記アドレス範囲を超えるアクセスを検出する。【００１１】
本発明の別の具体的な形態では、前記メモリコントローラは、前記アドレス範囲を超えるアクセスを検出したときは、その前記メモリに対するアドレスの出力期間を延ばす制御を行って、メモリのバースト動作を継続可能にする。前記アドレスの出力期間を延ばす制御は、例えば、リード要求に応答しているときはバッファのデータが更新されるのに必要な時間を確保する制御である。これにより、期待するデータの出力を待つことができる。更に、前記アドレスの出力期間を延ばす制御に並行して、アウトプットイネーブル信号などによって前記バッファからのデータ出力タイミングを遅延させる制御を行ってもよい。尚、ライト要求に応答しているときはバッファのデータを書込み系回路に転送するのに必要な時間を確保する制御である。バッファから内部転送される書込みデータによって書込み系回路内に既に保持されている書込みデータが不所望に上書きされるのを防止するためのデータ転送の完了を待つことができる。【００１２】
本発明の更に具体的な形態では、データプロセッサは中央処理装置以外のバスマスタとして前記メモリコントローラを介して前記メモリをアクセス可能なダイレクト・メモリ・アクセス・コントローラを有してもよい。【００１３】
本発明の更に具体的な形態では、前記メモリコントローラは、前記中央処理装置によって値が設定可能にされるレジスタ（１６）を有し、前記レジスタに設定される値は、外部メモリ空間毎に、外部メモリが接続される外部バスのバス幅、バースト回数を指定する。メモリに対するバーストアクセスの形態に柔軟性を得ることができる。このとき、前記レジスタの設定値で指定可能なバースト回数は、前記バッファの記憶容量をｍバイト、前記外部バスのビット数をｎバイトとするとき、最大でｍ／ｎとされる。前記メモリは例えばフラッシュメモリ、ＥＥＰＲＯＭ、マスクＲＯＭおよびＳＲＡＭから選ばれた単数又は複数のメモリである。【００１４】
〔２〕別の観点によるデータプロセッサは外部に接続されるメモリを制御可能なメモリコントローラを有する。前記メモリは、メモリアレイと、アドレス信号の下位側所定ビット数分のアドレス範囲で前記メモリアレイから読み出されたデータを一時的に保持することができるバッファを有し、アクセスアドレスが前記アドレス範囲で変化するリードアクセス要求に応ずるデータが前記バッファに保持されているときはデータを前記バッファから外部へ出力するバーストリード動作が可能にされる。前記メモリコントローラは、前記メモリをバーストリード動作させているとき、前記アドレス範囲を超えるリード要求を検出したときはそのリード要求に応答するメモリ動作によってバッファのデータが更新されるのに必要な時間を確保する制御を行って、前記メモリのバーストリード動作を継続させる。これにより、メモリコントローラは前記メモリをバーストリードアクセスしているとき、前記アドレス範囲を超えるアクセスを検出したときは前記メモリのバーストリード動作を継続可能とするアクセス制御を行うから、前記アドレス範囲を超えるバーストリードアクセスを制限したり、バースト回数を制限することを要せず、バーストアクセスによるデータ転送性能を向上させることができる。【００１５】
〔３〕別の観点によるデータプロセッサは外部に接続されるメモリを制御可能なメモリコントローラを有する。前記メモリは、メモリアレイと、アドレス信号の下位側所定ビット数分のアドレス範囲で前記メモリアレイから読み出されたデータを一時的に保持することができるバッファを有し、アドレス信号の入力に応答して所定のアクセスタイムの後にそのアドレス信号で指定されるアドレスの記憶情報が外部に出力可能にされる。前記メモリコントローラは、前記バッファが保持するデータの前記アドレス範囲を超えるリード要求を検出したときはそのリード要求に応答するメモリ動作によってバッファのデータが更新されるのに必要な時間を確保するアクセス制御を行う。アドレス信号の入力に応答して所定のアクセスタイムの後に記憶情報が外部に出力可能にされるスタティックＲＡＭインタフェースを有するとき、バッファが保持するデータの範囲でアクセスが連続するときはメモリアレイにおける選択は変わりないから短いアクセスサイクルで必要なデータを読み出すことができ、そのアドレス範囲を超えたリード要求に対してはメモリアレイで選択されたデータがバッファに内部転送されるまでの時間を確保すれば、その後も前記短いアクセスサイクルで必要なデータを読み出す動作を継続させることが可能になる。
【発明の効果】
【００１６】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。【００１７】
すなわち、メモリとの間でバーストアクセスによるデータ転送性能を向上させることができる。
【図面の簡単な説明】
【００１８】
【図１】データプロセッサの一例を示すブロック図である。
【図２】フラッシュメモリの一例を示すブロック図である。
【図３】シングルリードのタイミングチャートである。
【図４】バーストリードのタイミングチャートである。
【図５】バースト動作を継続させるための制御によるバーストリードのタイミングチャートである。
【図６】バッファ境界とアドレスとの関係を例示する説明図である。
【図７】開始アドレスがアドレスバッファ境界のＨ’００の場合にバーストアクセスがバッファ境界を跨がないので途中でＯＥ＃をネゲートすることなく８回連続のバーストアクセスを行うときのタイミングチャートである。
【図８】１６バイトのバッファに対しバースト回数を８回に設定し、開始アドレスをバッファ境界の途中のアドレスＨ’０８としてバースト動作を継続させるための制御を行わなかったときのバーストリードのタイミングチャートである。
【図９】ＢＳＣに割り当てられたローカルアドレス空間のアドレスマップである。
【図１０】バースト動作の継続制御に関連するレジスタＣＳｎＢＣＲのフィールド説明図である。
【図１１】バースト動作の継続制御に関連するレジスタＣＳｎＷＣＲのフィールド説明図である。
【図１２】バースト休止検出回路（ＢＳＴＥＤ）１８の一例を示すブロック図である。
【図１３】３２バイトバーストアクセスにおけるバースト動作開始アドレスとバースト回数などの設定の組み合わせよるバースト動作の継続制御形態を例示する説明図である。
【符号の説明】
【００１９】
１  データプロセッサ
２  内部バス
３  ＣＰＵ
６  バスステートコントローラ（メモリコントローラ）
７  外部バス
８  フラッシュメモリ（メモリ）
１０  内部バスインタフェース回路
１１  外部バスインタフェース回路
１３  アクセス制御ステートマシン
１４  ウェイト制御回路
１５  バースト制御回路
１６  制御レジスタ
１７  制御レジスタ
１８  バースト休止検出回路
１９  バーストアドレス生成回路
２０  メモリアレイ
２５  出力バッファ（バーストバッファ）
２８  制御回路
３０  バースト動作の引き延ばし指示信号
３１  バースト中を示す信号
３３  アドレス制御ロジック
３４  アドレスカウンタ
３５  バースト休止判定回路
３６  バースト回数カウンタ
【発明を実施するための最良の形態】
【００２０】
図１にはデータプロセッサの一例が示される。データプロセッサ１は、特に制限されないが、単結晶シリコンなどの半導体基板に相補型ＭＯＳ集積回路製造技術などによって形成される。データプロセッサ１は、代表的に示された内部バス２に、バスマスタとして中央処理装置（ＣＰＵ）３とダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）４を有し、インタフェースコントローラとしてＰＣＩＣ（ペリフェラル・コンポーネント・インターコネクト・コントローラ）５を有し、外部メモリコントローラとしてバスステートコントローラ（ＢＳＣ）６を有する。ＣＰＵ３は命令制御部と実行部とを有し、命令制御部が命令をフェッチして解読し、解読結果にしたがって実行部による演算を制御して、命令を実行する。ＤＭＡＣ４はＣＰＵ３によって設定されたデータ転送制御条件にしたがってシングルアドレス転送やデュアルアドレス転送を行う。ＰＣＩＣ５にはＰＣＩバスが接続される。【００２１】
前記ＢＳＣ６は内部バス２に接続する内部バスインタフェース回路（ＩＢＩＦ）１０、外部バス７に接続する外部バスインタフェース回路（ＥＢＩＦ）１１を有する。ＩＢＩＦ１０とＥＢＩＦ１１との間でのデータの受け渡しはデータバッファ（ＤＢＵＦ）１２を介して行う。外部バス７に接続されるメモリなどに対するストローブ信号の出力タイミングやアクセスサイクルなどの制御はアクセス制御ステートマシン（ＡＣＳＭ）１３の出力にしたがって外部バス制御回路１１によって行われる。アクセス制御ステートマシン１３による状態遷移制御は、ウェイト制御回路（ＷＳＣＮＴ）１４から出力される制御情報、バースト制御回路（ＢＳＴＣＮＴ）１５から出力される制御情報、ＩＢＩＦ１０から出力されるアドレスやアクセスサイズなどの情報が参照されて行われる。前記ＢＳＣ６はＣＰＵ３によって値が設定可能にされる制御レジスタ（ＣＳｎＢＣＲ）１６及び制御レジスタ（ＣＳｎＷＣＲ）１７を有する。外部バス７には代表的に示された外部メモリとしてフラッシュメモリ（ＦＬＡＳＨ）８が接続される。【００２２】
前記ＢＳＣ６は、例えばＣＰＵ３からアドレス及びアクセスサイズの指定を受けてリードアクセスが指示されると、アドレスで指定されるアドレスエリアを判定し、判定されたアドレスエリアに対応される前記レジスタ１６，１７の設定に従って、アクセス制御ステートマシン１３による状態遷移制御に基づいて、指定アドレスを先頭としアクセスサイズに対応するバースト回数でフラッシュメモリ８に対してバーストリードアクセスを制御する。バースト制御回路１５は、ＣＰＵ３などから供給されるアドレスを先頭として、バーストアクセスに必要なアドレスインクリメントを行う。更に、バースト制御回路（ＢＳＴＣＮＴ）１５は実行したバースト回数の管理、そして、途中でバーストアクセスの中断が必要な場合にその指示を外部インタフェース回路１１に与えたりする制御を行う。ウェイト制御回路（ＷＳＣＮＴ）１４はアクセスサイクルにおける必要なウェイトサイクルの指示をアクセス制御ステートマシン（ＡＣＳＭ）１３に与える。【００２３】
前記ＢＳＣ６の詳細を説明する前に先ず前記フラッシュメモリ８について説明する。【００２４】
図２にはフラッシュメモリ８の一例が示される。フラッシュメモリ８は単結晶シリコンなどの１個の半導体基板に形成される。【００２５】
フラッシュメモリ８は、チップイネーブル信号ＣＥ＃、ライトイネーブル信号ＷＥ＃、アウトプットイネーブル信号ＯＥ＃及びリセット信号ＲＥＳ＃などのアクセス制御信号が入力され、動作電圧として電源電圧ＶＤＤ、接地電圧ＶＳＳ、書込み・消去処理のための高電圧ＶＰＰが供給される。アドレス信号Ａ０〜Ａ２１はアドレス入力端子若しくはアドレス信号である。Ｄ０〜Ｄ１５はデータ入出力端子若しくはデータである。前記アクセス制御信号に付された記号＃はその信号がローイネーブル信号であることを意味する。【００２６】
２０で示されるものはメモリアレイ（ＭＡＲＹ）であり、メモリマット及びセンスラッチ回路を有する。メモリマットは電気的に消去及び書込み可能な不揮発性メモリセルを多数有し、特に制限されないが、不揮発性メモリセルのデータ端子がビット線に並列に接続される、ＡＮＤ或いはＮＯＲ型などのアレイ形態を形成する。【００２７】
不揮発性メモリセルは、特に図示はしないが、フローティングゲートに絶縁膜を介してコントロールゲートを重ねたスタックドゲート構造、或いは選択トランジスタとシリコン窒化膜を有する記憶トランジスタとを直列配置したスプリットゲート構造など適宜のメモリセル構造を採用可能である。例えばスタックドゲート構造の不揮発性メモリセルの場合、コントロールゲートはワード線に、ドレインはビット線に、ソースはソース線に接続される。スタックドゲート構造の不揮発性メモリセルに対する消去処理は、特に制限されないが、消去バイアスとしてコントロールゲートに正の高電圧を印加しフローティングゲートの電子を放出させることで閾値電圧を低くする処理とされる。スタックドゲート構造の不揮発性メモリセルに対する書込み処理は、特に制限されないが、書込みバイアスとしてドレインに負の高電圧を印加しフローティングゲートに電子を注入することで閾値電圧を高くする処理とされる。読出し処理は、所定の読出し判定レベルをワード線選択レベルとしてメモリセルトランジスタを選択してビット線に流れる電流変化若しくはビット線に現れるレベル変化によって記憶情報を検出可能にする処理とされる。【００２８】
前記ワード線及びソース線はＸデコーダ（ＸＤＥＣ）２１の出力で選択される。ビット線にはデータレジスタ（ＤＲＥＧ）２２が接続され、ワード線選択によって不揮発性メモリセルからビット線に読み出されたデータを保持し、或いは書き込みデータを保持する。Ｙゲート（ＹＧＴ）２３はデータレジスタ２２の入出力ノードを１６バイト単位で選択するスイッチ回路によって構成され、スイッチ回路はＹデコーダ（ＹＤＥＣ）２４の出力で選択される。Ｙゲート２３で選択されたデータレジスタ２２の１６バイトの入出力ノードは、出力バッファ（ＯＢＵＦ）２５の入力端子に接続され、また、入力バッファ（ＩＢＵＦ）２６の出力端子に接続される。出力バッファ２５及び入力バッファ２６はバースト動作に用いられるバーストバッファとされ、各々１６バイトの記憶容量を有する。出力バッファ２５の１６バイトの記憶部は２バイト単位で選択可能にされ、選択された２バイトは出力端子を介して１６ビットのデータ入出力端子Ｄ０〜Ｄ１５に接続される。同様に入力バッファ２６の１６バイトの記憶部も２バイト単位で選択可能にされ、選択された２バイトは入力端子を介して１６ビットのデータ入出力端子Ｄ０〜Ｄ１５に接続される。１６バイトの記憶部に対する２バイトの選択はバッファデコーダ（ＢＤＥＣ）２７の出力によって行われる。バッファデコーダ２７には下位４ビットのアドレス信号Ａ０〜Ａ３が与えられる。ＹＤＥＣ２４にはその上位のアドレス信号Ａ４〜Ａｍが与えられ、ＸＤＥＣ２１には更に上位側のアドレス信号Ａｎ〜Ａ２１が与えられる。【００２９】
フラッシュメモリ８の動作制御は制御回路（ＣＯＮＴ）２８が行い、書込み・消去処理に必要な高電圧などの内部電圧は電源回路２９が出力する。フラッシュメモリ８の動作は前記アクセス制御信号及びコマンドによって制御回路２８に指示される。コマンドは前記アクセス制御信号の特定の状態に応答してデータ入出力端子Ｄ０〜Ｄ１５から入力される。【００３０】
不揮発性メモリセルに対する消去処理及び書き込み処理の開始やベリファイ処理は、特に制限されないが、コマンドによって指示される。書き込み処理に用いられる書込みデータは、チップイネーブル信号ＣＥ＃がイネーブルにされ、ライトイネーブ信号ＷＥ＃がイネーブルにされたとき、アドレス信号の変化に従って入力バッファ２６に入力され、入力バッファ２６からＹＧＴ２３を介してデータレジスタ２２に内部転送されることによって入力される。書き込みデータを入力するときは後述のバースト動作を利用することができる。書き込み処理ではデータレジスタ２２が保持する書込みデータの論理値に従って、書込み電圧印加の選択と非選択が制御される。なお、書込み処理の前には予め記憶情報をデータレジスタ２３に退避した状態で書き込み処理対象とされる１ワード線分の不揮発性メモリセルが消去処理されている。【００３１】
読出し動作ではフラッシュメモリは、アドレスの入力に応答して一定のアクセスタイムの後にそのアドレスに記憶されているデータが読み出し可能にされるスタティックＲＡＭインタフェースを実現している。すなわち、チップイネーブル信号ＣＥ＃がイネーブルにされ、アウトプットイネーブル信号ＯＥ＃がイネーブルにされたとき、アドレス信号によってメモリアレイから選択され、ＹＧＴ２３で選択され、ＯＢＵＦ２５で選択された記憶データが外部に出力される。この動作はシングルリードであり、シングルリードの後、ＯＢＵＦ２５の記憶容量に応ずるＡ０〜Ａ３の下位アドレスの範囲でアドレス信号が変化されるときは、メモリアレイにおける選択及びＹＧＴ２３による選択状態は変化しないから、そのままアウトプットイネーブル信号ＯＥ＃をイネーブルレベルに維持してデータ出力動作を可能にしておけば、シングルリードよりも短いアクセスサイクルでＯＢＵＦ２５に保持されているデータを選択してデータ端子Ｄ０〜Ｄ１５から外部に出力することができる。この動作がバーストリードである。【００３２】
図３にはシングルリードのタイミングチャートが例示される。ＣＰＵ３の動作クロックサイクルをｃｙｃとすると、各メモリサイクルは３サイクルとされる。【００３３】
図４にはバーストリードのタイミングチャートが例示される。最初のアクセスはシングルリードと同じく３サイクルで行われ、その後は出力バッファ２５から外部端子Ｄ０〜Ｄ１５へのデータ転送によってリード動作行うのに必要な２サイクルでメモリ動作が行われる。Ａ，Ｂはアドレスが変化されてからデータが出力されるまでの時間を意味する。【００３４】
前記ＢＳＣ６のバースト制御回路１５は、前記フラッシュメモリ８をバーストリード動作させているとき、前記Ａ０〜Ａ４のアドレス範囲を超えるリード要求を検出したときはそのリード要求に応答するメモリ動作によってバッファ２５のデータがメモリアレイ２０からのデータによって更新されるのに必要な時間を確保する制御を行って、前記メモリのバーストリード動作を継続させる。見方を変えれば、前記バッファ２５が保持するデータのアドレス範囲（Ａ０〜Ａ４可変の範囲）を超えるリード要求を検出したときはそのリード要求に応答するメモリ動作によってバッファ２５のデータがメモリアレイ２０からのデータによって更新されるのに必要な時間を確保するアクセス制御を行う。【００３５】
図５には前記バースト動作を継続させるための制御によるバーストリードのタイミングチャートが示される。１６バイトのバッファ２５に対し、バースト回数を８回に設定し、開始アドレスをバッファ境界の途中のアドレスＨ’０８とする。ここで考えるバッファ境界とアドレスとの関係は図６に例示される。そうすると、バーストアクセスの途中でアドレスビットＡ４が変化する（時刻Ｔｉ）。要するに、アクセスアドレスが、バッファ２５が保持するデータのアドレス範囲（Ａ０〜Ａ４可変の範囲）を超えることになる。このとき、ＢＳＣ６はアウトプットイネーブル信号ＯＥ＃をネゲートし、次のアクセス（アドレスＨ’１０に対するアクセス）のアクセスタイムをバーストアクセスの１回目と同じになるようなタイミングまで待って、再びアウトプットイネーブル信号ＯＥ＃をアサートする。これにより、Ａ０〜Ａ４がＨ’１０に変化されたアクセスアドレスのデータがメモリアレイ２０からバッファ２５に転送されるのを待って、データを外部に出力することができる。この後は、アウトプットイネーブル信号ＯＥ＃は最後までアサートされ、その間バーストリードが繰り返される。【００３６】
図７のように、開始アドレスがアドレスバッファ境界のＨ’００の場合には、バーストアクセスはバッファ２５の境界を跨がないので、途中でＯＥ＃をネゲートすることなく８回連続のバーストアクセスが行われる。【００３７】
図８には１６バイトのバッファ２５に対し、バースト回数を８回に設定し、開始アドレスをバッファ境界の途中のアドレスＨ’０８として、前記バースト動作を継続させるための制御を行わなかったときのバーストリードのタイミングチャートが示される。バッファ境界を越えるアクセスでも同じアクセスサイクルにされる結果、Ａ０〜Ａ４がＨ’１０に変化されたアクセスアドレスのデータがメモリアレイ２０からバッファ２５に転送されるのを待たずに外部への出力が確定され、しかもアドレスも次に変化される結果、少なくともＨ’１０のリードデータ、更にはそれ以降のデータが不所望な値に変化される虞がある。【００３８】
次に、前記バースト動作の継続制御をサポートするバスステートコントローラ（ＢＳＣ）６の詳細を説明する。【００３９】
図９にはＢＳＣ６に割り当てられたローカルアドレス空間のアドレスマップが示される。前記バースト動作の継続制御は、エリア３と７を除くアドレス空間、すなわち、バーストＲＯＭが選択可能なアドレス空間において有効とされるようになっている。【００４０】
図１０には前記バースト動作の継続制御に関連するＣＳｎＢＣＲ１６のレジスタフィールドが示される。図１１には前記バースト動作の継続制御に関連するＣＳｎＷＣＲ１７のレジスタフィールドが示される。前記レジスタ１６，１７は図９のアドレス空間のエリア毎に設けられている。【００４１】
ＢＳＴ１−０の２ビットのフィールドはバースト回数を指定するフィールドである。００：最高４回、０１：最高８回、１０：最高１６回（バス幅８,１６ビット設定時のみ）、１１：最高３２回（バス幅８ビット設定時のみ）である。【００４２】
ＳＺ１−０の２ビットフィールドはバス幅を指定するフィールドである。００：設定禁止、０１：８ビット、１０：１６ビット、１１：３２ビットである。【００４３】
ＢＷ２−０の３ビットフィールドはバースト・ピッチ（バースト２回目以降のアクセス・タイム）を指定するフィールドである。０００：なし、００１：１サイクル、０１０：２サイクル、０１１：３サイクル、１００：４サイクル、１０１：５サイクル、１１０：６サイクル、１１１：７サイクルである。【００４４】
ＴＹＰＥ２−０の３ビットフィールドは接続するメモリ・タイプを指定するフィールドである。０００：ＳＲＡＭ、００１：バイト制御ＳＲＡＭ、０１０：バーストＲＯＭ、１００：ＰＣＭＣＩＡである。ＰＣＭＣＩＡはPersonal Computer Memory Card International Associationの規格に準拠するメモリカードを意味する。【００４５】
ＲＤＳ２−０の３ビットフィールドはチップイネーブル信号ＣＥ＃をアサートしてからアウトプットイネーブル信号ＯＥ＃をアサートするまでに挿入するウェイトサイクル数を指定するフィールドである。０００：なし、００１：１サイクル、０１０：２サイクル、０１１：３サイクル、１００：４サイクル、１０１：５サイクル、１１０：６サイクル、１１１：７サイクルとされる。サイクルとは例えばＣＰＵの動作クロックサイクルｃｙｃを意味する。【００４６】
ＩＷ３−０の４ビットフィールドはアウトプットイネーブル信号ＯＥ＃をアサートしてからデータを読み込むまでに挿入するウェイトサイクルを指定するフィールドである。００００：なし、０００１：１サイクル、００１０：２サイクル、００１１：３サイクル、０１００：４サイクル、０１０１：５サイクル、０１１０：６サイクル、０１１１：７サイクル、１０００：８サイクル、１００１：９サイクル、１０１０：１１サイクル、１０１１：１３サイクル、１１００：１５サイクル、１１０１：１７サイクル、１１１０：２１サイクル、１１１１：２５サイクルである。【００４７】
前記バースト動作の継続制御はメモリタイプをバーストＲＯＭに設定したときに有効になる。バーストアクセスの１回目のアクセスタイムはＣＳｎＷＣＲのフィールドＩＷ３−０の設定で指定される。【００４８】
図１２にはＢＳＣ６の詳細な一例が示される。ＢＳＣ６はバースト休止検出回路（ＢＥＤＴＣ）１８及びバーストアドレス生成回路（ＢＡＧＥＮ）１９を有する。バーストアクセスのためのアドレス生成はバーストアドレス生成回路（ＢＡＧＥＮ）１９が行い、ＢＡＧＥＮ１９はアドレス制御ロジック（ＢＡＬＯＧ）３３及びアドレスカウンタ（ＡＣＯＵＮＴ）３４を有する。バーストバッファとしての出力バッファ２５の境界を跨ぐアクセス検出はバースト休止検出回路（ＢＥＤＴＣ）１８が行い、ＢＥＤＴＣ１８はバースト休止判定回路（ＢＥＤＣＳ）３５及びバースト回数カウンタ（ＢＣＯＵＮＴ）３６を有する。【００４９】
前記アドレス制御ロジック３３は、エリア毎に前記レジスタ（ＣＳｎＢＣＲ）１６のフィールドＢＳＡＴ１−０に設定されたバースト回数（ＢＳＡＴ）、フィールドＳＺ１−０に設定されたバス幅（ＳＺ）、フィールドＴＹＰＥ２−０に設定されたメモリタイプ（ＴＹＰＥ）及びアクセス先のアドレス（ＡＤＲ）とアクセスサイズ（ＡＳＺ）の情報を入力して、アドレス（ＡＤＲ）を先頭とするバーストアドレスＢＡＤＲをアドレスカウンタ３４に生成させる。アドレスカウンタ３４によるアドレスインクリメントの大きさと回数はバス幅とアクセスサイズ（ＡＳＺ）に応じて決定される。ＢＡＬＯＧ３３はバースト中を示す信号３１を外部インタフェース回路１１に出力する。【００５０】
バースト休止判定回路３５は、エリア毎に前記レジスタ（ＣＳｎＢＣＲ）１６のフィールドＢＳＡＴ１−０に設定されたバースト回数（ＢＳＡＴ）、フィールドＳＺ１−０に設定されたバス幅（ＳＺ）、フィールドＴＹＰＥ２−０に設定されたメモリタイプ（ＴＹＰＥ）及びアクセス先のアドレス（ＡＤＲ）とアクセスサイズ（ＡＳＺ）の情報を入力して、更にバースト回数カウンタ３６の計数値を入力し、それらに基づいて、前記バッファ２５が保持するデータのアドレス範囲（Ａ０〜Ａ４可変の範囲）を超えるリード要求を検出したとき、バーストアクセスの休止を示すバースト休止指示信号３０をアクセス制御ステートマシン１３に与える。バースト休止が指示されたステートマシン１３は、次アクセスのアクセスタイムがシングルアクセスと同様になるよう、外部インタフェース回路１１に指示する。これによって外部インタフェース回路１１は図５の時刻Ｔｉで例示されるように、アウトプットイネーブル信号ＯＥ＃をネゲートする。バースト制御回路１５はバースト中を示す信号３１を外部インタフェース回路１１に出力しており、外部インタフェース回路１１はバースト中ならばアウトプットイネーブル信号ＯＥ＃をアサートし続ける。前記バースト休止指示信号３０によってバースト休止が検出されると、アウトプットイネーブル信号ＯＥ＃がネゲートされる。バースト回数カウンタ３６は、アドレスカウンタ３４のインクリメント指示信号ＩＮＣによって＋１のインクリメント動作を行って総バースト回数を計数する。バースト休止判定回路３５はバースト回数カウンタ３６の計数値が、レジスタに指定されているバースト回数、アクセスサイズ及びバス幅から決まる総バースト回数に到達するまでバースト休止判定を行う。【００５１】
図1に示される前記ウェイト制御回路１４にはレジスタ（ＣＳｎＢＣＲ）１６のフィールドＢＷ２−０に設定されたバーストピッチ（ＢＷ）、レジスタ（ＣＳｎＷＣＲ）１７のフィールドＲＤＳ２−０とＩＷ３−０に設定されたウェイト数（ＲＤＳ，ＩＷ）が供給され、それらによって指示されたウェイトサイクルの挿入をアクセス制御ステートマシン１３に指示する。ウェイトサイクルの挿入が指示されたアクセス制御ステートマシン１３は、指示されたウェイトサイクル数に従って、ＣＥ＃アサート後におけるＯＥ＃のアサートタイミング、ＯＥ＃アサート後におけるリードデータの読み込みタイミング、バースト動作中におけるリードデータの読み込みタイミングなどを外部インタフェース回路１１に制御させる。前記バースト休止指示信号３０によってバースト休止が検出されることによってアウトプットイネーブル信号ＯＥ＃がネゲートされたとき(図５時刻Ｔｉ)、アウトプットイネーブル信号ＯＥ＃をアサートするタイミングは、前記フィールドＲＤＳ２−０で指定されたウェイトサイクル数にしたがってアクセス制御ステートマシン１３が外部インタフェース回路１１に制御させることになる。【００５２】
尚、特に図示はしないが、前記バースト動作の継続制御以外の制御のために、レジスタ１６，１７のその他の設定値はＡＣＳＭ１３に供給されている。【００５３】
図１３には３２バイトバーストアクセスにおけるバーストアクセス開始アドレスとバースト回数などの設定の組み合わせによるバースト動作の継続制御形態が例示される。図１３はアクセスサイズが３２バイトバーストアクセスの場合について示しており、バス幅、バースト回数は３２バイトのアクセスサイズに整合する回数が示されている。バーストアクセス開始アドレスは図１３に示される態様で選択可能にされ、その右側欄には３２バイトのアクセスサイズに至るまで、バッファ境界を跨ぐときの下位アドレスが順次示されている。要するに、図１３はバス幅やバーストバッファサイズの異なる種々の外部メモリに対するＢＳＣ６による３２バイトバーストアクセスの制御仕様を示していると理解されたい。特に、図１３において太枠領域内に記載されたアドレスから始まるアクセスに対して前記バーストアクセスの継続制御が行なわれる。【００５４】
例えば、図２のフラッシュメモリ８の場合、バス幅１６ビット、バースト回数が４回又は８回のバーストアクセスが許容される。図２のフラッシュメモリ８が有するバーストバッファ２５の記憶容量は１６バイトだからである。データプロセッサ１がフラッシュメモリ８に対してバス幅１６ビット、バースト回数が８回のバーストアクセスを行う場合、バーストアクセスの開始アドレスがＨ’００であれば、Ｈ’００から８回、アドレスはＨ’１０から８回の合計１６回バーストアクセスが行われる。これに対し、開始アドレスがＨ’０８のときは、前記バースト動作の継続制御が行われ、バッファ境界のアドレスＨ’１０、Ｈ’００において、アクセスサイクルがシングルリードと同様に延長されて合計３２バイトのバーストアクセスが行われる。要するに、Ｈ’０８から８回、Ｈ’１０から１６回、Ｈ’００から８回の合計１６回のバーストアクセスが行われる。このようにバーストアクセスが行われる場合であってもバースト回数８回でアクセスサイズ３２バイトの指示が与えられればよい。バースト回数４回でアクセスサイズ８バイト、バースト回数８回でアクセスサイズ１６バイト、バースト回数４回でアクセスサイズ８バイトの３回に分けてのバーストアクセスの指示を行わなくてよい。尚、特に制限されないが、データプロセッサは開始アドレスがバーストバッファ２５の境界でないときはバーストバッファ２５を３２バイトの範囲でラップアラウンドで選択する仕様を有している。このため、前記バーストアクセスでは開始アドレスＨ’０８のときバーストアドレスは途中でＨ’１０、Ｈ’００を通って最後にＨ’０７に達するようにされる。【００５５】
以上説明したように、ＢＳＣ６は、フラッシュメモリ８へのバーストアクセス実行中に、フラッシュメモリ８内部のバーストバッファ２５境界を跨ぐ場合、フラッシュメモリ８のバースト動作を一時休止して、フラッシュメモリ８のメモリアレイ２０からバーストバッファ２５へのデータ読み込みが完了するまで待ち、再度フラッシュメモリ８のバースト動作を継続させる。ＢＳＣ６はフラッシュメモリ８のバースト動作を一時休止するときには、アウトプットイネーブル信号ＯＥ＃をネゲートし、アドレスを出力する期間をバーストアクセスの最初のメモリアクセスと同じにすることで、バーストバッファ２５にデータが読み込まれるのを待つ。これにより、フラッシュメモリ８に対するアクセスのスループットを向上することができ、また、ひとつのデータプロセッサでより多くの品種の外部メモリを動作させることができる。バーストバッファ境界を跨いだバーストアクセスが起こらないように、バーストバッファの途中から始まるバーストアクセスをソフトウェアで禁止したり、バースト回数を制限して途中でバッファ境界を跨ぐことのないように制限することを一切要しない。【００５６】
尚、フラッシュメモリは書き込みデータを入力するとき、バースト動作可能であってもよい。すなわち、入力バッファ２６からＹＧＴ２３を介してデータレジスタ２２に書き込みデータを取り込むとき、データプロセッサ１はバーストライトアクセスによって書き込みデータを入力バッファ２６に書き込むようにしてもよい。このとき、書込みアドレスのＡ４より上位が変化する前に書き込みデータを入力バッファ２６からデータレジスタ２２に内部転送することが必要である。バーストアクセス中に書込みアドレスのビットＡ４が変化するときは、それ以前に入力バッファ２６が保持している書込みデータをデータレジスタ２２に内部転送するのに必要な時間だけアクセスアドレス出力期間を延ばして対処する。【００５７】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。【００５８】
例えば外部メモリはフラッシュメモリに限定されず、マスクＲＯＭ、ＥＥＰＲＯＭ、ＳＲＡＭなどであってもよい。バーストバッファサイズが４，８，１６，３２バイトに限定されず、当然それ以外であってもよい。データプロセッサはＣＰＵ及びＤＭＡＣ以外のバスマスタを備えてもよいし、他のバススレーブ回路を備えてもよい。キャッシュメモリ、或いは仮想記憶のためのアドレス変換バッファを有してもよい。
【産業上の利用可能性】
【００５９】
本発明はマイクロプロセッサ、マイクロコンピュータ、システムオンチップＬＳＩなど、メモリコントローラを有してデータ処理行うデータプロセッサに広く適用することができる。
【図１】
0004455593.tif 000002
【図２】
0004455593.tif 000003
【図３】
0004455593.tif 000004
【図４】
0004455593.tif 000005
【図５】
0004455593.tif 000006
【図６】
0004455593.tif 000007
【図７】
0004455593.tif 000008
【図８】
0004455593.tif 000009
【図９】
0004455593.tif 000010
【図１０】
0004455593.tif 000011
【図１１】
0004455593.tif 000012
【図１２】
0004455593.tif 000013
【図１３】
0004455593.tif 000014