Compression with fabric communication
By employing fabric compression logic that caches recent data transfers and transmits indications for repeated items, the method addresses the challenges of power consumption and data transfer speed across electronic device communication fabrics.
Patent Information
- Application Number
- PCT/US2023/031637
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-08-31
- Publication Date
- 2025-03-06
AI Technical Summary
Existing electronic devices face challenges in reducing power consumption and increasing data transfer speed across communication fabrics, particularly when transferring repeated data items.
The implementation of fabric compression logic that utilizes a cache to store recently transferred data items, allowing for the transmission of an indication instead of the actual data item when it has been previously transferred, thereby reducing power consumption and transfer time.
This approach effectively saves power and time by reducing the electrical signaling required for data transfer and minimizing serialized communication, especially when transferring large data items that have been previously sent.
Smart Images

Figure US2023031637_06032025_PF_FP_ABST
Abstract
Description
COMPRESSION WITH FABRIC COMMUNICATIONBACKGROUND
[0001] Computing and other electronic devices play integral roles in manufacturing, communication, transportation, healthcare, commerce, social interaction, entertainment, and other services. For example, electronic devices power the server farms that provide cloud-based, distributed computing functionality for commerce, communication, and artificial intelligence (Al). Electronic devices are also embedded in many different types of modem equipment, from medical devices to appliances and from vehicles to industrial tools. Personal electronic devices enable portable video viewing and convenient access to smart digital assistants. Additionally, one versatile electronic device — the smartphone — has practically become a necessity to have within arm’s reach.
[0002] To provide these diverse functionalities, electronic devices typically include vanous circuitries, such as processors, memories, and buses. An electronic device uses a bus to communicate information between components. For example, a device can transfer data from a memory to a processor as part of executing a computer program. Thus, the components of an electronic device may communicate using a bus and may otherwise interoperate to execute a program, with the program providing a feature that supports some service, such as one for communication, healthcare, or entertainment. Accordingly, computer engineers, electrical engineers, and other designers of electronic devices endeavor to improve operation of the various components of an electronic device to facilitate their use in providing services.SUMMARY
[0003] This document describes hardware and techniques that enable the components of electronic devices to interoperate while using less power and performing computations more quickly. At times, a communication fabric may be tasked with transferring from an initiator to a target an item of data that has the same value as another item of data that was transferred immediately before or recently before. Described device logic enables the communication fabric to send an indication that a previously transferred data item is to be considered as having been transferred again without physically sending the data item again. If a size of the indication is smaller than a size of the data item, power can be saved, and the data transfer can be completed more quickly, at least if the data transfer would otherwise be serialized.
[0004] By way of example only, a compression system can include at least one cache of data items that have been most recently transferred across a communication fabric between an initiator component and a target component. The cache may store one, two, three, four, or morerecently transferred data items. Fabric compression logic can be coupled to the cache to control operation of the compression system. In some cases, the fabric compression logic can be separated into compression logic for the transmission side and decompression logic for the reception side. The compression system can include two caches: a transmission cache and a reception cache. The compression logic and the transmission cache may be disposed relatively nearer an initiator, and the decompression logic and the reception cache may be disposed relatively nearer a target.
[0005] Thus, the compression logic can be coupled to the transmission cache at an initiator side of the communication fabric. The compression logic can determine if a “next” data item is to be physically transferred over the communication fabric or if an indication of the data item can be transferred instead. Responsive to a request from the initiator to transfer the data item, the compression logic compares the data item to those one or more data items that are stored in the transmission cache. If the data item does not match any previously transferred data item that remains in the transmission cache, the compression logic permits the transfer of the data item over the communication fabric to the target.
[0006] On the other hand, if the compression logic determines that the data item matches a previously transferred data item that remains stored within the transmission cache, the compression logic prevents the data transfer. The compression logic instead transmits over the communication fabric towards the target an indication (e.g., an identifier) of the matching previously transferred data item. The decompression logic can be coupled to the reception cache at a target side of the communication fabric. The decompression logic can receive the indication and map the indication to a corresponding previously transferred data item that is stored in the reception cache. The decompression logic then couples the matching data item from the reception cache to the target.
[0007] Thus, an example compression system for a communication fabric can virtually transfer a repeated data item without physically repeating the transfer of the data item across the communication fabric. This process can save power as there is less electrical signaling and can save time if the full data transmission would otherwise be serialized. For example, to the extent that the data item is larger than the indication thereof, less power is consumed while the communication fabric transfers the relatively smaller indication of the value of the data item as compared to how much power would be consumed by physically transferring the value of the data item. In these manners, applying compression to a communication fabric can reduce communication time and save power by an electronic device or an integrated circuit thereof. The following and other example implementations are described herein.
[0008] In example implementations, an apparatus for compression with fabric communication includes at least one storage unit configured to store one or more values that werepreviously transmited to a target over at least one communication fabric. The apparatus also includes fabric compression logic circuitry coupled to the at least one storage unit. The fabric compression logic circuitry is configured to detect a request to transmit a first value to the target over the at least one communication fabric and to compare the first value with the one or more values that were previously transmitted to the target over the at least one communication fabric. Responsive to the first value matching at least one value of the one or more values that were previously transmitted to the target, the fabric compression logic circuitry is also configured to prevent the first value from being transmited to the target over the at least one communication fabric and to transmit toward the target an indication that the at least one value of the one or more values is to be received by the target.
[0009] In example implementations, a method for compression with fabric communication includes detecting a request to transmit a first value to a target over at least one communication fabric. The method also includes comparing the first value with one or more values that were previously transmitted to the target over the at least one communication fabric. Responsive to the first value matching at least one value of the one or more values that were previously transmited to the target, the method further includes preventing the first value from being transmitted to the target over the at least one communication fabric and transmiting toward the target an indication that the at least one value of the one or more values is to be received by the target.
[0010] In example implementations, an apparatus for compression with fabric communication includes at least one storage unit configured to store one or more values that were previously received from an initiator via at least one communication fabric. The apparatus also includes fabnc compression logic circuitry coupled to the at least one storage unit. The fabric compression logic circuitry' is configured to receive an indication that at least one value of the one or more values is to be received by a target. The fabric compression logic circuitry' is also configured to provide the at least one value to the target from the at least one storage unit based on the indication.
[0011] In example implementations, a method for compression with fabric communication includes storing in at least one storage unit one or more values that were previously received by a target from an initiator via at least one communication fabric. The method also includes receiving an indication thatat least one value of the one or more values is to be received by the target from the initiator. The method further includes providing the at least one value to the target from the at least one storage unit based on the indication.
[0012] In other example implementations, an apparatus includes an integrated circuit configured to perform a method for compression with fabric communication.BRIEF DESCRIPTION OF DRAWINGS
[0013] Apparatuses of and techniques for compression with fabric communication are described with reference to the following drawings. The same numbers are used throughout the drawings to reference like features and components.Fig. 1 illustrates an example apparatus with at least one integrated circuit (IC) that includes an initiator, a target, and a communication fabric that can implement compression with fabric communication.Fig. 2 is a schematic diagram illustrating an example communication fabric that includes fabric compression logic circuitry and at least one storage unit to implement compression with fabric communication.Fig. 3 is a schematic diagram illustrating an example communication fabric that includes transmission compression logic circuitry — or compression logic circuitry, reception compression logic circuitry — or decompression logic circuitry, at least one transmission storage unit, and at least one reception storage unit to implement compression with fabric communication.Figs. 4-1 to 4-3 are circuit diagrams illustrating example circuit components and example signaling for a communication fabric that can implement compression with fabric communication.Figs. 5-1 and 5-2 are schematic diagrams illustrating example communication fabric architectures in which compression with fabric communication can be implemented.Fig. 6 is a flow diagram illustrating an example process for implementing compression with fabric communication with respect to an initiator side of a communication fabric.Fig. 7 is a flow diagram illustrating an example process for implementing compression with fabric communication with respect to a target side of a communication fabric.Fig. 8 illustrates various components of an example electronic device that can implement compression with fabric communication in accordance with one or more described aspects.DETAILED DESCRIPTIONOverview
[0014] Electronic devices provide features and perform functions to make important contributions to modem society, such as those related to communication, safety, manufacturing, and content creation. Some of these contributions entail two electronic devices communicatingwith each other. Other contributions entail different components communicating with each other within a single electronic device. Further, each electronic device includes one or more integrated circuits (ICs), and a given IC can include multiple components. These components within an IC can also communicate with each other to provide the features and perform the functions that make important contributions to modem society.
[0015] Any of these devices or components can operate, as part of a communication, as initiators or targets that are coupled together via at least one communication fabric. To perform a data communication, a data item is transferred across a communication fabric. The initiator transmits a data item over the communication fabric, and the target receives the data item via the communication fabric. Further, the communication fabric interfaces with the initiator and the target and propagates the data item along some physical medium, such as one or more cables, wires, or electrical traces. This document describes hardware and techniques that enable the components of electronic devices, or the electronic devices themselves, to communicate more quickly and with less power as initiators and targets coupled together across at least one communication fabric.
[0016] As part of program execution or data processing, a first component can communicate with a second component across at least one communication fabric. To do so, the first component transmits a data item onto the communication fabric. The communication fabric propagates the data item to the second component, and the second component receives the data item. Each of these acts consumes some amount of power and occupies some amount of time. Generally, the power and time expenditure increases as the size of the data item increases.
[0017] Thus, transferring a data item across a communication fabric consumes power and occupies some penod of time. For example, the communication fabric uses power to dnve or propagate a value of the data item over a physical medium while some time period transpires. Generally, as the size of a data item increases, a length of time and an amount of power that is consumed to perform the data transfer also increases. At times, the communication fabric may be tasked with transferring from the initiator to the target an item of data that has the same value as another item of data that was transferred immediately before or relatively recently before. If the data item is physically transferred again, the full amount of power is used again, and the full time period transpires again.
[0018] Fabric compression logic circuitry, however, enables the communication fabric to send an indication that a previously transferred data item is to be considered as having been transferred again without physically sending the data item again. If a size of the indication is smaller than a size of the data item, elapsed time and power usage can both be reduced. To do so, at least one cache of one or more values for recently transferred data items may be maintained bythe compression fabric at two locations. These two locations can include a target side and an initiator side of at least one communication fabric. The indication may identify a cached data value to obviate sending the actual data value.
[0019] In example implementations, a compression sy stem can include at least one cache of data items that have been recently transferred (e.g., most recently transferred) across a communication fabric between an initiator component and a target component. The cache may store up to one, two, three, four, or more recently transferred data items. Fabric compression logic can be coupled to the cache to control operation of the compression sy stem. In some cases, the fabric compression logic can be separated into compression logic for a transmission side and decompression logic for a reception side, and the compression system can include two caches: a transmission cache and a reception cache. Each cache includes at least one storage unit to store the recently transferred one or more data values. The compression logic and the transmission cache may be disposed relatively nearer an initiator, and the decompression logic and the reception cache may be disposed relatively nearer a target.
[0020] The compression logic can be coupled to the transmission cache at an initiator side of the communication fabric. The compression logic can determine if a value is to be transferred over the communication fabric or if an indication of the value can be transferred instead. Responsive to a request from the initiator to transmit a value (e.g., a first value), the compression logic compares the first value to one or more values stored in at least one storage unit of the transmission cache. If the first value does not match any previously transferred value that remains in the transmission cache, the compression logic permits (e.g., initiates, causes, or declines to block) the transmission of the first value of the data item over the communication fabric to the target. The compression logic may also store the first value in the transmission cache for future reference.
[0021] On the other hand, if the compression logic determines that the first value matches a previously transferred value that is stored within the transmission cache, the compression logic prevents (e.g., blocks or declines to initiate or cause) the transmission of the first value of the data item over the communication fabric. The compression logic instead transmits an indication (e.g., an identifier) of the matching previously transferred value over the communication fabric towards the target. The identifier may correspond to an address, position, location, and so forth of the matching value within the reception cache. The address, position, or location of the matching value in the reception cache may be the same as that within the transmission cache.
[0022] The decompression logic can be coupled to the reception cache at a target side of the communication fabric. The decompression logic can receive the indication and map the indication to a corresponding previously transferred value that is stored in the reception cache.The decompression logic then couples the indicated matching value from the reception cache to the target. On the other hand, if the decompression logic receives a value via the communication fabric in conjunction with a no-match indication (or an absence of a match indication), the decompression logic can store the received value in the reception cache as a “new” recently transferred value for potential future reference.
[0023] Thus, an example compression system for at least one communication fabric can virtually transfer a repeated data value without physically repeating the transfer of the value using an indication of the value. This process of transferring a data value indication can save power and time. For example, to the extent that the length of the data is larger than the indication thereof, less power is consumed by the communication fabric and less time elapses while propagating the relatively smaller indication of the value of the data as compared to how much power would be consumed or how much time would elapse by physically transferring the value of the data. With respect to saving time, some transfers of a data value are performed serially across two or more rounds of transmission over a communication fabric. In such scenarios, a single round of transmitting an indication of a value that has already been transmitted can save time versus multiple serial rounds of transmitting the data again.
[0024] In some aspects, a compression system can be realized using a transparent dualended coherent caching architecture, examples of which are described herein. Such systems can avoid, for instance, resending over a communication fabric the most-recently-sent word or words. The total power used by the compression system can be appreciably less than the amount of power that would be used by physically transferring all requested data values over the communication fabric. Similarly, average propagation times can be less by transmitting indications of data values when cached versions of such data values are available. Generally, the power and time saved by the compression system can increase as the frequency of temporally proximate repeated data values increases. The power and time saved by the compression system can also increase as the ratio of the size of the actual data value to the size of the indication thereof increases.
[0025] In these manners, applying compression to at least one communication fabric can save power and time by increasing the efficiency of multiple repeated data-value transfers. The described hardware and techniques can be implemented across a single communication fabric or across multiple levels of one or more communication fabrics. The described principles can be implemented in conjunction with a communication fabric that extends between two or more components within an integrated circuit (IC), between two or more ICs, between two or more printed circuit boards (PCBs), between two or more electronic devices, and so forth. These and other example implementations are described herein.Example Environments and Electronic Devices
[0026] Fig. 1 illustrates, at 100 generally, an example apparatus 102 with at least one integrated circuit 104 (IC 104) that includes an initiator 112, a target 114, and at least one communication fabric 110 that can implement compression with fabric communication. The integrated circuit 104 can include or realize a system-on-chip 106 (SoC 106). The apparatus 102, the integrated circuit 104, the SoC 106, and / or the communication fabric 110 can implement compression with fabric communication as described herein. The communication fabric 110, for instance, can implement compression with fabric communication by selectively providing a value 120 or an indication 122 thereof to the target 114 responsive to accepting from the initiator 112 a request to transmit the value 120. In this example, the apparatus 102 is depicted as a smartphone. The apparatus 102 may, however, be implemented as any suitable computing or other electronic device as described herein.
[0027] Examples of the apparatus 102 include a mobile electronic device or mobile device, mobile communication device, modem, cellular or mobile phone, mobile station, gaming device, navigation device, media or entertainment device (e.g., a media streamer or gaming controller), laptop computer, desktop computer, tablet computer, smart appliance, vehicle-based electronic system, wearable computing device (e.g., clothing, watch, or reality-altering glasses), Internet of Things (loTs) device, sensor, stock management device, electronic portion of a machine or piece of equipment (e.g., a vehicle or robot), memory storage device (e.g., a solid-state drive (SSD)), server computer or portion thereof (e.g., a server blade or rack or another part of a datacenter), and the like. Illustrated examples of the apparatus 102 include a tablet device 102-1, a smart television 102-2, a desktop computer 102-3, a server computer 102-4, a smartwatch 102-5, a smartphone (or document reader) 102-6, and intelligent glasses 102-7.
[0028] In example implementations, the apparatus 102 includes at least one integrated circuit 104. The integrated circuit 104 can be part of or realized as a chip, a package, a module, an assembly, or at least one printed circuit board (PCB) (not shown). Examples of a PCB include a flexible PCB, a rigid PCB, a single or multi-layered PCB, a surface-mounted or through-hole PCB, combinations thereof, and so forth. In some instances, one or more integrated circuit (IC) chips can be mounted on a PCB, and a communication fabric 110 can be disposed on the PCB to couple two or more chips together.
[0029] Each IC chip can be realized as a general-purpose processor, a microcontroller, an application-specific IC (ASIC), and so forth. Other examples of IC chips include a system-on-a- chip (SoC), a security -oriented IC chip, a memory chip, a communications IC chip (e.g., a modem or radio-frequency IC), a graphics processor, an artificial intelligence (Al) accelerator, sensor chips, combinations thereof, and so forth. Sensor chips may include, for example, anaccelerometer, a camera or other light sensor, a satellite positioning system (e.g., a Global Positioning System (GPS)) chip, and the like. An integrated circuit chip can be packaged alone or together with other IC chips. If packaged together, a communication fabric 110 can couple together two or more IC chips “within” the package.
[0030] As shown, the integrated circuit 104 includes the communication fabric 110, the initiator 112, and the target 114. In some cases, the integrated circuit 104 can be realized as an SoC 106. If so, the SoC 106 can include the communication fabric 110, the initiator 112, and the target 114. However, the principles that are described herein are applicable to implementations in which at least one of the communication fabric 110, the initiator 112, or the target 114 are part of different chips, are on different PCBs, or are even in different electronic devices. Accordingly, although not explicitly shown in Fig. 1, the components used to implement compression with fabric communication may include other aspects, including other parts or other devices.
[0031] Although a single integrated circuit 104 is depicted in Fig. 1, the illustrated components can be distributed across multiple ICs. In other words, although the components for implementing compression with fabric communication may be disposed together on a single IC 104 as shown, such components may alternatively be distributed across two or more ICs. For example, the initiator 112 may be part of a first IC, the target 114 may be part of a second IC, and the communication fabric 110 may extend between the first and second ICs.
[0032] In example implementations, the initiator 112 can request that the communication fabric 110 transmit a data value 120 to the target 114. The communication fabric 110 can determine if the data value 120 is present in a transmission cache that is relatively nearer the initiator 112 than the target 114. If the data value 120 is not currently in the transmission cache, the communication fabric 110 can transmit the value 120 to the target 114 and add the value 120 to the transmission cache. In this situation without a match, the target 114 receives the value 120 from the initiator 112 via the communication fabric 110. The communication fabric 110 may also add the value 120 to a reception cache that is relatively nearer the target 114 as compared to the initiator 112. This dual adding of the new value 120 to two caches can facilitate maintaining coherence between the transmission cache and the reception cache.
[0033] If, on the other hand, the data value is currently in the transmission cache, the communication fabric 110 can propagate an indication 122 of the value 120 across the communication fabric 110. The indication 122 can indicate the value 120 in any of various manners. For example, the indication 122 may include an identifier of, or a reference pointing to, the value 120 that is stored in the reception cache. In this situation with a match, the communication fabric 110 provides the value 120 to the target 114 from the reception cache based on the indication 122.
[0034] Example schematic diagrams illustrating compression circuitry in conjunction with at least one communication fabric are described below with reference to Figs. 2 and 3. Example circuit diagrams that depict compression circuitry in conjunction with at least one communication fabric are described below with reference to Figs. 4-1 to 4-3. Example communication fabric architectures are described below with reference to Figs. 5-1 and 5-2. This document also describes Figs. 6 and 7, which depict example processes for compression with fabric communication. An electronic device that can implement compression with fabric communication is described, by way of example only, with reference to Fig. 8.Example Apparatuses and Operational Schemes
[0035] Fig. 2 is a schematic diagram 200 illustrating an example communication fabric 110 that includes fabric compression logic circuitry 202 and at least one storage unit 204 to implement compression with fabric communication. As shown, at least one communication fabric 110 can include at least one instance of compression circuitry 206. The compression circuitry 206 can include at least one instance of fabric compression logic circuitry 202 that is coupled to at least one storage unit 204. As described further herein, the fabric compression logic circuitry 202 can include compression logic circuitry 202-1 (e.g., of Fig. 3) for a transmission or initiator side of the communication fabric 110 and decompression logic circuitry 202-2 (e.g., also of Fig. 3) for a reception or target side of the communication fabric 110. Further, as described herein and shown in Fig. 3, the at least one storage unit 204 can include at least one transmission storage unit 204-1 and at least one reception storage unit 204-2.
[0036] In example implementations, a first component is coupled to the at least one communication fabric 110, and a second component is coupled to the at least one communication fabric 110. Thus, the at least one communication fabric 110 can be coupled between the first component and the second component. The first component can correspond to (e.g., can realize) an initiator 112, and the second component can correspond to (e.g., can realize) a target 114. Examples of such components, and thus of initiators and targets, are described herein, including with reference to Figs. 5-1, 5-2, and 8.
[0037] In example operations, the compression circuitry 206 can selectively propagate the value 120 of a data item being transferred or an indication 122 of the value of the data item. For clarity, consider an example in which the at least one storage unit 204 can store a single value. In such an example situation, the fabric compression logic circuitry 202 can send the indication 122 instead of the value 120 if a current requested value matches the value that was immediately previously transmitted. This specific situation, in conjunction with general principles, is described next using an example scenario that is depicted by a table 210.
[0038] Table 210 has two columns: a value requested column and a transmission column. The former column represents the value that the initiator 112 has currently requested to be transmitted. The transmission column represents what signaling is transmitted in response to the request — e.g., the requested value or an indication thereof. The table 210 has six entries 212-1 to 212-6. Each entry 212 corresponds to a transmission request generated by the initiator 112. For this example scenario, assume that the compression system has just been initialized and that the storage unit 204 holds a default value, such as all zeros or a “Z” value.
[0039] For a first transmission request as represented by the first entry 212-1 , the initiator 112 requests that a value “A” be transferred to the target 114. The fabric compression logic circuitry 202 compares the requested value “A” to what is stored in the storage unit 204. Because the value “A” does not match an initialized value “Z,” the fabric compression logic circuitry 202 transmits the value 120 “A” to the target 114. The fabric compression logic circuitry 202 also loads the value “A"’ into the storage unit 204.
[0040] For a second transmission request as represented by the second entry 212-2, the initiator 112 requests that a value “B” be transferred to the target 114. The fabric compression logic circuitry 202 compares the requested value “B” to what is currently stored in the storage unit 204. Because the requested value “B” does not match the stored value “A,” the fabric compression logic circuitry 202 transmits the value 120 “B” to the target 114. The fabric compression logic circuitry 202 also loads the value “B” into the storage unit 204. Thus, in the case where the storage unit 204 implements a single cache entry, the value “A” is replaced by the value “B” in the storage unit 204.
[0041] For a third transmission request as represented by the third entry 212-3, the initiator112 requests that the value “B” be transferred to the target 114. The fabric compression logic circuitry 202 compares the requested value “B” to what is currently stored in the storage unit 204, which is now also the value “B.” Because the requested value “B” does match the stored value “B,” the fabric compression logic circuitry 202 transmits the indication 122 of the value “B” toward the target 114. The compression logic circuitry 202, such as a portion or an instance thereof on the reception side of the communication fabric 110 (e.g., which may also be referred to herein as decompression logic circuitry), can provide the value “B” to the target 114 based on the indication 122. For example, the fabric compression logic circuitry 202 can provide the indication 122 as one bit to indicate use of the entry from the storage unit 204. In the case where the storage unit 204 implements more than one cache entry', the indication 122 can also include an index of the value “B” into the local, transmission-side storage unit 204, which may also be the same index for another instance of the storage unit 204 on the reception side to obtain the value “B” using the indication 122. Obtaining the value “B” on the reception side of the communicationfabric 110 avoids physically transferring the value “B” across the communication fabric 110 again, which saves power and time. In a matching condition, the fabric compression logic circuitry 202 can keep the storage unit 204 unchanged or can reload the value “B” into the storage unit 204.
[0042] For fourth and fifth transmission requests as represented by the fourth and fifth entries 212-4 and 212-5, respectively, the initiator 112 again requests that the value “B” be sent to the target 114. Each time, the fabric compression logic circuitry 202 compares the requested value “B” to what is currently stored in the storage unit 204, which continues to be the value “B.” Because the requested value “B” does match the stored value “B,” the fabric compression logic circuitry 202 can transmit the indication 122 of the value “B” toward the target 114 two more times. Accordingly, even with a single data-value location in the at least one storage unit 204, if a same value is to be repeatedly transferred across a communication medium, the compression system can attain appreciable power and time savings.
[0043] For a sixth transmission request as represented by the sixth entry 212-6, the initiator 112 requests that a value “C” be transmitted to the target 114. The fabric compression logic circuitry 202 compares the requested value “C” to what is currently stored in the storage unit 204, which is the value “B” for this sixth transmission request. Because the requested value “C” does not match the stored value “B,” the fabric compression logic circuitry 202 transmits the value 120 “C” to the target 114. The fabric compression logic circuitry 202 also loads the value “C” into the at least one storage unit 204. Thus, the value “B” is replaced by the value “C” in the storage unit 204 based on the sixth transmission request for the example scenario of the Table 210.
[0044] The loading of a currently transmitted value into at least one storage unit 204 can occur twice for the same transaction — e.g., both at the transmission-side storage unit and at the reception-side storage unit. For example, the fabric compression logic circuitry 202 can load the current value into a transmission-side storage unit, and, upon receiving the current value, the reception-side logic loads the current value into a reception-side storage unit. This bifurcation of the compression circuitry 206 into transmission and reception sides, or at least a duplication of at least some portions of the compression circuitry 206, is described further with reference to Fig. 3 below. The bifurcation of the compression circuitry 206 into two sides can also be described in terms of a compression side for transmission and a decompression side for reception.
[0045] Although compression circuitry 206 is depicted in Fig. 2 and described herein as being part of the communication fabric 110, compression circuitry 206 can be implemented differently. For example, the compression circuitry 206 can be part of the initiator 112 or part of the target 114, including as being part of each using a permitted, but optional, interpretation herein of the word “or” as being an “inclusive or.” Additionally or alternatively, at least one instance of the compression circuitry 206 can be separate from the initiator 112, the target 114, and thecommunication fabric 110. For instance, a transmission-side instance of the compression circuitry 206 may be part of the initiator 112, but a reception-side instance of the compression circuitry 206 may be separate from, but coupled between, the communication fabric 110 and the target 114.
[0046] Further, aspects or components of the compression circuitry 206 can be distributed between two or more other components. For example, on a transmission side, the storage unit 204 may be part of the communication fabric 110, and the compression logic circuitry 202, or a portion thereof, may be part of the initiator 112. Additionally or alternatively, on a reception side, the fabric compression logic circuitry 202 may be part of the communication fabric 110 while the storage unit 204 is separate from the communication fabric 110 and the target 114. Other combinations and permutations of these various components can also be implemented.
[0047] Fig. 3 is a schematic diagram 300 illustrating an example communication fabric 110 that includes compression logic circuitry 202-1 — which is also referred to herein as transmission compression logic circuitry 202-1, decompression logic circuitry 202-2 — which is also referred to herein as reception compression logic circuitry 202-2, at least one transmission storage unit 204-1, and at least one reception storage unit 204-2 to implement compression with fabric communication. The compression circuitry 206 (e.g., of Fig. 2) can include transmission compression circuitry 206-1 and reception compression circuitry 206-2. As shown, the transmission compression circuitry 206-1 can include the compression logic circuitry 202-1 and the at least one transmission storage unit 204-1. Similarly, the reception compression circuitry 206-2 can include the decompression logic circuitry' 202-2 and the at least one reception storage unit 204-2.
[0048] In example implementations, the transmission compression circuitry 206-1 can perform transmission-side operations for compression with fabnc communication. The reception compression circuitry 206-2 can perform reception-side operations for compression with fabric communication. The transmission compression circuitry 206-1 can selectively transmit a value 120 or an indication 122 thereof based on a requested value (e.g., a first value 302) that is to be transmitted and one or more values stored in the transmission storage unit 204-1. As shown, the at least one transmission storage unit 204-1 can store one or more values 304-1 . . . 304-N, with N representing a positive integer. Similarly, the at least one reception storage unit 204-2 can store one or more values 304-1 . . . 304-N.
[0049] In some cases, the at least one transmission storage unit 204-1 and the at least one reception storage unit 204-2 store the same N values. In other cases, however, at least one value 304 may differ, may be additional, or may be excluded from one of the storage units as compared to the other, such as if the transmission storage unit 204-1 for a given initiator corresponds to multiple reception storage units for multiple targets. In at least some of such other cases, thecompression logic circuitry 202-1 may have knowledge of which value(s) that are stored at the transmission storage unit 204-1 are also stored at the reception storage unit 204-2 for a particular target. Generally, however, at least for straight-forward implementations with relatively simpler circuitry, the same replacement mechanism (e.g., a same allocation or replacement algorithm) is employed for both transmission and reception storage units 204-1 and 204-2. In at least some of such cases, the data items stored in the storage units 204-1 and 204-2 are identical in values and indices.
[0050] In some implementations, the at least one transmission storage unit 204-1 can store one or more values 304-1... 304-N that were previously transmitted from the initiator 112 to the target 114 over the at least one communication fabric 110. Compression logic circuitry 202-1 is coupled to the at least one transmission storage unit 204-1. In example operations, the compression logic circuitry 202-1 can detect a request 306 to transmit a first value 302 to the target 114 over the at least one communication fabric 110. If the compression logic circuitry 202-1 is separate from the initiator 112 (e.g., if the compression logic circuitry 202-1 is part of the communication fabric 110), the compression logic circuitry 202-1 can receive the request 306 from the initiator 112.
[0051] In example operations, the compression logic circuitry 202-1 compares the first value 302 with the one or more values 304-1 .. . 304-N that were previously transmitted to the target 114 over the at least one communication fabric 110. In some cases, the compression logic circuitry' 202-1 can access the transmission storage unit 204-1 to perform the comparison. Responsive to the first value 302 matching at least one value 304 of the one or more values 304-1 . .. 304-N that were previously transmitted to the target 114, the compression logic circuitry' 202-1 prevents the first value 302 from being transmitted to the target 114 over the at least one communication fabnc 110. To prevent the transmission of the first value 302, the compression logic circuitry 202-1 can, for example, block the transmission or decline to initiate or cause the transmission of the first value 302. Additionally or alternatively, if the first value 302 matches at least one value 304 of the one or more values 304-1... 304-N that are stored in the transmission storage unit 204-1, the compression logic circuitry 202-1 can transmit toward the target 114 an indication 122 that the at least one value 304 of the one or more values 304-1. . . 304-N is to be received by the target 114.
[0052] On the other hand, based on the comparison operation, the first value 302 may fail to match any value 304 of the one or more values 304-1 . .. 304-N that are stored in the transmission storage unit 204-1. Responsive to the first value 302 failing to match a value of the one or more values 304-1... 304-N that were previously transmitted to the target 114, the compression logic circuitry 202-1 can permit the first value 302 to be transmitted to the target 114 over the at least one communication fabric 110 as the value 120. To permit the first value 302 to be transmitted,the compression logic circuitry 202-1 can initiate or cause transmission or can decline to block transmission of the first value 302 as the value 120, just to name a few examples.
[0053] Additionally or alternatively, responsive to the first value 302 failing to match a value of the one or more values 304-1 .. . 304-N that were previously transmitted to the target 114, the compression logic circuitry' 202-1 can store the first value 302 in the at least one transmission storage unit 204-1. In some cases, loading the first value 302 into the transmission storage unit 204-1 is performed by replacing a preexisting value of the one or more values 304-1 . . . 304-N. If so, any replacement algorithm may be employed, such as one that is usable for replacing data items in a cache memory. By way of example only, the compression circuitry 206 can apply a least-recently-used (LRU) replacement mechanism, and the transmission and reception sides can employ the same replacement algorithm to at least reduce, if not eliminate, replacement-related coordination signaling.
[0054] In some other implementations, at least one reception storage unit 204-2 can store one or more values 304-1 . .. 304-N that were previously received from the initiator 112 via at least one communication fabric 110 or can store one or more values 304-1 . . . 304-N that were previously transmitted to the target 114 over the at least one communication fabric 110. As shown, the decompression logic circuitry 202-2 is coupled to the at least one reception storage unit 204-2. In example operations, the decompression logic circuitry 202-2 can receive an indication 122 that at least one value 304 of the one or more values 304-1 ... 304-N is to be received by the target 114. The decompression logic circuitry 202-2 can further provide the at least one value 304 to the target 114 from the at least one reception storage unit 204-2 based on the indication 122 as depicted at 314.
[0055] In some cases, to provide the at least one value 304 to the target 114, the decompression logic circuitry 202-2 can map the indication 122 of the at least one value 304 that is to be received by the target 114 to the one or more values 304-1... 304-N of the at least one reception storage unit 204-2 to identify at least one indicated value 304 in the at least one reception storage unit 204-2. The decompression logic circuitry 202-2 may, for example, index into multiple memory storage locations using one or more bits that identify an indicated memory' storage location of the multiple memory storage locations. To provide the at least one value 304 to the target 114, the decompression logic circuitry 202-2 can further forward the at least one indicated value 304 from the at least one reception storage unit 204-2 to the target 114 using at least one multiplexer (mux). Example circuit implementations, which may include at least one multiplexer, are described below with reference to Figs. 4-1 to 4-3.
[0056] If, on the other hand, no value of the multiple values 304-1... 304-N matches the first value 302 of the request 306, the decompression logic circuitry 202-2 receives a value 120from the initiator 112 via the at least one communication fabric 110 as a received value, which is depicted at 312 as the first value 302. Responsive to receipt of the value 120, the decompression logic circuitry 202-2 can also store the received value 120 in the at least one reception storage unit 204-2 as a stored value (not separately illustrated). Here, the newly stored value realizes another value of the one or more values 304-1... 304-N that were previously received from the initiator 112 via the at least one communication fabric 110. Accordingly, if not replaced before the same value 120 is to be transferred again, this newly stored value amongst the one or more values 304- 1 . . . 304-N may be referenced by an indication 122 in the future to save time and power.
[0057] Figs. 4-1, 4-2, and 4-3 are circuit diagrams 400-1, 400-2, 400-3, respectively, illustrating example circuit components and example signaling for a communication fabric 110 that can implement compression with fabric communication. As shown, the communication fabric 110 can include the transmission storage unit 204-1 and the reception storage unit 204-2. The communication fabric 110 can further include at least one buffer 402, at least one instance of replacement logic 404, at least one comparator 406, and at least one multiplexer 408 (MUX 408). As shown, the replacement logic 404 may be realized with transmission replacement logic 404-1 (Tx RL 404-1) and reception replacement logic 404-2 (Rx RL 404-2). For simplicity, the transmission replacement logic 404-1 and the reception replacement logic 404-2 can use the same replacement policy — e.g., to reduce coordination signaling that might otherwise be implemented.
[0058] With reference also to Fig. 3, the communication fabric 110 can include the compression logic circuitry 202-1 and the decompression logic circuitry 202-2. In some cases, the compression logic circuitry' 202-1 (of Fig. 3) may include the transmission replacement logic 404-1 and the at least one comparator 406. The decompression logic circuitry 202-2 (of Fig. 3) may include the reception replacement logic 404-2 and the multiplexer 408. The buffer 402 may be part of the compression logic circuitry 202-1, part of the decompression logic circuitry 202-2, part of the transmission and reception compression logic circuitries 202-1 and 202-2, or separate from each.
[0059] In example implementations, and with particular reference to Fig. 4-1 by way of example only, the comparator 406 can generate the indication 122 as is described below. Thus, the comparator 406 outputs the indication 122. A signal that realizes the indication 122 is routed to one or more components. For example, the indication 122 can be routed to a control input 412 of the buffer 402, a control input 414 of the multiplexer 408, an input of the transmission replacement logic 404-1, and an input of the reception replacement logic 404-2. Each storage unit 204 stores one or more values 304-1... 304-N or at least one value 304. For example, the transmission storage unit 204-1 can store a value 304, and the transmission replacement logic 404- 1 determines if the stored value 304 is to be replaced by the first value 302 based on the indication122. Similarly, the reception storage unit 204-2 can store a value 304, and the reception replacement logic 404-2 determines if the stored value 304 is to be replaced by the first value 302 based on the indication 122. As shown, the first value 302 is represented by a value 120 that is communicated across at least part of a propagation medium of the communication fabric 110 to reach a data input of the reception storage unit 204-2.
[0060] In example operations, the communication fabric 110 receives from the initiator 112 the first value 302, which may be part of a request 306 (of Fig. 3). The transmission storage unit 204-1 , the buffer 402, and the comparator 406 can accept the first value 302 at respective data inputs thereof. The comparator 406 compares the first value 302 to the at least one value 304, which is obtained from the transmission storage unit 204-1 via a data output thereof. Based on a comparison of the first value 302 to the stored value 304, the comparator 406 generates the indication 122. Assume for a first example scenario that these two values match and that the indication 122 indicates a matching condition or matching state. The matching indication 122 is provided to the control input 412, the control input 414, and the inputs of the transmission and reception replacement logics 404-1 and 404-2.
[0061] Regarding the replacement logic 404, because the first value 302 matches the stored value 304, the two instances of replacement logic 404-1 and 404-2 need not cause (e.g., may refrain from causing) the two storage units 204-1 and 204-2 to update any stored value. Alternatively, each replacement logic 404 can store the first value 302 in a same location as the matching value 304. Regarding the buffer 402, the matching indication 122 can prevent the buffer 402 from forwarding the first value 302 as the transmitted value 120 via the control input 412. The transmission prevention can be performed by blocking the buffer 402 from forwarding the value 120, by declining to initiate or cause a forwarding of the value 120 by the buffer 402, by some combination thereof, and so forth. The transmission prevention can be performed, by way of example only, by connecting the bus wires for the data transfer to a more (including most) power saving position. Additionally or alternatively, the transmission prevention can be performed by connecting the data transfer bus wires to a more power saving position except for a predefined number of bus wire(s) (e.g., bus wires [0. .. 1]) and using the predefined bus wires to indicate a matching value in the storage units 204-1 and 204-2 (e.g., via an index into at least the storage unit 204-2). By preventing the transmission of the value 120 across a propagation medium of the communication fabric 110, power and time are saved.
[0062] Instead of transmitting the value 120, the communication fabric 110 transmits the indication 122 across a propagation medium (not separately indicated), such as one or more wires. In some cases, the communication fabric 110 can propagate the indication 122 over one or more wires or other signaling paths that are also used to propagate a value 120. In other cases, thecommunication fabric 110 can include separate wires or signaling paths, including dedicated wires or signaling paths, of a propagation medium for the indication 122. Thus, the multiplexer 408 receives the indication 122 at the control input 414 thereof via at least one propagation medium of the communication fabric 110. The multiplexer 408 can select between two or more inputs (e.g., a first input and a second input) based on the indication 122. In this first scenano, the indication 122 indicates that the multiplexer 408 is to select the input coupled to the reception storage unit 204-2 (e.g., the lower data input as depicted). Accordingly, the multiplexer 408 provides the first value 302 as represented by the stored value 304 from a data output of the reception storage unit 204-2 to the target 114 based on the indication 122.
[0063] Assume for a second example scenario that the first value 302 does not match the value 304 stored in the transmission storage unit 204-1. The comparator 406 generates an indication 122 that is indicative of a non-matching condition or state. Based on the no-match indication 122 being coupled to the control input 412, the compression logic circuitry 202-1 (e.g., of Fig. 3) can permit the transmission of the value 120 using the buffer 402. The transmission permission can include causing or initiating the transmission by the buffer 402, declining to block the buffer 402 from transmitting the value 120, some combination thereof, and so forth. Thus, the buffer 402 can transmit the first value 302 as the value 120 over the communication medium of the communication fabric 110 to data inputs of the reception storage unit 204-2 and the multiplexer 408.
[0064] The multiplexer 408 receives the no-match indication 122 via the control input 414. In this second scenario, the indication 122 indicates that the multiplexer 408 is to select the data input coupled to the buffer 402 or a communication medium of the communication fabric 110 (e.g., the upper data input as depicted). Accordingly, the multiplexer 408 provides the received first value 302 as represented by the value 120 to the target 114 via a data output of the multiplexer 408 based on the indication 122.
[0065] Meanwhile, each replacement logic 404 also receives a no-match indication 122 in this second scenario. Based on the no-match indication 122, each respective replacement logic 404 causes a corresponding storage unit 204 to replace a stored value 304 with the current first value 302. For example, the transmission replacement logic 404-1 uses a control input of the transmission storage unit 204-1 to cause the transmission storage unit 204-1 to load the first value 302 via a data input thereof. Similarly, the reception replacement logic 404-2 uses a control input of the reception storage unit 204-2 to cause the reception storage unit 204-2 to also load the first value 302 via a data input thereof. However, the first value 302 is realized as the received value 120 at the data input of the reception storage unit 204-2.
[0066] The replacement logic 404 can use any of many replacement algorithms. For example, the replacement logic 404 can implement a least-recently-used mechanism (LRU mechanism) in which a stored value 304 that has been unused (e.g., unmatched by a first value 302) the longest is selected for replacement. Other replacement policies can be alternatively or additionally implemented. For example, a different recency -based policy (e.g., instead of an LRU one), a queue-based policy, a frequency-based policy, some combination thereof, and so forth may be implemented by each replacement logic 404 with respect to which data values are, or are not, retained in the storage unit 204 after a replacement operation or a loading operation of a first value 302.
[0067] In example aspects, to control transmission of the value 120, the at least one buffer 402 can be coupled along the at least one communication fabric 110 between the initiator 112 and the target 114. The buffer 402 can forward the first value 302 to the target 114 as the value 120. Here, the fabric compression logic circuitry 202 (e.g., of Figs. 2 and 3) is coupled to the buffer 402. Thus, the fabric compression logic circuitry 202 can permit the first value 302 to be transmitted to the target 114 over the at least one communication fabric 110 by providing at least one signal as the indication 122 to the buffer 402, such as via the control input 412 thereof. The signal may enable or command the buffer 402 to transmit the first value 302 to the target 114 as the value 120.
[0068] In other example aspects, fabric the compression logic circuitry 202, such as the compression logic circuitry 202-1 (e.g., as explicitly depicted in Fig. 3), can include at least one comparator 406 coupled to at least one storage unit, such as the transmission storage unit 204-1. The fabric compression logic circuitry 202 compares the first value 302 with one or more values 304-1... 304-N, such as the depicted value 304, that are stored in the transmission storage unit 204-1 using the comparator 406. In some cases, the at least one comparator 406 may be part of, or may be coupled to, content-addressable memory' (CAM). The content-addressable memory can include the at least one transmission storage unit 204-1 and the at least one comparator 406 and may omit tag data and comparators for the tag data.
[0069] In alternative or additional example aspects, the decompression logic circuitry 202- 2 (e.g., as explicitly depicted in Fig. 3) can include at least one multiplexer 408 coupled between at least one reception storage unit 204-2 and the target 114. The multiplexer 408 can receive a signal corresponding to the indication 122 via at least one control input 414 of the at least one multiplexer 408. The decompression logic circuitry 202-2 can further provide the at least one value 304 to the target 114 from the at least one reception storage unit 204-2 using the at least one multiplexer 408 and responsive to the signal corresponding to the indication 122.
[0070] Generally, each storage unit 204 can hold one or more data items. For instance, a storage unit 204 may correspond to a single memory location that can store a single value 304. Alternatively, a storage unit 204 can correspond to multiple memory locations that can store multiple values, which may be individually addressable, accessible, replaceable, and so forth. In any of such alternatives, a storage unit 204 can be referred to or implemented as a cache memory' or similar.
[0071] In the circuit diagram 400-1, by way of example, the storage units 204-1 and 204- 2 can include a single storage location for the value 304, and the indication 122 can include a single bit. Thus, the indication 122 can indicate if there is a match or no match using the single bit. If there is a match, then the single memory storage location may be accessed to provide the stored value 304 as the first value 302 for the target 114. The circuitry can, however, be implemented with more memory storage locations and more bits for the indication 122, examples of which are described next.
[0072] In the circuit diagram 400-2 of Fig. 4-2, by way of example, the storage units 204- 1 and 204-2 can include four memory storage locations for multiple values 304-1... 304-N (with A=4), and the indication 122 can include three bits [2:0], In this example, a first bit [2] of the indication 122 can represent whether the comparator 406 determined a match or no match. The second and third bits [1 :0] can identify a matching value 304 from the four values 304-1 .. . 304-4.
[0073] With respect to the multiplexer 408, the first bit of the indication 122 can determine whether the multiplexer 408 selects for forwarding to the target 114 the upper data input (as depicted) or one of the four lower data inputs. The multiplexer 408 can use the second and third bits of the indication 122 to select which of the lower four data inputs is to be used to obtain the matching value 304 from the reception storage unit 204-2.
[0074] With respect to the transmission replacement logic 404-1, the first bit of the indication 122 can determine whether the transmission replacement logic 404-1 performs a replacement of a value 304 that is stored in the transmission storage unit 204-1. If a non-match is indicated by this first bit, the transmission replacement logic 404-1 determines a stored value 304 of the four values 304-1 .. . 304-4 for replacement. The stored value 304 can be determined using, for instance, a replacement algorithm. The transmission replacement logic 404-1 can therefore replace the determined value 304 with the first value 302 based on the indication 122. The reception replacement logic 404-2 can operate analogously with respect to the reception storage unit 204-2 and the received value 120 to replace a determined value 304 of the reception storage unit 204-2.
[0075] In the circuit diagram 400-3 of Fig. 4-3, by way of example, the storage units 204- 1 and 204-2 can include three memory storage locations for multiple values 304-1 .. . 304-N (withN=3), and the indication 122 can include two bits [1:0], Thus, relative to the circuit diagram 400- 2 of Fig. 4-2, the quantity of stored values is reduced by “only” one-fourth while the quantity of bits employed by the indication 122 is reduced by one-third. The two bits can be encoded to provide four states or results for the indication 122 — e.g., no-match, match with a first value 304- 1, match with a second value 304-2, and match with a third value 304-3.
[0076] Figs. 4-1 to 4-3 depict example implementations at a circuit level with bit lines, a multiplexer, and explicit specific memory locations. In such cases, values 302 and 304 may be realized with a few bits, one byte, 16 bytes, 64 bytes, and so forth. Circuit-level implementations may, however, be realized in alternative manners. Further, described principles for compression with fabric communication can also be implemented at higher levels. For example, values 302 and 304 may be realized as a packet, a flit, a message, and so forth.
[0077] Figs. 5-1 and 5-2 are schematic diagrams 500-1 and 500-2, respectively, illustrating example communication fabric architectures in which compression with fabric communication can be implemented. These example communication fabric architectures include at least two communication fabrics: a first communication fabric 110-1 and a second communication fabric 110-2. A CPU 502 and a memory controller 504 are coupled to the second communication fabric 110-2. A direct-memory access (DMA) engine 506 (DMA engine 506), a digital signal processor (DSP) 508 (DSP 508), and static random-access memory (SRAM) 510 (SRAM 510) are coupled to the first communication fabric 110-1.
[0078] The first communication fabric 110-1 is coupled to the second communication fabric 110-2, and vice versa. Thus, for instance, the DSP 508 can be coupled to the memory controller 504 via the two communication fabrics and a bridge or other inter-fabric linkage 522. Each component that is coupled to a communication fabnc 110 may be associated with at least one instance of compression circuitry 206. Each instance of compression circuitry 206 in Figs. 5- 1 and 5-2 may include transmission compression circuitry 206-1 or reception compression circuitry 206-2 (e.g., of Fig. 3), including transmission and reception circuitry in some cases.
[0079] With reference to Fig. 5- 1 , for certain example implementations, compression may be performed on an end-to-end basis between an initiator component and a target component. This end-to-end compression may extend across one or more parts of at least two different communication fabrics or across multiple levels of communication fabrics. As shown in the schematic diagram 500-1, the CPU 502 may be associated with compression circuitry 206-21, the memory controller 504 may be associated with compression circuitry 206-23, and the DSP 508 may be associated with compression circuitry 206-12.
[0080] Two example compression paths are explicitly depicted in Fig. 5-1. For an example first compression path 512-1, the path extends between the compression circuitry 206-21 and the compression circuitry 206-23. Thus, this end-to-end path remains within a single communication fabric, which is the second communication fabric 110-2. For an example second compression path 512-2, the path extends between the compression circuitry 206-12 associated with the DSP 508 and the compression circuitry 206-23 associated with the memory controller 504. The second compression path 512-2 can therefore selectively propagate a value 120 or an indication 122 (e g , of Figs. 1 to 4-3) across at least part of the first communication fabric 110-1, across the inter-fabric linkage 522, and across at least part of the second communication fabric 110-2. Thus, this end-to-end path traverses two communication fabrics, which are the first communication fabric 110-1 and the second communication fabric 110-2.
[0081] In example aspects for implementations like those depicted in Fig. 5-1, an initiator 112 may be coupled to the first communication fabric 110-1, and a target 114 may be coupled to the second communication fabric 110-2. Assume that the DSP 508 corresponds to the initiator 112 and that the memory controller 504 corresponds to the target 114. Assume also that the first communication fabric 110-1 is coupled to the second communication fabric 110-2, such as via an inter-fabric linkage 522. Here, the first communication fabric 110-1 can include compression logic circuitry 202-1 and at least one transmission storage unit 204-1 (e.g., each of Fig. 3) as part of the compression circuitry 206-12. The second communication fabric 110-2 can include decompression logic circuitry 202-2 and at least one reception storage unit 204-2 (e.g., each of Fig. 3) as part of the compression circuitry 206-23.
[0082] With reference to Fig. 5-2, for certain example implementations, compression may be performed on a point-to-point basis between any two instances of compression circuitry 206, particularly within a single communication fabric 110. As shown in the schematic diagram 500- 2, the CPU 502 may be associated with compression circuitry 206-21, and the memory controller 504 may be associated with compression circuitry 206-23. The DMA engine 506 may be associated with compression circuitry 206-11, the DSP 508 may be associated with compression circuitry 206-12, and the SRAM 510 may be associated with compression circuitry 206-14.
[0083] In some cases, the inter-fabric linkage 522 or at least one communication fabric of the two or more connected communication fabrics may be associated with compression circuitry, such as compression circuitry 206-13 or compression circuitry 206-22. In at least some of these cases, a point-to-point compression path 512-12 may be created between the compression circuitry 206-13 and the compression circuitry 206-22. Thus, the two or more communication fabrics may be in communication with each other via a compression path like the compression path 512-12.
[0084] Otherwise, for certain aspects of the intra-fabric point-to-point implementations, compression paths remain within a single communication fabric 110. For example, a compression path 512-14 extends along at least part of the first communication fabric 110-1 between thecompression circuitry 206-11 associated with the DMA engine 506 and the compression circuitry' 206-14 associated with the SRAM 510. However, even with the point-to-point implementations of the schematic diagram 500-2, compression may be established between, for instance, the CPU 502 and the SRAM 510. To do so, three compression paths may be established between the CPU 502 and the SRAM 510: a path between compression circuitnes 206-21 and 206-22, a path between compression circuitries 206-22 and 206-13, and a path between compression circuitries 206-13 and 206-14.
[0085] With multiple possible initiator-side compression circuitries and potential target-side compression circuitries, a compression system may disambiguate or identify a given target for a particular communication in any of multiple different manners. In some example systems, each initiator or target may include a respective compression logic circuitry' 202-1 or decompression logic circuitry 202-2, in conjunction with a dedicated transmission storage unit 204-1 or reception storage unit 204-2. In at least some of such cases, a compression system may also include a reserved or dedicated transmission pathway (e.g., one or more wires) for propagating the indication 122 between an initiator and a target or the compression circuitries thereof.
[0086] In other example systems, a given initiator-side compression circuitry 206 can include a combined transmission storage unit 204-1 that stores value corresponding to multiple target-side compression circuitries. To do so, each entry of the storage unit may include, for instance, in association with a value of the entry an identifier of a corresponding target-side compression circuitry 206 that was previously sent the value. If an indication is transmitted in a manner in which multiple potential target-side compression circuitries may receive the indication (e.g., over a shared bus or other common communication medium), then the indication may be associated with an identifier of the target-side compression circuitry 206. On the receiver side, each compression circuitry 206 for an individual target may likewise include respective reception storage units, a combined or joint reception storage unit, or a combination thereof.
[0087] Having generally described schemes, techniques, and hardware for implementing compression with fabric communication, this discussion now turns to example methods.Example Methods
[0088] Example methods are described below with reference to the flow diagrams of Figs. 6 and 7. Although example method aspects are described below with separate references to Figs. 6 and 7, these method aspects may be implemented together in any combination or permutation.
[0089] Fig. 6 is a flow diagram illustrating an example process 600 for implementing compression with fabric communication with respect to an initiator side of a communicationfabric. The flow chart 600 includes seven blocks 602-614. The operations of example processes can be performed by electronic circuit components as described herein. For example, the operations may be performed by at least one instance of compression logic circuitry 202-1 in conjunction with at least one transmission storage unit 204-1.
[0090] At block 602, a request to transmit a first value to a target over at least one communication fabric is detected. For example, the compression logic circuitry 202-1 can detect a request 306 to transmit a first value 302 to a target 114 over at least one communication fabric 110. The compression logic circuitry 202-1 may be realized, for instance, as part of a communication fabric 110, and the target 114 may be a separate component. In some cases, the compression logic circuitry 202-1 may be dedicated to an initiator 112; however, in other cases, the compression logic circuitry' 202-1 may service multiple initiators.
[0091] At block 604, the first value is compared with one or more values that were previously transmitted to the target over the at least one communication fabric. For example, the compression logic circuitry 202-1 can compare the first value 302 with one or more values 304- 1 . . . 304-N that were previously transmitted to the target 114 over the at least one communication fabric 110. To do so, the compression logic circuitry 202-1 may employ at least one comparator 406, at least one content addressable memory (CAM), some combination thereof, and so forth to compare the first value 302 to multiple values that are stored in at least one transmission storage unit 204-1.
[0092] Based on the comparing of block 604, at block 606, the compression logic circuitry' 202-1 can determine if the first value 302 matches a value 304 or fails to match a value 304 of the one or more values 304-1 ... 304-N that were previously transmitted to the target 114. Responsive to the first value 302 matching at least one value 304 of the one or more values 304-1... 304-N that were previously transmitted to the target 114, the process 600 continues with the “Y es” branch at blocks 608 and 610.
[0093] At block 608, the first value is prevented from being transmitted to the target over the at least one communication fabric. For example, the compression logic circuitry 202-1 can prevent the first value 302 from being transmitted to the target 114 over the at least one communication fabric 110. This may be performed by the compression logic circuitry 202-1 blocking transmission of the first value 302 of a data item over the at least one communication fabric 110. Additionally or alternatively, this may be performed by the compression logic circuitry' 202-1 declining to initiate or cause transmission of the first value 302 of a data item over the at least one communication fabric 110.
[0094] At block 610, an indication that the at least one value of the one or more values is to be received by the target is transmitted toward the target. For example, the compression logiccircuitry 202-1 can transmit toward the target 114 an indication 122 that the at least one value 304 of the one or more values 304-1 . . . 304-N is to be received by the target 114. The indication 122 may, for instance, identify a particular value of the one or more values 304-1... 304-N that are stored nearer the target 114 (e.g., with at least one reception storage unit 204-2).
[0095] In some implementations, the process 600 can include a match failure branch. Returning to block 606, the compression logic circuitry 202-1 can determine, based on the comparing of block 604, if the first value 302 matches a value 304 or fails to match a value 304 of the one or more values 304-1... 304-N that were previously transmitted to the target 114. Responsive to the first value 302 failing to match at least one value 304 of the one or more values 304-1... 304-N that were previously transmitted to the target 114, the process 600 may continue with the “No” branch at blocks 612 and 614.
[0096] At block 612, the first value is permitted to be transmitted to the target over the at least one communication fabric. For example, the compression logic circuitry 202-1 can permit the first value 302 to be transmitted to the target 114 over the at least one communication fabric 110. This may be performed by the compression logic circuitry 202-1 initiating or causing transmission of the first value 302 of a data item over the at least one communication fabric 110 to the target 114. Additionally or alternatively, this may be performed by the compression logic circuitry 202-1 declining to block transmission of the first value 302 of a data item over the at least one communication fabric 110 to the target 114. Thus, the permitting may be performed by omitting generation of, or blocking, a signal that would stop transmission of the first value 302. Here, the first value 302 may be transmitted as a value 120 to another component that is separate from the communication fabric 110.
[0097] At block 614, the first value is stored in at least one storage unit. For example, the compression logic circuitry 202-1 can store the first value 302 in at least one transmission storage unit 204-1. Generally, the compression logic circuitry 202-1 may store in the at least one transmission storage unit 204-1 the one or more values 304-1... 304-N that were previously transmitted to the target 114. Further, the compression logic circuitry 202-1 may maintain the one or more values 304-1 . . . 304-N that were previously transmitted to the target 114 in the at least one transmission storage unit 204-1 in accordance with at least one replacement mechanism, such as a least-recently-used (LRU) replacement mechanism.
[0098] Fig. 7 is a flow diagram illustrating an example process 700 for implementing compression with fabnc communication with respect to a target side of a communication fabric. The flow chart 700 includes five blocks 702-710. The operations of the example processes can be performed by electronic circuit components as described herein. For example, the operationsmay be performed by at least one instance of decompression logic circuitry 202-2 in conjunction with at least one reception storage unit 204-2.
[0099] At block 702, one or more values that were previously received by a target from an initiator via at least one communication fabric are stored in at least one storage unit. For example, the decompression logic circuitry 202-2 can store in at least one storage unit, such as at least one reception storage unit 204-2, one or more values 304-1. .. 304-N that were previously received by a target 114 from an initiator 112 via at least one communication fabric 110. Here, the one or more values 304-1 . . . 304-N may be stored in the at least one reception storage unit 204- 2 in respective storage locations that are identifiable (e.g., determined or otherwise knowable) by compression logic circuitry 202-1 that is in communication with the decompression logic circuitry 202-2.
[0100] At block 704, an indication that at least one value of the one or more values is to be received by the target from the initiator is received. For example, the decompression logic circuitry 202-2 can receive an indication 122 that at least one value 304 of the one or more values 304-1 . .. 304-N is to be received by the target 114 from the initiator 112. Thus, the decompression logic circuitry 202-2 may receive the indication 122 from the compression logic circuitry 202-1 instead of physically receiving the at least one value 304 from the initiator 112. In some cases, the indication 122 may identify a storage location of the at least one reception storage unit 204-2.
[0101] At block 706, the at least one value is provided to the target from the at least one storage unit based on the indication. For example, the decompression logic circuitry 202-2 can provide the at least one value 304 to the target 114 from the at least one reception storage unit 204-2 based on the indication 122. To do so, the decompression logic circuitry 202-2 may forward, transmit, couple, or otherwise cause the at least one value 304 to be provided to the target 114. The decompression logic circuitry 202-2 may use, for instance, at least one multiplexer 408 that can selectively couple a received value 120 or a stored value 304 to the target 114.
[0102] In some implementations, the process 700 may also include the operations of block 708 or 710. At block 708, a value is received from the initiator via the at least one communication fabric as a received value. For example, the decompression logic circuitry 202-2 can receive a value 120 from the initiator 112 via the at least one communication fabric 110 as a received value, such as the first value 302 at 312 of Fig. 3. Here, the decompression logic circuitry 202-2 may also provide the received value 120, as the first value 302, to the target 114.
[0103] At block 710, the received value is stored in the at least one storage unit as a stored value that provides another value of the one or more values that were previously received from the initiator via the at least one communication fabric. For example, the decompression logic circuitry 202-2 can store the received value 120 in the at least one reception storage unit 204-2 asa stored value 304. Thus, this newly stored value 304 provides another value 304 of the one or more values 304-1... 304-N that were previously received from the initiator 112 via the at least one communication fabric 110. Accordingly, for a future data communication or transfer, the decompression logic circuitry 202-2 may receive another indication 122 that identifies this newly stored value 304 instead of physically receiving the value 120 to save time or power.
[0104] For the storing of the value 304, the decompression logic circuitry 202-2 may perform a replacement operation that swaps an ’’old” stored value 304 for the “new” stored value 304. In some cases, the decompression logic circuitry 202-2 can use a predetermined replacement mechanism or algorithm, which may be known to the compression logic circuitry 202-1. Additionally or alternatively, the decompression logic circuitry 202-2 may receive from the compression logic circuitry 202-1 an indication of a storage location to which the new value 304 is to be stored by the decompression logic circuitry 202-2 in the at least one reception storage unit 204-2.
[0105] Aspects of these methods may be implemented in, for example, hardware (e.g., fixed logic circuitry, a controller, a finite state machine, or a processor in conjunction with a memory), firmware, software, or some combination thereof. The methods may be realized using one or more of the apparatuses or components shown in Figs. 1 to 5-2 and 8, which components may be further divided, combined, and so on. The devices and components of these figures generally represent hardware, such as electronic devices, PCBs, packaged modules, IC chips, components, or circuits; firmware; software; or a combination thereof. Thus, these figures illustrate some of the many possible systems or apparatuses capable of implementing the described methods.
[0106] For the methods descnbed herein and the associated flow chart(s) and / or flow diagram(s), the orders in which operations are shown and / or described are not intended to be construed as a limitation. Instead, any number or combination of the described method operations can be combined in any order to implement a given method or an alternative method, including by combining operations from different ones of the flow chart(s) and flow diagram(s) and the earlier-described schemes and techniques into one or more methods. Operations may also be omitted from or added to the described methods. Further, described operations can be implemented in fully or partially overlapping manners.Additional Example Apparatuses and Electronic Devices
[0107] Fig. 8 illustrates various components of an example electronic device 800 that can implement compression with fabric communication in accordance with one or more described aspects. The electronic device 800 may be implemented as any one or combination of a fixed,mobile, stand-alone, or embedded device or in any form of a consumer, computer, portable, user, server, communication, phone, navigation, gaming, audio, camera, messaging, media playback, and / or other type of electronic device 800, such as the smartphone that is depicted in Fig. 1 as the apparatus 102. One or more of the illustrated components may be realized as discrete components or as integrated components on at least one integrated circuit of the electronic device 800.
[0108] The electronic device 800 can include one or more communication transceivers 802 that enable wired and / or wireless communication of device data 804, such as received data, transmitted data, or other information identified above. Example communication transceivers 802 include near-field communication (NFC) transceivers, wireless personal area network (PAN) (WPAN) radios compliant with various IEEE 802.15 (Bluetooth®) standards, wireless local area network (LAN) (WLAN) radios compliant with any of the various IEEE 802.11 (Wi-Fi®) standards, wireless wide area network (WAN) (WWAN) radios (e.g., those that are 3GPP- compliant) for cellular telephony, wireless metropolitan area network (MAN) (WMAN) radios compliant with various IEEE 802. 16 (WiMAX™) standards, infrared (IR) transceivers compliant with an Infrared Data Association (IrDA) protocol, and wired local area network (LAN) (WLAN) Ethernet transceivers.
[0109] The electronic device 800 may also include one or more data input ports 806 via which any type of data, media content, and / or other inputs can be received, such as user-selectable inputs, messages, applications, music, television content, recorded video content, and any other type of audio, video, and / or image data received from any content and / or data source, including a sensor like a microphone or a camera. The data input ports 806 may include USB ports, coaxial cable ports, fiber optic ports for optical fiber interconnects or cabling, and other serial or parallel connectors (including internal connectors) for flash memory, DVDs, CDs, and the like. These data input ports 806 may be used to couple the electronic device to components, peripherals, or accessories such as keyboards, microphones, cameras, or other sensors.
[0110] The electronic device 800 of this example includes at least one processor 808 (e.g., any one or more of application processors, microprocessors, digital-signal processors (DSPs), controllers, and the like), which can include a combined processor and memory system (e.g., implemented as part of an SoC), that processes (e g., executes) computer-executable instructions to control operation of the device. The processor 808 may be implemented as an application processor, embedded controller, microcontroller, security processor, artificial intelligence (Al) accelerator, and the like. Generally, a processor or processing system may be implemented at least partially in hardware, which can include components of an integrated circuit or on-chip system, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a fieldprogrammable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon and / or other materials.
[0111] Alternatively or additionally, the electronic device 800 can be implemented with any one or combination of electronic circuitry, which may include software, hardware, firmware, or fixed logic circuitry that is implemented in connection with processing and control circuits, which are generally indicated at 810 (as electronic circuitry 810). This electronic circuitry 810 can implement executable or hardware-based modules (not shown in Fig. 8), such as through processing / computer-executable instructions stored on computer-readable media, through logic circuitry and / or hardware (e.g., such as an FPGA), and so forth.
[0112] The electronic device 800 can include a system bus, interconnect, crossbar, data transfer system, switch fabric, or other communication fabric 110 that couples the various components within the device. A system bus or interconnect can include any one or a combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus (USB), and / or a processor or local bus that utilizes any of a variety of bus architectures. Although not explicitly so illustrated in Fig. 8, the communication fabric 110 can couple together any of the depicted components, can be part of one or more of the illustrated components, and so forth.
[0113] The electronic device 800 also includes one or more memory devices 812 that enable data storage, examples of which include random-access memory (RAM), non-volatile memory (e.g., read-only memory (ROM), flash memory, EPROM, and EEPROM), and a disk storage device. Thus, the memory device(s) 812 can be distributed across different logical storage levels of a system as well as at different physical components. The memory device(s) 812 provide data storage mechanisms to store the device data 804, other types of code and / or data, and various device applications 820 (e.g., software applications or programs). For example, an operating system 814 can be maintained as software instructions within the memory device 812 and executed by the processor 808.
[0114] In some implementations, the electronic device 800 also includes an audio and / or video processing system 816 that processes audio and / or video data and / or that passes through the audio and / or video data to an audio system 818 and / or to a display system 822 (e.g., avideo buffer or a screen of a smartphone or camera). The audio system 818 and / or the display system 822 may include any devices that process, display, and / or otherwise render audio, video, display, and / or image data. Display data and audio signals can be communicated to an audio component and / or to a display component via an RF (radio-frequency) link, an S-video link, an HDMI (high- definition multimedia interface) link, a composite video link, a component video link, a DVI (digital video interface) link, an analog audio connection, a video bus, or another similarcommunication link, such as a media data port 824. In some implementations, the audio system 818 and / or the display system 822 are external or separate components of the electronic device 800. Alternatively, the display system 822, for example, can be an integrated component of the example electronic device 800, such as part of an integrated touch interface.
[0115] The electronic device 800 of Fig. 8 illustrates example implementations of the apparatus 102 of Fig. 1, of a device that can implement the example components of Figs. 2 and 3, of a device that can implement the example circuitries of Figs. 4-1 to 4-3, of a device that can implement the example communication fabric architectures of Figs. 5-1 and 5-2, and of a device that can implement the example methods of Figs. 6 and 7. The electronic device 800, including one or more components thereof, can thus include an initiator 112, a target 114, and a communication fabric 110 that is coupled therebetween as indicated at 826. The communication fabric 110 can include compression circuitry 206, which may include fabric compression logic circuitry 202 and at least one storage unit 204. Any of the components depicted in Fig. 8 may operate as an initiator 112 or a target 114. Further, any of the depicted components may include an initiator 112, a target 114, or a communication fabric 110. Accordingly, one or more of the components illustrated in Fig. 8 may be integrated on a same IC chip (e.g., the IC 104 of Fig. 1), like the processor 808 and / or an SoC (e.g., the SoC 106 of Fig. 1).Example Aspects and Implementations for Compression with Fabric Communication
[0116] In the following, some example aspects and implementations are described:
[0117] Example aspect 1: An apparatus for implementing compression with fabric communication, the apparatus comprising: at least one storage unit configured to store one or more values that were previously transmitted to a target over at least one communication fabric; and fabric compression logic circuitry coupled to the at least one storage unit, the fabric compression logic circuitry configured to: detect a request to transmit a first value to the target over the at least one communication fabric; compare the first value with the one or more values that were previously transmitted to the target over the at least one communication fabric; and responsive to the first value matching at least one value of the one or more values that were previously transmitted to the target, prevent the first value from being transmitted to the target over the at least one communication fabric; and transmit toward the target an indication that the at least one value of the one or more values is to be received by the target.
[0118] Example aspect 2: The apparatus of example aspect 1, wherein the fabric compression logic circuitry is further configured to: responsive to the first value failing to match a value of the one or more values that were previously transmitted to the target, permit the first value to be transmitted to the target over the at least one communication fabric.
[0119] Example aspect 3: The apparatus of example aspect 1 or 2, wherein the fabric compression logic circuitry is further configured to: responsive to the first value failing to match a value of the one or more values that were previously transmitted to the target, store the first value in the at least one storage unit.
[0120] Example aspect 4: The apparatus of any one of the preceding example aspects, further comprising: at least one buffer coupled along the at least one communication fabric between an initiator and the target, the at least one buffer configured to forward the first value to the target, wherein: the fabric compression logic circuitry is coupled to the at least one buffer; and the fabric compression logic circuitry is further configured to permit the first value to be transmitted to the target over the at least one communication fabric by providing at least one signal to the at least one buffer, the at least one signal configured to enable the at least one buffer to transmit the first value to the target.
[0121] Example aspect 5: The apparatus of any one of the preceding example aspects, wherein: the fabric compression logic circuitry comprises at least one comparator coupled to the at least one storage unit; and the fabric compression logic circuitry is further configured to compare the first value with the one or more values stored in the at least one storage unit using the at least one comparator.
[0122] Example aspect 6: The apparatus of any one of the preceding example aspects, wherein: the fabric compression logic circuitry further comprises content-addressable memory, the content-addressable memory comprising the at least one storage unit and the at least one comparator.
[0123] Example aspect 7: The apparatus of any one of the preceding example aspects, wherein: the at least one storage unit compnses at least one transmission storage unit; the fabnc compression logic circuitry comprises compression logic circuitry and decompression logic circuitry; the apparatus further comprises at least one reception storage unit coupled to the decompression logic circuitry and configured to store the one or more values that were previously transmitted to the target over the at least one communication fabric; and the decompression logic circuitry is configured to: receive the indication that the at least one value of the one or more values is to be received by the target; and provide the at least one value to the target from the at least one reception storage unit based on the indication.
[0124] Example aspect 8: The apparatus of any one of the preceding example aspects, further comprising: the at least one communication fabric, wherein: the at least one communication fabric comprises a first communication fabric and a second communication fabric, the first communication fabric coupled to the second communication fabric; the first communication fabric comprises the at least one transmission storage unit and the compressionlogic circuitry; and the second communication fabric comprises the at least one reception storage unit and the decompression logic circuitry.
[0125] Example aspect 9: The apparatus of any one of the preceding example aspects, wherein: the decompression logic circuitry comprises at least one multiplexer coupled between the at least one reception storage unit and the target, the at least one multiplexer configured to receive a signal corresponding to the indication via at least one control input of the at least one multiplexer; and the decompression logic circuitry is further configured to provide the at least one value to the target from the at least one reception storage unit using the at least one multiplexer and responsive to the signal corresponding to the indication.
[0126] Example aspect 10: The apparatus of any one of the preceding example aspects, wherein the apparatus comprises a system-on-chip (SoC).
[0127] Example aspect 11: The apparatus of any one of the preceding example aspects, further comprising: the at least one communication fabric, wherein the at least one communication fabric comprises: the at least one storage unit; and the fabric compression logic circuitry.
[0128] Example aspect 12: The apparatus of any one of the preceding example aspects, further comprising: a first component coupled to the at least one communication fabric, the first component comprising an initiator; and a second component coupled to the at least one communication fabric, the second component comprising the target, wherein the at least one communication fabric is coupled between the first component and the second component.
[0129] Example aspect 13: A method for implementing compression with fabric communication, the method comprising: detecting a request to transmit a first value to a target over at least one communication fabric; comparing the first value with one or more values that were previously transmitted to the target over the at least one communication fabric; and responsive to the first value matching at least one value of the one or more values that were previously transmitted to the target, preventing the first value from being transmitted to the target over the at least one communication fabric; and transmitting toward the target an indication that the at least one value of the one or more values is to be received by the target.
[0130] Example aspect 14: The method of example aspect 13, further comprising: responsive to the first value failing to match a value of the one or more values that were previously transmitted to the target, permitting the first value to be transmitted to the target over the at least one communication fabric.
[0131] Example aspect 15: The method of example aspect 13 or 14, further comprising: storing in at least one storage unit the one or more values that were previously transmitted to the target; and maintaining the one or more values that were previously transmitted to the target inthe at least one storage unit in accordance with a least-recently-used (LRU) replacement mechanism.
[0132] Example aspect 16: The method of any one of example aspects 13 to 15, further comprising: receiving from an initiator the request to transmit the first value.
[0133] Example aspect 17: The method of any one of example aspects 13 to 16, wherein the transmitting toward the target the indication comprises: transmitting, from compression logic circuitry to decompression logic circuitry, a message that indicates the at least one value of the one or more values is to be received by the target, the first value having a first size that is larger than a second size of the message.
[0134] Example aspect 18: An apparatus for implementing compression with fabric communication, the apparatus comprising: at least one storage unit configured to store one or more values that were previously received from an initiator via at least one communication fabric; and fabric compression logic circuitry coupled to the at least one storage unit, the fabric compression logic circuitry configured to: receive an indication that at least one value of the one or more values is to be received by a target; and provide the at least one value to the target from the at least one storage unit based on the indication.
[0135] Example aspect 19: The apparatus of example aspect 18, wherein the fabric compression logic circuitry is further configured to: map the indication of the at least one value that is to be received by the target to the one or more values of the at least one storage unit to identify at least one indicated value in the at least one storage unit; and forward the at least one indicated value from the at least one storage unit to the target using at least one multiplexer.
[0136] Example aspect 20: The apparatus of example aspect 18 or 19, wherein the fabric compression logic circuitry is further configured to: receive a value from the initiator via the at least one communication fabric as a received value; and store the received value in the at least one storage unit as a stored value, the stored value comprising another value of the one or more values that were previously received from the initiator via the at least one communication fabric.
[0137] Example aspect 21 : A method for implementing compression with fabric communication, the method comprising: storing in at least one storage unit one or more values that were previously received by a target from an initiator via at least one communication fabric; receiving an indication that at least one value of the one or more values is to be received by the target from the initiator; and providing the at least one value to the target from the at least one storage unit based on the indication.
[0138] Example aspect 22: An apparatus comprising: a processor configured to perform the method of any one of example aspects 13-17 or 21.
[0139] Features described in the context of one aspect (e.g., a method or an apparatus) may be used in combination with other aspects (e.g., an apparatus or a method, respectively, or a different method or a different apparatus).
[0140] Unless context dictates otherwise, use herein of the word “or” may be considered use of an “inclusive or,” or a term that permits inclusion or application of one or more items that are linked by the word “or” (e g., a phrase “A or B” may be interpreted as permitting just “A,” as permitting just “B,” or as permitting both “A” and “B”). Also, as used herein, a phrase referring to “at least one of’ a list of items refers to any combination of those items, including single members. For instance, “at least one of a, b, or c” can cover a, b, c, a-b, a-c, b-c, and a-b-c, as well as any combination with multiples of the same element (e.g., a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, and c-c-c, or any other ordering of a, b, and c). Further, items represented in the accompanying figures and terms discussed herein may be indicative of one or more items or terms, and thus reference may be made interchangeably to single or plural forms of the items and terms in this written descnption.
[0141] Although implementations for realizing compression with fabric communication have been described in language specific to certain features and / or methods, the subject of the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as example implementations for realizing compression with fabric communication.
Claims
CLAIMSWhat is claimed is:
1. An apparatus for implementing compression with fabric communication, the apparatus comprising: at least one storage unit configured to store one or more values that were previously transmitted to a target over at least one communication fabric; and fabric compression logic circuiliy coupled to the at least one storage unit, the fabric compression logic circuitry configured to: detect a request to transmit a first value to the target over the at least one communication fabric; compare the first value with the one or more values that were previously transmitted to the target over the at least one communication fabric; and responsive to the first value matching at least one value of the one or more values that were previously transmitted to the target, prevent the first value from being transmitted to the target over the at least one communication fabric; and transmit toward the target an indication that the at least one value of the one or more values is to be received by the target.
2. The apparatus of claim 1, wherein the fabric compression logic circuitry is further configured to: responsive to the first value failing to match a value of the one or more values that were previously transmitted to the target, permit the first value to be transmitted to the target over the at least one communication fabric.
3. The apparatus of claim 1 or 2, wherein the fabric compression logic circuitry is further configured to: responsive to the first value failing to match a value of the one or more values that were previously transmitted to the target, store the first value in the at least one storage unit.
4. The apparatus of any one of the preceding claims, wherein: the fabric compression logic circuitry comprises at least one comparator coupled to the at least one storage unit; and the fabric compression logic circuitry is further configured to compare the first value with the one or more values stored in the at least one storage unit using the at least one comparator.
5. The apparatus of any one of the preceding claims, wherein: the at least one storage unit comprises at least one transmission storage unit; the fabric compression logic circuitry comprises compression logic circuitry and decompression logic circuitry; the apparatus further comprises at least one reception storage unit coupled to the decompression logic circuitry and configured to store the one or more values that were previously transmitted to the target over the at least one communication fabric; and the decompression logic circuitry is configured to: receive the indication that the at least one value of the one or more values is to be received by the target; and provide the at least one value to the target from the at least one reception storage unit based on the indication.
6. The apparatus of claim 5, further comprising: the at least one communication fabric, wherein: the at least one communication fabric comprises a first communication fabric and a second communication fabric, the first communication fabnc coupled to the second communication fabric; the first communication fabric comprises the at least one transmission storage unit and the compression logic circuitry; and the second communication fabric comprises the at least one reception storage unit and the decompression logic circuitry.
7. The apparatus of any one of the preceding claims, further comprising: the at least one communication fabric, the at least one communication fabric comprising the at least one storage unit and the fabric compression logic circuitry; a first component coupled to the at least one communication fabric, the first component comprising an initiator; and a second component coupled to the at least one communication fabric, the second component comprising the target, wherein the at least one communication fabric is coupled between the first component and the second component.
8. A method for implementing compression with fabric communication, the method comprising: detecting a request to transmit a first value to a target over at least one communication fabric; comparing the first value with one or more values that were previously transmitted to the target over the at least one communication fabric; and responsive to the first value matching at least one value of the one or more values that were previously transmitted to the target, preventing the first value from being transmitted to the target over the at least one communication fabric; and transmitting toward the target an indication that the at least one value of the one or more values is to be received by the target.
9. The method of claim 8, further comprising: responsive to the first value failing to match a value of the one or more values that were previously transmitted to the target, permitting the first value to be transmitted to the target over the at least one communication fabric.
10. The method of claim 8 or 9, further comprising: storing in at least one storage unit the one or more values that were previously transmitted to the target; and maintaining the one or more values that were previously transmitted to the target in the at least one storage unit in accordance with a least-recently-used (LRU) replacement mechanism.
11. The method of any one of claims 8 to 10, wherein the transmitting toward the target the indication comprises: transmitting, from compression logic circuitry to decompression logic circuitry, a message that indicates the at least one value of the one or more values is to be received by the target, the first value having a first size that is larger than a second size of the message.
12. An apparatus for implementing compression with fabric communication, the apparatus comprising: at least one storage unit configured to store one or more values that were previously received from an initiator via at least one communication fabric; and fabric compression logic circuitry' coupled to the at least one storage unit, the fabric compression logic circuitry configured to: receive an indication that at least one value of the one or more values is to be received by a target; and provide the at least one value to the target from the at least one storage unit based on the indication.
13. The apparatus of claim 12, wherein the fabric compression logic circuitry is further configured to: map the indication of the at least one value that is to be received by the target to the one or more values of the at least one storage unit to identify at least one indicated value in the at least one storage unit; and forward the at least one indicated value from the at least one storage unit to the target using at least one multiplexer.
14. The apparatus of claim 12 or 13, wherein the fabric compression logic circuitry is further configured to: receive a value from the initiator via the at least one communication fabric as a received value; and store the received value in the at least one storage unit as a stored value, the stored value comprising another value of the one or more values that were previously received from the initiator via the at least one communication fabric.
15. A method for implementing compression with fabric communication, the method comprising: storing in at least one storage unit one or more values that were previously received by a target from an initiator via at least one communication fabric; receiving an indication that at least one value of the one or more values is to be received by the target from the initiator; and providing the at least one value to the target from the at least one storage unit based on the indication.
16. An apparatus comprising: a processor configured to perform the method of any one of claims 8 to 11 or 15.
Citation Information
Patent Citations
Data redundancy elimination method and device
CN111478938A
Compression dictionary synchronization method and device
US20110222596A1
Data processing method and data processing device
US20140172795A1