JP2008293487A - プロセッサシステム、バス制御方法および半導体装置 - Google Patents
プロセッサシステム、バス制御方法および半導体装置 Download PDFInfo
- Publication number
- JP2008293487A JP2008293487A JP2008113094A JP2008113094A JP2008293487A JP 2008293487 A JP2008293487 A JP 2008293487A JP 2008113094 A JP2008113094 A JP 2008113094A JP 2008113094 A JP2008113094 A JP 2008113094A JP 2008293487 A JP2008293487 A JP 2008293487A
- Authority
- JP
- Japan
- Prior art keywords
- identification information
- access request
- access
- unit
- request
- 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.)
- Withdrawn
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
【課題】共有メモリにアクセスする複数のマスターユニット間で共有メモリへのアクセス性能を均等に分散し、しかも簡単な構成のマルチプロセッサシステムを提供する。
【解決手段】
共有メモリをアクセスするためのアクセス要求を発行する複数のマスターユニットPU0、PU1と、前記アクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従ってデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション型のバスIF部4−10とを備え、前記バスIF部4−10は、1つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をN回までに制限する。
【選択図】図4A
【解決手段】
共有メモリをアクセスするためのアクセス要求を発行する複数のマスターユニットPU0、PU1と、前記アクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従ってデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション型のバスIF部4−10とを備え、前記バスIF部4−10は、1つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をN回までに制限する。
【選択図】図4A
Description
本発明は複数のプロセッサが搭載されたマルチプロセッサといったプロセッサシステム及びこのようなプロセッサシステムにおけるバス制御方法に関する。
複数のプロセッサが搭載されたマルチプロセッサが、共有メモリバスを介して共有メモリにアクセスする場合に、1つのプロセッサから大量のバスアクセスが発生し、かつそのプロセッサの優先度が高く設定されていたとすると他のプロセッサからのアクセス要求が受理されにくくなる。
従来の技術としては、複数のバスマスタにより1つの共有バスにアクセスする場合の同様の課題に対して、各バスマスタからのアクセス頻度を監視し、動的に調停時の優先度を変化させる方法がある(特許文献1参照)。
この技術によれば、ある一定期間の間各バスマスタからのアクセス状況を監視し、その一定期間ごとにアクセス回数の多いバスマスタの優先度を次の期間優先度を低く設定しなおすことにより、あるバスマスタが大量にバスアクセスを行った場合であっても、バスをそのバスマスタが使用し続け他のバスマスタのバスアクセスが行われにくくなる状況を解決させている。
しかしながら、この方法は各バスマスタからのリクエストが競合した場合の調停時に適用されるものであり、優先度の高いバスマスタが連続的にリクエストを出し続けている状況や同時にアクセス要求が発生した場合に、優先度の低いバスマスタであっても一定の割合でバスにアクセスできるという程度の効果しかない。
今日のようにリクエストとデータ転送を別々のフェーズで動作可能なスプリット・トランザクション方式のバスが適用されるシステムにおいては、アクセス要求を受理可能なサイクル間隔が多く、競合している状態になる前に連続してアクセス要求が発行され、受理される確率が高くなり、上記従来技術は適切に機能しない。
特開2002−91903号公報(図1、図6)
図1はマルチプロセッサを搭載したシステム構成を示す図である。このプロセッサシステムは、マルチプロセッサ1−1、DMA1−2、DSP1−3、共有バスIF部1−17、共有メモリ1−23を備えている。
マルチプロセッサ1−1は命令実行を行うパイプラインとその関連制御からなるプロセッサユニット(PU)が2つ搭載された対称型のマルチプロセッサであり、PU0(1−4)、PU1(1−5)、バスIF部1−12を有している。
PU0(1−4)からのPU0アクセス要求1−6、およびPU1(1−5)からのPU1アクセス要求1−7はバスIF部1−12で調停され、どちらか一方のアクセス要求が受理される。PU0アクセス要求1−6が受理された場合、PU0アクセス受理(1−8)がPU0(1−4)に送られ、PU1アクセス要求1−7が受理された場合にはPU1アクセス受理1−9がPU1(1−5)に送られる。
バスIF部1−12はどちらかのプロセッサユニットからのリクエストを受理すると共有バスIF部1−17にプロセッサバス要求1−14を送る。バスIF部1−12は1つの転送を行っていても次の別のリクエストを受理することが可能な構成となっている。
共有バスIF部1−17にはDMAバス1−18及びDSPバス1−19も接続される。それぞれのアクセス要求が共有バスIF部1−17で調停され、共有メモリ1−23に共有メモリバスリクエスト1−20が送られる。共有メモリ1−23がリクエストを受理すると共有メモリバスリクエスト受理1−21が返される。共有メモリ1−23はアクセスが完了すると共有メモリバスアクノリッジ1−22を共有バスIF部1−17に返す。ここで、共有メモリバスからみるとバスIF部は単一のマスターとして機能する。すなわち、図1において、共有メモリバスからみてマスターとして機能するのはマルチプロセッサ1−1(バスIF部1−12)、DMA1−2、DSP1−3の3つである。
図2には本システムに搭載されるバスのバスプロトコルを示す。以降、各バスはすべてこのプロトコルであるとして説明する。
各バスのプロトコルはリクエスト2−1を出した後、アクノリッジ2−3と共にデータ2−4が返ってくるまでの間であっても新たなリクエストを出すことが可能なプロトコルである。これによって、連続したデータ転送時に効率よくデータ転送が行うことが可能なバス(スプリット・トランザクション・バス)となる。特に共有メモリがシンクロナスDRAM、DDRなどの最初のデータ転送のレイテンシが長いが連続したデータ転送のスループットが短いデバイスである場合に効果を発揮する。
いずれかのバスマスタが発行したリクエスト2−1はアクセス先がリクエストを受理するまでアサートされ続け、アクセス先がリクエスト受理2−2を返したらネゲートされるものである。図2から明らかなように、リクエストAに関する転送が完了する前であっても、次のリクエストBが受理されている。
図3には図1に示すマルチプロセッサ1−1内のPU0(1−4)、PU1(1−5)がプロセッサバス1−13を介してスレーブデバイスへとアクセスする場合のバスタイミングを示す図である。
図3においては、PU0(1−4)からリクエストA(3−1)、リクエストB(3−2)がアサートされ、その後PU1(1−5)からリクエストC(3−3)がアサートされたものとする。上述のように各プロセッサユニットは前のリクエストに対する転送が終了する前に次のリクエストを出すことが可能であり、バスIF部1−12は前のリクエストに対する転送が終了する前に次のリクエストを1つ受理することができる。以下の説明では要求はリード要求であり、キャッシュミスの場合のキャッシュラインをリフィルするバーストアクセスである場合を例にとって説明する。ここでは、1つのリクエストで複数のワードデータをバースト転送することとする(図3では4回のバースト転送)。なお、図3では共有メモリバスに関するタイミングチャートは省略している。
バスIF部1−12はプロセッサユニットからアサートされたアクセス要求を順に受理し実行していく。そのため、図3に示すようにプロセッサバス要求1−14としてはバス要求A、バス要求B、バス要求Cの順で要求が発生したとすると、リクエストA(3−1)、リクエストB(3−2)、リクエストC(3−3)に対するデータもこの順で転送されることとなる。
リクエストA(3−1)に対してのレイテンシはサイクルcycA(3−7)である。サイクルcycA(3−7)は共有メモリ(1−23)に対するバスアクセスが競合して
いない場合のマルチプロセッサ(1−1)内の各々のプロセッサユニットのバスアクセスサイクル数と考えることができる。
いない場合のマルチプロセッサ(1−1)内の各々のプロセッサユニットのバスアクセスサイクル数と考えることができる。
リクエストB(3−2)に対するデータが転送されるのは、リクエストA(3−1)に対するデータ転送が完了してからとなり、リクエストC(3−3)に対してはリクエストA(3−1)及びリクエストB(3−2)に対してのデータ転送が完了してからとなるため、リクエストC(3−3)のレイテンシはサイクルcycC(3−8)となり、サイクルcycA(3−7)よりも長くなる。
すなわち、マルチプロセッサ(1−1)は対称構造のマルチプロセッサであるが、PU0(1−4)の複数のバスアクセスにより、PU1(1−5)がバスアクセス性能の影響を受けていることになる。
上記のバスアクセス性能の影響が均等であれば問題はないのだが、一方のプロセッサユニットが多くのバスアクセスを行い、タイミング的に他方のプロセッサユニットより先にリクエストを発行する確率が多い場合、バスアクセスの競合の影響が他方のプロセッサに偏るといった現象が起こり得る。その場合、対称構造のマルチプロセッサであるのに片方のプロセッサユニットのバスアクセス性能が事実上他方のプロセッサユニットよりも悪くなることとなる。
対称構造のマルチプロセッサの場合、複数のプロセッサユニットに対応して搭載される複数のCPUコアは同じものである。よって、ソフトウェアで処理性能を見積もる場合には単独のCPUコアでの動作での検討を行い、その検討結果に競合による劣化分を考慮して動作性能の見積もりをし、それが搭載される双方のCPUコアで同じ性能で実行されるとして見積もるのが一般的である。この場合、バスのアクセス性能についてはバスを共有することによる影響を考慮されていることにはなるが、その影響が両CPUコアに均等に割り振られないとなると性能見積もりの誤差が大きくなる。また、片方のCPUコアのみ性能が悪化することによりシステム性能に影響する。
すなわち、マルチプロセッサシステムにおいて、バスのアクセス性能を精度よく見積もることができない。
また、マルチスレッドプロセッサにおいても、上述のマルチプロセッサと同様の課題が発生し、バスアクセスの性能が特定のスレッドのみに偏るのを防ぎたい場合がある。すなわち、マルチスレッドプロセッサにおいても、スレッド毎にバスバンド幅を均等に割り当てたい場合や、各スレッドに競合によるバスアクセスの影響を均等に割り振りたい場合がある。
本発明は、共有メモリにアクセスする複数のマスターユニット間で共有メモリへのアクセス性能を均等にし、しかも簡単な構成のマルチプロセッサシステム、バス制御方法および半導体装置を提供することを目的とする。
また、本発明は、簡単な構成で、複数のマスターユニット間のアクセス性能の分散を制御可能なマルチプロセッサシステム、バス制御方法および半導体装置を提供することを他の目的とする。
上記の課題を解決するために本発明のプロセッサシステムは、共有メモリに接続されるバスと、前記共有メモリをアクセスするためのアクセス要求を発行する複数のマスターユニットと、前記複数のマスターユニットから発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って前記共有メモリとマスターユニットとの間で前記バスを介してデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション方式で前記バスのアクセスを行うバスインターフェイス部と、を備え、前記バスインターフェイス部は、1つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をN回までに制限し、前記所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間であることを特徴とする。この構成によれば、上記の所定の期間を空けないという限定された条件で複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数を制限するので、簡単な構成で、マスターユニット間でアクセス性能を均等に分散させることができる。
ここで、前記Nは1であってもよい。この構成によれば、転送フェーズの連続実行回数Nを最小の1回にすることにより、複数のマスターユニットからのアクセス要求が競合する場合に、異なるマスターユニットに対応する転送フェーズを交互にあるいは切り替えながら実行することができ、アクセス性能を均等化することができる。
ここで、前記バスインターフェイス部は、アクセス要求の受理を制御する受理制御部と、前記データ転送を制御する転送制御部と、受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも1つ保持する識別情報保持部と、前記所定の期間有効になるフラグ情報を保持するフラグ保持部とを備え、前記受理制御部は、新たなアクセス要求が発行されたとき、前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、当該識別情報が一致しないと判定した場合には当該新たなアクセス要求を受理し、当該識別情報が一致すると判定した場合には、当該新たなアクセス要求を発行したマスターユニットに対応する転送フェーズの連続実行回数をN回までに制限するようにしてもよい。この構成によれば、リクエストフェーズにおける受理を制限することによって、1つのマスターユニットの転送フェーズの連続実行回数の制限を実現することができる。また、アクセス性能の均等化を、前記識別情報と前記フラグ情報を保持するという簡単な構成に基いて実現することができる。
ここで、前記所定の期間は、前記アクセス要求の受理から前記アクセス要求に対応する転送フェーズの完了までの期間であり、前記受理制御部は、アクセス要求を受理する毎に、前記フラグ情報を有効にし、かつ当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、前記転送制御部は、前記識別情報保持部に保持された識別情報に対応する転送フェーズの完了時に、前記フラグ情報保持手段のフラグ情報を無効にするようにしてもよい。この構成によれば、1つのマスターユニットから上記の所定の期間を空けずに複数のアクセス要求が連続して発行した場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数を制限することができる。フラグ情報は、アクセス要求の受理時に有効にされ(セットされ)、当該アクセス要求の転送フェーズ完了時に無効にされ(リセットされ)る。このように、簡単な制御により前記フラグ情報を構成することができる。
ここで、前記所定の期間は、アクセス要求の受理から所定サイクル数が経過するまでの期間であり、前記プロセッサシステムは、さらに、前記所定サイクル数をカウントするサイクルカウンタを備え、前記受理制御部は、アクセス要求を受理する毎に、前記フラグ情報を有効にし、当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、前記カウンタのサイクルカウント動作を開始させ、前記フラグ保持手段は、前記カウンタが前記所定サイクル数をカウントしたときに前記フラグ情報を無効にするようにしてもよい。この構成によれば、前記所定の期間を、(i)前記アクセス要求の受理から前記アクセス要求に対応する転送フェーズの完了までの期間に相当する期間に設定することも、(i)より短い期間に設定することも、(i)より長い時間に設定することもできる。例えば、マスターユニット毎の実際のバスアクセス性能の測定値に基いて、前記所定の期間を最適な値に調整および設定することができる。
ここで、前記プロセッサシステムは、さらに、前記所定サイクル数が設定可能であり、かつ、前記所定サイクル数を保持するサイクルレジスタを備え、前記サイクルカウンタは、前記サイクルレジスタに保持された所定サイクル数をカウントするようにしてもよい。この構成によれば、サイクルレジスタはマスターユニットから設定可能なので、マスターユニットは処理量やアクセス頻度に応じてサイクル数を調整および設定することができる。
ここで、前記バスインターフェイス部は、アクセス要求の受理を制御する受理制御部と、前記データ転送を制御する転送制御部と、受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報の少なくとも1つ保持する識別情報保持部と、前記所定の期間有効になるフラグ情報を保持するフラグ保持部と、前記Nをカウントする連続数カウンタとを備え、前記受理制御部は、新たなアクセス要求が発行されたとき、前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、当該識別情報が一致しないと判定した場合には当該新たなアクセス要求を受理し、当該識別情報が一致すると判定した場合には前記連続数カウンタがN回までカウントしたか否か判定し、前記連続数カウンタがN回までカウントしていないと判定した場合には当該新たなアクセス要求を受理し、前記連続数カウンタがN回までカウントしたと判定した場合には当該新たなアクセス要求の受理を前記フラグ情報が無効になるまで延期し、前記連続カウンタを初期化するようにしてもよい。この構成によれば、N回までの転送フェーズの連続実行回数の制限を、連続数カウンタによって簡単に制御することができる。
ここで、前記プロセッサシステムは、さらに、何れかのマスターユニットから設定可能であり、前記Nを保持する連続数レジスタを備え、前記連続数カウンタは、前記連続数レジスタに保持された前記Nをカウントするようにしてもよい。この構成によれば、連続数レジスタはマスターユニットから設定可能なので、マスターユニットは処理量やアクセス頻度に応じて連続数Nを調整および設定することができる。
ここで、前記バスインターフェイス部は、アクセス要求の受理を制御する受理制御部と、前記データ転送を制御する転送制御部と、受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも1つを第1識別情報として保持する第1識別情報保持部と、前記所定の期間有効になるフラグ情報を保持するフラグ保持部と、前記複数のマスターユニットのうちアクセスを制限すべきマスターユニットの識別情報を第2識別情報として保持する第2識別情報保持部とを備え、前記受理制御部は、新たなアクセス要求が発行されたとき、前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報が前記第1識別情報および第2識別情報と一致するか否かを判定し、前記第1識別情報および第2識別情報の少なくとも一方と一致しないと判定した場合には当該新たなアクセス要求を受理し、前記第1識別情報および第2識別情報の両方に一致すると判定した場合には当該新たなアクセス要求の受理を前記フラグ情報が無効になるまで延期するようにしてもよい。この構成によれば、前記複数のマスターユニットのうち第2識別情報保持部に保持された識別情報に対応するマスターユニットのみを、転送フェーズの連続実行回数を制限することができる。これにより、複数のマスターユニット間のアクセス性能の分散を制御することができる。
ここで、前記プロセッサシステムは、さらに、前記マスターユニット毎のアクセス回数を一定時間ごとに計数する計数部と、アクセス回数の最も多いマスターユニットの識別情報を前記第2識別情報として前記第2識別情報保持部に設定する設定部とを備えるようにしてもよい。この構成によれば、一定時間ごとに、転送フェーズの連続実行回数を制限すべきマスターユニットを切り替えることができる。これにより、前回アクセス回数の最も多いマスターユニットが次の一定時間において制限の対象となり、複数回の一定時間を含む長い期間で、複数のマスターユニット間のアクセス性能の均等化することができる。
ここで、前記バスインターフェイス部は、アクセス要求の受理を制御する受理制御部と、前記データ転送を制御する転送制御部と、受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも1つ保持する識別情報保持部と、前記所定の期間有効になるフラグ情報を保持するフラグ保持部とを備え、前記転送制御部は、前記フラグ情報が無効を示す場合は、受理されたアクセス要求の転送フェーズを実行し、前記フラグ情報が有効を示す場合は、受理済で転送フェーズ未実行のアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、当該識別情報が一致しないと判定した場合には当該受理済みでかつ転送フェーズ未実行のアクセス要求の転送フェーズを開始し、当該識別情報が一致すると判定した場合には当該受理済みでかつ転送フェーズ未実行のアクセス要求の転送フェーズの開始を前記フラグ情報が無効になるまで延期するようにしてもよい。この構成によれば、1つのマスターユニットの転送フェーズの連続実行回数の制限を、リクエストフェーズではなく転送フェーズの開始制御によって実現することができる。また、アクセス要求が受理されるタイミングをより早くすることができる。アクセス性能の均等化を、前記識別情報と前記フラグ情報を保持するという簡単な構成に基いて実現することができる。
ここで、前記複数のマスターユニットは、対称型マルチプロセッサを構成する複数のプロセッサユニットであってもよい。
ここで、前記複数のマスターユニットは、マルチプロセッサを構成する複数のプロセッサユニットに設けられる複数の仮想プロセッサであってもよい。
ここで、前記複数のマスターユニットは、マルチスレッドプロセッサ中の複数のスレッドに対応する複数の仮想プロセッサであってもよい。この構成によれば、少なくとも1つのスレッドを含む仮想プロセッサ間においても、アクセス性能を均等に分散させることができる。
ここで、前記複数のマスターユニットおよびバスインターフェイス部は、単一の半導体チップに含まれていてもよい。
ここで、前記マルチスレッドプロセッサは、アクセス要求とともにスレッドの識別情報とアクセス属性を発行し、前記アクセス属性は、前記転送フェーズの連続実行の制限を有効にすべきか否かを示し、前記バスインターフェイス部は、有効を示す前記アクセス属性に対応するアクセス要求に対して、前記転送フェーズの連続実行回数をN回までに制限するようにしてもよい。この構成によれば、スレッド毎に転送フェーズの連続実行回数を制限するかしないかを制御することができる。
ここで、前記マルチスレッドプロセッサは、アクセス要求とともにスレッドの識別情報とアクセス属性を発行し、前記アクセス情報は、少なくとも1つのスレッドを含むグループとしてのグループ番号であり、前記バスインターフェイス部は、グループ番号毎に、対応するアクセス要求の前記転送フェーズの連続実行回数をN回までに制限するようにしてもよい。この構成によれば、同一のグループ番号で示される複数のスレッド毎に、転送フェーズの連続実行回数の制限を制御することができる。
また、本発明のバス制御方法、半導体装置は、上記と同様の手段を有す、同様の効果を奏する。
本発明によれば、複数のプロセッサが搭載されたマルチプロセッサシステムにおける各マスターユニットが共有メモリにアクセスする場合、それら複数のマスターユニット間でバス調停の影響、共有メモリバスアクセス性能を簡単な方法で均等に分散させることが可能となる。また、本発明によれば、アクセス性能の分散の仕方を制御することができる。
本発明によれば、複数のスレッドあるいは属性の異なるスレッド間においても、バス調停の影響、共有メモリバスアクセス性能を分散させることが可能となる。
これにより、それぞれのプロセッサで共有メモリバスアクセスの性能の偏りを低減させることが可能となる。その結果、マスターユニット毎の処理性能の見積もり精度を大きく向上させることができる。
(実施の形態1)
本発明の実施の形態1について説明する。本実施の形態におけるプロセッサシステムは、1つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をN回までに制限するように構成されている。ここで、所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間である。これにより、マスターユニット間のアクセス性能を均等に分散することを実現する。
本発明の実施の形態1について説明する。本実施の形態におけるプロセッサシステムは、1つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をN回までに制限するように構成されている。ここで、所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間である。これにより、マスターユニット間のアクセス性能を均等に分散することを実現する。
図4Aには本発明の実施の形態1におけるプロセッサシステムの構成を示す図である。同図のプロセッサシステムは、マルチプロセッサ4−1と共有メモリ4−24とを含む。実施の形態1では、マルチプロセッサ4−1は、複数のマスターユニットとして、2つのプロセッサユニット(PU0、1)を搭載しているものとする。マルチプロセッサが、プロセッサバスに接続された共有メモリ4−24へとバスIF部4−10を介してアクセスする構成となっている。なお、図1のように共有メモリが共有メモリバスIF部を介してその他のデバイス(DMA、DSP等)で共有される共有メモリバスに接続される構成であっても、本発明は適用可能である。なお、本発明は、LSIの設計者、あるいはソフトウェアを作成するプログラマがバスのアクセス性能を精度よく見積もることができる点に特徴があり、マルチプロセッサに適用したときに特に効果が大きいものである。
マルチプロセッサ4−1はPU0(4−2)とPU1(4−3)の2つのプロセッサユニットを搭載したものであり、PU0とPU1は同一のものである。プロセッサユニットは命令を処理するCPU部とその周辺回路により構成されるものであり、命令処理機能、割り込み機能、デバッグ機能といったプロセッサとして必要な機能を有する最小構成単位である。このプロセッサユニットがプロセッサに相当する。
PU0(4−2)からのバスアクセス要求はPU0アクセス要求4−4としてバスIF部4−10に出力され、バスIF部4−10はリクエストを受理すると、PU0アクセス
受理4−6を返す。次にバスIF部4−10はプロセッサバスに接続された共有メモリ4−24に対してプロセッサバス要求4−21を出してデータを取得し、取得したデータをPU0アクノリッジ4−8と共にPU0(4−2)に返す。同様にPU1(4−3)のバスアクセスはPU1アクセス要求4−5、PU1アクセス受理4−7、PU1アクノリッジ4−9によって行われる。
受理4−6を返す。次にバスIF部4−10はプロセッサバスに接続された共有メモリ4−24に対してプロセッサバス要求4−21を出してデータを取得し、取得したデータをPU0アクノリッジ4−8と共にPU0(4−2)に返す。同様にPU1(4−3)のバスアクセスはPU1アクセス要求4−5、PU1アクセス受理4−7、PU1アクノリッジ4−9によって行われる。
バスIF部4−10はアービター400、リクエスト生成部4−15、データ転送部4−16を備えている。バスIF部4−10は、スプリット・トランザクション方式の転送を行うものであり、複数のマスターユニット(本実施形態ではPU0、PU1)から発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って共有メモリ4−24とマスターユニットとの間でバスを介してデータ転送する転送フェーズとを分離して実行する。
また、本実施の形態では、バスIF部4−10は、1つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をN回までに制限するように構成されている。ここで、所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間である。
アービター400は、受理制御部410、転送制御部420、フラグ部4−13、ID保持部4−14を備える。
受理制御部410は、リクエストフェーズでのアクセス要求の受理を制御する。受理制御部410は、具体的には、PU0アクセス要求4−4、PU1アクセス要求4−5を調停して受理する。
転送制御部420は、受理されたアクセス要求に対応する転送フェーズでのデータ転送を制御する。転送制御部420は、受理されたアクセス要求が複数存在する場合には、アービター400内での調停結果4−12に対応する1つのアクセス要求に対するデータ転送を制御する。
フラグ部4−13は、前記所定の期間有効になるフラグ情報を保持する。このフラグ情報は、本実施の形態では具体的には、最終受理PU情報有効ビット4−13である。
ID保持部4−14は、受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも1つ保持する。この識別情報は、本実施の形態では具体的には、最終受理PU ID(4−14)である。
リクエスト生成部4−15はプロセッサバス要求4−21を生成し、生成されたプロセッサバス要求4−21をプロセッサバスへと送出することにより、プロセッサバスを介して共有メモリ4−24へとアクセスする。
共有メモリ4−24はプロセッサバス要求4−21を受理可能な状態になるとプロセッサバス要求受理4−22をリクエスト生成部4−15に送り、その後、プロセッサバスアクノリッジ4−23と共に共有メモリ4−24内の要求されたデータをバスIF部4−10に送る。バスIF部4−10内のデータ転送部4−16は共有メモリから送られたデータを取得し、取得したデータを共有メモリ4−24に対するデータアクセスを起動したPUに返す。
アービター400は各PUからリクエストを受理する毎に最終受理PU ID(4−14)をセットする。例えば、PU0アクセス要求4−4を受理したとすると「PU0」を最終受理PU ID(4−14)にセットする。また、前記情報が有効であることを示す最終受理PU情報有効ビット4−13もあわせてセットする。
アービター400には、データ転送部4−16からPU0転送中信号4−17及びPU0転送終了信号4−18が入力される。PU0転送中信号4−17はリクエスト生成部4−15からのプロセッサバス要求4−21がPU0(4−2)によるものであり、前記リクエストに対してプロセッサバス要求受理4−22が返ったサイクルからアサートを開始し、そのリクエストによる全データ転送が完了するまでアサートされる。すなわち、PU0(4−2)がバスアクセスを行った場合に、そのアクセスによる転送中を示すものである。PU0転送終了信号4−18は転送の最後のサイクルでアサートされるものであり、転送が終了したことを示す。同様にPU1(4−3)のバスアクセスに対してもPU1転送中信号4−19と、PU1転送終了信号4−20が出力される。
最終受理PU情報有効ビット4−13は、アービター400により調停されたリクエストを受理した時点でセットされる。同時に最終受理PU ID(4−14)がセットされ、その情報が有効となる。最終受理PU情報有効ビット4−13及び最終受理PU ID(4−14)は、アービター400がリクエストを受理するごとにセットされる。一方の最終受理PU情報有効ビット4−13は最終受理PU ID(4−14)の転送が終了した時点でクリアされる。例えば、最終受理PU ID(4−14)が「PU0」であった場合、データ転送部4−16からPU0転送中信号4−17がアサートされている間は最終受理PU情報有効ビット4−13がセットされており、最終受理PU ID(4−14)が有効であることを示すが、PU0転送終了信号4−18がアサートされた時点でクリアされ、最終受理PU ID(4−14)は無効となる。つまり、最終受理PU ID(4−14)は、アービター400がリクエストを受理してから有効となり、新たにリクエストが受理されるか、あるいは受理したリクエストに対する転送が完了するまでの間、有効な情報を保持する。
アービター400は最終受理PU情報有効ビット4−13、及び最終受理PU ID(4−14)の情報からプロセッサユニットからのリクエストを受理するかどうか判断する。
本発明では以上のような構成を用いることにより、バスサイクルが空くことなく連続して同一のプロセッサがバスアクセスを実行しないように制御し、これによってバス性能をマルチプロセッサ内の各プロセッサに均一に分散させることを特徴とする。具体的には、双方のプロセッサがバスアクセスを行う場合、プロセッサバスにはそれぞれのプロセッサのバスアクセスが交互に発生するようにすることで、調停による影響およびバンド幅を両プロセッサで均一化する。そのために、アービター400は最終受理PU情報有効ビット4−13がセットされていない状態、すなわち現在どのプロセッサユニット(PU)からもバスアクセスが行われていない場合にはPU0アクセス要求4―4、またはPU1アクセス要求4−5によってアサートされたリクエストを受理する。
最終受理PU情報有効ビット4−13がセットされている状態、すなわち現在どちらかのPUがバスアクセスを実行中である場合には、最終受理PU ID(4−14)にセットされているPU番号とは異なるPUのリクエストのみを受理する。最終受理PU ID(4−14)と同一のPUからのリクエストは要求されていても受理しない。
図5、図6Aに動作タイミング図を用いてさらに詳細に説明を加える。
図5はPU0(4−2)から連続して2つのリクエストがアサートされ、かつPU1(4−3)からはリクエストが出ない場合を示す。具体的には、PU0(4−2)からリクエスト0a(5−1)、リクエスト0b(5−2)がアサートされる。
まずリクエスト0a(5−1)がアサートされ、バスIF部4−10がこれを受理する。受理されることにより最終受理PU情報有効ビット(4−13)が時間A(5−3)でセットされる。同時に最終受理PU ID(4−14)に「PU0」がセットされる。この状態ではアービター400はPU0アクセス要求4−4が発生しても受理しない。すなわちリクエスト0b(5−2)はリクエスト0a(5−1)に対するバスアクセスが終了するまで受理されない(PU0拒否サイクル5−5)。したがって、リクエスト0b(5−2)はアサートされ続ける。
時間B(5−4)でリクエスト0a(5−1)に対してのバスアクセスが終了するとPU0転送終了信号4−18がアサートされ、最終受理PU情報有効ビット4−13がクリアされる。この状態になることでPU0(4−2)からのリクエストを受理しても良い状態となり、アサートされ続けた次のリクエスト0b(5−2)が受理される。
図6AにはPU0(4−2)、PU1(4−3)がそれぞれ複数のバスアクセス要求を行う場合を示す。具体的には、PU0(4−2)からリクエスト0a(6−1)、リクエスト0b(6−2)が、PU1からリクエスト1a(6−3)、リクエスト1b(6−4)が、図6Aに示すタイミングでアサートされる。
まずリクエスト0a(6−1)がアサートされるが、時間C(6−5)の時点ではどのPUもバスアクセスをしていないので、バスIF部(4−10)がこれを受理する。受理されることにより最終受理PU情報有効ビット(4−13)がセットされる。同時に最終受理PU ID(4−14)に「PU0」がセットされる。この状態ではアービター400はPU0アクセス要求4−4が発生しても受理しない(PU0拒否サイクル)。時間D(6−6)ではリクエスト0b(6−2)がアサートされるが、リクエスト0a(6−1)の転送はまだ完了しておらず、最終受理PU情報有効ビット(4−13)がセットされた状態、かつ最終受理PU ID(4−14)が「PU0」であるために受理されない。この状態ではPU1アクセス要求(4−5)しかアービター400は受理しない。したがって、リクエスト0b(6−2)はアサートされ続ける。
リクエスト1a(6−3)が出力されると、このリクエストはリクエスト0b(6−2)より後のタイミングで出力されているものの、PU1(4−3)からのリクエストであるため、アービター400はリクエスト1a(6−3)を受理し、時間D(6−6)で最終受理PU情報有効ビット(4−13)を再セットし、最終受理PU ID(4−14)を「PU1」にセットする。この状態では最終受理PU ID(4−14)が「PU1」であるために、アービター400はPU1(4−3)からのPU1アクセス要求(4−5)は受理しない。したがって、その後にPU1(4−3)がアサートするリクエスト1b(6−4)は受理されない。
一方、最終受理PU ID(4−14)が「PU1」となっているために、PU0(4−2)からのPU0アクセス要求(4−4)は受理しても良い状態となる。本実施の形態では、アービター400は転送中のリクエストの次の1つのリクエストのみを受理することが可能である。したがって、図6Aでは、アービター400がPU1(4−3)からのリクエスト1a(6−3)を受理した時点で、アサートされ続けているPU0(4−2)からのリクエスト0b(6−2)を受理できる状態となるのだが、既に転送中のリクエスト0a(6−1)に加えてリクエスト1a(6−3)も既に受理しているので、リクエスト0a(6−1)の転送が終了したタイミングである時間E(6−7)で受理することになる。この時間E(6−7)ではPU1(4−3)からの次のリクエスト1b(6−4)もアサートされてはいるが、PU1拒否サイクルにあるためにこちらではなく、リクエスト0b(6−2)を受理することになる。言い換えれば、何れかのプロセッサユニットからの次のリクエストを受理できるタイミングである時間E(6−7)において、最終受理PU情報有効ビット4−13と最終受理PU ID(4−14)の値に基づいて、アービター400がPU0(4−2)とPU1(4−3)のいずれのリクエストを受理するかを決定しているともいえる。なお、バスIF部4−10内にFIFOで構成されたリクエストのキュー(バッファ)を設けるなどして、次の2つ以上のリクエストを受理することが可能な構成であれば、時間E(6−7)まで待たなくとも、最終受理PU ID(4−14)が「PU1」に書き換えられた段階でPU0(4−2)からのリクエストを受理できる状態となるので、直ちにPU0(4−2)からのリクエスト0b(6−2)を受け付けることができる。そして、実際の転送処理はリクエストを受理した順に処理することとなる。
時間E(6−7)ではリクエスト0b(6−2)を受理したため、再度、最終受理PU
情報有効ビット(4−13)をセットし、最終受理PU ID(4−14)に「PU0」をセットする。この状態ではPU0アクセス要求(4−4)を受理することはできない。一方で、PU1(4−3)からリクエスト1b(6−4)については受理しても良い状態となる。したがって、アービター400は、リクエスト1a(6−3)の転送が終了したタイミングでリクエスト1b(6−4)を受理する。もちろん、次の2つ以上のリクエストを受理することが可能な構成であれば、最終受理PU ID(4−14)に「PU0」がセットされたタイミングでリクエスト1b(6−4)を受理しても良い。
情報有効ビット(4−13)をセットし、最終受理PU ID(4−14)に「PU0」をセットする。この状態ではPU0アクセス要求(4−4)を受理することはできない。一方で、PU1(4−3)からリクエスト1b(6−4)については受理しても良い状態となる。したがって、アービター400は、リクエスト1a(6−3)の転送が終了したタイミングでリクエスト1b(6−4)を受理する。もちろん、次の2つ以上のリクエストを受理することが可能な構成であれば、最終受理PU ID(4−14)に「PU0」がセットされたタイミングでリクエスト1b(6−4)を受理しても良い。
アービター400が上述のような順でリクエストを受理し、順次プロセッサバス要求4−21を生成していくため、共有メモリ4−24へのアクセスは、リクエスト0a(6−1)、リクエスト1a(6−3)、リクエスト0b(6−2)、リクエスト1b(6−4)に対応するリクエストが順に発生し、プロセッサバス要求0a(6−8)、プロセッサバス要求1a(6−9)、プロセッサバス要求0b(6−10)、プロセッサバス要求1b(6−11)といったように、PU0(4−2)、PU1(4−3)の順で交互にバスアクセスが発生することになる。その結果、バスの競合や転送状態の影響は各PUに対して交互に同じような割合で発生することになる。したがって、個々のアクセスをみれば連続して受理してバスアクセスを実行する場合と比べるとレイテンシ及び転送完了サイクルが長くなる場合があるが、バスアクセスが交互に行われることにより、競合による影響を2つのプロセッサユニットに均等に分散させることが可能となる。
図4Bは、受理制御部410における受理制御処理の一例を示すフローチャート図である。同図のように受理制御部410は、PU0またはPU1から新たなアクセス要求が発行されたとき(S411)、まず、新たなアクセス要求を内部のバッファに保存可能か否かを判断する(S412)。ここでは、図5、図6Aと同様に説明を簡単にするために、受理制御部410は、アクセス要求1つ分を保存する受理用バッファを有し、また、転送制御部420は、アクセス要求1つ分を保存する転送用バッファを有するものとする。
保存可能である場合(受理用バッファが空いている場合)、受理制御部410は、フラグ情報(最終受理PU情報有効ビット4−13)が有効か無効かを判断し(S413)、フラグ情報が無効を示す場合は当該新たなアクセス要求を受理する(S416)。この場合、受理されるのは、1つのPUからの連続アクセスに該当しないからである。
S416の受理処理において、受理制御部410は、新たなアクセス要求を内部の受理用バッファに保存し(S421)、対応するPUIDをID保持部4−14に設定し(S422)、フラグ部4−13のフラグ情報(最終受理PU情報有効ビット4−13)を有効にする(セットする)(S423)。
さらに、受理制御部410は、フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したPUの識別情報(PUID)とID保持部に保持された識別情報(PUID)とが一致するか否かを判定し(S414)、当該識別情報が一致しない場合には当該新たなアクセス要求を受理する(S416)。この場合も受理されるのは、1つのPUからの連続アクセスに該当しないからである。
さらに、受理制御部410は、当該識別情報が一致すると判定した場合には、当該新たなアクセス要求を受理しない(S415)。この場合、フラグ情報が有効であることは、上記の所定期間を空けずに発行されたアクセス要求であることを意味する。識別情報が一致することは、新たなアクセス要求と前回のアクセス要求とが同一のPUから発行されたことを意味する。S415で受理しない結果、当該新たなアクセス要求は、フラグ情報が無効になるまで、受理を延期されることになる。その間、他のPUからの新たなアクセス要求が発行されれば受理されることになる。
図4Cは、転送制御部420における転送制御処理の一例を示すフローチャート図である。同図のように転送制御部420は、上記転送用バッファが空いていてかつ上記受理用バッファに保存されたアクセス要求が存在する場合(S431)、受理用バッファから転送用バッファにアクセス要求を移動し当該アクセス要求に従うデータ転送を実行する(S432)。転送制御部420は、データ転送が完了すると、当該アクセス要求に対応するPUの識別情報(PUID)とID保持部に保持された識別情報(PUID)とが一致するか否かを判定し(S433)、当該識別情報が一致する場合にはフラグ部4−13のフラグ情報(最終受理PU情報有効ビット4−13)を無効と(リセットする)し、ID保持部4−14のPUIDをクリアする(S434)。このとき、ID保持部4−14のPUIDのクリアは、省略してもよい。
なお、本実施の形態では、プロセッサユニットが2つの場合を示したが、2つ以上の場合でも最終受理PU情報有効ビット、最終受理PU IDを複数個有し、それぞれのプロセッサ毎に上述のような制限を実施すれば同様の効果が得ることが可能である。
また、本実施の形態では、アクセス要求を受理されたプロセッサユニットからのリクエストは、そのリクエストの処理が完了するまでは連続して受理しない構成で説明を行った。しかし、次のような変形例の構成によっても同様の効果を得ることが可能である。
図4Dは、実施の形態1の変形例におけるプロセッサシステムの構成例を示すブロック図である。同図は、図4Aと比較して、バスIF部4−10内にプロセッサ毎のリクエストを区別できるキューQ1、Q2を新たに追加した点と、受理制御部410および転送制御部420の代わりに受理制御部410aおよび転送制御部420aを備える点とが異なっている。以下、同じ点は説明を省略して、異なる点を中心に説明する。
キューQ1、Q2は、PU0、PU1からのアクセス要求を先行して受理するためのバッファである。キューQ1、Q2は、それぞれ少なくとも1つのアクセス要求を保持可能であればよい。ここでは、説明の便宜上、キューQ1、Q2はそれぞれ1つのアクセス要求を保持可能であるものとする。
受理制御部410は、フラグ情報の有効無効によらずPU0、PU1からのアクセス要求を先行してキューQ1、Q2にそれぞれ受理する。
転送制御部420aは、何れのキューからのアクセス要求をプロセッサバス要求として発行するかを決定する。この場合は、最終受理PU情報有効ビット4−13と最終受理PU ID(4−14)は、プロセッサユニットからのアクセス要求を受理したときではなく、バスIF部4−10がプロセッサバスにプロセッサバス要求(4−21)をアサートされたタイミングでセットされることとなる。
図6Bは、実施の形態1の変形例におけるアクセスタイミングを示す図である。同図は、図6Aと比較すると、キュー要求404およびキュー要求405が追加された点と、PU0アクセス要求4−4およびPU1アクセス要求4−5が異なるタイミングで受理される点(つまり、PU0アクセス受理4−6およびPU1アクセス受理4−7のアサートタイミング)と、PU0アクセス受理4−6、PU1アクセス受理4−7がアービター400からではなくキューQ1、キューQ2から出力される点とが主に異なっている。
PU0アクセス要求4−4はキューQ1が空いていれば即座に受理され、同図ではアサートされたサイクルで受理されている。PU1アクセス要求4−5は、キューQ2について同様である。
キュー1要求404は、キューQ1に受理されたアクセス要求が保持されていることを示す信号であり、アービター400内の受理用バッファに移動させられると、ネゲートする。キュー2要求405は、キューQ2について同様である。
キュー1要求受理4−26は、キュー要求404がアサートされ、かつ、アービター400内の受理制御部410aが受理可能である場合(受理用バッファに空きがある場合)に、キューQ1から受理用バッファへのアクセス要求の移動と共に、アサートされる信号である。キュー2要求受理4−27についても同様である。
キューQ1およびキューQ2は、アービター400から見れば、リクエストフェーズにおける図4Aのマスターユニット(PU0、PU1)と等価である。また、キューQ1およびキューQ2は、マスターユニットから見れば、リクエストフェーズにおけるアービター400(受理制御部410a)と等価である。
このようにキューQ1、キューQ2をマスターユニット(PU0、PU1)とアービター400との間に介在させることにより、マスターユニットから見れば、リクエストフェーズにおいて受理待ちが少なくなり、早期に受理される。これにより、1つのマスターユニットの転送フェーズの連続実行回数の制限は、リクエストフェーズにおける受理を拒否(延期)するのではなく、受理した後の転送の開始を延期することにより制御されることになる。
図6Bでは、1つのマスターユニットの転送フェーズの連続実行回数の制限を、リクエストフェーズにおける受理制御処理ではなく、転送制御部420aによって転送フェーズの開始タイミングを制御することによって実現している。
図4Eは、変形例における受理制御部410aにおける受理制御処理の一例を示すフローチャート図である。同図は、図4Bと比較して、ステップS412〜415が削除され、S442が追加されている点が異なる。以下、同じ点は説明を省略して、異なる点を中心に説明する。
受理制御部410aは、新たなアクセス要求が発行されたとき、対応するキューQ1またはQ2に空きがあれば(S442)、当該キューQ1またはQ2にアクセス要求を受理する(S416)。これにより、PU0、PU1は、連続的にアクセス要求を発行した場合、図4Bよりも早い時点で受理されることになる。
図4Fは、変形例における転送制御処理部420aの転送制御処理の一例を示すフローチャート図である。同図において、前記転送制御部420aは、キューQ1またはQ2にアクセス要求が保存されている場合(S451)、フラグ情報(最終受理PU情報有効ビット4−13)が有効か無効かを判断し(S452)、フラグ情報が無効を示す場合は当該新たなアクセス要求に従ってデータ転送(転送フェーズ)を実行する(S455)。この場合、データ転送が実行されるのは、1つのPUからの連続アクセスに該当しないからである。
さらに、転送制御部420aは、フラグ情報が有効を示す場合は、キューに保持されたアクセス要求に対応するPUの識別情報(PUID)とID保持部に保持された識別情報(PUID)とが一致するか否かを判定し(S453)、当該識別情報が一致する場合には当該アクセス要求に従うデータ転送を実行しない(S454)。この場合、データ転送を実行しないのは、1つのPUからの連続転送に該当するからである。このアクセス要求のデータ転送は、フラグ情報がリセットされるまで延期されることになる。延期される間は、他のPUのアクセス要求が存在すれば、そのデータ転送が実行されることになる。
さらに、転送制御部420aは、フラグ情報が有効を示す場合は、キューに保持されたアクセス要求に対応するPUの識別情報(PUID)とID保持部に保持された識別情報(PUID)とが一致するか否かを判定し(S453)、当該識別情報が一致しない場合には当該アクセス要求に従うデータ転送を実行する(S455)。この場合、データ転送が実行されるのは、1つのPUからの連続アクセスに該当しないからである。
転送制御部420aは、データ転送を完了すると、当該アクセス要求に対応するPUの識別情報(PUID)とID保持部に保持された識別情報(PUID)とが一致するか否かを判定し(S456)、当該識別情報が一致する場合にはフラグ部4−13のフラグ情報(最終受理PU情報有効ビット4−13)を無効と(リセットする)し、ID保持部4−14のPUIDをクリアする(S457)。このとき、ID保持部4−14のPUIDのクリアは、省略してもよい。
以上のように変形例によれば、1つのマスターユニットの転送フェーズの連続実行回数の制限を、マスターユニットからのリクエストを直接参照せず、キューに登録した情報で制御可能となる。また、アクセス性能の均等化を、前記識別情報と前記フラグ情報を保持するという簡単な構成に基づいて実現することができる。しかも、マスターにとってはアクセス要求が即受理されるので、マスターの受理待ち時間が短縮され、マスターのバスアクセスするための処理負荷を軽減することができる。
(実施の形態2)
本発明の実施の形態2について説明する。図7Aは実施の形態2におけるシステム構成図を示している。本実施の形態では同一プロセッサからの連続アクセスを、ある設定期間のみ許可しないという制御を行う。図4Aと同様に説明できる部分は同一の符号を付して説明を省略する。
本発明の実施の形態2について説明する。図7Aは実施の形態2におけるシステム構成図を示している。本実施の形態では同一プロセッサからの連続アクセスを、ある設定期間のみ許可しないという制御を行う。図4Aと同様に説明できる部分は同一の符号を付して説明を省略する。
図7AのバスIF部4−10は、図4Aと比較して、所定サイクル数をカウントする抑制サイクルカウンタ7−1と、何れかのマスターユニットから設定可能であり、前記所定サイクル数を保持する抑制サイクル設定レジスタ7−4とが追加されている。抑制サイクルカウンタ7−1は、例えば、抑制サイクル設定レジスタ7−4に設定されたサイクル数をロードした後ダウンカウントする。
受理制御部411は、アクセス要求を受理する毎に、前記フラグ情報を有効にし、当該アクセス要求に対応する識別情報をID保持部に設定し、抑制サイクルカウンタ7−1のサイクルカウント動作を開始させる。
フラグ部4−13は、抑制サイクルカウンタ7−1が前記所定サイクル数をカウントしたときに前記フラグ情報を無効にする。
図7Bは、本実施の形態における受理制御部411の受理制御処理の一例を示すフローチャートである。受理制御部411は、図4Bと同様の受理制御処理を行うが、図4B右側に示したS416の受理処理の代わりに図7Bに示す受理処理を行う点が異なっている。
図7Bにおいては、受理制御部411がプロセッサユニットからのリクエスト(アクセス要求)を受理すると(S421)、最終受理PU情報有効ビット4−13と最終受理PU ID(4−14)をセットし(S422、S423)、同時に抑制サイクルカウンタ7−1にカウントstart(7−2)を送る(S464)。抑制サイクルカウンタ7−1はカウントstart(7−2)が入力されると抑制サイクル設定レジスタ7−4から抑制サイクル値7−5がセットされ、次のサイクルからクロックが入力されるごとにダウンカウントを行う。ここで、抑制サイクル設定レジスタ7−4はソフトウェアで任意の値に設定可能なものであり、例えば、プロセッサユニットが実行するレジスタ書き込み命令によってプログラマブルに更新可能なレジスタである。抑制サイクルカウンタ7−1がアンダーフロー、すなわちカウント値が0になると、カウントunder flow(7−3)がフラグ部4−13へと出力される。これにより、フラグ部4−13に保持された最終受理PU情報有効ビットが無効化される(リセットされる。)。
図7Cは、転送制御部421における転送制御処理の一例を示すフローチャート図である。同図は、図4Cと比べてステップS433およびS434が削除されている点が異なっている。つまり、フラグをリセットする処理が削除されている。
ここで、実施の形態1ではフラグ部4−13に保持される最終受理PU情報有効ビットはPU0転送終了信号4−18、またはPU1転送終了信号4−20によってクリアされていたが、本実施の形態ではカウントunder flow(7−3)でクリアされる。したがって、アービター401が別のプロセッサユニットからのリクエストを受理して最終受理PU ID(4−14)をセットしなおすか、あるいは抑制サイクル値7−5に設定されたサイクル期間が過ぎて最終受理PU情報有効ビット(4−13)がクリアされた場合にのみ、同一プロセッサユニットからのリクエストが連続して処理されることとなる。
以上の構成によって本実施の形態においては、所定のサイクル期間に同一プロセッサからの連続バスアクセスが発生するのを抑制し、他方のプロセッサのアクセスを受理する機会を与えることでバスアクセス性能の均一な分散を実現することが可能である。
なお、本実施の形態をその他の実施の形態と組み合わせても良い。例えば、抑制サイクル値7−5に設定されたサイクル期間が過ぎた場合に加えて、PU0転送終了信号4−18、またはPU1転送終了信号4−20によっても、最終受理PU情報有効ビット4−13をクリアする構成としても良い。
(実施の形態3)
本発明の実施の形態3について説明する。図8Aは実施の形態3におけるシステム構成図を示している。本実施の形態では同一プロセッサからのある一定個数以上の連続バスアクセスを抑制するという制御を行う。図8AのバスIF部4−10は、図4Aと比較して、何れかのマスターユニットから設定可能であり、連続転送の許可回数Nを保持する連続数許可レジスタ8−5と、カウントする連続数カウンタ8−1とが追加されている点が異なる。連続数カウンタ8−1は、例えば、連続数許可レジスタ8−5に保持された前記Nをロードした後ダウンカウントする。図4Aと同様に説明できる部分は同一の符号を付して説明を省略する。
本発明の実施の形態3について説明する。図8Aは実施の形態3におけるシステム構成図を示している。本実施の形態では同一プロセッサからのある一定個数以上の連続バスアクセスを抑制するという制御を行う。図8AのバスIF部4−10は、図4Aと比較して、何れかのマスターユニットから設定可能であり、連続転送の許可回数Nを保持する連続数許可レジスタ8−5と、カウントする連続数カウンタ8−1とが追加されている点が異なる。連続数カウンタ8−1は、例えば、連続数許可レジスタ8−5に保持された前記Nをロードした後ダウンカウントする。図4Aと同様に説明できる部分は同一の符号を付して説明を省略する。
図8Bは、受理制御部412における受理制御処理の一例を示すフローチャート図である。同図は、図4Bと比較して、ステップS471〜S473が追加されている点が異なる。同じ点は説明を省略し、以下異なる点を中心に説明する。
受理制御部412は、新たなアクセス要求が発行されたとき、フラグ情報が無効を示す場合(S413:no)、および、フラグ情報が有効を示しかつアクセス要求を発行したマスターユニットのPUIDとID保持部4−14に保持されたPUIDとが一致しないと判定した場合(S414:no)には、連続数カウンタ8−1に初期化信号をアサートし(S471)、当該新たなアクセス要求を受理する(S416)。初期化信号のアサートにより、連続数カウンタ8−1は、初期化として、連続数許可レジスタ8−5に保持された連続許可数Nをロードする。これにより、新たなアクセス要求が1つのPUからの連続アクセスでない場合には、連続数カウンタ8−1が初期化される。
また、受理制御部412は、アクセス要求を発行したマスターユニットのPUIDとID保持部4−14に保持されたPUIDとが一致する場合(S414:yes)、連続数カウンタ8−1がN回までカウントしていないかどうかを(カウント値CT>0?)判定し(S472)、連続数カウンタがN回までカウントしていないと判定した場合には、連続検出信号を連続数カウンタ8−1にアサートし(S473)、当該新たなアクセス要求を受理する(S416)。連続検出信号のアサートにより、連続数カウンタ8−1は−1カウントする。
さらに、受理制御部412は、連続数カウンタ8−1がN回までカウントしたと判定した場合(S472:no)には当該新たなアクセス要求の受理しない(S415)。
本実施の形態においては、最終受理PU情報有効ビット4−13がセットされていない場合にアービター402がリクエストを受理すると、最終受理PU情報有効ビット4−13と最終受理PU ID4−14をセットすると同時に、連続数カウンタ8−1に連続数カウンタ初期化信号8−2をアサートする。連続数カウンタ初期化信号8−2を受理すると連続許可数レジスタ8−5から連続許可数8−6が連続数カウンタ8−1にセットされる。ここで、連続許可数レジスタ8−5はソフトウェアで任意の値に設定可能なものであり、例えば、プロセッサユニットが実行するレジスタ書き込み命令によってプログラマブルに更新可能なレジスタである。
アービター402が次のリクエストを受理すると、最終受理PU情報有効ビット4−13がセットされているかどうかを判断し、セットされている場合には最終受理PU ID(4−14)の情報を参照し、保持されている情報と受理したプロセッサの情報が同一であれば連続検出8−3を連続数カウンタ8−1に送る。連続数カウンタ8−1はこの信号をうけダウンカウントする。それ以外の場合には連続数カウンタ初期化信号8−2を出力し、連続数カウンタ8−1には連続許可数8−6が再度セットされる。
連続数カウンタ8−1が0以上であれば同じプロセッサからの連続したバスアクセスであっても実行可能と判断され、連続数カウンタ8−1からアービター402に連続許可8−4が送られる。連続許可8−4が入力されている期間、アービター402は双方のプロセッサユニットからのリクエストを受理する。しかし、連続数カウンタ8−1がアンダーフロー、すなわちカウント値が0になると、それ以上の同じプロセッサからのバスアクセス要求は連続しては受理しないこととなる。
以上の構成によって本実施の形態においては、所定の個数以上の連続アクセスを抑制することで同一プロセッサから多数の連続アクセスが行われることにより、他方のプロセッサのリクエストが受理されない状態を低減することが可能である。
なお、本実施の形態をその他の実施の形態と組み合わせても良い。例えば、さらに抑制サイクルカウンタも設けることにより、所定のサイクル期間における所定の個数以上の連続アクセスを抑制する構成としても良い。
(実施の形態4)
本発明の実施の形態4について説明する。図9Aは実施の形態4におけるシステム構成図を示している。本実施の形態は常にあるサイクル期間の各プロセッサのバスアクセス状況を監視し、その期間内でバスアクセス回数が多いプロセッサに対して、次のサイクル期間において実施の形態1と同様の制御を行うものである。図9AのバスIF部4−10は、図4Aと比較して、抑制PU情報保持部9−13と、監視期間カウンタ9−2と、監視期間設定レジスタ9−3と、アクセス統計部9−1とが追加されている点が異なっている。図4Aと同様に説明できる部分は同一の符号を付して説明を省略する。
本発明の実施の形態4について説明する。図9Aは実施の形態4におけるシステム構成図を示している。本実施の形態は常にあるサイクル期間の各プロセッサのバスアクセス状況を監視し、その期間内でバスアクセス回数が多いプロセッサに対して、次のサイクル期間において実施の形態1と同様の制御を行うものである。図9AのバスIF部4−10は、図4Aと比較して、抑制PU情報保持部9−13と、監視期間カウンタ9−2と、監視期間設定レジスタ9−3と、アクセス統計部9−1とが追加されている点が異なっている。図4Aと同様に説明できる部分は同一の符号を付して説明を省略する。
抑制PU情報保持部9−13は、複数のマスターユニットのうち転送フェーズの連続実行回数を抑制すべきマスターユニットの識別情報(PUID)を第2識別情報として保持する第2識別情報保持部として機能する。
監視期間カウンタ9−2は、監視期間設定レジスタ9−3に設定された監視期間(一定期間)を周期的にカウントする。
アクセス統計部9−1は、マスターユニット毎のアクセス回数を一定時間ごとに計数する計数部として機能し、一定時間内のPU0のアクセス回数をカウントするPU0アクセスカウンタ9−7と、一定時間内のPU1のアクセス回数をカウントするPU1アクセスカウンタ9−8と、アクセス回数の最も多いマスターユニットの識別情報を前記第2識別情報として前記第2識別情報保持部に設定する設定部として機能する回数比較器9−11とを含む。
図9Bは、受理制御部413における受理制御処理の一例を示すフローチャート図である。同図は、図4Bと比較して、ステップS414と、S415およびS416との間にS481が追加されている点が異なっている。すなわち、受理制御部は、S481において、新たなアクセス要求に対応するPUIDと抑制PUID(第2識別情報)とが一致しないと判定した場合には当該新たなアクセス要求を受理し(S416)、一致すると判定した場合には当該新たなアクセス要求を受理しない(S415)。
アクセス統計部9−1は任意のサイクル期間中の各プロセッサのアクセス回数を解析するブロックである。サイクル期間は監視期間カウンタ9−2と監視期間設定レジスタ9−3とによってプログラマブルに設定される。監視期間カウンタ9−2はクロックが入力されることによりダウンカウントするカウンタであり、監視開始信号9−5が入力されると監視期間設定レジスタ9−3に設定された監視期間設定値9−4を取り込み、ダウンカウントの初期値とする。監視期間カウンタ9−2のカウント値が0になると、監視期間が終了したと判断し監視終了信号9−6をアサートする。これを一つの監視期間のカウント動作とする。監視終了信号9−6がアサートされると、同時に、あるいはその後の所定のタイミングで監視開始信号9−5がアサートされ、監視期間のカウント動作を再度繰り返す。ここで、監視期間設定レジスタ9−3はソフトウェアで任意の値に設定可能なものであり、例えば、プロセッサユニットが実行するレジスタ書き込み命令によってプログラマブルに更新可能なレジスタである。
アクセス統計部9−1は、監視開始信号9−5がアサートされると、PU0アクセスカウンタ9−7、及びPU1アクセスカウンタ9−8の値が0にクリアされる。その後、アービター403が各々のプロセッサユニットからのリクエストを受理するごとに、受理したリクエストがPU0(4−2)からのリクエストであれば、PU0アクセス情報がPU0アクセスカウンタ9−7に送られ、PU0アクセスカウンタ9−7がアップカウントされる。同様に、受理したリクエストがPU1(4−3)からのリクエストであれば、PU1アクセス情報によりPU1アクセスカウンタ9−8がアップカウントされる。監視終了信号9−6がアクセス統計部9−1にアサートされると、回数比較器9−11によりPU0アクセスカウンタ9−7の値とPU1アクセスカウンタ9−8の値とが比較され、回数の多いプロセッサユニットの情報が次期間抑制PU情報9−12として、抑制PU情報9−13にセットされる。
最終受理PU情報有効ビット4−13、及び最終受理PU ID(4−14)の動作は実施の形態1と同様である。
本実施の形態においては、最終受理PU情報有効ビット4−13及び最終受理PU ID(4−14)に加え、抑制PU情報9−13も参照することに特徴がある。次にリクエストがあったプロセッサユニットが抑制PU情報9−13の示すプロセッサユニットと同じであれば、最終受理PU情報有効ビット4−13と最終受理PU ID(4−14)に応じてアクセス制御を行う。しかし、次にリクエストがあったプロセッサユニットが抑制PU情報9−13の示すプロセッサユニットと異なる場合には、そのプロセッサユニットからのリクエストを受理する。すなわち、最終受理PU ID(4−14)と抑制PU情報9−13が共に「PU0」であり、かつ最終受理PU情報有効ビット4−13がセットされているときに、PU0(4−2)からのリクエストがアサートされれば、このリクエストは受理しないが、最終受理PU ID(4−14)と抑制PU情報9−13の何れかが「PU1」であるときに、PU0(4−2)からのリクエストがアサートされればこれを受理することになる。これら一連の動作を監視期間設定値9−4毎に繰り返す。
以上の構成によって本実施の形態においては、所定の期間に各々のプロセッサのバスアクセス情報を取得し、全期間でアクセス回数が多かった方のプロセッサからの連続アクセスを次の期間で抑制することにより、アクセス頻度が多発するプロセッサの他のプロセッサへの影響を低減させ、全期間での全プロセッサのバスアクセス性能を均等に分散化させることが可能となる。
なお、本実施の形態は、実施の形態1に限らず、その他の実施の形態あるいはそれらの組み合わせに適用することも可能であることはいうまでもない。
(実施の形態5)
本発明の実施の形態5について説明する。図10Aは実施の形態5におけるシステム構成図を示している。本実施の形態においては、プロセッサは複数のコアが実装されたマルチプロセッサである必要はなく、同時に複数のスレッドが動作可能なマルチスレッドプロセッサである。具体的には、本実施の形態におけるマルチスレッドプロセッサは、スレッド毎に独立してバスアクセス要求が可能であり、かつ、あるスレッドでのバスアクセス中であっても別のスレッドからバスアクセス要求をすることが可能なマルチスレッドプロセッサである。
本発明の実施の形態5について説明する。図10Aは実施の形態5におけるシステム構成図を示している。本実施の形態においては、プロセッサは複数のコアが実装されたマルチプロセッサである必要はなく、同時に複数のスレッドが動作可能なマルチスレッドプロセッサである。具体的には、本実施の形態におけるマルチスレッドプロセッサは、スレッド毎に独立してバスアクセス要求が可能であり、かつ、あるスレッドでのバスアクセス中であっても別のスレッドからバスアクセス要求をすることが可能なマルチスレッドプロセッサである。
このようなマルチスレッドプロセッサにおいても、上述のマルチプロセッサと同様の課題が発生し、バスアクセスの性能が特定のスレッドのみに偏るのを防ぎたい場合がある。すなわち、マルチスレッドプロセッサにおいても、スレッド毎にバスバンド幅を均等に割り当てたい場合や、各スレッドに競合によるバスアクセスの影響を均等に割り振りたい場合がある。
マルチスレッドプロセッサ10−1は3つのスレッド(スレッド0、スレッド1、スレッド2)を処理可能なプロセッサである。マルチスレッドプロセッサ10−1は、スレッド毎にバスアクセスの種別をスレッド0アクセス属性設定レジスタ10−2、スレッド1アクセス属性設定レジスタ10−3、スレッド2アクセス属性設定レジスタ10−4へと設定することが可能である。各スレッドでバスアクセスが発生すると、バスIF部4−10にアクセス要求10−5と共に要求をおこなったスレッドID(10−6)とそのスレッドのアクセス属性10−7が出力される。
最終受理スレッドID有効ビット10−9、及び最終受理スレッドID(10−10)は、実施の形態1における最終受理PU情報有効ビット(4−13)、最終受理PU ID(4−14)と同様の制御に使われるものである。但し、最終受理スレッドID(10−10)には受理したバスアクセス要求を出したプロセッサユニットではなく、受理したバスアクセスに対応するスレッド番号、すなわち、アクセス要求10−5がアサートされているサイクルのスレッドID(10−6)がセットされる。
スレッド0アクセス属性設定レジスタ10−2、スレッド1アクセス属性設定レジスタ10−3、スレッド2アクセス属性設定レジスタ10−4にはシステム毎に任意の意味の属性を設定することが可能である。本実施の形態では発行抑制制御を行うか行わないかの属性がセットされる。ここでは、スレッド0アクセス属性設定レジスタ10−2には「有効」、スレッド1アクセス属性設定レジスタ10−3には「無効」、スレッド2アクセス属性設定レジスタ10−4には「有効」とセットした場合を例にとって説明する。この例によると、バスアクセス性能をスレッド0と、スレッド2で均等となるように制御することとなる。
スレッド0でバスアクセスが発生すると、アクセス要求10−5がアサートされると同時にスレッドID(10−6)として「ID0」、アクセス属性10−7として「有効」が出力される。アービター404がこのリクエストを受理すると、最終受理スレッドID有効ビット10−9がセットされ、かつ最終受理スレッドID(10−10)に「ID0」がセットされる。また、アクセス要求10−5がアサートされ、共有メモリ4−24へのアクセスが実行される。
最終受理スレッドID有効ビット10−9は他のバスアクセス要求が無ければ、共有メモリ4−24へのアクセスが完了するまでセットされ続ける。この状態で更にスレッド0からのバスアクセス要求が発生した場合、アクセス属性10−7が「有効」であり、かつスレッドID(10−6)が最終受理スレッドID(10−10)のIDと一致するため、アービター404はリクエストを受理しない。よってアクセス受理10−8をアサートしない。このリクエストが受理されるのは最終受理スレッドID有効ビット10−9がクリアされるとき、すなわち最終受理スレッドID(10−10)にセットされたバスアクセスが完了した後か、あるいは別のスレッドのバスアクセス要求が発生した場合である。
マルチスレッドプロセッサ10−1は、アクセス要求10−5が受理されないため次のサイクルで他のスレッドのバスアクセス要求があればそのアクセス要求を行う。そのためにアクセス要求10−5を一旦ネゲートする。他のスレッドのバスアクセス要求がなければスレッド0に対応するアクセス要求10−5をアサートし続ける。
次に他のスレッドからのバスアクセス要求が無い状態でスレッド1アクセス属性設定レジスタ10−3に「無効」が設定されているスレッド1からのバスアクセス要求が連続して発生した場合の動作を説明する。スレッド1でバスアクセスが発生すると、アクセス要求10−5がアサートされ、同時にアクセス属性10−7として「無効」が出力される。このリクエストが受理されると最終受理スレッドID有効ビット(10−9)がセットされ、最終受理スレッドID(10−10)として「ID1」がセットされる。この状態で更にスレッド1で新たなバスアクセスが発生するとアクセス要求10−5が再度アサートされ、同時にアクセス属性10−7として「無効」が出力される。この状態においては、最終受理スレッドID有効ビット10−9がセットされており、最終受理スレッドID(10−10)がバスアクセスのあったスレッドID(10−6)と同じであるが、アクセス属性10−7として「無効」が出力されているので、最終受理スレッドID有効ビット10−9がセットされ、かつ最終受理スレッドID(10−10)が同一であったとしても抑制制御の対象ではないと判断され、リクエストが受理される。このリクエストの受理に伴い、最終受理スレッドID有効ビット10−9が再度セットされ、最終受理スレッドID(10−10)が更新されるが、その後の動作に何ら影響は与えない。
最終受理スレッドID有効ビット10−9、及び最終受理スレッドID(10−10)は実施の形態1と同様のセット、クリア制御が行われる。すなわち、最終受理スレッドID有効ビット10−9がセットされていない場合にはアクセス属性10−7を受理するとセットされ、セットされている場合には新たにアクセス属性10−7を受理するか、あるいは最終受理スレッドID(10−10)で保持されているスレッドIDの転送が終了したことをスレッド0転送中信号10−11、スレッド0転送終了信号10−12、スレッド1転送中信号10−13、スレッド1転送終了信号10−14、スレッド2転送中信号(10−15)、スレッド2転送終了信号(10−16)から判断してクリアする。
なお、実施の形態5の説明ではアクセス属性は「有効」「無効」の場合を示したが、制限の対象とするグループを設定し、スレッド毎にどのグループに属しているかをアクセス属性として設定する方法もある。たとえばあるプログラム(プログラムAとする)はスレッド0、スレッド1に順次割り当てられて実施され、別のあるプログラム(プログラムBとする)はスレッド2で実施される場合で、プログラムAとプログラムBの間でバスアクセス性能を均等化したい場合、連続実行の抑制制御をスレッド0、スレッド1からのアクセスに対しては両者をまとめて実施、スレッド2からのアクセスはスレッド2のみで実施するのが有効である。その場合、プログラムA、プログラムBに対して制限グループ0、制限グループ1と定義し、スレッド0アクセス属性設定レジスタ10−2、スレッド1アクセス属性設定レジスタ10−3、には「制限グループ0」、スレッド2アクセス属性設定レジスタ10−4には「制限グループ1」を設定しておく。実施の形態5の説明では同じ
スレッドに対してアクセス属性が「有効」であれば連続受理の制限制御を行っていたが、スレッドが異なっていても同じアクセス属性、すなわち同じ制限グループであれば連続受理の制限制御の対象とする方法で前記が実現可能である。
スレッドに対してアクセス属性が「有効」であれば連続受理の制限制御を行っていたが、スレッドが異なっていても同じアクセス属性、すなわち同じ制限グループであれば連続受理の制限制御の対象とする方法で前記が実現可能である。
なお、実施の形態5においても、バスIF部にリクエストのキューが設置されている場合には、実施の形態1で説明したのと同様の変形が可能である。さらに実施の形態2〜4で説明した構成と組み合わせることも可能であることは言うまでもない。さらにマルチスレッドプロセッサはマルチプロセッサであっても構わない。
以上のように、本発明により複数のプロセッサからなるシステムにおいて共有メモリに対してのアクセス性能をプロセッサ毎に均一に分散させることが可能になり、あるいはマルチスレッドプロセッサにおいてスレッド毎のアクセス性能を均一に分散させることが可能となる。よって、プロセッサシステムに利用可能である。
1−1 マルチプロセッサ
1−4 PU0
1−5 PU1
1−6 PU0アクセス要求
1−7 PU1アクセス要求
1−8 PU0アクセス受理
1−9 PU1アクセス受理
1−12 バスIF部
1−13 プロセッサバス
1−14 プロセッサバス要求
1−15 プロセッサバス要求受理
1−17 共有バスIF部
1−18 DMAバス
1−19 DSPバス
1−24 共有メモリバス
4−1 マルチプロセッサ
4−2 PU0
4−3 PU1
4−4 PU0アクセス要求
4−5 PU1アクセス要求
4−6 PU0アクセス受理
4−7 PU1アクセス受理
4−10 バスIF部
400、401、402、403、404 アービター
4−13 最終受理PU情報有効ビット
4−14 最終受理PU ID
4−15 リクエスト生成部
4−16 データ転送部
4−18 PU0転送終了信号
4−19 PU1転送中信号
4−21 プロセッサバス要求
4−22 プロセッサバス要求受理
7−1 抑制サイクルカウンタ
8−1 連続数カウンタ
9−1 アクセス統計部
9−2 監視期間カウンタ
9−7 PU0アクセスカウンタ
9−8 PU1アクセスカウンタ
9−11 回数比較器
10−1 マルチスレッドプロセッサ
10−2 スレッド0アクセス属性設定レジスタ
10−3 スレッド1アクセス属性設定レジスタ
10−4 スレッド2アクセス属性設定レジスタ
10−5 アクセス要求
10−6 スレッドID
10−7 アクセス属性
10−8 アクセス受理
10−9 最終受理スレッドID有効ビット
10−10 最終受理スレッドID
410 受理制御部
420 転送制御部
1−4 PU0
1−5 PU1
1−6 PU0アクセス要求
1−7 PU1アクセス要求
1−8 PU0アクセス受理
1−9 PU1アクセス受理
1−12 バスIF部
1−13 プロセッサバス
1−14 プロセッサバス要求
1−15 プロセッサバス要求受理
1−17 共有バスIF部
1−18 DMAバス
1−19 DSPバス
1−24 共有メモリバス
4−1 マルチプロセッサ
4−2 PU0
4−3 PU1
4−4 PU0アクセス要求
4−5 PU1アクセス要求
4−6 PU0アクセス受理
4−7 PU1アクセス受理
4−10 バスIF部
400、401、402、403、404 アービター
4−13 最終受理PU情報有効ビット
4−14 最終受理PU ID
4−15 リクエスト生成部
4−16 データ転送部
4−18 PU0転送終了信号
4−19 PU1転送中信号
4−21 プロセッサバス要求
4−22 プロセッサバス要求受理
7−1 抑制サイクルカウンタ
8−1 連続数カウンタ
9−1 アクセス統計部
9−2 監視期間カウンタ
9−7 PU0アクセスカウンタ
9−8 PU1アクセスカウンタ
9−11 回数比較器
10−1 マルチスレッドプロセッサ
10−2 スレッド0アクセス属性設定レジスタ
10−3 スレッド1アクセス属性設定レジスタ
10−4 スレッド2アクセス属性設定レジスタ
10−5 アクセス要求
10−6 スレッドID
10−7 アクセス属性
10−8 アクセス受理
10−9 最終受理スレッドID有効ビット
10−10 最終受理スレッドID
410 受理制御部
420 転送制御部
Claims (22)
- 共有メモリに接続されるバスと、
前記共有メモリをアクセスするためのアクセス要求を発行する複数のマスターユニットと、
前記複数のマスターユニットから発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って前記共有メモリとマスターユニットとの間で前記バスを介してデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション方式で前記バスのアクセスを行うバスインターフェイス部と、
を備え、
前記バスインターフェイス部は、
1つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をN回までに制限し、
前記所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間である
ことを特徴とするプロセッサシステム。 - 前記Nは1であることを特徴とする請求項1記載のプロセッサシステム。
- 前記バスインターフェイス部は、
アクセス要求の受理を制御する受理制御部と、
前記データ転送を制御する転送制御部と、
受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも1つ保持する識別情報保持部と、
前記所定の期間有効になるフラグ情報を保持するフラグ保持部と
を備え、
前記受理制御部は、新たなアクセス要求が発行されたとき、
前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、
前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、
当該識別情報が一致しないと判定した場合には当該新たなアクセス要求を受理し、
当該識別情報が一致すると判定した場合には、当該新たなアクセス要求を発行したマスターユニットに対応する転送フェーズの連続実行回数をN回までに制限する
ことを特徴とする請求項1記載のプロセッサシステム。 - 前記所定の期間は、前記アクセス要求の受理から前記アクセス要求に対応する転送フェーズの完了までの期間であり、
前記受理制御部は、アクセス要求を受理する毎に、前記フラグ情報を有効にし、かつ当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、
前記転送制御部は、前記識別情報保持部に保持された識別情報に対応する転送フェーズの完了時に、前記フラグ情報保持手段のフラグ情報を無効にする
ことを特徴とする請求項3記載のプロセッサシステム。 - 前記所定の期間は、アクセス要求の受理から所定サイクル数が経過するまでの期間であり、
前記プロセッサシステムは、さらに、
前記所定サイクル数をカウントするサイクルカウンタを備え、
前記受理制御部は、アクセス要求を受理する毎に、前記フラグ情報を有効にし、当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、前記カウンタのサイクルカウント動作を開始させ、
前記フラグ保持手段は、前記カウンタが前記所定サイクル数をカウントしたときに前記フラグ情報を無効にする
ことを特徴とする請求項3記載のプロセッサシステム。 - 前記プロセッサシステムは、さらに、
前記所定サイクル数が設定可能であり、かつ、前記所定サイクル数を保持するサイクルレジスタを備え、
前記サイクルカウンタは、前記サイクルレジスタに保持された所定サイクル数をカウントする
ことを特徴とする請求項5記載のプロセッサシステム。 - 前記バスインターフェイス部は、
アクセス要求の受理を制御する受理制御部と、
前記データ転送を制御する転送制御部と、
受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも1つ保持する識別情報保持部と、
前記所定の期間有効になるフラグ情報を保持するフラグ保持部と、
前記Nをカウントする連続数カウンタと
を備え、
前記受理制御部は、新たなアクセス要求が発行されたとき、
前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、
前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、
当該識別情報が一致しないと判定した場合には当該新たなアクセス要求を受理し、
当該識別情報が一致すると判定した場合には前記連続数カウンタがN回までカウントしたか否か判定し、
前記連続数カウンタがN回までカウントしていないと判定した場合には当該新たなアクセス要求を受理し、
前記連続数カウンタがN回までカウントしたと判定した場合には当該新たなアクセス要求の受理を前記フラグ情報が無効になるまで延期し、前記連続カウンタを初期化する
ことを特徴とする請求項1記載のプロセッサシステム。 - 前記プロセッサシステムは、さらに、
何れかのマスターユニットから設定可能であり、前記Nを保持する連続数レジスタを備え、
前記連続数カウンタは、前記連続数レジスタに保持された前記Nをカウントする
ことを特徴とする請求項7記載のプロセッサシステム。 - 前記所定の期間は、前記アクセス要求の受理から前記アクセス要求に対応する転送フェーズの完了までの期間であり、
前記受理制御部は、アクセス要求を受理する毎に前記フラグ情報を有効にし、当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、
前記転送制御部は、前記識別情報保持部に保持された識別情報に対応する転送フェーズの完了時に、前記フラグ情報保持手段のフラグ情報を無効にする
ことを特徴とする請求項7記載のプロセッサシステム。 - 前記バスインターフェイス部は、
アクセス要求の受理を制御する受理制御部と、
前記データ転送を制御する転送制御部と、
受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報の少なくとも1つを第1識別情報として保持する第1識別情報保持部と、
前記所定の期間有効になるフラグ情報を保持するフラグ保持部と、
前記複数のマスターユニットのうちアクセスを制限すべきマスターユニットの識別情報を第2識別情報として保持する第2識別情報保持部と
を備え、
前記受理制御部は、新たなアクセス要求が発行されたとき、
前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、
前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報が前記第1識別情報および第2識別情報と一致するか否かを判定し、
前記第1識別情報および第2識別情報の少なくとも一方と一致しないと判定した場合には当該新たなアクセス要求を受理し、
前記第1識別情報および第2識別情報の両方に一致すると判定した場合には当該新たなアクセス要求の受理を前記フラグ情報が無効になるまで延期する
ことを特徴とする請求項1記載のプロセッサシステム。 - 前記プロセッサシステムは、さらに、
前記マスターユニット毎のアクセス回数を一定時間ごとに計数する計数部と、
アクセス回数の最も多いマスターユニットの識別情報を前記第2識別情報として前記第2識別情報保持部に設定する設定部とを備える
ことを特徴とする請求項10記載のプロセッサシステム。 - 前記バスインターフェイス部は、
アクセス要求の受理を制御する受理制御部と、
前記データ転送を制御する転送制御部と、
受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも1つ保持する識別情報保持部と、
前記所定の期間有効になるフラグ情報を保持するフラグ保持部と、
を備え、
前記転送制御部は、
前記フラグ情報が無効を示す場合は、受理されたアクセス要求の転送フェーズを実行し、
前記フラグ情報が有効を示す場合は、受理済で転送フェーズ未実行のアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、
当該識別情報が一致しないと判定した場合には当該受理済みでかつ転送フェーズ未実行のアクセス要求の転送フェーズを開始し、
当該識別情報が一致すると判定した場合には当該受理済みでかつ転送フェーズ未実行のアクセス要求の転送フェーズの開始を前記フラグ情報が無効になるまで延期する
ことを特徴とする請求項1記載のプロセッサシステム。 - 前記所定の期間は、前記アクセス要求の受理から前記アクセス要求に対応する転送フェーズの完了までの期間であり、
前記受理制御部は、アクセス要求を受理する毎に前記フラグ情報を有効にし、当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、
前記転送制御部は、前記識別情報保持部に保持された識別情報に対応する転送フェーズの完了時に、前記フラグ情報保持手段のフラグ情報を無効にする
ことを特徴とする請求項12記載のプロセッサシステム。 - 前記複数のマスターユニットは、対称型マルチプロセッサを構成する複数のプロセッサユニットである
ことを特徴とする請求項1記載のプロセッサシステム。 - 前記複数のマスターユニットは、マルチプロセッサを構成する複数のプロセッサユニットに設けられる複数の仮想プロセッサである
ことを特徴とする請求項1記載のプロセッサシステム。 - 前記複数のマスターユニットは、マルチスレッドプロセッサ中の複数のスレッドに対応する複数の仮想プロセッサである
ことを特徴とする請求項1記載のプロセッサシステム。 - 前記複数のマスターユニットおよびバスインターフェイス部は、単一の半導体チップに含まれることを特徴とする請求項1記載のプロセッサシステム。
- 共有メモリに接続されるバスと、
少なくとも1つのスレッドを含む仮想プロセッサ複数個を実行し、各仮想プロセッサから前記共有メモリに対するアクセス要求を発行するマルチスレッドプロセッサと、
前記複数の仮想プロセッサから発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って前記共有メモリと仮想プロセッサとの間で前記バスを介してデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション型のバスインターフェイス部と、
を備え、
前記バスインターフェイス部は、
1つの仮想プロセッサから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をN回までに制限し、
前記所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間である
ことを特徴とするプロセッサシステム。 - 前記マルチスレッドプロセッサは、アクセス要求とともにスレッドの識別情報とアクセス属性を発行し、
前記アクセス属性は、前記転送フェーズの連続実行の制限を有効にすべきか否かを示し、
前記バスインターフェイス部は、有効を示す前記アクセス属性に対応するアクセス要求に対して、前記転送フェーズの連続実行回数をN回までに制限する
ことを特徴とする請求項18記載のプロセッサシステム。 - 前記マルチスレッドプロセッサは、アクセス要求とともにスレッドの識別情報とアクセス属性を発行し、
前記アクセス情報は、少なくとも1つのスレッドを含むグループとしてのグループ番号であり、
前記バスインターフェイス部は、グループ番号毎に、対応するアクセス要求の前記転送フェーズの連続実行回数をN回までに制限する
ことを特徴とする請求項18記載のプロセッサシステム。 - 共有メモリに接続されるバスと、
前記共有メモリをアクセスするためのアクセス要求を発行する複数のマスターユニットと、
前記複数のマスターユニットから発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って前記共有メモリとマスターユニットとの間で前記バスを介してデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション方式で前記バスのアクセスを行うバスインターフェイス部と、最後に受理したアクセス要求であってかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を保持する識別情報保持部と、前記識別情報保持部に保持された識別情報に対応するアクセス情報の転送フェーズが完了するまでの期間の一部または全部に相当する期間有効であるフラグ情報を保持させるフラグ保持部とを備えるプロセッサシステムにおけるバス制御方法であって、
前記バス制御方法は、
最後に受理したアクセス要求であってかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報と、当該識別情報に対応するアクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間に有効となるフラグ情報とを前記識別情報保持部および前記フラグ保持部に保存し、
新たなアクセス要求が発行されたとき、前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、
当該識別情報が一致しないと判定した場合、および前記フラグ情報が無効を示す場合には当該新たなアクセス要求を受理し、
当該識別情報が一致すると判定した場合には、当該新たなアクセス要求を発行したマスターユニットに対応する転送フェーズの連続実行回数をN回までに制限する
ことを特徴とするバス制御方法。 - プロセッサシステムを備える半導体装置であって、
共有メモリに接続されるバスと、
前記共有メモリをアクセスするためのアクセス要求を発行する複数のマスターユニットと、
前記複数のマスターユニットから発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って前記共有メモリとマスターユニットとの間で前記バスを介してデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション方式で前記バスのアクセスを行うバスインターフェイス部と、
を備え、
前記バスインターフェイス部は、
1つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をN回までに制限し、
前記所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間である
ことを特徴とする半導体装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008113094A JP2008293487A (ja) | 2007-04-27 | 2008-04-23 | プロセッサシステム、バス制御方法および半導体装置 |
US12/108,754 US20080270658A1 (en) | 2007-04-27 | 2008-04-24 | Processor system, bus controlling method, and semiconductor device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007118709 | 2007-04-27 | ||
JP2008113094A JP2008293487A (ja) | 2007-04-27 | 2008-04-23 | プロセッサシステム、バス制御方法および半導体装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008293487A true JP2008293487A (ja) | 2008-12-04 |
Family
ID=40168099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008113094A Withdrawn JP2008293487A (ja) | 2007-04-27 | 2008-04-23 | プロセッサシステム、バス制御方法および半導体装置 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2008293487A (ja) |
CN (1) | CN101324870A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010211349A (ja) * | 2009-03-09 | 2010-09-24 | Ricoh Co Ltd | 半導体集積回路及びメモリアクセス制御方法 |
JP2011059979A (ja) * | 2009-09-10 | 2011-03-24 | Ricoh Co Ltd | データ転送装置、データ転送制御方法、データ転送制御プログラム及び記録媒体 |
JP2011123839A (ja) * | 2009-12-14 | 2011-06-23 | Fuji Xerox Co Ltd | 調停装置、画像処理装置、及び画像形成システム |
JP2012103763A (ja) * | 2010-11-08 | 2012-05-31 | Sony Corp | アービトレーション回路、および、その制御方法 |
US9747231B2 (en) | 2012-03-30 | 2017-08-29 | Nec Corporation | Bus access arbiter and method of bus arbitration |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102415059B (zh) * | 2009-07-07 | 2014-10-08 | 松下电器产业株式会社 | 总线控制装置 |
TWI603198B (zh) * | 2011-05-20 | 2017-10-21 | 英特爾股份有限公司 | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 |
DE112014001621T5 (de) * | 2013-03-25 | 2015-12-24 | Mitsubishi Electric Corporation | Bus-Master, Bussystem und Bussteuerungsverfahren |
-
2008
- 2008-04-23 JP JP2008113094A patent/JP2008293487A/ja not_active Withdrawn
- 2008-04-25 CN CNA2008100959380A patent/CN101324870A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010211349A (ja) * | 2009-03-09 | 2010-09-24 | Ricoh Co Ltd | 半導体集積回路及びメモリアクセス制御方法 |
JP2011059979A (ja) * | 2009-09-10 | 2011-03-24 | Ricoh Co Ltd | データ転送装置、データ転送制御方法、データ転送制御プログラム及び記録媒体 |
JP2011123839A (ja) * | 2009-12-14 | 2011-06-23 | Fuji Xerox Co Ltd | 調停装置、画像処理装置、及び画像形成システム |
JP2012103763A (ja) * | 2010-11-08 | 2012-05-31 | Sony Corp | アービトレーション回路、および、その制御方法 |
US9747231B2 (en) | 2012-03-30 | 2017-08-29 | Nec Corporation | Bus access arbiter and method of bus arbitration |
Also Published As
Publication number | Publication date |
---|---|
CN101324870A (zh) | 2008-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7025617B2 (ja) | メモリにアクセスするための並列処理装置、コンピュータにより実施される方法、システム、コンピュータ可読媒体 | |
JP2008293487A (ja) | プロセッサシステム、バス制御方法および半導体装置 | |
US20080270658A1 (en) | Processor system, bus controlling method, and semiconductor device | |
US11782720B2 (en) | Processor architecture with micro-threading control by hardware-accelerated kernel thread | |
US10241946B2 (en) | Multi-channel DMA system with command queue structure supporting three DMA modes | |
KR101624153B1 (ko) | 데이터 공간 아비터 | |
JP5565204B2 (ja) | データ転送装置、データ転送方法およびプログラム、ならびに、画像形成装置 | |
US9830195B2 (en) | Apparatus and method for controlling execution of processes in a parallel computing system | |
US11113101B2 (en) | Method and apparatus for scheduling arbitration among a plurality of service requestors | |
US7006521B2 (en) | External bus arbitration technique for multicore DSP device | |
JP2012079165A (ja) | バス調停装置、バス調停方法 | |
JP2013041361A (ja) | リソース調停システム及び調停方法 | |
JP2010092101A (ja) | 情報処理装置 | |
JP3596402B2 (ja) | アクセス権調停装置 | |
JP2008108126A (ja) | データ転送制御装置及びそのバスアクセス調停方法 | |
CN107003959B (zh) | 虚拟遗留线 | |
JP2009187327A (ja) | 情報通信システムの処理要求調停方法及びそのシステム並びにそのための制御プログラム | |
CN109597770B (zh) | 半导体装置和半导体装置中使用的方法 | |
JP2008250419A (ja) | 競合調停装置、マスタスレーブシステム及び競合調停方法 | |
JP2013073297A (ja) | 時分割方式による割り込み制御回路および割り込み制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110308 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20120123 |