changeset ee2fcca7b58a in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=ee2fcca7b58a
description:
ruby: declare all protocol message buffers as parameters
MessageBuffer is a SimObject now. There were protocols that still
declared
some of the message buffers are variables of the controller, but not as
input
parameters. Special handling was required for these variables in the
SLICC
compiler. This patch changes this. Now all message buffers are
declared as
input parameters.
diffstat:
src/mem/protocol/MESI_Three_Level-L0cache.sm | 6 +-
src/mem/protocol/MESI_Two_Level-L1cache.sm | 11 ++-
src/mem/protocol/MESI_Two_Level-dir.sm | 4 +-
src/mem/protocol/MESI_Two_Level-dma.sm | 2 +-
src/mem/protocol/MI_example-cache.sm | 5 +-
src/mem/protocol/MI_example-dir.sm | 3 +-
src/mem/protocol/MI_example-dma.sm | 5 +-
src/mem/protocol/MOESI_CMP_directory-L1cache.sm | 8 +-
src/mem/protocol/MOESI_CMP_directory-L2cache.sm | 3 +-
src/mem/protocol/MOESI_CMP_directory-dir.sm | 3 +-
src/mem/protocol/MOESI_CMP_directory-dma.sm | 4 +-
src/mem/protocol/MOESI_CMP_token-L1cache.sm | 4 +-
src/mem/protocol/MOESI_CMP_token-dir.sm | 3 +-
src/mem/protocol/MOESI_CMP_token-dma.sm | 5 +-
src/mem/protocol/MOESI_hammer-cache.sm | 12 +---
src/mem/protocol/MOESI_hammer-dir.sm | 6 +-
src/mem/protocol/MOESI_hammer-dma.sm | 2 +-
src/mem/protocol/Network_test-cache.sm | 5 +-
src/mem/slicc/symbols/StateMachine.py | 65 +++++++-----------------
19 files changed, 61 insertions(+), 95 deletions(-)
diffs (truncated from 564 to 300 lines):
diff -r 61b329833f74 -r ee2fcca7b58a
src/mem/protocol/MESI_Three_Level-L0cache.sm
--- a/src/mem/protocol/MESI_Three_Level-L0cache.sm Fri Sep 04 13:14:03
2015 -0400
+++ b/src/mem/protocol/MESI_Three_Level-L0cache.sm Sat Sep 05 09:34:24
2015 -0500
@@ -39,10 +39,10 @@
// To this node's L0 cache FROM the network
MessageBuffer * bufferFromL1, network="From";
+
+ // Message queue between this controller and the processor
+ MessageBuffer * mandatoryQueue;
{
- // Message queue between this controller and the processor
- MessageBuffer mandatoryQueue;
-
// STATES
state_declaration(State, desc="Cache states", default="L0Cache_State_I") {
// Base states
diff -r 61b329833f74 -r ee2fcca7b58a src/mem/protocol/MESI_Two_Level-L1cache.sm
--- a/src/mem/protocol/MESI_Two_Level-L1cache.sm Fri Sep 04 13:14:03
2015 -0400
+++ b/src/mem/protocol/MESI_Two_Level-L1cache.sm Sat Sep 05 09:34:24
2015 -0500
@@ -61,10 +61,13 @@
// a L2 bank -> this L1
MessageBuffer * responseToL1Cache, network="From", virtual_network="1",
vnet_type="response";
+
+ // Request Buffer for prefetches
+ MessageBuffer * optionalQueue;
+
+ // Buffer for requests generated by the processor core.
+ MessageBuffer * mandatoryQueue;
{
- // Request Buffer for prefetches
- MessageBuffer optionalQueue;
-
// STATES
state_declaration(State, desc="Cache states", default="L1Cache_State_I") {
// Base states
@@ -151,8 +154,6 @@
TBETable TBEs, template="<L1Cache_TBE>", constructor="m_number_of_TBEs";
- MessageBuffer mandatoryQueue;
-
int l2_select_low_bit, default="RubySystem::getBlockSizeBits()";
void set_cache_entry(AbstractCacheEntry a);
diff -r 61b329833f74 -r ee2fcca7b58a src/mem/protocol/MESI_Two_Level-dir.sm
--- a/src/mem/protocol/MESI_Two_Level-dir.sm Fri Sep 04 13:14:03 2015 -0400
+++ b/src/mem/protocol/MESI_Two_Level-dir.sm Sat Sep 05 09:34:24 2015 -0500
@@ -37,6 +37,8 @@
vnet_type="response";
MessageBuffer * responseFromDir, network="To", virtual_network="1",
vnet_type="response";
+
+ MessageBuffer * responseFromMemory;
{
// STATES
state_declaration(State, desc="Directory states",
default="Directory_State_I") {
@@ -182,8 +184,6 @@
(type == CoherenceRequestType:GETX);
}
- MessageBuffer responseFromMemory;
-
// ** OUT_PORTS **
out_port(responseNetwork_out, ResponseMsg, responseFromDir);
diff -r 61b329833f74 -r ee2fcca7b58a src/mem/protocol/MESI_Two_Level-dma.sm
--- a/src/mem/protocol/MESI_Two_Level-dma.sm Fri Sep 04 13:14:03 2015 -0400
+++ b/src/mem/protocol/MESI_Two_Level-dma.sm Sat Sep 05 09:34:24 2015 -0500
@@ -35,6 +35,7 @@
vnet_type="response";
MessageBuffer * requestToDir, network="To", virtual_network="0",
vnet_type="request";
+ MessageBuffer * mandatoryQueue;
{
state_declaration(State, desc="DMA states", default="DMA_State_READY") {
READY, AccessPermission:Invalid, desc="Ready to accept a new request";
@@ -49,7 +50,6 @@
Ack, desc="DMA write to memory completed";
}
- MessageBuffer mandatoryQueue;
State cur_state;
State getState(Addr addr) {
diff -r 61b329833f74 -r ee2fcca7b58a src/mem/protocol/MI_example-cache.sm
--- a/src/mem/protocol/MI_example-cache.sm Fri Sep 04 13:14:03 2015 -0400
+++ b/src/mem/protocol/MI_example-cache.sm Sat Sep 05 09:34:24 2015 -0500
@@ -44,6 +44,8 @@
vnet_type="forward";
MessageBuffer * responseToCache, network="From", virtual_network="4",
vnet_type="response";
+
+ MessageBuffer * mandatoryQueue;
{
// STATES
state_declaration(State, desc="Cache states") {
@@ -76,9 +78,6 @@
}
// STRUCTURE DEFINITIONS
-
- MessageBuffer mandatoryQueue;
-
// CacheEntry
structure(Entry, desc="...", interface="AbstractCacheEntry") {
State CacheState, desc="cache state";
diff -r 61b329833f74 -r ee2fcca7b58a src/mem/protocol/MI_example-dir.sm
--- a/src/mem/protocol/MI_example-dir.sm Fri Sep 04 13:14:03 2015 -0400
+++ b/src/mem/protocol/MI_example-dir.sm Sat Sep 05 09:34:24 2015 -0500
@@ -43,6 +43,7 @@
vnet_type="request";
MessageBuffer * dmaRequestToDir, network="From", virtual_network="0",
vnet_type="request";
+ MessageBuffer * responseFromMemory;
{
// STATES
state_declaration(State, desc="Directory states",
default="Directory_State_I") {
@@ -195,8 +196,6 @@
return num_functional_writes;
}
- MessageBuffer responseFromMemory;
-
// ** OUT_PORTS **
out_port(forwardNetwork_out, RequestMsg, forwardFromDir);
out_port(responseNetwork_out, ResponseMsg, responseFromDir);
diff -r 61b329833f74 -r ee2fcca7b58a src/mem/protocol/MI_example-dma.sm
--- a/src/mem/protocol/MI_example-dma.sm Fri Sep 04 13:14:03 2015 -0400
+++ b/src/mem/protocol/MI_example-dma.sm Sat Sep 05 09:34:24 2015 -0500
@@ -35,6 +35,7 @@
vnet_type="response";
MessageBuffer * requestToDir, network="To", virtual_network="0",
vnet_type="request";
+ MessageBuffer * mandatoryQueue;
{
state_declaration(State, desc="DMA states", default="DMA_State_READY") {
READY, AccessPermission:Invalid, desc="Ready to accept a new request";
@@ -49,14 +50,14 @@
Ack, desc="DMA write to memory completed";
}
- MessageBuffer mandatoryQueue;
State cur_state;
State getState(Addr addr) {
return cur_state;
}
+
void setState(Addr addr, State state) {
- cur_state := state;
+ cur_state := state;
}
AccessPermission getAccessPermission(Addr addr) {
diff -r 61b329833f74 -r ee2fcca7b58a
src/mem/protocol/MOESI_CMP_directory-L1cache.sm
--- a/src/mem/protocol/MOESI_CMP_directory-L1cache.sm Fri Sep 04 13:14:03
2015 -0400
+++ b/src/mem/protocol/MOESI_CMP_directory-L1cache.sm Sat Sep 05 09:34:24
2015 -0500
@@ -51,6 +51,10 @@
// a L2 bank -> this L1
MessageBuffer * responseToL1Cache, network="From", virtual_network="2",
vnet_type="response";
+
+ MessageBuffer * triggerQueue;
+
+ MessageBuffer * mandatoryQueue;
{
// STATES
state_declaration(State, desc="Cache states", default="L1Cache_State_I") {
@@ -134,8 +138,6 @@
void set_tbe(TBE b);
void unset_tbe();
- MessageBuffer mandatoryQueue, abstract_chip_ptr="true";
-
TBETable TBEs, template="<L1Cache_TBE>", constructor="m_number_of_TBEs";
TimerTable useTimerTable;
int l2_select_low_bit, default="RubySystem::getBlockSizeBits()";
@@ -254,8 +256,6 @@
}
}
- MessageBuffer triggerQueue;
-
// ** OUT_PORTS **
out_port(requestNetwork_out, RequestMsg, requestFromL1Cache);
diff -r 61b329833f74 -r ee2fcca7b58a
src/mem/protocol/MOESI_CMP_directory-L2cache.sm
--- a/src/mem/protocol/MOESI_CMP_directory-L2cache.sm Fri Sep 04 13:14:03
2015 -0400
+++ b/src/mem/protocol/MOESI_CMP_directory-L2cache.sm Sat Sep 05 09:34:24
2015 -0500
@@ -48,6 +48,7 @@
MessageBuffer * responseToL2Cache, network="From", virtual_network="2",
vnet_type="response"; // a local L1 || mod-directory -> this L2 bank
+ MessageBuffer * triggerQueue;
{
// STATES
state_declaration(State, desc="L2 Cache states", default="L2Cache_State_I") {
@@ -565,8 +566,6 @@
return num_functional_writes;
}
- MessageBuffer triggerQueue;
-
out_port(globalRequestNetwork_out, RequestMsg, GlobalRequestFromL2Cache);
out_port(localRequestNetwork_out, RequestMsg, L1RequestFromL2Cache);
out_port(responseNetwork_out, ResponseMsg, responseFromL2Cache);
diff -r 61b329833f74 -r ee2fcca7b58a src/mem/protocol/MOESI_CMP_directory-dir.sm
--- a/src/mem/protocol/MOESI_CMP_directory-dir.sm Fri Sep 04 13:14:03
2015 -0400
+++ b/src/mem/protocol/MOESI_CMP_directory-dir.sm Sat Sep 05 09:34:24
2015 -0500
@@ -42,6 +42,7 @@
MessageBuffer * responseFromDir, network="To", virtual_network="2",
vnet_type="response"; // Dir -> mod-L2 bank
+ MessageBuffer * responseFromMemory;
{
// STATES
state_declaration(State, desc="Directory states",
default="Directory_State_I") {
@@ -220,8 +221,6 @@
return false;
}
- MessageBuffer responseFromMemory;
-
// ** OUT_PORTS **
out_port(forwardNetwork_out, RequestMsg, forwardFromDir);
out_port(responseNetwork_out, ResponseMsg, responseFromDir);
diff -r 61b329833f74 -r ee2fcca7b58a src/mem/protocol/MOESI_CMP_directory-dma.sm
--- a/src/mem/protocol/MOESI_CMP_directory-dma.sm Fri Sep 04 13:14:03
2015 -0400
+++ b/src/mem/protocol/MOESI_CMP_directory-dma.sm Sat Sep 05 09:34:24
2015 -0500
@@ -40,6 +40,8 @@
MessageBuffer * respToDir, network="To", virtual_network="2",
vnet_type="dmaresponse";
+ MessageBuffer * mandatoryQueue;
+ MessageBuffer * triggerQueue;
{
state_declaration(State, desc="DMA states", default="DMA_State_READY") {
READY, AccessPermission:Invalid, desc="Ready to accept a new request";
@@ -69,8 +71,6 @@
bool isPresent(Addr);
}
- MessageBuffer mandatoryQueue;
- MessageBuffer triggerQueue;
TBETable TBEs, template="<DMA_TBE>", constructor="m_number_of_TBEs";
State cur_state;
diff -r 61b329833f74 -r ee2fcca7b58a src/mem/protocol/MOESI_CMP_token-L1cache.sm
--- a/src/mem/protocol/MOESI_CMP_token-L1cache.sm Fri Sep 04 13:14:03
2015 -0400
+++ b/src/mem/protocol/MOESI_CMP_token-L1cache.sm Sat Sep 05 09:34:24
2015 -0500
@@ -61,7 +61,6 @@
MessageBuffer * requestFromL1Cache, network="To", virtual_network="1",
vnet_type="request";
-
// To this node's L1 cache FROM the network
// a L2 bank -> this L1
@@ -73,6 +72,7 @@
MessageBuffer * requestToL1Cache, network="From", virtual_network="1",
vnet_type="request";
+ MessageBuffer * mandatoryQueue;
{
// STATES
state_declaration(State, desc="Cache states", default="L1Cache_State_I") {
@@ -194,8 +194,6 @@
TBETable L1_TBEs, template="<L1Cache_TBE>", constructor="m_number_of_TBEs";
- MessageBuffer mandatoryQueue, abstract_chip_ptr="true";
-
bool starving, default="false";
int l2_select_low_bit, default="RubySystem::getBlockSizeBits()";
diff -r 61b329833f74 -r ee2fcca7b58a src/mem/protocol/MOESI_CMP_token-dir.sm
--- a/src/mem/protocol/MOESI_CMP_token-dir.sm Fri Sep 04 13:14:03 2015 -0400
+++ b/src/mem/protocol/MOESI_CMP_token-dir.sm Sat Sep 05 09:34:24 2015 -0500
@@ -61,6 +61,7 @@
MessageBuffer * dmaRequestToDir, network="From", virtual_network="0",
vnet_type="request";
+ MessageBuffer * responseFromMemory;
{
// STATES
state_declaration(State, desc="Directory states",
default="Directory_State_O") {
@@ -266,8 +267,6 @@
return num_functional_writes;
}
- MessageBuffer responseFromMemory;
-
// ** OUT_PORTS **
out_port(responseNetwork_out, ResponseMsg, responseFromDir);
out_port(persistentNetwork_out, PersistentMsg, persistentFromDir);
diff -r 61b329833f74 -r ee2fcca7b58a src/mem/protocol/MOESI_CMP_token-dma.sm
--- a/src/mem/protocol/MOESI_CMP_token-dma.sm Fri Sep 04 13:14:03 2015 -0400
+++ b/src/mem/protocol/MOESI_CMP_token-dma.sm Sat Sep 05 09:34:24 2015 -0500
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev