CacheRecorder.hh revision 6890
14202Sbinkertn@umich.edu 24202Sbinkertn@umich.edu/* 34202Sbinkertn@umich.edu * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 44202Sbinkertn@umich.edu * All rights reserved. 54202Sbinkertn@umich.edu * 64202Sbinkertn@umich.edu * Redistribution and use in source and binary forms, with or without 74202Sbinkertn@umich.edu * modification, are permitted provided that the following conditions are 84202Sbinkertn@umich.edu * met: redistributions of source code must retain the above copyright 94202Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer; 104202Sbinkertn@umich.edu * redistributions in binary form must reproduce the above copyright 114202Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer in the 124202Sbinkertn@umich.edu * documentation and/or other materials provided with the distribution; 134202Sbinkertn@umich.edu * neither the name of the copyright holders nor the names of its 144202Sbinkertn@umich.edu * contributors may be used to endorse or promote products derived from 154202Sbinkertn@umich.edu * this software without specific prior written permission. 164202Sbinkertn@umich.edu * 174202Sbinkertn@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 184202Sbinkertn@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 194202Sbinkertn@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 204202Sbinkertn@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 214202Sbinkertn@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 224202Sbinkertn@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 234202Sbinkertn@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 244202Sbinkertn@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 254202Sbinkertn@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 264202Sbinkertn@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 274202Sbinkertn@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 284202Sbinkertn@umich.edu */ 294202Sbinkertn@umich.edu 304202Sbinkertn@umich.edu/* 314202Sbinkertn@umich.edu * $Id$ 324202Sbinkertn@umich.edu * 334295Sbinkertn@umich.edu * Description: Recording cache requests made to a ruby cache at certain 344295Sbinkertn@umich.edu * ruby time. Also dump the requests to a gziped file. 354295Sbinkertn@umich.edu * 364295Sbinkertn@umich.edu */ 374295Sbinkertn@umich.edu 384295Sbinkertn@umich.edu#ifndef CACHERECORDER_H 394295Sbinkertn@umich.edu#define CACHERECORDER_H 404295Sbinkertn@umich.edu 414295Sbinkertn@umich.edu#include "mem/ruby/libruby_internal.hh" 424295Sbinkertn@umich.edu 434295Sbinkertn@umich.edu#include "mem/ruby/common/Global.hh" 444295Sbinkertn@umich.edu#include "mem/ruby/system/NodeID.hh" 454295Sbinkertn@umich.edu#include "mem/protocol/CacheRequestType.hh" 464295Sbinkertn@umich.edu 474295Sbinkertn@umich.edutemplate <class TYPE> class PrioHeap; 484295Sbinkertn@umich.educlass Address; 494295Sbinkertn@umich.educlass TraceRecord; 504295Sbinkertn@umich.educlass Sequencer; 514295Sbinkertn@umich.edu 524295Sbinkertn@umich.educlass CacheRecorder { 534202Sbinkertn@umich.edupublic: 544202Sbinkertn@umich.edu // Constructors 554202Sbinkertn@umich.edu CacheRecorder(); 564202Sbinkertn@umich.edu 574202Sbinkertn@umich.edu // Destructor 584202Sbinkertn@umich.edu ~CacheRecorder(); 594202Sbinkertn@umich.edu 604202Sbinkertn@umich.edu // Public Methods 614202Sbinkertn@umich.edu void addRecord(Sequencer* sequencer, 624202Sbinkertn@umich.edu const Address& data_addr, 634202Sbinkertn@umich.edu const Address& pc_addr, 644202Sbinkertn@umich.edu RubyRequestType type, 654202Sbinkertn@umich.edu Time time); 664202Sbinkertn@umich.edu int dumpRecords(string filename); 674202Sbinkertn@umich.edu 684202Sbinkertn@umich.edu void print(ostream& out) const; 694202Sbinkertn@umich.eduprivate: 704202Sbinkertn@umich.edu // Private Methods 714202Sbinkertn@umich.edu 724202Sbinkertn@umich.edu // Private copy constructor and assignment operator 734202Sbinkertn@umich.edu CacheRecorder(const CacheRecorder& obj); 744202Sbinkertn@umich.edu CacheRecorder& operator=(const CacheRecorder& obj); 754202Sbinkertn@umich.edu 764202Sbinkertn@umich.edu // Data Members (m_ prefix) 774202Sbinkertn@umich.edu PrioHeap<TraceRecord>* m_records_ptr; 784202Sbinkertn@umich.edu}; 794202Sbinkertn@umich.edu 804202Sbinkertn@umich.edu// Output operator declaration 814202Sbinkertn@umich.eduostream& operator<<(ostream& out, const CacheRecorder& obj); 824202Sbinkertn@umich.edu 834202Sbinkertn@umich.edu// ******************* Definitions ******************* 844202Sbinkertn@umich.edu 854202Sbinkertn@umich.edu// Output operator definition 864202Sbinkertn@umich.eduextern inline 874202Sbinkertn@umich.eduostream& operator<<(ostream& out, const CacheRecorder& obj) 884202Sbinkertn@umich.edu{ 894202Sbinkertn@umich.edu obj.print(out); 904202Sbinkertn@umich.edu out << flush; 914202Sbinkertn@umich.edu return out; 924202Sbinkertn@umich.edu} 934202Sbinkertn@umich.edu 944202Sbinkertn@umich.edu#endif //CACHERECORDER_H 954202Sbinkertn@umich.edu