Collision-Based Alternate Hashing for Instruction Prefetch
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The limited storage capacity of history tables in processors leads to collisions when mapping instruction addresses, impeding the independent tracking of distinct event streams, which can cause delays and inefficiencies in prefetching operations.
Innovation Solution
Implementing collision-based alternate hashing by using an alternate hash buffer to dynamically vary the hashing scheme, allowing multiple event streams with the same instruction address hash to be tracked separately, and activating alternate hashing when collisions exceed certain thresholds, using a content addressable memory (CAM) for efficient mapping.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If a single hashing function is used to map instruction addresses to history table locations, then the history table can be accessed efficiently, but collisions occur when instruction addresses map to the same hash, impeding independent tracking of distinct event streams
Solution Approach 1:
The system dynamically switches between a primary hashing function and an alternate hashing function based on collision detection. When collisions are detected in the primary hash table, the system activates the alternate hash table to track the colliding event streams independently, thereby maintaining both efficient access and accurate tracking.
Solution Approach 2:
The patent introduces an alternate hash table as an intermediary structure to resolve collisions. This alternate table acts as a mediator that receives colliding event streams from the primary hash table and tracks them separately, preventing the collisions from impeding independent tracking while maintaining the efficiency of the primary hashing scheme.
2Reliability
If the history table storage capacity is increased to reduce collisions, then more event streams can be tracked independently, but the device complexity and cost increase
Solution Approach 1:
The history table is segmented into multiple hash tables (primary and alternate) that are activated based on collision detection. This segmentation allows the system to maintain a compact primary table for normal operation while having the option to activate additional table segments only when needed, thereby reducing average complexity while maintaining reliability.
Solution Approach 2:
The system changes the hashing parameter (switching between primary and alternate hashing functions) based on collision detection. This parameter change allows the same physical storage structure to serve different purposes under different conditions, effectively increasing tracking capacity without proportionally increasing physical storage requirements or complexity.
3Reliability
If alternate hashing is activated for all instruction addresses, then no collisions occur and all event streams are tracked independently, but the processing overhead and latency increase
Solution Approach 1:
Instead of activating alternate hashing for all instruction addresses, the system applies it partially - only when collisions are detected. This partial action approach maintains the simplicity and speed of single hashing for the majority of cases while providing collision resolution capability when needed, thereby minimizing processing overhead and latency.
Data Source
AI summary
Embodiments relate to collision-based alternate hashing. An aspect includes receiving an incoming instruction address. Another aspect includes determining whether an entry for the incoming instruction address exists in a history table based on a hash of the incoming instruction address. Another aspect includes based on determining that the entry for the incoming instruction address exists in the history table, determining whether the incoming instruction address matches an address tag in the determined entry. Another aspect includes based on determining that the incoming instruction address does not match the address tag in the determined entry, determining whether a collision exists for the incoming instruction address. Another aspect includes based on determining that the collision exists for the incoming instruction address, activating alternate hashing for the incoming instruction address using an alternate hash buffer.


