JP2013191202A - マルチコアプロセッサ - Google Patents
マルチコアプロセッサ Download PDFInfo
- Publication number
- JP2013191202A JP2013191202A JP2013023797A JP2013023797A JP2013191202A JP 2013191202 A JP2013191202 A JP 2013191202A JP 2013023797 A JP2013023797 A JP 2013023797A JP 2013023797 A JP2013023797 A JP 2013023797A JP 2013191202 A JP2013191202 A JP 2013191202A
- Authority
- JP
- Japan
- Prior art keywords
- task
- core
- main memory
- writing
- cores
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Multi Processors (AREA)
Abstract
【課題】複数のタスクを処理するマルチコアプロセッサシステムの処理速度を向上させる。
【解決手段】マルチコアプロセッサ1は、複数のコア10、20と、コア10、20それぞれが共有して利用し、書き込み可能なデータ容量の範囲毎に区分された複数のセクション31〜33に分割されたメインメモリ30と、を有する。コア10、20に要求されるタスクは、当該タスクのデータ容量によって、書き込まれるセクション31〜33が予め設定されている。
【選択図】図1
【解決手段】マルチコアプロセッサ1は、複数のコア10、20と、コア10、20それぞれが共有して利用し、書き込み可能なデータ容量の範囲毎に区分された複数のセクション31〜33に分割されたメインメモリ30と、を有する。コア10、20に要求されるタスクは、当該タスクのデータ容量によって、書き込まれるセクション31〜33が予め設定されている。
【選択図】図1
Description
本発明は、複数のコアを備えたマルチコアプロセッサに関する。
従来、複数のコアがメインメモリを共有する密結合型のマルチコアプロセッサシステムが知られている。このようなマルチコアプロセッサシステムの一例としては特許文献1に記載されているように、コア毎のメッセージ交換バッファをメインメモリに設け、この交換バッファを介してデータ交換が行われる構成が採用されている。
具体的には、まず送信側のコアがデータを共有メモリ上のメッセージ交換バッファにデータをセットしたのちに、受信側のコアに対して割り込み要求を出す。受信側のコアは、メッセージ交換バッファからデータを取り込み、受信バッファにデータをセットする。受信側のコアは、受信データによる要求処理完了後、処理完了のメッセージをメッセージ交換バッファにセットする。受信側のコアは、送信側のコアに対して割り込み要求を出し、送信側のコアはメッセージ交換バッファから処理完了のメッセージを受理する。
しかしながら、上記のような方式におけるコア間通信においては、あるタスクにおいてコア間の通信が発生しているときには、他のタスクに対してメモリへの書き込みが排他状態となっている。このため、処理待ちが発生してしまい、処理速度の低下を招いてしまう可能性があった。
本発明は、上記に鑑みてなされたものであって、複数のタスクを処理するマルチコアプロセッサの処理速度を向上させることを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、複数のコアと、前記コアそれぞれが共有して利用し、書き込み可能なデータ容量が予め定められた複数の記憶領域に区分された共有メモリと、を有するマルチコアプロセッサであって、前記コアに要求されるタスクは、当該タスクのデータ容量によって、書き込まれる前記記憶領域が予め設定されていることを特徴とする。
本発明によれば、複数のタスクを処理するマルチコアプロセッサの処理速度を向上させることができるという効果を奏する。
以下に添付図面を参照して、マルチコアプロセッサの実施の形態を詳細に説明する。図1は、実施の形態にかかるマルチコアプロセッサの構成を示すブロック図である。マルチコアとは、1つのプロセッサパッケージ内に複数のプロセッサコアを封入したものであり、本実施形態においては2つのコアを実装した実施形態を示すが、コアの数が増えた場合であっても本発明は適用可能である。
図1に示されるマルチコアプロセッサ1は、第1コア10、第2コア20、及びメインメモリ30を備えている。第1コア10には、実装I/F11、スタブI/F12、タスク送信部13、及びタスク受信部14が設けられている。同じく、第2コア20には、実装I/F21、スタブI/F22、タスク送信部23、及びタスク受信部24が設けられている。タスクとは、様々なプログラムやライブラリにより実行を要求される処理命令である。
実装I/F11、22は、受理したタスクをプロセッサにおいて実行するための処理命令として受け付けるインタフェースである。スタブI/F12、22は、異なるコア間では直接実装I/F11、12をコールすることができないことから、仮想的に他のコアのシステムをコールすることができるように論理的に設定したスタブとして機能する。第1コア10のスタブI/F12は、第2コア20の実装I/F21と論理的に同じインタフェースとして設定されており、一方、第2コア20のスタブI/F22は、第1コア10の実装I/F11と論理的に同じインタフェースとして設定されている。
タスク送信部13、23は、コアが受信したタスクをメインメモリ30へと書き込むとともに、書き込みの際に他のコアのタスク受信部14、24へと書き込みを通知し、書き込み部に相当する。なお、タスク送信部13、23は、メインメモリ30への書き込みの際には、メインメモリ30の記憶領域への他の処理による書き込みを禁止する排他制御を行う。タスク受信部14、24は、タスク送信部13、23から受理した書き込み通知を契機に、メインメモリ30の指定の場所からデータの読み込み処理を行い、受付部に相当する。このように、メインメモリ30と介して、第1コア10、及び第2コア20の間でのデータの交換が行われる。
また、メインメモリ30(共有メモリ)は、3つのセクション(記憶領域)を備えている。第1セクション31は、データ容量が32バイト以下のデータの書き込み、及び読み込みに利用されるセクションである。第2セクション32は、32バイトより大きく、1キロバイト以下のデータの書き込み、及び読み込みに利用されるセクションである。第3セクション33は、1キロバイトより大きく、65キロバイト以下のデータの書き込み、及び読み込みに利用されるセクションである。なお、本実施形態にあっては、全てのセクションのサイズが異なる場合を表示したが、同じサイズに対応したセクションが複数も受けられるようにしてもよい。また、メインメモリ30は、図示しないセクション31〜33以外の領域に、各セクションの位置の範囲を示すアドレス情報や、各セクション31〜33が使用中であるか否かを示すフラグ情報などを記憶する領域を有している。
図2は、どのセクション31〜33に対してタスクが書き込まれるかについての概要を示した図である。図2に示されるように、スタブI/F12、22には、それぞれプロトコル(プログラムやライブラリ)毎に対応するインタフェースがそれぞれ設けられている。例えば、プロトコル1から要求されたタスクについては、スタブI/F Aがコールされて、タスク送信部13へと引き渡される。コールされるインタフェースは、タスクのデータ容量に応じて設定されている。したがって、プロトコルが要求するタスクごとに、そのデータ容量に応じて予め書き込みが行われるセクションが設定されている。
次に、図1を参照して、コア間のデータの交換の処理の流れについて説明する。説明においては、第1コア10から第2コア20へとデータが渡される場合を想定している。図1に示されるように、(1)第1コア10に対して要求されたタスクは、第1コア10において設けられた第2コア20と論理的に接続されたスタブI/F12をコールする。この際、コールするスタブI/F12は、タスクに必要なメモリのサイズによって決定される。(2)続いて、スタブI/F12は、要求タスクをタスク送信部13へと転送して、処理要求を行う。(3)処理要求を受け付けたタスク送信部13は、メインメモリ30へとタスクの書き込みを行う。この際、タスクに必要なデータ容量に応じて予め設定されたセクション31〜33に対して、書き込みが行われる。本実施形態では、コールされたスタブI/F12によって、書き込まれるメインメモリ30のセクションが予め対応付けられて決定されている。したがって、タスク1がスタブI/F12を選択した時点で書き込むセクションは決定されている。書き込むセクションの判断基準は、上述した各セクション31〜33毎に定められた対応するデータ容量に基づく。なお、タスク送信部13は、データを書き込んだセクション31〜33に対し、後述するタスク受信部14によるデータの読み込みが行われるまでの間、他のタスクの書き込みを禁止する排他制御を行う。また、この段階でタスク送信部13は、解放されて他のタスクを受け付けて処理可能となる。
(4)続いて、タスク送信部13は、第2コア20のタスク受信部24に対して、メインメモリ30の書き込みを行ったセクション31〜33を指定して、通知を行う。(5)通知を受け取ったタスク受信部24は、メインメモリ30の指定のセクション31〜33からタスクが書き込んだ情報の読み込みを行う。(6)タスク受信部24は、実装I/F21をコールして、読み込んだタスクが書き込んだ情報を引き渡す。(7)タスクが書き込んだ情報を受け取った実装I/F21は、タスクが書き込んだ情報に基づいた処理を第2コア20にて実行し、その実行結果をタスク受信部24へと返信する。(8)タスク受信部24は、受け取った実行結果をメインメモリ30の該当するセクション31〜33へと書き込む。(9)タスク受信部24は、実行結果を書き込んだことをコア10のタスク受信部14へと通知する。(10)第1コア10のタスク受信部14は、メインメモリ30の指定のセクション31〜33から第2コア20におけるタスクの実行結果を読み込む。なお、この時点でタスク1によるメインメモリ30の排他制御は終了する。具体的には、上述する該当するセクションの使用中か否かを示すフラグ情報が更新される。(11)タスク受信部14は、読み込んだタスクの実行結果をコールされたスタブI/F12へと送信する。(12)そして、最後にスタブI/F12は、元のタスク1へと実行結果を送信し、処理を終了する。なお、第2コア20においてタスクを要求された場合においても同様の処理の流れとなる。
続いて、以上で示したタスクの処理の流れを図3、図4のシーケンス図を用いて説明する。図3は、メインメモリ30に書き込みが成功した場合、図4はメインメモリ30への書き込みが出来なかった場合を示している。図3に示されるように、まずタスク1はスタブI/F12に対して、ファンクションコールを実行する(ステップS101)。次いで、スタブI/F12は、タスク送信部13に対して、ファンクションIDや引数情報、メインメモリ30で書き込みに必要なセクションサイズなどの情報を含むファンクションコール要求を行う(ステップS102)。タスク送信部13は、メインメモリ30に対して、スタブI/F12から要求されたセクションサイズに相当するメインメモリ30のセクション31〜33を確保する(ステップS103)。また、タスク送信部13は、確保したメインメモリ30のセクション31〜33に相当する使用中を示すフラグ情報を「使用中」に相当する値に更新する(ステップS104)。
次いで、タスク送信部13は、メインメモリ30の該当するセクション31〜33に、ファンクションIDと、引数を書き込む(ステップS105)。これらの処理をして、コア20からの返信があるまでスタブI/F12は待機中となる(ステップS106)。次いで、タスク送信部13は、コア20のタスク受信部24に対して、書き込んだメインメモリ30のセクション31〜33の書き込み位置を通知する(ステップS107)。タスク受信部24は、実装I/F21に対してファンクションコールを送信し、実装I/F21を通じて処理が実行され、処理の結果を受け取る(ステップS108)。
タスク受信部24は、タスクの処理結果として受け取ったファンクションIDと、戻り値をメインメモリ30に書き込む(ステップS109)。この際、書き込むセクション31〜33も、ステップS103で確保したセクションと同様である。次いで、タスク受信部24は、コア10のタスク受信部14に対して戻り値を書き込んだメインメモリ30の位置情報を通知する(ステップS110)。タスク受信部14は、指定された位置情報のメインメモリ30からファンクションIDと戻り値を読み出す(ステップS111)。この際、タスク受信部14は、メインメモリ30の該当するセクション31〜33のフラグ情報を「未使用」へと更新する(ステップS112)。タスク受信部14は、戻り値をスタブI/F12へと通知し(ステップS112)、戻り値はタスク1へと返却される(ステップS113)。
次に、メインメモリ30への書き込みが出来なかった場合について図4を参照して説明する。ステップS103までは図3の場合と同様であり説明は省略する。図4に示されるように、ステップS103のメモリ領域の確保にかかる処理の結果として、タスク送信部13は、エラーを受け取る。タスク送信部13は、スタブI/F12に対してエラー戻り値を通知し(ステップS201)、タスク1にエラー戻り値が返却される(ステップS202)。
以上に示した本実施の形態のマルチコアプロセッサ1においては、複数のコア間におけるデータの交換がメインメモリ30を介して行われる場合に、タスクのデータサイズに応じて利用するメインメモリ30のセクション31〜33を変更する。このため、複数のタスクが並列して処理を要求される場合に、排他処理によってメインメモリ30への書き込みを行うことができずに待ち時間が発生してしまう頻度を極力抑えることができる。したがって、複数のタスクを処理するマルチコアプロセッサシステムの処理速度を向上させることができるようになる。
このような並列するタスクの例としては、例えばHTTPのプロトコルで、プリンタなどの管理画面を取得する処理と、SNMPのプロトコルでプリンタの状態を制御する処理などがある。このように同時に要求されることが多いタスクがあっても、メモリへのアクセの待機待ちを回避して、処理の高速化を図ることができるようになる。
また、タスク送信部13は、メインメモリ30への書き込みが終わった時点で、新たなタスクを受理して処理することが可能となる。このため、処理の高速化を図ることができるようになる。
なお、本実施形態においては、メインメモリ30のセクション数を3つとしたが、これは適宜変更することができる。また、同じデータサイズに対応するセクションを複数も受けてもよい。また、メインメモリ30の各セクションごとに記憶可能なデータ量は本実施形態で示した例に限定されず、他の組み合わせに変更してもよい。
1 マルチコアプロセッサ
10 第1コア
11 実装I/F
12 スタブI/F
13 タスク送信部
14 タスク受信部
20 第2コア
21 実装I/F
22 スタブI/F
23 タスク送信部
24 タスク受信部
30 メインメモリ
31 第1セクション
32 第2セクション
33 第3セクション
10 第1コア
11 実装I/F
12 スタブI/F
13 タスク送信部
14 タスク受信部
20 第2コア
21 実装I/F
22 スタブI/F
23 タスク送信部
24 タスク受信部
30 メインメモリ
31 第1セクション
32 第2セクション
33 第3セクション
Claims (3)
- 複数のコアと、
前記コアそれぞれが共有して利用し、書き込み可能なデータ容量が予め定められた複数の記憶領域に区分された共有メモリと、
前記コアに対して要求されるタスクを受け付ける受付部と、
受け付けた前記タスクを、当該タスクのデータ容量に応じて予め設定された前記記憶領域に対して書き込む書き込み部と、
を備えることを特徴とするマルチコアプロセッサ。 - 前記共有メモリは、同一の前記データ容量の範囲に対応する前記記憶領域をそれぞれ少なくとも2以上有している
ことを特徴とする請求項1に記載のマルチコアプロセッサ。 - 前記書き込み部は、前記記憶領域に対して前記タスクを書き込む際に、他のタスクによる書き込みを禁止する排他処理を行うとともに、前記タスクの共有メモリにおける書き込み位置を交換先の他の前記コアへと通知し、
前記排他処理は、前記他のコアによる当該タスクの処理が完了した結果の戻り値が前記記憶領域から読み出された際に、解除される
ことを特徴とする請求項1に記載のマルチコアプロセッサ。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2013023797A JP2013191202A (ja) | 2012-02-14 | 2013-02-08 | マルチコアプロセッサ |
| US13/767,333 US20130212338A1 (en) | 2012-02-14 | 2013-02-14 | Multicore processor |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2012029674 | 2012-02-14 | ||
| JP2012029674 | 2012-02-14 | ||
| JP2013023797A JP2013191202A (ja) | 2012-02-14 | 2013-02-08 | マルチコアプロセッサ |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2013191202A true JP2013191202A (ja) | 2013-09-26 |
Family
ID=48946624
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2013023797A Pending JP2013191202A (ja) | 2012-02-14 | 2013-02-08 | マルチコアプロセッサ |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20130212338A1 (ja) |
| JP (1) | JP2013191202A (ja) |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4204251A (en) * | 1977-12-28 | 1980-05-20 | Finn Brudevold | Interconnection unit for multiple data processing systems |
| US6209066B1 (en) * | 1998-06-30 | 2001-03-27 | Sun Microsystems, Inc. | Method and apparatus for memory allocation in a multi-threaded virtual machine |
| US8028292B2 (en) * | 2004-02-20 | 2011-09-27 | Sony Computer Entertainment Inc. | Processor task migration over a network in a multi-processor system |
| US7603544B2 (en) * | 2004-12-23 | 2009-10-13 | Intel Corporation | Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation |
| US8479208B2 (en) * | 2007-03-30 | 2013-07-02 | Intel Corporation | System partitioning to present software as platform level functionality including mode logic to maintain and enforce partitioning in first and configure partitioning in second mode |
-
2013
- 2013-02-08 JP JP2013023797A patent/JP2013191202A/ja active Pending
- 2013-02-14 US US13/767,333 patent/US20130212338A1/en not_active Abandoned
Also Published As
| Publication number | Publication date |
|---|---|
| US20130212338A1 (en) | 2013-08-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6444405B2 (ja) | ソフトウェア更新方法、システム及びデバイス | |
| CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
| CN104216862B (zh) | 一种用户进程与系统服务之间的通信方法、装置 | |
| CN102630315B (zh) | 用于防止死锁状态的数据处理方法及系统 | |
| US20090307408A1 (en) | Peer-to-Peer Embedded System Communication Method and Apparatus | |
| CN110825690B (zh) | 多核处理器的核间通信方法及装置 | |
| CN101170511A (zh) | 嵌入式操作系统中实现多核处理器通信的装置及方法 | |
| CN118550857B (zh) | 一种数据传输方法、装置、电子设备以及存储介质 | |
| CN107577534A (zh) | 一种资源调度方法及装置 | |
| CN119254847B (zh) | 一种事务的协议转换方法、装置、设备和存储介质 | |
| KR102681251B1 (ko) | 입/출력 저장 명령의 처리 | |
| US20160294926A1 (en) | Using a single work item to send multiple messages | |
| CN119473957A (zh) | 中断控制装置及方法、电子设备和计算机可读存储介质 | |
| US20140280674A1 (en) | Low-latency packet receive method for networking devices | |
| CN110445580B (zh) | 数据发送方法及装置、存储介质、电子装置 | |
| CN116841952A (zh) | 核间通信系统、方法、装置、设备、芯片及可读存储介质 | |
| CN102117261B (zh) | 一种芯片内部处理器之间的通信方法 | |
| KR20130104958A (ko) | 다중 운영체제들을 실행하는 장치 및 방법 | |
| CN114531351B (zh) | 传输报文的方法、装置、设备及计算机可读存储介质 | |
| US20260111267A1 (en) | Resource management method and apparatus, electronic device, and storage medium | |
| CN108874560B (zh) | 进行通信的方法和通信设备 | |
| CN118916312A (zh) | 一种数据传输方法、装置、系统、计算机设备及存储介质 | |
| US20160162199A1 (en) | Multi-processor communication system sharing physical memory and communication method thereof | |
| CN102736949B (zh) | 改善对非连贯设备要执行的任务的调度 | |
| JP2011028333A (ja) | 回路情報生成装置、機能実行システム、及びプログラム |