Repository navigation
issues: a userland forward copy a short way above its source modulo 4 KiB stalls on AMD - #1198
Conversation
… KiB stalls on AMD #1133 measured libc's forward rep movsb stalling on the AMD bench (Zen 2) when the destination sits 1-31 bytes above the source modulo 4 KiB: 3x at 256 B, 22x at 8 KiB, 3.5x at 1 MiB. 56305 rev. 3.02 §2.12 explains why: it judges store-to-load forwarding by address bits 11:0. Its route through a descending loop fixed the stall. Round 12, whose outcome was binding, closed #1133 instead: every routed build, with or without the AVX loop, ran never-routed 256 KiB copies about 7% slower in 5 of 5 paired boots. A base whose memcpy was merely moved did not, so the cost is in the routed code and its mechanism is unknown. This records the stall, the cost and an exit for a future approach. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review, round 1: head 77adbf4 against mainAssessment. Record-only: one new file, +68 lines, no production or test code. Recording the stall and the cost that closed #1133 is right, and the record sits where it belongs ( "The record" below is What I checked and found correct
BLOCKER
SUGGESTION
PR description and commit message (for the orchestrator)
SEND BACK |
…s exit can be run - The vendor's sentence is the fact, the wait our inference and the under-32 window a measurement; 56305 is cited by number, revision, section and page. - mem.memcpy.262144 is not a clean witness: round 10's shifted base read 0.80 of base on it, round 12's read base's level, and the row already has a 45% range on main. The placement rows are what follow the routed code, and the exit judges by them alone. - The copyat instrument is named by revision (b76abc3, on amd-memcpy-ab8), and the exit's second clause keeps the stall bound. - The suggestions: #1139's evidence branch, the slowdowns at 32 and above, the T14 figures, which d = 0 the heap pair is set against, a one-sided 5%, and the range over 1 MiB left out on purpose. It is a defect, not a finding. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
|
Orchestrator verification of the fix (77adbf4..fe18b74), which is record-only (one issue file):
Review: #1198 (comment) |
Problem
#1133 measured a real stall in userland's
memcpyon the AMD bench (Zen 2). It is closed, because round 12's binding outcome rejected every routed build. The stall it measured, and the cost that sank its fix, need a record so they don't vanish with the PR.Change
Record-only: adds
issues/a-userland-forward-copy-a-short-way-above-its-source-modulo-4-kib-stalls-on-amd.md(kind: defect). It holds:memcpydid not reproduce it on those rows. Onmem.memcpy.262144it did once (round 10: 0.80 of base) and did not in round 12, so that row is recorded as not a clean witness;copyatinstrument, b76abc3 onamd-memcpy-ab8;Checks
cargo test --lib -- sourcegate::tests::no_tracked_file_identifies_a_machine_or_its_networkat fe18b74: exit 0 (log).ToyOSOrg/evidence.🤖 Generated with Claude Code