Tag: Intel
-
Pipeline Speak, Part 2: The Second Part of the Sandy Bridge Pipeline 中文翻譯
原文:https://software.intel.com/en-us/blogs/2011/12/01/pipeline-speak-part-2-the-second-part-of-the-sandy-bridge-pipeline 管線後端 The Back-End 管線的後端負責執行從前端產生的微指令。為了要讓後端的資源能夠有效的被利用,後端使用自己的 bookkeeping system 來追蹤每一個微指令,其所需資料 [data requires] 以及執行狀態 [exectes status]。然後它將以任何順序來執行微指令 ─ 根據微指令的所需資料什麼時候全部準備完成以及是否有可用的執行資源。微指令的 bookkeeping 以及排程可以說非常的複雜,而且需要許多專用的隊列結構。當有些隊列結構已經滿了,也就是後端不能在從前端接收新的微指令 ─ 在 Sandy Bridge 最佳化方法中,我們稱這種情況做 " back-end bound pipeline slots"。 後端持續在追蹤的執行資源 [ execution resources] 稱做執行單元 [execution units]。每個 microarchitecture 可能會有稍微不同的 Layout 以及不同的可用執行單元。這些執行單元是在處理上處理特定功能的邏輯組件,像是加法、除法、邏輯位移、從記憶體讀取等。當微指令使用完執行單元以及所有資料都已經讀取或儲存完畢,我們稱他們已經 "退休" [retired] ─ 這表示微指令已經完成在管線該做的工作。這些微指令絕對不會再被顯式的被轉換回指令 [instructions]。而一個指令被 "退休" 則代表所有的其產生的微指令都已經 "退休",不過這只是個抽象化的表達方式來說明管線後端是如何處理微指令而已。 了解一點處理器的微架構,包括管線的基礎知識,在效能分析上可以說非常的有幫助。特別是在 Intel Sandy Birdge 架構,因為,第一次在 x86 處理器上,performance events 可以從一個內聚的方法 […]
-
Pipeline Speak: Learning More About Intel Microarchitechture Codename Sandy Bridge 中文翻譯
中文翻譯前言 為了理解 perf 的輸出意義[1],必須要了解 CPU Microarchitecture。如果你用 perf stat -d gzip file1 這個方式來輸出,你會發現到輸出中有加粗這個部份: [crayon-656830255e775980704150/] 其中有 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] […]