Request delay device, request delay method, and program
The request delay device addresses the limitation of region-specific data access timings by introducing random delays, effectively thwarting Side-Channel Attacks through varied access timings.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- NEC CORP
- Filing Date
- 2024-12-25
- Publication Date
- 2026-07-07
AI Technical Summary
Existing data access control techniques are limited to region-specific timings, which are insufficient to prevent Side-Channel Attacks (SCAs) when data requests are directed to the same or nearby memory regions.
A request delay device comprising logic circuits that introduce random delays to data requests and responses between a data requester and provider, using a random number generator or probability distribution to determine unique delay lengths for each request, ensuring varied access timings.
The solution effectively prevents Side-Channel Attacks by randomizing data access timings, making it difficult for attackers to exploit patterns in memory access intervals.
Smart Images

Figure 2026112550000001_ABST
Abstract
Description
Technical Field
[0005] ,
[0001] The present disclosure relates generally to a request delay device, a request delay method, and a program.
Background Art
[0002] Techniques for controlling the timing of data access from a data requester (e.g., a processor) to a data provider (e.g., a memory) have been developed. For example, Patent Document 1 discloses a method of scheduling memory accesses from a processor based on memory timing parameters specific to a memory region.
Prior Art Documents
Patent Documents
[0003]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0004] The appropriate timing of data access is not limited to region-specific timings. The object of the present disclosure is to provide a novel technique for controlling the timing of data access.
Means for Solving the Problems
[0005] This disclosure provides a request delay device comprising at least one logic circuit positioned between a data requester and a data provider. The at least one logic circuit is configured to retrieve two or more data requests sent from the data requester to the data provider, and for each data request, to determine the length of the delay for that data request, wherein the determined delay lengths are different for at least two data requests, and to transmit each data request after the determined delay for that data request has elapsed. The length of the delay is determined using a random number generator or a probability distribution.
[0006] The Disclosure further provides a request delay method implemented by a computer, comprising: obtaining two or more data requests transmitted from a data requester to a data provider; determining, for each data request, the length of the delay for that data request, such that the determined delay lengths are different for at least two data requests; and transmitting each data request after the determined delay for that data request. The computer is located between the data requester and the data provider. The delay lengths are determined using a random number generator or a probability distribution.
[0007] The Disclosure further provides a program to be executed by a computer which to retrieve two or more data requests sent from a data requester to a data provider, and for each data request, determine the length of the delay for that data request such that the determined delay lengths are different for at least two data requests, and transmit each data request after the determined delay has elapsed. The computer is located between the data requester and the data provider. The length of the delay is determined using a random number generator or a probability distribution. [Effects of the Invention]
[0008] This disclosure provides a novel technology for controlling the timing of data access. [Brief explanation of the drawing]
[0009] [Figure 1] This is a diagram illustrating the requirements delay device. [Figure 2] This block diagram shows an example of the functional configuration of a request delay device. [Figure 3] This is a block diagram showing an example of a computer hardware configuration that implements a request delay device. [Figure 4] This is a flowchart illustrating an example of the processing flow performed by the request delay device. [Figure 5] This is a diagram illustrating the requirements delay device. [Figure 6] This block diagram shows an example of the functional configuration of a request delay device. [Figure 7] This flowchart shows an example of the processing flow implemented by a request delay device to handle the response. [Figure 8] This block diagram shows an embodiment of the functional configuration of a request delay device equipped with a sequence synchronization unit. [Figure 9] This figure shows an example of the structure of a registration table. [Figure 10] This flowchart illustrates an example of the processing flow for managing the registration table when a data request is received. [Figure 11] This is a flowchart illustrating an example of the process flow for sending response 40. [Modes for carrying out the invention]
[0010] Embodiments of this disclosure will be described below with reference to the drawings. In each drawing, the same elements are denoted by the same reference numerals, and redundant explanations will be omitted as necessary. In addition, unless otherwise specified, predetermined information (for example, a predetermined value or a predetermined threshold) is pre-stored in a memory unit accessed by the computer using that information. In this disclosure, the memory unit can be implemented with one or more storage devices such as Hard Disk Drives (HDDs), Solid-State Drives (SSDs), or Random-Access Memories (RAMs).
[0011] First Embodiment <Overview> Figure 1 shows an overview of the request delay device 2000. Note that Figure 1 does not limit the operation of the request delay device 2000, but merely illustrates an example of the operation the request delay device 2000 can perform.
[0012] The request delay device 2000 is configured to introduce a delay to the data request 30. The data request 30 is data representing a request from the data requester 10 to the data provider 20, and is transmitted to the data provider 20 by the data requester 10. Specifically, the data request 30 can be either a read request or a write request. A read request is a request to provide the data specified in the request to the data requester 10. A write request is a request to store the data specified in the request in the data provider 20.
[0013] The data requester 10 is a device configured to send a data request 30 to the data provider 20 in order to acquire data from the data provider 20 or to store data in the data provider 20. The data requester 10 is various processors such as, for example, a Central Processing Unit (CPU), a Microprocessor Unit (MPU), a Graphics Processing Unit (GPU), a Field-Programmable Gate Array (FPGA), or a Digital Signal Processor (DSP).
[0014] The data provider 20 is a device that stores data. The data provider 20 is configured to store therein the data specified by a write request in response to receiving the write request. The data provider 20 is also configured to provide the data specified by a read request to the data requester 10 in response to receiving the read request. Examples of the data provider 20 are various storage media such as a RAM, a Read Only Memory (ROM), a HDD, a SSD, and a memory card.
[0015] By disposing a request delay device 2000 between the data requester 10 and the data provider 20, it is ensured that the data request 30 is not directly sent from the data requester 10 to the data provider 20. Specifically, the request delay device 2000 receives the data request 30 sent by the data requester 10, and after causing a delay, sends the data request 30 to the data provider 20. The request delay device 2000 is connected to the data requester 10 via an arbitrary type of data path such as a bus line. Similarly, the request delay device 2000 is connected to the data provider 20 via an arbitrary type of data path such as a bus line.
[0016] As long as the request delay device 2000 can receive the data request 30, it does not need to be directly connected to the data request source 10. Similarly, as long as the request delay device 2000 can receive the data request 30, it does not need to be directly connected to the data provider 20.
[0017] The request delay device 2000 introduces a delay to each data request 30 in order to change the timing of each data request 30 from the original timing. For this purpose, the length of the delay introduced to the data request 30 is not set uniformly for all data requests 30, but is determined individually for each data request 30.
[0018] Specifically, the request delay device 2000 can function as follows. The request delay device 2000 receives the data request 30 transmitted by the data request source 10. The request delay device 2000 determines the length of the delay introduced to the data request 30 for each data request 30. After the determined delay for that data request 30 has elapsed, the request delay device 2000 transmits each data request 30 to the data provider 20.
[0019] The length of the delay for each data request 30 is determined randomly. Specifically, as will be described in detail later, the length of the delay for each data request 30 is determined using a random value. The request delay device calculates a random value using a random number generator configured to output random numbers, or by sampling a value from a predefined probability distribution.
[0020] <Example of advantageous effects> Each data request 30 from the data request source 10 to the data provider 20 is delayed by the request delay device 2000. The length of the delay for each data request 30 is determined randomly. In this way, a new technology for controlling the timing of data access is provided.
[0021] The request delay device 2000 is effective and useful in avoiding Side-Channel Attacks (SCAs) that exploit the timing of data accesses, such as the interval between data accesses. For example, memory-based SCAs exploit the fact that there is information obtained from a series of memory accesses performed between the processor and memory.
[0022] SCA can be performed even when data requests are directed to the same or nearby regions. For this reason, region-specific delays for each data request disclosed in Patent Document 1 may not be sufficient to prevent SCA.
[0023] Here, the request delay device 2000 randomly determines the length of the delay for each data request. As a result, the delay introduced by the request delay device 2000 is effective in preventing SCA even when data requests are directed to the same or nearby areas.
[0024] The request delay device 2000 will be described in more detail below.
[0025] <Example of Functional Configuration> Figure 2 is a block diagram showing an embodiment of the functional configuration of the request delay device 2000. In the embodiment shown in Figure 2, the request delay device 2000 comprises a first receiving unit 2020, a first determination unit 2040, and a first transmitting unit 2060. The first receiving unit 2020 receives data requests 30 transmitted by the data request source 10. The first determination unit 2040 determines the length of the delay to be applied to each data request 30. The first transmitting unit 2060 transmits each data request 30 to the data provider 20 after the determined delay has occurred for that data request 30.
[0026] <Example of hardware configuration> The request delay device 2000 can be implemented using either a dedicated computer specifically designed to implement the request delay device 2000, or a general-purpose computer. In some implementations, this computer may include semiconductor devices such as an Application-Specific Integrated Circuit (ASIC), FPGA, or MPU.
[0027] The computer is configured to execute a program (e.g., firmware) that implements each functional part of the request delay device 2000. In other words, the program causes the computer to operate as the request delay device 2000.
[0028] Programs can be deployed in various ways. For example, a program can be distributed via a storage medium such as a Digital Versatile Disc (DVD) or Universal Serial Bus (USB) memory that has the program pre-stored on it. Alternatively, the program can be downloaded from a server hosting the storage medium on which the program is pre-stored.
[0029] Figure 3 is a block diagram showing an embodiment of the hardware configuration of a computer 1000 that implements a request delay device 2000. In Figure 3, the computer 1000 includes a bus 1020, a processor 1040, a main memory 1060, an auxiliary memory 1080, a first interface 1100, and a second interface 1120.
[0030] Bus 1020 serves as a data transmission channel, enabling the processor 1040, main memory 1060, auxiliary memory 1080, first interface 1100, and second interface 1120 to exchange data. Processor 1040 is a processing unit such as an FPGA, ASIC, or MPU that executes instructions provided by the program described above.
[0031] The main memory 1060 is a main memory component such as RAM, and the program executed by the processor 1040 is loaded from the auxiliary memory 1080.
[0032] The auxiliary storage device 1080 is an auxiliary storage element such as ROM or RAM in which a program is pre-stored.
[0033] The first interface 1100 connects computer 1000 to data requester 10. The second interface 1120 connects computer 1000 to data provider 20.
[0034] In some implementations, the functionality of the request delay device 2000 may be hardwired rather than software-based. In such cases, the functionality is directly integrated into hardware components such as logic circuits. These logic circuits are integrated into semiconductor devices such as ASICs or FPGAs, forming a hardware-based implementation of the request delay device 2000.
[0035] <Processing flow> Figure 4 is a flowchart showing an example of the processing flow performed by the request delay device 2000. The processing shown in Figure 4 is performed for each data request 30. The first receiving unit 2020 receives the data request 30 sent by the data request source 10 (S102). The first determination unit 2040 determines the length of the delay to be applied to the data request 30 (S104). The first transmitting unit 2060 transmits the data request 30 to the data provider 20 after the determined delay has occurred (S106).
[0036] <Determination of delay length: S104> The first determination unit 2040 determines the length of the delay to be applied to the data request 30 (S104). As described above, the request delay device 2000 changes the timing of each data request 30 so that it is different from the original timing of the data request 30. For this purpose, the request delay device 2000 applies different delay lengths to the data requests 30. Note that it is not necessary for all delays to be of different lengths; it is sufficient for delays of different lengths to exist.
[0037] Below are some examples of specific methods for determining a delay every 30 data requests.
[0038] <<Example 1>> The first decision unit 2040 has a single queue called a "request queue" into which data requests 30 are inserted. When a data request 30 is received by the first receiving unit 2020, the first decision unit 2040 determines the length of time that the data request 30 will remain at the top of the request queue. The length of time determined here is called the "minimum delay length". Next, the first decision unit 2040 assigns the determined minimum delay length to the data request 30 and inserts the data request 30 into the request queue.
[0039] Data requests 30 in the request queue are retrieved sequentially from the top of the request queue. This means that the transmission of data request 30 is delayed until it reaches the top of the request queue and the minimum delay length for data request 30 has elapsed. In other words, the total delay length for data request 30 consists of 1) the time it takes for data request 30 to reach the top of the request queue, and 2) the minimum delay length assigned to data request 30.
[0040] The minimum delay length can be determined in various ways. For example, the first determination unit 2040 calculates a random value within a predetermined range and sets the calculated random value as the minimum delay length. The predetermined range is a range of values that are considered suitable for the minimum delay length of the data request 30.
[0041] It should be noted that there are various methods for calculating random values. For example, the first decision unit 2040 has a random number generator. The first decision unit 2040 uses the numbers output from the random number generator. In another embodiment, the first decision unit 2040 samples a value from a predefined probability distribution and uses the sampled value as the minimum delay length.
[0042] <<Example 2>> In this embodiment, the first decision unit 2040 has two or more request queues. When the first receiving unit 2020 receives a data request 30, the first decision unit 2040 selects one of the request queues into which the data request 30 should be inserted. The first decision unit 2040 also determines the minimum delay length of the data request 30. Then, the first decision unit 2040 assigns the determined minimum delay length to the data request 30 and inserts the data request 30 into the selected request queue. Each data request 30 in each request queue is treated similarly to the data request 30 in a single request queue in Embodiment 1.
[0043] When two or more request queues are used, the order of data requests 30 and the intervals between them can be changed. This is advantageous in preventing SCA because it avoids information leakage based on the order of requests as well as information leakage based on the intervals between requests.
[0044] There are various ways to select one of the request queues into which the data request 30 will be inserted. For example, the first decision unit 2040 may select one of the request queues in a round-robin manner. In another embodiment, the first decision unit 2040 may select the request queue with the shortest length. In yet another embodiment, the first decision unit 2040 may randomly select one of the request queues.
[0045] It should be noted that the minimum delay length for data request 30 may be calculated after data request 30 has been inserted into the request queue.
[0046] It should also be noted that if the minimum delay length is calculated using a random number generator, the first determination unit 2040 may include either a dedicated random number generator for each request queue or a single random number generator shared across all request queues.
[0047] <Sending data request: S106> The first transmission unit 2060 transmits the data request 30 to the data provider 20 after a delay has been allocated to the data request 30 (S106). As described above, if the data request 30 is managed using a request queue, the first transmission unit 2060 retrieves the data request 30 from the top of the request queue after the data request 30 has remained for the minimum delay length determined for that data request 30.
[0048] If two or more request queues are used, the delay periods of two or more data requests 30 may end simultaneously. In this case, the first transmitter 2060 transmits these data requests 30 in any order. For example, the first transmitter 2060 randomly determines the order of those data requests 30. In another embodiment, the first transmitter 2060 transmits the data requests 30 earlier as the identifier of the request queue in which the data request 30 is located decreases.
[0049] Second Embodiment <Overview> Figure 5 shows an overview of the request delay device 2000. Note that Figure 5 does not limit the operation of the request delay device 2000, but merely illustrates an example of the operation the request delay device 2000 can perform.
[0050] In response to receiving the data request 30, the data provider 20 sends a response 40 to the data requester 10. The response 40 is a response to the data request 30. If the data request 30 is a read request, the response 40 contains the data specified by the data request 30. If the data request 30 is a write request, the response 40 may include a status code indicating whether the write request was successful or failed.
[0051] The request delay device 2000 of the second embodiment introduces a delay not only to the data request 30 but also to the response 40. The length of the delay introduced to the response 40 can be determined in the same way as the delay introduced to the data request 30.
[0052] <Examples of advantageous effects> In the second embodiment, the request delay device 2000 introduces a delay not only to the data request 30 but also to each response 40 from the data provider 20 to the data requester 10. This prevents information leakage from the timing of the response 40 and from the timing of the data request 30.
[0053] The request delay device 2000 of the second embodiment will be described in more detail below.
[0054] <Example of Functional Configuration> Figure 6 is a block diagram showing an embodiment of the functional configuration of the request delay device 2000. The request delay device 2000 of the second embodiment further comprises a second receiving unit 2080, a second determination unit 2100, and a second transmitting unit 2120. The second receiving unit 2080 receives the responses 40 transmitted by the data provider 20. The second determination unit 2100 determines the length of the delay to be introduced for each response 40. The second transmitting unit 2120 transmits each response 40 to the data requester 10 after the determined delay has elapsed.
[0055] <Example of hardware configuration> The request delay device 2000 of the second embodiment can be implemented in the same way as the request delay device 2000 of the first embodiment, and is therefore shown in Figure 3. However, it should be noted that the auxiliary storage device 1080 of the second embodiment stores a program that implements the functions of the request delay device 2000 in the second embodiment.
[0056] As described in the first embodiment, the request delay device 2000 can be implemented using multiple computers. In some embodiments, the request delay device 2000 can be implemented in a first computer and a second computer. The first computer is configured to implement a first receiving unit 2020, a first decision unit 2040, and a first transmitting unit 2060. The second computer, on the other hand, is configured to implement a second receiving unit 2080, a second decision unit 2100, and a second transmitting unit 2120.
[0057] <Processing flow> Figure 7 is a flowchart showing an example of the processing flow performed by the request delay device 2000 to process response 40. The processing shown in Figure 7 is performed for each response 40. Note that the request delay device 2000 in the second embodiment processes the data request 30 in the same way as the request delay device 2000 in the first embodiment.
[0058] The second receiving unit 2080 receives the response 40 transmitted by the data provider 20 (S202). The second determination unit 2100 determines the length of the delay to be introduced to the response 40 (S204). The second transmitting unit 2120 transmits the response 40 to the data requester 10 after the determined delay has elapsed (S206).
[0059] <Determination of delay length: S204> The second first determination unit 2040 determines the length of the delay that will result in response 40 (S204). The length of the delay that will result in response 40 can be determined in the same way as the length of the delay that will result in data request 30.
[0060] For example, the second decision unit 2100 has a single queue called the "response queue" into which responses 40 are inserted. When a response 40 is received by the second receiving unit 2080, the second decision unit 2100 determines the length of time that response 40 will remain at the top of the response queue. The length of time determined here is also called the "minimum delay length". The second decision unit 2100 then assigns the determined minimum delay length to the response 40 and inserts the response 40 into the response queue. Responses 40 in the response queue are retrieved in order from the top of the response queue. Note that the minimum delay length of a response 40 can be determined in the same way as the minimum delay length of a data request 30.
[0061] In another embodiment, the second decision unit 2100 has two or more response queues. When the second receiver 2080 receives a response 40, the second decision unit 2100 selects one of the response queues into which the response 40 will be inserted. The second decision unit 2100 also determines the minimum delay length of the response 40. The second decision unit 2100 then assigns the determined minimum delay length to the response 40 and inserts the response 40 into the selected response queue. Each response 40 in each response queue is treated similarly to a response 40 in a single response queue.
[0062] <Sending response: S206> The second transmitting unit 2120 transmits the response 40 to the data requester 10 after a delay has been allocated to the response 40 (S206). The transmission of the response 40 to the data requester 10 can be carried out in the same way as the transmission of the data request 30 to the data provider 20.
[0063] Specifically, as described above, if the response 40 is managed using a response queue, the second transmission unit 2120 retrieves the response 40 from the top of the response queue after it has remained for a minimum delay length determined for that response 40. The retrieved response 40 is then sent to the data requester 10.
[0064] If two or more response queues are used, two or more responses 40 may have a delay period during which they are completed simultaneously. In this case, the second transmitter 2120 can transmit those responses 40 in any order, such as a random order or based on an identifier.
[0065] <Restoring the Order> In some cases, a delay in the data request 30 or response 40 may result in the response 40 being output to the data requester 10 in a different order than the corresponding data requests 30. However, if the response 40 is output to the data requester 10 in a different order than the corresponding data requests 30, the data requester 10 may not be able to process the response 40.
[0066] Suppose data requester 10 sends four data requests R1, R2, R3, and R4 in this order. In addition, suppose data provider 20 generates responses S1, S2, S3, and S4 to requests R1, R2, R3, and R4, respectively. In such a case, responses S1, S2, S3, and S4 may need to be delivered to data requester 10 in this exact order.
[0067] Therefore, if the order of the responses 40 may differ from the order of their corresponding data requests 30, the request delay device 2000 can be configured to ensure that the responses 40 are output to the data requester 10 in the same order as their corresponding data requests 30. In other words, the second transmitter 2120 is configured to transmit each response 40 after all responses 40 corresponding to data requests 30 received earlier than the data request 30 corresponding to that response 40 have been transmitted. For example, in the embodiment described above, the second transmitter 2120 transmits response S4 after transmitting responses S1, S2, and S3.
[0068] For this purpose, the request relay device 2000 may further include a sequence synchronization unit. Figure 8 is a block diagram showing an embodiment of the functional configuration of the request delay device 2000, including the sequence synchronization unit 2140.
[0069] The sequence synchronization unit 2140 records the order in which the data requests 30 were received by the first receiving unit 2020. For example, the sequence synchronization unit 2140 includes a table called a "registration table" that shows the order of pending data requests 30. In this context, "a data request 30 is pending" means that the response 40 corresponding to that data request 30 has not yet been sent to the data request source 10.
[0070] Figure 9 shows an example of the structure of a registration table. The registration table 200 has five columns, namely index 201, type flag 202, ready flag 203, location 204, and data 205. Each row of the registration table 200 shows information for a data request 30 and the response 40 corresponding to that data request 30.
[0071] Index 201 indicates the index of the row in registration table 200. Type flag 202 indicates whether data request 30 is a write request or a read request. Ready flag 203 indicates whether the response 40 is ready to be sent to data requester 10. Note that "ready to send response 40" means that response 40 has already gone through a delay.
[0072] Location 204 indicates the location of the data within the data source 20. If the data request 30 is a write request, location 204 indicates the location in the data source 20 where the data specified by the data request 30 should be stored. If the data request 30 is a read request, location 204 indicates the location in the data source 20 from which the data specified by the data request 30 will be read.
[0073] Data 205 indicates the data contained in the corresponding data request 30. If data request 30 is a write request, data 205 may indicate a status code. If data request 30 is a read request, data 205 may indicate the data provided by the data provider 20.
[0074] Two indexes are provided to manage the registration table 200: a request index 206 and a transmission index 207. The request index 206 indicates the index of the row in the registration table 200 where the information for the next data request 30 should be registered. In the embodiment shown in Figure 9, the request index 206 is "2". Therefore, the first receiving unit 2020 registers the information for the next data request 30 in the second row.
[0075] The transmission index 207 indicates the index of a row in the registration table 200 that stores information about the response 40 to be sent next to the data provider 20. In the embodiment shown in Figure 9, the transmission index 207 shows "1". Therefore, the first row contains the information about the response 40 to be sent next.
[0076] The following describes in detail how the request delay device 2000 operates to manage the order of responses.
[0077] <<When data request 30 is received>> When the first receiving unit 2020 receives the data request 30, the sequence synchronization unit 2140 can operate as illustrated in Figure 10. Figure 10 is a flowchart showing an example of the process flow for managing the registration table 200 when the data request 30 is received. When the first receiving unit 2020 receives the data request 30, the sequence synchronization unit 2140 determines whether the registration table 200 is full or not (S302). If the registration table 200 is full (S302: YES), the sequence synchronization unit 2140 waits until space becomes available in the registration table 200 (S304).
[0078] If the registration table 200 is not full (S302: NO), the sequence synchronization unit 2140 further determines whether any row in the registration table 200 contains location 204 that matches the position specified by the data request 30 (S306). If a row in the registration table 200 contains location 204 that matches the position specified by the data request 30 (S306: YES), the sequence synchronization unit 2140 remains in this procedure until no row in the registration table 200 contains location 204 that matches the position specified by the data request 30 (S308).
[0079] If there is no row in the registration table 200 that contains location 204 matching the position specified in the data request 30 (S306: NO), the sequence synchronization unit 2140 stores the data request information in the row identified by the request index 206 and updates the request index 206 to the next index (S310).
[0080] <<If response 40 is received>> When the second receiving unit 2080 receives the response 40, the sequence synchronization unit 2140 updates the row in the registration table 200 corresponding to the response 40. Specifically, the sequence synchronization unit 2140 stores the data indicated by the response 40 in the data 205 of the row corresponding to the response 40. Note that the row corresponding to the response 40 is the row whose location 204 indicates the position indicated by the response 40.
[0081] <<In case of delay>> After the allocated delay has passed in response 40, the second transmitting unit 2120 can operate as illustrated in Figure 11. Figure 11 is a flowchart showing an example of the process flow for sending response 40. In Figure 11, response 40 after the allocated delay is denoted as "Rt".
[0082] The second transmission unit 2120 sets the ready flag 203 of the row corresponding to the response Rt to "Y" (S402). The second transmission unit 2120 determines whether the transmission index 207 indicates the row corresponding to the response Rt (S404).
[0083] If transmission index 207 does not indicate a row corresponding to response Rt (S404:NO), the process shown in Figure 11 terminates. This means that the transmission of response Rt is paused until all responses 40 that should be sent before response Rt have been sent.
[0084] If the transmission index 207 indicates the row corresponding to the response Rt (S404: YES), the second transmission unit 2120 transmits the response Rt to the data requester 10 (S406). The second transmission unit 2120 sets the transmission index 207 to the next index (S408).
[0085] While waiting for the transmission of response Rt, the transmission of one or more responses 40 may be paused. Therefore, after step S408, the second transmission unit 2120 also transmits the paused responses 40 as follows.
[0086] The second transmission unit 2120 determines whether the transmission index 207 is the same index as the request index 206 (S410). If the transmission index 207 is the same index as the request index 206 (S410: YES), the process shown in Figure 11 is completed. This is an example where the registration table 200 becomes empty.
[0087] In addition, the second transmission unit 2120 determines whether the ready flag 203 of the row identified by the transmission index 207 is "Y" (S412).
[0088] If the ready flag 203 of the row identified by the transmission index 207 indicates "Y" (S412: YES), the second transmission unit 2120 sends a response 40 corresponding to the row identified by the transmission index 207 to the data requester 10 (S414). The second transmission unit 2120 sets the transmission index 207 to the next index (S416).
[0089] Steps S410 to S416 are repeated until the second transmitter 2120 determines YES in step S410 or NO in step S412. This means that steps S410 to S416 are repeated until the second transmitter 2120 transmits all responses 40 that were waiting to transmit response Rt.
[0090] <Variation> The request delay device 2000 can be configured so as not to cause a delay in response 40 while the sequence restoration is being performed. In this case, the request delay device 2000 does not include the second decision unit 2100. When the second receiving unit 2080 receives response 40, the second transmitting unit 2120 performs the processing shown in Figure 11. This allows the sequence restoration to be performed without causing a delay in response 40.
[0091] Programs can be stored and provided to a computer using any type of non-temporary computer-readable medium. Non-temporary computer-readable medium includes any type of tangible storage medium. Examples of non-temporary computer-readable medium include magnetic storage media (e.g., floppy disks, magnetic tapes, hard disk drives), magneto-optical storage media (e.g., magneto-optical disks), CD-ROMs (compact disc read-only memory), CD-Rs (compact disc recordable), CD-R / Ws (compact disc rewritable), and semiconductor memory (e.g., mask ROMs, PROMs (programmable ROMs), EPROMs (erasable PROMs), flash ROMs, RAMs (random access memory)). Programs can also be provided to a computer using any type of temporary computer-readable medium. Embodiments of temporary computer-readable medium include electrical signals, optical signals, and electromagnetic waves. Temporary computer-readable medium can be provided to a computer via wired communication lines (e.g., electric wires and optical fibers) or wireless communication lines.
[0092] While the present disclosure has been described above with reference to embodiments, it is not limited to the embodiments described above. Various modifications that will be understood by those skilled in the art can be made to the structure and details of the present disclosure within the scope of the present invention.
[0093] The embodiments disclosed above, in whole or in part, may be described as follows, but are not limited to those described above. <Note> (Note 1) A request delay device, It comprises at least one logic circuit located between the data requester and the data provider, and the logic circuit is Retrieving two or more requests sent from the data requester to the data provider, Determining the length of the delay for the aforementioned request, wherein the determined length of the delay is different for at least two requests. A request delay device configured to transmit the request after a predetermined delay, wherein the length of the delay is determined using a random number generator or a probability distribution. (Note 2) Determining the length of the aforementioned delay is, Determining the length of time the aforementioned request remains at the top of the request queue, This includes inserting the request into the request queue, Sending the aforementioned request means After the request remains at the top of the request queue for the period determined for the data request, the request is removed from the request queue. The request delay device according to Appendix 1, which includes transmitting the request taken from the request queue. (Note 3) Determining the length of the aforementioned delay is, Select one of the request queues into which the aforementioned request should be inserted, The length of time for which the request should remain at the top of the selected request queue is determined, This includes inserting the request into the selected request queue, Sending the aforementioned request means After the request remains at the top of the request queue for the period determined for the data request, the request is removed from the request queue. The request delay device according to Appendix 1, which includes transmitting the request taken from the request queue. (Note 4) The length of the period during which the request remains at the head of the request queue is determined using the random number generator or the probability distribution, as described in Appendix 2 or 3, for the request delay device. (Note 5) The aforementioned logic circuit is Receiving a response to the aforementioned request from the data provider, Determining the length of the delay of the response, wherein the determined delay lengths are different for at least two responses. A request delay device according to Appendix 1, further configured to transmit the response after a delay determined for the response. (Note 6) The request delay device according to Appendix 1, wherein transmitting the response includes transmitting each response after the response to the request that was received prior to the request corresponding to that response has been transmitted. (Note 7) A request delay method performed by a computer, Retrieving two or more requests sent from the data requester to the data provider, Determining the length of the delay for the aforementioned request, wherein the determined length of the delay is different for at least two requests, This includes transmitting the request after the delay determined for the request, The aforementioned computer is located between the data requester and the data provider. The length of the delay is determined using a random number generator or a probability distribution, in a requested delay method. (Note 8) Determining the length of the aforementioned delay is, Determine the length of time the request remains at the top of the request queue, This includes inserting the aforementioned request into the aforementioned request queue, Sending the aforementioned request means After the request has remained at the top of the request queue for the period determined for the data request, the request is retrieved from the request queue. The request delay method according to Appendix 7, which includes transmitting the request taken from the request queue. (Note 9) Retrieving two or more requests sent from the data requester to the data provider, Determining the length of the delay for the aforementioned request, wherein the determined length of the delay is different for at least two requests. After the delay determined for the aforementioned request, the computer is instructed to send the request, The aforementioned computer is located between the data requester and the data provider. The length of the aforementioned delay is determined using a random number generator or a probability distribution in the program. (Note 10) Determining the length of the aforementioned delay is, The length of time to keep the request at the top of the request queue is determined, This includes inserting the request into the request queue, Sending the aforementioned request means After the request remains at the top of the request queue for the period determined for the data request, the request is removed from the request queue. The program according to Appendix 9, which includes transmitting the request taken from the request queue. [Explanation of Symbols]
[0094] 10 Data Requesters 20 Data providers 30 Data Requests 40 Responses 200 registration tables 201 Index 202 Type Flag 203 Lady Flag 204 Location 205 Data 206 Request Index 207 Sending Index 1000 computers 1020 Bus 1040 processor 1060 Main storage 1080 auxiliary storage 1100 First Interface 1120 Second Interface 2000 Request Delay Device 2020 First Receiving Unit 2040 First Decision Section 2060 First Transmitter 2080 Second Receiving Unit 2100 Second Decision Section 2120 Second Transmitter 2140 Sequence synchronization part
Claims
1. A request delay device, It comprises at least one logic circuit located between the data requester and the data provider, and the logic circuit is Retrieving two or more requests sent from the data requester to the data provider, The length of the delay for the aforementioned request is determined such that the determined delay lengths are different for at least two requests. A request delay device configured to transmit the request after a predetermined delay, wherein the length of the delay is determined using a random number generator or a probability distribution.
2. Determining the length of the aforementioned delay is, Determining the length of time the aforementioned request remains at the top of the request queue, This includes inserting the request into the request queue, Sending the aforementioned request means After the request remains at the top of the request queue for the period determined for the data request, the request is removed from the request queue. The request delay device according to claim 1, comprising transmitting the request taken from the request queue.
3. Determining the length of the aforementioned delay is, Select one of the request queues into which the aforementioned request should be inserted, The length of time for which the request should remain at the top of the selected request queue is determined, This includes inserting the request into the selected request queue, Sending the aforementioned request means After the request remains at the top of the request queue for the period determined for the data request, the request is removed from the request queue. The request delay device according to claim 1, comprising transmitting the request taken from the request queue.
4. The request delay device according to claim 2 or 3, wherein the length of the period during which the request remains at the head of the request queue is determined using the random number generator or the probability distribution.
5. The aforementioned logic circuit is Receiving a response to the aforementioned request from the data provider, The length of the delay of the response is determined such that the determined delay lengths are different for at least two responses. The request delay device according to claim 1, further configured to transmit the response after a delay determined for the response.
6. The request delay device according to claim 1, wherein transmitting the response includes transmitting each response after the response to the request that was received prior to the request corresponding to that response has been transmitted.
7. A request delay method performed by a computer, Retrieving two or more requests sent from the data requester to the data provider, Determining the length of the delay for the aforementioned request, wherein the determined length of the delay is different for at least two requests, This includes transmitting the request after the delay determined for the request, The aforementioned computer is located between the data requester and the data provider. The length of the delay is determined using a random number generator or a probability distribution, in a requested delay method.
8. Determining the length of the aforementioned delay is, Determine the length of time the request remains at the top of the request queue, This includes inserting the aforementioned request into the aforementioned request queue, Sending the aforementioned request means After the request has remained at the top of the request queue for the period determined for the data request, the request is retrieved from the request queue. The request delay method according to claim 7, further comprising transmitting the request retrieved from the request queue.
9. Retrieving two or more requests sent from the data requester to the data provider, The length of the delay for the aforementioned request is determined such that the determined delay lengths are different for at least two requests. After the delay determined for the aforementioned request, the computer is instructed to send the request, The aforementioned computer is located between the data requester and the data provider. The length of the aforementioned delay is determined using a random number generator or a probability distribution in the program.
10. Determining the length of the aforementioned delay is, The length of time to keep the request at the top of the request queue is determined, This includes inserting the request into the request queue, Sending the aforementioned request means After the request remains at the top of the request queue for the period determined for the data request, the request is removed from the request queue. The program according to Appendix 9, which includes transmitting the request taken from the request queue.