Preemptive creation and pipelining of packets to reduce delay

WO2026178651A1PCT designated stage Publication Date: 2026-09-03DIGITAL SINGULARITY LAB INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/CA2026/050302
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2025-02-28
Filing Date
2026-02-26
Publication Date
2026-09-03

Smart Images

  • Figure CA2026050302_03092026_PF_FP_ABST
    Figure CA2026050302_03092026_PF_FP_ABST
Patent Text Reader

Abstract

Systems and methods relating to minimizing latency between receiving a packet and pre-emptively sending a preamble for a transmit packet containing trade instructions. A preamble of a data packet is received and assessed. If the preamble indicates that the incoming packet is of a specific type, then a transmit preamble for a transmit packet is created and inserted into a pipeline for transmission. At the same time, the payload of the incoming packet is assessed. If the payload contains information that would result in trade instructions, then these trade instructions are sent as the payload of the transmit packet. However, if the payload does not contain information that would result in trade instructions, then premade and preconfigured packet data (e.g. trade instructions for trades that have minimal effect or consequences or commands / requests with minimal effects or consequences) are inserted as the payload for the transmit packet.
Need to check novelty before this filing date? Find Prior Art

Description

Attorney Docket No. 1759P001W001PREEMPTIVE CREATION AND PIPELINING OF PACKETS TO REDUCE DELAYTECHNICAL FIELD

[0001] The present invention relates to networking and high-speed data transmission.More specifically, the present invention relates to methods and systems for networking in relating to high-speed trading.BACKGROUND

[0002] Electronic trading has been around for decades. In electronic trading, a security exchange runs a matching engine on computers which receive buy and sell orders for financial instruments via a data network. Certain market participants utilize algorithms running on computers attached to a security exchange exchange’s data network to infer and transmit buy and sell orders. One advantage of such electronic trading is that it allows for faster execution of trades once a buy or a sell signal has been received. Electronic trading also allows for high frequency trading, trading that tends to be driven by sophisticated algorithms.

[0003] One challenge with electronic trading (and high frequency trading) is to minimize the amount of time between receiving a buy or sell signal and executing ensuing orders. For automated trading, delays measured in microseconds if not in nanoseconds can cost thousands in unrealized revenues. To this end, as soon as a computer running an algorithm receives information, typically market data updates from an exchange, one or several orders are inferred and must be transmitted for execution to the market.

[0004] There is therefore a need for methods and systems which can reduce or minimize the latency between receiving market data and the transmission of an ensuing order to an exchange. It is customary to implement the functions of a trading algorithm in digital computer integrated circuit to achieve the lowest latency possible.Attorney Docket No. 1759P001W001SUMMARY

[0005] The present invention provides systems and methods relating to minimizing latency between receiving a data network’s packet and pre-emptively sending back to the network a packet containing trade instructions. A preamble of a data packet is received and assessed. If the preamble indicates that the incoming packet is of a specific type, then a cached transmit preamble for a transmit packet is inserted into a pipeline for transmission. At the same time, the payload of the incoming packet is assessed. If the pay load contains market data, then trade instructions are derived from the market data and the trade instructions are sent as the payload of the transmit packet. However, if the pay load does not contain market data, then premade and preconfigured trade instructions (e.g. trade instructions for trades that have minimal effect or consequences) are inserted as the payload for the transmit packet.

[0006] In a first aspect, the present invention provides a method for sending trading instructions, the method comprising:a) receiving a receive preamble of a receive data packet containing data;b) determining if said receive preamble indicates that said receive data packet is of a certain type of data packet used to send a specific type of data;c) in the event step b) indicates that said receive data packet is of said type of data packet used to send said specific type of data,cl) causing a retrieval or creation of a transmit preamble for a transmit data packet that transmits trading instructions and creating said transmit data packet;c2) inserting said transmit data packet into a pipeline;c3) concurrent with or subsequent to step c2),dl) receiving a receive payload of said receive data packet;Attorney Docket No. 1759P001W001d2) determining if said receive payload includes specific desired data;d3) in the event said receive payload includes said specific desired data, determining a first set of trading instructions derived from said receive payload and inserting said first set of trading instructions as a transmit payload for said transmit data packet while said transmit data packet is in said pipeline;d4) in the event said receive payload indicates content other than said specific desired data, inserting a predetermined payload as said transmit payload for said transmit data packet while said transmit data packet is in said pipeline;wherein- said predetermined payload being predetermined and preset prior to step d4).

[0007] In a second aspect, the present invention provides a system for managing incoming and outgoing data packets, the system comprising:a device for receiving and transmitting data packets, at least some transmitted data packets containing trading instructions, the device receiving preambles of received data packets prior to receiving payloads of said received data packets, the device comprising:- an early detection circuit for determining whether a receive preamble of a specified received data packet indicates that said specified received data packet is of a certain type of data packet used to send said specific type of data;- a pipeline circuit for receiving preprepared transmit data packets, said preprepared transmit data packets having populated transmit preambles wherein said preprepared transmit data packets are for transmitting said trading instructions;Attorney Docket No. 1759P001W001wherein- said system pre-emptively creates a preprepared transmit data packet and inserts a predetermined transmit preamble into said preprepared transmit data packet;- said system inserts said preprepared transmit data packet into said pipeline circuit whenever said early detection circuit determines that said receive preamble of said specified received data packet indicates that a received data packet is of said type used to send said specific type of data;- said system inserts said first set of trading instructions or a predetermined payload as said payload for said preprepared transmit data packet while said preprepared transmit data packet is in said pipeline.

[0008] In another aspect, there is provided a circuit for early detection of a type of data packet received, said circuit receiving a receive preamble of a received data packet, said circuit comprising:- a scrambler component receiving scrambler parameters and an expected receive preamble, said scrambler component scrambling said expected receive preamble using said scrambler parameters to produce a scrambled version of said expected receive preamble;- a comparison component receiving said scrambled version of said expected receive preamble and said receive preamble of said received data packet, said comparison component comparing said scrambled version of said expected receive preamble and said receive preamble to produce a comparison result;wherein said comparison result indicates whether said scrambled version of said expected receive preamble and said receive preamble match one another, a match between said scrambled version and said receive preamble indicating that said specified received data packet is a specific expected type of data packet.

[0009] In a further aspect, the early detection circuit compares a scrambled version of said receive preamble of said specified received data packet with a scrambled version of at least one expected receive preamble to determine if said specifiedAttorney Docket No. 1759P001W001received data packet is of a certain type of data packet used to send said specific type of data.

[0010] According to a further aspect, the early detection circuit comprises:- a scrambler component receiving scrambler parameters and an expected receive preamble, said scrambler component scrambling said expected receive preamble using said scrambler parameters to produce a scrambled version of said expected receive preamble;- a comparison component receiving said scrambled version of said expected receive preamble and a receive preamble from said specified received data packet, said comparison component comparing said scrambled version of said expected receive preamble and said receive preamble from said specified received data packet to produce a comparison result;wherein said comparison result indicates whether said scrambled version of said expected receive preamble and said receive preamble from said specified received data packet match one another, a match between said scrambled version and said receive preamble indicating that said specified received data packet is said certain type of data packet used to send said specific type of data.

[0011] Yet a further aspect of the present invention provides that the pipeline circuit implements a pipeline having multiple stages and at least a plurality of said multiple stages allows said system to load a payload into a transmit data packet that is in said pipeline.

[0012] In another aspect, the present invention provides that the pipeline circuit comprises a multiple stage combinational circuit with multiple stages, at least two of said multiple stages comprising a processing component, a next stage latch, and an exit latch, wherein said multiple stages are arranged sequentially to thereby implement a multiple stage pipeline and wherein each of said at least two of said multiple stages is loadable with a desired payload such that said desired payload is loaded as payload for said preprepared transmit data packet that is in said stage in said pipeline.Attorney Docket No. 1759P001W001

[0013] In a further aspect, the processing component is either a scrambler component or a gearbox component. The next stage latch latches said preprepared transmit data packet that is in said stage in said pipeline into a next stage in said pipeline. As well, the exit latch latches data such that said preprepared transmit data packet that is in said stage in said pipeline exits from said pipeline.

[0014] As another aspect, the first set of trading instructions is derived from a payload of said specified received data packet when said specified received data packet is of said certain type of data packet used to send said specific type of data and wherein said first set of trading instruction is inserted as said pay load of said specified received data packet when said specified received data packet is of said certain type of data packet used to send said specific type of data.

[0015] In yet a further aspect, the predetermined payload is preprepared and cached prior to receipt of said specified received data packet and wherein said predetermined payload is inserted as said payload of said specified received data packet when said specified received data packet is not of said certain type of data packet used to send said specific type of data.

[0016] In a further aspect, the predetermined payload is a second set of trading instructions.BRIEF DESCRIPTION OF THE DRAWINGS

[0017] The embodiments of the present invention will now be described by reference to the following figures, in which identical reference numerals in different figures indicate identical elements and in which:FIGURE 1 is a block diagram of a data packet processing system according to one aspect of the present invention;FIGURE 2 is a block diagram of an exemplary payload subsystem according to one implementation of the present invention;Attorney Docket No. 1759P001W001FIGURE 3 is a block diagram of an early detection circuit according to one implementation of the present invention;FIGURE 4 is a block diagram of an exemplary transmit pipeline block according to one implementation of the present invention;FIGURE 5 illustrates a detailed block diagram of one implementation of a pipeline circuit according to one aspect of the present invention;FIGURE 6 shows a block diagram of a system according to another aspect of the present invention; andFIGURE 7 is a flowchart detailing the steps in a method according to another aspect of the present invention.DETAILED DESCRIPTION

[0018] For clarity, the term “receive data packet” refers to data packets received by a system according to the present invention. The term “transmit data packet” refers to data packets that are generated and sent out by the system according to the present invention. For the avoidance of doubt, data packets have preambles that are, generally, the first few bytes of the data packet and these can indicate the source, destination, and type of a data packet. As well, data packets have payloads that may contain various types and kinds of data. In some types of data packets, these payloads tend to be close to the end (i.e., the “back”) of a data packet. As will be known to those of skill in the art, data packets have preset and predefined formats, bit length, and protocols. The discussion that follows will, generally, when referring to data packets, mean Ethernet data packets but, for clarity, the concepts may be applicable to other types of data packets that are used in other networking protocols and standards. Again, for clarity, the term “pipeline” is to be understood as a generally sequentially arranged data processing stages that, in the normal operation, receives data from a prior stage and passes that data to a subsequent stage. The pipeline may process that dataAttorney Docket No. 1759P001W001received prior to passing that data to the subsequent stage. A pipeline may be implemented in hardware or in software as necessary or desired.

[0019] In one aspect, the present invention provides systems and methods for preemptively creating and inserting into a pipeline a transmit data packet whenever a preamble of a receive data packet indicates that the receive data packet is of a specific type. In the context of electronic trading, once the preamble of a packet that may contain market data is received, a preamble for a packet that may be configured to send trade instructions based on the market data is created and inserted into a pipeline. At the same time as the preamble is pipeline and while the preprepared transmit data packet wends its way through the pipeline, the pay load of the receive data packet is received and analyzed. If the receive data packet payload does contain market data, trade instructions based on the market data, including the quantity, transaction (e.g. buy or sell), and symbol (i.e. the identity of what is to be transacted), are inferred from the payload and inserted into a payload to be sent as part of the transmit data packet that is proceeding through the pipeline.

[0020] On the other hand, in the event the payload of the receive data packet does not contain market data, different transmit data packet content (a predetermined payload), that is cached or preprepared, is used as the payload for the transmit data packet that is proceeding through the pipeline. That cached / preprepared transmit data packet content could be inconsequential trade instructions or another type of data packet content that is inconsequential to the network (e.g. a PING request / command). It should be clear that such alternative trade instructions (i.e. inconsequential trade instructions) are pre-prepared or are cached prior to the reception of the preamble of the receive data packet. Such alternative trade instructions may be for small amounts of a stock / commodity / trading item such that the effects of the trade instructions are minimal or inconsequential. As an example, if a user of the present invention usually trades in hundreds of thousands of shares per stock, the alternative trade instructions may be to sell 5 to 10 shares of a stock that has millions of shares. Such a trade would be minimally felt or its consequences would be minimal or almost non-existent.Attorney Docket No. 1759P001W001

[0021] The system of the present invention is designed to start the process of a trade (or the process of sending trading instructions) as soon as there is an indication that market data may be coming. As will be seen, once a preamble of a receive data packet is received, that scrambled preamble is not even unscrambled but is compared with scrambled expected values in a specific type of preamble. If there is a match, then the receive data packet is of a type used to transmit market data. Accordingly, a known and preprepared preamble for a transmit data packet is generated and a transmit data packet with that known preamble is inserted into a transmit pipeline.

[0022] Referring to Fig. 1, a block diagram of a data packet processing system according to one aspect of the present invention is illustrated. The system 10 includes an early detection block 20, a transmit data packet generation block 30, and a transmit pipeline block 40. The system 10 determines if an incoming receive preamble of an incoming data packet indicates that the incoming packet is of a specific type. If the incoming packet is of that specific type, the system generates a transmit data packet with a prepopulated and predetermined preamble and inserts that transmit data packet into a pipeline for transmission.

[0023] It should be clear that the system 10 cooperates with a payload system 50. The payload system 50 receives the payload of an incoming receive data packet and determines if that payload indicates / contains market data. If the payload indicates / contains market data, the contents of that market data are extracted and trade instructions (including a trade type, number of items / trading units, and trading unit symbol) are created and then sent as the payload of the transmit data packet. On the other hand, if the payload of the incoming data packet indicates something other than market data is the payload of the incoming receive data packet, a different payload (the predetermined payload) is sent as the payload of the transmit data packet. As noted above, the different payload is preset and ready. For clarity, this different payload may also comprise trade instructions, but these trade instructions are preset, ready-made and are trade instructions with minimal impact.

[0024] Referring to Fig. 2, a block diagram of an exemplary payload system 50 is illustrated. As can be seen, the payload system 50 receives the incoming payloadAttorney Docket No. 1759P001W00150-1 of the incoming receive data packet. This payload is received by an analysis block 50-2 that determines if the payload includes market data. Analysis block 50-2 may simply be a block that checks specific portions of the payload to determine if these portions equal values expected to be in market data payloads. If the incoming payload is market data, then specific contents from that market data are extracted / calculated and trade instructions are formulated based on that extracted / cal culated data. These trade instructions (including type of trade, number of units, and symbol of what is to be traded) becomes a payload to be inserted into the transmit data packet that was previously inserted into the pipeline. Once the trade instructions have been created, the select signal 50-3 from the analysis block 50-2 selects a relevant selection for the MUX 50-4. As can be seen, MUX 50-4 has two options - the created payload 50-1 derived the incoming packet (i.e., the trade instructions) and a preset set of trade instructions 50-5. One of these options is selected based on the select signal 50-3. If the analysis block 50-2 determines that the payload 50-1 include market data and trade instructions have been derived from this market data, then select signal 50-3 selects the newly created / derived payload. However, if the analysis block 50-2 determines that the payload 50-1 does not include actionable market data, the select signal 50-3 selects the preset set of a predetermined payload 50-5. This predetermined payload may, as noted above, be a set of trade instructions. The selected payload, which may be a set of trade instructions (whether a preset set of trading instructions or the incoming payload) or some other payload, is output from MUX 50-4 and is sent out / forwarded as the payload of the transmit data packet.

[0025] Referring to Fig. 3, a block diagram of an early detection block / circuit 20 is illustrated. As can be seen, the block 20 receives the scrambled preamble 20-1 of the incoming receive data packet. At least one selected portion of the preamble 20-1 is compared to scrambled versions of expected values in the preamble of the incoming receive data packet. This step is accomplished using, in this implementation, two comparators 20-2A, 20-2B. As can be seen, the expected values (0x78 and 0x33) are scrambled using scramblers 20-3 A, 20-3B and known / predetermined scrambling parameters 20-5. These expected values are previously known and are scrambled using the parameters 20-5. The scrambledAttorney Docket No. 1759P001W001values are ready for comparison by the time the portions of the scrambled preamble from the incoming receive data packet are received. By comparing the scrambled incoming preamble with scrambled versions of the desired / expected values, there is no need to unscramble the preamble. Such a measure ensures a faster response time for the block 20. Also, as can be seen, the two comparators 20-2A, 20-2B operate in sequence - if the first comparator 20-2A does not produce a match, then the incoming scrambled preamble is sent to the other comparator 20-2B. If either of these comparators 20-2A, 20-2B produce a match, then the preamble of the incoming receive data packet indicates that the incoming receive data packet is of an expected type. A match indicates that a transmit data packet is to be generated and inserted into the pipeline. It should be clear that the concept of pre-scrambling a desired / expected value (using known scrambler parameters) and then comparing the pre-scrambled value with a received packet value / preamble may be used in other contexts. It should also be clear that the implementation illustrated in Figure 3 triggers / seeks to detect two different types of data packets, each with differing preambles. The first type of data packet has a preamble with a value of 0x78 in a specific field in the preamble while the second type of data packet has a preamble with a value of 0x33 in the same specific field in the preamble. Other implementations, such as those that trigger / seek one or more different types of data packets may be implemented / used. For such implementations, the number of data packet types sought would, preferably, match the number of scrambler elements and comparators.

[0026] As noted above, the result of block 20 is received by the transmit data packet generation block 30. In the event that the result of block 20 is positive (i.e., that there is a match between the scrambled relevant portions of the incoming preamble and the scrambled expected values indicating a specific type of incoming packet), the transmit data packet block 30 generates a predetermined transmit preamble and a transmit data packet with this transmit preamble is generated. This transmit preamble inserted into the generated transmit data packet indicates the source of the transmit data packet, the destination, and other addressing data that is known previously.Attorney Docket No. 1759P001W001

[0027] Referring to Fig. 4, a block diagram of an exemplary transmit pipeline block 40 is illustrated. As can be seen, the transmit pipeline block 40 includes an encoding sub-block 40-1, a pipeline sub-block 40-2, and a transmit pipeline sub-block 40- 3. The encoding sub-block 40-1 addresses MAC and CRC processing for the transmit data packets in the overall pipeline. The pipeline sub-block 40-2 allows for multiple further stages in the pipeline and provides for the pipelining of multiple transmit data packets. It should be clear that the pipeline sub-block 40-2 implements a multi-stage pipeline with each stage performing scrambling functions for the pipelined transmit data packets. Each stage of the pipeline also allows every pipelined transmit data packets to exit the pipeline at any stage in the pipeline. Transmit data packets that exit the pipeline sub-block 40-2 are received by the transmit pipeline 40-3. For clarity, the transmit pipeline subblock 40-3 is another multi-stage pipeline and performs transmission related processing (e.g. gearbox processing that prepares transmit data packets to be transmitted to a destination) on the pipelined data packets. As with the pipeline sub-block 40-2, each stage in the transmit pipeline 40-3 allows for pipelined transmit data packets to exit the pipeline at any stage.

[0028] It should be clear that a payload can be inserted into a transmit data packet regardless of where in the pipeline the transmit data packet is in the transmit pipeline block 40. As an example, the payload for a transmit data packet can be inserted into the relevant data packet regardless of where the data packet is in the pipeline sub-block 40-2. Once the payload is inserted into a data packet in the pipeline, this now complete data packet can exit the pipeline sub-block 40-2 and into the transmit pipeline 40-3. Once processed by the transmit pipeline 40-3 and at least one of its stages, the completed data packet is transmitted to its destination (e.g. an exchange).

[0029] It should be clear that the various elements and blocks of the early detection block system 10 (including early detection block 20, the transmit data packet generation block block 30, and the transmit pipeline block 40) can be comprised of combinational and / or sequential circuits and that the various sub-blocks are collections of combinational and / or sequential circuit elements such as multiplexers, latches, and other processing elements. Use of such hardware andAttorney Docket No. 1759P001W001combinational circuit elements allows for very quick processing of data and packets (and the elements of packets) as each element and packet is clocked through the various circuits.

[0030] Referring to Fig. 5, illustrated is a detailed block diagram of one implementation of a transmit pipeline block 40. As can be seen, the left side of the diagram illustrates the encoding sub-block 40-1. A CRC element 400-1 performs CRC related functions on a portion of the transmit data packet while a MAC element 400-2 performs MAC related functions on another portion of the transmit data packet. Latches 400-4 allow for the transmit data packet (or portions thereof) to be latched and incorporated into the final transmit data packet prior to being placed in the pipeline sub-block 40-2. Various multiplexers (MUX) 400-5 allows for portions of the transmit data packet to be inserted into the final transmit data packet prior to being placed in the pipeline. For clarity, these portions of the transmit data packet that can be inserted into the transmit data packet may include the payload for the transmit data packet.

[0031] The right side of Fig. 5 shows the pipeline sub-block 40-2 and the transmit pipeline 40-3. As can be seen, the pipeline sub-block 40-2 is divided, in this implementation, into 3 sub-component stages detailed as scrambler_0400-6, scrambler_l 400-7, and scrambler_2400-8 in the diagram. For clarity, each subcomponent stage is delimited by a dotted line box in the Figure. Each of these sub-component stages is a stage in the pipeline and each sub-component stage includes a scrambler element and two latches, each latch receiving the scrambler element output. Of these two latches, a next stage latch sends its latched data to the next stage in the pipeline while the exit latch sends its latched data to the transmit pipeline sub-block 40-3 and, thereby facilitates the exit of the pipelined data packet from the pipeline. Each of the scrambler elements is configured to receive a payload for the pipelined transmit data packet. This configuration allows for a payload to be inserted into any transmit data packet that is in any of the sub-component stages. As an example, a transmit data packet that is in the scrambler_l stage (i.e., latched in the next stage latch for scrambler_l stage) can have its payload inserted by introducing that payload to the scrambler 2 element. As can be seen from the Figure, this causes the transmit data packet from theAttorney Docket No. 1759P001W001scrambler_l next stage latch to be processed (and to insert the payload) to be processed by scrambler 2 element. The now complete transmit data packet (now scrambled by scrambler 2 element and containing the relevant inserted payload) can exit the pipeline by way of the exit latch for the scrambler_2 stage. The completed transmit data packet can then enter the transmit pipeline sub-block 40- 3 by way of MUX 400-10. This completed transmit data packet is then processed by the Tx Gearbox 0 element of the tx gearbox O stage and exits by way of the exit latch for the tx_gearbox_0 stage.

[0032] As can be seen, the two latches in each sub-component stage passes its latched data to either the next stage in the pipeline (next stage latch) or to the transmit pipeline (exit latch). The latch that passes the latched data to the transmit pipeline allows any transmit data packet in the pipeline to exit that pipeline from any stage in that pipeline. It should also be clear that MUX 400-9 allows for the transmit data packet in scrambler_0 or scrambler_2 to pass on to either scrambler O or scrambler l . This allows for a completed transmit data packet (with payload being inserted by way of scrambler 0 scrambler element) to be scrambled with the relevant payload and exit the pipeline by way of the exit latch for scrambler_0 stage. Alternatively, an incomplete transmit data packet latched to the next stage latch for the scrambler_0 stage can cycle through the pipeline until its relevant payload is ready. As an example, if a transmit data packet is in the pipeline but its payload has not yet been processed (i.e., the associated incoming receive data packet has not yet had its payload processed) and, as such, it is unknown if the payload is to be trade instructions derived from the relevant incoming receive data packet or trade instructions from a preset trade, that transmit data packet can be cycled through the pipeline until the payload has been processed. As such, when a transmit data packet is ready for transmission, that is, its associated payload has been determined and is known, the payload for that transmit data packet is inserted into the data packet and the transmit data packet can exit the pipeline regardless of which stage the transmit data packet is in the pipeline.

[0033] Again from the diagram, MUX 400-10 selects which transmit data packet to pass through to the transmit pipeline. MUX 400-10 receives the different transmitAttorney Docket No. 1759P001W001data packets from scrambler_O and scrambler_2 sub-component stages and, depending on the select signal, can pass either to the transmit pipeline. The MUX 400-10 thus functions as an exit for two of the stages of the pipeline. The third exit is from one of the latches for sub-component stage scrambler l. Of course, as can be seen, the pipeline in this implementation is a 3-stage pipeline.

[0034] For clarity and as known to those of skill in the art, the scrambler element performs scrambling functions on Ethernet packets so that the resulting data packets have useful engineering properties. For the transmit pipeline sub-block, the gearbox element performs processing to ensure that the resulting data packets are suitable for the next step in the transmission of the data packets (e.g. a SERDES stage).

[0035] The transmit pipeline sub-block 40-3 is divided into two sub-component stages tx gearbox O 400-11 and tx gearbox l 400-12, each of which operates as a stage in a transmit pipeline. Similar to the other pipeline in the diagram, the subcomponent stages are delimited by boxes with dotted lines. As can be seen, each of these sub-component stages includes a gearbox element and two latches. Of the two latches, a next stage latch passes the transmit data packet to the next stage in the transmit pipeline while the other latch (and exit latch) sends out the completed transmit data packet for transmission. As can be seen, each stage in the transmit pipeline receives a complete transmit data packet for that is ready for transmission and each stage allows for an exit for a complete transmit data packet from the transmit pipeline.

[0036] From the diagram, it can be seen that a MUX 400-13 allows for a complete transmit data packet to cycle through the transmit pipeline. Similarly, a MUX 400-14 selects which complete transmit data packet (i.e., from which subcomponent stage) is transmitted.

[0037] In one implementation, the various latches in the transmit pipeline block 40 are configured such that the bytes that are to be part of an outgoing packet are added / latched in one clock cycle. The transmit pipeline block therefore shifts its content to the right and, for a full pipeline, data exits from MUX 400-13 every clock cycle. As can be seen in Fig. 5, data flow is from the left of the figure toAttorney Docket No. 1759P001W001the right of the figure and, when the pipeline is full, data exits every clock cycle. Accordingly, when a new packet needs to be sent, each stage of the pipeline block 40 is loaded in one clock cycle, after which the pipeline resumes its normal operation, but with the new loaded data.

[0038] From the figures, it can be seen that the various aspects of the present invention can be implemented in hardware as combinational and sequential circuits or collections of circuit elements that implement the detailed logic and function to arrive at the desired end result. The various aspects of the present invention receive a preamble of an incoming packet and assess that preamble. If the preamble indicates that the incoming packet is of a type that may contain actionable market data, a transmit preamble for a transmit data packet is created and is inserted into a pipeline for transmission. Simultaneously or subsequently, the payload of the incoming packet is received and assessed. If the incoming packet contains market data, trading instructions are derived from the market data and these trading instructions are then sent on / transmitted as the payload of the transmit data packet. However, if the incoming packet does not contain market data, a predetermined / preconfigured payload (which may be pre-prepared trade instructions) are inserted as the pay load of the transmit data packet. As explained above, if pre-prepared trade instructions are used, these are, preferably, trade instructions that have minimal consequences and / or effect.

[0039] In another aspect, the various aspects of the present invention can be implemented as a software system. In one implementation, the software system comprises the components illustrated in Fig. 6.

[0040] Referring to Fig. 6, a block diagram of a system according to another aspect of the present invention is illustrated. The system 600 includes a preamble assessment block 610, a payload assessment block 620, a data packet generator block 630, a pipeline block 640, and a payload management block 650. In operation, the preamble assessment block 610 receives a preamble of an incoming packet and determines if the preamble indicates a specific type of incoming packet. If the incoming packet is of a type containing market data, then the data packet generator block 630 generates a transmit data packet for an outgoing or transmit data packet. This transmit data packet is then sent to theAttorney Docket No. 1759P001W001pipeline block 640 where the transmit data packet is inserted into a pipeline for processing and transmission.

[0041] Simultaneous or subsequent to the above, the payload block 620 receives the pay load of the incoming packet. This payload is assessed by the block 620 and the output is an indication whether the incoming payload includes market data. This output is sent to the payload management block 650. The payload management block 650 formulates / creates the payload for the transmit packet based on the output from block 620. If the output indicates that the incoming payload includes market data, then trade instructions are derived from the market data and the trade instructions are to be used as the payload. However, if the output indicates that the payload is other than market data, then a predetermined and premade payload (which may be alternative trade instructions) are received and inserted into the payload for the transmit data packet. As explained above, if premade trade instructions are used, these are, preferably, for a trade that has minimal consequences or effect.

[0042] Once the transmit data packet is in the pipeline and the payload has been created and inserted, then the transmit data packet can be transmitted to an outside of the system.

[0043] In another aspect, the present invention provides a method for assessing an incoming packet and pre-emptively processing a transmit preamble. Fig. 7 illustrates the steps in a method according to this aspect of the present invention. The method begins at step 710, that of receiving the incoming preamble. This preamble is then assessed (decision 720) to determine if one of its fields indicates that the incoming packet is of a specific type. In the event the decision is that the incoming packet is of a specific type, then a transmit data packet with a predetermined preamble is created (step 730) and the transmit data packet is inserted into a pipeline (step 740). Simultaneously or subsequently, the payload of the incoming packet is received (step 750) and assessed to determine if the pay load includes market data (decision 760). If the assessment is that the payload includes actionable market data, then trade instructions are derived from the market data and are inserted into the transmit data packets (step 770) as the pay load of the transmit data packet. The transmit data packet is then transmittedAttorney Docket No. 1759P001W001(step 780). However, if the assessment is that the payload does not include trade instructions, then a predetermined payload (which may be alternative trade instructions or inconsequential requests / commands) are inserted (step 790) for the transmit packet and the transmit packet is transmitted (step 780).

[0044] As noted above, the various embodiments and aspects of the present invention may be implemented in hardware, software, or a combination of the two. Some example embodiments have been described above with reference to the accompanying drawings, in which some, but not all example embodiments are shown. The examples described and pictured herein should not be construed as being limiting as to the scope, applicability or configuration of the present disclosure. Rather, these example embodiments are provided so that this disclosure will satisfy applicable legal requirements. Like reference numerals refer to like elements throughout. Furthermore, as used herein, the term “or” is to be interpreted as a logical operator that results in true whenever one or more of its operands are true. As used herein, operable coupling should be understood to relate to direct or indirect connection that, in either case, enables functional interconnection of components that are operably coupled to each other. Additionally, when the term “data” is used, it should be appreciated that the data may in some cases include simply data or a particular type of data generated based on operation of algorithms and computational services, or, in some cases, the data may actually provide computations, results, algorithms and / or the like that are provided as services.

[0045] As used in herein, the term "module" is intended to include a computer-related entity, such as but not limited to hardware, firmware, or a combination of hardware and software (i.e., hardware being configured in a particular way by software being executed thereon). For example, a module may be, but is not limited to being, a process running on a processor, a processor (or processors), an object, an executable, a thread of execution, and / or a computer. By way of example, both an application running on a computing device and / or the computing device can be a module. One or more modules can reside within a process and / or thread of execution and a module may be localized on one computer and / or distributed between two or more computers. In addition, theseAttorney Docket No. 1759P001W001components can execute from various computer readable media having various data structures stored thereon. The modules may communicate by way of local and / or remote processes such as in accordance with a signal having one or more data packets, such as data from one module interacting with another module in a local system, distributed system, and / or across a network such as the Internet with other systems by way of the signal. Each respective module may perform one or more functions that will be described in greater detail herein. However, it should be appreciated that although this example is described in terms of separate modules corresponding to various functions performed, some examples may not necessarily utilize modular architectures for employment of the respective different functions. Thus, for example, code may be shared between different modules, or the processing circuitry itself may be configured to perform all of the functions described as being associated with the modules described herein.Furthermore, in the context of this disclosure, the term "module" should not be understood as a nonce word to identify any generic means for performing functionalities of the respective modules. Instead, the term "module" should be understood to be a modular component that is specifically configured in, or can be operably coupled to, the processing circuitry to modify the behavior and / or capability of the processing circuitry based on the hardware and / or software that is added to or otherwise operably coupled to the processing circuitry to configure the processing circuitry accordingly.

[0046] Additionally, it should be clear that, unless otherwise specified, any references herein to 'image' or to 'images' refer to a digital image or to digital images, comprising pixels or picture cells. Likewise, any references to an 'audio file' or to 'audio files' refer to digital audio files, unless otherwise specified. 'Video', 'video files', 'data objects', 'data files' and all other such terms should be taken to mean digital files and / or data objects, unless otherwise specified.

[0047] The embodiments of the invention may be executed by a computer processor or similar device programmed in the manner of method steps or may be executed by an electronic system which is provided with means for executing these steps. Similarly, an electronic memory means such as computer diskettes, CD-ROMs, Random Access Memory (RAM), Read Only Memory (ROM) or similarAttorney Docket No. 1759P001W001computer software storage media known in the art, may be programmed to execute such method steps. As well, electronic signals representing these method steps may also be transmitted via a communication network.

[0048] Embodiments of the invention may be implemented in any conventional hardware description language such as Verilog or VHDL, which can later be mapped to a chip technology such as an ASIC or an FPGA. Alternative embodiments of the invention may be implemented as pre-programmed hardware elements, other related components, or as a combination of hardware and software components.

[0049] Embodiments can be implemented as a computer program product for use with a computer system. Such implementations may include a series of computer instructions fixed either on a tangible medium, such as a computer readable medium (e.g., a diskette, CD-ROM, ROM, or fixed disk) or transmittable to a computer system, via a modem or other interface device, such as a communications adapter connected to a network over a medium. The medium may be either a tangible medium (e.g., optical or electrical communications lines) or a medium implemented with wireless techniques (e.g., microwave, infrared or other transmission techniques). The series of computer instructions embodies all or part of the functionality previously described herein. Those skilled in the art should appreciate that such computer instructions can be written in a number of programming languages for use with many computer architectures or operating systems. Furthermore, such instructions may be stored in any memory device, such as semiconductor, magnetic, optical or other memory devices, and may be transmitted using any communications technology, such as optical, infrared, microwave, or other transmission technologies. It is expected that such a computer program product may be distributed as a removable medium with accompanying printed or electronic documentation (e.g., shrink-wrapped software), preloaded with a computer system (e.g., on system ROM or fixed disk), or distributed from a server over a network (e.g., the Internet or World Wide Web). Of course, some embodiments of the invention may be implemented as a combination of both software (e.g., a computer program product) andAttorney Docket No. 1759P001W001hardware. Still other embodiments of the invention may be implemented as entirely hardware, or entirely software (e.g., a computer program product).

[0050] A person understanding this invention may now conceive of alternative structures and embodiments or variations of the above all of which are intended to fall within the scope of the invention as defined in the claims that follow.

Claims

Attorney Docket No. 1759P001W001We claim:

1. A method for sending trading instructions, the method comprising:a) receiving a receive preamble of a receive data packet containing data;b) determining if said receive preamble indicates that said receive data packet is of a certain type of data packet used to send a specific type of data;c) in the event step b) indicates that said receive data packet is of said type of data packet used to send said specific type of data,cl) causing a retrieval or creation of a transmit preamble for a transmit data packet that transmits trading instructions and creating said transmit data packet;c2) inserting said transmit data packet into a pipeline;c3) concurrent with or subsequent to step c2),dl) receiving a receive payload of said receive data packet;d2) determining if said receive payload includes specific desired data;d3) in the event said receive payload includes said specific desired data, determining a first set of trading instructions derived from said receive payload and inserting said first set of trading instructions as a transmit payload for said transmit data packet while said transmit data packet is in said pipeline;d4) in the event said receive payload indicates content other than said specific desired data, inserting a predetermined payload as said transmit payload for said transmit data packet while said transmit data packet is in said pipeline;wherein- said predetermined payload being predetermined and preset prior to step d4).Attorney Docket No. 1759P001W0012. The method according to claim 1, wherein said desired data is market data including symbol data.

3. A method according to claim 1, wherein said method is executed by a system comprising:a device for receiving and transmitting data packets, at least some transmitted data packets containing trading instructions, the device receiving preambles of received data packets prior to receiving payloads of said received data packets, the device comprising:- an early detection circuit for determining whether a receive preamble of a specified received data packet indicates that said specified received data packet is of a certain type of data packet used to send said specific type of data;- a pipeline circuit for receiving preprepared transmit data packets, said preprepared transmit data packets having populated transmit preambles wherein said preprepared transmit data packets being for transmitting said trading instructions;wherein- said system pre-emptively creates a preprepared transmit data packet and inserts a predetermined transmit preamble into said preprepared transmit data packet;- said system inserts said preprepared transmit data packet into said pipeline circuit whenever said early detection circuit determines that said receive preamble of said specified received data packet indicates that a received data packet is of said type used to send said specific type of data;- said system inserts said first set of trading instructions or said predetermined payload as said payload for said preprepared transmit data packet while said preprepared transmit data packet is in said pipeline.

4. The method according to claim 3, wherein said early detection circuit compares a scrambled version of said receive preamble of said specified received data packet with aAttorney Docket No. 1759P001W001scrambled version of at least one expected receive preamble to determine if said specified received data packet is of a certain type of data packet used to send said specific type of data.

5. The method according to claim 3, wherein said pipeline circuit implements a pipeline having multiple stages and at least a plurality of said multiple stages allows said system to load a payload into a transmit data packet that is in said pipeline.

6. The method according to claim 1, wherein said predetermined payload is a second set of trading instructions, said first set of trading instructions being different from said second set of trading instructions.

7. A system for managing incoming and outgoing data packets, the system comprising:a device for receiving and transmitting data packets, at least some transmitted data packets containing trading instructions, the device receiving preambles of received data packets prior to receiving payloads of said received data packets, the device comprising:- an early detection circuit for determining whether a receive preamble of a specified received data packet indicates that said specified received data packet is of a certain type of data packet used to send said specific type of data;- a pipeline circuit for receiving preprepared transmit data packets, said preprepared transmit data packets having populated transmit preambles wherein said preprepared transmit data packets being for transmitting said trading instructions;wherein- said system pre-emptively creates a preprepared transmit data packet and inserts a predetermined transmit preamble into said preprepared transmit data packet;- said system inserts said preprepared transmit data packet into said pipeline circuit whenever said early detection circuit determines that said receive preamble of said specified received data packet indicates that a received data packet is of said type used to send said specific type of data;Attorney Docket No. 1759P001W001- said system inserts said first set of trading instructions or a predetermined payload as said payload for said preprepared transmit data packet while said preprepared transmit data packet is in said pipeline.

8. The system according to claim 7, wherein said early detection circuit compares a scrambled version of said receive preamble of said specified received data packet with a scrambled version of at least one expected receive preamble to determine if said specified received data packet is of a certain type of data packet used to send said specific type of data.

9. The system according to claim 6, wherein said early detection circuit comprises:- a scrambler component receiving scrambler parameters and an expected receive preamble, said scrambler component scrambling said expected receive preamble using said scrambler parameters to produce a scrambled version of said expected receive preamble;- a comparison component receiving said scrambled version of said expected receive preamble and a receive preamble from said specified received data packet, said comparison component comparing said scrambled version of said expected receive preamble and said receive preamble from said specified received data packet to produce a comparison result;wherein said comparison result indicates whether said scrambled version of said expected receive preamble and said receive preamble from said specified received data packet match one another, a match between said scrambled version and said receive preamble indicating that said specified received data packet is said certain type of data packet used to send said specific type of data.

10. The system according to claim 7, wherein said pipeline circuit implements a pipeline having multiple stages and at least a plurality of said multiple stages allows said system to load a payload into a transmit data packet that is in said pipeline.

11. The system according to claim 7, wherein said pipeline circuit comprises a multiple stage combinational circuit with multiple stages, at least two of said multiple stages comprising a processing component, a next stage latch, and an exit latch, wherein said multiple stages are arranged sequentially to thereby implement a multiple stage pipeline andAttorney Docket No. 1759P001W001wherein each of said at least two of said multiple stages is loadable with a desired payload such that said desired payload is loaded as payload for said preprepared transmit data packet that is in said stage in said pipeline.

12. The system according to claim 11, wherein said processing component is either a scrambler component or a gearbox component.

13. The system according to claim 11, wherein said next stage latch latches said preprepared transmit data packet that is in said stage in said pipeline into a next stage in said pipeline.

14. The system according to claim 11, wherein said exit latch latches data such that said preprepared transmit data packet that is in said stage in said pipeline exits from said pipeline.

15. The system according to claim 7, wherein said first set of trading instructions is derived from a payload of said specified received data packet when said specified received data packet is of said certain type of data packet used to send said specific type of data andwherein said first set of trading instruction is inserted as said pay load of said specified received data packet when said specified received data packet is of said certain type of data packet used to send said specific type of data.

16. The system according to claim 7, wherein said predetermined payload is a second set of trading instructions, said second set of trading instructions being preprepared and cached prior to receipt of said specified received data packet andwherein said second set of trading instruction is inserted as said payload of said specified received data packet when said specified received data packet is not of said certain type of data packet used to send said specific type of data.

17. The system according to claim 7, wherein said predetermined payload comprises a request or command that has minimal or inconsequential effects on said network or on said trading.

18. A circuit for early detection of a type of data packet received, said circuit receiving a receive preamble of a received data packet, said circuit comprising:Attorney Docket No. 1759P001W001- a scrambler component receiving scrambler parameters and an expected receive preamble, said scrambler component scrambling said expected receive preamble using said scrambler parameters to produce a scrambled version of said expected receive preamble;- a comparison component receiving said scrambled version of said expected receive preamble and said receive preamble of said received data packet, said comparison component comparing said scrambled version of said expected receive preamble and said receive preamble to produce a comparison result;wherein said comparison result indicates whether said scrambled version of said expected receive preamble and said receive preamble match one another, a match between said scrambled version and said receive preamble indicating that said specified received data packet is a specific expected type of data packet.