gem5.components.cachehierarchies.abstract_cache_hierarchy module

class gem5.components.cachehierarchies.abstract_cache_hierarchy.AbstractCacheHierarchy

Bases: SubSystem

abstract = False
add_root_child(*args, **kwargs)

This adds the LLC to the root node

cxx_exports = []
cxx_extra_bases = []
cxx_param_exports = []
cxx_template_params = []
generateDeviceTree(state)
abstract get_coherence_protocol() CoherenceProtocol

Returns the coherence protocol used in the cache hierarchy.

Returns:

The coherence protocol used in the cache hierarchy.

abstract incorporate_cache(board: AbstractBoard) None

Incorporates the caches into a board.

Each specific hierarchy needs to implement this function and will be unique for each setup.

Parameters:

board – The board in which the cache heirarchy is to be incorporated.

abstract is_ruby() bool

Specifies whether this cache hierarchy is using the Ruby memory system or not.

Returns:

True if the cache hierarchy is ruby. Otherwise False.

traverse(node: CacheNode, visit: Callable[[CacheNode, int], None]) int

Traverse the tree in post-order. Return the level of the current node passed as an argument. The method accepts a visit function to be called at each node

Parameters:
  • node – starting node for traversal

  • visit – visiting function to be called at each node

Returns:

level of the node passed as an argument

class gem5.components.cachehierarchies.abstract_cache_hierarchy.CacheNode(name: str, cache: SimObject, next_level: CacheNode, hierarchy: AbstractCacheHierarchy)

Bases: object

add_child(name: str, cache: SimObject) CacheNode

Add a child node to the current node provided a cache object and its name. Because of the intrinsic topology of caches, children will be one level higher than their parent in the hierarchy. This means the chain of insertions to the tree will be something like: l3.add_child(“l2”, l2).add_child(“l1”, l1)

Parameters:
  • name – The name of the cache

  • cache – The cache SimObject

Returns:

The new child node being generated

generate_dtb_entry(state, level)