(57)【要約】      （修正有）【課題】通信装置にＰＣＩｅ接続した２つの外部装置が、その通信装置が有するシステムバスを介在しない効率の良いデータ転送を行う。【解決手段】通信装置は、メモリが接続されるシステムバスと接続され、所定の処理を行う制御部と、複数のＰＣＩｅ送受信回路と、データ通信を行うためのローカルバス、システムバスに対してバスマスタとして機能するバス切替部、とを有する。各ＰＣＩｅ送受信回路は、アドレス変換部と、送受信に係る情報を保持するレジスタへの書き込み要求を受信する第１スレーブと、受信データをバス切替部に向けて送信する第１マスタと、転送データをバス切替部から受信する第２スレーブとを有する。バス切替部は、複数のＰＣＩｅ送受信回路との間に、第１スレーブに向けて送信する第２マスタと、ＰＣＩｅ送受信回路からの送信データを受信する第３スレーブと、ＰＣＩｅ送受信回路から外部への送信データを送信する第３マスタとを有する。【選択図】図１Ａ
2018088190.tif 000002
【特許請求の範囲】
【請求項１】
メモリが接続されるシステムバスと接続され、所定の処理を行う制御部と、
それぞれがＰＣＩｅインターフェースに基づく外部と間で送受信を行うための物理層を表すＰＣＩｅＰＨＹを有する、複数の送受信回路と、
前記複数の送受信回路の間でデータ通信を行うためのローカルバスを有し、前記システムバスに対してバスマスタとして機能するバス切替部とを有し、
前記送受信回路のそれぞれは、
ＰＣＩｅ転送先のアドレスを変換するアドレス変換部と、
送受信に係る情報を保持するレジスタへの書き込み要求を受信するための第１のスレーブと、
外部から受信したデータを前記バス切替部に向けて送信するための第１のマスタと、
外部に向けて転送するデータを前記バス切替部から受信するための第２のスレーブとを有し、
前記バス切替部は、前記複数の送受信回路それぞれとの間に、
前記第１のスレーブに向けて送信する第２のマスタと、
接続される送受信回路から送信されてくるデータを受信するための第３のスレーブと、
接続される送受信回路から外部に送信するためのデータを当該送受信回路に向けて送信する第３のマスタとを有し、
前記第１乃至第３のスレーブそれぞれが受信するためのアドレス空間、及び、前記メモリのアドレス空間は互いに重複しない
ことを特徴とする通信装置。
【請求項２】
請求項１に記載の通信装置を少なくとも３つ有し、
第１の通信装置と第２の通信装置とがＰＣＩｅ接続され、
第１の通信装置と第３の通信装置とがＰＣＩｅ接続されたシステムであって、
前記第２の通信装置から前記第３の通信装置にデータライトする場合、前記第２の通信装置は、
前記第３の通信装置に接続された第１の通信装置内の送受信回路の第１のスレーブに送信して、当該送受信回路が有するアドレス変換部にライト先アドレスを設定し、
前記第３の通信装置に接続された第１の通信装置内の送受信回路の第２のスレーブのアドレス空間に向けてデータ送信することで、
前記第１の通信装置における前記送受信回路が転送先のアドレスを前記アドレス変換部で指定したアドレスに変換して、前記３の通信装置の送受信回路にデータを送信し、前記ライト先アドレスからデータライトする
ことを特徴とするシステム。
【請求項３】
請求項１に記載の通信装置を少なくとも３つ有し、
第１の通信装置と第２の通信装置とがＰＣＩｅ接続され、
第１の通信装置と第３の通信装置とがＰＣＩｅ接続されたシステムであって、
前記第２の通信装置において、前記第３の通信装置からデータを受信する場合、前記第２の通信装置は、
前記第３の通信装置に接続された前記第１の通信装置内の送受信回路の第１のスレーブを介して、当該送受信回路が有するアドレス変換部にリード先アドレスを設定し、
前記第３の通信装置に接続された前記第１の通信装置内の送受信回路の第１のスレーブを介して、第１のマスタのリードリクエストを送信することで、
前記第１の通信装置の前記送受信回路はリード先のアドレスを前記アドレス変換部で指定したアドレスに変換して、前記第３の通信装置の送受信回路に対しリードリクエストを発行することで、前記リード先アドレスからデータリードする
ことを特徴とするシステム。
【請求項４】
前記第２の通信装置、前記第３の通信装置の少なくとも１つは、所定のＰＣＩｅデバイスとＰＣＩｅ接続することを特徴とする請求項２又は３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置に関し、画像処理のためのプロセッサ間のデータ伝送を行う技術に関するものである。
【背景技術】
【０００２】
近年、組み込み機器において、情報量の増加に伴い処理するデータ量が増加している。処理対象のデータ量が多くなると必然的にプロセッサに係る負担が高く。そのため、複数のプロセッサによる分散、並列処理するのが一般的である。この場合、プロセッサ間のデータ通信を行うバスも高速であることが望まれ、その典型的なバスは、高速シリアルバスのＰＣＩ Ｅｘｐｒｅｓｓ（以後、ＰＣＩｅ）である。
【０００３】
例えばプロセッサを３個使用したシステムにおいて、プロセッサどうしがデータ通信するために、各プロセッサ内にＰＣＩｅが最低２レーン必要である。しかし、その１つのプロセッサがＰＣＩｅにより外部のデバイスに接続した場合、そのＰＣＩｅユニットを使用して他のプロセッサと通信することができない。
【０００４】
そこで、各プロセッサ内にＰＣＩｅレーン拡張用のＰＣＩｅスイッチユニットを設置して、カスケード接続するシステムが提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００８−５４６０４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１ではＰＣＩｅスイッチユニットの回路追加が必要になり、コストアップの要因となる。
【０００７】
本発明は上記問題に鑑みてなされたものである。そして、複数のプロセッサをＰＣＩｅでカスケード接続する構成において、ＰＣＩｅの格別なハードウェアリソースを追加せず、且つ、経由するプロセッサにおけるメモリバスの帯域を上げることなく、プロセッサ間のデータ送信を実現する技術を提供する。
【課題を解決するための手段】
【０００８】
この課題を解決するため、例えば本発明の通信装置は以下の構成を備える。すなわち、
メモリが接続されるシステムバスと接続され、所定の処理を行う制御部と、
それぞれがＰＣＩｅインターフェースに基づく外部と間で送受信を行うための物理層を表すＰＣＩｅＰＨＹを有する、複数の送受信回路と、
前記複数の送受信回路の間でデータ通信を行うためのローカルバスを有し、前記システムバスに対してバスマスタとして機能するバス切替部とを有し、
前記送受信回路のそれぞれは、
ＰＣＩｅ転送先のアドレスを変換するアドレス変換部と、
送受信に係る情報を保持するレジスタへの書き込み要求を受信するための第１のスレーブと、
外部から受信したデータを前記バス切替部に向けて送信するための第１のマスタと、
外部に向けて転送するデータを前記バス切替部から受信するための第２のスレーブとを有し、
前記バス切替部は、前記複数の送受信回路それぞれとの間に、
前記第１のスレーブに向けて送信する第２のマスタと、
接続される送受信回路から送信されてくるデータを受信するための第３のスレーブと、
接続される送受信回路から外部に送信するためのデータを当該送受信回路に向けて送信する第３のマスタとを有し、
前記第１乃至第３のスレーブそれぞれが受信するためのアドレス空間、及び、前記メモリのアドレス空間は互いに重複しないことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、通信装置にＰＣＩｅ接続した外部装置が、通信装置を介在してデータ通信を行うことができる。しかも、通信装置が有するシステムバスを介在しないので、効率の良い転送が可能になる。
【図面の簡単な説明】
【００１０】
【図１Ａ】、
【図１Ｂ】、
【図１Ｃ】第１の実施形態に係る通信装置のブロック構成図。
【図２】第１の実施形態に係るバス切替部のバス構成を示す図。
【図３】第１の実施形態に係るアドレス変換方法を説明する図。
【図４】第１の実施形態に係るＰＣＩｅデータ転送制御を説明するシーケンス図。
【図５】第２の実施形態に係るＰＣＩｅデータ転送制御を説明するシーケンス図。
【発明を実施するための形態】
【００１１】
以下図面に従って本発明に係る実施形態を詳細に説明する。
【００１２】
［第１の実施形態］
図１Ａ乃至１Ｃは、第１の実施形態に係る通信装置の構成を示すブロック構成図である。本実施形態の通信装置内には、３つのプロセッサ１００、２００，３００がＰＣＩｅ接続されている。図面では３つに分けているが、図示の同じ丸数字で示される信号線どうしが互い接続されていることに注意されたい。また、各プロセッサ１００には、処理データを格納するためのローカルメモリであるＳＤＲＡＭ１０３、２０３、３０３が接続されている。
【００１３】
まず、プロセッサ１００について説明する。プロセッサ１００におけるシステム制御部１０１は、マイクロコンピュータを有し、システムバス上に接続された不揮発性メモリ（ＲＯＭ）に記録されたプログラムを実行することで、プロセッサ１００の動作を制御する。メモリコントローラ１０２は、複数のバスマスタからのアクセス要求に対して、予め設定された優先度に沿って一つのバスマスタを選択し、ＳＤＲＡＭ１０３との間のデータ転送を制御する。バスマスタの一つとして機能する、バス切替部１０５のバスマスタ１０５−ａがある。プロセッサ１００で処理するデータは、システムバスであるメモリバス１０４、メモリコントローラ１０２経由でＳＤＲＡＭ１０３に書き込まれると共に、この逆順に読み出しが行われる。バス１１２はシステム制御部１０１からバススレーブに対して制御する際のバスとして使用される。本実施形態ではバス１１２はバス切替部１０５のバススレーブ１０５−ｂと接続されている。そして、このバス１１２は、システム制御部１０１から後述するＰＣＩｅ送受信回路部１０６のメモリスレーブ１０６−ｂ、レジスタスレーブ１０６−ｃにアクセスする際に使用される。更に、バス１１２は、ＰＣＩｅ送受信回路部１０８のメモリスレーブ１０８−ｂ、レジスタスレーブ１０８−ｃにアクセスする際にも使用される。
【００１４】
なお、レジスタスレーブ１０６−ｃは、マスタ１０５−ｅから設定されたデータやパラメータを保持する。そして、ＰＣＩｅ送受信回路部１０６は、その保持されたデータやパラメータに従って、ＰＣＩｅ送受信部１０６の送受信（転送）に係る動作設定や、アドレス変換部１０６−ｃへの設定を行う。例えば、レジスタスレーブ１０６−ｃに設定するパラメータにより、ＤＭＡマスタ１０６−ａによる外部（他のプロセッサ）から受信したデータのバス切替部１０６に向けての転送が実現する。これは、レジスタスレーブ１０８−ｃでも同じである。
【００１５】
次に本実施形態のプロセッサ間インターフェースであるＰＣＩｅについて説明する。ＰＣＩｅはＰＣＩ Ｅｘｐｒｅｓｓという名のシリアル転送インターフェースであり、その最小構成の伝送路を「レーン」と呼ぶ。
【００１６】
プロセッサ１００は、２つのＰＣＩｅ送受信回路部１０６、１０８と、２つのＰＨＹ（物理層インターフェース）１１０、１１１を搭載している。各ＰＨＹは、送受信の１組の差動ペアを備える。ＰＣＩｅ送受信回路部１０６、１０８は、バス切替部１０５と接続されている。
【００１７】
バス切替部１０５は、ＰＣＩｅ送受信回路部１０６、ＰＣＩe送受信回路部１０８と、メモリバス１０４、バス１１２とを接続し、ＰＣＩｅ関連のデータを転送先アドレスに応じて切り替える。
【００１８】
ＤＭＡマスタ１０６−ａはＰＣＩｅ送受信回路部１０６のＤＭＡマスタであり、バス切替部１０５のバススレーブ１０５−ｃにデータ転送する。
【００１９】
メモリスレーブ１０６−ｂ、レジスタスレーブ１０６−ｃはＰＣＩｅ送受信回路部１０６のスレーブであり、バス切替部の１０５−ｄと１０５−ｅがバスマスタとなり、ＰＣＩｅ送受信回路部１０６−ｂ、１０６−ｃにデータを送受信する。
【００２０】
アドレス変換部１０７、１０９はＰＣＩｅ転送先アドレスを変換する。アドレス変換部１０７のレジスタはレジスタスレーブ１０６−ｃのレジスタ空間にマッピングされ、アドレス変換部１０９はレジスタスレーブ１０８−ｃのレジスタ空間にマッピングされている。
【００２１】
なお、プロセッサ２００、３００はプロセッサ１００と同じ構成である。それ故、プロセッサ２００を構成する参照符号２０１乃至２１２、プロセッサ３００を構成する参照符号３０１乃至３１２は、プロセッサ１００を構成する参照符号１０１乃至１１２と同じであり、それらの説明は省略する。ただし、プロセッサ２００のＰＣＩｅＰＨＹ部２１１には外部のＰＣＩｅデバイス４０１が接続され、プロセッサ３００のＰＣＩｅＰＨＹ３１１にはＰＣＩｅデバイス４０２が接続されている。ＰＣＩｅデバイス４０１、ＰＣＩｅデバイス４０２の種類は問わない。たとえばプロセッサ１００、２００、３００によって分散、並列処理する対象の画像データの発生源デバイスである。または、プロセッサ１００、２００、３００による処理後のデータを受け取って何らかの処理を行う後処理デバイスである。
【００２２】
本実施形態におけるＰＣＩｅインターフェースの接続構成は下記の通りとする。
・プロセッサ１００とプロセッサ２００（ＰＣＩｅＰＨＹ１１１とＰＣＩｅＰＨＹ２１０）が接続。
・プロセッサ１００とプロセッサ３００（ＰＣＩｅＰＨＹ１１０とＰＣＩｅＰＨＹ３１０）が接続。
・プロセッサ２００とＰＣＩｅデバイス４０１（ＰＣＩｅＰＨＹ２１１とＰＣＩｅデバイス４０１）が接続。
・プロセッサ３００とＰＣＩｅデバイス４０２（ＰＣＩｅＰＨＹ３１１とＰＣＩｅデバイス４０２）が接続。
【００２３】
次に、図２（ａ），（ｂ）を用いて、バス切替部１０５のバス構成について説明する。なお、バス切替部２０５、３０５は、バス切替部１０５と同じ構成のため、その説明は省略する。
【００２４】
＜バス接続の説明＞
バス切替部１０５は図２（ａ）の参照符号２００１、２００２、２００３で示すローカルバスを有し、それらバス上に、図示のようにマトリックス状にバスマスタとバススレーブが接続されている。バス２００１はバススレーブ１０５−ｂとバスマスタ１０５−ｄ、バスマスタ１０５−ｅ、バスマスタ１０５−ｇ、バスマスタ１０５−ｈと接続される。よって、システム制御部１０１は、バススレーブ１０５−ｂ、バス２００１を経由して、ＰＣＩｅ送受信回路１０６のメモリスレーブ１０６−ｂ、１０８−ｂ、及び、ＰＣＩｅ送受信回路１０８のレジスタスレーブ１０６−ｃ、１０８−ｃにアクセスが可能である。
【００２５】
バス２００２は、バスマスタ１０５−ａとバススレーブ１０５−ｃ、バスマスタ１０５−ｇ、１０５−ｈと接続されている。よって、ＰＣＩｅ送受信回路１０６のＤＭＡマスタ１０６−ａからバスマスタ１０５−ａを経由してＳＤＲＡＭ１０３へのアクセスが可能である。また、ＰＣＩｅＰＨＹ１１０から送信されたデータをＤＭＡマスタ１０６−ａから、バスマスタ１０５−ｇを経由して、ＰＣＩｅＰＨＹ１１１から外部にデータを送信することも可能である。また、ＰＣＩｅＰＨＹ１１０から送信されたデータをＤＭＡマスタ１０６−ａから、バスマスタ１０５−ｈを経由して、ＰＣＩｅ送受信回路１０８のレジスタ空間にデータ送信することも可能である。
【００２６】
バス２００３は、バスマスタ１０５−ａと、バススレーブ１０５−ｆ、バスマスタ１０５−ｄ、１０５−ｅと接続されている。よって、ＰＣＩｅ送受信回路１０８のＤＭＡマスタ１０８−ａからバスマスタ１０５−ａを経由してＳＤＲＡＭ１０３へのアクセスが可能である。また、ＰＣＩｅＰＨＹ１１１から転送されたデータをＤＭＡマスタ１０８−ａから、バスマスタ１０５−ｄを経由して、ＰＣＩｅ１１０ＰＨＹから外部にデータを送信することも可能である。また、ＰＣＩｅＰＨＹ１１１から送信されたデータをＤＭＡマスタ１０８−ａから、マスタ１０５−ｅを経由して、ＰＣＩｅ送受信回路１０６のレジスタ空間にデータ送信することも可能である。
【００２７】
＜アドレスマッピングの説明＞
バス切替部１０５はアドレスに応じてアクセス先を決定する。図２（ｂ）における参照符号２０１０は本実施形態におけるメモリマップである。以下に説明するように、互いに重複しないようにアドレス空間が割り当たられている。具体的には、アドレス“０〜０ｘ４００００００”（０ｘは１６進数を表す）はＳＤＲＡＭ１０３にマッピングされ、バスマスタ１０５−ａ経由でアクセスされる（参照符号２０１１の領域）。アドレス“０ｘＣ０００００００〜０ｘＣ０８０００００”はメモリスレーブ１０６−ｂにマッピングされ、バスマスタ１０５−ｄ経由でアクセスされる（参照符号２０１２の領域）。アドレス“０ｘＣ０８０００００〜０ｘＣ１００００００”はメモリスレーブ１０８−ｂにマッピングされ、バスマスタ１０５−ｇ経由でアクセスされる（参照符号２０１３の領域）。アドレス“０ｘＣ２００００００〜０ｘＣ２１０００００”はレジスタスレーブ１０６−ｃにマッピングされ、バスマスタ１０５−ｅ経由でアクセスされる（参照符号２０１４の領域）。アドレス“０ｘＣ２１０００００〜０ｘＣ２２０００００”はレジスタスレーブ１０８−ｃにマッピングし、バスマスタ１０５−ｈ経由でアクセスされる（参照符号２０１５の領域）。
【００２８】
＜アドレス変換部の説明＞
次にアドレス変換部１０７、１０９について説明する。なお、アドレス変換部２０７、２０９、３０７、３０９は同様の構成のため、その説明は省略する。
【００２９】
アドレス変換部１０７、１０９はシステム制御部１０１からの設定が可能である。また、アドレス変換部１０９はＰＣＩｅＰＨＹ１１０からＤＭＡマスタ１０６−ａ、バスマスタ１０５−ｈを経由することで別プロセッサ（本実施形態ではプロセッサ３００）からの設定が可能である。同じく、アドレス変換部１０７はＰＣＩｅＰＨＹ１１１からＤＭＡマスタ１０８−ａ、バスマスタ１０５−ｅを経由することで別プロセッサ（本実施形態ではプロセッサ２００）からの設定が可能である。
【００３０】
次に、図３（ａ）乃至（ｃ）を用いて、アドレス変換部１０７のアドレス変換方法について説明する。アドレス変換部１０７は送信先アドレスであるＰＣＩｅアドレスを変換する。図３（ａ）はＰＣＩｅ送受信回路部からＰＣＩｅＰＨＹ部にデータを出力する際のフローである。ＰＣＩｅは規格としてソフトウェア層、トランザクション層、データリンク層、物理層に分けられており、レイヤー毎に処理を行う（同図（ｂ）参照）。
【００３１】
ソフトウェア層、トランザクション層、データリンク層は、ＰＣＩｅ送受信回路部１０６で処理される。物理層はＰＣＩｅＰＨＹ部１１０で処理される。データライトの場合は送信データであるデータペイロードは所定のサイズ単位でパケッタイズされる。本実施形態では２５６バイト毎にパケッタイズされるものとする。データリードの場合はデータペイロードのパケットは省略される。
【００３２】
トランザクション層でヘッダ生成回路によってＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ Ｌａｙｅｒ Ｐａｃｋｅｔ）ヘッダが付加され、ヘッダ内に転送先のアドレスが格納される。メモリ・リクエストのＴＬＰヘッダの場合、図３（ｃ）の参照符号３００１に示すようにバイト“８”に転送先アドレスが格納される。なお、６４ビット（８バイト）アドレスの場合はバイト“８”とバイト“１２”にアドレスが３２ビット（４バイト）ずつ格納される。データリード、ライトのサイズは図３の参照符号３００３に示すようにバイト“０”のＬｅｎｇｔｈのフィールドに格納される。
データリード、ライトの種類は、図３の参照符号３００２に示すようにバイト“０”のＦｍｔとＴｙｐｅのフィールドに格納される。
メモリライトの場合は次の通りである。
Ｆｍｔ[1:0]：１０
Ｔｙｐｅ[4:0]：０００００
メモリリードの場合は次の通りである。
Ｆｍｔ[1:0]：００
Ｔｙｐｅ[4:0]：０００００
ＴＬＰヘッダの説明はＰＣＩｅ規格で述べられているため、ここでの詳細説明は省略する。
【００３３】
データリンク層ではＣＲＣ生成回路によってシーケンス（ＳＥＱ）番号とＣＲＣが付加される。物理層ではフレーミングシンボル回路によってスタートフレーム（ＳＴＰ）、エンドフレーム（ＥＮＤ）が付加され、シリアルデータとして送信される。
【００３４】
ここでアドレス変換部１０７はヘッダ生成回路を制御してＴＬＰヘッダ３０００の転送先アドレス３００１を変更する。
【００３５】
＜データライト方法の説明＞
図４は、プロセッサ１００、２００、３００間におけるＰＣＩｅデータライト制御について説明するシーケンス図である。図４において、プロセッサ２００のＰＣＩｅ送受信回路部２０６が実行する処理は、システム制御部２０１が各部を制御することにより実現される。
【００３６】
本実施形態のユースケースは、プロセッサ２００に接続されたＳＤＲＡＭ２０３に格納されたデータを、プロセッサ１００を経由して、プロセッサ３００に接続されたＳＤＲＡＭ３０３にライトする場合である。
【００３７】
ＳＤＲＡＭ２０３におけるライト元アドレス（読出先頭アドレス）はアドレス“０ｘ２０００００００”、転送するデータサイズは１Ｍバイトとする。そして、転送先であるＳＤＲＡＭ３０３における、ライト先アドレス（書き込み先頭アドレス）はアドレス“０ｘ１０００００００”であり、書き込むデータサイズは同じく１Ｍバイトする。
【００３８】
Ｓ４００１にて、プロセッサ２００のシステム制御部２０１は、ＰＣＩｅ送受信回路部２０６を制御して、プロセッサ１００のアドレス変換部１０７に変換アドレスを送信する設定を行う。
【００３９】
転送先アドレスであるＰＣＩｅアドレスはプロセッサ１００のＰＣＩｅ送受信回路部１０６のレジスタスレーブ空間（図２（ｂ）の参照符号２０１４）“０ｘＣ２００００００＋ｎ”（ｎはアドレス変換部１０７のレジスタが存在するオフセットアドレス）にする。送信データは、変換アドレスを表すデータである。本実施形態では、プロセッサ３００のＳＤＲＡＭ３０３のアドレス０ｘ１０００００００からライトする例を説明しているので、アドレス変換部１０７に送信するデータの内容は“０ｘ１０００００００”であり、サイズは４バイトである。
【００４０】
次に、Ｓ４００２にて、プロセッサ２００のシステム制御部２０１は、Ｓ４００１で設定されたデータ（変換アドレス）をプロセッサ２００のＰＣＩｅ送受信回路部２０６からプロセッサ１００のＰＣＩｅ送受信回路部１０８に送信する。
【００４１】
Ｓ４００３にて、上記Ｓ４００１で設定した４バイトのデータが、プロセッサ１００のＰＣＩｅ送受信回路部１０８を経由して、ＰＣＩｅ送受信回路部１０６に送信される。前述したとおり、プロセッサ２００のＰＣＩｅ送受信回路部２０６からＰＣＩｅ送受信回路部１０６のレジスタスレーブ空間（図２の符号２０１４）にデータを送信すると、プロセッサ１００のＰＣＩｅ送受信回路部１０８のＤＭＡマスタ１０８−ａは、そのデータを受信し、バス切替部１０５のバススレーブ１０５−ｆ、バスマスタ１０５−ｅを経由してＰＣＩｅ送受信回路部１０６のレジスタスレーブ１０６−ｃにデータ送信する。
【００４２】
次にＳ４００４にて、プロセッサ２００のシステム制御部２０１は、ＰＣＩｅ送受信回路部２０６を制御して、ＳＤＲＡＭ２０３に格納された１Ｍバイト分のデータ転送の設定を行う。
【００４３】
転送先アドレスであるＰＣＩｅアドレスはプロセッサ１００のＰＣＩｅ送受信回路部１０６のメモリスレーブ空間（図２の参照符号２０１２）“０ｘＣ０００００００”とする。
【００４４】
Ｓ４００５にて、Ｓ４００４で設定されたデータが、プロセッサ２００のＰＣＩｅ送受信回路部１０８からプロセッサ１００のＰＣＩｅ送受信回路１０８に向けて送信される。
【００４５】
Ｓ４００６にて、プロセッサ１００のＰＣＩｅ送受信回路部１０８を経由して、ＰＣＩｅ送受信回路１０６に、Ｓ４００４で設定されたデータが送信される。前述したとおり、プロセッサ２００のＰＣＩｅ送受信回路２０６からＰＣＩｅ送受信回路部１０６のメモリスレーブ空間にデータを送信すると、プロセッサ１００のＰＣＩｅ送受信回路部１０８のＤＭＡマスタ１０８−ａはデータを受信し、バス切替部１０５のバススレーブ１０５−ｆ、マスタ１０５−ｄを経由してＰＣＩｅ送受信回路部１０６のメモリスレーブ１０６−ｂにデータを送信する。
【００４６】
Ｓ４００７にて、プロセッサ１００のＰＣＩｅ送受信回路１０６のアドレス変換部１０７は、Ｓ４００１で指定されたアドレスをベースアドレスとしてＰＣＩｅアドレス変換をする。具体的にはメモリスレーブ領域の先頭アドレス“０ｘＣ０００_００００”を、Ｓ４００１で指定したアドレス“０ｘ１０００_００００”のＰＣＩｅアドレスに置き換えて、ＰＣＩｅＰＨＹ部１１０からプロセッサ３００のＰＣＩｅＰＨＹ部３１０にデータ送信する。
【００４７】
Ｓ４００８にて、プロセッサ３００のＰＣＩｅ送受信回路部３０６は、Ｓ４００７で送信されたデータをＤＭＡマスタ３０６−ａで受信し、バス切替部３０５のスレーブ３０５−ｃに送信する。バス切替部３０５ではアドレスに応じて転送先を切り替える。Ｓ４００７から送信されたデータの転送先アドレスはＳＤＲＡＭ領域である０ｘ１０００００００であるので、バス切替部３０５のバスマスタ３０５−ａを経由してＳＤＲＡＭ３０３にデータを送信する。
【００４８】
上記のＳ４００１〜Ｓ４００８のシーケンスにおいて、Ｓ４００１、Ｓ４００４がソフトウェア制御であり、それ以外はハードウェア動作である。
【００４９】
以上の制御により、Ｓ４００４でプロセッサ２００のＰＣＩｅ送受信回路部２０６からＰＣＩｅアドレス“０ｘＣ０００００００”に１Ｍバイトのデータ送信設定をすると、プロセッサ１００のＰＣＩｅ送受信回路部１０８を経由して、ＰＣＩｅ送受信回路部１０６のメモリスレーブ１０６−ｂにデータが送信される。アドレス変換部１０７により、ＰＣＩｅアドレスのベースアドレスは０ｘＣ０００００００から０ｘ１０００００００に変換して、ＰＣＩｅＰＨＹ部１１０から接続先のプロセッサ３００のＰＣＩｅＰＨＹ３１０にデータが送信される。最終的に、プロセッサ３００のＰＣＩｅ送受信回路部３０６から所望の送信先であるＳＤＲＡＭ３０３にデータが送信される。
【００５０】
以上説明したように本第１の実施形態によれば、複数プロセッサのカスケード接続構成において、ＰＣＩｅのハードウェアリソースを追加することなしに、また、経由ＳＤＲＡＭの帯域を上げることなく、１つのプロセッサ（実施形態ではプロセッサ１００）のバス切替部を経由したデータ転送が実現できる。更に、プロセッサ１００でデータを中継するためのソフトウェア制御が不要になるので、ソフトウェア介在による転送速度低下なしにデータライトを実現することができる。
【００５１】
なお、図４で転送先アドレス、サイズを説明したが、本実施形態における一例であり、転送先やデータサイズを限定するものではない。
【００５２】
また、第１の実施形態では、ＰＣＩｅ送受信回路とＰＣＩｅＰＨＹを２個構成としたが、個数を限定するものではなく、２個以上備えてもよい。
【００５３】
また、第１の実施形態では、プロセッサ２００からプロセッサ３００のＳＤＲＡＭ３０３にデータをライトするユースケースを説明したが、プロセッサ３００からプロセッサ２００のＳＤＲＡＭ２０３にデータをライトする場合も、前述した構成で実現できるのは明らかである。
【００５４】
［第２の実施形態］
第２の実施形態を説明する。上記第１の実施形態では、プロセッサ２００からプロセッサ３００のＳＤＲＡＭ３０３にデータを転送（書き込む）する方法について述べた。本第２の実施形態においては、プロセッサ３００のＳＤＲＡＭ３０３からプロセッサ２００のＳＤＲＡＭ２０３にデータをリードする方法について述べる。
【００５５】
本第２の実施形態の通信装置の構成例は第１の実施形態で説明した構成および動作と同様であるため説明を省略する。
【００５６】
＜データリード方法の説明＞
図５は、第２の実施形態に関わるＰＣＩｅデータ転送制御について説明するシーケンス図である。図５において、プロセッサ２００のＰＣＩｅ送受信回路部２０６が実行する処理は、システム制御部２０１が各部を制御することにより実現される。
【００５７】
本第２の実施形態のユースケースは、プロセッサ２００の主導の下、プロセッサ１００を経由して、プロセッサ３００のＳＤＲＡＭ３０３に記憶されているデータを、プロセッサ２００のＳＤＲＡＭ２０３に転送する例である。
【００５８】
リードデータを格納する先頭アドレスはＳＤＲＡＭ２０３の“０ｘ２０００００００”、サイズは１Ｍバイトとする。一方、リードする先頭アドレスは、ＳＤＲＡＭ３０３のアドレス“０ｘ１０００００００”であり、サイズは１Ｍバイトする。
【００５９】
Ｓ５００１にて、プロセッサ２００のシステム制御部２０１は、ＰＣＩｅ送受信回路部２０６を制御して、プロセッサ１００のアドレス変換部１０７に変換アドレスを送信するための設定を行う。
【００６０】
転送先アドレスであるＰＣＩｅアドレスは、プロセッサ１００のＰＣＩｅ送受信回路部１０６のレジスタスレーブ空間（図２の参照符号２０１４）“０ｘＣ２００００００＋ｎ”（ｎはアドレス変換部１０７のレジスタが存在するオフセットアドレス）にする。
転送データは変換アドレスを表すデータである。本第２の実施形態ではプロセッサ３００のＳＤＲＡＭ３０３のアドレス“０ｘ１０００００００”からリードを開始するので、アドレス変換部１０７に送信するデータの内容は“０ｘ１０００００００”であり、そのデータサイズは４バイトである。
【００６１】
Ｓ５００２にて、Ｓ５００１で設定されたデータ（変換アドレス）がプロセッサ２００のＰＣＩｅ送受信回路部２０６からプロセッサ１００のＰＣＩｅ送受信回路部１０８に送信される。
【００６２】
Ｓ５００３にて、プロセッサ１００のＰＣＩｅ送受信回路部１０８を経由して、ＰＣＩｅ送受信回路部１０６にＳ５００１で設定した４バイトのデータが送信される。前述したとおり、プロセッサ２００のＰＣＩｅ送受信回路部２０６からＰＣＩｅ送受信回路部１０６のレジスタスレーブ空間（図２の参照符号２０１４）にデータを送信すると、プロセッサ１００のＰＣＩｅ送受信回路部１０８のＤＭＡ マスタ１０８−ａは、データを受信し、バス切替部１０５のバススレーブ１０５−ｆ、バスマスタ１０５−ｅを経由してＰＣＩｅ送受信回路部１０６のレジスタスレーブ １０６−ｃにデータ送信する。
【００６３】
次にＳ５００４にて、プロセッサ２００のシステム制御部２０１は、ＰＣＩｅ送受信回路部２０６を制御して、１Ｍバイトのリードリクエスト設定をする。リード先アドレスであるＰＣＩｅアドレスはメモリスレーブ空間（図２の参照符号２０１２）“０ｘＣ０００００００”にする。リードリクエストは図３（ｃ）で説明したＴＬＰヘッダ３０００内の３００２のＦｍｔ、Ｔｙｐｅがリードのビットセットで、データペイロードがないトランザクションである。
【００６４】
Ｓ５００５にて、Ｓ５００４で設定されたリードリクエストがプロセッサ２００のＰＣＩｅ送受信回路部１０８からプロセッサ１００のＰＣＩｅ送受信回路部１０８に送信される。そして、Ｓ５００６にて、プロセッサ１００のＰＣＩｅ送受信回路部１０８を経由して、ＰＣＩｅ送受信回路部１０６にＳ５００４で設定したリードリクエストが送信される。前述したとおり、プロセッサ２００のＰＣＩｅ送受信回路２０６からＰＣＩｅ送受信回路部１０６のメモリスレーブ空間にデータを送信すると、プロセッサ１００のＰＣＩｅ送受信回路部１０８のＤＭＡマスタ１０８−ａがデータを受信し、バス切替部１０５のスレーブ１０５−ｆ、マスタ１０５−ｄを経由してＰＣＩｅ送受信回路部１０６のメモリスレーブの１０６−ｂにアクセスする。
【００６５】
Ｓ５００７にて、プロセッサ１００のＰＣＩｅ送受信回路１０６のアドレス変換部１０７は、Ｓ５００１で指定されたアドレスをベースアドレスとしてＰＣＩｅアドレス変換を行う。具体的にはメモリスレーブ領域の先頭アドレス“０ｘＣ０００００００”をＳ５００１で指定した“０ｘ１０００００００”にＰＣＩｅアドレスを置き換え、ＰＣＩｅＰＨＹ部１１０からプロセッサ３００のＰＣＩｅＰＨＹ部３１０にリードリクエストを送信する。
【００６６】
Ｓ５００８では、プロセッサ３００のＰＣＩｅ送受信回路部３０６は、Ｓ５００７で送信されたリードリクエストを受信し、所望のデータをＳＤＲＡＭ３０３からＤＭＡマスタ３０６−ａでリードする。バス切替部３０５ではアドレスに応じて転送先を切り替える。Ｓ５００７で要求されたデータのリード先アドレスはＳＤＲＡＭ領域であるアドレス“０ｘ１０００００００”であるので、バス切替部３０５のマスタ３０５−ａを経由してＳＤＲＡＭ３０３からデータをリードする。
【００６７】
Ｓ５００９にて、ＰＣＩｅ送受信回路部３０６は、Ｓ５００８でリードしたデータをプロセッサ１００のＰＣＩｅ送受信回路部１０６に送信する。Ｓ５０１０にて、Ｓ５００９で送信したデータがプロセッサ１００のＰＣＩｅ送受信回路部１０６を経由してプロセッサ１００のＰＣＩｅ送受信回路部１０８に送信される。前述したとおり、プロセッサ１００のＰＣＩｅ送受信回路部１０８のＤＭＡマスタ１０８−ａが、バス切替部１０５のスレーブ１０５−ｆ、マスタ１０５−ｄを経由してＰＣＩｅ送受信回路部１０６のメモリスレーブの１０６−ｂのデータをリードする。
【００６８】
Ｓ５０１１では、プロセッサ２００のＰＣＩｅ送受信回路部２０６は、Ｓ５０１０で送信されたデータをＤＭＡマスタ２０６−ａでリードし、バス切替部２０５のスレーブ２０５−ｃに送信する。バス切替部２０５ではアドレスに応じて転送先を切り替える。リードデータの格納先アドレスはＳＤＲＡＭ２０３のであるアドレス“０ｘ２０００００００”であるので、バス切替部２０５のマスタ２０５−ａを経由してＳＤＲＡＭ２０３にデータを送信する。
【００６９】
Ｓ５００１〜Ｓ５０１２のシーケンスにおいて、Ｓ５００１、Ｓ５００４がソフトウェア制御であり、それ以外はハードウェア動作である。
【００７０】
以上の制御により、Ｓ５００４でプロセッサ２００のＰＣＩｅ送受信回路部２０６からＰＣＩｅアドレス０ｘＣ０００００００に１Ｍバイトのデータリードリクエストを発行すると、プロセッサ１００のＰＣＩｅ送受信回路部１０８を経由して、ＰＣＩｅ送受信回路部１０６のメモリスレーブ１０６−ｂにリードリクエストが送信される。アドレス変換部１０７により、ＰＣＩｅアドレスのベースアドレスは“０ｘＣ０００００００”から“０ｘ１０００００００”に変換され、ＰＣＩｅＰＨＹ部１１０から接続先のプロセッサ３００のＰＣＩｅＰＨＹ３１０にリードリクエストが送信される。プロセッサ３００のＰＣＩｅ送受信回路部３０６から所望のリード先であるＳＤＲＡＭ３０３からデータリードを行い、プロセッサ１００のＰＣＩｅ送受信回路部１０６、１０８を経由して、プロセッサ２００のＰＣＩｅ送受信回路２０６のＤＭＡマスタ２０６−ａからＳＤＲＡＭ２０３にリードデータを送信される。
【００７１】
以上のように、第２の実施形態によれば、複数プロセッサのカスケード接続構成において、ＰＣＩｅのハードウェアリソースを追加することなしに、経由ＳＤＲＡＭの帯域を上げることなく、データリードを実現できる。更に、プロセッサ１００でデータを中継するためのソフトウェア制御が不要になるので、ソフトウェア介在による転送速度低下なしにデータリードを実現することができる。
【００７２】
なお、図５で転送先アドレス、サイズを説明したが、本第２の実施形態における一例であり、転送先やデータサイズを限定するものではない。
【００７３】
また、第２の実施形態ではＰＣＩｅ送受信回路とＰＣＩｅＰＨＹをそれぞれ２個を有するものとしたが、個数を限定するものではなく、２個以上備えてもよい。
【００７４】
また、第２の実施形態では、プロセッサ２００からプロセッサ３００のＳＤＲＡＭ３０３にデータをリードするユースケースを説明したが、プロセッサ３００からプロセッサ２００のＳＤＲＡＭ２０３にデータをリードする場合も、前述した構成で実現できる。
【００７５】
［第３の実施形態］
上記第１、第２の実施形態では、プロセッサ１００を介在したプロセッサ２００、３００のローカルメモリ間のデータ転送を説明した。しかし、ＰＣＩｅデバイス４０１（或いはＰＣＩｅデバイス４０２）を含めた転送も可能である。すなわち、ＰＣＩｅデバイス４０１も１つのプロセッサとして見なせる。故に、プロセッサ２００に接続しているＰＣＩｅデバイス４０１が、プロセッサ２００を中継して、プロセッサ１００のＳＤＲＡＭ１０３にデータを転送することも可能である。また、ＰＣＩｅデバイス４０１が、プロセッサ２００を中継して、プロセッサ１００のＳＤＲＡＭ１０３のデータを受信することも可能となる。
【００７６】
かかる転送を実現しているのは、第１には、１つのプロセッサにおけるバス切替部内に複数（実施形態では２つであるが３つ以上でも構わない）のＰＣＩｅ送受信部とを接続するバスが確保されている点である。第２には、各ＰＣＩｅ送受信部がアドレス変換部を有する点である。そして、第３には、１つのプロセッサがアクセスするメモリ空間を、ローカルメモリのアドレス空間、及び、バス切替部１０５とＰＣＩｅ送受信部１０６、１０８における各スレーブのアドレス空間を、互いに衝突しない空間に割り当てているためである。
【符号の説明】
【００７７】
１００、２００、３００…プロセッサ、１０１、２０１、３０１…システム制御部、１０２、２０２、３０２…メモリコントローラ、１０３、２０３、３０３…ＳＤＲＡＭ、１０５、２０５，３０５…バス切替部、１０６、１０８、２０６、２０８、３０６、３０８…ＰＣＩｅ送受信回路部、１０７，１０９、２０７，２０９，３０７，３０９…アドレス変換部、１１０，１１１、２１０，２１１，３１０，３１１…ＰＣＩｅＰＨＹ部
【図１Ａ】
2018088190.tif 000003
【図１Ｂ】
2018088190.tif 000004
【図１Ｃ】
2018088190.tif 000005
【図２】
2018088190.tif 000006
【図３】
2018088190.tif 000007
【図４】
2018088190.tif 000008
【図５】
2018088190.tif 000009