(57)【要約】【課題】互いに異なるＯＳを実行する複数のプロセッサにより１つの通信回路を共用する場合に、プロセッサの処理負荷を軽減すること。【解決手段】メモリは、第１のＯＳに対応する第１のディスクリプタ領域及び第１のデータ領域と、第２のＯＳに対応する第２のディスクリプタ領域及び第２のデータ領域とを含む。第２のプロセッサは、第２のデータ領域に格納された送信データに対応する第１の送信指示情報を第２のディスクリプタ領域に格納し、第１のプロセッサに対して第２のディスクリプタ領域の第１の更新通知を送信する。第１のプロセッサは、第１の更新通知に応じて、第２のディスクリプタ領域に格納された第１の送信指示情報を読み出して、第１のディスクリプタ領域に格納する。第１のプロセッサにより制御される通信回路は、第１のディスクリプタ領域に格納された第１の送信指示情報に基づき、第２のデータ領域に格納された送信データの送信処理を行う。【選択図】図２
2020016913.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なるＯＳ（Operating System）を実行する第１のプロセッサ及び第２のプロセッサと、
メモリと、
前記第１のプロセッサにより制御される通信回路と、を備え、
前記メモリは、
前記第１のプロセッサにより実行される第１のＯＳの作業領域である第１のディスクリプタ領域及び第１のデータ領域と、
前記第２のプロセッサにより実行される第２のＯＳの作業領域である第２のディスクリプタ領域及び第２のデータ領域と、を含み、
前記第２のプロセッサは、
前記第２のデータ領域に格納された送信データに対応する第１の送信指示情報を前記第２のディスクリプタ領域に格納し、
前記第１のプロセッサに対して前記第２のディスクリプタ領域の第１の更新通知を送信し、
前記第１のプロセッサは、
前記第１の更新通知に応じて、前記第２のディスクリプタ領域に格納された前記第１の送信指示情報を読み出して、前記第１のディスクリプタ領域に格納し、
前記通信回路は、
前記第１のディスクリプタ領域に格納された前記第１の送信指示情報に基づき、前記第２のデータ領域に格納された前記送信データの送信処理を行う
半導体装置。
【請求項２】
前記第１のプロセッサは、
前記通信回路からの前記送信処理の完了通知に応じて、前記通信回路により前記第１のディスクリプタ領域に格納された前記送信データの送信完了情報を読み出して、前記第２のディスクリプタ領域に格納し、
前記第２のプロセッサに対して前記第２のディスクリプタ領域の第２の更新通知を送信し、
前記第２のプロセッサは、
前記第２の更新通知に応じて、前記第２のディスクリプタ領域に格納された前記送信完了情報を参照する
請求項１に記載の半導体装置。
【請求項３】
互いに異なるＯＳ（Operating System）を実行する第１のプロセッサ及び第２のプロセッサと、
メモリと、
前記第１のプロセッサにより制御される通信回路と、を備え、
前記メモリは、
前記第１のプロセッサにより実行される第１のＯＳの作業領域である第１のディスクリプタ領域及び第１のデータ領域と、
前記第２のプロセッサにより実行される第２のＯＳの作業領域である第２のディスクリプタ領域及び第２のデータ領域と、を含み、
前記第２のプロセッサは、
受信データを前記第２のデータ領域に格納するための第１の受信指示情報を前記第２のディスクリプタ領域に格納し、
前記第１のプロセッサに対して前記第２のディスクリプタ領域の第３の更新通知を送信し、
前記第１のプロセッサは、
前記第３の更新通知に応じて、前記第２のディスクリプタ領域に格納された前記第１の受信指示情報を読み出して、前記第１のディスクリプタ領域に格納し、
前記通信回路からの前記受信データの受信処理の完了通知に応じて、前記通信回路により前記第１のデータ領域に格納された前記受信データを読み出して、当該受信データの宛先を判定し、
前記宛先が前記第２のＯＳ又は前記第２のプロセッサと判定した場合、前記受信データを前記第２のデータ領域に格納すると共に、前記通信回路により前記第１のディスクリプタ領域に格納された、前記受信データに対応する受信完了情報を前記第１のディスクリプタ領域から読み出して前記第２のディスクリプタ領域に格納する
半導体装置。
【請求項４】
前記第２のデータ領域と前記第２のディスクリプタ領域は、前記第１のＯＳが動作する前記第１のプロセッサと前記第２のＯＳが動作する前記第２のプロセッサのそれぞれからデータアクセス可能な共有領域である
請求項３に記載の半導体装置。
【請求項５】
互いに異なるＯＳ（Operating System）を実行する第１のプロセッサ及び第２のプロセッサと、
メモリと、
前記第１のプロセッサにより制御される通信回路と、を備え、
前記メモリは、
前記第１のプロセッサにより実行される第１のＯＳの作業領域である第１のディスクリプタ領域及び第１のデータ領域と、
前記第２のプロセッサにより実行される第２のＯＳの作業領域である第２のディスクリプタ領域及び第２のデータ領域と、を含み、
前記第２のプロセッサは、
受信データを前記第２のデータ領域に格納するための第１の受信指示情報を前記第２のディスクリプタ領域に格納し、
前記第１のプロセッサに対して前記第２のディスクリプタ領域の第３の更新通知を送信し、
前記第１のディスクリプタ領域は、前記第１のデータ領域に対応する第１のサブ領域と、前記第２のデータ領域に対応する第２のサブ領域とを含み、
前記第１のプロセッサは、
前記第３の更新通知に応じて、前記第２のディスクリプタ領域から読み出した前記第１の受信指示情報を前記第２のサブ領域に格納し、
前記通信回路は、
前記第１のＯＳ又は前記第１のプロセッサに対応する第１の通信アドレス情報と、前記第２のＯＳ前記第２のプロセッサに対応する第２の通信アドレス情報とを保持し、
前記受信データの宛先に前記第１及び第２の通信アドレス情報のそれぞれが含まれるか否かを判定し、
前記宛先に前記第２の通信アドレス情報が含まれると判定した場合に、前記第２のデータ領域に前記受信データを格納する
半導体装置。
【請求項６】
前記通信回路は、
前記第１のデータ領域及び前記第１のサブ領域にアクセス可能な第１の分類器と、
前記第２のデータ領域及び前記第２のサブ領域にアクセス可能な第２の分類器と、を含み、
前記通信回路は、
前記受信データを前記第１の分類器及び前記第２の分類器のそれぞれへ入力し、
前記第２の分類器は、
前記宛先に前記第２の通信アドレス情報が含まれると判定した場合、前記第２のサブ領域に格納された前記第１の受信指示情報に基づき、前記第２のデータ領域を前記格納先として特定し、
前記第２のデータ領域に前記受信データを格納する
請求項５に記載の半導体装置。
【請求項７】
前記第２のデータ領域と前記第２のディスクリプタ領域は、前記第１のＯＳが動作する前記第１のプロセッサと前記第２のＯＳが動作する前記第２のプロセッサのそれぞれからデータアクセス可能な共有領域である
請求項１に記載の半導体装置。
【請求項８】
前記第１のプロセッサは、
前記第１の更新通知に応じて、前記第２のディスクリプタ領域に格納された前記第１の送信指示情報と、前記第１のデータ領域に格納された送信データに対応する第２の送信指示情報とを前記第１のディスクリプタ領域に格納する順序を、前記第２の送信指示情報に対応する前記第１のＯＳ及び前記第１の送信指示情報に対応する前記第２のＯＳに対して予め設定された通信容量の割合に基づいて制御する
請求項１に記載の半導体装置。
【請求項９】
前記第１のプロセッサは、
前記第１のＯＳ及び前記第２のＯＳの予め設定された通信容量の割合として、単位時間当たりの前記第１の送信指示情報及び前記第２の送信指示情報のサイズ又は件数を割り当てたものを用いる
請求項８に記載の半導体装置。
【請求項１０】
前記第２のディスクリプタ領域は、前記第１のＯＳが動作する前記第１のプロセッサと前記第２のＯＳが動作する前記第２のプロセッサのそれぞれからデータアクセス可能な共有領域である
請求項５に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及び情報処理システムに関し、例えば、複数のＯＳ（Operating System）で通信回路を共用する半導体装置及び情報処理システムに関する。
【背景技術】
【０００２】
マイクロコンピュータ等の半導体装置において、メモリ間又はメモリとＩＯデバイス間のデータ転送を高速化するために、ダイレクトメモリアクセス（ＤＭＡ：Direct Memory Access）転送が用いられる。近年、メモリ内に転送対象のデータ格納領域の他に、ＤＭＡ転送を制御するためのディスクリプタ領域を確保してＤＭＡ転送を行うディスクリプタ型のＤＭＡ転送が普及しつつある。例えば、特許文献１には、ディスクリプタ型のＤＭＡ転送におけるディスクリプタ制御に関する技術が開示されている。
【０００３】
また、特許文献２には、複数のストレージシステムを統合して制御するために、仮想化におけるゲストＯＳの間でＯＳ間通信に関する技術が開示されている。特許文献２では、ストレージシステムごとにゲストＯＳが対応し、ＯＳ間通信では、共有メモリとＩＰＩ（Inter Processor Interrupt）方式による割込みとを用いている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９‐１８７３１３号公報
【特許文献２】特開２０１５‐６９３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、互いに異なるＯＳを実行する複数のプロセッサを備える半導体装置において、１つの通信回路を複数のプロセッサが共用するには、セキュリティを維持する必要がある。そこで、特許文献１及び２にかかる技術を用いて、第１のプロセッサが通信回路を制御し、残りのプロセッサは第１のプロセッサとのＯＳ間通信により当該通信回路を利用することが考えられる。しかしながら、特許文献１及び２にかかる技術を参考にしながら関連技術（後述）を発明しようと考えただけでは、データ量及び通信頻度の増加に伴い、プロセッサの処理負荷が高くなり得るという新たな問題があることを発明者は発見した。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、半導体装置は、互いに異なるＯＳを実行する第１及び第２のプロセッサと、メモリと、第１のプロセッサにより制御される通信回路と、を備える。ここで、メモリは、各ＯＳに対応する第１及び第２のディスクリプタ領域及び第１及び第２のデータ領域を含む。第２のプロセッサは、第２のデータ領域に対応する通信指示情報を第２のディスクリプタ領域に格納したことを第１のプロセッサに対して通知する。第１のプロセッサは、当該通知に応じて第２のディスクリプタ領域に格納された通信指示情報を第１のディスクリプタ領域へ格納し、当該通信指示情報に基づくデータの送受信を通信回路に指示する。
【発明の効果】
【０００８】
前記一実施の形態によれば、互いに異なるＯＳを実行する複数のプロセッサを備える半導体装置において、１つの通信回路を複数のプロセッサが共用する場合に、プロセッサの処理負荷を軽減できる。
【図面の簡単な説明】
【０００９】
【図１】本実施の形態１にかかる半導体装置のハードウェア構成を示すブロック図である。
【図２】本実施の形態１にかかる半導体装置の構成を示す機能ブロック図である。
【図３】本実施の形態１にかかるデータ送信処理の流れを示すシーケンス図である。
【図４】本実施の形態１にかかるデータ送信処理の流れを示すシーケンス図である。
【図５】本実施の形態１にかかるデータ受信処理の流れを示すシーケンス図である。
【図６】本実施の形態１にかかるデータ受信処理の流れを示すシーケンス図である。
【図７】本実施の形態１にかかるデータ送信処理（複数ディスクリプタ一括コピー）の流れを示すシーケンス図である。
【図８】本実施の形態１にかかるデータ送信処理（複数ディスクリプタ一括コピー）の流れを示すシーケンス図である。
【図９】本実施の形態１にかかるデータ送信処理（複数ディスクリプタ一括コピー）の流れを示すシーケンス図である。
【図１０】本実施の形態２にかかる半導体装置の構成を示す機能ブロック図である。
【図１１】本実施の形態２にかかる通信回路の内部構成を示すブロック図である。
【図１２】本実施の形態２にかかるデータ受信処理の流れを示すシーケンス図である。
【図１３】本実施の形態２にかかるデータ受信処理の流れを示すシーケンス図である。
【図１４】本実施の形態２にかかる受信処理の流れを示すフローチャートである。
【図１５】本実施の形態３にかかる通信容量をＯＳごとに均等に割り当てる場合（Round Robin方式）のディスクリプタ合成例を示す図である。
【図１６】本実施の形態３にかかる単位時間当たりのディスクリプタの累積サイズ上限値ＯＳごとに設定した場合（Token Bucket方式）のディスクリプタ合成例を示す図である。
【図１７】関連技術にかかる半導体装置の構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１２】
ここで、本実施形態が解決しようとする課題について詳細に説明する。図１７は、関連技術にかかる半導体装置９の構成を示す機能ブロック図である。半導体装置９は、プロセッサ９１及び９２と、メモリ９３と、通信回路９５とを備える。尚、半導体装置９は、図示しない構成として割込みコントローラも備えるものとする。通信回路９５は、メモリ９３と半導体装置９の内部との間でＤＭＡ転送を行うためのＤＭＡコントローラや、外部ネットワークとＥｔｈｅｒｎｅｔ（登録商標）通信を行う回路を搭載する。通信回路９５は、特許文献１のようなディスクリプタ型のＤＭＡ転送に対応するものとする。
【００１３】
プロセッサ９１及び９２のそれぞれは、個別にＯＳが動作する。例えば、プロセッサ９１は第１のＯＳを実行し、プロセッサ９２は第２のＯＳを実行するものとする。ここで、通信回路９５は１つであるため、第１のＯＳと第２のＯＳとが別個に外部と通信するためには、プロセッサ９１と９２とで通信回路９５を共用する必要がある。そこで、例えば、上述した特許文献１にかかる技術及び特許文献２にかかる技術を参考にしながら、次のような関連技術を発明者は考えた。それは、プロセッサ９１が実行する第１のＯＳが、第１のＯＳのハードウェア資源として通信回路９５を管理し、また直接制御する。また、プロセッサ９２はプロセッサ９１とのＯＳ間通信を行うことで、通信回路９５を間接的に制御することとなる。つまり、プロセッサ９１と９２とが協調して通信回路９５を制御する。具体的には、次のようになる。
【００１４】
まず、メモリ９３に、ディスクリプタ領域１３３と、データ領域１３４と、共有領域９３６とを設ける（領域を確保する）。共有領域９３６は、プロセッサ９１及び９２に共有される領域、つまり、プロセッサ９１及び９２がいずれもアクセス可能な領域である。そして、共有領域９３６は、第２のＯＳが外部へデータを送信する際の送信データ２３２と、送信データ２３２を通信回路９５に送信させるためのディスクリプタである送信指示情報２１３とを保存する。データ領域１３４及びディスクリプタ領域１３３は、プロセッサ９１がアクセス可能な領域であり、プロセッサ９２がアクセス不可能な領域である。データ領域１３４は、第１のＯＳが外部へデータを送信する際の送信データ２３１を保存する。ディスクリプタ領域１３３は、ディスクリプタ型のＤＭＡ転送におけるディスクリプタ制御を行うための複数のディスクリプタを保存する。ここでは、ディスクリプタとして、通信回路９５における外部へのデータ送信処理の際に用いられる送信指示情報２１１及び２１２が挙げられる。
【００１５】
ここで、プロセッサ９２で動作する第２のＯＳが半導体装置９の外部へデータを送信する場合の流れについて説明する。
（１）まず、プロセッサ９２は、データアクセス９２２により、送信対象である送信データ２３２と送信指示情報２１３を共有領域９３６に格納する。次に、プロセッサ９２は、ＩＰＩ割込み９３１により、プロセッサ９１に対して送信データ２３２を送信させるための通知を行う。尚、ＩＰＩ割込み９３１や後述のＩＰＩ割込み９３２は、上述した割込みコントローラを介してＩＰＩ方式により行われる。
【００１６】
（２）プロセッサ９１は、ＩＰＩ割込み９３１による通知に応じて、データアクセス９１３により、共有領域９３６から送信データ２３２及び送信指示情報２１３を読み出す。そして、プロセッサ９１は、データアクセス９１２により、読み出した送信データ２３２を送信データ２３１としてデータ領域１３４へ格納、つまり、コピーする。また、プロセッサ９１は、データアクセス９１１により、読み出した送信指示情報２１３を送信指示情報２１１としてディスクリプタ領域１３３へ格納、つまり、コピーする。ここで、送信指示情報２１１は、送信データ２３１を通信回路９５により外部へ送信させるためのディスクリプタである。その後、プロセッサ９１は、データアクセス９１４により、通信回路９５へ送信指示を通知する。
【００１７】
（３）通信回路９５は、プロセッサ９１からの送信指示に応じて、データアクセス９４１によりディスクリプタ領域１３３から送信指示情報２１１を読み出す。そして、通信回路９５は、読み出した送信指示情報２１１に基づき、データアクセス９４２によりデータ領域１３４から送信データ２３１を読み出して、データ出力３４５により送信データ２３１を外部へ送信する。その後、通信回路９５は、データアクセス９４１により送信完了情報をディスクリプタ領域１３３内の送信指示情報２１１に記録（追加）する。そして、通信回路９５は、完了割込み９４３によりプロセッサ９１へ完了通知を行う。尚、完了割込み９４３は、上述した割込みコントローラを介して行われる。
【００１８】
（４）プロセッサ９１は、完了割込み９４３による完了通知に応じて、データアクセス９１１によりディスクリプタ領域１３３から送信指示情報２１１を読み出して、データアクセス９１３により共有領域９３６へ格納、つまり、送信指示情報２１３を更新又はコピーする。そして、プロセッサ９１は、ＩＰＩ割込み９３２により、プロセッサ９２に対して送信データ２３２の送信完了を通知する。
【００１９】
（５）プロセッサ９２は、ＩＰＩ割込み９３２による送信完了の通知に応じて、データアクセス９２２により、共有領域９３６内の送信指示情報２１３を参照して、送信結果（送信完了情報）を確認する。
【００２０】
このように、上述した関連技術の場合には、プロセッサ９１による共有領域９３６とデータ領域１３４との通信データ（送信データ）のコピー処理が発生する。例えば、Full-duplex Gigabit Ethernetの場合、送信と受信それぞれで１Ｇｂｐｓとなるため、送信だけで１Ｇｂｐｓのデータコピー処理の負荷が発生する。また、１つのＥｔｈｅｒｎｅｔ通信毎にＩＰＩ割り込みが発生するため、割り込み応答処理によるプロセッサの処理負荷が発生する。例えば、Gigabit Ethernetによる１回の通信が最小フレームサイズ６４ｂｙｔeの場合、秒間１４８８０００回のＩＰＩ割込みが発生する。そのため、プロセッサの処理負荷が高くなり得るという問題が起こり得る。以上のことから、以下ではこれらの課題を解決するための実施形態について説明する。
【００２１】
＜実施形態１＞
本実施形態１にかかる半導体装置は、互いに異なるＯＳ（Operating System）を実行する第１のプロセッサ及び第２のプロセッサと、メモリと、前記第１のプロセッサにより制御される通信回路と、を備える。ここで、前記メモリは、前記第１のプロセッサにより実行される第１のＯＳの作業領域である第１のディスクリプタ領域及び第１のデータ領域と、前記第２のプロセッサにより実行される第２のＯＳの作業領域である第２のディスクリプタ領域及び第２のデータ領域と、を含む。そして、前記第２のプロセッサは、前記第２のデータ領域に格納された送信データに対応する第１の送信指示情報を前記第２のディスクリプタ領域に格納し、前記第１のプロセッサに対して前記第２のディスクリプタ領域の第１の更新通知を送信する。前記第１のプロセッサは、前記第１の更新通知に応じて、前記第２のディスクリプタ領域に格納された前記第１の送信指示情報を読み出して、前記第１のディスクリプタ領域に格納する。前記通信回路は、前記第１のディスクリプタ領域に格納された前記第１の送信指示情報に基づき、前記第２のデータ領域に格納された前記送信データの送信処理を行う。これにより、プロセッサによるデータ領域間の通信データのコピー処理が削減され、プロセッサの処理負荷が軽減できる。また、第１のプロセッサと第２のプロセッサにおける通信処理の一部を共通化でき、開発効率が向上する。
【００２２】
さらに、前記第１のプロセッサは、前記通信回路からの前記送信処理の完了通知に応じて、前記通信回路により前記第１のディスクリプタ領域に格納された前記送信データの送信完了情報を読み出して、前記第２のディスクリプタ領域に格納し、前記第２のプロセッサに対して前記第２のディスクリプタ領域の第２の更新通知を送信することが望ましい。この場合、前記第２のプロセッサは、前記第２の更新通知に応じて、前記第２のディスクリプタ領域に格納された前記送信完了情報を参照する。これにより、第２のプロセッサにおいて、第１のプロセッサと同様の送信確認処理を呼び出すことができ、開発効率がより向上する。
【００２３】
または、前記第２のプロセッサは、受信データを前記第２のデータ領域に格納するための第１の受信指示情報を前記第２のディスクリプタ領域に格納し、前記第１のプロセッサに対して前記第２のディスクリプタ領域の第３の更新通知を送信してもよい。この場合、前記第１のプロセッサは、前記第３の更新通知に応じて、前記第２のディスクリプタ領域に格納された前記第１の受信指示情報を読み出して、前記第１のディスクリプタ領域に格納する。その後、前記第１のプロセッサは、前記通信回路からの前記受信データの受信処理の完了通知に応じて、前記通信回路により前記第１のデータ領域に格納された前記受信データを読み出して、当該受信データの宛先を判定する。そして、前記第１のプロセッサは、前記宛先が前記第２のＯＳ又は前記第２のプロセッサと判定した場合、前記受信データを前記第２のデータ領域に格納すると共に、前記通信回路により前記第１のディスクリプタ領域に格納された、前記受信データに対応する受信完了情報を前記第１のディスクリプタ領域から読み出して前記第２のディスクリプタ領域に格納する。このように、受信処理においても送信処理と同様に、ディスクリプタの受け渡しを行い、通信処理の一部を共通化でき、開発効率が向上する。
【００２４】
また、前記第１のＯＳと前記第２のＯＳとのそれぞれは、仮想ＯＳとしてもよい。つまり、本実施形態は、仮想ＯＳに適用可能である。さらに、前記第２のデータ領域と前記第２のディスクリプタ領域は、前記第１のＯＳが動作する前記第１のプロセッサと前記第２のＯＳが動作する前記第２のプロセッサのそれぞれからデータアクセス可能な共有領域である。
【００２５】
図１は、本実施の形態１にかかる半導体装置１のハードウェア構成を示すブロック図である。半導体装置１は、例えば、マイクロコントローラ、組込みシステム、又は、コンピュータ等の情報処理装置である。半導体装置１は、通信ネットワークＮと接続し、外部と通信可能である。半導体装置１は、プロセッサ１１及び１２と、メモリ１３と、割込みコントローラ１４と、通信回路１５とを備える。プロセッサ１１及び１２、メモリ１３、割込みコントローラ１４並びに通信回路１５は、データバス１６を介して接続されている。また、プロセッサ１１及び１２、割込みコントローラ１４並びに通信回路１５は、割込み信号線１７を介して接続されている。尚、半導体装置１のその他の構成は、公知のものであるため、図示及び説明を省略する。
【００２６】
メモリ１３は、ＲＡＭ等の揮発性記憶装置である。メモリ１３は、ＯＳ１３１及び１３２を記憶する。ここで、ＯＳ１３１は第１のＯＳの一例であり、通信回路１５を制御する機能を含む。また、ＯＳ１３１は、ＯＳ１３２と比べてセキュリティが同等又は高いものとする。ＯＳ１３２は第２のＯＳの一例であり、本実施形態では通信回路１５の直接の制御（アクセス）を行わないものとする。つまり、ＯＳ１３２は、ＯＳ１３１を介して通信回路１５とのやり取りを行うものとする。また、ＯＳ１３１及び１３２は、共有メモリとＩＰＩ方式による割込みコントローラ１４を介した割込みとによるＯＳ間通信の機能を有するものとする。また、ＯＳ１３１及び１３２は、いずれか一方又は両方が仮想ＯＳであってもよい。
【００２７】
プロセッサ１１及び１２のそれぞれは、ＣＰＵ又はＭＰＵ（MicroProcessor Unit）等の制御装置である。プロセッサ１１は、ＭＭＵ（Memory Management Unit）１１１を有する。尚、プロセッサ１１の他の物理構成は、公知のものであるため、図示及び詳細な説明を省略する。ＭＭＵ１１１は、プロセッサ１１が認識する仮想アドレスとメモリ１３上の物理アドレスとを変換する。また、ＭＭＵ１１１は、一般的なメモリ保護機能、キャッシュ制御機能、バス調停機能等を備えるものである。プロセッサ１１は、データバス１６を介してプロセッサ１２、メモリ１３、割込みコントローラ１４及び通信回路１５等と通信を行う。また、プロセッサ１１は、割込み信号線１７を介して割込みコントローラ１４へ割込み要求を送信し、割込みコントローラ１４から割込み通知を受け付ける。
【００２８】
プロセッサ１１は、第１のプロセッサの一例であり、外部又は内部の他の記憶装置（不図示）に格納されたＯＳ１３１をメモリ１３に読み込んで実行する。そのため、プロセッサ１１は、通信回路１５を直接制御する。
【００２９】
プロセッサ１２は、ＭＭＵ１２１を有する。ＭＭＵ１２１は、上述したＭＭＵ１１１と同等の機能を有する。尚、プロセッサ１２の他の物理構成は、公知のものであるため、図示及び詳細な説明を省略する。プロセッサ１２は、データバス１６を介してプロセッサ１１、メモリ１３、割込みコントローラ１４及び通信回路１５等と通信を行う。また、プロセッサ１２は、割込み信号線１７を介して割込みコントローラ１４へ割込み要求を送信し、割込みコントローラ１４から割込み通知を受け付ける。
【００３０】
プロセッサ１２は、第２のプロセッサの一例であり、外部又は内部の他の記憶装置に格納されたＯＳ１３２をメモリ１３に読み込んで実行する。そのため、プロセッサ１２は、プロセッサ１１を介して通信回路１５を制御する。
【００３１】
割込みコントローラ１４は、割込み信号線１７を介してプロセッサ１１及び１２並びに通信回路１５から割込み要求を受け付け、プロセッサ１１及び１２並びに通信回路１５に対して割込み通知を行う。特に、割込みコントローラ１４は、ＩＰＩ方式によるＯＳ間通信に対応するものである。
【００３２】
通信回路１５は、メモリ１３と半導体装置１の外部との間でＤＭＡ転送を行うためのＤＭＡコントローラや、通信ネットワークＮとＥｔｈｅｒｎｅｔ通信を行う回路を搭載する。通信回路１５は、特許文献１のようなディスクリプタ型のＤＭＡ転送に対応するものとする。
【００３３】
通信ネットワークＮは、有線又は無線の通信回線により形成されたネットワークである。
【００３４】
図２は、本実施の形態１にかかる半導体装置１の構成を示す機能ブロック図である。尚、図１と同一の構成には同一の符号を付している。また、図２では、割込みコントローラ１４と、メモリ１３内のＯＳ１３１及び１３２や他のデータの記載を省略している。メモリ１３は、ディスクリプタ領域１３３と、データ領域１３４と、ディスクリプタ領域１３５と、データ領域１３６とを含む。
【００３５】
ディスクリプタ領域１３３及びデータ領域１３４は、プロセッサ１１により実行されるＯＳ１３１の作業領域である。つまり、ディスクリプタ領域１３３及びデータ領域１３４は、プロセッサ１１の仮想空間上の構造である。そして、ディスクリプタ領域１３３及びデータ領域１３４は、プロセッサ１２からのアクセスを受け付けないものとする。ディスクリプタ領域１３３は、第１のディスクリプタ領域の一例であり、ＯＳ１３１による外部とのデータの送受信を通信回路１５に行わせるための１以上のディスクリプタを保存するための記憶領域である。ここで、ディスクリプタは、送信時に用いられる送信指示情報と、受信時に用いられる受信指示情報とがある。ディスクリプタ領域１３３は、複数の送信指示情報２１１、２１２・・・と、複数の受信指示情報２２１、２２２・・・とを記憶することができる。また、ディスクリプタ領域１３３は、送信指示情報と受信指示情報とを独立して管理することができる。ここで、送信指示情報２１１等は、例えば、送信データが格納されているメモリ１３上の物理アドレス（例えば、開始アドレス）、送信データのサイズ、ＤＭＡ転送の完了状態（送信完了情報）を記録するためのステータス領域等を含む。また、受信指示情報２２２等は、例えば、受信データを格納するためのメモリ１３上の物理アドレス（例えば、開始アドレス）、受信データのサイズ、ＤＭＡ転送の完了状態（受信完了情報）を記録するためのステータス領域等を含む。尚、ディスクリプタの形式は、例えば、特許文献１等の記載の公知の形式を用いても良い。また、ディスクリプタ領域１３３は、ＯＳ１３１用のディスクリプタとＯＳ１３２用のディスクリプタとを混在して保持することができるものとする。
【００３６】
データ領域１３４は、第１のデータ領域の一例であり、ＯＳ１３１による外部とのデータ送受信処理の対象である送信データ２３１及び受信データ２４１を保存するための記憶領域である。尚、本実施形態では、受信データ２４１は、ＯＳ１３２に向けて外部から受信されたデータの場合があり得る。また、データ領域１３４は、２以上の送信データや２以上の受信データを記憶することができる。
【００３７】
ディスクリプタ領域１３５及びデータ領域１３６は、プロセッサ１２により実行されるＯＳ１３２の作業領域である。つまり、ディスクリプタ領域１３５及びデータ領域１３６は、プロセッサ１２の仮想空間上の構造である。但し、ディスクリプタ領域１３５及びデータ領域１３６は、プロセッサ１１からもアクセス可能であるものとする。つまり、ディスクリプタ領域１３５及びデータ領域１３６は、ＯＳ１３１が動作するプロセッサ１１ａ及びＯＳ１３２が動作するプロセッサ１２ａのそれぞれからアクセス可能な共有領域１３０である。ディスクリプタ領域１３５は、第２のディスクリプタ領域の一例であり、ＯＳ１３２のための外部とのデータの送受信を通信回路１５に行わせるための１以上のディスクリプタを保存するための記憶領域である。ディスクリプタ領域１３５は、１以上の送信指示情報２１３と、１以上の受信指示情報２２３とを記憶することができる。また、ディスクリプタ領域１３５は、送信指示情報と受信指示情報とを独立して管理することができる。また、送信指示情報２１３及び受信指示情報２２３に含まれるアドレスは、ＯＳ１３２の管理するデータ領域１３６内のアドレスである。
【００３８】
データ領域１３６は、第２のデータ領域の一例であり、ＯＳ１３２による外部とのデータ送受信処理の対象である送信データ２３２及び受信データ２４２を保存するための記憶領域である。また、データ領域１３６は、２以上の送信データや２以上の受信データを記憶することができる。
【００３９】
プロセッサ１１は、データアクセス３１１、３１２、３１３及び３１５のそれぞれにより、ディスクリプタ領域１３３、データ領域１３４、ディスクリプタ領域１３５及びデータ領域１３６のそれぞれに対してデータの読み書きを行う。また、プロセッサ１１は、データアクセス３１４により通信回路１５との間で通知の送受信を行う。また、プロセッサ１１は、完了割込み３４３により通信回路１５から完了通知を受け付ける。また、プロセッサ１１は、プロセッサ１２との間でＩＰＩ割込み３３１及び３３２により、割込みコントローラ１４を介したＯＳ間通信を行う。
【００４０】
プロセッサ１２は、データアクセス３２１及び３２２のそれぞれにより、ディスクリプタ領域１３５及びデータ領域１３６のそれぞれに対してデータの読み書きを行う。また、プロセッサ１２は、通信回路１５を介したデータ送信及び受信を行う際には、ＩＰＩ割込み３３１によりプロセッサ１１へ通知（送信指示又は受信指示）を行う。また、プロセッサ１２は、通信回路１５により自身宛のデータが受信された場合には、プロセッサ１１からＩＰＩ割込み３３２による通知を受け付ける。
【００４１】
通信回路１５は、データアクセス３４１、３４２及び３４４のそれぞれにより、ディスクリプタ領域１３３、データ領域１３４及びデータ領域１３６のそれぞれに対してデータの読み書きを行う。また、通信回路１５は、プロセッサ１１からデータアクセス３１４により送信指示を受け付けた場合には、ディスクリプタ領域１３３内の送信指示情報２１１等を参照し、データ出力３４５により送信データ２３１又は２３２の送信処理を行う。また、通信回路１５は、プロセッサ１１からデータアクセス３１４により受信指示を受け付けた場合には、ディスクリプタ領域１３３内の受信指示情報２２１等を参照し、データ入力３４６により受信データ２４１の受信処理を行う。
【００４２】
図３及び図４は、本実施の形態１にかかるデータ送信処理の流れを示すシーケンス図である。まず、プロセッサ１２は、通信回路１５を介して通信ネットワークＮへ送信する対象である送信データ２３２を作成し、データアクセス３２２により送信データ２３２をデータ領域１３６に格納する（Ｓ１０１）。次に、プロセッサ１２は、送信データ２３２を通信回路１５に送信させるためのディスクリプタである送信指示情報２１３を作成する（Ｓ１０２）。そして、プロセッサ１２は、データアクセス３２１により送信指示情報２１３をディスクリプタ領域１３５に格納する（Ｓ１０３）。その後、プロセッサ１２は、ＩＰＩ割込み３３１により、プロセッサ１１に対してディスクリプタ領域１３５の更新通知を行う。具体的には、プロセッサ１２は、割込み信号線１７を介して割込みコントローラ１４へ更新通知を送信する（Ｓ１０４）。そして、割込みコントローラ１４は、プロセッサ１２からの更新通知に応じて、割込み信号線１７を介してプロセッサ１１に対して割込み信号を出力する（Ｓ１０５）。
【００４３】
そして、プロセッサ１１は、ＩＰＩ割込み３３１による更新通知（割込みコントローラ１４からの割込み信号。以降、同様。）に応じて、データアクセス３１３により、ディスクリプタ領域１３５から送信指示情報２１３を読み出す。そして、プロセッサ１１は、データアクセス３１１により、読み出した送信指示情報２１３を送信指示情報２１１としてディスクリプタ領域１３３へ格納、つまり、コピーする（Ｓ１０６）。その後、プロセッサ１１は、データアクセス３１４により、通信回路１５へ送信指示を通知する（Ｓ１０７）。
【００４４】
通信回路１５は、プロセッサ１１からの送信指示に応じて、データアクセス３４１によりディスクリプタ領域１３３から送信指示情報２１１を読み出す。そして、通信回路１５は、読み出した送信指示情報２１１がデータ領域１３６内の送信データ２３２を示すため、データアクセス３４４によりデータ領域１３６から送信データ２３２を読み出して、データ出力３４５により送信データ２３２を通信ネットワークＮへＤＭＡ転送を用いて送信する（Ｓ１０８）。その後、通信回路１５は、データアクセス３４１によりＤＭＡ処理の結果である送信完了情報をディスクリプタ領域１３３内の送信指示情報２１１に記録（追加）する（Ｓ１０９）。そして、通信回路１５は、完了割込み３４３によりプロセッサ１１へ完了通知を行う。具体的には、通信回路１５は、割込み信号線１７を介して割込みコントローラ１４へ完了通知を送信する（Ｓ１１０）。そして、割込みコントローラ１４は、通信回路１５からの完了通知に応じて、割込み信号線１７を介してプロセッサ１１に対して割込み信号を出力する（Ｓ１１１）。
【００４５】
プロセッサ１１は、完了割込み３４３による完了通知に応じて、データアクセス３１１によりディスクリプタ領域１３３から送信指示情報２１１（送信完了情報）を読み出して、データアクセス３１３によりディスクリプタ領域１３５へ格納、つまり、送信指示情報２１３（送信完了情報）を更新又はコピーする（Ｓ１１２）。そして、プロセッサ１１は、ＩＰＩ割込み３３２により、プロセッサ１２に対してディスクリプタ領域１３５の更新通知を送信する。具体的には、プロセッサ１１は、割込み信号線１７を介して割込みコントローラ１４へ更新通知を送信する（Ｓ１１３）。そして、割込みコントローラ１４は、プロセッサ１１からの更新通知に応じて、割込み信号線１７を介してプロセッサ１２に対して割込み信号を出力する（Ｓ１１４）。
【００４６】
そして、プロセッサ１２は、ＩＰＩ割込み３３２による更新通知に応じて、データアクセス３２１により、ディスクリプタ領域１３５内の送信指示情報２１３を読み出して、送信結果（送信完了情報）を参照する（Ｓ１１５）。
【００４７】
このように、ＯＳ１３２における通信ネットワークＮへの送信処理は、通信回路１５を直接制御するＯＳ１３１における通信ネットワークＮへの送信処理と一部を変更するだけで大半の処理を共通化することができる。すなわち、ＯＳ１３２における通信ネットワークＮへの送信処理は、通信回路１５への送信指示に代えて、プロセッサ１１へのＩＰＩ割込み３３１によるディスクリプタ領域１３５の更新通知の送信処理に置き換えることになる。また、ＯＳ１３２における通信ネットワークＮへの送信処理は、通信回路１５からの完了通知の受け付け処理に代えて、プロセッサ１１からＩＰＩ割込み３３２によるディスクリプタ領域１３５の更新通知の受信処理に置き換えることになる。そして、それ以外の処理の変更は不要である。
【００４８】
図５及び図６は、本実施の形態１にかかるデータ受信処理の流れを示すシーケンス図である。まず、プロセッサ１２は、通信ネットワークＮから送信されたデータを通信回路１５に受信させるためのディスクリプタである受信指示情報２２３を作成する（Ｓ２０１）。そして、プロセッサ１２は、データアクセス３２１により受信指示情報２２３をディスクリプタ領域１３５に格納する（Ｓ２０２）。その後、プロセッサ１２は、ＩＰＩ割込み３３１により、プロセッサ１１に対してディスクリプタ領域１３５の更新通知を行う（Ｓ２０３及びＳ２０４）。尚、具体的な処理は、上述したステップＳ１０４及びＳ１０５と同様である。
【００４９】
そして、プロセッサ１１は、ＩＰＩ割込み３３１による更新通知に応じて、データアクセス３１３により、ディスクリプタ領域１３５から受信指示情報２２３を読み出す。そして、プロセッサ１１は、データアクセス３１１により、読み出した受信指示情報２２３を受信指示情報２２１としてディスクリプタ領域１３３へ格納、つまり、コピーする（Ｓ２０５）。但し、受信指示情報２２３に含まれるアドレスは、データ領域１３６内のアドレスであるため、プロセッサ１１は、受信指示情報２２１を格納する際に、アドレスをデータ領域１３４内のアドレスに変更してもよい。その後、プロセッサ１１は、データアクセス３１４により、通信回路１５へＥｔｈｅｒｎｅｔのパケット受信が準備完了した旨の受信指示を通知する（Ｓ２０６）。
【００５０】
通信回路１５は、プロセッサ１１からの受信指示に応じて、データアクセス３４１によりディスクリプタ領域１３３内の受信指示情報２２１を参照し、データ入力３４６により通信ネットワークＮからデータを受信する。そして、通信回路１５は、データ受信後に、受信指示情報２２１に基づき、データアクセス３４２によりデータ領域１３４へ受信データ２４１を格納する（Ｓ２０７）。そして、通信回路１５は、データアクセス３４１によりＤＭＡ処理の結果である受信完了情報をディスクリプタ領域１３３内の受信指示情報２２１に記録（追加）する（Ｓ２０８）。そして、通信回路１５は、完了割込み３４３によりプロセッサ１１へ完了通知を行う（Ｓ２０９及びＳ２１０）。
【００５１】
プロセッサ１１は、完了割込み３４３による完了通知に応じて、データアクセス３４２によりデータ領域１３４内の受信データ２４１からデータを読み出し、受信データ２４１がＯＳ１３２又はプロセッサ１２向けのデータであった場合には、データアクセス３１５によりデータ領域１３６内の受信データ２４２としてそのデータを格納、つまり、コピーする（Ｓ２１１）。なお、Ｅｔｈｅｒｎｅｔ通信では通信データの宛先は、受信データであるフレームデータのヘッダに含まれる宛先アドレスにより決まる。そして、プロセッサ１１は、データアクセス３１１により、ディスクリプタ領域１３３内の受信指示情報２２１からコピーしたデータに対応する受信指示情報を読み出し、データアクセス３１３によりディスクリプタ領域１３５内の受信指示情報２２３としてその受信指示情報を格納、つまりコピーする（Ｓ２１２）。但し、受信指示情報２２1に含まれるアドレスは、データ領域１３４内のアドレスであるため、プロセッサ１１は、受信指示情報２２３を格納する際に、アドレスをデータ領域１３５内のアドレスに変更してもよい。そして、プロセッサ１１は、ＩＰＩ割込み３３２により、プロセッサ１２に対してディスクリプタ領域１３５の更新通知を送信する（Ｓ２１３及びＳ２１４）。
【００５２】
そして、プロセッサ１２は、ＩＰＩ割込み３３２による更新通知に応じて、データアクセス３２１により、ディスクリプタ領域１３５内の受信指示情報２２３を読み出して、受信結果（受信完了情報）を参照する（Ｓ２１５）。そして、プロセッサ１２は、データアクセス３２２により、データ領域１３６から受信データ２４２を取得して、適宜、処理を行う（Ｓ２１６）。
【００５３】
このように、ＯＳ１３２における通信ネットワークＮからの受信処理は、通信回路１５を直接制御するＯＳ１３１における通信ネットワークＮからの受信処理と一部を変更するだけで大半の処理を共通化することができる。すなわち、ＯＳ１３２における通信ネットワークＮからの受信処理は、通信回路１５への受信指示に代えて、プロセッサ１１へのＩＰＩ割込み３３１によるディスクリプタ領域１３５の更新通知の送信処理に置き換えることになる。また、ＯＳ１３２における通信ネットワークＮからの受信処理は、通信回路１５からの完了通知の受け付け処理に代えて、プロセッサ１１からＩＰＩ割込み３３２によるディスクリプタ領域１３５の更新通知の受信処理に置き換えることになる。そして、それ以外の処理の変更は不要である。
【００５４】
また、上述した関連技術では、プロセッサ９１がプロセッサ９２の仮想空間（共有領域９３６）上の送信データ２３２を、ＯＳ間通信により、自己の仮想空間（データ領域１３４）上にコピーしていた。しかし、本実施形態では、ＯＳ間通信に伴う送信データのコピー処理を削減することができる。仮に、最も効果が薄い場合、つまり、送信データのサイズが最小であっても効果を奏する。すなわち、送信データが最小フレームサイズ６４ｂｙｔｅであり、かつ、ディスクリプタサイズが８ｂｙｔｅの場合でも、送信データのコピー処理は、８  ／  （６４＋８）＊１００＝１１．１％まで低減できる。また、ＯＳ１３１の管理外である別空間のデータ領域１３６に送信データ２３２を存在させたままでデータを送信できるという効果もある。
【００５５】
また、関連技術では、プロセッサ９１側の通信処理とプロセッサ９２側の通信処理とは大きく異なる処理を実装する必要があった。しかし、本実施形態では、上述した通り、プロセッサ１２側においてもディスクリプタ構造を用いるため、プロセッサ１１側と大半が共通する処理により実現できる。よって、開発効率が向上する。
【００５６】
さらに、本実施形態において、ステップＳ１０６やＳ２０５等のディスクリプタのコピー処理時に、プロセッサ１１は、ディスクリプタが示すアドレスがデータ領域１３６内のアドレスを示すか否かをチェックすることにより、セキュリティを向上させることもできる。
【００５７】
ここで、本実施形態の他の実施例について説明する。他の実施例では、複数のディスクリプタを一括してコピーするものである。すなわち、前記第２のプロセッサは、前記第２のデータ領域に格納された２以上の前記送信データのそれぞれに対応した２以上の前記第１の送信指示情報を前記第２のディスクリプタ領域に格納し、前記第２のディスクリプタ領域に２以上の前記第１の送信指示情報を格納した場合に、前記第１の更新通知を送信することが望ましい。この場合、前記第１のプロセッサは、前記第１の更新通知に応じて、前記第２のディスクリプタ領域に格納された２以上の前記第１の送信指示情報の格納順に従って、各第１の送信指示情報を前記第１のディスクリプタ領域に格納する。そして、前記通信回路は、前記第１のディスクリプタ領域に格納された２以上の前記第１の送信指示情報の格納順に従って、前記第２のデータ領域に格納済みである各第１の送信指示情報に対応する前記送信データの送信処理を行う。このように、２以上の通信指示情報をまとめてＩＰＩ通信の頻度を削減し、プロセッサの処理負荷をさらに減少できる。
【００５８】
図７、図８及び図９は、本実施の形態１にかかるデータ送信処理（複数ディスクリプタ一括コピー）の流れを示すシーケンス図である。尚、データ受信処理においても同様であり、同様の効果が得られるため、図示及び詳細な説明を省略する。
【００５９】
まず、プロセッサ１２は、通信回路１５を介して通信ネットワークＮへ送信する対象である１件目の送信データ２３２ａを作成し、ステップＳ１０１と同様に、データアクセス３２２により送信データ２３２ａをデータ領域１３６に格納する（Ｓ１０１ａ）。次に、プロセッサ１２は、ステップＳ１０２と同様に、送信データ２３２ａを通信回路１５に送信させるためのディスクリプタである送信指示情報２１３ａを作成する（Ｓ１０２ａ）。そして、プロセッサ１２は、ステップＳ１０３と同様に、データアクセス３２１により送信指示情報２１３ａをディスクリプタ領域１３５に格納する（Ｓ１０３ａ）。以降、２件目（送信データ２３２ｂ、送信指示情報２１３ｂ）以降も同様に、ｎ件目（送信データ２３２ｎ、送信指示情報２１３ｎ）まで行う（Ｓ１０１ｎ、Ｓ１０２ｎ及びＳ１０３ｎ）。つまり、この時点で、データ領域１３６にはｎ件の送信データが格納され、ディスクリプタ領域１３５にはｎ件の送信指示情報がａからｎの順序で格納されていることになる。
【００６０】
続いて、プロセッサ１２は、ＩＰＩ割込み３３１により、プロセッサ１１に対してディスクリプタ領域１３５の更新通知を行う（Ｓ１０４及びＳ１０５）。そして、プロセッサ１１は、ＩＰＩ割込み３３１による更新通知に応じて、データアクセス３１３により、ディスクリプタ領域１３５からｎ件の送信指示情報２１３ａから２１３ｎを読み出す。そして、プロセッサ１１は、データアクセス３１１により、読み出したｎ件の送信指示情報２１３ａから２１３ｎをディスクリプタ領域１３５での格納順に従って、ｎ件の送信指示情報２１１ａから２１１ｎとしてディスクリプタ領域１３３へ格納、つまり、コピーする（Ｓ１０６ｘ）。その後、プロセッサ１１は、データアクセス３１４により、通信回路１５へ送信指示を通知する（Ｓ１０７）。
【００６１】
通信回路１５は、プロセッサ１１からの送信指示に応じて、ディスクリプタ領域１３３内のｎ件の送信指示情報２１１ａから２１１ｎを格納順に従って、データ領域１３６内の送信データを送信する。具体的には、通信回路１５は、ディスクリプタ領域１３３内で１件目に格納された送信指示情報２１１ａに基づいて、データアクセス３４４によりデータ領域１３６内で１件目に格納された送信データ２３２ａを読み出す。そして、通信回路１５は、読み出した送信データ２３２をデータ出力３４５により通信ネットワークＮへ送信する（Ｓ１０８ａ）。その後、通信回路１５は、送信完了情報ａをディスクリプタ領域１３３内の送信指示情報２１１ａに記録し（Ｓ１０９ａ）、完了割込み３４３によりプロセッサ１１へ完了通知を行う（Ｓ１１０ａ及びＳ１１１ａ）。２件目以降も同様に、ｎ件目（送信データ２３２ｎ、送信指示情報２１１ｎ）まで行う（Ｓ１０８ｎ、Ｓ１０９ｎ、Ｓ１１０ｎ及びＳ１１１ｎ）。
【００６２】
プロセッサ１１は、完了割込み３４３によるｎ件目の完了通知に応じて、データアクセス３１１によりディスクリプタ領域１３３からｎ件の送信指示情報２１１ａ‐２１１ｎ（送信完了情報ａ‐２１１ｎ）を読み出して、データアクセス３１３によりディスクリプタ領域１３５へ格納する（Ｓ１１２ｘ）。そして、プロセッサ１１は、ＩＰＩ割込み３３２により、プロセッサ１２に対してディスクリプタ領域１３５の更新通知を送信する（Ｓ１１３及びＳ１１４）。
【００６３】
そして、プロセッサ１２は、ＩＰＩ割込み３３２による更新通知に応じて、データアクセス３２１により、ディスクリプタ領域１３５内のｎ件の送信指示情報２１３ａ‐２１３ｎを読み出して、ｎ件の送信結果（送信完了情報ａ‐ｎ）を参照する（Ｓ１１５ｘ）。
【００６４】
上述した関連技術では、１つのＥｔｈｅｒｎｅｔフレーム毎にＩＰＩ割込み９３１及び９３２の組のＯＳ間通信が発生する。例えば、3つのＥｔｈｅｒｎｅｔフレームの送信要求がある場合は３回のＩＰＩのやり取り、つまり計６回のＩＰＩが発生する。これに対し、本実施形態の上述した他の実施例では、３つのＥｔｈｅｒｎｅｔフレームの送信要求がある場合、３つのディスクリプタを１度にコピーすればよいので、ＯＳ間通信をＩＰＩ割込み３３１及び３３２の合計２回に減らすことができる。Ｇｉｇａｂｉｔ  Ｅｔｈｅｒｎｅｔで１つの通信が最小フレームサイズ６４ｂｙｔｅの場合、秒間１４８８０００回通信が発生する。１回の割り込みへの応答処理のみで１ｕｓ（マイクロ秒）の処理時間が必要な場合、関連技術では、１４８８０００＊２＊１ｕｓ＝２．９７６ｓの処理時間が必要となる。しかしながら、処理時間が１秒を超えてしまうため、処理が追い付かない。これに対し、本実施形態の上述した他の実施例では、２．９７６ｓ／３＝０．９９２ｓの処理時間まで低減でき、処理することが可能となる。尚、３つのＥｔｈｅｒｎｅｔフレームをまとめるのは例であり、一度にコピーするディスクリプタ数を増やすことで更に処理時間を低減することができる。
【００６５】
＜実施形態２＞
本実施形態２は、上述した実施形態１の他の実施例、又は、実施形態１の改良例である。実施形態１では、プロセッサ１２宛の受信データを、プロセッサ１１がデータ領域１３４からデータ領域１３６へコピーする処理があり、プロセッサの処理負荷を軽減する余地がある。ここで、Ｅｔｈｅｒｎｅｔ通信では通信データの宛先は、フレームデータのヘッダに含まれる宛先アドレスにより決まる。フレームデータの解析が必要となる。しかし、プロセッサは、メモリに格納後のフレームデータのヘッダを解析することはできるが、ＤＭＡ転送中である格納前に格納先のデータ領域を判定して振り分けることができない。そのため、通信ネットワークＮからの受信データの格納先のデータ領域を宛先により振り分けるには、通信回路がデータを受信時に宛先を判定することが考えられる。
【００６６】
そこで、本実施形態２にかかる半導体装置は、実施形態１に改良を加え、前記通信回路は、前記受信データの宛先が前記第２のＯＳを示す場合に、前記第２のデータ領域に前記受信データを格納し、前記第１のディスクリプタ領域に前記受信完了情報を格納し、前記第１のプロセッサに対して前記受信処理の完了通知を送信するものである。これにより、受信データのコピー処理を削減し、プロセッサの処理負荷をさらに減少させることができる。
【００６７】
さらに、前記第１のディスクリプタ領域は、前記第１のデータ領域に対応する第１のサブ領域と、前記第２のデータ領域に対応する第２のサブ領域とを含めることが望ましい。その場合、前記第１のプロセッサは、前記第３の更新通知に応じて、前記第１の受信指示情報を前記第２のサブ領域に格納する。そして、前記通信回路は、前記第１のＯＳに対応する第１の通信アドレス情報と、前記第２のＯＳに対応する第２の通信アドレス情報とを保持し、前記受信データの宛先に前記第１及び第２の通信アドレス情報のそれぞれが含まれるか否かを判定し、前記宛先に前記第２の通信アドレス情報が含まれると判定した場合に、前記第２のデータ領域に前記受信データを格納するとよい。このように、第１のディスクリプタ領域を２つのサブ領域に分割し、指示情報を分けて管理することで、ＯＳごとのアドレス情報に応じて格納先を特定でき、マルチキャストに対応することもできる。
【００６８】
さらに、前記通信回路は、前記第１のデータ領域及び前記第１のサブ領域にアクセス可能な第１の分類器と、前記第２のデータ領域及び前記第２のサブ領域にアクセス可能な第２の分類器と、を含むとよい。この場合、前記通信回路は、前記受信データを前記第１の分類器及び前記第２の分類器のそれぞれへ入力する。特に、前記第２の分類器は、前記宛先に前記第２の通信アドレス情報が含まれると判定した場合、前記第２のサブ領域に格納された前記第１の受信指示情報に基づき、前記第２のデータ領域を前記格納先として特定し、前記第２のデータ領域に前記受信データを格納する。これにより、ＯＳごとのアドレス情報に応じて格納先を特定でき、振り分けが効率的となる。
【００６９】
尚、本実施形態２は、上述した実施形態１を前提とせず、単独の構成としてもよい。その場合、本実施形態２にかかる半導体装置は、互いに異なるＯＳ（Operating System）を実行する第１のプロセッサ及び第２のプロセッサと、メモリと、前記第１のプロセッサにより制御される通信回路と、を備える。そして、前記メモリは、前記第１のプロセッサにより実行される第１のＯＳの作業領域である第１のディスクリプタ領域及び第１のデータ領域と、前記第２のプロセッサにより実行される第２のＯＳの作業領域である第２のディスクリプタ領域及び第２のデータ領域と、を含む。ここで、前記第２のプロセッサは、受信データを前記第２のデータ領域に格納するための第１の受信指示情報を前記第２のディスクリプタ領域に格納し、前記第１のプロセッサに対して前記第２のディスクリプタ領域の第３の更新通知を送信する。そして、前記第１のプロセッサは、前記第３の更新通知に応じて、前記第２のディスクリプタ領域に格納された前記受信指示情報を読み出して、前記第１のディスクリプタ領域に格納する。ここで、前記第１のディスクリプタ領域は、前記第１のデータ領域に対応する第１のサブ領域と、前記第２のデータ領域に対応する第２のサブ領域とを含む。そして、前記第１のプロセッサは、前記第３の更新通知に応じて、前記第２のディスクリプタ領域から読み出した前記第１の受信指示情報を前記第２のサブ領域に格納する。そして、前記通信回路は、前記第１のＯＳ又は前記第１のプロセッサに対応する第１の通信アドレス情報と、前記第２のＯＳ前記第２のプロセッサに対応する第２の通信アドレス情報とを保持する。前記通信回路は、前記受信データの宛先に前記第１及び第２の通信アドレス情報のそれぞれが含まれるか否かを判定し、前記宛先に前記第２の通信アドレス情報が含まれると判定した場合に、前記第２のデータ領域に前記受信データを格納する。このようにしても、関連技術と比べて、受信データのコピー処理を削減し、プロセッサの処理負荷を減少させることができる。また、実施形態１と同様に、開発効率を向上させることもできる。
【００７０】
ここで、本実施形態２のハードウェア構成は図１と同様であるため、図示及び説明を省略する。次に、図１０は、本実施の形態２にかかる半導体装置１ａの構成を示す機能ブロック図である。半導体装置１ａは、上述した半導体装置１の一部の構成を変更したものである。すなわち、半導体装置１ａは、半導体装置１のメモリ１３内のディスクリプタ領域１３３が、サブ領域１３３１と１３３２の分割されたディスクリプタ領域１３３ａに置き換わったものである。また、半導体装置１ａは、半導体装置１のプロセッサ１１及び１２並びに通信回路１５が、プロセッサ１１ａ及び１２ａ並びに通信回路１５ａに置き換わったものである。更に、ディスクリプタ領域１３５は、ＯＳ１３１が動作するプロセッサ１１ａとＯＳ１３２が動作するプロセッサ１２ａのそれぞれからアクセス可能な共有領域１３０ａである。尚、図２と同等の構成については同一の符号を付し、説明を省略する。
【００７１】
サブ領域１３３１は、ＯＳ１３１が管理するデータ領域１３４に対応するディスクリプタ領域であり、第１のサブ領域の一例である。また、サブ領域１３３２は、ＯＳ１３２が管理するデータ領域１３６に対応するディスクリプタ領域であり、第２のサブ領域の一例である。そのため、本実施形態２では、ＯＳ１３１用のディスクリプタとＯＳ１３２用のディスクリプタとを混在させず、独立して管理する。サブ領域１３３１は、送信指示情報２１１と受信指示情報２２１とを記憶する。すなわち、送信指示情報２１１と受信指示情報２２１は、ＯＳ１３１により処理される。また、サブ領域１３３２は、送信指示情報２１２と受信指示情報２２２とを記憶し、ディスクリプタ領域１３５内の送信指示情報２１３と受信指示情報２２３とに対応するものである。尚、データ領域１３６は、実施形態１と異なり、プロセッサ１１ａからのアクセスを受け付けないものとする。
【００７２】
プロセッサ１１ａは、データアクセス３１１１及び３１１２のそれぞれにより、サブ領域１３３１及び１３３２のそれぞれに対してデータの読み書きを行う。特に、プロセッサ１１ａは、ディスクリプタ領域１３５とサブ領域１３３２との間でディスクリプタのコピーを行う。
【００７３】
通信回路１５ａは、通信ネットワークＮからの受信データの宛先がＯＳ１３２又はプロセッサ１２ａを示す場合に、データ領域１３６に受信データ２４２として直接格納し、ディスクリプタ領域１３３ａに受信完了情報を格納し、プロセッサ１１ａに対して受信処理の完了通知を送信する。さらに、通信回路１５ａは、ＯＳ１３１又はプロセッサ１１ａに対応する第１の通信アドレス情報と、ＯＳ１３２又はプロセッサ１２ａに対応する第２の通信アドレス情報とを保持し、受信データの宛先に第１及び第２の通信アドレス情報のそれぞれが含まれるか否かを判定し、宛先に第２の通信アドレス情報が含まれると判定した場合に、データ領域１３６に受信データを格納する。
【００７４】
図１１は、本実施の形態２にかかる通信回路１５ａの内部構成を示す機能ブロック図である。通信回路１５ａは、分類器４１及び４２、メモリアクセス部４３及び４４、並びに、制御部４５を含む。但し、通信回路１５ａは、２つの分類器を有する以外は、他の構成であってもよい。つまり、通信回路１５ａは、少なくとも複数の受信ＤＭＡチャネルを搭載し、各受信ＤＭＡチャネルとして各分類器を有するものである。そのため、分類器は３以上であってもよい。
【００７５】
分類器４１は、データ領域１３４及びサブ領域１３３１にアクセス可能なものである。分類器４２は、データ領域１３６及びサブ領域１３３２にアクセス可能なものである。通信回路１５ａは、通信ネットワークＮからデータ入力３４６により受信した受信データを分類器４１及び４２のそれぞれへ入力する。
【００７６】
分類器４１は、記憶部４１１と判定部４１２とを備える。記憶部４１１は、ＯＳ１３１又はプロセッサ１１ａを示す通信アドレス情報４１３を予め記憶する。通信アドレス情報４１３は、例えば、所属ＶＬＡＮ  ＩＤ４１３１及びＭＡＣアドレス４１３２であるが、これらに限定されない。判定部４１２は、入力された受信データの宛先に通信アドレス情報４１３が含まれるか否かを判定し、含まれると判定した場合、判定結果を受信要として、受信データと判定結果をメモリアクセス部４３へ出力する。一方、宛先にＯＳ１３１又はプロセッサ１１ａを示す通信アドレス情報４１３が含まれない場合、判定部４１２は、受信データを破棄し、判定結果を受信不要として、判定結果をメモリアクセス部４３へ出力する。
【００７７】
メモリアクセス部４３は、ＤＭＡ転送を処理する。具体的には、メモリアクセス部４３は、データアクセス３４１１によりサブ領域１３３１へアクセス可能であり、データアクセス３４２によりデータ領域１３４へアクセス可能である。また、メモリアクセス部４３は、制御部４５からの送信指示に応じて、サブ領域１３３１を参照して、データ領域１３４内の送信データをデータ出力３４５により通信ネットワークＮへ送信する。また、メモリアクセス部４３は、分類器４１からの判定結果が受信要である場合、サブ領域１３３１を参照して、受け付けた受信データを、データ領域１３４へ格納する。
【００７８】
分類器４２は、記憶部４２１と判定部４２２とを備える。記憶部４２１は、ＯＳ１３２又はプロセッサ１２ａを示す通信アドレス情報４２３を予め記憶する。通信アドレス情報４２３は、例えば、所属ＶＬＡＮ  ＩＤ４２３１及びＭＡＣアドレス４２３２であるが、これらに限定されない。判定部４２２は、入力された受信データの宛先に通信アドレス情報４２３が含まれるか否かを判定し、含まれると判定した場合、判定結果を受信要として、受信データと判定結果をメモリアクセス部４４へ出力する。一方、宛先にＯＳ１３２又はプロセッサ１２ａを示す通信アドレス情報４２３が含まれない場合、判定部４２２は、受信データを破棄し、判定結果を受信不要として、判定結果をメモリアクセス部４４へ出力する。
【００７９】
メモリアクセス部４４は、ＤＭＡ転送を処理する。具体的には、メモリアクセス部４４は、データアクセス３４１２によりサブ領域１３３２へアクセス可能であり、データアクセス３４４によりデータ領域１３６へアクセス可能である。また、メモリアクセス部４４は、制御部４５からの送信指示に応じて、サブ領域１３３２を参照して、データ領域１３６内の送信データをデータ出力３４５により通信ネットワークＮへ送信する。また、メモリアクセス部４４は、分類器４２からの判定結果が受信要である場合、サブ領域１３３２を参照して、受け付けた受信データを、データ領域１３６へ格納する。
【００８０】
制御部４５は、データアクセス３１４によりプロセッサ１１ａからの送信指示及び受信指示を受け付け、完了割込み３４３により完了通知を送信する。また、制御部４５は、送信指示及び受信指示に応じてメモリアクセス部４３及び４４へ指示する。
【００８１】
図１２及び図１３は、本実施の形態２にかかるデータ受信処理の流れを示すシーケンス図である。尚、上述した図５及び図６と同等の処理については適宜、説明を省略する。まず、プロセッサ１１ａは、プロセッサ１２ａからのＩＰＩ割込み３３１による更新通知に応じて、データアクセス３１３により、ディスクリプタ領域１３５から受信指示情報２２３を読み出す。そして、プロセッサ１１ａは、データアクセス３１１により、読み出した受信指示情報２２３を受信指示情報２２２としてサブ領域１３３２へ格納、つまり、コピーする（Ｓ２０５ａ）。このとき、プロセッサ１１ａは、受信指示情報２２３内のアドレスを変更せず、そのまま受信指示情報２２２とする。
【００８２】
通信回路１５ａは、プロセッサ１１ａからの受信指示（Ｓ２０６）に応じて、データアクセス３４１１及び３４１２によりサブ領域１３３１及び１３３２内の受信指示情報２２１及び２２２を参照し、データ入力３４６により通信ネットワークＮからデータを受信する（Ｓ２０７ａ）。
【００８３】
図１４は、本実施の形態２にかかる受信処理の流れを示すフローチャートである。尚、図１４は、分類器４１及びメモリアクセス部４３の組合せ、又は、分類器４２及びメモリアクセス部４４の組合せのいずれであっても同様の処理である。以下の説明では、分類器４２及びメモリアクセス部４４の組合せの場合について説明する。
【００８４】
まず、分類器４２は、受信データである受信通信フレームの入力を受け付ける（Ｓ３０１）。次に、判定部４２２は、受信通信フレームのヘッダにＱ−Ｔａｇ  ＶＬＡＮが付与されているか否かを判定する（Ｓ３０２）。ここで、「Ｑ−Ｔａｇ  ＶＬＡＮ」は、IEEE Std 802.1Q（登録商標）-2014、IEEE Standard for Local and metropolitan area networks - Bridges and Bridged Networksに規定されたものである。ステップＳ３０２でＮＯの場合、ステップＳ３０４へ進む。また、ステップＳ３０２でＹＥＳの場合、判定部４２２は、Ｑ−Ｔａｇ  ＶＬＡＮが自身の所属ＶＬＡＮ  ＩＤと一致するか否かを判定する（Ｓ３０３）。具体的には、判定部４２２は、記憶部４２１から所属ＶＬＡＮ  ＩＤ４２３１を読み出して、Ｑ−Ｔａｇ  ＶＬＡＮと所属ＶＬＡＮ  ＩＤ４２３１との一致を判定する。ステップＳ３０３で一致すると判定した場合、ステップＳ３０４へ進む。
【００８５】
続いて、判定部４２２は、受信通信フレームの宛先アドレスがブロードキャスト／マルチキャストアドレスであるか否かを判定する（Ｓ３０４）。具体的には、判定部４２２は、宛先アドレスの８ｂｉｔ目が１である場合、ブロードキャスト／マルチキャストであると判定し、ステップＳ３０６へ進む。一方、ステップＳ３０４でＮＯの場合、判定部４２２は、宛先アドレスが自身のＭＡＣアドレスであるか否かを判定する（Ｓ３０５）。具体的には、判定部４２２は、記憶部４２１からＭＡＣアドレス４２３２を読み出し、宛先アドレスとＭＡＣアドレス４２３２との一致を判定する。ステップＳ３０５で一致すると判定した場合、ステップＳ３０６へ進む。
【００８６】
そして、ステップＳ３０４又はステップＳ３０５でＹＥＳの場合、判定部４２２は、判定結果を受信要として、受信通信フレームと共に、接続されたメモリアクセス部４４へ出力する（Ｓ３０６）。
【００８７】
メモリアクセス部４４は、判定結果が受信要であるため、データアクセス３４１２により、接続されたディスクリプタ領域であるサブ領域１３３２から、受信指示情報２２２を読み出し、格納先をデータ領域１３６内のアドレスと特定する（Ｓ３０７）。そして、メモリアクセス部４４は、データアクセス３４４により、特定された格納先であるデータ領域１３６へ受信通信フレームを受信データ２４２として格納する（Ｓ３０８）。その後、メモリアクセス部４４は、データアクセス３４１２により、サブ領域１３３２内の受信指示情報２２２へ受信完了情報を格納する（Ｓ３０９、図１２のＳ２０８ａ）。
【００８８】
一方、ステップＳ３０３又はＳ３０５でＮＯの場合、判定部４２２は、受信通信フレームを破棄する（Ｓ３１０）。そして、判定部４２２は、判定結果を受信不要として接続されたメモリアクセス部４４へ出力する（Ｓ３１１）。
【００８９】
図１２に戻り説明を続ける。通信回路１５ａは、完了割込み３４３によりプロセッサ１１へ完了通知を行う（Ｓ２０９及びＳ２１０）。
【００９０】
プロセッサ１１ａは、完了割込み３４３による完了通知に応じて、（図１０と図１３を参照）データアクセス３１１２によりサブ領域１３３２から受信指示情報２２２（受信完了情報）を読み出して、データアクセス３１３によりディスクリプタ領域１３５へ格納、つまり、受信指示情報２２３（受信完了情報）を更新又はコピーする（Ｓ２１１ａ）。尚、このとき、受信データのコピー処理は発生しない。以降、プロセッサ１１ａ及び１２ａにより、上述した通り、ステップＳ２１３からＳ２１６が同様に行われる。
【００９１】
上述したように、実施形態１（図２）では、プロセッサ１１がプロセッサ１２宛に、自己が管理するデータ領域１３４に受信したデータを一旦格納した上で、ＯＳ間通信により、プロセッサ１２がアクセス可能な共有領域１３６へ受信データをコピーしていた。これに対して、本実施形態２では、ＯＳ間通信に伴う受信データのコピー処理を削減することができる。よって、実施形態１と比べてさらにプロセッサの処理負荷を軽減できる。また、実施形態１と比較しなくとも、受信処理単独で、受信データのコピー処理がないことにより、プロセッサの処理負荷を軽減できるといえる。
【００９２】
＜実施形態３＞
本実施形態３は、上述した実施形態１の改良例である。実施形態１では上述した通り、プロセッサ１１は、プロセッサ１２からのＩＰＩ割込み３３１による更新通知に応じて、ディスクリプタ領域１３５から送信指示情報２１３を読み出して、ディスクリプタ領域１３３へ格納する。このとき、プロセッサ１１側でもディスクリプタを生成し、ディスクリプタ領域１３３へ格納する場合がある。この場合、上述した通り、各ＯＳのディスクリプタをディスクリプタ領域１３３において統合する。
【００９３】
ここで、ＯＳ１３１及び１３２のそれぞれは、一旦、通信ネットワークＮ向けのデータ送信リクエストが発生すると、多数のディスクリプタを連続して生成し、ディスクリプタ領域へ連続して格納することとなる。よって、ＯＳ１３１独自の送信指示情報とＯＳ１３２の送信指示情報との格納タイミングが競合することとなる。格納タイミングについて何も調停を行わないと、一方のＯＳのディスクリプタの格納が後回しにされる可能性もあり、ＱｏＳ（Quality of Service）が担保されない。尚、受信指示情報についても同様の問題が起こり得る。
【００９４】
そこで、本実施形態３では、実施形態１におけるプロセッサ１１で実行されるＯＳ１３１におけるディスクリプタのコピー処理に変更を加えることで、各ＯＳのディスクリプタの格納数、データサイズ等を調整することで、各ＯＳの通信容量を制御することで、ＱｏＳ制御を実現するものである。
【００９５】
すなわち、前記第１のプロセッサは、前記第１の更新通知に応じて、前記第２のディスクリプタ領域に格納された前記第１の送信指示情報と、前記第１のデータ領域に格納された送信データに対応する第２の送信指示情報とを前記第１のディスクリプタ領域に格納する順序を、前記第２の送信指示情報に対応する前記第１のＯＳ及び前記第１の送信指示情報に対応する前記第２のＯＳに対して予め設定された通信容量の割合に基づいて制御するものである。このように、一つのディスクリプタ領域に複数のＯＳのディスクリプタを混在させる際に、各ＯＳの通信容量を制御することで、ＱｏＳ制御を実現できる。
【００９６】
さらに、前記第１のプロセッサは、前記第１のＯＳ及び前記第２のＯＳの予め設定された通信容量の割合として、単位時間当たりの前記第１の送信指示情報及び前記第２の送信指示情報のサイズ又は件数を割り当てたものを用いるとよい。これにより、ＱｏＳ制御をより効果的に実現できる。
【００９７】
本実施形態３にかかる半導体装置は、実施形態１におけるプロセッサ１１で実行されるＯＳ１３１におけるディスクリプタのコピー処理に変更を加えたものである。よって、ハードウェア構成、機能ブロック図は同等であるため、図示及び説明を省略する。
【００９８】
ここで、各ＯＳの通信容量の割当方式として、例えば、以下の実施例３−１や３−２が挙げられる。但し、割当方式はこれらに限定されない。
【００９９】
（実施例３−１：Round Robin方式）
実施例３−１では、ＯＳ１３１に予め、ＯＳ１３１側とＯＳ１３２側とで、通信容量を均等に割り当てる設定をしているものとする。そして、プロセッサ１１は、ディスクリプタ領域１３５から複数の送信指示情報２１３を順番に読み出してディスクリプタ領域１３３に格納することと、ＯＳ１３１側の送信指示情報をディスクリプタ領域１３３に格納することとを交互に行う。このとき、プロセッサ１１は、各送信指示情報により送信されるデータ量を同一サイズとなるように制御するものとする。図１５は、本実施の形態３にかかる通信容量をＯＳごとに均等に割り当てる場合（Round Robin方式）のディスクリプタ合成例を示す図である。
【０１００】
（実施例３−２：Token Bucket方式）
実施例３−２では、ＯＳ１３１に予め、ＯＳ１３１側とＯＳ１３２側とのそれぞれ個別に時間単位毎の累積サイズ上限値を設定済みであるものとする。そして、プロセッサ１１は、時間単位毎に、ＯＳ１３１側とＯＳ１３２側とのディスクリプタを切り替え制御するとToken Bucketとなる。例えば、プロセッサ１１は、事前に累積サイズ上限値を満たすように、ＯＳ間の通信容量の比率を算出し、単位時間当たりに割当可能なディスクリプタのサイズを算出しておく。そして、プロセッサ１１は、ディスクリプタの統合時に、算出値に応じてディスクリプタを分割等して格納し、時間単位ごとに対象のＯＳを切り替える。
【０１０１】
図１６は、本実施の形態３にかかる単位時間当たりのディスクリプタの累積サイズ上限値ＯＳごとに設定した場合（Token Bucket方式）のディスクリプタ合成例を示す図である。図１６の例では、プロセッサ１１ｃ側（斜線部分）の送信レートを２Ｍｂｐｓ（２５０ｂｙｔｅ/ｍｓ）、プロセッサ１２ｃ側（ドット部分）の送信レートを４Ｍｂｐｓ（５００ｂｙｔｅ/ｍｓ）と割り当てた場合を示す。このとき、
１Ｍｂｐｓ＝（１００００００／８）／１０００＝１２５ｂｙｔｅ／ｍｉｌｌｉｓｅｃｏｎｄｓ
となる。このように、ＱｏＳ制御が可能となる。
【０１０２】
ここで、プロセッサ１１で動作するＯＳ１３１がセキュアＯＳである場合、他のＯＳ１３２からの異常なＥｔｈｅｒｎｅｔフレーム転送要求が発生したとしても、上述したように、各ＯＳに設定された通信容量の割合の範囲内でしか、ディスクリプタがコピーされない。よって、結果的に、過剰なフレーム転送要求を遮断できることになる。特に、ＯＳ１３２が異常な量のＥｔｈｅｒｎｅｔフレームの送信を要求する場合には、悪意のあるアプリケーションを実行しているか又は暴走していることが考えられる。よって、本実施形態３は、外部システムへの悪影響を抑える機能安全の制御として有効である。また、プロセッサ１１で動作するＯＳ１３１にセキュアＯＳを用いることで、他のＯＳ１３２の異常を抑えることで、不正動作を抑え、システムとしての堅牢性を高めることができる。
【０１０３】
＜その他の実施形態＞
尚、上述した実施形態では、プロセッサとＯＳが一対一の場合について説明したが、これに限定されず、プロセッサ数とＯＳ数との比率が異なってしても各実施形態は適用可能である。また、ＯＳ間通信にハイパーバイザが介在してもよい。また、通信回路は、Ｅｔｈｅｒｎｅｔ通信用ハードウェアに限定しない。
【０１０４】
また、上述した実施形態では、単体の半導体装置の場合について説明したが、各実施形態は、情報処理システムに対しても適用可能である。その場合、情報処理システムは、次の構成をとることができる。すなわち、情報処理システムは、
互いに異なるＯＳ（Operating System）を実行する第１のプロセッサ及び第２のプロセッサと、
メモリと、
前記第１のプロセッサにより制御される通信回路と、を備え、
前記メモリは、
前記第１のプロセッサにより実行される第１のＯＳの作業領域である第１のディスクリプタ領域及び第１のデータ領域と、
前記第２のプロセッサにより実行される第２のＯＳの作業領域である第２のディスクリプタ領域及び第２のデータ領域と、を含み、
前記第２のプロセッサは、
前記第２のデータ領域に格納された送信データに対応する第１の送信指示情報を前記第２のディスクリプタ領域に格納し、
前記第１のプロセッサに対して前記第２のディスクリプタ領域の第１の更新通知を送信し、
前記第１のプロセッサは、
前記第１の更新通知に応じて、前記第２のディスクリプタ領域に格納された前記第１の送信指示情報を読み出して、前記第１のディスクリプタ領域に格納し、
前記通信回路は、
前記第１のディスクリプタ領域に格納された前記第１の送信指示情報に基づき、前記第２のデータ領域に格納された前記送信データの送信処理を行う。
これにより、実施形態１と同様の効果を奏する。
【０１０５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１０６】
１  半導体装置
１ａ  半導体装置
１１  プロセッサ
１１ａ  プロセッサ
１１ｂ  プロセッサ
１１ｃ  プロセッサ
１１１  ＭＭＵ
１２  プロセッサ
１２ａ  プロセッサ
１２ｂ  プロセッサ
１２ｃ  プロセッサ
１２１  ＭＭＵ
１３  メモリ
１３０  共有領域
１３０ａ  共有領域
１３１  ＯＳ
１３２  ＯＳ
１３３  ディスクリプタ領域
１３３ａ  ディスクリプタ領域
１３３１  サブ領域
１３３２  サブ領域
１３４  データ領域
１３５  ディスクリプタ領域
１３６  データ領域
１４  割込みコントローラ
１５  通信回路
１５ａ  通信回路
１５１  通知
１５２  通知
１５３  判定結果
１５４  判定結果
１６  データバス
１７  割込み信号線
Ｎ  通信ネットワーク
２１１  送信指示情報
２１２  送信指示情報
２１３  送信指示情報
２２１  受信指示情報
２２２  受信指示情報
２２３  受信指示情報
２３１  送信データ
２３２  送信データ
２４１  受信データ
２４２  受信データ
３１１  データアクセス
３１１１  データアクセス
３１１２  データアクセス
３１２  データアクセス
３１３  データアクセス
３１４  データアクセス
３１５  データアクセス
３２１  データアクセス
３２２  データアクセス
３３１  ＩＰＩ割込み
３３２  ＩＰＩ割込み
３４１  データアクセス
３４１１  データアクセス
３４１２  データアクセス
３４２  データアクセス
３４３  完了割込み
３４４  データアクセス
３４５  データ出力
３４６  データ入力
４１  分類器
４１１  記憶部
４１２  判定部
４１３  通信アドレス情報
４１３１  所属ＶＬＡＮ  ＩＤ
４１３２  ＭＡＣアドレス
４２  分類器
４２１  記憶部
４２２  判定部
４２３  通信アドレス情報
４２３１  所属ＶＬＡＮ  ＩＤ
４２３２  ＭＡＣアドレス
４３  メモリアクセス部
４４  メモリアクセス部
４５  制御部
９  半導体装置
９１  プロセッサ
９２  プロセッサ
９３  メモリ
９５  通信回路
９１１  データアクセス
９１２  データアクセス
９１３  データアクセス
９２２  データアクセス
９３１  ＩＰＩ割込み
９３２  ＩＰＩ割込み
９４１  データアクセス
９４２  データアクセス
９１４  データアクセス
９４３  完了割込み
９３６  共有領域
【図１】
2020016913.tif 000003
【図２】
2020016913.tif 000004
【図３】
2020016913.tif 000005
【図４】
2020016913.tif 000006
【図５】
2020016913.tif 000007
【図６】
2020016913.tif 000008
【図７】
2020016913.tif 000009
【図８】
2020016913.tif 000010
【図９】
2020016913.tif 000011
【図１０】
2020016913.tif 000012
【図１１】
2020016913.tif 000013
【図１２】
2020016913.tif 000014
【図１３】
2020016913.tif 000015
【図１４】
2020016913.tif 000016
【図１５】
2020016913.tif 000017
【図１６】
2020016913.tif 000018
【図１７】
2020016913.tif 000019