From 69f2911e04ffb1b19eef1fafb8c040af271f656e Mon Sep 17 00:00:00 2001 From: Tor Aamodt Date: Thu, 15 Jul 2010 18:09:46 -0800 Subject: creating branch for adding support for CUDA 3.x and Fermi [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 6829] --- src/intersim/arbiter.hpp | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/intersim/arbiter.hpp (limited to 'src/intersim/arbiter.hpp') diff --git a/src/intersim/arbiter.hpp b/src/intersim/arbiter.hpp new file mode 100644 index 0000000..23b5232 --- /dev/null +++ b/src/intersim/arbiter.hpp @@ -0,0 +1,51 @@ +#ifndef _ARBITER_HPP_ +#define _ARBITER_HPP_ + +#include + +#include "module.hpp" +#include "config_utils.hpp" + +class Arbiter : public Module { +protected: + const int _inputs; + + struct sRequest { + int in; + int label; + int pri; + }; + + list _requests; + + int _match; + +public: + Arbiter( const Configuration &, + Module *parent, const string& name, + int inputs ); + virtual ~Arbiter( ); + + void Clear( ); + + void AddRequest( int in, int label = 0, int pri = 0 ); + void RemoveRequest( int in, int label = 0 ); + + virtual void Arbitrate( ) = 0; + + int Match( ) const; +}; + +class PriorityArbiter : public Arbiter { + int _rr_ptr; + +public: + PriorityArbiter( const Configuration &config, + Module *parent, const string& name, + int inputs ); + ~PriorityArbiter( ); + + void Arbitrate( ); +}; + +#endif -- cgit v1.3