Enhanced file block addressing mode for memory devices
The File Block Addressing mode in memory devices addresses the issue of write amplification by using file identifiers and relative block addresses to enhance data organization and management, reducing unnecessary write operations and extending device lifespan.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-10-02
- Publication Date
- 2026-04-09
AI Technical Summary
Conventional memory devices using logical block addressing lead to increased write amplification due to frequent housekeeping operations, resulting in faster wear and reduced lifespan of NAND flash storage devices.
Implementing a File Block Addressing (FBA) mode that uses file identifiers and relative block addresses within the memory device to manage and access data, allowing the device to efficiently organize data and minimize internal data movement, thereby reducing write operations.
Reduces write amplification, improves data management efficiency, and extends the lifespan of NAND flash storage devices by optimizing data placement and minimizing unnecessary write operations.
Smart Images

Figure CN2024123159_09042026_PF_FP_ABST
Abstract
Description
Enhanced File Block Addressing Mode for Memory DevicesBACKGROUND
[0001] The firmware that executes within managed NAND flash storage memory devices, such as Universal Flash Storage (UFS) devices, maintains a Logical memory-to-Physical memory address table (sometimes referred to as an “L2P” table) to manage the mapping between the logical block address (LBA) and the physical block address (PBA) of items of data. This mapping of logical to physical memory addresses in the LBA-to-PBA mapping table allows the memory device to hide the complexity of managing physical block resources of the memory from the operating system (OS) of the computing device writing to and accessing the memory device. For example, when a computing device’s operating system writes different data to one LBA twice, the memory device may write the second set of data to a new physical block of memory and change the mapping of the LBA to the PBA of the new physical block, thereby avoiding the need to erase and re-program the same physical block of memory.
[0002] Within the computing device operating system, filesystems manage data files and directories using inodes, which have unique identifiers IDs. When an application executing on the computing device accesses a file through the operating system, the filesystem uses the inode associated with that file to find the file's location in the memory device and submits a memory input / output (IO) request using LBAs to access the data. Operating system filesystems have been designed to be friendly to managed NAND flash storage by providing features like File Temperature, Garbage Collection, and Zoned and Stream ID. These features aim to reduce the chance of triggering housekeeping operations inside the storage device and optimize data arrangement.SUMMARY
[0003] Various aspects may further include methods performed by a managed NAND flash storage memory device, such as a universal flash storage (UFS) device, and a computing device operating system accessing the memory device that enables managing and accessing data based on file identifiers provided by the OS. Various aspects may include receiving, by the memory device, a memory operation command identifying a file identifier (ID) and a file block address (FBA) , in which the file ID identifies a file associated with data stored or to be stored in memory and the FBA indicates a block address within the identified file relative to a beginning of the file, and using the file ID and FBA to perform the memory operation identified in the memory operation command. In various aspects, the memory operation specified in the memory operation command may be one of a write operation, a read operation, a copy operation, an unmap operation, or an erase operation.
[0004] In some aspects, using the file ID and FBA to perform the memory operation identified in the memory operation command may include obtaining the file ID and FBA from one or more fields within the memory operation command, using the file ID to identify a corresponding FBA-to-logical block address (LBA) mapping table, using the FBA in the identified FBA-to-LBA mapping table to identify the corresponding LBA, and using the corresponding LBA in a LBA-to-physical block address (PBA) mapping table to identify memory addresses in which to perform the memory operation identified in the memory operation command.
[0005] In some aspects, the memory operation specified in the memory operation command is a read operation, the method may further include retrieving data from the identified memory addresses, and providing the retrieved data to the computing device.
[0006] In some aspects, the memory operation specified in the memory operation command is a write operation, the method may further include receiving data to be stored in memory from the computing device, writing the received data-to-physical memory locations within the identified PBA, and updating the FBA-to-LBA mapping table and LBA-to-PBA mapping table as necessary to identify locations in memory where the data is stored.
[0007] In some aspects, the memory operation specified in the memory operation command is a write operation, the method may further include recognizing that the file ID is in the memory operation command has not been received by the memory device before, identifying at least one PBA in memory in which to store data to be received from the computing device, writing data received from the computing device in the identified at least one PBA, updating the LBA-to-PBA to provide a mapping of the at least one PBA to at least one LBA, and creating an FBA-to-LBA mapping table correlating the FBA received from the computing device to the at least one LBA. In some aspects, one of an FBA address mode, LBA address mode, or the hybrid mode is identified for individual logic units, partitions, or namespace.
[0008] In some aspects, the memory device may be configured to perform memory operations using a hybrid addressing mode using both LBA addresses of an LBA addressing mode and file ID plus FBA addressing of an FBA addressing mode, the memory operation command further includes a field identifying a selected addressing mode, and the memory operation command further includes a field identifying a hybrid block addressing LBA range identifying an LBA range starting from 0 that can be accessed using the LBA addressing mode.
[0009] In some aspects, the memory device may be a universal FLASH storage (UFS) device, the memory operation command may be a UFS Protocol Information Unit (UPIU) , the file ID may be included in and obtained by the memory device from a file ID field in an extra header segment of the UPIU, and the FBA may be included in the logical block address field of the UPIU.
[0010] Further aspects include a memory device including a memory control logic configured to perform operations of any of the methods summarized above. Further aspects include a memory device including means for performing functions of any of the methods summarized above. Further aspects include a memory device control logic and a host control logic for use in a computing device, the memory device control logic, and the host control logic each including a processor configured to perform operations of any of the methods summarized above.BRIEF DESCRIPTION OF THE DRAWINGS
[0011] The accompanying drawings, which are incorporated herein and constitute part of this specification, illustrate exemplary embodiments of the claims and, together with the general description given and the detailed description, serve to explain the features herein.
[0012] FIG. 1 is a system block diagram illustrating an example memory system suitable for implementing any of the various embodiments.
[0013] FIG. 2 is a component block diagram illustrating an example computing device suitable for implementing any of the various embodiments.
[0014] FIG. 3 is a component block diagram illustrating an example system configured for universal flash storage (UFS) according to some embodiments.
[0015] FIGS. 4A-4E are examples of UFS command formats suitable for implementing various embodiments in a UFS system application.
[0016] FIGS. 5A and 5B are signaling diagrams illustrating UFS system examples of write and read operations according to some embodiments.
[0017] FIG. 6 is a process flow diagram of an example method for performing a memory operation in response to receiving a memory operation command, including a file ID and an FBA using an FBA addressing mode in accordance with some embodiments.
[0018] FIG. 7A is a process flow diagram of an example method for determining a memory address for the memory operation using the received file ID and FBA in the FBA addressing mode in accordance with some embodiments.
[0019] FIG. 7B is a process flow diagram of an example method for retrieving data stored in the memory device in response to a read memory operation command in the FBA addressing mode in accordance with some embodiments.
[0020] FIG. 7C is a process flow diagram of an example method for writing data stored in the memory device in response to a write memory operation command in the FBA addressing mode in accordance with some embodiments.
[0021] FIG. 7D is a process flow diagram of an example method for writing data stored in the memory device in response to a write memory operation command in the FBA addressing mode when data for the file has not been saved previously in accordance with some embodiments.
[0022] FIG. 8 is a component block diagram illustrating an example personal computer suitable for use with the various embodiments.
[0023] FIG. 9 is a component block diagram illustrating an example server suitable for use with the various embodiments.
[0024] FIG. 10 is a component block diagram illustrating an example wireless communication device suitable for use with the various embodiments.DETAILED DESCRIPTION
[0025] Various embodiments will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made to particular examples and implementations are for illustrative purposes and are not intended to limit the scope of the claims.
[0026] Various embodiments include methods and memory devices configured to implement the methods for enabling the use of file identifiers (ID) and file block addresses (FBA) in an FBA addressing mode to facilitate the management of data storage by the memory device and simplify access to memory by an accessing computing device. Various embodiments may include methods performed by the control logic of the memory device using the file ID and FBA received in a memory operation command from a computing device coupled to the memory device (such as a host device or operating system of a computing device) to identify a corresponding FBA-to-logical block address (LBA) translation or mapping table, use the received FBA in the corresponding FBA-to-LBA mapping table to identify a corresponding LBA, and then use that identified LBA in the LBA-to-physical block address (PBA) mapping table to identify the memory address (s) involved in the commanded memory operation. In the case of a new file (i.e., the file ID has not been received in a previous command) , the control logic can reverse the process to create and store an FBA-to-LBA mapping table to support future memory operations in the FBA addressing mode.
[0027] The term “memory device” is used herein to refer generally to self-contained memory devices, including managed NAND flash storage devices and memory devices, that include physical memory in which data is stored, data tables used for storing address translation tables, and a device control logic that is configured to interface with computing device operating system to receive data read and write commands, and manage the physical storage locations and address translation tables according to various embodiments. The term “device control logic” is used herein to refer generally to logic (e.g., a processor) within a memory device, which may be configured with firmware and / or hardware to perform the memory management operations of various embodiments described herein.
[0028] The term “system-on-a-chip” (SoC) is used herein to refer to a single integrated circuit (IC) chip that contains multiple resources and / or processors integrated on a single substrate. A single SoC may contain circuitry for digital, analog, mixed-signal, and radio-frequency functions. A single SoC may also include any number of general purpose and / or specialized processors (digital signal processors, modem processors, video processors, etc. ) , memory blocks (e.g., ROM, RAM, Flash, etc. ) , and resources (e.g., timers, voltage regulators, oscillators, etc. ) . SoCs may also include software for controlling the integrated resources and processors, as well as for controlling peripheral devices. The host control logic may form a portion of the SoC, and the memory device may form a portion of the SoC.
[0029] The term “system-in-a-package” (SIP) may be used herein to refer to a single module or package that contains multiple resources, computational units, cores, and / or processors on two or more IC chips, substrates, or SoCs. For example, a SIP may include a single substrate on which multiple IC chips or semiconductor dies are stacked in a vertical configuration. Similarly, the SIP may include one or more multi-chip modules (MCMs) on which multiple ICs or semiconductor dies are packaged into a unifying substrate. A SIP may also include multiple independent SoCs coupled together via high-speed communication circuitry and packaged in close proximity, such as on a single motherboard or in a single computing device. The proximity of the SoCs facilitates high-speed communications and the sharing of memory and resources.
[0030] While the mapping of logical to physical memory addresses in the LBA-to-PBA mapping table allows memory devices to hide the complexity of managing physical block resources of the memory from the operating system (OS) of the computing device, this abstraction can lead to performance impacts over time. When a memory device is managed by the OS using logical block addressing for a long time, the LBA-to-PBA mapping can become messy with unused but occupied physical blocks of data scattered within the memory. As a result, the memory device will require housekeeping (abackground operation) more frequently, during which the memory device would move data around amongst physical blocks and clean up LBA-to-PBA mapping. Performing housekeeping in a background operation is good, but the operations may lead to large Write Amplification. Write amplification is a phenomenon that occurs in managed NAND flash storage devices. It refers to the situation where the amount of data written to the storage device is greater than the amount of data that the host originally intended to write. This happens due to the internal operations of the storage device, such as garbage collection and wear leveling. When the storage device performs these internal operations, it may need to move data around to free up space or to ensure even wear across the storage medium. As a result, additional write operations are performed, which increases the total amount of data written to the device. This increased write activity can lead to faster wear of the NAND flash memory and reduced overall lifespan of the storage device.
[0031] Various embodiments overcome these problems with conventional memory devices by providing the memory device control logic with information about the file and relative addresses of data within the file’s data (the FBA) , which enables the memory device to manage the logical and physical block addresses more efficiently that can the OS of a connected computing device. The FBA addressing mode and methods of various embodiments aim to reduce write amplification by allowing the memory device control logic to use a file ID and an FBA to better organize data and minimize the need for internal data movement, thereby reducing write operations that can lead to write amplification.
[0032] Various embodiments provide an improvement over conventional memory access protocols used by the OS of connected computing devices and memory devices. Therefore, an overview of an example of the addressing and memory operations of conventional memory devices is a useful starting point. Various embodiments are applicable to a variety of memory protocols, including the Universal FLASH Storage (UFS) protocol, the MultiMediaCard (eMMC) protocol, and the Non-Volatile Memory Express (NVMe) protocol. However, the UFS protocol provides a convenient example useful for describing conventional memory addressing and memory operations, as well as describing the improvements provided by various embodiments.
[0033] The JEDEC UFS standard (JESD220F -UFS v4.0) specifies the following operations for performing a write operation by a UFS device. Write operations begin when the host issues a WRITE command, such as WRITE (10) or WRITE (16) . This command requests the UFS device to transfer the specified number of logical blocks from the host's buffer and write data blocks to the storage medium. The command is sent in a single COMMAND Unified Protocol Interface Unit (UPIU) .
[0034] In response to the write command, the UFS device requests data from the host by sending a series of READY TO TRANSFER (RTT) UPIUs. The host responds by sending DATA OUT UPIU packets containing the data to be written. The data is divided into segments, with each segment being an integer multiple of the logical block size. The UFS device writes the received data to the specified logical block address in its storage medium.
[0035] The UFS write operations complete once the data is successfully written to memory at which point the UFS device sends a RESPONSE UPIU with a status indicator. If the write operation is successful, the status will be "GOOD. " If there is an issue, such as a hardware error or an illegal request, the status will indicate "CHECK CONDITION" along with an appropriate sense key. If the UFS device encounters an error during the write operation, it may return different status responses, such as "BUSY" if the device is not ready to accept a new command or "CHECK CONDITION" with specific sense keys like "ILLEGAL REQUEST" or "HARDWARE ERROR. "
[0036] The operational steps for performing a read operation by a UFS device specified in the JEDEC UFS standard include the following. The read operations begin when the host issues a READ command, such as READ (6) , READ (10) , or READ (16) . This command specifies the logical block address (LBA) of the data to be read and the number of logical blocks to be transferred. The command is sent in a COMMAND UPIU (Unified Protocol Interface Unit) . In response to receiving the READ command, the UFS device locates the specified logical blocks on the physical medium. The Flash Translation Layer (FTL) maps the logical block address to the corresponding physical memory address. To transfer data, the UFS device reads the specified data from the medium and prepares it for transfer. The data is transferred back to the host in a series of DATA IN UPIUs. Each UPIU contains an integer number of logical blocks. If an error occurs during data retrieval, the device might transfer zero or an incomplete number of DATA IN UPIUs. After completing the data transfer, the UFS device sends a RESPONSE UPIU with the operation status. If the read operation is successful, the status is set to "GOOD. " If the device is not ready for a new command or if an error occurs, the status will be "BUSY" or "CHECK CONDITION, " respectively. In the case of an error, a SENSE KEY is provided to indicate the nature of the error (e.g., ILLEGAL REQUEST, MEDIUM ERROR, or HARDWARE ERROR) .
[0037] Various embodiments improve on such conventional memory operations by introducing a File Block Addressing (FBA) mode that allows the memory device to perform memory tasks more efficiently while eliminating the need for the computing device OS to know the location of data (at least the LBA location) in the memory device. The memory device manages the file / data memory locations correlated to the file ID specified by the OS.
[0038] Memory operations by the computing device OS are modified in various embodiments to specify the file ID and the relative location of data within the file or FBA as part of a memory operation command (e.g., read, write, copy, erase, etc. ) . This relieves the OS from having to maintain the LBA for data stored in the memory device and correlating LBAs with data from various files managed by the OS for applications.
[0039] In the memory device, the control logic performs the following operations to implement the FBA addressing mode and methods. When the memory device receives a memory operation command, such as a write or read command, the control logic obtains the file ID and the FBA from the command provided by the computing device OS (or host system) . The memory device control logic uses the file ID to look up the FBA-to-LBA mapping table stored in a portion of memory corresponding to the file ID. The memory device control logic uses that FBA-to-LBA mapping table to find the LBA corresponding to the received FBA. The memory device control logic then uses the LBA-to-PBA mapping table to identify the corresponding physical memory address (s) where the commanded memory operations should be performed. In these operations, the use of the file ID and FBA received from the computing device in the memory operation command are key to the benefits enabled by various embodiments as the look-up processes yielding the LBA corresponding to the file data memory operations enable the memory device to manage physical memory addresses. The lookup of physical memory addresses and performance of memory operations using those addresses may be performed according to conventional protocols.
[0040] In the case of a write command, once the LBA is determined, the memory device control logic writes the data to the physical memory location corresponding to the LBA using conventional memory protocol methods. But as part of the data write operations, the memory device control logic updates the FBA-to-LBA mapping table to reflect the data locations of the written data. This process ensures that future read operations can accurately locate the file data based on the FBA included in a future memory operation command. In the case of data being written for a file for the first time, the control logic may recognize the situation as the file ID is new to the memory and, in response, include creating and storing a new FBA-to-LBA mapping table reflecting the LBA for the written data.
[0041] Some embodiments may further include the memory device control logic performing operations to select memory address (i.e., storage block locations) for data based on further information provided by the computing device OS so as to improve memory operation performance. In some embodiments, the control logic may select contiguous memory addresses for storing data from a single file. This may facilitate memory read operations, such as simplifying or enabling pre-fetching of data in response to a single or series of read commands for a given file. Other priorities for selecting memory locations for data may be considered by the control logic, with resulting LBAs hidden from the computing device OS.
[0042] In some embodiments, the memory device may be configured to operate in a hybrid mode, which is a configuration option for memory devices, allowing selective operation of the FBA Addressing mode and the conventional LBA addressing mode based on logical unit or partition settings. This mode enables a memory device to support both FBA and LBA addressing, depending on user configuration or device requirements. Specifically, in hybrid mode, a logical unit or partition can be configured to support either FBA, LBA, or both, allowing for adaptable memory access modes. This configuration is intended to cater to real use cases, such as system use cases where metadata, which may not always contain a file ID, is stored at the beginning of a partition. The hybrid mode provides flexibility in accessing data, ensuring compatibility with different data structures and operational requirements within the memory device.
[0043] Various embodiments provide several improvements to the operation of memory devices and computing devices connected to such memory devices. With the FBA addressing mode and methods of various embodiments, the memory device knows the address blocks storing data that belongs to a file, with that information store in the FBA-to-LBA mapping table. This file-data knowledge by the memory device enables the memory device control logic to perform the following beneficial operations. The memory device may pre-fetch file data when any data of the file is being accessed, which may significantly improve the performance of the application using the file. The memory device may use “data temperature” hints received from the operating system of the connected computing device by arranging files of the same or similar data temperature in adjacent or nearby blocks of memory. The memory device may execute many commands more efficiently on a file basis (e.g., Copy, Unmap, Erase, etc. ) . The memory device may perform better defragmentation on its own as well as perform better Garbage Collection, as it manages both the File to LBA mapping and LBA-to-PBA mapping. The memory device may implement compression more efficiently. The memory devices may exhibit reduced write amplification. The memory device may have a significant reduction in LBA-to-PBA mapping table size, because instead of maintaining the table per LBA, now the LBA-to-PBA mapping table may be provided per file. Computational memory devices may perform computational instructions on file-based data. The memory device may perform simplified data management tasks such as backup, replication, and recovery. Additionally, computing devices may benefit because the operating system host does not need to maintain the FBA-to-LBA mapping information.
[0044] The various embodiments may be implemented in UFS storage devices, as well as within embedded MultiMediaCard (eMMC) devices and memory devices coupled to Peripheral Component Interconnect Express (PCIe) interfaces using the Non-Volatile Memory Express (NVMe) command structure. In applications in which the memory device is a memory device or similar managed NAND storage device, the command may be a Universal Flash Storage (UFS) Protocol Information Unit (UPIU) , and the information in the UPIU indicating the file ID may be in the form of a unique file ID value within a defined field of the UPIU. In applications in which the memory device is an eMMC device, the command may be a Command Packet sent via a command line according to the MultiMediaCard (MMC) standard, with the file ID included in a packet field, such as an argument field. In applications in which the memory device is connected to the computing system by a PCIe interface, the command may be a Command Descriptor Block (CDB) or “NVMe Command” sent via a command line according to the MultiMediaCard (MMC) standard, with the file ID included in a packet field, such as an argument field.
[0045] FIG. 1 is a system block diagram illustrating an example system suitable for implementing any of the various embodiments. The system 100 may include one or more computing devices or processors connected to a Memory device 106 for storage. For example, the system 100 may include an SoC 102 including a host control logic 104, a dynamic random access memory (DRAM) 108 communicably connected to the host control logic 104, and a Memory device 106 communicably connected to the host control logic 104 via a link 114. The flows of command, data, and response illustrated between the SoC 102 and the memory device 106 may be carried or transmitted over link 114. The host control logic 104 may include a processor (not shown separately) configured to perform operations of the host control logic described herein. The host control logic 104 may maintain and access stored data in DRAM 108 or an SRAM (not shown) , and / or the host control logic 104. The SRAM of the host control logic 104 may be a part of the SoC 102.
[0046] The Memory device 106 may include a device control logic 116, a static random access memory (SRAM) 110, a write booster buffer (e.g., SLC NAND memory) 118, and a normal storage (e.g., TLC NAND memory) 112. The device control logic 116 may include one or more processors, which may be configured as a processing system configured to implement operations of various embodiments. The device control logic 116 may be connected to the SRAM 110 and the normal storage 112, such that the device control logic 116 may select different memory locations for storage and control flows of information to memory (e.g., 110, 112, 118) . The write booster buffer 118 may be connected to the device control logic 116 and the normal storage 112, such that the write booster buffer buffers data written from the host control logic 104 via the device control logic 116 to the normal storage 112. In addition, the normal storage 112 may be connected to the device control logic 116 independent from the write booster buffer 118 to directly store data written from the host control logic 104 when the device control logic 116 has been instructed (or is configured) to bypass the write booster buffer 118.
[0047] The host control logic 104 may implement write transactions to the memory device 106. The write transactions may include the host control logic 104 issuing write commands from other components of the SoC 102 and / or from components communicably connected to the SoC 102 (e.g., via I / O of the SoC) to the device control logic 116. The write transactions may also include data out UFS protocol information units (UPIUs) transferring the write data from the host control logic 104 to the device control logic 116.
[0048] The memory device control logic 116 receiving the write commands and data out UPIUs from the host control logic 104 may write the data of the data out UPIUs to the write booster buffer 118. The device control logic 116 may manage the write booster buffer 118 storing the data, including controlling flushing the data from the write booster buffer 118 to the normal storage 112. The device control logic 116 may implement flushing the data from the write booster buffer 118 to the normal storage 112 periodically, episodically, etc. The device control logic 116 may maintain a memory mapping table in the memory device 106 with addresses in the normal storage 112 and write booster buffer 118.
[0049] The host control logic 104 may implement read transactions in the memory device 106. Read transactions may include the host control logic 104 issuing read requests from other components of the SoC 102 and / or from components communicably connected to the SoC 102 (e.g., via I / O of the SoC) to the device control logic 116. Read transactions may also include data in UPIUs transferring the read addresses from the host control logic 104 to the device control logic 116. The read addresses may be physical addresses corresponding to logical addresses received by the host control logic 104 from the other components of the SoC 102 and / or from components communicably connected to the SoC 102. Read transactions may be subsequent to write transactions and may read the data out of the normal storage 112. As illustrated, the host control logic 104 may transmit commands (including read commands) and data to the memory device 106 over link 114 and the memory device 106 may transmit a response which acknowledges receipt and / or requests the next transmission.
[0050] FIG. 2 is a component block diagram illustrating an example computing device 200 suitable for implementing any of the various embodiments. Various embodiments may be implemented on a number of single-processor and multi-processor computer systems, including a system-on-chip (SoC) or system in a package (SIP) .
[0051] With reference to FIGS. 1-2, the illustrated example computing device 200 (which may be a system-in-a-package in some embodiments) includes two SoCs 202, 204 (e.g., SoC 102) coupled to a clock 206, a voltage regulator 208, at least one subscriber identity module (SIM) 268 and / or a SIM interface, a DRAM 270 (e.g., DRAM 108) , a memory device 272 (e.g., Memory device 106) for storage, a wireless transceiver 266 configured to send and receive wireless communications via an antenna (not shown) to / from wireless computing devices, such as a base station, wireless device, and / or computing device (e.g., system 100) . In some embodiments, the first SoC 202 may operate as central processing unit (CPU) of the computing device 200 that carries out the instructions of software application programs by performing the arithmetic, logical, control and input / output (I / O) operations specified by the instructions. In some embodiments, the second SoC 204 may operate as a specialized processing unit. For example, the second SoC 204 may operate as a specialized 5G processing unit responsible for managing high volume, high speed (e.g., 5 Gbps, etc. ) , and / or very high frequency short wavelength (e.g., 28 GHz mmWave spectrum, etc. ) communications.
[0052] The first SoC 202 may include a digital signal processor (DSP) 210, a modem processor 212, a graphics processor 214, an application processor (AP) 216, one or more coprocessors 218 (e.g., vector co-processor) connected to one or more of the processors (e.g., 212, 214, 216) , memory 220, custom circuity 222, system components and resources 224, a host control logic 262 (e.g., host control logic 104) , an interconnection / bus module 226, one or more sensors 230 (e.g., accelerometer, temperature sensor, pressure sensor, optical sensor, infrared sensor, analog sound sensor, etc. ) , a thermal management unit 232, and a thermal power envelope (TPE) component 234. The second SoC 204 may include a low-power processor 252, a power management unit 254, an interconnection / bus module 264, a BT control logic 256, memory 258, and various additional processors 260, such as an applications processor, packet processor, etc.
[0053] Each processor 210, 212, 214, 216, 218, 252, 260 may include one or more cores, and each processor / core may perform operations independent of the other processors / cores. For example, the first SoC 202 may include a processor that executes a first type of operating system (e.g., FreeBSD, LINUX, OS X, etc. ) and a processor that executes a second type of operating system (e.g., MICROSOFT WINDOWS 10) . In addition, any or all of the processors 210, 212, 214, 216, 218, 252, 260 may be included as part of a processor cluster architecture (e.g., a synchronous processor cluster architecture, an asynchronous or heterogeneous processor cluster architecture, etc. ) .
[0054] The first and second SoC 202, 204 may include various system components, resources, and custom circuitry for managing sensor data, analog-to-digital conversions, wireless data transmissions, and for performing other specialized operations, such as decoding data packets and processing encoded audio and video signals for rendering in a web browser or audio / video application. For example, the system components and resources 224 of the first SoC 202 may include power amplifiers, voltage regulators, oscillators, phase-locked loops, peripheral bridges, data control logics, memory control logics, system control logics, access ports, timers, and other similar components used to support the processors and software clients running on a computing device. The system components and resources 224 and / or custom circuitry 222 may also include circuitry to interface with peripheral devices, such as cameras, electronic displays, wireless communication devices, external memory chips, etc.
[0055] The first and second SoC 202, 204 may communicate via interconnection / bus module 250. In some embodiments, the interconnection / bus module 250 may be a connection established by transceiving (i.e., receiving and transmitting) components within both the SoC 202 and SoC 204. For example, the low power processor 252 may include a universal asynchronous receiver-transmitter (UART) and the application processor 216 may include a multiple signal messages (MSM) UART driver that is communicatively connected to the UART of the low power processor 252.
[0056] The various processors 210, 212, 214, 216, and 218, may be interconnected to one or more memory elements 220, system components and resources 224, and custom circuitry 222, and a thermal management unit 232 via an interconnection / bus module 226. Similarly, the low power processor 252 may be interconnected to the power management unit 254, the BT control logic 256, memory 258, and various additional processors 260 via the interconnection / bus module 264. The interconnection / bus module 226, 250, 264 may include an array of reconfigurable logic gates and / or implement a bus architecture (e.g., CoreConnect, AMBA, etc. ) . Communications may be provided by advanced interconnects, such as high-performance networks-on chip (NoCs) .
[0057] In various embodiments, any or all of the processors 210, 212, 214, 216, and 218 in the system may operate as the SoC’s main processor, central processing unit (CPU) , microprocessor unit (MPU) , arithmetic logic unit (ALU) , etc. One or more of the coprocessors 218 may operate as the CPU. In addition to the example SIP 100 discussed above, various embodiments may be implemented in a wide variety of computing systems, including a single processor, multiple processors, multicore processors, or any combination thereof.
[0058] The first and / or second SoCs 202, 204 may further include an input / output module (not illustrated) for communicating with resources external to the SoC, such as a clock 206, a voltage regulator 208, one or more wireless transceivers 266, and at least one SIM 268 and / or SIM interface (i.e., an interface for receiving one or more SIM cards) . Resources external to the SoC (e.g., clock 206, voltage regulator 208) may be shared by two or more of the internal SoC processors / cores. The at least one SIM 268 (or one or more SIM cards coupled to one or more SIM interfaces) may store information supporting multiple subscriptions, including a first 5GNR subscription and a second 5GNR subscription, etc.
[0059] In addition to the example computing device 200 discussed above, various embodiments may be implemented in a wide variety of computing systems, which may include a single processor, multiple processors, multicore processors, or any combination thereof.
[0060] In some embodiments, the various processors of the SoC 202 and SoC 204 may be located within the same SoC. For example, the application processor 216 and low power processor 252 may be located within a same SoC, such as in a single SoC of a wearable device, to perform optimized storage routines with the memory device 272.
[0061] FIG. 3 is a component block diagram illustrating an example system 300 configured for memory devices performing memory operations using the FBA mode according to some embodiments. With reference to FIGS. 1-3, the system 300 may include a memory device 302 and a host device 318, which may communicate via a communication link 324 (e.g., link 114) . The host device 318 may be an operating system of a computing device that may transmit memory operation commands to the memory device 302. The system 300 may include a plurality of hardware, software, and / or firmware components operating together to provide the functionality attributed herein to the memory control logic 322 (e.g., memory device control logic 116) . The memory device 302 may include a write booster buffer 118 (e.g., write booster buffer 118, SLC NAND memory) that receives and temporarily stores (i.e., buffers) data to be written to and stored in the electronic storage 320 as described herein.
[0062] The memory device 302 may include electronic storage 320 (e.g., normal storage 112) that may be configured to store information as instructed by the control logic 322 via machine-readable instructions 306. The memory device 302 may also include storage for address translation tables 321 for use in various embodiments. In some embodiments, the address translation tables 321 may be stored in separate memory used for these tables, while in some embodiments the address translation tables 321 may be stored in a portion of the electronic storage 320. The electronic storage 320 and memory storing the address translation tables 321 may include FLASH-type non-transitory storage media (e.g., read-only memory) that electronically stores information.
[0063] The electronic storage 320 may store software algorithms, information determined by the control logic 322 of a processing system, and / or other information that enables the memory device 302 to function as described herein.
[0064] The memory device control logic 322 may be configured by machine-readable instructions 306. Machine-readable instructions 306 may include one or more instruction modules. The instruction modules may include computer program modules. The instruction modules may include one or more of a memory operation command module 330, an FBA-to-LBA lookup module 332, LBA-to-PBA lookup module 334, an FBA mode data read module 336, an FBA mode data write module 338, an FBA-to-LBA table create / update module 340, an optional LBA addressing mode module 342, and other instruction modules (not illustrated) . The memory device 302 may include a control logic device 322 in the form of logic that is configured in software, firmware, specialized circuitry, or combinations thereof to implement the machine-readable instructions 306 and corresponding modules.
[0065] In some embodiments, the control logic 322 executing the memory operation command module 330 may be configured to receive and reply to memory operation commands received from the host device 318. These operations may include obtaining the file ID and the FBA from data fields within the memory command, as well as other information, such as data to be written or other operations to be performed on memory addresses.
[0066] In some embodiments, the control logic 322 executing the FBA-to-LBA Lookup Module 332 may be configured to use the file ID received in memory operation commands to identify the FBA-to-LBA mapping table among the stored address translation tables 321 for the identified file. This operation may use the file ID in a lookup operation to identify one of a plurality of FBA-to-LBA mapping tables among the address translation tables 321 that is associated with the specified file.
[0067] In some embodiments, the control logic 322 executing the LBA-to-PBA Lookup Module 334 may be configured to use the LBA-to-PBA mapping table corresponding to the LBA that corresponds to the FBA received in the memory operation command to identify the PBA corresponding to the LBA. This module may use the LBA in a lookup operation using the LBA-to-PBA mapping table to identify the PBA corresponding to the LBA.
[0068] In some embodiments, the control logic 322 executing the FBA Mode Data Read Module 336 may be configured to perform a data read operation at the memory addresses within the identified PBA. This memory read operation may include the operations defined in the memory device protocol, such as the UFS protocol, the eMMC protocol, and the NVMe protocol.
[0069] In some embodiments, the control logic 322 executing the FBA Mode Data Write Module 338 may be configured to perform a data write operation at the memory addresses within the identified PBA. This memory write operation may include the operations defined in the memory device protocol, such as the UFS protocol, the eMMC protocol, and the NVMe protocol.
[0070] In some embodiments, the control logic 322 executing the FBA-to-LBA Table Create / Update Module 340 may be configured to create and / or update the FBA-to-LBA mapping table corresponding to the file ID to reflect the LBA corresponding to the PBA where data was written in a write memory operation.
[0071] As noted above, in some embodiments the memory device may be configured to operate in a hybrid mode, which is a configuration option for memory devices, allowing selective operation of FBA and LBA modes based on logical unit or partition settings. Therefore, in some embodiments the control logic 322 executing the optional LBA Addressing Mode Module 342 may be configured to perform the commanded memory operation based on the LBA provided in or that can be inferred from the memory operation command. This mode enables a memory device to support both FBA and LBA, depending on user configuration or device requirements. Specifically, in hybrid mode, a logical unit or partition can be configured to support either FBA, LBA, or both, allowing for adaptable memory access modes. The user or memory device provider may identify the partitions of memory that support each of the LBA, FBA, or hybrid modes. This configuration may be well suited for supporting real use cases, such as applications in which metadata, which may not always contain a file ID, is stored at the beginning of a partition. The hybrid mode may provide flexibility in accessing data, ensuring compatibility with different data structures and operational requirements within the memory device.
[0072] As noted above, some embodiments may be implemented in UFS protocol memory devices. FIG. 4A illustrates a non-limiting example of a UFS standard UPIU 402 illustrating how the file ID 406 may be included within a data field of an extra header segment (EHS) 404. FIG. 4B illustrates a change to the UFS extra header segment format 410 that adds an EHS type 412 that indicates whether the UPIU EHS 404 includes a file ID 406.
[0073] Using the example of a UFS memory device, FIG. 4C illustrates a unit descriptor for configuration flags that may be set for a memory device, including a value 420 for indicating that the memory device supports the conventional LBA addressing mode, the FBA addressing mode, or the hybrid mode. To support the hybrid mode, FIG. 4C illustrates that the unit descriptor may include a data field for indicating a hybrid block addressing LBA range 422 that can be used for storing data in the hybrid block addressing mode. This field may define the LBA range starting from 0 that can be accessed using LBA.
[0074] Similar information may be included within configuration parameters for eMMC memory devices and memory devices connected to the an PCIe connector per the NVMe standard. For example, FIG. 4D illustrates the block-oriented read commands used in the eMMC memory device protocol in which the FBA information for the FBA addressing mode may be included in the field 424 for command 17 (CMD17) for single reads or command 18 (CMD18) for multiple reads, such as by repurposing those commands in eMMC applications. A new command may be required to send the File ID in eMMC applications. As another example, FIG. 4E illustrates the NVMe standard read command Dword 10 and Command Dword 11 description 426, which may be repurposed to convey the FBA in read memory operation commands. Currently reserved fields in other Command Dwords (e.g., CDW2 or CDW3) may be used for conveying the File ID in NVMe applications.
[0075] FIG. 5A is a signal flow and operations diagram 500 illustrating an example of communications between an application in the form of a host software (SW) 502 on a computing device and a memory device in the form of a UFS 506 via a host 504 OS to perform a write memory operation storing data from a file according to some embodiments. With reference to FIGS. 1-5A, the host software (SW) 502 may transfer request descriptor 510 to the host 504 that includes the WRITE command along with the file ID and FBA 512 for the file data to be written to memory, as well as the size of the data file to be written. In response, the host 504 may send to the UFS 506 a command UPIU 514 that includes the WRITE command along with the file ID and FBA 516 for the file data to be written to memory, as well as the size of the data file to be written.
[0076] As described, in response to receiving the write command UPIU 514, the UFS control logic may obtain the file ID and the FBA from the command, use the file ID to look up the corresponding FBA-to-LBA mapping table, use that FBA-to-LBA mapping table to find the LBA corresponding to the received FBA, and then use the LBA-to-PBA mapping table to identify the corresponding physical memory address (s) where the data should be read.
[0077] The UFS 506 sends a UPIU 518 indicating the memory device is ready to receive data, in response to which the host 504 sends data via a data out UPIU 520. The UFS 506 determines the addresses in memory where the data is to be stored and begins the storing process according to convention protocol methods, storing address mapping information in the LBA-to-PBA and the FBA-to-LBA mapping tables as part of the memory storage operations. This sequence of messages may repeat in a loop until all data to be written has been provided to the UFS 506. The UFS 506 may also perform error checking on the received and stored data using error correction coding included in the data out UPIU message, and provide response UPIU 522 conveying the results to the host. The host 504 may then send a transfer request completion interrupt 524 to the host software 502.
[0078] FIG. 5B is a signal flow and operations diagram 526 illustrating an example of communications between the host software (SW) 502 and the UFS 506 memory device via the host 504 OS to perform a read memory operation according to some embodiments. With reference to FIGS. 1-5B, the host software (SW) 502 may transfer request descriptor 530 to the host 504 that includes the READ command along with the file ID and FBA 532 for the file data to be read from memory, as well as the size of the data file to be accessed. In response, the host 504 may send to the UFS 506 a command UPIU 534 that includes the READ command along with the file ID and FBA 536 for the file data to be read from memory, as well as the size of the data file to be read.
[0079] As described, in response to receiving the read command UPIU 534, the UFS control logic may obtain the file ID and the FBA from the command, use the file ID to look up the corresponding FBA-to-LBA mapping table, use that FBA-to-LBA mapping table to find the LBA corresponding to the received FBA, and then use the LBA-to-PBA mapping table to identify the corresponding physical memory address (s) where the data should be read.
[0080] The UFS 506 accesses the data stored in memory at the determined physical memory address (s) and begins second data to the host 504 in one or more data in UPIU messages 538. Multiple data in UPIU messages may be sent to the host as needed to complete transfer of all of the accessed data. Once all requested data has been provided to the host, the UFS 506 may send a response UPIU 540 that indicates whether the read operation was successfully completed. The host 504 may then send a transfer request completion interrupt 542 to the host software 502.
[0081] FIG. 6 is a process flow diagram of an example method 600 that may be performed by a control logic (e.g., by a processor or processing system within the memory device control logic) of a memory device for performing memory operations using an FBA address mode in accordance with various embodiments. With reference to FIGS. 1-6, the method 600 may be performed by a memory device control logic (e.g., device control logic 116) of a flash storage device (e.g., 106) coupled to memory portion in which are stored address translation tables including an FBA-to-LBA translation table and an LBA-to-PBA translation table. The memory device control logic may include control logic configured by circuitry, firmware, and / or processor-executable instructions stored in a non-transitory processor-readable medium (e.g., memory 110) to perform operations of the method 600. Means for performing the operations of the method 600 may be the memory device control logic as described with reference to FIGS. 1-6. In order to encompass the alternative configurations enabled in various embodiments, the hardware implementing the method 600 is referred to herein as a “control logic. ”
[0082] In block 602, the memory device control logic may receive a file ID and an FBA in a memory operation command from a computing device or other host device (e.g., SoC 102, 302, host control logic 104) . The file ID may identify a file associated with data stored in the memory device to be read, copied, or deleted, or data to be stored in the memory device. The FBA may indicate a block address within the identified file relative to the beginning of the file. In embodiments implemented in a UFS memory device, the memory operation command may be a UFS Protocol Information Unit (UPIU) in which the file ID is included in and obtained by the memory device control logic from a file ID field in an extra header segment of the UPIU, and the FBA is included in and obtained by the control logic from the logical block address field of the UPIU. In embodiments implemented in an NVMe memory device, the FBA may be provided in and obtained by the control logic from the Starting LBA (SLBA) field of the command Dword 10 and Command Dword 11 description, which may be repurposed to convey the FBA in read memory operation commands. Currently reserved fields in other Command Dwords (e.g., CDW2 or CDW3) may be used for conveying the File ID in NVMe applications. In embodiments implemented in an eMMC memory device, the FBA may be provided in and obtained by the control logic from a field in command 17 (CMD17) for single reads or command 18 (CMD18) for multiple reads, such as by repurposing those commands in eMMC applications. A new command may be required to send the File ID in eMMC applications.
[0083] In block 604, the memory device control logic may use the file ID and FBA to perform the memory operation identified in the memory operation command. The memory operations may include one of a write operation, a read operation, a copy operation, an unmap operation, or an erase operation. Methods for using the file ID and FBA in the memory operation command for reading data from and writing data to memory are described with reference to FIGS. 7A-7D.
[0084] FIG. 7A is a process flow diagram of an example method 700 that may be performed by a control logic (e.g., by a processor or processing system within the memory device control logic) of a memory device for performing memory operations using an FBA address mode in accordance with some embodiments. With reference to FIGS. 1-7A, the method 700 may be performed by a memory device control logic (e.g., device control logic 116) of a flash storage device (e.g., 106) coupled to a memory portion in which are stored address translation tables including an FBA-to-LBA translation table and an LBA-to-PBA translation table. The memory device control logic may include control logic configured by circuitry, firmware, and / or processor-executable instructions stored in a non-transitory processor-readable medium (e.g., memory 110) to perform operations of the method 600. Means for performing the operations of the method 600 may be the memory device control logic as described with reference to FIGS. 1-6. In order to encompass the alternative configurations enabled in various embodiments, the hardware implementing the method 600 is referred to herein as a “control logic. ”
[0085] In block 702, after receiving the file ID and FBA from the memory operation command in block 602, the control logic may obtain the file ID and FBA from one or more fields within the received memory operation command.
[0086] In block 704, the control logic may use the file ID to identify a corresponding FBA-to-LBA mapping table.
[0087] In block 706, the control logic may use the FBA in the identified FBA-to-LBA mapping table to identify the corresponding LBA.
[0088] In block 708, the control logic may use the corresponding LBA in an LBA-to-physical block address (PBA) mapping table to identify memory addresses in which to perform the memory operation identified in the memory operation command.
[0089] FIG. 7B is a process flow diagram of an example method 710 that may be performed by a control logic (e.g., by a processor or processing system within the memory device control logic) of a memory device for performing memory operations using the FBA address mode in accordance with some embodiments. With reference to FIGS. 1-7B, the method 710 may be performed by a memory device control logic (e.g., device control logic 116) of a flash storage device (e.g., 106) coupled to memory portion in which are stored address translation tables including an FBA-to-LBA translation table and an LBA-to-PBA translation table. The memory device control logic may include control logic configured by circuitry, firmware, and / or processor-executable instructions stored in a non-transitory processor-readable medium (e.g., memory 110) to perform operations of the method 600. Means for performing the operations of the method 600 may be the memory device control logic as described with reference to FIGS. 1-6. In order to encompass the alternative configurations enabled in various embodiments, the hardware implementing the method 600 is referred to herein as a “control logic. ”
[0090] In block 712, after identifying the PBA associated with the read command in block 706 of the method 700, the memory device control logic may retrieve data from the identified memory addresses.
[0091] In block 714, the control logic may provide the retrieved data to the computing device. In the example of a UFS memory device, the control logic may provide data retrieved from the memory to the computing device in a series of UPIU messages according to the UFS protocol.
[0092] FIG. 7C is a process flow diagram of an example method 720 that may be performed by a control logic (e.g., by a processor or processing system within the memory device control logic) of a memory device for performing memory operations using an FBA address mode in accordance with some embodiments. With reference to FIGS. 1-7C, the method 720 may be performed by a memory device control logic (e.g., device control logic 116) of a flash storage device (e.g., 106) coupled to memory portion in which are stored address translation tables including an FBA-to-LBA translation table and an LBA-to-PBA translation table. The memory device control logic may include control logic configured by circuitry, firmware, and / or processor-executable instructions stored in a non-transitory processor-readable medium (e.g., memory 110) to perform operations of the method 600. Means for performing the operations of the method 600 may be the memory device control logic as described with reference to FIGS. 1-6. In order to encompass the alternative configurations enabled in various embodiments, the hardware implementing the method 600 is referred to herein as a “control logic. ”
[0093] In block 722, after identifying the PBA associated with the write command in block 706 of the method 700, the memory device control logic may receive data to be stored in memory from the computing device. In some instances, the control logic may store the received data in a buffer, such as a write boost buffer 118, to receive the data before performing the writing operations.
[0094] In block 724, the control logic may write the received data to physical memory locations within the identified PBA. This writing of the data to memory locations may proceed according to conventional protocols for the memory device, such as the UFS protocol
[0095] In block 726, the control logic may update the FBA-to-LBA mapping table and LBA-to-PBA mapping table as necessary to identify locations in memory where the data is stored. Updating of the FBA-to-LBA and LBA-to-PBA mapping tables may be required when the amount of data written to memory expands beyond the address range of the corresponding data prior to the writing operation. If the data written to memory merely replaces corresponding data (e.g., updating some data) , the FBA-to-LBA and LBA-to-PBA mapping tables may not require updating.
[0096] FIG. 7D is a process flow diagram of an example method 730 that may be performed by a control logic (e.g., by a processor or processing system within the memory device control logic) of a memory device for performing memory operations using an FBA address mode when data for a file for which data has not been saved in the past in accordance with some embodiments. With reference to FIGS. 1-7D, the method 730 may be performed by a memory device control logic (e.g., device control logic 116) of a flash storage device (e.g., 106) coupled to memory portion in which are stored address translation tables including an FBA-to-LBA translation table and an LBA-to-PBA translation table. The memory device control logic may include control logic configured by circuitry, firmware, and / or processor-executable instructions stored in a non-transitory processor-readable medium (e.g., memory 110) to perform operations of the method 600. Means for performing the operations of the method 600 may be the memory device control logic as described with reference to FIGS. 1-6. In order to encompass the alternative configurations enabled in various embodiments, the hardware implementing the method 600 is referred to herein as a “control logic. ”
[0097] In block 732, after identifying the PBA associated with the write command in block 706 of the method 700, the control logic may recognize that the file ID is included in the memory operation command has not been received by the memory device before. In some embodiments, this condition may be recognized by the control logic when the file ID does not match file IDs stored in memory or does not match or correspond to any saved FBA-to-LBA translation table.
[0098] In block 734, the control logic may identify at least one PBA in memory in which to store data to be received from the computing device.
[0099] In block 724, the control logic may perform the operations in block 724 of the method 720 to write data received from the computing device in the memory at the identified at least one PBA as described.
[0100] In block 736, the control logic may update the LBA-to-PBA to provide a mapping of the one or more PBAs in which the data was written in block 724 to at least one LBA.
[0101] In block 738, the control logic may create and store an FBA-to-LBA mapping table correlating the FBA received from the computing device to the at least one LBA.
[0102] Memory devices implementing various embodiments (including, but not limited to, embodiments described with reference to FIGS. 1-7D) may be implemented in a wide variety of computing devices, which may include a laptop computer 800 (e.g., computing device 102, 200, 318) , an example of which is illustrated in FIG. 8. With reference to FIGS. 1-8, a laptop computer may include a touchpad touch surface 817 that serves as the computer’s pointing device, and thus may receive drag, scroll, and flick gestures similar to those implemented on computing devices equipped with a touch screen display and described above. A laptop computer 800 will typically include a processor 802 coupled to volatile memory 812 and a large capacity nonvolatile memory, such as a disk drive 813 of Flash memory. Additionally, the computer 800 may have one or more antenna 808 for sending and receiving electromagnetic radiation that may be connected to a wireless data link and / or cellular telephone transceiver 816 coupled to the processor 802. The computer 800 may also include a floppy disc drive 814 and a compact disc (CD) drive 815 coupled to the processor 802. The laptop computer 800 may include a touchpad 817, a keyboard 818, and a display 819 all coupled to the processor 802. Other configurations of the computing device may include a computer mouse or trackball coupled to the processor (e.g., via a universal serial bus (USB) input) as are well known, which may also be used in conjunction with the various embodiments.
[0103] FIG. 9 is a component block diagram of a computing device 900, such as a server, suitable for use with various embodiments. Such computing devices may include at least the components illustrated in FIG. 9. With reference to FIGS. 1–9, the computing device 900 (e.g., computing device 102, 200, 318) may include a processor 901 coupled to volatile memory 902 and a large capacity nonvolatile memory, such as a disk drive 903.
[0104] The computing device 900 may also include a peripheral memory access device such as a floppy disc drive, compact disc (CD) or digital video disc (DVD) drive 906 coupled to the processor 901. The computing device 800 may also include network access ports 904 (or interfaces) coupled to the processor 901 for establishing data connections with a network, such as the Internet and / or a local area network coupled to other system computers and servers.
[0105] The computing device 900 may include one or more antennas 907 for sending and receiving electromagnetic radiation that may be connected to a wireless communication link. The computing device 900 may include additional access ports, such as USB, Firewire, Thunderbolt, and the like for coupling to peripherals, external memory, or other devices.
[0106] FIG. 10 is a component block diagram of a computing device 1000 suitable for use with various embodiments. With reference to FIGS. 1–10, various embodiments may be implemented on a variety of computing devices 1000 (e.g., computing device 102, 200, 318) , an example of which is illustrated in FIG. 10 in the form of a smartphone. The computing device 1000 may include a first SoC 202 (e.g., a SoC-CPU) coupled to a second SoC 204 (e.g., a 5G capable SoC) . The first and second SoCs 202, 204 may be coupled to internal memory 1016, a display 1012, and to a speaker 1014. The first and second SoCs 202, 204 may also be coupled to at least one SIM 268 and / or a SIM interface that may store information supporting a first 5GNR subscription and a second 5GNR subscription, which support service on a 5G non-standalone (NSA) network.
[0107] The computing device 1000 may include an antenna 1004 for sending and receiving electromagnetic radiation that may be connected to a wireless transceiver 266 coupled to one or more processors in the first and / or second SoCs 202, 204. The computing device 1000 may also include menu selection buttons or rocker switches 1020 for receiving user inputs.
[0108] The computing device 1000 also includes a sound encoding / decoding (CODEC) circuit 1010, which digitizes sound received from a microphone into data packets suitable for wireless transmission and decodes received sound data packets to generate analog signals that are provided to the speaker to generate sound. Also, one or more of the processors in the first and second SoCs 202, 204, wireless transceiver 266 and CODEC 1010 may include a digital signal processor (DSP) circuit (not shown separately) .
[0109] The processors of the computer 800, the computing device 900, and the computing device 1000 may be any programmable microprocessor, microcomputer or multiple-processor chip or chips that can be configured by software instructions (applications) to perform a variety of functions, including the functions of the various embodiments described below. In some mobile devices, multiple processors may be provided, such as one processor within an SoC 204 dedicated to wireless communication functions and one processor within an SoC 202 dedicated to running other applications. Software applications may be stored in memory 220, 1016 before they are accessed and loaded into the processor. The processors may include internal memory sufficient to store the application software instructions.
[0110] Implementation examples are described in the following paragraphs. While some of the following implementation examples are described in terms of example methods that may be performed in a computing device by a host control logic, further example implementations may include: a computing device including a memory device control logic and a host control logic configured to perform the methods of the following implementation examples; a computing device including means for performing functions of the following implementation examples, a memory device control logic and a host control logic suitable for use in a computing device, in which the memory device control logic and the host control logic each includes a processor configured to perform the methods of the following implementation examples; and a non-transitory, processor-readable memory having stored thereon processor-executable instructions configured to cause a memory device control logic and a host control logic in a computing device configured to perform the methods of the following implementation examples.
[0111] 1. A memory device, including: a main storage portion of memory; an address table storage portion of memory, the address table storage portion including file block address (FBA) -to-logical block address (LBA) tables, and a LBA to physical block address (PBA) table; an input / output interface for receiving memory operation commands and data from and providing data to a connected computing device; and a control logic coupled to the input / output interface and configured to perform memory operations on the main storage portion of memory in response to memory operation commands using a file identifier (ID) and an FBA in memory operation commands received from the computing device to identify physical memory locations for performing the memory operations.
[0112] Example 2. The memory device of example 1, in which the control logic performs one of a write operation, a read operation, a copy operation, an unmap operation, or an erase operation in response to the memory operation command.
[0113] Example 3. The memory device of either of examples 1 or 2, in which the control logic is further configured to: obtain the file ID and FBA from one or more fields within a received memory operation command; use the file ID to identify a corresponding FBA-to-logical block address (LBA) mapping table; use the FBA in the identified FBA-to-LBA mapping table to identify a corresponding LBA; and use the corresponding LBA in a LBA-to-physical block address (PBA) mapping table to identify memory addresses in which to perform the memory operation identified in the memory operation command.
[0114] Example 4. The memory device of example 3, in which in response to receiving a read memory operation command the control logic is further configured to:retrieve data from the identified memory addresses; and provide the retrieved data to the computing device.
[0115] Example 5. The memory device of either of examples 3 or 4, in which in response to receiving a write memory operation command, the control logic is further configured to: receiving data to be stored in memory from the computing device; writing the received data to physical memory locations within the identified PBA; and updating the FBA-to-LBA mapping table and LBA-to-PBA mapping table as necessary to identify locations in memory where the data is stored.
[0116] Example 6. The memory device of any of examples 3-5, in which in response to receiving a write memory operation command, the control logic is further configured to: recognize that the file ID is in the memory operation command has not been received by the memory device before; identify at least one PBA in memory in which to store data to be received from the computing device; write data received from the computing device in the identified at least one PBA; update the LBA-to-PBA to provide a mapping of the at least one PBA to at least one LBA; and create an FBA-to-LBA mapping table correlating the FBA received from the computing device to the at least one LBA.
[0117] Example 7. The memory device of any of examples 1-6, in which: the control logic is further configured to perform memory operations using a hybrid addressing mode using both LBA addresses of an LBA addressing mode and file ID plus FBA addressing of an FBA addressing mode; the memory operation command further includes a field identifying a selected addressing mode; and the memory operation command further includes a field identifying a hybrid block addressing LBA range identifying an LBA range starting from 0 that can be accessed using the LBA addressing mode.
[0118] Example 8. The method of example 7, in which one of an FBA address mode, LBA address mode, or the hybrid mode is identified for individual logic units, partitions, or namespace.
[0119] Example 9. The memory device of any of examples 1-8, in which: the memory device is a universal FLASH storage (UFS) device; the memory operation command is a UFS Protocol Information Unit (UPIU) ; the file ID is included in and obtained by the memory device from a file ID field in an extra header segment of the UPIU; and the FBA is included in the logical block address field of the UPIU.
[0120] Example 10. The memory device of any of examples 1-9, in which the memory device is a Nonvolatile Memory Express (NVMe) memory device, and the FBA is provided in a Starting LBA (SLBA) field of a command Dword.
[0121] Example 11. The memory device of any of examples 1-10, in which the memory device is a MultiMediaCard (eMMC) device, and the FBA is provided in command 17 (CMD17) or command 18 (CMD18) .
[0122] Example 12. A method of performing a memory operation on a memory device in response to a memory operation command received from a computing device connected to the memory device, including: receiving a file identifier (ID) and a file block address (FBA) in the memory operation command, in which the file ID identifies a file associated with data stored or to be stored in memory, and the FBA indicates a block address within the identified file relative to a beginning of the file; and using the file ID and FBA to perform the memory operation identified in the memory operation command.
[0123] Example 13. The method of example 12, in which the memory operation specified in the memory operation command is one of a write operation, a read operation, a copy operation, an unmap operation, or an erase operation.
[0124] Example 14. The method of either of examples 12 or 13, in which using the file ID and FBA to perform the memory operation identified in the memory operation command includes: obtaining the file ID and FBA from one or more fields within the memory operation command; using the file ID to identify a corresponding FBA-to-logical block address (LBA) mapping table; using the FBA in the identified FBA-to-LBA mapping table to identify the corresponding LBA; and using the corresponding LBA in a LBA-to-physical block address (PBA) mapping table to identify memory addresses in which to perform the memory operation identified in the memory operation command.
[0125] Example 15. The method of example 14, in which the memory operation specified in the memory operation command is a read operation, the method further including: retrieving data from the identified memory addresses; and providing the retrieved data to the computing device.
[0126] Example 16. The method of either of examples 14 or 15, in which the memory operation specified in the memory operation command is a write operation, the method further including: receiving data to be stored in memory from the computing device; writing the received data to physical memory locations within the identified PBA; and updating the FBA-to-LBA mapping table and LBA-to-PBA mapping table as necessary to identify locations in memory where the data is stored.
[0127] Example 17. The method of any of example 14-16, in which the memory operation specified in the memory operation command is a write operation, the method further including: recognizing that the file ID is in the memory operation command has not been received by the memory device before; identifying at least one PBA in memory in which to store data to be received from the computing device; writing data received from the computing device in the identified at least one PBA; updating the LBA-to-PBA to provide a mapping of the at least one PBA to at least one LBA; creating an FBA-to-LBA mapping table correlating the FBA received from the computing device to the at least one LBA.
[0128] Example 18. The method of any of examples 12-17, in which: the memory device is configured to perform memory operations using a hybrid addressing mode using both LBA addresses of an LBA addressing mode and file ID plus FBA addressing of an FBA addressing mode; the memory operation command further includes a field identifying a selected addressing mode; and the memory operation command further includes a field identifying a hybrid block addressing LBA range identifying an LBA range starting from 0 that can be accessed using the LBA addressing mode.
[0129] Example 19. The method of any of examples 12-18, in which one of an FBA address mode, LBA address mode, or the hybrid mode is identified for individual logic units, partitions, or namespace.
[0130] Example 20. The method of any of examples 12-18, in which: the memory device is a universal FLASH storage (UFS) device; the memory operation command is a UFS Protocol Information Unit (UPIU) ; the file ID is included in and obtained by the memory device from a file ID field in an extra header segment of the UPIU; and the FBA is included in the logical block address field of the UPIU.
[0131] As used in this application, the terms “component, ” “module, ” “system, ” and the like are intended to include a computer-related entity, such as, but not limited to, hardware, firmware, a combination of hardware and software, software, or software in execution, which are configured to perform particular operations or functions. For example, a component may be, but is not limited to, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and / or a computer. By way of illustration, both an application running on a computing device and the computing device may be referred to as a component. One or more components may reside within a process and / or thread of execution and a component may be localized on one processor or core and / or distributed between two or more processors or cores. In addition, these components may execute from various non-transitory computer readable media having various instructions and / or data structures stored thereon. Components may communicate by way of local and / or remote processes, function or procedure calls, electronic signals, data packets, memory read / writes, and other known network, computer, processor, and / or process related communication methodologies.
[0132] Various embodiments illustrated and described are provided merely as examples to illustrate various features of the claims. However, features shown and described with respect to any given embodiment are not necessarily limited to the associated embodiment and may be used or combined with other embodiments that are shown and described. Further, the claims are not intended to be limited by any one example embodiment. For example, one or more of the operations of the methods may be substituted for or combined with one or more operations of the methods.
[0133] The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the operations of various embodiments must be performed in the order presented. As will be appreciated by one of skill in the art the order of operations in the foregoing embodiments may be performed in any order. Words such as “thereafter, ” “then, ” “next, ” etc. are not intended to limit the order of the operations; these words are simply used to guide the reader through the description of the methods. Further, any reference to claim elements in the singular, for example, using the articles “a, ” “an” or “the” is not to be construed as limiting the element to the singular.
[0134] The various illustrative logical blocks, modules, circuits, and algorithm operations described in connection with the embodiments may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and operations have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the claims.
[0135] The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the embodiments 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 conventional processor, control logic, microcontrol logic, 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, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some operations or methods may be performed by circuitry that is specific to a given function.
[0136] In one or more embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable medium or non-transitory processor-readable medium. The operations of a method or algorithm disclosed herein may be embodied in a processor-executable software module, which may reside on a non-transitory computer-readable or processor-readable storage medium. Non-transitory computer-readable or processor-readable storage media may be any storage media that may be accessed by a computer or a processor. By way of example but not limitation, such non-transitory computer-readable or processor-readable media may include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. Disk and disc, as used herein, includes compact disc (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 non-transitory computer-readable and processor-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and / or instructions on a non-transitory processor-readable medium and / or computer-readable medium, which may be incorporated into a computer program product.
[0137] The preceding description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the claims. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the scope of the claims. Thus, the present disclosure is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the following claims and the principles and novel features disclosed herein.
Claims
1.A memory device, comprising:a main storage portion of memory;an address table storage portion of memory, the address table storage portion including file block address (FBA) -to-logical block address (LBA) tables, and a LBA-to-physical block address (PBA) table;an input / output interface for receiving memory operation commands and data from and providing data to a connected computing device; anda control logic coupled to the input / output interface and configured to perform memory operations on the main storage portion of memory in response to memory operation commands using a file identifier (ID) and an FBA in memory operation commands received from the computing device to identify physical memory locations for performing the memory operations.2.The memory device of claim 1, wherein the control logic performs one of a write operation, a read operation, a copy operation, an unmap operation, or an erase operation in response to the memory operation commands.3.The memory device of claim 1, wherein the control logic is further configured to:obtain the file ID and FBA from one or more fields within a received memory operation command;use the file ID to identify a corresponding FBA-to-logical block address (LBA) mapping table;use the FBA in the identified FBA-to-LBA mapping table to identify a corresponding LBA; anduse the corresponding LBA in the LBA-to-PBA mapping table to identify memory addresses in which to perform the memory operation identified in the memory operation command.4.The memory device of claim 3, wherein in response to receiving a read memory operation command the control logic is further configured to:retrieve data from the identified memory addresses; andprovide the retrieved data to the computing device.5.The memory device of claim 3, wherein in response to receiving a write memory operation command, the control logic is further configured to:receiving data to be stored in memory from the computing device;writing the received data to physical memory locations within the identified PBA; andupdating the FBA-to-LBA mapping table and LBA-to-PBA mapping table as necessary to identify locations in memory where the data is stored.6.The memory device of claim 3, wherein in response to receiving a write memory operation command, the control logic is further configured to:recognize that the file ID is in the memory operation command has not been received by the memory device before;identify at least one PBA in memory in which to store data to be received from the computing device;write data received from the computing device in the identified at least one PBA;update the LBA-to-PBA to provide a mapping of the at least one PBA to at least one LBA; andcreate an FBA-to-LBA mapping table correlating the FBA received from the computing device to the at least one LBA.7.The memory device of claim 1, wherein:the control logic is further configured to perform memory operations using a hybrid addressing mode using both LBA addresses of an LBA addressing mode and file ID plus FBA addressing of an FBA addressing mode;memory operation commands further includes a field identifying a selected addressing mode; andmemory operation commands further includes a field identifying a hybrid block addressing LBA range identifying an LBA range starting from 0 that can be accessed using the LBA addressing mode.8.The memory device of claim 7, wherein one of an FBA address mode, LBA address mode, or the hybrid mode is identified for individual logic units, partitions, or namespace.9.The memory device of claim 1, wherein:the memory device is a universal FLASH storage (UFS) device;the memory operation command is a UFS Protocol Information Unit (UPIU) ;the file ID is included in and obtained by the memory device from a file ID field in an extra header segment of the UPIU; andthe FBA is included in the logical block address field of the UPIU.10.The memory device of claim 1, wherein the memory device is a Nonvolatile Memory Express (NVMe) memory device, and the FBA is provided in a Starting LBA (SLBA) field of a command Dword.11.The memory device of claim 1, wherein the memory device is a MultiMediaCard (eMMC) device, and the FBA is provided in command 17 (CMD17) or command 18 (CMD18) .12.A method of performing a memory operation on a memory device in response to a memory operation command received from a computing device connected to the memory device, comprising:receiving a file identifier (ID) and a file block address (FBA) in the memory operation command, wherein the file ID identifies a file associated with data stored or to be stored in memory, and the FBA indicates a block address within the identified file relative to a beginning of the file; andusing the file ID and FBA to perform the memory operation identified in the memory operation command.13.The method of claim 12, wherein the memory operation specified in the memory operation command is one of a write operation, a read operation, a copy operation, an unmap operation, or an erase operation.14.The method of claim 12, wherein using the file ID and FBA to perform the memory operation identified in the memory operation command comprises:obtaining the file ID and FBA from one or more fields within the memory operation command;using the file ID to identify a corresponding FBA-to-logical block address (LBA) mapping table;using the FBA in the identified FBA-to-LBA mapping table to identify the corresponding LBA; andusing the corresponding LBA in a LBA-to-physical block address (PBA) mapping table to identify memory addresses in which to perform the memory operation identified in the memory operation command.15.The method of claim 14, wherein the memory operation specified in the memory operation command is a read operation, the method further comprising:retrieving data from the identified memory addresses; andproviding the retrieved data to the computing device.16.The method of claim 14, wherein the memory operation specified in the memory operation command is a write operation, the method further comprising:receiving data to be stored in memory from the computing device;writing the received data to physical memory locations within the identified PBA; andupdating the FBA-to-LBA mapping table and LBA-to-PBA mapping table as necessary to identify locations in memory where the data is stored.17.The method of claim 14, wherein the memory operation specified in the memory operation command is a write operation, the method further comprising:recognizing that the file ID is in the memory operation command has not been received by the memory device before;identifying at least one PBA in memory in which to store data to be received from the computing device;writing data received from the computing device in the identified at least one PBA;updating the LBA-to-PBA to provide a mapping of the at least one PBA to at least one LBA; andcreating an FBA-to-LBA mapping table correlating the FBA received from the computing device to the at least one LBA.18.The method of claim 12, wherein:the memory device is configured to perform memory operations using a hybrid addressing mode using both LBA addresses of an LBA addressing mode and file ID plus FBA addressing of an FBA addressing mode;the memory operation command further includes a field identifying a selected addressing mode; andthe memory operation command further includes a field identifying a hybrid block addressing LBA range identifying an LBA range starting from 0 that can be accessed using the LBA addressing mode.19.The method of claim 18, wherein one of an FBA address mode, LBA address mode, or the hybrid mode is identified for individual logic units, partitions, or namespace.20.The method of claim 12, wherein:the memory device is a universal FLASH storage (UFS) device;the memory operation command is a UFS Protocol Information Unit (UPIU) ;the file ID is included in and obtained by the memory device from a file ID field in an extra header segment of the UPIU; andthe FBA is included in the logical block address field of the UPIU.
Citation Information
Patent Citations
Implementing method, apparatus and user equipment for document transmission in message service
CN101291300A
Method and device for mounting file or catalogue to local or remote host
CN101853254A
Satellite load software on-orbit maintenance equipment and method
CN111796850A
Facilitating sequential reads in memory sub-systems
US20210263864A1