@rygorous@mastodon.gamedev.place
Post #2409970
2025-09-09 05:51 UTC
@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.
Replies (1)
-
@rygorous@mastodon.gamedev.place 2025-09-09 05:58
@JamesWidman@mastodon.social But the extra storage for ECC bits is built into the macros anyway so a common trick is to make I$ parity protected only (so error detection but no correction) and then you get spare bits you can use for other sideband data. Historical uses include said instruction marker bits. IIRC the original Opteron arch also threw some branch prediction state bits for cold I$ lines in there.