Apparatus and methods for messaging control within die architectures
The timeout mechanism in die architectures addresses data transfer failures by allowing memory devices to manage timeouts and aborts autonomously, enhancing efficiency and reducing system overhead.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-10-03
- Publication Date
- 2026-04-09
AI Technical Summary
Existing die architectures experience data transfer failures that lead to time-consuming reset procedures and indefinite waiting due to inefficient messaging mechanisms, causing devices to fail in completing data transfers.
Implementing a timeout mechanism in die architectures where memory commands include a timeout value, allowing memory devices to initiate a timer and automatically abort or request additional time if the transfer does not complete within the specified time, reducing the need for host controller intervention.
Enhances data transfer efficiency by enabling memory devices to detect and manage failures autonomously, reducing abort procedures and improving handling efficiencies, thus minimizing resource wastage and enhancing system responsiveness.
Smart Images

Figure CN2024123190_09042026_PF_FP_ABST
Abstract
Description
APPARATUS AND METHODS FOR MESSAGING CONTROL WITHIN DIE ARCHITECTURESBACKGROUND
[0001] FIELD OF THE DISCLOSURE
[0002] This disclosure relates generally to die architectures and, more particularly, to messaging control mechanisms within die architectures.
[0003] DESCRIPTION OF RELATED ART
[0004] Dies, such as chiplets and system-on-chips (SoCs) , are used across a multitude of applications, such as telecommunication, automotive, cloud-based, gaming, enterprise, and networking applications, among various other applications. Die architectures may employ messaging mechanisms that allow for the transfer of data. For example, a host device may employ a messaging protocol to read data from, and write data to, a memory device. Sometimes, however, the messaging fails. For example, a device may experience a failure during a data transfer over a data link. These failures may cause devices to undergo time and power consuming reset procedures in an effort to restore the data link. In some instances, the failures may cause a device to wait indefinitely for the data transfer to complete. As such, there are opportunities to address deficiencies associated with messaging mechanisms in die architectures.SUMMARY
[0005] According to one aspect, a die includes host controller logic and a first memory device. The host controller logic is configured to receive a memory request. In response to the memory request, the host control logic is configured to generate a memory command comprising a timeout value. The host controller logic is also configured to transmit the memory command to a second memory device, wherein the memory command causes the second memory device to initiate a timer based on the timeout value.
[0006] According to another aspect, an apparatus includes a non-transitory, machine-readable storage medium storing instructions, and at least one processor coupled to the non-transitory, machine-readable storage medium. The at least one processor is configured to receive a memory request. In response to the memory request, the at least one processor is configured to generate a memory command comprising a timeout value. The at least one processor is also configured to transmit the memory command to a memory device, wherein the memory command causes the memory device to initiate a timer based on the timeout value.
[0007] According to yet another aspect, a method by at least one processor includes receiving a memory request. In response to the memory request, the method includes generating a memory command comprising a timeout value. The method also includes transmitting the memory command to a memory device, wherein the memory command causes the memory device to initiate a timer based on the timeout value.
[0008] According to even another aspect, a non-transitory, machine-readable storage medium stores instructions that, when executed by at least one processor, causes the at least one processor to perform operations. The operations include receiving a memory request. In response to the memory request, the operations include generating a memory command comprising a timeout value. The operations also include transmitting the memory command to a memory device, wherein the memory command causes the memory device to initiate a timer based on the timeout value.
[0009] According to one aspect, a die includes a processor, memory logic, and a timer. The processor is configured to receive a memory command comprising a timeout value. The processor is also configured to initiate the timer based on the timeout value. Further, the processor is configured to initiate a memory operation with the memory logic based on the memory command. The processor is also configured to detect an expiration of the timer before the memory operation is complete and, in response, generate a memory response comprising a status value indicating the expiration of the timer. The processor is further configured to transmit the memory response.
[0010] According to another aspect, an apparatus includes a non-transitory, machine-readable storage medium storing instructions, and at least one processor coupled to the non-transitory, machine-readable storage medium. The at least one processor is configured to receive a memory command comprising a timeout value. The at least one processor is also configured to initiate a timer based on the timeout value. Further, the at least one processor is configured to initiate a memory operation with a memory device based on the data transfer command. The at least one processor is also configured to detect an expiration of the timer before the memory operation is complete and, in response, generate a memory response comprising a status value indicating the expiration of the timer. The at least one processor is further configured to transmit the memory response.
[0011] According to yet another aspect, a method by at least one processor includes receiving a memory command comprising a timeout value. The method also includes initiating a timer based on the timeout value. Further, the method includes initiating a memory operation with a memory device based on the memory command. The method also includes detecting an expiration of the timer before the memory operation is complete and, in response, generating a memory response comprising a status value indicating the expiration of the timer. The method further includes transmitting the memory response.
[0012] According to even another aspect, a non-transitory, machine-readable storage medium stores instructions that, when executed by at least one processor, causes the at least one processor to perform operations. The operations include receiving a memory command comprising a timeout value. The operations also include initiating a timer based on the timeout value. Further, the operations include initiating a memory operation with a memory device based on the memory command. The operations also include detecting an expiration of the timer before the memory operation is complete and, in response, generating a memory response comprising a status value indicating the expiration of the timer. The operations further include transmitting the memory response.BRIEF DESCRIPTION OF DRAWINGS
[0013] FIG. 1 is a block diagram of a die package, according to some implementations;
[0014] FIG. 2 is a block diagram of a die package, according to some implementations;
[0015] FIGS. 3A, 3B, 3C, and 3D illustrate data transfer timeout messaging between devices, according to some implementations;
[0016] FIGS. 4A, 4B, and 4C illustrate data transfer timeout messages, according to some implementations;
[0017] FIG. 5 illustrates various registers, according to some implementations;
[0018] FIG. 6 is a flowchart of an exemplary messaging timeout process, according to some implementations; and
[0019] FIG. 7 is a flowchart of another exemplary messaging timeout process, according to some implementations.DETAILED DESCRIPTION
[0020] While the features, methods, devices, and systems described herein may be embodied in various forms, some exemplary and non-limiting embodiments are shown in the drawings, and are described below. Some of the components described in this disclosure are optional, and some implementations may include additional, different, or fewer components from those expressly described in this disclosure.
[0021] The embodiments described herein are directed to die solutions that more efficiently detect, and recover from, data transfer failures. For example, Universal Flash Storage (UFS) host controllers can control access to UFS memory devices. For instance, a UFS host controller can allow a system device (e.g., Central Processing Unit (CPU) , General Processing Unit (GPU) , Generic Interrupt Controller (GIC) ) to access a UFS memory device. The standard, for instance, provides a UFS Host Controller Interface (UFSHCI) specification that defines a hardware and software interface standard between a UFS host controller and a system device. To access the UFS memory device, a system device may transmit a data transfer request to the UFS host controller. The data transfer request may be, for example, a request to read from the UFS memory device, or a request to write to the UFS memory device. In response to the request, the UFS host controller may generate a transfer request descriptor that, among other things, identifies the type of memory operation (e.g., read or write) . Based on the transfer request descriptor, the UFS host controller generates and transmits a corresponding command (e.g., command UFS Protocol Information Unit (UPIU) . Assuming the data transfer successfully completes, the UFS memory device may transmit to the UFS host controller a response (e.g., a UPIU response) acknowledging that the data transfer completed successfully. Based on the response, the UFS host controller may signal the system device that the data transfer request is complete (e.g., via an interrupt signal) .
[0022] In some instances, however, the data transfer may fail. For example, the read from, or write to, the memory of the UFS memory device may not complete. If the system device does not receive a response within a certain amount of time, the system device may determine that the data transfer failed, and may signal the host controller to undergo a time consuming abort procedure. For instance, the abort procedure may include transmitting query and abort request (e.g., Query and Abort Task Management Request UPIUs) to the UFS memory device, receiving corresponding responses from the UFS memory device, generating an interrupt signal based on the abort response to alert an executing task (e.g., a task such as a driver executing on the host controller) , and, in response to the interrupt signal, freeing up resources of the original data transfer request (e.g., whether in single doorbell (SDB) mode or multi-circular queue (MCQ) mode as specified by the UFSHCI specification) . The embodiments described herein may address these and other deficiencies with conventional messaging control mechanisms.
[0023] For example, a mass storage device with timeout support may receive, from a host controller with timeout support, a timeout supporting data transfer command to read or write data to its memory. The data transfer command can include a timeout value that indicates an amount of time that the host controller will wait for a response from the mass storage device. When the mass storage device is able to complete the requested data transfer within the amount of time indicated by the received timeout value, the mass storage device transmits a data transfer response to the host controller indicating the data transfer was successful. For example, the mass storage device may initiate a timer based on the timeout value, and may determine that the data transfer completed before the time expired.
[0024] If, however, the mass storage device is not able to complete the requested data transfer within the amount of time indicated by the received timeout value, the mass storage device transmits a data transfer response to the host controller indicating the data transfer was not successful (i.e., failed) . For example, the mass storage device may determine that the data transfer has not completed upon expiration of the timer (e.g., in response to an interrupt signal generated by the expired timer) and, in response, transmits the data transfer response to the host controller indicating the failed data transfer. In addition, the mass storage device may automatically abort the requested data transfer (e.g., without receiving an instruction from the host controller) . In some instances, if the host controller does not receive a data transfer response from the mass storage device within a predetermined amount of time from when the data transfer command was transmitted, the host controller may perform conventional abort procedures.
[0025] In some examples, upon determining that the data transfer has not completed upon expiration of the timer, the mass storage device may generate a data transfer response indicating that additional time is needed to complete the data transfer. For instance, the data transfer response may include a value identifying an amount of additional time requested to complete the data transfer. The mass transfer device may transmit the data transfer response indicating the amount of additional time to the host controller. The host controller may then wait the additional amount of time to receive a data transfer response indicating the data transfer is complete, or may perform conventional abort procedures.
[0026] Among other advantages, the timeout mechanisms described herein can allow for the memory device itself to detect data transfer failures, and to automatically perform abort processes, thereby improving abort handling efficiencies. Further, the timeout mechanisms can relieve the host controller from detecting data transfer failures, and can reduce abort messaging between the host controller and mass storage device. For instance, task management commands can be avoided in MCQ and SDB modes when operating in accordance with the UFSHCI specification. Further, in MCQ mode, outgoing and ingoing commands are not impacted by conventional command abort routines, as they may not be needed.
[0027] Referring now to the drawings, FIG. 1 is a block diagram of an integrated circuit package 100 (e.g., die package, SoC) that includes timeout supporting (TS) non-volatile mass storage device 102, TS host controller 104, Generic Interrupt Controller (GIC) 106, central processing unit (CPU) 136, graphical processing unit (GPU) 138, and input / output (I / O) 140. In some examples, the TS non-volatile mass storage device 102, TS host controller 104, GIC 106, CPU 136, GPU138, and I / O 140 can be on the same integrated circuit. TS non-volatile mass storage device 102 may be a UFS mass storage device with timeout support as described herein, for example. The TS host controller 104 can include host controller hardware components and, in some examples, executable instructions (e.g., host controller software) , as further described herein.
[0028] Each of the various devices may be coupled to one or more other devices via interconnects. For example, TS host controller 104 can be coupled to TS non-volatile mass storage device 102 over interconnect 103. In some examples, interconnect 103 includes signals in accordance with the host interface layer of the UFS specification (e.g., UFS 2.0, UFS 2.1, UFS 3.0, UFS 3.1, UFS 4.0, etc. ) . For instance, interconnect 103 can include transmit signals, receive signals, a reset signal, and a reference clock signal. In some instances, TS host controller 104 encrypts data for write operations to the TS non-volatile mass storage device 102, and decrypts data for read operations from the TS non-volatile mass storage device 102.
[0029] TS host controller 104 can also be coupled to GPU 138, GIC 106, CPU 136, and I / O 140 over interconnect 120. Interconnect 120 may, for example, provide signals in accordance with the UFS Host Controller Interface (UFSHCI) Specification by Additionally, GIC 106 can be coupled to GPU 138 via interconnect 121A, and to the CPU 136 via interconnect 121B. Each of the interconnects 121A, 121B, may be, for example, Universal Chiplet Interconnect Express interconnects, or any other suitable interconnects (e.g., on-chip and off-chip interconnects) .
[0030] GIC 106 can provide interrupt signals over each of the interconnects 121A, 121B. For instance, the TS host controller 104 may detect a completion of an event, such as a write to, or read from, memory of the TS non-volatile mass storage device 102. In response, the TS host controller 104 may write an interrupt value to a doorbell register of the GIC 106, where the interrupt value identifies the detected event. Based on the interrupt value, the GIC 106 may signal one of the GPU 138 and CPU 136 over the corresponding interconnects 121A, 121B.
[0031] Integrated circuit package 100 is merely exemplary, and in other embodiments, an integrated circuit package in accordance with these disclosures may include any other suitable devices which may replace, or be added in addition to, any of the devices illustrated with respect to integrated circuit package 100. In addition, integrated circuit package 100 may be coupled to one or more other integrated circuit packages (e.g., dies) . For instance, a first integrated circuit package 100 may be coupled, over one or more interconnects 120, to a second integrated circuit package 100. These integrated circuit packages, including integrated circuit package 100, may be implemented in various types of devices, such as within networking devices, telecommunication devices, smartphone devices, gaming devices, automotive devices, enterprise devices, storage devices (e.g., cloud storage devices) , and computing devices (e.g., cloud computing devices) , among other types of data processing devices.
[0032] In some examples, one or more of the GPU 138, GIC 106, CPU 136, and I / O 140 may have a need to access memory within TS non-volatile mass storage device 102. For example, CPU 136 may execute an application that reads data from, or stores data to, the TS non-volatile mass storage device 102. To access the TS non-volatile mass storage device 102, the CPU 136 may transmit a memory request, such as a write or read request, to the TS host controller 104. Based on the memory request, the TS host controller 104 may generate a corresponding TS data transfer command (e.g., Command UPIU) that identifies the data transfer type (e.g., read or write) , a corresponding identifier (e.g., a Tag value) , a timeout unit value, and a timeout scale value. The data transfer type may include one value for read access (i.e., read request) , and another value for write access (i.e., a write request) . The identifier (e.g., the Task Tag) may include a value uniquely identifying the TS data transfer command.
[0033] In addition, the timeout unit value and the timeout scale value characterize an amount of time that the TS non-volatile mass storage device 102 has to complete the requested data transfer. For example, the timeout unit value, when multiplied by the timeout scale value, can identify an amount of time that the TS non-volatile mass storage device 102 has to complete the requested data transfer. As an instance of this example, if the timeout scale value identifies a time scale of ten milliseconds (msecs) , and the timeout unit value is five, then the TS non-volatile mass storage device 102 would have fifty milliseconds to complete the data transfer.
[0034] In some examples, the TS host controller 104 is preconfigured with the timeout unit value and the timeout scale value (e.g., the values are stored in an internal or external memory device) . In some examples, the TS host controller 104 obtains the timeout unit value and the timeout scale value from the TS non-volatile mass storage device 102 (e.g., via a UFS device descriptor for the TS non-volatile mass storage device 102) .
[0035] The TS host controller 104 transmits the TS data transfer command, which includes the timeout unit value and the timeout scale value, to the TS non-volatile mass storage device 102. For instance, the TS data transfer command may be a Command UPIU that includes, among other things, the timeout unit value and the timeout scale value within corresponding data fields.
[0036] The TS non-volatile mass storage device 102 receives the TS data transfer command, and extracts the timeout unit value and the timeout scale value from the TS data transfer command. Further, the TS non-volatile mass storage device 102 determines an amount of time for completing the requested data transfer based on the extracted timeout unit value and timeout scale value. For instance, the TS non-volatile mass storage device 102 may determine the amount of time based on multiplying the extracted timeout unit value with the extracted timeout scale value. The TS non-volatile mass storage device 102 may then initiate a timer (e.g., via timer logic) based on the determined amount of time. The timer, when initiated, is configured to expire after the amount of time. For example, the TS non-volatile mass storage device 102 may configure the timer so that it will expire when the determined amount of time has passed. In some examples, the timer is configured to generate a signal (e.g., an interrupt signal) if and when the timer expires.
[0037] The TS non-volatile mass storage device 102 may further proceed to execute the requested memory request. For instance, if the data transfer type identifies a read request, the TS non-volatile mass storage device 102 may perform operations to read from corresponding locations of its memory. If the data transfer type identifies a write request, the TS non-volatile mass storage device 102 may perform operations to write to corresponding locations of its memory. If the TS non-volatile mass storage device 102 completes the data transfer (e.g., either from, or to, the memory) before the timer expires, the TS non-volatile mass storage device 102 generates a TS data response indicating the data transfer was successful. For example, the TS data response may set a status field of the TS data response to a value indicating the data transfer succeeded (e.g., Response field within TS Response UPIU set to 00h) . The TS non-volatile mass storage device 102 then transmits the TS data response to the TS host controller 104. The TS host controller 104 may then signal GIC 106 to indicate the successful data transfer (e.g., write to a doorbell register of the GIC 106) .
[0038] If, however, the timer expires before the data transfer is complete, the TS non-volatile mass storage device 102 generates the TS data response indicating the data transfer timed out. For example, the TS data response may set a status field of the TS data response to a value indicating the data transfer timeout (e.g., Response field within TS Response UPIU set to 02h) . The TS non-volatile mass storage device 102 aborts the requested data transfer (e.g., performs operations as if it received an abort command for the data transfer) , and transmits the TS data response to the TS host controller 104. The TS host controller 104 may then signal the GIC 106 to indicate the unsuccessful data transfer (e.g., write to the doorbell register of the GIC 106) .
[0039] In some examples, if the timer expires before the data transfer is complete, the TS non-volatile mass storage device 102 generates the TS data response indicating that additional time is needed to complete the transfer. For example, the TS data response may set a status field of the TS data response to a value indicating that more time is needed (e.g., Response field within TS Response UPIU set to 03h) , and may further set a timeout unit value field and a timeout scale value field of the TS data response to corresponding values indicating the amount of additional time being requested (e.g., timeout unit value and timeout scale fields within the TS Response UPIU) .
[0040] As described herein, the amount of time being requested may be determined based on a multiplication of the timeout unit value with the timeout scale value. The TS non-volatile mass storage device 102 transmits the TS data response to the TS host controller 104. The TS host controller 104 may, based on the received TS data response, determine whether to wait up to the additional amount of time being requested to receive a TS data response indicating whether the requested data transfer was successful or, to perform abort procedures to abort the data transfer (e.g., transmitting query and abort requests to the TS non-volatile mass storage device 102, receiving corresponding responses from the TS non-volatile mass storage device 102, and freeing up resources associated with the TS data transfer command) .
[0041] For instance, the TS host controller 104 may receive the TS data response, determine the status field indicates that additional time is needed, and determine the amount of additional time being requested based on multiplying the timeout unit value with the timeout scale value. The TS host controller 104 may then initiate a timer for all, or a portion of, the amount of additional time being requested. If the TS host controller 104 fails to receive from the TS non-volatile mass storage device 102 a TS data response indicating that the requested data transfer was successful or failed before the timer expires, the TS host controller 104 may perform abort procedures to abort the data transfer. Otherwise, if a TS data response indicating that the requested data transfer was successful (or not successful) is received before the timer expires, the TS host controller 104 may signal the GIC 106 to indicate the successful data transfer (or unsuccessful) , as described herein.
[0042] FIG. 2 illustrates an SoC 200 that includes a TS UFS host controller 214 electrically coupled over interconnect 203 to TS UFS mass storage device 202. Interconnect 203 can include signals in accordance with the host interface layer of the UFS specification (e.g., UFS 2.0, UFS 2.1, UFS 3.0, UFS 3.1, UFS 4.0, etc. ) . The TS UFS host controller 214 is also electrically coupled to GPU 138 over interconnect 251, to GIC 106 over interconnect 253, and to CPU 136 over interconnect 255. Each of the interconnects 251, 253, 255 may include memory address and data signals, for instance. In addition, GIC 106 is electrically coupled to each of the GPU 138 and the CPU 136.
[0043] The TS UFS host controller 214 includes TS messaging logic 220, host control logic 250, internal memory 230, registers 246, and, in some instances, a host timer 260. The TS UFS host controller 214 may be implemented in hardware, in executable instructions executed by a processor (e.g., software) , or a combination of the two. For example, the TS UFS host controller 214 may be implemented in one or more circuits, and / or in one or more processors, such as processor 220A, executing instructions (e.g., stored within internal memory 230 or TS UFS mass storage device 202) . The processors, such as processor 220A, may be a microprocessor, CPU, GPU, microcontroller, processing core, SoC processor, etc. ) . For instance, in some examples, processor 220A may execute instructions (e.g., host control software) to carry out one or more of the functions of one or more of the TS messaging logic 220 and host control logic 250. In some examples, components or parts thereof of SoC 200 may be implemented in one or more dies, such as in multiple dies comprising a single die package.
[0044] Further, the host control logic 250 is configured to receive UFS data transfer requests (e.g., requests to read data from, or write data to, the TS UFS mass storage device 202) from one or more of GPU 138, GIC 106, and CPU 136 over interconnects 251, 253, 255, respectively. Based on the UFS data transfer requests, the host control logic 250 is configured to generate transfer request descriptors, such as READ and WRITE Transfer Request Descriptors in accordance with the UFSHCI standard. The transfer request descriptors may identify, without limitation, whether the request is for read access or write access, a corresponding identifier (e.g., tag number) for the data transfer request, and a size of the requested data transfer (e.g., 8 kilobytes) . The host control logic 250 can transmit the transfer request descriptors to the TS messaging logic 220.
[0045] In response to receiving the transfer request descriptors, the TS messaging logic 220 may generate corresponding TS Command UPIUs that, among other things, identify an amount of time that the TS UFS host controller 214 will wait for a TS Response UPIU. For example, registers 246 may include a UFS timeout value register 242 and a UFS timeout scale register 244. Each of these registers may be, for instance, fuses, of non-volatile memory that is preconfigured, or registers that may be written to (e.g., by processor 220A) with corresponding values (e.g., based on received configuration data) , among some examples. For instance, in some examples, TS messaging logic 220 receives (e.g., at startup) configuration data 204 (e.g., UFS device descriptor data) from the TS UFS mass storage device 202. The configuration data 204 may include a timeout unit value and a timeout scale value. The TS messaging logic 220 may write the timeout unit value to the UFS timeout value register 242 register, and the timeout scale value to the UFS timeout scale register 244.
[0046] In some examples, the host control logic 250 may receive the configuration data 204 (e.g., UFS device descriptor data) from the TS UFS mass storage device 202 (e.g., over interconnect 261) . The host control logic 250 may extract the timeout unit value and the timeout scale value from the configuration data 204, and may write the timeout unit value and the timeout scale value to memory (e.g., memory 230 or to registers 246 either directly or via the TS messaging logic 220) .
[0047] To generate a TS Command UPIU, the TS messaging logic 220 may read the timeout unit value from the UFS timeout value register 242 (or, in some examples, memory 230) , and the timeout scale value from the UFS timeout scale register 244 (or, in some examples, memory 230) , and may populate corresponding fields (e.g., bytes 5 and 6) of the TS Command UPIU with the read timeout unit value and timeout scale value. The TS messaging logic 220 may transmit the generated TS Command UPIU to the TS UFS mass storage device 202 over interconnect 203.
[0048] The TS UFS mass storage device 202 may receive the TS Command UPIU, and may determine an amount of time allowed to complete the corresponding data transfer (e.g., the read or write identified by the TS Command UPIU) . For example, a processor 208 (e.g., a microprocessor, CPU, GPU, microcontroller, processing core, SoC processor, etc. ) of the TS UFS mass storage device 202 may extract the timeout unit value and timeout scale value from the TS Command UPIU. The processor 208 may then multiply the timeout unit value with timeout scale value to determine the amount of time allowed to complete the corresponding data transfer. Further, the processor 208 may initiate a timer 206 based on the determined amount of time. For instance, the processor 208 may configure the timer 206 with the amount of time (e.g., by writing the amount of time to a configuration register of the timer) , and may signal the timer 206 to start (e.g., by writing to a start bit of the configuration register) .
[0049] Further, the TS UFS mass storage device 202 (e.g., via the processor 208) may initiate the data transfer with the TS messaging logic 220. For example, for a read request, the TS UFS mass storage device 202 may begin to read the requested data from its memory 209, and transmit DATA In UPIUs that include the read data to the TS messaging logic 220. For a write request, the TS UFS mass storage device 202 may transmit a Ready To Transfer UPIU to the TS messaging logic 220, and may then begin to receive Data Out UPIUs that include the date to store to its memory 209.
[0050] If the timer 206 expires before the data transfer is complete, the TS UFS mass storage device 202 generates a TS Response UPIU that includes a status value indicating that the timer expired. For instance, the TS UFS mass storage device 202 may generate a TS Response UPIU with the response field set to a predetermined value, such as 02h, indicating the data transfer has timed out. The TS UFS mass storage device 202 transmits the TS Response UPIU to the TS messaging logic 220. Further, the TS UFS mass storage device 202 may perform operations to abort the data transfer. For instance, the TS UFS mass storage device 202 may perform operations as if it had received, and consistent with receiving, Query and Abort Task Management Request UPIUs for the data transfer per the UFSHCI specification.
[0051] In some instances, upon detecting the timer 206 expired before the data transfer is complete, the TS UFS mass storage device 202 generates a TS Response UPIU that includes a status value indicating that additional time is needed to complete the data transfer. For instance, the TS UFS mass storage device 202 may generate a TS Response UPIU with the response field set to a predetermined value, such as 03h, indicating the request for additional time. The TS UFS mass storage device 202 may further generate the TS Response UPIU to include a timeout unit value and a timeout scale value which characterize the amount of additional time requested, as further described herein. The TS UFS mass storage device 202 transmits the TS Response UPIU to the TS messaging logic 220.
[0052] Based on receiving the TS Response UPIU indicating a request for additional time to complete the data transfer, the TS messaging logic 220 may continue to wait, up to the amount requested, for a TS Response UPIU that indicates that the data transfer completed (e.g., either successfully, or not successfully) . For instance, the TS messaging logic 220 may determine the amount of additional time requested based on multiplying the timeout unit value and the timeout scale value received. Further, the TS messaging logic 220 may configure the host timer 260 to expire after the determined amount of additional time. In some examples, the TS messaging logic 220 may compare the amount of the additional time requested to a predefined maximum timeout value (e.g., stored in registers 246) and, if the amount of the additional time requested is greater than the predefined maximum timeout value, the TS messaging logic 220 configures the host timer 260 for the predefined maximum timeout value.
[0053] If the host timer 260 expires before the TS messaging logic 220 receives the TS Response UPIU indicating that the data transfer completed (e.g., an interrupt signal is received from the expired host timer 260) , the TS messaging logic 220 may perform abort procedures to abort the requested data transfer. For example, the TS messaging logic 220 may transmit Query and Abort Task Management Request UPIUs to the TS UFS mass storage device 202, receive corresponding responses from the TS UFS mass storage device 202, and may perform operations to free up resources of the original data transfer request.
[0054] FIG. 3A illustrates data transfer timeout messaging between the TS UFS host controller 214 and the TS UFS mass storage device 202. As illustrated, the TS UFS host controller 214 transmits a TS Command UPIU 302 to the TS UFS mass storage device 202. In this example, the TS Command UPIU 302 includes a data transfer type of “READ” (to read data from the TS UFS mass storage device 202) , a tag identifier of 0, a data transfer size of 8 kilobytes, and a timeout value of 3 seconds. As described herein, in some examples, the TS Command UPIU 302 can include a timeout unit value and a timeout scale value, where the timeout value is determined based on the timeout unit value and a timeout scale value (e.g., by multiplying the timeout unit value with the timeout scale value) .
[0055] The TS UFS mass storage device 202 receives the TS Command UPIU 302, extracts the timeout value of 3, and initiates the timer 206 to expire after 3 seconds. The TS UFS mass storage device 202 then begins transmitting DATA In UPIUs 304, which include the requested data being read from the memory of the TS UFS mass storage device 202.
[0056] In this example, assume the TS UFS mass storage device 202 experiences a failure whereby the timer 206 expires (indicating the end of the 3 second time period) before the data transfer is complete (i.e., one or more of the needed DATA IN UPIUs failed to complete before the timer 206 expired) . The TS UFS mass storage device 202 may detect that the timer expired. For example, the processor 208 may receive an interrupt signal indicating the timer 206 expired. In response, the TS UFS mass storage device 202 generates a TS Response UPIU 306 that identifies a data transfer type of “TIMED OUT” (indicating the timer expired before the data transfer was complete) , as well as the received tag identifier of 0. The TS UFS mass storage device 202 transmits the TS Response UPIU 306 to the TS UFS host controller 214. Further, in this example, the TS UFS mass storage device 202 initiates abort procedures 308 (e.g., as if it had received an Abort Task Management Request UPIU) .
[0057] FIG. 3B illustrates another example of data transfer timeout messaging by the TS UFS host controller 214 and the TS UFS mass storage device 202. In this example, the host control logic 250 of the TS UFS host controller 214 generates a Transfer Request Descriptor 360 that includes a data transfer type of “READ, ” a tag identifier of 0, and a data transfer size of 8 kilobytes. The host control logic 250 may generate the Transfer Request Descriptor 360 in response to a TS UFS mass storage device 202 data read request from, for example, CPU 136. The host control logic 250 transmits the Transfer Request Descriptor 360 to the TS messaging logic 220 of the TS UFS host controller 214.
[0058] In response to receiving the Transfer Request Descriptor 360, the TS messaging logic 220 generates a TS Command UPIU 302, which 302 includes the data transfer type of “READ, ” the tag identifier of 0, the data transfer size of 8 kilobytes, and a timeout value of 3 seconds. For example, the TS messaging logic 220 may extract values for the data transfer type, tag identifier, and data transfer size from the Transfer Request Descriptor 360, and populates corresponding fields of the TS Command UPIU 302 with the extracted values. The TS messaging logic 220 then transmits the TS Command UPIU 302 to the TS UFS mass storage device 202.
[0059] As described herein, the TS UFS mass storage device 202 receives the TS Command UPIU 302, extracts the timeout value of 3, and initiates the timer 206 to expire after 3 seconds. In this example, the timer 206 expires (indicating the end of the 3 second time period) before the data transfer is complete. The TS UFS mass storage device 202 detect that the timer 206 expired, and generates a TS Response UPIU 306 that identifies a data transfer type of “TIMED OUT” (indicating the timer expired before the data transfer was complete) , as well as the received tag identifier of 0. Further, the TS UFS mass storage device 202 initiates the abort procedures 308 (e.g., as if it had received an Abort Task Management Request UPIU) . The TS UFS mass storage device 202 transmits the TS Response UPIU 306 to the TS messaging logic 220.
[0060] The data transfer failure operations 364 may include, for example, retrying the data transfer (e.g., by retransmitting the Transfer Request Descriptor 360) . In response to receiving the TS Response UPIU 306, the TS messaging logic 220 generates a Transfer Request Completion interrupt 362 that is detected by the host control logic 250. In response to the detected Transfer Request Completion interrupt 362, the host control logic 250 may perform data transfer failure operations 364. In some examples, the host control logic 250 reports the data transfer failure (e.g., to an executing application, to CPU 136, etc. ) . Additionally or alternatively, the host control logic 250 may transmit a data read response to the originally received data read request from the CPU 136, where the data read response indicates the failure. In some examples, the data transfer failure operations 364 include abort operations. The abort operations can include, for instance, transmitting Query and Abort Task Management Request UPIUs to the TS UFS mass storage device 202, receiving corresponding responses from the TS UFS mass storage device 202, and, freeing up resources of the original data transfer request.
[0061] FIG. 3C also illustrates data transfer timeout messaging between the TS UFS host controller 214 and the TS UFS mass storage device 202. In this example, the TS UFS host controller 214 transmits a TS Command UPIU 352 to the TS UFS mass storage device 202 with a transfer type of “WRITE” (to write data from the TS UFS mass storage device 202) . The TS Command UPIU 352 also includes a tag identifier of 0, a data transfer size of 8 kilobytes, and a timeout value of 3 seconds. As described herein, in some examples, the TS Command UPIU 302 can include a timeout unit value and a timeout scale value, where the timeout value is determined based on the timeout unit value and a timeout scale value (e.g., by multiplying the timeout unit value with the timeout scale value) .
[0062] The TS UFS mass storage device 202 receives the TS Command UPIU 352, extracts the timeout value of 3, and initiates the timer 206 to expire after 3 seconds. The TS UFS mass storage device 202 then transmits to the TS UFS host controller 214 a READY To Transfer UPIU 354 indicating that the TS UFS mass storage device 202 is ready to receive data. In response, the TS UFS host controller 214 begins to transmit DATA OUT UPIUs 356 to the TS UFS mass storage device 202. The DATA OUT UPIUs 356 include the data to be written to the memory of the TS UFS mass storage device 202.
[0063] In this example, assume the TS UFS mass storage device 202 experiences a failure whereby the timer 206 expires (indicating the end of the 3 second time period) before the data transfer is complete (i.e., one or more of the needed DATA OUT UPIUs failed to complete before the timer 206 expired) . The TS UFS mass storage device 202 may detect that the timer expired and, in response, may generate a TS Response UPIU 358 that identifies a data transfer type of “TIMED OUT” (indicating the timer expired before the data transfer was complete) , as well as the received tag identifier of 0. Further, the TS UFS mass storage device 202 initiates the abort procedures 308.
[0064] FIG. 3D illustrates an example where the TS UFS mass storage device 202 requests from the TS UFS host controller 214 additional time to complete a data transfer. As illustrated, the TS UFS host controller 214 transmits the TS Command UPIU 352 to the TS UFS mass storage device 202 with the data transfer type of “WRITE, ” the tag identifier of 0, the data transfer size of 8 kilobytes, and the timeout value of 3 seconds. The TS UFS mass storage device 202 receives the TS Command UPIU 352, extracts the timeout value of 3, and initiates the timer 206 to expire after 3 seconds. The TS UFS mass storage device 202 then transmits to the TS UFS host controller 214 the READY To Transfer UPIU 354 indicating that the TS UFS mass storage device 202 is ready to receive data. In response, the TS UFS host controller 214 begins to transmit the DATA OUT UPIUs 356 to the TS UFS mass storage device 202.
[0065] Here again the timer 206 expires before the data transfer is complete. The TS UFS mass storage device 202 detects that the timer expired and, in response, generates TS Response UPIU 372 that identifies that additional time is needed. In this example, TS Response UPIU 372 identifies an additional amount of time of 1 second. The TS Response UPIU 372 also includes the tag identifier of 0. The TS UFS mass storage device 202 transmits the TS Response UPIU 372 to the TS UFS host controller 214. In response to receiving the TS Response UPIU 372, the TS UFS host controller 214 may wait the additional amount of time, or a portion thereof. In other instances, the TS UFS host controller 214 may ignore or deny the request and perform data transfer failure operations as described herein (e.g., data transfer failure operations 364) .
[0066] Further, the TS UFS mass storage device 202 may initiate the timer 206 to expire after the additional amount of time (e.g., 1 second in this example) . If the timer 206 again expires before the data transfer is complete, the TS UFS mass storage device 202 may generate the TS Response UPIU 358 that identifies the data transfer type of “TIMED OUT” (indicating the timer expired before the data transfer was complete) , as well as the received tag identifier of 0. Further, the TS UFS mass storage device 202 may then initiate the abort procedures 308, as described herein.
[0067] FIG. 4A illustrates an exemplary TS Command UPIU 400 that includes a data type value field, a timeout value field, a timeout scale field, and a task tag field. The TS Command UPIU 400 also includes a data transfer length field, and, in some examples, additional data fields.
[0068] The data type value can identify the type of transfer, such as a “READ” or “WRITE” data transfer. The data transfer length field identifies a length of the data transfer (e.g., 8 kilobytes) . The task tag field identifies an identifier of the requested data transfer. Moreover, in some examples, the timeout value field identifies a timeout value, where in other examples, the timeout value field identifies a timeout unit value and the timeout scale field identifies a timeout scale value.
[0069] As described herein, in the examples where the timeout value field identifies the timeout unit value and the timeout scale field identifies the timeout scale value, the timeout unit value can be multiplied by the timeout scale to compute an absolute timeout value. For instance, in some examples, a timeout scale value of 01h identifies a scale of 1 millisecond, and a timeout scale value of 02h identifies a scale of 10 milliseconds. Similarly, a timeout scale value of 03h identifies a value of 100 milliseconds, and a timeout scale value of 04h identifies a scale of 1 second. Thus, a timeout unit value of 02h with a timeout scale value of 03h identifies an absolute time of 200 milliseconds. Upon receiving a TS Command UPIU 400, the TS non-volatile mass storage device 102 may extract the timeout unit value and the timeout scale value, and may multiply the timeout unit value with the timeout scale value to compute the absolute timeout value. Further, the TS non-volatile mass storage device 102 may initiate a timer based on the computed absolute timeout value.
[0070] FIG. 4B illustrates an exemplary TS Response UPIU 403 that includes a data type value field, a response value field, a task tag field, and, optionally, a timeout unit value field and a timeout scale field. As described herein, the TS non-volatile mass storage device 102 can generate and transmit the TS Response UPIU 403 in response to detecting an expiration of the timer. In some examples the data type value field may identify a value for “TIMED OUT, ” which indicates the timer expired before the data transfer completed. In other examples, the data type value field identifies a value for “NEEDS MORE TIME, ” indicating that additional time is needed to complete the corresponding data transfer.
[0071] FIG. 4C illustrates various values (e.g., opcodes) for the data type value field of the TS Command UPIU 400 and the TS Response UPIU 403. For example, a value of 00h indicates a “TARGET SUCCESS” (successful data transfer) , while a value of 01h indicates a “TARGET FAILURE” (unsuccessful data transfer) . In addition, a value of 02h indicates “TARGET TIMED OUT” (the data transfer time expired before the data transfer completed) , and a value of 03h indicates that “TARGET NEEDS MORE TIME” (the TS non-volatile mass storage device 102 is requesting additional time to complete the data transfer) . Other values can be used for other purposes and / or can be vendor specific.
[0072] FIG. 5 illustrates registers 500 that can be stored within TS non-volatile mass storage device 102 (or TS UFS mass storage device 202) . The registers 500 include a logical block read time value register 502, a logical block read time scale register 504, a logical block write time value register 506, and a logical block write time scale register 508. TS non-volatile mass storage device 102 and / or TS UFS mass storage device 202 (e.g., within configuration data 204) may include registers 500 for each of one or more logical blocks of memory. A TS host controller, such as the TS host controller 104 or TS UFS host controller 214, may obtain these register values from the TS non-volatile mass storage device 102 through, for instance, UFS device descriptors (e.g., logical unit descriptors) . The TS host controller may store the values in memory (e.g., registers 246) . For example, the host control logic 250 may receive UFS device descriptors from the TS non-volatile mass storage device 102, where the UFS device descriptors include the timeout value and, in some examples, a timeout unit value and a timeout scale value, for one or more of the logical blocks of memory, and may store the values in memory, such as memory 230.
[0073] The logical block read time value register 502 and logical block read time scale register 504 may define the additional amount of time that the TS non-volatile mass storage device 102 may need to read data from a corresponding block of memory. Similarly, the logical block write time value register 506 and logical block write time scale register 508 may define the additional amount of time that the TS non-volatile mass storage device 102 may need to write data to a corresponding block of memory. Thus, the TS UFS host controller 214 can obtain these timeout unit and timeout scale values for each logical unit from the TS non-volatile mass storage device 102 (e.g., at startup) , and can determine the timeout value of the TS command UPIUs (e.g., TS Command UPIUs 302, 352) based on the timeout unit and timeout scale values for the logical unit for the requested data transfer.
[0074] FIG. 6 is a flowchart of an exemplary messaging timeout process 600 that may be carried out by a TS host controller, such as any of the TS host controller 104 or TS UFS host controller 214 described herein.
[0075] Beginning at block 602, the TS host controller receives a memory request. The memory request may be, for example, a transfer request descriptor (e.g., transfer request descriptor 360) . In response to the memory request, and at block 604, the TS host controller reads a timeout value. For instance, the TS UFS host controller 214 may read the timeout value from the UFS timeout value register 242. In some examples, the TS host controller reads a timeout unit value from a first register (e.g., the UFS timeout value register 242) , and a timeout scale value from a second register (e.g., the UFS timeout scale register 244) . The TS host controller then multiplies the timeout value with the timeout scale value to determine the final timeout value, as described herein.
[0076] Proceeding to block 606, the TS host controller generates a memory command that includes the timeout value. For example, the TS UFS host controller 214 may generate the TS Command UPIU 302, 352 that includes a corresponding timeout value (e.g., 1 second) . At block 608, the TS host controller transmits the memory command to a memory device. The memory command causes the memory device to initiate a timer based on the timeout value. For instance, the TS UFS host controller 214 may transmit the TS Command UPIU 302, 352 to the TS UFS mass storage device 202. In response, the TS UFS mass storage device 202 may initiate the timer 206 based on the received timeout value, and may initiate a corresponding memory operation (e.g., a data transfer, such as a memory read or memory write operation) .
[0077] At block 610, the TS host controller receives from the memory device a memory response that includes a status value indicating an expiration of a timer. For example, the TS UFS host controller 214 may receive from the TS UFS mass storage device 202 a TS Response UPIU 306, 358 that identifies a “TIMED OUT” status (e.g., value of 02h) . Further, at block 612, the TS host controller generates an interrupt signal indicating the memory operation failed based on the status value. For instance, the TS host controller may cause an interrupt to an executed application or another device, where the interrupt indicates the memory operation failed.
[0078] FIG. 7 is a flowchart of an exemplary messaging timeout process 700 that may be carried out by a TS mass storage device, such as any of the TS non-volatile mass storage device 102 or TS UFS mass storage device 202 described herein.
[0079] Beginning at block 702, the mass storage device receives a memory command that includes a timeout value. For example, the TS UFS mass storage device 202 may receive, from the TS UFS host controller 214, a TS Command UPIU (e.g., TS Command UPIU 302, 352) that includes a timeout value indicating an amount of time (e.g., 3 seconds) the TS UFS host controller 214 will wait for a corresponding memory operation to complete. At block 704, the mass storage device initiates a timer based on the timeout value. For example, the TS UFS mass storage device 202 may extract the timeout value from the TS UFS mass storage device 202, and may configure the timer 206 to expire after the timeout value.
[0080] At block 706, the mass storage device initiates the memory operation with memory based on the memory command. For instance, the TS UFS mass storage device 202 may initiate a read to its memory 209 if the data transfer type field of the TS Command UPIU was a “READ” (e.g., begin to generate and transmit DATA IN UPIUs) , and may initiate a write to the its memory 209 if the data transfer type field was a “WRITE” (e.g., begin to generate and transmit DATA OUT UPIUs) .
[0081] At block 708, if the timer has not expired, the method proceeds to block 714. If, at block 714, the memory operation has completed, the mass storage device may reset the timer, and the method proceeds to block 716. At block 716, the mass storage device generates a memory response that includes a status value indicating the success of the memory operation. For instance, the TS UFS mass storage device 202 may generate a TS Response UPIU that identifies a “TARGET SUCCESS” status (e.g., value of 00h) . The method then proceeds to block 718.
[0082] If, however, at block 714 the memory operation has not yet completed, the method proceeds back to block 708. If, at block 708, the timer has expired (e.g., an interrupt is generated based on timer 206 expiring before the memory operation is complete) , the method proceeds to block 710.
[0083] At block 710, the mass storage device generates a memory response that includes a status value indicating the expiration of the timer. For instance, the TS UFS mass storage device 202 may generate a TS Response UPIU 306, 358 that identifies a “TIMED OUT” status (e.g., value of 02h) . The method then proceeds to block 718.
[0084] At block 718, the mass storage device transmits the memory response. For example, the TS UFS mass storage device 202 may transmit the TS Response UPIU 306, 358 to the TS UFS host controller 214.
[0085] Implementation examples are further described in the following numbered clauses:
[0086] 1. A die comprising:
[0087] a first memory device; and
[0088] host controller logic electrically coupled to the first memory device, the host controller logic configured to:
[0089] receive a memory request;
[0090] in response to the memory request, generate a memory command comprising a timeout value; and
[0091] transmit the memory command to a second memory device, wherein the memory command causes the second memory device to initiate a timer based on the timeout value.
[0092] 2. The die of clause 1, wherein the memory command causes the second memory device to initiate a memory operation, and wherein the host controller logic is configured to:
[0093] receive a memory response from the second memory device, wherein the memory response comprises a status value; and
[0094] determine the memory operation failed based on the status value.
[0095] 3. The die of clause 2, wherein the host controller logic is configured to generate a signal based on the status value, the signal indicating the memory operation failed.
[0096] 4. The die of any of clauses 2-3, wherein the host controller logic is configured to abort the memory operation.
[0097] 5. The die of any of clauses 1-4, wherein the host controller logic is configured to:
[0098] receive a memory response from the second memory device, wherein the memory response comprises a status value; and
[0099] determine the second memory device is requesting additional time to complete a memory operation based on the status value.
[0100] 6. The die of any of clauses 1-5, wherein the first memory device comprises a first register and a second register, and the host controller logic is configured to:
[0101] read a timeout unit value from the first register;
[0102] read a timeout scale value from the second register; and
[0103] determine the timeout value based on a multiplication of the timeout unit value with the timeout scale value.
[0104] 7. The die of any of clauses 1-6, wherein the host controller logic is configured to:
[0105] receive configuration data from the second memory device;
[0106] determine the timeout value from the configuration data; and
[0107] store the timeout value in the first memory device.
[0108] 8. A method by a host controller, the method comprising:
[0109] receiving a memory request;
[0110] in response to the memory request, generating a memory command comprising a timeout value; and
[0111] transmitting the memory command to a second memory device, wherein the memory command causes the second memory device to initiate a timer based on the timeout value.
[0112] 9. The method of clause 8, wherein the memory command causes the second memory device to initiate a memory operation, the method comprising:
[0113] receiving a memory response from the second memory device, wherein the memory response comprises a status value; and
[0114] determining the memory operation failed based on the status value.
[0115] 10. The method of clause 9, comprising generating a signal based on the status value, the signal indicating the memory operation failed.
[0116] 11. The method of any of clauses 9-10, comprising aborting the memory operation.
[0117] 12. The method of any of clauses 8-11, comprising:
[0118] receiving a memory response from the second memory device, wherein the memory response comprises a status value; and
[0119] determining the second memory device is requesting additional time to complete a memory operation based on the status value.
[0120] 13. The method of any of clauses 8-12, wherein the first memory device comprises a first register and a second register, the method comprising:
[0121] reading a timeout unit value from the first register;
[0122] reading a timeout scale value from the second register; and
[0123] determining the timeout value based on a multiplication of the timeout unit value with the timeout scale value.
[0124] 14. The method of any of clauses 8-13, comprising:
[0125] receiving configuration data from the second memory device;
[0126] determining the timeout value from the configuration data; and
[0127] storing the timeout value in the first memory device.
[0128] 15. A die comprising:
[0129] memory logic;
[0130] a timer; and
[0131] a processor electrically coupled to the memory logic and the timer, wherein the processor is configured to:
[0132] receive a memory command comprising a timeout value;
[0133] initiate the timer to expire based on the timeout value;
[0134] initiate a memory operation with the memory logic based on the memory command;
[0135] detect an expiration of the timer before the memory operation is complete and, in response, generate a memory response comprising a status value indicating the expiration of the timer; and
[0136] transmit the memory response.
[0137] 16. The die of clause 15, wherein the processor is configured to abort the memory operation in response to the detection of the expiration of the timer.
[0138] 17. The die of any of clauses 15-16, wherein the processor is configured to generate an additional memory response comprising an additional time value indicating a request for an additional amount of time.
[0139] 18. The die of clause 17, wherein the processor is configured to initiate the timer to expire based on the additional amount of time.
[0140] 19. The die of any of clauses 15-18, wherein the processor is configured to:
[0141] receive an interrupt signal based on the expiration of the timer; and
[0142] detect the expiration of the timer based on the interrupt signal.
[0143] 20. The die of any of clauses 15-19, wherein the processor is configured to:
[0144] receive a descriptor request;
[0145] in response to the descriptor request, generate a descriptor response comprising the timeout value for each of one or more logical blocks of the memory logic; and
[0146] transmit the descriptor response.
[0147] Although the methods described above are with reference to the illustrated flowcharts, many other ways of performing the acts associated with the methods may be used. For example, the order of some operations may be changed, and some embodiments may omit one or more of the operations described and / or include additional operations.
[0148] In addition, the methods and system described herein may be at least partially embodied in the form of computer-implemented processes and apparatus for practicing those processes. The disclosed methods may also be at least partially embodied in the form of tangible, non-transitory machine-readable storage media encoded with computer program code that, when executed, causes a machine to fabricate at least one integrated circuit that performs one or more of the operations described herein. For example, the methods may be embodied in hardware, in executable instructions executed by a processor (e.g., software) , or a combination of the two. The media may include, for example, RAMs, ROMs, CD-ROMs, DVD-ROMs, BD-ROMs, hard disk drives, flash memories, or any other non-transitory machine-readable storage medium. When the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for causing a machine to fabricate the integrated circuit. The methods may also be at least partially embodied in the form of a computer into which computer program code is loaded or executed, such that, the computer becomes a special purpose computer for causing a machine to fabricate the integrated circuit. For instance, when implemented on a general-purpose processor, computer program code segments can configure the processor to create specific logic circuits. The methods may alternatively be at least partially embodied in application specific integrated circuits or any other integrated circuits for performing the methods.
[0149] In addition, terms such as “circuit, ” “circuitry, ” “logic, ” and the like can include, alone or in combination, analog circuitry, digital circuitry, hardwired circuitry, programmable circuitry, processing circuitry, hardware logic circuitry, state machine circuitry, and any other suitable type of physical hardware components. Further, the embodiments described herein may be employed within various types of devices such as networking devices, telecommunication devices, smartphone devices, gaming devices, enterprise devices, storage devices (e.g., cloud storage devices) , and computing devices (e.g., cloud computing devices) , among other types of devices.
[0150] The subject matter has been described in terms of exemplary embodiments. Because they are only examples, the claimed inventions are not limited to these embodiments. Changes and modifications may be made without departing the spirit of the claimed subject matter. It is intended that the claims cover such changes and modifications.
Claims
1.A die comprising:a first memory device; andhost controller logic electrically coupled to the first memory device, the host controller logic configured to:receive a memory request;in response to the memory request, generate a memory command comprising a timeout value; andtransmit the memory command to a second memory device, wherein the memory command causes the second memory device to initiate a timer based on the timeout value.2.The die of claim 1, wherein the memory command causes the second memory device to initiate a memory operation, and wherein the host controller logic is configured to:receive a memory response from the second memory device, wherein the memory response comprises a status value; anddetermine the memory operation failed based on the status value.3.The die of claim 2, wherein the host controller logic is configured to generate a signal based on the status value, the signal indicating the memory operation failed.4.The die of claim 2, wherein the host controller logic is configured to abort the memory operation.5.The die of claim 1, wherein the host controller logic is configured to:receive a memory response from the second memory device, wherein the memory response comprises a status value; anddetermine the second memory device is requesting additional time to complete a memory operation based on the status value.6.The die of claim 1, wherein the first memory device comprises a first register and a second register, and the host controller logic is configured to:read a timeout unit value from the first register;read a timeout scale value from the second register; anddetermine the timeout value based on a multiplication of the timeout unit value with the timeout scale value.7.The die of claim 1, wherein the host controller logic is configured to:receive configuration data from the second memory device;determine the timeout value from the configuration data; andstore the timeout value in the first memory device.8.A method by a host controller, the method comprising:receiving a memory request;in response to the memory request, generating a memory command comprising a timeout value; andtransmitting the memory command to a second memory device, wherein the memory command causes the second memory device to initiate a timer based on the timeout value.9.The method of claim 8, wherein the memory command causes the second memory device to initiate a memory operation, the method comprising:receiving a memory response from the second memory device, wherein the memory response comprises a status value; anddetermining the memory operation failed based on the status value.10.The method of claim 9, comprising generating a signal based on the status value, the signal indicating the memory operation failed.11.The method of claim 9, comprising aborting the memory operation.12.The method of claim 8, comprising:receiving a memory response from the second memory device, wherein the memory response comprises a status value; anddetermining the second memory device is requesting additional time to complete a memory operation based on the status value.13.The method of claim 8, wherein the first memory device comprises a first register and a second register, the method comprising:reading a timeout unit value from the first register;reading a timeout scale value from the second register; anddetermining the timeout value based on a multiplication of the timeout unit value with the timeout scale value.14.The method of claim 8, comprising:receiving configuration data from the second memory device;determining the timeout value from the configuration data; andstoring the timeout value in the first memory device.15.A die comprising:memory logic;a timer; anda processor electrically coupled to the memory logic and the timer, wherein the processor is configured to:receive a memory command comprising a timeout value;initiate the timer to expire based on the timeout value;initiate a memory operation with the memory logic based on the memory command;detect an expiration of the timer before the memory operation is complete and, in response, generate a memory response comprising a status value indicating the expiration of the timer; andtransmit the memory response.16.The die of claim 15, wherein the processor is configured to abort the memory operation in response to the detection of the expiration of the timer.17.The die of claim 15, wherein the processor is configured to generate an additional memory response comprising an additional time value indicating a request for an additional amount of time.18.The die of claim 17, wherein the processor is configured to initiate the timer to expire based on the additional amount of time.19.The die of claim 15, wherein the processor is configured to:receive an interrupt signal based on the expiration of the timer; anddetect the expiration of the timer based on the interrupt signal.20.The die of claim 15, wherein the processor is configured to:receive a descriptor request;in response to the descriptor request, generate a descriptor response comprising the timeout value for each of one or more logical blocks of the memory logic; andtransmit the descriptor response.
Citation Information
Patent Citations
Memory system
CN101641680A
Storage device capable of increasing its life cycle and operating method thereof
CN103513937A
Method and system for monitoring DMA status in computer system
CN1625736A
Data transfer channel, data transfer control device, data transfer control method, and data transfer control program
JP2013200748A
Framework to provide time bound execution of co-processor commands
US20150169327A1
Cited By
A corelet interrupt management method, device, circuit and multi-corelet system
CN122220274A