(57)【特許請求の範囲】
【請求項１】
命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラとを有し、
前記バスコントローラは、複数個の命令バッファと、夫々の命令バッファに固有のフラグと、バッファ制御回路とを有し、
前記バッファ制御回路は、前記夫々の命令バッファに命令アドレスの下位複数ビットが採り得る固有値を割当て、所定の命令フェッチアドレスの後続アドレスを基点に前記下位複数ビットによるアドレス順に対応する命令バッファに命令をプリフェッチし、命令プリフェッチに応答して対応フラグをバリッド状態に、プリフェッチされている命令の出力に応答して対応フラグをインバリッド状態に制御するものであることを特徴とするデータプロセッサ。
【請求項２】
前記バッファ制御回路は、前記命令実行手段がフェッチすべき命令アドレスの前記下位複数ビットの値に対応して割り付けられている命令バッファのフラグがバリッド状態であることを条件に対応する命令バッファの保有命令を前記命令実行手段に向けて出力するものであることを特徴とする請求項１記載のデータプロセッサ。
【請求項３】
前記バッファ制御回路は、前記フラグがインバリッド状態であることを条件に対応する命令バッファへ命令プリフェッチを可能にするものであることを特徴とする請求項２記載のデータプロセッサ。
【請求項４】
前記バッファ制御回路は、前記命令実行手段による連続的な命令アドレスの実行順序変更の指示に応答して、全ての前記フラグをインバリッド状態に初期化するものであることを特徴とする請求項３記載のデータプロセッサ。
【請求項５】
前記命令バッファは、前記命令実行手段による命令フェッチ単位のビット数を有するものであることを特徴とする請求項１乃至４の何れか１項記載のデータプロセッサ。
【請求項６】
命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラとを有し、
前記バスコントローラは、前記命令実行手段による命令フェッチ単位のビット数を有する複数個の命令バッファと、夫々の命令バッファに固有のフラグと、バッファ制御回路とを有し、
前記バッファ制御回路は、前記夫々の命令バッファに命令アドレスの下位複数ビットが採り得る固有値を割当て、前記下位複数ビットによる先頭値の命令アドレスに対する命令フェッチがあったときはその後続アドレスから前記下位複数ビットによる最終アドレスまでアドレス順に対応する命令バッファに命令をプリフェッチし、分岐命令による分岐先命令の命令フェッチがあったときは当該命令フェッチアドレスの後続アドレスから前記下位複数ビットによる最終アドレスまでアドレス順に対応する命令バッファに命令をプリフェッチし、命令プリフェッチに応答して対応フラグをバリッド状態にし、前記命令実行手段がフェッチすべき命令アドレスの前記下位複数ビットの値に対応して割当てられている命令バッファのフラグがバリッド状態であることを条件に対応する命令バッファの保有命令を前記命令実行手段に向けて出力するものであることを特徴とするデータプロセッサ。
【請求項７】
前記バッファ制御回路は、命令バッファにプリフェッチされている命令の出力に応答して対応フラグをインバリッド状態に制御し、前記フラグがインバリッド状態であることを条件に対応する命令バッファへの命令プリフェッチを可能にし、分岐命令による命令フェッチの指示に応答して全ての前記フラグをインバリッド状態に初期化するものであることを特徴とする請求項６記載のデータプロセッサ。
【請求項８】
命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、複数個の命令バッファ、夫々の命令バッファに固有のフラグ及びバッファ制御回路を備え前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラとを有し、１個の半導体チップに形成されたデータプロセッサと、
前記データプロセッサの動作プログラムを格納し、前記バスコントローラによる外部バスアクセスの対象とされるメモリと、を有し、
前記バッファ制御回路は、前記夫々の命令バッファに命令アドレスの下位複数ビットが採り得る固有値を割当て、前記下位複数ビットによる先頭値の命令アドレスに対する命令フェッチがあったときはその後続アドレスから前記下位複数ビットによる最終アドレスまでアドレス順に対応する命令バッファに命令をプリフェッチし、分岐命令による分岐先命令の命令フェッチがあったときは当該命令フェッチアドレスの後続アドレスから前記下位複数ビットによる最終アドレスまでアドレス順に対応する命令バッファに命令をプリフェッチし、命令プリフェッチに応答して対応フラグをバリッド状態にし、前記命令実行手段がフェッチすべき命令アドレスの前記下位複数ビットの値に対応して割当てられている命令バッファのフラグがバリッド状態であることを条件に対応する命令バッファの保有命令を前記命令実行手段に向けて出力するものであることを特徴とするデータ処理システム。
【請求項９】
命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、前記命令実行手段による命令フェッチ単位のビット数を有する複数個の命令バッファ、夫々の命令バッファに固有のフラグ及びバッファ制御回路を備え前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラとを有し、１個の半導体チップに形成されたデータプロセッサと、
前記データプロセッサの動作プログラムを格納し、前記バスコントローラによる外部バスアクセスの対象とされるメモリと、を有し、
前記バッファ制御回路は、前記夫々の命令バッファに命令アドレスの下位複数ビットが採り得る固有値を割当て、前記下位複数ビットによる先頭値の命令アドレスに対する命令フェッチがあったときはその後続アドレスから前記下位複数ビットによる最終アドレスまでアドレス順に対応する命令バッファに命令をプリフェッチし、分岐命令による分岐先命令の命令フェッチがあったときは当該命令フェッチアドレスの後続アドレスから前記下位複数ビットによる最終アドレスまでアドレス順に対応する命令バッファに命令をプリフェッチし、命令プリフェッチに応答して対応フラグをバリッド状態にし、前記命令実行手段がフェッチすべき命令アドレスの前記下位複数ビットの値に対応して割当てられている命令バッファのフラグがバリッド状態であることを条件に対応する命令バッファの保有命令を前記命令実行手段に向けて出力し、命令バッファにプリフェッチされている命令の出力に応答して対応フラグをインバリッド状態に制御し、前記フラグがインバリッド状態であることを条件に対応する命令バッファへの命令プリフェッチを可能にし、分岐命令による命令フェッチの指示に応答して全ての前記フラグをインバリッド状態に初期化するものであることを特徴とするデータ処理システム。
【請求項１０】
データ処理装置、メモリ、及び前記データ処理装置とメモリに接続されるバスを有し、
前記メモリには、少なくともプロトコル制御又はシステム制御のためのプログラムを格納し、
前記データ処理装置は、命令をフェッチし、フェッチした命令を解読し、命令を実行する命令実行部と、前記命令実行部による命令フェッチ単位のビット数を有する複数個の命令バッファ、それぞれの命令バッファに対応したフラグ、及びバッファ制御回路を有し前記命令実行部からの信号に基づいてバスを介してメモリへのアクセスを制御するバスコントローラとを有し、
前記バッファ制御回路は、前記それぞれの命令バッファに命令アドレスの下位複数ビットが取りうる固有値を割り当て、
命令アドレスの下位複数ビットにより表現される最小値に該当する命令アドレスへの命令フェッチがあった場合、当該命令アドレスの次の命令アドレスから、当該下位複数ビットにより表現される最後の命令アドレスまでの命令を、前記複数個の命令バッファの命令アドレスに対応するそれぞれの命令バッファに格納し、それぞれの命令バッファに対応したそれぞれのフラグを第１状態とし、
前記命令実行部からの命令フェッチ要求に応じて、前記命令実行部が出力する命令フェッチすべき命令アドレスの下位複数ビットに対応する命令バッファに対応するフラグが第１状態であれば、当該命令バッファに格納されている命令を前記命令実行部に出力し、当該フラグを第２状態とすることを特徴とする携帯電話。
【請求項１１】
前記命令実行部が出力する命令フェッチすべき命令アドレスの下位複数ビットに対応する命令バッファに対応するフラグが第２状態である場合、当該命令アドレスの次の命令アドレスから、当該下位複数ビットにより表現される最後の命令アドレスまでの命令を、前記複数個の命令バッファの命令アドレスに対応する命令バッファのそれぞれに格納し、それぞれの命令バッファに対応したそれぞれのフラグを第１状態とすることを特徴とする請求項１０記載の携帯電話。
【請求項１２】
前記命令実行部が出力する命令フェッチすべき命令アドレスの命令の内、命令アドレスの前記下位複数ビットにより表現される最小値に該当する命令アドレスの命令又は命令アドレスの前記下位複数ビットにより表現される値の対応命令バッファフラグが第２状態にされている命令アドレスの命令は、メモリから読み出された後、そのまま前記命令実行部に供給されることを特徴とする請求項１１記載の携帯電話。
【請求項１３】
前記命令実行部は、フェッチした命令の種類に応じて所定の信号を出力し、
前記バッファ制御回路は、前記命令実行部の出力する第１信号に応じて、前記複数の命令バッファのそれぞれに対応したフラグの全てを、第２状態とすることを特徴とする請求項１２記載の携帯電話。
【請求項１４】
前記命令実行部が、前記第１信号を出力する命令は、分岐命令であることを特徴とする請求項１３記載の携帯電話。
【請求項１５】
命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラとを有し、
前記バスコントローラは、複数個の命令バッファと、夫々の命令バッファに固有のフラグと、バッファ制御回路とを有し、
前記バッファ制御回路は、前記夫々の命令バッファに命令アドレスの下位複数ビットが採り得る固有値を割当て、所定の命令フェッチアドレスの後続アドレスを基点に前記下位複数ビットによるアドレス順に対応する命令バッファに命令をプリフェッチし、命令プリフェッチに応答して対応フラグをバリッド状態に、プリフェッチされている命令の出力に応答して対応フラグをインバリッド状態に制御し、
前記複数個の命令バッファのうち命令をプリフェッチする命令バッファの数を変更可能とするものであることを特徴とするデータプロセッサ。
【請求項１６】
前記命令をプリフェッチする命令バッファの数は、所定のレジスタに設定された情報により決定されることを特徴とする請求項１５記載のデータプロセッサ。
【請求項１７】
前記命令をプリフェッチする命令バッファの数は、分岐命令を実行するまでの間に実行した非分岐命令の数を基に決定されることを特徴とする請求項１５記載のデータプロセッサ。
【請求項１８】
命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラと割込み制御回路を有し、
前記バスコントローラは、複数個の命令バッファと、夫々の命令バッファに固有のフラグと、バッファ制御回路とを有し、
前記バッファ制御回路は、前記夫々の命令バッファに命令アドレスの下位複数ビットが採り得る固有値を割当て、所定の命令フェッチアドレスの後続アドレスを基点に前記下位複数ビットによるアドレス順に対応する命令バッファに命令をプリフェッチし、命令プリフェッチに応答して対応フラグをバリッド状態に、プリフェッチされている命令の出力に応答して対応フラグをインバリッド状態に制御し、
前記命令バッファへの命令のプリフェッチは、割込み制御回路が割込みを受け付けることに応じて中断されることを特徴とするデータプロセッサ。
【請求項１９】
前記割込み制御回路が割込みを受け付け後、前記命令デコーダが割込み処理に係る命令アドレスへ分岐することに応じて、前記命令バッファへの命令のプリフェッチを中断することを特徴とする請求項１８記載のデータプロセッサ。
【請求項２０】
命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラとを有し、
前記バスコントローラは、第１のバッファテーブルと第２のバッファテーブルと、バッファ制御回路とを有し、
それぞれのバッファテーブルは、複数個の命令バッファと夫々の命令バッファに固有のフラグとを有し、
前記バッファ制御回路は、前記それぞれのバッファテーブルに含まれる前記夫々の命令バッファに命令アドレスの下位複数ビットが採り得る固有値を割当て、所定の命令フェッチアドレスの後続アドレスを基点に前記下位複数ビットによるアドレス順に対応する命令バッファに命令をプリフェッチし、命令プリフェッチに応答して対応フラグをバリッド状態に、プリフェッチされている命令の出力に応答して対応フラグをインバリッド状態に制御し、
前記第１のバッファテーブルに含まれる全ての命令バッファにプリフェッチされている命令の出力に応じて、前記第２のバッファテーブルに含まれる命令バッファにプリフェッチされている命令を出力することを特徴とするデータプロセッサ。
【請求項２１】
前記バッファ制御回路は、前記命令実行手段で解読した命令が第１の命令種類に属する命令であることに応じて、前記第１のバッファテーブルへの命令プリフェッチを中断し、前記命令実行手段から供給される命令アドレスを基点として前記第２のバッファテーブルに含まれる命令バッファに命令プリフェッチを行うことを特徴とする請求項２０記載のデータプロセッサ。
【請求項２２】
命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラとを有し、
前記バスコントローラは、複数個の命令バッファと、夫々の命令バッファに固有のフラグと、バッファ制御回路と命令解読部を有し、
前記バッファ制御回路は、前記夫々の命令バッファに命令アドレスの下位複数ビットが採り得る固有値を割当て、所定の命令フェッチアドレスの後続アドレスを基点に前記下位複数ビットによるアドレス順に対応する命令バッファに命令をプリフェッチし、命令プリフェッチに応答して対応フラグをバリッド状態に、プリフェッチされている命令の出力に応答して対応フラグをインバリッド状態に制御し、
前記命令バッファに格納する命令を前記命令解読部で解読し、解読した命令が第１の命令種類に属する命令である場合、当該命令を前記命令バッファから出力するまで命令プリフェッチを中断することを特徴とするデータプロセッサ。
【請求項２３】
前記第１の命令種類は、分岐命令であることを特徴とする請求項２２記載のデータプロセッサ。
【請求項２４】
前記バスコントローラは、更にアドレス計算部を有し、
前記アドレス計算部は、前記分岐命令により分岐する分岐先アドレスを計算し、
前記分岐先アドレスを基点に命令プリフェッチを行うことを特徴とする請求項２３記載のデータプロセッサ。
【請求項２５】
前記複数の命令バッファとそれぞれの命令バッファに固有のフラグは、第１のバッファテーブルと第２のバッファテーブルに分類され、
前記分岐命令までは第１のバッファテーブルに含まれる命令バッファにプリフェッチされ、前記分岐先アドレスを基点に前記第２のバッファテーブルに含まれる命令バッファにプリフェッチされることを特徴とする請求項２４記載のデータプロセッサ。
【請求項２６】
前記第１のバッファテーブルに含まれる命令バッファには、前記分岐命令に続く所定のアドレスの命令までプリフェッチされ、前記第２のバッファテーブルには、前記分岐先アドレスを基点に所定のアドレスの命令までがプリフェッチされることを特徴とする請求項２５記載のデータプロセッサ。
【請求項２７】
命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラとを有し、
前記バスコントローラは、複数個の命令バッファと、夫々の命令バッファに固有のフラグと、１個以上のデータバッファと、データバッファに固有のフラグと、命令解読部と、アドレス計算部と、バッファ制御回路とを有し、
前記バッファ制御回路は、前記夫々の命令バッファに命令アドレスの下位複数ビットが採り得る固有値を割当て、所定の命令フェッチアドレスの後続アドレスを基点に前記下位複数ビットによるアドレス順に対応する命令バッファに命令をプリフェッチし、命令プリフェッチに応答して対応フラグをバリッド状態に、プリフェッチされている命令の出力に応答して対応フラグをインバリッド状態に制御し、
前記命令バッファに格納される命令を前記命令解読部で解読し、当該命令が所定のアドレスに格納される情報を必要とする第２種類の命令に属する命令である場合、前記アドレス計算部は、前記所定のアドレスを計算し、前記所定のアドレスに格納されているデータを前記データバッファに格納し、対応する固有のフラグをバリッド状態に、格納されているデータの出力に応答して固有のフラグをインバリッド状態に制御することを特徴とするデータプロセッサ。
【請求項２８】
命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラと、キャッシュメモリを有し、
前記バスコントローラは、複数個の命令バッファと、夫々の命令バッファに固有のフラグと、バッファ制御回路とを有し、
前記バッファ制御回路は、前記夫々の命令バッファに命令アドレスの下位複数ビットが採り得る固有値を割当て、所定の命令フェッチアドレスの後続アドレスを基点に前記下位複数ビットによるアドレス順に対応する命令バッファに命令をプリフェッチし、命令プリフェッチに応答して対応フラグをバリッド状態に、プリフェッチされている命令の出力に応答して対応フラグをインバリッド状態に制御し、
前記プリフェッチされた命令は前記キャッシュメモリにも供給されることを特徴とするデータプロセッサ。
【請求項２９】
前記バスコントローラは、命令フェッチアドレスの命令が前記キャッシュメモリに格納されている場合、命令プリフェッチを行うことなく、前記キャッシュメモリに格納されている命令を前記命令実行手段に供給することを特徴とする請求項２８記載のデータプロセッサ。
【請求項３０】
命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラと、キャッシュメモリを有し、
前記バスコントローラは、複数個の命令バッファと、バッファ制御回路とを有し、
前記バッファ制御回路は、所定の命令フェッチアドレスの後続アドレスを基点に前記命令バッファに命令をプリフェッチし、
前記プリフェッチされた命令は前記キャッシュメモリにも供給され、
前記バスコントローラは更に、命令解読部とアドレス計算部を有し、
前記命令解読部はプリフェッチした命令を解読し、当該命令が分岐命令である場合、前記アドレス計算部で分岐先アドレスを計算し、
前記分岐先アドレスが前記命令実行手段で実行している命令アドレスよりも小さいアドレスへの分岐である場合は、命令プリフェッチを中断し、
前記分岐先アドレスが前記命令実行手段で実行している命令アドレスよりも大きいアドレスへの分岐である場合は、前記分岐先アドレスについて命令プリフェッチを行うことを特徴とするデータプロセッサ。
【請求項３１】
前記分岐先アドレスが前記命令実行手段で実行している命令アドレスよりも小さいアドレスへの分岐である場合、分岐先アドレスの命令が前記キャッシュメモリに格納されている場合、前記キャッシュメモリに格納されている命令を前記命令実行手段に供給し、分岐先アドレスの命令が前記キャッシュメモリに格納されていない場合、前記命令バッファに命令をプリフェッチすることを特徴とする請求項３０記載のデータプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データプロセッサ、特に外部メモリからの命令プリフェッチに関し、例えば、連続的な命令アドレスの実行順序を変更する分岐（本明細ではジャンプの概念も分岐に含む）処理の少ないサブルーチンプログラムを実行するデータ処理システムに適用して有効な技術に関する。
【０００２】
【従来の技術】
データプロセッサ等による命令の逐次実行を高速化するための技術として、情報参照の時間的・空間的局所性に鑑みた命令キャッシュメモリ、そして命令プリフェッチバッファがある。
【０００３】
例えば特開平６−２４３０３６号公報(米国登録番号５,５１１,１７８)にはフェッチした命令の局在性を指標するループロックを設け、ループ外にプログラム制御が移行するまでループ内の命令列をキャッシュメモリに留めておくようにする発明が開示されている。
【０００４】
特開平４−６２６３７号公報には、実行速度を向上させるために、フェッチされたループ命令をＦＩＦＯ（First-In・First-Out）バッファに留めておくようにする命令キュー（命令プリフェッチバッファ）を設けたマイクロプロセッサが開示される。
【０００５】
【発明が解決しようとする課題】
上記従来技術のようにループ命令を命令キャッシュメモリや命令プリフェッチバッファから追い出さないようにして、命令の逐次実行を高速化しようとする技術は、ループ命令を多用する処理では効果的であるが、ループ命令が殆ど存在せず専らリニアな連続アドレスの命令を逐次実行する処理の場合には、ループ命令を追い出し禁止する構成を採用しても、それに見合う大きな効果は得難い。本発明者の検討によれば、そのような場合に通常の命令キャッシュメモリを用いる事すら実質的に無意味な場合のあることが明らかにされた。
【０００６】
即ち、本発明者は、携帯電話システムにおけるプロトコル処理若しくはシステム制御処理のようなサブルーチンプログラムの実行について検討した。前記サブルーチンプログラムによる前記プロトコル処理若しくはシステム制御処理は複雑でプログラム規模も大な処理であるためその処理プログラムをデータプロセッサの内蔵ＲＯＭに格納することは現実的ではない。一方、外部メモリのアクセス速度はデータプロセッサによるデータ処理速度に対して遅く、その差を吸収するためにデータプロセッサに命令キャッシュメモリを採用することができる。しかしながら、前記プロトコル処理若しくはシステム制御処理は、ループ命令が殆ど存在せず専らリニアな連続アドレスの命令を逐次実行する処理が多用され、その結果、キャッシュメモリを採用しても左程の効果が期待できない。
【０００７】
そこで本発明者はキャッシュメモリを採用せず、それに代えて比較的構成の簡単な命令プリフェッチで対処することを検討した。その場合には、ループ命令が殆ど存在せず専らリニアな連続アドレスの命令を逐次実行する処理が多用されるという特質を考慮すれば、ループ命令の追い出し禁止のような構成は全く必要ではないこと、そして、プリフェッチされた命令とその命令のアドレスとの対応付けをキャッシュメモリのアドレスタグによる制御機構やカウンタによるリード・ライトポインタ制御機構よりも簡素化することが、費用対効果の観点より必要なことが本発明者によって見出された。
【０００８】
さらに本発明者により検討を行ったところ、命令プリフェッチを行う場合に固定長のバースト転送機構を使用した場合、分岐命令により命令分岐が発生した場合に無駄になる命令をもプリフェッチすることとなるため、結果的にオーバヘッドが生じることとなることが判明した。
【０００９】
また命令プリフェッチ動作を、分岐命令の実行若しくはアドレスの下位ビットと通常の命令フェッチ要求の組合わせにより行う場合、プリフェッチされた命令を全て実行していた場合には、次の命令プリフェッチ動作により外部メモリから命令フェッチが完了するまでプログラムの実行が中断する、という問題点があることが判明した。
【００１０】
さらに、外部メモリにアクセスする場合をより詳細に検討すると、命令コードの取り込み(命令フェッチ)には命令プリフェッチが有効であるが、オペランドとして記述されたデータの取り込み(データフェッチ)ではやはり外部メモリへのアクセスが生じる場合があり、その場合には外部メモリからデータフェッチが完了するまでプログラムの実行が中断する、という問題点があることが判明した。
【００１１】
そこで本発明者は、これら命令プリフェッチで対処することにより新たに見出された問題点に関しても、命令プリフェッチ方法の工夫により対処することを検討した。この場合においても、プリフェッチされた命令とその命令のアドレスとの対応付けをキャッシュメモリのアドレスタグによる制御機構やカウンタによるリード・ライトポインタ制御機構よりも簡素化することが、費用対効果の観点より必要なことが本発明者によって見出された。
【００１２】
本発明の別の目的は、比較的簡単な構成によって外部から命令プリフェッチを行うことができ、命令の実行効率を向上させることができるデータプロセッサを提供することにある。
【００１３】
本発明の別の目的は、ループ命令が殆ど存在せず専らリニアな連続アドレスの命令を外部メモリからフェッチして逐次実行する処理の高速化を、データプロセッサにおける比較的構成の簡単な命令プリフェッチの機構によって実現する事ができるデータ処理システムを提供することにある。
【００１４】
本発明のその他の目的は、連続的な命令アドレスの実行順序を変更する分岐処理の少ないサブルーチンプログラムを実行するデータ処理システムにおけるデータ処理効率を比較的低いコストで向上させることにある。
【００１５】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１６】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１７】
すなわち、データプロセッサは、命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段と、前記命令実行手段による指示に基づいて外部バスアクセスを制御するバスコントローラとを有する。前記バスコントローラは、複数個の命令バッファと、夫々の命令バッファに固有のフラグと、バッファ制御回路とを備える。このとき、前記バッファ制御回路は、前記夫々の命令バッファに命令アドレスの下位複数ビットが採り得る固有値を割当て、所定の命令フェッチアドレスの後続アドレスを基点に前記下位複数ビットによるアドレス順に対応する命令バッファに命令をプリフェッチし、命令のプリフェッチに応答して対応フラグをバリッド状態に、命令バッファにプリフェッチされている命令の出力に応答して対応フラグをインバリッド状態に制御する。
【００１８】
上記手段においては、命令バッファへのプリフェッチは前記命令アドレスの下位複数ビットの値が何れか１つの所定値になったときだけ行えば充分である。例えば、命令プリフェッチ制御の簡素化を考慮すれば、前記下位複数ビットによる先頭値の命令アドレスに対する命令フェッチがあったとき、その後続アドレスから前記下位複数ビットによる最終アドレスまでアドレス順に対応する命令バッファに命令プリフェッチを行えばよい。更に、分岐命令により命令アドレス系列が変更される可能性を考慮するなら、分岐命令による分岐先命令の命令フェッチがあったとき、当該命令フェッチアドレスの後続アドレスから前記下位複数ビットによる最終アドレスまでアドレス順に対応する命令バッファに命令プリフェッチを行えばよい。
【００１９】
前記データプロセッサを用いたデータ処理システムは、データプロセッサの外部に、前記データプロセッサの動作プログラムを格納し、前記バスコントローラによる外部バスアクセスの対象とされるメモリを有する。
【００２０】
前記メモリは、ループ命令が殆ど存在せず専らリニアな連続アドレスの命令を逐次実行する処理が多用されたプログラムを保有する。このようなプログラムを実行する場合はデータプロセッサにキャッシュメモリを採用しても左程の効果を期待することはできない。
【００２１】
このとき、上記手段に係るデータプロセッサによれば、プリフェッチのために外部から読み込んだ命令をどの命令バッファのバッファエントリとすればよいかは、その命令アドレスの所定の下位複数ビットの値によって一義的に決まるから、プリフェッチの制御が簡単である。この命令プリフェッチのための構成は、キャッシュメモリのアドレスタグによる制御機構やＦＩＦＯバッファのカウンタによるリード・ライトポインタ制御機構よりも簡素に実現することが可能である。
【００２２】
また、上記より、割当てられた命令アドレスの命令プリフェッチに応答して対応フラグをバリッド状態に、プリフェッチされているバッファエントリの出力に応答して対応フラグをインバリッド状態に制御する。これにより、バッファエントリが有効であってフェッチ可能であることをフラグのバリッド状態によって認識でき、命令バッファのバッファエントリが無効であって新たなバッファエントリのロードが可能であることをフラグのインバリッド状態によって認識できる。
【００２３】
前記バッファ制御回路は、上記認識を利用すれば、前記命令実行手段がフェッチすべき命令アドレスの前記下位複数ビットの値に対応して割り付けられている命令バッファのフラグがバリッド状態であることを条件に対応する命令バッファが保有する命令を前記命令実行手段に向けて出力させればよい。また、前記バッファ制御回路は、前記フラグがインバリッド状態であることを条件に対応する命令バッファへの命令プリフェッチを可能にすればよい。
【００２４】
連続的な命令アドレスの実行順序を変更する分岐のような処理の発生を考慮すれば、前記バッファ制御回路は、前記命令実行手段による連続的な命令アドレスの実行順序変更の指示に応答して、全ての前記フラグをインバリッド状態に初期化すればよい。
【００２５】
前記命令バッファを、前記命令実行手段による命令フェッチ単位のビット数で構成すれば、命令実行手段による命令バッファからの命令フェッチの制御が容易になる。
【００２６】
前記命令バッファに命令プリフェッチを行う場合に、命令アドレスの下位複数ビットによる最終アドレスまでをプリフェッチするのではなく、レジスタ等に設定された情報によりプリフェッチする最終アドレスを決定し、又は分岐命令等の出現頻度に基づいてプリフェッチする最終アドレスを決定するようにすることで、分岐命令によりプリフェッチしても無駄になる命令の数を制御可能となる。
【００２７】
さらには、分岐命令による分岐のみならず、割り込み処理発生を契機として命令プリフェッチを停止するようにしても良い。割り込み処理が発生した場合、必要に応じて、プログラムの実行が中断され、割込み処理プログラムの実行がされるため、プリフェッチされた命令が無駄になるからである。
【００２８】
前記複数個の命令バッファを１単位とし、少なくとも２単位分の命令バッファを備えるようにする。このとき前記第１単位の命令バッファ（第１のバッファテーブルの命令バッファ）のそれぞれにプリフェッチした命令を前記命令実行手段により実行している間に、前記バッファ制御回路は前記第１単位の命令バッファの最後の命令アドレスに続く命令アドレスからの命令を、第２単位の命令バッファ（第２のバッファテーブルの命令バッファ）のそれぞれにプリフェッチしていくようにすると良い。これにより、前記命令実行手段により前記第１単位の命令バッファにプリフェッチされた命令を全て実行完了後、前記第２単位の命令バッファにプリフェッチされた命令を実行するよう制御することで、命令バッファに外部メモリから命令プリフェッチを行う時間、プログラムの実行が中断することなく、命令の実行が可能となる。
【００２９】
前記命令バッファ若しくは前記バッファ制御回路に命令デコード機能を持たせ、命令バッファに命令プリフェッチする命令をデコードするようにすると良い。これにより、命令バッファにプリフェッチされた命令が分岐命令であるか否かが判明し、プリフェッチされた命令が分岐命令である場合は、以後の命令のプリフェッチを停止することで、プリフェッチしても無駄になる命令の数を制御可能となる。
【００３０】
さらには、前記命令バッファ若しくは前記バッファ制御回路にアドレス計算機能を持たせ、分岐命令により分岐する先の命令アドレスがアドレス計算により判明する場合、分岐する先の命令をプリフェッチしておくことで、新たに外部メモリから命令バッファに命令プリフェッチを行う時間、プログラムの実行を中断することなく、命令の実行が可能となる。加えて、少なくとも２単位の命令バッファを備えておき、分岐命令の命令アドレスに連続するアドレスの命令と、分岐する先の命令をプリフェッチしておくことで、分岐命令により分岐した場合と分岐しなかった場合のそれぞれにおいて、新たに外部メモリから命令バッファに命令プリフェッチを行う時間、プログラムの実行を中断することなく、命令の実行が可能となる。
【００３１】
前記命令バッファ若しくは前記バッファ制御回路に命令デコード機能とオペランドバッファを持たせ、オペランドを有する命令をプリフェッチした場合に、当該オペランドについてもプリフェッチを可能とするようにする。オペランドがアドレス修飾されたイミディエトデータ等である場合、前記イミディエトデータをフェッチするために外部メモリへのアクセスが発生するため、命令プリフェッチの際に前記イミディエトデータをもプリフェッチしておくことで、プログラムの実行が中断されることなく、命令の実行が可能となる。
【００３２】
前記データプロセッサに更にキャッシュメモリを持たせることで、既に実行したアドレスへの分岐やループ処理、さらにはプロトコル処理自体の実行の際、キャッシュメモリに格納されているプログラムの一部又は全部を再利用可能とすることで、外部メモリへのアクセスによるプログラムの実行の中断を減少させることが可能となる。
【００３３】
本発明を携帯電話の観点より説明する。携帯電話はデータ処理装置、メモリ、及び前記データ処理装置とメモリに接続されるバスを有し、前記メモリには、少なくともプロトコル制御又はシステム制御のためのプログラムが格納される。上記データ処理装置は、命令をフェッチし、フェッチした命令を解読し、命令を実行する命令実行部と、前記命令実行部による命令フェッチ単位のビット数を有する複数個の命令バッファ、それぞれの命令バッファに対応したフラグ、及びバッファ制御回路を有し前記命令実行部からの信号に基づいてバスを介してメモリへのアクセスを制御するバスコントローラを有する。前記バッファ制御回路は、前記それぞれの命令バッファに命令アドレスの下位複数ビットが取りうる固有値を割り当てる。このバッファ制御回路は、命令アドレスの下位複数ビットにより表現される最小値に該当する命令アドレスへの命令フェッチがあった場合、当該命令アドレスの次の命令アドレスから、当該下位複数ビットにより表現される最後の命令アドレスまでの命令を、前記複数個の命令バッファの命令アドレスに対応するそれぞれの命令バッファに格納し、それぞれの命令バッファに対応したそれぞれのフラグを第１状態とする。更にバッファ制御回路は、前記命令実行部からの命令フェッチ要求に応じて、前記命令実行部が出力する命令フェッチすべき命令アドレスの下位複数ビットに対応する命令バッファに対応するフラグが第１状態であれば、当該命令バッファに格納されている命令を前記命令実行部に出力し、当該フラグを第２状態とする。
【００３４】
前記命令実行部が出力する命令フェッチすべき命令アドレスの下位複数ビットに対応する命令バッファに対応するフラグが第２状態である場合、当該命令アドレスの次の命令アドレスから、当該下位複数ビットにより表現される最後の命令アドレスまでの命令を、前記複数個の命令バッファの命令アドレスに対応する命令バッファのそれぞれに格納し、それぞれの命令バッファに対応したそれぞれのフラグを第１状態としてよい。
【００３５】
上記において、前記命令実行部が出力する命令フェッチすべき命令アドレスの命令の内、命令アドレスの前記下位複数ビットにより表現される最小値に該当する命令アドレスの命令又は命令アドレスの前記下位複数ビットにより表現される値の対応命令バッファフラグが第２状態にされている命令アドレスの命令は、メモリから読み出された後、命令バッファに格納されずにそのまま前記命令実行部に供給されればよい。
【００３６】
前記命令実行部は、フェッチした命令の種類に応じて所定の信号を出力する。前記バッファ制御回路は、前記命令実行部の出力する第１信号に応じて、前記複数の命令バッファのそれぞれに対応したフラグの全てを、第２状態としてよい。前記命令実行部が前記第１信号を出力する命令は、例えば、分岐命令である。
【００３７】
【発明の実施の形態】
図１には本発明に係るデータ処理システムの一例が示される。同図にはデータプロセッサ１と外部メモリ２が代表的に示される。
【００３８】
データプロセッサ１は代表的に示された中央処理装置（ＣＰＵ）３及びバスコントローラ（ＢＳＣ）４を有する。前記ＣＰＵ３は命令をフェッチし、フェッチした命令を解読して、命令を実行する命令実行手段を構成する。前記バスコントローラ４は、前記ＣＰＵ３による指示に基づいて外部メモリ２等に対する外部バスアクセスを制御する。
【００３９】
前記ＣＰＵ３は、算術論理演算器（ＡＬＵ）等で代表される演算部１０、汎用レジスタ１１、プログラムカウンタ１２、命令デコーダ１３及びメモリアクセスコマンド発生部１４を有する。前記プログラムカウンタ１２は次に実行すべき命令アドレスを保有する。前記メモリアクセスコマンド発生部１４は、メモリアクセス動作のための制御情報を命令デコーダ１３から入力し、命令フェッチの際にはプログラムカウンタ１２から内部アドレスバス１６に命令アドレスが出力されるのに同期して、また、データアクセスの際には汎用レジスタ１１から内部アドレスバス１６にデータアドレスが出力されるのに同期して、メモリアクセスコマンド１８をメモリアクセスコマンドバス１７に出力する。前記メモリアクセスコマンド１８は、リード／ライト動作の種別を示す情報、アクセスデータ幅（並列データビット数）を示す情報、命令フェッチサイクルであることを示す情報、命令フェッチが強制命令フェッチであるか通常命令フェッチであるかを示す情報を含む。強制命令フェッチとは、命令実行順序をリニアなアドレス列から別のアドレス列に変更する分岐命令による分岐先命令のフェッチを意味する。通常命令フェッチとは、前回の命令フェッチアドレスに対して今回の命令フェッチアドレスがリニアなアドレス列で連続的なアドレスになっている命令フェッチを意味する。
【００４０】
メモリアクセスコマンドによって指示されるアクセスが命令フェッチであれば、バスコントローラ４を介してリードされた命令が内部データバス１５を介して命令デコーダ１３に取込まれる。命令デコーダ１３はその命令を解読し、解読結果にしたがって、外部メモリ２から汎用レジスタ１１にオペランドをロードさせ、演算部１０にオペランドを演算させ、演算結果を外部メモリ２にストアさせる処理等を制御して、その命令を実行する。
【００４１】
前記メモリアクセスコマンドによって指示されるアクセスがデータアクセスであれば、バスコントローラ４を介してリードされたデータが内部データバス１５を介して汎用レジスタ１１に取込まれ、或いは汎用レジスタ１１から内部データバス１５に出力されたライトデータがバスコントローラ４を介して外部メモリ２に書込まれる。
【００４２】
前記ＣＰＵ１のアドレスマップは図２に例示され、Ｈ’００００００００〜Ｈ’０ＦＦＦＦＦＦＦまでが外部メモリ空間であり、Ｈ’１０００００００〜Ｈ’ＦＦＦＦＦＦＦＦまでが内蔵メモリ及び周辺モジュール空間などとされる。外部メモリ空間は所定容量毎に順次ＣＳ０〜ＣＳ３空間とされる。特に制限されないが、外部メモリ空間ＣＳ０〜ＣＳ３に接続可能なメモリデバイスの種類はＲＯＭ（リード・オンリ・メモリ）、ＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）、バーストＲＯＭ、ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）、ＳＤＲＡＭ（シンクロナスＤＲＡＭ）の中から予め選ばれた数種類に決められている。前記外部メモリ２はそれら外部メモリ空間ＣＳ０〜ＣＳ３に配置されたメモリデバイスによって構成される。外部メモリ２とは、４つのメモリ空間ＣＳ０〜ＣＳ３に配置されたメモリデバイスを総称する名称である。特に制限されないが、外部プログラムメモリ領域はメモリ空間ＣＳ０の先頭から一定領域に割当てられる。
【００４３】
前記バスコントローラ４は、外部メモリ２のメモリ空間ＣＳ０〜ＣＳ３毎にアクセス制御を行う。夫々のメモリ空間ＣＳ０〜ＣＳ３のメモリチップのアクセス制御に必要なアクセス制御信号２５は外部メモリアクセス制御部２０がアドレス空間毎に生成する。例えば、ＤＲＡＭが配置されているメモリ空間ＣＳ２をアクセス対象にするときは外部メモリアクセス制御部２０はローアドレスストローブ信号、カラムアドレスストローブ信号、ライトイネーブル信号等を出力する。ＳＲＡＭが配置されているメモリ空間ＣＳ３をアクセス対象にするときは外部メモリアクセス制御部２０はチップイネーブル信号、リード／ライト信号等を出力する。
【００４４】
どのメモリ空間にどのようなメモリデバイスを割当てるかは外部メモリアクセス設定レジスタ２１の設定値で決まる。例えば、メモリデバイスの特性（必要なウェイステートサイクル数、並列入出力データビット数など）を示す制御コード情報（メモリデバイス制御コード）２６の設定領域がメモリ空間別に設けられ、設定されたメモリデバイス制御コード２６は外部メモリアクセス制御部２０に与えられる。
【００４５】
アクセス対象がどのメモリ空間であるかは、内部アドレスバス１６上のアドレスをメモリアクセスアドレスデコーダ２２で解読し、その解読結果を外部メモリアクセス制御部２０に与えられることによって明らかになる。ＣＰＵ３からのアクセス要求がデータアクセスなのか命令フェッチなのか、また、リード動作なのかライト動作なのか等は、メモリアクセスコマンドバス１７上のメモリアクセスコマンドをメモリアクセスコマンドデコーダ２３で解読し、その結果が外部メモリアクセス制御部２０に与えられる。
【００４６】
外部メモリアクセス制御部２０はそれらの入力情報を参照して、外部メモリ２のアクセス対象メモリデバイスに、チップ選択等のアクセス制御情報を与え、アドレス／データ入出力制御部２４を介してアドレス信号の供給及びデータの入出力を制御する。データアクセスでは、リードデータ及びライトデータはデータパス２７を通る。
【００４７】
バスコントローラ４は命令プリフェッチのために、例えば３個の命令バッファＢｕｆ４，Ｂｕｆ８、ＢｕｆＣと、夫々の命令バッファに固有のフラグＦｌｇ４，Ｆｌｇ８，ＦｌｇＣと、バッファコントローラ３０と、入力段セレクタ３１と、出力段セレクタ３２とを備える。前記入力段セレクタ３１は１：４で出力選択を行い、出力段セレクタは４：１で入力選択を行う。入力段セレクタ３１の出力と出力段セレクタの入力との間にはスルー径路３３、命令バッファＢｕｆ４、Ｂｕｆ８、ＢｕｆＣが並列配置されている。
【００４８】
特に制限されないが、ＣＰＵ３の命令セットは１６ビット固定長であり、ＣＰＵ３は２命令単位（３２ビット単位）で命令フェッチを行う。また、ＣＰＵ３の出力するアドレス信号はバイト（８ビット）を最小単位とするバイトアドレスである。これに呼応して、前記命令バッファＢｕｆ４，Ｂｕｆ８、ＢｕｆＣは夫々３２ビットである。前記バイトアドレスであるアドレス信号の下位４ビットに着目すれば連続する１６バイト分の命令を管理できる。そこで、命令バッファＢｕｆ４は下位４ビットがＨ’４（＝Ｂ’０１００）の命令アドレスのプリフェッチエリアとして割当てられ、命令バッファＢｕｆ８は下位４ビットがＨ’８（＝Ｂ’１０００）の命令アドレスのプリフェッチエリアに割当てられ、命令バッファＢｕｆＣは下位４ビットがＨ’Ｃ（＝Ｂ’１１００）の命令アドレスのプリフェッチエリアに割当てられる。この命令バッファのアドレス割当て論理はバッファコントローラ３０に形成される。
【００４９】
前記メモリアクセスコマンドデコーダ２３により命令フェッチの指示が検出されると、前記バッファコントローラ３０は、その命令フェッチの指示が前記通常命令フェッチであるか強制命令フェッチであるかを前記メモリアクセスコマンドデコーダ２３のデコード出力に基づいて判定する。また、バッファコントローラ３０は内部アドレスバス１６の下位４ビットを入力してその値を判定する。
【００５０】
バッファコントローラ３０は、命令フェッチの指示が通常命令フェッチであって、命令アドレスの前記下位４ビットによる先頭値（Ｈ’０）の命令アドレスに対する命令フェッチであることを判別すると、当該先頭の命令アドレスに対する外部メモリ２からの命令フェッチと、その後続アドレスに対する命令バッファＢｕｆ４，Ｂｕｆ８，ＢｕｆＣへの命令のプリフェッチを制御する。即ち、バッファコントローラ３０は、前記外部メモリアクセス制御部２０に、アドレス／データ入出力制御部２４を介してメモリ空間ＣＳ０から命令を３２ビットリードさせ、リードした命令を入力段セレクタ３１に向けて出力させる。バッファコントローラ３０は、入力段セレクタ３１に供給される命令をスルー経路３３に導き、出力段セレクタ３２でスルー経路を選択して、当該命令を内部データバス１５に出力して、命令デコーダ１３に取込み可能にする。その後、バッファコントローラ３０は、その命令フェッチアドレスに対して下位４ビットを順次Ｈ’４，Ｈ’８，Ｈ’Ｃに変更して、夫々の命令アドレスを順次命令バッファＢｕｆ４，Ｂｕｆ８，ＢｕｆＣに格納する。この時の外部メモリ２に対するアクセス制御は、ＣＰＵ３が外部メモリのアクセスを要求していないとき、バッファコントローラ３０が外部メモリアクセス制御部２０を介して指示する。バッファコントローラ３０は命令バッファＢｕｆ４，Ｂｕｆ８，ＢｕｆＣにエントリを格納する毎に、対応するフラグＦｌｇ４，Ｆｌｇ８，ＦｌｇＣをバリッド状態（セット状態）にする。
【００５１】
前記バッファコントローラ３０は、命令フェッチの指示が通常命令フェッチであって、命令アドレスの前記下位４ビットの値がＨ’４，Ｈ’８，Ｈ’Ｃの何れかである場合には外部メモリ２から命令フェッチを行わず、既にプリフェッチされている命令バッファＢｕｆ４，Ｂｕｆ８，ＢｕｆＣの中から対応する命令バッファの出力を出力段セレクタ３２で選択して、命令フェッチに必要な命令を内部データバス１５に出力して、命令デコーダ１３に取込み可能にする。バッファコントローラ３０は、バッファエントリを出力した命令バッファに対応するフラグをインバリッド状態（リセット状態）にする。
【００５２】
バッファコントローラ３０は、命令フェッチの指示が強制命令フェッチである場合には、先ず、フラグＦｌｇ４，Ｆｌｇ８，ＦｌｇＣをインバリッド状態に強制する。次に、その命令アドレスの前記下位４ビットの値に拘わらず、その命令アドレスに対する外部メモリ２からの命令フェッチと、その後続アドレスに対する命令バッファへの命令をプリフェッチを制御する。即ち、バッファコントローラ３０は、前記外部メモリアクセス制御部２０に、アドレス／データ入出力制御部２４を介してメモリ空間ＣＳ０から強制命令フェッチに応ずる命令をリードさせ、リードした命令を入力段セレクタ３１に向けて出力させる。バッファコントローラ３０は、入力段セレクタ３１に供給される命令をスルー経路３３に導き、出力段セレクタ３２でスルー経路３３を選択して、当該命令を内部データバス１５に出力して、命令デコーダ１３に取込み可能にする。その後、バッファコントローラ３０は、その強制命令フェッチのアドレスに対して下位４ビットをＨ’Ｃまで変更して、夫々の命令アドレスを対応する命令バッファに格納する。強制命令フェッチアドレスの下位４ビットがＨ’４であれば、命令アドレスの下位４ビットをＨ’８、Ｈ’Ｃに順次変更して命令バッファＢｕｆ８，ＢｕｆＣにプリフェッチが行われる。この時の外部メモリ２に対するアクセス制御は、ＣＰＵ３が外部メモリのアクセスを要求していないとき、バッファコントローラ３０が外部メモリアクセス制御部２０を介して指示する。前記同様にバッファエントリが格納された命令バッファの対応フラグはバリッド状態（セット状態）にされる。
【００５３】
図３及び図４にはデータプロセッサ１による命令フェッチとプリフェッチの制御手順が例示される。
【００５４】
外部メモリ２に対するアクセス要求がデータアクセスの場合には発行されたアドレスに対するリード・／ライト動作が行われる（Ｓ１）。
【００５５】
データアクセスでない場合にはアクセス要求が強制命令フェッチであるが判定され（Ｓ２）、強制命令フェッチであればフラグＦｌｇ４，Ｆｌｇ８，ＦｌｇＣがリセット状態にされる（Ｓ３）。そして、その時のフェッチアドレスの下位４ビットの値が判定される（Ｓ４〜Ｓ７）。例えば強制命令フェッチの命令アドレスが１６ｎ＋０番地（下位４ビット＝Ｈ’０）のとき、当該命令アドレス１６ｎ＋０番地の命令が外部メモリ２から命令デコーダ１３に渡される（Ｓ８）。これによってＣＰＵ３はフェッチした命令を解読して実行可能にされる。一方、バスコントローラ４は、その後、ＣＰＵ３による外部メモリ２のアクセスがないとき、後続の命令アドレス１６ｎ＋４番地（下位４ビット＝Ｈ’４）、１６ｎ＋８番地（下位４ビット＝Ｈ’８）、１６ｎ＋Ｃ番地（下位４ビット＝Ｈ’Ｃ）から対応する命令バッファＢｕｆ４，Ｂｕｆ８，ＢｕｆＣに命令をプリフェッチし、対応するフラグＦｌｇ４，Ｆｌｇ８，ＦｌｇＣをセット状態にする（Ｓ９〜Ｓ１４）。強制命令フェッチの命令アドレスが１６ｎ＋４番地、１６ｎ＋８番地のときも当該番地の命令がデコーダに供給され（Ｓ１５，Ｓ２０）、後続の命令アドレスから命令バッファに命令プリフェッチが行われ、対応するフラグがセットされる（Ｓ１６〜Ａ１９、Ｓ２１〜Ｓ２２）。強制命令フェッチの命令アドレスが１６ｎ＋Ｃ番地のときは当該番地の命令がデコーダにフェッチされ（Ｓ２３）、命令バッファへの命令プリフェッチは行われない。
【００５６】
ステップＳ２の判定結果が通常命令フェッチであるときは、図４に示されるように、その時のフェッチアドレスの下位４ビットの値が判定される（Ｓ３０〜Ｓ３３）。例えば通常命令フェッチの命令アドレスが１６ｎ＋０番地（下位４ビット＝Ｈ’０）のとき、当該命令アドレス１６ｎ＋０番地の命令が外部メモリ２から命令デコーダ１３に渡される（Ｓ３４）。これによってＣＰＵ３はフェッチした命令を解読して実行可能にされる。一方、バスコントローラ４は、その後、ＣＰＵ３による外部メモリ２のアクセスがないとき、後続の命令アドレス１６ｎ＋４番地（下位４ビット＝Ｈ’４）、１６ｎ＋８番地（下位４ビット＝Ｈ’８）、１６ｎ＋Ｃ番地（下位４ビット＝Ｈ’Ｃ）から対応する命令バッファＢｕｆ４，Ｂｕｆ８，ＢｕｆＣに命令をプリフェッチし、対応するフラグＦｌｇ４，Ｆｌｇ８，ＦｌｇＣをセット状態にする（Ｓ３４〜Ｓ４０）。通常命令フェッチの命令アドレスが１６ｎ＋４番地、１６ｎ＋８番地、１６ｎ＋Ｃ番地のときは、当該命令番地の下位４ビットの値に対応するフラグＦｌｇ４，Ｆｌｇ８，ＦｌｇＣがセット状態にされるのを待って（Ｓ４１〜Ｓ４３）、対応する命令バッファＢｕｆ４，Ｂｕｆ８，ＢｕｆＣから命令がデコーダ１３に供給され（Ｓ４４〜Ｓ４６）、供給後に対応するフラグがリセットされる（Ｓ４７〜Ａ４９）。
【００５７】
図５には外部メモリ２のメモリ空間ＣＳ０に配置されたメモリデバイスの動作タイミングが例示される。同図に示される動作タイミングは、例えばページモードを有するフラッシュメモリのページモードによるメモリ・リード動作を示す。
【００５８】
フラッシュメモリは、ソース、ドレイン、フローティングゲート及びコントロールゲートを持つメモリセルトランジスタを記憶素子とする電気的に書き換え可能な半導体記憶装置である。図５においてアドレスＡ［１９：３］はメモリの１７ビットのページアドレス信号を示す。３ビットのページ内アドレス信号Ａ［２：０］を順次切り換えてアクセスすれば、同一ページ内のアクセスを高速化することができる。また、分岐命令がほとんど存在せず、リニアに命令実行されるプログラムの特性を鑑みれば、ＢｕｆＣに格納した命令の出力により、ＣＥや次の命令のページアドレス等を出力しておくことで、データの読出しまでの時間を短縮しておくことが可能となる。命令プリフェッチを考慮すれば、プログラムを格納する前記メモリ空間ＣＳ０のメモリデバイスにページモード付きのフラッシュメモリを採用すれば、ＣＰＵ３による外部メモリアクセスの空き期間で行わなければならない命令プリフェッチの高速化に寄与することができる。尚、図５においてＣＥはチップ選択を指示するチップイネーブル信号、ＯＥは出力動作を指示するアウトプットイネーブル信号、ＷＥは書込み動作を指示するライトイネーブル信号である。
【００５９】
図６には外部メモリ２のメモリ空間ＣＳ０に配置された別のメモリデバイスの動作タイミングが例示される。同図に示される動作タイミングは、ＳＤＲＡＭのバースト動作によるメモリ・リード動作を示す。ＳＤＲＡＭは、選択トランジスタとストレージ容量から成るダイナミック型メモリセルを夫々有するメモリバンクを複数個有し、クロック信号に同期して与えられるコマンドに基づいて、クロック同期で動作される。バースト動作のバーストレングス（連続的な出力データ数）及びＣＡＳレイテンシ（カラム系動作の開始からデータ出力までのクロックサイクル数）はＳＤＲＡＭのコントロールレジスタに予め設定される。
【００６０】
ＳＤＲＡＭはチップセレクト信号／ＣＳのローレベルによってコマンド又はデータが入力可能にされる。チップセレクト信号／ＣＳによりコマンド入力可能にされたときロウアドレスストローブ信号／ＲＡＳ，カラムアドレスストローブ信号／ＣＡＳ，ライトイネーブル信号／ＷＥの信号状態に従ってバンクアクティブコマンドが指定されると、それと一緒に入力されるアドレス信号によってバンクとロウアドレスが指定され、ロウアドレスによってワード線選択動作が行われる。次に、チップセレクト信号／ＣＳによりコマンド入力可能にされたときロウアドレスストローブ信号／ＲＡＳ，カラムアドレスストローブ信号／ＣＡＳ，ライトイネーブル信号／ＷＥの信号状態に従ってバンクリードコマンドが指定されると、それと一緒に入力されるアドレス信号によってカラムアドレスが指定され、ビット線選択等のカラム系動作が行われ、これによって読み出されたデータＤ１がＣＡＳレイテンシで指定されるクロック信号サイクルの経過に同期して外部に出力される。図６の例ではＣＡＳレイテンシは２である。この後、指定されているバーストレングスに応ずる回数だけカラムアドレスを内部アドレスカウンタで順次更新しながらでカラム系動作が繰り返され、例えばバーストレングス４の場合には、データＤ１に続けて、クロック信号ＣＬＫのクロックサイクルに同期してデータＤ２，Ｄ３，Ｄ４が出力される。命令プリフェッチを考慮すれば、プログラムを格納する前記メモリ空間ＣＳ０のメモリデバイスに、バースト動作可能な図６のＳＤＲＡＭを採用すれば、ＣＰＵ３による外部メモリアクセスの空き期間で行わなければならない命令プリフェッチの高速化に寄与することができる。
【００６１】
また、分岐命令等がほとんど存在せず、リニアに命令実行がなされるプログラムの特性を鑑みれば、ＢｕｆＣに格納した命令の出力に伴い、ワード線選択動作を行っておき、データの読出しまでの時間を短縮することが可能となる。
【００６２】
図７には図１のデータプロセッサを適用した携帯電話システムのブロック図が示される。携帯電話システムはアナログ部４０とディジタル部４１に大別される。アナログ部４０では、アンテナ４２にデュプレクサとしてのアンテナスイッチ４３が接続され、アンテナ４２で受信された高周波信号はローノイズアンプ（ＬＮＡ）４４で高周波ノイズが除去され、検波・復号回路（ＤＥＭ）４５で検波された信号が復号され、Ａ／Ｄ変換器４６でディジタルデータに変換され、ディジタル部４１に与えられる。ディジタル部４１から与えられるディジタル送信データは、特に制限されないが、ＧＭＳＫ（Gaussian Filtered Minimum Shift Keying）変調回路４７で変調され、Ｄ／Ａ変換回路４８でアナログ信号に変換される。変換されたアナログ信号は符号化回路（ＭＯＤ）４９で符号化され、符号化された信号が高周波アンプ（ＨＰＡ）５０で高周波信号に増幅されて、アンテナ４２から送信される。符号化回路（ＭＯＤ）４９及び検波・復号回路（ＤＥＭ）４５はＰＬＬ回路５１で生成されるクロック信号に同期動作される。
【００６３】
ディジタル部４１は、特に制限されないが、ディジタル信号処理部（ＤＳＰ）５３、時分割多重アクセス制御部（ＴＤＭＡ）５４、前記データプロセッサ１、及び前記外部メモリ２を有する。ディジタル信号処理部５３は、等化器５５、チャネルコーデック５６、音声圧縮伸長部５７、ビタビ処理部５８及び暗号化処理部５９を、図示を省略する積和演算回路及びその動作プログラム等によって実現する。等化器５５は前記Ａ／Ｄ変換器４６の出力を等化し、等化されたデータはビタビ処理部５８で論理値が判定され、判定結果がチャネルコーデック５６に与えられ所定のフォーマット変換が行われ、音声圧縮伸長部５７で伸長される。伸長されたデータはＤ／Ａ変換器６０を介してスピーカー６１から放音される。マイク６２に入力された音声はＡ／Ｄ変換器６３でディジタル音声データに変換され、音声圧縮伸長部５７で圧縮され、チャネルコーデック５６を介して所定のフォーマット変換が行われ、前記ＧＭＳＫ変調回路４７に与えられる。
【００６４】
前記データプロセッサ１は、通話中には前記アナログ部４０及びディジタル部４１の動作をリアルタイムに制御する。更に、データプロセッサ１は移動体通信特有のプロトコル制御処理やシステム制御処理を行う。プロトコル制御処理は、通話中や着信待ち受け中において自分自身の携帯電話システムがどの通話エリアに所属するかの判定や、通話エリアを管轄する基地局の変更などを行う処理である。システム制御処理は携帯電話システムの操作ボタンの変化に応ずる指示を検出したりディスプレイの表示を制御したりする処理である。前記プロトコル制御処理及びシステム制御処理には厳格なリアルタイム性が要求されず、また、プログラム容量も大きい。そのため、前記リアルタイム制御の為の動作プログラムはデータプロセッサ１の内蔵ＲＯＭに格納され、プロトコル制御処理やシステム制御処理のための動作プログラムは外部メモリ２に格納される。
【００６５】
前記プロトコル制御処理やシステム制御処理のための動作プログラムにはループ命令が殆ど存在せず専らリニアな連続アドレスの命令を逐次実行する処理が多用されたプログラムになっている。このようなプログラムを実行する場合はデータプロセッサ１にキャッシュメモリを採用しても左程の効果を期待することはできず、またキャッシュメモリをデータプロセッサ上に設けるとデータプロセッサのトランジスタ規模の増大によりプロセッサコストが高くなり、また、それによる占有面積も大きくなる。このとき、以上で説明した命令プリフェッチ機能を有するデータプロセッサ１を用いれば、プリフェッチのために外部から読み込んだ命令をどの命令バッファＢｕｆ４，Ｂｕｆ８，ＢｕｆＣのバッファエントリとすればよいかは、その命令アドレスの所定の下位４ビットの値によって一義的に決まるから、プリフェッチの制御が簡単である。この命令プリフェッチのための構成は、キャッシュメモリのアドレスタグによる制御機構やＦＩＦＯバッファのカウンタによるリード・ライトポインタ制御機構よりも簡素に実現することが可能である。したがって、携帯電話システムのコスト低減、及び小型化に寄与することができる。
【００６６】
特に、命令バッファへのプリフェッチは前記命令アドレスの下位４ビットの値が何れか１つの所定値になったときだけ行えば充分であり、例えば、前記下位４ビットによる先頭値（Ｈ’０）の命令アドレスに対する命令フェッチがあったとき、その後続アドレスから前記下位４ビットによる最終アドレス（Ｈ’Ｃ）までアドレス順に対応する命令バッファに命令プリフェッチを行い、命令プリフェッチ制御の簡素化を考慮している。更に、分岐命令による分岐先命令の命令フェッチがあったとき、当該命令フェッチアドレスの後続アドレスから前記下位４ビットによる最終アドレスまでアドレス順に対応する命令バッファに命令プリフェッチを行うようにして、分岐命令により命令アドレス系列が変更されたときも、命令アドレス系列の変更後における命令フェッチの効率化について考慮している。
【００６７】
図８に本発明に係るデータ処理システムの他の一例が示される。図８に示すデータ処理システムは、図１に示す外部メモリアクセス設定レジスタ２１に代えて、転送制御部２１１が用いられ、データプロセッサ１００の外部にバースト転送が可能なページモード機能付き外部メモリを含む外部メモリ２００が接続される。前記転送制御部２１１で決定されたバースト転送長に応じて、外部メモリ２００から命令バッファへ、最大ｎ命令を転送可能なように、バッファコントローラ３０により制御される。
【００６８】
前記ページモード機能付き外部メモリ(ＣＳ０空間)には、例えば携帯電話のシステムプロトコル処理などの、分岐やループが比較的少なくシーケンシャルに命令が実行されるようなプログラムが格納される。
【００６９】
図９に前記転送制御部２１１のバースト転送長の設定部２５０のブロック図と、図１０にバースト転送長の設定制御フロー、図１１にｕｐ／ｄｏｗｎ（アップダウン）カウンタ２５３とバースト語長設定レジスタ２５４の変化例を示す。前記バースト転送長の設定部２５０は分岐命令と分岐命令の間で実行される非分岐命令の数をカウントし、分岐命令の出現するまでに実行される非分岐命令の数が多ければ、バースト転送長も長くし、実行される非分岐命令の数が少なければ、バースト転送長を短くするよう制御される。初期値として設定されるバースト転送長は特に限定されないが、４命令分としても良い。
【００７０】
図９の設定部では、バースト語長設定レジスタ２５４への設定は、分岐命令が出現したところで設定しているが、ｕｐ／ｄｏｗｎカウンタ２５３が所定の値になる毎に設定するようにしても良い。
【００７１】
図１２及び図１３には、データプロセッサ１００による命令フェッチとプリフェッチの制御手順が示される。図１２及び図１３に示す制御手順は、図３及び図４に示す制御手順と比べて、命令バッファの数が増加したことにより格納する命令数が増加（Ｓα）している点を除き、特に違いはない。
【００７２】
図１４に本発明に係るデータ処理システムの他の一例が示される。図１４に示すデータ処理システムは、ＣＰＵ３が何らかの要因により割込み処理を行うことが必要となった場合である。割込み処理を行う場合、分岐命令により分岐を行う場合と同様、ＣＰＵ３が実行する命令アドレスが連続しなくなるからである。
【００７３】
割込み制御部１７１が各種要因に基づく割込みを受け付け、割込み要求があった旨をＣＰＵ３に通知する。命令デコーダ１０５は割込み制御部１７１からの割込みに対し、割込み処理プログラムの実行を行う場合に、バスコントローラ４に通知（１５３）する。前記通知に応じて、バッファコントローラ３０は分岐命令により分岐が行われる場合と同様の処理を行う。
【００７４】
図１５に、本発明に係るデータ処理システムの他の一例が示される。図１５に示すデータ処理システムは、ｎ個の命令バッファを有するプリフェッチバッファテーブルを２個(１６２，１６３)有する。バッファコントローラ３０は、ＣＰＵ３がプリフェッチバッファテーブル１６２を使用している間に、外部メモリ２００から命令フェッチを行い、プリフェッチバッファテーブル１６３の命令バッファに格納するよう制御される。具体的には、ＣＰＵ３がプリフェッチバッファテーブル１６２の命令バッファ（１９１，１５７，１５９）に格納された命令を全てフェッチした後、次の命令フェッチはプリフェッチバッファテーブル１６３の命令バッファより行い、プリフェッチバッファテーブル１６２の命令バッファに、外部メモリ２００から命令フェッチを行った命令を格納する。
【００７５】
ＣＰＵ３が、プリフェッチバッファテーブル１６３の命令バッファに格納された命令を全てフェッチした場合は、逆の切替え制御が行われる。
【００７６】
図１６にプリフェッチバッファテーブルの切替えに係るタイミングチャートを示す。時間ｔ１において分岐命令の命令フェッチが行われた後、分岐先の命令アドレスについて、バスコントローラ４は外部メモリ２００へのアクセスを行い、時間ｔ４からｔ６にかけて外部メモリ２００から供給される命令をプリフェッチバッファテーブル１６２（プリフェッチバッファテーブルＡ）の命令バッファに格納する。時間ｔ８においてプリフェッチバッファテーブルＡの最後の命令バッファＡ３に格納された命令が命令フェッチされた後、続く命令アドレスについて、時間ｔ９からｔ１２にかけて、外部メモリ２００から供給される命令をプリフェッチバッファテーブル１６３（プリフェッチバッファテーブルＢ）の命令バッファに格納する。これにより、時間ｔ１０において発行される命令フェッチに対して、プリフェッチバッファテーブルＢの命令バッファＢ０に格納された命令を供給することが可能となり、外部メモリ２００から命令が供給されるのを待つ必要がなくなる。
【００７７】
外部メモリ２００から命令を読み出すために外部メモリのアドレスバスに出力するアドレスについて説明する。
【００７８】
時間ｔ１での分岐命令の命令フェッチの場合、供給を受けるべき命令のアドレスはＣＰＵ３が内部バスに出力する情報を使用して、バスコントローラ４が生成して外部メモリのアドレスバスに出力する。一方、時間ｔ８での非分岐命令に続く命令フェッチの場合、バッファコントローラ３０の内部情報を基にして、続く命令のアドレス計算が可能であるため、内部バスに出力する情報が出力される前に、先行して供給を受けるべき命令のアドレスを出力することが可能となる。
【００７９】
図１７に、複数のプリフェッチバッファテーブルを使用する場合の動作を示す。ＣＰＵ３から分岐命令による命令フェッチが出力された場合(図１７(Ａ))、外部メモリへの読出し動作を行い、外部メモリから読み込まれる命令を命令バッファに書き込むのと平行してＣＰＵ３の命令フェッチが行われる。この場合、プリフェッチバッファテーブルへの書込みは、特に限定されないが、最も最近使用していない側のプリフェッチバッファテーブルに命令を格納するようにすると良い。
【００８０】
一方、非分岐命令による命令フェッチを行う場合（図１７（Ｂ））、命令アドレスの下位ビットにより示される命令バッファの対応するフラグがバリッド状態となるまで待ち、ＣＰＵ３の命令フェッチが行われ、フラグをインバリッド状態にする。そして全ての命令を命令フェッチした(即ち空の)プリフェッチバッファテーブルが存在する場合、ＣＰＵ３からの命令フェッチが出力されるか否かに関係なく、最後に実行した命令フェッチに連続するアドレスに対して、外部メモリ２００への読出し動作を行い、外部メモリから読み込まれる命令を空のプリフェッチバッファテーブルの命令バッファに格納し、対応するフラグをバリッド状態とする。
【００８１】
図１８に本発明に係るデータ処理システムの他の一例を示す。図１８に示すデータ処理システムは、外部メモリ２００から読み出される命令が分岐命令か非分岐命令かを判定するための命令デコーダ１７０を有するものである。外部メモリ２００から読み出される命令が分岐命令であるか非分岐命令であるかを前記命令デコーダ１７０により判定し、分岐命令である場合はその分岐命令に続く命令の読込みを中断するものである。
【００８２】
図１９に、命令デコーダ１７０により分岐命令判定を行う場合のタイミングチャートを示す。
【００８３】
時間ｔ３から始まる外部メモリ２００からの命令読出しにおいて、時間ｔ７で読み出された命令が分岐命令であることが判明した場合、外部メモリ２００からの命令読出し（バースト転送）を中断し、時間ｔ１０で分岐命令による分岐先アドレスが判明した段階で、次の命令の読出しを開始（ｔ１２）する。
【００８４】
外部メモリ２００からの命令読出しを中断するのは、命令デコーダ１７０での分岐命令の検出に限られず、割込み要因の検出であっても良い。割込み要因が検出された場合、図１４において説明したように、分岐命令による分岐と同様にＣＰＵ３が実行する命令アドレスが連続しなくなるからである。
【００８５】
図２０に本発明に係るデータ処理システムの他の一例を示す。図２０に示すデータ処理システムは、外部メモリ２００から読み出される命令が分岐命令か非分岐命令かを判定する命令デコーダ１７０と、分岐命令で分岐する分岐先アドレスを計算するためのアドレス計算機１７２を有するものである。
【００８６】
図２１に命令デコーダ１７０により分岐命令判定を行い、アドレス計算機１７２によりアドレス計算を行う場合のタイミングチャートを示す。
【００８７】
時間ｔ３から始まる外部メモリ２００からの命令読出しにおいて、時間ｔ７で読み出された命令が分岐命令であることが判明した場合、外部メモリ２００からの命令読出し（バースト転送）を中断し、アドレス計算機１７２で計算した分岐先アドレスについて、時間ｔ１０から外部メモリ２００より命令読出しを行う。これにより分岐命令を検出した場合であっても、分岐先アドレスの命令の読出しのためにＣＰＵ３の命令実行を中断することがなくなる。
【００８８】
命令デコーダ１７０により分岐命令を判定する場合、当該分岐命令が１方向分岐命令であるか、２方向分岐命令であるかについて判定するようにしても良い。１方向分岐命令である場合、必ず分岐先アドレスへの分岐が発生するが、２方向分岐命令である場合、分岐先アドレスへ分岐するか、若しくは分岐せずに続く命令アドレスの命令を実行するかのいずれかの動作を行う。
【００８９】
検出した分岐命令が１方向分岐命令である場合、当該分岐命令に続く命令から読出しを中断し、２方向分岐命令である場合、当該分岐命令に続く命令と、当該分岐命令により分岐する分岐先アドレスの命令をそれぞれプリフェッチバッファテーブルに格納するように制御すればよい。これにより、２方向分岐命令により分岐をしてもしなくても、ＣＰＵ３が実行する命令はプリフェッチバッファテーブルに格納されているため、外部メモリ２００から命令を読み出すために必要な時間がなくなることとなる。そして、実行しない側のプリフェッチバッファテーブルに格納した命令については、実行しないことが確実となった段階で、インバリッド状態とすればよい。
【００９０】
２方向分岐命令の場合に当該分岐命令に続く命令と、分岐先アドレスの命令をそれぞれ何命令分プリフェッチしておくかであるが、特に限定しないがそれぞれ２命令分程度でよい。分岐命令を検出後、分岐命令に続く２命令程度読出しを行ったところで外部メモリ２００からの読出しを中断し、続いて分岐先アドレスについて２命令程度読出しを行う。２命令程度読出しを行っておけば、実行する命令が確定した段階で、外部メモリ２００から新しく命令の読み出しを開始しても、命令実行に間に合うからである。具体的にはＣＰＵ３での命令実行にかかる時間と外部メモリ２００から命令を読み出すのに必要な時間とを考慮し、決定すればよい。
【００９１】
図２２に本発明に係るデータ処理システムの他の一例を示す。図２２に示すデータ処理装置は、プリフェッチバッファテーブルと共にオペランドバッファ（１７６，１７７）を有するものである。
【００９２】
図２３にオペランドバッファ（１７６，１７７）を有する場合のタイミングチャートを示す。命令デコーダによりオペランドに示されるアドレスについて外部メモリ２００の読出しが必要な命令を検出（ｔ６）した場合、アドレス計算機１７２によりオペランドに示されるアドレスの計算を行い、外部メモリ２００にオペランドデータの読出しを行い（ｔ９）、外部メモリ２００から読み出されたデータをオペランドバッファ（１７６，１７７）に格納するようにする。これによりＣＰＵ３からのオペランドフェッチ（ｔ８）を待って外部メモリ２００にアクセスをする場合に比べてＣＰＵ３の実行中断時間が短くなる。オペランドデータの読出しが完了した後は、続く命令について命令の読出しを継続すればよい。
【００９３】
図２４に本発明に係るデータ処理システムの他の一例を示す。図２４に示すデータ処理システムは、プリフェッチバッファと共にキャッシュメモリを更に有するものである。プロトコル処理では比較的分岐やループ処理が少ないため、キャッシュメモリだけでは処理効率を向上することが困難であるため、プリフェッチバッファを用いることが有用である。しかし、プリフェッチバッファだけでは、既に実行したアドレスへの分岐やループ処理であったとしても外部メモリ２００へのアクセスが必要となり、このような場合はキャッシュメモリが有用となる。さらには、プロトコル処理内での分岐やループ処理だけでなく、プロトコル処理プログラム自体、所定の時間間隔で何度も実行されるものであり、キャッシュメモリにプログラム全てを格納することは現実的ではないが、プログラムの一部であってもキャッシュメモリに格納されていれば、当該一部については外部メモリ２００へのアクセスが不要となり、有用と言うことができる。このことから、キャッシュメモリに格納されている命令については、キャッシュメモリから当該命令を読出し、キャッシュメモリに格納されていない命令については、プリフェッチバッファを用いて、外部メモリ２００から先行して命令を読み出すようにすればよい。
【００９４】
更に、プリフェッチバッファに図２０に示す命令デコーダ１７０とアドレス計算機１７２を有し、分岐命令の検出及び分岐先アドレスの計算を行うようにすると良い。分岐先アドレスが現在実行中の命令アドレスよりも小さいアドレスへの分岐の場合は、分岐先アドレスの命令はキャッシュメモリに格納されている可能性が高いため、命令プリフェッチを中断し、キャッシュメモリに当該命令が格納されているか否かをキャッシュメモリコントローラ１８４によりチェックし、格納されている場合はキャッシュメモリから格納されている命令を読み出すようにすればよい。
【００９５】
一方、分岐先アドレスが現在実行中の命令アドレスよりも大きい場合、又はキャッシュメモリに当該命令が格納されていない場合は、当該分岐先アドレスについて命令プリフェッチを行うようにすればよい。
【００９６】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００９７】
例えば、データプロセッサはＣＰＵのような命令実行手段とバスコントローラ以外にも適宜の回路モジュールを備えてよいことは言うまでもない。例えば、メモリマネージメントユニット、浮動小数点演算ユニット、積和演算ユニット、データ用のキャッシュメモリ、ダイレクトメモリアクセスコントローラ、タイマ・カウンタなどを必要に応じて内蔵してもよい。
【００９８】
また、分岐命令による分岐先命令のフェッチに際してプリフェッチを行わないように構成する事も可能である。また、メモリバッファのサイズは命令フェッチの単位である命令サイズに等しくすることが命令プリフェッチ及び命令フェッチの制御を簡易化する観点より優れているが、本発明はそれに限定されず、命令フェッチの単位である命令サイズの整数倍の容量をもつ命令バッファを採用することも可能である。
【００９９】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野である携帯電話システムに適用した場合について説明したが、本発明はそれに限定されるものではなく、その他の通信端末や携帯情報端末等のデータ処理システムに広く適用することができる。
【０１００】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【０１０１】
すなわち、比較的簡単な構成によって外部から命令プリフェッチを行うことができ、命令の実行効率を向上させることができるデータプロセッサを実現する事ができる。
【０１０２】
また、ループ命令が殆ど存在せず専らリニアな連続アドレスの命令を外部メモリからフェッチして逐次実行する処理の高速化を、データプロセッサにおける比較的構成の簡単な命令プリフェッチの機構によって実現する事ができる。
【０１０３】
更に、連続的な命令アドレスの実行順序を変更する分岐処理の少ないサブルーチンプログラムを実行するデータ処理システムにおけるデータ処理効率を比較的低いコストで向上させることができる。
【図面の簡単な説明】
【図１】本発明に係るデータ処理システムの一例をデータプロセッサと共に示すブロック図である。
【図２】データプロセッサに内蔵されたＣＰＵのアドレスマップである。
【図３】データプロセッサによる命令フェッチとプリフェッチの制御手順を図４と共に示すフローチャートである。
【図４】データプロセッサによる命令フェッチとプリフェッチの制御手順を図３と共に示すフローチャートである。
【図５】外部メモリとしてページモードを有するフラッシュメモリを採用したときの当該ページモードによるメモリ・リード動作のタイミングチャートである。
【図６】外部メモリとしてバースト動作を有するＳＤＲＡＭを採用したときの当該バースト・リード動作のタイミングチャートである。
【図７】図１のデータプロセッサを適用した携帯電話システムのブロック図である。
【図８】本発明に係るデータ処理システムの一例をデータプロセッサと共に示すブロック図である。
【図９】図８のバースト転送長設定部の一例を示すブロック図である。
【図１０】図９のバースト転送長設定部でのバースト転送長設定手順を示すフローチャートである。
【図１１】図８のバースト転送長設定部で設定されるバースト転送長の変化の一例を示す説明図である。
【図１２】データプロセッサによる命令フェッチとプリフェッチの制御手順を図１３と共に示すフローチャートである。
【図１３】データプロセッサによる命令フェッチとプリフェッチの制御手順を図１２と共に示すフローチャートである。
【図１４】本発明に係るデータ処理システムの一例をデータプロセッサと共に示すブロック図である。
【図１５】本発明に係るデータ処理システムの一例をデータプロセッサと共に示すブロック図である。
【図１６】図１５の複数のプリフェッチバッファテーブルを有する場合の、データプロセッサによる命令フェッチと命令バッファに格納される命令と外部メモリへのアクセスを示すタイミング・チャートである。
【図１７】分岐命令と非分岐命令のそれぞれの場合における命令バッファの動作を示すフローチャートである。
【図１８】本発明に係るデータ処理システムの一例をデータプロセッサと共に示すブロック図である。
【図１９】図１８の命令デコーダを有する場合の、分岐命令の検出を含む、データプロセッサによる命令フェッチと命令バッファに格納される命令と外部メモリへのアクセスを示すタイミング・チャートである。
【図２０】本発明に係るデータ処理システムの一例をデータプロセッサと共に示すブロック図である。
【図２１】図２０のアドレス計算機を有する場合の、分岐命令の検出を含む、データプロセッサによる命令フェッチと命令バッファに格納される命令と外部メモリへのアクセスを示すタイミング・チャートである。
【図２２】本発明に係るデータ処理システムの一例をデータプロセッサと共に示すブロック図である。
【図２３】図２２のオペラントフェッチ機能を有する場合の、オペランドフェッチ命令の検出を含む、データプロセッサによる命令フェッチと命令バッファに格納される命令と外部メモリへのアクセスを示すタイミング・チャートである。
【図２４】本発明に係るデータ処理システムの一例をデータプロセッサと共に示すブロック図である。
【符号の説明】
１  データプロセッサ
２  外部メモリ
ＣＳ０〜ＣＳ３  メモリ空間
３  ＣＰＵ
４  バスコントローラ
１２  プログラムカウンタ
１３  命令デコーダ
１４  メモリアクセスコマンド発生部
２０  外部メモリアクセス制御部
２２  メモリアクセスアドレスデコーダ
２３  メモリアクセスコマンドデコーダ
２４  アドレス／データ入出力制御部
３０  バッファコントローラ
３１  入力段セレクタ
３２  出力段セレクタ
３３  スルー経路
Ｂｕｆ４，Ｂｕｆ８，ＢｕｆＣ  命令バッファ
Ｆｌｇ４，Ｆｌｇ８，ＦｌｇＣ  フラグ
４０  アナログ部
４１  ディジタル部
【図１】
0003753368.tif 000002
【図２】
0003753368.tif 000003
【図３】
0003753368.tif 000004
【図４】
0003753368.tif 000005
【図５】
0003753368.tif 000006
【図６】
0003753368.tif 000007
【図７】
0003753368.tif 000008
【図８】
0003753368.tif 000009
【図９】
0003753368.tif 000010
【図１０】
0003753368.tif 000011
【図１１】
0003753368.tif 000012
【図１２】
0003753368.tif 000013
【図１３】
0003753368.tif 000014
【図１４】
0003753368.tif 000015
【図１５】
0003753368.tif 000016
【図１６】
0003753368.tif 000017
【図１７】
0003753368.tif 000018
【図１８】
0003753368.tif 000019
【図１９】
0003753368.tif 000020
【図２０】
0003753368.tif 000021
【図２１】
0003753368.tif 000022
【図２２】
0003753368.tif 000023
【図２３】
0003753368.tif 000024
【図２４】
0003753368.tif 000025