ChampSim
O3_CPU::Builder< B_FLAG, T_FLAG > Class Template Reference

#include <ooo_cpu.h>

Collaboration diagram for O3_CPU::Builder< B_FLAG, T_FLAG >:
[legend]

Public Member Functions

 Builder ()=default
 
self_typeindex (uint32_t cpu_)
 
self_typefrequency (double freq_scale_)
 
self_typedib_set (std::size_t dib_set_)
 
self_typedib_way (std::size_t dib_way_)
 
self_typedib_window (std::size_t dib_window_)
 
self_typeifetch_buffer_size (std::size_t ifetch_buffer_size_)
 
self_typedecode_buffer_size (std::size_t decode_buffer_size_)
 
self_typedispatch_buffer_size (std::size_t dispatch_buffer_size_)
 
self_typerob_size (std::size_t rob_size_)
 
self_typelq_size (std::size_t lq_size_)
 
self_typesq_size (std::size_t sq_size_)
 
self_typefetch_width (unsigned fetch_width_)
 
self_typedecode_width (unsigned decode_width_)
 
self_typedispatch_width (unsigned dispatch_width_)
 
self_typeschedule_width (unsigned schedule_width_)
 
self_typeexecute_width (unsigned execute_width_)
 
self_typelq_width (unsigned lq_width_)
 
self_typesq_width (unsigned sq_width_)
 
self_typeretire_width (unsigned retire_width_)
 
self_typemispredict_penalty (unsigned mispredict_penalty_)
 
self_typedecode_latency (unsigned decode_latency_)
 
self_typedispatch_latency (unsigned dispatch_latency_)
 
self_typeschedule_latency (unsigned schedule_latency_)
 
self_typeexecute_latency (unsigned execute_latency_)
 
self_typel1i (CACHE *l1i_)
 
self_typel1i_bandwidth (long int l1i_bw_)
 
self_typel1d_bandwidth (long int l1d_bw_)
 
self_typefetch_queues (champsim::channel *fetch_queues_)
 
self_typedata_queues (champsim::channel *data_queues_)
 
template<unsigned long long B>
Builder< B, T_FLAG > branch_predictor ()
 
template<unsigned long long T>
Builder< B_FLAG, T > btb ()
 

Private Types

using self_type = Builder< B_FLAG, T_FLAG >
 

Private Member Functions

template<unsigned long long OTHER_B, unsigned long long OTHER_T>
 Builder (builder_conversion_tag, const Builder< OTHER_B, OTHER_T > &other)
 

Private Attributes

uint32_t m_cpu {}
 
double m_freq_scale {}
 
std::size_t m_dib_set {}
 
std::size_t m_dib_way {}
 
std::size_t m_dib_window {}
 
std::size_t m_ifetch_buffer_size {}
 
std::size_t m_decode_buffer_size {}
 
std::size_t m_dispatch_buffer_size {}
 
std::size_t m_rob_size {}
 
std::size_t m_lq_size {}
 
std::size_t m_sq_size {}
 
unsigned m_fetch_width {}
 
unsigned m_decode_width {}
 
unsigned m_dispatch_width {}
 
unsigned m_schedule_width {}
 
unsigned m_execute_width {}
 
unsigned m_lq_width {}
 
unsigned m_sq_width {}
 
unsigned m_retire_width {}
 
unsigned m_mispredict_penalty {}
 
unsigned m_decode_latency {}
 
unsigned m_dispatch_latency {}
 
unsigned m_schedule_latency {}
 
unsigned m_execute_latency {}
 
CACHEm_l1i {}
 
long int m_l1i_bw {}
 
long int m_l1d_bw {}
 
champsim::channelm_fetch_queues {}
 
champsim::channelm_data_queues {}
 

Friends

class O3_CPU
 

Member Typedef Documentation

◆ self_type

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
using O3_CPU::Builder< B_FLAG, T_FLAG >::self_type = Builder<B_FLAG, T_FLAG>
private

Constructor & Destructor Documentation

◆ Builder() [1/2]

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
template<unsigned long long OTHER_B, unsigned long long OTHER_T>
O3_CPU::Builder< B_FLAG, T_FLAG >::Builder ( builder_conversion_tag  ,
const Builder< OTHER_B, OTHER_T > &  other 
)
inlineprivate

◆ Builder() [2/2]

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
O3_CPU::Builder< B_FLAG, T_FLAG >::Builder ( )
default

Member Function Documentation

◆ branch_predictor()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
template<unsigned long long B>
Builder<B, T_FLAG> O3_CPU::Builder< B_FLAG, T_FLAG >::branch_predictor ( )
inline

◆ btb()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
template<unsigned long long T>
Builder<B_FLAG, T> O3_CPU::Builder< B_FLAG, T_FLAG >::btb ( )
inline

◆ data_queues()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::data_queues ( champsim::channel data_queues_)
inline

◆ decode_buffer_size()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::decode_buffer_size ( std::size_t  decode_buffer_size_)
inline

◆ decode_latency()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::decode_latency ( unsigned  decode_latency_)
inline

◆ decode_width()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::decode_width ( unsigned  decode_width_)
inline

◆ dib_set()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::dib_set ( std::size_t  dib_set_)
inline

◆ dib_way()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::dib_way ( std::size_t  dib_way_)
inline

◆ dib_window()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::dib_window ( std::size_t  dib_window_)
inline

◆ dispatch_buffer_size()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::dispatch_buffer_size ( std::size_t  dispatch_buffer_size_)
inline

◆ dispatch_latency()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::dispatch_latency ( unsigned  dispatch_latency_)
inline

◆ dispatch_width()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::dispatch_width ( unsigned  dispatch_width_)
inline

◆ execute_latency()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::execute_latency ( unsigned  execute_latency_)
inline

◆ execute_width()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::execute_width ( unsigned  execute_width_)
inline

◆ fetch_queues()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::fetch_queues ( champsim::channel fetch_queues_)
inline

◆ fetch_width()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::fetch_width ( unsigned  fetch_width_)
inline

◆ frequency()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::frequency ( double  freq_scale_)
inline

◆ ifetch_buffer_size()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::ifetch_buffer_size ( std::size_t  ifetch_buffer_size_)
inline

◆ index()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::index ( uint32_t  cpu_)
inline

◆ l1d_bandwidth()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::l1d_bandwidth ( long int  l1d_bw_)
inline

◆ l1i()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::l1i ( CACHE l1i_)
inline

◆ l1i_bandwidth()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::l1i_bandwidth ( long int  l1i_bw_)
inline

◆ lq_size()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::lq_size ( std::size_t  lq_size_)
inline

◆ lq_width()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::lq_width ( unsigned  lq_width_)
inline

◆ mispredict_penalty()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::mispredict_penalty ( unsigned  mispredict_penalty_)
inline

◆ retire_width()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::retire_width ( unsigned  retire_width_)
inline

◆ rob_size()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::rob_size ( std::size_t  rob_size_)
inline

◆ schedule_latency()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::schedule_latency ( unsigned  schedule_latency_)
inline

◆ schedule_width()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::schedule_width ( unsigned  schedule_width_)
inline

◆ sq_size()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::sq_size ( std::size_t  sq_size_)
inline

◆ sq_width()

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
self_type& O3_CPU::Builder< B_FLAG, T_FLAG >::sq_width ( unsigned  sq_width_)
inline

Friends And Related Function Documentation

◆ O3_CPU

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
friend class O3_CPU
friend

Member Data Documentation

◆ m_cpu

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
uint32_t O3_CPU::Builder< B_FLAG, T_FLAG >::m_cpu {}
private

◆ m_data_queues

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
champsim::channel* O3_CPU::Builder< B_FLAG, T_FLAG >::m_data_queues {}
private

◆ m_decode_buffer_size

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
std::size_t O3_CPU::Builder< B_FLAG, T_FLAG >::m_decode_buffer_size {}
private

◆ m_decode_latency

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_decode_latency {}
private

◆ m_decode_width

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_decode_width {}
private

◆ m_dib_set

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
std::size_t O3_CPU::Builder< B_FLAG, T_FLAG >::m_dib_set {}
private

◆ m_dib_way

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
std::size_t O3_CPU::Builder< B_FLAG, T_FLAG >::m_dib_way {}
private

◆ m_dib_window

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
std::size_t O3_CPU::Builder< B_FLAG, T_FLAG >::m_dib_window {}
private

◆ m_dispatch_buffer_size

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
std::size_t O3_CPU::Builder< B_FLAG, T_FLAG >::m_dispatch_buffer_size {}
private

◆ m_dispatch_latency

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_dispatch_latency {}
private

◆ m_dispatch_width

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_dispatch_width {}
private

◆ m_execute_latency

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_execute_latency {}
private

◆ m_execute_width

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_execute_width {}
private

◆ m_fetch_queues

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
champsim::channel* O3_CPU::Builder< B_FLAG, T_FLAG >::m_fetch_queues {}
private

◆ m_fetch_width

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_fetch_width {}
private

◆ m_freq_scale

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
double O3_CPU::Builder< B_FLAG, T_FLAG >::m_freq_scale {}
private

◆ m_ifetch_buffer_size

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
std::size_t O3_CPU::Builder< B_FLAG, T_FLAG >::m_ifetch_buffer_size {}
private

◆ m_l1d_bw

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
long int O3_CPU::Builder< B_FLAG, T_FLAG >::m_l1d_bw {}
private

◆ m_l1i

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
CACHE* O3_CPU::Builder< B_FLAG, T_FLAG >::m_l1i {}
private

◆ m_l1i_bw

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
long int O3_CPU::Builder< B_FLAG, T_FLAG >::m_l1i_bw {}
private

◆ m_lq_size

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
std::size_t O3_CPU::Builder< B_FLAG, T_FLAG >::m_lq_size {}
private

◆ m_lq_width

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_lq_width {}
private

◆ m_mispredict_penalty

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_mispredict_penalty {}
private

◆ m_retire_width

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_retire_width {}
private

◆ m_rob_size

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
std::size_t O3_CPU::Builder< B_FLAG, T_FLAG >::m_rob_size {}
private

◆ m_schedule_latency

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_schedule_latency {}
private

◆ m_schedule_width

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_schedule_width {}
private

◆ m_sq_size

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
std::size_t O3_CPU::Builder< B_FLAG, T_FLAG >::m_sq_size {}
private

◆ m_sq_width

template<unsigned long long B_FLAG = 0, unsigned long long T_FLAG = 0>
unsigned O3_CPU::Builder< B_FLAG, T_FLAG >::m_sq_width {}
private

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