Tag: perf
-
Pipeline Speak: Learning More About Intel Microarchitechture Codename Sandy Bridge 中文翻譯
中文翻譯前言 為了理解 perf 的輸出意義[1],必須要了解 CPU Microarchitecture。如果你用 perf stat -d gzip file1 這個方式來輸出,你會發現到輸出中有加粗這個部份: [crayon-656848f55a24c146007621/] 其中有 stalled-cycles-frontend:u 以及 stalled-cycles-backend:u 兩個 events 可做參考。如果要更為理解 CPU frontend 以及 backend,可以參考 Shannon Cepeda's 的 frontend and backend. 因此有了這兩篇文章的翻譯。 正文 我相信你一定知道,現代電腦處理器有使用一種技術叫作 pipelining (管線化、流水化) 來提升指令吞吐量。在一個管線中,處理器裏各種不同的硬體專用部件 [various dedicated pieces] 分別負責執行每一個指令的特定功能,或是在同一時間處理不同的指令。 舉例而言,當管線的一個部份在執行 [executing] 指令 A,另一個部份則去取得 (fetching) 指令 B,再另一個部份可能正在提交 [committing[2]] (把結果寫入記憶體)指令 C。這樣的設計,允許處理器在同一個時間內處理多個指令,同時讓等待資料與其他長指令的處理更為平順。 管線並不是一個存在於晶片上的實體架構 ─ 而是指實際上處理器處理指令的流程。特規化的硬體與隊列 [queues] 設計讓管線能夠持續的把指令送到正確的方向。管線的階層 [stages] […]