WO2015121986A1 - システム、記憶装置および方法 - Google Patents

システム、記憶装置および方法 Download PDF

Info

Publication number
WO2015121986A1
WO2015121986A1 PCT/JP2014/053539 JP2014053539W WO2015121986A1 WO 2015121986 A1 WO2015121986 A1 WO 2015121986A1 JP 2014053539 W JP2014053539 W JP 2014053539W WO 2015121986 A1 WO2015121986 A1 WO 2015121986A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage device
processing unit
processing units
calculation result
unit
Prior art date
Application number
PCT/JP2014/053539
Other languages
English (en)
French (fr)
Inventor
貴宏 渡邉
Original Assignee
株式会社Murakumo
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 株式会社Murakumo filed Critical 株式会社Murakumo
Priority to JP2015515057A priority Critical patent/JPWO2015121986A1/ja
Priority to EP14844967.1A priority patent/EP3106996A4/en
Priority to PCT/JP2014/053539 priority patent/WO2015121986A1/ja
Priority to US14/669,293 priority patent/US20150234739A1/en
Publication of WO2015121986A1 publication Critical patent/WO2015121986A1/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Definitions

  • the present invention relates to a system including a plurality of processing units and at least one storage device.
  • a plurality of processor elements each including an arithmetic processing unit, a cache memory, and a local memory unit are connected by a network, and each of the arithmetic processing units in the plurality of processor elements is connected to all of the processor elements.
  • a distributed shared memory parallel computer system in which the local memory can be accessed as a shared memory having the same address space (see Patent Document 2).
  • JP-A-8-340348 Japanese Patent Laid-Open No. 11-102321
  • the conventional shared memory is one in which a plurality of CPUs belong to a predetermined network and the shared memory can be referred to by connecting the shared memory to the network, or a plurality of CPUs connected to each of the plurality of CPUs.
  • the memories of other CPUs can be referred from each CPU. For this reason, in order for multiple CPUs to perform parallel processing, in order to pass computation results between the CPUs, the computation results are temporarily transmitted and received via the CPU or a network interface that has many components and performs complex arbitration. It was necessary, and this prevented the speeding up of parallel processing.
  • FIG. 9 is a diagram showing a conventional connection state of a plurality of CPUs capable of passing the calculation results between the CPUs.
  • each of the plurality of CPUs has a memory, and the CPUs are connected by a predetermined communication interface. For this reason, when performing parallel processing in a plurality of CPUs, etc., in order to pass the calculation results between CPUs, the CPU reads the calculation results from the memory directly connected to itself, and the read calculation results are used for communication.
  • the CPU that transmits to the CPU of the other party through the interface and receives the calculation result writes the received calculation result in the memory directly connected to itself, and then refers to the calculation result to start the subsequent calculation.
  • an object of the present invention is to increase the speed of transfer of calculation results between processing units and improve the performance of the entire system in a system including a plurality of processing units.
  • the present invention employs the following means in order to solve the above-described problems. That is, the present invention includes a plurality of processing units each having one or a plurality of processing unit side ports, and at least one storage device having two or more storage device side ports, and the processing unit side ports And the storage device side port are logically connected on a one-to-one basis, whereby the storage device is shared by two or more predetermined processing units among the plurality of processing units.
  • system may be configured such that an operation result by any of the processing units included in the predetermined two or more processing units is written in the storage device, or any of the predetermined two or more processing units.
  • the other processing units included in the two or more predetermined processing units indicate that the processing unit has read out the operation results of the other processing units included in the two or more predetermined processing units from the storage device. You may further provide the notification part to notify.
  • the notification unit when the calculation result is written in the storage device or when the calculation result is read from the storage device, the notification unit generates an interrupt to the other processing unit, The other processing unit may be notified.
  • the storage device includes an interrupt unit that performs an interrupt to the other processing unit, and the notification unit is configured such that the calculation result is written to the storage device or the calculation result is received from the storage device.
  • the other processing unit may be notified by causing the interrupt unit to interrupt the other processing unit.
  • the notification unit may cause the interruption by giving a predetermined instruction to the storage device.
  • the plurality of processing units are connected via the storage device so that each processing unit logically configures a mesh that serves as a node, and the two or more processing units are connected to the plurality of processing units.
  • processing units arranged next to each other in the mesh may be used.
  • the plurality of processing units are connected via the storage device so as to logically constitute a one-dimensional or multi-dimensional torus, and the two or more predetermined processing units are among the plurality of processing units.
  • the processing unit may be arranged next to each other in the torus.
  • each of the plurality of processing units acquires a calculation result by another processing unit that shares the storage device with the processing unit by reading out the storage device from the storage device, and a calculation result acquisition unit.
  • An arithmetic means for performing an operation using the obtained arithmetic result, and an arithmetic result using the arithmetic result is passed to the other processing unit by writing the arithmetic result by the arithmetic means to the storage device.
  • an operation result delivery means for causing the other processing unit to perform.
  • the present invention can also be grasped as an invention of a storage device.
  • the present invention is a storage device that can be shared by two or more processing units, and stores a calculation result written from the two or more processing units, and writes the calculation result to the storage unit.
  • An interrupt unit that receives an instruction from the processing unit or the processing unit that has read the calculation result from the storage unit, and that interrupts another processing unit included in the two or more processing units. Device.
  • the present invention can be understood as a computer system, an information processing apparatus, a method executed by a computer, or a program executed by a computer.
  • the present invention can also be understood as a program recorded on a recording medium readable by a computer, other devices, machines, or the like.
  • a computer-readable recording medium refers to a recording medium that accumulates information such as data and programs by electrical, magnetic, optical, mechanical, or chemical action and can be read from a computer or the like.
  • the present invention in a system including a plurality of processing units, it is possible to speed up the transfer of calculation results between the processing units and to improve the performance of the entire system.
  • FIG. 1 is a diagram showing an outline of a system according to the present embodiment.
  • the system according to the present embodiment includes CPUs 11 a and 11 b and a memory (Random Access Memory, RAM) 12.
  • the memory 12 is shared by the CPUs 11a and 11b by being directly connected to the CPUs 11a and 11b in a readable and writable manner.
  • a connection method between the memory 12 and the CPUs 11a and 11b a method in which a port (processing unit side port) included in each CPU and a port (storage device side port) included in the memory 12 are serially connected. Adopted. For this reason, a memory having a plurality of ports connectable to the CPU is used as the memory 12.
  • the CPU side may also include a plurality of ports that can be connected to the memory (see variations described later).
  • the connection method between the memory 12 and the CPUs 11a and 11b does not require a CPU-memory communication management processor or the like outside the CPU, and the CPU and the memory are logically connected on a one-to-one basis. If there is, a connection method other than the example in the present embodiment may be adopted. For example, an optical connection may be employed for part or all of the connection. Also, the ports need only be logically connected one-to-one. Therefore, the connection between the CPU 11a or 11b and the memory 12 may be physically shared using a bus or the like. In this embodiment, an example in which the memory 12 is shared by the two CPUs 11a and 11b has been described. However, one memory 12 may be shared by three or more CPUs.
  • the CPUs 11a and 11b and the memory 12 are connected as described above, thereby speeding up the transfer of calculation results between the CPU 11a and the CPU 11b and improving the performance of the entire system. I can do it.
  • FIG. 2 is a diagram showing details of the system according to the present embodiment.
  • the CPU 11a, 11b interprets and executes the program developed in the memory 12a or 12b directly connected to itself, thereby calculating the operation result acquisition unit 111a, 111b, the operation unit 112a, 112b, the operation result delivery unit 113a, 113b, It functions as a computer provided with the notification units 114a and 114b. Further, the CPUs 11a and 11b according to the present embodiment have a writable flag and a writable flag in the respective registers. These flags are used to control the write / read timing of the calculation result.
  • the calculation result acquisition units 111 a and 111 b acquire the calculation results by the other CPU 11 a or 11 b sharing the memory 12 by reading from the memory 12.
  • the calculation units 112a and 112b perform calculations using the calculation results acquired by the calculation result acquisition units 111a and 111b.
  • the calculation result delivery units 113a and 113b write the calculation results of the calculation units 112a and 112b to the memory 12, thereby passing the calculation results to another CPU 11a or 11b sharing the memory 12, and using the calculation results.
  • the CPU 11a or 11b performs the calculation.
  • the other CPU 11a or 11b acquires the calculation result by the calculation result acquisition units 111a and 111b.
  • the notification units 114a and 114b notify the other CPU 11a or 11b sharing the memory 12 that the calculation result by the CPU 11a or 11b has been written into the memory 12 or read from the memory 12.
  • the notification units 114 a and 114 b transmit a predetermined message instructing an interrupt to the CPU 11 a or 11 b to the memory 12, so that the calculation result is written into the memory 12 / Notify that it has been read from the memory 12.
  • a message for instructing the CPU 11a or 11b to be interrupted by the notification units 114a and 114b is transmitted together with a message for instructing writing or reading of the operation results by the operation result delivery units 113a and 113b. .
  • the notification units 114a and 114b generate interrupts to the other CPUs 11a or 11b sharing the memory 12 (so-called doorbell interrupts), so that the calculation result is written in the memory 12 / memory 12 Is notified to the other processing unit CPU 11a or 11b.
  • the memory 12 includes an interrupt unit 121 for interrupting the CPU 11a and the CPU 11b.
  • the memory 12 is a predetermined instruction that instructs an interrupt from the CPU 11a or 11b that has written the calculation result to another CPU (a CPU other than the CPU that has performed writing / reading among the CPUs sharing the memory 12). Is received, the CPU 11a or 11b is interrupted. In this way, the notification units 114a and 114b notify the CPU sharing the memory 12 that the calculation result has been written / read. More specifically, the memory 12 can identify the CPU that issued the interrupt instruction depending on the content of the received message or the port that received the message. Interrupts are made to CPUs other than the selected CPU.
  • the interrupt unit 121 causes the CPU 11b to An interrupt is performed to notify the CPU 11b that the calculation result by the CPU 11a has been written.
  • the interrupt unit 121 interrupts the CPU 11a, and the CPU 11b The CPU 11a is notified that the calculation result has been read out.
  • the interrupt unit 121 interrupts the CPU 11a, and the CPU 11b The CPU 11a is notified that the calculation result has been written.
  • the interrupt unit 121 interrupts the CPU 11b, and the CPU 11a The CPU 11b is notified that the calculation result has been read out.
  • the notification destination CPU is two or more. In this case, the interrupt unit 121 interrupts these two or more CPUs substantially simultaneously or continuously.
  • the notification may be performed by other methods, and the memory 12 may not include the interrupt unit 121 as described above.
  • the CPU 11a or 11b on the receiving side receives a calculation completion flag / reading completion flag set in the memory 12 by the writing / reading CPU (what are write enable flags and read enable flags described later? Notification may be performed by a method of repeatedly confirming (so-called spin lock).
  • the CPU 11a or 11b that has written / read the calculation result to / from the calculation result writing area 122a or 122b may directly generate an interrupt to the notification destination CPU.
  • the CPUs need to be connected to the interrupt controller of the counterpart CPU.
  • actual writing / reading to the operation result writing area 122a or 122b depends on the length of the signal line between the CPU and the memory, the congestion state, and the timing of interrupting.
  • the other party CPU may read the storage area where the calculation result is not yet written, or the other party CPU may read the storage area where the calculation result has not been read. Since there is a possibility of writing, it is possible to take measures such as interrupting after reliably detecting completion of writing / reading.
  • the CPUs 11a and 11b notify the partner apparatus of the address where the calculation result is written. This notification may be performed simultaneously with the above-described interrupt, or may be performed by writing the written address in a predetermined location of the memory 12.
  • ⁇ Process flow> 3 and 4 are flowcharts showing the flow of the calculation result delivery process according to the present embodiment.
  • the processing shown in this flowchart is repeatedly executed while the system according to the present embodiment performs parallel processing while passing calculation results between a plurality of CPUs.
  • the calculation result delivery process according to the present embodiment is executed by each of the CPUs belonging to the system according to the present embodiment.
  • the flow of the process will be described with the execution result of the calculation result delivery process as the CPU 11a.
  • Each CPU has a write notification interrupt handler executed when a write notification interrupt is received from the memory 12, and a read notification interrupt executed when a read notification interrupt is received from the memory 12. Is set.
  • the write notification interrupt handler When the write notification interrupt handler receives the write notification interrupt, it sets a readable flag (set to TRUE), cancels the CPU sleep if the CPU is sleeping, and returns the processing. (Not shown).
  • the read enable flag is a flag used for delaying the reading of the calculation result when the calculation result by another CPU is written but the calculation by itself is not completed in the calculation result delivery process. In the present embodiment, the read enable flag is held on the CPU 11 (for example, in a register included in the CPU 11).
  • the read notification interrupt handler when the read notification interrupt handler receives the read notification interrupt, the read notification interrupt handler sets a write enable flag (set to TRUE), and if the CPU is sleeping, cancels the CPU sleep and returns the processing. (Illustration is omitted).
  • the write enable flag is a flag used for delaying the writing of the calculation result when the calculation result is read by another CPU in the calculation result delivery process but the calculation by itself is not completed. It is. In the present embodiment, the write enable flag is held on the CPU 11 (for example, in a register included in the CPU 11).
  • the CPU 11a performs an operation assigned to itself in the parallel processing (step S101). In the first round of processing, the CPU 11a performs a calculation based on data given in advance. However, in the processing after the second round, the CPU 11a performs a calculation based on a calculation result by another CPU (for example, the CPU 11b) acquired in step S113 described later.
  • another CPU for example, the CPU 11b
  • the CPU 11a confirms the state of the writable flag for determining whether or not writing to the calculation result writing area 122a is possible, and the writable flag is transferred to the calculation result writing area 122a. Is set to a value (FALSE) indicating that writing to the operation result writing area 122a is not permitted (step S102).
  • step S102 If it is confirmed in step S102 that the writable flag is set (TRUE), the CPU 11a writes the operation result to the operation result writing area 122a of the memory 12 (step S103 and step S104).
  • the CPU 11a issues a write notification interrupt instruction to the CPU 12 other than the CPU 11a sharing the memory 12 (here, the CPU 11b) (step S105).
  • the processing shown in step S103 and step S104 is performed by transmitting an instruction from the CPU 11a to the memory 12, but the writing instruction and the interrupt instruction may be transmitted separately, It may be transmitted simultaneously as one message.
  • the interrupt unit 121 of the memory 12 performs a write notification interrupt that notifies the CPU 11b that the calculation of the calculation result by the CPU 11a has been completed. In this way, the CPU 11b is notified that the calculation result has been written to the memory 12.
  • the CPU 11b that has received the write notification interrupt from the memory 12 executes the above-described write notification interrupt handler. After that, the CPU 11b that executes the calculation result delivery process similarly to the CPU 11a acquires the calculation result by the CPU 11a sharing the memory 12 with itself from the calculation result writing area 122a of the memory 12 among the plurality of processing units. That is, by executing the above-described processing, the CPU 11a can pass the calculation result to another processing unit (here, the CPU 11b) and cause the other processing unit to perform a calculation using the calculation result.
  • another processing unit here, the CPU 11b
  • step S102 if it is confirmed in step S102 that the writable flag has not been set (it was FALSE), there is a possibility that reading from the operation result writing area 122a by another CPU such as the CPU 11b has not been completed. There is, and the calculation result cannot be written. For this reason, the CPU 11a sleeps itself (step S107).
  • CPU11a raises a sleep flag immediately before going into sleep. At this time, it is preferable that a series of processes from the process shown in step S102 to the process in which the CPU sets the sleep flag and enters the sleep is atomic.
  • the CPU 11a that has entered the sleep mode receives the interrupt from another CPU such as the CPU 11b, and executes the above-described write notification interrupt handler or read notification interrupt handler.
  • the received interrupt is a read notification interrupt
  • the CPU is awakened by the read notification interrupt handler (the sleep state is canceled), and the write enable flag is set, so that the calculation result is written.
  • Step S104 when a sleep flag is used to determine the sleep state, a process for defeating the sleep flag is performed after the sleep state is canceled.
  • a series of processes for canceling the sleep state and defeating the sleep flag is preferably atomic.
  • the CPU 11a confirms the state of the readable flag for determining whether or not reading from the calculation result writing area 122b is possible, and the readable flag can be read from the calculation result writing area 122b. If this is true (TRUE), this is set to a value (FALSE) indicating that reading from the operation result writing area 122b is not permitted (step S111).
  • step S111 When it is confirmed in step S111 that the readable flag has been set (TRUE), the CPU 11a displays the calculation result of the CPU 11b sharing the memory 12 with itself among the plurality of processing units. It is acquired by reading from the result writing area 122b (steps S112 and S113).
  • the calculation result read here is a calculation result written in the result memory 12 of the calculation result transfer process performed by the CPU 11b in parallel with the calculation result transfer process by the CPU 11a.
  • step S114 the processing shown in step S113 and step S114 is performed by transmitting an instruction from the CPU 11a to the memory 12, but the reading instruction and the interrupt instruction may be transmitted separately, Two messages may be sent simultaneously.
  • the interrupt unit 121 of the memory 12 performs a read notification interrupt that notifies the CPU 11b that the reading by the CPU 11a has been completed. In this way, the CPU 11b is notified that the calculation result has been read from the memory 12.
  • the CPU 11b that has received the read notification interrupt executes the above-described read notification interrupt handler.
  • step S111 if it is confirmed in step S111 that the read enable flag has not been set (FALSE), there is a possibility that the writing to the calculation result writing area 122b by another CPU such as the CPU 11b has not been completed. Yes, the calculation result cannot be read. For this reason, the CPU 11a sleeps itself (step S116). In addition, when using the flag which shows a sleep state for determination of the sleep state of CPU in the interrupt handler mentioned above, CPU11a raises a sleep flag immediately before going into sleep. At this time, it is preferable that a series of processes from the process shown in step S111 to the process in which the CPU sets the sleep flag and enters the sleep is atomic.
  • the CPU 11a that has entered the sleep mode receives the interrupt from another CPU such as the CPU 11b, and executes the above-described write notification interrupt handler or read notification interrupt handler. If the received interrupt is a write notification interrupt, the CPU is awakened by the write notification interrupt handler (the sleep state is canceled) and the read enable flag is set, so that the calculation result is read. (Step S113). Note that when a sleep flag is used to determine the sleep state, a process for defeating the sleep flag is performed after the sleep state is canceled. However, a series of processes for canceling the sleep state and defeating the sleep flag is preferably atomic. Thereafter, the process returns to step S101.
  • an example is described in which an interrupt is performed each time a calculation result is written once, and the calculation result is passed to the counterpart CPU. It may be performed once. That is, among the processes shown in FIGS. 3 and 4, the calculation result writing process may be performed after the calculation process is repeated a predetermined number of times (not shown).
  • the system according to the present disclosure only needs to include a plurality of processing units and at least one storage device, and is not limited to the configuration illustrated in FIGS. 1 and 2 exemplifying two CPUs and one memory.
  • FIGS. 1 and 2 exemplifying two CPUs and one memory.
  • each of the analysis objects influences six other adjacent analysis objects.
  • analysis is performed by connecting CPUs to be analyzed in a torus shape or mesh shape, and transmitting and receiving calculation results between CPUs operating in parallel.
  • the plurality of CPUs may be connected via a memory so as to form a logical one-dimensional or multi-dimensional torus.
  • the plurality of CPUs may be connected via a memory (that is, not necessarily a torus) so that each CPU logically configures a mesh that serves as a node (intersection).
  • FIG. 5 is a diagram showing an outline of a system in which CPUs are connected in a two-dimensional torus in the present embodiment.
  • FIG. 6 is a diagram showing an outline of a system in which CPUs are connected in a three-dimensional torus in the present embodiment.
  • the CPUs are communicably connected to each other by sharing the memory.
  • FIGS. 5 and 6 only the logical positional relationship of the CPUs as nodes is shown.
  • the memory arranged between the CPUs is not shown.
  • FIG. 5 among the CPUs arranged in a matrix, the CPUs arranged next to each other are communicably connected, and the CPU arranged at one end and the CPU arranged at the other end can communicate with each other. It can be seen that a torus is formed by being connected to. Further, according to FIG. 6, the two-dimensional torus shown in FIG. 5 is laminated, and the CPUs arranged next to each other in the lamination direction are connected so as to be communicable, and the CPU arranged at one end in the lamination direction It can be seen that a three-dimensional torus is configured by being communicably connected to the CPU disposed at the other end. In the present embodiment, two-dimensional and three-dimensional toruses are illustrated, but the order of the torus is not limited to this example.
  • the memory is located between CPUs (however, in a logical position and in a physical position). Not).
  • Each memory is shared by two or more CPUs arranged next to each other in the torus or mesh. That is, by repeating the configuration shown in FIG. 1, a torus-like or mesh-like system is constructed, and the CPU 11 a includes a CPU 11 b and a memory 12 that are arranged next to each other among the plurality of CPUs included in the system. Share
  • FIG. 7 and 8 are diagrams showing variations in which a memory is interconnected between CPUs in the system according to the present embodiment.
  • the memory is shared by two CPUs.
  • two CPUs located next to each other in the torus or mesh can use a dedicated memory for exchanging calculation results.
  • this memory interconnect mode is applied to the two-dimensional torus shown in FIG. 5, one CPU is connected to four memories.
  • this memory interconnect mode is applied to the three-dimensional torus shown in FIG. 6, one CPU is connected to a total of six memories including the four shown in FIG. 7 and two above and below (not shown). .
  • the memory is shared by three or more (four in the example of FIG. 8) CPUs.
  • this memory interconnect mode is applied to the two-dimensional torus shown in FIG. 5, one CPU is connected to four memories.
  • this memory interconnect mode is applied to the three-dimensional torus shown in FIG. 6, the memory is arranged at the vertex positions (eight) of the cube centering on the position of a certain CPU, so one CPU has eight memories. (Not shown).
  • the embodiment described above in a system including a plurality of CPUs, it is possible to speed up the transfer of calculation results between CPUs and improve the performance of the entire system.
  • the embodiment described above is an exemplification, and the system, the storage device, and the method according to the present disclosure are not limited to a specific configuration.
  • the specific structure according to embodiment is employ

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

コンピューターシステムに、各々が1または複数の処理ユニット側ポートを有する、複数のCPU11aおよび11bと、2以上の記憶装置側ポートを有する、少なくとも1のメモリ12と、を備え、処理ユニット側ポートと記憶装置側ポートとが論理上1対1で接続されることで、メモリ12が、複数の処理ユニットのうち所定の2以上の処理ユニットによって共有されることとした。

Description

システム、記憶装置および方法
 本発明は、複数の処理ユニットおよび少なくとも1の記憶装置を備えるシステムに関する。
 従来、複数のプロセッサーと、前記プロセッサー間を結ぶネットワークと、前記ネットワークに接続する共有メモリと、前記ネットワークに接続し拡張記憶装置を接続するデータ転送処理装置から構成される情報処理システムが提案されている(特許文献1を参照)。
 また、各々が演算処理装置、キャッシュメモリ、ローカルメモリ部を含む複数個のプロセッサエレメントがネットワークで結合され、前記複数個のプロセッサエレメント内の前記各演算処理装置から、前記複数個のプロセッサエレメント内すべての前記ローカルメモリが同一のアドレス空間を有する共有メモリとしてアクセス可能な分散共有メモリ型並列計算機システムが提案されている(特許文献2を参照)。
特開平8-340348号公報 特開平11-102321号公報
 従来、複数のCPU(Central Processing Unit)が並列処理を行うシステム等において、複数のCPUによってメモリが共有される技術が存在する。しかし、従来の共有メモリは、複数のCPUを所定のネットワークに所属させ、当該ネットワークに共有メモリを接続することで共有メモリを参照可能としたものや、複数のCPUの夫々に接続された複数のメモリを単一のアドレス空間として管理することで、夫々のCPUから、他のCPUのメモリを参照可能としたもの等であった。このため、複数のCPUが並列処理を行うにあたってCPU間で演算結果を受け渡すには、一旦、CPUや、多くのコンポーネントを有し複雑な調停を行うネットワークインターフェース等を介して演算結果を送受信する必要があり、このために並列処理の高速化が妨げられていた。
 図9は、CPU間で演算結果を受け渡すことが可能な、従来の複数CPUの接続態様を示す図である。図9に示す構成では、複数のCPUは、夫々がメモリを有しており、CPU間は、所定の通信用インターフェースで接続されている。このため、複数CPUにおいて並列処理を行う場合等に、演算結果をCPU間で受け渡すためには、CPUが自身に直接接続されているメモリから演算結果を読み出し、読み出した演算結果を、通信用インターフェースを通じて相手のCPUに送信し、演算結果を受信したCPUは受信した演算結果を自身に直接接続されたメモリに書き込んでから、当該演算結果を参照して、続きの演算を開始する。即ち、複数の処理ユニットを備えるシステムにおいて、処理ユニット間で演算結果を受け渡しながら並列処理を行う場合には、他の処理ユニットへの演算結果送信や、他の処理ユニットからの演算結果待ち受け、受信した演算結果のメモリへの書き込み、等に多くのクロック数が消費されてしまい、システム全体のパフォーマンスが制限されるという問題があった。
 本発明は、上記した問題に鑑み、複数の処理ユニットを備えるシステムにおいて、処理ユニット間での演算結果の受け渡しをより高速にし、システム全体の性能を向上させることを課題とする。
 本発明は、上記した課題を解決するために、以下の手段を採用した。即ち、本発明は、各々が1または複数の処理ユニット側ポートを有する、複数の処理ユニットと、2以上の記憶装置側ポートを有する、少なくとも1の記憶装置と、を備え、前記処理ユニット側ポートと前記記憶装置側ポートとが論理上1対1で接続されることで、前記記憶装置は、前記複数の処理ユニットのうち所定の2以上の処理ユニットによって共有される、システムである。
 また、前記システムは、前記所定の2以上の処理ユニットに含まれる何れかの処理ユニットによる演算結果が前記記憶装置に書き込まれたこと、または前記所定の2以上の処理ユニットに含まれる何れかの処理ユニットによって、前記所定の2以上の処理ユニットに含まれる他の処理ユニットの演算結果が前記記憶装置から読み出されたことを、前記所定の2以上の処理ユニットに含まれる他の処理ユニットに通知する通知部を更に備えてもよい。
 また、前記通知部は、前記演算結果が前記記憶装置に書き込まれた場合、または前記演算結果が前記記憶装置から読み出された場合に、前記他の処理ユニットに対する割込を発生させることで、前記他の処理ユニットに通知してもよい。
 また、前記記憶装置は、前記他の処理ユニットに対する割込を行う割込部を備え、前記通知部は、前記演算結果が前記記憶装置に書き込まれた場合、または前記演算結果が前記記憶装置から読み出された場合に、前記割込部に、前記他の処理ユニットに対する割込を行わせることで、前記他の処理ユニットに通知してもよい。
 また、前記通知部は、前記記憶装置に対して所定の指示を行うことで、前記割込を行わせてもよい。
 また、前記複数の処理ユニットは、各処理ユニットがノードとなるメッシュを論理上構成するように、前記記憶装置を介して接続され、前記所定の2以上の処理ユニットは、前記複数の処理ユニットのうち、前記メッシュにおいて隣同士に配置された処理ユニットであってもよい。
 また、前記複数の処理ユニットは、論理上1次元または多次元のトーラスを構成するように、前記記憶装置を介して接続され、前記所定の2以上の処理ユニットは、前記複数の処理ユニットのうち、前記トーラスにおいて隣同士に配置された処理ユニットであってもよい。
 また、前記複数の処理ユニットの夫々は、自身と前記記憶装置を共有する他の処理ユニットによる演算結果を、前記記憶装置から読み出すことで取得する、演算結果取得手段と、前記演算結果取得手段によって取得された演算結果を用いて演算を行う演算手段と、前記演算手段による演算結果を、前記記憶装置に書き込むことで、該演算結果を前記他の処理ユニットに渡し、該演算結果を用いた演算を該他の処理ユニットに行わせる、演算結果引渡手段と、を備えてもよい。
 また、本発明は、記憶装置の発明としても把握することが出来る。例えば、本発明は、2以上の処理ユニットによって共有可能な記憶装置であって、前記2以上の処理ユニットから書き込まれた演算結果を記憶する記憶部と、前記記憶部に前記演算結果を書き込んだ処理ユニットまたは前記記憶部から前記演算結果を読み出した処理ユニットからの指示を受けて、前記2以上の処理ユニットに含まれる他の処理ユニットに対して割込を行う割込部と、を備える記憶装置である。
 なお、本発明は、コンピューターシステム、情報処理装置、コンピューターによって実行される方法、またはコンピューターに実行させるプログラムとして把握することが可能である。また、本発明は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
 本発明によれば、複数の処理ユニットを備えるシステムにおいて、処理ユニット間での演算結果の受け渡しをより高速にし、システム全体の性能を向上させることが可能となる。
実施形態に係るシステムの概略を示す図である。 実施形態に係るシステムの詳細を示す図である。 実施形態に係る演算結果受渡処理の流れを示すフローチャート(A)である。 実施形態に係る演算結果受渡処理の流れを示すフローチャート(B)である。 実施形態において、CPUが2次元トーラス状に接続されたシステムを示す図である。 実施形態において、CPUが3次元トーラス状に接続されたシステムを示す図である。 実施形態に係るシステムにおいて、CPU間にメモリをインターコネクトするバリエーションその1を示す図である。 実施形態に係るシステムにおいて、CPU間にメモリをインターコネクトするバリエーションその2を示す図である。 従来のCPUの接続態様の概略を示す図である。
 以下、本開示に係るシステム、記憶装置および方法の実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係るシステム、記憶装置および方法を以下に説明する具体的構成に限定するものではない。実施にあたっては、実施形態に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
 <システム構成>
 図1は、本実施形態に係るシステムの概略を示す図である。本実施形態に係るシステムは、CPU11a、11bおよびメモリ(Random Access Memory、RAM)12を備える。そして、メモリ12は、CPU11a、11bの夫々に、読み書き可能に直接接続されることで、CPU11a、11bによって共有される。本実施形態では、メモリ12とCPU11a、11bとの接続方法として、各CPUが備えるポート(処理ユニット側ポート)と、メモリ12が備えるポート(記憶装置側ポート)とが、シリアル接続される方法が採用される。このため、メモリ12には、CPUと接続可能なポートを複数備えるメモリが用いられる。また、CPU側も、メモリと接続可能なポートを複数備えてよい(後述するバリエーションを参照)。但し、メモリ12とCPU11a、11bとの接続方法には、CPU-メモリ間通信管理用のプロセッサー等をCPUの外部に必要としない、CPUとメモリとが論理上1対1で接続される方式であれば、本実施形態における例以外の接続方法が採用されてもよい。例えば、接続には、その一部または全部に光接続が採用されてもよい。また、ポートは論理上1対1で接続されていればよい。このため、CPU11aまたは11bとメモリ12との間の接続は、物理的にはバス等を用いて共有されていてもよい。また、本実施形態では、メモリ12が2つのCPU11a、11bによって共有される例について説明しているが、1のメモリ12は、3以上のCPUによって共有されてもよい。
 本実施形態に係るシステムでは、CPU11a、11bとメモリ12とが上記のように接続されることで、CPU11aとCPU11bとの間での演算結果の受け渡しをより高速にし、システム全体の性能を向上させることが出来る。
 図2は、本実施形態に係るシステムの詳細を示す図である。CPU11a、11bは、自身に直接接続されたメモリ12aまたは12bに展開されたプログラムを解釈および実行することで、演算結果取得部111a、111b、演算部112a、112b、演算結果引渡部113a、113b、通知部114a、114bを備えるコンピューターとして機能する。また、本実施形態に係るCPU11a、11bは、夫々が備えるレジスタに、書込可フラグおよび読出可フラグを有する。これらのフラグは、演算結果の書き込み/読み出しタイミングを制御するために用いられる。
 演算結果取得部111a、111bは、メモリ12を共有する他のCPU11aまたは11bによる演算結果を、メモリ12から読み出すことで取得する。
 演算部112a、112bは、演算結果取得部111a、111bによって取得された演算結果を用いて演算を行う。
 演算結果引渡部113a、113bは、演算部112a、112bによる演算結果を、メモリ12に書き込むことで、当該演算結果を、メモリ12を共有する他のCPU11aまたは11bに渡し、当該演算結果を用いた演算をCPU11aまたは11bに行わせる。この際、他のCPU11aまたは11bは、演算結果取得部111a、111bによって、演算結果を取得する。
 通知部114a、114bは、CPU11aまたは11bによる演算結果がメモリ12に書き込まれたこと/メモリ12から読み出されたことを、メモリ12を共有する他のCPU11aまたは11bに通知する。なお、本実施形態において、通知部114a、114bは、メモリ12に対して、CPU11aまたは11bへの割込を指示する所定のメッセージを送信することで、演算結果がメモリ12に書き込まれたこと/メモリ12から読み出されたことを通知する。本実施形態では、演算結果引渡部113a、113bによる、演算結果の書き込みまたは読み出しを指示するメッセージと共に、通知部114a、114bによる、CPU11aまたは11bへの割込を指示する所定のメッセージが送信される。このようにして、通知部114a、114bは、メモリ12を共有する他のCPU11aまたは11bに対する割込を発生させる(所謂ドアベル割込)ことで、演算結果がメモリ12に書き込まれたこと/メモリ12から読み出されたことを、他の処理ユニットCPU11aまたは11bに通知する。
 このため、メモリ12は、CPU11aとCPU11bに対して割込を行うための割込部121を備えている。
 メモリ12は、演算結果の書き込みを行ったCPU11aまたは11bから、他のCPU(メモリ12を共有しているCPUのうち、書き込み/読み出しを行ったCPU以外のCPU)への割込を指示する所定のメッセージを受け取った場合に、CPU11aまたは11bに対する割込を発生させる。このようにすることで、通知部114a、114bは、演算結果が書き込まれたこと/読み出されたことを、メモリ12を共有するCPUに対して通知する。より具体的には、メモリ12は、受け取ったメッセージの内容、またはメッセージを受信したポートが何れのポートであるかによって、割込指示を行ったCPUを特定することが出来、割込指示を行ったCPU以外のCPUに対して、割込を行う。
 図2に示した例では、CPU11a用の演算結果書込領域122aに演算結果が書込まれ、CPU11aからメモリ12に対して割込指示が行われると、割込部121は、CPU11bに対して割込を行い、CPU11aによる演算結果が書き込まれたことを、CPU11bに対して通知する。そして、CPU11a用の演算結果書込領域122aから演算結果が読み出され、CPU11bからメモリ12に対して割込指示が行われると、割込部121は、CPU11aに対して割込を行い、CPU11bによって演算結果が読み出されたことを、CPU11aに対して通知する。
 また、CPU11b用の演算結果書込領域122bに演算結果が書き込まれ、CPU11bからメモリ12に対して割込指示が行われると、割込部121は、CPU11aに対して割込を行い、CPU11bによる演算結果が書き込まれたことを、CPU11aに対して通知する。そして、CPU11b用の演算結果書込領域122bから演算結果が読み出され、CPU11aからメモリ12に対して割込指示が行われると、割込部121は、CPU11bに対して割込を行い、CPU11aによって演算結果が読み出されたことを、CPU11bに対して通知する。なお、メモリ12が3以上のCPUによって共有されている場合、通知先のCPUは2以上となる。この場合、割込部121は、これら2以上のCPUに対して、略同時にまたは連続して割込を行う。
 但し、本開示に係るシステム、記憶装置および方法を実施するにあたって、通知はその他の方法で行われてもよく、メモリ12は上記説明したような割込部121を備えなくてもよい。例えば、演算結果を受け取る側のCPU11aまたは11bが、書き込み/読み出しを行った側のCPUによってメモリ12に設定される書込完了フラグ/読出完了フラグ(後述する書込可フラグおよび読出可フラグとは異なる)を繰り返し確認する(所謂スピンロック)方法で通知が行われてもよい。
 また、演算結果書込領域122aまたは122bに演算結果の書き込み/読み出しを行ったCPU11aまたは11bが、通知先のCPUに対して直接割込を発生させてもよい。この場合、CPU同士が、相手CPUの割込コントローラに接続されている必要がある。なお、このような方法が採用される場合、CPUとメモリとの間の信号線の長さや混雑状況、割込を行うタイミングによっては、演算結果書込領域122aまたは122bへの実際の書き込み/読み出しが完了する前に割込が行われ、演算結果の書き込みが完了していない記憶領域を相手方CPUが読みに行ってしまう可能性や、演算結果の読み出しが完了していない記憶領域に相手方CPUが書き込んでしまう可能性があるため、書き込み完了/読み出し完了を確実に検知した後に割込を行う等の対処が行われてもよい。
 また、本実施形態では、CPU11a、11bによって相手方CPUに通知する演算結果が書き込まれる領域が、演算結果書込領域122a、122bとして固定されている場合について説明したが、演算結果が書き込まれる領域は、固定されていなくてもよい。演算結果が書き込まれる領域が固定されていない場合、CPU11a、11bは、相手の装置に、演算結果が書き込まれたアドレスを通知する。この通知は、上記説明した割込と同時に行われてもよいし、書き込まれたアドレスをメモリ12の所定の箇所に書き込むことで行われてもよい。
 <処理の流れ>
 図3および図4は、本実施形態に係る演算結果受渡処理の流れを示すフローチャートである。本フローチャートに示された処理は、本実施形態に係るシステムが、複数のCPU間で演算結果を受け渡しながら行う並列処理を行う間、繰り返し実行される。本実施形態に係る演算結果受渡処理は、本実施形態に係るシステムに属するCPUの夫々によって実行されるが、以下、演算結果受渡処理の実行主体をCPU11aとして、処理の流れについて説明する。
 なお、夫々のCPUには、メモリ12から書込通知割込を受けた場合に実行される書込通知割込ハンドラと、メモリ12から読出通知割込を受けた場合に実行される読出通知割込ハンドラと、が設定されている。
 書込通知割込ハンドラは、書込通知割込を受けると、読出可フラグを立て(TRUEに設定し)、CPUがスリープしている場合にはCPUのスリープを解除し、処理を戻すハンドラである(図示は省略する)。読出可フラグは、演算結果受渡処理において、他のCPUによる演算結果が書き込まれたが自身による演算が完了していない等の場合に、演算結果の読み出しを遅延させるために用いられるフラグである。なお、本実施形態において、読出可フラグは、CPU11上に(例えば、CPU11が備えるレジスタに)保持される。
 一方、読出通知割込ハンドラは、読出通知割込を受けると、書込可フラグを立て(TRUEに設定し)、CPUがスリープしている場合にはCPUのスリープを解除し、処理を戻すハンドラである(図示は省略する)。書込可フラグは、演算結果受渡処理において、他のCPUによる演算結果の読み出しが完了したが、自身による演算が完了していない等の場合に、演算結果の書き込みを遅延させるために用いられるフラグである。なお、本実施形態において、書込可フラグは、CPU11上に(例えば、CPU11が備えるレジスタに)保持される。
 CPU11aは、並列処理において自身に割り当てられた演算を行う(ステップS101)。1周目の処理において、CPU11aは、予め与えられたデータに基づいて演算を行う。但し、2周目以降の処理では、CPU11aは、後述するステップS113において取得された、他のCPU(例えば、CPU11b)による演算結果に基づいて演算を行う。
 演算が完了すると、CPU11aは、演算結果書込領域122aへの書き込みが可能か否かを判定するための書込可フラグの状態を確認し、書込可フラグが、演算結果書込領域122aへの書き込みが可能であることを示している(TRUEである)場合、これを、演算結果書込領域122aへの書き込みが許可されないことを示す値(FALSE)に設定する(ステップS102)。
 ステップS102において書込可フラグが立っていた(TRUEであった)ことが確認された場合、CPU11aは、演算結果を、メモリ12の演算結果書込領域122aに書き込む(ステップS103およびステップS104)。ここで、CPU11aは、メモリ12に対して、メモリ12を共有するCPU11a以外のCPU(ここでは、CPU11b)に対する書込通知割込指示を行う(ステップS105)。なお、ステップS103およびステップS104に示された処理は、CPU11aからメモリ12に対して指示が送信されることで行われるが、書込指示と割込指示は、別々に送信されてもよいし、1つのメッセージとして同時に送信されてもよい。
 メモリ12の割込部121は、CPU11aからの書込通知割込指示を受けて、CPU11bに対して、CPU11aによる演算結果の書き込みが完了したことを通知する書込通知割込を行う。このようにして、演算結果がメモリ12に書き込まれたことが、CPU11bに通知される。
 メモリ12から書込通知割込を受けたCPU11bは、上述した書込通知割込ハンドラを実行する。その後、CPU11aと同様に演算結果受渡処理を実行するCPU11bは、複数の処理ユニットのうち、メモリ12を自身と共有するCPU11aによる演算結果を、メモリ12の演算結果書込領域122aから取得する。即ち、上記処理が実行されることで、CPU11aは、演算結果を他の処理ユニット(ここでは、CPU11b)に渡し、該演算結果を用いた演算を他の処理ユニットに行わせることが出来る。
 一方、ステップS102において書込可フラグが立っていなかった(FALSEであった)ことが確認された場合、CPU11b等の他のCPUによる演算結果書込領域122aからの読み出しが完了していない可能性があり、演算結果の書き込みを行うことが出来ない。このため、CPU11aは、自身をスリープさせる(ステップS107)。なお、上述した割込ハンドラにおけるCPUのスリープ状態の判定に、スリープ状態を示すフラグを用いる場合、CPU11aは、スリープに入る直前にスリープフラグを立てる。この際、ステップS102に示す処理からCPUがスリープフラグを立ててスリープに入る処理までの一連の処理は、アトミックであることが好ましい。
 スリープに入ったCPU11aは、CPU11b等の他のCPUからの割込を受けて、上述の書込通知割込ハンドラまたは読出通知割込ハンドラを実行する。ここで、受けた割込が読出通知割込であった場合、読出通知割込ハンドラによってCPUが起こされ(スリープ状態が解除され)、書込可フラグが立つため、演算結果の書き込みが行われる(ステップS104)。なお、スリープ状態の判定にスリープフラグを用いる場合、スリープ状態の解除後にスリープフラグを倒す処理を行うが、スリープ状態を解除しスリープフラグを倒す一連の処理は、アトミックであることが好ましい。
 次に、CPU11aは、演算結果書込領域122bからの読み出しが可能か否かを判定するための読出可フラグの状態を確認し、読出可フラグが、演算結果書込領域122bからの読み出しが可能であることを示している(TRUEである)場合、これを、演算結果書込領域122bからの読み出しが許可されないことを示す値(FALSE)に設定する(ステップS111)。
 ステップS111において読出可フラグが立っていた(TRUEであった)ことが確認された場合、CPU11aは、複数の処理ユニットのうち、メモリ12を自身と共有するCPU11bによる演算結果を、メモリ12の演算結果書込領域122bから読み出す(ステップS112およびステップS113)ことで取得する。ここで読み出される演算結果は、CPU11aによる演算結果受渡処理と並行してCPU11bによって行われた演算結果受渡処理の結果メモリ12に書込まれた演算結果である。
 CPU11aは、演算結果の読み出しが完了したことをCPU11bに通知するために、読出が完了したことを通知するためのCPU11bへの割込を行うよう、メモリ12に指示する(読出通知割込指示。ステップS114)。なお、ステップS113およびステップS114に示された処理は、CPU11aからメモリ12に対して指示が送信されることで行われるが、読出指示と割込指示は、別々に送信されてもよいし、1つのメッセージとして同時に送信されてもよい。
 メモリ12の割込部121は、CPU11aからの読出通知割込指示を受けて、CPU11bに対して、CPU11aによる読み出しが完了したことを通知する読出通知割込を行う。このようにして、演算結果がメモリ12から読み出されたことが、CPU11bに通知される。読出通知割込を受けたCPU11bは、先述した読出通知割込ハンドラを実行する。
 一方、ステップS111において読出可フラグが立っていなかった(FALSEであった)ことが確認された場合、CPU11b等の他のCPUによる演算結果書込領域122bへの書き込みが完了していない可能性があり、演算結果の読み出しを行うことが出来ない。このため、CPU11aは、自身をスリープさせる(ステップS116)。なお、上述した割込ハンドラにおけるCPUのスリープ状態の判定に、スリープ状態を示すフラグを用いる場合、CPU11aは、スリープに入る直前にスリープフラグを立てる。この際、ステップS111に示す処理からCPUがスリープフラグを立ててスリープに入る処理までの一連の処理は、アトミックであることが好ましい。
 スリープに入ったCPU11aは、CPU11b等の他のCPUからの割込を受けて、上述の書込通知割込ハンドラまたは読出通知割込ハンドラを実行する。ここで、受けた割込が書込通知割込であった場合、書込通知割込ハンドラによってCPUが起こされ(スリープ状態が解除され)、読出可フラグが立つため、演算結果の読み出しが行われる(ステップS113)。なお、スリープ状態の判定にスリープフラグを用いる場合、スリープ状態の解除後にスリープフラグを倒す処理を行うが、スリープ状態を解除し、スリープフラグを倒す一連の処理は、アトミックであることが好ましい。その後、処理はステップS101へ戻る。
 なお、図3および図4のフローチャートでは、CPU11aの処理について説明したが、本実施形態に係る並列処理では、上記説明したCPU11aによる演算結果受渡処理と並行して、メモリ12を共有する他のCPU(ここでは、CPU11b)も、演算結果受渡処理を行う。但し、処理主体がCPU11bである点、演算結果が書き込まれるメモリ12上の領域が演算結果書込領域122bである点、および割込が行われる対象がCPU11a(メモリ12を共有するCPU11b以外のCPU)である点で、図3および図4に示した演算結果受渡処理と異なる。
 なお、本実施形態では、演算結果が1回書き込まれる毎に割込が行われ、相手方CPUに演算結果が渡される例について説明したが、割込は、複数回の演算結果書き込みに対して1回行われてもよい。即ち、図3および図4に示した処理のうち、演算処理が所定回数繰り返された後に、演算結果書込処理が行われることとしてもよい(図示は省略する)。
 <バリエーション>
 本開示に係るシステムは、複数の処理ユニットおよび少なくとも1の記憶装置を備えていればよく、2つのCPUと1つのメモリを例示した図1および図2の構成に限定されない。以下に、本開示に係るシステムの構成のバリエーションを示す。
 例えば、有限要素解析等において解析対象のデータが立方体(所謂ボクセル)を積層したものである場合、解析対象の夫々は、隣接する6つの他の解析対象と影響し合っている。このため、従来、解析を行うCPUをトーラス状またはメッシュ状に接続し、並列に動作するCPU間で演算結果を送受信しながら解析を行うことが行われている。本実施形態に係るシステムにおいても、複数のCPUは、論理上1次元または多次元のトーラスを構成するように、メモリを介して接続されてもよい。また、複数のCPUは、各CPUがノード(交点)となるメッシュを論理上構成するように、メモリを介して接続されてもよい(即ち、トーラスでなくてもよい)。しかし、このようなシステムでは、処理のステップ毎に隣接ノード(CPU)とデータを交換する必要があるため、このデータ交換にかかる時間が、システム全体の性能に大きく影響する。特に、従来の、トーラス状またはメッシュ状に接続された並列処理システムでは、CPU同士を繋ぐ接続線が長くなり、遅延が増大する。このため、本開示に係るシステム、記憶装置および方法は、CPUがトーラス状またはメッシュ状に接続されたシステムにおいても、CPU間での演算結果の受け渡しをより高速にし、効果を発揮する。但し、本実施形態に係るシステムにおいて、複数のCPUの接続態様には、トーラス状またはメッシュ状以外の態様が採用されてもよい。
 図5は、本実施形態において、CPUが2次元トーラス状に接続されたシステムの概略を示す図である。また、図6は、本実施形態において、CPUが3次元トーラス状に接続されたシステムの概略を示す図である。なお、上述の通り、本システムにおいてCPUはメモリを共有することで互いに通信可能に接続されるが、図5および図6においては、ノードとしてのCPUの論理上の位置関係のみを図示しており、CPU間に配置されるメモリについては図示を省略している。
 図5によれば、マトリクス状に配置された各CPUのうち、隣同士に配置されたCPUが通信可能に接続され、更に一端に配置されたCPUと他端に配置されたCPUとが通信可能に接続されることで、トーラスを構成していることが分かる。また、図6によれば、図5に示された2次元トーラスが積層され、更に、積層方向において隣同士に配置されたCPUが通信可能に接続され、積層方向において一端に配置されたCPUと他端に配置されたCPUとが通信可能に接続されることで、3次元トーラスを構成していることが分かる。なお、本実施形態では、2次元および3次元のトーラスについて例示したが、トーラスの次数はこの例示に限定されない。
 トーラス状のシステム(図5および図6を参照)やメッシュ状のシステム(図示は省略する)において、メモリは、CPUとCPUとの間(但し、論理上の位置であって物理的な位置ではない)に配置される。そして、各々のメモリは、トーラスまたはメッシュにおいて隣同士に配置された2以上のCPUによって共有される。即ち、図1に示す構成が繰り返されることで、トーラス状またはメッシュ状のシステムが構築され、CPU11aは、システムに含まれる複数のCPUのうち、トーラスまたはメッシュにおいて隣に配置されたCPU11bとメモリ12を共有する。
 図7および図8は、本実施形態に係るシステムにおいて、CPU間にメモリをインターコネクトするバリエーションを示す図である。
 図7に示す態様では、メモリは、2つのCPUによって共有される。換言すれば、トーラスまたはメッシュにおいて隣同士に位置する2つのCPUは、演算結果のやり取りのために、専用のメモリを用いることが出来る。図5に示す2次元トーラスにこのメモリーインターコネクト態様を適用した場合、1のCPUは4つのメモリに接続される。図6に示す3次元トーラスにこのメモリーインターコネクト態様を適用した場合、1のCPUは図7に示した4つの他に上下2つを加えた合計6つのメモリに接続される(図示は省略する)。
 図8に示す態様では、メモリは、3以上(図8の例では、4つ)のCPUによって共有される。図5に示す2次元トーラスにこのメモリーインターコネクト態様を適用した場合、1のCPUは4つのメモリに接続される。図6に示す3次元トーラスにこのメモリーインターコネクト態様を適用した場合、メモリは、あるCPUの位置を中心とする立方体の頂点の位置(8つ)に配置されるため、1のCPUは8つのメモリに接続される(図示は省略する)。
 上記説明した実施形態によれば、複数のCPUを備えるシステムにおいて、CPU間での演算結果の受け渡しをより高速にし、システム全体の性能を向上させることが出来る。なお、上述の通り、上記に説明した実施の形態は、例示であって、本開示に係るシステム、記憶装置および方法を具体的構成に限定するものではない。実施にあたっては、実施形態に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
 

Claims (20)

  1.  各々が1または複数の処理ユニット側ポートを有する、複数の処理ユニットと、
     2以上の記憶装置側ポートを有する、少なくとも1の記憶装置と、を備え、
     前記処理ユニット側ポートと前記記憶装置側ポートとが論理上1対1で接続されることで、前記記憶装置は、前記複数の処理ユニットのうち所定の2以上の処理ユニットによって共有される、
     システム。
  2.  前記所定の2以上の処理ユニットに含まれる何れかの処理ユニットによる演算結果が前記記憶装置に書き込まれたことを、前記所定の2以上の処理ユニットに含まれる他の処理ユニットに通知する通知部を更に備える、
     請求項1に記載のシステム。
  3.  前記通知部は、前記演算結果が前記記憶装置に書き込まれた場合に、前記他の処理ユニットに対する割込を発生させることで、前記演算結果が前記記憶装置に書き込まれたことを、前記他の処理ユニットに通知する、
     請求項2に記載のシステム。
  4.  前記記憶装置は、前記他の処理ユニットに対する割込を行う割込部を備え、
     前記通知部は、前記演算結果が前記記憶装置に書き込まれた場合に、前記割込部に、前記他の処理ユニットに対する割込を行わせることで、前記演算結果が前記記憶装置に書き込まれたことを、前記他の処理ユニットに通知する、
     請求項3に記載のシステム。
  5.  前記所定の2以上の処理ユニットに含まれる何れかの処理ユニットによって、前記所定の2以上の処理ユニットに含まれる他の処理ユニットの演算結果が前記記憶装置から読み出されたことを、前記他の処理ユニットに通知する通知部を更に備える、
     請求項1に記載のシステム。
  6.  前記通知部は、前記演算結果が前記記憶装置から読み出された場合に、前記他の処理ユニットに対する割込を発生させることで、前記演算結果が前記記憶装置から読み出されたことを、前記他の処理ユニットに通知する、
     請求項5に記載のシステム。
  7.  前記記憶装置は、前記他の処理ユニットに対する割込を行う割込部を備え、
     前記通知部は、前記演算結果が前記記憶装置から読み出された場合に、前記割込部に、前記他の処理ユニットに対する割込を行わせることで、前記演算結果が前記記憶装置から読み出されたことを、前記他の処理ユニットに通知する、
     請求項6に記載のシステム。
  8.  前記通知部は、前記記憶装置に対して所定の指示を行うことで、前記割込を行わせる、
     請求項4または7に記載のシステム。
  9.  前記複数の処理ユニットは、各処理ユニットがノードとなるメッシュを論理上構成するように、前記記憶装置を介して接続され、
     前記所定の2以上の処理ユニットは、前記複数の処理ユニットのうち、前記メッシュにおいて隣同士に配置された処理ユニットである、
     請求項1から8の何れか一項に記載のシステム。
  10.  前記複数の処理ユニットは、論理上1次元または多次元のトーラスを構成するように、前記記憶装置を介して接続され、
     前記所定の2以上の処理ユニットは、前記複数の処理ユニットのうち、前記トーラスにおいて隣同士に配置された処理ユニットである、
     請求項1から8の何れか一項に記載のシステム。
  11.  前記複数の処理ユニットの夫々は、
     自身と前記記憶装置を共有する他の処理ユニットによる演算結果を、前記記憶装置から読み出すことで取得する、演算結果取得手段と、
     前記演算結果取得手段によって取得された演算結果を用いて演算を行う演算手段と、
     前記演算手段による演算結果を、前記記憶装置に書き込むことで、該演算結果を前記他の処理ユニットに渡し、該演算結果を用いた演算を該他の処理ユニットに行わせる、演算結果引渡手段と、を備える、
     請求項1から10の何れか一項に記載のシステム。
  12.  2以上の処理ユニットによって共有可能な記憶装置であって、
     前記2以上の処理ユニットから書き込まれた演算結果を記憶する記憶部と、
     前記記憶部に前記演算結果を書き込んだ処理ユニットまたは前記記憶部から前記演算結果を読み出した処理ユニットからの指示を受けて、前記2以上の処理ユニットに含まれる他の処理ユニットに対して割込を行う割込部と、
     を備える記憶装置。
  13.  前記割込部は、前記他の処理ユニットが複数ある場合に、複数の他の処理ユニットに対して前記割込を行う、
     請求項12に記載の記憶装置。
  14.  各々が処理ユニット側ポートを有する複数の処理ユニット、および2以上の記憶装置側ポートを有する少なくとも1の記憶装置を備え、前記処理ユニット側ポートと前記記憶装置側ポートとが論理上1対1で接続されることで、前記記憶装置が前記複数の処理ユニットのうち所定の2以上の処理ユニットによって共有されるシステムにおいて、
     前記処理ユニットによる演算結果を前記記憶装置に書き込む書込ステップと、
     前記書き込みが行われたことを、前記所定の2以上の処理ユニットに含まれる他の処理ユニットに通知する通知ステップと、
     を実行する方法。
  15.  前記通知ステップでは、前記演算結果が前記記憶装置に書き込まれた場合に、前記他の処理ユニットに対する割込を発生させることで、前記演算結果が前記記憶装置に書き込まれたことが、前記他の処理ユニットに通知される、
     請求項14に記載の方法。
  16.  前記記憶装置は、前記他の処理ユニットに対して割込を行う割込部を備え、
     前記通知ステップでは、前記演算結果が前記記憶装置に書き込まれた場合に、前記割込部に、前記他の処理ユニットに対する割込を行わせることで、前記演算結果が前記記憶装置に書き込まれたことが、前記他の処理ユニットに通知される、
     請求項14または15に記載の方法。
  17.  各々が処理ユニット側ポートを有する複数の処理ユニット、および2以上の記憶装置側ポートを有する少なくとも1の記憶装置を備え、前記処理ユニット側ポートと前記記憶装置側ポートとが論理上1対1で接続されることで、前記記憶装置が前記複数の処理ユニットのうち所定の2以上の処理ユニットによって共有されるシステムにおいて、
     前記処理ユニットによる演算結果を前記記憶装置に書き込む書込ステップと、
     前記所定の2以上の処理ユニットに含まれる他の処理ユニットが前記演算結果を前記記憶装置から読み出す読出ステップと、
     前記読み出しが行われたことを、前記処理ユニットに通知する通知ステップと、
     を実行する方法。
  18.  前記通知ステップでは、前記演算結果が前記記憶装置から読み出された場合に、前記処理ユニットに対する割込を発生させることで、前記演算結果が前記記憶装置から読み出されたことが、前記他の処理ユニットに通知される、
     請求項17に記載の方法。
  19.  前記記憶装置は、前記他の処理ユニットに対して割込を行う割込部を備え、
     前記通知ステップでは、前記演算結果が前記記憶装置から読み出された場合に、前記割込部に、前記処理ユニットに対する割込を行わせることで、前記演算結果が前記記憶装置から読み出されたことが、前記処理ユニットに通知される、
     請求項17または18に記載の方法。
  20.  各々が処理ユニット側ポートを有する複数の処理ユニット、および2以上の記憶装置側ポートを有する少なくとも1の記憶装置を備え、前記処理ユニット側ポートと前記記憶装置側ポートとが論理上1対1で接続されることで、前記記憶装置が前記複数の処理ユニットのうち所定の2以上の処理ユニットによって共有されるシステムにおいて、
     前記複数の処理ユニットの夫々が、
     自身と前記記憶装置を共有する他の処理ユニットによる演算結果を、前記記憶装置から読み出すことで取得する、演算結果取得ステップと、
     前記演算結果取得ステップで取得された演算結果を用いて演算を行う演算ステップと、
     前記演算ステップにおける演算結果を、前記記憶装置に書き込むことで、該演算結果を前記他の処理ユニットに渡し、該演算結果を用いた演算を該他の処理ユニットに行わせる、演算結果引渡ステップと、を実行する、
     方法。
     
PCT/JP2014/053539 2014-02-14 2014-02-14 システム、記憶装置および方法 WO2015121986A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2015515057A JPWO2015121986A1 (ja) 2014-02-14 2014-02-14 システム、記憶装置および方法
EP14844967.1A EP3106996A4 (en) 2014-02-14 2014-02-14 System, storage device, and method
PCT/JP2014/053539 WO2015121986A1 (ja) 2014-02-14 2014-02-14 システム、記憶装置および方法
US14/669,293 US20150234739A1 (en) 2014-02-14 2015-03-26 System, memory device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/053539 WO2015121986A1 (ja) 2014-02-14 2014-02-14 システム、記憶装置および方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/669,293 Continuation US20150234739A1 (en) 2014-02-14 2015-03-26 System, memory device and method

Publications (1)

Publication Number Publication Date
WO2015121986A1 true WO2015121986A1 (ja) 2015-08-20

Family

ID=53798232

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/053539 WO2015121986A1 (ja) 2014-02-14 2014-02-14 システム、記憶装置および方法

Country Status (4)

Country Link
US (1) US20150234739A1 (ja)
EP (1) EP3106996A4 (ja)
JP (1) JPWO2015121986A1 (ja)
WO (1) WO2015121986A1 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4969051A (ja) * 1972-11-08 1974-07-04
JPS60167058A (ja) * 1984-02-10 1985-08-30 Hitachi Ltd 計算機間交信方式
JPH04128350U (ja) * 1991-05-08 1992-11-24 株式会社日立製作所 データ送信方式
JPH08340348A (ja) 1995-06-14 1996-12-24 Kofu Nippon Denki Kk 情報処理システム
JPH11102321A (ja) 1997-09-26 1999-04-13 Nec Corp 分散共有メモリ型並列計算機のキャッシュコヒーレンシ制御方式
US20090089545A1 (en) * 2007-09-28 2009-04-02 Samsung Electronics Co., Ltd. Multi processor system having multiport semiconductor memory with processor wake-up function

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6920516B2 (en) * 2000-08-31 2005-07-19 Hewlett-Packard Development Company, L.P. Anti-starvation interrupt protocol
JP2004078683A (ja) * 2002-08-20 2004-03-11 Toshiba Corp コンピュータシステムおよび共有メモリ制御方法
US7742905B2 (en) * 2005-02-25 2010-06-22 Coware, Inc. Method and system for dynamically adjusting speed versus accuracy of computer platform simulation
JP5283128B2 (ja) * 2009-12-16 2013-09-04 学校法人早稲田大学 プロセッサによって実行可能なコードの生成方法、記憶領域の管理方法及びコード生成プログラム
US8504780B2 (en) * 2011-04-08 2013-08-06 Hitachi, Ltd. Computer, computer system, and data communication method
EP2771721A4 (en) * 2011-10-28 2017-03-29 The Regents of The University of California Multiple-core computer processor for reverse time migration

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4969051A (ja) * 1972-11-08 1974-07-04
JPS60167058A (ja) * 1984-02-10 1985-08-30 Hitachi Ltd 計算機間交信方式
JPH04128350U (ja) * 1991-05-08 1992-11-24 株式会社日立製作所 データ送信方式
JPH08340348A (ja) 1995-06-14 1996-12-24 Kofu Nippon Denki Kk 情報処理システム
JPH11102321A (ja) 1997-09-26 1999-04-13 Nec Corp 分散共有メモリ型並列計算機のキャッシュコヒーレンシ制御方式
US20090089545A1 (en) * 2007-09-28 2009-04-02 Samsung Electronics Co., Ltd. Multi processor system having multiport semiconductor memory with processor wake-up function

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3106996A4

Also Published As

Publication number Publication date
EP3106996A4 (en) 2017-09-06
JPWO2015121986A1 (ja) 2017-03-30
EP3106996A1 (en) 2016-12-21
US20150234739A1 (en) 2015-08-20

Similar Documents

Publication Publication Date Title
CN101996147B (zh) 一种双口ram互斥访问的实现方法
TWI354230B (en) Method and apparatus for speculative prefetching i
US7546393B2 (en) System for asynchronous DMA command completion notification wherein the DMA command comprising a tag belongs to a plurality of tag groups
US8250164B2 (en) Query performance data on parallel computer system having compute nodes
TW446877B (en) Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
US8990451B2 (en) Controller for direct access to a memory for the direct transfer of data between memories of several peripheral devices, method and computer program enabling the implementation of such a controller
CN102077181A (zh) 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统
US20090006296A1 (en) Dma engine for repeating communication patterns
KR20070116102A (ko) Dma 컨트롤러, 노드, 데이터 전송 제어 방법 및 프로그램을 기록한 컴퓨터 판독가능한 기록 매체
CN101454755A (zh) 具有提高的操作效率的计算机系统
TW201423663A (zh) 資料傳輸之系統與方法
EP3839732A2 (en) Accelerator, method of operating the accelerator, and device including the accelerator
CN103455371A (zh) 用于优化的管芯内小节点间消息通信的方法和系统
JP2009527815A5 (ja)
US9053092B2 (en) System authorizing direct data transfers between memories of several components of that system
US20080052429A1 (en) Off-board computational resources
WO2015121986A1 (ja) システム、記憶装置および方法
CN105229622B (zh) 应用和硬件设备之间的通信系统和方法
CN109840241B (zh) 一种异构双核处理器核间通讯电路
US20080126472A1 (en) Computer communication
JP6106986B2 (ja) 演算処理装置、情報処理装置及び割込制御方法
TW201916644A (zh) 匯流排系統
US20080052490A1 (en) Computational resource array
Raynal What can be computed in a distributed system?
JP2010146117A (ja) 情報処理装置、情報処理方法および情報処理プログラム

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2015515057

Country of ref document: JP

Kind code of ref document: A

REEP Request for entry into the european phase

Ref document number: 2014844967

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2014844967

Country of ref document: EP

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

Ref document number: 14844967

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE