ChampSim
PageTableWalker Class Reference

#include <ptw.h>

Inheritance diagram for PageTableWalker:
[legend]
Collaboration diagram for PageTableWalker:
[legend]

Classes

class  Builder
 
struct  mshr_type
 
struct  pscl_entry
 
struct  pscl_indexer
 

Public Member Functions

 PageTableWalker (Builder builder)
 
long operate () override final
 
void begin_phase () override final
 
void print_deadlock () override final
 
- Public Member Functions inherited from champsim::operable
 operable (double scale)
 
long _operate ()
 
virtual void initialize ()
 
virtual void end_phase (unsigned)
 

Public Attributes

const std::string NAME
 
const uint32_t MSHR_SIZE
 
const long int MAX_READ
 
const long int MAX_FILL
 
const uint64_t HIT_LATENCY
 
std::vector< pscl_typepscl
 
VirtualMemoryvmem
 
const uint64_t CR3_addr
 
- Public Attributes inherited from champsim::operable
const double CLOCK_SCALE
 
double leap_operation = 0
 
uint64_t current_cycle = 0
 
bool warmup = true
 

Private Types

using pscl_type = champsim::lru_table< pscl_entry, pscl_indexer, pscl_indexer >
 
using channel_type = champsim::channel
 
using request_type = typename channel_type::request_type
 
using response_type = typename channel_type::response_type
 

Private Member Functions

std::optional< mshr_typehandle_read (const request_type &pkt, channel_type *ul)
 
std::optional< mshr_typehandle_fill (const mshr_type &pkt)
 
std::optional< mshr_typestep_translation (const mshr_type &source)
 
void finish_packet (const response_type &packet)
 

Private Attributes

std::deque< mshr_typeMSHR
 
std::deque< mshr_typefinished
 
std::deque< mshr_typecompleted
 
std::vector< channel_type * > upper_levels
 
channel_typelower_level
 

Member Typedef Documentation

◆ channel_type

◆ pscl_type

◆ request_type

◆ response_type

Constructor & Destructor Documentation

◆ PageTableWalker()

PageTableWalker::PageTableWalker ( Builder  builder)
explicit

Member Function Documentation

◆ begin_phase()

void PageTableWalker::begin_phase ( )
finaloverridevirtual

Reimplemented from champsim::operable.

◆ finish_packet()

void PageTableWalker::finish_packet ( const response_type packet)
private

◆ handle_fill()

auto PageTableWalker::handle_fill ( const mshr_type pkt)
private

◆ handle_read()

auto PageTableWalker::handle_read ( const request_type pkt,
channel_type ul 
)
private

◆ operate()

long PageTableWalker::operate ( )
finaloverridevirtual

Implements champsim::operable.

◆ print_deadlock()

void PageTableWalker::print_deadlock ( )
finaloverridevirtual

Reimplemented from champsim::operable.

◆ step_translation()

auto PageTableWalker::step_translation ( const mshr_type source)
private

Member Data Documentation

◆ completed

std::deque<mshr_type> PageTableWalker::completed
private

◆ CR3_addr

const uint64_t PageTableWalker::CR3_addr

◆ finished

std::deque<mshr_type> PageTableWalker::finished
private

◆ HIT_LATENCY

const uint64_t PageTableWalker::HIT_LATENCY

◆ lower_level

channel_type* PageTableWalker::lower_level
private

◆ MAX_FILL

const long int PageTableWalker::MAX_FILL

◆ MAX_READ

const long int PageTableWalker::MAX_READ

◆ MSHR

std::deque<mshr_type> PageTableWalker::MSHR
private

◆ MSHR_SIZE

const uint32_t PageTableWalker::MSHR_SIZE

◆ NAME

const std::string PageTableWalker::NAME

◆ pscl

std::vector<pscl_type> PageTableWalker::pscl

◆ upper_levels

std::vector<channel_type*> PageTableWalker::upper_levels
private

◆ vmem

VirtualMemory* PageTableWalker::vmem

The documentation for this class was generated from the following files: