The disclosure relates generally to electronics, and, more specifically, an embodiment of the disclosure relates to an encoder and decoder for balanced transmittal of data.
Electronics (e.g., computer systems) generally employ one or more electrical connections to facilitate the transmittal of data (e.g., communication) between system components, such as between a processor and memory. Electrical connections may also be used to facilitate the transmittal of data between on-die and/or off-die components, such as input and output (I/O) devices, peripherals, etc.
The present disclosure is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
In the following description, numerous specific details are set forth. However, it is understood that embodiments of the disclosure may be practiced without these specific details. In other instances, well-known circuits, structures and techniques have not been shown in detail in order not to obscure the understanding of this description.
References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Electronics (e.g., computer systems) generally employ one or more electrical connections (e.g., an interconnect or bus) to facilitate the transmittal of data (e.g., communication) between components, such as, but not limited to, between a processor and (e.g., random-access) memory, a first processor and a second processor, a first semiconductor chip and a second semiconductor chip (e.g., chip-to-chip), a processor (e.g., a central processing unit (CPU)) and an application-specific integrated circuit (ASIC), a processor (e.g., a central processing unit (CPU)) and a field-programmable gate array (FPGA), a processor and a peripheral, etc. Electrical connections may also be used to facilitate the transmittal of data between on-die and/or off-die components, such as input and output (I/O) devices, peripherals, etc. Certain electrical connections include parallel conductors (e.g., parallel wires, trenches, vias, or other electrically conductive paths). One embodiment of an electrical connection is a multiple conductor parallel bus, for example, where the conductors allow parallel (e.g., concurrent) transmittal of data thereon. The term electrical connection (e.g., interconnect or bus) may generally refer to one or more separate physical connections, communication lines and/or interfaces, shared connections, and/or point-to-point connections, which may be connected by appropriate bridges, adapters, and/or controllers.
However, in certain embodiments a conductor of a bundle of conductors of an electrical connection operating in parallel may experience interference, e.g., noise, caused by one or more of the other conductors. Interference may be electromagnetic interference, for example, crosstalk. Crosstalk may generally refer to the inductive coupling between two or more adjacent conductors (e.g., lines, lanes, or channels), for example, where a data signal from one or more conductors interferes with the data signal on a nearby conductor, for example, that changes the signal (e.g., voltage) on the conductor sufficiently to cause an error. Interference may be from a current fluctuation in power delivery, for example, the change in current (i) over a change in time (t), which may be referred to as (di/dt) or simultaneous switching noise. In certain embodiments, current fluctuations associated with rapid changes in power (e.g., current) levels may cause an error (e.g., an incorrect bit value). In one embodiment, the encoder, transmitter(s), receiver(s), and/or decoder are powered in the same power domain (e.g., the same local area power grid).
Certain embodiments may utilize differential signaling. Differential signaling may include having two conductors (e.g., a differential pair) for each signal to be transmitted, for example, such that for each signal the transmitting component sends on a first conductor, a compliment of the signal is sent on a second conductor (e.g., such that the two components are 180 degrees out of phase with each other), e.g., having a coding efficiency of 0.5 bits per conductor (1 bit/2 conductors). Doubling the conductors used (e.g., pin count) may cause increased die and/or system size and larger routing real estate on a die and/or system.
In contrast with differential signaling, single ended signaling transmits data over a single conductor. For example, with a first level signal (e.g., voltage or current) representing one of a logic (binary) value of zero and one and a second, lower level signal representing the other of the zero and the one. In one embodiment, only two levels of signals are utilized on each conductor to represent data, which may be generally referred to as two-level signaling. Each component of a signal may be transitioned between two particular voltages (e.g., from a power supply or amplifier) that represent logical (e.g., digital) values of zero and one. In one embodiment, each (e.g., first and second level) signal to be transmitted has its own conductor. Although not depicted, a data buffer or buffers may be utilized herein.
Certain embodiments disclosed herein include hardware apparatuses (e.g., a hardware encoder and/or a hardware decoder) and methods to encode (e.g., convert) input data (e.g., with an encoder) into at least one data group with each data group having an equal number of a first level signal and a second, lower level signal to transmit the at least one data group (e.g., over single conductors in parallel), and/or decode the at least one data group into output data (e.g., with a decoder). For example, each group has an even number of signals therein. A set of groups may transmit the entire data input. Certain embodiments herein provide a balanced data coding scheme (e.g., for parallel conductors, including, but not limited to a bus), for example, to maximize the signaling bandwidth per conductor.
Encoder 104 may take the data input at 102 (e.g., which in one embodiment may be a single or multiple bits or bytes of data) and covert the data input at 102 into at least one data group with each data group having an equal number of a first level signal and a second, lower level signal, e.g., with examples discussed below in reference to
The data group(s) from the encoder 104 may be output to a decoder 112, for example, over single conductors with transmission in parallel, e.g., as single ended signaling. As depicted in
The receiver 110 may output the received signals of the data group(s) to the decoder, e.g., to convert the data group(s) back into the form of the data input at 102. In one embodiment, the transmitter and/or receiver may include a ground connection (not depicted), for example, where binary digits are represented as two different voltage (or current) levels on a single wire and the transmitter and/or receiver may include a built-in or external reference voltage (or current) to compare the received signal against to determine the binary value. In one embodiment, if there are N signals to transmit, a system may include N+1 conductors, e.g., with one conductor for each signal and the plus one being the common ground. Encoding and/or decoding according to this disclosure may be achieved with hardware, software, and/or firmware.
In one embodiment, an encoder is a hardware component (e.g., a finite state machine, a linear feedback shift register, or a mapping table) that includes a plurality of (e.g., digital) inputs for receiving (e.g., digital) data from an electronic component. The output of an encoder may be connected (e.g., electrically coupled) to a plurality of transmitters, e.g., each of which receives a signal from the encoder and transmits a corresponding voltage (or current) signal on its respective conductor (e.g., signal line). The encoder may encode the input data for balanced transmittal over the conductors (e.g., bus). The conductors may include receivers coupled to each of the respective conductors. Each receiver may receive the (e.g., analog) signal transmitted by a respective transmitter and may provide an input signal to a decoder. A decoder may decode the data transmitted over the conductors (e.g., bus) and transmit (e.g., digital) output data to a receiving electronic component. In one embodiment, each decoder of a plurality of decoders used is paired with a respective encoder. In one embodiment, a decoder is a hardware component (e.g., a finite state machine, a linear feedback shift register, or a mapping table) that includes a plurality of (e.g., digital) outputs for sending (e.g., digital) data to an electronic component.
In one embodiment, a decoder and/or encoder may switch between a first mode to encode input data and/or decode output data according to this disclosure and a second mode, for example, without encoding input data and/or decoding output data according to this disclosure (e.g., data may pass through an encoder without being encoded and/or pass through a decoder without being decoded in the second mode).
Turning now to
conductor efficiency. This data is also shown in Table 1 below.
conductor efficiency. This data is also shown in Table 1 below.
conductor efficiency. This data is also shown in Table 1 below.
conductor efficiency. This data is also shown in Table 1 below.
In one embodiment, conductor efficiency may be maximized. In one embodiment, each code word represents a (e.g., unique) combination of information, for example, such that more combinations of code words allow a higher bandwidth (e.g., either data signal group or command address signal group) for the conductors to transmit information. In one embodiment, each code word represents a (e.g., unique) request or command (e.g., a load or a store). In one embodiment of double data rate (DDR) synchronous dynamic random-access memory (SDRAM) architecture, a byte of data without the encoding disclosed herein may be transmitted by 8 data signal (DQ) conductors (e.g., wires), 2 data strobe signal (DQS) conductors, and 1 data masking signal (DM) conductor for 11 conductors (e.g., wires) in total. Certain embodiments herein may utilize 12 conductors (e.g., 1 added to the 11 conductors to form a byte of data without the balanced transmission encoding discussed herein). Other balanced encoding schemes may be utilized according to this disclosure, e.g., for a specific application.
The conductors are illustrated as extending longitudinally in the same plane in
Referring now to
System 600 may include one or more processors (or cores) 610, 615, which are coupled to an electrical connection unit (e.g., having parallel conductors). In
In certain embodiments, a balanced encoding scheme causes the net di/dt for a conductor group or a set of conductor groups to be at or about zero at any given time (e.g., to the first order), for example, to minimize any (power delivery) simultaneous switch noise (SSN). In certain embodiments, a balanced encoding scheme may reduce crosstalk noise, for example, where the encoded data patterns (e.g., code words) are a (e.g., small) subset of all possible data patterns without encoding. In certain embodiments, a balanced, 2-level signaling (e.g., in contrast to 4-level signaling) encoding scheme may allow usage of existing circuits and/or use less power and die area. In certain embodiments, a balanced, single ended encoding scheme may have a performance advantage over non-balanced, single ended signaling, e.g., with both partial discharge (PD) and crosstalk impacts considered. In certain embodiments, a balanced encoding scheme may be used on (e.g., high speed) memory I/O and other I/O interfaces for computing components. In one embodiment, a balanced, single ended encoding scheme may replace a differential interface.
In one embodiment, an apparatus includes an encoder to encode input data into at least one data group with each data group having an equal number of a first level signal and a second, lower level signal to transmit the at least one data group over single conductors in parallel, and a decoder to decode the at least one data group into output data. The first level signal may be a positive voltage and the second, lower level signal may be a negative voltage. The positive voltage and the negative voltage may be equal and opposite voltages. The first level signal may be a positive voltage and the second, lower level signal may be about zero volts. Each single conductor may include a (e.g., its own) transmitter on a first end and a receiver (e.g., its own) on a second, opposing end. For example, such that each conductor may be powered (e.g., to send a signal) separately from the other conductors. The at least one data group may be a plurality of data groups. The input data may be a byte. Each single conductor may be a conductor of a twelve conductor parallel bus.
In another embodiment, a method includes encoding input data with an encoder into at least one data group with each data group having an equal number of a first level signal and a second, lower level signal to transmit the at least one data group over single conductors in parallel, and decoding the at least one data group into output data with a decoder. The encoding may include providing the first level signal as a positive voltage and the second, lower level signal as a negative voltage. The positive voltage and the negative voltage may be equal and opposite voltages. The encoding may include providing the first level signal as a positive voltage and the second, lower level signal at about zero volts. Each single conductor may include a (e.g., its own) transmitter on a first end and a receiver (e.g., its own) on a second, opposing end. The at least one data group may be a plurality of data groups. The input data may be a byte. Each single conductor may be a conductor of a twelve conductor parallel bus.
In yet another embodiment, a system includes a processor comprising an encoder to encode input data into at least one data group with each data group having an equal number of a first level signal and a second, lower level signal to transmit the at least one data group over single conductors in parallel, and a hardware component comprising a decoder to decode the at least one data group into output data. The hardware component may be memory. The hardware component may be an application-specific integrated circuit. The first level signal may be a positive voltage and the second, lower level signal may be a negative voltage. The positive voltage and the negative voltage may be equal and opposite voltages. The first level signal may be a positive voltage and the second, lower level signal may be about zero volts. Each single conductor may include a (e.g., its own) transmitter on a first end and a receiver (e.g., its own) on a second, opposing end. The at least one data group may be a plurality of data groups. The input data may be a byte. Each single conductor may be a conductor of a twelve conductor parallel bus.
In another embodiment, an apparatus includes means to encode input data into at least one data group with each data group having an equal number of a first level signal and a second, lower level signal to transmit the at least one data group over single conductors in parallel, and means to decode the at least one data group into output data.
In yet another embodiment, an apparatus comprises a data storage device that stores code that when executed by a hardware processor causes the hardware processor to perform any method disclosed herein. An apparatus may be as described in the detailed description. A method may be as described in the detailed description.
Embodiments (e.g., of the mechanisms) disclosed herein may be implemented in hardware, software, firmware, or a combination of such implementation approaches. Embodiments of the disclosure may be implemented as computer programs or program code executing on programmable systems comprising at least one processor, a storage system (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device.
Program code may be executed to input instructions to perform the functions described herein and generate output information. The output information may be applied to one or more output devices, in known fashion. For purposes of this application, a processing system includes any system that has a processor, such as, for example; a digital signal processor (DSP), a microcontroller, an application specific integrated circuit (ASIC), or a microprocessor.
The program code may be implemented in a high level procedural or object oriented programming language to communicate with a processing system. The program code may also be implemented in assembly or machine language, if desired. The mechanisms described herein are not limited in scope to any particular programming language. The language may be a compiled or interpreted language.
One or more aspects of at least one embodiment may be implemented by representative instructions stored on a non-transitory, machine-readable medium which represents various logic within the processor, which when read by a machine causes the machine to fabricate logic to perform the techniques described herein. Such representations, which may be generally referred to as “IP cores” may be stored on a tangible, machine readable medium and supplied to various customers or manufacturing facilities to load into the fabrication machines that make the logic or processor.
Such machine-readable storage media may include, without limitation, non-transitory, tangible arrangements of articles manufactured or formed by a machine or device, including storage media such as hard disks, any other type of disk including floppy disks, optical disks, compact disk read-only memories (CD-ROMs), compact disk rewritable's (CD-RWs), and magneto-optical disks, semiconductor devices such as read-only memories (ROMs), random access memories (RAMs) such as dynamic random access memories (DRAMs), static random access memories (SRAMs), erasable programmable read-only memories (EPROMs), flash memories, electrically erasable programmable read-only memories (EEPROMs), phase change memory (PCM), magnetic or optical cards, or any other type of media suitable for storing electronic instructions.
Accordingly, embodiments of the disclosure also include non-transitory, tangible machine-readable media containing instructions or containing design data, such as Hardware Description Language (HDL), which defines structures, circuits, apparatuses, processors and/or system features described herein. Such embodiments may also be referred to as program products.