aboutsummaryrefslogtreecommitdiff
path: root/NOTES
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2025-02-23 01:32:47 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2025-02-23 01:32:47 +0200
commit00ea50354b38c6cd9ebb08c8141f48dd5392cd23 (patch)
tree3fd3435d30f0a32518a8dfe8ecc6c843f0e4c16f /NOTES
parent1a02154274b4925692ee0ad07d0bb8468ca9d69c (diff)
downloadgran-00ea50354b38c6cd9ebb08c8141f48dd5392cd23.tar.gz
gran-00ea50354b38c6cd9ebb08c8141f48dd5392cd23.zip
initial torus stuff
+ Not quite deadlock free for 2D/3D for whatever reason
Diffstat (limited to 'NOTES')
-rw-r--r--NOTES26
1 files changed, 26 insertions, 0 deletions
diff --git a/NOTES b/NOTES
new file mode 100644
index 0000000..4b0a0ec
--- /dev/null
+++ b/NOTES
@@ -0,0 +1,26 @@
+Slightly drunken ramblings:
+
+Currently, I'm imagining that a 3D torus with one-way communication would
+probably be the best way forward. It has some nice properties like a fairly
+simple construction, decent average response times (but not the best minimum
+response times, unfortunately) and a fairly simple broadcast scheme (though
+without ack).
+
+Coherence is of course more difficult, but I would imagine that
+changing the memory model to be a bit more loose wouldn't hurt. Essentially, we
+would have one node somewhere be a global 'lock' that gives out LR/SC
+permissions, fairly high latency unfortunately but arguably the simplest
+approach. All caches are not coherent, but would have to respect atomic
+operations.
+
+One maybe interesting thing could be to not have virtual memory, instead opt for
+some kind of k-tree with byte-accurate permissions, kind of like cheri. Each
+pointer could have a second pointer that tells which allocation it is from, and
+we have a TLB-like cache for fast lookups. We could also have multiple of these
+trees, one in local memory for private allocations, for example. With process
+IDs, my beloved. Also, semi-cooperative interrupts? With enough cores, static
+thread scheduling might also be workable. Potentially also external node access
+checking, so untrusted packets can't read memory that's not for some process
+(avoid stuff like the router capturing thing in Linux wifi fw).
+
+