(57)【要約】【課題】共有メモリにアクセスする複数のマスターユニット間で共有メモリへのアクセス性能を均等に分散し、しかも簡単な構成のマルチプロセッサシステムを提供する。【解決手段】  共有メモリをアクセスするためのアクセス要求を発行する複数のマスターユニットＰＵ０、ＰＵ１と、前記アクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従ってデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション型のバスＩＦ部４−１０とを備え、前記バスＩＦ部４−１０は、１つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をＮ回までに制限する。【選択図】図４Ａ
2008293487.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリに接続されるバスと、
前記共有メモリをアクセスするためのアクセス要求を発行する複数のマスターユニットと、
前記複数のマスターユニットから発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って前記共有メモリとマスターユニットとの間で前記バスを介してデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション方式で前記バスのアクセスを行うバスインターフェイス部と、
を備え、
前記バスインターフェイス部は、
１つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をＮ回までに制限し、
前記所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間である
ことを特徴とするプロセッサシステム。
【請求項２】
前記Ｎは１であることを特徴とする請求項１記載のプロセッサシステム。
【請求項３】
前記バスインターフェイス部は、
アクセス要求の受理を制御する受理制御部と、
前記データ転送を制御する転送制御部と、
受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも１つ保持する識別情報保持部と、
前記所定の期間有効になるフラグ情報を保持するフラグ保持部と
を備え、
前記受理制御部は、新たなアクセス要求が発行されたとき、
前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、
前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、
当該識別情報が一致しないと判定した場合には当該新たなアクセス要求を受理し、
当該識別情報が一致すると判定した場合には、当該新たなアクセス要求を発行したマスターユニットに対応する転送フェーズの連続実行回数をＮ回までに制限する
ことを特徴とする請求項１記載のプロセッサシステム。
【請求項４】
前記所定の期間は、前記アクセス要求の受理から前記アクセス要求に対応する転送フェーズの完了までの期間であり、
前記受理制御部は、アクセス要求を受理する毎に、前記フラグ情報を有効にし、かつ当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、
前記転送制御部は、前記識別情報保持部に保持された識別情報に対応する転送フェーズの完了時に、前記フラグ情報保持手段のフラグ情報を無効にする
ことを特徴とする請求項３記載のプロセッサシステム。
【請求項５】
前記所定の期間は、アクセス要求の受理から所定サイクル数が経過するまでの期間であり、
前記プロセッサシステムは、さらに、
前記所定サイクル数をカウントするサイクルカウンタを備え、
前記受理制御部は、アクセス要求を受理する毎に、前記フラグ情報を有効にし、当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、前記カウンタのサイクルカウント動作を開始させ、
前記フラグ保持手段は、前記カウンタが前記所定サイクル数をカウントしたときに前記フラグ情報を無効にする
ことを特徴とする請求項３記載のプロセッサシステム。
【請求項６】
前記プロセッサシステムは、さらに、
前記所定サイクル数が設定可能であり、かつ、前記所定サイクル数を保持するサイクルレジスタを備え、
前記サイクルカウンタは、前記サイクルレジスタに保持された所定サイクル数をカウントする
ことを特徴とする請求項５記載のプロセッサシステム。
【請求項７】
前記バスインターフェイス部は、
アクセス要求の受理を制御する受理制御部と、
前記データ転送を制御する転送制御部と、
受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも１つ保持する識別情報保持部と、
前記所定の期間有効になるフラグ情報を保持するフラグ保持部と、
前記Ｎをカウントする連続数カウンタと
を備え、
前記受理制御部は、新たなアクセス要求が発行されたとき、
前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、
前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、
当該識別情報が一致しないと判定した場合には当該新たなアクセス要求を受理し、
当該識別情報が一致すると判定した場合には前記連続数カウンタがＮ回までカウントしたか否か判定し、
前記連続数カウンタがＮ回までカウントしていないと判定した場合には当該新たなアクセス要求を受理し、
前記連続数カウンタがＮ回までカウントしたと判定した場合には当該新たなアクセス要求の受理を前記フラグ情報が無効になるまで延期し、前記連続カウンタを初期化する
ことを特徴とする請求項１記載のプロセッサシステム。
【請求項８】
前記プロセッサシステムは、さらに、
何れかのマスターユニットから設定可能であり、前記Ｎを保持する連続数レジスタを備え、
前記連続数カウンタは、前記連続数レジスタに保持された前記Ｎをカウントする
ことを特徴とする請求項７記載のプロセッサシステム。
【請求項９】
前記所定の期間は、前記アクセス要求の受理から前記アクセス要求に対応する転送フェーズの完了までの期間であり、
前記受理制御部は、アクセス要求を受理する毎に前記フラグ情報を有効にし、当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、
前記転送制御部は、前記識別情報保持部に保持された識別情報に対応する転送フェーズの完了時に、前記フラグ情報保持手段のフラグ情報を無効にする
ことを特徴とする請求項７記載のプロセッサシステム。
【請求項１０】
前記バスインターフェイス部は、
アクセス要求の受理を制御する受理制御部と、
前記データ転送を制御する転送制御部と、
受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報の少なくとも１つを第１識別情報として保持する第１識別情報保持部と、
前記所定の期間有効になるフラグ情報を保持するフラグ保持部と、
前記複数のマスターユニットのうちアクセスを制限すべきマスターユニットの識別情報を第２識別情報として保持する第２識別情報保持部と
を備え、
前記受理制御部は、新たなアクセス要求が発行されたとき、
前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、
前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報が前記第１識別情報および第２識別情報と一致するか否かを判定し、
前記第１識別情報および第２識別情報の少なくとも一方と一致しないと判定した場合には当該新たなアクセス要求を受理し、
前記第１識別情報および第２識別情報の両方に一致すると判定した場合には当該新たなアクセス要求の受理を前記フラグ情報が無効になるまで延期する
ことを特徴とする請求項１記載のプロセッサシステム。
【請求項１１】
前記プロセッサシステムは、さらに、
前記マスターユニット毎のアクセス回数を一定時間ごとに計数する計数部と、
アクセス回数の最も多いマスターユニットの識別情報を前記第２識別情報として前記第２識別情報保持部に設定する設定部とを備える
ことを特徴とする請求項１０記載のプロセッサシステム。
【請求項１２】
前記バスインターフェイス部は、
アクセス要求の受理を制御する受理制御部と、
前記データ転送を制御する転送制御部と、
受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも１つ保持する識別情報保持部と、
前記所定の期間有効になるフラグ情報を保持するフラグ保持部と、
を備え、
前記転送制御部は、
前記フラグ情報が無効を示す場合は、受理されたアクセス要求の転送フェーズを実行し、
前記フラグ情報が有効を示す場合は、受理済で転送フェーズ未実行のアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、
当該識別情報が一致しないと判定した場合には当該受理済みでかつ転送フェーズ未実行のアクセス要求の転送フェーズを開始し、
当該識別情報が一致すると判定した場合には当該受理済みでかつ転送フェーズ未実行のアクセス要求の転送フェーズの開始を前記フラグ情報が無効になるまで延期する
ことを特徴とする請求項１記載のプロセッサシステム。
【請求項１３】
前記所定の期間は、前記アクセス要求の受理から前記アクセス要求に対応する転送フェーズの完了までの期間であり、
前記受理制御部は、アクセス要求を受理する毎に前記フラグ情報を有効にし、当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、
前記転送制御部は、前記識別情報保持部に保持された識別情報に対応する転送フェーズの完了時に、前記フラグ情報保持手段のフラグ情報を無効にする
ことを特徴とする請求項１２記載のプロセッサシステム。
【請求項１４】
前記複数のマスターユニットは、対称型マルチプロセッサを構成する複数のプロセッサユニットである
ことを特徴とする請求項１記載のプロセッサシステム。
【請求項１５】
前記複数のマスターユニットは、マルチプロセッサを構成する複数のプロセッサユニットに設けられる複数の仮想プロセッサである
ことを特徴とする請求項１記載のプロセッサシステム。
【請求項１６】
前記複数のマスターユニットは、マルチスレッドプロセッサ中の複数のスレッドに対応する複数の仮想プロセッサである
ことを特徴とする請求項１記載のプロセッサシステム。
【請求項１７】
前記複数のマスターユニットおよびバスインターフェイス部は、単一の半導体チップに含まれることを特徴とする請求項１記載のプロセッサシステム。
【請求項１８】
共有メモリに接続されるバスと、
少なくとも１つのスレッドを含む仮想プロセッサ複数個を実行し、各仮想プロセッサから前記共有メモリに対するアクセス要求を発行するマルチスレッドプロセッサと、
前記複数の仮想プロセッサから発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って前記共有メモリと仮想プロセッサとの間で前記バスを介してデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション型のバスインターフェイス部と、
を備え、
前記バスインターフェイス部は、
１つの仮想プロセッサから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をＮ回までに制限し、
前記所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間である
ことを特徴とするプロセッサシステム。
【請求項１９】
前記マルチスレッドプロセッサは、アクセス要求とともにスレッドの識別情報とアクセス属性を発行し、
前記アクセス属性は、前記転送フェーズの連続実行の制限を有効にすべきか否かを示し、
前記バスインターフェイス部は、有効を示す前記アクセス属性に対応するアクセス要求に対して、前記転送フェーズの連続実行回数をＮ回までに制限する
ことを特徴とする請求項１８記載のプロセッサシステム。
【請求項２０】
前記マルチスレッドプロセッサは、アクセス要求とともにスレッドの識別情報とアクセス属性を発行し、
前記アクセス情報は、少なくとも１つのスレッドを含むグループとしてのグループ番号であり、
前記バスインターフェイス部は、グループ番号毎に、対応するアクセス要求の前記転送フェーズの連続実行回数をＮ回までに制限する
ことを特徴とする請求項１８記載のプロセッサシステム。
【請求項２１】
共有メモリに接続されるバスと、
前記共有メモリをアクセスするためのアクセス要求を発行する複数のマスターユニットと、
前記複数のマスターユニットから発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って前記共有メモリとマスターユニットとの間で前記バスを介してデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション方式で前記バスのアクセスを行うバスインターフェイス部と、最後に受理したアクセス要求であってかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を保持する識別情報保持部と、前記識別情報保持部に保持された識別情報に対応するアクセス情報の転送フェーズが完了するまでの期間の一部または全部に相当する期間有効であるフラグ情報を保持させるフラグ保持部とを備えるプロセッサシステムにおけるバス制御方法であって、
前記バス制御方法は、
最後に受理したアクセス要求であってかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報と、当該識別情報に対応するアクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間に有効となるフラグ情報とを前記識別情報保持部および前記フラグ保持部に保存し、
新たなアクセス要求が発行されたとき、前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、
当該識別情報が一致しないと判定した場合、および前記フラグ情報が無効を示す場合には当該新たなアクセス要求を受理し、
当該識別情報が一致すると判定した場合には、当該新たなアクセス要求を発行したマスターユニットに対応する転送フェーズの連続実行回数をＮ回までに制限する
ことを特徴とするバス制御方法。
【請求項２２】
プロセッサシステムを備える半導体装置であって、
共有メモリに接続されるバスと、
前記共有メモリをアクセスするためのアクセス要求を発行する複数のマスターユニットと、
前記複数のマスターユニットから発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って前記共有メモリとマスターユニットとの間で前記バスを介してデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション方式で前記バスのアクセスを行うバスインターフェイス部と、
を備え、
前記バスインターフェイス部は、
１つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をＮ回までに制限し、
前記所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間である
ことを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のプロセッサが搭載されたマルチプロセッサといったプロセッサシステム及びこのようなプロセッサシステムにおけるバス制御方法に関する。
【背景技術】
【０００２】
複数のプロセッサが搭載されたマルチプロセッサが、共有メモリバスを介して共有メモリにアクセスする場合に、１つのプロセッサから大量のバスアクセスが発生し、かつそのプロセッサの優先度が高く設定されていたとすると他のプロセッサからのアクセス要求が受理されにくくなる。
【０００３】
従来の技術としては、複数のバスマスタにより１つの共有バスにアクセスする場合の同様の課題に対して、各バスマスタからのアクセス頻度を監視し、動的に調停時の優先度を変化させる方法がある（特許文献１参照）。
【０００４】
この技術によれば、ある一定期間の間各バスマスタからのアクセス状況を監視し、その一定期間ごとにアクセス回数の多いバスマスタの優先度を次の期間優先度を低く設定しなおすことにより、あるバスマスタが大量にバスアクセスを行った場合であっても、バスをそのバスマスタが使用し続け他のバスマスタのバスアクセスが行われにくくなる状況を解決させている。
【０００５】
しかしながら、この方法は各バスマスタからのリクエストが競合した場合の調停時に適用されるものであり、優先度の高いバスマスタが連続的にリクエストを出し続けている状況や同時にアクセス要求が発生した場合に、優先度の低いバスマスタであっても一定の割合でバスにアクセスできるという程度の効果しかない。
【０００６】
今日のようにリクエストとデータ転送を別々のフェーズで動作可能なスプリット・トランザクション方式のバスが適用されるシステムにおいては、アクセス要求を受理可能なサイクル間隔が多く、競合している状態になる前に連続してアクセス要求が発行され、受理される確率が高くなり、上記従来技術は適切に機能しない。
【特許文献１】特開２００２−９１９０３号公報（図１、図６）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
図１はマルチプロセッサを搭載したシステム構成を示す図である。このプロセッサシステムは、マルチプロセッサ１−１、ＤＭＡ１−２、ＤＳＰ１−３、共有バスＩＦ部１−１７、共有メモリ１−２３を備えている。
【０００８】
マルチプロセッサ１−１は命令実行を行うパイプラインとその関連制御からなるプロセッサユニット（ＰＵ）が２つ搭載された対称型のマルチプロセッサであり、ＰＵ０（１−４）、ＰＵ１（１−５）、バスＩＦ部１−１２を有している。
【０００９】
ＰＵ０（１−４）からのＰＵ０アクセス要求１−６、およびＰＵ１（１−５）からのＰＵ１アクセス要求１−７はバスＩＦ部１−１２で調停され、どちらか一方のアクセス要求が受理される。ＰＵ０アクセス要求１−６が受理された場合、ＰＵ０アクセス受理（１−８）がＰＵ０（１−４）に送られ、ＰＵ１アクセス要求１−７が受理された場合にはＰＵ１アクセス受理１−９がＰＵ１（１−５）に送られる。
【００１０】
バスＩＦ部１−１２はどちらかのプロセッサユニットからのリクエストを受理すると共有バスＩＦ部１−１７にプロセッサバス要求１−１４を送る。バスＩＦ部１−１２は１つの転送を行っていても次の別のリクエストを受理することが可能な構成となっている。
【００１１】
共有バスＩＦ部１−１７にはＤＭＡバス１−１８及びＤＳＰバス１−１９も接続される。それぞれのアクセス要求が共有バスＩＦ部１−１７で調停され、共有メモリ１−２３に共有メモリバスリクエスト１−２０が送られる。共有メモリ１−２３がリクエストを受理すると共有メモリバスリクエスト受理１−２１が返される。共有メモリ１−２３はアクセスが完了すると共有メモリバスアクノリッジ１−２２を共有バスＩＦ部１−１７に返す。ここで、共有メモリバスからみるとバスＩＦ部は単一のマスターとして機能する。すなわち、図１において、共有メモリバスからみてマスターとして機能するのはマルチプロセッサ１−１（バスＩＦ部１−１２）、ＤＭＡ１−２、ＤＳＰ１−３の３つである。
【００１２】
図２には本システムに搭載されるバスのバスプロトコルを示す。以降、各バスはすべてこのプロトコルであるとして説明する。
【００１３】
各バスのプロトコルはリクエスト２−１を出した後、アクノリッジ２−３と共にデータ２−４が返ってくるまでの間であっても新たなリクエストを出すことが可能なプロトコルである。これによって、連続したデータ転送時に効率よくデータ転送が行うことが可能なバス（スプリット・トランザクション・バス）となる。特に共有メモリがシンクロナスＤＲＡＭ、ＤＤＲなどの最初のデータ転送のレイテンシが長いが連続したデータ転送のスループットが短いデバイスである場合に効果を発揮する。
【００１４】
いずれかのバスマスタが発行したリクエスト２−１はアクセス先がリクエストを受理するまでアサートされ続け、アクセス先がリクエスト受理２−２を返したらネゲートされるものである。図２から明らかなように、リクエストＡに関する転送が完了する前であっても、次のリクエストＢが受理されている。
【００１５】
図３には図１に示すマルチプロセッサ１−１内のＰＵ０（１−４）、ＰＵ１（１−５）がプロセッサバス１−１３を介してスレーブデバイスへとアクセスする場合のバスタイミングを示す図である。
【００１６】
図３においては、ＰＵ０（１−４）からリクエストＡ（３−１）、リクエストＢ（３−２）がアサートされ、その後ＰＵ１（１−５）からリクエストＣ（３−３）がアサートされたものとする。上述のように各プロセッサユニットは前のリクエストに対する転送が終了する前に次のリクエストを出すことが可能であり、バスＩＦ部１−１２は前のリクエストに対する転送が終了する前に次のリクエストを１つ受理することができる。以下の説明では要求はリード要求であり、キャッシュミスの場合のキャッシュラインをリフィルするバーストアクセスである場合を例にとって説明する。ここでは、１つのリクエストで複数のワードデータをバースト転送することとする（図３では４回のバースト転送）。なお、図３では共有メモリバスに関するタイミングチャートは省略している。
【００１７】
バスＩＦ部１−１２はプロセッサユニットからアサートされたアクセス要求を順に受理し実行していく。そのため、図３に示すようにプロセッサバス要求１−１４としてはバス要求Ａ、バス要求Ｂ、バス要求Ｃの順で要求が発生したとすると、リクエストＡ（３−１）、リクエストＢ（３−２）、リクエストＣ（３−３）に対するデータもこの順で転送されることとなる。
【００１８】
リクエストＡ（３−１）に対してのレイテンシはサイクルｃｙｃＡ（３−７）である。サイクルｃｙｃＡ（３−７）は共有メモリ（１−２３）に対するバスアクセスが競合して
いない場合のマルチプロセッサ（１−１）内の各々のプロセッサユニットのバスアクセスサイクル数と考えることができる。
【００１９】
リクエストＢ（３−２）に対するデータが転送されるのは、リクエストＡ（３−１）に対するデータ転送が完了してからとなり、リクエストＣ（３−３）に対してはリクエストＡ（３−１）及びリクエストＢ（３−２）に対してのデータ転送が完了してからとなるため、リクエストＣ（３−３）のレイテンシはサイクルｃｙｃＣ（３−８）となり、サイクルｃｙｃＡ（３−７）よりも長くなる。
【００２０】
すなわち、マルチプロセッサ（１−１）は対称構造のマルチプロセッサであるが、ＰＵ０（１−４）の複数のバスアクセスにより、ＰＵ１（１−５）がバスアクセス性能の影響を受けていることになる。
【００２１】
上記のバスアクセス性能の影響が均等であれば問題はないのだが、一方のプロセッサユニットが多くのバスアクセスを行い、タイミング的に他方のプロセッサユニットより先にリクエストを発行する確率が多い場合、バスアクセスの競合の影響が他方のプロセッサに偏るといった現象が起こり得る。その場合、対称構造のマルチプロセッサであるのに片方のプロセッサユニットのバスアクセス性能が事実上他方のプロセッサユニットよりも悪くなることとなる。
【００２２】
対称構造のマルチプロセッサの場合、複数のプロセッサユニットに対応して搭載される複数のＣＰＵコアは同じものである。よって、ソフトウェアで処理性能を見積もる場合には単独のＣＰＵコアでの動作での検討を行い、その検討結果に競合による劣化分を考慮して動作性能の見積もりをし、それが搭載される双方のＣＰＵコアで同じ性能で実行されるとして見積もるのが一般的である。この場合、バスのアクセス性能についてはバスを共有することによる影響を考慮されていることにはなるが、その影響が両ＣＰＵコアに均等に割り振られないとなると性能見積もりの誤差が大きくなる。また、片方のＣＰＵコアのみ性能が悪化することによりシステム性能に影響する。
【００２３】
すなわち、マルチプロセッサシステムにおいて、バスのアクセス性能を精度よく見積もることができない。
【００２４】
また、マルチスレッドプロセッサにおいても、上述のマルチプロセッサと同様の課題が発生し、バスアクセスの性能が特定のスレッドのみに偏るのを防ぎたい場合がある。すなわち、マルチスレッドプロセッサにおいても、スレッド毎にバスバンド幅を均等に割り当てたい場合や、各スレッドに競合によるバスアクセスの影響を均等に割り振りたい場合がある。
【００２５】
本発明は、共有メモリにアクセスする複数のマスターユニット間で共有メモリへのアクセス性能を均等にし、しかも簡単な構成のマルチプロセッサシステム、バス制御方法および半導体装置を提供することを目的とする。
【００２６】
また、本発明は、簡単な構成で、複数のマスターユニット間のアクセス性能の分散を制御可能なマルチプロセッサシステム、バス制御方法および半導体装置を提供することを他の目的とする。
【課題を解決するための手段】
【００２７】
上記の課題を解決するために本発明のプロセッサシステムは、共有メモリに接続されるバスと、前記共有メモリをアクセスするためのアクセス要求を発行する複数のマスターユニットと、前記複数のマスターユニットから発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って前記共有メモリとマスターユニットとの間で前記バスを介してデータ転送する転送フェーズとを分離して実行するスプリット・トランザクション方式で前記バスのアクセスを行うバスインターフェイス部と、を備え、前記バスインターフェイス部は、１つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をＮ回までに制限し、前記所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間であることを特徴とする。この構成によれば、上記の所定の期間を空けないという限定された条件で複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数を制限するので、簡単な構成で、マスターユニット間でアクセス性能を均等に分散させることができる。
【００２８】
ここで、前記Ｎは１であってもよい。この構成によれば、転送フェーズの連続実行回数Ｎを最小の１回にすることにより、複数のマスターユニットからのアクセス要求が競合する場合に、異なるマスターユニットに対応する転送フェーズを交互にあるいは切り替えながら実行することができ、アクセス性能を均等化することができる。
【００２９】
ここで、前記バスインターフェイス部は、アクセス要求の受理を制御する受理制御部と、前記データ転送を制御する転送制御部と、受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも１つ保持する識別情報保持部と、前記所定の期間有効になるフラグ情報を保持するフラグ保持部とを備え、前記受理制御部は、新たなアクセス要求が発行されたとき、前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、当該識別情報が一致しないと判定した場合には当該新たなアクセス要求を受理し、当該識別情報が一致すると判定した場合には、当該新たなアクセス要求を発行したマスターユニットに対応する転送フェーズの連続実行回数をＮ回までに制限するようにしてもよい。この構成によれば、リクエストフェーズにおける受理を制限することによって、１つのマスターユニットの転送フェーズの連続実行回数の制限を実現することができる。また、アクセス性能の均等化を、前記識別情報と前記フラグ情報を保持するという簡単な構成に基いて実現することができる。
【００３０】
ここで、前記所定の期間は、前記アクセス要求の受理から前記アクセス要求に対応する転送フェーズの完了までの期間であり、前記受理制御部は、アクセス要求を受理する毎に、前記フラグ情報を有効にし、かつ当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、前記転送制御部は、前記識別情報保持部に保持された識別情報に対応する転送フェーズの完了時に、前記フラグ情報保持手段のフラグ情報を無効にするようにしてもよい。この構成によれば、１つのマスターユニットから上記の所定の期間を空けずに複数のアクセス要求が連続して発行した場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数を制限することができる。フラグ情報は、アクセス要求の受理時に有効にされ（セットされ）、当該アクセス要求の転送フェーズ完了時に無効にされ（リセットされ）る。このように、簡単な制御により前記フラグ情報を構成することができる。
【００３１】
ここで、前記所定の期間は、アクセス要求の受理から所定サイクル数が経過するまでの期間であり、前記プロセッサシステムは、さらに、前記所定サイクル数をカウントするサイクルカウンタを備え、前記受理制御部は、アクセス要求を受理する毎に、前記フラグ情報を有効にし、当該アクセス要求に対応する識別情報を前記識別情報保持部に設定し、前記カウンタのサイクルカウント動作を開始させ、前記フラグ保持手段は、前記カウンタが前記所定サイクル数をカウントしたときに前記フラグ情報を無効にするようにしてもよい。この構成によれば、前記所定の期間を、（ｉ）前記アクセス要求の受理から前記アクセス要求に対応する転送フェーズの完了までの期間に相当する期間に設定することも、（ｉ）より短い期間に設定することも、（ｉ）より長い時間に設定することもできる。例えば、マスターユニット毎の実際のバスアクセス性能の測定値に基いて、前記所定の期間を最適な値に調整および設定することができる。
【００３２】
ここで、前記プロセッサシステムは、さらに、前記所定サイクル数が設定可能であり、かつ、前記所定サイクル数を保持するサイクルレジスタを備え、前記サイクルカウンタは、前記サイクルレジスタに保持された所定サイクル数をカウントするようにしてもよい。この構成によれば、サイクルレジスタはマスターユニットから設定可能なので、マスターユニットは処理量やアクセス頻度に応じてサイクル数を調整および設定することができる。
【００３３】
ここで、前記バスインターフェイス部は、アクセス要求の受理を制御する受理制御部と、前記データ転送を制御する転送制御部と、受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報の少なくとも１つ保持する識別情報保持部と、前記所定の期間有効になるフラグ情報を保持するフラグ保持部と、前記Ｎをカウントする連続数カウンタとを備え、前記受理制御部は、新たなアクセス要求が発行されたとき、前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、当該識別情報が一致しないと判定した場合には当該新たなアクセス要求を受理し、当該識別情報が一致すると判定した場合には前記連続数カウンタがＮ回までカウントしたか否か判定し、前記連続数カウンタがＮ回までカウントしていないと判定した場合には当該新たなアクセス要求を受理し、前記連続数カウンタがＮ回までカウントしたと判定した場合には当該新たなアクセス要求の受理を前記フラグ情報が無効になるまで延期し、前記連続カウンタを初期化するようにしてもよい。この構成によれば、Ｎ回までの転送フェーズの連続実行回数の制限を、連続数カウンタによって簡単に制御することができる。
【００３４】
ここで、前記プロセッサシステムは、さらに、何れかのマスターユニットから設定可能であり、前記Ｎを保持する連続数レジスタを備え、前記連続数カウンタは、前記連続数レジスタに保持された前記Ｎをカウントするようにしてもよい。この構成によれば、連続数レジスタはマスターユニットから設定可能なので、マスターユニットは処理量やアクセス頻度に応じて連続数Ｎを調整および設定することができる。
【００３５】
ここで、前記バスインターフェイス部は、アクセス要求の受理を制御する受理制御部と、前記データ転送を制御する転送制御部と、受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも１つを第１識別情報として保持する第１識別情報保持部と、前記所定の期間有効になるフラグ情報を保持するフラグ保持部と、前記複数のマスターユニットのうちアクセスを制限すべきマスターユニットの識別情報を第２識別情報として保持する第２識別情報保持部とを備え、前記受理制御部は、新たなアクセス要求が発行されたとき、前記フラグ情報が無効を示す場合は当該新たなアクセス要求を受理し、前記フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したマスターユニットの識別情報が前記第１識別情報および第２識別情報と一致するか否かを判定し、前記第１識別情報および第２識別情報の少なくとも一方と一致しないと判定した場合には当該新たなアクセス要求を受理し、前記第１識別情報および第２識別情報の両方に一致すると判定した場合には当該新たなアクセス要求の受理を前記フラグ情報が無効になるまで延期するようにしてもよい。この構成によれば、前記複数のマスターユニットのうち第２識別情報保持部に保持された識別情報に対応するマスターユニットのみを、転送フェーズの連続実行回数を制限することができる。これにより、複数のマスターユニット間のアクセス性能の分散を制御することができる。
【００３６】
ここで、前記プロセッサシステムは、さらに、前記マスターユニット毎のアクセス回数を一定時間ごとに計数する計数部と、アクセス回数の最も多いマスターユニットの識別情報を前記第２識別情報として前記第２識別情報保持部に設定する設定部とを備えるようにしてもよい。この構成によれば、一定時間ごとに、転送フェーズの連続実行回数を制限すべきマスターユニットを切り替えることができる。これにより、前回アクセス回数の最も多いマスターユニットが次の一定時間において制限の対象となり、複数回の一定時間を含む長い期間で、複数のマスターユニット間のアクセス性能の均等化することができる。
【００３７】
ここで、前記バスインターフェイス部は、アクセス要求の受理を制御する受理制御部と、前記データ転送を制御する転送制御部と、受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも１つ保持する識別情報保持部と、前記所定の期間有効になるフラグ情報を保持するフラグ保持部とを備え、前記転送制御部は、前記フラグ情報が無効を示す場合は、受理されたアクセス要求の転送フェーズを実行し、前記フラグ情報が有効を示す場合は、受理済で転送フェーズ未実行のアクセス要求を発行したマスターユニットの識別情報と前記識別情報保持部に保持された識別情報とが一致するか否かを判定し、当該識別情報が一致しないと判定した場合には当該受理済みでかつ転送フェーズ未実行のアクセス要求の転送フェーズを開始し、当該識別情報が一致すると判定した場合には当該受理済みでかつ転送フェーズ未実行のアクセス要求の転送フェーズの開始を前記フラグ情報が無効になるまで延期するようにしてもよい。この構成によれば、１つのマスターユニットの転送フェーズの連続実行回数の制限を、リクエストフェーズではなく転送フェーズの開始制御によって実現することができる。また、アクセス要求が受理されるタイミングをより早くすることができる。アクセス性能の均等化を、前記識別情報と前記フラグ情報を保持するという簡単な構成に基いて実現することができる。
【００３８】
ここで、前記複数のマスターユニットは、対称型マルチプロセッサを構成する複数のプロセッサユニットであってもよい。
【００３９】
ここで、前記複数のマスターユニットは、マルチプロセッサを構成する複数のプロセッサユニットに設けられる複数の仮想プロセッサであってもよい。
【００４０】
ここで、前記複数のマスターユニットは、マルチスレッドプロセッサ中の複数のスレッドに対応する複数の仮想プロセッサであってもよい。この構成によれば、少なくとも１つのスレッドを含む仮想プロセッサ間においても、アクセス性能を均等に分散させることができる。
【００４１】
ここで、前記複数のマスターユニットおよびバスインターフェイス部は、単一の半導体チップに含まれていてもよい。
【００４２】
ここで、前記マルチスレッドプロセッサは、アクセス要求とともにスレッドの識別情報とアクセス属性を発行し、前記アクセス属性は、前記転送フェーズの連続実行の制限を有効にすべきか否かを示し、前記バスインターフェイス部は、有効を示す前記アクセス属性に対応するアクセス要求に対して、前記転送フェーズの連続実行回数をＮ回までに制限するようにしてもよい。この構成によれば、スレッド毎に転送フェーズの連続実行回数を制限するかしないかを制御することができる。
【００４３】
ここで、前記マルチスレッドプロセッサは、アクセス要求とともにスレッドの識別情報とアクセス属性を発行し、前記アクセス情報は、少なくとも１つのスレッドを含むグループとしてのグループ番号であり、前記バスインターフェイス部は、グループ番号毎に、対応するアクセス要求の前記転送フェーズの連続実行回数をＮ回までに制限するようにしてもよい。この構成によれば、同一のグループ番号で示される複数のスレッド毎に、転送フェーズの連続実行回数の制限を制御することができる。
【００４４】
また、本発明のバス制御方法、半導体装置は、上記と同様の手段を有す、同様の効果を奏する。
【発明の効果】
【００４５】
本発明によれば、複数のプロセッサが搭載されたマルチプロセッサシステムにおける各マスターユニットが共有メモリにアクセスする場合、それら複数のマスターユニット間でバス調停の影響、共有メモリバスアクセス性能を簡単な方法で均等に分散させることが可能となる。また、本発明によれば、アクセス性能の分散の仕方を制御することができる。
【００４６】
本発明によれば、複数のスレッドあるいは属性の異なるスレッド間においても、バス調停の影響、共有メモリバスアクセス性能を分散させることが可能となる。
【００４７】
これにより、それぞれのプロセッサで共有メモリバスアクセスの性能の偏りを低減させることが可能となる。その結果、マスターユニット毎の処理性能の見積もり精度を大きく向上させることができる。
【発明を実施するための最良の形態】
【００４８】
（実施の形態１）
本発明の実施の形態１について説明する。本実施の形態におけるプロセッサシステムは、１つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をＮ回までに制限するように構成されている。ここで、所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間である。これにより、マスターユニット間のアクセス性能を均等に分散することを実現する。
【００４９】
図４Ａには本発明の実施の形態１におけるプロセッサシステムの構成を示す図である。同図のプロセッサシステムは、マルチプロセッサ４−１と共有メモリ４−２４とを含む。実施の形態１では、マルチプロセッサ４−１は、複数のマスターユニットとして、２つのプロセッサユニット（ＰＵ０、１）を搭載しているものとする。マルチプロセッサが、プロセッサバスに接続された共有メモリ４−２４へとバスＩＦ部４−１０を介してアクセスする構成となっている。なお、図１のように共有メモリが共有メモリバスＩＦ部を介してその他のデバイス（ＤＭＡ、ＤＳＰ等）で共有される共有メモリバスに接続される構成であっても、本発明は適用可能である。なお、本発明は、ＬＳＩの設計者、あるいはソフトウェアを作成するプログラマがバスのアクセス性能を精度よく見積もることができる点に特徴があり、マルチプロセッサに適用したときに特に効果が大きいものである。
【００５０】
マルチプロセッサ４−１はＰＵ０（４−２）とＰＵ１（４−３）の２つのプロセッサユニットを搭載したものであり、ＰＵ０とＰＵ１は同一のものである。プロセッサユニットは命令を処理するＣＰＵ部とその周辺回路により構成されるものであり、命令処理機能、割り込み機能、デバッグ機能といったプロセッサとして必要な機能を有する最小構成単位である。このプロセッサユニットがプロセッサに相当する。
【００５１】
ＰＵ０（４−２）からのバスアクセス要求はＰＵ０アクセス要求４−４としてバスＩＦ部４−１０に出力され、バスＩＦ部４−１０はリクエストを受理すると、ＰＵ０アクセス
受理４−６を返す。次にバスＩＦ部４−１０はプロセッサバスに接続された共有メモリ４−２４に対してプロセッサバス要求４−２１を出してデータを取得し、取得したデータをＰＵ０アクノリッジ４−８と共にＰＵ０（４−２）に返す。同様にＰＵ１（４−３）のバスアクセスはＰＵ１アクセス要求４−５、ＰＵ１アクセス受理４−７、ＰＵ１アクノリッジ４−９によって行われる。
【００５２】
バスＩＦ部４−１０はアービター４００、リクエスト生成部４−１５、データ転送部４−１６を備えている。バスＩＦ部４−１０は、スプリット・トランザクション方式の転送を行うものであり、複数のマスターユニット（本実施形態ではＰＵ０、ＰＵ１）から発行されるアクセス要求を受理するリクエストフェーズと、受理されたアクセス要求に従って共有メモリ４−２４とマスターユニットとの間でバスを介してデータ転送する転送フェーズとを分離して実行する。
【００５３】
また、本実施の形態では、バスＩＦ部４−１０は、１つのマスターユニットから所定の期間を空けずに複数のアクセス要求が連続して発行された場合に、当該複数のアクセス要求に対応する転送フェーズの連続実行回数をＮ回までに制限するように構成されている。ここで、所定の期間は、直前に発行されたアクセス要求が受理されたときから当該アクセス要求の転送フェーズが完了するまでの期間の一部または全部に相当する期間である。
【００５４】
アービター４００は、受理制御部４１０、転送制御部４２０、フラグ部４−１３、ＩＤ保持部４−１４を備える。
【００５５】
受理制御部４１０は、リクエストフェーズでのアクセス要求の受理を制御する。受理制御部４１０は、具体的には、ＰＵ０アクセス要求４−４、ＰＵ１アクセス要求４−５を調停して受理する。
【００５６】
転送制御部４２０は、受理されたアクセス要求に対応する転送フェーズでのデータ転送を制御する。転送制御部４２０は、受理されたアクセス要求が複数存在する場合には、アービター４００内での調停結果４−１２に対応する１つのアクセス要求に対するデータ転送を制御する。
【００５７】
フラグ部４−１３は、前記所定の期間有効になるフラグ情報を保持する。このフラグ情報は、本実施の形態では具体的には、最終受理ＰＵ情報有効ビット４−１３である。
【００５８】
ＩＤ保持部４−１４は、受理済みでかつ転送フェーズ未完了のアクセス要求に対応するマスターユニットの識別情報を少なくとも１つ保持する。この識別情報は、本実施の形態では具体的には、最終受理ＰＵ  ＩＤ（４−１４）である。
【００５９】
リクエスト生成部４−１５はプロセッサバス要求４−２１を生成し、生成されたプロセッサバス要求４−２１をプロセッサバスへと送出することにより、プロセッサバスを介して共有メモリ４−２４へとアクセスする。
【００６０】
共有メモリ４−２４はプロセッサバス要求４−２１を受理可能な状態になるとプロセッサバス要求受理４−２２をリクエスト生成部４−１５に送り、その後、プロセッサバスアクノリッジ４−２３と共に共有メモリ４−２４内の要求されたデータをバスＩＦ部４−１０に送る。バスＩＦ部４−１０内のデータ転送部４−１６は共有メモリから送られたデータを取得し、取得したデータを共有メモリ４−２４に対するデータアクセスを起動したＰＵに返す。
【００６１】
アービター４００は各ＰＵからリクエストを受理する毎に最終受理ＰＵ  ＩＤ（４−１４）をセットする。例えば、ＰＵ０アクセス要求４−４を受理したとすると「ＰＵ０」を最終受理ＰＵ  ＩＤ（４−１４）にセットする。また、前記情報が有効であることを示す最終受理ＰＵ情報有効ビット４−１３もあわせてセットする。
【００６２】
アービター４００には、データ転送部４−１６からＰＵ０転送中信号４−１７及びＰＵ０転送終了信号４−１８が入力される。ＰＵ０転送中信号４−１７はリクエスト生成部４−１５からのプロセッサバス要求４−２１がＰＵ０（４−２）によるものであり、前記リクエストに対してプロセッサバス要求受理４−２２が返ったサイクルからアサートを開始し、そのリクエストによる全データ転送が完了するまでアサートされる。すなわち、ＰＵ０（４−２）がバスアクセスを行った場合に、そのアクセスによる転送中を示すものである。ＰＵ０転送終了信号４−１８は転送の最後のサイクルでアサートされるものであり、転送が終了したことを示す。同様にＰＵ１（４−３）のバスアクセスに対してもＰＵ１転送中信号４−１９と、ＰＵ１転送終了信号４−２０が出力される。
【００６３】
最終受理ＰＵ情報有効ビット４−１３は、アービター４００により調停されたリクエストを受理した時点でセットされる。同時に最終受理ＰＵ  ＩＤ（４−１４）がセットされ、その情報が有効となる。最終受理ＰＵ情報有効ビット４−１３及び最終受理ＰＵ  ＩＤ（４−１４）は、アービター４００がリクエストを受理するごとにセットされる。一方の最終受理ＰＵ情報有効ビット４−１３は最終受理ＰＵ  ＩＤ（４−１４）の転送が終了した時点でクリアされる。例えば、最終受理ＰＵ  ＩＤ（４−１４）が「ＰＵ０」であった場合、データ転送部４−１６からＰＵ０転送中信号４−１７がアサートされている間は最終受理ＰＵ情報有効ビット４−１３がセットされており、最終受理ＰＵ  ＩＤ（４−１４）が有効であることを示すが、ＰＵ０転送終了信号４−１８がアサートされた時点でクリアされ、最終受理ＰＵ  ＩＤ（４−１４）は無効となる。つまり、最終受理ＰＵ  ＩＤ（４−１４）は、アービター４００がリクエストを受理してから有効となり、新たにリクエストが受理されるか、あるいは受理したリクエストに対する転送が完了するまでの間、有効な情報を保持する。
【００６４】
アービター４００は最終受理ＰＵ情報有効ビット４−１３、及び最終受理ＰＵ  ＩＤ（４−１４）の情報からプロセッサユニットからのリクエストを受理するかどうか判断する。
【００６５】
本発明では以上のような構成を用いることにより、バスサイクルが空くことなく連続して同一のプロセッサがバスアクセスを実行しないように制御し、これによってバス性能をマルチプロセッサ内の各プロセッサに均一に分散させることを特徴とする。具体的には、双方のプロセッサがバスアクセスを行う場合、プロセッサバスにはそれぞれのプロセッサのバスアクセスが交互に発生するようにすることで、調停による影響およびバンド幅を両プロセッサで均一化する。そのために、アービター４００は最終受理ＰＵ情報有効ビット４−１３がセットされていない状態、すなわち現在どのプロセッサユニット（ＰＵ）からもバスアクセスが行われていない場合にはＰＵ０アクセス要求４―４、またはＰＵ１アクセス要求４−５によってアサートされたリクエストを受理する。
【００６６】
最終受理ＰＵ情報有効ビット４−１３がセットされている状態、すなわち現在どちらかのＰＵがバスアクセスを実行中である場合には、最終受理ＰＵ  ＩＤ（４−１４）にセットされているＰＵ番号とは異なるＰＵのリクエストのみを受理する。最終受理ＰＵ  ＩＤ（４−１４）と同一のＰＵからのリクエストは要求されていても受理しない。
【００６７】
図５、図６Ａに動作タイミング図を用いてさらに詳細に説明を加える。
【００６８】
図５はＰＵ０（４−２）から連続して２つのリクエストがアサートされ、かつＰＵ１（４−３）からはリクエストが出ない場合を示す。具体的には、ＰＵ０（４−２）からリクエスト０ａ（５−１）、リクエスト０ｂ（５−２）がアサートされる。
【００６９】
まずリクエスト０ａ（５−１）がアサートされ、バスＩＦ部４−１０がこれを受理する。受理されることにより最終受理ＰＵ情報有効ビット（４−１３）が時間Ａ（５−３）でセットされる。同時に最終受理ＰＵ  ＩＤ（４−１４）に「ＰＵ０」がセットされる。この状態ではアービター４００はＰＵ０アクセス要求４−４が発生しても受理しない。すなわちリクエスト０ｂ（５−２）はリクエスト０ａ（５−１）に対するバスアクセスが終了するまで受理されない（ＰＵ０拒否サイクル５−５）。したがって、リクエスト０ｂ（５−２）はアサートされ続ける。
【００７０】
時間Ｂ（５−４）でリクエスト０ａ（５−１）に対してのバスアクセスが終了するとＰＵ０転送終了信号４−１８がアサートされ、最終受理ＰＵ情報有効ビット４−１３がクリアされる。この状態になることでＰＵ０（４−２）からのリクエストを受理しても良い状態となり、アサートされ続けた次のリクエスト０ｂ（５−２）が受理される。
【００７１】
図６ＡにはＰＵ０（４−２）、ＰＵ１（４−３）がそれぞれ複数のバスアクセス要求を行う場合を示す。具体的には、ＰＵ０（４−２）からリクエスト０ａ（６−１）、リクエスト０ｂ（６−２）が、ＰＵ１からリクエスト１ａ（６−３）、リクエスト１ｂ（６−４）が、図６Ａに示すタイミングでアサートされる。
【００７２】
まずリクエスト０ａ（６−１）がアサートされるが、時間Ｃ（６−５）の時点ではどのＰＵもバスアクセスをしていないので、バスＩＦ部（４−１０）がこれを受理する。受理されることにより最終受理ＰＵ情報有効ビット（４−１３）がセットされる。同時に最終受理ＰＵ  ＩＤ（４−１４）に「ＰＵ０」がセットされる。この状態ではアービター４００はＰＵ０アクセス要求４−４が発生しても受理しない（ＰＵ０拒否サイクル）。時間Ｄ（６−６）ではリクエスト０ｂ（６−２）がアサートされるが、リクエスト０ａ（６−１）の転送はまだ完了しておらず、最終受理ＰＵ情報有効ビット（４−１３）がセットされた状態、かつ最終受理ＰＵ  ＩＤ（４−１４）が「ＰＵ０」であるために受理されない。この状態ではＰＵ１アクセス要求（４−５）しかアービター４００は受理しない。したがって、リクエスト０ｂ（６−２）はアサートされ続ける。
【００７３】
リクエスト１ａ（６−３）が出力されると、このリクエストはリクエスト０ｂ（６−２）より後のタイミングで出力されているものの、ＰＵ１（４−３）からのリクエストであるため、アービター４００はリクエスト１ａ（６−３）を受理し、時間Ｄ（６−６）で最終受理ＰＵ情報有効ビット（４−１３）を再セットし、最終受理ＰＵ  ＩＤ（４−１４）を「ＰＵ１」にセットする。この状態では最終受理ＰＵ  ＩＤ（４−１４）が「ＰＵ１」であるために、アービター４００はＰＵ１（４−３）からのＰＵ１アクセス要求（４−５）は受理しない。したがって、その後にＰＵ１（４−３）がアサートするリクエスト１ｂ（６−４）は受理されない。
【００７４】
一方、最終受理ＰＵ  ＩＤ（４−１４）が「ＰＵ１」となっているために、ＰＵ０（４−２）からのＰＵ０アクセス要求（４−４）は受理しても良い状態となる。本実施の形態では、アービター４００は転送中のリクエストの次の１つのリクエストのみを受理することが可能である。したがって、図６Ａでは、アービター４００がＰＵ１（４−３）からのリクエスト１ａ（６−３）を受理した時点で、アサートされ続けているＰＵ０（４−２）からのリクエスト０ｂ（６−２）を受理できる状態となるのだが、既に転送中のリクエスト０ａ（６−１）に加えてリクエスト１ａ（６−３）も既に受理しているので、リクエスト０ａ（６−１）の転送が終了したタイミングである時間Ｅ（６−７）で受理することになる。この時間Ｅ（６−７）ではＰＵ１（４−３）からの次のリクエスト１ｂ（６−４）もアサートされてはいるが、ＰＵ１拒否サイクルにあるためにこちらではなく、リクエスト０ｂ（６−２）を受理することになる。言い換えれば、何れかのプロセッサユニットからの次のリクエストを受理できるタイミングである時間Ｅ（６−７）において、最終受理ＰＵ情報有効ビット４−１３と最終受理ＰＵ  ＩＤ（４−１４）の値に基づいて、アービター４００がＰＵ０（４−２）とＰＵ１（４−３）のいずれのリクエストを受理するかを決定しているともいえる。なお、バスＩＦ部４−１０内にＦＩＦＯで構成されたリクエストのキュー（バッファ）を設けるなどして、次の２つ以上のリクエストを受理することが可能な構成であれば、時間Ｅ（６−７）まで待たなくとも、最終受理ＰＵ  ＩＤ（４−１４）が「ＰＵ１」に書き換えられた段階でＰＵ０（４−２）からのリクエストを受理できる状態となるので、直ちにＰＵ０（４−２）からのリクエスト０ｂ（６−２）を受け付けることができる。そして、実際の転送処理はリクエストを受理した順に処理することとなる。
【００７５】
時間Ｅ（６−７）ではリクエスト０ｂ（６−２）を受理したため、再度、最終受理ＰＵ
情報有効ビット（４−１３）をセットし、最終受理ＰＵ  ＩＤ（４−１４）に「ＰＵ０」をセットする。この状態ではＰＵ０アクセス要求（４−４）を受理することはできない。一方で、ＰＵ１（４−３）からリクエスト１ｂ（６−４）については受理しても良い状態となる。したがって、アービター４００は、リクエスト１ａ（６−３）の転送が終了したタイミングでリクエスト１ｂ（６−４）を受理する。もちろん、次の２つ以上のリクエストを受理することが可能な構成であれば、最終受理ＰＵ  ＩＤ（４−１４）に「ＰＵ０」がセットされたタイミングでリクエスト１ｂ（６−４）を受理しても良い。
【００７６】
アービター４００が上述のような順でリクエストを受理し、順次プロセッサバス要求４−２１を生成していくため、共有メモリ４−２４へのアクセスは、リクエスト０ａ（６−１）、リクエスト１ａ（６−３）、リクエスト０ｂ（６−２）、リクエスト１ｂ（６−４）に対応するリクエストが順に発生し、プロセッサバス要求０ａ（６−８）、プロセッサバス要求１ａ（６−９）、プロセッサバス要求０ｂ（６−１０）、プロセッサバス要求１ｂ（６−１１）といったように、ＰＵ０（４−２）、ＰＵ１（４−３）の順で交互にバスアクセスが発生することになる。その結果、バスの競合や転送状態の影響は各ＰＵに対して交互に同じような割合で発生することになる。したがって、個々のアクセスをみれば連続して受理してバスアクセスを実行する場合と比べるとレイテンシ及び転送完了サイクルが長くなる場合があるが、バスアクセスが交互に行われることにより、競合による影響を２つのプロセッサユニットに均等に分散させることが可能となる。
【００７７】
図４Ｂは、受理制御部４１０における受理制御処理の一例を示すフローチャート図である。同図のように受理制御部４１０は、ＰＵ０またはＰＵ１から新たなアクセス要求が発行されたとき（Ｓ４１１）、まず、新たなアクセス要求を内部のバッファに保存可能か否かを判断する（Ｓ４１２）。ここでは、図５、図６Ａと同様に説明を簡単にするために、受理制御部４１０は、アクセス要求１つ分を保存する受理用バッファを有し、また、転送制御部４２０は、アクセス要求１つ分を保存する転送用バッファを有するものとする。
【００７８】
保存可能である場合（受理用バッファが空いている場合）、受理制御部４１０は、フラグ情報（最終受理ＰＵ情報有効ビット４−１３）が有効か無効かを判断し（Ｓ４１３）、フラグ情報が無効を示す場合は当該新たなアクセス要求を受理する（Ｓ４１６）。この場合、受理されるのは、１つのＰＵからの連続アクセスに該当しないからである。
【００７９】
Ｓ４１６の受理処理において、受理制御部４１０は、新たなアクセス要求を内部の受理用バッファに保存し（Ｓ４２１）、対応するＰＵＩＤをＩＤ保持部４−１４に設定し（Ｓ４２２）、フラグ部４−１３のフラグ情報（最終受理ＰＵ情報有効ビット４−１３）を有効にする（セットする）（Ｓ４２３）。
【００８０】
さらに、受理制御部４１０は、フラグ情報が有効を示す場合は当該新たなアクセス要求を発行したＰＵの識別情報（ＰＵＩＤ）とＩＤ保持部に保持された識別情報（ＰＵＩＤ）とが一致するか否かを判定し（Ｓ４１４）、当該識別情報が一致しない場合には当該新たなアクセス要求を受理する（Ｓ４１６）。この場合も受理されるのは、１つのＰＵからの連続アクセスに該当しないからである。
【００８１】
さらに、受理制御部４１０は、当該識別情報が一致すると判定した場合には、当該新たなアクセス要求を受理しない（Ｓ４１５）。この場合、フラグ情報が有効であることは、上記の所定期間を空けずに発行されたアクセス要求であることを意味する。識別情報が一致することは、新たなアクセス要求と前回のアクセス要求とが同一のＰＵから発行されたことを意味する。Ｓ４１５で受理しない結果、当該新たなアクセス要求は、フラグ情報が無効になるまで、受理を延期されることになる。その間、他のＰＵからの新たなアクセス要求が発行されれば受理されることになる。
【００８２】
図４Ｃは、転送制御部４２０における転送制御処理の一例を示すフローチャート図である。同図のように転送制御部４２０は、上記転送用バッファが空いていてかつ上記受理用バッファに保存されたアクセス要求が存在する場合（Ｓ４３１）、受理用バッファから転送用バッファにアクセス要求を移動し当該アクセス要求に従うデータ転送を実行する（Ｓ４３２）。転送制御部４２０は、データ転送が完了すると、当該アクセス要求に対応するＰＵの識別情報（ＰＵＩＤ）とＩＤ保持部に保持された識別情報（ＰＵＩＤ）とが一致するか否かを判定し（Ｓ４３３）、当該識別情報が一致する場合にはフラグ部４−１３のフラグ情報（最終受理ＰＵ情報有効ビット４−１３）を無効と（リセットする）し、ＩＤ保持部４−１４のＰＵＩＤをクリアする（Ｓ４３４）。このとき、ＩＤ保持部４−１４のＰＵＩＤのクリアは、省略してもよい。
【００８３】
なお、本実施の形態では、プロセッサユニットが２つの場合を示したが、２つ以上の場合でも最終受理ＰＵ情報有効ビット、最終受理ＰＵ  ＩＤを複数個有し、それぞれのプロセッサ毎に上述のような制限を実施すれば同様の効果が得ることが可能である。
【００８４】
また、本実施の形態では、アクセス要求を受理されたプロセッサユニットからのリクエストは、そのリクエストの処理が完了するまでは連続して受理しない構成で説明を行った。しかし、次のような変形例の構成によっても同様の効果を得ることが可能である。
【００８５】
図４Ｄは、実施の形態１の変形例におけるプロセッサシステムの構成例を示すブロック図である。同図は、図４Ａと比較して、バスＩＦ部４−１０内にプロセッサ毎のリクエストを区別できるキューＱ１、Ｑ２を新たに追加した点と、受理制御部４１０および転送制御部４２０の代わりに受理制御部４１０ａおよび転送制御部４２０ａを備える点とが異なっている。以下、同じ点は説明を省略して、異なる点を中心に説明する。
【００８６】
キューＱ１、Ｑ２は、ＰＵ０、ＰＵ１からのアクセス要求を先行して受理するためのバッファである。キューＱ１、Ｑ２は、それぞれ少なくとも１つのアクセス要求を保持可能であればよい。ここでは、説明の便宜上、キューＱ１、Ｑ２はそれぞれ１つのアクセス要求を保持可能であるものとする。
【００８７】
受理制御部４１０は、フラグ情報の有効無効によらずＰＵ０、ＰＵ１からのアクセス要求を先行してキューＱ１、Ｑ２にそれぞれ受理する。
【００８８】
転送制御部４２０ａは、何れのキューからのアクセス要求をプロセッサバス要求として発行するかを決定する。この場合は、最終受理ＰＵ情報有効ビット４−１３と最終受理ＰＵ  ＩＤ（４−１４）は、プロセッサユニットからのアクセス要求を受理したときではなく、バスＩＦ部４−１０がプロセッサバスにプロセッサバス要求（４−２１）をアサートされたタイミングでセットされることとなる。
【００８９】
図６Ｂは、実施の形態１の変形例におけるアクセスタイミングを示す図である。同図は、図６Ａと比較すると、キュー要求４０４およびキュー要求４０５が追加された点と、ＰＵ０アクセス要求４−４およびＰＵ１アクセス要求４−５が異なるタイミングで受理される点（つまり、ＰＵ０アクセス受理４−６およびＰＵ１アクセス受理４−７のアサートタイミング）と、ＰＵ０アクセス受理４−６、ＰＵ１アクセス受理４−７がアービター４００からではなくキューＱ1、キューＱ２から出力される点とが主に異なっている。
【００９０】
ＰＵ０アクセス要求４−４はキューＱ１が空いていれば即座に受理され、同図ではアサートされたサイクルで受理されている。ＰＵ１アクセス要求４−５は、キューＱ２について同様である。
【００９１】
キュー１要求４０４は、キューＱ１に受理されたアクセス要求が保持されていることを示す信号であり、アービター４００内の受理用バッファに移動させられると、ネゲートする。キュー２要求４０５は、キューＱ２について同様である。
【００９２】
キュー１要求受理４−２６は、キュー要求４０４がアサートされ、かつ、アービター４００内の受理制御部４１０ａが受理可能である場合（受理用バッファに空きがある場合）に、キューＱ１から受理用バッファへのアクセス要求の移動と共に、アサートされる信号である。キュー２要求受理４−２７についても同様である。
【００９３】
キューＱ１およびキューＱ２は、アービター４００から見れば、リクエストフェーズにおける図４Ａのマスターユニット（ＰＵ０、ＰＵ１）と等価である。また、キューＱ１およびキューＱ２は、マスターユニットから見れば、リクエストフェーズにおけるアービター４００（受理制御部４１０ａ）と等価である。
【００９４】
このようにキューＱ１、キューＱ２をマスターユニット（ＰＵ０、ＰＵ１）とアービター４００との間に介在させることにより、マスターユニットから見れば、リクエストフェーズにおいて受理待ちが少なくなり、早期に受理される。これにより、１つのマスターユニットの転送フェーズの連続実行回数の制限は、リクエストフェーズにおける受理を拒否（延期）するのではなく、受理した後の転送の開始を延期することにより制御されることになる。
【００９５】
図６Ｂでは、１つのマスターユニットの転送フェーズの連続実行回数の制限を、リクエストフェーズにおける受理制御処理ではなく、転送制御部４２０ａによって転送フェーズの開始タイミングを制御することによって実現している。
【００９６】
図４Ｅは、変形例における受理制御部４１０ａにおける受理制御処理の一例を示すフローチャート図である。同図は、図４Ｂと比較して、ステップＳ４１２〜４１５が削除され、Ｓ４４２が追加されている点が異なる。以下、同じ点は説明を省略して、異なる点を中心に説明する。
【００９７】
受理制御部４１０ａは、新たなアクセス要求が発行されたとき、対応するキューＱ１またはＱ２に空きがあれば（Ｓ４４２）、当該キューＱ１またはＱ２にアクセス要求を受理する（Ｓ４１６）。これにより、ＰＵ０、ＰＵ１は、連続的にアクセス要求を発行した場合、図４Ｂよりも早い時点で受理されることになる。
【００９８】
図４Ｆは、変形例における転送制御処理部４２０ａの転送制御処理の一例を示すフローチャート図である。同図において、前記転送制御部４２０ａは、キューＱ１またはＱ２にアクセス要求が保存されている場合（Ｓ４５１）、フラグ情報（最終受理ＰＵ情報有効ビット４−１３）が有効か無効かを判断し（Ｓ４５２）、フラグ情報が無効を示す場合は当該新たなアクセス要求に従ってデータ転送（転送フェーズ）を実行する（Ｓ４５５）。この場合、データ転送が実行されるのは、１つのＰＵからの連続アクセスに該当しないからである。
【００９９】
さらに、転送制御部４２０ａは、フラグ情報が有効を示す場合は、キューに保持されたアクセス要求に対応するＰＵの識別情報（ＰＵＩＤ）とＩＤ保持部に保持された識別情報（ＰＵＩＤ）とが一致するか否かを判定し（Ｓ４５３）、当該識別情報が一致する場合には当該アクセス要求に従うデータ転送を実行しない（Ｓ４５４）。この場合、データ転送を実行しないのは、１つのＰＵからの連続転送に該当するからである。このアクセス要求のデータ転送は、フラグ情報がリセットされるまで延期されることになる。延期される間は、他のＰＵのアクセス要求が存在すれば、そのデータ転送が実行されることになる。
【０１００】
さらに、転送制御部４２０ａは、フラグ情報が有効を示す場合は、キューに保持されたアクセス要求に対応するＰＵの識別情報（ＰＵＩＤ）とＩＤ保持部に保持された識別情報（ＰＵＩＤ）とが一致するか否かを判定し（Ｓ４５３）、当該識別情報が一致しない場合には当該アクセス要求に従うデータ転送を実行する（Ｓ４５５）。この場合、データ転送が実行されるのは、１つのＰＵからの連続アクセスに該当しないからである。
【０１０１】
転送制御部４２０ａは、データ転送を完了すると、当該アクセス要求に対応するＰＵの識別情報（ＰＵＩＤ）とＩＤ保持部に保持された識別情報（ＰＵＩＤ）とが一致するか否かを判定し（Ｓ４５６）、当該識別情報が一致する場合にはフラグ部４−１３のフラグ情報（最終受理ＰＵ情報有効ビット４−１３）を無効と（リセットする）し、ＩＤ保持部４−１４のＰＵＩＤをクリアする（Ｓ４５７）。このとき、ＩＤ保持部４−１４のＰＵＩＤのクリアは、省略してもよい。
【０１０２】
以上のように変形例によれば、１つのマスターユニットの転送フェーズの連続実行回数の制限を、マスターユニットからのリクエストを直接参照せず、キューに登録した情報で制御可能となる。また、アクセス性能の均等化を、前記識別情報と前記フラグ情報を保持するという簡単な構成に基づいて実現することができる。しかも、マスターにとってはアクセス要求が即受理されるので、マスターの受理待ち時間が短縮され、マスターのバスアクセスするための処理負荷を軽減することができる。
【０１０３】
（実施の形態２）
本発明の実施の形態２について説明する。図７Ａは実施の形態２におけるシステム構成図を示している。本実施の形態では同一プロセッサからの連続アクセスを、ある設定期間のみ許可しないという制御を行う。図４Ａと同様に説明できる部分は同一の符号を付して説明を省略する。
【０１０４】
図７ＡのバスＩＦ部４−１０は、図４Ａと比較して、所定サイクル数をカウントする抑制サイクルカウンタ７−１と、何れかのマスターユニットから設定可能であり、前記所定サイクル数を保持する抑制サイクル設定レジスタ７−４とが追加されている。抑制サイクルカウンタ７−１は、例えば、抑制サイクル設定レジスタ７−４に設定されたサイクル数をロードした後ダウンカウントする。
【０１０５】
受理制御部４１１は、アクセス要求を受理する毎に、前記フラグ情報を有効にし、当該アクセス要求に対応する識別情報をＩＤ保持部に設定し、抑制サイクルカウンタ７−１のサイクルカウント動作を開始させる。
【０１０６】
フラグ部４−１３は、抑制サイクルカウンタ７−１が前記所定サイクル数をカウントしたときに前記フラグ情報を無効にする。
【０１０７】
図７Ｂは、本実施の形態における受理制御部４１１の受理制御処理の一例を示すフローチャートである。受理制御部４１１は、図４Ｂと同様の受理制御処理を行うが、図４Ｂ右側に示したＳ４１６の受理処理の代わりに図７Ｂに示す受理処理を行う点が異なっている。
【０１０８】
図７Ｂにおいては、受理制御部４１１がプロセッサユニットからのリクエスト(アクセス要求)を受理すると（Ｓ４２１）、最終受理ＰＵ情報有効ビット４−１３と最終受理ＰＵ  ＩＤ（４−１４）をセットし（Ｓ４２２、Ｓ４２３）、同時に抑制サイクルカウンタ７−１にカウントｓｔａｒｔ（７−２）を送る（Ｓ４６４）。抑制サイクルカウンタ７−１はカウントｓｔａｒｔ（７−２）が入力されると抑制サイクル設定レジスタ７−４から抑制サイクル値７−５がセットされ、次のサイクルからクロックが入力されるごとにダウンカウントを行う。ここで、抑制サイクル設定レジスタ７−４はソフトウェアで任意の値に設定可能なものであり、例えば、プロセッサユニットが実行するレジスタ書き込み命令によってプログラマブルに更新可能なレジスタである。抑制サイクルカウンタ７−１がアンダーフロー、すなわちカウント値が０になると、カウントｕｎｄｅｒ  ｆｌｏｗ（７−３）がフラグ部４−１３へと出力される。これにより、フラグ部４−１３に保持された最終受理ＰＵ情報有効ビットが無効化される（リセットされる。）。
【０１０９】
図７Ｃは、転送制御部４２１における転送制御処理の一例を示すフローチャート図である。同図は、図４Ｃと比べてステップＳ４３３およびＳ４３４が削除されている点が異なっている。つまり、フラグをリセットする処理が削除されている。
【０１１０】
ここで、実施の形態１ではフラグ部４−１３に保持される最終受理ＰＵ情報有効ビットはＰＵ０転送終了信号４−１８、またはＰＵ１転送終了信号４−２０によってクリアされていたが、本実施の形態ではカウントｕｎｄｅｒ  ｆｌｏｗ（７−３）でクリアされる。したがって、アービター４０１が別のプロセッサユニットからのリクエストを受理して最終受理ＰＵ  ＩＤ（４−１４）をセットしなおすか、あるいは抑制サイクル値７−５に設定されたサイクル期間が過ぎて最終受理ＰＵ情報有効ビット（４−１３）がクリアされた場合にのみ、同一プロセッサユニットからのリクエストが連続して処理されることとなる。
【０１１１】
以上の構成によって本実施の形態においては、所定のサイクル期間に同一プロセッサからの連続バスアクセスが発生するのを抑制し、他方のプロセッサのアクセスを受理する機会を与えることでバスアクセス性能の均一な分散を実現することが可能である。
【０１１２】
なお、本実施の形態をその他の実施の形態と組み合わせても良い。例えば、抑制サイクル値７−５に設定されたサイクル期間が過ぎた場合に加えて、ＰＵ０転送終了信号４−１８、またはＰＵ１転送終了信号４−２０によっても、最終受理ＰＵ情報有効ビット４−１３をクリアする構成としても良い。
【０１１３】
（実施の形態３）
本発明の実施の形態３について説明する。図８Ａは実施の形態３におけるシステム構成図を示している。本実施の形態では同一プロセッサからのある一定個数以上の連続バスアクセスを抑制するという制御を行う。図８ＡのバスＩＦ部４−１０は、図４Ａと比較して、何れかのマスターユニットから設定可能であり、連続転送の許可回数Ｎを保持する連続数許可レジスタ８−５と、カウントする連続数カウンタ８−１とが追加されている点が異なる。連続数カウンタ８−１は、例えば、連続数許可レジスタ８−５に保持された前記Ｎをロードした後ダウンカウントする。図４Ａと同様に説明できる部分は同一の符号を付して説明を省略する。
【０１１４】
図８Ｂは、受理制御部４１２における受理制御処理の一例を示すフローチャート図である。同図は、図４Ｂと比較して、ステップＳ４７１〜Ｓ４７３が追加されている点が異なる。同じ点は説明を省略し、以下異なる点を中心に説明する。
【０１１５】
受理制御部４１２は、新たなアクセス要求が発行されたとき、フラグ情報が無効を示す場合（Ｓ４１３：ｎｏ）、および、フラグ情報が有効を示しかつアクセス要求を発行したマスターユニットのＰＵＩＤとＩＤ保持部４−１４に保持されたＰＵＩＤとが一致しないと判定した場合（Ｓ４１４：ｎｏ）には、連続数カウンタ８−１に初期化信号をアサートし（Ｓ４７１）、当該新たなアクセス要求を受理する（Ｓ４１６）。初期化信号のアサートにより、連続数カウンタ８−１は、初期化として、連続数許可レジスタ８−５に保持された連続許可数Ｎをロードする。これにより、新たなアクセス要求が１つのＰＵからの連続アクセスでない場合には、連続数カウンタ８−１が初期化される。
【０１１６】
また、受理制御部４１２は、アクセス要求を発行したマスターユニットのＰＵＩＤとＩＤ保持部４−１４に保持されたＰＵＩＤとが一致する場合（Ｓ４１４：ｙｅｓ）、連続数カウンタ８−１がＮ回までカウントしていないかどうかを（カウント値ＣＴ＞０？）判定し（Ｓ４７２）、連続数カウンタがＮ回までカウントしていないと判定した場合には、連続検出信号を連続数カウンタ８−１にアサートし（Ｓ４７３）、当該新たなアクセス要求を受理する（Ｓ４１６）。連続検出信号のアサートにより、連続数カウンタ８−１は−１カウントする。
【０１１７】
さらに、受理制御部４１２は、連続数カウンタ８−１がＮ回までカウントしたと判定した場合（Ｓ４７２：ｎｏ）には当該新たなアクセス要求の受理しない（Ｓ４１５）。
【０１１８】
本実施の形態においては、最終受理ＰＵ情報有効ビット４−１３がセットされていない場合にアービター４０２がリクエストを受理すると、最終受理ＰＵ情報有効ビット４−１３と最終受理ＰＵ  ＩＤ４−１４をセットすると同時に、連続数カウンタ８−１に連続数カウンタ初期化信号８−２をアサートする。連続数カウンタ初期化信号８−２を受理すると連続許可数レジスタ８−５から連続許可数８−６が連続数カウンタ８−１にセットされる。ここで、連続許可数レジスタ８−５はソフトウェアで任意の値に設定可能なものであり、例えば、プロセッサユニットが実行するレジスタ書き込み命令によってプログラマブルに更新可能なレジスタである。
【０１１９】
アービター４０２が次のリクエストを受理すると、最終受理ＰＵ情報有効ビット４−１３がセットされているかどうかを判断し、セットされている場合には最終受理ＰＵ  ＩＤ（４−１４）の情報を参照し、保持されている情報と受理したプロセッサの情報が同一であれば連続検出８−３を連続数カウンタ８−１に送る。連続数カウンタ８−１はこの信号をうけダウンカウントする。それ以外の場合には連続数カウンタ初期化信号８−２を出力し、連続数カウンタ８−１には連続許可数８−６が再度セットされる。
【０１２０】
連続数カウンタ８−１が０以上であれば同じプロセッサからの連続したバスアクセスであっても実行可能と判断され、連続数カウンタ８−１からアービター４０２に連続許可８−４が送られる。連続許可８−４が入力されている期間、アービター４０２は双方のプロセッサユニットからのリクエストを受理する。しかし、連続数カウンタ８−１がアンダーフロー、すなわちカウント値が０になると、それ以上の同じプロセッサからのバスアクセス要求は連続しては受理しないこととなる。
【０１２１】
以上の構成によって本実施の形態においては、所定の個数以上の連続アクセスを抑制することで同一プロセッサから多数の連続アクセスが行われることにより、他方のプロセッサのリクエストが受理されない状態を低減することが可能である。
【０１２２】
なお、本実施の形態をその他の実施の形態と組み合わせても良い。例えば、さらに抑制サイクルカウンタも設けることにより、所定のサイクル期間における所定の個数以上の連続アクセスを抑制する構成としても良い。
【０１２３】
（実施の形態４）
本発明の実施の形態４について説明する。図９Ａは実施の形態４におけるシステム構成図を示している。本実施の形態は常にあるサイクル期間の各プロセッサのバスアクセス状況を監視し、その期間内でバスアクセス回数が多いプロセッサに対して、次のサイクル期間において実施の形態１と同様の制御を行うものである。図９ＡのバスＩＦ部４−１０は、図４Ａと比較して、抑制ＰＵ情報保持部９−１３と、監視期間カウンタ９−２と、監視期間設定レジスタ９−３と、アクセス統計部９−１とが追加されている点が異なっている。図４Ａと同様に説明できる部分は同一の符号を付して説明を省略する。
【０１２４】
抑制ＰＵ情報保持部９−１３は、複数のマスターユニットのうち転送フェーズの連続実行回数を抑制すべきマスターユニットの識別情報（ＰＵＩＤ）を第２識別情報として保持する第２識別情報保持部として機能する。
【０１２５】
監視期間カウンタ９−２は、監視期間設定レジスタ９−３に設定された監視期間（一定期間）を周期的にカウントする。
【０１２６】
アクセス統計部９−１は、マスターユニット毎のアクセス回数を一定時間ごとに計数する計数部として機能し、一定時間内のＰＵ０のアクセス回数をカウントするＰＵ０アクセスカウンタ９−７と、一定時間内のＰＵ１のアクセス回数をカウントするＰＵ１アクセスカウンタ９−８と、アクセス回数の最も多いマスターユニットの識別情報を前記第２識別情報として前記第２識別情報保持部に設定する設定部として機能する回数比較器９−１１とを含む。
【０１２７】
図９Ｂは、受理制御部４１３における受理制御処理の一例を示すフローチャート図である。同図は、図４Ｂと比較して、ステップＳ４１４と、Ｓ４１５およびＳ４１６との間にＳ４８１が追加されている点が異なっている。すなわち、受理制御部は、Ｓ４８１において、新たなアクセス要求に対応するＰＵＩＤと抑制ＰＵＩＤ（第２識別情報）とが一致しないと判定した場合には当該新たなアクセス要求を受理し（Ｓ４１６）、一致すると判定した場合には当該新たなアクセス要求を受理しない（Ｓ４１５）。
【０１２８】
アクセス統計部９−１は任意のサイクル期間中の各プロセッサのアクセス回数を解析するブロックである。サイクル期間は監視期間カウンタ９−２と監視期間設定レジスタ９−３とによってプログラマブルに設定される。監視期間カウンタ９−２はクロックが入力されることによりダウンカウントするカウンタであり、監視開始信号９−５が入力されると監視期間設定レジスタ９−３に設定された監視期間設定値９−４を取り込み、ダウンカウントの初期値とする。監視期間カウンタ９−２のカウント値が０になると、監視期間が終了したと判断し監視終了信号９−６をアサートする。これを一つの監視期間のカウント動作とする。監視終了信号９−６がアサートされると、同時に、あるいはその後の所定のタイミングで監視開始信号９−５がアサートされ、監視期間のカウント動作を再度繰り返す。ここで、監視期間設定レジスタ９−３はソフトウェアで任意の値に設定可能なものであり、例えば、プロセッサユニットが実行するレジスタ書き込み命令によってプログラマブルに更新可能なレジスタである。
【０１２９】
アクセス統計部９−１は、監視開始信号９−５がアサートされると、ＰＵ０アクセスカウンタ９−７、及びＰＵ１アクセスカウンタ９−８の値が０にクリアされる。その後、アービター４０３が各々のプロセッサユニットからのリクエストを受理するごとに、受理したリクエストがＰＵ０（４−２）からのリクエストであれば、ＰＵ０アクセス情報がＰＵ０アクセスカウンタ９−７に送られ、ＰＵ０アクセスカウンタ９−７がアップカウントされる。同様に、受理したリクエストがＰＵ１（４−３）からのリクエストであれば、ＰＵ１アクセス情報によりＰＵ１アクセスカウンタ９−８がアップカウントされる。監視終了信号９−６がアクセス統計部９−１にアサートされると、回数比較器９−１１によりＰＵ０アクセスカウンタ９−７の値とＰＵ１アクセスカウンタ９−８の値とが比較され、回数の多いプロセッサユニットの情報が次期間抑制ＰＵ情報９−１２として、抑制ＰＵ情報９−１３にセットされる。
【０１３０】
最終受理ＰＵ情報有効ビット４−１３、及び最終受理ＰＵ  ＩＤ（４−１４）の動作は実施の形態１と同様である。
【０１３１】
本実施の形態においては、最終受理ＰＵ情報有効ビット４−１３及び最終受理ＰＵ  ＩＤ（４−１４）に加え、抑制ＰＵ情報９−１３も参照することに特徴がある。次にリクエストがあったプロセッサユニットが抑制ＰＵ情報９−１３の示すプロセッサユニットと同じであれば、最終受理ＰＵ情報有効ビット４−１３と最終受理ＰＵ  ＩＤ（４−１４）に応じてアクセス制御を行う。しかし、次にリクエストがあったプロセッサユニットが抑制ＰＵ情報９−１３の示すプロセッサユニットと異なる場合には、そのプロセッサユニットからのリクエストを受理する。すなわち、最終受理ＰＵ  ＩＤ（４−１４）と抑制ＰＵ情報９−１３が共に「ＰＵ０」であり、かつ最終受理ＰＵ情報有効ビット４−１３がセットされているときに、ＰＵ０（４−２）からのリクエストがアサートされれば、このリクエストは受理しないが、最終受理ＰＵ  ＩＤ（４−１４）と抑制ＰＵ情報９−１３の何れかが「ＰＵ１」であるときに、ＰＵ０（４−２）からのリクエストがアサートされればこれを受理することになる。これら一連の動作を監視期間設定値９−４毎に繰り返す。
【０１３２】
以上の構成によって本実施の形態においては、所定の期間に各々のプロセッサのバスアクセス情報を取得し、全期間でアクセス回数が多かった方のプロセッサからの連続アクセスを次の期間で抑制することにより、アクセス頻度が多発するプロセッサの他のプロセッサへの影響を低減させ、全期間での全プロセッサのバスアクセス性能を均等に分散化させることが可能となる。
【０１３３】
なお、本実施の形態は、実施の形態１に限らず、その他の実施の形態あるいはそれらの組み合わせに適用することも可能であることはいうまでもない。
【０１３４】
（実施の形態５）
本発明の実施の形態５について説明する。図１０Ａは実施の形態５におけるシステム構成図を示している。本実施の形態においては、プロセッサは複数のコアが実装されたマルチプロセッサである必要はなく、同時に複数のスレッドが動作可能なマルチスレッドプロセッサである。具体的には、本実施の形態におけるマルチスレッドプロセッサは、スレッド毎に独立してバスアクセス要求が可能であり、かつ、あるスレッドでのバスアクセス中であっても別のスレッドからバスアクセス要求をすることが可能なマルチスレッドプロセッサである。
【０１３５】
このようなマルチスレッドプロセッサにおいても、上述のマルチプロセッサと同様の課題が発生し、バスアクセスの性能が特定のスレッドのみに偏るのを防ぎたい場合がある。すなわち、マルチスレッドプロセッサにおいても、スレッド毎にバスバンド幅を均等に割り当てたい場合や、各スレッドに競合によるバスアクセスの影響を均等に割り振りたい場合がある。
【０１３６】
マルチスレッドプロセッサ１０−１は３つのスレッド（スレッド０、スレッド１、スレッド２）を処理可能なプロセッサである。マルチスレッドプロセッサ１０−１は、スレッド毎にバスアクセスの種別をスレッド０アクセス属性設定レジスタ１０−２、スレッド１アクセス属性設定レジスタ１０−３、スレッド２アクセス属性設定レジスタ１０−４へと設定することが可能である。各スレッドでバスアクセスが発生すると、バスＩＦ部４−１０にアクセス要求１０−５と共に要求をおこなったスレッドＩＤ（１０−６）とそのスレッドのアクセス属性１０−７が出力される。
【０１３７】
最終受理スレッドＩＤ有効ビット１０−９、及び最終受理スレッドＩＤ（１０−１０）は、実施の形態１における最終受理ＰＵ情報有効ビット（４−１３）、最終受理ＰＵ  ＩＤ（４−１４）と同様の制御に使われるものである。但し、最終受理スレッドＩＤ（１０−１０）には受理したバスアクセス要求を出したプロセッサユニットではなく、受理したバスアクセスに対応するスレッド番号、すなわち、アクセス要求１０−５がアサートされているサイクルのスレッドＩＤ（１０−６）がセットされる。
【０１３８】
スレッド０アクセス属性設定レジスタ１０−２、スレッド１アクセス属性設定レジスタ１０−３、スレッド２アクセス属性設定レジスタ１０−４にはシステム毎に任意の意味の属性を設定することが可能である。本実施の形態では発行抑制制御を行うか行わないかの属性がセットされる。ここでは、スレッド０アクセス属性設定レジスタ１０−２には「有効」、スレッド１アクセス属性設定レジスタ１０−３には「無効」、スレッド２アクセス属性設定レジスタ１０−４には「有効」とセットした場合を例にとって説明する。この例によると、バスアクセス性能をスレッド０と、スレッド２で均等となるように制御することとなる。
【０１３９】
スレッド０でバスアクセスが発生すると、アクセス要求１０−５がアサートされると同時にスレッドＩＤ（１０−６）として「ＩＤ０」、アクセス属性１０−７として「有効」が出力される。アービター４０４がこのリクエストを受理すると、最終受理スレッドＩＤ有効ビット１０−９がセットされ、かつ最終受理スレッドＩＤ（１０−１０）に「ＩＤ０」がセットされる。また、アクセス要求１０−５がアサートされ、共有メモリ４−２４へのアクセスが実行される。
【０１４０】
最終受理スレッドＩＤ有効ビット１０−９は他のバスアクセス要求が無ければ、共有メモリ４−２４へのアクセスが完了するまでセットされ続ける。この状態で更にスレッド０からのバスアクセス要求が発生した場合、アクセス属性１０−７が「有効」であり、かつスレッドＩＤ（１０−６）が最終受理スレッドＩＤ（１０−１０）のＩＤと一致するため、アービター４０４はリクエストを受理しない。よってアクセス受理１０−８をアサートしない。このリクエストが受理されるのは最終受理スレッドＩＤ有効ビット１０−９がクリアされるとき、すなわち最終受理スレッドＩＤ（１０−１０）にセットされたバスアクセスが完了した後か、あるいは別のスレッドのバスアクセス要求が発生した場合である。
【０１４１】
マルチスレッドプロセッサ１０−１は、アクセス要求１０−５が受理されないため次のサイクルで他のスレッドのバスアクセス要求があればそのアクセス要求を行う。そのためにアクセス要求１０−５を一旦ネゲートする。他のスレッドのバスアクセス要求がなければスレッド０に対応するアクセス要求１０−５をアサートし続ける。
【０１４２】
次に他のスレッドからのバスアクセス要求が無い状態でスレッド１アクセス属性設定レジスタ１０−３に「無効」が設定されているスレッド１からのバスアクセス要求が連続して発生した場合の動作を説明する。スレッド１でバスアクセスが発生すると、アクセス要求１０−５がアサートされ、同時にアクセス属性１０−７として「無効」が出力される。このリクエストが受理されると最終受理スレッドＩＤ有効ビット（１０−９）がセットされ、最終受理スレッドＩＤ（１０−１０）として「ＩＤ１」がセットされる。この状態で更にスレッド１で新たなバスアクセスが発生するとアクセス要求１０−５が再度アサートされ、同時にアクセス属性１０−７として「無効」が出力される。この状態においては、最終受理スレッドＩＤ有効ビット１０−９がセットされており、最終受理スレッドＩＤ（１０−１０）がバスアクセスのあったスレッドＩＤ（１０−６）と同じであるが、アクセス属性１０−７として「無効」が出力されているので、最終受理スレッドＩＤ有効ビット１０−９がセットされ、かつ最終受理スレッドＩＤ（１０−１０）が同一であったとしても抑制制御の対象ではないと判断され、リクエストが受理される。このリクエストの受理に伴い、最終受理スレッドＩＤ有効ビット１０−９が再度セットされ、最終受理スレッドＩＤ（１０−１０）が更新されるが、その後の動作に何ら影響は与えない。
【０１４３】
最終受理スレッドＩＤ有効ビット１０−９、及び最終受理スレッドＩＤ（１０−１０）は実施の形態１と同様のセット、クリア制御が行われる。すなわち、最終受理スレッドＩＤ有効ビット１０−９がセットされていない場合にはアクセス属性１０−７を受理するとセットされ、セットされている場合には新たにアクセス属性１０−７を受理するか、あるいは最終受理スレッドＩＤ（１０−１０）で保持されているスレッドＩＤの転送が終了したことをスレッド０転送中信号１０−１１、スレッド０転送終了信号１０−１２、スレッド１転送中信号１０−１３、スレッド１転送終了信号１０−１４、スレッド２転送中信号（１０−１５）、スレッド２転送終了信号（１０−１６）から判断してクリアする。
【０１４４】
なお、実施の形態５の説明ではアクセス属性は「有効」「無効」の場合を示したが、制限の対象とするグループを設定し、スレッド毎にどのグループに属しているかをアクセス属性として設定する方法もある。たとえばあるプログラム（プログラムＡとする）はスレッド０、スレッド１に順次割り当てられて実施され、別のあるプログラム（プログラムＢとする）はスレッド２で実施される場合で、プログラムＡとプログラムＢの間でバスアクセス性能を均等化したい場合、連続実行の抑制制御をスレッド０、スレッド１からのアクセスに対しては両者をまとめて実施、スレッド２からのアクセスはスレッド２のみで実施するのが有効である。その場合、プログラムＡ、プログラムＢに対して制限グループ０、制限グループ１と定義し、スレッド０アクセス属性設定レジスタ１０−２、スレッド１アクセス属性設定レジスタ１０−３、には「制限グループ０」、スレッド２アクセス属性設定レジスタ１０−４には「制限グループ１」を設定しておく。実施の形態５の説明では同じ
スレッドに対してアクセス属性が「有効」であれば連続受理の制限制御を行っていたが、スレッドが異なっていても同じアクセス属性、すなわち同じ制限グループであれば連続受理の制限制御の対象とする方法で前記が実現可能である。
【０１４５】
なお、実施の形態５においても、バスＩＦ部にリクエストのキューが設置されている場合には、実施の形態１で説明したのと同様の変形が可能である。さらに実施の形態２〜４で説明した構成と組み合わせることも可能であることは言うまでもない。さらにマルチスレッドプロセッサはマルチプロセッサであっても構わない。
【産業上の利用可能性】
【０１４６】
以上のように、本発明により複数のプロセッサからなるシステムにおいて共有メモリに対してのアクセス性能をプロセッサ毎に均一に分散させることが可能になり、あるいはマルチスレッドプロセッサにおいてスレッド毎のアクセス性能を均一に分散させることが可能となる。よって、プロセッサシステムに利用可能である。
【図面の簡単な説明】
【０１４７】
【図１】一般のマルチプロセッサシステムシステム構成図である。
【図２】バスインターフェイスプロトコルを示す図である。
【図３】従来のアクセスタイミングを示す図である。
【図４Ａ】実施の形態１のシステム構成図である。
【図４Ｂ】受理制御部における受理制御処理を示すフローチャート図である。
【図４Ｃ】転送制御部における転送制御処理を示すフローチャート図である。
【図４Ｄ】実施の形態１の変形例におけるシステム構成図である。
【図４Ｅ】図４Ｄに示した変形例における受理制御処理を示すフローチャート図である。
【図４Ｆ】図４Ｄに示した変形例における転送制御処理を示すフローチャート図である。
【図５】実施の形態１のアクセスタイミングを示す図である。
【図６Ａ】実施の形態１のアクセスタイミングを示す図である。
【図６Ｂ】実施の形態１の変形例におけるアクセスタイミングを示す図である。
【図７Ａ】実施の形態２のシステム構成図である。
【図７Ｂ】受理制御部における受理制御処理を示すフローチャート図である。
【図７Ｃ】転送制御部における転送制御処理を示すフローチャート図である。
【図８Ａ】実施の形態３のシステム構成図である。
【図８Ｂ】受理制御部における受理制御処理を示すフローチャート図である。
【図９Ａ】実施の形態４のシステム構成図である。
【図９Ｂ】は、受理制御部における受理制御処理を示すフローチャート図である。
【図１０】実施の形態５のシステム構成図である。
【符号の説明】
【０１４８】
１−１    マルチプロセッサ
１−４    ＰＵ０
１−５    ＰＵ１
１−６    ＰＵ０アクセス要求
１−７    ＰＵ１アクセス要求
１−８    ＰＵ０アクセス受理
１−９    ＰＵ１アクセス受理
１−１２    バスＩＦ部
１−１３    プロセッサバス
１−１４    プロセッサバス要求
１−１５    プロセッサバス要求受理
１−１７    共有バスＩＦ部
１−１８    ＤＭＡバス
１−１９    ＤＳＰバス
１−２４    共有メモリバス
４−１    マルチプロセッサ
４−２    ＰＵ０
４−３    ＰＵ１
４−４    ＰＵ０アクセス要求
４−５    ＰＵ１アクセス要求
４−６    ＰＵ０アクセス受理
４−７    ＰＵ１アクセス受理
４−１０    バスＩＦ部
４００、４０１、４０２、４０３、４０４    アービター
４−１３    最終受理ＰＵ情報有効ビット
４−１４    最終受理ＰＵ ＩＤ
４−１５    リクエスト生成部
４−１６    データ転送部
４−１８    ＰＵ０転送終了信号
４−１９    ＰＵ１転送中信号
４−２１    プロセッサバス要求
４−２２    プロセッサバス要求受理
７−１    抑制サイクルカウンタ
８−１    連続数カウンタ
９−１    アクセス統計部
９−２    監視期間カウンタ
９−７    ＰＵ０アクセスカウンタ
９−８    ＰＵ１アクセスカウンタ
９−１１    回数比較器
１０−１    マルチスレッドプロセッサ
１０−２    スレッド０アクセス属性設定レジスタ
１０−３    スレッド１アクセス属性設定レジスタ
１０−４    スレッド２アクセス属性設定レジスタ
１０−５    アクセス要求
１０−６    スレッドＩＤ
１０−７    アクセス属性
１０−８    アクセス受理
１０−９    最終受理スレッドＩＤ有効ビット
１０−１０    最終受理スレッドＩＤ
４１０    受理制御部
４２０    転送制御部
【図１】
2008293487.tif 000003
【図２】
2008293487.tif 000004
【図３】
2008293487.tif 000005
【図４Ａ】
2008293487.tif 000006
【図４Ｂ】
2008293487.tif 000007
【図４Ｃ】
2008293487.tif 000008
【図４Ｄ】
2008293487.tif 000009
【図４Ｅ】
2008293487.tif 000010
【図４Ｆ】
2008293487.tif 000011
【図５】
2008293487.tif 000012
【図６Ａ】
2008293487.tif 000013
【図６Ｂ】
2008293487.tif 000014
【図７Ａ】
2008293487.tif 000015
【図７Ｂ】
2008293487.tif 000016
【図７Ｃ】
2008293487.tif 000017
【図８Ａ】
2008293487.tif 000018
【図８Ｂ】
2008293487.tif 000019
【図９Ａ】
2008293487.tif 000020
【図９Ｂ】
2008293487.tif 000021
【図１０】
2008293487.tif 000022