Elektrine lite

← Feed

@rygorous@mastodon.gamedev.place

Post #2409969

2025-09-09 05:50 UTC

@JamesWidman@mastodon.social The long basic blocks aren't that common, and this basically costs you a few extra BTB slots for those blocks. You grow BTB structures all the time anyway, and this lets you build a much simpler decoder, and more scalable too. Current Skymonts have 3x 3-wide decode, can actually sustain 8 instructions/cycle, and they don't even use a uOp cache or similar, just a straightforward L1 I$ of instruction bytes (although they do mark insn ends after first decode to save power).

Replies (1)

  • @JamesWidman@mastodon.social Mind, L1 I$ with instruction end bytes marked is _old_. The original Pentium also did this, as did several of the Athlons. It's somewhat customary to misuse ECC bits for this. Caches are built for density and low power, so their cells are a bit flaky. You use ECC for D$ since data corruption in cache would be bad, especially if you're sole owner of a modified cache line right now. I$ is usually built from the same macros but is read-only; no dirty lines -> can reload if bad.

    Open ##2409970