Unified Cache Code Data Prioritization via Partitioning

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing cache designs face challenges in efficiently managing large code and data footprints in unified caches, leading to code vs. data contention and inefficient prioritization, which affects performance in applications like Hadoop and web search applications.

Innovation Solution

Implementing separate fill partitions for code and data within a unified cache using hardware support, with dynamic reassignment of cache resources and capacity bit masks to prioritize applications, allowing for per-class-of-service (CLOS) isolation or overlap of code and data.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If a unified cache is used to store both code and data, then cache capacity is maximized, but code vs. data contention occurs leading to inefficient prioritization

Engineering Contradiction:
Improvecache capacityVSAvoidcache efficiency
Core Design Contradiction:
Quantity of substanceVSProductivity

Solution Approach 1:

The unified cache is segmented into separate fill partitions for code and data using hardware support. Capacity bit masks are used to define which cache ways are allocated to code versus data for each class of service, enabling independent management and prioritization while maintaining overall cache capacity utilization.

Inventive Principle:
Principle #1Segmentation

2Productivity

If separate caches for code and data are implemented, then code vs. data contention is eliminated, but device complexity increases

Engineering Contradiction:
Improvecache efficiencyVSAvoidcache structure complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

Separate code and data fill partitions are merged within a single unified cache structure rather than implementing completely separate physical caches. This combination maintains the benefits of reduced contention while avoiding the complexity of multiple independent cache systems, using capacity bit masks to manage the merged structure.

Inventive Principle:
Principle #5Merging (Combining)

3Adaptability or versatility

If dynamic reassignment of cache resources is implemented, then adaptability to different applications is improved, but control complexity increases

Engineering Contradiction:
Improveapplication prioritization flexibilityVSAvoidcache control logic complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The cache allocation is made dynamic through software-configurable capacity bit masks that can be reassigned based on application priorities and workload characteristics. The system can adapt to different application requirements by dynamically adjusting the code versus data partitioning without requiring complex control logic, as the reassignment is driven by software configuration rather than complex hardware control mechanisms.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS10089229B2Cache allocation with code and data prioritization
Publication Date: 2018.10.02 INTEL CORP
  • US10089229B2 patent drawing
  • US10089229B2 patent drawing
  • US10089229B2 patent drawing

AI summary

Systems and methods for cache allocation with code and data prioritization. An example system may comprise: a cache; a processing core, operatively coupled to the cache; and a cache control logic, responsive to receiving a cache fill request comprising an identifier of a request type and an identifier of a class of service, to identify a subset of the cache corresponding to a capacity bit mask associated with the request type and the class of service.