(57)【要約】【課題】データ処理におけるメモリキャッシングを効率的に行うこと。【解決手段】  データプロセッサは、主メモリと、命令キャッシュおよびデータキャッシュと、を備え、必要とされる命令を前記命令キャッシュから検索し、前記必要とされる命令が前記命令キャッシュに存在しない場合、前記データキャッシュから検索し、前記必要とされる命令がデータキャッシュに存在しない場合、前記必要とされる命令を前記主メモリから前記命令キャッシュにフェッチするように機能する命令フェッチロジックと、データ値を前記データキャッシュのデータアドレスの位置に書き込み、そして前記命令キャッシュにおいても前記アドレスが記述されている場合、そのデータ値を前記命令キャッシュに書き込むように機能するデータライトロジックと、前記データキャッシュから前記主メモリにデータを転送するように機能するキャッシュ制御ロジックと、を実行する。【選択図】図２
2006318471.tif 000002
【特許請求の範囲】
【請求項１】
データプロセッサであって、
主メモリ、命令キャッシュ、および、データキャッシュ、を有し、
必要とされる命令を前記命令キャッシュにおいて検索し、前記必要とされる命令が前記命令キャッシュに存在しない場合、前記データキャッシュにおいて検索し、前記必要とされる命令が前記データキャッシュに存在しない場合、前記必要とされる命令を前記主メモリから前記命令キャッシュにフェッチするように機能する命令フェッチロジックと、
データ値を前記データキャッシュのデータアドレスの位置に書き込み、そして前記命令キャッシュにおいても前記アドレスが記述されている場合、そのデータ値を前記命令キャッシュに書き込むように機能するデータライトロジックと、
前記データキャッシュから前記主メモリにデータを転送するように機能するキャッシュ制御ロジックと、
を実行するデータプロセッサ。
【請求項２】
請求項１記載のデータプロセッサであって、
前記命令キャッシュは直接マッピング方式であり、前記データキャッシュが連想型であること、
を特徴とするデータプロセッサ。
【請求項３】
請求項１又は２記載のデータプロセッサであって、
前記命令キャッシュおよび前記データキャッシュが複数キャッシュページを記憶するように構成されていること、
を特徴とするデータプロセッサ。
【請求項４】
請求項３記載のデータプロセッサであって、
前記命令キャッシュ又は前記データキャッシュへの転送、あるいは、前記命令キャッシュ又は前記データキャッシュからの転送がページ単位で実行されること、
を特徴とするデータプロセッサ。
【請求項５】
請求項３又は４記載のデータプロセッサであって、
前記命令フェッチロジックは、必要なページが前記命令キャッシュ又は前記データキャッシュに保持されているか否かを調べることにより前記命令キャッシュおよび前記データキャッシュを検索するように機能すること、
を特徴とするデータプロセッサ。
【請求項６】
請求項３乃至５のいずれか１項に記載のデータプロセッサであって、
前記キャッシュ制御ロジックは、新たに必要とされるページを前記データキャッシュに書き込む際に、アクセス頻度が最も低いデータページが修正されたデータを含んでいる場合には、前記アクセス頻度が最も低いページを前記データキャッシュから前記主メモリに転送すること、
を特徴とするデータプロセッサ。
【請求項７】
請求項３乃至６のいずれか１項に記載のデータプロセッサであって、
前記命令フェッチロジックは、必要とされる命令が前記命令キャッシュあるいは前記データキャッシュに存在しない場合、前記必要とされる命令を前記主メモリから前記命令キャッシュにフェッチするように機能すること、
を特徴とするデータプロセッサ。
【請求項８】
請求項３乃至７のいずれか１項に記載のデータプロセッサであって、
前記命令キャッシュ及び前記データキャッシュのそれぞれが、各ページ４キロバイトの８ページに構成された３２キロバイトを保有すること、
を特徴とするデータプロセッサ。
【請求項９】
請求項１乃至８のいずれか１項に記載のデータプロセッサであって、
命令を実行するための命令実行ロジックを有すること、
を特徴とするデータプロセッサ。
【請求項１０】
請求項９記載のデータプロセッサであって、
前記命令実行ロジックは、命令の実行をエミュレートするソフトウェアを実行するデータ処理構成を有すること、
を特徴とするデータプロセッサ。
【請求項１１】
請求項１乃至１０のいずれか１項に記載のデータプロセッサであって、
該データプロセッサは、前記命令キャッシュにおける項目を無効にする機能を提供しないこと、
を特徴とするデータプロセッサ。
【請求項１２】
主メモリ、命令キャッシュ、および、データキャッシュ、を有するシステムにおけるデータ処理方法であって、
必要とされる命令を前記命令キャッシュにおいて検索するステップと、
前記必要とされる命令が前記命令キャッシュに存在しない場合に前記データキャッシュを検索するステップと、
前記必要とされる命令が前記データキャッシュにも存在しない場合、前記必要とされる命令を前記主メモリから前記命令キャッシュにフェッチするステップと、
データ値を書き込むべき場合、そのデータ値を前記データキャッシュのデータアドレスの位置に書き込み、そのアドレスが前記命令キャッシュにおいても記述されている場合、前記データ値を前記命令キャッシュにも書き込むステップと、
前記データキャッシュから前記主メモリへデータを転送するステップと、
を有するデータ処理方法。
【請求項１３】
請求項１２記載の方法を実行するためのプログラムコードを有するコンピュータソフトウェア。
【請求項１４】
請求項１３記載のプログラムコードを提供する媒体。
【請求項１５】
請求項１４記載の媒体であって、伝送媒体であることを特徴とする媒体。
【請求項１６】
請求項１４記載の媒体であって、記憶媒体であることを特徴とする媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理におけるメモリキャッシングに関する。
【背景技術】
【０００２】
ここでは、特定のマイクロプロセッサのエミュレーションに関して例示的な問題を説明するが、本発明はより広範に適用することができる。
【０００３】
マイクロプロセッサコアは、テレビセットトップボックスやソニー（登録商標）のプレイステーション２（ＰＳ２）（商標）ファミリーコンピュータエンターテインメントシステム等の様々な適用分野で用いられている。ＰＳ２の入出力プロセッサ（ＩＯＰ）の場合、コアには２メガバイトの主メモリと非常に小さなキャッシュが設けられている。そこでは、いわゆる「ライトスルー」方式のキャッシュが採用されており、プロセッサによりキャッシュされたメモリ位置に書き戻された情報は、元の主メモリにも書き込まれる。これは、新しい情報は、すぐにまた読み出す必要がある場合にはキャッシュに書き込まれるが、主メモリへのアクセスがその都度必要であるため、書き込みオペレーションそのものはキャッシュされないことを意味している。この構成の１つの利点は、自己書き換えプログラムコードをより容易に実行できることである。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＩＯＰメモリとして２ＭＢを使用するには小さい内部メモリを有するエミュレーションプロセッサによってＩＯＰをエミュレートすることが提案されてきた。外部メモリにアクセスすることは可能ではあるが、それはＤＭＡコントローラを介してのみ行なわれる。従って、ＤＭＡコントローラを用いるエミュレーションシステムの場合、外部メモリへのアクセスが遅いため、エミュレーションを実用的な速度で行わせるためには、キャッシング方法を考える必要がある。必要とされる外部メモリへのアクセスの数を削減するには、キャッシング方法はデータの読み込みだけではなくデータの書き込みのキャッシングも含まなければならない。しかし、これは自己書き換えコードを容易にエミュレートすることができないことを意味する。
【課題を解決するための手段】
【０００５】
そこで、本発明は、データプロセッサであって、
主メモリ、
命令キャッシュ、および、
データキャッシュ、を有し、
必要とされる命令を前記命令キャッシュから検索し、前記必要とされる命令が前記命令キャッシュに存在しない場合、前記必要とされる命令を前記データキャッシュから検索し、前記必要とされる命令が前記データキャッシュに存在しない場合、前記必要とされる命令を前記主メモリから前記命令キャッシュにフェッチするように機能する命令フェッチロジックと、
データ値を前記データキャッシュのデータアドレスの箇所に書き込み、そして前記命令キャッシュにおいても前記アドレスが記述されている場合、そのデータ値を前記命令キャッシュに書き込むように機能するデータライトロジックと、
前記データキャッシュから前記主メモリにデータを転送するように機能するキャッシュ制御ロジックと、
を実行するデータプロセッサを提供する。
【０００６】
本発明は、主メモリへアクセスする必要性を減少しつつ、データおよび命令にアクセスする効率的な方法を提供する。
【０００７】
二番目の側面から見た場合、本発明は、主メモリ、命令キャッシュ、および、データキャッシュ、を有するシステムにおけるデータ処理方法であって、
必要とされる命令を前記命令キャッシュから検索するステップと、
前記必要とされる命令が前記命令キャッシュに存在しない場合に、前記必要とされる命令を前記データキャッシュから検索するステップと、
前記必要とされる命令が前記データキャッシュにも存在しない場合に、前記必要とされる命令を前記主メモリから前記命令キャッシュにフェッチするステップと、
データ値を書き込むべき場合、そのデータ値を前記データキャッシュのデータアドレスの箇所に書き込み、そのアドレスが前記命令キャッシュにおいても記述されている場合、前記データ値を前記命令キャッシュにも書き込むステップと、
前記データキャッシュから前記主メモリへデータを転送するステップと、
を有するデータ処理方法を提供する。
【０００８】
本発明の更に別の特徴としては、上記方法を実行するプログラムコードを含むコンピュータソフトウェアと、そのようなプログラムコードを提供する媒体（例えば、伝送媒体あるいは記憶媒体）が含まれる。
【発明を実施するための最良の形態】
【０００９】
以下、添付図面を参照して本発明の実施形態を説明するが、これらの実施形態は一例にすぎない。
【００１０】
図１は、エミュレートされるデータ処理システムの概略図である。本システムは、主メモリ２０からデータおよび命令を読み出し、主メモリ２０にデータおよび修正された命令を書き込むプロセッサ１０を有する。
【００１１】
以下の説明は、エミュレートされるシステムにおける主メモリ２０に記憶されるイメージを保持するには小さすぎるローカルメモリを備えるプロセッサを用いて、図１のシステムで行うオペレーションをエミュレートする技術に関するものである。このような制約があるため、キャッシュを用いた解決策を採用する必要がある。
【００１２】
図２は、エミュレーションのための構成を概略的に示したものである。エミュレーション技術は一般的によく知られており、説明を明瞭にするために、本実施形態に直接関係のない特徴については省略する。エミュレーションは、エミュレーションプロセッサが、そのエミュレーションプロセッサ用の言語で記述されたエミュレーションソフトウェアを実行することにより行われ、従って、エミュレートされるシステムにおける命令の処理をエミュレートするために、そのようなエミュレーションプロセッサ用の言語で記述された命令の一群が実行される。以下の説明において、「命令」という語は、エミュレートされるシステムにおける命令を指しており、エミュレーションソフトウェアにおいてエミュレーションプロセッサ用の言語で記述された命令を指しているものではない。
【００１３】
図２に示されているように、エミュレーションソフトウェア１２０を実行するプロセッサ１１０が、命令キャッシュ（Ｉ）１４０およびデータキャッシュ（Ｄ）１５０を介して主メモリ１３０にアクセスする。ＩキャッシュおよびＤキャッシュを用いる理由は、プロセッサ１１０のローカルメモリが小さすぎてエミュレートされるシステムにおける主メモリ２０のイメージを保持できないからであり、また、プロセッサ１１０が対応する主メモリ１３０にアクセスするには費用のかかる（すなわち、時間のかかる）ＤＭＡアクセスによる必要があるからである。
【００１４】
Ｉキャッシュ１４０は、アクセス速度を考慮して直接マッピング方式であり、各々が４キロバイトのメモリページを８ページ保有している（即ち、各ページが複数のキャッシュラインを有している）。本実施形態では少数の大きなメモリページを使用しているが、それはキャッシュヒットのチェックをより効率的にするためである。ページサイズが大きいことにより、メモリに対するアクセスの遅さを埋め合わせることができる。メモリページが主メモリ１３０からＩキャッシュ１４０に読み込まれることで、プロセッサはＩキャッシュ１４０から命令を読み出すことができる。しかし、Ｉキャッシュ１４０に格納された値が主メモリ１３０に書き戻されることは決してない。
【００１５】
キャッシュへの転送およびキャッシュからの転送は、ページ単位で行なわれる。同様に、必要なデータ項目が保持されているかどうかを検出するためのキャッシュの検索は、その項目を含むページがそのキャッシュに保持されているかどうかを検出することによって行なわれる。
【００１６】
Ｄキャッシュ１５０は、いわゆる「スラッシング」（即ち、キャッシュされたページのめまぐるしく変更すること）を減らすために完全に連想型であり、やはり各ページ４キロバイトのページを８ページ保有している。主メモリ１３０から新たなページをＤキャッシュに読み込む場合、Ｄキャッシュに格納されているページの中でアクセス頻度が最も低いページ（そのページが主メモリから読み出されて以来変更されている場合）が、主メモリに書き戻される。従って、プロセッサがＤキャッシュのいずれかの格納データを修正した場合、そのページが主メモリ１３０に書き戻されるまで、その修正はＤキャッシュ１５０に保持されている。
【００１７】
以下、図３ないし図５に示されたフローチャートを参照しながら、ＤキャッシュとＩキャッシュの相互関係について説明する。
【００１８】
図３は、命令を読み取る処理に関する概略的なフローチャートである。
【００１９】
ステップ２００において、プロセッサ１１０は必要とされる命令へのアクセスをＩキャッシュ１４０において試みる。必要とされる命令がＩキャッシュ１４０に存在する場合、ステップ２１０の制御に進み、その命令がＩキャッシュ１４０から読み取られ、通常の方法で処理するためにプロセッサ１１０へ引き渡される。そしてプロセスは終了する。
【００２０】
しかし、必要とする命令がＩキャッシュ１４０に存在しない場合、必要とされる命令がＤキャッシュ１５０に格納された情報に含まれているかどうかが調べられる。このテストがステップ２２０として示されている。必要とされる命令が確かにＤキャッシュに存在する場合、ステップ２３０において、そのページ全体がＤキャッシュからＩキャッシュにコピーされる。これはＩキャッシュにおける１ページの上書きで済む。なぜなら、Ｉキャッシュからのデータは主メモリ１３０に書き戻されることはないからである。ステップ２３０から再びステップ２１０の制御へと進み、必要とされる命令がＩキャッシュから読み取られ、プロセスは終了する。
【００２１】
しかし、必要とする命令がＩキャッシュ（ステップ２００）にもＤキャッシュ（ステップ２２０）にも存在しない場合、ステップ２４０において、必要とされる命令を含むページが主メモリからＩキャッシュ１４０に読み込まれ、Ｉキャッシュの１ページを上書きする。再びステップ２１０の制御に進み、プロセスは終了する。
【００２２】
図４は、データ値の書き込み処理に関する概略的なフローチャートである。
【００２３】
ステップ３１０において、プロセッサ１１０はデータ値をＤキャッシュ１５０に書き込む。上述したように、これは最終的には主メモリ１３０を更新することになるが、Ｄキャッシュにおいてそのページが上書きされるまでは、主メモリ１３０の更新は行われない。
【００２４】
ステップ３２０において、新たに書き込まれたデータ値を有するページがＩキャッシュにも保持されているかどうかが検査される。その場合、ステップ３３０において、その新しい値はＩキャッシュの適切な位置にも書き込まれ、プロセスは終了する。しかし、問題のページがＩキャッシュに保持されていない場合、プロセスは単にそこで終了する。
【００２５】
図５は、データ値の読み取り処理に関する概略的なフローチャートである。ステップ４００で、プロセッサ１１０はＤキャッシュ１５０においてデータ値へのアクセスを試みる。必要なアドレスがＤキャッシュにキャッシュされている場合、ステップ４１０でその必要な値をＤキャッシュから読み出し、プロセスは終了する。しかし、必要なページがＤキャッシュに無い場合、ステップ４２０において使用頻度が最も低いページを（必要であれば、すなわち修正されていれば）Ｄキャッシュから主メモリ１３０に書き戻し、次いでステップ４３０において、必要なメモリアドレスを含むページを主メモリ１３０からＤキャッシュへと読み込む。そして、再びステップ４１０の制御へと進み、プロセスを終了する。
【００２６】
上に記載した方法を用いることにより、Ｉキャッシュ１４０に格納されている情報が主メモリ１３０に直接書き戻されることは決してなく、また、本実施形態においては、Ｉキャッシュの無効命令あるいは機能が提供されることもない。もし、プロセッサ１１０がいわゆる自己書き換えコードを実行することにより主メモリ１３０に格納されている命令が、その命令を実行する手段そのものにより生成された命令により上書きされたとしても、実行すべきコードに矛盾が生じる可能性は全くない。命令が上書きされるべき場合、新しい値がＤキャッシュに書き込まれ、そのページがＩキャッシュにも格納されているなら、それはＩキャッシュに書き込まれる。従って、いかなる変更に対してもＩキャッシュは最新の状態に保たれる。命令にアクセスする際に、その命令がＩキャッシュに無い場合、主メモリの前にＤキャッシュが検索される。従って、主メモリ１３０に書き戻されていない変更はＤキャッシュにまだ存在しており、修正された命令はＤキャッシュからＩキャッシュに転送される。
【図面の簡単な説明】
【００２７】
【図１】データ処理システムの概略図である。
【図２】データキャッシュおよび命令キャッシュを用いるデータ処理システムの概略図である。
【図３】命令の読み取りオペレーションに関する概略的なフローチャートである。
【図４】データ値の書き込みオペレーションに関する概略的なフローチャートである。
【図５】データ値の読み取りオペレーションに関する概略的なフローチャートである。
【符号の説明】
【００２８】
１０：プロセッサ、２０：主メモリ、１１０：プロセッサ、１２０：エミュレーション用ソフトウェア、１３０：主メモリ、１５０：Ｄキャッシュ、１４０：Ｉキャッシュ
【図１】
2006318471.tif 000003
【図２】
2006318471.tif 000004
【図３】
2006318471.tif 000005
【図４】
2006318471.tif 000006
【図５】
2006318471.tif 000007
【外国語明細書】
MEMORY CACHING IN DATA PROCESSING
This invention relates to memory caching in data processing.
An example problem will now be described with respect to emulation of a particular microprocessor, but it will be appreciated that the invention has much wider applicability.
Microprocessor cores are used in various applications such as television set top boxes and the SonyRTM Playstation 2TM (PS2) family computer entertainment system.   In the PS2's input/output processor (IOP), the core is provided with 2 Megabytes of main memory and a very small cache.  It makes use of so-called cache “write through”, where any information written back by the processor to a cached memory location is also written to the underlying main memory.   This means that the new information is written to the cache in case it is needed to be read again soon, but the write operation itself is not cached because a main memory access is still needed each time.  One advantage of this arrangement is that it allows self-modifying program code to be implemented more easily.
It has been proposed that the IOP be emulated by an emulation processor having an internal memory too small to provide the 2 MB of the IOP's memory.  An external memory can be accessed, but this is only via a DMA controller.  To allow the emulation to operate at a useful rate, a caching strategy is therefore required, because accesses to an external memory in the emulating system using the DMA controller are slow.  To cut down on the number of external memory accesses which are needed, the caching strategy should include the caching of data writes as well as data reads.  However, this would mean that self-modifying code cannot easily be emulated.
This invention provides a data processor comprising:
a main memory;
an instruction cache and a data cache;
instruction fetch logic operable to search the instruction cache for a required instruction; and if the required instruction is not present in the instruction cache, to search the data cache; and if the required instruction is not present in the data cache, to fetch the required instruction from the main memory to the instruction cache;
data write logic operable to write a data value into the data cache at a data address and, if that address is also represented in the instruction cache, to write that data value into the instruction cache; and
cache control logic operable to transfer data from the data cache to the main memory.
The invention provides an efficient way of accessing data and instructions while reducing the need to access a main memory.
Viewed from a second aspect this invention provides a data processing method in a system having a main memory, an instruction cache and a data cache;
the method comprising the steps of:
searching the instruction cache for a required instruction; 
if the required instruction is not present in the instruction cache, searching the data cache;
if the required instruction is not present in the data cache, fetching the required instruction from the main memory to the instruction cache;
when a data value is to be written, writing that data value into the data cache at a data address and, if that address is also represented in the instruction cache, writing that data value into the instruction cache; and
transferring data from the data cache to the main memory.
Further aspects of the invention include computer software comprising program code to carry out this method; and a medium (e.g. a transmission medium or a storage medium) by which such program code is provided.
Embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawingsin which:
Figure 1 schematically illustrates a data processing system;
Figure 2 schematically illustrates a data processing system using data and instruction caches;
Figure 3 is a schematic flow chart relating to an operation to read an instruction;
Figure 4 is a schematic flow chart relating to an operation to write a data value; and
Figure 5 is a schematic flow chart relating to an operation to read a data value.
Figure 1 schematically illustrates a data processing system to be emulated.  The system comprises a processor 10 which reads data and instructions from, and writes data and modified instructions to, a main memory 20.  
The following description relates to a technique for emulating the operation of the system of Figure 1 using a processor whose local memory is too small to hold an image of the main memory 20 of the system to be emulated.  Because of this restriction, a cache strategy has to be employed.  
Figure 2 schematically illustrates the emulation arrangement.  Emulation techniques are generally well known, and features which are not directly relevant to the present embodiment are omitted for clarity.  Emulation involves an emulation processor running emulation software written in a language native to the emulation processor, so that a group of such native instructions are run in order to emulate the handling of an instruction in the emulated system.  In the description which follows, the term “instruction” will refer to an instruction in the emulated system, and not to a native instruction of the emulation software.
Referring to Figure 2, a processor 110 running emulation software 120 accesses a main memory 130 via an instruction cache (I) 140 and a data cache (D) 150.  The reason that the I cache and the D cache are used is that the memory local to the processor 110 is too small to hold an image of the main memory 20 of the emulated system, and the main memory 130 associated with the processor 110 has to be accessed via an expensive (i.e. time consuming) DMA accesses.  
The I cache 140 is direct mapped for speed of access and holds 8 memory pages of 4 kilobytes each (i.e. each page holds plural cache lines).  A small number of large memory pages are used in this embodiment to make the process of checking for a cache hit more efficient.  Large memory pages amortize slow memory accesses.  Memory pages may be read from the main memory 130 into the I cache 140, and the processor may read instructions from the I cache 140.  However, values stored in the I cache 140 are never written back to the main memory 130. 
Transfers to and from caches are made on a page by page basis.  Similarly, the searching of a cache, to detect whether a required data item is held, is carried out by detecting whether the page containing that item is held in the cache.
The D cache 150 is fully associative to reduce so-called “thrashing” - i.e. a rapid changing of the cached pages - and again holds 8 pages of 4 kilobytes each.  When a new page is to be read into the D cache from the main memory 130, a least-recently-accessed page stored in the D cache is written back to the main memory (if it has been changed since it was read from the main memory).  So, if the processor modifies any stored data in the D cache, the modification is held in the D cache 150 until that page is written back to the main memory 130.  
The interaction of the D cache and the I cache will now be described with reference to flowcharts shown in figures 3 to 5.  
Figure 3 is a schematic flowchart relating to an operation to read an instruction.  
At a step 200, the processor 110 attempts to access the required instruction from the I cache 140.  If the required instruction is present in the I cache 140, control passes to a step 210 where the instruction is read from the I cache and passed to the processor 110 for handling in the usual way.  The process then ends.  
However, if the required instruction was not in the I cache 140, a check is then made as to whether the required instruction is part of the information stored in the D cache 150.  This test is represented by a step 220.  If the required instruction is indeed in the D cache, then the whole page is copied from the D cache to the I cache at a step 230.  Note that this can simply overwrite a page in the I cache, because data from the I cache is never written back to the main memory 130.  From the step 230 control again passes to the step 210 at which the required instruction is read from the I cache and the processor ends.  
If, however, the required instruction is neither in the I cache (step 200) nor the D cache (step 220) then at a step 240 the page containing the required instruction is read from the main memory to the I cache 140, overwriting a page in the I cache.  Control again passes to the step 210 and the process ends.  
Figure 4 is a schematic flowchart relating to an operation to write a data value.  
At a step 310, the processor 110 writes a data value to the D cache 150.  As described above, this will eventually be used to update the main memory 130, though this may not happen until the relevant page has to be overwritten in the D cache.
At a step 320, a detection is made as to whether the page containing the newly written data value is also held in the I cache.  If it is then at a step 330 the new data value is also written to the relevant position in the I cache and the process ends.  If, however, the relevant page was not held in the I cache, the process would simply end there.  
Figure 5 is a schematic flowchart relating to an operation to read a data value.  At a step 400, the processor 110 attempts to access the data value from the D cache 150.  If the required address is cached in the D cache 150, then the required value is read from the D cache at a step 410 and the process ends.  If, however, the necessary page is not in the D cache, then at a step 420 the least-recently used page is written back (if required, i.e. if it has been modified) from the D cache to the main memory 130, and at a step 430 the page containing the required memory address is read from the main memory 130 to the D cache 150.  Control then passes again to the step 410 and the process ends.  
Using the strategy above, even though information stored in the I cache 140 is never directly written back to the main memory 130 and no I cache invalidate instruction or function is provided in the present embodiment, if the processor 110 runs so-called self-modifying code so that instructions stored in the main memory 130 are to be overwritten by instructions generated by means of running the instructions themselves, there is no chance of an inconsistency in the code to be run.  Where an instruction is to be overwritten, the new value is written to the D cache and, if that page is also stored in the I cache, it is written to the I cache.  So, the I cache is kept up to date with any changes.  At the time of an instruction is to be accessed, if it is not in the I cache, the D cache is searched before the main memory.  So, any changes not yet written back to main memory 130 will still be in the D cache and the modified instructions will be transferred from the D cache to the I cache.  
1.            A data processor comprising:
a main memory;
an instruction cache and a data cache;
instruction fetch logic operable to search the instruction cache for a required instruction; and if the required instruction is not present in the instruction cache, to search the data cache; and if the required instruction is not present in the data cache, to fetch the required instruction from the main memory to the instruction cache;
data write logic operable to write a data value into the data cache at a data address and, if that address is also represented in the instruction cache, to write that data value into the instruction cache; and
cache control logic operable to transfer data from the data cache to the main memory.
2.            A data processor according to claim 1, in which the instruction cache is direct mapped and the data cache is fully associative.
3.            A data processor according to claim 1 or claim 2, in which the caches are arranged as multiple cache pages.
4.            A data processor according to claim 3, in which transfers to or from a cache are carried out on a page-by-page basis.
5.            A data processor according to claim 3 or claim 4, in which the instruction fetch logic is operable to search the instruction cache and the data cache by detecting whether a required page is held in the respective cache.
6.            A data processor according to any one of claims 3 to 5, in which the cache control logic is arranged to transfer a least-recently-accessed page of data from the data cache to the main memory when a newly required page is to be written into the data cache and that least-recently accessed page contains data which has been modified.
7.            A data processor according to any one of claims 3 to 6, in which, when a required instruction is not present in the instruction cache or the data cache, the instruction fetch logic is operable to fetch a page containing the required instruction from the main memory to the instruction cache.
8.            A data processor according to any one of claims 3 to 7, in which each of the caches holds 32 kilobytes arranged as 8 pages of 4 kilobytes each.
9.            A data processor according to any one of the preceding claims, comprising instruction execution logic for executing instructions.
10.            A data processor according to claim 9, in which the instruction execution logic comprises a data processing arrangement running software to emulate the execution of the instructions.
11.            A data processor according to any one of the preceding claims, the data processor not providing a function of invalidating entries in the instruction cache.
12.            A data processing method in a system having a main memory, an instruction cache and a data cache;
the method comprising the steps of:
searching the instruction cache for a required instruction; 
if the required instruction is not present in the instruction cache, searching the data cache;
if the required instruction is not present in the data cache, fetching the required instruction from the main memory to the instruction cache;
when a data value is to be written, writing that data value into the data cache at a data address and, if that address is also represented in the instruction cache, writing that data value into the instruction cache; and
transferring data from the data cache to the main memory.
13.            Computer software comprising program code to carry out a method according to claim 12.
14.            A medium by which program code according to claim 13 is provided.
15.            A medium according to claim 14, the medium being a transmission medium.
16.            A medium according to claim 14, the medium being a storage medium.
A data processor comprises a main memory; an instruction cache and a data cache; instruction fetch logic operable to search the instruction cache for a required instruction; and if the required instruction is not present in the instruction cache, to search the data cache; and if the required instruction is not present in the data cache, to fetch the required instruction from the main memory to the instruction cache; data write logic operable to write a data value into the data cache at a data address and, if that address is also represented in the instruction cache, to write that data value into the instruction cache; and cache control logic operable to transfer data from the data cache to the main memory.
(Figure 2 to accompany abstract)
【Ｆｉｇ.１】
2006318471.tif 000008
【Ｆｉｇ.２】
2006318471.tif 000009
【Ｆｉｇ.３】
2006318471.tif 000010
【Ｆｉｇ.４】
2006318471.tif 000011
【Ｆｉｇ.５】
2006318471.tif 000012