(57)【要約】【課題】  コストやパッケージサイズへの影響を出さずに、命令を高速に実行したりデータを高速に読み出したりすることが可能なマイクロプロセッサシステムを提供する。【解決手段】  プログラムモジュールの命令をキャッシュする際には、当該命令を含む１つのキャッシュラインと対応するワード数の命令群をまとめてキャッシュする。プログラムモジュールの全命令をキャッシュメモリにキャッシュすると、該キャッシュメモリのキャッシュラインＬ０からキャッシュラインＬｗにかけてキャッシュされるものとする。０番目から（ｙ−１）番目までの各キャッシュラインにおける最後尾にキャッシュされる特定命令は、次のキャッシュラインにおける最後尾にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令Ｊ１である。各第１のジャンプ命令Ｊ１の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令Ｊ２である。【選択図】    図６
2008197775.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと、
前記マイクロプロセッサに使用されるキャッシュメモリと、
前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用のプログラムモジュールを格納したプログラム格納メモリと、
を備えるマイクロプロセッサシステムにおいて、
前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュするように構成され、
前記プログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、
前記プログラムモジュールを構成する命令のうち、
前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、
各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴とするマイクロプロセッサシステム。
【請求項２】
前記キャッシュメモリのｙ番目のキャッシュラインにキャッシュされる特定命令は、前記プログラムモジュールにおける最初の命令へのジャンプを指示する第３のジャンプ命令であることを特徴とする請求項１に記載のマイクロプロセッサシステム。
【請求項３】
前記マイクロプロセッサは、前記プログラムモジュールの命令を最初に実行する場合には、先ず、前記プログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行することを特徴とする請求項１又は２に記載のマイクロプロセッサシステム。
【請求項４】
前記マイクロプロセッサは、前記プログラムモジュールが前記キャッシュメモリにキャッシュされていない状態で該プログラムモジュールの命令を実行する場合には、先ず、前記プログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行することを特徴とする請求項１又は２に記載のマイクロプロセッサシステム。
【請求項５】
マイクロプロセッサと、
前記マイクロプロセッサに使用されるキャッシュメモリと、
前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用の複数のプログラムモジュールを格納したプログラム格納メモリと、
を備えるマイクロプロセッサシステムにおいて、
前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュするように構成され、
前記複数のプログラムモジュールのうち、特定のプログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、
前記特定のプログラムモジュールを構成する命令のうち、
前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、
各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴とするマイクロプロセッサシステム。
【請求項６】
前記キャッシュメモリのｙ番目のキャッシュラインにキャッシュされる特定命令は、前記特定のプログラムモジュールにおける最初の命令へのジャンプを指示する第３のジャンプ命令であることを特徴とする請求項５に記載のマイクロプロセッサシステム。
【請求項７】
前記マイクロプロセッサは、前記特定のプログラムモジュールの命令を最初に実行する場合には、先ず、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行することを特徴とする請求項５又は６に記載のマイクロプロセッサシステム。
【請求項８】
前記マイクロプロセッサは、前記特定のプログラムモジュールが前記キャッシュメモリにキャッシュされていない状態で該特定のプログラムモジュールの命令を実行する場合には、先ず、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行することを特徴とする請求項５又は６に記載のマイクロプロセッサシステム。
【請求項９】
前記プログラム格納メモリには、
前記マイクロプロセッサが前記特定のプログラムモジュールの命令を最初に実行する場合には、先ず、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行させる処理を前記マイクロプロセッサに行わせるプログラムモジュールが格納されていることを特徴とする請求項５乃至８の何れか一項に記載のマイクロプロセッサシステム。
【請求項１０】
前記プログラム格納メモリには、
前記特定のプログラムモジュールが前記キャッシュメモリにキャッシュされていない状態で前記マイクロプロセッサが該特定のプログラムモジュールの命令を実行する場合には、先ず、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行させる処理を前記マイクロプロセッサに行わせるプログラムモジュールが格納されていることを特徴とする請求項５乃至８の何れか一項に記載のマイクロプロセッサシステム。
【請求項１１】
前記特定命令は、各キャッシュラインにおいて、互いに同じ位置にキャッシュされることを特徴とする請求項１乃至１０の何れか一項に記載のマイクロプロセッサシステム。
【請求項１２】
前記特定命令は、各キャッシュラインにおける最後尾又は先頭にキャッシュされることを特徴とする請求項１１に記載のマイクロプロセッサシステム。
【請求項１３】
前記ＬＳＩに備えられ、前記キャッシュメモリへの命令のキャッシュを行うキャッシュ制御部を更に備えることを特徴とする請求項１乃至１２の何れか一項に記載のマイクロプロセッサシステム。
【請求項１４】
マイクロプロセッサと、
前記マイクロプロセッサに使用されるキャッシュメモリと、
前記マイクロプロセッサを有するＬＳＩの外部に配置され、データ群を格納したデータ群格納メモリと、
を備えるマイクロプロセッサシステムにおいて、
前記データ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成されていることを特徴とするマイクロプロセッサシステム。
【請求項１５】
マイクロプロセッサと、
前記マイクロプロセッサに使用されるキャッシュメモリと、
前記マイクロプロセッサを有するＬＳＩの外部に配置され、複数のデータ群を格納したデータ群格納メモリと、
を備えるマイクロプロセッサシステムにおいて、
前記複数のデータ群のうち、特定のデータ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成されていることを特徴とするマイクロプロセッサシステム。
【請求項１６】
前記ＬＳＩに備えられ、前記キャッシュメモリへのデータ群のキャッシュを行うキャッシュ制御部を更に備えることを特徴とする請求項１４又は１５に記載のマイクロプロセッサシステム。
【請求項１７】
マイクロプロセッサと、
前記マイクロプロセッサに使用されるキャッシュメモリと、
前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用のプログラムモジュールとデータ群とを格納したプログラム・データ群格納メモリと、
を備えるマイクロプロセッサシステムにおいて、
前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュし、
前記データ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成され、
前記プログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、
前記プログラムモジュールを構成する命令のうち、
前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、
各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴とするマイクロプロセッサシステム。
【請求項１８】
マイクロプロセッサと、
前記マイクロプロセッサに使用されるキャッシュメモリと、
前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用のプログラムモジュールと複数のデータ群とを格納したプログラム・データ群格納メモリと、
を備えるマイクロプロセッサシステムにおいて、
前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュし、
前記複数のデータ群のうち、特定のデータ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成され、
前記プログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、
前記プログラムモジュールを構成する命令のうち、
前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、
各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴とするマイクロプロセッサシステム。
【請求項１９】
マイクロプロセッサと、
前記マイクロプロセッサに使用されるキャッシュメモリと、
前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用の複数のプログラムモジュールと、データ群と、を格納したプログラム・データ群格納メモリと、
を備えるマイクロプロセッサシステムにおいて、
前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュし、
前記データ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成され、
前記複数のプログラムモジュールのうち、特定のプログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、
前記特定のプログラムモジュールを構成する命令のうち、
前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、
各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴とするマイクロプロセッサシステム。
【請求項２０】
マイクロプロセッサと、
前記マイクロプロセッサに使用されるキャッシュメモリと、
前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用の複数のプログラムモジュールと、複数のデータ群と、を格納したプログラム・データ群格納メモリと、
を備えるマイクロプロセッサシステムにおいて、
前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュし、
前記複数のデータ群のうち、特定のデータ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成され、
前記複数のプログラムモジュールのうち、特定のプログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、
前記特定のプログラムモジュールを構成する命令のうち、
前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、
各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴とするマイクロプロセッサシステム。
【請求項２１】
前記キャッシュメモリは、プログラムモジュールを構成する命令をキャッシュする命令キャッシュと、データをキャッシュするデータキャッシュと、からなることを特徴とする請求項１７乃至２０の何れか一項に記載のマイクロプロセッサシステム。
【請求項２２】
請求項１乃至２１の何れか一項に記載のマイクロプロセッサシステムを備えることを特徴とする電子機器。
【請求項２３】
当該電子機器は、携帯型の電子機器であることを特徴とする請求項２２に記載の電子機器。
【請求項２４】
当該電子機器は、携帯電話機であることを特徴とする請求項２３に記載の電子機器。
【請求項２５】
マイクロプロセッサの動作用のプログラムモジュールを格納した記憶媒体において、
前記プログラムモジュールの全ての命令を前記マイクロプロセッサが使用するキャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、
前記プログラムモジュールを構成する命令のうち、
前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、
各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴とする記憶媒体。
【請求項２６】
マイクロプロセッサの動作用の複数のプログラムモジュールを格納した記憶媒体において、
前記複数のプログラムモジュールのうち、特定のプログラムモジュールの全ての命令を前記マイクロプロセッサが使用するキャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、
前記特定のプログラムモジュールを構成する命令のうち、
前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、
各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴とする記録媒体。
【請求項２７】
マイクロプロセッサの動作用のプログラムモジュールにおいて、
前記プログラムモジュールの全ての命令を前記マイクロプロセッサが使用するキャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、
前記プログラムモジュールを構成する命令のうち、
前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、
各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴とするプログラムモジュール。
【請求項２８】
マイクロプロセッサの動作用のプログラムモジュールを格納したプログラム格納メモリから、前記マイクロプロセッサが使用するキャッシュメモリに前記プログラムモジュールをキャッシュする方法において、
前記プログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、
前記プログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令である第１のジャンプ命令を実行するとともに、当該特定命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、前記キャッシュメモリのｘ番目のキャッシュラインにまとめてキャッシュする第１の過程を行った後、
前記第１のジャンプ命令に従って、次のキャッシュラインにキャッシュされる特定命令である第１のジャンプ命令を順次に実行するとともに、当該特定命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群をまとめてキャッシュすることを繰り返すことにより、前記プログラムモジュールの全体を前記キャッシュメモリにキャッシュすることを特徴とするキャッシュ方法。
【請求項２９】
マイクロプロセッサの動作用の複数のプログラムモジュールを格納したプログラム格納メモリから、前記マイクロプロセッサが使用するキャッシュメモリに前記複数のプログラムモジュールのうちの特定のプログラムモジュールをキャッシュする方法において、
前記特定のプログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、
前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令である第１のジャンプ命令を実行するとともに、当該特定命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、前記キャッシュメモリのｘ番目のキャッシュラインにまとめてキャッシュする第１の過程を行った後、
前記第１のジャンプ命令に従って、次のキャッシュラインにキャッシュされる特定命令である第１のジャンプ命令を順次に実行するとともに、当該特定命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群をまとめてキャッシュすることを繰り返すことにより、前記特定のプログラムモジュールの全体を前記キャッシュメモリにキャッシュすることを特徴とするキャッシュ方法。
【請求項３０】
データ群を格納したデータ群格納メモリから、前記マイクロプロセッサが使用するキャッシュメモリに前記データ群をキャッシュする方法において、
前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュすることを繰り返すことにより、前記データ群の全体を前記キャッシュメモリにキャッシュすることを特徴とするキャッシュ方法。
【請求項３１】
複数のデータ群を格納したデータ群格納メモリから、前記マイクロプロセッサが使用するキャッシュメモリに前記複数のデータ群のうちの特定のデータ群をキャッシュする方法において、
前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュすることを繰り返すことにより、前記特定のデータ群の全体を前記キャッシュメモリにキャッシュすることを特徴とするキャッシュ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサシステム、これを備える電子機器、記憶媒体、プログラムモジュール及びキャッシュ方法に関する。
【背景技術】
【０００２】
近年、例えば、携帯電話機或いはその他の通信機能を有する携帯機器は、機能や性能の向上により、ソフトウェア、ハードウェア共に規模が増大し、且つシステムの高速化を要求される傾向にある。
【０００３】
しかし、このような事情に反し、それら携帯機器の小型化に伴い、該携帯機器が備えるＬＳＩの外形は小型化する傾向にある。
【０００４】
システムの高速化を図る一つの手段として、キャッシュメモリや高速内蔵メモリを使用することにより、ＣＰＵによるソフトウェアの処理を高速化することが考えられる。
【０００５】
しかし、上記の通りＬＳＩの小型化も必要なため、闇雲にキャッシュメモリや高速内蔵メモリの容量を増加させることはできず、有限なメモリに対し効率の良いメモリ使用方法が求められている。
【０００６】
一般的なＣＰＵを用いたシステムでは、ＣＰＵからＣＰＵの外部に設けられた外部メモリへのアクセス速度、又は、ＣＰＵを含むＬＳＩの外部に設けられた外部メモリへのＣＰＵからのアクセス速度が、ＣＰＵ又はＬＳＩのＩ／Ｏバッファでの遅延や基板上の負荷容量による遅延により遅くなってしまう。
【０００７】
そのため、ＣＰＵが外部メモリから命令やデータを読み出した際、高速アクセス可能なＣＰＵまたはＣＰＵを含むＬＳＩ内に実装されているキャッシュメモリに一旦命令を格納し、このキャッシュメモリから読み出すことにより、高速処理を実現している。
【０００８】
なお、本発明に関連する先行技術文献としては、例えば特許文献１がある。
【０００９】
特許文献１には、ＣＰＵが、キャッシュ制御部を介してキャッシュメモリにキャッシュされている命令を実行する技術が開示されている。
【００１０】
更に、特許文献１には、実行中の命令より数アドレス先行する命令をモニタし、ジャンプ命令などの分岐命令に先立ってプログラム中に挿入されたキャッシュ更新命令を識別した場合に、キャッシュ制御部に対してキャッシュメモリの内容更新を指示する補助処理装置を設けたことにより、この補助処理装置が分岐命令を識別すると、分岐先のアドレスの命令をキャッシュすることにより、キャッシュメモリのミスヒットを回避する技術が開示されている。
【特許文献１】特開平４−１９０４３８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかし、キャッシュメモリに格納するには、必ず一度外部メモリからの読み出しを行わなければならないが、アクセス速度の遅い外部メモリからの読み出し時間と、高速アクセス可能なキャッシュメモリからの読み出しでは、実行時間が異なる。
【００１２】
例えば、あるプログラムモジュールが連続して実行された場合、一度目の実行は読み出しの遅い外部メモリから命令を読み出すので実行時間が遅くなるが、二回目以降は高速読み出し可能なキャッシュメモリから命令を読み出すので実行時間が早くなる。
【００１３】
このため、従来、キャッシュメモリは、必ず短時間で実行しなければならないプログラムモジュールの格納には適さなかった。
【００１４】
対策としては、キャッシュメモリ以外に高速メモリを内蔵することが考えられるが、コストやパッケージサイズへの影響が出てしまう。
【００１５】
また、特許文献１のように、通常動作以外でキャッシュメモリに命令を書き込む機能を追加すると、高速アクセスに最適化されたインターフェースに余分な回路（補助処理装置）が付加されるので、高速アクセスに影響が出る可能性がある。
【００１６】
更に、特許文献１の技術は、上記のように、補助処理装置が、実行中の命令より数アドレス先行する命令をモニタし、ジャンプ命令などの分岐命令に先立ってプログラム中に挿入されたキャッシュ更新命令を識別した場合に、キャッシュ制御部を制御して分岐先のアドレスの命令をキャッシュさせる技術であり、本願発明とは目的、構成及び効果が全く相違する。
【００１７】
本発明は、上記のような問題点を解決するためになされたもので、コストやパッケージサイズへの影響を出さずに、命令を高速に実行したりデータを高速に読み出したりすることが可能なマイクロプロセッサシステム、これを備える電子機器、記憶媒体、プログラムモジュール及びキャッシュ方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記課題を解決するため、本発明のマイクロプロセッサシステムは、マイクロプロセッサと、前記マイクロプロセッサに使用されるキャッシュメモリと、前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用のプログラムモジュールを格納したプログラム格納メモリと、を備えるマイクロプロセッサシステムにおいて、前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュするように構成され、前記プログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、前記プログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴としている。
【００１９】
本発明のマイクロプロセッサシステムにおいては、前記キャッシュメモリのｙ番目のキャッシュラインにキャッシュされる特定命令は、前記プログラムモジュールにおける最初の命令へのジャンプを指示する第３のジャンプ命令であることが好ましい。
【００２０】
本発明のマイクロプロセッサシステムにおいては、前記マイクロプロセッサは、前記プログラムモジュールの命令を最初に実行する場合には、先ず、前記プログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行することが好ましい。
【００２１】
本発明のマイクロプロセッサシステムにおいては、前記マイクロプロセッサは、前記プログラムモジュールが前記キャッシュメモリにキャッシュされていない状態で該プログラムモジュールの命令を実行する場合には、先ず、前記プログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行することが好ましい。
【００２２】
また、本発明のマイクロプロセッサシステムは、マイクロプロセッサと、前記マイクロプロセッサに使用されるキャッシュメモリと、前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用の複数のプログラムモジュールを格納したプログラム格納メモリと、を備えるマイクロプロセッサシステムにおいて、前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュするように構成され、前記複数のプログラムモジュールのうち、特定のプログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴としている。
【００２３】
本発明のマイクロプロセッサシステムにおいては、前記キャッシュメモリのｙ番目のキャッシュラインにキャッシュされる特定命令は、前記特定のプログラムモジュールにおける最初の命令へのジャンプを指示する第３のジャンプ命令であることが好ましい。
【００２４】
本発明のマイクロプロセッサシステムにおいては、前記マイクロプロセッサは、前記特定のプログラムモジュールの命令を最初に実行する場合には、先ず、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行することが好ましい。
【００２５】
本発明のマイクロプロセッサシステムにおいては、前記マイクロプロセッサは、前記特定のプログラムモジュールが前記キャッシュメモリにキャッシュされていない状態で該特定のプログラムモジュールの命令を実行する場合には、先ず、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行することが好ましい。
【００２６】
本発明のマイクロプロセッサシステムにおいては、前記プログラム格納メモリには、前記マイクロプロセッサが前記特定のプログラムモジュールの命令を最初に実行する場合には、先ず、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行させる処理を前記マイクロプロセッサに行わせるプログラムモジュールが格納されていることが好ましい。
【００２７】
本発明のマイクロプロセッサシステムにおいては、前記プログラム格納メモリには、前記特定のプログラムモジュールが前記キャッシュメモリにキャッシュされていない状態で前記マイクロプロセッサが該特定のプログラムモジュールの命令を実行する場合には、先ず、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにキャッシュされる特定命令を実行させる処理を前記マイクロプロセッサに行わせるプログラムモジュールが格納されていることが好ましい。
【００２８】
本発明のマイクロプロセッサシステムにおいては、前記特定命令は、各キャッシュラインにおいて、互いに同じ位置にキャッシュされることが好ましい。
【００２９】
本発明のマイクロプロセッサシステムにおいては、前記特定命令は、各キャッシュラインにおける最後尾又は先頭にキャッシュされることが好ましい。
【００３０】
本発明のマイクロプロセッサシステムにおいては、前記ＬＳＩに備えれ、前記キャッシュメモリへの命令のキャッシュを行うキャッシュ制御部を更に備えることが好ましい。
【００３１】
また、本発明は、マイクロプロセッサと、前記マイクロプロセッサに使用されるキャッシュメモリと、前記マイクロプロセッサを有するＬＳＩの外部に配置され、データ群を格納したデータ群格納メモリと、を備えるマイクロプロセッサシステムにおいて、前記データ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成されていることを特徴としている。
【００３２】
また、本発明は、マイクロプロセッサと、前記マイクロプロセッサに使用されるキャッシュメモリと、前記マイクロプロセッサを有するＬＳＩの外部に配置され、複数のデータ群を格納したデータ群格納メモリと、を備えるマイクロプロセッサシステムにおいて、前記複数のデータ群のうち、特定のデータ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成されていることを特徴としている。
【００３３】
本発明のマイクロプロセッサシステムにおいては、前記ＬＳＩに備えられ、前記キャッシュメモリへのデータ群のキャッシュを行うキャッシュ制御部を更に備えることが好ましい。
【００３４】
また、本発明は、マイクロプロセッサと、前記マイクロプロセッサに使用されるキャッシュメモリと、前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用のプログラムモジュールとデータ群とを格納したプログラム・データ群格納メモリと、を備えるマイクロプロセッサシステムにおいて、前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュし、前記データ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成され、前記プログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、前記プログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴としている。
【００３５】
また、本発明は、マイクロプロセッサと、前記マイクロプロセッサに使用されるキャッシュメモリと、前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用のプログラムモジュールと複数のデータ群とを格納したプログラム・データ群格納メモリと、を備えるマイクロプロセッサシステムにおいて、前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュし、前記複数のデータ群のうち、特定のデータ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成され、前記プログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、前記プログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴としている。
【００３６】
また、本発明は、マイクロプロセッサと、前記マイクロプロセッサに使用されるキャッシュメモリと、前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用の複数のプログラムモジュールと、データ群と、を格納したプログラム・データ群格納メモリと、を備えるマイクロプロセッサシステムにおいて、前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュし、前記データ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成され、前記複数のプログラムモジュールのうち、特定のプログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴としている。
【００３７】
また、本発明は、マイクロプロセッサと、前記マイクロプロセッサに使用されるキャッシュメモリと、前記マイクロプロセッサを有するＬＳＩの外部に配置され、前記マイクロプロセッサの動作用の複数のプログラムモジュールと、複数のデータ群と、を格納したプログラム・データ群格納メモリと、を備えるマイクロプロセッサシステムにおいて、前記プログラムモジュールを構成する命令を前記キャッシュメモリにキャッシュする際には、当該命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、まとめてキャッシュし、前記複数のデータ群のうち、特定のデータ群を前記キャッシュメモリにキャッシュする際には、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュするように構成され、前記複数のプログラムモジュールのうち、特定のプログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴としている。
【００３８】
本発明のマイクロプロセッサシステムにおいては、前記キャッシュメモリは、プログラムモジュールを構成する命令をキャッシュする命令キャッシュと、データをキャッシュするデータキャッシュと、からなることが好ましい。
【００３９】
また、本発明の電子機器は、本発明のマイクロプロセッサシステムを備えることを特徴としている。
【００４０】
本発明は、携帯電話機或いはその他の携帯型の電子機器であることが好ましい。
【００４１】
また、本発明の記憶媒体は、マイクロプロセッサの動作用のプログラムモジュールを格納した記憶媒体において、前記プログラムモジュールの全ての命令を前記マイクロプロセッサが使用するキャッシュメモリにキャッシュすると該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、前記プログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴としている。
【００４２】
また、本発明の記憶媒体は、マイクロプロセッサの動作用の複数のプログラムモジュールを格納した記憶媒体において、前記複数のプログラムモジュールのうちの特定のプログラムモジュールの全ての命令を前記マイクロプロセッサが使用するキャッシュメモリにキャッシュすると該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴としている。
【００４３】
また、本発明のプログラムモジュールは、マイクロプロセッサの動作用のプログラムモジュールにおいて、前記プログラムモジュールの全ての命令を前記マイクロプロセッサが使用するキャッシュメモリにキャッシュすると該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、前記プログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目から（ｙ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令であり、各第１のジャンプ命令の１つ前の位置にキャッシュされる命令は、当該第１のジャンプ命令の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令であることを特徴としている。
【００４４】
また、本発明のキャッシュ方法は、マイクロプロセッサの動作用のプログラムモジュールを格納したプログラム格納メモリから、前記マイクロプロセッサが使用するキャッシュメモリに前記プログラムモジュールをキャッシュする方法において、前記プログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、前記プログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令である第１のジャンプ命令を実行するとともに、当該特定命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、前記キャッシュメモリのｘ番目のキャッシュラインにまとめてキャッシュする第１の過程を行った後、前記第１のジャンプ命令に従って、次のキャッシュラインにキャッシュされる特定命令である第１のジャンプ命令を順次に実行するとともに、当該特定命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群をまとめてキャッシュすることを繰り返すことにより、前記プログラムモジュールの全体を前記キャッシュメモリにキャッシュすることを特徴としている。
【００４５】
また、本発明のキャッシュ方法は、マイクロプロセッサの動作用の複数のプログラムモジュールを格納したプログラム格納メモリから、前記マイクロプロセッサが使用するキャッシュメモリに前記複数のプログラムモジュールのうちの特定のプログラムモジュールをキャッシュする方法において、前記特定のプログラムモジュールの全ての命令を前記キャッシュメモリにキャッシュすると、該キャッシュメモリにおけるｘ番目のキャッシュラインからｙ番目のキャッシュラインにかけてキャッシュされるものとすると、前記特定のプログラムモジュールを構成する命令のうち、前記キャッシュメモリのｘ番目のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令である第１のジャンプ命令を実行するとともに、当該特定命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群を、前記キャッシュメモリのｘ番目のキャッシュラインにまとめてキャッシュする第１の過程を行った後、前記第１のジャンプ命令に従って、次のキャッシュラインにキャッシュされる特定命令である第１のジャンプ命令を順次に実行するとともに、当該特定命令を含む前記キャッシュメモリの１つのキャッシュラインと対応するワード数の命令群をまとめてキャッシュすることを繰り返すことにより、前記特定のプログラムモジュールの全体を前記キャッシュメモリにキャッシュすることを特徴としている。
【００４６】
また、本発明のキャッシュ処理は、データ群を格納したデータ群格納メモリから、前記マイクロプロセッサが使用するキャッシュメモリに前記データ群をキャッシュする方法において、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュすることを繰り返すことにより、前記データ群の全体を前記キャッシュメモリにキャッシュすることを特徴としている。
【００４７】
また、本発明のキャッシュ方法は、複数のデータ群を格納したデータ群格納メモリから、前記マイクロプロセッサが使用するキャッシュメモリに前記複数のデータ群のうちの特定のデータ群をキャッシュする方法において、前記キャッシュメモリの１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュすることを繰り返すことにより、前記特定のデータ群の全体を前記キャッシュメモリにキャッシュすることを特徴としている。
【００４８】
次に、図１乃至図６を参照して、本発明をより具体的に説明する。
【００４９】
図１は本発明に係るＣＰＵシステム（マイクロプロセッサシステム）１０の模式的な構成を示すブロック図、図２はＣＰＵシステム１０が備える外部メモリ４におけるメモリマップを示す模式図、図３はＣＰＵシステム１０が備えるキャッシュメモリ３の構成を示す模式図である。
【００５０】
図１に示すように、ＣＰＵシステム１０は、例えば、ＬＳＩ１と、このＬＳＩ１の外部に配置された外部メモリ（プログラム格納メモリ、又は、プログラム・データ群格納メモリ）４と、を備えている。
【００５１】
ＬＳＩ１と外部メモリ４とは図示しないインターフェースを介して接続されている。
【００５２】
ＬＳＩ１は、ＣＰＵ２と、このＣＰＵ２に使用されるキャッシュメモリ３と、を備えている。
【００５３】
図２に示すように、外部メモリ４には、例えば、複数のプログラムモジュール５が格納されている。
【００５４】
これらプログラムモジュール５のうち、図２に示すプログラムモジュールＡは、高速で処理を行う必要がある（高速処理を必要とする）プログラムモジュールである。
【００５５】
このプログラムモジュールＡは、例えば、外部メモリ４におけるｍ＋１番地からｍ＋ｎ番地にかけてマッピングされた、全体でｎワード（ｎ  ｗｏｒｄ）の命令からなるプログラムモジュールである（１ワードは命令の最小単位）。
【００５６】
このプログラムモジュールＡは、後述するように、必ず、キャッシュメモリ３にキャッシュされて高速処理される。
【００５７】
また、プログラムモジュールＢは、高速処理を必要としないプログラムモジュールである。このプログラムモジュールＢは、例えば、外部メモリ４におけるｐ＋１番地からｐ＋ｑ番地にかけてマッピングされた、全体でｑワードの命令からなるプログラムモジュールである。
【００５８】
図３に示すように、キャッシュメモリ３は、１ラインにつき８ワードの命令を格納できるキャッシュラインを、Ｌ１〜Ｌｚまでの合計ｚライン備えているものとする。
【００５９】
図４はプログラムモジュールＢをキャッシュメモリ３にキャッシュする動作を説明するための図であり、このうち（ａ）は外部メモリ４におけるプログラムモジュールＢの各命令のアドレスを示し、（ｂ）はキャッシュメモリ３にキャッシュされたプログラムモジュールＢの各命令を示す。
【００６０】
図４（ａ）に示すように、外部メモリ４のｐ＋１番地からｐ＋ｑ番地にかけて、プログラムモジュールＢを構成する命令１〜命令ｑまでの合計ｑワードの命令が格納されている。
【００６１】
ＣＰＵ２が外部メモリ４から命令を読み出す場合、当該命令を含む８ワードの命令群（つまり、キャッシュメモリ３の１つのキャッシュラインと対応するワード数の命令群）をまとめて読み出す。
【００６２】
そして、ＣＰＵ２に読み出された８ワードの命令群は、読み出された順に、外部メモリ４のアドレスと対応するキャッシュラインに順次にキャッシュされる。
【００６３】
すなわち、ＣＰＵ２がプログラムモジュールＢを実行する場合、例えば、図４に示すように、先ず、プログラムモジュールＢの命令１〜命令８がＣＰＵ２によりまとめて読み出され、これら命令１〜８がキャッシュメモリ３の１番目のキャッシュラインＬ１にキャッシュされる。
【００６４】
次に、プログラムモジュールＢの命令９〜命令１６が、ＣＰＵ２によりまとめて読み出され、これら命令９〜１６が、キャッシュメモリ３の２番目のキャッシュラインＬ２にキャッシュされる。
【００６５】
その後、同様に、命令が８ワードずつキャッシュメモリ３にキャッシュされ、最終的には、命令ｑ−７〜命令ｑがＣＰＵ２によりまとめて読み出されてキャッシュメモリ３にキャッシュされる。
【００６６】
なお、図４では、簡単な例を説明するため、プログラムモジュールＢの命令の数（ｑ）が、１つのキャッシュラインのワード数（例えば、８）で割り切れる例であって、プログラムモジュールＢの命令の読み出し動作における最終回においても合計８つの命令ｑ−７〜命令ｑがＣＰＵ２によりまとめて読み出されてキャッシュメモリ３にキャッシュされる例を示している。
【００６７】
しかし、プログラムモジュールＢの命令の数が１つのキャッシュラインのワード数で割り切れるとは限らない。割り切れない場合は、プログラムモジュールＢの命令の読み出し動作における最終回においては、端数の命令（命令ｑまでの１〜７つの何れかの数の命令）がＣＰＵ２によりまとめて読み出されてキャッシュメモリ３にキャッシュされる。
【００６８】
なお、ＣＰＵ２により読み出された命令のキャッシュメモリ３へのキャッシュ（格納）は、ＣＰＵシステム１０がキャッシュ制御部を備える場合にはキャッシュ制御部が行うが、ＣＰＵシステム１０がキャッシュ制御部を省略した構成の場合には、例えばＣＰＵ２が行う。
【００６９】
次に、図５及び図６を参照して、プログラムモジュールＡをキャッシュメモリ３にキャッシュする動作を説明する。
【００７０】
図５は外部メモリ４におけるプログラムモジュールＡの各命令のアドレスを示す図であり、図６はキャッシュメモリ３にキャッシュされたプログラムモジュールＡの各命令を示す図である。
【００７１】
図５に示すように、外部メモリ４のｍ＋１番地からｍ＋ｎ番地にかけて、プログラムモジュールＡを構成する合計ｎワードの命令が格納されている。
【００７２】
なお、プログラムモジュールＡが有する命令のうち、キャッシュメモリ３に格納されてから実質的に機能する命令（特定命令（第１及び第３のジャンプ命令）と第２のジャンプ命令を除く命令）は、命令１〜命令ｖまでのｖワード（ｖ＜ｎ）となっており、以下に説明するように、残りの命令はジャンプ命令からなる。
【００７３】
ここで、図６に示すように、プログラムモジュールＡの全ての命令をキャッシュメモリ３にキャッシュすると、キャッシュメモリ３における０番目（ｘ番目）からｗ番目（ｙ番目）までのキャッシュラインが埋まるものとする。
【００７４】
プログラムモジュールＡを構成する命令のうち、キャッシュメモリ３の０番目から（ｗ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令である。
【００７５】
図５及び図６に示す例では、例えば、各キャッシュラインの最後尾に相当するアドレス（図５のｍ＋８番地、ｍ＋１６番地、・・・、ｍ＋（ｎ−８）番地）の命令が、第１のジャンプ命令Ｊ１となっている。
【００７６】
また、図５に示すように、各第１のジャンプ命令Ｊ１の１つ前の位置にキャッシュされる命令（図５のｍ＋７番地、ｍ＋１５番地、・・・、ｍ＋（ｎ−９）番地の命令）は、当該第１のジャンプ命令Ｊ１の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令Ｊ２となっている。
【００７７】
また、キャッシュメモリ３のｗ番目（ｙ番目）のキャッシュラインにキャッシュされる特定命令（図５のｍ＋ｎ番地の命令）は、プログラムモジュールＡにおける最初の命令（図５及び図６の命令１）へのジャンプを指示する第３のジャンプ命令Ｊ３となっている。
【００７８】
ＣＰＵ２がプログラムモジュールＡの命令を最初に実行する場合には（プログラムモジュールＡがキャッシュメモリ３にキャッシュされていない状態で該プログラムモジュールＡの命令を実行する場合には）、先ず、プログラムモジュールＡの最初の特定命令である図５に示すアドレスｍ＋８番地の第１のジャンプ命令Ｊ１から実行する。
【００７９】
すなわち、ＣＰＵ２は、先ず、アドレスｍ＋８番地の第１のジャンプ命令Ｊ１を含む下位８ワードの命令群（１つのキャッシュラインと対応するワード数の命令群）、すなわち、図５のｍ＋１番地〜ｍ＋８番地の命令群をまとめて外部メモリ４から読み出し、図６に示すようにキャッシュメモリ３の０番目のキャッシュラインＬ０へキャッシュし、この命令群のうち、外部メモリ４においてはアドレスｍ＋８番地に格納されていた第１のジャンプ命令Ｊ１をキャッシュメモリ３から読み出して実行する。
【００８０】
外部メモリ４においてアドレスｍ＋８番地に格納されていた第１のジャンプ命令Ｊ１は、アドレスｍ＋１６番地へのジャンプ命令であるため、ＣＰＵ２は、続いて、図５に示すアドレスｍ＋１６番地の第１のジャンプ命令Ｊ１を含む下位８ワードの命令群をまとめて外部メモリ４から読み出し、この命令群を図６に示すようにキャッシュメモリ３の１番目のキャッシュラインＬ１へキャッシュし、この命令群のうち、外部メモリ４においてはアドレスｍ＋１６番地に格納されていた第１のジャンプ命令Ｊ１をキャッシュメモリ３から読み出して実行する。
【００８１】
以後は、同様に、ＣＰＵ２は、各第１のジャンプ命令に従って、次のキャッシュラインへ８ワードずつの命令群をキャッシュするとともに、この命令群に含まれる第１のジャンプ命令を順次にキャッシュメモリ３から読み出して実行することを繰り返す。
【００８２】
その後、ｍ＋（ｎ−８）番地の第１のジャンプ命令を実行すると、プログラムモジュールＡの最終の命令である第３のジャンプ命令（図５のｍ＋ｎ番地の命令）へジャンプし、この第３のジャンプ命令を含む下位８ワードの命令群をまとめて外部メモリ４から読み出し、図６に示すようにキャッシュメモリ３のｗ番目のキャッシュラインＬｗへキャッシュする。
【００８３】
これにより、図６に示すように、プログラムモジュールＡの全体がキャッシュメモリ３にキャッシュされる。
【００８４】
引き続き、ＣＰＵ２は、プログラムモジュールＡの最終の命令である第３のジャンプ命令をキャッシュメモリ３から読み出して実行し、プログラムモジュールＡにおける最初の命令（命令１）へジャンプし、該命令１を実行する。ここでは、命令１は既にキャッシュメモリ３にキャッシュされているため、命令１はキャッシュメモリ３から読み出して実行する。
【００８５】
以後、ＣＰＵ２は、命令１、命令２、命令３、命令４、命令５、命令６をこの順にキャッシュメモリ３から読み出して実行した後、最初の第２のジャンプ命令Ｊ２、すなわち、図６に示すようにキャッシュメモリ３の０番目のキャッシュラインＬ０にキャッシュされた第２のジャンプ命令Ｊ２をキャッシュメモリ３から読み出して実行する。
【００８６】
この第２のジャンプ命令Ｊ２は、その次に位置する第１のジャンプ命令Ｊ１の更に次の命令、すなわち、図６に示すように次のキャッシュラインの先頭に位置する命令７へのジャンプを指示するものである。
【００８７】
従って、ＣＰＵ２は、第２のジャンプ命令Ｊ２に従って、命令７をキャッシュメモリ３から読み出して実行し、以後、命令８、命令９、命令１０、命令１１、命令１２をこの順にキャッシュメモリ３から読み出して実行した後、２番目の第２のジャンプ命令Ｊ２、すなわち、図６に示すようにキャッシュメモリ３の１番目のキャッシュラインＬ１にキャッシュされた第２のジャンプ命令Ｊ２をキャッシュメモリ３から読み出して実行する。
【００８８】
以後は、同様に、第２のジャンプ命令Ｊ２に従って各第１のジャンプ命令Ｊ１を飛び越えることを繰り返しながら、プログラムモジュールＡの各命令（命令ｖまで）をキャッシュメモリ３から順番に読み出して実行する。
【００８９】
こうして、プログラムモジュールＡの命令は必ずキャッシュメモリ３から読み出して実行されることとなるため、高速処理となる。
【００９０】
なお、図６では、簡単な例を説明するため、プログラムモジュールＡの命令の数（ｎ）が、１つのキャッシュラインのワード数（例えば、８）で割り切れる例であって、プログラムモジュールＡの命令の読み出し動作における最終回においても合計８つの命令Ｖ−６〜命令Ｊｕｍｐ  ｍ＋１がＣＰＵ２によりまとめて読み出されてキャッシュメモリ３にキャッシュされる例を示している。
【００９１】
しかし、プログラムモジュールＡの命令の数が１つのキャッシュラインのワード数で割り切れるとは限らない。割り切れない場合は、プログラムモジュールＡの命令の読み出し動作における最終回においては、端数の命令（命令Ｊｕｍｐ  ｍ＋１までの１〜７つの何れかの数の命令）がＣＰＵ２によりまとめて読み出されてキャッシュメモリ３にキャッシュされる。
【００９２】
また、上記のように、ＣＰＵ２がプログラムモジュールＡの命令を最初に実行する場合に（プログラムモジュールＡがキャッシュメモリ３にキャッシュされていない状態で該プログラムモジュールＡの命令を実行する場合に）、先ず、プログラムモジュールＡの最初の特定命令である図５に示すアドレスｍ＋８番地の第１のジャンプ命令Ｊ１から実行するのは、ＣＰＵ２が図２に示すプログラムモジュールＣに従って動作するためであるものとする。
【００９３】
すなわちプログラムモジュールＣは、ＣＰＵ２がプログラムモジュールＡの命令を最初に実行する場合に、先ず、プログラムモジュールＡを構成する命令のうち、キャッシュメモリ３の最初の（プログラムモジュールＡがキャッシュされるうちの最初の）キャッシュラインにキャッシュされる特定命令を実行させる処理をＣＰＵ２に行わせるプログラムモジュールである。
【発明の効果】
【００９４】
本発明によれば、コストやパッケージサイズへの影響を出さずに、命令を高速に実行したりデータを高速に読み出したりすることが可能となる。
【発明を実施するための最良の形態】
【００９５】
以下、図面を参照して、本発明に係る実施形態について説明する。
【００９６】
〔第１の実施形態〕
図７は第１の実施形態に係るＣＰＵシステム１００の構成を示すブロック図である。
【００９７】
図７に示すように、第１の実施形態に係るＣＰＵシステム１００は、ＬＳＩ１０１と、外部メモリであるＲＯＭ１０７及びＲＡＭ１０８を備えている。
【００９８】
外部メモリのうち、ＲＯＭ（プログラム格納メモリ）１０７にはＣＰＵシステム１００を動作させるためのプログラム（プログラムモジュール）が格納され、ＲＡＭ１０８はそのプログラムを実行する際に取り扱うデータを格納する。
【００９９】
また、ＬＳＩ１０１は、ＣＰＵ１０２と、ＲＯＭ１０７及びＲＡＭ１０８の制御を行うメモリ制御部１０６と、命令をキャッシュするキャッシュメモリであるＩ−Ｃａｓｈｅ１０４と、データをキャッシュするキャッシュメモリであるＤ−Ｃａｓｈｅ１０５と、キャッシュ制御部１０３と、を備えて構成されている。
【０１００】
ＬＳＩ１０１とＲＯＭ１０７及びＲＡＭ１０８は、図示しないインターフェースを介して相互に接続されている。
【０１０１】
ＣＰＵ１０２はキャッシュ制御部１０３を介してメモリ制御部１０６と接続され、メモリ制御部１０６は上記インターフェースを介してＲＯＭ１０７及びＲＡＭ１０８に対してアクセス可能となっている。
【０１０２】
キャッシュ制御部１０３は、ＣＰＵ１０２による命令やデータの読み出し時にキャッシュメモリへの命令やデータの格納を行う機能と、ＣＰＵ１０２からの命令やデータの読み出しを外部メモリとキャッシュメモリのどちらから行うかを適宜に選択する機能と、を有する。
【０１０３】
すなわち、キャッシュ制御部１０３は、ＣＰＵ１０２が読み出しを行おうとする命令やデータが既にキャッシュメモリに格納されているか否かを判断し、格納されていればキャッシュメモリから読み出す一方で、格納されていなければ外部メモリからの読み出し指示をメモリ制御部１０６に対して行う。
【０１０４】
メモリ制御部１０６はキャッシュ制御部１０３からの指示を受けて、外部メモリから命令やデータの読み出しを行う。
【０１０５】
メモリ制御部１０６経由で読み出された命令は、キャッシュ制御部１０３を経由してＣＰＵ１０２へ転送されると同時にＩ−Ｃａｓｈｅ１０４に格納される。
【０１０６】
同様に、メモリ制御部１０６経由で読み出されたデータは、キャッシュ制御部１０３を経由してＣＰＵ１０２へ転送されると同時にＤ−Ｃａｓｈｅ１０５に格納される。
【０１０７】
外部メモリであるＲＯＭ１０７とＲＡＭ１０８は、Ｉ／Ｏバッファの遅延や、基板上の配線負荷容量の関係で高速に動作できないので、ＣＰＵ１０２からの読み出しは遅くなる。
【０１０８】
これに対して、キャッシュメモリであるＩ−Ｃａｓｈｅ１０４やＤ−Ｃａｓｈｅ１０５はＣＰＵ１０２と同一のＬＳＩ１０１内にあるので、外部メモリのような問題は無く、高速で読み出しが可能である。
【０１０９】
図２乃至図６は課題を解決する手段での説明に用いたが、本実施形態の説明にも用いる。
【０１１０】
このうち、図２はＲＯＭ１０７におけるメモリマップを示す模式図として、図３はＩ−Ｃａｓｈｅ１０４の構成を示す模式図として、それぞれ流用する。
【０１１１】
図２に示すように、ＲＯＭ１０７には、例えば、複数のプログラムモジュール５が格納されている。
【０１１２】
これらプログラムモジュール５のうち、図２に示すプログラムモジュールＡは、高速で処理を行う必要がある（高速処理を必要とする）プログラムモジュールである。
【０１１３】
このプログラムモジュールＡは、例えば、ＲＯＭ１０７におけるｍ＋１番地からｍ＋ｎ番地にかけてマッピングされた、全体でｎワード（ｎ  ｗｏｒｄ）の命令からなるプログラムモジュールである（１ワードは命令の最小単位）。
【０１１４】
このプログラムモジュールＡは、後述するように、必ず、Ｉ−Ｃａｓｈｅ１０４にキャッシュされて高速処理される。
【０１１５】
また、プログラムモジュールＢは、高速処理を必要としないプログラムモジュールである。このプログラムモジュールＢは、例えば、ＲＯＭ１０７におけるｐ＋１番地からｐ＋ｑ番地にかけてマッピングされた、全体でｑワードの命令からなるプログラムモジュールである。
【０１１６】
図３に示すように、Ｉ−Ｃａｓｈｅ１０４は、１ラインにつき８ワードの命令を格納できるキャッシュラインを、Ｌ１〜Ｌｚまでの合計ｚライン備えているものとする。
【０１１７】
図４はプログラムモジュールＢをＩ−Ｃａｓｈｅ１０４にキャッシュする動作を説明するための図として流用する。このうち（ａ）はＲＯＭ１０７におけるプログラムモジュールＢの各命令のアドレスを示し、（ｂ）はＩ−Ｃａｓｈｅ１０４にキャッシュされたプログラムモジュールＢの各命令を示す。
【０１１８】
図４（ａ）に示すように、ＲＯＭ１０７のｐ＋１番地からｐ＋ｑ番地にかけて、プログラムモジュールＢを構成する命令１〜命令ｑまでの合計ｑワードの命令が格納されている。
【０１１９】
ＣＰＵ１０２がＲＯＭ１０７から命令を読み出す場合、メモリ制御部１０６は、当該命令を含む８ワードの命令群（つまり、Ｉ−Ｃａｓｈｅ１０４の１つのキャッシュラインと対応するワード数の命令群）をまとめて読み出す。
【０１２０】
そして、メモリ制御部１０６に読み出された８ワードの命令群は、読み出された順に、キャッシュ制御部１０３に転送され、該キャッシュ制御部１０３により、ＲＯＭ１０７のアドレスと対応するキャッシュラインに順次にキャッシュされる。
【０１２１】
すなわち、ＣＰＵ１０２がプログラムモジュールＢを実行する場合、例えば、図４に示すように、先ず、プログラムモジュールＢの命令１〜命令８がメモリ制御部１０６によりまとめて読み出され、これら命令１〜８がキャッシュ制御部１０３によりＩ−Ｃａｓｈｅ１０４の１番目のキャッシュラインＬ１にキャッシュされる。
【０１２２】
次に、プログラムモジュールＢの命令９〜命令１６が、メモリ制御部１０６によりまとめて読み出され、これら命令９〜１６がキャッシュ制御部１０３によりＩ−Ｃａｓｈｅ１０４の２番目のキャッシュラインＬ２にキャッシュされる。
【０１２３】
その後、同様に、命令が８ワードずつＩ−Ｃａｓｈｅ１０４にキャッシュされ、最終的には、命令ｑ−７〜命令ｑがまとめて読み出されてＩ−Ｃａｓｈｅ１０４にキャッシュされる。
【０１２４】
また、ＣＰＵ１０２がプログラムモジュールＢのプログラムを実行して行く中で、同一のアドレスの命令を再度読み出した場合、Ｉ−Ｃａｓｈｅ１０４内に既に同一命令が格納されているので、ＲＯＭ１０７からの読み出しは行われず、キャッシュ制御部１０３がＩ−Ｃａｓｈｅ１０４から命令を読み出してＣＰＵ１０２へ転送する。
【０１２５】
なお、図４では、簡単な例を説明するため、プログラムモジュールＢの命令の数（ｑ）が、１つのキャッシュラインのワード数（例えば、８）で割り切れる例であって、プログラムモジュールＢの命令の読み出し動作における最終回においても合計８つの命令ｑ−７〜命令ｑがまとめて読み出されてＩ−Ｃａｓｈｅ１０４にキャッシュされる例を示している。
【０１２６】
しかし、プログラムモジュールＢの命令の数が１つのキャッシュラインのワード数で割り切れるとは限らない。割り切れない場合は、プログラムモジュールＢの命令の読み出し動作における最終回においては、端数の命令（命令ｑまでの１〜７つの何れかの数の命令）がまとめて読み出されてＩ−Ｃａｓｈｅ１０４にキャッシュされる。
【０１２７】
次に、図５及び図６を参照して、プログラムモジュールＡをＩ−Ｃａｓｈｅ１０４にキャッシュする動作を説明する。
【０１２８】
図５はＲＯＭ１０７におけるプログラムモジュールＡの各命令のアドレスを示す図であり、図６はＩ−Ｃａｓｈｅ１０４にキャッシュされたプログラムモジュールＡの各命令を示す図である。
【０１２９】
図５に示すように、ＲＯＭ１０７のｍ＋１番地からｍ＋ｎ番地にかけて、プログラムモジュールＡを構成する合計ｎワードの命令が格納されている。
【０１３０】
なお、プログラムモジュールＡが有する命令のうち、Ｉ−Ｃａｓｈｅ１０４に格納されてから実質的に機能する命令（特定命令（第１及び第３のジャンプ命令）と第２のジャンプ命令を除く命令）は、命令１〜命令ｖまでのｖワード（ｖ＜ｎ）分となっており、以下に説明するように、残りの命令は全てジャンプ命令からなる。
【０１３１】
ここで、図６に示すように、プログラムモジュールＡの全ての命令をＩ−Ｃａｓｈｅ１０４にキャッシュすると、Ｉ−Ｃａｓｈｅ１０４における０番目（ｘ番目）からｗ番目（ｙ番目）までのキャッシュラインＬ０〜Ｌｗが埋まるものとする。
【０１３２】
プログラムモジュールＡを構成する命令のうち、Ｉ−Ｃａｓｈｅ１０４の０番目から（ｗ−１）番目までの各キャッシュラインにおける何れか１つの位置にキャッシュされる特定命令は、次のキャッシュラインにおける何れか１つの位置にキャッシュされる特定命令へのジャンプを指示する第１のジャンプ命令である。
【０１３３】
図５及び図６に示す例では、例えば、各キャッシュラインの最後尾に相当するアドレス（図５のｍ＋８番地、ｍ＋１６番地、・・・、ｍ＋（ｎ−８）番地）の命令が、第１のジャンプ命令Ｊ１となっている。
【０１３４】
また、図５に示すように、各第１のジャンプ命令Ｊ１の１つ前の位置にキャッシュされる命令（図５のｍ＋７番地、ｍ＋１５番地、・・・、ｍ＋（ｎ−９）番地の命令）は、当該第１のジャンプ命令Ｊ１の次の位置にキャッシュされる命令へのジャンプを指示する第２のジャンプ命令Ｊ２となっている。
【０１３５】
また、Ｉ−Ｃａｓｈｅ１０４のｗ番目のキャッシュラインにキャッシュされる特定命令（図５のｍ＋ｎ番地の命令）は、プログラムモジュールＡにおける最初の命令（図５及び図６の命令１）へのジャンプを指示する第３のジャンプ命令Ｊ３となっている。
【０１３６】
ＣＰＵ１０２がプログラムモジュールＡの命令を最初に実行する場合には（プログラムモジュールＡがＩ−Ｃａｓｈｅ１０４にキャッシュされていない状態で該プログラムモジュールＡの命令を実行する場合には）、先ず、プログラムモジュールＡの最初の特定命令である図５に示すアドレスｍ＋８番地の第１のジャンプ命令Ｊ１から実行する。
【０１３７】
すなわち、メモリ制御部１０６は、先ず、アドレスｍ＋８番地の第１のジャンプ命令Ｊ１を含む下位８ワードの命令群（１つのキャッシュラインと対応するワード数の命令群）、すなわち、図５のｍ＋１番地〜ｍ＋８番地の命令群をまとめてＲＯＭ１０７から読み出してキャッシュ制御部１０３に転送する。キャッシュ制御部１０３は、この命令群を図６に示すようにＩ−Ｃａｓｈｅ１０４の０番目のキャッシュラインＬ０へキャッシュする。ＣＰＵ１０２は、この命令群のうち、ＲＯＭ１０７においてはアドレスｍ＋８番地に格納されていた第１のジャンプ命令Ｊ１をＩ−Ｃａｓｈｅ１０４から読み出して実行する。
【０１３８】
ＲＯＭ１０７においてアドレスｍ＋８番地に格納されていた第１のジャンプ命令Ｊ１は、アドレスｍ＋１６番地へのジャンプ命令であるため、ＣＰＵ１０２は、続いて、図５に示すアドレスｍ＋１６番地の第１のジャンプ命令Ｊ１を実行する。
【０１３９】
すなわち、メモリ制御部１０６は、図５に示すアドレスｍ＋１６番地の第１のジャンプ命令Ｊ１を含む下位８ワードの命令群をまとめて図５に示すアドレスｍ＋１６番地の第１のジャンプ命令Ｊ１から読み出してキャッシュ制御部１０３に転送し、キャッシュ制御部は、この命令群を図６に示すようにＩ−Ｃａｓｈｅ１０４の１番目のキャッシュラインＬ１へキャッシュし、ＣＰＵ１０２は、この命令群のうち、ＲＯＭ１０７においてはアドレスｍ＋１６番地に格納されていた第１のジャンプ命令Ｊ１をＩ−Ｃａｓｈｅ１０４から読み出して実行する。
【０１４０】
以後は、同様に、各第１のジャンプ命令に従って、次のキャッシュラインへ８ワードずつの命令群がキャッシュされるとともに、この命令群に含まれる第１のジャンプ命令をＣＰＵ１０２が順次にＩ−Ｃａｓｈｅ１０４から読み出して実行することを繰り返す。
【０１４１】
その後、ＣＰＵ１０２がｍ＋（ｎ−８）番地の第１のジャンプ命令を実行すると、プログラムモジュールＡの最終の命令である第３のジャンプ命令（図５のｍ＋ｎ番地の命令）へジャンプし、メモリ制御部１０６がこの第３のジャンプ命令を含む下位８ワードの命令群をまとめてＩ−Ｃａｓｈｅ１０４から読み出してキャッシュ制御部１０３に転送し、該キャッシュ制御部１０３が図６に示すようにＩ−Ｃａｓｈｅ１０４のｗ番目のキャッシュラインＬｗへキャッシュする。
【０１４２】
これにより、図６に示すように、プログラムモジュールＡの全体がＩ−Ｃａｓｈｅ１０４にキャッシュされる。
【０１４３】
引き続き、ＣＰＵ１０２は、プログラムモジュールＡの最終の命令である第３のジャンプ命令をＩ−Ｃａｓｈｅ１０４から読み出して実行し、プログラムモジュールＡにおける最初の命令（命令１）へジャンプし、該命令１を実行する。ここでは、命令１は既にＩ−Ｃａｓｈｅ１０４にキャッシュされているため、命令１はＩ−Ｃａｓｈｅ１０４から読み出して実行する。
【０１４４】
以後、ＣＰＵ１０２は、命令１、命令２、命令３、命令４、命令５、命令６をこの順にＩ−Ｃａｓｈｅ１０４から読み出して実行した後、最初の第２のジャンプ命令Ｊ２、すなわち、図６に示すようにＩ−Ｃａｓｈｅ１０４の０番目のキャッシュラインＬ０にキャッシュされた第２のジャンプ命令Ｊ２をＩ−Ｃａｓｈｅ１０４から読み出して実行する。
【０１４５】
この第２のジャンプ命令Ｊ２は、その次に位置する第１のジャンプ命令Ｊ１の更に次の命令、すなわち、図６に示すように次のキャッシュラインの先頭に位置する命令７へのジャンプを指示するものである。
【０１４６】
従って、ＣＰＵ１０２は、第２のジャンプ命令Ｊ２に従って、命令７をＩ−Ｃａｓｈｅ１０４から読み出して実行し、以後、命令８、命令９、命令１０、命令１１、命令１２をこの順にＩ−Ｃａｓｈｅ１０４から読み出して実行した後、２番目の第２のジャンプ命令Ｊ２、すなわち、図６に示すようにＩ−Ｃａｓｈｅ１０４の１番目のキャッシュラインＬ１にキャッシュされた第２のジャンプ命令Ｊ２をＩ−Ｃａｓｈｅ１０４から読み出して実行する。
【０１４７】
以後は、同様に、第２のジャンプ命令Ｊ２に従って各第１のジャンプ命令Ｊ１を飛び越えることを繰り返しながら、プログラムモジュールＡの各命令（命令ｖまで）をＩ−Ｃａｓｈｅ１０４から順番に読み出して実行する。
【０１４８】
こうして、プログラムモジュールＡの命令は必ずＩ−Ｃａｓｈｅ１０４から読み出して実行されることとなるため、高速処理となる。
【０１４９】
なお、図６では、簡単な例を説明するため、プログラムモジュールＡの命令の数（ｎ）が、１つのキャッシュラインのワード数（例えば、８）で割り切れる例であって、プログラムモジュールＡの命令の読み出し動作における最終回においても合計８つの命令Ｖ−６〜命令Ｊｕｍｐ  ｍ＋１がＣＰＵ２によりまとめて読み出されてＩ−Ｃａｓｈｅ１０４にキャッシュされる例を示している。
【０１５０】
しかし、プログラムモジュールＡの命令の数が１つのキャッシュラインのワード数で割り切れるとは限らない。割り切れない場合は、プログラムモジュールＡの命令の読み出し動作における最終回においては、端数の命令（命令Ｊｕｍｐ  ｍ＋１までの１〜７つの何れかの数の命令）がＣＰＵ２によりまとめて読み出されてＩ−Ｃａｓｈｅ１０４にキャッシュされる。
【０１５１】
また、上記のように、ＣＰＵ１０２がプログラムモジュールＡの命令を最初に実行する場合に（プログラムモジュールＡがＩ−Ｃａｓｈｅ１０４にキャッシュされていない状態で該プログラムモジュールＡの命令を実行する場合に）、先ず、プログラムモジュールＡの最初の特定命令である図５に示すアドレスｍ＋８番地の第１のジャンプ命令Ｊ１から実行するのは、ＣＰＵ１０２が図２に示すプログラムモジュールＣに従って動作するためであるものとする。
【０１５２】
すなわちプログラムモジュールＣは、ＣＰＵ１０２がプログラムモジュールＡの命令を最初に実行する場合に、先ず、プログラムモジュールＡを構成する命令のうち、Ｉ−Ｃａｓｈｅ１０４の最初の（プログラムモジュールＡがキャッシュされるうちの最初の）キャッシュラインにキャッシュされる特定命令を実行させる処理をＣＰＵ１０２に行わせるプログラムモジュールである。
【０１５３】
以上のような第１の実施形態によれば、キャッシュメモリを有する一般的なＣＰＵシステム１００において、高速な内蔵メモリや特殊な回路構成を付加せず特定のプログラムモジュールＡを常にキャッシュメモリから読み出し高速処理させることができる。
【０１５４】
なお、第１の実施形態では、ＲＯＭ１０７に複数のプログラムモジュールが格納されている例を説明したが、ＲＯＭ１０７には高速処理が必要なプログラムモジュールＡのみを格納し、ＲＯＭ１０７とは別のＲＯＭ（図示略）にその他のプログラムモジュールを格納しても良い。
【０１５５】
また、特定命令（第１のジャンプ命令Ｊ１、第３のジャンプ命令Ｊ３）が各キャッシュラインにおいて、互いに同じ位置にキャッシュされるように配置された例を説明したが、各キャッシュラインにおける特定命令の配置は任意である。ただし、第３のジャンプ命令Ｊ３は最後尾である必要がある。
【０１５６】
〔第２の実施形態〕
上記の第１の実施形態では、高速処理が必要なプログラムモジュールＡをキャッシュメモリに格納して高速処理する例を説明したが、第２の実施形態では高速処理が必要なデータ群をキャッシュメモリに格納して高速処理する例を説明する。
【０１５７】
なお、第２の実施形態の場合も、ＣＰＵシステム１００の構成は図７に示すとおりである。
【０１５８】
図８はデータ群ＤをＤ−Ｃａｓｈｅ１０５にキャッシュする動作を説明するための図であり、このうち（ａ）はＲＯＭ１０７又はＲＡＭ１０８におけるデータ群Ｄに含まれる各データ（データ１〜データｎ）のアドレスを示し、（ｂ）はＤ−Ｃａｓｈｅ１０５にキャッシュされたデータ群Ｄの各データを示す。なお、ＲＯＭ１０７又はＲＡＭ１０８がデータ群格納メモリとして機能する。
【０１５９】
本実施形態の場合、図８に示すように、ＣＰＵ１０２が各キャッシュラインに対応する８ワードのデータの内の１ワードのみを順次に読み出すことにより、Ｄ−Ｃａｓｈｅ１０５に図８のように格納される。
【０１６０】
次回のデータ読み出しはＤ−Ｃａｓｈｅ１０５から読み出すことにより高速処理が可能となる。
【０１６１】
すなわち、本実施形態では、データ群ＤをＤ−Ｃａｓｈｅ１０５にキャッシュする際には、Ｄ−Ｃａｓｈｅ１０５の１つのキャッシュラインと対応するワード数のデータ毎に、まとめてキャッシュする。
【０１６２】
なお、データ群Ｄは、ＲＯＭ１０７又はＲＡＭ１０８に格納された複数のデータ群のうちの特定のデータ群（高速処理が必要なデータ群）であっても良いし、ＲＯＭ１０７又はＲＡＭ１０８にはデータ群Ｄのみが格納されていても良い。
【０１６３】
以上のような第２の実施形態によれば、高速読み出しが必要なデータ群Ｄをキャッシュメモリに高速で格納でき、上記の第１の実施形態と似たような効果が得られる。
【０１６４】
なお、第２の実施形態においては、ＣＰＵシステム１００は、第１の実施形態の機能を兼ね備えることも好ましい。
【０１６５】
なお、上記の各実施形態では、マイクロプロセッサがＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である例を説明したが、マイクロプロセッサは、例えば、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などのＣＰＵ以外のものであっても良い。
【０１６６】
なお、上記のようなＣＰＵシステム１００は、携帯電話機或いはその他の小型の電子機器に対して好適に適用することができる。
【図面の簡単な説明】
【０１６７】
【図１】本発明に係るＣＰＵシステム（マイクロプロセッサシステム）の模式的な構成を示すブロック図である。
【図２】外部メモリにおけるメモリマップを示す模式図である。
【図３】キャッシュメモリの構成を示す模式図である。
【図４】高速処理が必要でないプログラムモジュールをキャッシュメモリにキャッシュする動作を説明するための図である。
【図５】高速処理が必要なプログラムモジュールの各命令のアドレスを示す図である。
【図６】キャッシュメモリにキャッシュされた、高速処理が必要なプログラムモジュールの各命令を示す図である。
【図７】第１の実施形態に係るＣＰＵシステム（マイクロプロセッサシステム）の構成を示すブロック図である。
【図８】第２の実施形態の動作を説明するための図である。
【符号の説明】
【０１６８】
１      ＬＳＩ
２      ＣＰＵ（マイクロプロセッサ）
３      キャッシュメモリ
４      外部メモリ（プログラム格納メモリ、プログラム・データ群格納メモリ）
５      プログラムモジュール
１０    ＣＰＵシステム（マイクロプロセッサシステム）
Ｊ１    第１のジャンプ命令（特定命令）
Ｊ２    第２のジャンプ命令
Ｊ３    第３のジャンプ命令（特定命令）
１００  ＣＰＵシステム（マイクロプロセッサシステム）
１０１  ＬＳＩ
１０２  ＣＰＵ
１０３  キャッシュ制御部
１０４  Ｉ−Ｃａｓｈｅ（キャッシュメモリ、命令キャッシュ）
１０５  Ｄ−Ｃａｓｈｅ（キャッシュメモリ、データキャッシュ）
１０６  メモリ制御部
１０７  ＲＯＭ（プログラム格納メモリ、プログラム・データ群格納メモリ、データ群格納メモリ）
１０８  ＲＡＭ（データ群格納メモリ）
【図１】
2008197775.tif 000003
【図２】
2008197775.tif 000004
【図３】
2008197775.tif 000005
【図４】
2008197775.tif 000006
【図５】
2008197775.tif 000007
【図６】
2008197775.tif 000008
【図７】
2008197775.tif 000009
【図８】
2008197775.tif 000010