Embodiments are generally related to electronic systems including storage systems and controllers. Embodiments are additionally related to SOC (System-on-Chip) devices, components, and devices thereof. Embodiments are also related to PHY layer logic (Physical ink control logic) and coupled devices,
In a variety of electronic systems, including storage systems, a number of devices (e.g., storage devices) of the system may be under control of a common control unit. For example, in storage systems each one or more storage controllers may be coupled with a plurality of storage devices. The controllers and the storage devices each consume significant power even when in an idle state. Still more specifically, the communication interfaces in the storage controllers and the storage devices consume power even when idle if the communication medium and/or protocol require that an idle communication path continuously send and receive signals during an idle period in which no application data is exchanged between the devices. For example, in a Serial Attached SCSI (SAS) environment, the PHY layer logic (physical link control logic) of coupled devices exchange idle words during such idle periods.
Timing problems are often inherent with prior art PHY devices and systems. Meeting timing while minimizing the die area is an important goal in any developing efficient Phy layer logic. For example, a timing closure problem was encountered during the development of Phy IP used for SAS Tx training invalid marker detection logic. The leading industry synthesis tool was unable to synthesize the rtl into logical gates while meeting the timing of this path within the required 3.33 ns clock period with a typical rtl coding style. This optimized algorithm yielded approximately an 8X improvement in timing over the previous code.
Previous attempts have been made to address this problem. One solution involves iteratively counting and tracking the consecutive number of ones or zeros over the entire width of the parallel data bus to determine the maximum value. Another solution involves breaking up the above method into multiple parallel blocks in order to help speed up the process, which requires the notion of “carry-in” and “carry-out.” Primary disadvantages of both of these attempts include the silicon area to implement the logic and/or an inability to meet timing for bus frequencies that exceed 100 MHz.
Thus, there is an ongoing challenge to manage communication paths between devices, for example, between SAS devices, and to reduce wasteful power consumption.
The following summary is provided to facilitate an understanding of some of the innovative features unique to the disclosed embodiments and is not intended to be a full description. A full appreciation of the various aspects of the embodiments disclosed herein can be gained by taking the entire specification, claims, drawings, and abstract as a whole.
It is, therefore, one aspect of the disclosed embodiments to provide for methods, systems, and devices for differentiating invalid pattern markers from valid pattern markers.
It is another aspect of the disclosed embodiments to provide methods, systems, and devices for ascertaining the maximum number of consecutives ones or zeros in an N-bit wide parallel word bus within a single dock cycle of an application in a SOC.
It is a further aspect of the disclosed embodiments to provide for the use of a simple priority encoder to avoid the use of complex functions in a SOC in order to achieve efficient power usage thereof.
The aforementioned aspects and other objectives and advantages can now be achieved as described herein. Methods, systems and processor-readable media are disclosed for reducing the width of a logical comparison. In some embodiments, steps or logical operations can be provided for recursively reducing from a serial data stream, a width of a logical comparison based on a previous result generated, and determining a maximum count of consecutive ones or consecutive zeros from the serial data stream based on a priority encoder within a single clock cycle in order to avoid a use of complex functions.
In another embodiment, a step or logical operation can be implemented for ascertaining the maximum number of the consecutive ones or the consecutive zeros in a parallel word bus within the single clock cycle. In some embodiments, the parallel word bus can be configured as an N-bit wide parallel word bus. In other embodiments, a step or logical operation can be implemented for determining the maximum count of the consecutive ones and the consecutive zeros after de-serializing at least a portion of the serial data stream into N-bit (e.g., 40 bit) parallel words via the parallel word bus. In other embodiments, the parallel word bus can be configured as, for example, a 10-bit input bus. In yet other embodiments, a step or logical operation can be implemented for differentiating an invalid pattern marker from a valid marker based on a range of patterns of the consecutive ones and the consecutive zeros from the serial data stream.
In another embodiment, a system for reducing the width of a logical comparison can be implemented. Such a system can include, for example, a processor and a computer-usable medium embodying computer program code. The computer program code can include instructions executable by the processor and configured, for example, for recursively reducing from a serial data stream, a width of a logical comparison based on a previous result generated; and determining a maximum count of consecutive ones or consecutive zeros from the serial data stream based on a priority encoder within a single clock cycle in order to avoid a use of complex functions. In another embodiment, such instructions can be further configured for ascertaining the maximum number of the consecutive ones or the consecutive zeros in a parallel word bus within the single clock cycle. In such a system embodiment, the parallel word bus can include an N-bit wide parallel word bus.
In other embodiments, such instructions can be further configured for determining the maximum count of the consecutive ones and the consecutive zeros after de-serializing at least a portion of the serial data stream into N-bit parallel words via the parallel word bus. In some system embodiments, the parallel word bus may be, for example, a 10-bit input bus. In yet other embodiments, such instructions can be further configured for differentiating an invalid pattern marker from a valid marker based on a range of patterns of the consecutive ones and the consecutive zeros from the serial data stream.
In still another embodiment, a processor-readable medium storing code representing instructions to cause a process for reducing the width of a logical comparison can be implemented. Such code can include code to, for example: recursively reduce from a serial data stream, a width of a logical comparison based on a previous result generated; and determine a maximum count of consecutive ones or consecutive zeros from the serial data stream based on a priority encoder within a single dock cycle in order to avoid a use of complex functions.
In still other embodiments, such code can further include code to ascertain the maximum number of the consecutive ones or the consecutive zeros in a parallel word bus within the single clock cycle. In some processor-readable embodiments, the parallel word bus can be an N-bit wide parallel word bus. In yet other embodiments, such code can further include code to determine the maximum count of the consecutive ones and the consecutive zeros after de-serializing at least a portion of the serial data stream into, for example, N=40 bit (e.g., 40 bit) parallel words via the parallel word bus. In still other embodiments, such code can further include code to differentiate an invalid pattern marker from a valid marker based on a range of patterns of the consecutive ones and the consecutive zeros from the serial data stream.
The accompanying figures, in which like reference numerals refer to identical or functionally-similar elements throughout the separate views and which are incorporated in and form a part of the specification, further illustrate the present invention and, together with the detailed description of the invention, serve to explain the principles of the present invention.
The particular values and configurations discussed in these non-limiting examples can be varied and are cited merely to illustrate at least one embodiment and are not intended to limit the scope thereof.
In some situations (e.g., in SAS3 PHY layer spec), it is a requirement to differentiate an invalid pattern marker from a valid marker based on a range of contiguous 1 and 0 patterns in the received serial data stream, as shown in, for example, system 10 of
The general methodology can be implemented as follows:
1) Starting with the raw data in Data[9:0] (10 bit wide), generate bus 0 (9 bit wide) based on Data[9:0], then bus1 (8 bit wide) based on the resulting bus0, and so on, until bus8 consists of a single bit. The operation to generate the resulting bus in each step is a simple logical AND of two adjacent bits within the input data, for example:
A synthesis tool can further optimize this logic into Bus1[0], Bus2[0], Bus3[0], and so on.
Consequently, every BusX logic can utilize just the raw data input to generate the output with a single level combinatorial logic.
2) Next, the Code value can be calculated from Bus0 to Bus8.
3) Finally, the maximum number of contiguous ones of the 10 bit input data can be ascertained with a priority encoder described by case statement as shown in
Based on the foregoing, it can be appreciated that the disclosed embodiments can be implemented as optimized algorithm to ascertain the maximum number of consecutive ones or zeros in an N-bit wide parallel word bus within a single dock cycle of the application in a SOC. Such an approach recursively reduces the width of the logical comparison based on the previous result followed by a final determination of the max count (of consecutive ones or zeros) based on a simple priority encoder, in order to avoid the use of complex functions such as adders. The disclosed embodiments are also extensible to any generic N-bit data input and are easily synthesizable into minimal gate count with low latency for high-speed applications. Advantages of the disclosed embodiments include meeting timing while minimizing the die area with the additional benefit of lower power consumption due to the very efficient implementation of such embodiments and related functions.
A number of embodiments, preferred and alternative, can be implemented. In some embodiments, for example, steps or logical operations can be provided for recursively reducing from a serial data stream, a width of a logical comparison based on a previous result generated, and determining a maximum count of consecutive ones or consecutive zeros from the serial data stream based on a priority encoder within a single clock cycle in order to avoid a use of complex functions.
In another embodiment, a step or logical operation can be implemented for ascertaining the maximum number of the consecutive ones or the consecutive zeros in a parallel word bus within the single clock cycle. In some embodiments, the parallel word bus can be configured as an N-bit wide parallel word bus. In other embodiments, a step or logical operation can be implemented for determining the maximum count of the consecutive ones and the consecutive zeros after de-serializing at least a portion of the serial data stream into 40-bit parallel words via the parallel word bus. In other embodiments, the parallel word bus can be configured as a 10-bit input bus. In yet other embodiments, a step or logical operation can be implemented for differentiating an invalid pattern marker from a valid marker based on a range of patterns of the consecutive ones and the consecutive zeros from the serial data stream. Note that in some embodiments, Stage 1, Stage 2, and/or Stage 3 with two or three pipeline stages for extremely high-speed systems can be implemented, if timing cannot be met in a single clock cycle.
In another embodiment, a system for reducing the width of a logical comparison can be implemented. Such a system can include, for example, a processor and a computer-usable medium embodying computer program code. The computer program code can include instructions executable by the processor and configured, for example, for recursively reducing from a serial data stream, a width of a logical comparison based on a previous result generated; and determining a maximum count of consecutive ones or consecutive zeros from the serial data stream based on a priority encoder within a single clock cycle in order to avoid a use of complex functions. In another embodiment, such instructions can be further configured for ascertaining the maximum number of the consecutive ones or the consecutive zeros in a parallel word bus within the single dock cycle. In such a system embodiment, the parallel word bus can include an N-bit wide parallel word bus.
In other embodiments, such instructions can be further configured for determining the maximum count of the consecutive ones and the consecutive zeros after de-serializing at least a portion of the serial data stream into 40-bit parallel words via the parallel word bus. In some system embodiments, the parallel word bus may be a 10-bit input bus. In yet other embodiments, such instructions can be further configured for differentiating an invalid pattern marker from a valid marker based on a range of patterns of the consecutive ones and the consecutive zeros from the serial data stream.
In still another embodiment, a processor-readable medium storing code representing instructions to cause a process for reducing the width of a logical comparison can be implemented. Such code can include code to, for example: recursively reduce from a serial data stream, a width of a logical comparison based on a previous result generated; and determine a maximum count of consecutive ones or consecutive zeros from the serial data stream based on a priority encoder within a single clock cycle in order to avoid a use of complex functions.
In still other embodiments, such code can further include code to ascertain the maximum number of the consecutive ones or the consecutive zeros in a parallel word bus within the single clock cycle. In some processor-readable embodiments, the parallel word bus can be an N-bit wide parallel word bus. In yet other embodiments, such code can further include code to determine the maximum count of the consecutive ones and the consecutive zeros after de-serializing at least a portion of the serial data stream into 40-bit parallel words via the parallel word bus. In still other embodiments, such code can further include code to differentiate an invalid pattern marker from a valid marker based on a range of patterns of the consecutive ones and the consecutive zeros from the serial data stream.
It will be appreciated that variations of the above-disclosed and other features and functions, or alternatives thereof, may be desirably combined into many other different systems or applications. Also, that various presently unforeseen or unanticipated alternatives, modifications, variations or improvements therein may be subsequently made by those skilled in the art which are also intended to be encompassed by the following claims.