Patent Description:
In recent years, for the purpose of speeding up communication, it is becoming common to use a high-speed connection device of a point to point type from a bus device that has been used conventionally for a network construction. As a network construction method, it is becoming common to use a packet-switched network. While communication is being sped up by a high-speed connection device of a point to point type or a packet-switched network, latency of communication has been increasing due to a routing function by a header, a footer, or a switch in a packet.

On the other hand, in recent years, there has been a rapid progress in replacing work that has conventionally been performed locally with a cloud service. Conventional legacy devices are often used for locally performed work, and are still being used for local low-speed buses. Such legacy devices are often prioritized in terms of cost, and are less likely to be redesigned to support high-speed connection interfaces. Therefore, there has been a continuous demand for a technique capable of connecting to a packet-switched network free from redesign of a legacy device and more easily connecting a cloud and the legacy device.

A low-speed bus to which a legacy device is connected sometimes has no choice but to further slow down due to latency of the packet-switched network. For example, in a bus operating at <NUM>, <NUM> is one clock, and the bus sometimes return a response at <NUM>. In the packet-switched network, latency is not fixed, but becomes about <NUM> when communication is possible at <NUM> Gbps. In this case, since the latency of the packet-switched network becomes <NUM> times <NUM>, which is the response time of the bus, it is necessary to coincide with the clock of the bus to <NUM> in accordance with the latency of the packet-switched network. Then, the operation clock of the bus decreases to about <NUM>, and it has been necessary to further reduce the low transfer speed that is originally lower than that in the packet-switched network.

As a technique for reducing latency, cut-through communication is generally known (See, for example, Patent Literature <NUM> (PTL1)). A technique for predicting a subsequent command from a previously transmitted command is known (See, for example, Patent Literature <NUM> (PTL2)). In addition, a technique for predicting input by a user using a Markov chain model to reduce latency is known (See, for example, Non Patent Literature <NUM> (NPL1)).

A further patent literature document <CIT> relates to a communication device and a communication system which relay communication between terminals.

[NPL1] Outatime: Using Speculation to Enable Low-Latency Continuous Interaction for Cloud Gaming https://www. com/en-us/research/wp-content/uploads/<NUM>/<NUM>/outatime_techreport2014.

The inventor has studied a transmission method of a command via a network and has found various problems. Specifically, for example, in a system where a first device connected to a network transmits a command, when the latency of the connected network is large, there is a possibility that a second device to which the command is transmitted cannot respond to the command within the response time of the device that has transmitted the command.

One objective that the example embodiments disclosed herein to achieve is to reduce latency of communications via the network. It should be noted that this object is merely one of a plurality of objects to be achieved by the plurality of example embodiments disclosed herein. Other objects or problems and novel features will be made apparent from the description of the present description or the accompanying drawings.

In a first aspect, a communication system includes a first external device, a second external device, a first communication device, and a second communication device. The first communication device includes a command prediction unit and a first communication processing unit. The command prediction unit is configured to predict an address and instruction content in a first command from a part of the first command having been input from the first external device, output, as a second command, the address and the instruction content having been predicted, and output first flag information indicating whether the second communication device needs to wait for transmission of the second command. The first communication processing unit is configured to transmit the second command and the first flag information to the second communication device. The second communication device includes a second communication processing unit. The second communication processing unit is configured to receive the second command and the first flag information, and transmit the second command to the second external device when the first flag information indicates that the second communication device does not need to wait for transmission of the second command.

According to the above aspect, it is possible to provide a communication system that contributes to reducing latency of communication via a network.

Specific example embodiments will be described below in detail with reference to the drawings. In the drawings, the same or corresponding elements are denoted by the same reference signs, and redundant description will be omitted as necessary in order to simplify the description.

The example embodiments described below can be implemented independently, or can be implemented in appropriate combination. The plurality of example embodiments have novel features different from one another. Therefore, the plurality of example embodiments contribute to different objects or solving problems, and contribute to achieving effects different from one another.

<FIG> illustrates a configuration example of a communication system <NUM> according to the present example embodiment. Each of the elements shown in <FIG> is a network function. Each of the elements shown in <FIG> can be implemented, for example, as dedicated hardware, as software running on dedicated hardware, or as a virtualization function instantiated on an application platform running on general-purpose hardware.

In the example of <FIG>, the communication system <NUM> includes an external device <NUM>, a communication device <NUM>, a communication device <NUM>, and an external device <NUM>. The communication device <NUM> includes a communication processing unit <NUM> and a command prediction unit <NUM>, and the communication device <NUM> includes a communication processing unit <NUM>.

Examples of the external device include, but are not limited to, a communication apparatus such as a computer present on a network, and various registers or the like present in the apparatus. The communication device is an apparatus directly connected to a network, and examples the communication device include, but are not limited to, a router device, a hub device, a network interface card, a computer present or the like on the network.

The external devices and the communication devices described in the present example embodiment may be connected via a packet-switched network or may be directly connected by a communication cable or the like. Naturally, examples of the connection method to the packet-switched network and the direct connection method of the external devices and the communication devices include, but are not limited to, wireless communication connection and wired communication connection.

The communication processing unit <NUM> is connected to the external device <NUM> and the communication device <NUM> via the network. The communication processing unit <NUM> receives a command for the external device <NUM> and transmits a command and first flag information to other devices including the external device <NUM>.

The communication processing unit <NUM> is connected to the external device <NUM> and the communication device <NUM> via the network. The communication processing unit <NUM> receives a command for the external device <NUM> and the first flag information. In a case where the first flag information indicates that it is not necessary to wait for transmission of the command to the external device <NUM>, the communication processing unit <NUM> transmits the command to the external device <NUM>.

The command in the present example embodiment includes instruction content to the device and an address indicating a transmission destination of the instruction content. Examples of the description format of the address include Internet Protocol version <NUM> (IPv4), Internet Protocol version <NUM> (IPv6) or the like, but are not limited to as long as the communication device or the external device to which the command is transmitted can be specified. The instruction content include, but are not limited to, Read, Write and the like.

The command prediction unit <NUM> predicts the instruction content and the address in the first command from a part of the first command having been input from the external device <NUM>, and outputs, as the second command, the instruction content and the address having been predicted.

The first command in the present example embodiment is a command that is actually output from the external device <NUM> and includes the instruction content to the external device and the address of the external device. In addition, the second command in the present example embodiment is a command that the communication device <NUM> predicts from a part of the first command and outputs.

The command prediction unit <NUM> also outputs the first flag information.

The first flag information indicates whether the communication device <NUM> needs to wait for transmission of the second command to the external device <NUM>. More specifically, in a case where it is necessary for the communication device <NUM> to wait for transmission of the second command to the external device <NUM>, the first flag information is given <NUM>. For the second command in which the first flag information is not given <NUM>, the first flag information is given <NUM>.

An example in which the first flag information is given <NUM> for the command will be described. For example, in a case where the address refers to a power control register of an apparatus and a command including an instruction indicating Write is transmitted to the address, there is a possibility that the power of the apparatus that receives and executes the command is turned off. Therefore, for such a command, the first flag information is given <NUM>.

It should be noted that the reference for giving <NUM> to the first flag information does not depend only on the instruction content included in the command. For example, for a command including an instruction indicating Read with respect to an address associated with a register that records the state of an apparatus, the register is not greatly affected. Therefore, for the command, the first flag information is given <NUM>. However, even if an instruction indicating the same Read is included, the first flag information is sometimes given <NUM> depending on the external device indicated by the address. For example, there is a register such as a Read & Clear register in which contents are erased after a Read instruction is executed. For the second command including a Read instruction for such register, the first flag information is given <NUM>.

Subsequently, determination of the second command and a transmission method according to the present example embodiment will be described below with reference to an example illustrated in <FIG>.

In the present example embodiment, the communication device <NUM> predicts the second command from a part of the first command (S101) input from the external device <NUM> (S102), and transmits the second command together with the first flag information to the communication device <NUM> (S103). The communication device <NUM> receives the second command and the first flag information (S104), and transmits the second command to the external device <NUM> when it is not necessary to wait for transmission of the second command to the external device <NUM> (S105).

<FIG> illustrates a configuration example of a communication system <NUM> according to the present example embodiment. In the present example embodiment, a communication device <NUM> includes a communication processing unit <NUM>, a command prediction unit <NUM>, and a comparison unit <NUM>.

The communication processing unit <NUM> is connected to the external device <NUM> and a communication device <NUM>, similarly to the communication processing unit <NUM> in the first example embodiment. The communication processing unit <NUM> receives a command for the external device <NUM> and transmits the command, the first flag information, and the comparison result to other devices including the communication device <NUM>.

The command prediction unit <NUM> holds a prediction table <NUM> illustrated in <FIG> or a prediction table <NUM> illustrated in <FIG>. The command prediction unit <NUM> predicts a command similarly to the command prediction unit <NUM> in the first example embodiment, and outputs the predicted command as a second command. The command prediction unit <NUM> outputs the first flag information, similarly to the command prediction unit <NUM> in the first example embodiment.

In other words, the first flag information indicates whether the second command greatly affects the external device <NUM>. For example, in a case where the transmission destination is the Read & Clear register illustrated in the first example embodiment, the instruction content in the second command is Read, and the prediction of the first command is wrong (in a case where the first command and the second command do not match), unintended data erasure is performed when the command is transmitted to the register. In such a case, there is a possibility that the second command greatly affects the external device <NUM>, and the first flag information in the second command is given <NUM>.

The comparison unit <NUM> compares the first command with the second command and outputs a comparison result. As described in the first example embodiment, the first command is a command that is actually output from the external device <NUM> and includes the instruction content to the external device and the address of the external device. As described in the first example embodiment, the second command is a command that the communication device <NUM> predicts from a part of the first command and outputs. The comparison unit <NUM> compares the instruction content described in the first command and the address indicating the transmission destination of the instruction content with the instruction content described in the second command and the address indicating the transmission destination of the instruction content. In addition, the comparison unit <NUM> outputs a comparison result.

The communication device <NUM> in the present example embodiment includes a communication processing unit <NUM>. The communication processing unit <NUM> is connected to the external device <NUM> and the communication device <NUM> similarly to the communication processing unit <NUM> in the first example embodiment. The communication processing unit <NUM> receives the command for the external device <NUM>, the first flag information, and the comparison result from the communication device <NUM>. In a case where the first flag information indicates <NUM> (it is not necessary to wait for transmission of the second command), the communication processing unit <NUM> transmits a command to the external device <NUM>. In a case where the first flag information indicates <NUM> (it is necessary to wait for transmission of the second command), the communication processing unit <NUM> waits for transmission of the command to the external device <NUM> until the comparison result is received.

The prediction table <NUM> included in command prediction unit <NUM> will be described with reference to <FIG>. The prediction table <NUM> includes an entry number, an address to which the instruction content of the second command is transmitted, the instruction content of the second command, and the first flag information. For example, the address described in the prediction table <NUM> may be compressed by the appearance probability of the address. Examples of the compression method include, but are not limited to, Huffman encoding. The prediction table <NUM> may be updated by various means as necessary.

Address compression using Huffman encoding and a second command prediction method using the prediction table <NUM> described by the compressed address will be described with reference to <FIG>.

Huffman encoding is one of the methods for compressing in such a way that the higher the frequency of the command to be executed is, the shorter the bit strings with which identification can be performed is. In the case of the prediction table <NUM> illustrated in <FIG>, the smaller the entry number of the command is, the higher the probability that the external device <NUM> transmits is. Therefore, the command whose entry number is <NUM> is given <NUM> to the first bit. It is assumed that the command execution rate per unit time is calculated and the total of the execution probabilities of the entry numbers <NUM> to <NUM> is <NUM>%. In this case, the second command output at the time point of receiving up to the head <NUM> bits of the address matches the first command with a probability of <NUM>%.

Subsequently, the operation of the communication system <NUM> according to the present example embodiment will be described below with reference to <FIG>. <FIG> illustrate the operation in a case where the communication processing unit <NUM> does not need to wait for transmission of a command to the external device <NUM> (a case where the received first flag information indicates <NUM>).

First, the operation when the first command and the second command match will be described with reference to <FIG>.

First, the external device <NUM> transmits the first command from the address portion to the communication device <NUM> (S201). The communication device <NUM> starts receiving the first command from the external device <NUM> using the communication processing unit <NUM>. Every time <NUM> bit is received, the communication processing unit <NUM> transfers the received address to the command prediction unit <NUM> bit by bit (S202). The command prediction unit <NUM> predicts the first command using the prediction table <NUM> or the prediction table <NUM> (S203). Here, the address and the instruction content are predicted from the head few bits of the address. Then, at the time point when the first command can be predicted, the command prediction unit <NUM> outputs the predicted command as the second command to the communication processing unit <NUM> (S204). The command prediction unit <NUM> outputs the first flag information to the communication processing unit <NUM> (S204). For example, in a case where the transmission destination of the address and the instruction content can be predicted by the head <NUM> bits of the received address, the command prediction unit <NUM> outputs the predicted command to the communication processing unit <NUM> as a second command, and also outputs, to the communication processing unit <NUM>, the first flag information associated to the second command. The communication processing unit <NUM> transmits the second command and the first flag information to the communication device <NUM> (S205). The communication processing unit <NUM> in the communication device <NUM> receives the second command and the first flag information from the communication device <NUM>. The communication device <NUM> confirms the first flag information (S206). In a case where the first flag information indicates <NUM> (it is not necessary to wait for transmission of the second command), the communication device <NUM> transmits the second command to the external device <NUM> (S207). The operation in a case where the first flag information indicates <NUM> (in a case where it is necessary to wait for transmission of the second command) will be described later.

The external device <NUM> receives the second command from the communication device <NUM> and executes the instruction content included in the second command (S208). On the other hand, upon completing the reception of the first command (S209), the communication processing unit <NUM> in the communication device <NUM> transfers the first command and the second command to the comparison unit <NUM>. The comparison unit <NUM> compares the first command with the second command (S210). When the first command and the second command match (S211), the communication processing unit <NUM> performs transfer of a response signal (ACK) to the second command and transfer of data to be transmitted and received between the external device <NUM> and the external device <NUM> based on the second command (S212). The operation when the first command and the second command do not match will be described later.

Due to this, the communication system <NUM> according to the present example embodiment can prevent the external device <NUM> from giving an unintended influence to the external device <NUM> by the second command, and can reduce the latency of the response to the command transmitted by the external device <NUM>.

Next, the operation when the first command and the second command do not match, particularly when the addresses do not match will be described with reference to <FIG>. The operations from S201 to S210 are the same as the above-described operations. The comparison unit <NUM> of the communication device <NUM> determines that the addresses of the first command and the second command do not match (S213). Since the second command has already been transmitted to the external device <NUM> in S207, the communication processing unit <NUM> executes the same operation as in S212. The communication processing unit <NUM> transmits the first command to the address described in the first command (S214). Here, a case where the address described in the first command indicates a communication device different from the communication device <NUM> will be described. <FIG> is a view illustrating another configuration example of the communication system according to an example embodiment. The communication system in <FIG> includes the external device <NUM>, the communication device <NUM>, the communication device <NUM>, and the external device <NUM>, similarly to <FIG>. The communication system in <FIG> includes a communication device <NUM> and an external device <NUM>. The communication device <NUM> includes a communication processing unit <NUM>. Here, for example, in a case where the address described in the first command indicates the communication device <NUM>, the communication processing unit <NUM> transmits the first command to the external device <NUM> via the communication device <NUM>. The external device <NUM> executes the first command. Note that <FIG> and <FIG> are examples in a case where the instruction content in the second command is Read or Write, but the second command is not limited to them.

According to the above operation, in the communication system <NUM> according to the present example embodiment, even when a command is transmitted to a wrong address in command prediction, the communication device <NUM> does not perform cancellation of the command. Therefore, by preventing unnecessary cancellation, it is possible to prevent waste of communication resources.

Next, the operation when the first command and the second command do not match, in particular, when the instruction contents do not match will be described with reference to <FIG>. The operations from S201 to S210 are the same as the above-described operations. The comparison unit <NUM> determines that the instruction contents of the first command and the second command do not match (S215). The communication processing unit <NUM> stops the transfer of the ACK for the second command and the transfer of the data transmitted and received between the external device <NUM> and the external device <NUM> based on the second command (S216).

The communication processing unit <NUM> transmits the first command to the communication device <NUM> (S217). The communication device <NUM> transmits the first command to the external device <NUM> (S217). The external device <NUM> executes the first command (S218). The above operation makes it possible to, in the communication system <NUM>, prevent a wrong command from consuming various resources of the communication device <NUM>.

Next, the operation in a case where the communication processing unit <NUM> needs to wait for transmission of the second command (in a case where the first flag information indicates <NUM>) will be described with reference to <FIG>. <FIG> illustrates the operation in a case where the communication processing unit <NUM> needs to wait for transmission of the second command (in a case where the first flag information indicates <NUM>) and the comparison result between the first command and the second command indicates that the address of the first command and the address of the second command match. The operations from S201 to S205 are the same as the above-described operations. When the first flag information indicates <NUM> (S219), the communication device <NUM> does not transmit the received second command to the external device <NUM>, and waits for a comparison result between the first command and the second command (S220). The operations from S209 to <NUM> in the communication device <NUM> are the same as the above-described operations. The communication processing unit <NUM> transmits the comparison result to the communication device <NUM> (S221). Since the comparison result between the first command and the second command indicates that the first command and the second command match, the communication processing unit <NUM> transmits the second command to the external device <NUM> (S222). The operation in a case where the comparison result output by the comparison unit <NUM> indicates that the first command and the second command are different will be described later. The external device <NUM> executes the second command in the same manner as in S208.

Next, a case where the first flag information indicates <NUM> and the comparison result between the first command and the second command indicates that the address of the first command and the address of the second command do not match will be described with reference to <FIG>. In a case where the first flag information indicates <NUM> (necessity to wait for transmission of the second command) and the comparison result between the first command and the second command indicates that the address of the first command and the address of the second command do not match, the communication processing unit <NUM> transmits, to the communication device <NUM>, a message indicating that the communication processing unit <NUM> does not transmit the second command to the external device <NUM> (S223). Operations other than S223 are as described above. The communication processing unit <NUM> may execute the operation of S214 immediately after determining that the address of the first command and the address of the second command do not match in S213. In this case, the operations of S221 and S223 become unnecessary. The configuration for executing such operation will be described. <FIG> is a view illustrating another configuration example of the communication system according to an example embodiment. The communication system in <FIG> includes the external device <NUM>, the communication device <NUM>, the communication device <NUM>, and the external device <NUM>, similarly to <FIG>. The communication device <NUM> in <FIG> includes the communication processing unit <NUM> and a timer <NUM>. That is, the communication device <NUM> includes the timer <NUM>, and the timer <NUM> sets a discretionary time and starts countdown after executing the operation of S220. When the count becomes <NUM>, the communication device <NUM> stops waiting for the comparison result and discards the second command.

Due to this, in the communication system <NUM> according to the present example embodiment, in a case where the predicted command (second command) has a large influence on the external device <NUM>, it is possible to prevent the external device <NUM> from giving an unintended large influence to the external device <NUM> by the second command, and transmit the first command to an intended communication device.

Next, a case where the first flag information indicates <NUM>, and the comparison result between the first command and the second command indicates that the instruction content in the first command and the instruction content in the second command do not match will be described with reference to <FIG>.

In <FIG>, each operation is the same as that described above. By combining the above-described operations as in <FIG>, in the communication system <NUM> according to the present example embodiment, in a case where the predicted command (second command) has a large influence on the external device <NUM>, it is possible to prevent the external device <NUM> from giving an unintended large influence to the external device <NUM> by the second command, and transmit the first command to the communication device <NUM>.

<FIG> illustrates a configuration example of a communication system <NUM> according to the present example embodiment. In the present example embodiment, the communication device <NUM> includes a communication processing unit <NUM> and the command prediction unit <NUM>.

The communication processing unit <NUM> is connected to the external device <NUM> and the communication device <NUM>, similarly to the communication processing unit <NUM> in the first example embodiment. The communication processing unit <NUM> receives a command for the external device <NUM> and transmits the command and the first flag information to other devices including the communication device <NUM>.

The command prediction unit <NUM> holds a prediction table <NUM> illustrated in <FIG> or a prediction table <NUM> illustrated in <FIG>. The command prediction unit <NUM> predicts a command similarly to the operation of the command prediction unit <NUM> in the second example embodiment, and outputs the predicted command as the second command. The command prediction unit <NUM> outputs the first flag information, similarly to the command prediction unit <NUM> in the first example embodiment.

The first flag information indicates whether the communication device <NUM> needs to wait for transmission of the second command to the external device <NUM>. More specifically, in a case where it is necessary for the communication device <NUM> to wait for transmission of the second command to the external device <NUM>, the first flag information is given <NUM>. For the second command in which the first flag information is not given <NUM>, the first flag information is given <NUM>. In other words, the first flag information indicates whether the second command greatly affects the external device <NUM>. For example, in a case where the transmission destination is the Read & Clear register illustrated in the first example embodiment and the instruction content in the second command includes Read, and in a case where the prediction of the first command is wrong (in a case where the first command and the second command do not match), unintended data erasure is performed when the command is transmitted to the register. In such a case, there is a possibility that the second command greatly affects the external device <NUM>, and the first flag information in the second command is given <NUM>.

The communication device <NUM> in the present example embodiment includes a communication processing unit <NUM> and a comparison unit <NUM>. The communication processing unit <NUM> is connected to the external device <NUM> and the communication device <NUM>, similarly to the communication processing unit <NUM> in the first example embodiment. The communication processing unit <NUM> receives the command to the external device <NUM> and the first flag information. In addition, similarly to the second example embodiment, the communication processing unit <NUM> determines whether to transmit the second command to the external device based on the first flag information.

Similarly to the comparison unit <NUM> in the second example embodiment, the comparison unit <NUM> compares the first command with the second command and outputs a comparison result. As described in the first example embodiment, the first command is a command that is actually output from the external device <NUM> and includes the instruction content to the external device and the address of the external device. As described in the first example embodiment, the second command is a command that the communication device <NUM> predicts from a part of the first command and outputs.

Subsequently, the operation of the communication system <NUM> according to the present example embodiment will be described below with reference to <FIG>. <FIG> illustrate the operation in a case where the first flag information received by the communication device <NUM> indicates <NUM> (it is not necessary to wait for transmission of the second command).

First, the external device <NUM> transmits the first command from the address portion to the communication device <NUM> (S301). The communication device <NUM> starts receiving the first command from the external device <NUM> using the communication processing unit <NUM>. Every time <NUM> bit is received, the communication processing unit <NUM> transfers the received address to the command prediction unit <NUM> bit by bit (S302). The command prediction unit <NUM> predicts the first command using the prediction table <NUM> or the prediction table <NUM> (S303). Here, the address and the instruction content are predicted from the head few bits of the address. Then, at the time point when the first command can be predicted, the command prediction unit <NUM> outputs the predicted command as the second command to the communication processing unit <NUM> (S304). The command prediction unit <NUM> outputs the first flag information to the communication processing unit <NUM> (S304). For example, in a case where the transmission destination of the address and the instruction content can be predicted by the head <NUM> bits of the received address, the command prediction unit <NUM> outputs the predicted command to the communication processing unit <NUM> as a second command, and also outputs, to the communication processing unit <NUM>, the first flag information associated to the second command. The communication processing unit <NUM> transmits the second command and the first flag information to the communication device <NUM> (S305). The communication processing unit <NUM> in the communication device <NUM> receives the second command and the first flag information from the communication device <NUM>. The communication device <NUM> confirms the first flag information (S306). In a case where the first flag information indicates <NUM> (it is not necessary to wait for transmission of the second command), the communication processing unit <NUM> transmits the second command to the external device <NUM> (S307). The operation when the first flag information indicates <NUM> (it is necessary to wait for transmission of the second command) will be described later.

The external device <NUM> receives the second command from the communication device <NUM> and executes the instruction content included in the second command (S308).

On the other hand, upon completing the reception of the first command (S309), the communication processing unit <NUM> in the communication device <NUM> transfers the first command and the second command to the communication device <NUM> (S310).

The comparison unit <NUM> compares the first command with the second command (S311). When the first command and the second command match (S312), the communication processing unit <NUM> performs transfer of a response signal (ACK) to the second command and transfer of data to be transmitted and received between the external device <NUM> and the external device <NUM> based on the second command (S313). The operation when the first command and the second command do not match will be described later.

Due to this, similarly to the second example embodiment, the communication system <NUM> according to the present example embodiment can prevent the external device <NUM> from giving an unintended influence to the external device <NUM> by the second command, and can reduce the latency of the response to the command transmitted by the external device <NUM>.

Next, the operation when the first command and the second command do not match, particularly when the addresses do not match will be described with reference to <FIG>. The operations from S301 to S310 are the same as the above-described operations. The comparison unit <NUM> of the communication device <NUM> determines that the addresses of the first command and the second command do not match (S314). Since the second command has already been transmitted to the external device <NUM> in S307, the communication processing unit <NUM> executes the same operation as in S313. The communication processing unit <NUM> transmits the first command to the address described in the first command (S315). Here, a case where the address described in the first command indicates a communication device different from the communication device <NUM> will be described. <FIG> is a view illustrating another configuration example of the communication system according to an example embodiment. Similarly to <FIG>, the communication system in <FIG> includes the external device <NUM>, the communication device <NUM>, the communication device <NUM>, and the external device <NUM>. The communication system in <FIG> includes a communication device <NUM> and the external device <NUM>. The communication device <NUM> includes a communication processing unit <NUM>. Here, for example, in a case where the address described in the first command indicates the communication device <NUM>, the communication processing unit <NUM> transmits the first command to the external device <NUM> via the communication device <NUM>. The external device <NUM> executes the first command. Note that S313 in <FIG> and <FIG> is an example in a case where the instruction content in the second command is Read or Write, but the second command is not limited to them.

Due to this, in the communication system <NUM> according to the present example embodiment, similarly to the second example embodiment, even when a command is transmitted to a wrong address in command prediction, the communication device <NUM> does not perform cancellation of the command. Therefore, by preventing unnecessary cancellation, it is possible to prevent waste of communication resources.

Next, the operation when the first command and the second command do not match, in particular, when the instruction contents do not match will be described with reference to <FIG>. The operations from S301 to S310 are the same as the above-described operations. The comparison unit <NUM> determines that the instruction contents of the first command and the second command do not match (S316). The communication processing unit <NUM> stops the transfer of the ACK for the second command and the transfer of the data transmitted and received between the external device <NUM> and the external device <NUM> based on the second command (S317).

The communication processing unit <NUM> transmits the first command to the external device <NUM> (S318). The external device <NUM> executes the first command (S319). Due to this, in the communication system <NUM> according to the present example embodiment, similarly to the second example embodiment, the communication system <NUM> can prevent a wrong command from consuming various resources of the communication device <NUM> and the like.

Next, the operation when the first flag information indicates <NUM> (it is necessary to wait for transmission of the second command) will be described with reference to <FIG>. First, the operation when the first command and the second command match will be described with reference to <FIG>.

The operations from S301 to S305 are the same as the above-described operations. When the first flag information indicates <NUM> (S320), the communication device <NUM> waits for the first command without transmitting the received second command to the external device <NUM> (S321). The operations from S309 to S312 are the same as the above-described operations. After executing the operation of S312, the communication device <NUM> transmits the first command or the second command to the external device <NUM> (S322).

The external device <NUM> executes the first command or the second command (S323).

Due to this, similarly to the second example embodiment, in a case where the predicted command (second command) has a large influence on the external device <NUM>, the communication system <NUM> according to the present example embodiment can prevent an unintended large influence from being given to the external device <NUM>.

Next, a case where the first flag information indicates <NUM> and the comparison result between the first command and the second command indicates that the address of the first command and the address of the second command do not match will be described with reference to <FIG>. In a case where the first flag information indicates <NUM> (in a case where it is necessary to wait for transmission of the second command) and the comparison result between the first command and the second command indicates that the address of the first command and the address of the second command do not match, the communication processing unit <NUM> transmits, to the communication device <NUM>, a message indicating that the communication processing unit <NUM> does not transmit the second command to the external device <NUM> (S324). The communication processing unit <NUM> executes the operation of S315 triggered by the reception of the message indicating that the communication processing unit <NUM> does not transmit the second command to the external device <NUM>. Operations other than S324 are as described above.

Due to this, similarly to the second example embodiment, in a case where the predicted command (second command) has a large influence on the external device <NUM>, the communication system <NUM> according to the present example embodiment can prevent an unintended large influence from being given to the external device <NUM>, and transmit the first command to an intended communication device.

Next, a case where the first flag information indicates <NUM>, and the comparison result between the first command and the second command indicates that the instruction content in the first command and the instruction content in the second command do not match will be described with reference to <FIG>. In <FIG>, operations other than S325 are the same as those described above. In S325, when the message indicative of not transmitting the second command is received in S324, the first command is transmitted to the communication device <NUM>. The communication device <NUM> transmits the first command to the external device <NUM>. The communication processing unit <NUM> may transmit the first command to the external device <NUM> after performing the operation of S316. In this case, the operations of S324 and S325 become unnecessary. By combining S325 and the above-described operation as in <FIG>, in a case where the predicted command (second command) has a large influence on the external device <NUM>, the communication system <NUM> according to the present example embodiment can prevent an unintended large influence from being given to the external device <NUM>, and transmit the first command to the external device <NUM>.

<FIG> illustrates a configuration example of a communication system <NUM> according to the present example embodiment. In the present example embodiment, a communication device <NUM> includes a communication processing unit <NUM> and the command prediction unit <NUM>.

The communication processing unit <NUM> is connected to the external device <NUM> and a communication device <NUM>, similarly to the communication processing unit <NUM> in the first example embodiment. The communication processing unit <NUM> receives a command for the external device <NUM> and transmits the command, the first flag information, and the second flag information to other devices including the communication device <NUM>. The communication processing unit <NUM> outputs the second flag information, and transmits the second flag information to other devices including the communication device <NUM>.

The second flag information indicates that the first command transmitted by the communication device <NUM> is an actual command transmitted by the external device <NUM>.

Similarly to the first example embodiment, the condition in which the first flag information is given <NUM> is specifically that a large influence is given to the external device when the second command is executed by the external device. The condition in which the first flag information is given <NUM> is that the first flag information is not given <NUM>.

Subsequently, the operation of the communication system <NUM> according to the present example embodiment will be described below with reference to <FIG> illustrates the operation in a case where communication processing unit <NUM> needs to wait for transmission of a command to the external device <NUM> (a case where the received first flag information indicates <NUM>).

First, the external device <NUM> transmits the first command from the address portion to the communication device <NUM> (S401). The communication device <NUM> starts receiving the first command from the external device <NUM> using the communication processing unit <NUM>. Every time <NUM> bit is received, the communication processing unit <NUM> transfers the received address to the command prediction unit <NUM> bit by bit (S402).

The command prediction unit <NUM> predicts the first command using the prediction table <NUM> or the prediction table <NUM> (S403). Here, the address and the instruction content are predicted from the head few bits of the address. Then, at the time point when the first command can be predicted, the command prediction unit <NUM> outputs the predicted command as the second command to the communication processing unit <NUM> (S404). The command prediction unit <NUM> outputs the first flag information to the communication processing unit <NUM> (S404). For example, in a case where the transmission destination of the address and the instruction content can be predicted by the head <NUM> bits of the received address, the command prediction unit <NUM> outputs the predicted command to the communication processing unit <NUM> as a second command, and also outputs, to the communication processing unit <NUM>, the first flag information associated to the second command. The communication processing unit <NUM> transmits the second command and the first flag information to the communication device <NUM> (S405). When the first flag information indicates <NUM> (S406), the communication device <NUM> waits for the first command without transmitting the received second command to the external device <NUM> (S407).

On the other hand, when the communication processing unit <NUM> in the communication device <NUM> completes the reception of the first command (S408), the communication device <NUM> outputs the second flag information (S409). The communication processing unit <NUM> transmits the first command and the second flag information to the communication device <NUM> (S410). When the communication device <NUM> confirms, from the second flag information, that the first command is an actual command transmitted by the external device <NUM> (S411), the communication processing unit <NUM> transmits the first command to the external device <NUM> (S412). The external device <NUM> executes the first command (S413).

Due to this, the communication system <NUM> according to the present example embodiment can prevent the external device <NUM> from giving an unintended influence to the external device <NUM> by the second command, and can reduce the latency of the response to the command transmitted by the external device <NUM>. The communication system <NUM> according to the present example embodiment can achieve the above-described effects without including the comparison unit as described in the second example embodiment and the third example embodiment.

Subsequently, configuration examples of the external device and the communication device according to the plurality of example embodiments described above will be described below. <FIG> is a configuration example of the external device according to the plurality of example embodiments described above. The external device according to the plurality of example embodiments described above includes, for example, a network interface <NUM>, a processor <NUM>, and a memory <NUM>.

The network interface <NUM> is used for communicating with the external device and the communication device according to the plurality of example embodiments described above, for example. The network interface may include, for example, a network interface card and a bus device.

The processor <NUM> may include, for example, a microprocessor, a micro processing unit (MPU), or a central processing unit (CPU). The processor <NUM> may include a plurality of processors.

The memory <NUM> includes a volatile memory and a nonvolatile memory. The memory <NUM> may include a plurality of physically independent memory devices. The volatile memory is, for example, a static random access memory (SRAM) or a dynamic RAM (DRAM), or a discretionary combination of these. The nonvolatile memory is a mask read only memory (MROM), an electrically erasable programmable ROM (EEPROM), a flash memory, or a hard disk drive, or a discretionary combination of these. The memory <NUM> may include a storage disposed away from the processor <NUM>. In this case, the processor <NUM> may access the memory <NUM> via the network interface <NUM> or an I/O interface (not illustrated).

The memory <NUM> may store one or more software modules (computer programs) <NUM> including orders and data for performing processing by the external device described in the plurality of example embodiments described above. In some implementations, the processor <NUM> may be configured to perform the processing of the external device described in the example embodiments described above by reading and executing the software module <NUM> from the memory <NUM>.

<FIG> is a configuration example of the communication device according to the plurality of example embodiments described above. The external device according to the plurality of example embodiments described above includes, for example, a network interface <NUM>, a processor <NUM>, and a memory <NUM>.

The memory <NUM> may store one or more software modules (computer programs) <NUM> including orders and data for performing processing by the external device described in the plurality of example embodiments described above. In some implementations, the processor <NUM> may be configured to perform the processing of the external device described in the example embodiments described above by reading and executing the software module <NUM> from the memory <NUM>. The processing of the external device described in the above-described example embodiments includes, for example, the communication processing unit, the command prediction unit, the prediction table, and the comparison unit described in the plurality of example embodiments described above.

The prediction table <NUM> or the prediction table <NUM> described in the plurality of example embodiments described above may include third flag information allocated for each second command. The third flag information indicates whether the second command described in the prediction table <NUM> is valid. The command prediction unit <NUM> may confirm the third flag information when the second command is output, and, only when the third flag information, the second command is valid, may output to the communication processing unit described in the plurality of example embodiments described above.

The external device or the communication device described in the plurality of example embodiments described above may include an administrative interface <NUM>. <FIG> is a configuration example including the administrative interface <NUM>, and is a view illustrating another configuration example of the communication system according to an example embodiment. The communication system in <FIG> includes the external device <NUM>, the communication device <NUM>, the communication device <NUM>, and the external device <NUM>, similarly to the communication system of <FIG>. Similarly to <FIG>, the communication device <NUM> in <FIG> includes the communication processing unit <NUM>, the command prediction unit <NUM>, and the comparison unit <NUM>, and the communication device <NUM> includes the communication processing unit <NUM>. The communication system in <FIG> includes the administrative interface <NUM>. The administrative interface <NUM> transmits and receives an administrative command between the external device described in the plurality of example embodiments described above and the communication device described in the plurality of example embodiments described above. The communication device described in the plurality of example embodiments writes data into the prediction table <NUM> or the prediction table <NUM> in accordance with the administrative command.

Claim 1:
A communication system comprising:
a first external device (<NUM>); a second external device (<NUM>); a first communication device (<NUM>; <NUM>; <NUM>); and a second communication device (<NUM>; <NUM>; <NUM>), wherein
the first communication device (<NUM>; <NUM>; <NUM>) includes a command prediction means (<NUM>; <NUM>) and a first communication processing means (<NUM>; <NUM>; <NUM>),
the command prediction means (<NUM>; <NUM>) predicts an address and instruction content in a first command from a part of the first command having been input from the first external device (<NUM>), outputs to the first communication processing means (<NUM>; <NUM>; <NUM>), as a second command, the address and the instruction content having been predicted, and
outputs first flag information indicating whether the second communication device needs to wait for transmission of the second command to the first communication processing means (<NUM>; <NUM>; <NUM>),
the first communication processing means (<NUM>; <NUM>; <NUM>) transmits the second command and the first flag information to the second communication device,
the second communication device (<NUM>; <NUM>; <NUM>) includes a second communication processing means (<NUM>; <NUM>; <NUM>), and
the second communication processing means (<NUM>; <NUM>; <NUM>)
receives the second command and the first flag information, and
transmits the second command to the second external device (<NUM>) when the first flag information indicates that the second communication device (<NUM>; <NUM>; <NUM>) does not need to wait for transmission of the second command,
temporarily stops transmitting the second command to the second external device (<NUM>) when the first flag information indicates that the second communication device (<NUM>; <NUM>; <NUM>) needs to wait for execution of the second command.