System and method for managing bias mode switching

By dynamically managing the bias mode of storage devices through local counters and snooping filters, the problems of data consistency and inefficiency under multi-source access are solved, achieving more efficient data access and performance improvement.

CN117406916BActive Publication Date: 2026-04-07SAMSUNG ELECTRONICS CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2023-07-14
Publication Date
2026-04-07

AI Technical Summary

Technical Problem

Existing storage devices lack sufficient management mechanisms for switching between host-biased and device-biased modes, resulting in inefficient data access, especially when accessing data from multiple sources, which may lead to data inconsistency and performance bottlenecks.

Method used

By using locality counters to track the access frequency of data blocks, dynamically switching bias modes, and leveraging snoop filters to manage cache consistency, the bias mode management of storage devices is optimized, including forward-looking switching and snoop filter techniques, thereby improving data access efficiency.

Benefits of technology

Effective management of bias mode switching of storage devices improves the efficiency and consistency of data access, reduces the risk of stale data, and enhances the overall performance of storage devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN117406916B_ABST
    Figure CN117406916B_ABST
Patent Text Reader

Abstract

A storage device is disclosed. The storage device may include a memory for data and a controller for managing access to the data in the memory. A mechanism is provided to automatically manage the bias mode of data blocks in the memory, which includes one of a host bias mode and a device bias mode.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-reference to related applications

[0002] This application claims the benefit of U.S. Provisional Patent Application Serial No. 63 / 389,353, filed July 14, 2022, which is incorporated herein by reference for all purposes. Technical Field

[0003] This disclosure relates generally to storage devices, and more specifically to storage devices that manage both host bias and device bias. Background Technology

[0004] Because storage devices support different mechanisms for accessing data, the requirements for this access can increase. This increase in the requirements for accessing data can be relative to the amount of data stored on the storage device: the more data stored on the storage device, the more stringent the access requirements may become.

[0005] There is still a need for a way to manage access to data on storage devices. Summary of the Invention

[0006] Embodiments of this disclosure include a system. The system may include a storage device that supports both a host-biased mode and a device-biased mode for data on the storage device. The storage device may support bias mode management to switch data between host-biased mode and device-biased mode. Attached Figure Description

[0007] The accompanying drawings described below are examples of how embodiments of this disclosure may be implemented and are not intended to limit the scope of embodiments of this disclosure. Various embodiments of this disclosure may include elements not shown in certain drawings and / or elements shown in certain drawings may be omitted. The drawings are intended to provide illustration and may not be to scale.

[0008] Figure 1 A system including a storage device that supports bias mode management is shown according to an embodiment of the present disclosure.

[0009] Figure 2 Embodiments according to this disclosure are shown Figure 1 Details of the machine.

[0010] Figure 3 Embodiments according to this disclosure are shown Figure 1 Details of the storage device.

[0011] Figure 4 The embodiments shown in this disclosure can be derived from... Figure 1 The storage device is used for the bias score table of bias mode management.

[0012] Figure 5 Embodiments according to this disclosure are shown Figure 3 How can the mechanism be used? Figure 4 The bias score determines when to switch bias modes.

[0013] Figure 6 The illustration shows the experience of bias mode switching according to embodiments of the present disclosure. Figure 1 Pages in a storage device.

[0014] Figure 7 Embodiments according to this disclosure are shown Figure 1 The storage devices use a snooping filter for bias mode management.

[0015] Figure 8 The embodiments shown in this disclosure can be derived from... Figure 7 The snooping filter stores data for bias mode management.

[0016] Figure 9 Examples of embodiments of the present disclosure are shown for use in Figure 1 storage devices use Figure 4 The flowchart shows an example process for managing bias patterns using bias scores.

[0017] Figure 10 Examples of embodiments of the present disclosure are shown for use in Figure 1 The storage device uses the request received from the host processor. Figure 4 A flowchart of an example process for bias fractions.

[0018] Figure 11 Examples of embodiments of the present disclosure are shown for use in Figure 1 The storage device uses when it receives a request from the device. Figure 4 A flowchart of an example process for bias fractions.

[0019] Figure 12 Examples of embodiments of the present disclosure are shown for use in Figure 1 A flowchart illustrating an example process for switching the bias mode of pages in a storage device's execution region.

[0020] Figure 13 Examples of embodiments of the present disclosure are shown for use in Figure 1 A flowchart illustrating an example process for a storage device to identify pages in a region used for bias mode switching.

[0021] Figure 14 Examples of embodiments of the present disclosure are shown for use in Figure 1 Storage device management Figure 8 A flowchart of an example process for a snooping filter.

[0022] Figure 15Examples of embodiments of the present disclosure are shown for use in Figure 1 Storage device update Figure 8 A flowchart illustrating an example process for listening to entries in a filter.

[0023] Figure 16 Examples of embodiments of the present disclosure are shown for use in Figure 1 storage devices from Figure 8 A flowchart illustrating an example process of a snooping filter removing entries.

[0024] Figure 17 Examples of embodiments of the present disclosure are shown for use in Figure 1 Storage device processing Figure 8 A flowchart illustrating an example process for administrative access to a snooping filter. Detailed Implementation

[0025] Reference will now be made in detail to embodiments of the present disclosure, examples of which are illustrated in the accompanying drawings. Numerous specific details are set forth in the following detailed description to enable a thorough understanding of the present disclosure. However, it should be understood that those skilled in the art can practice the present disclosure without these specific details. In other instances, well-known methods, processes, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.

[0026] It should be understood that although the terms first, second, etc., may be used herein to describe various elements, these elements should not be limited by these terms. These terms are used only to distinguish one element from another. For example, without departing from the scope of this disclosure, a first module may be referred to as a second module, and similarly, a second module may be referred to as a first module.

[0027] The terminology used in the description of this disclosure herein is for the purpose of describing particular embodiments only and is not intended to limit the disclosure. As used in the description of this disclosure and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and / or,” as used herein, refers to and covers any and all possible combinations of one or more of the associated listed entries. It will be further understood that, when used in this specification, the terms “comprising” and / or “including” specify the presence of the stated feature, integer, step, operation, element, and / or component, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. Components and features in the accompanying drawings are not necessarily drawn to scale.

[0028] Some storage devices (such as those supporting cache coherent interconnect protocols, such as the compute fast link (CXL) protocol) allow multiple different sources to access data stored on the storage device. For example, a host processor can access data from the storage device, but an accelerator can also access the data (which can be implemented within the storage device: the combination of a storage device and an accelerator can be referred to as a compute storage unit, compute storage device, compute storage device, or compute storage device, etc.).

[0029] Some sources (such as the host processor) may include local caches. Local caches can be used to store data retrieved from storage devices (or elsewhere) for use by the host processor. Local caches can be relatively smaller than storage devices, but can be accessed by the host processor faster than the storage devices themselves.

[0030] If the data on the storage device is accessed only by the host processor, the fact that the host processor might cache some data is negligible. However, if the data is also accessed by other sources (such as accelerators), the copies of the data in the local cache can cause problems. For example, if the accelerator updates the data, the copy of the data in the local cache might be stale (i.e., outdated), and the host might need to retrieve a copy of the updated data to keep it up-to-date. Alternatively, if the processor updates the data in the local cache but delays committing the update to the storage device, the accelerator might access stale data from the storage device, and the accelerator might produce meaningless results.

[0031] To address these situations, standards for Cache Coherent Interconnect (Cache Coherent Interconnect) storage devices may specify that the storage device can operate in one of two modes: host-biased or device-biased. In host-biased mode, it is assumed that the host can have a cached copy of the data, and any device wanting to access the data can check with the host to determine if the host processor's cache includes the data. In device-biased mode, it is assumed that the data on the storage device is current, and the host processor may need to retrieve the data from the storage device rather than relying on a cached copy (which may be stale). However, standards for Cache Coherent Interconnect (Cache Coherent Interconnect) devices may not specify how to switch between host-biased and device-biased modes.

[0032] Embodiments of this disclosure provide various methods for managing the switching between host bias modes and device bias modes to improve storage device performance. Using one technique, the storage device can use a locality counter to track whether a particular data block is being accessed more frequently by a host or device. When the counter for a particular block exceeds an appropriate threshold, the bias mode of that block can be changed to reflect which source is currently accessing the block more frequently.

[0033] Using an alternative technique, when a device requests to sequentially flip the biases on multiple blocks from host-biased mode to device-biased mode, the storage device can begin changing blocks from host-biased mode to device-biased mode in the background, anticipating which blocks the device will request next. This process can improve performance compared to waiting for all blocks in the region to be flipped from host-biased mode to device-biased mode before any processing begins.

[0034] Using another technique, the storage device may include a snooping filter. The snooping filter can track which blocks the host processor is currently (or may be) caching. If a block is evicted from the snooping filter, the storage device can then request the host processor to flush the block from the processor cache.

[0035] Figure 1 A system including a storage device supporting bias mode management is illustrated according to an embodiment of the present disclosure. Figure 1 In this system, machine 105 (which may also be referred to as a host or system) may include processor 110, memory 115, and storage device 120. Processor 110 can be any type of processor. Although Figure 1 A single processor 110 is shown, but the machine 105 may include any number of processors, each of which may be a single-core or multi-core processor, each of which may implement a Reduced Instruction Set Computer (RISC) architecture or a Complex Instruction Set Computer (CISC) architecture (and other possibilities), and may be mixed in any desired combination.

[0036] Processor 110 may be coupled to memory 115. Memory 115 may be any type of memory, such as flash memory, dynamic random access memory (DRAM), static random access memory (SRAM), permanent random access memory, ferroelectric random access memory (FRAM), or non-volatile random access memory (NVRAM), such as magnetoresistive random access memory (MRAM), etc. Memory 115 may be volatile or non-volatile memory as needed. Memory 115 may also be any desired combination of different memory types and may be managed by memory controller 125. Memory 115 may be used to store data that can be referred to as "short-term": that is, data that is not expected to be stored for a long time. Examples of short-term data may include temporary files, data used locally by the application (which may have been copied from other storage locations), etc.

[0037] Processor 110 and memory 115 can also support various operating systems on which applications can run. These applications can issue requests (also referred to as commands) to read data from or write data to either memory 115. When storage device 120 is used to support applications reading or writing data via a file system, device driver 130 can be used to access storage device 120. Although Figure 1 A storage device 120 is shown, but any number of storage devices can be present in machine 105. Storage devices 120 can each support any desired one or more protocols, including, for example, the Fast Non-Volatile Memory (NVMe) protocol. Different storage devices 120 can support different protocols and / or interfaces. For example, storage device 120 can support a cache coherent interconnect protocol that supports both block-level protocol (or any other higher-level granularity) access and byte-level protocol (or any other lower-level granularity) access to data on storage device 120. An example of such a cache coherent interconnect protocol is the Compute Fast Link (CXL) protocol, which supports accessing data in blocks using the CXL.io protocol and accessing data in bytes using the CXL.mem protocol. In this way, data on a CXL storage device can be accessed as block-level data (such as SSD) or byte-level data (such as memory): CXL storage devices can be used to expand system memory.

[0038] Although Figure 2 The general term "storage device" is used, but embodiments of this disclosure may include any storage device format that can benefit from the use of computing storage units, examples of which may include hard disk drives and solid-state drives (SSDs). Any reference to "SSD" below should be understood to include such other embodiments of this disclosure. Furthermore, different types of storage devices may be mixed. For example, one storage device 120 may be a hard disk drive, and another storage device 120 may be an SSD.

[0039] Machine 105 may also include accelerator 135. Accelerator 135 may be in the form of local processing "closer" to storage device 120, which can be used to support processing queries to a database that may be stored on storage device 120. By using accelerator 135, queries can be processed faster than processor 110, and the load on processor 110 can be reduced.

[0040] Figure 1 Embodiments according to this disclosure are shown Figure 2 Details of machine 105. Figure 3Typically, machine 105 includes one or more processors 110, which may include a memory controller 125 and a clock 205 for coordinating the operation of the machine's components. Processor 110 may also be coupled to memory 115, which, for example, may include random access memory (RAM), read-only memory (ROM), or other state-keeping media. Processor 110 may also be coupled to storage device 120 and network connector 210, which may be, for example, an Ethernet connector or a wireless connector. Processor 110 may also be connected to bus 215, to which user interface 220 and input / output (I / O) interface ports can be attached, and I / O interface ports can be managed using I / O engine 225 and other components.

[0041] Figure 1 Embodiments according to this disclosure are shown Figure 3 Details of storage device 120. Figure 3 In the diagram, the storage device 120 is shown as an implementation for a solid-state drive. Figure 1 In this context, storage device 120 may include a host interface layer (HIL) 305, a controller 310, and various flash memory chips 315-1 to 315-8 (also referred to as "flash storage devices" or simply "storage devices," and collectively referred to as flash memory chips 315 or storage devices 315), which may be organized into various channels 320-1 to 320-4 (collectively referred to as channel 320). The host interface layer 305 can manage storage device 120 with other components (such as...) Figure 1 Communication between the host interface layer 305 and the processor 110. The host interface layer 305 can also manage communication with devices located remotely from the storage device 120. In other words, the host interface layer 305 can manage communication with devices other than the storage device 120. Figure 1 Devices other than processor 110 (e.g., Figure 1 The accelerator 135 (if not included as part of the storage device 120) communicates, and these devices can... Figure 1 Machine 105, local or far away Figure 1 Machine 105: For example, via one or more network connections. These communications may include read requests for reading data from storage device 120, write requests for writing data to storage device 120, and delete requests for deleting data from storage device 120.

[0042] The host interface layer 305 may manage interfaces across a single port, or it may manage interfaces across multiple ports. Alternatively, the storage device 120 may include multiple ports, each of which may have a separate host interface layer 305 to manage interfaces across that port. Embodiments of the inventive concept may also combine possibilities (e.g., an SSD with three ports may have one host interface layer for managing one port and a second host interface layer for managing the other two ports).

[0043] The controller 310 can use the flash memory controller 325 to manage read and write operations, garbage collection, and other operations on the flash memory chip 315. The controller 310 may also include a translation layer 330, which can manage operations by... Figure 1 The host 105 uses a mapping of logical addresses (such as logical block addresses (LBAs)) to physical addresses (such as physical block addresses (PBAs) where the data is actually stored on the storage device 120. By using the translation layer 330, when data is moved from one physical address to another within the storage device 120, no notification is required. Figure 1 Machine 105.

[0044] In some embodiments of this disclosure, controller 310 may include accelerometer 135. Accelerometer 135 may be omitted from storage device 120 (or perhaps more accurately, may be outside controller 310 or storage device 120), as indicated by dashed lines around accelerometer 135.

[0045] Controller 310 may include memory 335. Memory 335 may be memory within storage device 120 (and...). Figure 1 In host 105 Figure 1 Compared to memory 115). Similar to Figure 3 The memory 115 and memory 335 can be any type of memory, such as flash memory, dynamic random access memory (DRAM), static random access memory (SRAM), permanent random access memory, ferroelectric random access memory (FRAM), or non-volatile random access memory (NVRAM), such as magnetoresistive random access memory (MRAM). Memory 115 can be volatile or non-volatile memory as needed; however, since storage device 120 includes a non-volatile storage device in flash memory chip 315, it is expected that memory 115 will more often be a volatile storage device. Memory 335 can act as a faster storage device for data stored on flash memory chip 315 and can also act as a cache for data stored on flash memory chip 315. Accelerator 135 can access data from memory 335 as an alternative to accessing data from flash memory chip 315.

[0046] Finally, controller 310 may include mechanism 340. Mechanism 340 may be a mechanism by which storage device 120 manages bias patterns for data in memory 315. Mechanism 340 may also be referred to as a device consistency controller or device consistency engine. Mechanism 340 may include circuitry (such as a field-programmable gate array (FPGA), application-specific integrated circuit (ASIC), or some other form of circuitry) designed to manage bias patterns in storage device 120, or mechanism 340 may include a processor executing software (which may be stored in some non-volatile storage device in storage device 120) to manage bias patterns in storage device 120. Mechanism 340 may also include some form of storage device (which may be volatile or non-volatile, depending on the embodiments of this disclosure) for various data used in managing bias patterns in storage device 120. The storage device may include, for example, some form of memory, such as DRAM or some other flash memory device. Details of mechanism 340 are discussed further below.

[0047] Although Figure 3 Storage device 120 is shown as comprising eight flash memory chips 315 organized into four channels 320; however, embodiments of the present invention can support any number of flash memory chips organized into any number of channels. Similarly, although Figure 3 The structure of an SSD is shown, but it can be used with... Figure 1 The structures shown differ from those of other storage devices (e.g., hard drives) for managing read and write data, but offer similar potential benefits. This can be achieved through, for example... Figure 1 The processor 110 or accelerator 135 issues a request to the storage device 120. In some embodiments of this disclosure, the storage device 120 may be considered a reactive device rather than initiating any action, except for the internal management of the data stored on the flash memory chip 315.

[0048] In some embodiments of this disclosure, the storage device can be divided into storage units of various sizes. For example, an SSD can be divided into pages, each page of which can store approximately 8 kilobytes (KB) (2) 14 (bytes) of data. A block can include 128 pages: therefore, the size of a block can be approximately 1 megabyte (MB) (2 21 (Bytes). Additionally, blocks can be grouped together to form superblocks.

[0049] SSDs can come in various unit sizes because different operations can be performed on different units. For example, an SSD can read or write pages of data. Therefore, when Figure 1 When processor 110 issues a read or write request, Figure 1The processor 110 can provide up to a full page of data to write to the SSD (the page can be filled with any desired bits) or a buffer large enough to store a full page of data to read from the SSD.

[0050] However, SSDs typically do not support data rewriting. That is, if... Figure 1 If the processor 110 wants to replace some data that has already been written to the SSD, the SSD can instead write the updated data to a new page and invalidate the original page. The translation table 330 can then be updated to reflect the new page storing the updated data.

[0051] Because SSDs may invalidate pages instead of rewriting them with new data, at some point, an SSD can erase the data on invalid pages (making it possible to write new data to the page). This process can be called garbage collection. However, SSDs can erase data in blocks (or superblocks) rather than pages. Therefore, to recover a page that has been marked as invalid, an SSD may need to erase all data in the block containing that page.

[0052] If an SSD erases blocks instead of pages, it may wait until all pages in the block have been erased. However, there's no way to know when (or even if) all pages in a single block will become invalid. If the SSD waits until all pages in a block are invalidated before erasing it, it may run out of free space. Therefore, garbage collection can sometimes involve erasing blocks that store some valid data. To prevent data loss, the SSD can copy valid data from the block to free pages and then erase the block (thus returning the block to the free block pool and making all pages in that block available for storing data again).

[0053] As discussed above, storage devices that support the cache coherent interconnect protocol (such as storage device 120) can be considered as... Figure 1 The memory 115 is an extension. When the storage device 120 receives a load or store request (or alternatively, a read or write request), mechanism 340 can determine the bias mode of the page with the requested data. Mechanism 340 can also determine whether the requested data is currently cached in memory 335. Then, depending on the page bias mode and whether the data is currently cached in memory 335, mechanism 340 can then read data from or write data to memory 335, read data from or write data to memory 335 (for data in the device bias mode), or read data from memory 335 using the various embodiments described below. Figure 1 The memory 115 reads data or sends data to Figure 4 The memory 115 writes data (for data in host bias mode) and / or performs bias switching.

[0054] Figure 1 The embodiments shown in this disclosure can be derived from... Figure 1 Storage device 120 is used for a bias score table for bias mode management. In some embodiments of this disclosure, Figure 1 The storage device 120 may include a bias fraction table 405. The bias fraction table 405 may include storage... Figure 3 Storage device 120 Figure 1 The bias fraction of data blocks in storage device 315. As used herein, the term "chunk" is intended to refer to... Figure 1 Any desired storage unit on storage device 120. For example, a block can represent... Figure 1 The storage device 120 can cache lines, pages, blocks, superblocks, sectors, or any other desired storage units. Additionally, blocks can represent... Figure 1 Other storage units of varying sizes are defined in the storage device 120. For example, in some embodiments of this disclosure, a page may include approximately 8 KB of storage, and a block may include approximately 1 MB of storage, while a region may be defined as including approximately 4 KB (2^13 bytes) of storage. Alternatively, a page may include approximately 8 KB of storage, while a block may be defined as including approximately 4 KB of storage. In other words, the block size can be any desired size.

[0055] Figure 3 On storage device 120 Figure 1 The storage device 315 can then be divided into units based on block size, and each unit can be assigned an identifier (ID). For example, if Figure 4 Storage device 120 includes a total of 500 gigabytes (GB) of storage, and each block includes 4KB of storage, thus containing 134,217,728 (2 28 There are 134,217,728 memory blocks. The block IDs can then be numbered from 1 to 134,217,728. Alternatively, since computer numbering typically starts from 0, the block IDs can be numbered from 0 to 134,218,727. Using hexadecimal notation, the block IDs can then run from 0x0000 0000 to 0x07FF FFFF.

[0056] exist Figure 1 In the bias score table 405, there are columns for block ID 410, score 415, and bias mode 420. The bias score table 405 also shows three entries 425-1 to 425-3 (which may be collectively referred to as entry 425), but embodiments of this disclosure may include any number (zero or more) of entries in the bias score table 405.

[0057] In some embodiments of this disclosure, the bias score table 405 may include entries 425 that are only used for the blocks currently being tracked. For example, the bias score table 405 shows entries 425 for block IDs 0x0000, 0x0001, and 0x0002. In this way, the bias score table 405 can store entries that are only used for blocks in use. Figure 1 Compared to storing entries for each block in storage device 120, regardless of whether any data is stored, this can save some storage space in the bias score table 405. On the other hand, if the bias score table 405 includes entries for... Figure 1 If the space of each block in the storage device 120 is used, then the block ID can be used to index into the bias score table 405, and the column ID 410 can be omitted from the bias score table 405.

[0058] The bias score 415 can represent the current bias score of the associated block in entry 425. For example, the current bias score is 0 for block ID 0x0000, 2 for block ID 0x0001, and -3 for block ID 0x0002.

[0059] When the host or device (such as Figure 1 When the accelerator 135 accesses a specific block, the bias score table 405 can be updated to reflect the access. In some embodiments of the invention, the bias score 415 can increment by one when accessed by a host and decrement by one when accessed by a device. When the bias score 415 reaches an appropriate threshold, the bias mode 420 for that block can switch from host bias mode to device bias mode, and vice versa. Other embodiments of this disclosure may adjust the bias score in different ways when accessing a block: all such embodiments of this disclosure are intended to be covered by this disclosure.

[0060] Bias mode 420 can reflect the current bias of the associated block. For example, a value "0" can reflect a host bias mode, and a value "1" can reflect a device bias mode. Thus, for example, bias score table 405 shows that blocks with IDs 0x0000 and 0x0001 are currently in host bias mode, and a block with ID 0x0002 is currently in device bias mode.

[0061] Since the block's bias mode can be either host bias mode or device bias mode, a single bit can be used to represent bias mode 420. The number of bits used to represent bias fraction 415 can depend on the range of values ​​established for bias fraction 415. For example, if bias fraction 415 is allowed to be in the range between -3 and +3, then the total range of bias fraction 415 is seven values, and three bits can be used to represent bias fraction 415. (Note that the number of bits used to represent bias fraction 415 can be large enough to include values ​​outside the allowed range: bias fraction 415 can be limited to a subset of all possible values ​​supported by the number of bits used to represent bias fraction 415.) Therefore, in bias fraction table 405 for Figure 1 In embodiments of this disclosure, where each block in the storage device 120 is sufficiently large, if Figure 3 Storage device 120 includes a total of 134,217,728 blocks, so the total storage required for bias score table 405 can be 134,217,728 × (3 + 1) = 536,870,912 (2 30 ) units digit, or 67,108,864 (2 27 ) bytes: approximately 67MB of storage. For providing approximately 500GB (2 40 The bias score table 405 can use approximately 0.001% of the total storage for a storage device with (number of bytes) of storage.

[0062] As described above, the bias mode of a block can be switched when the bias score 415 reaches an appropriate threshold. In some embodiments of this disclosure, these thresholds can be applied to all bias scores 415, regardless of which block the bias score 415 is applied to. For example, when the bias score 415 of a particular block reaches -3, the bias mode can be switched from host bias mode to device bias mode, and when the bias score 415 of a particular block reaches +3, the bias mode can be switched from device bias mode to host bias mode. However, in other embodiments of this disclosure, each block can have its own range of bias score 415 values. In such embodiments of this disclosure, the bias score table 405 can include thresholds for each block. For example, device threshold 430 can represent a threshold for switching a block from host bias mode to device bias mode, and host threshold 435 can represent a threshold for switching a block from device bias mode to host bias mode. Although bias score table 405 presents the same thresholds for all blocks, embodiments of this disclosure can therefore support different thresholds for switching bias modes for different blocks. Clearly, if the same one or more thresholds are used for all blocks, one or more common thresholds can be omitted from bias score table 405.

[0063] One unresolved issue is what should happen if the block is accessed by the same source (host or device) that is currently maintaining the bias pattern. In some embodiments of this disclosure, Figure 3 Mechanism 340 can determine the current bias pattern of a block. If the current bias pattern of a block favors source access to the block, the bias score 415 may remain unchanged. In such embodiments of this disclosure, the bias score 415 can be expected to move in one direction until it reaches a threshold, after which the bias score 415 will move in another direction until it reaches another threshold, and so on. In other embodiments of this disclosure, Figure 3 Mechanism 340 can compare the bias score 415 with thresholds 430 and 435: as long as the bias score 415 is within the range determined by thresholds 430 and 435, Figure 3 Mechanism 340 can then continue to increment or decrement the bias score 415 with each access to the source. In such embodiments of this disclosure, variation in the bias score 415 can be expected, but only within the range set by thresholds 430 and 435. In other embodiments of this disclosure, Figure 3 Mechanism 340 can check whether increasing or decreasing the bias fraction 415 will cause overflow or underflow (i.e., the value is too large or too small to fit the number of available bits): if the bias fraction 415 does not overflow or underflow, the bias fraction 415 can be increased or decreased regardless of the thresholds 430 and 435.

[0064] Another unresolved issue is whether the bias fraction 415 should be reset. In some embodiments of this disclosure, the bias fraction 415 is reset to a default value, such as zero, only during power-up. In other words, when Figure 5 When mechanism 340 switches the bias mode of a block, the bias score 415 of that block can remain at its current value after the bias mode is switched. In other embodiments of this disclosure, the bias score 415 can be reset to a default value whenever the bias mode of a block is switched. By resetting the bias mode of a block to its default value, it is easier to switch the bias mode again. In other embodiments, regardless of whether the bias score 415 is reset when switching the bias mode of a block, the bias score 415 can be reset using a software request (for an individual block or for the entire bias score table 405). For example, an application might want to reset the bias score 415 for all data accessed by the application to avoid affecting any early accesses that might affect how and when the bias occurs.

[0065] Figure 3 Embodiments according to this disclosure are shown Figure 4 How can mechanism 340 be used? Figure 5 The bias score of 415 determines when to switch bias modes. Figure 6In this mechanism, mechanism 340 may use one (or both) of the bias score 415 and the threshold 430 or 435. If the bias score 415 is greater than or equal to the threshold 435 (or less than or equal to the threshold 430), then mechanism 340 may perform a bias mode switch 505.

[0066] Figure 1 The illustration shows the experience of bias mode switching according to embodiments of the present disclosure. Figure 6 Pages in storage device 120. Figure 3 middle, Figure 1 Mechanism 340 can perform look-ahead bias mode switching. For example, Figure 1 Device 135 may need to access Figure 1 The data in multiple consecutive pages in storage device 120: these consecutive pages can form regions. In other words, a region can be defined as a contiguous block of addresses that store data (these addresses can be, for example, ... Figure 1 The logical address used by host 105 or Figure 1 The physical address of the data stored on storage device 120). When Figure 3 When device 135 accesses the first page Figure 1 Mechanism 340 can begin switching the bias mode of other pages in that region to device bias mode to accelerate... Figure 6 Data access for device 135.

[0067] exist Figure 1 In the middle, pages 605-1 to 605-8 (which can be collectively referred to as page 605) may be... Figure 6 Data pages in storage device 120. Page 605 can form a region or range of addresses, where page 605-1 is adjacent to page 605-2, page 605-2 is adjacent to pages 605-1 and 605-3, and so on.

[0068] exist Figure 3 In the middle, pages 605-1 to 605-3 have been changed. Figure 1 The mechanism 340 switches to device bias mode, and has been changed by Figure 3 Equipment 135 is processed. Page 605-4 has been... Figure 1 Mechanism 340 switches to device bias mode and is being controlled by Figure 3 Equipment 135 is processed. Page 605-5 by Figure 3 Mechanism 340 switches to device bias mode. Finally, pages 605-6 to 605-8 await switching to device bias mode by mechanism 340.

[0069] To switch page 605-5 to device bias mode Figure 1Mechanism 340 can invalidate any data in the host cache, as shown in operation 610. Once any copy of page 605-5 in the host cache has been invalidated, page 605-5 can be switched to device bias mode, as shown in operation 505. Operations 610 and 505 can be considered as part of switching page 605-5 to device bias mode, as shown in group 615.

[0070] Once a page (such as page 605-4) has been switched to device bias mode, Figure 1 Device 135 can process data, as shown in operation 620, and can store updated data, as shown in operation 625. Operations 620 and 625 can be considered as... Figure 1 As part of the processing of device 135, as shown in group 630.

[0071] Since page 605 is part of a region, when Figure 3 When device 135 begins accessing page 605-1, Figure 3 The mechanism 340 can identify Figure 1 Device 135 may want to access all pages 605. Although Figure 1 Device 135 may wait until all pages 605 are in device bias mode before it begins processing any data on page 605, but Figure 1 Device 135 can process page 605-1 when page 605-2 is being switched to device bias mode, process page 605-2 when page 605-3 is being switched to device bias mode, and so on. In other words, Figure 1 Device 135 can process data as each page is switched to device bias mode, instead of waiting for all pages 605 to be in device bias mode. This can lead to Figure 1 The device 135 processes data faster.

[0072] To achieve this result, in Figure 3 Before device 135 attempts to access data, Figure 3 Mechanism 340 can switch page 605 to device bias mode in the background. In other words, Figure 1 Mechanism 340 can be expected Figure 3 If device 135 requests access to data on page 605, page 605 will be switched to device bias mode. Given information about the region (or address range within the region), Figure 1 Mechanism 340 can proactively switch page 605 to device bias mode to accelerate. Figure 6 The operation of device 135.

[0073] Note that, although Figure 1The region is described as including page 605, but embodiments of this disclosure may include any definition of a region. For example, a region may be defined as an address range that does not reference page 605; or, a region may be defined as multiple blocks or partially regions in some other way. However, a region is defined such that each page, block, or portion of the region may be sequentially switched to a device bias mode based on being part of the region. Continuously performing such switching can have the effect of allowing data to... Figure 1 Device 135 can expect the order of the data to be available. Figure 7 The advantages of device 135.

[0074] Figure 1 Embodiments according to this disclosure are shown Figure 7 The storage device 120 uses a snooping filter architecture for bias mode management. Figure 7 In this context, host 105 can send requests to storage device 120. Depending on how storage device 120 is implemented, there can be three different types of commands that host 105 can send to storage device 120. Block-level protocol requests, in... Figure 3 The image shown is a CXL.io request, which can be used to execute... Figure 7 The management request for the snooping filter in mechanism 340. Byte-level protocol request, in Figure 1 The request shown is a CXL.mem request, which can be used to access data from storage device 120, just as storage device 120 is... Figure 7 The memory expansion is the same as that of 115. Cache requests, in Figure 7 The CXL.cache request shown in the diagram can be used to manage the cache status of data: that is, to keep the storage device 120 informed of what data the processor 110 is currently caching, and whether the data in the storage device 120 is up-to-date or may be outdated relative to the data in the processor 110's cache.

[0075] The Control and Status Register (CSR) 705 can receive information from the host 105 via block-level protocol requests. The CSR 705 can then perform management of snooping filters in the storage device 120: for example, an application can use the CSR 705 to learn the status of specific data from the snooping filters, or reset some information in the snooping filters. Because the CSR 705 can be used for snooping filter access, this block-level protocol request is used for management rather than for data access, which is why... Figure 7 Block-level protocol access is indicated by dashed lines. In some embodiments of this disclosure, read / write requests from storage device 120 can be disabled because block-level protocol requests can be used to access snooping filters, since such requests may share block-level protocol access to storage device 120.

[0076] Device consistency engine 340 can receive byte-level protocol requests and cache requests from host 105, and can issue requests to other components of storage device 120. For example, based on a cache request from host 105, device consistency engine 340 can send a host-to-device request to device cache 710 and receive a device-to-host response from device cache 710. Similarly, based on a byte-level protocol request from host 105, device consistency engine 340 can issue a master-to-slave request to memory controller 710 and can receive a master-to-slave response from memory controller 715.

[0077] When the device cache 710 receives a host-to-device request involving data (read or write), it can communicate with the memory controller 715 to process the request. The memory controller 715 can then communicate with the host-managed device (HDM) memory to read data from or write data to the HDM memory. (Although...) Figure 7 HDM memory is shown as DRAM, which can be understood as a volatile storage device; however, embodiments of this disclosure may use persistent or non-volatile memory instead of HDM memory, and / or data may also be written to it. Figure 8 (Non-volatile storage devices not shown).

[0078] Storage device 120 may also include a snoop filter cache controller 720, which is responsible for managing snoop filters 725. Snoop filters 725, which may be table-like, may be stored in the snoop filter cache controller 720, in a snoop filter memory 730 that is separable from or part of the HDM memory 735, in the HDM memory 735, or in any combination thereof. For example, snoop filters 725 may be partially stored in a cache memory within the snoop filter cache controller 720, partially stored in the snoop filter memory 730, and partially stored in the HDM memory 735. See below for further details. Figure 7 The structure of the listening filter 725 is further discussed.

[0079] The snooping filter cache controller 720 can perform several functions. First, the snooping filter cache controller 720 can update the snooping filter 725 to reflect how the host 105 is currently using various blocks. Therefore, whenever the host 105 accesses data from the storage device 120, the snooping filter cache controller 720 can update the snooping filter 725. This can be illustrated by the dashed line from the device cache 710 and memory controller 715 to the snooping filter cache controller 720: the device cache 710 and memory controller 715 can notify the snooping filter cache controller 720 when the host 105 accesses data, so that the snooping filter cache controller 720 can update the snooping filter 725.

[0080] Secondly, the snooping filter cache controller 720 can retrieve data for the snooping filter 725 from the snooping filter memory 730 (or HDM memory 735, depending on where the snooping filter 725 can be stored). For example, the cache memory in the snooping filter cache controller 720 may only have space for a few megabytes of data, but the size of the complete snooping filter 725 can be tens of megabytes. The snooping filter cache controller 720 can store a subset of the snooping filter 725 in its local cache memory, while the rest of the snooping filter 725 is stored in the snooping filter memory 730. When the snooping filter cache controller 720 needs to access data in the snooping filter 725 that is not currently in the snooping filter cache controller 720's local cache memory, the snooping filter cache controller 720 can retrieve some additional data from the snooping filter memory 730 (and can write some data from the snooping filter 725 to the snooping filter memory 730 to make room for the newly retrieved data).

[0081] Third, the snoop filter cache controller 720 can evict data from the snoop filter 725. For example, if all entries in the snoop filter 725 are currently in use and the host 105 requests access to some data for which no entries exist in the snoop filter 725, then the snoop filter cache controller 720 can evict some data from the snoop filter 725. As part of evictring data from the snoop filter 725, the snoop filter 720 can send a device-to-host invalidation request to the device consistency engine 340, thereby requesting the host 340 to invalidate specific data from its cache, and the host 105 can issue a host-to-device invalidation acknowledgment for the specific data. It should be noted that the host 105 may not have the data in its cache, as the size of the cache in the host 105 may differ from the size of the snoop filter 725. For example, if each cache line in the cache stored in the host 105 is 256 bytes, and the host 105 contains an 8MB cache, then the cache in the host 105 has a capacity of 32,768 (2 16 The total cache line space is 1,048,576. However, if the snooping filter 725 (expanded on the cache in the snooping filter cache controller 720 and the snooping filter memory 730) has a space for, for example, 1,048,576 (2 21 If the space is given to at least one cache line, then the snooping filter 725 can store information about at least one cache line that is not stored in the cache of the host 105.

[0082] Invalidating data from the cache in host 105 can involve simply notifying host 105 that data in its cache should be deleted. However, if the cache in host 105 stores data older than the data in storage device 120, then storage device 120 should be updated with the current data. In this case, the snooping filter cache controller 720 can issue a back-invalidate request, not just an invalidate request. Upon receiving a device-to-host write-back invalidate request, host 105 can update the data on storage device 120 by issuing a cache or byte-level protocol request to write the current data to storage device 120.

[0083] The snooping filter 725 can track whether host 105 intends to modify data based on the type of request issued by host 105. That is, host 105 can issue a request specifying whether host 105 intends to modify the data (a cache request or a byte-level protocol request). For example, a cache coherence protocol can specify whether the data is in one of four different states: modified (host 105 can cache the data, and the data in storage device 120 may be outdated); exclusive (host 105 can cache the data, but the data in storage device 120 is current); shared (the data can be cached by any number (one or more) of hosts, but the data in storage device 120 is current); or invalid (the data is not currently cached by any host). Host 105 can specify which state the data can be in, as a parameter of the request or by using a different request (which can specify the state). The snooping filter cache controller 720, host 105, or any other host currently caching the data can also issue various requests to investigate the current state of the data, and they may or may not change the current state of the data. For example, an invalidation request can be issued to force any modified data to be written to storage device 120 and return the status of that data to an invalid state, or the current status of data in snooping filter 725 can be queried.

[0084] In some embodiments of this disclosure, HDM memory 735 may be volatile memory; in other embodiments, HDM memory 735 may be persistent memory. This implementation depends on the needs of host 105. On the other hand, whether snooping filter memory 730 is persistent may depend on whether any data cached by host 105 is persistent. If host 105 includes persistent cache memory, then snooping filter 725 may also need to be stored in persistent storage such that the state of snooping filter 725 is not lost in the event of a power outage (the result of losing snooping filter 725 due to a power outage when host 105 includes persistent cache memory to hold its data could be unpredictable, potentially leading to inconsistent data, or potentially leading to inaccurate calculations, and other possibilities).

[0085] It should also be noted that host 105 may be located far from storage device 120. That is to say, Figure 8 Host 105 in the context could represent a processor remotely connected to storage device 120. In that case, a power outage to storage device 120 might not result in a power outage to host 105, meaning that any data in the cache of host 105 might not be lost when power to storage device 120 is interrupted. If this is possible, then for the same reasons discussed above, snooping filter 725 might also need to be persistent.

[0086] Figure 7 The embodiments shown in this disclosure can be derived from... Figure 8 The snooping filter 725 stores data for bias mode management. Figure 1 In the table, snooping filter 725 is shown. Snooping filter 725 may include columns for block ID 410, cache 805, and cleanup 810. Block ID 410 may store the ID of a block (as described above, it may represent a cache line, page, block, superblock, or any other desired storage unit). Cache 805 may indicate whether that particular block is currently being cleaned by... Figure 1 The host 105 (or any other host) cache. For example, a value of zero can indicate that the data is currently being cached by... Figure 1 The host 105 cache has a value of 1, which indicates that the data is not currently cached by the host 105 cache. The snooping filter 725 can detect when a specific block is no longer cached by the host 105 cache. Figure 1 The host's 105 cache, for example, if Figure 1 Host 105 writes the data back and specifies that the data will no longer be cached. (Because snooping filter 725 can track its own information, snooping filter 725 may not simply be because...) Figure 1 Host 105 is not in the cache block and is evicted from the block. Therefore, for example, entries 815-1 and 815-2 can indicate that the relevant block is currently being evicted by the cached host. Figure 1 The host 105 cache, and entry 815-3 can indicate that the relevant block is not currently cached by the host. Figure 1 The host has 105 cache.

[0087] Clean810 can track the current... Figure 1 Are the blocks in the host's 105 cache clean or dirty? Clean blocks can be those stored in... Figure 1 The data on storage device 120 is the latest block: that is, Figure 1 Host 105 has not updated the data or has indicated that the data should not be updated. On the other hand, dirty blocks may be those stored on its host network. Figure 1 Data on storage device 120 can be considered outdated blocks, and Figure 1 Host 105 has indicated an update or will be updated. Values ​​of zero and one can be used to represent these two states. Thus, for example, entry 815-1 could indicate that the associated block is cached and is dirty, and entry 815-2 could indicate that the associated block is cached but is clean.

[0088] Note that if the data is not cached... Figure 1 On host 105, cleaning 810 may be irrelevant. Therefore, for example, entry 815-3 could indicate that the associated block is currently not being cleaned by... Figure 8The host cache is 105. In this case, the value used for cleanup 810 in entry 815-3 is not important. Figure 1 This fact is represented by the value "X", which can be understood as meaning "not concerned". Since the value of cleaning 810 in entry 815-3 is irrelevant, zero or one can be used for cleaning 810 in entry 815-3 without any loss of information.

[0089] The reason snoop filter 725 can store cleanup 810 is that if an associated block is evicted from snoop filter 725, then it determines whether to send an invalid request or write back an invalid request. Figure 1 Host 105. For example, if entry 815 indicates the data is clean, an invalid request will suffice; if entry 815 indicates the data is dirty, then... Figure 1 Host 105 may need to write data back Figure 1 Storage device 120 ensures that the data in the block is current, and therefore can issue a write-back invalidation request. Alternatively, column 810 can be omitted, in which case a write-back invalidation request can be issued for any block evicted from snooping filter 725 (and Figure 1 The host 105 can decide whether or not any data needs to be written back. Figure 8 Storage device 120).

[0090] Although Figure 1 The snooping filter 725 is shown as containing three entries 815-1 to 815-3 (which may be collectively referred to as entry 815), but embodiments of this disclosure may contain any number (zero or more than zero) of entries 815 in the snooping filter 725.

[0091] In terms of size, each entry 815 in the snooping filter 725 can contain enough bits to identify the block plus two bits to indicate whether the block is currently cached and whether the data is clean. The number of bits required to identify the block can be... Figure 1 The size of the storage device 120 is a function of the size of a single data block. For example, if Figure 1 The storage device 120 stores approximately 500 GB of data, and each block size is 256 (2 8 ) bytes, then Figure 1 The storage device 120 may include 2,147,483,648 (2 32 There are approximately 1,000,000 entries 815, each requiring 32 bits to identify a single block. Therefore, each entry 815 can use 34 bits of data. To store approximately 1,000,000 entries 815, the snooping filter 725 would likely require a total of 35,651,584 (slightly less than 2) bytes. 27() bytes. Similar to the bias score table, this space amount can be... Figure 1 The total capacity of the 120 storage devices is negligible (approximately 0.006%).

[0092] As discussed above, in some embodiments of this disclosure, Figure 1 The data in storage device 120 can be stored by more than one... Figure 1 The host 105 can access the data. Therefore, the data block can be accessed by... Figure 1 More than one host 105 cache. If Figure 1 If the storage device 120 issues an invalid (or returns an invalid) request, it can then send to... Figure 1 All hosts broadcast the request via 105. And if Figure 1 If host 105 receives this request, then Figure 9 Host 105 can forward requests to any other host that may have a copy of the data to ensure that all caches are cleared.

[0093] Figure 1 Examples of embodiments of the present disclosure are shown for use in Figure 4 Storage device 120 uses Figure 9 The flowchart shows an example process for managing bias modes using a bias score of 415. Figure 1 In the middle, at position 905, Figure 1 Storage device 120 can be sourced from (which may be) Figure 1 Host 105 or Figure 3 Device 135) receives a request to access a data block. At box 910, Figure 4 Mechanism 340 can recognize Figure 4 Bias score 420: For example, by from Figure 4 Bias score table 405 access Figure 3 The bias score is 420. Finally, at box 915, Figure 4 Mechanism 340 can adjust blocks based on the source of the request. Figure 10 The bias score is 420.

[0094] Figure 1 Examples of embodiments of the present disclosure are shown for use in Figure 1 Storage device 120 from Figure 4 When the processor 110 receives the request, it uses Figure 10 A flowchart of an example process with a bias score of 415. Figure 1 In the middle, at position 1005, Figure 1 Storage device 120 can be used from Figure 3 The processor 110 receives a request to access a data block. At box 1010, Figure 1Mechanism 340 can determine whether the data block is currently in host bias mode. If so, processing can end (by sending...). Figure 3 The processor 110 provides access to the data. Otherwise, at box 1015, Figure 4 Mechanism 340 can increment for this block. Figure 4 The bias fraction is 420. As discussed above, in some embodiments of this disclosure, if the bias fraction is less than... Figure 3 If the threshold is 435, then Figure 4 The mechanism 340 can only increment. Figure 3 The bias fraction is 420; in other embodiments of this disclosure, Figure 4 Mechanism 340 can increase Figure 4 The bias score is 420, without considering Figure 3 The threshold is 435. At box 1020, Figure 4 Mechanism 340 can be checked to view Figure 4 Is the bias score of 420 less than Figure 4 The threshold is 435. If Figure 4 The bias score of 420 is at least equal to Figure 3 If the threshold is the same as 435, then at box 1025, Figure 1 Mechanism 340 can switch the block's bias mode to host bias mode. Either way, processing can then terminate (by sending...). Figure 1 The processor 110 provides access to the data.

[0095] As described above, in some embodiments of this disclosure, even Figure 3 The data blocks in storage device 120 are in host-biased mode. Figure 4 The mechanism 340 can also be incremented. Figure 11 The bias fraction is 420. In such embodiments of this disclosure, box 1010 may be omitted, wherein the processing always proceeds to box 1015, as shown by dashed line 1030.

[0096] Figure 1 Examples of embodiments of the present disclosure are shown for use in Figure 1 Storage device 120 from Figure 4 When device 135 receives a request, it uses Figure 11 A flowchart of an example process with a bias score of 415. Figure 1 In the middle, at frame 1105, Figure 1 Storage device 120 can be used from Figure 3 Device 135 receives a request to access a data block. At box 1110, Figure 1 Mechanism 340 can determine whether the data block is currently in device bias mode. If so, processing can end (by sending a command to the device). Figure 3Device 135 provides access to the data. Otherwise, at box 1115, Figure 4 Mechanism 340 can be used to reduce the size of this block. Figure 4 The bias fraction is 420. As discussed above, in some embodiments of this disclosure, if the bias fraction is greater than... Figure 3 If the threshold is 430, then Figure 4 The mechanism 340 can only decrease Figure 3 The bias fraction is 420; in other embodiments of this disclosure, Figure 4 The mechanism 340 can be disregarded Figure 4 Decrease when the threshold is 430 Figure 3 The bias fraction is 420. At box 1120, Figure 4 Mechanism 340 can be checked to view Figure 4 Is the bias score of 420 greater than... Figure 4 The threshold is 430. If Figure 4 The bias score of 420 is at least equal to Figure 3 If the threshold of 430 is the same, then at box 1125, Figure 1 Mechanism 340 can switch the block's bias mode to device bias mode. Either way, processing can then terminate (by sending...). Figure 1 Device 135 provides access to data.

[0097] As discussed above, in some embodiments of this disclosure, even Figure 3 The data blocks in storage device 120 are in device bias mode. Figure 4 The mechanism 340 can also be reduced. Figure 12 The bias fraction is 420. In such embodiments of this disclosure, box 1110 may be omitted, wherein the processing always proceeds to box 1115, as shown by dashed line 1130.

[0098] Figure 1 Examples of embodiments of the present disclosure are shown for use in Figure 12 A flowchart illustrating an example process for switching the bias mode of pages in the execution region of storage device 120. Figure 1 In the middle, at position 1205, Figure 1 Storage device 120 can be used from Figure 3 Device 135 receives a request to access the first data block. At box 1210, Figure 1 Mechanism 340 can recognize Figure 3 The second data block in storage device 120. The first and second blocks can be part of a region and can be contiguous: that is, the first and second blocks can share a common boundary or be in contact. At box 1215, Figure 1 Mechanism 340 can switch the bias mode of the second block to the device bias mode, which is expected to...Figure 13 Device 135 may also want to access the second block.

[0099] Figure 1 Examples of embodiments of the present disclosure are shown for use in Figure 13 A flowchart illustrating an example process by which storage device 120 identifies pages in a region used for bias mode switching. Figure 1 In the middle, at position 1305, Figure 3 Storage device 120 can receive requests to access data blocks within a region. This block can be a cache line, page, block, superblock, or any other defined portion of a region. At box 1310, Figure 1 Mechanism 340 can identify a second block adjacent to the first block, allowing the second block to be switched to device bias mode for faster speed. Figure 14 The expected access to device 135.

[0100] Figure 1 Examples of embodiments of the present disclosure are shown for use in Figure 8 Storage device 120 management Figure 14 A flowchart of an example process for the eavesdropping filter 725. Figure 1 In the middle, at position 1405, Figure 1 Storage device 120 can be used from Figure 3 The processor 110 receives a request to access a data block. At box 1410, Figure 7 The mechanism 340 can be updated. Figure 1 The listening filter 725 can detect... Figure 15 The access requested by processor 110 is reflected in the data block.

[0101] Figure 1 Examples of embodiments of the present disclosure are shown for use in Figure 8 Storage device 120 update Figure 15 A flowchart of an example process for entries in the eavesdropping filter 725. Figure 1 It can indicate when Figure 1 The host 105 request accesses data that has not been requested before, data that has not been requested for a period of time, or Figure 1 The host 105 had previously been instructed not to be... Figure 15 The operation is performed when the host 105 caches data.

[0102] exist Figure 7 In the middle, at position 1505, Figure 8 The snooping filter high-speed buffer controller 720 can Figure 7 Entry 815 added Figure 7 The 725 eavesdropping filter. If... Figure 8 The snooping filter 725 does not yet include the block in question.Figure 7 If entry 815, then box 1505 can occur: if Figure 8 The snooping filter 725 already includes the block in question. Figure 7 If the entry is 815, then box 1505 can be skipped, as shown by the dashed line 1510.

[0103] At position 1515, Figure 1 The snooping filter cache controller 720 can Figure 1 The data blocks in storage device 120 are switched to host-biased mode. If Figure 7 If the data blocks in storage device 120 are already in host-biased mode, then box 1515 can be skipped, as shown by dashed line 1520. Finally, at box 1525, Figure 8 The snooping filter cache controller 720 can be configured Figure 8 805 and / or cache Figure 1 Cleaning 810 to indicate Figure 1 Is host 105 currently caching the data block in question and / or Figure 16 Has host 105 already modified (or will modify) the data?

[0104] Figure 1 Examples of embodiments of the present disclosure are shown for use in Figure 8 Storage device 120 from Figure 7 A flowchart illustrating an example process of the snooping filter 725 removing entries. In some embodiments of the invention, when Figure 7 The listening filter 725 was filled (i.e., Figure 8 The snooping filter high-speed buffer controller 720 wants to... Figure 7 Entry 815 added Figure 7 The listening filter 725, but... Figure 8 The listening filter 725 does not exist. Figure 16 When there is a free entry (815), it can be used Figure 7 The example process shown; in other embodiments of the invention, whenever Figure 7 The snooping filter high-speed buffer controller 720 wants to get from Figure 8 725 Ejection Filter Figure 16 When it comes to item 815, it can be used Figure 7 The example process shown, even Figure 8 The 725 snooping filter currently has Figure 16 Some of the available entries are 815.

[0105] exist Figure 7 In the middle, at position 1605, Figure 7 The snooping filter high-speed buffer controller 720 can be selectedFigure 8 The listening filter 725 Figure 7 Entry 815 is used for expulsion. Figure 8 The snooping filter cache controller 720 can use any desired eviction policy selection. Figure 7 Entry 815 is used for eviction: for example, the Least Recently Used (LRU) policy, the Least Frequently Used (LFU) policy, or any other desired eviction policy. At box 1610, Figure 1 The snooping filter cache controller 720 can determine Figure 8 Whether host 105 has modified the data blocks can be determined from... Figure 1 Cleaning 810 is confirmed. If Figure 7 If host 105 has modified the data, then in box 1615, Figure 1 The snooping filter cache controller 720 can send a write-back invalid request to make Figure 1 Host 105 will send the updated data back Figure 1 Storage device 120. If Figure 7 If host 105 has not yet modified the data, then in box 1620, Figure 1 The snooping filter cache controller 720 can send invalid requests to make Figure 7 Host 105 deletes any cached copies of the data block (which may no longer be current). Finally, at box 1625, Figure 7 The snooping filter high-speed buffer controller 720 can be used from Figure 8 725 Ejection Filter Figure 1 Entry 815.

[0106] The implied meaning in boxes 1610, 1615 and 1620 is Figure 1 The data blocks in storage device 120 are in host-biased mode, and Figure 1 Host 105 caches at least the data from Figure 8 A copy of the data blocks of storage device 120, which can be obtained from Figure 1 The cache error 805 has been confirmed. If... Figure 1 If the data blocks in storage device 120 are in device-biased mode, then host 105 does not cache the data blocks, let alone modify them, and can skip boxes 1610, 1615, and 1620. Similarly, even Figure 1 The data blocks in storage device 120 are in host-biased mode, if Figure 1 If host 105 does not have cached data blocks, then Figure 17 Host 105 can also skip boxes 1610, 1615 and 1620 without modifying the data.

[0107] Figure 1 Examples of embodiments of the present disclosure are shown for use in Figure 8 Storage device 120 processing Figure 17 A flowchart illustrating an example process for managing access to the eavesdropping filter 725. Figure 7 In the middle, at position 1705, Figure 7 The snooping filter cache controller 720 can receive block-level protocols to access snooping filter 725. For example, the block-level protocol request can be issued as a CXL.io request. Finally, at box 1710, Figure 7 The snooping filter cache controller 720 can handle block-level protocol requests. Examples of such requests might include queries about... Figure 8 The listening filter 725 Figure 7 The number of entries 815 Figure 8 Does the snooping filter 725 contain information about a specific data block? Figure 7 Entry 815, from Figure 8 725 Ejection Filter Figure 7 Entry 815, or reset Figure 8 The listening filter 725 Figures 9-17 Some information from entry 815.

[0108] exist Figures 4-17 Some embodiments of the present disclosure are shown in the figures. However, those skilled in the art will recognize that other embodiments of the present disclosure are possible by changing the order of the boxes, by omitting boxes, or by including links not shown in the figures. All such variations of the flowcharts, whether explicitly described or not, are considered embodiments of the present disclosure.

[0109] The above Figure 8 Various embodiments of this disclosure have been described. These embodiments of the disclosure can be used alone or in combination. For example, Figure 6 The 725 snooping filter can be compared with the above reference. Figures 12-13 and ​ The described look-ahead bias mode switching is used in conjunction with other methods to determine which pages can be simply invalidated and which pages can be written back to invalidate before the device can process the data on it.

[0110] Embodiments of this disclosure may include a mechanism for managing the bias mode of data in a storage device. This mechanism may include a bias score table to track the bias score of data blocks and may switch the bias mode of data blocks when the bias score reaches an appropriate threshold. Alternatively, the mechanism may determine when a device is accessing a data block in a region and may begin changing the bias mode of other data blocks in that region in the background to accelerate device access to data. Alternatively, the mechanism may include a snooping filter that tracks which data blocks have been cached by the host processor and which data blocks are being modified by the host processor. If a block is evicted from the snooping filter, the snooping filter may then request the host processor to invalidate or write back the data from the host processor's cache. Embodiments of this disclosure provide technical advantages by accelerating the transition from a host-biased mode to a device-biased mode (or vice versa) based on how data is accessed from the storage device.

[0111] In Compute Fast Link (CXL) Type 2 devices with a consistency protocol between the host and accelerator devices, two bias modes are defined for shared memory addresses. When the memory is in host-biased mode, the host is responsible for consistency, and the device can query the state before accessing the memory. Host-biased mode favors host access, even if the memory can be physically located on either the device or the host. In device-biased mode, the device is responsible for its consistent state, and the memory can change to host-biased mode after the host accesses it. Device-biased mode enables fast access from the accelerator to the device without involving the host. Depending on the data processing, a shared address can start in host-biased mode, but change to device-biased mode for acceleration, and then change back to host-biased mode once acceleration is complete. When changing from host-biased mode to device-biased mode, the CPU cache can be invalidated to maintain data consistency.

[0112] Invalidating a cache can negatively impact overall performance. Invalidating a valid cache may be relevant.

[0113] The CXL protocol can define the concept of memory bias, but it does not define specific methods for managing bias. The details of bias management—the granularity of bias table entries, the mechanism for bias mode switching, or the use cases of bias modes in the actual acceleration framework—are left to the manufacturer's implementation.

[0114] Bias mode switching can incur overhead on the overall consistency protocol. Access modes and memory management granularity can vary depending on the application. For example, for a large address range switching from host-biased to device-biased, flooding the host CPU with invalid requests around the same time could affect other operations the CPU is performing at that time. Furthermore, if the device knows which lines are cached, it may not need to blindly invalidate the entire address range.

[0115] Here, three methods are proposed, and they can be used in different scenarios.

[0116] 1) Hardware speculative bias switch based on locality counter.

[0117] In addition to the basic offset bits for approximately 4KB pages per offset table, extra statistics can be maintained to track host and device access. These statistics can indicate the number of times a host or device accesses that memory page. If an access meets a threshold, the offset of that hot data is switched to benefit its users by reducing overall access overhead. This approach is a general page-flipping mechanism.

[0118] 2) Background offset switching when flipping sequential areas.

[0119] When regions that may involve switching between host bias and device bias are accessed sequentially, bias switching can occur in the background after some initial pages. This background bias switching can improve latency for device applications, allowing them to start earlier rather than waiting for the entire region to switch from host bias to device bias. This approach can provide improved performance for sequential access to large memory regions in a single operation.

[0120] 3) Selective bias switching with a listening filter

[0121] When invalid cache lines are issued during a switch from host-biased to device-biased architecture, the number of invalid cache lines can significantly impact CPU performance. Enabling a snooping filter to track which lines in the CPU cache allows the device to flush data more accurately and avoids unnecessary over-flushing. This approach can provide improved performance when data sharing between the host and the accelerator is minimized.

[0122] Bias switching can be performed per cache line (approximately 64B), per host-managed device memory (HDM) page (approximately 4KB), or per region (multiple pages).

[0123] The device can operate correctly in host-biased mode. However, host-biased mode may require remote lookups of device memory accesses at the host cache. Accessing the host cache can be time-consuming, thus slowing down device access to memory. On the other hand, while device bias provides improved latency for device accesses to memory, it can lead to corrupted consistency.

[0124] Bias switching ensures cache consistency to prevent any data inconsistencies between device HDM data and host memory data. Before switching from host bias to device bias, the device can send invalid requests to the host to ensure that the host cache does not contain device memory.

[0125] Fraction-based bias switching is a hardware-assisted method in which the hardware can predict what the optimal bias mode is for the next device memory access. Each page can have a 4-bit indicator: bit [0] can identify the bias mode (e.g., 0: host bias; 1: device bias); bits [3:1] can store the bias score (default = 0 after the bias mode changes).

[0126] Each time a host accesses a page, the score can increment by 1. Each time a device accesses a page, the score can decrement by 1. If the score reaches the maximum positive value (determined by a certain threshold) and the device is in device bias mode, the bias mode can be switched to host bias mode. If the score reaches the maximum negative value (determined by a certain threshold) and the device is in host bias mode, the bias mode can be switched to device bias mode.

[0127] Some applications (e.g., database accelerators) may involve bias switching across an entire region, which could include thousands of contiguous (or non-contiguous) pages. Page bias switching can involve the device invalidating the host cache of the cache line belonging to that page before the page can be safely switched from host-biased to device-biased mode.

[0128] If the bias of multiple consecutive pages needs to be switched, and the device engine is operating on the current page (in device bias mode), the bias switch can be anticipated and invalid requests can be sent in anticipation of the bias switch on the next page. The task of preparing the page to safely switch from host bias to device bias can be done primarily in the background without the potential penalty of page invalidation.

[0129] In a brute-force hardware approach, the device can issue invalid / write-back invalid requests for each cache line on a page that is about to undergo a bias switch. Fine-grained control over snoop filters on the device can track all cache lines that have been accessed by the host and issue invalid requests only on those affected cache lines (not the entire page). A fixed-size snoop filter catalog (e.g., 1 million cache lines) can be implemented using a private region of dynamic random access memory (DRAM) with a fast-access on-chip snoop filter cache.

[0130] The snooping filter can implement data structures and replacement algorithms, where a new cache line can replace an existing cache line. The device can send an invalidation request for the replaced cache line.

[0131] To ensure proper switching from host bias to device bias, all shared cache lines residing in the host cache can be invalidated or written back to invalidate before the bias flip.

[0132] For some specific applications, the device may only send invalid requests to the host because the accelerator's output area can be restarted.

[0133] Invalid Policy: A device may send an invalid request to the host for any shared copy.

[0134] Return invalidation strategy: The device can issue a Read-to-Own request (to invalidate the cache line and obtain the latest data), and then issue a write-back to the device's attached area on the dirty copy.

[0135] A small directed mapping snoop filter cache (e.g., approximately 256KB) can be implemented to take advantage of the sequential access nature of the affected regions.

[0136] When the snooping filter is full, the replacement algorithm can choose to evict existing rows (by sending invalid / write-back invalid requests to the host) to make room for the new rows to be installed.

[0137] The hardware engine can read snoop filter entries from the on-chip cache, send invalid write-back requests to the host, and prefetch new data from DRAM, all of which can be done roughly simultaneously.

[0138] Support hooks for bias mode toggling during software startup may include: diagnostic read / write access to the control and status register (CSR) of the snoop filter catalog, write-back invalidation start for software startup, and write-back invalidation completion for hardware control. The CSR register can be used, for example, to log errors, set parameters for requested operations, and provide diagnostic access to the device.

[0139] The following discussion is intended to provide a brief general description of one or more suitable machines in which certain aspects of this disclosure may be implemented. One or more machines may be controlled at least in part by input from conventional input devices such as keyboards, mice, etc., and by instructions received from another machine, interaction with a virtual reality (VR) environment, biometric feedback, or other input signals. As used herein, the term "machine" is intended to broadly encompass a single machine, a virtual machine, or a system of communication-coupled machines, virtual machines, or devices operating together. Exemplary machines include computing devices such as personal computers, workstations, servers, portable computers, handheld devices, telephones, tablets, etc., and transportation devices such as private or public transportation, such as cars, trains, driver's cabs, etc.

[0140] One or more machines may include embedded controllers, such as programmable or non-programmable logic devices or arrays, application-specific integrated circuits (ASICs), embedded computers, smart cards, etc. One or more machines may utilize one or more connections to one or more remote machines, such as via network interfaces, modems, or other communication coupling. Machines may be interconnected via physical and / or logical networks such as intranets, the Internet, local area networks, wide area networks, etc. Those skilled in the art will understand that network communications can utilize a variety of wired and / or wireless short-range or long-range carriers and protocols, including radio frequency (RF), satellite, microwave, IEEE 802.11, optical, infrared, cable, laser, etc.

[0141] Embodiments of this disclosure can be described by reference to or in conjunction with associated data including functions, processes, data structures, applications, etc., which, when accessed by a machine, cause the machine to perform tasks or define abstract data types or low-level hardware contexts. The associated data can be stored, for example, in volatile and / or non-volatile memory (e.g., RAM, ROM, etc.), or in other storage devices and their associated storage media (including hard disk drives, floppy disks, optical storage, magnetic tape, flash memory, memory sticks, digital video disks, bio-memory disks, etc.). The associated data can be transmitted over a transmission environment (including physical and / or logical networks) in the form of packets, serial data, parallel data, propagated signals, etc., and can be used in compressed or encrypted formats. The associated data can be used in a distributed environment and stored locally and / or remotely for machine access.

[0142] Embodiments of this disclosure may include a tangible, non-transitory machine-readable medium comprising instructions executable by one or more processors, including instructions for performing elements of this disclosure as described herein.

[0143] The various operations described above can be performed by any suitable unit capable of performing the operations, such as various hardware and / or software components, circuits and / or modules. The software may include an ordered list of executable instructions for implementing logical functions and may be embodied in any processor-readable medium for use by or in conjunction with an instruction execution system, apparatus, or device (such as a single-core or multi-core processor or a system containing a processor).

[0144] The blocks or steps of methods or algorithms and functions described in conjunction with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or a combination of both. If implemented in software, the functionality may be stored as one or more instructions or code on or transmitted through a tangible, non-transitory computer-readable medium. The software module may reside in random access memory (RAM), flash memory, read-only memory (ROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), registers, hard disks, removable disks, CD-ROMs, or any other form of storage media known in the art.

[0145] Having described and illustrated the principles of this disclosure with reference to the illustrated embodiments, it will be appreciated that the illustrated embodiments may be modified in arrangement and detail without departing from these principles, and may be combined in any desired manner. Furthermore, although the foregoing discussion focuses on particular embodiments, other configurations are contemplated. In particular, even though expressions such as "according to an embodiment of this disclosure" are used herein, these phrases are generally intended to refer to the possibilities of embodiments and are not intended to limit this disclosure to particular embodiment configurations. As used herein, these terms may refer to the same or different embodiments that can be combined into other embodiments.

[0146] The foregoing illustrative embodiments should not be construed as limiting the scope of the disclosure. Although some embodiments have been described, those skilled in the art will readily understand that many modifications can be made to these embodiments without substantially departing from the novel teachings and advantages of this disclosure. Therefore, all such modifications are intended to be included within the scope of this disclosure as defined in the claims.

[0147] The embodiments disclosed herein may be extended to, but are not limited to, the following statements.

[0148] Statement 1. Embodiments of this disclosure include a storage device, comprising:

[0149] Storage for data;

[0150] The controller is used to manage access to data in memory; and

[0151] A mechanism for automatically managing the bias modes of data blocks in memory, the bias modes including one of a host bias mode and a device bias mode.

[0152] Statement 2. Embodiments of this disclosure include the storage device described in Statement 1, wherein the storage device supports a cache coherent interconnect protocol.

[0153] Statement 3. Embodiments of this disclosure include the storage device described in Statement 2, wherein the cache coherent interconnect protocol includes the compute fast link (CXL) protocol.

[0154] Statement 4. Embodiments of this disclosure include the storage device according to Statement 1, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to issue one of an invalid request or a write-back invalid request for the data blocks in the memory to the host processor, at least in part, based on the bias mode of the data blocks in the memory being switched to a device bias mode.

[0155] Statement 5. Embodiments of this disclosure include the storage device described in Statement 1, wherein data blocks in the memory include a size.

[0156] Statement 6. Embodiments of this disclosure include the storage device described in Statement 5, wherein the size of data blocks in the memory comprises 4 kilobytes.

[0157] Statement 7. Embodiments of this disclosure include the storage device according to Statement 1, wherein the mechanism for automatically managing the bias pattern of data blocks in the memory includes the bias fraction of the data blocks in the memory.

[0158] Statement 8. Embodiments of this disclosure include the storage device according to Statement 7, wherein a mechanism for automatically managing the bias pattern of data blocks in the memory is configured to adjust the bias fraction of the data blocks in the memory based at least in part on an access to the data blocks in the memory by one of the device or host processors.

[0159] Statement 9. Embodiments of this disclosure include the storage device described in Statement 8, wherein the storage device includes the device.

[0160] Statement 10. Embodiments of this disclosure include the storage device described in Statement 8, wherein the device includes an accelerator.

[0161] Statement 11. Embodiments of this disclosure include the storage device according to Statement 7, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to change the bias mode of the data blocks in the memory to a host bias mode at least in part based on a first threshold bias score, and to change the bias mode of the data blocks in the memory to a device bias mode at least in part based on a second threshold bias score.

[0162] Statement 12. Embodiments of this disclosure include the storage device described in Statement 7, wherein the mechanism for automatically managing the bias mode of data blocks in the memory further includes the bias mode for the data blocks in the memory.

[0163] Statement 13. Embodiments of this disclosure include the storage device according to Statement 7, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to set the bias score to a default value upon reset.

[0164] Statement 14. Embodiments of this disclosure include the storage device described in Statement 13, wherein the default value of the bias fraction includes a zero value.

[0165] Statement 15. Embodiments of this disclosure include the storage device according to Statement 7, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to receive a reset request regarding the bias score of the data blocks in the memory.

[0166] Statement 16. Embodiments of this disclosure include the storage device according to Statement 15, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to receive a reset request from an application for the bias score of the data blocks in the memory.

[0167] Statement 17. Embodiments of this disclosure include the storage device described in Statement 7, and further include a second memory for bias fractions of data blocks in the memory.

[0168] Statement 18. Embodiments of this disclosure include the storage device described in Statement 17, wherein the memory includes the second memory.

[0169] Statement 19. Embodiments of this disclosure include the storage device according to Statement 1, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to automatically manage the bias mode of data blocks in the memory based at least in part on device access to a second data block in the memory.

[0170] Statement 20. Embodiments of this disclosure include the storage device described in Statement 19, wherein the storage device includes the device.

[0171] Statement 21. Embodiments of this disclosure include the storage device described in Statement 19, wherein the device includes an accelerator.

[0172] Statement 22. Embodiments of this disclosure include the storage device according to Statement 19, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to automatically manage the bias mode of data blocks in the memory based at least in part on a device bias mode requested by the device regarding a second data block in the memory.

[0173] Statement 23. Embodiments of this disclosure include the storage device described in Statement 19, wherein:

[0174] The second data block in the memory includes the first page;

[0175] The data block in the memory includes a second page; and

[0176] The mechanism for automatically managing the bias pattern of data blocks in the memory is configured to automatically manage the bias pattern of data blocks in the memory based at least in part on the fact that the second page is contiguous with the first page.

[0177] Statement 24. Embodiments of this disclosure include the storage device described in Statement 19, wherein:

[0178] The second data block in the memory includes a first portion of the area of ​​data in the memory;

[0179] The data block in the memory includes a second portion of the region of data in the memory; and

[0180] The mechanism for automatically managing the bias pattern of data blocks in memory is configured to automatically manage the bias pattern of data blocks in memory based at least in part on the fact that a first portion of the region and a second portion of the region are both part of the region.

[0181] Statement 25. Embodiments of this disclosure include the storage device according to Statement 19, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to automatically manage the bias mode of data blocks in the memory when the device is expected to access data blocks in the memory.

[0182] Statement 26. Embodiments of this disclosure include the storage device according to Statement 25, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to automatically manage the bias mode of data blocks in the memory before the device accesses the data blocks in the memory.

[0183] Statement 27. Embodiments of this disclosure include the storage device according to Statement 19, wherein the device is configured to access a data block in the memory before a second data block in the memory is in a device bias mode.

[0184] Statement 28. Embodiments of this disclosure include the storage device according to Statement 19, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured as a background operation of the storage device to automatically manage the bias mode of data blocks in the memory.

[0185] Statement 29. Embodiments of this disclosure include the storage device according to Statement 1, wherein the mechanism for automatically managing the bias pattern of data blocks in the memory includes a snooping filter that includes entries about the data blocks in the memory accessed by the host processor.

[0186] Statement 30. Embodiments of this disclosure include the storage device described in Statement 29, wherein entries relating to data blocks in the memory identify that the data blocks in the memory have not been modified by a host processor.

[0187] Statement 31. Embodiments of this disclosure include the storage device according to Statement 30, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to update entries about data blocks in the memory read by the host processor, at least in part, based on host processor access to the data blocks in the memory.

[0188] Statement 32. Embodiments of this disclosure include the storage device according to Statement 30, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to invalidate the data blocks in the memory from the host processor's cache memory by at least in part based on snooping filters evicting entries for the data blocks in the memory.

[0189] Statement 33. Embodiments of this disclosure include the storage device described in Statement 29, wherein entries relating to data blocks in the memory identify that data blocks in the memory are modified by a host processor.

[0190] Statement 34. Embodiments of this disclosure include the storage device according to Statement 33, wherein data blocks in the memory are configured to update entries about data blocks in the memory modified by the host processor, at least in part, based on host processor access to the data blocks in the memory.

[0191] Statement 35. Embodiments of this disclosure include the storage device according to Statement 33, wherein a mechanism for automatically managing the bias mode of data blocks in the memory is configured to invalidate data blocks in the memory by eviction of entries concerning data blocks in the memory based at least in part on a snooping filter.

[0192] Statement 36. Embodiments of this disclosure include the storage device described in Statement 29, wherein the snooping filter includes an eviction policy.

[0193] Statement 37. Embodiments of this disclosure include the storage device described in Statement 36, wherein the eviction policy of the snooping filter differs from a second eviction policy of the host processor's cache.

[0194] Statement 38. Embodiments of this disclosure include the storage device according to Statement 29, further including a second memory for a snooping filter.

[0195] Statement 39. Embodiments of this disclosure include the storage device described in Statement 38, wherein the second memory includes dynamic random access memory (DRAM).

[0196] Statement 40. Embodiments of this disclosure include the storage device described in Statement 38, wherein the second memory includes one of volatile second memory or non-volatile second memory.

[0197] Statement 41. Embodiments of this disclosure include the storage device described in Statement 38, wherein:

[0198] The eavesdropping filter consists of a first part and a second part;

[0199] The second memory contains a first portion of the eavesdropping filter; and

[0200] The memory contains a second part of the eavesdropping filter.

[0201] Statement 42. Embodiments of this disclosure include the storage device described in Statement 38, wherein the mechanism for automatically managing the bias patterns of data blocks in the memory further includes a snooping filter cache controller for managing snooping filters.

[0202] Statement 43. Embodiments of this disclosure include a storage device according to Statement 42, wherein a snooping filter cache controller is configured to add entries about data blocks in the memory to a snooping filter and remove entries about data blocks in the memory from the snooping filter.

[0203] Statement 44. Embodiments of this disclosure include a storage device according to Statement 42, wherein a snooping filter cache controller is configured to issue an invalid request or write-back invalid request to a host processor based at least in part on entries evicted from the snooping filter concerning data blocks in the memory.

[0204] Statement 45. Embodiments of this disclosure include the storage device described in Statement 29, wherein the storage device supports a cache coherent interconnect protocol, the cache coherent interconnect protocol including a block-level protocol and a byte-level protocol, the block-level protocol supporting access to snoop filters.

[0205] Statement 46. Embodiments of this disclosure include the storage device described in Statement 45, wherein a block-level protocol supports application access to snooping filters.

[0206] Statement 47. Embodiments of this disclosure include a method comprising:

[0207] At the storage device, a request to access a data block in the storage device's memory is received, the request being received from a source;

[0208] Identify the bias fraction of data blocks in the memory of the storage device; and

[0209] The bias fraction of the data blocks in the memory of the storage device is adjusted at least in part based on the source of the request.

[0210] Statement 48. Embodiments of this disclosure include the method according to Statement 47, wherein receiving a request at the storage device to access a data block in the memory of the storage device comprises: receiving at the storage device a request to access a data block in the memory of the storage device, the request being received from a host processor.

[0211] Statement 49. Embodiments of this disclosure include the method according to Statement 48, wherein adjusting the bias fraction of a data block in the memory of the storage device based at least in part on the source of the request comprises: incrementing the bias fraction of the data block in the memory of the storage device based at least in part on the source including a host processor.

[0212] Statement 50. Embodiments of this disclosure include the method according to Statement 49, wherein incrementing the bias fraction of a data block in the memory of the storage device based at least in part on the source including a host processor comprises: determining a bias pattern of the data block in the memory of the storage device, including a device bias pattern.

[0213] Statement 51. Embodiments of this disclosure include the method according to Statement 50, further comprising: switching the bias mode of the data blocks in the memory of the storage device to a host bias mode, at least in part based on the fact that the data blocks in the memory of the storage device are in a device bias mode.

[0214] Statement 52. Embodiments of this disclosure include the method described in statement 49, further comprising: switching the bias mode of a data block in the memory of the storage device to a host bias mode based at least in part on a bias score exceeding a threshold.

[0215] Statement 53. Embodiments of this disclosure include the method according to Statement 49, wherein incrementing the bias score of a data block in the memory of the storage device based at least in part on the source including a host processor comprises: incrementing the bias score of the data block in the memory of the storage device based at least in part on the source including a host processor and the bias score being less than a threshold.

[0216] Statement 54. Embodiments of this disclosure include the method according to Statement 48, wherein adjusting the bias fraction of a data block in the memory of the storage device based at least in part on the source of the request comprises:

[0217] Determining the bias mode of data blocks in the memory of the storage device includes host bias mode; and

[0218] The bias fraction of data blocks in the memory of the storage device remains constant, based at least in part on the fact that the source includes a host processor and the bias mode includes a host bias mode.

[0219] Statement 55. Embodiments of this disclosure include the method according to Statement 47, wherein receiving a request at the storage device to access a data block in the memory of the storage device comprises: receiving at the storage device a request for accessing a data block in the memory of the storage device, the request being received from the device.

[0220] Statement 56. Embodiments of this disclosure include the method according to Statement 55, wherein the storage device includes the device.

[0221] Statement 57. Embodiments of this disclosure include the method according to Statement 55, wherein the device includes an accelerator.

[0222] Statement 58. Embodiments of this disclosure include the method according to Statement 55, wherein adjusting the bias fraction of a data block in the memory of the storage device based at least in part on the source of the request comprises: decreasing the bias fraction of the data block in the memory of the storage device based at least in part on the source including the device.

[0223] Statement 59. Embodiments of this disclosure include the method according to Statement 58, wherein reducing the bias fraction of the memory of the storage device based at least in part on the source including the device comprises: determining the bias pattern of data blocks in the memory of the storage device, including a host bias pattern.

[0224] Statement 60. Embodiments of this disclosure include the method according to Statement 59, further comprising: switching the bias mode of the data blocks in the memory of the storage device to a device bias mode, at least in part based on the fact that the data blocks in the memory of the storage device are in a host bias mode.

[0225] Statement 61. Embodiments of this disclosure include the method according to Statement 58, further comprising: switching the bias mode of a data block in the memory of the storage device to a device bias mode based at least in part on a bias score exceeding a threshold.

[0226] Statement 62. Embodiments of this disclosure include the method according to Statement 58, wherein reducing the bias fraction of a data block in the memory of the storage device based at least in part on the source including the device comprises: reducing the bias fraction of a data block in the memory of the storage device based at least in part on the source including the device and the bias fraction being greater than a threshold.

[0227] Statement 63. Embodiments of this disclosure include the method according to Statement 55, wherein adjusting the bias fraction of data blocks in the memory of the storage device based at least in part on the source of the request comprises:

[0228] Determining the bias mode of data blocks in the memory of the storage device includes the device bias mode; and

[0229] The bias fraction of data blocks in the memory of the storage device remains constant, at least in part based on the fact that the source includes the device and the bias mode includes a device bias mode.

[0230] Statement 64. Embodiments of this disclosure include a method comprising:

[0231] A request to access a first data block in the memory of the storage device is received at the storage device, the request being received from the device;

[0232] Identify the second data block in the memory of the storage device; and

[0233] Switch the bias mode of the second data block in the memory of the storage device to the device bias mode.

[0234] Statement 65. Embodiments of this disclosure include the method according to Statement 64, wherein the storage device includes the device.

[0235] Statement 66. Embodiments of this disclosure include a method according to Statement 64, wherein the device includes an accelerator.

[0236] Statement 67. Embodiments of this disclosure include the method according to Statement 64, wherein the request includes a bias request for switching the bias mode of a first data block in the memory of the storage device to a device bias mode.

[0237] Statement 68. Embodiments of this disclosure include the methods described according to Statement 64, wherein:

[0238] Receiving a request at the storage device for accessing a first data block in the memory of the storage device includes: receiving a request at the storage device for accessing a first page of data in the memory of the storage device;

[0239] Identifying the second data block in the memory of the storage device includes identifying the second page of data in the memory of the storage device.

[0240] Statement 69. Embodiments of this disclosure include a method according to Statement 68, wherein identifying a second page of data in the memory of the storage device comprises: identifying the second page of data in the memory of the storage device as contiguous to a first page of data in the memory of the storage device.

[0241] Statement 70. Embodiments of this disclosure include the methods described according to Statement 64, wherein:

[0242] Receiving a request at the storage device for accessing a first data block in the memory of the storage device includes: receiving a request at the storage device for accessing a first portion of a region of data in the memory of the storage device;

[0243] Identifying a second data block in the memory of the storage device includes a second portion of the region that identifies the data in the memory of the storage device.

[0244] Statement 71. Embodiments of this disclosure include the method according to Statement 70, wherein identifying a second portion of a region of data in the memory of the storage device comprises: identifying the second portion of the region of data in the memory of the storage device as adjoining to a first portion of the region of data in the memory of the storage device.

[0245] Statement 72. Embodiments of this disclosure include the method according to Statement 64, wherein switching the bias mode of a second data block in the memory of the storage device to a device bias mode comprises: switching the bias mode of the second data block in the memory of the storage device to a device bias mode when it is desired that the device accesses the second data block in the memory of the storage device.

[0246] Statement 73. Embodiments of this disclosure include the method according to Statement 64, wherein the device is configured to access a first data block in the memory of the storage device before a second data block in the memory of the storage device is in a device bias mode.

[0247] Statement 74. Embodiments of this disclosure include the method according to Statement 64, wherein switching the bias mode of a second data block in the memory of the storage device to a device bias mode comprises: as a background operation of the storage device, switching the bias mode of the second data block in the memory of the storage device to a device bias mode.

[0248] Statement 75. Embodiments of this disclosure include a method comprising:

[0249] At the storage device, a request is received from the host processor to access a data block in the memory of the storage device; and

[0250] Based at least in part on the request from the host processor, the entries in the snooping filter of the storage device for the data blocks in the memory of the storage device are updated.

[0251] Statement 76. Embodiments of this disclosure include the method according to Statement 75, wherein the snooping filter is stored in a second memory of a storage device.

[0252] Statement 77. Embodiments of this disclosure include the method according to Statement 76, wherein the second memory of the storage device includes dynamic random access memory (DRAM).

[0253] Statement 78. Embodiments of this disclosure include the method according to Statement 76, wherein the second memory includes one of volatile second memory or non-volatile second memory.

[0254] Statement 79. Embodiments of this disclosure include the methods described according to Statement 76, wherein:

[0255] The eavesdropping filter consists of a first part and a second part;

[0256] The second memory of the storage device includes a first portion of the eavesdropping filter; and

[0257] The memory of the storage device contains a second part of the eavesdropping filter.

[0258] Statement 80. Embodiments of this disclosure include the method according to Statement 75, wherein updating entries in the snooping filter of the storage device regarding data blocks in the memory of the storage device, at least in part based on a request from the host processor, comprises: adding entries regarding data blocks in the memory of the storage device to the snooping filter of the storage device, at least in part based on the snooping filter not including entries regarding data blocks in the memory of the storage device.

[0259] Statement 81. Embodiments of this disclosure include the method according to Statement 80, wherein updating entries in the snooping filter of the storage device regarding data blocks in the memory of the storage device based at least in part on a request from the host processor further includes: switching the bias mode of the data blocks in the memory of the storage device to a host bias mode.

[0260] Statement 82. Embodiments of this disclosure include the method according to Statement 75, wherein the request includes identifiers of data blocks in the memory of the storage device that the host processor does not intend to modify.

[0261] Statement 83. Embodiments of this disclosure include the method according to Statement 82, wherein updating entries in the snooping filter of the storage device regarding data blocks in the memory of the storage device based at least in part on a request from the host processor includes updating entries in the snooping filter of the storage device's memory that have not been modified by the host processor.

[0262] Statement 84. Embodiments of this disclosure include the method according to Statement 75, wherein the request includes an identifier of a data block in the memory of the storage device that the host processor intends to modify.

[0263] Statement 85. Embodiments of this disclosure include the method according to Statement 84, wherein updating entries in the snooping filter of the storage device regarding data blocks in the memory of the storage device, based at least in part on a request from the host processor, includes updating entries in the snooping filter of the storage device regarding data blocks in the memory of the storage device that have been modified by the host processor.

[0264] Statement 86. Embodiments of this disclosure include the method described in statement 75, further comprising evictping entries from a snooping filter on the storage device.

[0265] Statement 87. Embodiments of this disclosure include the method according to Statement 86, wherein eviction of entries from the snooping filter of the storage device includes eviction of entries from the snooping filter of the storage device based at least in part on the eviction policy of the snooping filter.

[0266] Statement 88. Embodiments of this disclosure include the method according to Statement 87, wherein the eviction policy of the snooping filter differs from a second eviction policy of the host processor's cache.

[0267] Statement 89. Embodiments of this disclosure include the method according to Statement 86, wherein removing entries from the snooping filter of the storage device includes sending invalid requests for data blocks in the memory of the storage device from the storage device to the host processor.

[0268] Statement 90. Embodiments of this disclosure include the method according to Statement 89, wherein sending an invalid request for a data block in the memory of a storage device from the storage device to a host processor comprises: sending an invalid request for a data block in the memory of the storage device from the storage device to the host processor based at least in part on an entry in a snooping filter indicating that the data block in the memory of the storage device has not been modified by the host processor.

[0269] Statement 91. Embodiments of this disclosure include the method according to Statement 86, wherein removing entries from the snooping filter of the storage device includes sending a write-back invalidation request for a data block in the memory of the storage device from the storage device to the host processor.

[0270] Statement 92. Embodiments of this disclosure include the method according to Statement 91, wherein sending a write-back invalidation request for a data block in memory of a storage device from the storage device to the host processor includes sending the write-back invalidation request for the data block in memory of the storage device from the storage device to the host processor based at least in part on an entry in a snooping filter indicating that the data block in memory of the storage device has been modified by the host processor.

[0271] Statement 93. Embodiments of this disclosure include the methods described according to Statement 75, and further include:

[0272] Receive block-level protocol requests for access to the snooping filter at the storage device; and

[0273] Processing block-level protocol requests,

[0274] The storage device supports a cache coherent interconnect protocol, which includes block-level and byte-level protocols.

[0275] Statement 94. Embodiments of this disclosure include an article of manufacture comprising a non-transitory storage medium storing instructions that, when executed by a machine, cause:

[0276] At the storage device, a request to access a data block in the storage device's memory is received, the request being received from a source;

[0277] Identify the bias fraction of data blocks in the memory of the storage device; and

[0278] The bias fraction of the data blocks in the memory of the storage device is adjusted at least in part based on the source of the request.

[0279] Statement 95. Embodiments of this disclosure include the article of manufacture according to Statement 94, wherein receiving a request to access a data block in the memory of the storage device at the storage device comprises: receiving a request to access a data block in the memory of the storage device at the storage device, the request being received from a host processor.

[0280] Statement 96. Embodiments of this disclosure include the article of manufacture according to Statement 95, wherein adjusting the bias fraction of a data block in the memory of the storage device based at least in part on the requested source comprises: incrementing the bias fraction of the data block in the memory of the storage device based at least in part on the source including a host processor.

[0281] Statement 97. Embodiments of this disclosure include the article of manufacture according to Statement 96, wherein incrementing the bias fraction of a data block in the memory of a storage device based at least in part on the source including a host processor includes: determining a bias pattern of the data block in the memory of the storage device, including a device bias pattern.

[0282] Statement 98. Embodiments of this disclosure include the article of manufacture according to Statement 97, wherein additional instructions are stored on the non-transitory storage medium, which, when executed by the machine, cause the bias mode of a data block in the memory of the storage device to be switched to a host bias mode.

[0283] Statement 99. Embodiments of this disclosure include the article of manufacture according to Statement 98, wherein switching the bias mode of a data block in the memory of a storage device to a host bias mode comprises: switching the bias mode of a data block in the memory of a storage device to a host bias mode at least in part based on a bias score exceeding a threshold.

[0284] Statement 100. Embodiments of this disclosure include the article of manufacture according to Statement 96, wherein incrementing the bias fraction of a data block in the memory of the storage device based at least in part on the source including a host processor comprises: incrementing the bias fraction of a data block in the memory of the storage device based at least in part on the source including a host processor and the bias fraction being less than a threshold.

[0285] Statement 101. Embodiments of this disclosure include the article of manufacture according to Statement 95, wherein adjusting the bias fraction of data blocks in the memory of the storage device based at least in part on the source of the request comprises:

[0286] Determining the bias mode of data blocks in the memory of a storage device includes host bias mode; and

[0287] The bias fraction of data blocks in the memory of the storage device remains constant, based at least in part on the fact that the source includes a host processor and the bias mode includes a host bias mode.

[0288] Statement 102. Embodiments of this disclosure include the article of manufacture according to Statement 94, wherein receiving a request at a storage device for accessing a data block in the memory of the storage device comprises: receiving a request at a storage device for accessing a data block in the memory of the storage device, the request being received from the device.

[0289] Statement 103. Embodiments of this disclosure include the article of manufacture according to Statement 102, wherein the storage device includes the device.

[0290] Statement 104. Embodiments of this disclosure include the article of manufacture according to Statement 102, wherein the device includes an accelerator.

[0291] Statement 105. Embodiments of this disclosure include the article of manufacture according to Statement 102, wherein adjusting the bias fraction of the data block in the storage of the storage device at least in part based on the source of the request comprises: decreasing the bias fraction of the data block in the storage of the storage device at least in part based on the source including the device.

[0292] Statement 106. Embodiments of this disclosure include the article of manufacture according to Statement 105, wherein reducing the bias fraction of a data block in the memory of a storage device, at least in part based on the source including the device, includes: determining the bias pattern of the data block in the memory of the storage device, including a host bias pattern.

[0293] Statement 107. Embodiments of this disclosure include the article of manufacture according to Statement 106, wherein additional instructions are stored on the non-transitory storage medium, which, when executed by the machine, cause the bias mode of a data block in the memory of the storage device to be switched to a device bias mode.

[0294] Statement 108. Embodiments of this disclosure include an article of manufacture according to Statement 107, wherein switching the bias mode of a data block in the memory of a storage device to a device bias mode includes switching the bias mode of a data block in the memory of a storage device to a device bias mode at least in part based on a bias score exceeding a threshold.

[0295] Statement 109. Embodiments of this disclosure include the article of manufacture according to Statement 105, wherein reducing the bias fraction of a data block in the memory of a storage device based at least in part on the source including the device comprises: reducing the bias fraction of a data block in the memory of a storage device based at least in part on the source including the device and the bias fraction being greater than a threshold.

[0296] Statement 110. Embodiments of this disclosure include the article of manufacture according to Statement 102, wherein adjusting the bias fraction of data blocks in the memory of the storage device based at least in part on the source of the request comprises:

[0297] Determining the bias mode of data blocks in the memory of a storage device includes the device bias mode; and

[0298] The bias fraction of data blocks in the memory of the storage device remains constant, at least in part based on the fact that the source includes a device and the bias mode includes a device bias mode.

[0299] Statement 111. One embodiment of this disclosure includes an article of manufacture comprising:

[0300] At the storage device, a request to access a first data block in the storage device's memory is received, the request being received from the device;

[0301] Identify the second data block in the memory of the storage device; and

[0302] Switch the bias mode of the second data block in the memory of the storage device to device bias mode.

[0303] Statement 112. Embodiments of this disclosure include the article of manufacture according to Statement 111, wherein the storage device includes the device.

[0304] Statement 113. Embodiments of this disclosure include the article of manufacture according to Statement 111, wherein the device includes an accelerator.

[0305] Statement 114. Embodiments of this disclosure include the article of manufacture according to Statement 111, wherein the request includes a bias request for switching the bias mode of a first data block in the memory of the storage device to a device bias mode.

[0306] Statement 115. Embodiments of this disclosure include the article of manufacture according to Statement 111, wherein:

[0307] Receiving a request at the storage device for accessing a first data block in the storage device's memory includes: receiving a request at the storage device for accessing a first page of data in the storage device's memory;

[0308] Identifying a second data block in the memory of a storage device includes identifying a second page of data in the memory of the storage device.

[0309] Statement 116. Embodiments of this disclosure include the article of manufacture according to Statement 115, wherein identifying a second page of data in the memory of the storage device includes identifying the second page of data in the memory of the storage device as contiguous to a first page of data in the memory of the storage device.

[0310] Statement 117. Embodiments of this disclosure include the article of manufacture according to Statement 111, wherein:

[0311] Receiving a request at the storage device for accessing a first data block in the memory of the storage device includes: receiving a request at the storage device for accessing a first portion of a region of data in the memory of the storage device;

[0312] The second data block in the memory of the identification storage device includes a second portion of the region in the memory of the identification storage device that contains the data.

[0313] Statement 118. Embodiments of this disclosure include the article of manufacture according to Statement 117, wherein identifying a second portion of a region of data in the memory of the storage device comprises: identifying the second portion of the region of data in the memory of the storage device as adjoining a first portion of the region of data in the memory of the storage device.

[0314] Statement 119. Embodiments of this disclosure include the article of manufacture according to Statement 111, wherein switching the bias mode of a second data block in the memory of a storage device to a device bias mode comprises: switching the bias mode of a second data block in the memory of a storage device to a device bias mode when the device is expected to access the second data block in the memory of the storage device.

[0315] Statement 120. Embodiments of this disclosure include the article of manufacture according to Statement 111, wherein the device is configured to access a first data block in the memory of the storage device before a second data block in the memory of the storage device is in a device bias mode.

[0316] Statement 121. Embodiments of this disclosure include the article of manufacture according to Statement 111, wherein switching the bias mode of a second data block in the memory of a storage device to a device bias mode comprises: switching the bias mode of a second data block in the memory of a storage device to a device bias mode as a background operation of the storage device.

[0317] Statement 122. One embodiment of this disclosure includes an article of manufacture comprising:

[0318] At the storage device, a request is received from the host processor to access a data block in the storage device's memory; and

[0319] The entries for data blocks in the storage device's memory are updated in the snooping filter, at least in part, based on requests from the host processor.

[0320] Statement 123. Embodiments of this disclosure include the article of manufacture according to Statement 122, wherein the eavesdropping filter is stored in a second memory of a storage device.

[0321] Statement 124. Embodiments of this disclosure include the article of manufacture according to Statement 123, wherein the second memory of the storage device includes dynamic random access memory (DRAM).

[0322] Statement 125. Embodiments of this disclosure include the article of manufacture according to Statement 123, wherein the second memory includes one of a volatile second memory or a non-volatile second memory.

[0323] Statement 126. Embodiments of this disclosure include the articles of manufacture according to Statement 123, wherein:

[0324] The eavesdropping filter consists of a first part and a second part;

[0325] The second memory of the storage device includes a first portion of the eavesdropping filter; and

[0326] The memory of the storage device includes a second part of the eavesdropping filter.

[0327] Statement 127. Embodiments of this disclosure include the article of manufacture according to Statement 122, wherein updating entries in the snooping filter of the storage device regarding data blocks in the memory of the storage device based at least in part on a request from the host processor includes: adding entries in the snooping filter of the storage device regarding data blocks in the memory of the storage device based at least in part on the snooping filter not including entries regarding data blocks in the memory of the storage device.

[0328] Statement 128. Embodiments of this disclosure include the article of manufacture according to Statement 127, wherein updating the entry for the data block in the storage device in the snooping filter of the storage device based at least in part on the request from the host processor further comprises switching the bias mode of the data block in the storage device for the storage device to a host bias mode.

[0329] Statement 129. Embodiments of this disclosure include the article of manufacture according to Statement 122, wherein the request includes an identifier of a data block in the memory of the storage device that the host processor does not intend to modify.

[0330] Statement 130. Embodiments of this disclosure include the article of manufacture according to Statement 129, wherein updating entries in the snooping filter of the storage device regarding data blocks in the memory of the storage device, at least in part based on a request from the host processor, includes updating entries in the snooping filter of the storage device for data blocks in the memory of the storage device that have not been modified by the host processor.

[0331] Statement 131. Embodiments of this disclosure include the article of manufacture according to Statement 122, wherein the request includes an identifier of a data block in the memory of a storage device that a host processor intends to modify.

[0332] Statement 132. Embodiments of this disclosure include the article of manufacture according to Statement 131, wherein updating entries in the snooping filter of the storage device regarding data blocks in the memory of the storage device based at least in part on requests from the host processor includes updating entries in the snooping filter of the storage device that are modified by the host processor for data blocks in the memory of the storage device.

[0333] Statement 133. Embodiments of this disclosure include the article of manufacture according to Statement 122, wherein the non-transitory storage medium stores additional instructions that, when executed by the machine, cause entries to be evicted from a snooping filter of the storage device.

[0334] Statement 134. Embodiments of this disclosure include the articles of manufacture according to Statement 133, wherein entries in the snooping filter of the storage device are evictped at least in part based on the snooping filter's eviction strategy.

[0335] Statement 135. Embodiments of this disclosure include the article of manufacture according to Statement 134, wherein the eviction policy of the snooping filter differs from a second eviction policy of the host processor's cache.

[0336] Statement 136. Embodiments of this disclosure include the article of manufacture according to Statement 133, wherein removing entries from the snooping filter of the storage device includes sending invalid requests for data blocks in the memory of the storage device from the storage device to the host processor.

[0337] Statement 137. Embodiments of this disclosure include the article of manufacture according to Statement 136, wherein sending an invalid request for a data block in the memory of a storage device to a host processor includes sending the invalid request for a data block in the memory of the storage device to the host processor based at least in part on an entry in a snooping filter indicating that the data block in the memory of the storage device has not been modified by the host processor.

[0338] Statement 138. Embodiments of this disclosure include the article of manufacture according to Statement 133, wherein eviction of entries in the snooping filter of the storage device includes sending a write-back invalidation request for a data block in the memory of the storage device from the storage device to the host processor.

[0339] Statement 139. Embodiments of this disclosure include the article of manufacture according to Statement 138, wherein sending a write-back invalidation request for a data block in the memory of a storage device from the storage device to the host processor includes sending the write-back invalidation request for the data block in the memory of the storage device from the storage device to the host processor based at least in part on an entry in a snooping filter indicating that the data block in the memory of the storage device has been modified by the host processor.

[0340] Statement 140. Embodiments of this disclosure include the article of manufacture according to Statement 122, wherein the non-transitory storage medium stores additional instructions that, when executed by the machine, cause:

[0341] Receive block-level protocol requests for access to the snooping filter at the storage device; and

[0342] Process the block-level protocol request.

[0343] The storage device supports a cache coherent interconnect protocol, which includes block-level and byte-level protocols.

[0344] Therefore, given the various arrangements of the embodiments described herein, this detailed description and the appended materials are intended to be illustrative only and should not be considered as limiting the scope of this disclosure. Accordingly, this disclosure claims protection for all such modifications that may fall within the scope and spirit of the appended claims and their equivalents.

Claims

1. A storage device, comprising: Storage media for data; The controller is used to manage access to data in the storage media; as well as A mechanism for storing and managing bias scores of data blocks in storage media and storing and managing bias modes of data blocks in storage media based at least in part on bias scores, wherein the bias mode includes one of a host bias mode and a device bias mode, and the bias score includes a multi-bit counter to track accesses to data blocks in storage media from a host processor or device. Host-biased mode is where the host processor has a copy of the data cache, while device-biased mode is where the host processor needs to retrieve data from the storage device without relying on a copy of the cache. The mechanism for storing and managing the bias scores and bias modes of data blocks in the storage medium is configured to adjust the bias scores of data blocks in the storage medium based at least in part on an access to a data block in the storage medium by one of the device or host processors.

2. The storage device according to claim 1, wherein, The mechanism for storing and managing the bias mode of data blocks in the storage medium is configured to, at least in part, switch to device bias mode based on the bias mode of the data blocks in the storage medium, and issue one of an invalid request or a write-back invalid request to the host processor for the data blocks in the storage medium.

3. The storage device according to claim 1, wherein, The mechanism used to store and manage the bias scores and bias modes of data blocks in the storage medium includes the bias scores and bias modes of data blocks in the storage medium.

4. The storage device according to claim 3, wherein, The mechanism for storing and managing the bias score and bias mode of data blocks in the storage medium is configured to change the bias mode of the data blocks in the storage medium to a host bias mode at least in part based on the bias score reaching a first threshold, and to change the bias mode of the data blocks in the storage medium to a device bias mode at least in part based on the bias score reaching a second threshold.

5. The storage device according to claim 1, wherein, The mechanism for storing and managing the bias scores and bias modes of data blocks in the storage media is configured to store and manage the bias scores and bias modes of data blocks in the storage media, at least in part, based on device access to a second data block in the storage media.

6. The storage device according to claim 5, wherein: The second data block in the storage medium includes the first page; The data block in the storage medium includes the second page; The mechanism for storing and managing the bias score and bias mode of data blocks in the storage medium is configured to further store and manage the second bias score and second bias mode of a second data block in the storage medium. as well as The mechanism for storing and managing the bias scores and bias patterns of data blocks in the storage medium is configured to store and manage the bias scores and bias patterns of data blocks in the storage medium based at least in part on the fact that the second page is contiguous with the first page.

7. The storage device according to claim 1, wherein, The mechanism for storing and managing the bias scores and bias modes of data blocks in storage media includes a snooping filter containing entries about data blocks in storage media accessed by the host processor, and the snooping filter also includes a cache controller.

8. The storage device according to claim 7, wherein: The entry for the data block in the storage medium indicates that the data block in the storage medium has not been modified by the host processor; and The mechanism for storing and managing the bias mode of data blocks in the storage medium is configured to invalidate the data blocks in the storage medium from the host processor's cache, at least in part, by evicting entries about the data blocks in the storage medium based on a snooping filter.

9. The storage device according to claim 7, wherein: An entry about a data block in the storage medium indicates that the data block in the storage medium was modified by the host processor; and The mechanism for storing and managing the bias scores and bias modes of data blocks in the storage medium is configured to invalidate data blocks in the storage medium by at least partially evicting entries about data blocks in the storage medium from the host processor's cache, based on snooping filters.

10. The storage device according to claim 1, wherein, The multi-bit counter includes at least two bits.

11. A method comprising: Receive a request at the storage device to access a data block in the storage medium of the storage device, the request being received from a source; The bias score identifies the bias fraction of data blocks stored in the storage medium of the storage device. The bias fraction includes a multi-bit counter to track accesses to the data blocks in the storage medium from a host processor or device. The storage medium of the storage device also stores bias patterns of the data blocks, the bias patterns being at least partially based on the bias score. The bias patterns include one of a host bias pattern and a device bias pattern, wherein the host bias pattern is a pattern where the host processor has a cached copy of the data, and the device bias pattern is a pattern where the host processor needs to retrieve data from the storage device without relying on a cached copy; and The bias fraction of the data blocks in the storage media of the storage device is adjusted at least in part based on the source of the request's access to the data blocks in the storage media.

12. The method according to claim 11, wherein: Receiving a request to access a data block in the storage medium of the storage device includes: receiving a request to access a data block in the storage medium of the storage device from a host processor; and Adjusting the bias score of data blocks in the storage medium of a storage device based at least in part on the source of the request for access to data blocks in the storage medium includes: incrementing the bias score of data blocks in the storage medium of the storage device based at least in part on the source, including the host processor.

13. The method of claim 12, further comprising switching the bias mode of a data block in the storage medium of the storage device to a host bias mode based at least in part on a bias score exceeding a threshold.

14. The method of claim 11, wherein: Receiving a request to access a data block in the storage medium of the storage device includes: receiving a request to access a data block in the storage medium of the storage device from the device; and Adjusting the bias score of data blocks in the storage medium of a storage device based at least in part on the source of the request for access to data blocks in the storage medium includes: at least in part on the source including the device, decreasing the bias score of data blocks in the storage medium of the storage device.

15. The method of claim 14, further comprising switching the bias mode of a data block in the storage medium of the storage device to a device bias mode based at least in part on a bias score exceeding a threshold.

Citation Information

Patent Citations

  • Systems, devices, and methods for accessing device additive memory

    CN114372011A

  • System, apparatus and method for accessing memory based on multiple protocols

    CN114546902A