(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024131398
(43)【公開日】2024-09-30
(54)【発明の名称】マルチコアシステムおよび読み出し方法
(51)【国際特許分類】
G06F 13/28 20060101AFI20240920BHJP
G06F 12/1009 20160101ALI20240920BHJP
G06F 13/16 20060101ALI20240920BHJP
G06F 15/173 20060101ALI20240920BHJP
【FI】
G06F13/28 310K
G06F13/28 310L
G06F12/1009
G06F13/16 520B
G06F15/173 665
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023041633
(22)【出願日】2023-03-16
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】菅井 龍介
【テーマコード(参考)】
5B045
5B160
5B205
【Fターム(参考)】
5B045BB29
5B045BB54
5B045DD10
5B160AB09
5B205RR04
(57)【要約】
【課題】プロセッサコア間で通信データを送受信する際にプロセッサコアの処理が増加することを防止する。
【解決手段】
マルチコアシステムは、プロセッサコア110Aと、プロセッサコア110Aに接続されたメモリ130Aと、メモリ130Aに接続されたDMA部142Aを有する通信IF140Aと、プロセッサコア110Bと、プロセッサコア110Bに接続されたメモリ130Bと、メモリ130Bに接続されたDMA部142Bを有する通信IF140Bと、プロセッサコア110Aによって読み出し先として指定されたページのページデータが、メモリ130Bに記憶されている場合、ページのページ番号に基づく第1の送信ディスクリプタをDMA部142Aに設定させるMMU120Aとを備える。通信IF140Aは、第1の送信ディスクリプタに従って、ページ番号および宛先データを含むデータ要求を通信IF140Bに送信する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
第1のプロセッサコアと、
前記第1のプロセッサコアに接続された第1のメモリと、
前記第1のメモリに接続された第1のDMA(Direct Memory Access)部を有する第1の通信インタフェースと、
第2のプロセッサコアと、
前記第2のプロセッサコアに接続された第2のメモリと、
前記第2のメモリに接続された第2のDMA部を有する第2の通信インタフェースと、
前記第1のプロセッサコアによって読み出し先として指定されたページのページデータが、前記第2のメモリに記憶されている場合、前記ページのページ番号に基づく第1の送信ディスクリプタを前記第1のDMA部に設定させるMMU(Memory Management Unit)と
を備え、
前記第1の通信インタフェースは、前記第1の送信ディスクリプタに従って、前記ページ番号および宛先データを含むデータ要求を前記第2の通信インタフェースに送信する
マルチコアシステム。
【請求項2】
前記第1のプロセッサコアは、特定用途向けプロセッサコアを含む
請求項1に記載のマルチコアシステム。
【請求項3】
前記第2の通信インタフェースは、前記ページ番号に基づく第2の送信ディスクリプタに従って、宛先データおよび前記ページデータを含む送信データを前記第1の通信インタフェースに送信する
請求項1に記載のマルチコアシステム。
【請求項4】
前記第1のプロセッサコアは、汎用のプロセッサコアを含み、
前記汎用のプロセッサコアは、プログラムを実行することにより、複数のページそれぞれに対応する複数の第1の送信ディスクリプタを生成し、前記複数の第1の送信ディスクリプタを送信ディスクリプタデータベースとして前記第1のメモリに格納する
請求項1に記載のマルチコアシステム。
【請求項5】
各第1の送信ディスクリプタは、前記宛先データを参照する第1の部分を含み、
前記第2のプロセッサコアは、前記第2のメモリにページデータを書き込んだとき、前記第1のプロセッサコアに通知情報を送信し、
前記第1のプロセッサコアは、前記通知情報の受信に応じて、対応する第1の送信ディスクリプタの前記第1の部分を更新する
請求項4に記載のマルチコアシステム。
【請求項6】
第1のメモリに接続された第1のプロセッサコアによって読み出し先として指定されたページのページデータが、第2のプロセッサコアに接続された第2のメモリに記憶されている場合、前記ページのページ番号に基づく第1の送信ディスクリプタを、前記第1のメモリに接続された第1のDMA部に設定させ、
前記第1のDMA部を有する第1の通信インタフェースは、前記第1の送信ディスクリプタに従って、前記ページ番号および宛先データを含むデータ要求を、前記第2のメモリに接続された第2のDMA部を有する第2の通信インタフェースに送信する
読み出し方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はマルチコアシステムおよび読み出し方法に関する。
【背景技術】
【0002】
特許文献1は、CPU(Central Processing Unit)間でデータを送受信するマルチCPUシステムに関する技術を開示する。マルチCPUシステムは、2つのCPUを有している。この2つのCPUは、それぞれ他方のCPUのレジスタ又はRAMを自身のメモリ空間に割り付けている。そして、自身のメモリ空間に割り付けられた他方のCPUのレジスタ又はRAMの領域にデータを書込んだり、自身のメモリ空間に割り付けられた他方のCPUのレジスタ又はRAMの領域からデータを読出したりすることにより、データの転送を行う。これにより、CPU同士の間の通信において、自身のメモリ空間に割り付けられた他方のCPUメモリ空間に存在するRAM又はレジスタにアクセスすることにより、2CPU間のデータ送受信に必要な手続きを簡略することが出来る。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
近年、特許文献1に開示されるようなマルチコアシステムはますます複雑化する傾向にある。この場合、マルチコアシステムに含まれるプロセッサコア間でデータを共有するための手続きを簡略化することがさらに望まれる。
【0005】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0006】
一実施の形態によれば、マルチコアシステムは、第1のプロセッサコアと、第1のプロセッサコアに接続された第1のメモリと、第1のメモリに接続された第1のDMA(Direct Memory Access)部と、第2のプロセッサコアと、第2のプロセッサコアに接続された第2のメモリと、第1のプロセッサコアによって読み出し先として指定されたページのページデータが、前記第2のメモリに記憶されている場合、ページ番号に基づく第1の送信ディスクリプタを第1のDMA部に設定させるMMU(Memory Management Unit)とを備える。
【0007】
一実施の形態によれば、第1のメモリに接続された第1のプロセッサコアによって読み出し先として指定されたページのページデータが、第2のプロセッサコアに接続された第2のメモリに記憶されている場合、ページ番号に基づく第1の送信ディスクリプタを、第1のメモリに接続された第1のDMA部に設定させる。
【発明の効果】
【0008】
前記一実施の形態によれば、プロセッサコア間で通信データを送受信する際にプロセッサコアの処理が増加することを防止できる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、検討例にかかるマルチコアシステムの構成を説明する図である。
【
図2】
図2は、実施形態1にかかるマルチコアシステムの構成を説明する図である。
【
図3】
図3は、実施形態1にかかるマルチコアシステムの動作を説明する図である。
【
図4】
図4は、実施形態1にかかるマルチコアシステムの動作を説明する図である。
【
図5】
図5は、実施形態1にかかる送信ディスクリプタデータベースの構成を説明する図である。
【
図6】
図6は、実施形態1にかかる送信ディスクリプタデータベースの構成を説明する図である。
【
図7】
図7は、実施形態2にかかるマルチコアシステムの構成を説明する図である。
【
図8】
図8は、実施形態2にかかるマルチコアシステムの動作を説明する図である。
【
図9】
図9は、実施形態2にかかる送信ディスクリプタデータベースの構成を説明する図である。
【発明を実施するための形態】
【0010】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0011】
また、上述したプログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、RAM(Rrandom Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、SSD(Solid State Drive)又はその他のメモリ技術、CD-ROM、DVD(Digital Versatile Disc)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
【0012】
(実施の形態に至る経緯)
まず、
図1を参照して、発明者が新たに見出した課題について説明する。従来のマルチコアシステムでは、CPU同士の間でデータを転送することが前提になっていた。特定用途向けのプロセッサコアを含むマルチコアシステムの場合には、MMU(Memory Management Unit)を実装することが考えられる。発明者は、以下の検討例にかかるマルチコアシステムについて検討した。
【0013】
図1は、検討例にかかるマルチコアシステムの構成を説明する図である。検討例にかかるマルチコアシステムは、半導体装置100Aおよび半導体装置100Bを備えている。半導体装置100Aおよび100Bは、図示しないネットワークを介して互いに通信可能に構成される。半導体装置100Aが存在するノードはノードAと言われ、半導体装置100Bが存在するノードはノードBと言われる。
【0014】
半導体装置100Aは、CPU111A、HW(Hardware)-IP(Intellectual Property)112A、MMU120A、メモリ130A、および通信IF(Interface)140Aを備えている。同様に、半導体装置100Bは、CPU111B、HW-IP112B、MMU120B、メモリ130B、および通信IF140Bを備えている。
【0015】
CPU111Aおよび111Bは、汎用のプロセッサコアである。HW-IP112Aおよび112Bは、特定用途向けプロセッサコアである。HW-IP112Aおよび112Bは、例えば、所定の画像処理を行う専用回路である。
【0016】
MMU120Aは、HW-IP112Aから指定された読み出し先または書き込み先の論理アドレスを、メモリ130A内の物理アドレスに変換する。論理アドレスにはページ番号が含まれる。MMU120Aは、指定された論理アドレスがメモリ130A内の物理アドレスに対応していない場合、CPU111Aに通知を行う。同様に、MMU120Bは、HW-IP112Bから指定された読み出し先または書き込み先の論理アドレスを、メモリ130B内の物理アドレスに変換する。MMU120Bは、指定された論理アドレスがメモリ130B内の物理アドレスに対応していない場合、CPU111Bに通知を行う。
【0017】
メモリ130Aおよび130Bは、DRAM(Dynamic Random Access Memory)等の記憶領域である。通信IF140Aおよび通信IF140Bは、互いに通信可能に構成されている。
【0018】
次に、HW-IP112Aが、メモリ130Bからデータを読み出す際の動作の流れを説明する。まず、HW-IP112Aが、読み出し先の論理アドレスをMMU120Aに送信する。MMU120Aは、指定された論理アドレスがメモリ130A内の物理アドレスに対応していないことをCPU111Aに通知する。次に、CPU111Aは、データ要求用の通信データを、通信IF140Aを介してノードBに送信する。そして、CPU111Bが、ページデータを含む通信データを、通信IF140Bを介してノードAに送信する。
【0019】
CPU111Aは、MMU120Aからの通知を受け取る処理と、データ要求用の通信データをノードBに送信する処理とを行う。したがって、CPU111Aの負荷が大きいという問題があった。
【0020】
本願の発明者は、以上の検討に基づき、実施形態に想到した。以下、実施形態を説明する。
【0021】
(実施形態1)
図2は、実施形態1にかかるマルチコアシステムの構成を説明する図である。実施形態1にかかるマルチコアシステムは、半導体装置100Aおよび100Bを備えている。半導体装置100Aが、半導体装置100Bのメモリに格納されたデータを読み出す場合の構成が示されている。
【0022】
半導体装置100Aおよび100Bの各々は、単一の半導体チップから構成されていてもよく、複数の半導体チップで構成されていてもよい。半導体装置100Aおよび100Bは、互いに通信可能に構成されている。半導体装置100Aが存在するノードはノードAと言われ、半導体装置100Bが存在するノードはノードBと言われる。
【0023】
半導体装置100Aは、プロセッサコア110A、MMU120A、メモリ130A、および通信IF140Aを備えている。同様に、半導体装置100Bは、プロセッサコア110B、MMU120B、メモリ130B、および通信IF140Bを備えている。
【0024】
プロセッサコア110A、MMU120A、メモリ130A、および通信IF140Aは、バスを介して互いに通信可能に構成される。同様に、プロセッサコア110B、MMU120B、メモリ130B、および通信IF140Bは、バスを介して互いに通信可能に構成される。
【0025】
プロセッサコア110Aは、CPU111AおよびHW-IP112Aを備えている。同様に、プロセッサコア110Bは、CPU111BおよびHW-112Bを備えている。CPU111Aおよび111Bは、汎用のプロセッサコアである。HW-IP112Aおよび112Bは、特定用途向けプロセッサコアである。HW-IP112Aおよび112Bは、GPU(Graphics Processing Unit)、FPGA(Field Programmable Gate Array)、専用LSI(Large Scale Integration)等のハードウェアで構成されるアクセラレーション用ハードウェアであってもよい。HW-IP112Aおよび112Bは、例えば、所定の画像処理を行う専用回路である。なお、後述するように、プロセッサコア110AはCPU111AおよびHW-IP112Bの一方のみを備えていてもよい。
【0026】
MMU120Aおよび120Bは、それぞれuTLB(Unified Translation Lookaside Buffer)121AおよびuTLB121Bを備えている。uTLB121Aは、後述するページテーブル135Aの内容を一時的に記憶するキャッシュメモリである。uTLB121Bは、ページテーブル135Bの内容を一時的に記憶するキャッシュメモリである。
【0027】
また、MMU120Aは、アドレス変換部122Aおよび通信データ要求部123Aを備えている。アドレス変換部122Aは、HW-IP112Aから読み出し先として指定された論理アドレスを、メモリ130A内の物理アドレスに変換する。論理アドレスには、ページ番号が含まれる。アドレス変換部122Aは、指定された論理アドレスがページテーブル135A上に存在しない場合、通信データ要求部123Aへ通知を行う。通信データ要求部123Aは、アドレス変換部122Aから通知を受け取った場合、後述するDMA部142Aにページ番号に基づく送信ディスクリプタを設定させる。なお、送信ディスクリプタの具体的な構成については後述する。
【0028】
メモリ130Aは、ページデータ131A、受信バッファ132A、データ要求133A、送信ディスクリプタデータベース134A、ページテーブル135A、解釈プログラム136A、ページテーブル更新プログラム137A、および格納プログラム138Aを記憶している。
【0029】
ページデータ131Aには、後述するページデータ131Bがコピーされる。受信バッファ132Aには、通信IF140Aが受信したデータが保存される。データ要求133Aは、ノードBに送信される通信データ(例:パケット)である。データ要求133Aは、宛先データおよびページ番号を含む。宛先データは、例えば、ノードBのアドレスを表す。宛先データは、例えば、イーサネット(登録商標、以下同じ)フレームに含まれる宛先MACアドレスであってもよい。
【0030】
送信ディスクリプタデータベース134Aは、複数の送信ディスクリプタを記憶している。各送信ディスクリプタは、いわゆるDMA(Direct Memory Access)ディスクリプタであり、転送されるデータを参照するアドレスを含んでいる。複数の送信ディスクリプタは、メモリ130Bに記憶された複数のページにそれぞれ対応している。なお、送信ディスクリプタデータベース134Aの具体的な構成については後述する。
【0031】
ページテーブル135Aは、メモリ130A内の物理アドレスと、論理アドレスとの対応関係を記憶する。ページテーブル135Aの各エントリには、有効/無効ビットがある。また、ページテーブル135Aには、各ページを読み込み不可能状態や書き込み不可能状態に設定するためのビットも含まれる。解釈プログラム136Aは、ノードBから受信した送信データを解釈するためのプログラムである。ページテーブル更新プログラム137Aは、ページテーブル135Aを更新するためのプログラムである。格納プログラム138Aは、ノードBから受信したページデータを、ページデータ131Aに格納するためのプログラムである。
【0032】
なお、CPU111Aが解釈プログラム136Aを読み込んで実行されることで実現される機能も、解釈プログラム136Aと言われる場合がある。ページテーブル更新プログラム137Aおよび格納プログラム138Aについても同様である。
【0033】
メモリ130Bには、ページデータ131B、受信バッファ132B、送信データ133B、送信ディスクリプタデータベース134B、ページテーブル135B、解釈プログラム136B、およびページテーブル更新プログラム137Bを備えている。
【0034】
ページデータ131Bには、ページデータが記憶される。受信バッファ132Bは、通信IF140Bで受信したデータが保存される。送信データ133Bは、ページデータ送信用の通信データを表している。送信データ133Bは、宛先データおよびページデータを含む。宛先データは、例えば、ノードAのアドレスを表す。
【0035】
送信ディスクリプタデータベース134Bは、複数の送信ディスクリプタを記憶している。各送信ディスクリプタは、いわゆるDMAディスクリプタであり、転送されるデータのアドレスを含んでいる。複数の送信ディスクリプタは、メモリ130Bに記憶された複数のページにそれぞれ対応している。なお、送信ディスクリプタデータベース134Bの具体的な構成については後述する。
【0036】
ページテーブル135Bは、メモリ130B内の物理アドレスと、論理アドレスとの対応関係を記憶している。ページテーブル135Bの各エントリには、有効/無効ビットがある。また、ページテーブル135Bには、各ページを読み込み不可能状態や書き込み不可能状態に設定するためのビットも含まれる。解釈プログラム136Bは、データ要求133Aを解釈するためのプログラムである。解釈プログラム136Bは、ページ番号に基づく送信ディスクリプタをDMA部142Bに設定させる。ページテーブル更新プログラム137Bは、ページテーブル135Bを更新するためのプログラムである。
【0037】
CPU111Aが解釈プログラム136Bを読み込んで実行されることで実現される機能も、解釈プログラム136Bと言われる場合がある。ページテーブル更新プログラム137Bについても同様である。
【0038】
通信IF140Aは、MAC部141AおよびDMA部142Aを備えている。通信IF140Bは、MAC部141BおよびDMA部142Bを備えている。通信IF140Aおよび140Bは、互いに通信可能に構成される。通信IF140Aおよび140Bは、イーサネットを用いた通信を行ってもよい。
【0039】
MAC部141Aおよび141Bは、MAC層の処理を行う。DMA部142Aおよび142Bは、それぞれメモリ130Aおよび130Bに接続されている。
【0040】
DMA部142Aは、ページ番号に基づく送信ディスクリタに従ってDMA転送を行う。これにより、通信IF140Aが、データ要求133Aを通信IF140Bに送信する。同様に、DMA部142Bは、ページ番号に基づく送信ディスクリプタに従ってDMA転送を行う。これにより、通信IF140Bが、送信データ133Bを通信IF140Aに送信する。DMA部142Aおよび142Bは、例えば、送信ディスクリプタで指定されたアドレスに格納されたデータを、図示しない送信バッファに転送してもよい。
【0041】
次に、
図3を参照して、実施形態1にかかるマルチコアシステムの動作を説明する。まず、HW-IP112Aが、uTLB121Aに、論理アドレスの参照を要求する(ステップS101)。次に、uTLB121Aが、論理アドレスを物理アドレスに変換するようにアドレス変換部122Aに指示する(ステップS102)。
【0042】
次に、アドレス変換部122Aは、ページテーブル135Aを参照し(ステップS103)、登録されていない論理アドレスへのアクセスを検出する。次に、アドレス変換部122Aは、その旨を通知するシグナルと、論理アドレスに含まれるページ番号を通信データ要求部123Aに送信する(ステップS104)。次に、通信データ要求部123Aが、ページ番号に基づく送信ディスクリプタをDMA部142Aに設定させる(ステップS105)。次に、通信データ要求部123Aが、DMA部142AにDMA転送の開始を指示する(ステップS106)。次に、DMA部142Aが、設定された送信ディスクリプタを読み込んで(ステップS107)、DMA転送を行う。これにより、データ要求133Aが準備され(ステップS108)、データ要求133AがノードBに送信される。
【0043】
次に、DMA部142Bが、受信したデータ要求133Aを受信バッファ132Bに格納する(ステップS109)。次に、DMA部142Bが、解釈プログラム136Bに受信完了割り込みを送信する(ステップS110)。
【0044】
次に、解釈プログラム136Bが、受信バッファ132Bからページ番号を取り出す(ステップS111)。次に、解釈プログラム136Bは、ページテーブル更新プログラム137Bにページ番号を渡し、そのページ番号のページを書き込み不可に設定するように指示する(ステップS112)。次に、ページテーブル更新プログラム137Bは、そのページを書き込み不可に設定する(ステップS113)。次に、解釈プログラム136Bが、ページ番号に基づく送信ディスクリプタをDMA部142Bに設定させる(ステップS114)。次に、解釈プログラム136Bが、DMA部142BにDMA転送の開始を指示する(ステップS115)。次に、DMA部142Bが、設定された送信ディスクリプタを読み込み(ステップS116)、DMA転送を行う。これにより、送信データ133Bが準備され(ステップS117)、送信データ133BがノードAに送信される。次に、DMA部142BがCPU111Bに送信完了割り込みを送信し、CPU111Bが解釈プログラム136Bを起動させる(ステップS118)。次に、解釈プログラム136Bが、ページテーブル更新プログラム137Bにページ番号を渡し、そのページ番号のページを書き込み可に設定するように指示する(ステップS119)。次に、ページテーブル更新プログラム137Bが、そのページを書き込み可に設定する(ステップS120)。
【0045】
次に、DMA部142Aが、受信バッファ132Aに送信データ133Bを格納する(ステップS121)。次に、DMA部142Aが、解釈プログラム136Aに受信完了割り込みを送信する(ステップS122)。次に、解釈プログラム136Aが、受信バッファ132Aから送信データ133Bを取り出し、送信データ133Bを格納プログラム138Aに渡す(ステップS123)。次に、格納プログラム138Aが、送信データ133Bに含まれるページデータを、ページデータ131Aに格納する(ステップS124)。次に、解釈プログラム136Aが、ページテーブル更新プログラム137Aにページ番号を渡し、そのページ番号のページを読み込み可に設定するように指示する(ステップS125)。次に、ページテーブル更新プログラム137Aは、そのページを書き込み可に設定する(ステップS126)。次に、ページテーブル更新プログラム137Aは、ページデータの共有が完了したことをアドレス変換部122Aに通知する(ステップS127)。次に、アドレス変換部122Aが、uTLB121Aにページデータ131Aの物理アドレスを通知する(ステップS128)。次に、uTLB121Aが、ページデータ131Aの物理アドレスをHW-IP112Aに通知する(ステップS129)。次に、HW-IP112Aがページデータ131Aを読み込む(ステップS130)。
【0046】
次に、
図4を参照し、HW-IP112Bがメモリ130Bにページデータを書き込むときの動作を説明する。まず、HW-IP112Bが、uTLB121Bに論理アドレスの参照を要求する(ステップS201)。次に、uTLB121Bが、論理アドレスを物理アドレスに変換するようにアドレス変換部122Bに指示する(ステップS202)。次に、アドレス変換部122Bは、ページテーブル135Bを参照し(ステップS203)、対応する物理アドレスを特定する。次に、アドレス変換部122Bは、特定した物理アドレスをuTLB121Bに送信する(ステップS204)。次に、uTLB121Bが、物理アドレスをHW-IP112Bに送信する(ステップS205)。次に、HW-IP112Bは、その物理アドレスにページデータ131Bを書き込む(ステップS206)。HW-IP112Bは、ページデータの書き込みが完了したとき、完了割り込みをCPUに送信する。CPU111Bは、ページテーブル更新プログラム137Bにページ番号を渡し、そのページを有効状態に設定するように指示する(ステップS207)。次に、ページテーブル更新プログラム137Bは、そのページを有効状態に設定する。(ステップS208)。
【0047】
図5は、送信ディスクリプタデータベース134Aの構成を説明する図である。複数の送信ディスクリプタの各々がページ番号に対応付けられている。上述したアドレス変換部122Aは、ページ番号に基づいて送信ディスクリプタを設定させる。複数の送信ディスクリプタが、ページ番号に対応した順序で物理的に連続するメモリ領域に配置され、かつ、送信ディスクリプタのデータサイズが互いに等しいことが好ましい。この場合、各送信ディスクリプタのアドレスは、データサイズと送信ディスクリプタの番号(例:ページ番号)を乗算し、1番目の送信ディスクリプタのアドレスに乗算結果を加算することで求められる。
【0048】
各送信ディスクリプタには、START、アドレス、およびENDがこの順で並べられる。アドレスは、宛先データとページ番号を含むデータを参照している。
【0049】
送信ディスクリプタデータベース134Aの生成方法の一例について説明する。例えば、CPU111Aが、システムの初期化時にプログラム(例:ミドルウェア、バッファマネージャ)を実行することにより、複数のページそれぞれに対応する複数の送信ディスクリプタが生成される。そして、CPU111Aが、複数の送信ディスクリプタを送信ディスクリプタデータベース134Aとしてメモリ130Aに格納する。
【0050】
図6は、送信ディスクリプタデータベース134Bの構成を説明する図である。各送信ディスクリプタには、START、アドレス、およびENDがこの順で並べられる。アドレスは、宛先データおよびページデータの格納先を示す物理アドレスを参照している。
【0051】
実施形態1にかかるマルチコアシステムは、MMUが送信ディスクリプタを通信IFに設定し、データ要求をDMA転送する。これにより、CPUの負荷を低減できる。また、DMAディスクリプタを使用したパケット生成を行うため、実施形態1にかかるマルチコアシステムでは、複数のノードが様々な通信方式(例:イーサネット)で相互に通信できる。
【0052】
図2を参照し、プロセッサコア110AはCPU111Aを含んでいなくてもよい。実施形態1にかかるマルチコアシステムでは、CPU111Aを使用せずにページデータを読み込めるためである。したがって、CPU111Aで実行される各プログラムを備えない構成も、実施形態1には含まれ得る。また、プロセッサコア110AがCPU111Aのみを含んでいてもよい。この場合、MMU120Aは、CPU111Aから論理アドレスを受け取る。
【0053】
(実施形態2)
実施形態1にかかるマルチコアシステムは、ノードの数が3以上である場合、ページデータの要求先を特定することができない。例えば、ノードAがページデータを読み込む場合、ノードAは、ページデータをノードBに要求するか、ページデータをノードCに要求するかを決定することができない。
【0054】
本課題を解決する手段として、解決手段1および解決手段2が存在する。解決手段1では、ページデータを要求する要求ノードが全ノードへ問い合わせを行い、ページデータを保有するノードが要求ノードに返答し、返答したノードが要求先として特定される。解決手段2では、ページデータを書き込むノード(プロデューサノードと言われる)が全ノードに対して通知を行い、通知を受けた各ノード(コンシューマノードと言われる)が、通知元のノードを要求先として記憶する。
【0055】
本発明者は、解決手段1および解決手段2を、(1)リード時のレイテンシの観点と、(2)メッセージの発生頻度の観点と、(3)機能を追加するための必要なコストの観点から比較した。(1)に関して、リード時の処理が追加されていない解決手段2が好ましい。(2)に関して、解決手段1ではRead時に問い合わせと返答の2回のメッセージが必要になり、解決手段2ではWrite時に1回の通知メッセージが必要になること等を考慮し、解決手段2が好ましいと判断される。一方、(3)に関して、解決手段2では各ノードがプロデューサノードを管理することが必要になる。本発明者は、以上の検討に基づき、解決手段2を実現する実施形態2に想到した。
【0056】
図7は、実施形態2にかかるマルチコアシステムの構成を説明する図である。
図2と
図7を比較すると、半導体装置100Cが追加されている。半導体装置100Cは、半導体装置100Aおよび100Bと同様の機能を備える。半導体装置100Cが存在するノードは、ノードCと言われる。
【0057】
半導体装置100Bの構成を参照すると、通知プログラム239Bが追加されている。通知プログラム239Bは、メモリ130Bにページデータを書き込んだとき、ページ番号を含む書き込み通知情報をノードAおよびCに送信するためのプログラムである。通知情報には、ノードBのアドレスが含まれていてもよい。
【0058】
半導体装置100Aの構成を参照すると、送信ディスクリプタデータベース134Aが送信ディスクリプタデータベース234Aに置き換わり、解釈プログラム136Aが解釈プログラム236Aに置き換わり、データベース更新プログラム240Aが追加されている。送信ディスクリプタデータベース234Aに含まれる送信ディスクリプタのアドレスは、プロデューサノードに対応する宛先データを参照する。解釈プログラム236Aは、書き込み通知情報の内容を解釈する機能をさらに備える。データベース更新プログラム240Aは、書き込み通知情報に基づいて送信ディスクリプタデータベース234Aを更新する機能を備える。
【0059】
図8は、HW-IP112Bがページデータを書き込む際の動作を説明する図である。ノードCは、ノードAと同様の動作をするため図示を省略している。
【0060】
まず、HW-IP112Bが、uTLB121Bに論理アドレスの参照を要求する(ステップS301)。次に、uTLB121Bが、論理アドレスを物理アドレスに変換するようにアドレス変換部122Bに指示する(ステップS302)。次に、アドレス変換部122Bが、ページテーブル135Aを参照し(ステップS303)、論理アドレスに対応する物理アドレスを特定する。次に、アドレス変換部122Bが、特定した物理アドレスをuTLB121Bに送信する(ステップS304)。次に、uTLB121Bが、物理アドレスをHW-IP112Bに送信する(ステップS305)。次に、HW-IP112Bが、物理アドレスを指定してページデータ131Bの書き込みを行う(ステップS306)。HW-IP112Bは、ページデータ131Bの書き込みを完了し、通知プログラム239Bに割り込みを送信する(ステップS307)。
【0061】
次に、通知プログラム239Bが、DMA部142Bに通知情報を送信する(ステップS308)。次に、通知プログラム239Bが、DMA部142Bに通知情報の送信開始を指示する(ステップS309)。これにより、通知情報がノードAおよびCに送信される。
【0062】
次に、DMA部142Aが、通知情報を受信バッファ132Aに格納する(ステップS310)。次に、DMA部142Aが、解釈プログラム236Aに受信完了割り込みを送信する(ステップS311)。次に、解釈プログラム236Aが、受信バッファ132Aから通知情報を読み込み、通知情報に含まれるページ番号と通知元アドレスをデータベース更新プログラム240Aに渡す(ステップS312)。次に、データベース更新プログラム240Aが、送信ディスクリプタデータベース234Aを更新する(ステップS313)。
【0063】
次に、解釈プログラム236Aが、ページ番号をページテーブル更新プログラム137Aに渡し、そのページを無効状態に設定するように指示する(ステップS314)。次に、ページテーブル更新プログラム137Aが、そのページを無効状態に設定する(ステップS315)。
【0064】
なお、ページを無効状態に設定することで、マルチコアシステムが、そのページのページデータを要求し得る状態に遷移する。ページを無効状態に設定しない場合、古いページデータが使用され続けることになる。
【0065】
次に、DMA部142Bが、送信完了割り込みを通知プログラム239Bに送信する(ステップS316)。次に、通知プログラム239Bが、ページ番号をページテーブル更新プログラム137Bに渡し、そのページを無効状態に設定するように指示する(ステップS317)。次に、ページテーブル更新プログラム137Bが、そのページを有効状態に設定する(ステップS318)。
【0066】
図9は、送信ディスクリプタデータベース234Aの構成を説明する図である。送信ディスクリプタは、宛先データを参照する第1の部分と、要求データ、つまりページ番号を参照する第2の部分とを含んでいる。例えば、2ページ目のページデータを書き込んだノードがノードAである場合、宛先データを参照する部分にはノードAのアドレスが設定される。
【0067】
実施形態2にかかるマルチコアシステムは、3つ以上のノードを含む場合、適切なノードにページデータの送信を要求できる。
【0068】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【0069】
100A、100B、100C 半導体装置
110A、110B プロセッサコア
111A、111B CPU
112A、112B HW-IP
120A、120B MMU
121A、121B uTLB
122A、122B アドレス変換部
123A 通信データ要求部
130A、130B メモリ
131A、131B ページデータ
132A、132B 受信バッファ
133A データ要求
133B 送信データ
134A、134B、234A 送信ディスクリプタデータベース
135A、135B ページテーブル
136A、136B、236A 解釈プログラム
137A、137B ページテーブル更新プログラム
138A 格納プログラム
239B 通知プログラム
240A データベース更新プログラム
140A、140B 通信IF
141A、141B MAC部
142A、142B DMA部