I would grep through the slicc source for GEMS 1.2 for non_constant_msg_hack. It probably appears in either slicc/ast or slicc/symbol. I have no idea what the hack did.
--Mike
On Sat, Mar 22, 2008 at 8:57 PM, Dimitris Kaseridis < kaseridi@xxxxxxxxxxxxxx> wrote:
Hi,
I am porting DNUCA to gems 2.0 and I have a problem with a "special"
command in MOESI_CMP_NUCA-L1cache.sm file.
I used the protocol files of gems1.2 version and I have included in
gems 2.0 source all the necessary parts
of the code from gems1.2 that is necessary to implement the NUCA protocol.
My problem is that in the MOESI_CMP_NUCA-L1cache.sm in line 520 you
can find this piece of code:
in_port(triggerQueue_in, NUCAPotentialMoveMsg, triggerQueue) {
if(triggerQueue_in.isReady()) {
peek(triggerQueue_in, NUCAPotentialMoveMsg, non_constant_msg_hack="yes") {
The "non_constant_msg_hack" is somekind of hack that is not used
elsewhere and it is not possible to pass through the compile.
If I try to compile I have the following error message:
####################################################
mkdir -p generated/MOESI_CMP_NUCA/
mkdir -p html/MOESI_CMP_NUCA/
touch generated/MOESI_CMP_NUCA/created
touch html/MOESI_CMP_NUCA/created
Generating protocol handlers
/opt/gems-2.0//slicc/amd64-linux/bin/slicc.exec
generated/MOESI_CMP_NUCA html/MOESI_CMP_NUCA MOESI_CMP_NUCA "html"
../protocols/RubySlicc_Exports.sm ../protocols/RubySlicc_Types.sm
../protocols/RubySlicc_Util.sm
../protocols/RubySlicc_ComponentMapping.sm
../protocols/RubySlicc_Profiler.sm ../protocols/RubySlicc_Defines.sm
../protocols/MOESI_CMP_NUCA-msg.sm
../protocols/MOESI_CMP_NUCA-L1cache.sm
../protocols/MOESI_CMP_NUCA-L2cache.sm
../protocols/MOESI_CMP_NUCA-dir.sm ../protocols/MOESI_CMP_NUCA-col.sm
../protocols/NUCA_CMP-node.sm
SLICC v0.3
Parsing...
../protocols/RubySlicc_Exports.sm
../protocols/RubySlicc_Types.sm
../protocols/RubySlicc_Util.sm
../protocols/RubySlicc_ComponentMapping.sm
../protocols/RubySlicc_Profiler.sm
../protocols/RubySlicc_Defines.sm
../protocols/MOESI_CMP_NUCA-msg.sm
../protocols/MOESI_CMP_NUCA-L1cache.sm
../protocols/MOESI_CMP_NUCA-L1cache.sm:522: syntax error, unexpected
',', expecting ')' at ,
make[1]: *** [generated/MOESI_CMP_NUCA/generated] Error 1
make[1]: Leaving directory `/local/opt/gems-2.0/ruby'
make: *** [all] Error 2
###############################################################
If I take out this special part of the protocol and I use it like the following
##############################################################
in_port(triggerQueue_in, NUCAPotentialMoveMsg, triggerQueue) {
if(triggerQueue_in.isReady()) {
peek(triggerQueue_in, NUCAPotentialMoveMsg) {
###########################################################
Then I am able to compile and have a running version of ruby but after
a couple of instructions I have a segmentation fault. After debugging
ruby I have this error message:
######################################################
Debug: in fn bool CacheMemory<ENTRY>::isTagPresent(const Address&)
const [with ENTRY = L1Cache_Entry] in system/CacheMemory.h:482:
address is [0x3882c0c0, line 0x3882c0c0]
Debug: in fn bool CacheMemory<ENTRY>::isTagPresent(const Address&)
const [with ENTRY = L1Cache_Entry] in system/CacheMemory.h:483: found
Debug: in fn bool CacheMemory<ENTRY>::isTagPresent(const Address&)
const [with ENTRY = L1Cache_Entry] in system/CacheMemory.h:478:
address is [0x3882c0c0, line 0x3882c0c0]
Debug: in fn bool CacheMemory<ENTRY>::isTagPresent(const Address&)
const [with ENTRY = L1Cache_Entry] in system/CacheMemory.h:479: No tag
match
Debug: in fn const Message* MessageBuffer::peekAtHeadOfQueue() const
in buffers/MessageBuffer.C:166: Peeking at head of queue [Chip 0 7,
L1Cache, triggerQueue_in] time: 314.
Debug: in fn const Message* MessageBuffer::peekAtHeadOfQueue() const
in buffers/MessageBuffer.C:172: *msg_ptr is [NUCAPotentialMoveMsg:
Address=[0x3882c0c0, line 0x3882c0c0] PC=[0x1055454, line 0x1055440]
requestType=LD respondingMach=Directory-3 currentTokens=1024
Request=NULL-NULL-610931536 NULL-NULL-0 Persistent=1
collectorMergeResponse=0 L2HomeBank=NULL--1294385057 Time=313 ]
Fatal Error: in fn std::string MachineType_to_string(const
MachineType&) in generated/MOESI_CMP_NUCA/MachineType.C:27: Invalid
range for type MachineType
Error: iFatal Error: in fn std::string MachineType_to_string(const
MachineType&) in generated/MOESI_CMP_NUCA/MachineType.C:27: Invalid
range for type MachineType
Abort (SIGABRT) in main thread
The simulation state has been corrupted. Simulation cannot continue.
####################################################3
Going through the documentation site you propose to other people to
take out the ERROR_MSG(\"Invalid range for type ") that has to do
with the MachineType through the slicc/symbols/Type.C file.
After doing that I pass the previous point but during the allocation
that follows I receive the following error message:
#####################################################
Debug: in fn bool CacheMemory<ENTRY>::isTagPresent(const Address&)
const [with ENTRY = L1Cache_Entry] in system/CacheMemory.h:482:
address is [0x3882c0c0, line 0x3882c0c0]
Debug: in fn bool CacheMemory<ENTRY>::isTagPresent(const Address&)
const [with ENTRY = L1Cache_Entry] in system/CacheMemory.h:483: found
Debug: in fn bool CacheMemory<ENTRY>::isTagPresent(const Address&)
const [with ENTRY = L1Cache_Entry] in system/CacheMemory.h:478:
address is [0x3882c0c0, line 0x3882c0c0]
Debug: in fn bool CacheMemory<ENTRY>::isTagPresent(const Address&)
const [with ENTRY = L1Cache_Entry] in system/CacheMemory.h:479: No tag
match
Debug: in fn const Message* MessageBuffer::peekAtHeadOfQueue() const
in buffers/MessageBuffer.C:166: Peeking at head of queue [Chip 0 7,
L1Cache, triggerQueue_in] time: 314.
Debug: in fn const Message* MessageBuffer::peekAtHeadOfQueue() const
in buffers/MessageBuffer.C:172: *msg_ptr is [NUCAPotentialMoveMsg:
Address=[0x3882c0c0, line 0x3882c0c0] PC=[0x1055454, line 0x1055440]
requestType=LD respondingMach=Directory-3 currentTokens=1024
Request=NULL-NULL-355557312 NULL-NULL-0 Persistent=1
collectorMergeResponse=0 L2HomeBank=NULL--1216606833 Time=313 ]
Error: i
INDEX= -1
failed assertion 'index >= 0' at fn TYPE& Vector<TYPE>::ref(int) [with
TYPE = Set] in /opt/gems-2.0//common/Vector.h:171
failed assertion 'index >= 0' at fn TYPE& Vector<TYPE>::ref(int) [with
TYPE = Set] in /opt/gems-2.0//common/Vector.h:171
##############################################
Notice that the index is coming out to be -1. In previous examples of
such an error you say that it is probably a misconfiguration but
I can't find any errors in my configuration.
I use the default values you have in the CMP-NUCA wiki pages and
everytime I start simics I apply the following values:
###############################################3
instruction-fetch-mode instruction-fetch-trace
istc-disable
dstc-disable
magic-break-enable
# Load modules
load-module ruby
# Setup
ruby0.setparam g_NUM_PROCESSORS 8
ruby0.setparam g_MEMORY_SIZE_BYTES 4294967296
ruby0.setparam g_PROCS_PER_CHIP 8
ruby0.setparam g_NUM_L2_BANKS 256
ruby0.setparam g_NUM_MEMORIES 8
ruby0.setparam g_NUM_DNUCA_BANK_SETS 16
ruby0.setparam L1_CACHE_ASSOC 2
ruby0.setparam L2_CACHE_ASSOC 16
ruby0.setparam_str g_NETWORK_TOPOLOGY FILE_SPECIFIED
ruby0.setparam_str g_DYNAMIC_TIMEOUT_ENABLED false
ruby0.setparam_str REMOVE_SINGLE_CYCLE_DCACHE_FAST_PATH true
ruby0.setparam_str g_CACHE_DESIGN NUCACOL
ruby0.setparam_str g_adaptive_routing false
ruby0.setparam NUMBER_OF_VIRTUAL_NETWORKS 7
ruby0.setparam g_endpoint_bandwidth 1000
ruby0.setparam_str g_NUCA_PREDICTOR_CONFIG DNUCA
ruby0.setparam_str ENABLE_MIGRATION true
ruby0.setparam_str COLLECTOR_HANDLES_OFF_CHIP_REQUESTS true
#ruby0.setparam_str PERFECT_DNUCA_SEARCH true
ruby0.setparam_str PERFECT_DNUCA_SEARCH false
# Initialization
ruby0.init
#####################################################
this is the reason I believe that it has sth to do with the "
peek(triggerQueue_in, NUCAPotentialMoveMsg,
non_constant_msg_hack="yes") { " command that I describe in the
beginning of the email and it is not obvious to me
neither what it is doing nor the place in the slicc (?) code that it
is handled.
Any help would be really appreciated
Thanks,
Dimitris
_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.
|