L1 Instruction Cache

class ember.front.l1i.L1ICacheReadPort(p: EmberParams)
class Request(p: EmberParams)

Request to read all tag/data ways for some set in the L1I cache.

class Response(p: EmberParams)

Response with all tag/data ways for a particular set in the L1I cache.

class ember.front.l1i.L1ICacheWritePort(p: EmberParams)

An L1I cache write port.

class Request(p: EmberParams)

A request to write a particular set/way in the L1I cache.

class Response(p: EmberParams)

Response to a write request.

class ember.front.l1i.L1ICacheDataArray(*args, src_loc_at=0, **kwargs)

L1 instruction cache data array.

The data array is a memory whose capacity is the number of sets in the L1I cache, and where elements in the array are caches lines.

Read ports perform reads from particular set across all ways. Write ports perform writes to a particular set and way. For now, there is one read port and one write port.

Ports:
  • rp_en – Read port enable

  • rp_idx – Read port set index

  • rp_data – Read port data

  • wp_en – Write port enable

  • wp_way – Write port way index

  • wp_idx – Write port set index

  • wp_data – Write port data

class ember.front.l1i.L1ICacheTagArray(*args, src_loc_at=0, **kwargs)

L1 instruction cache tag array.

The tag array is a memory whose capacity is the number of sets in the L1I cache, and where elements in the array are tags belonging to each way in a set.

Read ports perform reads from particular set across all ways. Write ports perform writes to a particular set and way. For now, there is only one read port and one write port.

Ports:
  • rp_en – Read port enable

  • rp_idx – Read port set index

  • rp_data – Read port data

  • wp_en – Write port enable

  • wp_way – Write port way index

  • wp_idx – Write port set index

  • wp_data – Write port data

class ember.front.l1i.L1ICache(*args, src_loc_at=0, **kwargs)

Backing memory for an L1 instruction cache.

This module consists of a data array and a tag array. This only implements the storage for a [set-associative] virtually-indexed and physically-tagged (VIPT) cache. It does not include any of the logic for tag matching.

Read ports are used to read the tags and data for a particular set across all ways in the cache. Write ports are used to replace the tag and data for a particular set and a particular way.

For now, there is only one read port and one write port.

Ports:
class ember.front.l1i.L1IWaySelect(*args, src_loc_at=0, **kwargs)

L1I cache way select logic.

Given a set of tags i_tags across all ways in a set, determine which way matches