class ArchVars: def __init__(self, args): self.inst_set = [ (["noop"], " "), (["nop0"], "0"), (["nop1"], "1"), (["nop2"], "2"), (["nop3"], "3"), (["jmpb"], "("), (["jmpf"], ")"), (["adrb"], "["), (["adrf"], "]"), (["ifnz"], "?"), (["allb"], "{"), (["allf"], "}"), (["bswp"], "%"), (["bclr"], "|"), (["splt"], "$"), (["addn"], "+"), (["subn"], "-"), (["muln"], "*"), (["divn"], "/"), (["incn"], "^"), (["decn"], "v"), (["notn"], "!"), (["shfl"], "<"), (["shfr"], ">"), (["zero"], "z"), (["unit"], "u"), (["pshn"], "#"), (["popn"], "~"), (["load"], "."), (["wrte"], ":"), (["dupl"], "="), (["swap"], "x"), (["keya"], "a"), (["keyb"], "b"), (["keyc"], "c"), (["keyd"], "d"), (["keye"], "e"), (["keyf"], "f"), (["keyg"], "g"), (["keyh"], "h"), (["keyi"], "i"), (["keyj"], "j"), (["keyk"], "k"), (["keyl"], "l"), (["keym"], "m"), (["keyn"], "n"), (["keyo"], "o"), (["keyp"], "p"), (["loka"], "A"), (["lokb"], "B"), (["lokc"], "C"), (["lokd"], "D"), (["loke"], "E"), (["lokf"], "F"), (["lokg"], "G"), (["lokh"], "H"), (["loki"], "I"), (["lokj"], "J"), (["lokk"], "K"), (["lokl"], "L"), (["lokm"], "M"), (["lokn"], "N"), (["loko"], "O"), (["lokp"], "P"), ] self.core_fields = [] self.core_data_fields = [ ("uint64_t", "iexe", f"[{len(self.inst_set)}]"), # instruction execution counter ("uint64_t", "iwrt", f"[{len(self.inst_set)}]"), # instruction write counter ("uint64_t", "wmb0", ""), # writes within mb0 counter ("uint64_t", "wmb1", ""), # writes within mb1 counter ("uint64_t", "wdea", ""), # writes within dead code counter #("uint64_t", "weva", f"[{2 ** args.mvec_pow}]"), # write events array ] self.data_is_compressed = True self.mvec_loop = False self.proc_fields = [ ("uint64_t", "ip"), ("uint64_t", "sp"), ("uint64_t", "mb0a"), ("uint64_t", "mb0s"), ("uint64_t", "mb1a"), ("uint64_t", "mb1s"), ("uint64_t", "r0x"), ("uint64_t", "r1x"), ("uint64_t", "r2x"), ("uint64_t", "r3x"), ("uint64_t", "s0"), ("uint64_t", "s1"), ("uint64_t", "s2"), ("uint64_t", "s3"), ("uint64_t", "s4"), ("uint64_t", "s5"), ("uint64_t", "s6"), ("uint64_t", "s7"), ] self.plots = { "General": { "wevs": { "table": "arch_general", "type": "lines", "cols": [f"{pref}_{i}" for pref in ["wmb0", "wmb1", "wdea"] for i in range(args.cores)], }, }, "Instructions": { f"ipop_{i}": { "table": f"pop_{i}", "type": "stack", "cols": ["_".join(inst[0]) for inst in self.inst_set], } for i in range(args.cores) } | { f"iexe%_{i}": { "table": f"exe_{i}", "type": "stack_percent", "cols": ["_".join(inst[0]) for inst in self.inst_set], } for i in range(args.cores) } | { f"iwrt%_{i}": { "table": f"wrt_{i}", "type": "stack_percent", "cols": ["_".join(inst[0]) for inst in self.inst_set], } for i in range(args.cores) }, }