WO2012008008A1 - 情報処理システム - Google Patents

情報処理システム Download PDF

Info

Publication number
WO2012008008A1
WO2012008008A1 PCT/JP2010/061785 JP2010061785W WO2012008008A1 WO 2012008008 A1 WO2012008008 A1 WO 2012008008A1 JP 2010061785 W JP2010061785 W JP 2010061785W WO 2012008008 A1 WO2012008008 A1 WO 2012008008A1
Authority
WO
WIPO (PCT)
Prior art keywords
directory
node
processing unit
cpu
information
Prior art date
Application number
PCT/JP2010/061785
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 JP2012524351A priority Critical patent/JP5435132B2/ja
Priority to PCT/JP2010/061785 priority patent/WO2012008008A1/ja
Publication of WO2012008008A1 publication Critical patent/WO2012008008A1/ja
Priority to US13/738,433 priority patent/US20130132678A1/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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • 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
    • 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

Definitions

  • the present invention relates to an information processing system.
  • An information processing system in which multiple nodes are connected to each other is effective for speeding up parallel computing.
  • a parallel computer having a distributed shared memory can execute high-speed parallel computation.
  • Each node of the information processing system includes an arithmetic processing unit (hereinafter referred to as a CPU (Central Processing Unit)), a cache memory (Cache Memory), and the like.
  • the information processing system uses the cache memory of each node as a distributed shared memory.
  • Consistency control is control that maintains cache coherence.
  • Snoop Cache is effective for a mechanism for maintaining cache coherence.
  • the other node In the snoop cache, when the CPU of one node has written data held in its own cache memory, the other node receives the write through the shared bus and updates the data in the cache memory of the other node.
  • the directory system is used as a hardware mechanism for maintaining cache coherence. In the directory system, information indicating in which CPU the same data is cached is held in the cache, and the cache line is invalidated and updated.
  • FIG. 11 and 12 are configuration diagrams of a conventional directory.
  • FIG. 11 shows an entry format in which the format type 101 of the directory 100 is A-type (bit “1”).
  • the entry format of the directory 100 includes an entry format type column 101, a reserve bit column 102, a status (Status) column 103, a CPU-ID (1) column 104, and a CPU-ID ( 2) column 105.
  • the status column 103 indicates a data holding state of an exclusive state (Exclusive), an invalid state (Invalid), and one or two CPUs and a shared state (Shared).
  • the exclusive state indicates that the requester CPU is under exclusive control (for example, the state after update after reading).
  • the invalid state indicates that no CPU holds data.
  • the shared state indicates that a plurality of CPUs are sharing data.
  • the CPU-ID columns 104 and 105 store the requested CPU-ID (identifier: Identification).
  • FIG. 12 shows an entry format whose format type 106 is B-type (bit “1”).
  • the status column 107 indicates an exclusive state (Exclusive), an invalid state (Invalid), and a shared state (Shared) with a plurality of CPUs.
  • the board (node) ID bitmap field 108 stores the requested board (node) of the CPU (node) in the bitmap format.
  • the directory 100 is searched with the requested address, and the data holding state (Status) is determined. If the requested address data is held in a shared state (hereinafter referred to as S state) by searching the directory, a snoop is transmitted to the CPU holding the data, and the corresponding data is invalidated ( To I state). If the requested data is held in an exclusive state, a snoop is transmitted to the CPU holding the data, and the corresponding data is set to an invalid state (I: Invalid state).
  • the directory 100 is searched with the requested address, and the data holding state is determined.
  • a snoop for changing the data state (status) is transmitted to the CPU holding the data. If the corresponding data is held in a shared state (S state), a snoop is transmitted to the CPU holding the data, and the requester's CPU-ID is registered in the directory.
  • A-Type (Format type bit is “1”) is set in the directory format column of FIG.
  • the format type A-Type is an entry format for storing an identifier (ID) of the CPU. In the example of FIG. 11, up to two CPU-IDs can be stored.
  • B-Type (Format type bit is “0”) is set in the directory format column of FIG.
  • the format type B-Type is a type that holds the CPU-ID as a bitmap. In this example, up to 12 nodes or CPUs can be identified.
  • the amount of information that a directory can hold is physically limited.
  • S state shared state
  • the entry size of the directory mechanism is limited, so that detailed information that can identify the CPU of the snoop destination can be stored. Can not.
  • the number of target CPUs can be increased by changing the information to be held to hardware higher than the CPU. That is, the CPU is held only with an ID for each unit (for example, a board ID that is a system board unit). For example, when information is held in units of system boards, the CPU in the system board cannot be identified.
  • An object of the present invention is to provide an information processing system that reduces the number of snoop transmissions and reduces the amount of communication between CPUs even if the number of CPUs increases, minimizing an increase in directory capacity. .
  • the disclosed information processing system includes a plurality of nodes, each of the nodes including at least one arithmetic processing unit, and a cache memory for storing data used by the arithmetic processing unit,
  • a directory storing status information indicating whether or not the data stored in the cache memory is held in the cache memory of another node and information for identifying the other node
  • a node controller that communicates snoops to another node, the node controller including status information indicating whether the data stored in the cache memory is held in the cache memory of the other node and the other node
  • a first directory for storing information for identifying a node, and data stored in the cache memory
  • a second directory which stores information for identifying the shared node of the data is a shared state held in the cache memory of the other nodes.
  • FIG. 6 is a data request processing flowchart in the S state of the embodiment of FIGS. 1 to 5;
  • FIG. 7 is a data request processing flowchart in the S state of the comparative example with respect to FIG. 6.
  • FIG. 6 is a data request processing flowchart in the E state of the embodiment of FIGS. 1 to 5;
  • FIG. 9 is a data request processing flowchart in the E state of the comparative example with respect to FIG. 8.
  • It is a block diagram of the information processing system of 2nd Embodiment. It is explanatory drawing of the conventional directory. It is explanatory drawing of the directory in the conventional S state.
  • FIG. 1 is a block diagram of an information processing system according to an embodiment.
  • FIG. 2 is a block diagram of the CPU of FIG.
  • FIG. 3 is a block diagram of the node controller of FIG.
  • FIG. 1 shows an example of an information processing system in which a plurality of system boards are connected as an information processing system. In this example, one system board is managed as one node.
  • the information processing system has a large number (here, n> 3) of system boards 1-1 to 1-n.
  • Each of the system boards 1-1 to 1-n includes a plurality of (in this example, two) arithmetic processing units (hereinafter referred to as CPU: Central Processing Unit) 3A and 3B, and a memory 4A connected to each of the CPUs 3A and 3B. , 4B and a node controller 2 connected to each of the CPUs 3A, 3B.
  • the memories 4A and 4B constitute, for example, L2 and L3 cache memories.
  • the memories 4A and 4B for example, DIMM (Dual Inline Memory Module) can be used. However, it may be composed of another volatile memory or the like.
  • the CPU 3A includes two CPU cores (Core) 30A and 30B, two cache memories (L1 cache memory) 32A and 32B connected to the CPU cores 30A and 30B, a memory 4A and a CPU.
  • a memory controller 34 that connects the cores 30A and 30B and controls memory access is provided.
  • the CPU 3B in FIG. 1 has the same configuration.
  • the node controller 2 communicates between the system boards 1-1 to 1-N.
  • the node controller 2 of the first system board 1-1 is connected to the node controller 2 of the second system board 1-2 via the first communication path 14-1.
  • the node controller 2 of the second system board 1-2 is connected to the node controller 2 of the third system board via the second communication path 14-2.
  • the node controller 2 of the (n-1) th system board is connected to the node controller 2 of the (n-1) th system board 1-n via the (n-1) th communication path 14-m.
  • These communication paths 14-1 to 14-m constitute a common bus.
  • the communication paths 14-1 to 14-m may be formed by shared paths instead of the separated paths in FIG.
  • the system controller 10 is connected to each of the system boards 1-1 to 1-n via the management bus 12.
  • the system controller 10 performs state setting, state monitoring, and the like of circuits (CPU, memory, etc.) in each of the system boards 1-1 to 1-n.
  • a separate main memory may be provided and connected to each node.
  • the node controller 2 includes an external node interface circuit 20 that communicates with a node controller of another system board via a communication path 14-1, and a CPU interface circuit that communicates with a memory controller 34 of the CPU 3A (3B). 26, a directory 22, a second directory 24, and a processing unit 28.
  • the processing unit 28 is connected to the external node interface circuit 20, the CPU interface circuit 20, the directory 22, and the second directory 24.
  • the processing unit 28 searches the directory 22 and the second directory 24 in response to read / write requests from the CPU 3A (and 3B) and other nodes, and performs snoop transmission and the like.
  • the directory 22 is used by the node controller 2 to manage data.
  • the directory 22 stores management information indicating which node holds the same data as the data state in the address space of the cache memory 4A of the own node.
  • FIG. 4 is an explanatory diagram of the directory shown in FIGS.
  • the directory 22 has an entry for each memory address of the L2 and L3 cache memories of its own node.
  • the access unit of the CPU is 64 bits
  • the number of entries is the result of dividing the capacity of the L2 and L3 cache memories 4A and 4B of the own node by 64 bits.
  • the example of FIG. 4 shows an example in which entries of format type A and entries of format type B are mixed.
  • the reserved bit column 22-2 is a spare bit of 1 bit.
  • the status column 22-3 is composed of 2 bits.
  • the exclusive state (E state) is "10”
  • the invalid state (I state) is "00”
  • the shared state (S state) with one CPU is "01”
  • the two CPUs The sharing state is indicated by “11”.
  • the E state indicates that the requested CPU (referred to as a requester CPU) is under exclusive control.
  • the I state indicates that no CPU holds data.
  • the S state indicates that a plurality of CPUs share data.
  • the CPU-ID (1) column 22-4 and the CPU-ID (2) column 22-5 of format type A each store the CPU-ID of the CPU (requester) that issued the request.
  • the CPU-ID columns 22-4 and 22-5 are each composed of 6 bits.
  • the CPU-ID columns 22-4 and 22-5 store a 4-bit board (system board) ID and a 2-bit local ID (CPU-ID in the board). Therefore, in this example, it is possible to specify up to 16 nodes and up to 4 CPUs in the node.
  • the board ID bitmap field 22-7 is composed of 12 bits, and stores the board ID of the requested CPU (referred to as a requester) in a bitmap format. In this example, up to 12 nodes can be specified. However, the CPU in the node cannot be specified. That is, detailed information for each CPU cannot be stored.
  • FIG. 5 is an explanatory diagram of the second directory in FIG.
  • a second directory (hereinafter referred to as an extension directory) 24 is a directory used when detailed information cannot be stored in the directory 22.
  • the shared state when a certain number or more of CPUs holding data in the shared state (S state) occur (in this example, there are three or more CPUs), the shared state is different from the directory 22 of FIG.
  • This is a dedicated directory for storing detailed information for specifying a CPU holding data in (S state).
  • the extended directory 24 may be an n-way RAM (Random access memory) or a full-associative CAM.
  • the extended directory 24 has a valid bit field 24-1, a memory address field 24-2, a reserved bit field 24-3, and a CPU-ID bitmap field 24-4. One bit is assigned to the valid bit column 24-1.
  • the extended directory 24 is not provided for each memory address, but only stores detailed information of the CPU holding data in a shared state (S state). Therefore, a memory address 24-2 column is provided in the extended directory 24.
  • the memory address column 24-2 stores the upper 25 bits excluding the cache line and the index among the memory addresses of the shared data.
  • the reserved bit column 24-3 is a spare bit.
  • the CPU-ID bitmap field 24-4 is composed of 48 bits. Each bit in the bitmap field 24-4 identifies one CPU. In this example, 48 CPUs can be specified. In this example, the entry width of the extended directory 24 is 80 bits.
  • each entry in the directory 22 is 2 bytes, and thus the required memory capacity of the directory 22 is 32 GB.
  • the required memory capacity of the directory 22 is 32 GB.
  • the entry width of the directory 22 must be expanded to 6 bytes or more (more precisely, 6.5 bytes). Therefore, expanding the directory 22 to identify more CPUs requires at least 96 GB.
  • the extended directory 24 holds data when three or more CPUs share it. Therefore, the shared data in the directory 22 may be targeted. In the information processing system, the probability of being in a shared state is lower than the probability of being in an invalid state and an exclusive state. For this reason, the extended directory 24 may be any number from a few KBytes to a maximum of 1 MByte. That is, the performance equivalent to that of the 96 GB directory 22 can be provided by the directory 22 of 32 GB and the extended directory 24 of 1 MB maximum.
  • FIG. 6 is a data request processing flowchart in the S state of the embodiment.
  • FIG. 6 shows a directory search processing flow diagram of the node controller 2 when a data request (read request) is made in the S (shared) state from the CPU 3A (or 3B) in the configuration described with reference to FIGS.
  • the CPU 3A (or 3B) issues a read request in the S state to the node controller 2.
  • the processing unit 28 receives a read request via the CPU interface circuit 26.
  • the processing unit 28 searches the directory 22 of the node controller 2 based on the read address included in the read request.
  • the processing unit 28 refers to the status column 22-3 of the entry of the directory 22 by the read address, and identifies information in the status column 22-3. If the status column 22-3 is in an invalid state (I state), no CPU has the requested data. That is, no CPU is requesting the data of the read address. If the status is determined to be invalid, the processing unit 28 proceeds to step S16.
  • I state an invalid state
  • the processing unit 28 of the node controller 2 registers in the directory 22 the CPU-ID and status (S state) of the CPU that issued the request (herein called the requester).
  • step S20 If the status is determined as the E state, the processing unit 28 snoops to the CPU having the CPU-ID registered in the CPU-ID fields 22-4 and 22-5 of the directory 22 via the external node interface circuit 20. Send. In the snoop transmission, the CPU of the registered CPU-ID is requested to change the data state. In step S 16, the processing unit 28 registers the CPU-ID of the CPU that issued the request in the directory 22.
  • the processing unit 28 determines whether the CPU-ID can be registered in the directory 22. As described above, the entry of the A-Type directory 22 can register only two CPU-IDs. The processing unit 28 determines that the CPU-ID can be registered when the detailed information can be stored in the directory 22 (format A-Type in FIG. 4) and only one CPU-ID is registered. To do. If the processing unit 28 determines that the CPU-ID can be registered, the processing unit 28 proceeds to step S 16, and the processing unit 28 registers the requester's CPU-ID in the directory 22.
  • the processing unit 28 If it is determined that the CPU-ID cannot be registered, the processing unit 28 cannot store the detailed information in the directory 22. That is, two CPU-IDs are already stored in the A-Type entry of the directory 22 or the entry format is already B-Type. If it is determined that the CPU-ID cannot be registered, the processing unit 28 determines whether there is a free space in the extended directory 24.
  • the processing unit 28 determines that the extended directory 24 has a free space, the processing unit 28 registers the requester's CPU-ID in the extended directory 24 in the bitmap format. The processing unit 28 registers the board ID of the requester CPU in the B-Type entry of the directory 22 in the bitmap format. In this case, when the entry of the directory 22 needs to be changed from A-Type to B-Type, the processing unit 28 changes the format type 22-1 and status 22-3 of the directory 22 to B-Type, shared state. Update to
  • processing unit 28 determines that there is no free space in the extended directory 24, it registers the board ID of the requester CPU in the B-Type entry of the directory 22 in a bitmap format.
  • FIG. 7 is a data request processing flowchart of the comparative example of FIG.
  • FIG. 7 shows a directory search processing flow diagram of the node controller 2 when a data request (read request) is made in the S (shared) state from the CPU 3A (or 3B) when the extended directory 24 is not provided.
  • the CPU 3A (or 3B) issues a read request in the S state to the node controller 2 (S100).
  • the processing unit 28 of the node controller 2 receives a read request via the CPU interface circuit 26.
  • the processing unit 28 searches the directory 22 of the node controller 2 based on the read address included in the read request.
  • the processing unit 28 refers to the status column 22-3 of the entry in the directory 22 by the read address, and identifies information in the status column 22-3. If the status is determined to be the I state, the processing unit 28 proceeds to step S103 (S102).
  • the processing unit 28 of the node controller 2 registers the CPU-ID and status (S state) of the CPU that issued the request in the directory 22 (S103). As a result of referring to the status column 22-3 of the directory 22, the processing unit 28 determines whether the status of the requested data is E state. If the status is determined as the E state, the processing unit 28 transmits a snoop to the CPU having the CPU-ID registered in the CPU-ID fields 22-4 and 22-5 of the directory 22 via the external node interface circuit 20. (S104). In step S103, the processing unit 28 registers the CPU-ID of the CPU that issued the request in the directory 22.
  • the processing unit 28 determines whether the status of the requested data is the S state as a result of referring to the status column 22-3 of the directory 22 (S105). If the status is determined to be the S state, the processing unit 28 determines whether the CPU-ID can be registered in the directory 22. If the processing unit 28 determines that the CPU-ID can be registered, the processing unit 28 proceeds to step S103, and the processing unit 28 registers the requester's CPU-ID in the directory 22. If the processing unit 28 determines that the CPU-ID cannot be registered, the processing unit 28 registers the CPU-ID of the requester in the B-Type entry of the directory 22 in the bitmap format. In this case, when the entry of the directory 22 needs to be changed from A-Type to B-Type, the processing unit 28 changes the format type 22-1 and status 22-3 of the directory 22 to B-Type, shared state. (S106).
  • the extended directory 24 having a format different from that of the directory 22 is provided exclusively for the S state. Since the requester CPU-ID is registered in the extended directory 24 in the bitmap format, even if the number of CPUs mounted in the information processing system increases, the increase in the directory capacity is minimized, and the S-state CPU is Can be recognized.
  • FIG. 8 is a data request processing flowchart in the E state of the embodiment.
  • FIG. 8 shows a directory search processing flow diagram of the node controller 2 when a data request (read request) is made in the E (exclusive) state from the CPU 3A (or 3B) in the configuration described with reference to FIGS.
  • the processing unit 28 receives a read request via the CPU interface circuit 26.
  • the processing unit 28 searches the directory 22 of the node controller 2 based on the read address included in the read request.
  • the processing unit 28 refers to the status column 22-3 of the entry in the directory 22 by the read address, and identifies information in the status column 22-3. If the status column 22-3 is in the I state, no CPU has the requested data. That is, no CPU is requesting the data of the read address. If the status is determined as the I state, the processing unit 28 proceeds to step S46.
  • the processing unit 28 of the node controller 2 registers the CPU-ID and status (E state) of the CPU that issued the request in the directory 22.
  • step S50 If the status is determined as the E state, the processing unit 28 snoops to the CPU having the CPU-ID registered in the CPU-ID fields 22-4 and 22-5 of the directory 22 via the external node interface circuit 20. Send. In the snoop transmission, the CPU of the registered CPU-ID is requested to change the data state. In step S46, the processing unit 28 registers the CPU-ID of the CPU that issued the request in the directory 22.
  • the processing unit 28 determines whether the number of registered CPU-IDs in the directory 22 is two or less. As described above, the entry of the A-Type directory 22 can register only two CPU-IDs. When the processing unit 28 determines that the number of registered CPU-IDs is two or less, the processing unit 28 passes through the external node interface circuit 20 and the CPU-ID fields 22-4 and 22-5 of the directory 22 The snoop is transmitted to the CPU having the CPU-ID registered in. In step S46, the processing unit 28 updates the directory 22. That is, when one CPU-ID is registered in the directory 22, the processing unit 28 registers the requester's CPU-ID.
  • the entry in the directory 22 is changed from A-Type to B-Type. That is, the processing unit 28 sets the format type field 22-1 of the directory 22 to the board ID on which the CPU of the CPU-ID already registered in the B-Type, board ID bitmap field 22-7 and the CPU to be registered this time. Register the board ID on which the ID is mounted in bitmap format, and update the status 22-6 to the E state.
  • the processing unit 28 determines whether or not there is an address field 24-2 of the extended directory 24 corresponding to the read address of the request (HIT determination).
  • the processing unit 28 After the snoop transmission, the processing unit 28 registers the requester's CPU-ID in the bitmap format 24-4 of the extended directory 24 in the bitmap format. The processing unit 28 registers the board ID having the CPU-ID of the requester in the B-Type entry of the directory 22 in the bitmap format. Further, the processing unit 28 updates the status in the status column 22-6 of the directory 22 to the E state.
  • processing unit 28 determines that the address field 24-2 of the extended directory 24 does not correspond to the read address of the request, uses the board ID bit of the B-Type entry of the directory 22 The snoop is transmitted to the board registered in the map field 22-7 via the external node interface circuit 20. Then, the board ID of the requester CPU-ID is registered in the B-Type entry of the directory 22 in the bitmap format, and the status is updated to the E state.
  • FIG. 9 is a data request processing flowchart in the E state of the comparative example of FIG.
  • FIG. 9 shows a directory search processing flow diagram of the node controller 2 when a data request (read request) is made in the E (exclusive) state from the CPU 3A (or 3B) in a configuration in which no extended directory is provided in FIG.
  • the CPU 3A (or 3B) issues a read request in the E state to the node controller 2 (S110).
  • the processing unit 28 searches the directory 22 of the node controller 2 based on the read address included in the read request.
  • the processing unit 28 determines whether or not the status column 22-3 of the entry of the directory 22 referred to by the read address is in an invalid state (Invalid) (S112). If the status is determined to be the I state, the processing unit 28 proceeds to step S113, and registers the CPU-ID and status (E state) of the CPU that issued the request in the directory 22 (S113).
  • the processing unit 28 refers to the status column 22-3 of the directory 22 and determines whether the status of the requested data is the E state (S114). If the status is determined to be the E state, the processing unit 28 transmits a snoop to the CPU having the CPU-ID registered in the directory 22 via the external node interface circuit 20. In the snoop transmission, the CPU of the registered CPU-ID is requested to change the data state. In step S113, the processing unit 28 registers the CPU-ID of the CPU that issued the request in the directory 22 (S115).
  • the entry in the directory 22 is changed from A-Type to B-Type. That is, the processing unit 28 registers the format type 22-1 of the directory 22 in the bitmap format with the CPU-ID already registered in the B-Type and board ID bitmap 22-7 and the CPU-ID to be registered this time. Then, the status 22-6 is updated to the E state (S113).
  • the extended directory 24 having a format different from that of the directory 22 is provided exclusively for the S state. Since the requester CPU-ID is registered in the extended directory 24 in the bitmap format, even if the number of CPUs mounted in the information processing system increases, the S-state CPU can be recognized and the number of snoop communications can be reduced.
  • the snoop destination can be narrowed down and the communication amount can be reduced.
  • the snoop CPU can be specified when a request is issued, etc., and the amount of communication decreases, contributing to performance improvement.
  • FIG. 10 is a block diagram of an information processing system according to the second embodiment. 10, the same components as those described in FIGS. 1 to 5 are denoted by the same reference numerals.
  • FIG. 10 also shows an information processing system in which a plurality of system boards are connected as an example of the information processing system, as in FIG.
  • the information processing system has a large number (here, 4) of system boards (nodes) 1-1 to 1-4.
  • Each of the system boards 1-1 to 1-4 includes one or a plurality of CPUs 3A, a first memory 4 connected to the CPU 3A, a node controller 2 connected to the CPU 3A, and a second memory connected to the node controller 2.
  • the memory 5 includes a system controller 10 connected to the CPU 3 ⁇ / b> A and the node controller 2.
  • the first memory 4 constitutes an L2 cache memory.
  • the second memory 5 constitutes an L3 cache memory.
  • DIMM Digital Inline Memory Module
  • the node controller 2 performs communication between the system boards 1-1 to 1-4.
  • the node controller 2 of the first system board 1-1 is connected to the node controller 2 of the second system board 1-2 via the first communication path 14-1.
  • the node controller 2 of the second system board 1-2 is connected to the node controller 2 of the third system board via the second communication path 14-2.
  • the node controller 2 of the third system board 1-3 is connected to the node controller 2 of the fourth system board 1-4 via the third communication path 14-3.
  • the system controller 10 performs state setting, state monitoring and the like of circuits (CPU, memory, etc.) in the system boards 1-1 to 1-4.
  • the system controllers 10 provided on the system boards 1-1 to 1-4 are connected to each other via the management bus 12.
  • Each system controller 10 notifies the operation status of each system board 1-1 to 1-4 via the management bus 12, and monitors the status of other system boards.
  • the node controller 2 has a memory space directory 22 including the additional cache memory 5 and an extended directory 24 in the same manner as in FIGS. 3 to 5.
  • the second memory 5 is an expansion memory, and since the second memory 5 is provided in the node controller 2, it is easy to increase the cache memory of the CPU 3A.
  • the system controller 10 is provided on each of the system boards 1-1 to 1-4, the load on the system controller can be reduced as compared with the first embodiment. Even in the information processing system having such a configuration that allows easy addition of the cache memory, the snoop partner can be narrowed down in the shared state as in the first embodiment, and the amount of communication can be reduced.
  • one node is one system board, but one node may be a plurality of system boards, and a plurality of nodes may be one system board. Further, although two examples of the CPU mounted on the system board have been described, three or more CPUs may be mounted on one system board.
  • Node controller 1-1 to 1-N node (system board) 2 Node controller 3A, 3B CPU 4, 4A, 4B Cache memory 5 Additional cache memory 10 System controller 12 Management bus 14-1 to 14-m Communication path 20 External node interface circuit 22 Directory 22-1 Format type column 22-3, 22-6 Status column 22- 4, 22-5 CPU-ID column 22-7 Board ID bitmap column 24 Extended directory 24-1 Effective bit column 24-2 Address column 24-4 CPU-ID bitmap column 26 CPU interface circuit 28 Processing units 30A and 30B CPU core 34 Memory controller

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)

Abstract

複数ノード(1-1~1-n)のスヌープキャッシュ(4A,4B)を使用した情報処理システムにおいて、複数ノード(1-1~1-n)のスヌープキャッシュ(4A,4B)のキャッシュコヒーレンスを保つためのディレクトリを、第1のディレクトリ(22)と第1のディレクトリ(22)のフォーマットと異なるフォーマットを持ち、共有状態専用の第2のディレクトリ(24)とで構成する。第1のディレクトリのエントリ幅を大きくすることなく、共有ノードの詳細な情報を保持することが可能となる。このため、第2のディレクトリを検索した情報により、宛先を絞ったスヌープ発行が可能となる。

Description

情報処理システム
 本発明は、情報処理システムに関する。
 複数のノードを相互に接続した情報処理システムは、並列計算処理の高速化に有効である。並列計算機が分散型共有メモリを持つことにより、高速な並列計算を実行できる。情報処理システムの各ノードは、演算処理ユニット(以下、CPU(Central Processing Unit)という)と,キャッシュメモリ(Cache Memory)等を有する。情報処理システムは、各ノードのキャッシュメモリを分散型共有メモリとして使用する。
 キャッシュメモリを使用した分散型共有メモリでは、複数のノードが各キャッシュメモリを共有するため、キャッシュメモリの一貫性制御が必要となる。一貫性制御は、キャッシュコヒーレンス(Cache Coherence)を保つ制御である。スヌープキャッシュ(Snoop Cache)は、キャッシュコヒーレンスを保つ機構に有効である。
 スヌープキャッシュは、一のノードのCPUが自分のキャッシュメモリに保持されたデータの書き込みがある場合に、他のノードが共有バスを介しその書き込みを受け、他ノードのキャッシュメモリのデータを更新する。ディレクトリ(Directory)方式は、キャッシュコヒーレンスを保持するハードウェア機構として、利用される。ディレクトリ方式は、同じデータがどのCPUにキャッシュされているかを示す情報をキャッシュ内に保持しておき、キャッシュラインの無効化、更新を行う。
 ディレクトリによりキャッシュ管理するシステムでは、メモリの1のアドレスに対して、リードなどのリクエストが発行された場合に、ディレクトリに、状態(Status)、ノード(ボード)識別子(ID:Identification)、ノード(ボード)内のCPU識別子(ID)などのスヌープの宛先を特定できる詳細情報を登録する。
 図11及び図12は、従来のディイレクトリの構成図である。図11は、ディレクトリ100のフォーマットタイプ101がA-type(ビット「1」)のエントリフォーマットを示す。図11に示すように、ディレクトリ100のエントリフォーマットは、エントリのフォーマットタイプ欄101と、リザーブビット欄102と、ステータス(Status)欄103と、CPU-ID(1)欄104と、CPU-ID(2)欄105とを有する。
 ステータス欄103は、排他状態(Exclusive)、無効状態(Invalid)、1つ又は2つのCPUと共有状態(Shared)というデータの保持状態を示す。排他状態は、リクエスタCPUが排他制御中(例えば、読み出し後更新前の状態)であることを示す。無効状態は、いずれのCPUもデータを保持していないことを示す。共有状態は、複数のCPUがデータを共有していることを示す。CPU-ID欄104,105は、リクエストのあった(リクエスタという)CPU-ID(識別子:Identification)を格納する。
 図12は、フォーマットタイプ106がB-type(ビット「1」)のエントリフォーマットを示す。ステータス欄107は、排他状態(Exclusive)、無効状態(Invalid)、複数のCPUと共有状態(Shared)を示す。ボード(ノード)IDのビットマップ欄108は、リクエストのあった(リクエスタという)CPUのボード(ノード)をビットマップ形式で格納する。
 例えば、CPUがデータの更新等のため、CPUが排他状態(以下、Eステートという)でのデータを要求した(リードリクエスト)場合には、リクエストしたアドレスでディレクトリ100を検索し、データの保持状態(Status)を判定する。ディレクトリの検索により、リクエストしたアドレスのデータが、共有状態(以下、Sステートという)で保持されている場合には、当該データを保持しているCPUへスヌープを送信し、該当データを無効状態(Iステートという)に更新する。又、要求したデータが排他状態で保持されている場合には、データを保持しているCPUへスヌープを送信し、該当データを無効状態(I:Invalidステート)にする。
 更に、CPUが共有状態(Sステートという)でデータを要求した(リードリクエスト)場合には、リクエストしたアドレスでディレクトリ100を検索し、データの保持状態を判定する。要求したデータが排他状態で保持されている場合、データを保持しているCPUへ、データの状態(ステータス)を変更するためのスヌープを送信する。又、該当データが共有状態(Sステート)で保持されている場合に、データを保持しているCPUへスヌープを送信し、ディレクトリにリクエスタのCPU-IDを登録する。
 ここで、図11のディレクトリフォーマット欄には、A-Type(Format typeビットが「1」)が設定されている。フォーマットタイプA-Typeは、CPUの識別子(ID)を格納するエントリフォーマットである。図11の例では、CPU-IDを2個まで格納できる。一方、図12のディレクトリフォーマット欄には、B-Type(Format typeビットが「0」)が設定されている。フォーマットタイプB-Typeは、CPU-IDをビットマップで保持するタイプである。この例では、ノード又はCPUを12個まで識別できる。
 このように、登録すべきCPUが2個を越えると、ディレクトリ100のエントリのフォーマットをAタイプ(図11)からBタイプ(図12)に変更し、ノード(又はCPU)を12個まで格納できるようにしていた。
日本特許公開2001-101148号公報 日本特許公開2005-044342号公報
 近年、情報処理システムの大規模化に伴い、1つのノード(ボード)に複数のCPUが存在し、且つ接続可能なシステムノード(ボード)数が増えている。このため、1つのノードのディレクトリが管理しなければならないノード(又はCPU)数も増える。
 ディレクトリが保持できる情報量は、物理的に限りがある。共有状態(Sステート)でデータを保持するノードまたはCPUの数が増える場合には、ディレクトリ機構のエントリサイズが制限されるため、スヌープ宛先のCPUを特定できるような詳細な情報を格納することができない。
 例えば、共有状態(Sステート)でデータ保持しているCPUが3個以上発生した場合には、図11のA-Typeのエントリフォーマットでは、3個以上のCPUの情報を格納できないので、図12のB-TypeのエントリフォーマットでCPUの情報を保持する。しかしながら、B-Typeのエントリフォーマットであっても、保持できるCPUの数は12個までである。このため、B-Typeのエントリフォーマットを使用しても、情報処理システム内にCPUが13個以上ある場合には、登録するCPUを保持できなくなってしまう。
 又、B-Typeのエントリフォーマットにおいて、保持する情報をCPUの上位のハードウェアに変更することにより、対象とするCPU数を増加できる。即ち、CPUをある単位毎のID(例えば、システムボード単位となるボードID)のみで保持する。例えば、システムボード単位で情報を保持する場合には、システムボード内のCPUを識別できない。
 このため、システムボード内では、全CPUに対してスヌープを送信する必要があり、十分にスヌープの宛先を絞ることができない。このように、Sステートでデータ保持しているノードやCPUが増えると、リクエスト発行時などに、CPUの特定ができず、システムボード上の全CPUへスヌープを発行することになる。その結果、通信量が増大し、性能低下を引き起こす。
 本発明の目的は、CPUの数が増大しても、ディレクトリの容量の増加を最小限として、スヌープの送信回数を減少し、CPU間の通信量を減少する情報処理システムを提供することにある。
 この目的の達成のため、開示の情報処理システムは、複数のノードを有し、前記ノードの各々は、少なくとも1つの演算処理ユニットと、前記演算処理ユニットが使用するデータを格納するキャッシュメモリと、演算処理ユニットからのデータ要求に応じて、前記キャッシュメモリの格納データが他のノードのキャッシュメモリに保持されているか否かの状態情報と前記他のノードを識別する情報とを格納するディレクトリを参照して、他のノードにスヌープを通信するノードコントローラとを有し、前記ノードコントローラは、前記キャッシュメモリの格納データが他のノードのキャッシュメモリに保持されているか否かの状態情報と前記他のノードを識別する情報とを格納する第1のディレクトリと、前記キャッシュメモリの格納データが他のノードのキャッシュメモリに保持されている共有状態であるデータの共有ノードを識別する情報を格納する第2のディレクトリとを有する。
 第1のディレクトリのフォーマットと異なるフォーマットを持ち、共有状態専用の第2のディレクトリを設定することにより、第1のディレクトリのエントリ幅を大きくすることなく、共有ノードの詳細な情報を保持することが可能となる。このため、第2のディレクトリを検索した情報により、宛先を絞ったスヌープ発行が可能となる。
実施の形態の情報処理システムのブロック図である。 図1のCPUのブロック図である。 図1のノードコントローラのブロック図である。 図3のディレクトリの説明図である。 図3の拡張ディレクトリの説明図である。 図1乃至図5の実施の形態のSステートでのデータ要求処理フロー図である。 図6に対する比較例のSステートでのデータ要求処理フロー図である。 図1乃至図5の実施の形態のEステートでのデータ要求処理フロー図である。 図8に対する比較例のEステートでのデータ要求処理フロー図である。 第2の実施の形態の情報処理システムのブロック図である。 従来のディレクトリの説明図である。 従来のSステートでのディレクトリの説明図である。
 以下、実施の形態の例を、情報処理システムの第1の実施の形態、Sステートでのデータ要求処理、Eステートでのデータ要求処理、情報処理システムの第2の実施の形態、他の実施の形態の順で説明するが、開示の情報処理システム、ディレクトリは、この実施の形態に限られない。
 (情報処理システムの第1の実施の形態)
 図1は、実施の形態の情報処理システムのブロック図である。図2は、図1のCPUのブロック図である。図3は、図1のノードコントローラのブロック図である。図1は、情報処理システムとして、複数のシステムボードが連結された情報処理システムを例に示す。この例では、1つのシステムボードを1つのノードとして管理する。
 図1に示すように、情報処理システムは多数(ここでは、n>3)台のシステムボード1-1~1-nを有する。各システムボード1-1~1-nは、複数(この例では、2台)の演算処理ユニット(以下、CPU:Central Processing Unitという)3A、3Bと、各CPU3A、3Bに接続されたメモリ4A,4Bと、各CPU3A、3Bに接続されたノードコントローラ2とを有する。メモリ4A、4Bは、例えば、L2、L3キャッシュメモリを構成する。メモリ4A、4Bは、例えば、DIMM(Dual Inline Memory Module)を使用できる。しかし、他の揮発性メモリ等で構成してもよい。
 図2に示すように、CPU3Aは、2つのCPUコア(Core)30A、30Bと、各CPUコア30A,30Bに接続された2つのキャッシュメモリ(L1キャッシュメモリ)32A、32Bと、メモリ4AとCPUコア30A、30Bとを接続し、メモリアクセス制御するメモリコントローラ34とを有する。図1のCPU3Bも同一の構成である。
 図1に戻り、ノードコントローラ2は、システムボード1-1~1-N間で通信を行う。この例では、第1のシステムボード1-1のノードコントローラ2が、第1の通信パス14-1を介し第2のシステムボード1-2のノードコントローラ2に接続する。又、第2のシステムボード1-2のノードコントローラ2が、第2の通信パス14-2を介し第3のシステムボードのノードコントローラ2に接続する。以下、同様に、第n―1のシステムボードのノードコントローラ2が、第n-1の通信パス14-mを介し第nのシステムボード1-nのノードコントローラ2に接続する。
 この通信パス14-1~14-mは、共通バスを構成する。通信パス14-1~14-mを図1の分離したパスでなく、共有したパスで形成してもよい。
 システムコントローラ10は、管理バス12を介し各システムボード1-1~1-nに接続する。システムコントローラ10は各システムボード1-1~1-n内の回路(CPU、メモリ等)の状態設定、状態監視等を行う。尚、図1では、図示していないが、別にメインメモリを設け、各ノードと接続してもよい。
 図3に示すように、ノードコントローラ2は、他のシステムボードのノードコントローラと通信パス14-1を介し通信する外部ノードインターフェース回路20と、CPU3A(3B)のメモリコントローラ34と通信するCPUインターフェース回路26と、ディレクトリ22と、第2のディレクトリ24と、処理ユニット28とを有する。
 処理ユニット28は、外部ノードインターフェース回路20と、CPUインターフェース回路20と、ディレクトリ22と、第2のディレクトリ24とに接続する。処理ユニット28は、CPU3A(及び3B)や他のノードからのリード/ライト要求に応じて、ディレクトリ22及び第2のディレクトリ24を検索し、スヌープ送信等を行う。
 ディレクトリ22は、ノードコントローラ2がデータを管理するために使用する。ディレクトリ22は、自ノードが持っているキャッシュメモリ4Aのアドレス空間において、データの状態と、同じデータがどのノードに保持されているかの管理情報を格納する。
 図4は、図1及び図3のディレクトリの説明図である。図4に示すように、ディレクトリ22は、自ノードのL2、L3キャッシュメモリのメモリアドレス毎にエントリを持つ。例えば、CPUのアクセス単位を64bitとし、自ノードのL2、L3キャッシュメモリ4A,4Bの容量を64ビットで割った結果の個数のエントリを持つ。
 この例では、ディレクトリ22の1つのエントリ幅が2Byte(=16ビット)で構成されている。又、図4の例では、フォーマットタイプAのエントリとフォーマットタイプBのエントリとが混在した例を示す。
 図4に示すように、フォーマットタイプAのエントリフォーマットは、エントリのフォーマットタイプ欄22-1(A-type=1)と、リザーブビット欄22-2と、ステータス欄22-3と、CPU-ID(1)欄22-4と、CPU-ID(2)欄22-5とを有する。フォーマットタイプBのエントリフォーマットは、エントリのフォーマットタイプ欄22-1(B-Type=0)と、第2のステータス欄22-6と、ボードIDビットマップ欄22-7とを有する。
 リザーブビット欄22-2は、1ビットの予備のビットである。ステータス欄22-3は、2ビットで構成される。ステータス欄22-3では、排他状態(Eステート)を「10」、無効状態(Iステート)を「00」、1つのCPUとの共有状態(Sステート)を「01」、2つのCPUとの共有状態を「11」で示す。Eステートは、リクエストしたCPU(リクエスタCPUと呼ぶ)が排他制御中であることを示す。Iステートは、いずれのCPUもデータを保持していないことを示す。Sステートは、複数のCPUがデータを共有していることを示す。
 フォーマットタイプAのCPU-ID(1)欄22-4、CPU-ID(2)欄22-5は、それぞれリクエストを出したCPU(リクエスタ)のCPU-IDを格納する。CPU-ID欄22-4,22-5は、それぞれ6ビットで構成される。CPU-ID欄22-4,22-5は、4ビットのボード(システムボード)のIDと2ビットのローカルID(ボード内のCPU-ID)とを格納する。従って、この例では、最大で、ノード数が16個、ノード内CPUが4個までを特定できる。
 3つ以上のCPUが共有状態である場合に、フォーマットタイプAを使用できない。3つ以上のCPUが共有状態になった場合に、ディレクトリ22において、フォーマットタイプAのエントリが、フォーマットタイプBのエントリに変更される。フォーマットタイプBの第2のステータス22-6欄は、3ビットで構成され、3つ以上のCPUが共有している場合に、「111」がセットされる。ボードIDビットマップ欄22-7は、12ビットで構成され、リクエストのあった(リクエスタという)CPUのボードIDをビットマップ形式で格納する。この例では、12個のノードまでを特定できる。しかし、ノード内のCPUは特定できない。即ち、CPU単位の詳細情報を格納できない。
 図5は、図1の第2のディレクトリの説明図である。第2のディレクトリ(以下、拡張ディレクトリという)24は、ディレクトリ22に詳細情報を格納できなくなった場合に使用するディレクトリである。
 拡張ディレクトリ24は、共有状態(Sステート)でデータ保持しているCPUが一定数以上発生した場合(この例では、CPUが3つ以上の場合)、図4のディレクトリ22とは別に、共有状態(Sステート)でデータ保持しているCPUを特定する詳細情報を格納する専用ディレクトリである。拡張ディレクトリ24は、n-wayのRAM(Random access memory)であっても、fullアソシエイテイブのCAMでもよい。
 拡張ディレクトリ24は、バリッド(Valid)ビット欄24-1と、メモリアドレス欄24-2と、リザーブビット欄24-3と、CPU-IDのビットマップ欄24-4とを有する。バリッドビット欄24-1は、1ビットを割り当てられる。バリッドビット欄24-1は、拡張ディレクトリ24のエントリが有効(Enable=「1」)であるか、無効(Disable=「0」)であるかを示す。
 拡張ディレクトリ24は、メモリアドレス毎に設けられず、共有状態(Sステート)でデータ保持しているCPUの詳細情報を格納するのみである。このため、拡張ディレクトリ24に、メモリアドレス24-2欄を設ける。メモリアドレス欄24-2は、共有状態のデータのメモリアドレスの内、キャッシュライン、インデックスを除いた上位25ビットを格納する。リザーブビット欄24-3は予備のビットである。CPU-IDのビットマップ欄24-4は、48ビットで構成される。ビットマップ欄24-4の各1ビットが1つのCPUを特定する。この例では、48個のCPUを特定できる。この例では、拡張ディレクトリ24のエントリ幅は、80ビットである。
 このように、ディレクトリ22のフォーマットと異なるフォーマットを持つ拡張ディレクトリ24を設定することにより、図4で示した本来のディレクトリ22のエントリ幅を大きくすることなく、CPUの詳細な情報を保持することが可能となる。このため、拡張ディレクトリ24を検索した情報により、宛先を絞ったスヌープ発行が可能となる。
 例えば、情報処理システムが1Tera Byteのキャッシュメモリを備える場合には、ディレクトリ22の各エントリが2Byteであるため、必要なディレクトリ22のメモリ容量は、32GByteとなる。ディレクトリ22のエントリフォーマットで、拡張ディレクトリ24のような48個のCPUを特定するには、1エントリに更に36ビットを要する。このため、ディレクトリ22のエントリ幅は、6Byte以上(正確には、6.5Byte)に拡張しなければばらない。このため、ディレクトリ22を拡張して、より多くのCPUを識別するのは、最低、96GByteを必要とする。
 これに対し、この実施の形態では、拡張ディレクトリ24は、3つ以上のCPUが共有した場合に、データを保持するため、ディレクトリ22内の共有状態のデータを対象とすれば、良い。また、情報処理システムにおいて、共有状態となる確率は、無効状態と排他状態となる確率より低い。このため、拡張ディレクトリ24は、数KByteから最大1MByteであれば、良い。即ち、32GByteのディレクトリ22と最大1MByteの拡張ディレクトリ24により、96GByteのディレクトリ22と同等の性能を付与できる。
 このため、ディレクトリの物量の増大を最小限として、CPUの詳細情報の保持が可能になる。さらに、この拡張ディレクトリ24の詳細情報からスヌープの発行数を最小限に抑えることができるので、通信量の増大も防ぐことが可能になる。
 (Sステートでのデータ要求処理)
 図6は実施の形態のSステートでのデータ要求処理フロー図である。図6は、図1乃至図5で説明した構成において、CPU3A(又は3B)からS(共有)ステートでデータ要求(リード要求)した場合のノードコントローラ2のディレクトリ検索処理フロー図を示す。
 (S10)CPU3A(又は3B)は、ノードコントローラ2にSステートでのリード(Read)リクエストを発行する。
 (S12)ノードコントローラ2では、処理ユニット28がCPUインターフェース回路26を介しリードリクエストを受ける。処理ユニット28は、リードリクエストに含まれるリードアドレスにより、ノードコントローラ2のディレクトリ22を検索する。
 (S14)処理ユニット28は、リードアドレスで、ディレクトリ22のエントリのステータス欄22-3を参照し、ステータス欄22-3の情報を識別する。ステータス欄22-3が無効ステート(Iステート)である場合には、どのCPUもリクエストしたデータを持っていない。即ち、どのCPUも当該リードアドレスのデータを要求していない状態である。処理ユニット28は、ステータスが無効ステートと判定した場合、ステップS16に進む。
 (S16)ノードコントローラ2の処理ユニット28は、リクエストを発行したCPU(ここでは、リクエスタと呼ぶ)のCPU-IDとステータス(Sステート)をディレクトリ22へ登録する。
 (S18)処理ユニット28は、ディレクトリ22のステータス欄22-3を参照した結果、リクエストしたデータのステータスが排他状態(Eステート)であるか判定する。
 (S20)処理ユニット28は、ステータスがEステートと判定した場合、外部ノードインターフェース回路20を介しディレクトリ22のCPU-ID欄22-4,22-5に登録されたCPU-IDを持つCPUへスヌープを送信する。スヌープ送信は、登録されたCPU-IDのCPUにデータのステートの変更を要求する。そして、ステップS16に進み、処理ユニット28は、リクエストを発行したCPUのCPU-IDをディレクトリ22へ登録する。
 (S22)処理ユニット28は、ディレクトリ22のステータス欄22-3を参照した結果、リクエストしたデータのステータスが共有状態(Sステート)であるか判定する。
 (S24)処理ユニット28はステータスがSステートと判定した場合、処理ユニット28はディレクトリ22にCPU-IDを登録できるか判定する。前述のように、A-Typeのディレクトリ22のエントリは、2つのCPU-IDしか登録できない。処理ユニット28は、ディレクトリ22へ詳細情報の格納が可能な状態(図4のフォーマットA-Type)で、且つ登録されたCPU-IDが1つである場合に、CPU-IDを登録できると判定する。処理ユニット28は、CPU-IDを登録できると判定した場合には、ステップS16に進み、処理ユニット28は、ディレクトリ22へリクエスタのCPU-IDを登録する。
 (S26)処理ユニット28は、CPU-IDを登録できないと判定した場合には、ディレクトリ22へ詳細情報が格納できない場合である。即ち、ディレクトリ22のA-Typeのエントリに、既にCPU―IDが2つ格納されている、又はエントリフォーマットが、既にB-Typeである場合である。処理ユニット28は、CPU-IDを登録できないと判定した場合には、拡張ディレクトリ24に空きがあるかを判定する。
 (S28)処理ユニット28は拡張ディレクトリ24に空きがあると判定した場合には、処理ユニット28は、拡張ディレクトリ24にリクエスタのCPU-IDをビットマップ形式で登録する。又、処理ユニット28はディレクトリ22のB-TypeのエントリにリクエスタのCPUのボードIDをビットマップ形式で登録する。この場合、ディレクトリ22のエントリがA-TypeからB-Typeへ変更することが必要な場合は、処理ユニット28はディレクトリ22のフォーマットタイプ22-1とステータス22-3を、B-Type、共有ステートに更新する。
 (S30)処理ユニット28は拡張ディレクトリ24に空きがないと判定した場合には、ディレクトリ22のB-TypeのエントリにリクエスタのCPUのボードIDをビットマップ形式で登録する。
 図7は、図6の比較例のデータ要求処理フロー図である。図7は、拡張ディレクトリ24を設けない場合において、CPU3A(又は3B)からS(共有)ステートでデータ要求(リード要求)した場合のノードコントローラ2のディレクトリ検索処理フロー図を示す。
 図7に示すように、CPU3A(又は3B)は、ノードコントローラ2にSステートでのリード(Read)リクエストを発行する(S100)。ノードコントローラ2の処理ユニット28がCPUインターフェース回路26を介しリードリクエストを受ける。処理ユニット28は、リードリクエストに含まれるリードアドレスにより、ノードコントローラ2のディレクトリ22を検索する。処理ユニット28は、リードアドレスでディレクトリ22のエントリのステータス欄22-3を参照し、ステータス欄22-3の情報を識別する。処理ユニット28は、ステータスがIステートと判定した場合、ステップS103に進む(S102)。
 ノードコントローラ2の処理ユニット28は、リクエストを発行したCPUのCPU-IDとステータス(Sステート)をディレクトリ22へ登録する(S103)。処理ユニット28は、ディレクトリ22のステータス欄22-3を参照した結果、リクエストしたデータのステータスがEステートであるか判定する。処理ユニット28は、ステータスがEステートと判定した場合、外部ノードインターフェース回路20を介しディレクトリ22のCPU-ID欄22-4,22-5に登録されたCPU-IDを持つCPUへスヌープを送信する(S104)。そして、ステップS103に進み、処理ユニット28は、リクエストを発行したCPUのCPU-IDをディレクトリ22へ登録する。
 処理ユニット28は、ディレクトリ22のステータス欄22-3を参照した結果、リクエストしたデータのステータスがSステートであるか判定する(S105)。処理ユニット28は、ステータスがSステートと判定した場合、ディレクトリ22にCPU-IDを登録できるか判定する。処理ユニット28は、CPU-IDを登録できると判定した場合には、ステップS103に進み、処理ユニット28は、ディレクトリ22へリクエスタのCPU-IDを登録する。処理ユニット28は、CPU-IDを登録できないと判定した場合には、処理ユニット28はディレクトリ22のB-TypeのエントリにリクエスタのCPU-IDをビットマップ形式で登録する。この場合、ディレクトリ22のエントリがA-TypeからB-Typeへ変更することが必要な場合は、処理ユニット28はディレクトリ22のフォーマットタイプ22-1とステータス22-3を、B-Type、共有ステートに更新する(S106)。
 このように、本実施の形態では、ディレクトリ22と異なるフォーマットを持つ拡張ディレクトリ24をSステート専用に設ける。そして、拡張ディレクトリ24にビットマップ形式でリクエスタCPU-IDを登録するため、情報処理システムに搭載されたCPUの台数が増加しても、ディレクトリの容量の増加を最小限として、SステートのCPUを認識できる。
 (Eステートでのデータ要求処理)
 図8は実施の形態のEステートでのデータ要求処理フロー図である。図8は、図1乃至図5で説明した構成において、CPU3A(又は3B)からE(排他)ステートでデータ要求(リード要求)した場合のノードコントローラ2のディレクトリ検索処理フロー図を示す。
 (S40)CPU3A(又は3B)は、ノードコントローラ2にEステートでのリード(Read)リクエストを発行する。
 (S42)ノードコントローラ2では、処理ユニット28がCPUインターフェース回路26を介しリードリクエストを受ける。処理ユニット28は、リードリクエストに含まれるリードアドレスにより、ノードコントローラ2のディレクトリ22を検索する。
 (S44)処理ユニット28は、リードアドレスでディレクトリ22のエントリのステータス欄22-3を参照し、ステータス欄22-3の情報を識別する。ステータス欄22-3がIステートである場合には、どのCPUもリクエストしたデータを持っていない。即ち、どのCPUも当該リードアドレスのデータを要求していない状態である。処理ユニット28は、ステータスがIステートと判定した場合、ステップS46に進む。
 (S46)ノードコントローラ2の処理ユニット28は、リクエストを発行したCPUのCPU-IDとステータス(Eステート)をディレクトリ22へ登録する。
 (S48)処理ユニット28は、ディレクトリ22のステータス欄22-3を参照した結果、リクエストしたデータのステータスがEステートであるか判定する。
 (S50)処理ユニット28は、ステータスがEステートと判定した場合、外部ノードインターフェース回路20を介しディレクトリ22のCPU-ID欄22-4,22-5に登録されたCPU-IDを持つCPUへスヌープを送信する。スヌープ送信は、登録されたCPU-IDのCPUにデータのステートの変更を要求する。そして、ステップS46に進み、処理ユニット28は、リクエストを発行したCPUのCPU-IDをディレクトリ22へ登録する。
 (S52)処理ユニット28は、ディレクトリ22のステータス22-3を参照した結果、リクエストしたデータのステータスがSステートであるか判定する。
 (S54)処理ユニット28は、ステータスがSステートと判定した場合、ディレクトリ22の登録されたCPU-IDが2つ以下であるか否かを判定する。前述のように、A-Typeのディレクトリ22のエントリは、2つのCPU-IDしか登録できない。処理ユニット28は、登録されたCPU-IDが2つ以下であると判定した場合には、処理ユニット28は、外部ノードインターフェース回路20を介しディレクトリ22のCPU-ID欄22-4,22-5に登録されたCPU-IDを持つCPUへスヌープを送信する。そして、ステップS46に進み、処理ユニット28は、ディレクトリ22を更新する。即ち、処理ユニット28は、ディレクトリ22に1つのCPU-IDが登録された場合には、リクエスタのCPU-IDを登録する。又、ディレクトリ22に2つのCPU-IDが登録された場合には、ディレクトリ22のエントリをA-TypeからB-Typeへ変更する。即ち、処理ユニット28はディレクトリ22のフォーマットタイプ欄22-1を、B-Type、ボードIDビットマップ欄22-7に既に登録されたCPU-IDのCPUを搭載するボードIDと今回登録すべきCPU-IDを搭載するボードIDとをビットマップ形式で登録し、ステータス22-6をEステートに更新する。
 (S56)処理ユニット28は、ディレクトリ22に登録されたCPU-IDが2つ以上でないと判定した場合には、拡張ディレクトリ24をリクエストのリードアドレスで検索する。
 (S58)処理ユニット28は、拡張ディレクトリ24のアドレス欄24-2にリクエストのリードアドレスに対応するものがあるか否かを判定(HIT判定)する。
 (S60)処理ユニット28は、拡張ディレクトリ24のアドレス欄24-2にリクエストのリードアドレスに対応するものがあると判定(HIT判定)した場合には、拡張ディレクトリ24のCPU-IDのビットマップ欄24-4に登録されたCPU-IDを持つCPUへ、外部ノードインターフェース回路20を介しスヌープを送信する。
 (S62)処理ユニット28は、スヌープ送信後、拡張ディレクトリ24のCPU-IDのビットマップ欄24-4にリクエスタのCPU-IDをビットマップ形式で登録する。又、処理ユニット28はディレクトリ22のB-TypeのエントリにリクエスタのCPU-IDを持つボードIDをビットマップ形式で登録する。又、処理ユニット28はディレクトリ22のステータス欄22-6のステータスを、Eステートに更新する。
 (S64)処理ユニット28は拡張ディレクトリ24のアドレス欄24-2にリクエストのリードアドレスに対応するものがないと判定した場合には、処理ユニット28はディレクトリ22のB-TypeのエントリのボードIDビットマップ欄22-7に登録されたボードへ外部ノードインターフェース回路20を介しスヌープを送信する。そして、ディレクトリ22のB-TypeのエントリにリクエスタのCPU-IDのボードIDをビットマップ形式で登録し、ステータスをEステートに更新する。
 図9は図8の比較例のEステートでのデータ要求処理フロー図である。図9は、図8において、拡張ディレクトリを設けない構成において、CPU3A(又は3B)からE(排他)ステートでデータ要求(リード要求)した場合のノードコントローラ2のディレクトリ検索処理フロー図を示す。
 CPU3A(又は3B)は、ノードコントローラ2にEステートでのリード(Read)リクエストを発行する(S110)。処理ユニット28は、リードリクエストに含まれるリードアドレスにより、ノードコントローラ2のディレクトリ22を検索する。処理ユニット28は、リードアドレスで参照したディレクトリ22のエントリのステータス欄22-3が無効ステート(Invalid)であるか否かを判定する(S112)。処理ユニット28は、ステータスがIステートと判定した場合、ステップS113に進み、リクエストを発行したCPUのCPU-IDとステータス(Eステート)をディレクトリ22へ登録する(S113)。
 処理ユニット28は、ディレクトリ22のステータス欄22-3を参照し、リクエストしたデータのステータスがEステートであるか判定する(S114)。処理ユニット28は、ステータスがEステートと判定した場合、外部ノードインターフェース回路20を介しディレクトリ22に登録されたCPU-IDを持つCPUへスヌープを送信する。スヌープ送信は、登録されたCPU-IDのCPUにデータのステートの変更を要求する。そして、ステップS113に進み、処理ユニット28は、リクエストを発行したCPUのCPU-IDをディレクトリ22へ登録する(S115)。
 処理ユニット28は、ディレクトリ22のステータス欄22-3を参照した結果、リクエストしたデータのステータスがSステートであるか判定する(S116)。処理ユニット28は、ステータスがSステートと判定した場合、ディレクトリ22の登録されたCPU-IDが2つ以下であるか否かを判定する(S117)。処理ユニット28は、登録されたCPU-IDが2つ以下であると判定した場合には、処理ユニット28は、外部ノードインターフェース回路20を介しディレクトリ22に登録されたCPU-IDを持つCPUへスヌープを送信する(S115)。そして、ステップS113に進み、処理ユニット28は、ディレクトリ22を更新する。即ち、処理ユニット28は、ディレクトリ22に1つのCPU-IDが登録された場合には、リクエスタのCPU-IDを登録する。又、ディレクトリ22に2つのCPU-IDが登録された場合には、ディレクトリ22のエントリをA-TypeからB-Typeへ変更する。即ち、処理ユニット28はディレクトリ22のフォーマットタイプ22-1を、B-Type、ボードIDビットマップ22-7に既に登録されたCPU-IDと今回登録すべきCPU-IDとをビットマップ形式で登録し、ステータス22-6をEステートに更新する(S113)。
 処理ユニット28は、ディレクトリ22に登録されたCPU-IDが2つ以上でないと判定した場合には、処理ユニット28はディレクトリ22のB-TypeのエントリのボードIDビットマップ欄22-7に登録されたボード又はCPUへ外部ノードインターフェース回路20を介しスヌープを送信する。そして、ディレクトリ22のB-TypeのエントリにリクエスタのCPU-ID又はボードIDをビットマップ形式で登録し、ステータスをEステートに更新する(S118)。
 このように、本実施の形態では、ディレクトリ22と異なるフォーマットを持つ拡張ディレクトリ24をSステート専用に設ける。そして、拡張ディレクトリ24にビットマップ形式でリクエスタCPU-IDを登録するため、情報処理システムに搭載されたCPUの台数が増加しても、SステートのCPUを認識でき、スヌープ通信回数を減少できる。
 このため、システムボード(ノード)1-1~1-nのキャッシュメモリ4A,4Bを共有キャッシュメモリに使用しても、スヌープの宛先を絞ることができ、通信量を減少できる。特に、Sステートでデータ保持しているノードやCPUが増えても、リクエスト発行時などに、スヌープのCPUの特定ができ、通信量が減少し、性能向上に寄与する。
 (情報処理システムの第2の実施の形態)
 図10は、第2の実施の形態の情報処理システムのブロック図である。図10において、図1乃至図5で説明したものと同一のものは、同一の記号を付してある。図10も、図1と同様に、情報処理システムとして、複数のシステムボードが連結された情報処理システムを例に示す。
 図10に示すように、情報処理システムは多数(ここでは、4)台のシステムボード(ノード)1-1~1-4を有する。各システムボード1-1~1-4は、単数又は複数のCPU3Aと、CPU3Aに接続された第1のメモリ4と、CPU3Aに接続されたノードコントローラ2、ノードコントローラ2に接続された第2のメモリ5と、CPU3Aとノードコントローラ2とに接続されたシステムコントローラ10とを有する。
 第1のメモリ4は、L2キャッシュメモリを構成する。第2のメモリ5は、L3キャッシュメモリを構成する。第1及び第2のメモリ4,5は、例えば、DIMM(Dual Inline Memory Module)を使用できる。ノードコントローラ2は、システムボード1-1~1-4間で通信を行う。この例では、第1のシステムボード1-1のノードコントローラ2が、第1の通信パス14-1を介し第2のシステムボード1-2のノードコントローラ2に接続する。又、第2のシステムボード1-2のノードコントローラ2が、第2の通信パス14-2を介し第3のシステムボードのノードコントローラ2に接続する。以下、同様に、第3のシステムボード1-3のノードコントローラ2が、第3の通信パス14-3を介し第4のシステムボード1-4のノードコントローラ2に接続する。
 システムコントローラ10は各システムボード1-1~1-4内の回路(CPU、メモリ等)の状態設定、状態監視等を行う。各システムボード1-1~1-4に設けられたシステムコントローラ10は、管理バス12を介し互いに接続する。各システムコントローラ10は、管理バス12を介し各システムボード1-1~1-4の運用状態を通知し、他のシステムボードの状態を監視する。
 又、ノードコントローラ2は、図3乃至図5と構成と同様に、増設キャッシュメモリ5を含めたメモリ空間のディレクトリ22と拡張ディレクトリ24とを有する。第2の実施の形態では、第2のメモリ5は、増設用メモリであり、ノードコントローラ2に第2のメモリ5を設けたので、CPU3Aのキャッシュメモリの増設が容易である。
 又、システムコントローラ10を各システムボード1-1~1-4に設けたため、第1の実施の形態に比し、システムコントローラの負荷を低減できる。このようなキャッシュメモリの増設が容易な構成の情報処理システムにおいても、第1の実施の形態と同様に、共有ステートにおいて、スヌープ相手先を絞ることができ、通信量を低減できる。
 (他の実施の形態)
 前述の実施の形態では、1ノードを1つのシステムボードとしているが、1ノードを複数のシステムボードとしてもよく、複数のノードを1つのシステムボードとしてもよい。又、システムボードに搭載したCPUを2つの例で説明したが、3つ以上のCPUを1つのシステムボードに搭載してもよい。
 以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
 第1のディレクトリのフォーマットと異なるフォーマットを持ち、共有状態専用の第2のディレクトリを設定することにより、第1のディレクトリのエントリ幅を大きくすることなく、共有ノードの詳細な情報を保持することが可能となる。このため、ディレクトリの容量の増加を最小限として、第2のディレクトリを検索した情報により、宛先を絞ったスヌープ発行が可能となる。
1-1~1-N ノード(システムボード)
2 ノードコントローラ
3A,3B CPU
4,4A,4B キャッシュメモリ
5 増設キャッシュメモリ
10 システムコントローラ
12 管理バス
14-1~14-m 通信パス
20 外部ノードインターフェース回路
22 ディレクトリ
22-1 フォーマットタイプ欄
22-3,22-6 ステータス欄
22-4,22-5 CPU-ID欄
22-7 ボードIDビットマップ欄
24 拡張ディレクトリ
24-1 有効ビット欄
24-2 アドレス欄
24-4 CPU-IDビットマップ欄
26 CPUインターフェース回路
28 処理ユニット
30A,30B CPUコア
34 メモリコントローラ

Claims (8)

  1.  複数のノードを接続した情報処理システムにおいて、
     前記ノードの各々は、
     少なくとも1つの演算処理ユニットと、
     前記演算処理ユニットが使用するデータを格納するキャッシュメモリと、
     演算処理ユニットからのデータ要求に応じて、前記キャッシュメモリの格納データが他のノードのキャッシュメモリに保持されているか否かの状態情報と前記他のノードを識別する情報とを格納するディレクトリを参照して、他のノードにスヌープを通信するノードコントローラとを有し、
     前記ノードコントローラは、
     前記キャッシュメモリの格納データが他のノードのキャッシュメモリに保持されているか否かの状態情報と前記他のノードを識別する情報とを格納する第1のディレクトリと、
     前記キャッシュメモリの格納データが他のノードのキャッシュメモリに保持されている共有状態であるデータの共有ノードを識別する情報を格納する第2のディレクトリとを有する
     ことを特徴とする情報処理システム。
  2.  請求項1の情報処理システムにおいて、
     前記ノードコントローラは、演算処理ユニットからのデータ要求に応じて、前記第1のディレクトリを参照し、前記スヌープを通信すべき前記他のノードを識別できないことを判定し、前記第2のディレクトリを参照して、前記スヌープを通信すべき前記他のノードを識別し、前記識別した他のノードにスヌープを通信する
     ことを特徴とする情報処理システム。
  3.  請求項1の情報処理システムにおいて、
     前記ノードコントローラは、演算処理ユニットからのデータ要求に応じて、前記第1のディレクトリに前記演算処理ユニットのノードの識別子を格納できるか否かを判定し、前記演算処理ユニットのノードの識別子を格納できると判定した場合には、前記第1のディレクトリに前記演算処理ユニットのノードの識別子を格納し、前記演算処理ユニットのノードの識別子を格納できないと判定した場合には、前記第2のディレクトリに前記演算処理ユニットのノードの識別子を格納する
     ことを特徴とする情報処理システム。
  4.  請求項2の情報処理システムにおいて、
     前記ノードコントローラは、演算処理ユニットからのデータ要求に応じて、前記第1のディレクトリに前記演算処理ユニットのノードの識別子を格納できないと判定した場合には、前記第2のディレクトリに空き領域があるか否かを判定し、前記第2のディレクトリに空き領域があると判定した場合には、前記第2のディレクトリに前記演算処理ユニットのノードの識別子を格納し、前記第2のディレクトリに空きがないと判定した場合には、前記第1のディレクトリのエントリフォーマットを変更して、前記演算処理ユニットのノードの識別子をビットマップ形式で格納する
     ことを特徴とする情報処理システム。
  5.  請求項2の情報処理システムにおいて、
     前記ノードコントローラは、演算処理ユニットからの排他状態でのデータ要求に応じて、前記第2のディレクトリを参照し、前記第2のディレクトリに登録されたスヌープ通信すべき他のノードを特定し、前記特定した他のノードにスヌープを通信する
     ことを特徴とする情報処理システム。
  6.  請求項1の情報処理システムにおいて、
     前記ノードは、複数の前記演算処理ユニットを有し、
     前記第1のディレクトリは、前記他のノードの前記演算処理ユニットのキャッシュメモリに保持されているか否かの状態情報と前記他のノードの演算処理ユニットを識別する情報とを格納し、
     前記第2のディレクトリは、前記共有状態であるデータの他のノードの演算処理ユニットを識別する情報を格納する
     ことを特徴とする情報処理システム。
  7.  請求項1の情報処理システムにおいて、
     前記第1のディレクトリは、前記他のノードのキャッシュメモリに保持されているか否かの状態情報と前記他のノードを識別する情報とを格納する第1のエントリフォーマットと、前記他のノードのキャッシュメモリに保持されているか否かの状態情報とビットマップ形式で前記他のノードを識別する情報を格納する第2のエントリフォーマットとを備え、
     前記第2のディレクトリは、ビットマップ形式で前記共有状態であるデータの他のノードを識別する情報を格納する
     ことを特徴とする情報処理システム。
  8.  請求項1の情報処理システムにおいて、
     前記第1のディレクトリは、少なくとも前記キャッシュメモリの格納データが他のノードのキャッシュメモリに保持されている共有状態か、前記キャッシュメモリの格納データが排他状態かを示す状態情報を格納する
     ことを特徴とする情報処理システム。
PCT/JP2010/061785 2010-07-12 2010-07-12 情報処理システム WO2012008008A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012524351A JP5435132B2 (ja) 2010-07-12 2010-07-12 情報処理システム
PCT/JP2010/061785 WO2012008008A1 (ja) 2010-07-12 2010-07-12 情報処理システム
US13/738,433 US20130132678A1 (en) 2010-07-12 2013-01-10 Information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/061785 WO2012008008A1 (ja) 2010-07-12 2010-07-12 情報処理システム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/738,433 Continuation US20130132678A1 (en) 2010-07-12 2013-01-10 Information processing system

Publications (1)

Publication Number Publication Date
WO2012008008A1 true WO2012008008A1 (ja) 2012-01-19

Family

ID=45469033

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/061785 WO2012008008A1 (ja) 2010-07-12 2010-07-12 情報処理システム

Country Status (3)

Country Link
US (1) US20130132678A1 (ja)
JP (1) JP5435132B2 (ja)
WO (1) WO2012008008A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5614452B2 (ja) * 2010-09-13 2014-10-29 富士通株式会社 情報処理装置および情報処理装置の制御方法
EP4129255A1 (en) 2020-07-06 2023-02-08 Ontex BV Absorbent article with improved core and method of making

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488606B (zh) * 2013-09-10 2016-08-17 华为技术有限公司 基于节点控制器的请求响应方法和装置
CN106647437B (zh) * 2016-09-30 2024-04-16 衡水益通管业股份有限公司 基于互联网的管廊信号采集节点执行控制器及其监控方法
US11550720B2 (en) * 2020-11-24 2023-01-10 Arm Limited Configurable cache coherency controller
WO2024116215A1 (en) 2022-11-30 2024-06-06 Tone Spring Amplifier for musical instruments

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263374A (ja) * 1995-03-20 1996-10-11 Hitachi Ltd キャッシュ制御方法およびそれを用いたマルチプロセッサシステム
JPH08320827A (ja) * 1995-03-20 1996-12-03 Fujitsu Ltd キャッシュコヒーレンス装置
JPH0922381A (ja) * 1995-07-06 1997-01-21 Hitachi Ltd プロセッサ間データ一貫性保証装置
JP2001147903A (ja) * 1999-09-15 2001-05-29 Internatl Business Mach Corp <Ibm> 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム
JP2009245323A (ja) * 2008-03-31 2009-10-22 Nec Computertechno Ltd レイテンシ短縮方式及び方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3410535B2 (ja) * 1994-01-20 2003-05-26 株式会社日立製作所 並列計算機
JP4689783B2 (ja) * 1999-09-28 2011-05-25 富士通株式会社 分散共有メモリ型並列計算機
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
JP2003216596A (ja) * 2002-01-17 2003-07-31 Hitachi Ltd マルチプロセッサシステム及びノード装置
US6868485B1 (en) * 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
JP4134807B2 (ja) * 2003-04-25 2008-08-20 ブラザー工業株式会社 特殊画像付加方法、描画処理システム、及びドライバプログラム
US7089361B2 (en) * 2003-08-07 2006-08-08 International Business Machines Corporation Dynamic allocation of shared cache directory for optimizing performance
US7624234B2 (en) * 2006-08-31 2009-11-24 Hewlett-Packard Development Company, L.P. Directory caches, and methods for operation thereof
US7774551B2 (en) * 2006-10-06 2010-08-10 Hewlett-Packard Development Company, L.P. Hierarchical cache coherence directory structure
US8185695B2 (en) * 2008-06-30 2012-05-22 Advanced Micro Devices, Inc. Snoop filtering mechanism
WO2010038301A1 (ja) * 2008-10-02 2010-04-08 富士通株式会社 メモリアクセス方法及び情報処理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263374A (ja) * 1995-03-20 1996-10-11 Hitachi Ltd キャッシュ制御方法およびそれを用いたマルチプロセッサシステム
JPH08320827A (ja) * 1995-03-20 1996-12-03 Fujitsu Ltd キャッシュコヒーレンス装置
JPH0922381A (ja) * 1995-07-06 1997-01-21 Hitachi Ltd プロセッサ間データ一貫性保証装置
JP2001147903A (ja) * 1999-09-15 2001-05-29 Internatl Business Mach Corp <Ibm> 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム
JP2009245323A (ja) * 2008-03-31 2009-10-22 Nec Computertechno Ltd レイテンシ短縮方式及び方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5614452B2 (ja) * 2010-09-13 2014-10-29 富士通株式会社 情報処理装置および情報処理装置の制御方法
EP4129255A1 (en) 2020-07-06 2023-02-08 Ontex BV Absorbent article with improved core and method of making

Also Published As

Publication number Publication date
JP5435132B2 (ja) 2014-03-05
JPWO2012008008A1 (ja) 2013-09-05
US20130132678A1 (en) 2013-05-23

Similar Documents

Publication Publication Date Title
CN105740164B (zh) 支持缓存一致性的多核处理器、读写方法、装置及设备
US8185695B2 (en) Snoop filtering mechanism
US6289420B1 (en) System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem
US10402327B2 (en) Network-aware cache coherence protocol enhancement
JP4447580B2 (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
US6408362B1 (en) Data processing system, cache, and method that select a castout victim in response to the latencies of memory copies of cached data
US8812786B2 (en) Dual-granularity state tracking for directory-based cache coherence
JP5435132B2 (ja) 情報処理システム
US20150058570A1 (en) Method of constructing share-f state in local domain of multi-level cache coherency domain system
US10055349B2 (en) Cache coherence protocol
CN111143244B (zh) 计算机设备的内存访问方法和计算机设备
KR20170130388A (ko) 비대칭 세트 결합된 캐시
US6973547B2 (en) Coherence message prediction mechanism and multiprocessing computer system employing the same
US7925857B2 (en) Method for increasing cache directory associativity classes via efficient tag bit reclaimation
US20100217939A1 (en) Data processing system
US20120124297A1 (en) Coherence domain support for multi-tenant environment
US20110185128A1 (en) Memory access method and information processing apparatus
US11321233B2 (en) Multi-chip system and cache processing method
US9983994B2 (en) Arithmetic processing device and method for controlling arithmetic processing device
US20170371783A1 (en) Self-aware, peer-to-peer cache transfers between local, shared cache memories in a multi-processor system
US8799587B2 (en) Region coherence array for a mult-processor system having subregions and subregion prefetching
JP6343722B2 (ja) マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス
US10565111B2 (en) Processor
US6996675B2 (en) Retrieval of all tag entries of cache locations for memory address and determining ECC based on same
CN117667785A (zh) 数据处理方法、数据处理装置、电子设备和存储介质

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: 10854692

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012524351

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10854692

Country of ref document: EP

Kind code of ref document: A1