From 69d31fcda599d82e9bcf5970bdecbc181388e5ef Mon Sep 17 00:00:00 2001 From: Dongdong Li Date: Thu, 22 Aug 2013 20:28:46 -0800 Subject: Refactoring: 1. Decouple the constructor of interconnect interface 2. Some type changed to unsigned from int Fixed Bug: wrong variable in InterconnectInterface::Busy() Review: 83001 [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 16877] --- src/intersim2/interconnect_interface.hpp | 35 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 17 deletions(-) (limited to 'src/intersim2/interconnect_interface.hpp') diff --git a/src/intersim2/interconnect_interface.hpp b/src/intersim2/interconnect_interface.hpp index 6ce4418..e62f055 100644 --- a/src/intersim2/interconnect_interface.hpp +++ b/src/intersim2/interconnect_interface.hpp @@ -46,21 +46,23 @@ class Stats; class InterconnectInterface { public: - InterconnectInterface(const char* const config_file, unsigned int n_shader, unsigned int n_mem); + InterconnectInterface(); virtual ~InterconnectInterface(); + static InterconnectInterface* New(const char* const config_file); + virtual void CreateInterconnect(unsigned n_shader, unsigned n_mem); //node side functions - void Init(); - void Push(unsigned input_deviceID, unsigned output_deviceID, void* data, unsigned int size); - void* Pop(unsigned ouput_deviceID); - void Advance(); - bool Busy() const; - bool HasBuffer(unsigned deviceID, unsigned int size) const; - void DisplayStats() const; - void DisplayOverallStats() const; + virtual void Init(); + virtual void Push(unsigned input_deviceID, unsigned output_deviceID, void* data, unsigned int size); + virtual void* Pop(unsigned ouput_deviceID); + virtual void Advance(); + virtual bool Busy() const; + virtual bool HasBuffer(unsigned deviceID, unsigned int size) const; + virtual void DisplayStats() const; + virtual void DisplayOverallStats() const; unsigned GetFlitSize() const; - void DisplayState(FILE* fp) const; + virtual void DisplayState(FILE* fp) const; //booksim side functions void WriteOutBuffer( int subnet, int output, Flit* flit ); @@ -72,8 +74,7 @@ public: Flit* GetEjectedFlit(int subnet, int node); - -private: +protected: class _BoundaryBufferItem { public: @@ -92,7 +93,7 @@ private: typedef queue _EjectionBufferItem; void _CreateBuffer( ); - void _CreateNodeMap(int n_shader, int n_mem, int n_node, int use_map); + void _CreateNodeMap(unsigned n_shader, unsigned n_mem, unsigned n_node, int use_map); void _DisplayMap(int dim,int count); // size: [subnets][nodes][vcs] @@ -109,9 +110,9 @@ private: vector > _round_robin_turn; //keep track of _boundary_buffer last used in icnt_pop GPUTrafficManager* _traffic_manager; - unsigned int _flit_size; + unsigned _flit_size; IntersimConfig* _icnt_config; - const int _n_shader, _n_mem; + unsigned _n_shader, _n_mem; vector _net; int _vcs; int _subnets; @@ -119,10 +120,10 @@ private: //deviceID to icntID map //deviceID : Starts from 0 for shaders and then continues until mem nodes //which starts at location n_shader and then continues to n_shader+n_mem (last device) - map _node_map; + map _node_map; //icntID to deviceID map - map _reverse_node_map; + map _reverse_node_map; }; -- cgit v1.3