diff options
Diffstat (limited to 'src/mem/rubymem.hh')
-rw-r--r-- | src/mem/rubymem.hh | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/src/mem/rubymem.hh b/src/mem/rubymem.hh deleted file mode 100644 index 2672dcb77..000000000 --- a/src/mem/rubymem.hh +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright (c) 2001-2005 The Regents of The University of Michigan - * Copyright (c) 2009 Advanced Micro Devices, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Authors: Daniel Sanchez - */ - -#ifndef __RUBY_MEMORY_HH__ -#define __RUBY_MEMORY_HH__ - -#include <map> -#include <vector> - -#include "base/callback.hh" -#include "mem/packet.hh" -#include "mem/physical.hh" -#include "mem/ruby/system/RubyPort.hh" -#include "params/RubyMemory.hh" -#include "mem/port.hh" - -class RubyExitCallback; - -class RubyMemory : public PhysicalMemory -{ - public: - std::vector<RubyPort *> ruby_ports; - std::vector<RubyPort *> ruby_dma_ports; - class Port : public MemoryPort - { - friend void ruby_hit_callback(int64_t req_id); - - RubyMemory *ruby_mem; - RubyPort *ruby_port; - - public: - Port(const std::string &_name, - RubyMemory *_memory, - RubyPort *_port); - bool sendTiming(PacketPtr pkt); - void hitCallback(PacketPtr pkt); - - protected: - virtual bool recvTiming(PacketPtr pkt); - - private: - bool isPioAddress(Addr addr); - }; - - class RubyEvent : public Event - { - RubyMemory *ruby_ptr; - public: - RubyEvent(RubyMemory *p) - : Event(), ruby_ptr(p) {} - - virtual void process() { ruby_ptr->tick(); } - - virtual const char *description() const { return "ruby tick"; } - }; - - struct SenderState : public Packet::SenderState - { - Port *port; - Packet::SenderState *saved; - - SenderState(Port *p, Packet::SenderState *s = NULL) - : port(p), saved(s) - {} - }; - - private: - // prevent copying of a RubyMemory object - RubyMemory(const RubyMemory &specmem); - const RubyMemory &operator=(const RubyMemory &specmem); - - RubyEvent* rubyTickEvent; - - public: - typedef RubyMemoryParams Params; - RubyMemory(const Params *p); - virtual ~RubyMemory(); - - const Params * - params() const - { - return safe_cast<const Params *>(_params); - } - - public: - virtual ::Port *getPort(const std::string &if_name, int idx = -1); - void virtual init(); - - //Ruby-related specifics - void printConfigStats(); //dsm: Maybe this function should - //disappear once the configuration - //options change & M5 determines the - //stats file to use - - void printStats(std::ostream & out) const; - void clearStats(); - void printConfig(std::ostream & out) const; - - void tick(); - - private: - Tick ruby_clock; - Tick ruby_phase; - RubyExitCallback* rubyExitCB; - int ports_per_cpu; - - public: - static std::map<int64_t, PacketPtr> pending_requests; - RubyMemory::Port* pio_port; - - protected: - std::vector<MemoryPort*> dma_ports; - - public: - virtual void serialize(std::ostream &os); - virtual void unserialize(Checkpoint *cp, const std::string §ion); -}; - -void ruby_hit_callback(int64_t); - -class RubyExitCallback : public Callback -{ - private: - RubyMemory* ruby; - - public: - /** - * virtualize the destructor to make sure that the correct one - * gets called. - */ - - virtual ~RubyExitCallback() {}; - - RubyExitCallback(RubyMemory* rm) {ruby=rm;}; - - /** - * virtual process function that is invoked when the callback - * queue is executed. - */ - virtual void process() {ruby->printConfigStats(); /*delete ruby; was doing double delete...*/}; -}; - - -#endif //__RUBY_MEMORY_HH__ - |