WO2009119413A1 - キャッシュメモリ、情報処理装置およびキャッシュメモリ制御方法 - Google Patents

キャッシュメモリ、情報処理装置およびキャッシュメモリ制御方法 Download PDF

Info

Publication number
WO2009119413A1
WO2009119413A1 PCT/JP2009/055304 JP2009055304W WO2009119413A1 WO 2009119413 A1 WO2009119413 A1 WO 2009119413A1 JP 2009055304 W JP2009055304 W JP 2009055304W WO 2009119413 A1 WO2009119413 A1 WO 2009119413A1
Authority
WO
WIPO (PCT)
Prior art keywords
address
data
cache memory
block
communication device
Prior art date
Application number
PCT/JP2009/055304
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 日本電気株式会社
Publication of WO2009119413A1 publication Critical patent/WO2009119413A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Definitions

  • the present invention relates to a cache memory, an information processing apparatus, and a cache memory control method, and more particularly to a cache memory, an information processing apparatus, and a cache memory control method that can be used in a parallel computer system.
  • An information processing system using a cache memory is known.
  • a cache memory is provided between an arithmetic unit such as a CPU and a main memory, and stores a part of data in the main memory. , Exchange data with the arithmetic unit.
  • an information processing system using a cache memory accesses the main memory, reads data from the main memory in units of blocks, and writes the data in units of blocks to the cache memory.
  • Patent Document 2 Japanese Patent Laid-Open No. 2000-267935
  • Patent Document 4 Japanese Patent Laid-Open No. 3-150659 discloses an inter-processor data transfer method in which data for transmission is directly transferred from a cache memory of a processor to a transmission port for communication.
  • a data transfer command is provided as a processor command.
  • the transmission data when the transmission data is on the cache memory, the transmission data is sent directly from the cache memory to the transmission port. On the other hand, when the transmission data is not in the cache memory, the transmission data is transferred from the memory to the transmission port.
  • the transmission port creates a packet by adding a packet header to the transmission data, and sends the packet to the network. This method has an effect of reducing the latency at the time of transmission of communication between processors.
  • Patent Document 5 Japanese Patent Laid-Open No. 3-168860
  • the data Is written to the memory and the data is also written to the block on the cache memory. This method can prevent performance degradation due to cache invalidation that occurs when received data is written only in memory.
  • Patent Document 6 Japanese Patent Laid-Open No. 6-103244
  • a technique is disclosed in which data is transferred from a cache memory of a processor to a transmission unit and data received by a reception unit is written to a second cache memory when there is data on the number of cache memories.
  • Patent Document 6 discloses a technique for transferring data from the second cache memory to the first cache memory when the processor accesses the data on the second cache memory.
  • the transmission unit has a FIFO (First-In First-Out) memory for receiving transmission data.
  • FIG. 1 is a block diagram showing a configuration of a processor 3301 of a general parallel computer.
  • the processor 3301 includes a CPU 3302 that performs an operation, an interprocessor communication device 3303 that performs interprocessor communication, a cache memory 3304, a memory 3305, a control circuit 3307, and a CPU bus 3308.
  • the cache memory 3304 includes a data array and an address array, which are known techniques.
  • the processor 3301 communicates with other processors 3301 via the interprocessor communication device 3303 and the interprocessor network 3306.
  • a cache memory 3304 and a control circuit 3307 are connected to the CPU bus 3308.
  • the following commands and responses to the CPU bus 3308 flow.
  • Commands and responses related to the CPU bus 3308 are disclosed in Non-Patent Document 1 (MIPS R10000 Microprocessor User's Manual Version 2.0, MIPS Technologies, Inc., 1996, pp. 121-140).
  • Intervention Shared A command for the control circuit 3307 to read a cache block on the cache memory 3304.
  • block data is returned from the cache memory 3304 to the control circuit 3307 as a response. Blocks on the cache memory 3304 are not invalidated.
  • block data is returned from the cache memory 3304 to the control circuit 3307 as a response. Then, the corresponding block on the cache memory 3304 is invalidated.
  • the block on the cache memory 3304 is invalidated and the fact that there is no data response is returned from the cache memory 3304 to the control circuit 3307.
  • Invalidation request A command for the control circuit 3307 to invalidate a block on the cache memory 3304. If the corresponding block exists on the cache memory 3304, the cache memory 3304 invalidates the corresponding block.
  • the cache memory 3304 When there is no corresponding block on the cache memory 3304, the cache memory 3304 does nothing.
  • the inter-processor communication device 3303 requests the control circuit 3307 to read and write data.
  • the control circuit 3307 issues the above command to the cache memory 3304 and operates the cache memory 3304 using the CPU bus 3308 in response to the request.
  • the control circuit 3307 also accesses the memory 3305 as necessary. Note that the operation of the cache memory 3304 via the CPU bus 3308 generally takes longer processing time than when the cache memory 3304 is accessed from the CPU 3302.
  • FIG. 2 and FIG. 3 are explanatory diagrams for explaining processing of transmission and reception of communication between processors of a general parallel computer. 2 and 3, the same components as those shown in FIG. 1 are denoted by the same reference numerals. 2 and 3, the memory unit 3400 is a combination of the cache memory 3304, the memory 3305, the control circuit 3307, and the CPU bus 3308 shown in FIG.
  • the CPU 3302 creates transmission data 34a on the memory unit 3400 (step 3401).
  • the CPU 3302 writes the command 34b into the command queue 3400a on the memory unit 3400 (step 3402).
  • the command 34b indicates a communication destination, a pointer to the transmission data 34a, and the like.
  • the CPU 3302 sends a transmission request indicating the position of the command 34b to the inter-processor communication device 3303 (step 3403).
  • the inter-processor communication device 3303 When receiving the transmission request, the inter-processor communication device 3303 reads the command 34b from the memory unit 3400 using the control circuit 3307 (step 3404).
  • the inter-processor communication device 3303 reads the transmission data 34a from the memory unit 3400 using the control circuit 3307 using the pointer to the transmission data 34a indicated by the command 34b (step 3405), and transmits the transmission data.
  • a packet is created based on 34a, and the packet is transmitted to the inter-processor network 3306 (step 3406).
  • the CPU 3302 can write the command 34b to the command queue 3400a and send a transmission request to the inter-processor communication device 3303 regardless of the status of the transmission processing of the inter-processor communication device 3303.
  • the inter-processor communication device 3303 uses the control circuit 3307 to read and process the command 34b from the command queue 3400a until there is no more command 34b in the command queue 3400a.
  • the CPU 3302 and the inter-processor communication device 3303 can operate independently, and can perform computation and communication simultaneously.
  • the inter-processor communication device 3303 receives a packet from the inter-processor network 3306 (step 3501).
  • the inter-processor communication device 3303 writes the received data 35a in the packet on the memory unit 3400 using the control circuit 3307 (step 3502).
  • the inter-processor communication device 3303 uses the control circuit 3307 to write the reception completion flag 35b in the memory unit 3400 (step 3503).
  • the CPU 3302 is polling the reception completion flag 35b and reads out the reception completion flag 35b written by the inter-processor communication device 3303 (step 3504).
  • the CPU 3302 knows that the reception data 35a has been written in the memory unit 3400 by referring to the reception completion flag 35b, and reads out the reception data 35a from the memory unit 3400 (step 3505).
  • reception completion flag 35b on the memory unit 3400 is used as means for notifying the CPU 3302 of completion of reception.
  • an interrupt may be considered as a means for notifying the CPU 3302 of the completion of reception, but the overhead of the context switch due to the interrupt is large, so it is difficult to use the interrupt in terms of performance.
  • FIGS. 4 and 6 are explanatory diagrams for explaining the transmission and reception processing of the inter-processor communication shown in FIGS. 2 and 3, including the control of the cache memory 3304 in the processor 3301 shown in FIG. is there.
  • the CPU 3302 creates transmission data 34a (step 3601).
  • the description will be made assuming that all of the transmission data 34a is cached in the cache memory 3304. However, depending on the size of the transmission data 34a and the creation time, only a part of the transmission data 34a is stored in the cache memory 3304. The other part of the transmission data 34 a may exist in the memory 3305.
  • the CPU 3302 writes the command 34b to the command queue 3400a.
  • the cache memory 3304 requests the control circuit 3307 to read the block including the address where the command 34b is written.
  • the control circuit 3307 reads the corresponding block on the memory 3305 from the memory 3305, sends it to the cache memory 3304, and the corresponding block is written on the cache memory 3304 (step 3602).
  • the CPU 3302 writes the command 34b in the portion (word) corresponding to the address where the command 34b is written in the corresponding block on the cache memory 3304 (step 3603). That is, the command 34 b is cached on the cache memory 3304.
  • the command 34b indicates a communication destination, a pointer to the transmission data 34a, and the like.
  • the CPU 3302 sends a transmission request indicating the position of the command 34b (address where the command 34b is written) to the inter-processor communication device 3303 (step 3604).
  • the inter-processor communication device 3303 When the inter-processor communication device 3303 receives the transmission request, the inter-processor communication device 3303 reads the command 34b using the control circuit 3307.
  • the control circuit 3307 issues an intervention shared request to the CPU bus 3308 and reads from the cache memory 3304 the block (corresponding block) including the address where the command 34b is written. Since the command 34b is cached on the cache memory 3304 and has been rewritten by the CPU 3302, the cache memory 3304 returns the corresponding block to the control circuit 3307 as a response.
  • the control circuit 3307 writes back the block (corresponding block) including the address where the command 34b is written to the memory 3305 (step 3605), and returns the command 34b to the inter-processor communication device 3303 (step 3606).
  • the inter-processor communication device 3303 reads the transmission data 34a using the control circuit 3307 using the pointer (address where the transmission data 34a is written) in the command 34b to the transmission data 34a.
  • the control circuit 3307 issues an intervention shared request to the CPU bus 3308, and reads a plurality of blocks (corresponding blocks) including the address where the transmission data 34a is written from the cache memory 3304.
  • a plurality of blocks including the address where the transmission data 34a is written from the cache memory 3304.
  • the control circuit 3307 writes back a plurality of blocks including the address where the transmission data 34a is written to the memory 3305 (step 3607), and passes the transmission data 34a to the inter-processor communication device 3303 (step 3608).
  • the inter-processor communication device 3303 creates a packet based on the transmission data 34a, and transmits the packet to the inter-processor network 3306 (Step 3609).
  • FIG. 5 is a time chart for explaining the transmission process shown in FIG.
  • FIG. 5 describes an operation when a cache miss occurs in the cache memory 3304 when the CPU 3302 writes the command 34b to the command queue 3400a.
  • a cache miss occurs because the command 34b from the cache memory 3304 is used for data access necessary for the operation after the previous command 34b was written at the address where the command 34b of the command queue 3400a was written. This is because the address written in is likely to be evicted.
  • a cache miss occurs in the writing of the command 34b from the CPU 3302 (step 3701), and the cache memory 3304 sends a block read request for the block including the address to which the command 34b is written to the control circuit 3307.
  • the control circuit 3307 reads the corresponding block from the memory 3305 and returns it to the cache memory 3304. Then, the corresponding block is written into the cache memory 3304 (step 3702).
  • the command 34b is written from the CPU 3302 to the cache memory 3304 (step 3703).
  • the control circuit 3307 In response to an instruction from the inter-processor communication device 3303 triggered by a transmission request from the CPU 3302 (step 3704), the control circuit 3307 reads the corresponding block including the address where the command 34b is written from the cache memory 3304. An intervention shared request is issued to 3304. Since the corresponding block is on the cache memory 3304 and has been rewritten by the CPU 3302, the corresponding block is replied from the cache memory 3304 to the control device 3307. The control circuit 3307 writes the corresponding block back to the memory 3305 (step 3705) and sends the command 34b to the inter-processor communication device 3303 (step 3706).
  • the inter-processor communication device 3303 refers to the command 34b and reads the corresponding block including the address where the transmission data 34a is written using the control circuit 3307.
  • the control circuit 3307 issues an intervention shared request for the corresponding block to the cache memory 3304. Since the corresponding block is on the cache memory 3304 and has been rewritten by the CPU 3302, the cache memory 3304 replies the corresponding block to the control circuit 3307.
  • the control circuit 3307 writes the corresponding block back to the memory 3305 (step 3707), and sends the transmission data 34a to the inter-processor communication device 3303 (step 3708).
  • FIG. 5 shows that it takes time to pass the command 34b between the CPU 3302 and the inter-processor communication device 3303 (period T3709).
  • the inter-processor communication device 3303 receives a packet from the inter-processor network 3306 (step 3801).
  • the inter-processor communication device 3303 writes the received data 35a in the packet on the memory 3305 using the control circuit 3307.
  • control circuit 3304b needs to perform the following processing.
  • the control circuit 3307 stores the block data in the cache memory 3304. Invalidation is requested (step 3802), and then the received data 35a is written into the memory 3305 (step 3803).
  • the control circuit 3307 When the write of the reception data 35a is a write to a part of the block (corresponding block) including the address where the reception data 35a is written, the control circuit 3307 writes the block to the cache memory 3304. Request intervention exclusive.
  • control circuit 3307 writes the received data 35a into the memory 3305 (step 3803).
  • the inter-processor communication device 3303 writes all of the reception data 35a into the memory 3305, and then writes the reception completion flag 35b into the memory 3305 using the control circuit 3307.
  • the block (corresponding block) including the address where the reception completion flag 35 b is written is on the cache memory 3304.
  • the writing of the reception completion flag 35b is a writing to a part of the block (corresponding block) including the address where the reception completion flag 35b is written.
  • the control circuit 3307 first reads out the block (corresponding block) in which the reception completion flag 35b is written to the cache memory 3304 with the intervention exclusive request. As described above, the corresponding block is on the cache memory 3304. If the cache memory 3304 has been rewritten by the CPU 3302, the corresponding block is replied to the control circuit 3307 to invalidate the corresponding block. Then, the control circuit 3307 writes back the replied block to the memory 3305 (step 3805). If the data has not been rewritten by the CPU 3302, the cache memory 3304 invalidates the corresponding block and notifies the control circuit 3307 that there is no data reply. Thereafter, the control circuit 3307 writes the reception completion flag 35b in the memory 3305 (step 3806).
  • the CPU 3302 Since the CPU 3302 is polling the reception completion flag 35b, a cache miss occurs at the time of reading immediately after the reception completion flag 35b is written by the inter-processor communication device 3303, and the reception completion flag 35b is written in the cache memory 3304.
  • the block including the address is read by making a block read request to the control circuit 3307.
  • the control circuit 3307 reads the corresponding block from the memory 3305 and returns it to the cache memory 3304. Then, the cache memory 3304 writes the corresponding block (step 3807).
  • the CPU 3302 reads the reception completion flag 35b from the cache memory 3304 (step 3808).
  • the CPU 3302 refers to the reception completion flag 35b to know that the reception data 35a has been written, and reads the reception data 35a.
  • the received data 35a is not on the cache memory 3304 but on the memory 3305, a cache miss occurs when reading from the cache memory 3304, and the block including the address where the received data 35a is written is read from the memory 3305. Then, it is written in the cache memory 3304 (step 3809), and the CPU 3302 reads the received data 35a from the cache memory 3304 (step 3810).
  • FIG. 7 is a time chart for explaining the reception process shown in FIG.
  • the inter-processor communication device 3303 writes the received data 35a in the memory 3305 using the control circuit 3307.
  • the control circuit 3307 invalidates the block including the address to which the reception data 35a is written from the cache memory 3304 to the memory 3305 or invalidates the block (step 3901). Write to the memory 3305 (step 3902).
  • the inter-processor communication device 3303 writes the reception completion flag 35b in the memory 3305 using the control circuit 3307.
  • the block including the address to which the reception completion flag 35 b is written is on the cache memory 3304.
  • control circuit 3307 invalidates the block including the address to which the reception completion flag 35b is written from the cache memory 3304 to the memory 3305 (step 3903) or invalidates the block and stores the reception completion flag 35b in the memory. Write to 3305 (step 3904).
  • the CPU 3302 reads the reception completion flag 35b on the cache memory 3304 (step 3906).
  • the CPU 3302 confirms that the reception data 35a is written in the memory 3305 by referring to the reception completion flag 35b, and then reads the reception data 35a.
  • the CPU 3302 reads the received data 35a from the cache memory 3304 (step 3908).
  • the write latency can be concealed by issuing a plurality of write requests in advance.
  • the CPU 3302 reads the reception data 35a, it is possible to conceal the read latency by issuing a plurality of read requests in advance.
  • Patent Documents 3 to 6 describe technologies in which CPUs communicate with each other in a parallel computer system. Hereinafter, problems caused by these techniques will be described.
  • the transmission technique described in Patent Document 4 and the transmission technique described in Patent Document 6 employ a method in which the CPU directly throws a command to the inter-processor communication device, so that the CPU and the inter-processor communication device cannot operate independently. That is, parallel processing of calculation and communication cannot be performed.
  • a method of transmitting a transmission request from the CPU to the inter-processor communication device using a command queue is necessary for transmission.
  • a method of using the reception completion flag to notify completion of data reception from the inter-processor communication device to the CPU is required.
  • the processing described with reference to FIGS. 4 and 6 is performed.
  • the processing for transmitting a command from the CPU to the interprocessor communication device and the processing from the interprocessor communication device to the CPU are performed. It takes time to transmit the reception completion flag.
  • An object of the present invention is to provide a cache memory, an information processing apparatus, and a cache memory control method that solve the above-described problems.
  • the cache memory of the present invention is a cache memory connected to a CPU, a communication device that performs communication between the CPU and another CPU, and a storage device that stores data in association with any of a plurality of addresses. And a data storage unit having a plurality of words to which data from the CPU and the communication device can be written, and an address individually associated with each of the plurality of words among the plurality of addresses. Address storage means, a write command, an arbitrary address among the plurality of addresses, and write data from the communication device, and the address is stored in the address storage means.
  • the write data is written to the word corresponding to the address, and the communication device
  • the address is stored in the address storage means in the situation where the read command and the arbitrary address are received
  • the data is read from the word corresponding to the address and provided to the communication device
  • the address is not stored in the address storage means
  • the data associated with the address is read from the storage device and provided to the communication device, and the data is written to the data storage means. And no control means.
  • An information processing apparatus includes the above cache memory, a CPU connected to the cache memory, a communication device connected to the cache memory and executing communication between the CPU and another CPU, and the cache memory.
  • the cache memory control method of the present invention includes a storage device that is connected and stores data in association with any of a plurality of addresses.
  • a cache memory control method of the present invention includes a CPU and a communication device that performs communication between the CPU and another CPU.
  • a data storage means connected to a storage device that stores data in association with any one of a plurality of addresses, and having a plurality of words in which data from the CPU and the communication device can be written
  • FIG. 1 is a block diagram showing a configuration of a processor 3301 of a general parallel computer.
  • FIG. 2 is an explanatory diagram for explaining a transmission process of communication between processors of a general parallel computer.
  • FIG. 3 is an explanatory diagram for explaining reception processing of communication between processors of a general parallel computer.
  • FIG. 4 is an explanatory diagram for explaining transmission processing of communication between processors of a general parallel computer.
  • FIG. 5 is a time chart for explaining the transmission processing shown in FIG.
  • FIG. 6 is an explanatory diagram for explaining reception processing of communication between processors of a general parallel computer.
  • FIG. 7 is a time chart for explaining the reception process shown in FIG.
  • FIG. 8 is a block diagram showing the parallel computer processor 100 according to the first embodiment of this invention.
  • FIG. 9A is a diagram for explaining an operation when data read by the CPU 101 is in the shared cache memory 103.
  • FIG. 9B is a diagram for explaining the operation when the data read by the CPU 101 is not in the shared cache memory 103.
  • FIG. 10A is a diagram for explaining an operation when a block corresponding to data (address) to be written by the CPU 101 exists in the shared cache memory 103.
  • FIG. 10B is a diagram for explaining an operation when a block corresponding to data (address) to be written by the CPU 101 is not in the shared cache memory 103.
  • FIG. 11A is a diagram for explaining the operation when the data read by the inter-processor communication device 102 is on the shared cache memory 103.
  • FIG. 11B is a diagram for explaining an operation when data read by the inter-processor communication apparatus 102 is not in the shared cache memory 103.
  • FIG. 12A is a diagram for explaining an operation when a block corresponding to data (address) written by the inter-processor communication apparatus 102 is on the shared cache memory 103.
  • FIG. 12B is a diagram for explaining an operation when a block corresponding to data (address) written by the inter-processor communication apparatus 102 is not in the shared cache memory 103.
  • FIG. 13 is an explanatory diagram for describing a transmission process according to the first embodiment.
  • FIG. 14 is a time chart for explaining the transmission process shown in FIG.
  • FIG. 15 is an explanatory diagram for explaining a reception process in the first embodiment.
  • FIG. 16 is a time chart for explaining the reception process shown in FIG.
  • FIG. 17A is a diagram for explaining the operation when a block corresponding to the writing of the Write2 instruction from the inter-processor communication device 102A exists on the shared cache memory 103A.
  • FIG. 17B is a diagram for explaining an operation when a block corresponding to the writing of the Write2 instruction from the inter-processor communication apparatus 102A does not exist on the shared cache memory 103A.
  • FIG. 18 is a block diagram showing the shared cache memory 103A.
  • FIG. 19 is an explanatory diagram showing an example of the bit string 5 indicating the state stored in the address array 103Ab and other information.
  • FIG. 20 is an explanatory diagram showing validity / invalidity of the i-th word based on the values of BV5b and W (i) 5a shown in FIG.
  • FIG. 21 is a flowchart for explaining the operation of the cache control unit 3.
  • FIG. 22 is a flowchart for explaining processing when the access information 11 indicates access from the inter-processor communication device 102A.
  • FIG. 23 is a flowchart for explaining new block allocation processing.
  • FIG. 24A is an explanatory diagram showing an example of a command for reading the entire block from the memory 104.
  • FIG. 24B is an explanatory diagram showing an example of a command reply for reading the entire block from the memory 104.
  • FIG. 24C is an explanatory diagram showing an example of a command for the shared cache memory 103A to write the entire block into the memory 104.
  • FIG. 24D is an example of a command for writing only the data of the word whose W (i) 5a is 1 among the words in the block data 1704 from the shared cache memory 103A to the memory 104.
  • FIG. 24E is an example of a command for reading one word from the memory 104.
  • FIG. 24F is a diagram illustrating an example of a data reply when one word is read from the memory 104.
  • FIG. 24G shows a command for writing 1-word data 1711 to the memory address 1710 of the memory 104.
  • FIG. 25 is an explanatory diagram for explaining the operation when a cache miss occurs when one word is written from the CPU 101A or the inter-processor communication device 102A.
  • FIG. 26 is an explanatory diagram for explaining an operation when a word is written from the CPU 101A or the inter-processor communication device 102A in the second word of the same block as in FIG. 25 and a cache hit occurs.
  • FIG. 27 is an explanatory diagram for explaining the operation when the CPU 101A or the inter-processor communication device 102A reads the fourth word of the same block as in FIG. 26 and hits the cache.
  • FIG. 28 is an explanatory diagram showing the operation when the CPU 101A or the inter-processor communication device 102A reads the sixth word of the same block as in FIG. 27 and a cache miss occurs.
  • FIG. 29 is an explanatory diagram showing an operation when the CPU 101A or the inter-processor communication device 102A reads the first word of the same block as FIG. 28 and hits the cache.
  • FIG. 30 is an explanatory diagram showing an operation when an entry in the same block as that in FIG. 29 is to be replaced.
  • FIG. 31 is an explanatory diagram showing an operation when the CPU 101A reads a certain word and makes a cache miss.
  • FIG. 32 is an explanatory diagram showing an operation when an entry in the same block as that in FIG. 31 is to be replaced.
  • FIG. 33 is an explanatory diagram showing an operation when an entry of a certain block is a replacement target.
  • FIG. 34 is an explanatory diagram for explaining an operation when a cache miss occurs when one word is written by the Write1 instruction from the inter-processor communication apparatus 102A.
  • FIG. 35 is an explanatory diagram showing an operation when the inter-processor communication device 102A reads a certain word and makes a cache miss.
  • FIG. 36 is an explanatory diagram for describing a transmission process according to the second embodiment.
  • FIG. 37 is a time chart for explaining the transmission processing shown in FIG.
  • FIG. 38 is an explanatory diagram for describing a reception process according to the second embodiment.
  • FIG. 39 is a time chart for explaining the reception process shown in FIG.
  • FIG. 8 is a block diagram showing a parallel computer processor (hereinafter simply referred to as “processor”) 100 according to the first embodiment of this invention.
  • processor parallel computer processor
  • the processor 100 can be generally called an information processing apparatus.
  • the processor 100 includes a CPU 101, an interprocessor communication device 102, a shared cache memory 103, and a memory 104.
  • the shared cache memory 103 includes a data array 103a, an address array 103b, and a control unit 103c.
  • CPU 101 can generally be referred to as a computing device.
  • the CPU 101 performs various calculations.
  • the inter-processor communication device 102 communicates with another processor 100 via the inter-processor network 105. Specifically, the inter-processor communication device 102 performs communication between the CPU 101 in the same processor 100 and a CPU (other CPU) in another processor.
  • the shared cache memory 103 can be generally called a cache memory.
  • the shared cache memory 103 is connected to the CPU 101, the interprocessor communication device 102, and the memory 104.
  • the memory 104 can generally be called a storage device or a main storage device.
  • the memory 104 stores data in association with any of a plurality of addresses that the memory 104 has.
  • the data array 103a can generally be called data storage means.
  • the data array 103a has a plurality of blocks (data entries) composed of a plurality of words 103a1.
  • a plurality of words can write data from the CPU 101 and can also write data from the inter-processor communication device 102.
  • the address array 103b can be generally called address storage means.
  • the address array 103b stores addresses individually associated with the plurality of words 103a1 in the data array 103a among the plurality of addresses of the memory 104.
  • the address array 103b stores addresses individually associated with the plurality of words 103a1 in the data array 103a among the plurality of addresses of the memory 104 in units of blocks including a predetermined number of addresses.
  • Control unit 103c can be generally referred to as control means.
  • the control unit 103 c receives a read command (hereinafter referred to as “read command”) from the inter-processor communication device 102 and an arbitrary address (hereinafter referred to as “first address”) among a plurality of addresses of the memory 104.
  • read command a read command
  • first address an arbitrary address
  • the control unit 103c reads data from the word in the data array 103a corresponding to the first address.
  • the control unit 103c reads the data associated with the first address from the memory 104 and does not write the data to the data array 103a. At this time, the control unit 103c does not write each address of the block including the first address to the address array 103b.
  • the control unit 103c also sends a write command (hereinafter referred to as “write command”) from the inter-processor communication device 102 and an arbitrary address (hereinafter referred to as “second address”) among a plurality of addresses of the memory 104. ) And the write data, the operation is as follows.
  • the control unit 103c When the second address is stored in the address array 103b, the control unit 103c writes the data for writing to the word in the data array 103a corresponding to the second address.
  • the control unit 103c writes the write data in the memory 104 in association with the second address, and the write data is stored in the data array. 103a is not written. At this time, the control unit 103c does not write each address of the block including the second address to the address array 103b.
  • FIG. 9A is a diagram for explaining the operation when the data read by the CPU 101 is on the shared cache memory 103.
  • the control unit 103c receives an arbitrary address (hereinafter referred to as “third address”) included in the memory 104 and a load command from the CPU 101, the third address is stored in the address array 103b.
  • third address an arbitrary address included in the memory 104 and a load command from the CPU 101.
  • control unit 103c reads data from the word in the data array 103a corresponding to the third address and passes the data to the CPU 101 (step 2A01).
  • FIG. 9B is a diagram for explaining the operation when the data read by the CPU 101 is not in the shared cache memory 103.
  • control unit 103c allocates a block (corresponding block) including the third address on the shared cache memory 103 (specifically, the data array 103a and the address array 103b) (step 2B01).
  • control unit 103c reads the data of the corresponding block from the memory 104, and writes the data of the corresponding block to the shared cache memory 103 (specifically, the data array 103a) (step 2B02). At this time, the control unit 103c writes the address of the corresponding block in the address array 103b.
  • control unit 103c reads data corresponding to the third address from the shared cache memory 103 (specifically, the data array 103a) (step 2B03).
  • FIG. 10A is a diagram for explaining an operation when a block corresponding to data (address) written by the CPU 101 is on the shared cache memory 103.
  • control unit 103c receives an arbitrary address (hereinafter referred to as “fourth address”), a store instruction, and write data among a plurality of addresses of the memory 104 from the CPU 101.
  • fourth address an arbitrary address
  • the operation when the fourth address is stored in the address array 103b will be described.
  • control unit 103c writes the write data to the word of the block in the data array 103a corresponding to the fourth address (step 3A01).
  • FIG. 10B is a diagram for explaining an operation when a block corresponding to data (address) written by the CPU 101 is not in the shared cache memory 103.
  • control unit 103c allocates a block (corresponding block) including the fourth address on the shared cache memory 103 (specifically, the data array 103a and the address array 103b) (step 3B01).
  • control unit 103c reads the data of the corresponding block from the memory 104, and writes the data of the corresponding block to the corresponding block assigned to the shared cache memory 103 (specifically, the data array 103a) (step 3B02). ). At this time, the control unit 103c writes the address of the corresponding block in the address array 103b.
  • control unit 103c writes the write data to the word corresponding to the fourth address among the words in the corresponding block of the shared cache memory 103 (specifically, the data array 103a) (step 3B03).
  • FIGS. 11A and 11B processing for a read command from the inter-processor communication device 102 will be described with reference to FIGS. 11A and 11B.
  • FIGS. 11A and 11B the same components as those shown in FIG. 11A and 11A, for convenience of explanation, the positional relationship between the data array 103a and the address array 103b is reversed with respect to the positional relationship shown in FIG.
  • FIG. 11A is a diagram for explaining the operation when the data read by the inter-processor communication device 102 is on the shared cache memory 103.
  • control unit 103c reads data from the word in the data array 103a corresponding to the first address (step 4A01).
  • FIG. 11B is a diagram for explaining the operation when the data read by the inter-processor communication device 102 is not in the shared cache memory 103.
  • control unit 103c directly reads the data associated with the first address from the memory 104 (step 4B01). At this time, the control unit 103c does not allocate a block including the first address to the shared cache memory 103 (specifically, the data array 103a and the address array 103b), and transfers the data associated with the first address to the shared cache. The data is not written to the memory 103 (specifically, the data array 103a).
  • FIGS. 12A and 12B Next, processing for a write command from the inter-processor communication apparatus 102 will be described with reference to FIGS. 12A and 12B.
  • 12A and 12B the same components as those shown in FIG. 8 are denoted by the same reference numerals. 12A and 12B, the positional relationship between the data array 103a and the address array 103b is reversed with respect to the positional relationship shown in FIG. 8 for convenience of explanation.
  • FIG. 12A is a diagram for explaining the operation when the block corresponding to the data (address) written by the inter-processor communication device 102 is on the shared cache memory 103.
  • the second address is stored in the address array 103b in a situation where the control unit 103c receives a second address, a write command (write command), and write data from the inter-processor communication device 102.
  • the operation in this case will be described.
  • control unit 103c writes the write data to the word of the block in the data array 103a corresponding to the second address (step 5A01).
  • FIG. 12B is a diagram for explaining the operation when the block corresponding to the data (address) written by the inter-processor communication device 102 is not in the shared cache memory 103.
  • the second address is not stored in the address array 103b when the control unit 103c receives the second address, the write command (write command), and the write data from the inter-processor communication device 102.
  • the operation in this case will be described.
  • control unit 103c writes the write data directly in the memory 104 in association with the second address (step 5A01). At this time, the control unit 103c writes the write data associated with the second address without assigning the block including the second address to the shared cache memory 103 (specifically, the data array 103a and the address array 103b). Absent.
  • FIG. 13 is an explanatory diagram for explaining a transmission process according to the first embodiment.
  • the same components as those shown in FIG. 13 are identical to FIG. 13, the same components as those shown in FIG. 13, the same components as those shown in FIG. 13, the same components as those shown in FIG. 13, the same components as those shown in FIG. 13, the same components as those shown in FIG. 13, the same components as those shown in FIG. 13, the same components as those shown in FIG. 13, the same components as those shown in FIG.
  • Transmission data 6a can be generally referred to as communication data.
  • the CPU 101 transmits a store command, transmission data 6a, and an address for writing the transmission data 6a to the control unit 103c.
  • the control unit 103c writes the transmission data 6a to the shared cache memory 103 or the memory 104 based on the store command and the address for writing the transmission data 6a.
  • Command 6b can be generally referred to as a communication command.
  • control unit 103c reads the data of the corresponding block including the address for writing the command 6b from the memory 104, and writes the data of the corresponding block to the shared cache memory 103 (data array 103a) (step 602).
  • control unit 103c writes the command 6b to the word corresponding to the address to which the command 6b is written among the words in the corresponding block (step 603). Therefore, in this case, the command 6 b is cached on the shared cache memory 103.
  • the command 6b shows a communication destination, a pointer to the transmission data 6a, and the like.
  • the CPU 101 sends a transmission request indicating the position of the command 6b to the inter-processor communication apparatus 102 (step 604).
  • the inter-processor communication apparatus 102 When the inter-processor communication apparatus 102 receives the transmission request, the inter-processor communication apparatus 102 reads the command 6b using the control unit 103c.
  • the control unit 103c Since the command 6b is cached on the shared cache memory 103, the control unit 103c reads the command 6b from the data array 103a (step 605). At this time, the control unit 103 c does not perform write back to the memory 104.
  • the inter-processor communication device 102 reads the transmission data 6a using the control unit 103c using the pointer to the transmission data 6a in the command 6b.
  • the control unit 103c since all of the transmission data 6a does not exist on the shared cache memory 103, a cache miss occurs, and the control unit 103c reads the transmission data 6a from the memory 104 (step 606). At this time, the control unit 103c transmits the transmission data 6a (specifically, the data of the block including the address where the transmission data 6a is written) to the shared cache memory 103 (specifically, the data array 103a and the address array 103b). ) Is not written.
  • the inter-processor communication device 102 creates a packet using the transmission data 6a and transmits the packet to the inter-processor network 105 (step 607).
  • the read latency of that portion is shortened.
  • FIG. 14 is a time chart for explaining the transmission process shown in FIG. 14, the same components as those shown in FIG. 14, the same components as those shown in FIG.
  • the control unit 103c When a cache miss occurs due to the writing of the command 6b from the CPU 101, the control unit 103c reads the block data including the address to which the command 6b is written from the memory 104, and the data of the block is read from the shared cache memory 103 (data array 103a). (Step 701). At this time, the control unit 103c writes the address of the block in the address array 103b.
  • control unit 103c writes a command to the shared cache memory 103 (data array 103a) (step 702).
  • the inter-processor communication device 102 In response to a transmission request from the CPU 101 (step 703), the inter-processor communication device 102 reads the command 6b from the shared cache memory 103 (data array 103a) using the control unit 103c (step 704).
  • the inter-processor communication device 102 reads the transmission data 6a from the memory 104 using the control unit 103c (step 705).
  • the inter-processor communication device 102 when the inter-processor communication device 102 reads the transmission data 6a, it is possible to conceal the read latency by issuing a plurality of read requests in advance.
  • the control unit 103c receives the first address and the read command from the inter-processor communication device 102, and when the first address is stored in the address array 103b. Reading data from the word of the data array 103a corresponding to the first address, and reading the data associated with the first address from the memory 104 if the first address is not stored in the address array 103b; and The data is not written to the data array 103a.
  • FIG. 15 is an explanatory diagram for explaining a reception process in the first embodiment.
  • the same components as those shown in FIG. 8 are denoted by the same reference numerals.
  • the inter-processor communication device 102 receives a packet from the inter-processor network 105 (step 801).
  • the inter-processor communication device 102 writes the received data 8a in the packet on the memory 104 using the control unit 103c.
  • the reception data 8a can be generally referred to as write data.
  • the inter-processor communication apparatus 102 writes the reception completion flag 8b using the control unit 103c after the control unit 103c writes all of the reception data 8a to the memory 104.
  • the reception completion flag 8b can be generally referred to as write data.
  • the reception completion flag 8 b since the reception completion flag 8 b is considered to be polled by the CPU 101, the block including the address of the reception completion flag 8 b exists on the shared cache memory 103.
  • control unit 103c writes the reception completion flag 8b in the shared cache memory 103 (step 803).
  • the CPU 101 Since the CPU 101 is polling the reception completion flag, the CPU 101 reads the reception completion flag 8b rewritten by the inter-processor communication device 102 from the shared cache memory 103 using the control unit 103c (step 804).
  • the CPU 101 knows that the reception data 8a has been written by referring to the reception completion flag 8b, and reads the reception data 8a using the control unit 103c.
  • the control unit 103c Since the received data 8a is in the memory 104, a cache miss occurs when the received data 8a is read from the CPU 101, and the control unit 103c reads the block data including the address of the received data 8a from the memory 104, The data is written into the memory 103 (data array 103a) (step 805), and the received data 8a is read from the shared cache memory 103 (data array 103a) (step 806).
  • the latency of writing the reception data 8a from the inter-processor communication device 102 and reading of the reception data 8a from the CPU 101 is shortened.
  • FIG. 16 is a time chart for explaining the reception process shown in FIG. In FIG. 16, the same components as those shown in FIG. 8 are denoted by the same reference numerals.
  • control unit 103c Since all the blocks including the address of the received data 8a are not in the shared cache memory 103, the control unit 103c writes the received data 8a from the inter-processor communication device 102 in the memory 104 (step 901).
  • the inter-processor communication device 102 writes the reception completion flag 8b using the control unit 103c.
  • the block including the address of the reception completion flag 8 b is on the shared cache memory 103.
  • control unit 103c writes the reception completion flag 8b in the shared cache memory 103 (data array 103c) (step 902).
  • the CPU 101 reads the reception completion flag 8b from the shared cache memory 103 using the control unit 103c (step 903).
  • the CPU 101 confirms that the reception data 8a has been written in the memory 104 by referring to the reception completion flag 8b, and reads the reception data 8a.
  • the control unit 103 c reads the block data including the address of the received data 8 a from the memory 104, and the shared cache memory 103 (Step 904).
  • the CPU 101 reads the received data 8a from the shared cache memory 103 using the control unit 103c (step 905).
  • the write latency can be concealed by issuing a plurality of write requests in advance.
  • the control unit 103c receives the second address, the write command, and the write data from the inter-processor communication device 102, and the second address is stored in the address array 103a. If the second address is not stored in the address array 103a, the write data is written to the memory 104 in association with the second address. And the write data is not written to the data array 103a.
  • the command 6b is passed from the CPU 101 to the inter-processor communication device 102 at the time of transmission, and the inter-processor communication device 102 to the CPU 101 at the time of reception. It is possible to reduce the processing time for transmitting the reception completion flag 8b.
  • the inter-processor communication apparatus 102 it is possible to reduce the time required for the inter-processor communication apparatus 102 to read the command 6b from the command queue 104a on the memory 104 or the shared cache memory 103 during transmission. It becomes possible to provide high inter-processor communication performance.
  • the time required for the CPU 101 to read the reception completion flag 8b from the shared cache memory 103 can be shortened, and high inter-processor communication performance is provided. Is possible.
  • the CPU 101 and the inter-processor communication device 102 share the shared cache memory 103.
  • control unit 103c allocates a block to the data array 103a and the address array 103b when a cache miss occurs in a situation where an instruction from the CPU 101 is accepted.
  • a miss occurs, no block is assigned to the data array 103a and the address array 103b.
  • the control unit 103c can read / write data from / to a block on the shared cache memory 103 when a cache hit occurs in a state where an instruction from the inter-processor communication device 102 is received, but the command from the inter-processor communication device 102 can be read / written.
  • the memory 104 is directly read / written.
  • the first effect of the present embodiment is that the inter-processor communication apparatus 102 directly reads the command 6b written on the shared cache memory 103 by the CPU 101, so that the inter-processor communication apparatus 102 reads the command 6b. Can be shortened.
  • the second effect is that the inter-processor communication device 102 writes the reception completion flag 8b on the shared cache memory 103, so that the time for the CPU 101 to read the reception completion flag 8b can be shortened. Note that the reception completion flag 8 b is polled by the CPU 101 and exists in the shared cache memory 103.
  • FIG. 17A and 17B are block diagrams showing a parallel computer processor (hereinafter simply referred to as “processor”) 100A according to the second embodiment of the present invention.
  • processor parallel computer processor
  • the processor 100A can be generally called an information processing apparatus.
  • the processor 100A includes a CPU 101A, an inter-processor communication device 102A, a shared cache memory 103A, and a memory 104.
  • Shared cache memory 103A includes a data array 103Aa, an address array 103Ab, and a control unit 103Ac.
  • control unit 103Ac performs the shared cache at the time of writing from the CPU 101A or at the time of writing using the second write instruction (Write2 instruction: predetermined write instruction) from the inter-processor communication device 102A.
  • the memory 103A data array 103Aa and address array 103Ab
  • the following operation is executed.
  • the control unit 103Ac allocates a new block to the shared cache memory 103A (the data array 103Aa and the address array 103Ab), and reads the write data from the memory 104 without reading the data of the block. Information is written to the word corresponding to the write address, and information indicating the word in the new block in which the data has been written is stored in the address array 103Ab.
  • the operation of the shared cache memory 103A in response to the first write command (Write1 command: write command) from the inter-processor communication device 102A is the same as the shared cache at the time of writing from the inter-processor communication device 102 according to the first embodiment.
  • the operation is the same as that of the memory 103.
  • the inter-processor communication device 102A uses the second write command (Write2 command) only when writing the reception completion flag. Therefore, the inter-processor communication device 102A uses the first write command (Write1 command) for writing the received data.
  • the data array 103Aa can be generally referred to as data storage means
  • the address array 103Ab can be generally referred to as address storage means
  • the control unit 103Ac can be generally referred to as control means. it can.
  • FIG. 17A and 17B are diagrams for explaining the operation of the shared cache memory 103A when a second write command (Write2 command), a second address, and write data are received from the inter-processor communication device 102A.
  • FIG. 17A and 17B are diagrams for explaining the operation of the shared cache memory 103A when a second write command (Write2 command), a second address, and write data are received from the inter-processor communication device 102A.
  • 17A and 17B illustrate the operation of the shared cache memory 103A when the second write command is received from the inter-processor communication device 102A, but the shared cache memory 103A when the store command is received from the CPU 101A. The operation is the same.
  • FIG. 17A is a diagram for explaining the operation when a block corresponding to the writing of the Write2 instruction from the inter-processor communication device 102A exists on the shared cache memory 103A.
  • the second address is stored in the address array 103Ab in a situation where the control unit 103Ac receives the second address, the write2 command (second write command), and the write data from the inter-processor communication device 102A.
  • control unit 103Ac writes the write data to the word of the block in the data array 103Aa corresponding to the second address (step 10A01). Then, the control unit 103Ac stores in the address array 103Ab that the write data has been written in the word corresponding to the second address.
  • FIG. 17B is a diagram for explaining an operation when a block corresponding to the writing of the Write2 instruction from the inter-processor communication device 102A does not exist on the shared cache memory 103A.
  • control unit 103Ac allocates a block including the second address on the shared cache memory 103A (the data array 103Aa and the address array 103Ab) (step 10B01).
  • control unit 103Ac writes the write data to the word corresponding to the second address in the block (step 10B02).
  • control unit 103Ac stores in the address array 103Ab that the write data has been written in the word corresponding to the second address. Note that the control unit 103Ac does not read the block data from the memory 104 when allocating the block.
  • FIG. 18 is a block diagram showing the shared cache memory 103A.
  • the shared cache memory 103A is connected to the CPU 101A, the inter-processor communication device 102A, and the memory 104.
  • the shared cache memory 103A includes a data array 103Aa, an address array 103Ab, an address register 1, a comparator 2, and a cache control unit 3.
  • the address register 1, the comparison unit 2, and the cache control unit 3 are included in the control unit 103Ac.
  • the address register 1 stores an address requested by the CPU 101A or an address requested by the inter-processor communication device 102A.
  • the address stored in the address register 1 is represented by upper m bits 9, middle n bits 7, and lower k bits 12.
  • the upper m bit 9 data is provided to the comparator 2, and the middle n bit 7 data is provided to the address array 103Ab and the data array 103Aa.
  • the address array 103Ab is a memory having 2 n entries (hereinafter referred to as “address entries”).
  • the data array 103Aa is also a memory having 2 n entries (hereinafter referred to as “data entries”).
  • the data array 103Aa has a plurality of blocks (data entries) composed of a plurality of words.
  • Each address entry has a one-to-one correspondence with each data entry based on middle n bit 7 data.
  • Each address entry has an offset corresponding to a value that can be represented by middle n bit 7 data. Thus, each address entry corresponds to the middle n bits 7.
  • the offset is generally called an index.
  • the address array 103Ab is used as an index of data (block data) stored in block units in the data entry of the data array 103Aa.
  • One address entry of the address array 103Ab has, for each offset corresponding to the middle n bits 7, an upper m bit 4 of the address and a bit string (hereinafter referred to as “state other bit string” or “ And 5).
  • the upper m bits 4 of the address are a part of the block data address (block address).
  • the portion storing the upper m bits 4 for each offset corresponding to the middle n bits 7 is an example of a storage unit.
  • the storage unit stores an address group (upper m-bit data and middle n-bit data) of the memory 104 corresponding to a data entry in which data is stored in at least one word.
  • This address group means a plurality of addresses in which upper m bits and middle n bits of data are specified, and lower k bits of data have arbitrary values.
  • the part of the address array 103Ab that stores the bit string 5 includes a word state storage unit 5a and a block state storage unit 5b (see FIG. 19).
  • the word state storage unit 5a can generally be called word state storage means.
  • the word state storage unit 5a associates the word state information (W (1) to W (8)) for specifying the word in which the data from the CPU 101A or the inter-processor communication device 102A is written with the word. Store in association with the address.
  • a value of 1 is word information indicating a word in which data is written in the cache control unit 3.
  • the block state storage unit 5b can be generally referred to as block state storage means.
  • Block state information indicating whether or not data is stored is stored.
  • bit string 5 Details of the bit string 5 will be described later.
  • the address array 103Ab When the address array 103Ab receives the middle n-bit 7 data as the offset 8, the address array 103Ab outputs the upper m-bit 4 data and the bit string 5 data from the address entry corresponding to the offset 8.
  • the upper m bit 4 data is provided to the comparator 2, and the bit string 5 data is provided to the cache control unit 3.
  • One data entry of the data array 103Aa stores 2 k-byte block data (hereinafter also simply referred to as “block”) 6.
  • each data entry has a one-to-one correspondence with each address entry
  • a block in each data entry also has a one-to-one correspondence with each address entry.
  • the comparator 2 compares the upper m bit 4 data from the address array 103Ab with the upper m bit 9 data from the address register 1.
  • the block including the data designated by the address in the address register 1 is stored in the shared cache memory (specifically, the address array 103Ab and the data Array 103Aa).
  • the cache control unit 3 uses the shared cache memory 103A (specifically, the address array 103Ab and the data array 103Aa). To control.
  • the access information 11 indicates the access source (CPU 101A or inter-processor communication device 102A) and access contents (each command).
  • the control unit 103Ac controls the operation of the shared cache memory 103A.
  • the control unit 103Ac receives, for example, a write command, an address, and data from the CPU 101A.
  • the control unit 103Ac receives a first write command (Write1 command), an address, and data from the inter-processor communication device 102A.
  • the control unit 103Ac receives, for example, a second write command (Write2 command), an address, and data from the inter-processor communication device 102A.
  • the address received together with the write command corresponds to the address array 103Ab (specifically, the middle n bit 7). If there is not in the portion storing the upper m bits 4 for each offset to be performed, one of a plurality of blocks in the data array 103Aa is assigned as a writing block.
  • the control unit 103Ac associates any word in the write block with the address without reading the data of the block including the address received together with the write command from the memory 104, and writes the write command to the word. Write the accepted data.
  • the control unit 103Ac receives a read command and an address from the CPU 101A, for example. Also, the control unit 103Ac receives a read command (read command) and an address from the inter-processor communication device 102A, for example.
  • W (i) 1
  • a read command a read command from the CPU 101A or a read command from the inter-processor communication apparatus 102A
  • BV block state information
  • the word in the data array 103Aa specified from the address Read data from.
  • control unit 103Ac reads data in the block including the address received together with the read command from the memory 104.
  • control unit 103Ac refers to the word state storage unit 5a and specifies one or more words in which data is not written in the block from the words in the data array 103Aa.
  • the control unit 103Ac writes the block data read from the memory 104 only to the specified word or words.
  • control unit 103Ac reads from the memory 104 into the block state storage unit 5b one or more words in which data is not written from the CPU 101A or the inter-processor communication device 102A among the words in the block.
  • Block state information (BV 1) indicating that stored data is stored.
  • control unit 103Ac When the control unit 103Ac receives a read command and an address, the control unit 103Ac refers to the word state storage unit 5a and the block state storage unit 5b to determine whether a cache hit or a cache miss has occurred.
  • the control unit 103Ac writes only the data of one or more specified words in the block in the data array 103Aa to the corresponding block in the memory 104.
  • control unit 103Ac refers to the word state storage unit 5a, specifies one or more words in which data is written in the writing block, and data in the specified one or more words Are written back to the corresponding block in the memory 104.
  • the control unit 103Ac refers to the word state storage unit 5a and the block state storage unit 5b, and When data is written to the word from the CPU 101A or the inter-processor communication device 102A or a block is read once from the memory 104, the entire block is written back to the corresponding block in the memory 104. Otherwise, the control unit 103Ac specifies one or more words in which data is written in the block, and only the data in the specified one or more words is stored in the memory 104. Write back to the corresponding block.
  • a 64-byte block consists of 8 words. One word is 8 bytes.
  • a direct-mapped cache memory is shown as the shared cache memory 103A, but a set-associative cache memory may be used.
  • the address array 103Ab, the data array 103Aa, and the comparator 2 are required for the number of ways.
  • the address register 1 stores the address indicated in the access. This address may be a logical address or a physical address.
  • this address will be described as a physical address converted from a virtual address by some means of address conversion.
  • the lower 6 (k) bit 12 data in the address register 1 is the address of a word in the block of the data array 103Aa.
  • the middle 10 (n) bit 7 data is used as the offset 8 of the address array 103Ab, and the data in the address entry of the address array 103Ab (upper 48 (m) bit 4 data and bit string 5 data) is read. It is.
  • the comparator 2 compares the read upper 48 (m) bit 4 data with the upper 48 (m) bit 9 data in the address register 1 and designates it by the address in the address register 1. It is determined whether or not a block including the processed data already exists in the shared cache memory 103A.
  • the cache control unit 3 receives the comparison result 10 of the comparator 2, the access information 11, and the bit string 5.
  • the cache control unit 3 determines the operation of the shared cache memory 103A based on the comparison result 10, the access information 11, and the bit string 5.
  • FIG. 19 is an explanatory diagram showing an example of the bit string 5 stored in the address array 103Ab.
  • W (1) to W (8) 5a correspond to the address of each word of the block data of the data array 103Aa, that is, each word. Since the block data consists of 8 words, W (1) corresponds to the first word of the block data 204, W (2) is the second word, W (3) is the third word, and W (4) is The fourth word, W (5) corresponds to the fifth word, W (6) corresponds to the sixth word, W (7) corresponds to the seventh word, and W (8) corresponds to the eighth word.
  • W (i) 5a When the value of W (i) 5a is 1, it indicates that data has been written to the i-th word. That is, when W (i) 5a is 1, valid data written from the CPU 101A or the interprocessor communication device 102A is stored in the i-th word of the block data 204.
  • BV5b indicates whether or not the entire block in the data array 103Aa corresponding to the address entry including BV5b is valid.
  • FIG. 20 is an explanatory diagram showing validity / invalidity of the i-th word based on the values of BV 5b and W (i) 5a shown in FIG.
  • FIG. 21 is a flowchart for explaining the operation of the cache control unit 3.
  • the address register 1 When the address register 1 stores the address accessed in the shared cache memory 103A, then the middle 10 (n) bit 7 data of that address is used as the offset 8 of the address array 103Ab and the data array 103Aa, The upper 48 (m) bit 4 data and the bit string 5 data in the address entry of the address array 103Ab are read, and the data entry of the data array 103Aa is accessed.
  • the comparator 2 compares the read upper 48 (m) bit 4 data with the upper 48 (m) bit 9 data in the address register 1 and designates it by the address in the address register 1. It is determined whether or not a block including the processed data already exists in the shared cache memory 103A.
  • the cache control unit 3 receives the comparison result 10 of the comparator 2, the data of the bit string 5, and the access information 11.
  • the access information 11 is provided from the CPU 101A or the inter-processor communication device 102A.
  • the cache control unit 3 also accepts lower 6 (k) bit 12 data.
  • the cache control unit 3 when the access is a write from the CPU 101A, the cache control unit 3 also receives write data (for example, communication data) from the CPU 101A.
  • write data for example, communication data
  • the cache control unit 3 when the access is a write from the inter-processor communication device 102A2, the cache control unit 3 also accepts write data or write data from the inter-processor communication device 102A2. In the following, write data is described as write data.
  • the cache control unit 3 first determines a process to be performed in the future based on the access information 11 indicating the access source and the access content (step 420).
  • step 421 when the access information 11 indicates an access from the CPU 101A (step 421), the cache control unit 3 executes step 401.
  • step 422 when the access information 11 indicates an access from the inter-processor communication device 102A (step 422), the cache control unit 3 executes step 423. Step 423 will be described later with reference to FIG.
  • step 401 the cache control unit 3 determines whether the access from the CPU 101A is write or read based on the access information 11.
  • step 402 When the access from the CPU 101A is writing (step 402), the cache control unit 3 executes step 403.
  • step 403 the cache control unit 3 determines whether the entry storing the accessed block already exists in the shared cache memory 103A (address array 103Ab and data array 103Aa) based on the comparison result 10 of the comparator 2. Judge whether.
  • the cache control unit 3 determines that the accessed block is in the shared cache memory 103A (step 404).
  • the cache control unit 3 determines that the accessed block is not in the shared cache memory 103A (step 405).
  • the cache control unit 3 identifies the word in the data of the block based on the data of the lower 6 (k) bits 12, and the word On the other hand, write data is written (step 406), and the value of W (i) 5a corresponding to the word in which the data is written is set to 1 (step 407).
  • the cache control unit 3 performs a process of assigning the new block to the data array 103Aa as a write block (step 408).
  • step 408 The process of assigning a new block (step 408) will be described in detail later using FIG.
  • the cache control unit 3 identifies the word in the newly allocated block based on the lower 6 (k) bit 12 data, and writes the write data to the word (step 406).
  • the value of W (i) 5a corresponding to the word in which data is written is set to 1 (step 407).
  • step 410 When the access from the CPU 101A is read (step 410), the cache control unit 3 executes step 411.
  • step 411 the cache control unit 3 determines whether the entry storing the accessed block is already in the shared cache memory 103A (address array 103Ab and data array 103Aa) based on the comparison result 10 of the comparator 2. Judge whether.
  • the cache control unit 3 determines that the accessed block is in the shared cache memory 103A (step 412).
  • the cache control unit 3 determines that the accessed block is not in the shared cache memory 103A (step 413).
  • the cache The control unit 3 specifies the accessed block data 6 from the block data in the data array 103Aa, and is specified by the lower 6 (k) bits 12 among the words in the specified block data 6. Data is read from the word (step 414).
  • the cache control unit 3 When the accessed block is not in the shared cache memory 103A (step 413), the cache control unit 3 performs a process of assigning a new block (step 418).
  • step 4128 The process of assigning a new block (step 418) will be described in detail later using FIG.
  • the cache control unit 3 sets the BV 5b in the entry of the address array 103Ab corresponding to the block to 1 (step 417).
  • the cache control unit 3 reads the accessed word from the data array 103Aa (step 414).
  • the cache control unit 3 executes steps 416, 417 and 414.
  • the cache control unit 3 determines whether the access from the inter-processor communication device 102A is a read instruction, a write1 instruction, or a write2 instruction based on the access information 11 (step 501).
  • step 502 When the access from the inter-processor communication device 102A is a Write2 instruction (step 502), the cache control unit 3 executes step 503.
  • step 503 the cache control unit 3 determines whether the entry storing the accessed block already exists in the shared cache memory 103A (address array 103Ab and data array 103Aa) based on the comparison result 10 of the comparator 2. Judge whether.
  • the cache control unit 3 determines that the accessed block is in the shared cache memory 103A (step 504).
  • the cache control unit 3 determines that the accessed block is not in the shared cache memory 103A (step 505).
  • the cache control unit 3 When the accessed block is in the shared cache memory 103A (step 504), the cache control unit 3 identifies the word in the data of the block based on the lower 6 (k) bit 12 data, and the word On the other hand, write data is written (step 506), and the value of W (i) 5a corresponding to the word in which the data is written is set to 1 (step 507).
  • the cache control unit 3 performs a process of assigning a new block to the data array 103Aa as a writing block (step 508).
  • step 508 The process of assigning a new block (step 508) will be described in detail later using FIG.
  • the cache control unit 3 identifies the word in the newly allocated block based on the lower 6 (k) bit 12 data, and writes the write data to the word (step 506).
  • the value of W (i) 5a corresponding to the word in which data is written is set to 1 (step 507).
  • step 522 when the access from the inter-processor communication device 102A is a Write1 instruction (step 522), the cache control unit 3 executes step 523.
  • step 523 the cache control unit 3 determines whether the entry storing the accessed block already exists in the shared cache memory 103A (address array 103Ab and data array 103Aa) based on the comparison result 10 of the comparator 2. Judge whether.
  • the cache control unit 3 determines that the accessed block is in the shared cache memory 103A (step 524).
  • the cache control unit 3 determines that the accessed block is not in the shared cache memory 103A (step 525).
  • the cache control unit 3 When the accessed block is in the shared cache memory 103A (step 524), the cache control unit 3 identifies the word in the newly allocated block based on the data of the lower 6 (k) bits 12, and sets the word in the word. On the other hand, write data is written (step 506), and the value of W (i) 5a corresponding to the word in which the data is written is set to 1 (step 507).
  • the cache control unit 3 If the accessed block is not in the shared cache memory 103A (step 525), the cache control unit 3 writes data directly into the memory 104 (step 526).
  • step 510 when the access from the inter-processor communication device 102A is “read” (step 510), the cache control unit 3 executes step 511.
  • step 511 based on the comparison result 10 of the comparator 2, the cache control unit 3 determines whether the entry storing the accessed block already exists in the shared cache memory 103A.
  • the cache control unit 3 determines that the accessed block is in the shared cache memory 103A (step 512).
  • the cache control unit 3 determines that the accessed block is not in the shared cache memory 103A (step 513).
  • the cache The control unit 3 specifies the accessed block data 6 from the block data in the data array 103Aa, and is specified by the lower 6 (k) bits 12 among the words in the specified block data 6. Data is read from the word (step 520).
  • the cache control unit 3 sets the BV 5b in the entry of the address array 103Ab corresponding to the block to 1 (step 517).
  • the cache control unit 3 reads the accessed word from the data array 103Aa (step 518).
  • the cache control unit 3 If the accessed block is not in the shared cache memory 103A (step 513), the cache control unit 3 reads the data directly from the memory 104 and provides the data to the inter-processor communication device 102A (step 521). At this time, the cache control unit 3 does not assign a new block to the data array 103Aa and the address array 103Ab. Next, steps 408 and 418 shown in FIG. 21 and step 508 shown in FIG. 22 will be described with reference to FIG.
  • the cache control unit 3 selects an entry whose data is to be replaced in order to allocate a new entry (step 1601).
  • a direct map type cache memory is used.
  • the entry whose data is replaced to allocate a new block is uniquely determined from the accessed address.
  • a set associative cache memory there are a plurality of entries to be replaced that are determined from addresses, and it is possible to determine which of them will be replaced by access history or the like.
  • the cache control unit 3 determines whether data is written from the CPU 101A or the inter-processor communication device 102A to the entry block in which the data is replaced.
  • step 1602 If W (i) 5a of all the words of the selected entry is 0 (step 1602), no data has been written to the block from the CPU 101A or the inter-processor communication device 102A. . In this case, the cache control unit 3 can use the entry as it is without writing back.
  • 24A to 24G show commands that the shared cache memory 103A (specifically, the cache control unit 3) sends to the memory 104, and the shared cache memory 103A (specifically, the cache control unit 3) from the memory 104 corresponding to the command. It is explanatory drawing for demonstrating the reply to.
  • 24A and 24B are explanatory diagrams showing an example of a command for reading the entire block from the memory 104 and its reply.
  • the memory 104 since the address is 64 bits and the block size is 64 bytes, the memory 104 reads the block specified by the block address 1701 (58 bits) of the command, and performs the data reply shown in FIG. 24B. In the format, block data 1702 (64 bytes) is sent to the cache control unit 3.
  • FIG. 24C is an explanatory diagram showing an example of a command for the shared cache memory 103A (specifically, the cache control unit 3) to write the entire block into the memory 104.
  • This command is composed of a block address 1703 (58 bits) and block data 1704 (64 bytes).
  • FIG. 24D is an example of a command for writing only the data of the word whose W (i) 5a is 1 among the words in the block data 1704 from the shared cache memory 103A to the memory 104.
  • This command is a partial block data 1707 comprising block address 1705 (58 bits), W (1-8) 1706 (8 bits), and W (i) 5a having a word (8 bytes to 54 bytes). And including.
  • FIG. 24E is an example of a command for reading one word from the memory 104. This command includes a memory address 1708 for designating one word.
  • FIG. 24F is a diagram showing an example of data reply when one word is read from the memory 104. To this data reply, 1-word data 1709 read from the memory 104 is added.
  • FIG. 24G shows a command for writing 1-word data 1711 to the memory address 1710 of the memory 104.
  • FIG. 25 is an explanatory diagram for explaining an operation when a cache miss occurs when one word is written from the CPU 101A or the inter-processor communication device 102A. Here, it is assumed that there is a write by the Write2 command from the inter-processor communication device 102A.
  • FIG. 34 is an explanatory diagram for explaining an operation when a cache miss occurs when one word is written by the Write1 instruction from the inter-processor communication apparatus 102A.
  • the cache control unit 3 writes the write data 2701 directly into the memory 104 using the command shown in FIG. 24G. At this time, the cache control unit 3 does not allocate a new block to the shared cache memory 103A (data array 103Aa and address array 103Ab).
  • FIG. 26 is an explanatory diagram for explaining the operation in the case where a cache hit occurs when one word is written from the CPU 101A or the inter-processor communication device 102A in the second word of the same block as FIG.
  • writing from the inter-processor communication device 102A is performed by a Write1 command or a Write2 command.
  • FIG. 27 is an explanatory diagram for explaining the operation when the CPU 101A or the inter-processor communication device 102A reads the fourth word of the same block as in FIG. 26 and hits the cache.
  • the read of 1 word results in a cache hit, and the cache control unit 3 reads data from the fourth word of the block data 2001 of the data array 103Aa and returns it as read data 2002 to the CPU 101A or the inter-processor communication device 102A.
  • the access history part for replacement may be updated. Further, access to the memory 104 associated with reading does not occur.
  • FIG. 28 shows the operation when the CPU 101A or the inter-processor communication device 102A reads the sixth word of the same block as in FIG. 27 and a cache miss occurs. It is assumed that the block corresponding to the word to be read already exists on the shared cache memory 103A.
  • the cache control unit 3 returns the data of the sixth word as the read data 2105 to the CPU 101A or the inter-processor communication device 102A.
  • FIG. 29 shows the operation when the CPU 101A or the inter-processor communication device 102A reads the first word of the same block as in FIG. 28 and hits the cache.
  • BV5b of the bit string 2201 is 1
  • a read of one word causes a cache hit
  • the cache control unit 3 returns the first word of the block data 2202 as read data 2203 to the CPU 101A or the inter-processor communication device 102A.
  • the access history portion for replacement may be updated. Further, access to the memory 104 by reading does not occur.
  • FIG. 30 shows an operation when an entry in the same block as that in FIG. 29 is to be replaced.
  • FIG. 31 shows an operation when the CPU 101A reads a certain word and makes a cache miss.
  • the cache control unit 3 reads the block of words to be loaded from the memory 104 using the command shown in FIG. 24A.
  • the block 2402 read from the memory 104 is returned to the shared cache memory 103A (specifically, the cache control unit 3) in the data reply format of FIG. 24B, and written to the block data 2403 by the cache control unit 3. It is.
  • FIG. 35 shows an operation when the inter-processor communication device 102A reads a certain word and makes a cache miss. Note that the block of words to be read is not in the shared cache memory 103A.
  • the cache control unit 3 reads the read word from the memory 104 using the command of FIG. 24E.
  • Data 2801 read from the memory 104 is transmitted to the cache control unit 3 in the data reply format of FIG. 24F, and is returned to the inter-processor communication device 102A by the cache control unit 3.
  • the cache control unit 3 Since it is a read command from the inter-processor communication device 102A, the cache control unit 3 does not allocate a new block to the shared cache memory 103A.
  • FIG. 32 shows an operation when an entry in the same block as FIG. 31 is a replacement target.
  • FIG. 33 shows an operation when an entry of a certain block is to be replaced.
  • the cache control unit 3 writes only the data 2602 and 2603 of the second word and the fourth word into the memory 104 using the command shown in FIG. 24D.
  • the CPU 101A creates transmission data 29a (step 2901).
  • the description will be made assuming that not all of the transmission data 29a is cached in the shared cache memory 103A. However, depending on the size of the transmission data 29a and the creation time, a part of the transmission data 29a may exist on the shared cache memory 103A and the other part of the transmission data 29a may exist on the memory 104.
  • control unit 103Ac writes the command 29b to the command queue 104a.
  • the cache control unit 3 allocates a block (corresponding block) including an address to which the command 29b is written on the shared cache memory 103A, and writes the command 29b to the block (step 2902).
  • the command 29b indicates a communication destination, a pointer to the transmission data 29a, and the like.
  • the CPU 101A sends a transmission request indicating the position of the command 29b to the inter-processor communication apparatus 102A (step 2903).
  • the inter-processor communication device 102A reads the command 29b based on the transmission request using the cache control unit 3.
  • the cache control unit 3 reads the command 29b from the data array 103Aa (step 2904).
  • the inter-processor communication device 102A reads the transmission data 29a using the cache control unit 3 using the pointer to the transmission data 29a in the command 29b.
  • the cache control unit 3 since all of the transmission data 29a does not exist on the shared cache memory 103A, a cache miss occurs, and the cache control unit 3 reads the transmission data 29a from the memory 104 (step 2905). At this time, the cache control unit 3 transmits the transmission data 29a (specifically, the block including the address where the transmission data 29a is written) to the shared cache memory 103A (specifically, the data array 103Aa and the address array 103Ab). Do not write to.
  • the inter-processor communication device 102A creates a packet based on the transmission data 29a, and transmits the packet to the inter-processor network 105 (step 2906).
  • FIG. 37 is a time chart for explaining the transmission processing shown in FIG. 37, the same components as those shown in FIG. 18 are denoted by the same reference numerals.
  • the cache control unit 3 assigns the block including the address to which the command 29b is written to the shared cache memory 103A (data array 103Aa and address array 103Ab), and the shared cache memory 103A.
  • the command 29b is written into (data array 103Aa) (step 3001).
  • the inter-processor communication device 102A When the inter-processor communication device 102A receives a transmission request from the CPU 101A (step 3002), the inter-processor communication device 102A reads the command 29b from the shared cache memory 103A (data array 103Aa) using the cache control unit 3 (step 3003).
  • the inter-processor communication device 102A reads the transmission data 29a from the memory 104 using the cache control unit 3 (step 3004).
  • the inter-processor communication device 102A when the inter-processor communication device 102A reads the transmission data 29a, it is possible to conceal the read latency by issuing a plurality of read requests in advance.
  • control unit 103Ac operates as follows in a situation where a data write command, an address, and communication data are received from the CPU 101A.
  • control unit 103Ac When the address is stored in the address array 7, the control unit 103Ac writes data to a word in the data array 103Aa corresponding to the address.
  • the control unit 103Ac does not read the data of the block including the address from the memory 104, and the block including the address in the word of the data array 103Aa.
  • the address of the block including the address is stored in the address array 103Ab, and the communication data is written in the word corresponding to the address among the words associated with the block including the address.
  • the word state storage unit 5a stores word information indicating a word in which communication data is written among the words associated with the block including the address.
  • the inter-processor communication device 102A receives a packet from the inter-processor network 105 (step 3101).
  • the inter-processor communication device 102A writes the received data 31a in the packet on the memory 104 using the cache control unit 3.
  • the inter-processor communication device 102A uses the Write1 instruction to control the cache control unit 3 and directly writes the received data 31a to the memory 104 (step 3102).
  • the inter-processor communication device 102A controls the cache control unit 3 using the Write2 instruction, and sets the reception completion flag 31b to the shared cache memory 103A. Write.
  • reception completion flag 31b is polled by the CPU 101A, it is considered that the reception completion flag 31b exists on the shared cache memory 103A. However, even if the CPU 101A has not yet polled the reception completion flag 31b, the cache control unit 3 writes a block including the address of the reception completion flag 31b on the shared cache memory 103A because the write is performed by the Write2 instruction. The reception completion flag 31b is written into the block on the allocation and shared cache memory 103A (step 3103).
  • the CPU 101A reads the reception completion flag 31b rewritten by the inter-processor communication device 102A from the shared cache memory 103A using the cache control unit 3 (step 3104).
  • the CPU 101A knows that the reception data 31a has been written by referring to the reception completion flag 31b, and reads out the reception data 31a using the cache control unit 3.
  • the cache control unit 3 reads the block including the address of the reception data 31a from the memory 104, writes it to the shared cache memory 103A (data array 103Aa) (step 3105), and from the shared cache memory 103A (data array 103Aa).
  • the received data 31a is read (step 3106).
  • the latency of writing the received data 31a from the inter-processor communication device 102A and reading the received data 31a from the CPU 101A is shortened.
  • FIG. 39 is a time chart for explaining the reception process shown in FIG. 39, the same components as those shown in FIG. 18 are denoted by the same reference numerals.
  • the cache control unit 3 Since all the blocks including the address of the received data are not on the shared cache memory 103A, the cache control unit 3 writes the received data into the memory 104 (step 3201).
  • the inter-processor communication device 102A writes the reception completion flag using the cache control unit 3.
  • the block including the address of the reception completion flag is not in the shared cache memory 103A, but is written by the Write2 instruction. Therefore, the cache control unit 3 stores the block including the address of the reception completion flag in the shared cache memory 103A (data array 103Aa and Assigned to the address array 103Ab), a reception completion flag is written in the block (step 3202).
  • the CPU 101A reads the reception completion flag from the shared cache memory 103A using the cache control unit 3 (step 3203).
  • the CPU 101A confirms that the received data has been written in the memory 104 by referring to the reception completion flag, and reads the received data.
  • a read miss occurs in the shared cache memory 103A, and the cache control unit 3 reads the block including the address of the received data from the memory 104, and the shared cache memory 103A is written (step 3204).
  • the CPU 101A reads the received data from the shared cache memory 103A using the cache control unit 3 (step 3205).
  • the write latency can be concealed by issuing a plurality of write requests in advance.
  • control unit 103Ac operates as follows when the second write command, the address, and the write data are received from the inter-processor communication device 102A.
  • control unit 103Ac When the address is stored in the address array 103Ab, the control unit 103Ac writes the write data to the word in the data array 103Aa corresponding to the address.
  • the control unit 103Ac reads the data of the block including the address from the memory 104, and reads the word of the data array 103Aa into the block including the address.
  • the address of the block including the address is stored in the address array 105Ab, and the write data is written in the word corresponding to the address among the words associated with the block including the address.
  • the word state storage unit 5a stores word information indicating a word in which write data is written among the words associated with the block including the address.
  • the time for transferring the reception completion flag between the CPU 101A and the inter-processor communication device 102A is further shortened, and the effect of shortening the time for transferring information (in this case, the reception time) occurs.
  • the shared cache memory 103A is shared by the CPU 101A and the inter-processor communication device 102A.
  • control unit 103Ac allocates a new block on the shared cache memory 103A when a cache miss occurs when writing from the CPU 101A and when writing by the second write command from the inter-processor communication device 102A.
  • the write data is written to the newly allocated block without reading the block from the memory, and the write position is stored in the address array 103Ab.
  • control unit 103Ac writes data directly to the memory 104 without assigning a new block to the shared cache memory 103A.
  • This embodiment has the following effects.
  • the present invention can be applied to a cache memory of a multi-core type CPU as well as a cache memory of a single core computer.

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

 演算と通信が独立して行われる場合に、通信処理に要する時間を短くすることが可能なキャッシュメモリを提供する。  キャッシュメモリ103は、CPU101からのデータを書き込み可能な複数のワードを有するデータ格納手段103a、複数のアドレスのうち各ワードに個別に対応づけられたアドレスを格納するアドレス格納手段103b、通信装置102から読み出し命令と任意のアドレスを受け付けた状況で、そのアドレスがアドレス格納手段103bにある場合、そのアドレスに対応するワードからデータを読み出し通信装置102に提供し、そのアドレスがアドレス格納手段103bにない場合、記憶装置104からそのアドレスに対応したデータを読み出して通信装置102に提供し、かつそのデータをデータ格納手段103aに書き込まない制御手段103cと、を含む。

Description

[規則37.2に基づきISAが決定した発明の名称] キャッシュメモリ、情報処理装置およびキャッシュメモリ制御方法
 本発明は、キャッシュメモリ、情報処置装置およびキャッシュメモリ制御方法に関し、特には、並列計算機システムで使用可能なキャッシュメモリ、情報処置装置およびキャッシュメモリ制御方法に関する。
 キャッシュメモリを用いた情報処理システムが知られている。
 特許文献1(特開平11-31103号公報)に記載の情報処理システムでは、キャッシュメモリは、CPU等の演算装置と主メモリとの間に設けられ、主メモリ内の一部のデータを格納し、演算装置とデータをやり取りする。
 キャッシュメモリを用いた情報処理システムは、キャッシュミスが発生した場合に、主メモリにアクセスして、主メモリからブロック単位でデータを読み出し、そのブロック単位のデータを、キャッシュメモリに書き込む。
 また、キャッシュメモリを備えた並列計算機システムも知られている(特許文献2(特開2000-267935号公報)参照)。
 また、キャッシュメモリと接続されたCPUが、プロセッサ間通信装置を介して、他のCPUと通信する、並列計算機システムも知られている。
 並列計算機システムでのCPU同士の通信に関して、種々の技術が知られている。
 特許文献3(特開2005-78264号公報)に記載の並列計算機システムでは、CPUは、演算とデータ通信の両方の動作を行う。
 特許文献4(特開平3-150659号公報)には、プロセッサのキャッシュメモリから、送信用データを、直接、送信ポートに転送して通信する、プロセッサ間データ転送方法が開示されている。
 このプロセッサ間データ転送方法では、プロセッサの命令として、データ転送命令が設けられている。このプロセッサ間データ転送方法では、送信用データがキャッシュメモリ上にある場合、送信用データが、キャッシュメモリから、直接、送信ポートに送られる。一方、送信用データがキャッシュメモリ上にない場合、送信用データが、メモリから、送信ポートに、転送される。送信ポートは、送信用データにパケットヘッダを付加してパケットを作成して、そのパケットをネットワークに送出する。この方法は、プロセッサ間通信の送信時のレイテンシを短縮する効果を持つ。
 特許文献5(特開平3-168860号公報)には、ネットワークから受信したデータのメモリアドレスが、そのデータをメモリに書き込む前の段階で、プロセッサのキャッシュメモリ上に存在する場合には、そのデータをメモリに書き込むとともに、キャッシュメモリ上のブロックにも、そのデータを書き込む方法が開示されている。この方法は、受信データをメモリのみに書く場合に生じるキャッシュの無効化による性能低下を防ぐことが可能である。
 特許文献6(特開平6-103244号公報)には、プロセッサのキャッシュメモリとは別に、受信ユニットから受信データを書き込む第2のキャッシュメモリが設けられ、送信ユニットからの送信要求に対して、2個のキャッシュメモリ上にデータがある場合には、データを、プロセッサのキャッシュメモリから送信ユニットに転送し、受信ユニットが受信したデータを、第2のキャッシュメモリに書き込む技術が開示されている。
 また、特許文献6には、プロセッサが、第2のキャッシュメモリ上のデータをアクセスした場合には、第2のキャッシュメモリから第1のキャッシュメモリへ、データを転送する技術が開示されている。なお、送信ユニットには、送信データを受け取るためのFIFO(First-In First-Out)メモリがある。
 図1は、一般的な並列計算機のプロセッサ3301の構成を示したブロック図である。
 プロセッサ3301は、演算を行うCPU3302と、プロセッサ間通信を行うプロセッサ間通信装置3303と、キャッシュメモリ3304と、メモリ3305と、制御回路3307と、CPUバス3308と、を含む。なお、図示していないが、キャッシュメモリ3304は、公知技術であるデータアレイおよびアドレスアレイを含む。
 プロセッサ3301は、プロセッサ間通信装置3303とプロセッサ間ネットワーク3306を介して、他のプロセッサ3301と通信を行う。
 CPUバス3308には、キャッシュメモリ3304と制御回路3307が接続されている。CPUバス3308には、以下のようなコマンドとそれに対するレスポンスが流れる。CPUバス3308に関するコマンドとレスポンスに関しては、非特許文献1(ミップスR10000マイクロプロセッサ ユーザズ マニュアル バージョン2.0(MIPS R10000 Microprocessor User’s Manual Ver.2.0)、MIPS Technologies, Inc.、1996、 pp.121~140)に開示されている。
(1)ブロックリード
 キャッシュメモリ3304がメモリ3305からブロックを読み出すためのコマンド。
 レスポンスとして該当ブロックがメモリ3305から読み出され、キャッシュメモリ3304に返される。
(2)ブロックライト
 キャッシュメモリ3304からブロックをメモリ3305に書き込むためのコマンド。
 該当ブロックがメモリ3305に書き込まれる。
(3)インターベンションShared
 制御回路3307がキャッシュメモリ3304上のキャッシュブロックを読み出すためのコマンド。
 キャッシュメモリ3304に該当ブロックが存在していて、かつ、CPU3302により書きかえられている場合には、ブロックデータがレスポンスとして、キャッシュメモリ3304から制御回路3307に返される。キャッシュメモリ3304上のブロックは無効化されない。
 キャッシュメモリ3304に該当ブロックが存在しない、または、存在しても書き換えられていない場合には、データレスポンスがないことがキャッシュメモリ3304から制御回路3307に返される。
(4)インターベンションExclusive
 制御回路3307がデータを書き込むためにキャッシュブロックを読み出すためのコマンド。
 キャッシュメモリ3304に該当ブロックが存在していて、かつ、CPU3302により書き換えられている場合には、ブロックデータがレスポンスとして、キャッシュメモリ3304から制御回路3307に返される。そして、キャッシュメモリ3304上の該当ブロックは無効化される。
 キャッシュメモリ3304上に該当するブロックが存在するがCPU3302によって書き換えられていない場合には、キャッシュメモリ3304上のブロックを無効化してデータレスポンスがないことがキャッシュメモリ3304から制御回路3307に返される。
 キャッシュメモリ3304上に該当するブロックが存在しない場合には、データレスポンスがないことがキャッシュメモリ3304から制御回路3307に返される。
(5)無効化要求
 制御回路3307がキャッシュメモリ3304上のブロックを無効化するためのコマンド
 キャッシュメモリ3304上に該当ブロックが存在する場合には、キャッシュメモリ3304は該当ブロックを無効化する。
 キャッシュメモリ3304上に該当ブロックが存在しない場合には、キャッシュメモリ3304は、なにもしない。
 プロセッサ間通信装置3303は、制御回路3307に対してデータの読み出しや書き込みを要求する。制御回路3307は、要求に応じてCPUバス3308を用いて、上記のコマンドをキャッシュメモリ3304に発行し、キャッシュメモリ3304を操作する。また、制御回路3307は必要に応じてメモリ3305にもアクセスする。なお、CPUバス3308を介したキャッシュメモリ3304の操作は、CPU3302からキャッシュメモリ3304をアクセスする場合よりも、一般的に処理時間が長くなる。
 図2と図3は、一般的な並列コンピュータのプロセッサ間通信の送信と受信の処理を説明するための説明図である。図2および図3において、図1に示したものと同一構成のものには同一符号を付してある。なお、図2および図3において、メモリ部3400は、図1に示したキャッシュメモリ3304とメモリ3305と制御回路3307とCPUバス3308をまとめたものである。
 近年の並列計算機のプロセッサ間通信では、CPUでの演算とプロセッサ間通信装置での通信とを独立して同時に行えるようにするために、以下のような処理方式が採られている。
 図2に示した送信処理では、まず、CPU3302が、メモリ部3400上に、送信データ34aを作成する(ステップ3401)。
 次に、CPU3302が、メモリ部3400上のコマンドキュー3400aに、コマンド34bを書き込む(ステップ3402)。コマンド34bには、通信の宛先や送信データ34aへのポインタなどが示されている。
 次に、CPU3302が、プロセッサ間通信装置3303に、コマンド34bの位置を示す送信要求を送る(ステップ3403)。
 プロセッサ間通信装置3303は、送信要求を受け付けると、制御回路3307を用いて、メモリ部3400から、コマンド34bを読み出す(ステップ3404)。
 そして、プロセッサ間通信装置3303は、コマンド34bに示された、送信データ34aへのポインタを使って、制御回路3307を用いて、メモリ部3400から、送信データ34aを読み出し(ステップ3405)、送信データ34aに基づいてパケットを作製して、プロセッサ間ネットワーク3306へパケットを送信する(ステップ3406)。
 CPU3302は、プロセッサ間通信装置3303の送信処理の状況によらず、コマンドキュー3400aにコマンド34bを書き込み、プロセッサ間通信装置3303に送信要求を送ることができる。
 プロセッサ間通信装置3303は、コマンドキュー3400a内のコマンド34bがなくなるまで、制御回路3307を用いて、コマンドキュー3400aからコマンド34bを読み出して処理していく。
 このように、メモリ部3400上にコマンドキュー3400aを設けることにより、CPU3302とプロセッサ間通信装置3303は、独立に動作することが可能となっており、演算と通信を同時に行うことができる。
 図3に示した受信処理では、まず、プロセッサ間通信装置3303が、プロセッサ間ネットワーク3306から、パケットを受信する(ステップ3501)。
 そして、プロセッサ間通信装置3303は、制御回路3307を用いて、パケットの中の受信データ35aを、メモリ部3400上に書き込む(ステップ3502)。
 そして、プロセッサ間通信装置3303は、制御回路3307を用いて、受信完了フラグ35bを、メモリ部3400に書き込む(ステップ3503)。
 CPU3302は、受信完了フラグ35bをポーリングしていて、プロセッサ間通信装置3303によって書かれた受信完了フラグ35bを読み出す(ステップ3504)。
 そして、CPU3302は、受信完了フラグ35bを参照することによって、受信データ35aがメモリ部3400に書き込まれたことを知り、受信データ35aを、メモリ部3400から読み出す(ステップ3505)。
 ここでは、受信完了をCPU3302に伝える手段として、メモリ部3400上の受信完了フラグ35bが用いられている。
 なお、受信完了をCPU3302に伝える手段として、割り込みも考えられるが、割り込みによるコンテクストスイッチのオーバヘッドが大きいので、性能的に割り込み使うことは困難である。
 図4と図6は、図2と図3に示したプロセッサ間通信の送信と受信の処理を、図1に示したプロセッサ3301内のキャッシュメモリ3304の制御も含めて説明するための説明図である。
 図4に示した送信処理では、まず、CPU3302が、送信データ34aを作成する(ステップ3601)。
 ここでは、送信データ34aのすべてが、キャッシュメモリ3304上にキャッシュされるとして説明を行うが、送信データ34aのサイズや作成される時刻によっては、送信データ34aの一部だけが、キャッシュメモリ3304上にあり、送信データ34aのその他の部分は、メモリ3305に存在することもありうる。
 次に、CPU3302が、コマンドキュー3400aに、コマンド34bを書き込む。
 ここでは、コマンド34bが書き込まれるアドレスは、キャッシュメモリ3304上にない(書き込み時にキャッシュミスする)として説明する。
 そのため、まず、キャッシュメモリ3304が、コマンド34bが書き込まれるアドレスを含むブロックのブロックリードを制御回路3307に対し要求する。制御回路3307は、メモリ3305上の該当ブロックを、メモリ3305から読み出してキャッシュメモリ3304に送り、キャッシュメモリ3304上に該当ブロックが書き込まれる(ステップ3602)。CPU3302は、キャッシュメモリ3304上の該当ブロックのうち、コマンド34bが書き込まれるアドレスに対応する部分(ワード)に、コマンド34bを書き込む(ステップ3603)。つまり、コマンド34bは、キャッシュメモリ3304上にキャッシュされる。コマンド34bには、通信の宛先や送信データ34aへのポインタなどが示されている。
 次に、CPU3302が、プロセッサ間通信装置3303に、コマンド34bの位置(コマンド34bが書き込まれたアドレス)を示す送信要求を送る(ステップ3604)。
 プロセッサ間通信装置3303は、送信要求を受け付けると、制御回路3307を用いて、コマンド34bを読み出す。制御回路3307は、CPUバス3308にインターベンションShared要求を出し、コマンド34bが書き込まれたアドレスを含むブロック(該当ブロック)をキャッシュメモリ3304から読み出す。コマンド34bは、キャッシュメモリ3304上にキャッシュされていて、CPU3302によって書き換えられているので、キャッシュメモリ3304は該当ブロックをレスポンスとして制御回路3307に返す。制御回路3307は、コマンド34bが書き込まれたアドレスを含むブロック(該当ブロック)を、メモリ3305にライトバックし(ステップ3605)、それとともに、コマンド34bをプロセッサ間通信装置3303に返す(ステップ3606)。
 次に、プロセッサ間通信装置3303は、コマンド34b内の、送信データ34aへのポインタ(送信データ34aが書き込まれたアドレス)を使って、制御回路3307を用いて、送信データ34aを読み出す。
 制御回路3307が、CPUバス3308にインターベンションShared要求を出し、送信データ34aが書き込まれたアドレスを含む複数のブロック(該当ブロック)を、キャッシュメモリ3304から読み出す。ここでは、送信データ34aのすべてが、キャッシュメモリ3304上に存在するとしていて、送信データはCPU3302によって書き込まれているので、キャッシュメモリ3304は該当ブロックをレスポンスとして制御回路3307に返す。制御回路3307は、送信データ34aが書き込まれたアドレスを含む複数のブロックをメモリ3305にライトバックし(ステップ3607)、それとともに、送信データ34aをプロセッサ間通信装置3303に渡す(ステップ3608)。
 そして、プロセッサ間通信装置3303は、送信データ34aに基づいてパケットを作製して、プロセッサ間ネットワーク3306へパケットを送信する(ステップ3609)。
 図5は、図4に示した送信処理を説明するためのタイムチャートである。
 図5では、CPU3302が、コマンド34bをコマンドキュー3400aに書き込む時に、キャッシュメモリ3304でキャッシュミスが発生した場合の動作が記述されている。ここで、キャッシュミスが発生するとしているのは、コマンドキュー3400aのコマンド34bが書かれたアドレスに前回コマンド34bが書き込まれた後、演算に必要なデータアクセスのために、キャッシュメモリ3304からコマンド34bが書かれたアドレスが追い出されている可能性が高いためである。
 CPU3302からのコマンド34bの書き込みでキャッシュミスが起こり(ステップ3701)、キャッシュメモリ3304は、コマンド34bを書き込むアドレスを含むブロックのブロックリード要求を制御回路3307に送る。制御回路3307は、メモリ3305から該当ブロックを読み出し、キャッシュメモリ3304に返す。そしてキャッシュメモリ3304に該当ブロックが書き込まれる(ステップ3702)。
 そして、CPU3302からキャッシュメモリ3304にコマンド34bが書き込まれる(ステップ3703)。
 CPU3302からの送信要求を契機にしたプロセッサ間通信装置3303からの指示により(ステップ3704)、制御回路3307が、コマンド34bが書き込まれたアドレスを含む該当ブロックをキャッシュメモリ3304から読み出すために、キャッシュメモリ3304に対しインターベンションShared要求を出す。該当ブロックはキャッシュメモリ3304上にありCPU3302により書き換えられているので、キャッシュメモリ3304から制御装置3307に該当ブロックがリプライされる。制御回路3307は、該当ブロックをメモリ3305にライトバックし(ステップ3705)、それとともに、コマンド34bをプロセッサ間通信装置3303に送る(ステップ3706)。
 そして、プロセッサ間通信装置3303は、コマンド34bを参照して、制御回路3307を用いて、送信データ34aが書き込まれたアドレスを含む該当ブロックを読み出す。制御回路3307は、キャッシュメモリ3304に対して、該当ブロックのインターベンションShared要求を発行する。該当ブロックはキャッシュメモリ3304上にありCPU3302によって書き換えられているので、キャッシュメモリ3304は制御回路3307に該当ブロックをリプライする。制御回路3307は、該当ブロックをメモリ3305にライトバックし(ステップ3707)、それとともに、送信データ34aをプロセッサ間通信装置3303に送る(ステップ3708)。
 図5に示すように、プロセッサ間通信装置3303が、送信データ34aを読み出すときは、複数の読み出しリクエストを制御回路3307に先行発行することで、読み出しレイテンシを隠蔽することが可能である。
 図5を見ると、CPU3302とプロセッサ間通信装置3303間のコマンド34bの受け渡しに時間がかかっていることがわかる(期間T3709)。
 図6に示した受信処理では、まず、プロセッサ間通信装置3303が、プロセッサ間ネットワーク3306から、パケットを受信する(ステップ3801)。
 そして、プロセッサ間通信装置3303は、制御回路3307を用いて、パケットの中の受信データ35aを、メモリ3305上に書き込む。
 なお、受信データ35aが書き込まれるアドレスを含むブロックが、キャッシュメモリ3304にキャッシュされている場合があるので、制御回路3304bは、以下のような処理を行う必要がある。
 (1)受信データ35aの書き込みが、受信データ35aが書き込まれるアドレスを含むブロック(該当ブロック)全体への書き込みになる場合には、制御回路3307は、キャッシュメモリ3304に対して、該当ブロックデータの無効化を要求し(ステップ3802)、その後、受信データ35aを、メモリ3305に書き込む(ステップ3803)。
 (2)受信データ35aの書き込みが、受信データ35aが書き込まれるアドレスを含むブロック(該当ブロック)の一部への書き込みになる場合には、制御回路3307は、キャッシュメモリ3304に対して、該当ブロックのインターベンションExclusiveを要求する。
 (A)もし、キャッシュメモリ3304上に該当ブロックが存在し、かつ、CPU3302により書き換えられていたなら、キャッシュメモリ3304は該当ブロックを制御回路3307にリプライし、該当ブロックを無効化する。そして、制御回路3307はメモリ3305に該当ブロックをライトバックする(ステップ3804)。
 (B)もし、キャッシュメモリ3304上に該当ブロックが存在し、かつ、CPU3302により書き換えられていない場合には、キャッシュメモリ3304は、該当ブロックを無効化して、データリプライがないことを制御回路3307に伝える。CPU3302によって書き換えられていないので、該当ブロックをメモリ3305にライトバックする必要はない。
 (C)もし、キャッシュメモリ3304上に該当ブロックが存在しない場合は、キャッシュメモリ3304は制御回路3307にデータリプライがないことを伝える。
 そして、制御回路3307は、受信データ35aを、メモリ3305に書き込む(ステップ3803)。
 プロセッサ間通信装置3303は、受信データ35aのすべてをメモリ3305に書き込んだ後、制御回路3307を用いて、メモリ3305に受信完了フラグ35bを書き込む。
 受信完了フラグ35bは、CPU3302によってポーリングされていると考えられるので、受信完了フラグ35bが書き込まれるアドレスを含むブロック(該当ブロック)は、キャッシュメモリ3304上にある。また、受信完了フラグ35bの書き込みは、受信完了フラグ35bが書き込まれるアドレスを含むブロック(該当ブロック)の一部への書き込みになる。
 従って、制御回路3307は、まず、キャッシュメモリ3304に対して、受信完了フラグ35bが書き込まれるブロック(該当ブロック)をインターベンションExclusive要求で読み出す。前述のように該当ブロックはキャッシュメモリ3304上にある。もし、CPU3302によって書き換えられている場合は、キャッシュメモリ3304は該当ブロックを制御回路3307にリプライして該当ブロックを無効化する。そして、制御回路3307はリプライされた該当ブロックをメモリ3305にライトバックする(ステップ3805)。もし、CPU3302によって書き換えられていない場合は、キャッシュメモリ3304は該当ブロックを無効化して、データリプライがないことを制御回路3307に伝える。その後、制御回路3307はメモリ3305に、受信完了フラグ35bを書き込む(ステップ3806)。
 CPU3302は、受信完了フラグ35bをポーリングしているので、プロセッサ間通信装置3303により受信完了フラグ35bが書かれた直後の読み出し時にキャッシュミスが発生し、キャッシュメモリ3304は、受信完了フラグ35bが書き込まれたアドレスを含むブロックを制御回路3307にブロックリード要求して読み出す。制御回路3307は、該当ブロックをメモリ3305から読み出して、キャッシュメモリ3304に返す。そして、キャッシュメモリ3304が該当ブロックを書き込む(ステップ3807)。
 そして、CPU3302が、キャッシュメモリ3304から、受信完了フラグ35bを読み出す(ステップ3808)。
 そして、CPU3302は、受信完了フラグ35bを参照することによって、受信データ35aが書き込まれたことを知り、受信データ35aを読み出す。
 受信データ35aは、キャッシュメモリ3304上にはなくメモリ3305上にあるので、キャッシュメモリ3304からの読み出し時にキャッシュミスが発生し、受信データ35aが書き込まれたアドレスを含むブロックが、メモリ3305から読み出されて、キャッシュメモリ3304に書き込まれ(ステップ3809)、CPU3302は、キャッシュメモリ3304から、受信データ35aを読み出す(ステップ3810)。
 図7は、図6に示した受信処理を説明するためのタイムチャートである。
 プロセッサ間通信装置3303が、制御回路3307を用いて、受信データ35aをメモリ3305に書き込む。制御回路3307は、受信データ35aを書き込むアドレスを含むブロックを、キャッシュメモリ3304からメモリ3305へライトバックして無効化するか、または、無効化を行い(ステップ3901)、その後、受信データ35aを、メモリ3305に書き込む(ステップ3902)。
 次に、プロセッサ間通信装置3303は、制御回路3307を用いて、受信完了フラグ35bを、メモリ3305に書き込む。
 受信完了フラグ35bは、CPU3302によってポーリングされているので、受信完了フラグ35bが書き込まれるアドレスを含むブロックは、キャッシュメモリ3304上にある。
 そのため、制御回路3307は、受信完了フラグ35bが書き込まれるアドレスを含むブロックを、キャッシュメモリ3304からメモリ3305にライトバックして無効化する(ステップ3903)、または、無効化し、受信完了フラグ35bをメモリ3305に書き込む(ステップ3904)。
 その直後のCPU3302からの受信完了フラグ35bの読み出し時に、キャッシュメモリ3304でキャッシュミスが発生し、受信完了フラグ35bが書き込まれたアドレスを含むブロックが、制御回路3307により、メモリ3305から読み出されて、キャッシュメモリ3304に書き込まれる(ステップ3905)。
 そして、CPU3302は、キャッシュメモリ3304上の受信完了フラグ35bを読み出す(ステップ3906)。
 そして、CPU3302は、受信完了フラグ35bを参照することによって受信データ35aがメモリ3305に書き込まれたことを確認し、その後、受信データ35aを読み出す。
 受信データ35aは、キャッシュメモリ3304ではなくメモリ3305に格納されているので、キャッシュメモリ3304でキャッシュミスが起こり、受信データ35aが書き込まれたアドレスを含むブロックが、制御回路3307によって、メモリ3305から読み出され、キャッシュメモリ3304に書き込まれる(ステップ3907)。
 そして、CPU3302は、キャッシュメモリ3304から、受信データ35aを読み出す(ステップ3908)。
 図7に示すように、プロセッサ間通信装置3303が受信データ35aをメモリ3305に書き込むときは、複数の書き込みリクエストを先行発行することで、書き込みのレイテンシを隠蔽できる。同様に、CPU3302が受信データ35aを読み出すときも、複数の読み出しリクエストを先行発行することで、読み出しレイテンシを隠蔽することが可能である。
 図7を見ると、プロセッサ間通信装置3303からCPU3302への受信完了フラグ35bの受け渡しに時間がかかっていることがわかる(期間T3909)。
特開平11-31103号公報 特開2000-267935号公報 特開2005-78264号公報 特開平3-150659号公報 特開平3-168860号公報 特開平6-103244号公報 ミップスR10000マイクロプロセッサ ユーザズ マニュアル バージョン2.0(MIPS R10000 Microprocessor User’s Manual Ver.2.0)、MIPS Technologies, Inc.、1996、 pp.121~140
 特許文献3から6には、並列計算機システム内でCPU同士が通信する技術が記載されている。以下、これらの技術で生じる問題を説明する。
 特許文献3に記載の技術では、CPUが、演算と通信の両方の処理を行うので、演算と通信の平行処理ができない。よって、プロセッサ間通信の高速化は期待できない。
 また、特許文献4に記載の送信技術および特許文献6に記載の送信技術では、CPUが直接プロセッサ間通信装置にコマンドを投げる方法を採るので、CPUとプロセッサ間通信装置が独立に動作できない。つまり、演算と通信の平行処理ができない。
 また、特許文献5に記載の技術では、プロセッサ間ネットワークから受信したデータの該当するブロックがキャッシュメモリ上にある場合、受信データが、メモリとキャッシュメモリの両方に書き込まれる。しかしながら、演算と通信の平行処理ができない。
 演算と通信を独立して行おうとすると、図2を用いて説明したように、送信では、コマンドキューを使って、CPUからプロセッサ間通信装置に送信要求を伝える方法が必要である。また、図3を用いて説明したように、受信では、受信完了フラグを用いて、プロセッサ間通信装置からCPUにデータ受信の完了を伝える方法が必要である。
 その場合、図4と図6を用いて説明した処理が行われ、図5と図7で示したように、CPUからプロセッサ間通信装置へコマンドを伝える処理、および、プロセッサ間通信装置からCPUへ受信完了フラグを伝える処理に時間がかかっている。
 つまり、演算と通信を独立して行おうとすると、キャッシュメモリやメモリを用いた情報の受け渡し処理に時間がかかってしまう。
 本発明の目的は、上述した課題を解決する、キャッシュメモリ、情報処置装置およびキャッシュメモリ制御方法を提供することである。
 本発明のキャッシュメモリは、CPUと、前記CPUと他のCPUとの通信を実行する通信装置と、複数のアドレスのいずれかに対応づけてデータを記憶する記憶装置と、に接続されるキャッシュメモリであって、前記CPUおよび前記通信装置からのデータを書き込み可能な複数のワードを有するデータ格納手段と、前記複数のアドレスのうち、前記複数のワードのそれぞれに個別に対応づけられたアドレスを格納するアドレス格納手段と、前記通信装置から、書き込み命令と、前記複数のアドレスのうちの任意のアドレスと、書き込み用データと、を受け付けた状況で、当該アドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記書き込み用データを書き込み、また、前記通信装置から、読み出し命令と、前記任意のアドレスと、を受け付けた状況で、当該アドレスが前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードからデータを読み出して当該通信装置に提供し、当該アドレスが前記アドレス格納手段に格納されていない場合には、前記記憶装置から当該アドレスに対応づけられたデータを読み出して当該通信装置に提供し、かつ当該データを前記データ格納手段に書き込まない制御手段と、を含む。
 本発明の情報処理装置は、上記キャッシュメモリと、前記キャッシュメモリと接続されたCPUと、前記キャッシュメモリと接続され、前記CPUと他のCPUとの通信を実行する通信装置と、前記キャッシュメモリと接続され、複数のアドレスのいずれかに対応づけてデータを記憶する記憶装置と、を含む
 本発明のキャッシュメモリ制御方法は、CPUと、前記CPUと他のCPUとの通信を実行する通信装置と、複数のアドレスのいずれかに対応づけてデータを記憶する記憶装置と、に接続され、また、前記CPUおよび前記通信装置からのデータを書き込み可能な複数のワードを有するデータ格納手段を含む、キャッシュメモリが行うキャッシュメモリ制御方法であって、前記複数のアドレスのうち、前記複数のワードのそれぞれに個別に対応づけられたアドレスをアドレス格納手段に格納する格納ステップと、前記通信装置から、書き込み命令と、前記複数のアドレスのうちの任意のアドレスと、書き込み用データと、を受け付けた状況で、当該アドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記書き込み用データを書き込み、また、前記通信装置から、読み出し命令と、前記任意のアドレスと、を受け付けた状況で、当該アドレスが前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードからデータを読み出して当該通信装置に提供し、当該アドレスが前記アドレス格納手段に格納されていない場合には、前記記憶装置から当該アドレスに対応づけられたデータを読み出して当該通信装置に提供し、かつ当該データを前記データ格納手段に書き込まない制御ステップと、を含む。
 本発明によれば、演算と通信が独立して行われる場合において、情報の受け渡し処理に要する時間を短くすることが可能になる。
図1は、一般的な並列計算機のプロセッサ3301の構成を示したブロック図である。 図2は、一般的な並列コンピュータのプロセッサ間通信の送信処理を説明するための説明図である。 図3は、一般的な並列コンピュータのプロセッサ間通信の受信処理を説明するための説明図である。 図4は、一般的な並列コンピュータのプロセッサ間通信の送信処理を説明するための説明図である。 図5は、図4に示した送信処理を説明するためのタイムチャートである。 図6は、一般的な並列コンピュータのプロセッサ間通信の受信処理を説明するための説明図である。 図7は、図6に示した受信処理を説明するためのタイムチャートである。 図8は、本発明の第1の実施の形態の並列計算機用プロセッサ100を示したブロック図である。 図9Aは、CPU101が読み出すデータが、共有キャッシュメモリ103上にある場合の動作を説明するための図である。 図9Bは、CPU101が読み出すデータが、共有キャッシュメモリ103上にない場合の動作を説明するための図である。 図10Aは、CPU101が書き込むデータ(アドレス)に対応するブロックが、共有キャッシュメモリ103上にある場合の動作を説明するための図である。 図10Bは、CPU101が書き込むデータ(アドレス)に対応するブロックが、共有キャッシュメモリ103上にない場合の動作を説明するための図である。 図11Aは、プロセッサ間通信装置102が読み出すデータが、共有キャッシュメモリ103上にある場合の動作を説明するための図である。 図11Bは、プロセッサ間通信装置102が読み出すデータが、共有キャッシュメモリ103上にない場合の動作を説明するための図である。 図12Aは、プロセッサ間通信装置102が書き込むデータ(アドレス)に対応するブロックが、共有キャッシュメモリ103上にある場合の動作を説明するための図である。 図12Bは、プロセッサ間通信装置102が書き込むデータ(アドレス)に対応するブロックが、共有キャッシュメモリ103上にない場合の動作を説明するための図である。 図13は、第1の実施の形態での送信処理を説明するための説明図である。 図14は、図13に示した送信処理を説明するためのタイムチャートである。 図15は、第1の実施の形態での受信処理を説明するための説明図である。 図16は、図15に示した受信処理を説明するためのタイムチャートである。 図17Aは、プロセッサ間通信装置102AからのWrite2命令の書き込みに対応したブロックが、共有キャッシュメモリ103A上に存在する場合の動作を説明するための図である。 図17Bは、プロセッサ間通信装置102AからのWrite2命令の書き込みに対応したブロックが、共有キャッシュメモリ103A上に存在しない場合の動作を説明するための図である。 図18は、共有キャッシュメモリ103Aを示したブロック図である。 図19は、アドレスアレイ103Abに格納される状態および他の情報を示すビット列5の一例を示した説明図である。 図20は、図19に示したBV5bとW(i)5aの値によるi番目のワードの有効/無効を示す説明図である。 図21は、キャッシュ制御ユニット3の動作を説明するためのフローチャートである。 図22は、アクセス情報11がプロセッサ間通信装置102Aからのアクセスを示す場合の処理を説明するためのフローチャートである。 図23は、新しいブロックの割り当て処理を説明するためのフローチャートである。 図24Aは、ブロック全体をメモリ104から読み出すコマンドの一例を示した説明図である。 図24Bは、ブロック全体をメモリ104から読み出すコマンドのリプライの一例を示した説明図である。 図24Cは、共有キャッシュメモリ103Aが、ブロック全体をメモリ104に書き込むコマンドの一例を示した説明図である。 図24Dは、ブロックデータ1704内のワードうち、W(i)5aが1のワードのデータだけを、共有キャッシュメモリ103Aからメモリ104に書き込むためのコマンドの一例である。 図24Eは、1ワードをメモリ104から読み出すためのコマンドの一例である。 図24Fは、1ワードをメモリ104から読み出したときのデータリプライの一例を示した図である。 図24Gは、1ワードのデータ1711をメモリ104のメモリアドレス1710に書き込むためのコマンドである。 図25は、CPU101Aまたはプロセッサ間通信装置102Aから1ワードの書き込みがあったとき、キャッシュミスした場合の動作を説明するための説明図である。 図26は、図25と同じブロックの2ワード目に、CPU101Aまたはプロセッサ間通信装置102Aから1ワードの書き込みがあり、キャッシュヒットした場合の動作を説明するための説明図である。 図27は、CPU101Aまたはプロセッサ間通信装置102Aが、図26と同じブロックの4ワード目を読み出し、キャッシュヒットした場合の動作を説明するための説明図である。 図28は、CPU101Aまたはプロセッサ間通信装置102Aが、図27と同じブロックの6ワード目を読み出し、キャッシュミスが発生した場合の動作を示した説明図である。 図29は、CPU101Aまたはプロセッサ間通信装置102Aが、図28と同じブロックの1ワード目を読み出し、キャッシュヒットした場合の動作を示した説明図である。 図30は、図29と同じブロックのエントリが置き換えの対象になった場合の動作を示した説明図である。 図31は、CPU101Aが、あるワードを読み出してキャッシュミスした場合の動作を示した説明図である。 図32は、図31と同じブロックのエントリが置き換えの対象になった場合の動作を示した説明図である。 図33は、あるブロックのエントリが置き換えの対象になった場合の動作を示した説明図である。 図34は、プロセッサ間通信装置102AからWrite1命令で1ワードの書き込みがあったとき、キャッシュミスした場合の動作を説明するための説明図である。 図35は、プロセッサ間通信装置102Aが、あるワードを読み出してキャッシュミスした場合の動作を示した説明図である。 図36は、第2の実施の形態での送信処理を説明するための説明図である。 図37は、図36に示した送信処理を説明するためのタイムチャートである。 図38は、第2の実施の形態での受信処理を説明するための説明図である。 図39は、図38に示した受信処理を説明するためのタイムチャートである。
符号の説明
100、100A プロセッサ
101、101A CPU
102、102A プロセッサ間通信装置
103、103A 共有キャッシュメモリ
103a、103Aa データアレイ
103a1 ワード
103b、103Ab アドレスアレイ
103c、103Ac 制御部
104 メモリ
1   アドレスレジスタ
2   比較器
3   キャッシュ制御ユニット
5a  ワード状態記憶部
5b  ブロック状態記憶部
 以下、本発明の実施形態について図面を参照して詳細に説明する。
 (第1の実施の形態)
 図8は、本発明の第1の実施の形態の並列計算機用プロセッサ(以下、単に「プロセッサ」と称する。)100を示したブロック図である。
 図8において、プロセッサ100は、一般的に情報処理装置と呼ぶことができる。プロセッサ100は、CPU101と、プロセッサ間通信装置102と、共有キャッシュメモリ103と、メモリ104とを含む。共有キャッシュメモリ103は、データアレイ103aと、アドレスアレイ103bと、制御部103cとを含む。
 CPU101は、一般的に演算装置と呼ぶことができる。CPU101は、種々の演算を行う。
 プロセッサ間通信装置102は、プロセッサ間ネットワーク105を介して他のプロセッサ100と通信する。具体的には、プロセッサ間通信装置102は、同一プロセッサ100内のCPU101と、他のプロセッサ内のCPU(他のCPU)と、の通信を実行する。
 共有キャッシュメモリ103は、一般的にキャッシュメモリと呼ぶことができる。共有キャッシュメモリ103は、CPU101と、プロセッサ間通信装置102と、メモリ104と、に接続される。
 メモリ104は、一般的に記憶装置または主記憶装置と呼ぶことができる。メモリ104は、自己が有する複数のアドレスのいずれかに対応づけてデータを記憶する。
 データアレイ103aは、一般的にデータ格納手段と呼ぶことができる。データアレイ103aは、複数のワード103a1からなる複数のブロック(データエントリ)を有する。複数のワードは、CPU101からのデータを書き込み可能であり、また、プロセッサ間通信装置102からのデータも書き込み可能である。
 アドレスアレイ103bは、一般的にアドレス格納手段と呼ぶことができる。アドレスアレイ103bは、メモリ104が有する複数のアドレスのうち、データアレイ103a内の複数のワード103a1のそれぞれに個別に対応づけられたアドレスを格納する。
 また、アドレスアレイ103bは、メモリ104が有する複数のアドレスのうち、データアレイ103a内の複数のワード103a1のそれぞれに個別に対応づけられたアドレスを、所定数のアドレスからなるブロック単位で格納する。
 制御部103cは、一般的に制御手段と呼ぶことができる。
 制御部103cは、プロセッサ間通信装置102から、読み出し命令(以下「read命令」と称する。)と、メモリ104が有する複数のアドレスのうちの任意のアドレス(以下「第1アドレス」と称する。)と、を受け付けた状況になると、以下のように動作する。
 第1アドレスがアドレスアレイ103bに格納されている場合、制御部103cは、第1アドレスに対応する、データアレイ103a内のワードからデータを読み出す。
 一方、第1アドレスがアドレスアレイ103bに格納されていない場合、制御部103cは、メモリ104から第1アドレスに対応づけられたデータを読み出し、かつ、そのデータをデータアレイ103aに書き込まない。このとき、制御部103cは、第1アドレスを含むブロックの各アドレスを、アドレスアレイ103bに書き込まない。
 また、制御部103cは、プロセッサ間通信装置102から、書き込み命令(以下「write命令」と称する。)と、メモリ104が有する複数のアドレスのうちの任意のアドレス(以下「第2アドレス」と称する)と、書き込み用データと、を受け付けた状況になると、以下のように動作する。
 第2アドレスがアドレスアレイ103bに格納されている場合、制御部103cは、第2アドレスに対応する、データアレイ103a内のワードに、書き込み用データを書き込む。
 一方、第2アドレスがアドレスアレイ103bに格納されていない場合、制御部103cは、第2のアドレスに対応づけて、書き込み用データを、メモリ104に書きこみ、かつ、その書き込み用データをデータアレイ103aに書き込まない。このとき、制御部103cは、第2アドレスを含むブロックの各アドレスを、アドレスアレイ103bに書き込まない。
 次に、図9Aおよび図9Bを使って、CPU101からのload命令(読み出し命令)に対する処理を説明する。なお、図9Aおよび図9Bにおいて、図8に示したものと同一構成のものには同一符号を付してある。
 図9Aは、CPU101が読み出すデータが、共有キャッシュメモリ103上にある場合の動作を説明するための図である。
 以下では、制御部103cが、CPU101から、メモリ104が有する任意のアドレス(以下「第3アドレス」と称する。)とload命令とを受け付けた状況で、第3アドレスがアドレスアレイ103bに格納されている場合の動作を説明する。
 この場合、制御部103cは、第3アドレスに対応する、データアレイ103a内のワードから、データを読み出しCPU101に渡す(ステップ2A01)。
 図9Bは、CPU101が読み出すデータが、共有キャッシュメモリ103上にない場合の動作を説明するための図である。
 以下では、制御部103cが、CPU101から、第3アドレスとload命令とを受け付けた状況で、第3アドレスがアドレスアレイ103bに格納されていない場合の動作を説明する。
 この場合、まず、制御部103cは、第3アドレスを含むブロック(該当ブロック)を、共有キャッシュメモリ103(具体的には、データアレイ103aおよびアドレスアレイ103b)上に割り当てる(ステップ2B01)。
 続いて、制御部103cは、メモリ104から該当ブロックのデータを読み出し、その該当ブロックのデータを、共有キャッシュメモリ103(具体的には、データアレイ103a)に書き込む(ステップ2B02)。このとき、制御部103cは、その該当ブロックのアドレスを、アドレスアレイ103bに書き込む。
 続いて、制御部103cは、共有キャッシュメモリ103(具体的には、データアレイ103a)から、第3アドレスに対応するデータを読み出す(ステップ2B03)。
 次に、図10Aおよび図10Bを使って、CPU101からのstore命令(データ書き込み命令)に対する処理を説明する。なお、図10Aおよび図10Bにおいて、図8に示したものと同一構成のものには同一符号を付してある。
 図10Aは、CPU101が書き込むデータ(アドレス)に対応するブロックが、共有キャッシュメモリ103上にある場合の動作を説明するための図である。
 以下では、制御部103cが、CPU101から、メモリ104が有する複数のアドレスのうちの任意のアドレス(以下「第4アドレス」と称する。)と、store命令と、書き込みデータと、を受け付けた状況で、第4アドレスがアドレスアレイ103bに格納されている場合の動作を説明する。
 この場合、制御部103cは、第4アドレスに対応する、データアレイ103a内のブロックのワードに、書き込みデータを書き込む(ステップ3A01)。
 図10Bは、CPU101が書き込むデータ(アドレス)に対応するブロックが、共有キャッシュメモリ103上にない場合の動作を説明するための図である。
 以下では、制御部103cが、CPU101から、第4アドレスと、store命令と、書き込みデータと、を受け付けた状況で、第4アドレスがアドレスアレイ103bに格納されていない場合の動作を説明する。
 この場合、まず、制御部103cは、第4アドレスを含むブロック(該当ブロック)を、共有キャッシュメモリ103(具体的には、データアレイ103aおよびアドレスアレイ103b)上に割り当てる(ステップ3B01)。
 続いて、制御部103cは、メモリ104から該当ブロックのデータを読み出し、その該当ブロックのデータを、共有キャッシュメモリ103(具体的には、データアレイ103a)に割り当てられた該当ブロックに書き込む(ステップ3B02)。このとき、制御部103cは、その該当ブロックのアドレスを、アドレスアレイ103bに書き込む。
 続いて、制御部103cは、共有キャッシュメモリ103(具体的には、データアレイ103a)の該当ブロック内のワードのうち、第4アドレスに対応するワードに、書き込みデータを書き込む(ステップ3B03)。
 次に、図11Aおよび11Bを使って、プロセッサ間通信装置102からのread命令に対する処理を説明する。なお、図11Aおよび11Bにおいて、図8に示したものと同一構成のものには同一符号を付してある。また、図11Aおよび11Aでは、説明の都合上、データアレイ103aとアドレスアレイ103bの位置関係を、図8に示した位置関係に対して逆にしている。
 図11Aは、プロセッサ間通信装置102が読み出すデータが、共有キャッシュメモリ103上にある場合の動作を説明するための図である。
 以下では、制御部103cが、プロセッサ間通信装置102から、第1アドレスと、read命令(読み出し命令)と、を受け付けた状況で、第1アドレスがアドレスアレイ103bに格納されている場合の動作を説明する。
 この場合、制御部103cは、第1アドレスに対応する、データアレイ103a内のワードから、データを読み出す(ステップ4A01)。
 図11Bは、プロセッサ間通信装置102が読み出すデータが、共有キャッシュメモリ103上にない場合の動作を説明するための図である。
 以下では、制御部103cが、プロセッサ間通信装置102から、第1アドレスと、read命令(読み出し命令)と、を受け付けた状況で、第1アドレスがアドレスアレイ103bに格納されていない場合の動作を説明する。
 この場合、まず、制御部103cは、メモリ104から、第1アドレスに対応づけられたデータを、直接、読み出す(ステップ4B01)。このとき、制御部103cは、共有キャッシュメモリ103(具体的には、データアレイ103aおよびアドレスアレイ103b)に、第1アドレスを含むブロックを割り当てず、第1アドレスに対応づけられたデータを共有キャッシュメモリ103(具体的には、データアレイ103a)に書き込まない。
 次に、図12Aおよび図12Bを使って、プロセッサ間通信装置102からのwrite命令に対する処理を説明する。なお、図12Aおよび図12Bにおいて、図8に示したものと同一構成のものには同一符号を付してある。また、図12Aおよび図12Bでも、説明の都合上、データアレイ103aとアドレスアレイ103bの位置関係を、図8に示した位置関係に対して逆にしている。
 図12Aは、プロセッサ間通信装置102が書き込むデータ(アドレス)に対応するブロックが、共有キャッシュメモリ103上にある場合の動作を説明するための図である。
 以下では、制御部103cが、プロセッサ間通信装置102から、第2アドレスと、write命令(書き込み命令)と、書き込みデータと、を受け付けた状況で、第2アドレスがアドレスアレイ103bに格納されている場合の動作を説明する。
 この場合、制御部103cは、第2アドレスに対応する、データアレイ103a内のブロックのワードに、書き込みデータを書き込む(ステップ5A01)。
 図12Bは、プロセッサ間通信装置102が書き込むデータ(アドレス)に対応するブロックが、共有キャッシュメモリ103上にない場合の動作を説明するための図である。
 以下では、制御部103cが、プロセッサ間通信装置102から、第2アドレスと、write命令(書き込み命令)と、書き込みデータと、を受け付けた状況で、第2アドレスがアドレスアレイ103bに格納されていない場合の動作を説明する。
 この場合、制御部103cは、第2のアドレスに対応づけて、書き込みデータを、直接、メモリ104に書き込む(ステップ5A01)。このとき、制御部103cは、共有キャッシュメモリ103(具体的には、データアレイ103aおよびアドレスアレイ103b)に、第2アドレスを含むブロックを割り当てず、第2アドレスに対応づけられた書き込みデータを書き込まない。
 次に、第1の実施の形態での送信処理について、図13を使って説明する。
 図13は、第1の実施の形態での送信処理を説明するための説明図である。なお、図13において、図8に示したものと同一構成のものには同一符号を付してある。
 まず、CPU101が、送信データ6aを作成する(ステップ601)。なお、送信データ6aは、一般的に通信用データと呼ぶことができる。
 CPU101は、制御部103cに、store命令と、送信データ6aと、送信データ6aを書き込むアドレスと、を送信する。制御部103cは、store命令と送信データ6aを書き込むアドレスとに基づいて、送信データ6aを、共有キャッシュメモリ103またはメモリ104に書き込む。
 ここでは、図4の場合とは異なり、送信データ6aのすべてが、共有キャッシュメモリ103上にキャッシュされていないとして説明を行う。しかしながら、送信データ6aのサイズや作成される時刻によっては、送信データ6aの一部が、共有キャッシュメモリ103上にあり、送信データ6aのその他の部分が、メモリ104に存在することもありうる。
 次に、制御部103cは、CPU101から、store命令と、コマンド6bと、コマンド6bを書き込むアドレスと、を受け付けると、コマンドキュー104aに、コマンド6bを書き込む。なお、コマンド6bは、一般的に通信用コマンドと呼ぶことができる。
 ここでは、コマンド6bを書き込むアドレスは、共有キャッシュメモリ103上にない(書き込み時にキャッシュミスする)として説明する。
 そのため、まず、制御部103cは、コマンド6bを書き込むアドレスを含む該当ブロックのデータを、メモリ104から読み出し、その該当ブロックのデータを共有キャッシュメモリ103(データアレイ103a)に書き込む(ステップ602)。
 続いて、制御部103cは、その該当ブロック内のワードのうち、コマンド6bを書き込むアドレスに対応するワードに、コマンド6bを書き込む(ステップ603)。よって、この場合、コマンド6bは、共有キャッシュメモリ103上にキャッシュされる。
 コマンド6bには、通信の宛先や送信データ6aへのポインタなどが示されている。
 次に、CPU101が、プロセッサ間通信装置102に、コマンド6bの位置を示す送信要求を送る(ステップ604)。
 プロセッサ間通信装置102は、送信要求を受け付けると、制御部103cを用いて、コマンド6bを読み出す。
 コマンド6bは、共有キャッシュメモリ103上にキャッシュされているので、制御部103cは、データアレイ103aから、コマンド6bを読み出す(ステップ605)。このとき、制御部103cは、メモリ104へのライトバックを行わない。
 次に、プロセッサ間通信装置102は、コマンド6b内の送信データ6aへのポインタを使って、制御部103cを用いて、送信データ6aを読み出す。
 ここでは、送信データ6aのすべてが、共有キャッシュメモリ103上に存在しないとしているので、キャッシュミスが発生し、制御部103cは、メモリ104から、送信データ6aを読み出す(ステップ606)。このとき、制御部103cは、送信データ6a(具体的には、送信データ6aが書き込まれたアドレスを含むブロックのデータ)を、共有キャッシュメモリ103(具体的には、データアレイ103aおよびアドレスアレイ103b)に書き込まない。
 そして、プロセッサ間通信装置102は、送信データ6aを用いてパケットを作製して、プロセッサ間ネットワーク105へ、そのパケットを送信する(ステップ607)。
 もしも、送信データ6aが共有キャッシュメモリ103上に存在するなら、その部分の読み出しレイテンシが短くなる。
 図14は、図13に示した送信処理を説明するためのタイムチャートである。なお、図14において、図8に示したものと同一構成のものには同一符号を付してある。
 ここでは、制御部103cが、CPU101からのコマンド6bを、コマンドキュー104aに書き込む時に、共有キャッシュメモリ103で、キャッシュミスが発生する場合を記述している。
 CPU101からのコマンド6bの書き込みでキャッシュミスが起こると、制御部103cは、コマンド6bを書き込むアドレスを含むブロックのデータを、メモリ104から読み出し、そのブロックのデータを、共有キャッシュメモリ103(データアレイ103a)に書き込む(ステップ701)。このとき、制御部103cは、そのブロックのアドレスを、アドレスアレイ103bに書き込む。
 そして、制御部103cは、共有キャッシュメモリ103(データアレイ103a)に、コマンドを書き込む(ステップ702)。
 CPU101からの送信要求を契機に(ステップ703)、プロセッサ間通信装置102が、制御部103cを用いて、共有キャッシュメモリ103(データアレイ103a)からコマンド6bを読み出す(ステップ704)。
 そして、プロセッサ間通信装置102は、制御部103cを用いて、メモリ104から、送信データ6aを読み出す(ステップ705)。
 図14に示すように、プロセッサ間通信装置102が、送信データ6aを読み出すときは、複数の読み出しリクエストを先行発行することで、読み出しレイテンシを隠蔽することが可能である。
 本実施の形態によれば、制御部103cは、プロセッサ間通信装置102から、第1アドレスと、読み出し命令と、を受け付けた状況で、第1アドレスがアドレスアレイ103bに格納されている場合には、第1アドレスに対応するデータアレイ103aのワードからデータを読み出し、第1アドレスがアドレスアレイ103bに格納されていない場合には、メモリ104から第1アドレスに対応づけられたデータを読み出し、かつ、そのデータをデータアレイ103aに書き込まない。
 このため、図5と見比べると、例えば、CPU101とプロセッサ間通信装置102間のコマンドの受け渡しの時間が短縮された(期間T705)ことがわかり、情報の受け渡し時間(この場合、送信時間)の短縮化という効果が明らかである。
 次に、第1の実施の形態での受信処理について、図15を使って説明する。図15は、第1の実施の形態での受信処理を説明するための説明図である。なお、図15において、図8に示したものと同一構成のものには同一符号を付してある。
 まず、プロセッサ間通信装置102が、プロセッサ間ネットワーク105から、パケットを受信する(ステップ801)。
 そして、プロセッサ間通信装置102は、パケットの中の受信データ8aを、制御部103cを用いて、メモリ104上に書き込む。なお、受信データ8aは、一般的に書き込み用データと呼ぶことができる。
 ここでは、受信データ8aを書き込むアドレスを含むすべてのブロックが、共有キャッシュメモリ103にキャッシュされていないとして説明する。
 この場合、キャッシュミスが発生し、制御部103cは、直接、メモリ104に、受信データ8aを書き込む(ステップ802)。
 プロセッサ間通信装置102は、制御部103cが受信データ8aのすべてをメモリ104に書き込んだ後、制御部103cを用いて、受信完了フラグ8bを書き込む。なお、受信完了フラグ8bは、一般的に書き込みデータと呼ぶことができる。
 ここで、受信完了フラグ8bは、CPU101によってポーリングされていると考えられるので、受信完了フラグ8bのアドレスを含むブロックは、共有キャッシュメモリ103上に存在する。
 従って、制御部103cは、受信完了フラグ8bを、共有キャッシュメモリ103に書き込む(ステップ803)。
 CPU101は、受信完了フラグをポーリングしているので、プロセッサ間通信装置102により書き換えられた受信完了フラグ8bを、制御部103cを用いて、共有キャッシュメモリ103から読み出す(ステップ804)。
 そして、CPU101は、受信完了フラグ8bを参照することによって、受信データ8aが書き込まれたことを知り、制御部103cを用いて、受信データ8aを読み出す。
 受信データ8aは、メモリ104にあるので、CPU101からの受信データ8aの読み出しでキャッシュミスが発生し、制御部103cは、受信データ8aのアドレスを含むブロックのデータを、メモリ104から読み出し、共有キャッシュメモリ103(データアレイ103a)に書き込み(ステップ805)、共有キャッシュメモリ103(データアレイ103a)から、受信データ8aを読み出す(ステップ806)。
 ここで、受信データ8aのアドレスを含むブロックが、共有キャッシュメモリ103上にある場合は、プロセッサ間通信装置102からの受信データ8aの書き込みと、CPU101からの受信データ8aの読み出しのレイテンシが短縮される。
 図16は、図15に示した受信処理を説明するためのタイムチャートである。なお、図16において、図8に示したものと同一構成のものには同一符号を付してある。
 受信データ8aのアドレスを含むすべてのブロックが、共有キャッシュメモリ103上にないので、制御部103cは、プロセッサ間通信装置102からの受信データ8aを、メモリ104に書き込む(ステップ901)。
 次に、プロセッサ間通信装置102は、制御部103cを用いて、受信完了フラグ8bを書き込む。
 受信完了フラグ8bは、CPU101によってポーリングされているので、受信完了フラグ8bのアドレスを含むブロックは、共有キャッシュメモリ103上にある。
 そのため、制御部103cは、共有キャッシュメモリ103(データアレイ103c)に、受信完了フラグ8bを書き込む(ステップ902)。
 その直後に、CPU101が、制御部103cを用いて、受信完了フラグ8bを、共有キャッシュメモリ103から読み出す(ステップ903)。
 そして、CPU101は、受信完了フラグ8bを参照することによって、受信データ8aがメモリ104に書き込まれたことを確認して、受信データ8aを読み出す。
 受信データ8aは、メモリ104に格納されているので、共有キャッシュメモリ103で読み出しミスが起こり、制御部103cは、受信データ8aのアドレスを含むブロックのデータを、メモリ104から読み出し、共有キャッシュメモリ103に書き込む(ステップ904)。
 そして、CPU101は、制御部103cを用いて、共有キャッシュメモリ103から、受信データ8aを読み出す(ステップ905)。
 図16に示すように、プロセッサ間通信装置102が、受信データ8aを、メモリ104に書き込むときは、複数の書き込みリクエストを先行発行することで、書き込みのレイテンシを隠蔽できる。
 同様に、CPU101が受信データ8aを読み出すときも、複数の読み出しリクエストを先行発行することで、読み出しレイテンシを隠蔽することが可能である。
 本実施の形態によれば、制御部103cは、プロセッサ間通信装置102から、第2アドレスと、書き込み命令と、書き込みデータと、を受け付けた状況で、第2アドレスがアドレスアレイ103aに格納されている場合には、第2アドレスに対応するワードに書き込みデータを書き込み、第2アドレスがアドレスアレイ103aに格納されていない場合には、第2のアドレスに対応づけて書き込みデータをメモリ104に書き込み、かつ、その書き込みデータをデータアレイ103aに書き込まない。
 このため、図7と見比べると、例えば、プロセッサ間通信装置102とCPU101間の受信完了フラグの受け渡しの時間が短縮された(期間T906)ことがわかり、情報の受け渡し時間(この場合、送信時間)の短縮化という効果が明らかである。
 本実施の形態によれば、プロセッサ間通信のレイテンシを削減するために、送信時において、CPU101からプロセッサ間通信装置102へコマンド6bを渡すところ、および、受信時においてプロセッサ間通信装置102からCPU101へ受信完了フラグ8bを伝えるところの処理の時間を削減することが可能になる。
 つまり、本実施の形態によれば、送信時において、プロセッサ間通信装置102が、メモリ104または共有キャッシュメモリ103上のコマンドキュー104aから、コマンド6bを読み出すために要する時間を、短縮することができ、高いプロセッサ間通信性能を提供することが可能になる。
 また、本実施の形態によれば、受信時において、CPU101が、共有キャッシュメモリ103から、受信完了フラグ8bを読み出すために要する時間を、短縮することができ、高いプロセッサ間通信性能を提供することが可能になる。
 なお、本実施の形態では、CPU101とプロセッサ間通信装置102が、共有キャッシュメモリ103を共有する構成を採る。
 そして、制御部103cは、CPU101からの命令を受け付けた状況でキャッシュミスが発生した時に、データアレイ103aおよびアドレスアレイ103bにブロックを割り当てるが、プロセッサ間通信装置102からの命令を受け付けた状況でキャッシュミスが発生した時には、データアレイ103aおよびアドレスアレイ103bにブロックを割り当てない。
 制御部103cは、プロセッサ間通信装置102からの命令を受け付けた状況でキャッシュヒットした際には、共有キャッシュメモリ103上にあるブロックに対して、読み書きできるが、プロセッサ間通信装置102からの命令を受け付けた状況でキャッシュミスした際には、直接、メモリ104に読み書きする。
 本実施の形態による第1の効果は、プロセッサ間通信装置102が、CPU101にて共有キャッシュメモリ103上に書かれたコマンド6bを、直接読むことにより、プロセッサ間通信装置102によるコマンド6bの読み出し時間を短くできることである。
 また、第2の効果は、プロセッサ間通信装置102が、受信完了フラグ8bを共有キャッシュメモリ103上に書き込むことにより、CPU101が受信完了フラグ8bを読み出す時間を短くできることである。なお、受信完了フラグ8bは、CPU101によりポーリングされるので、共有キャッシュメモリ103上に存在する。
 (第2の実施の形態)
 次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。
 図17Aおよび17Bは、本発明の第2の実施の形態の並列計算機用プロセッサ(以下、単に「プロセッサ」と称する。)100Aを示したブロック図である。
 図17Aおよび17Bにおいて、プロセッサ100Aは、一般的に情報処理装置と呼ぶことができる。プロセッサ100Aは、CPU101Aと、プロセッサ間通信装置102Aと、共有キャッシュメモリ103Aと、メモリ104とを含む。共有キャッシュメモリ103Aは、データアレイ103Aaと、アドレスアレイ103Abと、制御部103Acとを含む。
 第2の実施の形態では、制御部103Acは、CPU101Aからの書き込み時、または、プロセッサ間通信装置102Aからの第2の書き込み命令(Write2命令:所定書き込み命令)を使っての書き込み時に、共有キャッシュメモリ103A(データアレイ103Aaおよびアドレスアレイ103Ab)に、その書き込み命令に対応する書き込みアドレスを含むブロックがない場合、以下のような動作を実行する。
 制御部103Acは、共有キャッシュメモリ103A(データアレイ103Aaおよびアドレスアレイ103Ab)に新たなブロックを割り当て、メモリ104から、そのブロックのデータの読み出しはせずに、書き込みデータを、その新たなブロック内の書き込みアドレスに対応するワードに書き込み、データが書き込まれた新たなブロック内のワードを示す情報を、アドレスアレイ103Abに記憶する。
 なお、プロセッサ間通信装置102Aからの第1の書き込み命令(Write1命令:書き込み命令)での共有キャッシュメモリ103Aの動作は、第1の実施の形態のプロセッサ間通信装置102からの書き込み時の共有キャッシュメモリ103の動作と同じである。
 プロセッサ間通信装置102Aは、受信完了フラグを書き込む場合だけに、第2の書き込み命令(Write2命令)を用いる。このため、プロセッサ間通信装置102Aは、受信データの書き込みには、第1の書き込み命令(Write1命令)を用いる。
 なお、データアレイ103Aaは、一般的にデータ格納手段と呼ぶことができ、アドレスアレイ103Abは、一般的にアドレス格納手段と呼ぶことができ、制御部103Acは、一般的に制御手段と呼ぶことができる。
 図17Aおよび17Bは、プロセッサ間通信装置102Aから、第2の書き込み命令(Write2命令)と、第2アドレスと、書き込みデータと、を受け付けた場合の、共有キャッシュメモリ103Aの動きを説明するための図である。
 なお、図17Aおよび17Bでは、プロセッサ間通信装置102Aから第2の書き込み命令を受け付けた場合の共有キャッシュメモリ103Aの動きを説明しているが、CPU101Aからstore命令を受け付けた場合の共有キャッシュメモリ103Aの動作も同じである。
 図17Aは、プロセッサ間通信装置102AからのWrite2命令の書き込みに対応したブロックが、共有キャッシュメモリ103A上に存在する場合の動作を説明するための図である。
 以下では、制御部103Acが、プロセッサ間通信装置102Aから、第2アドレスと、write2命令(第2書き込み命令)と、書き込みデータと、を受け付けた状況で、第2アドレスがアドレスアレイ103Abに格納されている場合の動作を説明する。
 この場合、制御部103Acは、第2アドレスに対応する、データアレイ103Aa内のブロックのワードに、書き込みデータを書き込まれる(ステップ10A01)。そして、制御部103Acは、第2アドレスに対応するワードに書き込みデータが書き込まれたことを、アドレスアレイ103Abに記憶する。
 図17Bは、プロセッサ間通信装置102AからのWrite2命令の書き込みに対応したブロックが、共有キャッシュメモリ103A上に存在しない場合の動作を説明するための図である。
 以下では、制御部103Acが、プロセッサ間通信装置102Aから、第2アドレスと、write2命令と、書き込みデータと、を受け付けた状況で、第2アドレスがアドレスアレイ103Abに格納されていない場合の動作を説明する。
 この場合、制御部103Acは、第2アドレスを含むブロックを、共有キャッシュメモリ103A(データアレイ103Aaとアドレスアレイ103Ab)上に割り当てられる(ステップ10B01)。
 そして、制御部103Acは、そのブロックのうち、第2アドレスに対応するワードに、書き込みデータを書き込む(ステップ10B02)。
 そして、制御部103Acは、第2アドレスに対応するワードに書き込みデータが書き込まれたことを、アドレスアレイ103Abに記憶する。なお、制御部103Acは、ブロックを割り当てるときに、メモリ104からブロックのデータを読み出すことは行わない。
 次に、第2の実施の形態で用いる共有キャッシュメモリ103Aについて詳細に説明する。
 図18は、共有キャッシュメモリ103Aを示したブロック図である。
 図18において、共有キャッシュメモリ103Aは、CPU101A、プロセッサ間通信装置102Aおよびメモリ104と接続される。
 共有キャッシュメモリ103Aは、データアレイ103Aa、アドレスアレイ103Ab、アドレスレジスタ1、比較器2、および、キャッシュ制御ユニット3を含む。アドレスレジスタ1と比較部2とキャッシュ制御ユニット3は、制御部103Acに含まれる。
 アドレスレジスタ1は、CPU101Aが要求したアドレス、または、プロセッサ間通信装置102Aが要求したアドレスを格納する。アドレスレジスタ1に格納されるアドレスは、上位mビット9、中位nビット7、および、下位kビット12によって表される。
 上位mビット9のデータは、比較器2に提供され、中位nビット7のデータは、アドレスアレイ103Abとデータアレイ103Aaに提供される。
 アドレスアレイ103Abは、2のn乗個のエントリ(以下「アドレスエントリ」と称する。)を持つメモリである。なお、データアレイ103Aaも、2のn乗個のエントリ(以下「データエントリ」と称する。)を持つメモリである。データアレイ103Aaは、複数のワードからなる複数のブロック(データエントリ)を有する。
 各アドレスエントリは、中位nビット7のデータに基づいて、各データエントリと1対1で対応している。
 各アドレスエントリは、中位nビット7のデータが表すことが可能な値に対応するオフセットを有する。このため、各アドレスエントリは、中位nビット7に対応する。なお、オフセットは、一般的にインデックスとも呼ばれる。
 アドレスアレイ103Abは、データアレイ103Aaのデータエントリにブロック単位で格納されているデータ(ブロックデータ)の索引として使用される。
 アドレスアレイ103Abの1つのアドレスエントリは、中位nビット7に対応するオフセットごとに、アドレスの上位mビット4と、そのブロックの状態と他の情報を表すビット列(以下「状態他ビット列」または「ビット列」とも称する。)5と、を含む。アドレスの上位mビット4は、ブロックデータのアドレス(ブロックアドレス)の一部である。
 アドレスアレイ103Abのうち、中位nビット7に対応するオフセットごとに、上位mビット4を格納する部分は、格納部の一例である。
 格納部は、少なくとも1つのワードにデータが格納されたデータエントリに対応する、メモリ104のアドレス群(上位mビットのデータと中位nビットのデータ)を格納する。
 このアドレス群は、上位mビットと中位nビットのデータが規定され、かつ、下位kビットのデータが任意の値となる、複数のアドレスを意味する。
 アドレスアレイ103Abのうち、ビット列5を格納する部分は、ワード状態記憶部5aと、ブロック状態記憶部5bと、を含む(図19参照)。
 ワード状態記憶部5aは、一般的にワード状態記憶手段と呼ぶことができる。
 ワード状態記憶部5aは、CPU101Aまたはプロセッサ間通信装置102Aからのデータが書き込まれたワードを特定するためのワード状態情報(W(1)~W(8))を、そのワードに対応づけられたアドレスと関連づけて記憶する。
 なお、W(1)~W(8)において、その値が1になっているものは、キャッシュ制御ユニット3にてデータが書き込まれたワードを示すワード情報となる。
 ブロック状態記憶部5bは、一般的にブロック状態記憶手段と呼ぶことができる。
 ブロック状態記憶部5bは、データアレイ103Aaのブロックに対応するアドレス群ごとに、そのブロック内のワードのうち、CPU101Aまたはプロセッサ間通信装置102Aから書き込まれていないワードに、メモリ104から読み出されたデータが記憶されているか否かを示すブロック状態情報(BV)を記憶する。
 なお、ビット列5の詳細については後述する。
 アドレスアレイ103Abは、中位nビット7のデータをオフセット8として受け付けると、オフセット8に対応するアドレスエントリから、上位mビット4のデータと、ビット列5のデータと、を出力する。
 上位mビット4のデータは、比較器2に提供され、ビット列5のデータは、キャッシュ制御ユニット3に提供される。
 データアレイ103Aaの1つのデータエントリは、2のk乗バイトのブロックデータ(以下、単に「ブロック」とも称する。)6を格納する。
 各データエントリは、各アドレスエントリと1対1で対応しているため、各データエントリ内のブロックも、各アドレスエントリと1対1で対応する。
 比較器2は、アドレスアレイ103Abからの上位mビット4のデータと、アドレスレジスタ1からの上位mビット9のデータと、を比較する。
 上位mビット4のデータと上位mビット9のデータが一致した場合は、アドレスレジスタ1内のアドレスにて指定されたデータを含むブロックが、共有キャッシュメモリ(具体的には、アドレスアレイ103Abとデータアレイ103Aa)上にあることになる。
 キャッシュ制御ユニット3は、比較器2からの比較結果10、アクセス情報11、および、アドレスアレイ103Abからのビット列5に基づいて、共有キャッシュメモリ103A(具体的には、アドレスアレイ103Abとデータアレイ103Aa)を制御する。
 アクセス情報11は、アクセス元(CPU101Aか、プロセッサ間通信装置102A)と、アクセス内容(各命令)と、を示す。
 制御部103Acは、共有キャッシュメモリ103Aの動作を制御する。
 制御部103Acは、例えば、CPU101Aから、書き込み命令と、アドレスと、データと、を受け付ける。また、制御部103Acは、例えば、プロセッサ間通信装置102Aから、第1の書き込み命令(Write1命令)と、アドレスと、データと、を受け付ける。また、制御部103Acは、例えば、プロセッサ間通信装置102Aから、第2の書き込み命令(Write2命令)と、アドレスと、データと、を受け付ける。
 制御部103Acは、書き込み命令(CPU101Aからの書き込み命令、プロセッサ間通信装置102Aからの第2の書き込み命令)と共に受け付けられたアドレスが、アドレスアレイ103Ab(具体的には、中位nビット7に対応するオフセットごとに上位mビット4を格納する部分)内にない場合、データアレイ103Aa内の複数のブロックのいずれかを、書込み用ブロックとして割り当てる。
 制御部103Acは、書き込み命令と共に受け付けられたアドレスを含むブロックのデータを、メモリ104から読み込まずに、その書込み用ブロック内のいずれかのワードを、そのアドレスに対応づけ、そのワードに、書き込み命令と共に受け付けられたデータを書き込む。
 制御部103Acは、例えば、CPU101Aから、読み出し命令とアドレスを受け付ける。また、制御部103Acは、例えば、プロセッサ間通信装置102Aから、読み出し命令(read命令)とアドレスを受け付ける。
 制御部103Acは、読み出し命令(CPU101Aからの読み出し命令、または、プロセッサ間通信装置102Aからの読み出し命令)と共に受け付けられたアドレスに対応するワード状態情報(W(i)=1)を、ワード状態記憶部5aが記憶している場合、または、そのアドレスに対応するブロック状態情報(BV=1)をブロック状態記憶部5bが記憶している場合、そのアドレスから特定される、データアレイ103Aa内のワードからデータを読み出す。
 また、制御部103Acは、読み出し命令に応じた読み出し時にキャッシュミスが生じたとき、読み出し命令と共に受け付けられたアドレスを含むブロック内のデータを、メモリ104から読み出す。
 制御部103Acは、続いて、ワード状態記憶部5aを参照して、データアレイ103Aaのワードから、そのブロック内でデータが書き込まれていない1つまたは複数のワードを特定する。
 制御部103Acは、その特定された1つまたは複数のワードにだけ、メモリ104から読み出したブロックのデータを書き込む。
 制御部103Acは、続いて、ブロック状態記憶部5bに、そのブロック内のワードのうち、CPU101Aまたはプロセッサ間通信装置102Aからデータが書き込まれていない1つまたは複数のワードに、メモリ104から読み出されたデータが記憶されていることを示すブロック状態情報(BV=1)を記憶する。
 制御部103Acは、読み出し命令とアドレスを受け付けた場合、ワード状態記憶部5aおよびブロック状態記憶部5bを参照して、キャッシュヒットまたはキャッシュミスが生じたかを判断する。
 制御部103Acは、データアレイ103Aa内のブロック内の指定された1つまたは複数のワードのデータだけを、メモリ104内の対応するブロックに書き込む。
 例えば、制御部103Acは、ワード状態記憶部5aを参照して、書込み用ブロック内でデータが書き込まれた1つまたは複数のワードを特定し、その特定された1つまたは複数のワード内のデータを、メモリ104内の対応するブロックにライトバックする。
 本実施の形態では、制御部103Acは、データアレイ103Aa内のブロックと対応するメモリ104のアドレスが切り替えられる時、ワード状態記憶部5aとブロック状態記憶部5bを参照して、そのブロック内のすべてのワードにCPU101Aまたはプロセッサ間通信装置102Aからデータが書き込まれたか、一度メモリ104からブロックが読み出された場合には、そのブロック全体をメモリ104内の対応するブロックにライトバックする。そうでない場合には、制御部103Acは、そのブロック内でデータが書き込まれた1つまたは複数のワードを特定し、その特定された1つまたは複数のワード内のデータだけを、メモリ104内の対応するブロックにライトバックする。
 なお、以下の説明では、アドレスレジスタ1に格納されるアドレスは、64ビットとし、k=6、すなわちブロックのサイズを64バイトとし、n=10、すなわちアドレスアレイ103Abのアドレスエントリ数、および、データアレイ103Aaのデータエントリ数を1024とし、m=48とする。また、64バイトのブロックは、8個のワードからなる。なお、1ワードは8バイトである。
 本実施の形態では、共有キャッシュメモリ103Aとして、ダイレクトマップ方式のキャッシュメモリを示しているが、セットアソシアティブ方式のキャッシュメモリが用いられてもよい。その場合は、ウェイ数分、アドレスアレイ103Ab、データアレイ103Aa、および、比較器2が必要である。
 次に、図18に示した共有キャッシュメモリ103Aの動作を説明する。
 共有キャッシュメモリ103Aへのアクセスがあった場合に、アドレスレジスタ1は、そのアクセスに示されたアドレスを格納する。なお、このアドレスは、論理アドレスでも物理アドレスでもよい。
 本実施の形態では、このアドレスを、何らかのアドレス変換の手段により仮想アドレスから変換された物理アドレスとして説明を行う。
 ブロックのサイズは64バイトなので、アドレスレジスタ1の下位6(k)ビット12のデータは、データアレイ103Aaのブロック内のワードのアドレスとなる。
 中位10(n)ビット7のデータが、アドレスアレイ103Abのオフセット8として用いられて、アドレスアレイ103Abのアドレスエントリ内のデータ(上位48(m)ビット4のデータとビット列5のデータ)が読み出される。
 比較器2は、読み出された上位48(m)ビット4のデータと、アドレスレジスタ1内の上位48(m)ビット9のデータと、を比較して、アドレスレジスタ1内のアドレスにて指定されたデータを含むブロックが、すでに共有キャッシュメモリ103Aにあるかどうかを判断する。
 キャッシュ制御ユニット3は、比較器2の比較結果10と、アクセス情報11と、ビット列5とを受け付ける。
 キャッシュ制御ユニット3は、比較結果10、アクセス情報11、および、ビット列5に基づいて、共有キャッシュメモリ103Aの動作を決定する。
 キャッシュ制御ユニット3の動作の詳細ついては、後述する。
 図19は、アドレスアレイ103Abに格納されるビット列5の一例を示した説明図である。
 ビット列5は、9ビットで構成される。具体的には、ビット列5は、1ビットのBV5bと、8ビットのW(i)(i=1~8)5aとからなる。W(i)(i=1~8)5aは、1ビットのW(1)~W(8)からなる。なお、BV5bは、ブロック状態記憶部の一例であり、W(i)(i=1~8)5aは、ワード状態記憶部の一例である。
 W(1)~W(8)5aは、データアレイ103Aaのブロックデータの各ワードのアドレス、すなわち各ワードに対応する。ブロックデータは、8ワードからなるので、W(1)は、ブロックデータ204の1ワード目に対応し、W(2)は2ワード目、W(3)は3ワード目、W(4)は4ワード目、W(5)は5ワード目、W(6)は6ワード目、W(7)は7ワード目、W(8)は8ワード目に対応する。
 W(i)5aの値が1のときは、i番目のワードにデータが書き込まれたことを示す。つまり、W(i)5aが1のときは、ブロックデータ204のi番目のワードには、CPU101Aまたはプロセッサ間通信装置102Aから書き込まれた有効なデータが格納されていることになる。
 W(i)5aの値が0のときは、i番目のワードには、CPU101Aからもプロセッサ間通信装置102Aからもデータが書き込まれていないことを示す。
 BV5bは、BV5bを含むアドレスエントリに対応する、データアレイ103Aa内のブロック全体が有効かどうかを示す。
 具体的には、BV5bの値が1のときは、CPU101Aからもプロセッサ間通信装置102Aからもデータが書き込まれていないワード(W(i)5aが0)に、メモリ104から読み出されたデータが格納されていることを示しており、対応するブロック全体が有効であることを意味する。
 すなわち、BV5bの値が1のときは、i番目のワードの状態を示すW(i)5aの値が0、つまり、W(i)5aがi番目のワードにCPU101Aからもプロセッサ間通信装置102Aからもデータが書き込まれていないことを示す場合であったとしても、i番目のワードにメモリ104から読み出されたデータが書き込まれたことにより、i番目のワードに有効なデータが格納されていることを示す。
 また、BV5bの値が0の場合には、i番目のワードの状態を示すW(i)5aの値が1であるワードのデータだけが有効で、W(i)5aの値が0であるワードのデータは無効であることを示す。
 図20は、図19に示したBV5bとW(i)5aの値によるi番目のワードの有効/無効を示す説明図である。
 次に、図18および図19を参照しながら、共有キャッシュメモリ103Aの動作について詳細に説明する。
 図21は、キャッシュ制御ユニット3の動作を説明するためのフローチャートである。
 アドレスレジスタ1が、共有キャッシュメモリ103Aにアクセスされたアドレスを格納すると、その後、そのアドレスの中位10(n)ビット7のデータが、アドレスアレイ103Abおよびデータアレイ103Aaのオフセット8として使用されて、アドレスアレイ103Abのアドレスエントリ内の上位48(m)ビット4のデータとビット列5のデータが読み出され、データアレイ103Aaのデータエントリがアクセスされる。
 比較器2は、読み出された上位48(m)ビット4のデータと、アドレスレジスタ1内の上位48(m)ビット9のデータと、を比較して、アドレスレジスタ1内のアドレスにて指定されたデータを含むブロックが、すでに共有キャッシュメモリ103Aにあるかどうかを判断する。
 キャッシュ制御ユニット3は、比較器2の比較結果10と、ビット列5のデータと、アクセス情報11と、を受け付ける。
 なお、アクセス情報11は、CPU101Aまたはプロセッサ間通信装置102Aから提供される。また、キャッシュ制御ユニット3は、下位6(k)ビット12のデータも受け付ける。
 また、キャッシュ制御ユニット3は、アクセスがCPU101Aからの書き込みである場合、CPU101Aから書き込みデータ(例えば、通信用データ)も受け付ける。
 また、キャッシュ制御ユニット3は、アクセスがプロセッサ間通信装置102A2からの書き込みである場合、プロセッサ間通信装置102A2から書き込みデータまたは書き込み用データも受け付ける。なお、以下では、書き込み用データを書き込みデータとして記載する。
 以下では、この時点からのキャッシュ制御ユニット3の動作について説明する。
 キャッシュ制御ユニット3は、まず、アクセス元とアクセス内容を示すアクセス情報11に基づいて、今後行う処理を決定する(ステップ420)。
 まず、アクセス情報11が、CPU101Aからのアクセスを示す場合(ステップ421)、キャッシュ制御ユニット3は、ステップ401を実行する。一方、アクセス情報11が、プロセッサ間通信装置102Aからのアクセスを示す場合(ステップ422)、キャッシュ制御ユニット3は、ステップ423を実行する。なお、ステップ423については、後で、図22を使って説明する。
 ステップ401では、キャッシュ制御ユニット3は、アクセス情報11に基づいて、CPU101Aからのアクセスが、書き込みか読み出しかを判断する。
 CPU101Aからのアクセスが書き込みである場合(ステップ402)、キャッシュ制御ユニット3は、ステップ403を実行する。
 ステップ403では、キャッシュ制御ユニット3は、比較器2の比較結果10に基づいて、アクセスされたブロックを格納しているエントリが、すでに共有キャッシュメモリ103A(アドレスアレイ103Abとデータアレイ103Aa)にあるかどうかを判断する。
 比較結果10が一致を示す場合、キャッシュ制御ユニット3は、アクセスされたブロックは共有キャッシュメモリ103Aにあると判断する(ステップ404)。
 比較結果10が一致を示さない場合は、キャッシュ制御ユニット3は、アクセスされたブロックが共有キャッシュメモリ103Aにないと判断する(ステップ405)。
 アクセスされたブロックが共有キャッシュメモリ103Aにあった場合(ステップ404)、キャッシュ制御ユニット3は、下位6(k)ビット12のデータに基づいて、そのブロックのデータ内のワードを特定し、そのワードに対して、書き込みデータを書き込み(ステップ406)、データが書き込まれたワードに対応するW(i)5aの値を1にする(ステップ407)。
 アクセスされたブロックが共有キャッシュメモリ103Aにない場合(ステップ405)、キャッシュ制御ユニット3は、新しいブロックを、書込み用ブロックとして、データアレイ103Aaに割り当てる処理を行う(ステップ408)。
 新しいブロックを割り当てる処理(ステップ408)については、後に、図23を使って詳しく述べる。
 ステップ408の後、キャッシュ制御ユニット3は、アドレスアレイ103Ab内の複数のエントリの中から、新しく割り当てたブロックに対応するエントリを特定し、その特定されたエントリの上位48(m)ビット4に、アドレスレジスタ1の上位48(m)ビット9のデータを書き込み、同じく、その特定されたエントリのビット列5をゼロクリア(BV=0、W(1~8)=0)して、初期化する(ステップ409)。
 ステップ409の後、キャッシュ制御ユニット3は、下位6(k)ビット12のデータに基づいて、新しく割り当てたブロック内のワードを特定し、そのワードに対して、書き込みデータを書き込み(ステップ406)、データが書き込まれたワードに対応するW(i) 5aの値を1にする(ステップ407)。
 CPU101Aからのアクセスが読み出しである場合(ステップ410)、キャッシュ制御ユニット3は、ステップ411を実行する。
 ステップ411では、キャッシュ制御ユニット3は、比較器2の比較結果10に基づいて、アクセスされたブロックを格納しているエントリが、すでに共有キャッシュメモリ103A(アドレスアレイ103Abとデータアレイ103Aa)にあるかどうかを判断する。
 比較結果10が一致を示す場合、キャッシュ制御ユニット3は、アクセスされたブロックは共有キャッシュメモリ103Aにあると判断する(ステップ412)。
 一方、比較結果10が一致を示さない場合、キャッシュ制御ユニット3は、アクセスされたブロックが共有キャッシュメモリ103Aにないと判断する(ステップ413)。
 アクセスされたブロックが共有キャッシュメモリ103Aにあり(ステップ412)、かつ、アクセスされたワードに対応するW(i)の値が1またはアクセスされたブロックのBV5bが1の場合(ステップ424)、キャッシュ制御ユニット3は、データアレイ103Aa内のブロックデータの中から、アクセスされたブロックデータ6を特定し、その特定されたブロックデータ6内のワードのうち、下位6(k)ビット12で特定されるワードから、データを読み出す(ステップ414)。
 アクセスされたブロックが共有キャッシュメモリ103Aにない場合(ステップ413)、キャッシュ制御ユニット3は、新しいブロックを割り当てる処理を行う(ステップ418)。
 新しいブロックを割り当てる処理(ステップ418)については、後に図23を使って詳しく述べる。
 続いて、キャッシュ制御ユニット3は、アドレスアレイ103Ab内の複数のエントリの中から、新しく割り当てたブロックに対応するエントリを特定し、その特定されたエントリの上位48(m)ビット4に、アドレスレジスタ1の上位48(m)ビット9のデータを書き込み、同じく、その特定されたエントリのビット列5をゼロクリア(BV=0、W(1~8)=0)して、初期化する(ステップ419)。
 続いて、キャッシュ制御ユニット3は、メモリ104から、そのブロックのデータを読み出し、そのブロックに対応するデータアレイ103Aaのエントリのブロックデータ6中のW(i)=0のワードだけに、読み出したデータを書き込む(ステップ416)。この場合、ステップ419でビット列5をゼロクリアしているので、ブロックデータ6全体が書かれる。
 続いて、キャッシュ制御ユニット3は、そのブロックに対応する、アドレスアレイ103Abのエントリ内のBV5bを1にする(ステップ417)。
 続いて、キャッシュ制御ユニット3は、データアレイ103Aaから、アクセスされたワードを読み出す(ステップ414)。
 一方、アクセスされたブロックが共有キャッシュメモリ103Aにあり(ステップ412)、かつ、アクセスされたワードに対応するW(i)の値が0でかつアクセスされたブロックのBV5bが0の場合(ステップ415)、キャッシュ制御ユニット3は、ステップ416、417および414を実行する。
 次に、図22を使って、アクセス情報11が、プロセッサ間通信装置102Aからのアクセスを示す場合の処理(図21のステップ423)を説明する。
 まず、キャッシュ制御ユニット3は、アクセス情報11に基づいて、プロセッサ間通信装置102Aからのアクセスが、read命令か、write1命令か、write2命令かを判断する(ステップ501)。
 プロセッサ間通信装置102AからのアクセスがWrite2命令である場合(ステップ502)、キャッシュ制御ユニット3は、ステップ503を実行する。
 ステップ503では、キャッシュ制御ユニット3は、比較器2の比較結果10に基づいて、アクセスされたブロックを格納しているエントリが、すでに共有キャッシュメモリ103A(アドレスアレイ103Abとデータアレイ103Aa)にあるかどうかを判断する。
 比較結果10が一致を示す場合、キャッシュ制御ユニット3は、アクセスされたブロックは共有キャッシュメモリ103Aにあると判断する(ステップ504)。
 比較結果10が一致を示さない場合は、キャッシュ制御ユニット3は、アクセスされたブロックが共有キャッシュメモリ103Aにないと判断する(ステップ505)。
 アクセスされたブロックが共有キャッシュメモリ103Aにあった場合(ステップ504)、キャッシュ制御ユニット3は、下位6(k)ビット12のデータに基づいて、そのブロックのデータ内のワードを特定し、そのワードに対して、書き込みデータを書き込み(ステップ506)、データが書き込まれたワードに対応するW(i)5aの値を1にする(ステップ507)。
 アクセスされたブロックが共有キャッシュメモリ103Aにない場合(ステップ505)、キャッシュ制御ユニット3は、新しいブロックを、書き込み用ブロックとして、データアレイ103Aaに割り当てる処理を行う(ステップ508)。
 新しいブロックを割り当てる処理(ステップ508)については、後に、図23を使って詳しく述べる。
 ステップ508の後、キャッシュ制御ユニット3は、アドレスアレイ103Ab内の複数のエントリの中から、新しく割り当てたブロックに対応するエントリを特定し、その特定されたエントリの上位48(m)ビット4に、アドレスレジスタ1の上位48(m)ビット9のデータを書き込み、同じく、その特定されたエントリのビット列5をゼロクリア(BV=0、W(1~8)=0)して、初期化する(ステップ509)。
 ステップ509の後、キャッシュ制御ユニット3は、下位6(k)ビット12のデータに基づいて、新しく割り当てたブロック内のワードを特定し、そのワードに対して、書き込みデータを書き込み(ステップ506)、データが書き込まれたワードに対応するW(i) 5aの値を1にする(ステップ507)。
 次に、プロセッサ間通信装置102AからのアクセスがWrite1命令である場合(ステップ522)、キャッシュ制御ユニット3は、ステップ523を実行する。
 ステップ523では、キャッシュ制御ユニット3は、比較器2の比較結果10に基づいて、アクセスされたブロックを格納しているエントリが、すでに共有キャッシュメモリ103A(アドレスアレイ103Abとデータアレイ103Aa)にあるかどうかを判断する。
 比較結果10が一致を示す場合、キャッシュ制御ユニット3は、アクセスされたブロックは共有キャッシュメモリ103Aにあると判断する(ステップ524)。
 一方、比較結果10が一致を示さない場合は、キャッシュ制御ユニット3は、アクセスされたブロックが共有キャッシュメモリ103Aにないと判断する(ステップ525)。
 アクセスされたブロックが共有キャッシュメモリ103Aにある場合(ステップ524)、キャッシュ制御ユニット3は、下位6(k)ビット12のデータに基づいて、新しく割り当てたブロック内のワードを特定し、そのワードに対して、書き込みデータを書き込み(ステップ506)、データが書き込まれたワードに対応するW(i) 5aの値を1にする(ステップ507)。
 アクセスされたブロックが共有キャッシュメモリ103Aにない場合(ステップ525)、キャッシュ制御ユニット3は、直接、メモリ104に、データを書き込む(ステップ526)。
 次に、プロセッサ間通信装置102Aからのアクセスがreadの場合(ステップ510)、キャッシュ制御ユニット3は、ステップ511を実行する。
 ステップ511では、キャッシュ制御ユニット3は、比較器2の比較結果10に基づいて、アクセスされたブロックを格納しているエントリが、すでに共有キャッシュメモリ103Aにあるかどうかを判断する。
 比較結果10が一致を示す場合、キャッシュ制御ユニット3は、アクセスされたブロックは共有キャッシュメモリ103Aにあると判断する(ステップ512)。
 一方、比較結果10が一致を示さない場合、キャッシュ制御ユニット3は、アクセスされたブロックが共有キャッシュメモリ103Aにないと判断する(ステップ513)。
 アクセスされたブロックが共有キャッシュメモリ103Aにあり(ステップ512)、かつ、アクセスされたワードに対応するW(i)の値が1またはアクセスされたブロックのBV5bが1の場合(ステップ519)、キャッシュ制御ユニット3は、データアレイ103Aa内のブロックデータの中から、アクセスされたブロックデータ6を特定し、その特定されたブロックデータ6内のワードのうち、下位6(k)ビット12で特定されるワードから、データを読み出す(ステップ520)。
 一方、アクセスされたブロックが共有キャッシュメモリ103Aにあり(ステップ512)、かつ、アクセスされたワードに対応するW(i)の値が0でかつアクセスされたブロックのBV5bが0の場合(ステップ515)、キャッシュ制御ユニット3は、メモリ104から、そのブロックを読み出し、そのブロックに対応するデータアレイ103Aaのエントリのブロックデータ6中のW(i)=0のワードだけに、読み出したデータを書き込む(ステップ516)。
 続いて、キャッシュ制御ユニット3は、そのブロックに対応する、アドレスアレイ103Abのエントリ内のBV5bを1にする(ステップ517)。
 続いて、キャッシュ制御ユニット3は、データアレイ103Aaから、アクセスされたワードを読み出す(ステップ518)。
 アクセスされたブロックが共有キャッシュメモリ103Aにない場合(ステップ513)、キャッシュ制御ユニット3は、メモリ104から、直接、データを読み出し、そのデータを、プロセッサ間通信装置102Aに提供する(ステップ521)。このとき、キャッシュ制御ユニット3は、データアレイ103Aaおよびアドレスアレイ103Abに、新しいブロックの割り当てを行わない。 
 次に、図23を使って、図21に示したステップ408および418、図22に示したステップ508について説明する。
 まず、キャッシュ制御ユニット3は、新しいエントリを割り当てるために、データが置き換えられるエントリを選択する(ステップ1601)。
 本実施形態では、ダイレクトマップ方式のキャッシュメモリが用いられている。このため、新しいブロックを割り当てるためにデータが置き換えられるエントリは、アクセスされたアドレスから一意に決まる。
 もしも、セットアソシアティブ方式のキャッシュメモリが用いられた場合には、アドレスから決定される置き換え対象になるエントリは複数あり、その中のどれを置き換えるかはアクセス履歴等により決定することが可能である。
 次に、キャッシュ制御ユニット3は、データが置き換えられるエントリのブロックに、CPU101Aまたはプロセッサ間通信装置102Aからデータが書き込まれているかどうかを判断する。
 もし、選択されたエントリのすべてのワードのW(i)5aが0ならば(ステップ1602)、そのブロックには、CPU101Aからもプロセッサ間通信装置102Aからもデータが書き込まれていなかったことになる。この場合、キャッシュ制御ユニット3は、ライトバックすることなく、そのまま、そのエントリを使うことができる。
 もし、選択されたエントリのすべてのワードのW(i)5aが1、または、BV5b=1の場合(ステップ1603)には、そのブロック全体が書き換えられた、または、ブロック全体が有効であることになる。この場合、キャッシュ制御ユニット3は、そのブロックのデータをメモリ104にライトバックする(ステップ1604)。 
 もし、選択されたエントリの一部のワードのW(i)5aが1で、かつ、BV5b=0の場合(ステップ1605)には、W(i)5aが1のワードだけが書き換えられたことになる。この場合、キャッシュ制御ユニット3は、W(i)5aが1のワードのデータだけを、メモリ104にライトバックする(ステップ1606)。なお、キャッシュ制御ユニット3は、W(i)5aが0のワードのデータを、メモリ104に書き込まない。
 図24A~24Gは、共有キャッシュメモリ103A(具体的には、キャッシュ制御ユニット3)がメモリ104に送るコマンドと、そのコマンドに対するメモリ104から共有キャッシュメモリ103A(具体的には、キャッシュ制御ユニット3)へのリプライを説明するための説明図である。
 図24Aと24Bは、ブロック全体をメモリ104から読み出すコマンドとそのリプライの一例を示した説明図である。
 本実施形態では、アドレスは64ビットで、ブロックの大きさは64バイトなので、メモリ104は、そのコマンドのブロックアドレス1701(58ビット)で指定されるブロックを読み出して、図24Bで示すデータリプライの形式で、ブロックデータ1702(64バイト)を、キャッシュ制御ユニット3に送る。
 図24Cは、共有キャッシュメモリ103A(具体的には、キャッシュ制御ユニット3)が、ブロック全体をメモリ104に書き込むコマンドの一例を示した説明図である。
 このコマンドは、ブロックアドレス1703(58ビット)と、ブロックデータ1704(64バイト)から構成される。
 図24Dは、ブロックデータ1704内のワードうち、W(i)5aが1のワードのデータだけを、共有キャッシュメモリ103Aからメモリ104に書き込むためのコマンドの一例である。
 このコマンドは、ブロックアドレス1705(58ビット)と、W(1~8)1706(8ビット)と、W(i)5aが1のワード(8バイト~54バイト)のデータからなる部分ブロックデータ1707と、を含む。
 このコマンドは、W(i)5aが1であるワードの個数に応じて長さが変わる。
 図24Eは、1ワードをメモリ104から読み出すためのコマンドの一例である。このコマンドは、1ワードを指定するためのメモリアドレス1708を含む。
 図24Fは、1ワードをメモリ104から読み出したときのデータリプライの一例を示した図である。このデータリプライは、メモリ104から読み出した1ワードのデータ1709が付加されている。
 図24Gは、1ワードのデータ1711をメモリ104のメモリアドレス1710に書き込むためのコマンドである。
 次に、図25~35を使って共有キャッシュメモリ103A上のあるブロックを例にして、本実施形態でのビット列とメモリアクセスなどの動作について説明する。なお、図25~35において、図18に示したものと同一構成のものには同一符号を付してある。
 図25は、CPU101Aまたはプロセッサ間通信装置102Aから1ワードの書き込みがあったとき、キャッシュミスした場合の動作を説明するための説明図である。ここで、プロセッサ間通信装置102AからはWrite2命令による書き込みがあった場合とする。
 1ワードの書き込みにキャッシュミスが生ずると、キャッシュ制御ユニット3は、そのワードを含むブロックを、新しく共有キャッシュメモリ103A(データアレイ103Aaおよびアドレスアレイ103Ab)に割り付け(BV=0、W=00000000)、書き込みデータ1801を、書き込み時のアドレスに応じて、データアレイ103Aaのブロックデータ1802の4ワード目に書き込み、ブロックデータ1802に対応するビット列1803で示される複数のワードのうち、書き込まれたワードに対応するW(4)を、1に設定する(BV=0、W=00010000)。
 新たなブロックの割り付けに伴うブロックの置き換えによりメモリアクセスが発生するかもしれないが、書き込み自体によるメモリ104へのアクセスは発生しない。 
 図34は、プロセッサ間通信装置102AからWrite1命令で1ワードの書き込みがあったとき、キャッシュミスした場合の動作を説明するための説明図である。
 この場合、そのワードを含むブロックは、共有キャッシュメモリ103Aにはないので、キャッシュミスが生じる。
 このため、キャッシュ制御ユニット3は、図24Gに示したコマンドを使って、書き込みデータ2701を、メモリ104に直接書き込む。このとき、キャッシュ制御ユニット3は、共有キャッシュメモリ103A(データアレイ103Aaおよびアドレスアレイ103Ab)に、新しいブロックを割り付けない。
 図26は、図25と同じブロックの2ワード目に、CPU101Aまたはプロセッサ間通信装置102Aから1ワードの書き込みがあり、キャッシュヒットした場合の動作を説明するための説明図である。ここで、プロセッサ間通信装置102Aからの書き込みはWrite1命令またはWrite2命令による。
 1ワードの書き込みがキャッシュヒットし、キャッシュ制御ユニット3は、書き込みデータ1901を、データアレイ103Aaのブロックデータ1902の2ワード目に書き込み、ビット列1903のW(2)を1にする(BV=0、W=01010000)。書き込みによるメモリ104へのアクセスは発生しない。 
 図27は、CPU101Aまたはプロセッサ間通信装置102Aが、図26と同じブロックの4ワード目を読み出し、キャッシュヒットした場合の動作を説明するための説明図である。
 1ワードの読み出しがキャッシュヒットし、キャッシュ制御ユニット3は、データアレイ103Aaのブロックデータ2001の4ワード目からデータを読み出し、読み出しデータ2002として、CPU101Aまたはプロセッサ間通信装置102Aに返す。
 この場合、キャッシュ制御ユニット3は、ビット列2003を更新しない(BV=0、W=01010000)。
 ただし、キャッシュメモリがセットアソシアティブ方式の場合は、置き換えのためのアクセス履歴の部分が更新される可能性がある。また、読み出しに伴うメモリ104へのアクセスは発生しない。
 図28は、CPU101Aまたはプロセッサ間通信装置102Aが、図27と同じブロックの6ワード目を読み出し、キャッシュミスが発生した場合の動作を示している。なお、読み出すワードに対応するブロックは、すでに、共有キャッシュメモリ103A上に存在するものとする。
 そのブロックのビット列2101では、W(6)=0でかつBV=0なので、1ワードの読み出しがキャッシュミスして、キャッシュ制御ユニット3は、図24Aに示したコマンドを使って、メモリ104から、そのブロックを読み出す。
 そして、メモリ104から読み出されたブロックのデータ2102が、図24Bのデータリプライの形式で共有キャッシュメモリ103A(キャッシュ制御ユニット3)に返されると、キャッシュ制御ユニット3は、読み出したブロックのデータ2102のうち、W(i)=0のワードのデータだけ(1番目、3番目、5~8番目のワードのデータ)を、ブロック2103に書き込み、ビット列2104のBV5bを1にする(BV=1、W=01010000)。
 そして、キャッシュ制御ユニット3は、6番目のワードのデータを、読み出しデータ2105として、CPU101Aまたはプロセッサ間通信装置102Aに返す。
 図29は、CPU101Aまたはプロセッサ間通信装置102Aが、図28と同じブロックの1ワード目を読み出し、キャッシュヒットした場合の動作を示している。
 ビット列2201のBV5bが1なので、1ワードの読み出しがキャッシュヒットして、キャッシュ制御ユニット3は、ブロックデータ2202の1ワード目を、読み出しデータ2203として、CPU101Aまたはプロセッサ間通信装置102Aに返す。
 この場合、キャッシュ制御ユニット3は、ビット列2201を更新しない(BV=1、W=01010000)。
 ただし、共有キャッシュメモリ103Aがセットアソシアティブ方式の場合は、置き換えのためのアクセス履歴の部分が更新される可能性がある。また、読み出しによるメモリ104へのアクセスは発生しない。
 図30は、図29と同じブロックのエントリが置き換えの対象になった場合の動作を示している。
 2ワード目と4ワード目がCPU101Aまたはプロセッサ間通信装置102Aから書き込まれていて、ビット列2301のW(2)とW(4)が1になっているが(W=01010000)、BV5bが1なので、キャッシュ制御ユニット3は、図24Cに示したコマンドを使って、ブロックデータ2302全体をメモリ104に書き込む。そして、キャッシュ制御ユニット3は、ビット列2301を初期化する(BV=0、W=00000000)。
 図31は、CPU101Aが、あるワードを読み出してキャッシュミスした場合の動作を示している。
 読み出されるワードのブロックは、共有キャッシュメモリ103A上にないため、キャッシュ制御ユニット3は、新しいブロックを割り当て、ビット列2401を初期化する(BV=0、W=00000000)。
 続いて、キャッシュ制御ユニット3は、ロードされるワードのブロックを、図24Aに示したコマンドを使って、メモリ104から読み出す。
 メモリ104から読み出されたブロック2402は、図24Bのデータリプライの形式で、共有キャッシュメモリ103A(具体的には、キャッシュ制御ユニット3)に返され、キャッシュ制御ユニット3によって、ブロックデータ2403に書き込まれる。
 続いて、キャッシュ制御ユニット3は、ビット列2404のBVを1にする(BV=1、W=00000000) 。そして、キャッシュ制御ユニット3は、読み出しデータ2405を、CPU101Aに返す。
 図35は、プロセッサ間通信装置102Aが、あるワードを読み出してキャッシュミスした場合の動作を示している。なお、読み出されるワードのブロックは、共有キャッシュメモリ103A上にない場合である。
 この場合、キャッシュ制御ユニット3は、図24Eのコマンドを使って、読み出されるワードを、メモリ104から読み出す。メモリ104から読み出されたデータ2801は、図24Fのデータリプライの形式で、キャッシュ制御ユニット3に送信され、キャッシュ制御ユニット3にて、プロセッサ間通信装置102Aに返される。
 プロセッサ間通信装置102Aからのread命令なので、キャッシュ制御ユニット3は、共有キャッシュメモリ103Aに、新しいブロックを割り当てない。
 図32は、図31と同じブロックのエントリが置き換えの対象になった場合の動作を示している。
 このブロックのビット列2501のW(i)がすべて0なので(W=00000000)、キャッシュ制御ユニット3は、BVを0にするだけである(BV=0、W=00000000)。エントリの置き換えによる、メモリ104へのアクセスは発生しない。 
 図33は、あるブロックのエントリが置き換えの対象になった場合の動作を示している。
 2ワード目と4ワード目が、CPU101Aまたはプロセッサ間通信装置102Aから書き込まれていて、ビット列2601のW(2)と W(4)が1になっていて (W=01010000)、BV5bが0なので、キャッシュ制御ユニット3は、2ワード目と4ワード目のデータ2602および2603だけを、図24Dに示したコマンドを使って、メモリ104に書き込む。
 続いて、キャッシュ制御ユニット3は、ビット列2601を初期化する(BV=0、W=00000000) 。
 次に、第2の実施の形態での送信処理について図36を使って説明する。なお、図36において、図18に示したものと同一構成のものには同一符号を付してある。
 まず、CPU101Aが送信データ29aを作成する(ステップ2901)。
 ここでは、図4の場合とは異なり、送信データ29aのすべてが、共有キャッシュメモリ103A上にキャッシュされていないとして説明を行う。しかしながら、送信データ29aのサイズや作成される時刻によっては、送信データ29aの一部が、共有キャッシュメモリ103A上にあり、送信データ29aのその他の部分が、メモリ104に存在することもありうる。
 次に、CPU101Aからのstore命令を受けて、制御部103Acは、コマンドキュー104aに、コマンド29bを書き込む。
 ここでは、コマンド29bを書き込むアドレスは、共有キャッシュメモリ103A上にない(書き込み時にキャッシュミスする)として説明する。
 そのため、まず、キャッシュ制御ユニット3は、コマンド29bを書き込むアドレスを含むブロック(該当ブロック)を、共有キャッシュメモリ103A上に割り当て、そのブロックに、コマンド29bを書き込む(ステップ2902)。
 コマンド29bは、通信の宛先や送信データ29aへのポインタなどを示す。
 次に、CPU101Aが、プロセッサ間通信装置102Aに、コマンド29bの位置を示す送信要求を送る(ステップ2903)。
 プロセッサ間通信装置102Aは、送信要求を受け付けると、キャッシュ制御ユニット3を用いて、その送信要求に基づいて、コマンド29bを読み出す。
 コマンド29bは、共有キャッシュメモリ103A上にキャッシュされているので、キャッシュ制御ユニット3は、データアレイ103Aaから、コマンド29bを読み出す(ステップ2904)。
 次に、プロセッサ間通信装置102Aは、コマンド29b内の送信データ29aへのポインタを使って、キャッシュ制御ユニット3を用いて、送信データ29aを読み出す。
 ここでは、送信データ29aのすべてが、共有キャッシュメモリ103A上に存在しないとしているので、キャッシュミスが発生し、キャッシュ制御ユニット3は、メモリ104から、送信データ29aを読み出す(ステップ2905)。このとき、キャッシュ制御ユニット3は、送信データ29a(具体的には、送信データ29aが書き込まれたアドレスを含むブロック)を、共有キャッシュメモリ103A(具体的には、データアレイ103Aaおよびアドレスアレイ103Ab)に書き込まない。
 そして、プロセッサ間通信装置102Aは、送信データ29aに基づいてパケットを作製して、プロセッサ間ネットワーク105へパケットを送信する(ステップ2906)。
 もしも、送信データ29aが共有キャッシュメモリ103A上に存在するなら、メモリ104からの読み出しが無くなるので、その分、読み出しレイテンシが短くなる。
 図37は、図36に示した送信処理を説明するためのタイムチャートである。なお、図37において、図18に示したものと同一構成のものには同一符号を付してある。
 ここでは、キャッシュ制御ユニット3が、CPU101Aからのコマンド29bを、コマンドキュー104aに書き込む時に、共有キャッシュメモリ103Aで、キャッシュミスが発生する場合を記述している。
 CPU101Aからのコマンド29bの書き込みでキャッシュミスが起こると、キャッシュ制御ユニット3は、コマンド29bを書き込むアドレスを含むブロックを、共有キャッシュメモリ103A(データアレイ103Aaおよびアドレスアレイ103Ab)に割り当て、共有キャッシュメモリ103A(データアレイ103Aa)にコマンド29bを書き込む(ステップ3001)。
 プロセッサ間通信装置102Aは、CPU101Aからの送信要求を受け付けると(ステップ3002)、キャッシュ制御ユニット3を用いて、共有キャッシュメモリ103A(データアレイ103Aa)からコマンド29bを読み出す(ステップ3003)。
 そして、プロセッサ間通信装置102Aは、キャッシュ制御ユニット3を用いて、メモリ104から、送信データ29aを読み出す(ステップ3004)。
 図37に示すように、プロセッサ間通信装置102Aが、送信データ29aを読み出すときは、複数の読み出しリクエストを先行発行することで、読み出しレイテンシを隠蔽することが可能である。
 本実施の形態によれば、制御部103Acは、CPU101Aから、データ書き込み命令と、アドレスと、通信用データと、を受け付けた状況で以下のように動作する。
 そのアドレスがアドレスアレイ7に格納されている場合には、制御部103Acは、そのアドレスに対応するデータアレイ103Aa内のワードにデータを書き込む。
 一方、そのアドレスがアドレスアレイ103Abに格納されていない場合には、制御部103Acは、そのアドレスを含むブロックのデータを、メモリ104から読み出すことなく、データアレイ103Aaのワードに、そのアドレスを含むブロックに対応づけ、そのアドレスを含むブロックのアドレスをアドレスアレイ103Abに格納し、そのアドレスを含むブロックに対応づけられたワードのうち、そのアドレスに対応するワードに通信用データを書き込む。
 ワード状態記憶部5aは、そのアドレスを含むブロックに対応づけられたワードのうち、通信用データが書き込まれたワードを示すワード情報を記憶する。
 このため、図5、14と見比べると、例えば、CPU101Aとプロセッサ間通信装置102A間のコマンドの受け渡しの時間がさらに短縮された(期間T3005)ことがわかり、通信時間(この場合、送信時間)の短縮化という効果が明らかである。
 次に、第2の実施の形態での受信処理について、図38を使って説明する。なお、図38において、図18に示したものと同一構成のものには同一符号を付してある。
 まず、プロセッサ間通信装置102Aが、プロセッサ間ネットワーク105から、パケットを受信する(ステップ3101)。
 そして、プロセッサ間通信装置102Aは、パケットの中の受信データ31aを、キャッシュ制御ユニット3を用いて、メモリ104上に書き込む。
 ここでは、受信データ31aを書き込むアドレスを含むすべてのブロックが、共有キャッシュメモリ103Aにキャッシュされていないとして説明する。
 この場合、プロセッサ間通信装置102Aは、Write1命令を使ってキャッシュ制御ユニット3を制御して、直接、メモリ104に、受信データ31aを書き込む(ステップ3102)。
 プロセッサ間通信装置102Aは、キャッシュ制御ユニット3が受信データ31aのすべてをメモリ104に書き込んだ後、Write2命令を使ってキャッシュ制御ユニット3を制御して、受信完了フラグ31bを、共有キャッシュメモリ103Aに書き込む。
 ここで、受信完了フラグ31bは、CPU101Aによってポーリングされているので、共有キャッシュメモリ103A上に存在すると考えられる。しかしながら、もしも、まだ、CPU101Aが受信完了フラグ31bをポーリングしていなくても、Write2命令での書き込みなので、キャッシュ制御ユニット3は、共有キャッシュメモリ103A上に、受信完了フラグ31bのアドレスを含むブロックを割り当て、共有キャッシュメモリ103A上のブロックに、受信完了フラグ31bを書き込む(ステップ3103)。
 CPU101Aは、プロセッサ間通信装置102Aにより書き換えられた受信完了フラグ31bを、キャッシュ制御ユニット3を用いて、共有キャッシュメモリ103Aから読み出す(ステップ3104)。
 そして、CPU101Aは、受信完了フラグ31bを参照することによって、受信データ31aが書き込まれたことを知り、キャッシュ制御ユニット3を用いて、受信データ31aを読み出す。
 受信データ31aは、メモリ104にあるので、CPU101Aからの共有キャッシュメモリ103Aへの読み出しでキャッシュミスが発生する。このため、キャッシュ制御ユニット3は、受信データ31aのアドレスを含むブロックを、メモリ104から読み出し、共有キャッシュメモリ103A(データアレイ103Aa)に書き込み(ステップ3105)、共有キャッシュメモリ103A(データアレイ103Aa)から、受信データ31aを読み出す(ステップ3106)。
 ここで、受信データ31aのアドレスを含むブロックが、共有キャッシュメモリ103A上にある場合は、プロセッサ間通信装置102Aからの受信データ31aの書き込みと、CPU101Aからの受信データ31aの読み出しのレイテンシが短縮される。
 図39は、図38に示した受信処理を説明するためのタイムチャートである。なお、図39において、図18に示したものと同一構成のものには同一符号を付してある。
 受信データのアドレスを含むすべてのブロックが、共有キャッシュメモリ103A上にないので、キャッシュ制御ユニット3は、受信データをメモリ104に書き込む(ステップ3201)。
 次に、プロセッサ間通信装置102Aは、キャッシュ制御ユニット3を用いて、受信完了フラグを書き込む。
 ここでは、まだ、CPU101Aが、受信完了フラグをポーリングしていない場合を示している。
 受信完了フラグのアドレスを含むブロックは、共有キャッシュメモリ103A上にないが、Write2命令による書き込みなので、キャッシュ制御ユニット3は、受信完了フラグのアドレスを含むブロックを、共有キャッシュメモリ103A(データアレイ103Aaおよびアドレスアレイ103Ab)に割り当てて、そのブロックに受信完了フラグを書き込む(ステップ3202)。
 その後、CPU101Aが、キャッシュ制御ユニット3を用いて、受信完了フラグを、共有キャッシュメモリ103Aから読み出す(ステップ3203)。
 そして、CPU101Aは、受信完了フラグを参照することによって、受信データがメモリ104に書き込まれたことを確認して、受信データを読み出す。
 受信データは、メモリ104に格納されているので、共有キャッシュメモリ103Aで読み出しミス(キャッシュミス)が起こり、キャッシュ制御ユニット3は、受信データのアドレスを含むブロックを、メモリ104から読み出し、共有キャッシュメモリ103Aに書き込む(ステップ3204)。
 そして、CPU101Aは、キャッシュ制御ユニット3を用いて、共有キャッシュメモリ103Aから、受信データを読み出す(ステップ3205)。
 図39に示すように、プロセッサ間通信装置102Aが、受信データをメモリ104に書き込むときは、複数の書き込みリクエストを先行発行することで、書き込みのレイテンシを隠蔽できる。
 同様に、CPU101Aが受信データを読み出すときも、複数の読み出しリクエストを先行発行することで、読み出しレイテンシを隠蔽することが可能である。
 本実施の形態によれば、制御部103Acは、プロセッサ間通信装置102Aから、第2書き込み命令と、アドレスと、書き込みデータと、を受け付けた状況になると、以下のように動作する。
 そのアドレスがアドレスアレイ103Abに格納されている場合には、制御部103Acは、そのアドレスに対応するデータアレイ103Aa内のワードに書き込みデータを書き込む。
 一方、そのアドレスがアドレスアレイ103Abに格納されていない場合には、制御部103Acは、そのアドレスを含むブロックのデータを、メモリ104から読み出すことなく、データアレイ103Aaのワードを、そのアドレスを含むブロックに対応づけ、そのアドレスを含むブロックのアドレスをアドレスアレイ105Abに格納し、そのアドレスを含むブロックに対応づけられたワードのうち、そのアドレスに対応するワードに書き込みデータを書き込む。
 ワード状態記憶部5aは、そのアドレスを含むブロックに対応づけられたワードのうち、書き込みデータが書き込まれたワードを示すワード情報を記憶する。
 このため、例えば、CPU101Aとプロセッサ間通信装置102A間の受信完了フラグの受け渡しの時間がさらに短縮され、情報の受け渡し時間(この場合、受信時間)の短縮化という効果が生じる。
 本実施の形態では、共有キャッシュメモリ103Aは、CPU101Aとプロセッサ間通信装置102Aによって共有される。
 また、制御部103Acは、CPU101Aからの書き込み時とプロセッサ間通信装置102Aからの第2の書き込み命令による書き込み時には、キャッシュミスしたときに、共有キャッシュメモリ103A上に新たなブロックを割り当てるが、メモリ104からのブロックの読み出しを行わず、新たに割り当てたブロックに書き込みデータを書き込み、その書き込み位置を、アドレスアレイ103Abに記憶する。
 また、制御部103Acは、プロセッサ間通信装置102Aからの第1の書き込み命令による書き込み時にキャッシュミスした場合は、共有キャッシュメモリ103Aに新たなブロックを割り当てず、直接、メモリ104にデータを書き込む。
 本実施の形態では、以下の効果を奏する。
 まず、書き込み時にキャッシュミスしたブロックを、メモリ104から読み出さずに、共有キャッシュメモリ103A上に割り付け、そこにデータを書き込める共有キャッシュメモリ103Aを用いることにより、CPU101Aがコマンドをコマンドキューに書き込むときの書き込みミス時の時間を短縮できる。
 また、書き込みミス時にメモリ104からブロックを読み出さない共有キャッシュメモリを用いて、プロセッサ間通信装置102Aからの受信完了フラグの書き込み時にブロックを割り当てる書き込みを用いることで、CPU101Aが受信完了フラグをポーリングする前にプロセッサ間通信装置102Aが受信完了フラグを書き込んだ場合の書き込みミス時の通信時間を短縮できる。
(産業上の利用可能性)
 本実施形態によれば、単一コアの計算機のキャッシュメモリのほか、マルチコア型のCPUのキャッシュメモリといった用途に適用できる。
 以上、各実施形態を参照して本願発明を説明したが、本願発明は上記各実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 この出願は、2008年3月28日に出願された日本出願特願2008-86276を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (9)

  1.  CPUと、前記CPUと他のCPUとの通信を実行する通信装置と、複数のアドレスのいずれかに対応づけてデータを記憶する記憶装置と、に接続されるキャッシュメモリであって、
     前記CPUおよび前記通信装置からのデータを書き込み可能な複数のワードを有するデータ格納手段と、
     前記複数のアドレスのうち、前記複数のワードのそれぞれに個別に対応づけられたアドレスを格納するアドレス格納手段と、
     前記通信装置から、書き込み命令と、前記複数のアドレスのうちの任意のアドレスと、書き込み用データと、を受け付けた状況で、当該アドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記書き込み用データを書き込み、また、前記通信装置から、読み出し命令と、前記任意のアドレスと、を受け付けた状況で、当該アドレスが前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードからデータを読み出して当該通信装置に提供し、当該アドレスが前記アドレス格納手段に格納されていない場合には、前記記憶装置から当該アドレスに対応づけられたデータを読み出して当該通信装置に提供し、かつ当該データを前記データ格納手段に書き込まない制御手段と、を含むキャッシュメモリ。
  2.  前記制御手段は、さらに、前記通信装置から、前記書き込み命令と、前記任意のアドレスと、前記書き込み用データと、を受け付けた状況で、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスに対応づけて前記書き込み用データを前記記憶装置に書き込み、かつ前記書き込み用データを前記データ格納手段に書き込まない、請求の範囲第1項に記載のキャッシュメモリ。
  3.  前記アドレス格納手段は、前記複数のアドレスのうち、前記複数のワードのそれぞれに個別に対応づけられたアドレスを、所定数のアドレスからなるブロック単位で格納し、
     前記制御手段は、さらに、前記通信装置から、前記書き込み命令と異なる所定書き込み命令と、前記任意のアドレスと、書き込みデータと、を受け付けた状況で、前記所定書き込み命令と共に受け付けられたアドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記書き込みデータを書き込み、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスを含むブロックに対応づけられたデータを前記記憶装置から読み出すことなく、前記複数のワードのうちの前記所定数のワードを、当該アドレスを含むブロックに対応づけ、当該アドレスを含むブロックを前記アドレス格納手段に格納し、当該アドレスを含むブロックに対応づけられた所定数のワードのうち、当該アドレスに対応するワードに前記書き込みデータを書き込み、
     前記アドレスを含むブロックに対応づけられたワードのうち、前記書き込みデータが書き込まれたワードを示すワード情報を記憶するワード状態記憶手段を、さらに含む、請求の範囲第2項に記載のキャッシュメモリ。
  4.  前記制御手段は、さらに、前記CPUから、データ書き込み命令と、前記任意のアドレスと、通信用データと、を受け付けた状況で、前記データ書き込み命令と共に受け付けられたアドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記通信用データを書き込み、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスを含むブロックに対応づけられたデータを前記記憶装置から読み出すことなく、前記複数のワードのうちの前記所定数のワードを、当該アドレスを含むブロックに対応づけ、当該アドレスを含むブロックを前記アドレス格納手段に格納し、当該アドレスを含むブロックに対応づけられたワードのうち、当該アドレスに対応するワードに前記通信用データを書き込み、
     前記ワード状態記憶手段は、さらに、前記アドレスを含むブロックに対応づけられたワードのうち、前記通信用データが書き込まれたワードを示すワード情報を記憶する、請求の範囲第3項に記載のキャッシュメモリ。
  5.  請求の範囲第1項から第4項のいずれか1項に記載のキャッシュメモリと、
     前記キャッシュメモリと接続されたCPUと、
     前記キャッシュメモリと接続され、前記CPUと他のCPUとの通信を実行する通信装置と、
     前記キャッシュメモリと接続され、複数のアドレスのいずれかに対応づけてデータを記憶する記憶装置と、を含む情報処理装置。
  6.  CPUと、前記CPUと他のCPUとの通信を実行する通信装置と、複数のアドレスのいずれかに対応づけてデータを記憶する記憶装置と、に接続され、また、前記CPUおよび前記通信装置からのデータを書き込み可能な複数のワードを有するデータ格納手段を含む、キャッシュメモリが行うキャッシュメモリ制御方法であって、
     前記複数のアドレスのうち、前記複数のワードのそれぞれに個別に対応づけられたアドレスをアドレス格納手段に格納し、
     前記通信装置から、書き込み命令と、前記複数のアドレスのうちの任意のアドレスと、書き込み用データと、を受け付けた状況で、当該アドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記書き込み用データを書き込み、また、前記通信装置から、読み出し命令と、前記任意のアドレスと、を受け付けた状況で、当該アドレスが前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードからデータを読み出して当該通信装置に提供し、当該アドレスが前記アドレス格納手段に格納されていない場合には、前記記憶装置から当該アドレスに対応づけられたデータを読み出して当該通信装置に提供し、かつ当該データを前記データ格納手段に書き込まない動作を実行する、キャッシュメモリ制御方法。
  7.  前記実行することは、前記通信装置から、前記書き込み命令と、前記任意のアドレスと、前記書き込み用データと、を受け付けた状況で、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスに対応づけて前記書き込み用データを前記記憶装置に書き込み、かつ前記書き込み用データを前記データ格納手段に書き込まない動作を実行する、請求の範囲第6項に記載のキャッシュメモリ制御方法。
  8.  前記格納することは、前記複数のアドレスのうち、前記複数のワードのそれぞれに個別に対応づけられたアドレスを、所定数のアドレスからなるブロック単位で格納し、
     前記実行することは、さらに、前記通信装置から、前記書き込み命令と異なる所定書き込み命令と、前記任意のアドレスと、書き込みデータと、を受け付けた状況で、前記所定書き込み命令と共に受け付けられたアドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記書き込みデータを書き込み、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスを含むブロックに対応づけられたデータを前記記憶装置から読み出すことなく、前記複数のワードのうちの前記所定数のワードを、当該アドレスを含むブロックに対応づけ、当該アドレスを含むブロックを前記アドレス格納手段に格納し、当該アドレスを含むブロックに対応づけられた所定数のワードのうち、当該アドレスに対応するワードに前記書き込みデータを書き込む動作を実行し、
     前記アドレスを含むブロックに対応づけられたワードのうち、前記書き込みデータが書き込まれたワードを示すワード情報をワード状態記憶手段に記憶することを、さらに含む 請求の範囲第7項に記載のキャッシュメモリ制御方法。
  9.  前記実行することは、さらに、前記CPUから、データ書き込み命令と、前記任意のアドレスと、通信用データと、を受け付けた状況で、前記データ書き込み命令と共に受け付けられたアドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記通信用データを書き込み、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスを含むブロックに対応づけられたデータを前記記憶装置から読み出すことなく、前記複数のワードのうちの前記所定数のワードを、当該アドレスを含むブロックに対応づけ、当該アドレスを含むブロックを前記アドレス格納手段に格納し、当該アドレスを含むブロックに対応づけられたワードのうち、当該アドレスに対応するワードに前記通信用データを書き込む動作を実行し、
     前記記憶することは、さらに、前記アドレスを含むブロックに対応づけられたワードのうち、前記通信用データが書き込まれたワードを示すワード情報を前記ワード状態記憶手段に記憶する、請求の範囲第8項に記載のキャッシュメモリ制御方法。
PCT/JP2009/055304 2008-03-28 2009-03-18 キャッシュメモリ、情報処理装置およびキャッシュメモリ制御方法 WO2009119413A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008086276 2008-03-28
JP2008-086276 2008-03-28

Publications (1)

Publication Number Publication Date
WO2009119413A1 true WO2009119413A1 (ja) 2009-10-01

Family

ID=41113610

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/055304 WO2009119413A1 (ja) 2008-03-28 2009-03-18 キャッシュメモリ、情報処理装置およびキャッシュメモリ制御方法

Country Status (1)

Country Link
WO (1) WO2009119413A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02188849A (ja) * 1989-01-18 1990-07-24 Agency Of Ind Science & Technol キャッシュメモリ方式
JPH05334185A (ja) * 1992-06-01 1993-12-17 Fujitsu Ltd 3階層メモリシステム
JP2002278834A (ja) * 2001-03-21 2002-09-27 Nec Corp キャッシュメモリ装置およびそれを含むデータ処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02188849A (ja) * 1989-01-18 1990-07-24 Agency Of Ind Science & Technol キャッシュメモリ方式
JPH05334185A (ja) * 1992-06-01 1993-12-17 Fujitsu Ltd 3階層メモリシステム
JP2002278834A (ja) * 2001-03-21 2002-09-27 Nec Corp キャッシュメモリ装置およびそれを含むデータ処理装置

Similar Documents

Publication Publication Date Title
JP6381541B2 (ja) データ処理システム中で命令を処理する方法、回路構成、集積回路デバイス、プログラム製品(リモート処理ノード中のアドレス変換データ構造を更新するための変換管理命令)
US10169080B2 (en) Method for work scheduling in a multi-chip system
JP5598493B2 (ja) 情報処理装置、演算装置および情報転送方法
US8423715B2 (en) Memory management among levels of cache in a memory hierarchy
US8010750B2 (en) Network on chip that maintains cache coherency with invalidate commands
US20090089510A1 (en) Speculative read in a cache coherent microprocessor
US20150254182A1 (en) Multi-core network processor interconnect with multi-node connection
US10592459B2 (en) Method and system for ordering I/O access in a multi-node environment
JP2001515244A (ja) スケーリング可能な共用メモリ・マルチプロセッサ・システム
US9372800B2 (en) Inter-chip interconnect protocol for a multi-chip system
WO2010132655A2 (en) Cache coherent support for flash in a memory hierarchy
US6877056B2 (en) System with arbitration scheme supporting virtual address networks and having split ownership and access right coherence mechanism
JP2002373115A (ja) 共有キャッシュメモリのリプレイスメント制御方法及びその装置
TWI502346B (zh) 根據窺探回應資訊之目錄快取分配技術
US7069394B2 (en) Dynamic data routing mechanism for a high speed memory cloner
US6996693B2 (en) High speed memory cloning facility via a source/destination switching mechanism
JP2006252358A (ja) ディスクアレイ装置及びその共有メモリ装置、ディスクアレイ装置の制御プログラム及び制御方法
US6892283B2 (en) High speed memory cloner with extended cache coherency protocols and responses
US6898677B2 (en) Dynamic software accessibility to a microprocessor system with a high speed memory cloner
US9983994B2 (en) Arithmetic processing device and method for controlling arithmetic processing device
EP4266180A1 (en) Systems and methods for address translation
US6986013B2 (en) Imprecise cache line protection mechanism during a memory clone operation
WO2009119413A1 (ja) キャッシュメモリ、情報処理装置およびキャッシュメモリ制御方法
US6928524B2 (en) Data processing system with naked cache line write operations
JP2009151457A (ja) キャッシュメモリシステムおよびキャッシュメモリ制御方法

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09726414

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP