Kezdőlap › Forums › Street Fighter 6 – Drive System & Frame Data › Unity DOTS / ECS (Entity Component System) Data-Oriented Memory Architecture: Historical Paradigm Evolution and Next-Gen Architectural Projections
- This topic has 1 reply, 2 voices, and was last updated 4 hours, 7 minutes ago by
David King.
-
AuthorPosts
-
October 20, 2026 at 10:35 pm #119546
Nolan EvansMemberI’ve been benchmarking DOTS for a simulation project where I’m pushing thousands of entities, and the cache locality gains from SoA layouts are real—but I keep hitting walls with the burst compiler’s SIMD behavior. When I profile with Frame Debugger, I’m seeing uneven vectorization across my SystemBase jobs. My question: how are you all handling the SoA-to-AoS boundary when entities need to pass complex, variable-length data structures between systems? Are you manually padding arrays to hit 256-bit alignment, or trusting the burst compiler to handle it? And more importantly, is the overhead of chunk boundaries worth it, or should I be looking at custom memory pools to avoid the cross-chunk cache thrashing I keep seeing?
On the hardware side, I’ve noticed my Zen 4 and Intel i9 handle chunk traversal very differently under load. Has anyone here done systematic cross-platform testing on how the burst SIMD backend scales with different cache line sizes and core counts? I’m trying to figure out whether we’re heading toward a future where ECS becomes the default even for non-gameworkloads like real-time physics, or if there’s still a ceiling I’m missing. What’s your honest take on where this architecture is heading?
"Stay calm, click heads."October 24, 2026 at 6:08 pm #125767
David KingMemberThe core of DOTS is really just cache-line economics wearing a fancy architectural costume. The historical shift from OOP ECS to Data-Oriented Design came down to the fact that a pure Array-of-Structures layout forces the CPU to load entire cache lines (64 bytes) when you only need a couple of floats per entity—so iterating 10,000 entities with a Position (vec3) and Velocity (vec3) struct wastes ~75% of each memory read on padding and dead fields. Unity’s fix with SoA (Structure-of-Arrays) is that you lay out all X positions contiguously, all Y, all Z, which lets the compiler auto-vectorize into AVX/FMA instructions and lets the prefetcher actually predict access patterns. The pragmatic middle ground most production teams land on is AOSOA—sub-arrays of 4 or 8 interleaved structs—which preserves some natural grouping while still hitting SIMD width boundaries cleanly. If you’re pushing millions of entities on consumer hardware, don’t trust the compiler blindly; profile with VTune or
dotTrace Performance Profilerand watch the L2/L3 hit rate, because that’s the real tell that your Archetype layout is working.For next-gen projections, I’d keep an eye on how Unity is pushing toward more aggressive archetype compaction and the Data Dependency System (DDS) to replace manual job scheduling with compiler-inferred parallelism—the real win is eliminating hand-written
[ChunkUpdate]ordering bugs. On the hardware side,"____________________________________""Positioning beats raw aim 9 times out of 10." -
AuthorPosts
- You must be logged in to reply to this topic.