
如果說計算機體系結構領域有哪個方向堪稱“最難啃又最值得啃”的硬骨頭數據預取Data Prefetching一定排在前三名。原因很簡單現代處理器的算力增長早已超過內存系統能跟上的速度訪存延遲成為應用性能的隱形天花板。而預取器的作用就是在 CPU 真正需要數據之前提前把數據拉進緩存。這個“提前”聽起來簡單實際做起來極其痛苦——它需要同時理解訪存模式、緩存替換策略、硬件資源成本還要在幾十上百個基準測試程序上保持穩定收益。過去十年設計一個能在真實負載中穩定生效的預取器基本上要靠資深架構師的經驗直覺和大量手工調參。ArchAgent v2 這類工具的出現正在改變這個局面。它把大語言模型引入體系結構設計流程把“寫預取器代碼—跑模擬器—看結果—改代碼”這個高度重復的閉環自動化并且在一項真正有挑戰性的基準測試——數據預取錦標賽Data Prefetching Championship——中驗證了可行性。這件事的意義不在于“AI 會寫代碼”這個老話題而在于AI 開始具備參與硬件設計實驗閉環的能力它能讀模擬器的輸出、理解性能指標、迭代出新的優化思路。對每一位關注 AI for EDA、硬件設計自動化或者 Agent 工程化落地的人來說這篇案例分析都值得仔細讀一遍。這篇文章會從數據預取的難點講起逐步拆解 ArchAgent v2 這類架構智能體在競賽場景中做了什么、它的工作方式是什么、如果你想在自己的項目中復現類似的思路環境和實驗流程應該怎么搭以及真正容易踩坑的地方在哪里。1. 這篇文章真正要解決的問題先給讀者一個明確判斷ArchAgent v2 的價值不是“幫你寫代碼”而是“幫你完成一次完整的實驗迭代”。在傳統的數據預取器研究流程里一名工程師一天的工作量大致是這樣的閱讀 baseline 預取器的代碼理解某個 benchmark 的訪存行為為什么差。想出一個優化點子比如增加一個歷史表、修改預取距離。花幾十分鐘改代碼、重新編譯模擬器。跑到新的 trace 上等幾小時甚至更久。發現 IPC 反而下降回到步驟 1。這套流程的最大問題不是“累”而是“反饋太慢”并且“經驗沉淀不下來”。每個研究者都在用不同的方式做同樣的事但很少有人能系統地把“訪存特征分析—策略構思—代碼修改—結果驗證”變成一個可復用、可并行的流水線。ArchAgent 解決的就是這個問題。它把上述閉環交給一個智能體來完成自己承擔理解和推理的部分。具體到 Data Prefetching Championship 這個案例中它做的事情是根據模擬器的運行結果自動分析預取器的性能缺陷生成修改后的預取器代碼重新提交實驗然后繼續觀察下一輪結果。讀到這里你應該已經清楚這篇文章適不適合你了如果你在做體系結構、存儲系統或者 EDA 相關研究ArchAgent 的思路會直接啟發你的實驗方法。如果你在做 AI Agent 工程化關注的是 Agent 如何和外部工具、模擬器、長任務閉環協同這個案例是一個典型的“Agent 做科研實驗”范式。如果你只是做應用層開發本文對數據預取的背景解釋和工具鏈拆解也能幫你理解底層硬件的性能瓶頸是怎么回事。接下來我們先回到問題本身數據預取為什么難。2. 數據預取為什么是體系結構的“硬骨頭”2.1 沒有預取器時系統會發生什么先看一個最簡單的場景。CPU 執行一條加載指令需要讀取內存中某個地址的數據。如果數據不在緩存里就是一個 cache missCPU 需要停止執行等待數據從內存返回。這個等待時間在 x86 服務器上通常是幾十納秒到上百納秒聽起來很短但 CPU 一個周期還不到一納秒這意味著 CPU 可能白白等待幾百個周期。預取器的作用就是猜測哪些地址即將被訪問提前發出訪存請求。如果猜對了數據剛好在需要的時候出現在緩存里miss 被隱藏如果猜錯了它可能污染緩存、占用內存帶寬反而拖慢系統。這就是預取器設計的第一對核心矛盾激進程度與準確性。太保守預取收益有限太激進錯誤預取帶來的代價可能超過收益。任何優秀的預取器本質上都是在反復權衡這對矛盾。2.2 數據預取錦標賽到底在比什么Data Prefetching ChampionshipDPC是體系結構領域一項專門的競賽參賽者需要在給定的模擬器和 trace 集合上設計預取器。這個比賽的特點是固定模擬器所有隊伍使用同一個微架構模擬器通常是 ChampSim 這類科研用模擬器保證對比公平。固定基線有明確的 baseline 預取器比如基于局部性的 next-line prefetcher以及更復雜的 signature path prefetcherSPP、BOP 等。多樣化負載trace 來自不同應用包括科學計算、數據庫、 AI 推理、圖分析等。不同負載的訪存模式差異巨大預取器很難用單一策略通吃。評價指標統一以加速比、IPC 提升為主要指標同時要關注準確率和帶寬開銷。所以評價一個預取器不是看它在單個 benchmark 上表現多好而是看它在整套負載上的綜合效果。這給人工調參帶來了巨大挑戰你可能優化好了 A 類應用卻把 B 類應用搞崩了你調的參數在 trace 集合上很漂亮換一組真機負載后可能完全失效。2.3 為什么這個場景適合作為 Agent 的試驗田數據預取錦標賽對 AI Agent 來說是一個非常好的測試場景原因有三點第一它有明確的自動反饋。模擬器會輸出 IPC、prefetch accuracy、coverage 等數字指標Agent 不需要自己去“感覺”方案好壞直接用指標說話。第二迭代路徑清晰。從訪存模式分析到代碼修改到重新驗證每一步都是標準化的適合用 Agent 去編排。第三優化空間大且存在多樣性。不同應用的訪存模式差異明顯Agent 需要不斷調整假設這種“在不確定性中做決策”的能力恰恰是大模型 Agent 相對擅長的事情。所以你會看到ArchAgent v2 選擇數據預取錦標賽作為案例研究并不是偶然。它是在選一個“難度適中但反饋機制清晰”的領域來證明架構智能體在真實科研實驗中的價值。這也提醒我們判斷一個 Agent 工具是否成熟先看它選擇的應用場景是否具備清晰的閉環反饋。3. ArchAgent v2 做了什么從代碼生成到閉環優化3.1 ArchAgent v2 的定位先厘清概念。ArchAgent 是一種面向計算機體系結構設計的 AI 智能體它的核心能力是操作用戶給定的設計環境自動完成實驗迭代。v2 版本相比早期版本更大改進在于任務理解能力和多步執行能力它不只是“生成一段預取器代碼”而是維護一個完整的實驗周期。我們可以把 ArchAgent v2 的工作過程拆成四個階段階段一項目與任務初始化。Agent 接收用戶的任務描述了解當前模擬器環境、baseline 預取器代碼、trace 列表和評估指標。這個階段類似一個實習生入職時閱讀項目文檔。階段二執行與觀察。Agent 運行當前代碼收集預取器在不同 trace 上的表現數據包括 IPC、prefetch coverage、accuracy 等。它會把失敗或表現不佳的用例單獨標記出來。階段三分析與迭代。Agent 對比不同配置的結果定位瓶頸提出假設生成新的預取器代碼重新提交到模擬器執行。這一步是循環的會一直持續到滿足退出條件或者達到預設的迭代上限。階段四總結與診斷。當迭代結束后Agent 匯總數據形成結論幫助研究人員理解最終方案為什么有效、在哪些場景下仍然存在局限。這四個階段并不神秘本質上和人類研究者的工作流程一致。關鍵在于Agent 把每個階段都“顯式化”了——它需要維護任務狀態、結構化記錄實驗結果、在下一步行動之前讀取分析結果。3.2 與單純代碼生成的最大差異很多人第一次接觸 ArchAgent 時會覺得“這不就是讓大模型寫 C 代碼嗎”這種理解只看到表面。如果只是生成代碼模型完全可以在沒有任何模擬器反饋的情況下直接輸出一個“理論上很完美”的預取器。但實際工程中這種直接生成的代碼很難用編譯環境可能有差異代碼在本地跑不通。預取器和其他模塊接口不匹配鏈接失敗。即使編譯通過實際 IPC 收益大概率不如預期。某個 trace 效果好另一個 trace 效果差需要權衡。ArchAgent v2 的關鍵點在于它構建了一個有反饋的閉環。代碼生成之后必須經過編譯、運行、結果觀察、性能分析再回到代碼修改。沒有反饋的“生成代碼”在硬件設計這種高成本實驗場景中幾乎沒有價值有反饋的“閉環迭代”才可能逼近真實可用。這也是我想提醒讀者的第一點評估一個 AI 編程類工具不要只看它生成的代碼質量更要看它反饋閉環的完整度。能寫一段好代碼的模型很多能在真實環境里跑完實驗并自動修正的 Agent 才少見。3.3 它在 DPC 案例中表現出的核心能力從公開材料看ArchAgent v2 在數據預取錦標賽這個案例中表現出了幾個值得關注的工程能力第一能理解領域特征的上下文。它不只是看著代碼逐行改而是會把“訪存模式”、“預取覆蓋度”、“帶寬開銷”這些體系結構概念映射到具體代碼行為上。這意味著 Agent 的訓練或提示設計中包含了體系結構領域知識的注入。第二能利用實驗數據做決策。當模擬器返回結果后Agent 會讀取性能數據和上一輪對比判斷當前修改方向是否有效。這種“以實驗數據驅動決策”的能力是真正接近科研工作者的行為模式。第三能管理多文件任務的耦合。預取器不是孤立存在的它要適配模擬器的接口、處理不同的配置選項、兼容多線程和其他模塊。ArchAgent 需要在多文件上下文中保持一致性避免“改了一處破壞另一處”。我在這里特意不使用“實現了 XX% 性能提升”這樣的表述因為競賽的最終成績還受很多因素影響包括 trace 選擇、模擬器設置、隨機性等。更穩妥的判斷是ArchAgent v2 證明了 Agent 能夠完成從實驗分析到代碼迭代的完整循環這是硬件設計自動化方向上一個實實在在的進展。4. 案例分析ArchAgent v2 在數據預取錦標賽中的“人機分工”4.1 人和 Agent 各自負責什么如果只看“Agent 自動跑實驗”很容易誤以為人類可以完全撒手不管。真實情況不是這樣的。從公開信息推斷ArchAgent v2 在你自己的數據預取實驗中的合理使用模式更接近“人機協同分工”人負責定義優化目標、約束條件比如帶寬開銷不能超過多少、評估指標權重、迭代輪數上限提供領域初始假設審查最終結果并做判斷。Agent 負責在給定的空間內快速執行大量嘗試記錄中間結果保持實驗過程可復現生成結構化分析報告。這種分工的價值在于Agent 可以把人從“重復且繁瑣”的調參-編譯-運行循環中解放出來。人可以專注于更高層次的權衡判斷比如“這個預取機制是否有硬件可實現性”、“某個策略在帶寬受限場景下是否會失控”。4.2 實驗閉環的四個關鍵環節假設我們要復現一個 ArchAgent 風格的數據預取優化流程整個實驗閉環通常包含四個環節。環節一環境啟動。準備好模擬器、trace 和 baseline 代碼確保一次干凈的編譯運行可以成功。這是后面所有自動化的基礎。環節二自動執行與數據采集。Agent 每次拿到一個預取器代碼變體都要自動完成編譯、運行、收集結果、整理成結構化數據。這個環節看起來簡單實際上最容易遇到問題比如模擬器啟動參數復雜、輸出日志格式不統一、編譯緩存失效導致結果不可復現。環節三分析決策。Agent 根據上一輪的結果決定下一步是修改預取深度、調整歷史表大小、還是更換一種預取策略。這一步的難點在于 Agent 需要把“數字變化”轉化為“代碼修改決定”。環節四退出與匯報。達到迭代次數上限或性能不再提升時Agent 輸出最終代碼和分析報告人來做最終驗收。這四個環節中環境啟動是硬門檻數據采集是穩定性瓶頸分析決策是智能核心退出匯總是體驗關鍵。任何一個環節做不好Agent 都會變成“看起來很智能實際沒法用”的玩具。4.3 為什么說這是“Case Study”而不是“端到端產品”項目標題里有一句很關鍵的話“A Case Study with the Data Prefetching Championship”。這個表述說明作者把它定位為一個案例研究而不是一個已經成熟到可以直接替換真實設計流程的工業級產品。凡是做過硬件設計的人都知道預取器競賽和真實芯片設計之間存在巨大鴻溝競賽通常使用 trace 驅動的模擬無法完全反映真實硬件的時序和功耗。競賽關注的是 IPC 提升真實設計還要考慮布線面積、發熱、多核干擾。競賽的 trace 集合是固定的真實場景的負載千變萬化。所以ArchAgent v2 的意義在于驗證“智能體輔助體系結構實驗”的可行性而不是宣告“硬件設計師要被 AI 替代了”。對研究者來說這是好消息你擁有了一種新的實驗工具可以更快地驗證想法、探索更大的設計空間。5. 如果你想復現ArchAgent 類實驗的架構與關鍵機制這一節我們進入實操層面。假設你不想用 ArchAgent 的完整閉源流程而是希望在自己的硬件設計項目中搭建一個類似的“Agent 做實驗”流水線需要理解哪些關鍵機制5.1 總體架構Agent 工具 工作區從架構上看ArchAgent 這類工具通常由三部分組成Agent 核心負責推理和規劃通?;诖笳Z言模型通過提示詞注入領域知識通過規劃模塊決定下一步動作。工具層封裝對模擬器、編譯器、文件系統、代碼庫的操作Agent 通過“調用工具”而不是直接手寫 shell 命令來完成任務。工作區保存代碼、中間結果、日志、實驗狀態讓 Agent 能在多輪迭代中保持上下文一致。# 偽代碼Agent 實驗閉環的核心邏輯示意 from typing import Dict, List class AgentLoop: def __init__(self, simulator, workspace, llm): self.simulator simulator self.workspace workspace self.llm llm def run_one_epoch(self, code_version: str, trace_list: List[str]) - Dict: # 1. 編譯當前版本預取器 self.simulator.compile(code_version) # 2. 在多個 trace 上運行收集結果 results {} for trace in trace_list: output self.simulator.run(trace) results[trace] self.parse_metrics(output) return results def decide_next_action(self, history: List[Dict]) - Dict: # 3. 讓 LLM 分析歷史指標生成下一步代碼修改建議 prompt self.build_prompt(history) suggestion self.llm.chat(prompt) return suggestion這段代碼只是為了說明架構不代表某款真實工具的具體實現。5.2 關鍵機制一結構化的狀態管理Agent 做多輪實驗時最大的問題是“迷路”它改著改著忘了最初的目標或者忽略了幾輪之前某個重要實驗的結果。解決辦法是結構化的狀態管理。建議的做法是每輪實驗后都生成一個實驗記錄文件包含當前代碼 commit 或版本標識。修改了哪個文件、哪個函數。每個 trace 上的 IPC、accuracy、coverage。Agent 當時的假設和下一步計劃。這樣即使 Agent 的上下文窗口有限也能通過讀取歷史文件來回溯決策鏈路。{ experiment_id: exp_008, parent_id: exp_007, code_version: git-abc1234, hypothesis: 增大預取距離至 8 可能提高流式訪問的覆蓋率, metrics: { per_trace_ipc: { 603.bwaves: 1.42, 605.mcf: 1.18 }, prefetch_accuracy: 0.53 }, next_plan: 嘗試保持距離為 8但將歷史表項數減半觀察帶寬開銷變化 }# 只提交一個實驗信息文件方便后續腳本解析 cat experiment_record.json5.3 關鍵機制二編譯與環境的確定性硬件模擬器的編譯通常很慢而且環境依賴復雜。Agent 自動改代碼后必須確保編譯過程是確定性的否則每次結果差異可能不是代碼導致的而是環境不一致導致的。工程上建議使用 Docker 或固定的構建環境。代碼版本必須綁定構建產物不能出現“代碼改了但二進制沒更新”的烏龍。模擬器運行前檢查編譯時間戳或哈希。# 文件路徑Dockerfile模擬器環境示例 FROM ubuntu:22.04 RUN apt-get update apt-get install -y \ build-essential git wget \ python3 python3-pip WORKDIR /workspace RUN git clone https://github.com/ChampSim/ChampSim.git5.4 關鍵機制三可插拔的領域知識注入如果你希望 Agent 不只生成代碼還能像架構師一樣“思考”就需要把領域知識注入到提示詞中。比如當 Agent 面對一個訪存密度高但局部性不強的 trace 時它應該能聯想到“這類負載可能更適合基于 PC 的預取而不是基于地址的下一行預取”。常見的做法是在系統提示詞中寫入預取器基礎概念。在每輪實驗提示詞中附上當前 trace 的訪存特征摘要。允許 Agent 在實驗結果異常時主動查詢領域的知識文檔。# 一個可選的提示詞模板文件示例prefetch_prompt.txt 你是一名資深計算機體系結構工程師正在優化數據預取器。 當前 baseline 是 next-line prefetcher緩存行大小為 64 字節。 實驗結果表明 - 在 matmul 場景中 prefetch accuracy 為 0.42coverage 為 0.38 - 在 linked-list 場景中 accuracy 為 0.20coverage 為 0.10。 請分析兩個場景訪存模式差異并給出下一步最值得嘗試的預取策略。領域知識注入的質量直接決定了 Agent 是“厲害的代碼機器”還是“真正的架構助手”。這也是 ArchAgent 這類工具和通用 ChatGPT 寫代碼相比最核心的差異點。6. 動手實踐從 ChampSim 開始搭建實驗環境如果你被前面的分析打動了想親自動手跑通一個最小實驗這一節可以給你一個具體路徑。6.1 選擇模擬器和實驗材料科研用途的模擬器有很多選擇。數據預取錦標賽常用的 ChampSim 是一個不錯的起點它開源、模塊化、專門用于緩存層級和預取器研究。你需要準備ChampSim 源碼。一組 benchmark trace通常是壓縮的文本格式或二進制格式按指令流組織。baseline 預取器配置。安裝步驟很簡單但執行順序有講究# 1. 克隆模擬器代碼 git clone https://github.com/ChampSim/ChampSim.git cd ChampSim # 2. 檢查支持的基本預取器 ls prefetchers/ # 3. 編譯不同分支的編譯命令可能不同以官方 README 為準 ./build_champsim.sh bimodal no # 4. 查看幫助 ./run_champsim.sh -h如果你本地沒有下載 trace也可以用模擬器自帶的簡單測試用例或者生成小規模合成 trace先跑通流程。6.2 第一次運行觀察 baseline 效果跑通流程后你需要記錄 baseline 的結果作為后續 Agent 優化的對照。# 運行模擬器指定 trace 和配置 ./run_champsim.sh bimodal-no-lru 1 ipc 1 1 計算模擬器參數 1 1 1 1 0 0 1 1 trace_file # 關鍵輸出項通常是 # CPU 0 core IPC # total L1D misses # total L1D prefetch requests # L1D prefetch accuracy如果你的環境無法直接運行官方腳本也可以繞過腳本直接調用編譯好的模擬器二進制并傳入參數。關鍵是保證你能拿到結構化的輸出數據。為了方便 Agent 解析建議把指標提取成 JSON 或 CSV。# 文件路徑parse_champsim_log.py # 功能從 ChampSim 輸出日志中提取關鍵指標輸出為 JSON/CSV import re import sys LOG_PATH sys.argv[1] def parse_log(path): result {} with open(path, r, encodingutf-8) as f: for line in f: line line.strip() m re.match(rCPU 0 core IPC: ([\d.]), line) if m: result[ipc] float(m.group(1)) m2 re.match(rL1D PRELOAD REQUESTS: (\d), line) if m2: result[prefetch_requests] int(m2.group(1)) return result if __name__ __main__: metrics parse_log(LOG_PATH) print(metrics)python3 parse_champsim_log.py output.txt運行后你至少應該看到 IPC 等關鍵指標被正確輸出。如果這里解析失敗后續 Agent 的所有分析都會失去數據基礎。6.3 最小實驗閉環版本如果你不打算立刻接入 LLM可以先用傳統方式跑一個“手動 Agent 閉環”記錄 baseline 指標人工修改預取器參數重新編譯運行對比指標。這個流程跑順之后再考慮接入大模型自動決策。這里我建議你按順序完成三個驗證驗證 baseline 能正常跑通。驗證你能讀到并解析指標。驗證任意修改代碼后指標會發生變化。第三個驗證特別重要。如果改完代碼指標完全不變那很可能你的修改沒有真正生效可能是編譯緩存、參數傳遞或構建腳本的問題。這也是實際工作中最常見的坑。7. 常見問題與排查思路在搭建和運行 ArchAgent 類的預取器優化實驗中我整理了幾個高頻問題。這些問題有的來自模擬器使用經驗有的來自 Agent 工程化常見陷阱建議先收藏再對照排查。問題現象可能原因排查方式解決方案模擬器編譯通過但運行直接崩潰trace 路徑錯誤或格式不支持查看運行日志、確認 trace 文件確實存在于指定路徑重新下載或生成 trace確認文件哈希一致修改預取器代碼后指標完全不變構建腳本沒有重新編譯對應模塊檢查編譯緩存、比較二進制時間戳清理緩存后重新構建確保新代碼被編譯進模擬器Agent 在多輪迭代后生成無效代碼上下文丟失了某輪實驗結果檢查 Agent 的工作區是否保存了結構化實驗記錄每輪實驗結果落盤并在提示詞中引用歷史實驗 ID某些 trace 指標波動劇烈模擬器的 warm-up 階段不足增加 warm-up 指令數或固定運行參數統一所有實驗的運行參數避免對比失真Agent 始終重復同一個無效方案提示詞中缺少約束或 Agent 無法從失敗結果中學習在提示詞中強調“如果上一輪方案無效則更換機制而非微調參數”增加失敗案例的摘要引導 Agent 切換策略實驗數據量過大Agent 分析不過來每輪收集了過多無關指標優先保留 IPC、accuracy、coverage、帶寬占用等關鍵指標對原始日志做摘要只把摘要交給 AgentDocker 環境無法訪問網絡容器內未代理或未配置鏡像源檢查容器網絡設置配置宿主網絡模式或離線導入依賴包除了表格中的問題還有一個容易被忽略的環節LLM 的非確定性。同一輪實驗同樣的輸入Agent 的下一步決策可能不同。這會導致實驗不可復現。工程上的常見解法是在做重要決策時讓 Agent 給出多份候選方案再統一評估或者固定 temperature 參數并在實驗記錄中寫明模型版本和隨機種子。8. 最佳實踐與工程建議這一節寫一些基于實踐經驗的建議。無論你最終選用 ArchAgent 還是自建流水線下面這些原則大概率都能用上。8.1 實驗治理優先于模型能力我在看很多團隊做 Agent 實驗時發現大家過度關注“模型是否聰明”卻忽略了一個更本質的問題實驗過程是否可治理。在硬件設計場景中一次錯誤的迭代可能耗費數小時計算時間。如果你的工作區沒有版本控制、實驗結果沒有結構化記錄、Agent 的決策鏈路人眼無法追蹤那模型再聰明也白搭。我建議優先做好三件事代碼全部進 Git每輪實驗一個 commit提交信息寫明假設。實驗結果統一命名比如 exp_007_20250101_ipc.json。Agent 每輪決策必須生成一個簡短的解釋寫入日志。這樣即使 Agent 出現嚴重錯誤也能方便地回滾到某個歷史版本并且通過日志回答“為什么當時會做這個決定”。8.2 用“迭代預算”和“退出條件”管住 AgentAgent 運行起來之后潛在風險是它會在一個無意義的方向上反復試錯。所以在實驗啟動前一定要明確最大迭代輪數是多少。如果連續 N 輪 IPC 沒有提升是否停止嘗試當前的策略方向。當某個修改導致指標顯著下降時是否自動回滾到上一版本。這些約束可以寫在系統提示詞里但更可靠的做法是在工作流代碼中硬編碼判斷邏輯。不要把 Agent 的自覺當成保障。# 一個樸素但有效的收斂判斷示例連續 3 輪 IPC 提升不足 1%就切換策略 echo 如果最近3輪平均IPC提升 1%進入探索性實驗模式8.3 領域人機接口設計讓 Agent 能理解“硬件不可行”約束預取器設計和純軟件優化不同它還要考慮硬件的可實現性。例如一個在模擬器中效果很好的預取器可能需要一個巨大的存儲表在真實芯片上面積和功耗都不可接受。如果你希望 Agent 的建議是可落地的就應該在設計接口時加入約束。比如預取器使用的存儲預算上限。允許的額外內存帶寬。預取深度范圍。是否可以修改緩存替換策略通常不允許因為會干擾其他模塊。# 推薦在任務描述中明確約束例如 約束條件 1. 預取表項總存儲不得超過 32KB。 2. 最大預取深度為 8。 3. 不允許修改 L2 緩存替換策略。 4. 生成代碼必須通過 clang-tidy 靜態檢查。8.4 從“Agent 寫代碼”到“Agent 做研究”的認知升級最后一個建議稍微抽象一些。不要只把 ArchAgent 當做一個自動寫代碼插件而要把它當做一個可以承載“科學方法”的實驗人員。真正的科研實驗流程是假設驅動、數據驗證、結論修正。一個成熟的架構智能體也應該遵循這個流程。所以在你設計 Agent 的提示詞時不要只寫“修改代碼”而要寫成分析訪存模式形成假設?;诩僭O設計實驗。運行實驗觀察結果。如果結果符合假設進一步加深如果不符合修改假設并嘗試新的方向。這套流程和寫代碼是兩件不同的事。當我們把 Agent 的定位從“代碼編輯器”升級為“實驗助手”之后它的價值會明顯不同。9. 總結與后續學習方向寫到這里可以把 ArchAgent v2 這個案例研究的關鍵判斷再強調一遍它真正證明的不是“AI 能寫預取器”而是“AI 能完成有反饋的實驗閉環”。在數據預取錦標賽這樣指標清晰、迭代路徑明確的場景中這種閉環能力可以轉化為實際的研究效率提升。如果你想繼續深入我建議從兩條線并行推進一條線是體系結構方向。去深入了解 ChampSim 的代碼結構理解一個 baseline 預取器比如 next-line 或 SPP在每個 cache miss 時做了什么決策手動修改幾次參數體會預取器設計的復雜度。這條線能幫你建立領域感知沒有這個感知后面用 Agent 也判斷不了結果好壞。另一條線是 Agent 工程方向。去研究當前 LangChain、LlamaIndex 這類框架中 ReAct、Plan-and-Execute 等模式的實現細節然后嘗試把一個簡單的“編譯—運行—解析—決策—修改代碼”閉環用代碼搭出來。這個閉環并不需要大模型也能寫但加了 LLM 之后整個系統的靈活性和上限會大大提升。如果你正好在研究數據預取或者更廣泛的硬件設計自動化建議把 ArchAgent 的案例分析當作思路參考但一定要自己動手把最小閉環跑通。跑通之后你會發現真正有價值的不是工具本身而是“把實驗過程自動化”這套方法論在硬件領域的遷移能力。ArchAgent 只是一個引子背后的趨勢是AI Agent 正在從軟件研發走向體系結構研究這場變化的深度可能超過很多人的預期。