diff options
| author | Nick <[email protected]> | 2019-09-13 07:48:05 -0400 |
|---|---|---|
| committer | Nick <[email protected]> | 2019-09-13 07:48:05 -0400 |
| commit | 9cafb850bdc8ba404add817f90c25faef6ecf9e3 (patch) | |
| tree | 4b3d011d2e7fc4a8c2973e969cd8914d7b02b31b /src/gpuwattch/logic.h | |
| parent | 96a0ebfc2583e6f92d8287ecd128eb7c634be017 (diff) | |
Revert "add /src/gpuwattch formatting"
This reverts commit b7776785a18d3f4e6229cd625f92c11b55894b75.
Diffstat (limited to 'src/gpuwattch/logic.h')
| -rw-r--r-- | src/gpuwattch/logic.h | 332 |
1 files changed, 164 insertions, 168 deletions
diff --git a/src/gpuwattch/logic.h b/src/gpuwattch/logic.h index df00837..406b249 100644 --- a/src/gpuwattch/logic.h +++ b/src/gpuwattch/logic.h @@ -29,8 +29,7 @@ * ***************************************************************************/ /******************************************************************** -* Modified by: -** +* Modified by: * * Jingwen Leng, Univeristy of Texas, Austin * * Syed Gilani, University of Wisconsin–Madison * * Tayler Hetherington, University of British Columbia * @@ -39,206 +38,203 @@ #ifndef LOGIC_H_ #define LOGIC_H_ -#include <cassert> -#include <cmath> -#include <cstring> -#include <iostream> -#include "XML_Parse.h" -#include "arch_const.h" +#include "cacti/const.h" +#include "cacti/component.h" #include "basic_components.h" #include "cacti/basic_circuit.h" #include "cacti/cacti_interface.h" -#include "cacti/component.h" -#include "cacti/const.h" #include "cacti/decoder.h" #include "cacti/parameter.h" #include "xmlParser.h" +#include "XML_Parse.h" +#include "arch_const.h" +#include <cstring> +#include <iostream> +#include <cmath> +#include <cassert> + using namespace std; -class selection_logic : public Component { - public: - selection_logic( - bool _is_default, int win_entries_, int issue_width_, - const InputParameter *configure_interface, - enum Device_ty device_ty_ = Core_device, - enum Core_type core_ty_ = Inorder); //, const ParseXML *_XML_interface); - bool is_default; - InputParameter l_ip; - uca_org_t local_result; - const ParseXML *XML_interface; - int win_entries; - int issue_width; - int num_threads; - enum Device_ty device_ty; - enum Core_type core_ty; +class selection_logic : public Component{ +public: + selection_logic(bool _is_default, int win_entries_, + int issue_width_, const InputParameter *configure_interface, + enum Device_ty device_ty_=Core_device, + enum Core_type core_ty_=Inorder);//, const ParseXML *_XML_interface); + bool is_default; + InputParameter l_ip; + uca_org_t local_result; + const ParseXML *XML_interface; + int win_entries; + int issue_width; + int num_threads; + enum Device_ty device_ty; + enum Core_type core_ty; - void selection_power(); - void leakage_feedback(double temperature); // TODO + void selection_power(); + void leakage_feedback(double temperature); // TODO }; -class dep_resource_conflict_check : public Component { - public: - dep_resource_conflict_check(const InputParameter *configure_interface, - const CoreDynParam &dyn_p_, int compare_bits_, - bool _is_default = true); - InputParameter l_ip; - uca_org_t local_result; - double WNORn, WNORp, Wevalinvp, Wevalinvn, Wcompn, Wcompp, Wcomppreequ; - CoreDynParam coredynp; - int compare_bits; - bool is_default; - statsDef tdp_stats; - statsDef rtp_stats; - statsDef stats_t; - powerDef power_t; +class dep_resource_conflict_check : public Component{ +public: + dep_resource_conflict_check(const InputParameter *configure_interface, const CoreDynParam & dyn_p_, int compare_bits_, bool _is_default=true); + InputParameter l_ip; + uca_org_t local_result; + double WNORn, WNORp, Wevalinvp, Wevalinvn, Wcompn, Wcompp, Wcomppreequ; + CoreDynParam coredynp; + int compare_bits; + bool is_default; + statsDef tdp_stats; + statsDef rtp_stats; + statsDef stats_t; + powerDef power_t; - void conflict_check_power(); - double compare_cap(); - ~dep_resource_conflict_check() { local_result.cleanup(); } + void conflict_check_power(); + double compare_cap(); + ~dep_resource_conflict_check(){ + local_result.cleanup(); + } - void leakage_feedback(double temperature); + void leakage_feedback(double temperature); }; -class inst_decoder : public Component { - public: - inst_decoder(bool _is_default, const InputParameter *configure_interface, - int opcode_length_, int num_decoders_, bool x86_, - enum Device_ty device_ty_ = Core_device, - enum Core_type core_ty_ = Inorder); - inst_decoder(); - bool is_default; - int opcode_length; - int num_decoders; - bool x86; - int num_decoder_segments; - int num_decoded_signals; - InputParameter l_ip; - uca_org_t local_result; - enum Device_ty device_ty; - enum Core_type core_ty; +class inst_decoder: public Component{ +public: + inst_decoder(bool _is_default, const InputParameter *configure_interface, + int opcode_length_, + int num_decoders_, + bool x86_, + enum Device_ty device_ty_=Core_device, + enum Core_type core_ty_=Inorder); + inst_decoder(); + bool is_default; + int opcode_length; + int num_decoders; + bool x86; + int num_decoder_segments; + int num_decoded_signals; + InputParameter l_ip; + uca_org_t local_result; + enum Device_ty device_ty; + enum Core_type core_ty; - Decoder *final_dec; - Predec *pre_dec; + Decoder * final_dec; + Predec * pre_dec; - statsDef tdp_stats; - statsDef rtp_stats; - statsDef stats_t; - powerDef power_t; - void inst_decoder_delay_power(); - ~inst_decoder(); - void leakage_feedback(double temperature); + statsDef tdp_stats; + statsDef rtp_stats; + statsDef stats_t; + powerDef power_t; + void inst_decoder_delay_power(); + ~inst_decoder(); + void leakage_feedback(double temperature); }; class DFFCell : public Component { - public: - DFFCell(bool _is_dram, double _WdecNANDn, double _WdecNANDp, - double _cell_load, const InputParameter *configure_interface); - InputParameter l_ip; - bool is_dram; - double cell_load; - double WdecNANDn; - double WdecNANDp; - double clock_cap; - int model; - int n_switch; - int n_keep_1; - int n_keep_0; - int n_clock; - powerDef e_switch; - powerDef e_keep_1; - powerDef e_keep_0; - powerDef e_clock; +public: + DFFCell(bool _is_dram, double _WdecNANDn, double _WdecNANDp,double _cell_load, + const InputParameter *configure_interface); + InputParameter l_ip; + bool is_dram; + double cell_load; + double WdecNANDn; + double WdecNANDp; + double clock_cap; + int model; + int n_switch; + int n_keep_1; + int n_keep_0; + int n_clock; + powerDef e_switch; + powerDef e_keep_1; + powerDef e_keep_0; + powerDef e_clock; - double fpfp_node_cap(unsigned int fan_in, unsigned int fan_out); - void compute_DFF_cell(void); -}; + double fpfp_node_cap(unsigned int fan_in, unsigned int fan_out); + void compute_DFF_cell(void); + }; + +class Pipeline : public Component{ +public: + Pipeline(const InputParameter *configure_interface, const CoreDynParam & dyn_p_, enum Device_ty device_ty_=Core_device, bool _is_core_pipeline=true, bool _is_default=true); + InputParameter l_ip; + uca_org_t local_result; + CoreDynParam coredynp; + enum Device_ty device_ty; + bool is_core_pipeline, is_default; + double num_piperegs; +// int pipeline_stages; +// int tot_stage_vector, per_stage_vector; + bool process_ind; + double WNANDn ; + double WNANDp; + double load_per_pipeline_stage; +// int Hthread, num_thread, fetchWidth, decodeWidth, issueWidth, commitWidth, instruction_length; +// int PC_width, opcode_length, num_arch_reg_tag, data_width,num_phsical_reg_tag, address_width; +// bool thread_clock_gated; +// bool in_order, multithreaded; + void compute_stage_vector(); + void compute(); + ~Pipeline(){ + local_result.cleanup(); + }; -class Pipeline : public Component { - public: - Pipeline(const InputParameter *configure_interface, - const CoreDynParam &dyn_p_, enum Device_ty device_ty_ = Core_device, - bool _is_core_pipeline = true, bool _is_default = true); - InputParameter l_ip; - uca_org_t local_result; - CoreDynParam coredynp; - enum Device_ty device_ty; - bool is_core_pipeline, is_default; - double num_piperegs; - // int pipeline_stages; - // int tot_stage_vector, per_stage_vector; - bool process_ind; - double WNANDn; - double WNANDp; - double load_per_pipeline_stage; - // int Hthread, num_thread, fetchWidth, decodeWidth, issueWidth, - //commitWidth, instruction_length; - // int PC_width, opcode_length, num_arch_reg_tag, - //data_width,num_phsical_reg_tag, address_width; - // bool thread_clock_gated; - // bool in_order, multithreaded; - void compute_stage_vector(); - void compute(); - ~Pipeline() { local_result.cleanup(); }; }; -// class core_pipeline :public pipeline{ -// public: -// int Hthread, num_thread, fetchWidth, decodeWidth, issueWidth, -//commitWidth, instruction_length; -// int PC_width, opcode_length, num_arch_reg_tag, -//data_width,num_phsical_reg_tag, address_width; +//class core_pipeline :public pipeline{ +//public: +// int Hthread, num_thread, fetchWidth, decodeWidth, issueWidth, commitWidth, instruction_length; +// int PC_width, opcode_length, num_arch_reg_tag, data_width,num_phsical_reg_tag, address_width; // bool thread_clock_gated; // bool in_order, multithreaded; -// core_pipeline(bool _is_default, const InputParameter -//*configure_interface); +// core_pipeline(bool _is_default, const InputParameter *configure_interface); // virtual void compute_stage_vector(); // //}; -class FunctionalUnit : public Component { - public: - ParseXML *XML; - int ithCore; - InputParameter interface_ip; - CoreDynParam coredynp; - double FU_height; - double clockRate, executionTime; - double num_fu; - double energy, base_energy, per_access_energy, leakage, gate_leakage; - bool is_default; - enum FU_type fu_type; - statsDef tdp_stats; - statsDef rtp_stats; - statsDef stats_t; - powerDef power_t; +class FunctionalUnit :public Component{ +public: + ParseXML *XML; + int ithCore; + InputParameter interface_ip; + CoreDynParam coredynp; + double FU_height; + double clockRate,executionTime; + double num_fu; + double energy, base_energy,per_access_energy, leakage, gate_leakage; + bool is_default; + enum FU_type fu_type; + statsDef tdp_stats; + statsDef rtp_stats; + statsDef stats_t; + powerDef power_t; + + FunctionalUnit(ParseXML *XML_interface, int ithCore_, InputParameter* interface_ip_,const CoreDynParam & dyn_p_, enum FU_type fu_type, double exClockRate); + void computeEnergy(bool is_tdp=true); + void displayEnergy(uint32_t indent = 0,int plevel = 100, bool is_tdp=true); + void leakage_feedback(double temperature); - FunctionalUnit(ParseXML *XML_interface, int ithCore_, - InputParameter *interface_ip_, const CoreDynParam &dyn_p_, - enum FU_type fu_type, double exClockRate); - void computeEnergy(bool is_tdp = true); - void displayEnergy(uint32_t indent = 0, int plevel = 100, bool is_tdp = true); - void leakage_feedback(double temperature); }; -class UndiffCore : public Component { - public: - UndiffCore(ParseXML *XML_interface, int ithCore_, - InputParameter *interface_ip_, const CoreDynParam &dyn_p_, - bool exist_ = true, bool embedded_ = false); - ParseXML *XML; - int ithCore; - InputParameter interface_ip; - CoreDynParam coredynp; - double clockRate, executionTime; - double scktRatio, chip_PR_overhead, macro_PR_overhead; - enum Core_type core_ty; - bool opt_performance, embedded; - double pipeline_stage, num_hthreads, issue_width; - bool is_default; +class UndiffCore :public Component{ +public: + UndiffCore(ParseXML* XML_interface, int ithCore_, InputParameter* interface_ip_, const CoreDynParam & dyn_p_, bool exist_=true, bool embedded_=false); + ParseXML *XML; + int ithCore; + InputParameter interface_ip; + CoreDynParam coredynp; + double clockRate,executionTime; + double scktRatio, chip_PR_overhead, macro_PR_overhead; + enum Core_type core_ty; + bool opt_performance, embedded; + double pipeline_stage,num_hthreads,issue_width; + bool is_default; + + void displayEnergy(uint32_t indent = 0,int plevel = 100, bool is_tdp=true); + ~UndiffCore(){}; + bool exist; + - void displayEnergy(uint32_t indent = 0, int plevel = 100, bool is_tdp = true); - ~UndiffCore(){}; - bool exist; }; #endif /* LOGIC_H_ */ |
