(57)【要約】【課題】ＣＰＵ又はＤＭＡ制御装置の一方にメモリアクセスが偏ることを能動的に抑制することができるデータ処理システムを提供することにある。【解決手段】メモリへのアクセスにおいてＣＰＵ又はＤＭＡ制御装置の間でバス占有権を調停するバス調停回路は、前記ＣＰＵからの前記メモリに対するアクセスによるバス負荷を定期的に計測してそのバス負荷情報を前記ＤＭＡ制御装置へ送信する。前記ＤＭＡ制御装置は、バス調停装置から受取ったバス負荷情報に基づいて、データ転送制御のデータ転送量を少なくする制御を行う。これによれば、定期的に計測されたバス負荷に従ってＤＭＡ制御装置によるバス占有時間を動的に変更することができる。【選択図】図１
2010015275.tif 000002
【特許請求の範囲】
【請求項１】
データ転送量およびデータ転送方法が設定されるレジスタを有するＤＭＡ制御装置と、メモリへのアクセスにおいてＣＰＵ又は前記ＤＭＡ制御装置の間でバス占有権を調停するバス調停回路とを有するデータ処理システムにおいて、
前記バス調停装置は、前記ＣＰＵからの前記メモリに対するアクセスによるバス負荷を定期的に計測してそのバス負荷情報を前記ＤＭＡ制御装置へ送信するバス負荷監視回路を有し、
前記ＤＭＡ制御装置は、前記バス負荷監視回路から受取ったバス負荷情報が所定のバス負荷を超えているときデータ転送制御によるデータ転送量を少なくする制御を行う、データ処理システム。
【請求項２】
前記データ転送制御によるデータ転送量を少なくする制御は、サイクルスチールモードにおける1回のデータ転送量を減らす制御である、請求項1記載のデータ処理システム。
【請求項３】
前記データ転送制御によるデータ転送量を少なくする制御は、データ転送制御モードをバーストモードからサイクルスチールモードに変更する制御である、請求項1記載のデータ処理システム。
【請求項４】
前記バス負荷監視回路は、一定時間における前記ＣＰＵからのメモリアクセス回数を計測し、アクセス回数が閾値以上かどうかを表す信号を前記バス負荷情報として求める、請求項1項記載のデータ処理システム。
【請求項５】
前記バス調停装置は、前記ＣＰＵからのメモリアクセス要求を一時的に蓄積し、空き記憶容量を前記バス監視回路へ送信するバッファを更に有し、
前記バス負荷監視回路は、一定時間における前記バッファのバッファ空き容量の積分値が閾値以上か否かを表す情報を前記バス負荷情報として前記ＤＭＡ制御装置へ送信する、請求項1記載のデータ処理システム。
【請求項６】
前記ＣＰＵは、キャッシュミスヒットが発生した際にキャッシュミス信号をバス調停回路へ送信するキャッシュメモリを有し、
前記バス負荷監視回路は、一定時間におけるキャッシュミス信号発生回数を計測し、キャッシュミス信号発生回数が閾値以上かどうかを表す情報を前記バス負荷情報として前記ＤＭＡ制御装置へ送信する、請求項1記載のデータ処理システム。
【請求項７】
前記ＣＰＵは実行すべき命令のアドレスを示すプログラムカウンタの値をバス調停回路へ出力し、
前記バス負荷監視回路は、前記ＣＰＵからのメモリアクセス回数の少ないルーチンまたはタスクにおけるプログラムカウンタの開始値および範囲をルックアップテーブルとして記憶し、入力した前記プログラムカウンタの値がテーブル内にヒットしたかどうかに関する情報を前記バス負荷として前記ＤＭＡ制御装置へ送信する、請求項1記載のデータ処理システム。
【請求項８】
請求項４記載のデータ処理システムをターゲット機器としてそのプログラムの開発を支援するプログラム開発システムであって、
前記ターゲット機器上で動作するプログラムのソースコードを実行形式に変換するビルダと、
該プログラム実行形式を前記ターゲット機器上へ転送するアップローダとを有し、
前記ビルダは、ターゲット機器を模擬しプログラムを実行するシミュレータと、
前記シミュレータによる実行結果に基づいて、前記ターゲット機器におけるメモリアクセス回数を複数回計測し、前記ターゲット機器のバス負荷監視回路におけるＣＰＵからのメモリアクセス回数の閾値および計測周期を、プログラム実行時間が最短になるように求めるプロファイラと、を有し、
前記アップローダは、前記プロファイラで求められた前記ＣＰＵからのメモリアクセス回数の閾値および計測周期をプログラムと一緒に出力する、プログラム開発システム。
【請求項９】
請求項５記載のデータ処理システムをターゲット機器としてそのプログラムの開発を支援するプログラム開発システムであって、
前記ターゲット機器上で動作するプログラムのソースコードを実行形式に変換するビルダと、
該プログラム実行形式を前記ターゲット機器上へ転送するアップローダとを有し、
前記ビルダは、ターゲット機器を模擬しプログラムを実行するシミュレータと、
前記シミュレータによる実行結果に基づいて、前記ターゲット機器におけるメモリアクセス回数を複数回計測し、前記ターゲット機器のバス負荷監視回路におけるバッファ空き容量の積分値の閾値および計測周期を、プログラム実行時間が最短になるように求めるプロファイラと、を有し、
前記アップローダは、前記プロファイラで求められた前記バッファ空き容量の積分値の閾値および計測周期をプログラムと一緒に出力する、プログラム開発システム。
【請求項１０】
請求項６記載のデータ処理システムをターゲット機器としてそのプログラムの開発を支援するプログラム開発システムであって、
前記ターゲット機器上で動作するプログラムのソースコードを実行形式に変換するビルダと、
該プログラム実行形式を前記ターゲット機器上へ転送するアップローダとを有し、
前記ビルダは、ターゲット機器を模擬しプログラムを実行するシミュレータと、
前記シミュレータによる実行結果に基づいて、前記ターゲット機器におけるメモリアクセス回数を複数回計測し、前記ターゲット機器のバス負荷監視回路におけるキャッシュミス回数の閾値および計測周期を、プログラム実行時間が最短になるように求めるプロファイラと、を有し、
前記アップローダは、前記プロファイラで求められた前記キャッシュミス回数の閾値および計測周期をプログラムと一緒に出力する、プログラム開発システム。
【請求項１１】
請求項７記載のデータ処理システムをターゲット機器としてそのプログラムの開発を支援するプログラム開発システムであって、
前記ターゲット機器上で動作するプログラムのソースコードを実行形式に変換するビルダと、
該プログラム実行形式を前記ターゲット機器上へ転送するアップローダとを有し、
前記ビルダは、ターゲット機器を模擬しプログラムを実行するシミュレータと、
前記シミュレータによる実行結果に基づいて、前記ターゲット機器におけるメモリアクセス回数を複数回計測し、前記ターゲット機器のバス負荷監視回路におけるＣＰＵからのメモリアクセス回数の少ないルーチンまたはタスクにおけるプログラムカウンタの開始値および範囲を示すルックアップテーブルを求めるプロファイラと、を有し、
前記アップローダは、前記プロファイラで求められたルックアップテーブルをプログラムと一緒に出力するプログラム開発システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡ(Direct Memory Access)制御装置、特にＳｏＣ(System on a Chip)においてＣＰＵなどの演算処理装置を介さずにメモリ間またはメモリないし外部機器間でデータを直接転送する制御装置に関するものである。
【背景技術】
【０００２】
近年、情報機器の高性能化、多機能化に伴い、これらの機器に搭載されるＳｏＣ (Systems on a Chip)が処理するデータ量も増大している。このような、増大するデータ処理に対応するため、近年のＳｏＣでは、ディスプレイ制御やＣＤ・ＨＤＤ制御など、外部周辺機器制御部やＣＰＵなど複数のデータ処理部が並列にデータ処理を行うため、一個以上のバスにぶら下がるような形で複数のデータ処理部が接続されている。また、ＣＰＵの演算処理におけるデータやプログラム、ディスプレイ表示データなどの一時記憶を行うため、ＤＲＡＭがＭＣＵ（Memory Controller Unit）を介してバスと接続されている。ＤＲＡＭはデータ処理部毎に置くとコストが高くなるという理由で、ＤＲＡＭとバスとのＩ／Ｆは一つに絞られていることがあり、ＭＣＵにおいて各データ処理部におけるバス占有権の調停を行っている。
【０００３】
一方、ＳｏＣにおいて、ＣＰＵなどの演算処理装置を介さずにメモリ間またはメモリないし外部周辺機器間でデータを直接転送するＤＭＡ制御装置というものがある。ＤＭＡ制御装置もバスに接続されている。ＤＭＡ制御装置におけるデータの転送方法は2種類に分けることができる。1つは、サイクルスチールモードと呼ばれるものであり、1回のデータ転送単位の転送を終了するたびにバスの占有権を他のデータ処理部に渡すというものである。もう１つは、バーストモードと呼ばれるものであり、ＤＭＡ制御装置がいったんバスの占有権を取ると、転送終了条件が満たされるまでバスの占有権を解放せずに転送を続けるというものである。ＤＭＡ制御装置のデータ転送方法、およびサイクルスチールモードにおける1回のデータ転送単位（一単位のデータ転送量）については、ユーザプログラムによりＤＭＡ制御装置内のレジスタを設定することで変更することが可能である。
【０００４】
ＤＭＡ制御装置からのアクセス要求とその他のデータ処理部からのアクセス要求が同一のＤＲＡＭに対し同時に発生した時のアクセス調停方法として、ＤＭＡ制御装置からのアクセス要求に高い優先度を、ＣＰＵからのアクセス要求に、ＤＭＡ制御装置より低い優先度を付け、この優先度に従いアクセス要求を調停する方式がある。この調停方式を用いることにより、ＤＭＡ制御装置からのアクセスを高速化することはできるものの、ＤＭＡ制御装置からのアクセス要求が多い場合には、低優先のＣＰＵからのアクセス要求が長い時間待たされ、結果としてシステム全体の性能が低下する。
【０００５】
また、ＤＲＡＭへのアクセスを行う際には、記憶保持のためのプリチャージ処理やアクセス先アドレス指定処理などが最初に行われるため、その分オーバーヘッド的な時間がかかる。そのため、一回あたりのデータ転送単位を減らすと、オーバーヘッド的な時間が複数回入ることになり、転送効率が低下する。
【０００６】
この問題を解決する発明として動的にデータ転送量を調整するという手段について記載された特許文献１または特許文献２が存在する。特許文献１は、ＤＭＡ制御装置からのＤＲＡＭアクセスによるバス負荷を監視し、その結果によりＣＰＵからのＤＲＡＭアクセスを制限するというものである。一方、特許文献２は、ＤＭＡ制御装置からの一部のＤＲＡＭアクセスによるバス負荷を監視し、その結果によりＤＭＡ制御装置からの他のＤＲＡＭアクセスを制御するというものである。
【０００７】
【特許文献１】特開２００３−２５６３５５号公報
【特許文献２】特開２００３−１７８０２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
一方、ＣＰＵからのＤＲＡＭアクセス回数を低減する装置としてキャッシュメモリが存在する。半導体技術の向上によりキャッシュメモリの記憶容量は年々増えてきているため、キャッシュメモリによりＣＰＵからのＤＲＡＭアクセス回数は年々減り続けており、現状においてＣＰＵからのＤＲＡＭアクセスがＤＭＡ制御装置からのＤＲＡＭアクセスに比べて数分の一である。上記のような状況においてＤＭＡアクセス回数からバス負荷率を検知してＣＰＵアクセスを制限すると、ＤＭＡアクセス回数が多いときにはＣＰＵアクセスが全くできず、処理が滞るという問題がある。
【０００９】
この問題の対策として、ユーザプログラムでＤＭＡ制御装置のレジスタを操作することにより動的にデータ転送量を調整するとことについて検討した。キャッシュメモリが採用されているときは、ＣＰＵがＤＲＡＭへアクセスする前に、ＣＰＵ内の一時記憶装置であるキャッシュメモリ内にアクセス先のデータが入っているかどうかがチェックされ、キャッシュミスした場合にのみＤＲＡＭへのアクセスが行われる。キャッシュミスするかどうかについてはプログラムの実行結果に依存するため、ユーザプログラムから推測することは不可能である。したがって、ユーザプログラムからＤＭＡ制御装置のレジスタを用いて転送量を動的に調整することは難しい。
【００１０】
本発明の目的は、ＣＰＵ又はＤＭＡ制御装置の一方にメモリアクセスが偏ることを能動的に抑制することができるデータ処理システムを提供することにある。
【００１１】
本発明の別の目的は、ＣＰＵ又はＤＭＡ制御装置の一方にメモリアクセスが偏ることを能動的に抑制することができるデータ処理システムのための開発環境を提供することにある。
【００１２】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１４】
すなわち、メモリへのアクセスにおいてＣＰＵ又はＤＭＡ制御装置の間でバス占有権を調停するバス調停回路バス調停装置は、前記ＣＰＵからの前記メモリに対するアクセスによるバス負荷を定期的に計測してそのバス負荷情報を前記ＤＭＡ制御装置へ送信する。前記ＤＭＡ制御装置は、バス調停装置から受取ったバス負荷情報に基づいて、データ転送制御のデータ転送量を少なくする制御を行う。これによれば、定期的に計測されたバス負荷に従ってＤＭＡ制御装置によるバス占有時間を動的に変更することができる。
【発明の効果】
【００１５】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１６】
すなわち、ＣＰＵ又はＤＭＡ制御装置の一方にメモリアクセスが偏ることを能動的に抑制することができる。
【発明を実施するための最良の形態】
【００１７】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１８】
〔１〕本発明に係るデータ処理システムは、データ転送量およびデータ転送方法が設定されるレジスタを有するＤＭＡ制御装置と、メモリへのアクセスにおいてＣＰＵ又は前記ＤＭＡ制御装置の間でバス占有権を調停するバス調停回路とを有する。前記バス調停装置は、前記ＣＰＵからの前記メモリに対するアクセスによるバス負荷を定期的に計測してそのバス負荷情報を前記ＤＭＡ制御装置へ送信するバス負荷監視回路を有する。前記ＤＭＡ制御装置は、前記バス負荷監視回路から受取ったバス負荷情報が所定のバス負荷を超えているときデータ転送制御によるデータ転送量を減らす制御を行う。
【００１９】
ＣＰＵからのメモリアクセスがＤＭＡ制御装置からのメモリアクセスに比べて数分の一になっているという今日の状況を前提として前記ＤＭＡ制御装置によるデータ転送量の制御が行われると、ＣＰＵからのメモリアクセスによるバス負荷が高いときにはＤＭＡ制御装置からのメモリアクセス性能が多少低下する程度であり、必要に応じてＣＰＵからのメモリアクセスが可能になり、また、ＣＰＵからのメモリアクセスによるバス負荷が少ないときにはＤＭＡ制御装置からのメモリアクセス効率が高くなる。
【００２０】
これにより、ＣＰＵ又はＤＭＡ制御装置の一方にメモリアクセスが偏ることを能動的に抑制することができる。したがって、ＣＰＵからのＤＲＡＭアクセス頻度に変動があるプログラムを実行する場合においては全体的な処理の能率を上げることができる。
【００２１】
〔２〕項1のデータ処理システムにおいて、前記データ転送制御によるデータ転送量を少なくする制御は、サイクルスチールモードにおける1回のデータ転送量を減らす制御である。
【００２２】
〔３〕項1のデータ処理システムにおいて、前記データ転送制御によるデータ転送量を少なくする制御は、データ転送制御モードをバーストモードからサイクルスチールモードに変更する制御である。
【００２３】
〔４〕項1のデータ処理システムにおいて、前記バス負荷監視回路は、一定時間における前記ＣＰＵからのメモリアクセス回数を計測し、アクセス回数が閾値以上かどうかを表す信号を前記バス負荷情報として求める。
【００２４】
〔５〕項1のデータ処理システムにおいて、前記バス調停装置は、前記ＣＰＵからのメモリアクセス要求を一時的に蓄積し、空き記憶容量を前記バス監視回路へ送信するバッファを更に有する。このとき、前記バス負荷監視回路は、一定時間における前記バッファのバッファ空き容量の積分値が閾値以上かどうかを表す情報を前記バス負荷情報として前記ＤＭＡ制御装置へ送信する。
【００２５】
〔６〕項1のデータ処理システムにおいて、前記ＣＰＵは、キャッシュミスヒットが発生した際にキャッシュミス信号をバス調停回路へ送信するキャッシュメモリを有する。このとき、前記バス負荷監視回路は、一定時間におけるキャッシュミス信号発生回数を計測し、キャッシュミス信号発生回数が閾値以上かどうかを表す情報を前記バス負荷情報として前記ＤＭＡ制御装置へ送信する。
【００２６】
〔７〕項1のデータ処理システムにおいて、前記ＣＰＵは実行すべき命令のアドレスを示すプログラムカウンタの値をバス調停回路へ出力する。このとき、前記バス負荷監視回路は、前記ＣＰＵからのメモリアクセス回数の少ないルーチンまたはタスクにおけるプログラムカウンタの開始値および範囲をルックアップテーブルとして記憶し、入力した前記プログラムカウンタの値がテーブル内にヒットしたかどうかに関する情報を前記バス負荷として前記ＤＭＡ制御装置へ送信する。
【００２７】
〔８〕項４のデータ処理システムをターゲット機器としてそのプログラムの開発を支援するプログラム開発システムは、前記ターゲット機器上で動作するプログラムのソースコードを実行形式に変換するビルダと、該プログラム実行形式を前記ターゲット機器上へ転送するアップローダとを有する。前記ビルダは、ターゲット機器を模擬しプログラムを実行するシミュレータと、前記シミュレータによる実行結果に基づいて、前記ターゲット機器におけるメモリアクセス回数を複数回計測し、前記ターゲット機器のバス負荷監視回路におけるＣＰＵからメモリアクセス回数の閾値および計測周期を、プログラム実行時間が最短になるように求めるプロファイラと、を有する。前記アップローダは、前記プロファイラで求められた前記ＣＰＵからのメモリアクセス回数の閾値および計測周期をプログラムと一緒に出力する。これにより、項４のデータ処理システムはこのプログラム開発システムで生成されたプログラムの実行に対して適応的なメモリアクセス回数の閾値および計測周期を用いることが可能になる。
【００２８】
〔９〕項５記載のデータ処理システムをターゲット機器としてそのプログラムの開発を支援するプログラム開発システムは、前記ターゲット機器上で動作するプログラムのソースコードを実行形式に変換するビルダと、該プログラム実行形式を前記ターゲット機器上へ転送するアップローダとを有する。前記ビルダは、ターゲット機器を模擬しプログラムを実行するシミュレータと、前記シミュレータによる実行結果に基づいて、前記ターゲット機器におけるメモリアクセス回数を複数回計測し、前記ターゲット機器のバス負荷監視回路におけるバッファ空き容量の積分値の閾値および計測周期を、プログラム実行時間が最短になるように求めるプロファイラと、を有する。前記アップローダは、前記プロファイラで求められた前記バッファ空き容量の積分値の閾値および計測周期をプログラムと一緒に出力する。これにより、項５のデータ処理システムはこのプログラム開発システムで生成されたプログラムの実行に対して適応的なバッファ空き容量の積分値の閾値および計測周期を用いることが可能になる。
【００２９】
〔１０〕項６記載のデータ処理システムをターゲット機器としてそのプログラムの開発を支援するプログラム開発システムは、前記ターゲット機器上で動作するプログラムのソースコードを実行形式に変換するビルダと、該プログラム実行形式を前記ターゲット機器上へ転送するアップローダとを有する。前記ビルダは、ターゲット機器を模擬しプログラムを実行するシミュレータと、前記シミュレータによる実行結果に基づいて、前記ターゲット機器におけるメモリアクセス回数を複数回計測し、前記ターゲット機器のバス負荷監視回路におけるキャッシュミス回数の閾値および計測周期を、プログラム実行時間が最短になるように求めるプロファイラと、を有する。前記アップローダは、前記プロファイラで求められた前記キャッシュミス回数の閾値および計測周期をプログラムと一緒に出力する。これにより、項６のデータ処理システムはこのプログラム開発システムで生成されたプログラムの実行に対して適応的なキャッシュミス回数の閾値および計測周期を用いることが可能になる。
【００３０】
〔１１〕項７記載のデータ処理システムをターゲット機器としてそのプログラムの開発を支援するプログラム開発システムは前記ターゲット機器上で動作するプログラムのソースコードを実行形式に変換するビルダと、該プログラム実行形式を前記ターゲット機器上へ転送するアップローダとを有する。前記ビルダは、ターゲット機器を模擬しプログラムを実行するシミュレータと、前記シミュレータによる実行結果に基づいて、前記ターゲット機器におけるメモリアクセス回数を複数回計測し、前記ターゲット機器のバス負荷監視回路におけるＣＰＵからのメモリアクセス回数の少ないルーチンまたはタスクにおけるプログラムカウンタの開始値および範囲を示すルックアップテーブルを求めるプロファイラと、を有する。前記アップローダは、前記プロファイラで求められたルックアップテーブルをプログラムと一緒に出力する。これにより、項７のデータ処理システムはこのプログラム開発システムで生成されたプログラムの実行に対して適応的なプログラムカウンタの開始値および範囲を示すルックアップテーブルを用いることが可能になる。
【００３１】
２．実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【００３２】
《実施形態１》
図１は本発明の第1の実施形態に係るデータ処理システムが例示される。データ処理システム１はデータプロセッサ若しくはマイクロコンピュータのような1チップであってもよいし、オンボードのマルチチップシステムであってもよい。データ処理システム１はそのプログラム開発システムとしての開発環境２と共に図示され、データ処理システム１を便宜上ターゲット機器１とも称する。
【００３３】
ターゲット機器１はＣＰＵ１１、ＤＭＡ制御装置（ＤＭＡＣ）１２、ＤＲＡＭ１４、バス調停回路１３、プログラムＩ／Ｆ１６、プログラム専用RAM（ランダムアクセスメモリ）１５から成り立っている。ＤＲＡＭ１４は特に制限されないがクロック同期動作されるシンクロナスＤＲＡＭとされる。
【００３４】
ターゲット機器１は、開発環境２からプログラムインタフェース（プログラムＩ／Ｆ）１６を介して受信してプログラム専用RAM１５またはＤＲＡＭ１４にプログラムＳ０５を格納し、ＣＰＵ１１がプログラム専用RAM１５またはＤＲＡＭ１４からプログラムＳ０５を読み込むことによってプログラムＳ０５を実行する。同図においてはプログラム専用RAM１５からプログラムを読み込む。ＣＰＵ１１およびＤＭＡ制御装置１２はバス１７とバス調停回路１３を介してＤＲＡＭ１４と接続している。バス調停回路１３はＣＰＵ１１またはＤＭＡ制御装置１２におけるバス占有権の調停を行うものである。バス１７にはアドレス及びデータバスを想定する。特に図示はしないがキャッシュメモリはＣＰＵ１１のブロックに含まれるものと理解された。
【００３５】
開発環境２はホストＰＣ（パーソナルコンピュータ）２５にＯＳ（オペレーティングシステム）２４が搭載されており、ＯＳ２４上で動作するビルダ２２とアップローダ２３、そしてビルダ２２によって実行形式になるプログラム２１から成り立っている。プログラム２１はターゲット機器１上で動作するプログラムＳ０５に対応するソースプログラムのことを指し、ビルダ２２によって実行形式のプログラムＳ０５に変換され、アップローダ２３によってターゲット機器１へ転送される。ターゲット機器１はプログラムＩ／Ｆ１６を介して、アップローダ２３によって転送されたプログラムＳ０５をプログラム専用RAM１５またはＤＲＡＭ１４へ格納する。
【００３６】
本実施形態は、バス調停回路１３がバス負荷監視回路１３１を有することを特徴としている。バス負荷監視回路１３１は、ＣＰＵ１１からＤＲＡＭアクセス回数によるバス負荷を監視し、データ転送量を変更するか否かに関する信号Ｓ０３をＤＭＡ制御装置１２へ送信する。ＤＭＡ制御装置１２は、データ転送量を指定するレジスタを有し、単位時間あたりのアクセス回数によってデータ転送量に関する値をレジスタへ設定する。レジスタの設定項目は、仮に３２バイトをＣ１、６４バイトをＣ２、３２バイト／６４バイト自動切換をＣ３とする。
【００３７】
図２はＤＭＡ制御装置１２の詳細図である。ＤＭＡ制御装置１２は、各種レジスタ類１２４、レジスタ制御回路１２１、各種制御回路１２２、バスＩ/Ｆ１２３から構成されている。各種レジスタ類１２４は、ＤＭＡ制御装置１２の動作設定に関する情報を蓄積するものである。レジスタ制御回路１２１は、各種レジスタ類１２４内の情報を読み込んだり書き込んだりするものである。各種制御回路１２２はＤＭＡ制御装置１２の挙動を制御するものであり、ＤＭＡアクセス要求Ｓ０２の優先順位を決める要求優先制御部、ＤＭＡ転送の起動を開始したり終了したりする起動制御部、ＤＭＡ転送回数をカウントしたりリセットしたりする回数制御部などが含まれる。
【００３８】
本発明においては、ＤＭＡ転送サイズ指定要求を受けてレジスタ制御回路１２１が各種レジスタ類１２４へＤＭＡ転送サイズ指定に関する情報を書き込む。各種制御回路１２２はＤＭＡ転送要求に従って各種レジスタ類１２４の内容やバス１７からの各種信号を読み取り、バスＩ／Ｆ１２３を介してバスへＤＭＡアクセス要求Ｓ０２を各デバイスへ送信する。
【００３９】
図３は各種レジスタ類１２４の詳細図である。各種レジスタ類１２４には、ＤＭＡの転送モードおよび転送サイズなどに関する設定情報を格納するＤＭＡ制御レジスタ１２４１、ＤＭＡ転送によって転送されるデータのアドレスおよび転送先のアドレスを格納するＤＭＡ転送元／転送先設定レジスタ１２４２、ＤＭＡ転送時におけるチャネルの優先順位やＤＭＡの転送状態を格納するＤＭＡ操作レジスタ１２４３、USB（ユニバーサル・シリアル・バス）やSCＩ／Ｆ（シリアル・コミュニケーション・インタフェース）などの外部デバイスに対してＤＭＡ転送を行う際に転送要求元ないし転送要求先を指定するＤＭＡ拡張リソースレジスタ１２４４、ＤＭＡ転送回数を指定するＤＭＡ転送回数レジスタ１２４５から成り立っている。ＤＭＡ制御レジスタ１２４１には、ＤＭＡ転送サイズ指定ビット１２４１１、ＤＭＡ転送モード指定ビット１２４１２、その他の設定ビット１２４１５、予約ビット１２４１６などから構成されている。ＤＭＡ転送サイズ指定ビットを変更することにより、サイクルスチールモードにおける転送サイズ候補のうち１つを選択することが可能である。また、ＤＭＡ転送モード指定ビットを変更することにより、転送モードをサイクルスチールモードまたはバーストモードのいずれか１つを選択することが可能である。
【００４０】
本発明においては、ＤＭＡ制御レジスタ１２４１においてＤＭＡ転送モード指定ビット１２４１２やＤＭＡ転送サイズ指定ビット１２４１１の他に、ＤＭＡ転送モード自動切換ビット１２４１４やＤＭＡ転送サイズ自動切換ビット１２４１３を有することを特徴とする。ＤＭＡ転送モード自動切換ビット１２４１４を１にすることにより、レジスタ書込内容Ｓ０９で指定するＤＭＡ転送モードの代わりに、ＤＭＡ転送モード指定要求Ｓ３３の指定したＤＭＡ転送モードの値を使用する（これについては図２１を参照して後述する）。また、ＤＭＡ転送サイズ自動切換ビット１２４１３を１にすることにより、レジスタ書込内容Ｓ０９で指定するＤＭＡ転送サイズの代わりに、ＤＭＡ転送サイズ指定要求Ｓ０３の指定したＤＭＡ転送サイズの値を使用する。
【００４１】
また、レジスタ制御回路１２１がＤＭＡ転送サイズ指定要求Ｓ０３を受けて、ＤＭＡ転送サイズ指定ビット１２４１１を含むレジスタ書込内容をＤＭＡ制御レジスタ１２４１にレジスタ制御回路１２１が書き込んだ結果、ＤＭＡ転送サイズ指定ビット１２４１１に変更後の値が書き込まれる。その後、各種制御回路１２２が各種レジスタ類１２４からレジスタ内容を読み込み、その値からＤＭＡ転送サイズ指定ビット１２４１１を読み込むことで、サイクルスチールモードにおいて転送サイズ分だけのデータをＤＭＡ転送する。
【００４２】
図４はレジスタ制御回路１２１の詳細図である。レジスタ制御回路１２１は従来のレジスタ制御回路１２１２に加えて、レジスタ書込内容生成部１２１１、レジスタ書込内容Ｓ０７を各設定内容に分解するＤＥＭＵＸ（デマルチプレクサ）回路１２１３、各設定内容を合成するＭＵＸ（マルチプレクサ）回路１２１４から成り立っている。
【００４３】
本発明においては、従来のレジスタ制御回路１２１２によってレジスタ書込内容Ｓ０７が生成されると、レジスタ制御回路１２１はＤＥＭＵＸ回路１２１３によってレジスタ書込内容Ｓ０７を各設定内容に分解する。レジスタ書込内容生成部１２１１は、ＤＭＡ転送サイズ指定要求Ｓ０３と、各設定内容のうちＤＭＡ転送サイズ指定ビットＳ０７１から、新規のＤＭＡ転送サイズ指定ビットを生成する。
【００４４】
レジスタ書込内容生成部は、ＤＭＡ転送サイズ指定要求Ｓ０３が入力されなかった場合、新規のＤＭＡ転送サイズ指定ビットとしてＤＥＭＵＸから分解されたＤＭＡ転送サイズ指定ビットＳ０７１を出力する。もしＤＭＡ転送サイズ指定要求Ｓ０３が入力された場合、ＤＭＡ転送サイズ指定要求Ｓ０３の内容からＤＭＡの転送サイズを判断し、レジスタに書き込むべきＤＭＡ転送サイズ指定ビットを設定、新規のＤＭＡ転送サイズ指定ビットとして出力する。ＭＵＸ回路１２１４は新規のＤＭＡ転送サイズ指定ビットと、ＤＥＭＵＸにより分解されたその他の各設定内容を合成し、レジスタ書込内容Ｓ０９として各種レジスタ類１２４に書き込む。
【００４５】
図５はバス調停回路１３の詳細図である。
【００４６】
ＤＭＡ制御装置１２からＤＲＡＭ１４へのアクセス要求（以下ＤＭＡアクセス要求Ｓ０２と称す）およびＣＰＵ１１からＤＲＡＭ１４へのアクセス要求（以下ＣＰＵアクセス要求Ｓ０１と称す）は、それぞれ専用のキューバッファ１３２ないし１３３に蓄積される。優先順位判定回路１３４は、キューバッファ１３２ないし１３３から出力された各アクセス要求Ｓ０１ないしＳ０２から選択信号Ｓ１３を出力する。ここでいう選択信号Ｓ１３は、ＤＭＡアクセス要求Ｓ０２とＣＰＵアクセス要求Ｓ０１のうちどちらを優先して出力するかを示す。セレクタ１３５は選択信号Ｓ１３に従って、ＤＭＡアクセス要求Ｓ０２またはＣＰＵアクセス要求Ｓ０１のうちどちらかを出力する。
【００４７】
本発明においては、バス調停回路１３はバス負荷監視回路１３１を有することを特徴とする。バス負荷監視回路１３１は、クロック信号Ｓ１２とＣＰＵアクセス要求Ｓ０１から、ＤＭＡ転送サイズ指定要求Ｓ０３を出力する。
【００４８】
図６はバス負荷監視回路１３１の詳細図である。カウンタ１３１０２はクロック信号Ｓ１２が1クロック周期経過すると値を１インクリメントする。条件付カウンタ１３１０１はクロック信号が1クロック周期経過し、かつＣＰＵアクセス要求Ｓ０１を検出すると値を1インクリメントする。周期格納メモリ１３１０７は、ＣＰＵアクセス計測周期の値Ｓ１９を格納する。周期格納メモリの値Ｓ１９は、開発環境２によって生成され、開発環境２におけるアップローダ２３によってプログラムＳ０５と共に送信され、プログラムＩ／Ｆ１６を介してバス調停回路１３内のバス負荷監視回路１３１へ転送される。比較器１３１０４はカウンタの値Ｓ１５と周期格納メモリの値Ｓ１９を比較し、カウンタの値Ｓ１５がＣＰＵアクセス計測周期Ｓ１９以上になればＣＰＵアクセス周期信号Ｓ１７を出力し、条件付カウンタ１３１０１およびカウンタ１３１０２の値をリセットする。こうすることで、カウンタ１３１０２によってＣＰＵアクセス計測周期を計測し、条件付カウンタ１３１０１によってＣＰＵアクセス計測周期内におけるＣＰＵアクセス要求が検出された時間Ｓ１４を計測することができる。比較器１３１０３は、ＣＰＵアクセス要求が検出された時間Ｓ１４が閾値Ｓ１８より小さければ、ＣＰＵアクセス要求Ｓ０１が少ないと判定し、ＣＰＵアクセス要求Ｓ０１が少ないときのＤＭＡ転送サイズ指定要求Ｓ１６、たとえば０／１信号における１を出力する。サンプル＆ホールド回路１３１０５は、ＣＰＵアクセス計測周期の信号Ｓ１７を読み取り、ＤＭＡ転送サイズ指定要求Ｓ１６の値を次のＣＰＵアクセス計測周期分だけ保持して出力する。ここでＤＭＡ転送サイズ指定要求Ｓ１６は、０がＤＭＡ転送サイズ32バイト、１がＤＭＡ転送サイズ64バイトとする。閾値の値Ｓ１８は、開発環境２によって生成され、アップローダ２３によってプログラムＳ０５と共に送信され、プログラムＩ／Ｆ１６を介してバス調停回路１３内のバス負荷監視回路１３１へ転送される。
【００４９】
図１８はビルダ２２の詳細図、図１９はバス負荷監視回路１３１におけるＣＰＵからのＤＲＡＭアクセス回数の閾値Ｓ１８および計測周期Ｓ１９のビルダ２２による計算処理フローである。ビルダ２２は、プログラム２１をC言語やJava（登録商標）言語などの各種言語から機械語へ変換するコンパイラ２２１、コンパイラ２２１によって機械語へ変換されたものを接続させて実行形式にするリンカ２２２、リンカ２２２の内容をＰＣ２５上で擬似的に実行するシミュレータ２２３、シミュレータ２２３上のプログラム実行結果からＣＰＵアクセス負荷を計測するプロファイラ２２４から成り立っている。ここで、シミュレータ２２３内にはターゲット機器１と同様のキャッシュメモリ１１２を模擬する機能があり、プロファイラ２２４はシミュレータ２２３上のプログラム実行時におけるキャッシュミス発生回数をカウント可能であることを前提する。
【００５０】
ビルダ２２は、まずプログラム２１をコンパイラ２２１でコンパイルし（Ｆ０６）、リンカ２２２でリンクすることによりプログラムの実行形式を仮に作成する（Ｆ０７）。次にシミュレータ２２３でプログラムの実行形式を用いてプログラムを実行する。プロファイラ２２４はプログラムにおけるキャッシュミス回数およびＤＭＡからのＤＲＡＭアクセスのバスサイクル間隔を計測する（Ｆ１０、Ｆ１１）。図中LPで参照されるシンボルはそれによって挟まれた処理（F10）が複数回繰り返されることを意味する。ＤＭＡからのＤＲＡＭアクセスのバスサイクル間隔については、ＤＭＡ制御装置１２のレジスタにより一定バスサイクル間隔にアクセスするとプログラムによって設定された場合（Ｆ０８）、ＤＭＡからのＤＲＡＭアクセスのバスサイクル間隔をレジスタ設定から求める（Ｆ０９）。プロファイラ２２４はＤＭＡからのＤＲＡＭアクセスの時間間隔を、ＣＰＵからのＤＲＡＭアクセス回数の計測周期Ｓ１９（dT）とする（Ｆ１２）。
【００５１】
またプロファイラ２２４は、ＤＲＡＭアクセスによるレイテンシを除いたプログラム実行バスサイクルTを計測し（Ｆ１０）、複数回のキャッシュミス回数から平均値を求めＣＰＵアクセス要求の数Nとする（Ｆ１３）。プロファイラ２２４はＣＰＵからのＤＲＡＭアクセス回数の閾値nを下記の式により計算する（Ｆ１４）。
n=ceil(N×dT/T)  (N＜T−T/dT)
n=dT−1        (N≧T−T/dT)
ここで、関数ceil (x)は、xの小数点切り上げ関数とする。n=0のときは完全にＣＰＵ優先、n=dTのときは完全にＤＭＡ優先になってしまい、ＤＭＡ転送サイズ切り替えの意味がなくなってしまうため、1≦n≦dT-1とする。
【００５２】
コンパイラ２２１はＣＰＵ１１からのＤＲＡＭアクセス回数の閾値Ｓ１８および計測周期Ｓ１９、閾値Ｓ１８および計測周期Ｓ１９をバス負荷監視回路１３１へ転送するルーチンの書かれたソースファイルをコンパイルし、リンカ２２２はルックアップテーブルを他のルーチンとリンクし、実行ファイルを作成する。
【００５３】
以上のようにバス負荷監視回路１３１におけるＣＰＵ１１からのＤＲＡＭアクセス回数の閾値Ｓ１８および計測周期Ｓ１９をビルダ２２によって計算しターゲット機器１へ転送することにより、プログラムにおけるＣＰＵ１１からのＤＲＡＭアクセスの回数によってＣＰＵ優先にするかＤＭＡＣ優先にするかを決めることができる。
【００５４】
なお、基本的にＣＰＵ１１からのＤＲＡＭアクセス回数はＤＭＡＣ１２からのＤＲＡＭアクセス回数より少ないので、ＣＰＵ１１からのＤＲＡＭアクセス回数の閾値Ｓ１８を1としてもよい。
【００５５】
図２６はＤＲＡＭへのアクセス要求Ｓ０４の詳細図であり、ＤＭＡアクセス要求Ｓ０２もＣＰＵアクセス要求Ｓ０１もこれに該当する。アクセス要求Ｓ０４の内訳は公知のものと同様であり、アクセス要求元識別子Ｓ０４１、アクセス先メモリアドレスＳ０４２、アクセスサイズＳ０４３、リード／ライトの区別Ｓ０４４から成り立っており、リード／ライトの区別Ｓ０４４がライトのときは書き込みデータＳ０４５も含むものとする。バス負荷監視回路１３１においては、このアクセス要求データＳ０１が送られてきたかどうかを判別してバス負荷を計測する。
【００５６】
図２７はＤＲＡＭ１４の第1の動作タイミングチャートである。上段は従来の公知技術による転送サイズ32バイト固定時におけるＤＲＡＭ１４の動作タイミングチャートＴ０１を、下段は本発明による転送サイズ自動切換時におけるＤＲＡＭ１４の動作タイミングチャートＴ０２を、それぞれ示している。図においてHDはＤＲＡＭ１４アクセスのためのローアドレスの設定等に要する初期動作を意味し、ＤＭＡ32BはＤＭＡＣによる32バイトサイクルスチールモードによるＤＲＡＭ１４のメモリ動作、ＤＭＡ64BはＤＭＡＣによる64バイトサイクルスチールモードによるＤＲＡＭ１４のメモリ動作を意味する。
【００５７】
HDはＤＲＡＭ１４アクセスにおけるオーバーヘッド時間Ｔ０３を、ＤＭＡ32Bは32バイトアクセスにかかる時間Ｔ０４を、ＤＭＡ64Bは64バイトアクセスにかかる時間Ｔ０５を、それぞれ示している。本発明におけるＤＭＡ転送サイズの初期値は32バイトとする。
【００５８】
本発明の方の下段のタイムチャートにおいては、ＣＰＵアクセス計測期間Ｔ１０においてＣＰＵアクセスが少ないことを確認した後、ＤＭＡ転送量切換タイミングＴ０６からＤＭＡ転送量を64バイトに増やす。ＤＭＡデータの転送時間自体は32バイト固定に比べて2倍かかるものの、HDによるオーバーヘッド時間が32バイトアクセス時も64バイトアクセス時も等しいため、32バイトアクセスを4回行ったときと64バイトアクセスを2回行ったときでは64バイトアクセスのほうがオーバーヘッド時間分だけアクセス時間を短縮できる。
【００５９】
図２８はＤＲＡＭ１４の第２の動作タイミングチャートである。上段は従来の公知技術による転送サイズ64バイト固定時におけるＤＲＡＭ１４のタイムチャートＴ１６を、下段は本発明による転送サイズ自動切換時におけるＤＲＡＭ１４のタイムチャートＴ０２を、それぞれ示している。本発明におけるＤＭＡ転送サイズの初期値は64バイトとする。図においてＣＰＵはＣＰＵによるＤＲＡＭ14のメモリ動作を意味し、HD、ＤＭＡ32B、ＤＭＡ64Bの意味は図２７と同じである。
【００６０】
本発明の方の下段のタイムチャートにおいては、ＣＰＵアクセス計測期間Ｔ１０においてＣＰＵアクセスが多いことを確認した後、ＤＭＡ転送量切換タイミングＴ０６からＤＭＡ転送量を32バイトに減らす。64バイト固定時においてＤＭＡアクセスが完了しない分だけＣＰＵアクセスが遅れるのに対し、本発明においてはＤＭＡアクセスの時間がオーバーヘッド時間と32バイトアクセス時間との和になっている。64バイトアクセス時間から32バイトアクセス時間を引いた値分だけＣＰＵアクセスを早く行うことができる。
【００６１】
《実施形態２》
図７は本発明の第２の実施形態における、バス調停回路１３の詳細図である。本発明においては、第１の実施形態とはバス負荷監視回路１３１におけるバス監視方式が相違される。ＣＰＵアクセス要求側のキューバッファ１３３はバッファ空き容量Ｓ２０を出力し、バス負荷監視回路１３１はクロック信号Ｓ１２とバッファ空き容量Ｓ２０からＤＭＡ転送サイズ指定要求Ｓ０３を出力する。バス負荷監視回路１３１はＣＰＵアクセス要求Ｓ０１の代わりに、ＣＰＵアクセス要求Ｓ０１を蓄積するキューバッファ１３３の空き容量Ｓ２０を用いることで、ＣＰＵアクセスに関するバス負荷を監視している。例えばキューバッファ１３３のライトポインタとリードポインタは空（記憶データ無し）の状態で値が一致され、書き込み毎にライトポインタがインクリメントされ、読出し毎にリードポインタがインクリメントされ、リードポインタはライトポインタの値を追い抜くことはないとすると、前記バッファ空き容量Ｓ２０はライトポインタの値に対するリードポインタの値の差になる。
【００６２】
図８は図７のバス負荷監視回路１３１の詳細図である。積分器１３１０８はＣＰＵアクセス計測周期Ｓ２３の間だけバッファ空き容量Ｓ２０を積分する。比較器１３１０３は、バッファ空き容量の時間積分値Ｓ２１が閾値Ｓ２２より大きければＣＰＵアクセス要求Ｓ０１が少ないと判定し、ＣＰＵアクセス要求Ｓ０１が少ないときのＤＭＡ転送サイズ指定要求Ｓ１６、たとえば０／１信号における１を出力する。サンプル＆ホールド回路１３１０５は、ＣＰＵアクセス周期の信号Ｓ１７を読み取り、ＤＭＡ転送サイズ指定要求の値Ｓ１６を次のＣＰＵアクセス計測周期Ｓ２３分だけ保持して出力する。
【００６３】
なお、バス負荷監視回路１３１におけるバッファ空き容量時間積分値の計測間隔Ｓ２３のビルダ２２による計算処理については、実施形態１におけるＣＰＵからのＤＲＡＭアクセス回数の計測周期Ｓ１９の計算と同じであるが、バッファ空き容量時間積分値の閾値Ｓ２２（n）については下記の計算式で求めるものとする。
n=dtx - dT  (dT＜dtx＜M(dT+1))
ここで、dtxはＣＰＵからのＤＲＡＭアクセスの最長バスサイクル数として希望する値、Mはバッファ最大容量とする。n=0のときは完全にＣＰＵ優先、n=MdTのときは完全にＤＭＡ優先になってしまい、ＤＭＡ転送サイズ切り替えの意味がなくなってしまうため、1≦n＜MdTとする。
【００６４】
なお、基本的にＣＰＵからのＤＲＡＭアクセス回数はＤＭＡからのＤＲＡＭアクセス回数より少ないのでバッファ空き容量時間積分値の閾値Ｓ２２を１としてもよい。
【００６５】
《実施形態３》
図９には本発明の第３の実施形態に係るデータ処理システム（ターゲット機器）１がその開発環境２と共に示される。第１及び第２の実施形態と異なる点は、ＣＰＵ１１がＣＰＵアクセス要求Ｓ０１のほかにキャッシュミス信号Ｓ２４をバス調停回路１３内のバス負荷監視回路１３１へ出力し、バス負荷監視回路１３１はキャッシュミス信号Ｓ２４からバス負荷を計算してＤＭＡ転送サイズ指定要求Ｓ０３を出力するところである。バス負荷監視回路１３１は、ＣＰＵアクセス要求Ｓ０１の代わりにキャッシュミス信号Ｓ２４を用いることで、ＣＰＵアクセスに関するバス負荷を監視している。
【００６６】
図１０は図9におけるＣＰＵ１１の詳細図である。ＣＰＵコア１１１はキャッシュメモリ１１２に対してキャッシュアクセス要求Ｓ２５を行い、キャッシュメモリ１１２は要求Ｓ２５の内容に応じてキャッシュ内データＳ２６をＣＰＵコア１１１へ送信する。キャッシュミスしたとき、キャッシュメモリ１１２はＤＲＡＭ１４に対してＣＰＵアクセス要求Ｓ０１を送信する。またキャッシュメモリ１１２は、キャッシュミス信号Ｓ２４を含むデバッグ用データＳ２７の出力機能を有する。
【００６７】
第３の実施形態では、キャッシュメモリ１１２から出力されたキャッシュ関連デバッグ用データＳ２７をＤＥＭＵＸ回路１１３により各データに分解し、そのデータをＭＵＸ回路１１４で合成すると同時に、キャッシュミス信号Ｓ２４をバス負荷監視回路１３１へ送信する。
【００６８】
図１１は第３の実施形態におけるバス調停回路１３の詳細図である。実施形態１及び２との相違点は、バス負荷監視回路１３１の入力がＣＰＵアクセス要求Ｓ０１またはバッファ空き容量Ｓ２０ではなく、キャッシュミス信号Ｓ２４であることである。
【００６９】
図１２は第３の実施形態におけるバス負荷監視回路１３１の詳細図である。実施形態１と違うのは、条件付カウンタ１３１１１は、クロック信号が1クロック周期経過し、かつキャッシュミス信号Ｓ２４が1であるときに値を1インクリメントすることである。
【００７０】
比較器１３１０３は、キャッシュミス信号Ｓ２４が１であるときの時間が閾値Ｓ２９より小さければＣＰＵアクセス要求Ｓ０１が少ないと判定し、ＣＰＵアクセス要求Ｓ０１が少ないときのＤＭＡ転送サイズ指定要求Ｓ１６、たとえば０／１信号における１を、次のＣＰＵアクセス計測周期Ｓ３０分だけ出力する。サンプル＆ホールド回路１３１０５は、ＣＰＵアクセス周期の信号Ｓ１７を読み取り、ＤＭＡ転送サイズ指定要求の値Ｓ１６を次のＣＰＵアクセス計測周期Ｓ３０分だけ保持して出力する。
【００７１】
なお、バス負荷監視回路１３１におけるキャッシュミス回数の閾値Ｓ２９および計測周期Ｓ３０のビルダ２２による計算処理については、実施形態１におけるＣＰＵからのＤＲＡＭアクセス回数の閾値Ｓ１８および計測周期Ｓ１９の計算と同じであってよい。
【００７２】
《実施形態４》
図１３には本発明の第４の実施形態に係るデータ処理システム（ターゲット機器）１がその開発環境２と共に例示される。第１ないし第３の実施形態と異なる点は、ＣＰＵ１１がＣＰＵアクセス要求Ｓ０１のほかにプログラムカウンタの値Ｓ３１をバス調停回路１３内のバス負荷監視回路１３１へ出力し、バス負荷監視回路１３１はプログラムカウンタの値Ｓ３１からバス負荷を計算してＤＭＡ転送サイズ指定要求Ｓ０３を出力することである。バス負荷監視回路１３１は、ＣＰＵアクセス要求Ｓ０１の代わりにプログラムカウンタの値Ｓ３１を用いることで、ＣＰＵアクセスに関するバス負荷を監視している。
【００７３】
図１４は第４の実施形態におけるＣＰＵ１１の詳細図である。第３の実施形態と大きく異なる点は、ＣＰＵコア１１１から出力されたＣＰＵ関連デバッグ用データＳ３２をＤＥＭＵＸ回路１１５により各データ群に分解し、そのデータ群をＭＵＸ回路１１６で合成すると同時に、データ群の中にあるプログラムカウンタの値Ｓ３１をバス負荷監視回路１３１へ送信することである。
【００７４】
図１５は第４の実施形態におけるバス調停回路１３の詳細図である。第１ないし第３の実施形態とは異なるのは、バス負荷監視回路１３１はＣＰＵアクセス要求Ｓ０１およびクロック信号Ｓ１２の代わりに、プログラムカウンタの値Ｓ３１を用いることで、ＣＰＵアクセスに関するバス負荷を監視しているところである。
【００７５】
図１６は第４の実施形態におけるバス負荷監視回路１３１の詳細図であり、図１７は第４の実施形態におけるバス負荷監視回路１３１の処理フローである。バス負荷監視回路１３１は、ルックアップテーブル１３１１４から構成されている。ルックアップテーブル１３１１４には、システム上で動作するプログラムにおいて、ＣＰＵアクセス負荷の多いルーチンまたはスレッドにおけるプログラムカウンタ開始値１３１１４１および範囲１３１１４２が記載されている。プログラムカウンタの値Ｓ３１がプログラムカウンタ開始値１３１１４１から範囲１３１１４２の内にあれば、ＣＰＵアクセス要求が少ないと判定し、ＣＰＵアクセス要求が少ないときのＤＭＡ転送サイズ指定要求、たとえば０／１信号における１を、プログラムカウンタＳ３１が範囲１３１１４２から出るまで出力する。
【００７６】
図２０は第４の実施形態におけるビルダ２２によるルックアップテーブル１３１１４作成処理フローである。ビルダ２２はまずプログラム２１をコンパイラ２２１でコンパイルし（Ｆ０６）、リンカ２２２でリンクすることによりプログラムの実行形式を仮に作成する（Ｆ０７）。次にシミュレータ２２３でプログラムの実行形式を用いてプログラムを実行する。プロファイラ２２４はプログラム内のルーチンまたはスレッドの単位でキャッシュミス発生回数をカウント、およびプログラムカウンタの開始値１３１１４１および範囲１３１１４２を計測する（Ｆ１０）。シミュレータとプロファイラはプログラムのパラメータを複数回変更してプログラムを実行し、キャッシュミス回数を計測する。複数回のキャッシュミス回数から平均値を求め、ＣＰＵアクセス要求の数とする（Ｆ２２）。プロファイラ２２４はルーチンまたはタスクのＣＰＵアクセス要求数を低い順にソートし、ＣＰＵアクセスの少ないルーチンまたはタスクにおけるプログラムカウンタ開始値１３１１４１および範囲１３１１４２を抽出してルックアップテーブル１３１１４の内容を作成する。プロファイラ２２４はルックアップテーブル１３１１４の内容をプログラムのソースファイルに変換し、プログラムの初期化においてルックアップテーブル１３１１４の内容をバス負荷監視回路１３１へ転送するルーチンを動かすようプログラムのソースファイルを書き換える（Ｆ２３）。
【００７７】
コンパイラ２２１はルックアップテーブル１３１１４の書かれたソースファイル、およびルックアップテーブル１３１１４の内容をバス負荷監視回路１３１へ転送するルーチンの書かれたソースファイルをコンパイルし（Ｆ１５）、リンカ２２２はルックアップテーブル１３１１４を他のルーチンとリンクし（Ｆ１６）、実行ファイルを作成する。
【００７８】
以上のようにルックアップテーブル１３１１４をバス負荷監視回路１３１に設置してプログラムカウンタの値Ｓ３１を読み込むことで、たとえばＣＰＵ負荷の低いメモリとのデータ読み書きルーチンなどに関してはＤＭＡ転送サイズを増やして転送効率を上げることができ、ＣＰＵ負荷の高い計算ルーチンにおいてはＤＭＡ転送サイズを減らしてＣＰＵでのメモリアクセスを迅速にすることが可能である。
【００７９】
《実施形態５》
図２１には本発明の第５の実施形態に係るデータ処理システム（ターゲット機器）１がその開発環境２と共に例示される。第１ないし第４の実施形態と異なる点は、ＤＭＡ転送効率を上げるために、バス負荷監視回路１３１がＤＭＡ転送サイズ指定要求Ｓ０３の代わりにＤＭＡ転送モード指定要求Ｓ３３を出力し、ＤＭＡ制御装置１２におけるＤＭＡ転送モードを変更することである。要するに、ＣＰＵアクセスが少なければ、即ち所定の閾値を超えなければＤＭＡ転送モードをバーストモードとし、ＣＰＵアクセスが多ければ、即ち所定の閾値を超えればＤＭＡ転送モードをサイクルスチールモードとする。この場合の制御手法は前述の説明から極めて容易に類することができる内容であるからその詳細な説明は省略する。
【００８０】
《実施形態６》
図２２には本発明の第６の実施形態に係るデータ処理システム（ターゲット機器）１がその開発環境２と共に例示される。第１ないし第５の実施形態と異なる点は、ＤＭＡ転送効率を上げるために、バス負荷監視回路１３１がＤＭＡ転送サイズ指定要求Ｓ０３およびＤＭＡ転送モード指定要求Ｓ３３の両方を出力し、ＤＭＡ制御装置１２におけるＤＭＡ転送サイズおよびＤＭＡ転送モードを変更することである。
【００８１】
図２３は第６の実施形態におけるバス調停回路１３の詳細図である。実施形態１ないし５と違う点は、ＤＭＡ転送モード指定要求用とＤＭＡ転送サイズ指定要求用とでバス負荷監視回路をそれぞれ１つずつ有するところである。ＤＭＡ転送モードのほうがＤＭＡ転送サイズに比べてＤＭＡの転送効率を向上させることができる反面、ＣＰＵからのＤＲＡＭアクセスを阻害する恐れがあるため、ＤＭＡ転送モード指定要求用閾値をＤＭＡ転送サイズ指定要求用閾値より高く、ＤＭＡ転送モード指定要求用計測周期をＤＭＡ転送サイズ指定要求用計測周期より長めに、それぞれ設定する。具体的には、ＤＭＡ転送モード指定要求用閾値および計測周期をＤＭＡ転送サイズ指定要求用閾値の整数倍とする。
【００８２】
《実施形態７》
図２４には本発明の第７の実施形態に係るデータ処理システム（ターゲット機器）１がその開発環境２と共に例示される。第１ないし第６の実施形態と異なる点は、ＣＰＵがＣＰＵアクセス要求Ｓ０１のほかにプログラムカウンタ値Ｓ３１を出力しており、かつバス負荷監視回路がＤＭＡ転送サイズ指定要求Ｓ０３およびＤＭＡ転送モード指定要求Ｓ３３の両方を出力し、ＤＭＡ制御装置１２におけるＤＭＡ転送サイズおよびＤＭＡ転送モードを変更することである。
【００８３】
図２５は本発明の第７の実施形態における、バス負荷監視回路１３１の処理フローである。プログラムカウンタの値Ｓ３１がプログラムカウンタ開始値１３１１４１から範囲１３１１４２の内にあれば（Ｆ０２）、ＣＰＵアクセス要求Ｓ０１が少ないと判定し、ＣＰＵアクセス要求Ｓ０１が少ないときのＤＭＡ転送サイズ指定要求Ｓ０３、たとえば０／１信号における１を、プログラムカウンタ値が範囲から出るまで出力する（Ｆ０４ないしＦ０５）。さらに、プログラムカウンタの値Ｓ０３がルックアップテーブル１３１１４のうち上位ｎ番目に入っていれば（Ｆ１９）、ルックアップテーブル１３１１４はＣＰＵアクセス要求Ｓ０１が少ない順にソートされているため、ＣＰＵアクセス要求Ｓ０１がさらに少ないと判定し、ＣＰＵアクセス要求Ｓ０１が少ないときのＤＭＡ転送モード指定要求Ｓ３３、たとえば０／１信号における１を、プログラムカウンタが範囲から出るまで出力する。ここでＤＭＡ転送モード指定要求Ｓ０７の値が０のときはサイクルスチールモードを、１のときはバーストモードを示す。
【００８４】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００８５】
本発明は、ＤＭＡＣを備えたマイクロコンピュータ又はデータプロセッサだけでなく各種ＳｏＣにも広く適用することができる。プログラム開発システムとしての開発環境はＰＣに構築されることに限定されず、エンジニアリングワークステーション等で構築することも可能である。ＣＰＵやＤＭＡＣがアクセスするメモリがＤＲＡＭに限定されずその他のメモリであってもよい。
【図面の簡単な説明】
【００８６】
【図１】本発明の第1の実施形態である、データ処理システムの全体図である。
【図２】本発明の第1の実施形態におけるデータ処理システムの詳細図である。
【図３】本発明の第1の実施形態における各種レジスタ類の詳細図である。
【図４】本発明の第1の実施形態におけるレジスタ制御回路の詳細図である。
【図５】本発明の第1の実施形態におけるバス調停回路の詳細図である。
【図６】本発明の第1の実施形態におけるバス負荷監視回路の詳細図である。
【図７】本発明の第２の実施形態におけるバス調停回路の詳細図である。
【図８】本発明の第２の実施形態におけるバス負荷監視回路の詳細図である。
【図９】本発明の第３の実施形態である、データ処理システムの全体図である。
【図１０】本発明の第３の実施形態におけるＣＰＵの詳細図である。
【図１１】本発明の第３の実施形態におけるバス調停回路の詳細図である。
【図１２】本発明の第３の実施形態におけるバス負荷監視回路の詳細図である。
【図１３】本発明の第４の実施形態である、データ処理システムの全体図である。
【図１４】本発明の第４の実施形態におけるＣＰＵの詳細図である。
【図１５】本発明の第４の実施形態におけるバス調停回路の詳細図である。
【図１６】本発明の第４の実施形態におけるバス負荷監視回路の詳細図である。
【図１７】本発明の第４の実施形態におけるバス負荷監視回路の処理フローである。
【図１８】本発明の第１の実施形態におけるビルダの詳細図である。
【図１９】本発明の第１の実施形態におけるＤＲＡＭアクセス回数の閾値Ｓ１８および計測周期Ｓ１９のビルダ２２による計算処理フローである。
【図２０】本発明の第４の実施形態における、ビルダによるルックアップテーブル作成処理フローである。
【図２１】本発明の第５の実施形態である、データ処理システムの全体図である。
【図２２】本発明の第６の実施形態である、データ処理システムの全体図である。
【図２３】本発明の第６の実施形態におけるバス負荷監視回路の詳細図である。
【図２４】本発明の第７の実施形態である、データ処理システムの全体図である。
【図２５】本発明の第７の実施形態におけるバス負荷監視回路の処理フローである。
【図２６】本発明の第１の実施形態におけるＤＲＡＭへのアクセス要求の詳細図である。
【図２７】本発明の第１の実施形態におけるＤＲＡＭの第1のタイムチャートである。
【図２８】本発明の第１の実施形態におけるＤＲＡＭの第2のタイムチャートである。
【符号の説明】
【００８７】
１  ターゲット機器
１１  ＣＰＵ
１１１  ＣＰＵコア
１１２  キャッシュ
１１３  キャッシュ用デマルチプレクサ
１１４  キャッシュ用マルチプレクサ
１１５  ＣＰＵコア用デマルチプレクサ
１１６  ＣＰＵコア用マルチプレクサ
１２  ＤＭＡ制御装置（ＤＭＡＣ）
１２１  レジスタ制御回路
１２１１  レジスタ書込内容生成部
１２１２  従来のレジスタ制御回路
１２１３  デマルチプレクサ
１２１４  マルチプレクサ
１２２  各種制御回路
１２３  バスＩ／Ｆ
１２４  各種レジスタ類
１２５  ＤＭＡ制御装置内部バス
１３  バス調停回路
１３１  バス負荷監視回路
１３１０１  条件付カウンタ
１３１０２  タイマ用カウンタ
１３１０３  ＤＭＡ転送サイズ判定用比較器
１３１０４  タイマ信号生成用比較器
１３１０５  サンプル＆ホールド回路
１３１０６  ＣＰＵアクセス要求数閾値格納メモリ
１３１０７  ＣＰＵアクセス要求数計測周期格納メモリ
１３１０８  バッファ空き容量時間積分器
１３１０９  バッファ空き容量時間積分閾値格納メモリ
１３１１０  バッファ空き容量時間積分値計測周期格納メモリ
１３１１１  キャッシュミス信号数用条件付カウンタ
１３１１２  キャッシュミス信号数閾値格納メモリ
１３１１３  キャッシュミス信号計測周期格納メモリ
１３１１４  ルックアップテーブル
１３１１４１  プログラムカウンタ開始値
１３１１５１  プログラムカウンタ範囲
１３２  ＤＭＡ用キューバッファ
１３３  ＣＰＵ用キューバッファ
１３４  優先順位判定回路
１３５  セレクタ
１４  ＤＲＡＭ
１５  プログラム専用ＲＡＭ
１６  プログラムＩ／Ｆ
１７  バス
２  開発環境
２１  プログラム
２２  ビルダ
２２１  コンパイラ
２２２  リンカ
２２３  シミュレータ
２２４  プロファイラ
２３  アップローダ
２４  ＯＳ
２５  ＰＣ
Ｓ０１  ＣＰＵアクセス要求
Ｓ０２  ＤＭＡアクセス要求
Ｓ０３  ＤＭＡ転送サイズ指定要求
Ｓ０４  ＤＲＡＭアクセス
Ｓ０４１  アクセス要求元識別子
Ｓ０４２  アクセス先アドレス
Ｓ０４３  アクセスサイズ
Ｓ０４４  リード／ライト判別子
Ｓ０４５  書き込みデータ
Ｓ０５  プログラム実行形式
Ｓ０６  プログラム内命令
Ｓ０７  レジスタ書込内容
Ｓ０７１  ＤＭＡ転送サイズ指定ビット
Ｓ０８  各種信号
Ｓ０９  レジスタ書込内容（ＤＭＡ転送サイズ指定要求反映後）
Ｓ１０  各種レジスタ初期化信号
Ｓ１１  レジスタ内容
Ｓ１２  クロック信号
Ｓ１３  選択信号
Ｓ１４  ＣＰＵアクセス要求数
Ｓ１５  タイマ用カウンタ信号
Ｓ１６  ＤＭＡ転送サイズ指定要求連続値
Ｓ１７  タイマ信号
Ｓ１８  ＣＰＵアクセス要求数閾値信号
Ｓ１９  ＣＰＵアクセス要求数計測周期信号
Ｓ２０  ＣＰＵ用キューバッファ空き容量
Ｓ２１  ＣＰＵ用キューバッファ空き容量時間積分値
Ｓ２２  ＣＰＵ用キューバッファ空き容量時間積分閾値
Ｓ２３  ＣＰＵ用キューバッファ空き容量時間積分値計測周期
Ｓ２４  キャッシュミス信号
Ｓ２５  キャッシュアクセス要求
Ｓ２６  キャッシュ内データ
Ｓ２７  キャッシュ関連デバッグ用データ
Ｓ２８  キャッシュミス信号数
Ｓ２９  キャッシュミス信号数閾値
Ｓ３０  キャッシュミス信号数計測周期
Ｓ３１  プログラムカウンタ値
Ｓ３２  ＣＰＵ関連デバッグ用データ
Ｓ３３  ＤＭＡ転送モード指定要求
Ｃ１  ＤＭＡ転送サイズ３２バイト設定
Ｃ２  ＤＭＡ転送サイズ６４バイト設定
Ｃ３  ＤＭＡ転送サイズ３２バイト／６４バイト自動切換設定
Ｃ４  ＤＭＡ転送サイクルスチールモード設定
Ｃ５  ＤＭＡ転送バーストモード設定
Ｃ６  ＤＭＡ転送サイクルスチール／バースト自動切換モード設定
Ｃ７  ＤＭＡ転送量・転送方法自動切換モード設定
Ｆ０１  プログラムカウンタ開始値＋範囲計算処理
Ｆ０２  プログラムカウンタ値判定処理
Ｆ０３  ルックアップテーブル全文読込完了判定処理
Ｆ０４  ＤＭＡ転送サイズ０指定処理
Ｆ０５  ＤＭＡ転送サイズ１指定処理
Ｆ０６  プログラムのコンパイル処理
Ｆ０７  プログラムのリンク処理
Ｆ０８  ＤＭＡアクセス間隔判定処理
Ｆ０９  レジスタ設定値からＤＭＡアクセス間隔を求める処理
Ｆ１０  シミュレーション実行処理
Ｆ１１  プロファイラ計測結果からＤＭＡアクセス間隔を求める処理
Ｆ１２  ＣＰＵアクセス計測間隔算出処理
Ｆ１３  ＣＰＵアクセス要求数平均値算出処理
Ｆ１４  ＣＰＵアクセス要求閾値計算処理
Ｆ１５  プログラム再コンパイル処理
Ｆ１６  プログラム再リンク処理
Ｆ１７  プログラムアップロード処理
Ｆ１８  ルックアップテーブル作成処理
Ｆ１９  ルックアップテーブル順位判定処理
Ｆ２０  ＤＭＡ転送モード０設定処理
Ｆ２１  ＤＭＡ転送モード１設定処理
Ｆ２２  ＣＰＵアクセス回数計算処理
Ｔ０１  ＤＭＡ転送サイズ３２バイト固定時タイムチャート
Ｔ０２  ＤＭＡ転送サイズ自動切換時タイムチャート
Ｔ０３  ＤＲＡＭアクセスのオーバーヘッド時間
Ｔ０４  ＤＭＡによる３２バイトＤＲＡＭアクセスにかかる時間
Ｔ０５  ＤＭＡによる６４バイトＤＲＡＭアクセスにかかる時間
Ｔ０６  ＤＭＡ転送量切換タイミング境界線
Ｔ０７  ＤＭＡ転送量切換タイミング境界印
Ｔ０８  ＤＭＡ転送サイズ自動切換時の転送完了を示す境界線
Ｔ０９  ＤＭＡ転送サイズ３２バイト固定時の転送完了を示す境界線
Ｔ１０  ＣＰＵアクセス計測期間を示す矢印
Ｔ１１  ＤＭＡ転送サイズ自動切換時と固定時とのアクセス時間差
Ｔ１２  ＣＰＵからのＤＲＡＭアクセスにかかる時間
Ｔ１３  ＤＭＡ転送サイズ自動切換時のＣＰＵアクセス完了を示す境界線
Ｔ１４  ＤＭＡ転送サイズ固定時のＣＰＵアクセス完了を示す境界線
Ｔ１５  ＤＭＡ転送サイズ自動切換時と固定時とのＣＰＵアクセス時間差
Ｔ１６  ＤＭＡ転送サイズ６４バイト固定時タイムチャート
【図１】
2010015275.tif 000003
【図２】
2010015275.tif 000004
【図３】
2010015275.tif 000005
【図４】
2010015275.tif 000006
【図５】
2010015275.tif 000007
【図６】
2010015275.tif 000008
【図７】
2010015275.tif 000009
【図８】
2010015275.tif 000010
【図９】
2010015275.tif 000011
【図１０】
2010015275.tif 000012
【図１１】
2010015275.tif 000013
【図１２】
2010015275.tif 000014
【図１３】
2010015275.tif 000015
【図１４】
2010015275.tif 000016
【図１５】
2010015275.tif 000017
【図１６】
2010015275.tif 000018
【図１７】
2010015275.tif 000019
【図１８】
2010015275.tif 000020
【図１９】
2010015275.tif 000021
【図２０】
2010015275.tif 000022
【図２１】
2010015275.tif 000023
【図２２】
2010015275.tif 000024
【図２３】
2010015275.tif 000025
【図２４】
2010015275.tif 000026
【図２５】
2010015275.tif 000027
【図２６】
2010015275.tif 000028
【図２７】
2010015275.tif 000029
【図２８】
2010015275.tif 000030