Difference between revisions of "Status Matrix"

From gem5
Jump to: navigation, search
(ARM)
(ISA Support Matrices)
 
(28 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
The follow six tables describe the current state of component combinations in gem5.
 
The follow six tables describe the current state of component combinations in gem5.
  
 
+
== Color Key ==
Color Key
 
 
{| border="1" class="wikitable"
 
{| border="1" class="wikitable"
 
| style="background: red; color: white" | Definitely does not work
 
| style="background: red; color: white" | Definitely does not work
Line 15: Line 14:
 
|-
 
|-
 
|}
 
|}
 +
 +
== Notes ==
 +
Below [[Classic Memory System | Classic]] and [[Ruby]] refers to the two memory systems that we have in gem5. [[MI_example|MI]], [[MESI Two Level | MESI]] and [[Ruby#SLICC + Coherence protocols: | MOESI]] (multiple flavors) are the coherence protocols that are supported in Ruby memory system. Then we have the CPU models: [[SimpleCPU | AtomicSimple]], [[SimpleCPU | TimingSimple]], [[InOrder]] and [[O3CPU | O3]].
 +
 +
Numbers in the squares below refer to the following notes:
 +
 +
# Ruby does not support atomic-mode accesses
 +
# The MI_example protocol cannot support LL/SC semantics
 +
# Classic caches do not support x86 locked (atomic RMW) accesses.  The AtomicSimple CPU model enforces atomic RMW accesses itself, so this only affects correctness for timing-mode CPU models.
 +
 +
== ISA Support Matrices ==
 +
 +
'''''THIS PAGE WAS LAST UPDATED IN 2015. IT IS LIKELY OUT OF DATE. USE THIS AS A GUIDELINE.'''''
  
 
=== Alpha ===
 
=== Alpha ===
Line 22: Line 34:
 
!colspan="6"|Memory System
 
!colspan="6"|Memory System
 
|-
 
|-
!rowspan="2"|Cpu Model
+
!rowspan="2"|Model
 
!rowspan="2"|System
 
!rowspan="2"|System
!rowspan="2"|Processor Count
+
!rowspan="2"|Count
 
!rowspan="2"|Classic
 
!rowspan="2"|Classic
 
!colspan="5"|Ruby
 
!colspan="5"|Ruby
Line 30: Line 42:
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|-
 
|-
!rowspan="4"|Atomic
+
!rowspan="4"|AtomicSimple
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="4"|TimingSimple
 
!rowspan="4"|TimingSimple
 
!rowspan="2"|SE
 
!rowspan="2"|SE
|uniprocessor
+
|uni
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
Line 75: Line 87:
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
| style="background: red; color: white" | MI cannot support LL/SC semantics
+
| style="background: red; color: white" | Note 2
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
Line 84: Line 96:
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
Line 92: Line 104:
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
| style="background: red; color: white" | MI cannot support LL/SC semantics
+
| style="background: red; color: white" | Note 2
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
Line 100: Line 112:
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
|-
 
|-
!rowspan="4"|In-Order
+
!rowspan="4"|InOrder
 
!rowspan="2"|SE
 
!rowspan="2"|SE
|uniprocessor
+
|uni
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
Line 110: Line 122:
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
| style="background: red; color: white" | MI cannot support LL/SC semantics
+
| style="background: red; color: white" | Note 2
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
Line 119: Line 131:
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
Line 127: Line 139:
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
| style="background: red; color: white" | MI cannot support LL/SC semantics
+
| style="background: red; color: white" | Note 2
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
Line 135: Line 147:
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
|-
 
|-
!rowspan="4"|o3
+
!rowspan="4"|O3
 
!rowspan="2"|SE
 
!rowspan="2"|SE
|uniprocessor
+
|uni
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
Line 145: Line 157:
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
| style="background: red; color: white" | MI cannot support LL/SC semantics
+
| style="background: red; color: white" | Note 2
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
Line 162: Line 174:
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
| style="background: red; color: white" | MI cannot support LL/SC semantics
+
| style="background: red; color: white" | Note 2
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
 
|-
 
|-
 
|}
 
|}
  
=== x86 ===
+
=== ARM ===
  
 
{| border="1" class="wikitable" align=center style="background:#B0C4DE;"
 
{| border="1" class="wikitable" align=center style="background:#B0C4DE;"
Line 178: Line 190:
 
!colspan="6"|Memory System
 
!colspan="6"|Memory System
 
|-
 
|-
!rowspan="2"|Cpu Model
+
!rowspan="2"|Model
 
!rowspan="2"|System
 
!rowspan="2"|System
!rowspan="2"|Processor Count
+
!rowspan="2"|Count
 
!rowspan="2"|Classic
 
!rowspan="2"|Classic
 
!colspan="5"|Ruby
 
!colspan="5"|Ruby
Line 186: Line 198:
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|-
 
|-
!rowspan="4"|Atomic
+
!rowspan="4"|AtomicSimple
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
| style="background: yellow;" |
+
| style="background: green; color: white" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: yellow;" |
+
| style="background: green; color: white" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: yellow;" |
+
| style="background: green; color: white" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: yellow;" |
+
| style="background: green; color: white" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="4"|TimingSimple
 
!rowspan="4"|TimingSimple
!rowspan="2"|SE
+
!rowspan="2"|SE  
|uniprocessor
+
|uni
| style="background: yellow;" |
+
| style="background: green; color: white" |
| style="background: yellow;" |
+
| style="background: orange; color: white"|
| style="background: yellow;" |
+
| style="background: orange; color: white"|
 +
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
| style="background: yellow;" |
 
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: yellow;" |
+
| style="background: green; color: white" |
| style="background: yellow;" |
+
| style="background: red; color: white"| Note 2
| style="background: yellow;" |
+
| style="background: orange; color: white"|
 +
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
| style="background: yellow;" |
 
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: yellow;" |
+
| style="background: green; color: white" |
| style="background: yellow;" |
+
| style="background: orange; color: white"|
| style="background: yellow;" |
+
| style="background: orange; color: white"|
 +
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
| style="background: yellow;" |
 
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: yellow;" |
+
| style="background: green; color: white" |
| style="background: yellow;" |
+
| style="background: red; color: white"| Note 2
| style="background: yellow;" |
+
| style="background: orange; color: white"|
 +
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
| style="background: yellow;" |
 
 
|-
 
|-
!rowspan="4"|In-Order
+
!rowspan="4"|InOrder
 
!rowspan="2"|SE
 
!rowspan="2"|SE
|uniprocessor
+
|uni
| style="background: red; color: white" |
+
| style="background: green; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
Line 266: Line 278:
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: red; color: white" |
+
| style="background: green; color: white" |
 
| style="background: red; color: white" |  
 
| style="background: red; color: white" |  
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
Line 275: Line 287:
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: red; color: white" |
+
| style="background: green; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
Line 283: Line 295:
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: red; color: white" |
+
| style="background: green; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
Line 291: Line 303:
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
|-
 
|-
!rowspan="4"|o3
+
!rowspan="4"|O3
!rowspan="2"|SE
+
!rowspan="2"|SE  
|uniprocessor
+
|uni
| style="background: yellow; color: white" |
+
| style="background: green; color: white" |
 +
| style="background: orange; color: white"|
 +
| style="background: orange; color: white"|
 +
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 +
|-
 +
|multi
 +
| style="background: green; color: white" |
 +
| style="background: red; color: white"| Note 2
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
|-
 
|mulitprocessor
 
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
 
| style="background: red; color: white" | Ruby does not support o3 LSQ
 
| style="background: red; color: white" | Ruby does not support o3 LSQ
 
| style="background: red; color: white" | Ruby does not support o3 LSQ
 
| style="background: red; color: white" | Ruby does not support o3 LSQ
 
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: red; color: white" |
+
| style="background: green; color: white" |
| style="background: red; color: white" |
+
| style="background: red; color: white"| Note 2
| style="background: red; color: white" |
+
| style="background: orange; color: white"|
| style="background: red; color: white" |
+
| style="background: orange; color: white" |
| style="background: red; color: white" |
+
| style="background: orange; color: white" |
| style="background: red; color: white" |
+
| style="background: orange; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: red; color: white" |
+
| style="background: green; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white"| Note 2
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
 
|-
 
|-
 
|}
 
|}
  
=== ARM ===
+
=== x86 ===
  
 
{| border="1" class="wikitable" align=center style="background:#B0C4DE;"
 
{| border="1" class="wikitable" align=center style="background:#B0C4DE;"
Line 334: Line 346:
 
!colspan="6"|Memory System
 
!colspan="6"|Memory System
 
|-
 
|-
!rowspan="2"|Cpu Model
+
!rowspan="2"|Model
 
!rowspan="2"|System
 
!rowspan="2"|System
!rowspan="2"|Processor Count
+
!rowspan="2"|Count
 
!rowspan="2"|Classic
 
!rowspan="2"|Classic
 
!colspan="5"|Ruby
 
!colspan="5"|Ruby
Line 342: Line 354:
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|-
 
|-
!rowspan="4"|Atomic
+
!rowspan="4"|AtomicSimple
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
| style="background: green; color: white" |
+
| style="background: yellow;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: green; color: white" |
+
| style="background: yellow;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: green; color: white" |
+
| style="background: yellow;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: green; color: white" | See Note
+
| style="background: yellow;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="4"|TimingSimple
 
!rowspan="4"|TimingSimple
!rowspan="2"|SE  
+
!rowspan="2"|SE
|uniprocessor
+
|uni
| style="background: green; color: white" |
+
| style="background: yellow;" |
| style="background: orange; color: white"|
+
| style="background: yellow;" |
| style="background: orange; color: white"|
+
| style="background: yellow;" |
| style="background: orange; color: white" |
+
| style="background: yellow; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow;" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: green; color: white" |
+
| style="background: yellow;" | Note 3
| style="background: red; color: white"| MI cannot support LL/SC semantics
+
| style="background: yellow;" |
| style="background: orange; color: white"|
+
| style="background: yellow;" |
| style="background: orange; color: white" |
+
| style="background: yellow; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow;" |
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
 +
| style="background: yellow;" | Note 3
 +
| style="background: yellow;" |
 +
| style="background: yellow;" |
 
| style="background: green; color: white" |
 
| style="background: green; color: white" |
| style="background: orange; color: white"|
+
| style="background: yellow; color: white" |
| style="background: orange; color: white"|
+
| style="background: yellow;" |
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: green; color: white" | See Note
+
| style="background: yellow;" | Note 3
| style="background: red; color: white"| MI cannot support LL/SC semantics
+
| style="background: yellow;" |
| style="background: orange; color: white"|
+
| style="background: yellow;" |
| style="background: orange; color: white" |
+
| style="background: green; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow;" |
 
|-
 
|-
!rowspan="4"|In-Order
+
!rowspan="4"|InOrder
 
!rowspan="2"|SE
 
!rowspan="2"|SE
|uniprocessor
+
|uni
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
Line 422: Line 434:
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |  
 
| style="background: red; color: white" |  
Line 431: Line 443:
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
Line 439: Line 451:
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
Line 447: Line 459:
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
|-
 
|-
!rowspan="4"|o3
+
!rowspan="4"|O3
!rowspan="2"|SE  
+
!rowspan="2"|SE
|uniprocessor
+
|uni
| style="background: green; color: white" |
+
| style="background: yellow;" |
| style="background: orange; color: white"|
+
| style="background: yellow; color: white" |
| style="background: orange; color: white"|
+
| style="background: yellow; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: green; color: white" |
+
| style="background: yellow;" | Note 3
| style="background: red; color: white"| MI cannot support LL/SC semantics
+
| style="background: red; color: white" | Note 2
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: yellow; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: yellow; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: yellow; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: yellow; color: white" |
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: green; color: white" |
+
| style="background: orange; color: white" | Note 3
| style="background: orange; color: white"|
+
| style="background: red; color: white" | Note 2
| style="background: orange; color: white"|
+
| style="background: yellow; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow; color: white" |
| style="background: orange; color: white" |
+
| style="background: yellow; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: green; color: white" | See Note
+
| style="background: orange; color: white" | Note 3
| style="background: red; color: white"| MI cannot support LL/SC semantics
+
| style="background: red; color: white" | Note 2
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: yellow; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: yellow; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: yellow; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: yellow; color: white" |
 
|-
 
|-
 
|}
 
|}
 
* ARM MP support works, however it does not support booting with caches. You can run with caches after all CPUs have been started by using switch over or a checkpoint.
 
  
 
=== SPARC ===
 
=== SPARC ===
Line 492: Line 502:
 
!colspan="6"|Memory System
 
!colspan="6"|Memory System
 
|-
 
|-
!rowspan="2"|Cpu Model
+
!rowspan="2"|Model
 
!rowspan="2"|System
 
!rowspan="2"|System
!rowspan="2"|Processor Count
+
!rowspan="2"|Count
 
!rowspan="2"|Classic
 
!rowspan="2"|Classic
 
!colspan="5"|Ruby
 
!colspan="5"|Ruby
Line 500: Line 510:
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|-
 
|-
!rowspan="4"|Atomic
+
!rowspan="4"|AtomicSimple
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
 
| style="background: yellow;" |
 
| style="background: yellow;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: yellow;" |
 
| style="background: yellow;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: red; color: white" |  
 
| style="background: red; color: white" |  
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="4"|TimingSimple
 
!rowspan="4"|TimingSimple
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
 
| style="background: yellow;" |
 
| style="background: yellow;" |
 
| style="background: orange; color: white"|
 
| style="background: orange; color: white"|
Line 545: Line 555:
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: yellow;" |
 
| style="background: yellow;" |
 
| style="background: orange; color: white"|
 
| style="background: orange; color: white"|
Line 554: Line 564:
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
Line 562: Line 572:
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: red; color: white" |  
 
| style="background: red; color: white" |  
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
Line 570: Line 580:
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
|-
 
|-
!rowspan="4"|In-Order
+
!rowspan="4"|InOrder
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white"|
 
| style="background: red; color: white"|
Line 580: Line 590:
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white"|
 
| style="background: red; color: white"|
Line 589: Line 599:
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
Line 597: Line 607:
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: red; color: white" |  
 
| style="background: red; color: white" |  
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
Line 605: Line 615:
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
|-
 
|-
!rowspan="4"|o3
+
!rowspan="4"|O3
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
| style="background: yellow; color: white" |
+
| style="background: yellow;" |
 
| style="background: orange; color: white"|
 
| style="background: orange; color: white"|
 
| style="background: orange; color: white"|
 
| style="background: orange; color: white"|
Line 615: Line 625:
 
| style="background: orange; color: white" |
 
| style="background: orange; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: yellow; color: white" |
+
| style="background: yellow;" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" | Note 2
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: orange; color: white" |
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
Line 632: Line 642:
 
| style="background: red; color: white" |
 
| style="background: red; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: red; color: white" |  
 
| style="background: red; color: white" |  
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" |Note 2
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" |
 
|-
 
|-
 
|}
 
|}
Line 648: Line 658:
 
!colspan="6"|Memory System
 
!colspan="6"|Memory System
 
|-
 
|-
!rowspan="2"|Cpu Model
+
!rowspan="2"|Model
 
!rowspan="2"|System
 
!rowspan="2"|System
!rowspan="2"|Processor Count
+
!rowspan="2"|Count
 
!rowspan="2"|Classic
 
!rowspan="2"|Classic
 
!colspan="5"|Ruby
 
!colspan="5"|Ruby
Line 656: Line 666:
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|-
 
|-
!rowspan="4"|Atomic
+
!rowspan="4"|AtomicSimple
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
 
| style="background: yellow;" |
 
| style="background: yellow;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: orange;" |
 
| style="background: orange;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: yellow;" |
+
| style="background: red;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: orange;" |
+
| style="background: red;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="4"|TimingSimple
 
!rowspan="4"|TimingSimple
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
 
| style="background: yellow;" |
 
| style="background: yellow;" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
Line 701: Line 711:
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: orange;" |
 
| style="background: orange;" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
Line 710: Line 720:
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: yellow;" |
+
| style="background: red;" |
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: orange;" |
+
| style="background: red;" |
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
 
|-
 
|-
!rowspan="4"|In-Order
+
!rowspan="4"|InOrder
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
Line 736: Line 746:
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
Line 745: Line 755:
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
 
|-
 
|-
!rowspan="4"|o3
+
!rowspan="4"|O3
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
 
| style="background: yellow;" |
 
| style="background: yellow;" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
Line 771: Line 781:
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: orange;" |
 
| style="background: orange;" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" | Note 2
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: purple; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
 
| style="background: red; color: white" | Ruby does not support o3 LSQ
 
| style="background: red; color: white" | Ruby does not support o3 LSQ
 
|-
 
!rowspan="2"|FS
 
|uniprocessor
 
| style="background: yellow;" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
 
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
|-
 
|-
|mulitprocessor
+
!rowspan="2"|FS
| style="background: orange;" |
+
|uni
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red;" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white"|
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white"|
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" |
 +
| style="background: red; color: white" |
 +
|-
 +
|multi
 +
| style="background: red;" |
 +
| style="background: red; color: white" | Note 2
 +
| style="background: red; color: white" |
 +
| style="background: red; color: white" |
 +
| style="background: red; color: white" |
 +
| style="background: red; color: white" |
 
|-
 
|-
 
|}
 
|}
Line 804: Line 814:
 
!colspan="6"|Memory System
 
!colspan="6"|Memory System
 
|-
 
|-
!rowspan="2"|Cpu Model
+
!rowspan="2"|Model
 
!rowspan="2"|System
 
!rowspan="2"|System
!rowspan="2"|Processor Count
+
!rowspan="2"|Count
 
!rowspan="2"|Classic
 
!rowspan="2"|Classic
 
!colspan="5"|Ruby
 
!colspan="5"|Ruby
Line 812: Line 822:
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|MI_example||MOESI_hammer||MESI_CMP_directory||MOESI_CMP_directory||MOESI_CMP_token
 
|-
 
|-
!rowspan="4"|Atomic
+
!rowspan="4"|AtomicSimple
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
 
| style="background: yellow;" |
 
| style="background: yellow;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: orange;" |
 
| style="background: orange;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: yellow;" |
+
| style="background: red;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: orange;" |
+
| style="background: red;" |
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
| style="background: red; color: white" | Ruby does not support atomic mode
+
| style="background: red; color: white" | Note 1
 
|-
 
|-
 
!rowspan="4"|TimingSimple
 
!rowspan="4"|TimingSimple
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
 
| style="background: yellow;" |
 
| style="background: yellow;" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
Line 857: Line 867:
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: orange;" |
 
| style="background: orange;" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
Line 866: Line 876:
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: yellow;" |
+
| style="background: red;" |
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: orange;" |
+
| style="background: red;" |
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
 
|-
 
|-
!rowspan="4"|In-Order
+
!rowspan="4"|InOrder
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
| style="background: orange;" |
+
| style="background: red;" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
Line 892: Line 902:
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: orange;" |
+
| style="background: red;" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
Line 901: Line 911:
 
|-
 
|-
 
!rowspan="2"|FS
 
!rowspan="2"|FS
|uniprocessor
+
|uni
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white"|
+
| style="background: red; color: white"|
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
| style="background: purple; color: white" |
+
| style="background: red; color: white" |
 
|-
 
|-
!rowspan="4"|o3
+
!rowspan="4"|O3
 
!rowspan="2"|SE  
 
!rowspan="2"|SE  
|uniprocessor
+
|uni
 
| style="background: yellow;" |
 
| style="background: yellow;" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
Line 927: Line 937:
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
|-
 
|-
|mulitprocessor
+
|multi
 
| style="background: orange;" |
 
| style="background: orange;" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" | Note 2
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: purple; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
 
| style="background: red; color: white" | Ruby does not support o3 LSQ
 
| style="background: red; color: white" | Ruby does not support o3 LSQ
 
|-
 
!rowspan="2"|FS
 
|uniprocessor
 
| style="background: yellow;" |
 
| style="background: purple; color: white"|
 
| style="background: purple; color: white"|
 
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
| style="background: purple; color: white" |
 
|-
 
|-
|mulitprocessor
+
!rowspan="2"|FS
| style="background: orange;" |
+
|uni
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red;" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white"|
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white"|
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" |
| style="background: red; color: white" | Ruby does not support o3 LSQ
+
| style="background: red; color: white" |
 +
| style="background: red; color: white" |
 +
|-
 +
|multi
 +
| style="background: red;" |
 +
| style="background: red; color: white" | Note 2
 +
| style="background: red; color: white" |
 +
| style="background: red; color: white" |
 +
| style="background: red; color: white" |
 +
| style="background: red; color: white" |
 
|-
 
|-
 
|}
 
|}

Latest revision as of 17:06, 23 February 2018

The follow six tables describe the current state of component combinations in gem5.

Color Key

Definitely does not work
Might work
Should work
Definitely works
Unknown

Notes

Below Classic and Ruby refers to the two memory systems that we have in gem5. MI, MESI and MOESI (multiple flavors) are the coherence protocols that are supported in Ruby memory system. Then we have the CPU models: AtomicSimple, TimingSimple, InOrder and O3.

Numbers in the squares below refer to the following notes:

  1. Ruby does not support atomic-mode accesses
  2. The MI_example protocol cannot support LL/SC semantics
  3. Classic caches do not support x86 locked (atomic RMW) accesses. The AtomicSimple CPU model enforces atomic RMW accesses itself, so this only affects correctness for timing-mode CPU models.

ISA Support Matrices

THIS PAGE WAS LAST UPDATED IN 2015. IT IS LIKELY OUT OF DATE. USE THIS AS A GUIDELINE.

Alpha

Processor Memory System
Model System Count Classic Ruby
MI_example MOESI_hammer MESI_CMP_directory MOESI_CMP_directory MOESI_CMP_token
AtomicSimple SE uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
FS uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
TimingSimple SE uni
multi Note 2
FS uni
multi Note 2
InOrder SE uni
multi Note 2
FS uni
multi Note 2
O3 SE uni
multi Note 2
FS uni
multi Note 2

ARM

Processor Memory System
Model System Count Classic Ruby
MI_example MOESI_hammer MESI_CMP_directory MOESI_CMP_directory MOESI_CMP_token
AtomicSimple SE uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
FS uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
TimingSimple SE uni
multi Note 2
FS uni
multi Note 2
InOrder SE uni
multi
FS uni
multi
O3 SE uni
multi Note 2
FS uni Note 2
multi Note 2

x86

Processor Memory System
Model System Count Classic Ruby
MI_example MOESI_hammer MESI_CMP_directory MOESI_CMP_directory MOESI_CMP_token
AtomicSimple SE uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
FS uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
TimingSimple SE uni
multi Note 3
FS uni Note 3
multi Note 3
InOrder SE uni
multi
FS uni
multi
O3 SE uni
multi Note 3 Note 2
FS uni Note 3 Note 2
multi Note 3 Note 2

SPARC

Processor Memory System
Model System Count Classic Ruby
MI_example MOESI_hammer MESI_CMP_directory MOESI_CMP_directory MOESI_CMP_token
AtomicSimple SE uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
FS uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
TimingSimple SE uni
multi
FS uni
multi
InOrder SE uni
multi
FS uni
multi
O3 SE uni
multi Note 2
FS uni
multi Note 2

PowerPC

Processor Memory System
Model System Count Classic Ruby
MI_example MOESI_hammer MESI_CMP_directory MOESI_CMP_directory MOESI_CMP_token
AtomicSimple SE uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
FS uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
TimingSimple SE uni
multi
FS uni
multi
InOrder SE uni
multi
FS uni
multi
O3 SE uni
multi Note 2
FS uni
multi Note 2

MIPS

Processor Memory System
Model System Count Classic Ruby
MI_example MOESI_hammer MESI_CMP_directory MOESI_CMP_directory MOESI_CMP_token
AtomicSimple SE uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
FS uni Note 1 Note 1 Note 1 Note 1 Note 1
multi Note 1 Note 1 Note 1 Note 1 Note 1
TimingSimple SE uni
multi
FS uni
multi
InOrder SE uni
multi
FS uni
multi
O3 SE uni
multi Note 2
FS uni
multi Note 2