JP5121896B2 - マルチコアプロセッサシステムおよびマルチコアプロセッサ - Google Patents
マルチコアプロセッサシステムおよびマルチコアプロセッサ Download PDFInfo
- Publication number
- JP5121896B2 JP5121896B2 JP2010180156A JP2010180156A JP5121896B2 JP 5121896 B2 JP5121896 B2 JP 5121896B2 JP 2010180156 A JP2010180156 A JP 2010180156A JP 2010180156 A JP2010180156 A JP 2010180156A JP 5121896 B2 JP5121896 B2 JP 5121896B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- state
- area
- cache
- management unit
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Description
図1は、本発明の第1の実施の形態のマルチコアプロセッサシステムの構成を示すブロック図である。
マルチコアプロセッサシステム1は、マルチコアプロセッサ2と、メモリ3とを備えている。マルチコアプロセッサ2およびメモリ3はバスを介して接続されている。なお、夫々の構成要素をバスではなくメッシュなど他のネットワークトポロジーによって夫々接続するように構成してもよい。
(a)UNMANAGED状態
カーネル管理領域32の領域外となっている状態をUNMANAGED状態と定義する。カーネル31はこの状態のメモリ領域におけるキャッシュの一貫性を管理しない。
(b)INVALID状態(第1の状態)
カーネル31によるユーザタスク(ユーザタスクを実行しているコア21)への割り当てがなされておらず、これから割り当てることが可能な状態をINVALID状態と定義する。具体的には、メモリ割り当て前およびメモリ解放後の状態がこの状態に属する。どのユーザタスクからの書き込み/読み出しアクセスも許可されない。
(c)PRIVATE状態(第2の状態)
キャッシュ22を利用した読み出し/書き込みアクセスが実行される状態をPRIVATE状態と定義する。この状態に遷移させた1つのユーザタスクのみが読み出し/書き込みアクセスできる。
(d)PUBLIC状態(第3の状態)
全てのユーザタスクで共有化された状態であるが、どのユーザタスクからの読み出し/書き込みアクセスも許可されない状態をPUBLIC状態と定義する。ユーザタスクは、データを別のユーザタスクに送信する場合、該データ(が格納されているメモリ領域)をこの状態に遷移させ、受信側のユーザタスクは、この状態におかれたデータをPRIVATE状態か次に説明するPROTECTED状態に遷移させて読み出す。
(e)PROTECTED状態(第4の状態)
読み出しアクセスのみキャッシュ22を利用したアクセスが可能な状態をPROTECTED状態と定義する。この状態の領域には書き込みアクセスは一切出来ない。この状態に遷移させた1つ以上のユーザタスクのみがキャッシュ22を利用した読み出しアクセスを実行できる。
allocate_private_memory関数は、INVALID状態のメモリ領域から引数“size”で指定されるサイズのPRIVATE状態のメモリ領域を確保するための関数である。
(2)free_private_memory(void *addr, size_t size)
free_private_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるPRIVATE状態のメモリ領域をINVALID状態に解放するための関数である。
(3)allocate_public_memory(size_t size)
allocate_public_memory関数は、INVALID状態のメモリ領域から引数“size”で指定されるサイズのPUBLIC状態のメモリ領域を確保するための関数である。
(4)free_public_memory(void *addr, size_t size)
free_public_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるPUBLIC状態のメモリ領域をINVALID状態に解放するための関数である。
(5)open_private_memory(void *addr, size_t size)
open_private_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるPUBLIC状態のメモリ領域をPRIVATE状態に遷移させるための関数である。
(6)close_private_memory(void *addr, size_t size)
close_private_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるPRIVATE状態のメモリ領域をPUBLIC状態に遷移させるための関数である。
(7)open_protected_memory(void *addr, size_t size)
open_protected_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるPUBLIC状態のメモリ領域をPROTECTED状態に遷移させるための関数である。
(8)close_protected_memory(void *addr, size_t size)
close_protected_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるPROTECTED状態のメモリ領域をPUBLIC状態に遷移させるための関数である。
(9)enter_memory_access_protocol(void *addr, size_t size)
enter_memory_access_protocol関数は、先頭アドレス“addr”、サイズ“size”で指定されるUNMANAGED状態のメモリ領域をINVALID状態に遷移させるための関数である。
(10)leave_memory_access_protocol(void *addr, size_t size)
leave_memory_access_protocol関数は、先頭アドレス“addr”、サイズ“size”で指定されるINVALID状態のメモリ領域をUNMANAGED状態に遷移させるための関数である。
図9は、allocate_private_memoryが呼び出されたときの動作を説明するフローチャートである。ユーザタスク27がallocate_private_memoryを呼び出すと、メモリアロケート管理部24は、isAllocated変数が“false”となっているメモリ領域(すなわちINVALID状態のメモリ領域)のうちから引数“size”で指定されたサイズの連続したメモリ領域を“true”とし、ユーザタスク27に割り当てる(S11)。連続したINVALID状態の領域がなかったなどにより、指定されたサイズのメモリ領域の割り当てが正常に行われなかった場合(S12、No)、メモリアロケート管理部24は、NULLを返し(S13)、動作が終了となる。
図2に示すメモリを採用した場合、カーネル管理領域として利用できるメモリ領域がシャドー領域を持つメモリ領域内に限定されてしまう。そこで、第2の実施の形態では、シャドー領域を持つメモリ領域(第2メモリ領域)と、シャドー領域を持たないメモリ領域(第1メモリ領域)とにカーネル管理領域を確保することができるようにした。
(f)EXT_INVALID状態(第5の状態)
カーネル51によるユーザタスクへの割り当てがなされておらず、これから割り当てることが可能な状態をEXT_INVALID状態と定義する。
(g)EXT_PRIVATE状態(第6の状態)
キャッシュ22を利用した読み出し/書き込みアクセスが実行される状態をEXT_PRIVATE状態と定義する。この状態に遷移させた1つのユーザタスクのみが読み出し/書き込みアクセスできる。
(h)EXT_PUBLIC状態(第7の状態)
キャッシュを利用しない読み出し/書き込みアクセスが実行される状態をEXT_PUBLIC状態と定義する。ユーザタスクは、この状態に遷移させることによって別のユーザタスクとデータを共有することができる。(c)PUBLIC状態と異なる点は、キャッシュを利用しない読み出し/書き込みアクセスを実行できることである。
(i)EXT_PROTECTED状態
キャッシュ22を利用した読み出しアクセスが実行される状態をEXT_PROTECTED状態と定義する。この状態の領域には書き込みアクセスは一切できない。この状態に遷移させた1つ以上のユーザタスクのみが、キャッシュ22を利用した読み出しアクセスを許可される。
(11)allocate_ext_private_memory(size_t size)
allocate_ext_private_memory関数は、EXT_INVALID状態のメモリ領域から引数“size”で指定されるサイズのEXT_PRIVATE状態のメモリ領域を確保するための関数である。
(12)free_ext_private_memory(void *addr, size_t size)
free_ext_private_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるEXT_PRIVATE状態のメモリ領域をEXT_INVALID状態に解放するための関数である。
(13)allocate_ext_public_memory(size_t size)
allocate_ext_public_memory関数は、EXT_INVALID状態のメモリ領域から引数“size”で指定されるサイズのEXT_PUBLIC状態のメモリ領域を確保するための関数である。
(14)free_ext_public_memory(void *addr, size_t size)
free_ext_public_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるEXT_PUBLIC状態のメモリ領域をEXT_INVALID状態に解放するための関数である。引数“addr”はシャドー領域内のアドレスで指定される。
(15)open_ext_private_memory(void *addr, size_t size)
open_ext_private_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるEXT_PUBLIC状態のメモリ領域をEXT_PRIVATE状態に遷移させるための関数である。引数“addr”はシャドー領域内のアドレスで指定される。
(16)close_ext_private_memory(void *addr, size_t size)
close_ext_private_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるEXT_PRIVATE状態のメモリ領域をEXT_PUBLIC状態に遷移させるための関数である。
(17)open_ext_protected_memory(void *addr, size_t size)
open_ext_protected_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるEXT_PUBLIC状態のメモリ領域をEXT_PROTECTED状態に遷移させるための関数である。引数“addr”はシャドー領域内のアドレスで指定される。
(18)close_ext_protected_memory(void *addr, size_t size)
close_ext_protected_memory関数は、先頭アドレス“addr”、サイズ“size”で指定されるEXT_PROTECTED状態のメモリ領域をEXT_PUBLIC状態に遷移させるための関数である。
(19)enter_ext_memory_access_protocol(void *addr, size_t size)
enter_ext_memory_access_protocol関数は、先頭アドレス“addr”、サイズ“size”で指定されるUNMANAGED状態のメモリ領域をEXT_INVALID状態に遷移させるための関数である。
(20)leave_ext_memory_access_protocol(void *addr, size_t size)
leave_ext_memory_access_protocol関数は、先頭アドレス“addr”、サイズ“size”で指定されるEXT_INVALID状態のメモリ領域をUNMANAGED状態に遷移させるための関数である。
Claims (5)
- 各々キャッシュを備える複数のプロセッサコアから成るマルチコアプロセッサと、
前記キャッシュを利用したアクセスが可能かつ前記キャッシュを利用しないアクセスが不可能に構成された第1メモリ領域を有し、前記複数のプロセッサコアに共有され、前記マルチコアプロセッサとバスを介して接続された共有メモリと、
を備え、
前記マルチコアプロセッサは、
前記第1メモリ領域のうちの自マルチコアプロセッサに割り当てられている領域を、プロセッサコアに割り当てられていない第1の状態と、プロセッサコアのうちの1つに割り当てられ、読み出しおよび書き込みが実行される第2の状態と、1つ以上のプロセッサコアに割り当てられ、読み出しおよび書き込みが禁止されている第3の状態と、に分類し、前記第1乃至第3の状態間の遷移を実行する状態管理部と、
前記状態管理部が前記第2の状態から前記第3の状態に遷移させる際、対応するキャッシュをライトバックするキャッシュ/メモリ管理部と、
を備えることを特徴とするマルチコアプロセッサシステム。 - 前記共有メモリは、前記キャッシュを利用したアクセスおよび前記キャッシュを利用しないアクセスが可能に構成されている第2メモリ領域をさらに備え、
前記状態管理部は、前記第2メモリ領域のうちの自マルチコアプロセッサに割り当てられている領域を、プロセッサコアに割り当てられていない第5の状態と、プロセッサコアのうちの1つに割り当てられ、前記キャッシュを利用した読み出しおよび書き込みが実行される第6の状態と、1つ以上のプロセッサコアに割り当てられ、前記キャッシュを利用しない読み出しおよび書き込みが実行される第7の状態と、に分類し、前記第5乃至第7の状態間の遷移を実行し、
前記キャッシュ/メモリ管理部は、前記状態管理部が前記第6の状態から前記第7の状態に遷移させる際、対応するキャッシュをライトバックする、
ことを特徴とする請求項1に記載のマルチコアプロセッサシステム。 - 前記共有メモリは、前記プロセッサコアが前記キャッシュを利用しないアクセスを行うための前記第2メモリ領域のシャドー領域を備え、
前記キャッシュ/メモリ管理部は、前記状態管理部が前記第7の状態に遷移させる際および前記状態管理部が前記第7の状態から別の状態に遷移させる際、前記シャドー領域と前記第2メモリ領域との間のアクセス先アドレスの変換を行う、
ことを特徴とする請求項2に記載のマルチコアプロセッサシステム。 - 各々キャッシュを備える複数のプロセッサコアを備え、前記キャッシュを利用したアクセスが可能かつ前記キャッシュを利用しないアクセスが不可能に構成された第1メモリ領域が割り当てられるマルチコアプロセッサであって、
前記第1メモリ領域のうちの自マルチコアプロセッサに割り当てられた領域を、プロセッサコアに割り当てられていない第1の状態と、プロセッサコアのうちの1つに割り当てられ、読み出しおよび書き込みが実行される第2の状態と、1つ以上のプロセッサコアに割り当てられ、読み出しおよび書き込みが禁止されている第3の状態と、に分類し、前記第1乃至第3の状態間の遷移を実行する状態管理部と、
前記状態管理部が前記第2の状態から前記第3の状態に遷移させる際、対応するキャッシュをライトバックするキャッシュ/メモリ管理部と、
を備えることを特徴とするマルチコアプロセッサ。 - 前記キャッシュを利用したアクセスおよび前記キャッシュを利用しないアクセスが可能に構成された第2メモリ領域が割り当てられ、
前記状態管理部は、前記第2メモリ領域のうちの自マルチコアプロセッサに割り当てられた領域を、プロセッサコアに割り当てられていない第5の状態と、プロセッサコアのうちの1つに割り当てられ、前記キャッシュを利用した読み出しおよび書き込みが実行される第6の状態と、1つ以上のプロセッサコアに割り当てられ、前記キャッシュを利用しない読み出しおよび書き込みが実行される第7の状態と、に分類し、前記第5乃至第7の状態間の遷移を実行し、
前記キャッシュ/メモリ管理部は、前記状態管理部が前記第6の状態から前記第7の状態に遷移させる際、対応するキャッシュをライトバックする、
ことを特徴とする請求項4に記載のマルチコアプロセッサ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010180156A JP5121896B2 (ja) | 2010-08-11 | 2010-08-11 | マルチコアプロセッサシステムおよびマルチコアプロセッサ |
US12/885,754 US8380936B2 (en) | 2010-08-11 | 2010-09-20 | Multi-core processor system and multi-core processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010180156A JP5121896B2 (ja) | 2010-08-11 | 2010-08-11 | マルチコアプロセッサシステムおよびマルチコアプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012038236A JP2012038236A (ja) | 2012-02-23 |
JP5121896B2 true JP5121896B2 (ja) | 2013-01-16 |
Family
ID=45565624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010180156A Expired - Fee Related JP5121896B2 (ja) | 2010-08-11 | 2010-08-11 | マルチコアプロセッサシステムおよびマルチコアプロセッサ |
Country Status (2)
Country | Link |
---|---|
US (1) | US8380936B2 (ja) |
JP (1) | JP5121896B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8788761B2 (en) * | 2010-09-24 | 2014-07-22 | Nvidia Corporation | System and method for explicitly managing cache coherence |
JP5783809B2 (ja) * | 2011-06-03 | 2015-09-24 | キヤノン株式会社 | 情報処理装置、起動方法およびプログラム |
CN103279428B (zh) * | 2013-05-08 | 2016-01-27 | 中国人民解放军国防科学技术大学 | 一种显式的面向流应用的多核Cache一致性主动管理方法 |
US8706798B1 (en) * | 2013-06-28 | 2014-04-22 | Pepperdata, Inc. | Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system |
IN2013CH04449A (ja) | 2013-09-30 | 2015-04-03 | Empire Technology Dev Llc | |
WO2015047427A1 (en) * | 2013-09-30 | 2015-04-02 | Empire Technology Development, Llc | Data transfer in a multi-core processor |
US10303605B2 (en) * | 2016-07-20 | 2019-05-28 | Intel Corporation | Increasing invalid to modified protocol occurrences in a computing system |
US10133669B2 (en) | 2016-11-15 | 2018-11-20 | Intel Corporation | Sequential data writes to increase invalid to modified protocol occurrences in a computing system |
JP2019053617A (ja) * | 2017-09-15 | 2019-04-04 | 株式会社東芝 | システムlsiおよびシステムlsiの故障検出方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933857A (en) | 1997-04-25 | 1999-08-03 | Hewlett-Packard Co. | Accessing multiple independent microkernels existing in a globally shared memory system |
FR2763448B1 (fr) | 1997-05-13 | 1999-07-16 | Fihem | Espaceur de cellules atm |
US6295598B1 (en) | 1998-06-30 | 2001-09-25 | Src Computers, Inc. | Split directory-based cache coherency technique for a multi-processor computer system |
US6449699B2 (en) | 1999-03-29 | 2002-09-10 | International Business Machines Corporation | Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems |
JP2002055881A (ja) * | 2000-08-08 | 2002-02-20 | Hitachi Ltd | キャッシュ一致制御の実現方法およびこれを用いたデータ処理装置 |
JP4043225B2 (ja) * | 2001-12-10 | 2008-02-06 | 株式会社ルネサステクノロジ | キャッシュ装置および方法 |
US7469321B2 (en) * | 2003-06-25 | 2008-12-23 | International Business Machines Corporation | Software process migration between coherency regions without cache purges |
US7496713B1 (en) | 2004-07-21 | 2009-02-24 | Sun Microsystems, Inc. | Method and apparatus for maintaining cache coherency in a memory system with shared only cache memories |
US7353319B2 (en) * | 2005-06-02 | 2008-04-01 | Qualcomm Incorporated | Method and apparatus for segregating shared and non-shared data in cache memory banks |
US7984241B2 (en) | 2005-09-16 | 2011-07-19 | Hewlett-Packard Development Company, L.P. | Controlling processor access to cache memory |
WO2008155844A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 情報処理装置およびキャッシュ制御方法 |
JP2011003072A (ja) * | 2009-06-19 | 2011-01-06 | Toshiba Corp | マルチコアプロセッサシステム |
-
2010
- 2010-08-11 JP JP2010180156A patent/JP5121896B2/ja not_active Expired - Fee Related
- 2010-09-20 US US12/885,754 patent/US8380936B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US8380936B2 (en) | 2013-02-19 |
JP2012038236A (ja) | 2012-02-23 |
US20120042133A1 (en) | 2012-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5121896B2 (ja) | マルチコアプロセッサシステムおよびマルチコアプロセッサ | |
TWI661301B (zh) | 記憶體系統及控制非揮發性記憶體之控制方法 | |
US20230333978A1 (en) | Memory system and method for controlling nonvolatile memory | |
US10180908B2 (en) | Method and apparatus for virtualized control of a shared system cache | |
TWI689817B (zh) | 記憶體系統及控制方法 | |
US10089238B2 (en) | Method and apparatus for a shared cache with dynamic partitioning | |
US20160019157A1 (en) | Method and Apparatus For Flexible Cache Partitioning By Sets And Ways Into Component Caches | |
TW201820131A (zh) | 進程管理方法及裝置 | |
JP2007026094A (ja) | 実行装置およびアプリケーションプログラム | |
TWI785320B (zh) | 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法 | |
US20130326180A1 (en) | Mechanism for optimized intra-die inter-nodelet messaging communication | |
US20090037688A1 (en) | Communicating between Partitions in a Statically Partitioned Multiprocessing System | |
JP6674460B2 (ja) | 不均一メモリアーキテクチャにおける改善されたレイテンシのためのシステムおよび方法 | |
JP2020530176A (ja) | 再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法 | |
US20110225387A1 (en) | Unified Virtual Contiguous Memory Manager | |
US20100325360A1 (en) | Multi-core processor and multi-core processor system | |
US20140201490A1 (en) | Method and system for dynamically changing page allocator | |
KR20150010095A (ko) | 운영체제 구성 장치 및 방법 | |
US8762647B2 (en) | Multicore processor system and multicore processor | |
JPWO2013008450A1 (ja) | 仮想計算機システム、メモリ管理方法、メモリ管理プログラム、記録媒体および集積回路 | |
US20210373790A1 (en) | Inference in memory | |
US11281612B2 (en) | Switch-based inter-device notational data movement system | |
JP6333370B2 (ja) | キャッシュ線中で動的配列データ構造を実装するための方法 | |
US20220058123A1 (en) | Methods and nodes for handling memory | |
JP6551069B2 (ja) | 情報処理装置および画像形成装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120808 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120925 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121023 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151102 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151102 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |