JP2004192052A - ソフトウェア処理方法およびソフトウェア処理システム - Google Patents

ソフトウェア処理方法およびソフトウェア処理システム Download PDF

Info

Publication number
JP2004192052A
JP2004192052A JP2002355683A JP2002355683A JP2004192052A JP 2004192052 A JP2004192052 A JP 2004192052A JP 2002355683 A JP2002355683 A JP 2002355683A JP 2002355683 A JP2002355683 A JP 2002355683A JP 2004192052 A JP2004192052 A JP 2004192052A
Authority
JP
Japan
Prior art keywords
processing
software
dsp
processor
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002355683A
Other languages
English (en)
Inventor
Kei Yoneda
圭 米田
Isao Kawamoto
功 河本
Seiji Kida
誠司 喜田
Takaaki Matsubayashi
貴明 松林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2002355683A priority Critical patent/JP2004192052A/ja
Priority to US10/727,055 priority patent/US7584464B2/en
Priority to CNB2003101201423A priority patent/CN100483360C/zh
Publication of JP2004192052A publication Critical patent/JP2004192052A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】従来、バスやDSPなどの共有リソースを有するシステムにおいて、リソースを使用するソフトウェア処理が行われる際に、バスアクセス競合やDSP競合などのリソースの競合が頻繁に発生すると、結果としてシステム全体の性能が低下するという影響があった。本発明はかかる点に鑑み、リソースの競合の情報を考慮したソフトウェア処理システムを提供することを目的とする。
【解決手段】リソースの使用状況を監視する使用状況監視処理の過程と、使用状況監視処理の過程の出力の情報に応じて実行されるソフトウェアの処理方法を変更するソフトウェア処理変更処理の過程を、ハードウェアまたはソフトウェアとして実現して、リソースの競合を発生しにくくしたものである。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明は、プロセッサと共有リソースを有するシステムにかかわり、特には、共有リソース競合時の処理速度の低下を防止する技術に関するものである。
【0002】
【従来の技術】
共有リソースを有するシステムとしては様々なものがある。マルチプロセッサシステム、例えばCPUのようなプロセッサとDSP(デジタルシグナルプロセッサ)で構成されるマルチプロセッサシステムにおいては、処理をプロセッサとDSPで分担して実行することにより処理性能の向上を図りながら、メモリ、バス、周辺回路などを共有リソースとして共用することにより、チップ面積を縮小し、低コストを実現している。共有リソースとしては、通常、メモリ、バス、周辺回路などがあり、システムの目的、仕様に応じて様々である。
【0003】
共有リソースに対してアクセス競合が発生した場合、例えば、プロセッサが外部メモリへのデータ読み出し中に、DSPからも同一のメモリに対してデータ読み出しの処理が発行された場合、バス調停回路によりアクセス競合に対する処理が制御される。バス調停回路の制御方法としては、DSPからのデータ読み出し処理は受け付けるが、プロセッサからのデータ読み出しが終了するまではDSPからのデータ読み出しの処理は待たせる、あるいは実行中のプロセッサからのデータ読み出しをキャンセルし、DSPからのデータ読み出しを優先に実行し、DSPでの処理の終了後、プロセッサからのデータ読み出し処理を再実行する、といった具合に、処理の仕様に応じて様々である。
【0004】
さらに、プロセッサとDSPで構成されるマルチプロセッサシステムにおいて、DSPはプロセッサからの処理要求を受け付けることにより処理を実行する場合、プロセッサとDSPとの間の制御方式が突き放し制御方式であれば、DSPを共有リソースということができる。突き放し制御方式におけるDSPは、プロセッサからの処理要求をDSPの状態に関係なく受け付けるが、処理の実行に関してはDSPの状態を判断した後で開始する。つまり、DSPが別の処理を実行中であれば、処理要求を受け付けてもすぐには処理を開始させずにしばらく待たせ、DSP側でプロセッサからの処理要求が実行できる状態になった時点で自律的に処理を実行し、処理結果をプロセッサ側へ返す。この制御方式では、DSPまたは別回路などの調停回路においてプロセッサが発行する処理をスケジューリングすることにより、複数の処理が共通のDSPを競合することなく使用することになる。したがって、この場合、DSPは共有リソースであるということができる。
【0005】
【非特許文献1】
斎藤忠夫・発田弘著、「高性能コンピュータアーキテクチャ」、丸善株式会社、p290、p309
【0006】
【発明が解決しようとする課題】
しかしながら、従来の共有リソースを有するシステムでは、共有リソースへのアクセス競合が発生した場合、調停回路により競合リソースを使用する処理を適当にスケジューリングするが、優先順位の低い処理は先の処理が終了するまで待つことになり、共有リソースへのアクセス競合が頻繁に発生するような場合、システム全体の処理速度が低下する要因となる。
【0007】
さらに、調停回路は共有リソースの状態のみを把握しており、システム全体の状態を把握していない。例えばDSPが他の処理を実行中にプロセッサからDSPへの処理要求が発行された場合、従来の調停回路では、先の処理が終了するまでその処理を待たせる。一方、プロセッサはDSPへ発行した処理の結果を受けて次の処理を実行するため、プロセッサも待ち状態となる場合がある。このような状況では、先の処理が終了するまでDSPへ発行された処理およびその発行元であるプロセッサが待ち状態となり、プロセッサおよびDSPを効率良く使用することができない。
【0008】
また、上記従来の共有リソースを有するシステムでは、DSPへの処理要求が重複するDSP競合を避けるためにソフトウェアをCPUとDSPに適切に割り振る必要がある。この割り振り作業は人手で行っており、ソフトウェアの修正が発生する毎に多大な時間を必要とし、工数がかかるという問題がある。
【0009】
【課題を解決するための手段】
上記の課題を解決するために、本発明は次のような手段を講じる。
【0010】
本発明によるソフトウェア処理方法は、プロセッサとプロセッサが使用するリソースで構成されるシステムに対し、プロセッサが使用するリソースの使用状況を監視する使用状況監視処理の過程と、前記使用状況監視処理の過程で得られる競合情報に応じて、実行されるソフトウェアの処理方法を変更するソフトウェア処理変更処理の過程とを含むものである。
【0011】
上記のソフトウェア処理方法に対応する本発明によるソフトウェア処理システムは、プロセッサと、前記プロセッサが使用するリソースと、前記リソースの使用状況を監視する使用状況監視装置と、前記使用状況監視装置で得られる競合情報に応じて、実行されるソフトウェアの処理方法を変更するソフトウェア処理変更装置を有するものである。
【0012】
上記構成によれば、リソースの競合を動的に判定し、リソースを使用するソフトウェアの処理方法を変更することで、リソース競合時の処理の停止を避け、システムの処理速度の低下を抑制することができる。
【0013】
上記において、前記ソフトウェア処理変更処理の過程、または、前記ソフトウェア処理変更装置についての1つの態様は、ソフトウェアがある処理を行うのに複数の実行方法を持ち、前記ソフトウェアの実行中に前記使用状況監視処理の過程で得られる競合情報に応じて、前記複数の実行方法の中から1つを選択するものである。
【0014】
上記において、前記リソースが、処理の記憶装置および前記プロセッサと前記記憶装置を接続するバスである場合において、前記使用状況監視処理の過程についての1つの態様は、前記バスの使用状況を監視するものである。これによれば、バスアクセス競合の発生を軽減し、バスを効率良く使用することが可能となる。したがって、バスアクセスの競合の発生によるシステムの処理速度の低下の影響を軽減することができる。
【0015】
上記において、前記使用状況監視処理の過程についての1つの態様は、複数クロック遡ったバスの使用状況を記憶し、過去および現在の使用状況から前記競合情報を生成することである。また、上記において、前記使用状況監視処理の過程についての別の態様は、前記バスの使用時における使用時間を記憶し、前記使用時間が所定値以上か否かに基づき前記競合情報を生成することである。クロック数または時間を指標にして、バスの使用状況を容易に判定することができる。
【0016】
上記において、前記リソースが、前記プロセッサからの処理要求に応じて処理を行う第2のプロセッサである場合において、前記使用状況監視処理の過程、または、前記使用状況監視装置についての1つの態様は、前記第2のプロセッサの使用状況の監視を行うことである。この場合、第2のプロセッサを使用しているときに別の処理が発生した場合、前記競合情報として前記プロセッサへの割り込み信号を用いて、割り込みを発生させる割り込み機能を備えるとよい。
【0017】
上記のソフトウェア処理方法が、さらに、同一アドレスでアクセス可能な複数のメモリバンクを有する場合において、前記使用状況監視処理の過程で得られる競合情報についての1つの態様は、前記複数のメモリバンクのうち1つのメモリバンクの選択を示す信号である。この場合、第2のプロセッサでの処理の実行毎に、あるいは第2のプロセッサで実行された処理が終了する毎に、複数のメモリバンクの中から1つを選択する選択信号を切り替える機能を備えるとよい。
【0018】
上記によれば、プロセッサの競合を動的に判定し、割り込みを行ったり、メモリバンクを選択することで、プロセッサ競合時の処理の停止を避け、システムの処理速度の低下を抑制することができる。
【0019】
上記のソフトウェア処理方法が、さらにソフトウェアのコンパイラを有する場合において、前記コンパイラについての1つの態様は、ソフトウェアから前記リソースを使用する処理を識別する処理識別手段と、前記処理識別手段により識別された処理と等価な、前記リソースを使用しない等価処理と、前記使用状況監視処理の過程で得られる競合情報により使用状況を判定する使用状況判定処理と、前記使用状況判定処理の結果に応じて、前記処理識別手段により識別された処理を前記等価処理に置き換える置換処理とを、前記ソフトウェアに追加することである。これにより、リソース競合を避け、システムの処理速度の低下を避ける。
【0020】
また、上記のソフトウェア処理方法が、さらにソフトウェアのコンパイラを有する場合において、前記コンパイラについての1つの態様は、ソフトウェアから前記リソースを使用する処理を識別する処理識別手段と、前記処理識別手段により識別された処理と等価な、前記リソースを使用しない等価処理と、現時刻の前記使用状況監視処理の過程で得られる競合情報を記憶する記憶処理と、過去の時刻における前記競合情報により使用状況を判定する使用状況判定処理と、前記使用状況判定処理の結果に応じて、前記処理識別手段により識別された処理を前記等価処理に置き換える置換処理とを、前記ソフトウェアに追加することである。これによれば、競合の履歴を加味した処理となり、リソース競合の判定を高精度に行うことができる。
【0021】
上記において、前記競合情報についての1つの態様は、前記リソースの処理要求が発行されてから処理が終了するまでの処理時間であり、この場合に、前記使用状況判定処理は、前記処理時間をある設定値と比較する処理を行うものである。また、上記において、前記競合情報についての別の態様は、前記リソースの処理要求が発行されてから処理が実行するまでの待ち時間であり、この場合に、前記使用状況判定処理は、前記待ち時間をある設定値と比較する処理を行うものである。これによれば、処理の待ち時間や処理時間などを計測することでリソース競合が発生中か否かを判定し、リソース競合が発生中ならば新たにリソース競合を引き起こす処理を発行しない。これにより、競合によるシステムの処理速度の低下を抑制することが可能である。
【0022】
上記において、前記使用状況判定処理についての1つの態様は、定期的または不定期に前記リソースの使用状況の判定を見直すことである。この場合に、乱数を用いて前記リソースの使用状況の判定を見直すのがよい。これによれば、定期的または不定期に競合判定を補正するので、さらに高精度な競合判定が可能である。
【0023】
上記のソフトウェア処理方法において、前記コンパイラにおける前記処理識別手段により抽出される処理が前記ソフトウェアの複数の箇所から抽出される場合、前記コンパイラについての1つの態様は、さらに、前記処理識別手段で識別された処理の出現箇所を識別する出現箇所識別処理を前記ソフトウェアに追加し、前記記憶処理は前記出現箇所毎に前記競合情報を記憶し、前記使用状況判定処理は前記出現箇所毎に記憶した前記競合情報を用いて判定を行うことである。これによれば、競合情報を競合を引き起こす処理の出現箇所とともに記憶することで、ループ処理における競合判定を高精度に行うことが可能である。
【0024】
以上のようにして、本発明によれば、リソースの競合およびプロセッサ上で実行する処理の競合を考慮した人手での処理の割り当てを行うことがなくなり、工数の削減が図れる。
【0025】
【発明の実施の形態】
図1は、本発明の実施の形態にかかわるソフトウェア処理システムの基本構成を示すブロック図である。
【0026】
図1において、プロセッサ101がソフトウェア処理の実行を始めると、使用状況監視処理手段103は、プロセッサ101が使用するリソース102の使用状況を監視し、その出力を受けて、リソース102の使用状況の情報を取得する。リソース102の使用状況の情報の結果に応じて、ソフトウェア処理変更処理手段104は実行されるソフトウェアの処理方法を変更する。
【0027】
なお、前記使用状況監視処理手段103および前記ソフトウェア処理変更処理手段104は、それぞれソフトウェアで実現したものを想定しているが、それぞれハードウェアで実現しても良く、少なくとも、リソースの使用状況を監視し、その情報を取得する機能、および、前記情報の出力を受けてソフトウェアの処理方法を変更する機能を有していれば良いものである。
【0028】
以下、本発明の第1から第6までの実施の形態について、図を用いて説明する。
【0029】
(第1の実施の形態)
以下、本発明の第1の実施の形態を図面に基づいて説明する。
【0030】
図2は、本発明の第1の実施の形態にかかわるソフトウェア処理システムのハードウェアの構成を示すブロック図である。
【0031】
図2において、1001はCPU、1002はCPU1001が使用するバス、1003はCPU1001の周辺回路、1004は外部メモリ、1005はバス1002上のバスアクセスの状態を記憶する使用状況監視装置である。
【0032】
図3は、本発明の第1の実施の形態にかかわるソフトウェア処理システムのバス1002の使用状況監視装置1005の構成を示す図である。
【0033】
図3において、1101はバス1002上でバスアクセスが起きているかどうかを特定の期間だけ識別するバスアクセス識別装置、1102はバスアクセス識別装置1101の出力を受けて、バスアクセスの状態を記録するバスアクセス状態レジスタである。
【0034】
図4は、本発明の第1の実施の形態にかかわるソフトウェア処理システムのソフトウェアの構成を示す図である。
【0035】
図4において、1201はCPU1001上で動作するプログラム、1202,1203,1204はプログラム1201中に記述される処理、1205,1206,1207は処理1202,1203,1204とそれぞれ同等の機能を持ち、バス1002を使用しないCPU1001用の処理である。
【0036】
図5は、本発明の第1の実施の形態にかかわるソフトウェア処理システムにおけるコンパイルフローを示すフローチャートである。
【0037】
図5において、1301はコンパイラがプログラム1201をコンパイルするコンパイル手段、1302はプログラム1201に記述される処理において、バス1002を使用する処理を識別する処理識別手段、1303は処理識別手段1302の出力を受けて、使用状況監視装置1005が持つバスアクセス状態レジスタ1102の値を読み取り、バスアクセスの情報を動的に判定するプログラムである使用状況判定処理、および、処理識別手段1302により識別された処理を、処理識別手段1302により識別された処理と等価な前記リソースを使用しない等価処理に置き換える置換処理を付加する処理付加手段である。
【0038】
図6は、本発明の第1の実施の形態にかかわるソフトウェア処理システムにおけるバスアクセス識別装置1101が識別するバスアクセスの状態を示す図であり、図7は、そのソフトウェア処理システムにおける処理付加手段1303によるソフトウェアの変更を示す図である。
【0039】
以下、第1の実施の形態のソフトウェア処理システムの動作について説明する。
【0040】
本実施の形態においては、CPU1001によって、プログラム1201に記述される処理1202,1203,1204が、処理1202,処理1203,処理1204の順番に処理され、かつ、処理1202,1203はバス1002を使用する。
【0041】
図4、図5に示すように、プログラム1201のコンパイルの際には、まず、処理1202,1203,1204はコンパイル手段1301によってコンパイルされる。また同時に、処理識別手段1302によってバス1002を使用する処理として処理1202,1203が識別される。次に、処理識別手段1302によって得られた処理1202と処理1203の実行の直前に使用状況判定処理および置換処理が行われるように、処理付加手段1303によって使用状況判定処理および置換処理が付加される。前記付加処理により、プログラム1201の処理は、処理1202が行われる直前において、使用状況判定処理および置換処理が実行されることとなる。
【0042】
バスアクセス状態レジスタ1102に記録される値は、バスアクセス識別装置1101によって算出される。この算出される値は、図6に示すように、バスアクセスが発生していれば増加し、バスアクセスが発生していなければ減少し、値の増減の度合いは任意に設定することができる。
【0043】
ここで、算出される値をαとし、αの増減の度合いをβとする。αの算出方法は、まず、αに1サイクル毎にβを掛けて、次に、その値(α×β)に、バスアクセスが発生していれば1を、バスアクセスが発生していなければ0を足す。つまり、nサイクル目でのαの値をα(n)とすると、
α(n)=β×α(n−1)+(1または0)
となる。例えば、βを0.9とした場合、αの値は0から10の間の値をとることになり、そのαの値がバスアクセスが頻繁に発生しているかどうかの目安の値となる。
【0044】
βを0.9とした場合のバスアクセスの状態を表すαとサイクル数の関係は図6のように示される。αの値の変化が増加している箇所はバスサイクルが頻繁に発生しており、αの値が減少している箇所はバスアクセスが発生していない。
【0045】
以上のように、バスアクセス識別装置1101は、バスアクセスが頻繁に発生しているかどうかの目安となるαの値を算出し、その結果をバスアクセス状態レジスタ1102へ記録する。
【0046】
使用状況判定処理は、バスアクセス状態レジスタ1102に記録されている値αを読み取り、特定の値と比較してバスアクセスの状態を判定する。この特定の値は任意に設定することができる値であり、バスアクセスが頻繁に発生しているかどうかを判定する閾値となる。前述のβ=0.9の場合、αは0から10の値をとることになるので、前述の閾値を5と設定したとすると、αが5より大きければ、その時点でバスアクセスが頻繁に発生していると判定できる。逆にαが5以下であれば、バスアクセスは頻繁に発生していないと判定できる。
【0047】
この判定の結果を受けて、置換処理は、処理1202を処理1205へ変更する。つまり、判定の結果、バス1002が頻繁に使用されていれば、置換処理によって処理1202の代わりに処理1205が行われる。逆に、判定の結果、バス1002が頻繁に使用されていなければ、処理1202がそのまま行われる。
【0048】
処理識別手段1302によってバス1002を使用する処理であると識別された処理1203についても同様に、処理付加手段1303によって付加された使用状況判定処理および置換処理が行われ、バス1002が頻繁に使用されていれば、処理1203の代わりに処理1206が行われ、バス1002が頻繁に使用されていなければ、処理1203が行われる。
【0049】
以上のように本実施の形態によれば、使用状況判定処理および置換処理によって、バス1002におけるバスアクセス競合の発生を軽減し、バス1002を効率良く使用することが可能となり、バスアクセスの競合の発生によるシステムの処理速度の低下の影響を軽減することができる。
【0050】
なお、本実施の形態では、プロセッサを1つのCPU、リソースを1つのバスとしたが、それぞれ複数のCPU、バスでも良く、少なくとも1つのリソースとそのリソースを使用する少なくとも1つのプロセッサであれば良いものである。
【0051】
なお、本実施の形態では、バスアクセス状態レジスタにαを求めているが、αの求め方あるいはバスのアクセス頻度を求める方法は本方法によらずともよく、指標として求めることができるものであれば同等の効果を得られる。
【0052】
(第2の実施の形態)
第2の実施の形態によるソフトウェア処理システムを図8〜図15を用いて具体的に説明する。
【0053】
図8は、第2の実施の形態にかかわるソフトウェア処理システムのハードウェアの構成を示すブロック図である。図8においてソフトウェア処理システムは、プロセッサ2001と、DSP2002と、プロセッサ2001とDSP2002で実行するソフトウェアを格納した記憶装置2003と、周辺回路2004と、バス調停回路2005と、外部メモリ2006と、共有バス2007で構成される。
【0054】
図8では、プロセッサ2001はDSP2002を突き放し制御方式で制御しており、プロセッサ2001が記憶装置2003から読み出したソフトウェアがDSP2002で実行すべき処理の場合は、プロセッサ2001はDSP2002へ処理要求を発行し、DSP2002は処理要求を受けた後、処理を実行する。外部メモリ2006はプロセッサ2001、DSP2002が処理を実行する際に使用する共有メモリである。バス調停回路2005はバスアクセスを管理しており、共有メモリへのアクセス競合、すなわち共有バス2007のバス競合が発生した場合には、外部メモリ2006へアクセスする処理を実行するか否かを判定する。
【0055】
ここで、バス調停回路2005の制御フローを図9に示す。図9において、2101は共有メモリである外部メモリ2006へのアクセス要求(読み出しまたは書き込み要求)が発生したか否かを判定するアクセス要求判定手段であり、2102は現在、外部メモリ2006がアクセス中か否かを判定するメモリ状態判定手段であり、2103はアクセス要求に対しバスを解放しメモリアクセスを促すメモリアクセス許可手段であり、2104は処理が終了したか否かを判定する処理終了判定手段である。
【0056】
外部メモリ2006へのアクセス中に新たな外部メモリ2006へのアクセス要求が発生した場合、つまりバス競合が発生した場合、バス調停回路2005は、一旦、アクセス要求を受理し、実際の処理に関しては先の処理が終了するまで待機(wait)状態となる。外部メモリ2006へのアクセスが頻繁に発生すると、バス競合が発生し、バス調停回路2005により処理が待機(wait)状態となる。その結果、ソフトウェア処理システム全体の処理速度が低下する。そこで第2の実施の形態では、バス競合を避け、処理速度の低下を防ぐ。
【0057】
本実施の形態におけるコンパイラは、処理記述言語で記述されたソフトウェアからオブジェクトコードを出力する通常のコンパイラとしての機能の他に、図10の処理フローに示す機能を有する。コンパイラは、まず、処理識別手段2201として外部メモリ2006へ頻繁にアクセスする処理を識別する。これは、処理識別手段2201が外部メモリ2006へアクセスする処理をあらかじめ認識していれば可能である。次に、識別した処理に対して、これと等価であるが、外部メモリ2006へのアクセスが少ない処理である等価処理があらかじめライブラリ等で用意されているか否かを判定する。もし用意されていれば、コンパイラは処理識別手段2201で識別した処理に対して等価処理、記憶処理、使用状況判定処理、置換処理を追加する。ここで、記憶処理とは外部メモリ2006へ頻繁にアクセスする処理の要求が発行されてから処理が終了するまでの処理時間を記録する処理であり、使用状況判定処理とは記憶処理で記憶した使用状況の情報からバス競合が発生しているか否かを判定する処理であり、置換処理とは処理識別手段2201で識別した処理を等価処理へ置き換える処理を示す。
【0058】
図11は、図10の処理フローをもつコンパイラを使用したときの外部メモリ2006へ頻繁にアクセスする処理の変更を示す図である。図11では、外部メモリ2006へ頻繁にアクセスする処理を関数“mem_acs_many()”とし、この等価処理を“mem_acs_few()”としている。コンパイラは、あらかじめ外部メモリ2006へアクセスする処理を登録することで、処理識別手段2201を用いてソフトウェアの中から関数“mem_acs_many()”を識別する。
【0059】
次に、コンパイラは処理識別手段2201で識別した処理に対して上記の等価処理、記憶処理、使用状況判定処理、置換処理を付加する。
【0060】
まず、図11(b)の2行目では、ソフトウェアに使用状況判定処理を付加する。ここで“task_time”はプロセッサ2001が外部メモリ2006へ頻繁にアクセスする処理の要求を発行してから処理が終了するまでの処理時間であり、“DEFINED_TIME”はあらかじめ設定された設定値である。処理時間“task_time”は、過去に発生した外部メモリ2006へ頻繁にアクセスする処理の処理時間を表しており、現時刻に発生する外部メモリ2006へ頻繁にアクセスする処理を実行する前に“task_time”を参照し、設定値である“DEFINED_TIME”と比較することでバス競合を判定する。バス競合が発生中と判定された場合、図9の制御フローに従うバス調停回路2005では、バス競合の発生時に処理を待機状態とするため、そのときの処理時間は長くなる。つまり、外部メモリ2006へ頻繁にアクセスする処理の処理時間がある程度大きくなるとバス競合が発生したと推定できる。なお、設定値については、ソフトウェア処理システムの仕様に応じて的確な値を設定するのが望ましい。
【0061】
次に、図11(b)の3行目から6行目は、記憶処理を示す。使用状況判定処理によりバス競合が発生していないと推定された場合、“mem_acs_many()”実行の前後のタイマーの値を参照し、その差を算出することで処理時間“task_time”を算出している。
【0062】
図11(b)の8行目から10行目は、置換処理を示す。使用状況判定処理によりバス競合が発生していると推定された場合、さらにバス競合を発生させることを防ぐため、外部メモリ2006へのアクセスが少ない処理に置き換える。なお、置換処理で置換する処理は、処理の整合性を保つために機能的に等価であるが、外部メモリ2006へのアクセスが少ない処理が望ましい。
【0063】
第2の実施の形態では、上述のコンパイラが追加した等価処理、記憶処理、使用状況判定処理、置換処理により、使用状況監視処理の過程およびソフトウェア処理変更処理の過程を実現する。つまり、使用状況監視処理の過程とは、記憶処理により処理時間“task_time”を記憶しており、使用状況判定処理へ処理時間“task_time”を出力する。ソフトウェア処理変更処理の過程とは、識別した処理を等価処理へ置き換える置換処理であり、使用状況監視処理の過程から出力される処理時間に基づいてバス競合を判定し、バス競合が発生していれば処理の置き換えを行う。
【0064】
ここで、本実施の形態によるバス競合の判定フローを図12に示す。処理識別手段2201で識別した処理に対し、前回識別した処理を実行した際の処理時間“task_time”と設定値“DEFINED_TIME”を比較する。処理時間“task_time”が設定値“DEFINED_TIME”以上の場合には、使用状況判定処理はバス競合が発生中であると判定し、等価処理への置き換えを行う。逆に処理時間“task_time”が設定値“DEFINED_TIME”よりも小さい場合には、使用状況判定処理はバス競合が発生していないと判定し、処理識別手段2201で識別した処理を、処理時間“task_time”の記憶を行いながら実行する。
【0065】
ここで、「前回識別した処理を実行した際の処理時間」とは、2つ考えられる。1番目の処理時間は、処理識別手段2201で識別した処理の中で、現時刻から1回前に記録した処理時間、つまり、記録した処理時間の中で最も新しいものが該当する。2番目の処理時間は、現時刻で識別した処理と同一の処理を過去に実行したときに記録した処理時間が該当する。1番目の処理時間では、処理時間は常に最新のものを1つだけ記憶するが、2番目の処理時間では、識別された処理毎に処理時間を記憶する必要がある。
【0066】
以上、本実施の形態では、処理時間“task_time”と設定値“DEFINED_TIME”の比較結果より、バス競合が発生中か否かを判定し、バス競合が発生中と判定された場合は、外部メモリ2006へ頻繁にアクセスする処理を外部メモリ2006へのアクセスが少ない処理に自動で置換する。その結果、動的にバス競合を判定しながら自動で処理の割り当てを行うことができるとともに、新たなバス競合を避けることができ、処理速度の低下を防止できる。なお、第2の実施の形態における上記の発明内容を後述の発明と区別するために第1の手法とする。
【0067】
さらに、第2の手法としての使用状況判定処理においては、バス調停回路2005から出力された競合情報である処理時間“task_time”と事前に設定しておいた設定値“DEFINED_TIME”との比較結果に加えて、乱数を使用することでバス競合の判定を行う。
【0068】
図13は、処理時間“task_time”と設定値“DEFINED_TIME”の比に対する等価処理への置き換えを行う確率を示している。処理時間“task_time”が設定値“DEFINED_TIME”よりも小さい場合、言い換えれば、図13で処理時間“task_time”と設定値“DEFINED_TIME”の比が1より小さい場合、使用状況判定処理は第1の手法と同様にバス競合が発生していないと判定し、等価処理の置き換えを行わない。
【0069】
しかし、処理時間“task_time”が設定値“DEFINED_TIME”以上の場合、言い換えれば、図13で処理時間“task_time”と設定値“DEFINED_TIME”の比が1以上の場合、図13の確率に従って等価処理への置き換えを行ったり、あるいは等価処理への置き換えは行わずに、処理時間を再計測し記憶する。これは、処理時間“task_time”が設定値“DEFINED_TIME”以上の場合、第1の手法では必ずバス競合が発生中と判定していたが、第2の手法では乱数を用いた確率に応じてバス競合を判定するので、第1の手法とは逆の判定結果を出力する可能性を持たせた。逆の判定結果とは、バス競合が発生していないという判定結果である。
【0070】
そして、本実施の形態では図12に示すバス競合判定フローに従い、処理時間を再度記録することになる。つまり、バス競合の判定に乱数を加えることで判定を見直しする。これにより、実際にはバス競合が解消されたにもかかわらず、使用状況判定処理はバス競合がそのまま継続されている、といった間違った判断を避けることができる。
【0071】
第2の手法は一連の処理の中でバス競合が頻繁に発生するシステムに対して有効である。なお、図13では、処理時間“task_time”と設定値“DEFINED_TIME”の比が大きければ大きいほど、つまり、処理時間“task_time”が設定値よりも大きな値をとればとるほど等価処理へ置き換える確率が小さくなっている。これは、処理時間“task_time”が長ければ長いほど近い未来にバス競合は解消されるということが一般的に考えられるからである。
【0072】
なお、図13の発生確率の値については、対象システムの仕様に応じて適当な値を与える必要がある。
【0073】
以上、第2の手法により使用状況判定処理におけるバス競合の判定精度を向上できる。
【0074】
なお、本実施の形態の第2の手法では、バス競合の判定について乱数を用いた確率を使用したが、乱数を用いないバス競合の判定も考えられる。例えば、バス競合時における処理時間の平均値または最大値などの定数があらかじめ既知であれば、バス競合中と判定されてから一定周期ごとに処理時間の再計測及び記録を行うことも可能である。
【0075】
次に、第3の手法について説明する。
【0076】
外部メモリ2006へ頻繁にアクセスする処理が複数の箇所に存在する場合、その処理の呼び出し元(出現箇所)別にバス競合を判定すれば判定精度は向上する。第3の方法では、処理識別手段2201で識別した処理の出現箇所毎に処理時間を記憶し、それを使用することでバス競合の判定を高精度に行う。
【0077】
図8のソフトウェア処理システムでは、複数の処理が記述された関数を実行する際には、現在のプログラムカウンタを退避レジスタに一時的に退避させた後、関数の処理を実行し、関数の処理が終了した後、退避レジスタからプログラムカウンタを読み出してプログラムカウンタを元の値に戻す操作を行う。第3の手法では、出現箇所識別処理が上述の退避レジスタからプログラムカウンタを読み出すことで処理識別手段2201で識別した処理の出現箇所を特定する。
【0078】
図12の判定フローをもつ第1の手法に、さらに出現箇所識別処理を追加した場合のバス競合の判定フローを図14に示す。
【0079】
まず、処理識別手段2201で識別された処理に対し、出現箇所識別処理により処理の出現箇所を調査する。上述したように退避レジスタを参照することで、出現箇所の特定は可能である。次に、出現箇所毎に記憶した処理時間を参照する。次に、出現箇所毎に記憶した処理時間を設定値と比較することでバス競合が発生中か否かを判定し、バス競合が発生中であれば等価処理に置き換えて処理を実行し、バス競合が発生していなければ、処理時間を記憶しながら識別した処理をそのまま実行する。なお、出現箇所毎に処理時間を記憶する部分に処理時間が記憶されていない場合は、バス競合が発生していないと判定されたとみなし、処理時間を計測しながら処理識別手段2201で識別された処理を実行し、計測した処理時間を新規に記憶する。
【0080】
第3の手法は、ループ処理など同一の処理が繰り返して処理される場合、出現箇所別に判定した処理時間を参照することでバス競合の判定精度が向上する。
【0081】
なお、本実施の形態における処理時間“task_time”を、第1の実施の形態の使用状況監視装置に記憶することでバス競合の判定を行うことも可能である。このときのバス競合の判定フローを図15に示す。処理時間を求めた後、第1の実施の形態における使用状況監視装置にも処理時間を記憶することにより、バス競合を動的に判定でき、バス競合に伴う処理速度の低下を防ぐことが可能である。
【0082】
(第3の実施の形態)
図16は第3の実施の形態にかかわるソフトウェア処理システムのハードウェアの構成を示すブロック図である。図16において、ソフトウェア処理システムは、DSP4001とプロセッサ4002と、DSP使用状況監視装置4003と、DSP4001とプロセッサ4002で実行する処理である図17のオブジェクトコード4105を格納したメモリ4004で構成される。メモリ4004は、DSP4001とプロセッサ4002が処理を実行する際の共有メモリとして処理結果や処理データを記憶する。
【0083】
図17は、本発明の第3の実施の形態にかかわるコンパイラの処理フローを示す。
【0084】
図18は、本発明の第3の実施の形態にかかわるコンパイラによる処理の変更を示す。
【0085】
図19は、本発明の第3の実施の形態にかかわるDSP競合の判定フローを示す。
【0086】
図20は、本発明の第3の実施の形態にかかわるソフトウェア処理システムにおける処理の流れを示す。
【0087】
第3の実施の形態によるソフトウェア処理システムを図16〜図20を用いて具体的に説明する。
【0088】
図16では、プロセッサ4002はDSP4001を突き放し制御方式で制御しており、プロセッサ4002がメモリ4004から読み出したソフトウェアがDSP4001で実行する処理の場合は、プロセッサ4002はDSP4001へ処理要求を発行し、DSP4001は処理要求を受けた後、処理を実行する。ここで、DSP使用状況監視装置4003は、現在、DSP4001で処理が実行中か否かを記憶したレジスタ(記憶装置)であり、特定のアドレスが割り当てられているため、ソフトウェアの処理から読み出し可能である。
【0089】
図17はソフトウェアのコンパイラのフローである。C言語などの処理記述言語で書かれたソースコード4102は、プロセッサ用ライブラリ4103とDSP用ライブラリ4104を用いて、オブジェクトコード4105に変換される。その結果、オブジェクトコード4105には実行に必要なプロセッサ用ライブラリ4106とDSP用ライブラリ4107が含まれる。
【0090】
本実施の形態のコンパイラは、処理記述言語からオブジェクトコードを生成する通常のコンパイラの機能の他に、ソースコード4102からDSP4001で実行する処理を識別する処理識別手段と、処理識別手段で識別した処理に対し特定の処理を付加する処理付加手段を備える。処理識別手段および処理付加手段による処理の変更を図18に示す(左の数字は行番号)。ここで、図18(a)の処理記述言語で書かれたソースコードは、処理識別手段を用いて、ソースコード4102からDSP4001で実行されるとして識別された処理を表している。つまり、関数“func1()”、“func2()”、“func3()”は全てDSP4001で実行される処理である。なお、DSP4001で実行する処理をあらかじめ処理識別手段に登録することでソースコードからDSP4001で実行する処理を識別可能である。
【0091】
図18(b)の処理記述言語で書かれたソースコードは、処理付加手段で付加された処理を示す。なお、便宜上、図18(b)では、処理付加手段はfunc2のみに特定の処理を付加しているが、処理付加手段は、処理識別手段で識別した全ての処理に対して特定の処理を付加しており、func1,func3についてもfunc2と同様に特定の処理が付加される。
【0092】
処理付加手段により付加される特定の処理とは、使用状況判定処理と置換処理である。使用状況判定処理とは、DSP4001が処理を実行中か否かをDSP使用状況監視装置4003を読み出すことで判定する処理である。図18(b)では、8行目の“if(DSPが待ち状態)”が使用状況判定処理に相当する。ここで待ち状態とは、DSP4001は処理を実行しておらず、プロセッサ4002からの処理要求を待っている状態を表す。図18(b)では9行目から11行目が相当し、func2の処理内容として、DSP用ライブラリ4104を使用した場合を“func2_dsp()”、プロセッサ用ライブラリ4103を使用した場合を“func2_cpu()”としている。図18では、置換後の処理としてプロセッサで同等の機能をもつ処理を行った場合を示す。
【0093】
つまり、本実施の形態では、DSP4001を使用する処理を識別し、その処理を実行する前にDSP使用状況監視装置4003を観測することでDSP4001の状態を判定する。そして、判定結果を受けて、DSP4001が待ち状態であれば、そのままDSP4001で処理を実行するが、DSP4001が他の処理を実行中の場合は、DSP4001を使用しない他の処理に置換する。このようなソフトウェア処理変更処理により、DSP競合を避けることができる。参考として、図19に本実施の形態のDSP競合の判定フローを示す。
【0094】
次に具体例として、本実施の形態のソフトウェア処理システムにおける処理の流れを図20に示す。
【0095】
図20(a)は、DSP競合が発生しない場合における本実施の形態のソフトウェア処理システムの処理の流れである。ソフトウェアには、func0,func1,func2,func3,func4,func5,func6の処理があり、func0,func2,func4については、プロセッサ4002からDSP4001へ処理要求を発行し、それぞれDSP用ライブラリ4104を用いてfunc0_dsp,func2_dsp,func4_dspをDSP4001上で実行する。また、DSP4001とプロセッサ4002は共有メモリを用いて互いの処理結果を受け渡しており、func0_dspとfunc2_dspとfunc4_dspとfunc5は処理結果を共有メモリ4004に格納し、格納された処理結果は、func3とfunc5が処理を実行する際に読み出す。図20(a)のようにDSP競合が発生しない場合には、プロセッサ4002とDSP4001の資源を無駄なく使用しながら処理を実行する。
【0096】
しかし、図20(b)のようにfunc0_dspの処理時間が長くなった場合、func1がfunc2_dspの処理要求を発行した場合、DSP競合が発生し、func0_dspが終了するまでfunc2_dspは処理を開始できない。その結果、func2_dspの処理結果を用いるfunc3も実行できなくなり、処理全体の速度が遅くなってしまう。
【0097】
そこで、本実施の形態のソフトウェア処理システムでは、func1がfunc2_dspの処理要求を発行した際に、DSP使用状況監視装置4003を観測することでDSP競合を認識し、func2と等価な機能でありDSP4001でなくプロセッサ4002上で処理を行うfunc2_cpuをfunc2_dspの代わりに実行する。つまり、図20(b)では、DSP4001で実行する処理の処理要求を発行する際にDSP4001の状態を監視し、処理をDSP4001かプロセッサ4002に的確に割り振るソフトウェア処理変更処理を用いる。これによりDSP競合を防ぐことができ、処理速度の低下を防ぐ。さらに、処理を的確に割り当てて待ち状態のプロセッサ4002を使用することで、資源を効率的に使用可能である。
【0098】
なお、本実施の形態のコンパイラの処理識別手段、処理付加手段により、処理サイクル数は増えるが、DSP使用状況監視装置4003以外、新規にハードウェアを追加することなく、DSP競合を避け、処理速度の低下を防止できる。
【0099】
(第4の実施の形態)
第4の実施の形態によるソフトウェア処理システムを図21〜図28を用いて具体的に説明する。
【0100】
図21は、第4の実施の形態にかかわるソフトウェア処理システムのハードウェアの構成を示すブロック図である。図21においてソフトウェア処理システムは、プロセッサ5001と、DSP5002と、プロセッサ5001とDSP5002で実行するソフトウェアを格納した記憶装置5003と、周辺回路5004と、バス調停回路5007と、外部メモリ5005と、共有バス5006と、調停回路5008と、使用状況監視装置5009で構成される。図21では、プロセッサ5001はDSP5002を突き放し制御方式で制御しており、プロセッサ5001が記憶装置5003から読み出したソフトウェアがDSP5002で実行すべき処理の場合はプロセッサ5001はDSP5002へ処理要求を発行し、DSP5002は処理要求を受けた後、処理を実行する。外部メモリ5005はプロセッサ5001、DSP5002が処理を実行する際に使用する共有メモリである。調停回路5008は、DSP5002で処理を実行中に新たな処理要求が発行された場合、すなわちDSP競合が発生した場合に、新たに発行された処理が実行できるか否かを判定する。また、使用状況監視装置5009はDSP5002の使用状況を監視し、要求に応じて使用状況を出力する。
【0101】
ここで、調停回路5008の制御フローを図22に示す。図22において、5101はDSP5002で実行する処理の処理要求が発生したか否かを判定する処理要求判定手段であり、5102は現在、DSP5002がプロセッサ5001からの処理要求を待っている待ち状態か否かを判定するDSP状態判定手段であり、5103は処理要求に対しDSP5002での処理の実行を促すDSP使用許可手段であり、5104は処理が終了したか否かを判定する処理終了判定手段である。DSP5002で処理を実行中に新たなDSP5002への処理要求が発生した場合、つまり、DSP競合が発生した場合、調停回路5008は、一旦、処理要求を受理し、実際の処理に関しては先の処理が終了するまで待機(wait)状態となる。DSP5002で実行する処理が頻繁に発生すると、DSP競合が発生し、調停回路5008により処理が待機(wait)状態となる。その結果、ソフトウェア処理システム全体の処理速度が低下する。そこで第4の実施の形態では、DSP競合を避け、処理速度の低下を防ぐ。
【0102】
図23は、本発明の第4の実施の形態におけるソフトウェアのコンパイラの処理フロー図を示す。コンパイラは、まず、処理識別手段5201としてDSP5002で実行する処理を識別する。これは、処理識別手段5201がDSP5002で実行する処理をあらかじめ認識していれば可能である。次に、識別した処理に対して、これと機能的には等価であるが、プロセッサ5001で実行する処理である等価処理があらかじめライブラリ等で用意されているか否かを判定する。もし用意されていれば、コンパイラは処理識別手段5201で識別した処理に対して等価処理、記憶処理、使用状況判定処理、置換処理を追加する。ここで記憶処理とはDSP5002で実行処理の処理要求が発行されてから処理が開始するまでの待ち時間を記録する処理であり、使用状況判定処理とは記憶処理で記憶した使用状況の情報からDSP競合が発生しているか否かを判定する処理であり、置換処理とは処理識別手段5201で識別した処理を等価処理へ置き換える処理を示す。
【0103】
図24は、図23の処理フローをもつコンパイラを使用したときのDSP5002で実行する処理に対する変更を示す図である。図24では、DSP5002で実行する処理を関数“dsp_task()”とし、この等価処理を“proc_dsptask()”としている。コンパイラは、あらかじめDSP5002で実行する処理を登録することで処理識別手段5201を用いてソフトウェアの中から関数“dsp_task()”を識別する。次に、コンパイラは処理識別手段5201で識別した処理に対して上記の等価処理、記憶処理、使用状況判定処理、置換処理を付加する。
【0104】
まず、図24(b)の2行目では、ソフトウェアに使用状況判定処理を付加する。ここで“wait_time”はプロセッサ5001がDSP5002で実行する処理の処理要求を発行してから処理が開始するまでの待ち時間であり、“DEFINED_TIME”はあらかじめ設定された設定値である。待ち時間“wait_time”は、過去に発生したDSP5002で実行する処理の待ち時間を表しており、現時刻に発生するDSP5002で実行する処理要求を発行する前に“wait_time”を参照し、設定値である“DEFINED_TIME”と比較することでDSP競合を判定する。DSP競合が発生中と判定された場合、図22の制御フローに従う調停回路5008では、DSP競合の発生時に処理を待機状態とするため、そのときの待ち時間は長くなる。つまり、DSP5002で実行する処理の待ち時間がある程度大きくなるとDSP競合が発生したと推定できる。なお、設定値については、ソフトウェア処理システムの仕様に応じて的確な値を設定するのが望ましい。
【0105】
次に、図24(b)の3行目から6行目は、記憶処理を示す。使用状況判定処理によりDSP競合が発生していないと推定された場合、処理要求を発行した時点と“dsp_task()”の実行が開始される時点のタイマーの値を参照し、その差を算出することで待ち時間“wait_time”を算出している。
【0106】
図24(b)の9行目から11行目は、置換処理を示す。使用状況判定処理によりDSP競合が発生していると推定された場合、さらに、DSP競合を発生させることを防ぐため、プロセッサ5001で実行する等価処理に置き換える。なお、置換処理で置換する処理は、処理の整合性を保つために機能的に等価であるが、DSP5002で実行しない処理が望ましい。
【0107】
第4の実施の形態では、上述のコンパイラが追加した等価処理、記憶処理、使用状況判定処理、置換処理により、使用状況監視処理の過程およびソフトウェア処理変更処理の過程を実現する。つまり、使用状況監視処理の過程とは、記憶処理により待ち時間“wait_time”を記憶しており、使用状況判定処理へ待ち時間“wait_time”を出力する。ソフトウェア処理変更処理の過程とは、識別した処理を等価処理へ置き換える置換処理であり、使用状況監視装置から出力される待ち時間に基づいてDSP競合を判定し、DSP競合が発生していれば処理の置き換えを行う。
【0108】
ここで、本本実施の形態によるDSP競合の判定フローを図25に示す。処理識別手段5201で識別した処理に対し、前回識別した処理を実行した際の待ち時間“wait_time”と設定値“DEFINED_TIME”を比較する。待ち時間“wait_time”が設定値“DEFINED_TIME”以上の場合には、使用状況判定処理はDSP競合が発生中であると判定し、等価処理への置き換えを行う。逆に待ち時間“wait_time”が設定値“DEFINED_TIME”よりも小さい場合には、使用状況判定処理はDSP競合が発生していないと判定し、処理識別手段5201で識別した処理を待ち時間“wait_time”を記憶しながら実行する。
【0109】
ここで「前回識別した処理を実行した際の待ち時間」とは、2つ考えられる。1番目の待ち時間は処理識別手段2201で識別した処理の中で、現時刻から1回前に記録した待ち時間、つまり、記録した待ち時間の中で最も新しいものが該当する。2番目の待ち時間は、現時刻で識別した処理と同一の処理を過去に実行したときに記録した待ち時間が該当する。1番目の待ち時間では、待ち時間は常に最新のものを1つだけ記憶するが、2番目の待ち時間では、識別された処理毎に待ち時間を記憶する必要がある。
【0110】
以上、本実施の形態では、待ち時間“wait_time”と設定値“DEFINED_TIME”の比較結果より、DSP競合が発生中か否かを判定し、DSP競合が発生中と判定された場合は、DSP5002で実行する処理をプロセッサ5001で実行する処理に自動で置換する。その結果、動的にDSP競合を判定しながら自動で処理の割り当てを行うことができるとともに、新たなDSP競合を避けることができ、処理速度の低下を防止できる。なお、第4の実施の形態における上記の発明内容を後述の発明と区別するために第4の手法とする。
【0111】
さらに、第5の手法としての使用状況判定処理においては、使用状況監視装置から出力される競合情報である待ち時間“wait_time”と事前に設定しておいた設定値“DEFINED_TIME”との比較結果に加えて、乱数を使用することでDSP競合の判定を行う。
【0112】
図26は、待ち時間“wait_time”と設定値“DEFINED_TIME”の比に対する等価処理への置き換えを行う確率を示している。待ち時間“wait_time”が設定値“DEFINED_TIME”よりも小さい場合、言い換えれば、図26で待ち時間“wait_time”と設定値“DEFINED_TIME”の比が1より小さい場合、使用状況判定処理は第4の手法と同様にDSP競合が発生していないと判定し、等価処理の置き換えを行わない。
【0113】
しかし、待ち時間“wait_time”が設定値“DEFINED_TIME”以上の場合、言い換えれば、図26で待ち時間“wait_time”と設定値“DEFINED_TIME”の比が1以上の場合、図26の確率に従って等価処理への置き換えを行ったり、あるいは等価処理への置き換えは行わずに待ち時間を再計測し記憶する。これは、処理時間“wait_time”が設定値“DEFINED_TIME”以上の場合、第4の手法では必ずDSP競合が発生中と判定していたが、第5の手法では乱数を用いた確率に応じてDSP競合を判定するので、第4の手法とは逆の判定結果を出力する可能性を持たせた。逆の判定結果とは、DSP競合が発生していないという判定結果である。
【0114】
そして、本実施の形態では図25に示すDSP競合判定フローに従い、待ち時間を再度記録することになる。つまり、DSP競合の判定に乱数を加えることで判定を見直しする。これにより、実際にはDSP競合が解消されたにもかかわらず、使用状況判定処理はDSP競合がそのまま継続されている、といった間違った判断を避けることができる。
【0115】
第5の手法は一連の処理の中でDSP競合が頻繁に発生するシステムに対して有効である。なお、図26では、待ち時間“wait_time”と設定値“DEFINED_TIME”の比が大きければ大きいほど、つまり、待ち時間“wait_time”が設定値よりも大きな値をとればとるほど等価処理へ置き換える確率が小さくなっている。これは、待ち時間“wait_time”が長ければ長いほど近い未来にDSP競合は解消されるということが一般的に考えられるからである。
【0116】
なお、図26の発生確率の値については、対象システムの仕様に応じて適当な値を与える必要がある。
【0117】
以上、第5の手法により使用状況判定処理におけるDSP競合の判定精度を向上できる。
【0118】
なお、本実施の形態の第5の手法では、DSP競合の判定について乱数を用いた確率を使用したが、乱数を用いないDSP競合の判定も考えられる。例えば、DSP競合時における待ち時間の平均値または最大値などの定数があらかじめ既知であれば、DSP競合中と判定されてから一定周期ごとに待ち時間の再計測及び記録を行うことも可能である。
【0119】
次に、第6の手法について説明する。
【0120】
DSP5002で実行する処理が複数の箇所に存在する場合、その処理の呼び出し元(出現箇所)別にDSP競合を判定すれば判定精度は向上する。第6の方法では、処理識別手段5201で識別した処理の出現箇所毎に待ち時間を記憶し、それを使用することでDSP競合の判定を高精度に行う。
【0121】
図21のソフトウェア処理システムでは、複数の処理が記述された関数を実行する際には、現在のプログラムカウンタを退避レジスタに一時的に退避させた後、関数の処理を実行し、関数の処理が終了した後、退避レジスタからプログラムカウンタを読み出してプログラムカウンタを元の値に戻す操作を行う。第6の手法では、出現箇所識別処理が上述の退避レジスタからプログラムカウンタを読み出すことで処理識別手段5201で識別した処理の出現箇所を特定する。
【0122】
図25の判定フローをもつ第4の手法に、さらに出現箇所識別処理を追加した場合のDSP競合の判定フローを図27に示す。
【0123】
まず、処理識別手段5201で識別された処理に対し、出現箇所識別処理により処理の出現箇所を調査する。上述したように退避レジスタを参照することで、出現箇所の特定は可能である。次に、出現箇所毎に記憶した待ち時間を参照する。次に、出現箇所毎に記憶した待ち時間を設定値と比較することでDSP競合が発生中か否かを判定し、DSP競合が発生中であれば等価処理に置き換えて処理を実行し、DSP競合が発生していなければ待ち時間を記憶しながら識別した処理をそのまま実行する。なお、出現箇所毎に記憶した待ち時間に待ち時間が記憶されていない場合は、DSP競合が発生していないと判定されたとみなし、待ち時間を計測しながら処理識別手段5201で識別された処理を実行し、計測した待ち時間を新規に記憶する。
【0124】
第6の手法は、ループ処理など同一の処理が繰り返して処理される場合、出現箇所別に判定した待ち時間を参照することでDSP競合の判定精度が向上する。
【0125】
なお、本実施の形態における待ち時間“wait_time”を、第3の実施の形態の使用状況監視装置に記憶することでDSP競合の判定を行うことも可能である。このときのDSP競合の判定フローを図28に示す。待ち時間を求めた後、第1の実施の形態における使用状況監視装置にも待ち時間を記憶することにより、DSP競合を動的に判定でき、DSP競合に伴う処理速度の低下を防ぐことが可能である。
【0126】
(第5の実施の形態)
図29は第5の実施の形態にかかわるソフトウェア処理システムのハードウェアの構成を示すブロック図である。図29において、ソフトウェア処理システムは、DSP7001とプロセッサ7002と、DSP使用状況監視装置7003と、DSP7001とプロセッサ7002で実行する処理である図30のオブジェクトコードを格納したメモリ7004で構成される。メモリ7004は、DSP7001とプロセッサ7002が処理を実行する際の共有メモリとして処理結果や処理データを記憶する。
【0127】
図30は第5の実施の形態にかかわるソフトウェア処理システムで実行するソフトウェアを示す。
【0128】
図31は第5の実施の形態にかかわるDSP競合時の処理フローを示す。
【0129】
図32は第5の実施の形態にかかわるソフトウェア処理システムにおける処理の流れを示す。
【0130】
第5の実施の形態によるソフトウェア処理システムを図29〜図32を用いて具体的に説明する。
【0131】
図29では、プロセッサ7002はDSP7001を突き放し制御方式で制御しており、プロセッサ7002はメモリ7004からソフトウェアをフェッチ、デコードし、DSP7001で実行する処理の場合、プロセッサ7002はDSP7001へ処理要求を発行することでDSP7001は処理を実行する。ここで、プロセッサ7002からDSP7001への処理要求の発行について、さらに詳しく説明する。
【0132】
プロセッサ7002は、まず、DSP7001にあるコマンドバッファに処理コマンドおよび処理を行うのに必要なデータを書き込む。データ書き込みの終了後、プロセッサ7002はDSP7001へ処理の開始要求を発行し、それを受けたDSP7001は、コマンドバッファから処理コマンド、データを読み出すことで処理が実行される。つまり、第5の実施の形態において、プロセッサ7002からDSP7001への処理要求とは、DSP7001のコマンドバッファへの処理コマンド、データの書き込みおよび処理の開始要求の発行という一連の動作を意味する。
【0133】
また、図29におけるDSP7001の使用状況監視装置7003は、DSP7001が現在処理を実行中か否かを監視するとともに、プロセッサ7002がDSP7001のコマンドバッファへ処理コマンドおよびデータの書き込みを行うか否かを監視する。そして、DSP7001が任意の処理を実行中にプロセッサ7002が処理要求を発行するためにDSP7001へのコマンドバッファへの書き込みを行った場合、DSP使用状況監視装置7003はプロセッサ7002へ割り込み信号を与える。DSP使用状況監視装置7003からの割り込み信号を受けたプロセッサ7002は、割り込みルーチンに分岐し、プロセッサ7002からDSP7001への処理の開始要求の発行を止める。その結果、DSP7001のコマンドバッファへは処理コマンド、データが格納されているが、DSP7001への処理の開始要求が止められるため、DSP7001は新たに処理を実行しない。つまり、割り込み信号により新規のDSP7001の処理要求がキャンセルされる。
【0134】
さらに、割り込み信号を受けたプロセッサ7002は、DSP7001で実行する処理の代わりに代替処理を行う。ここで代替処理とは、DSP7001を使用しない処理であり、本実施の形態ではDSP7001で実行する予定だった処理と機能的には等価で、プロセッサ7002上で実行する処理とする。
【0135】
以上の割り込み信号に対する動作を実現するために、本実施の形態のソフトウェア処理システムでは、DSP7001で実行する処理に対し、それと機能的に等価であるが、プロセッサ7002で実行する処理をそれぞれ用意する。そして、DSP使用状況監視装置7003による割り込み信号を受けた場合、プロセッサ7002はDSP7001への処理要求を止め、等価な処理をプロセッサ7002自身で代わりに実行する。
【0136】
図30に本実施の形態のソフトウェア処理システムにおけるソフトウェアを示す(左の数字は行番号)。main関数の中にfunc1,func2,func3,func4,func5,func6,func7,func8があり、その中でDSP7001で実行する処理は、func2,func4,func6である。ソフトウェアにはプロセッサ7002上で実行する処理であるプロセッサ用ライブラリと、DSP7001上で実行する処理であるDSP用ライブラリが含まれており、図30におけるfunc2,func4,func6については、それぞれfunc2_dsp,func4_dsp,func6_dspというDSP用ライブラリを用いてDSP7001上で処理を実行できるし、func2_cpu,func4_cpu,func6_cpuというCPU用ライブラリを用いてプロセッサ7002上でも実行可能とする。
【0137】
図31は、図30のソフトウェアを実行した際のDSP競合時の処理フローであり、先に説明したようにDSP7001が他の処理を実行中にDSP7001に対して新規に処理要求が発行されようとしている場合、プロセッサ7002へ割り込み信号を与え、DSP用ライブラリを使用する処理をCPU用ライブラリを使用する処理に置き換える。
【0138】
図32は、本実施の形態のソフトウェア処理システムにおいて図30のソフトウェアを実行したときの処理の流れを示している。
【0139】
図32(a)はDSP7001のタスクが競合しない場合を示す。プロセッサ7002でのfunc1を実行する。プロセッサ7002はfunc1を実行後、DSP7001に対しfunc2の処理要求を発行し、DSP7001ではfunc2_dspを実行する。一方、プロセッサ7002はfunc3を実行する。DSP7001はfunc2を実行後、処理結果をメモリ7004に書き込む。なお、メモリ7004はプロセッサ7002、DSP7001からアクセス可能な共有メモリである。プロセッサ7002でfunc3を実行後、DSP7001でfunc4の処理要求を発行し、DSP7001でfunc4_dspを実行し、プロセッサ自身はfunc5を実行する。DSP7001はfunc4を実行後、処理結果をメモリ7004に書き込む。プロセッサ7002はfunc5を実行後、DSP7001でfunc6の処理要求を発行し、DSP7001でfunc6_dspを実行し、プロセッサ自身はfunc7を実行する。DSP7001はfunc6を実行後、処理結果をメモリ7004に書き込む。プロセッサ7002は、以上の処理結果をメモリ7004から読み取り、func8を処理する。以上、図32(a)ではDSP7001のタスクが競合しないためプロセッサ7002とDSP7001の資源を効率良く使用できる。
【0140】
図32(b)では、DSP7001のタスクが競合する場合を示す。ここではfunc2_dspが終了しないうちに、プロセッサ7002からfunc4の処理要求を発行され、DSP競合が起きている。その結果、func4の処理はfunc2_dspが終了するまで停止させられるのでシステムの処理速度が低下する。
【0141】
そこで本実施の形態では、DSPの使用状況監視装置7003がDSP競合を判定し、func4の処理要求を発行しようとするプロセッサ7002へ割り込み信号を発生させる。それを受けたプロセッサ7002は、自身が実行中のfunc5を中断し、func4をCPU用ライブラリであるfunc4_cpuを用いてCPU上で処理し、メモリ7004に処理結果を書き込む。その後、プロセッサ7002は中断していたfunc5を再開する。
【0142】
このように、本実施の形態のソフトウェア処理システムでは、処理を実行しながらDSP競合を判定し、処理をDSP7001かプロセッサ7002に的確に割り振ることによって、DSP競合を避け、処理速度の低下を防ぐ。さらに、DSPの使用状況監視装置7003というハードウェアで処理することによって、割り込みルーチンを用意することを除いてソースコード4102に対する記述の修正、追加がないため、アセンブラやオブジェクトコードで提供された場合にも対応できる。
【0143】
(第6の実施の形態)
以下、本発明の第6の実施の形態を図面に基づいて説明する。
【0144】
図33は、本発明の第6の実施の形態にかかわるソフトウェア処理システムのハードウェアの構成を示すブロック図である。
【0145】
図33において、8001はCPU、8002はDSP、8003はバス、8004は外部メモリ、8005は周辺回路、8006はCPU8001が持つメモリ、8007はメモリ8006中のバンク形式であるDSP8002用のメモリバンク、8008はメモリ8006中のバンク形式であるCPU8001用のメモリバンク、8009はDSP8002が処理を行っているかどうかを監視する使用状況監視装置、8010はDSP用メモリバンク8007とCPU用メモリバンク8008とを切り替えるバンク切り替え装置である。
【0146】
図34は、本発明の第6の実施の形態にかかわるソフトウェア処理システムのソフトウェアの構成を示す図である。
【0147】
図34において、8101はCPU8001およびDSP8002上で動作するプログラム、8102,8103,8104はプログラム8101中に記述され、DSP8002を使用するコマンドを含んでライブラリ化された処理、8105,8106,8107は処理8102,8103,8104とそれぞれ同等の機能を持つ、CPU8001を使用するコマンドを含んでライブラリ化された処理である。
【0148】
図35は、本発明の第6の実施の形態にかかわるソフトウェア処理システムにおけるコンパイルフローを示すフローチャートである。
【0149】
図35において、8201はプログラム8101をコンパイルするコンパイル手段、8202はDSP8002で行われる処理を識別する処理識別手段、8203はDSP用メモリバンク8007またはCPU用メモリバンク8008にマッピングするマッピング手段である。
【0150】
以上のように構成した本実施の形態の動作について説明する。
【0151】
なお、図36は、本発明の第6の実施の形態にかかわるソフトウェア処理システムにおけるメモリバンクへのソフトウェアのマッピングを示す図である。
【0152】
本実施の形態において、DSP8002はCPU8001からの処理要求を受付けることにより処理を実行し、CPU8001とDSP8002との間の制御方式は突き放し制御方式である。プログラム8101に記述される処理func1,func2,func3は、DSP8002またはCPU8001を使用するコマンドを含み、手順として処理func1、処理func2、処理func3の順番であって、それぞれの処理にはデータ依存がないものとする。
【0153】
プログラム8101が、コンパイラが有するコンパイル手段8201によってコンパイルされる際、処理識別手段8202によってDSP8002を使用するコマンドを含んだ処理である処理func1,func2,func3を識別し、図36に示すように、メモリバンクのマッピング手段8203によって、DSP用メモリバンク8007にはDSP8002用のライブラリ化された処理8102,8103,8104がマッピングされる。同様に、CPU用メモリバンク8008にはCPU8001用のライブラリ化された処理8105,8106,8107がマッピングされる。このとき、処理8102と処理8105は同じアドレス番地を開始アドレスとする。処理8103と処理8106、処理8104と処理8107についても同様である。このようにコンパイラは同じ名前である別々のプロセッサ用の処理を認識してコンパイルすることが可能であるという特徴を持つ。
【0154】
プログラム8101が処理される際、最初に処理func1が行われるとする。処理func1が呼び出され、処理func1がマッピングされている開始アドレスの命令がCPU8001によってフェッチされた瞬間に、バンク切り替え装置8010によってバンク切り替えのロックが実行される。このロックの実行によって、他の処理によるバンク切り替えが実行できないようになる。また、DSP8002が処理を行っているかどうかの情報が使用状況監視装置8009によって識別されていて、その情報はバンク切り替え装置8010への入力信号となり、バンク切り替え装置8010によってメモリ8006へバンク切り替えを実行するための要求が行われている。
【0155】
まず、DSP8002が他の処理を行っていない場合、バンク切り替えは、表側がDSP用メモリバンク8007であり、裏側がCPU用メモリバンク8008である。先ほどのバンク切り替えのロックによって、このバンク切り替えの状態は維持される。バンク切り替えのロックが実行されている間は、バンク切り替えの表側がDSP用メモリバンク8007になっているので、CPU8001はDSP用メモリバンク8007から処理8102を取り出す。処理8102にはDSP8002を使用するコマンドが含まれていて、CPU8001によって、このDSP8002を使用するコマンドが発行され、DSP8002によって処理が行われる。DSP8002は突き放し制御であるので、このコマンドの処理が終了する時間を特定することはできない。処理func1の呼び出し元であるプログラム8101のmain関数へ戻る際、このmain関数へ戻る命令がCPU8001によってフェッチされた瞬間に、バンク切り替え装置8010によってバンク切り替えのアンロックが実行される。そして、メモリ8006へのバンク切り替え要求が受け付けられ、結果として、表側がCPU用メモリバンク8008となり、裏側がDSP用メモリバンク8007となる。
【0156】
これとは逆の場合、つまり、処理func1が呼び出された際、DSP8002が他の処理を行っていた場合、バンク切り替えは、表側がCPU用メモリバンク8008であり、裏側がDSP用メモリバンク8007である。バンク切り替えのロックが実行されているので、このバンク切り替えの状態はアンロックが実行されるまで維持される。DSP8002が他の処理のよって使用されているので、バンク切り替え装置8010はメモリ8006へ、バンク切り替えを表側がCPU用メモリバンク8008、裏側がDSP用メモリバンク8007となるように要求することになる。
【0157】
バンク切り替えは表側がCPU用メモリバンク8008となっているので、CPU8001はCPU用メモリバンク8008から処理8105を取り出す。処理8105は、DSP8002を使用するコマンドを含んだ処理8102と同等の機能を持っていて、CPU8001を使用するコマンドを含んでいるので、CPU8001によって処理が行われる。処理8105の処理が終了し、処理func1の呼び出し元であるプログラム8101のmain関数へ戻る際、このmain関数へ戻る命令がCPU8001によってフェッチされた瞬間に、バンク切り替え装置8010によってバンク切り替えのアンロックが実行される。そして、メモリ8006へのバンク切り替え要求が受け付けられ、結果として、表側がDSP用メモリバンク8007となり、裏側がCPU用メモリバンク8008となる。CPU8001が処理8105を行っている間に、DSP8002を使用していた他の処理が終了した場合は、使用状況監視装置8009の出力を受けて、バンク切り替え装置8010が、バンク切り替えの表側をDSP用メモリバンク8007とし、裏側をCPU用メモリバンク8008とする要求を行うことになる。しかし、この要求が受け付けられてバンク切り替えが実行されるのは、前述と同様にバンク切り替えのアンロックが実行されてからである。
【0158】
次に、処理func1のDSP8002を使用する処理8102中のコマンドが、DSP8002によって処理が行われている間、次の処理である処理func2が呼び出されたとする。このとき、DSP8002は使用中であり、先ほどのバンク切り替えのアンロックはバンク切り替え装置8010によって実行されているので、バンク切り替えは表側がCPU用メモリバンク8008となり、裏側がDSP用メモリバンク8007となっている。処理func2が呼び出され、処理func2がマッピングされている開始アドレスの命令がCPU8001によってフェッチされた瞬間に、バンク切り替え装置8010によってバンク切り替えのロックが実行される。このロックの実行によって、他の処理によるバンク切り替えが実行できないようになる。
【0159】
バンク切り替えは表側がCPU用メモリバンク8008となっているので、CPU8001はCPU用メモリバンク8008から処理8106を取り出す。処理8106は、DSP8002を使用するコマンドを含んだ処理8103と同等の機能を持っていて、CPU8001を使用するコマンドを含んでいるので、CPU8001によって処理が行われる。処理8106の処理が終了し、処理func2の呼び出し元であるプログラム8101のmain関数へ戻る際、このmain関数へ戻る命令がCPU8001によってフェッチされた瞬間に、バンク切り替え装置8010によってバンク切り替えのアンロックが実行される。そして、メモリ8006へのバンク切り替え要求が受け付けられ、結果として、表側がDSP用メモリバンク8007となり、裏側がCPU用メモリバンク8008となる。CPU8001が処理8106を行っている間に、DSP8002を使用していた処理8102中のコマンドが終了した場合は、先ほどの処理func1の処理を行う際にDSP8002が使用中であった場合と同様に、バンク切り替え装置8010によってメモリ8006へバンク切り替えの要求が行われ、バンク切り替えのアンロックが実行されてから、この要求が受け付けられることになる。
【0160】
最後に処理func3が呼び出される。先ほどのDSP8002が使用中でない場合の処理func1の場合と同様に、バンク切り替え装置8010によって、バンク切り替えのロック、バンク切り替え要求が行われ、DSP用メモリバンク8007からDSP8002を使用するコマンドを含んだ処理8104がCPU8001によって取り出され、DSP8002を使用するコマンドは突き放し処理としてDSP8002によって実行される。プログラム8101のmain関数へ戻る際のバンク切り替えのアンロックの実行、バンク切り替えの表側をCPU用メモリバンク8008とし、裏側をDSP用メモリバンク8007とするバンク切り替えの実行についても同様である。
【0161】
以上のように本実施の形態によれば、バンク切り替え装置8010を用いた方法によって、DSP8002におけるDSP競合の発生を軽減し、DSP8002を効率良く使用することが可能となる。この方法を実現するために、プログラム8101を修正する必要がなくそのまま適用できるので、ソフトウェアのオーバーヘッドがほとんどない。また、使用状況監視装置8009およびバンク切り替え装置8010という専用のハードウェアを用いることによって、バス8003の使用状況の監視およびソフトウェア処理変更を比較的高速に実現することができる。
【0162】
なお、本実施の形態では、プロセッサを1つのCPU、リソースを1つのDSPとしたが、それぞれ複数のCPU、DSPでも良く、少なくとも1つのリソースとそのリソースを使用する少なくとも1つのプロセッサであれば良いものである。
【0163】
【発明の効果】
以上説明したように、本発明によれば、リソースの競合を動的に判定し、リソースを使用する処理の処理方法を変更することでリソース競合時の処理の停止を避け、システムの処理速度の低下を抑制することができる。
【0164】
その第1の方法としては、ソフトウェアをコンパイルする段階で、リソースを使用する処理を識別し、その処理に対しリソース競合を判定する処理と、その判定結果に基づいて処理を別の等価処理に置き換える一連の処理を組み込む。これにより、リソース競合を避け、システムの処理速度の低下を避けることができる。
【0165】
さらに、リソースが共有メモリに接続されたバスの場合、バス競合の履歴を採取することで、さらに高精度なリソース競合の判定が可能である。
【0166】
また、第2の方法としては、プロセッサで任意の処理を実行中に新規の処理要求が発生した場合、割り込み信号をプロセッサへ与えることで新規の処理を別プロセッサで代用させる。本発明を実現するために割り込みルーチンを用意する以外は、もともとのソフトウェアに対して処理の変更、追加をする必要が無く、ソフトウェアをそのまま適用でき、さらにソフトウェアによる競合対策の処理がないため、ソフトウェアのオーバーヘッドが少ない。
【0167】
また、第3の方法として、あらかじめ同一アドレスを割り当てた複数のメモリバンクを用意し、プロセッサが任意の処理を実行中に新規の処理要求が発生した場合、メモリバンクを切り替えることで新規処理を別のプロセッサで代わりに実行させる。これについては、競合対策の処理がメモリバンク切り替え回路のみで実現できるため、他の方法に比べて高速である。
【0168】
また、第4の方法として、処理の待ち時間や処理時間などを計測することでリソース競合が発生中か否かを判定し、リソース競合が発生中ならば新たにリソース競合を引き起こす処理を発行しない。これにより、競合によるシステムの処理速度の低下を防ぐことが可能である。
【0169】
さらに、第4の方法に対し、定期的または不定期に競合判定を補正することで、さらに高精度な競合判定が可能である。
【0170】
さらに、第4の方法に対し、競合情報を競合を引き起こす処理の出現箇所とともに記憶することで、ループ処理における競合判定を高精度に行うことが可能である。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるソフトウェア処理システムの基本構成を示すブロック図
【図2】本発明の第1の実施の形態におけるソフトウェア処理システムのハードウェアの構成を示すブロック図
【図3】本発明の第1の実施の形態におけるソフトウェア処理システムのバスの使用状況監視装置の構成を示す図
【図4】本発明の第1の実施の形態におけるソフトウェア処理システムのソフトウェアの構成を示す図
【図5】本発明の第1の実施の形態におけるソフトウェア処理システムにおけるコンパイルフローを示すフローチャート
【図6】本発明の第1の実施の形態におけるソフトウェア処理システムにおけるバスアクセス識別装置が識別するバスアクセスの状態を示す図
【図7】本発明の第1の実施の形態におけるソフトウェア処理システムにおける処理付加手段によるソフトウェアの変更を示す図
【図8】本発明の第2の実施の形態におけるソフトウェア処理システムのハードウェアの構成を示すブロック図
【図9】本発明の第2の実施の形態におけるソフトウェア処理システムのバス調停回路の制御フローを示すフローチャート
【図10】本発明の第2の実施の形態におけるソフトウェア処理システムのコンパイラの処理フローを示すフローチャート
【図11】本発明の第2の実施の形態におけるソフトウェア処理システムの外部メモリへ頻繁にアクセスする処理に対する変更を示す図
【図12】本発明の第2の実施の形態におけるソフトウェア処理システムのバス競合の判定フローを示すフローチャート
【図13】本発明の第2の実施の形態におけるソフトウェア処理システムの等価処理への置換を行う確率を示す図
【図14】本発明の第2の実施の形態におけるソフトウェア処理システムの出現箇所を考慮した場合のバス競合の判定フローを示すフローチャート
【図15】本発明の第2の実施の形態におけるソフトウェア処理システムのバス競合の判定フローを示すフローチャート
【図16】本発明の第3の実施の形態におけるソフトウェア処理システムのハードウェア構成を示すブロック図
【図17】本発明の第3の実施の形態におけるソフトウェア処理システムのコンパイラの処理フローを示すフローチャート
【図18】本発明の第3の実施の形態におけるソフトウェア処理システムのコンパイラによる処理の変更を示す図
【図19】本発明の第3の実施の形態におけるソフトウェア処理システムのDSP競合の判定フローを示すフローチャート
【図20】本発明の第3の実施の形態におけるソフトウェア処理システムの処理の流れを示すシーケンス図
【図21】本発明の第4の実施の形態におけるソフトウェア処理システムのハードウェア構成を示すブロック図
【図22】本発明の第4の実施の形態におけるソフトウェア処理システムの調停回路の制御フローを示すフローチャート
【図23】本発明の第4の実施の形態におけるソフトウェア処理システムのコンパイラの処理フローを示すフローチャート
【図24】本発明の第4の実施の形態におけるソフトウェア処理システムのDSPで実行する処理に対する変更を示す図
【図25】本発明の第4の実施の形態におけるソフトウェア処理システムのDSP競合の判定フローを示すフローチャート
【図26】本発明の第4の実施の形態におけるソフトウェア処理システムの等価処理への置換を行う確率を示す図
【図27】本発明の第4の実施の形態におけるソフトウェア処理システムの出現箇所を考慮した場合のDSP競合の判定フローを示すフローチャート
【図28】本発明の第4の実施の形態におけるソフトウェア処理システムのDSP競合の判定フローを示すフローチャート
【図29】本発明の第5の実施の形態におけるソフトウェア処理システムのハードウェア構成を示すブロック図
【図30】本発明の第5の実施の形態におけるソフトウェア処理システムのソフトウェアを示す図
【図31】本発明の第5の実施の形態におけるソフトウェア処理システムのDSP競合時の処理フローを示すフローチャート
【図32】本発明の第5の実施の形態におけるソフトウェア処理システムにおける処理の流れを示すシーケンス図
【図33】本発明の第6の実施の形態におけるソフトウェア処理システムのハードウェア構成を示すブロック図
【図34】本発明の第6の実施の形態におけるソフトウェア処理システムのソフトウェアの構成を示す図
【図35】本発明の第6の実施の形態におけるソフトウェア処理システムのコンパイルフローを示すフローチャート
【図36】本発明の第6の実施の形態におけるソフトウェア処理システムのメモリバンクマッピングを示す図
【符号の説明】
101 プロセッサ
102 リソース
103 使用状況監視処理手段
104 ソフトウェア処理変更処理手段
1001 CPU
1002 バス
1003 周辺回路
1004 外部メモリ
1005 使用状況監視処理装置
1101 バスアクセス識別装置
1102 バスアクセス状態レジスタ
1201 プログラム
1301 コンパイル手段
1302 処理識別手段
1303 処理付加手段
2001 プロセッサ
2002 DSP
2003 記憶装置
2004 周辺回路
2005 バス調停回路
2006 外部メモリ
2007 共有バス
2101 アクセス要求判定手段
2102 メモリ状態判定手段
2103 メモリアクセス許可手段
2104 処理終了判定手段
2201 処理識別手段
4001 DSP
4002 プロセッサ
4003 DSP使用状況監視装置
4004 メモリ
4101 コンパイラ
4102 ソースコード
4103 プロセッサ用ライブラリ
4104 DSP用ライブラリ
4105 オブジェクトコード
4106 プロセッサ用ライブラリ
4107 DSP用ライブラリ
5001 プロセッサ
5002 DSP
5003 記憶装置
5004 周辺回路
5005 外部メモリ
5006 共有バス
5007 バス調停回路
5008 調停回路
5101 処理要求判定手段
5102 DSP状態判定手段
5103 DSP使用許可手段
5104 処理終了判定手段
5201 処理識別手段
7001 DSP
7002 プロセッサ
7003 DSP使用状況監視装置
7004 メモリ
8001 CPU
8002 DSP
8003 バス
8004 外部メモリ
8005 周辺回路
8006 メモリ
8007 DSP用メモリバンク
8008 CPU用メモリバンク
8009 使用状況監視装置
8010 バンク切り替え装置
8101 プログラム
8201 コンパイル手段
8202 処理識別手段
8203 マッピング手段

Claims (18)

  1. プロセッサが使用するリソースの使用状況を監視する使用状況監視処理の過程と、
    前記使用状況監視処理の過程で得られる競合情報に応じて、実行されるソフトウェアの処理方法を変更するソフトウェア処理変更処理の過程とを含むことを特徴とするソフトウェア処理方法。
  2. 前記ソフトウェア処理変更処理の過程は、ソフトウェアがある処理を行うのに複数の実行方法を持ち、前記ソフトウェアの実行中に前記使用状況監視処理の過程で得られる競合情報に応じて、前記複数の実行方法の中から1つを選択することを特徴とする請求項1に記載のソフトウェア処理方法。
  3. 前記リソースは、処理の記憶装置および前記プロセッサと前記記憶装置を接続するバスであり、
    前記使用状況監視処理の過程は、前記バスの使用状況を監視することを特徴とする請求項1または請求項2に記載のソフトウェア処理方法。
  4. 前記使用状況監視処理の過程は、複数クロック遡ったバスの使用状況を記憶し、過去および現在の使用状況から前記競合情報を生成することを特徴とする請求項3に記載のソフトウェア処理方法。
  5. 前記使用状況監視処理の過程は、前記バスの使用時における使用時間を記憶し、前記使用時間が所定値以上か否かに基づき前記競合情報を生成することを特徴とする請求項3に記載のソフトウェア処理方法。
  6. 前記リソースは、前記プロセッサからの処理要求に応じて処理を行う第2のプロセッサであって、
    前記使用状況監視処理の過程は、前記第2のプロセッサの使用状況の監視を行うことを特徴とする請求項1に記載のソフトウェア処理方法。
  7. 請求項6に記載のソフトウェア処理方法が、さらに、同一アドレスでアクセス可能な複数のメモリバンクを有し、前記使用状況監視処理の過程で得られる競合情報は、前記複数のメモリバンクのうち1つのメモリバンクの選択を示す信号であることを特徴とする請求項6に記載のソフトウェア処理方法。
  8. 請求項1に記載のソフトウェア処理方法がさらにソフトウェアのコンパイラを有し、
    前記コンパイラは、
    ソフトウェアから前記リソースを使用する処理を識別する処理識別手段と、
    前記処理識別手段により識別された処理と等価な、前記リソースを使用しない等価処理と、
    前記使用状況監視処理の過程で得られる競合情報により使用状況を判定する使用状況判定処理と、
    前記使用状況判定処理の結果に応じて、前記処理識別手段により識別された処理を前記等価処理に置き換える置換処理とを、前記ソフトウェアに追加することを特徴とする請求項1に記載のソフトウェア処理方法。
  9. 請求項1に記載のソフトウェア処理方法がさらにソフトウェアのコンパイラを有し、
    前記コンパイラは、
    ソフトウェアから前記リソースを使用する処理を識別する処理識別手段と、
    前記処理識別手段により識別された処理と等価な、前記リソースを使用しない等価処理と、
    現時刻の前記使用状況監視処理の過程で得られる競合情報を記憶する記憶処理と、
    過去の時刻における前記競合情報により使用状況を判定する使用状況判定処理と、
    前記使用状況判定処理の結果に応じて、前記処理識別手段により識別された処理を前記等価処理に置き換える置換処理とを、前記ソフトウェアに追加することを特徴とする請求項1に記載のソフトウェア処理方法。
  10. 前記競合情報は、前記リソースの処理要求が発行されてから処理が終了するまでの処理時間であり、
    前記使用状況判定処理は、前記処理時間をある設定値と比較する処理であることを特徴とする請求項8または請求項9に記載のソフトウェア処理方法。
  11. 前記競合情報は、前記リソースの処理要求が発行されてから処理が実行するまでの待ち時間であり、
    前記使用状況判定処理は、前記待ち時間をある設定値と比較する処理であることを特徴とする請求項8または請求項9に記載のソフトウェア処理方法。
  12. 前記使用状況判定処理は、定期的または不定期に前記リソースの使用状況の判定を見直すことを特徴とする請求項8から請求項11までのいずれかに記載のソフトウェア処理方法。
  13. 前記使用状況判定処理は、乱数を用いて前記リソースの使用状況の判定を見直すことを特徴とする請求項12にソフトウェア処理方法。
  14. 請求項9に記載のソフトウェア処理方法において、
    前記コンパイラは、前記処理識別手段により抽出される処理が前記ソフトウェアの複数の箇所から抽出される場合、さらに、前記処理識別手段で識別された処理の出現箇所を識別する出現箇所識別処理を前記ソフトウェアに追加し、前記記憶処理は前記出現箇所毎に前記競合情報を記憶し、前記使用状況判定処理は前記出現箇所毎に記憶した前記競合情報を用いて判定を行うことを特徴とする請求項9に記載のソフトウェア処理方法。
  15. プロセッサと、
    前記プロセッサが使用するリソースと、
    前記リソースの使用状況を監視する使用状況監視装置と、
    前記使用状況監視装置で得られる競合情報に応じて、実行されるソフトウェアの処理方法を変更するソフトウェア処理変更装置を有することを特徴とするソフトウェア処理システム。
  16. 前記ソフトウェア処理変更装置は、ソフトウェアがある処理を行うのに複数の実行方法を持ち、前記ソフトウェアの実行中に前記競合情報に応じて、前記複数の実行方法の中から1つを選択することを特徴とする請求項15に記載のソフトウェア処理システム。
  17. 前記リソースは、前記プロセッサからの処理要求に応じて処理を行う第2のプロセッサであって、
    前記使用状況監視装置は、前記第2のプロセッサの使用状況の監視を行うことを特徴とする請求項15に記載のソフトウェア処理システム。
  18. 前記競合情報は、前記プロセッサへの割り込み信号であることを特徴とする請求項17に記載のソフトウェア処理システム。
JP2002355683A 2002-12-06 2002-12-06 ソフトウェア処理方法およびソフトウェア処理システム Pending JP2004192052A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002355683A JP2004192052A (ja) 2002-12-06 2002-12-06 ソフトウェア処理方法およびソフトウェア処理システム
US10/727,055 US7584464B2 (en) 2002-12-06 2003-12-04 Software processing method and software processing system
CNB2003101201423A CN100483360C (zh) 2002-12-06 2003-12-08 软件处理方法以及软件处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002355683A JP2004192052A (ja) 2002-12-06 2002-12-06 ソフトウェア処理方法およびソフトウェア処理システム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2008227262A Division JP4755232B2 (ja) 2008-09-04 2008-09-04 コンパイラ

Publications (1)

Publication Number Publication Date
JP2004192052A true JP2004192052A (ja) 2004-07-08

Family

ID=32756307

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002355683A Pending JP2004192052A (ja) 2002-12-06 2002-12-06 ソフトウェア処理方法およびソフトウェア処理システム

Country Status (3)

Country Link
US (1) US7584464B2 (ja)
JP (1) JP2004192052A (ja)
CN (1) CN100483360C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012014287A1 (ja) * 2010-07-27 2012-02-02 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4237661B2 (ja) * 2004-03-25 2009-03-11 株式会社東芝 システムlsiの設計支援システム及び設計支援方法
JP2007172430A (ja) * 2005-12-26 2007-07-05 Hitachi Ltd 半導体集積回路
US8407531B2 (en) * 2010-02-26 2013-03-26 Bmc Software, Inc. Method of collecting and correlating locking data to determine ultimate holders in real time
WO2012119380A1 (zh) * 2011-08-10 2012-09-13 华为技术有限公司 一种复位向量的代码实现方法、系统及设备
GB2500707B (en) * 2012-03-30 2014-09-17 Cognovo Ltd Multiprocessor system, apparatus and methods
CN103902443B (zh) * 2012-12-26 2017-04-26 华为技术有限公司 一种程序运行性能分析方法及装置
WO2017119098A1 (ja) * 2016-01-07 2017-07-13 株式会社日立製作所 計算機システム及び計算機の制御方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0330425B1 (en) 1988-02-23 1995-12-06 Digital Equipment Corporation Symmetric multi-processing control arrangement
JPH07504054A (ja) 1992-02-18 1995-04-27 アプル・コンピュータ・インコーポレーテッド コンピュータシステムにおけるコプロセッサのプログラミングモデル
JPH06243112A (ja) 1993-02-19 1994-09-02 Seiko Epson Corp マルチプロセッサ装置
JPH09269903A (ja) 1996-04-02 1997-10-14 Hitachi Ltd プロセス管理方式
JP3737560B2 (ja) 1996-04-19 2006-01-18 松下電器産業株式会社 ネットワークにおける分散処理方法及びそのシステム
JPH1118120A (ja) * 1997-06-20 1999-01-22 Fujitsu Ltd インテリジェントネットワークシステムのプロセス制御方式
US5913043A (en) * 1997-07-31 1999-06-15 Advanced Micro Devices, Inc. State machine based bus bridge performance and resource usage monitoring in a bus bridge verification system
US6157989A (en) 1998-06-03 2000-12-05 Motorola, Inc. Dynamic bus arbitration priority and task switching based on shared memory fullness in a multi-processor system
US6076944A (en) * 1998-10-27 2000-06-20 Maranon; David Nelosn Horticulture illumination system with integrated air flow cooling
US6505269B1 (en) * 2000-05-16 2003-01-07 Cisco Technology, Inc. Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system
US7155722B1 (en) * 2001-07-10 2006-12-26 Cisco Technology, Inc. System and method for process load balancing in a multi-processor environment
US7328261B2 (en) * 2001-11-21 2008-02-05 Clearcube Technology, Inc. Distributed resource manager

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012014287A1 (ja) * 2010-07-27 2012-02-02 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法
JP5397546B2 (ja) * 2010-07-27 2014-01-22 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法

Also Published As

Publication number Publication date
US7584464B2 (en) 2009-09-01
US20040168154A1 (en) 2004-08-26
CN100483360C (zh) 2009-04-29
CN1506827A (zh) 2004-06-23

Similar Documents

Publication Publication Date Title
US5864692A (en) Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
US8539485B2 (en) Polling using reservation mechanism
US9513959B2 (en) Contention management for a hardware transactional memory
US6009514A (en) Computer method and apparatus for analyzing program instructions executing in a computer system
US6622189B2 (en) Method and system for low overhead spin lock instrumentation
US20150154045A1 (en) Contention management for a hardware transactional memory
US8291431B2 (en) Dependent instruction thread scheduling
US7861042B2 (en) Processor acquisition of ownership of access coordinator for shared resource
KR20070080589A (ko) 메모리 속성들을 사용하기 위한 기술
De Oliveira et al. Timing analysis of the PREEMPT RT Linux kernel
CN103329102A (zh) 多处理器系统
Rashid et al. Integrated analysis of cache related preemption delays and cache persistence reload overheads
JP2004192052A (ja) ソフトウェア処理方法およびソフトウェア処理システム
JP5999216B2 (ja) データ処理装置
JP5532144B2 (ja) プロセッサ、電子制御装置、作成プログラム
US7779230B2 (en) Data flow execution of methods in sequential programs
JP4755232B2 (ja) コンパイラ
KR101892273B1 (ko) 스레드 프로그레스 트래킹 방법 및 장치
US7603673B2 (en) Method and system for reducing context switch times
US6775740B1 (en) Processor having a selector circuit for selecting an output signal from a hit/miss judgement circuit and data from a register file
US20080072009A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
JP5376042B2 (ja) マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム
CN112445587A (zh) 一种任务处理的方法以及任务处理装置
Rashid et al. Cache-aware schedulability analysis of prem compliant tasks
JPH0830562A (ja) マルチプロセッサシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071011

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071016

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071217

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080708

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080904