|
|
6aab84bf4b
|
perf(matmul): remove diagnostic get_ns() calls from hot loop (v2 clean)
Stripped all per-iteration timing instrumentation:
- Removed 16 get_ns() calls per iteration from main loop
- Removed pipeline diagnostic print section
- Removed timing accumulator variables
- Retained outer timing markers only (prologue/loop/epilogue)
Expected ~45% speedup from removing measurement overhead
(previous run: 179.6ms with diag → estimated ~100ms clean)
|
2026-06-26 17:44:13 +08:00 |
|
|
|
45731e05b7
|
perf(matmul): add pipeline timing diagnostics (v2.1)
Measure per-phase wait times and stall counts to identify bottleneck:
- PIPE_WAIT_IP / DMA0 / DMA1: aggregate wait time per resource
- PIPE_FIRE_DMA / IP: register write overhead
- PIPE_STALL_*: iterations where each resource actually blocked
Output after standard markers, before MATMUL_DONE.
Allows data-driven decision on next optimization target:
wait_ip dominant → optimize IP (HW multiplier pipeline)
wait_dma0 dominant → pre-fire insufficient (wider bus/faster RAM)
wait_dma1 dominant → bank reuse delay (deeper buffering)
|
2026-06-26 03:54:20 +08:00 |
|
|
|
81c636fb56
|
perf(matmul): pre-fire DMA Ch0 load + inline wait/DMA start + XOR bank toggle
user-sample.c v2 optimizations:
- Pre-fire DMA Ch0 load at loop tail to overlap fully with IP compute
- Inline wait_matmul_done/wait_dma_done to eliminate function call overhead
- Inline DMA register writes, skip redundant STATUS_BUSY_BIT check
- Replace g%2 with XOR bank toggle (bank ^= 1)
- Cache volatile pointers in locals (ch0, ch1, mat_status, mat_ctrl)
Makefile: bump -O2 to -O3
|
2026-06-26 03:39:32 +08:00 |
|
|
|
a2b496ca8d
|
Restore timing + switch to polling + disable CPU interrupts (IE=0)
|
2026-06-26 01:01:48 +08:00 |
|
|
|
115466353d
|
Remove timing instrumentation from user-sample.c
|
2026-06-26 00:34:44 +08:00 |
|
|
|
f8459f2478
|
Hardware CRC32 engine in matmul IP: 4-byte/cycle combinational, register at 0x010
|
2026-06-25 20:40:08 +08:00 |
|
|
|
76b5f30c6b
|
Move MATMUL_DONE to last line
|
2026-06-25 20:11:45 +08:00 |
|
|
|
d9483a9d39
|
Add timing instrumentation for profiling (prologue/loop/epilogue/crc32)
|
2026-06-25 20:10:31 +08:00 |
|
|
|
956cd67773
|
Interrupt-driven wait: matmul HWI2 + DMA HWI1 direct CPU lines
|
2026-06-25 20:03:53 +08:00 |
|
|
|
57ba5d271d
|
Remove all debug and printf
|
2026-06-25 15:44:18 +08:00 |
|
|
|
54aa37adee
|
Add debug output for C[0][0]/C[1][1]/C[2][3] of groups 0,1
|
2026-06-25 03:03:10 +08:00 |
|
|
|
9ecda4aa7a
|
Fix CRC32 table, remove debug output
|
2026-06-25 02:51:36 +08:00 |
|
|
|
641d055f18
|
User mods: matmul RTL + shift_add_mult + C program
|
2026-06-25 00:43:16 +08:00 |
|
|
|
4a67ca5c83
|
Add debug output for group 0 write-back and group 1 compute
|
2026-06-24 22:09:06 +08:00 |
|
|
|
aaefb04737
|
Sync asm/ (user-sample.c + Makefile) from test branch
MATMUL_GROUP_NUM defaults to 5000, overridable for fast local testing.
|
2026-06-24 17:01:45 +08:00 |
|
|
|
fbc993b846
|
Initial commit: Loongson FPGA SoC project for 2026 CIC-IEC
|
2026-06-23 01:22:45 +08:00 |
|