This disclosure relates to techniques for manipulating data formatting and, more specifically, for manipulating the format of data while performing parallel-serial conversions (e.g., while performing parallel-to-serial and/or serial-to-parallel data conversions).
The term “data” typically refers to a collection of data values, such as bits, bytes, and/or the like. A collection of data values may be referred to as a “data unit.” A computing system may be configured to format and/or interpret data units according to a particular format. A computing system may be configured to arrange data units according to a particular “endianness” and/or bit-numbering. As used herein, the “endianness” or “bit-numbering” of a data unit refers to the order in which the bytes and/or bits comprising a data unit are interpreted, stored, read, and/or communicated by a computing system. A first computing system may be configured to write data units to a memory according to a first endian format. The memory may be communicatively coupled to a second, different computing system, which is configured to interpret data according to a second, different endian format. The second computing system may read data units written by the first computing system from the memory. The second computing system may misinterpret the data units due to, inter alia, the different endian format used by the first and second computing systems.
Embodiments of an adaptive parallel-serial converter are disclosed. The disclosed adaptive parallel-serial converter may be configured to modify a data format of parallel data as such data is being serialized. Alternatively, or in addition, the disclosed adaptive parallel-serial converter may be further configured to modify a data format of serial data as such data is being arranged in parallel and/or written to memory. Modifying the data format of a data unit may comprise changing the endianness of the data unit from a first endianness to a second, different endianness. The endianness conversion may be performed while the data is being serialized and/or parallelized, which may obviate the need for additional processing steps and/or circuitry (e.g., dedicated endianness conversion operations).
Disclosed herein are embodiments of an apparatus for modifying a data format (e.g., endianness) of a data unit while serializing the data unit. Embodiments of disclosed apparatus may comprise a buffer configured to receive parallel data comprising a data unit, the data unit having a parallel arrangement that corresponds to a first data format for the data unit, and a serialization circuit configured to modify a format of the data unit concurrent with serializing the parallel data. The serialization circuit may be configured to output a data sequence comprising data of the data unit in a sequential order. Modifying the format of the data unit concurrent with serializing the parallel data may comprise arranging the sequential order of the data such that the sequential order of the data in the data sequence corresponds to a second data format for the data unit, different from the first data format. The first data format may correspond to a first endianness, and the second data format may correspond to a second endianness. The data unit may be stored within one or more memory cells of a non-volatile memory structure, and the serialization circuit may be embodied on the non-volatile memory structure.
The serialization circuit may comprise a series of shift buffers configured to circularly shift data of the data unit in a selected shift direction based on a shift control signal. The selected direction may comprise one of a forward direction and a reverse direction, wherein, to circularly shift data in the forward direction, a first shift buffer of the series is configured to shift data to a last shift buffer of the series, and wherein, to circularly shift data in the reverse direction, the last shift buffer is configured to shift data to the first shift buffer. The serialization circuit may further comprise selection logic communicatively coupled to the shift buffers in the series to select one of the shift buffers to output the data sequence based on an output select signal. In some embodiments, the serialization circuit further includes format conversion logic configured to determine the shift control signal and the output select signal in response to comparing the first endianness to the second endianness. The format conversion logic may comprise a plurality of data format conversions, each data format conversion configured to modify the endianness of parallel data from an input endianness to a requested endianness concurrently with serializing the parallel data. The format conversion logic may be configured to identify a data format conversion to modify the endianness of parallel data from the first endianness to the second endianness, and to determine the shift control signal and the output select signal based on the identified data format conversion.
The data unit may comprise a plurality of data elements. A first one of the data elements may be a most significant data element. The most significant data element may be output in a first sequential order in the data sequence in accordance with the first data format. The serialization circuit may be configured to output the first data element in a second sequential order in the data sequence while serializing the parallel data comprising the data unit, the second sequential order different from the first sequential order.
The disclosed apparatus may include a controller configured to receive a request to read the data unit, determine a requested data format for the data unit, and to instruct the serialization circuit to modify a format of the data unit in accordance with the requested data format. In some embodiments, the apparatus comprises memory logic configured to determine that the data unit is stored within the one or more physical storage locations of a memory according to the first data format based on one or more of: metadata pertaining to the data unit stored within the memory, a header of the data unit, configuration data, a register value, a data format table, and/or the like. The serialization circuit may be configured to transmit data of the data sequence on a data bus during each of a plurality of communication periods. The sequential order of the data in the data sequence may determine an order in which the data is transmitted on the data bus during the communication periods.
Disclosed herein are embodiments of methods for performing data format modifications while serializing (and/or parallelizing) data. Embodiments of the methods disclosed herein may comprise: receiving a plurality of data elements of a data unit, wherein parallel data positions of the data elements corresponds to a first endianness for the data unit, and performing a serialization operation configured to modify the endianness of the data while outputting the data elements of the data unit in a series. Performing the serialization operation may include: latching data of the data elements into respective flip flop circuits in a circular series of flip flop circuits, each flip flop circuit being communicatively coupled to output selection circuitry, configuring the circular series of flip flop circuits to shift the data of the data elements in a determined shift direction during the serialization operation, the determined shift direction comprising one of a forward shift direction and a reverse shift direction, configuring the output selection circuitry to a select a flip flop circuit of the circular series of flip flop circuits as an output flip flop for the serialization operation, the output flip flop circuit to output the data elements of the data unit in the series, shifting data latched in circular series of flip flop circuits in the determined shift direction during each of a plurality of cycles of a clock signal, and using the selection circuitry to output the data elements of the data unit from the output flip flop circuit such that each data element is output during a respective cycle of the clock signal, wherein an arrangement of the data elements in the series corresponds to a second endianness for the data unit, the second endianness different from the first endianness.
The shift direction for the serialization operation may be determined by, inter alia, comparing the first endianness to the second endianness. Configuring the circular series of flip flop circuits to shift the data of the data elements in the determined shift direction may comprise generating a shift control signal for the flip flop signals. The output flip flop circuit for the serialization operation may be selected based on the parallel data positions of the data elements of the data unit. The output selection circuitry may comprise multiplexer circuitry, and configuring the output selection circuitry may comprise generating a selection control signal for the multiplexer circuitry.
In some embodiments, the disclosed method includes selecting a data format conversion for the serialization operation from a plurality of data format conversions based on the first endianness and the second endianness, wherein the selected data format conversion specifies a shift direction and the output flip flop circuit for the serialization operation. The series of flip flop circuits may comprise a first flip flop and a last flip flop. Inputs of each of the flip flops may be selectively coupled to outputs of adjacent flip flops in the series such that an input of the first flip flop being selectively coupled to an output of the last flip flop, and an input of the last flip flop being selectively coupled to an output of the first flip flop.
Some embodiments of the method disclosed herein further comprises determining one or more of the first endianness of the data unit and the second endianness for the data unit, and accessing a format conversion library to determine the shift direction and the output flip flop circuit for the serialization operation based on a comparison of the first endianness to the second endianness. The format conversion library may comprise a plurality of data format conversions, each data format conversion configured to convert an input endianness to a requested endianness and comprising a respective shift direction and output location. The method may further include identifying a data format conversion in the library configured to convert the first endianness to the second endianness, such that the determined shift direction for the serialization operation corresponds to the shift direction of the identified data format conversion, and the selected output flip flop for the serialization operation corresponds to the output location of the identified data format conversion.
Disclosed herein are embodiments of circuits for modifying the endianness of data during serialization and/or parallelization operations. The disclosed circuit may include a plurality of data latches connected in sequence, wherein each data latch is configured to store a respective data bit of a data unit, the data unit having a parallel arrangement that corresponds to a first data format for the unit, selection circuitry configured to receive outputs of each of the data latches and to output data bits shifted through a selected one of the data latches in response to the clock signal to produce a sequence of data bits of the data unit, and format control logic configured to control the shift direction of the shift circuitry and the data latch selected by the selection circuitry such that a sequential order of the data bits of the data unit in the sequence correspond to a second data format, the second data format different from the first data format.
The data latches may comprise shift circuitry configured to shift the data bits stored therein to an adjacent data latch in the sequence in one of two or more shift directions responsive to a clock signal, the two or more shift directions comprising a forward shift direction and a reverse shift direction, wherein in the forward shift direction, a data bit stored in a first data latch of the sequence is shifted into a last data latch of the sequence, and wherein in the reverse shift direction a data bit stored in the last data latch is shifted into the first data latch. The sequential positions of the data bits of the data units in the sequence produced on the selected data latch may correspond to the second data format for the data unit. In some embodiments, the data latches comprise reversible latches, and the format control logic is configured to generate a reverse signal to control the shift direction of the reversible latches. The selection circuitry may comprise a multiplexer, and the format control logic may be configured to generate a select control signal for the multiplexer. The format conversion logic may be configured to determine the shift direction for the shift circuitry and the data latch selected by the selection circuitry to produce the sequence of data bits in response to comparing the first data format to the second data format.
Disclosed herein are embodiments of a system for modifying the format of a data while the data unit is serialized and/or parallelized. The system may comprise means for receiving parallel data, the parallel data comprising data elements of a data unit in a first data format, and means for changing the data format of the data unit from the first data format to a second data format while the parallel data is converted into a data sequence comprising the data elements of the data unit. The means for changing the data format may comprise means for circularly shifting the data elements of the data unit responsive to a clock signal, means for generating the data sequence to serialize the parallel data comprising the data unit by outputting a data element at a designated shift location during each of a plurality of cycles of the clock signal, and means for controlling the shift direction and the designated shift location such that a sequential arrangement of the data elements of the data unit in the data sequence generated to serialize the parallel data corresponds to the second data format, different from a sequential arrangement corresponding to the first data format. The data elements may be circularly shifted within a sequence of shift locations in one of two or more shift directions, including a forward direction in which a data element at a last shift location of the sequence is shifted towards first shift location of the sequence and a data element at the first shift location is shifted to the last shift location, and a reverse direction in which the data element at the first shift location is shifted towards the last shift location and the data element at the last shift location is shifted to the first shift location.
Embodiments of an adaptive parallel-serial converter are disclosed. The disclosed adaptive parallel-serial converter may be configured to modify a data format of parallel data as such data is being serialized. Alternatively, or in addition, the disclosed adaptive parallel-serial converter may be further configured to modify a data format of serial data as such data is being arranged in parallel and/or written to memory. Modifying the data format of a data unit may comprise changing the endianness of the data unit from a first endianness to a second, different endianness. The endianness conversion may be performed while the data is being serialized and/or parallelized, which may obviate the need for additional processing steps and/or circuitry (e.g., dedicated endianness conversion operations).
Referring to
A computing system may be configured to manage data units 112 in accordance with a particular data format 114. As used herein, a data format 114 refers to a manner in which the data elements 113 of a data unit 112 are represented, interpreted, and/or arranged by a computing system. The data format 114 of a data unit 112 may refer to one or more of: size (e.g., the number of bits comprising the data element 113), a size and/or configuration of the data elements 113 comprising the data unit 112 (e.g., eight-bit data elements 113, 16-bit data elements 113), an arrangement of the data elements 113 in memory, an ordering of the data elements 113, and so on. The data format 114 of a data unit 112 may define an “endianness” of the data unit 112. The “endianness” of a data unit 112 refers to an arrangement and/or configuration of the data elements 113 of a data unit 112. The endianness of a data unit 112 may determine the order in which data elements 113 of a data unit 112 are written to memory, the order in which data elements 113 are arranged for parallel communication, the sequential order of data elements 113 for serial communication, and so on. The data format 114 used by a computing system may correspond to an architecture and/or instruction set of one or more physical processor(s) of the computing system, an architecture and/or instruction set of one or more virtual processor(s) of the computing system, an architecture and/or instruction set of one or more devices of the computing system (e.g., graphical processing unit(s) of the computing system), an execution platform of the computing system, an application operating on the computing system, and/or the like. In some embodiments, the data format 114 of a computing system corresponds to a “native” data format of a processor of the computing system. A data format 114 may correspond to, inter alia, a particular endianness, which may include, but is not limited to: big endian, little endian, mixed endian, middle endian, PDP-endian, and or the like. A data format 114 may correspond to a byte-level endianness, a bit-level endianness, and/or the like. A data format 114 may further correspond to a particular atomic element size, such as big endian with an eight-bit atomic element size (e.g., eight-bit data elements 113), big endian with a 16-bit atomic element size (e.g., 16-bit data elements 113), little endian with an eight-bit atomic element size, little endian with a 16-bit atomic element size, middle endian with an eight-bit atomic element size, and so on.
As illustrated in
As disclosed above, the data unit 112 may be written to storage in accordance with a particular data format 114.
The data format 114B may correspond to big endian with 16-bit atomic elements (e.g., each storage address 123 corresponding to two eight-bit quantities, or two data elements 113 of the data unit). In the data format 114B, the MSDE 113 {0A} and the next most significant data element 113 {0B} are written to the first storage address 123, and the less significant data elements 113 {0C, 0D} are written to storage address 123+1.
The data format 114C may correspond to little endian with eight-bit atomic elements. In the data format 114C, the order of the data elements 113 may be reversed relative to the data format 114A, such that the LSDE 113 {0D} is written to the first storage address 123 followed by the other data elements 113 in increasing order of significance, with the MSDE 113 {0A} being written at the last storage address 123+3 for the data unit 112.
The data format 114D may correspond to little endian with 16-bit atomic elements. In the data format 114D, the less significant data elements 113 {0C, 0D} are written at the first storage address 123, and the more significant data elements 113 {0A, 0B} are written to storage address 123+1.
The data format 114E may correspond to middle endian with eight-bit atomic elements. In the data format 114E, the data element 113 {0B} is written to the first storage address 123, the MSDE 113 {0A} is written to storage address 123+1, the LSDE 113 {0D} is written to storage address 123+2, and the data element 113 {0C} is written at the last storage address 123+3 of the data unit 112.
Although
In the
As illustrated in
The interface 110 may be further configured to communicate data units 112 on a second data bus 109 (of a second interconnect 119), which may have a different width 109W from the width 107W of the first data bus 107. The second data bus 109 may not be configured to communicate data units 112 in parallel. By way of non-limiting example, the width 109W of the second data bus 109 may be less than a size of a data unit 112 (e.g., may not be sufficient for parallel communication of the data values of a data unit 112). The adaptive parallel-to-serial converter 150 may be configured to manage communication of data units 112 between the first interconnect 117 and the second interconnect 119. The adaptive parallel-to-serial converter 150 may be configured to: a) receive data units 112 in parallel via the first data bus 107; and b) serialize the data units 112 for communication via the second data bus 109. Serializing data units 112 may comprise arranging the data units 112 for communication via the second data bus 109, which may comprise arranging the data units 112 for communication in sequence, during a plurality of different communication periods. As disclosed in further detail herein, serializing a data unit 112 may comprise modifying the data format 114 of the data unit 112.
As disclosed above, the interface 110 may be configured to communicate data units 112 in parallel via the first interconnect 117. Data units 112 may be communicated as parallel data 232 on the first data bus 107. As used herein, parallel data 232 refers to a parallel arrangement and/or format of a data unit 112. A parallel arrangement of a data unit 112 may determine the manner in which the data unit 112 is arranged for parallel communication as parallel data 232 (e.g., may correspond to an arrangement of the data elements 113 of the data unit 112 at respective parallel data positions 233). As used herein, a parallel data position 233 of a data value and/or data element 113 refers to a relative position and/or order of the data value and/or data element 113 within parallel data 232 and/or on a data bus, such as the first data bus 107. By way of non-limiting example, the data unit 112 of
The adaptive parallel-serial converter 150 may be configured to communicate data units 112 received as parallel data 232 via the second data bus 109. As disclosed above, the data bus 109 may not be configured to communicate data units 112 in parallel. The width 109W of the second data bus 109 may be less than the width 107W of the first data bus 107 (and less than the size of a data unit 112). The second data bus 109 may be configured to communicate 109W data values during a plurality of sequential communication periods 245. The sequential communication periods 245 may correspond to a clock signal 109CK of the second data bus 109. The adaptive parallel-serial converter 150 may receive parallel data 232 comprising a data unit 112 via the first data bus 107, and in response, may generate a corresponding data sequence 242 to communicate the data unit 112 via the second data bus 109. The data sequence 242 may arrange data of the data unit 112 in a sequential order for communication during respective sequential communication periods 245 (as opposed to a single parallel communication period 235). As used herein, a data sequence 242 refers to sequential arrangement and/or format of the data of a data unit 112 (e.g., a sequential order of the data elements 113). A data sequence 242 may comprise a plurality of sequential data positions 243, each sequential data position 243 corresponding to one of a plurality of sequential communication periods 245. In reference to the non-limiting example above, a data unit 112 that comprises N data values may be communicated during the N/109W sequential communication periods 245. The sequential arrangement of a data unit 112 may refer to the sequential data positions 243 of the data values and/or data elements 113 of the data unit 112. The sequential arrangement of a data unit 112 may determine the order in which the data values and/or data elements 113 of the data unit 112 are communicated on the second data bus 109; and may correspond to the data format 114 for the data unit 112. In the
Although particular embodiments for communicating data units 112 in parallel (e.g., as parallel data 232) and/or in sequence (e.g., as a data sequence 242) are described herein, the disclosure is not limited in this regard and could be adapted for use with a first data bus 107 having any suitable width 107W, parallel data 232 of any suitable size and comprising any number of data values and/or data units 112, a second data bus 109 having any suitable width 109W, and/or data sequence(s) 242 configured to communicate data units 112 during any number of sequential communication periods 245.
As disclosed above, the interface 110 may be communicatively coupled to a memory 120 via, inter alia, the first interconnect 117. The memory 120 may comprise a plurality of data storage locations 122, each of which may be configured to store data, such as one or more data units 112. The storage locations 122 of the memory 120 may comprise any suitable means for writing and/or retrieving data including, but not limited to: volatile memory cells, non-volatile memory cells, Flash memory cells, a page of memory cells, a block of memory cells, an array of memory cells, a two-dimensional array of non-volatile memory cells, a three-dimensional array of memory cells, and/or the like.
The storage locations 122 of the memory 120 may be associated with respective addresses and/or address offsets, such as storage addresses 123 through 123+3. The interface 110 may be configured to communicate data units 112 to/from the memory 120 via the first interconnect 117. Data units 112 may be transferred to/from the memory 120 in parallel, as disclosed herein (e.g., as parallel data 232). The interface 110 may be configured to implement storage operations on the memory 120 in response to requests from one or more computing devices 103. The requests may include requests to store data units 112 to the memory 120, requests to read data units 112 from the memory 120, and so on. In some embodiments, the interface 110 may comprise a controller and/or control circuitry of the memory 120. In some embodiments, the memory 120 may be embodied within a memory structure, which may include, but is not limited to: a memory die, package, chip, substrate, semiconductor, and/or the like. The interface 110 may comprise memory circuitry and/or logic embodied on the memory structure with the memory 120. The memory 120 may be embodied within a memory region of the memory structure and the interface 110 may be embodied within a periphery region of the memory structure.
Computing devices 103 may access the memory 120 by use of the interface 110 (and/or second interconnect 119). The computing devices 103 may comprise one or more of: a server computing device, a personal computing device, a mobile computing device (e.g., a smartphone, a tablet, or the like), an embedded computing device, a virtualized computing device (e.g., a virtual machine operating within a virtualization environment of a host computing device), a virtualization host, a virtualization environment (e.g., a virtualization kernel, a hypervisor), and/or the like. The interface 110 may be communicatively coupled to one or more of the computing devices 103 through, inter alia, the second interconnect 119. The second interconnect 119 may, for example, be configured to communicatively and/or electrically couple with I/O infrastructure 129. Alternatively, or in addition, the second interconnect 119 may be a component of the I/O infrastructure 129. The I/O infrastructure 129 may comprise I/O infrastructure of a particular computing device 103, such as an internal bus, an internal interconnect, an I/O bus, a data channel, and/or the like. The I/O infrastructure 129 may include, but is not limited to: an input/output (I/O) bus, an I/O controller, a local bus, a host bridge (Northbridge, Southbridge, or the like), a front-side bus, a peripheral component interconnect (PCI), a PCI express (PCI-e) bus, a Serial AT Attachment (serial ATA or SATA) bus, a parallel ATA (PATA) bus, a Small Computer System Interface (SCSI) bus, a Direct Memory Access (DMA) interface, an IEEE 1394 (FireWire) interface, a Fiber Channel interface, a Universal Serial Bus (USB) connection, a network interface, a network connection, a storage network interface, a Storage Area Network (SAN) interface, a Virtual Storage Area Network (VSAN) interface, a remote bus, a PCI-e bus, an Infiniband interface, a Fibre Channel Protocol (FCP) interface, a HyperSCSI interface, a remove DMA (RDMA) interface, and/or the like. In some embodiments, the computing devices 103 may be selectively coupled and/or decoupled to the second interconnect 119. Coupling the second interconnect 119 to a computing device 103 may comprise electrically and/or communicatively coupling the second interconnect 119 (and second data bus 109) to the computing device (e.g., to the I/O infrastructure 129 of the computing device 103). In some embodiments, the memory 120 and/or the interface 110 are embodied within a stand-alone computing device and may be communicatively coupled to a plurality of computing devices 103. In other embodiments, the memory 120 and/or the interface 110 may be embodied as a peripheral device configured to be deployed within particular one of the computing devices 103 (e.g., coupled to an internal I/O bus of a computing device 103 (e.g., in a PCI-e slot on a motherboard of the computing device 103).
In the
The computing device 103A may be configured to interpret, represent, communicate, and/or store data units 112 according to a particular data format 114. The particular data format 114 used by the computing device 103A may be referred to as a native data format 134 of the computing device 103A. The native data format 134 of the computing device 103A may correspond to an internal architecture of a processor of the computing device 103A (e.g., architecture of the CPU of the computing device 103A). The native data format 134 of the computing device 103A may determine the data format 114 used to communicate data units 112 to the interface 110. For example, the computing device 103A may communicate data units 112 to the interface 110 for storage in the memory 120 (e.g., in a write request). The data units 112 communicated by the computing device 103A may be in the native data format 134 of the computing device 103A. Accordingly, data units 112 written to the memory 120 by the computing device 103A may be written in the native data format 134 of the computing device 103A. In the
The data unit 212A may be written to address 223A through 223A+3 within the memory 120. The arrangement of the data unit 212A in the memory 120 may correspond to the data format 114A. Therefore, when the data unit 212A “0x0A0B0C0D” is written to the memory 120, the data elements 113A-D may be arranged within the memory 120 in ascending order with the MSDE 113A being stored at a first address of the data unit 212A (address 223A), the second data element 113B being stored at a next ascending address (address 223A+1), the third data element 113C being written to a next ascending address (address 223A+2), and the LSDE 113D being written to the next (and last) ascending address for the data unit 212A (address 223A+3). Alternatively, or in addition, the data unit 212A may be written to a storage location 122 of the memory 120 that is capable of holding all of the data elements 113A-D thereof. In such embodiments, the data elements 113A-D may be arranged within the storage location 122 in accordance with the data format 114A of the data unit 112 (e.g., in ascending order in which the MSDE 113A is stored at a first offset within the storage location 122, the next most significant data element 113B is stored at a next ascending offset, and so on, with the LSDE 113D being stored at the last offset for the data unit 212A). Although
The computing device 103A may read the data unit 212A from the memory 120, which may comprise issuing a request to read data from the address 223A. In response to the request, the interface 110 may read data from address 223A (e.g., read the data elements 113A-D stored at address 223A through 223A+3, which may result the following sequence of data elements 113 {0A, 0B, 0C, 0D} in accordance with the data format 114A in which the data unit 212A was stored within the memory 120.
The data read from address 223A through 223A+3 may be communicated from the memory 120 to the interface 110 via the first data bus 107. As disclosed above, the first data bus 107 may be configured to transmit the data unit 212A in parallel (e.g., as parallel data 232). The parallel arrangement of the data unit 212A may correspond to the data format 114A (the data format 114 in which the data unit 112 was stored in the memory 120). For example, the memory 120 may be configured to arrange data element 113 read from the “first” or “base” address of a read request at parallel data position 233A, arrange the data element 113 read from the next address at parallel data position 233B, and so on (with the data element 113 read from “last” address being arranged at parallel data position 233D). Accordingly, the parallel arrangement of a data unit 112 communicated via the first data bus 107 (as parallel data 232) may correspond to the data format 114A in which the data unit 212A is stored in the memory 120.
As disclosed above, reading the data unit 212A from address 223A of the memory 120 may comprise reading a sequence of data elements 113 from addresses 223A, 223A+1, 223A+2, and 223A+3, as follows: 113A{0A}, 113B{0B}, 113C{0C}, 113D{0D} (in ascending address order based on the data format 114A in which the data unit 212A is stored). As disclosed above, the memory 120 and/or the interface 110 may be configured to arrange the data elements 113 in accordance with the arrangement of such data elements 113 in the memory 120. As such, the parallel arrangement of data elements 113A-D may correspond to the data format 114A of the data unit 212A. As illustrated in
The interface 110 may receive the parallel data 232 comprising the data unit 212A via the first data bus 107. In response, the interface 110 may be configured to communicate the data unit 212A to the computing device 103A via the second interconnect 119, which may comprise serializing the data unit 212A. As used herein, “serializing” a data unit 112 refers to converting parallel data 232 comprising the data unit 112 into a data sequence 242. The data sequence 242 may be configured to communicate the data unit 112 during a plurality of sequential communication periods 245 (on the second data bus 109). The number of sequential communication periods 245 required to communicate the data unit 112 may correspond to, inter alia, the size of the data unit 112 (and/or data elements 113 thereof) and the width 109W of the second data bus 109. In the
As disclosed in further detail herein, the adaptive parallel-serial converter 150 may be configured to modify the data format 114A of the data unit 212A by, inter alia, modifying a serial arrangement of the data elements 113A-D in the data sequence 242 used to communicate the data unit 212A on the second data bus 109. In some embodiments, the adaptive parallel-to-serial converter 150 may be configured to serialize data units 112 in a manner that retains the data format 114 of the data units 112 such that the data format 114 of the data units 112 as communicated via the first data bus 107 (e.g., as parallel data) corresponds to the data format of the data units 112 as communicated via the second data bus 109 (e.g., as a data sequence 242). Maintaining the data format 114 of a data unit 112 during serialization of parallel data 232 comprising the data unit 112 may comprise generating a data sequence 242 comprising the data unit 112, wherein a sequential arrangement of the data unit 112 corresponds to the parallel arrangement of the data unit 112 in the parallel data 232. Maintaining the data format 114 of a data unit 112 may comprise arranging the data elements 113 in sequence, such that the sequential data position 243 of each data elements 113 correspond to the parallel data positions 233 of the data elements 113 in the parallel data 232.
In the
As illustrated above, the data format 114 of a data unit 112 may determine: a) an arrangement of the data unit 112 in memory 120 (e.g., the relative addresses and/or offsets at which each data element is stored in the memory 120); b) a parallel data arrangement of the data unit 112 on the first data bus 107 (e.g., the relative parallel data positions 233 of the data elements 113 of the data unit 112 in parallel data 232 comprising the data unit 112); and c) a sequential data arrangement of the data unit 112 on the second data bus 109 (e.g., the relative sequential data positions 243 for the data elements 113 of the data unit 112 in a data sequence 242 comprising the data unit 112). As such, data units 112 having different data formats 114 may have different arrangements in storage (e.g., in memory 120), different parallel arrangements, different sequential arrangements, and so on.
In the
The data unit 212B may be arranged in the memory 120 in accordance with the data format 114C (little endian with eight-bit atomic elements). As such, the data elements 113A-D of the data unit 212B may be arranged in the memory 120 in ascending order of significance and, as such, the arrangement of data unit 212B in the memory 120 may differ from the arrangement of the data unit 212A in the memory 120. The data unit 212B may be stored at address 223B. The data unit 212B may be arranged in the memory 120 in accordance with the data format 114C such that: the LSDE 113D is stored at the first or lowest address for the data unit 212B (address 223B), the next least significant data element 113C is stored at a next address for the data unit 212B (address 223B+1), a next least significant data element 113B is stored at a next address for the data unit (address 223B+2), and the MSDE 113A is stored at the last or highest address for the data unit 212B (address 223B+3).
The computing device 103A may read the data unit 212B from address 223B. When the data unit 212B is read from the memory 120, the data elements 113A-D thereof may have a different parallel arrangement from the parallel arrangement of the data elements 113A-D of data unit 212A. The parallel data arrangement in of data unit 212B may correspond to the data format 114C. As shown in
The data format 114C may also correspond to a particular sequential arrangement, which may differ from the sequential arrangement of data format 114A. As disclosed above, in some embodiments, the adaptive parallel-serial converter 150 is configured to maintain data formatting while serializing parallel data 232 into a data sequence 242. In such embodiments, the adaptive parallel-serial converter 150 may be configured to arrange data elements 113 at sequential data positions 243 that correspond to their parallel data positions 233 within the parallel data 232 (and/or on the first data bus 107). In the
The data format 114C may be incompatible with the computing device 103A. Accordingly, if the computing device 103A were to receive the data sequence 242 comprising the data unit 212B arranged according to the data format 114C, the computing device 103A may be unable to correctly interpret the data unit 212B. As depicted in
In some embodiments, the adaptive parallel-serial converter 150 may be configured to selectively modify the data format 114 of data units 112 while performing parallel-to-serial conversion operations and/or serial-to-parallel conversion operations on such data units 112. The adaptive parallel-serial converter 150 may be configured to, inter alia, modify the data format 114 of a data unit 112 while generating a data sequence 242 comprising the data unit 112.
Referring to
The adaptive parallel-serial converter 150 may be configured to serialize the parallel data comprising the data unit 212B. The adaptive parallel-serial converter 150 may be further configured to selectively modify the format of data units 112 as such data units are serialized. The adaptive parallel-serial converter 150 may determine whether to modify the data format 114 of a data unit 112 by use of format conversion logic 152. The format conversion logic 152 may be configured to determine whether to reformat a data unit 112 by, inter alia, comparing an original or “input format” 414 of the data unit 112 to a requested format 514 for the data unit 112. The input format 414 may correspond to the data format 114 of the data unit 112 as stored in the memory 120 (e.g., the arrangement of the data unit 112 in the memory 120). The input format 414 of a data unit 112 read from the memory 120 may be referred to as the “storage format” or “stored format” of the data unit 112. The input format 414 may correspond to the native data format 134 of the computing device 103 that caused the data unit 112 to be written to the memory 120). The requested format 514 may specify a data format 114 in which the data unit 112 is to be communicated via the second data bus 109. The requested format 514 may correspond to the native data format 134 of the computing device 103 that issued the request to read the data unit 112. The format conversion logic 152 may determine whether to modify the data format 114 of a data unit 112 during serialization by comparing the input format 414 of the data unit 112 to the requested format 514 for the data unit 112. The format conversion logic 152 may be further configured to select a data format modification 155 for the conversion operation. The format modification scheme 155 configure the adaptive parallel-serial converter 150 to modify the data unit 112 from the input format 414 to the requested format 514 while the data unit 112 is serialized. The data format modification 155 may be configured to selectively reorder and/or rearrange data elements 113 of the data unit 112 while a data sequence 242 comprising the data elements 113 is generated by the adaptive parallel-serial converter 150. Implementing modifications to the data format 114 of a data unit 112 during serialization may obviate the need for separate data format modification circuitry, which may reduce the size, area, and/or power requirements of the interface 110.
In the
As disclosed in further detail herein, based on the output(s) of the format conversion logic 152, the adaptive parallel-serial converter 150 may modify the data format 114 of the data unit 212B while the data unit 212B is being serialized for transmission to the computing device 103A via the second data bus 109. Modifying the data format 114 of the data unit 212B may comprise modifying the sequential arrangement of the data elements 113A-D comprising the data unit 212B in the data sequence 242, such that the data elements 113A-D are arranged in sequential data positions 243 that correspond to the requested format 514 (data format 114A) rather than the original input format 414 of the data unit 212B (data format 114C). As illustrated in
As also illustrated in
The data unit 312 may be stored within the memory 120 at address α. As disclosed above, the address α may correspond to any suitable addressing scheme and may include, but is not limited to: a physical address, a physical address offset, a page address, a block address, a logical address, a logical block address, a logical page address, a logical address offset, and/or the like. The N data elements 113 of the data unit 312 may be arranged for storage in accordance with the storage format of the data unit 312, which, inter alia, may determine an arrangement of the N data elements 113 at respective addresses and/or offsets relative to address α.
The adaptive parallel-serial converter 150 may be configured to selectively modify the data format 114 of the data unit 312 in response to a request to read the data unit 312 from the memory 120. The N data elements 113 of the data unit 312 may be read from the memory 120 in accordance with their arrangement therein (e.g., in accordance with the storage format of the data unit 312). The N data elements 113 of the data unit 312 may be read from the memory in address order: from the lowest or “base” address of the data unit 312 (address α) to the highest address of the data unit 312 (α+(N−1)). The N data elements 113 may be arranged for parallel communication on the first data bus 107 (as parallel data 232). As disclosed above, the parallel arrangement of the N data elements 113 may correspond to the arrangement of the N data elements 113 in the memory 120. As illustrated in
By way of non-limiting example,
The adaptive parallel-serial converter 150 may be configured to serialize the data unit 312 for communication via the second data bus 109. Serializing the data unit 312 may comprise producing a data sequence 242 comprising the data unit 312. The data sequence 242 may comprise a series or sequence of the data elements 113, each data element 113 being arranged at a respective sequential data position 243. The sequential data positions 243 may correspond to respective sequential communication periods 245 (e.g., cycles of the clock signal 109CK of the second data bus 109). The sequential data positions 243 of the N data elements 113 may determine the order in which the N data elements 113 are communicated on the second data bus 109 (e.g., determine which sequential communication period 245 each data element 113 is to be communicated via the second data bus 109). Accordingly, serializing the data unit 312 may comprise outputting each of the N data elements 113 of the data unit 312 in series, the N data elements 113 being output at one of N different sequential data positions 243A-N. The sequential arrangement of the N data elements 113 may determine, inter alia, the data format 114 for the data unit 312 communicated via the data sequence 242.
As illustrated in
The adaptive parallel-serial converter 150 may be configured to modify the data format 114 of the data unit 312 from the storage format to a requested format 514, concurrently while the data unit 312 is serialized (e.g., while producing a data sequence 242 comprising the data unit 312). The data format 114 of the data unit 312 may be modified by, inter alia, changing the sequential arrangement of the N data elements 113 in the data sequence 242 used to communicate the data element 312 via the second data bus 109. Modifying the data format 114 of the data unit 312 may, therefore, comprise outputting a sequence of data elements 113 of the data unit 312, such that the sequential arrangement of the data elements 113 in the sequence corresponds to a data format different from the original, storage format of the data unit 312. The data format 114 of the data unit 312 may be modified by arranging the N data elements 113 at sequential data positions 243 that differ from the sequential data positions 243 corresponding to the parallel arrangement of the N data elements 113 on the first data bus 107 (e.g., differ from the sequential arrangement corresponding to the arrangement of the N data elements 113 in the memory 120, and/or parallel data 232). Modifying the data format 114 of the data unit 312 may comprise arranging the N data elements 113 in a data sequence 242, such that the N data elements 113 have a sequential arrangement that corresponds to the requested data format 515 for the data unit 312, as disclosed above.
The format conversion logic 152 of the adaptive parallel-serial converter 150 may be configured to determine whether to reformat the data unit 312 by, inter alia, a) determining the input format 414 (e.g., the storage format of the data unit 312 in the memory 120), b) determining the requested format 514 (e.g., the data format 114 for the data unit 312 as communicated in a data sequence 242 via the second data bus 109), and c) comparing the input format 414 to the requested format 514. The conversion logic 152 may be further configured to select a data format modification 155. The data format modification 155 may be configured to convert parallel data 232 in which the data unit 312 is arranged in accordance with the determined input format 414 to a data sequence 242 in which the data unit 312 is arranged in accordance with the requested format 514. In the
The serialization circuitry 450 may be configured to latch the parallel data 232 comprising the data unit 412 and to produce a corresponding data sequence 242. The data sequence 242 may comprise a sequence of the data values and/or data elements 113 of the data unit 242, each data value and/or data element 113 being arranged at a respective sequential data position 243. As disclosed herein, the sequential arrangement of the data values and/or data elements 113 of the data unit 412 may determine, inter alia, a data format 114 for the data unit 412 in the data sequence 242. The serialization circuitry 450 may be configured to generate a data sequence 242 in accordance with the data format modification 155 selected by the format conversion logic 152.
In the
In the
The buffer 452 may further comprise shift logic 472, which may be configured to selectively shift data within the buffer 452 (e.g., shift data between storage modules, such as the shift buffers 462A-D). The shift logic 472 may be configured to shift data in a circular, reversible shift pattern in one of a plurality of shift directions (e.g., forward direction 473A and reverse direction 473B). As disclosed above, the buffer 452 may comprise a plurality of shift buffers 462. The shift buffers 462 may be coupled to one another in sequence. The shift buffers 462 may be coupled to enable the shift logic 472 to selectively shift data in one of a plurality of directions, including a “forward” direction 473A and “reverse” direction 473B. Each shift buffer 462A-D may have corresponding adjacent shift buffers 462 in each shift direction 473A and 473B, and may be configured to shift data to an adjacent shift buffer 462 in a selected shift direction 473A or 473B in response to a clock signal (e.g., 109CK, SCLK, or the like). The first shift buffer 462A in the series may be adjacent to shift buffer 462D in the forward direction 473A, and be adjacent to shift buffer 462B in the reverse direction 473B. The shift buffer 462B may be adjacent to shift buffer 462A in the forward direction 473A and be adjacent to shift buffer 462C in the reverse direction 473B), and so on, with the “last” shift buffer 462D in the series being adjacent to shift buffer 462C in the forward direction 473A and adjacent to shift buffer 462A in the reverse direction 473B. As illustrated in
The shift buffers 462A-D may comprise a circular series of shift buffers 462A-D (and/or circular series of flip-flop circuits). The shift logic 472 may be configured to selectively shift data between the shift buffers 462 in a selected direction 473A or 473B in response to a control signal, such as the clock signal 109CK of the second data bus 109. The contents of the shift buffers 462A-D may be shifted in a sequential, circular configuration (e.g., data may be shifted circularly in either direction 473A or 473B, as disclosed above). Shifting data in direction 473A may comprise: transferring the contents of shift buffer 462D to shift buffer 462C, transferring the contents of shift buffer 462C to shift buffer 462B, transferring the contents of shift buffer 462B to shift buffer 462A, and transferring the contents of shift buffer 462A to shift buffer 462D. The shift logic 472 may be further configured to cause data to shift in direction 473B. Shifting the data registers 462A-D in direction 473B may comprise: transferring the contents of shift buffer 462A to shift buffer 462B, transferring the contents of shift buffer 462B to shift buffer 462C, transferring the contents of shift buffer 462C to shift buffer 462D, and transferring the contents of shift buffer 462D to shift buffer 462A.
Each shift buffer 462A-D may hold a respective data element 113 and produce a corresponding output. The selection logic 474 may be configured to select one of the shift buffers 462A-D to produce the data sequence 242. Outputs from each of the shift buffers 462A-D may be communicatively coupled to the selection logic 474. The selection logic 474 may receive OUT-A from shift buffer 462A, may receive OUT-B from shift buffer 462B, may receive OUT-C from shift buffer 462C, and so on (receive OUT-D from shift buffer 462D). The selection logic 474 may select one of the outputs OUT-A through OUT-D to produce the data sequence 242. Selecting OUT-A may comprise the selection logic 474 selecting the contents of shift buffer 462A (and output on OUT-A) to produce the data sequence 242, such that the data sequence 242 comprises the sequence of data elements 113 latched and/or shifted into shift buffer 462A. Selecting OUT-B may comprise the selection logic 474 selecting the contents of shift buffer 462B (and output on OUT-B) to produce the data sequence 242, such that the data sequence 242 comprises the sequence of data elements 113 latched and/or shifted into shift buffer 462B, and so on. The selection logic 474 may, therefore, be configured to select the buffer or shift location for the serialization operation. The selection logic 474 may provide for designating a shift location to produce the data sequence 242.
As disclosed above, the data sequence 242 may comprise a sequence of data elements 113, each data element 113 having a respective sequential data position 243. The data sequence 242 may be produced by shifting data elements 113 of the data unit 412 through the buffer 452 (through the shift buffers 462A-D in a selected shift direction). The format conversion logic 152 may be configured to select a data format modification 155 to implement while the data unit 412 is being converted into a data sequence 242. The format conversion logic 152 may select the data format modification 155 in response to comparing an input format 414 of the data unit 412 to a requested format 514. The data format modification 155 may comprise a NOP data format modification 155 in which the data format 114 is not changed during serialization. Serializing the data unit 412 with a NOP data format modification 155 may comprise: a) latching the data elements 113 of the parallel data 232 within corresponding shift buffers 462 (e.g., latching the “first” data element 113 at 233A into shift buffer 462A, latching the data element 113 at parallel data position 233B into shift buffer 462B, and so on, with the “last” data element 113 at parallel data position 233D being latched into shift buffer 462D); b) shifting data elements 113 between the shift buffers 462A-D in the forward direction 473A, and c) using the contents and/or output of shift buffer 462A (OUT-A) to generate the data sequence 242.
As disclosed above, the data elements 113 of the data unit 412 may have a parallel arrangement that corresponds to their arrangement in the memory 120, the data element at the “first” or “initial” memory address of the data unit 412 (address α) may be at parallel data position 233A, the data element 113 at a next address and/or offset of the data unit 412 (address α+1) may be at parallel data position 233B, and so on, with the last data element 113 at a last address and/or offset of the data unit 412 (address α+3) being at parallel data position 233D. Serializing the data unit 412 with a NOP data format modification 155 may, therefore, comprise generating a sequence of data elements 113 in the following order {113[α], 113[α+1], 113[α+2], 113[α+3]}, which may correspond to the arrangement of the data elements 113 within the parallel data 232, on the parallel data bus 107, and/or within the memory 120.
As disclosed above, the adaptive parallel-serial converter 150 may be configured to selectively modify the data format 114 of data units 212 while parallel data 232 comprising such data units 112 are serialized into respective data sequences 242. The adaptive parallel-serial converter 150 may comprise format conversion logic 152 configured to, inter alia: a) determine whether to modify the data format 114 of a particular data unit 112, and b) select a data format modification 155, and c) configure the serialization circuitry 450 to implement the selected data format modification 155 as the data unit 112 is being serialized (by use of format control signals 157, as disclosed in further detail herein).
The adaptive parallel-serial converter 150 may be configured to modify the sequential arrangement of data elements 113 of a data unit 112 by, inter alia, selectively shifting the data elements 113 within the shift buffers 462A-D and/or selecting one of shift buffers 462A-D to produce a data sequence 242 comprising the data unit 412 by use of the shift logic 472 and/or selection logic 474. The format conversion logic 152 may be configured to determine a data format modification 155 to modify the data format 114 of the data unit 412 from the input format 414 to a requested format 514. Implementing the selected data format modification 155 may comprise configuring the shift logic 472 and/or selection logic 474 to generate a particular sequence of data elements 113 for the data sequence 242.
As disclosed above, serializing the data unit 412 may comprise latching data elements 113 of the data unit 412 within the buffer 452 in response to a signal, such as the clock signal 107CK of the first data bus 107. As disclosed above, each shift buffer 462A-D may be configured to latch a data element 113 at a corresponding parallel data position 233A-D. The data register 462A may latch the data element 113 at parallel data position 233A (data element 113[α]), the data register 462B may latch the data element 113 at parallel data position 233B (data element 113[α+1]), data register 462C may latch the data element 113 at parallel data position 233C (data element 113 [α+2]), and data register 462D may latch the data element 113 at parallel data position 233D (data element 113[α+3]).
If the data unit 412 comprises the hexadecimal value “0x0A0B0C0D” in data format 114A (big-endian with eight-bit atomic elements) the shift buffers 462A-D may initially comprise the following sequence of data values:
The adaptive parallel-serial converter 150 may be configured to generate a data sequence 242 having a serial arrangement corresponding to any of the data formats 114A-E by configuring the shift logic 472 and/or selection logic 474 accordingly. Sequential arrangements for each of the data formats 114A-E are listed below. By way of non-limiting example, the sequential arrangements below are illustrated in reference to the exemplary data unit with hexadecimal value “0x0A0B0C0D” comprising four eight-bit data elements 113:
A serial arrangement corresponding to any of the data formats 114A-E may during serialization by a) determining a shift direction for the serialization operation and b) selecting an output location for the serialization operation. The serialization operation may be implemented by latching data into the buffer 452 (e.g., latching data elements 113 into respective shift buffers 462A-D), circularly shifting data elements in the determined shift direction (e.g., direction 473A or 473B), and using the data element latched and/or shifted into the selected output location to produce the data sequence 242. The data format modification 155 determined by the format conversion logic 152 may be configured to convert the data unit 412 from the input format 414 to the requested format 514. The conversion may comprise modifying the sequential position of one or more of the data elements 113. For example, a first data element 113 of the data unit 112 may be at parallel data position 233A. In a NOP data format modification 155, the sequential order of the first data element 113 may output at a first sequential data position (e.g., sequential positon 243A). Modifying the data unit 112 to the requested format 514 may comprise outputting the first data element 113 in a different sequential order (e.g., at a different sequential position 243B-D from sequential position 243A). Changing the data unit 112 to the requested format 514 may comprise changing the sequential order of the data elements 113 produced while serializing the parallel data 232 from a first sequential order (corresponding to the input format 414) to a second, different sequential order that corresponds to the requested format 514.
The data format modification(s) 155 may be defined as and/or comprise a set of format control signals 157, each set of format control signals 157 being configured to cause the shift logic 472 and selection logic 474 to generate a determined serial arrangement of the data unit 412 based on the original, input format 414 of the data unit 412 (e.g., based on the parallel arrangement of the data unit 412 as received at the adaptive parallel-serial converter 150). The format control signals 157 may include, but are not limited to: a shift control signal 457 (e.g., REV signal) to configure the shift logic 472 to shift the contents of the buffers 452 in one of the forward direction 473A and the reverse direction 473B (responsive to the clock signal 109CK), and an output select signal 459 (SEL) to configure the selection logic 474 to select one of the shift buffers 462A-D to produce the sequence of data elements 113 responsive to each clock signal 109CK (e.g., select the data elements 113 on OUT-A through OUT-D to produce the data sequence 242). The output select signal 459 may designate one of the shift buffers 462A-D as the output shift buffer 462A-D for the parallel-to-serial conversion operation. The contents of the shift buffer 462A-D selected by the output select signal 459 (SEL) may comprise a respective one of the data elements 113 during each period of the clock signal 109CK (e.g., as data elements 113 are shifted between the shift buffers 462A-D in accordance with the shift control signal 457 and SCLK). Although particular data formats 114A-E (and corresponding serial arrangements) are described herein, the disclosure is not limited in this regard and, as indicated above, the adaptive parallel-serial converter 150 could be adapted to convert a data unit 112 to/from any suitable data format 114 (e.g., generate any serial and/or sequential arrangement of data elements 113). The following table shows data elements 113 latched in each shift buffer 462A-D as data is circularly shifted in the forward direction 473A and the reverse direction 473B, respectively:
Data format modifications 155 (and corresponding configuration signals 157) may modify the data format 114A to any other data format 114 while the data unit 112 is being serialized. As illustrated in table 3, the data sequence 242 produced on shift register 462A as data is shifted in direction 473A corresponds to data format 114A or 114B (e.g., 0A, 0B, 0C, 0D). Accordingly, shifting data in direction 473A, and using shift buffer 462A to generate the sequence data 242 may preserve the data format 114 of the data unit 112 (e.g., may comprise a NOP data format modification 155). The sequence of data elements 113 produced on shift buffer 462D as the data elements 113 are shifted in direction 473B corresponds to data format 114C (little endian with eight-bit atomic elements, 0D, 0C, 0B, 0A). Accordingly, a data format modification 155 to convert a data unit 112 from data format 114A to data format 114C may comprise shifting data in direction 473B and using shift buffer 462D to produce the data sequence 242. The sequence of data elements 113 stored within shift buffer 462C as the data elements 113 are shifted in direction 473A corresponds to data format 114D (little endian with 16-bit atomic elements, 0C, 0D, 0A, 0B). Accordingly, a data format modification 155 to convert a data unit 112 from data format 114A to data format 114D may comprise circularly shifting data in direction 473A, and selecting shift buffer 462C to generate the data sequence 242. Finally, the sequence of data elements 113 shifted through shift buffer 462B in direction 473B corresponds to data format 114E (middle endian with eight-bit atomic elements, 0B, 0A, 0D, 0C). Therefore, a data format conversion to convert a data unit 112 from data format 114A to data format 114E may comprise format control signals 157 to shift data in direction 473B and to select shift buffer 462B to produce the data sequence 242. Data format conversions from any-to-any data format 114 may be implemented by a) determining a shift direction for the serialization operation, and b) selecting a buffer location (e.g., OUT-A through OUT-B) to produce the data sequence 242 for the serialization operation (e.g., to produce the sequence of data elements 113 as the data elements 113 are circularly shifted in the determined shift direction). By way of non-limiting example, data format conversions 155 and corresponding format control signals 157 to convert a data unit 112 in data format 114A to a data sequence 242 in which the data unit 112 is formatted according to each data format 114A-E are provided below (in reference to the exemplary data unit 112 comprising four eight-bit data elements 113 and having the hexadecimal value of “0x0A0B0C0D”:
The data format conversions 155 (and the corresponding format control signals 157) listed above may be configured to produce a data sequence 242 comprising the data unit 412, such that the data elements 113 of the data unit 412 are sequentially arranged in accordance with any of the data formats 114A-E. The disclosure is not limited to the data formats 114A-E mentioned herein and could be adapted modify the data format 114 of a data unit 112 from any original or input format 414 to any requested format 514. As noted above, the format control signals 157, and corresponding sequential arrangement(s) of data elements 113, are relative to input data in data format 114A (big endian with eight-bit atomic elements). The disclosure is not limited in this regard, and similar sets of data format conversions 115 and corresponding format control signals 157 could be produced to convert data in from any other data format 114 (e.g., any of data formats 114B-E) to any other data format 114A-E. By way of further non-limiting example, a data unit 112 comprising the hexadecimal value “0x0A0B0C0D” may have a parallel arrangement that corresponds to data format 114E (middle endian with eight-bit atomic elements). The data elements 113 of the data unit 112 may be stored in the following arrangement in the memory 120: {0B, 0A, 0D, 0C} (at increasing memory addresses α through α+3) in accordance with data format 114E. The data unit 112 may be communicated in parallel at respective data positions 233A-D (e.g., 233A {0B}, 233B {0A}, 233C {0D}, 233D {C}). Table 5 illustrates the flow of data elements 113 in the forward direction 473A and the reverse direction 473B, respectively:
As illustrated above, the sequence of data elements 113 shifted through shift buffer 462B in direction 473B produces a data sequence 242 formatted according to data formats 114A and 114B (e.g., big endian with either eight or 16-bit atomic elements, 0A, 0B, 0C, 0D). Accordingly, a data format modification 155 to convert a data unit 112 in data format 114E to data format 114A or 114B may comprise format modification signals 157 to cause the serialization circuitry 450 to implement a circular shift pattern in direction 473B and to select the output of shift buffer 462B to produce the data sequence 242 (e.g., output a data sequence 242 comprising 0A, 0B, 0C, and 0D during respective sequential communication periods 245). As further illustrated in Table 5, the sequence of data elements 113 shifted through shift buffer 462C in direction 473A corresponds to data format 114C (e.g., little endian with eight-bit atomic elements, or 0D, 0C, 0B, 0A). Therefore, a data format modification 155 to convert a data unit 112 from data format 114E to data format 114C may comprise format modification signals 157 to cause the serialization circuitry 450 to implement a circular shift pattern in direction 473A and to select the output of shift buffer 462C to produce the data sequence 242. The sequence of data elements shifted through shift buffer 462D in direction 473B corresponds to data format 114D (little endian with 16-bit atomic elements, 0C, 0D, 0A, 0B). Therefore, a data format modification 155 to convert a data unit 112 from data format 114E to data format 114D may comprise format control signals 157 to cause the data elements 113 to be circularly shifted in direction 473B and to select shift buffer 462D to produce the data sequence 242. A NOP data format modification 155 may be unchanged from the examples above (e.g., may comprise shifting the data elements 113 in direction 473A and selecting shift buffer 462A to produce the data sequence 242). The data format conversions to convert a data unit 112 in data format 114E to any of data formats 114A-E are as follows:
The format conversion logic 152 may configure the serialization circuitry 450 to implement any one of a plurality of data format modifications 155, each of which may correspond to respective control signals 157. The format conversion logic 152 may, therefore, be configured to determine the format control signals 157 to change a data unit 112 having any input format 414 (114A-E) to any requested format 514 (114A-E). The format conversion logic 152 may, in some embodiments, comprise a look-up table, or the like, which may specify format control signals 157 to cause the configurable serialization circuitry 450 to shift the contents of the shift buffers 462A-D in one of the directions 473A and 473B, and to designate a shift location to produce the data sequence 242 in which data elements 113 of the data unit 112 have a sequential arrangement that corresponds to the requested format 514 (e.g., have one of the shift buffers 462A-D be designated to produce a data sequence 242). The format control signals 157 may, therefore, determine whether data is circularly shifted towards the designated shift location (e.g., the selected output location 462A-D) in either the forward direction 473A or the reverse direction 473B. The look-up table may be embodied in firmware, maintained in non-volatile memory, and/or the like. Alternatively, the format control signals 157 may be derived from the input format 414 and/or requested format 514 (e.g., by applying predetermined mappings and/or conversion operators thereto).
The serialization circuits 550 may be configured in accordance with the data units 112 being processed by the adaptive parallel-serial converter 150 and the data sequence 242 to be produced by the adaptive parallel-serial converter 150. In the
In the
Referring to
As illustrated above, the input format 414 of the data unit 512 determines, inter alia, the parallel arrangement of the data unit 512 and, more specifically, the respective parallel data positions 233A-D of each data element 113A-D of the data unit 512 and/or the parallel data channel 533A-D on which the data elements 113A-D are communicated via the first data bus 107. Therefore, in response to determining the input format 414 of the data unit 512, the format conversion logic 152 may be configured to determine a corresponding data format modification 155 to modify the data format 514 from the input format 414 to a requested format 514 while the data unit 512 is serialized (e.g., using the data format conversions 155 and corresponding format control signals 157, as disclosed herein). In particular, the format conversion logic 152 may be configured to generate a data sequence 242 in which the data elements 113 as communicated during each of four sequential communication periods 245, and have a sequential arrangement that corresponds to a different data format 114, such as a requested format 514, for the data unit 512. The format conversion logic 152 may modify the data format 114 of the data unit by a) selecting a data format modification 155 and b) generating corresponding format control signals 157, as disclosed herein (e.g., as illustrated in tables 4 and 6).
The adaptive parallel-serial converter 150 may be configured to receive the data unit 512 based on signal(s) on the first data bus 107, such as a clock signal 107CK of the first data bus 107. Alternatively, or in addition, the first data bus 107 may comprise other format control signals to notify the adaptive parallel-serial converter 152 that the data unit 512 is being transmitted thereon, such as a communication control signal, an input signal, an interrupt signal, an arbitration signal, and/or the like. In response to receiving the data unit 512 (as parallel data 232 on the first data bus 107), the adaptive parallel-serial converter 150 may be configured to a) latch data values communicated at each of the parallel data positions 233A-D of the first data bus 107 into a respective serialization circuit 550[0]-550[M], b) determine a data format modification 155 to implement during serialization of the data unit 512, and c) serialize the data unit 512 by producing a data sequence 242 comprising the data unit 512, in which data elements 113 of the data units 512 are in a sequential arrangement that corresponds to the requested format 514.
The format conversion logic 152 may be configured to determine the data format modification 155 to implement while serializing the data unit 512 based on information pertaining to the data unit 512, such as information pertaining to the input format 414 of the data unit 512 and the requested format 514. In some embodiments, the adaptive parallel-serial converter 150 receives information pertaining to the input format 414 and/or requested format 514 as via an input 451. Alternatively, or in addition, the adaptive parallel-serial converter 150 may be configured to determine the input format 414 of the data unit 512 from one or more of: information transmitted via the first data bus 107 (and/or the first interconnect 117), a header of the data unit 112, metadata associated with the data unit 112, metadata pertaining to the data unit 512, and/or the like. In some embodiments, the adaptive parallel-serial converter 150 (or memory 120) maintains data format metadata 522, which may indicate the data format 114 of data units 112 stored within the memory 120. The data format metadata 522 may be maintained in a table, index, registers, configuration data, firmware, and/or other suitable data structure (e.g., a data format table, data format index, data format register value, and/or the like). The data format metadata 522 may, in some embodiments, be stored within the memory 120, in firmware of the memory 120 and/or interface 110, in configuration data of the adaptive parallel-serial converter 150, in a storage register, and/or the like. The data format metadata 522 may indicate the data format 114 of particular data units 112. In some embodiments, the data format metadata 522 may identify the data format 114 of data units 112 stored within various regions of the memory 120 (e.g., indicate that data units 112 stored within address range 0-1023 are stored in data format 114A, and that data units 112 stored within address range 1024-4095 are stored in data format 114D). The data format metadata 522 may identify the data format 114 of data units 112 based on physical addresses of the data units 112 in the memory, logical or virtual identifiers associated with the data units 112, and/or the like. The format conversion logic 152 may, therefore, be configured to determine the input format 414 of a data unit 112 based on addressing information pertaining to the data unit 112. In some embodiments, the data format metadata 522 is maintained by a particular component of the memory 120 and/or interface 110, such as a memory controller, memory logic, or the like. The format conversion logic 152 may determine the input format 414 of a data unit 112 by, inter alia, issuing a query to the particular component (via an internal communication interconnect, such as the first interconnect 117).
In some embodiments, the adaptive parallel-serial converter 150 (or other component) is configured to update the data format metadata 522 as data units 112 are written to the memory 120. Commands to write data units 112 to the memory may indicate and/or be associated with an indication of the data format of the data units 112. For example, a write command may comprise a parameter, flag, or other information indicating the data format 114 of the data units 112 being written to the memory 120. Alternatively, or in addition, the data format 114 of data units 112 being written to the memory 120 may be provided in a setting, flag, configuration data, I/O arbitration information, and/or the like. In one non-limiting example, the interface 110 may determine the native data format 134 used by a computing device 103 when being coupled to the computing device 103. The interface 110 may determine the native data format 134 used by the computing device 103A when the computing device 103A is coupled to the memory 120. The interface 110 may then record that data written to the memory 120 by the computing device 103A is formatted in the native data format 134 thereof (e.g., data format 114A). In other embodiments, the computing device 103A may specify the native data format 134 used thereby by issuing one or more message(s) to the interface 110 (via the second interconnect 119), which may indicate the native data format 134 used by the computing device 103A. Although particular examples of techniques for determining and/or maintaining data format metadata 522 are described herein, the disclosure is not limited in this regard and could be configured to determine the input format 414 of a data unit 112 and/or maintain data format metadata 522 pertaining to data units 112 stored within the memory 120 using any suitable technique.
The format conversion logic 152 may be further configured to determine the requested format 514. In some embodiments, the requested format 514 may be provided to the adaptive parallel-serial converter 150 as an input 451. Alternatively, or in addition, the adaptive parallel-serial converter 150 (and/or interface 110) may determine the requested format 514 from a read request. The requested format 514 may, for example, by indicated in a parameter, flag, and/or setting associated with the read request. Alternatively, or in addition, the requested format 514 may be specified at the time the computing device 103 is coupled to the memory 120 (and/or the interface 110). The computing device 103A may, for example, provide configuration data to the memory 120 and/or the interface 110, which may indicate that the computing device 103A is configured to use a particular native data format 134 (e.g., data format 114A). The format conversion logic 152 may, therefore, determine that data units 112 communicated to the computing device 103A should be in data format 114A (e.g., the requested format 514 for such data units 112 is 114A). In some embodiments, the adaptive parallel-serial converter 150 may be configured to maintain client data format metadata 532, which may indicate data formatting preferences and/or requirements of computing devices 103 to which the memory 120 may be coupled. The client data format metadata 532 may be stored in non-volatile storage, such as the memory 120, firmware, configuration data, and/or the like. The client data format metadata 532 may indicate that the computing device 103A is configured to use data format 114A. The computing device 103A may be disconnected from the memory 120. When the computing device 103A is reconnected, the adaptive parallel-serial converter 150 may determine the requested format 514 for read requests associated with the computing device 103A based on client format metadata 532 associated with the computing device 103A. In addition, the adaptive parallel-serial converter 150 may determine the input format 414 for data units 112 written to the memory 120 by the computing device 103A (e.g., data format 114A).
The format conversion logic 152 may be configured to select a data format modification 155 to implement while serializing the data unit 512 by, inter alia, comparing the determined input format 414 of the data unit 112 to the requested format 514 for the data unit 112. As disclosed above, the data format modification 155 may be configured to adapt the sequential arrangement of data elements 113, such that the serialized data unit 112 conforms to the requested format 514. In some embodiments, the format conversion logic 152 selects a data format modification 155 from a library 555 comprising a plurality of data format conversions 155. Each data format conversion 115 in the library 555 may be configured to convert data arranged according to a particular data format 114 (e.g., input format 414) into a data sequence 242 in a different data format (e.g., requested format 514). Each data format modification 155 in the library 555 may further comprise a corresponding set of format control signals 157 to cause the respective serialization circuits 550[0] through 550[M] to perform the specified data modifications while the data unit 112 is serialized (as a data sequence 242). The library 555 may comprise one or more look-up table(s), such as the tables 4 and 6, disclosed above. Each look-up table may comprise a set of format control signals 157 configured to change the data format 114 of a data unit 112 from a first data format 114 to a second data format 114 while the data unit 112 is being serialized. Alternatively, or in addition, the library 555 may be embodied as a state machine and/or other logic circuitry, which may embody rules configured to generate format control signals 157 corresponding to each of a plurality of data format conversions 155 (e.g., produce respective set of format control signals 157 responsive to different combinations of input formats 414 and/or requested data formats 514). The library 555 may be embodied as one or more logic elements, circuits, configuration data, firmware, and/or the like. Portions of the library 555 may be embodied as computer readable instructions stored on a non-transitory storage medium, such as the memory 120, internal storage of the interface 110 and/or memory 120, and/or the like.
In some embodiments, the format conversion logic 152 may be configured to select a data format modification 155 based on the determined input format 414 of the data unit 112 and/or the requested format 514 for the data unit, which may be provided by inputs 451 to the format conversion logic 152 and/or determined thereby. Alternatively, in some embodiments, the format conversion logic 152 may be configured to implement specified data format conversion operation(s), independent of information pertaining to the input format 414 of the data unit 112 and/or requested format 514. Referring to
Referring back to
After selection of a data format modification 155 (and producing corresponding format control signals 157), the adaptive parallel-serial converter 150 may serialize the data unit 512, which may comprise generating a data sequence 242 in which the data elements 113 of the data unit 112 are arranged in accordance with the requested format 514 rather than the original, input format 414 of the data unit 112. Serializing the data unit 512 may comprise latching parallel data 232 comprising the data unit 512 into the respective serialization circuits 550[0] through 550[M] in response to a control signal (e.g., the clock signal 107CK), as disclosed herein. The serialization circuit 550[0] may be configured to latch data value (0) at each parallel data positions 233A-D (and/or parallel data channel 533A-D), as follows: the data value (0) at parallel data position 233A may be stored in register 562A, the data value (0) at parallel data position 233B may be stored in register 562B, and so on, with the data value (0) at parallel data position 233D being stored in register 562D. The serialization circuits 550[1] through 550[M] may latch data values (0) through (M) in a substantially similar manner.
The shift register circuitry 552 may further comprise shift circuitry 572, which may be configured to selectively shift the data values stored in the registers 562A-D in one of directions 473A and 473B. The registers 562A-D may comprise a circular series of flip flop circuits configured to shift data values in either the forward direction 473A or the reverse direction 473B. The data values may be shifted responsive to a signal, such as the clock signal 109CK of the second data bus 109 (and/or format control signal(s) 157, as disclosed herein). The data values may be shifted in a circular configuration in which data values are shifted between the first register 562A and the last register 562D in either direction 473A or 473B. The serialization circuit 550[0] may further comprise selection circuitry 574, which may be configured to select an output of one of the registers 562A-D to produce data value (0) of the data sequence 242 (e.g., data sequence 242[0]). The selection circuitry 574 may comprise a multiplexer, having inputs coupled to each of the registers 562A-D. The selection circuitry 574 may select one of the registers 562A-D to produce data value (0) of the data sequence 242 (e.g., data sequence 242[0]) based on format control signals generated by the format conversion logic 157). The serialization circuit 550[0] may, therefore, be configured to generate data value (0) of the data sequence 242 (e.g., data sequence 242[0]), which may comprise a sequence of data value (0) of each data element 113 of the data unit 512 being serialized, the data value (0) of the data elements 113 having a serial arrangement that corresponds to the requested format 514 (e.g., modifies the data format 114 of the data unit 112 from the input format 414 to the requested data forma 514).
Each of the other serialization circuits 550[1] through 550[M] may perform corresponding serialization operations (and data format modifications) on data values (1) through (M), respectively. Each serialization circuit 550[0] through 550[M] may receive the same set of format control signals 157 from the format conversion logic 152 and, as such, each serialization circuit 550[0] through 550[M] may output a respective data sequence 242[0] through 242[M], such that the data values of each data element 113 are arranged in sequence in accordance with the requested format 514. As illustrated in
The data sequence 242 may comprise a serial arrangement of the data unit 112 corresponding to the requested format 514, which may comprise modifying the sequential arrangement of such data elements 113 relative to the sequential arrangement corresponding to the original, input format 414 of the data unit 112. The serialization circuits 550[0] through 550[M] may be configured to implement data format modification 155 selected by the format conversion logic 157 (in accordance with the format control signals 157). As disclosed above, the format control signals 157 may be configured to cause the serialization circuits 550[0] through 550[M] to a) shift data values in one of directions 473A and 473B by use of shift circuitry 572, and/or b) select one of the registers 562A-D to produce the data sequence 242[0] through 242[M] by use of respective selection circuitry 574. The data sequence 242 may comprise a serial arrangement of data elements 113, each data element 113 having a respective sequential data position 243A-D. Each data element 113 may be output on the second data bus 109 during one of four sequential communication periods 245 (e.g., during four cycles of the clock signal 109CK of the second data bus 109). As disclosed above, the reversible, circular shift operation(s) implemented by the shift circuitry 572 and selection operation(s) implemented by the selection circuitry 574 (responsive to the format control signals 157) may cause the data elements 113A-D to be arranged in the data sequence 242 in accordance with the requested format 514.
The adaptive parallel-serial converter 150 may be configured to receive parallel data 232 comprising the data unit 612 at a parallel data interface 507. The parallel data interface 507 may be configured to route portions of the parallel data 232 to each of the serialization circuits 550[0] through 550[M], as disclosed herein. As illustrated in the
The adaptive parallel-serial converter 150 may be further configured to generate a data sequence 242 comprising the data unit 612 and to output the data sequence 242 on the second data bus 109 (via a serial data interface 609). The serial data interface 609 may be configured to communicatively couple the adaptive parallel-serial converter 150 to the second data interconnect 119 and/or second data bus 109. The serial data interface 609 may be configured to operate according to particular communication protocol(s) used on the second interconnect 119. The serial data interface 609 may be configured to communicate the data units 612 as data sequence(s) 242 on the second data bus 109. The serial data interface 609 may comprise one or more pads, buffers, amplifiers, drivers, sense circuits, and/or the like.
In the
The selection circuitry 574 may be configured to select an output of one of the shift registers 662A-D to produce the data value (0) for the data sequence 242[0], as disclosed above. The serial data interface 609 may be configured to output data values (0) through (M) produced by the serialization circuits 550[0] through 550[M] to form the data sequence 242, as disclosed above. The serial data interface 609 may be further configured to communicate the data sequence 242 on the second data bus 109, which may comprise driving data lines of the second data bus 109 during four periods of the clock signal 109CK, such that a different one of the data elements 113 of the data unit 612 is driven on the second data bus 109 during each of the four periods.
The serialization circuit 550[0] comprises shift circuitry 772 and selection circuitry 574 (other serialization circuits 550[1] through 550[7] are omitted to avoid obscuring the details of the illustrated embodiments). The shift circuitry 772 may comprise a plurality of SR flip flops 762, each SR flip flop 762 being configured to hold a respective data value (e.g., a bit). The SR flip flops 762 may be connected in a circular, reversible sequence 763, as disclosed herein. The input of each SR flip flop 762 may be selectively coupled to outputs of proximate SR flip flops 762 in the sequence 763. The SR flip flops 762 may be coupled to one another such that data can be selectively shifted in either a forward direction 473A or a reverse direction 473B. The shift direction may be controlled by a format control signal 157 generated by the format conversion logic 152 (shift control signal 457). In the
The adaptive parallel-serial converter 150 may be configured to receive parallel data 232 comprising the data unit 712 via the first data bus 107. Receiving the parallel data 232 may comprise latching data values of the parallel data 232 into each serialization circuit 550. The serialization circuits 550[0] may be configured to latch data value (0) of each data element 113 of the data unit 712 (e.g., data value (0) at each parallel data position 233A-233D). Data values may be latched into the SR flip flops 762A-D by, inter alia, selectively coupling set/reset inputs of the SR flip flops to data values of the parallel data 232 responsive to a clock signal (PCLK). The PCLK signal may comprise a clock signal and/or other control signal configured to manage communication of parallel data 232 on the first data bus 107. The PCLK signal may correspond to the clock signal 107CK of the first data bus 107. Other serialization circuits 550[1] through 550[7] may be configured to latch other data values (1) through (7), as disclosed herein.
Latching the parallel data 232 may further comprise selecting a data format modification 155 to implement during serialization of the parallel data 232. The format conversion logic 152 may be configured to select a data format modification 155 (and produce corresponding format control signals 157) in response to comparing the input format 414 of the data unit 712 to a requested format 514, as disclosed herein. The input format 414 and/or requested format 514 may be provided as an input 451. Alternatively, the format conversion logic 152 may be configured to determine the input format 414 of the data unit 712 and/or the requested data format 712, as disclosed herein.
The data format modification 155 may be configured to reformat the data unit 712 while the parallel data 232 comprising the data unit 712 is serialized (as a data sequence 242). As disclosed above, the data formation modification 155 may correspond to format control signals 157. In the
The serialization circuit 850[0] includes register circuitry 852, that comprises a series of reversible latches 862. The reversible latches 862 may be configured to latch parallel data 232 comprising the data unit 812 in response to a PCLK signal, as disclosed herein. In the
The reversible latches 862A-D may be configured to shift data in a selected shift direction (473A or 473B). Data may be shifted circularly within the series of reversible latches 862A-D: in the forward data shift direction 473A data may be shifted from reversible latch 862A to reversible latch 862D and, in the reverse data shift direction 473, data may be shifted from reversible latches 862D to 862A. The data shift direction 473A or 473B may be selected by the shift control signal 457 produced by the format conversion logic 157, as disclosed herein. As illustrated in
The format conversion logic 152 may be configured to determine a data format modification 155 to implement for the data unit 812, as disclosed herein (e.g., by comparing the input format 414 of the data unit 812 to the requested format 514). The format conversion logic 152 may determine the data format modification 155 in response to receiving the parallel data 232. Selecting the data format modification 155 may comprise generating corresponding control signals 157. The control signals 157 may be adapted to configure the reversible latches 862A-D of the register circuitry 852 to shift data in one of the forward direction 473A and the reverse direction 473B responsive to a shift trigger, clock, and/or signal (e.g., SCLK). The control signal 157 may be further adapted to configure the select one of the reversible latches 862A-D to produce the data sequence 242[0] during each SCLK cycle. The output produced on the selected reversible latch 862A-D may comprise data value (0) of each data element 113 of the data unit 812 in sequence (e.g., at respective sequential data positions 243). The sequential arrangement of data values may correspond to the requested format 514.
The IOR terminal of the reversible latch 962 may be coupled a node 971. The node 971 may be coupled to a voltage potential source (Vs) and a ground voltage potential (GND) through transistors 972 and 974, respectively. Transistor 972 may be controlled by the output of NAND logic 964 having inputs comprising the SET signal, PCLK signal, and REV signal (e.g., shift control signal 457) and the transistor 974 may be controlled by the output of NOR logic 966 having inputs comprising an inverse of the RST signal (/RST), an inverse of the PCLK signal (/PCLK), and an inverse of the REV signal (/REV). The IOR terminal may be coupled to first storage circuitry 992 through the transistors 981. The transistors 981 may comprise p-channel transistors. The transistors 981 may be controlled by the internal clock signal. The first storage circuitry 992 may comprise a plurality of tri-state buffers 968 and buffers 969. The tri-state buffers 968 may comprise strong tri-state buffers and the buffers 969 may comprise weak buffers. The first storage circuitry 992 may be coupled to second storage circuitry 994 through switch 983. The transistors 983 may be controlled by an opposite phase of the internal clock “clki” relative to the transistors 981 (may be on when the transistors 981 are off and vice versa). The transistors 983 may comprise p-channel transistors. The second storage circuitry 994 may comprise a plurality of tri-state buffers 968 and buffers 969, as illustrated. The IOL terminal of the reversible latch 962 may be coupled to the storage circuitry 994 at node 979. Node 979 may be coupled to Vs and GND through transistors 976 and 978, respectively. As illustrated, the transistor 976 may be controlled by the output of NAND logic 965 having inputs comprising the SET signal, PCLK signal, and an inverse of the REV signal (/REV). Transistor 978 may be controlled by an output of NOR logic 967 having inputs comprising an inverse of the RST signal (/RST), an inverse of the PCLK signal (/PCLK), and the REV signal. The reversible latch 962 may be configured to set a data value in the storage circuitry 992 and/or 994 responsive to SET and/or RST inputs (e.g., latch a data value of parallel data 232). The reversible latch 962 may be further configured to selectively shift data in the forward direction 473A or the reverse direction 473B in response to the SCLK signal (and the REV signal 157).
As depicted, the memory system 1021 includes a memory controller 1006 and a memory 120. The memory 120 may be embodied on a memory structure 1023, which may comprise one or more of a memory die, a memory chip, a memory package, a memory bay, a memory semiconductor, and/or the like. The memory structure 1023 may comprise a non-volatile memory structure comprising one or more non-volatile memory storage locations, non-volatile memory cells, and/or the like. Although a single memory structure 1023 is depicted, the memory system 1021 is not limited in this regard, and could be adapted to include any number of memory structures 1023 (e.g., four or eight memory chips). The memory controller 1006 may receive data and commands from the host 1003 and provide data from the memory 120 to the host 1003 via a host-device interconnect 1019 and/or data bus 1009. The host-device interconnect 1019 and/or bus 1009 may comprise any suitable interconnect and/or bus for communicating data, control, configuration signals, power, and/or the like between the memory system 1021 and the host 1003.
The memory controller 1006 may include one or more state machines, page registers, SRAM, and control circuitry for controlling the operation of the memory 120, and so on. The one or more state machines, page registers, SRAM, and control circuitry for controlling the operation of the memory chip may be referred to as managing or control circuits. The managing or control circuits may facilitate one or more memory array operations including forming, erasing, programming, or reading operations.
In some embodiments, the managing or control circuits (or a portion of the managing or control circuits) for facilitating one or more memory array operations may be integrated within the memory structure 1023. The memory controller 1006 and the memory structure 1023 may be arranged on a single integrated circuit. In other embodiments, the memory controller 1006 and the memory structure 1023 may be arranged on different integrated circuits. In some cases, the memory controller 1006 and the memory structure 1023 may be integrated on a system board, logic board, or a PCB.
The memory structure 1023 includes memory core control circuitry 1026 and a memory core 1024. The memory core control circuitry 1026 may include logic circuitry configured to control the selection of memory storage locations 112 (e.g., memory blocks, pages, and/or the like) within the memory core 1024 (through a memory interconnect 1028), controlling the generation of voltage references for biasing a particular memory array into a read or write state, or generating row and column addresses. The memory core 1024 may include one or more two-dimensional arrays of memory cells or one or more three-dimensional arrays of memory cells. In one embodiment, the memory core control circuits 1026 and the memory core 1024 are arranged on a single integrated circuit. In other embodiments, the memory core control circuitry 1026 (or a portion of the memory core control circuitry 1026) and memory core 1024 may be embodied within different integrated circuit structures. The memory cells may be formed into respective storage locations 122 which, as disclosed herein, may be configured to store data units 112 (e.g., store data elements 113 of data units 112 at respective addresses and/or address offsets within the memory 120). The storage location 122 may comprise one or more non-volatile memory cells.
A memory operation may be initiated when the host 1003 sends instructions to the memory controller 1006, such as a read request, a write request, or the like. The memory controller 1006 may implement memory operations by use of the memory core control circuits 1026, which may provide control signals to the memory core 1024 (via the memory interconnect 1028) in order to perform a read operation and/or a write operation. The memory core control circuits 1026 include any one of or a combination of control circuitry, state machine, decoders, sense amplifiers, read/write circuits, and/or controllers. The memory core control circuits 1026 may perform or facilitate one or more memory array operations including erasing, programming, or reading operations. In one example, the memory core control circuits 1026 comprises an on-chip memory controller for determining row and column address, word line and bit line addresses, memory array enable signals, and data latching signals.
The memory core control circuits 1026 may further comprise an adaptive parallel-serial converter 150, as disclosed herein. In response to a write (or program) request, the host 1003 may send the memory controller 1006 a write command that includes: an address and a data unit 112. The memory controller 1006 may implement the write command by use of the memory core control circuits 1026, which may write the data unit 112 to the specified address. Implementation of the write request may comprise receiving the data unit 112 via the second data bus 109 (as a data sequence 242). The parallel-serial converter 150 may be configured to receive the data sequence 242, and generate corresponding parallel data 232 for communication via the first data bus 107. Generating parallel data 232 may comprise arranging data elements 113 in the data sequence 242 at respective parallel data positions 233. As disclosed above, the parallel arrangement of the data elements 113 may correspond to a data format 114 for the data unit 112. The parallel data 232 may be written to one or more storage location(s) 122 within the memory core 1024 as disclosed herein.
The first data bus 107 may be wider than the second data bus 109. The difference in bus sizes between the first data bus 107 and the second data bus 109 may be due to, inter alia, a clock rate differential between the memory core 1024 and other portions of the memory system 1021 (e.g., the memory controller 1006, periphery region 1027, and/or the like), size considerations, power consumption considerations, thermal characteristics of the memory structure 1023, and/or the like. In some embodiments, the second data bus 109 may be narrower than the first data bus 107 due to the use of a higher clock rate by the memory controller 1006, periphery region 1027, host-device interface 1019, and/or host-device data bus 1009. Alternatively, or in addition, the second data bus 109 may be narrower than the first bus 107 in order to, inter alia, conform to a width of the host-device interface 1019 and/or bus 1009. In some embodiments, the second bus 109 is configured to minimize the area, power consumption, heat generation, and/or latency, required to route signals to/from the memory system 1021 while optimizing a throughput of the memory core 1024 (e.g., while fully utilizing the first bus 107).
As disclosed herein, performing data format conversions on parallel data 232 communicated via the first bus 107, as such parallel data 232 is being converted into respective data sequences 242 for communication via the second bus 109, may enable different hosts 1003 to access the memory 120 even if the hosts 1003 have different native data formats 134. The data format conversions implemented by the adaptive parallel-serial converter 150 may enable the memory system 1021 to appear to the host 1003 as if the memory 120 comprises data stored in the native data format 134 of the host 1003, and without requiring the host 1003 to perform data format conversions on data written to and/or retrieved from the memory system 1021. Implementing data format conversions within the memory system 1021 (e.g., within the periphery region of the memory structure 1023), may enable data format conversions to be implemented with minimal size, power, heat, and/or performance overhead.
In the
In some embodiments, the adaptive parallel-serial converter 150 may be configured to selectively modify the parallel arrangement of data units 112 as such data units 112 are being written to the memory 120 (e.g., as data unit 112 are received as data sequence(s) 242 via the second data bus 109). The adaptive parallel-serial converter 150 may determine whether to modify the data format 114 of a data unit 112 based on storage format metadata 1022. The storage format metadata 1022 may determine a data format 114 for use in storing data unit 112 to particular addresses within the memory 120. The storage format metadata 1022 may specify that data units 112 are to be stored in a different data format 114 from the native data format 134 of the host 1003. In the
The adaptive parallel-serial converter 150 may be configured to generate parallel data sequence 242 comprising the data unit 1012B. The adaptive parallel-serial converter 150 may be further configured to modify the data format of the data unit 1012B while generating the parallel data 232 (e.g., while parallelizing the data unit 1012B). The format conversion logic 152 may determine to modify the format of the data unit 1012B in response to determining that the data unit 1012B is formatted in data format 114C, and that the data format 114C is incompatible with the requested storage format 514 for address β (based on the storage format metadata 1022). The format conversion logic 152 may be further configured to select a data format modification 155 to modify the format of the data unit 1012B while the data unit 1012B is being converted from a data sequence 242 to parallel data 232. The data format modification 155 may correspond to the parallel-to-serial data format modifications disclosed herein. In the
The host 1003 may issue read requests to the memory controller 1006. The memory controller 1006 may implement a request to read a data unit 112 at a particular address by, inter alia, instructing the memory core control circuits 1026 to read the data unit 112 at the particular address. The adaptive parallel-serial converter 150 may receive the data unit 112 as parallel data 232 (via the first data bus 107), and serialize the data unit 112 for communication via the second data bus 109. The adaptive parallel-serial converter 150 may determine whether to modify the data format 114 of the data unit 112 during serialization of the data unit 112, select a data format modification 155 (from the library 555), and implement the selected data format modification 155 while generating the data sequence 242 comprising the data unit 112, as disclosed herein.
As disclosed herein, the adaptive parallel-serial converter 150 may be embodied within a peripheral region of the memory structure 1023 (e.g., a peripheral region of a memory substrate, chip, die, and/or the like). The adaptive parallel-serial converter 150 may, therefore, be embodied as peripheral circuitry 1027 of the memory structure 1023. The peripheral circuitry 1027 may include, but is not limited to: core control circuits 1026, program circuitry, read circuitry, erase circuitry, driver circuitry, sense circuitry, interconnect circuitry, and so on. It may be advantageous to minimize the size, power consumption, and/or logic delays of the peripheral circuitry 1027. Reducing the size of peripheral circuitry 1027 may enable a larger portion of the memory structure 1023 to be used as memory storage (e.g. to implement additional storage locations 122). Reducing power consumption of the peripheral circuitry 1027 may reduce the overall power requirements of the memory system 1021, reduce heat generated within the memory structure 1023, decrease disturb conditions, decrease operating temperature, reduce error rate, increase media life, and so on. Reducing logic delays of peripheral circuitry 1027 may result in increases in the rate at which the memory system 1021 is capable of performing input/output operations (e.g., reduce the latency of input/output operations).
The adaptive parallel-serial converter 150 disclosed herein may be configured to may be configured to implement data format conversions (e.g., endian conversions) while minimizing the size, power consumption, and/or logic delays of the peripheral region circuitry 1027. The adaptive parallel-serial converter 150 may minimize a size and/or power requirements of the peripheral circuitry 1027 by, inter alia, implementing data format conversions, such as the endian conversions, in the serialization circuitry 450, disclosed herein (and/or parallelization circuitry 1255 disclosed in further detail below). The adaptive parallel-serial converter 150 may, therefore, be configured to implement data format conversions during data serialization, and without the need for separate, dedicated format conversion circuitry. Implementing data format conversions in serialization and/or parallelization circuitry may also reduce logic delays that would be imposed by separate data conversion circuitry. The output selection circuitry (e.g., selection logic 474 and/or selection circuitry 574) of the serialization circuitry 450 may be further configured to reduce size, power, and/or logic delays of the peripheral circuitry 1027. As disclosed above, the adaptive parallel-serial converter 150 applies an output select signal 459 to the control the selection logic 474 and/or selection circuitry 574 to perform various data format conversions. The output select signal 459 is generated by the format control logic 152 in response to receiving parallel data 232, and remains the same while a corresponding serial data sequence 242 is produced. Maintaining the output select signal 459 unchanged while a data unit 112 is serialized may reduce power consumption and/or logic delays within the serialization circuitry 450 during serialization since, inter alia, the selection logic 474 and/or selection circuitry 574 are modified, at most, once per serialization operation (at the rate of a parallel data clock, such as PCLK or 107CK), as opposed to being modified at the rate of the serial output (at the rate of a serial data block, such as SCLK or 109CK).
The serialization circuitry 450 and the parallelization circuitry 1155 may be configured to modify the data format 114 of data units 112 during the conversion operations performed on the data units 112 thereby. The data format modifications performed by the serialization circuitry 450 and/or parallelization circuitry 1155 may be determined and/or controlled by format conversion logic 152. The format conversion logic 152 may be configured to determine input formats 414 of data units 112 received at the adaptive parallel-serial converter 150, as disclosed herein. The format conversion logic 152 may be configured to determine input formats 414 for data units 112 received as serial input data 1142 (e.g., data units 112 embodied as data sequences 242, communicated via the second data bus 109, second interconnect 119, and/or the like) and/or parallel input data 1132 (e.g., data units 112 embodied as parallel data 232, communicated via the first data bus 107, first interconnect 117, accessed from a memory 120, or the like). The data format logic 152 may be further configured to determine requested data formats 514 for data units 112 output by the adaptive parallel-serial converter 150. The requested data formats 514 may correspond to serial output data 1143 and/or parallel output data 1133 produced by the adaptive parallel-serial converter 150.
The format conversion logic 152 may be configured to determine data format modifications 155 to implement during a) parallel-to-serial conversion operations performed by the serialization circuitry 450 and b) serial-to-parallel conversion operations performed by the parallelization circuitry 1155. The format conversion logic may comprise format logic circuitry 1152, which may be configured to determine data format modifications 155 for conversion operations based on determined input formats 414 and/or requested formats 514 corresponding to the conversion operations, as disclosed herein. The format logic circuitry 1152 may comprise one or more of storage circuitry, look-up circuitry, logic circuitry, state machine circuitry, a library 555, and/or the like. In some embodiments, the format logic circuitry 1152 comprises and/or is communicatively coupled to non-transitory storage comprising conversion metadata 1153. The conversion metadata 1153 may define a plurality of data format conversions 155, each data format modification 155 corresponding to a respective set of input formats 414 and requested formats 514 and defining respective format control signals 157. The conversion metadata 1153 may be embodied as electronic data stored within one or more of a storage circuit, a non-transitory storage medium, firmware, a register, and/or the like.
The format control signals 157 corresponding to the data format modifications 155 may configure the adaptive parallel-serial converter 150 to implement selected data format conversions 155 during parallel-to-serial and/or serial-to-parallel conversion performed thereby. In some embodiments, the format conversion logic 152 further comprises format control circuitry 1157 configured to assert and/or drive format control signals 157 corresponding to selected data format modifications 155 and/or route the format control signals 157 to one or more of the serialization circuitry 450 and parallelization circuitry 1155. The format control circuitry 1157 may comprise and/or be communicatively coupled one or more signal drivers, signal amplifiers, signal interconnects, control interconnects, and/or the like.
The adaptive parallel-serial converter 150 may further comprise arbitration logic 1105, which may be configured to a) determine an operating mode for the adaptive parallel-serial converter 150, and b) configure the adaptive parallel-serial converter 150 to operate in the determined operating mode. The operating modes of the adaptive parallel-serial converter 150 may include, but are not limited to: a serialization mode and a parallelization mode. When configured for operation in the serialization mode, the adaptive parallel-serial converter 150 may be configured to receive parallel input data 1132 and output corresponding serial output data 1143. When configured for operation in the parallelization mode, the adaptive parallel-serial converter 150 may be configured to receive serial input data 1142 and output corresponding parallel output data 1133. Accordingly, when operating in the serialization mode, the arbitration logic 1105 may configure the serialization circuitry 450 to receive parallel input data 1132 and output serial output data 1143 and, when operating in parallelization mode, the arbitration logic 1105 may configure the parallelization circuitry 1155 to receive serial input data 1142 and output parallel output data 1133.
In some embodiments, the adaptive parallel-serial converter 150 comprises and/or is communicatively coupled to interconnect circuitry, which may be configured to selectively couple the adaptive parallel-serial converter to one or more of the first data bus 107, first interconnect 117, second data bus 109, and/or second interconnect 119. When operating in serialization mode, the arbitration logic 1105 may configure the interconnect circuitry 1103 to communicatively couple the serialization circuitry 450 to one or more of the first data bus 107, first interconnect 117, second data bus 109, and/or second interconnect 119 (by use of mode control signals 1101). When operating in parallelization mode, the arbitration logic 1105 may configure the interconnect circuitry 1103 to communicatively couple the parallelization circuitry 1155 to one or more of the first data bus 107, first interconnect 117, second data bus 109, and/or second interconnect 119.
The arbitration logic 1105 may select the operating mode using any suitable technique or mechanism. By way of non-limiting example, the arbitration logic 1105 may select the operating mode based on, inter alia, control signals communicated via one or more of the first interconnect 117, the first data bus 107, the second interconnect 119, the second data bus 109, command(s) received from a host 1003 and/or computing device 103, and/or the like. As disclosed above, the adaptive parallel-serial converter 150 may comprise a parallel data interface 507 and/or a serial data interface 609, which may be configured to communicatively and/or electrically couple to the first interconnect 117, first data bus 107, second interconnect 119, and/or second data bus 109, respectively. The arbitration logic 1105 may use the parallel data interface 507 and/or serial data interface 609 to select the operating mode for the adaptive parallel-serial converter 150. The arbitration logic 1105 may be further configured to receive communication control signals, arbitrate data communication, and so on, in accordance with interface and/or bus protocols of the parallel data interface 507 and/or serial data interface 609, as disclosed herein.
As disclosed above, the adaptive parallel-serial converter 150 may be configured to perform a conversion operation in response to receiving a data unit 112. The data unit 112 may be received as either parallel input data 1132 or serial input data 1142 (depending on the selected operating mode determined by the arbitration logic 1105). In response to receiving the data unit 112, the adaptive parallel-serial converter 150 may a) produce format control signals 157 corresponding to a selected data format modification 155 for the conversion operation (e.g., by use of the format conversion logic 152, as disclosed herein), and b) convert the data unit 112 to one or more of serial output data 1143 and parallel output data 1133 in which the data unit 112 is formatted according to the requested format 514 (e.g., by use of one or more of the serialization circuitry 450 and parallelization circuitry 1155). The format of the data unit 112 may be modified from the determined input format 414 to the requested data format 514 while the data unit 112 is converted.
In the
The buffer circuitry 1252 may be configured to buffer one or more data units 112 in a parallel arrangement (for communication on the first data bus 107 as parallel data 232). The buffer circuitry 1252 may be sized and/or configured in accordance with the size and/or configuration of data units 112 being processed by the adaptive parallel-serial converter 150, the width 109W of the second data bus 109, the width 107W of the first data bus 107, and so on. In the
As disclosed above, the parallelization circuitry 1255 may be configured to form parallel data 232 comprising the data elements 113 of a data sequence 242 by, inter alia, buffering the data elements 113 in the buffer circuitry 1252. The buffer circuitry 1252 may comprise a plurality of registers 1262, and each register 1262 may be configured to store a respective data element 113 (e.g., each register 1262 may be configured to hold eight data bits). In the
The parallelization circuitry 1255 may be configured to selectively route data elements 113 of a data unit 112 to registers 1262A-D of the buffer circuitry 1252. The selective routing may be configured to, inter alia, modify the data format 114 of the data unit 112 during parallelization of the data unit 112. As illustrated in
Format conversion logic 152 of the adaptive parallel-serial converter 150 may be configured to determine whether to reformat data units 112 during parallelization. The format conversion logic 152 may determine whether to reformat the data unit 1212 in response to comparing an input format 1214 of the data unit 1212 to a requested format 514 for the data unit 1212. The input format 1214 may correspond to the sequential order of the data elements 113 in the data sequence 242 (e.g., determine the order in which the data elements 113 are communicated via the second data bus 109). In the
Data format conversions 155 to modify the data format 114 of a data unit 112 during parallelization may comprise operations that determine and/or modify the parallel arrangement of the data elements 113 of the data unit 112. As illustrated in
In the
As disclosed above, during parallelization, a data element 113 is received during each of N sequential communication periods 245 (τ through τ+3 for data units 112 comprising four data elements 113[τ] through 113[τ+3]). The routing control signals 1259 for the NOP data format modification 155 may configure the routing circuitry to route the data element 113 communicated during each of the N (4) sequential communication periods 245 to a register 1262A-D, respectively. The routing control signals 1259 may comprise a sequence of select signals which may buffer the data elements 113 of the data unit 1212 as follows: “0” at τ to buffer data element 113[T] within register 1262A (at parallel data position 233A), “1” at τ+1 to buffer data element 113[τ+1] within register 1262B (at parallel data position 233B), “2” at τ+2 to buffer data element 113[τ+2] within register 1262C (at parallel data position 233C), and “3” at τ+3 to buffer data element 113[τ+3] within register 1262D (at parallel data position 233D).
Other data format conversions 155 for implementation during parallelization may be configured to modify the data format 114 of a data unit by, inter alia, modifying the routing control signals 1259 used to buffer the data elements 113 in the data sequence 242. Exemplary data format conversions 155 (and corresponding sets of routing control signals 1259) to convert sequential data 242 comprising a data unit 112 in data format 114A to any other data format 114A-E while producing corresponding parallel data 232 are listed in Table 8 below:
As illustrated in
Although particular examples of data format conversions 155 to modify the data format 114 of data units 112 while such data units 112 are parallelized are described herein, the disclosure is not limited in this regard and could be adapted to implement any number of data format conversions 155 to convert a data sequence 242 comprising a data unit 112 in any suitable data format 114 to parallel data 232 comprising the data unit 112 in any other suitable data format 114. Data format conversions 155 (and corresponding sets of routing control signals 1259) to convert a data sequence 242 comprising a data unit 112 “0x0A0B0C0D” in data format 114E (e.g., data sequence 0B, 0A, 0D, 0C at τ through τ+3) to any other data format 114, are listed in Table 9 below:
Data format conversions 155 to convert data units 112 in other data formats 114 (e.g., data formats 114B-D) during parallelization may be implemented in a similar manner. The data format conversions 155 (and corresponding sets of routing control signals 1259 and/or register control signals 1257) may be embodied within a library 555, logic circuitry, state machine logic, and/or the like as disclosed herein.
As disclosed above, the parallelization circuitry 1255 may be configured to selectively modify the data format 114 of a data unit 112 while producing parallel data 232 comprising the data unit 112 (e.g., while parallelizing the data unit 112). The parallelization circuitry 1255 may parallelize a data unit 112 by: a) receiving a data sequence comprising data elements 113 of the data unit during each of N sequential communication periods 245 (at respective sequential data positions 243), b) buffering the data elements 113 received during each of the N sequential communication periods 245 at respective parallel data positions 233 (e.g., within selected registers 1262A-D), and c) outputting the buffered data elements 113 as parallel data 232 on the first data bus 107. Parallelizing a data unit 112 may further comprise determining whether to modify the data format 114 of the data unit 112, which may comprise a) determining a sequential format 1214 of the data unit 112 as communicated in the data sequence 242, b) determining a requested format 514 for parallel data 232 comprising the data unit 112, and c) comparing the sequential format 1214 to the requested format 514. Parallelizing a data unit 112 may further include: a) selecting a data format modification 155 to implement while parallelizing the data unit 112 based on comparing the sequential format 1214 to the requested format 514; and b) generating format control signals 157 corresponding to the selected data format modification 155. The format control signals 157 may comprise a set of routing control signals 1259, as disclosed herein. The format control signals 157 may further include a register control signal 1257 to configure respective registers 1262A-D to latch data routed thereto by the routing circuitry 1254, output data latched therein, and so on.
The parallelization circuitry 1355 may be configured to receive data units 1312 embodied as respective data sequences 242 and convert the data sequences 242 to parallel data 232, as disclosed herein. Receiving a data unit 1312 as a data sequence 242 may comprise receiving data elements 113 of the data unit 1312 during respective sequential communication periods 245 and in accordance with a sequential order. As disclosed above, the sequential order of the data elements 113 may correspond to the input format 1314 of the data unit 1312. The incoming data elements 113 may be buffered within the parallelization circuitry 1355, which may comprise storing the data elements 113 at respective storage locations (e.g., within selected SR flip flops 762). Incoming data elements 113 may be routed to a selected SR flip flop 762 by use of, inter alia, input select circuitry 1374. The input select circuitry 1374 may comprise a de-multiplexer, switch circuitry, interconnect circuitry, and/or the like. The input select circuitry 1374 may be controlled by an input select signal 1359, which, as disclosed in further detail herein, may correspond to a format control signal 157 of a data format modification 155 being implemented during parallelization of the data unit 1312. The input select signal 1359 may configure the input select circuitry 1374 to direct data elements 113 of the data sequence 242 to an input 461A-D (InA through InD) of a respective one of the SR flip flops 762A-D.
The parallelization circuitry 1355 may comprise a plurality of SR flip flops 762 connected in a circular, reversible sequence 763. By way of non-limiting example, each SR flip flop 762A-D may be configured to hold a respective 8-bit data element 113. The disclosure is not limited in this regard, however, and could be adapted for use with any number of data elements having any suitable size. Shift circuitry 772 may be configured to shift data elements 113 held in the respective SR flip flops 762A-D in a circular, reversible shift pattern (e.g., responsive to a clock signal, such as SCLK). As the data elements 112 of the data sequence 242 are received, the outputs of the SR flip flops 762A-D produce a parallel data output 1332, which may comprise parallel data 232 comprising the data unit 1312. The parallel data output 1332 may be communicated via a suitable mechanism, such as the first data bus 107 and/or first interconnect 117 (per the PCLK signal thereof), as disclosed herein.
The parallelization circuitry 1355 may be configured to receive format control signals 157, which may include a shift control signal 457 and an input select signal 1359. The shift control signal 457 may determine a shift direction of the shift circuitry 772, as disclosed herein (e.g., a value of “0” may cause the shift circuitry 772 to shift data elements 113 in the forward direction 473A and a value of “1” may cause the shift circuitry to shift data elements 113 in the reverse direction 473B). The input select signal 1359 may determine a storage location for incoming data elements 113 of the data sequence 242 (e.g., select the SR flip flop 762A-D to receive incoming data elements 113). In the
The format control signals 157 may be used to modify the data format 114 of data units 112 while the data units 112 are parallelized. The parallelization circuitry 1355 may comprise and/or be communicatively coupled to format conversion logic 152. The format conversion logic 152 may determine an input data format 1314 for data sequences received at the parallelization circuitry 1355, determine a requested format 514 for data unit 1312, and select a data format modification 155 to convert the determined input data format 1314 to the requested format 514, as disclosed herein. The format control signals 157 of the selected data format modification 155 may comprise a shift control signal 457 and input select signal 1359, which may configure the parallelization circuitry 1355 to modify the format of the data unit 1312 while the data unit 1312 is parallelized.
By way of non-limiting example, the parallelization circuitry 1355 may be configured to parallelize sequential data 242 comprising a data unit 1312 comprising four eight-bit data elements 113 and having the hexadecimal value of “0x0A0B0C0D.” The input format 1314 of the data unit 1312 may be big endian with eight-bit atomic elements (e.g., data format 114A). Accordingly, the sequential order of the data elements 113 in the data sequence 242 may correspond to data format 114A (with the MSDE “0A” being ordered first, and the LSDE “0D” being ordered last). The format conversion logic 152 may determine a requested format 514 and select a data format modification 155 to implement while parallelizing the data unit 112 by, inter alia, comparing the input format 1314 to the requested format 514, as disclosed herein. The format conversion logic 152 may be further configured to produce format control signals 157 corresponding to the selected data format modification 155, which may include a shift control signal 457 and input select signal 1359. The format control signals 157 may, therefore, be configured to cause the serial-to-parallel circuitry to modify the format of the data unit 1312 from the input format 1314 to the requested format 514 while the data unit 1312 is parallelized (e.g., converted from a data sequence 242 to parallel data 232).
The shift control signal 457 and input select signal 1359 may be selected to convert the data unit 1312 from any input format 1314 to any requested format 514. By way of non-limiting example, Table 10 below shows the contents of the SR flip flops 762A-D (and parallel output data 1332) produced while parallelizing the data unit 1312 (“0x0A0B0C0D” in data format 114A) using various format control signals 157 (e.g., different combinations of shift control signals 457 and input select signals 1359).
As illustrated, above, the format control signals 157 may be selected to generate parallel output 1332 in which the data unit 1312 has a parallel arrangement corresponding to any suitable data format 114. The data unit 1312 may be converted to: data format 114C (little endian with eight-bit atomic elements) by setting the shift control signal 457 to “1” (reverse direction 473B) and the input select signal to “0” (to route incoming data elements 113 to input 461A of SR 762A); data format 114D (little endian with 16-bit atomic elements) by setting the shift control signal to “0” and the input select signal to “1” (input 461B); data format 114E (middle endian) by setting the shift control signal 457 to “1” and the input select signal to “2” (input 461C); and so on. A NOP data format modification 155 may comprise format control signals 157 in which the shift control signal 457 is set to “0” and the input select signal is set to “3” (input 461D). Corresponding data format conversions 155 are illustrated in Table 11 below.
Although particular non-limiting examples of data format modifications 155 and corresponding format control signals 157 are described herein, the disclosure is not limited in this regard and could be adapted to implement any suitable data format modification 155 (and corresponding format control signals 157) to convert the data unit 1312 from any suitable input data format 1314 to any suitable requested format 514. By way of further non-limiting example, Table 12 illustrates the state of respective outputs of the SR flip flops 762A-D in response to a data sequence 242 comprising the hexadecimal value “0x0A0B0C0D” in data format 114E using various different format control signals 157.
As illustrated above, a data sequence 242 in data format 114E may be converted to parallel data 232 in any suitable data format 114 by use of the parallelization circuitry 1355 (and format control signals 157). A data sequence 242 may be converted from data format 114E to: data format 114A and/or 114B by setting the input select signal 1359 to 461C and the shift control signal 457 to the reverse direction 473B; data format 114C by setting the input select signal 1359 to 461B and the shift control signal 457 to the forward direction 473A; data format 114D by setting the input select signal 1359 to 461A and the shift control signal to the reverse direction 473B; and data format 114E by setting the input select signal 1359 to 461D and the shift control signal 457 to the forward direction 473A (per the NOP data format modification 155, disclosed above). Corresponding data format conversions 155 are provided in Table 13 below.
As disclosed above, the data format conversions 155 of Tables 11 and/or 13 may be maintained in the parallelization circuitry 1355, format conversion logic 152, a library 555, logic element(s), circuit(s), configuration data, firmware, non-transitory storage, and/or the like. The format conversion logic 152 may select suitable data format conversions 155 based on the input format 1314 and requested format 514 determined for particular parallelization operations. The format conversion logic 152 may assert corresponding format control signals 157, which may configure the parallelization circuitry 1355 to implement data format modifications while the parallelization operations are performed (e.g., while producing parallel data outputs 1332 corresponding to the data sequences 242). As disclosed above, parallelizing a data sequence 242 may comprise a) receiving data elements 113 in sequence (responsive to a clock signal, such as SCLK), b) routing the received data elements 113 to a selected input 461A-D of the shift circuitry 772 (per the input select signal 1359), c) circularly shifting the data elements 113 within the shift circuitry 772 (responsive to the SCLK signal and in a selected direction 473A or 473B), and d) forming a parallel data output 1332 from the contents of the shift circuitry 772 (e.g., from the contents of the respective SR flip flops 762A-D, each SR flip flop 762A-D corresponding to a respective parallel data position 233A-D and/or parallel data channel 533A-D). The format control signals 157 may remain constant during respective parallelization operations (e.g., during parallelization of a particular data sequence 242 both the shift control signal 457 and input select signal remain unchanged). Maintaining the format control signals 457 unchanged while data units 112 are parallelized may reduce power consumption and/or logic delays within the parallelization circuitry 1355 since, inter alia, the input selection logic 1374 and/or shift circuitry 772 switch state, at most, once per parallelization operation (at the rate of PCLK), as opposed to being modified at the higher rate of SCLK.
The parallelization circuitry 1355 may be used to implement the parallelization circuitry 1155 of
Step 1410 may comprise receiving a data unit 112 having a particular data format 114. Step 1410 may comprise receiving one of parallel data 232 and a data sequence 242. Receiving parallel data 232 may comprise one or more of: reading the data unit 112 from a memory 120, receiving the data unit 112 via a parallel data bus (e.g., the first data bus 107 and/or first interconnect 117), and/or the like. Receiving a data sequence 242 may comprise receiving a sequence of data elements 113 via a bus (e.g., the second data bus 109 and/or second interconnect 117) during respective sequential communication periods 245, and/or the like.
Step 1420 may comprise selecting and/or identifying a data format modification 155 to implement during conversion of the data unit 112 (e.g., while serializing or parallelizing the data unit 112). Step 1420 may comprise determining an input format 414 of the data unit 112, as disclosed herein. Determining the input format 414 of the data unit 112 may comprise one or more of: receiving information pertaining to the input format 414 of the data unit 112 (e.g., receiving input 451), accessing data format metadata 522 pertaining to data units 112 stored in a memory 120, accessing information pertaining to the input format 414 within the parallel data 232 comprising the data unit 112 (or the data sequence 242 comprising the data unit 112), accessing information pertaining to the input format 414 on a data bus, channel and/or interconnect, and/or the like. Step 1420 may further comprise determining a requested format 514 for the data unit 112. The requested format 514 may be determined from a request pertaining to the data unit 112 (e.g., a read request), data format metadata 522 pertaining to a computing device 103, a setting and/or parameter, and/or the like. Step 1420 may further comprise comparing the input format 414 to the requested format 514 to determine whether the input format 414 is compatible with the requested format 514. Step 1420 may further comprise selecting a data format modification 155 to modify the input format 414 to the requested format 514. The selected data format modification 155 may, therefore, be based on a comparison between the input format 414 and the requested format 514. The selected data format modification 155 may be configured to reformat the data unit 112 from the input format 414 to the requested format 514 while the data unit 112 is being converted (e.g., serialized or parallelized).
Step 1420 may comprise identifying a data format modification 155 in a look-up table, firmware, storage, a register, selection logic, and/or the like. The selected data format modification 155 may be configured to reformat the data unit 112 from the input format 414 to the requested format 514 while the data unit 112 is being converted. The input format 414 may correspond to a first data format and/or first endianness of the data unit 112 (as received at step 1410), and the requested format 514 may correspond to a second, different data format and/or endianness for the data unit 112 (as output as a data sequence 242 and/or parallel data 232). In some embodiments, the data format modification 155 selected at step 1420 may be configured to produce a data sequence 242 from parallel data 232 in which the data unit 112 is arranged in parallel according to the first data format and/or endianness, such that the data elements 113 of the data unit 112 have a sequential arrangement and/or serial ordering that corresponds to the second format and/or endianness for the data unit 112. Alternatively, or in addition, the data format modification 155 selected at step 1420 may be configured to produce parallel data 232 (e.g., a parallel data output 1332) in which data elements 113 have a sequential ordering corresponding to the first data format 114 and are arranged in parallel in accordance with the second data format 114. In some embodiments, step 1420 may comprise selecting a NOP data format modification 155 in response to determining that the input format 414 of the data unit 112 is compatible with the requested format 514. The NOP data format modification 155 may be configured to retain the original, input format 414 of the data unit 112, such that the serial arrangement of the data unit 112 in the data sequence 242 corresponds to the original, input format 414 (and/or the parallel arrangement of the data unit 112 in the parallel data 232 corresponds to the original, input format 414).
Step 1430 may comprise implementing the selected data format modification 155 while converting the data unit 112 (e.g., serializing the data unit 112 or parallelizing the data unit 112). Step 1430 may comprise implementing the selected data format modification 155 while serializing parallel data 232 (e.g., while producing a data sequence 242 from parallel data 232 comprising the data unit 112). Alternatively, step 1430 may comprise implementing the selected data format modification 155 while parallelizing a data sequence 242 (e.g., while generating a parallel data output 1332 from a data sequence comprising the data unit 112).
Serializing the data unit 112 may comprise: a) receiving parallel data 232 comprising the data unit 112, b) latching and/or buffering the data elements 113 of the data unit 112, c) circularly shifting the data elements 113 in either a forward direction 473A or a reverse direction 473B during a plurality of serialization cycles, and d) outputting a selected data element 113 of the data unit 112 during each serialization cycle. The serialization cycles may correspond to a clock signal, such as the clock signal 109CK of the second data bus 109, a serial clock signal (SCLK), and/or the like (e.g., may correspond to sequential communication periods 245, as disclosed herein). Parallelizing the data unit 112 may comprise: a) receiving a data sequence 242 comprising the data unit 112 (e.g., receiving data elements 113 of the data unit 112 during respective sequential communication periods 245), b) routing the incoming data elements to a selected storage element (e.g., a selected SR flip flop 762), c) circularly shifting the data elements 113 in one of the forward 473A and reverse 473B directions, and d) producing a parallel data output 1332 comprising a parallel arrangement of the data elements 113 of the data unit 112.
The selected shift direction, output selection, and/or input selection may correspond to format control signals 457 of the selected data format modification 155. Step 1430 may comprise generating format control signals 457 to configure a buffer 452, shift register circuitry 552, reversible, circular shift circuitry 652, shift circuitry 772, and/or register circuitry 852 to shift data elements 113 and/or data value(s) of the data elements in direction 473A or 473B, as disclosed herein (e.g., by use of shift circuitry 472, 572, 672, routing circuitry 772, and/or the like). Step 1430 may further comprise generating an output select signal 459 to select an output of a particular shift buffer 462, register 562, shift register 662, SR flip flop 762, and/or reversible latch 862 or 962, to form the data sequence 242, as disclosed herein. Alternatively, step 1430 may comprise generating an input select signal 1359 to route an incoming data element 113 to a selected buffer location (e.g., a selected SR flip flop 762A-D). The shift and/or select operations of step 1430 may be configured to produce one or more of a data sequence 242 and parallel data 232 in which data elements 113 of the data unit 112 are arranged in accordance with the requested format 514 (e.g., in which the sequential order of the data elements 113 and/or parallel arrangement of the data elements 113 corresponds to the requested format 514).
Serializing the data unit 112 at step 1430 may comprise latching each of N data elements 113 of the data unit 112 into N shift buffers, each shift buffer being configured to hold a data element 113 (e.g., an eight-bit data value). Step 1430 may further comprise shifting the data elements between the shift buffers during each of N serialization cycle in either direction 473A or direction 473B (in accordance with a shift control signal 457). Step 1430 may further comprise selecting one of the N shift buffers to produce the data sequence 242, such that a data element 113 held within the selected shift buffer comprises a different data element 113 of the data element 113 during each of the N serialization cycles. The data elements 113 of the data unit 112 may, therefore, be arranged in respective ones of N sequential data positions 233, each sequential data position 233 corresponding to a respective one of the N serialization cycles. The shift and select operations of step 1430 may result in a data sequence 242 in which data elements 113 of the data unit 112 are output in a sequential arrangement that corresponds to the requested format 514.
In another embodiment, serializing the data unit 112 at step 1430 may comprise latching each data value of the data unit 112 into respective serialization circuits (e.g., serialization circuits 550). Each serialization circuit may be configured to latch a particular data value of each of the N data elements 113 of the data unit 112. Each of the N data elements 113 may correspond to a respective parallel data position 233A-N within the parallel data 232. Step 1430 may comprise latching data value (0) at each of N parallel data positons 233A-N into serialization circuit (0), latching data value (1) at each of N parallel data positions 233A-N into serialization circuit (1), and so on, with each data value (M) at each of N parallel data positions 233A-N being latched into serialization circuit (M), where M corresponds to the size of the data elements 113 (e.g., with M being 7 for eight-bit data elements 113). Step 1430 may include selecting a) a shift direction 473A or 473B for the serialization circuits, and b) selecting an output from each of the serialization circuits (by use of format control signals 157, as disclosed herein). Step 1430 may further comprise shifting data within serialization circuitry 450 in the selected shift direction (direction 473A or 473B), and using the data value outputs of the serialization circuits to produce the data sequence 242.
Parallelizing the data unit 112 at step 1430 may comprise receiving a respective data element 113 of the data unit 112 during each of a plurality of sequential communication periods 245, such that the data elements 113 are received in a sequential order that corresponds to the input data format 414 of the data unit 112. Step 1430 may further comprise a) routing the data elements 113 to one of a plurality of buffer locations (e.g., SR flip flops 762A-D) based on format control signals of the selected data format modification 155 (e.g., input select signal 1359), b) shifting the data elements 113 in a selected shift direction (e.g., by use of shift circuitry 772 and/or in accordance with a shift control signal 457), and c) generating parallel data output 1332 comprising the data unit 112 by combining outputs of the respective buffers (e.g., SR flip flops 762A-D). The selecting routing, shifting, and combining of step 1430 may result in producing parallel data output 1332 in which the data elements 113 of the data unit 112 have a parallel arrangement that corresponds to the requested format 514 (and is modified relative to a parallel arrangement corresponding to the input format 414).
Step 1520 may comprise determining whether an input format 414 of the data unit 112 is compatible with a requested format 514. Step 1520 may comprise determining the input format 414 and the requested format 514 and/or comparing the input format 414 to the requested format 514, as disclosed herein. If the input format 414 is compatible with the requested format 514, the flow may continue to step 1530. Otherwise, the flow may continue at step 1540.
Step 1530 may comprise selecting a NOP data format modification 155 to implement while serializing the data unit 112. As disclosed herein, the NOP data format modification 155 may be configured such that the sequential arrangement of the data unit 112 in the data sequence 242 produced in the method 1500 is the same as the original input format 414 of the data unit 112 (e.g., corresponds to the parallel data arrangement of the data unit 112 in the parallel data 232).
Step 1540 comprises selecting a data format modification 155 to modify the data format 114 of the data unit 112 during serialization of the data unit. The data format modification 155 may be configured to modify the sequential arrangement of the data unit 112 in the data sequence 242. The modifications may be configured to convert the data unit 112 from the parallel data arrangement corresponding to the input format 414 to a sequential data arrangement corresponding to the requested format 514. Steps 1530 and 1540 may comprise selecting a data format modification 155 from a table, look-up logic, library 555, and/or the like, as disclosed herein.
Step 1550 may comprise serializing the data unit 112 while implementing the data format modification 155 selected at steps 1520-1540. Step 1560 may comprise latching data of the data unit 112 into shift circuitry. Step 1560 may comprise routing data values of each of N data elements 113 of the data unit 112 into a respective serialization circuit. Step 1560 may comprise latching data values of each of the N data elements 113 into a respective one of N shift buffers 462, each of the N shift buffers 462 configured to hold a respective one of the data elements 113 (e.g., hold a respective multi-bit data value). Each of the shift buffers 462 may be comprised of a plurality of data storage, register, latch, and/or buffer circuits.
Alternatively, or in addition, step 1560 may comprise latching respective bits of each of N data elements 113 into each of M serialization circuits (e.g., serialization circuits 550[0] through 550[M]). Each of the serialization circuits 550 may be configured to serialize one of M data values of the N data elements 113. A serialization circuit (0) may be configured to latch data value (0) at each parallel data position 233A-N, a serialization circuit (1) may be configured to latch data value (1) at each parallel data position 233A-N, and so on, with a serialization circuit (M) latching data value (M) at each parallel data position 233A-N.
Step 1570 may comprise generating format command signals 157 for use in producing the data sequence 242. The format command signals 157 may correspond to the data format modification 155 selected at steps 1520-1540. Format command signals 157 for the NOP data format modification 155 (selected at step 1430) may be configured to output the data unit 112 in the data sequence 242 such that data of the data unit 112 is in a sequential arrangement that corresponds to the original, input format 414 of the data unit 112. The format command signals 157 may configure the shift buffers 462 and/or serialization circuits 550 to shift data of the data unit 112 in the forward direction 473A and/or select the serialization circuit corresponding to parallel data position 233A (and/or 233[0] through 233[M]) to produce the data sequence 242. Format command signals 157 configured to reformat the data unit 112 in the data sequence 242 may cause the serialization circuitry 550 to a) shift data in the reverse direction 473B and/or b) select a register 562, 662, SR flip flop 772, and/or reversible latch 862/962 corresponding to a parallel data position other than parallel data position 233A to produce the data sequence(s) 242[0] through 242[M].
Step 1580 may comprise generating a data sequence 242 comprising the data unit 112. Step 1580 may comprise N sequence periods, with a respective data element 113 of the data unit 112 being output during each of the N sequence periods. The sequence periods may correspond to a clock signal, such as the clock signal 109CK of the second data bus 109, a serial clock SCLK, and/or the like. The disclosure is not limited to generating a data sequence 242 comprising respective data elements 113. In other embodiments, step 1580 may comprise generating a data sequence 242 comprising N/W sequence periods, where W is a number of data elements 113 capable of being communicated in parallel on the second data bus 109 (e.g., in accordance with the width 109W of the second data bus 109). In some embodiments, W may be less than one. For example, each data element 113 may comprise an eight-bit value, and the second data bus 109 may be limited to transmitting a single bit value during each sequence period. In this embodiment, step 1580 may comprise generating a data sequence 242 comprising 8*N sequence periods. During each of the sequence periods, the method 1500 may comprise shifting the data latched in the shift buffers 462 and/or serialization circuits in accordance with the shift control signal 457 in step 1582 (towards the designated output location in either the forward direction 473A or reverse direction 473B), and generating the data sequence 242 for the sequence period in accordance with the output select signal 459 in step 1584. The shift and select operations performed during each of the N sequence periods (steps 1580-1584) may be configured to arrange the data elements 113 in a sequential arrangement that corresponds to the requested format 514 (e.g., converts the parallel data in the input format 414 into a data sequence 242 arranged in accordance with the requested format 514).
Step 1620 may comprise determining whether an input data format 414 of the data unit 112 (as arranged in the data sequence 242) is compatible with a requested format 514 for the data unit 112. Step 1620 may comprise determining the sequential data format 414, determining the requested format 514, and/or comparing the input format 414 to the requested format 514, as disclosed herein. If the input format 414 is compatible with the requested format 514, the flow may continue to step 1630. Otherwise, the flow may continue to step 1640.
Steps 1630 and 1640 may comprise selecting a data format modification 155 to implement during parallelization of the data unit 112 (while converting the data sequence 242 comprising the data unit 112 to parallel data 232). Step 1630 may comprise selecting a NOP data format modification 155 (in response to determining that the requested format 514 is compatible with the input format 414). Step 1640 may comprise selecting a data format modification 155 configured to convert the data unit 112 from the input format 414 to the requested data format 514. The data format modification 155 selected at step 1640 may be configured to convert data elements 113 having a sequential order corresponding to the input format 414 into parallel data 232 in which the data elements are arranged in accordance with the different requested data format 514 (such that the parallel arrangement of the data unit 112 in the parallel data 232 differs from a parallel arrangement corresponding to the original, input format 414 of the data unit 112). Step 1630 and/or 1640 may comprise accessing a library 555, implementing look-up and/or state machine logic, and/or the like, as disclosed herein.
Step 1650 may comprise determining format control signals 157 to implement the data format modification 155 of step 1630 or 1640. In one embodiment, step 1650 may comprise determining a set of routing control signals 1259, which may be configured to buffer data elements 113 received during each of N sequential communication periods 245 at a selected parallel data position 233. The set of routing control signals 1259 may include N signals, each of the N signals to select one of a plurality of registers 1262. The routing control signals 1259 may determine a parallel arrangement of the data elements 113 and, as such, may implement any-to-any data format conversions (e.g., as illustrated in Tables 8 and 9 above). Alternatively, or in addition, step 1650 may comprise determining one or more of a shift control signal 457 and input select signal 1359. The shift control signal 457 may determine a shift direction of shift circuitry 772 of the parallelization circuitry 1355 and the input select signal 1359 may configure input select circuitry 1374 to route data elements 113 of the data sequence 242 to a designated storage location (e.g., SR flip flop 762A-D).
Step 1660 may comprise parallelizing the data sequence 242 by use of the format control signals of step 1650. Step 1660 may comprise receiving a plurality of data elements 113, each data element 113 being received during a respective sequential communication period 245 (e.g., in response to a clock signal, such as SCLK). The data elements 113 may be received via a serial communication channel, such as the second data bus 109 and/or second interconnect 119.
Step 1662 may comprise receiving a data element 113 of the data sequence 242 during a particular sequential communication period 245 (e.g., sequential communication period n). Step 1664 may comprise arranging the data element 113 per the format control signals of step 1650 (in accordance with the selected data format modification 155).
In some embodiment, arranging the data elements 113 at step 1664 may comprise routing the data elements 113 to selected parallel data positions 233 within buffer circuitry 1252 of the parallelization circuitry 1255 illustrated in
In other embodiments, arranging the data elements at step 1664 may comprise routing the data elements 113 to a selected storage location by use of input select circuitry 1374 (and input select signal 1359) of the parallelization circuitry 1355 illustrated in
After each of the N data elements 113 have been received and arranged at steps 1660-1664, the flow may continue to step 1670. Step 1670 may comprise outputting the parallel data 232 comprising the data unit 212 (e.g., generating parallel data output 1332 comprising the data unit 112). Step 1670 may comprise outputting parallel data 232 comprising the data unit 112 in a parallel arrangement that corresponds to the requested format 514 (e.g., such that parallel data positions 233 of the data elements 113 of the data unit 112 correspond to the requested format 514). Step 1670 may further comprise communicating the parallel data 232 on the first data bus 107 and/or first interconnect 117, as disclosed herein.
Step 1710 may comprise receiving input data comprising a data unit 112. The data input 112 may comprise N data elements 113. The data unit 112 may be in a particular data format 114 (e.g., input format 414). The data unit 112 may be received as one or more of parallel data 232, a data sequence 242, and/or the like. When received as parallel data 232 (e.g., read from memory storage and/or communicated in parallel via a data bus), the N data elements 113 of the data unit 112 may have a parallel arrangement corresponding to the input format 414. When received as a data sequence 242, the N data elements 113 may ordered in accordance with the input data format 414 (e.g., each of the N data elements 113 may be communicated during a respective sequential communication period 245 in accordance with the input format 414).
Step 1720 may comprise configuring conversion circuitry to implement a selected data format conversion while performing one or more of a parallel-to-serial conversion and a serial-to-parallel conversion. Step 1720 may comprise selecting a data format modification 155 to convert the data unit 112 from the input format 414 to a requested format 514, as disclosed herein. Step 1720 may further comprise determining one or more of: shift control signal, and output select signal 459, an input select signal 1359, and/or the like, as disclosed herein. The shift control signal may configure circular, reversible shift circuitry of the adaptive parallel-serial converter 150 to circularly shift the N data elements 113 of the data unit 112 in one of a forward shift direction 473A and a reverse shift direction 473B. The output select signal 459 may configure the adaptive parallel-serial converter 150 form an output data sequence 242 from data at a selected location within the circular, reversible shift circuitry (when performing a parallel-to-serial conversion of the data unit 112). The input select signal 1359 may configure the adaptive parallel-serial converter 150 to route data elements 113, of the N data elements 113, to a selected location within the circular, reversible shift circuitry (when performing a serial-to-parallel conversion of the data unit 112). The control signals of step 1720 may remain constant during conversion of the data unit 112.
Step 1730 may comprise implementing the selected data format conversion of step 1720 while performing one of a parallel-to-serial conversion and a serial-to-parallel conversion. Step 1730 may comprise circularly shifting data elements 113, of the N data elements 113 comprising the data unit 112, within a circular, reversible shift circuit of the adaptive parallel-serial converter 150. When performing a parallel-to-serial conversion, step 1730 may comprise latching data elements 113 at respective parallel data positions 233 of input parallel data 232 into respective locations within the circular, reversible shift circuit, and forming an output data sequence 242 as the data elements 113 shifted through a selected location within the circular, reversible shift circuit. When performing a serial-to-parallel conversion, step 1730 may comprise routing data elements 113 of an input data sequence 242 to a selected location within the circular, reversible shift circuitry (based on the input select signal 1359 determined at step 1720), and forming a parallel data output 232 from the contents of the circular, reversible shift circuitry. Step 1755 may comprise determining whether to shift the circular, reversible shift circuitry in the forward shift direction 473A or the reverse shift direction 473B (in accordance with the shift control signal 457 determined at step 1720). When the shift control signal 457 is FWD, step 1730 comprises circularly shifting in the forward shift direction 473A at step 1757. When the shift control signal 457 is REV, step 1730 comprises circularly shifting in the reverse shift direction 473B at step 1759. Performing conversion may comprise performing N (or more) shift iterations on the circular, reversible shift circuit. Each shift iteration may be performed in the same shift direction throughout the conversion (as determined at step 1720 by, inter alia, the shift control signal 457).
Step 1770 may comprise producing an output comprising the data unit 112. The data unit 112 may be embodied as one of parallel data 232 (when performing a serial-to-parallel conversion) and a data sequence 242 (when performing a parallel-to-serial conversion). Parallel data 232 comprising the data unit 112 may comprise each of the N data elements 113 at parallel data positions 233 corresponding to the requested format 514. A data sequence comprising the data unit 112 may comprise an ordered sequence of the N data elements 113, wherein the N data elements 113 are ordered in accordance with the requested format 514. The data elements 113 of the data sequence 242 may be formed from the contents of a selected position within the circular, reversible shift circuit (e.g., by use of the output select signal 459 determined at step 1720).
This disclosure has been made with reference to various exemplary embodiments. However, those skilled in the art will recognize that changes and modifications may be made to the exemplary embodiments without departing from the scope of the present disclosure. For example, various operational steps, as well as components for carrying out operational steps, may be implemented in alternative ways depending upon the particular application or in consideration of any number of cost functions associated with the operation of the system (e.g., one or more of the steps may be deleted, modified, or combined with other steps). Therefore, this disclosure is to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope thereof. Likewise, benefits, other advantages, and solutions to problems have been described above with regard to various embodiments. However, benefits, advantages, solutions to problems, and any element(s) that may cause any benefit, advantage, or solution to occur or become more pronounced are not to be construed as a critical, a required, or an essential feature or element. As used herein, the terms “comprises,” “comprising,” and any other variation thereof are intended to cover a non-exclusive inclusion, such that a process, a method, an article, or an apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, system, article, or apparatus. Also, as used herein, the terms “coupled,” “coupling,” and any other variation thereof are intended to cover a physical connection, an electrical connection, a magnetic connection, an optical connection, a communicative connection, a functional connection, and/or any other connection.
Additionally, as will be appreciated by one of ordinary skill in the art, principles of the present disclosure may be reflected in a computer program product on a machine-readable storage medium having machine-readable program code means embodied in the storage medium. Any tangible, non-transitory machine-readable storage medium may be utilized, including magnetic storage devices (hard disks, floppy disks, and the like), optical storage devices (CD-ROMs, DVDs, Blu-ray discs, and the like), flash memory, and/or the like. These computer program instructions may be loaded onto a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions that execute on the computer or other programmable data processing apparatus create means for implementing the functions specified. These computer program instructions may also be stored in a machine-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the machine-readable memory produce an article of manufacture, including implementing means that implement the function specified. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process, such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified.
While the principles of this disclosure have been shown in various embodiments, many modifications of structure, arrangements, proportions, elements, materials, and components that are particularly adapted for a specific environment and operating requirements may be used without departing from the principles and scope of this disclosure.