(57)【要約】【課題】  分岐命令が含まれていると、命令の先読みによる利点が生かされず、却って処理効率を低下させてしまうという問題があった。【解決手段】  ＲＡＭ３０のアドレスへのプログラムコードの書き込み時に、プログラムコードが分岐命令であるかどうかを示す識別データを当該アドレスに対応付けて記憶しておき、プロセッサ１００によるＲＡＭ３０からのプログラムコードの読み出し時に、その読み出しアドレスに分岐命令が記憶されているかどうかを判定し、記憶されていないと判定されると、そのアドレスに連続するアドレスのプログラムコードをＲＡＭ３０から読み出してデータ保持回路１０１に記憶する。【選択図】  図１
2006146813.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによるメモリへのアクセスを制御するメモリ制御回路であって、
メモリへの書き込み時に、書き込まれるデータが分岐命令であるかどうかを示す識別データを書き込みアドレスに対応付けて記憶する分岐命令記憶手段と、
前記プロセッサによる前記メモリからの読み出し時に、前記分岐命令記憶手段に記憶された識別データを参照して、読み出しアドレスに前記分岐命令が記憶されているかどうかを判定する判定手段と、
前記判定手段により前記アドレスに前記分岐命令が記憶されていないと判定されると、前記アドレスに連続するアドレスのデータを前記メモリから読み出して記憶する先読み記憶手段と、
前記先読み記憶手段に記憶されている前記データを前記プロセッサに転送するデータ転送手段と、
を有することを特徴とするメモリ制御回路。
【請求項２】
前記判定手段により前記アドレスに前記分岐命令が記憶されていると判定されると、前記メモリの当該アドレスに記憶されているデータを前記プロセッサに転送する手段を更に有することを特徴とする請求項１に記載のメモリ制御回路。
【請求項３】
前記分岐命令記憶手段は、ＲＯＭに記憶されているプログラムコードを前記メモリにコピーする際に記憶することを特徴とする請求項１又は２に記載のメモリ制御回路。
【請求項４】
プロセッサにより、メモリに記憶されているプログラムコードを読み出して実行するコンピュータ機器であって、
前記メモリへのプログラムコードの書き込み時に、前記プログラムコードが分岐命令であるかどうかを示す識別データを書き込みアドレスに対応付けて記憶する分岐命令記憶手段と、
前記プロセッサによる前記メモリに記憶されているプログラムコードの実行時、前記分岐命令記憶手段に記憶された識別データを参照して、当該プログラムコードの読み出しアドレスに前記分岐命令が記憶されているかどうかを判定する判定手段と、
前記判定手段により前記アドレスに前記分岐命令が記憶されていないと判定されると、前記アドレスに連続するアドレスのプログラムコードを前記メモリから読み出して記憶する先読み記憶手段と、
前記先読み記憶手段に記憶されている前記プログラムコードを前記プロセッサにより実行させる手段と、
前記判定手段により前記アドレスに前記分岐命令が記憶されていると判定されると、前記メモリの当該アドレスに記憶されているプログラムコードを前記プロセッサにより実行させる手段と、
を有することを特徴とするコンピュータ機器。
【請求項５】
前記分岐命令記憶手段は、ＲＯＭに記憶されているプログラムコードを前記メモリにコピーする際に記憶することを特徴とする請求項４に記載のコンピュータ機器。
【請求項６】
プロセッサによるメモリへのアクセスを制御するメモリ制御方法であって、
メモリへの書き込み時に、書き込まれるデータが分岐命令であるかどうかを示す識別データを書き込みアドレスに対応付けて記憶する分岐命令記憶工程と、
前記プロセッサによる前記メモリからの読み出し時に、前記分岐命令記憶工程で記憶された識別データを参照して、読み出しアドレスに前記分岐命令が記憶されているかどうかを判定する判定工程と、
前記判定工程で前記アドレスに前記分岐命令が記憶されていないと判定されると、前記アドレスに連続するアドレスのデータを前記メモリから読み出して記憶する先読み記憶工程と、
前記先読み記憶工程で記憶されている前記データを前記プロセッサに転送して実行させるデータ転送工程と、
を有することを特徴とするメモリ制御方法。
【請求項７】
前記判定工程で前記アドレスに前記分岐命令が記憶されていると判定されると、前記メモリの当該アドレスに記憶されているデータを前記プロセッサに転送する工程を更に有することを特徴とする請求項６に記載のメモリ制御方法。
【請求項８】
前記分岐命令記憶工程では、ＲＯＭに記憶されているプログラムコードを前記メモリにコピーする際に記憶することを特徴とする請求項６又は７に記載のメモリ制御方法。
【請求項９】
プロセッサにより、メモリに記憶されているプログラムコードを読み出して実行するコンピュータ機器の制御方法であって、
前記メモリへのプログラムコードの書き込み時に、前記プログラムコードが分岐命令であるかどうかを示す識別データを書き込みアドレスに対応付けて記憶する分岐命令記憶工程と、
前記プロセッサによる前記メモリに記憶されているプログラムコードの実行時、前記分岐命令記憶工程で記憶された識別データを参照して、当該プログラムコードの読み出しアドレスに前記分岐命令が記憶されているかどうかを判定する判定工程と、
前記判定工程で前記アドレスに前記分岐命令が記憶されていないと判定されると、前記アドレスに連続するアドレスのプログラムコードを前記メモリから読み出して記憶する先読み記憶工程と、
前記先読み記憶工程で記憶されている前記プログラムコードを前記プロセッサにより実行させる工程と、
前記判定工程で前記アドレスに前記分岐命令が記憶されていると判定されると、前記メモリの当該アドレスに記憶されているプログラムコードを前記プロセッサにより実行させる工程と、
を有することを特徴とするコンピュータ機器の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御回路とコンピュータ機器及びその制御方法に関するものである。
【背景技術】
【０００２】
ＣＰＵにより実行されるプログラムは、電源オフにより消去しないように、通常は不揮発メモリであるＲＯＭに記憶されて実装されている。しかし、ＣＰＵからみたメモリのアクセス速度はＲＯＭよりもＲＡＭのほうが遥かに早いため、そのＲＯＭに実装されているプログラムの実行時には、そのプログラムを一旦ＲＯＭからＲＡＭにロードし、ＣＰＵはそのＲＡＭに記憶されている命令をフェッチして実行することにより処理を高速化している。
【０００３】
また、プロセッサによるプログラムの実行時、プロセッサから命令コードをフェッチするためのリード要求が発行されてからメモリコントローラがメモリに対してリード要求を発行するので、プロセッサがリード要求を発行してから実際に命令をフェッチできるまでの遅延が発生する。そこで、メモリに対してリード要求が発行されたアドレスから連続するアドレス分の命令を先読みして保存しておき、連続したアドレスの命令が実行されるときはその先読みした命令をフェッチして処理を実行することにより、プロセッサによる処理速度を早める技術が知られている（特許文献１）。
【特許文献１】特開平07-306785号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上述した先読み処理を実行すると、連続したアドレスに格納されている命令を順次実行する場合には処理効率が向上するが、分岐命令が含まれていると、それまで先読みして保存していた連続アドレス分の命令コードは無駄となり、その先読みしている命令コードを全て破棄した後、分岐先の新たなメモリアドレスから命令をフェッチしなければならなくなる。このような処理が頻繁に発生すると、命令の先読みによる利点が生かされず、却って処理効率を低下させてしまうという問題があった
本発明は上記問題点に鑑みてなされたもので、本願発明の特徴は、プロセッサがメモリに格納されているコードを先読みして実行する際、その読み出したコードが分岐命令でない場合に、そのアドレスに連続するアドレス分のコードを先読みして実行するメモリ制御回路とコンピュータ機器及びその制御方法を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の一態様に係るメモリ制御回路は以下のような構成を備える。即ち、
プロセッサによるメモリへのアクセスを制御するメモリ制御回路であって、
メモリへの書き込み時に、書き込まれるデータが分岐命令であるかどうかを示す識別データを書き込みアドレスに対応付けて記憶する分岐命令記憶手段と、
前記プロセッサによる前記メモリからの読み出し時に、前記分岐命令記憶手段に記憶された識別データを参照して、読み出しアドレスに前記分岐命令が記憶されているかどうかを判定する判定手段と、
前記判定手段により前記アドレスに前記分岐命令が記憶されていないと判定されると、前記アドレスに連続するアドレスのデータを前記メモリから読み出して記憶する先読み記憶手段と、
前記先読み記憶手段に記憶されている前記データを前記プロセッサに転送するデータ転送手段とを有することを特徴とする。
【０００６】
本発明の一態様に係るコンピュータ機器は以下のような構成を備える。即ち、
プロセッサにより、メモリに記憶されているプログラムコードを読み出して実行するコンピュータ機器であって、
前記メモリへのプログラムコードの書き込み時に、前記プログラムコードが分岐命令であるかどうかを示す識別データを書き込みアドレスに対応付けて記憶する分岐命令記憶手段と、
前記プロセッサによる前記メモリに記憶されているプログラムコードの実行時、前記分岐命令記憶手段に記憶された識別データを参照して、当該プログラムコードの読み出しアドレスに前記分岐命令が記憶されているかどうかを判定する判定手段と、
前記判定手段により前記アドレスに前記分岐命令が記憶されていないと判定されると、前記アドレスに連続するアドレスのプログラムコードを前記メモリから読み出して記憶する先読み記憶手段と、
前記先読み記憶手段に記憶されている前記プログラムコードを前記プロセッサにより実行させる手段と、
前記判定手段により前記アドレスに前記分岐命令が記憶されていると判定されると、前記メモリの当該アドレスに記憶されているプログラムコードを前記プロセッサにより実行させる手段とを有することを特徴とする。
【０００７】
本発明の一態様に係るメモリ制御方法は以下のような工程を備える。即ち、
プロセッサによるメモリへのアクセスを制御するメモリ制御方法であって、
メモリへの書き込み時に、書き込まれるデータが分岐命令であるかどうかを示す識別データを書き込みアドレスに対応付けて記憶する分岐命令記憶工程と、
前記プロセッサによる前記メモリからの読み出し時に、前記分岐命令記憶工程で記憶された識別データを参照して、読み出しアドレスに前記分岐命令が記憶されているかどうかを判定する判定工程と、
前記判定工程で前記アドレスに前記分岐命令が記憶されていないと判定されると、前記アドレスに連続するアドレスのデータを前記メモリから読み出して記憶する先読み記憶工程と、
前記先読み記憶工程で記憶されている前記データを前記プロセッサに転送して実行させるデータ転送工程とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、メモリに分岐命令が書き込まれている場合の処理効率の低下を防ぐことができる。
【発明を実施するための最良の形態】
【０００９】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。
【００１０】
［実施の形態１］
図１は、本発明の実施の形態１に係るメモリ制御回路の構成を示すブロック図である。このメモリ制御回路は、例えばＰＣ等のメモリ制御回路として設けられていても良い。
【００１１】
図において、ＲＯＭ４０にはプログラムが記憶されており、プロセッサ（ＣＰＵ）１００はＲＯＭコントローラ４００を介して、このＲＯＭ４０に記憶されているプログラムコードを読み出すことができる。ＲＡＭ３０は、ＲＯＭ４０から転送されるプログラムコードを記憶している。メモリコントローラ３００は、メモリバス２０を介して、ＲＡＭ３０へのデータの書き込み（ライト）、及びＲＡＭ３０からのデータの読み出し（リード）を制御している。
【００１２】
次にメモリコントローラ３００の構成を説明する。
【００１３】
コマンド制御部３１０は、メモリコマンド制御回路３１１、コマンドバッファ３１２及びコマンド選択回路３１３を含んでいる。メモリコマンド制御部３１１は、プロセッサ１００からのライト／リード要求に対応して、メモリ（ＲＡＭ３０）へのメモリ制御コマンドを生成する。このメモリ制御コマンドは、ＲＡＭ３０へのデータの書き込み、及びＲＡＭ３０からのデータの読み出しを制御するとともに、後述するプリフェッチデータ制御部３６０及び分岐命令制御部３５０をも制御している。またメモリコマンド制御部３１１は、ＲＡＭ３０へのデータの書き込みを制御するライトデータ制御部３２０や、ＲＡＭ３０からのデータの読み出しを制御するリードデータ制御部３３０をも制御している。
【００１４】
コマンドバッファ３１２は、プロセッサ１００からのライト／リード要求に対するメモリ制御コマンドを格納する。コマンド選択回路３１３は、バス制御部３４０からのコマンドと、プリフェッチデータ制御部３６０にフェッチされているコマンドのどちらを選択して実行するかを決定する。
【００１５】
ライトデータ制御部３２０は、コマンド制御部３１０から受け取ったコマンド情報がライトコマンドの場合には、バス制御部３４０から受け取ったデータをライトデータバッファ３２１へ格納し、このライトデータバッファ３２１に格納したデータをメモリバス２０へ転送してＲＡＭ３０に書き込む。このライトデータバッファ３２１は、共有バス２００とバス制御部３４０を介してプロセッサ１００から受け取ったライトデータを格納する。リードデータ制御部３３０は、コマンド制御部３１０から受け取ったコマンド情報がリードコマンドの場合には、メモリバス２０から受け取ったＲＡＭ３０から読み出されたデータをリードデータバッファ３３１へ格納する。このリードデータバッファ３３１に格納されたデータは、バス制御部３４０と共有バス２００を介してプロセッサ１００へ転送されることにより、プロセッサ１００によるＲＡＭ３０からのデータ、命令の読み出しが行われる。
【００１６】
バス制御部３４０は、共有バス２００と、コマンド制御部３１０、ライトデータ制御部３２０、リードデータ制御部３３０、データ転送回路３６３との間でのデータ転送制御を行う。
【００１７】
分岐命令制御部３５０は、命令デコード回路３５１とデコード結果保持回路３５２とを有している。命令デコード回路３５１は、ＲＯＭ４０からＲＡＭ３０へのプログラムの転送時、コマンド制御部３１０からライトコマンドを受け取った場合に、ライトデータ制御部３２０から受け取ったライトデータ（プログラムコード）が分岐命令であるか否かを判定する。デコード結果保持回路３５２は、命令デコード回路３５１で分岐命令であると判定されたライトデータ（プログラムコード）のＲＡＭ３０への格納アドレスに対応付けて分岐命令であることを示す情報を保持する。
【００１８】
プリフェッチデータ制御部３６０は、デコード結果判定回路３６１とデータリード回路３６２とデータ転送回路３６３とを有している。プロセッサ１００がＲＡＭ３０に記憶されたプログラムを実行する際、デコード結果判定回路３６１は、コマンド制御部３１０からリードコマンドを受け取ると、分岐命令制御部３５０のデコード結果保持回路３５２の結果を参照して、そのＲＡＭ３０の読み出しアドレスに分岐命令が格納されているか否かを判断する。データリード回路３６２は、デコード結果判定回路３６１により分岐命令が格納されていないと判定されると、そのアドレスに連続するアドレスのプログラムコードのフェッチ要求をコマンド制御部３１０に出力する。これにより、現アクセスアドレスに分岐命令が格納されていないと、この現アドレスに連続しているアドレスに記憶されているプログラムコードが先読みされる。データ転送回路３６３は、データリード回路３６２の先読み要求により読み出したプログラムコードを、バス制御部３４０、共有バス２００を介してプロセッサ１００のデータ保持回路１０１へ転送する。こうして先読みされたプログラムコードは、プロセッサ１００のデータ保持回路１０１に保持され、連続したアドレスのプログラムコードが実行される限りは、プロセッサ１００はＲＡＭ３０にアクセスすることなく命令を順次実行できる。
【００１９】
このような構成により、プロセッサ１００による制御によりＲＯＭ４０からＲＡＭ３０へプログラムをロードする際、ＲＡＭ３０にプログラムコードを書き込む時点で、その命令が分岐命令であるかどうかを判断し、分岐命令であればその分岐命令が書き込まれるＲＡＭ３０のアドレスに対応付けて分岐命令であることを示す情報を、デコード結果保持回路３５２に記憶する。そしてＲＡＭ３０に格納されたプログラムの実行時、ＲＡＭ３０からのプログラムコードのフェッチが行われると、デコード結果判定回路３６１は、コマンド制御部３１０からリードコマンドを受け取り、デコード結果保持回路３５２の結果を参照して、その読み出しアドレスに分岐命令が格納されているか否かを判断する。デコード結果判定回路３６１により分岐命令が格納されていないと判定されると、プリフェッチデータ制御部３６０の制御により、そのアドレスに連続するアドレスへのフェッチ要求をコマンド制御部３１０に出力し、ＲＡＭ３０の、その連続するアドレスから読み出されたプリフェッチデータがデータ転送回路３６３からデータ保持回路１０１に転送される。これによりプロセッサ１００は、このデータ保持回路１０１に記憶されているプログラムコードを順次実行することになる。尚、この命令フェッチ動作は、ＲＡＭ３０から読み出したプログラムコードに分岐命令が表れるまで実行される。
【００２０】
一方、ＲＡＭ３０からフェッチした命令が分岐命令である場合は、プリフェッチデータ制御部３６０による制御を行わずに、そのアドレスのプログラムコードがＲＡＭ３０からリードバッファ３３１に転送され、バス制御部３４０、共有バス２００を介してプロセッサ１００へ転送される。そしてそれ以降は、その分岐したメモリアドレスから前述した先読み処理が実行されることになる。
【００２１】
図２は、本発明の実施の形態１に係るメモリ制御回路における処理を説明するフローチャートである。ここでは、プロセッサ１００は電源投入時、ＲＯＭコントローラ４００を介して、ＲＯＭ４０から命令のフェッチを開始することとする。また、このＲＯＭ４０に格納されているプログラムには、プログラムをＲＯＭ４０からＲＡＭ３０へコピーする処理を制御するシーケンスが含まれているものとする。これは、ＲＯＭ４０よりもＲＡＭ３０のアクセス速度が速いため、起動時にＲＯＭ４０に記憶されているプログラムをＲＡＭ３０へコピーし、動作時にはＲＡＭ３０から命令をフェッチしてプログラムを実行することにより処理を高速化するものである。
【００２２】
ステップＳ１で、プロセッサ１００がＲＯＭ４０に記憶されているプログラムコードをＲＡＭ３０にコピーする処理を開始する。このコピー処理の間、プロセッサ１００はＲＯＭコントローラ４００を介してＲＯＭ４０から命令を順次フェッチして、ＲＯＭ４０に記憶されているプログラムコードをＲＡＭ３０にコピーするコピーシーケンスを実行する。このコピーシーケンスの間、ＲＯＭ４０からデータ（プログラムコード）をリードしてＲＡＭ３０への書き込み要求を発行する。
【００２３】
このときステップＳ２で、ＲＯＭ４０からプログラムコードがリードされ、ステップＳ３で、メモリコントローラ３００によりＲＡＭ３０に書き込む。このときステップＳ４で、プロセッサ１００から発行された書き込み要求は、コマンド制御部３１０のコマンド選択回路３１３を介してコマンドバッファ３１２に格納される。このときライトデータ制御部３２０のライトバッファ３２１は、ＲＡＭ３０に書き込むプログラムコード（ライトデータ）を受信して格納する。次にステップＳ５で、メモリコマンド制御回路３１１がメモリ制御コマンドを発行し、ライトデータバッファ３２１からライトデータが出力されると、分岐命令制御部３５０の命令デコード回路３５１が、このプログラムコードをデコードして分岐命令であるか否かを判定する。
【００２４】
次にステップＳ６で、命令デコード回路３５１による判定結果が、分岐命令であるかどうかを判定し、分岐命令であればステップＳ７に進み、デコード結果保持回路３５２に、そのプログラムコードの書き込みアドレスに、分岐命令が格納されたことを記憶する。一方、分岐命令でないならばステップＳ８に進み、該当アドレスのプログラムコードが分岐命令でないことを記憶する。こうしてステップＳ７或はステップＳ８を実行するとステップＳ９に進み、ＲＯＭ４０に記憶されている、コピー対象のプログラムコードを全てＲＡＭ３０にコピーしたかどうかをみる。全てコピーしていない場合はステップＳ２に戻り、前述の処理を実行する。
【００２５】
こうしてＲＯＭ４０からＲＡＭ３０へのプログラムのコピーが終了するとステップＳ１０に進み、そのＲＡＭ３０にコピーされたプログラムの実行が開始される。ステップＳ１０では、プロセッサ１００はＲＡＭ３０から命令をフェッチする。その際、プロセッサ１００のデータ保持回路１０１に、そのフェッチするアドレスのプログラムコードが先読みされて記憶されているかどうかを調べ、記憶されていれば、そのデータ保持回路１０１から、先読みされて記憶されているプログラムコードを読み出して実行する（ステップＳ１７，Ｓ１８）。
【００２６】
一方、ステップＳ１０で、そのアドレスのデータが先読みされていなければステップＳ１１に進み、ＲＡＭ３０からプログラムコードをフェッチする命令フェッチ要求（リード要求）を発行する。このリード要求は、コマンド選択回路３１３を介して、メモリ制御部３１０のコマンドバッファ３１２に格納される（ステップＳ１２，Ｓ１３）。次にステップＳ１４で、メモリコマンド制御回路３１１が、ＲＡＭ３０からデータを読み出すメモリ制御コマンドを発行すると、デコード結果判定回路３６１は、その読み出しアドレスに対応するデコード結果保持回路３５２のデータを参照し、そのアドレスに分岐命令が格納されているか否かを判定する。ここで、そのアドレスに分岐命令が格納されていると判定されるとステップＳ１５に進み、プリフェッチデータ制御部３６０は何も行わず、ＲＡＭ３０の、そのアドレスに記憶されているプログラムコードをリードデータ制御部３３０により読み出してリードデータバッファ３３１に格納し、プロセッサ１００へ転送する。これにより、プロセッサ１００は、そのアドレスからフェッチした分岐命令を実行する（ステップＳ１７）。
【００２７】
一方、ステップＳ１４で分岐命令が格納されていないと判定されるとステップＳ１６に進み、データリード回路３６２は、そのアドレスに連続しているＲＡＭ３０のアドレスから連続して命令をフェッチするためにリード要求をコマンド制御部３１０へ発行する。このリード要求によりＲＡＭ３０の、その連続したアドレスから読み出された（先読みされた）プログラムコードは、データ転送回路３６３によってプロセッサ１００のデータ保持回路１０１へ転送されてキャッシュされる。この動作は、次に分岐命令が現れるまで繰り返し実行される。こうしてステップＳ１９で、このプログラムの実行が終了したかを調べ、終了していないときはステップＳ２０で、次のプログラムコード（命令）をフェッチするために、プロセッサ１００のプログラムカウンタのアドレスをカウントアップしてステップＳ１１０に戻る。この処理はステップＳ１９で、プログラムの実行が終了されるまで繰り返し実行される。
【００２８】
以上説明したように本実施の形態１によれば、ＲＡＭ３０に記憶されているプログラムの実行時、分岐命令を実行する際に発生する、キャッシュして先読みしたプログラムコードを廃棄して再度ＲＡＭ３０からプログラムコードをフェッチしなければならないという無駄な処理を無くすことができる。これによりプログラムの実行時のスループットをより上げることができる。
【００２９】
［実施の形態２］
図３は、本発明の実施の形態２に係るメモリ制御回路の構成を示すブロック図で、このメモリ制御回路は、例えばＰＣ等の制御回路に設けられており、前述の実施の形態１の構成と共通する部分は同じ記号で示し、その説明を省略する。
【００３０】
図１と比較すると明らかなように、この実施の形態２ではプロセッサ１００は、先読みしたプログラムコードを記憶するためのデータ保持回路１０１を有しておらず、その代わりに、プリフェッチデータ制御部３６０に、先読みしたプログラムコードを記憶するためのデータ保持回路３６４が設けられている点が異なっている。
【００３１】
プリフェッチデータ制御部３６０のデータ保持回路３６４は、データリード回路３６２からのプリフェッチ要求によりＲＡＭ３０からプリフェッチされたデータを保持する。
【００３２】
図４は、本発明の実施の形態２に係るメモリ制御回路における処理を説明するフローチャートで、前述の図２のフローチャートと共通する部分は同じ記号で示し、その説明を省略する。尚、この実施の形態２においても、プロセッサ１００は電源投入時、ＲＯＭコントローラ４００を介して、ＲＯＭ４０から命令のフェッチを開始することとする。また、このＲＯＭ４０に格納されているプログラムには、プログラムをＲＯＭ４０からＲＡＭ３０へコピーする処理を制御するシーケンスが含まれており、ＲＯＭ４０に記憶されているプログラムコードをＲＡＭ３０にコピーして実行することは前述の実施の形態１の場合と同じである。
【００３３】
ステップＳ１〜ステップＳ９では、前述の実施の形態１と同様に、ＲＯＭ４０に記憶されているプログラムコードをＲＡＭ３０にコピーし、分岐命令が含まれているＲＡＭ３０のアドレスが判るようにデコード結果保持回路３６２に記憶している。
【００３４】
こうしてコピー処理が完了するとステップＳ１１で、ＲＡＭ３０にコピーされたプログラムの実行が開始され、ステップＳ１１で、プロセッサ１００はＲＡＭ３０からプログラムコード（命令）をフェッチするための命令フェッチ要求（リード要求）を発行する。このリード要求は、コマンド選択回路３１３を介してコマンドバッファ３１２に送られて保持される（ステップＳ１２）。このリード要求により、メモリコマンド制御回路３１１からプリフェッチデータ制御部３６０に対して、ＲＡＭ３０からデータを読み出すメモリ制御コマンドが発行される（ステップＳ１３）。
【００３５】
これによりステップＳ３１で、そのデータ要求されたアドレスのプログラムコードが、プリフェッチデータ制御部３６０のデータ保持回路３６４に、既に先読みされて保持されているかどうかを判定する。保持されていればステップＳ３２に進み、そのデータ保持回路３６４に保持されているプログラムコードをリードデータ制御部３３０に送り、プロセッサ１００へ転送する。こうしてＲＡＭ３０から先読みされてデータ保持回路３６４に保持されているプログラムコードがプロセッサ１００により実行され、プロセッサ１００による処理速度を速めることができる。
【００３６】
一方、ステップＳ３１で、データ保持回路３６４に保持されていないと判定されるとステップＳ３３に進み、リードデータ制御部３３０によりＲＡＭ３０から読み出されたデータをプロセッサ１００に転送する。
【００３７】
そしてステップＳ１４で、そのリード要求されたアドレスに対応するデコード結果保持回路３５２のデータを参照し、そのアドレスの命令が分岐命令であるか否かを判定する。分岐命令であればステップＳ１７に進み、プロセッサ１００によりその命令を実行してステップＳ１９に進む。一方、分岐命令でないときはステップＳ１４からステップＳ３４に進み、プリフェッチデータ制御部３６０のデータリード回路３６２は、そのアドレスとそれに連続するアドレスからのプログラムコードのリード要求をコマンド制御部３１０へ発行する。次にステップＳ３５で、そのリード要求によりＲＡＭ３０から読み出されたプリフェッチデータをデータ保持回路３６４に保持する。そしてステップＳ１７に進み、プロセッサ１００は、ステップＳ１４でリード要求されたアドレスのプログラムコードを実行する。次にステップＳ１９では、そのプログラムの実行が終了したかを調べ、終了していないときはステップＳ２０に進み、次の命令をフェッチするためにアドレスカウンタを更新してステップＳ１１に進む。この処理はステップＳ２０で、このプログラムの実行の終了が指示されるまで繰り返し実行される。
【００３８】
以上説明したように実施の形態２によれば、読み出したデータが分岐命令でない場合に次のアドレスをプリフェッチでき、プロセッサ１００はキャッシュメモリの有無に関わらず、メモリのレイテンシーの影響を受けずにプログラムを処理することができる。
【００３９】
尚、上記実施の形態では、ＲＯＭからＲＡＭへのプログラムコードの書き込み時に、分岐命令が含まれるかどうかを判定して記憶するようにしたが本発明はこれに限定されるものでなく、例えばハードディスクにインストールされているプログラムをＲＡＭにロードして実行する場合にも適用できる。また、そのプログラムが一度ＲＡＭ３０にロードされて、どのアドレスに分岐命令が存在しているかが予め判っているときは、そのプログラムを再度ＲＡＭ３０にロードする際には、一々プログラムコードをデコードすることなく、デコード結果保持回路３５２にその予め判っているアドレスを記憶するようにしても良い。
【００４０】
また、プログラムがＲＡＭ３０にロードされるアドレスが前回のロード時のアドレスと異なっても、分岐命令が存在するアドレスを相対アドレスで記憶しておけば、容易にデコード結果保持回路３５２にそのアドレスを記憶することができる。
【００４１】
以上、本発明の実施の形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、または一つの機器からなる装置に適用しても良い。
【００４２】
なお本発明は、前述した実施の形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが、その供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。その場合、プログラムの機能を有していれば、その形態はプログラムである必要はない。従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明には、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００４３】
プログラムを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。その他のプログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明のクレームに含まれるものである。
【００４４】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件を満足するユーザに対してインターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００４５】
またコンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００４６】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施の形態１に係るメモリ制御回路の構成を示すブロック図である。
【図２】本発明の実施の形態１に係るメモリ制御回路における処理を説明するフローチャートである。
【図３】本発明の実施の形態２に係るメモリ制御回路の構成を示すブロック図である。
【図４】本発明の実施の形態２に係るメモリ制御回路における処理を説明するフローチャートである。
【図１】
2006146813.tif 000003
【図２】
2006146813.tif 000004
【図３】
2006146813.tif 000005
【図４】
2006146813.tif 000006