WO2013018230A1 - データ処理システムおよびデータ処理方法 - Google Patents
データ処理システムおよびデータ処理方法 Download PDFInfo
- Publication number
- WO2013018230A1 WO2013018230A1 PCT/JP2011/067903 JP2011067903W WO2013018230A1 WO 2013018230 A1 WO2013018230 A1 WO 2013018230A1 JP 2011067903 W JP2011067903 W JP 2011067903W WO 2013018230 A1 WO2013018230 A1 WO 2013018230A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- thread
- data processing
- queue
- real
- Prior art date
- Legal status (The legal status 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 status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Definitions
- the present invention relates to a data processing system and a data processing method for processing data.
- a multitasking OS (Operating System) capable of sharing one piece of hardware by a plurality of software.
- a browser and a mailer can be activated simultaneously on a personal computer having only one network adapter.
- transmission of login information by a browser and transmission of electronic mail by a mailer are performed simultaneously.
- the OS when the OS receives a data transmission request from the browser and the mailer, the OS temporarily stores the transmission request in a communication buffer that is a temporary area on the main memory. Thereafter, the device driver activated by a timer interrupt or the like takes out data from the communication buffer and transmits using the network adapter.
- the communication buffer is realized, for example, by a FIFO (First In First Out) queue.
- the queue is implemented by a ring buffer, for example.
- data in a communication buffer may be destroyed when a plurality of CPUs (Central Processing Units) access the communication buffer on the memory at the same time. For this reason, data is protected by performing exclusive control between CPUs.
- CPUs Central Processing Units
- Exclusive control includes MUTEX (Mutual EX exclusion), semaphore, spin lock, and the like.
- MUTEX Motual EX exclusion
- semaphore Semaphore
- spin lock spin lock
- each CPU exclusively acquires an access right to the queue before writing to the queue, and abandons the access right after writing data.
- each CPU stands by (waiting for exclusion) when acquisition of the access right fails, and writes data after acquiring the access right.
- JP 2006-301894 A Japanese Patent Laid-Open No. 10-107853
- An object of the present invention is to provide a data processing system and a data processing method capable of improving the throughput of a thread that requires real-time performance in order to solve the above-described problems caused by the prior art.
- a first thread executed by a first data processing device included in a plurality of data processing devices outputs first data
- a second thread executed by a second data processing device included in the plurality of data processing devices outputs second data
- one data processing device of the plurality of data processing devices includes the first data processing device and A data processing system for setting a writing order of the first data and the second data to a memory shared by the second data processing device based on a real-time constraint or a communication protocol of the first thread and the second thread;
- a data processing method is proposed.
- FIG. 1-1 is a diagram of an example of the data processing system according to the embodiment.
- FIG. 1-2 is a diagram of another example of the data processing system according to the embodiment.
- FIG. 2 is a diagram illustrating a hardware configuration example of the data processing system.
- FIG. 3 is a diagram illustrating a configuration example of the management unit.
- FIG. 4A is a diagram illustrating an example of a process table.
- FIG. 4B is a diagram illustrating an example of the constraint table.
- FIG. 4C is a diagram illustrating an example of the reliability table.
- FIG. 5 is a flowchart illustrating an example of queue management processing by the management unit.
- FIG. 6 is a flowchart illustrating an example of sort policy determination processing.
- FIG. 5 is a flowchart illustrating an example of queue management processing by the management unit.
- FIG. 6 is a flowchart illustrating an example of sort policy determination processing.
- FIG. 5 is a flowchart illustrating an example of queue management processing
- FIG. 7 is a flowchart illustrating an example of a process for determining whether there is an association between threads.
- FIG. 8 is a flowchart illustrating an example of a process for determining whether there is a real-time constraint.
- FIG. 9 is a flowchart illustrating an example of a process for determining whether or not reliability is necessary.
- FIG. 10A is a diagram illustrating an example of queue management processing (part 1);
- FIG. 10B is a diagram (part 2) of an example of the queue management process.
- FIG. 10C is a diagram (part 3) of an example of the queue management process.
- FIG. 10D is a diagram illustrating an example of queue management processing (part 4).
- FIG. 10-5 is a diagram (part 5) illustrating an example of the queue management process.
- FIG. 1-1 is a diagram of an example of the data processing system according to the embodiment. As illustrated in FIG. 1A, the data processing system 100 according to the embodiment includes data processing devices 111 and 112, a memory 130, and a management unit 140.
- the data processing device 111 is a first data processing device that processes data.
- the data processing device 112 is a second data processing device that processes data.
- Each of the data processing devices 111 and 112 is, for example, a CPU.
- the thread 121 is a first thread that is executed by the data processing device 111.
- the thread 122 is a second thread that is executed by the data processing device 112.
- the memory 130 includes local queues 131 and 132 and a shared queue 135.
- the local queue 131 is a first local queue that stores first data generated based on the execution of the thread 121.
- the local queue 132 is a second local queue that stores second data generated based on the execution of the thread 122. In this manner, the memory 130 is provided with the local queues 131 and 132 corresponding to the data processing devices 111 and 112, respectively.
- the portion of the shared queue 135 in the memory 130 is a memory (common queue) shared by the data processing device 111 and the data processing device 112.
- the shared queue 135 is a queue that sorts and stores the first data and the second data stored in the local queue 131 and the local queue 132 based on the priority.
- the management unit 140 sets the priority (write order) for accessing the shared queue 135 of the threads 121 and 122 based on the real-time constraints of the threads 121 and 122.
- the management unit 140 includes a determination unit that sets the priority of a thread having a real-time constraint to be higher than the priority of a thread that does not have a real-time constraint.
- the management unit 140 may set the priority based on the time stamp when the threads 121 and 122 do not have real-time constraints.
- the management unit 140 may set the priority for accessing the shared queue 135 of the threads 121 and 122 based on the communication protocol of the threads 121 and 122.
- the management unit 140 includes a determination unit that sets the priority of a thread whose communication protocol is a predetermined communication protocol higher than the priority of a thread whose communication protocol is not a predetermined communication protocol.
- the management unit 140 may set the priority based on the time stamp when the communication protocol of the threads 121 and 122 is not a predetermined communication protocol.
- FIG. 1-2 is a diagram of another example of the data processing system according to the embodiment. 1-2, parts similar to those depicted in FIG. 1-1 are given the same reference numerals and description thereof is omitted.
- the data processing system 100 may include a data processing device 113 in addition to the configuration illustrated in FIG. 1-1.
- the data processing system 100 may include three data processing devices (CPUs).
- the data processing system 100 may include four or more data processing devices (CPUs).
- the thread 123 is a thread executed by the data processing device 113.
- the memory 130 is provided with a local queue 133 corresponding to the data processing device 113 in addition to the configuration shown in FIG.
- the local queue 133 is a local queue that stores data generated based on the execution of the thread 123.
- the data processing system 100 may include a communication unit 150 in addition to the configuration shown in FIG. 1-1.
- the communication unit 150 is a network adapter that sequentially reads data written to the shared queue 135 and transmits the read data to another communication device.
- the communication unit 150 is a network adapter such as carrier communication or ad hoc communication.
- the shared queue 135 can be applied to a communication buffer for waiting for transmission by the communication unit 150, for example.
- the shared queue 135 is not limited to a communication buffer, but can be applied to a buffer waiting for voice output by a speaker or the like.
- the data processing system 100 shown in FIG. 1-2 will be mainly described below.
- FIG. 2 is a diagram illustrating a hardware configuration example of the data processing system.
- the data processing system 100 includes CPUs 211 to 21n (n is a natural number of 2 or more), a main memory 220, an auxiliary memory 230, a user interface 240, and a communication interface 250.
- the CPUs 211 to 21n, the main memory 220, the auxiliary memory 230, the user interface 240, and the communication interface 250 are connected by a bus 201.
- the CPUs 211 to 21n are multiprocessors that control the entire data processing system 100.
- the main memory 220 is, for example, a RAM (Random Access Memory).
- the main memory 220 is used as a work area for the CPUs 211 to 21n.
- the auxiliary memory 230 is, for example, a nonvolatile memory such as a hard disk or an optical disk.
- the auxiliary memory 230 stores various programs for operating the data processing system 100. The program stored in the auxiliary memory 230 is loaded into the main memory 220 and executed by the CPUs 211 to 21n.
- the user interface 240 includes, for example, an input device that receives an operation input from the user, an output device that outputs information to the user, and the like.
- the input device can be realized by a key (for example, a keyboard) or a remote controller, for example.
- the output device can be realized by, for example, a display or a speaker. Further, an input device and an output device may be realized by a touch panel or the like.
- the user interface 240 is controlled by the CPUs 211 to 21n.
- the communication interface 250 is a communication interface that communicates with the outside of the data processing system 100 by, for example, wired or wireless.
- the communication interface 250 is controlled by the CPUs 211 to 21n.
- FIG. 1-1 and FIG. 1-2 can be realized by the CPUs 211 to 21n, for example.
- the memory 130 can be realized by the main memory 220, for example.
- the management unit 140 can be realized, for example, as an OS or application function executed by the CPUs 211 to 21n.
- the communication unit 150 can be realized by the communication interface 250, for example.
- FIG. 3 is a diagram illustrating a configuration example of the management unit.
- the management unit 140 includes an extraction unit 310, a storage unit 320, a policy determination unit 330, a process table 331, a constraint table 332, a reliability table 333, and a sort writing unit 340. It is equipped with.
- the extraction unit 310, the policy determination unit 330, and the sort writing unit 340 can be realized by any one of the CPUs 211 to 21n shown in FIG.
- storage part 320 is realizable with the main memory 220 shown, for example in FIG.
- the process table 331, the constraint table 332, and the reliability table 333 are stored in, for example, the auxiliary memory 230 illustrated in FIG.
- the process table 331, the constraint table 332, and the reliability table 333 may be stored in advance at the time of system design, or may be stored or updated at the time of application installation.
- the extraction unit 310 extracts data one by one from the local queue in which data is stored among the local queues 131 to 133 (each local queue), and stores the data in the storage unit 320. Further, when the origination queue of the data extracted from the storage unit 320 of the local queues 131 to 133 is notified from the sort writing unit 340, the extraction unit 310 receives the data stored in the notified origin queue as 1 Are read out and written into the storage unit 320. Thus, the storage unit 320 stores data from the local queues 131 to 133 one by one.
- the policy determination unit 330 is a determination unit that determines a sort policy for each combination of each data stored in the storage unit 320. For example, it is assumed that data A, B, and C are stored in the storage unit 320. Policy determination unit 330 determines a sort policy for each combination of data A, B, data B, C, and data A, C. The policy determination unit 330 notifies the sort writing unit 340 of the determined sort policy of each combination.
- the sort writing unit 340 sorts the data of each combination in the storage unit 320 based on the sort policy of each combination notified from the policy determination unit 330. For example, according to each sort policy notified from the policy determination unit 330, the data A is the head in the combination of the data A and B, the data B is the head in the combination of the data B and C, and the data C is the head in the combination of the data A and C. Suppose you are at the top.
- the sort writing unit 340 determines the data A that is the head of two of the three combinations as the data A, B, and C having the highest priority.
- the sort writing unit 340 retrieves the data A determined as the data having the highest priority from the storage unit 320 and writes it in the shared queue 135.
- each data stored in the storage unit 320 may be set with a priority set by each thread. Then, the sort writing unit 340 changes the priority of each data stored in the storage unit 320 based on the sort policy notified from the policy determination unit 330. For example, the sort writing unit 340 increases the priority of the data of the thread having the real-time restriction when the sort policy giving priority to the data of the thread having the real-time restriction is notified. And the sort writing part 340 may sort each data memorize
- the priority (write order) for accessing the shared queue 135 of the threads 121 to 123 can be set based on the real-time restrictions and the communication protocol of the threads 121 to 123. Further, the management unit 140 may discard the data exceeding a certain amount when the data in the local queues 131 to 133 exceeds a certain amount.
- FIG. 4A is a diagram illustrating an example of a process table.
- a process table 331 illustrated in FIG. 4A is an example of the process table 331 illustrated in FIG.
- the process table 331 includes “program image”, “process ID”, “parent process ID”, “process group ID”, “use protocol”, and “use port number”. As an item.
- Each row of the process table 331 indicates each process executed by the data processing devices 111 to 113.
- Process image indicates the name of the program executing the process. Note that the process table 331 may include items such as an ID of a program executing a process instead of the “program image”.
- Process ID is an ID for identifying a process.
- the “parent process ID” is an ID for identifying the parent process of the process.
- Process group ID is an ID for identifying a process group to which a process belongs.
- User protocol is a communication protocol used to transmit data generated by a process.
- User port number is a port number used for transmission of data generated by the process.
- the process having “process ID” “1240” shown in the first line is a process generated from the process having “process ID” “1164”. Further, the process with “process ID” “1240” shown in the first line is a process that does not perform communication, and “use protocol” and “use port number” are not associated with each other.
- the process with “process ID” “1204” shown in the second line is a process generated from the process with “process ID” “1240” shown in the first line.
- the process with “process ID” “1204” shown in the second line is created, it is set as the root of a new process group with “process group ID” “1204”.
- the process with the “process ID” “1732” indicated by the third line is a process generated from the process with the “process ID” “1204” indicated by the second line. Further, “TCP” of “used protocol” and “1068” of “used port number” are assigned to the process whose “process ID” shown in the third line is “1732” for communication.
- the process with “Process ID” “5056” shown in the fourth line is a process generated from the process with “Process ID” “1204” shown in the second line. Further, “TCP” of “used protocol” and “1391” of “used port number” are assigned to the process whose “process ID” shown in the fourth line is “5056”.
- Fig. 4-2 is a diagram showing an example of a constraint table.
- the constraint table 332 illustrated in FIG. 4B is an example of the constraint table 332 illustrated in FIG. As illustrated in FIG. 4B, the constraint table 332 includes “program image”, “use protocol”, and “restriction flag” as items. Each row of the constraint table 332 indicates each process executed by the data processing devices 111 to 113.
- “Program image” and “used protocol” correspond to “program image” and “used protocol” in the process table 331 shown in FIG. 4-1.
- the “constraint flag” is information indicating whether or not the process has a real-time constraint. Specifically, when the “constraint flag” is “0”, it indicates that the process has no real-time constraint. When the “constraint flag” is “1”, it indicates that the process has a real-time constraint.
- Fig. 4-3 is a diagram showing an example of the reliability table.
- a reliability table 333 illustrated in FIG. 4C is an example of the reliability table 333 illustrated in FIG. As illustrated in FIG. 4C, the reliability table 333 includes “used protocol” and “reliability flag” as items. Each row of the reliability table 333 indicates a communication protocol used by each process executed by the data processing devices 111 to 113.
- “Use protocol” corresponds to “Use protocol” in the process table 331 shown in FIG. 4-1.
- the “reliability flag” is information indicating whether or not the reliability of the communication protocol is necessary. Specifically, when the “reliability flag” is “1”, it indicates that the communication protocol requires reliability. Further, when the “reliability flag” is “0”, it indicates that no reliability is required for the communication protocol.
- FIG. 5 is a flowchart illustrating an example of queue management processing by the management unit.
- the management unit 140 executes the steps shown in FIG. First, the management unit 140 determines whether or not it is the interrupt timing of the queue management processing by the management unit 140 (step S501), and waits until the interrupt timing is reached (step S501: No loop).
- step S501 when the interrupt timing comes (step S501: Yes), the extraction unit 310 determines whether data is written in at least one of the local queues (local queues 131 to 133) (step S502). . If no data is written in any of the local queues (step S502: No), the management unit 140 returns to step S501.
- step S502 when data is written in at least one of the local queues (step S502: Yes), the extraction unit 310 extracts data from each local queue one by one and writes it to the storage unit 320 (step S502). S503).
- the policy determination unit 330 determines a sort policy for each combination of data written in the storage unit 320 (step S504). Sort policy determination processing will be described later (see, for example, FIG. 6).
- the sort writing unit 340 extracts the most prioritized data from the storage unit 320 from the storage unit 320 and writes it to the shared queue 135 (step S505).
- the extraction unit 310 extracts one piece of data from the origin queue of the data extracted in step S505 and writes it in the storage unit 320 (step S506).
- step S507 determines whether or not to end the interrupt process. If the interrupt process is not terminated (step S507: No), the management unit 140 returns to step S504. When the interrupt process is to be ended (step S507: Yes), the management unit 140 returns to step S501.
- the management unit 140 can move the data written in the local queues 131 to 133 by the threads 121 to 123 to the shared queue 135 in the order based on the sort policy.
- FIG. 6 is a flowchart illustrating an example of sort policy determination processing.
- the policy determination unit 330 determines the sort policy by executing, for example, each step shown in FIG. 6 for each combination of data in the storage unit 320 in step S504 shown in FIG. First, the policy determination unit 330 determines whether or not there is a relationship between threads of each data related to the target combination (step S601). The process for determining whether or not there is an association between threads will be described later (see, for example, FIG. 7).
- step S601 when there is a relationship between threads (step S601: Yes), the process proceeds to step S609.
- the policy determination unit 330 determines whether or not there is a real-time constraint for each thread of each data related to the target combination (step S602). The process for determining the presence or absence of real-time constraints will be described later (see, for example, FIG. 8).
- the policy determination unit 330 determines whether or not only one of the threads of each data related to the target combination has a real-time constraint (step S603). . If only one thread has a real-time constraint (step S603: Yes), the policy determination unit 330 determines the sort policy of the target combination as a sort policy that prioritizes the thread having the real-time constraint (step S604), End the process.
- step S603 when both threads have real-time restrictions or both threads do not have real-time restrictions (step S603: No), the policy determination unit 330 proceeds to step S605. That is, the policy determination unit 330 determines whether or not both threads of the threads of each data related to the target combination have real-time restrictions based on the determination result in step S602 (step S605).
- step S605 when there is no real-time restriction in both threads (step S605: No), the policy determination unit 330 proceeds to step S609.
- step S605: Yes the policy determination unit 330 determines whether or not reliability is required for each thread of each data related to the target combination (step S606). The process for determining whether or not reliability is necessary will be described later (for example, see FIG. 9).
- the policy determination unit 330 determines whether or not only one of the threads of each data related to the target combination needs to be reliable (step S607). . If only one thread requires reliability (step S607: Yes), the policy determination unit 330 determines the sort policy of the target combination as a sort policy that prioritizes threads that require reliability (step S608). Then, a series of processing is completed.
- step S607 if each thread requires reliability or each thread does not require reliability (No in step S607), the policy determination unit 330 proceeds to step S609. That is, the policy determination unit 330 determines the sort policy of the target combination as a sort policy that prioritizes threads with old time stamps (step S609), and ends a series of processing.
- the policy determination unit 330 can determine a sort policy for each combination of data in the storage unit 320 based on the presence / absence of association between threads, the presence / absence of real-time constraints, and the necessity of reliability. .
- a sort policy that prioritizes data of a thread that requires reliability can be selected.
- the data of a thread that requires reliability can be preferentially moved to the shared queue 135. For this reason, the throughput of the thread
- the sort policy determination process is not limited to this.
- the determination based on the presence / absence of association between threads may be omitted.
- the determination based on the presence or absence of real-time constraints may be omitted.
- the determination based on the necessity of reliability may be omitted.
- FIG. 7 is a flowchart showing an example of a process for determining whether there is an association between threads.
- the policy determination unit 330 determines whether or not there is an association between threads in step S601 illustrated in FIG. 6 by executing, for example, each step illustrated in FIG. First, the policy determination unit 330 acquires the “used protocol” and “port number” of each data from the header of each data related to the target combination (step S701).
- the policy determination unit 330 identifies the “parent protocol ID” of each data from the “used protocol” and “port number” acquired in step S701 and the process table 331 (step S702). Specifically, the policy determination unit 330 specifies “parent process ID” corresponding to the acquired combination of “used protocol” and “port number” from the process table 331.
- the policy determination unit 330 determines whether or not the “parent process ID” of each data specified in step S702 is the same (step S703). If the “parent process ID” of each data is the same (step S703: Yes), the policy determination unit 330 determines that each thread of each data related to the target combination is related (step S704), and the series Terminate the process. When the “parent process ID” of each data is not the same (step S703: No), the policy determining unit 330 determines that each thread of each data related to the target combination is not related (step S705). End the process.
- the policy determination unit 330 can determine whether or not each thread of each data related to the target combination is related. Note that the process of determining whether each thread is related based on whether the “parent process ID” of each data is the same has been described, but the process for determining whether each thread is related is not limited thereto. For example, whether or not each thread is related may be determined based on whether or not the “process group ID” of each data is the same.
- FIG. 8 is a flowchart showing an example of a process for determining whether there is a real-time constraint.
- the policy determining unit 330 determines whether or not there is a real-time constraint for each thread by executing, for example, each step illustrated in FIG. 8 in step S602 illustrated in FIG. First, the policy determination unit 330 acquires the “used protocol” and “port number” of each data from the header of each data related to the target combination (step S801).
- the policy determination unit 330 identifies the “program image” of each data from the “use protocol” and “port number” acquired in step S801 and the process table 331 (step S802). Specifically, the policy determination unit 330 identifies a “program image” corresponding to the acquired combination of “used protocol” and “port number” from the process table 331.
- the policy determination unit 330 acquires the “use protocol” acquired in step S801, the “program image” specified in step S802, and the “constraint flag” of each data from the constraint table 332 (step S803), and a series of steps. End the process. Specifically, the policy determination unit 330 acquires a “restriction flag” corresponding to a combination of “used protocol” and “program image” from the restriction table 332.
- the policy determination unit 330 can acquire a “constraint flag” indicating the presence / absence of a real-time constraint for each thread of each data related to the target combination, and determine the presence / absence of the real-time constraint.
- FIG. 9 is a flowchart showing an example of a process for determining whether or not reliability is necessary.
- the policy determination unit 330 determines the necessity of reliability for each thread by executing, for example, each step shown in FIG. 9 in step S606 shown in FIG. First, the policy determination unit 330 acquires the “use protocol” of each data from the header of each data related to the target combination (step S901).
- the policy determination unit 330 acquires the “reliability flag” of each data from the “use protocol” acquired in step S901 and the reliability table 333 (step S902), and ends a series of processing. Specifically, the policy determination unit 330 acquires a “reliability flag” corresponding to the “used protocol” from the reliability table 333.
- the policy determination unit 330 can acquire a “reliability flag” indicating whether or not reliability is required for each thread of each data related to the target combination, and determine whether or not reliability is required. it can.
- Example of queue management processing 10A to 10E are diagrams illustrating an example of the queue management process. 10-1 to 10-5, the same parts as those shown in FIG. 1-2 are denoted by the same reference numerals, and the description thereof is omitted.
- the data processing device 111 executes the thread “A” and the thread “B”
- the data processing device 112 executes the thread “C”
- the data processing device 113 executes the thread “D”.
- the thread “A” is related to the thread “C”, has a real-time constraint, and does not require reliability.
- Thread “B” is a thread that is not related to other threads, has real-time restrictions, and requires reliability.
- the thread “C” is related to the thread “A”, has a real-time constraint, and does not require reliability.
- the thread “D” is a thread that is not related to other threads, has a real-time constraint, and does not require reliability.
- each data in the local queue 131 is stored in the order of data “A1”, “B1”, “A2”, “B2”.
- the local queue 132 stores data “C1” to “C4” generated based on the execution of the thread “C”. Each data in the local queue 132 is stored in the order of data “C1”, “C2”, “C3”, “C4”.
- the local queue 133 stores data “D1” to “D4” generated based on the execution of the thread “D”. Each data in the local queue 133 is stored in the order of data “D1”, “D2”, “D3”, “D4”.
- the extraction unit 310 extracts the top data one by one from the local queues 131 to 133 and writes them to the storage unit 320. Therefore, the top data “A1” of the local queue 131, the top data “C1” of the local queue 132, and the top data “D1” of the local queue 133 are written in the storage unit 320.
- the policy determination unit 330 determines a sort policy for each combination of data “A1”, “C1”, and “D1” in the storage unit 320. Specifically, the policy determination unit 330 has a relationship between the threads “A” and “C” that generated the data “A1” and “C1”, and therefore the sort policy 1031 for the data “A1” and “C1”. Is determined as a sort policy based on time stamps.
- the policy determination unit 330 determines the sort policy 1032 of the data “A1” and “D1” as the sort policy based on the time stamp.
- the policy determination unit 330 determines the sort policy 1033 of the data “C1” and “D1” as the sort policy based on the time stamp.
- the sort writing unit 340 extracts the most prioritized data from the data in the storage unit 320 based on each sort policy determined by the policy determination unit 330, and shares the shared queue 135. Write to.
- the time stamp of the data “D1” among the data in the storage unit 320 is the oldest, and the data “D1” is extracted from the storage unit 320 and written to the shared queue 135.
- the extraction unit 310 extracts the top data of the local queue 133 that is the origin queue of the data “D1” extracted from the storage unit 320 by the sort writing unit 340 and sends the data to the storage unit 320.
- the data “D2” is written in the storage unit 320. In this way, the process of moving each head data of the local queues 131 to 133 as a candidate to the storage unit 320 and moving the highest priority data from the candidates to the shared queue 135 is repeated.
- the data processing system and the data processing method it is possible to improve the throughput of threads that require real-time performance. For example, the throughput of threads with real-time constraints can be improved and the real-time constraints can be observed. Alternatively, the throughput of a thread using a communication protocol that requires reliability can be improved, and the reliability can be improved.
- a video chat is performed by a thread 121 executed by the data processing apparatus 111 and a file is uploaded by a thread 122 executed by the data processing apparatus 112 at the same time.
- the management unit 140 When the packet data of video chat is stored in the local queue 131 and the file for uploading is stored in the local queue 132, the management unit 140 first moves the packet data of the local queue 131 to the shared queue 135. Thereby, it is possible to improve the throughput of packet data of video chat with real-time restrictions.
- a local queue (local queues 131 to 133) is provided for each of the threads 121 to 123, and the data in the local queues 131 to 133 can be transferred to the shared queue 135 asynchronously.
- the exclusive control between the threads 121 to 123 can be suppressed, and the exclusive waiting time of the threads 121 to 123 can be shortened.
- the data processing method described in this embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation.
- This program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer.
- the program may be a transmission medium that can be distributed via a network such as the Internet.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
データ処理システム(100)は、データ処理装置(111)と、データ処理装置(112)と、共有キュー(135)と、管理ユニット(140)と、を備えている。データ処理装置(111)は、スレッド(121)を実行する。データ処理装置(112)は、スレッド(122)を実行する。共有キュー(135)は、データ処理装置(111)とデータ処理装置(112)とで共有する。管理ユニット(140)は、スレッド(121)およびスレッド(122)の共有キュー(135)にアクセスする優先度をスレッド(121)およびスレッド(122)のリアルタイム制約または通信プロトコルに基づいて設定する。
Description
本発明は、データを処理するデータ処理システムおよびデータ処理方法に関する。
現在のコンピュータシステムにおいては、複数のソフトウェアによる一つのハードウェアの共有が可能なマルチタスクのOS(Operating System:オペレーティングシステム)が利用されている。たとえば、ネットワークアダプタが1つしかないパーソナルコンピュータ上でブラウザとメーラを同時に起動することが可能である。この場合に、たとえば、ブラウザによるログイン情報などの送信と、メーラによる電子メールの送信と、が同時に行われることが考えられる。
この場合は、OSは、ブラウザおよびメーラからデータの送信要求を受け付けると、いったんメインメモリ上の一時領域である通信バッファに送信要求を格納する。その後、タイマー割り込みなどにより起動されたデバイスドライバが、通信バッファからデータを取り出し、ネットワークアダプタを用いて送信を行う。通信バッファは、たとえばFIFO(First In First Out:先入れ先出し)のキューで実現される。キューはたとえばリングバッファにより実装される。
マルチプロセッサシステムやマルチコアシステムにおいては、複数のCPU(Central Processing Unit:中央処理装置)がメモリ上の通信バッファに同時にアクセスすることにより通信バッファ内のデータが破壊される可能性がある。このため、CPU間で排他制御を行うことによってデータの保護が行われる。
排他制御としては、MUTEX(MUTual EXclusion:相互排他)、セマフォ、スピンロックなどが挙げられる。これらの排他制御において、各CPUは、キューへの書き込みを行う前に、まずキューへのアクセス権を排他的に取得し、データの書き込み後にアクセス権を放棄する。一方、各CPUは、アクセス権の取得に失敗した場合は待機し(排他待ち)、アクセス権を取得してからデータの書き込みを行う。
したがって、排他制御を行うことにより、ある時刻にキューへのアクセス権を有するのは1つのCPU(スレッド)のみとなり、キューへの書き込みは逐次的に行われる。これにより、上書きなどによるパケットデータの破壊が回避される。
なお、プロセッサ間でデータを転送する技術において、メモリ上にプロセッサごとに独立して設けられたバッファ領域を介してデータを転送する方法が知られている(たとえば、下記特許文献1参照。)。また、ネットワークから受信したデータを受信バッファに格納し、受信バッファから読み出したデータを送信バッファに非同期に格納する方法が知られている(たとえば、下記特許文献2参照。)。
しかしながら、上述した従来技術では、複数のスレッドが共有メモリにアクセスする場合に、リアルタイム性が求められるスレッドが他のスレッドより優先的に共有メモリにアクセスできるとは限らない。このため、リアルタイム性が求められるスレッドのスループットを向上させることができないという問題がある。
本発明は、上述した従来技術による問題点を解消するため、リアルタイム性が求められるスレッドのスループットを向上させることができるデータ処理システムおよびデータ処理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のデータ処理装置に含まれる第1データ処理装置によって実行される第1スレッドが第1データを出力し、前記複数のデータ処理装置に含まれる第2データ処理装置によって実行される第2スレッドが第2データを出力し、前記複数のデータ処理装置の一のデータ処理装置が、前記第1データ処理装置および前記第2データ処理装置で共有されるメモリへの前記第1データおよび前記第2データの書き込み順序を前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいて設定するデータ処理システムおよびデータ処理方法が提案される。
本発明の一側面によれば、リアルタイム性が求められるスレッドのスループットを向上させることができるという効果を奏する。
以下に添付図面を参照して、本発明にかかるデータ処理システムおよびデータ処理方法の実施の形態を詳細に説明する。
(実施の形態)
(実施の形態にかかるデータ処理システム)
図1-1は、実施の形態にかかるデータ処理システムの一例を示す図である。図1-1に示すように、実施の形態にかかるデータ処理システム100は、データ処理装置111,112と、メモリ130と、管理ユニット140と、を備えている。
(実施の形態にかかるデータ処理システム)
図1-1は、実施の形態にかかるデータ処理システムの一例を示す図である。図1-1に示すように、実施の形態にかかるデータ処理システム100は、データ処理装置111,112と、メモリ130と、管理ユニット140と、を備えている。
データ処理装置111は、データを処理する第1データ処理装置である。データ処理装置112は、データを処理する第2データ処理装置である。データ処理装置111,112のそれぞれはたとえばCPUである。スレッド121は、データ処理装置111によって実行される第1スレッドである。スレッド122は、データ処理装置112によって実行される第2スレッドである。
メモリ130は、ローカルキュー131,132と、共有キュー135と、を備えている。ローカルキュー131は、スレッド121の実行に基づいて生成される第1データを格納する第1ローカルキューである。ローカルキュー132は、スレッド122の実行に基づいて生成される第2データを格納する第2ローカルキューである。このように、メモリ130には、データ処理装置111,112のそれぞれに対応してローカルキュー131,132が設けられる。
メモリ130のうちの共有キュー135の部分は、データ処理装置111とデータ処理装置112とで共有するメモリ(共通キュー)である。具体的には、共有キュー135は、ローカルキュー131およびローカルキュー132に格納される第1データおよび第2データを優先度に基づいてソートして格納するキューである。
管理ユニット140は、スレッド121,122の共有キュー135にアクセスする優先度(書き込み順序)をスレッド121,122のリアルタイム制約に基づいて設定する。たとえば、管理ユニット140は、リアルタイム制約を有するスレッドの優先度を、リアルタイム制約を有さないスレッドの優先度より高く設定する判断ユニットを含む。また、管理ユニット140は、スレッド121,122がリアルタイム制約を有さない場合は、優先度をタイムスタンプに基づいて設定してもよい。
または、管理ユニット140は、スレッド121,122の共有キュー135にアクセスする優先度をスレッド121,122の通信プロトコルに基づいて設定してもよい。たとえば、管理ユニット140は、通信プロトコルが所定の通信プロトコルであるスレッドの優先度を、通信プロトコルが所定の通信プロトコルでないスレッドの優先度より高く設定する判断ユニットを含む。また、管理ユニット140は、スレッド121,122の通信プロトコルが所定の通信プロトコルではない場合は、優先度をタイムスタンプに基づいて設定してもよい。
図1-2は、実施の形態にかかるデータ処理システムの他の例を示す図である。図1-2において、図1-1に示した部分と同様の部分については同一の符号を付して説明を省略する。図1-2に示すように、データ処理システム100は、図1-1に示した構成に加えてデータ処理装置113を備えていてもよい。このように、データ処理システム100は、3つのデータ処理装置(CPU)を備えていてもよい。同様に、データ処理システム100は、4つ以上のデータ処理装置(CPU)を備えていてもよい。
スレッド123は、データ処理装置113によって実行されるスレッドである。メモリ130には、図1-1に示した構成に加えて、データ処理装置113に対応するローカルキュー133を設ける。ローカルキュー133は、スレッド123の実行に基づいて生成されるデータを格納するローカルキューである。
また、データ処理システム100は、図1-1に示した構成に加えて通信部150を備えていてもよい。通信部150は、共有キュー135に書き込まれたデータを順次読み出し、読み出したデータを他の通信装置へ送信するネットワークアダプタである。たとえば、通信部150は、キャリア通信やアドホック通信などのネットワークアダプタである。
このように、共有キュー135は、たとえば通信部150による送信待ちのための通信バッファに適用することができる。ただし、共有キュー135は通信バッファに限らず、スピーカなどによる音声出力待ちのバッファなどにも適用可能である。以下、主に図1-2に示したデータ処理システム100について説明する。
(データ処理システムのハードウェア構成)
図2は、データ処理システムのハードウェア構成例を示す図である。図2に示すように、データ処理システム100は、CPU211~21n(nは2以上の自然数)と、メインメモリ220と、補助メモリ230と、ユーザインターフェース240と、通信インターフェース250と、を備えている。CPU211~21n、メインメモリ220、補助メモリ230、ユーザインターフェース240および通信インターフェース250は、バス201によって接続されている。
図2は、データ処理システムのハードウェア構成例を示す図である。図2に示すように、データ処理システム100は、CPU211~21n(nは2以上の自然数)と、メインメモリ220と、補助メモリ230と、ユーザインターフェース240と、通信インターフェース250と、を備えている。CPU211~21n、メインメモリ220、補助メモリ230、ユーザインターフェース240および通信インターフェース250は、バス201によって接続されている。
CPU211~21nは、データ処理システム100の全体の制御を司るマルチプロセッサである。メインメモリ220は、たとえばRAM(Random Access Memory)である。メインメモリ220は、CPU211~21nのワークエリアとして使用される。補助メモリ230は、たとえば、ハードディスクや光ディスクなどの不揮発メモリである。補助メモリ230には、データ処理システム100を動作させる各種のプログラムが記憶されている。補助メモリ230に記憶されたプログラムは、メインメモリ220にロードされてCPU211~21nによって実行される。
ユーザインターフェース240は、たとえば、ユーザからの操作入力を受け付ける入力デバイスや、ユーザへ情報を出力する出力デバイスなどを含む。入力デバイスは、たとえばキー(たとえばキーボード)やリモコンなどによって実現することができる。出力デバイスは、たとえばディスプレイやスピーカなどによって実現することができる。また、タッチパネルなどによって入力デバイスおよび出力デバイスを実現してもよい。ユーザインターフェース240はCPU211~21nによって制御される。
通信インターフェース250は、たとえば、有線や無線によってデータ処理システム100の外部との間で通信を行う通信インターフェースである。通信インターフェース250はCPU211~21nによって制御される。
図1-1,図1-2に示したデータ処理装置111~113は、たとえばCPU211~21nによって実現することができる。メモリ130は、たとえばメインメモリ220によって実現することができる。管理ユニット140は、たとえば、CPU211~21nによって実行されるOSやアプリケーションの機能として実現することができる。通信部150は、たとえば通信インターフェース250によって実現することができる。
(管理ユニットの構成)
図3は、管理ユニットの構成例を示す図である。図3に示すように、管理ユニット140は、取出部310と、記憶部320と、ポリシ判断部330と、プロセステーブル331と、制約テーブル332と、信頼性テーブル333と、ソート書込部340と、を備えている。
図3は、管理ユニットの構成例を示す図である。図3に示すように、管理ユニット140は、取出部310と、記憶部320と、ポリシ判断部330と、プロセステーブル331と、制約テーブル332と、信頼性テーブル333と、ソート書込部340と、を備えている。
取出部310、ポリシ判断部330およびソート書込部340は、たとえば図2に示したCPU211~21nのいずれかによって実現することができる。記憶部320は、たとえば図2に示したメインメモリ220によって実現することができる。プロセステーブル331、制約テーブル332および信頼性テーブル333は、たとえば図2に示した補助メモリ230に記憶されている。また、プロセステーブル331、制約テーブル332および信頼性テーブル333は、システム設計時に予め記憶されていてもよいし、アプリケーションのインストール時に記憶または更新されてもよい。
取出部310は、ローカルキュー131~133(各ローカルキュー)のうちのデータが格納されたローカルキューからデータを1つずつ取り出して記憶部320に格納する。また、取出部310は、ローカルキュー131~133のうちの記憶部320から取り出されたデータの出身キューがソート書込部340から通知されると、通知された出身キューに格納されたデータを1つ読み出して記憶部320に書き込む。これにより、記憶部320には、ローカルキュー131~133からのデータが1つずつ記憶される。
ポリシ判断部330は、記憶部320に記憶された各データの各組み合わせについてソートポリシを判断する判断ユニットである。たとえば、記憶部320にはデータA,B,Cが記憶されているとする。ポリシ判断部330は、データA,B、データB,C、データA,Cの各組み合わせについてソートポリシを決定する。ポリシ判断部330は、決定した各組み合わせのソートポリシをソート書込部340へ通知する。
ソート書込部340は、ポリシ判断部330から通知された各組み合わせのソートポリシに基づいて、記憶部320の各組み合わせのデータをソートする。たとえば、ポリシ判断部330から通知された各ソートポリシにより、データA,Bの組み合わせではデータAが先頭となり、データB,Cの組み合わせではデータBが先頭となり、データA,Cの組み合わせではデータCが先頭となったとする。
ソート書込部340は、3つの組み合わせのうちの2つの組み合わせで先頭となったデータAを、データA,B,Cで最も優先されるデータとして決定する。ソート書込部340は、最も優先されるデータとして決定したデータAを記憶部320から取り出して共有キュー135に書き込む。
なお、ソート書込部340によるデータのソートはこれに限らない。たとえば、記憶部320に記憶された各データには各スレッドによって設定された優先度が設定されていてもよい。そして、ソート書込部340は、ポリシ判断部330から通知されたソートポリシに基づいて、記憶部320に記憶された各データの優先度を変更する。たとえば、ソート書込部340は、リアルタイム制約のあるスレッドのデータを優先するソートポリシが通知された場合は、リアルタイム制約のあるスレッドのデータの優先度を上げる。そして、ソート書込部340は、ソートポリシに基づいて変更した優先度によって記憶部320に記憶された各データをソートしてもよい。
これにより、スレッド121~123の共有キュー135にアクセスする優先度(書き込み順序)をスレッド121~123のリアルタイム制約や通信プロトコルに基づいて設定することができる。また、管理ユニット140は、ローカルキュー131~133のデータが一定量を超えた場合に、一定量を超えたデータを破棄してもよい。
(各テーブルについて)
図4-1は、プロセステーブルの一例を示す図である。図4-1に示すプロセステーブル331は、図3に示したプロセステーブル331の一例である。図4-1に示すように、プロセステーブル331は、「プログラムイメージ」と、「プロセスID」と、「親プロセスID」と、「プロセスグループID」と、「使用プロトコル」と、「使用ポート番号」と、を項目として含んでいる。プロセステーブル331の各行はデータ処理装置111~113によって実行される各プロセスを示している。
図4-1は、プロセステーブルの一例を示す図である。図4-1に示すプロセステーブル331は、図3に示したプロセステーブル331の一例である。図4-1に示すように、プロセステーブル331は、「プログラムイメージ」と、「プロセスID」と、「親プロセスID」と、「プロセスグループID」と、「使用プロトコル」と、「使用ポート番号」と、を項目として含んでいる。プロセステーブル331の各行はデータ処理装置111~113によって実行される各プロセスを示している。
「プログラムイメージ」は、プロセスを実行しているプログラム名を示している。なお、プロセステーブル331は、「プログラムイメージ」に代えてプロセスを実行しているプログラムのIDなどを項目として含んでいてもよい。
「プロセスID」は、プロセスを識別するIDである。「親プロセスID」は、プロセスの親プロセスを識別するIDである。「プロセスグループID」は、プロセスが属するプロセスグループを識別するIDである。「使用プロトコル」は、プロセスが生成したデータの送信に使用する通信プロトコルである。「使用ポート番号」は、プロセスが生成したデータの送信に使用するポート番号である。
たとえば1行目が示す「プロセスID」が「1240」のプロセスは、「プロセスID」が「1164」のプロセスから生成されたプロセスである。また、1行目が示す「プロセスID」が「1240」のプロセスは、通信を行わないプロセスであり、「使用プロトコル」および「使用ポート番号」は対応付けられていない。
2行目が示す「プロセスID」が「1204」のプロセスは、1行目が示す「プロセスID」が「1240」のプロセスから生成されたプロセスである。2行目が示す「プロセスID」が「1204」のプロセスは、生成された際に、「プロセスグループID」が「1204」の新たなプロセスグループのルートに設定されている。
3行目が示す「プロセスID」が「1732」のプロセスは、2行目が示す「プロセスID」が「1204」のプロセスから生成されたプロセスである。また、3行目が示す「プロセスID」が「1732」のプロセスには、通信を行うために「使用プロトコル」の「TCP」および「使用ポート番号」の「1068」が割り当てられている。
4行目が示す「プロセスID」が「5056」のプロセスは、2行目が示す「プロセスID」が「1204」のプロセスから生成されたプロセスである。また、4行目が示す「プロセスID」が「5056」のプロセスには、通信を行うために「使用プロトコル」の「TCP」および「使用ポート番号」の「1391」が割り当てられている。
図4-2は、制約テーブルの一例を示す図である。図4-2に示す制約テーブル332は、図3に示した制約テーブル332の一例である。図4-2に示すように、制約テーブル332は、「プログラムイメージ」と、「使用プロトコル」と、「制約フラグ」と、を項目として含んでいる。制約テーブル332の各行はデータ処理装置111~113によって実行される各プロセスを示している。
「プログラムイメージ」および「使用プロトコル」は、図4-1に示したプロセステーブル331の「プログラムイメージ」および「使用プロトコル」に対応している。「制約フラグ」は、プロセスにリアルタイム制約があるか否かを示す情報である。具体的には、「制約フラグ」が「0」の場合はプロセスにリアルタイム制約がないことを示す。「制約フラグ」が「1」の場合はプロセスにリアルタイム制約があることを示す。
図4-3は、信頼性テーブルの一例を示す図である。図4-3に示す信頼性テーブル333は、図3に示した信頼性テーブル333の一例である。図4-3に示すように、信頼性テーブル333は、「使用プロトコル」と、「信頼性フラグ」と、を項目として含んでいる。信頼性テーブル333の各行はデータ処理装置111~113によって実行される各プロセスが使用する通信プロトコルを示している。
「使用プロトコル」は、図4-1に示したプロセステーブル331の「使用プロトコル」に対応している。「信頼性フラグ」は、通信プロトコルの信頼性の要否を示す情報である。具体的には、「信頼性フラグ」が「1」の場合は通信プロトコルに信頼性が求められることを示す。また、「信頼性フラグ」が「0」の場合は通信プロトコルに信頼性が求められないことを示す。
(管理ユニットによるキュー管理処理)
図5は、管理ユニットによるキュー管理処理の一例を示すフローチャートである。管理ユニット140は、たとえば図5に示す各ステップを実行する。まず、管理ユニット140は、管理ユニット140によるキュー管理処理の割り込みタイミングか否かを判断し(ステップS501)、割り込みタイミングになるまで待つ(ステップS501:Noのループ)。
図5は、管理ユニットによるキュー管理処理の一例を示すフローチャートである。管理ユニット140は、たとえば図5に示す各ステップを実行する。まず、管理ユニット140は、管理ユニット140によるキュー管理処理の割り込みタイミングか否かを判断し(ステップS501)、割り込みタイミングになるまで待つ(ステップS501:Noのループ)。
ステップS501において、割り込みタイミングになると(ステップS501:Yes)、取出部310が、各ローカルキュー(ローカルキュー131~133)の少なくともいずれかにデータが書き込まれているか否かを判断する(ステップS502)。各ローカルキューのいずれにもデータが書き込まれていない場合(ステップS502:No)は、管理ユニット140は、ステップS501へ戻る。
ステップS502において、各ローカルキューの少なくともいずれかにデータが書き込まれている場合(ステップS502:Yes)は、取出部310が、各ローカルキューからデータを1つずつ取り出して記憶部320に書き込む(ステップS503)。つぎに、ポリシ判断部330が、記憶部320に書き込まれた各データの組み合わせごとにソートポリシを決定する(ステップS504)。ソートポリシの判断処理については後述する(たとえば図6参照)。
つぎに、ソート書込部340が、ステップS504によって決定されたソートポリシに基づいて、記憶部320の各データのうちの最も優先されるデータを記憶部320から取り出して共有キュー135に書き込む(ステップS505)。つぎに、取出部310が、ステップS505によって取り出されたデータの出身キューからデータを1つ取り出して記憶部320に書き込む(ステップS506)。
つぎに、管理ユニット140は、割り込み処理を終了するか否かを判断する(ステップS507)。割り込み処理を終了しない場合(ステップS507:No)は、管理ユニット140は、ステップS504へ戻る。割り込み処理を終了する場合(ステップS507:Yes)は、管理ユニット140は、ステップS501へ戻る。
以上の各ステップにより、管理ユニット140は、スレッド121~123によってローカルキュー131~133に書き込まれたデータを、ソートポリシに基づく順序で共有キュー135に移すことができる。
(ソートポリシの判断処理)
図6は、ソートポリシの判断処理の一例を示すフローチャートである。ポリシ判断部330は、図5に示したステップS504において、記憶部320の各データの組み合わせごとに、たとえば図6に示す各ステップを実行することによりソートポリシを決定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのスレッド間に関連があるか否かを判断する(ステップS601)。スレッド間の関連の有無の判定処理については後述する(たとえば図7参照)。
図6は、ソートポリシの判断処理の一例を示すフローチャートである。ポリシ判断部330は、図5に示したステップS504において、記憶部320の各データの組み合わせごとに、たとえば図6に示す各ステップを実行することによりソートポリシを決定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのスレッド間に関連があるか否かを判断する(ステップS601)。スレッド間の関連の有無の判定処理については後述する(たとえば図7参照)。
ステップS601において、スレッド間に関連がある場合(ステップS601:Yes)は、ステップS609へ移行する。スレッド間に関連がない場合(ステップS601:No)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについてリアルタイム制約の有無を判定する(ステップS602)。リアルタイム制約の有無の判定処理については後述する(たとえば図8参照)。
つぎに、ポリシ判断部330は、ステップS602による判定結果に基づいて、対象の組み合わせにかかる各データの各スレッドのうちの一方のスレッドのみにリアルタイム制約があるか否かを判断する(ステップS603)。一方のスレッドのみにリアルタイム制約がある場合(ステップS603:Yes)は、ポリシ判断部330は、対象の組み合わせのソートポリシを、リアルタイム制約があるスレッドを優先するソートポリシに決定し(ステップS604)、一連の処理を終了する。
ステップS603において、両方のスレッドにリアルタイム制約があり、または両方のスレッドにリアルタイム制約がない場合(ステップS603:No)は、ポリシ判断部330は、ステップS605へ移行する。すなわち、ポリシ判断部330は、ステップS602による判定結果に基づいて、対象の組み合わせにかかる各データの各スレッドのうちの両方のスレッドにリアルタイム制約があるか否かを判断する(ステップS605)。
ステップS605において、両方のスレッドにリアルタイム制約がない場合(ステップS605:No)は、ポリシ判断部330は、ステップS609へ移行する。両方のスレッドにリアルタイム制約がある場合(ステップS605:Yes)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについて信頼性の要否を判定する(ステップS606)。信頼性の要否の判定処理については後述する(たとえば図9参照)。
つぎに、ポリシ判断部330は、ステップS606による判定結果に基づいて、対象の組み合わせにかかる各データの各スレッドのうちの一方のスレッドのみに信頼性が必要か否かを判断する(ステップS607)。一方のスレッドのみに信頼性が必要である場合(ステップS607:Yes)は、ポリシ判断部330は、対象の組み合わせのソートポリシを、信頼性が必要なスレッドを優先するソートポリシに決定し(ステップS608)、一連の処理を終了する。
ステップS607において、各スレッドに信頼性が必要であり、または各スレッドに信頼性が必要でない場合(ステップS607:No)は、ポリシ判断部330は、ステップS609へ移行する。すなわち、ポリシ判断部330は、対象の組み合わせのソートポリシを、タイムスタンプが古いスレッドを優先するソートポリシに決定し(ステップS609)、一連の処理を終了する。
以上の各ステップにより、ポリシ判断部330は、記憶部320の各データの組み合わせごとに、スレッド間の関連の有無、リアルタイム制約の有無および信頼性の要否に基づいてソートポリシを決定することができる。
たとえば、スレッド間の関連の有無による判断を行い、スレッド間に関連がある場合はタイムスタンプによるソートポリシを選択することができる。これにより、関連のある各スレッドが生成したデータの順序を管理ユニット140により変えてしまい、各スレッドの動作が不安定になることを回避することができる。
また、スレッド間に関連がある場合は、スレッド間で連携を取り合ってお互いに調整しながら共有キュー135にデータを書き込むことが可能である。このため、タイムスタンプによるソートポリシを選択しても、リアルタイム性が求められるスレッドのスループットが低下することを回避することができる。
また、リアルタイム制約の有無による判断を行い、一方のスレッドにのみリアルタイム制約がある場合は、リアルタイム制約があるスレッドのデータを優先するソートポリシを選択することができる。これにより、リアルタイム制約があるスレッドのデータを優先的に共有キュー135に移すことができる。このため、リアルタイム性が求められるスレッドのスループットを向上させることができる。また、両方のスレッドにリアルタイム制約がない場合は、タイムスタンプによるソートポリシを選択することができる。
また、信頼性の要否による判断を行い、一方のスレッドにのみ信頼性が必要である場合は、信頼性が必要であるスレッドのデータを優先するソートポリシを選択することができる。これにより、信頼性が必要であるスレッドのデータを優先的に共有キュー135に移すことができる。このため、信頼性が必要であるスレッドのスループットを向上させ、信頼性を向上させることができる。
なお、ソートポリシの決定処理はこれに限らない。たとえば、図6に示した各ステップにおいて、スレッド間の関連の有無による判断(ステップS601)は省いてもよい。また、図6に示した各ステップにおいて、リアルタイム制約の有無による判断(ステップS602~S605)は省いてもよい。また、図6に示した各ステップにおいて、信頼性の要否による判断(ステップS606~S608)は省いてもよい。
図7は、スレッド間の関連の有無の判定処理の一例を示すフローチャートである。ポリシ判断部330は、図6に示したステップS601において、たとえば図7に示す各ステップを実行することによってスレッド間の関連の有無を判定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのヘッダから各データの「使用プロトコル」と「ポート番号」を取得する(ステップS701)。
つぎに、ポリシ判断部330は、ステップS701によって取得した「使用プロトコル」と「ポート番号」およびプロセステーブル331から各データの「親プロセスID」を特定する(ステップS702)。具体的には、ポリシ判断部330は、プロセステーブル331から、取得した「使用プロトコル」と「ポート番号」の組み合わせに対応する「親プロセスID」を特定する。
つぎに、ポリシ判断部330は、ステップS702によって特定した各データの「親プロセスID」が同一か否かを判断する(ステップS703)。各データの「親プロセスID」が同一である場合(ステップS703:Yes)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドに関連があると判定し(ステップS704)、一連の処理を終了する。各データの「親プロセスID」が同一でない場合(ステップS703:No)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドに関連がないと判定し(ステップS705)、一連の処理を終了する。
以上の各ステップにより、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドの関連の有無を判定することができる。なお、各データの「親プロセスID」が同一か否かによって各スレッドの関連の有無を判定する処理について説明したが、各スレッドの関連の有無を判定する処理はこれに限らない。たとえば、各データの「プロセスグループID」が同一か否かによって各スレッドの関連の有無を判定してもよい。
図8は、リアルタイム制約の有無の判定処理の一例を示すフローチャートである。ポリシ判断部330は、図6に示したステップS602において、たとえば図8に示す各ステップを実行することによって各スレッドについてリアルタイム制約の有無を判定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのヘッダから各データの「使用プロトコル」と「ポート番号」を取得する(ステップS801)。
つぎに、ポリシ判断部330は、ステップS801によって取得した「使用プロトコル」と「ポート番号」およびプロセステーブル331から各データの「プログラムイメージ」を特定する(ステップS802)。具体的には、ポリシ判断部330は、プロセステーブル331から、取得した「使用プロトコル」と「ポート番号」の組み合わせに対応する「プログラムイメージ」を特定する。
つぎに、ポリシ判断部330は、ステップS801によって取得した「使用プロトコル」とステップS802によって特定した「プログラムイメージ」および制約テーブル332から各データの「制約フラグ」を取得し(ステップS803)、一連の処理を終了する。具体的には、ポリシ判断部330は、制約テーブル332から、「使用プロトコル」と「プログラムイメージ」の組み合わせに対応する「制約フラグ」を取得する。
以上の各ステップにより、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについて、リアルタイム制約の有無を示す「制約フラグ」を取得し、リアルタイム制約の有無を判定することができる。
図9は、信頼性の要否の判定処理の一例を示すフローチャートである。ポリシ判断部330は、図6に示したステップS606において、たとえば図9に示す各ステップを実行することによって各スレッドについて信頼性の要否を判定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのヘッダから各データの「使用プロトコル」を取得する(ステップS901)。
つぎに、ポリシ判断部330は、ステップS901によって取得した「使用プロトコル」および信頼性テーブル333から各データの「信頼性フラグ」を取得し(ステップS902)、一連の処理を終了する。具体的には、ポリシ判断部330は、信頼性テーブル333から、「使用プロトコル」に対応する「信頼性フラグ」を取得する。
以上の各ステップにより、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについて、信頼性の要否を示す「信頼性フラグ」を取得し、信頼性の要否を判定することができる。
(キュー管理処理の例)
図10-1~図10-5は、キュー管理処理の一例を示す図である。図10-1~図10-5において、図1-2に示した部分と同様の部分については同一の符号を付して説明を省略する。図10-1に示すように、データ処理装置111はスレッド「A」およびスレッド「B」を実行し、データ処理装置112はスレッド「C」を実行し、データ処理装置113はスレッド「D」を実行しているとする。スレッド「A」は、スレッド「C」と関連があり、リアルタイム制約があり、信頼性が要求されないスレッドである。
図10-1~図10-5は、キュー管理処理の一例を示す図である。図10-1~図10-5において、図1-2に示した部分と同様の部分については同一の符号を付して説明を省略する。図10-1に示すように、データ処理装置111はスレッド「A」およびスレッド「B」を実行し、データ処理装置112はスレッド「C」を実行し、データ処理装置113はスレッド「D」を実行しているとする。スレッド「A」は、スレッド「C」と関連があり、リアルタイム制約があり、信頼性が要求されないスレッドである。
スレッド「B」は、他のスレッドと関連がなく、リアルタイム制約があり、信頼性が要求されるスレッドである。スレッド「C」は、スレッド「A」と関連があり、リアルタイム制約があり、信頼性が要求されないスレッドである。スレッド「D」は、他のスレッドと関連がなく、リアルタイム制約があり、信頼性が要求されないスレッドである。
ローカルキュー131には、スレッド「A」の実行に基づいて生成されたデータ「A1」,「A2」と、スレッド「B」の実行に基づいて生成されたデータ「B1」,「B2」と、が格納されている。また、ローカルキュー131の各データは、データ「A1」,「B1」,「A2」,「B2」の順に格納されている。
ローカルキュー132には、スレッド「C」の実行に基づいて生成されたデータ「C1」~「C4」が格納されている。また、ローカルキュー132の各データは、データ「C1」,「C2」,「C3」,「C4」の順に格納されている。ローカルキュー133には、スレッド「D」の実行に基づいて生成されたデータ「D1」~「D4」が格納されている。また、ローカルキュー133の各データは、データ「D1」,「D2」,「D3」,「D4」の順に格納されている。
図10-2に示すように、取出部310は、ローカルキュー131~133から先頭のデータを一つずつ取り出して記憶部320に書き込む。このため、記憶部320には、ローカルキュー131の先頭のデータ「A1」と、ローカルキュー132の先頭のデータ「C1」と、ローカルキュー133の先頭のデータ「D1」と、が書き込まれる。
図10-3に示すように、ポリシ判断部330は、記憶部320のデータ「A1」,「C1」,「D1」の組み合わせごとにソートポリシを決定する。具体的には、ポリシ判断部330は、データ「A1」,「C1」を生成したスレッド「A」,「C」の間には関連があるため、データ「A1」,「C1」のソートポリシ1031をタイムスタンプによるソートポリシに決定する。
また、データ「A1」,「D1」を生成したスレッド「A」,「D」の間には関連がなく、スレッド「A」,「D」ともにリアルタイム制約があり、スレッド「A」,「D」ともに信頼性が要求されない。このため、ポリシ判断部330は、データ「A1」,「D1」のソートポリシ1032をタイムスタンプによるソートポリシに決定する。
また、データ「C1」,「D1」を生成したスレッド「C」,「D」の間には関連がなく、スレッド「C」,「D」ともにリアルタイム制約があり、スレッド「C」,「D」ともに信頼性が要求されない。このため、ポリシ判断部330は、データ「C1」,「D1」のソートポリシ1033をタイムスタンプによるソートポリシに決定する。
図10-4に示すように、ソート書込部340は、ポリシ判断部330によって決定された各ソートポリシに基づいて、記憶部320の各データのうちの最も優先されるデータを取り出して共有キュー135へ書き込む。ここでは、記憶部320の各データのうちのデータ「D1」のタイムスタンプが最も古く、データ「D1」が記憶部320から取り出されて共有キュー135へ書き込まれたとする。
図10-5に示すように、取出部310は、ソート書込部340によって記憶部320から取り出されたデータ「D1」の出身キューであるローカルキュー133の先頭のデータを取り出して記憶部320へ書き込む。ここではデータ「D2」が記憶部320に書き込まれる。このように、ローカルキュー131~133の先頭の各データを候補として記憶部320に移し、候補の中から最も優先されるデータを共有キュー135に移す処理を繰り返す。
以上説明したように、データ処理システムおよびデータ処理方法によれば、リアルタイム性が求められるスレッドのスループットを向上させることができる。たとえば、リアルタイム制約のあるスレッドのスループットを向上させ、リアルタイム制約を守ることができる。または、信頼性が求められる通信プロトコルを用いるスレッドのスループットを向上させ、信頼性を向上させることができる。
たとえば、データ処理システム100において、データ処理装置111で実行されるスレッド121によってビデオチャットをしながら、同時にデータ処理装置112で実行されるスレッド122によってファイルのアップロードを行うとする。
ビデオチャットでは、一定の時間内に一定のパケットデータを送信することが求められる(リアルタイム制約がある)が、パケットデータの到着順序性やパケットロスに対する信頼性はそこまで求められない。一方、ファイルのアップロードでは、リアルタイム制約はないが、パケットデータの到着順序が守られなかったりパケットロスが発生したりした場合は再送要求を行うなど、信頼性が求められる。
ローカルキュー131にビデオチャットのパケットデータが格納され、ローカルキュー132にアップロードにかかるファイルが格納されていた場合に、管理ユニット140は、ローカルキュー131のパケットデータを先に共有キュー135へ移す。これにより、リアルタイム制約があるビデオチャットのパケットデータのスループットを向上させることができる。
また、スレッド121~123ごとにローカルキュー(ローカルキュー131~133)を設け、ローカルキュー131~133のデータを管理ユニット140が非同期で共有キュー135に移すことができる。これにより、スレッド121~123の間の排他制御を抑制し、スレッド121~123の排他待ち時間を短くすることができる。
なお、本実施の形態で説明したデータ処理法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
100 データ処理システム
131~133 ローカルキュー
135 共有キュー
201 バス
1031~1033 ソートポリシ
131~133 ローカルキュー
135 共有キュー
201 バス
1031~1033 ソートポリシ
Claims (16)
- 第1スレッドを実行する第1データ処理装置と、
第2スレッドを実行する第2データ処理装置と、
前記第1データ処理装置と前記第2データ処理装置とで共有するメモリと、
前記第1スレッドおよび前記第2スレッドの前記メモリにアクセスする優先度を前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいて設定する管理ユニットと
を含むことを特徴とするデータ処理システム。 - 前記管理ユニットは、
前記リアルタイム制約を有するスレッドの優先度を高く設定する判断ユニットを含むこと
を特徴とする請求項1に記載のデータ処理システム。 - 前記管理ユニットは、
前記通信プロトコルが所定の通信プロトコルであるスレッドの優先度を高く設定する判断ユニットを含むこと
を特徴とする請求項1に記載のデータ処理システム。 - 前記第1スレッドの実行に基づいて生成される第1データを格納する第1ローカルキューと、
前記第2スレッドの実行に基づいて生成される第2データを格納する第2ローカルキューと、
前記第1ローカルキューおよび前記第2ローカルキューに格納される第1データおよび第2データを前記優先度に基づいてソートして格納するキューと
を含むことを特徴とする請求項1乃至請求項3の何れか一に記載のデータ処理システム。 - 前記管理ユニットは、
前記第1スレッドおよび前記第2スレッドが前記リアルタイム制約を有さないとき、または、前記第1スレッドおよび前記第2スレッドの通信プロトコルが所定の通信プロトコルではないとき、前記優先度をタイムスタンプに基づいて設定すること
を特徴とする請求項1乃至請求項4の何れか一に記載のデータ処理システム。 - 前記第1データおよび前記第2データがソートして格納された前記キューからデータを順次読み出し、読み出したデータを送信する通信部
を含むことを特徴とする請求項4に記載のデータ処理システム。 - 複数のデータ処理装置に含まれる第1データ処理装置によって実行される第1スレッドが第1データを出力し、
前記複数のデータ処理装置に含まれる第2データ処理装置によって実行される第2スレッドが第2データを出力し、
前記複数のデータ処理装置の一のデータ処理装置が、前記第1データ処理装置および前記第2データ処理装置で共有されるメモリへの前記第1データおよび前記第2データの書き込み順序を前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいて設定すること
を特徴とするデータ処理方法。 - 前記第1スレッドがリアルタイム制約を有するときは、前記第1データが前記第2データよりも先に前記メモリに書き込まれること
を特徴とする請求項7に記載のデータ処理方法。 - 前記第1スレッドの通信プロトコルが所定の通信プロトコルであるときは、前記第1データが前記第2データよりも先に前記メモリに書き込まれること
を特徴とする請求項7に記載のデータ処理方法。 - 前記第1スレッドおよび前記第2スレッドがリアルタイム制約を有しないとき、または、前記第1スレッドおよび前記第2スレッドの通信プロトコルが所定の通信プロトコルではないとき、前記書き込み順序を前記第1データおよび前記第2データのタイムスタンプに基づいて設定すること
を特徴とする請求項7乃至請求項9の何れか一に記載のデータ処理方法。 - 前記第1データを第1ローカルキューに格納し、
前記第2データを第2ローカルキューに格納し、
前記第1ローカルキューまたは前記第2ローカルキューから前記第1データまたは前記第2データを読み出して、前記書き込み順序に基づいて前記第1データおよび前記第2データを共通キューに書き込むこと
を特徴とする請求項7乃至請求項10の何れか一に記載のデータ処理方法。 - 前記第1データおよび前記第2データがソートして格納された前記共通キューからデータを順次読み出し、読み出したデータを送信すること
を特徴とする請求項11に記載のデータ処理方法。 - 第1スレッドの実行に基づいて生成される第1データを格納する第1ローカルキューと、
第2スレッドの実行に基づいて生成される第2データを格納する第2ローカルキューと、
前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいてソートされた前記第1データおよび前記第2データを格納するキューと、
前記キューに格納される第1データおよび第2データが書き込まれるメモリと、
を含むことを特徴とするデータ処理システム。 - 前記第1スレッドがリアルタイム制約を有するときは、前記第1データが前記第2データよりも先に前記キューに書き込まれること
を特徴とする請求項13に記載のデータ処理システム。 - 前記第1スレッドの通信プロトコルが所定の通信プロトコルであるときは、前記第1データが前記第2データよりも先に前記キューに書き込まれること
を特徴とする請求項13に記載のデータ処理システム。 - 前記第1データおよび前記第2データがソートして格納された前記キューからデータを順次読み出し、読み出したデータを送信する通信部
を含むことを特徴とする請求項13乃至請求項15の何れか一に記載のデータ処理システム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2011/067903 WO2013018230A1 (ja) | 2011-08-04 | 2011-08-04 | データ処理システムおよびデータ処理方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2011/067903 WO2013018230A1 (ja) | 2011-08-04 | 2011-08-04 | データ処理システムおよびデータ処理方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2013018230A1 true WO2013018230A1 (ja) | 2013-02-07 |
Family
ID=47628789
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2011/067903 Ceased WO2013018230A1 (ja) | 2011-08-04 | 2011-08-04 | データ処理システムおよびデータ処理方法 |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2013018230A1 (ja) |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH02222059A (ja) * | 1989-02-23 | 1990-09-04 | Mitsubishi Electric Corp | マルチプロセッサシステム |
| JPH05120239A (ja) * | 1991-10-30 | 1993-05-18 | Seiko Epson Corp | 並列処理回路 |
| JPH07134689A (ja) * | 1993-11-09 | 1995-05-23 | Mitsubishi Electric Corp | バスアービトレーション装置 |
| JP2006301894A (ja) * | 2005-04-20 | 2006-11-02 | Nec Electronics Corp | マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法 |
| WO2007141849A1 (ja) * | 2006-06-07 | 2007-12-13 | Hitachi, Ltd. | 半導体集積回路 |
| JP2009026320A (ja) * | 2003-07-25 | 2009-02-05 | Rmi Corp | プロセッサ |
| JP2009060660A (ja) * | 2001-08-09 | 2009-03-19 | Panasonic Corp | 伝送装置および伝送方法 |
-
2011
- 2011-08-04 WO PCT/JP2011/067903 patent/WO2013018230A1/ja not_active Ceased
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH02222059A (ja) * | 1989-02-23 | 1990-09-04 | Mitsubishi Electric Corp | マルチプロセッサシステム |
| JPH05120239A (ja) * | 1991-10-30 | 1993-05-18 | Seiko Epson Corp | 並列処理回路 |
| JPH07134689A (ja) * | 1993-11-09 | 1995-05-23 | Mitsubishi Electric Corp | バスアービトレーション装置 |
| JP2009060660A (ja) * | 2001-08-09 | 2009-03-19 | Panasonic Corp | 伝送装置および伝送方法 |
| JP2009026320A (ja) * | 2003-07-25 | 2009-02-05 | Rmi Corp | プロセッサ |
| JP2006301894A (ja) * | 2005-04-20 | 2006-11-02 | Nec Electronics Corp | マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法 |
| WO2007141849A1 (ja) * | 2006-06-07 | 2007-12-13 | Hitachi, Ltd. | 半導体集積回路 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7653754B2 (en) | Method, system and protocol that enable unrestricted user-level access to a network interface adapter | |
| DK1794979T3 (en) | Selective copying of data structure | |
| US8601169B1 (en) | Method and apparatus for a multi-engine descriptor controller for distributing data processing tasks across the engines | |
| US8694701B2 (en) | Recovering dropped instructions in a network interface controller | |
| EP2126710B1 (en) | Content-terminated dma | |
| US10146468B2 (en) | Addressless merge command with data item identifier | |
| US12393428B2 (en) | Self-scheduling threads in a processor based on a threshold associated with pipeline stages | |
| TW200839514A (en) | Memory management apparatus | |
| WO2023093334A1 (zh) | 用于执行原子操作的系统、原子操作方法及装置 | |
| CN104536921A (zh) | 一种edma控制器分离式并行数据通道的设计方法 | |
| US20180335957A1 (en) | Lock-free datapath design for efficient parallel processing storage array implementation | |
| CN117992125A (zh) | 减少用于基于存储器的通信队列的索引更新消息 | |
| US7293158B2 (en) | Systems and methods for implementing counters in a network processor with cost effective memory | |
| EP2133798A1 (en) | Inter-processor communication system, processor, inter-processor communication method, and communication method | |
| US8787368B2 (en) | Crossbar switch with primary and secondary pickers | |
| US9804959B2 (en) | In-flight packet processing | |
| WO2013018230A1 (ja) | データ処理システムおよびデータ処理方法 | |
| US20080189719A1 (en) | Operation processor apparatus | |
| US20090086746A1 (en) | Direct messaging in distributed memory systems | |
| JPWO2013018230A1 (ja) | データ処理システムおよびデータ処理方法 | |
| US10423546B2 (en) | Configurable ordering controller for coupling transactions | |
| US20150220872A1 (en) | Method and an apparatus for work packet queuing, scheduling, and ordering with conflict queuing | |
| US10284501B2 (en) | Technologies for multi-core wireless network data transmission | |
| WO2022199357A1 (zh) | 数据处理方法及装置、电子设备、计算机可读存储介质 | |
| JP7080698B2 (ja) | 情報処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 11870315 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 2013526705 Country of ref document: JP Kind code of ref document: A |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 11870315 Country of ref document: EP Kind code of ref document: A1 |