diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MESI_CMP_directory-L1cache.sm --- a/src/mem/protocol/MESI_CMP_directory-L1cache.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MESI_CMP_directory-L1cache.sm Wed Oct 24 14:41:26 2012 -0500 @@ -126,7 +126,7 @@ bool isPresent(Address); } - TBETable L1_TBEs, template=""; + TBETable L1_TBEs, template="", constructor="m_number_of_TBEs"; MessageBuffer mandatoryQueue, ordered="false"; diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MESI_CMP_directory-L2cache.sm --- a/src/mem/protocol/MESI_CMP_directory-L2cache.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MESI_CMP_directory-L2cache.sm Wed Oct 24 14:41:26 2012 -0500 @@ -151,7 +151,7 @@ bool isPresent(Address); } - TBETable L2_TBEs, template=""; + TBETable L2_TBEs, template="", constructor="m_number_of_TBEs"; void set_cache_entry(AbstractCacheEntry a); void unset_cache_entry(); diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MESI_CMP_directory-dir.sm --- a/src/mem/protocol/MESI_CMP_directory-dir.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MESI_CMP_directory-dir.sm Wed Oct 24 14:41:26 2012 -0500 @@ -105,7 +105,7 @@ // ** OBJECTS ** - TBETable TBEs, template=""; + TBETable TBEs, template="", constructor="m_number_of_TBEs"; void set_tbe(TBE tbe); void unset_tbe(); diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MI_example-cache.sm --- a/src/mem/protocol/MI_example-cache.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MI_example-cache.sm Wed Oct 24 14:41:26 2012 -0500 @@ -98,7 +98,7 @@ // STRUCTURES - TBETable TBEs, template=""; + TBETable TBEs, template="", constructor="m_number_of_TBEs"; // PROTOTYPES void set_cache_entry(AbstractCacheEntry a); diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MI_example-dir.sm --- a/src/mem/protocol/MI_example-dir.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MI_example-dir.sm Wed Oct 24 14:41:26 2012 -0500 @@ -102,7 +102,7 @@ } // ** OBJECTS ** - TBETable TBEs, template=""; + TBETable TBEs, template="", constructor="m_number_of_TBEs"; void set_tbe(TBE b); void unset_tbe(); diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MOESI_CMP_directory-L1cache.sm --- a/src/mem/protocol/MOESI_CMP_directory-L1cache.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MOESI_CMP_directory-L1cache.sm Wed Oct 24 14:41:26 2012 -0500 @@ -142,7 +142,7 @@ MessageBuffer mandatoryQueue, ordered="false", abstract_chip_ptr="true"; - TBETable TBEs, template=""; + TBETable TBEs, template="", constructor="m_number_of_TBEs"; TimerTable useTimerTable; int l2_select_low_bit, default="RubySystem::getBlockSizeBits()"; diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MOESI_CMP_directory-L2cache.sm --- a/src/mem/protocol/MOESI_CMP_directory-L2cache.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MOESI_CMP_directory-L2cache.sm Wed Oct 24 14:41:26 2012 -0500 @@ -224,8 +224,7 @@ bool isTagPresent(Address); } - - TBETable TBEs, template=""; + TBETable TBEs, template="", constructor="m_number_of_TBEs"; PerfectCacheMemory localDirectory, template=""; void set_cache_entry(AbstractCacheEntry b); diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MOESI_CMP_directory-dir.sm --- a/src/mem/protocol/MOESI_CMP_directory-dir.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MOESI_CMP_directory-dir.sm Wed Oct 24 14:41:26 2012 -0500 @@ -1,4 +1,3 @@ - /* * Copyright (c) 1999-2005 Mark D. Hill and David A. Wood * All rights reserved. @@ -119,7 +118,7 @@ } // ** OBJECTS ** - TBETable TBEs, template=""; + TBETable TBEs, template="", constructor="m_number_of_TBEs"; void set_tbe(TBE b); void unset_tbe(); diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MOESI_CMP_directory-dma.sm --- a/src/mem/protocol/MOESI_CMP_directory-dma.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MOESI_CMP_directory-dma.sm Wed Oct 24 14:41:26 2012 -0500 @@ -44,7 +44,7 @@ MessageBuffer mandatoryQueue, ordered="false"; MessageBuffer triggerQueue, ordered="true"; - TBETable TBEs, template=""; + TBETable TBEs, template="", constructor="m_number_of_TBEs"; State cur_state; void set_tbe(TBE b); diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MOESI_CMP_token-L1cache.sm --- a/src/mem/protocol/MOESI_CMP_token-L1cache.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MOESI_CMP_token-L1cache.sm Wed Oct 24 14:41:26 2012 -0500 @@ -180,7 +180,7 @@ void wakeUpAllBuffers(); void wakeUpBuffers(Address a); - TBETable L1_TBEs, template=""; + TBETable L1_TBEs, template="", constructor="m_number_of_TBEs"; MessageBuffer mandatoryQueue, ordered="false", abstract_chip_ptr="true"; diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MOESI_CMP_token-dir.sm --- a/src/mem/protocol/MOESI_CMP_token-dir.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MOESI_CMP_token-dir.sm Wed Oct 24 14:41:26 2012 -0500 @@ -157,7 +157,7 @@ PersistentTable persistentTable; TimerTable reissueTimerTable; - TBETable TBEs, template=""; + TBETable TBEs, template="", constructor="m_number_of_TBEs"; bool starving, default="false"; int l2_select_low_bit, default="RubySystem::getBlockSizeBits()"; diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MOESI_hammer-cache.sm --- a/src/mem/protocol/MOESI_hammer-cache.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MOESI_hammer-cache.sm Wed Oct 24 14:41:26 2012 -0500 @@ -173,7 +173,7 @@ bool isPresent(Address); } - TBETable TBEs, template=""; + TBETable TBEs, template="", constructor="m_number_of_TBEs"; void set_cache_entry(AbstractCacheEntry b); void unset_cache_entry(); diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/MOESI_hammer-dir.sm --- a/src/mem/protocol/MOESI_hammer-dir.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/MOESI_hammer-dir.sm Wed Oct 24 14:41:26 2012 -0500 @@ -184,7 +184,7 @@ Set fwd_set; - TBETable TBEs, template=""; + TBETable TBEs, template="", constructor="m_number_of_TBEs"; Entry getDirectoryEntry(Address addr), return_by_pointer="yes" { Entry dir_entry := static_cast(Entry, "pointer", directory[addr]); diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/Network_test-cache.sm --- a/src/mem/protocol/Network_test-cache.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/Network_test-cache.sm Wed Oct 24 14:41:26 2012 -0500 @@ -66,25 +66,6 @@ DataBlock DataBlk, desc="Data in the block"; } - // TBE fields - structure(TBE, desc="...") { - State TBEState, desc="Transient state"; - DataBlock DataBlk, desc="data for the block, required for concurrent writebacks"; - } - - structure(TBETable, external="yes") { - TBE lookup(Address); - void allocate(Address); - void deallocate(Address); - bool isPresent(Address); - } - - - // STRUCTURES - - TBETable TBEs, template=""; - - // FUNCTIONS // cpu/testers/networktest/networktest.cc generates packets of the type @@ -112,11 +93,11 @@ } - State getState(TBE tbe, Entry cache_entry, Address addr) { + State getState(Entry cache_entry, Address addr) { return State:I; } - void setState(TBE tbe, Entry cache_entry, Address addr, State state) { + void setState(Entry cache_entry, Address addr, State state) { } @@ -146,9 +127,7 @@ if (mandatoryQueue_in.isReady()) { peek(mandatoryQueue_in, RubyRequest) { trigger(mandatory_request_type_to_event(in_msg.Type), - in_msg.LineAddress, - getCacheEntry(in_msg.LineAddress), - TBEs[in_msg.LineAddress]); + in_msg.LineAddress, getCacheEntry(in_msg.LineAddress)); } } } diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/protocol/RubySlicc_Exports.sm --- a/src/mem/protocol/RubySlicc_Exports.sm Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/protocol/RubySlicc_Exports.sm Wed Oct 24 14:41:26 2012 -0500 @@ -31,6 +31,7 @@ external_type(int, primitive="yes", default="0"); external_type(bool, primitive="yes", default="false"); external_type(std::string, primitive="yes"); +external_type(uint32_t, primitive="yes"); external_type(uint64, primitive="yes"); external_type(Time, primitive="yes", default="0"); external_type(PacketPtr, primitive="yes"); diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/ruby/slicc_interface/AbstractController.hh --- a/src/mem/ruby/slicc_interface/AbstractController.hh Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/ruby/slicc_interface/AbstractController.hh Wed Oct 24 14:41:26 2012 -0500 @@ -39,6 +39,7 @@ #include "mem/ruby/common/DataBlock.hh" #include "mem/ruby/network/Network.hh" #include "mem/ruby/recorder/CacheRecorder.hh" +#include "mem/ruby/system/MachineID.hh" #include "params/RubyController.hh" #include "sim/sim_object.hh" @@ -82,6 +83,24 @@ //! Function for enqueuing a prefetch request virtual void enqueuePrefetch(const Address&, const RubyRequestType&) { fatal("Prefetches not implemented!");} + + protected: + int m_transitions_per_cycle; + int m_buffer_size; + int m_recycle_latency; + std::string m_name; + std::map m_cfg; + NodeID m_version; + Network* m_net_ptr; + MachineID m_machineID; + bool m_is_blocking; + std::map m_block_map; + typedef std::vector MsgVecType; + typedef std::map< Address, MsgVecType* > WaitingBufType; + WaitingBufType m_waiting_buffers; + int m_max_in_port_rank; + int m_cur_in_port_rank; + int m_number_of_TBEs; }; #endif // __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCONTROLLER_HH__ diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/ruby/slicc_interface/AbstractController.cc --- a/src/mem/ruby/slicc_interface/AbstractController.cc Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/ruby/slicc_interface/AbstractController.cc Wed Oct 24 14:41:26 2012 -0500 @@ -32,5 +32,11 @@ AbstractController::AbstractController(const Params *p) : SimObject(p), Consumer(this) { - p->ruby_system->registerAbstractController(this); + m_version = p->version; + m_transitions_per_cycle = p->transitions_per_cycle; + m_buffer_size = p->buffer_size; + m_recycle_latency = p->recycle_latency; + m_number_of_TBEs = p->number_of_TBEs; + m_is_blocking = false; + p->ruby_system->registerAbstractController(this); } diff -r 0c088aab5fdf -r cb9c01eda983 src/mem/slicc/symbols/StateMachine.py --- a/src/mem/slicc/symbols/StateMachine.py Wed Oct 24 14:40:42 2012 -0500 +++ b/src/mem/slicc/symbols/StateMachine.py Wed Oct 24 14:41:26 2012 -0500 @@ -33,6 +33,7 @@ import re python_class_map = {"int": "Int", + "uint32_t" : "UInt32", "std::string": "String", "bool": "Bool", "CacheMemory": "RubyCache", @@ -260,7 +261,6 @@ void wakeUpAllBuffers(); void initNetworkPtr(Network* net_ptr) { m_net_ptr = net_ptr; } void print(std::ostream& out) const; - void printConfig(std::ostream& out) const; void wakeup(); void printStats(std::ostream& out) const; void clearStats(); @@ -284,8 +284,6 @@ code('${{param.type_ast.type}} m_${{param.ident}};') code(''' -int m_number_of_TBEs; - TransitionResult doTransition(${ident}_Event event, ''') @@ -318,21 +316,6 @@ code(''' const Address& addr); -std::string m_name; -int m_transitions_per_cycle; -int m_buffer_size; -int m_recycle_latency; -std::map m_cfg; -NodeID m_version; -Network* m_net_ptr; -MachineID m_machineID; -bool m_is_blocking; -std::map m_block_map; -typedef std::vector MsgVecType; -typedef std::map< Address, MsgVecType* > WaitingBufType; -WaitingBufType m_waiting_buffers; -int m_max_in_port_rank; -int m_cur_in_port_rank; static ${ident}_ProfileDumper s_profileDumper; ${ident}_Profiler m_profiler; static int m_num_controllers; @@ -464,12 +447,6 @@ $c_ident::$c_ident(const Params *p) : AbstractController(p) { - m_version = p->version; - m_transitions_per_cycle = p->transitions_per_cycle; - m_buffer_size = p->buffer_size; - m_recycle_latency = p->recycle_latency; - m_number_of_TBEs = p->number_of_TBEs; - m_is_blocking = false; m_name = "${ident}"; ''') # @@ -573,14 +550,9 @@ elif var.ident.find("mandatoryQueue") < 0: th = var.get("template", "") expr = "%s = new %s%s" % (vid, vtype.c_ident, th) - args = "" if "non_obj" not in vtype and not vtype.isEnumeration: - if expr.find("TBETable") >= 0: - args = "m_number_of_TBEs" - else: - args = var.get("constructor_hack", "") - + args = var.get("constructor", "") code('$expr($args);') code('assert($vid != NULL);') @@ -825,16 +797,6 @@ } void -$c_ident::printConfig(ostream& out) const -{ - out << "$c_ident config: " << m_name << endl; - out << " version: " << m_version << endl; - map::const_iterator it; - for (it = m_cfg.begin(); it != m_cfg.end(); it++) - out << " " << it->first << ": " << it->second << endl; -} - -void $c_ident::printStats(ostream& out) const { ''')