Sub-Cache Line Segmentation for Flash Cache Endurance

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional flash-based cache devices have limited endurance due to the high number of writes, which reduces their reliability and requires frequent replacement, especially when handling small size I/O requests that lead to increased cache write amplification.

Innovation Solution

The system splits cache-lines into smaller sub-cache lines and uses meta-data to manage their dirty and invalid states, processing I/O requests in multiples of sub-cache line sizes to minimize cache-fills and reduce write operations, thereby extending the cache device's lifetime.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If conventional caching approaches are used for small size I/O requests, then host access time for hot data is improved, but the number of writes to the cache device increases, reducing cache device lifetime

Engineering Contradiction:
Improvehost access timeVSAvoidcache device lifetime
Core Design Contradiction:
Loss of timeVSDuration of action of stationary object

Solution Approach 1:

The cache line is divided into multiple sub-cache lines (e.g., 4 sub-cache lines of 4KB each within a 16KB cache line). This segmentation allows the system to process only the necessary portion of the cache line for small I/O requests, avoiding unnecessary writes of the entire cache line and reducing write amplification to extend cache device lifetime.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different parts of the cache line are treated differently based on their validity and usage. The patent introduces separate valid bits for each sub-cache line, allowing the system to identify and write only to the specific sub-cache lines that contain valid data or need to be updated, rather than writing the entire cache line uniformly.

Inventive Principle:
Principle #3Local quality

2Productivity

If the cache device processes all cache lines uniformly, then caching efficiency is maintained, but write amplification increases for small I/O requests, decreasing cache endurance

Engineering Contradiction:
Improvecaching efficiencyVSAvoidcache endurance
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The cache line is divided into multiple sub-cache lines with individual valid bits. This allows the system to process only the necessary portion of the cache line for small I/O requests, avoiding unnecessary writes of the entire cache line and reducing write amplification to extend cache device lifetime.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent changes the granularity of validity tracking from the entire cache line level to the sub-cache line level by introducing separate valid bits for each sub-cache line. This parameter change enables more precise control over which portions of the cache line need to be written, reducing unnecessary write operations and improving cache endurance.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS9734062B2System and methods for caching a small size I/O to improve caching device endurance
Publication Date: 2017.08.15 AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LTD
  • US9734062B2 patent drawing
  • US9734062B2 patent drawing
  • US9734062B2 patent drawing

AI summary

An apparatus comprising a memory and a controller. The memory may be configured to (i) implement a cache and (ii) store meta-data. The cache comprises one or more cache windows. Each of the one or more cache windows comprises a plurality of cache-lines configured to store information. Each of the cache-lines comprises a plurality of sub-cache lines. Each of the plurality of cache-lines and each of the plurality of sub-cache lines is associated with meta-data indicating one or more of a dirty state and an invalid state. The controller is connected to the memory and configured to (i) recognize sub-cache line boundaries and (ii) process the I/O requests in multiples of a size of said sub-cache lines to minimize cache-fills.