(57)【要約】【課題】演算器のストールを防いで高スループットの実現を図る。【解決手段】演算器１１と、該演算器で処理するデータを一時的に格納する第１メモリ１２と、プリローダにより第２メモリ５０からのデータを前記第１メモリにプリロードする第１経路４２，３２，１５と、前記演算器が前記第２メモリにアクセスする第２経路１４，３１，４１と、を有し、前記第１経路および前記第２経路を使用した前記第２メモリとの間のメモリアクセスは、メモリコントローラ４０により調停され、前記メモリコントローラは、スケジューラ６０により制御されるように構成する。【選択図】図３
2011076232.tif 000002
【特許請求の範囲】
【請求項１】
演算器と、
該演算器で処理するデータを一時的に格納する第１メモリと、
プリローダにより第２メモリからのデータを前記第１メモリにプリロードする第１経路と、
前記演算器が前記第２メモリにアクセスする第２経路と、を有し、
前記第１経路および前記第２経路を使用した前記第２メモリとの間のメモリアクセスは、メモリコントローラにより調停され、
前記メモリコントローラは、スケジューラにより制御されることを特徴とする演算処理装置。
【請求項２】
演算器、および、該演算器で処理するデータを一時的に格納する第１メモリを有する演算処理装置と、
第２メモリからのデータを、第１経路を介して前記第１メモリにプリロードするプリローダと、
前記演算器による第２経路を介した前記第２メモリに対するアクセスと、前記プリローダによる前記第１経路を介した前記第２メモリに対するメモリアクセスとの調停を行うメモリコントローラと、
該メモリコントローラを制御するスケジューラと、を有することを特徴とする半導体集積回路。
【請求項３】
請求項２に記載の半導体集積回路において、
前記メモリコントローラは、ハードウェアであり、
前記スケジューラは、常駐ソフトウェアであることを特徴とする半導体集積回路。
【請求項４】
請求項２または３に記載の半導体集積回路において、
前記第２メモリは、メインメモリであり、
前記第１メモリは、アプリケーションソフトに従って前記メインメモリからのデータを予めプリロードするワークメモリであることを特徴とする半導体集積回路。
【請求項５】
請求項２〜４のいずれか１項に記載の半導体集積回路において、
前記メモリコントローラは、前記プリローダによる前記第２メモリから前記第１メモリに対するプリロード処理の実行中に、前記演算器から前記第２メモリへのアクセスが発生した場合、前記プリロード処理を中断して前記演算器から前記第２メモリへアクセスすることを特徴とする半導体集積回路。
【請求項６】
請求項５に記載の半導体集積回路において、
前記スケジューラは、予め各処理に対して優先度を設定し、該優先度に従ってスケジューラが各処理の割り当てを行い、前記メモリコントローラが調停することを特徴とする半導体集積回路。
【請求項７】
請求項６に記載の半導体集積回路において、
前記スケジューラは、前記プリロード処理に対して可変の優先度を割り当て、前記プリローダによる前記第２メモリから前記第１メモリに対するプリロード処理の実行中に、前記演算器から前記第２メモリへのアクセスが発生した場合、前記プリロード処理の優先度を最も低いものに変更することを特徴とする半導体集積回路。
【請求項８】
請求項２〜７のいずれか１項に記載の半導体集積回路において、
前記第１経路および前記第２経路は、前記メモリコントローラと前記ワークメモリおよび前記演算器との間で独立したバスであることを特徴とする半導体集積回路。
【請求項９】
請求項２〜８のいずれか１項に記載の半導体集積回路において、
前記演算処理装置を複数有し、
前記１つのプリローダにより前記各演算処理装置の前記第１メモリに対するプリロード処理を制御することを特徴とする半導体集積回路。
【請求項１０】
演算器、および、該演算器で処理するデータを演算処理装置内の第１メモリに一時的に格納する工程と、
第２メモリと、
プリローダが前記第２メモリからのデータを、第１経路を介して前記第１メモリにプリロードする工程と、
メモリコントローラが前記演算器による第２経路を介した前記第２メモリに対するアクセスと、前記プリローダによる前記第１経路を介した前記第２メモリに対するメモリアクセスとの調停を行う工程と、
スケジューラが該メモリコントローラを制御する工程と、を有する演算処理システムにおける演算処理方法であって、
前記プリローダが前記第２メモリから前記第１メモリに対してプリロードする際に、前記演算器から前記第２メモリへのアクセスが発生した場合、前記プリロードする工程を中断して前記演算器から前記第２メモリへアクセスすることを特徴とする演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願で言及する実施例は、演算処理装置，半導体集積回路および演算処理方法に関する。
【背景技術】
【０００２】
近年の演算処理装置（プロセッサ：ＣＰＵ）は、高速化を図るために、メインメモリのデータを一時的に保持する階層化されたキャッシュメモリやワークメモリを有している。
【０００３】
また、複数のＣＰＵコアを有する演算処理装置（マルチコアプロセッサ）は、ＣＰＵコア毎にキャッシュメモリやワークメモリを有している。
【０００４】
ここで、メインメモリ，キャッシュメモリおよびワークメモリは、それぞれアクセス速度やサイズ（記憶容量）が異なるため、各メモリに対して適切にデータおよび命令を配置（ロード）することが高スループットを実現する上での鍵になる。
【０００５】
ところで、キャッシュメモリやワークメモリに対するデータおよび命令のロードを各処理の実行時に行うのでは、それらのデータを転送している間、演算器が待ち状態になってしまう。
【０００６】
そこで、演算器がある処理を実行している間、次の処理に必要となるデータおよび命令をロードすることにより、データ転送時間を隠蔽して性能を向上させるものが提供されている。
【０００７】
具体的に、例えば、キャッシュメモリに対するプリフェッチ処理およびワークメモリに対するプリロード処理が開発され、また、実用化されている。
【０００８】
特に、組み込みシステムにおいては、メモリ資源が限られているため、上記のプリフェッチ処理やプリロード処理を効果的に用いることが高スループットを実現する上で重要となっている。
【０００９】
このように、現在の多くの演算処理装置には、演算器とは独立に動作し、ワークメモリへのプリロードを制御するプリロード機構が搭載されている。
【００１０】
プリロード機構は、演算器がキャッシュメモリにアクセスして処理を行っている間に、プリローダによって次の処理に必要なデータ（命令）をワークメモリにプリロードする。
【００１１】
このようなプリロード処理を行うことにより、次の処理を実行する際にキャッシュミスが発生した場合、アクセスレイテンシの大きなメインメモリへアクセスすることなく、アクセスレイテンシが小さいワークメモリへアクセスすることになる。これにより、キャッシュミス時のペナルティを低減して高スループットを実現することができる。
【００１２】
図１は演算処理システムの一例を示すブロック図であり、上述したプリロード機構を搭載した演算処理システムの一例を示すものである。
【００１３】
図１に示されるように、演算処理システム１０１は、演算処理装置（プロセッサ：ＣＰＵ）１１０，プリローダ１２０，バスネットワーク１３０，メモリコントローラ１４０およびメインメモリ１５０を有する。
【００１４】
演算処理装置１１０は、演算器１１１，ワークメモリ１１２およびキャッシュメモリ１１３を有する。演算器１１１は、演算処理装置１１０における内部システムバス１１４、および、システムバス１３１を介してバスネットワーク１３０に接続される。なお、バスネットワーク１３０は、例えば、クロスバやマルチレイヤバス等である。
【００１５】
ワークメモリ１１２は、プリローダ１２０により、例えば、アプリケーションソフトの命令に従って、メインメモリ１５０から予め必要とされるデータをプリロードして格納するために使用される。
【００１６】
キャッシュメモリ１１３は、例えば、演算器１１１が処理するデータ（命令）を所定のプロトコルに従ってメインメモリ１５０から読み込んでおき、メインメモリ１５０やバス等の遅延を隠蔽化して高速処理を行うために使用される。
【００１７】
そして、前述したように、例えば、キャッシュミスが発生したときに、ワークメモリ１１２へアクセスすることで、キャッシュミス時のペナルティを低減して高スループットを実現するようになっている。
【００１８】
図１において、キャシュメモリ１１３は、説明を簡略化するために１つだけ描かれているが、メインメモリ１５０との間で演算処理装置１１０の内部および外部に階層的に複数設けることもできる。
【００１９】
ここで、ワークメモリ１１２およびプリローダ１２０は、演算器１１１とバスネットワーク１３０を繋ぐシステムバス１１４および１３１を介してバスネットワーク１３０に接続されている。
【００２０】
また、バスネットワーク１３０は、メモリバス１４１を介してメモリコントローラ１４０に接続され、さらに、メモリコントローラ１４０はメモリバス１５１を介してメインメモリ１５０に接続されている。
【００２１】
すなわち、図１の演算処理システム１０１は、プリローダ１２０によりメインメモリ１５０からのデータをワークメモリ１１２へプリロードするアクセス経路と、演算器１１１がメインメモリ１５０にアクセスするアクセス経路とが共用されている。
【００２２】
図２は図１の演算処理システムの動作を説明するための図である。図２に示されるように、オペレーションＲＯＡにおいて、例えば、割り込み命令等により、演算器１１１からメインメモリ１５０へのアクセスが発生すると、オペレーションＲＯＢに進んで、プリロードを実行中かどうか判別する。
【００２３】
まず、オペレーションＲＯＢにおいて、ワークメモリ１１２へのプリロードが実行中ではないと判別すると、メインメモリ１５０から演算器１１１へロードして処理を終了する。
【００２４】
一方、オペレーションＲＯＢにおいて、ワークメモリ１１２へのプリロードが実行中であると判別すると、オペレーションＲＯＣに進んで、プリロードの終了を待ち、オペレーションＲＯＢに戻る。
【００２５】
すなわち、プリロードが終了するまで待って、オペレーションＲＯＢにおいて、プリロードを実行中ではない、すなわち、プリロードが終了したと判別すると、オペレーションＲＯＤに進んで、メインメモリ１５０から演算器１１１へロードして処理を終了する。なお、各オペレーションは、ステップでもよい。
【００２６】
ところで、従来、キャッシュメモリやワークメモリを有する演算処理装置の性能向上を図るものとしては、様々なものが提案されている。
【先行技術文献】
【特許文献】
【００２７】
【特許文献１】特開平７−１０５０９８号公報
【特許文献２】特開平１１−１２００７４号公報
【発明の概要】
【発明が解決しようとする課題】
【００２８】
図１および図２を参照して説明したように、図１に示す演算処理システム１０１は、メインメモリ１５０からのデータをワークメモリ１１２へプリロードするアクセス経路と、演算器１１１がメインメモリ１５０にアクセスするアクセス経路とが共用されている。
【００２９】
そして、演算器１１１からメインメモリ１５０へのアクセスが、ワークメモリ１１２へのプリロード実行中に発生すると、そのプリロードが終了するのを待って、その後、メインメモリ１５０から演算器１１１へロードを行っている。
【００３０】
そのため、例えば、割り込み命令によって、演算器１１１からメインメモリ１５０へのアクセスが、ワークメモリ１１２へのプリロード実行中に発生すると、演算器１１１の処理が遅延してスループットが低下することになる。
【００３１】
この出願は、演算器のストールを防いで高スループットを実現することのできる演算処理装置、半導体集積回路および演算処理方法の提供を目的とする。
【課題を解決するための手段】
【００３２】
一実施形態によれば、演算器と、該演算器で処理するデータを一時的に格納する第１メモリと、第１経路と、第２経路と、を有する演算処理装置が提供される。
【００３３】
前記第１経路は、プリローダにより第２メモリからのデータを前記第１メモリにプリロードする経路であり、また、前記第２経路は、前記演算器が前記第２メモリにアクセスする経路である。
【００３４】
そして、前記第１経路および前記第２経路を使用した前記第２メモリとの間のメモリアクセスは、メモリコントローラにより調停され、また、前記メモリコントローラは、スケジューラにより制御される。
【発明の効果】
【００３５】
開示の演算処理装置、半導体集積回路および演算処理方法は、演算器のストールを防いで高スループットを実現するという効果を奏する。
【図面の簡単な説明】
【００３６】
【図１】演算処理システムの一例を示すブロック図である。
【図２】図１の演算処理システムの動作を説明するための図である。
【図３】第１実施例の半導体集積回路が適用される演算処理システムを示すブロック図である。
【図４】図３の演算処理システムの動作を説明するための図（その１）である。
【図５】図３の演算処理システムの動作を説明するための図（その２）である。
【図６】図３の演算処理システムにおけるメモリコントローラの動作を説明するための図（その１）である。
【図７】図３の演算処理システムにおけるメモリコントローラの動作を説明するための図（その２）である。
【図８】第１実施例の半導体集積回路を演算処理システムと識別して示す図である。
【図９】第２実施例の半導体集積回路が適用される演算処理システムを示すブロック図である。
【発明を実施するための形態】
【００３７】
以下、演算処理装置、半導体集積回路および演算処理方法の実施例を、添付図面を参照して詳述する。
【００３８】
図３は第１実施例の半導体集積回路が適用される演算処理システムを示すブロック図である。図３に示されるように、演算処理システム１は、演算処理装置（プロセッサ：ＣＰＵ）１０，プリローダ２０，バスネットワーク３０，メモリコントローラ４０，メインメモリ５０およびスケジューラ６０を有する。
【００３９】
演算処理装置１０は、演算器１１，ワークメモリ１２およびキャッシュメモリ１３を有する。演算器１１は、演算処理装置１０における内部システムバス１４、および、システムバス３１を介してバスネットワーク３０に接続されている。なお、バスネットワーク３０は、例えば、クロスバやマルチレイヤバス等である。
【００４０】
ワークメモリ１２は、例えば、アプリケーションソフトの命令に従ってプリローダ２０により、予め必要とされるデータをメインメモリ５０からプリロードして格納するために使用される。
【００４１】
キャッシュメモリ１３は、例えば、演算器１１が処理するデータ（命令）を所定のプロトコルに従ってメインメモリ５０から読み込んでおき、メインメモリ５０やバス等の遅延を隠蔽化して高速処理を行うために使用される。
【００４２】
図３において、キャシュメモリ１３は、説明を簡略化するために１つだけ描かれているが、メインメモリ５０との間で演算処理装置１０の内部および外部に階層的に複数設けることができるのはいうまでもない。
【００４３】
ここで、ワークメモリ１２は、演算処理装置１０における内部メモリバス１５、および、メモリバス３２を介してバスネットワーク３０に接続され、また、プリローダ２０は、信号線３３を介してバスネットワーク３０に接続されている。
【００４４】
バスネットワーク３０は、演算器１１のシステムバス３１に対するメモリバス４１，ワークメモリ１２のメモリバス３２に対するメモリバス４２およびプリローダ２０の信号線３３に対する信号線３３によりメモリコントローラ４０に接続されている。
【００４５】
演算処理システム１において、プリローダ２０によりメインメモリ５０からのデータをワークメモリ１２へプリロードする第１経路と、演算器１１がメインメモリ５０にアクセスする第２経路とが独立して設けられている。
【００４６】
ここで、第１経路は、ワークメモリ１２からメモリコントローラ４０までのメモリバス１５，３２および４２、並びに、プリローダ２０からメモリコントローラ４０までの信号線３３および４３を有する。
【００４７】
また、第２経路は、演算器１１からメモリコントローラ４０までのシステムバス１４および３２、並びに、メモリバス４１を有する。なお、メモリコントローラ４０は、メモリバス５１によりメインメモリ５０に接続されている。
【００４８】
メモリコントローラ４０は、演算器１１，プリローダ２０およびスケジューラ６０からの制御信号等に従って、各メモリに対するアクセスを調停する調停機構（アービタ）を有する。なお、このメモリコントローラ４０による調停動作は、図５〜図７を参照して後に詳述する。
【００４９】
ここで、スケジューラ６０はソフトウェアとされ、ハードウェアのメモリコントローラ４０を制御するようになっている。すなわち、スケジューラ６０は、例えば、演算処理システムが起動されたときの初期化処理時に、演算器１１（演算処理装置１０）によって実行されて常駐するソフトウェア（常駐ソフトウェア）により実現することができる。
【００５０】
図４は図３の演算処理システムの動作を説明するための図（その１）である。ここで、図４の左側部分は、通常のプリロード処理、すなわち、メインメモリからワークメモリへのプリロード実行中に、演算器からメインメモリへのアクセスが発生しないときの処理を示す。
【００５１】
また、図４の右側部分は、メインメモリからワークメモリへのプリロード実行中に、演算器からメインメモリへのアクセスが発生したときの処理を示す。
【００５２】
まず、図４の左側部分に示されるように、通常のプリロード処理は、スケジューラ６０からプリローダ制御の命令を発行し（Ａ１１）、プリローダ２０にキック命令を入力する（kick：Ａ１２）。
【００５３】
これにより、メインメモリ５０からワークメモリ１２へ、メモリバス５１，４２，３２，１５、並びに、メモリコントローラ４０およびバスネットワーク３０を介してデータを転送し（Ａ１３）、その転送が終了すると、その報告を出力する（report：Ａ１４）。
【００５４】
アプリケーションソフト（アプリソフト）は、ワークメモリ１２へプリロードされたデータを使用し（use：Ａ１６）、所定の処理を実行した（Ａ１７）後、その処理を完了する（exit：Ａ１８）。
【００５５】
一方、図４の右側部分に示されるように、メインメモリ５０からワークメモリ１２へのプリロード実行中に、例えば、割り込み命令により演算器１１からメインメモリ５０へのアクセスが発生したときの処理を説明する。
【００５６】
まず、スケジューラ６０からプリローダ制御の命令を発行し（Ｂ１１）、プリローダ２０にキック命令を入力する（kick：Ｂ１２）。これにより、メインメモリ５０からワークメモリ１２へ、メモリバス５１，４２，３２，１５、並びに、メモリコントローラ４０およびバスネットワーク３０を介してデータの転送が開始する（Ｂ１３’）。
【００５７】
このとき、例えば、割り込み命令により演算器１１からメインメモリ５０へのアクセスが発生すると、メモリコントローラ４０は、プリローダ２０によるメインメモリ５０からワークメモリ１２へのプリロード処理を中断する（Ｂ２１）。
【００５８】
さらに、演算器１１からメインメモリ５０へのアクセスを行い（Ｂ２３）、メインメモリ５０からのデータを、メモリバス５１，４１およびシステムバス３１，１４、並びに、メモリコントローラ４０およびバスネットワーク３０を介して取り込む（Ｂ２４）。
【００５９】
演算器１１からメインメモリ５０へのアクセス処理が完了すると（exit：Ｂ２５）、プリローダ２０によるメインメモリ５０からワークメモリ１２へのプリロード処理を再開する（Ｂ２６）。
【００６０】
これにより、メインメモリ５０からワークメモリ１２へ、メモリバス５１，４２，３２，１５、並びに、メモリコントローラ４０およびバスネットワーク３０を介してデータの転送が再開する（Ｂ１３”）。
【００６１】
そして、データの転送、すなわち、ワークメモリ１２へのプリロード処理が終了すると、その報告を出力し（report：Ｂ１４），アプリソフトは、そのワークメモリ１２へプリロードされたデータを使用する（use：Ｂ１６）。
【００６２】
ここで、例えば、割り込み命令による演算器１１からメインメモリ５０へのアクセスは、リアルタイム処理であり、また、メインメモリ５０からワークメモリ１２へのプリロード処理は、非リアルタイム処理である。
【００６３】
なお、リアルタイム処理は、他のデバイスからの入力信号やプログラムからの要求に対して即座に行う処理であり、例えば、電話の着信応答や車のブレーキ制御といった処理である。
【００６４】
すなわち、リアルタイム処理は、例えば、制御システムにおいて、一定時間内に処理を確実に終了しなければならない場合があり、このような実時間性を保証し、許容される時間内に処理の完了を保証する処理である。
【００６５】
一方、非リアルタイム処理は、リアルタイム処理とは異なり、一定時間内に処理を確実に終了しなくても構わない処理であり、例えば、携帯電話のメール作成や文書作成といった処理である。
【００６６】
図４において、非リアルタイム処理であるワークメモリ１２へのプリロード処理は、例えば、ＤＭＡＣ（Direct Memory Access Controller）による問合せ／応答（Request/Response）型のデータ転送を行っている。
【００６７】
そのため、調停機構（メモリコントローラ４０）が、例えば、ＤＭＡＣからのアクセス（プリロード処理）から演算器１１へのアクセスに切り替えた場合、ＤＭＡＣからは応答（Response）が長い時間返ってこないように見える。
【００６８】
従って、ワークメモリ１２へのプリロード処理は、中断（Ｂ２１）によりそれまで送られたデータ（Ｂ１３’）を保持して、単に次のアクセスを待っている状態になるだけで、再開（Ｂ２６）により続きのデータ（Ｂ１２”）が送られて保持することになる。
【００６９】
なお、図４における中断（Ｂ２１）のタイミングとしては、メモリコントローラ４０（調停機構）が演算器１１へのアクセスに切り替えた瞬間になる。このメモリコントローラ４０による切り替え処理は、図６および図７を参照して後述する。
【００７０】
また、ワークメモリ１２へのプリロード実行中にける演算器１１からのメインメモリ５０へのアクセス時の処理は、例えば、プリロード処理の優先度を最も低いものに変更することで実現することができる。
【００７１】
前述したように、スケジューラ６０は常駐ソフトウェアであり、例えば、スケジューラ６０が参照するテーブルとして、予め各処理に対して優先度を設定し、その優先度を基にスケジューラ６０がメモリコントローラ４０を制御して調停処理を行わせる。
【００７２】
具体的に、例えば、演算器１１の処理に対しては固定の優先度を割り当て、また、プリローダの制御処理（メインメモリ５０からワークメモリ１２へのプリロード処理）対しては可変の優先度を割り当てる。
【００７３】
なお、複数の割り込み処理が厳密に同時に発生することは現実的に起こらないため、例えば、ＦＣＦＳ（First Come First Serve）方式を適用して処理を行うことができる。この際に、切り替えられる処理としては、実行中の処理中で最も優先度の低い処理となる。
【００７４】
そして、例えば、割り込み命令によりリアルタイム処理の要求が発生した場合には、リアルタイム処理に対して最高の優先度を設定すると共に、非リアルタイム処理であるプリローダの制御処理に対しては優先度を最も低いものに変更する。
【００７５】
このように、リアルタイム処理および非リアルタイム処理に対して属性を持たせることで、ワークメモリ１２へのプリロード実行中に演算器１１からメインメモリ５０へのアクセスが発生した場合、それらの優先度に従って調停処理を行う。
【００７６】
すなわち、スケジューラ６０がワークメモリ１２のプリロード処理の優先度を演算器１１によるメインメモリ５０へのアクセス処理の優先度よりも下げ、その優先度に従ってメモリコントローラ４０がアクセス順位を決定することで、プリロード処理を中断する。
【００７７】
ここで、優先度設定の具体例を説明する。まず、携帯電話におけるリアルタイム処理と非リアルタイム処理のそれぞれに対して、優先度を割り当てる例を示す。なお、優先度は、「高」，「中」，「低」と設定可能なものとする。
【００７８】
また、リアルタイム処理として通話処理およびＧＵＩ（Graphical User Interface）を例とし、また、非リアルタイム処理としてブラウザによるデータ通信を例として説明する。
【００７９】
ある携帯電話網を使ったインターネット接続サービスにおいて、音声データのダウンロードをバックグラウンドで行いながら、メールの文面を作成している場合、ユーザにとって重要なのは、文字の入力の反応が遅れないことである。
【００８０】
また、いかなる状況においても、通話処理が遅れることは許されない。そこで、例えば、通話処理の優先度を「高」、文字入力の優先度を「中」、そして、音声データのダウンロードを「低」となるように予め設定する。
【００８１】
そして、ユーザが、音声データのダウンロード実行中に、文字入力処理を開始するとコンテキストスイッチが発生することがあり、その場合、ダウンロード処理を行っているＤＭＡＣの制御が中断され、文字入力の処理が実行される。また、このときに電話がかかってくると、文字入力の処理が中断され、通話処理が実行されることになる。
【００８２】
なお、上述した各処理、優先度および対象となる装置等は、単なる例であり様々なものに対して幅広く適用することができるのはいうまでもない。
【００８３】
以上のように、本第１実施例の半導体集積回路が適用される演算処理システムは、高スループットでリアルタイム応答を実現することが可能になる。
【００８４】
図５は図３の演算処理システムの動作を説明するための図（その２）であり、メインメモリからワークメモリへデータをプリロード中に、演算器からメインメモリへのアクセスが発生した場合のリモートコントローラによる調停動作を説明するためのものである。
【００８５】
図５に示されるように、まず、オペレーションＳＯＡにおいて、例えば、割り込み命令等により、演算器１１からメインメモリ５０へのアクセスが発生すると、オペレーションＳＯＢに進んで、ワークメモリ１２へのプリロードを実行中かどうか判別する。
【００８６】
オペレーションＳＯＢにおいて、メインメモリ５０からワークメモリ１２へのプリロードが実行中であると判別すると、オペレーションＳＯＣに進んで、スケジューラ６０がプリローダ制御（命令）の優先度を下げる。
【００８７】
次に、オペレーションＳＯＤに進んで、調停機構（メモリコントローラ５０）が調停を行い、優先度が下げられた実行中のワークメモリ１２へのプリロードを中断する。さらに、オペレーションＳＯＥに進んで、メモリアクセスを演算器１１からのアクセスに切り替える。これにより、演算器１１は、メインメモリ５０に対するアクセスを行う。
【００８８】
そして、オペレーションＳＯＦに進んで、演算器１１によるメインメモリ５０に対するアクセス処理が終了すると、オペレーションＳＯＧに進んで、ワークメモリ１２へのプリロードが中断中かどうかを判別する。
【００８９】
すなわち、オペレーションＳＯＧにおいて、メインメモリ５０からワークメモリ１２へのプリロードが中断中であると判別されると、オペレーションＳＯＨに進んで、中断した後のデータからワークメモリ１２へのプリロードを再開してから処理を終了する。
【００９０】
なお、オペレーションＳＯＧにおいて、メインメモリ５０からワークメモリ１２へのプリロードが中断中ではない、すなわち、オペレーションＳＯＤにおけるプリロードの中断より前にワークメモリ１２へのプリロードが完了していれば、そのまま処理を終了する。また、各オペレーションは、ステップでもよい。
【００９１】
図６および図７は図３の演算処理システムにおけるメモリコントローラ４０（調停機構）の動作を説明するための図である。
【００９２】
ここで、図６はメインメモリ５０からのデータをワークメモリ１２へプリロードする状態を示し、また、図７は演算器１１がメインメモリ５０にアクセスする状態を示している。
【００９３】
まず、図６に示されるように、メインメモリ５０からのデータをワークメモリ１２へプリロードするとき、メモリコントローラ４０（調停機構）は、メインメモリ５０からのメモリバス５１をバスネットワーク３０へのメモリバス４２に接続する。
【００９４】
すなわち、メモリコントローラ４０は、経路４０ｂが無効で経路４０ａが有効になるように調停を行い、第１経路５１⇒４０（４０ａ）⇒４２⇒３０⇒３２⇒１５を介してメインメモリ５０からのデータをワークメモリ１２へプリロードする。
【００９５】
一方、図７に示されるように、演算器１１がメインメモリ５０にアクセスするとき、メモリコントローラ４０は、バスネットワーク３０からのメモリバス４１をメインメモリ５０へのメモリバス５１に接続する。
【００９６】
すなわち、メモリコントローラ４０は、経路４０ａが無効で経路４０ｂが有効になるように調停を行い、第２経路１４⇔３１⇔３０⇔４１⇔４０（４０ｂ）⇔５１を介して演算器１１のメインメモリ５０へのアクセスを可能にする。
【００９７】
なお、メインメモリ５０からワークメモリ１２へのプリロード実行中に、演算器１１からメインメモリ５０へのアクセスが発生してプリロード処理が中断した後、演算器１１からメインメモリ５０へのアクセスが完了すると、再び図６の状態に復帰することになる。
【００９８】
また、上記メモリコントローラ４０による調停処理は、図３〜図５を参照して説明したように、ソフトウェアであるスケジューラ６０により制御される。また、このスケジューラ６０による制御は、例えば、プリロード制御の優先度を最も低いものにして処理するのは前述した通りである。
【００９９】
このように、本第１実施例の半導体集積回路が適用される演算処理システム１は、ワークメモリ１２へのプリロード処理中に演算器１１からメインメモリ５０へのアクセスが発生した場合、スケジューラ６０がプリロード処理の優先度を変更するように制御する。
【０１００】
そして、メモリコントローラ４０は、スケジューラ６０による優先度の制御に従って、上述した調停処理を行う。
【０１０１】
また、半導体集積回路(２００)の内部バスとして独立したアクセス経路（第１および第２経路）を持つことで、ワークメモリ１２へのプリロード処理を中断し、演算器１１からメインメモリ５０へのアクセスを数クロックのレイテンシで開始することが可能になる。
【０１０２】
すなわち、演算器１１からメインメモリ５０へのアクセスと、プリローダ２０からメインメインメモリ５０へのアクセスを調停することにより、演算器１１のストールを防いで高スループットを実現することができる。
【０１０３】
具体的に、演算器１１のストールを回避することが可能になるため、数十％程度の性能向上が見込まれ、また、リアルタイム応答が可能になるため、組み込みシステムなどで強く求められる割り込み処理への高速な対応が可能になる。
【０１０４】
例えば、携帯電話などの『ファイルシステム＋ストリームデータ制御』を行う製品の動画コンテンツにおいて、動画の再生を行いながらＵＩ（User Interface）などの割り込み処理を行った場合でも、データの先読みによるＵＩ処理のストールが発生しない。
【０１０５】
これにより、例えば、ワークメモリへのプリドードにより動画の再生処理を止めることなく、ＵＩ処理をリアルタイムで行うように全体の処理を進めることが可能になる。
【０１０６】
図８は第１実施例の半導体集積回路を演算処理システムと識別して示す図である。図８から明らかなように、第１実施例の半導体集積回路２００は、演算処理システム１からメインメモリ５０を除いたものに対応する。
【０１０７】
すなわち、半導体集積回路２００は、演算処理装置１０，プリローダ２０，バスネットワーク３０およびメモリコントローラ４０のハードウェアと、スケジューラ６０のソフトウェアを搭載したＬＳＩ或いは半導体ＩＰとして提供することができる。
【０１０８】
もちろん、本第１実施例の半導体集積回路２００は、演算処理装置１０，プリローダ２０，バスネットワーク３０およびメモリコントローラ４０等を別のＬＳＩとして提供することもできるのはいうまでもない。
【０１０９】
図９は第２実施例の半導体集積回路が適用される演算処理システムを示すブロック図である。
【０１１０】
図９と前述した図３との比較から明らかなように、本第２実施例の半導体集積回路が適用される演算処理システム１’は、図３の演算処理装置１０を、複数の演算処理装置（ＣＰＵコア）１０ａ〜１０ｎを有するマルチプロセサとしている。
【０１１１】
すなわち、演算処理システム１’は、ｎ個の演算処理装置１０ａ〜１０ｎと、これら演算処理装置１０ａ〜１０ｎに共通に使用するプリローダ２０，バスネットワーク３０，メモリコントローラ４０，メインメモリ５０およびスケジューラ６０を有している。
【０１１２】
各演算処理装置１０ａ〜１０ｎは、それぞれ演算器１１ａ〜１１ｎ，ワークメモリ１２ａ〜１２ｎおよびキャッシュメモリ１３ａ〜１３ｎを有する。
【０１１３】
各演算器１１ａ〜１１ｎは、それぞれ演算処理装置１０ａ〜１０ｎの内部システムバス１４ａ〜１４ｎおよびシステムバス３１を介してバスネットワーク３０に接続されている。
【０１１４】
また、各ワークメモリ１２ａ〜１２ｎは、それぞれ演算処理装置１０ａ〜１０ｎの内部メモリバス１５ａ〜１５ｎ、および、メモリバス３２を介してバスネットワーク３０に接続されている。
【０１１５】
なお、前述した図８と同様に、第２実施例の半導体集積回路は、演算処理システム１’からメインメモリ５０を除いたものとしてＬＳＩ或いは半導体ＩＰとして提供することができる。また、第２実施例の半導体集積回路も、演算処理装置１０ａ〜１０ｎ，プリローダ２０，バスネットワーク３０およびメモリコントローラ４０等を別のＬＳＩとして提供することができる。
【０１１６】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
演算器と、
該演算器で処理するデータを一時的に格納する第１メモリと、
プリローダにより第２メモリからのデータを前記第１メモリにプリロードする第１経路と、
前記演算器が前記第２メモリにアクセスする第２経路と、を有し、
前記第１経路および前記第２経路を使用した前記第２メモリとの間のメモリアクセスは、メモリコントローラにより調停され、
前記メモリコントローラは、スケジューラにより制御されることを特徴とする演算処理装置。
【０１１７】
（付記２）
付記１に記載の演算処理装置において、
前記メモリコントローラは、ハードウェアであり、
前記スケジューラは、常駐ソフトウェアであることを特徴とする演算処理装置。
【０１１８】
（付記３）
付記１または２に記載の演算処理装置において、
前記第２メモリは、メインメモリであり、
前記第１メモリは、アプリケーションソフトに従って前記メインメモリからのデータを予めプリロードするワークメモリであることを特徴とする演算処理装置。
【０１１９】
（付記４）
付記３に記載の演算処理装置において、さらに、
前記演算器で処理するデータをキャッシュするキャッシュメモリを有することを特徴とする演算処理装置。
【０１２０】
（付記５）
演算器、および、該演算器で処理するデータを一時的に格納する第１メモリを有する演算処理装置と、
第２メモリからのデータを、第１経路を介して前記第１メモリにプリロードするプリローダと、
前記演算器による第２経路を介した前記第２メモリに対するアクセスと、前記プリローダによる前記第１経路を介した前記第２メモリに対するメモリアクセスとの調停を行うメモリコントローラと、
該メモリコントローラを制御するスケジューラと、を有することを特徴とする半導体集積回路。
【０１２１】
（付記６）
付記５に記載の半導体集積回路において、
前記メモリコントローラは、ハードウェアであり、
前記スケジューラは、常駐ソフトウェアであることを特徴とする半導体集積回路。
【０１２２】
（付記７）
付記５または６に記載の半導体集積回路において、
前記第２メモリは、メインメモリであり、
前記第１メモリは、アプリケーションソフトに従って前記メインメモリからのデータを予めプリロードするワークメモリであることを特徴とする半導体集積回路。
【０１２３】
（付記８）
付記７に記載の半導体集積回路において、前記演算処理装置は、さらに、
前記演算器で処理するデータをキャッシュするキャッシュメモリを有することを特徴とする半導体集積回路。
【０１２４】
（付記９）
付記５〜８のいずれか１項に記載の半導体集積回路において、
前記メモリコントローラは、前記プリローダによる前記第２メモリから前記第１メモリに対するプリロード処理の実行中に、前記演算器から前記第２メモリへのアクセスが発生した場合、前記プリロード処理を中断して前記演算器から前記第２メモリへアクセスすることを特徴とする半導体集積回路。
【０１２５】
（付記１０）
付記９に記載の半導体集積回路において、
前記スケジューラは、予め各処理に対して優先度を設定し、該優先度に従ってスケジューラが各処理の割り当てを行い、前記メモリコントローラが調停することを特徴とする半導体集積回路。
【０１２６】
（付記１１）
付記１０に記載の半導体集積回路において、
前記スケジューラは、前記プリロード処理に対して可変の優先度を割り当て、前記プリローダによる前記第２メモリから前記第１メモリに対するプリロード処理の実行中に、前記演算器から前記第２メモリへのアクセスが発生した場合、前記プリロード処理の優先度を最も低いものに変更することを特徴とする半導体集積回路。
【０１２７】
（付記１２）
付記５〜１１のいずれか１項に記載の半導体集積回路において、
前記第１経路および前記第２経路は、前記メモリコントローラと前記ワークメモリおよび前記演算器との間で独立したバスであることを特徴とする半導体集積回路。
【０１２８】
（付記１３）
付記５〜１２のいずれか１項に記載の半導体集積回路において、さらに、
前記メモリコントローラと前記演算処理装置との間に設けられたバスネットワークを有することを特徴とする半導体集積回路。
【０１２９】
（付記１４）
付記５〜１３のいずれか１項に記載の半導体集積回路において、
前記演算処理装置を複数有し、
前記１つのプリローダにより前記各演算処理装置の前記第１メモリに対するプリロード処理を制御することを特徴とする半導体集積回路。
【０１３０】
（付記１５）
演算器、および、該演算器で処理するデータを演算処理装置内の第１メモリに一時的に格納する工程と、
第２メモリと、
プリローダが前記第２メモリからのデータを、第１経路を介して前記第１メモリにプリロードする工程と、
メモリコントローラが前記演算器による第２経路を介した前記第２メモリに対するアクセスと、前記プリローダによる前記第１経路を介した前記第２メモリに対するメモリアクセスとの調停を行う工程と、
スケジューラが該メモリコントローラを制御する工程と、を有する演算処理システムにおける演算処理方法であって、
前記プリローダが前記第２メモリから前記第１メモリに対してプリロードする際に、前記演算器から前記第２メモリへのアクセスが発生した場合、前記プリロードする工程を中断して前記演算器から前記第２メモリへアクセスすることを特徴とする演算処理方法。
【符号の説明】
【０１３１】
１，１’，１０１    演算処理システム
２    アプリケーションソフト（アプリソフト）
１０，１１０    演算処理装置（プロセッサ：ＣＰＵ）
１０ａ〜１０ｎ    ＣＰＵコア
１１，１１ａ〜１１ｎ；１１１    演算器
１２，１２ａ〜１２ｎ；１１２    ワークメモリ
１３，１３ａ〜１３ｎ；１１３    キャッシュメモリ
２０，１２０    プリローダ
３０，１３０    バスネットワーク
４０，１４０    メモリコントローラ
５０，１５０    メインメモリ
６０    スケジューラ
２００    半導体集積回路
【図１】
2011076232.tif 000003
【図２】
2011076232.tif 000004
【図３】
2011076232.tif 000005
【図４】
2011076232.tif 000006
【図５】
2011076232.tif 000007
【図６】
2011076232.tif 000008
【図７】
2011076232.tif 000009
【図８】
2011076232.tif 000010
【図９】
2011076232.tif 000011