Data processing component, solid-state storage device and corresponding computer implementation method

By allowing only the operating system to access logical storage blocks in solid-state storage devices and utilizing mapping and historical value management, the data recovery challenge in ransomware attacks is solved, enabling fast and cost-effective data recovery and enhancing the device's resistance to ransomware.

CN121889797APending Publication Date: 2026-04-17NAGRAVISION SA
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
NAGRAVISION SA
Filing Date
2024-08-30
Publication Date
2026-04-17

AI Technical Summary

Technical Problem

Ransomware attacks cause data encryption, making data recovery difficult. Existing technologies such as TRIM signatures cannot effectively prevent data overwriting. Tape backups are costly and inflexible, and there is a lack of fast and cost-effective ransomware-resistant storage media.

Method used

In solid-state storage devices, the operating system can only access logical storage blocks, and each logical storage block is mapped to multiple physical storage blocks. Through updating the mapping and managing historical values, older data is ensured to be retained for recovery, preventing important data from being overwritten.

Benefits of technology

This improves the resilience of solid-state storage devices against ransomware attacks, ensuring rapid data recovery after an attack and reducing the impact and cost of ransomware.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121889797A_ABST
    Figure CN121889797A_ABST
Patent Text Reader

Abstract

A data processing component for controlling storage of data to a solid state storage device comprising a plurality of N physical storage blocks, comprising a controller and a memory, in which: the memory stores a mapping between a plurality of M logical storage blocks accessible by an operating system of a computing device and respective ones of the plurality of N physical storage blocks; and a controller configured to, in response to receiving a request from an operating system to store incoming data in a first specified logical storage block mapped to a first physical storage block, perform a method including: determining that the first specified logical storage block is unavailable for storage of the incoming data, and in response to determining that the first specified logical storage block is not available for storage of incoming data: identifying a second physical storage block of the plurality of N physical storage blocks for storage of incoming data based on a historical value of the second physical storage block, the historical value indicates the latest time when the physical storage block is updated and / or the number of times when the physical storage block is updated; and storing the incoming data in the second physical storage block. A solid state storage device and a computer-implemented method are also provided.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates to a data processing component for controlling the storage of data into a solid-state storage device comprising multiple physical storage blocks. A corresponding solid-state storage device and a computer-implemented method are also provided. Background Technology

[0002] In the field of digital security, ransomware has become an increasingly prevalent and dangerous threat. This type of malware is particularly dangerous because attackers often target high-value assets, and the cost of data loss is enormous. In today's technology-driven world, understanding the mechanisms of ransomware attacks and developing effective defenses against them is crucial.

[0003] Ransomware operates by cryptographically encrypting the data on the victim's disk. Using high-throughput encryption schemes, typically employing stream ciphers, the data is overwritten at an extremely rapid pace, leaving users with virtually no time to detect and mitigate the attack. This rapid process makes it challenging for users to protect their valuable information and recover from the attack.

[0004] Modern solid-state storage devices (SSSDs) incorporate a feature called TRIM, designed to enhance performance and extend SSD lifespan by preventing immediate overwriting of erased data. However, this feature does not provide a foolproof solution against ransomware attacks. In practice, recovery of erased data is often impossible because unused sectors containing residual data are quickly reclaimed and overwritten with new data. Therefore, this process hinders attempts to recover ransomware-encrypted data by examining recently erased sectors.

[0005] To defend against ransomware, an ideal solution would involve deploying a write-once filesystem that retains deleted data for a period of time. This approach would allow users to recover their information even after a ransomware attack. Unfortunately, the most common method for achieving this is through tape backups, which are notoriously expensive, slow, and inflexible.

[0006] There is an urgent need for a fast, cost-effective, and adaptable ransomware-resistant storage medium. This solution would not only minimize the impact of ransomware attacks on businesses and individuals but also deter potential attackers. Summary of the Invention

[0007] In a broader sense, this invention provides a data processing component for controlling the storage of data into a solid-state storage device comprising multiple (N) physical storage blocks, addressing the shortcomings of existing technologies. To mitigate the risks associated with ransomware attacks, the operating system can access only multiple (M) logical storage blocks, each mapped to a corresponding physical storage block, where M < N, such that the mapping between physical and logical storage blocks is updated when a request to erase or overwrite data is received. In this way, older data can be retained on the solid-state storage device and can be recovered in the event of a ransomware attack or other equivalent circumstances.

[0008] Accordingly, a first aspect of the present invention provides a data processing component for controlling the storage of data into a solid-state storage device comprising a plurality (N) physical storage blocks. The data processing component includes a controller and a memory, wherein: the memory stores a mapping between a plurality (M) logical storage blocks accessible by the operating system of a computing device and corresponding physical storage blocks among the plurality (N) physical storage blocks; and the controller is configured to, in response to receiving from the operating system a request to store incoming data in a first designated logical storage block mapped to a first physical storage block, perform a method comprising: determining that the first designated logical storage block is unavailable for storing the incoming data; and, in response to determining that the first designated logical storage block is unavailable for storing the incoming data, identifying a second physical storage block among the plurality (N) physical storage blocks for storing the incoming data. The identification of the second physical storage block among the plurality (N) physical storage blocks may be based on historical values ​​of the second physical storage block, which indicate the most recent time the physical storage block was updated and / or the number of times the physical storage block has been updated. The controller may also be configured to store the incoming data in the second physical storage block.

[0009] Each physical memory block can store a corresponding historical value indicating the most recent time that the physical memory block was updated and / or the number of times that physical memory block has been updated. In those cases, the identification of a second physical memory block can be based on the historical value of the second physical memory block, for example, based on the determination that the historical value of the second physical memory block meets a predetermined criterion. Alternatively, the historical value can be stored in a separate location in memory, rather than in the respective physical memory block itself.

[0010] This is discussed in more detail later in this patent application.

[0011] In addition to storing incoming data in the second physical storage block, the controller can also be configured to update the mapping to associate the first specified logical storage block with the second physical storage block. This can occur before or after storing the incoming data in the second physical storage block.

[0012] Furthermore, the controller can also be configured to update the historical values ​​of the second physical storage block, for example, after incoming data has been stored in the second physical storage block. Alternatively, in those cases where the controller is configured to update the mapping as outlined in the previous paragraph, the controller can be configured to update the historical values ​​of the second physical storage block when updating the mapping, for example, simultaneously with updating the mapping, before (preferably immediately before) updating the mapping, or after updating the mapping (preferably immediately after).

[0013] This invention is particularly applicable to solid-state storage devices, such as solid-state drives (SSDs), but also applicable to any other storage device that can be partitioned into physical blocks, such as conventional hard disk drives. "Computing device" can be any suitable computing device, such as a desktop computer, laptop computer, smartphone, tablet computer, etc. The term "computing device" should be understood as referring to an external computing device, that is, a computing device that is not part of a solid-state storage device or data processing component. A computing device can be a computing device in which a solid-state storage device is a component.

[0014] The distinction between physical storage blocks and logical storage blocks is important.

[0015] The term "physical storage block" is used to refer to the actual physical component of a storage device configured to store a given amount of data. For example, a physical storage block can correspond to a region of flash memory within a solid-state storage device, a dynamic random-access memory (DRAM) cell, or other suitable technology for implementing physical storage of data within a solid-state or other storage device. Each physical storage block can have the same capacity, for example, it could be 2 X Kilobytes (KiB), where X can be no less than 7, 8, 9, 10, or 11. Alternatively, each physical storage block can have 10... Y The capacity is 1 byte, where Y can be no less than 2, no less than 3, no less than 4, or no less than 5.

[0016] Solid-state storage devices may include no less than 100,000 physical storage blocks, no less than 1,000,000 physical storage blocks, no less than 2,000,000 physical storage blocks, no less than 5,000,000 physical storage blocks, no less than 10,000,000 physical storage blocks, no less than 100,000,000 blocks, or no less than 100,000,000 blocks.

[0017] Each physical storage block can have an associated address that defines its location within the solid-state storage device. Each physical storage block can also have an associated index or identifier. The index or identifier can be an integer and can be simpler than the corresponding address of the physical storage block.

[0018] In this document, a "logical storage block" includes an index or identifier corresponding to a physical storage block among multiple (N) physical storage blocks. A logical storage block may sometimes also be referred to as a "virtual storage block." A logical storage block is not an actual storage block that can be used to store data, but rather a reference to a physical storage block of a storage device that can be used to store data. Each logical storage block can have the same capacity, which can be the same as the capacity of each physical storage block. According to the mapping, there can be a physical storage block mapped to each logical storage block. The mapping can be stored in the form of a table or in the form of multiple associations between logical and physical storage blocks. To improve security, the number of logical storage blocks M is less than the number of physical storage blocks N, i.e., M < N, meaning there are more physical storage blocks than logical storage blocks. In this way, only a portion of the physical storage blocks can be associated with logical storage blocks at a given time. However, the invention can still be implemented when the number of physical storage blocks is the same as the number of logical storage blocks, i.e., when M equals N, or when there is a one-to-one mapping between physical and logical storage blocks. In these cases, it may not be necessary to update the mapping because there is a one-to-one mapping between logical storage blocks and physical storage blocks, or a mapping determined during device formatting, which may take into account, for example, corrupted physical blocks.

[0019] The M = N implementation can be useful when only a small fraction of the physical storage blocks (and equivalently, logical storage blocks) are used, which is generally the case given the large capacity of modern storage devices.

[0020] Logical storage blocks are accessible to the operating system; that is, when the operating system is required to store data on the storage device, it can only "see" the logical storage blocks and select a storage location from them. In this way, the data processing component of the first aspect of the invention acts as an intermediary between the operating system and the solid-state storage device itself. Only logical storage blocks are accessible to the operating system; that is, physical storage blocks are inaccessible to the operating system. In other words, the data processing component can be configured to prevent the operating system of the computing device from directly accessing multiple physical storage blocks, such that the operating system of the computing device can only access the solid-state storage device with a size of M blocks. By preventing the operating system from accessing the physical storage blocks, an additional security layer is provided between the operating system and the storage device, as ransomware infects the operating system.

[0021] The operating system can access the solid-state storage device through the I / O interface provided by the device's firmware (which runs on the controller of the data processing component). Typically, the firmware provides access to the entire physical disk (by providing I / O interfaces for addressing physical blocks). However, to prevent the operating system from accessing physical storage blocks, the firmware can provide I / O addressing only for logical storage blocks instead of physical storage blocks.

[0022] Physical storage blocks can be selectively accessible to the operating system, rather than being inaccessible. In other words, users can control whether physical storage blocks are accessible to the computing device's operating system. For example, a data processing component may include a switch configured to toggle between a protected state where the physical storage blocks are inaccessible to the computing device's operating system and an unprotected state where the physical storage blocks are accessible to the computing device's operating system. Enabling access to physical storage blocks can be useful, for example, in scenarios such as recovery, reinitializing the storage device to a blank state, or modifying the storage device's security level. In the unprotected state, the physical storage blocks may be accessible to the computing device's operating system only via a dedicated physical interface. In some cases, the switch may be lockable to prevent the data processing component or solid-state storage device from accidentally or unauthorizedly switching from a protected state to an unprotected state.

[0023] As we will demonstrate later, if the solid-state storage device is nearly full (as far as the operating system can indicate), that is, if most logical storage blocks are in use, then almost every logical deletion or overwrite of data corresponds to a physical deletion or overwrite of data. This inevitably means that backup data, which forms the cornerstone of the data processing component that constitutes the first aspect of this invention against ransomware attacks, is also being deleted or overwritten. Accordingly, in order to maximize the amount of backup data that can be stored relative to the capacity accessible to the operating system of the computing device, the N:M ratio can be large. In other words, only a small fraction of the physical storage blocks are exposed to the operating system (but are inaccessible to it). This increases the backup capacity of the solid-state storage device, thereby improving its resilience to ransomware attacks and thus improving the security of the solid-state storage device. However, there is a trade-off between the level of security and the amount of wasted space (because the larger the backup capacity of the solid-state storage device, the fewer logical storage blocks are accessible to the operating system, thereby reducing the usable storage capacity). The security level of a solid-state storage device or data processing component can refer to the proportion of physical storage blocks exposed to or accessible to the operating system of the computing device; that is, it can be based on an M:N ratio, or equivalently, N:M. The security level can be adjustable, essentially by selecting the number of logical storage blocks accessible to the operating system of the computing device. Adjustment of the security level can only be permitted when the data processing component or solid-state storage device is in an unprotected state as defined above.

[0024] In some cases, the value of N can be at least twice the value of M. In some cases, the value of N can be at least three times the value of M. In some cases, the value of N can be at least four times the value of M. In some cases, the value of N can be at least five times the value of M. In some cases, the value of N can be at least six times the value of M. In some cases, the value of N can be at least seven times the value of M. In some cases, the value of N can be at least eight times the value of M. In some cases, the value of N can be at least nine times the value of M. In some cases, the value of N can be at least ten times the value of M. In some cases, the value of N can be at least twenty times the value of M. In some cases, the value of N can be at least fifty times the value of M. In some cases, the value of N can be at least one hundred times the value of M. The N:M ratio can be adjusted between any pair of values ​​described in this paragraph.

[0025] We will now discuss the operation of the data processing component in more detail. The controller of the data processing component is reportedly configured to perform a series of steps in response to receiving a request from the operating system of the computing device to store incoming data in a first designated logical storage block. It should be noted that the controller can also be configured to perform the step of receiving a request from the operating system of the computing device to store incoming data in a first designated logical storage block. This request may include data identifying the first designated logical storage block, and may also include the data itself. Alternatively, the request may include data identifying the location from which the incoming data can be obtained for storage in a solid-state storage device. The controller then identifies a first physical block mapped to the first designated logical storage block based on the mapping. For example, the controller may perform a lookup on the mapping, where the input to the lookup is the first designated logical storage block or its identifier or index, and the output is the identifier, index, or address of the mapped first physical storage block.

[0026] Next, it is determined that the first designated logical storage block is currently unavailable for storing incoming data. Therefore, it will be appreciated that the present invention focuses on the scenario where the logical storage block is unavailable. However, prior to this determination, the method may also include determining whether the first designated logical storage block is available for storing incoming data. If, for example, the physical storage block to which the logical storage block is mapped is currently not used to store any data (i.e., it is empty), then the logical storage block may be available for storing incoming data. Alternatively, the physical storage block may currently store data that has been previously erased by the user, i.e., data that can be overwritten. Each logical storage block may have or be associated with an availability flag, which includes a value indicating whether the logical storage block is available for storing incoming data. This value may be a binary value, such as 0 or 1, or TRUE or FALSE. If the logical storage block is available for storing incoming data, then the availability flag may be TRUE, and if the logical storage block is unavailable for storing incoming data, then it may be FALSE. Alternatively, the availability flag can indicate whether the logical storage block is currently in use. In this case, it can take the value TRUE if the logical storage block is currently in use, and the value FALSE if the logical storage block is not currently in use. In this case, the availability flag can be referred to as the "usage flag." It will be recognized that this is equivalent. Determining whether a first specified logical storage block is available for storage of incoming data may include querying the availability flag. After the data is stored in the physical storage block mapped to the first specified logical storage block, the availability flag is preferably updated accordingly. For example, the availability value can be updated from TRUE to FALSE, or the usage flag can be updated from FALSE to TRUE.

[0027] If it is determined that a first designated logical storage block is available for storing incoming data, then the controller can be configured to store the incoming data in a first physical storage block (i.e., the physical storage block to which the first designated logical storage block is mapped). In other words, in response to determining that a first designated logical storage block is available for storing incoming data, the controller can be configured to store the incoming data in the first physical storage block. In some cases, the controller can be configured to first identify the first physical storage block to which the first designated logical storage block is mapped, and then store the incoming data in that first physical storage block.

[0028] If it is determined that the first designated logical storage block is unavailable for storing incoming data, then the method is performed as outlined in the first aspect of the invention, i.e., in response to determining that the first designated logical storage block is unavailable for storing incoming data, a second physical storage block is identified from a plurality of (N) physical storage blocks. The method of identifying the second physical storage block can provide several advantageous technical effects.

[0029] Identifying a second physical storage block can be based on the most recent time it was updated or the number of times it has been updated. In this document, "updated" can refer to any, some, or all of the following: its mapping has been updated, incoming data has been stored on it, or data stored on it has been deleted / erased. Identifying the second physical storage device in this way ensures that the physical storage block is selected as the least recently used one. When it comes to overwriting data, it is desirable to overwrite the oldest data on the solid-state storage device, as this data is most likely to be outdated and therefore of least use in recovery scenarios resulting from ransomware attacks.

[0030] To track the number of times a physical memory block has been updated or the most recent time a given physical memory block was updated (equivalently, the time when a given physical memory block was last updated), each physical memory block may be associated with a historical value, or may include historical values. This historical value can provide an indication of the number of times a physical memory block has been updated or the most recent time a physical memory block was updated. In some cases, each physical memory block may include a first historical value indicating the number of times the physical memory block has been updated and a second historical value indicating the most recent time a physical memory block was updated. The memory may also store the association between the index, identifier, or address of each physical memory block and the corresponding historical value for that physical memory block.

[0031] Essentially, the identification of the second physical block can be based on a criterion related to the most recent time of its last update, or on the number of times the block has been updated. In many cases, these criteria can point to the same physical storage block, but this is not always the case. The two methods and how they can be implemented are discussed below. Preferably, the second physical storage block is an "old" physical storage block, that is, a physical storage block that has not been updated many times or has not been updated for a long time. In this way, it can be ensured that only old, outdated data is overwritten.

[0032] More specifically, the second physical storage block can be an older physical storage block. In this document, an older physical storage block is defined as a physical storage block that meets the following criteria: its most recent update occurred before a threshold time or longer than a threshold interval, or its most recent update occurred relatively earlier than the corresponding most recent update of each physical storage block in the defined subset of multiple physical storage blocks. There can be multiple physical storage blocks that meet the selected criteria, and therefore multiple older physical storage blocks from which a second physical storage block can be selected or identified. An older physical storage block can also be defined based on criteria related to the number of times a physical storage block has been updated. Accordingly, an older physical storage block can also be defined as a physical storage block that meets the following criteria: it has been updated less than (or less than or equal to) a threshold number, or relatively less than the corresponding number of times each physical storage block in the defined subset of multiple physical storage blocks has been updated.

[0033] We first consider the "time" criterion. As discussed earlier, the second physical storage block is the "older" physical storage block, which can be determined based on a criterion related to the most recent time the second physical storage block was updated. As "older" implies (used as a label for convenience), this criterion specifies in some way that the second physical storage block was last updated before other physical storage blocks. To be more precise, it must be noted that the reference to the "most recent time" of the second physical storage block being updated here does not refer to the most recently updated second physical storage block. Rather, the second physical storage block is identified based on consideration of the corresponding most recent update time of each physical storage block. Accordingly, identifying the second physical storage block may include identifying the physical storage block that was updated earliest among the plurality of physical storage blocks or that has not yet been used to store incoming data. In this document, "updated" can refer to any, some, or all of the following: its mapping has been updated, incoming data has been stored on it, or the data stored on it has been erased / deleted. In this way, when incoming data is stored on the solid-state storage device, only the old data is overwritten. Of course, this may only be relevant when all or almost all physical storage blocks of the solid-state storage device are full. Overwriting is unnecessary before this point, as there are unused blocks available.

[0034] Identifying the second physical storage block may include determining the time when each physical storage block was most recently updated for each physical storage block in a plurality of physical storage blocks or subsets thereof, for example, based on the corresponding historical value of each physical storage block or subset thereof. Then, identifying the second physical storage block may include identifying the physical storage block in the plurality of physical storage blocks or subsets thereof that was updated earliest, i.e., the physical storage block with the lowest historical value. Alternatively, physical storage blocks that have not yet been used to store data may be identified.

[0035] Identifying a second physical storage block can include identifying physical storage blocks whose most recent update occurred a time earlier than a predetermined threshold interval. The threshold interval can be, for example, one hour, one day, two days, or one week. The threshold interval can be based on the activity of the solid-state storage device. For example, identifying a second physical storage block can include identifying physical storage blocks, or subsets thereof, whose most recent update occurred before a peak activity period of the solid-state storage device. In this context, the term "peak activity period" can refer to a period where the activity level exceeds a specific threshold. A peak in activity typically indicates that a large amount of data is being written to the solid-state storage device, and there is reason to assume that such data may be important. By ensuring that only physical blocks whose most recent update occurred before the peak activity period are selected and therefore overwritten, important recently written data can be avoided. Again, this can be achieved by identifying blocks whose historical values ​​indicate a time earlier than the start of the peak activity period. The peak activity period can alternatively be referred to as a "spike."

[0036] Identifying the second physical storage block may involve ranking multiple physical storage blocks or subsets thereof based on the time of their most recent update (e.g., ranking physical storage blocks based on their historical values) and selecting the physical storage block whose ranking is below a predetermined threshold as the second physical storage block. The ranking can be expressed in absolute terms, or in percentiles or equivalent terms. For example, the second physical storage block must be a physical storage block whose most recent update is in the lower half, lower quarter, or lower 10% of the ordered list. It will be acknowledged that any value can be chosen for the threshold. In some cases, this can be equivalent to identifying the oldest block, i.e., the physical storage block that was updated earliest.

[0037] When identifying a second physical storage block, the controller can be configured to scan (e.g., one at a time) multiple physical storage blocks or subsets thereof, and identify the first scanned physical storage block that meets predetermined criteria as the second physical storage block. The predetermined criteria can be one of the criteria mentioned in the preceding paragraphs, such as the physical storage block's most recent update being a longer period before a predetermined threshold interval, or the physical storage block's most recent update being before a peak activity period. These criteria can be evaluated based on historical values ​​of the scanned physical blocks. By adopting this strategy, the need to evaluate all physical storage blocks can be eliminated, thereby increasing the speed at which a suitable second physical storage block can be identified.

[0038] Before proceeding to discuss how to identify a second physical storage block based on the number of times it has been updated, we discuss the relationship between historical values ​​and time. The controller may include a counter, which may have an initial value of zero. The controller can be configured to increment the counter each time any physical block is updated. Alternatively, the controller can be configured to increment the counter at regular intervals, such as every minute, every hour, every two hours, or every day. It will be appreciated that any suitable interval can be chosen. In this way, the counter provides an efficient representation of the passage of time. Each time a physical storage block is updated, its historical value can be updated to reflect the value of the counter at that time, thus providing a measure of when the update occurred without providing an absolute timestamp. Of course, in some cases, the counter can count absolute time, and the historical value of a physical storage block can reflect the absolute time it was updated.

[0039] In these cases, identifying the second physical storage block may include identifying physical storage blocks whose historical values ​​are less than a counter value, for example, by scanning (e.g., one at a time) multiple physical storage blocks or a subset thereof, and identifying the first scanned physical storage block whose historical value is less than the counter value as the second physical storage block. If multiple physical storage blocks have values ​​less than the counter, then one of the aforementioned criteria can be used to select a physical storage block as the second physical storage block from among the physical storage blocks whose historical values ​​are less than the counter value.

[0040] We now discuss how to identify a second physical storage block based on the number of times it has been updated. As discussed earlier, each physical storage block can be associated with, or may include, a historical value. A historical value can indicate the number of times a physical storage block has been updated. In this document, "updated" can refer to any, some, or all of the following: its mapping has been updated, incoming data has been stored on it, or data stored on it has been erased / deleted. A historical value can be an integer value zero or greater. A physical storage block that has never been mapped to a logical storage block or has never stored incoming data on it can have a historical value of zero. Identifying a second physical storage block can include identifying the physical storage block with the lowest historical value. In the case where multiple physical storage blocks have the same lowest historical value, the second physical storage block can be identified based on its identifier. For example, physical storage blocks can each have an identifier that includes an integer value, and the physical storage block with the lowest or highest integer value can be selected as the second physical storage block.

[0041] Alternatively, identifying a second physical storage block can be based on another criterion, such as historical values ​​below a predetermined threshold. In this case, identifying a second physical storage block may include scanning (e.g., one at a time) multiple physical storage blocks or subsets thereof, and identifying the first physical storage block scanned whose historical values ​​meet the other criterion (such as being below the predetermined threshold) as the second physical storage block.

[0042] When incoming data is stored in the first physical storage block (i.e., when it is determined that the first designated logical storage block is available for storing the incoming data), the controller can be configured to increment the historical value of the first physical storage block by 1, since the block has been updated by storing data thereon. In other cases, when a second physical storage block is identified, the method further includes updating the mapping to associate the first designated logical storage block with the second physical storage block and storing the incoming data in the second physical storage block. In this case, the controller can be configured to increment, for example, the historical value of the second physical storage block by 1 after the mapping is updated or after the incoming data is stored in the second physical storage block. Preferably, the historical value is updated only once as a result of these two steps.

[0043] As discussed earlier, the controller may include a counter, which may have an initial value of zero. The controller may be configured to increment the value of the counter under other conditions, rather than updating the counter based on time. The data processing components and / or solid-state storage devices may be initialized such that each of the M logical memory blocks is mapped to a corresponding physical memory block among a plurality of (N) physical memory blocks. Each physical memory block mapped to a logical memory block may be initialized with a historical value of 1, and each physical memory block that is not mapped (because there are more physical memory blocks than logical memory blocks) may be initialized with a historical value of 0. Identifying the second physical memory block with the lowest historical value may include determining whether there exists any physical memory block among the plurality of physical memory blocks or a subset thereof whose historical value is less than or equal to (or only less than) the value of the counter at that time. This can be achieved by scanning (e.g., one at a time) the plurality of physical memory blocks or a subset thereof and identifying the first physical memory block scanned whose historical value is less than or equal to (or only less than) the value of the counter at that time as the second physical memory block.

[0044] If it exists, or in response to determining its existence, then that physical storage block can be selected as the second physical storage block. In cases where multiple physical storage blocks have historical values ​​less than or equal to (or only less than) the value of a counter, the second physical storage block can be identified based on its identifier. For example, each physical storage block can have an identifier including an integer value, and the physical storage block with the lowest or highest integer value can be selected as the second physical storage block.

[0045] If no physical storage block exists whose historical value is less than or equal to (or only less than) the counter value, or in response to determining that no such block exists, the controller can be configured to increment the counter value by 1. This determination is then repeated in the same manner until a physical storage block with a historical value less than or equal to (or only less than) the counter value is identified. In this way, the counter value can be considered to represent the maximum number of times any of the multiple physical storage blocks has been updated. In other words, the counter value represents the historical value of the block that has been updated the most times.

[0046] The above disclosure relates to writing new data to a solid-state storage device, which may include updating mappings and overwriting existing data stored in physical storage blocks. However, the present invention also enables the deletion or erasure of data from a specific logical storage block. Specifically, in response to a request to erase data from a second designated logical storage block mapped to a third physical storage block among a plurality of physical storage blocks, a controller can be configured to identify a fourth physical storage block among the plurality of physical storage blocks based on historical values ​​of the fourth storage block. The controller can then be configured to update the mapping to associate the second designated logical storage block with the fourth physical storage block. The controller can then be configured to mark the second logical storage block as storage available for incoming data. This can be achieved, for example, by updating an availability flag associated with the second designated logical storage block to indicate that the second designated logical storage block is available for storage for incoming data. This can be done, for example, by setting the availability flag to TRUE or setting the usage flag to FALSE. By performing these steps in response to a request to erase data from a logical storage block, the block becomes associated with a different physical block whose data may be older and therefore more suitable for overwriting. Data originally associated with the second designated logical storage block remains stored on the third physical storage block, but this is no longer mapped to the second designated logical storage block, thus effectively forming backup data. The controller can also be configured to update the historical value of the fourth physical storage block, for example, by incrementing the number of times it has been updated, or by updating the time the mapping was updated, or by marking the fourth physical storage block as available for storage of incoming data, for example, simultaneously with the mapping being updated or the fourth storage block being marked as available for storage of incoming data, before (preferably immediately before) the mapping being updated or the fourth storage block being marked as available for storage of incoming data, or after (preferably immediately after) the mapping being updated or the fourth storage block being marked as available for storage of incoming data. Alternatively, the controller can be configured to update the historical value of the fourth physical storage block only when new incoming data is stored in the fourth physical block.

[0047] The fourth physical storage block can be identified in the same way as the second physical storage block, as in the case of writing new data to the solid-state storage device. In other words, the identification of the fourth physical block can be based on a criterion related to the most recent time of its last update, or on the number of times the block has been updated. In many cases, these criteria can point to the same physical storage block, but this is not always the case. These two methods and how they can be implemented are discussed below. Preferably, the fourth physical storage block is an "old" physical storage block, that is, a physical storage block that has not been updated many times or has not been updated for a long time. In this way, it can be ensured that only old, outdated data is overwritten.

[0048] In this article, "updated" can refer to any, some, or all of the following: its mapping has been updated, incoming data has been stored on it, or the data stored on it has been deleted / erased. Identifying the fourth physical storage device in this way ensures that physical storage blocks that have not been recently used are selected. When it comes to overwriting data, it is desirable to overwrite the oldest data on the solid-state storage device, as this data is most likely to be outdated and therefore of least use in recovery scenarios resulting from ransomware attacks.

[0049] We first consider the "time" criterion. As discussed earlier, the fourth physical storage block is the "old" physical storage block, which can be determined based on a criterion related to the most recent time the fourth physical storage block was updated. As "old" implies (used as a label for convenience), this criterion specifies in some way that the fourth physical storage block was last updated earlier than other physical storage blocks. To be more rigorous, it must be noted that the reference to the "most recent time" of the fourth physical storage block being updated here does not refer to the most recently updated fourth physical storage block. Rather, the second physical storage block is identified based on consideration of the corresponding most recent update time of each physical storage block. Accordingly, identifying the fourth physical storage block may include identifying the earliest updated physical storage block among multiple physical storage blocks or subsets thereof, or a physical storage block that has not yet been used to store incoming data. In this paper, "updated" can refer to any, some, or all of the following: its mapping has been updated, incoming data has been stored on it, or the data stored on it has been erased / deleted. In this way, when incoming data is stored on a solid-state storage device, only the old data is overwritten. Of course, this is only relevant when all or almost all physical storage blocks on a solid-state storage device are full. Before that, overwriting is unnecessary because there are unused blocks available.

[0050] Identifying the fourth physical storage block may include determining the time when each physical storage block was most recently updated for each physical storage block in a subset of physical storage blocks, for example, based on the corresponding historical value of each physical storage block or subset of physical storage blocks. Then, identifying the fourth physical storage block may include identifying the physical storage block in the subset of physical storage blocks that was updated earliest, i.e., the physical storage block with the lowest historical value. Alternatively, physical storage blocks that have not yet been used to store data may be identified.

[0051] Identifying a fourth physical storage block can include identifying physical storage blocks whose most recent update occurred a time earlier than a predetermined threshold interval. The threshold interval can be, for example, one hour, one day, two days, or one week. The threshold interval can be based on the activity of the solid-state storage device. For example, identifying a fourth physical storage block can include identifying physical storage blocks, or subsets thereof, whose most recent update occurred before a peak activity period of the solid-state storage device. Peaks in activity typically indicate that a large amount of data is being written to the solid-state storage device, and there is reason to assume that such data may be important. By ensuring that only physical blocks whose most recent update occurred before the peak activity period are selected and therefore overwritten, important recently written data can be avoided. Again, this can be achieved by identifying blocks whose historical values ​​indicate a time earlier than the start of the peak activity period. The peak activity period can alternatively be referred to as a "peak".

[0052] Identifying the fourth physical storage block may involve ranking multiple physical storage blocks or subsets thereof based on the time of their most recent update (e.g., ranking physical storage blocks based on their historical values) and selecting the physical storage block whose ranking is below a predetermined threshold as the fourth physical storage block. The ranking can be expressed in absolute terms, or in percentiles or equivalent terms. For example, the fourth physical storage block must be a physical storage block whose most recent update is in the lower half, lower quarter, or lower 10% of the ordered list. It will be acknowledged that any value can be chosen for the threshold. In some cases, this can be equivalent to identifying the oldest block, i.e., the physical storage block that was updated earliest.

[0053] When identifying a fourth physical storage block, the controller can be configured to scan (e.g., one at a time) multiple physical storage blocks or subsets thereof, and identify the first scanned physical storage block that meets predetermined criteria as the fourth physical storage block. The predetermined criteria can be one of the criteria mentioned in the preceding paragraphs, such as the physical storage block's most recent update being a longer period before a predetermined threshold interval, or the most recent update being before a peak activity period. These criteria can be evaluated based on historical values ​​of the scanned physical blocks. By employing this strategy, the need to evaluate all physical storage blocks can be eliminated, thereby increasing the speed at which suitable physical storage blocks can be identified.

[0054] In implementations where the controller includes a counter used as a time measurement, identifying the fourth physical storage block may include identifying physical storage blocks whose historical values ​​are less than the counter's value. This can be achieved, for example, by scanning (e.g., one at a time) multiple physical storage blocks or subsets thereof and identifying the first scanned physical storage block whose historical value is less than the counter's value as the fourth physical storage block. If multiple physical storage blocks have values ​​less than the counter, then one physical storage block can be selected as the fourth physical storage block from among those physical storage blocks whose historical values ​​are less than the counter's value using one of the aforementioned criteria.

[0055] We now discuss how to identify the fourth physical storage block based on the number of times it has been updated. As discussed earlier, each physical storage block may be associated with, or may include, a historical value indicating the number of times the physical storage block has been updated. In this document, "updated" can mean any, some, or all of the following: its mapping has been updated, incoming data has been stored on it, or data stored on it has been erased / deleted. Identifying the fourth physical storage block may include identifying the physical storage block with the lowest historical value. In the case where multiple physical storage blocks have the same lowest historical value, the fourth physical storage block can be identified based on its identifier. For example, physical storage blocks may each have an identifier that includes an integer value, and the physical storage block with the lowest or highest integer value can be selected as the fourth physical storage block.

[0056] Alternatively, identifying the fourth physical storage block can be based on another criterion, such as historical values ​​below a predetermined threshold. In this case, identifying the fourth physical storage block may include scanning (e.g., one at a time) multiple physical storage blocks or subsets thereof, and identifying the first physical storage block scanned whose historical values ​​meet the other criterion (such as being below the predetermined threshold) as the fourth physical storage block.

[0057] When a fourth physical storage block is identified, the method also includes updating the mapping to associate the second specified logical storage block with the fourth physical storage. In that case, the controller can be configured to increment the historical value of the fourth physical storage block by 1 after the mapping has been updated.

[0058] Identifying the fourth physical storage block with the lowest historical value may include determining whether there exists any physical storage block among multiple storage blocks whose historical value is less than or equal to (or only less than) the value of the counter at that time. This can be achieved by scanning (e.g., one at a time) multiple physical storage blocks or a subset thereof and identifying the first physical storage block scanned whose historical value is less than or equal to (or only less than) the value of the counter at that time as the fourth physical storage block.

[0059] If it exists, or in response to determining its existence, then that physical storage block can be selected as the fourth physical storage block. In cases where multiple physical storage blocks have historical values ​​less than or equal to (or only less than) the value of a counter, the fourth physical storage block can be identified based on its identifier. For example, physical storage blocks can each have an identifier including an integer value, and the physical storage block with the lowest or highest integer value can be selected as the fourth physical storage block.

[0060] If no physical storage block exists whose historical value is less than or equal to (or only less than) the value of the counter, or in response to determining that it does not exist, the controller can be configured to increment the value of the counter by 1. This determination is then repeated in the same manner until a physical storage block whose historical value is less than or equal to (or only less than) the value of the counter is identified.

[0061] We now discuss a physical implementation of the data processing component according to a first aspect of the invention. The data processing component may be implemented as a chip, a disk, or any other hardware component that may be located within a solid-state storage device. The memory of the data processing component may include firmware in the form of instructions, which, when executed by a controller, cause the controller to perform the steps of the method.

[0062] A second aspect of the invention provides a data processing component similar to the first aspect. Specifically, the second aspect provides a data processing component for controlling the storage of data into a solid-state storage device comprising a plurality (N) physical storage blocks. The data processing component includes a controller and a memory, wherein: the memory stores a mapping between a plurality (M) logical storage blocks accessible by the operating system of a computing device and corresponding physical storage blocks among the plurality (N) physical storage blocks; and the controller is configured to, in response to receiving from the operating system a request to erase data from a second designated logical storage block mapped to a third physical storage block among the plurality of physical storage blocks, perform a method comprising: identifying a fourth physical storage block among the plurality of physical storage blocks; updating the mapping to associate the second designated logical storage block with the fourth physical storage block; and marking the second logical storage block as storage available for incoming data. Therefore, the second aspect of the invention relates to the deletion or erasure of data. The first and second aspects of the invention can be combined, and all features (optionally or otherwise) set forth above with respect to the first aspect of the invention are equally well suited to the second aspect of the invention, unless there is a clear technical incompatibility or the context explicitly provides otherwise.

[0063] A third aspect of the invention provides a solid-state or other suitable storage device, comprising: a plurality (N) of physical storage blocks; and a data processing component according to the first or second aspect of the invention. The data processing component may be removable from the solid-state storage device or may be integrated therein.

[0064] A fourth aspect of the present invention provides a computer-implemented method for controlling the storage of data into a solid-state storage device comprising a plurality (N) physical storage blocks. The computer-implemented method includes: receiving from an operating system a request to store incoming data in a first designated logical storage block, the first designated logical storage block being mapped to a first physical storage block according to a mapping between a plurality (M) logical storage blocks accessible by the operating system of the computing device and corresponding physical storage blocks among the plurality (N) physical storage blocks; determining, in response to receiving the request, that the first designated logical storage block is unavailable for storing the incoming data; and identifying, in response to determining that the first designated logical storage block is unavailable for storing the incoming data, a second physical storage block among the plurality (N) physical storage blocks for storing the incoming data. The computer-implemented method may further include storing the incoming data in the second physical storage block. It will be acknowledged that the computer-implemented method of the fourth aspect of the present invention is similar to the data processing component of the first aspect of the present invention. Accordingly, any features (optional or otherwise) set forth above with respect to the first aspect of the present invention are equally well applied to the fourth aspect of the present invention, unless there is a clear technical incompatibility or the context clearly provides otherwise.

[0065] A fifth aspect of the present invention provides a computer-implemented method for controlling the storage of data into a solid-state storage device comprising a plurality (N) physical storage blocks. The computer-implemented method includes: receiving from an operating system a request to erase data from a second designated logical storage block, the second designated logical storage block being mapped to a third physical storage block among the plurality of physical storage blocks according to a mapping between a plurality (M) logical storage blocks accessible by the operating system of the computing device and corresponding physical storage blocks among the plurality (N) physical storage blocks; identifying a fourth physical storage block among the plurality of physical storage blocks; updating the mapping to associate the second designated logical storage block with the fourth physical storage block; and marking the second logical storage block as available for storage of incoming data. Any features (optional or otherwise) set forth above with respect to the first, second, or fourth aspects of the present invention are equally well applied to the fifth aspect of the present invention, unless there is a clear technical incompatibility or the context clearly specifies otherwise.

[0066] A sixth aspect of the invention provides a computer program including instructions that, when executed by a computer, cause the computer to perform a computer-implemented method of the fourth or fifth aspect of the invention. A seventh aspect of the invention provides a computer-readable storage medium having a computer program of the sixth aspect of the invention stored thereon.

[0067] Except for combinations that are explicitly prohibited or explicitly avoided, the present invention includes combinations of the described aspects and preferred features. Attached Figure Description

[0068] Embodiments of the present invention will now be described with reference to the accompanying drawings, in which:

[0069] Figure 1 This is a schematic diagram illustrating the relationship between solid-state storage devices and the operating system.

[0070] Figure 2 This is a schematic diagram illustrating the mapping between M logical storage blocks and N physical storage blocks.

[0071] Figure 3 This is a schematic diagram illustrating a logical storage block that may be used in some embodiments of the present invention.

[0072] Figure 4 This is a schematic diagram of a physical storage block that may be used in some embodiments of the present invention.

[0073] Figure 5 This is a flowchart illustrating an advanced method according to the present invention.

[0074] Figure 6 This is a flowchart illustrating the initialization process of the data storage component according to the present invention.

[0075] Figure 7 This is a flowchart illustrating the process of storing incoming data into a solid-state storage device according to the present invention.

[0076] Figures 8A to 8E The diagram illustrates the values ​​of the parameters during a data write operation.

[0077] Figures 9A to 9D The diagram illustrates the values ​​of the parameters during the data overwrite operation.

[0078] Figure 10 This is a flowchart illustrating the process of erasing data from a logical storage block, or more precisely, freeing up a logical storage block for use.

[0079] Figure 11 This is a flowchart illustrating an alternative process according to the present invention for storing incoming data in a solid-state storage device.

[0080] Figure 12 This is a flowchart illustrating an alternative process for erasing data from a logical storage block, or more precisely, freeing up a logical storage block for use. Detailed Implementation

[0081] Various aspects and embodiments of the invention will now be discussed with reference to the accompanying drawings. Further aspects and embodiments will be apparent to those skilled in the art. All documents mentioned herein are incorporated by reference.

[0082] Figure 1This is a highly schematic diagram illustrating the relationships between various components that can be used to implement the present invention. Figure 1 In this system, the solid-state storage device (SSSD) 100 includes an operating system (OS) interface module 102, a controller 104, and a storage mapping 106. The system also includes physical storage blocks 300. The OS 200 can access the SSSD via the OS interface module 100. It should be noted that... Figure 1 In the example shown, the device is an SSSD 100, but the steps described below can be equivalently applied to any other suitable storage device. It is important to note that the OS 200 does not have direct access to the physical storage blocks 200. It can only access them via the OS interface module 102 and the controller 104. More broadly, the combination of the controller 104 and the mapping 106 defines a set of logical storage blocks, each corresponding to one of the physical storage blocks 300, as defined by the mapping 106. The OS 200 only “sees” the logical storage blocks and therefore can only request data to be stored in one of them. The controller 104 then uses the mapping 106 to determine which of the physical storage blocks 300 corresponds to the logical storage block specified by the OS 200 and stores the incoming data in that physical storage block. Details of how this is achieved are explained below.

[0083] Figure 2 The diagram shows a set of logical memory blocks. With a group of physical storage blocks A schematic diagram illustrating an example of the mapping between 106. In this document, lowercase "m" and "n" denote the indexes of the storage blocks under discussion, where... and Accordingly, there are a total of M logical storage blocks, represented as follows: And there are a total of N physical storage blocks, represented as The fact that N > M is a key feature of this invention, meaning there are more physical storage blocks than logical storage blocks. The reason for this will be explained later with reference to the process performed when storing newly imported data on the SSSD 100. Each logical storage block... Mapped to the corresponding physical storage block For example, such as Figure 2 As shown: Mapped to ; Mapped to , Mapped to ;as well as Mapped to These mappings are not fixed and can be dynamically updated. In fact, it is the dynamic updating of the mappings stored in mapping 106 that achieves the advantageous technical effects of the present invention. Figure 2It also schematically illustrates that OS 200 can only access logical memory blocks. Figure 2 The representation of mapping 106 is merely illustrative. In practice, mapping 106 can be stored in the form of multiple associations between the address of a logical storage block or a logical indicator and the physical address representing the location of the associated physical storage block within the SSSD 100.

[0084] Before describing the computer-implemented method, we briefly emphasize some important characteristics of logical and physical memory blocks:

[0085] ●as Figure 3 As shown, each logical storage block This includes the use of flag 300. Flag 300 can take the Boolean value TRUE or FALSE, or other equivalent binary values. Flag 300 provides the logical storage block in question. An indication of whether the logical storage block can be used for data storage. If the use flag 300 is set to TRUE or an equivalent value, this indicates that the logical storage block (or more specifically, the physical storage block mapped to it) cannot be used to store more incoming data when an inquiry into the use flag 300 of this logical storage block occurs. Conversely, if the use flag 300 is set to FALSE, this indicates that the logical storage block (or more specifically, the physical storage block mapped to it) can be used to store more incoming data when an inquiry into the use flag 300 of this logical storage block occurs. The use flag 300 of the logical storage block can be set to FALSE if the corresponding physical storage block is empty, or if the data currently stored in the corresponding physical storage block is allowed to be overwritten (e.g., because it is obsolete). Logical storage block The use symbol 300 can be represented as:

[0086]

[0087] It should be emphasized that TRUE does not necessarily mean that the logical storage block cannot be used, and FALSE does not necessarily mean that the logical storage block can be used. More precisely, the data stored in the use flag 300 can instead be an indicator of whether the logical storage block in question is available, rather than an indicator of whether it has been used.

[0088] ●as Figure 4 As shown, each physical storage block Including historical value 402 and payload 404, they are discussed in turn as follows:

[0089] The history value 402 is an integer value that can take values ​​starting from zero and increasing upwards. The history value 402 indicates how many times the physical block in question has been used to store different incoming data. For example, the history value 402 can increment each time the data stored in that physical block changes, each time the physical block is used to store different data, or each time the mapping of the physical block changes. The importance of the history value 402 will become more apparent later when discussing the data storage, overwrite, and erase processes.

[0090] • Payload 404 is simply stored in physical storage blocks The data corresponds to the data in the document.

[0091] Figure 5 This is a flowchart illustrating a method implemented by a high-level computer according to the present invention. The method can, for example, be implemented by... Figure 1 The invention is performed by the SSSD 100 and its components shown, but is by no means limited to this architecture. In the first step S500, for example, the controller 104 of the SSSD 100 receives a request to store incoming data D from, for example, the OS 200 (i.e., the OS with access to the SSSD 100). This request may specify the logical storage block in which the data D is to be stored. The index M. The request cannot contain an indication of a physical storage block because, as discussed, OS 200 does not have direct access to any physical storage block, and therefore cannot, for example, specify the address of the desired physical storage block.

[0092] After receiving the request, the controller 104 can identify (not shown) the physical storage block. The index n of the physical storage block is mapped to the logical storage block formed in the body of the request received in step S500. Controller 104 can more specifically identify logical memory blocks. Corresponding physical storage block The address. The main benefit of this invention lies in determining the address of logical storage blocks. Corresponding physical storage block In scenarios where it is already in use. Accordingly, in Figure 5 In step S504, the logical storage block is determined. Corresponding physical storage block It is already in use. The method for accomplishing this operation and its interaction with logical storage blocks... Corresponding physical storage block Events that occur before the product is in use will be referred to later in this application, for example... Figure 7 Let's discuss this with Figure 8.

[0093] Responding to determination and logical storage blocks Corresponding physical storage block Already in use, in step S506, for example, the controller 104 of SSSD 100 identifies another physical storage block. This can be achieved by identifying the index n' of the physical storage block or the physical storage block itself. It can be completed using the address.

[0094] After identifying alternative physical storage blocks Then, the process proceeds to step S508, where the mapping 106 is updated. Specifically, The mapping was updated to This process can be performed by controller 104. After mapping 106 is updated, the process proceeds to step S510, where the incoming data D is stored in the physical storage block. In the middle. It will be recognized that by adopting Figure 5 The process is not to overwrite the original physical storage block. The data is stored in this physical storage block. The original data can be preserved, essentially forming a backup. In other words, this invention enables the retention of multiple copies of data on the SSSD100 without allowing the OS 200 to access all physical storage blocks. Providing a large amount of redundant data means that if the SSSD 100 is attacked by ransomware or other attacks, it will take much longer to delete or destroy all the data on the SSSD 100. This means that users can take action before a large amount of data is affected (e.g., by physically disconnecting the SSSD 100).

[0095] Figures 6 to 10 The illustrations depict a more detailed embodiment of the invention, including additional optional features that provide further clarification and improvement. It should be noted that all of the features described below are optional, and all combinations of optional features are contemplated.

[0096] Figure 6 The diagram illustrates the process by which the SSSD 100 can be initialized so that it can perform, for example... Figure 5 , Figure 7 The process is shown in Figure 8. In the first step S600, the value of the counter of SSSD 100 can be set to zero. In this document, the counter is a component of SSSD 1000, which can form, for example, part of controller 104, acting as a simple counter whose value can be incremented based on, for example, instructions from controller 104. The counter preferably maintains an integer value. The importance of the counter will be explained later. Once the counter has been set to zero, controller 104 generates initial mapping 106. In initial mapping 106, each logical memory block... It can be mapped to a physical storage block with the same index. In this application, logical storage blocks index m to physical storage block The mapping of index n is represented as:

[0097]

[0098] Accordingly, step S602 initializes the mapping 106 as follows: for all blocks from 1 to M, that is, for all logical storage blocks. :

[0099]

[0100] In step S604, all logical memory blocks (i.e., from 1 to M) The use flag 300 is set to FALSE, thereby instructing all logical memory blocks to... Both can be used for data storage, or in other words, there are no logical storage blocks. It is currently in use. This is meaningful during the initialization phase, as it occurs before the SSSD 100 is put into use.

[0101] In step S606, all physical storage blocks from 1 to M (That is, for all logical storage blocks that have been assigned) The physical storage block of the mapping The historical value 402 was set to 1. Furthermore, all unassigned physical memory blocks... (That is, the historical value 404 from M + 1 to N) is set to 0. This can be represented as follows:

[0102] for ,

[0103] for ,

[0104] At this point, SSSD 100 is initialized for use. There are two types of requests that can be received. The first is requests to logical storage blocks. The second type of request to write new data D is from the logical storage block. A request to erase data. These processes are respectively in... Figure 7 and Figure 11 The details are explained below. To reiterate, the specific processes shown in these figures are exemplary, and features should be considered optional unless explicitly stated otherwise.

[0105] Figure 7This is a flowchart illustrating the process of writing new data D to SSSD 100. In the first step S700, the incoming data D is received from OS 200 and stored in the logical storage block. The request. OS 200 can only access defined logical memory blocks. This information is used to provide a barrier between the OS 200 and the physical storage block 250 of the SSSD 100. In some cases, logical storage blocks are specified. It can be empty (or in a state where new data can be written to it), while in other cases, it corresponds to the specified logical storage block. Corresponding physical storage block It may already contain data. Based on the specified logical storage block. The process proceeds differently depending on the state. Accordingly, in step S702, for example, the controller 104 determines the specified logical memory block. Use flag 300. This can be done by querying the specified logical storage block. The use of flag 300 to determine the value of used(m) is accomplished, where m is the logical storage block. The index. If the logical storage block is determined. Not in use, that is:

[0106]

[0107] The method then proceeds to step S704, where the controller 104 uses mapping 106 to determine the logical storage block. Corresponding physical storage block With logical storage blocks The physical storage block corresponding to index m The index n can be represented as:

[0108]

[0109] After determining the appropriate physical storage blocks Then, controller 104 causes data D to be written to the physical storage block. Once the data has been written to the physical storage block... In step S706, the physical storage block The historical value of 402 increments by 1. This effectively provides physical storage blocks. This indicates that the block has been "used" again. This occurs when the block has never been used before, i.e., when the historical value 402 was initially 1 (see [link]). Figure 6 In step S602), this value will increase from 1 to 2. Under normal circumstances, the physical block that has just been written with data... The historical value 402 will increment from k to k + 1. This occurs when writing data D to the physical storage block. After adding its historical value 402, in step S708, the physical storage block... The usage flag 300 is changed to TRUE. This indicates to controller 104 in subsequent operations that data has been written to the physical storage block. Therefore, it cannot be used for immediate subsequent use. Of course, if once each physical storage block... Once used, the data cannot be overwritten or erased, and the SSSD 100 is essentially unusable for further data storage, making the SSSD 100 practically useless. If the specified logical storage block corresponding to the request in step S700 is determined... If the usage value 300 is TRUE, then the process that occurs reveals when the physical storage block... What to do when SSSD 100 is full.

[0110] In step S710, the controller 104 further determines whether there exists any physical storage block where the historical value 402 is less than or equal to the value of the counter at that time. If it is determined that such a physical storage block does not exist. Then the process proceeds to step S712, where the counter value is incremented by 1, and the process returns to the determination in step S710. Essentially, this process is iterated until a physical memory block exists where the historical value 402 is less than the counter value. It's easy to understand that this condition will eventually be met, because the counter value is increasing without any historical value (402) changing. Therefore, at some point, the counter value will inevitably exceed the value of all physical storage blocks. The lowest historical value is 402. When the determination in step S710 is affirmative, the process proceeds to step S714, where mapping 106 is updated to form the logical storage block of the subject requested in step S700. Mapped to (i.e., not) This can be represented as:

[0111]

[0112] After the mapping has been updated, in step S716, the new physical storage block... The historical value is 402, increasing by 1. Generally speaking, physical storage blocks... Historical value 402 or The value increases from k to k + 1. Then, after mapping 106 has been updated and historical value 402 has been incremented, in step S718, the incoming data D is written to the block. It is useful to consider the effects of doing so. It will be noted that the earlier blocks... No data has been erased or overwritten. More precisely, mapping 106 has been updated, and data has been written to blocks that are either unused or have not been used for the longest time. This means that previously stored data remains on the physical storage blocks of the SSSD 100. This essentially forms a backup. We now refer to... Figures 8A to 8E To illustrate this with a simple example, a series of requests to store data D1, D2, D3, and D4 are received.

[0113] Figure 8A This is a schematic diagram illustrating the mapping between two logical memory blocks L1 and L2 and four physical memory blocks P1, P2, P3, and P4. It shows the usage flag 300 for each logical memory block L1 and L2, and the historical values ​​402 for each physical memory block P1, P2, P3, and P4. The system has been adapted according to this application. Figure 6 The process described in the diagram is initialized, and accordingly, logical storage block L1 is mapped to physical storage block P1, and logical storage block L2 is mapped to physical storage block P2. Since no data is stored, the usage flag 300 in each of logical storage blocks L1 and L2 is set to FALSE. (See reference...) Figure 6 As explained in step S606, the historical value 402 of mapped physical storage blocks P1 and P2 is set to 1, while the historical value 402 of unmapped physical storage blocks P3 and P4 is set to 0. The counter is initialized to CTR = 0.

[0114] Figure 8B The layout following the receipt of a request from OS 200 to store data D1 in logical storage block L1 is described. Figure 7 The process shown determines whether the physical memory block P1, mapped to logical memory block L1, is available by querying flag 300. In this case, as... Figure 8A As shown, the use flag is set to FALSE, meaning that physical storage block P1 is available for use. Accordingly, data D1 is written to physical storage block P1, and its history value 402 is incremented from 1 to 2. The use flag 300 of logical storage block L1 is changed to TRUE.

[0115] Figure 8C The layout following receiving another request from OS 200 to store data D2 in logical storage block L1 is described. Figure 7The process shown determines that the usage flag 300 of logical memory block L1 is TRUE, indicating that physical memory block P1, currently mapped to logical memory block L1, is unavailable at the current time. Therefore, controller 104 then determines whether any physical memory blocks P1, P2, P3, or P4 have a history value 402 less than or equal to the counter value. In this case, the counter value is zero, and both physical memory blocks P3 and P4 have a history value 402 of zero. Either could be chosen, but for this example, physical memory block P3 is chosen, for instance. Controller 104 then updates mapping 106 so that logical memory block L1 is now mapped to physical memory block P3 (instead of P1). The history value 402 of physical memory block P3 is then incremented to 1, and data D2 is written to physical memory block P3. The result is arranged in... Figure 8C As shown in the diagram. It should be noted that data D1 remains stored on physical storage block P1. It is not overwritten simply by another request to write data D2 to the same logical storage block L1. More precisely, an earlier snapshot of data D1 is preserved on physical storage block P1, which can be recoverable in the event that the SSSD 100 is a victim, for example, a ransomware attack.

[0116] Figure 8D The layout following receiving another request from OS 200 to store data D3 in logical storage block L1 is described. Figure 7 The process shown in the diagram determines that the usage flag 300 of logical memory block L1 is TRUE, indicating that physical memory block P3, currently mapped to logical memory block L1, is unavailable at the current time because it is storing data D2. Therefore, controller 104 then determines whether any physical memory blocks P1, P2, P3, or P4 have a history value 402 less than or equal to the counter value. In this case, the counter value is zero, and physical memory block P4 has a history value 402 of zero, and is therefore selected. Controller 104 then updates mapping 106 so that logical memory block L1 is now mapped to physical memory block P4 (instead of P3). The history value 402 of physical memory block P4 is then incremented to 1, and data D3 is written to physical memory block P4. The result is arranged in... Figure 8D As shown in the diagram. As mentioned earlier, it is important to note that data D2 remains stored on physical storage block P3. At this time, snapshots of the older data D1 and D2 are retained on physical storage blocks P1 and P3, respectively.

[0117] Figure 8E The layout following the receipt of a request from OS 200 to store data D4 in logical memory block L2 is described. Figure 7 The process shown determines whether the physical memory block P2, mapped to logical memory block L2, is available by querying flag 300. In this case, as... Figure 8D As shown, the use flag 300 is set to FALSE, meaning that physical storage block P2 is available. Accordingly, data D4 is written to physical storage block P2, and its history value 402 is incremented from 1 to 2. The use flag 300 of logical storage block L1 is changed to TRUE. The result is arranged in... Figure 8E As described in the text. It will be recognized that even if only two logical memory blocks, L1 and L2, are available to OS 200, Figure 7 This process also means that all data D1, D2, D3, and D4 remain stored on the SSSD 100 and are recoverable in the event of, for example, a ransomware attack.

[0118] exist Figures 8A to 8E In this context, there are always unused logical memory blocks L1 and L2, or physical memory blocks with a historical value 402 that is less than or equal to the counter value. We now refer to... Figures 9A to 9D Explain what happens if there are no physical storage blocks P5, P6, P7, and P8 with a historical value of 402 that is less than or equal to the counter value.

[0119] Figure 9A The initial conditions are shown, and Figures 8A to 8E The layout is completely separate. In this scenario, the counter value is 99. Logical memory blocks L3 and L4 both have a usage value of TRUE. Logical memory block L3 is mapped to physical memory block P5, which has a historical value of 100 (402) and stores data D5. Logical memory block L4 is mapped to physical memory block P6, which has a historical value of 100 (402) and stores data D6. Physical memory block P7 is unmapped, has a historical value of 100 (402), and stores data D7. Physical memory block P8 is unmapped, has a historical value of 99 (402), and stores data D8.

[0120] Figure 9B This illustrates the arrangement following the receipt of another request from OS 200 to store data D9 in logical memory block L3. According to... Figure 7The process shown in the diagram determines that the usage flag 300 of logical storage block L3 is TRUE, indicating that physical storage block P5, currently mapped to logical storage block L3, is unavailable at the current time because it is storing data D5. Therefore, controller 104 then determines whether any physical storage blocks P5, P6, P7, or P8 have a historical value 402 less than or equal to the counter value. In this case, the counter value is 99, and physical storage block P8 has a historical value 402 of 99, so it is selected. Controller 104 then updates mapping 106 so that logical storage block L3 is now mapped to physical storage block P8 (instead of P5). The historical value 402 of physical storage block P8 is then incremented to 100, and data D9 is written to physical storage block P8, thus overwriting the previous data D8. The result is arranged in... Figure 9B As shown in the diagram. As mentioned earlier, it is important to note that data D5 remains stored on physical storage block P3. At this point, a snapshot of the older data D5 is stored on physical storage block P5.

[0121] Figure 9C This illustrates the arrangement following the receipt of another request from OS 200 to store data D10 in logical memory block L3. According to... Figure 7 The process shown in the diagram determines that the usage flag 300 of logical storage block L3 is TRUE, indicating that physical storage block P8, currently mapped to logical storage block L3, is unavailable at the current time because it is storing data D9. Therefore, controller 104 then determines whether any physical storage blocks P5, P6, P7, or P8 have a historical value 402 less than or equal to the counter value. In this case, the counter value is 99, and the historical value 402 of each of physical storage blocks P5, P6, P7, and P8 is 100. Therefore, no physical storage block P5, P6, P7, or P8 has a historical value 402 less than or equal to the counter value. Therefore, the counter is incremented by 1 to equal 100. At this point, each of physical storage blocks P5, P6, P7, and P8 has a historical value 402 less than or equal to the counter value. Therefore, any one of them can be effectively selected. For example, physical storage block P7 can be selected. Then, controller 104 updates mapping 106 so that logical storage block L3 is now mapped to physical storage block P7 (instead of P8). The historical value of physical storage block P7, 402, is then incremented to 101, and data D10 is written to physical storage block P5, thus overwriting the previous data D7. The result is arranged in... Figure 9C As shown in the diagram. As mentioned earlier, it is important to note that data D9 remains stored on physical storage block P8. At this time, snapshots of the older data D5 and D9 are retained on physical storage blocks P5 and P9, respectively.

[0122] Figure 9DThis illustrates the arrangement following the receipt of another request from OS 200 to store data D11 in logical memory block L4. According to... Figure 7 The process shown in the diagram determines that the usage flag 300 of logical storage block L3 is TRUE, indicating that physical storage block P6, currently mapped to logical storage block L4, is unavailable at the current time because it is storing data D6. Therefore, controller 104 then determines whether any physical storage blocks P5, P6, P7, or P8 have a historical value 402 less than or equal to the counter value. In this case, the counter value is 100, and physical storage block P8 has a historical value 402 of 100, so it is selected. Controller 104 then updates mapping 106 so that logical storage block L4 is now mapped to physical storage block P8 (instead of P6). The historical value 402 of physical storage block P8 is then incremented to 101, and data D11 is written to physical storage block P8, thus overwriting the previous data D9. The result is arranged in... Figure 9D As shown in the image.

[0123] The preceding description involves writing data to physical storage blocks. The process. We will now discuss if logical storage blocks Currently mapped physical storage block Once data has been stored, the logical storage block can be released for later use. This process occurs in... Figure 10 The flowchart is shown.

[0124] In the first step S800, the logical memory block is received from OS 200. A request to erase data D. OS 200 can only access defined logical storage blocks. This information is used to provide a barrier between the OS 200 and the physical storage block 250 of the SSSD 100. In some cases, logical storage blocks are specified. It can already be empty (or in a state where new data can be written to it), while in other cases, it is related to a specific logical storage block. Corresponding physical storage block It may already contain data. Based on the specified logical storage block. Depending on the current state, the process proceeds in different ways. Accordingly, in step S802, for example, the controller 104 determines the specified logical memory block. The value of flag 300 is used. This can be achieved by querying the specified logical storage block. Use of mark 300 to determine The value is used to complete the task, where m is the logical storage block. The index. If the logical storage block is determined. Not in use, that is:

[0125]

[0126] The method then ends because there is no data to erase.

[0127] When the logical storage block is determined When the usage flag 300 is TRUE, in step S804, the controller 104 performs a further determination, namely, whether there are any physical storage blocks whose historical value 402 is less than or equal to the value of the counter at that time. If it is determined that such a physical storage block does not exist. Then the process proceeds to step S806, where the counter value is incremented by 1, and the process returns to the determination in step S804. Essentially, this process is iterated until a physical memory block exists where the historical value 402 is less than the counter value. It's easy to understand that this condition will eventually be met, because the counter value is increasing without any historical value (402) changing. Therefore, at some point, the counter value will inevitably exceed the value of all physical storage blocks. The lowest historical value is 402. When the determination in step S804 is affirmative, the process proceeds to step S808, where mapping 106 is updated to form the logical storage block of the subject requested in step S700. Mapped to (i.e., not) This can be represented as:

[0128]

[0129] After the mapping has been updated, in step S808, the new physical storage block... The historical value 402 is incremented by 1 in step S810. Generally speaking, physical storage blocks Historical value 402 or Increase from k to k + 1.

[0130] Then, after mapping 106 and historical value 402 have been updated, the logical storage block... The usage flag 300 is updated to FALSE, so that when a request for logical storage block is received... When further requests to write data are made, Figure 7 In step S702, the determination will be affirmative.

[0131] Figures 7 to 10 This primarily concerns an implementation that identifies a physical storage block as n' based on the number of times it has been previously updated. In other cases, the criterion for selecting a physical storage block n' is based on its most recent update time. These are described below. Figure 11 and12 The following describes the process. In these examples, the counter value increments each time a physical storage block is updated, thus providing an efficient measurement of time and ensuring that the order of historical values ​​represents the time order in which physical storage blocks were updated. This contrasts with the previous examples, where the counter value represented the historical value of the physical storage block that had been updated the most times.

[0132] Figure 11 This is a flowchart illustrating the process of writing new data D to SSSD 100. In the first step S900, the incoming data D is received from OS 200 and stored in the logical storage block. The request. OS 200 can only access defined logical memory blocks. This information is used to provide a barrier between the OS 200 and the physical storage block 250 of the SSSD 100. In some cases, logical storage blocks are specified. It can be empty (or in a state where new data can be written to it), while in other cases, it corresponds to the specified logical storage block. Corresponding physical storage block It may already contain data. Based on the specified logical storage block. Depending on the current state, the process proceeds in different ways. Accordingly, in step S902, for example, the controller 104 determines the specified logical memory block. Use flag 300. This can be done by querying the specified logical storage block. Use of mark 300 to determine The value is used to complete the task, where m is the logical storage block. The index. If the logical storage block is determined. Not in use, that is:

[0133]

[0134] The method then proceeds to step S904, where the controller 104 uses mapping 106 to determine the logical storage block. Corresponding physical storage block With logical storage blocks The physical storage block corresponding to index m The index n can be represented as:

[0135]

[0136] After determining the appropriate physical storage blocks Then, controller 104 causes data D to be written to the physical storage block. Once the data has been written to the physical storage block... In step S906, the physical storage block The historical value of 402 is incremented to reflect the value of the counter at that time. This effectively provides physical storage blocks. The indication has been "used" again, and provides an indication of when the update occurred. This occurs when data D is written to the physical storage block. After adding its historical value 402, in step S908, the physical storage block... The usage flag 300 is changed to TRUE. This indicates to controller 104 in subsequent operations that data has been written to the physical storage block. Therefore, it cannot be used for immediate subsequent use. Then, in step S910, the value of the counter is incremented by 1. Alternatively, the value of the counter can be updated to represent absolute time, but incrementing by 1 each time the block is updated is sufficient to ensure that the historical value corresponds to the time order of the updates.

[0137] If the local block is determined in step S902 The usage value is TRUE, that is, if:

[0138]

[0139] The method then proceeds to step S912, where physical storage blocks that meet the criteria corresponding to the most recent update time are identified. As mentioned above... Figure 11 and Figure 12 The physical storage block explained in the implementation method Historical values ​​are represented in physical storage blocks The value of the counter at the time of the most recent update. Since the counter increments every time any physical storage block is updated, the historical value essentially represents the physical storage block. The update time order is used, where the highest historical value represents the most recent update and the lowest historical value represents the earliest update. Therefore, in step S912, the identified physical storage blocks It can be a physical storage block with the lowest historical value (corresponding to the "oldest" update). Other standards, as explained above in this disclosure, may also be applied.

[0140] The process then proceeds to step S914, where mapping 106 is updated to form the logical storage block of the subject requested in step S700. Mapped to (i.e., not) This can be represented as:

[0141]

[0142] After the mapping is updated, in step S916, the new physical storage block... The historical value 402 is incremented in step S716 to reflect the value of the counter at that time. Then, after mapping 106 has been updated and the historical value 402 has been incremented, the incoming data D is written to the block in step S918. It is useful to consider the effects of doing so. It will be noted that the earlier blocks... The data in the data block was not erased or overwritten. More precisely, mapping 106 has been updated, and the data has been written to unused or longest-unused blocks. This means that the previously stored data remains on the physical storage blocks of the SSSD 100. Essentially, a backup is formed. Finally, in step S920, the counter value is incremented by 1.

[0143] It should be noted that steps S916 to S918 can be performed in any order, and any two or all three steps can be performed in parallel. As long as the order remains constant, the counter will still represent a valid measurement of time.

[0144] The preceding description involves writing data to physical storage blocks. The process. We will now discuss if logical storage blocks Currently mapped physical storage block The data has already been stored, so the logical storage block... It can be released for later use. This process is in... Figure 12 The flowchart is shown.

[0145] In the first step S1000, the incoming data D is received from OS 200 and stored in the logical storage block. The request. OS 200 can only access defined logical memory blocks. This information is used to provide a barrier between the OS 200 and the physical storage block 250 of the SSSD 100. In some cases, logical storage blocks are specified. It can be empty (or in a state where new data can be written to it), while in other cases, it corresponds to the specified logical storage block. Corresponding physical storage block It may already contain data. The process proceeds differently depending on the state of the specified logical memory block. Accordingly, in step S902, the specified logical memory block is determined, for example, by the controller 104. Use flag 300. This can be done by querying the specified logical storage block. Use of mark 300 to determine The value is used to complete the task, where m is the logical storage block. The index. If the logical storage block is determined. Not in use, that is:

[0146]

[0147] The method then ends because there is no data to erase.

[0148] If the local block is determined in step S1002 The usage value is TRUE, that is, if:

[0149]

[0150] The method then proceeds to step S1004, where physical storage blocks that meet the criteria corresponding to the most recent update time are identified. As mentioned above... Figure 11 and Figure 12 The physical storage block explained in the implementation method Historical values ​​represent the physical storage blocks The value of the counter at the time of the most recent update. Since the counter increments every time any physical storage block is updated, the historical value essentially represents the physical storage block. The update time order is used, where the highest historical value represents the most recent update and the lowest historical value represents the earliest update. Therefore, in step S912, the identified physical storage blocks It can be a physical storage block with the lowest historical value. This corresponds to the "oldest" update. Other standards explained above in this disclosure may also be applied.

[0151] The process then proceeds to step S1004, where mapping 106 is updated to form the logical storage block of the subject requested in step S700. Mapped to (i.e., not) This can be represented as:

[0152]

[0153] After the mapping has been updated, in step S1008, the new physical storage block... The historical value 402 is incremented in step S716 to reflect the value of the counter at that time. Then, after mapping 106 has been updated and the historical value 402 has been incremented, in step S1010, the logical memory block... The usage flag 300 is updated to FALSE, so that when a request for logical storage block is received... When further requests to write data are made, Figure 11 In step S902, the determination will be affirmative. Finally, in step S1012, the value of the counter is incremented by 1.

[0154] It should be noted that steps S1008 to S1012 can be performed in any order, and any two or all three steps can be performed in parallel. As long as the order remains constant, the counter will still represent a valid measurement of time. The features disclosed in the foregoing description or in the following claims or drawings (expressed in their particular form or as components for performing the disclosed functions or methods or processes for obtaining the disclosed results) may, where appropriate, be used individually or in any combination of these features to implement the invention in different forms.

[0155] While the present invention has been described in conjunction with the exemplary embodiments described above, many equivalent modifications and variations will be apparent to those skilled in the art when this disclosure is given. Accordingly, the exemplary embodiments of the invention set forth above are to be considered illustrative rather than restrictive. Various changes may be made to the described embodiments without departing from the spirit and scope of the invention.

[0156] To avoid any doubt, any theoretical explanations provided in this article are intended to enhance the reader's understanding. The inventor does not wish to be bound by any of these theoretical explanations.

[0157] Any chapter headings used in this document are for organizational purposes only and should not be construed as limiting the subject matter described.

[0158] Throughout this specification, including the following claims, unless the context otherwise requires, the words “comprise” and “include” and their variations (such as “comprises”, “comprising”, and “including”) shall be understood to imply inclusion of the said integer or step or group of integers or steps, but do not exclude any other integer or step or group of integers or steps.

[0159] It is important to note that, as used in the specification and appended claims, the singular forms “a,” “an,” and “the” include plural referents unless the context explicitly specifies otherwise. A range may be expressed herein as starting “about” of a particular value and / or ending “about” of another particular value. When such a range is expressed, another embodiment includes the range from said one particular value and / or to said other particular value. Similarly, when a value is expressed as an approximation using the antecedent “about,” it will be understood that the particular value forms another embodiment. The term “about” in relation to numerical values ​​is optional and means, for example, + / - 10%.

Claims

1. A data processing component for controlling the storage of data into a solid-state storage device comprising a plurality (N) physical storage blocks, the data processing component comprising a controller and a memory, wherein: The memory stores a mapping between multiple (M) logical memory blocks accessible by the operating system of the computing device and the corresponding physical memory blocks among the multiple (N) physical memory blocks; Furthermore, the controller is configured to, in response to receiving from the operating system a request to store incoming data in a first designated logical memory block mapped to a first physical memory block, execute a method comprising: Determine that the first specified logical storage block cannot be used to store incoming data; as well as In response to determining that the first specified logical storage block is not available for storing incoming data: Based on the historical values ​​of the second physical storage block among the plurality (N) physical storage blocks, the second physical storage block is identified as being used for storing the incoming data, wherein the historical values ​​indicate the most recent time the physical storage block was updated and / or the number of times the physical storage block has been updated.

2. The data processing component of claim 1, wherein each physical storage block stores a corresponding historical value, the historical value indicating the most recent time the physical storage block was updated and / or the number of times the physical storage block has been updated.

3. The data processing component as described in claim 1 or claim 2, further comprising: The incoming data is stored in a second physical storage block.

4. The data processing component as described in claim 3, further comprising: Update the historical values ​​of the second physical storage block.

5. The data processing component as described in any one of claims 1 to 4, wherein: The number of logical storage blocks M is less than the number of physical storage blocks N.

6. The data processing component as described in claim 5, wherein: The value of N must be at least twice the value of M.

7. The data processing component as described in any one of claims 1 to 6, further comprising: The mapping is updated to associate the first specified logical storage block with the second physical storage block.

8. The data processing component of any one of claims 1 to 7, wherein identifying the second physical storage block comprises: Based on the corresponding historical values ​​of the plurality of physical storage blocks or subsets thereof, determine the corresponding time when the physical storage block was most recently updated for each of the plurality of physical storage blocks or subsets thereof; as well as One or more of the following: Identify the physical storage blocks in the plurality of physical storage blocks or subsets that have been updated earliest or have not yet been used for data storage; Identify physical storage blocks or subsets whose most recent update occurred a time earlier than a predetermined threshold interval; Identify the physical storage blocks or subsets whose most recent update occurred before a predetermined time threshold. as well as The plurality of physical storage blocks or subsets thereof are ranked based on a determined time, and physical storage blocks are selected based on threshold ranking or percentile.

9. The data processing component according to any one of claims 1 to 8, wherein: The controller includes a counter; The historical value of each corresponding physical storage block in the plurality of physical storage blocks indicates the most recent time when that physical storage block was updated; as well as or: The controller is configured to increment the counter each time any of the plurality of physical blocks is updated; or The controller is configured to increment the counter at predetermined regular intervals; and Each time a physical storage block is updated, its historical value is updated to reflect the value of the counter at that time.

10. The data processing component according to any one of claims 1 to 7, wherein: The historical value for each corresponding physical storage block indicates the number of times that physical storage block has been updated; and Identifying the second physical storage block among the plurality of physical storage blocks includes identifying the physical storage block with the lowest historical value.

11. The data processing component of claim 10, wherein: The controller is configured to increment the historical value of the second physical storage block after the mapping has been updated to associate the first specified logical storage block with the second physical storage block, or after the incoming data has been stored in the second physical block.

12. The data processing component according to any one of claims 1 to 11, wherein: Each logical storage block includes or is associated with an availability flag, which includes a value indicating whether the logical storage block is available for storage of incoming data.

13. The data processing component of claim 12, wherein: In response to a request to erase data from a second designated logical storage block mapped to a third physical storage block among the plurality of physical storage blocks, the controller is configured to: The fourth physical storage block is identified based on the historical values ​​of the fourth physical storage block among the plurality of physical storage blocks; The mapping is updated to associate the second specified logical storage block with the fourth physical storage block; Update the historical values ​​of the fourth physical storage block; and Mark the second specified logical storage block as storage that can be used for incoming data.

14. The data processing component of claim 13, wherein: The controller is configured to mark a second designated logical storage block as available for incoming data by updating the value of the availability flag.

15. The data processing component according to any one of claims 1 to 14, wherein: The data processing component is configured to prevent the operating system of the computing device from directly accessing the plurality (N) physical storage blocks, such that the operating system of the computing device can only access solid-state storage devices with a size of M blocks.

16. The data processing component as described in any one of claims 1 to 15, further comprising: A switch configured to toggle a data processing component between a first state in which the physical storage block is inaccessible to the operating system of the computing device and an unprotected state in which the physical storage block is accessible to the operating system of the computing device.

17. The data processing component according to any one of claims 1 to 16, wherein: Data processing components are implemented in the form of chips, disks, or other hardware components that may be located within solid-state storage devices.

18. A solid-state storage device, comprising: Multiple (N) physical storage blocks; as well as The data processing element according to any one of claims 1 to 17.