Patent Publication Number: US-2021191622-A1

Title: Latency offset for frame-based communications

Description:
CROSS REFERENCE 
     The present application for patent claims the benefit of U.S. Provisional Patent Application No. 62/951,783 by JOHNSON et al., entitled “LATENCY OFFSET FOR FRAME-BASED COMMUNICATIONS,” filed Dec. 20, 2019, assigned to the assignee hereof, and expressly incorporated by reference herein. 
    
    
     BACKGROUND 
     The following relates generally to one or more memory systems and more specifically to latency offset for frame-based communications. 
     Memory devices are widely used to store information in various electronic devices such as computers, wireless communication devices, cameras, digital displays, and the like. Information is stored by programming memory cells within a memory device to various states. For example, binary memory cells may be programmed to one of two supported states, often denoted by a logic 1 or a logic 0. In some examples, a single memory cell may support more than two states, any one of which may be stored. To access the stored information, a component of the device may read, or sense, at least one stored state in the memory device. To store information, a component of the device may write, or program, the state in the memory device. 
     Various types of memory devices exist, including magnetic hard disks, random-access memory (RAM), read-only memory (ROM), dynamic RAM (DRAM), synchronous dynamic RAM (SDRAM), ferroelectric RAM (FeRAM), magnetic RAM (MRAM), resistive RAM (RRAM), flash memory, phase change memory (PCM), and others. Memory devices may be volatile or non-volatile. Non-volatile memory, e.g., FeRAM, may maintain their stored logic state for extended periods of time even in the absence of an external power source. Volatile memory devices, e.g., DRAM, may lose their stored state when disconnected from an external power source. FeRAM may be able to achieve densities similar to volatile memory but may have non-volatile properties due to the use of a ferroelectric capacitor as a storage device. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates an example of a device that supports latency offset for frame-based communications in accordance with examples as disclosed herein. 
         FIG. 2  illustrates an example of a memory die that supports latency offset for frame-based communications in accordance with examples as disclosed herein. 
         FIG. 3  illustrates an example of a structure for a frame training procedure that supports latency offset for frame-based communications in accordance with examples as disclosed herein. 
         FIG. 4  illustrates an example of a process flow that supports latency offset for frame-based communications in accordance with examples as disclosed herein. 
         FIG. 5  illustrates an example of a timing diagram that supports latency offset for frame-based communications in accordance with examples as disclosed herein. 
         FIGS. 6A and 6B  illustrate an example system and circuitry that support latency offset for frame-based communications in accordance with examples as disclosed herein. 
         FIG. 7  illustrates an example of a timing diagram that supports latency offset for frame-based communications in accordance with examples as disclosed herein. 
         FIG. 8  illustrates an example of a timing diagram that supports latency offset for frame-based communications in accordance with examples as disclosed herein. 
         FIG. 9  shows a block diagram of a memory device that supports latency offset for frame-based communications in accordance with examples as disclosed herein. 
         FIG. 10  shows a block diagram of a host device that supports latency offset for frame-based communications in accordance with examples as disclosed herein. 
         FIGS. 11 and 12  show flowcharts illustrating a method or methods that support latency offset for frame-based communications in accordance with examples as disclosed herein. 
     
    
    
     DETAILED DESCRIPTION 
     A host device and a memory device may be configured to transfer large amounts of data quickly. For example, the host device may request that the memory device communicate data at or around four terabytes per second (TB/s). In some examples, to facilitate such high data rates, every symbol of a frame may be used to communicate data or control information and may not be used in communicating overhead signaling, such as headers. Instead, the memory device may perform a frame training procedure that identifies a frame boundary and generates a frame clock to identify the beginning, the end, or other segments of a frame. The memory device may use the generated frame clock for processing commands and data from the host device. However, a read return clock (RCK) for transmitting data from the memory device to the host device may not be aligned with the generated frame clock. 
     A memory device may receive a read command and a write command from a host device. In some examples, the read command and the write command may be combined in a read-write command from the host device. The memory device may determine a read latency for read data associated with the read command and a write latency for write data associated with the write command. The write command and the write data may have the same delay path from the host device to the memory device, and so the write latency may include a discrete quantity of frame periods. In some examples, the write latency may be established by the host device and transmitted to the memory device. The read latency, on the other hand, may include an additional circuit delay associated with accessing the data at the memory device. The total read latency may thus include a discrete portion indicated by the host device, along with the additional circuit delay. This may create a problem for read-to-write timing on a bidirectional bus between the host device and the memory device. For example, if the write latency is programmed to allow write data to arrive at the memory device immediately following read data, the additional circuit delay included in the read latency may result in contention between read and write data on the bidirectional bus. 
     Techniques are described herein for determining a latency offset between receiving data and transmitting data at a memory device. A memory device may receive a read command and a write command from a host device, and determine a read latency and a write latency corresponding to the received commands. The memory device may also determine an additional offset latency to add to the write latency to avoid bus contention between read data and write data associated with the read command and the write command, respectively. The offset latency may correspond to an integer quantity of clock periods, which may be less than a frame period of a frame clock. In some examples, the offset latency may be stored by a mode register of the memory device. In some examples, the host device may determine the offset latency during an initialization and training of a communications channel. The techniques described herein, which may include determining the offset latency, may enable the memory device and the host device to improve communications reliability, among other benefits. 
     Features of the disclosure are initially described in the context of memory devices and dies as described with reference to  FIGS. 1-2 . Features of the disclosure are described in the context of a frame structure, a process flow, timing diagrams, and a system as described with reference to  FIGS. 3-8 . These and other features of the disclosure are further illustrated by and described with reference to apparatus diagrams and flowcharts that relate to latency offset for frame-based communications as described with references to  FIGS. 9-12 . 
       FIG. 1  illustrates an example of a device  100  that supports latency offset for frame-based communications in accordance with examples as disclosed herein. The device  100  may include a host device  105  and a plurality of memory devices  110 . The plurality of memory device  110  may be examples a finer grain memory device (e.g., finer grain random-access memory (RAM), such as finer grain dynamic RAM (DRAM) or finer grain ferroelectric RAM (FeRAM)). 
     The host device  105  may be an example of a processor (e.g., a central processing unit (CPU), a graphics processing unit (GPU)) or a system on a chip (SoC). In some cases, the host device  105  may be separate component from the memory device such that the host device  105  may be manufactured separately from the memory device. In some cases, the host device  105  may be external to the memory device  110  (e.g., a laptop, server, personal computing device, smartphone, personal computer). In the device  100 , the memory devices  110  may be configured to store data for the host device  105 . The host device  105  may exchange information with the memory devices  110  using signals communicated over signal paths. In some cases, the signal paths at least partially include an interposer (silicon or organic). 
     In some situations, the device  100  may perform better using a high-speed connection between the host device  105  and the memory devices  110 . As such, some memory devices  110  support applications, processes, host devices, or processors that have multiple TB/s bandwidth needs. Satisfying such a bandwidth constraint within an acceptable energy budget poses challenges. 
     The memory devices  110  may be configured such that the signal path between the memory cells in the memory devices  110  and the host device  105  are as short as possible. For example, the memory devices  110  may be bufferless memory devices. In another example, the data channels coupling a memory device  110  with the host device  105  may be configured to be shorter than previous designs. 
     In some cases, an interposer may be used to couple the memory devices  110  with the host device  105 . Depending on the constraints of the host device  105  (e.g., bandwidth constraints), various different types of interposers may be used (e.g., silicon interposers or organic interposers). The memory dies of the memory devices  110  may be configured to work with multiple types of interposers. As such, the memory dies of the memory devices  110  may be reconfigurable based on a type of the interposer used to couple the host device  105  with the memory devices  110 . 
     In some cases, the interposer may be a high-density interposer such as a silicon interposer. A high-density interposer may be configured to provide wide communication lanes between connected components (e.g., a memory device  110  and a host device  105 ). The high-density interposer may include a plurality of high-resistance channels for communicating between devices. The channels may be completely independent of one another in some cases. Some channels may be unidirectional and some channels may be bidirectional. 
     The high-density interposer may provide wide communication lanes by offering a high quantity of channels to connect components. In some cases, the channels may be thin traces of connecter (e.g., copper), thereby making each individual channel lossy. Because each channel may be highly resistive, as the frequency of data transferred increases, the power needed to transfer the data goes up in a non-linear relationship with the frequency. Such characteristics may impose a practical frequency ceiling that can be used to transmit data given an amount of transmit power over a channel of the high-density interposer. To increase the amount of data transferred in a given amount of time, the high-density interposer may include a very high quantity of channels. As such, a bus of a memory device  110  may be wider than other types of interposer (e.g., organic interposers) used in some DRAM architectures, such as DDR4 (double data rate fourth-generation synchronous dynamic random-access memory) or GDDR5 (double data rate type five synchronous graphics random-access memory). The interposer (whether it is silicon or organic) may be formed of a first material (e.g., silicon or organic) that is different from a second material that forms a substrate of the package. 
     Other characteristics of the memory devices  110  may also be determined based on the performance constraints and/or the type of the interposer. For example, a channel width of the data channel may be determined. In some memory devices  110 , the quantity of data channels may be fixed by legacy technology (e.g., the quantity of data channels between the host device  105  and the memory device  110  may be sixteen data channels). As the channel width goes up, the quantity of pins used to communicate payload data, control data, and/or clock signals may be increased. In other examples, the quantity of banks in a cell region, or said another way, the quantity of banks accessed using a single data channel, may be determined based on the performance constraints and/or the type of the interposer. In other examples, the quantity of clock signals used in the memory devices  110  may be determined based on the performance constraints and/or the type of the interposer. In addition, various characteristics of the clock signals may be determined based on the performance constraints and/or the type of the interposer. For example, the frequency and phase of the clock signals may be determined based on the performance constraints and/or the type of the interposer. In other examples, the use of an error correction code (ECC) pin may be determined based on the performance constraints and/or the type of the interposer. In other examples, pin drivers may be activated or deactivated, as the case may be, based on the performance constraints and/or the type of the interposer. In other examples, whether a memory device  110  includes data channel pairs may be based on the performance constraints and/or the type of the interposer. In other examples, a modulation scheme (e.g., non-return-to-zero (NRZ) or four-symbol phase amplitude modulation (PAM4)) for signals communicated over the pins may be determined based on the performance constraints and/or the type of the interposer. 
     The memory devices  110  may include one or more vias (e.g., through-silicon vias (TSVs)). In some cases, the one or more vias may be part of internal signal paths that couple controllers with memory cells. The vias may be used to communicate between memory devices  110 . In some cases, some vias may be used to facilitate communication between the host device  105  and at least some of the memory devices  110 . In some cases, a single via may be coupled with multiple memory devices  110 . 
     In some examples, to facilitate high data rates, every symbol of a frame may be used to communicate data or control information between a memory device  110  and a host device  105 . The memory device  110  may generate a frame clock for processing commands and data from the host device  105 , for example by performing a frame training procedure. However, an RCK for transmitting data from the memory device  110  to the host device  105  may not be aligned with the generated frame clock, which may lead to data contention on a bidirectional bus between the host device  105  and the memory device  110 . The memory device  110  may determine an offset latency, which may be added to a write latency associated with a write command in order to avoid bus contention between read data from the memory device  110  and write data from the host device  105 . The offset latency may correspond to an integer quantity of clock periods, which may be less than a frame period of the generated frame clock. Determining the offset latency may improve communications reliability between the memory device  110  and the host device  105 , among other benefits. 
       FIG. 2  illustrates an example of a memory die  200  that supports latency offset for frame-based communications in accordance with examples as disclosed herein. In some cases, the memory die  200  may be referred to as a memory array, an array of memory cells, or a deck of memory cells. The various components of the memory die  200  may be configured to facilitate high bandwidth data transfer between the host device and a memory device with which the memory die  200  is associated. 
     The memory die  200  may include a plurality of banks  205  of memory cells (as represented by the white boxes), a plurality of input/output (I/O) areas  210  (sometimes referred to as I/O regions or I/O stripes) traversing the memory cells of the memory die  200 , and a plurality of data channels  215  that couple the memory die  200  with the host device. Each of the banks  205  of memory cells include a plurality of memory cells configured to store data. The memory cells may be DRAM memory cells, FeRAM memory cells, or other types of memory cells described herein. The plurality of I/O areas  210  may include a plurality of power pins and ground pins configured to couple the memory cells of the memory die  200  with power and ground. 
     The memory die  200  may be divided into cell regions  220  associated with different data channels  215 . For example, a single data channel  215  may be configured to couple a single cell region  220  to the host device. The pins of the I/O area may be configured to couple multiple cell regions  220  of the memory die  200  to power, ground, virtual ground, and/or other supporting components. 
     To provide a high throughput of data (e.g., multiple TB/s) between a host device (not shown) and the memory die  200 , a path length between any given memory cell and the host interface may be shortened, as compared to previous solutions. In addition, shortening the data path between any given memory cell and the host device may also reduce the power consumed during an access operation (e.g., read operation or write operation) of that given memory cell. Different architectures and/or strategies may be employed to reduce the size of the data path. 
     In some examples, the memory die  200  may be partitioned into a plurality of cell regions  220 . Each cell region  220  may be associated with a data channel  215 . Two different types of cell region  220  are illustrated, but the entire memory die  200  may be populated with any quantity of cell regions  220  having any shape. A cell region  220  may include a plurality of banks  205  of memory cells. There may be any quantity of banks  205  in a cell region  220 . For example, the memory die  200  illustrates a first cell region  220  that includes eight banks  205  and a second cell region  220 - a  that includes sixteen banks  205 - a . Other quantities of banks in the cell region are possible, however (e.g., two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen, twenty, twenty-one, twenty-two, twenty-three, twenty-four, twenty-five, twenty-six, twenty-seven, twenty-eight, twenty-nine, thirty, thirty-one, thirty-two, etc.). The size of the cell region  220  may be selected based on the bandwidth constraints of the host device, the power constraints of the host device or the memory device, the size of the data channel, the type of interposer used to couple the memory die  200  with the host device, a data rate associated with the data channel, other considerations, or combinations thereof. In some cases, the memory die  200  may be partitioned such that each cell region  220  is the same size. In other cases, the memory die  200  may be partitioned such that the memory die  200  has cell regions  220  of different sizes. 
     A data channel  215  (associated with a cell region) may include pins for coupling the memory cells of the cell region  220  with the host device. At least a portion of the data channel  215  may comprise channels of the interposer. The data channel  215  may include a data width specifying how many data pins  225  (sometimes referenced as DQ pins) are in the data channel  215 . The quantity of pins in the data channel  215  may be based on the quantity of layers in the memory device because a single data channel  215  may be configured to couple with multiple layers. For example, a data channel may have a channel width of two data pins (e.g., X2 channel), four data pins (e.g., X4 channel), eight data pins (e.g., X8 channel), sixteen data pins (e.g., X16 channel), etc. The data channel may also include at least one command/address (C/A) pin  230 . Each memory cell in the cell region  220  may be configured to transfer data to and from the host device using the pins  225 ,  230  associated with the cell region  220 . The data channel  215  may also include a clock pin (e.g., CLK) and/or a register clock pin (e.g., RLCK). In some cases, the data channel  215  may include an ECC pin (not shown) for facilitating error detection and correction procedures. 
     In some cases, the I/O area  210  may bisect the banks  205  of memory cells in the cell region  220 . In this manner, the data path for any individual memory cell may be shortened. The C/A pin  230  may be configured to communicate command frames between the memory die  200  and the host device. 
     The memory die  200  may receive a read command followed by a write command (e.g., via the C/A pin  230 ) from the host device. The read command may identify read data to be retrieved from memory cells and communicated to the host device, for example via the data pins  225 . Similarly, the write command may identify write data to be received from the host device (e.g., via the data pins  225 ) and written to memory cells. The read data may have an associated read latency, and the write data may have an associated write latency. The write command and the write data may have the same delay path from the host device to the data channel  215 , and so the write latency may include a discrete quantity of frame periods. In some examples, the write latency may be established by the host device and indicated to the memory device. The read latency, on the other hand, may include an additional circuit delay associated with accessing the read data from the memory cells. The total read latency may thus include a discrete portion indicated by the host device, along with the additional circuit delay. This may create a problem for read-to-write timing on the data channel  215 . For example, if the write latency is programmed to allow the write data to arrive at the memory die  200  immediately following transmission of the read data, the additional circuit delay included in the read latency may result in contention on the data channel  215  between the read data and the write data. 
     To avoid the contention, an offset latency may be added to the write latency associated with the write data on the data channel  215 . The offset latency may correspond to an integer quantity of clock periods, which may be less than a frame period of a frame clock. In some examples, the offset latency may be programmed into a mode register of the memory device. In some examples, the host device may determine the offset latency during an initialization and training of the data channel  215 , and the offset latency may be programmed into the mode register based on the training. Determining the offset latency may improve communications reliability between the memory die  200  and the host device, among other benefits. 
       FIG. 3  illustrates an example of a structure  300  for a frame training procedure that supports latency offset for frame-based communications in accordance with examples as disclosed herein. The structure  300  shows two instances (e.g., a first instance  305  and a second instance  310 ) of a training pattern  315 . Each instance  305 ,  310  shows a step in the frame training procedure. A frame may refer to a unit of data communicated between a host device and a memory device. The frame may include a quantity of bits communicated after an identified frame boundary. In some cases, a frame may be referred to as a packet. 
     The frame training procedure is a process by which the memory device identifies a correct frame boundary. With the frame boundary, the memory device may generate a frame clock, which is used to identify frame boundaries (i.e., the start and stop of a frame) during an entire active session. The frame clock may be based on a system clock, a symbol length, and a frame length. In some examples, the system clock may be a write clock (WCK) at a host device. In some cases, the frame clock is a virtual clock that relies on the system clock for its timing. In other cases, the frame clock is a physical clock that is initialized to track the frames. 
     The training pattern  315  comprises a long train of symbols  320  that are set to predetermined symbol values used to identify a frame boundary. The training pattern  315  may comprise a plurality of training frames  325 , each training frame  325  comprising an ordered set of predetermined symbol values  330 . An example of the symbol values may be a set of logic ‘1’s followed by a set of logic ‘0’s, or vice versa. The training frame  325  may have a frame length that is equal to a frame length of the frames transmitted by the host device during the active session. Using a plurality of training frames, the memory device may be configured to determine a frame boundary  335  and generate a frame clock that is used to identify the beginning of frames (or the end as the case may be) during the active session. 
     During the activation time period and as part of a frame training procedure, the host device may transmit the training pattern  315  to the memory device. The memory device may determine when the training pattern is being transmitted so that it may be ready to initialize the frame training procedure. 
     As shown in the first instance,  305 , upon receiving the training pattern  315 , the memory device identify a symbol of the training pattern as a first frame boundary estimate  340 . Using the first frame boundary estimate and/or a known frame length, the memory device may generate a first frame estimate  345 . The first frame estimate  345  include a quantity of symbols of the training pattern  315  equal to the frame length of a training frame  325 . The memory device may identify the ordered set of symbols of the first frame estimate  345 . The memory device may compare the ordered set of symbols of the first frame estimate  345  to the ordered set of predetermined symbol values  330 . 
     If the ordered set of symbols of the first frame estimate  345  matches the ordered set of predetermined symbol values  330 , the memory device may identify the rising edge of the symbol that comprises the first frame boundary estimate  340  as the frame boundary. If the sets do not match, the memory device may a second frame boundary estimate  350  and a second frame estimate  355  as shown in the second instance  310 . The memory device may then repeat the same process of comparing the set of symbol values in the second frame estimate  355  to the ordered set of predetermined symbol values  330 . This process may continue until a correct frame boundary is found. 
     In some cases, the difference between the first frame boundary estimate  340  and the second frame boundary estimate  350  may be one symbol. In such cases, the memory device may slip the boundary estimate one symbol upon determining that the frame boundary is not correct. In other cases, the memory device may select the second frame boundary estimate  350  based on a predetermined symbol distance (e.g., one, two, three, four, five, six symbols, etc.). In some cases, the memory device may select the second frame boundary estimate based on the ordered set of symbol values found in the first frame estimate  345 . For example, if the memory device knows that the predetermined set of symbol values is 111000 and the set of symbol values of the first frame estimate  345  is 001110, the memory device may identify the third symbol of the first frame estimate  345  as the second frame boundary estimate  350 . 
     Once the memory device identifies the correct frame boundary, the memory device may generate a frame clock based on the frame synchronization process. The frame clock may indicate the beginning of a new frame through the active session. Using the frame clock, the memory device and the host device may not need to use headers to indicate the location of frames, thereby freeing up more symbols for substantive data. In some cases, the frame boundary may be aligned with a rising edge of a first symbol (or a first symbol period) in the frame. As such, the frame clock may also be aligned with a rising edge of the symbol period of the frame. 
     The memory device may use the generated frame clock for processing commands and data from the host device. However, an RCK, which may be used for timing a transmission of data from the memory device to the host device, may not be aligned with the generated frame clock, for example due to a circuit delay within the memory device. This may lead to data contention on a bidirectional bus between the host device and the memory device. For example, the memory device may receive a read command identifying read data, followed by a write command identifying write data. The read command may indicate the read data is to be transmitted to the host device after a quantity of frames following the read command, where the quantity of frames may correspond to a read latency. Similarly, the write command may indicate the write data is to be received from the host device after a quantity of frames following the write command, where the quantity of frames may correspond to a write latency. In some examples, such as when the write command immediately follows the read command, the write latency may be one frame greater than the read latency. The write latency and the commands may have the same delay path from the host device to the memory device, and so the write latency may be aligned with the generated frame clock. The read latency may also be based on the generated frame clock, and so may not include the circuit delay at the memory device. As a result, the frames in which the memory device transmits the read data may overlap with the frames in which the memory device is to receive the write data, which may lead to contention on the data bus and reduce reliability of communications between the host device and the memory device. 
     To reduce the data bus contention and improve communications reliability, the memory device may determine an additional offset latency to add to the write latency. The offset latency may correspond to an integer quantity of clock periods of the system clock (e.g., the WCK), and may be less than a frame period of the generated frame clock. In some examples, the memory device and the host device may determine the offset latency during the frame training procedure. Additionally or alternatively, the offset latency may be programmed into a mode register of the memory device. For example, as part of the frame training procedure (or based on the training procedure), the host device or the memory device may write the offset latency into the mode register of the memory device. Subsequently, when the memory device receives the read command and the write command, the memory device may retrieve the offset latency programmed into the mode register as part of determining the latencies associated with the commands. 
       FIG. 4  illustrates an example of a process flow  400  that supports latency offset for frame-based communications in accordance with examples as disclosed herein. In some examples, the process flow  400  may illustrate implementation of aspects of the device  100  and the memory die  200  as described with reference to  FIGS. 1 and 2 . For example, the process flow  400  may include example transmissions or operations associated with one or more of a host device  405  and a memory device  410 , which may be examples of the corresponding devices described with reference to  FIGS. 1 and 2 . In the following description of the process flow  400 , the transmissions between the host device  405  and the memory device  410  may be transmitted in a different order than the example order shown, or the operations performed by the host device  405  and the memory device  410  may be performed in different orders or at different times. Some transmissions or operations may also be omitted from the process flow  400 , and other transmissions or operations may be added to the process flow  400 . The transmissions and operations performed by the host device  405  and the memory device  410  may support improvement to the memory device  410  operations and, in some examples, may promote improvements to communication reliability between the host device  405  and the memory device  410 , among other benefits. In some examples, the process flow  400  may implement aspects of a read-modify-write command. 
     At  415  the host device  405  and the memory device  410  may jointly perform a training procedure. For example, the host device  405  may initiate a frame training procedure at the memory device  410  as described with reference to  FIG. 3 . Based on the training procedure, the memory device  410  may generate a frame clock for processing commands and data from the host device  405 . 
     At  420 , the host device  405  may transmit a read command and a write command to the memory device  410 . The read command and write command may both be part of a read-modify-write command where the host device  405  reads data in the memory device  410 , may modify that data, and writes that data (modified or not) back to the memory device  410  immediately after. Because of the close proximity in time of the read command and the write command, delays and offsets may be used to ensure that there are no collisions on the data bus. The features described in In some examples, the memory device  410  may receive the read command in a first frame period and the write command in a second frame period. The write command may immediately follow the read command. In some examples, the read command and the write command may be combined in a read-write command from the host device  405 . 
     In some examples, at  425  the memory device  410  may align the generated frame clock based on the frame periods associated with the read command and the write command. That is, the memory device  410  may use the frame periods to maintain frame clock alignment with the host device  405 . 
     At  430 , the memory device  410  may determine latencies for data associated with the received commands. That is, the memory device  410  may determine a read latency associated with read data transmitted from the memory device  410  to the host device  405 . Similarly, the memory device  410  may determine a write latency associated with write data transmitted from the host device  405  to the memory device  410 . In some examples, the write latency may be programmed to allow the write data to arrive at the memory device  410  immediately following transmission of the read data, to enable efficient utilization of a data bus between the memory device  410  and the host device  405 . The write latency may include an integer quantity of frame periods of the frame clock. The read latency may similarly be programmed as an integer quantity of frame periods, but a delay through circuitry on the memory device  410  and the host device  405  may arrive at a time after the programmed latency. Because the additional circuit delay may be unknown, this may lead to contention between the read data and the write data on a data bus. 
     To reduce the data bus contention and improve communications reliability, the memory device  410  may determine an additional offset latency to add to the write latency. The offset latency may correspond to an integer quantity of clock periods of a system clock (e.g., a WCK), and may be less than a frame period of the generated frame clock at the memory device  410 . In some examples, the memory device  410  and the host device  405  may determine the offset latency during the frame training procedure. Additionally or alternatively, the offset latency may be programmed into a mode register of the memory device  410 . 
     At  435 , the memory device  410  may transmit the read data to the host device  405  following the programmed read latency and the additional circuit delay. The read data may be transmitted in frames aligned to a clock at the memory device  410  (e.g., an RCK). At  440 , the host device  405  may transmit the write data to the memory device  410  following the programmed write latency and the offset latency. The offset latency timing may improve communications efficiency between the memory device  410  and the host device  405 , among other benefits. 
       FIG. 5  illustrates an example of a timing diagram  500  that supports latency offset for frame-based communications in accordance with examples as disclosed herein. The timing diagram  500  may include aspects as described with reference to  FIGS. 1 and 2 . For example, the signals shown in the timing diagram  500  may correspond to signals generated by a memory device or a host device, which may be examples of corresponding devices described with reference to  FIGS. 1 and 2 . The timing diagram  500  may illustrate signals of a WCK  505 , a command bus  510 , a DQ bus  515 , a frame clock  520 , and an RCK  525 . 
     Commands and data may be transmitted in frames (e.g., packets) based on a reference frame clock generated by the host device (e.g., a memory controller). The frame clock may be implied by the boundaries of the fixed length. The memory device (which may be a DRAM) may be initialized and trained by the host device to align to the reference frame clock boundaries with the frame clock  520  reproduced internally at the memory device. The frame clock itself may not be transmitted between the host device and the memory device, but the frame clock may be implied by the frame boundaries during frame training as the memory device adjusts its internally generated frame clock  520  to a predetermined, repeating a training frame. After frame clock training (which may include the frame training procedure described with reference to  FIG. 3 ), a read data discrete latency and a write data discrete latency (e.g., a time from a write/read command to data on the DQ bus  515 ), expressed as a quantity of frame cycles, may be programmed into latency mode registers of the memory device based on data sheet specifications or system requirements. In some examples, the memory device and the host device may use a data strobe clock and a command clock (not shown) for capturing data and commands respectively at input circuits of the memory device. Write latency may be measured as a discrete quantity of command clock cycles because the command clock may be a continuous reference, while the data strobe clock may be aperiodic. Write latency in a two-clock system may use training procedures so that the host device may align the data strobe clock with the command clock at internal points in a logic path of the memory device so that an expected data arrival time, referenced to the command clock, coincides with the corresponding first data edge of the data strobe clock in the data path of the memory device. 
     As illustrated in  FIG. 5 , a single clock (e.g., the WCK  505 ) may be used to capture both command and write data. The RCK  525  may represent the read return clock, which may be phase aligned to read data from the memory device to the host device. Command and data may be aligned to the same data capture clock at the memory device. The host device may use the same frame clock reference for both write data and commands, which may align unit intervals (UIs) and frame clock boundaries between commands and write data internally at the memory device. As a part of UI training, the WCK  505  may be aligned to the center of a valid data “eye” for command and data. Once UI training has been completed, frame clock training may occur for the command bus  510 . During frame clock training, the memory device may make UI adjustments and internally generate a corresponding frame clock  520  until the captured frames match a predetermined data pattern sent from the host device, for example as described with reference to  FIG. 3 . The host device reference frame clock (not shown) may synchronize command and data frames so that command and data frames are aligned at the memory device. A method for checking that data and command frames are aligned when transmitted to the memory device may be included in a training algorithm to ensure correct operation. For example, the training algorithm may include checking that a predefined pattern is properly received on both the DQ bus  515  and the command bus  510 . With frame clock aligned for data and command timing at the memory device, write data latency may be directly timed at the memory device by a discrete numerical quantity of frame clock cycles. 
     In some examples, the memory device may determine an additional offset latency, which may be added to the write data latency associated with a write command in order to avoid bus contention between read data from the memory device and write data from the host device. The offset latency may correspond to an integer quantity of clock periods of the WCK  505 , which may be less than a frame period of the generated frame clock  520 . Determining the offset latency may improve communications reliability between the memory device and the host device, among other benefits. 
       FIGS. 6A and 6B  illustrate an example system and circuitry that support latency offset for frame-based communications in accordance with examples as disclosed herein. The system may include circuitry of a host device  600  and circuitry of a memory device  601 , which may be examples of the corresponding devices described with reference to  FIGS. 1 and 2 . 
     The frame-based protocol described herein may reduce pin count and simplify communications between the host device  600  and the memory device  601  by not adding clock synchronization circuitry (e.g., phase lock loop (PLL) circuitry, delay lock loop (DLL) circuitry, etc.) to a logic path of the memory device  601 . In some examples, the clock synchronization circuitry may internally align the launch of an output clock of the memory device  601  (e.g., an RCK  605 ) so that read data aligns to a continuously running command clock. This may allow the host device  600  to time read data latency based on a discrete numerical quantity of command clock cycles. However, the clock synchronization circuitry may consume power and area, and in some examples may complicate output timing from the memory device  601 . Further, including independent PLL or DLL circuits for each channel in a multi-channel memory device  601  may not be feasible due to limitations on power, area, complexity, etc. 
     In some examples, a host device  600  may use burst strobes that indicate data arrival when toggles on the strobe signals are detected. However, these types of interfaces may use several training cycles to align the transmitting and receiving data for UI capture and have data latency that is referenced to a continuously running command clock. These interfaces may also align strobe transitions to the command clock for deterministic latency. 
     For the frame clock-based latency and frame alignment described herein, a reference frame clock  610 - a  for commands and data transmitted to the memory device  601  may be continuous following UI and frame clock training to maintain frame clock alignment. The reference frame clock  610 - a  may be generated using circuitry  615 - a . The frame clock training may include the frame training procedure described with reference to  FIG. 3 . The frame clock implied in the read return data to the host device  600  may not have a direct timing relationship to a command and write data reference frame clock  610 - b  used for communication from the host device  600  to the memory device  601 . 
     Read data latency (e.g., latency associated with data transmitted from the memory device  601  to the host device  600  following a read command) may be complicated by the lack of a frame clock reference between the frame clock  610 - a  at the memory device  601  and data capture circuits  620  at the host device  600 . The frame clock  610 - a  may be based on the reference frame clock  610 - b  generated using circuitry  615 - b  at the host device  600 , but a phase relationship between the frame clock  610 - a  and the reference frame clock  610 - b  may be ambiguous due to an I/O delay and clock distribution delays through the memory device  601 . In one example, the memory device  601  may transmit training frames to the host device  600 , which the host device  600  may use to generate a frame clock  610 - c  using circuitry  615 - c . The frame clock  610 - c  may not be aligned with the reference frame clock  610 - b , but the frame clock  610 - c  may align to frame boundaries of the read data. The host device  600  may then track the read latency in frame cycles following an initial training. This may be accomplished using clock domain crossing techniques at the host device  600  between the reference frame clock  610 - b  and the data receive frame clock  610 - c.    
       FIG. 7  illustrates an example of a timing diagram  700  that supports latency offset for frame-based communications in accordance with examples as disclosed herein. The timing diagram  700  may include aspects as described with reference to  FIGS. 1, 2, and 6 . For example, the signals shown in the timing diagram  700  may correspond to signals generated by a memory device or a host device, which may be examples of corresponding devices described with reference to  FIGS. 1, 2, and 6 . The timing diagram  700  may illustrate signals of WCKs  705 , frame clocks  710 , DQ buses  715 , and RCKs  720 . 
     The timing diagram  700  may illustrate delays for read return data driven from a memory device to a host device. The host device may issue a read command to the memory device through a serialization circuit, as illustrated in  FIG. 6A . The read command may be included in a command frame  725 . A delay between issuing the command frame  725  at the host device and receiving the command frame  725  at the memory device may be defined as tACh. Deserialization and receiver delay at the memory device may be defined as tDIN. The memory device may decode the command frame  725  and issue an array access. The memory device may wait according to a programmed latency RL×tFP, where tFP may be defined as a period of a frame clock  710  (e.g., 16 UI). Once the programmed latency expires, the memory device may drive data and the RCK  720  to the host device with a delay tACd. The read latency may be programmed as a discrete numerical quantity of frame periods, but the delay through circuitry on the memory device and the host device may be such that the read data may arrive at a time tDL (e.g., a sum of the circuit delays) after the programmed latency, as illustrated in  FIG. 7 . The programmed, discrete portion of read latency may be configured to mask a variation of array access delay. Through initialization training (e.g., the frame training procedure described with reference to  FIG. 3 ), the host device may adjust a generated frame clock  710 - c  based on the timing of the RCK  720  to align with the frame boundaries driven from the memory device. The RCK  720  and the WCK  705  may run continuously following the frame training sequence to maintain the frame boundary relationships for communication between the memory device and the host device. 
     In some examples, the circuit delay tDL may lead to data contention on the DQ bus  715 . For example, if a write latency is programmed to allow write data to arrive at the memory device immediately following transmission of the read data, the additional circuit delay included in the read latency may result in contention between the read data and the write data on the DQ bus  715 . Such scenarios may occur with read-modify-write commands. To reduce the data bus contention and improve communications reliability, the memory device may determine an additional offset latency to add to the write latency. The offset latency may correspond to an integer quantity of clock periods of the WCK  705 , and may be less than a frame period of the generated frame clock  710 - b . In some examples, the memory device and the host device may determine the offset latency during a frame training procedure. Additionally or alternatively, the offset latency may be programmed into a mode register of the memory device. 
       FIG. 8  illustrates an example of a timing diagram  800  that supports latency offset for frame-based communications in accordance with examples as disclosed herein. The timing diagram  800  may include aspects as described with reference to  FIGS. 1, 2, and 6 . For example, the signals shown in the timing diagram  800  may correspond to signals generated by a memory device or a host device, which may be examples of corresponding devices described with reference to  FIGS. 1, 2, and 6 . The timing diagram  800  may illustrate signals of a WCK  805 , a command bus  810 , a DQ bus  815 , an RCK  820 , and frame clocks  825 . 
     A memory device may receive a read command identifying read data, followed by a write command identifying write data. The commands may be received on the command bus  810 . The read command may indicate the read data is to be transmitted to the host device (e.g., on the DQ bus  815 ) after a quantity of frames following the read command, where the quantity of frames may correspond to a read latency (illustrated in  FIG. 8  as RL). Similarly, the write command may indicate the write data is to be received from the host device after a quantity of frames following the write command, where the quantity of frames may correspond to a write latency (illustrated in  FIG. 8  as WL). The write latency may be interpreted to arrive at the memory device based on a discrete numerical quantity of frame periods without any included circuit delay because the command and data see the same delay path into the memory device (e.g., via the command bus  810  and the DQ bus  815 , respectively). The latency count established at the host device may be transmitted to the memory device. However, for read latency, the direct connection to the discrete portion of latency may be disconnected from the host device by the circuit delay tDL of the data access at the memory device. This may create a problem for read-to-write timing on the DQ bus  815 . For example, if the write latency is programmed to allow the write data to arrive at a time  830 - a  immediately following the read data, the unknown circuit delay added to the read latency may result in bus contention between the read data and the write data. 
     In some examples, the write latency may be configured so that the write latency is a multiple integer of frame cycles after the read data to avoid the tDL delay added to the read latency. In such examples, the write latency may be configured as an integer of frame periods of the frame clock  825 , such that the write data may arrive at a time  830 - b . This may result in more data delay than is needed to avoid contention on the DQ bus  815  for read-to-write timing. 
     Because the WCK  805  is phase aligned to write data and the reference frame clock  825 - a  is based on the WCK  805 , the WCK  805  may also serve as a timing reference for the write latency. The WCK  805  may enable a sub-frame delay for the write latency, which may be referred to as an offset latency. The offset latency may be defined as an integer numerical quantity of periods of the WCK  805  to add to the write latency to avoid contention for read-to-write timing on the bi-directional DQ bus  815 . Based on adding the offset latency to the write latency, the write data may arrive at a time  830 - c . This may result in more efficient bus utilization, as there may be less dead time on the DQ bus  815 . This may in turn improve communications efficiency between the memory device and the host device, among other benefits. 
     The offset latency may be programmed into a mode register on the memory device. The host device may align write data based on the numerical quantity of periods of the WCK  805  in the offset latency in addition to the write latency programmed based on the frame clock  825 - a . The offset latency may be programmed as an integer numerical quantity of periods or as an integer numerical quantity of UIs, which may allow for half cycle granularity with respect the WCK  805 . The host device may determine the numerical quantity of offset cycles during the initialization and training of the communications channel, which may include the frame training procedure described with reference to  FIG. 3 . In one example, the offset latency may be determined by reading a pattern (e.g., a sequence of a same logic value, such as a logic 0 or a logic 1) from the memory device. The host device may estimate a numerical quantity of subframes (which may possibly be more than a period of the frame clock  825 ) when the read data arrives after the discrete, programmed read latency. The host device may then set the write offset latency to a value in order to avoid data contention. The offset latency may not apply to read latency, as read latency may have a non-deterministic component, and adding a subframe cycle granularity may not address this issue. Write-to-read latency may be dependent on write recovery time at the memory device and so may not be limited by efficiency of the DQ bus  815  in the same manner as read-to-write latency. 
       FIG. 9  shows a block diagram  900  of a memory device  905  that supports latency offset for frame-based communications in accordance with examples as disclosed herein. The memory device  905  may be an example of aspects of a memory device as described with reference to  FIGS. 1-8 . The memory device  905  may include a command receiving component  910 , a read latency manager  915 , a write latency manager  920 , an offset latency manager  925 , a write data manager  930 , a frame clock manager  935 , and a read data manager  940 . Each of these modules may communicate, directly or indirectly, with one another (e.g., via one or more buses). 
     The command receiving component  910  may receive, from a host device, a read command and a write command after receiving the read command. In some examples, the command receiving component  910  may receive the read command at a first frame period. In some examples, the command receiving component  910  may receive the write command at a second frame period different than the first frame period. In some cases, the second frame period may immediately follow the first frame period and the read command and the write command include a read-write command. 
     The read latency manager  915  may determine, for the read command, a read latency that includes a first integer quantity of frame periods of a frame clock at the memory device, where each frame period includes a second integer quantity of unit intervals of a first clock. 
     The write latency manager  920  may determine, for the write command, a write latency that includes a third integer quantity of frame periods of the frame clock greater than the first integer quantity. In some cases, the third integer quantity may be one number greater than the first integer quantity. 
     The offset latency manager  925  may determine, for the write command, an offset latency that includes a fourth integer quantity of unit intervals of the first clock, where the fourth integer quantity is less than the second integer quantity of unit intervals in a single frame period of the frame clock. In some examples, the offset latency manager  925  may retrieve the offset latency from a mode register of the memory device  905 , where determining the offset latency may be based on retrieving the offset latency from the mode register. In some cases, the offset latency is determined as part of a training procedure associated with the data bus. In some examples, the offset latency manager  925  may program the offset latency to a mode register of the memory device  905  based on the training procedure. In some cases, the offset latency includes a fifth integer quantity of unit intervals of the first clock. 
     The write data manager  930  may write data associated with the write command at a frame period of the frame clock based on the write latency and the offset latency. In some examples, the write data manager  930  may write the write data to one or more memory cells of the memory device based on the write command. 
     The frame clock manager  935  may align the frame clock at the memory device  905  with the first frame period and the second frame period. In some cases, the first clock includes a write clock. 
     The read data manager  940  may retrieve read data associated with the read command from the one or more memory cells of the memory device  905 . In some examples, the read data manager  940  may transmit, to the host device over the data bus, the read data at a frame period of the frame clock based on the read latency. 
       FIG. 10  shows a block diagram  1000  of a host device  1005  that supports latency offset for frame-based communications in accordance with examples as disclosed herein. The host device  1005  may be an example of aspects of a host device as described with reference to  FIGS. 1-8 . The host device  1005  may include a command transmission component  1010 , a read latency component  1015 , a write latency component  1020 , an offset latency component  1025 , a write data component  1030 , and a read data component  1035 . Each of these modules may communicate, directly or indirectly, with one another (e.g., via one or more buses). 
     The command transmission component  1010  may transmit, to a memory device, a read command and a write command after transmitting the read command. In some examples, the command transmission component  1010  may transmit the read command at a first frame period. In some examples, the command transmission component  1010  may transmit the write command at a second frame period different than the first frame period. In some cases, the second frame period immediately follows the first frame period and the read command and the write command include a read-write command. 
     The read latency component  1015  may determine, for the read command, a read latency that includes a first integer quantity of frame periods of a frame clock, where each frame period includes a second integer quantity of unit intervals of a first clock. In some cases, the first clock includes a write clock. 
     The write latency component  1020  may determine, for the write command, a write latency that includes a third integer quantity of frame periods of the frame clock greater than the first integer quantity. In some cases, the third integer quantity may be one number greater than the first integer quantity. 
     The offset latency component  1025  may determine, for the write command, an offset latency that includes a fourth integer quantity of unit intervals of the first clock, where the fourth integer quantity is less than the second integer quantity of unit intervals in a single frame period of the frame clock. In some cases, the offset latency is determined as part of a training procedure associated with the data bus. In some cases, the offset latency is retrieved from a mode register of the memory device. In some cases, the offset latency includes a fifth integer quantity of unit intervals of the first clock. 
     The write data component  1030  may transmit, to the memory device, write data associated with the write command, where the write data is received at a frame period based on the write latency and the offset latency. In some cases, the write data associated with the write command is transmitted over a data bus. 
     The read data component  1035  may receive, from the memory device over the data bus, read data associated with the read command at a frame period of the frame clock based on the read latency. 
       FIG. 11  shows a flowchart illustrating a method or methods  1100  that supports latency offset for frame-based communications in accordance with examples as disclosed herein. The operations of method  1100  may be implemented by a memory device or its components as described herein. For example, the operations of method  1100  may be performed by a memory device as described with reference to  FIG. 9 . In some examples, a memory device may execute a set of instructions to control the functional elements of the memory device to perform the described functions. Additionally or alternatively, a memory device may perform aspects of the described functions using special-purpose hardware. 
     At  1105 , the memory device may receive, from a host device, a read command and a write command after receiving the read command. The operations of  1105  may be performed according to the methods described herein. In some examples, aspects of the operations of  1105  may be performed by a command receiving component as described with reference to  FIG. 9 . 
     At  1110 , the memory device may determine, for the read command, a read latency that includes a first integer quantity of frame periods of a frame clock at the memory device, where each frame period includes a second integer quantity of unit intervals of a first clock. The operations of  1110  may be performed according to the methods described herein. In some examples, aspects of the operations of  1110  may be performed by a read latency manager as described with reference to  FIG. 9 . 
     At  1115 , the memory device may determine, for the write command, a write latency that includes a third integer quantity of frame periods of the frame clock greater than the first integer quantity. The operations of  1115  may be performed according to the methods described herein. In some examples, aspects of the operations of  1115  may be performed by a write latency manager as described with reference to  FIG. 9 . 
     At  1120 , the memory device may determine, for the write command, an offset latency that includes a fourth integer quantity of unit intervals of the first clock, where the fourth integer quantity is less than the second integer quantity of unit intervals in a single frame period of the frame clock. The operations of  1120  may be performed according to the methods described herein. In some examples, aspects of the operations of  1120  may be performed by an offset latency manager as described with reference to  FIG. 9 . 
     At  1125 , the memory device may write data associated with the write command at a frame period of the frame clock based on the write latency and the offset latency. The operations of  1125  may be performed according to the methods described herein. In some examples, aspects of the operations of  1125  may be performed by a write data manager as described with reference to  FIG. 9 . 
     In some examples, an apparatus as described herein may perform a method or methods, such as the method  1100 . The apparatus may include features, means, or instructions (e.g., a non-transitory computer-readable medium storing instructions executable by a processor) for receiving, from a host device, a read command and a write command after receiving the read command, determining, for the read command, a read latency that includes a first integer quantity of frame periods of a frame clock at the apparatus, where each frame period includes a second integer quantity of unit intervals of a first clock, determining, for the write command, a write latency that includes a third integer quantity of frame periods of the frame clock greater than the first integer quantity, determining, for the write command, an offset latency that includes a fourth integer quantity of unit intervals of the first clock, where the fourth integer quantity is less than the second integer quantity of unit intervals in a single frame period of the frame clock, and writing data associated with the write command at a frame period of the frame clock based on the write latency and the offset latency. 
     Some examples of the method  1100  and the apparatus described herein may further include operations, features, means, or instructions for receiving the read command at a first frame period, and receiving the write command at a second frame period different than the first frame period. Some examples of the method  1100  and the apparatus described herein may further include operations, features, means, or instructions for aligning the frame clock with the first frame period and the second frame period. 
     In some examples of the method  1100  and the apparatus described herein, the second frame period immediately follows the first frame period and the read command and the write command include a read-write command. Some examples of the method  1100  and the apparatus described herein may further include operations, features, means, or instructions for receiving the write data associated with the write command over a data bus between the apparatus and the host device. 
     Some examples of the method  1100  and the apparatus described herein may further include operations, features, means, or instructions for retrieving read data associated with the read command from the one or more memory cells of the array of memory cells, and transmitting, to the host device over the data bus, the read data at a second frame period of the frame clock based on the read latency. In some examples of the method  1100  and the apparatus described herein, the offset latency may be determined as part of a training procedure associated with the data bus. Some examples of the method  1100  and the apparatus described herein may further include operations, features, means, or instructions for programming the offset latency to a mode register of the memory device based on the training procedure. 
     In some examples of the method  1100  and the apparatus described herein, the first clock includes a write clock. In some examples of the method  1100  and the apparatus described herein, the third integer quantity may be one number greater than the first integer quantity. Some examples of the method  1100  and the apparatus described herein may further include operations, features, means, or instructions for retrieving the offset latency from a mode register of the apparatus, where determining the offset latency may be based on retrieving the offset latency from the mode register. In some examples of the method  1100  and the apparatus described herein, the offset latency includes a fifth integer quantity of unit intervals of the first clock. 
       FIG. 12  shows a flowchart illustrating a method or methods  1200  that supports latency offset for frame-based communications in accordance with examples as disclosed herein. The operations of method  1200  may be implemented by a host device or its components as described herein. For example, the operations of method  1200  may be performed by a host device as described with reference to  FIG. 10 . In some examples, a host device may execute a set of instructions to control the functional elements of the host device to perform the described functions. Additionally or alternatively, a host device may perform aspects of the described functions using special-purpose hardware. 
     At  1205 , the host device may transmit, to a memory device, a read command and a write command after transmitting the read command. The operations of  1205  may be performed according to the methods described herein. In some examples, aspects of the operations of  1205  may be performed by a command transmission component as described with reference to  FIG. 10 . 
     At  1210 , the host device may determine, for the read command, a read latency that includes a first integer quantity of frame periods of a frame clock, where each frame period includes a second integer quantity of unit intervals of a first clock. The operations of  1210  may be performed according to the methods described herein. In some examples, aspects of the operations of  1210  may be performed by a read latency component as described with reference to  FIG. 10 . 
     At  1215 , the host device may determine, for the write command, a write latency that includes a third integer quantity of frame periods of the frame clock greater than the first integer quantity. The operations of  1215  may be performed according to the methods described herein. In some examples, aspects of the operations of  1215  may be performed by a write latency component as described with reference to  FIG. 10 . 
     At  1220 , the host device may determine, for the write command, an offset latency that includes a fourth integer quantity of unit intervals of the first clock, where the fourth integer quantity is less than the second integer quantity of unit intervals in a single frame period of the frame clock. The operations of  1220  may be performed according to the methods described herein. In some examples, aspects of the operations of  1220  may be performed by an offset latency component as described with reference to  FIG. 10 . 
     At  1225 , the host device may transmit, to the memory device, write data associated with the write command, where the write data is received at a frame period based on the write latency and the offset latency. The operations of  1225  may be performed according to the methods described herein. In some examples, aspects of the operations of  1225  may be performed by a write data component as described with reference to  FIG. 10 . 
     In some examples, an apparatus as described herein may perform a method or methods, such as the method  1200 . The apparatus may include features, means, or instructions (e.g., a non-transitory computer-readable medium storing instructions executable by a processor) for transmitting, o a memory device, a read command and a write command after transmitting the read command, determining, for the read command, a read latency that includes a first integer quantity of frame periods of a frame clock, where each frame period includes a second integer quantity of unit intervals of a first clock, determining, for the write command, a write latency that includes a third integer quantity of frame periods of the frame clock greater than the first integer quantity, determining, for the write command, an offset latency that includes a fourth integer quantity of unit intervals of the first clock, where the fourth integer quantity is less than the second integer quantity of unit intervals in a single frame period of the frame clock, and transmitting, to the memory device, write data associated with the write command, where the write data is received at a frame period based on the write latency and the offset latency. 
     Some examples of the method  1200  and the apparatus described herein may further include operations, features, means, or instructions for transmitting the read command at a first frame period, and transmitting the write command at a second frame period different than the first frame period. In some examples of the method  1200  and the apparatus described herein, the second frame period immediately follows the first frame period and the read command and the write command include a read-write command. In some examples of the method  1200  and the apparatus described herein, the write data associated with the write command may be transmitted over a data bus. 
     Some examples of the method  1200  and the apparatus described herein may further include operations, features, means, or instructions for receiving, from the memory device over the data bus, read data associated with the read command at a second frame period of the frame clock based on the read latency. In some examples of the method  1200  and the apparatus described herein, the offset latency may be determined as part of a training procedure associated with the data bus. 
     In some examples of the method  1200  and the apparatus described herein, the first clock includes a write clock. In some examples of the method  1200  and the apparatus described herein, the third integer quantity may be one number greater than the first integer quantity. In some examples of the method  1200  and the apparatus described herein, the offset latency may be retrieved from a mode register of the memory device. In some examples of the method  1200  and the apparatus described herein, the offset latency includes a fifth integer quantity of unit intervals of the first clock. 
     It should be noted that the methods described herein are possible implementations, and that the operations and the steps may be rearranged or otherwise modified and that other implementations are possible. Furthermore, portions from two or more of the methods may be combined. 
     An apparatus is described. The apparatus may include an array of memory cells and a controller coupled with the array of memory cells, the controller operable to cause the apparatus to receive, from a host device, a read command and a write command after receiving the read command, determine, for the read command, a read latency that includes a first integer quantity of frame periods of a frame clock at the apparatus, where each frame period includes a second integer quantity of unit intervals of a first clock, determine, for the write command, a write latency that includes a third integer quantity of frame periods of the frame clock greater than the first integer quantity, determine, for the write command, an offset latency that includes a fourth integer quantity of unit intervals of the first clock, where the fourth integer quantity is less than the second integer quantity of unit intervals in a single frame period of the frame clock, and receive, from the host device, write data associated with the write command at a frame period of the frame clock based on the write latency and the offset latency. 
     In some examples, the controller may be further operable to cause the apparatus to receive the read command at a first frame period, and receive the write command at a second frame period different than the first frame period. In some examples, the controller may be further operable to cause the apparatus to align the frame clock with the first frame period and the second frame period. In some examples, the second frame period immediately follows the first frame period and the read command and the write command include a read-write command. In some examples, the controller may be further operable to cause the apparatus to receive the write data associated with the write command over a data bus between the apparatus and the host device. 
     In some examples, the controller may be further operable to cause the apparatus to retrieve read data associated with the read command from the one or more memory cells of the array of memory cells, and transmit, to the host device over the data bus, the read data at a frame period of the frame clock based on the read latency. In some examples, the offset latency may be determined as part of a training procedure associated with the data bus. In some examples, the apparatus may further include a mode register, where the controller may be further operable to cause the apparatus to retrieve the offset latency from the mode register, or program the offset latency to the mode register, or both. 
     An apparatus is described. The apparatus may include a processor operable to cause the apparatus to transmit, to a memory device, a read command and a write command after transmitting the read command, determine, for the read command, a read latency that includes a first integer quantity of frame periods of a frame clock, where each frame period includes a second integer quantity of unit intervals of a first clock, determine, for the write command, a write latency that includes a third integer quantity of frame periods of the frame clock greater than the first integer quantity, determine, for the write command, an offset latency that includes a fourth integer quantity of unit intervals of the first clock, where the fourth integer quantity is less than the second integer quantity of unit intervals in a single frame period of the frame clock, and transmit, to the memory device, write data associated with the write command, where the write data is received at a frame period based on the write latency and the offset latency. 
     In some examples, the processor may be further operable to cause the apparatus to transmit the read command at a first frame period, and transmit the write command at a second frame period different than the first frame period. In some examples, the second frame period immediately follows the first frame period and the read command and the write command include a read-write command. In some examples, the write data associated with the write command may be transmitted over a data bus. In some examples, the processor may be further operable to cause the apparatus to receive, from the memory device over the data bus, read data associated with the read command at a frame period of the frame clock based on the read latency. 
     Information and signals described herein may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof. Some drawings may illustrate signals as a single signal; however, it will be understood by a person of ordinary skill in the art that the signal may represent a bus of signals, where the bus may have a variety of bit widths. 
     A system is described. The system may include a host device operable to transmit a read command and a write command after transmitting the read command, determine, for the read command, a read latency that includes a first integer quantity of frame periods of a frame clock, where each frame period includes a second integer quantity of unit intervals of a first clock, determine, for the write command, a write latency that includes a third integer quantity of frame periods of the frame clock greater than the first integer quantity, determine, for the write command, an offset latency that includes a fourth integer quantity of unit intervals of the first clock, where the fourth integer quantity is less than the second integer quantity of unit intervals in a single frame period of the frame clock, and transmit write data associated with the write command. The system may also include a memory device including a plurality of memory cells and operable to receive the read command and the write command after receiving the read command, determine the read latency for the read command, the write latency for the write command, and the offset latency for the write command, and receive the write data associated with the write command at a frame period of the frame clock based at least in part on the write latency and the offset latency. 
     The terms “electronic communication,” “conductive contact,” “connected,” and “coupled” may refer to a relationship between components that supports the flow of signals between the components. Components are considered in electronic communication with (or in conductive contact with or connected with or coupled with) one another if there is any conductive path between the components that can, at any time, support the flow of signals between the components. At any given time, the conductive path between components that are in electronic communication with each other (or in conductive contact with or connected with or coupled with) may be an open circuit or a closed circuit based on the operation of the device that includes the connected components. The conductive path between connected components may be a direct conductive path between the components or the conductive path between connected components may be an indirect conductive path that may include intermediate components, such as switches, transistors, or other components. In some examples, the flow of signals between the connected components may be interrupted for a time, for example, using one or more intermediate components such as switches or transistors. 
     The term “coupling” refers to condition of moving from an open-circuit relationship between components in which signals are not presently capable of being communicated between the components over a conductive path to a closed-circuit relationship between components in which signals can be communicated between components over the conductive path. When a component, such as a controller, couples other components together, the component initiates a change that allows signals to flow between the other components over a conductive path that previously did not permit signals to flow. 
     The term “isolated” refers to a relationship between components in which signals are not presently capable of flowing between the components. Components are isolated from each other if there is an open circuit between them. For example, two components separated by a switch that is positioned between the components are isolated from each other when the switch is open. When a controller isolates two components from one another, the controller affects a change that prevents signals from flowing between the components using a conductive path that previously permitted signals to flow. 
     The term “layer” or “level” used herein refers to a stratum or sheet of a geometrical structure (e.g., relative to a substrate). Each layer or level may have three dimensions (e.g., height, width, and depth) and may cover at least a portion of a surface. For example, a layer or level may be a three dimensional structure where two dimensions are greater than a third, e.g., a thin-film. Layers or levels may include different elements, components, and/or materials. In some examples, one layer or level may be composed of two or more sublayers or sublevels. 
     As used herein, the term “substantially” means that the modified characteristic (e.g., a verb or adjective modified by the term substantially) need not be absolute but is close enough to achieve the advantages of the characteristic. 
     The devices discussed herein, including a memory array, may be formed on a semiconductor substrate, such as silicon, germanium, silicon-germanium alloy, gallium arsenide, gallium nitride, etc. In some examples, the substrate is a semiconductor wafer. In other cases, the substrate may be a silicon-on-insulator (SOI) substrate, such as silicon-on-glass (SOG) or silicon-on-sapphire (SOS), or epitaxial layers of semiconductor materials on another substrate. The conductivity of the substrate, or sub-regions of the substrate, may be controlled through doping using various chemical species including, but not limited to, phosphorous, boron, or arsenic. Doping may be performed during the initial formation or growth of the substrate, by ion-implantation, or by any other doping means. 
     A switching component or a transistor discussed herein may represent a field-effect transistor (FET) and comprise a three terminal device including a source, drain, and gate. The terminals may be connected to other electronic elements through conductive materials, e.g., metals. The source and drain may be conductive and may comprise a heavily-doped, e.g., degenerate, semiconductor region. The source and drain may be separated by a lightly-doped semiconductor region or channel. If the channel is n-type (i.e., majority carriers are electrons), then the FET may be referred to as a n-type FET. If the channel is p-type (i.e., majority carriers are holes), then the FET may be referred to as a p-type FET. The channel may be capped by an insulating gate oxide. The channel conductivity may be controlled by applying a voltage to the gate. For example, applying a positive voltage or negative voltage to an n-type FET or a p-type FET, respectively, may result in the channel becoming conductive. A transistor may be “on” or “activated” when a voltage greater than or equal to the transistor&#39;s threshold voltage is applied to the transistor gate. The transistor may be “off” or “deactivated” when a voltage less than the transistor&#39;s threshold voltage is applied to the transistor gate. 
     The description set forth herein, in connection with the appended drawings, describes example configurations and does not represent all the examples that may be implemented or that are within the scope of the claims. The term “exemplary” used herein means “serving as an example, instance, or illustration,” and not “preferred” or “advantageous over other examples.” The detailed description includes specific details to providing an understanding of the described techniques. These techniques, however, may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form to avoid obscuring the concepts of the described examples. 
     In the appended figures, similar components or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If just the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label. 
     Information and signals described herein may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof. 
     The various illustrative blocks and modules described in connection with the disclosure herein may be implemented or performed with a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration). 
     The functions described herein may be implemented in hardware, software executed by a processor, firmware, or any combination thereof. If implemented in software executed by a processor, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Other examples and implementations are within the scope of the disclosure and appended claims. For example, due to the nature of software, functions described above can be implemented using software executed by a processor, hardware, firmware, hardwiring, or combinations of any of these. Features implementing functions may also be physically located at various positions, including being distributed such that portions of functions are implemented at different physical locations. Also, as used herein, including in the claims, “or” as used in a list of items (for example, a list of items prefaced by a phrase such as “at least one of” or “one or more of”) indicates an inclusive list such that, for example, a list of at least one of A, B, or C means A or B or C or AB or AC or BC or ABC (i.e., A and B and C). Also, as used herein, the phrase “based on” shall not be construed as a reference to a closed set of conditions. For example, an exemplary step that is described as “based on condition A” may be based on both a condition A and a condition B without departing from the scope of the present disclosure. In other words, as used herein, the phrase “based on” shall be construed in the same manner as the phrase “based at least in part on.” 
     Computer-readable media includes both non-transitory computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A non-transitory storage medium may be any available medium that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, non-transitory computer-readable media can comprise RAM, ROM, electrically erasable programmable read-only memory (EEPROM), compact disk (CD) ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other non-transitory medium that can be used to carry or store desired program code means in the form of instructions or data structures and that can be accessed by a general-purpose or special-purpose computer, or a general-purpose or special-purpose processor. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, include CD, laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of computer-readable media. 
     The description herein is provided to enable a person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the scope of the disclosure. Thus, the disclosure is not limited to the examples and designs described herein but is to be accorded the broadest scope consistent with the principles and novel features disclosed herein.