summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTushar Krishna <tushar@ece.gatech.edu>2016-10-06 14:35:14 -0400
committerTushar Krishna <tushar@ece.gatech.edu>2016-10-06 14:35:14 -0400
commitaca869bf2dba8cc7a7b06be223b84fa0376a59e9 (patch)
tree85c82c75158f88133bad87ea4b9c877ed42d23fd
parent3f0118876f109d0fb94f06687e8d695835a03636 (diff)
downloadgem5-aca869bf2dba8cc7a7b06be223b84fa0376a59e9.tar.xz
ruby: rename ALPHA_Network_test protocol to Garnet_standalone.
Over the past 6 years, we realized that the protocol is essentially used to run the garnet network in a standalone manner, and feed standard synthetic traffic patterns through it.
-rw-r--r--build_opts/Garnet_standalone (renamed from build_opts/ALPHA_Network_test)3
-rw-r--r--configs/ruby/Garnet_standalone.py (renamed from configs/ruby/Network_test.py)18
-rw-r--r--src/mem/protocol/Garnet_standalone-cache.sm (renamed from src/mem/protocol/Network_test-cache.sm)22
-rw-r--r--src/mem/protocol/Garnet_standalone-dir.sm (renamed from src/mem/protocol/Network_test-dir.sm)8
-rw-r--r--src/mem/protocol/Garnet_standalone-msg.sm (renamed from src/mem/protocol/Network_test-msg.sm)10
-rw-r--r--src/mem/protocol/Garnet_standalone.slicc5
-rw-r--r--src/mem/protocol/Network_test.slicc5
-rw-r--r--src/mem/protocol/SConsopts2
-rw-r--r--src/mem/ruby/system/GPUCoalescer.cc6
-rw-r--r--src/mem/ruby/system/GPUCoalescer.hh2
-rw-r--r--src/mem/ruby/system/Sequencer.cc6
-rw-r--r--src/mem/ruby/system/Sequencer.hh2
-rw-r--r--src/mem/ruby/system/Sequencer.py2
13 files changed, 48 insertions, 43 deletions
diff --git a/build_opts/ALPHA_Network_test b/build_opts/Garnet_standalone
index 011f81754..46ae29a45 100644
--- a/build_opts/ALPHA_Network_test
+++ b/build_opts/Garnet_standalone
@@ -1,3 +1,4 @@
+TARGET_ISA = 'alpha'
SS_COMPATIBLE_FP = 1
CPU_MODELS = 'AtomicSimpleCPU,TimingSimpleCPU,O3CPU,MinorCPU'
-PROTOCOL = 'Network_test'
+PROTOCOL = 'Garnet_standalone'
diff --git a/configs/ruby/Network_test.py b/configs/ruby/Garnet_standalone.py
index df3985cc1..2897e73a4 100644
--- a/configs/ruby/Network_test.py
+++ b/configs/ruby/Garnet_standalone.py
@@ -1,5 +1,5 @@
-# Copyright (c) 2006-2007 The Regents of The University of Michigan
# Copyright (c) 2009 Advanced Micro Devices, Inc.
+# Copyright (c) 2016 Georgia Institute of Technology
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -26,6 +26,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Authors: Brad Beckmann
+# Tushar Krishna
import m5
from m5.objects import *
@@ -42,22 +43,21 @@ def define_options(parser):
return
def create_system(options, full_system, system, dma_ports, ruby_system):
-
- if buildEnv['PROTOCOL'] != 'Network_test':
- panic("This script requires the Network_test protocol to be built.")
+ if buildEnv['PROTOCOL'] != 'Garnet_standalone':
+ panic("This script requires Garnet_standalone protocol to be built.")
cpu_sequencers = []
#
- # The Garnet tester protocol does not support fs nor dma
+ # The Garnet_standalone protocol does not support fs nor dma
#
assert(dma_ports == [])
#
# The ruby network creation expects the list of nodes in the system to be
- # consistent with the NetDest list. Therefore the l1 controller nodes must be
- # listed before the directory nodes and directory nodes before dma nodes, etc.
- #
+ # consistent with the NetDest list.
+ # Therefore the l1 controller nodes must be listed before
+ # the directory nodes and directory nodes before dma nodes, etc.
l1_cntrl_nodes = []
dir_cntrl_nodes = []
@@ -84,7 +84,7 @@ def create_system(options, full_system, system, dma_ports, ruby_system):
cpu_seq = RubySequencer(icache = cache,
dcache = cache,
- using_network_tester = True,
+ garnet_standalone = True,
ruby_system = ruby_system)
l1_cntrl.sequencer = cpu_seq
diff --git a/src/mem/protocol/Network_test-cache.sm b/src/mem/protocol/Garnet_standalone-cache.sm
index 39ec3b986..301c6d17b 100644
--- a/src/mem/protocol/Network_test-cache.sm
+++ b/src/mem/protocol/Garnet_standalone-cache.sm
@@ -31,7 +31,7 @@
*/
-machine(MachineType:L1Cache, "Network_test L1 Cache")
+machine(MachineType:L1Cache, "Garnet_standalone L1 Cache")
: Sequencer * sequencer;
Cycles issue_latency := 2;
@@ -53,9 +53,9 @@ machine(MachineType:L1Cache, "Network_test L1 Cache")
// EVENTS
enumeration(Event, desc="Cache events") {
// From processor
- Request, desc="Request from Network_test";
- Forward, desc="Forward from Network_test";
- Response, desc="Response from Network_test";
+ Request, desc="Request from Garnet_standalone";
+ Forward, desc="Forward from Garnet_standalone";
+ Response, desc="Response from Garnet_standalone";
}
// STRUCTURE DEFINITIONS
@@ -74,7 +74,7 @@ machine(MachineType:L1Cache, "Network_test L1 Cache")
// ReadReq, INST_FETCH, and WriteReq.
// These are converted to LD, IFETCH and ST by mem/ruby/system/RubyPort.cc.
// These are then sent to the sequencer, which sends them here.
- // Network_test-cache.sm tags LD, IFETCH and ST as Request, Forward,
+ // Garnet_standalone-cache.sm tags LD, IFETCH and ST as Request, Forward,
// and Response Events respectively, which are then injected into
// virtual networks 0, 1 and 2 respectively.
// This models traffic of different types within the network.
@@ -115,11 +115,11 @@ machine(MachineType:L1Cache, "Network_test L1 Cache")
}
void functionalRead(Addr addr, Packet *pkt) {
- error("Network test does not support functional read.");
+ error("Garnet_standalone does not support functional read.");
}
int functionalWrite(Addr addr, Packet *pkt) {
- error("Network test does not support functional write.");
+ error("Garnet_standalone does not support functional write.");
}
// NETWORK PORTS
@@ -149,7 +149,11 @@ machine(MachineType:L1Cache, "Network_test L1 Cache")
out_msg.Type := CoherenceRequestType:MSG;
out_msg.Requestor := machineID;
out_msg.Destination.add(map_Address_to_Directory(address));
- //out_msg.Destination := broadcast(MachineType:Directory);
+
+ // To send broadcasts in vnet0 (to emulate broadcast-based protocols),
+ // replace the above line by the following:
+ // out_msg.Destination := broadcast(MachineType:Directory);
+
out_msg.MessageSize := MessageSizeType:Control;
}
}
@@ -190,7 +194,7 @@ machine(MachineType:L1Cache, "Network_test L1 Cache")
// TRANSITIONS
// sequencer hit call back is performed after injecting the packets.
- // The goal of the Network_test protocol is only to inject packets into
+ // The goal of the Garnet_standalone protocol is only to inject packets into
// the network, not to keep track of them via TBEs.
transition(I, Response) {
diff --git a/src/mem/protocol/Network_test-dir.sm b/src/mem/protocol/Garnet_standalone-dir.sm
index f7feea4d5..3a4327972 100644
--- a/src/mem/protocol/Network_test-dir.sm
+++ b/src/mem/protocol/Garnet_standalone-dir.sm
@@ -31,7 +31,7 @@
*/
-machine(MachineType:Directory, "Network_test Directory")
+machine(MachineType:Directory, "Garnet_standalone Directory")
: MessageBuffer * requestToDir, network="From", virtual_network="0",
vnet_type = "request";
MessageBuffer * forwardToDir, network="From", virtual_network="1",
@@ -79,11 +79,11 @@ machine(MachineType:Directory, "Network_test Directory")
}
void functionalRead(Addr addr, Packet *pkt) {
- error("Network test does not support functional read.");
+ error("Garnet_standalone does not support functional read.");
}
int functionalWrite(Addr addr, Packet *pkt) {
- error("Network test does not support functional write.");
+ error("Garnet_standalone does not support functional write.");
}
// ** IN_PORTS **
@@ -139,7 +139,7 @@ machine(MachineType:Directory, "Network_test Directory")
// TRANSITIONS
// The directory simply drops the received packets.
- // The goal of Network_test is only to track network stats.
+ // The goal of Garnet_standalone is only to track network stats.
transition(I, Receive_Request) {
i_popIncomingRequestQueue;
diff --git a/src/mem/protocol/Network_test-msg.sm b/src/mem/protocol/Garnet_standalone-msg.sm
index 7bc2e396d..2232e0ff0 100644
--- a/src/mem/protocol/Network_test-msg.sm
+++ b/src/mem/protocol/Garnet_standalone-msg.sm
@@ -34,18 +34,18 @@ enumeration(CoherenceRequestType, desc="...") {
// RequestMsg (and also forwarded requests)
structure(RequestMsg, desc="...", interface="Message") {
- Addr addr, desc="Physical address for this request";
+ Addr addr, desc="Physical address for this request";
CoherenceRequestType Type, desc="Type of request (GetS, GetX, PutX, etc)";
- MachineID Requestor, desc="Node who initiated the request";
- NetDest Destination, desc="Multicast destination mask";
+ MachineID Requestor, desc="Node who initiated the request";
+ NetDest Destination, desc="Multicast destination mask";
DataBlock DataBlk, desc="data for the cache line";
MessageSizeType MessageSize, desc="size category of the message";
bool functionalRead(Packet *pkt) {
- error("Network test does not support functional accesses!");
+ error("Garnet_standalone does not support functional accesses!");
}
bool functionalWrite(Packet *pkt) {
- error("Network test does not support functional accesses!");
+ error("Garnet_standalone does not support functional accesses!");
}
}
diff --git a/src/mem/protocol/Garnet_standalone.slicc b/src/mem/protocol/Garnet_standalone.slicc
new file mode 100644
index 000000000..e467f34c1
--- /dev/null
+++ b/src/mem/protocol/Garnet_standalone.slicc
@@ -0,0 +1,5 @@
+protocol "Garnet_standalone";
+include "RubySlicc_interfaces.slicc";
+include "Garnet_standalone-msg.sm";
+include "Garnet_standalone-cache.sm";
+include "Garnet_standalone-dir.sm";
diff --git a/src/mem/protocol/Network_test.slicc b/src/mem/protocol/Network_test.slicc
deleted file mode 100644
index a065a8535..000000000
--- a/src/mem/protocol/Network_test.slicc
+++ /dev/null
@@ -1,5 +0,0 @@
-protocol "Network_test";
-include "RubySlicc_interfaces.slicc";
-include "Network_test-msg.sm";
-include "Network_test-cache.sm";
-include "Network_test-dir.sm";
diff --git a/src/mem/protocol/SConsopts b/src/mem/protocol/SConsopts
index 47b36e276..54cd4dbc0 100644
--- a/src/mem/protocol/SConsopts
+++ b/src/mem/protocol/SConsopts
@@ -44,7 +44,7 @@ all_protocols.extend([
'MOESI_CMP_directory',
'MOESI_CMP_token',
'MOESI_hammer',
- 'Network_test',
+ 'Garnet_standalone',
'None'
])
diff --git a/src/mem/ruby/system/GPUCoalescer.cc b/src/mem/ruby/system/GPUCoalescer.cc
index 1c57f6c4d..fefda4d47 100644
--- a/src/mem/ruby/system/GPUCoalescer.cc
+++ b/src/mem/ruby/system/GPUCoalescer.cc
@@ -142,7 +142,7 @@ GPUCoalescer::GPUCoalescer(const Params *p)
m_data_cache_hit_latency = p->dcache_hit_latency;
- m_usingNetworkTester = p->using_network_tester;
+ m_runningGarnetStandalone = p->garnet_standalone;
assumingRfOCoherence = p->assume_rfo;
}
@@ -516,10 +516,10 @@ GPUCoalescer::writeCallback(Addr address,
// For Alpha, properly handle LL, SC, and write requests with respect to
// locked cache blocks.
//
- // Not valid for Network_test protocl
+ // Not valid for Garnet_standalone protocl
//
bool success = true;
- if (!m_usingNetworkTester)
+ if (!m_runningGarnetStandalone)
success = handleLlsc(address, request);
if (request->m_type == RubyRequestType_Locked_RMW_Read) {
diff --git a/src/mem/ruby/system/GPUCoalescer.hh b/src/mem/ruby/system/GPUCoalescer.hh
index dbd47059c..fcf7cecf4 100644
--- a/src/mem/ruby/system/GPUCoalescer.hh
+++ b/src/mem/ruby/system/GPUCoalescer.hh
@@ -291,7 +291,7 @@ class GPUCoalescer : public RubyPort
int m_load_waiting_on_store_cycles;
int m_load_waiting_on_load_cycles;
- bool m_usingNetworkTester;
+ bool m_runningGarnetStandalone;
class GPUCoalescerWakeupEvent : public Event
{
diff --git a/src/mem/ruby/system/Sequencer.cc b/src/mem/ruby/system/Sequencer.cc
index cf3edb904..982c1c811 100644
--- a/src/mem/ruby/system/Sequencer.cc
+++ b/src/mem/ruby/system/Sequencer.cc
@@ -71,7 +71,7 @@ Sequencer::Sequencer(const Params *p)
assert(m_data_cache_hit_latency > 0);
assert(m_inst_cache_hit_latency > 0);
- m_usingNetworkTester = p->using_network_tester;
+ m_runningGarnetStandalone = p->garnet_standalone;
}
Sequencer::~Sequencer()
@@ -386,10 +386,10 @@ Sequencer::writeCallback(Addr address, DataBlock& data,
// For Alpha, properly handle LL, SC, and write requests with respect to
// locked cache blocks.
//
- // Not valid for Network_test protocl
+ // Not valid for Garnet_standalone protocl
//
bool success = true;
- if (!m_usingNetworkTester)
+ if (!m_runningGarnetStandalone)
success = handleLlsc(address, request);
// Handle SLICC block_on behavior for Locked_RMW accesses. NOTE: the
diff --git a/src/mem/ruby/system/Sequencer.hh b/src/mem/ruby/system/Sequencer.hh
index 2a2f49587..8c009b567 100644
--- a/src/mem/ruby/system/Sequencer.hh
+++ b/src/mem/ruby/system/Sequencer.hh
@@ -201,7 +201,7 @@ class Sequencer : public RubyPort
int m_coreId;
- bool m_usingNetworkTester;
+ bool m_runningGarnetStandalone;
//! Histogram for number of outstanding requests per cycle.
Stats::Histogram m_outstandReqHist;
diff --git a/src/mem/ruby/system/Sequencer.py b/src/mem/ruby/system/Sequencer.py
index 5b6a673da..ed142e914 100644
--- a/src/mem/ruby/system/Sequencer.py
+++ b/src/mem/ruby/system/Sequencer.py
@@ -73,7 +73,7 @@ class RubySequencer(RubyPort):
"max requests (incl. prefetches) outstanding")
deadlock_threshold = Param.Cycles(500000,
"max outstanding cycles for a request before deadlock/livelock declared")
- using_network_tester = Param.Bool(False, "")
+ garnet_standalone = Param.Bool(False, "")
# id used by protocols that support multiple sequencers per controller
# 99 is the dummy default value
coreid = Param.Int(99, "CorePair core id")