)]}'
{
  "commit": "b13b4850951b4507cabee27a8c2a748c93a20daf",
  "tree": "de00ea5ea48a6d900e7dd7ee127910d3085f16e3",
  "parents": [
    "dcc2f4caaf912e5a4125ac5bfab16ad938a32c9d"
  ],
  "author": {
    "name": "Tiago Mück",
    "email": "tiago.muck@arm.com",
    "time": "Mon Jun 22 14:09:50 2020 -0500"
  },
  "committer": {
    "name": "Tiago Mück",
    "email": "tiago.muck@arm.com",
    "time": "Tue Mar 16 15:28:44 2021 +0000"
  },
  "message": "configs,mem-ruby: CHI-based Ruby protocol\n\nThis patch add a new Ruby cache coherence protocol based on Arm\u0027 AMBA5\nCHI specification. The CHI protocol defines and implements two state\nmachine types:\n\n- Cache_Controller: generic cache controller that can be configured as:\n    - Top-level L1 I/D cache\n    - A intermediate level (L2, L3, ...) private or shared cache\n    - A CHI home node (i.e. the point of coherence of the system and\n        has the global directory)\n    - A DMA requester\n\n- Memory_Controller: implements a CHI slave node and interfaces with\n    gem5 memory controller. This controller has the functionality of a\n    Directory_Controller on the other Ruby protocols, except it doesn\u0027t\n    have a directory.\n\nThe Cache_Controller has multiple cache allocation/deallocation\nparameters to control the clusivity with respect to upstream caches.\nAllocation can be completely disabled to use Cache_Controller as a\nDMA requester or as a home node without a shared LLC.\n\nThe standard configuration file configs/ruby/CHI.py provides a\n\u0027create_system\u0027 compatible with configs/example/fs.py and\nconfigs/example/se.py and creates a system with private L1/L2 caches\nper core and a shared LLC at the home nodes. Different cache topologies\ncan be defined by modifying \u0027create_system\u0027 or by creating custom\nscripts using the structures defined in configs/ruby/CHI.py.\n\nThis patch also includes the \u0027CustomMesh\u0027 topology script to be used\nwith CHI. CustomMesh generates a 2D mesh topology with the placement\nof components manually defined in a separate configuration file using\nthe --noc-config parameter.\nThe example in configs/example/noc_config/2x4.yaml creates a simple 2x4\nmesh. For example, to run a SE mode simulation, with 4 cores,\n4 mem ctnrls, and 4 home nodes (L3 caches):\n\nbuild/ARM/gem5.opt configs/example/se.py \\\n--cmd \u0027tests/test-progs/hello/bin/arm/linux/hello\u0027 \\\n--ruby --num-cpus\u003d4 --num-dirs\u003d4 --num-l3caches\u003d4 \\\n--topology\u003dCustomMesh --noc-config\u003dconfigs/example/noc_config/2x4.yaml\n\nIf one doesn\u0027t care about the component placement on the interconnect,\nthe \u0027Crossbar\u0027 and \u0027Pt2Pt\u0027 may be used and they do not require the\n--noc-config option.\n\nAdditional authors:\n    Joshua Randall \u003cjoshua.randall@arm.com\u003e\n    Pedro Benedicte \u003cpedro.benedicteillescas@arm.com\u003e\n    Tuan Ta \u003ctuan.ta2@arm.com\u003e\n\nJIRA: https://gem5.atlassian.net/browse/GEM5-908\n\nChange-Id: I856524b0afd30842194190f5bd69e7e6ded906b0\nSigned-off-by: Tiago Mück \u003ctiago.muck@arm.com\u003e\nReviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/42563\nReviewed-by: Jason Lowe-Power \u003cpower.jg@gmail.com\u003e\nMaintainer: Jason Lowe-Power \u003cpower.jg@gmail.com\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "84ec476290c8cb047874998102f1a84744649062",
      "new_mode": 33188,
      "new_path": "configs/example/noc_config/2x4.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0a49371d8478823a063f6eaff7c31b5912343742",
      "new_mode": 33188,
      "new_path": "configs/ruby/CHI.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "73793e48edd7c422107f91c5b5bcf022a0dc4d98",
      "new_mode": 33188,
      "new_path": "configs/topologies/CustomMesh.py"
    },
    {
      "type": "modify",
      "old_id": "bde71c0176b0bbd5a3491b1a3e3a55172235bd1b",
      "old_mode": 33188,
      "old_path": "src/mem/ruby/SConscript",
      "new_id": "c3f836559461fdea884fc8297a661a777556ee01",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/SConscript"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a1889b7c8ab4bcd495c77d3a99feee4aec44aa2d",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/common/ExpectedMap.hh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2775d7a06ee050bbd7161c02c6f78e3643bfc118",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/common/TriggerQueue.hh"
    },
    {
      "type": "modify",
      "old_id": "c2f2c9df48dc826295e282adb6a32346b80103b4",
      "old_mode": 33188,
      "old_path": "src/mem/ruby/protocol/RubySlicc_Exports.sm",
      "new_id": "7706f572daf5d8a416ad97fa368eee1cf5aa431f",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/protocol/RubySlicc_Exports.sm"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ea5eaff4ec9b8d3db4fa6781318ba01c770de5c4",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/protocol/chi/CHI-cache-actions.sm"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "db008b0abf2d4c8719fc55fb54acc5cc062db452",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/protocol/chi/CHI-cache-funcs.sm"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6a4fe5b16c8926ea52312780a115e22b9adf4202",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/protocol/chi/CHI-cache-ports.sm"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d69d28e0c5e42a3eaabe05f95e8ff4a9fd70e10d",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/protocol/chi/CHI-cache-transitions.sm"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "160f674078ac2c1d69f1a33a7cdc92b7af8833f9",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/protocol/chi/CHI-cache.sm"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "954a4495170aedfcc994457cd945b298fcc23dc6",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/protocol/chi/CHI-mem.sm"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d51fb76ca9a908727665f67403d83fdc6e371fb8",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/protocol/chi/CHI-msg.sm"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "27724bb5823904ab7efa00e7b3acc31f4a271459",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/protocol/chi/CHI.slicc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "91c10d22d3f55c5d5e3e12e4febc4d1a8dfe0d96",
      "new_mode": 33188,
      "new_path": "src/mem/ruby/protocol/chi/SConsopts"
    }
  ]
}
