summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mem/protocol/MESI_CMP_directory-L1cache.sm10
-rw-r--r--src/mem/protocol/MESI_CMP_directory-L2cache.sm14
-rw-r--r--src/mem/protocol/MESI_CMP_directory-dir.sm8
-rw-r--r--src/mem/protocol/MESI_CMP_directory-dma.sm4
-rw-r--r--src/mem/protocol/MOESI_CMP_directory-L1cache.sm10
-rw-r--r--src/mem/protocol/MOESI_CMP_directory-L2cache.sm14
-rw-r--r--src/mem/protocol/MOESI_CMP_directory-dir.sm12
-rw-r--r--src/mem/protocol/MOESI_CMP_directory-dma.sm12
-rw-r--r--src/mem/protocol/MOESI_CMP_token-L1cache.sm12
-rw-r--r--src/mem/protocol/MOESI_CMP_token-L2cache.sm14
-rw-r--r--src/mem/protocol/MOESI_CMP_token-dir.sm18
-rw-r--r--src/mem/protocol/MOESI_CMP_token-dma.sm4
-rw-r--r--src/mem/protocol/MOESI_hammer-cache.sm10
-rw-r--r--src/mem/protocol/MOESI_hammer-dir.sm14
-rw-r--r--src/mem/protocol/MOESI_hammer-dma.sm4
-rw-r--r--src/mem/protocol/Network_test-cache.sm6
-rw-r--r--src/mem/protocol/Network_test-dir.sm6
-rw-r--r--src/mem/ruby/network/Network.hh4
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc10
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh6
-rw-r--r--src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc6
-rw-r--r--src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh6
-rw-r--r--src/mem/ruby/network/simple/SimpleNetwork.cc6
-rw-r--r--src/mem/ruby/network/simple/SimpleNetwork.hh4
-rw-r--r--src/mem/slicc/symbols/StateMachine.py3
25 files changed, 116 insertions, 101 deletions
diff --git a/src/mem/protocol/MESI_CMP_directory-L1cache.sm b/src/mem/protocol/MESI_CMP_directory-L1cache.sm
index 26f5b1ff6..d0fc61e90 100644
--- a/src/mem/protocol/MESI_CMP_directory-L1cache.sm
+++ b/src/mem/protocol/MESI_CMP_directory-L1cache.sm
@@ -39,17 +39,17 @@ machine(L1Cache, "MSI Directory L1 Cache CMP")
// NODE L1 CACHE
// From this node's L1 cache TO the network
// a local L1 -> this L2 bank, currently ordered with directory forwarded requests
- MessageBuffer requestFromL1Cache, network="To", virtual_network="0", ordered="false";
+ MessageBuffer requestFromL1Cache, network="To", virtual_network="0", ordered="false", vnet_type="request";
// a local L1 -> this L2 bank
- MessageBuffer responseFromL1Cache, network="To", virtual_network="1", ordered="false";
- MessageBuffer unblockFromL1Cache, network="To", virtual_network="2", ordered="false";
+ MessageBuffer responseFromL1Cache, network="To", virtual_network="1", ordered="false", vnet_type="response";
+ MessageBuffer unblockFromL1Cache, network="To", virtual_network="2", ordered="false", vnet_type="unblock";
// To this node's L1 cache FROM the network
// a L2 bank -> this L1
- MessageBuffer requestToL1Cache, network="From", virtual_network="0", ordered="false";
+ MessageBuffer requestToL1Cache, network="From", virtual_network="0", ordered="false", vnet_type="request";
// a L2 bank -> this L1
- MessageBuffer responseToL1Cache, network="From", virtual_network="1", ordered="false";
+ MessageBuffer responseToL1Cache, network="From", virtual_network="1", ordered="false", vnet_type="response";
// STATES
state_declaration(State, desc="Cache states", default="L1Cache_State_I") {
diff --git a/src/mem/protocol/MESI_CMP_directory-L2cache.sm b/src/mem/protocol/MESI_CMP_directory-L2cache.sm
index 42fe0823f..771a2dfb2 100644
--- a/src/mem/protocol/MESI_CMP_directory-L2cache.sm
+++ b/src/mem/protocol/MESI_CMP_directory-L2cache.sm
@@ -40,15 +40,15 @@ machine(L2Cache, "MESI Directory L2 Cache CMP")
{
// L2 BANK QUEUES
// From local bank of L2 cache TO the network
- MessageBuffer DirRequestFromL2Cache, network="To", virtual_network="0", ordered="false"; // this L2 bank -> Memory
- MessageBuffer L1RequestFromL2Cache, network="To", virtual_network="0", ordered="false"; // this L2 bank -> a local L1
- MessageBuffer responseFromL2Cache, network="To", virtual_network="1", ordered="false"; // this L2 bank -> a local L1 || Memory
+ MessageBuffer DirRequestFromL2Cache, network="To", virtual_network="0", ordered="false", vnet_type="request"; // this L2 bank -> Memory
+ MessageBuffer L1RequestFromL2Cache, network="To", virtual_network="0", ordered="false", vnet_type="request"; // this L2 bank -> a local L1
+ MessageBuffer responseFromL2Cache, network="To", virtual_network="1", ordered="false", vnet_type="response"; // this L2 bank -> a local L1 || Memory
// FROM the network to this local bank of L2 cache
- MessageBuffer unblockToL2Cache, network="From", virtual_network="2", ordered="false"; // a local L1 || Memory -> this L2 bank
- MessageBuffer L1RequestToL2Cache, network="From", virtual_network="0", ordered="false"; // a local L1 -> this L2 bank
- MessageBuffer responseToL2Cache, network="From", virtual_network="1", ordered="false"; // a local L1 || Memory -> this L2 bank
-// MessageBuffer unblockToL2Cache, network="From", virtual_network="4", ordered="false"; // a local L1 || Memory -> this L2 bank
+ MessageBuffer unblockToL2Cache, network="From", virtual_network="2", ordered="false", vnet_type="unblock"; // a local L1 || Memory -> this L2 bank
+ MessageBuffer L1RequestToL2Cache, network="From", virtual_network="0", ordered="false", vnet_type="request"; // a local L1 -> this L2 bank
+ MessageBuffer responseToL2Cache, network="From", virtual_network="1", ordered="false", vnet_type="response"; // a local L1 || Memory -> this L2 bank
+// MessageBuffer unblockToL2Cache, network="From", virtual_network="4", ordered="false", vnet_type="unblock"; // a local L1 || Memory -> this L2 bank
// STATES
state_declaration(State, desc="L2 Cache states", default="L2Cache_State_NP") {
diff --git a/src/mem/protocol/MESI_CMP_directory-dir.sm b/src/mem/protocol/MESI_CMP_directory-dir.sm
index c47df9433..6ad88f809 100644
--- a/src/mem/protocol/MESI_CMP_directory-dir.sm
+++ b/src/mem/protocol/MESI_CMP_directory-dir.sm
@@ -42,11 +42,11 @@ machine(Directory, "MESI_CMP_filter_directory protocol")
int directory_latency = 6
{
- MessageBuffer requestToDir, network="From", virtual_network="0", ordered="false";
- MessageBuffer responseToDir, network="From", virtual_network="1", ordered="false";
+ MessageBuffer requestToDir, network="From", virtual_network="0", ordered="false", vnet_type="request";
+ MessageBuffer responseToDir, network="From", virtual_network="1", ordered="false", vnet_type="response";
- MessageBuffer requestFromDir, network="To", virtual_network="0", ordered="false";
- MessageBuffer responseFromDir, network="To", virtual_network="1", ordered="false";
+ MessageBuffer requestFromDir, network="To", virtual_network="0", ordered="false", vnet_type="request";
+ MessageBuffer responseFromDir, network="To", virtual_network="1", ordered="false", vnet_type="response";
// STATES
state_declaration(State, desc="Directory states", default="Directory_State_I") {
diff --git a/src/mem/protocol/MESI_CMP_directory-dma.sm b/src/mem/protocol/MESI_CMP_directory-dma.sm
index da8b94b7c..205d337b1 100644
--- a/src/mem/protocol/MESI_CMP_directory-dma.sm
+++ b/src/mem/protocol/MESI_CMP_directory-dma.sm
@@ -4,8 +4,8 @@ machine(DMA, "DMA Controller")
int request_latency = 6
{
- MessageBuffer responseFromDir, network="From", virtual_network="1", ordered="true", no_vector="true";
- MessageBuffer reqToDirectory, network="To", virtual_network="0", ordered="false", no_vector="true";
+ MessageBuffer responseFromDir, network="From", virtual_network="1", ordered="true", vnet_type="response", no_vector="true";
+ MessageBuffer reqToDirectory, network="To", virtual_network="0", ordered="false", vnet_type="request", no_vector="true";
state_declaration(State, desc="DMA states", default="DMA_State_READY") {
READY, AccessPermission:Invalid, desc="Ready to accept a new request";
diff --git a/src/mem/protocol/MOESI_CMP_directory-L1cache.sm b/src/mem/protocol/MOESI_CMP_directory-L1cache.sm
index 50bb710cb..e9622c30b 100644
--- a/src/mem/protocol/MOESI_CMP_directory-L1cache.sm
+++ b/src/mem/protocol/MOESI_CMP_directory-L1cache.sm
@@ -43,17 +43,17 @@ machine(L1Cache, "Directory protocol")
// NODE L1 CACHE
// From this node's L1 cache TO the network
// a local L1 -> this L2 bank, currently ordered with directory forwarded requests
- MessageBuffer requestFromL1Cache, network="To", virtual_network="0", ordered="false";
+ MessageBuffer requestFromL1Cache, network="To", virtual_network="0", ordered="false", vnet_type="request";
// a local L1 -> this L2 bank
- MessageBuffer responseFromL1Cache, network="To", virtual_network="2", ordered="false";
-// MessageBuffer writebackFromL1Cache, network="To", virtual_network="3", ordered="false";
+ MessageBuffer responseFromL1Cache, network="To", virtual_network="2", ordered="false", vnet_type="response";
+// MessageBuffer writebackFromL1Cache, network="To", virtual_network="3", ordered="false", vnet_type="writeback";
// To this node's L1 cache FROM the network
// a L2 bank -> this L1
- MessageBuffer requestToL1Cache, network="From", virtual_network="0", ordered="false";
+ MessageBuffer requestToL1Cache, network="From", virtual_network="0", ordered="false", vnet_type="request";
// a L2 bank -> this L1
- MessageBuffer responseToL1Cache, network="From", virtual_network="2", ordered="false";
+ MessageBuffer responseToL1Cache, network="From", virtual_network="2", ordered="false", vnet_type="response";
diff --git a/src/mem/protocol/MOESI_CMP_directory-L2cache.sm b/src/mem/protocol/MOESI_CMP_directory-L2cache.sm
index 297904c90..a9c1e74a0 100644
--- a/src/mem/protocol/MOESI_CMP_directory-L2cache.sm
+++ b/src/mem/protocol/MOESI_CMP_directory-L2cache.sm
@@ -40,15 +40,15 @@ machine(L2Cache, "Token protocol")
// L2 BANK QUEUES
// From local bank of L2 cache TO the network
- MessageBuffer L1RequestFromL2Cache, network="To", virtual_network="0", ordered="false"; // this L2 bank -> a local L1
- MessageBuffer GlobalRequestFromL2Cache, network="To", virtual_network="1", ordered="false"; // this L2 bank -> mod-directory
- MessageBuffer responseFromL2Cache, network="To", virtual_network="2", ordered="false"; // this L2 bank -> a local L1 || mod-directory
+ MessageBuffer L1RequestFromL2Cache, network="To", virtual_network="0", ordered="false", vnet_type="request"; // this L2 bank -> a local L1
+ MessageBuffer GlobalRequestFromL2Cache, network="To", virtual_network="1", ordered="false", vnet_type="request"; // this L2 bank -> mod-directory
+ MessageBuffer responseFromL2Cache, network="To", virtual_network="2", ordered="false", vnet_type="response"; // this L2 bank -> a local L1 || mod-directory
// FROM the network to this local bank of L2 cache
- MessageBuffer L1RequestToL2Cache, network="From", virtual_network="0", ordered="false"; // a local L1 -> this L2 bank, Lets try this???
- MessageBuffer GlobalRequestToL2Cache, network="From", virtual_network="1", ordered="false"; // mod-directory -> this L2 bank
- MessageBuffer responseToL2Cache, network="From", virtual_network="2", ordered="false"; // a local L1 || mod-directory -> this L2 bank
-// MessageBuffer L1WritebackToL2Cache, network="From", virtual_network="3", ordered="false";
+ MessageBuffer L1RequestToL2Cache, network="From", virtual_network="0", ordered="false", vnet_type="request"; // a local L1 -> this L2 bank, Lets try this???
+ MessageBuffer GlobalRequestToL2Cache, network="From", virtual_network="1", ordered="false", vnet_type="request"; // mod-directory -> this L2 bank
+ MessageBuffer responseToL2Cache, network="From", virtual_network="2", ordered="false", vnet_type="response"; // a local L1 || mod-directory -> this L2 bank
+// MessageBuffer L1WritebackToL2Cache, network="From", virtual_network="3", ordered="false", vnet_type="writeback";
// STATES
state_declaration(State, desc="L2 Cache states", default="L2Cache_State_I") {
diff --git a/src/mem/protocol/MOESI_CMP_directory-dir.sm b/src/mem/protocol/MOESI_CMP_directory-dir.sm
index bf5e8bff6..572101f00 100644
--- a/src/mem/protocol/MOESI_CMP_directory-dir.sm
+++ b/src/mem/protocol/MOESI_CMP_directory-dir.sm
@@ -38,13 +38,13 @@ machine(Directory, "Directory protocol")
{
// ** IN QUEUES **
- MessageBuffer foo1, network="From", virtual_network="0", ordered="false"; // a mod-L2 bank -> this Dir
- MessageBuffer requestToDir, network="From", virtual_network="1", ordered="false"; // a mod-L2 bank -> this Dir
- MessageBuffer responseToDir, network="From", virtual_network="2", ordered="false"; // a mod-L2 bank -> this Dir
+ MessageBuffer foo1, network="From", virtual_network="0", ordered="false", vnet_type="foo"; // a mod-L2 bank -> this Dir
+ MessageBuffer requestToDir, network="From", virtual_network="1", ordered="false", vnet_type="request"; // a mod-L2 bank -> this Dir
+ MessageBuffer responseToDir, network="From", virtual_network="2", ordered="false", vnet_type="response"; // a mod-L2 bank -> this Dir
- MessageBuffer goo1, network="To", virtual_network="0", ordered="false";
- MessageBuffer forwardFromDir, network="To", virtual_network="1", ordered="false";
- MessageBuffer responseFromDir, network="To", virtual_network="2", ordered="false"; // Dir -> mod-L2 bank
+ MessageBuffer goo1, network="To", virtual_network="0", ordered="false", vnet_type="goo";
+ MessageBuffer forwardFromDir, network="To", virtual_network="1", ordered="false", vnet_type="forward";
+ MessageBuffer responseFromDir, network="To", virtual_network="2", ordered="false", vnet_type="response"; // Dir -> mod-L2 bank
// STATES
diff --git a/src/mem/protocol/MOESI_CMP_directory-dma.sm b/src/mem/protocol/MOESI_CMP_directory-dma.sm
index 42e48c95a..642c6e22d 100644
--- a/src/mem/protocol/MOESI_CMP_directory-dma.sm
+++ b/src/mem/protocol/MOESI_CMP_directory-dma.sm
@@ -5,13 +5,13 @@ machine(DMA, "DMA Controller")
int response_latency = 14
{
- MessageBuffer goo1, network="From", virtual_network="0", ordered="false";
- MessageBuffer goo2, network="From", virtual_network="1", ordered="false";
- MessageBuffer responseFromDir, network="From", virtual_network="2", ordered="false";
+ MessageBuffer goo1, network="From", virtual_network="0", ordered="false", vnet_type="goo";
+ MessageBuffer goo2, network="From", virtual_network="1", ordered="false", vnet_type="goo";
+ MessageBuffer responseFromDir, network="From", virtual_network="2", ordered="false", vnet_type="response";
- MessageBuffer foo1, network="To", virtual_network="0", ordered="false";
- MessageBuffer reqToDir, network="To", virtual_network="1", ordered="false";
- MessageBuffer respToDir, network="To", virtual_network="2", ordered="false";
+ MessageBuffer foo1, network="To", virtual_network="0", ordered="false", vnet_type="foo";
+ MessageBuffer reqToDir, network="To", virtual_network="1", ordered="false", vnet_type="request";
+ MessageBuffer respToDir, network="To", virtual_network="2", ordered="false", vnet_type="dmaresponse";
state_declaration(State, desc="DMA states", default="DMA_State_READY") {
READY, AccessPermission:Invalid, desc="Ready to accept a new request";
diff --git a/src/mem/protocol/MOESI_CMP_token-L1cache.sm b/src/mem/protocol/MOESI_CMP_token-L1cache.sm
index d7344d779..a4dbe5fe7 100644
--- a/src/mem/protocol/MOESI_CMP_token-L1cache.sm
+++ b/src/mem/protocol/MOESI_CMP_token-L1cache.sm
@@ -49,18 +49,18 @@ machine(L1Cache, "Token protocol")
// From this node's L1 cache TO the network
// a local L1 -> this L2 bank
- MessageBuffer responseFromL1Cache, network="To", virtual_network="4", ordered="false";
- MessageBuffer persistentFromL1Cache, network="To", virtual_network="3", ordered="true";
+ MessageBuffer responseFromL1Cache, network="To", virtual_network="4", ordered="false", vnet_type="response";
+ MessageBuffer persistentFromL1Cache, network="To", virtual_network="3", ordered="true", vnet_type="persistent";
// a local L1 -> this L2 bank, currently ordered with directory forwarded requests
- MessageBuffer requestFromL1Cache, network="To", virtual_network="1", ordered="false";
+ MessageBuffer requestFromL1Cache, network="To", virtual_network="1", ordered="false", vnet_type="request";
// To this node's L1 cache FROM the network
// a L2 bank -> this L1
- MessageBuffer responseToL1Cache, network="From", virtual_network="4", ordered="false";
- MessageBuffer persistentToL1Cache, network="From", virtual_network="3", ordered="true";
+ MessageBuffer responseToL1Cache, network="From", virtual_network="4", ordered="false", vnet_type="response";
+ MessageBuffer persistentToL1Cache, network="From", virtual_network="3", ordered="true", vnet_type="persistent";
// a L2 bank -> this L1
- MessageBuffer requestToL1Cache, network="From", virtual_network="1", ordered="false";
+ MessageBuffer requestToL1Cache, network="From", virtual_network="1", ordered="false", vnet_type="request";
// STATES
state_declaration(State, desc="Cache states", default="L1Cache_State_I") {
diff --git a/src/mem/protocol/MOESI_CMP_token-L2cache.sm b/src/mem/protocol/MOESI_CMP_token-L2cache.sm
index 6f43e7712..8b87889b1 100644
--- a/src/mem/protocol/MOESI_CMP_token-L2cache.sm
+++ b/src/mem/protocol/MOESI_CMP_token-L2cache.sm
@@ -44,22 +44,22 @@ machine(L2Cache, "Token protocol")
// From local bank of L2 cache TO the network
// this L2 bank -> a local L1 || mod-directory
- MessageBuffer responseFromL2Cache, network="To", virtual_network="4", ordered="false";
+ MessageBuffer responseFromL2Cache, network="To", virtual_network="4", ordered="false", vnet_type="response";
// this L2 bank -> mod-directory
- MessageBuffer GlobalRequestFromL2Cache, network="To", virtual_network="2", ordered="false";
+ MessageBuffer GlobalRequestFromL2Cache, network="To", virtual_network="2", ordered="false", vnet_type="request";
// this L2 bank -> a local L1
- MessageBuffer L1RequestFromL2Cache, network="To", virtual_network="1", ordered="false";
+ MessageBuffer L1RequestFromL2Cache, network="To", virtual_network="1", ordered="false", vnet_type="request";
// FROM the network to this local bank of L2 cache
// a local L1 || mod-directory -> this L2 bank
- MessageBuffer responseToL2Cache, network="From", virtual_network="4", ordered="false";
- MessageBuffer persistentToL2Cache, network="From", virtual_network="3", ordered="true";
+ MessageBuffer responseToL2Cache, network="From", virtual_network="4", ordered="false", vnet_type="response";
+ MessageBuffer persistentToL2Cache, network="From", virtual_network="3", ordered="true", vnet_type="persistent";
// mod-directory -> this L2 bank
- MessageBuffer GlobalRequestToL2Cache, network="From", virtual_network="2", ordered="false";
+ MessageBuffer GlobalRequestToL2Cache, network="From", virtual_network="2", ordered="false", vnet_type="request";
// a local L1 -> this L2 bank
- MessageBuffer L1RequestToL2Cache, network="From", virtual_network="1", ordered="false";
+ MessageBuffer L1RequestToL2Cache, network="From", virtual_network="1", ordered="false", vnet_type="request";
// STATES
state_declaration(State, desc="L2 Cache states", default="L2Cache_State_I") {
diff --git a/src/mem/protocol/MOESI_CMP_token-dir.sm b/src/mem/protocol/MOESI_CMP_token-dir.sm
index c411d1c4b..aabde0af8 100644
--- a/src/mem/protocol/MOESI_CMP_token-dir.sm
+++ b/src/mem/protocol/MOESI_CMP_token-dir.sm
@@ -41,15 +41,15 @@ machine(Directory, "Token protocol")
int fixed_timeout_latency = 100
{
- MessageBuffer dmaResponseFromDir, network="To", virtual_network="5", ordered="true";
- MessageBuffer responseFromDir, network="To", virtual_network="4", ordered="false";
- MessageBuffer persistentFromDir, network="To", virtual_network="3", ordered="true";
- MessageBuffer requestFromDir, network="To", virtual_network="1", ordered="false";
-
- MessageBuffer responseToDir, network="From", virtual_network="4", ordered="false";
- MessageBuffer persistentToDir, network="From", virtual_network="3", ordered="true";
- MessageBuffer requestToDir, network="From", virtual_network="2", ordered="false";
- MessageBuffer dmaRequestToDir, network="From", virtual_network="0", ordered="true";
+ MessageBuffer dmaResponseFromDir, network="To", virtual_network="5", ordered="true", vnet_type="response";
+ MessageBuffer responseFromDir, network="To", virtual_network="4", ordered="false", vnet_type="response";
+ MessageBuffer persistentFromDir, network="To", virtual_network="3", ordered="true", vnet_type="persistent";
+ MessageBuffer requestFromDir, network="To", virtual_network="1", ordered="false", vnet_type="request";
+
+ MessageBuffer responseToDir, network="From", virtual_network="4", ordered="false", vnet_type="response";
+ MessageBuffer persistentToDir, network="From", virtual_network="3", ordered="true", vnet_type="persistent";
+ MessageBuffer requestToDir, network="From", virtual_network="2", ordered="false", vnet_type="request";
+ MessageBuffer dmaRequestToDir, network="From", virtual_network="0", ordered="true", vnet_type="request";
// STATES
state_declaration(State, desc="Directory states", default="Directory_State_O") {
diff --git a/src/mem/protocol/MOESI_CMP_token-dma.sm b/src/mem/protocol/MOESI_CMP_token-dma.sm
index 9a090145c..dfd26e64d 100644
--- a/src/mem/protocol/MOESI_CMP_token-dma.sm
+++ b/src/mem/protocol/MOESI_CMP_token-dma.sm
@@ -32,8 +32,8 @@ machine(DMA, "DMA Controller")
int request_latency = 6
{
- MessageBuffer responseFromDir, network="From", virtual_network="5", ordered="true", no_vector="true";
- MessageBuffer reqToDirectory, network="To", virtual_network="0", ordered="false", no_vector="true";
+ MessageBuffer responseFromDir, network="From", virtual_network="5", ordered="true", vnet_type="response", no_vector="true";
+ MessageBuffer reqToDirectory, network="To", virtual_network="0", ordered="false", vnet_type="request", no_vector="true";
state_declaration(State, desc="DMA states", default="DMA_State_READY") {
READY, AccessPermission:Invalid, desc="Ready to accept a new request";
diff --git a/src/mem/protocol/MOESI_hammer-cache.sm b/src/mem/protocol/MOESI_hammer-cache.sm
index 06c9ea76b..24f3ab318 100644
--- a/src/mem/protocol/MOESI_hammer-cache.sm
+++ b/src/mem/protocol/MOESI_hammer-cache.sm
@@ -45,12 +45,12 @@ machine(L1Cache, "AMD Hammer-like protocol")
{
// NETWORK BUFFERS
- MessageBuffer requestFromCache, network="To", virtual_network="2", ordered="false";
- MessageBuffer responseFromCache, network="To", virtual_network="4", ordered="false";
- MessageBuffer unblockFromCache, network="To", virtual_network="5", ordered="false";
+ MessageBuffer requestFromCache, network="To", virtual_network="2", ordered="false", vnet_type="request";
+ MessageBuffer responseFromCache, network="To", virtual_network="4", ordered="false", vnet_type="response";
+ MessageBuffer unblockFromCache, network="To", virtual_network="5", ordered="false", vnet_type="unblock";
- MessageBuffer forwardToCache, network="From", virtual_network="3", ordered="false";
- MessageBuffer responseToCache, network="From", virtual_network="4", ordered="false";
+ MessageBuffer forwardToCache, network="From", virtual_network="3", ordered="false", vnet_type="forward";
+ MessageBuffer responseToCache, network="From", virtual_network="4", ordered="false", vnet_type="response";
// STATES
diff --git a/src/mem/protocol/MOESI_hammer-dir.sm b/src/mem/protocol/MOESI_hammer-dir.sm
index f364b5846..96af4228f 100644
--- a/src/mem/protocol/MOESI_hammer-dir.sm
+++ b/src/mem/protocol/MOESI_hammer-dir.sm
@@ -42,19 +42,19 @@ machine(Directory, "AMD Hammer-like protocol")
bool full_bit_dir_enabled = false
{
- MessageBuffer forwardFromDir, network="To", virtual_network="3", ordered="false";
- MessageBuffer responseFromDir, network="To", virtual_network="4", ordered="false";
+ MessageBuffer forwardFromDir, network="To", virtual_network="3", ordered="false", vnet_type="forward";
+ MessageBuffer responseFromDir, network="To", virtual_network="4", ordered="false", vnet_type="response";
//
// For a finite buffered network, note that the DMA response network only
// works at this relatively lower numbered (lower priority) virtual network
// because the trigger queue decouples cache responses from DMA responses.
//
- MessageBuffer dmaResponseFromDir, network="To", virtual_network="1", ordered="true";
+ MessageBuffer dmaResponseFromDir, network="To", virtual_network="1", ordered="true", vnet_type="response";
- MessageBuffer unblockToDir, network="From", virtual_network="5", ordered="false";
- MessageBuffer responseToDir, network="From", virtual_network="4", ordered="false";
- MessageBuffer requestToDir, network="From", virtual_network="2", ordered="false", recycle_latency="1";
- MessageBuffer dmaRequestToDir, network="From", virtual_network="0", ordered="true";
+ MessageBuffer unblockToDir, network="From", virtual_network="5", ordered="false", vnet_type="unblock";
+ MessageBuffer responseToDir, network="From", virtual_network="4", ordered="false", vnet_type="response";
+ MessageBuffer requestToDir, network="From", virtual_network="2", ordered="false", vnet_type="request", recycle_latency="1";
+ MessageBuffer dmaRequestToDir, network="From", virtual_network="0", ordered="true", vnet_type="request";
// STATES
state_declaration(State, desc="Directory states", default="Directory_State_E") {
diff --git a/src/mem/protocol/MOESI_hammer-dma.sm b/src/mem/protocol/MOESI_hammer-dma.sm
index d80c55c73..c784fb6b9 100644
--- a/src/mem/protocol/MOESI_hammer-dma.sm
+++ b/src/mem/protocol/MOESI_hammer-dma.sm
@@ -32,8 +32,8 @@ machine(DMA, "DMA Controller")
int request_latency = 6
{
- MessageBuffer responseFromDir, network="From", virtual_network="1", ordered="true", no_vector="true";
- MessageBuffer reqToDirectory, network="To", virtual_network="0", ordered="false", no_vector="true";
+ MessageBuffer responseFromDir, network="From", virtual_network="1", ordered="true", vnet_type="response", no_vector="true";
+ MessageBuffer reqToDirectory, network="To", virtual_network="0", ordered="false", vnet_type="request", no_vector="true";
state_declaration(State,
desc="DMA states",
diff --git a/src/mem/protocol/Network_test-cache.sm b/src/mem/protocol/Network_test-cache.sm
index 814cd5c29..e76c002f5 100644
--- a/src/mem/protocol/Network_test-cache.sm
+++ b/src/mem/protocol/Network_test-cache.sm
@@ -37,9 +37,9 @@ machine(L1Cache, "Network_test L1 Cache")
{
// NETWORK BUFFERS
- MessageBuffer requestFromCache, network="To", virtual_network="0", ordered="false";
- MessageBuffer forwardFromCache, network="To", virtual_network="1", ordered="false";
- MessageBuffer responseFromCache, network="To", virtual_network="2", ordered="false";
+ MessageBuffer requestFromCache, network="To", virtual_network="0", ordered="false", vnet_type = "request";
+ MessageBuffer forwardFromCache, network="To", virtual_network="1", ordered="false", vnet_type = "forward";
+ MessageBuffer responseFromCache, network="To", virtual_network="2", ordered="false", vnet_type = "response";
// STATES
state_declaration(State, desc="Cache states", default="L1Cache_State_I") {
diff --git a/src/mem/protocol/Network_test-dir.sm b/src/mem/protocol/Network_test-dir.sm
index 6d2bbf359..c3e6dfaf0 100644
--- a/src/mem/protocol/Network_test-dir.sm
+++ b/src/mem/protocol/Network_test-dir.sm
@@ -35,9 +35,9 @@ machine(Directory, "Network_test Directory")
:
{
- MessageBuffer requestToDir, network="From", virtual_network="0", ordered="false";
- MessageBuffer forwardToDir, network="From", virtual_network="1", ordered="false";
- MessageBuffer responseToDir, network="From", virtual_network="2", ordered="false";
+ MessageBuffer requestToDir, network="From", virtual_network="0", ordered="false", vnet_type = "request";
+ MessageBuffer forwardToDir, network="From", virtual_network="1", ordered="false", vnet_type = "forward";
+ MessageBuffer responseToDir, network="From", virtual_network="2", ordered="false", vnet_type = "response";
// STATES
state_declaration(State, desc="Directory states", default="Directory_State_I") {
diff --git a/src/mem/ruby/network/Network.hh b/src/mem/ruby/network/Network.hh
index cce81f266..309560921 100644
--- a/src/mem/ruby/network/Network.hh
+++ b/src/mem/ruby/network/Network.hh
@@ -71,9 +71,9 @@ class Network : public SimObject
// returns the queue requested for the given component
virtual MessageBuffer* getToNetQueue(NodeID id, bool ordered,
- int netNumber) = 0;
+ int netNumber, std::string vnet_type) = 0;
virtual MessageBuffer* getFromNetQueue(NodeID id, bool ordered,
- int netNumber) = 0;
+ int netNumber, std::string vnet_type) = 0;
virtual const std::vector<Throttle*>* getThrottles(NodeID id) const;
virtual int getNumNodes() {return 1;}
diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
index 17dba251d..dc24900c4 100644
--- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
@@ -227,14 +227,20 @@ GarnetNetwork_d::checkNetworkAllocation(NodeID id, bool ordered,
}
MessageBuffer*
-GarnetNetwork_d::getToNetQueue(NodeID id, bool ordered, int network_num)
+GarnetNetwork_d::getToNetQueue(NodeID id, bool ordered, int network_num,
+ std::string vnet_type)
{
+ // TODO:
+ //if (vnet_type == "response")
+ // mark vnet as data vnet and use buffers_per_data_vc
+
checkNetworkAllocation(id, ordered, network_num);
return m_toNetQueues[id][network_num];
}
MessageBuffer*
-GarnetNetwork_d::getFromNetQueue(NodeID id, bool ordered, int network_num)
+GarnetNetwork_d::getFromNetQueue(NodeID id, bool ordered, int network_num,
+ std::string vnet_type)
{
checkNetworkAllocation(id, ordered, network_num);
return m_fromNetQueues[id][network_num];
diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
index 6254bd383..f2b3bd4ef 100644
--- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
@@ -63,8 +63,10 @@ class GarnetNetwork_d : public BaseGarnetNetwork
int getBuffersPerCtrlVC() {return m_buffers_per_ctrl_vc; }
// returns the queue requested for the given component
- MessageBuffer* getToNetQueue(NodeID id, bool ordered, int network_num);
- MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int network_num);
+ MessageBuffer* getToNetQueue(NodeID id, bool ordered, int network_num,
+ std::string vnet_type);
+ MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int network_num,
+ std::string vnet_type);
void clearStats();
void printStats(std::ostream& out) const;
diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
index 62ae2dbd6..2c0d9f3aa 100644
--- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
@@ -192,14 +192,16 @@ GarnetNetwork::checkNetworkAllocation(NodeID id, bool ordered,
}
MessageBuffer*
-GarnetNetwork::getToNetQueue(NodeID id, bool ordered, int network_num)
+GarnetNetwork::getToNetQueue(NodeID id, bool ordered, int network_num,
+ std::string vnet_type)
{
checkNetworkAllocation(id, ordered, network_num);
return m_toNetQueues[id][network_num];
}
MessageBuffer*
-GarnetNetwork::getFromNetQueue(NodeID id, bool ordered, int network_num)
+GarnetNetwork::getFromNetQueue(NodeID id, bool ordered, int network_num,
+ std::string vnet_type)
{
checkNetworkAllocation(id, ordered, network_num);
return m_fromNetQueues[id][network_num];
diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
index 6e08330f3..5c7959131 100644
--- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
@@ -60,8 +60,10 @@ class GarnetNetwork : public BaseGarnetNetwork
int getNumPipeStages() {return m_number_of_pipe_stages; }
// returns the queue requested for the given component
- MessageBuffer* getToNetQueue(NodeID id, bool ordered, int network_num);
- MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int network_num);
+ MessageBuffer* getToNetQueue(NodeID id, bool ordered, int network_num,
+ std::string vnet_type);
+ MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int network_num,
+ std::string vnet_type);
void clearStats();
void printStats(std::ostream& out) const;
diff --git a/src/mem/ruby/network/simple/SimpleNetwork.cc b/src/mem/ruby/network/simple/SimpleNetwork.cc
index eb561b612..0f3472773 100644
--- a/src/mem/ruby/network/simple/SimpleNetwork.cc
+++ b/src/mem/ruby/network/simple/SimpleNetwork.cc
@@ -226,14 +226,16 @@ SimpleNetwork::checkNetworkAllocation(NodeID id, bool ordered, int network_num)
}
MessageBuffer*
-SimpleNetwork::getToNetQueue(NodeID id, bool ordered, int network_num)
+SimpleNetwork::getToNetQueue(NodeID id, bool ordered, int network_num,
+ std::string vnet_type)
{
checkNetworkAllocation(id, ordered, network_num);
return m_toNetQueues[id][network_num];
}
MessageBuffer*
-SimpleNetwork::getFromNetQueue(NodeID id, bool ordered, int network_num)
+SimpleNetwork::getFromNetQueue(NodeID id, bool ordered, int network_num,
+ std::string vnet_type)
{
checkNetworkAllocation(id, ordered, network_num);
return m_fromNetQueues[id][network_num];
diff --git a/src/mem/ruby/network/simple/SimpleNetwork.hh b/src/mem/ruby/network/simple/SimpleNetwork.hh
index 093ed959e..fb5481b46 100644
--- a/src/mem/ruby/network/simple/SimpleNetwork.hh
+++ b/src/mem/ruby/network/simple/SimpleNetwork.hh
@@ -64,8 +64,8 @@ class SimpleNetwork : public Network
void reset();
// returns the queue requested for the given component
- MessageBuffer* getToNetQueue(NodeID id, bool ordered, int network_num);
- MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int network_num);
+ MessageBuffer* getToNetQueue(NodeID id, bool ordered, int network_num, std::string vnet_type);
+ MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int network_num, std::string vnet_type);
virtual const std::vector<Throttle*>* getThrottles(NodeID id) const;
bool isVNetOrdered(int vnet) { return m_ordered[vnet]; }
diff --git a/src/mem/slicc/symbols/StateMachine.py b/src/mem/slicc/symbols/StateMachine.py
index 116371e70..3cb542d47 100644
--- a/src/mem/slicc/symbols/StateMachine.py
+++ b/src/mem/slicc/symbols/StateMachine.py
@@ -594,12 +594,13 @@ $c_ident::init()
network = var["network"]
ordered = var["ordered"]
vnet = var["virtual_network"]
+ vnet_type = var["vnet_type"]
assert var.machine is not None
code('''
machine_type = string_to_MachineType("${{var.machine.ident}}");
base = MachineType_base_number(machine_type);
-$vid = m_net_ptr->get${network}NetQueue(m_version + base, $ordered, $vnet);
+$vid = m_net_ptr->get${network}NetQueue(m_version + base, $ordered, $vnet, "$vnet_type");
''')
code('assert($vid != NULL);')