APPARATUSES, SYSTEMS, AND METHODS FOR IMPLIED SEQUENCE NUMBERING OF TRANSACTIONS IN A PROCESSOR-BASED SYSTEM
20220407813 · 2022-12-22
Inventors
- Matthew Robert ERLER (Portland, OR, US)
- Robert James SAFRANEK (Portland, OR, US)
- Robert Joseph TOEPFER (Portland, OR, US)
- Sandeep BRAHMADATHAN (Dublin, CA, US)
- Shailendra Ramrao CHAVAN (Brentwood, CA, US)
- Jonglih YU (Sunnyvale, CA, US)
Cpc classification
H04L1/0082
ELECTRICITY
H04L5/0053
ELECTRICITY
International classification
Abstract
Apparatuses, systems, and methods for implied sequence numbering of transactions in a processor-based system. The processor-based system includes a transmit circuit configured to generate an implied sequence number for each entry to be transmitted as a packet. The transmit circuit is configured to generate a packet to be transmitted based on an entry, wherein the packet including the payload information and the transmit check value based on the implied sequence number and associated with the entry. In this manner, including an individual sequence number with every transmitted packet may be reduced or avoided to reduce or avoid consuming bandwidth on the communications interface, as the bits used by the sequence number could ordinarily be used for data transmission instead. A receiver circuit is configured to receive the transmitted packet including the payload and the transmit check value, wherein the transmit check value is based on the transmit sequence number.
Claims
1. A processor-based system, comprising: a transmit circuit comprising: a replay buffer including a plurality of entries, each entry including payload information and associated with an implied sequence number; and a data quality check generation circuit configured to receive an implied sequence number associated with an entry of the replay buffer and to generate a transmit check value based on the implied sequence number, the transmit circuit configured to generate a packet based on an entry of the replay buffer, the packet including the payload information and the transmit check value associated with the entry,
2. The processor-based system of claim 1, wherein the transmit circuit is further configured to provide the packet to a communications interface.
3. The processor-based system of claim 1, wherein the transmit circuit is further configured to: receive an indication from a receive circuit which received the packet over the communications interface that the packet was not properly received; and re-send the packet in response to the indication.
4. The processor-based system of claim 1, wherein the data quality check generation circuit is configured to generate the transmit check value as one of a cyclic redundancy check (CRC) value, a parity value, or an error correction code (ECC) value.
5. The processor-based system of claim 1, wherein the implied sequence number is an index number associated with the entry of the replay buffer, and where an initial index is selected to match an initial implied sequence number of a receive circuit.
6. The processor-based system of claim 1, wherein each entry of the replay buffer includes length information and wherein the packet is a variable-length packet.
7. The processor-based system of claim 1, integrated into an integrated circuit (IC).
8. The processor-based system of claim 2, further integrated into a device selected from the group consisting of: a server, a computer, a portable computer, a desktop computer, a mobile computing device, a set top box, an entertainment unit, a navigation device, a communications device, a fixed location data unit, a mobile location data unit, a global positioning system (GPS) device, a mobile phone, a cellular phone, a smart phone, a session initiation protocol (SIP) phone, a tablet, a phablet, a wearable computing device (e.g., a smart watch, a health or fitness tracker, eyewear, etc.), a personal digital assistant (PDM), a monitor, a computer monitor, a television, a tuner, a radio, a satellite radio, a music player, a digital music player, a portable music player, a digital video player, a video player, a digital video disc (DVD) player, a portable digital video player, an automobile, a vehicle component, avionics systems, a drone, and a multicopter.
9. A processor-based system comprising: a receive circuit configured to receive a packet over a communications interface, the packet including a transmit check value, and the receive circuit comprises: an implied sequence number tracking circuit configured to track a current implied sequence number associated with the packet; a data quality check circuit configured to receive the packet and the current implied sequence number, generate an expected check value based on the current implied sequence number, and compare the expected check value with the transmit check value received in the packet; a payload write circuit configured to write the payload information in the packet into a receive buffer if the comparison between the expected check value and the transmit check value received in the packet indicates a match; and a non-acknowledge generation circuit configured to generate an error indication if the comparison between the expected check value and the transmit check value received in the packet does not indicate a match.
10. The processor-based system of claim 9, wherein the implied sequence number tracking circuit is further configured to: initialize the current implied sequence number to an initial value synchronized with an initial implied sequence number of an associated transmit circuit; and set the current implied sequence number to a value corresponding to the implied sequence number of a packet for which the expected check value and the transmit check value received in the packet did not match.
11. A processor-based system, comprising: means for transmitting, the means for transmitting further comprising: means for storing a plurality of entries, each entry including payload information and associated with an implied sequence number; and means for generating a data quality check configured to receive an implied sequence number associated with an entry of the means for storing a plurality of entries and to generate a transmit check value based on the implied sequence number, the means for transmitting further comprising a means for generating a packet based on an entry of the means for storing a plurality of entries, the packet including the payload information and the transmit check value associated with the entry.
12. A processor-based system comprising: means for receiving a packet over a means for communication, the packet including a transmit check value; the means for receiving further comprising: means for tracking an implied sequence number tracking associated with the packet; means for checking data quality in the received packet and the current implied sequence number; means for generating an expected check value based on the current implied sequence number; means for comparing the expected check value with the transmit check value received in the packet; means for writing the payload information in the packet into a means for storing if the comparison between the expected check value and the transmit check value received in the packet indicates a match; and means for generating a non-acknowledgement as an error indication if the comparison between the expected check value and the transmit check value received in the packet does not indicate a match.
13. A method of performing transactions using an implied sequence number, comprising: generating a transmit check value at a transmit circuit based on an implied sequence number; generating a packet including a payload and the transmit check value at the transmit circuit; and transmitting the packet.
14. The method of claim 13, further comprising initializing the implied sequence number to an initial value, the initial value synchronized with an initial implied sequence number of an associated receive circuit.
15. The method of claim 14, further comprising updating the implied sequence number.
16. The method of claim 13, wherein the transmit check value is one of a cyclic redundancy check (CRC) value, a parity value, or an error correction code (ECC) value.
17. A method of performing transactions using an implied sequence number, comprising: receiving a packet including a payload and a transmit check value, the transmit check value based on a transmit sequence number; generating an expected check value based on a receive sequence number; and performing a comparison of the transmit check value and the expected check value.
18. The method of claim 17, further comprising initializing the receive sequence number to an initial value, the initial value synchronized with an initial implied sequence number of an associated transmit circuit.
19. The method of claim 18, further comprising updating the receive sequence number to keep the receive sequence number synchronized with a next expected transmit sequence number.
20. The method of claim 17, further comprising: writing the payload into a receive buffer if the comparison of the transmit check value and the expected check value indicates a match; and generating an error indication associated with the receive sequence number if the comparison of the transmit check value and the expected check value does not indicate a match.
Description
BRIEF DESCRIPTION OF THE FIGURES
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
DETAILED DESCRIPTION
[0018] With reference now to the drawing figures, several exemplary aspects of the present disclosure are described. The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects.
[0019] Aspects disclosed in the detailed description include apparatuses, systems, and methods for implied sequence numbering of transactions in a processor-based system.
[0020]
[0021] In this regard,
[0022] Those having skill in the art will recognize that, as described above, although the data check portion 180 is illustrated as a CRC-based data check, other data integrity checking information types may be used, so long as they can be combined with sequence number information by the transmitter in a way that allows the receiver to derive the sequence number information, and to perform any desired data integrity checking. Although the header portion 160 in
[0023] In this regard,
[0024] The receive circuit 250 may receive an input packet 290 (which in an illustrated aspect may correspond to the output packet 240 as transmitted by the transmit circuit 220) over the communications interface 205, and the input packet 290 may include length information 290a, payload 290b, and implied sequence number-based CRC information 290c. The receive circuit 250 includes a sequence number tracking circuit 270 and a CRC check circuit 280. At the beginning of a sequence of transactions, the sequence number tracking circuit 270 is initialized to a starting sequence number (which may correspond to a starting index number in the transmit circuit 220, such that the transmit circuit 220 and the receive circuit 250 have a same starting value upon which the implied sequence number-based CRC information 240c/290c, may be generated and compared). The sequence number tracking circuit 270 identifies when a new packet (such as input packet 290) has been received by the receive circuit 250, provides a current implied sequence number 270a to the CRC check circuit 280, and increments the current implied sequence number 270a to keep the receive circuit 250 synchronized with the transmit circuit 220 (i.e., the incremented current implied sequence number 270a will correspond to the next index number X for the subsequent packet that will be assembled and transmitted by the transmit circuit 220 to the receive circuit 250).
[0025] The CRC check circuit 280 receives the length information 290a, payload 290b, implied sequence number-based CRC information 290c, and the current implied sequence number 270a, and uses the above information to perform a comparison of the received implied sequence number-based CRC information 290c with a generated expected implied sequence number-based CRC value. The CRC check circuit 280 may generate the expected implied sequence number-based CRC value based on the current implied sequence number 270a, the length information 290a, and the payload 290b, as will be described further with reference to
[0026]
[0027] The method then proceeds to block 320, by generating a packet including a payload and the transmit check value. For example, with respect to
[0028] The method may further proceed to block 330, by updating the transmit sequence number. For example, with respect to
[0029]
[0030] The method continues in block 370, by performing a comparison of the transmit check value and the expected check value. For example, with respect to
[0031] The method may continue in block 375, by updating the receive sequence number. For example, with respect to
[0032] Those having skill in the art will appreciate that other aspects where the allocation of requests is controlled based on different parameters are within the scope of the teachings of the present disclosure. For example, in the case where an error indication is provided back to the transmit circuit 220 that the packet corresponding to the current implied sequence number 270a was not properly received, in one aspect the error indication may include a portion that directly identifies the sequence number of the packet (i.e., for replay requests, the sequence number may not necessarily be implied). In another aspect, the sequence number may not be included in the error indication to the transmit circuit 220, but instead only the implied sequence number-based CRC information 290c may be provided, and the transmit circuit 220 may perform a comparison of the error indication received from the receiver against all outstanding packets to determine which of the entries 211a-211e is associated with the error indication.
[0033] The exemplary system including a communications interface that implements implied sequence numbering according to aspects disclosed herein and discussed with reference to
[0034] In this regard,
[0035] Other initiator and target devices can be connected to the system bus 410. As illustrated in
[0036] The CPU(s) 405 may also be configured to access the display controller(s) 460 over the system bus 410 to control information sent to one or more displays 462. The display controller(s) 460 sends information to the display(s) 462 to be displayed via one or more video processors 461, which process the information to be displayed into a format suitable for the display(s) 462. The display(s) 462 can include any type of display, including, but not limited to, a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, a light emitting diode (LED) display, etc.
[0037] Although only the processor 401 and the memory system 450 have been illustrated as including transmitter(s) and receiver(s) as described with reference to
[0038] Those of skill in the art will further appreciate that the various illustrative logical blocks, modules, circuits, and algorithms described in connection with the aspects disclosed herein may be implemented as electronic hardware, instructions stored in memory or in another computer readable medium and executed by a processor or other processing device, or combinations of both. The initiator devices and target devices described herein may be employed in any circuit, hardware component, integrated circuit (IC), or IC chip, as examples. Memory disclosed herein may be any type and size of memory and may be configured to store any type of information desired. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. How such functionality is implemented depends upon the particular application, design choices, and/or design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
[0039] The various illustrative logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a processor, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).
[0040] The aspects disclosed herein may be embodied in hardware and in instructions that are stored in hardware, and may reside, for example, in Random Access Memory (RAM), flash memory, Read. Only Memory (ROM), Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, a hard disk, a removable disk, a CD-ROM, or any other form of computer readable medium known in the art, An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a remote station. In the alternative, the processor and the storage medium may reside as discrete components in a remote station, base station, or server.
[0041] It is also noted that the operational steps described in any of the exemplary aspects herein are described to provide examples and discussion. The operations described may be performed in numerous different sequences other than the illustrated sequences. Furthermore, operations described in a single operational step may actually be performed in a number of different steps. Additionally, one or more operational steps discussed in the exemplary aspects may be combined. It is to be understood that the operational steps illustrated in the flowchart diagrams may be subject to numerous different modifications as will be readily apparent to one of skill in the art. Those of skill in the art will also understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
[0042] The previous description of the disclosure is provided to enable any person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations. Thus, the disclosure is not intended to be limited to the examples and designs described herein, but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.