Electronic device, method, and non-transitory computer-readable recording medium for adjusting capacity between partitions

By using a file system to dynamically allocate and adjust storage capacity between partitions based on available capacity and cell level ratios, the electronic device enhances performance and responsiveness in managing nonvolatile memory areas.

WO2025110501A1PCT designated stage expired Publication Date: 2025-05-30SAMSUNG ELECTRONICS CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/KR2024/016315
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-12-12
Filing Date
2024-10-24
Publication Date
2025-05-30

AI Technical Summary

Technical Problem

Existing electronic devices struggle to efficiently manage and allocate storage capacity between partitions in nonvolatile memory areas, leading to suboptimal performance and responsiveness.

Method used

The electronic device employs a processor and a file system to identify available capacity in a first partition and allocate a portion of that capacity to a second partition based on designated capacity thresholds, while adjusting the capacity by ratios corresponding to different cell levels in the memory areas.

Benefits of technology

This approach enables dynamic and efficient management of storage capacity between partitions, improving responsiveness and performance by optimizing the allocation of memory resources based on available capacity and cell level ratios.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure KR2024016315_30052025_PF_FP_ABST
    Figure KR2024016315_30052025_PF_FP_ABST
Patent Text Reader

Abstract

An electronic device is disclosed. The electronic device may comprise a file system for managing a non-volatile memory area with a first partition and a second partition. A first memory area having a first capacity in the non-volatile memory area may be assigned to the first partition, and a second memory area having a second capacity in the non-volatile memory area may be assigned to the second partition. The electronic device may identify an available capacity in the first memory area assigned to the first partition. The electronic device may assign a partial area of the first memory area to the second partition via the file system on the basis that the available capacity is greater than or equal to a designated capacity. A capacity of the partial memory area assigned to the second partition may be reduced by a ratio of a second cell level of the second memory area to a first cell level.
Need to check novelty before this filing date? Find Prior Art

Description

Electronic device, method, and non-transitory computer-readable recording medium for controlling capacity between partitions

[0001] The following descriptions relate to electronic devices, methods, and non-transitory computer-readable recording media for controlling capacity between partitions.

[0002] A host (e.g., a smartphone) of a universal flash storage (UFS) device can communicate with a storage device (e.g., a solid-state drive (SSD)) via a predetermined interface. The host can perform various management operations on the storage device. To perform management operations on the storage device, the host can use various commands defined by the predetermined interface.

[0003] An electronic device is disclosed. The electronic device may include a processor. The electronic device may include a storage device including a non-volatile memory area. The electronic device may include a memory storing a file system and instructions for managing the non-volatile memory area into a first partition and a second partition. The first partition may be allocated a first memory area having a first capacity among the non-volatile memory areas, and the second partition may be allocated a second memory area having a second capacity among the non-volatile memory areas. The instructions, when executed by the processor, may cause the electronic device to: identify an available capacity in the first memory area allocated to the first partition. The instructions, when executed by the processor, may cause the electronic device to: allocate a portion of the first memory area to the second partition through the file system based on the available capacity being greater than or equal to a designated capacity. The capacity of the part of the area allocated to the second partition may be reduced by the ratio of the second cell level of the second memory area to the first cell level.

[0004] A method is disclosed. The method can be performed in an electronic device, comprising a storage device including a non-volatile memory area, and a memory storing a file system for managing the non-volatile memory area into a first partition and a second partition. The method can include an operation of identifying an available capacity in a first memory area allocated to the first partition. The method can include an operation of allocating a portion of the first memory area to the second partition through the file system based on the available capacity being greater than or equal to a specified capacity. The capacity of the portion of the area allocated to the second partition can be reduced by a ratio of a second cell level of the second memory area to a first cell level.

[0005] A non-transitory computer-readable storage medium is disclosed. The non-transitory computer-readable storage medium can store a program including instructions. The instructions, when executed by a processor of an electronic device, including a storage device including a non-volatile memory area and a memory storing a file system for managing the non-volatile memory area into a first partition and a second partition, can cause the electronic device to: identify available capacity in the first memory area allocated to the first partition. The instructions, when executed by the processor, can cause the electronic device to: allocate a portion of the first memory area to the second partition through the file system based on the available capacity being greater than or equal to a designated capacity. The capacity of the portion of the area allocated to the second partition can be reduced by a ratio of a second cell level of the second memory area to a first cell level.

[0006] FIG. 1 is a block diagram of an electronic device within a network environment according to various embodiments.

[0007] Figure 2 is a block diagram of an electronic device according to one embodiment.

[0008] Figure 3 is a block diagram of an electronic device according to one embodiment.

[0009] FIG. 4a illustrates an example in which an electronic device assigns all memory areas of a memory unit to a first LU.

[0010] FIG. 4b illustrates an example in which an electronic device creates a second LU through some memory areas among the memory areas allocated to the first LU.

[0011] FIG. 4c illustrates an example in which an electronic device allocates some of the memory areas allocated to the first LU to the second LU.

[0012] FIG. 4d illustrates an example in which an electronic device assigns some memory areas among the memory areas allocated to the second LU to the first LU.

[0013] FIG. 4e illustrates an example in which an electronic device creates a third LU through some memory areas among the memory areas allocated to the first LU.

[0014] FIG. 5 is a flowchart illustrating the operation of an electronic device according to one embodiment.

[0015] FIG. 6A is a flowchart illustrating the operation of an electronic device according to one embodiment.

[0016] FIG. 6b is a flowchart illustrating the operation of an electronic device according to one embodiment.

[0017] FIG. 7 is a flowchart illustrating the operation of an electronic device according to one embodiment.

[0018] FIG. 1 is a block diagram of an electronic device (101) within a network environment (100) according to various embodiments.

[0019] Referring to FIG. 1, in a network environment (100), an electronic device (101) may communicate with an electronic device (102) via a first network (198) (e.g., a short-range wireless communication network), or may communicate with at least one of an electronic device (104) or a server (108) via a second network (199) (e.g., a long-range wireless communication network). According to one embodiment, the electronic device (101) may communicate with the electronic device (104) via the server (108). According to one embodiment, the electronic device (101) may include a processor (120), a memory (130), an input module (150), an audio output module (155), a display module (160), an audio module (170), a sensor module (176), an interface (177), a connection terminal (178), a haptic module (179), a camera module (180), a power management module (188), a battery (189), a communication module (190), a subscriber identification module (196), or an antenna module (197). In some embodiments, the electronic device (101) may omit at least one of these components (e.g., the connection terminal (178)), or may have one or more other components added. In some embodiments, some of these components (e.g., the sensor module (176), the camera module (180), or the antenna module (197)) may be integrated into one component (e.g., the display module (160)).

[0020] The processor (120) may, for example, execute software (e.g., a program (140)) to control at least one other component (e.g., a hardware or software component) of the electronic device (101) connected to the processor (120) and perform various data processing or operations. According to one embodiment, as at least a part of the data processing or operations, the processor (120) may store commands or data received from other components (e.g., a sensor module (176) or a communication module (190)) in a volatile memory (132), process the commands or data stored in the volatile memory (132), and store result data in a non-volatile memory (134). According to one embodiment, the processor (120) may include a main processor (121) (e.g., a central processing unit or an application processor) or an auxiliary processor (123) (e.g., a graphics processing unit, a neural processing unit (NPU), an image signal processor, a sensor hub processor, or a communication processor) that can operate independently or together with the main processor (121). For example, when the electronic device (101) includes the main processor (121) and the auxiliary processor (123), the auxiliary processor (123) may be configured to use less power than the main processor (121) or to be specialized for a given function. The auxiliary processor (123) may be implemented separately from the main processor (121) or as a part thereof.

[0021] The auxiliary processor (123) may control at least a portion of functions or states associated with at least one component (e.g., a display module (160), a sensor module (176), or a communication module (190)) of the electronic device (101), for example, on behalf of the main processor (121) while the main processor (121) is in an inactive (e.g., sleep) state, or together with the main processor (121) while the main processor (121) is in an active (e.g., application execution) state. In one embodiment, the auxiliary processor (123) (e.g., an image signal processor or a communication processor) may be implemented as a part of another functionally related component (e.g., a camera module (180) or a communication module (190)). In one embodiment, the auxiliary processor (123) (e.g., a neural network processing unit) may include a hardware structure specialized for processing artificial intelligence models. The artificial intelligence models may be generated through machine learning. This learning can be performed, for example, on the electronic device (101) itself where the artificial intelligence model is executed, or can be performed through a separate server (e.g., server (108)). The learning algorithm can include, for example, supervised learning, unsupervised learning, semi-supervised learning, or reinforcement learning, but is not limited to the examples described above. The artificial intelligence model can include multiple artificial neural network layers.The artificial neural network may be one of a deep neural network (DNN), a convolutional neural network (CNN), a recurrent neural network (RNN), a restricted Boltzmann machine (RBM), a deep belief network (DBN), a bidirectional recurrent deep neural network (BRDNN), a deep Q-network, or a combination of two or more of the above, but is not limited to the examples described above. In addition to, or alternatively to, a hardware structure, an artificial intelligence model may include a software structure.

[0022] The memory (130) can store various data used by at least one component (e.g., processor (120) or sensor module (176)) of the electronic device (101). The data can include, for example, software (e.g., program (140)) and input data or output data for commands related thereto. The memory (130) can include volatile memory (132) or non-volatile memory (134).

[0023] The program (140) may be stored as software in the memory (130) and may include, for example, an operating system (142), middleware (144), or an application (146).

[0024] The input module (150) can receive commands or data to be used in a component of the electronic device (101) (e.g., a processor (120)) from an external source (e.g., a user) of the electronic device (101). The input module (150) can include, for example, a microphone, a mouse, a keyboard, a key (e.g., a button), or a digital pen (e.g., a stylus pen).

[0025] The audio output module (155) can output audio signals to the outside of the electronic device (101). The audio output module (155) can include, for example, a speaker or a receiver. The speaker can be used for general purposes, such as multimedia playback or recording playback. The receiver can be used to receive incoming calls. In one embodiment, the receiver can be implemented separately from the speaker or as part of the speaker.

[0026] The display module (160) can visually provide information to an external party (e.g., a user) of the electronic device (101). The display module (160) may include, for example, a display, a holographic device, or a projector and a control circuit for controlling the device. According to one embodiment, the display module (160) may include a touch sensor configured to detect a touch, or a pressure sensor configured to measure the intensity of a force generated by the touch.

[0027] The audio module (170) can convert sound into an electrical signal, or vice versa, convert an electrical signal into sound. According to one embodiment, the audio module (170) can acquire sound through the input module (150), output sound through the sound output module (155), or an external electronic device (e.g., electronic device (102)) (e.g., speaker or headphone) directly or wirelessly connected to the electronic device (101).

[0028] The sensor module (176) can detect the operating status (e.g., power or temperature) of the electronic device (101) or the external environmental status (e.g., user status) and generate an electrical signal or data value corresponding to the detected status. According to one embodiment, the sensor module (176) can include, for example, a gesture sensor, a gyro sensor, a barometric pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an IR (infrared) sensor, a biometric sensor, a temperature sensor, a humidity sensor, or an illuminance sensor.

[0029] The interface (177) may support one or more designated protocols that may be used to directly or wirelessly connect the electronic device (101) with an external electronic device (e.g., the electronic device (102)). In one embodiment, the interface (177) may include, for example, a high definition multimedia interface (HDMI), a universal serial bus (USB) interface, an SD card interface, or an audio interface.

[0030] The connection terminal (178) may include a connector through which the electronic device (101) may be physically connected to an external electronic device (e.g., electronic device (102)). According to one embodiment, the connection terminal (178) may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (e.g., a headphone connector).

[0031] The haptic module (179) can convert electrical signals into mechanical stimuli (e.g., vibration or movement) or electrical stimuli that a user can perceive through tactile or kinesthetic sensations. According to one embodiment, the haptic module (179) can include, for example, a motor, a piezoelectric element, or an electrical stimulation device.

[0032] The camera module (180) can capture still images and videos. According to one embodiment, the camera module (180) may include one or more lenses, image sensors, image signal processors, or flashes.

[0033] The power management module (188) can manage power supplied to the electronic device (101). According to one embodiment, the power management module (188) can be implemented as, for example, at least a part of a power management integrated circuit (PMIC).

[0034] A battery (189) may power at least one component of the electronic device (101). In one embodiment, the battery (189) may include, for example, a non-rechargeable primary battery, a rechargeable secondary battery, or a fuel cell.

[0035] The communication module (190) may support the establishment of a direct (e.g., wired) communication channel or a wireless communication channel between the electronic device (101) and an external electronic device (e.g., electronic device (102), electronic device (104), or server (108)), and the performance of communication through the established communication channel. The communication module (190) may operate independently from the processor (120) (e.g., application processor) and may include one or more communication processors that support direct (e.g., wired) communication or wireless communication. According to one embodiment, the communication module (190) may include a wireless communication module (192) (e.g., a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module (194) (e.g., a local area network (LAN) communication module, or a power line communication module). Among these communication modules, the corresponding communication module can communicate with an external electronic device (104) via a first network (198) (e.g., a short-range communication network such as Bluetooth, wireless fidelity (WiFi) direct, or infrared data association (IrDA)) or a second network (199) (e.g., a long-range communication network such as a legacy cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (e.g., a LAN or WAN)). These various types of communication modules can be integrated into a single component (e.g., a single chip) or implemented as multiple separate components (e.g., multiple chips). The wireless communication module (192) can verify or authenticate the electronic device (101) within a communication network such as the first network (198) or the second network (199) by using subscriber information (e.g., an international mobile subscriber identity (IMSI)) stored in the subscriber identification module (196).

[0036] The wireless communication module (192) can support 5G networks and next-generation communication technologies following the 4G network, such as NR access technology (new radio access technology). The NR access technology can support high-speed transmission of high-capacity data (eMBB (enhanced mobile broadband)), minimization of terminal power and connection of multiple terminals (mMTC (massive machine type communications)), or high reliability and low latency (URLLC (ultra-reliable and low-latency communications)). The wireless communication module (192) can support, for example, a high-frequency band (e.g., mmWave band) to achieve a high data transmission rate. The wireless communication module (192) can support various technologies for securing performance in a high-frequency band, such as beamforming, massive multiple-input and multiple-output (MIMO), full dimensional MIMO (FD-MIMO), array antenna, analog beam-forming, or large scale antenna. The wireless communication module (192) can support various requirements specified in the electronic device (101), an external electronic device (e.g., the electronic device (104)), or a network system (e.g., the second network (199)). According to one embodiment, the wireless communication module (192) can support a peak data rate (e.g., 20 Gbps or more) for realizing eMBB, a loss coverage (e.g., 664 dB or less) for realizing mMTC, or a U-plane latency (e.g., 0.5 ms or less for downlink (DL) and uplink (UL), or 6 ms or less for round trip) for realizing URLLC.

[0037] The antenna module (197) can transmit or receive signals or power to or from an external device (e.g., an external electronic device). In one embodiment, the antenna module (197) may include an antenna including a radiator formed of a conductor or a conductive pattern formed on a substrate (e.g., a PCB). In one embodiment, the antenna module (197) may include a plurality of antennas (e.g., an array antenna). In this case, at least one antenna suitable for a communication method used in a communication network, such as the first network (198) or the second network (199), may be selected from the plurality of antennas, for example, by the communication module (190). A signal or power may be transmitted or received between the communication module (190) and an external electronic device via the at least one selected antenna. In some embodiments, in addition to the radiator, another component (e.g., a radio frequency integrated circuit (RFIC)) may be additionally formed as a part of the antenna module (197).

[0038] According to various embodiments, the antenna module (197) may form a mmWave antenna module. In one embodiment, the mmWave antenna module may include a printed circuit board, an RFIC disposed on or adjacent a first side (e.g., a bottom side) of the printed circuit board and capable of supporting a designated high-frequency band (e.g., a mmWave band), and a plurality of antennas (e.g., an array antenna) disposed on or adjacent a second side (e.g., a top side or a side side) of the printed circuit board and capable of transmitting or receiving signals in the designated high-frequency band.

[0039] At least some of the above components can be interconnected and exchange signals (e.g., commands or data) with each other via a communication method between peripheral devices (e.g., a bus, GPIO (general purpose input and output), SPI (serial peripheral interface), or MIPI (mobile industry processor interface)).

[0040] According to one embodiment, commands or data may be transmitted or received between the electronic device (101) and an external electronic device (104) via a server (108) connected to a second network (199). Each of the external electronic devices (102 or 104) may be the same or a different type of device as the electronic device (101). According to one embodiment, all or part of the operations executed in the electronic device (101) may be executed in one or more of the external electronic devices (102, 104, or 108). For example, when the electronic device (101) is to perform a certain function or service automatically or in response to a request from a user or another device, the electronic device (101) may, instead of or in addition to executing the function or service itself, request one or more external electronic devices to perform the function or at least a part of the service. One or more external electronic devices that receive the request may execute at least a portion of the requested function or service, or an additional function or service related to the request, and transmit the result of the execution to the electronic device (101). The electronic device (101) may process the result as is or additionally and provide it as at least a portion of a response to the request. For this purpose, cloud computing, distributed computing, mobile edge computing (MEC), or client-server computing technology may be used, for example. The electronic device (101) may provide an ultra-low latency service by using distributed computing or mobile edge computing, for example. In another embodiment, the external electronic device (104) may include an Internet of Things (IoT) device. The server (108) may be an intelligent server utilizing machine learning and / or a neural network. According to one embodiment, the external electronic device (104) or the server (108) may be included in the second network (199).The electronic device (101) can be applied to intelligent services (e.g., smart home, smart city, smart car, or healthcare) based on 5G communication technology and IoT-related technology.

[0041] Figure 2 is a block diagram of an electronic device (101) according to one embodiment.

[0042] Referring to FIG. 2, the electronic device (101) may include a host device (201) and a storage device (205). The host device (201) and the storage device (205) may be electrically connected to each other through an interface (250). In one embodiment, the electronic device (101) may comply with the UFS (universal flash storage) standard announced by JEDEC (joint electron device engineering council). The host device (201) and the storage device (205) of FIG. 2 may be included in one package (or one module). However, the present invention is not limited thereto. The host device (201) and the storage device (205) of FIG. 2 may be included in different packages (or different modules).

[0043] In one embodiment, the host device (201) may be included in the processor (120) of FIG. 1. In one embodiment, the host device (201) may include an application (146), a storage device driver (210), a host device controller (220), and a UFS interconnection (UIC) layer (240). Hereinafter, the UFS interconnection (UIC) layer (240) may be referred to as a UIC layer (240).

[0044] In one embodiment, the application (146) may refer to a program that desires to communicate with the storage device (205) to utilize the functions of the storage device (205). The application (146) may transmit an input-output request (IOR) to the storage device driver (210) for input / output to the storage device (205). The input / output request (IOR) may include, but is not limited to, a data read request, a data write request, and / or a data discard request.

[0045] In one embodiment, the storage device driver (210) can manage the host device controller (220) via the UFS-HCI (host controller interface). The storage device driver (210) can convert an input / output request generated by an application (146) into a UFS command defined by the UFS standard and transmit the converted UFS command to the host device controller (220). One input / output request can be converted into multiple UFS commands. The UFS command can basically be a command defined by the SCSI (small computer system interface) standard. The UFS command can also be a command exclusive to the UFS standard. However, it is not limited thereto.

[0046] In one embodiment, the host device controller (220) may transmit UFS commands converted by the storage device driver (210) to the UIC layer (260) of the storage device (205) through the UIC layer (240) and the interface (250).

[0047] In one embodiment, the UIC layer (240) on the host device (201) side may include a mobile industry processor interface (MIPI) M-PHY (245) and a MIPI UniPro (unified protocol, 241). The UIC layer (260) on the storage device (205) side may include a MIPI M-PHY (265) and a MIPI UniPro (261).

[0048] In one embodiment, the interface (250) may be an interface based on the UFS standard, but is not limited thereto. For example, the interface (250) may be an interface based on DDR (double data rate), DDR2, DDR3, DDR4, DDR5, DDR6, LPDDR (Low power DDR), USB (universal serial bus), MMC (multimedia card), eMMC (embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (advanced technology attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI (enhanced small disk interface), IDE (integrated drive electronics), Firewire, and / or NVMe (nonvolatile memory express).

[0049] In one embodiment, the interface (250) may include a line transmitting a reference clock (REF_CLK), a line transmitting a hardware reset signal (RESET_n) for the storage device (205), a pair of lines transmitting a differential input signal pair (DIN_T and DIN_C), and a pair of lines transmitting a differential output signal pair (DOUT_T and DOUT_C).

[0050] Depending on the embodiment, the interface (250) may also be referred to as an interfacing circuit.

[0051] In one embodiment, the storage device (205) may be included in the memory (130) (or non-volatile memory (134)) of FIG. 1. In one embodiment, the storage device (205) may include a UIC layer (260), a storage device controller (270), an interface (280), and a non-volatile memory (NVM) 290.

[0052] In one embodiment, the storage device (205) may be included in the electronic device (101) while being physically separated from the host device (201) (or the processor (120)). The storage device (205) may be included in the electronic device (101) by being mounted within the same package as the host device (201) (or the processor (120)). The storage device (205) may be a solid state device (SSD) or a memory card that is detachable from other components of the electronic device (101) through an interface (250).

[0053] In one embodiment, the storage device (205) may be a device to which standard specifications according to UFS, eMMC, or NVMe are applied, but is not limited thereto.

[0054] In one embodiment, the storage device controller (270) and the NVM (290) may be connected to each other via an interface (280).

[0055] In one embodiment, the storage device controller (270) of the storage device (205) may control the overall operation of the storage device (205). The storage device controller (270) may manage the NVM (290) through a logical unit (LU), which is a logical data storage unit. In one embodiment, the logical unit may also be referred to as a partition. The storage device controller (270) may include a flash translation layer (FTL). The storage device controller (270) may use the address mapping information of the FTL to convert a logical data address (e.g., a logical block address (LBA)) transmitted from the host device (201) into a physical data address (e.g., a physical block address (PBA)). A logical block for storing user data in the electronic device (101) may have a size within a predetermined range. For example, the minimum size of the logical block may be set to 4 Kbytes.

[0056] In one embodiment, when a command from a host device (201) is input to a storage device (205) through a UIC layer (260), the storage device controller (270) may perform an operation according to the input command, and when the operation is completed, transmit a completion response to the host device (201).

[0057] In one embodiment, when the host device (201) wants to write user data to the storage device (205), the host device (201) can transmit a data write command to the storage device (205). When a response indicating that the host device (201) is ready to receive user data (ready-to-transfer) is received from the storage device (205), the host device (201) can transmit the user data to the storage device (205). The storage device controller (270) can write the received user data to a selected location of the NVM (290) based on the address mapping information of the FTL.

[0058] In one embodiment, when the host device (201) wants to read user data stored in the storage device (205), the host device (201) can transmit a data read command to the storage device (205). The storage device controller (270) that receives the command can read the user data from the NVM (290) based on the data read command and transmit the read user data to the host device (201).

[0059] In one embodiment, the NVM (290) may include one or more memory units. The one or more memory units may be NAND flash memory having a two-dimensional (2D) structure. The one or more memory units may be V-NAND flash memory having a three-dimensional (3D) structure. However, the present invention is not limited thereto.

[0060] In one embodiment, each of the one or more memory units may include a memory cell array. The memory cell array may include a two-dimensional memory cell array or a three-dimensional memory cell array. The memory cell array may include a plurality of memory cells. Each of the plurality of memory cells may store a specified number of bits of information. Each of the plurality of memory cells may be classified as a single level cell (SLC), a multi level cell (MLC), a triple level cell (TLC), or a quadruple level cell (QLC) depending on the number of bits it stores.

[0061] Figure 3 is a block diagram of an electronic device (101) according to one embodiment.

[0062] Figure 3 can be explained with reference to Figures 1 and 2.

[0063] Referring to FIG. 3, the electronic device (101) may include a host device (201) and a storage device (205).

[0064] In one embodiment, the host device (201) may include an application (146), a file system (310), and a storage device driver (210).

[0065] In one embodiment, the application (146) may correspond to the application (146) of FIG. 1. In one embodiment, the application (146) may generate a command (or request) related to a virtual LU (the first LU (370) and / or the second LU (380)). For example, the application (146) may request a read of data stored in the memory unit (390). For example, the application (146) may request a write of data to the memory unit (390). However, the present invention is not limited thereto.

[0066] In one embodiment, the application (146) may generate a command (or request) that can be processed by the first LU (370) and / or the second LU (380) through an application programming interface (API) provided by the file system (310). In one embodiment, the command (or request) may include an input-output request (IOR) for input / output to the first LU (370) and / or the second LU (380) of the storage device (205). The input / output request (IOR) may include a data read request, a data write request, and / or a data discard request. The input / output request (IOR) may include information about a write location (e.g., the first LU (370) and / or the second LU (380)) and / or a storage period of the data for which a write request is made. In one embodiment, the command (or request) may include creating, allocating, and / or deallocating a logical unit (or partition).

[0067] In one embodiment, the application (146) may transmit a command (or request) generated based on the API to the file system (310).

[0068] In one embodiment, the file system (310) may be a structure or software used to store data on a storage device (205). In one embodiment, the file system (310) may provide an application (146) with an API for creating, allocating capacity, and / or deallocating capacity of input / output requests (IORs) and / or logical units (or partitions).

[0069] In one embodiment, the file system (310) can manage two or more logical units (370, 380, 385). In one embodiment, the file system (310) managing the logical unit can refer to structuring files stored in the storage space of the memory unit (390) allocated to the logical unit. In one embodiment, the file system (310) managing the logical unit can refer to linking the logical unit (or partition) to a specific location (or address) of a directory. In one embodiment, the file system (310) can manage the usage of two or more logical units (370, 380, 385) so that it does not exceed the notified capacity of the memory unit (390). In one embodiment, the file system (310) can manage the total capacity allocated to the first LU (370) and the second LU (380) so as not to exceed the capacity of the memory unit (390).

[0070] In one embodiment, the file system (310) may be a log structured file system (LFS). In one embodiment, the log structured file system may be a file system that manages the memory unit (390) of the storage device (205) as a single contiguous area. In one embodiment, the log structured file system may sequentially record data (e.g., user data and / or metadata) in the memory unit (390) of the storage device (205). In one embodiment, the file system (310) may be a flash friendly file system (F2FS). In one embodiment, the F2FS may be a file system that manages the memory unit (390) of the storage device (205) as a single contiguous area. In one embodiment, the F2FS may sequentially record data (e.g., user data and / or metadata) in the memory unit (390) of the storage device (205). In one embodiment, F2FS may include a random write area and a sequential write area. In one embodiment, the random write area may allow overwrite. In one embodiment, the random write area may record address information of a node block written to the sequential write area. In one embodiment, the sequential write area may not allow overwrite. In one embodiment, the sequential write area may record data (e.g., user data and / or metadata). In one embodiment, the sequential write area may record node blocks (or metadata) and data blocks (or user data).

[0071] In one embodiment, the file system (310) may include a high performance input / output (I / O) analyzer (321), a Hot / Cold I / O analyzer (325), a migration manager (329), a log manager (331), a capacity manager (333), and a device manager (335).

[0072] Below, the operation of storing data in a memory unit (390) through a high-performance I / O analyzer (321) and / or a Hot / Cold I / O analyzer (325) by a file system (310) is described.

[0073] In one embodiment, the file system (310) may obtain a write request from an application (146). In one embodiment, the file system (310) may obtain a write request generated based on an API.

[0074] In one embodiment, the file system (310) may store (or write) data to the memory unit (390) based on a write request. In one embodiment, the file system (310) may store (or write) data to a specified partition (e.g., the first LU (370) or the second LU (380)) based on a partition being specified in the write request. In one embodiment, the file system (310) may store (or write) data to a partition identified based on a priority of a file (or data) being requested to be written based on a partition not being specified in the write request.

[0075] In one embodiment, the file system (310) can identify the first priority of the write-requested data through the high-performance I / O analyzer (321). In one embodiment, the file system (310) can identify the first priority for determining the partition to which the write-requested data will be written through the high-performance I / O analyzer (321).

[0076] In one embodiment, the first priority may be identified by the input / output performance required for the data requested to be written. For example, data for a function requiring responsiveness (e.g., a swap function) may have the highest first priority. In one embodiment, the swap function may mean an operation of saving (or swapping out) data stored in the volatile memory (132) of the memory (130) to the storage device (205), or saving (or swapping in) data stored in the storage device (205) to the volatile memory (132). If the response speed of the swap function is slow, the performance of an application (146) requiring free space in the volatile memory (132) may be degraded. If the response speed of the swap function is slow, the read speed of data swapped out from the volatile memory (132) to the storage device (205) may be degraded, and thus the performance of an application (146) requesting the data may be degraded. Therefore, data for swap functions that require responsiveness may have the highest priority.

[0077] In one embodiment, the first priority may be determined based on the type of file, the read frequency of the file, the type of write request of the file (e.g., fsync(), sync()), the frequency of the specified write request (e.g., fsync(), sync()), and whether the transaction is atomic. In the case of a specified write request (e.g., fsync()), since it is an operation that must ensure that the requested write data is completely written to the storage device (205), the response speed of the specified write request (e.g., synchronous input / output) (e.g., fsync()) must be increased so that the overall response speed of the storage device (205) can be improved. Accordingly, data (or files) for which specified write requests (e.g., synchronous input / output) (e.g., fsync()) frequently occur need to be stored in a partition that can ensure high performance (or high-speed writing, reading), and data (or files) for which specified write requests (e.g., fsync()) frequently occur may be set to a high priority. In one embodiment, data with a specified extension may have a high first priority. In one embodiment, data for binaries (e.g., odex, vdex) for executing an application (146) may have a high first priority to improve the application's loading response time performance. Data included in functions (e.g., fsync(), sync()) that ensure that all data is written to storage may have a high first priority. Data with a high frequency of input / output requests (IOR) may have a high first priority. Data included in a transaction that requires atomicity may have a high first priority. According to one embodiment, database transactions (e.g., write transactions) must be guaranteed to be atomic. For example, atomicity may mean that the results of all operations related to a transaction are either fully reflected in the database or not fully reflected.In relation to a database, files (or data) for input (or output) must be processed so that they are all written, or none of them are written, without interruption of input (or output) or loss of files during input (or output) based on atomicity. Therefore, data (or files) for which atomicity must be guaranteed need to be stored in a partition that can guarantee high performance (or high-speed writing, reading), and data (or files) for which atomicity must be guaranteed may be given a high priority. For example, a write request for a database that requires guarantee of atomicity in a transaction may be given the first priority. In one embodiment, the atomicity of a transaction may refer to a state in which all operation results of the transaction are written to the database, or none of them are written.

[0078] In one embodiment, the first priority may be identified by the priority specified in the write request. In one embodiment, the first priority may be identified by the performance requirements of the application (146) associated with the write request. In one embodiment, the first priority may be identified by the priority (explicitly) set by the application (146) for the data being requested to be written. For example, the application (146) may forward a write request with the first priority to the file system (310).

[0079] In one embodiment, the file system (310) may determine to store data whose first priority is higher than or equal to the reference first priority in a high-performance partition (e.g., the second LU (380)). In one embodiment, the file system (310) may determine to store data whose first priority is lower than the reference first priority in a normal-performance partition (e.g., the first LU (370)). However, the present invention is not limited thereto.

[0080] In one embodiment, the file system (310) may identify a second priority of the write-requested data based on which it decides to store the write-requested data in a normal performance partition (e.g., the first LU (370)).

[0081] In one embodiment, the file system (310) can identify the second priority of the write-requested data through the Hot / Cold I / O analyzer (325). In one embodiment, the second priority can be classified according to the properties of the data. In one embodiment, according to the second priority, the data can be classified as hot data, warm data, or cold data. In one embodiment, the write-requested data can be classified as hot data with a high access frequency, warm data with a relatively low access frequency, or cold data according to the access frequency. In one embodiment, the write-requested data can be classified as hot data, warm data, or cold data according to the lifespan of the file.

[0082] In one embodiment, the file system (310) may store write-requested data in a partition determined based on the first priority and / or the second priority. However, the present invention is not limited thereto. In one embodiment, the file system (310) may store write-requested data in another partition based on the available capacity of the determined partition. In one embodiment, the available capacity may refer to the capacity of a memory area allocated to each partition in which no file (or data) is stored.

[0083] Below, the operation of the file system (310) migrating data between LUs (370, 380, 385) through the migration manager (329) is described.

[0084] In one embodiment, the file system (310) may determine a partition in which to store a file to be stored (or written) based on a priority (e.g., a first priority and / or a second priority). In one embodiment, the file system (310) may check whether there is free space in the partition before writing (or storing) the file in the determined partition. In one embodiment, the file system (310) may select either migration or storage in another partition if the determined partition does not have enough free space. For example, if the determined partition is a high-performance partition (e.g., the second LU (380)) and the high-performance partition (e.g., the second LU (380)) does not have enough free space, the file system (310) may write (or store) the file in the general performance partition (e.g., the first LU (370)) without migration, since the cost (or resource consumption) of migrating from the high-performance partition to the general performance partition (e.g., the first LU (370)) is high. For another example, if the determined partition is a general performance partition and there is insufficient free space in the general performance partition, the file system (310) may select either migration or storage in another partition. In one embodiment, the file system (310) may select either migration or storage in another partition based on priority. For example, if the response speed of a file is important, the file system (310) may store the file in the high performance partition instead of migration. Thereafter, the file system (310) may migrate the file stored in the high performance partition to the general performance partition. For example, if the response speed of a file is not important, the file system (310) may store the file in the general performance partition after migration.

[0085] In one embodiment, the file system (310) can migrate via the migration manager (329). In one embodiment, the file system (310) can perform migration for one of the LUs (370, 380, 385) based on the available capacity of the one LU being less than or equal to a designated capacity, via the migration manager (329). In one embodiment, migration may refer to storing data stored in one of the LUs (370, 380, 385) to another LU. In one embodiment, migration for one LU may include storing data stored in one LU to another LU to secure available capacity of the one LU. In one embodiment, migration for one LU may include deleting data stored in one LU to secure available capacity of the one LU.

[0086] In one embodiment, the file system (310) can identify the available capacity of each of the LUs (370, 380, 385). In one embodiment, the file system (310) can identify that the available capacity of any one of the LUs (370, 380, 385) is less than or equal to a specified capacity. For example, the file system (310) can identify that the available capacity of a first LU (370) is less than or equal to a specified capacity. For example, the file system (310) can identify that the available capacity of a second LU (380) is less than or equal to a specified capacity. Depending on the embodiment, the designated capacity for the first LU (370) and the designated capacity for the second LU (380) may be the same or different.

[0087] In one embodiment, the file system (310) may identify data to be migrated based on the identification of LUs that are less than or equal to a specified capacity. In one embodiment, the data to be migrated may be selected based on a first priority of data identified through a high-performance I / O analyzer (321) and / or a second priority of data identified through a hot / cold I / O analyzer (325).

[0088] In one embodiment, the file system (310) may identify, through the migration manager (329), data having the highest first priority among data stored in the first LU (370) as data to be migrated. In one embodiment, the file system (310) may identify, through the migration manager (329), data having the lowest first priority among data stored in the second LU (380) as data to be migrated.

[0089] In one embodiment, the file system (310) may, through the migration manager (329), identify data stored in the first LU (370) with the highest access frequency during a specified period of time as data to be migrated.

[0090] In one embodiment, the file system (310) may, through the migration manager (329), identify data stored in the second LU (380) with the lowest access frequency for a specified period of time as data to be migrated.

[0091] In one embodiment, the file system (310) may identify data to be migrated that is sized to cause the available capacity of one LU to be greater than or equal to a specified capacity. For example, the file system (310) may identify data to be migrated in a first LU (370) that is sized to cause the available capacity of the first LU (370) to be greater than or equal to a specified capacity. For example, the file system (310) may identify data to be migrated in a second LU (380) that is sized to cause the available capacity of the second LU (380) to be greater than or equal to a specified capacity.

[0092] In one embodiment, the file system (310) may perform migration based on identified data through the migration manager (329). In one embodiment, the file system (310) may perform migration during idle time through the migration manager (329). In one embodiment, the file system (310) may run a thread associated with the migration manager (329) in the background. Running the thread in the background may mean that the migration manager (329) is not run continuously (or continuously), but is run at a specific time (e.g., during idle time).

[0093] Below, the operation of the file system (310) managing the log of data (392, 394, 396, 398) and / or nodes (391, 393, 395, 397) stored in the memory unit (390) through the log manager (331) is described.

[0094] In one embodiment, the file system (310) can manage log areas through a log manager (331). In one embodiment, the file system (310) can distinguish a different number of log areas for each of the LUs (370, 380, 385) through the log manager (331).

[0095] In one embodiment, the file system (310) may, through the log manager (331), distinguish the types of files stored in the first LU (370) according to the lifespan of the files. In one embodiment, the file system (310) may, through the log manager (331), distinguish the first LU (370) into a plurality of log areas (e.g., the first node (391), the first data (392), the second node (393), the second data (394), the third node (395), or the third data (396)). In one embodiment, the file system (310) may, through the log manager (331), divide the first LU (370) into six log areas for hot data (e.g., first data (392)), hot nodes (e.g., first node (391)), warm data (e.g., second data (394)), warm nodes (e.g., second node (393)), cold data (e.g., third data (396)), and cold nodes (e.g., third node (395)) to improve the performance of garbage collection (GC) of the first LU (370). In one embodiment, hot data, warm data, or cold data may be divided according to the required response performance (or, read speed, or write speed). - In general, a hot node (e.g., the first node (391)) may require more computing resources (e.g., resources of the processor (120)) and faster input / output. Next, a warm node (e.g., the second node (393)) and / or a cold node (e.g., the third node (395)) may require more disk space per node than a hot node (e.g., the first node (391)), but may require fewer computing resources (e.g., resources of the processor (120)) and relatively slower input / output.

[0096] In one embodiment, the file system (310) may, through the log manager (331), divide the high-performance second LU (380) into high-performance logs (e.g., the fourth node (397), the fourth data (398)). For example, the file system (310) may, through the log manager (331), divide the high-performance second LU (380) into two log areas, one for data (e.g., the fourth data (398)) and one for a node (e.g., the fourth node (397)).

[0097] In one embodiment, each of the log areas may be separated from each of the LUs (370, 380, 385). The separation of each of the log areas may indicate that a specific type of data is stored only in a designated log area. For example, a hot node (e.g., the first node (391)) may be stored only in the log area for the hot node (e.g., the first node (391)). In one embodiment, by separating each of the areas from each of the LUs (370, 380, 385), the file system (310) may enable multi-head logging. In one embodiment, the hot node (e.g., the first node (391)) may be a node block of directories. In one embodiment, the hot data (e.g., the first data (392)) may be a dentry block. In one embodiment, the dentry block may record information for linking an inode and a file. In one embodiment, a warm node (e.g., the second node (393)) may be a node block of files. In one embodiment, warm data (e.g., the second data (394)) may be a data block by a user. In one embodiment, a cold node (e.g., the third node (395)) may be an indirect node block. In one embodiment, cold data (e.g., the third data (396)) may be a multimedia data block. However, the present invention is not limited thereto.

[0098] In one embodiment, the file system (310) may store data in log areas corresponding to a write request among the separated log areas through the log manager (331). For example, in response to data according to a write request being stored in the first LU (370) and identified as hot data, the file system (310) may store the data according to the write request in a log area for the hot data. For example, in response to data according to a write request being stored in the first LU (370) and identified as hot data, the file system (310) may store metadata of the data in a log area for a hot node associated with the hot data. For example, in response to data according to a write request being identified as being stored in the second LU (380), the file system (310) may store the data according to the write request in a log area for data of the second LU (380). For example, in response to a write request identifying that data is to be stored in the second LU (380), the file system (310) may store metadata of the data in a log area for a node associated with the data in the second LU (380).

[0099] In one embodiment, the file system (310) may store data to be migrated in log areas corresponding to migration among the separated log areas through the log manager (331). For example, in response to data according to migration being stored in the first LU (370) and identified as hot data, the file system (310) may store data according to migration in a log area for hot data. For example, in response to data according to migration being stored in the first LU (370) and identified as hot data, the file system (310) may store metadata of the data in a log area for a hot node associated with the hot data.

[0100] Below, the operation of changing the allocated capacity between LUs (370, 380, 385) through the capacity manager (333) of the file system (310) is described.

[0101] In one embodiment, the file system (310) may perform operations for creating, allocating capacity, deallocating capacity, and / or removing LUs (370, 380, 385) associated with a memory unit (390) through a capacity manager (333). The LUs (370, 380, 385) being associated with a memory unit (390) may mean that the memory area of ​​the memory unit (390) is divided and allocated to the LUs (370, 380, 385).

[0102] In one embodiment, the entire memory area of ​​the memory unit (390) may be allocated to the first LU (370). In one embodiment, the first LU (370) may be a partition of general performance. The state in which the entire memory area of ​​the memory unit (390) is allocated to the first LU (370) may be described with reference to FIG. 4A.

[0103] In one embodiment, the file system (310) may create other LUs (380, 385) other than the first LU (370) through the capacity manager (333). In one embodiment, the file system (310) may create other LUs (380, 385) based on a request for creating an LU from an application (146). In one embodiment, the request for creating an LU may be obtained through a user interface (UI) displayed on a display (e.g., the display module (160) of FIG. 1). In one embodiment, the request for creating an LU may include information indicating the performance of the LU to be created (e.g., high performance, medium performance, or normal performance). In one embodiment, the request for creating an LU may include information indicating the capacity of the LU to be created. In one embodiment, the capacity of the LU to be created may be less than or equal to the maximum capacity of the memory unit (390).

[0104] In one embodiment, the file system (310) may distribute the capacity (or resources) of the memory unit (390) between the LUs (370, 380, 385) through the capacity manager (333). For example, the capacity manager (333) may distribute the memory area of ​​the memory unit (390) between the first LU (370) and the second LU (380).

[0105] In one embodiment, the file system (310) may distribute the memory area of ​​the memory unit (390) between the first LU (370) and the second LU (380) based on a capacity distribution request from the application (146). In one embodiment, the file system (310) may distribute the memory area between the first LU (370) and the second LU (380) based on the available capacity of at least one LU among the LUs (370, 380, 385). The operation of distributing (or adjusting) the memory area between the first LU (370) and the second LU (380) may be described with reference to FIGS. 4b, 4c, 4d, and 4e.

[0106] In one embodiment, as the memory area of ​​the memory unit (390) is distributed between the first LU (370) and the second LU (380), the overall capacity of the memory unit (390) may change. For example, the overall capacity of the memory unit (390) may increase as more memory area is allocated to the lowest performance partition (e.g., the first LU (370)). For example, the overall capacity of the memory unit (390) may decrease as more memory area is allocated to a relatively high performance partition (e.g., the second LU (380) and / or the third LU (385)). For example, if the first LU (370) operates with TLC and the second LU (380) operates with SLC, when the memory area allocated to the first LU (370) is allocated to the second LU (380), the capacity of the memory area may be reduced by 1 / 3 (or the ratio of the cell level of SLC to the cell level of TLC). For example, if the first LU (370) operates with MLC and the second LU (380) operates with SLC, when the memory area allocated to the first LU (370) is allocated to the second LU (380), the capacity of the memory area may be reduced by 1 / 2 (or the ratio of the cell level of SLC to the cell level of MLC). For example, if the first LU (370) operates as TLC and all memory areas of the memory unit (390) are allocated to the first LU (370), the total capacity of the memory unit (390) may be 12 GB. For example, if the first LU (370) operates as TLC and the second LU (380) operates as SLC and half of the memory areas of the memory unit (390) are allocated to the first LU (370) and the remaining half are allocated to the second LU (380), the total capacity of the memory unit (390) may be 8 GB.

[0107] In one embodiment, the file system (310) can maintain the total capacity of the memory unit (390) displayed to the user even if the total capacity of the memory unit (390) changes as the memory area of ​​the memory unit (390) is distributed between the first LU (370) and the second LU (380). For example, the file system (310) can guide the user to the total capacity of the memory unit (390) when all memory areas of the memory unit (390) are allocated to the lowest performance partition (e.g., the first LU (370)). Here, guiding the user to the total capacity may refer to displaying it on a display (e.g., the display module (160) of FIG. 1).

[0108] Below, the operation of the file system (310) managing the logical addresses of LUs (370, 380, 385) through the device manager (335) is described.

[0109] In one embodiment, the file system (310) may manage performance information and / or logical addresses of each of the LUs (370, 380, 385) through the device manager (335).

[0110] In one embodiment, the performance information may include, but is not limited to, the types (e.g., types according to the number of bits stored by the memory cells) of the plurality of memory cells included in the memory area allocated to each of the LUs (370, 380, 385) (e.g., SLC, MLC, TLC, or QLC).

[0111] In one embodiment, the logical address may be an address assigned to each of the LUs (370, 380, 385). In one embodiment, the logical address may be mapped to a physical address of each of the segments of the memory unit (390). In one embodiment, the segment may include contiguous blocks within the memory unit (390). In one embodiment, the block may have a designated first size (e.g., 4 kb). In one embodiment, the segment may have a designated second size (e.g., 2 Mb).

[0112] In one embodiment, the file system (310) may manage information about the available capacity of each of the LUs (370, 380, 385) through the device manager (335). The available capacity may refer to the capacity in which no files are stored among the total capacity according to the memory area allocated to each of the LUs (370, 380, 385).

[0113] In one embodiment, the file system (310) may map physical addresses of multiple segments of the memory unit (390) to logical addresses assigned to the LUs (370, 380, 385) through the device manager (335). In one embodiment, depending on the cell level at which the LUs (370, 380, 385) operate, some of the logical addresses may not be mapped to physical addresses. In one embodiment, as a memory area is allocated to a relatively high-performance partition (e.g., the second LU (380)), some of the logical addresses set based on the lowest-performance partition (e.g., the first LU (370)) may not be mapped to physical addresses. For example, if the first LU (370) operates as a TLC, the second LU (380) operates as an SLC, and 800 logical addresses corresponding to 800 physical addresses allocated to the first LU (370) are set, and 100 physical addresses are allocated to the second LU (380), memory cells included in the 100 physical addresses may operate from TLC to SLC. Accordingly, 300 physical addresses may be reduced to 100 physical addresses as the TLC operates to SLC. In addition, among the 300 logical addresses mapped to the 300 physical addresses, 100 logical addresses for 100 physical addresses may be mapped, and the remaining 200 logical addresses may not be mapped to physical addresses.

[0114] In one embodiment, the file system (310) may, through the device manager (335), set a logical address to an unused (or unusable) state for which a physical address is not mapped. In one embodiment, a write request for a logical address in an unused (or unusable) state may not be processed.

[0115] In one embodiment, the file system (310) may update the mapping between physical addresses and logical addresses according to capacity allocation between LUs (370, 380, 385) through the device manager (335). In one embodiment, the file system (310) may map an unused (or unusable) logical address to a physical address as the memory area allocated to the first LU (370) becomes larger through the device manager (335). In one embodiment, the file system (310) may change the state of a logical address from an unused (or unusable) state to a usable state by mapping an unused (or unusable) logical address to a physical address through the device manager (335).

[0116] In one embodiment, the file system (310) may process a write request through the device manager (335). In one embodiment, the file system (310) may identify a block to which data is to be written among blocks of a partition identified by the write request through the device manager (335). In one embodiment, the file system (310) may allocate a block to a partition through the device manager (335) to process the write request. In one embodiment, the device manager (335) may write data to the allocated block. In one embodiment, the block allocated in the partition may be a block following the most recent block in the memory area of ​​the memory unit (390) allocated to the partition. In one embodiment, the block allocated in the partition may be a block identified according to a sequential write order.

[0117] In one embodiment, the file system (310) can process migration through the device manager (335). In one embodiment, the file system (310) can identify, through the device manager (335), a block to which data is to be written among blocks of a partition identified by migration. In one embodiment, the file system (310) can allocate a block to a partition to process migration through the device manager (335). In one embodiment, the device manager (335) can write data to the allocated block. In one embodiment, the block allocated in the partition may be the block next to the most recent block in the memory area of ​​the memory unit (390) allocated to the partition. In one embodiment, the block allocated in the partition may be a block identified according to a sequential write order.

[0118] In one embodiment, the file system (310) may identify the capacity of the partition identified by the write request through the device manager (335). If the capacity of the partition identified by the write request is less than or equal to a specified capacity, the file system (310) may write a file to a partition other than the identified partition. If the capacity of the partition identified by the write request is less than or equal to a specified capacity, the file system (310) may secure available capacity of the identified partition through migration and then write a file to the identified partition. In one embodiment, if the capacity of the partition identified by the write request is less than or equal to a specified capacity, the file system (310) may write a file to a different partition depending on the state of the electronic device (101) (e.g., busy or idle) through the device manager (335), or write a file to the identified partition after migration. In one embodiment, the file system (310) may, through the device manager (335), write a file to another partition when the state of the electronic device (101) is busy. In one embodiment, the file system (310) may, through the device manager (335), write a file to the partition identified after migration when the state of the electronic device (101) is idle.

[0119] In one embodiment, the storage device driver (210) may correspond to the storage device driver (210) of FIG. 2. In one embodiment, the storage device driver (210) may convert an input / output request (IOR) generated by an application (146) into a UFS command defined by the UFS standard.

[0120] In one embodiment, the storage device (205) may include an LU manager (350), a first LU (370), a second LU (380), and a memory unit (390). For example, the storage device (205) may correspond to the storage device (205) of FIG. 2.

[0121] In one embodiment, the LU manager (350) may process commands for creating, removing, allocating capacity, and / or deallocating capacity of LUs. For example, the LU manager (350) may process commands for creating, removing, allocating capacity, and / or deallocating capacity of logical units from the file system (310).

[0122] In one embodiment, the LU manager (350) can distribute the capacity (or resources) of the memory unit (390) between the LUs. For example, the LU manager (350) can distribute the memory area of ​​the memory unit (390) between the first LU (370) and the second LU (380).

[0123] In one embodiment, the first LU (370) may correspond to a space (or partition) of a memory area of ​​the memory unit (390). For example, the first LU (370) may be allocated the entire memory area of ​​the memory unit (390). In one embodiment, the first LU (370) may also be referred to as a first partition.

[0124] In one embodiment, the second LU (380) may be allocated some memory area from the memory unit (390) allocated to the first LU (370) from the first LU (370). The second LU (380) may be an LU subordinate to the first LU (370). In one embodiment, the second LU (380) may also be referred to as a second partition. According to an embodiment, the storage device (205) may further include a third LU (385) to which some other memory area from the memory unit (390) is allocated.

[0125] In one embodiment, the memory unit (390) may be a 2D structured NAND flash memory. In one embodiment, the memory unit (390) may be one or more memory units of a 3D structured V-NAND flash memory. However, the present invention is not limited thereto.

[0126] In one embodiment, the memory unit (390) may have a capacity. In one embodiment, the capacity of the memory unit (390) may vary depending on the number of bits stored by each of the plurality of memory cells of the memory unit (390). For example, if each of the plurality of memory cells is SLC, MLC, or TLC, the capacity of the memory unit (390) may be 4 GB, 8 GB, or 12 GB.

[0127] As described above, the electronic device (101) can efficiently operate the memory unit (390) of one storage device (205) using the file system (310). For example, the electronic device (101) can store files related to input / output requests for which responsiveness is important in a high-performance partition (e.g., an LU operating with SLC). For example, the electronic device (101) can store files with a low priority in a normal-performance partition (e.g., an LU operating with TLC). Accordingly, the electronic device (101) can provide a user with a storage environment with improved responsiveness.

[0128] Hereinafter, with reference to FIGS. 4a and 4b, an example in which an electronic device (101) allocates a portion of a memory area allocated to a first LU (370) to a second LU (380) will be described.

[0129] FIG. 4A illustrates an example in which the electronic device (101) allocates all memory areas of the memory unit (390) to the first LU (370). FIG. 4B illustrates an example in which the electronic device (101) creates the second LU (380) through some memory areas among the memory areas allocated to the first LU (370). FIGS. 4A and 4B may be described with reference to FIGS. 1, 2, and 3.

[0130] Referring to FIG. 4A, the electronic device (101) may allocate the entire memory area (431) of the memory unit (390) to the first LU (370). In one embodiment, the electronic device (101) may allocate the entire memory area (431) of the memory unit (390) to the first LU (370) such that the entire logical address space (411) of the first LU (370) corresponds to the entire memory area (431) of the memory unit (390).

[0131] In one embodiment, the electronic device (101) may generate a second LU (380) other than the first LU (370). In one embodiment, the electronic device (101) may generate the second LU (380) based on a request for generating the second LU (380) from an application (e.g., application (146) of FIG. 1). In one embodiment, the request for generating the second LU (380) may be obtained through a UI displayed on a display (e.g., display module (160) of FIG. 1). In one embodiment, the request for generating the second LU (380) may include information indicating the performance (e.g., high performance) of the second LU (380) to be generated. In one embodiment, the request for generating the second LU (380) may include information indicating the capacity of the second LU (380) to be generated. In one embodiment, the capacity of the second LU (380) to be generated may be less than or equal to the maximum capacity of the memory unit (390). In one embodiment, the first LU (370) may be exemplified as operating as TLC, and the second LU (380) may be exemplified as operating as MLC.

[0132] Referring to FIG. 4B, the electronic device (101) may allocate a portion of the memory area (433) of the entire memory area (431) of the memory unit (390) to the second LU (380). In one embodiment, the electronic device (101) may allocate a portion of the memory area (432) of the entire memory area (431) of the memory unit (390) to the first LU (370), and allocate the remaining portion of the memory area (433) to the second LU (380).

[0133] In one embodiment, the electronic device (101) may set a logical address space (413) corresponding to a memory area (433) not allocated to the first LU (370) among the entire memory area (431) to an unused (or, unusable) state. In one embodiment, the electronic device (101) may set a logical address space (412) corresponding to a memory area (432) allocated to the first LU (370) among the entire memory area (431) to a usable state.

[0134] In one embodiment, the electronic device (101) may set a logical address space (423) corresponding to a memory area (433) allocated to the second LU (380) among the entire memory area (431) to a usable state.

[0135] As described above, the electronic device (101) can create LUs with different performances in the memory unit (390) to efficiently operate the memory unit (390) of one storage device (205) using the file system (310). Accordingly, the electronic device (101) can provide the user with an LU with improved responsiveness when the available capacity is sufficient.

[0136] Hereinafter, with reference to FIG. 4c, an example is described in which the electronic device (101) allocates some of the memory areas allocated to the first LU (370) to the second LU (380).

[0137] FIG. 4c illustrates an example in which the electronic device (101) allocates a portion of the memory area allocated to the first LU (370) to the second LU (380). FIG. 4c can be described with reference to FIGS. 1, 2, 3, 4a, and 4b.

[0138] In one embodiment, the electronic device (101) may distribute the memory area (431) of the memory unit (390) between the first LU (370) and the second LU (380) based on a capacity distribution request from an application (e.g., application (146) of FIG. 1). In one embodiment, the electronic device (101) may distribute the memory area (431) between the first LU (370) and the second LU (380) based on the available capacity of each of the first LU (370) and the second LU (380). In one embodiment, the first LU (370) may be exemplified as operating as a TLC, and the second LU (380) may be exemplified as operating as an MLC.

[0139] In one embodiment, the electronic device (101) may identify that the available capacity of the second LU (380) is insufficient. In one embodiment, the electronic device (101) may identify that the available capacity of the second LU (380) is less than a specified capacity.

[0140] In one embodiment, the electronic device (101) can identify that the available capacity of the first LU (370) is sufficient. In one embodiment, the electronic device (101) can identify that the available capacity of the first LU (370) exceeds a designated capacity. In one embodiment, the designated capacity for the first LU (370) and the designated capacity for the second LU (380) can be the same or different.

[0141] In one embodiment, the electronic device (101) may allocate a memory area corresponding to a portion of the available capacity of the first LU (370) to the second LU (380). In one embodiment, the electronic device (101) may allocate a memory area corresponding to a portion of the available capacity of the first LU (370) to the second LU (380) based on the available capacity of each of the first LU (370) and the second LU (380).

[0142] Referring to FIG. 4c, the electronic device (101) may allocate a portion of the memory area (435) among the memory areas (432) allocated to the first LU (370) to the second LU (380). In one embodiment, the electronic device (101) may allocate a portion of the memory area (434) among the entire memory area (431) of the memory unit (390) to the first LU (370), and allocate the remaining portion of the memory areas (435, 433) to the second LU (380).

[0143] In one embodiment, the electronic device (101) may set the logical address space (413, 415) corresponding to the memory area (433, 435) not allocated to the first LU (370) among the entire memory area (431) to an unused (or, unusable) state. In one embodiment, the electronic device (101) may change the logical address space (415) corresponding to some memory area (435) allocated to the second LU (380) from a usable state to an unused (or, unusable) state. In one embodiment, the electronic device (101) may set the logical address space (414) corresponding to the memory area (434) allocated to the first LU (370) among the entire memory area (431) to a usable state. In one embodiment, the electronic device (101) may set the logical address space (423, 425) corresponding to the memory area (433, 435) allocated to the second LU (380) among the entire memory area (431) to a usable state.

[0144] As described above, the electronic device (101) can adjust the capacity between LUs having different performances in the memory unit (390) to efficiently operate the memory unit (390) of one storage device (205) using the file system (310). Accordingly, the electronic device (101) can provide a storage environment with improved responsiveness to the user.

[0145] Hereinafter, with reference to FIG. 4d, an example is described in which the electronic device (101) allocates some of the memory areas allocated to the second LU (380) to the first LU (370).

[0146] FIG. 4d illustrates an example in which the electronic device (101) allocates a portion of the memory area (437) among the memory areas (433) allocated to the second LU (380) to the first LU (370). FIG. 4d can be described with reference to FIGS. 1, 2, 3, 4a, and 4b.

[0147] In one embodiment, the electronic device (101) may distribute the memory area (431) of the memory unit (390) between the first LU (370) and the second LU (380) based on a capacity distribution request from an application (e.g., application (146) of FIG. 1). In one embodiment, the electronic device (101) may distribute the memory area (431) between the first LU (370) and the second LU (380) based on the available capacity of each of the first LU (370) and the second LU (380). In one embodiment, the first LU (370) may be exemplified as operating as a TLC, and the second LU (380) may be exemplified as operating as an MLC.

[0148] In one embodiment, the electronic device (101) may identify that the available capacity of the first LU (370) is insufficient. In one embodiment, the electronic device (101) may identify that the available capacity of the first LU (370) is less than a specified capacity.

[0149] In one embodiment, the electronic device (101) can identify that the available capacity of the second LU (380) is sufficient. In one embodiment, the electronic device (101) can identify that the available capacity of the second LU (380) exceeds a designated capacity. In one embodiment, the designated capacity for the first LU (370) and the designated capacity for the second LU (380) may be the same or different.

[0150] In one embodiment, the electronic device (101) may allocate a memory area corresponding to a portion of the available capacity of the second LU (380) to the first LU (370). In one embodiment, the electronic device (101) may allocate a memory area corresponding to a portion of the available capacity of the second LU (380) to the first LU (370) based on the available capacity of each of the first LU (370) and the second LU (380).

[0151] Referring to FIG. 4d, the electronic device (101) may allocate a portion of the memory area (436) among the memory areas (433) allocated to the second LU (380) to the first LU (370). In one embodiment, the electronic device (101) may allocate a portion of the memory area (437) among the entire memory area (431) of the memory unit (390) to the second LU (380), and allocate the remaining portion of the memory areas (432, 436) to the first LU (370).

[0152] In one embodiment, the electronic device (101) may set a logical address space (426) corresponding to a memory area (436) not allocated to the second LU (380) among the entire memory area (431) to an unused (or, unusable) state. In one embodiment, the electronic device (101) may change a logical address space (426) corresponding to a portion of the memory area (436) allocated to the first LU (370) from a usable state to an unused (or, unusable) state. In one embodiment, the electronic device (101) may set a logical address space (427) corresponding to a memory area (437) allocated to the second LU (380) among the entire memory area (431) to a usable state. In one embodiment, the electronic device (101) may set the logical address space (412, 416) corresponding to the memory area (432, 436) allocated to the first LU (370) among the entire memory area (431) to a usable state. In one embodiment, the electronic device (101) may change the logical address space (416) corresponding to some memory area (436) allocated to the first LU (370) from an unused (or, unusable) state to a usable state. In one embodiment, the electronic device (101) may maintain the logical address space (417) corresponding to the memory area (437) allocated to the second LU (380) among the entire memory area (431) to an unused (or, unusable) state.

[0153] According to an embodiment, the electronic device (101) may not allocate a memory area corresponding to a portion of the available capacity of the second LU (380) to the first LU (370) if the capacity of the memory area (433) allocated to the second LU (380) is the minimum guaranteed capacity. In one embodiment, the electronic device (101) may not allocate memory capacity from the second LU (380) to the first LU (370) if the capacity of the memory area (433) allocated to the second LU (380) is the minimum guaranteed capacity.

[0154] As described above, the electronic device (101) can adjust the capacity between LUs having different performances in the memory unit (390) to efficiently operate the memory unit (390) of one storage device (205) using the file system (310). Accordingly, the electronic device (101) can provide a storage environment with improved responsiveness to the user.

[0155] Hereinafter, with reference to FIG. 4e, an example in which an electronic device (101) creates a third LU (385) through some memory areas among the memory areas allocated to the first LU (370) is described.

[0156] FIG. 4e illustrates an example in which an electronic device (101) creates a third LU (385) through a portion of a memory area allocated to a first LU (370). FIG. 4e may be described with reference to FIGS. 1, 2, 3, 4a, and 4b.

[0157] In one embodiment, the electronic device (101) may generate a second LU (380) and a third LU (385) other than the first LU (370). In one embodiment, the electronic device (101) may generate the second LU (380) and the third LU (385) based on a request for generating the second LU (380) and the third LU (385) from an application (e.g., application (146) of FIG. 1). In one embodiment, the request for generating the second LU (380) and the third LU (385) may be obtained through a UI displayed on a display (e.g., display module (160) of FIG. 1). In one embodiment, the request for generating the second LU (380) and the third LU (385) may include information indicating the performance (e.g., high performance) of the second LU (380) and the third LU (385) to be generated. In one embodiment, the request for creating the second LU (380) and the third LU (385) may include information indicating the capacity of the second LU (380) and the third LU (385) to be created. In one embodiment, the capacity of the second LU (380) and the third LU (385) to be created may be less than or equal to the maximum capacity of the memory unit (390). The request for creating the second LU (380) and the third LU (385) may include a first creation request of the second LU (380) and a second creation request of the third LU (385). In one embodiment, the first creation request and the second creation request may be created at different times. For example, the second creation request may be created after the second LU (380) is created according to the first creation request. However, the present invention is not limited thereto. In one embodiment, the first LU (370) may be exemplified as operating as a TLC, the second LU (380) as an MLC, and the third LU (385) as an SLC.

[0158] Referring to FIG. 4E, the electronic device (101) may allocate a portion of the memory area (438) of the entire memory area (431) of the memory unit (390) to the second LU (380). In one embodiment, the electronic device (101) may allocate a portion of the memory area (439) of the entire memory area (431) of the memory unit (390) to the third LU (385). In one embodiment, the electronic device (101) may allocate a portion of the memory area (432) of the entire memory area (431) of the memory unit (390) to the first LU (370), allocate a portion of the memory area (438) to the second LU (380), and allocate the remaining portion of the memory area (439) to the third LU (385).

[0159] In one embodiment, the electronic device (101) may set a logical address space (413) corresponding to a memory area (433) not allocated to the first LU (370) among the entire memory area (431) to an unused (or, unusable) state. In one embodiment, the electronic device (101) may set a logical address space (412) corresponding to a memory area (432) allocated to the first LU (370) among the entire memory area (431) to a usable state.

[0160] In one embodiment, the electronic device (101) may set a logical address space (426) corresponding to a memory area (438) allocated to the second LU (380) among the entire memory area (431) to a usable state. In one embodiment, the electronic device (101) may set a logical address space (449) corresponding to a memory area (439) allocated to the third LU (390) among the entire memory area (431) to a usable state.

[0161] As described above, the electronic device (101) can generate LUs corresponding to each cell level in the memory unit (390) to efficiently operate the memory unit (390) of one storage device (205) using the file system (310). In addition, the electronic device (101) can adjust the capacity between the LUs corresponding to each cell level. Accordingly, the electronic device (101) can provide a storage environment with improved responsiveness to the user.

[0162] FIG. 5 is a flowchart illustrating the operation of an electronic device (101) according to one embodiment.

[0163] FIG. 5 can be explained with reference to FIGS. 1, 2, 3, 4a, 4b, 4c, 4d, and 4e.

[0164] In one embodiment, the operation of FIG. 5 may be performed during idle time. In one embodiment, the operation of FIG. 5 may be executed in the background. In one embodiment, the electronic device (101) may, through the file system (310), reduce the capacity of the high-performance partition (e.g., the second LU (380)) when there are a certain number of files that have not been accessed for a long time or more in the high-performance partition (e.g., the second LU (380)) or when data is stored in the entire capacity of the memory unit (390) or more, reduce the capacity of the high-performance partition and increase the capacity of the general performance partition. In one embodiment, the electronic device (101) may, through the file system (310), reduce the capacity of the general performance partition and allocate additional capacity to the high-performance partition when there is sufficient free space in the entire capacity of the memory unit (390).

[0165] Referring to FIG. 5, in operation 510, the electronic device (101) may identify the capacity of an LU (e.g., the first LU (370)). In one embodiment, the electronic device (101) may identify the available capacity among the total capacity of the memory area allocated to the LU. In one embodiment, the LU may be one of the LUs (370, 380, 385) of FIG. 3.

[0166] In operation 520, the electronic device (101) may determine whether the capacity is insufficient. In one embodiment, the electronic device (101) may determine whether the available capacity of the LU is insufficient.

[0167] In one embodiment, the electronic device (101) may determine that the capacity is insufficient if the available capacity of the LU is less than or equal to a specified capacity. In one embodiment, the electronic device (101) may determine that the capacity is not insufficient if the available capacity of the LU exceeds a specified capacity.

[0168] In one embodiment, if it is determined that the capacity is insufficient, the electronic device (101) may perform operation 530. In one embodiment, if it is determined that the capacity is not insufficient, the electronic device (101) may terminate the operation of FIG. 5.

[0169] In operation 530, the electronic device (101) may identify the capacity of another LU (e.g., the second LU (380)). In one embodiment, the electronic device (101) may identify the available capacity among the total capacity of the memory area allocated to the other LU. In one embodiment, the other LU may be another one of the LUs (370, 380, 385) of FIG. 3.

[0170] In operation 540, the electronic device (101) may determine whether there is sufficient capacity. In one embodiment, the electronic device (101) may determine whether there is sufficient available capacity of another LU.

[0171] In one embodiment, the electronic device (101) may determine that the capacity is sufficient if the available capacity of another LU is greater than or equal to the specified other capacity. In one embodiment, the electronic device (101) may determine that the capacity is insufficient if the available other capacity of another LU is less than the specified other capacity.

[0172] In one embodiment, if the capacity is determined to be sufficient, the electronic device (101) may perform operation 550. In one embodiment, if the capacity is not determined to be insufficient, the electronic device (101) may terminate the operation of FIG. 5.

[0173] In operation 550, the electronic device (101) can adjust the capacity between different LUs and LUs. In one embodiment, the electronic device (101) can allocate some memory areas among the memory areas allocated to different LUs to the LU.

[0174] FIG. 6A is a flowchart illustrating the operation of an electronic device (101) according to one embodiment.

[0175] FIG. 6a can be explained with reference to FIG. 1, FIG. 2, FIG. 3, FIG. 4a, FIG. 4b, FIG. 4c, FIG. 4d, and FIG. 4e.

[0176] Referring to FIG. 6A, in operation 610, the electronic device (101) may identify a write request. In one embodiment, the electronic device (101) may obtain a write request from an application (e.g., application (146) of FIG. 1). In one embodiment, the electronic device (101) may obtain a write request generated based on an API.

[0177] In operation 620, the electronic device (101) may identify an LU. In one embodiment, the electronic device (101) may identify the specified LU based on whether the LU is specified in the write request. In one embodiment, the electronic device (101) may identify the LU based on the priority of the file (or data) being requested to be written based on whether the LU is not specified in the write request.

[0178] In operation 630, the electronic device (101) can identify the capacity of the LU. In one embodiment, the electronic device (101) can identify the available capacity among the total capacity of the memory area allocated to the identified LU.

[0179] In operation 640, the electronic device (101) may determine whether there is sufficient capacity. In one embodiment, the electronic device (101) may determine whether the available capacity of the identified LU is sufficient.

[0180] In one embodiment, the electronic device (101) may determine that the capacity is sufficient if the available capacity of the identified LU is greater than or equal to a specified capacity. In one embodiment, the electronic device (101) may determine that the capacity is insufficient if the available capacity of the identified LU is less than a specified capacity.

[0181] In one embodiment, if the capacity is determined to be sufficient, the electronic device (101) may perform operation 650. In one embodiment, if the capacity is not determined to be insufficient, the electronic device (101) may perform operation 660.

[0182] In operation 650, the electronic device (101) may execute a write operation for the LU. In one embodiment, the electronic device (101) may identify a block in which data is to be written among blocks of the LU identified by the write request. In one embodiment, the electronic device (101) may allocate a block to the LU identified by the write request. In one embodiment, the electronic device (101) may write data to the allocated block. In one embodiment, the block allocated in the LU may be a block following the most recent block among the memory areas of the memory unit (390) allocated to the partition. In one embodiment, the block allocated in the LU may be a block identified according to a sequential write order.

[0183] In one embodiment, the electronic device (101) may store data in log areas corresponding to a write request among the separated log areas of the LU. For example, in response to data according to a write request being stored in the first LU (370) and identified as hot data, the electronic device (101) may store the data according to the write request in a log area for hot data. For example, in response to data according to a write request being stored in the first LU (370) and identified as hot data, the electronic device (101) may store metadata of the data in a log area for a hot node associated with the hot data. For example, in response to data according to a write request being identified as being stored in the second LU (380), the electronic device (101) may store the data according to the write request in a log area for data of the second LU (380). For example, in response to a write request identifying that data is to be stored in the second LU (380), the electronic device (101) may store metadata of the data in a log area for a node associated with the data of the second LU (380).

[0184] In operation 660, the electronic device (101) may perform a write operation for another LU. In one embodiment, the electronic device (101) may identify a block in which data is to be written among blocks of another LU identified by a write request. In one embodiment, the electronic device (101) may allocate a block to another LU identified by the write request. In one embodiment, the electronic device (101) may write data to the allocated block. In one embodiment, the block allocated from another LU may be a block following the most recent block in a memory area of ​​a memory unit (390) allocated to a partition. In one embodiment, the block allocated from another LU may be a block identified according to a sequential write order.

[0185] FIG. 6b is a flowchart illustrating the operation of an electronic device (101) according to one embodiment.

[0186] Figure 6b may be described with reference to Figures 1, 2, 3, 4a, 4b, 4c, 4d, 4e, and 6a. Operations 621, 622, 623, and 624 of Figure 6b may be included in operation 620 of Figure 6a.

[0187] Referring to FIG. 6B, in operation 621, the electronic device (101) may identify a priority. In one embodiment, the electronic device (101) may identify a priority of data requested to be written by the application (146). In one embodiment, the electronic device (101) may identify a priority that the application (146) (explicitly) sets for the requested data to be written. In one embodiment, the electronic device (101) may identify a priority based on the type of requested data to be written, the read frequency of the data, the type of request to write data (e.g., fsync(), sync()), the frequency of the specified write request (e.g., fsync(), sync()), and whether the transaction is atomic.

[0188] In one embodiment, the electronic device (101) can identify the priority based on the properties of the data. In one embodiment, the electronic device (101) can classify the data into hot data, warm data, or cold data based on the properties of the data. In one embodiment, the electronic device (101) can classify the data into hot data, warm data, or cold data based on the access frequency of the data for which a write request is made. In one embodiment, the electronic device (101) can classify the data into hot data, warm data, or cold data based on the lifespan of the file of the data for which a write request is made.

[0189] At operation 622, the electronic device (101) can identify whether a write to the first LU (370) is required.

[0190] In one embodiment, the electronic device (101) can identify whether a write to the first LU (370) is necessary based on a priority (explicitly) set by the application (146) for the data requested to be written. In one embodiment, the electronic device (101) can identify whether a write to the first LU (370) is necessary based on the type of the data requested to be written, the read frequency of the data, the type of the data write request (e.g., fsync(), sync()), the frequency of the specified write request (e.g., fsync(), sync()), and whether the transaction is atomic.

[0191] In one embodiment, the electronic device (101) may identify that a write is required for the second LU (380) if the write-requested data needs to be stored in a high-performance partition, based on the priority of the write-requested data. In one embodiment, the electronic device (101) may identify that a write is required for the first LU (370) if the write-requested data does not need to be stored in a high-performance partition, based on the priority of the write-requested data.

[0192] In operation 622, if a write is required for the first LU (370), the electronic device (101) may perform operation 623. In operation 622, if a write is required for the second LU (380), the electronic device (101) may perform operation 624.

[0193] In operation 623, the electronic device (101) can identify the first LU (370).

[0194] In operation 624, the electronic device (101) can identify the second LU (380).

[0195] FIG. 7 is a flowchart illustrating the operation of an electronic device (101) according to one embodiment.

[0196] FIG. 7 may be described with reference to FIGS. 1, 2, 3, 4a, 4b, 4c, 4d, and 4e. In one embodiment, the operation of FIG. 7 may be executed in the background. In one embodiment, the electronic device (101) may perform migration through the file system (310). In one embodiment, the migration of moving files from a high-performance partition (e.g., the second LU (380)) to a general performance partition (e.g., the first LU (370)) performed through the file system (310) may follow the method of multi-device migration. However, the electronic device (101) may not move the highest-priority file to the general performance partition if possible, but may move the file with the lowest access frequency (or, the file that has not been accessed for the longest time) among the highest-priority files to the general performance partition when only the same highest-priority files are stored in the high-performance partition.

[0197] Referring to FIG. 7, in operation 710, the electronic device (101) may identify the capacity of LUs. In one embodiment, the electronic device (101) may identify the available capacity among the total capacity of the memory area allocated to the LU. In one embodiment, the LU may be one of the LUs (370, 380, 385) of FIG. 3.

[0198] In operation 720, the electronic device (101) may determine whether migration is required. In one embodiment, the electronic device (101) may identify whether migration is required based on the available capacity of each of the LUs (370, 380, 385).

[0199] In one embodiment, the electronic device (101) may identify that migration is required if the available capacity of any one of the LUs (370, 380, 385) is less than a specified capacity.

[0200] In one embodiment, if migration is determined to be necessary, the electronic device (101) may perform operation 730. In one embodiment, if migration is determined not to be necessary, the electronic device (101) may terminate the operation of FIG. 7.

[0201] In operation 730, the electronic device (101) may identify a target file. In one embodiment, the electronic device (101) may identify data to be migrated from an LU having a specified capacity or less. In one embodiment, the data to be migrated may be selected based on a first priority of data identified through a high-performance I / O analyzer (321) and / or a second priority of data identified through a hot / cold I / O analyzer (325).

[0202] In one embodiment, if the first LU (370) is less than or equal to the specified capacity, the electronic device (101) may identify the data with the highest first priority among the data stored in the first LU (370) as the data to be migrated. In one embodiment, if the first LU (370) is less than or equal to the specified capacity, the electronic device (101) may identify the data with the highest access frequency during the specified time among the data stored in the first LU (370) as the data to be migrated.

[0203] In one embodiment, when the second LU (380) is less than or equal to the specified capacity, the electronic device (101) may, through the migration manager (329), identify data with the lowest first priority among the data stored in the second LU (380) as the data to be migrated. In one embodiment, when the second LU (380) is less than or equal to the specified capacity, the electronic device (101) may identify data with the lowest access frequency during a specified time among the data stored in the second LU (380) as the data to be migrated.

[0204] In one embodiment, the electronic device (101) may identify data to be migrated of a size that causes the available capacity of an LU below a specified capacity to be greater than or equal to the specified capacity. For example, the electronic device (101) may identify data to be migrated of a size that causes the available capacity of the first LU (370) to be greater than or equal to the specified capacity in the first LU (370). For example, the electronic device (101) may identify data to be migrated of a size that causes the available capacity of the second LU (380) to be greater than or equal to the specified capacity in the second LU (380).

[0205] In operation 740, the electronic device (101) may perform migration on the target file. In one embodiment, migration may refer to storing a file stored in an LU having a capacity less than or equal to a specified capacity among the LUs (370, 380, 385) to an LU having a capacity greater than or equal to a specified capacity. In one embodiment, migration may include deleting a file stored in an LU having a capacity less than or equal to a specified capacity among the LUs (370, 380, 385).

[0206] As described above, the electronic device (101) may include a processor (120). The electronic device (101) may include a storage device (205) including a nonvolatile memory area (390). The electronic device (101) may include a file system (310) for managing the nonvolatile memory area (390) into a first partition (370) and a second partition (380) and a memory (130) for storing instructions. The first partition (370) may be allocated a first memory area (432) having a first capacity among the nonvolatile memory areas (390), and the second partition (380) may be allocated a second memory area (433) having a second capacity among the nonvolatile memory areas (390). The instructions, when executed by the processor (120), may cause the electronic device (101) to: identify an available capacity among the first memory area (432) allocated to the first partition (370). The instructions, when executed by the processor (120), may cause the electronic device (101) to: allocate a portion of the memory area (435) corresponding to a portion of the available capacity among the first memory area (432) to the second partition (380) through the file system (310) based on the available capacity being greater than or equal to a specified capacity. The capacity of the portion of the memory area (435) allocated to the second partition (380) may be reduced by a ratio of a second cell level of the second memory area (433) to a first cell level of the first memory area (432).

[0207] As described above, the electronic device (101) may include a processor (120). The electronic device (101) may include a storage device (205) including a nonvolatile memory area (390). The electronic device (101) may include a file system (310) for managing the nonvolatile memory area (390) into a first partition (370) and a second partition (380) and a memory (130) for storing instructions. The first partition (370) may be allocated a first memory area (432) having a first capacity among the nonvolatile memory areas (390), and the second partition (380) may be allocated a second memory area (433) having a second capacity among the nonvolatile memory areas (390). The instructions, when executed by the processor (120), may cause the electronic device (101) to: identify available capacity in the first memory area allocated to the first partition. The instructions, when executed by the processor (120), may cause the file system to allocate a portion of the first memory area to the second partition (380) based on the available capacity being greater than or equal to a specified capacity. By the allocation, the capacity of the portion of the area allocated to the second partition may be reduced by a ratio of second-level cells to first-level cells.

[0208] The instructions, when executed by the processor (120), may cause the electronic device (101) to: allocate another portion of the second memory area to the first partition through the file system (310) based on the available capacity being less than or equal to another designated capacity. By the allocation, the capacity of the other portion of the area allocated to the first partition may be increased by a ratio of first-level cells to second-level cells.

[0209] The above instructions, when executed by the processor (120), may cause the electronic device (101) to: stop allocation of the other portion of memory area (436) to the first partition (370) based on the other available capacity being a designated guaranteed capacity.

[0210] The instructions, when executed by the processor (120), may cause the electronic device (101) to: identify, through the file system (310), a request to store a file. The instructions, when executed by the processor (120), may cause the electronic device (101) to: identify, in response to the storage request being identified, a partition in which to store the file, based on a priority of the file.

[0211] The instructions, when executed by the processor (120), may cause the electronic device (101) to: identify the priority as being higher than or equal to a reference priority based on the storage request for the file being related to data for a binary for executing an application. The instructions, when executed by the processor (120), may cause the electronic device (101) to: identify the second partition (380) as a partition in which to store the file based on the priority being higher than or equal to the reference priority.

[0212] The instructions, when executed by the processor (120), may cause the electronic device (101) to: identify the priority as being higher than or equal to a reference priority based on the storage request of the file being related to fsync. The instructions, when executed by the processor (120), may cause the electronic device (101) to: identify the second partition (380) as a partition in which to store the file based on the priority being higher than or equal to the reference priority.

[0213] The instructions, when executed by the processor (120), may cause the electronic device (101) to: store the file in the identified partition based on whether the available capacity of the identified partition is greater than the size of the file. The instructions, when executed by the processor (120), may cause the electronic device (101) to: store the file in a partition different from the identified partition based on whether the available capacity of the identified partition is less than the size of the file.

[0214] The instructions, when executed by the processor (120), may cause the electronic device (101) to: migrate some of the data stored in the identified partition to a partition other than the identified partition based on the available capacity of the identified partition being less than the size of the file. The instructions, when executed by the processor (120), may cause the electronic device (101) to: store the file in the identified partition in response to the migration of the some of the data.

[0215] The instructions, when executed by the processor (120), may cause the electronic device (101) to: allocate a portion of a memory area allocated to a partition other than the identified partition to the identified partition based on the available capacity of the identified partition being less than the size of the file. The instructions, when executed by the processor (120), may cause the electronic device (101) to: store the file in the identified partition based on the portion of the memory area being allocated to the identified partition.

[0216] The above file system (310) may be a log structure file system. The number of logs for storing data in the first memory area (432) of the first partition (370) may be greater than the number of logs for storing data stored in the second memory area (433) of the second partition (380).

[0217] The data stored in the first memory area (432) of the first partition (370) can be classified as hot data or cold data.

[0218] As described above, the method can be performed in an electronic device (101) including a storage device (205) including a non-volatile memory area (390) and a memory (130) storing a file system (310) for managing the non-volatile memory area (390) into a first partition (370) and a second partition (380). The method can include an operation of identifying an available capacity among the first memory area (432) allocated to the first partition (370). The method can include an operation of allocating a portion of the memory area (435) corresponding to a portion of the available capacity among the first memory area (432) to the second partition (380) through the file system (310) based on the available capacity being greater than or equal to a specified capacity. The capacity of the partial memory area (435) allocated to the second partition (380) may be reduced by the ratio of the second cell level of the second memory area (433) to the first cell level of the first memory area (432).

[0219] As described above, the method can be performed in an electronic device (101), which includes a storage device (205) including a non-volatile memory area (390), and a memory (130) storing a file system (310) for managing the non-volatile memory area (390) into a first partition (370) and a second partition (380). The method can include an operation of identifying an available capacity in a first memory area allocated to a first partition among the plurality of partitions. The method can include an operation of allocating a portion of the first memory area to a second partition among the plurality of partitions through the file system based on the available capacity being greater than or equal to a designated capacity. By the allocation, the capacity of the portion of the area allocated to the second partition can be reduced by a ratio of second-level cells to first-level cells.

[0220] The method may include an operation of allocating another portion of the second memory area to the first partition through the file system (310) based on the available capacity being less than or equal to another specified capacity. By the allocation, the capacity of the other portion of the area allocated to the first partition may be increased by a ratio of first-level cells to second-level cells.

[0221] The method may include an operation of stopping allocation of the other partial memory area (436) to the first partition (370) based on the other available capacity being a specified guaranteed capacity.

[0222] The method may include an operation of identifying a storage request for a file through the file system (310). In response to the storage request being identified, the method may include an operation of identifying a partition in which to store the file based on a priority of the file.

[0223] The method may include an operation of identifying the priority as being higher than or equal to a reference priority based on the fact that the storage request for the file relates to data for a binary for the execution of an application. The method may include an operation of identifying the second partition (380) as the partition in which the file is to be stored based on the fact that the priority is higher than or equal to the reference priority.

[0224] The method may include an operation of identifying the priority as being higher than or equal to a reference priority based on the fact that the storage request for the file is related to fsync. The method may include an operation of identifying the second partition (380) as the partition in which the file is to be stored based on the fact that the priority is higher than or equal to the reference priority.

[0225] The method may include storing the file in the identified partition based on whether the available capacity of the identified partition is greater than the size of the file. The method may include storing the file in a partition distinct from the identified partition based on whether the available capacity of the identified partition is less than the size of the file.

[0226] The method may include migrating some of the data stored in the identified partition to a partition other than the identified partition based on the available capacity of the identified partition being smaller than the size of the file. The method may include storing the file in the identified partition in response to the migration of the some of the data.

[0227] The method may include an action of allocating a portion of a memory area allocated to a partition other than the identified partition to the identified partition based on the available capacity of the identified partition being smaller than the size of the file. The method may include an action of storing the file in the identified partition based on the portion of the memory area being allocated to the identified partition.

[0228] The above file system (310) may be a log structure file system. The number of logs for storing data in the first memory area (432) of the first partition (370) may be greater than the number of logs for storing data stored in the second memory area (433) of the second partition (380).

[0229] The data stored in the first memory area (432) of the first partition (370) can be classified as hot data or cold data.

[0230] As described above, a non-transitory computer readable storage medium can store a program including instructions. When executed by a processor (120) of an electronic device (101), the instructions include a storage device (205) including a non-volatile memory area (390) and a memory (130) storing a file system (310) for managing the non-volatile memory area (390) into a first partition (370) and a second partition (380), the instructions can cause the electronic device (101) to: identify an available capacity of the first memory area (432) allocated to the first partition (370). The instructions, when executed by the processor (120), may cause the electronic device (101) to: allocate a portion of the memory area (435) corresponding to a portion of the available capacity of the first memory area (432) to the second partition (380) through the file system (310) based on the available capacity being greater than or equal to a specified capacity. The capacity of the portion of the memory area (435) allocated to the second partition (380) may be reduced by a ratio of a second cell level of the second memory area (433) to a first cell level of the first memory area (432).

[0231] As described above, a non-transitory computer readable storage medium can store a program including instructions. The instructions, when executed by a processor (120) of an electronic device (101), including a storage device (205) including a non-volatile memory area (390) and a memory (130) storing a file system (310) for managing the non-volatile memory area (390) into a first partition (370) and a second partition (380), cause the electronic device (101) to: identify an available capacity in a first memory area allocated to a first partition among the plurality of partitions, and cause the instructions, when executed by the processor, to cause the electronic device to allocate a portion of the first memory area to a second partition among the plurality of partitions through the file system based on the available capacity being greater than or equal to a designated capacity. The second cell level of the second memory cells included in the second memory area may be lower than the first cell level of the first memory cells included in the first memory area. By the allocation, the capacity of the portion of the area allocated to the second partition may be reduced by the ratio of the second level cells to the first level cells.

[0232] Electronic devices according to the various embodiments disclosed in this document may take various forms. Electronic devices may include, for example, portable communication devices (e.g., smartphones), computer devices, portable multimedia devices, portable medical devices, cameras, wearable devices, or home appliances. Electronic devices according to the embodiments of this document are not limited to the aforementioned devices.

[0233] The various embodiments of this document and the terminology used therein are not intended to limit the technical features described in this document to specific embodiments, but should be understood to include various modifications, equivalents, or substitutes of the embodiments. In connection with the description of the drawings, similar reference numerals may be used for similar or related components. The singular form of a noun corresponding to an item may include one or more of the items, unless the context clearly indicates otherwise. In this document, each of the phrases "A or B", "at least one of A and B", "at least one of A or B", "A, B, or C", "at least one of A, B, and C", and "at least one of A, B, or C" can include any one of the items listed together in the corresponding phrase among those phrases, or all possible combinations thereof. Terms such as "first," "second," or "first" or "second" may be used merely to distinguish one component from another, and do not limit the components in any other respect (e.g., importance or order). When a component (e.g., a first component) is referred to as "coupled" or "connected" to another component (e.g., a second component), with or without the terms "functionally" or "communicatively," it means that the component can be connected to the other component directly (e.g., wired), wirelessly, or through a third component.

[0234] The term "module" used in various embodiments of this document may include a unit implemented in hardware, software, or firmware, and may be used interchangeably with terms such as logic, logic block, component, or circuit. A module may be an integral component, or a minimum unit or part of such a component that performs one or more functions. For example, according to one embodiment, a module may be implemented in the form of an application-specific integrated circuit (ASIC).

[0235] Various embodiments of the present document may be implemented as software (e.g., a program (140)) including one or more instructions stored in a storage medium (e.g., an internal memory (136) or an external memory (138)) readable by a machine (e.g., an electronic device (101)). For example, a processor (e.g., a processor (120)) of the machine (e.g., an electronic device (101)) may call at least one instruction among the one or more instructions stored from the storage medium and execute it. This enables the machine to operate to perform at least one function according to the at least one called instruction. The one or more instructions may include code generated by a compiler or code executable by an interpreter. The machine-readable storage medium may be provided in the form of a non-transitory storage medium. Here, 'non-transitory' simply means that the storage medium is a tangible device and does not contain signals (e.g., electromagnetic waves), and the term does not distinguish between cases where data is stored semi-permanently or temporarily on the storage medium.

[0236] According to one embodiment, the method according to various embodiments disclosed in this document may be provided as included in a computer program product. The computer program product may be traded as a product between a seller and a buyer. The computer program product may be distributed in the form of a machine-readable storage medium (e.g., a compact disc read-only memory (CD-ROM)), or may be distributed online (e.g., by download or upload) through an application store (e.g., Play Store™) or directly between two user devices (e.g., smart phones). In the case of online distribution, at least a portion of the computer program product may be temporarily stored or temporarily generated in a machine-readable storage medium, such as the memory of a manufacturer's server, an application store's server, or an intermediary server.

[0237] According to various embodiments, each component (e.g., a module or a program) of the above-described components may include one or more entities, and some of the entities may be separated and placed in other components. According to various embodiments, one or more components or operations of the aforementioned components may be omitted, or one or more other components or operations may be added. Alternatively or additionally, a plurality of components (e.g., a module or a program) may be integrated into a single component. In such a case, the integrated component may perform one or more functions of each of the plurality of components identically or similarly to those performed by the corresponding component among the plurality of components prior to the integration. According to various embodiments, the operations performed by a module, program, or other component may be executed sequentially, in parallel, iteratively, or heuristically, or one or more of the operations may be executed in a different order, omitted, or one or more other operations may be added.

Claims

1. In an electronic device (101), Processor (120); and A storage device (205) including a nonvolatile memory area (390), and a memory (130) storing a file system (310) and instructions for managing the nonvolatile memory area (390) into a first partition (370) and a second partition (380), The first partition (370) is allocated a first memory area (432) having a first capacity among the nonvolatile memory areas (390), and the second partition (380) is allocated a second memory area (433) having a second capacity among the nonvolatile memory areas (390). When the above instructions are executed by the processor (120), the electronic device (101): Identify the available capacity in the first memory area (432) allocated to the first partition (370), Based on the above available capacity being greater than or equal to the specified capacity, causing the file system (310) to allocate some area from the first memory area to the second partition, The capacity of the part of the area allocated to the second partition is reduced by the ratio of the second level cell to the first level cell. Electronic devices.

2. In claim 1, The above instructions, when executed by the processor, cause the electronic device to: Based on the above available capacity being less than or equal to another specified capacity, causing the file system to allocate another portion of the second memory area to the first partition, The capacity of said other portion of the area allocated to said first partition is increased by the ratio of the first level cell to the second level cell. Electronic devices.

3. In claim 2, The above instructions, when executed by the processor, cause the electronic device to: Causing the allocation of said other portion of the area to said first partition to be stopped based on the other available capacity being the specified guaranteed capacity. Electronic devices.

4. In any one of claims 1 to 3, The above instructions, when executed by the processor, cause the electronic device to: Through the above file system, identify the request to store the file, In response to the above storage request being identified, causing a partition to be identified in which to store the file, based on the priority of the file; Electronic devices.

5. In claim 4, The above instructions, when executed by the processor, cause the electronic device to: Based on the fact that the above storage request of the above file relates to data for the binary for execution of the application, the priority is identified as being higher than the reference priority, Based on the above priority being greater than or equal to the base priority, causing the second partition to be identified as the partition in which to store the file. Electronic devices.

6. In claim 4, The above instructions, when executed by the processor, cause the electronic device to: Based on the above save request of the above file being related to fsync, the priority is identified as being higher than the base priority, Based on the above priority being greater than or equal to the base priority, causing the second partition to be identified as the partition in which to store the file. Electronic devices.

7. In claim 4, The above instructions, when executed by the processor, cause the electronic device to: Store the file in the identified partition based on the available capacity of the identified partition being greater than the size of the file, Causing said file to be stored in a partition other than said identified partition, based on the available capacity of said identified partition being less than said size of said file; Electronic devices.

8. In claim 4, The above instructions, when executed by the processor, cause the electronic device to: Based on the available capacity of the identified partition being smaller than the size of the file, some of the data stored in the identified partition is migrated to a partition other than the identified partition, Based on the migration of said some data, causing said file to be stored in said identified partition, Electronic devices.

9. In claim 4, The above instructions, when executed by the processor, cause the electronic device to: Based on the available capacity of the identified partition being less than the size of the file, allocate a portion of the memory area allocated to the identified partition and other partitions to the identified partition, Causing said file to be stored in said identified partition, based on a portion of said memory area being allocated to said identified partition; Electronic devices.

10. In claim 4, The above file system is a log writing file system, The number of logs for storing data in the first memory area of ​​the first partition is greater than the number of logs for storing data stored in the second memory area of ​​the second partition. Electronic devices.

11. In claim 10, The data stored in the first memory area of ​​the first partition is classified as hot data or cold data. Electronic devices.

12. In a method of operating an electronic device (101), comprising a storage device (205) including a nonvolatile memory area (390) and a memory (130) storing a file system (310) for managing the nonvolatile memory area (390) into a first partition (370) and a second partition (380), An operation for identifying available capacity in a first memory area allocated to the first partition, and Based on the available capacity being greater than or equal to the specified capacity, the method comprises allocating a portion of the first memory area to a second partition among the plurality of partitions through the file system. The capacity of the part of the area allocated to the second partition is reduced by the ratio of the second level cells of the second memory area (433) to the first level cells of the first memory area (432). method.

13. In claim 12, Based on the available capacity being less than or equal to another specified capacity, the operation of allocating another portion of the second memory area to the first partition through the file system; The capacity of said other portion of the area allocated to said first partition is increased by the ratio of the first level cell to the second level cell. method.

14. In claim 13, An operation of stopping the allocation of said some other memory area to said first partition based on the other available capacity being a specified guaranteed capacity. method.

15. In a non-transitory computer readable storage medium, Save a program containing instructions, The above instructions, when executed by a processor of an electronic device (101) including a storage device (205) including a nonvolatile memory area (390) and a memory (130) storing a file system (310) for managing the nonvolatile memory area (390) into a first partition (370) and a second partition (380), cause the electronic device to: Identify the available capacity in the first memory area allocated to the first partition, Based on the above available capacity being greater than or equal to the specified capacity, causing the file system to allocate some area from the first memory area to a second partition among the plurality of partitions, The capacity of the part of the area allocated to the second partition is reduced by the ratio of the second level cells of the second memory area (433) to the first level cells of the first memory area (432). A non-transitory computer-readable recording medium.

Citation Information

Patent Citations

  • Storage device and method of operating the storage device

    KR1020180031289A

  • Electronic manhole structure

    KR102273249B1

  • The Apparatus For Memory

    KR102571501B1

  • Data storage device and operating method thereof

    US20220374172A1

  • KR20230083940A