aboutsummaryrefslogtreecommitdiff
path: root/arch/v1
diff options
context:
space:
mode:
authorPaul Oliver <contact@pauloliver.dev>2026-04-24 05:19:57 +0200
committerPaul Oliver <contact@pauloliver.dev>2026-04-28 00:06:26 +0200
commitf7f2d1193758bb9d7a2d467f188cf755c8d5ddc9 (patch)
tree4c8c0f3df3a67204bb0d16670b360bea6518aa81 /arch/v1
parent397286c87dc9aa3cba458973bdc65b3f3be14657 (diff)
Removes old data server and cleans up python code
Diffstat (limited to 'arch/v1')
-rw-r--r--arch/v1/arch.c24
-rw-r--r--arch/v1/arch_vars.py77
2 files changed, 25 insertions, 76 deletions
diff --git a/arch/v1/arch.c b/arch/v1/arch.c
index b4dabcf..f1b8c98 100644
--- a/arch/v1/arch.c
+++ b/arch/v1/arch.c
@@ -7,7 +7,7 @@ enum {
#undef INST
};
-#if defined(DATA_PUSH_PATH)
+#if DATA_PUSH == 1
#define ARCH_EVENT_ARRAYS \
ARCH_EVENT_ARRAY(0, wev) /* write events array*/ \
ARCH_EVENT_ARRAY(1, xev) /* memory block swap events array */
@@ -23,11 +23,11 @@ thrd_t g_arch_eva_thrds[CORES][ARCH_EVENT_ARRAYS_COUNT];
struct DeflateParams g_arch_eva_deflate_params[CORES][ARCH_EVENT_ARRAYS_COUNT];
#endif
-#if (defined(COMMAND_BENCH) || defined(COMMAND_NEW)) && defined(ANC_BYTES)
+#if defined(COMMAND_NEW)
void arch_core_init(struct Core *core) {
assert(core);
-#if defined(MVEC_LOOP)
+#if MVEC_LOOP = 1
uint64_t addr = UINT64_HALF;
#else
uint64_t addr = 0;
@@ -51,12 +51,12 @@ void arch_core_free(struct Core *core) {
(void)core;
}
-#if defined(COMMAND_LOAD) || defined(COMMAND_NEW)
+#if defined(COMMAND_NEW) || defined(COMMAND_LOAD)
void arch_core_save(FILE *f, const struct Core *core) {
assert(f);
assert(core);
-#if defined(DATA_PUSH_PATH)
+#if DATA_PUSH == 1
fwrite(core->iexe, sizeof(uint64_t), INST_COUNT, f);
fwrite(core->iwrt, sizeof(uint64_t), INST_COUNT, f);
fwrite(&core->wmb0, sizeof(uint64_t), 1, f);
@@ -78,7 +78,7 @@ void arch_core_load(FILE *f, struct Core *core) {
assert(f);
assert(core);
-#if defined(DATA_PUSH_PATH)
+#if DATA_PUSH == 1
fread(core->iexe, sizeof(uint64_t), INST_COUNT, f);
fread(core->iwrt, sizeof(uint64_t), INST_COUNT, f);
fread(&core->wmb0, sizeof(uint64_t), 1, f);
@@ -438,12 +438,12 @@ void _bswap(struct Core *core, uint64_t pix) {
proc->mb1a = tmpa;
proc->mb1s = tmps;
-#if defined(DATA_PUSH_PATH)
+#if DATA_PUSH == 1
// Memory block swap events mark all addresses within both blocks
for (uint64_t i = 0; i < proc->mb0s; i++) {
uint64_t addr = proc->mb0a + i;
-#if defined(MVEC_LOOP)
+#if MVEC_LOOP = 1
++core->xeva[mvec_loop(addr)];
#else
++core->xeva[addr];
@@ -453,7 +453,7 @@ void _bswap(struct Core *core, uint64_t pix) {
for (uint64_t i = 0; i < proc->mb1s; i++) {
uint64_t addr = proc->mb1a + i;
-#if defined(MVEC_LOOP)
+#if MVEC_LOOP = 1
++core->xeva[mvec_loop(addr)];
#else
++core->xeva[addr];
@@ -675,7 +675,7 @@ void _write(struct Core *core, uint64_t pix) {
if (_is_writeable_by(core, *regs[0], pix)) {
uint64_t addr = *regs[0];
-#if defined(DATA_PUSH_PATH)
+#if DATA_PUSH == 1
// Store write event
uint8_t inst = *regs[1] % INST_COUNT;
@@ -734,7 +734,7 @@ void arch_proc_step(struct Core *core, uint64_t pix) {
struct Proc *proc = proc_fetch(core, pix);
uint8_t inst = _get_inst(core, proc->ip);
-#if defined(DATA_PUSH_PATH)
+#if DATA_PUSH == 1
// Store specific instruction execution event in database
++core->iexe[inst];
#endif
@@ -873,7 +873,7 @@ const char *arch_mnemonic(uint8_t inst) {
// ----------------------------------------------------------------------------
// Data aggregation functions
// ----------------------------------------------------------------------------
-#if defined(DATA_PUSH_PATH)
+#if DATA_PUSH == 1
#if defined(COMMAND_NEW)
void arch_push_data_header(void) {
assert(g_sim_data);
diff --git a/arch/v1/arch_vars.py b/arch/v1/arch_vars.py
index 9605f85..af30650 100644
--- a/arch/v1/arch_vars.py
+++ b/arch/v1/arch_vars.py
@@ -1,24 +1,34 @@
class ArchVars:
def __init__(self, args):
+ self.core_data_fields = [
+ ("uint64_t", "ipop", f"[{len(self.inst_set)}]"), # instruction population counter
+ ("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.core_fields = []
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"], "*"),
@@ -30,15 +40,12 @@ class ArchVars:
(["shfr"], ">"),
(["zero"], "z"),
(["unit"], "u"),
-
(["pshn"], "#"),
(["popn"], "~"),
-
(["load"], "."),
(["wrte"], ":"),
(["dupl"], "="),
(["swap"], "x"),
-
(["keya"], "a"),
(["keyb"], "b"),
(["keyc"], "c"),
@@ -55,7 +62,6 @@ class ArchVars:
(["keyn"], "n"),
(["keyo"], "o"),
(["keyp"], "p"),
-
(["loka"], "A"),
(["lokb"], "B"),
(["lokc"], "C"),
@@ -73,23 +79,7 @@ class ArchVars:
(["loko"], "O"),
(["lokp"], "P"),
]
-
- self.core_fields = []
- self.core_data_fields = [
- ("uint64_t", "ipop", f"[{len(self.inst_set)}]"), # instruction population counter
- ("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"),
@@ -110,44 +100,3 @@ class ArchVars:
("uint64_t", "s6"),
("uint64_t", "s7"),
]
-
- self.plots = {
- "General": {
- "wevs": {
- "table": "arch",
- "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)
- },
- }