WO2020090009A1 - Arithmetic processing device and control method thereof - Google Patents

Arithmetic processing device and control method thereof Download PDF

Info

Publication number
WO2020090009A1
WO2020090009A1 PCT/JP2018/040345 JP2018040345W WO2020090009A1 WO 2020090009 A1 WO2020090009 A1 WO 2020090009A1 JP 2018040345 W JP2018040345 W JP 2018040345W WO 2020090009 A1 WO2020090009 A1 WO 2020090009A1
Authority
WO
WIPO (PCT)
Prior art keywords
arithmetic processing
chain group
read
instruction
chains
Prior art date
Application number
PCT/JP2018/040345
Other languages
French (fr)
Japanese (ja)
Inventor
朋広 永野
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2020554648A priority Critical patent/JP7036226B2/en
Priority to PCT/JP2018/040345 priority patent/WO2020090009A1/en
Publication of WO2020090009A1 publication Critical patent/WO2020090009A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes

Definitions

  • the present invention relates to an arithmetic processing device and its control method.
  • MAC Memory Access Controller
  • each core is provided with a register file and an arithmetic execution unit, and an instruction unit decodes instructions for data read / write (in other words, load / store) and arithmetic execution, and each read / write unit. Issues the order.
  • the performance of the multi-core computing device depends on the throughput of memory data transfer. However, if control is performed to wait for the processing of the subsequent multicast load instruction until the memory read completion of the preceding multicast load instruction is received, the throughput of memory data may decrease.
  • the technology described in this specification aims to improve the throughput of memory data by reducing the waiting time between chains in a multi-core architecture.
  • the arithmetic processing device is an arithmetic processing device having a multi-core forming a plurality of chains, and includes a first chain group that is a target of a first arithmetic processing among the plurality of chains, and the plurality of chains.
  • the second chain group that is the target of the second arithmetic processing of the chain
  • the third chain group that is the target of the third arithmetic processing in the plurality of chains.
  • the first chain group which has a relationship in which the second arithmetic processing is continuously executed later, is defined as a first determined chain group, and at least one third arithmetic operation is performed after the first arithmetic processing.
  • the second chain to be judged is obtained by calculating the third chain group with respect to the first chain group in a fixed manner, in which the second arithmetic processing is executed after the processing is executed. And the plurality of chains A determination circuit that determines whether the first or second determination target chain group includes the second chain group that is the target of the second arithmetic processing, and the first and second determination chain groups. A generation circuit that generates an initialization instruction that initializes the identifier of the second arithmetic processing when none of the determined chain groups includes the second chain group, and the initialization instruction is issued.
  • an identifier initialized for the second arithmetic processing is obtained, and when the initialization instruction is not issued, the identifier for the second arithmetic processing is continued to the identifier of the first arithmetic processing. And an acquisition circuit for acquiring an identifier.
  • the disclosed arithmetic processing device it is possible to improve the throughput of memory data by reducing the waiting time between chains in a multi-core architecture.
  • FIG. 3 is a block diagram illustrating a memory access process in a writing unit of the accelerator shown in FIG. 2.
  • 3 is a flowchart illustrating a memory access process in the accelerator shown in FIG. 3 is a flowchart illustrating a memory access process in the accelerator shown in FIG. 6 is a flowchart illustrating a multicast REQID initialization process in the read / write unit of the accelerator illustrated in FIG. 2.
  • 3 is a flowchart illustrating a load instruction issuing process in the accelerator instruction unit illustrated in FIG. 2.
  • FIG. 3 is a flowchart illustrating REQID acquisition processing in the read / write unit of the accelerator illustrated in FIG. 2.
  • 3 is a table illustrating the usage status of REQIDs in a multicast load process in the related example shown in FIG. 2.
  • FIG. 1 is a block diagram schematically showing a hardware configuration example of an information processing device in an example. It is a block diagram which shows typically the structural example of the accelerator shown in FIG. It is a figure which shows the format of the request packet in the accelerator shown in FIG.
  • FIG. 12 is a diagram showing a format of a completion packet in the accelerator shown in FIG. 11.
  • FIG. 12 is a block diagram illustrating memory access processing in the accelerator shown in FIG. 11.
  • FIG. 13 is a diagram showing a configuration example of a multicast REQID initialization signal generation circuit of the accelerator shown in FIG. 12.
  • FIG. 13 is a diagram showing a configuration example of a multicast acquisition circuit of the accelerator shown in FIG. 12.
  • 12 is a flowchart illustrating a process of issuing a REQID initialization instruction in the instruction unit of the accelerator illustrated in FIG. 11.
  • 12 is a flowchart illustrating REQID initialization processing in the read / write unit of the accelerator illustrated in FIG. 11.
  • 12 is a flowchart illustrating a load instruction issuing process in the instruction unit of the accelerator illustrated in FIG. 11.
  • 12 is a flowchart illustrating REQID acquisition processing in the read / write unit of the accelerator illustrated in FIG. 11.
  • 12 is a table showing an example of the usage status of REQIDs in the multicast load process in the embodiment shown in FIG. 11.
  • each diagram is not intended to include only the constituent elements shown in the diagram, and may include other functions and the like.
  • FIG. 1 is a block diagram schematically showing a configuration example of the accelerator 600 in the related example.
  • the accelerator 600 processes an arithmetic instruction, and includes a MAC 6, a memory 7, and a plurality of (three in the illustrated example) cores 8 (“cores # 0 to # 2”).
  • the MAC 6 handles access to the memory 7 by each core 8.
  • the memory 7 may be used as a primary recording memory or a working memory.
  • Each core 8 loads and stores the memory 7 via the MAC 6.
  • Each core 8 functions as an instruction unit 81, a read / write unit 82, and a calculation execution unit 83, and stores a register file 84.
  • the register file 84 stores the data acquired from the memory 7.
  • the operation execution unit 83 performs an operation using the data stored in the register file 84.
  • the instruction unit 81 decodes the load instruction sent from the software and instructs the read / write unit 82 to execute the load instruction.
  • the read / write unit 82 divides the load instruction into memory access units, puts a request ID (may be referred to as “REQID”) on each divided load instruction, and issues a memory read request to the MAC 6.
  • REQID request ID
  • FIG. 2 is a block diagram explaining a memory access process in the accelerator 600, which is different from FIG. 1, and an instruction unit 81 and a read / write unit 82 are provided independently from each core.
  • FIG. 3 is a block diagram illustrating a memory access process in the read / write unit 82 of the accelerator 600 shown in FIG.
  • the instruction unit 81 decodes the instruction from the software (see symbol A1 in FIGS. 2 and 3).
  • the instruction unit 81 issues a multicast load instruction to the read / write units 82 of all target chains (see reference numeral A2 in FIGS. 2 and 3). At this time, the instruction unit 81 notifies the read / write units 82 of all target chains of the target chains.
  • the decision circuit 822 in the instruction division circuit 821 of each read / write unit 82 determines that a multicast load instruction has been issued by receiving a load instruction having a plurality of target instructions. Then, the instruction dividing circuit 821 divides the load instruction into 256 bytes (see symbol A3 in FIGS. 2 and 3).
  • the REQID management circuit 823 of the read / write unit 82 includes a unicast acquisition circuit 824, a multicast acquisition circuit 825, and an acquisition wait buffer 826.
  • the multicast acquisition circuit 825 acquires the REQID and the data buffer area for each of the divided load instructions (see symbol A4 in FIGS. 2 and 3).
  • Each read / write unit 82 notifies the acquisition waiting buffer 826 in the read / write unit 82 in charge of issuing the memory read request of the acquired REQID (see symbol A5 in FIGS. 2 and 3). As a result, the read / write unit 82 in charge of issuing the memory read request can recognize that the REQIDs acquired by the read / write units 82 are unified.
  • the memory request generation circuit 827 in the read / write unit 82 in charge of issuing the memory read request issues the memory read request to the reception buffer 611 in the port 61 of the MAC 6 after being notified of the REQIDs acquired from the read / write units 82 of all target chains. Is issued (see A6 in FIGS. 2 and 3). At this time, the target chain is designated by the bitmap in the dst field.
  • the read / write units 82 of all target chains receive the memory read completion from the transmission buffer 612 at the port 61 of the MAC 6 as a response to the memory read request, and store the accompanying memory read data in the data buffer 829 (FIG. 2 and Reference A7 in FIG. 3).
  • the register control request generation circuit 828 of each read / write unit 82 reads the memory read data from the data buffer 829, and transfers the read memory read data together with the write request to the register file 84 of the core 8 (see FIGS. 2 and 3). Reference A8).
  • the processing indicated by the reference signs A4 to A8 is repeatedly executed for all the divided requests.
  • Each read / write unit 82 issues a completion notice corresponding to the multicast load instruction indicated by reference sign A2 to the instruction unit 81 (see reference sign A9 in FIGS. 2 and 3).
  • the instruction unit 81 receives completion notifications from the read / write units 82 of all target chains, and recognizes the completion of the instruction (see symbol A10 in FIGS. 2 and 3).
  • the target chain read / write unit 82 determines whether there are a plurality of target chains (step S2).
  • the read / write unit 82 determines whether the REQID to be acquired is free by the multicast acquisition circuit 825 (step S3).
  • step S3 If the REQID you want to acquire is not empty (see No route in step S3), the process in step S3 is repeated.
  • the reading / writing unit 82 notifies the reading / writing unit 82 in charge of the request that the REQID has been acquired (step S4).
  • the read / write unit 82 determines whether it is the read / write unit 82 in charge of the request (step S5).
  • step S5 If the read / write unit 82 is not in charge of the request (see No route in step S5), the process proceeds to step S9.
  • the read / write unit 82 determines whether REQID acquisition notifications have been issued from all target chains (step S6).
  • step S6 If there is a target chain for which the REQID acquisition notification has not been issued (see No route in step S6), the process in step S6 is repeatedly executed.
  • the read / write unit 82 determines whether or not the receive buffer 611 is available at the port 61 of the MAC6 (step S6). S7).
  • step S7 If there is no free space in the reception buffer 611 (see No route in step S7), the process in step S7 is repeated.
  • the read / write unit 82 issues a multicast read request to the MAC 6 (step S8).
  • the destination of the multicast read is set to all target chains.
  • the read / write unit 82 determines whether all the divided read requests have been issued (step S9). If there is a read request that has not been issued (see No route in step S9), the process returns to step S3.
  • step S9 when all the divided read requests are issued (see Yes route in step S9), the read / write unit 82 issues a request corresponding to the subsequent instruction from the instruction unit 81 (step S10). Then, the process returns to step S2.
  • the MAC 6 receives the multicast read request (step S11).
  • MAC6 performs memory read (step S12).
  • the MAC 6 issues a completion with read data added to the read / write unit 82 in the dst field (step S13).
  • the read / write unit 82 receives the completion from the MAC 6 (step S14).
  • the read / write unit 82 issues a register write request with read data added to each core 8 (step S15).
  • the read / write unit 82 releases the REQID and the data buffer 829 (step S16).
  • the read / write unit 82 determines whether all the register write requests corresponding to the divided read requests have been issued (step S17).
  • step S17 If there is a register write request that has not been issued (see No route in step S17), the process returns to step S14.
  • step S17 when all the register write requests have been issued (see Yes route in step S17), the read / write unit 82 notifies the instruction unit 81 of the completion of the instruction in its own chain (step S18).
  • the instruction unit 81 determines whether the instruction completion notification has been received from the read / write units 82 of all target chains (step S19).
  • step S19 If there is a target chain that has not received the instruction completion notification (see No route in step S19), the process in step S19 is repeatedly executed.
  • the instruction unit 81 recognizes the completion of the instruction and the memory access process ends.
  • the read / write unit 82 processes the Nth division of one instruction (step S21).
  • the read / write unit 82 determines whether N is 1 (step S22).
  • step S22 If N is 1 (see Yes route in step S22), the read / write unit 82 initializes the multicast acquisition circuit 825 (step S23). Then, the process proceeds to step S25.
  • step S24 the multicast acquisition circuit 825 is updated (step S24).
  • the read / write unit 82 determines the REQID to be issued in the multicast (step S25). Then, the initialization process of the multicast REQID ends.
  • the instruction unit 81 decodes the load instruction from the software (step S31).
  • the read / write unit 82 receives the load instruction and the target chain according to the instruction from the instruction unit 81 shown in step S32 of FIG. 7 (step S41).
  • the read / write unit 82 determines whether there are a plurality of target chains (step S42).
  • the read / write unit 82 determines whether the first division of the load instruction is being processed (step S43).
  • step S43 If the first division is being processed (see Yes route in step S43), the read / write unit 82 initializes the multicast acquisition circuit 825 (step S44). Then, the process proceeds to step S46.
  • the read / write unit 82 updates the multicast acquisition circuit 825 (step S45).
  • the read / write unit 82 determines whether the REQID to be acquired is free (step S46).
  • step S46 If the REQID to be acquired is not empty (see No route in step S46), the process in step S46 is repeatedly executed.
  • the reading / writing unit 82 performs waiting processing for the acquired REQID (step S47). Then, the REQID acquisition process ends.
  • FIG. 9 is a table illustrating the usage status of REQIDs in the multicast load process in the related example shown in FIG.
  • the performance of the multi-core computing device depends on the throughput of memory data transfer.
  • each multicast load instruction is 1 kilobyte.
  • the processing for the subsequent multicast load instruction is suspended until the completion of the memory read of the preceding multicast load instruction is received. Then, the throughput of memory data may be reduced.
  • FIG. 10 is a block diagram schematically showing a hardware configuration example of the information processing apparatus 1 in the example.
  • the information processing device 1 has a Central Processing Unit (CPU) 10, an Input / Output (I / O) controller 11, an accelerator 12, a hard disk 13, an I / O device 14 and a memory 15.
  • CPU Central Processing Unit
  • I / O Input / Output
  • accelerator 12 a hard disk 13
  • I / O device 14 an I / O device 14
  • memory 15 a memory
  • the I / O controller 11 is connected to the accelerator 12, the hard disk 13, and the I / O device 14.
  • the I / O device 14 refers to an I / O device other than the accelerator 12 and the hard disk 13.
  • the I / O controller 11 receives an instruction from the CPU 10 and controls the accelerator 12, the hard disk 13, and the I / O device 14. Then, the I / O controller 11 relays communication between the accelerator 12, the hard disk 13, the I / O device 14, and the CPU 10.
  • the CPU 10 which is an arithmetic processing unit, is connected to the I / O controller 11 and the memory 15 by a bus. Then, the CPU 10 can send and receive data to and from the memory 15. Further, the CPU 10 can send and receive data to and from the accelerator 12, the hard disk 13, and the I / O device 14 via the I / O controller 11.
  • the hard disk 13 stores various programs such as Operating System (OS) and various applications.
  • OS Operating System
  • applications various applications.
  • the CPU 10 operates the OS and various applications by reading the program from the hard disk 13, expanding it on the memory 15, and executing it.
  • applications include applications that execute deep learning and the like.
  • the CPU 10 causes the accelerator 12 to perform a specific process when executing the application.
  • the CPU 10 causes the accelerator 12 to perform arithmetic processing such as deep learning.
  • the software executed by the CPU 10 transmits an operation command to the accelerator 12 together with data used for the operation via the I / O controller 11.
  • FIG. 11 is a block diagram schematically showing a configuration example of the accelerator 12 shown in FIG.
  • the accelerator 12 includes a MAC 121, a memory 122, a plurality of cores 123, an instruction unit 124, and a read / write unit 125.
  • the memory 122 may be used as a primary recording memory or a working memory.
  • the MAC 121 processes access to the memory 7 by each core 123.
  • the MAC 121 includes a plurality of ports 1211 (denoted as “P # 0 to # 7” in FIG. 11).
  • a plurality of cores 123, one read / write unit 125, and one port 1211 are provided for each chain # 0 to # 7 indicated by the broken line frame in FIG.
  • seven cores 123 are provided in each chain.
  • chain # 0 has cores # 0-1 to # 0-N
  • chain # 1 has cores # 1-1 to # 1-N
  • chain # 7 has core # 7-1.
  • ⁇ # 7-N are provided.
  • Each core 123 executes loading and storing on the memory 122 via the read / write unit 125 and the MAC 121.
  • the instruction unit 124 decodes the load instruction sent from the software and instructs the read / write unit 125 to execute the load instruction.
  • the read / write unit 125 divides the load instruction into memory access units, puts a request ID (may be referred to as “REQID”) on each divided load instruction, and issues a memory read request to the MAC 121.
  • REQID request ID
  • a load (which may be referred to as “multicast load”) instruction in which a plurality of chains are designated at a time is supported.
  • the MAC 121 and the read / write unit 125 support a memory read (may be referred to as a “multicast read request”) that specifies a plurality of chains.
  • FIG. 12 is a diagram showing a format of a request packet in the accelerator 12 shown in FIG.
  • the multicast read request generated by the read / write unit 125 has the format shown in FIG.
  • opc indicating the type of request
  • dst indicating the transmission destination of the read data
  • REQID indicating the assigned ID
  • Address indicating the read address of the data
  • opc, dst and REQID are sent in the first cycle.
  • the Address is sent in the first cycle and the second cycle.
  • FIG. 13 is a diagram showing a format of a completion packet in the accelerator 12 shown in FIG.
  • the memory read recompletion obtained by the read / write unit 125 has the format shown in FIG.
  • the area transmitted in the first cycle of the memory read completion is opc indicating the request type, REQID indicating the ID of the multicast read request that is the response target, and Status indicating the response status, and the reserve (rsv).
  • a header having an area is stored.
  • the chain to which the completion is issued is specified by the bitmap.
  • the request completion of memory read or memory write is determined.
  • the REQID field shown in FIG. 13 is a completion corresponding to the request shown in FIG. 12, and the same value is stored.
  • An address value to be accessed is stored in the Address field shown in FIG.
  • the instruction unit 124 notifies each read / write unit 125 together with the load instruction along with information about the target chain.
  • the representative read / write unit 125 specifies the target chain in the dst field with a bitmap when issuing a memory read request to the MAC 121.
  • the MAC 121 acquires data from the memory 122 and issues a completion to all chains specified by the dst field.
  • FIG. 14 is a block diagram illustrating a memory access process in the accelerator 12 shown in FIG.
  • the instruction unit 124 decodes an instruction from software.
  • the instruction unit 124 issues a multicast load command to the read / write units 125 of all target chains. At this time, the instruction unit 124 notifies the read / write unit 125 of all target chains of the target chains.
  • the instruction unit 124 propagates the REQID initialization signal as an interface signal to the reading / writing unit 125 to each reading / writing unit 125 together with the load instruction.
  • the instruction unit 124 includes a synchronization monitoring circuit 1221 and an initialization signal generation circuit 1222.
  • FIG. 15 is a diagram showing an example of the configuration of the multicast REQID synchronization monitoring circuit 1221 of the accelerator 12 shown in FIG.
  • the synchronization monitoring circuit 1221 receives 28 patterns of (X, Y) combinations.
  • the output signal same_reqid_grp_XY also has 28 patterns and is stored in the group table 1220 shown in FIG. load_valid is a valid signal of a load instruction and an update instruction signal of this circuit.
  • the synchronization monitoring circuit 1221 determines whether the first or second determined chain group of the plurality of chains includes the second chain group that is the target of the second arithmetic processing. It is an example of a circuit.
  • the first determined chain group is a first chain group in which the second arithmetic processing is continuously executed after the first arithmetic processing.
  • the second chain to be judged is a first chain group in a relationship in which after the first arithmetic processing, at least one or more third arithmetic processing is executed and then the second arithmetic processing is executed.
  • the third chain group is calculated by a constant method.
  • the first chain group is a target of the first arithmetic processing of the plurality of chains
  • the second chain group is a target of the second arithmetic processing of the plurality of chains
  • the third chain group is a plurality of the plurality of chains. It is the target of the third arithmetic processing in the chain.
  • the fixed method is a process of removing the third chain group from the first chain group.
  • FIG. 16 is a diagram showing a configuration example of the multicast REQID initialization signal generation circuit 1222 of the accelerator 12 shown in FIG.
  • the initialization signal generation circuit 1222 initializes the identifier of the second arithmetic processing when neither the first nor the second chain group to be judged includes the second chain group. It is an example of a generation circuit that generates an activation instruction.
  • the decision circuit 311 in the instruction division circuit 31 of each read / write unit 125 determines that a multicast load instruction has been issued by receiving a load instruction having a plurality of target instructions. Then, the instruction division circuit 31 divides the load instruction into 256 bytes.
  • the instruction division circuit 31 is an example of a division circuit that divides the instruction related to the second arithmetic processing into a plurality of instructions.
  • the REQID management circuit 32 of the read / write unit 125 includes a unicast acquisition circuit 321, a multicast acquisition circuit 322, and an acquisition wait buffer 323.
  • the multicast acquisition circuit 322 acquires the REQID and the data buffer area for each of the divided load instructions.
  • FIG. 17 is a diagram showing a configuration example of the multicast acquisition circuit 322 of the accelerator 12 shown in FIG.
  • the multicast acquisition circuit 322 acquires the identifier that has been initialized for the second arithmetic processing when the initialization instruction is issued, and the second when the initialization instruction is not issued.
  • 2 is an example of an acquisition circuit that acquires an identifier that is continuous with the identifier of the first arithmetic processing for the arithmetic processing of.
  • the multicast acquisition circuit 322 may acquire an identifier that is continuous with the identifier of the acquisition target immediately before the acquisition target when the acquisition target of the identifier is not the first division of the instruction.
  • the multicast acquisition circuit 322 of each read / write unit 125 notifies the acquired REQID to the acquisition waiting buffer 323 in the read / write unit 125 in charge of issuing a memory read request.
  • the read / write unit 125 in charge of issuing the memory read request can recognize that the REQIDs acquired by the read / write units 125 are unified.
  • the multicast acquisition circuit 322 is an example of an acquisition circuit that notifies the other reader / writer 125 of the plurality of readers / writers 125 of the acquired identifier.
  • the memory request generation circuit 33 in the read / write unit 125 in charge of issuing the memory read request notifies the reception buffer 21 in the port 1211 of the MAC 121 to the memory read request after being notified of the REQIDs acquired from the read / write units 125 of all target chains. To issue. At this time, the target chain is designated by the bitmap in the dst field.
  • the read / write unit 125 of all target chains receives the memory read completion from the transmission buffer 22 at the port 1211 of the MAC 121 as a response to the memory read request, and stores the accompanying memory read data in the data buffer 35.
  • the register control request generation circuit 34 of each read / write unit 125 reads the memory read data from the data buffer 35, and transfers the read memory read data together with the write request to the register file of the core 123.
  • Each read / write unit 125 issues a completion notice corresponding to the multicast load instruction to the instruction unit 124.
  • the instruction unit 124 receives the completion notification from the read / write units 125 of all target chains and recognizes the completion of the command.
  • the synchronization monitoring circuit 1221 updates the group table 1220 for REQID synchronization to the latest state (step S51).
  • the initialization signal generation circuit 1222 determines whether or not all target chains of the load instruction to be issued are included in the group table 1220 (step S52).
  • step S52 If all target chains are included (see Yes route in step S52), the initialization signal generation circuit 1222 de-asserts the REQID initialization instruction signal (step S53). Then, the process proceeds to step S55.
  • the initialization signal generation circuit 1222 asserts a REQID initialization instruction signal (step S54).
  • the initialization signal generation circuit 1222 notifies the read / write unit 125 of the REQID initialization instruction signal. The processing is taken over by the processing of the reading / writing unit 125 in step S61 of FIG. 19, and the issuing processing of the REQID initialization command ends.
  • the instruction division circuit 31 receives the REQID initialization instruction signal in response to the transmission from the instruction unit 124 in step S55 of FIG. 18 (step S61).
  • the multicast acquisition circuit 322 determines whether the REQID initialization instruction signal is 1 (step S62).
  • step S62 If the REQID initialization instruction signal is 1 (see Yes route in step S62), the value of the multicast acquisition circuit 322 is initialized (step S63). Then, the process proceeds to step S65.
  • the multicast acquisition circuit 825 updates or holds the value (step S64).
  • the decision circuit 311 decides the REQID to be issued in the multicast (step S65). Then, the initialization process of the multicast REQID ends.
  • the instruction unit 124 decodes the load instruction from the software (step S71).
  • the initialization signal generation circuit 1222 determines whether or not all target chains of the load instruction to be issued are included in the group table 1220 (step S72).
  • step S72 If all target chains are included (see Yes route in step S72), the initialization signal generation circuit 1222 de-asserts the REQID initialization instruction signal (step S73). Then, the process proceeds to step S75.
  • the initialization signal generation circuit 1222 asserts a REQID initialization instruction signal (step S74).
  • the initialization signal generation circuit 1222 notifies the target read / write unit 125 of the load instruction and the target chain (step S75). Then, the processing is taken over by the processing in the reading / writing unit 125 after step S81 in FIG.
  • the synchronization monitoring circuit 1221 updates the group table 1220 for REQID synchronization based on the target chain for reference at the next load instruction (step S76).
  • the instruction division circuit 31 receives the load instruction and the target chain together with the REQID initialization instruction signal in response to the notification from the instruction unit 124 shown in step S75 of FIG. 20 (step S81).
  • the determination circuit 311 determines whether there are a plurality of target chains (step S82).
  • the multicast acquisition circuit 322 determines whether the first division of the load instruction is being processed (step S83).
  • the multicast acquisition circuit 322 determines whether the REQID initialization instruction signal is 1 (step S84).
  • step S84 If the REQID initialization instruction signal is not 1 (see No route in step S84), the process proceeds to step S86.
  • step S85 when the REQID initialization instruction signal is 1, the multicast acquisition circuit 322 is initialized with a value (step S85). Then, the process proceeds to step S87.
  • step S83 If the first division is not being processed in step S83 (see No route in step S83), the value of the multicast acquisition circuit 322 is updated (step S86).
  • the multicast acquisition circuit 322 determines whether the REQID to be acquired is free (step S87).
  • step S87 If the REQID to be acquired is not empty (see No route in step S87), the process in step S87 is repeatedly executed.
  • the multicast acquisition circuit 322 performs waiting processing for the acquired REQID (step S88). Then, the REQID acquisition process ends.
  • FIG. 22 is a table illustrating the usage status of REQIDs in the multicast load processing in the embodiment shown in FIG.
  • the REQID when the multicast load instruction is processed continuously, the REQID can be serially used without being initialized.
  • each of the multicast load instructions “1” to “4” is 1 kilobyte.
  • the load target chain of the multicast load instruction “2” is included in the group table 1220 for REQID synchronization.
  • the multicast load instruction “3” is included in the group table 1220 for the REQID synchronization of the load target chain as the multicast load instruction “2”.
  • the multicast load instruction “4” is initialized by asserting the REQID because the load target chain is not included in the group table 1220 for REQID synchronization.
  • the opportunity to initialize the REQID is reduced compared to the table that illustrates the usage status of the REQID in the multicast load process in the related example shown in FIG. Then, the opportunity to wait for the release of the REQID in use is reduced, and the memory read request to the MAC 121 can be issued promptly, so that the reduction in the throughput of the memory data bus can be prevented.
  • the synchronization monitoring circuit 1221 determines whether the first or second determination target chain group among the plurality of chains includes the second chain group which is the target of the second arithmetic processing.
  • the first determined chain group is a first chain group in which the second arithmetic processing is continuously executed after the first arithmetic processing.
  • the second chain to be judged is a first chain group in a relationship in which after the first arithmetic processing, at least one or more third arithmetic processing is executed and then the second arithmetic processing is executed.
  • the third chain group is calculated by a constant method.
  • the first chain group is a target of the first arithmetic processing of the plurality of chains
  • the second chain group is a target of the second arithmetic processing of the plurality of chains
  • the third chain group is a plurality of the plurality of chains. It is the target of the third arithmetic processing in the chain.
  • the initialization signal generation circuit 1222 generates an initialization instruction for initializing the identifier of the second arithmetic processing when neither the first nor the second chain group to be judged includes the second chain group. ..
  • the multicast acquisition circuit 322 acquires the identifier initialized for the second arithmetic processing when the initialization instruction is issued, while the multicast acquisition circuit 322 performs the second arithmetic processing for the second arithmetic processing when the initialization instruction is not issued. Then, an identifier that follows the identifier of the first arithmetic processing is acquired.
  • the multicast acquisition circuit 322 notifies the acquired identifier to the other read / write unit 125 among the plurality of read / write units 125.
  • the read / write unit 125 in charge of issuing the memory read request can recognize that the REQIDs acquired by the respective read / write units 125 are unified.
  • the instruction division circuit 31 divides the instruction related to the second arithmetic processing into a plurality of instructions.
  • the multicast acquisition circuit 322 acquires an identifier continuous with the acquisition target identifier immediately before the acquisition target.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Abstract

The present invention comprises: a determination circuit (1221) that, for first to third chain groups to be respectively subjected to first to third arithmetic processes, sets, as a first determined chain group, the first chain group having a relationship in which a second arithmetic process is continuously performed after a first arithmetic process, sets, as a second determined chain group, a chain group which is obtained by calculating the third chain group in a certain manner with respect to the first chain group, and which has a relationship in which after the first arithmetic process, one or more third arithmetic processes are executed, and then the second arithmetic process is executed, and that determines whether the first or second determined chain group includes a second chain group to be subjected to the second arithmetic process; a generation circuit (1222) which generates an initialization instruction of an identifier of the second arithmetic process, when the first and second determined chain groups do not include the second chain group; and an acquisition circuit (322) which acquires an initialized identifier for the second arithmetic process when the initialization instruction is issued, and acquires an identifier that is continuous with the identifier of the first arithmetic process, for the second arithmetic process, when the initialization instruction is not issued.

Description

演算処理装置及びその制御方法Arithmetic processing device and control method thereof
 本発明は、演算処理装置及びその制御方法に関する。 The present invention relates to an arithmetic processing device and its control method.
 主記憶装置及びMemory Access Controller(MAC)とコアのレジスタファイルとが1対多で結合されたマルチコア演算装置が存在する。 There is a multi-core arithmetic unit in which the main memory and Memory Access Controller (MAC) and the core register file are connected one-to-many.
 マルチコアアーキテクチャでは、各コアにレジスタファイルと演算実行部とが設けられ、指示部がメモリのデータ読み出し/書き込み(別言すれば、ロード/ストア)や演算実行等の命令をデコードし、各読み書き部が命令を発行する。 In the multi-core architecture, each core is provided with a register file and an arithmetic execution unit, and an instruction unit decodes instructions for data read / write (in other words, load / store) and arithmetic execution, and each read / write unit. Issues the order.
特開2001-175632号公報JP 2001-175632 A 特表2008-509493号公報Japanese Patent Publication No. 2008-509493
 マルチコア演算装置の性能は、メモリデータ転送のスループットの大きさに依存する。しかしながら、先行するマルチキャストロード命令のメモリリードコンプリーション受信まで後続のマルチキャストロード命令の処理を待つ制御が行なわれる場合には、メモリデータのスループットが低下するおそれがある。 -The performance of the multi-core computing device depends on the throughput of memory data transfer. However, if control is performed to wait for the processing of the subsequent multicast load instruction until the memory read completion of the preceding multicast load instruction is received, the throughput of memory data may decrease.
 1つの側面では、本明細書に記載する技術は、マルチコアアーキテクチャにおいて、チェーン間の待ち合わせ時間を低減することにより、メモリデータのスループットを向上することを目的とする。 In one aspect, the technology described in this specification aims to improve the throughput of memory data by reducing the waiting time between chains in a multi-core architecture.
 1つの側面において、演算処理装置は、複数のチェーンを構成するマルチコアを有する演算処理装置であって、前記複数のチェーンのうち第1の演算処理の対象である第1のチェーン群と、前記複数のチェーンのうち第2の演算処理の対象である第2のチェーン群と、前記複数のチェーンのうち第3の演算処理の対象である第3のチェーン群とにおいて、前記第1の演算処理の後に連続して前記第2の演算処理が実行される関係の、第1のチェーン群を第1の被判定チェーン群とし、前記第1の演算処理の後に、少なくとも1つ以上の第3の演算処理が実行された後に前記第2の演算処理が実行される関係の、第1のチェーン群に対して第3のチェーン群を一定の方式で計算を実施したものを第2の被判定チェーン群とし、前記複数のチェーンのうち前記第1又は第2の被判定チェーン群が、前記第2の演算処理の対象である前記第2のチェーン群を包含するかを判定する判定回路と、前記第1及び第2の被判定チェーン群のいずれもが前記第2のチェーン群を包含しない場合に、前記第2の演算処理の識別子を初期化する初期化指示を生成する生成回路と、前記初期化指示が発行された場合に前記第2の演算処理に対して初期化した識別子を獲得する一方、前記初期化指示が発行されなかった場合に前記第2の演算処理に対して前記第1の演算処理の識別子に連続する識別子を獲得する獲得回路と、を備える。 In one aspect, the arithmetic processing device is an arithmetic processing device having a multi-core forming a plurality of chains, and includes a first chain group that is a target of a first arithmetic processing among the plurality of chains, and the plurality of chains. In the second chain group that is the target of the second arithmetic processing of the chain and the third chain group that is the target of the third arithmetic processing in the plurality of chains. The first chain group, which has a relationship in which the second arithmetic processing is continuously executed later, is defined as a first determined chain group, and at least one third arithmetic operation is performed after the first arithmetic processing. The second chain to be judged is obtained by calculating the third chain group with respect to the first chain group in a fixed manner, in which the second arithmetic processing is executed after the processing is executed. And the plurality of chains A determination circuit that determines whether the first or second determination target chain group includes the second chain group that is the target of the second arithmetic processing, and the first and second determination chain groups. A generation circuit that generates an initialization instruction that initializes the identifier of the second arithmetic processing when none of the determined chain groups includes the second chain group, and the initialization instruction is issued. In this case, an identifier initialized for the second arithmetic processing is obtained, and when the initialization instruction is not issued, the identifier for the second arithmetic processing is continued to the identifier of the first arithmetic processing. And an acquisition circuit for acquiring an identifier.
 開示の演算処理装置によれば、マルチコアアーキテクチャにおいて、チェーン間の待ち合わせ時間を低減することにより、メモリデータのスループットを向上することができる。 According to the disclosed arithmetic processing device, it is possible to improve the throughput of memory data by reducing the waiting time between chains in a multi-core architecture.
関連例におけるアクセラレータの構成例を模式的に示すブロック図である。It is a block diagram which shows the structural example of the accelerator in a related example typically. 関連例におけるアクセラレータの構成例およびメモリアクセス処理を説明するブロック図である。It is a block diagram explaining an example of composition of an accelerator and a memory access processing in a related example. 図2に示したアクセラレータの書き込み部におけるメモリアクセス処理を説明するブロック図である。FIG. 3 is a block diagram illustrating a memory access process in a writing unit of the accelerator shown in FIG. 2. 図2に示したアクセラレータにおけるメモリアクセス処理を説明するフローチャートである。3 is a flowchart illustrating a memory access process in the accelerator shown in FIG. 図2に示したアクセラレータにおけるメモリアクセス処理を説明するフローチャートである。3 is a flowchart illustrating a memory access process in the accelerator shown in FIG. 図2に示したアクセラレータの読み書き部におけるマルチキャスト用REQIDの初期化処理を説明するフローチャートである。6 is a flowchart illustrating a multicast REQID initialization process in the read / write unit of the accelerator illustrated in FIG. 2. 図2に示したアクセラレータの指示部におけるロード命令の発行処理を説明するフローチャートである。3 is a flowchart illustrating a load instruction issuing process in the accelerator instruction unit illustrated in FIG. 2. 図2に示したアクセラレータの読み書き部におけるREQIDの獲得処理を説明するフローチャートである。3 is a flowchart illustrating REQID acquisition processing in the read / write unit of the accelerator illustrated in FIG. 2. 図2に示した関連例におけるマルチキャストロード処理におけるREQIDの使用状況を例示するテーブルである。3 is a table illustrating the usage status of REQIDs in a multicast load process in the related example shown in FIG. 2. 実施例における情報処理装置のハードウェア構成例を模式的に示すブロック図である。FIG. 1 is a block diagram schematically showing a hardware configuration example of an information processing device in an example. 図10に示したアクセラレータの構成例を模式的に示すブロック図である。It is a block diagram which shows typically the structural example of the accelerator shown in FIG. 図11に示したアクセラレータにおけるリクエストパケットのフォーマットを示す図である。It is a figure which shows the format of the request packet in the accelerator shown in FIG. 図11に示したアクセラレータにおけるコンプリーションパケットのフォーマットを示す図である。FIG. 12 is a diagram showing a format of a completion packet in the accelerator shown in FIG. 11. 図11に示したアクセラレータにおけるメモリアクセス処理を説明するブロック図である。FIG. 12 is a block diagram illustrating memory access processing in the accelerator shown in FIG. 11. 図12に示したアクセラレータのマルチキャスト用REQIDの同期監視回路の構成例を示す図である。It is a figure which shows the structural example of the synchronization monitoring circuit of REQID for multicast of the accelerator shown in FIG. 図12に示したアクセラレータのマルチキャスト用REQIDの初期化信号生成回路の構成例を示す図である。FIG. 13 is a diagram showing a configuration example of a multicast REQID initialization signal generation circuit of the accelerator shown in FIG. 12. 図12に示したアクセラレータのマルチキャスト用獲得回路の構成例を示す図である。FIG. 13 is a diagram showing a configuration example of a multicast acquisition circuit of the accelerator shown in FIG. 12. 図11に示したアクセラレータの指示部におけるREQID初期化命令の発行処理を説明するフローチャートである。12 is a flowchart illustrating a process of issuing a REQID initialization instruction in the instruction unit of the accelerator illustrated in FIG. 11. 図11に示したアクセラレータの読み書き部におけるREQIDの初期化処理を説明するフローチャートである。12 is a flowchart illustrating REQID initialization processing in the read / write unit of the accelerator illustrated in FIG. 11. 図11に示したアクセラレータの指示部におけるロード命令の発行処理を説明するフローチャートである。12 is a flowchart illustrating a load instruction issuing process in the instruction unit of the accelerator illustrated in FIG. 11. 図11に示したアクセラレータの読み書き部におけるREQIDの獲得処理を説明するフローチャートである。12 is a flowchart illustrating REQID acquisition processing in the read / write unit of the accelerator illustrated in FIG. 11. 図11に示した実施例におけるマルチキャストロード処理におけるREQIDの使用状況を例示するテーブルである。12 is a table showing an example of the usage status of REQIDs in the multicast load process in the embodiment shown in FIG. 11.
 以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。本実施形態は、その趣旨を逸脱しない範囲で種々変形して実施することができる。 An embodiment will be described below with reference to the drawings. However, the embodiments described below are merely examples, and there is no intention to exclude the application of various modifications and techniques not explicitly shown in the embodiments. The present embodiment can be variously modified and implemented without departing from the spirit thereof.
 また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。 Also, each diagram is not intended to include only the constituent elements shown in the diagram, and may include other functions and the like.
 以下、図中において、同一の符号を付した部分は同様の部分を示している。 Hereafter, in the figures, parts with the same reference numerals indicate similar parts.
 〔A〕関連例
 図1は、関連例におけるアクセラレータ600の構成例を模式的に示すブロック図である。
[A] Related Example FIG. 1 is a block diagram schematically showing a configuration example of the accelerator 600 in the related example.
 アクセラレータ600は、演算命令を処理し、MAC6,メモリ7及び複数(図示する例では、3つ)のコア8(「コア#0~#2」)を備える。 The accelerator 600 processes an arithmetic instruction, and includes a MAC 6, a memory 7, and a plurality of (three in the illustrated example) cores 8 (“cores # 0 to # 2”).
 MAC6は、各コア8によるメモリ7に対するアクセスを処理する。 The MAC 6 handles access to the memory 7 by each core 8.
 メモリ7は、一次記録メモリあるいはワーキングメモリとして利用されてよい。 The memory 7 may be used as a primary recording memory or a working memory.
 各コア8は、MAC6を介して、メモリ7に対するロード及びストアを実行する。各コア8は、指示部81,読み書き部82及び演算実行部83として機能すると共に、レジスタファイル84を記憶する。 Each core 8 loads and stores the memory 7 via the MAC 6. Each core 8 functions as an instruction unit 81, a read / write unit 82, and a calculation execution unit 83, and stores a register file 84.
 レジスタファイル84は、メモリ7から取得されたデータを記憶する。演算実行部83は、レジスタファイル84に記憶されたデータを用いて演算を行なう。 The register file 84 stores the data acquired from the memory 7. The operation execution unit 83 performs an operation using the data stored in the register file 84.
 指示部81は、ソフトウェアから送られたロード命令をデコードし、読み書き部82にロード命令の実行を指示する。 The instruction unit 81 decodes the load instruction sent from the software and instructs the read / write unit 82 to execute the load instruction.
 読み書き部82は、ロード命令をメモリアクセス単位に分割し、分割した各ロード命令にリクエストID(「REQID」と称されてもよい。)を載せてメモリリードリクエストをMAC6へ発行する。 The read / write unit 82 divides the load instruction into memory access units, puts a request ID (may be referred to as “REQID”) on each divided load instruction, and issues a memory read request to the MAC 6.
 図2は、図1とは異なる、アクセラレータ600におけるメモリアクセス処理を説明するブロック図であり、指示部81及び読み書き部82が各コアから独立して設けられる。図3は、図2に示したアクセラレータ600の読み書き部82におけるメモリアクセス処理を説明するブロック図である。 2 is a block diagram explaining a memory access process in the accelerator 600, which is different from FIG. 1, and an instruction unit 81 and a read / write unit 82 are provided independently from each core. FIG. 3 is a block diagram illustrating a memory access process in the read / write unit 82 of the accelerator 600 shown in FIG.
 以下、図2及び図3を参照しながら、メモリアクセス処理を説明する。 The memory access process will be described below with reference to FIGS. 2 and 3.
 指示部81は、ソフトウェアからの命令をデコードする(図2及び図3の符号A1参照)。 The instruction unit 81 decodes the instruction from the software (see symbol A1 in FIGS. 2 and 3).
 指示部81は、全対象チェーンの読み書き部82に、マルチキャストロード命令を発行する(図2及び図3の符号A2参照)。この際、指示部81は、全対象チェーンの読み書き部82に対象チェーンを通知する。 The instruction unit 81 issues a multicast load instruction to the read / write units 82 of all target chains (see reference numeral A2 in FIGS. 2 and 3). At this time, the instruction unit 81 notifies the read / write units 82 of all target chains of the target chains.
 各読み書き部82の命令分割回路821における決定回路822は、対象命令が複数であるロード命令を受信したことにより、マルチキャストロード命令が発行されたと判断する。そして、命令分割回路821は、ロード命令を256バイト毎に分割する(図2及び図3の符号A3参照)。 The decision circuit 822 in the instruction division circuit 821 of each read / write unit 82 determines that a multicast load instruction has been issued by receiving a load instruction having a plurality of target instructions. Then, the instruction dividing circuit 821 divides the load instruction into 256 bytes (see symbol A3 in FIGS. 2 and 3).
 読み書き部82のREQID管理回路823は、ユニキャスト用獲得回路824,マルチキャスト用獲得回路825及び獲得待ちバッファ826を備える。マルチキャスト用獲得回路825は、分割されたロード命令毎にREQIDとデータバッファ領域とを獲得する(図2及び図3の符号A4参照)。ここで、マルチキャスト用獲得回路825は、分割された1つ目のリクエストに対して、REQID=0を取得する。マルチキャスト用獲得回路825は、REQID=0が使用中の場合には、REQID=0が解放されるまで待機する。以降、マルチキャスト用獲得回路825は、REQIDが連番となるようにREQIDを取得する。 The REQID management circuit 823 of the read / write unit 82 includes a unicast acquisition circuit 824, a multicast acquisition circuit 825, and an acquisition wait buffer 826. The multicast acquisition circuit 825 acquires the REQID and the data buffer area for each of the divided load instructions (see symbol A4 in FIGS. 2 and 3). Here, the multicast acquisition circuit 825 acquires REQID = 0 for the first divided request. When REQID = 0 is in use, the multicast acquisition circuit 825 waits until REQID = 0 is released. After that, the multicast acquisition circuit 825 acquires the REQIDs so that the REQIDs are serial numbers.
 各読み書き部82は、メモリリードリクエスト発行担当の読み書き部82における獲得待ちバッファ826に対して、獲得したREQIDを通知する(図2及び図3の符号A5参照)。これにより、メモリリードリクエスト発行担当の読み書き部82は、各読み書き部82において獲得されたREQIDが統一されたことを認識できる。 Each read / write unit 82 notifies the acquisition waiting buffer 826 in the read / write unit 82 in charge of issuing the memory read request of the acquired REQID (see symbol A5 in FIGS. 2 and 3). As a result, the read / write unit 82 in charge of issuing the memory read request can recognize that the REQIDs acquired by the read / write units 82 are unified.
 メモリリードリクエスト発行担当の読み書き部82におけるメモリリクエスト生成回路827は、全ての対象チェーンの読み書き部82から獲得したREQIDを通知された後、MAC6のポート61における受信バッファ611に対して、メモリリードリクエストを発行する(図2及び図3の符号A6参照)。この際、dstフィールドにおいて、対象チェーンがビットマップによって指定される。 The memory request generation circuit 827 in the read / write unit 82 in charge of issuing the memory read request issues the memory read request to the reception buffer 611 in the port 61 of the MAC 6 after being notified of the REQIDs acquired from the read / write units 82 of all target chains. Is issued (see A6 in FIGS. 2 and 3). At this time, the target chain is designated by the bitmap in the dst field.
 全ての対象チェーンの読み書き部82は、メモリリードリクエストの応答として、MAC6のポート61における送信バッファ612からメモリリードコンプリーションを受信し、付随するメモリリードデータをデータバッファ829に格納する(図2及び図3の符号A7)。 The read / write units 82 of all target chains receive the memory read completion from the transmission buffer 612 at the port 61 of the MAC 6 as a response to the memory read request, and store the accompanying memory read data in the data buffer 829 (FIG. 2 and Reference A7 in FIG. 3).
 各読み書き部82のレジスタ制御リクエスト生成回路828は、データバッファ829からメモリリードデータを読み出し、コア8のレジスタファイル84へのライトリクエストと共に読み台したメモリリードデータを転送する(図2及び図3の符号A8参照)。 The register control request generation circuit 828 of each read / write unit 82 reads the memory read data from the data buffer 829, and transfers the read memory read data together with the write request to the register file 84 of the core 8 (see FIGS. 2 and 3). Reference A8).
 上述した符号A4~A8によって示した処理は、分割された全てのリクエストに対して繰り返し実行される。 The processing indicated by the reference signs A4 to A8 is repeatedly executed for all the divided requests.
 各読み書き部82は、符号A2において示したマルチキャストロード命令に対応する完了通知を指示部81に対して発行する(図2及び図3の符号A9参照)。 Each read / write unit 82 issues a completion notice corresponding to the multicast load instruction indicated by reference sign A2 to the instruction unit 81 (see reference sign A9 in FIGS. 2 and 3).
 指示部81は、全ての対象チェーンの読み書き部82から完了通知を受け取り、命令の完了を認識する(図2及び図3の符号A10参照)。 The instruction unit 81 receives completion notifications from the read / write units 82 of all target chains, and recognizes the completion of the instruction (see symbol A10 in FIGS. 2 and 3).
 上述した関連例におけるアクセラレータ600におけるメモリアクセス処理を図4及び図5におけるフローチャート(ステップS1~S19)を参照しながら説明する。 The memory access process in the accelerator 600 in the above-described related example will be described with reference to the flowcharts (steps S1 to S19) in FIGS. 4 and 5.
 図4において、指示部81は、命令をデコードして、対象チェーンの読み書き部82に命令を発行する(ステップS1)。 In FIG. 4, the instruction unit 81 decodes the instruction and issues the instruction to the read / write unit 82 of the target chain (step S1).
 対象チェーンの読み書き部82は、対象チェーンが複数あるかを判定する(ステップS2)。 The target chain read / write unit 82 determines whether there are a plurality of target chains (step S2).
 対象チェーンが複数ない場合には(ステップS2のNoルート参照)、ユニキャスト動作が実施される。 If there are multiple target chains (see No route in step S2), unicast operation is performed.
 一方、対象チェーンが複数ある場合には(ステップS2のYesルート参照)、読み書き部82は、マルチキャスト用獲得回路825により、獲得したいREQIDが空いているかを判定する(ステップS3)。 On the other hand, when there are a plurality of target chains (see Yes route in step S2), the read / write unit 82 determines whether the REQID to be acquired is free by the multicast acquisition circuit 825 (step S3).
 獲得したいREQIDが空いていない場合には(ステップS3のNoルート参照)、ステップS3における処理が繰り返し実施される。 If the REQID you want to acquire is not empty (see No route in step S3), the process in step S3 is repeated.
 一方、獲得したいREQIDが空いている場合には(ステップS3のYesルート参照)、読み書き部82は、リクエスト担当の読み書き部82にREQIDが獲得できたことを通知する(ステップS4)。 On the other hand, if the REQID to be acquired is free (see Yes route in step S3), the reading / writing unit 82 notifies the reading / writing unit 82 in charge of the request that the REQID has been acquired (step S4).
 読み書き部82は、自身がリクエスト担当の読み書き部82であるかを判定する(ステップS5)。 The read / write unit 82 determines whether it is the read / write unit 82 in charge of the request (step S5).
 自身がリクエスト担当の読み書き部82でない場合には(ステップS5のNoルート参照)、処理はステップS9へ進む。 If the read / write unit 82 is not in charge of the request (see No route in step S5), the process proceeds to step S9.
 一方、自身がリクエスト担当の読み書き部82である場合には(ステップS5のYesルート参照)、読み書き部82は、全ての対象チェーンからREQIDの獲得通知が発行されたかを判定する(ステップS6)。 On the other hand, when the read / write unit 82 is in charge of the request (see Yes route in step S5), the read / write unit 82 determines whether REQID acquisition notifications have been issued from all target chains (step S6).
 REQIDの獲得通知が発行されていない対象チェーンがある場合には(ステップS6のNoルート参照)、ステップS6における処理が繰り返し実施される。 If there is a target chain for which the REQID acquisition notification has not been issued (see No route in step S6), the process in step S6 is repeatedly executed.
 一方、全ての対象チェーンからREQIDの獲得通知が発行された場合には(ステップS6のYesルート参照)、読み書き部82は、MAC6のポート61において受信バッファ611に空きがあるかを判定する(ステップS7)。 On the other hand, when REQID acquisition notifications have been issued from all target chains (see Yes route in step S6), the read / write unit 82 determines whether or not the receive buffer 611 is available at the port 61 of the MAC6 (step S6). S7).
 受信バッファ611に空きがない場合には(ステップS7のNoルート参照)、ステップS7における処理が繰り返し実施される。 If there is no free space in the reception buffer 611 (see No route in step S7), the process in step S7 is repeated.
 一方、受信バッファ611に空きがある場合には(ステップS7のYesルート参照)、読み書き部82は、MAC6にマルチキャストリードリクエストを発行する(ステップS8)。ここで、マルチキャストリードの宛先は、全ての対象チェーンに設定される。 On the other hand, if the reception buffer 611 has a free space (see Yes route in step S7), the read / write unit 82 issues a multicast read request to the MAC 6 (step S8). Here, the destination of the multicast read is set to all target chains.
 MAC6における処理は、図5のステップS11以降に示す。 The process in MAC6 is shown in step S11 and subsequent steps in FIG.
 読み書き部82は、分割した全てのリードリクエストを発行したかを判定する(ステップS9)。発行していないリードリクエストがある場合には(ステップS9のNoルート参照)、処理はステップS3へ戻る。 The read / write unit 82 determines whether all the divided read requests have been issued (step S9). If there is a read request that has not been issued (see No route in step S9), the process returns to step S3.
 一方、分割した全てのリードリクエストを発行した場合には(ステップS9のYesルート参照)、読み書き部82は、指示部81からの後続の命令に対応するリクエストを発行する(ステップS10)。そして、処理は、ステップS2へ戻る。 On the other hand, when all the divided read requests are issued (see Yes route in step S9), the read / write unit 82 issues a request corresponding to the subsequent instruction from the instruction unit 81 (step S10). Then, the process returns to step S2.
 図5において、MAC6は、マルチキャストリードリクエストを受信する(ステップS11)。 In FIG. 5, the MAC 6 receives the multicast read request (step S11).
 MAC6は、メモリリードを行なう(ステップS12)。 MAC6 performs memory read (step S12).
 MAC6は、dstフィールドの読み書き部82に対して、リードデータを付加したコンプリーションを発行する(ステップS13)。 The MAC 6 issues a completion with read data added to the read / write unit 82 in the dst field (step S13).
 読み書き部82は、MAC6からコンプリーションを受信する(ステップS14)。 The read / write unit 82 receives the completion from the MAC 6 (step S14).
 読み書き部82は、各コア8に対し、リードデータを付加したレジスタライトリクエストを発行する(ステップS15)。 The read / write unit 82 issues a register write request with read data added to each core 8 (step S15).
 読み書き部82は、REQID及びデータバッファ829を解放する(ステップS16)。 The read / write unit 82 releases the REQID and the data buffer 829 (step S16).
 読み書き部82は、分割したリードリクエストに対応する、全てのレジスタライトリクエストを発行したか判定する(ステップS17)。 The read / write unit 82 determines whether all the register write requests corresponding to the divided read requests have been issued (step S17).
 発行していないレジスタライトリクエストがある場合には(ステップS17のNoルート参照)、処理はステップS14へ戻る。 If there is a register write request that has not been issued (see No route in step S17), the process returns to step S14.
 一方、全てのレジスタライトリクエストを発行した場合には(ステップS17のYesルート参照)、読み書き部82は、指示部81に自チェーンにおける命令の完了を通知する(ステップS18)。 On the other hand, when all the register write requests have been issued (see Yes route in step S17), the read / write unit 82 notifies the instruction unit 81 of the completion of the instruction in its own chain (step S18).
 指示部81は、全ての対象チェーンの読み書き部82から命令完了の通知を受信したかを判定する(ステップS19)。 The instruction unit 81 determines whether the instruction completion notification has been received from the read / write units 82 of all target chains (step S19).
 命令完了の通知を受信していない対象チェーンがある場合には(ステップS19のNoルート参照)、ステップS19における処理が繰り返し実行される。 If there is a target chain that has not received the instruction completion notification (see No route in step S19), the process in step S19 is repeatedly executed.
 一方、全ての対象チェーンの読み書き部82から命令完了の通知を受信した場合には(ステップS19のYesルート参照)、指示部81は命令の完了を認識して、メモリアクセス処理は終了する。 On the other hand, when the instruction completion notification is received from the read / write units 82 of all the target chains (see Yes route in step S19), the instruction unit 81 recognizes the completion of the instruction and the memory access process ends.
 次に、関連例におけるアクセラレータ600の読み書き部82におけるマルチキャスト用REQIDの初期化処理を、図6に示すフローチャート(ステップS21~S25)に従って説明する。 Next, the initialization process of the multicast REQID in the read / write unit 82 of the accelerator 600 in the related example will be described according to the flowchart (steps S21 to S25) shown in FIG.
 読み書き部82は、1つの命令のN番目の分割を処理する(ステップS21)。 The read / write unit 82 processes the Nth division of one instruction (step S21).
 読み書き部82は、Nが1であるかを判定する(ステップS22)。 The read / write unit 82 determines whether N is 1 (step S22).
 Nが1である場合には(ステップS22のYesルート参照)、読み書き部82は、マルチキャスト用獲得回路825を初期化する(ステップS23)。そして、処理はステップS25へ進む。 If N is 1 (see Yes route in step S22), the read / write unit 82 initializes the multicast acquisition circuit 825 (step S23). Then, the process proceeds to step S25.
 一方、Nが1でない場合には(ステップS22のNoルート参照)、マルチキャスト用獲得回路825を更新する(ステップS24)。 On the other hand, if N is not 1 (see No route in step S22), the multicast acquisition circuit 825 is updated (step S24).
 読み書き部82は、マルチキャストにおいて発行するREQIDを決定する(ステップS25)。そして、マルチキャスト用REQIDの初期化処理は終了する。 The read / write unit 82 determines the REQID to be issued in the multicast (step S25). Then, the initialization process of the multicast REQID ends.
 次に、関連例におけるアクセラレータ600の指示部81におけるロード命令の発行処理を、図7に示すフローチャート(ステップS31~S32)に従って説明する。 Next, the issuing process of the load instruction in the instruction unit 81 of the accelerator 600 in the related example will be described according to the flowchart (steps S31 to S32) shown in FIG.
 指示部81は、ソフトウェアからのロード命令をデコードする(ステップS31)。 The instruction unit 81 decodes the load instruction from the software (step S31).
 指示部81は、ロード命令及び対象チェーンを対象の読み書き部82に発行する(ステップS32)。そして、処理は図8のステップS41以降の読み書き部82における処理に引き継がれ、ロード命令の発行処理は終了する。 The instruction unit 81 issues the load instruction and the target chain to the target read / write unit 82 (step S32). Then, the processing is taken over by the processing in the reading / writing unit 82 after step S41 in FIG. 8, and the load instruction issuing processing ends.
 次に、関連例におけるアクセラレータ600の読み書き部82におけるREQIDの獲得処理を、図8に示すフローチャート(ステップS41~S47)に従って説明する。 Next, the REQID acquisition process in the read / write unit 82 of the accelerator 600 in the related example will be described according to the flowchart (steps S41 to S47) shown in FIG.
 読み書き部82は、図7のステップS32に示した指示部81からの指示に応じて、ロード命令及び対象チェーンを受信する(ステップS41)。 The read / write unit 82 receives the load instruction and the target chain according to the instruction from the instruction unit 81 shown in step S32 of FIG. 7 (step S41).
 読み書き部82は、対象チェーンが複数あるかを判定する(ステップS42)。 The read / write unit 82 determines whether there are a plurality of target chains (step S42).
 対象チェーンが複数ない場合には(ステップS42のNoルート参照)、ユニキャスト動作が実施される。 If there are not multiple target chains (see No route in step S42), unicast operation is performed.
 一方、対象チェーンが複数ある場合には(ステップS42のYesルート参照)、読み書き部82は、ロード命令の1番目の分割を処理中であるかを判定する(ステップS43)。 On the other hand, when there are a plurality of target chains (see Yes route in step S42), the read / write unit 82 determines whether the first division of the load instruction is being processed (step S43).
 1番目の分割を処理中である場合には(ステップS43のYesルート参照)、読み書き部82は、マルチキャスト用獲得回路825を初期化する(ステップS44)。そして、処理は、ステップS46へ進む。 If the first division is being processed (see Yes route in step S43), the read / write unit 82 initializes the multicast acquisition circuit 825 (step S44). Then, the process proceeds to step S46.
 一方、1番目の分割を処理中でない場合には(ステップS43のNoルート参照)、読み書き部82は、マルチキャスト用獲得回路825を更新する(ステップS45)。 On the other hand, when the first division is not being processed (see No route in step S43), the read / write unit 82 updates the multicast acquisition circuit 825 (step S45).
 読み書き部82は、獲得したいREQIDが空いているかを判定する(ステップS46)。 The read / write unit 82 determines whether the REQID to be acquired is free (step S46).
 獲得したいREQIDが空いていない場合には(ステップS46のNoルート参照)、ステップS46における処理が繰り返し実行される。 If the REQID to be acquired is not empty (see No route in step S46), the process in step S46 is repeatedly executed.
 一方、獲得したいREQIDが空いている場合には(ステップS46のYesルート参照)、読み書き部82は、獲得したREQIDの待ち合わせ処理を行なう(ステップS47)。そして、REQIDの獲得処理は終了する。 On the other hand, if the REQID to be acquired is free (see Yes route in step S46), the reading / writing unit 82 performs waiting processing for the acquired REQID (step S47). Then, the REQID acquisition process ends.
 図9は、図2に示した関連例におけるマルチキャストロード処理におけるREQIDの使用状況を例示するテーブルである。 FIG. 9 is a table illustrating the usage status of REQIDs in the multicast load process in the related example shown in FIG.
 マルチコア演算装置の性能は、メモリデータ転送のスループットの大きさに依存する。上述した関連例では、マルチキャストロード命令が頻発しないことを前提とされている。そのため、マルチキャストロード命令が連続して指示部81でデコードされ読み書き部82に発行される場合には、各読み書き部82は、1つ目のマルチキャストロード命令の実行によりマルチキャストに使用したリクエストID=0が解放されるまで、2つ目のマルチキャストロード命令を実行できない。 -The performance of the multi-core computing device depends on the throughput of memory data transfer. In the above-mentioned related example, it is premised that the multicast load command does not occur frequently. Therefore, when the multicast load command is continuously decoded by the instruction unit 81 and issued to the read / write unit 82, each read / write unit 82 executes the first multicast load command and the request ID used for the multicast = 0. The second multicast load instruction cannot be executed until is released.
 例えば、図9に示すマルチキャストロード命令「1」~「4」が連続して発行される場合を想定する。マルチキャストロード命令「1」の対象チェーンは#0~#7であり、マルチキャストロード命令「2」の対象チェーンは#0~#7である。また、マルチキャストロード命令「3」の対象チェーンは#0~#3であり、マルチキャストロード命令「3」の対象チェーンは#0~#7である。なお、各マルチキャストロード命令のメモリアクセスサイズは1キロバイトである。 For example, assume that the multicast load instructions “1” to “4” shown in FIG. 9 are issued consecutively. The target chains of the multicast load instruction “1” are # 0 to # 7, and the target chains of the multicast load instruction “2” are # 0 to # 7. The target chains of the multicast load instruction “3” are # 0 to # 3, and the target chains of the multicast load instruction “3” are # 0 to # 7. The memory access size of each multicast load instruction is 1 kilobyte.
 各読み書き部82がマルチキャストロード命令「1」を実行するにあたり、MAC6へのマルチキャストメモリリードは合計4回発行される。この際に使用されるリクエストIDは、順に0,1,2,3である。 When each read / write unit 82 executes the multicast load instruction “1”, the multicast memory read to the MAC 6 is issued four times in total. Request IDs used at this time are 0, 1, 2, 3 in order.
 次に、読み書き部82は、マルチキャストロード命令「1」を実行するにあたり、MAC6へのマルチキャストメモリリードは合計4回発行される。この際に、未使用のリクエストIDは4~15であるがこれらのリクエストIDは使用できず、リクエストID=0が解放するまで(別言すれば、「リード1-01のコンプリーションを受信まで」)待ち、その後にリクエストID=0が使用される。リクエストID=1~3についても、リクエストID=0と同様である。 Next, when the read / write unit 82 executes the multicast load instruction “1”, the multicast memory read to the MAC 6 is issued four times in total. At this time, the unused request IDs are 4 to 15, but these request IDs cannot be used and are released until the request ID = 0 is released (in other words, “until completion of lead 1-01 is received”). )), Then request ID = 0 is used. The same applies to request ID = 1 to 3 as request ID = 0.
 このため、マルチキャストロード命令「1」及び「2」について、メモリリードリクエストを連続して発行できない。マルチキャストロード命令「3」及び「4」についても、マルチキャストロード命令「1」及び「2」と同様に、メモリリードリクエストを連続して発行することができない。 For this reason, memory read requests cannot be issued consecutively for the multicast load instructions “1” and “2”. Similarly to the multicast load instructions “1” and “2”, the memory read request cannot be continuously issued for the multicast load instructions “3” and “4”.
 これにより、各読み書き部82間でリクエストIDを統一する処理のために、先行するマルチキャストロード命令のメモリリードのコンプリーションの受信まで後続のマルチキャストロード命令に対する処理が保留される。そして、メモリデータのスループットが低下してしまうおそれがある。 Due to this, for the processing of unifying the request IDs among the read / write units 82, the processing for the subsequent multicast load instruction is suspended until the completion of the memory read of the preceding multicast load instruction is received. Then, the throughput of memory data may be reduced.
 〔B〕実施形態の一例
 〔B-1〕システム構成例
 図10は、実施例における情報処理装置1のハードウェア構成例を模式的に示すブロック図である。
[B] Example of Embodiment [B-1] System Configuration Example FIG. 10 is a block diagram schematically showing a hardware configuration example of the information processing apparatus 1 in the example.
 情報処理装置1は、図10に示すように、Central Processing Unit(CPU)10,Input/Output(I/O)コントローラ11,アクセラレータ12,ハードディスク13,I/Oデバイス14及びメモリ15を有する。 As shown in FIG. 10, the information processing device 1 has a Central Processing Unit (CPU) 10, an Input / Output (I / O) controller 11, an accelerator 12, a hard disk 13, an I / O device 14 and a memory 15.
 I/Oコントローラ11は、アクセラレータ12,ハードディスク13及びI/Oデバイス14に接続される。ここで、I/Oデバイス14は、アクセラレータ12及びハードディスク13以外のI/Oデバイスを指す。I/Oコントローラ11は、CPU10からの指示を受けて、アクセラレータ12,ハードディスク13及びI/Oデバイス14を制御する。そして、I/Oコントローラ11は、アクセラレータ12,ハードディスク13及びI/Oデバイス14とCPU10との通信を中継する。 The I / O controller 11 is connected to the accelerator 12, the hard disk 13, and the I / O device 14. Here, the I / O device 14 refers to an I / O device other than the accelerator 12 and the hard disk 13. The I / O controller 11 receives an instruction from the CPU 10 and controls the accelerator 12, the hard disk 13, and the I / O device 14. Then, the I / O controller 11 relays communication between the accelerator 12, the hard disk 13, the I / O device 14, and the CPU 10.
 演算処理装置であるCPU10は、I/Oコントローラ11及びメモリ15とバスで接続される。そして、CPU10は、メモリ15とデータの送受信が可能である。また、CPU10は、I/Oコントローラ11を介して、アクセラレータ12,ハードディスク13及びI/Oデバイス14とデータの送受信が可能である。 The CPU 10, which is an arithmetic processing unit, is connected to the I / O controller 11 and the memory 15 by a bus. Then, the CPU 10 can send and receive data to and from the memory 15. Further, the CPU 10 can send and receive data to and from the accelerator 12, the hard disk 13, and the I / O device 14 via the I / O controller 11.
 ハードディスク13は、Operating System(OS)や各種アプリケーションなどの様々なプログラムを格納する。 The hard disk 13 stores various programs such as Operating System (OS) and various applications.
 CPU10は、ハードディスク13からプログラムを読み出し、メモリ15上に展開して実行することで、OSや各種アプリケーションを動作させる。アプリケーションとしては、例えば、ディープラーニングなどを実行するアプリケーションがある。 The CPU 10 operates the OS and various applications by reading the program from the hard disk 13, expanding it on the memory 15, and executing it. Examples of applications include applications that execute deep learning and the like.
 さらに、CPU10は、アプリケーションを実行する際の特定の処理をアクセラレータ12に行なわせる。例えば、CPU10は、ディープラーニングなどにおける演算処理をアクセラレータ12に行なわせる。具体的には、CPU10により実行されるソフトウェアが、I/Oコントローラ11を介して演算に用いるデータとともに演算命令をアクセラレータ12へ送信する。 Further, the CPU 10 causes the accelerator 12 to perform a specific process when executing the application. For example, the CPU 10 causes the accelerator 12 to perform arithmetic processing such as deep learning. Specifically, the software executed by the CPU 10 transmits an operation command to the accelerator 12 together with data used for the operation via the I / O controller 11.
 図11は、図10に示したアクセラレータ12の構成例を模式的に示すブロック図である。 FIG. 11 is a block diagram schematically showing a configuration example of the accelerator 12 shown in FIG.
 アクセラレータ12は、MAC121,メモリ122,複数のコア123,指示部124及び読み書き部125を備える。 The accelerator 12 includes a MAC 121, a memory 122, a plurality of cores 123, an instruction unit 124, and a read / write unit 125.
 メモリ122は、一次記録メモリあるいはワーキングメモリとして利用されてよい。 The memory 122 may be used as a primary recording memory or a working memory.
 MAC121は、各コア123によるメモリ7に対するアクセスを処理する。MAC121は、複数のポート1211(図11では「P#0~#7」と表記。)を備える。 The MAC 121 processes access to the memory 7 by each core 123. The MAC 121 includes a plurality of ports 1211 (denoted as “P # 0 to # 7” in FIG. 11).
 複数のコア123と1つの読み書き部125と1つのポート1211とは、図11において破線枠で示すチェーン#0~#7毎に備えられる。図示する例では、各チェーンにおいて、7つのコア123が備えられる。例えば、チェーン#0にはコア#0-1~#0-Nが備えられ、チェーン#1にはコア#1-1~#1-Nが備えられ、チェーン#7にはコア#7-1~#7-Nが備えられる。 A plurality of cores 123, one read / write unit 125, and one port 1211 are provided for each chain # 0 to # 7 indicated by the broken line frame in FIG. In the illustrated example, seven cores 123 are provided in each chain. For example, chain # 0 has cores # 0-1 to # 0-N, chain # 1 has cores # 1-1 to # 1-N, and chain # 7 has core # 7-1. ~ # 7-N are provided.
 各コア123は、読み書き部125及びMAC121を介して、メモリ122に対するロード及びストアを実行する。 Each core 123 executes loading and storing on the memory 122 via the read / write unit 125 and the MAC 121.
 指示部124は、ソフトウェアから送られたロード命令をデコードし、読み書き部125にロード命令の実行を指示する。 The instruction unit 124 decodes the load instruction sent from the software and instructs the read / write unit 125 to execute the load instruction.
 読み書き部125は、ロード命令をメモリアクセス単位に分割し、分割した各ロード命令にリクエストID(「REQID」と称してもよい。)を載せてメモリリードリクエストをMAC121へ発行する。 The read / write unit 125 divides the load instruction into memory access units, puts a request ID (may be referred to as “REQID”) on each divided load instruction, and issues a memory read request to the MAC 121.
 図11に示すように、搭載されるコア123の数が多い場合には、回路実装や配線性の観点から、メモリ122へのアクセスバスをコア123間で共有しリング状に繋げた構成が採用される場合がある。 As shown in FIG. 11, when the number of mounted cores 123 is large, a configuration in which an access bus to the memory 122 is shared between the cores 123 and connected in a ring shape is adopted from the viewpoint of circuit mounting and wiring. May be done.
 ここで、同じメモリデータを複数のチェーンのコア群にロードする場合には、各読み書き部125がそれぞれ独立にメモリリードリクエストを発行すると、MAC121は同じメモリ領域をリクエストの数だけリードすることになる。この場合には、MAC121は同じ動作を繰り返すことになり、その間、後続命令の処理を待たせることになるため効率が悪い。そこで、命令は複数のチェーンを一度に指定したロード(「マルチキャストロード」と称してもよい。)命令がサポートされる。MAC121及び読み書き部125は、複数のチェーンを指定したメモリリード(「マルチキャストリードリクエスト」と称してよい。)をサポートする。 Here, when the same memory data is loaded into the core groups of a plurality of chains, when each read / write unit 125 issues a memory read request independently, the MAC 121 reads the same memory area by the number of requests. .. In this case, the MAC 121 repeats the same operation, and the processing of the subsequent instruction is kept waiting during that time, which is inefficient. Therefore, as the instruction, a load (which may be referred to as “multicast load”) instruction in which a plurality of chains are designated at a time is supported. The MAC 121 and the read / write unit 125 support a memory read (may be referred to as a “multicast read request”) that specifies a plurality of chains.
 図12は、図11に示したアクセラレータ12におけるリクエストパケットのフォーマットを示す図である。 FIG. 12 is a diagram showing a format of a request packet in the accelerator 12 shown in FIG.
 読み書き部125により生成されるマルチキャストリードリクエストは、図12に示すフォーマットを有する。マルチキャストリードリクエストは、リクエストの種別を示すopc、読み出したデータの送信先を示すdst、割り当てられたIDを示すREQID及びデータの読み出しアドレスを示すAddressが登録される。 The multicast read request generated by the read / write unit 125 has the format shown in FIG. In the multicast read request, opc indicating the type of request, dst indicating the transmission destination of the read data, REQID indicating the assigned ID, and Address indicating the read address of the data are registered.
 例えば、opc、dst及びREQIDは、第1サイクルで送られる。そして、Addressは、第1サイクル及び第2サイクルで送られる。 For example, opc, dst and REQID are sent in the first cycle. The Address is sent in the first cycle and the second cycle.
 図13は、図11に示したアクセラレータ12におけるコンプリーションパケットのフォーマットを示す図である。 FIG. 13 is a diagram showing a format of a completion packet in the accelerator 12 shown in FIG.
 読み書き部125により取得されるメモリリードリコンプリーションは、図13に示すフォーマットを有する。メモリリードコンプリーションにおける第1サイクルで送信される領域は、リクエストの種別を示すopc、応答の対象であるマルチキャストリードリクエストのIDを示すREQID及び応答のステータスであるStatus、並びに、リザーブ(rsv)の領域を有するヘッダが格納される。 The memory read recompletion obtained by the read / write unit 125 has the format shown in FIG. The area transmitted in the first cycle of the memory read completion is opc indicating the request type, REQID indicating the ID of the multicast read request that is the response target, and Status indicating the response status, and the reserve (rsv). A header having an area is stored.
 図12に示したリクエストのdstフィールドには、コンプリーションが発行されるチェーンがビットマップにより指定される。図12及び図13に示したopcフィールドでは、メモリリード又はメモリライトのリクエストコンプリーションが判別される。図13に示したREQIDフィールドは、図12示したリクエストに対応するコンプリーションであり、同じ値が格納される。図12に示したAddressフィールドには、アクセスするアドレス値が格納される。 In the dst field of the request shown in FIG. 12, the chain to which the completion is issued is specified by the bitmap. In the opc field shown in FIGS. 12 and 13, the request completion of memory read or memory write is determined. The REQID field shown in FIG. 13 is a completion corresponding to the request shown in FIG. 12, and the same value is stored. An address value to be accessed is stored in the Address field shown in FIG.
 指示部124は、各読み書き部125にロード命令と共に対象チェーンの情報を通知する。 The instruction unit 124 notifies each read / write unit 125 together with the load instruction along with information about the target chain.
 代表の読み書き部125は、MAC121へのメモリリードリクエストの発行の際にdstフィールドに対象チェーンをビットマップで指定する。メモリリードリクエストを受け取ったMAC121は、メモリ122からデータを取得し、dstフィールドで指定された全てのチェーンにコンプリーションを発行する。 The representative read / write unit 125 specifies the target chain in the dst field with a bitmap when issuing a memory read request to the MAC 121. Upon receiving the memory read request, the MAC 121 acquires data from the memory 122 and issues a completion to all chains specified by the dst field.
 図14は、図11に示したアクセラレータ12におけるメモリアクセス処理を説明するブロック図である。 FIG. 14 is a block diagram illustrating a memory access process in the accelerator 12 shown in FIG.
 指示部124は、ソフトウェアからの命令をデコードする。指示部124は、全対象チェーンの読み書き部125に、マルチキャストロード命令を発行する。この際、指示部124は、全対象チェーンの読み書き部125に対象チェーンを通知する。指示部124は、REQID初期化信号を読み書き部125へのインタフェース信号として、ロード命令と共に各読み書き部125に伝搬する。 The instruction unit 124 decodes an instruction from software. The instruction unit 124 issues a multicast load command to the read / write units 125 of all target chains. At this time, the instruction unit 124 notifies the read / write unit 125 of all target chains of the target chains. The instruction unit 124 propagates the REQID initialization signal as an interface signal to the reading / writing unit 125 to each reading / writing unit 125 together with the load instruction.
 指示部124は、同期監視回路1221及び初期化信号生成回路1222を備える。 The instruction unit 124 includes a synchronization monitoring circuit 1221 and an initialization signal generation circuit 1222.
 図15は、図12に示したアクセラレータ12のマルチキャスト用REQIDの同期監視回路1221の構成例を示す図である。 FIG. 15 is a diagram showing an example of the configuration of the multicast REQID synchronization monitoring circuit 1221 of the accelerator 12 shown in FIG.
 アクセラレータ12においてチェーン#0~#7が備えられる場合には、図15に示すように、同期監視回路1221は、28パターンの(X,Y)の組み合わせを入力される。 When the accelerator 12 includes the chains # 0 to # 7, as shown in FIG. 15, the synchronization monitoring circuit 1221 receives 28 patterns of (X, Y) combinations.
 出力信号same_reqid_grp_XYも28パターンあり、図14に示したグループ表1220に格納される。load_validはロード命令のvalid信号であり、本回路の更新指示信号である。 The output signal same_reqid_grp_XY also has 28 patterns and is stored in the group table 1220 shown in FIG. load_valid is a valid signal of a load instruction and an update instruction signal of this circuit.
 同期監視回路1221において、マルチキャストロード命令に対してchain[X]及び[Y]が共に対象チェーンである場合に、same_reqid_grp_XY=1に更新される。chain[X]及び[Y]の一方を対象とするマルチキャストロード命令、又は、chain[X]及び[Y]の一方を対象とするシングルキャストロード命令の場合には、same_reqid_grp_XY=0に更新される。また、chain[X]及び[Y]が共に対象チェーンでない場合には、前の値が保持される。 In the synchronization monitoring circuit 1221, when both chain [X] and [Y] are the target chains for the multicast load instruction, same_reqid_grp_XY = 1 is updated. Same_reqid_grp_XY = 0 is updated in the case of a multicast load instruction targeting one of chain [X] and [Y] or a single cast load instruction targeting one of chain [X] and [Y]. .. If both chain [X] and [Y] are not the target chain, the previous value is retained.
 same_reqid_grp_XY=1の場合に、chain[X]及び[Y]の読み書き部125が指示部124から最後に受信したロード命令は、同じマルチキャストロード命令であることを示す。 When same_reqid_grp_XY = 1, it indicates that the load instructions last received by the read / write unit 125 of the chains [X] and [Y] from the instruction unit 124 are the same multicast load instruction.
 従って、図16を用いて後述されるmulticast_reqid_rst[7:0]により、既にchain[X]及び[Y]の読み書き部125では後述するマルチキャスト用獲得回路322が初期化済みであり、且つ、同じマルチキャストロード命令を処理していることから同じ数のREQIDが連番で使用される。そのため、次に同様のマルチキャストロード命令が処理される場合は、マルチキャスト用獲得回路322を初期化せずとも、同じREQIDを獲得できる状態であることを示す。つまり、same_reqid_grp_XY=1の場合には、マルチキャスト用獲得回路322が同期できていることを示す。 Therefore, the multicast acquisition circuit 322, which will be described later, has already been initialized in the read / write unit 125 for chains [X] and [Y] by multicast_reqid_rst [7: 0] described later with reference to FIG. Since the load instruction is being processed, the same number of REQIDs are used in sequence. Therefore, when the same multicast load instruction is processed next, it indicates that the same REQID can be acquired without initializing the acquisition circuit for multicast 322. That is, when same_reqid_grp_XY = 1, it indicates that the multicast acquisition circuit 322 can be synchronized.
 一方、same_reqid_grp_XY=0である場合に、chain[X]及び[Y]の読み書き部125が最後に受信したロード命令は、異なるマルチキャストロード命令又はシングルキャストロード命令であることを示す。つまり、same_reqid_grp_XY=0の場合には、マルチキャスト用獲得回路322が同期されていないことを示す。 On the other hand, when same_reqid_grp_XY = 0, it indicates that the load instruction last received by the read / write unit 125 of chain [X] and [Y] is a different multicast load instruction or single cast load instruction. That is, if same_reqid_grp_XY = 0, it means that the acquisition circuit for multicast 322 is not synchronized.
 別言すれば、同期監視回路1221は、複数のチェーンのうち第1又は第2の被判定チェーン群が、第2の演算処理の対象である第2のチェーン群を包含するかを判定する判定回路の一例である。第1の被判定チェーン群は、第1の演算処理の後に連続して第2の演算処理が実行される関係の、第1のチェーン群である。第2の被判定チェーン群は、第1の演算処理の後に、少なくとも1つ以上の第3の演算処理が実行された後に第2の演算処理が実行される関係の、第1のチェーン群に対して第3のチェーン群を一定の方式で計算を実施したものである。第1のチェーン群は複数のチェーンのうち第1の演算処理の対象であり、第2のチェーン群は複数のチェーンのうち第2の演算処理の対象であり、第3のチェーン群は複数のチェーンのうち第3の演算処理の対象である。 In other words, the synchronization monitoring circuit 1221 determines whether the first or second determined chain group of the plurality of chains includes the second chain group that is the target of the second arithmetic processing. It is an example of a circuit. The first determined chain group is a first chain group in which the second arithmetic processing is continuously executed after the first arithmetic processing. The second chain to be judged is a first chain group in a relationship in which after the first arithmetic processing, at least one or more third arithmetic processing is executed and then the second arithmetic processing is executed. On the other hand, the third chain group is calculated by a constant method. The first chain group is a target of the first arithmetic processing of the plurality of chains, the second chain group is a target of the second arithmetic processing of the plurality of chains, and the third chain group is a plurality of the plurality of chains. It is the target of the third arithmetic processing in the chain.
 ここで、一定の方式とは、第1のチェーン群に対して第3のチェーン群を取り除く処理である。 Here, the fixed method is a process of removing the third chain group from the first chain group.
 図16は、図12に示したアクセラレータ12のマルチキャスト用REQIDの初期化信号生成回路1222の構成例を示す図である。 FIG. 16 is a diagram showing a configuration example of the multicast REQID initialization signal generation circuit 1222 of the accelerator 12 shown in FIG.
 初期化信号生成回路1222は、図15に示したsame_reqid_grp_XYとマルチキャストロード発行対象のチェーンとを比較し、全ての対象チェーンにおける読み書き部125でマルチキャスト用のREQIDの同期がとれているかをチェックする。すなわち、初期化信号生成回路1222は、同期監視回路1221の出力について、same_reqid_grp_XY=1であるかをチェックする。 The initialization signal generation circuit 1222 compares the same_reqid_grp_XY shown in FIG. 15 with the chain to which the multicast load is issued, and checks whether the read / write units 125 in all the target chains are synchronized with the REQID for multicast. That is, the initialization signal generation circuit 1222 checks whether the output of the synchronization monitoring circuit 1221 is same_reqid_grp_XY = 1.
 初期化信号生成回路1222は、対象チェーンのいずれかにおいてsame_reqid_grp_XY=0であれば、マルチキャスト用のREQIDの同期が取れていないと判断し、multicast_reqid_rst[Z]=1(Zは、マルチキャストロード発行対象のチェーン)とする。一方、初期化信号生成回路1222は、全ての対象チェーンにおいてsame_reqid_grp_XY=1であれば、multicast_reqid_rst[Z]=0とする。 The initialization signal generation circuit 1222 determines that the REQID for multicast is not synchronized if same_reqid_grp_XY = 0 in any of the target chains, and multicast_reqid_rst [Z] = 1 (Z is a target for issuing the multicast load). Chain). On the other hand, the initialization signal generation circuit 1222 sets multicast_reqid_rst [Z] = 0 if same_reqid_grp_XY = 1 in all target chains.
 別言すれば、初期化信号生成回路1222は、第1及び第2の被判定チェーン群のいずれもが第2のチェーン群を包含しない場合に、第2の演算処理の識別子を初期化する初期化指示を生成する生成回路の一例である。 In other words, the initialization signal generation circuit 1222 initializes the identifier of the second arithmetic processing when neither the first nor the second chain group to be judged includes the second chain group. It is an example of a generation circuit that generates an activation instruction.
 図14に示すように、各読み書き部125の命令分割回路31における決定回路311は、対象命令が複数であるロード命令を受信したことにより、マルチキャストロード命令が発行されたと判断する。そして、命令分割回路31は、ロード命令を256バイト毎に分割する。 As shown in FIG. 14, the decision circuit 311 in the instruction division circuit 31 of each read / write unit 125 determines that a multicast load instruction has been issued by receiving a load instruction having a plurality of target instructions. Then, the instruction division circuit 31 divides the load instruction into 256 bytes.
 別言すれば、命令分割回路31は、第2の演算処理に関する命令を複数に分割する分割回路の一例である。 In other words, the instruction division circuit 31 is an example of a division circuit that divides the instruction related to the second arithmetic processing into a plurality of instructions.
 読み書き部125のREQID管理回路32は、ユニキャスト用獲得回路321,マルチキャスト用獲得回路322及び獲得待ちバッファ323を備える。マルチキャスト用獲得回路322は、分割されたロード命令毎にREQIDとデータバッファ領域とを獲得する。ここで、マルチキャスト用獲得回路322は、分割された1つ目のリクエストに対して、REQID=0を取得する。マルチキャスト用獲得回路322は、REQID=0が使用中の場合には、REQID=0が解放されるまで待機する。以降、マルチキャスト用獲得回路322は、REQIDが連番となるようにREQIDを取得する。 The REQID management circuit 32 of the read / write unit 125 includes a unicast acquisition circuit 321, a multicast acquisition circuit 322, and an acquisition wait buffer 323. The multicast acquisition circuit 322 acquires the REQID and the data buffer area for each of the divided load instructions. Here, the multicast acquisition circuit 322 acquires REQID = 0 for the first divided request. When REQID = 0 is in use, the multicast acquisition circuit 322 waits until REQID = 0 is released. After that, the multicast acquisition circuit 322 acquires the REQIDs so that the REQIDs are serial numbers.
 図17は、図12に示したアクセラレータ12のマルチキャスト用獲得回路322の構成例を示す図である。 FIG. 17 is a diagram showing a configuration example of the multicast acquisition circuit 322 of the accelerator 12 shown in FIG.
 上述した関連例においては、マルチキャストロード命令をメモリアクセス単位で分割する際に、分割した1つ目のリクエストにおいて初期化が実施されていた。 In the above-mentioned related example, when the multicast load instruction is divided in memory access units, initialization was executed in the first divided request.
 本実施例において、マルチキャスト用獲得回路322は、各読み書き部125に分配されたREQID初期化信号であるmulticast_reqid_rstを用いて、(div_1st_memrd & multicast_reqid_rst)=1の場合に初期化を実行する。 In the present embodiment, the multicast acquisition circuit 322 executes initialization when (div_1st_memrd & multicast_reqid_rst) = 1 by using multicast_reqid_rst which is the REQID initialization signal distributed to each read / write unit 125.
 別言すれば、マルチキャスト用獲得回路322は、初期化指示が発行された場合に第2の演算処理に対して初期化した識別子を獲得する一方、初期化指示が発行されなかった場合に第2の演算処理に対して第1の演算処理の識別子に連続する識別子を獲得する獲得回路の一例である。 In other words, the multicast acquisition circuit 322 acquires the identifier that has been initialized for the second arithmetic processing when the initialization instruction is issued, and the second when the initialization instruction is not issued. 2 is an example of an acquisition circuit that acquires an identifier that is continuous with the identifier of the first arithmetic processing for the arithmetic processing of.
 また、マルチキャスト用獲得回路322は、識別子の獲得対象が命令の1分割目でない場合に、獲得対象に対して直前の獲得対象の識別子に連続する識別子を獲得してよい。 The multicast acquisition circuit 322 may acquire an identifier that is continuous with the identifier of the acquisition target immediately before the acquisition target when the acquisition target of the identifier is not the first division of the instruction.
 図14に示すように、各読み書き部125のマルチキャスト用獲得回路322は、メモリリードリクエスト発行担当の読み書き部125における獲得待ちバッファ323に対して、獲得したREQIDを通知する。これにより、メモリリードリクエスト発行担当の読み書き部125は、各読み書き部125において獲得されたREQIDが統一されたことを認識できる。 As shown in FIG. 14, the multicast acquisition circuit 322 of each read / write unit 125 notifies the acquired REQID to the acquisition waiting buffer 323 in the read / write unit 125 in charge of issuing a memory read request. As a result, the read / write unit 125 in charge of issuing the memory read request can recognize that the REQIDs acquired by the read / write units 125 are unified.
 別言すれば、マルチキャスト用獲得回路322は、獲得した識別子を複数の読み書き部125のうち他の読み書き部125に通知する獲得回路の一例である。 In other words, the multicast acquisition circuit 322 is an example of an acquisition circuit that notifies the other reader / writer 125 of the plurality of readers / writers 125 of the acquired identifier.
 メモリリードリクエスト発行担当の読み書き部125におけるメモリリクエスト生成回路33は、全ての対象チェーンの読み書き部125から獲得したREQIDを通知された後、MAC121のポート1211における受信バッファ21に対して、メモリリードリクエストを発行する。この際、dstフィールドにおいて、対象チェーンがビットマップによって指定される。 The memory request generation circuit 33 in the read / write unit 125 in charge of issuing the memory read request notifies the reception buffer 21 in the port 1211 of the MAC 121 to the memory read request after being notified of the REQIDs acquired from the read / write units 125 of all target chains. To issue. At this time, the target chain is designated by the bitmap in the dst field.
 全ての対象チェーンの読み書き部125は、メモリリードリクエストの応答として、MAC121のポート1211における送信バッファ22からメモリリードコンプリーションを受信し、付随するメモリリードデータをデータバッファ35に格納する。 The read / write unit 125 of all target chains receives the memory read completion from the transmission buffer 22 at the port 1211 of the MAC 121 as a response to the memory read request, and stores the accompanying memory read data in the data buffer 35.
 各読み書き部125のレジスタ制御リクエスト生成回路34は、データバッファ35からメモリリードデータを読み出し、コア123のレジスタファイルへのライトリクエストと共に読み台したメモリリードデータを転送する。 The register control request generation circuit 34 of each read / write unit 125 reads the memory read data from the data buffer 35, and transfers the read memory read data together with the write request to the register file of the core 123.
 各読み書き部125は、マルチキャストロード命令に対応する完了通知を指示部124に対して発行する。 Each read / write unit 125 issues a completion notice corresponding to the multicast load instruction to the instruction unit 124.
 指示部124は、全ての対象チェーンの読み書き部125から完了通知を受け取り、命令の完了を認識する。 The instruction unit 124 receives the completion notification from the read / write units 125 of all target chains and recognizes the completion of the command.
 〔B-2〕動作例
 図11に示したアクセラレータ12の指示部124におけるREQID初期化命令の発行処理を、図18に示すフローチャート(ステップS51~S55)に従って説明する。
[B-2] Operation Example The issuing process of the REQID initialization instruction in the instruction unit 124 of the accelerator 12 shown in FIG. 11 will be described according to the flowchart (steps S51 to S55) shown in FIG.
 同期監視回路1221は、REQID同期のためのグループ表1220を最新の状態に更新する(ステップS51)。 The synchronization monitoring circuit 1221 updates the group table 1220 for REQID synchronization to the latest state (step S51).
 初期化信号生成回路1222は、グループ表1220において、発行するロード命令の全ての対象チェーンが包含されているかを判定する(ステップS52)。 The initialization signal generation circuit 1222 determines whether or not all target chains of the load instruction to be issued are included in the group table 1220 (step S52).
 全ての対象チェーンが包含されている場合には(ステップS52のYesルート参照)、初期化信号生成回路1222は、REQID初期化指示信号をde-assertする(ステップS53)。そして、処理はステップS55へ進む。 If all target chains are included (see Yes route in step S52), the initialization signal generation circuit 1222 de-asserts the REQID initialization instruction signal (step S53). Then, the process proceeds to step S55.
 一方、包含されない対象チェーンがある場合には(ステップS52のNoルート参照)、初期化信号生成回路1222は、REQID初期化指示信号をassertする(ステップS54)。 On the other hand, if there is a target chain that is not included (see No route in step S52), the initialization signal generation circuit 1222 asserts a REQID initialization instruction signal (step S54).
 初期化信号生成回路1222は、REQID初期化指示信号を読み書き部125に通知する。処理は図19のステップS61における読み書き部125の処理に引き継がれ、REQID初期化命令の発行処理は終了する。 The initialization signal generation circuit 1222 notifies the read / write unit 125 of the REQID initialization instruction signal. The processing is taken over by the processing of the reading / writing unit 125 in step S61 of FIG. 19, and the issuing processing of the REQID initialization command ends.
 次に、図11に示したアクセラレータ12の読み書き部125におけるマルチキャスト用REQIDの初期化処理を、図19に示すフローチャート(ステップS61~S65)に従って説明する。 Next, the initialization process of the multicast REQID in the read / write unit 125 of the accelerator 12 shown in FIG. 11 will be described according to the flowchart (steps S61 to S65) shown in FIG.
 命令分割回路31は、図18のステップS55における指示部124からの送信に応じて、REQID初期化指示信号を受信する(ステップS61)。 The instruction division circuit 31 receives the REQID initialization instruction signal in response to the transmission from the instruction unit 124 in step S55 of FIG. 18 (step S61).
 マルチキャスト用獲得回路322は、REQID初期化指示信号が1であるかを判定する(ステップS62)。 The multicast acquisition circuit 322 determines whether the REQID initialization instruction signal is 1 (step S62).
 REQID初期化指示信号が1である場合には(ステップS62のYesルート参照)、マルチキャスト用獲得回路322は、値を初期化される(ステップS63)。そして、処理はステップS65へ進む。 If the REQID initialization instruction signal is 1 (see Yes route in step S62), the value of the multicast acquisition circuit 322 is initialized (step S63). Then, the process proceeds to step S65.
 一方、REQID初期化指示信号が1でない場合には(ステップS62のNoルート参照)、マルチキャスト用獲得回路825は、値を更新又は保持させられる(ステップS64)。 On the other hand, when the REQID initialization instruction signal is not 1 (see No route in step S62), the multicast acquisition circuit 825 updates or holds the value (step S64).
 決定回路311は、マルチキャストにおいて発行するREQIDを決定する(ステップS65)。そして、マルチキャスト用REQIDの初期化処理は終了する。 The decision circuit 311 decides the REQID to be issued in the multicast (step S65). Then, the initialization process of the multicast REQID ends.
 次に、図11に示したアクセラレータ12の指示部124におけるロード命令の発行処理を、図20に示すフローチャート(ステップS71~S76)に従って説明する。 Next, the issuing process of the load instruction in the instruction unit 124 of the accelerator 12 shown in FIG. 11 will be described according to the flowchart (steps S71 to S76) shown in FIG.
 指示部124は、ソフトウェアからのロード命令をデコードする(ステップS71)。 The instruction unit 124 decodes the load instruction from the software (step S71).
 初期化信号生成回路1222は、グループ表1220において、発行するロード命令の全ての対象チェーンが包含されているかを判定する(ステップS72)。 The initialization signal generation circuit 1222 determines whether or not all target chains of the load instruction to be issued are included in the group table 1220 (step S72).
 全ての対象チェーンが包含されている場合には(ステップS72のYesルート参照)、初期化信号生成回路1222は、REQID初期化指示信号をde-assertする(ステップS73)。そして、処理はステップS75へ進む。 If all target chains are included (see Yes route in step S72), the initialization signal generation circuit 1222 de-asserts the REQID initialization instruction signal (step S73). Then, the process proceeds to step S75.
 一方、包含されない対象チェーンがある場合には(ステップS72のNoルート参照)、初期化信号生成回路1222は、REQID初期化指示信号をassertする(ステップS74)。 On the other hand, if there is a target chain that is not included (see No route in step S72), the initialization signal generation circuit 1222 asserts a REQID initialization instruction signal (step S74).
 初期化信号生成回路1222は、ロード命令及び対象チェーンを対象の読み書き部125に通知する(ステップS75)。そして、処理は図21のステップS81以降の読み書き部125における処理に引き継がれる。 The initialization signal generation circuit 1222 notifies the target read / write unit 125 of the load instruction and the target chain (step S75). Then, the processing is taken over by the processing in the reading / writing unit 125 after step S81 in FIG.
 同期監視回路1221は、次回のロード命令の際に参照するために、REQID同期のためのグループ表1220を対象チェーンに基づいて更新する(ステップS76)。 The synchronization monitoring circuit 1221 updates the group table 1220 for REQID synchronization based on the target chain for reference at the next load instruction (step S76).
 次に、図11に示したアクセラレータ12の読み書き部125におけるREQIDの獲得処理を、図21に示すフローチャート(ステップS81~S88)に従って説明する。 Next, the REQID acquisition process in the read / write unit 125 of the accelerator 12 shown in FIG. 11 will be described according to the flowchart (steps S81 to S88) shown in FIG.
 命令分割回路31は、図20のステップS75に示した指示部124からの通知に応じて、REQID初期化指示信号と共に、ロード命令及び対象チェーンを受信する(ステップS81)。 The instruction division circuit 31 receives the load instruction and the target chain together with the REQID initialization instruction signal in response to the notification from the instruction unit 124 shown in step S75 of FIG. 20 (step S81).
 決定回路311は、対象チェーンが複数あるかを判定する(ステップS82)。 The determination circuit 311 determines whether there are a plurality of target chains (step S82).
 対象チェーンが複数ない場合には(ステップS82のNoルート参照)、ユニキャスト動作が実施される。 If there are not multiple target chains (see No route in step S82), unicast operation is performed.
 一方、対象チェーンが複数ある場合には(ステップS82のYesルート参照)、マルチキャスト用獲得回路322は、ロード命令の1番目の分割を処理中であるかを判定する(ステップS83)。 On the other hand, when there are a plurality of target chains (see Yes route in step S82), the multicast acquisition circuit 322 determines whether the first division of the load instruction is being processed (step S83).
 1番目の分割を処理中である場合には(ステップS83のYesルート参照)、マルチキャスト用獲得回路322は、REQID初期化指示信号が1であるかを判定する(ステップS84)。 If the first division is being processed (see Yes route in step S83), the multicast acquisition circuit 322 determines whether the REQID initialization instruction signal is 1 (step S84).
 REQID初期化指示信号が1でない場合には(ステップS84のNoルート参照)、処理はステップS86へ進む。 If the REQID initialization instruction signal is not 1 (see No route in step S84), the process proceeds to step S86.
 一方、REQID初期化指示信号が1である場合には、マルチキャスト用獲得回路322は、値を初期化される(ステップS85)。そして、処理は、ステップS87へ進む。 On the other hand, when the REQID initialization instruction signal is 1, the multicast acquisition circuit 322 is initialized with a value (step S85). Then, the process proceeds to step S87.
 ステップS83において、1番目の分割を処理中でない場合には(ステップS83のNoルート参照)、マルチキャスト用獲得回路322は、値を更新される(ステップS86)。 If the first division is not being processed in step S83 (see No route in step S83), the value of the multicast acquisition circuit 322 is updated (step S86).
 マルチキャスト用獲得回路322は、獲得したいREQIDが空いているかを判定する(ステップS87)。 The multicast acquisition circuit 322 determines whether the REQID to be acquired is free (step S87).
 獲得したいREQIDが空いていない場合には(ステップS87のNoルート参照)、ステップS87における処理が繰り返し実行される。 If the REQID to be acquired is not empty (see No route in step S87), the process in step S87 is repeatedly executed.
 一方、獲得したいREQIDが空いている場合には(ステップS87のYesルート参照)、マルチキャスト用獲得回路322は、獲得したREQIDの待ち合わせ処理を行なう(ステップS88)。そして、REQIDの獲得処理は終了する。 On the other hand, if the REQID to be acquired is free (see Yes route in step S87), the multicast acquisition circuit 322 performs waiting processing for the acquired REQID (step S88). Then, the REQID acquisition process ends.
 〔B-3〕効果
 図22は、図11に示した実施例におけるマルチキャストロード処理におけるREQIDの使用状況を例示するテーブルである。
[B-3] Effect FIG. 22 is a table illustrating the usage status of REQIDs in the multicast load processing in the embodiment shown in FIG.
 上述した実施例においては、マルチキャストロード命令を連続して処理する場合に、REQIDを初期化せずに連番で使用することができる。 In the above-mentioned embodiment, when the multicast load instruction is processed continuously, the REQID can be serially used without being initialized.
 図22に示す例では、マルチキャストロード命令「1」~「4」の4つの命令が連続して発行されている。マルチキャストロード命令「1」,「2」及び「4」は対象がチェーン#0~#7であり、マルチキャストロード命令「3」は対象がチェーン#0~#3である。なお、マルチキャストロード命令「1」~「4」のメモリアクセスサイズは、いずれも1キロバイトである。 In the example shown in FIG. 22, four multicast load instructions “1” to “4” are issued consecutively. The multicast load instructions "1", "2", and "4" are targeted at chains # 0 to # 7, and the multicast load instruction "3" is targeted at chains # 0 to # 3. The memory access size of each of the multicast load instructions “1” to “4” is 1 kilobyte.
 マルチキャストロード命令「1」にとって、マルチキャストロード命令「2」は、ロード対象のチェーンがREQID同期のためのグループ表1220に包含されている。また、マルチキャストロード命令「2」とって、マルチキャストロード命令「3」は、ロード対象のチェーンがREQID同期のためのグループ表1220に包含されている。 For the multicast load instruction “1”, the load target chain of the multicast load instruction “2” is included in the group table 1220 for REQID synchronization. The multicast load instruction “3” is included in the group table 1220 for the REQID synchronization of the load target chain as the multicast load instruction “2”.
 一方、マルチキャストロード命令「3」にとって、マルチキャストロード命令「4」は、ロード対象のチェーンがREQID同期のためのグループ表1220に包含されていないため、REQIDがassertされて初期化されている。 On the other hand, for the multicast load instruction “3”, the multicast load instruction “4” is initialized by asserting the REQID because the load target chain is not included in the group table 1220 for REQID synchronization.
 これにより、図9に示した関連例におけるマルチキャストロード処理におけるREQIDの使用状況を例示するテーブルと比較して、REQIDの初期化を行なう機会が減少している。そして、使用中のREQIDの解放を待つ機会が低減し、MAC121に対するメモリリードリクエストを速やかに発行できるため、メモリデータバスのスループットの低減を防止できる。 As a result, the opportunity to initialize the REQID is reduced compared to the table that illustrates the usage status of the REQID in the multicast load process in the related example shown in FIG. Then, the opportunity to wait for the release of the REQID in use is reduced, and the memory read request to the MAC 121 can be issued promptly, so that the reduction in the throughput of the memory data bus can be prevented.
 上述した実施形態の一例におけるアクセラレータ12によれば、例えば、以下の作用効果を奏することができる。 According to the accelerator 12 in the example of the above-described embodiment, the following operational effects can be obtained, for example.
 同期監視回路1221は、複数のチェーンのうち第1又は第2の被判定チェーン群が、第2の演算処理の対象である第2のチェーン群を包含するかを判定する。第1の被判定チェーン群は、第1の演算処理の後に連続して第2の演算処理が実行される関係の、第1のチェーン群である。第2の被判定チェーン群は、第1の演算処理の後に、少なくとも1つ以上の第3の演算処理が実行された後に第2の演算処理が実行される関係の、第1のチェーン群に対して第3のチェーン群を一定の方式で計算を実施したものである。第1のチェーン群は複数のチェーンのうち第1の演算処理の対象であり、第2のチェーン群は複数のチェーンのうち第2の演算処理の対象であり、第3のチェーン群は複数のチェーンのうち第3の演算処理の対象である。初期化信号生成回路1222は、第1及び第2の被判定チェーン群のいずれもが第2のチェーン群を包含しない場合に、第2の演算処理の識別子を初期化する初期化指示を生成する。マルチキャスト用獲得回路322は、初期化指示が発行された場合に第2の演算処理に対して初期化した識別子を獲得する一方、初期化指示が発行されなかった場合に第2の演算処理に対して第1の演算処理の識別子に連続する識別子を獲得する。 The synchronization monitoring circuit 1221 determines whether the first or second determination target chain group among the plurality of chains includes the second chain group which is the target of the second arithmetic processing. The first determined chain group is a first chain group in which the second arithmetic processing is continuously executed after the first arithmetic processing. The second chain to be judged is a first chain group in a relationship in which after the first arithmetic processing, at least one or more third arithmetic processing is executed and then the second arithmetic processing is executed. On the other hand, the third chain group is calculated by a constant method. The first chain group is a target of the first arithmetic processing of the plurality of chains, the second chain group is a target of the second arithmetic processing of the plurality of chains, and the third chain group is a plurality of the plurality of chains. It is the target of the third arithmetic processing in the chain. The initialization signal generation circuit 1222 generates an initialization instruction for initializing the identifier of the second arithmetic processing when neither the first nor the second chain group to be judged includes the second chain group. .. The multicast acquisition circuit 322 acquires the identifier initialized for the second arithmetic processing when the initialization instruction is issued, while the multicast acquisition circuit 322 performs the second arithmetic processing for the second arithmetic processing when the initialization instruction is not issued. Then, an identifier that follows the identifier of the first arithmetic processing is acquired.
 これにより、マルチコアアーキテクチャにおいて、REQIDの初期化回数を減少させて、チェーン間の待ち合わせ時間を低減することにより、メモリデータのスループットを向上することができる。 With this, in the multi-core architecture, it is possible to improve the throughput of memory data by reducing the number of REQID initializations and reducing the waiting time between chains.
 マルチキャスト用獲得回路322は、獲得した識別子を複数の読み書き部125のうち他の読み書き部125に通知する。 The multicast acquisition circuit 322 notifies the acquired identifier to the other read / write unit 125 among the plurality of read / write units 125.
 これにより、メモリリードリクエスト発行担当の読み書き部125は、各読み書き部125において獲得されたREQIDが統一されたことを認識できる。 With this, the read / write unit 125 in charge of issuing the memory read request can recognize that the REQIDs acquired by the respective read / write units 125 are unified.
 命令分割回路31は、第2の演算処理に関する命令を複数に分割する。マルチキャスト用獲得回路322は、識別子の獲得対象が命令の1分割目でない場合に、獲得対象に対して直前の獲得対象の識別子に連続する識別子を獲得する。 The instruction division circuit 31 divides the instruction related to the second arithmetic processing into a plurality of instructions. When the identifier acquisition target is not the first division of the instruction, the multicast acquisition circuit 322 acquires an identifier continuous with the acquisition target identifier immediately before the acquisition target.
 これにより、一連の命令については連続するREQIDを獲得することができる。 With this, consecutive REQIDs can be acquired for a series of commands.
 〔C〕その他
 開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
[C] Others The disclosed technique is not limited to the above-described embodiment, and various modifications can be performed without departing from the spirit of the present embodiment. Each configuration and each process of this embodiment can be selected or omitted as necessary, or may be appropriately combined.
1       :情報処理装置
7,15,122:メモリ
8,123   :コア
10      :CPU
11      :I/Oコントローラ
12,600  :アクセラレータ
13      :ハードディスク
14      :I/Oデバイス
21,611  :受信バッファ
22,612  :送信バッファ
31,821  :命令分割回路
32,823  :REQID管理回路
33,827  :メモリリクエスト生成回路
34,828  :レジスタ制御リクエスト生成回路
35,829  :データバッファ
61,1211 :ポート
81,124  :指示部
82,125  :読み書き部
83      :演算実行部
84      :レジスタファイル
311,822 :決定回路
321,824 :ユニキャスト用獲得回路
322,825 :マルチキャスト用獲得回路
323,826 :獲得待ちバッファ
1220    :グループ表
1221    :同期監視回路
1222    :初期化信号生成回路
 
1: Information processing device 7, 15, 122: Memory 8, 123: Core 10: CPU
11: I / O controller 12, 600: Accelerator 13: Hard disk 14: I / O device 21,611: Reception buffer 22, 612: Transmission buffer 31,821: Instruction division circuit 32, 823: REQID management circuit 33, 827: Memory request generation circuits 34, 828: Register control request generation circuits 35, 829: Data buffers 61, 1211: Ports 81, 124: Instructors 82, 125: Read / write unit 83: Operation execution unit 84: Register files 311 and 822: Decision Circuits 321 and 824: Unicast acquisition circuit 322, 825: Multicast acquisition circuit 323, 826: Acquisition wait buffer 1220: Group table 1221: Synchronization monitoring circuit 1222: Initialization signal generation circuit

Claims (8)

  1.  複数のチェーンを構成するマルチコアを有する演算処理装置であって、
     前記複数のチェーンのうち第1の演算処理の対象である第1のチェーン群と、
     前記複数のチェーンのうち第2の演算処理の対象である第2のチェーン群と、
     前記複数のチェーンのうち第3の演算処理の対象である第3のチェーン群と、
    において、
     前記第1の演算処理の後に連続して前記第2の演算処理が実行される関係の、第1のチェーン群を第1の被判定チェーン群とし、
     前記第1の演算処理の後に、少なくとも1つ以上の第3の演算処理が実行された後に前記第2の演算処理が実行される関係の、第1のチェーン群に対して第3のチェーン群を一定の方式で計算を実施したものを第2の被判定チェーン群とし、
     前記複数のチェーンのうち前記第1又は第2の被判定チェーン群が、前記第2の演算処理の対象である前記第2のチェーン群を包含するかを判定する判定回路と、
     前記第1及び第2の被判定チェーン群のいずれもが前記第2のチェーン群を包含しない場合に、前記第2の演算処理の識別子を初期化する初期化指示を生成する生成回路と、
     前記初期化指示が発行された場合に前記第2の演算処理に対して初期化した識別子を獲得する一方、前記初期化指示が発行されなかった場合に前記第2の演算処理に対して前記第1の演算処理の識別子に連続する識別子を獲得する獲得回路と、
    を備える、演算処理装置。
    An arithmetic processing device having a multi-core forming a plurality of chains,
    A first chain group that is a target of the first arithmetic processing among the plurality of chains;
    A second chain group that is a target of the second arithmetic processing among the plurality of chains;
    A third chain group that is a target of the third arithmetic processing among the plurality of chains;
    At
    The first chain group, which has a relationship in which the second arithmetic processing is continuously executed after the first arithmetic processing, is a first determined chain group,
    After the first arithmetic processing, at least one third arithmetic processing is executed, and then the second arithmetic processing is executed, and the third chain group with respect to the first chain group. Is a second group of chains to be judged, which is calculated by a certain method,
    A determination circuit that determines whether the first or second determined chain group of the plurality of chains includes the second chain group that is the target of the second arithmetic processing;
    A generation circuit that generates an initialization instruction for initializing the identifier of the second arithmetic processing when neither the first nor the second chain group to be judged includes the second chain group;
    When the initialization instruction is issued, the identifier initialized for the second arithmetic processing is acquired, while when the initialization instruction is not issued, the second arithmetic processing is performed for the second arithmetic processing. An acquisition circuit for acquiring an identifier that is continuous with the identifier of the arithmetic processing of 1.
    An arithmetic processing unit comprising:
  2.  前記一定の方式とは、前記第1のチェーン群に対して前記第3のチェーン群を取り除く処理である、
    請求項1に記載の演算処理装置。
    The constant method is a process of removing the third chain group from the first chain group.
    The arithmetic processing device according to claim 1.
  3.  前記獲得回路は、
     前記複数のチェーン毎に前記マルチコアからメモリへのデータの読み書き処理を中継する複数の読み書き部にそれぞれ備えられ、
     獲得した識別子を前記複数の読み書き部のうち他の読み書き部に通知する、
    請求項1又は2に記載の演算処理装置。
    The acquisition circuit is
    Each of the plurality of chains is provided in a plurality of read / write units that relay the read / write processing of data from the multi-core to the memory,
    Notifying the acquired identifier to other read / write units of the plurality of read / write units,
    The arithmetic processing device according to claim 1.
  4.  前記第2の演算処理に関する命令を複数に分割する分割回路を更に備え、
     前記獲得回路は、識別子の獲得対象が前記命令の1分割目でない場合に、前記獲得対象に対して直前の獲得対象の識別子に連続する識別子を獲得する、
    請求項1~3のいずれか1項に記載の演算処理装置。
    Further comprising a division circuit for dividing the instruction related to the second arithmetic processing into a plurality of instructions,
    The acquisition circuit acquires an identifier that is continuous with the identifier of the acquisition target immediately before the acquisition target when the acquisition target of the identifier is not the first division of the instruction.
    The arithmetic processing unit according to any one of claims 1 to 3.
  5.  複数のチェーンを構成するマルチコアを有する演算処理装置の制御方法であって、
     前記複数のチェーンのうち第1の演算処理の対象である第1のチェーン群と、
     前記複数のチェーンのうち第2の演算処理の対象である第2のチェーン群と、
     前記複数のチェーンのうち第3の演算処理の対象である第3のチェーン群と、
    において、
     前記第1の演算処理の後に連続して前記第2の演算処理が実行される関係の、第1のチェーン群を第1の被判定チェーン群とし、
     前記第1の演算処理の後に、少なくとも1つ以上の第3の演算処理が実行された後に前記第2の演算処理が実行される関係の、第1のチェーン群に対して第3のチェーン群を一定の方式で計算を実施したものを第2の被判定チェーン群とし、
     前記複数のチェーンのうち前記第1又は第2の被判定チェーン群が、前記第2の演算処理の対象である前記第2のチェーン群を包含するかを判定し、
     前記第1及び第2の被判定チェーン群のいずれもが前記第2のチェーン群を包含しない場合に、前記第2の演算処理の識別子を初期化する初期化指示を生成し、
     前記初期化指示が発行された場合に前記第2の演算処理に対して初期化した識別子を獲得する一方、前記初期化指示が発行されなかった場合に前記第2の演算処理に対して前記第1の演算処理の識別子に連続する識別子を獲得する、
    演算処理装置の制御方法。
    A method for controlling an arithmetic processing device having a multi-core that constitutes a plurality of chains, comprising:
    A first chain group that is a target of the first arithmetic processing among the plurality of chains;
    A second chain group that is a target of the second arithmetic processing among the plurality of chains;
    A third chain group that is a target of the third arithmetic processing among the plurality of chains;
    At
    The first chain group, which has a relationship in which the second arithmetic processing is continuously executed after the first arithmetic processing, is a first determined chain group,
    After the first arithmetic processing, at least one third arithmetic processing is executed, and then the second arithmetic processing is executed, and the third chain group with respect to the first chain group. Is a second group of chains to be judged, which is calculated by a certain method,
    It is determined whether the first or second determined chain group of the plurality of chains includes the second chain group that is the target of the second arithmetic processing,
    Generating an initialization instruction for initializing the identifier of the second arithmetic processing when neither of the first and second determined chain groups includes the second chain group,
    When the initialization instruction is issued, the identifier initialized for the second arithmetic processing is acquired, while when the initialization instruction is not issued, the second arithmetic processing is performed for the second arithmetic processing. Acquire an identifier that is continuous with the identifier of the arithmetic processing of 1.
    A method for controlling an arithmetic processing unit.
  6.  前記一定の方式とは、前記第1のチェーン群に対して前記第3のチェーン群を取り除く処理である、
    請求項5に記載の演算処理装置の制御方法。
    The constant method is a process of removing the third chain group from the first chain group.
    The control method of the arithmetic processing unit according to claim 5.
  7.  前記複数のチェーン毎に前記マルチコアからメモリへのデータの読み書き処理を中継する複数の読み書き部のそれぞれによって識別子が獲得され、
     獲得した識別子を前記複数の読み書き部のうち他の読み書き部に通知する、
    請求項5又は6に記載の演算処理装置の制御方法。
    An identifier is acquired by each of a plurality of read / write units that relay the read / write processing of data from the multi-core to the memory for each of the plurality of chains,
    Notifying the acquired identifier to other read / write units of the plurality of read / write units,
    A method of controlling the arithmetic processing device according to claim 5.
  8.  前記第2の演算処理に関する命令を複数に分割し、
     識別子の獲得対象が前記命令の1分割目でない場合に、前記第2の演算処理に対して前記獲得対象に対して直前の獲得対象の識別子に連続する識別子を獲得する、
    請求項5~7のいずれか1項に記載の演算処理装置の制御方法。
    Dividing the instruction related to the second arithmetic processing into a plurality of instructions,
    When the identifier acquisition target is not the first division of the instruction, an identifier continuous to the acquisition target identifier immediately preceding the acquisition target for the second arithmetic processing is acquired.
    A method for controlling an arithmetic processing unit according to any one of claims 5 to 7.
PCT/JP2018/040345 2018-10-30 2018-10-30 Arithmetic processing device and control method thereof WO2020090009A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020554648A JP7036226B2 (en) 2018-10-30 2018-10-30 Arithmetic processing unit and its control method
PCT/JP2018/040345 WO2020090009A1 (en) 2018-10-30 2018-10-30 Arithmetic processing device and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/040345 WO2020090009A1 (en) 2018-10-30 2018-10-30 Arithmetic processing device and control method thereof

Publications (1)

Publication Number Publication Date
WO2020090009A1 true WO2020090009A1 (en) 2020-05-07

Family

ID=70462017

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/040345 WO2020090009A1 (en) 2018-10-30 2018-10-30 Arithmetic processing device and control method thereof

Country Status (2)

Country Link
JP (1) JP7036226B2 (en)
WO (1) WO2020090009A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175632A (en) * 2000-10-10 2001-06-29 Hitachi Ltd Multiprocessor system
WO2011121709A1 (en) * 2010-03-29 2011-10-06 株式会社東芝 Semiconductor device
JP2017161954A (en) * 2014-07-31 2017-09-14 三菱電機株式会社 Data processing system, data processing method, and program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175632A (en) * 2000-10-10 2001-06-29 Hitachi Ltd Multiprocessor system
WO2011121709A1 (en) * 2010-03-29 2011-10-06 株式会社東芝 Semiconductor device
JP2017161954A (en) * 2014-07-31 2017-09-14 三菱電機株式会社 Data processing system, data processing method, and program

Also Published As

Publication number Publication date
JPWO2020090009A1 (en) 2021-09-24
JP7036226B2 (en) 2022-03-15

Similar Documents

Publication Publication Date Title
US6775719B1 (en) Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network
EP2312457B1 (en) Data processing apparatus, data processing method and computer-readable medium
US20090138624A1 (en) Storage system and method
JP4763405B2 (en) Network-on-chip semi-automatic communication architecture for data flow applications
JPH09128252A (en) Control method for execution of task with priority and data processor
CN102651690A (en) Method and device for controlling shared memory
CN110928696B (en) User-level thread control system and method thereof
JP2021520578A (en) Task scheduling
US8416702B2 (en) Network switch, path setting method, and program
CN115543219A (en) Method, device, equipment and medium for optimizing host IO processing
CN118076944A (en) Data storage during loop execution in a reconfigurable computing fabric
WO2020090009A1 (en) Arithmetic processing device and control method thereof
CN111124979B (en) Stack structure-based I2C multi-master access method and system
JP6891596B2 (en) Processor
US11126430B2 (en) Vector processor for heterogeneous data streams
JP4170330B2 (en) Information processing device
JP2007251334A (en) Network system and broadcast processing method therefor
US20200034213A1 (en) Node device, parallel computer system, and method of controlling parallel computer system
JPH10149293A (en) Method and device for processing interruption
WO2022113578A1 (en) Management device, system, management method, and recording medium
CN116302620B (en) Command channel supporting out-of-order write-back and parallelization
EP4109264A1 (en) Information processing apparatus, information processing program, and method for processing information
CN117931729B (en) Vector processor memory access instruction processing method and system
US10901735B2 (en) Apparatus and method to improve performance of memory accesses from plural arithmetic processors
US10268529B2 (en) Parallel processing apparatus and inter-node communication method

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020554648

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18938353

Country of ref document: EP

Kind code of ref document: A1