- L01. 課程總體概要介紹
- L02. 基本概念和指令集架構(gòu)ISA
- L03. 指令集架構(gòu)的設(shè)計權(quán)衡
- L04. 指令集架構(gòu)的設(shè)計權(quán)衡 (續(xù)) & MIPS指令集架構(gòu)
- L05. 微體系結(jié)構(gòu)-I 單周期CPU設(shè)計
- L06. 微體系結(jié)構(gòu)-II 多周期CPU設(shè)計
- L07. 流水線技術(shù)-I
- L08. 流水線技術(shù)-II
- L09. 分支預(yù)測-I
- L10. 分支預(yù)測-II
- L11. 精確異常
- L12. 亂序執(zhí)行
- L13. 亂序執(zhí)行(續(xù).) & 數(shù)據(jù)流
- L14. 單指令多數(shù)據(jù)流(SIMD)
- L15. GPUs VLIW DAE
- L16. 靜態(tài)指令調(diào)度
- L17. 內(nèi)存層次化結(jié)構(gòu)
- L18. 緩存(Cache)
- L19. 高性能緩存
- L20. 虛擬內(nèi)存
- L21. 主存
- L22. 內(nèi)存控制器
- L23. 內(nèi)存管理
- L24. 模擬和內(nèi)存延遲容忍度
- L25. 預(yù)取內(nèi)存技術(shù)
- L26. 更多的預(yù)取和新興內(nèi)存技術(shù)
- L27. 多處理器
- L28. 內(nèi)存一致性和緩存一致性
- L29. 緩存一致性 (續(xù).)
- L30. 內(nèi)存中計算
- L31. 可預(yù)測的性能
- L32. 異構(gòu)系統(tǒng)
- L33. 網(wǎng)絡(luò)互連
計算機(jī)體系結(jié)構(gòu)是計算機(jī)科學(xué)與技術(shù)學(xué)科重要的分支之一。它從全局的觀點(diǎn)出發(fā),通過采用定量分析技術(shù),建立起設(shè)計、評價、優(yōu)化計算機(jī)體系結(jié)構(gòu)的方法和技術(shù)。利用這些方法和技術(shù),可有效地評價已有計算機(jī)系統(tǒng)的性能、改進(jìn)已有的系統(tǒng)設(shè)計、進(jìn)而探討新的體系結(jié)構(gòu)。計算機(jī)系統(tǒng)結(jié)構(gòu)是計算機(jī)科學(xué)工作者,特別是從事偏重于計算機(jī)硬件系統(tǒng)和系統(tǒng)軟件研究的科學(xué)工作者的一門必備基礎(chǔ)。
本篇上接《芯片》,從芯片深入到CPU。本篇分三部分,第一部分接上篇介紹設(shè)計CPU的基本步驟,第二部分介紹CPU原理,第三部分介紹cache原理。
設(shè)計CPU的基本步驟
第一步竟然是matlab(或cadence)仿真(matlab真強(qiáng)大啊)。印象中matlab是可以進(jìn)行FPGA設(shè)計的,設(shè)計好還能自動轉(zhuǎn)換verilog代碼。
第二步當(dāng)然就是實(shí)際的verilog/VHDL代碼編寫了,這個過程也叫前端仿真,之前用賽靈思做通信收發(fā)機(jī)實(shí)驗(yàn)的時候印象中仿真軟件是可以根據(jù)verilog直接輸出波形的,用來進(jìn)行功能驗(yàn)證足夠了。
第三步邏輯綜合,生成實(shí)際的邏輯門電路,據(jù)說還會考慮時延。這一步里就要引入臺積電、中芯國際這種代工廠的工藝庫了,芯片設(shè)計企業(yè)拿到工藝庫后,就能根據(jù)工藝庫生成對應(yīng)的電路參數(shù),驗(yàn)證芯片了。
第四步仿真驗(yàn)證,也叫后端仿真,這個在學(xué)校做過的,就是拿FPGA驗(yàn)證一下綜合之后的邏輯門電路。一般在學(xué)校做項目或者課題到這里就結(jié)束了,“我都已經(jīng)做出實(shí)物了,很厲害了好吧?”,其實(shí)還有一步后端設(shè)計,就是把這個燒進(jìn)FPGA的東西設(shè)計成電路板圖,加一些測試電路,進(jìn)行布局規(guī)劃等等。
(之前跟做芯片的大佬一起出差招聘,聽他們嘮嗑各種前端后端的,現(xiàn)在終于明白是做啥了。
現(xiàn)在的所謂高端芯片,核心架構(gòu)是ARM的,代工是臺積電的,設(shè)計工具是美國的,誰能告訴我芯片設(shè)計企業(yè)的核心競爭力在哪里?僅僅是離最終產(chǎn)品更近嗎?所以海思永遠(yuǎn)無法脫離華為而單獨(dú)變得偉大?)
CPU原理
在上世紀(jì)40年代,英國科學(xué)家圖靈發(fā)明了圖靈機(jī),圖靈機(jī)由紙帶、讀寫頭、控制規(guī)則、狀態(tài)寄存器等組成,圖靈機(jī)在原理上與現(xiàn)代計算機(jī)一模一樣。下面簡單描述一下這個“原理”:
我有一個紙帶(有沒有想到高中物理牛頓力學(xué)里的紙帶?),紙帶上寫了我需要的計算比如這樣:
a = 5;
b = 1;
c = a + b;
d = a - b;
e = a * b;
f = a / b;
讀寫頭按紙帶的進(jìn)入順序讀紙帶的內(nèi)容,圖靈機(jī)里有abcdef 6個寄存器,讀到c = a + b,就需要翻譯一下去找加法操作和取a b值,把a(bǔ)和b兩個寄存器里的值和加法告訴運(yùn)算器,就輸出了一個結(jié)果保存到c里。
現(xiàn)代計算機(jī)采用了相同的原理。紙帶上的內(nèi)容叫程序,程序放到了內(nèi)存里。讀寫頭叫PC,用來從內(nèi)存里按順序讀取程序內(nèi)容,控制單元對讀到的內(nèi)容進(jìn)行譯碼分解成操作碼(加法)和操作數(shù)(a的地址),然后根據(jù)a的地址去內(nèi)存里取數(shù)據(jù)內(nèi)容,這個時候把操作碼和操作數(shù)告訴算術(shù)邏輯單元(ALU),計算出結(jié)果后回寫到內(nèi)存里。
為什么寫上面這么些廢話?因?yàn)槲乙郧安恢缊D靈機(jī)是啥,你知道嗎?下面提一個問題,提到計算機(jī)總說源自馮諾依曼架構(gòu),那么現(xiàn)代計算機(jī)是馮諾依曼計算機(jī)結(jié)構(gòu)嗎?這個不一定。還有一個哈弗架構(gòu),哈弗架構(gòu)跟馮諾依曼架構(gòu)的主要區(qū)別是“是否設(shè)計了單獨(dú)的程序存儲器和數(shù)據(jù)存儲器”,如果你的計算機(jī)有單獨(dú)的程序存儲器和數(shù)據(jù)存儲器,那么它就是哈弗架構(gòu),哈弗架構(gòu)的特點(diǎn)很明顯:并行帶來速度提升,但實(shí)現(xiàn)復(fù)雜,代表就是51單片機(jī)。現(xiàn)代高性能arm多采用混合架構(gòu),一塊同時存儲指令和數(shù)據(jù)的內(nèi)存,但還加了單獨(dú)的指令cache和數(shù)據(jù)cache。
cache原理
既然提到cache了,最后這部分介紹cache。CPU速度按照摩爾定律指數(shù)級上漲,內(nèi)存運(yùn)行速度卻沒有相應(yīng)提升(挺奇怪的)。算了,已經(jīng)寫了1200字了,cache還挺重要的,單獨(dú)寫一篇吧。
