WO2010052799A1 - 情報処理装置及びメモリ制御装置 - Google Patents

情報処理装置及びメモリ制御装置 Download PDF

Info

Publication number
WO2010052799A1
WO2010052799A1 PCT/JP2008/070437 JP2008070437W WO2010052799A1 WO 2010052799 A1 WO2010052799 A1 WO 2010052799A1 JP 2008070437 W JP2008070437 W JP 2008070437W WO 2010052799 A1 WO2010052799 A1 WO 2010052799A1
Authority
WO
WIPO (PCT)
Prior art keywords
directory
cache
storage device
main storage
information
Prior art date
Application number
PCT/JP2008/070437
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 JP2010536633A priority Critical patent/JP5136652B2/ja
Priority to EP08877994.7A priority patent/EP2354953B1/en
Priority to PCT/JP2008/070437 priority patent/WO2010052799A1/ja
Publication of WO2010052799A1 publication Critical patent/WO2010052799A1/ja
Priority to US13/101,362 priority patent/US8725954B2/en

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/0817Cache consistency protocols using directory methods
    • 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
    • G06F12/082Associative directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Definitions

  • the present invention relates to an information processing device and a memory control device, and more particularly to an information processing device and a memory control device that can reduce unnecessary access to a main storage device and prevent compression of a memory band.
  • a multiprocessor system as an information processing apparatus that executes a plurality of tasks in parallel by a plurality of processors is widely used as a technique for improving the processing capability of the computer and executing various tasks.
  • data updated by a certain processor may stay in the cache memory, and the latest data may not exist in the main storage device.
  • data coherence data coherence
  • a correct result may not be obtained. Therefore, in order to prevent such a situation, in a multiprocessor system, for example, memory access control using directory information is performed.
  • each cache memory and main storage device is associated with directory information indicating the state of the data (for example, whether it has been updated).
  • the memory controller as a memory control device that controls data transfer between the cache memory and the main storage device refers to the directory information to determine whether the latest data exists on the main storage device or another processor. It is determined whether it exists in the cache memory. As a result, each processor can always access the latest data, and data coherence is maintained.
  • multiprocessor systems having a directory cache that manages directory information of data stored in the main storage device separately from the main storage device have been developed. According to such a multiprocessor system, the memory controller does not need to access the main storage device one by one in order to confirm the state of the data stored in the main storage device, and the number of accesses to the main storage device is reduced. Data processing can be accelerated.
  • data (cache copy) held in each cache memory includes M: Modify (modify), E: Exclusive (exclusive), S: Share (shared), I: Invalid (invalid) May be represented by the MESI state.
  • the directory information of the main storage device and the directory cache may include information indicating three states of E, S, and I and information for identifying a processor that holds a copy of data stored in the main storage device. is there.
  • a directory cache entry may be defined in three states: N: Null, C: Clean, and D: Dirty.
  • N indicates that there is no valid information on the directory cache, and directory information can be written in the entry defined in this state.
  • C indicates that the directory information on the directory cache is the same as the directory information on the main storage device, and the entry defined in this state can be discarded without rewriting the directory information on the main storage device.
  • D indicates that the directory information on the directory cache is different from the directory information on the main storage device. When the entry in this state is discarded, the directory information on the main storage device is rewritten with the directory cache information. Must-have.
  • Each entry in the directory cache transitions between these N, C, and D states depending on the type of access processed by the memory controller.
  • a shared read request RTS: Request To Share
  • RTO Request To Own
  • the memory controller changes the entry state from “N” to “D” (step S01).
  • the entry status is “D”
  • the entry status is “D”
  • the entry status is “D”
  • the entry status is “D”
  • the entry status is “D”
  • the entry status is “D”
  • the entry status is “D”
  • the entry status is “D”
  • an Eviction (deletion) notification of the cache line corresponding to the entry is received from the processor, or if the entry is evicted from the directory cache due to insufficient capacity or the like
  • the memory changes the state of the entry to “N” (step S02).
  • the entry state is “D”
  • the entry state is “C”
  • the entry state is “C”
  • the entry state is “C”
  • the entry state is “C”
  • the RTO is received or when the RTS is received for the cache line not held in the M state
  • the memory controller changes the entry state from “C”. Change to “D” (step S04).
  • the memory controller when the entry status is “C”, when the cache line Eviction notification is received from the processor, or when the entry is purged from the directory cache (when evicted), the memory controller The state is changed from “C” to “N” (steps S05 and S06).
  • an arrow indicated by a bold line indicates that an access to the main storage device occurs when the memory controller performs the corresponding process (the processes in steps S02, S03, and S05).
  • the memory controller determines whether to access the main storage device based on the state of these entries.
  • FIG. 7 is a diagram for explaining a memory access control method in a conventional multiprocessor system.
  • the data (Payload) “aaaaaa” stored at address X of the main storage device is not stored in any cache memory, but is held in the I state in the main storage device.
  • This multiprocessor system employs a write-back type directory cache.
  • the write-back method means that when data is written to the cache memory, the data is not written to both the cache memory and the main storage device at the same time, and the data is purged from the cache memory. In this method, data is written to the main storage device.
  • step S ⁇ b> 11 when the processor A transmits RTS to the memory controller in order to share the data “aaaaaa” stored in the main storage device (step S ⁇ b> 11), the memory controller transmits to the main storage device.
  • a read request is made (step S12), and data “aaaaaa” is acquired (step S13). Then, the memory controller transmits the acquired data “aaaaaa” to the processor A (step S14), and the processor A that acquired the data updates the directory information of its own cache memory to “S”.
  • rewriting of directory information in the main storage device does not occur at this time, so the data “aaaaaa” in the main storage device remains in the I state.
  • the processor A transmits an Eviction notification to the memory controller (step S15).
  • This Eviction notification is a signal transmitted when data in the cache memory is deleted.
  • the memory controller that has received the Eviction notification invalidates the entry corresponding to the data “aaaaa” in the directory cache (transitions to the N state).
  • step S16 the main storage device before and after the processing of the Eviction notification There is no change in the contents (data and directory information). In other words, access to the main storage device in this case is essentially unnecessary access.
  • the memory controller cannot determine the contents of the directory information in the main storage device only by using the directory information on the directory cache. .
  • the present invention has been made to solve the above-described problems caused by the prior art, and an information processing apparatus and memory control capable of reducing unnecessary access to a main storage device and preventing compression of a memory band.
  • An object is to provide an apparatus.
  • a multiprocessor system disclosed in the present application includes, as one aspect, a main storage device that stores data and manages the state of the data as directory information.
  • a plurality of cache memories that temporarily hold copies of data stored in the storage device, a plurality of processors that perform processing using the data held in the cache memory, and data stored in the main storage device
  • a directory cache for managing directory information separately from the main storage device, a directory cache for managing information indicating a matching state between the directory information managed by itself and the directory information managed by the main storage device, and the directory cache
  • the cache memory and the main storage device A memory controller that controls data transfer between the memory controller and the memory controller when the number of cache memories that hold a copy of the data stored in the main storage device is one.
  • the consistency state is different between the directory information on the directory cache and the directory information on the main storage device. Updates the directory information on the directory cache and accesses the main storage device to write back the directory information on the main storage device, while the data has not been modified by the processor, and ,
  • the consistency state is a directory on the directory cache.
  • the directory information on the main storage device is different from the directory information on the main storage device, and the directory information on the main storage device is in a state indicating that no copy of the data is held in any of the processors If so, the directory information on the directory cache is updated without accessing the main storage device.
  • FIG. 1 is a diagram illustrating an example of the configuration of the multiprocessor system according to the present embodiment.
  • FIG. 2 is a diagram illustrating a bit configuration example of a cache line on the memory and directory information included in the cache line.
  • FIG. 3 is a diagram illustrating a bit configuration example of an entry in the directory cache.
  • FIG. 4 is a diagram for explaining an example of the state transition of the directory cache entry.
  • FIG. 5 is a diagram for explaining an example of the memory access control method of the multiprocessor system according to the present embodiment.
  • FIG. 6 is a diagram for explaining an example of state transition of a conventional directory cache entry.
  • FIG. 7 is a diagram for explaining a memory access control method in a conventional multiprocessor system.
  • FIG. 1 is a diagram illustrating an example of the configuration of the multiprocessor system according to the present embodiment.
  • the multiprocessor system according to the present embodiment is a multiprocessor system that adopts the ccNUMA (Cache Coherent Non-Uniform Memory Access) method.
  • ccNUMA cache Coherent Non-Uniform Memory Access
  • it is not always necessary to adopt this method, and it is composed of one system board. It may be.
  • ccNUMA a plurality of system boards each having a processor are connected to each other so that the processors access local memories of other system boards. Therefore, the memory access time from each processor is not uniform, but cache coherence This is a method that can maintain the above.
  • the multiprocessor system S has two system boards 1a and 1b.
  • the system board 1a includes a memory 10a, processors 12a to 12d, a directory cache 13a, a memory controller 14a, and an intra-node switch 15a.
  • the system board 1b includes a memory 10b, processors 12e to 12h, a directory cache 13b, a memory controller 14b, and an intra-node switch 15b.
  • the memory 10 corresponds to a main storage device, stores various data, and manages the state of the data as directory information.
  • the directory information will be described.
  • FIG. 2 is a diagram illustrating a bit configuration example of a cache line on the memory and directory information included in the cache line.
  • one cache line on the memory 10 includes a 128-byte Payload, a 32-bit DIR (directory information), and a 96-bit ECC (Error Correcting Code).
  • Payload indicates the data body excluding additional information such as directory information and ECC.
  • ECC detects data errors and corrects them automatically.
  • the state of each data is represented by three states: E (Exclusive), S (Share), and I (Invalidate).
  • E indicates that the data is held in any one of the cache memories 11, and it is not known whether the cache copy held by the cache memory 11 matches the data (the cache copy is changed from the data on the memory).
  • Status indicates a state in which there are a plurality of cache memories 11 holding the data, and the cache copy held by each cache memory 11 matches the data.
  • I indicates a state where there is no cache memory 11 that holds the data.
  • the processors 12a to 12h have cache memories 11a to 11h, respectively.
  • the cache memory 11 temporarily holds a copy of the data stored in the memory 10.
  • the processor 12 performs various processes using the data held in the cache memory 11 that the processor 12 has.
  • the cache memory 11 has directory information indicating a cache copy status.
  • the cache copy state is represented by four states obtained by adding M (Modified) to the above-mentioned E ⁇ S ⁇ I.
  • M indicates a state in which only oneself holds a copy of certain data stored in the memory 10 and the copy (cache copy) is changed from the data on the memory 10.
  • E indicates a state in which only the user owns a copy of certain data stored in the memory 10 and the copy and the data on the memory match.
  • S indicates a state in which a plurality of processors 12 including itself hold copies of certain data stored in the memory 10, and the cache copy held by each processor 12 matches the data on the memory 10.
  • I indicates a state where no cache copy is held.
  • memory access control is performed by the MESI protocol.
  • the directory cache 13 manages the directory information of the data stored in the memory 10 separately from the memory 10 and manages information indicating the consistency state between the directory information managed by itself and the directory information managed by the memory 10. .
  • FIG. 3 is a diagram showing a bit configuration example of entries in the directory cache 13.
  • the entry in the directory cache 13 includes address information (address: 23 bits) and information indicating the consistency between the directory information managed by itself and the directory information managed by the memory 10 (state: 2 bits). And directory information (22 bits).
  • the address information is information indicating where in the memory 10 data managed by the entry is stored.
  • the directory information managed by the directory cache 13 includes information (E / S / I) indicating the state of the corresponding data and information indicating the owner / sharer. Including.
  • N Null
  • C Clean
  • D Dirty formerly (Invalid).
  • N indicates that there is no valid information on the directory cache 13, and directory information can be written in the entry defined in this state.
  • C indicates that the directory information on the directory cache 13 is the same as the directory information on the main storage device, and the entry defined in this state can be discarded without rewriting the directory information on the main storage device.
  • D indicates that the directory information on the directory cache 13 is different from the directory information on the main storage device. When the entry in this state is discarded, the directory information on the main storage device is changed to the directory cache information. Must be rewritten.
  • DI is a state for identifying that the directory information on the directory cache 13 is different from the directory information on the memory 10 and that the directory information on the memory 10 is I.
  • the DI is newly added to the state represented by three of N, C, and D in the past, and thus occurs in the conventional multiprocessor system. Reduce unnecessary memory access.
  • the memory handled by one memory controller is 1 TB at the maximum (that is, the address can be represented by 40 bits of [39: 0]).
  • the size of the cache line of the directory cache 13 is the same as that of the memory 10.
  • the directory cache 13 employs a set associative method, and the address [16: 7] is used as an index that is index information of the directory cache 13. Note that the configuration of the directory cache 13 shown in the present embodiment is merely an example, and is not limited to this configuration.
  • the memory controller 14 controls data transfer between the cache memory 11 and the memory 10, and includes a state management unit 100 and a data transfer unit 110.
  • the state management unit 100 updates the directory information on the directory cache 13 based on various requests acquired from the processor 12.
  • the data transfer unit 110 performs data transfer between the cache memory 11 and the memory 10 based on information (address information, state, directory information) managed by the directory cache 13.
  • the intra-node switch 15 is a kind of data transfer device that transfers data and requests between the memory 10 and the processor 12 based on an instruction from the memory controller 14. Further, in this embodiment, the system boards 1a and 1b are connected to each other by the inter-node switch 17. As a result, each processor 12 can access the memory 10 of the other system board 1.
  • the system boards 1a and 1b are connected to I / O devices 16a and 16b such as a magnetic disk device (HDD), a network card, a mouse and a keyboard.
  • HDD magnetic disk device
  • FIG. 4 is a diagram for explaining an example of state transition of entries in the directory cache 13.
  • the state of the entry in the directory cache 13 is updated by the state management unit 100 provided in the memory controller 14.
  • the multiprocessor system S has state transitions associated with the processes of steps S27 to S30 in addition to the state transitions (state transitions associated with the processes of steps S21 to S26) in the conventional multiprocessor system.
  • the entry status is “N” and RTS or RTO is received from the processor 12 and the directory information on the memory 10 is not I
  • status management is performed.
  • the unit 100 changes the entry state to “D” (step S21).
  • the entry status is “D”
  • the entry status is “D”
  • the cache line Eviction (deletion) notification is received from the processor 12 or the entry is evicted from the directory cache 13
  • the status management unit 100 Changes the state of the entry to “N” (step S22).
  • Step S23 When the state of the entry is “D”, if any processor 12 receives RTS for the cache line held in the M state, the state management unit 100 changes the state of the entry to “C”.
  • the entry status is “C”
  • the state management unit 100 displays the state of the entry. Change to "D” (step S24).
  • the status management unit 100 changes the status of the entry to “ N "(steps S25 and S26).
  • the state management unit 100 changes the entry state to “ “DI” (step S27).
  • the entry status is “DI”
  • the cache line Eviction notification corresponding to the entry is received from the processor 12 or the entry is evicted from the directory cache 13
  • the status management unit 100 The entry state is changed to “N” (steps S28 and S29).
  • the data transfer unit 110 accesses the memory 10 and writes back the data on the memory 10.
  • step S30 when the state of the entry is “DI”, if any processor 12 receives RTS for the cache line held in the M state, the state management unit 100 sets the state of the entry to “C”. Change (step S30).
  • FIG. 5 is a diagram for explaining the memory access control method in the multiprocessor system according to this embodiment.
  • the data (Payload) “aaaaaa” stored at address X of the main storage device is not stored in any cache memory, but is held in the I state in the main storage device.
  • the data (Payload) “aaaaaa” stored at address X of the main storage device is not stored in any cache memory, but is held in the I state in the main storage device.
  • the data transfer unit 110a includes the memory 10a. Is read (step S32), and data “aaaaa” is acquired (step S33). Then, the data transfer unit 110a transmits the acquired data “aaaaaa” to the processor 12a (step S34), and the processor 12a that acquired the data updates the directory information of its own cache memory 11a to “S”. Since rewriting of directory information on the memory 10 does not occur at this time, the data “aaaaaa” in the main storage device remains in the I state.
  • the state management unit 100a since the directory information on the directory cache 13a is different from the directory information on the memory 10 and the directory information on the memory 10 is “I: undefined”, the state management unit 100a has the data “aaaaaa”. The state (state) of the entry corresponding to is “DI”.
  • the state management unit 100a accesses the memory 10a in step S32, the state management unit 100a refers to the directory information on the memory 10a and determines whether or not the directory information is “I”. When it is determined that the directory information on the memory 10a is “I” and the directory information on the directory cache 13a is originally “N”, the state management unit 100a stores the data “aaaaa”. The state of the corresponding entry is “DI”. When the directory information on the memory 10a is not “I” and the directory information on the directory cache 13a is originally “N”, the state management unit 100a sets the state to “D”.
  • the processor 12a transmits an Eviction notification to the memory controller 14a (step S35).
  • the state management unit 100a determines whether or not the cache copy has been modified and whether or not the entry state is “DI”. If the cache copy is not modified and the entry state is “DI”, the state management unit 100a does not access the memory 10 (Read-Modify-Write), The directory information on the cache 13a is invalidated (transition to the N state). Note that the Eviction notification includes information on whether or not the cache copy has been modified, and the memory controller can determine whether the memory access is necessary or not by referring to the content of the received Eviction notification.
  • the multiprocessor system S newly provides “DI” as the entry state of the directory cache 13, thereby unnecessary memory access that has occurred in the conventional multiprocessor system S. Can be reduced.
  • memory access instructions are typically executed at a ratio of one memory write instruction to two memory read instructions. This is considered to be that the calculation of the form A ⁇ f (A, B) is continuously performed. That is, an operation is performed in which the A area and the B area on the memory 10 are read and the calculation result is written back to the A area on the memory 10.
  • RTS occurs for each of the A area and B area
  • RTO occurs for the A area (however, this RTO processing does not involve memory access, and directory information is changed from S to E). Only change to).
  • half (A area) of the cache copy held in the cache memory 11 of the processor 12 by the memory read operation needs to be written back to the memory 10 because the contents are updated, and the other half (B area) The contents are not updated (can be evicted from the cache memory 11 without writing back).
  • access to the memory 10 generated on the memory controller 14 side is as follows. Write once. For Eviction, when the memory access control method according to the present embodiment is not applied, the memory access control method according to the present embodiment is applied. If there is no access to the memory 10.
  • the DI state is provided as one of the information indicating the matching state between the directory information on the directory cache 13 and the directory information on the memory 10, and thus has occurred conventionally. Since unnecessary memory access can be reduced, it is possible to prevent compression of the memory bandwidth.
  • the request transmitted from the processor 12 to the memory controller 14 is RTS.
  • RTS the request transmitted from the processor 12 to the memory controller 14
  • the present invention is not limited to this, and may be RTO, for example.
  • RTS and RTO are mentioned as general read requests, they are described here, but the target is not limited to them. It is possible to utilize the DI state when the directory information on the memory 10 is I and the directory information on the directory cache 13 is different from the read request with other properties or the BlockStore request not accompanied by the read. it can.
  • the method in which the directory information exists in the memory 10 is applied.
  • the directory information may be provided in another location that is not in the memory 10.

Abstract

 従来の情報処理装置において発生していた不要なメモリアクセスを削減し、メモリ帯域の圧迫を防止することを課題とする。この課題を解決するために、メモリ制御装置は、主記憶装置に格納されたデータのコピーを保持するキャッシュメモリが1つであるときに、当該キャッシュメモリに保持されたデータを削除した旨の通知を前記プロセッサから受けた場合において、データがプロセッサにより修正されておらず、かつ、整合状態が、ディレクトリ・キャッシュ上のディレクトリ情報と主記憶装置上のディレクトリ情報とが異なり、主記憶装置上のディレクトリ情報が、データのコピーがいずれのプロセッサにも保持されていないことを示している状態であると判定した場合は、主記憶装置へのアクセスを行わずにディレクトリ・キャッシュ上のディレクトリ情報を更新する。

Description

情報処理装置及びメモリ制御装置
 この発明は、情報処置装置及びメモリ制御装置に関し、特に、主記憶装置への不要なアクセスを削減し、メモリ帯域の圧迫を防止できる情報処理装置及びメモリ制御装置に関するものである。
 従来、コンピュータの処理能力を向上させ、種々のタスクを実行するための技術として、複数のプロセッサにより複数のタスクを並列実行する情報処理装置としてのマルチプロセッサシステムが広く用いられている。
 このようなマルチプロセッサシステムでは、あるプロセッサにより更新されたデータがキャッシュメモリ内に滞留し、主記憶装置に最新のデータが存在しない場合がある。このとき、他のプロセッサがこのデータを参照/更新しようとすると、データのコヒーレンス(Data Coherence:データの一貫性)が保たれず、正しい結果が得られないおそれがある。そこで、このような状況を防止するため、マルチプロセッサシステムでは、例えば、ディレクトリ情報を用いたメモリアクセス制御が行われている。
 具体的には、各キャッシュメモリ及び主記憶装置に格納されたデータには、そのデータの状態(例えば、更新されているか否か等。)を表すディレクトリ情報が関連付けられている。そして、キャッシュメモリと主記憶装置との間のデータ転送を制御するメモリ制御装置としてのメモリコントローラは、ディレクトリ情報を参照して、最新のデータが主記憶装置上に存在するのか、あるいは他のプロセッサのキャッシュメモリ上に存在するのかを判断する。これにより、各プロセッサは、常に最新のデータにアクセスすることができるようになり、データのコヒーレンスが保たれる。
 さらに近年では、主記憶装置に格納されたデータのディレクトリ情報を主記憶装置とは別に管理するディレクトリ・キャッシュを備えたマルチプロセッサシステムも開発されている。かかるマルチプロセッサシステムによれば、メモリコントローラは、主記憶装置に格納されたデータの状態を確認するために逐一主記憶装置にアクセスする必要がなくなり、主記憶装置へのアクセス回数が低減されるため、データ処理を高速化できる。
特開平5-100952号公報
 しかしながら、このような従来のメモリアクセス制御方法では、主記憶装置に対して不要なアクセスが生じる場合があり、メモリ帯域への圧迫が生じていた。以下、従来のマルチプロセッサシステムにおけるメモリアクセス制御方法について具体的に説明する。
 従来のマルチプロセッサシステムにおいて、例えば、各キャッシュメモリに保持されたデータ(キャッシュコピー)は、M:Modify(修正)、E:Exclusive(排他)、S:Share(共有)、I:Invalid(無効)のMESI状態で表される場合がある。また、例えば主記憶装置およびディレクトリ・キャッシュのディレクトリ情報は、E・S・Iの3つの状態を示す情報および主記憶装置に格納されたデータのコピーを保持するプロセッサを識別する情報を備える場合がある。
 また、例えばディレクトリ・キャッシュのエントリは、N:Null、C:Clean、D:Dirtyの3つの状態で定義される場合がある。ここで、Nは、ディレクトリ・キャッシュ上に有効な情報がないことを示し、この状態で定義されているエントリにはディレクトリ情報を書き込むことができる。Cは、ディレクトリ・キャッシュ上のディレクトリ情報が主記憶装置上のディレクトリ情報と同じであることを示し、この状態で定義されているエントリは、主記憶装置のディレクトリ情報を書き換えずに破棄できる。Dは、ディレクトリ・キャッシュ上のディレクトリ情報が主記憶装置上のディレクトリ情報と異なることを示しており、この状態のエントリを破棄する場合は、主記憶装置のディレクトリ情報をディレクトリ・キャッシュの情報に書き換えなくてはならない。
 そして、ディレクトリ・キャッシュの各エントリは、メモリコントローラが処理するアクセスの種類によってこれらのN、C、Dの状態間を遷移する。具体的には、図6に示すように、例えば、どのプロセッサのキャッシュメモリにも保持されていないデータに対する共有リード要求(RTS:Request To Share)又は所有リード要求(RTO:Request To Own)をプロセッサから受けた場合、メモリコントローラは、エントリの状態を「N」から「D」に変更する(ステップS01)。また、エントリの状態が「D」であるときに、当該エントリに対応するキャッシュラインのEviction(削除)通知をプロセッサから受けた場合、あるいは容量不足等によりディレクトリ・キャッシュからエントリが追い出される場合、メモリコントローラは、当該エントリの状態を「N」に変更する(ステップS02)。
 また、エントリの状態が「D」であるときに、いずれかのプロセッサ(の使用するキャッシュメモリ)がM状態で保持するキャッシュラインに対するRTSを受けた場合、メモリコントローラは、当該エントリの状態を「D」から「C」に変更する(ステップS03)。また、エントリの状態が「C」であるときに、RTOを受けた場合、あるいはM状態で保持されていないキャッシュラインに対するRTSを受けた場合、メモリコントローラは、当該エントリの状態を「C」から「D」に変更する(ステップS04)。
 また、エントリの状態が「C」であるときに、プロセッサからキャッシュラインのEviction通知を受けたとき、あるいはディレクトリ・キャッシュからエントリがPurgeされるとき(追い出されるとき)、メモリコントローラは、当該エントリの状態を「C」から「N」に変更する(ステップS05、S06)。なお、図6において、太線で表された矢印は、メモリコントローラが該当する処理(ステップS02、S03、S05の処理)を行う際に、主記憶装置へのアクセスが発生することを示している。
 そして、メモリコントローラは、プロセッサから各種要求を受けた際、これらエントリの状態に基づき主記憶装置へのアクセスを行うか否かを判断する。
 ここで、メモリコントローラによる主記憶装置への不要なアクセスが生じる場合について、図7を用いて具体的に説明する。図7は、従来のマルチプロセッサシステムにおけるメモリアクセス制御方法を説明するための図である。なお、初期状態において、主記憶装置のX番地に格納されているデータ(Payload)「aaaaaa」は、どのキャッシュメモリにも格納されておらず、主記憶装置内にI状態で保持されているものとする。また、このマルチプロセッサシステムは、ライトバック方式のディレクトリ・キャッシュを採用している。ライトバック方式とは、データをキャッシュメモリに書き込む際に、当該データをキャッシュメモリと主記憶装置の両方に対して同時には書き込みを行わず、当該データがキャッシュメモリからPurgeされる場合等に、当該データを主記憶装置に書き込む方式である。
 図7に示すように、プロセッサAが、主記憶装置に格納されているデータ「aaaaaa」を共有するためにメモリコントローラに対してRTSを送信すると(ステップS11)、メモリコントローラは、主記憶装置に対しRead要求を行い(ステップS12)、データ「aaaaaa」を取得する(ステップS13)。そして、メモリコントローラは、取得したデータ「aaaaaa」をプロセッサAに送信し(ステップS14)、当該データを取得したプロセッサAは、自己のキャッシュメモリのディレクトリ情報を「S」に更新する。なお、ライトバック方式を採用するマルチプロセッサシステムにおいて、主記憶装置のディレクトリ情報の書き換えはこの時点では発生しないため、主記憶装置のデータ「aaaaaa」はI状態のままである。
 また、この際、メモリコントローラは、ディレクトリ・キャッシュのディレクトリ情報に、データ「aaaaaa」の状態及びこのデータを保持するプロセッサの情報として「S:Sharer=A」を記録するとともに、アドレス情報として「X番地」を記録する。そして、メモリコントローラは、ディレクトリ・キャッシュ上のディレクトリ情報「S:Sharer=A」と主記憶装置上のディレクトリ情報「I:undefined」とが異なるため、このデータ「aaaaaa」に対応するエントリの状態(ステート)を「D」とする。
 続いて、キャッシュメモリに収容しきれない、あるいは不要となった等の理由でキャッシュラインを追い出す場合、プロセッサAは、メモリコントローラに対してEviction通知を送信する(ステップS15)。このEviction通知は、キャッシュメモリ内のデータを削除する際に送信される信号である。そして、Eviction通知を受け取ったメモリコントローラは、ディレクトリ・キャッシュにおけるデータ「aaaaaa」に対応するエントリを無効化(N状態に遷移)する。
 このとき、当該エントリの状態が「D」である場合、主記憶装置上のディレクトリ情報を書き戻してディレクトリ・キャッシュ上のディレクトリ情報と一致させなければならないため、メモリコントローラは、主記憶装置へのアクセス(Read-Modify-Write)を行う(ステップS16)。ここで、キャッシュメモリ上のキャッシュコピーが修正されておらず、かつ、主記憶装置に格納されたデータ「aaaaaa」のディレクトリ情報が元々I状態である場合、Eviction通知の処理の前後において主記憶装置の内容(データおよびディレクトリ情報)に変化はない。つまり、この場合における主記憶装置へのアクセスは本来不要なアクセスである。
 しかし、従来のマルチプロセッサシステムにおいて、メモリコントローラは、ディレクトリ・キャッシュ上のディレクトリ情報のみでは主記憶装置内のディレクトリ情報の内容を判断できないため、本来不要であるにもかかわらずメモリアクセスを行ってしまう。
 この発明は、上述した従来技術による問題点を解消するためになされたものであり、主記憶装置への不要なアクセスを削減し、メモリ帯域の圧迫を防止することのできる情報処理装置及びメモリ制御装置を提供することを目的とする。
 上述した課題を解決し、目的を達成するため、本願に開示するマルチプロセッサシステムは、一つの態様として、データを格納するとともに、当該データの状態をディレクトリ情報として管理する主記憶装置と、前記主記憶装置に格納されたデータのコピーを一時的に保持する複数のキャッシュメモリと、前記キャッシュメモリに保持されたデータを用いて処理を行う複数のプロセッサと、前記主記憶装置に格納されたデータのディレクトリ情報を前記主記憶装置とは別に管理するとともに、自己が管理するディレクトリ情報と前記主記憶装置が管理するディレクトリ情報との整合状態を示す情報を管理するディレクトリ・キャッシュと、前記ディレクトリ・キャッシュで管理される情報に基づき、前記キャッシュメモリと前記主記憶装置との間のデータ転送を制御するメモリコントローラと、を備え、前記メモリコントローラは、前記主記憶装置に格納されたデータのコピーを保持するキャッシュメモリが1つであるときに、当該キャッシュメモリに保持されたデータを削除した旨の通知を前記プロセッサから受けた場合において、前記整合状態が、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ・情報とが異なる状態であると判定した場合は、前記ディレクトリ・キャッシュ上のディレクトリ情報を更新するとともに前記主記憶装置へアクセスして前記主記憶装置上のディレクトリ情報の書き戻しを行う一方、当該データが前記プロセッサにより修正されておらず、かつ、前記整合状態が、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ情報とが異なり、前記主記憶装置上のディレクトリ情報が、前記データのコピーがいずれの前記プロセッサにも保持されていないことを示している状態であると判定した場合は、前記主記憶装置へのアクセスを行わずに前記ディレクトリ・キャッシュ上のディレクトリ情報を更新する。
 本願の開示する情報処理装置及びメモリ制御装置の一つの態様によれば、従来のマルチプロセッサシステムにおいて発生していた主記憶装置への不要なアクセスが削減されるため、メモリ帯域の圧迫を防止できるという効果を奏する。
図1は、本実施例にかかるマルチプロセッサシステムの構成の一例を示す図である。 図2は、メモリ上のキャッシュライン及び同キャッシュラインに含まれるディレクトリ情報のbit構成例を示す図である。 図3は、ディレクトリ・キャッシュのエントリのbit構成例を示す図である。 図4は、ディレクトリ・キャッシュのエントリの状態遷移の一例を説明するための図である。 図5は、本実施例にかかるマルチプロセッサシステムのメモリアクセス制御方法の一例を説明するための図である。 図6は、従来におけるディレクトリ・キャッシュのエントリの状態遷移の一例を説明するための図である。 図7は、従来のマルチプロセッサシステムにおけるメモリアクセス制御方法を説明するための図である。
符号の説明
  S  マルチプロセッサシステム
  1  システムボード
 10  メモリ(主記憶装置)
 11  キャッシュメモリ
 12  プロセッサ
 13  ディレクトリ・キャッシュ
 14  メモリコントローラ
 15  ノード内スイッチ
 16  I/O装置
 17  ノード間スイッチ
100  状態管理部
 以下に添付図面を参照して、本願の開示する情報処理装置及びメモリ制御装置の実施例を図面に基づいて詳細に説明する。
 まず、本実施例にかかるマルチプロセッサシステムの構成について図面を用いて説明する。図1は、本実施例にかかるマルチプロセッサシステムの構成の一例を示す図である。なお、本実施例にかかるマルチプロセッサシステムは、ccNUMA(Cache Coherent Non-Uniform Memory Access)方式を採用するマルチプロセッサシステムとするが、必ずしもこの方式を採用する必要はなく、1つのシステムボードで構成されていてもよい。ccNUMA方式とは、それぞれプロセッサを有する複数のシステムボードを相互に接続することにより、プロセッサが他のシステムボードのローカルメモリにアクセスするため、各プロセッサからのメモリアクセス時間が均一でないが、キャッシュ・コヒーレンスを維持することができる方式である。
 図1に示すように、本実施例にかかるマルチプロセッサシステムSは、2つのシステムボード1a,1bを有している。システムボード1aは、メモリ10aと、プロセッサ12a~12dと、ディレクトリ・キャッシュ13aと、メモリコントローラ14aと、ノード内スイッチ15aとを有する。また、システムボード1bは、メモリ10bと、プロセッサ12e~12hと、ディレクトリ・キャッシュ13bと、メモリコントローラ14bと、ノード内スイッチ15bとを有する。
 メモリ10は、主記憶装置に相当するものであり、種々のデータを格納するとともに、当該データの状態をディレクトリ情報として管理する。ここで、ディレクトリ情報について説明する。図2は、メモリ上のキャッシュライン及び同キャッシュラインに含まれるディレクトリ情報のbit構成例を示す図である。
 図2に示すように、メモリ10上にある1つのキャッシュラインは、128byteのPayloadと、32bitのDIR(ディレクトリ情報)と、96bitのECC(Error Correcting Code)とを含む。Payloadは、ディレクトリ情報やECC等の付加的な情報を除いたデータ本体を示す。ECCは、データのエラーを検出して自動修正を行う。
 また、ディレクトリ情報は、32bitのうち、2bitが当該データ(Payload)の状態を表す情報として使用され、20bitが所有者/共有者を表す情報として使用され、残りの10bitは使用されない。
 各データの状態は、E(Exclusive:排他)、S(Share:共有)、I(Invalidate:無効)の3つの状態により表される。Eとは、当該データがいずれか1つのキャッシュメモリ11に保持されており、当該キャッシュメモリ11が保持するキャッシュコピーと当該データとが一致するかどうか分からない(キャッシュコピーがメモリ上のデータから変更されるかもしれない)状態を示す。Sとは、当該データを保持するキャッシュメモリ11が複数存在し、各キャッシュメモリ11が保持するキャッシュコピーと当該データとが一致する状態を示す。Iとは、当該データを保持するキャッシュメモリ11が存在しない状態を示す。
 また、所有者/共有者を表す情報は、メモリ10に格納されたデータのコピーを保持するプロセッサ12を識別する情報であり、各プロセッサ12の識別番号等で表される。例えば、あるデータをプロセッサ12a及びプロセッサ12dが共有している場合、所有者/共有者を表す情報は、「Sharer=12a,12d」となる。
 プロセッサ12a~12hは、それぞれキャッシュメモリ11a~11hを有する。キャッシュメモリ11は、メモリ10に格納されたデータのコピーを一時的に保持する。そして、プロセッサ12は、自己の有するキャッシュメモリ11に保持されたデータを用いて各種処理を行う。
 ここで、キャッシュメモリ11は、キャッシュコピーの状態を示すディレクトリ情報を有する。キャッシュコピーの状態は、上述したE・S・IにM(Modified:修正)を加えた4つの状態により表される。Mは、メモリ10に格納されたあるデータのコピーを自分だけが保持し、当該コピー(キャッシュコピー)がメモリ10上のデータから変更されている状態を示す。Eは、メモリ10に格納されたあるデータのコピーを自分だけが保持し、当該コピーとメモリ上のデータとが一致する状態を示す。Sは、メモリ10に格納されたあるデータのコピーを自分を含めた複数のプロセッサ12が保持し、各プロセッサ12が保持するキャッシュコピーとメモリ10上にあるデータとが一致する状態を示す。Iは、キャッシュコピーを保持していない状態を示す。
 このように、本実施例にかかるマルチプロセッサシステムSでは、MESIプロトコルによるメモリアクセス制御を行う。
 ディレクトリ・キャッシュ13は、メモリ10に格納されたデータのディレクトリ情報をメモリ10とは別に管理するとともに、自己が管理するディレクトリ情報とメモリ10が管理するディレクトリ情報との整合状態を示す情報を管理する。ここで、ディレクトリ・キャッシュ13のエントリのbit構成について説明する。図3は、ディレクトリ・キャッシュ13のエントリのbit構成例を示す図である。
 図3に示すように、ディレクトリ・キャッシュ13のエントリは、アドレス情報(アドレス:23bit)と、自己が管理するディレクトリ情報とメモリ10が管理するディレクトリ情報との整合状態を示す情報(ステート:2bit)と、ディレクトリ情報(22bit)とを含む。アドレス情報とは、当該エントリにより管理されるデータがメモリ10上のどの位置に格納されているかを示す情報である。また、ディレクトリ・キャッシュ13が管理するディレクトリ情報は、メモリ10が管理するディレクトリ情報と同様、対応するデータの状態を表す情報(E/S/I)と、所有者/共有者を表す情報とを含む。
 自己が管理するディレクトリ情報とメモリ10が管理するディレクトリ情報との整合状態を示す情報(以下、「ステート」とする。)は、N(Null)、C(Clean)、D(Dirty)及びDI(Dirty formerly Invalid)の4つで示される。
 具体的には、Nは、ディレクトリ・キャッシュ13上に有効な情報がないことを示し、この状態で定義されているエントリにはディレクトリ情報を書き込むことができる。Cは、ディレクトリ・キャッシュ13上のディレクトリ情報が主記憶装置上のディレクトリ情報と同じであることを示し、この状態で定義されているエントリは、主記憶装置のディレクトリ情報を書き換えずに破棄できる。Dは、ディレクトリ・キャッシュ13上のディレクトリ情報が主記憶装置上のディレクトリ情報と異なることを示しており、この状態のエントリを破棄する場合は、主記憶装置のディレクトリ情報をディレクトリ・キャッシュの情報に書き換えなくてはならない。
 また、DIは、ディレクトリ・キャッシュ13上のディレクトリ情報とメモリ10上のディレクトリ情報とが異なり、かつ、メモリ10上のディレクトリ情報がIであることを識別するステートである。
 このように、本実施例にかかるマルチプロセッサシステムSでは、従来、N・C・Dの3つで表されていたステートに新たにDIを加えることにより、従来のマルチプロセッサシステムにおいて発生していた不要なメモリアクセスを削減する。
 なお、本実施例においては、1つのメモリコントローラが扱うメモリを最大1TB(すなわち、アドレスは[39:0]の40bitで表せる)とする。また、ディレクトリ・キャッシュ13のキャッシュラインのサイズはメモリ10のキャッシュラインと同様である。また、ディレクトリ・キャッシュ13はセット・アソシアティブ方式を採用しており、アドレスの[16:7]をディレクトリ・キャッシュ13の索引情報であるindexとして使用する。なお、本実施例に示すディレクトリ・キャッシュ13の構成はあくまで一例であり、この構成に限定するものではない。
 また、メモリコントローラ14は、キャッシュメモリ11とメモリ10との間のデータ転送を制御するものであり、状態管理部100と、データ転送部110とを有する。状態管理部100は、プロセッサ12から取得する各種要求に基づいて、ディレクトリ・キャッシュ13上のディレクトリ情報を更新する。データ転送部110は、ディレクトリ・キャッシュ13で管理される情報(アドレス情報、ステート、ディレクトリ情報)に基づき、キャッシュメモリ11とメモリ10との間のデータ転送を行う。
 また、ノード内スイッチ15は、メモリコントローラ14の指示に基づき、メモリ10とプロセッサ12との間でデータや要求の転送を行うデータ転送装置の一種である。さらに、本実施例において、システムボード1a,1bは、ノード間スイッチ17により相互に接続される。これにより、各プロセッサ12は、他のシステムボード1の有するメモリ10にアクセスすることが可能となる。また、各システムボード1a,1bには、磁気ディスク装置(HDD)、ネットワークカード、マウスやキーボードなどのI/O装置16a,16bが接続される。
 次に、本実施例にかかるマルチプロセッサシステムSにおける、ディレクトリ・キャッシュ13のエントリの状態遷移について図面を用いて説明する。図4は、ディレクトリ・キャッシュ13のエントリの状態遷移の一例を説明するための図である。なお、ディレクトリ・キャッシュ13のエントリの状態の更新は、メモリコントローラ14が備える状態管理部100により行われる。
 本実施例にかかるマルチプロセッサシステムSは、従来のマルチプロセッサシステムにおける状態遷移(ステップS21~S26の処理に伴う状態遷移)に加え、ステップS27~S30の処理に伴う状態遷移を有する。具体的には、図4に示すように、エントリの状態が「N」のときに、プロセッサ12からRTS又はRTOを受けた場合であって、メモリ10上のディレクトリ情報がIでない場合、状態管理部100は、エントリの状態を「D」に変更する(ステップS21)。また、エントリの状態が「D」のときに、当該エントリに対応するキャッシュラインのEviction(削除)通知をプロセッサ12から受けた場合、あるいはディレクトリ・キャッシュ13からエントリが追い出される場合、状態管理部100は、当該エントリの状態を「N」に変更する(ステップS22)。
 また、エントリの状態が「D」のときに、いずれかのプロセッサ12がM状態で保持するキャッシュラインに対するRTSを受けた場合、状態管理部100は、当該エントリの状態を「C」に変更する(ステップS23)。また、エントリの状態が「C」のときに、プロセッサ12からRTOを受けた場合、あるいはM状態で保持されていないキャッシュラインに対するRTSを受けた場合、状態管理部100は、当該エントリの状態を「D」に変更する(ステップS24)。
 また、エントリの状態が「C」のときに、プロセッサ12からキャッシュラインのEviction通知を受けたとき、あるいはディレクトリ・キャッシュ13からエントリが追い出されるとき、状態管理部100は、当該エントリの状態を「N」に変更する(ステップS25、S26)。
 一方、エントリの状態が「N」のときに、プロセッサ12からRTS又はRTOを受けた場合であって、メモリ10上のディレクトリ情報がIである場合、状態管理部100は、エントリの状態を「DI」に変更する(ステップS27)。また、エントリの状態が「DI」のときに、当該エントリに対応するキャッシュラインのEviction通知をプロセッサ12から受けた場合、あるいはディレクトリ・キャッシュ13からエントリが追い出される場合、状態管理部100は、当該エントリの状態を「N」に変更する(ステップS28、S29)。なお、M状態にあるキャッシュラインのEviction通知を受けた場合、データ転送部110は、メモリ10にアクセスしてメモリ10上のデータを書き戻す。
 また、エントリの状態が「DI」のときに、いずれかのプロセッサ12がM状態で保持しているキャッシュラインに対するRTSを受けた場合、状態管理部100は、当該エントリの状態を「C」に変更する(ステップS30)。
 このように、本実施例にかかるマルチプロセッサシステムSでは、ディレクトリ・キャッシュ13のエントリの状態として新たに「DI」を設けることにより、メモリ10上のディレクトリ情報が「I」であるか否かを識別することが可能となる。
 次に、本実施例にかかるマルチプロセッサシステムSにおけるメモリアクセス制御方法について説明する。図5は、本実施例にかかるマルチプロセッサシステムにおけるメモリアクセス制御方法を説明するための図である。なお、初期状態において、主記憶装置のX番地に格納されているデータ(Payload)「aaaaaa」は、どのキャッシュメモリにも格納されておらず、主記憶装置内にI状態で保持されているものとする。
 図5に示すように、プロセッサ12aが、メモリ10aに格納されているデータ「aaaaaa」を共有するためにメモリコントローラ14aに対してRTSを送信すると(ステップS31)、データ転送部110aは、メモリ10aに対しRead要求を行い(ステップS32)、データ「aaaaaa」を取得する(ステップS33)。そして、データ転送部110aは、取得したデータ「aaaaaa」をプロセッサ12aに送信し(ステップS34)、当該データを取得したプロセッサ12aは、自己のキャッシュメモリ11aのディレクトリ情報を「S」に更新する。なお、メモリ10上のディレクトリ情報の書き換えはこの時点では発生しないため、主記憶装置のデータ「aaaaaa」はI状態のままである。
 また、この際、状態管理部100aは、ディレクトリ・キャッシュ13aのディレクトリ情報に、データ「aaaaaa」の状態及びこのデータを保持するプロセッサ12の情報として「S:Sharer=12a」を記録するとともに、アドレス情報として「X番地」を記録する。
 そして、状態管理部100aは、ディレクトリ・キャッシュ13a上のディレクトリ情報とメモリ10上のディレクトリ情報とが異なり、かつ、メモリ10上のディレクトリ情報が「I:undefined」であるため、このデータ「aaaaaa」に対応するエントリの状態(ステート)を「DI」とする。
 より具体的に説明すると、状態管理部100aは、ステップS32においてメモリ10aにアクセスした際に、メモリ10a上のディレクトリ情報を参照し、当該ディレクトリ情報が「I」であるか否かを判定する。そして、メモリ10a上のディレクトリ情報が「I」であると判定した場合であって、ディレクトリ・キャッシュ13a上のディレクトリ情報が元々「N」であるとき、状態管理部100aは、データ「aaaaaa」に対応するエントリのステートを「DI」とする。なお、メモリ10a上のディレクトリ情報が「I」でないときであって、ディレクトリ・キャッシュ13a上のディレクトリ情報が元々「N」であるとき、状態管理部100aは、当該ステートを「D」とする。
 続いて、キャッシュメモリ11aに収容しきれない、あるいは不要となった等の理由でキャッシュラインを追い出す場合、プロセッサ12aは、メモリコントローラ14aに対してEviction通知を送信する(ステップS35)。
 ここで、Eviction通知を受け取った際、状態管理部100aは、キャッシュコピーが修正されているか否か、およびエントリの状態が「DI」であるか否かを判定する。そして、キャッシュコピーが修正されておらず、しかも、エントリの状態が「DI」であった場合、状態管理部100aは、メモリ10へのアクセス(Read-Modify-Write)を行うことなく、ディレクトリ・キャッシュ13a上のディレクトリ情報を無効化(N状態に遷移)する。なお、Eviction通知には、キャッシュコピーが修正されているか否かの情報が含まれており、メモリコントローラは受け取った当該Eviction通知の内容を参照することにより、メモリアクセスの要不要を判断できる。
 このように、本実施例にかかるマルチプロセッサシステムSは、ディレクトリ・キャッシュ13のエントリの状態として、新たに「DI」を設けることにより、従来のマルチプロセッサシステムSにおいて発生していた不要なメモリアクセスを削減することができる。
 ここで、本実施例にかかるマルチプロセッサシステムSのメモリアクセス制御方法により、メモリ10へのアクセスがどの程度削減できるかについて、妥当な仮定を設けて説明する。まず、以下では、ディレクトリ・キャッシュ13には十分な容量があるものとし、I状態以外のキャッシュラインへの要求はディレクトリ・キャッシュ13に全てHitすると仮定する。
 一般的な業務アプリケーション(ソフトウェア)においては、典型的にはメモリ読み出し命令2個に対しメモリ書き込み命令1個の割合でメモリアクセス命令が実行される。これは、A←f(A,B)という形の演算が継続的におこなわれているものと考えられる。つまり、メモリ10上のA領域とB領域を読みだし、演算結果をメモリ10上のA領域に書き戻す、という操作が行われる。これをメモリ10側から見ると、A領域及びB領域のそれぞれに対するRTSが発生したあと、A領域に対しRTOが発生する(ただしこのRTOの処理はメモリアクセスを伴わず、ディレクトリ情報をS→Eに変更するのみ)という動作になる。つまり、メモリRead操作によりプロセッサ12のキャッシュメモリ11に保持されたキャッシュコピーのうち半分(A領域)は、内容が更新されるためメモリ10への書き戻しが必要となり、残り半分(B領域)は内容が更新されない(書き戻しなしにキャッシュメモリ11から追い出すことができる)、ということになる。
 ここまではCPUが命令を実行するにあたって、あたかも、必要な全ての領域をそのときにメモリ10から読みこむように考えた。しかし、実際は、キャッシュメモリ11にコピーされプロセッサ12で使用されたキャッシュラインは、キャッシュメモリ11から追い出される前に、再度他の用途で使われることが多い。上記のA←f(A,B)でBとして読みだされたデータが、まだプロセッサ12のキャッシュメモリ11に保持されているときに、B←f’(B,C)という形で処理され、内容を書き換えられることが多々ある。
 このことを考慮に入れ、プロセッサ12がメモリ10から読み出したキャッシュラインのうち、75%がキャッシュメモリ11から追い出される前に修正されるとし、残りの25%は内容が修正されないまま追い出される、と仮定する。すると、プロセッサ12からメモリコントローラ14に発行される要求の比率は、メモリアクセスを伴うRead要求(RTSまたはRTO):Writeback:Eviction=4:3:1となる。
 また、プロセッサ12からの各要求に対し、メモリコントローラ14側で発生するメモリ10へのアクセスは、メモリアクセスを伴うRead要求1回に対してメモリ10のRead1回、Writeback1回に対してメモリ10のWrite1回となる。また、Evictionに対しては、本実施例にかかるメモリアクセス制御方法を適用しない場合は、メモリ10のRead1回+メモリ10のWrite1回であるが、本実施例にかかるメモリアクセス制御方法を適用する場合は、メモリ10へのアクセスはない。
 すなわち、本実施例にかかるメモリアクセス制御方法の適用がないときは、(Read要求処理分)4×1+(Writeback分)3×1+(Eviction分)1×2=9であり、9のメモリアクセスが必要である。ところが、本実施例にかかるメモリアクセス制御方法を適用すると、(Read要求処理分)4×1+(Writeback分)3×1=7であり、7のメモリアクセスで済む。したがって、本実施例にかかるマルチプロセッサシステムSのメモリアクセス制御方法によれば、従来のメモリアクセス制御方法と比較して約22%の使用メモリ帯域削減の効果を奏する。
 上述してきたように、本実施例では、ディレクトリ・キャッシュ13上のディレクトリ情報とメモリ10上のディレクトリ情報との整合状態を示す情報の一つとして、DI状態を備えることにより、従来において発生していた不要なメモリアクセスを低減できるため、メモリ帯域の圧迫を防止できる。
 以上、本発明の実施の形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
 例えば、本実施例では、プロセッサ12からメモリコントローラ14へ送信される要求をRTSとしたが、これに限らず、例えばRTOであってもよい。また、一般的なRead要求としてRTSとRTOが挙げられるためここではそれらについて述べたが、対象をそれらのみに限定するものでもない。他の性質のRead要求や、Readを伴わないBlockStore要求に対しても、メモリ10上のディレクトリ情報がIであり、ディレクトリ・キャッシュ13上のディレクトリ情報がそれと異なるとき、DI状態を活用することができる。
 また、本実施例では、プロセッサ12がリクエスト元であるとして話を進めたが、リクエスト元はプロセッサ12に限定せずI/O装置16であってもよい。メモリ10に対するRead/Write要求を発行するagentという観点でプロセッサ12とI/O装置16は同種のものとみなせる。
 また、本実施例では、ディレクトリ情報がメモリ10内に存在する方式を適用したが、ディレクトリ情報がメモリ10内ではない別の場所に設けられていてもよい。

Claims (8)

  1.  データを格納するとともに、当該データの状態をディレクトリ情報として管理する主記憶装置と、
     前記主記憶装置に格納されたデータのコピーを一時的に保持する複数のキャッシュメモリと、
     前記キャッシュメモリに保持されたデータを用いて処理を行う複数のプロセッサと、
     前記主記憶装置に格納されたデータのディレクトリ情報を前記主記憶装置とは別に管理するとともに、自己が管理するディレクトリ情報と前記主記憶装置が管理するディレクトリ情報との整合状態を示す情報を管理するディレクトリ・キャッシュと、
     前記ディレクトリ・キャッシュで管理される情報に基づき、前記キャッシュメモリと前記主記憶装置との間のデータ転送を制御するメモリ制御装置と、を備え、
     前記メモリ制御装置は、前記主記憶装置に格納されたデータのコピーを保持するキャッシュメモリが1つであるときに、当該キャッシュメモリに保持されたデータを削除した旨の通知を前記プロセッサから受けた場合において、前記整合状態が、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ・情報とが異なる状態であると判定した場合は、前記ディレクトリ・キャッシュ上のディレクトリ情報を更新するとともに前記主記憶装置へアクセスして前記主記憶装置上のディレクトリ情報の書き戻しを行う一方、当該データが前記プロセッサにより修正されておらず、かつ、前記整合状態が、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ情報とが異なり、前記主記憶装置上のディレクトリ情報が、前記データのコピーがいずれの前記プロセッサにも保持されていないことを示している状態であると判定した場合は、前記主記憶装置へのアクセスを行わずに前記ディレクトリ・キャッシュ上のディレクトリ情報を更新することを特徴とする情報処理装置。
  2.  前記ディレクトリ・キャッシュは、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ情報との整合状態を示す情報の一つとして、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ情報とが異なり、かつ、前記主記憶装置上のディレクトリ情報が、前記データのコピーがいずれの前記キャッシュメモリにも保持されていないことを示している状態を識別するDI状態を備え、
     前記メモリ制御装置は、前記キャッシュメモリに保持されたデータを削除した旨の通知を前記プロセッサから受けた場合、当該データが前記プロセッサにより修正されておらず、かつ、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ情報との整合状態がDI状態であると判定すると、前記主記憶装置へのアクセスを行わずに前記ディレクトリ・キャッシュ上のディレクトリ情報を更新することを特徴とする請求項1に記載の情報処理装置。
  3.  前記メモリ制御装置は、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ情報との整合状態が、前記ディレクトリ・キャッシュ上に有効なディレクトリ情報が存在しないことを示すN状態であるときに、前記プロセッサから所定の要求を受けた場合において、前記主記憶装置上のディレクトリ情報が、前記データのコピーがいずれの前記プロセッサにも保持されていないことを示している状態であると判定した場合は、前記整合状態を前記N状態から前記DI状態に変更することを特徴とする請求項2に記載の情報処理装置。
  4.  前記メモリ制御装置は、MESI(Modify/Exclusive/Share/Invalid)プロトコルによるメモリアクセス制御を行うことを特徴とする請求項1~3の何れか1項に記載の情報処理装置。
  5.  データを格納するとともに、当該データの状態をディレクトリ情報として管理する主記憶装置と、前記主記憶装置に格納されたデータのコピーを一時的に保持する複数のキャッシュメモリと、前記キャッシュメモリに保持されたデータを用いて処理を行う複数のプロセッサと、前記主記憶装置に格納されたデータのディレクトリ情報を前記主記憶装置とは別に管理するとともに、自己が管理するディレクトリ情報と前記主記憶装置が管理するディレクトリ情報との整合状態を示す情報を管理するディレクトリ・キャッシュとを有する情報処理装置に設けられ、前記ディレクトリ・キャッシュで管理される情報に基づき、前記キャッシュメモリと前記主記憶装置との間のデータ転送を制御するメモリ制御装置であって、
     前記主記憶装置に格納されたデータのコピーを保持するキャッシュメモリが1つであるときに、当該キャッシュメモリに保持されたデータを削除した旨の通知を前記プロセッサから受けた場合において、前記整合状態が、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ・情報とが異なる状態であると判定した場合は、前記ディレクトリ・キャッシュ上のディレクトリ情報を更新するとともに前記主記憶装置へアクセスして前記主記憶装置上のディレクトリ情報の書き戻しを行う一方、当該データが前記プロセッサにより修正されておらず、かつ、前記整合状態が、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ情報とが異なり、前記主記憶装置上のディレクトリ情報が、前記データのコピーがいずれの前記プロセッサにも保持されていないことを示している状態であると判定した場合は、前記主記憶装置へのアクセスを行わずに前記ディレクトリ・キャッシュ上のディレクトリ情報を更新することを特徴とするメモリ制御装置。
  6.  前記ディレクトリ・キャッシュは、自己が管理するディレクトリ情報と前記主記憶装置が管理するディレクトリ情報との整合状態を示す情報を管理し、当該整合状態を示す情報の一つとして、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ情報とが異なり、かつ、前記主記憶装置上のディレクトリ情報が、前記データのコピーがいずれの前記キャッシュメモリにも保持されていないことを示している状態を識別するDI状態を備え、
     前記キャッシュメモリに保持されたデータを削除した旨の通知を前記プロセッサから受けた場合、当該データが前記プロセッサにより修正されておらず、かつ、前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ情報との整合状態がDI状態であると判定すると、前記主記憶装置へのアクセスを行わずに前記ディレクトリ・キャッシュ上のディレクトリ情報を更新することを特徴とする請求項5に記載のメモリ制御装置。
  7.  前記ディレクトリ・キャッシュ上のディレクトリ情報と前記主記憶装置上のディレクトリ情報との整合状態が、前記ディレクトリ・キャッシュ上に有効なディレクトリ情報が存在しないことを示すN状態であるときに、前記プロセッサから所定の要求を受けた場合において、前記主記憶装置上のディレクトリ情報が、前記データのコピーがいずれの前記プロセッサにも保持されていないことを示している状態であると判定した場合は、前記整合状態を前記N状態から前記DI状態に変更することを特徴とする請求項6に記載のメモリ制御装置。
  8.  MESI(Modify/Exclusive/Share/Invalid)プロトコルによるメモリアクセス制御を行うことを特徴とする請求項5~7のいずれか1項に記載のメモリ制御装置。
PCT/JP2008/070437 2008-11-10 2008-11-10 情報処理装置及びメモリ制御装置 WO2010052799A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2010536633A JP5136652B2 (ja) 2008-11-10 2008-11-10 情報処理装置及びメモリ制御装置
EP08877994.7A EP2354953B1 (en) 2008-11-10 2008-11-10 Information processing device and memory control device
PCT/JP2008/070437 WO2010052799A1 (ja) 2008-11-10 2008-11-10 情報処理装置及びメモリ制御装置
US13/101,362 US8725954B2 (en) 2008-11-10 2011-05-05 Information processing apparatus and memory control apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/070437 WO2010052799A1 (ja) 2008-11-10 2008-11-10 情報処理装置及びメモリ制御装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/101,362 Continuation US8725954B2 (en) 2008-11-10 2011-05-05 Information processing apparatus and memory control apparatus

Publications (1)

Publication Number Publication Date
WO2010052799A1 true WO2010052799A1 (ja) 2010-05-14

Family

ID=42152614

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2008/070437 WO2010052799A1 (ja) 2008-11-10 2008-11-10 情報処理装置及びメモリ制御装置

Country Status (4)

Country Link
US (1) US8725954B2 (ja)
EP (1) EP2354953B1 (ja)
JP (1) JP5136652B2 (ja)
WO (1) WO2010052799A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012039008A1 (ja) * 2010-09-23 2012-03-29 富士通株式会社 情報処理装置、メモリ制御方法及びメモリ制御装置
WO2012124034A1 (ja) * 2011-03-11 2012-09-20 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2021507371A (ja) * 2017-12-15 2021-02-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated ホームエージェントベースのキャッシュ転送アクセラレーションスキーム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210191865A1 (en) * 2019-12-20 2021-06-24 Advanced Micro Devices, Inc. Zero value memory compression

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05100952A (ja) 1991-10-07 1993-04-23 Fuji Xerox Co Ltd データ処理装置
JPH11154115A (ja) * 1997-08-25 1999-06-08 Hewlett Packard Co <Hp> 分散メモリ・マルチプロセッサ・システム
JP2000067024A (ja) * 1998-05-08 2000-03-03 Fujitsu Ltd 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
JP2003186742A (ja) * 2001-10-17 2003-07-04 Sun Microsyst Inc ディレクトリ・キャッシュの更新
JP2004054931A (ja) * 2002-07-23 2004-02-19 Hewlett-Packard Development Co Lp 分散メモリマルチプロセッサシステムにおけるメモリ移行のためのシステムおよび方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1055314A (ja) * 1996-08-12 1998-02-24 Hitachi Ltd キャッシュメモリ制御装置
US7099913B1 (en) * 2000-08-31 2006-08-29 Hewlett-Packard Development Company, L.P. Speculative directory writes in a directory based cache coherent nonuniform memory access protocol
US6868485B1 (en) 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US7398359B1 (en) * 2003-04-30 2008-07-08 Silicon Graphics, Inc. System and method for performing memory operations in a computing system
US7373466B1 (en) * 2004-04-07 2008-05-13 Advanced Micro Devices, Inc. Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US8244983B2 (en) * 2006-10-30 2012-08-14 Hewlett-Packard Development Company, L.P. Memory control systems with directory caches and methods for operation thereof
BRPI0806865A2 (pt) * 2007-01-31 2014-04-29 Qualcomm Inc Equipamento e métodos para reduzir eliminações em uma hierarquia de cache multinível
US8996812B2 (en) * 2009-06-19 2015-03-31 International Business Machines Corporation Write-back coherency data cache for resolving read/write conflicts

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05100952A (ja) 1991-10-07 1993-04-23 Fuji Xerox Co Ltd データ処理装置
JPH11154115A (ja) * 1997-08-25 1999-06-08 Hewlett Packard Co <Hp> 分散メモリ・マルチプロセッサ・システム
JP2000067024A (ja) * 1998-05-08 2000-03-03 Fujitsu Ltd 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
JP2003186742A (ja) * 2001-10-17 2003-07-04 Sun Microsyst Inc ディレクトリ・キャッシュの更新
JP2004054931A (ja) * 2002-07-23 2004-02-19 Hewlett-Packard Development Co Lp 分散メモリマルチプロセッサシステムにおけるメモリ移行のためのシステムおよび方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MANUEL E. ACACIO ET AL.: "Reducing the Latency of L2 Misses in Shared-Memory Multiprocessors through On-Chip Directory Integration", PROCEEDINGS OF THE 10TH EUROMICRO WORKSHOP ON PARALLEL, DISTRIBUTED AND NETWORK-BASED PROCESSING(EUROMICRO-PDP'02), 9 January 2002 (2002-01-09), pages 368 - 375, XP010587945 *
See also references of EP2354953A4

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012039008A1 (ja) * 2010-09-23 2012-03-29 富士通株式会社 情報処理装置、メモリ制御方法及びメモリ制御装置
WO2012124034A1 (ja) * 2011-03-11 2012-09-20 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN103403690A (zh) * 2011-03-11 2013-11-20 富士通株式会社 运算处理装置以及运算处理装置的控制方法
JP5574039B2 (ja) * 2011-03-11 2014-08-20 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9430397B2 (en) 2011-03-11 2016-08-30 Fujitsu Limited Processor and control method thereof
JP2021507371A (ja) * 2017-12-15 2021-02-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated ホームエージェントベースのキャッシュ転送アクセラレーションスキーム

Also Published As

Publication number Publication date
US8725954B2 (en) 2014-05-13
US20110213933A1 (en) 2011-09-01
EP2354953B1 (en) 2014-03-26
EP2354953A1 (en) 2011-08-10
EP2354953A4 (en) 2012-07-04
JP5136652B2 (ja) 2013-02-06
JPWO2010052799A1 (ja) 2012-03-29

Similar Documents

Publication Publication Date Title
US10346302B2 (en) Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
JP3431824B2 (ja) アクセス方法及び処理装置
KR101639672B1 (ko) 무한 트랜잭션 메모리 시스템 및 그 동작 방법
JP4050225B2 (ja) マルチプロセッサシステムにおける推測的な格納を容易にする方法および装置
JP4737691B2 (ja) 排他的所有権のスヌープフィルタ
US8996812B2 (en) Write-back coherency data cache for resolving read/write conflicts
JP4050226B2 (ja) マルチプロセッサシステムにおける推測的な格納を容易にするl2ディレクトリの利用
US8037252B2 (en) Method for reducing coherence enforcement by selective directory update on replacement of unmodified cache blocks in a directory-based coherent multiprocessor
US6353875B1 (en) Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions
US8131945B2 (en) Disowning cache entries on aging out of the entry
US9063887B2 (en) Restoring distributed shared memory data consistency within a recovery process from a cluster node failure
US20070005906A1 (en) Information processing apparatus and cache memory control method
US20050204088A1 (en) Data acquisition methods
JPH10333985A (ja) データ供給方法及びコンピュータ・システム
JPH02141845A (ja) マルチプロセッサシステムにおいて中央処理ユニットにより主メモリからデータブロックを読み取る方法
US7711899B2 (en) Information processing device and data control method in information processing device
JP4577729B2 (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
JP5136652B2 (ja) 情報処理装置及びメモリ制御装置
KR20070040340A (ko) 소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템
US8745340B2 (en) Reduction of communication and efficient failover processing in distributed shared memory-based application
US10775870B2 (en) System and method for maintaining cache coherency
US20050144397A1 (en) Method and apparatus for enabling volatile shared data across caches in a coherent memory multiprocessor system to reduce coherency traffic
US11360906B2 (en) Inter-device processing system with cache coherency
US7757046B2 (en) Method and apparatus for optimizing line writes in cache coherent systems
GB2446241A (en) Reuse of un-owned directory cache entries

Legal Events

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

Ref document number: 08877994

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2010536633

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2008877994

Country of ref document: EP