日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《计算机体系结构:量化研究方法》读书笔记

發(fā)布時間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《计算机体系结构:量化研究方法》读书笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Lecture 1: Quantitative Approach

1.計算機(jī)體系結(jié)構(gòu)與計算機(jī)組成原理有什么區(qū)別?

計算機(jī)的實現(xiàn)包括兩個方面:組成和硬件。組成一詞包含了計算機(jī)設(shè)計的高階內(nèi)容,例如存儲器系統(tǒng),存儲器互連,設(shè)計內(nèi)部處理器 CPU (中央處理器——算術(shù)、邏輯、分支和數(shù)據(jù)傳送功能都在內(nèi)部實現(xiàn))。有時也用微體系結(jié)構(gòu)一詞來代替“組成”。例如AMD Operon和Intel Core I7是兩個指令集體系結(jié)構(gòu)相同但組成不同的處理器。這兩種處理器都實現(xiàn)X86指令集,但它們的流水線和緩存組成有很大的不同。硬件指的是一個計算機(jī)的具體實現(xiàn),包括計算機(jī)的詳盡邏輯設(shè)計和封裝技術(shù)。

真正的體系結(jié)構(gòu)涵蓋了計算機(jī)設(shè)計的所有三個方面:指令集體系結(jié)構(gòu)、組成或微體系結(jié)構(gòu)、硬件。計算機(jī)架構(gòu)師設(shè)計的計算機(jī)必須滿足功能需求,并達(dá)到價格、功耗、性能和可用性指標(biāo)。

2.現(xiàn)如今的芯片設(shè)計趨勢或者現(xiàn)狀是怎樣的?

功率是現(xiàn)如今使用晶體管的主要限制,通過降低電壓可以大幅度降低動態(tài)功率和能耗,二十年來,電壓已經(jīng)從最初的5V降低到1V以下,然而如果不能降低電壓或提高每個芯片的功率,那可能就要減緩時鐘頻率的增長速度,這也是從2003年以來的主要趨勢。

3.怎樣設(shè)計出低成本的集成電路?

雖然集成電路的成本以指數(shù)形式下降,但基本的硅制造工藝沒有變化:仍需要對晶圓進(jìn)行測試,切割成晶片進(jìn)行封裝。對于計算機(jī)設(shè)計人員來講,由于制造工藝決定了晶圓的成本、晶圓成品率和單位面積上的缺陷數(shù),設(shè)計人員唯一可控的就是晶片面積。

4.如何對計算機(jī)的性能進(jìn)行評估?

使用量化的研究方法,從計算機(jī)的響應(yīng)時間、執(zhí)行時間、吞吐量來進(jìn)行綜合評估。

主要通過基準(zhǔn)測試來對計算機(jī)進(jìn)行性能的測試與度量,包括:桌面基準(zhǔn)測試、服務(wù)器基準(zhǔn)測試。要注意SPEC基準(zhǔn)測試集,是一個使用相當(dāng)廣泛的測試集。

5.如何理解程序局部性?

局部性原理指的是程序常常重復(fù)使用它們最近使用過的數(shù)據(jù)和指令。有一條廣泛使用的經(jīng)驗規(guī)律:一個程序90%的執(zhí)行時間花費在僅10%的代碼中。充分利用時間局部性和空間局部性可以優(yōu)化程序的執(zhí)行時間。

處理器中指令的提取與譯碼器的使用可能比乘法器要繁瑣的多,所以應(yīng)該優(yōu)先對其進(jìn)行優(yōu)化。

6.設(shè)計多核芯片的意義何在?

2005年以來,之所以轉(zhuǎn)向一芯多核,并不是因為取得了什么重大突破,顯著簡化了并行編程方式。而是因為ILP(指令級并行)壁壘和功率壁壘的存在存在而別無選擇。在一個芯片中設(shè)計多個處理器并不能保證功率較低。而的確有可能設(shè)計一種消耗更高功率的多核芯片。其潛力僅僅在于能夠用幾個低時鐘頻率的高效核心代替高時鐘頻率的低效核心,從而有可能提高整體效率。因此多核處理器并不是萬能的。


First Microprocessor Intel 4004, 1971

7.Amdahl 定理有何作用?

利用Amdahl 定理可以計算出通過改進(jìn)計算機(jī)某一部分而能獲得的性能增益。

Lecture 2: Instruction Set Principles


指令集架構(gòu)(Instruction Set Architecture, ISA)-匯編語言程序員或編譯器編寫者可見

ISA包括:

  • 1.編程寄存器
  • 2.操作數(shù)訪問
  • 2.操作數(shù)的類型和大小
  • 4.指令集
  • 5.尋址模式
  • 6.指令編碼

ISA 是硬件與軟件之間的連接點。任何在內(nèi)存里執(zhí)行的程序都將通過 ISA 進(jìn)行解耦從而能在底層架構(gòu)上執(zhí)行。

計算機(jī)體系結(jié)構(gòu)和抽象層如下:

算術(shù)運算指令的執(zhí)行主要分為以下幾種:

  • Stack type:操作數(shù)隱含在棧頂指針
  • R-R type:操作數(shù)都在寄存器中
  • R-AC type:一個操作數(shù)隱含在 AC 計數(shù)器中
  • R-M type:需要訪存操作去取操作數(shù)

Lecture 3: Memory Hierarchy Design

動機(jī):

時間局部性(temporal locality)
被引用過一次的存儲器位置在未來會被多次引用(通常在循環(huán)中)。
空間局部性(spatial locality)
如果一個存儲器的位置被引用,那么將來他附近的位置也會被引用。

正是由于局部性原理的存在和“在給定實現(xiàn)技術(shù)和功率預(yù)算的情況下,硬件越小,速度可以越快”的準(zhǔn)則,存儲器體系結(jié)構(gòu)便運營而生。

有學(xué)生可能會問,為什么需要多層次的存儲結(jié)構(gòu),使用一個理論上無限大的存儲器去完成一些工作不就可以了么?這樣表面上是可以的,但是我們沒有辦法立刻馬上從這樣一個十分龐大的存儲器中得到我們想要的機(jī)器字。我們不得不去構(gòu)建分層的結(jié)構(gòu)存儲器,每一層的容量都要大于前一層,但訪問速度也要慢一些。

當(dāng)前的一大趨勢:存儲器性能和處理器性能之間的差距越來越大。

優(yōu)化緩存性能的高級方法:

1.使用小而簡單的第一級緩存,用來縮短命中時間、降低功率。

大容量L1緩存會給時鐘頻率帶來影響,所以近來L1緩存大小的漲幅很小。近些年來,L1緩存中使用了較高的相聯(lián)度,容易知道,直接映射的命中時間略快于兩路組相聯(lián),而近些年來處理器在訪問緩存時至少需要兩個時鐘周期,因此命中時間較長不會帶來太大影響。

2.采用路預(yù)測以縮短命中時間。

路預(yù)測指的是在緩存中另外保存了一些位,用于預(yù)測下一次緩存訪問組中的路和塊。實驗表明,對I-緩存的準(zhǔn)確度要優(yōu)于對D-緩存的準(zhǔn)確度(這也符合常理)。

3.實現(xiàn)緩存訪問的流水化、以提高緩存帶寬

這個方法沒有看懂

4.采用無阻塞緩存,以提高帶寬

允許“缺失時仍然命中”甚至“多次缺失仍然命中”。

5.采用多組緩存以提高緩存帶寬

6.關(guān)鍵字優(yōu)先和提前重啟動以降低缺失代價

7.合并寫緩沖區(qū)以降低缺失代價

將缺失數(shù)據(jù)地址與寫緩沖區(qū)中的有效項目進(jìn)行對比,如果匹配,則將新數(shù)據(jù)與這個項目合并在一起,稱為寫合并。

8.采用編譯器優(yōu)化來降低缺失率

這種方法應(yīng)用的較為廣泛,尤其是在循環(huán)優(yōu)化之中。

著重講一下循環(huán)分塊

分塊技術(shù)的目的是在緩存中載入的數(shù)據(jù)被替換之前,在最大限度上利用它。

for (int i = 0; i < N; ++i)for (int j = 0; j < N; ++j){r = 0;for (int k = 0; k < N; ++k)r = r + y[i][k] * z[k][j];x[i][j] = r;}

循環(huán)分塊技術(shù)可以簡單的看作是將兩層循環(huán)變?yōu)樗闹匮h(huán),表面上增加了時間復(fù)雜度,實則是提高了緩存的命中率,分塊后的代碼如下:

for (int jj = 0; i < N; jj = jj + B)for (int kk = 0; j < N; kk = kk + B)for (int i = 0; i < N; i = i + 1)for (int j = 0; j < min(jj + B, N); j = j + 1){r = 0;for (int k = 0; k < min(kk + B, N); k = k + 1)r = r + y[i][k] * z[k][j];x[i][j] = x[i][j] + r;}

B 被稱作分塊因子,這樣的循環(huán)優(yōu)化技術(shù)在深度學(xué)習(xí)硬件加速器中的應(yīng)用十分廣泛,很多新型的架構(gòu)都是基于這樣的技術(shù)設(shè)計的。

如何最直觀的理解分塊原理?

可以從原始代碼中看出來,對數(shù)組 z 的訪問步長較大,對數(shù)組 x 的訪問并不那么頻繁且按列訪問,在內(nèi)部的兩層循環(huán)中可以達(dá)到 NN 次,如果緩存大小較大,能夠裝下所有的x、y、z三個 NN 數(shù)組,那么并不存在什么問題,但是如果緩存較小,顯然缺失率會較大。

解決方法就是對數(shù)組的訪問步長進(jìn)行限制,改為計算一個大小為 B*B 的子矩陣。

總結(jié)

以上是生活随笔為你收集整理的《计算机体系结构:量化研究方法》读书笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。