Data processing components, solid-state storage devices, and corresponding computer implementation methods.

JP2026529937APending Publication Date: 2026-09-03ナグラヴィジョン エスアーエールエル
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2026509122
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-11-23
Filing Date
2024-08-30
Publication Date
2026-09-03

AI Technical Summary

Benefits of technology

は、論理ストレージブロックLmに対応する物理ストレージブロックPnが既に使用されていると判断されるシナリオにおいて生じる。したがって、図5のステップS504で、論理ストレージブロックLmに対応する物理ストレージブロックPnが既に使用されていると判断される。これが行われるやり方、および論理ストレージブロックLmに対応する物理ストレージブロックPnが既に使用されていない場合に起こる事柄は、本出願において例えば図7および8を参照して後述される。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026529937000001_ABST
    Figure 2026529937000001_ABST
Patent Text Reader

Abstract

A data processing component, a solid-state storage device, and a corresponding computer implementation are provided. The data processing component for controlling the storage of data into a solid-state storage device having a plurality of N physical storage blocks comprises a controller and memory, the memory storing mappings between a plurality of M logical storage blocks accessible by the operating system of the computing device and each of the plurality of N physical storage blocks, and the controller is configured to perform a method including, in response to receiving a request from the operating system to store input data in a first designated logical storage block mapped to a first physical storage block, determining that the first designated logical storage block is unavailable for storing input data; in response to determining that the first designated logical storage block is unavailable for storing input data, identifying a second physical storage block among the plurality of N physical storage blocks; and storing the input data in the second physical storage block. A solid-state storage device and a computer implementation are also provided.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to a data processing component for controlling the storage of data into a solid-state storage device comprising multiple physical storage blocks. Corresponding solid-state storage devices and computer implementations are also provided. [Background technology]

[0002] In the realm of digital security, ransomware is becoming an increasingly common and dangerous threat. This type of malicious software is particularly harmful because attackers often target high-value assets, and the cost of data loss is extremely high. Understanding how ransomware attacks work and developing effective defenses against them is crucial in today's technology-driven world.

[0003] Ransomware works by encrypting data on the victim's disk using cryptographic techniques. Through high-throughput encryption methods, typically employing stream ciphers, data is overwritten at an extremely rapid pace, leaving users with little time to detect or mitigate the attack. This rapid process makes it difficult for users to protect their valuable information and recover it from the attack.

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

[0005] To protect against ransomware, it is considered that an ideal solution involves deploying a "write-once" file system that stores deleted data for a certain period of time. This approach may allow users to restore their information even after a ransomware attack. Unfortunately, the most common way to achieve this is through tape backup, which is known to be expensive, slow, and inflexible.

[0006] There is an urgent need for high-speed, cost-effective, and adaptable ransomware-resistant storage media. Such a solution will not only minimize the impact of ransomware attacks on enterprises and individuals, but also act as a deterrent to potential attackers. Summary of the Invention Means for Solving the Problems

[0007] Broadly speaking, the present invention addresses the shortcomings of the prior art in providing a data processing component for controlling the storage of data in a solid-state storage device comprising a plurality of N physical storage blocks. To reduce the risk associated with ransomware attacks, when a request to delete or overwrite data is received, the operating system only needs to be able to access a plurality of M logical storage blocks each mapped to a respective physical storage block such that the mapping between physical storage blocks and logical storage blocks is updated, where M<N. In this way, older data is stored in the solid-state storage device and can be restored in the event of a ransomware attack or in other equivalent situations.

[0008] Accordingly, a first aspect of the present invention provides a data processing component for controlling the storage of data in a solid-state storage device comprising a plurality of N physical storage blocks, the data processing component comprising a controller and memory, the memory storing mappings between a plurality of M logical storage blocks accessible by the operating system of the computing device and each of the plurality of N physical storage blocks, the controller is configured to perform a method including, in response to receiving a request from the operating system to store input data in a first designated logical storage block mapped to a first physical storage block, determining that the first designated logical storage block is unavailable for storing input data, and in response to determining that the first designated logical storage block is unavailable for storing input data, identifying a second physical storage block among the plurality of N physical storage blocks for storing input data. The identification of the second physical storage block among the plurality of N physical storage blocks is obtained based on a history value of the second physical storage block, which indicates the most recent time and / or the number of times the physical storage block has been updated. The controller may be further configured to store input data in a second physical storage block.

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

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

[0011] In addition to storing the input data in the second physical storage block, the controller may be further configured to update the mapping to associate the first designated logical storage block with the second physical storage block. This may be done before or after storing the input data in the second physical storage block.

[0012] Furthermore, the controller may be further configured to update the historical values ​​of the second physical storage block, for example, after the input data has been stored in the second physical storage block. Alternatively, if the controller is configured to update the mapping as outlined in the previous paragraph, the controller may be configured to update the historical values ​​of the second physical storage block when the mapping is updated, for example, simultaneously with the mapping update, before the mapping is updated (preferably immediately before), or immediately after the mapping is updated (preferably immediately after).

[0013] The present invention is particularly applicable to solid-state storage devices such as solid-state disks (SSDs), but is also suitable for use with any other storage devices that can be divided into physical blocks, such as conventional hard drives. “Computing device” can be any suitable computing device, such as a desktop computer, laptop computer, smartphone, or tablet. The term “computing device” should be understood to refer to an external computing device, i.e., a computing device that is not part of a solid-state storage device or data processing component. A computing device may 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 may correspond to an area of ​​flash memory in a solid-state storage device, a dynamic random-access memory (DRAM) cell, or other appropriate technology used to carry out the physical storage of data in a solid-state or other storage device. Each physical storage block may have the same capacity, for example, 2 X It can be in kibibytes (KiB), and X can be 7 or greater, 8 or greater, 9 or greater, 10 or greater, or 11 or greater. Alternatively, each physical storage block may be 10 Y It may have a capacity of bytes, and Y can be 2 or more, 3 or more, 4 or more, or 5 or more.

[0016] A solid-state storage device may contain 100,000 or more physical storage blocks, 1,000,000 or more physical storage blocks, 2,000,000 or more physical storage blocks, 5,000,000 or more physical storage blocks, 10,000,000 or more physical storage blocks, 100,000,000 or more blocks, or 1,000,000,000 or more blocks.

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

[0018] As used in the present specification, a "logical storage block" includes an index or identifier corresponding to a physical storage block among a plurality of N physical storage blocks. A logical storage block may sometimes 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 is a reference to a physical storage block of a storage device that can be used to store data. Each logical storage block may have the same capacity, which may be the same as the capacity of each of the physical storage blocks. According to the mapping, there may be one physical storage block mapped to each logical storage block. The mapping may be stored in the form of a table or a plurality of associations between logical storage blocks and physical storage blocks. To improve security, the number M of logical storage blocks is smaller than the number N of physical storage blocks, that is, M<N, which means there are more physical storage blocks than logical storage blocks. In this way, only a part of the physical storage blocks can be associated with logical storage blocks at a given time. However, the present invention can still be implemented when the number of physical storage blocks is the same as the number of logical storage blocks, that is, when M is equal to N, or even when there is a one-to-one mapping between physical storage blocks and logical storage blocks. In these cases, there is a one-to-one mapping between logical storage blocks and physical storage blocks, or a mapping determined when formatting the device that can take into account, for example, damaged physical blocks, so there may be no need to update the mapping.

[0019] The embodiment where M=N may be useful when only a part of physical storage blocks (and equivalently logical storage blocks) is used, which is generally the case in view of the large capacity of modern storage devices.

[0020] Logical storage blocks are accessible to the operating system; that is, the operating system can only "look" at the logical storage blocks and select a storage location from within them when it needs to store data on the storage device. In this way, the data processing component of the first aspect of the present invention acts as an intermediate component between the operating system and the solid-state storage device itself. The operating system may only be able to access logical storage blocks, i.e., it may not be able to access physical storage blocks. In other words, the data processing component may be configured to prevent the operating system of a computing device from directly accessing multiple physical storage blocks, so that the operating system of the computing device can only access a solid-state storage device of M block size. Since ransomware infects operating systems, preventing the operating system from accessing physical storage blocks provides an additional layer of security between the operating system and the storage device.

[0021] The operating system can access solid-state storage devices through I / O interfaces provided by the firmware of the solid-state storage device (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 that address physical blocks). However, to prevent the operating system from accessing physical storage blocks, the firmware may provide I / O addressing only for logical storage blocks, not physical storage blocks.

[0022] Physical storage blocks may not be inaccessible to the operating system, but rather selectively accessible to the operating system. In other words, a user may be able to control whether or not physical storage blocks are accessible to the operating system of a computing device. For example, a data processing component may have a switch configured to switch the data processing component between a secure state in which the physical storage blocks are inaccessible to the operating system of the computing device, and an insecure state in which the physical storage blocks are accessible to the operating system of the computing device. Enabling access to physical storage blocks may be useful, for example, in recovery scenarios, in initializing a storage device to a blank state, or for modifying the security level of a storage device. In the insecure state, physical storage blocks may only be accessible to the operating system of the computing device through a dedicated physical interface. In some cases, the switch may be lockable to prevent accidental or unauthorized switching from a secure state to an insecure state of the data processing component or solid-state storage device.

[0023] As will be discussed later, when a solid-state storage device is nearly full (as far as the operating system can perceive it), i.e., when most of the logical storage blocks are in use, the logical deletion or overwriting of almost all data corresponds to the physical deletion of the data overwritten. This inevitably means that backup data, which forms the basis of the ability of the data processing component of the first aspect of the present invention to resist ransomware attacks, will also be deleted or overwritten. Therefore, the N:M ratio can be increased to maximize the amount of backup data that can be stored relative to the capacity accessible to the computing device's operating system. In other words, only a small portion of the physical storage blocks can be exposed to the operating system (but is inaccessible). This increases the backup capacity of the solid-state storage device, thereby increasing its resistance 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 wasted space (because the larger the backup capacity of the solid-state storage device, the fewer logical storage blocks the operating system can access, thereby reducing the usable storage capacity). The security level of a solid-state storage device or data processing component may refer to the proportion of physical storage blocks exposed to or potentially exposed by the operating system of the computing device, i.e., it may be based on an M:N, or equivalently N:M ratio. The security level may be adjustable by selecting a certain number of logical storage blocks that the operating system of the computing device can access. Adjustment of the security level is only permitted when the data processing component or solid-state storage device is in a previously defined insecure state.

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

[0025] Next, we will discuss in more detail the operation of the data processing component. The controller of the data processing component is configured to perform a series of steps "in response to receiving a request from the computing device's operating system to store input data in a first designated logical storage block." It should be noted that the controller may be further configured to perform the step of receiving a request from the computing device's operating system to store input data in a first designated logical storage block. The request may include data identifying the first designated logical storage block, or it may include the data itself. Alternatively, the request may include data identifying the location from which the input 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 input data. Thus, it will be acknowledged that the present invention focuses on the scenario in which the logical storage block in question is unavailable. However, prior to this determination, the method may further include the step of determining whether the first designated logical storage block is available for storing input data. A logical storage block may be available for storing input data, for example, if the physical storage block to which it is mapped is not currently being used for storing any data (i.e., is empty). Alternatively, the physical storage block may currently be storing data that has been previously erased by a user, i.e., which may be overwritten. Each logical storage block may have or be associated with an availability flag that includes a value indicating whether the logical storage block is available for storing input data. This value may be 0 or 1, or a binary value such as TRUE or FALSE. The availability flag may take the value TRUE if the logical storage block is available for storing input data, and the value FALSE if the logical storage block is unavailable for storing input data. Alternatively, the availability flag may indicate whether a logical storage block is currently in use, in which case the availability flag may 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 may be called the “usage flag.” These can be considered equivalent. The step of determining whether a first designated logical storage block is available for storing input data may include the step of querying the availability flag. After the data has been stored in the physical storage block mapped to the first designated logical storage block, it is preferable that the availability flag be updated accordingly. For example, the availability value may be updated from TRUE to FALSE, or the usage flag may be updated from FALSE to TRUE.

[0027] If it is determined that a first designated logical storage block is available for storing input data, the controller may be configured to store the input data in the 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 input data, the controller may be configured to store the input data in the first physical storage block. In some cases, the controller may be configured to first identify the first physical storage block to which the first designated logical storage block is mapped, and then store the input data in that first physical storage block.

[0028] If it is determined that the first designated logical storage block is unavailable for storing input data, the method proceeds as outlined in the first aspect of the present invention, namely, in response to the determination that the first designated logical storage block is unavailable for storing input data, a second physical storage block is identified among a plurality of N physical storage blocks. The manner in which the second physical storage block is identified may provide several advantageous technical effects.

[0029] The step of identifying a second physical storage block may be based on the most recent time since the second physical storage block was updated or the number of times the second physical storage block has been updated. In this specification, “updated” may mean that the mapping is updated, input data is stored, or stored data is deleted / erased, or any of these, or all of these. Identifying the second physical storage device in this manner makes it possible to ensure that a recently unused physical storage block is selected. Regarding data overwriting, it is desirable to overwrite the oldest data on a solid-state storage device, as this data is most likely to be obsolete and therefore least useful in the recovery scenario required by a ransomware attack.

[0030] Each physical storage block may have a historical value associated with it or contain a historical value to track either the number of times a physical storage block has been updated or the most recent time a given physical storage block has been updated (equivalently, the time a given physical storage block was last updated). The historical value may provide an indication of either the number of times the physical storage block has been updated or the most recent time the physical storage block has been updated. In some cases, each physical storage block may contain a first historical value indicating the number of times the physical storage block has been updated and a second historical value indicating the most recent time the physical storage block has been updated. Memory may further store the association between the index, identifier, or address of each physical storage block and the respective historical values ​​of that physical storage block.

[0031] Essentially, the identification of a second physical block can be based on criteria related to either the time since the last update or the number of times the block has been updated. Often, these criteria may refer to the same physical storage block, but not always. These two approaches, along with how they can be implemented, are discussed below. Preferably, the second physical storage block is an "old" physical storage block, i.e., one that has not been updated many times or has not been updated for a long time. In this way, it is possible to ensure that only old, obsolete data is overwritten.

[0032] More specifically, the second physical storage block may be an old physical storage block. In this specification, an old physical storage block is defined as a physical storage block that satisfies the criterion that its most recent update occurred before a threshold time or before a threshold interval, or that its most recent update occurred relatively earlier than the most recent update of each of a defined subset of multiple physical storage blocks. There may be multiple physical storage blocks that satisfy the selected criterion, and therefore multiple old physical storage blocks for selecting or identifying the second physical storage block. An old physical storage block may also be defined based on a criterion relating to the number of times a physical storage block has been updated. Thus, an old physical storage block may also be defined as a physical storage block that satisfies the criterion that its number of updates is less than (or less than or equal to) a threshold number, or that is relatively less than the number of updates of each of a defined subset of multiple physical storage blocks.

[0033] First, let's consider the "time" criterion. As mentioned 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 the label "older" suggests, this criterion somehow specifies that the time the second physical storage block was most recently updated is earlier than that of the other physical storage blocks. For the record, it should be noted that the "most recent time" the second physical storage block was updated here does not refer to the most recently updated second physical storage block. Rather, the second physical storage block is identified based on a consideration of the most recent update time of each physical storage block. Therefore, the step of identifying the second physical storage block may include the step of identifying the physical storage block that was most recently updated or has not yet been used to store input data among several physical storage blocks. In this specification, "updated" can mean one, some, or all of the following: the mapping is updated, input data is stored, or stored data is erased / deleted. In this way, when input data is stored in the solid-state storage device, only the old data is overwritten. Of course, this is only relevant when all or nearly all of the physical storage blocks of a solid-state storage device are full. Before that point, there are unused blocks available, so overwriting is unnecessary.

[0034] The step of identifying a second physical storage block may include determining, for each of the multiple physical storage blocks or a subset thereof, the time when each physical storage block was most recently updated, for example, based on the respective history values ​​of each physical storage block or a subset thereof. Then, the step of identifying a second physical storage block may include identifying the physical storage block that was updated the longest ago among the multiple physical storage blocks or a subset thereof, i.e., the physical storage block with the lowest history value. Alternatively, a physical storage block that is not being used for storing data may be identified.

[0035] The step of identifying a second physical storage block may include identifying a physical storage block that was most recently updated before a predetermined threshold interval. The threshold interval could be, for example, one hour, one day, two days, or one week. The threshold interval may be based on the activity of the solid-state storage device. For example, the step of identifying a second physical storage block may include identifying a physical storage block, from a group of physical storage blocks or a subset thereof, whose most recent update occurred before the period of peak activity of the solid-state storage device. In this context, the term “period of peak activity” may refer to a period during which the level of activity exceeds a certain threshold. A peak in activity usually indicates that a large amount of data is being written to the solid-state storage device, and it is reasonable to assume that such data may be important. It is possible to avoid overwriting important recently written data by ensuring that only physical blocks that were most recently updated before the period of peak activity are selected and therefore overwritten. Again, this can be achieved by identifying blocks whose historical value indicates a time earlier than the start of the period of peak activity. The period of peak activity may also be called a “spike.”

[0036] The step of identifying a second physical storage block may include ranking multiple physical storage blocks or a subset thereof based on the time of their most recent update (for example, by ranking the physical storage blocks based on their historical values) and selecting physical storage blocks below a predetermined threshold rank as the second physical storage block. The rank may be expressed in absolute terms, percentiles, or equivalent units. For example, the second physical storage block must be a physical storage block whose most recent update falls in the lower half, lower quarter, or lower 10% of an ordered list. It will be recognized that any value can be selected as the threshold. In some cases, this may be equivalent to the step of identifying the oldest block, i.e., the physical storage block that was updated the longest ago.

[0037] When identifying a second physical storage block, the controller may be configured to scan multiple physical storage blocks or a subset thereof, for example, one at a time, and identify the first scanned physical storage block that meets predetermined criteria as the second physical storage block. These criteria may be one of those described in the previous paragraph, for example, that the physical storage block was most recently updated before a predetermined threshold interval, or that the physical storage block was most recently updated before a period of peak activity. These criteria may be evaluated based on the historical values ​​of the scanned physical block. By adopting this strategy, it is possible to eliminate the need to evaluate all physical storage blocks, thereby improving the speed at which a suitable second physical storage block can be identified.

[0038] Before discussing how a second physical storage block is identified based on the number of times it has been updated, let us discuss the relationship between historical values ​​and time. A controller may have a counter that can be initialized to zero. The controller may be configured to increment the counter each time any physical block is updated. Alternatively, the controller may be configured to increment the counter at regular intervals, for example, every minute, every hour, every two hours, or every day. It will be acknowledged that any appropriate interval can be chosen. In this way, the counter provides an effective representation of the passage of time. To provide an indicator of the time when an update occurs without requiring the provision of an absolute timestamp, the historical value of a physical storage block may be updated each time it is updated to reflect the value of the counter at that time. Of course, in some cases, the counter may count absolute time, and the historical value of a physical storage block may reflect the absolute time it was updated.

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

[0040] Next, we discuss how the identification of a second physical storage block can be performed based on the number of times the second physical storage block has been updated. As mentioned above, each physical storage block may have a history value associated with it or may contain a history value. The history value may indicate the number of times the physical storage block has been updated. In this specification, “updated” may mean that the mapping is updated, input data is stored, or stored data is erased / deleted, or some of these, or all of these. The history value may be a non-negative integer value. A physical storage block that has never been mapped to a logical storage block or has never had input data stored in it may have a history value of zero. The step of identifying a second physical storage block may include the step of identifying the physical storage block with the lowest history value. If multiple physical storage blocks have the same lowest history value, the second physical storage block may be identified based on the identifier of the second physical storage block. For example, each physical storage block may have an identifier containing an integer value, and the physical storage block with the lowest or highest integer value may be selected as the second physical storage block.

[0041] Alternatively, the step of identifying a second physical storage block may be based on another criterion, such as a historical value below a predetermined threshold. In this case, the step of identifying a second physical storage block may include scanning multiple physical storage blocks or a subset thereof, for example, one at a time, and identifying the first scanned physical storage block that satisfies other criteria, such as a historical value below a predetermined threshold, as the second physical storage block.

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

[0043] As mentioned above, the controller may have a counter that can be initialized to zero. Instead of updating the counter based on time, the controller may be configured to increment the value of the counter under other conditions. The data processing component and / or solid-state storage device may be initialized so that each of M logical storage blocks is mapped to each of N physical storage blocks. Each physical storage block mapped to a logical storage block may be initialized with a history value of 1, while physical storage blocks that are not mapped (because there are more physical storage blocks than logical storage blocks) may be initialized with a history value of 0. The step of identifying the second physical storage block with the lowest history value may include determining whether there is a physical storage block among the multiple physical storage blocks or a subset thereof whose history value is less than or equal to (or simply less than) the value of the counter at that time. This can be achieved by scanning the multiple physical storage blocks or a subset thereof, for example, one at a time, and identifying the first scanned physical storage block whose history value is less than or equal to (or simply less than) the value of the counter at that time as the second physical storage block.

[0044] If present, or in response to a determination that present, that physical storage block may be selected as the second physical storage block. If multiple physical storage blocks have historical values ​​that are less than or equal to (or simply less than) the value of the counter, the second physical storage block may be identified based on the identifier of the second physical storage block. For example, each physical storage block may have an identifier that includes an integer value, and the physical storage block with the lowest or highest integer value may be selected as the second physical storage block.

[0045] If no physical storage block exists with a history value less than or equal to the counter value (or simply less than the counter value), or in response to the determination that no such block exists, the controller may be configured to increment the counter value by 1. The determination is then repeated in the same manner until a physical storage block with a history value less than or equal to the counter value (or simply less than the counter value) is identified. In this way, the counter value can be considered to represent the maximum number of times any given physical storage block among multiple physical storage blocks has been updated. In other words, the counter value represents the history 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 the steps of updating the mapping and overwriting existing data stored in a physical storage block. 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, the controller may be configured to identify a fourth physical storage block among the plurality of physical storage blocks based on the history value of the fourth storage block. The controller may then be configured to update the mapping to associate the second designated logical storage block with the fourth physical storage block. The controller may then be configured to label the second logical storage block as available for storing input data. This can be achieved, for example, by updating the availability flag associated with the second designated logical storage block to indicate that the second designated logical storage block is available for storing input data. This can be done, for example, by setting the availability flag to TRUE or the use flag to FALSE. By performing these steps in response to a request to erase data from a logical storage block, that block becomes associated with a different physical block whose data is older and therefore more suitable for overwriting. The data originally associated with the second designated logical storage block remains stored in the third physical storage block, but it is no longer mapped to the second designated logical storage block, thus effectively forming backup data.The controller may be further configured to update the history value of the fourth physical storage block, for example, the number of times it has been updated, or the time the mapping was updated, or the time the fourth physical storage block was labeled as available for storing input data, simultaneously with, for example, when the mapping is updated or the fourth storage block is labeled as available for storing input data, or immediately before (preferably immediately before) when the mapping is updated or the fourth storage block is labeled as available for storing input data, or after (preferably immediately after) when the mapping is updated or the fourth storage block is labeled as available for storing input data. Alternatively, the controller may be configured to update the history value of the fourth physical storage block only when new input data is stored in the fourth physical block.

[0047] The fourth physical storage block can be identified in the same manner as the second physical storage block, as is the case when writing new data to a solid-state storage device. In other words, the identification of the fourth physical block can be based on criteria related to either the time since the last update or the number of times the block has been updated. Often, these criteria may refer to the same physical storage block, but not necessarily. These two approaches, along with how they may be implemented, are discussed below. Preferably, the fourth physical storage block is an "old" physical storage block, i.e., one that has not been updated many times or has not been updated for a long time. In this way, it is possible to ensure that only old, obsolete data is overwritten.

[0048] In this specification, “updated” may mean that the mapping is updated, input data is stored, or stored data is deleted / erased, or any of these, or all of these. Identifying a fourth physical storage device in this manner makes it possible to ensure that a recently unused physical storage block is selected. With regard to overwriting data, it is desirable to overwrite the oldest data on a solid-state storage device, as this data is most likely to be obsolete and therefore least useful in the recovery scenario required by a ransomware attack.

[0049] First, let's consider the "time" criterion. As mentioned earlier, the fourth physical storage block is the "older" 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 the label "older" suggests, this criterion somehow specifies that the time the fourth physical storage block was most recently updated is earlier than that of the other physical storage blocks. For the record, it should be noted that the reference to the "most recent time" when the fourth physical storage block was updated here does not refer to the most recently updated fourth physical storage block. Rather, the second physical storage blocks are identified based on a consideration of the most recent update time of each physical storage block. Therefore, the step of identifying the fourth physical storage block may include the step of identifying the physical storage block that was most recently updated or has not yet been used for storing input data from among multiple physical storage blocks or a subset thereof. In this specification, "updated" can mean one, some, or all of the following: the mapping is updated, input data is stored, or stored data is erased / deleted. In this way, when input data is stored in the solid-state storage device, only the old data is overwritten. Of course, this is only relevant when all or nearly all of the physical storage blocks of a solid-state storage device are full. Before that point, there are unused blocks available, so overwriting is unnecessary.

[0050] The step of identifying a fourth physical storage block may include determining, for each of the multiple physical storage blocks or a subset thereof, the time when each physical storage block was most recently updated, for example, based on the respective history values ​​of each physical storage block or a subset thereof. Then, the step of identifying the fourth physical storage block may include identifying the physical storage block that was updated the longest ago among the multiple physical storage blocks in that subset, i.e., the physical storage block with the lowest history value. Alternatively, a physical storage block that is not being used for storing data may be identified.

[0051] The step of identifying a fourth physical storage block may include identifying a physical storage block that was most recently updated before a predetermined threshold interval. The threshold interval may be, for example, one hour, one day, two days, or one week. The threshold interval may be based on the activity of the solid-state storage device. For example, the step of identifying a fourth physical storage block may include identifying a physical storage block, from a group of physical storage blocks or a subset thereof, whose most recent update occurred before the period of peak activity of the solid-state storage device. A peak in activity usually indicates that a large amount of data is being written to the solid-state storage device, and it is reasonable to assume that such data may be important. It is possible to avoid overwriting important recently written data by ensuring that only physical blocks that were most recently updated before the period of peak activity are selected and therefore overwritten. Again, this can be achieved by identifying blocks whose historical value indicates a time earlier than the start of the period of peak activity. The period of peak activity may instead be called a "spike".

[0052] The step of identifying a fourth physical storage block may include ranking multiple physical storage blocks or a subset thereof based on the time of their most recent update (for example, by ranking the physical storage blocks based on their historical values) and selecting physical storage blocks below a predetermined threshold rank as the fourth physical storage block. The rank may be expressed in absolute terms, percentiles, or equivalent units. For example, the fourth physical storage block must be a physical storage block whose most recent update falls in the lower half, lower quarter, or lower 10% of an ordered list. It will be recognized that any value can be selected as the threshold. In some cases, this may be equivalent to the step of identifying the oldest block, i.e., the physical storage block that was updated the longest ago.

[0053] When identifying a fourth physical storage block, the controller may be configured to scan multiple physical storage blocks or a subset thereof, for example, one at a time, and identify the first scanned physical storage block that meets predetermined criteria as the fourth physical storage block. These predetermined criteria may be one of those described in the previous paragraph, for example, that the physical storage block was most recently updated before a predetermined threshold interval, or that the physical storage block was most recently updated before a period of peak activity. These criteria may be evaluated based on the historical values ​​of the scanned physical blocks. By adopting this strategy, it is possible to eliminate the need to evaluate all physical storage blocks, thereby improving the speed at which the appropriate physical storage block can be identified.

[0054] In embodiments where the controller includes a counter used as a measure of time, the step of identifying a fourth storage block may include identifying a physical storage block whose historical value is less than the value of the counter. This can be achieved, for example, by scanning multiple physical storage blocks or a subset thereof, one at a time, and identifying the first scanned physical storage block whose historical value is less than the value of the counter as the fourth physical storage block. If the values ​​of multiple physical storage blocks are less than the value of the counter, one of the aforementioned criteria can be used to select a physical storage block from among those whose historical value is less than the value of the counter as the fourth physical storage block.

[0055] Next, we discuss how the identification of the fourth physical storage block can be performed based on the number of times the fourth physical storage block has been updated. As previously mentioned, each physical storage block may have an associated or include a history value that indicates the number of times that physical storage block has been updated. In this specification, “updated” can mean any, some, or all of the following: the mapping is updated, input data is stored, or stored data is erased / deleted. The step of identifying the fourth physical storage block may include the step of identifying the physical storage block with the lowest history value. If multiple physical storage blocks have the same lowest history value, the fourth physical storage block may be identified based on the identifier of the fourth physical storage block. For example, each physical storage block may have an identifier that includes an integer value, and the physical storage block with the lowest or highest integer value may be selected as the fourth physical storage block.

[0056] Alternatively, the step of identifying the fourth physical storage block may be based on another criterion, such as a historical value below a predetermined threshold. In this case, the step of identifying the fourth physical storage block may include scanning multiple physical storage blocks or a subset thereof, for example, one at a time, and identifying the first scanned physical storage block that satisfies other criteria, such as a historical value below a predetermined threshold, as the fourth physical storage block.

[0057] When a fourth physical storage block is identified, the method further includes the step of updating the mapping to associate the second designated logical storage block with the fourth physical storage. In this case, the controller may be configured to increment the history value of the fourth physical storage block by 1 after the mapping has been updated.

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

[0059] If present, or in response to a determination that such a physical storage block exists, that physical storage block may be selected as the fourth physical storage block. If multiple physical storage blocks have historical values ​​that are less than or equal to (or simply less than) the value of a counter, the fourth physical storage block may be identified based on the identifier of the fourth physical storage block. For example, each physical storage block may have an identifier that includes an integer value, and the physical storage block with the lowest or highest integer value may be selected as the fourth physical storage block.

[0060] If no physical storage blocks exist with a history value less than or equal to the counter value (or simply less than the counter value), or in response to a determination that no such blocks exist, the controller may be configured to increment the counter value by 1. The determination is then repeated in the same manner until a physical storage block with a history value less than or equal to the counter value (or simply less than the counter value) is identified.

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

[0062] A second aspect of the present invention provides a data processing component similar to that of the first aspect. Specifically, the second 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 of N physical storage blocks, the data processing component comprising a controller and a memory, the memory storing mappings between a plurality of M logical storage blocks accessible by the operating system of the computing device and each of the plurality of N physical storage blocks, the controller is configured to perform a method in response to receiving a request from the operating system 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 steps of: 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 labeling the second logical storage block as available for storing input data. Thus, the second aspect of the present invention relates to the deletion or erasure of data. The first and second aspects of the present invention can be combined, and all (optional or otherwise) features described above with respect to the first aspect of the present invention also apply well to the second aspect of the present invention, unless they are obviously technically incompatible or the context clearly indicates otherwise.

[0063] A third aspect of the present invention provides a solid-state or other suitable storage device comprising a plurality of N physical storage blocks and a data processing component according to either the first or second aspect of the present invention. The data processing component may be detachable from or integrated within the solid-state storage device.

[0064] A fourth aspect of the present invention provides a computer implementation for controlling the storage of data in a solid-state storage device comprising a plurality of N physical storage blocks, the computer implementation comprising: receiving a request from an operating system to store input data in a first designated logical storage block mapped to a first physical storage block according to a mapping between a plurality of M logical storage blocks accessible by the operating system of the computing device and each of the plurality of N physical storage blocks; determining in response to receiving the request that the first designated logical storage block is unavailable for storing input data; and identifying a second physical storage block among the plurality of N physical storage blocks for storing input data in response to determining that the first designated logical storage block is unavailable for storing input data. The computer implementation may further include the step of storing input data in a second physical storage block. The computer implementation of the fourth aspect of the present invention will be recognized as being similar to the data processing component of the first aspect of the present invention. Accordingly, any (optional or otherwise) features described above with respect to the first aspect of the present invention also apply well to the fourth aspect of the present invention, unless they are clearly technically incompatible or the context clearly indicates otherwise.

[0065] A fifth aspect of the present invention provides a computer implementation for controlling the storage of data in a solid-state storage device comprising a plurality of N physical storage blocks, the computer implementation comprising: receiving a request from an operating system to erase data from a second designated logical storage block mapped to a third physical storage block among a plurality of physical storage blocks, according to a mapping between a plurality of M logical storage blocks accessible by the operating system of the computing device and each of the plurality of 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 labeling the second logical storage block as available for storing input data. Any (optional or otherwise) features described above with respect to the first, second, or fourth aspects of the present invention also apply equally well to the fifth aspect of the present invention, unless they are obviously technically incompatible or the context clearly indicates otherwise.

[0066] A sixth aspect of the present invention provides a computer program that includes instructions causing a computer to execute a computer implementation method according to a fourth or fifth aspect of the present invention when the program is executed by the computer. A seventh aspect of the present invention provides a computer-readable storage medium in which a computer program according to a sixth aspect of the present invention is stored.

[0067] The present invention includes, but is not limited to, combinations of the described embodiments and preferred features where such combinations are clearly unacceptable or explicitly avoided.

[0068] Next, embodiments of the present invention will be described with reference to the attached drawings. [Brief explanation of the drawing]

[0069] [Figure 1] This is a schematic diagram illustrating the relationship between a solid-state storage device and an operating system. [Figure 2] This is a schematic diagram showing the mapping between M logical storage blocks and N physical storage blocks. [Figure 3] This is a schematic diagram showing a logical storage block that may be used in some embodiments of the present invention. [Figure 4] This is a schematic diagram showing a physical storage block that may be used in some embodiments of the present invention. [Figure 5] This is a flowchart showing the high-level method according to the present invention. [Figure 6] This is a flowchart showing the initialization process of the data storage component according to the present invention. [Figure 7] This is a flowchart showing the process by which input data according to the present invention can be stored in a solid-state storage device. [Figure 8A] This shows the parameter values ​​during the data writing operation. [Figure 8B] This shows the parameter values ​​during the data writing operation. [Figure 8C] This shows the parameter values ​​during the data writing operation. [Figure 8D] This shows the parameter values ​​during the data writing operation. [Figure 8E] This shows the parameter values ​​during the data writing operation. [Figure 9A] This shows the parameter values ​​during the data overwrite operation. [Figure 9B] This shows the parameter values ​​during the data overwrite operation. [Figure 9C] This shows the parameter values ​​during the data overwrite operation. [Figure 9D] This shows the parameter values ​​during the data overwrite operation. [Figure 10]This flowchart shows the process by which data is erased from a logical storage block, or more precisely, the logical storage block is freed up for use. [Figure 11] This is a flowchart showing an alternative process according to the present invention in which input data can be stored in a solid-state storage device. [Figure 12] This flowchart shows an alternative process in which data is erased from a logical storage block, or more precisely, the logical storage block is freed up for use. [Modes for carrying out the invention]

[0070] Next, aspects and embodiments of the present invention will be described with reference to the accompanying drawings. Further aspects and embodiments will be apparent to those skilled in the art. All references mentioned herein are incorporated herein by reference.

[0071] Figure 1 is a very schematic diagram showing the relationships between various components that may be used to carry out the present invention. In Figure 1, a solid-state storage device (SSSD) 100 comprises an operating system (OS) interface module 102, a controller 104, and stores a mapping 106. This system also includes physical storage blocks 300. The OS 200 can access the SSSD via the OS interface module 100. In the example shown in Figure 1, the device is an SSSD 100, but it should be noted that the steps described below can be equivalently applied to any other suitable storage device. It is important to note that the OS 200 cannot directly access the physical storage blocks 200. The OS 200 can only access them via the OS interface module 102 and the controller 104. Roughly speaking, 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 operating system 200 can only "see" the logical storage blocks and therefore can only request that data be stored in one of the logical storage blocks. 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 input data in that physical storage block. Details of how this is achieved are described below.

[0072] Figure 2 shows the logical storage block L i The set of and the physical storage block P i This is a schematic diagram showing an example of mapping between sets 106. In this specification, the subscripts "m" and "n" represent the index of the storage block in question, where 1 ≤ m ≤ M and 1 ≤ n ≤ N. Thus, {L1, L2, L3, ..., L M-1 ,L M} there are a total of M logical storage blocks represented as {P1,P2,P3,P N-3 ,P N-2 ,P N-1 ,P N} there are a total of N physical storage blocks represented as above. An important feature of the present invention is that N>M, that is, there are more physical storage blocks than logical storage blocks. The reason therefor will be described later with reference to a process executed when new input data is stored in the SSSD 100. Logical storage block L i each is mapped to a respective physical storage block P i . For example, as shown in FIG. 2, L1 is mapped to P1, L2 is mapped to P3, and L M-1 is mapped to P N-3 , and L M is mapped to P N . These mappings are not fixed and can be dynamically updated. In fact, this dynamic update of the mapping stored in the mapping 106 enables the advantageous technical effects of the present invention. FIG. 2 also schematically shows that the OS 200 can only access logical storage blocks. The representation of the mapping 106 in FIG. 2 is only schematic, and in reality the mapping 106 can be stored in the form of a plurality of associations between an address or logical indicator of a logical storage block and a physical address indicating the position of an associated physical storage block in the SSSD 100.

[0073] Before describing the executed computer-implemented method, some important features of logical storage blocks and physical storage blocks are briefly emphasized. · As shown in FIG. 3, each logical storage block L m comprises a use flag 300. The use flag 300 can take a Boolean value of TRUE, a Boolean value of FALSE, or other equivalent binary values. The use flag 300 indicates that the logical storage block L in question mIt provides an indication of whether or not it is available for data storage. If the use flag 300 is set to TRUE or its equivalent, this indicates that the logical storage block (or more specifically, the physical storage block mapped to that logical storage block) cannot be used to store further input data at the time the use flag 300 of that logical storage block is queried. 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 that logical storage block) can be used to store further input data at the time the use flag 300 of that logical storage block is queried. The use flag 300 of a logical storage block may be set to FALSE if the corresponding physical storage block is empty, or if it is permissible to overwrite the data currently stored in the corresponding physical storage block, for example, because it is old. m The usage flag 300 is, used(m)=TRUE This may be displayed. It must 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. Rather, the data stored in the usage flag 300 may instead be an indicator of whether the logical storage block in question is available or not, rather than whether it is being used or not. As shown in Figure 4, each physical storage block P n This includes the history value 402 and payload 404, which will be discussed further below. The history value 402 is an integer value that can take any value from zero upwards. The history value 402 is the number of times the physical block in question has been used to store different input data. The history value 402 can be incremented, for example, each time the data stored in the physical block changes, each time the physical storage block is used to store different data, or each time the mapping of the physical storage block changes. The importance of the history value 402 will become more apparent when we discuss the processes of data storage, overwriting, and erasure. • Payload 404 simply uses the physical storage block P n This corresponds to the data stored in [the location].

[0074] Figure 5 is a flowchart showing a high-level computer implementation method according to the present invention. This method can be performed, for example, by the SSSD100 and its components shown in Figure 1, but the present invention is by no means limited to such an architecture. In the first step S500, a request to store input data D is received, for example, by the controller 104 of the SSSD100 from, for example, the OS200, i.e., an OS that can access the SSSD100. This request is received by the logical storage block L where the data D should be stored. m The index m can be specified. As mentioned above, OS200 cannot directly access any physical storage block, and therefore cannot specify, for example, the address of a desired physical storage block; therefore, the request cannot include an instruction for a physical storage block.

[0075] After the request is received by the controller 104, the controller determines the logical storage block L that was the subject of the request received in step S500. m physical storage block P mapped to n The index n can be identified (not shown). More specifically, the controller 104 can identify the logical storage block L m Corresponding physical storage block P n The address of can be identified. The main advantage of the present invention is that the logical storage block Lm Corresponding physical storage block P n This occurs in a scenario where it is determined that the logical storage block L is already in use. Therefore, in step S504 of Figure 5, m Corresponding physical storage block P n It is determined that it is already in use. The way this is done, and the logical storage block L m Corresponding physical storage block P n What happens when it is not already in use will be described later in this application with reference to, for example, Figures 7 and 8.

[0076] Logical storage block L m Corresponding physical storage block P n In response to the determination that it is already in use, in step S506, for example, the controller 104 of SSSD100 will call another physical storage block P n’ Identify the index n' of the physical storage block or the physical storage block P n’ This can be done by identifying the address.

[0077] Alternative physical storage block P n’ After identifying, the process proceeds to step S508, where mapping 106 is updated. Specifically, L m →P n The mapping of L m →P n’ The mapping is updated. This process can be performed by the controller 104. After the mapping 106 is updated, the process proceeds to step S510, where the input data D is updated to the physical storage block P n’ It is stored in the original physical storage block P by employing the process shown in Figure 5. n Instead of overwriting the data on that physical storage block P n The original data stored in can be preserved and will be recognized as essentially forming a backup. In other words, the present invention allows OS200 to store all physical storage blocks P nThis allows multiple copies of data to be maintained on the SSSD100 without allowing access to the original data. Providing a large amount of redundant data means that if ransomware or other attacks are present against the SSSD100, it will take a much longer time to delete or corrupt all the data on the SSSD100, and the user can take action (for example, by physically disconnecting the SSSD100) before a large amount of data is affected.

[0078] Figures 6–10 show more detailed embodiments of the present invention, including additional optional features that provide further clarification and improvement. It should be noted that all features described below are optional, and all combinations of any features are assumed.

[0079] Figure 6 shows the process by which the SSSD100 can be initialized to perform the processes shown in Figures 5, 7, and 8, for example. In the first step S600, the value of a counter in the SSSD100 may be set to zero. In this specification, the counter is a component of the SSSD1000 that may form part of, for example, the controller 104, and acts as a simple counter whose value may be incremented based on instructions from, for example, the controller 104. It is preferable that the counter maintains an integer value. The importance of the counter will be explained shortly. Once the counter is set to zero, the controller 104 generates an initial mapping 106. In the initial mapping 106, each logical storage block L m Physical storage blocks P that have the same index m It can be mapped to. In this application, logical storage block L m Index m of physical storage block P n The mapping of to index n is: map(m)=n This is what is displayed.

[0080] Therefore, step S602 is performed for all blocks 1 to M, i.e., all logical storage blocks Lm Regarding this, initialize mapping 106 as follows: map(m)=m

[0081] In step S604, all logical storage blocks (i.e., 1~M)L m The usage flag 300 is set to FALSE, thereby all logical storage blocks L m The fact that it is available for data storage, in other words, any logical storage block L m It is indicated that it is not currently in use. This is done before using the SSSD100, so it makes sense during the initialization phase.

[0082] In step S606, all physical storage blocks P from 1 to M m That is, logical storage block L m All physical storage blocks P to which a mapping is assigned. n The history value 402 is set to 1. Also, all physical storage blocks P that have not been assigned a mapping are set. n The historical value 404 (i.e., M+1~N) is set to 0. This can be displayed as follows: hist(n)=1 for 1≦n≦M hist(n)=0 for M <n≦N

[0083] At this point, SSSD100 is initialized for use. There are two types of requests that can be received. The first type is a request for a new data D on logical storage block L. m This is a request for writing to the logical storage block L, and the second type is a request for writing to the logical storage block L. m This is a request to erase data from the system. These processes are described in detail in Figures 7 and 11, respectively. Again, the specific processes shown in these figures are illustrative, and their features should be treated as arbitrary unless otherwise specified.

[0084] Figure 7 is a flowchart showing the process for writing new data D to SSSD100. In the first step S700, input data D is sent from OS200 to logical storage block L m A request to store in is received. To provide a barrier between OS200 and the physical storage block 250 of SSSD100, OS200 provides a logical storage block L m It is only possible to access the information that defines it. In some cases, the specified logical storage block L m It can be empty (or ready to be written to), otherwise the specified logical storage block L m Corresponding physical storage block P n It may already contain data. The process will execute the specified logical storage block L m The process proceeds differently depending on the state of the logical storage block L. m The usage flag 300 is determined, for example, by controller 104. This is because m is the logical storage block L m The value of the index used(m) is specified in the logical storage block L. m This can be done by querying the usage flag 300 of logical storage block L. m It is not used, that is used(m)=FALSE If it is determined that this is the case, the method proceeds to step S704, where the controller 104 uses mapping 106 to determine logical storage block L m Corresponding physical storage block P n Determine the logical storage block L. m The physical storage block P corresponding to index m n The index n is, n=map(m) It can be expressed as follows.

[0085] Appropriate physical storage block P nUpon determining this, the controller 104 then puts data D into its physical storage block P n The data is written to physical storage block P. n When written to, in step S706, physical storage block P n The history value 402 is incremented by 1. This is because physical storage block P n This effectively provides an indication that the block has been "used" a further number of times. If the block has never been used before, i.e., the history value 402 was initially 1 (see step S602 in Figure 6), the value increases from 1 to 2. In a typical case, this applies to the physical block P on which data has just been written. n The historical value 402 is incremented from k to k+1. Data D is stored in physical storage block P. n After writing to and incrementing its history value 402, in step S708, physical storage block P n The usage flag 300 is changed to TRUE. This means that in subsequent operations, physical storage block P n This instructs the controller 104 that data has been written to it and therefore it is unavailable for immediate subsequent use. Of course, each physical storage block P n If data cannot be overwritten or erased once it has been used, and SSSD100 is essentially unusable for further data storage, then SSSD100 is of little use. The request in step S700 corresponds to the specified logical storage block L m The process that occurs when the usage value of 300 is determined to be TRUE is performed on physical storage block P n This reveals how the SSSD100 behaves when it is full.

[0086] In step S710, the controller 104 makes a further determination, namely, a physical storage block P that has a history value 402 that is less than or equal to the counter value at that time. n’ A determination is made as to whether or not such a physical storage block P exists. n’If it is determined that no such exists, the process proceeds to step S712, where the value of the counter is incremented by 1, and the process returns to the determination of step S710. Basically, this process corresponds to a physical storage block P having a history value 402 smaller than the value of the counter n’ is repeated until such is found. While the value of the counter is incremented, none of the history values 402 change, therefore, since the value of the counter must eventually exceed the lowest history value 402 among all physical storage blocks P m , it is easy to understand that this condition must ultimately be satisfied. When the determination in step S710 is affirmative, the process proceeds to step S714, where the mapping is updated such that the logical storage block L that was the target of the request in step S700 m is mapped to P n’ (that is, not to the original P n ), the mapping 106 is updated. This can be expressed as map(m)=n→=n’ .

[0087] After the mapping is updated, in step S716, the history value 402 of the new physical storage block P n’ is incremented by 1 in step S716. In general, the history value 402 of the physical storage block P n’ , that is, hist(n'), increases from k to k+1. Then, after the mapping 106 is updated and the history value 402 is incremented, in step S718, the input data D is written to the block P n’ . It is useful to consider the effects of this. It should be noted that data has not been erased or overwritten from the previous block P n . Rather, the mapping 106 is updated, and data is written to a block that has not been used or has not been used for the longest time. This means that the previous data remains in the physical storage block P of the SSSD 100 nThis means that the data remains stored and essentially forms a backup. This is illustrated here with a simple example where a series of requests are received to store data D1, D2, D3, and D4, referring to Figures 8A-8E.

[0088] Figure 8A is a schematic diagram of the mapping between a set of two logical storage blocks L1 and L2 and four physical storage blocks P1, P2, P3, and P4. The usage flag 300 for each logical storage block L1 and L2 is shown, as are the history values ​​402 for each physical storage block P1, P2, P3, and P4. The system is initialized according to the process depicted in Figure 6 of this application, 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 for each of logical storage blocks L1 and L2 is set to FALSE. As described with reference to step S606 in Figure 6, the history values ​​402 for the mapped physical storage blocks P1 and P2 are set to 1, and the history values ​​402 for the physical storage blocks P3 and P4, which are not yet mapped, are set to 0. The counter is initialized with CTR=0.

[0089] Figure 8B illustrates the configuration after a request is received from OS200 to store data D1 in logical storage block L1. Following the process shown in Figure 7, the availability of physical storage block P1 mapped to logical storage block L1 is determined by querying the usage flag 300. In this case, as shown in Figure 8A, the usage flag was FALSE, which means that physical storage block P1 is available for use. Therefore, data D1 is written to physical storage block P1, and its history value 402 is incremented from 1 to 2. The usage flag 300 of logical storage block L1 is changed to TRUE.

[0090] Figure 8C illustrates the configuration after a further request is received from OS200 to store data D2 in logical storage block L1. Following the process shown in Figure 7, the use flag 300 for logical storage block L1 is determined to be TRUE, which indicates that physical storage block P1, which is currently mapped to logical storage block L1, is not currently available for use. Therefore, the controller 104 then determines whether there are any physical storage blocks P1, P2, P3, or P4 whose history value 402 is less than or equal to the value of the counter. In this case, the value of the counter is zero, and both physical storage blocks P3 and P4 have a history value 402 of zero. Any of them could be selected, but for this example, let's assume that physical storage block P3 is selected. The controller 104 then updates the mapping 106 so that logical storage block L1 is now mapped to physical storage block P3 (not P1). The history value 402 of physical storage block P3 is then incremented to 1, and data D2 is written to physical storage block P3. The resulting configuration is shown in Figure 8C. It should be noted that data D1 remains stored in physical storage block P1. It will not be overwritten simply because another request is made to write data D2 to the same logical storage block L1. Instead, a snapshot of the previous data D1 remains in physical storage block P1 and may be recoverable if SSSD100 is affected, for example, by a ransomware attack.

[0091] Figure 8D depicts the configuration after a further request is received from OS200 to store data D3 in logical storage block L1. Following the process shown in Figure 7, the use flag 300 for logical storage block L1 is determined to be TRUE, which indicates that physical storage block P3, currently mapped to logical storage block L1, is not currently available for use because it stores data D2. Therefore, the controller 104 then determines whether there are any physical storage blocks P1, P2, P3, or P4 whose history value 402 is less than or equal to the value of the counter. In this case, the counter value is zero, and physical storage block P4 has a history value 402 of zero and is therefore selected. The controller 104 then updates the mapping 106 so that logical storage block L1 is now mapped to physical storage block P4 (not P3). The history value 402 of physical storage block P4 is then incremented to 1, and data D3 is written to physical storage block P4. The resulting configuration is shown in Figure 8D. As before, it is important to note that data D2 remains stored in physical storage block P3. At this point, snapshots of the older data D1 and D2 remain in physical storage blocks P1 and P3, respectively.

[0092] Figure 8E illustrates the configuration after a request is received from OS200 to store data D4 in logical storage block L2. Following the process shown in Figure 7, the use flag 300 is queried to determine whether physical storage block P2, mapped to logical storage block L2, is available for use. In this case, as shown in Figure 8D, the use flag 300 was FALSE, which means that physical storage block P2 is available for use. Therefore, data D4 is written to physical storage block P2, and its history value 402 is incremented from 1 to 2. The use flag 300 for logical storage block L1 is changed to TRUE. The resulting configuration is shown in Figure 8E. Although only two logical storage blocks L1 and L2 are available to OS200, the process in Figure 7 can be seen to mean that all of the data D1, D2, D3, and D4 remain stored in SSSD100 and are recoverable, for example, in the event of a ransomware attack.

[0093] In Figures 8A-8E, there were always unused logical storage blocks L1 and L2, or physical storage blocks with a history value of 402 that was less than or equal to the counter value. Next, refer to Figures 9A-9D to explain what happens when there are no physical storage blocks P5, P6, P7, and P8 with a history value of 402 that is less than or equal to the counter value.

[0094] Figure 9A shows entirely different initial conditions from the arrangements in Figures 8A-8E. In this scenario, the counter value is 99. Logical storage blocks L3 and L4 both have a usage value of TRUE. Logical storage block L3 is mapped to physical storage block P5, which has a history value of 402 = 100 and stores data D5. Logical storage block L4 is mapped to physical storage block P6, which has a history value of 402 = 100 and stores data D6. Physical storage block P7 is not mapped, has a history value of 402 = 100 and stores data D7. Physical storage block P8 is not mapped, has a history value of 402 = 99 and stores data D8.

[0095] Figure 9B shows the configuration after a further request is received from OS200 to store data D9 in logical storage block L3. Following the process shown in Figure 7, the use flag 300 for logical storage block L3 is determined to be TRUE, which indicates that physical storage block P5, which is currently mapped to logical storage block L3, is not currently available for use because it stores data D5. Therefore, the controller 104 then determines whether there are any physical storage blocks P5, P6, P7, or P8 whose history value 402 is less than or equal to the value of the counter. In this case, the value of the counter is 99, and physical storage block P8 is selected because its history value 402 is 99. The controller 104 then updates the mapping 106 so that logical storage block L3 is now mapped to physical storage block P8 (not P5). The history value 402 of physical storage block P8 is then incremented to 100, data D9 is written to physical storage block P8, and the previous data D8 is overwritten. The resulting configuration is shown in Figure 9B. As before, it is important to note that data D5 remains stored in physical storage block P3. At this point, a snapshot of the older data D5 in physical storage block P5.

[0096] Figure 9C shows the configuration after a further request is received from OS200 to store data D10 in logical storage block L3. Following the process shown in Figure 7, the use flag 300 for logical storage block L3 is determined to be TRUE, which indicates that the physical storage block P8 currently mapped to logical storage block L3 is not currently available for use because it stores data D9. Therefore, the controller 104 then determines whether there are any physical storage blocks P5, P6, P7, and P8 whose history value 402 is less than or equal to the counter value. In this case, the counter value is 99, and the history value 402 for each of the physical storage blocks P5, P6, P7, and P8 is 100. Therefore, none of the physical storage blocks P5, P6, P7, and P8 have a history value 402 less than or equal to the counter value. Thus, the counter is incremented by 1 to equal 100. At this point, each of the physical storage blocks P5, P6, P7, and P8 has a history value 402 less than or equal to the counter value. Therefore, any of them can be effectively selected. Assume that physical storage block P7 is selected. Then, controller 104 updates mapping 106 so that logical storage block L3 is now mapped to physical storage block P7 (not P8). Then the history value 402 of physical storage block P7 is incremented to 101, and data D10 is written to physical storage block P5, overwriting the previous data D7. The resulting arrangement is shown in Figure 9C. It is important to note that, as before, data D9 remains stored in physical storage block P8. At this point, snapshots of the older data D5 and D9 remain in physical storage blocks P5 and P9, respectively.

[0097] Figure 9D shows the configuration after a further request is received from OS200 to store data D11 in logical storage block L4. Following the process shown in Figure 7, the use flag 300 of logical storage block L3 is determined to be TRUE, which indicates that physical storage block P6, which is currently mapped to logical storage block L4, is not currently available for use because it stores data D6. Therefore, the controller 104 then determines whether there are any physical storage blocks P5, P6, P7, or P8 whose history value 402 is less than or equal to the value of the counter. In this case, the value of the counter is 100, and physical storage block P8 is selected because its history value 402 is 100. The controller 104 then updates the mapping 106 so that logical storage block L4 is now mapped to physical storage block P8 (not P6). The history value 402 of physical storage block P8 is then incremented to 101, and data D11 is written to physical storage block P8, overwriting the previous data D9. The resulting configuration is shown in Figure 9D.

[0098] The above description states that the data is stored in physical storage block P n Regarding the processes that can be written to. Next, logical storage block block L m However, these are currently mapped to the physical storage block P n We discuss a format in which data that is already stored can be released for later use. This process is shown in the flowchart of Figure 10.

[0099] In the first step S800, data D is transferred from OS200 to logical storage block L. m A request to erase is received. To provide a barrier between OS200 and the physical storage block 250 of SSSD100, OS200 provides a logical storage block L m It is only possible to access the information that defines it. In some cases, the specified logical storage block L mIt may already be empty (or ready to be written to), otherwise a specific logical storage block L m Corresponding physical storage block P n It may already contain data. The process will execute the specified logical storage block L m The process proceeds differently depending on the state of the logical storage block L. m The value of the usage flag 300 is determined, for example, by controller 104. This is because m is the logical storage block L m The value of the index used(m) is specified in the logical storage block L. m This can be done by querying the usage flag 300 of logical storage block L. m It is not used, that is used(m)=FALSE If it is determined that there is no data to delete, this procedure will terminate.

[0100] Logical storage block L m If the usage flag 300 is determined to be TRUE, in step S804 the controller 104 makes a further determination, namely, a physical storage block P with a history value 402 that is less than or equal to the value of the counter at that time. n’ A determination is made as to whether or not such a physical storage block P exists. n’ If it is determined that the counter does not exist, the process proceeds to step S806, where the counter value is incremented by 1, and the process returns to the determination in step S804. Basically, this process finds a physical storage block P with a history value 402 that is smaller than the counter value. n’ This process is repeated until a counter exists. The counter value is incremented, while the history value 402 remains unchanged, so at some point the counter value is equal to all physical storage blocks P mIt is easy to understand that this condition must ultimately be met, as it must exceed the lowest historical value of 402. If the determination in step S804 is affirmative, the process proceeds to step S808, where the logical storage block L that was the subject of the request in step S700 is examined. m P n’ (that is, P) n Mapping 106 is updated to map to (not). This means that map(m)=n→=n' This may be displayed.

[0101] After the mapping is updated in step S808, a new physical storage block P n’ The history value 402 is incremented by 1 in step S810. Generally, physical storage block P n’ The history value 402, i.e., hist(n'), increases from k to k+1.

[0102] Then, after mapping 106 and history value 402 are updated, logical storage block L m The usage flag 300 has been updated to FALSE, and therefore logical storage block L m When a further request to write data is received, the decision becomes affirmative in step S702 of Figure 7.

[0103] Figures 7–10 primarily relate to embodiments in which physical storage block n' is identified based on the number of times it has been previously updated. In other cases, the criterion used to select physical storage block n' is based on the most recent time it was updated. These are illustrated in Figures 11 and 12, which are described below. In these examples, the value of the counter is incremented each time the physical storage block is updated, thus providing a valid measure of time and ensuring that the order of the historical values ​​represents the chronological order in which the physical storage blocks were updated. This is in contrast to previous examples where the historical value of the counter represents the physical storage block that has been updated the most times.

[0104] Figure 11 is a flowchart showing the process for writing new data D to SSSD100. In the first step S900, input data D is sent from OS200 to logical storage block L m A request to store in is received. To provide a barrier between OS200 and the physical storage block 250 of SSSD100, OS200 provides a logical storage block L m It is only possible to access the information that defines it. In some cases, the specified logical storage block L m It can be empty (or ready to be written to), otherwise the specified logical storage block L m Corresponding physical storage block P n It may already contain data. The process will execute the specified logical storage block L m The process proceeds differently depending on the state of the logical storage block L. m The usage flag 300 is determined, for example, by controller 104. This is because m is the logical storage block L m The value of the index used(m) is specified in the logical storage block L. m This can be done by querying the usage flag 300 of logical storage block L. m It is not used, that is used(m)=FALSE If it is determined that this is the case, the method proceeds to step S904, where the controller 104 uses mapping 106 to determine logical storage block L m Corresponding physical storage block P n Determine the logical storage block L. m The physical storage block P corresponding to index m n The index n is, n=map(m) It can be expressed as follows.

[0105] Appropriate physical storage block P nUpon determining this, the controller 104 then puts data D into its physical storage block P n The data is written to physical storage block P. n When written to, in step S906, physical storage block P n The history value 402 is incremented to reflect the counter value at that time. This occurs in physical storage block P n This effectively provides an indication that it has been "used" a further number of times, and provides an indication of the time when the update was performed. Data D to physical storage block P n After writing to and incrementing its history value 402, in step S908, physical storage block P n The usage flag 300 is changed to TRUE. This means that in subsequent operations, physical storage block P n The controller 104 is instructed that data has been written to the block and is therefore unavailable for immediate subsequent use. Then, in step S910, the value of the counter is incremented by 1. Alternatively, the value of the counter may be updated to represent absolute time, but an increment of 1 each time the block is updated is sufficient to ensure that the history value corresponds to the chronological order of updates.

[0106] Step S902 local block L m If the value used is determined to be TRUE, that is used(m)=TRUE If so, the method proceeds to step S912, where physical storage blocks P that meet the criteria corresponding to the most recent update time n This is identified. As described above with respect to the embodiments of Figures 11 and 12, the physical storage block P n The historical value is for physical storage block P n This represents the counter value at the time of the most recent update. Since the counter is incremented each time any physical storage block is updated, the historical value is based on the physical storage block P nThe time order in which the updates occurred is basically represented, with the highest historical value representing the most recent update and the lowest historical value representing the oldest update. Therefore, in step S912, the identified physical storage block P n’ This corresponds to the physical storage block P with the lowest historical value corresponding to the "oldest" update. n’ It is possible. Other criteria may also apply, as set forth above in this disclosure.

[0107] The process then proceeds to step S914, where the logical storage block L that was the subject of the request in step S700 is... m P n’ (that is, P) n Mapping 106 is updated to map to (not). This means that map(m)=n→=n' This may be displayed.

[0108] After the mapping is updated, in step S916, a new physical storage block P n’ The history value 402 is incremented in step S716 to reflect the counter value at that time. Then, the mapping 106 is updated and after the history value 402 has been incremented, in step S918, the input data D is in block P n’ It will be written to. It is useful to consider the effects of this. Previous block P n Please note that the data has not been erased or overwritten. Rather, mapping 106 has been updated, and data has been written to a block that was unused or had not been used for the longest time. This means that the previous data was written to physical storage block P of SSSD100. n It remains stored, essentially forming a backup. Finally, in step S920, the counter value is incremented by 1.

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

[0110] The above description states that the data is stored in physical storage block P n Regarding the processes that can be written to. Next, logical storage block block L m However, these are currently mapped to the physical storage block P n We discuss a format in which data that is already stored in a location can be released for later use. This process is shown in the flowchart in Figure 12.

[0111] In the first step S1000, input data D is sent from OS200 to logical storage block L m A request to store in is received. To provide a barrier between OS200 and the physical storage block 250 of SSSD100, OS200 provides a logical storage block L m It is only possible to access the information that defines it. In some cases, the specified logical storage block L m It can be empty (or ready to be written to), otherwise the specified logical storage block L m Corresponding physical storage block P n It may already contain data. The process will execute the specified logical storage block L m The process proceeds differently depending on the state of the logical storage block L. m The usage flag 300 is determined, for example, by controller 104. This is because m is the logical storage block L m The value of the index used(m) is specified in the logical storage block L. m This can be done by querying the usage flag 300 of logical storage block L. m It is not used, that is used(m)=FALSE If it is determined that there is no data to delete, this procedure will terminate.

[0112] In step S1002, local block L m If the value used is determined to be TRUE, that is used(m)=TRUE If so, the method proceeds to step S1004, where a physical storage block P that satisfies the criteria corresponding to the most recent update time is located. n This is identified. As described above with respect to the embodiments of Figures 11 and 12, the physical storage block P n The historical value is for physical storage block P n This represents the counter value at the time of the most recent update. Since the counter is incremented each time any physical storage block is updated, the historical value is based on the physical storage block P n The time order in which the updates occurred is basically represented, with the highest historical value representing the most recent update and the lowest historical value representing the oldest update. Therefore, in step S912, the identified physical storage block P n’ This corresponds to the physical storage block P with the lowest historical value corresponding to the "oldest" update. n’ It is possible. Other criteria may also apply, as set forth above in this disclosure.

[0113] The process then proceeds to step S1004, where the logical storage block L that was the subject of the request in step S700 is located. m P n’ (that is, P) n Mapping 106 is updated to map to (not). This means that map(m)=n→=n' This may be displayed.

[0114] After the mapping is updated, in step S1008, a new physical storage block P n’The history value 402 is incremented in step S716 to reflect the counter value at that time. Then, the mapping 106 is updated and after the history value 402 has been incremented, in step S1010, the logical storage block L m The usage flag 300 has been updated to FALSE, and therefore logical storage block L m When a further request to write data is received, the decision becomes affirmative in step S902 of Figure 11. Finally, in step S1012, the value of the counter is incremented by 1.

[0115] It should be noted that steps S1008 to S1012 may be performed in any order, and any two or all three may be performed in parallel. As long as the order remains constant, the counter still represents a valid measure of time. The features disclosed in the foregoing description, or in the following claims, or in the accompanying drawings, are expressed in their specific forms, or in terms of means for performing the disclosed functions or methods or processes for obtaining the disclosed results, and may be used, as necessary, separately or in any combination of such features, to realize the invention in its various forms.

[0116] Although the present invention has been described in conjunction with the exemplary embodiments described above, numerous equivalent modifications and variations will become apparent to those skilled in the art who have been given this disclosure. Therefore, the exemplary embodiments of the present invention described above are illustrative and not limiting. Various modifications to the embodiments described can be made without departing from the spirit and scope of the invention.

[0117] To avoid misunderstanding, any theoretical explanations provided herein are intended to enhance the reader's understanding. The inventors do not wish to be bound by any of these theoretical explanations.

[0118] Any section headings used herein are for organizational purposes only and should not be construed as limiting the subject matter described.

[0119] Throughout this specification, including in the following claims, unless otherwise required by context, the words “equip” and “include,” as well as variations such as “equip,” “equip,” and “include,” are understood to mean that they include the integer or step or group of integers or steps described, but not that they exclude other integers or steps or groups of integers or steps.

[0120] It should be noted that, as used herein and in the appended claims, the singular forms “a,” “an,” and “the” refer to multiple subjects unless the context makes otherwise clear. Ranges may be expressed herein as “about” one particular value and / or “about” another particular value. When such ranges are expressed, another embodiment includes that one particular value and / or that other particular value. Similarly, when a value is expressed as an approximation by the use of the antecedent “about,” it will be understood that a particular value forms another embodiment. The term “about” with respect to numbers is arbitrary 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 of N physical storage blocks, wherein the data processing component comprises a controller and memory, The memory stores mappings between multiple M logical storage blocks and multiple N physical storage blocks, each of which is accessible by the operating system of the computing device. In response to receiving a request from the operating system to store input data in a first designated logical storage block mapped to a first physical storage block, the controller: The steps include determining that the first designated logical storage block is unavailable for storing input data, In response to determining that the first designated logical storage block is unavailable for storing input data, For storing the input data, a step of identifying a second physical storage block among the plurality of N physical storage blocks based on the history value of the second physical block, wherein the history value indicates the most recent time and / or the number of times the physical storage block has been updated. Configured to perform a method that includes, Data processing component.

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

3. The step of storing the input data in the second physical storage block. A data processing component according to claim 1 or claim 2, further comprising:

4. Step of updating the history value of the second physical storage block. The data processing component according to claim 3, further comprising:

5. The number of logical storage blocks M is less than the number of physical storage blocks N. A data processing component according to any one of claims 1 to 4.

6. The value of N is at least twice the value of M. The data processing component according to claim 5.

7. The step of updating the mapping in order to associate the first designated logical storage block with the second physical storage block. A data processing component according to any one of claims 1 to 6, further comprising:

8. The step of identifying the second physical storage block is: For each of the plurality of physical storage blocks or a subset thereof, the step of determining the time when the physical storage block was most recently updated, based on the historical value of each of the plurality of physical blocks or a subset thereof, The step of identifying the physical storage block that was most recently updated or is not used for storing data among the plurality of physical storage blocks or a subset thereof, A step of identifying the physical storage block that was most recently updated before a predetermined threshold interval from among the plurality of physical storage blocks or a subset thereof, The steps include identifying the physical storage block that was most recently updated before a predetermined time threshold from among the plurality of physical storage blocks or a subset thereof, and The steps include ranking the plurality of physical storage blocks or a subset thereof based on the determined time, and selecting physical storage blocks based on threshold ranking or percentiles. One or more of the above A data processing component according to any one of claims 1 to 7, including the data processing component according to any one of claims 1 to 7.

9. The controller includes a counter, The history value of each of the aforementioned physical storage blocks indicates the most recent time when that physical storage block was updated. The controller is configured to increment the counter whenever any of the physical blocks among the plurality of physical blocks is updated, or The controller is configured to increment the counter at predetermined regular intervals. It is one of the following: Each time a physical storage block is updated, its history value is updated to reflect the value of the aforementioned counter at that time. A data processing component according to any one of claims 1 to 8.

10. The history value for each physical storage block indicates the number of times that physical storage block has been updated. The step of identifying the second physical storage block among the plurality of physical storage blocks includes the step of identifying the physical storage block having the lowest history value. A data processing component according to any one of claims 1 to 7.

11. The controller is configured to increment the history value of the second physical storage block either after the mapping has been updated to associate the first designated logical storage block with the second physical storage block, or after the input data has been stored in the second physical block. The data processing component according to claim 10.

12. Each logical storage block includes or is associated with an availability flag containing a value indicating whether or not that logical storage block is available for storing input data. A data processing component according to any one of claims 1 to 11.

13. 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: The fourth physical storage block among the plurality of physical storage blocks is identified based on the historical value of the fourth physical storage block. The mapping is updated to associate the second designated logical storage block with the fourth physical storage block. The history value of the fourth physical storage block is updated, Label the second designated logical storage block as available for storing input data. It is configured in such a way. The data processing component according to claim 12.

14. The controller is configured to label the second designated logical storage block as available for storing input data by updating the value of the availability flag. The data processing component according to claim 13.

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

16. A switch configured to switch the 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 insecure state in which the physical storage block is accessible to the operating system of the computing device. A data processing component according to any one of claims 1 to 15, further comprising the above.

17. The data processing component is implemented in the form of a chip, disk, or other hardware component that can be located within a solid-state storage device. A data processing component according to any one of claims 1 to 16.

18. Multiple N physical storage blocks, A data processing element according to any one of claims 1 to 17 and Solid-state storage devices including...