WO2023084740A1 - データ生成装置およびプログラム - Google Patents

データ生成装置およびプログラム Download PDF

Info

Publication number
WO2023084740A1
WO2023084740A1 PCT/JP2021/041752 JP2021041752W WO2023084740A1 WO 2023084740 A1 WO2023084740 A1 WO 2023084740A1 JP 2021041752 W JP2021041752 W JP 2021041752W WO 2023084740 A1 WO2023084740 A1 WO 2023084740A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
processing
arithmetic circuit
flow
arithmetic
Prior art date
Application number
PCT/JP2021/041752
Other languages
English (en)
French (fr)
Inventor
サンパト プリヤンカラ
晃朗 石崎
健 坂本
勇輝 有川
直樹 三浦
猛 伊藤
顕至 田仲
Original Assignee
日本電信電話株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to PCT/JP2021/041752 priority Critical patent/WO2023084740A1/ja
Publication of WO2023084740A1 publication Critical patent/WO2023084740A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven

Definitions

  • the present invention relates to a data generation device and program.
  • Devices such as smartphones, personal computers, and servers are composed of electronic computers.
  • an electronic computer includes a general-purpose processor that reads programs and executes operations, and a communication line such as a bus that connects the storage device and the general-purpose processor.
  • Various performance improvements such as higher speed, higher throughput, smaller size, lower power efficiency, improved processing flexibility, and improved user convenience are continuously being demanded for these electronic computers.
  • calculators with various features have appeared. For example, there are GPUs with high-speed video and AI processing, ASICs that can process only specific functions at ultra-high speeds but cannot change the processing content, and FPGAs that are high-speed but whose processing content can be changed after manufacturing.
  • Non-Patent Document 1 does not disclose this point.
  • An object of the present invention is to suitably generate table data for determining destinations of data transferred between a plurality of arithmetic circuits.
  • the data generation device of the present invention generates table data for determining destinations of data transferred between a plurality of arithmetic circuits that sequentially execute a plurality of processes on processing data.
  • a data generating device for acquiring a first correspondence table between a data ID identifying the processing data and a flow ID identifying a flow identifying which arithmetic circuit and in what order the processing data is processed.
  • the program according to the present invention causes a computer to function as each unit.
  • the program may be stored in a non-transitory computer-readable storage medium.
  • FIG. 1 is a block diagram showing the configuration of a computer according to the first embodiment of the invention.
  • FIG. 2 is a flow chart of the operation of the computer of FIG.
  • FIG. 3 is a diagram illustrating a configuration example of a transmission circuit.
  • FIG. 4 is a block diagram showing the configuration of a computer according to a modification of the first embodiment.
  • FIG. 5 is a flow chart of the operation of the computer according to the second embodiment.
  • FIG. 6 is a diagram illustrating a configuration example of an arithmetic circuit according to the second embodiment.
  • FIG. 7 is a diagram showing a configuration example of another arithmetic circuit according to the second embodiment.
  • FIG. 8 is a flow chart of the operation of the computer according to the third embodiment.
  • FIG. 1 is a block diagram showing the configuration of a computer according to the first embodiment of the invention.
  • FIG. 2 is a flow chart of the operation of the computer of FIG.
  • FIG. 3 is a diagram illustrating a configuration example of
  • FIG. 9 is a diagram showing a configuration example of an arithmetic circuit according to the third embodiment.
  • FIG. 10 is a diagram showing the data structure of ID-attached data according to the fourth embodiment.
  • FIG. 11 is a diagram showing a configuration example of an ID conversion table according to the fifth embodiment.
  • FIG. 12 is a diagram showing a configuration example of an ID conversion table according to the fifth embodiment.
  • FIG. 13 is a flow chart of the operation of the computer according to the fifth embodiment.
  • FIG. 14 is a diagram illustrating a configuration example of an arithmetic circuit according to the fifth embodiment.
  • FIG. 15 is a diagram illustrating a configuration example of an arithmetic circuit according to the sixth embodiment.
  • FIG. 16 is a block diagram showing the configuration of a computer according to the seventh embodiment.
  • FIG. 10 is a diagram showing the data structure of ID-attached data according to the fourth embodiment.
  • FIG. 11 is a diagram showing a configuration example of an ID conversion table according to the fifth
  • FIG. 17 is a block diagram showing the configuration of a computer according to the eighth embodiment.
  • FIG. 18 is a diagram showing the data structure of ID-attached data according to the eighth embodiment.
  • FIG. 19 is a diagram showing a configuration example of a process setting table according to the eighth embodiment.
  • FIG. 20 is a flowchart of processing performed by the arithmetic circuit of the eighth embodiment.
  • Figure 21 is.
  • FIG. 12 is a configuration diagram of a data generation device according to an eighth embodiment;
  • Figure 22 is.
  • FIG. 12 is a configuration diagram of a data generation device according to an eighth embodiment;
  • FIG. 23 is a diagram showing how a process setting table is generated according to the eighth embodiment.
  • the first embodiment of the present invention makes it possible to directly transmit and receive data between a plurality of processing units, thereby reducing the number of data transfers by the control unit and improving the throughput of the entire computer.
  • the computer 10 includes a control unit 20, a storage unit 30 including a main storage device 31 (main memory) and an auxiliary storage device 32 of the control unit 20, and a plurality of and a communication line 50 such as a bus to which these are connected.
  • the control unit 20 reads a program stored in an auxiliary storage device 32 such as a hard disk or SSD (Solid State Drive) into a main storage device 31 such as a RAM (Random Access Memory) and executes it.
  • the control unit 20 is composed of a general-purpose processor such as a processor, such as a CPU (Central Processing Unit), which performs predetermined processing by executing a program, for example. As will be described later, the control unit 20 executes a program that causes at least some of the plurality of calculation units 40 to perform processing.
  • Each computing unit 40 is composed of a one-chip integrated circuit such as FPGA (Field-Programmable Gate Array) or ASIC (Application Specific Integrated Circuit).
  • Each arithmetic unit 40 includes an arithmetic circuit 41 and a transmission circuit 42 .
  • the arithmetic circuit 41 is configured to execute predetermined processing. The types of processing executed by each arithmetic circuit 41 are different. “#1” to “#N” are set in the arithmetic circuit 41 as arithmetic circuit IDs that can uniquely identify each arithmetic circuit 41 .
  • the respective arithmetic circuits 41 may be referred to as arithmetic circuits 41-1 to 41-N, respectively.
  • the arithmetic circuit 41 to which "#1" is assigned is also referred to as an arithmetic circuit 41-1.
  • the arithmetic circuit 41 to which "#2" is assigned is also called an arithmetic circuit 41-2.
  • Arithmetic circuit 41 to which “#N” is assigned is also referred to as arithmetic circuit 41-N.
  • the calculation section 40 having the calculation circuits 41-1 to 41-N may also be referred to as the calculation sections 40-1 to 40-N, respectively.
  • the transmission circuit 42 transmits data transmitted from the control unit 20 , the main storage device 31 , or another calculation unit 40 via the communication line 50 to the calculation circuit 41 .
  • the transmission circuit 42 also transmits data output by the arithmetic circuit 41 of the same arithmetic unit 40 to the control unit 20 , the main storage device 31 , or another arithmetic unit 40 via the communication line 50 .
  • the transmission circuits 42 of the calculation units 40-1 to 40-N are also called transmission circuits 42-1 to 42-N, respectively.
  • FIG. 10 An example of the operation of the computer 10 will be described with reference to FIGS. 1 and 2.
  • FIG. it is assumed that the computer 10 executes a process A and a process B using the calculation result of the process A.
  • FIG. Processing A is assumed to be executed by the arithmetic circuit 41-1.
  • Processing B is assumed to be executed by the arithmetic circuit 41-2.
  • Examples of processing A and processing B include image processing.
  • An example of processing A is binarization processing of an image
  • an example of processing B is edge detection processing for a binarized image.
  • the main storage device 31 of the storage unit 30 stores processing data to be processed by the processing A and the processing B supplied from the outside via a network, for example.
  • FIG. 2 The operation of FIG. 2 is started when the control unit 20 reads the program that specifies the execution of the processing A and the processing B stored in the auxiliary storage device 32 to the main storage device 31 and starts executing it. Thereafter, the control unit 20 performs the following operations by executing the above program.
  • control unit 20 sets the processing data stored in the storage unit 30 as the data body, and stores the arithmetic circuit IDs of the arithmetic circuits 41 that execute the processing A and the processing B in the data body. (Step S11 in FIGS. 1 and 2).
  • the arithmetic circuit ID may be described in the program, or may be stored in the auxiliary storage device 32 corresponding to the program.
  • the control unit 20 assigns "#1" and "#2", which are the arithmetic circuit IDs of the arithmetic units 40-1 that execute the processes A and B, respectively, to the processing data as the data body from the top in the order of processing.
  • the entire data consisting of the data body and the arithmetic circuit ID assigned to the data body will also be referred to as data with an ID.
  • the arithmetic circuit ID functions as the destination of the data itself, that is, as an address.
  • the arithmetic circuit ID also identifies the arithmetic unit 40 including the arithmetic circuit 41 and the transmission circuit 42 connected to the arithmetic circuit 41 .
  • the control unit 20 transfers the ID-attached data to the arithmetic circuit 41-1 whose leading "#1" is the arithmetic circuit ID (step S12).
  • the ID-attached data is transmitted via the communication line 50 and the transmission circuit 42-1 (see also the dashed-dotted line arrow A1 in FIG. 1).
  • processing A by the arithmetic circuit 41-1 and processing B by the arithmetic circuit 41-2 are executed with the transfer of ID-attached data as a trigger.
  • the control unit 20 which operates by executing the program, controls the arithmetic circuits 41-1 and 41-2 to sequentially execute the processing A and the processing B.
  • the transmission circuit 42-1 that transmits ID-attached data deletes "#1", which is the leading arithmetic circuit ID, from the ID-attached data (step S13).
  • the arithmetic circuit 41-1 executes the process A on the data body of the ID-attached data from which "#1" has been deleted (step S14). Note that the format of the arithmetic circuit ID and the like are predetermined, and each arithmetic circuit 41 including the arithmetic circuit 41-1 is configured to recognize the presence or absence of the arithmetic circuit ID and the beginning and end of the data body. ing.
  • the arithmetic circuit 41-1 generates new ID-attached data using the computation result obtained by the process A (also referred to as processed data after the process A, processed result of the process A, etc.) as a new data body.
  • This ID-attached data is data with "#2" added to the data body.
  • the arithmetic circuit 41-1 transfers the generated ID-attached data to the arithmetic circuit 41-2 whose destination is "#2" (step S15).
  • the ID-attached data is transmitted via the transmission circuit 42-1, the communication line 50, and the transmission circuit 42-2 (see also the one-dot chain line arrow A2 in FIG. 1).
  • the transmission circuit 42-1 that has received the ID-attached data from the arithmetic circuit 41-1 may notify the control unit 20 of the reception.
  • the transfer timing of the ID-attached data may be controlled by the control unit 20 that has received the notification.
  • the control unit 20 instructs the transmission circuit 42-1 to transfer data with an ID at a predetermined timing.
  • the transmission circuit 42-2 that transmits the ID-attached data deletes "#2", which is the leading arithmetic circuit ID, from the ID-attached data (step S16). As a result, the arithmetic circuit ID is not assigned to the data body.
  • the arithmetic circuit 41-2 executes the process B on the data body (step S17).
  • the calculation result of this process B is the processed data after the current series of processes, that is, the final processing result, and is transmitted from the calculation circuit 41-2 to the transmission circuit 42-2 as a new data body.
  • the transmission circuit 42 of each arithmetic unit 40 transmits the data body from the arithmetic circuit 41 to the main storage device 31 of the storage unit 30 as the final processing result when the arithmetic circuit ID is not assigned to the data body.
  • the transmission circuit 42-2 transmits the main data (that is, the final processing result) from the arithmetic circuit 41-2 to which the arithmetic circuit ID is not attached to the main storage device 31 via the communication line 50 ( See also step S18 and dashed-dotted line arrow A3 in FIG. It should be noted that the transmission circuit 42-2 may notify the control unit 20 to that effect when the data body is received.
  • the control unit 20 recognizes that the process B has been completed, in other words, the series of processes to be executed by the arithmetic circuit 41 designated by the program has been completed when the notification from the transmission circuit 42-2 is received. can.
  • the control unit 20 may perform control to transfer the processing result data received by the transmission circuit 42-2 to the main storage device 31 by executing an interrupt process when receiving the notification.
  • the transmission circuit 42 includes an ID storage block 42A, a transmission/reception block 42B, an ID determination block 42C, and an ID deletion block 42D.
  • Various types of data output to the communication line 50 are input to the transmission circuit 42, in addition to the ID-attached data and the data itself as the final processing result.
  • the ID storage block 42A stores the arithmetic circuit ID of the arithmetic circuit 41 in the same arithmetic unit 40.
  • the ID storage block 42A of the arithmetic unit 40-1 stores the arithmetic circuit ID "#1" of the arithmetic circuit 41-1.
  • the transmission/reception block 42B sends various data input to the transmission circuit 42 to the ID determination block 42C according to the implemented protocol.
  • the ID judgment block 42C extracts the arithmetic circuit ID at the head of the data from the transmission/reception block 42B.
  • the ID determination block 42C determines whether the extracted arithmetic circuit ID matches the arithmetic circuit ID stored in the ID storage block 42A. If the arithmetic circuit ID cannot be extracted, or if both IDs do not match as a result of the comparison, the data sent to the arithmetic unit 40 is not processed by the arithmetic circuit 41 of the arithmetic unit 40 . In this case, the ID determination block 42C discards the input data without supplying it to the next-stage ID deletion block 42D.
  • the data sent to the calculation unit 40 is data with an ID and is to be processed by the calculation circuit 41 of the calculation unit 40 .
  • the ID judgment block 42C sends the ID-attached data to the ID deletion block 42D in the next stage. If the arithmetic circuit ID at the head of the ID-attached data is "#1", the ID-attached data is sent to the arithmetic circuit 41-1 by only the transmission circuit 42-1 of the arithmetic section 40-1, as will be described later. In this manner, the ID-attached data is transmitted to the arithmetic circuit 41 identified by the arithmetic circuit ID at the head of the data.
  • the ID deletion block 42D deletes from the ID determination block 42C the arithmetic circuit ID that is integrated with the arithmetic circuit ID stored in the ID storage block 42A, and sends the deleted data with ID to the arithmetic circuit 41.
  • the transmission/reception block 42B When the transmission/reception block 42B receives from the arithmetic circuit 41 the data with ID or the final processing result which is the data itself without the arithmetic circuit ID, it outputs the received data to the communication line 50.
  • the ID-attached data is transmitted by each transmission circuit 42 to the arithmetic circuit 41 of the leading arithmetic circuit ID.
  • the final processing result is transmitted to the main storage device 31 of the storage unit 30 .
  • the transmission/reception block 42B for example, transmits the data of the processing result to which the address of the main storage device 31 is assigned.
  • This embodiment shows an example in which only the processes A and B are executed by the program, that is, an example in which the arithmetic circuits 41-1 and 41-2 are connected and the process flows of the processes A and B are sequentially executed.
  • the number of processes is not limited to two and may be any number.
  • the arithmetic circuit to be used may also be determined according to the number of processes and the type of process. For example, even if the arithmetic circuit 41-1, the arithmetic circuit 41-2, and the arithmetic circuit 41-3 that executes the process N are connected, and these circuits sequentially execute the process A, the process B, and the process N good.
  • a plurality of arithmetic circuits 41 of the same type or different types may be "connected", and the plurality of processing designated by the program may be sequentially executed by the connected plurality of arithmetic circuits 41 .
  • the program can be executed with almost no load on the control unit 20. It is possible to execute various processes specified by .
  • a unique arithmetic circuit ID is assigned to each arithmetic circuit 41, and when a plurality of processes of a program are sequentially performed by the arithmetic circuits 41, processing is performed between the arithmetic circuits 41 based on the arithmetic circuit ID.
  • Data (data body) is sent and received. Therefore, there is no need to write the data (data body) processed by a certain arithmetic circuit 41 to the storage unit 30, particularly the main memory device 31, and transfer the data from the main memory device 31 to the arithmetic circuit 41-2. Also, no bottleneck occurs in data transfer by the control unit 20 . Therefore, the throughput of the computer 10 is improved. Furthermore, effects such as lower power consumption, lower latency, lighter programs, improved computer stability, and improved usability can be obtained.
  • control unit 20 assigns the arithmetic circuit ID to the processing data (data body), but a dedicated module may be prepared for this assignment.
  • the arithmetic circuit ID may be defined and assigned by a program as described above, or may be created and assigned by a compiler.
  • the communication protocol used in the control unit 20, the storage unit 30, the calculation unit 40 (especially the transmission circuit 42), and the communication line 50 is arbitrary, and is TCP/IP using IPv4 and/or IPv6 addresses as calculation circuit IDs. , a network layer service chaining protocol may be used. Also, the control unit 20, the storage unit 30, the calculation unit 40 (especially the transmission circuit 42), and the communication line 50 may be connected by the Ethernet standard, CXL (Compute Express Link), Gen-Z, or the like.
  • the transmission circuit 42 may be separately provided outside the arithmetic unit 40 such as an FPGA. In this case, the transmission circuit 42 may use a processor bus or a PCIe bridge function.
  • the transmission circuit 42 may be a router or the like.
  • the arithmetic circuit 41 may be configured by a processor such as a CPU.
  • a storage unit (not shown) may be provided inside or outside the transmission circuit 42, and the storage unit may store subprograms for the arithmetic circuit 41 to operate as each block.
  • the arithmetic circuit 41 and the storage unit may be connected to a communication line 50 and the subprogram may be supplied to the arithmetic circuit 41 via the communication line 50 .
  • a program is supplied to the arithmetic circuit 41 via the communication line 50 .
  • the arithmetic circuit 41 may be a GPU or the like.
  • a processor that controls the operation of the GPU and a set of storage units that store programs executed by the processor may be provided inside or outside the transmission circuit 42 .
  • the processor and storage may be connected to a communication line 50 and the program may be supplied to the processor via the communication line 50 .
  • the arithmetic circuit IDs are "#1" to "#N" for convenience, but IP addresses, MAC addresses, or the like may be used as the arithmetic circuit IDs.
  • the transmission circuit 42 may be provided to each module of the computer 10.
  • the control unit 20 and the storage unit 30 may be connected to the communication line 50 via the transmission circuit 42 as shown in FIG.
  • the ID storage block 42A of the transmission circuit 42 connected to the control unit 20 stores the address of the control unit 20 instead of the arithmetic circuit ID.
  • the ID storage block 42A of the transmission circuit 42 connected to the storage unit 30 (the main storage device 31 and the auxiliary storage device 32, respectively), the address of the main storage device 31 or the auxiliary storage device 32 is stored instead of the arithmetic circuit ID. remembered.
  • a process ID for identifying each process is set for each process unit of a program, and a process ID for a process to be executed by an arithmetic circuit having that arithmetic circuit ID is given to process data together with an arithmetic circuit ID.
  • the present embodiment will be described below with reference to FIGS. 5 to 7.
  • FIG. In addition, explanations that overlap with those of the first embodiment will be omitted as appropriate.
  • the omission of description is the same for the third and subsequent embodiments, and the description of a certain embodiment that overlaps with the previous embodiment will be omitted as appropriate.
  • the computer according to the second embodiment has the same device configuration as the computer 10 shown in FIG. However, the arithmetic circuit 41-1 can execute the processing A, the processing B, and the processing C, and the arithmetic circuit 41-2 can execute the processing D here.
  • the computer according to the second embodiment will also be referred to as the computer 110 . It is assumed that "#A" to "#D" are set as process IDs for processes A to D, respectively.
  • FIG. 5 An example in which the computer 110 performs processing A ⁇ processing C ⁇ processing D on processing data to be processed will be described below with reference to FIGS. 1 and 5.
  • the control unit 20 assigns an arithmetic circuit ID of the arithmetic circuit 41 to be processed and a process ID of the process to be executed by the arithmetic circuit 41 to the processing data, which is the main body of the data, according to the program.
  • the arithmetic circuit ID "#1", the processing IDs "#A” and "#C”, the arithmetic circuit ID "#2", and the processing ID "#D" are given in order from the beginning.
  • Each of the assigned IDs is arranged from the beginning in order of processing, with the arithmetic circuit ID of the arithmetic circuit 41 and one or a plurality of process IDs to be executed by the arithmetic circuit 41 forming a set.
  • a plurality of process IDs in one set are also arranged in order of execution of the process from the head side.
  • the data body and each ID assigned to the data body are collectively referred to as ID-attached data, similarly to the above (hereinafter, the same applies to data to which other IDs are assigned).
  • the format of the processing ID is defined, and the arithmetic circuit 41 and the like can recognize the location of the processing ID in the ID-attached data.
  • step S21 the same processes as steps S12 and S13 in FIG. 2 described above are performed. That is, the ID-attached data is transferred to the arithmetic circuit 41-1 whose arithmetic circuit ID is "#1" at the beginning of the ID-attached data, and at that time, the "#1" is deleted in the transmission circuit 42-1. be.
  • the arithmetic circuit 41-1 executes the process A indicated by the leading process ID "#A” on the data body, and deletes "#A” (step S24A). After that, the arithmetic circuit 41-1 sets the processing result of the processing A as a new data body, executes the processing C indicated by the current top processing ID "#C" on this data body, and is deleted (step S24B). As a result, the processed data after the process C is obtained as the data body.
  • the processed data after processing C is used as the data body, and the same processing as steps S15 and S16 in FIG. . That is, the ID-added data is transferred to the arithmetic circuit 41-2, and the leading arithmetic circuit ID is deleted by the transmission circuit 42-2. Due to the deletion of the arithmetic circuit ID, the ID-attached data input to the arithmetic circuit 41-2 has the processing ID "#D" at the head in addition to the data itself.
  • the arithmetic circuit 41-2 executes the process D on the processed data and deletes "#D" (step S27). After that, the same processing as in step S18 in FIG. 2 described above is executed, and the data body after processing D is transmitted to the main storage device 31 as the final processing result.
  • the arithmetic circuit 41-1 includes a process ID table 41A-1, a sorting block 41B-1, and process execution blocks 41C-1 to 41E-1 for executing processes A to C, respectively. Prepare.
  • the arithmetic circuit 41-1 further includes ID deletion blocks 41F-1 to 41H-1 for deleting process IDs after each of the processes A to C, and an end determination block 41I-1.
  • a process ID and specific information specifying a process execution block that executes the process identified by the process ID are associated with each process ID.
  • the process ID "#A" is associated with the process execution block 41C-1 that executes the process A.
  • the ID-attached data input from the transmission circuit 42-1 to the arithmetic circuit 41-1 is first input to the distribution block 41B-1.
  • the distribution block 41B-1 refers to the processing ID table 41A-1 using the leading processing ID of the data with ID as a key, and acquires specific information corresponding to the processing ID as the key.
  • the distribution block 41B-1 inputs the ID-attached data to the processing execution block specified by the above acquired specific information among the processing execution blocks 41C-1 to 41E-1.
  • the processing execution block 41C-1 executes processing A on the data body of the input ID-attached data, and generates new ID-attached data using the processing result of processing A as the data body.
  • the processing execution block 41C-1 inputs the generated data with ID to the subsequent ID deletion block 41F-1.
  • the ID deletion block 41F-1 deletes the leading process ID (“#A”) from the ID-attached data, and outputs the deleted ID-attached data to the end determination block 41I-1.
  • processing execution block 41D-1 executes processing B on the data body of the input data with ID.
  • the ID deletion block 41G-1 deletes the leading process ID ("#B") of the ID-attached data, and outputs the deleted ID-attached data to the end determination block 41I-1.
  • processing execution block 41E-1 executes processing C on the data body of the input data with ID.
  • the ID deletion block 41H-1 deletes the leading process ID ("#C") of the ID-attached data, and outputs the deleted ID-attached data to the end determination block 41I-1.
  • the data sent to the end determination block 41I-1 is not ID-attached data, but a data body (final process result) without a process ID or the like. can be.
  • the end determination block 41I-1 determines whether any of the process IDs in the process ID table 41A-1 is included in the received data (data with ID or final process result). If it is included, the process continues, so the received data (data with ID) is input again to the sorting block 41B-1. On the other hand, if they do not match, the received data (data with ID or final processing result) is output to the transmission circuit 42 .
  • the arithmetic circuit 41-1 performs the processing A by the processing execution block 41C-1 and the ID deletion block 41F- for processing data with ID. 1 deletes the process ID "#A". Further, for the ID-attached process data, process C by the process execution block 41E-1 and deletion of the process ID "#C" by the ID deletion block 41H-1 are performed.
  • the arithmetic circuit 41-2 includes a process ID table 41A-2, a sorting block 41B-2, and a process execution block 41C-2 for executing process D, as shown in FIG.
  • the arithmetic circuit 41-2 further includes an ID deletion block 41D-2 that deletes the process ID after the process D, and an end determination block 41I-2.
  • the process ID "#D" of the process D is associated with specific information for specifying the process execution block 41C-2 that executes the process D.
  • the process D is executed by the arithmetic circuit 41-2.
  • #A to #D are used as process IDs.
  • the processing ID is not limited to this, and may be, for example, an IP address, a MAC address, or a simple numerical value.
  • the process ID may be configured to indicate the position of the part that executes the process, like a memory pointer.
  • FIG. The computer according to the third embodiment has the same device configuration as the computer 110 described above. However, the arithmetic circuit 41-1 can execute the processing A and the processing B in parallel.
  • the computer according to the third embodiment will also be referred to as an electronic computer 210 below.
  • the control unit 20 assigns an arithmetic circuit ID of the arithmetic circuit 41 to be processed and a process ID of the process to be executed by the arithmetic circuit 41 to the processing data serving as the data body according to the program. (step S31).
  • an arithmetic circuit ID "#1”, process IDs "#A” to "#C”, an arithmetic circuit ID "#2”, and a process ID "#D” are given in order from the beginning.
  • the control unit 20 inserts a parallel Insert the tag "+". "+” indicates that two processes identified by their respective process IDs before and after are executed in parallel.
  • step S31 the same processes as steps S12 and S13 in FIGS. 2 and 5 described above are performed.
  • the arithmetic circuit 41-1 determines whether there is a tag "+" immediately after the leading process ID "#A". If there is no "+”, the process A identified by "#A” is executed.
  • #B” is performed on the data body of the ID-attached data in parallel by the processing A and the processing B identified by “B” (step S34A). Furthermore, "#A”, "+”, and “#B” are deleted (step S34A). After that, the result of this processing is used as a new data body, and the same processing as in step S24C in FIG. 2 and steps S15, S16, S27, and S18 in FIG. 5 are performed. Note that the above determination is also performed in step S24C. Processing C and processing D are executed by the above processing.
  • the arithmetic circuit 41-1 includes a parallel processing determination block 41J-1 in addition to the configuration of the arithmetic circuit 41-1 of the second embodiment (see FIG. 6). Also, a flag indicating parallel processing can be supplied from the distribution block 41B-1 to the parallel processing determination block 41J-1.
  • the distribution block 41B-1 determines whether there is a tag "+" immediately after the processing ID at the beginning of the ID-attached data, and if there is the "+", supplies the flag to the parallel processing determination block 41J-1. do.
  • the distribution block 41B-1 refers to the process ID table 41A-1 and obtains specific information corresponding to the process IDs before and after the "+" in the data with ID.
  • specific information for specifying each of the processing execution blocks 41C-1 and 41D-1 is acquired.
  • the distribution block 41B-1 inputs the data body to the processing execution blocks 41C-1 and 41D-1, whereby the processing A and B are executed in parallel.
  • the distribution block 41B-1 may divide the data body and input it to the processing execution blocks 41C-1 and 41D-1, respectively, according to the processing contents, or may input the data body as it is to the processing execution blocks 41C-1 and 41D. -1 can be entered.
  • the execution time may differ between process A and process B.
  • the parallel processing determination block 41J-1 holds the processing result until both the processing A and the processing B which are being executed in parallel are completed.
  • the results of parallel processing of processes A and B are output to the end determination block 41I-1.
  • Parallel processing is not limited to parallel execution of consecutive processes such as processes A and B.
  • processing A and processing C can be executed in parallel, they may be arranged from the beginning as “#A”, “+”, “#C", “#B”, and the like.
  • parallel execution of more than two processes may be performed.
  • three or more parallel executions are possible by inserting a plurality of tags such as "#A”, “+”, “#B”, “+”, and "#C”.
  • parallel execution may be represented by a numerical value, such as "+2”, that indicates the number of process IDs to be executed in parallel. In “+2", the processes of two process IDs subsequent to the numerical value are targeted for parallel execution.
  • branch tags indicating branching of processing may be employed.
  • the data body contains, from the beginning, "#1", “#A”, “!, “X", “#B”, “Y”, “#C", "#2" and “#D” are given. "! after "#A” indicates a branch of processing A.
  • the subsequent "X” together with the subsequent "#B” designate that the process B is executed when the process result of the process A corresponds to the process result corresponding to "X".
  • Arithmetic circuit 41-1 which has received the data with ID from which "#1" has been deleted by transmission circuit 42-1, executes process A according to "#A" and deletes "#A”. After that, the arithmetic circuit 41-1 reads up to 'X', '#B', 'Y' and '#C' according to '!' Execute B. The arithmetic circuit 41-1 executes the process C if the process result is Y.
  • the configuration of the arithmetic circuit 41-1 may be the same as that in FIG. 6, for example.
  • the end determination block 41I-1 uses the processing result after processing A as the data body, and ” and “#D” are input to the sorting block 41B-1.
  • the sorting block 41B-1 reads ⁇ !'', ⁇ X'', ⁇ #B'', ⁇ Y'', and ⁇ #C'' at the beginning of the input data with ID, and the data body as the processing result of the processing A is It is determined whether the data corresponds to X or Y. If the processing result is X, the distribution block 41B-1 refers to the processing ID table and inputs data with ID to the processing execution block 41D-1 corresponding to "#B". At this time, the distribution block 41B-1 deletes "!, "X", "Y", and "#C" from the data with ID.
  • the distribution block 41B-1 refers to the processing ID table and inputs data with an ID to the processing execution block 41E-1 corresponding to "#C". At this time, the distribution block 41B-1 deletes "!, "X", “#B”, and "Y” from the data with ID. If the processing result does not correspond to both "X” and "Y", it is assumed that an abnormality has occurred, and the entire series of processing by the program may be terminated.
  • branch processing can be executed in the arithmetic circuit 41 by inserting a branch tag. Branching may occur across multiple arithmetic circuits 41 .
  • a tag to be inserted is not limited to a branch tag, and various tags may be used. For example, a tag or the like for executing loop processing may be prepared.
  • a data ID (an ID determined according to the processing of the data body) that identifies the data body is given to the data body.
  • Each arithmetic circuit 41 executes processing based on the data ID.
  • a processing ID or the like is assigned to the data body, but as the number of processes increases, the amount of ID-attached data increases, causing a reduction in the throughput of the computer.
  • individual data IDs are assigned to the processing data that constitute the data body, and the processing required for each data ID is held in a table by the arithmetic circuit 41, thereby reducing the amount of data to be assigned to the processing data. ing.
  • the present embodiment will be described below with a focus on handling of data IDs.
  • the computer according to the fifth embodiment has the same device configuration as the computer 10 shown in FIG. However, the arithmetic circuit 41-1 can execute the processing A, the processing B, and the processing C, and the arithmetic circuit 41-2 can execute the processing D here.
  • the computer according to the fifth embodiment will also be referred to as an electronic computer 410 hereinafter. It is assumed that "#A" to "#D" are set as process IDs for processes A to D, respectively. Also, as data IDs, "data #X" to "data #Z" are set here. It is assumed that each arithmetic circuit 41 stores an ID correspondence table showing correspondence between data IDs and process IDs.
  • the arithmetic circuit 41-1 has an ID conversion table shown in FIG.
  • the arithmetic circuit 41-2 has an ID conversion table shown in FIG.
  • each data ID is associated with a process ID of a process executable by the arithmetic circuit 41 having the ID conversion table.
  • the format of the data ID is defined, and the arithmetic circuit 41 and the like can recognize the location of the data ID in the data with ID.
  • FIG. 1 An example of the operation of the computer 410 will be described with reference to FIGS. 1 and 13.
  • FIG. 1 it is assumed that the arithmetic circuit 41-1 executes the processes A to C, and the arithmetic circuit 41-2 executes the process D.
  • FIG. 13 the control unit 20, in accordance with a program, generates an arithmetic circuit ID of the arithmetic circuit 41 to process data to be processed, and a data ID by which the processing to be executed by the arithmetic circuit 41 can be specified. and are added (step S41).
  • an arithmetic circuit ID "#1", an arithmetic circuit ID "#2", and "data #X" as a data ID are assigned in order from the beginning.
  • step S41 the same processing as steps S12 and S13 in FIG. 2 described above is performed. That is, the ID-attached data is transferred to the arithmetic circuit 41-1 whose arithmetic circuit ID is "#1" at the beginning of the ID-attached data, and at that time, the "#1" is deleted in the transmission circuit 42-1. be.
  • the arithmetic circuit 41-1 obtains the process ID associated with the data ID by referring to the ID conversion table shown in FIG. 11 using the data ID of the data with ID as a key (step S44).
  • the data ID is "data #X”, "#A” to "#C” corresponding to this are acquired.
  • the arithmetic circuit 41-1 sequentially executes the process A, the process B, and the process C identified by the acquired process ID.
  • the processed data after the process C is used as the data body, and the same processes as steps S15 and S16 in FIG. will be That is, the ID-added data is transferred to the arithmetic circuit 41-2, and the leading arithmetic circuit ID "#2" is deleted by the transmission circuit 42-2. Due to the deletion of the arithmetic circuit ID, the ID-attached data input to the arithmetic circuit 41-2 has "data #X" at the head in addition to the data itself.
  • the arithmetic circuit 41-2 uses the data ID of the ID-attached data as a key, refers to the ID conversion table shown in FIG. 12, and obtains the process ID associated with this data ID (step S47).
  • the data ID is "data #X”, "#D" corresponding to this is acquired.
  • the arithmetic circuit 41-1 executes the process D identified by the acquired process ID. After that, the same processing as in step S18 in FIG. 2 described above is executed, and the data body after processing D is transmitted to the main storage device 31 as the final processing result. At this time, the data ID may or may not be deleted.
  • the arithmetic circuit 41-1 includes an ID conversion table 41M-1 and an ID conversion block 41N-1 shown in FIG. 11 in addition to the blocks shown in FIG. Such a configuration is the same for other arithmetic circuits 41 as well.
  • Data with an ID supplied from the transmission circuit 42-1 is input to the ID conversion block 41N-1.
  • the ID conversion block 41N-1 refers to the ID conversion table 41M-1 and acquires the process ID corresponding to the data ID of the data with ID.
  • the ID conversion block 41N-1 assigns the acquired process ID to the data with ID in the order of processing from the beginning (this is also defined in the ID conversion table 41M-1), and converts the data with ID after assignment.
  • the distribution block 41B-1 performs the same operation as described above, refers to the process ID table 41A-1, and outputs data with an ID to the process execution block corresponding to the process ID. As a result, execution of processing A and the like is realized.
  • the arithmetic circuit 41 may include an ID conversion table and an ID conversion block in addition to the blocks shown in FIG. 8 and the like.
  • the information associated with the data ID in the ID conversion table may include information for performing parallel processing, branching, etc., in addition to the processing ID.
  • the data ID may be prepared individually for each arithmetic circuit 41.
  • the ID conversion table may be configured so as to specify the processing to be executed by each arithmetic circuit 41 using the data ID as a key.
  • the ID conversion table may store the address of the processing execution block in the form of a pointer, or may store information in a form that enables routing of the execution destination of the processing in the arithmetic circuit 41 in the form of the next hop. good.
  • the data ID may be explicitly written in the program in advance by the user and stored in the storage unit.
  • the computer according to this embodiment is also called an electronic computer 510 .
  • the configuration of the electronic computer 510 is the same as in FIG.
  • user A requests execution of processes A to D
  • user B requests execution of processes C and D.
  • FIG. It is assumed that a user's processing execution request is input to computer 510 via a network or the like together with processing data.
  • the processes A to C are executed by the arithmetic circuit 41-1
  • the process D is executed by the arithmetic circuit 41-2.
  • the ID-attached data requested by user A includes data #X as the data ID
  • the ID-attached data requested by user B includes data #Y as the data ID.
  • Data #X is prepared for user A
  • data #Y is prepared for user B. In other words, the difference between users is specified by the data ID.
  • the arithmetic circuit 41-1 of the present embodiment has a configuration similar to that of FIG. 14, but instead of the sorting block 41B-1 of FIG. Prepare. Processing request timings by a plurality of users may overlap. In other words, the processing requests may conflict. Therefore, the arbitration/distribution block 41P-1 arbitrates the processing requests, preferentially executes one of the processes of the competing processing requests, or waits for execution. 11 and 12 are used as the ID conversion table.
  • ID-attached data of user A and ID-attached data of user B are simultaneously input, the arbitration/distribution block 41P-1 compares the data ID of each ID-attached data and determines the priority of the data to be processed. do. A priority is set for each data ID, and the arbitration/distribution block 41P-1 determines the priority based on this setting.
  • the arbitration/distribution block 41P-1 outputs ID-attached data to the process execution block in descending order of priority.
  • priority information such as processing priority may be associated with each data ID.
  • the arbitration/distribution block 41P-1 may acquire priority information by referring to the ID conversion table, and execute arbitration processing based on the acquired priority information.
  • an electronic computer 610 As shown in FIG. 16, an electronic computer 610 according to the present embodiment has basically the same configuration as that of FIG. and a transmission circuit 43 connected to a communication line 60 connected to an external network.
  • the transmission circuit 43 is distinguished by the arithmetic circuit ID of the arithmetic circuit 41 to which it is connected, the transmission circuit 43 is also referred to as the transmission circuits 43-1 to 43-N.
  • the arithmetic circuit ID included in the data with ID transmitted from the communication line 50 to the arithmetic unit 40 are different even if they identify the same arithmetic circuit 41 .
  • "#1a” is set as the arithmetic circuit ID on the communication line 50 side
  • "#1b” is set as the arithmetic circuit ID on the communication line 60 side.
  • the transmission circuits 42 and 43 do not delete the arithmetic circuit ID included in the data with ID.
  • the arithmetic circuit 41 separates and holds the top arithmetic circuit ID from the data with ID from the transmission circuit 42 or 43 .
  • the arithmetic circuit 41 performs processing on the data body of the ID-attached data in the same manner as described above, and returns the new ID-attached data obtained as a result of the processing or the final processing result to the transmission circuit 42 or 43.
  • the reply destination is determined according to the stored arithmetic circuit ID.
  • the ID-attached data or the final processing result is sent back to the transmission circuit 42
  • the ID-attached data or the final processing result is sent back to the transmission circuit 43. reply to
  • the electronic computer 710 includes a control unit 20, a storage unit 30, a calculation unit 40, and a processing setting table T1.
  • the processing setting table T1 is stored in a storage unit accessible by the arithmetic circuit 41 or the transmission circuit 42 .
  • the processing setting table T ⁇ b>1 may be stored in each calculation unit 40 or may be stored in the storage unit 30 .
  • a configuration example of the processing setting table T1 will be described later.
  • FIG. 18 shows ID-attached data handled by the computer 710 .
  • the ID-attached data has a data body, and a data ID, prefix length, and sequence number added to the beginning of the data body.
  • the data ID identifies the data body (that is, processing data to be processed).
  • a data ID is also called a data address.
  • the prefix length indicates the data length of the data ID.
  • the prefix length identifies the data ID in the ID-attached data.
  • the sequence number is a number indicating the current stage (the number of times the process is executed) in the process flow.
  • the arithmetic circuit 41 increments this sequence number each time it executes processing.
  • a flow is a concept that includes processing data in any arithmetic circuit (the arithmetic circuit here includes not only the arithmetic circuit 41 but also a virtual arithmetic unit described later such as a processing execution block specified by a processing ID.
  • the arithmetic circuit here includes not only the arithmetic circuit 41 but also a virtual arithmetic unit described later such as a processing execution block specified by a processing ID.
  • the order of processing is specified in (the same applies to arithmetic circuits that are not numbered in the form).
  • a flow ID identifies the flow.
  • the processing setting table T1 is table data for determining destinations of data transferred between a plurality of arithmetic circuits that sequentially execute a plurality of processings on processing data.
  • flow ID, and flow information are associated with each other.
  • the flow information is composed of a plurality of resource addresses (data destinations) identifying arithmetic circuits (including processing execution blocks as described above), which correspond to the arithmetic circuit IDs and process IDs.
  • the resource addresses correspond to the processing order, and in this case, are arranged in the processing order to indicate the contents of the flow.
  • the order of resource addresses corresponds to the sequence number.
  • the third resource address is the arithmetic circuit that executes the third process (the arithmetic circuit 41. If the arithmetic circuit 41 can execute a plurality of processes, the arithmetic circuit and the processing execution block therein. ) and corresponds to the sequence number “3”.
  • the data with ID and the initial resource address may be generated by any method.
  • Data with an ID transferred between arithmetic circuits is transferred together with a resource address.
  • the transmission circuit 42 assigns the resource address and the ID to the arithmetic circuit 41. Transmit data. If the information is not the information specifying the arithmetic circuit 41 connected to the transmission circuit 42, the resource address and data with ID are discarded. Thereby, the arithmetic circuit 41 receives the resource address specifying itself and the data with ID.
  • the arithmetic circuit 41 (which may be an unsigned arithmetic circuit) receives the resource address and ID-attached data from the communication line 50 via the transmission circuit 42, it performs the processing shown in FIG.
  • the arithmetic circuit 41 receives the ID-attached data (step S91), in the process specified by the resource address transmitted together with the ID-attached data (such as the process in the process execution block 41C-1 specified by the resource address), The data body is processed, and the sequence number included in the data with ID is incremented (step S92). After that, the arithmetic circuit 41 updates the data body to the processed data.
  • the arithmetic circuit 41 refers to the process setting table using the data ID included in the data with ID as a key, and identifies the flow ID corresponding to the data ID (step S93).
  • the arithmetic circuit 41 identifies the resource address corresponding to the sequence number included in the data with ID among the resource addresses included in the flow information corresponding to the specified flow ID in the process setting table (step S94). After that, the arithmetic circuit 41 transmits the ID-attached data together with the resource address to the specified resource address, more specifically, to the address of the arithmetic circuit specified by the resource address (step S95).
  • the data ID, flow ID, and resource address are all generated with a 128-bit length equivalent to IPv6.
  • Each ID and address is composed of Prefix and Suffix, and the length of each is determined by the type of ID or address.
  • Each ID and address are managed by a predetermined address management device, and address assignment and the like are performed.
  • the data ID is given to the device that generated the processing data (surveillance camera, temperature sensor, etc.) and given to the generated data.
  • the data ID and Prefix length are obtained from the address management device, the address is incremented within the Prefix range each time processing data is generated, and the address is assigned to the new data.
  • the device that generates the processing data puts the data ID and prefix length at the head of the data generated by itself (that is, the data body or the processing data) and transmits the data to the computer 710 .
  • the address management device When the Prefix is full, a request from the user, a change in data, a change in the processing flow, etc. occur, the address management device issues a new data address and Prefix length.
  • the resource address is determined based on the location information (DC name, flow name, rack number, unit number) of the computer 710, for example.
  • the resource address may include an address with a prefix length of 8 that identifies the computer cluster to which the computer 710 belongs, and an address with a prefix length of 16 from the suffix that identifies each computer in the cluster.
  • the resource address further includes the Suffix to Prefix length 32 address of the arithmetic circuit 41 in the computer 710 and the Suffix to Prefix length of the virtual arithmetic unit (such as the processing execution block) configured in the arithmetic circuit 41. 64 addresses; A resource address is determined based on the location and type of resource each time a resource (arithmetic circuit) is added.
  • Resource information includes various information such as clusters, computers, computing units, virtual computing units, processing details, and input/output regulations.
  • the resource address includes the affiliation information indicating the affiliation of the device including the arithmetic circuit and the device information indicating the device including the arithmetic circuit. It is grasped whether it is in The resource address as a whole may be defined by IPv6, and the address of the arithmetic circuit 41 in the resource address may be defined by IPv4.
  • the flow address may include the address of the data to be processed by the flow.
  • the user defines which resources are to be used and in what order to process the data, and also defines the data to be processed in the processing flow.
  • a flow address is assigned to this definition and stored in the flow management device.
  • the processing setting table is generated by the data generation device 1 shown in FIG.
  • the data generation device 1 is composed of a server computer and the like.
  • the data generation device 1 includes a processor 1A, a main memory 1B, and a nonvolatile storage section 1C.
  • the data generator 1 is communicably connected to the computer 710 via the network NW.
  • the processor 1A operates as a first acquisition unit 1F, a second acquisition unit 1G, and a generation unit 1H shown in FIG. 22 by executing programs stored in the storage unit 1C.
  • the first acquisition unit 1F acquires a first correspondence table (FIG. 23) that is data indicating the correspondence between data IDs and flow IDs.
  • the second acquisition unit 1G acquires a second correspondence table that is data indicating the correspondence between flow IDs and flow information.
  • the first correspondence table and the second correspondence table (FIG. 23) may be stored and acquired in the storage unit 1C, or may be stored outside the data generation device 1 (for example, the above two correspondence tables may be managed by an arbitrary method). It may be acquired from the address management device that performs the same) via the network NW or the like.
  • the generation unit 1H associates the acquired data ID of the first correspondence table with the acquired flow information of the second correspondence table via the flow ID, and generates the data ID and the flow information.
  • a process setting table (FIG. 19) associated with is generated.
  • the generation unit 1H supplies the generated processing setting table to the computer 710 and stores it.
  • the flow ID may be omitted in the process setting table.
  • the arithmetic circuit 41 instead of steps S93 and S94, the arithmetic circuit 41 refers to the processing setting table using the data ID included in the ID-attached data as a key, and uses the resource address included in the flow information corresponding to the data ID. , identifies the resource address corresponding to the sequence number included in the data with ID.
  • a common flow ID may correspond to different data IDs. More specifically, when the data specified by the data ID is data such as image data that has the same processing to be executed but different content, the data ID may be different but the processing flow may be the same. . In the above process setting table, the data ID and the flow information are associated via the flow ID, so that the same flow information can be associated with different data IDs, thereby reducing the capacity of the table data.
  • the arithmetic circuit 41 may inquire of the data generation device 1 to acquire the flow ID and the like, and enter it into the process setting table. good. If the data ID of the ID-attached data is not entered in the process setting table, the arithmetic circuit 41 may notify the control unit 20 to that effect, and the control unit 20 may make the above inquiry.
  • the resource address is used to clearly represent the location information of each arithmetic circuit, making it possible to find the most optimal arrangement of the arithmetic circuits when executing continuous processing.
  • the resource address is used to clearly represent the location information of each arithmetic circuit, making it possible to find the most optimal arrangement of the arithmetic circuits when executing continuous processing.
  • by monitoring only the data address processed in each processing part it is possible to trace the data processing order, processing process, and data flow (data traceability), enabling high security, easy troubleshooting, visualization, etc. becomes.
  • IPv6 address management mechanism equivalent to IPv6
  • a plurality of arithmetic circuits for executing a plurality of processes on processing data as described above may be an integrated circuit such as an FPGA, or may be a part of a virtual circuit therein, It may be a processor such as a CPU. Arithmetic circuits may be connected via a network other than a bus. The arithmetic circuit may be connected to a router or the like. It should be noted that the processing results of some of the arithmetic circuits may be temporarily stored in the storage unit 30 instead of being directly input to other arithmetic circuits.
  • a computer executes a plurality of arithmetic circuits that sequentially execute a plurality of processes on processing data, and executes a program, and sequentially executes the plurality of processes on the plurality of arithmetic circuits. and a control unit that performs control to cause the Multiple processing includes branch processing and parallel processing.
  • the arithmetic circuit includes processors such as a CPU and a GPU in addition to the arithmetic circuit 41 configured by an integrated circuit such as an FPGA, as described above.
  • the processor may be implemented by something that performs processing by executing a program.
  • the arithmetic circuit may be realized by a virtual arithmetic unit such as the processing execution block 41C-1 which is a part of the arithmetic circuit 41.
  • an arithmetic circuit ID may be assigned to each of the plurality of arithmetic circuits described above.
  • the arithmetic circuit ID may be, for example, anything that identifies the arithmetic circuit.
  • the arithmetic circuit ID may be realized by the resource address.
  • the plurality of arithmetic circuits may include a first arithmetic circuit that executes a first process out of the plurality of processes, and a second arithmetic circuit that executes a process result of the first process out of the plurality of processes. wherein the first arithmetic circuit transmits the processing result of the first processing to the arithmetic circuit ID of the second arithmetic circuit.
  • the plurality of arithmetic circuits may be accommodated in separate housings, and the computer may be implemented by a system consisting of multiple housings.
  • the computer may further include a main storage device of the control unit, and the processing result of the first process may be transmitted to the second arithmetic circuit without going through the main storage device. This eliminates the need to transfer the processing result to the main memory, thereby further improving the throughput.
  • the transmission computer includes a plurality of first transmission circuits respectively connected to the plurality of arithmetic circuits, and a first communication line connecting the plurality of first transmission circuits and the control unit. You may have more.
  • the plurality of first transmission circuits may include a 1-1 transmission circuit connected to the first arithmetic circuit and a 1-2 transmission circuit connected to the second arithmetic circuit.
  • the 1-1 transmission circuit transmits the processing result of the first processing together with the arithmetic circuit ID of the second arithmetic circuit to the first communication line, and the 1-2 transmission circuit performs the second arithmetic operation.
  • a processing result of the first processing transmitted together with the arithmetic circuit ID of the device may be received from the first communication line, and the received processing result may be transmitted to the second arithmetic circuit.
  • the transmission circuit may be regarded as including the distribution block 41B-1, the end determination block 41I-1, the transmission circuit 42-1, etc. in FIG. . Such a configuration facilitates transfer of the processing result.
  • the plurality of arithmetic circuits may include a third arithmetic circuit that executes a third process for processing a result of the second process among the plurality of processes.
  • the plurality of first transmission circuits may comprise 1-3 transmission circuits connected to the third arithmetic circuit.
  • the 1-2 transmission circuit may transmit the processing result of the second processing to the first communication line together with the arithmetic circuit ID of the third arithmetic circuit.
  • the first-third transmission circuit receives the processing result of the second processing transmitted together with the arithmetic circuit ID of the third arithmetic unit from the first communication line, and transmits the received processing result to the third arithmetic unit. It may be transmitted to the circuit.
  • the processing result of the first processing includes the arithmetic circuit ID of the second arithmetic circuit and the arithmetic operation of the third arithmetic circuit.
  • a circuit ID may be assigned.
  • the computer may further include a second transmission circuit connected to the second arithmetic circuit and connected to a second communication line.
  • a first circuit ID that is the arithmetic circuit ID and a second circuit ID that is different from the first circuit ID may be assigned to the second arithmetic circuit.
  • the second arithmetic circuit receives the data to be processed in the second processing from the first communication line via the 1-2 transmission circuit together with the first circuit ID, or may be configured to be input together with the second circuit ID from through the second transmission circuit.
  • the second arithmetic circuit transmits the data (processing result) obtained by executing the second processing on the data to be processed in the first-second transmission when the first circuit ID is input. It may be transmitted to the first communication line via a circuit, and may be transmitted to the second communication line via the second transmission circuit when the second circuit ID is input. As a result, the processing result can be correctly returned to the transmission line from which the data to be processed is supplied.
  • the second arithmetic circuit is capable of executing a plurality of types of processing including the second processing, and the processing result is provided with data capable of specifying the processing to be executed by the second arithmetic circuit. and the second arithmetic circuit may perform processing on the processing result specified based on data attached to the processing result. As a result, it is possible to improve the throughput while causing the second arithmetic circuit to execute a plurality of processes.
  • the second arithmetic circuit refers to a table based on the data to specify processing to be executed. This reduces the amount of data transferred together with the processing result.
  • the data may include data designating branching of processing or parallel execution of multiple processing. As a result, an improvement in throughput is realized for various processes.
  • the first arithmetic circuit performs both processing according to a predetermined priority order.
  • One of the first processes may be preferentially executed. As a result, appropriate processing is performed for a plurality of processing requests.
  • the data generation device is, for example, a device for determining the destination of the processing data transferred between a plurality of arithmetic circuits that sequentially execute a plurality of processings on the processing data to be processed. Generate table data.
  • the data generation device includes a first acquisition unit that acquires a first correspondence table between a data ID that identifies the processing data and a flow ID that identifies a flow that specifies which arithmetic circuit processes the processing data in what order. and a second acquisition unit that acquires a second correspondence table between the flow ID and the flow information specifying the contents of the flow identified by the flow ID by the order of the destinations (more specifically, the destinations and their order). And prepare.
  • the data generation device associates the acquired data ID of the first correspondence table with the acquired flow information of the second correspondence table via the flow ID, and the data ID and the flow information and generate the table data associated with.
  • the program that causes the computer to operate as each unit described above may be stored in a non-volatile storage medium, more specifically, in a computer-readable non-temporary storage medium, for example.
  • the generation unit may generate the table data in which the data ID, the flow ID, and the flow information are associated with each other. This allows the flow to be specified on the table data.
  • the first correspondence table may include different data IDs associated with the same flow ID. As a result, it is possible to suppress an increase in the amount of table data due to association of the same flow information with different data IDs.
  • the destination may include affiliation information indicating the affiliation of the device including the arithmetic circuit, and device information indicating the device including the arithmetic circuit.
  • the device information may be information specifying the arithmetic circuit provided with the virtual arithmetic unit.
  • the generation unit may transmit the generated table data to a computer including at least one of the plurality of arithmetic circuits.
  • the computer may include at least one of a plurality of arithmetic circuits that sequentially perform a plurality of processes on processing data to be processed. At least one of the plurality of arithmetic circuits may receive the processing data together with a data ID identifying the processing data and a sequence number indicating to which processing of the plurality of processing has been executed. Also, the one may increment the sequence number when the processing data is processed. Also, the above one refers to the table data (see (B) above) in which the data ID and the flow information are associated, and increments destinations included in the flow information corresponding to the data ID. A destination corresponding to the sequence number may be obtained. The above one may transfer its own processing result to the acquired destination arithmetic circuit. The sequence number preferably identifies the next destination.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

データ生成装置(1)は、処理データに対して複数の処理を順次実行する複数の演算回路(41)間で転送されるデータの宛先を決定するためのテーブルデータを生成するデータ生成装置である。データ生成装置は、前記処理データを識別するデータIDと前記処理データをどの演算回路でどの順番で処理するかを特定するフローを識別するフローIDとの第1対応表を取得する第1取得部(1F)と、前記フローIDと当該フローIDが識別するフローの内容を前記宛先の順序により特定するフロー情報との第2対応表を取得する第2取得部(1G)と、取得された前記第1対応表のデータIDと、取得された前記第2対応表の前記フロー情報とを、フローIDを介して対応させ、前記データIDと前記フロー情報とが対応付けられた前記テーブルデータを生成する生成部(1H)と、を備える。

Description

データ生成装置およびプログラム
 本発明は、データ生成装置およびプログラムに関する。
 スマートホン、パソコン、サーバなどのデバイスは、電子計算機で構成される。たとえば、このような電子計算機は、プログラムを読みだして演算を実行する汎用プロセッサと、記憶装置と汎用プロセッサ間を接続するバスなどの通信線と、を含んで構成される。この電子計算機には、高速化、高スループット化、小型化、低電力効率化、処理の柔軟性向上、ユーザ利便性向上など、様々な性能向上が求められ続けている。要望に応えるため、様々な特徴を有する演算器が登場してきた。たとえば、映像・AI処理が高速なGPUや、特定機能のみを超高速で処理可能だが処理内容を変更できないASIC、高速であるが処理内容を製造後に変更可能なFPGAなどがある。
 近年、様々な特徴を有する演算器をアクセラレータとして使用し、計算機全体として性能向上を目指す構成が登場している(非特許文献1)。このような構成では、汎用プロセッサ等の制御部と、記憶部と、FPGAなど複数の演算部と、それらを接続するバスなどの通信線で構成される。このような構成では、特定の処理については、当該処理の得意な演算部が処理実行を担当することがある。このように、特定の処理が得意な演算部にその処理を割り振ることで計算機の全体性能が向上する。
R. Takano and T. Kudoh, "Flow-centric computing leveraged by photonic circuit switching for the post-moore era," 2016 Tenth IEEE/ACM International Symposium on Networks-on-Chip (NOCS), 2016, pp. 1-3, doi: 10.1109/NOCS.2016.7579339.
 上記のような構成では、複数の演算回路間で転送されるデータの宛先を決定するためのテーブルデータを用意する必要があるが、その点について上記非特許文献1には開示がない。
 本発明は、複数の演算回路間で転送されるデータの宛先を決定するためのテーブルデータを好適に生成することを課題とする。
 上記課題を解決するために、本発明のデータ生成装置は、処理データに対して複数の処理を順次実行する複数の演算回路間で転送されるデータの宛先を決定するためのテーブルデータを生成するデータ生成装置であって、前記処理データを識別するデータIDと前記処理データをどの演算回路でどの順番で処理するかを特定するフローを識別するフローIDとの第1対応表を取得する第1取得部と、前記フローIDと当該フローIDが識別するフローの内容を前記宛先の順序により特定するフロー情報との第2対応表を取得する第2取得部と、取得された前記第1対応表のデータIDと、取得された前記第2対応表の前記フロー情報とを、フローIDを介して対応させ、前記データIDと前記フロー情報とが対応付けられた前記テーブルデータを生成する生成部と、を備える。また、本発明に係るプログラムは、コンピュータを前記各部として機能させる。プログラムは、非一時的なコンピュータが読み取り可能な記憶媒体に記憶されてもよい。
 本発明によれば、複数の演算回路間で転送されるデータの宛先を決定するためのテーブルデータを好適に生成することができる。
図1は、本発明の第1の実施の形態の電子計算機の構成を示すブロック図である。 図2は、図1の電子計算機の動作のフローチャートである。 図3は、伝送回路の構成例を示す図である。 図4は、第1の実施の形態の変形例の電子計算機の構成を示すブロック図である。 図5は、第2の実施の形態の電子計算機の動作のフローチャートである。 図6は、第2の実施の形態の演算回路の構成例を示す図である。 図7は、第2の実施の形態の他の演算回路の構成例を示す図である。 図8は、第3の実施の形態の電子計算機の動作のフローチャートである。 図9は、第3の実施の形態の演算回路の構成例を示す図である。 図10は、第4の実施の形態のID付きデータのデータ構造を示す図である。 図11は、第5の実施の形態のID変換テーブルの構成例を示す図である。 図12は、第5の実施の形態のID変換テーブルの構成例を示す図である。 図13は、第5の実施の形態の電子計算機の動作のフローチャートである。 図14は、第5の実施の形態の演算回路の構成例を示す図である。 図15は、第6の実施の形態の演算回路の構成例を示す図である。 図16は、第7の実施の形態の電子計算機の構成を示すブロック図である。 図17は、第8の実施の形態の電子計算機の構成を示すブロック図である。 図18は、第8の実施の形態のID付きデータのデータ構造を示す図である。 図19は、第8の実施の形態の処理設定テーブルの構成例を示す図である。 図20は、第8の実施の形態の演算回路が行う処理のフローチャートである。 図21は。第8の実施の形態のデータ生成装置の構成図である。 図22は。第8の実施の形態のデータ生成装置の構成図である。 図23は、第8の実施の形態の処理設定テーブルの生成の様子を示す図である。
 以下、本発明の実施の形態を図面に基づいて詳細に説明するが、本発明は、以下の実施の形態に限定されるものではない。
[第1の実施の形態]
 本発明の第1の実施の形態は、複数の演算部間で直接データを送受信することを可能とすることで、制御部がデータ転送する回数を減らし、計算機全体のスループットを向上させる。
(電子計算機10の構成)
 図1に示すように、第1の実施の形態に係る電子計算機10は、制御部20と、制御部20の主記憶装置31(メインメモリ)及び補助記憶装置32を含む記憶部30と、複数の演算部40と、これらが接続されたバスなどの通信線50と、を備える。
 制御部20は、ハードディスク、SSD(Solid State Drive)などの補助記憶装置32に格納されているプログラムを、RAM(Random Access Memory)などの主記憶装置31に読み出して実行する。制御部20は、例えば、プログラムを実行することで所定の処理を行うプロセッサ、例えば、CPU(Central Processing Unit)などの汎用プロセッサからなる。制御部20は、後述のように、複数の演算部40のうちの少なくとも一部に処理を行わせるプログラムを実行する。
 各演算部40は、FPGA(Field-Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)などの1チップの集積回路からなる。各演算部40には、演算回路41と、伝送回路42とが構成されている。
 演算回路41は、予め定められた処理を実行するように構成されている。各演算回路41で実行される処理の種類は異なっている。演算回路41には、各演算回路41を一意に識別可能な演算回路IDとして「#1」~「#N」が設定されている。以下、演算回路41を演算回路IDごとに区別するときには、各演算回路41を演算回路41-1~41-Nとそれぞれ呼ぶことがある。例えば、「#1」が付与された演算回路41は、演算回路41-1とも呼ぶ。「#2」が付与された演算回路41は、演算回路41-2とも呼ぶ。「#N」が付与された演算回路41は、演算回路41-Nとも呼ぶ。演算回路41-1~41-Nのそれぞれを有する演算部40についても、それぞれ、演算部40-1~40-Nと呼ぶことがある。
 伝送回路42は、制御部20、主記憶装置31、又は、他の演算部40から通信線50を介して送信されてきたデータを、演算回路41に伝送する。また、伝送回路42は、同じ演算部40の演算回路41が出力したデータを、通信線50を介して、制御部20、主記憶装置31、又は、他の演算部40に伝送する。演算部40-1~40-Nの各伝送回路42を、それぞれ、伝送回路42-1~42-Nともいう。
(電子計算機10の動作例)
 電子計算機10の動作の一例について図1及び図2を参照しながら説明する。ここでは、一例として、電子計算機10が、処理Aと、当該処理Aの演算結果を用いた処理Bとを実行するものとする。処理Aは、演算回路41-1により実行されるものとする。処理Bは、演算回路41-2により実行されるものとする。処理A及び処理Bとしては、例えば、画像処理が挙げられる。処理Aの例としては、画像の2値化処理、処理Bの例としては、2値化画像に対するエッジ検出処理が挙げられる。また、記憶部30の主記憶装置31には、例えばネットワークなどを介して外部から供給された処理A及び処理Bの処理対象の処理データが記憶されているものとする。
 制御部20が、補助記憶装置32に記憶されている、処理A及び処理Bの実行を指定するプログラムを主記憶装置31に読み出して実行開始することで、図2の動作が開始される。以下、制御部20は、前記のプログラムを実行することで下記の動作を行う。
 図2の動作では、まず、制御部20が、記憶部30に記憶されている処理データをデータ本体とし、このデータ本体に、処理A及び処理Bをそれぞれ実行する各演算回路41の演算回路IDを付与する(図1及び図2のステップS11)。
 演算回路IDは、上記プログラム内に記述されていてもよいし、上記プログラムに対応して補助記憶装置32に記憶されていてもよい。制御部20は、データ本体としての処理データに、処理A及びBをそれぞれ実行する演算部40-1の演算回路IDである「#1」及び「#2」をその処理順に先頭から付与する。以下、データ本体と当該データ本体に付与された演算回路IDとからなるデータ全体をID付きデータともいう。演算回路IDは、データ本体の宛先、つまり、アドレスとして機能する。なお、演算回路IDは、その演算回路41を備える演算部40、その演算回路41に接続された伝送回路42についても識別している。
 制御部20は、ID付きデータを、その先頭の「#1」を演算回路IDとする演算回路41-1に転送する(ステップS12)。ID付きデータは、通信線50、及び、伝送回路42-1を介して伝送される(図1の一点鎖線矢印A1も参照)。以下に説明するように、ここでは、ID付きデータの転送を契機として、演算回路41-1による処理Aと、演算回路41-2による処理Bとが実行される。このようにして、プログラムを実行して動作する制御部20は、演算回路41-1及び41-2に処理A及び処理Bを順次実行させる制御を行う。
 ID付きデータを伝送する伝送回路42-1は、ID付きデータから、先頭の演算回路IDである「#1」を削除する(ステップS13)。演算回路41-1は、「#1」が削除されたID付きデータのデータ本体に対して処理Aを実行する(ステップS14)。なお、演算回路IDのフォーマットなどは予め決められており、演算回路41-1を含む各演算回路41は、演算回路IDの有無、及び、データ本体の先頭及び最後尾を認識できるように構成されている。演算回路41-1は、処理Aにより得られる演算結果(処理A後の処理データ、処理Aの処理結果などともいう)を新たなデータ本体とした新たなID付きデータを生成する。このID付きデータは、データ本体に「#2」が付与されたデータである。
 演算回路41-1は、生成したID付きデータを、その先頭の「#2」を宛先として、当該「#2」を演算回路IDとする演算回路41-2に転送する(ステップS15)。ID付きデータは、伝送回路42-1、通信線50、及び、伝送回路42-2を介して伝送される(図1の一点鎖線矢印A2も参照)。この転送の処理では、演算回路41-1からID付きデータを受信した伝送回路42-1が、その受信の旨を制御部20に通知してもよい。この場合、ID付きデータの転送タイミングは、前記の通知を受けた制御部20により制御されてもよい。例えば、制御部20は、所定のタイミングに、伝送回路42-1に対してID付きデータの転送指示を行う。
 ID付きデータを伝送する伝送回路42-2は、ID付きデータから先頭の演算回路IDである「#2」を削除する(ステップS16)。これにより、データ本体には、演算回路IDが付与されないことになる。演算回路41-2は、データ本体に対して処理Bを実行する(ステップS17)。この処理Bによる演算結果は、今回の一連の処理の後の処理データつまり最終処理結果であり、新たなデータ本体として演算回路41-2から伝送回路42-2に送信される。ここで、各演算部40の伝送回路42は、演算回路41からのデータ本体に演算回路IDが付与されていないときに、当該データ本体を最終処理結果として記憶部30の主記憶装置31に送信するように構成されている。このため、伝送回路42-2は、演算回路IDが付されていない演算回路41-2からのデータ本体(つまり、最終処理結果)を、通信線50を介して主記憶装置31に送信する(ステップS18、図1の一点鎖線矢印A3も参照)。なお、伝送回路42-2は、データ本体を受信したときにその旨を制御部20に通知してもよい。制御部20は、プログラム上、伝送回路42-2からの通知が来た時に、処理Bが終了したこと、換言すると、プログラムが指定する演算回路41に実行させる一連の処理が終了したことを認識できる。制御部20は、当該通知を受けたときに割り込み処理を実行することで、伝送回路42-2が受信している処理結果のデータを主記憶装置31に転送する制御を行ってもよい。
(伝送回路42の詳細構成及び動作)
 伝送回路42は、図3に示すように、ID記憶ブロック42Aと、送受信ブロック42Bと、ID判定ブロック42Cと、ID削除ブロック42Dと、を備える。伝送回路42には、上記のID付きデータ、最終処理結果となっているデータ本体に限らず、通信線50に出力された各種データが入力される。
 ID記憶ブロック42Aは、同じ演算部40内の演算回路41の演算回路IDを記憶している。例えば、演算部40-1のID記憶ブロック42Aは、演算回路41-1の演算回路ID「#1」を記憶している。
 送受信ブロック42Bは、伝送回路42に入力された各種データを、実装されているプロトコルに従って、ID判定ブロック42Cに送る。
 ID判定ブロック42Cは、送受信ブロック42Bからのデータの先頭の演算回路IDを抽出する。ID判定ブロック42Cは、抽出した演算回路IDが、ID記憶ブロック42Aが記憶している演算回路IDと一致しているかを判定する。演算回路IDが抽出できない、又は、比較の結果、両IDが一致しない場合、その演算部40に送られたデータは、その演算部40の演算回路41での処理対象となっていない。この場合、ID判定ブロック42Cは、入力されたデータを次段のID削除ブロック42Dに供給せずに廃棄する。他方、両IDが一致した場合、その演算部40に送られたデータは、ID付きデータであり、その演算部40の演算回路41での処理対象となっている。この場合、ID判定ブロック42Cは、ID付きデータを次段のID削除ブロック42Dに送る。ID付きデータの先頭の演算回路IDが「#1」であれば、演算部40-1の伝送回路42-1のみで、ID付きデータが後述のように演算回路41-1に送られる。このようにして、ID付きデータは、その先頭の演算回路IDにより識別される演算回路41に送信される。
 ID削除ブロック42Dは、ID判定ブロック42Cから、ID記憶ブロック42Aが記憶している演算回路IDと一体する演算回路IDを削除して、削除後のID付きデータを演算回路41に送る。
 送受信ブロック42Bは、演算回路41から、ID付きデータ、又は、演算回路IDが付与されていないデータ本体である最終処理結果を受信すると、受信したデータを通信線50に出力する。ID付きデータは、各伝送回路42により、先頭の演算回路IDの演算回路41宛てに送信されることになる。最終処理結果は、記憶部30の主記憶装置31に送信される。送受信ブロック42Bは、例えば、主記憶装置31のアドレスを付与した処理結果のデータを送信する。
 この実施の形態では、プログラムにより処理A及びBのみが実行される例、つまり、演算回路41-1及び41-2を連結し、これらに処理A及びBという処理フローを順次実行させる例を示したが、処理数は2つに限らず任意の数あればよい。使用される演算回路も、処理数及び処理の種類に応じて決定されればよい。例えば、演算回路41-1、演算回路41-2、及び、処理Nを実行する演算回路41-3を連結し、これら回路により、処理A、処理B、及び、処理Nが順次実行されてもよい。複数の同種又は異種の演算回路を「連結」し、連結した複数の演算回路41により、プログラムが実行を指定する複数の処理を順次実行すればよい。複数の同種又は異種の演算回路を「連結」し、連結した複数の演算回路41により、プログラムが実行を指定する複数の処理を順次実行することで、制御部20にほとんど負荷をかけずにプログラムが指定する各種処理を実行することが可能となる。
(効果及び変形例)
 この実施の形態では、演算回路41それぞれに固有の演算回路IDが付与され、プログラムの複数の処理を複数の演算回路41で順次行うときに、演算回路IDをもとに演算回路41間で処理データ(データ本体)が送受信される。このため、ある演算回路41での処理後のデータ(データ本体)の記憶部30、特に、主記憶装置31への書き込み、及び、主記憶装置31から演算回路41-2への転送が無い。また、制御部20によるデータ転送のボトルネックも生じない。このため、電子計算機10のスループット向上が実現されている。さらに、低消費電力化、レイテンシ低減、プログラムの軽量化、計算機の安定性向上、ユーザービリティ向上などの効果も得られる。
 この実施の形態では、制御部20が、演算回路IDを処理データ(データ本体)に付与しているが、この付与用に専用モジュールが用意されてもよい。演算回路IDは、上述のようにプログラムで定義されて付与されてもよいし、コンパイラで作成及び付与されてもよい。
 制御部20、記憶部30、演算部40(特に伝送回路42)、及び、通信線50で使用される通信プロトコルは任意であり、IPv4及び又はIPv6のアドレスを演算回路IDとして用いたTCP/IP、ネットワークレイヤーのサービスチェイニングプロトコルが使用されてもよい。また、制御部20、記憶部30、演算部40(特に伝送回路42)、及び、通信線50は、イーサネットの規格や、CXL(Compute Express Link)、Gen-Z等で接続されてもよい。伝送回路42は、FPGAなどの演算部40の外部に別途設けられてもよい。この場合、伝送回路42は、プロセッサのバス又はPCIeのブリッジ機能などを利用したものであってもよい。伝送回路42は、ルータなどであってもよい。
 演算回路41は、CPUなどのプロセッサにより構成されてもよい。この場合、不図示の記憶部を伝送回路42内又は外部に設け、この記憶部に、演算回路41が上記各ブロックとして動作するためのサブプログラムが格納されてもよい。演算回路41及び記憶部は、通信線50に接続され、サブプログラムは、通信線50を介して演算回路41に供給されてもよい。プログラムは、通信線50を介して演算回路41に供給される。他の例として、演算回路41は、GPUなどでもよい。この場合、GPUの動作を制御するプロセッサ及び当該プロセッサが実行するプログラムを記憶している記憶部のセットを伝送回路42内又は外部に設けてもよい。プロセッサ及び記憶部は、通信線50に接続され、プログラムは、通信線50を介してプロセッサに供給されてもよい。
 この実施の形態では、演算回路IDを便宜的に「#1」~「#N」としているが、演算回路IDとして、IPアドレス又はMACアドレスなどが使用されてもよい。
 伝送回路42は、電子計算機10の各モジュールに付与してもよい。例えば、図4のように、制御部20及び記憶部30が、伝送回路42を介して通信線50に接続されてもよい。この場合、制御部20に接続された伝送回路42のID記憶ブロック42Aには、制御部20のアドレスなどが演算回路IDの代わりに記憶される。記憶部30(主記憶装置31及び補助記憶装置32のそれぞれ)に接続された伝送回路42のID記憶ブロック42Aには、主記憶装置31又は補助記憶装置32のアドレスなどが演算回路IDの代わりに記憶される。
[第2の実施の形態]
 本実施の形態では、プログラムの処理単位に各処理を識別する処理IDが設定され、処理データに、演算回路IDとともに、その演算回路IDを有する演算回路で実行させる処理の処理IDが付与される。
 以下、本実施の形態について、図5~図7を参照して説明する。なお、第1の実施の形態と重複する説明については、適宜省略する。説明の省略については、第3の実施の形態以降についても同じで、ある実施の形態について、それよりも前の実施の形態と重複する説明については適宜省略する。第2の実施の形態に係る電子計算機は、図1の上記電子計算機10と同様の装置構成を有する。ただし、ここでは、演算回路41-1が、処理A、処理B、及び処理Cを実行可能で、演算回路41-2が、処理Dを実行可能である。以下、第2の実施の形態に係る電子計算機を電子計算機110ともいう。処理A~処理Dには、「#A」~「#D」がそれぞれ処理IDとして設定されているものとする。
(電子計算機110の動作例)
 以下、電子計算機110が、処理対象となっている処理データに対して処理A→処理C→処理Dを実行する例を図1及び図5を参照して説明する。図5の処理において、制御部20は、プログラムに従って、データ本体となる処理データに対して、処理を行わせる演算回路41の演算回路ID及び演算回路41に実行される処理の処理IDを付与する(ステップS21)。ここでは、演算回路ID「#1」、処理ID「#A」及び「#C」、演算回路ID「#2」、及び、処理ID「#D」が、先頭から順に付与される。付与される各IDは、演算回路41の演算回路IDとその演算回路41で実行させる1又は複数の処理IDとを1組として、処理順に先頭から並べられる。また、1組における複数の処理IDも、処理の実行順に先頭側から並べられる。データ本体と、当該データ本体に付与された各IDとを全体として、上記と同様、ID付きデータともいう(以下、他のIDが付与されたデータについても同じ)。処理IDのフォーマットは定められており、演算回路41などは、ID付きデータにおける処理IDの場所などを認識できる。
 ステップS21のあとは、上記で説明した図2のステップS12及びS13と同様の処理が行われる。つまり、ID付きデータの先頭の「#1」を演算回路IDとする演算回路41-1にID付きデータが転送され、そのときに、伝送回路42-1において、当該「#1」が削除される。
 その後、演算回路41-1は、先頭の処理ID「#A」が示す処理Aをデータ本体に対して実行し、当該「#A」を削除する(ステップS24A)。その後、演算回路41-1は、処理Aの処理結果を新たなデータ本体とし、このデータ本体に対して、現在先頭の処理ID「#C」が示す処理Cを実行し、当該「#C」を削除する(ステップS24B)。これにより、データ本体として、処理C後の処理データが得られる。
 その後、処理C後の処理データをデータ本体とし、「#2」及び「#D」が残ったID付きデータに対して、上記で説明した図2のステップS15及びS16と同様の処理が行われる。つまり、演算回路41-2へのID付きデータの転送、及び、伝送回路42-2により先頭の演算回路IDの削除が行われる。演算回路IDの削除により、演算回路41-2に入力されるID付きデータは、データ本体の他、その先頭に処理ID「#D」を有する。
 その後、演算回路41-2は、当該処理データに対して処理Dを実行するとともに「#D」を削除する(ステップS27)。その後、上記で説明した図2のステップS18と同様の処理が実行され、処理D後のデータ本体が最終処理結果として主記憶装置31に送信される。
(演算回路41-1の詳細構成及び動作)
 演算回路41-1は、図6に示すように、処理IDテーブル41A―1と、振り分けブロック41B-1と、処理A~Cをそれぞれ実行する処理実行ブロック41C-1~41E-1と、を備える。演算回路41-1は、さらに、処理A~Cのそれぞれの処理後に処理IDを削除するID削除ブロック41F-1~41H-1と、終了判定ブロック41I-1と、を備える。
 処理IDテーブル41A―1では、処理IDと、この処理IDが識別する処理を実行する処理実行ブロックを特定する特定情報と、が処理IDごとに対応付けられている。例えば、処理ID「#A」には、処理Aを実行する処理実行ブロック41C-1が対応付けられている。伝送回路42-1から演算回路41-1に入力されるID付きデータは、まず、振り分けブロック41B-1に入力される。振り分けブロック41B-1は、ID付きデータのうちの先頭の処理IDをキーとして処理IDテーブル41A―1を参照し、キーとしての処理IDに対応する特定情報を取得する。振り分けブロック41B-1は、処理実行ブロック41C-1~41E-1のうち、前記で取得した特定情報により特定される処理実行ブロックにID付きデータを入力する。
 処理実行ブロック41C-1は、入力されたID付きデータのデータ本体に対して処理Aを実行し、処理Aの処理結果をデータ本体とした新たなID付きデータを生成する。処理実行ブロック41C-1は、生成したID付きデータを後段のID削除ブロック41F-1に入力する。ID削除ブロック41F-1は、ID付きデータのうちの先頭の処理ID(「#A」)を削除し、削除後のID付きデータを、終了判定ブロック41I-1に出力する。
 同様に、処理実行ブロック41D-1は、入力されたID付きデータのデータ本体に対して処理Bを実行する。ID削除ブロック41G-1は、ID付きデータのうちの先頭の処理ID(「#B」)を削除し、削除後のID付きデータを、終了判定ブロック41I-1に出力する。
 同様に、処理実行ブロック41E-1は、入力されたID付きデータのデータ本体に対して処理Cを実行する。ID削除ブロック41H-1は、ID付きデータのうちの先頭の処理ID(「#C」)を削除し、削除後のID付きデータを、終了判定ブロック41I-1に出力する。
 なお、実行された処理がプログラムにおける最終処理である場合、終了判定ブロック41I-1に送信されるデータは、ID付きデータではなく、処理IDなどが付与されていないデータ本体(最終処理結果)となることがある。
 終了判定ブロック41I-1は、受信した受信データ(ID付きデータ又は最終処理結果)に、処理IDテーブル41A―1の各処理IDのいずれかが含まれるかを判定する。含まれる場合は処理が継続されるので、受信データ(ID付きデータ)は振り分けブロック41B-1に再度入力される。他方、一致しない場合、受信データ(ID付きデータ又は最終処理結果)は、伝送回路42に出力される。
 上記のように、処理A、処理C、及び処理Dが実行される場合、演算回路41-1では、ID付き処理データに対して、処理実行ブロック41C-1による処理A及びID削除ブロック41F-1により処理ID「#A」の削除が行われる。さらに、ID付き処理データに対して、処理実行ブロック41E-1による処理C及びID削除ブロック41H-1により処理ID「#C」の削除が行われる。
(演算回路41-2の詳細構成及び動作)
 演算回路41-2は、図7に示すように、処理IDテーブル41A―2と、振り分けブロック41B-2と、処理Dを実行する処理実行ブロック41C-2と、を備える。演算回路41-2は、さらに、処理Dの後に処理IDを削除するID削除ブロック41D-2と、終了判定ブロック41I-2と、を備える。処理IDテーブル41A-2では、処理Dの処理ID「#D」と、処理Dを実行する処理実行ブロック41C-2を特定する特定情報と、が対応付けられている。その他の構成については、演算回路41-1と同様であるので、詳細な説明を省略する。ID付きデータが、処理IDとして「#D」を備える場合、演算回路41-2により処理Dが実行されることになる。
(効果及び変形例)
 この実施の形態では、1つの演算回路41に複数の処理を実装することが可能となり、例えば、FPGAなどのデバイスでは回路の利用効率が上昇するなどの利点がある。
 この実施の形態では、処理IDとして#A~#Dを使用している。処理IDは、これに限らず、たとえば、IPアドレスやMACアドレス、単なる数値であってもよい。さらには、処理IDは、メモリのポインタのように、処理を実行する部分の位置を示す構成でもよい。
[第3の実施の形態]
 本実施の形態では、処理IDに追加して処理を並列実行することを指定する並列タグを挿入することで、演算回路41での並列処理を可能としている。
 以下、本実施の形態について、図8及び図9を参照して説明する。第3の実施の形態に係る電子計算機は、上記電子計算機110と同様の装置構成を有する。ただし、演算回路41-1は、処理Aと処理Bとを並列して実行することが可能となっている。以下、第3の実施の形態に係る電子計算機を電子計算機210ともいう。
(電子計算機210の動作例)
 以下、電子計算機210が、処理対象となっている処理データに対して処理A及び処理Bを並列実行し、その後、処理C及び処理Dを順次実行する例を図1及び図8を参照して説明する。図8に示す処理において、制御部20は、プログラムに従って、データ本体となる処理データに対して、処理を行わせる演算回路41の演算回路ID及び演算回路41に実行される処理の処理IDを付与する(ステップS31)。ここでは、演算回路ID「#1」、処理ID「#A」~「#C」、演算回路ID「#2」、及び、処理ID「#D」が、先頭から順に付与される。ただし、ここでは、処理Aと処理Bとが並列実行されるので、制御部20は、処理A及びBをそれぞれ識別する「#A」と「#B」との間に、並列実行を示す並列タグ「+」を挿入する。「+」は、その前後の処理IDがそれぞれ識別する2つの処理が並列実行されることを示す。
 ステップS31のあとは、上記で説明した図2及び図5のステップS12及びS13と同様の処理が行われる。その後、演算回路41-1は、先頭の処理ID「#A」の直後にタグ「+」があるかを判定する。仮に「+」がない場合には、「#A」が識別する処理Aが実行されるが、ここでは、「+」があるので、当該「+」の前後の処理ID「#A」及び「#B」が識別する処理A及び処理Bによる並列実行をID付きデータのデータ本体に対して行う(ステップS34A)。さらに、「#A」、「+」、「#B」を削除する(ステップS34A)。その後、この処理結果を新たなデータ本体とし、「#A」、「+」、「#B」が削除されたID付きデータに基づいて、図5のステップS24Cと同様の処理が行われ、図2及び図5のステップS15、S16、S27、S18と同様の処理が行われる。なお、上記判定は、ステップS24Cでも行われる。前記の各処理により、処理C及び処理Dが実行される。
(演算回路41-1の詳細構成及び動作)
 演算回路41-1は、図9に示すように、第2の実施の形態の演算回路41-1の構成(図6参照)に加えて、並列処理判定ブロック41J-1を備える。また、振り分けブロック41B-1から並列処理判定ブロック41J-1に、並列処理されることを示すフラグが供給可能となっている。振り分けブロック41B-1は、ID付きデータの先頭の処理IDの直後にタグ「+」があるかを判定し、当該「+」がある場合、前記のフラグを並列処理判定ブロック41J-1に供給する。また、振り分けブロック41B-1は、処理IDテーブル41A-1を参照し、ID付きデータにおける「+」の前後の処理IDにそれぞれ対応する特定情報を取得する。ここでは、処理実行ブロック41C-1及び41D-1それぞれを特定する特定情報が取得される。この場合、振り分けブロック41B-1は、処理実行ブロック41C-1及び41D-1にデータ本体を入力し、これにより、処理A及びBが並列実行される。振り分けブロック41B-1は、処理内容に応じて、データ本体を分割して処理実行ブロック41C-1及び41D-1にそれぞれ入力してもよいし、データ本体をそのまま処理実行ブロック41C-1及び41D-1に入力してもよい。
 上記の並列実行では、処理Aと処理Bとで実行時間が異なる場合がある。並列処理判定ブロック41J-1は、前記のフラグが供給されているときには、並列実行されている処理Aと処理Bの両方の処理が完了するまで、処理結果を保持し、処理Aと処理Bの両方の処理が完了すると、処理Aと処理Bの並列処理結果を終了判定ブロック41I-1に出力する。
(効果及び変形例)
 以上のような構成をとることにより、例えば、FPGAなどのハードウェアで並列処理することが可能となり、全体処理を低レイテンシ化することが可能となる。
 並列処理は、処理A及びBといった連続する処理の並列実行のみに限定されない。たとえば、処理Aと処理Cが並列実行可能な場合、先頭から「#A」、「+」、「#C」、「#B」などと並べられてもよい。さらに、3つ以上の処理の並列実行が行われてもよい。例えば、「#A」、「+」、「#B」、「+」、「#C」として、タグを複数挿入することで3並列以上の並列実行が可能である。さらに、「+2」など、並列実行の対象となる処理IDの数を示す数値により並列実行を表してもよい。「+2」では、当該数値の後続の2つの処理IDの処理が並列実行の対象となる。
[第4の実施の形態]
 第3の実施の形態の並列タグに加え又は代えて、処理の分岐を示す分岐タグを採用してもよい。例えば、上記処理A~処理Dが実行される場合に、処理Aの結果がXのときに処理Bが実行され、処理Aの結果がYのときに処理Cが実行されるものとする。この場合、図10に示すように、データ本体には、先頭から、「#1」、「#A」、「!」、「X」、「#B」、「Y」、「#C」、「#2」、「#D」が付与される。「#A」の後の「!」は、処理Aの分岐を示する。その後の「X」はそのあとの「#B」とともに、処理Aの処理結果が「X」に対応する処理結果だった場合に処理Bの実行することを指定している。「Y」は、その後の「#C」とともに、処理Aの処理結果が「Y」に対応する処理結果だった場合に処理Cの実行することを指定している。伝送回路42-1で「#1」が削除されたID付きデータが入力された演算回路41-1は、「#A」に従って、処理Aを実行するとともに「#A」を削除する。演算回路41-1は、その後、「!」に従って、「X」、「#B」、「Y」、「#C」まで読み、処理Aの処理結果がXに対応する結果であれば、処理Bを実行する。演算回路41-1は、処理結果がYであれば、処理Cを実行する。
 演算回路41-1の構成は、例えば、図6と同様であればよい。例えば、処理A後、終了判定ブロック41I-1は、処理A後の処理結果をデータ本体とし、「!」、「X」、「#B」、「Y」、「#C」、「#2」、及び「#D」が付与されたID付きデータを、振り分けブロック41B-1に入力する。振り分けブロック41B-1は、入力されたID付きデータの先頭の「!」、「X」、「#B」、「Y」、「#C」を読み、処理Aの処理結果であるデータ本体がXに対応したデータであるか、Yに対応したデータであるかを判定する。振り分けブロック41B-1は、処理結果がXであれば、処理IDテーブルを参照し、ID付きデータを、「#B」に対応する処理実行ブロック41D-1に入力する。このとき、振り分けブロック41B-1は、ID付きデータのうちの「!」、「X」、「Y」、「#C」を削除する。
 振分けブロック41B-1は、処理結果がYであれば、処理IDテーブルを参照し、ID付きデータを、「#C」に対応する処理実行ブロック41E-1に入力する。このとき、振り分けブロック41B-1は、ID付きデータのうちの「!」、「X」、「#B」、「Y」を削除する。なお、処理結果が「X」と「Y」との両者に対応していない場合は、異常が発生したものとして、プログラムによる一連の処理全体が終了してもよい。
 以上のように、この実施の形態では、分岐タグを挿入することで演算回路41において分岐処理を実行できる。分岐は、複数の演算回路41にわたって行われてもよい。挿入されるタグは、分岐タグに限定されず、種々のタグが用いられてもよい。例えば、ループ処理を実行させるタグなどが用意されてもよい。
[第5の実施の形態]
 本実施の形態では、処理ID及び各種タグの代わりに、データ本体を識別するデータID(データ本体に対する処理などに応じて決定されるID)がデータ本体に付与される。各演算回路41は、データIDに基づいて処理を実行する。上記では、データ本体に処理IDなどが付与されているが、処理が多くなると、ID付きデータのデータ量が多くなり、電子計算機のスループット低下の要因となる。本実施の形態では、データ本体となる処理データに個別のデータIDを付与し、各データIDで必要な処理を演算回路41でテーブルに保持することで、処理データに付与するデータ量を少なくしている。
 以下、データIDの扱いを中心にして本実施の形態を説明する。第5の実施の形態に係る電子計算機は、図1の上記電子計算機10と同様の装置構成を有する。ただし、ここでは、演算回路41-1が、処理A、処理B、及び処理Cを実行可能で、演算回路41-2が、処理Dを実行可能である。以下、第5の実施の形態に係る電子計算機を電子計算機410ともいう。処理A~処理Dには、「#A」~「#D」がそれぞれ処理IDとして設定されているものとする。また、データIDとしては、ここでは、「データ#X」~「データ#Z」が設定されているものとする。各演算回路41は、データIDと処理IDとの対応関係を示すID対応テーブルを記憶しているものとする。例えば、演算回路41-1は、図11に示すID変換テーブルを備える。演算回路41-2は、図12に示すID変換テーブルを備える。各ID変換テーブルは、データIDそれぞれに、そのID変換テーブルを備える演算回路41が実行可能な処理の処理IDが対応付けられている。データIDのフォーマットは定められており、演算回路41などは、ID付きデータにおけるデータIDの場所などを認識できる。
(電子計算機410の動作例)
 電子計算機410の動作例を図1及び図13を参照して説明する。ここでは、演算回路41-1で処理A~処理Cが実行され、演算回路41-2で処理Dが実行されるものとする。図13の処理において、制御部20は、プログラムに従って、データ本体となる処理データに対して、処理を行わせる演算回路41の演算回路IDと、演算回路41に実行させる処理を特定可能なデータIDと、を付与する(ステップS41)。ここでは、演算回路ID「#1」、演算回路ID「#2」、データIDとしての「データ#X」が先頭から順に付与されるものとする。
 ステップS41のあとは、上記で説明した図2のステップS12及びS13と同様の処理が行われる。つまり、ID付きデータの先頭の「#1」を演算回路IDとする演算回路41-1にID付きデータが転送され、そのときに、伝送回路42-1において、当該「#1」が削除される。
 その後、演算回路41-1は、ID付きデータのデータIDにキーにして、図11に示すID変換テーブルを参照して、データIDに対応付けられた処理IDを取得する(ステップS44)。ここでは、データIDが「データ#X」であるので、これに対応する「#A」~「#C」が取得される。演算回路41-1は、取得した処理IDが識別する処理A、処理B、及び、処理Cを順次実行する。
 その後、処理C後の処理データをデータ本体とし、「#2」及び「データ#X」が残ったID付きデータに対して、上記で説明した図2のステップS15及びS16と同様の処理が行われる。つまり、演算回路41-2へのID付きデータの転送、及び、伝送回路42-2により先頭の演算回路ID「#2」の削除が行われる。演算回路IDの削除により、演算回路41-2に入力されるID付きデータは、データ本体の他、その先頭に「データ#X」を有する。
 その後、演算回路41-2は、ID付きデータのデータIDをキーにして、図12に示すID変換テーブルを参照し、このデータIDに対応付けられた処理IDを取得する(ステップS47)。ここでは、データIDが「データ#X」であるので、これに対応する「#D」が取得される。演算回路41-1は、取得した処理IDが識別する処理Dを実行する。その後、上記で説明した図2のステップS18と同様の処理が実行され、処理D後のデータ本体が最終処理結果として主記憶装置31に送信される。このとき、データIDは削除されても削除されなくてもよい。
(演算回路41-1の詳細構成及び動作)
 演算回路41-1は、図14に示すように、図6に示す各ブロックに加えて、図11に示すID変換テーブル41M-1と、ID変換ブロック41N-1と、を備える。このような構成は、他の演算回路41でも同様である。伝送回路42-1から供給されるID付きデータは、ID変換ブロック41N-1に入力される。ID変換ブロック41N-1は、ID変換テーブル41M-1を参照し、ID付きデータのうちのデータIDに対応する処理IDを取得する。ID変換ブロック41N-1は、取得した処理IDを、ID付きデータに先頭から処理順(これもID変換テーブル41M-1で規定されているものとする)に付与し、付与後のID付きデータを振り分けブロック41B-1に出力する。振り分けブロック41B-1は、上記と同様の動作を行って、処理IDテーブル41A-1を参照し、ID付きデータを、処理IDに対応する処理実行ブロックに出力する。これにより、処理Aなどの実行が実現される。
 なお、演算回路41は、図8などに示す各ブロックに加えてID変換テーブルと、ID変換ブロックとを備えてもよい。このような場合、ID変換テーブルでデータIDに対応付けられる情報には処理IDの他、並列処理や分岐などを行う情報が含まれていてもよい。
(効果及び変形例)
 上記構成により、処理内容をテーブルに持つことで、ID付きデータに処理内容を指定する処理IDなどを付与しなくてもよく、ID付きデータのデータ量を抑えることができ、その結果、スループットの低下を抑えることができる。
 データIDは、演算回路41ごとに個別に用意されてもよい。ID変換テーブルは、データIDをキーとし、各演算回路41で実行する処理を特定できるように構成されていればよい。たとえば、ID変換テーブルには、ポインタ形式での処理実行ブロックのアドレスが格納されてもよいし、ネクストホップ形式で演算回路41内での処理の実行先をルーティングできる形態の情報が格納されてもよい。
 データIDは、例えば、ユーザにより事前にプログラムに明示的に記載され、記憶部に格納されてもよい。
[第6の実施の形態]
 本実施の形態では、複数のユーザによる処理要求又は複数のプログラムタスクが処理される。この実施の形態に係る電子計算機を電子計算機510ともいう。電子計算機510の装置構成は、図1と同じである。例えば、ユーザAは、処理A~Dの実行を要求し、ユーザBは、処理C及びDの実行を要求するものとする。ユーザによる処理実行の要求は、処理データとともに、電子計算機510にネットワークなどを介して入力されるものとする。上記と同様、処理A~Cは、演算回路41-1で実行され、処理Dは、演算回路41-2で実行される。ユーザAの要求に係るID付きデータには、データIDとしてデータ#Xが含まれ、ユーザBの要求に係るID付きデータには、データIDとしてデータ#Yが含まれている。また、データ#Xは、ユーザA用に用意され、データ#Yは、ユーザB用に用意されている。つまり、ユーザの違いは、データIDで特定される。
 本実施の形態の演算回路41-1は、図15に示すように、図14の構成と同様の構成を有するが、図14の振り分けブロック41B-1の代わりに、調停・振り分けブロック41P―1を備える。複数のユーザなどによる処理の要求タイミングが重なってしまうことがある。つまり、処理要求が競合してしまうことがある。そのため、調停・振り分けブロック41P-1は、処理要求を調停し、競合した処理要求の処理のいずれかを優先的に実行したり、実行を待ったりする。ID変換テーブルとしては、図11及び図12が使用される。調停・振り分けブロック41P-1は、ユーザAのID付きデータとユーザBのID付きデータとが同時に入力されたとき、各ID付きデータのデータIDを比較して、処理するデータの優先順位を決定する。優先順位は、データIDごとに設定されており、調停・振り分けブロック41P-1は、この設定に基づいて優先順位を決定する。調停・振り分けブロック41P-1は、優先順位が高い順に、ID付きデータを処理実行ブロックに出力する。
(効果及び変形例)
 以上のような構成により、複数のユーザ又はプログラムタスクを1の電子計算機で同時期に実行できる。
 ID変換テーブルにおいて、データIDそれぞれに、処理の優先度などの優先情報が対応付けられてもよい。この場合、上記調停・振り分けブロック41P-1は、ID変換テーブルを参照して優先情報を取得し、取得した優先情報に基づいて、調停処理を実行してもよい。
[第7の実施の形態]
 図16に示すように、本実施の形態に係る電子計算機610は、基本的に図1の構成と同様であるが、各演算部40は、演算回路41及び伝送回路42の他、演算回路41と外部ネットワークに接続された通信線60とに接続された伝送回路43を備える。伝送回路43を接続先の演算回路41の演算回路IDで区別する場合、伝送回路43を、伝送回路43-1~43-Nともいう。
 この実施の形態では、通信線50から演算部40に伝送されるID付きデータに含まれる演算回路IDと、通信線60から演算部40に伝送されるID付きデータに含まれる演算回路IDと、が、同じ演算回路41を識別するものであっても異なる。例えば、演算回路41-1には、通信線50側の演算回路IDとして「#1a」が設定され、通信線60側の演算回路IDとして「#1b」が設定されている。同様に、演算回路41-2には、通信線50側の演算回路IDとして「#2a」が設定され、通信線60側の演算回路IDとして「#2b」が設定されている。このようにすることで、演算回路IDにより、そのID付きデータが、通信線50を介して伝送されたか、通信線60を介して伝送されたかが分かる。
 この実施の形態では、伝送回路42及び43は、ID付きデータに含まれる演算回路IDを削除しない。例えば、演算回路41は、伝送回路42又は43からのID付きデータから先頭の演算回路IDを分離して保持しておく。その後、演算回路41は、上記と同様の方法で、ID付きデータのデータ本体に対して処理を実行し、処理の結果得られる新たなID付きデータ又は最終処理結果を伝送回路42又は43に返信するときに、保持している演算回路IDに応じて返信先を決定する。例えば、保持している演算回路IDが#1aの場合、ID付きデータ又は最終処理結果を伝送回路42に返信し、演算回路IDが#1bの場合、ID付きデータ又は最終処理結果を伝送回路43に返信する。
 以上のように、ID付きデータの伝送経路毎に異なる演算回路IDを付与することで、どの経路からデータが送られてきたものなのかを明確にすることが可能となる。
[第8の実施の形態]
 本実施の形態に係る電子計算機710は、図17に示すように、制御部20、記憶部30、及び、演算部40の他、処理設定テーブルT1を備える。処理設定テーブルT1は、演算回路41又は伝送回路42がアクセス可能な記憶部に記憶されている。処理設定テーブルT1は、演算部40それぞれに格納されてもよいし、記憶部30に格納されていてもよい。処理設定テーブルT1の構成例については後述する。
 電子計算機710で扱われるID付きデータを図18に示す。ID付きデータは、データ本体と、このデータ本体の先頭に付与された、データID、prefix長、及び、シーケンス番号と、を備える。データIDは、データ本体(つまり、処理対象の処理データ)を識別する。データIDは、データアドレスともいう。prefix長は、データIDのデータ長を示す。prefix長により、ID付きデータにおけるデータIDが特定される。シーケンス番号は、処理のフローにおける現在の段階(処理の実行回数)を示す番号である。演算回路41は、処理を実行するたびに、このシーケンス番号をインクリメントする。フローは、処理データをどの演算回路(ここでの演算回路は、演算回路41の他、処理IDによって特定される処理実行ブロックなどの後述の仮想演算部も含む概念である。以下、この実施の形態における符号の付されていない演算回路について同じ)でどの順番で処理するかを特定する。フローIDは、当該フローを識別する。
 処理設定テーブルT1は、処理データに対して複数の処理を順次実行する複数の演算回路間で転送されるデータの宛先を決定するためのテーブルデータであり、図19に示すように、データIDと、フローIDと、フロー情報と、が互いに対応付けられている。フロー情報は、上記演算回路ID及び処理IDに相当する、演算回路(上述のように処理実行ブロックも含む)を識別する複数のリソースアドレス(上記データの宛先)により構成されている。リソースアドレスは、処理順に対応することで、ここでは、処理順に並べられることで、フローの内容を示している。リソースアドレスの並び順位はシーケンス番号に対応している。例えば、3番目のリソースアドレスは、3回目の処理を実行する演算回路(演算回路41。演算回路41が複数の処理を実行するのが可能であれば、演算回路及びその中の処理実行ブロック。)を特定するものであり、シーケンス番号「3」に対応する。
 ID付きデータ及び最初のリソースアドレスは任意の方法で生成されればよい。演算回路間で転送されるID付きデータはリソースアドレスとともに転送される。伝送回路42は、リソースアドレスに含まれる少なくとも演算回路41を特定する情報が、この伝送回路42に接続された演算回路41を特定する情報である場合、当該演算回路41に当該リソースアドレス及びID付きデータを伝送する。当該情報が、この伝送回路42に接続された演算回路41を特定する情報でない場合は、当該リソースアドレス及びID付きデータを廃棄する。これにより、演算回路41は、自身を指定するリソースアドレス及びID付きデータを受信する。
 演算回路41(符号の無い演算回路であってもよい)は、リソースアドレス及びID付きデータを、伝送回路42を介して通信線50から受信すると、図20に示す処理を行う。演算回路41は、ID付きデータを受信すると(ステップS91)、ID付きデータとともに送信されてきたリソースアドレスが指定する処理(リソースアドレスが指定する処理実行ブロック41C-1などでの処理など)で、データ本体に対して処理を行うとともに、ID付きデータに含まれるシーケンス番号をインクリメントする(ステップS92)。その後、演算回路41は、データ本体を処理後のデータに更新する。演算回路41は、ID付きデータに含まれるデータIDをキーとして処理設定テーブルを参照し、当該データIDに対応するフローIDを特定する(ステップS93)。演算回路41は、特定したフローIDに、処理設定テーブルにおいて対応するフロー情報に含まれるリソースアドレスのうち、ID付きデータに含まれるシーケンス番号に対応するリソースアドレスを特定する(ステップS94)。その後、演算回路41は、特定したリソースアドレスを宛先として、より詳細にはリソースアドレスが特定する演算回路のアドレスを宛先として、リソースアドレスとともにID付きデータを送信する(ステップS95)。
 データID、フローID、及び、リソースアドレスは、いずれも、IPv6と同等の128bit長で生成される。各ID及びアドレスは、PrefixとSuffixから構成され、それぞれの長さがID又はアドレスの種類によって決定される。各ID及びアドレスは所定のアドレス管理装置で管理され、アドレス払い出しなどが行われる。
 データIDは、処理データの発生元の装置(監視カメラ,温度センサなど)に対して払いだされ、発生するデータに対して付与する。例えば、アドレス管理装置からデータIDとPrefix長が取得され、処理データが発生する度にアドレスがPrefixの範囲内でインクリメントされ、新しいデータにアドレスがアサインされる。処理データの発生元の装置は、自身で発生するデータ(つまり、データ本体ないし処理データ)の先頭にデータIDとPrefix長を載せて電子計算機710に伝送する。
 Prefixが満タン、ユーザからのリクエスト、データの変更、処理フローの変更などが発生するとアドレス管理装置から新たなデータアドレスとPrefix長が発行される。
 リソースアドレスは、例えば、電子計算機710のロケーション情報(DC名,フロー名,ラック番号,ユニット番号)に基づいて決定される。リソースアドレスは、その電子計算機710が属する計算機クラスターを特定するPrefix長8のアドレスと、そのクラスター内の各計算機を特定するSuffixからPrefix長16のアドレスと、を含んでもよい。リソースアドレスは、さらに、電子計算機710の中にある演算回路41のSuffixからPrefix長32のアドレスと、演算回路41の中に構成された仮想演算部(上記処理実行ブロックなど)のSuffixからPrefix長64のアドレスと、を備える。リソースアドレスは、リソース(演算回路)の追加の度にリソースのロケーションと種類に基づいて決定される。リソースが削除されると、アドレスは開放される。リソースを特定する情報はリソースアドレスと関連付けを行い,アドレス管理装置で管理される。リソースの情報には、クラスター,計算機,演算部,仮想演算部,処理内容,入出力規定などの各種情報が含まれる。このように、リソースアドレスは、演算回路を備える装置の所属を示す所属情報と、演算回路を備える装置を示す装置情報と、を備えるので、リソースアドレスを確認することで、演算回路がどこの位置にあるかなどが把握される。リソースアドレスは、全体としてIPv6により規定され、リソースアドレスの中の演算回路41のアドレスは、IPv4により規定されてもよい。
 フローアドレスは、フローで処理対象のデータのアドレスを含んでもよい。ユーザは、データをどのリソースを用いて、どの順番で処理するかを定義するとともに、処理フローの対象となるデータを定義する。この定義にフローアドレスが付与されフロー管理装置で保管される。
 処理設定テーブルは、図21に示すデータ生成装置1により生成される。データ生成装置1は、サーバコンピュータなどからなる。データ生成装置1は、プロセッサ1Aと、メインメモリ1Bと、不揮発性の記憶部1Cと、を備える。データ生成装置1は、ネットワークNWを介して電子計算機710と通信可能に接続されている。プロセッサ1Aは、記憶部1Cに記憶されているプログラムを実行することで、図22に示す、第1取得部1F、第2取得部1G、生成部1Hとして動作する。
 第1取得部1Fは、データIDと、フローIDとの対応関係を示すデータである第1対応表(図23)を取得する。第2取得部1Gは、フローIDとフロー情報との対応関係を示すデータである第2対応表を取得する。第1対応表及び第2対応表(図23)は、記憶部1Cに記憶され取得されていてもよいし、データ生成装置1の外部(例えば、上記2つの対応表などを任意の方法により管理するアドレス管理装置)からネットワークNWなどを介して取得されてもよい。生成部1Hは、図23に示すように、取得された第1対応表のデータIDと、取得された第2対応表のフロー情報とを、フローIDを介して対応させ、データIDとフロー情報とが対応付けられた処理設定テーブル(図19)を生成する。生成部1Hは、生成した処理設定テーブルを電子計算機710に供給し、記憶させる。処理設定テーブルにおいて、フローIDは省略されてもよい。この場合、演算回路41は、上記ステップS93及びS94の代わりに、ID付きデータに含まれるデータIDをキーとして処理設定テーブルを参照し、当該データIDに対応するフロー情報に含まれるリソースアドレスのうち、ID付きデータに含まれるシーケンス番号に対応するリソースアドレスを特定する。
 図23に示すように、異なるデータIDに共通のフローIDが対応付くことがある。より具体的には、データIDが特定するデータが、画像データなど、実行したい処理は同じであるが中身の異なるデータである場合、データIDは異なるが、処理のフローは同じになることがある。上記の処理設定テーブルでは、フローIDを介してデータIDとフロー情報とが対応付くので、同じフロー情報に異なるデータIDを対応付けられるので、テーブルデータの容量削減が図られる。
 なお、演算回路41は、ID付きデータのデータIDが処理設定テーブルにエントリーされていない場合、データ生成装置1に問い合わせを行って、フローIDなどを取得して、処理設定テーブルにエントリーさせてもよい。演算回路41は、ID付きデータのデータIDが処理設定テーブルにエントリーされていない場合、その旨を制御部20に通知し、制御部20が、上記問い合わせなどを行ってもよい。
 この実施の形態では、リソースアドレスを使うことで各演算回路のロケーション情報を明確に表せることで,連続処理を実行する際の演算回路をもっとも最適な配置を見つけることが可能となる。また、各処理部分での処理するデータアドレスのみを監視することでデータの処理順番及び処理過程とデータの流れをトレース可能(データトレーサビリティ)にすることで高セキュリティ,安易なトラブルシューティング,可視化など可能となる。また、IPv6と同等なアドレス管理機構を利用することでネットワーク経由で流れてくるデータを受け渡す処理を行う部分の処理を軽量化可能となることで大容量のデータを低遅延で処理することが可能となる。
[変形例など]
 上記のような処理データに対して複数の処理を実行する複数の演算回路は、FPGAなどの集積回路であってもよいし、その中の一部の仮想的な回路であってもよいし、CPUなどのプロセッサであってもよい。演算回路同士は、バス以外のネットワークを介して接続されてもよい。演算回路は、ルータなどに接続されたものであってもよい。なお、一部の演算回路の処理結果については、直接他の演算回路に入力するのではなく、記憶部30に一旦記憶されてもよい。
[上記各実施形態を一例とする構成、変形例など]
(A)(1)電子計算機は、例えば、処理データに対して複数の処理を順次実行していく複数の演算回路と、プログラムを実行し、前記複数の処理を前記複数の演算回路に順次実行させる制御を行う制御部と、を備えればよい。複数の処理は、分岐処理、並列処理を含む。演算回路は、上記のように、FPGAなどの集積回路により構成された演算回路41のほか、CPU、GPUなどのプロセッサを含む。プロセッサは、プログラムを実行することで処理を行うものにより実現されてもよい。演算回路は、演算回路41の一部である処理実行ブロック41C-1などの仮想演算部により実現されてもよい。
 例えば、上記の複数の演算回路のそれぞれには、演算回路IDが付されていればよい。演算回路IDは、例えば、演算回路を識別するものであればよい。演算回路IDは、上記リソースアドレスにより実現されてもよい。
 例えば、上記複数の演算回路は、前記複数の処理のうちの第1処理を実行する第1演算回路と、前記複数の処理のうち前記第1処理の処理結果に対して処理を行う第2処理を実行する第2演算回路と、を含み、前記第1演算回路は、前記第1処理の処理結果を、前記第2演算回路の前記演算回路IDを宛先として送信する。
 以上のような構成により、第1演算回路から第2演算回路への第1処理の処理結果の送信に際して、例えば制御部による転送が介在しないので、スループットの向上が期待される。
 複数の演算回路は、それぞれが別個の筐体に収容されたものであってもよく、電子計算機は、複数の筐体からなるシステムにより実現されてもよい。
(2)電子計算機は、前記制御部の主記憶装置をさらに備え、前記第1処理の処理結果は、前記主記憶装置を介さずに前記第2演算回路に送信されてもよい。これにより、主記憶装置への処理結果の転送がなくなり、よりスループットが向上する。
(3)例えば、伝計算機は、前記複数の演算回路にそれぞれ接続された複数の第1伝送回路と、前記複数の第1伝送回路と前記制御部とが接続された第1通信線と、をさらに備えてもよい。前記複数の第1伝送回路は、前記第1演算回路に接続された第1-1伝送回路と、前記第2演算回路に接続された第1-2伝送回路と、を含んでもよい。前記第1-1伝送回路は、前記第1処理の処理結果を前記第2演算回路の前記演算回路IDとともに前記第1通信線に送信し、前記第1-2伝送回路は、前記第2演算装置の前記演算回路IDとともに伝送された前記第1処理の処理結果を前記第1通信線から受信し、受信した前記処理結果を前記第2演算回路に伝送してもよい。演算回路が、上記処理実行ブロックなどである場合、伝送回路を、図6の振り分けブロック41B-1、終了判定ブロック41I-1と、伝送回路42-1などとを含んだものとしてとらえてもよい。このような構成により、処理結果の転送が容易に実現される。
(4)前記複数の演算回路は、前記複数の処理のうち前記第2処理の処理結果に対して処理を行う第3処理を実行する第3演算回路を備えてもよい。前記複数の第1伝送回路は、前記第3演算回路に接続された第1-3伝送回路を備えてもよい。前記第1-2伝送回路は、前記第2処理の処理結果を前記第3演算回路の前記演算回路IDとともに前記第1通信線に送信してもよい。前記第1-3伝送回路は、前記第3演算装置の前記演算回路IDとともに伝送された前記第2処理の処理結果を前記第1通信線から受信し、受信した前記処理結果を前記第3演算回路に伝送してもよい。前記第1処理の処理結果には、前記第1-1伝送回路から前記第1通信線に送信される段階から、前記第2演算回路の前記演算回路IDと、前記第3演算回路の前記演算回路IDとが付与されていてもよい。これにより、演算回路IDを削除していくことで、処理結果を順次転送できる。
(5)電子計算機は、前記第2演算回路に接続され、かつ、第2通信線と接続された第2伝送回路をさらに備えてもよい。前記第2演算回路には、前記演算回路IDである第1回路IDと、当該第1回路IDとは異なる第2回路IDと、が付されていてもよい。前記第2演算回路は、前記第2処理の処理対象のデータが、前記第1通信線から前記第1-2伝送回路を介して前記第1回路IDとともに入力されるか、前記第2通信線から前記第2伝送回路を介して前記第2回路IDとともに入力されるように構成されていてもよい。前記第2演算回路は、前記処理対象のデータに対して前記第2処理を実行して得たデータ(処理結果)を、前記第1回路IDが入力されているときには、前記第1-2伝送回路を介して前記第1通信線に送信し、前記第2回路IDが入力されているときには、前記第2伝送回路を介して前記第2通信線に送信してもよい。これにより、処理結果を、処理対象のデータの供給元の伝送線に正しく返送できる。
(6)前記第2演算回路は、前記第2処理を含む複数種類の処理を実行可能であり、前記処理結果には、前記第2演算回路で実行する処理を特定可能なデータが付与されており、前記第2演算回路は、前記処理結果に付与されたデータに基づいて特定される処理を前記処理結果に対して実行する、ようにしてもよい。これにより、第2演算回路に複数の処理を実行させつつ、スループットの向上が得られる。
(7)前記第2演算回路は、前記データに基づいてテーブルを参照して、実行する処理を特定する。これにより、処理結果とともに転送されるデータのデータ量が削減される。
(8)前記データは、処理の分岐又は複数の処理の並列実行を指定するデータを含んでもよい。これにより、種々の処理に対してスループットの向上が実現される。
(9)前記第1演算回路は、第1処理対象データに対する前記第1処理と、第2処理対象データに対する前記第1処理と、の処理要求が競合したときに、所定の優先順位に従って、両第1処理のうちの一方を優先的に実行する、ようにしてもよい。これにより、複数の処理要求に対して、適切な処理が行われる。
(B)(1)データ生成装置は、例えば、処理対象である処理データに対して複数の処理を順次実行していく複数の演算回路間で転送される前記処理データの宛先を決定するためのテーブルデータを生成する。データ生成装置は、前記処理データを識別するデータIDと前記処理データをどの演算回路でどの順番で処理するかを特定するフローを識別するフローIDとの第1対応表を取得する第1取得部と、前記フローIDと当該フローIDが識別するフローの内容を前記宛先の順序(より具体的には、宛先及びその順序)により特定するフロー情報との第2対応表を取得する第2取得部と、を備える。さらに、データ生成装置は、取得された前記第1対応表のデータIDと、取得された前記第2対応表の前記フロー情報とを、フローIDを介して対応させ、前記データIDと前記フロー情報とが対応付けられた前記テーブルデータを生成する。このような構成により、複数の演算回路間で転送されるデータの宛先を決定するためのテーブルデータを好適に生成することができる。また、コンピュータを上記各部として動作させるプログラムは、例えば、不揮発性の記憶媒体、より具体的には、コンピュータが読み取り可能な非一時的な記憶媒体に格納されればよい。
(2)前記生成部は、前記データIDと前記フローIDと前記フロー情報とが対応付けられた前記テーブルデータを生成する、ようにしてもよい。これにより、テーブルデータ上でフローを特定できる。前記第1対応表は、同じフローIDに対して対応付けられた異なるデータIDを含んでもよい。これにより、異なるデータIDに対して同じフロー情報が対応づいてテーブルデータのデータ量が増えるのを抑制できる。
(3)前記宛先は、前記演算回路を備える装置の所属を示す所属情報と、前記演算回路を備える装置を示す装置情報と、を備えてもよい。装置情報は、演算回路が仮想演算部である場合には、当該仮想演算部が設けられた演算回路を特定する情報であってもよい。このような構成により、宛先を見ることで、その演算回路の位置などを特定できる。
(4)前記生成部は、生成した前記テーブルデータを、前記複数の演算回路のうちの少なくとも1つを備える電子計算機に送信してもよい。
(C)電子計算機は、処理対象である処理データに対して複数の処理を順次実行していく複数の演算回路のうち少なくとも1つを備えてもよい。前記複数の演算回路の少なくとも1つは、前記処理データを、前記処理データを識別するデータID、及び、複数の処理のうちのどの処理まで実行されたかを示すシーケンス番号とともに受信してもよい。また前記1つは、前記処理データを処理したときに前記シーケンス番号をインクリメントしてもおい。また、上記1つは、上記データIDとフロー情報とが対応付けられた前記テーブルデータ(上記(B)参照)を参照し、前記データIDに対応するフロー情報に含まれる宛先のうち、インクリメントした前記シーケンス番号に対応する宛先を取得してもよい。上記1つは、取得した宛先の演算回路に、自身の処理結果を転送してもよい。シーケンス番号により次の宛先が好適に特定される。
[本発明の範囲]
 本発明は、上記の実施の形態及び変形例に限定されるものではない。例えば、本発明には、本発明の技術思想の範囲内で当業者が理解し得る、上記の実施の形態及び変形例に対する様々な変更が含まれる。上記実施の形態及び変形例に挙げた各構成は、矛盾の無い範囲で適宜組み合わせることができる。また、上記の各構成のうちの任意の構成を削除することも可能である。
1…データ生成装置、10…電子計算機、20…制御部、30…記憶部、31…主記憶装置、32…補助記憶装置、40…演算部、41…演算回路、42…伝送回路、43…伝送回路、50…通信線、60…通信線、110…電子計算機、210…電子計算機、410…電子計算機、510…電子計算機、610…電子計算機、710…電子計算機。

Claims (5)

  1.  処理データに対して複数の処理を順次実行する複数の演算回路間で転送されるデータの宛先を決定するためのテーブルデータを生成するデータ生成装置であって、
     前記処理データを識別するデータIDと前記処理データをどの演算回路でどの順番で処理するかを特定するフローを識別するフローIDとの第1対応表を取得する第1取得部と、
     前記フローIDと当該フローIDが識別するフローの内容を前記宛先の順序により特定するフロー情報との第2対応表を取得する第2取得部と、
     取得された前記第1対応表のデータIDと、取得された前記第2対応表の前記フロー情報とを、フローIDを介して対応させ、前記データIDと前記フロー情報とが対応付けられた前記テーブルデータを生成する生成部と、
     を備えるデータ生成装置。
  2.  前記生成部は、前記データIDと前記フローIDと前記フロー情報とが対応付けられた前記テーブルデータを生成する、
     請求項1に記載のデータ生成装置。
  3.  前記第1対応表では、同じフローIDに対して異なるデータIDが対応付けられている、
     請求項1又は2に記載のデータ生成装置。
  4.  前記宛先は、前記演算回路を備える装置の所属を示す所属情報と、前記演算回路を備える装置を示す装置情報と、を備える、
     請求項1から3のいずれか1項に記載のデータ生成装置。
  5.  処理データに対して複数の処理を順次実行する複数の演算回路間で転送されるデータの宛先を決定するためのテーブルデータを生成するコンピュータに、
     前記処理データを識別するデータIDと前記処理データをどの演算回路でどの順番で処理するかを特定するフローを識別するフローIDとの第1対応表を取得する第1取得ステップと、
     前記フローIDと当該フローIDが識別するフローの内容を前記宛先の順序により特定するフロー情報との第2対応表を取得する第2取得ステップと、
     取得された前記第1対応表のデータIDと、取得された前記第2対応表の前記フロー情報とを、フローIDを介して対応させ、前記データIDと前記フロー情報とが対応付けられた前記テーブルデータを生成する生成ステップと、
     を実行させるプログラム。
PCT/JP2021/041752 2021-11-12 2021-11-12 データ生成装置およびプログラム WO2023084740A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/041752 WO2023084740A1 (ja) 2021-11-12 2021-11-12 データ生成装置およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/041752 WO2023084740A1 (ja) 2021-11-12 2021-11-12 データ生成装置およびプログラム

Publications (1)

Publication Number Publication Date
WO2023084740A1 true WO2023084740A1 (ja) 2023-05-19

Family

ID=86335435

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/041752 WO2023084740A1 (ja) 2021-11-12 2021-11-12 データ生成装置およびプログラム

Country Status (1)

Country Link
WO (1) WO2023084740A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0567222A (ja) * 1991-09-06 1993-03-19 Nec Corp 関数呼出し処理方式
JP2010009200A (ja) * 2008-06-25 2010-01-14 Fuji Xerox Co Ltd 処理フロー制御プログラム、処理フロー制御装置及びデータ処理システム
WO2020136787A1 (ja) * 2018-12-27 2020-07-02 三菱電機株式会社 データ処理装置、データ処理システム、データ処理方法及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0567222A (ja) * 1991-09-06 1993-03-19 Nec Corp 関数呼出し処理方式
JP2010009200A (ja) * 2008-06-25 2010-01-14 Fuji Xerox Co Ltd 処理フロー制御プログラム、処理フロー制御装置及びデータ処理システム
WO2020136787A1 (ja) * 2018-12-27 2020-07-02 三菱電機株式会社 データ処理装置、データ処理システム、データ処理方法及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
R. TAKANOT. KUDOH: "Flow-centric computing leveraged by photonic circuit switching for the post-moore era", 2016 TENTH IEEE/ACM INTERNATIONAL SYMPOSIUM ON NETWORKS-ON-CHIP (NOCS, 2016, pages 1 - 3, XP032973426, DOI: 10.1109/NOCS.2016.7579339

Similar Documents

Publication Publication Date Title
CN105511954B (zh) 一种报文处理方法及装置
CN107612840B (zh) 一种四层负载均衡设备的数据处理方法及装置
US10146848B2 (en) Systems and methods for autonomous, scalable, and distributed database management
US9866479B2 (en) Technologies for concurrency of cuckoo hashing flow lookup
KR101455899B1 (ko) 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서
US10630587B2 (en) Shared memory communication in software defined networking
CN106817236B (zh) 虚拟网络功能的配置方法和装置
US20140068625A1 (en) Data processing systems
WO2017084331A1 (zh) 互连电路的数据处理装置和方法
CN109088957B (zh) Nat规则管理的方法、装置和设备
US10169279B2 (en) Input/output control device, input/output control system, and input/output control method for conversion of logical address of instruction into local address of device specified in instruction
CN109698845B (zh) 数据传输的方法、服务器、卸载卡及存储介质
WO2017000094A1 (zh) 一种数据存储方法、装置和系统
US20240022501A1 (en) Data Packet Sending Method and Device
WO2023084740A1 (ja) データ生成装置およびプログラム
WO2023084739A1 (ja) 電子計算機
US20130110968A1 (en) Reducing latency in multicast traffic reception
US20160261526A1 (en) Communication apparatus and processor allocation method for the same
CN117240935A (zh) 基于dpu的数据平面转发方法、装置、设备及介质
US20230109396A1 (en) Load balancing and networking policy performance by a packet processing pipeline
US10791088B1 (en) Methods for disaggregating subscribers via DHCP address translation and devices thereof
CN111147611B (zh) 参考附加网络地址转换表提供快速分组转发的电子设备
KR101578246B1 (ko) 고속 서열 분석을 위한 병렬 Intra-Query 라우팅 알고리즘
CN114039894B (zh) 一种基于矢量包的网络性能优化方法、系统、设备、介质
KR101634672B1 (ko) 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램

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

Country of ref document: EP

Kind code of ref document: A1