(57)【要約】  第1フォーマットを有する、排他アクセスに対応した第1バス仕様の第1排他コマンドと、排他アクセスに対応しない第2バス仕様に適合した第2フォーマットを有する、第1バス仕様の第2排他コマンドを相互に変換して、第1および第2バス仕様間の排他コマンドの伝搬を行うバス制御回路であって、第1排他コマンドから第2排他コマンドへの変換のときに、第1排他コマンドを受け取り、第2排他コマンドに変換して出力する排他コマンド変換回路と、第2排他コマンドから第1排他コマンドへの変換のときに、第2排他コマンドを受け取って第1排他コマンドを生成する排他コマンド生成回路と、第2排他コマンドから第1排他コマンドへの変換のときに、第2排他コマンドに対する排他応答情報を発行する排他応答発行回路と、第1排他コマンドから第2排他コマンドへの変換のときに、第2排他コマンドに対する排他応答情報を受け取る排他応答受信回路と、を有する。
2018042767.tif 000002
【特許請求の範囲】
【請求項１】
第１フォーマットを有する、排他アクセスに対応した第１バス仕様の第１排他コマンドと、前記第１バス仕様とは異なり、排他アクセスに対応しない第２バス仕様に適合した第２フォーマットを有する、前記第１バス仕様の第２排他コマンドを相互に変換して、前記第１バス仕様および前記第２バス仕様の間における排他コマンドの伝搬を行うバス制御回路であって、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第１排他コマンドを受け取り、前記第２排他コマンドに変換して出力する排他コマンド変換回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドを受け取って前記第１排他コマンドを生成する排他コマンド生成回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を発行する排他応答発行回路と、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を受け取る排他応答受信回路と、を有する、
ことを特徴とするバス制御回路。
【請求項２】
前記第１排他コマンドは、前記第１バス仕様に基づいて予め用意されたコマンドであり、
前記第２排他コマンドは、排他アクセスを行うために、前記第２バス仕様における所定のビットフィールドに基づいて生成される、
ことを特徴とする請求項１に記載のバス制御回路。
【請求項３】
前記第２排他コマンドを生成するための、前記第２バス仕様における所定のビットフィールドは、前記第２バス仕様におけるパケットのヘッダ部分に含まれる、
ことを特徴とする請求項２に記載のバス制御回路。
【請求項４】
さらに、
前記排他応答発行回路から出力される排他応答発行識別信号に基づいて、前記第２バス仕様の第２バスに繋がる経路と、前記排他コマンド変換回路による経路または前記排他応答発行回路による経路との接続を制御するセレクタを有する、
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載のバス制御回路。
【請求項５】
前記第１バス仕様の第１バスは、ＡＸＩ（登録商標）仕様のバスである、
ことを特徴とする請求項１乃至請求項４のいずれか１項に記載のバス制御回路。
【請求項６】
前記第２バス仕様の第２バスは、ＰＣＩｅ（登録商標）仕様のバスである、
ことを特徴とする請求項１乃至請求項５のいずれか１項に記載のバス制御回路。
【請求項７】
前記第２排他コマンドは、前記ＰＣＩｅ（登録商標）仕様のバスのＴＬＰヘッダにおける所定のビットフィールドに基づいて生成される、
ことを特徴とする請求項６に記載のバス制御回路。
【請求項８】
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、
前記排他応答受信回路は、前記排他コマンド変換回路に、前記第２排他コマンドに対する排他応答情報に発行し、
前記排他コマンド変換回路は、前記第２排他コマンドに対する排他応答情報に基づいて、前記第１排他コマンドに対する排他応答を生成する、
ことを特徴とする請求項１乃至請求項７のいずれか１項に記載のバス制御回路。
【請求項９】
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、
前記排他コマンド変換回路は、通常コマンドに対する応答を受け取り、前記通常コマンドに対する応答と前記第２排他コマンドに対する排他応答情報に基づいて、前記第１排他コマンドに対する排他応答を生成する、
ことを特徴とする請求項８に記載のバス制御回路。
【請求項１０】
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第１排他コマンドに対する排他応答を受け取り、前記第１排他コマンドに対する排他応答に基づいて、前記排他応答発行回路に、前記第１排他コマンドに対する排他応答情報を発行し、
前記排他応答発行回路は、前記第１排他コマンドに対する排他応答情報に基づいて、前記第２排他コマンドに対する排他応答情報を生成する、
ことを特徴とする請求項１乃至請求項９のいずれか１項に記載のバス制御回路。
【請求項１１】
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第１排他コマンドに対する排他応答に基づいて、前記第１排他コマンドに対する排他応答情報に加えて、通常コマンドに対する応答を生成する、
ことを特徴とする請求項１０に記載のバス制御回路。
【請求項１２】
第１フォーマットを有する、排他アクセスに対応した第１バス仕様の第１排他コマンドと、前記第１バス仕様とは異なり、排他アクセスに対応しない第２バス仕様に適合した第２フォーマットを有する、前記第１バス仕様の第２排他コマンドを相互に変換して、前記第１バス仕様および前記第２バス仕様の間における排他コマンドの伝搬を行うバス制御回路と、
前記第１バス仕様の内部回路と、
前記バス制御回路と前記内部回路の間で信号の受け渡しを行う内部接続回路と、
前記バス制御回路と前記第２バス仕様の外部バスの間で信号の受け渡しを行う外部接続回路と、を有し、
前記バス制御回路は、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第１排他コマンドを受け取り、前記第２排他コマンドに変換して出力する排他コマンド変換回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドを受け取って前記第１排他コマンドを生成する排他コマンド生成回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を発行する排他応答発行回路と、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を受け取る排他応答受信回路と、を有する、
ことを特徴とする半導体集積回路。
【請求項１３】
前記第１排他コマンドは、前記第１バス仕様に基づいて予め用意されたコマンドであり、
前記第２排他コマンドは、排他アクセスを行うために、前記第２バス仕様における所定のビットフィールドに基づいて生成される、
ことを特徴とする請求項１２に記載の半導体集積回路。
【請求項１４】
前記第１バス仕様の第１バスは、ＡＸＩ（登録商標）仕様のバスである、
前記第２バス仕様の第２バスは、ＰＣＩｅ（登録商標）仕様のバスである、
ことを特徴とする請求項１２または請求項１３に記載の半導体集積回路。
【請求項１５】
前記第２排他コマンドは、前記ＰＣＩｅ（登録商標）仕様のバスのＴＬＰヘッダにおける所定のビットフィールドに基づいて生成される、
ことを特徴とする請求項１４に記載の半導体集積回路。
【請求項１６】
前記第２排他コマンドを生成する、前記ＴＬＰヘッダにおける所定のビットフィールドは、前記半導体集積回路を識別する情報、および、排他アクセスか否かを示す情報を含む、
ことを特徴とする請求項１５に記載の半導体集積回路。
【請求項１７】
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、
前記排他応答受信回路は、前記排他コマンド変換回路に、前記第２排他コマンドに対する排他応答情報に発行し、
前記排他コマンド変換回路は、前記第２排他コマンドに対する排他応答情報に基づいて、前記第１排他コマンドに対する排他応答を生成する、
ことを特徴とする請求項１２乃至請求項１６のいずれか１項に記載の半導体集積回路。
【請求項１８】
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、
前記排他コマンド変換回路は、通常コマンドに対する応答を受け取り、前記通常コマンドに対する応答と前記第２排他コマンドに対する排他応答情報に基づいて、前記第１排他コマンドに対する排他応答を生成する、
ことを特徴とする請求項１７に記載の半導体集積回路。
【請求項１９】
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第１排他コマンドに対する排他応答を受け取り、前記第１排他コマンドに対する排他応答に基づいて、前記排他応答発行回路に、前記第１排他コマンドに対する排他応答情報を発行し、
前記排他応答発行回路は、前記第１排他コマンドに対する排他応答情報に基づいて、前記第２排他コマンドに対する排他応答情報を生成する、
ことを特徴とする請求項１２乃至請求項１８のいずれか１項に記載の半導体集積回路。
【請求項２０】
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第１排他コマンドに対する排他応答に基づいて、前記第１排他コマンドに対する排他応答情報に加えて、通常コマンドに対する応答を生成する、
ことを特徴とする請求項１９に記載の半導体集積回路。
【請求項２１】
請求項１２乃至請求項２０のいずれか１項に記載の半導体集積回路と、
少なくとも前記半導体集積回路に接続され、前記半導体集積回路と前記半導体集積回路とは別の回路によって共有されるメモリと、を有する、
ことを特徴とする回路基板。
【請求項２２】
請求項２１に記載の回路基板を複数有する情報処理装置であって、
それぞれの前記回路基板は、前記第２バス仕様の第２バスにより接続されている、
ことを特徴とする情報処理装置。
【請求項２３】
第１フォーマットを有する、排他アクセスに対応した第１バス仕様の第１排他コマンドと、前記第１バス仕様とは異なり、排他アクセスに対応しない第２バス仕様に適合した第２フォーマットを有する、前記第１バス仕様の第２排他コマンドを相互に変換して、前記第１バス仕様および前記第２バス仕様の間における排他コマンドの伝搬を行うバス制御方法であって、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第１排他コマンドを受け取り、前記第２排他コマンドに変換して出力し、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を受け取り、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドを受け取って前記第１排他コマンドを生成し、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を発行する、
ことを特徴とするバス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス制御回路、半導体集積回路、回路基板、情報処理装置およびバス制御方法に関する。
【背景技術】
【０００２】
近年、サーバ等を始めとする情報処理システムには、例えば、異なるバス仕様が適用された複数の半導体集積回路や回路基板が用いられている。これら異なるバス仕様が適用された半導体集積回路等において、例えば、第１バス仕様の情報を、第１バス仕様とは異なる第２バス仕様の情報に載せ替えるのが困難な場合も存在する。【０００３】
具体的に、ＡＸＩ（登録商標）(Advanced eXtensible Interface)仕様のＳｏＣ(System on a Chip)において、例えば、ＯＳ(Operating System)での共通リソースの確保やソフトウェア順序を保証するために、ＳｏＣ内でメモリアクセスの排他制御を実装している。【０００４】
すなわち、複数個のＣＰＵ(Central Processing Unit)を搭載したＳｏＣを用いて１つのＯＳを実行する場合、或いは、異なるＯＳであっても共通リソースを確保する場合など、チップ(半導体集積回路等)を超えて排他制御を実装したいという要望がある。しかしながら、このようなチップを超えて排他制御を行いたい場合であっても、それら異なるバス仕様が適用されたチップ間で予め排他制御の伝搬機能が設けられていないこともある。【０００５】
ここで、ＡＸＩ（登録商標）は、例えば、ＡＨＢ（登録商標）(Advanced High-performance Bus)およびＡＰＢ（登録商標）(Advanced Peripheral Bus)と共に、オンチップインターコネクト仕様の総称であるＡＭＢＡ（登録商標）(Advanced Microcontroller Bus Architecture)に含まれる。また、ＡＭＢＡ以外の仕様としては、例えば、ＯＣＰ(Open Core Protocol)やＰＩＦ(Processor InterFace)等が知られている。【０００６】
ところで、従来、例えば、マルチプロセッサシステムにおける排他制御としては、様々な提案がなされている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０６−１１０８４４号公報
【特許文献２】特開平０８−１６１２２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述したように、異なるバス仕様が適用されたチップ間において、予め排他制御の機能が設けられていないことがある。例えば、広く普及しているＰＣＩｅ（登録商標）(Peripheral Component Interconnect Express)仕様を適用した半導体集積回路等と、ＡＸＩ仕様を適用したＳｏＣの間では、排他制御の伝搬機構は、予め準備されていない。【０００９】
このような、異なるバス仕様が適用された半導体集積回路や回路基板等の間における排他制御の伝搬機能が設けられていないのは、他の様々なバス仕様を適用した半導体集積回路や回路基板等の間においても同様である。【００１０】
ここで、本発明は、ＰＣＩｅ仕様と、ＡＸＩ仕様の間の排他制御の伝搬に限定されず、様々なバス仕様を適用した半導体集積回路や回路基板等の間の排他制御の伝搬に対しても適用可能なのはいうまでもない。すなわち、本発明は、例えば、ＰＣＩｅの半導体集積回路等と、ＡＸＩ，ＡＨＢおよびＡＰＢといったＡＭＢＡ或いはＯＣＰやＰＩＦの半導体集積回路等の間の排他制御の伝搬に対しても適用可能である。
【課題を解決するための手段】
【００１１】
一実施形態によれば、第１フォーマットを有する、排他アクセスに対応した第１バス仕様の第１排他コマンドと、前記第１バス仕様とは異なり、排他アクセスに対応しない第２バス仕様に適合した第２フォーマットを有する、前記第１バス仕様の第２排他コマンドを相互に変換して、前記第１バス仕様および前記第２バス仕様の間における排他コマンドの伝搬を行うバス制御回路が提供される。前記バス制御回路は、排他コマンド変換回路と、排他コマンド生成回路と、排他応答発行回路と、排他応答受信回路と、を有する。【００１２】
前記排他コマンド変換回路は、前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第１排他コマンドを受け取り、前記第２排他コマンドに変換して出力し、前記排他コマンド生成回路は、前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドを受け取って前記第１排他コマンドを生成する。【００１３】
前記排他応答発行回路は、前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を発行し、前記排他応答受信回路は、前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を受け取る。
【発明の効果】
【００１４】
開示のバス制御回路、半導体集積回路、回路基板、情報処理装置およびバス制御方法は、異なる仕様のバス間においても排他アクセスの伝搬を可能とすることができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、本実施形態に係る情報処理装置の一例を示すブロック図である。
【図２】図２は、図１に示す情報処理装置における半導体集積回路にそれぞれ設けられたバス制御回路の一例を示すブロック図である。
【図３】図３は、図１に示す情報処理装置におけるＰＣＩｅのパケットのＴＬＰヘッダを使用して排他コマンドを送信する例を説明するための図である。
【図４】図４は、ＡＸＩの基本構成を説明するための図(その１)である。
【図５】図５は、ＡＸＩの基本構成を説明するための図(その２)である。
【図６】図６は、ＡＸＩにおける信号の例を説明するための図である。
【図７】図７は、ＡＸＩにおける排他アクセスの一例を説明するための図である。
【図８】図８は、ＡＸＩにおいて使用される応答を説明するための図である。
【図９】図９は、ＡＸＩにおける排他アクセスの動作を説明するための図である。
【図１０】図１０は、図１に示す情報処理装置におけるリードアクセス動作の一例を説明するための図である。
【図１１】図１１は、図１０に示す情報処理装置における排他リードアクセス動作の一例を説明するための図である。
【図１２】図１２は、図１に示す情報処理装置におけるライトアクセス動作の一例を説明するための図である。
【図１３】図１３は、図１２に示す情報処理装置における排他ライトアクセス動作の一例を説明するための図である。
【図１４】図１４は、図１０および図１１に示す情報処理装置における排他リードアクセス動作の他の例を説明するための図である。
【図１５】図１５は、本実施形態に係る情報処理装置の他の例を示すブロック図である。
【図１６】図１６は、図２に示すバス制御回路におけるリードチャネルの排他コマンド変換ブロックの一例を説明するための図である。
【図１７】図１７は、図２に示すバス制御回路におけるライトチャネルの排他コマンド変換ブロックの一例を説明するための図である。
【図１８】図１８は、図２に示すバス制御回路における排他応答受信ブロックの一例を説明するための図である。
【図１９】図１９は、図２に示すバス制御回路におけるリードチャネルの排他コマンド生成ブロックの一例を説明するための図である。
【図２０】図２０は、図２に示すバス制御回路におけるライトチャネルの排他コマンド生成ブロックの一例を説明するための図である。
【図２１】図２１は、図２に示すバス制御回路におけるライトチャネルの排他応答発行ブロックの一例を説明するための図である。
【図２２】図２２は、図１および図２を参照して説明した情報処理装置におけるＳＴビット[7:0]を含むヘッダ情報の生成/復元方法を説明するための図(その１)である。
【図２３】図２３は、図１および図２を参照して説明した情報処理装置におけるＳＴビット[7:0]を含むヘッダ情報の生成/復元方法を説明するための図(その２)である。
【発明を実施するための形態】
【００１６】
以下、本実施形態に係るバス制御回路、半導体集積回路、回路基板、情報処理装置およびバス制御方法の実施例を、添付図面を参照して詳述する。図１は、本実施形態に係る情報処理装置の一例を示すブロック図である。図１において、参照符号100はＳｏＣ(半導体集積回路)を示し、200はＰＣＩｅ（登録商標）バスを示す。
【００１７】
図１では、一例として、ＡＸＩ（登録商標）仕様の２つのＳｏＣ(SoC#0，SoC#1)100がＰＣＩｅバス(ＰＣＩｅ)200で繋がれているが、ＳｏＣ100の数は、２つに限定されず、また、ＳｏＣ100の仕様は、ＡＸＩに限定されない。さらに、複数のＳｏＣ100を繋ぐバスも、ＰＣＩｅ200に限定されるものではない。
【００１８】
なお、ＳｏＣ100は、１つの半導体集積回路(チップ)として形成することもできるか、複数のチップとして形成することもできる。また、図１において、回路基板300は、ＳｏＣ100(コントローラ)およびメモリ101により形成され、複数の回路基板300により情報処理装置(例えば、サーバ装置)を形成しているが、本実施形態は、様々な構成に対して幅広く適用することが可能である。
【００１９】
図１に示されるように、各回路基板300は、ＳｏＣ100およびメモリ(例えば、ＤＤＲ(Double-Data-Rate) Memory)101を含む。なお、回路基板300は、他の様々なチップ(半導体集積回路)を含んでもよい。ＳｏＣ100は、バス制御回路(排他アクセス回路)１，ＣＰＵ102，内部接続回路(Interconnect)103、メモリ接続回路(104，105)、外部接続回路(106，107)および様々なＩＰ(ＩＰ(Intellectual Property)コア，ＩＰマクロ)108を含む。
【００２０】
メモリ接続回路は、例えば、メモリ(DDR Memory)101との接続を制御するメモリ制御回路(DDR Controller)104、および、メモリ101のインタフェースＩＰマクロ(DDR PHY)105を含む。外部接続回路は、例えば、ＰＣＩｅ200を介して他のＳｏＣ100(回路基板300)との接続(リンク)を制御するリンク制御回路(PCIe Link)106、および、ＰＣＩｅ200のインタフェースＩＰマクロ(PCIeの物理層：PCIe PHY)107を含む。
【００２１】
内部接続回路103は、例えば、ＡＸＩ仕様に基づいて、ＣＰＵ102と、メモリ制御回路(DDR Controller)104，バス制御回路１およびＩＰマクロ108の間で信号(データおよびコマンド)の受け渡しを行う。なお、ＣＰＵ102，メモリ制御回路104およびＩＰマクロ108等は、ＡＸＩ仕様(内部バス仕様)の内部回路を形成する。ここで、バス制御回路１は、内部接続回路103によるＡＸＩ仕様の信号を受け取って変換し、外部接続回路(リンク制御回路106およびPCIeの物理層107)を介してＰＣＩｅ(外部バス)200に出力する。また、バス制御回路１は、ＰＣＩｅ200から外部接続回路(106，107)を介して入力された信号を変換し、ＡＸＩ仕様の内部接続回路103(ＣＰＵ102，メモリ制御回路104およびＩＰマクロ108等)に出力する。
【００２２】
バス制御回路１は、排他コマンド変換ブロックA-1、排他応答発行ブロックA-2、排他コマンド生成ブロックB-1、および、排他応答受信ブロックB-2を含み、それぞれのＳｏＣ100に設けられている。
【００２３】
ここで、一方のSoC#0からＰＣＩｅ200を介して他方のSoC#1に排他コマンドを出力するとき(SoC#0からSoC#1への排他アクセス発行時)、それぞれのＳｏＣ100におけるブロックA-1，A-2，B-1，B-2は次のように動作する。一方のSoC#0では、A-1およびB-2がオン(活性化)してA-2およびB-1がオフ(不活性化)し、他方のSoC#1では、A-1およびB-2がオフしてA-2およびB-1がオンする。
【００２４】
なお、排他アクセスとは、例えば、SoC#0とSoC#1があるリソース(メモリ等)を共有する場合に、SoC#0がその共有リソースの特定部分(メモリの特定アドレス等)にアクセスしている間は、SoC#1がその共有リソースの特定部分にアクセスできないようにすることで、その共有リソースの整合性を保持するようにした排他制御を含むアクセスのことである。また、排他コマンドとは、その排他アクセスを要求するコマンドのことであり、例えば、排他リードコマンドと排他ライトコマンドを含む。
【００２５】
一方、通常アクセスとは、例えば、上記排他制御を含まないアクセスである。また、通常コマンドとは、その通常アクセスを要求するコマンドのことであり、例えば、通常リードコマンドと通常ライトコマンドを含む。
【００２６】
図２は、図１に示す情報処理装置における半導体集積回路にそれぞれ設けられたバス制御回路の一例を示すブロック図である。図２に示されるように、各半導体集積回路(SoC#0，SoC#1)100において、バス制御回路(PCIe Exclusive Access Unit)１は、内部接続回路103から、ＰＣＩｅ200に接続された外部接続回路106，107に信号を変換する第１変換部(Interconnect to PCIe Bus Bridge)１１を含む。さらに、バス制御回路１は、ＰＣＩｅ200に接続された外部接続回路106，107から、内部接続回路103に信号を変換する第２変換部(PCIe to Interconnect Bus Bridge)１２を含む。
【００２７】
第１変換部１１は、内部接続回路103からの排他コマンドを受け取って変換し、ＰＣＩｅ200に接続された外部接続回路106，107に出力するもので、コマンド変換ブロックA-1、排他応答発行ブロックA-2、および、セレクタ１０を含む。
【００２８】
ここで、コマンド変換ブロックA-1は、例えば、内部接続回路103から、半導体集積回路100内部の排他制御に適合したフォーマットを有するＡＸＩ仕様の排他コマンドを受け取り、ＰＣＩｅ仕様に適合した別フォーマットを有するＡＸＩ仕様の排他コマンドに変換して外部接続回路106，107に出力する回路である。
【００２９】
また、排他応答発行ブロックA-2は、例えば、排他コマンド生成ブロックB-1から、内部接続回路103からのＡＸＩ仕様の排他コマンドに含まれる排他応答情報を受け取り、ＰＣＩｅ仕様に適合した排他応答情報を外部接続回路106，107に発行する回路である。なお、セレクタ１０は、コマンド変換ブロックA-1または排他応答発行ブロックA-2の出力を選択して、ＰＣＩｅ200に出力する回路である。
【００３０】
第２変換部１２は、ＰＣＩｅ200からの排他コマンドを受け取って変換し、内部接続回路103に出力するもので、排他コマンド生成ブロックB-1および排他応答受信ブロックB-2を含む。
【００３１】
ここで、排他コマンド生成ブロックB-1は、例えば、ＰＣＩｅ200に接続された外部接続回路106，107から、ＰＣＩｅ仕様に適合したフォーマットを有するＡＸＩ仕様の排他コマンドを受け取り、半導体集積回路100内部の排他制御に適合した別フォーマットを有するＡＸＩ仕様の排他コマンドを生成して内部接続回路103に出力する回路である。また、排他応答受信ブロックB-2は、外部接続回路106，107から、ＰＣＩｅ200に発行された排他コマンドに対する排他応答情報を受け取り、A-1に出力する回路である。
【００３２】
次に、図３〜図９を参照して、本実施形態において排他アクセスを変換する異なる２種類のバス仕様として、ＰＣＩｅ（登録商標）およびＡＸＩ（登録商標）を適用する場合の例を説明し、その後、図１０〜図２３を参照して、本実施形態を詳述する。
【００３３】
図３は、図１に示す情報処理装置におけるＰＣＩｅのパケットのＴＬＰヘッダを使用して排他コマンドを送信する例を説明するための図であり、ＡＸＩのMisc信号を入力する場合を説明するためのものである。ここで、Misc信号は、例えば、ＡＸＩにおいてユーザが定義することが可能なユーザ信号であり、種々の(miscellaneous)情報を伝播するために使用可能な信号である。なお、図３は、ＰＣＩｅのパケットのＴＬＰ(Transaction Layer Packet)ヘッダにおけるメモリ書き込み要求ヘッダ(Memory Write Request Header)、並びに、メモリ読み出しおよびアトミック操作要求ヘッダ(Memory Read and AtomicOp Request Headers)を示している。
【００３４】
図１を参照して説明したように、例えば、一方のSoC#0から他方のSoC#1への排他アクセス発行時には、SoC#0では、ブロックA-1およびB-2がオンし、SoC#1では、A-2およびB-1がオンする。ここで、ＰＣＩｅのＴＬＰヘッダは、図３に示されるような構成を有し、例えば、ユーザに開放されているＴＨ(TLP Processing Hint present)ビット，ＳＴ[7:0]フィールドおよびＰＨ(Processing Hint)ビットを使用して排他アクセスの変換を行う。なお、本明細書では、例えば、ＡＸＩにおける排他コマンドを組み込むＰＣＩｅのビットフィールドとして、ＴＬＰヘッダを使用した例を説明するが、これは、単なる例であり、ＰＣＩｅ仕様における様々なビットフィールドを使用することができる。
【００３５】
すなわち、SoC#0では、ＰＣＩｅのＴＬＰヘッダにおけるＴＨビット，ＳＴ[7:0]フィールドおよびＰＨビットを、ＡＸＩのMisc信号のＰＣＩｅへの入力として扱うようになっている。SoC#0の外部接続回路106，107は、ＡＸＩのMisc信号のビット情報に基づいて、ＰＣＩｅのＴＬＰヘッダにおけるＴＨビット，ＳＴ[7:0]フィールドおよびＰＨビットを生成する。Misc信号は例えば、後述するＡＸＩのARUSER[x:0]とAWUSER[x:0]を含む。
【００３６】
また、SoC#1では、ＰＣＩｅのＴＬＰヘッダにおけるＴＨビット，ＳＴ[7:0]フィールドおよびＰＨビットのＡＸＩへの入力として、ＡＸＩのMisc信号を扱うようになっている。ここで、SoC#1の外部接続回路106，107は、ＰＣＩｅのＴＬＰヘッダにおけるＴＨビット，ＳＴ[7:0]フィールドおよびＰＨビットのビット情報に基づいて、ＡＸＩのMisc信号を生成する。Misc信号は例えば、後述するＡＸＩのARUSER[x:0]とAWUSER[x:0]を含む。
【００３７】
なお、Misc信号入力として扱うビットは、ＰＣＩｅのＴＬＰヘッダにおけるＴＨビット，ＳＴ[7:0]フィールドおよびＰＨビットに限定されるものではなく、ユーザに開放されている他のビットを使用してもよい。さらに、排他アクセスの変換に使用するビットは、ＴＬＰヘッダにおけるものに限定されないのはもちろんである。
【００３８】
図４および図５は、ＡＸＩの基本構成を説明するための図である。図４(a)に示されるように、ＡＸＩは、読み出し用のリードアドレス(AR)チャネル"Read address channel"およびリードデータ(R)チャネル"Read data channel"を含む。さらに、ＡＸＩは、書き込み用のライトアドレス(AW)チャネル"Write address channel"，ライトデータ(W)チャネル"Write data channel"およびライト応答(B)チャネル"Write response channel"を含む。すなわち、ＡＸＩは、５つのチャネルを含んでいる。
【００３９】
図４(b)は、ＡＸＩにおける読み出し動作を説明するためのものであり、図４(c)は、ＡＸＩにおける書き込み動作を説明するためのものである。なお、図４(b)および図４(c)において、例えば、"AXI Master"としては、図１のSoC#0におけるＣＰＵ102を想定し、"AXI Slave"としては、図１のSoC#1におけるメモリ(DDR Memory)101を想定する。
【００４０】
また、"AXI Master"と"AXI Slave"の間には、SoC#0における内部接続回路103，バス制御回路１および外部接続回路106，107、ＰＣＩｅ200、並びに、SoC#1における外部接続回路106，107および内部接続回路103等が介在する。
【００４１】
図４(b)に示されるように、"AXI Master"から"AXI Slave"(ＳｏＣ#１におけるメモリ101)のデータを読み出す場合、図４(a)に示すＡＲおよびＲを使用する。また、図４(c)に示されるように、"AXI Master"から"AXI Slave"にデータを書き込む場合、図４(a)に示すＡＷ，ＷおよびＢを使用する。
【００４２】
図５に示されるように、トランザクションの動作として、各チャネルは、バリッド(VALID)／レディ(READY)／伝送する情報(Information)の信号を含み、VALID／READYのハンドシェークで情報を受け渡す。ここで、ＣＬＫは、クロックを示す。
【００４３】
まず、送信側は、情報とその情報が有効であることを示すVALID信号をアサートし(図５のＴ１)、受信側は、その有効な情報を受け取れることを示すためにREADYをアサートする。例えば、VALIDおよびREADYが共に高レベル『Ｈ』である時のクロックエッジでハンドシェーク成立する。なお、送信側は、図５のＴ２まで、InformationとVALIDを保持する。このようにして、情報の受け渡しが完了する。
【００４４】
図６は、ＡＸＩにおける信号の例を説明するための図である。本実施形態では、例えば、太枠で囲った信号ARLOCK[1:0]，ARUSER[x:0]，RRESP[1:0]，AWLOCK[1:0]，AWUSER[x:0]およびBRESP[1:0]を使用する。ここで、ARLOCK[1:0]は、アトミックアクセスを示し、通常／排他／ロックアクセスを指定する信号(AXI3(AXIのバージョン３)のみ)であり、ARUSER[x:0]は、ユーザ信号であり、ユーザが定義することが可能な信号であって、上述したMisc信号の１つである。また、RRESP[1:0]は、読み出し応答(リード応答)を示し、リード転送の結果ステータスを示す信号である。なお、[x:0]は任意のビット幅であることを表す。
【００４５】
さらに、AWLOCK[1:0]は、アトミックアクセスを示し、通常／排他／ロックアクセス(AXI3のみ)を指定する信号であり、AWUSER[x:0]は、ユーザ信号であり、ユーザが定義することが可能な信号であって、上述したMisc信号の１つである。また、BRESP[1:0]は、書き込み応答(ライト応答)を示し、ライト転送の結果ステータスを示す信号である。
【００４６】
図７は、ＡＸＩにおける排他アクセスの一例を説明するための図である。図７(a)に示されるように、２ビットの信号AxLOCK[1:0]の値『00』，『01』，『10』および『11』は、それぞれ『通常アクセス』，『排他アクセス』，『ロックアクセス』および『予約済み(Reserved)』を示す。なお、AxLOCK[1:0]は、ARLOCK[1:0]およびAWLOCK[1:0]の両方を示す。また、AxLOCK[1:0]の値『10』は、AXI4(AXIのバージョン４)では削除されている。
【００４７】
図７(b)は、マスタ０(Master 0：例えば、SoC#0のCPU102)によるスレーブ０(Slave 0：例えば、SoC#0のメモリ101)のアクセスと、マスタ１(Master 1：例えば、SoC#1のCPU102)によるスレーブ０のアクセスが競合する場合を示す。なお、スレーブ１(Slave 1)は、例えば、SoC#1のメモリ101が対応する。
【００４８】
図７(b)に示されるように、排他アクセスは、例えば、マスタ０およびマスタ１による特定のアドレス(SoC#0のメモリ101)へのアクセスが競合する場合に、例えば、セマフォ型の処理により実現することが可能である。ここで、排他アクセスの実現には、スレーブ０(SoC#0のメモリ101)に対して、排他アクセスモニタを設けることが求められる。ここで、図７(b)に示すSlave 0の排他アクセスモニタは、Slave 0をアクセスするアドレスを監視し、例えば、Master 0からSlave 0への排他アクセス中に、Master 1がSlave 0の別のアドレスにはアクセス可能とすることができる。
【００４９】
図８は、ＡＸＩにおいて使用される応答を説明するための図である。図８に示されるように、例えば、ＡＸＩで使用されるレスポンス(応答)は、２ビットのRRESP[1:0]およびBRESP[1:0]の値『00』，『01』，『10』および『11』に対して、"OKAY"，"EXOKAY"，"SLVERR"および"DECERR"の４種類ある。
【００５０】
ここで、"OKAY"は、通常アクセス成功もしくは排他アクセス失敗を示し、"EXOKAY"は、排他読み出し、または、排他書き込みのいずれかが成功したことを示し、そして、"SLVERR"は、スレーブエラーを示し、スレーブからマスタへのエラー通知である。また、"DECERR"は、デコードエラーを示し、アクセス先のアドレスにスレーブが存在しないことを示し、通常、インターネットコネクトが生成する。
【００５１】
すなわち、ライト(書き込み)の場合、バースト全体に対して、１つの応答を返し、また、リード(読み出し)の場合、バースト内のデータ転送ごとに応答を返すようになっている。ここで、データ転送ごとに異なる応答を返すことが可能であり、また、途中でエラーが発生しても、要求された回数の転送をすることが求められる。
【００５２】
図９は、ＡＸＩにおける排他アクセスの動作を説明するための図である。ここで、排他アクセスの動作において、基本は、セマフォアクセス(リード・モディファイ・ライト)である。
【００５３】
図９(a)に示されるように、マスタが排他リードを実施(ARLOCK[0:1]＝『01』)すると、排他モニタは、アドレスとＩＤを保存し、スレーブは"EXOKAY"で、リードデータを返す。なお、排他アクセスに対応しないスレーブは、"OKAY"を返すことで、マスタに非対応であることを通達することができる。
【００５４】
図９(b)に示されるように、マスタがデータのモディファイ(modify)を実施すると、この間、排他モニタは、セマフォ領域が他のマスタによって書き換えられないかを監視する。なお、排他モニタは、他のマスタ(ＩＤ)からの書き込みや、他のアドレスへの排他リードが発生しない限り監視を続行する。
【００５５】
図９(c)に示されるように、マスタが更新後のデータを排他ライト(AWLOCK[0:1]＝『01』)すると、排他モニタは、同じアドレスを監視中であれば、排他性が保証されるため、ライトを実施し、"EXOKAY"を返す。また、排他モニタは、そのアドレスを監視中でなければ、排他性が保証されないため、ライト動作は行わずに"OKAY"を返すことになる。
【００５６】
ところで、ＰＣＩｅには、排他制御の機能が設けられていないため、例えば、ＡＸＩが適用された２つのSoC#0とSoC#1をＰＣＩeにより接続したシステム(情報処理装置)では、適切な排他制御を行うことが難しい。
【００５７】
図１０は、図１に示す情報処理装置におけるリードアクセス動作の一例を説明するための図である。図１１は、図１０に示す情報処理装置における排他リードアクセス動作の一例を説明するための図であり、排他リードアクセス動作におけるＡＸＩコマンドの変換を説明するためのものである。
【００５８】
図１０および図１１において、SoC#0およびSoC#1の内部でコマンドや各種情報の受け渡しに使用されるバスはＡＸＩであり、排他リードアクセスに対応している一方、SoC#0とSoC#1の間でコマンドや各種情報の受け渡しに使用されるバスはＰＣＩｅであり、排他リードアクセスに対応していない。なお、図１１において、『xxxx』はリードデータを示し、『yy』は排他応答を示す。また、Misc信号としては、ARUSER[x:0]を使用(例えば、排他アクセス＝『1』)する。
【００５９】
図１０および図１１に示されるように、まず、SoC#0のＣＰＵ102(CPU#0)から排他リードアクセス(排他リードコマンド)を発行し(処理Ｓ１)、排他コマンド変換ブロックA-1により排他リードコマンドを保持する(処理Ｓ２：AR ARLOCK＝『01』)。次に、A-1により、ＡＸＩのMisc信号に排他リード情報をセットする(処理Ｓ３：AR ARUSER＝『1』)。さらに、A-1から、例えば、SoC#0の外部接続回路(リンク制御回路106およびPCIe PHY107:PCIe#0)に対して、通常リードコマンド(Misc信号付き)を発行する(処理Ｓ４：AR ARLOCK＝『00』，ARUSER＝『1』)。
【００６０】
そして、PCIe#0(SoC#0の外部接続回路)からPCIe#1(SoC#1の外部接続回路)に、ヘッダ情報に排他制御情報を含むリードコマンドを発行し(処理Ｓ５)、PCIe#1から排他コマンド生成ブロックB-1に通常リードコマンド(Misc信号付き)を発行する(処理Ｓ６：AR ARLOCK＝『00』，ARUSER＝『1』)。また、B-1により通常リードコマンド(Misc信号付き)を保持し(処理Ｓ７)、Misc信号の排他リード情報から排他リードコマンドを生成する(処理Ｓ８)。
【００６１】
次に、B-1からSoC#1のメモリ101(DDR#1)に排他リードコマンドを発行し(処理Ｓ９：AR ARLOCK＝『01』)、DDR#1が排他リード応答を発行し(処理Ｓ１０)、そして、B-1により排他リード応答を保持する(処理Ｓ１１：R RDATA＝『xxxx』，RRESP＝『yy』)。
【００６２】
さらに、B-1から、通常リードコマンドの応答としてリードデータ(Read Data)をPCIe#1に出力し(処理Ｓ１２：R RDATA＝『xxxx』，RRESP＝『00』)、B-1から、保持された排他リード応答に基づいて、排他リード応答であることを示す識別情報(排他リード応答情報)を排他応答発行ブロックA-2に発行する(処理Ｓ１３：R RRESP＝『yy』)。また、A-2により、排他リード応答情報をライトデータ(Write Data)とする通常ライトコマンドをPCIe#1に発行し、PCIe#1 は、通常ライトコマンドを受け取り、A-2に通常ライトの成功を示す応答を発行する(処理Ｓ１４：AW AWLOCK＝『00』，W WDATA＝『yy』，B BRESP＝『00』)。
【００６３】
そして、PCIe#1からPCIe#0にリードデータ(Read Data)／ライトデータ(Write Data)を転送し(処理Ｓ１５)、PCIe#0からA-1に通常リードコマンドに対するリードデータを転送する(処理Ｓ１６：R RDATA＝『xxxx』，RRESP＝『00』)。また、PCIe#0から排他応答受信ブロックB-2に排他リード応答情報をライトデータとする通常ライトコマンドを発行し、B-2は通常ライトコマンドを受け取り、通常ライトの成功を示す応答をPCIe#0に発行する(処理Ｓ１７：AW AWLOCK＝『00』，W WDATA＝『yy』，B BRESP＝『00』)。さらに、B-2からA-1に排他リード応答情報を転送し(処理Ｓ１８：W WDATA＝『yy』)、A-1によりリードデータ／排他リード応答情報をマージし、排他リード応答をCPU#0に転送する(処理Ｓ１９：R RDATA＝『xxxx』，RRESP＝『yy』)。
【００６４】
以上のようにして、例えば、排他リード機能が用意されていないＰＣＩｅを介して接続された、２つの排他リード機能を有するＡＸＩ仕様の半導体集積回路(ＳｏＣ)間における排他リード処理を実現することが可能になる。すなわち、異なる仕様のバス間においても排他アクセスの伝搬を可能とすることができる。
【００６５】
図１２は、図１に示す情報処理装置におけるライトアクセス動作の一例を説明するための図である。図１３は、図１２に示す情報処理装置における排他ライトアクセス動作の一例を説明するための図であり、排他ライトアクセス動作におけるＡＸＩコマンドの変換を説明するためのものである。
【００６６】
図１２および図１３において、SoC#0およびSoC#1の内部でコマンドや各種情報の受け渡しに使用されるバスはＡＸＩであり、排他ライトアクセスに対応している一方、SoC#0とSoC#1の間でコマンドや各種情報の受け渡しに使用されるバスはＰＣＩｅであり、排他ライトアクセスに対応していない。なお、図１３において、『xx』はライトデータを示し、『yy』は排他応答を示す。また、Misc信号としては、AWUSER[x:0]を使用(例えば、排他アクセス＝『1』)する。
【００６７】
図１２および図１３に示されるように、まず、CPU#0(SoC#0のＣＰＵ102)から排他ライトアクセス(排他ライトコマンド)を発行し(処理Ｓ２１)、排他コマンド変換ブロックA-1により排他ライトコマンドを保持する(処理Ｓ２２：AW AWLOCK＝『01』，W WDATA＝『xx』)。次に、A-1により、ＡＸＩのMisc信号に排他ライト情報をセットする(処理Ｓ２３)。さらに、A-1から、例えば、PCIe#0(SoC#0の外部接続回路106，107)に対して、通常ライトコマンド(Misc信号付き)を発行する(処理Ｓ２４：AW AWLOCK＝『00』，AWUSER＝『1』，W WDATA＝『xx』)。
【００６８】
そして、PCIe#0からPCIe#1にヘッダ情報に排他制御情報を含むライトコマンドを発行し(処理Ｓ２５)、PCIe#1から排他コマンド生成ブロックB-1に通常ライトコマンド(Misc信号付き)を発行し、B-1は通常ライトコマンド(Misc信号付き)を受け取り、PCIe#1に受け取り成功を示す応答を発行する(処理Ｓ２６：AW AWLOCK＝『00』，AWUSER＝『1』，W WDATA＝『xx』，B BRESP＝『00』)。また、B-1により通常ライトコマンド(Misc信号付き)を保持し(処理Ｓ２７)、Misc信号の排他ライト情報から排他ライトコマンドを生成する(処理Ｓ２８)。
【００６９】
次に、B-1からDDR#1(SoC#1のメモリ101)に排他ライトコマンドを発行し(処理Ｓ２９：AW AWLOCK＝『01』，W WDATA＝『xx』)、DDR#1が排他ライト応答を発行し(処理Ｓ３０)、そして、B-1により排他ライト応答を保持する(処理Ｓ３１：B BRESP『yy』)。
【００７０】
さらに、B-1から、保持された排他ライト応答に基づいて、排他ライト応答であることを示す識別情報(排他ライト応答情報)を排他応答発行ブロックA-2に発行し(処理Ｓ３２：B BRESP『yy』)、A-2により、排他ライト応答情報をライトデータ(Write Data)とする通常ライトコマンドをPCIe#1に発行し、PCIe#1通常ライドコマンドを受け取り、A-2に通常ライトの成功を示す応答を発行する(処理Ｓ３３： AW AWLOCK＝『00』，W WDATA＝『yy』，B BRESP＝『00』)。
【００７１】
また、PCIe#1からPCIe#0にライトデータを転送し(処理Ｓ３４)、PCIe#0から排他応答受信ブロックB-2に排他ライト応答情報をライトデータとする通常ライトコマンドを発行し、B-2は通常ライトコマンドを受け取り、PCIe#0に通常ライトの成功を示す応答を発行する(処理Ｓ３５： AW AWLOCK＝『00』，W WDATA＝『yy』，B BRESP＝『00』)。そして、B-2からA-1に排他ライト応答情報を転送し(処理Ｓ３６)、A-1により排他ライト応答をCPU#0に転送する(処理Ｓ３７：B BRESP＝『yy』)。
【００７２】
以上のようにして、例えば、排他ライト機能が用意されていないＰＣＩｅを介して接続された、２つの排他ライト機能を有するＡＸＩ仕様の半導体集積回路(ＳｏＣ)間における排他ライト処理を実現することが可能になる。すなわち、異なる仕様のバス間においても排他アクセスの伝搬を可能とすることができる。
【００７３】
図１４は、図１０および図１１に示す情報処理装置における排他リードアクセス動作の他の例を説明するための図であり、ＡＸＩのMisc信号を使わずに排他リードアクセス動作を行う例を説明するためのものである。
【００７４】
図１４と、前述した図１１の比較から明らかなように、Misc信号を使わずに排他リードアクセス動作を行う本変形例では、図１１に示す処理Ｓ１〜Ｓ１９に加えて、さらなる処理Ｓ４'およびＳ６'が設けられている。
【００７５】
すなわち、排他コマンド変換ブロックA-1からPCIe#0に対して、通常リードを発行する処理Ｓ４(AR ARLOCK＝『00』，ARUSER＝『1』)と共に、処理Ｓ４'を行う。処理Ｓ４'では、A-1からPCIe#0に対して、例えば、AW AWLOCK＝『00』，W WDATA＝『1』とすることにより、排他リード情報をＡＸＩの通常ライトコマンドとして発行する。そして、PCIe#0は、通常ライトコマンドを受け取り、A-1に受け取り成功を示す応答を発行する。
【００７６】
さらに、PCIe#1から排他コマンド生成ブロックB-1に通常リードを発行する処理Ｓ６(AR ARLOCK＝『00』，ARUSER＝『1』)と共に、処理Ｓ６'を行う。処理Ｓ６'では、PCIe#1からB-1に対して、例えば、AW AWLOCK＝『00』，W WDATA＝『1』とすることにより、排他リード情報をＡＸＩの通常ライトコマンドとして発行し、B-1は、通常ライトコマンドを受け取り、PCI#1に受け取り成功を示す応答を発行する。
【００７７】
そして、B-1は、通常リードコマンド(処理Ｓ６)と排他リード情報の通常ライトコマンド(処理Ｓ６')から、ＡＸＩの排他リードコマンドを生成する。同様に、排他ライトアクセス動作もMisc信号を使用することなく実現することが可能である。このように、ＰＣＩｅのMisc信号を使用せずに排他アクセス処理を実現することができる。
【００７８】
図１５は、本実施形態に係る情報処理装置の他の例を示すブロック図であり、ＡＸＩ仕様の３つのＳｏＣ(SoC#0，SoC#1，SoC#2)100がＰＣＩｅ200で繋がれた情報処理装置の例を示すものである。すなわち、図１５と、前述した図１の比較から明らかなように、図１５に示す情報処理装置は、図１に示す情報処理装置に対して、SoC#2を追加したものに対応する。
【００７９】
ここで、SoC#2およびメモリ101による回路基板300は、例えば、マザーボードに相当し、このマザーボード(SoC#2)のソケットに対して、２つの回路基板300(SoC#0，SoC#1)を差し込んだものに相当する。このとき、SoC#0〜SoC#2には、それぞれのＳｏＣ(半導体集積回路)を識別するための番号(ＳｏＣ番号)、或いは、SoC#0〜SoC#1には、ＳｏＣ100が搭載された回路基板300を識別するためのポート番号(マザーボード(SoC#2)のソケットに相当する番号)が割り当てられる。
【００８０】
なお、図１５は、例えば、SoC#0のＣＰＵ102が、SoC#1に接続されたメモリ101をアクセスする場合を想定したもので、SoC#0のバス制御回路１におけるブロックA-1およびB-2と、SoC#1のバス制御回路１におけるブロックA-2およびB-1が活性化(オン)されている。また、SoC#2には、２組の外部接続回路(106，107)およびバス制御回路１が設けられているが、SoC#0とSoC#1間のアクセス時には、それぞれのバス制御回路１におけるA-1，A-2，B-1，B-2は全て不活性化(オフ)されている。さらに、ＳｏＣ100(回路基板300)の数は、２個または３個に限定されるものではなく、さらに多数のＳｏＣ(回路基板)が接続されてもよいのは、前述した通りである。
【００８１】
図１６は、図２に示すバス制御回路(排他アクセス回路)におけるリードチャネルの排他コマンド変換ブロックの一例を説明するための図である。図１６に示されるように、排他コマンド変換ブロックA-1は、図１０および図１１を参照して説明したリードアクセス動作時に、リードアドレス(AR)チャネルの変換処理を行うブロックA-11およびリードデータ(R)チャネルの変換処理を行うブロックA-12を含む。
【００８２】
ブロックA-11は、図１０および図１１における処理Ｓ１により、CPU#0(内部接続回路103)からS_A1_ARLOCKおよびS_A1_ARADDRを受け取り、D_A1_ARLOCK，D_A1_ARID[x]およびD_A1_ARUSER[0]に変換してPCIe#0に出力する(処理Ｓ４)。なお、以下に詳述するように、S_A1_ARLOCKおよびS_A1_ARADDRは、D_A1_ARLOCKおよびD_A1_ARADDRとして使用する。
【００８３】
すなわち、A-11は、S_A1_ARLOCK＝『01』(排他アクセス)のとき、D_A1_ARLOCK＝『00』(通常アクセス)、D_A1_ARID[x]＝『1』(Rチャネルでの排他コマンド識別用に、xビットのARID[x-1:0]に付加)、および、D_A1_ARUSER[0]＝『1』(排他コマンド情報)をPCIe#0に出力する。また、A-11は、S_A1_ARLOCK＝『01』のとき、D_A1_ARADDRの値を、B2_ARADDR(コマンド識別用)として、排他応答受信ブロックB-2に転送する。
【００８４】
さらに、A-11は、S_A1_ARLOCK＝『01』ではないとき、S_A1_ARLOCKおよびS_A1_ARADDRを受け取り、D_A1_ARLOCK＝S_A1_ARLOCK、D_A1_ARID[x]＝『0』、および、D_A1_ARUSER[0]＝『0』に変換してPCIe#0に出力する。
【００８５】
ブロックA-12は、図１０および図１１における処理Ｓ１６により、PCIe#0からS_A1_RID[x]およびS_A1_RRESPを受け取り、D_A1_RRESPに変換して内部接続回路103(CPU#0)に出力する(処理Ｓ１９)。すなわち、A-12は、S_A1_RID[x]＝『1』のとき、D_A1_RRESP＝B2_RRESP(排他応答値)をCPU#0に出力する。また、A-12は、S_A1_RID[x]＝『0』のとき、D_A1_RRESP＝S_A1_RRESPをCPU#0に出力する。なお、B-2は、A-12に対して、B2_RRESPを出力する。
【００８６】
図１７は、図２に示すバス制御回路におけるライトチャネルの排他コマンド変換ブロックの一例を説明するための図である。図１７に示されるように、排他コマンド変換ブロックA-1は、図１２および図１３を参照して説明したライトアクセス動作時に、ライトアドレス(AW)チャネルの変換処理を行うブロックA-13，ライトデータ(W)チャネルの変換処理を行うブロックA-14およびライト応答(B)チャネルの変換処理を行うブロックA-15を含む。
【００８７】
ブロックA-13は、図１２および図１３における処理Ｓ２１により、CPU#0からS_A1_AWLOCKおよびS_A1_AWADDRを受け取り、D_A1_AWLOCK，D_A1_AWID[x]およびD_A1_AWUSER[0]に変換してセレクタ１０(PCIe#0)に出力する(処理Ｓ２２〜Ｓ２４)。ここで、以下に詳述するように、S_A1_AWLOCKおよびS_A1_AWADDRは、D_A1_AWLOCKおよびD_A1_AWADDRとして使用する。
【００８８】
すなわち、A-13は、S_A1_AWLOCK＝『01』(排他アクセス)のとき、D_A1_AWLOCK＝『00』(通常アクセス)、D_A1_AWID[x]＝『1』(Bチャネルでの排他コマンド識別用に、xビットのAWID[x-1:0]に付加)、および、D_A1_AWUSER[0]＝『1』(排他コマンド情報)をセレクタ１０に出力する。また、A-13は、S_A1_AWLOCK＝『01』のとき、D_A1_AWADDRの値を、B2_AWADDR(コマンド識別用)として、排他応答受信ブロックB-2に転送する。
【００８９】
さらに、A-13は、S_A1_AWLOCK＝『01』ではないとき、S_A1_AWLOCKおよびS_A1_AWADDRを受け取り、D_A1_AWLOCK＝S_A1_AWLOCK、D_A1_AWID[x]＝『0』、および、D_A1_AWUSER[0]＝『0』に変換してセレクタ１０に出力する。ここで、排他アクセスか否かを示すS_A1_AWLOCKは、２ビットのデータ(『01』)とされているが、１ビットのデータ(『0』または『1』)であってもよい。
【００９０】
ブロックA-14は、図１２および図１３における処理Ｓ２１により、CPU#0からS_A1_AWLOCKを受け取り、D_A1_WID[x]に変換してセレクタ１０(PCIe#0)に出力する(処理Ｓ２２〜Ｓ２４)。すなわち、A-14は、S_A1_AWLOCK＝『01』(排他アクセス)のとき、D_A1_WID[x]＝『1』(AWチャネルと合わせるため)とし、S_A1_AWLOCK＝『01』ではないとき、D_A1_WID[x]＝『0』とする。なお、A-14の出力(D_A1_WID[x])は、セレクタ１０に入力される。
【００９１】
ブロックA-15は、S_A1_BID[x]およびS_A1_BRESPを受け取り、D_A1_BRESPに変換して内部接続回路103(CPU#0)に出力する(処理Ｓ３７)。すなわち、A-15は、S_A1_BID[x]＝『1』のとき、D_A1_BRESP＝B2_BRESP(排他応答値)をCPU#0に出力し、S_A1_BID[x]＝『0』のとき、D_A1_BRESP＝S_A1_BRESPをCPU#0に出力する。ここで、排他応答受信ブロックB-2は、A-15に対して、B2_BRESPを出力する。また、セレクタ１０には、排他応答発行ブロックA-2の出力(AW，WおよびBチャネルの出力)も入力され、例えば、図２１を参照して後に詳述する排他応答発行識別信号(ＳＳ)を受信したときは、A-2の出力を選択し、そうでないときは、A-1の出力を選択する。
【００９２】
図１８は、図２に示すバス制御回路における排他応答受信ブロックの一例を説明するための図である。図１８に示されるように、排他応答受信ブロックB-2は、図１０〜図１３を参照して説明したアクセス動作時に、排他コマンド変換ブロックA-1およびPCIe#0との間で信号の遣り取りおよび変換を行う３つのブロックB-21，B-22およびB-23を含む。
【００９３】
ブロックB-21は、排他コマンド変換ブロックA-1からB2_ARADDRおよびB2_AWADDRを受け取ると共に、PCIe#0のAW)ャネルからS_B2_AWADDRを受け取り、排他応答受信識別信号(ＳＲ)を生成してB-22に出力する。すなわち、B-21では、S_B2_AWADDRがB2_ARADDRまたはB2_AWADDRと合致した場合、A-1から発行した排他コマンドに対する排他応答であると判定し、排他応答受信識別信号ＳＲをB-22に出力する。
【００９４】
ブロックB-22は、PCIe#0からのWチャネルを介してS_B2_WDATAを受け取り、B-21からの排他応答受信識別信号ＳＲに基づいて、S_B2_WDATAをB2_RRESPおよびB2_BRESPに変換してA-1に出力する。すなわち、排他応答受信識別信号ＳＲにより、A-1から発行した排他コマンドに対する排他応答であることが分かったら、S_B2_WDATAに乗っている排他応答値をB2_RRESPまたはB2_BRESPとしてA-1に転送する。なお、ブロックB-23は、PCIe#0からのライト応答(B)チャネルの情報を受け取るブロックであるが、本実施形態と関係が薄いので、その説明は省略する。
【００９５】
図１９は、図２に示すバス制御回路におけるリードチャネルの排他コマンド生成ブロックの一例を説明するための図である。図１９に示されるように、排他コマンド生成ブロックB-1は、図１０および図１１を参照して説明したリードアクセス動作時に、ARチャネルの変換処理を行うブロックB-11およびRチャネルの変換処理を行うブロックB-12を含む。
【００９６】
ブロックB-11は、図１０および図１１における処理Ｓ６として、PCIe#1からS_B1_ARLOCK，S_B1_ARADDRおよびS_B1_ARUSERを受け取り、D_B1_ARLOCKおよびD_B1_ARID[y]に変換して内部接続回路103(DDR#1)に出力する(処理Ｓ７〜Ｓ１０)。
【００９７】
すなわち、B-11は、S_B1_ARUSER[0]＝『1』(排他コマンド)のとき、D_B1_ARLOCK＝『01』(排他コマンド)、および、D_B1_ARID[y]＝『1』(Rチャネルでの排他コマンド識別用に、yビットのARID[y-1:0]に付加)をDDR#1に出力する。また、B-11は、S_B1_ARUSER＝『1』のとき、D_B1_ARADDRの値を、A2_ARADDR(コマンド識別用)として、排他応答発行ブロックA-2に転送する。さらに、B-11は、S_B1_ARUSER[0]＝『0』のとき、D_B1_ARLOCK＝S_B1_ARLOCK、および、D_B1_ARID[y]＝『0』をDDR#1に出力する。
【００９８】
ブロックB-12は、図１０および図１１における処理Ｓ１１として、S_B1_RRESPおよびS_B1_RID[y]を受け取り、D_B1_RRESPに変換してPCIe#1に出力する(処理Ｓ１２)。すなわち、B-12は、S_B1_RID[y]＝『1』のとき、D_B1_RRESP＝『00』、および、A2_RRESP＝S_B1_RRESP(排他応答値)をPCIe#1に出力する。さらに、B-12は、A-2に対して、A2_RRESPを出力する。
【００９９】
図２０は、図２に示すバス制御回路におけるライトチャネルの排他コマンド生成ブロックの一例を説明するための図である。図２０に示されるように、排他コマンド生成ブロックB-1は、図１２および図１３を参照して説明したライトアクセス動作時に、AWチャネルの変換処理を行うブロックB-13，Wチャネルの変換処理を行うブロックB-14およびBチャネルの変換処理を行うブロックB-15を含む。
【０１００】
ブロックB-13は、図１２および図１３における処理Ｓ２６により、PCIe#1からS_B1_AWLOCK，S_B1_AWADDRおよびS_B1_AWUSER[0]を受け取り、D_B1_AWLOCKおよびD_B1_AWID[y]に変換して内部接続回路103(DDR#1)に出力する(処理Ｓ２７〜Ｓ３０)。
【０１０１】
すなわち、B-13は、S_B1_AWUSER[0]＝『1』(排他コマンド)のとき、D_B1_AWLOCK＝『01』(排他コマンド)、D_B1_AWID[y]＝『1』(Bチャネルでの排他コマンド識別用に、yビットのAWID[y-1:0]に付加)、および、D_B1_AWADDRの値を、A2_AWADDR(コマンド識別用)として、排他応答発行ブロックA-2に転送する。さらに、B-13は、S_B1_AWUSER[0]＝『0』のとき、D_B1_AWLOCK＝S_B1_AWLOCK、および、D_B1_AWID[y]＝『0』をDDR#1に出力する。
【０１０２】
ブロックB-15は、S_B1_BRESPおよびS_B1_BID[y]を受け取り、D_B1_BRESPに変換してPCIe#1に出力する。すなわち、B-15は、S_B1_BID[y]＝『1』のとき、D_B1_BRESP＝『00』、および、A2_BRESP＝S_B1_BRESP(排他応答値)をPCIe#1に出力する。さらに、B-15は、A-2に対して、A2_BRESPを出力する。
【０１０３】
また、B-15は、S_B1_BID[y]＝『0』のとき、D_B1_BRESP＝S_B1_BRESPをPCIe#1に出力する。なお、ブロックB-1４は、PCIe#1からのWチャネルのデータをそのまま通過させてDDR#1に出力する。
【０１０４】
図２１は、図２に示すバス制御回路におけるライトチャネルの排他応答発行ブロックの一例を説明するための図である。図２１に示されるように、排他応答発行ブロックA-2は、図１２および図１３を参照して説明したライトアクセス動作時に、AWチャネルの変換処理を行うブロックA-21，Wチャネルの変換処理を行うブロックA-22およびBチャネルの変換処理を行うブロックA-23を含む。
【０１０５】
ブロックA-21は、図１２および図１３における処理Ｓ３２により、排他コマンド生成ブロックB-1からB1_ARADDRおよびB1_AWADDRを受け取り、D_A2_AWADDRに変換してセレクタ１０(PCIe#1)に出力する(処理Ｓ１３)。すなわち、A-21は、後述するブロックA-22からの排他応答発行識別信号ＳＳを受信すると、B1_ARADDRまたはB1_AWADDRの値をD_A2_AWADDRとして、排他応答用のAWコマンドをAWチャネル(セレクタ１０)に発行する。
【０１０６】
ブロックA-22は、B-1からB1_RRESPおよびB1_BRESPを受け取り、D_A2_WDATAに変換してセレクタ１０(PCIe#1)に出力する。すなわち、A-22は、B1_RRESPまたはB1_BRESPを受信したら排他応答を発行するため、排他応答発行識別信号ＳＳをAWチャネルおよびセレクタ１０に転送する。また、B1_RRESPまたはB1_BRESPの値を排他応答値として、D_A2_WDATAに変換する。なお、ブロックA-23は、本実施形態と関係が薄いので、その説明は省略する。
【０１０７】
ここで、図２１および図１７に示されるように、PCIe#1と排他コマンド変換ブロックA-1および排他応答発行ブロックA-2の間にはセレクタ１０が設けられ、このセレクタ１０により選択された信号が、PCIe#1とA-1またはA-2の間で転送される。すなわち、セレクタ１０は、排他応答発行識別信号ＳＳを受信したときは、A-2の経路を選択し、そうでないときは、A-1の経路を選択するようになっている。
【０１０８】
図２２および図２３は、図１および図２を参照して説明した情報処理装置におけるＳＴビット[7:0]を含むヘッダ情報の生成/復元方法を説明するための図であり、図１５を参照して示したＳｏＣ番号やポート番号の情報の取得を説明するためのものである。なお、図２２および図２３では、例えば、メモリ(DDR Memory 101)，メモリ接続回路(104，105)およびＩＰマクロ(108)等は、関係が薄いので省略されている。
【０１０９】
図２２に示されるように、ＳｏＣ100は、例えば、図１を参照して説明したＳｏＣに対して、さらに、フラッシュ(Flash)メモリコントローラ111，電子ヒューズ(eFUSE)112および設定値レジスタ113を含む。なお、フラッシュメモリコントローラ111は、例えば、外部に設けられたフラッシュメモリ(または、eEPROM)114を制御する。
【０１１０】
フラッシュメモリコントローラ111，電子ヒューズ(eFUSE)112および設定値レジスタ113を含む。なお、フラッシュメモリコントローラ111は、例えば、外部に設けられたフラッシュメモリや不揮発性メモリ(Electrically Erasable Programmable Read-Only Memory：Flash/eEPROM：外部メモリ)114を制御する。
【０１１１】
外部メモリ(Flash/eEPROM)114または電子ヒューズ112には、予めＳｏＣ番号やポート番号が格納され、例えば、電源起動時に、ＣＰＵ(または、コントローラ)102が、その外部メモリ114や電子ヒューズ112に格納された値を読み出して、設定値レジスタ113にコピーする。そして、設定値レジスタ113にコピーされた値は、バス制御回路(排他アクセス回路)１により読み出され、それぞれのＳｏＣが識別された状態で、前述した排他アクセス処理が行われる。なお、設定値レジスタ113を経由せずに、ＣＰＵ102が、外部メモリ114や電子ヒューズ112から読み出した値を、直接バス制御回路１に設定することもできる。
【０１１２】
具体的に、図２３に示されるように、図３を参照して説明したＰＣＩｅのＴＬＰヘッダにおけるＳＴビット(ST[7:0])を使用することができる。すなわち、バス制御回路(PCIe Exclusive Access Unit)１は、例えば、SoC#0の設定値レジスタ113からＳｏＣ番号(SoC Number[5:0])およびポート番号(Port Number)を読み出す。さらに、内部接続回路(Interconnect)103を介してAxLOCK[1:0]およびAxADDR[31:0]を読み出し、例えば、前述した処理を行って、AxUSER[7:0]，AxUSER[10:8]およびAxADDR[31:0]を、PCIE#に出力する。
【０１１３】
ここで、SoC#0におけるデータは、例えば、SoC Number[5:0]＋Port Number＋AxLOCK[1:0] → AxUSER[7:0] → ST[7:0]といった変換(生成)を行い、また、AxLOCK[1:0] → AxUSER[10:8] → TH＋PH[1:0]といった変換を行うことで、ヘッダ情報に変換する。なお、前述したように、例えば、AxLOCKは、AxLOCK[1:0]といった２ビットの情報ではなく、１ビットの情報でよいが、例えば、『01』が排他アクセスで『00』が通常アクセスというように使用することができる。また、AxUSER[10:8]は、３ビットの情報を転送できるが、例えば、１ビットを固定して、他の２ビットを使用すればよい。
【０１１４】
このようにして、例えば、ＰＣＩｅのＴＬＰヘッダのST[7:0]，THおよびPH[1:0]として組み入れられた情報は、例えば、SoC#1において復元される。すなわち、例えば、TH＋PH[1:0] → AxUSER[10:8] → AxLOCK[1:0]とし、また、ST[7:0] → AxUSER[7:0] ] → 応答用送信元情報保持として、ＰＣＩｅのＴＬＰヘッダに組み込まれた情報を復元する。このようにして、SoC#1では、PCIe#1から、AxUSER[7:0]，AxUSER[10:8]およびAxADDR[31:0]が、バス制御回路１に入力され、バス制御回路１から、内部接続回路103にAxLOCK[1:0]およびAxADDR[31:0]が出力される。
【０１１５】
なお、SoC#1においても、設定値レジスタ113が設けられ、上述したのとは逆向き(SoC#1からSoC#0)の処理を行うことができるのはいうまでもない。また、上述したＰＣＩｅのＴＬＰヘッダにおけるST[7:0]，THおよびPH[1:0]の使用は単なる例であり、ヘッダの他のビットフィールド、或いは、各バス仕様における適切なビットフィールドの使用も可能なのはいうまでもない。
【０１１６】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【０１１７】
１    バス制御回路(排他アクセス回路： PCIe Exclusive Access Unit)
１０    セレクタ
１１    第１変換部(Interconnect to PCIe Bus Bridge)
１２    第２変換部(PCIe to Interconnect Bus Bridge)
100    半導体集積回路(ＳｏＣ)
101    メモリ(DDR Memory)
102    ＣＰＵ(コントローラ)
103    内部接続回路(Interconnect)
104    メモリ制御回路(DDR Controller)
105    メモリのインタフェースＩＰマクロ(DDR PHY)
106    リンク制御回路(PCIe Link)
107    ＰＣＩｅのインタフェースＩＰマクロ(PCIeの物理層：PCIe PHY)
108    ＩＰマクロ(ＩＰ)
111    フラッシュ(Flash)メモリコントローラ
112    電子ヒューズ(eFUSE)
113    設定値レジスタ
114    外部メモリ(Flash/eEPROM)
200    ＰＣＩｅバス(ＰＣＩｅ)
300    回路基板
A-1    排他コマンド変換ブロック
A-2    排他応答発行ブロック
B-1    排他コマンド生成ブロック
B-2    排他応答受信ブロック
【図１】
2018042767.tif 000003
【図２】
2018042767.tif 000004
【図３】
2018042767.tif 000005
【図４】
2018042767.tif 000006
【図５】
2018042767.tif 000007
【図６】
2018042767.tif 000008
【図７】
2018042767.tif 000009
【図８】
2018042767.tif 000010
【図９】
2018042767.tif 000011
【図１０】
2018042767.tif 000012
【図１１】
2018042767.tif 000013
【図１２】
2018042767.tif 000014
【図１３】
2018042767.tif 000015
【図１４】
2018042767.tif 000016
【図１５】
2018042767.tif 000017
【図１６】
2018042767.tif 000018
【図１７】
2018042767.tif 000019
【図１８】
2018042767.tif 000020
【図１９】
2018042767.tif 000021
【図２０】
2018042767.tif 000022
【図２１】
2018042767.tif 000023
【図２２】
2018042767.tif 000024
【図２３】
2018042767.tif 000025
【手続補正書】
【提出日】平成31年1月16日(2019.1.16)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス制御回路、半導体集積回路、回路基板、情報処理装置およびバス制御方法に関する。
【背景技術】
【０００２】
近年、サーバ等を始めとする情報処理システムには、例えば、異なるバス仕様が適用された複数の半導体集積回路や回路基板が用いられている。これら異なるバス仕様が適用された半導体集積回路等において、例えば、第１バス仕様の情報を、第１バス仕様とは異なる第２バス仕様の情報に載せ替えるのが困難な場合も存在する。
【０００３】
具体的に、ＡＸＩ（登録商標）(Advanced eXtensible Interface)仕様のＳｏＣ(System on a Chip)において、例えば、ＯＳ(Operating System)での共通リソースの確保やソフトウェア順序を保証するために、ＳｏＣ内でメモリアクセスの排他制御を実装している。
【０００４】
すなわち、複数個のＣＰＵ(Central Processing Unit)を搭載したＳｏＣを用いて１つのＯＳを実行する場合、或いは、異なるＯＳであっても共通リソースを確保する場合など、チップ(半導体集積回路等)を超えて排他制御を実装したいという要望がある。しかしながら、このようなチップを超えて排他制御を行いたい場合であっても、それら異なるバス仕様が適用されたチップ間で予め排他制御の伝搬機能が設けられていないこともある。
【０００５】
ここで、ＡＸＩ（登録商標）は、例えば、ＡＨＢ（登録商標）(Advanced High-performance Bus)およびＡＰＢ（登録商標）(Advanced Peripheral Bus)と共に、オンチップインターコネクト仕様の総称であるＡＭＢＡ（登録商標）(Advanced Microcontroller Bus Architecture)に含まれる。また、ＡＭＢＡ以外の仕様としては、例えば、ＯＣＰ(Open Core Protocol)やＰＩＦ(Processor InterFace)等が知られている。
【０００６】
ところで、従来、例えば、マルチプロセッサシステムにおける排他制御としては、様々な提案がなされている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０６−１１０８４４号公報
【特許文献２】特開平０８−１６１２２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述したように、異なるバス仕様が適用されたチップ間において、予め排他制御の機能が設けられていないことがある。例えば、広く普及しているＰＣＩｅ（登録商標）(Peripheral Component Interconnect Express)仕様を適用した半導体集積回路等と、ＡＸＩ仕様を適用したＳｏＣの間では、排他制御の伝搬機構は、予め準備されていない。
【０００９】
このような、異なるバス仕様が適用された半導体集積回路や回路基板等の間における排他制御の伝搬機能が設けられていないのは、他の様々なバス仕様を適用した半導体集積回路や回路基板等の間においても同様である。
【００１０】
ここで、本発明は、ＰＣＩｅ仕様と、ＡＸＩ仕様の間の排他制御の伝搬に限定されず、様々なバス仕様を適用した半導体集積回路や回路基板等の間の排他制御の伝搬に対しても適用可能なのはいうまでもない。すなわち、本発明は、例えば、ＰＣＩｅの半導体集積回路等と、ＡＸＩ，ＡＨＢおよびＡＰＢといったＡＭＢＡ或いはＯＣＰやＰＩＦの半導体集積回路等の間の排他制御の伝搬に対しても適用可能である。
【課題を解決するための手段】
【００１１】
一実施形態によれば、第１フォーマットを有する、排他アクセスに対応した第１バス仕様の第１排他コマンドと、前記第１バス仕様とは異なり、排他アクセスに対応しない第２バス仕様に適合した第２フォーマットを有する、前記第１バス仕様の第２排他コマンドを相互に変換して、前記第１バス仕様および前記第２バス仕様の間における排他コマンドの伝搬を行うバス制御回路が提供される。前記バス制御回路は、排他コマンド変換回路と、排他コマンド生成回路と、排他応答発行回路と、排他応答受信回路と、を有する。
【００１２】
前記排他コマンド変換回路は、前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第１排他コマンドを受け取り、前記第２排他コマンドに変換して出力し、前記排他コマンド生成回路は、前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドを受け取って前記第１排他コマンドを生成する。
【００１３】
前記排他応答発行回路は、前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を発行し、前記排他応答受信回路は、前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を受け取る。
【発明の効果】
【００１４】
開示のバス制御回路、半導体集積回路、回路基板、情報処理装置およびバス制御方法は、異なる仕様のバス間においても排他アクセスの伝搬を可能とすることができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、本実施形態に係る情報処理装置の一例を示すブロック図である。
【図２】図２は、図１に示す情報処理装置における半導体集積回路にそれぞれ設けられたバス制御回路の一例を示すブロック図である。
【図３】図３は、図１に示す情報処理装置におけるＰＣＩｅのパケットのＴＬＰヘッダを使用して排他コマンドを送信する例を説明するための図である。
【図４】図４は、ＡＸＩの基本構成を説明するための図(その１)である。
【図５】図５は、ＡＸＩの基本構成を説明するための図(その２)である。
【図６】図６は、ＡＸＩにおける信号の例を説明するための図である。
【図７】図７は、ＡＸＩにおける排他アクセスの一例を説明するための図である。
【図８】図８は、ＡＸＩにおいて使用される応答を説明するための図である。
【図９】図９は、ＡＸＩにおける排他アクセスの動作を説明するための図である。
【図１０】図１０は、図１に示す情報処理装置におけるリードアクセス動作の一例を説明するための図である。
【図１１】図１１は、図１０に示す情報処理装置における排他リードアクセス動作の一例を説明するための図である。
【図１２】図１２は、図１に示す情報処理装置におけるライトアクセス動作の一例を説明するための図である。
【図１３】図１３は、図１２に示す情報処理装置における排他ライトアクセス動作の一例を説明するための図である。
【図１４】図１４は、図１０および図１１に示す情報処理装置における排他リードアクセス動作の他の例を説明するための図である。
【図１５】図１５は、本実施形態に係る情報処理装置の他の例を示すブロック図である。
【図１６】図１６は、図２に示すバス制御回路におけるリードチャネルの排他コマンド変換ブロックの一例を説明するための図である。
【図１７】図１７は、図２に示すバス制御回路におけるライトチャネルの排他コマンド変換ブロックの一例を説明するための図である。
【図１８】図１８は、図２に示すバス制御回路における排他応答受信ブロックの一例を説明するための図である。
【図１９】図１９は、図２に示すバス制御回路におけるリードチャネルの排他コマンド生成ブロックの一例を説明するための図である。
【図２０】図２０は、図２に示すバス制御回路におけるライトチャネルの排他コマンド生成ブロックの一例を説明するための図である。
【図２１】図２１は、図２に示すバス制御回路におけるライトチャネルの排他応答発行ブロックの一例を説明するための図である。
【図２２】図２２は、図１および図２を参照して説明した情報処理装置におけるＳＴビット[7:0]を含むヘッダ情報の生成/復元方法を説明するための図(その１)である。
【図２３】図２３は、図１および図２を参照して説明した情報処理装置におけるＳＴビット[7:0]を含むヘッダ情報の生成/復元方法を説明するための図(その２)である。
【発明を実施するための形態】
【００１６】
以下、本実施形態に係るバス制御回路、半導体集積回路、回路基板、情報処理装置およびバス制御方法の実施例を、添付図面を参照して詳述する。図１は、本実施形態に係る情報処理装置の一例を示すブロック図である。図１において、参照符号100はＳｏＣ(半導体集積回路)を示し、200はＰＣＩｅ（登録商標）バスを示す。
【００１７】
図１では、一例として、ＡＸＩ（登録商標）仕様の２つのＳｏＣ(SoC#0，SoC#1)100がＰＣＩｅバス(ＰＣＩｅ)200で繋がれているが、ＳｏＣ100の数は、２つに限定されず、また、ＳｏＣ100の仕様は、ＡＸＩに限定されない。さらに、複数のＳｏＣ100を繋ぐバスも、ＰＣＩｅ200に限定されるものではない。
【００１８】
なお、ＳｏＣ100は、１つの半導体集積回路(チップ)として形成することもできるか、複数のチップとして形成することもできる。また、図１において、回路基板300は、ＳｏＣ100(コントローラ)およびメモリ101により形成され、複数の回路基板300により情報処理装置(例えば、サーバ装置)を形成しているが、本実施形態は、様々な構成に対して幅広く適用することが可能である。
【００１９】
図１に示されるように、各回路基板300は、ＳｏＣ100およびメモリ(例えば、ＤＤＲ(Double-Data-Rate) Memory)101を含む。なお、回路基板300は、他の様々なチップ(半導体集積回路)を含んでもよい。ＳｏＣ100は、バス制御回路(排他アクセス回路)１，ＣＰＵ102，内部接続回路(Interconnect)103、メモリ接続回路(104，105)、外部接続回路(106，107)および様々なＩＰ(ＩＰ(Intellectual Property)コア，ＩＰマクロ)108を含む。
【００２０】
メモリ接続回路は、例えば、メモリ(DDR Memory)101との接続を制御するメモリ制御回路(DDR Controller)104、および、メモリ101のインタフェースＩＰマクロ(DDR PHY)105を含む。外部接続回路は、例えば、ＰＣＩｅ200を介して他のＳｏＣ100(回路基板300)との接続(リンク)を制御するリンク制御回路(PCIe Link)106、および、ＰＣＩｅ200のインタフェースＩＰマクロ(PCIeの物理層：PCIe PHY)107を含む。
【００２１】
内部接続回路103は、例えば、ＡＸＩ仕様に基づいて、ＣＰＵ102と、メモリ制御回路(DDR Controller)104，バス制御回路１およびＩＰマクロ108の間で信号(データおよびコマンド)の受け渡しを行う。なお、ＣＰＵ102，メモリ制御回路104およびＩＰマクロ108等は、ＡＸＩ仕様(内部バス仕様)の内部回路を形成する。ここで、バス制御回路１は、内部接続回路103によるＡＸＩ仕様の信号を受け取って変換し、外部接続回路(リンク制御回路106およびPCIeの物理層107)を介してＰＣＩｅ(外部バス)200に出力する。また、バス制御回路１は、ＰＣＩｅ200から外部接続回路(106，107)を介して入力された信号を変換し、ＡＸＩ仕様の内部接続回路103(ＣＰＵ102，メモリ制御回路104およびＩＰマクロ108等)に出力する。
【００２２】
バス制御回路１は、排他コマンド変換ブロックA-1、排他応答発行ブロックA-2、排他コマンド生成ブロックB-1、および、排他応答受信ブロックB-2を含み、それぞれのＳｏＣ100に設けられている。
【００２３】
ここで、一方のSoC#0からＰＣＩｅ200を介して他方のSoC#1に排他コマンドを出力するとき(SoC#0からSoC#1への排他アクセス発行時)、それぞれのＳｏＣ100におけるブロックA-1，A-2，B-1，B-2は次のように動作する。一方のSoC#0では、A-1およびB-2がオン(活性化)してA-2およびB-1がオフ(不活性化)し、他方のSoC#1では、A-1およびB-2がオフしてA-2およびB-1がオンする。
【００２４】
なお、排他アクセスとは、例えば、SoC#0とSoC#1があるリソース(メモリ等)を共有する場合に、SoC#0がその共有リソースの特定部分(メモリの特定アドレス等)にアクセスしている間は、SoC#1がその共有リソースの特定部分にアクセスできないようにすることで、その共有リソースの整合性を保持するようにした排他制御を含むアクセスのことである。また、排他コマンドとは、その排他アクセスを要求するコマンドのことであり、例えば、排他リードコマンドと排他ライトコマンドを含む。
【００２５】
一方、通常アクセスとは、例えば、上記排他制御を含まないアクセスである。また、通常コマンドとは、その通常アクセスを要求するコマンドのことであり、例えば、通常リードコマンドと通常ライトコマンドを含む。
【００２６】
図２は、図１に示す情報処理装置における半導体集積回路にそれぞれ設けられたバス制御回路の一例を示すブロック図である。図２に示されるように、各半導体集積回路(SoC#0，SoC#1)100において、バス制御回路(PCIe Exclusive Access Unit)１は、内部接続回路103から、ＰＣＩｅ200に接続された外部接続回路106，107に信号を変換する第１変換部(Interconnect to PCIe Bus Bridge)１１を含む。さらに、バス制御回路１は、ＰＣＩｅ200に接続された外部接続回路106，107から、内部接続回路103に信号を変換する第２変換部(PCIe to Interconnect Bus Bridge)１２を含む。
【００２７】
第１変換部１１は、内部接続回路103からの排他コマンドを受け取って変換し、ＰＣＩｅ200に接続された外部接続回路106，107に出力するもので、コマンド変換ブロックA-1、排他応答発行ブロックA-2、および、セレクタ１０を含む。
【００２８】
ここで、コマンド変換ブロックA-1は、例えば、内部接続回路103から、半導体集積回路100内部の排他制御に適合したフォーマットを有するＡＸＩ仕様の排他コマンドを受け取り、ＰＣＩｅ仕様に適合した別フォーマットを有するＡＸＩ仕様の排他コマンドに変換して外部接続回路106，107に出力する回路である。
【００２９】
また、排他応答発行ブロックA-2は、例えば、排他コマンド生成ブロックB-1から、内部接続回路103からのＡＸＩ仕様の排他コマンドに含まれる排他応答情報を受け取り、ＰＣＩｅ仕様に適合した排他応答情報を外部接続回路106，107に発行する回路である。なお、セレクタ１０は、コマンド変換ブロックA-1または排他応答発行ブロックA-2の出力を選択して、ＰＣＩｅ200に出力する回路である。
【００３０】
第２変換部１２は、ＰＣＩｅ200からの排他コマンドを受け取って変換し、内部接続回路103に出力するもので、排他コマンド生成ブロックB-1および排他応答受信ブロックB-2を含む。
【００３１】
ここで、排他コマンド生成ブロックB-1は、例えば、ＰＣＩｅ200に接続された外部接続回路106，107から、ＰＣＩｅ仕様に適合したフォーマットを有するＡＸＩ仕様の排他コマンドを受け取り、半導体集積回路100内部の排他制御に適合した別フォーマットを有するＡＸＩ仕様の排他コマンドを生成して内部接続回路103に出力する回路である。また、排他応答受信ブロックB-2は、外部接続回路106，107から、ＰＣＩｅ200に発行された排他コマンドに対する排他応答情報を受け取り、A-1に出力する回路である。
【００３２】
次に、図３〜図９を参照して、本実施形態において排他アクセスを変換する異なる２種類のバス仕様として、ＰＣＩｅ（登録商標）およびＡＸＩ（登録商標）を適用する場合の例を説明し、その後、図１０〜図２３を参照して、本実施形態を詳述する。
【００３３】
図３は、図１に示す情報処理装置におけるＰＣＩｅのパケットのＴＬＰヘッダを使用して排他コマンドを送信する例を説明するための図であり、ＡＸＩのMisc信号を入力する場合を説明するためのものである。ここで、Misc信号は、例えば、ＡＸＩにおいてユーザが定義することが可能なユーザ信号であり、種々の(miscellaneous)情報を伝播するために使用可能な信号である。なお、図３は、ＰＣＩｅのパケットのＴＬＰ(Transaction Layer Packet)ヘッダにおけるメモリ書き込み要求ヘッダ(Memory Write Request Header)、並びに、メモリ読み出しおよびアトミック操作要求ヘッダ(Memory Read and AtomicOp Request Headers)を示している。
【００３４】
図１を参照して説明したように、例えば、一方のSoC#0から他方のSoC#1への排他アクセス発行時には、SoC#0では、ブロックA-1およびB-2がオンし、SoC#1では、A-2およびB-1がオンする。ここで、ＰＣＩｅのＴＬＰヘッダは、図３に示されるような構成を有し、例えば、ユーザに開放されているＴＨ(TLP Processing Hint present)ビット，ＳＴ[7:0]フィールドおよびＰＨ(Processing Hint)ビットを使用して排他アクセスの変換を行う。なお、本明細書では、例えば、ＡＸＩにおける排他コマンドを組み込むＰＣＩｅのビットフィールドとして、ＴＬＰヘッダを使用した例を説明するが、これは、単なる例であり、ＰＣＩｅ仕様における様々なビットフィールドを使用することができる。
【００３５】
すなわち、SoC#0では、ＰＣＩｅのＴＬＰヘッダにおけるＴＨビット，ＳＴ[7:0]フィールドおよびＰＨビットを、ＡＸＩのMisc信号のＰＣＩｅへの入力として扱うようになっている。SoC#0の外部接続回路106，107は、ＡＸＩのMisc信号のビット情報に基づいて、ＰＣＩｅのＴＬＰヘッダにおけるＴＨビット，ＳＴ[7:0]フィールドおよびＰＨビットを生成する。Misc信号は例えば、後述するＡＸＩのARUSER[x:0]とAWUSER[x:0]を含む。
【００３６】
また、SoC#1では、ＰＣＩｅのＴＬＰヘッダにおけるＴＨビット，ＳＴ[7:0]フィールドおよびＰＨビットのＡＸＩへの入力として、ＡＸＩのMisc信号を扱うようになっている。ここで、SoC#1の外部接続回路106，107は、ＰＣＩｅのＴＬＰヘッダにおけるＴＨビット，ＳＴ[7:0]フィールドおよびＰＨビットのビット情報に基づいて、ＡＸＩのMisc信号を生成する。Misc信号は例えば、後述するＡＸＩのARUSER[x:0]とAWUSER[x:0]を含む。
【００３７】
なお、Misc信号入力として扱うビットは、ＰＣＩｅのＴＬＰヘッダにおけるＴＨビット，ＳＴ[7:0]フィールドおよびＰＨビットに限定されるものではなく、ユーザに開放されている他のビットを使用してもよい。さらに、排他アクセスの変換に使用するビットは、ＴＬＰヘッダにおけるものに限定されないのはもちろんである。
【００３８】
図４および図５は、ＡＸＩの基本構成を説明するための図である。図４(a)に示されるように、ＡＸＩは、読み出し用のリードアドレス(AR)チャネル"Read address channel"およびリードデータ(R)チャネル"Read data channel"を含む。さらに、ＡＸＩは、書き込み用のライトアドレス(AW)チャネル"Write address channel"，ライトデータ(W)チャネル"Write data channel"およびライト応答(B)チャネル"Write response channel"を含む。すなわち、ＡＸＩは、５つのチャネルを含んでいる。
【００３９】
図４(b)は、ＡＸＩにおける読み出し動作を説明するためのものであり、図４(c)は、ＡＸＩにおける書き込み動作を説明するためのものである。なお、図４(b)および図４(c)において、例えば、"AXI Master"としては、図１のSoC#0におけるＣＰＵ102を想定し、"AXI Slave"としては、図１のSoC#1におけるメモリ(DDR Memory)101を想定する。
【００４０】
また、"AXI Master"と"AXI Slave"の間には、SoC#0における内部接続回路103，バス制御回路１および外部接続回路106，107、ＰＣＩｅ200、並びに、SoC#1における外部接続回路106，107および内部接続回路103等が介在する。
【００４１】
図４(b)に示されるように、"AXI Master"から"AXI Slave"(ＳｏＣ#１におけるメモリ101)のデータを読み出す場合、図４(a)に示すＡＲおよびＲを使用する。また、図４(c)に示されるように、"AXI Master"から"AXI Slave"にデータを書き込む場合、図４(a)に示すＡＷ，ＷおよびＢを使用する。
【００４２】
図５に示されるように、トランザクションの動作として、各チャネルは、バリッド(VALID)／レディ(READY)／伝送する情報(Information)の信号を含み、VALID／READYのハンドシェークで情報を受け渡す。ここで、ＣＬＫは、クロックを示す。
【００４３】
まず、送信側は、情報とその情報が有効であることを示すVALID信号をアサートし(図５のＴ１)、受信側は、その有効な情報を受け取れることを示すためにREADYをアサートする。例えば、VALIDおよびREADYが共に高レベル『Ｈ』である時のクロックエッジでハンドシェーク成立する。なお、送信側は、図５のＴ２まで、InformationとVALIDを保持する。このようにして、情報の受け渡しが完了する。
【００４４】
図６は、ＡＸＩにおける信号の例を説明するための図である。本実施形態では、例えば、太枠で囲った信号ARLOCK[1:0]，ARUSER[x:0]，RRESP[1:0]，AWLOCK[1:0]，AWUSER[x:0]およびBRESP[1:0]を使用する。ここで、ARLOCK[1:0]は、アトミックアクセスを示し、通常／排他／ロックアクセスを指定する信号(AXI3(AXIのバージョン３)のみ)であり、ARUSER[x:0]は、ユーザ信号であり、ユーザが定義することが可能な信号であって、上述したMisc信号の１つである。また、RRESP[1:0]は、読み出し応答(リード応答)を示し、リード転送の結果ステータスを示す信号である。なお、[x:0]は任意のビット幅であることを表す。
【００４５】
さらに、AWLOCK[1:0]は、アトミックアクセスを示し、通常／排他／ロックアクセス(AXI3のみ)を指定する信号であり、AWUSER[x:0]は、ユーザ信号であり、ユーザが定義することが可能な信号であって、上述したMisc信号の１つである。また、BRESP[1:0]は、書き込み応答(ライト応答)を示し、ライト転送の結果ステータスを示す信号である。
【００４６】
図７は、ＡＸＩにおける排他アクセスの一例を説明するための図である。図７(a)に示されるように、２ビットの信号AxLOCK[1:0]の値『00』，『01』，『10』および『11』は、それぞれ『通常アクセス』，『排他アクセス』，『ロックアクセス』および『予約済み(Reserved)』を示す。なお、AxLOCK[1:0]は、ARLOCK[1:0]およびAWLOCK[1:0]の両方を示す。また、AxLOCK[1:0]の値『10』は、AXI4(AXIのバージョン４)では削除されている。
【００４７】
図７(b)は、マスタ０(Master 0：例えば、SoC#0のCPU102)によるスレーブ０(Slave 0：例えば、SoC#0のメモリ101)のアクセスと、マスタ１(Master 1：例えば、SoC#1のCPU102)によるスレーブ０のアクセスが競合する場合を示す。なお、スレーブ１(Slave 1)は、例えば、SoC#1のメモリ101が対応する。
【００４８】
図７(b)に示されるように、排他アクセスは、例えば、マスタ０およびマスタ１による特定のアドレス(SoC#0のメモリ101)へのアクセスが競合する場合に、例えば、セマフォ型の処理により実現することが可能である。ここで、排他アクセスの実現には、スレーブ０(SoC#0のメモリ101)に対して、排他アクセスモニタを設けることが求められる。ここで、図７(b)に示すSlave 0の排他アクセスモニタは、Slave 0をアクセスするアドレスを監視し、例えば、Master 0からSlave 0への排他アクセス中に、Master 1がSlave 0の別のアドレスにはアクセス可能とすることができる。
【００４９】
図８は、ＡＸＩにおいて使用される応答を説明するための図である。図８に示されるように、例えば、ＡＸＩで使用されるレスポンス(応答)は、２ビットのRRESP[1:0]およびBRESP[1:0]の値『00』，『01』，『10』および『11』に対して、"OKAY"，"EXOKAY"，"SLVERR"および"DECERR"の４種類ある。
【００５０】
ここで、"OKAY"は、通常アクセス成功もしくは排他アクセス失敗を示し、"EXOKAY"は、排他読み出し、または、排他書き込みのいずれかが成功したことを示し、そして、"SLVERR"は、スレーブエラーを示し、スレーブからマスタへのエラー通知である。また、"DECERR"は、デコードエラーを示し、アクセス先のアドレスにスレーブが存在しないことを示し、通常、インターコネクトが生成する。
【００５１】
すなわち、ライト(書き込み)の場合、バースト全体に対して、１つの応答を返し、また、リード(読み出し)の場合、バースト内のデータ転送ごとに応答を返すようになっている。ここで、データ転送ごとに異なる応答を返すことが可能であり、また、途中でエラーが発生しても、要求された回数の転送をすることが求められる。
【００５２】
図９は、ＡＸＩにおける排他アクセスの動作を説明するための図である。ここで、排他アクセスの動作において、基本は、セマフォアクセス(リード・モディファイ・ライト)である。
【００５３】
図９(a)に示されるように、マスタが排他リードを実施(ARLOCK[0:1]＝『01』)すると、排他モニタは、アドレスとＩＤを保存し、スレーブは"EXOKAY"で、リードデータを返す。なお、排他アクセスに対応しないスレーブは、"OKAY"を返すことで、マスタに非対応であることを通達することができる。
【００５４】
図９(b)に示されるように、マスタがデータのモディファイ(modify)を実施すると、この間、排他モニタは、セマフォ領域が他のマスタによって書き換えられないかを監視する。なお、排他モニタは、他のマスタ(ＩＤ)からの書き込みや、他のアドレスへの排他リードが発生しない限り監視を続行する。
【００５５】
図９(c)に示されるように、マスタが更新後のデータを排他ライト(AWLOCK[0:1]＝『01』)すると、排他モニタは、同じアドレスを監視中であれば、排他性が保証されるため、ライトを実施し、"EXOKAY"を返す。また、排他モニタは、そのアドレスを監視中でなければ、排他性が保証されないため、ライト動作は行わずに"OKAY"を返すことになる。
【００５６】
ところで、ＰＣＩｅには、排他制御の機能が設けられていないため、例えば、ＡＸＩが適用された２つのSoC#0とSoC#1をＰＣＩeにより接続したシステム(情報処理装置)では、適切な排他制御を行うことが難しい。
【００５７】
図１０は、図１に示す情報処理装置におけるリードアクセス動作の一例を説明するための図である。図１１は、図１０に示す情報処理装置における排他リードアクセス動作の一例を説明するための図であり、排他リードアクセス動作におけるＡＸＩコマンドの変換を説明するためのものである。
【００５８】
図１０および図１１において、SoC#0およびSoC#1の内部でコマンドや各種情報の受け渡しに使用されるバスはＡＸＩであり、排他リードアクセスに対応している一方、SoC#0とSoC#1の間でコマンドや各種情報の受け渡しに使用されるバスはＰＣＩｅであり、排他リードアクセスに対応していない。なお、図１１において、『xxxx』はリードデータを示し、『yy』は排他応答を示す。また、Misc信号としては、ARUSER[x:0]を使用(例えば、排他アクセス＝『1』)する。
【００５９】
図１０および図１１に示されるように、まず、SoC#0のＣＰＵ102(CPU#0)から排他リードアクセス(排他リードコマンド)を発行し(処理Ｓ１)、排他コマンド変換ブロックA-1により排他リードコマンドを保持する(処理Ｓ２：AR ARLOCK＝『01』)。次に、A-1により、ＡＸＩのMisc信号に排他リード情報をセットする(処理Ｓ３：AR ARUSER＝『1』)。さらに、A-1から、例えば、SoC#0の外部接続回路(リンク制御回路106およびPCIe PHY107:PCIe#0)に対して、通常リードコマンド(Misc信号付き)を発行する(処理Ｓ４：AR ARLOCK＝『00』，ARUSER＝『1』)。
【００６０】
そして、PCIe#0(SoC#0の外部接続回路)からPCIe#1(SoC#1の外部接続回路)に、ヘッダ情報に排他制御情報を含むリードコマンドを発行し(処理Ｓ５)、PCIe#1から排他コマンド生成ブロックB-1に通常リードコマンド(Misc信号付き)を発行する(処理Ｓ６：AR ARLOCK＝『00』，ARUSER＝『1』)。また、B-1により通常リードコマンド(Misc信号付き)を保持し(処理Ｓ７)、Misc信号の排他リード情報から排他リードコマンドを生成する(処理Ｓ８)。
【００６１】
次に、B-1からSoC#1のメモリ101(DDR#1)に排他リードコマンドを発行し(処理Ｓ９：AR ARLOCK＝『01』)、DDR#1が排他リード応答を発行し(処理Ｓ１０)、そして、B-1により排他リード応答を保持する(処理Ｓ１１：R RDATA＝『xxxx』，RRESP＝『yy』)。
【００６２】
さらに、B-1から、通常リードコマンドの応答としてリードデータ(Read Data)をPCIe#1に出力し(処理Ｓ１２：R RDATA＝『xxxx』，RRESP＝『00』)、B-1から、保持された排他リード応答に基づいて、排他リード応答であることを示す識別情報(排他リード応答情報)を排他応答発行ブロックA-2に発行する(処理Ｓ１３：R RRESP＝『yy』)。また、A-2により、排他リード応答情報をライトデータ(Write Data)とする通常ライトコマンドをPCIe#1に発行し、PCIe#1 は、通常ライトコマンドを受け取り、A-2に通常ライトの成功を示す応答を発行する(処理Ｓ１４：AW AWLOCK＝『00』，W WDATA＝『yy』，B BRESP＝『00』)。
【００６３】
そして、PCIe#1からPCIe#0にリードデータ(Read Data)／ライトデータ(Write Data)を転送し(処理Ｓ１５)、PCIe#0からA-1に通常リードコマンドに対するリードデータを転送する(処理Ｓ１６：R RDATA＝『xxxx』，RRESP＝『00』)。また、PCIe#0から排他応答受信ブロックB-2に排他リード応答情報をライトデータとする通常ライトコマンドを発行し、B-2は通常ライトコマンドを受け取り、通常ライトの成功を示す応答をPCIe#0に発行する(処理Ｓ１７：AW AWLOCK＝『00』，W WDATA＝『yy』，B BRESP＝『00』)。さらに、B-2からA-1に排他リード応答情報を転送し(処理Ｓ１８：W WDATA＝『yy』)、A-1によりリードデータ／排他リード応答情報をマージし、排他リード応答をCPU#0に転送する(処理Ｓ１９：R RDATA＝『xxxx』，RRESP＝『yy』)。
【００６４】
以上のようにして、例えば、排他リード機能が用意されていないＰＣＩｅを介して接続された、２つの排他リード機能を有するＡＸＩ仕様の半導体集積回路(ＳｏＣ)間における排他リード処理を実現することが可能になる。すなわち、異なる仕様のバス間においても排他アクセスの伝搬を可能とすることができる。
【００６５】
図１２は、図１に示す情報処理装置におけるライトアクセス動作の一例を説明するための図である。図１３は、図１２に示す情報処理装置における排他ライトアクセス動作の一例を説明するための図であり、排他ライトアクセス動作におけるＡＸＩコマンドの変換を説明するためのものである。
【００６６】
図１２および図１３において、SoC#0およびSoC#1の内部でコマンドや各種情報の受け渡しに使用されるバスはＡＸＩであり、排他ライトアクセスに対応している一方、SoC#0とSoC#1の間でコマンドや各種情報の受け渡しに使用されるバスはＰＣＩｅであり、排他ライトアクセスに対応していない。なお、図１３において、『xx』はライトデータを示し、『yy』は排他応答を示す。また、Misc信号としては、AWUSER[x:0]を使用(例えば、排他アクセス＝『1』)する。
【００６７】
図１２および図１３に示されるように、まず、CPU#0(SoC#0のＣＰＵ102)から排他ライトアクセス(排他ライトコマンド)を発行し(処理Ｓ２１)、排他コマンド変換ブロックA-1により排他ライトコマンドを保持する(処理Ｓ２２：AW AWLOCK＝『01』，W WDATA＝『xx』)。次に、A-1により、ＡＸＩのMisc信号に排他ライト情報をセットする(処理Ｓ２３)。さらに、A-1から、例えば、PCIe#0(SoC#0の外部接続回路106，107)に対して、通常ライトコマンド(Misc信号付き)を発行する(処理Ｓ２４：AW AWLOCK＝『00』，AWUSER＝『1』，W WDATA＝『xx』)。
【００６８】
そして、PCIe#0からPCIe#1にヘッダ情報に排他制御情報を含むライトコマンドを発行し(処理Ｓ２５)、PCIe#1から排他コマンド生成ブロックB-1に通常ライトコマンド(Misc信号付き)を発行し、B-1は通常ライトコマンド(Misc信号付き)を受け取り、PCIe#1に受け取り成功を示す応答を発行する(処理Ｓ２６：AW AWLOCK＝『00』，AWUSER＝『1』，W WDATA＝『xx』，B BRESP＝『00』)。また、B-1により通常ライトコマンド(Misc信号付き)を保持し(処理Ｓ２７)、Misc信号の排他ライト情報から排他ライトコマンドを生成する(処理Ｓ２８)。
【００６９】
次に、B-1からDDR#1(SoC#1のメモリ101)に排他ライトコマンドを発行し(処理Ｓ２９：AW AWLOCK＝『01』，W WDATA＝『xx』)、DDR#1が排他ライト応答を発行し(処理Ｓ３０)、そして、B-1により排他ライト応答を保持する(処理Ｓ３１：B BRESP『yy』)。
【００７０】
さらに、B-1から、保持された排他ライト応答に基づいて、排他ライト応答であることを示す識別情報(排他ライト応答情報)を排他応答発行ブロックA-2に発行し(処理Ｓ３２：B BRESP『yy』)、A-2により、排他ライト応答情報をライトデータ(Write Data)とする通常ライトコマンドをPCIe#1に発行し、PCIe#1通常ライドコマンドを受け取り、A-2に通常ライトの成功を示す応答を発行する(処理Ｓ３３： AW AWLOCK＝『00』，W WDATA＝『yy』，B BRESP＝『00』)。
【００７１】
また、PCIe#1からPCIe#0にライトデータを転送し(処理Ｓ３４)、PCIe#0から排他応答受信ブロックB-2に排他ライト応答情報をライトデータとする通常ライトコマンドを発行し、B-2は通常ライトコマンドを受け取り、PCIe#0に通常ライトの成功を示す応答を発行する(処理Ｓ３５： AW AWLOCK＝『00』，W WDATA＝『yy』，B BRESP＝『00』)。そして、B-2からA-1に排他ライト応答情報を転送し(処理Ｓ３６)、A-1により排他ライト応答をCPU#0に転送する(処理Ｓ３７：B BRESP＝『yy』)。
【００７２】
以上のようにして、例えば、排他ライト機能が用意されていないＰＣＩｅを介して接続された、２つの排他ライト機能を有するＡＸＩ仕様の半導体集積回路(ＳｏＣ)間における排他ライト処理を実現することが可能になる。すなわち、異なる仕様のバス間においても排他アクセスの伝搬を可能とすることができる。
【００７３】
図１４は、図１０および図１１に示す情報処理装置における排他リードアクセス動作の他の例を説明するための図であり、ＡＸＩのMisc信号を使わずに排他リードアクセス動作を行う例を説明するためのものである。
【００７４】
図１４と、前述した図１１の比較から明らかなように、Misc信号を使わずに排他リードアクセス動作を行う本変形例では、図１１に示す処理Ｓ１〜Ｓ１９に加えて、さらなる処理Ｓ４'およびＳ６'が設けられている。
【００７５】
すなわち、排他コマンド変換ブロックA-1からPCIe#0に対して、通常リードを発行する処理Ｓ４(AR ARLOCK＝『00』，ARUSER＝『1』)と共に、処理Ｓ４'を行う。処理Ｓ４'では、A-1からPCIe#0に対して、例えば、AW AWLOCK＝『00』，W WDATA＝『1』とすることにより、排他リード情報をＡＸＩの通常ライトコマンドとして発行する。そして、PCIe#0は、通常ライトコマンドを受け取り、A-1に受け取り成功を示す応答を発行する。
【００７６】
さらに、PCIe#1から排他コマンド生成ブロックB-1に通常リードを発行する処理Ｓ６(AR ARLOCK＝『00』，ARUSER＝『1』)と共に、処理Ｓ６'を行う。処理Ｓ６'では、PCIe#1からB-1に対して、例えば、AW AWLOCK＝『00』，W WDATA＝『1』とすることにより、排他リード情報をＡＸＩの通常ライトコマンドとして発行し、B-1は、通常ライトコマンドを受け取り、PCI#1に受け取り成功を示す応答を発行する。
【００７７】
そして、B-1は、通常リードコマンド(処理Ｓ６)と排他リード情報の通常ライトコマンド(処理Ｓ６')から、ＡＸＩの排他リードコマンドを生成する。同様に、排他ライトアクセス動作もMisc信号を使用することなく実現することが可能である。このように、ＰＣＩｅのMisc信号を使用せずに排他アクセス処理を実現することができる。
【００７８】
図１５は、本実施形態に係る情報処理装置の他の例を示すブロック図であり、ＡＸＩ仕様の３つのＳｏＣ(SoC#0，SoC#1，SoC#2)100がＰＣＩｅ200で繋がれた情報処理装置の例を示すものである。すなわち、図１５と、前述した図１の比較から明らかなように、図１５に示す情報処理装置は、図１に示す情報処理装置に対して、SoC#2を追加したものに対応する。
【００７９】
ここで、SoC#2およびメモリ101による回路基板300は、例えば、マザーボードに相当し、このマザーボード(SoC#2)のソケットに対して、２つの回路基板300(SoC#0，SoC#1)を差し込んだものに相当する。このとき、SoC#0〜SoC#2には、それぞれのＳｏＣ(半導体集積回路)を識別するための番号(ＳｏＣ番号)、或いは、SoC#0〜SoC#1には、ＳｏＣ100が搭載された回路基板300を識別するためのポート番号(マザーボード(SoC#2)のソケットに相当する番号)が割り当てられる。
【００８０】
なお、図１５は、例えば、SoC#0のＣＰＵ102が、SoC#1に接続されたメモリ101をアクセスする場合を想定したもので、SoC#0のバス制御回路１におけるブロックA-1およびB-2と、SoC#1のバス制御回路１におけるブロックA-2およびB-1が活性化(オン)されている。また、SoC#2には、２組の外部接続回路(106，107)およびバス制御回路１が設けられているが、SoC#0とSoC#1間のアクセス時には、それぞれのバス制御回路１におけるA-1，A-2，B-1，B-2は全て不活性化(オフ)されている。さらに、ＳｏＣ100(回路基板300)の数は、２個または３個に限定されるものではなく、さらに多数のＳｏＣ(回路基板)が接続されてもよいのは、前述した通りである。
【００８１】
図１６は、図２に示すバス制御回路(排他アクセス回路)におけるリードチャネルの排他コマンド変換ブロックの一例を説明するための図である。図１６に示されるように、排他コマンド変換ブロックA-1は、図１０および図１１を参照して説明したリードアクセス動作時に、リードアドレス(AR)チャネルの変換処理を行うブロックA-11およびリードデータ(R)チャネルの変換処理を行うブロックA-12を含む。
【００８２】
ブロックA-11は、図１０および図１１における処理Ｓ１により、CPU#0(内部接続回路103)からS_A1_ARLOCKおよびS_A1_ARADDRを受け取り、D_A1_ARLOCK，D_A1_ARID[x]およびD_A1_ARUSER[0]に変換してPCIe#0に出力する(処理Ｓ４)。なお、以下に詳述するように、S_A1_ARLOCKおよびS_A1_ARADDRは、D_A1_ARLOCKおよびD_A1_ARADDRとして使用する。
【００８３】
すなわち、A-11は、S_A1_ARLOCK＝『01』(排他アクセス)のとき、D_A1_ARLOCK＝『00』(通常アクセス)、D_A1_ARID[x]＝『1』(Rチャネルでの排他コマンド識別用に、xビットのARID[x-1:0]に付加)、および、D_A1_ARUSER[0]＝『1』(排他コマンド情報)をPCIe#0に出力する。また、A-11は、S_A1_ARLOCK＝『01』のとき、D_A1_ARADDRの値を、B2_ARADDR(コマンド識別用)として、排他応答受信ブロックB-2に転送する。
【００８４】
さらに、A-11は、S_A1_ARLOCK＝『01』ではないとき、S_A1_ARLOCKおよびS_A1_ARADDRを受け取り、D_A1_ARLOCK＝S_A1_ARLOCK、D_A1_ARID[x]＝『0』、および、D_A1_ARUSER[0]＝『0』に変換してPCIe#0に出力する。
【００８５】
ブロックA-12は、図１０および図１１における処理Ｓ１６により、PCIe#0からS_A1_RID[x]およびS_A1_RRESPを受け取り、D_A1_RRESPに変換して内部接続回路103(CPU#0)に出力する(処理Ｓ１９)。すなわち、A-12は、S_A1_RID[x]＝『1』のとき、D_A1_RRESP＝B2_RRESP(排他応答値)をCPU#0に出力する。また、A-12は、S_A1_RID[x]＝『0』のとき、D_A1_RRESP＝S_A1_RRESPをCPU#0に出力する。なお、B-2は、A-12に対して、B2_RRESPを出力する。
【００８６】
図１７は、図２に示すバス制御回路におけるライトチャネルの排他コマンド変換ブロックの一例を説明するための図である。図１７に示されるように、排他コマンド変換ブロックA-1は、図１２および図１３を参照して説明したライトアクセス動作時に、ライトアドレス(AW)チャネルの変換処理を行うブロックA-13，ライトデータ(W)チャネルの変換処理を行うブロックA-14およびライト応答(B)チャネルの変換処理を行うブロックA-15を含む。
【００８７】
ブロックA-13は、図１２および図１３における処理Ｓ２１により、CPU#0からS_A1_AWLOCKおよびS_A1_AWADDRを受け取り、D_A1_AWLOCK，D_A1_AWID[x]およびD_A1_AWUSER[0]に変換してセレクタ１０(PCIe#0)に出力する(処理Ｓ２２〜Ｓ２４)。ここで、以下に詳述するように、S_A1_AWLOCKおよびS_A1_AWADDRは、D_A1_AWLOCKおよびD_A1_AWADDRとして使用する。
【００８８】
すなわち、A-13は、S_A1_AWLOCK＝『01』(排他アクセス)のとき、D_A1_AWLOCK＝『00』(通常アクセス)、D_A1_AWID[x]＝『1』(Bチャネルでの排他コマンド識別用に、xビットのAWID[x-1:0]に付加)、および、D_A1_AWUSER[0]＝『1』(排他コマンド情報)をセレクタ１０に出力する。また、A-13は、S_A1_AWLOCK＝『01』のとき、D_A1_AWADDRの値を、B2_AWADDR(コマンド識別用)として、排他応答受信ブロックB-2に転送する。
【００８９】
さらに、A-13は、S_A1_AWLOCK＝『01』ではないとき、S_A1_AWLOCKおよびS_A1_AWADDRを受け取り、D_A1_AWLOCK＝S_A1_AWLOCK、D_A1_AWID[x]＝『0』、および、D_A1_AWUSER[0]＝『0』に変換してセレクタ１０に出力する。ここで、排他アクセスか否かを示すS_A1_AWLOCKは、２ビットのデータ(『01』)とされているが、１ビットのデータ(『0』または『1』)であってもよい。
【００９０】
ブロックA-14は、図１２および図１３における処理Ｓ２１により、CPU#0からS_A1_AWLOCKを受け取り、D_A1_WID[x]に変換してセレクタ１０(PCIe#0)に出力する(処理Ｓ２２〜Ｓ２４)。すなわち、A-14は、S_A1_AWLOCK＝『01』(排他アクセス)のとき、D_A1_WID[x]＝『1』(AWチャネルと合わせるため)とし、S_A1_AWLOCK＝『01』ではないとき、D_A1_WID[x]＝『0』とする。なお、A-14の出力(D_A1_WID[x])は、セレクタ１０に入力される。
【００９１】
ブロックA-15は、S_A1_BID[x]およびS_A1_BRESPを受け取り、D_A1_BRESPに変換して内部接続回路103(CPU#0)に出力する(処理Ｓ３７)。すなわち、A-15は、S_A1_BID[x]＝『1』のとき、D_A1_BRESP＝B2_BRESP(排他応答値)をCPU#0に出力し、S_A1_BID[x]＝『0』のとき、D_A1_BRESP＝S_A1_BRESPをCPU#0に出力する。ここで、排他応答受信ブロックB-2は、A-15に対して、B2_BRESPを出力する。また、セレクタ１０には、排他応答発行ブロックA-2の出力(AW，WおよびBチャネルの出力)も入力され、例えば、図２１を参照して後に詳述する排他応答発行識別信号(ＳＳ)を受信したときは、A-2の出力を選択し、そうでないときは、A-1の出力を選択する。
【００９２】
図１８は、図２に示すバス制御回路における排他応答受信ブロックの一例を説明するための図である。図１８に示されるように、排他応答受信ブロックB-2は、図１０〜図１３を参照して説明したアクセス動作時に、排他コマンド変換ブロックA-1およびPCIe#0との間で信号の遣り取りおよび変換を行う３つのブロックB-21，B-22およびB-23を含む。
【００９３】
ブロックB-21は、排他コマンド変換ブロックA-1からB2_ARADDRおよびB2_AWADDRを受け取ると共に、PCIe#0のAWチャネルからS_B2_AWADDRを受け取り、排他応答受信識別信号(ＳＲ)を生成してB-22に出力する。すなわち、B-21では、S_B2_AWADDRがB2_ARADDRまたはB2_AWADDRと合致した場合、A-1から発行した排他コマンドに対する排他応答であると判定し、排他応答受信識別信号ＳＲをB-22に出力する。
【００９４】
ブロックB-22は、PCIe#0からのWチャネルを介してS_B2_WDATAを受け取り、B-21からの排他応答受信識別信号ＳＲに基づいて、S_B2_WDATAをB2_RRESPおよびB2_BRESPに変換してA-1に出力する。すなわち、排他応答受信識別信号ＳＲにより、A-1から発行した排他コマンドに対する排他応答であることが分かったら、S_B2_WDATAに乗っている排他応答値をB2_RRESPまたはB2_BRESPとしてA-1に転送する。なお、ブロックB-23は、PCIe#0からのライト応答(B)チャネルの情報を受け取るブロックであるが、本実施形態と関係が薄いので、その説明は省略する。
【００９５】
図１９は、図２に示すバス制御回路におけるリードチャネルの排他コマンド生成ブロックの一例を説明するための図である。図１９に示されるように、排他コマンド生成ブロックB-1は、図１０および図１１を参照して説明したリードアクセス動作時に、ARチャネルの変換処理を行うブロックB-11およびRチャネルの変換処理を行うブロックB-12を含む。
【００９６】
ブロックB-11は、図１０および図１１における処理Ｓ６として、PCIe#1からS_B1_ARLOCK，S_B1_ARADDRおよびS_B1_ARUSERを受け取り、D_B1_ARLOCKおよびD_B1_ARID[y]に変換して内部接続回路103(DDR#1)に出力する(処理Ｓ７〜Ｓ１０)。
【００９７】
すなわち、B-11は、S_B1_ARUSER[0]＝『1』(排他コマンド)のとき、D_B1_ARLOCK＝『01』(排他コマンド)、および、D_B1_ARID[y]＝『1』(Rチャネルでの排他コマンド識別用に、yビットのARID[y-1:0]に付加)をDDR#1に出力する。また、B-11は、S_B1_ARUSER＝『1』のとき、D_B1_ARADDRの値を、A2_ARADDR(コマンド識別用)として、排他応答発行ブロックA-2に転送する。さらに、B-11は、S_B1_ARUSER[0]＝『0』のとき、D_B1_ARLOCK＝S_B1_ARLOCK、および、D_B1_ARID[y]＝『0』をDDR#1に出力する。
【００９８】
ブロックB-12は、図１０および図１１における処理Ｓ１１として、S_B1_RRESPおよびS_B1_RID[y]を受け取り、D_B1_RRESPに変換してPCIe#1に出力する(処理Ｓ１２)。すなわち、B-12は、S_B1_RID[y]＝『1』のとき、D_B1_RRESP＝『00』、および、A2_RRESP＝S_B1_RRESP(排他応答値)をPCIe#1に出力する。さらに、B-12は、A-2に対して、A2_RRESPを出力する。
【００９９】
図２０は、図２に示すバス制御回路におけるライトチャネルの排他コマンド生成ブロックの一例を説明するための図である。図２０に示されるように、排他コマンド生成ブロックB-1は、図１２および図１３を参照して説明したライトアクセス動作時に、AWチャネルの変換処理を行うブロックB-13，Wチャネルの変換処理を行うブロックB-14およびBチャネルの変換処理を行うブロックB-15を含む。
【０１００】
ブロックB-13は、図１２および図１３における処理Ｓ２６により、PCIe#1からS_B1_AWLOCK，S_B1_AWADDRおよびS_B1_AWUSER[0]を受け取り、D_B1_AWLOCKおよびD_B1_AWID[y]に変換して内部接続回路103(DDR#1)に出力する(処理Ｓ２７〜Ｓ３０)。
【０１０１】
すなわち、B-13は、S_B1_AWUSER[0]＝『1』(排他コマンド)のとき、D_B1_AWLOCK＝『01』(排他コマンド)、D_B1_AWID[y]＝『1』(Bチャネルでの排他コマンド識別用に、yビットのAWID[y-1:0]に付加)、および、D_B1_AWADDRの値を、A2_AWADDR(コマンド識別用)として、排他応答発行ブロックA-2に転送する。さらに、B-13は、S_B1_AWUSER[0]＝『0』のとき、D_B1_AWLOCK＝S_B1_AWLOCK、および、D_B1_AWID[y]＝『0』をDDR#1に出力する。
【０１０２】
ブロックB-15は、S_B1_BRESPおよびS_B1_BID[y]を受け取り、D_B1_BRESPに変換してPCIe#1に出力する。すなわち、B-15は、S_B1_BID[y]＝『1』のとき、D_B1_BRESP＝『00』、および、A2_BRESP＝S_B1_BRESP(排他応答値)をPCIe#1に出力する。さらに、B-15は、A-2に対して、A2_BRESPを出力する。
【０１０３】
また、B-15は、S_B1_BID[y]＝『0』のとき、D_B1_BRESP＝S_B1_BRESPをPCIe#1に出力する。なお、ブロックB-1４は、PCIe#1からのWチャネルのデータをそのまま通過させてDDR#1に出力する。
【０１０４】
図２１は、図２に示すバス制御回路におけるライトチャネルの排他応答発行ブロックの一例を説明するための図である。図２１に示されるように、排他応答発行ブロックA-2は、図１２および図１３を参照して説明したライトアクセス動作時に、AWチャネルの変換処理を行うブロックA-21，Wチャネルの変換処理を行うブロックA-22およびBチャネルの変換処理を行うブロックA-23を含む。
【０１０５】
ブロックA-21は、図１２および図１３における処理Ｓ３２により、排他コマンド生成ブロックB-1からB1_ARADDRおよびB1_AWADDRを受け取り、D_A2_AWADDRに変換してセレクタ１０(PCIe#1)に出力する(処理Ｓ１３)。すなわち、A-21は、後述するブロックA-22からの排他応答発行識別信号ＳＳを受信すると、B1_ARADDRまたはB1_AWADDRの値をD_A2_AWADDRとして、排他応答用のAWコマンドをAWチャネル(セレクタ１０)に発行する。
【０１０６】
ブロックA-22は、B-1からB1_RRESPおよびB1_BRESPを受け取り、D_A2_WDATAに変換してセレクタ１０(PCIe#1)に出力する。すなわち、A-22は、B1_RRESPまたはB1_BRESPを受信したら排他応答を発行するため、排他応答発行識別信号ＳＳをAWチャネルおよびセレクタ１０に転送する。また、B1_RRESPまたはB1_BRESPの値を排他応答値として、D_A2_WDATAに変換する。なお、ブロックA-23は、本実施形態と関係が薄いので、その説明は省略する。
【０１０７】
ここで、図２１および図１７に示されるように、PCIe#1と排他コマンド変換ブロックA-1および排他応答発行ブロックA-2の間にはセレクタ１０が設けられ、このセレクタ１０により選択された信号が、PCIe#1とA-1またはA-2の間で転送される。すなわち、セレクタ１０は、排他応答発行識別信号ＳＳを受信したときは、A-2の経路を選択し、そうでないときは、A-1の経路を選択するようになっている。
【０１０８】
図２２および図２３は、図１および図２を参照して説明した情報処理装置におけるＳＴビット[7:0]を含むヘッダ情報の生成/復元方法を説明するための図であり、図１５を参照して示したＳｏＣ番号やポート番号の情報の取得を説明するためのものである。なお、図２２および図２３では、例えば、メモリ(DDR Memory 101)，メモリ接続回路(104，105)およびＩＰマクロ(108)等は、関係が薄いので省略されている。
【０１０９】
図２２に示されるように、ＳｏＣ100は、例えば、図１を参照して説明したＳｏＣに対して、さらに、フラッシュ(Flash)メモリコントローラ111，電子ヒューズ(eFUSE)112および設定値レジスタ113を含む。なお、フラッシュメモリコントローラ111は、例えば、外部に設けられたフラッシュメモリ(または、eEPROM)114を制御する。
【０１１０】
フラッシュメモリコントローラ111，電子ヒューズ(eFUSE)112および設定値レジスタ113を含む。なお、フラッシュメモリコントローラ111は、例えば、外部に設けられたフラッシュメモリや不揮発性メモリ(Electrically Erasable Programmable Read-Only Memory：Flash/eEPROM：外部メモリ)114を制御する。
【０１１１】
外部メモリ(Flash/eEPROM)114または電子ヒューズ112には、予めＳｏＣ番号やポート番号が格納され、例えば、電源起動時に、ＣＰＵ(または、コントローラ)102が、その外部メモリ114や電子ヒューズ112に格納された値を読み出して、設定値レジスタ113にコピーする。そして、設定値レジスタ113にコピーされた値は、バス制御回路(排他アクセス回路)１により読み出され、それぞれのＳｏＣが識別された状態で、前述した排他アクセス処理が行われる。なお、設定値レジスタ113を経由せずに、ＣＰＵ102が、外部メモリ114や電子ヒューズ112から読み出した値を、直接バス制御回路１に設定することもできる。
【０１１２】
具体的に、図２３に示されるように、図３を参照して説明したＰＣＩｅのＴＬＰヘッダにおけるＳＴビット(ST[7:0])を使用することができる。すなわち、バス制御回路(PCIe Exclusive Access Unit)１は、例えば、SoC#0の設定値レジスタ113からＳｏＣ番号(SoC Number[5:0])およびポート番号(Port Number)を読み出す。さらに、内部接続回路(Interconnect)103を介してAxLOCK[1:0]およびAxADDR[31:0]を読み出し、例えば、前述した処理を行って、AxUSER[7:0]，AxUSER[10:8]およびAxADDR[31:0]を、PCIe#に出力する。
【０１１３】
ここで、SoC#0におけるデータは、例えば、SoC Number[5:0]＋Port Number＋AxLOCK[1:0] → AxUSER[7:0] → ST[7:0]といった変換(生成)を行い、また、AxLOCK[1:0] → AxUSER[10:8] → TH＋PH[1:0]といった変換を行うことで、ヘッダ情報に変換する。なお、前述したように、例えば、AxLOCKは、AxLOCK[1:0]といった２ビットの情報ではなく、１ビットの情報でよいが、例えば、『01』が排他アクセスで『00』が通常アクセスというように使用することができる。また、AxUSER[10:8]は、３ビットの情報を転送できるが、例えば、１ビットを固定して、他の２ビットを使用すればよい。
【０１１４】
このようにして、例えば、ＰＣＩｅのＴＬＰヘッダのST[7:0]，THおよびPH[1:0]として組み入れられた情報は、例えば、SoC#1において復元される。すなわち、例えば、TH＋PH[1:0] → AxUSER[10:8] → AxLOCK[1:0]とし、また、ST[7:0] → AxUSER[7:0] ] → 応答用送信元情報保持として、ＰＣＩｅのＴＬＰヘッダに組み込まれた情報を復元する。このようにして、SoC#1では、PCIe#1から、AxUSER[7:0]，AxUSER[10:8]およびAxADDR[31:0]が、バス制御回路１に入力され、バス制御回路１から、内部接続回路103にAxLOCK[1:0]およびAxADDR[31:0]が出力される。
【０１１５】
なお、SoC#1においても、設定値レジスタ113が設けられ、上述したのとは逆向き(SoC#1からSoC#0)の処理を行うことができるのはいうまでもない。また、上述したＰＣＩｅのＴＬＰヘッダにおけるST[7:0]，THおよびPH[1:0]の使用は単なる例であり、ヘッダの他のビットフィールド、或いは、各バス仕様における適切なビットフィールドの使用も可能なのはいうまでもない。
【０１１６】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【０１１７】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
第１フォーマットを有する、排他アクセスに対応した第１バス仕様の第１排他コマンドと、前記第１バス仕様とは異なり、排他アクセスに対応しない第２バス仕様に適合した第２フォーマットを有する、前記第１バス仕様の第２排他コマンドを相互に変換して、前記第１バス仕様および前記第２バス仕様の間における排他コマンドの伝搬を行うバス制御回路であって、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第１排他コマンドを受け取り、前記第２排他コマンドに変換して出力する排他コマンド変換回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドを受け取って前記第１排他コマンドを生成する排他コマンド生成回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を発行する排他応答発行回路と、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を受け取る排他応答受信回路と、を有する、
ことを特徴とするバス制御回路。
【０１１８】
（付記２）
前記第１排他コマンドは、前記第１バス仕様に基づいて予め用意されたコマンドであり、
前記第２排他コマンドは、排他アクセスを行うために、前記第２バス仕様における所定のビットフィールドに基づいて生成される、
ことを特徴とする付記１に記載のバス制御回路。
【０１１９】
（付記３）
前記第２排他コマンドを生成するための、前記第２バス仕様における所定のビットフィールドは、前記第２バス仕様におけるパケットのヘッダ部分に含まれる、
ことを特徴とする付記２に記載のバス制御回路。
【０１２０】
（付記４）
さらに、
前記排他応答発行回路から出力される排他応答発行識別信号に基づいて、前記第２バス仕様の第２バスに繋がる経路と、前記排他コマンド変換回路による経路または前記排他応答発行ブロックによる経路との接続を制御するセレクタを有する、
ことを特徴とする付記１乃至付記３のいずれか１項に記載のバス制御回路。
【０１２１】
（付記５）
前記第１バス仕様の第１バスは、ＡＸＩ（登録商標）仕様のバスである、
ことを特徴とする付記１乃至付記４のいずれか１項に記載のバス制御回路。
【０１２２】
（付記６）
前記第２バス仕様の第２バスは、ＰＣＩｅ（登録商標）仕様のバスである、
ことを特徴とする付記１乃至付記５のいずれか１項に記載のバス制御回路。
【０１２３】
（付記７）
前記第２排他コマンドは、前記ＰＣＩｅ（登録商標）仕様のバスのＴＬＰヘッダにおける所定のビットフィールドに基づいて生成される、
ことを特徴とする付記６に記載のバス制御回路。
【０１２４】
（付記８）
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、
前記排他応答受信回路は、前記排他コマンド変換回路に、前記第２排他コマンドに対する排他応答情報に発行し、
前記排他コマンド変換回路は、前記第２排他コマンドに対する排他応答情報に基づいて、前記第１排他コマンドに対する排他応答を生成する、
ことを特徴とする付記１乃至付記７のいずれか１項に記載のバス制御回路。
【０１２５】
（付記９）
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、
前記排他コマンド変換回路は、通常コマンドに対する応答を受け取り、前記通常アクセスコマンドに対する応答と前記第２排他コマンドに対する排他応答情報に基づいて、前記第１排他コマンドに対する排他応答を生成する、
ことを特徴とする付記８に記載のバス制御回路。
【０１２６】
（付記１０）
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第１排他コマンドに対する排他応答を受け取り、前記第１排他コマンドに対する排他応答に基づいて、前記排他応答発行回路に、前記第１排他コマンドに対する排他応答情報を発行し、
前記排他応答発行回路は、前記第１排他コマンドに対する排他応答情報に基づいて、前記第２排他コマンドに対する排他応答情報を生成する、
ことを特徴とする付記１乃至付記９のいずれか１項に記載のバス制御回路。
【０１２７】
（付記１１）
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第１排他コマンドに対する排他応答に基づいて、前記第１排他コマンドに対する排他応答情報に加えて、通常コマンドに対する応答を生成する、
ことを特徴とする付記１０に記載のバス制御回路。
【０１２８】
（付記１２）
第１フォーマットを有する、排他アクセスに対応した第１バス仕様の第１排他コマンドと、前記第１バス仕様とは異なり、排他アクセスに対応しない第２バス仕様に適合した第２フォーマットを有する、前記第１バス仕様の第２排他コマンドを相互に変換して、前記第１バス仕様および前記第２バス仕様の間における排他コマンドの伝搬を行うバス制御回路と、
前記第１バス仕様の内部回路と、
前記バス制御回路と前記内部回路の間で信号の受け渡しを行う内部接続回路と、
前記バス制御回路と前記第２バス仕様の外部バスの間で信号の受け渡しを行う外部接続回路と、を有し、
前記バス制御回路は、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第１排他コマンドを受け取り、前記第２排他コマンドに変換して出力する排他コマンド変換回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドを受け取って前記第１排他コマンドを生成する排他コマンド生成回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を発行する排他応答発行回路と、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を受け取る排他応答受信回路と、を有する、
ことを特徴とする半導体集積回路。
【０１２９】
（付記１３）
前記第１排他コマンドは、前記第１バス仕様に基づいて予め用意されたコマンドであり、
前記第２排他コマンドは、排他アクセスを行うために、前記第２バス仕様における所定のビットフィールドに基づいて生成される、
ことを特徴とする付記１２に記載の半導体集積回路。
【０１３０】
（付記１４）
前記第１バス仕様の第１バスは、ＡＸＩ（登録商標）仕様のバスである、
前記第２バス仕様の第２バスは、ＰＣＩｅ（登録商標）仕様のバスである、
ことを特徴とする付記１２または付記１３に記載の半導体集積回路。
【０１３１】
（付記１５）
前記第２排他コマンドは、前記ＰＣＩｅ（登録商標）仕様のバスのＴＬＰヘッダにおける所定のビットフィールドに基づいて生成される、
ことを特徴とする付記１４に記載の半導体集積回路。
【０１３２】
（付記１６）
前記第２排他コマンドを生成する、前記ＴＬＰヘッダにおける所定のビットフィールドは、前記半導体集積回路を識別する情報、および、排他アクセスか否かを示す情報を含む、
ことを特徴とする付記１５に記載の半導体集積回路。
【０１３３】
（付記１７）
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、
前記排他応答受信回路は、前記排他コマンド変換回路に、前記第２排他コマンドに対する排他応答情報に発行し、
前記排他コマンド変換回路は、前記第２排他コマンドに対する排他応答情報に基づいて、前記第１排他コマンドに対する排他応答を生成する、
ことを特徴とする付記１２乃至付記１６のいずれか１項に記載の半導体集積回路。
【０１３４】
（付記１８）
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、
前記排他コマンド変換回路は、通常コマンドに対する応答を受け取り、前記通常アクセスコマンドに対する応答と前記第２排他コマンドに対する排他応答情報に基づいて、前記第１排他コマンドに対する排他応答を生成する、
ことを特徴とする付記１７に記載の半導体集積回路。
【０１３５】
（付記１９）
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第１排他コマンドに対する排他応答を受け取り、前記第１排他コマンドに対する排他応答に基づいて、前記排他応答発行回路に、前記第１排他コマンドに対する排他応答情報を発行し、
前記排他応答発行回路は、前記第１排他コマンドに対する排他応答情報に基づいて、前記第２排他コマンドに対する排他応答情報を生成する、
ことを特徴とする付記１２乃至付記１８のいずれか１項に記載の半導体集積回路。
【０１３６】
（付記２０）
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第１排他コマンドに対する排他応答に基づいて、前記第１排他コマンドに対する排他応答情報に加えて、通常コマンドに対する応答を生成する、
ことを特徴とする付記１９に記載の半導体集積回路。
【０１３７】
（付記２１）
付記１２乃至付記２０のいずれか１項に記載の半導体集積回路と、
少なくとも前記半導体集積回路に接続され、前記半導体集積回路と前記半導体集積回路とは別の回路によって共有されるメモリと、を有する、
ことを特徴とする回路基板。
【０１３８】
（付記２２）
付記２１に記載の回路基板を複数有する情報処理装置であって、
それぞれの前記回路基板は、前記第２バス仕様の第２バスにより接続されている、
ことを特徴とする情報処理装置。
【０１３９】
（付記２３）
第１フォーマットを有する、排他アクセスに対応した第１バス仕様の第１排他コマンドと、前記第１バス仕様とは異なり、排他アクセスに対応しない第２バス仕様に適合した第２フォーマットを有する、前記第１バス仕様の第２排他コマンドを相互に変換して、前記第１バス仕様および前記第２バス仕様の間における排他コマンドの伝搬を行うバス制御方法であって、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第１排他コマンドを受け取り、前記第２排他コマンドに変換して出力し、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を受け取り、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドを受け取って前記第１排他コマンドを生成し、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を発行する、
ことを特徴とするバス制御方法。
【符号の説明】
【０１４０】
１    バス制御回路(排他アクセス回路： PCIe Exclusive Access Unit)
１０    セレクタ
１１    第１変換部(Interconnect to PCIe Bus Bridge)
１２    第２変換部(PCIe to Interconnect Bus Bridge)
100    半導体集積回路(ＳｏＣ)
101    メモリ(DDR Memory)
102    ＣＰＵ(コントローラ)
103    内部接続回路(Interconnect)
104    メモリ制御回路(DDR Controller)
105    メモリのインタフェースＩＰマクロ(DDR PHY)
106    リンク制御回路(PCIe Link)
107    ＰＣＩｅのインタフェースＩＰマクロ(PCIeの物理層：PCIe PHY)
108    ＩＰマクロ(ＩＰ)
111    フラッシュ(Flash)メモリコントローラ
112    電子ヒューズ(eFUSE)
113    設定値レジスタ
114    外部メモリ(Flash/eEPROM)
200    ＰＣＩｅバス(ＰＣＩｅ)
300    回路基板
A-1    排他コマンド変換ブロック
A-2    排他応答発行ブロック
B-1    排他コマンド生成ブロック
B-2    排他応答受信ブロック
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１フォーマットを有する、排他アクセスに対応した第１バス仕様の第１排他コマンドと、前記第１バス仕様とは異なり、排他アクセスに対応しない第２バス仕様に適合した第２フォーマットを有する、前記第１バス仕様の第２排他コマンドを相互に変換して、前記第１バス仕様および前記第２バス仕様の間における排他コマンドの伝搬を行うバス制御回路であって、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第１排他コマンドを受け取り、前記第２排他コマンドに変換して出力する排他コマンド変換回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドを受け取って前記第１排他コマンドを生成する排他コマンド生成回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を発行する排他応答発行回路と、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を受け取る排他応答受信回路と、を有する、
ことを特徴とするバス制御回路。
【請求項２】
前記第１排他コマンドは、前記第１バス仕様に基づいて予め用意されたコマンドであり、
前記第２排他コマンドは、排他アクセスを行うために、前記第２バス仕様における所定のビットフィールドに基づいて生成される、
ことを特徴とする請求項１に記載のバス制御回路。
【請求項３】
さらに、
前記排他応答発行回路から出力される排他応答発行識別信号に基づいて、前記第２バス仕様の第２バスに繋がる経路と、前記排他コマンド変換回路による経路または前記排他応答発行ブロックによる経路との接続を制御するセレクタを有する、
ことを特徴とする請求項１または請求項２に記載のバス制御回路。
【請求項４】
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、
前記排他応答受信回路は、前記排他コマンド変換回路に、前記第２排他コマンドに対する排他応答情報に発行し、
前記排他コマンド変換回路は、前記第２排他コマンドに対する排他応答情報に基づいて、前記第１排他コマンドに対する排他応答を生成する、
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載のバス制御回路。
【請求項５】
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第１排他コマンドに対する排他応答を受け取り、前記第１排他コマンドに対する排他応答に基づいて、前記排他応答発行回路に、前記第１排他コマンドに対する排他応答情報を発行し、
前記排他応答発行回路は、前記第１排他コマンドに対する排他応答情報に基づいて、前記第２排他コマンドに対する排他応答情報を生成する、
ことを特徴とする請求項１乃至請求項４のいずれか１項に記載のバス制御回路。
【請求項６】
第１フォーマットを有する、排他アクセスに対応した第１バス仕様の第１排他コマンドと、前記第１バス仕様とは異なり、排他アクセスに対応しない第２バス仕様に適合した第２フォーマットを有する、前記第１バス仕様の第２排他コマンドを相互に変換して、前記第１バス仕様および前記第２バス仕様の間における排他コマンドの伝搬を行うバス制御回路と、
前記第１バス仕様の内部回路と、
前記バス制御回路と前記内部回路の間で信号の受け渡しを行う内部接続回路と、
前記バス制御回路と前記第２バス仕様の外部バスの間で信号の受け渡しを行う外部接続回路と、を有し、
前記バス制御回路は、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第１排他コマンドを受け取り、前記第２排他コマンドに変換して出力する排他コマンド変換回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドを受け取って前記第１排他コマンドを生成する排他コマンド生成回路と、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を発行する排他応答発行回路と、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を受け取る排他応答受信回路と、を有する、
ことを特徴とする半導体集積回路。
【請求項７】
前記第１排他コマンドは、前記第１バス仕様に基づいて予め用意されたコマンドであり、
前記第２排他コマンドは、排他アクセスを行うために、前記第２バス仕様における所定のビットフィールドに基づいて生成される、
ことを特徴とする請求項６に記載の半導体集積回路。
【請求項８】
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、
前記排他応答受信回路は、前記排他コマンド変換回路に、前記第２排他コマンドに対する排他応答情報に発行し、
前記排他コマンド変換回路は、前記第２排他コマンドに対する排他応答情報に基づいて、前記第１排他コマンドに対する排他応答を生成する、
ことを特徴とする請求項６または請求項７に記載の半導体集積回路。
【請求項９】
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第１排他コマンドに対する排他応答を受け取り、前記第１排他コマンドに対する排他応答に基づいて、前記排他応答発行回路に、前記第１排他コマンドに対する排他応答情報を発行し、
前記排他応答発行回路は、前記第１排他コマンドに対する排他応答情報に基づいて、前記第２排他コマンドに対する排他応答情報を生成する、
ことを特徴とする請求項６乃至請求項８のいずれか１項に記載の半導体集積回路。
【請求項１０】
請求項６乃至請求項９のいずれか１項に記載の半導体集積回路と、
少なくとも前記半導体集積回路に接続され、前記半導体集積回路と前記半導体集積回路とは別の回路によって共有されるメモリと、を有する、
ことを特徴とする回路基板。
【請求項１１】
請求項１０に記載の回路基板を複数有する情報処理装置であって、
それぞれの前記回路基板は、前記第２バス仕様の第２バスにより接続されている、
ことを特徴とする情報処理装置。
【請求項１２】
第１フォーマットを有する、排他アクセスに対応した第１バス仕様の第１排他コマンドと、前記第１バス仕様とは異なり、排他アクセスに対応しない第２バス仕様に適合した第２フォーマットを有する、前記第１バス仕様の第２排他コマンドを相互に変換して、前記第１バス仕様および前記第２バス仕様の間における排他コマンドの伝搬を行うバス制御方法であって、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第１排他コマンドを受け取り、前記第２排他コマンドに変換して出力し、
前記第１排他コマンドから前記第２排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を受け取り、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドを受け取って前記第１排他コマンドを生成し、
前記第２排他コマンドから前記第１排他コマンドへの変換のときに、前記第２排他コマンドに対する排他応答情報を発行する、
ことを特徴とするバス制御方法。
【国際調査報告】
2018042767.tif 000026
2018042767.tif 000027
2018042767.tif 000028
2018042767.tif 000029