aboutsummaryrefslogtreecommitdiff
path: root/arch/v1/arch_vars.py
diff options
context:
space:
mode:
Diffstat (limited to 'arch/v1/arch_vars.py')
-rw-r--r--arch/v1/arch_vars.py152
1 files changed, 152 insertions, 0 deletions
diff --git a/arch/v1/arch_vars.py b/arch/v1/arch_vars.py
new file mode 100644
index 0000000..4fb6bb2
--- /dev/null
+++ b/arch/v1/arch_vars.py
@@ -0,0 +1,152 @@
+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
+ ("uint64_t", "xeva", f"[{2 ** args.mvec_pow}]"), # memory block swap events array
+ ]
+
+ 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)
+ },
+ }
+
+ self.heatmaps = {
+ "Events": {
+ f"wev_{i}": {
+ "table": f"wev_{i}",
+ } for i in range(args.cores)
+ } | {
+ f"xev_{i}": {
+ "table": f"xev_{i}",
+ } for i in range(args.cores)
+ },
+ }