WO2012077400A1 - マルチコアシステム、及びそのコアのデータ読み出し方法 - Google Patents

マルチコアシステム、及びそのコアのデータ読み出し方法 Download PDF

Info

Publication number
WO2012077400A1
WO2012077400A1 PCT/JP2011/072206 JP2011072206W WO2012077400A1 WO 2012077400 A1 WO2012077400 A1 WO 2012077400A1 JP 2011072206 W JP2011072206 W JP 2011072206W WO 2012077400 A1 WO2012077400 A1 WO 2012077400A1
Authority
WO
WIPO (PCT)
Prior art keywords
core
data
cache
ring bus
controller
Prior art date
Application number
PCT/JP2011/072206
Other languages
English (en)
French (fr)
Inventor
彩 南
洋一 三輪
Original Assignee
インターナショナル・ビジネス・マシーンズ・コーポレーション
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by インターナショナル・ビジネス・マシーンズ・コーポレーション filed Critical インターナショナル・ビジネス・マシーンズ・コーポレーション
Priority to CN201180064625.9A priority Critical patent/CN103370696B/zh
Priority to DE112011104329T priority patent/DE112011104329T5/de
Priority to GB1311211.5A priority patent/GB2499765B/en
Publication of WO2012077400A1 publication Critical patent/WO2012077400A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods

Definitions

  • the present invention relates to reading data of a core in a ring bus type multi-core system in which one memory interface is shared by a plurality of CPU cores (also simply referred to as a CPU, a processor, or a core).
  • CPU cores also simply referred to as a CPU, a processor, or a core.
  • each CPU core has its own cache and actually reads from the shared main memory.
  • a conceivable method is to read from cache data stored in each CPU core instead of pumping out from one main memory.
  • a read request is issued from a certain CPU core (this CPU core is called a "requester core").
  • this CPU core is called a "requester core"
  • the other CPU core is inquired about the presence or absence of cache. The inquired CPU core searches its own cache.
  • one of the CPU cores often holds data of the same address in main memory (referred to as address data) in a cache.
  • address data main memory
  • main memory controller issuing an instruction to transfer the contents of the cache to the requester core.
  • this method needs to make inquiries to each core in order, it takes time in proportion to the number of mounted cores.
  • the load on the main memory controller is high because of the inquiry to each CPU core.
  • bus snooping is a function that observes transactions on the memory interface bus shared among processors, and detects whether a transaction related to data in the cache memory allocated to itself has occurred. .
  • Patent Document 1 provides a processor having a cache memory capable of efficiently maintaining data coherency among processors in a multiprocessor system.
  • Patent Document 1 is a model in which a plurality of processor cores have a single cache, and is different from a model in which each processor core has a cache.
  • Patent Document 2 discloses a technique for effectively using cache data possessed by a plurality of processor cores and caches possessed by each processor core. This technology shows a processing method when one processor core goes to fetch data from the main memory and another processor core goes to fetch data from the same memory.
  • Patent documents and the like are for updating the snoop technology for address data coherency.
  • each core is not used to reference bus transactions. That is, conventionally, it has not been shown that each core snoops a bus transaction at the time of reading address data of a plurality of CPU cores connected in a ring bus shape.
  • an object of the present invention is to provide a ring bus multi-core system in which one memory interface is shared by a plurality of cores, and a method of reading data by each core.
  • the present invention for achieving the above object is a ring bus type multi-core when a single memory interface is shared by a plurality of cores and a single core (requester core) makes a read request of data present in the memory.
  • This ring bus type multi-core has one memory, A main memory controller for connecting the memory to a ring bus, and a plurality of cores connected in a ring bus shape, the core further including a cache interface and a cache controller for controlling or managing the interface, the ring bus
  • the cache controller of each core connected in a (1) querying the data of the request via the cache interface; (2) when the core cache holds the data, the core receives the request and returns the data to the requester core, and (3) the core cache performs the data If not, the main memory controller Reading the data from the memory and sending the data to the requestor core.
  • the present invention for achieving the above object is a ring bus type multi-core that shares one memory interface with a plurality of cores and one core (requester core) makes a read request of data present in the memory.
  • This ring bus type multi-core includes one memory, a main memory controller for connecting the memory to the ring bus, and a plurality of cores connected in a ring bus shape, and the core further includes a cache interface and its interface Including a controlling cache controller, the main memory controller further including a history of data retention of caches of all the cores,
  • the cache controller of each core connected in a ring bus shape flows the request in a predetermined path direction from the requester core to the main memory controller, (1) querying the data of the request via the cache interface; (2) When the cache of the core connected in the predetermined path direction holds the data, the core receives the request and returns the data to the requester core.
  • the main memory controller (A) Refer to the history of each core, (B) If a core connected in a ring bus shape in a direction opposite to the predetermined path direction holds the corresponding data, the request is sent to the core, and the cache is sent to the cache controller of the core Sending the data to be held to the requester core; (C) performing a step of reading the data from the memory and sending it to the requester core, when the core connected to the ring bus in the direction opposite to the predetermined path direction does not hold the corresponding data It is characterized by
  • a feature of this memory access device is that the history includes a flag for holding data (address data) of the address of the memory and a write-out flag to another core for each of the cores.
  • a feature of this memory access device is that the predetermined path direction is selected by the cache controller as a path direction with a large number of cores connected in two path directions from the rector core to the main memory controller.
  • a feature of this memory access device is that the cache controller calculates ring bus traffic from the data holding flag with reference to the history, and selects a path direction in which the traffic is small as the predetermined path direction. .
  • a feature of this memory access device is that the main memory controller refers to the history and confirms that the data is present in a core connected to a path reverse to the predetermined path direction.
  • the present invention is a method of reading data in which one core (requester core) exists in a memory in a ring bus multi-core CPU sharing one memory interface with a plurality of cores.
  • the multi-core CPU includes one memory, a main memory controller connecting the memory to a ring bus, and a plurality of cores connected in a ring bus shape
  • the core further includes a cache interface Including a cache controller controlling or managing the interface, the main memory controller further including a history of data retention of caches of all the cores,
  • the cache controller of each core connected in the ring bus shape flows the request in a predetermined path direction from the requester core to the controller, (1) querying the data of the request via the cache interface; (2) the core receiving the request and returning the data to the requester core, when the cache of the core connected in the path direction holds the data; (3) If the cache of the core connected in the path direction does not hold the data, the main memory controller (A) Refer to the history of each core, (B)
  • FIG. 1 An overall configuration of a ring bus type multi-core in which one memory interface is shared by a plurality of cores is shown.
  • the interface 2 for cache in each CPU core and the interface 3 for read / write request to the main memory are shown.
  • the flow of the data read transaction is indicated by the arrows in steps (1) to (5).
  • Fig. 3 shows a flowchart of steps (1) to (5) of data reading of the present invention. Indicates the contents of the access history of each core held by the main memory controller.
  • Example An embodiment (hereinafter referred to as an “example”) of the present invention for reading data in a ring bus type multi-core in which a memory interface is shared by a plurality of CPU cores will be described.
  • the following examples are illustrative and do not limit the contents of the present invention.
  • a chip mounting the ring bus type multi-core according to the present invention is provided with the following.
  • 1 Install a cache interface on each CPU core. With this interface, the contents of caches of other cores can be read directly from the main memory controller and each core.
  • the contents of the cache are fixed-length data (referred to as address data) specified in the main memory address.
  • FIG. 1 shows the entire configuration of a ring bus type multi-core in which one memory interface is shared by a plurality of cores. 1.
  • the main memory controller 7 manages a log of the state of memory access from each core 6 in the access history.
  • the access history knows which CPU core cache has which address data.
  • Each CPU core 6 is equipped with a cache controller so that the contents of the cache 11 can be read from the main memory controller 7.
  • a certain CPU core issues a read request for specific address data to the main memory controller through the ring bus.
  • This CPU core is called a requester core.
  • the cache controller 11 of each core connected on the ring bus to the main memory controller 7 looks up the contents of the incoming read request. If each core has the corresponding data in its own cache 11, it picks up the request there and returns the data to the requester core.
  • the cache controller sends out address data from the cache 11 of the CPU core via the cache interface 2. This controller makes it appear as if the requester core 6 has issued a read request to the core having address data. In this case, read address data can be sent to the requester core without passing through the main memory controller 7.
  • the main memory controller impersonates the requestor core and issues a read request directly to the cache for each core. There is no extra load on each CPU core (as well as the requester core and the one that has cache and is read).
  • the method of the present invention reduces the load on the main memory controller (main memory load reduction effect in the first path) and reduces the memory access time for the entire core (each in the second path) Core load reduction effect).
  • FIG. 2 shows a cache interface 2 in each CPU core and a read / write request interface 3 to the main memory.
  • This idea is based on the configuration where multiple CPU cores are mounted in the chip and the memory is connected through the main memory controller.
  • Each CPU core and main memory are connected by a ring bus with coherency.
  • Each CPU core is equipped with a cache interface 2 and an interface 3 in which the CPU core accesses the main memory.
  • the two interfaces 2 and 3 do not necessarily have to be separately provided. For example, the interface 3 may share two interfaces. It is possible to distinguish the interface between Snooping the ring bus track and requesting each core to read / write data from the main memory, thereby avoiding delays in each processing.
  • FIG. 3 in the entire configuration of the ring bus type multi-core, the order of the flow of the data read transaction is indicated by the arrows in steps (1) to (5). Further, FIG. 4 shows a flowchart of steps (1) to (5) of data reading as a typical embodiment of the present invention.
  • the CPU core X throws a read command to the main memory controller.
  • the closest bus As the first path, we will choose the closest bus.
  • the distance to the main memory controller for example, it is determined by the cache controller of the requester core whether to select the closer or farther bus, including factors such as congestion. Closer distance: It takes less CPU cores to reach the main memory controller. Far distance: It is more likely to hit because more CPU cores are Snooped by passing through more CPU cores.
  • the main memory controller receives the request.
  • the main memory controller refers to the access history. By referring to the memory access log of each CPU core, it is confirmed whether the CPU cores A to W on the opposite bus (second path) do not have the corresponding address data in the cache.
  • the cache controller of the CPU core B sends the corresponding address data to the CPU core X.
  • the CPU core X receives information from the CPU core B as data for the Read command issued to the main memory controller.
  • FIG. 5 shows the contents of the access history of each core held by the main memory controller.
  • This history is held by the main memory controller. It records whether each of the cores A to Z holds data (address data) of the address of the main memory in the cache.
  • the address data generally has a fixed length.
  • the write flag means that the request data is written to the requester core X.
  • the cache interface of core B snoops the ring bus transaction to confirm that it holds the address data of core X. Since the core B directly responds to the read request of the core X, the read performance can be improved in that the intervention of the main memory controller can be omitted.
  • the main memory controller updates the access history.
  • step 3 of FIG. 4 the main memory controller confirms in the access history table whether any one of the caches of the cores A to W of the backward bus holds request data.
  • the main memory controller can quickly confirm that the cache of the core B holds the address data 01 in the middle of the second path.
  • the controller sends a read request to the core B and sends an instruction to send data to X.
  • each CPU core not each CPU core but each cache itself can be read directly so that no load is placed on each CPU.
  • each core snoops during the bus to the main memory and returns directly, which leads to avoiding transactions flowing on the ring bus and avoiding congestion.
  • the main memory controller reads data from the cache of another core, the answer is directly passed to the requester core, so that the number of transactions can be reduced even through the main memory controller. That is, the number of transactions is smaller than in the method in which the main memory controller side reads data from each CPU core cache once and receives data, and then returns it to the read CPU.
  • the multi-core CPU system of the present invention it is possible to avoid the congestion in the main memory controller which is considered to be concentrated in access. It is considered that the effect of the present invention is enhanced as the number of CPU cores increases.
  • CPU architecture such as 128 cores is proposed as a multi-core CPU as PowerPC architecture.
  • the present invention is particularly effective in multicore architectures with a large number of cores.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

コアによるメモリの新規なデータ読出しを具備するリングバス型マルチコアのシステムを提供する。 1つのコア(リクエスターコア)がメモリに存在するデータのReadリクエストをするリングバス型マルチコアのシステムである。このシステムは、1つのメモリと、メモリをリングバスに接続するメインメモリコントローラと、リングバスに接続された複数のコアとを備え、コアは更にキャッシュ用インタフェース及びそのインタフェースを制御するキャッシュコントローラを含み、メインメモリコントローラは更に全てのコアのキャッシュのデータ保持の履歴を含む。リクエスターコアからメインメモリコントローラまでの所定の経路方向に流れるレクエストをリングバスに接続された各コアのキャッシュコントローラは、キャッシュ用インタフェースを介してリクエスト内容を覗くこと、所定の経路方向に接続されたコアのキャッシュが目的データを保持している場合、コアがリクエストを受取りリクエスターコアにデータを返すことを実行する。メインメモリコントローラは、経路方向に接続されたコアのキャッシュがデータを保持していない場合、各コアの履歴を参照する。所定の経路方向と逆経路方向のリングバスに接続されたコアがデータを保持している場合、コアのキャッシュに対してレクエストを送り、コアのキャッシュコントローラにキャッシュが保持するデータをリクエスターコアに送らせる。所定の経路方向と逆経路方向のリングバスに接続されたコアが該当データを保持していない場合、メモリからデータを読み出してリクエスターコアに送るステップとを実行する。本発明のコアシステムの特徴は、履歴が各コアについてメモリのデータの保持及び他のコアへの書出しフラグを含むことである。各コアのデータ読み出しは、メインメモリコントローラの負荷を軽減、及び全体のメモリアクセスの所要時間を短縮する。

Description

マルチコアシステム、及びそのコアのデータ読み出し方法
 本発明は、一つのメモリインタフェースを複数のCPUコア(単にCPU、プロセッサ、又はコアとも言う)で共有するリングバス型マルチコアシステムにおけるコアのデータ読み出しに関する。
 一つのメモリインタフェースを複数コアで共有するリングバス型マルチコアCPUにおいて、メインメモリへのアクセスは集中する。通常の動作では、各CPUコアがそれぞれにキャッシュを持ち、共有のメインメモリから実際に読み出す。1つのメインメモリから詠み出す代わりに 各CPUコアで保存されているキャッシュデータから読み出しを行う方法が考えられる。
 例えば、読み出し(Read)リクエストは、あるCPUコア(このCPUコアを「リクエスターコア」と呼ぶ)から出される。従来のマルチコア構成では、メインメモリコントローラがメインメモリから読み出す代わりに、他のCPUコアへキャッシュの有無の問い合わせを行う。問い合わせを受けたCPUコアは自分のキャッシュを検索する。
 マルチコアの動作環境では、いずれかのCPUコアが、メインメモリの同じアドレスのデータ(アドレスデータと言う)をキャッシュに持ち合わせている場合が多い。この場合メインメモリコントローラが、キャッシュの内容をリクエスターコアに対して転送するよう命令を出すことによってデータが送られるという従来の方式がある。
しかし、この方法は各コアへの問い合わせを順番にする必要があるため 搭載されるコア数に比例して時間を要する。また、各CPUコアへの問い合わせのためメインメモリコントローラの負荷も高いという欠点がある。
 複数のCPUコア構成において、それぞれのキャッシュが保持するデータの一致性(コヒーレンシ)を確保するためのコヒーレンスのためのスヌープ(Snooping)について説明する。キャッシュメモリを備えたマルチプロセッサでは、複数のプロセッサ間で処理に使用されるデータの一致性(コヒーレンシ)を保つことが必要である。従来のプロセッサでは、データのコヒーレンシを保つためにバス・スヌープが多く採用されている。バス・スヌープとは、各プロセッサ間で共有されるメモリインターフェイスバス上のトランザクションを観察し、自身に割り当てられているキャッシュメモリ上にあるデータにかかるトランザクションが発生したか否かを検出する機能である。 
 特定のプロセッサに割り当てられたキャッシュメモリ上にあるデータのトランザクションが発生した場合、そのプロセッサは、キャッシュメモリの該当するエントリを更新する。他の各プロセッサは、この更新をスヌープにより知り、自信のキャッシュに保存されているデータにdirtyのFlagを立てて使わないようにし、マルチプロセッサシステム全体としてデータを管理する。
 特許文献1は、マルチプロセッサシステムにおいて、プロセッサ間でデータのコヒーレンシを動作効率よく保つことができるキャッシュメモリを備えたプロセッサを提供する。しかし、特許文献1は、複数のプロセッサコアが単一のキャッシュを持つモデルなのであり、それぞれのプロセッサコアがそれぞれキャッシュを持つモデルとは異なる。
 特許文献2は、複数のプロセッサコアがそれぞれキャッシュを持ち、またそれぞれのプロセッサコアが持っているキャッシュデータを有効利用する技術を開示する。この技術は、あるプロセッサコアがメインメモリからデータを取りにいった時に、異なるプロセッサコアが同じメモリのデータを取りに行ったときの処理方法を示す。
特開2006-244460号公報 特開2009-176179号公報
 ところで特許文献等は、スヌープ技術をアドレスデータのコヒーレンシの為に更新しるためである。しかしながら、リングバス状に接続された複数のコアCPUコアの読み取り時において、各コアがバスのトランザクションの参照に利用されていない。つまり、従来では、リングバス状に接続された複数のCPUコアのアドレスデータ読み取り時において、各コアがバスのトランザクションをスヌープすることは示していない。
 そこで、本発明の目的は、一つのメモリインタフェースを複数コアで共有するリングバス型マルチコアのシステム、及び各コアによるデータ読み出し方法を提供することである。
 上記の目的を達成する本発明は、一つのメモリインタフェースを複数コアで共有し、1つのコア(リクエスターコア)がメモリに存在するデータのReadリクエストをする場合にリングバス型マルチコアある。このリングバス型マルチコアは、1つのメモリと、
 前記メモリをリングバスに接続するメインメモリコントローラと、リングバス状に接続された複数のコアとを備え、前記コアは更にキャッシュ用インタフェース及びそのインタフェースを制御又は管理するキャッシュコントローラを含み、前記リングバス状に接続された各コアの前記キャッシュコントローラは、
 (1)前記キャッシュ用インタフェースを介して前記リクエストのデータを覗くステップと、 
 (2)前記コアのキャッシュが前記データを保持している場合、前記コアが前記リクエストを受取り前記リクエスターコアに前記データを返すステップと、を実行し
 (3)前記コアのキャッシュが前記データを保持していない場合、前記メインメモリコントローラは、
前記メモリから前記データを読み出して前記リクエスターコアに送るステップとを実行する、ことを特徴とする。
 上記の目的を達成する本発明は、一つのメモリインタフェースを複数コアで共有し、1つのコア(リクエスターコア)がメモリに存在するデータのReadリクエストをするリングバス型マルチコアである。このリングバス型マルチコアは、1つのメモリと、前記メモリをリングバスに接続するメインメモリコントローラと、リングバス状に接続された複数のコアとを備え、前記コアは更にキャッシュ用インタフェース及びそのインタフェースを制御するキャッシュコントローラを含み、前記メインメモリコントローラは更に全ての前記コアのキャッシュのデータ保持の履歴を含み、
リクエスターコアから前記メインメモリコントローラまでの所定の経路方向に流れる前記レクエストを前記リングバス状に接続された各コアの前記キャッシュコントローラは、
 (1)前記キャッシュ用インタフェースを介して前記リクエストのデータを覗くステップと、 
 (2)前記所定の経路方向に接続されたコアのキャッシュが前記データを保持している場合、前記コアが前記リクエストを受取り前記リクエスターコアに前記データを返すステップとを実行し
 (3)前記経路方向に接続されたコアのキャッシュが前記データを保持していない場合、前記メインメモリコントローラは、
 (a)前記各コアの履歴を参照し、
 (b)前記所定の経路方向と逆経路方向のリングバス状に接続されたコアが該当データを保持している場合、前記コアに対して前記レクエストを送り、前記コアのキャッシュコントローラに前記キャッシュが保持するデータを前記リクエスターコアに送らせるステップと、
 (c)前記所定の経路方向と逆経路方向のリングバスに接続されたコアが該当データを保持していない場合、前記メモリから前記データを読み出して前記リクエスターコアに送るステップとを実行することを特徴とする。
 このメモリアクセス装置の特徴は、前記履歴は、前記各コアについて前記メモリのアドレスのデータ(アドレス・データ)の保持のフラグ及び他のコアへの書出しフラグを含むことである。
 このメモリアクセス装置の特徴は、前記所定の経路方向は、前記キャッシュコントローラにより前記レクエスターコアからメインメモリコントローラまで2つの経路方向に接続されたコア数の多い経路方向を選択することである。
 このメモリアクセス装置の特徴は、前記キャッシュコントローラは、前記履歴を参照して前記データ保持フラグからリングバスのトラフィックを計算し、前記トラフィックの小さい経路方向を前記所定の経路方向として選択することである。
 このメモリアクセス装置の特徴は、前記メインメモリコントローラは、前記履歴を参照し前記所定の経路方向と逆経路に接続されたコアに前記データが存在する確認することである。
 更に上記の目的を達成する本発明は、1つのメモリインタフェースを複数コアで共有するリングバス型マルチコアCPUにおいて、1つのコア(リクエスターコア)がメモリに存在するデータの読み出す方法である。この方法は、前記マルチコアCPUは、1つのメモリと、前記メモリをリングバスに接続するメインメモリコントローラと、前記リングバス状に接続された複数のコアとを備え、前記コアは更にキャッシュ用インタフェースとそのインタフェースを制御又は管理するキャッシュコントローラを含み、前記メインメモリコントローラは更に全ての前記コアのキャッシュのデータ保持の履歴を含み、
 リクエスターコアから前記コントローラまでの所定の経路方向に流れる前記レクエストを前記リングバス状に接続された各コアの前記キャッシュコントローラは、
 (1)前記キャッシュ用インタフェースを介して前記リクエストのデータを覗くステップと、 
 (2)前記経路方向に接続されたコアのキャッシュが前記データを保持している場合、前記コアが前記リクエストを受取り前記リクエスターコアに前記データを返すステップと、を含み、
 (3)前記経路方向に接続されたコアのキャッシュが前記データを保持していない場合、前記メインメモリコントローラは、
(a)前記各コアの履歴を参照し、
 (b)前記経路方向と逆経路方向のリングバス状に接続されたコアが該当データを保持している場合、前記コアに対して前記レクエストを送り、前記コアのキャッシュコントローラに前記キャッシュが保持するデータを前記リクエスターコアに送らせるステップと、(c)前記経路方向と逆経路方向のリングバス状に接続されたコアが該当データを保持していない場合、前記メモリから前記データを読み出して前記リクエスターコアに送るステップとを含む、ことを特徴とする。
 以上の本発明によれば、一つのメインメモリを共有するリングバス型マルチコアにおいて、メインメモリコントローラの負荷を軽減、及び全体のメモリアクセスの所要時間を短縮できる。
一つのメモリインタフェースを複数コアで共有するリングバス型マルチコアの全体構成を示す。 各CPU コアにおけるキャッシュ用インタフェース2、及びとメインメモリへRead/Writeリクエスト用インタフェース3を示す。 リングバス型マルチコアの全体構成において、データの読み出しトランザクションの流れをステップ(1)~(5)の矢印で示す。 本発明のデータ読み出しのステップ(1)~(5)のフローチャートを示す。 メインメモリコントローラが保持する各コアのアクセス履歴の内容を示す。
 メモリインタフェースを複数のCPUコアで共有するリングバス型マルチコアにおけるデータ読み出しの本発明の実施形態(以下「実施例」という)を説明する。以下の実施例は、例示であり本発明の内容を限定するものではない。
 本発明のリングバス型マルチコアを搭載するチップは、次を備えるものとする。
1:各CPUコアにキャッシュ用インタフェースを搭載する。このインタフェースにより、メインメモリ側コントローラから、及び各コアから、他のコアのキャッシュの内容を直接読み出すことができる。キャッシュの内容は、メインメモリのアドレスに指定された固定長のデータ(アドレスデータと呼ぶ)である。
2:メインメモリコントローラは、すべてのCPUコアキャッシュの内容を履歴(アドレス履歴という)として保持している。アドレス履歴は、図5に示されるように。各コアのキャッシュアドレスデータの保持の有無を保管している。
 図1は、一つのメモリインタフェースを複数コアで共有するリングバス型マルチコアの全体構成を示す。
1.メインメモリコントローラ7は、各コア6からのメモリアクセスの状況のログをアクセス履歴で管理する。アクセス履歴は、どのCPUコアのキャッシュがどのアドレスデータを持っているか把握している
2.各CPUコア六は、メインメモリコントローラ7からキャッシュ11の内容を読めるようキャッシュコントローラが搭載される。  
 あるCPUコアがリングバスを通して、メインメモリコントローラに特定のアドレスデータの読み出しリクエストを出し。このCPUコアをリクエスターコアと呼ぶ。メインメモリコントローラ7までのリングバス上に接続されている各コアのキャッシュコントローラ11は、流れてくる読み出しリクエストの内容を覗く。各コアは、自分のキャッシュ11に該当データを持っていればそこでリクエストを拾いリクエスターコアへデータを返す。
 まず、メインメモリ10までの道のり(第1の経路)に該当するデータを持っているCPUコア6が無い場合がある。この場合は、メインメモリコントローラ7がリクエストを受け各コアのアクセス履歴8を参照する。次にリクエストが流れてきた方向とは逆のリング上(第2の経路)に接続されているCPUコア6が持っている場合がある。その場合には、メインモリ10ではなくアドレスデータを持つCPUコア6に対してキャッシュ11の読み出しリクエストを投げる。
 第1の経路では、キャッシュコントローラは、キャッシュ用インタフェース2を介してCPUコアのキャッシュ11からアドレスデータを送り出す。このコントローラの覗きにより、あたかもリクエスターコア6がアドレスデータを持つコアへ読み出しリクエストを出しているように見せかけている。この場合メインメモリコントローラ7を介さず、読み出しアドレスデータをリクエスターコアに送ることができる。
 第2の経路では、メインメモリコントローラは、リクエスターコアに成りすまし、直接各コアへのキャッシュへ読み出しリクエストを出す。各CPUコア(リクエスターコアも、キャッシュを持っていて読み出される方のコアも)には余分な負荷はかからない。
本発明の方法はメインメモリコントローラの負荷が減るという点(第1の経路でのメインメモリ負荷低減効果)、及びコア全体でのメモリアクセス所要時間を減らせるという点(第2の経路での各コア負荷低減効果)で有効である。
 図2は、各CPU コアにおけるキャッシュ用インタフェース2、及びとメインメモリへRead/Writeリクエスト用インタフェース3を示す。
本アイディアはチップ内にCPUのコアを複数搭載し、メインメモリコントローラを通して メモリが接続される構成を元に考えている。各CPUコアとメインメモリはコヒーレンシを持つリングバスで接続される。各CPU コアにはキャッシュ用インタフェース2と、CPUコアがメインメモリへアクセスするインタフェース3が搭載される。なお、2つのインタフェース2及び3は必ずしも区別して設ける必要はなく、例えばインタフェース3により2つのインタフェースを兼用させてもよい。リングバスのトラックをSnoopすることと、各コアがメインメモリにデータの読み書きリクエストすることとのインタフェースを区別して各処理の遅延を回避できる。
 図3は、リングバス型マルチコアの全体構成において、データの読み出しトランザクションの流れの順番をステップ(1)~(5)の矢印で指示する。また、図4は、本発明の典型実施例として、データ読み出しのステップ(1)~(5)のフローチャートを示す。
 (1):CPUコアXが、メインメモリコントローラへReadコマンドを投げる。第1の経路のとして、近い方のバスを選ぶこととする。この場合、メインメモリコントローラまでの距離として、例えば、リクエスターコアのキャッシュコントローラにより、近い方、遠い方、どちらのバスを選ぶかは混雑さなどの要素も含めた上で決定される。
・近い方の距離:より少ないCPUコアをメインメモリコントローラに行き着くまでに経由することになる。
・遠い方の距離:より多いCPUコアを経由することでより多くのCPUコアにSnoopされるためヒットする確立はあがる。
 (2):CPUコアY、CPUコアZはアクセスをスヌープしている。 
もし該当データを自分が持っている場合はリクエストを自分が受信し、データをCPUコアXに返す。その後自分が処理をしたというフラグをつけて、リクエストの内容をメインメモリコントローラへ送る。受信後メインメモリコントローラはキャッシュのアクセス履歴をUpdateする。例えばCPUコアZが持っているとした場合、CPUコアZがCPUXへデータを返す。
 (3):もしCPUコアY、CPUコアZがリクエストされている該当データを持っていない場合には、メインメモリコントローラはリクエストを受ける。メインメモリコントローラはアクセス履歴を参照する。各CPUコアのメモリアクセスログを参照し逆側のバス上(第2の経路)にあるCPUコアA~Wが該当アドレスデータをキャッシュにもっていないか確認する。
 (4):アクセス履歴に例えばCPUコアBのキャッシュに該当データがある場合である。メインメモリコントローラは、CPUコアXからのReadリクエストの代わりにCPUコアBのキャッシュコントローラにReadコマンドを送る。CPUコアBのキャッシュ用インタフェースからみた際には、CPUコアXからの読み出し(Read)リクエストを直接受けたように見える。
 (5):CPUコアBのキャッシュコントローラは、該当アドレスデータをCPUコアXに対して送る。CPUコアXは、メインメモリコントローラへ出したReadコマンドに対するデータとしてCPUコアBから情報を受け取ることになる。 
 図5は、メインメモリコントローラが保持する各コアのアクセス履歴の内容を示す。この履歴は、メインメモリコントローラにより保持される。各コアA~Zがメインメモリのアドレスのデータ(アドレスデータ)をキャシュに保持しているかを記録する。アドレスデータは固定長が一般的である。書出しフラグは、Yの時はリクエスターコアXに要求データを書き出したことを意味する。この時コアBのキャッシュ用インタフェースはリングバスのトランザクションをスヌープして、コアXのアドレスデータを自分が保持していることを確認する。コアBが直接コアXのRead要求に応えることにより、メインメモリコントローラの介在を省略できる点で読み取りパフォーマンスの向上が図られる。コアBがリクエスターコアXにデータを送る処理を完了後に、メインメモリコントローラはアクセス履歴を更新する。
 図4のステップ3において、メインメモリコントローラは、逆回りのバスのコアA~Wの何れかのキャッシュのどれかが、要求データを保持しているかをアクセス履歴テーブルにおいて確認する。アクセス履歴テーブルの参照により、メインメモリコントローラは、第2の経路の途中においてコアBのキャッシュがアドレスデータ01を保持していることを早く確認できる。コントローラは、コアBにRead要求を送りXにデータを送る命令を送信する。
 本発明の特長は次の通りである。まず、各CPUコアではなく、各キャッシュ自体へ直接読み出しができることで各CPUへの負荷をかけない。また、メインメモリへのバスの間に各コアがスヌープし、直接返すことでリングバス上を流れるトランザクションを省き混雑を回避することにもつながる。更に、メインメモリコントローラが他コアのキャッシュへ読み出しを行う際に、その回答が直接リクエスターコアに渡されるためメインメモリコントローラを介した際にもトランザクション数を減らすことができる。つまり、メインメモリコントローラ側 が一旦各CPUコアキャッシュから読み出しを行い データを受けとった後 読み出しCPUへ返す方式に比べ トランザクショション数は少ない。
 本発明のマルチコア化したCPUのシステムにおいて アクセスが集中すると思われるメインメモリコントローラへの混雑を回避できる。CPUコアの数が多いほど本発明の効果が高まると考えられる。例えばPowerPCのアーキテクチャとして128コアなどのCPU 構想がマルチコアCPUとして提案されている。本発明によれば、特に数多いコア数のマルチコアのアーキテクチャにおいて効果を発揮する。
1…キャッシュ用インタフェース
2…メインメモリへのWrite/Read用インタフェース
5…リングバス、
6…CPUコア、
7…メインメモリコントローラ、
8…アクセス履歴、
9…ロジック、
10…メインメモリ(実メモリ)、
11…キャッシュ又はキャッシュコントローラ、

Claims (7)

  1.  1つのコア(リクエスターコア)がメモリに存在するデータの読み出し要求をするマルチコアシステムであって、
     1つのメモリと、
     前記メモリをリングバスに接続するメインメモリコントローラと、
     リングバスに接続された複数のコアとを備え、
     前記コアは更にキャッシュ用インタフェース及びそのインタフェースを制御するキャッシュコントローラを含み、
     前記リングバスに接続された各コアの前記キャッシュコントローラは、
      前記キャッシュ用インタフェースを介して前記要求のデータを覗くステップと、 
      前記コアのキャッシュが前記データを保持している場合、前記コアが前記リクエストを受取り前記リクエスターコアに前記データを返すステップと、を実行し
      前記コアのキャッシュが前記データを保持していない場合、前記メインメモリコントローラは、前記メモリから前記データを読み出して前記リクエスターコアに送るステップとを実行する、マルチコアCPUのシステム。
  2.  1つの前記コア(リクエスターコア)が前記メモリに存在するデータの読出し要求をするマルチコアシステムであって、
     1つのメモリと、
     前記メモリをリングバスに接続するメインメモリコントローラと、
     リングバスに接続された複数のコアとを備え、
     前記コアは更にキャッシュ用インタフェース及びそのインタフェースを制御するキャッシュコントローラを含み、
     前記メインメモリコントローラは更に全ての前記コアのキャッシュの履歴を含み、
     リクエスターコアから前記メインメモリコントローラまでの所定の経路方向に流れる前記レクエストを前記リングバスに接続された各コアの前記キャッシュコントローラは、
      前記キャッシュ用インタフェースを介して前記要求のデータを覗くステップと、 
      前記所定の経路方向に接続されたコアのキャッシュが前記データを保持している場合、前記コアが前記リクエストを受取り前記リクエスターコアに前記データを返すステップと、を実行し
    前記経路方向に接続されたコアのキャッシュが前記データを保持していない場合、前記メインメモリコントローラは、
       前記各コアの履歴を参照し、
       前記所定の経路方向と逆経路方向のリングバスに接続されたコアが該当データを保持している場合、前記コアのキャッシュに対して前記レクエストを送り、前記コアのキャッシュコントローラに前記キャッシュが保持するデータを前記リクエスターコアに送らせるステップと、
       前記所定の経路方向と逆経路方向のリングバスに接続されたコアが該当データを保持していない場合、前記メモリから前記データを読み出して前記リクエスターコアに送るステップとを実行する、マルチコアシステム。
  3.  前記履歴は、前記各コアについて前記メモリのアドレスのデータの保持のフラグ及び他のコアへの書出しフラグを含む請求項2に記載のマルチコアシステム。
  4.  前記所定の経路方向は、前記キャッシュコントローラにより前記レクエスターコアからメインメモリコントローラまで2つの経路方向に接続されたコア数の多い経路を選択する請求項3に記載のマルチコアシステム。
  5.  前記キャッシュコントローラは、前記履歴を参照して前記データ保持フラグからリングバスのトラフィックを計算し、前記トラフィックの小さい経路方向を前記所定の経路方向として選択する請求項4に記載のマルチコアシステム。
  6.  前記メインメモリコントローラは、前記履歴を参照し前記所定の経路方向と逆経路に接続されたコアに前記データが存在する確認する請求項5に記載のマルチコアシステム。
  7.  リングバス型マルチコアCPUにおいて1つのコア(リクエスターコア)がメモリに存在するデータの読出す方法であって、
     前記マルチコアCPUは、1つのメモリと、前記メモリをリングバスに接続するメインメモリコントローラと、前記リングバスに接続された複数のコアとを備え、
     前記コアは更にキャッシュ用インタフェースとそのインタフェースを制御するキャッシュコントローラを含み、前記メインメモリコントローラは更に全ての前記コアの保持データの履歴を含み、
     リクエスターコアから前記コントローラまでの所定の経路方向に流れる前記レクエストを前記リングバスに接続された各コアの前記キャッシュコントローラは、
    前記キャッシュ用インタフェースを介して読出し要求のデータを覗くステップと、
    前記経路方向に接続されたコアのキャッシュが前記データを保持している場合、前記コアが前記を受取り前記リクエスターコアに前記データを返すステップと、を含み、
    前記経路方向に接続されたコアのキャッシュが前記データを保持していない場合、前記メインメモリコントローラは、
    前記各コアの履歴を参照し、
      前記経路方向と逆経路方向のリングバスに接続されたコアが該当データを保持している場合、前記コアに対して前記レクエストを送り、前記コアのキャッシュコントローラに前記キャッシュが保持するデータを前記リクエスターコアに送らせるステップと、
      前記経路方向と逆経路方向のリングバスに接続されたコアが該当データを保持していない場合、前記メモリから前記データを読み出して前記リクエスターコアに送るステップとを含む、データの読み出す方法。
PCT/JP2011/072206 2010-12-09 2011-09-28 マルチコアシステム、及びそのコアのデータ読み出し方法 WO2012077400A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201180064625.9A CN103370696B (zh) 2010-12-09 2011-09-28 多核系统以及核数据读取方法
DE112011104329T DE112011104329T5 (de) 2010-12-09 2011-09-28 Mehrkernsystem und Verfahren zum Lesen der Kerndaten
GB1311211.5A GB2499765B (en) 2010-12-09 2011-09-28 Multicore system and method of reading the core data

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2010-274556 2010-12-09
JP2010274556 2010-12-09

Publications (1)

Publication Number Publication Date
WO2012077400A1 true WO2012077400A1 (ja) 2012-06-14

Family

ID=46200595

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/072206 WO2012077400A1 (ja) 2010-12-09 2011-09-28 マルチコアシステム、及びそのコアのデータ読み出し方法

Country Status (5)

Country Link
US (1) US8918590B2 (ja)
CN (1) CN103370696B (ja)
DE (1) DE112011104329T5 (ja)
GB (1) GB2499765B (ja)
WO (1) WO2012077400A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112011104329T5 (de) 2010-12-09 2013-09-26 International Business Machines Corporation Mehrkernsystem und Verfahren zum Lesen der Kerndaten
WO2013084315A1 (ja) * 2011-12-07 2013-06-13 富士通株式会社 演算処理装置、及び、演算処理装置の制御方法
WO2013084314A1 (ja) * 2011-12-07 2013-06-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20140201326A1 (en) * 2013-01-16 2014-07-17 Marvell World Trade Ltd. Interconnected ring network in a multi-processor system
EP3014420A4 (en) * 2013-06-29 2017-04-05 Intel Corporation On-chip mesh interconnect
US10229043B2 (en) 2013-07-23 2019-03-12 Intel Business Machines Corporation Requesting memory spaces and resources using a memory controller
EP3063637A4 (en) * 2013-10-31 2017-07-19 Intel Corporation A method, apparatus and system for dynamically controlling an addressing mode for a cache memory
CN103902502B (zh) * 2014-04-09 2017-01-04 上海理工大学 一种可扩展的分离式异构千核系统
US9710381B2 (en) 2014-06-18 2017-07-18 International Business Machines Corporation Method and apparatus for cache memory data processing
US9696789B2 (en) * 2014-08-18 2017-07-04 Xilinx, Inc. Sub-system power management control
CN104268121B (zh) * 2014-09-23 2017-08-11 浪潮(北京)电子信息产业有限公司 超大规模芯片中访问寄存器的方法及系统
US9563467B1 (en) 2015-10-29 2017-02-07 International Business Machines Corporation Interprocessor memory status communication
US9760397B2 (en) 2015-10-29 2017-09-12 International Business Machines Corporation Interprocessor memory status communication
US10261827B2 (en) 2015-10-29 2019-04-16 International Business Machines Corporation Interprocessor memory status communication
US9916179B2 (en) * 2015-10-29 2018-03-13 International Business Machines Corporation Interprocessor memory status communication
US10691595B2 (en) * 2018-08-21 2020-06-23 Micron Technology, Inc. Cache in a non-volatile memory subsystem
CN109886395B (zh) * 2019-03-06 2020-11-24 上海熠知电子科技有限公司 一种面向多核图像处理卷积神经网络的数据读取方法
CN112559434B (zh) * 2019-09-25 2023-12-08 阿里巴巴集团控股有限公司 一种多核处理器及核间数据转发方法
CN113392604B (zh) * 2021-06-04 2023-08-01 中国科学院计算技术研究所 基于先进封装技术的多cpu共封架构下高速缓存的动态扩容方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06314239A (ja) * 1993-04-28 1994-11-08 Hitachi Ltd プロセッサシステム
JPH11134312A (ja) * 1997-08-22 1999-05-21 Seitai Cho 分散共有メモリ多重プロセッサシステム
JP2001222517A (ja) * 2000-02-11 2001-08-17 Seitai Cho 方向分離二重リング構造を有する分散共有メモリ多重プロセッサシステム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1271561A (en) * 1986-07-02 1990-07-10 Jeffry M. Bram Instruction decoding microengines
JP3732397B2 (ja) * 2000-10-05 2006-01-05 株式会社日立製作所 キャッシュシステム
KR100856626B1 (ko) * 2002-12-24 2008-09-03 엘지노텔 주식회사 캐시 플러시 시스템 및 방법
US6988173B2 (en) * 2003-05-12 2006-01-17 International Business Machines Corporation Bus protocol for a switchless distributed shared memory computer system
US7069362B2 (en) * 2003-05-12 2006-06-27 International Business Machines Corporation Topology for shared memory computer system
CN1320464C (zh) * 2003-10-23 2007-06-06 英特尔公司 用于维持共享高速缓存一致性的方法和设备
US7676637B2 (en) * 2004-04-27 2010-03-09 International Business Machines Corporation Location-aware cache-to-cache transfers
JP4904802B2 (ja) 2005-02-01 2012-03-28 セイコーエプソン株式会社 キャッシュメモリ及びプロセッサ
US7769956B2 (en) * 2005-09-07 2010-08-03 Intel Corporation Pre-coherence channel
CN101008921A (zh) * 2007-01-26 2007-08-01 浙江大学 基于总线侦听的嵌入式异构多核缓存一致性方法
US7827391B2 (en) * 2007-06-26 2010-11-02 International Business Machines Corporation Method and apparatus for single-stepping coherence events in a multiprocessor system under software control
CN101452400B (zh) * 2007-11-29 2011-12-28 国际商业机器公司 处理多处理器系统中事务缓冲器溢出的方法和系统
JP4474570B2 (ja) * 2008-01-28 2010-06-09 エヌイーシーコンピュータテクノ株式会社 キャッシュコヒーレンシ制御方法
US8554851B2 (en) * 2010-09-24 2013-10-08 Intel Corporation Apparatus, system, and methods for facilitating one-way ordering of messages
DE112011104329T5 (de) 2010-12-09 2013-09-26 International Business Machines Corporation Mehrkernsystem und Verfahren zum Lesen der Kerndaten
JP5655696B2 (ja) * 2011-05-11 2015-01-21 富士通株式会社 ネットワーク及びその障害救済方法
US20130144626A1 (en) * 2011-12-04 2013-06-06 David Shau Rap music generation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06314239A (ja) * 1993-04-28 1994-11-08 Hitachi Ltd プロセッサシステム
JPH11134312A (ja) * 1997-08-22 1999-05-21 Seitai Cho 分散共有メモリ多重プロセッサシステム
JP2001222517A (ja) * 2000-02-11 2001-08-17 Seitai Cho 方向分離二重リング構造を有する分散共有メモリ多重プロセッサシステム

Also Published As

Publication number Publication date
GB2499765A (en) 2013-08-28
GB201311211D0 (en) 2013-08-14
DE112011104329T5 (de) 2013-09-26
CN103370696A (zh) 2013-10-23
CN103370696B (zh) 2016-01-20
GB2499765B (en) 2014-02-19
US20120151152A1 (en) 2012-06-14
US8918590B2 (en) 2014-12-23

Similar Documents

Publication Publication Date Title
WO2012077400A1 (ja) マルチコアシステム、及びそのコアのデータ読み出し方法
US9239789B2 (en) Method and apparatus for monitor and MWAIT in a distributed cache architecture
Starke et al. The cache and memory subsystems of the IBM POWER8 processor
US6976131B2 (en) Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
US8185695B2 (en) Snoop filtering mechanism
JP4474570B2 (ja) キャッシュコヒーレンシ制御方法
US20050228952A1 (en) Cache coherency mechanism
JP6174186B2 (ja) キャッシュコヒーレンシを有する集積回路
US7685373B2 (en) Selective snooping by snoop masters to locate updated data
US20090259813A1 (en) Multi-processor system and method of controlling the multi-processor system
JP2000250881A (ja) 不均等メモリ・アクセス・システム内で書き戻しの衝突によって生じるライブロックを避けるための方法およびシステム
US7779210B2 (en) Avoiding snoop response dependency
US8688919B1 (en) Method and apparatus for associating requests and responses with identification information
US7779211B2 (en) Reducing latency in responding to a snoop request
US8489822B2 (en) Providing a directory cache for peripheral devices
US7882311B2 (en) Non-snoop read/write operations in a system supporting snooping
JPWO2007096978A1 (ja) スヌープ制御方法および情報処理装置
CN112955877A (zh) 修改存储数据的装置和方法
JP5375876B2 (ja) マルチプロセッサシステム
JP5724981B2 (ja) メモリアクセス制御装置、メモリアクセス制御システム、及び、メモリアクセス制御方法
JP2017199970A (ja) データ送信装置、データ送受信システムおよびデータ送信装置の制御方法

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201180064625.9

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11847268

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 1120111043295

Country of ref document: DE

Ref document number: 112011104329

Country of ref document: DE

ENP Entry into the national phase

Ref document number: 1311211

Country of ref document: GB

Kind code of ref document: A

Free format text: PCT FILING DATE = 20110928

WWE Wipo information: entry into national phase

Ref document number: 1311211.5

Country of ref document: GB

NENP Non-entry into the national phase

Ref country code: JP

122 Ep: pct application non-entry in european phase

Ref document number: 11847268

Country of ref document: EP

Kind code of ref document: A1