• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      CPU是如何工作的?

      2022-05-30 10:48:04超載
      電腦愛好者 2022年11期
      關鍵詞:浮點寄存器整數(shù)

      超載

      從CPU(圖1)的名稱中央處理器就可以看出,它是整個電腦的核心,不過這個核心是如何工作的,它們除了頻率還有什么差異?這些問題恐怕在很多評測中也少有提及,CPU的運算能力究竟是因何而生。今天,筆者就和大家分享一些關于CPU是如何計算的,它們又是如何工作的知識。

      CPU其實是縮寫,全稱為Central Processing Unit,它的功能作用就是“翻譯”電腦的指令

      根據(jù)這些指令處理計算機中軟件生成的數(shù)據(jù)并輸出結果。所謂的電腦可編程性,其實主要就是指CPU的編程能力。在上世紀70年代之前,CPU是由多個獨立單元構成的,而不是像今天這樣一顆芯片。當集成電路(圖2)普及后,元件大幅度“微縮”到一起,成了一塊小小的芯片,這也就是所謂的“微處理器”由來。

      現(xiàn)代CPU的“核心”

      筆者這里提及的“核心”不是現(xiàn)今通常意義上的核心,而是CPU的主要組成部分:控制單元、整數(shù)邏輯單元、浮點運算器(圖3)。任何一款CPU,實際上都離不開這三個單元,無論CPU的框架設計如何變化,增加多少技術,這三個基本構成是不會改變的。

      那么,這三個構成CPU的基本單元究竟都有什么作用呢?控制單元簡稱CU(圖4),是Control Unit的縮寫,它的作用其實可以被看做是一個“協(xié)調者”,負責協(xié)調指令的執(zhí)行。諸如寄存器、算術邏輯單元、指令寄存器、總線、甚至包括CPU外部的輸入輸出,都要依靠控制單元的協(xié)調管理。

      當有需要執(zhí)行的命令“發(fā)送到”CPU,第一個“接收者”就是控制單元,由其分配工作給不同的單元,例如整數(shù)邏輯單元、浮點運算器等等。

      整數(shù)邏輯單元又是做什么的呢?整數(shù)邏輯單元簡稱ALU,是Arithmetic LogicUnit的縮寫,一如其名,它的作用就是進行算術、邏輯計算的。簡單點理解,例如加法、減法等等計算工作,都是由整數(shù)邏輯單元來完成的。到實際的應用層面,例如我們的壓縮、解壓縮文件、計算機進程的調度,編譯器語法分析、游戲的AI處理……諸如此類的計算工作,都是由整數(shù)邏輯單元負責。

      至于浮點運算器,它的簡稱為FPU,是Floating Point Unit的縮寫,早期曾經(jīng)是和CPU并立的獨立芯片(圖5)。浮點運算單元主要影響CPU的科學計算性能,如流體力學、量子力學等,而更貼近我們日常能見到的應用就是多媒體相關的應用,如音視頻的編解碼、圖像處理等操作。

      一般針對CPU的評測中,像AIDA 64、Super Pi、wPrime、Fritz Chess Benchmark(圖6)、GeekBench、WinRAR、7-zip、CPU Passmark等軟件,都是盡力在“挖掘”CPU的浮點、整數(shù)運算性能,用它來衡量CPU的性能優(yōu)劣。

      CPU對游戲的影響

      我們直接了當一點,游戲是首當其沖考驗電腦性能的一個“法寶”,而且不止是顯卡,CPU時至今日都對游戲性能高低有著決定性的作用。首先,CPU承擔著電腦的任務進程分配,如果游戲的優(yōu)化不好,會進行頻繁的進程調用申請,這樣極度消耗CPU的資源。而且,現(xiàn)在的游戲引擎不僅僅要針對畫面優(yōu)化,在AI方面同樣是游戲引擎的重要方向。舉個例子,游戲中的NPC(Non-Player Character,電腦控制的游戲角色或者事物)要做什么、會做什么,會有什么樣的行為(圖7),這些,現(xiàn)在都是依靠AI計算獲得的。而AI計算的主力,并非是顯卡,而是CPU。

      此外,可能大家不太了解的事情是,目前游戲的反盜版機制,在游戲的運行過程中,會頻繁的加密、驗證,這些都會消耗浮點運算性能,也就是CPU的性能。所以這也是為什么較老規(guī)格的電腦會在運行游戲時幀率不高的原因,即便它擁有一塊性能不錯的顯卡,也無濟于事。

      顯然,無論是整數(shù)運算還是浮點運算,CPU都是必不可少的計算單元,輔以控制器的調度,才能形成一個完整的計算。無論CPU的架構如何變化,這些基本的概念依舊存在,而且,隨著應用的發(fā)展變化,浮點運算的能力強弱,甚至一度決定了CPU的評價。

      浮點運算的重要性

      雖然芯片都是邏輯電路,但是早期的CPU還是很簡陋的,前面已經(jīng)提到,浮點計算單元早期以協(xié)處理器的形式存在,一臺沒有浮點處理能力的電腦性能極差,但是限于當時的技術能力,還做不到一顆CPU就擁有浮點計算能力的程度。例如Intel在生產8086、8088 CPU的同時,還推出了一款8087協(xié)處理器產品。這種情況一直持續(xù)到487 SX(圖8),最終才在80486DX CPU上,第一次將浮點計算單元集成到內部。

      現(xiàn)在的CPU不僅僅是擁有浮點運算單元那么簡單,還通過SIMD技術實現(xiàn)了并行計算。所謂SIMD,即SingleInstruction Multiple Data單指令多數(shù)據(jù)流,單指令流多數(shù)據(jù)流技術其實是一個控制器控制多個平行的處理微元,例如英特爾的MMX或SSE,以及AMD的3D Now!指令集,都屬于S I M D 范疇。當你使用CPU-Z這類軟件查看CPU信息時,你會看到很多指令集,例如MMX、3DNow!、S S E ~S S E4 .1、AV X等等(圖9),這些都是屬于SIMD范疇的。

      正是因為浮點運算的存在,讓我們的電腦在應用中表現(xiàn)愈發(fā)出色,而且不止是CPU,顯卡的浮點運算能力更是突出,甚至遠超CPU。但是這又引來另一個問題,既然顯卡的浮點運算能力這么強大,為何CPU還要保留浮點運算呢?這里就要提到一個失敗的例子了。2011年AMD發(fā)布了一個全新的CPU架構推土機架構(Bulldozer),它最大的特點是放棄了通常意義上一個核心中,擁有一整套整數(shù)邏輯單元+浮點運算單元的組合方式,改成了兩個核心共享一個浮點運算單元的方式(圖10),然后,將自家優(yōu)秀的顯卡核心集成到CPU中,以期用顯卡的強悍浮點性能,最終增強整體的性能表現(xiàn)。然而,這個框架極為失敗,也讓AMD經(jīng)歷了絕無僅有的“暗淡時光”,CPU整數(shù)性能不弱,但綜合性能孱弱的令人發(fā)指——這和其奇思妙想的兩核心共用一套浮點運算單元有離不開的關系。

      而且,顯卡的浮點性能強大是相對的,CPU的浮點運算能力比不過顯卡也是有原因的——顯卡更擅長大規(guī)模并行計算(圖11),舉個簡單的例子,如果說CPU的浮點計算是幾個數(shù)學家在解高階方程式,那么顯卡的浮點運算就是一群學生在做加減乘除的基礎運算,更注重規(guī)模效應。

      CPU計算還需要這些

      計算好或者待計算的數(shù)據(jù),究竟如何“輸入、輸出”呢?這就需要用到寄存器了。

      它實際是一個用來存儲輸出數(shù)據(jù)的單元,而且它是一個中間數(shù)據(jù)的“轉存站”。它擁有有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和位址。在中央CPU的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數(shù)器(PC)。在中央CPU的算術及邏輯部件中,包含的寄存器有累加器(ACC)。

      這些數(shù)據(jù)通過寄存器之后按理應該是輸出到內存中的,但實際因為速度之間的差異過大,不得不進一步“緩沖”一下,這便有了緩存的存在。緩存英文為Cache,全稱是高速緩沖存儲器,它是CPU與主內存間的一種容量較小但速度很高的存儲器(圖12)。由于CPU的速度遠高于主內存,CPU直接從內存中存取數(shù)據(jù)要等待一定時間周期,緩存中保存著CPU剛用過或循環(huán)使用的一部分數(shù)據(jù),當CPU再次使用該部分數(shù)據(jù)時可從緩存中直接調用,這樣就減少了CPU的等待時間,提高了系統(tǒng)效率。

      當CPU需要調用數(shù)據(jù)的時候,它會先到緩存(圖13)中去尋找,如果數(shù)據(jù)因之前的操作已經(jīng)讀取而被暫存其中,就不需要再從隨機存取存儲器中讀取數(shù)據(jù)——由于CPU的運行速度一般比主內存的讀取速度快,主存儲器周期(訪問主存儲器所需要的時間)為數(shù)個時鐘周期。因此若要訪問主內存的話,就必須等待數(shù)個CPU周期從而造成浪費。

      提供“緩存”的目的是為了讓數(shù)據(jù)訪問的速度適應CPU的處理速度,其原理是內存中“程序執(zhí)行與數(shù)據(jù)訪問的局域性行為”,即一定程序執(zhí)行時間和空間內,被訪問的代碼集中于一部分。為了充分發(fā)揮緩存的作用,不僅依靠“暫存剛剛訪問過的數(shù)據(jù)”,還要使用硬件實現(xiàn)的指令預測與數(shù)據(jù)預取技術——盡可能把將要使用的數(shù)據(jù)預先從內存中取到緩存里(圖14)。

      而且,為了進一步提高性能,緩存被分成指令和數(shù)據(jù)分區(qū)兩個部分,而且還會分級,即我們常常講到的CPU一、二、三級緩存。尤其是多核心時代,一級緩存幾乎是各個CPU核心的專用緩存,二次級緩存則是多核心共享的結構,用以進一步提高性能(圖15)。

      時鐘頻率

      時鐘頻率,英文Clock Rate,意即同步電路中時鐘的基礎頻率,它以“每秒時鐘周期”(Clock Cycles PerSecond)來度量,量度單位采用Hz(圖16)。

      CPU的時鐘頻率通常是由晶體振蕩器的頻率決定的。在一個時鐘脈沖后,CPU的信號線需要時間穩(wěn)定它的新狀態(tài)。如果上一個脈沖的信號還沒有處理完成,而下一個時鐘脈沖來的太快(在所有信號線完成從0到1或者從1到0的轉換前),就會產生錯誤的結果。芯片制造商制定了“最高時鐘頻率”的規(guī)范,并且在出售芯片之前對它們進行測試確保它們符合“最高時鐘頻率”的規(guī)范。測試將執(zhí)行最復雜的指令,處理最復雜的數(shù)據(jù)模型確定使用的最長處理時間(測試在最合適的電壓和穩(wěn)定保證CPU在最低性能下運行),保證最高時鐘頻率時不會發(fā)生沖突。

      因此,早年間時鐘頻率幾乎是唯一評判CPU性能的依據(jù),例如1990年代,大多數(shù)電腦的性能如何判斷快慢,主要就依靠CPU頻率,100MHz就是比90MHz的CPU性能快。時至今日它依然是判斷CPU性能的重要標準之一,但不是唯一了。

      多核心

      讓更多的核心參與到計算中來用以提高系統(tǒng)性能,是近年來CPU的“標準配置”,單核心CPU早已走入歷史舞臺。多核心CPU的開端其實要追溯到2000年,當時IBM發(fā)布了Power4CPU,這是世界上第一個雙核心CPU產品(圖17)。由于多核心CPU具有高主頻、設計和驗證周期短、控制邏輯簡單、擴展性好、易于實現(xiàn)、功耗低和通信延遲低等優(yōu)點,因此它得以迅速成為CPU“標配”。此外,多核心CPU還能充分利用不同應用的指令級并行和線程級并行,具有較高線程級并行性的應用可以很好地利用這種結構來提高性能。

      但是,如何發(fā)揮多核心CPU的性能,還需要軟件優(yōu)化,比如有些應用可以最大限度調度所有CPU核心參與到計算中(圖18),而部分應用只會調用到4至6個核心,所以,單一核心的絕對性能依舊是當前最重要的。

      超線程

      然而這還不夠,如何讓每一份電力供應都能轉換為性能,讓CPU的工作盡可能“滿坑滿谷”,提高執(zhí)行效率一直是人們的追求。一般來說,單個時間單位內,一個CPU核心一次只能執(zhí)行一個線程的工作。如果想并行工作,提升效率,似乎只能是使用更多的核心。這樣一來效率并不是很高,如何進一步“壓榨”CPU呢?那就要使用超線程技術了。超線程技術說簡單一些,就是在單位時間內,一個核心可以處理兩個線程的工作(圖19),單核心模擬雙核心執(zhí)行雙線程運作,用以提升執(zhí)行效率。

      英特爾在奔騰CPU上就開始引入超標量、亂序執(zhí)行、大量的寄存器及寄存器重命名、多指令解碼器、預測執(zhí)行等特性,這些特性的原理是讓CPU擁有大量資源,并可以預先執(zhí)行及平行執(zhí)行指令,以增加指令執(zhí)行效率,可是在現(xiàn)實中這些資源經(jīng)常閑置。為了盡可能的利用CPU資源,于是在現(xiàn)有單核心的基礎上,只增加必要的資源,讓閑置的CPU核心資源模擬第二個線程(圖20),這就是超線程的由來。這個必要的資源其實非常少,只是在一個核心內增加一個邏輯CPU單元,而整數(shù)邏輯單元、浮點運算器、緩存依舊共享同一個核心資源。

      CPU性能的第一要素

      衡量CPU性能究竟是看主頻還是看核心?都不是,而是一個計算公式—— CPU性能=IPC×頻率。IPC即Instruction PerClock,意為每周期指令(圖21)。這個指標是衡量CPU性能最直觀的體現(xiàn),它是指每個時鐘周期執(zhí)行的平均指令數(shù)。

      CPU在執(zhí)行指令的時候,一共分為三個步驟,即“獲取指令(Fet ch)”“譯碼(Decode)”“指令執(zhí)行(Execute)”(圖22)。大致的工作原理是這樣的,在獲取指令階段,CPU的寄存器中找到對應的指令地址,然后根據(jù)指令地址從內存中把具體的指令加載到寄存器中,并準備未來執(zhí)行下一條指令;剛剛加載到寄存器中的指令這個時候會由CPU控制單元進行的解析,“翻譯”成對應的操作執(zhí)行,然后確定要操作哪些寄存器、數(shù)據(jù)或者內存地址,用以后續(xù)執(zhí)行操作;到了指令執(zhí)行階段,這些操作會指派給整數(shù)邏輯單元操作。這樣一個“三部曲”的操作流程,電腦完成運行代碼所需的機器級指令的數(shù)量,在同一個時鐘周期內,能夠執(zhí)行多少次“三部曲”就是IPC的意義所在。此時,CPU的性能判斷也就有了依據(jù),用這個IPC數(shù)乘以×頻率就可以得到CPU的性能。例如,同樣是4GHz的兩個CPU,其中一個的IPC性能提升了15%,則整體性能要比另一個提升15%。我們都知道CPU的制程工藝很大程度上決定著性能,主要作用就是在盡可能小的體積下容納更多的積體電路,通過更多的積體電路來提升IPC性能;同時在更先進的制程工藝下,可以控制功耗的同時,穩(wěn)定CPU的高頻運作。所以,CPU的性能實際上要綜合來看,而不是單純的依靠頻率、核心數(shù)量來確定它的性能。

      CPU的異構崛起?

      CPU增強性能的方法其實不止提升IPC性能,例如我們之前也提到過的緩存,如果能夠增加緩存自然也能提升性能——數(shù)據(jù)交互能力越強,CPU的處理效率就越高。例如,AMD的銳龍7 5800X3DCPU就是這樣來提升性能的。這里就要提到一個名為3DV-Cache堆疊緩存的技術了。

      簡單說,在原有Zen3架構的基礎上,為每個CCD計算芯片上堆疊64MB SRAM作為額外的三級緩存(圖23),加上原本就有的32B,合計達96MB。之所以采用這個3DV-Cache堆疊緩存技術,是為了在最小的成本提升情況下,進一步擴展緩存容量,通過垂直堆疊(可以簡單理解為在芯片內部堆疊到CPU核心之上,但并不是在CPU核心之中,這樣有助于控制成本)這樣的方式提升CPU的數(shù)據(jù)緩存交互能力。

      經(jīng)過這樣一個簡單的設計,銳龍75800X3D對比銳龍9 5900X在1080P高畫質下游戲幀率平均提升15%左右,例如《看門狗》最高達到了40%;《Far Cry 6》、《戰(zhàn)爭機器5》、《最終幻想14》等則可以提升20%的性能。顯然, 擴大緩存帶來的性能提升,一點也不亞于提升核心計算單元的能力——其實,電腦經(jīng)過這么多年的發(fā)展,數(shù)據(jù)瓶頸問題一直存在,這也是制約系統(tǒng)性能的一個重要癥結,甚至要比優(yōu)化CPU的計算能力重要。

      除了AMD,英特爾也對CPU的設計上有著另一個思路——異構設計,要注意的是,其設計更偏向于如今ARM架構CPU的特點,與早期GPU+CPU的異構計算架構有區(qū)別。例如12代酷睿CPU將核心分為性能核心和能效核心(圖24)。那么,它們的結構區(qū)別在哪里呢?先說說這個能效核心。能效核心的最顯著特點就是后端執(zhí)行能力增強,尤其是整數(shù)邏輯單元的計算能力(浮點運算部分也有一定提升),而功耗也能被控制在一個合理的范圍區(qū)間,這也是一直以來能效核心的主要特點——這些所謂的能效核心,其實就是由著名的Atom系列CPU發(fā)展而來。而在性能核心上,英特爾著重加強了IPC性能,相比于11代酷睿CPU的核心,有多達19%的提升,其中浮點性能刻意加強,當然代價就是功耗增高。不過由于有了大小核心的異構設計,實際的功耗可以得到很好的平衡——在任務調度協(xié)調上,控制單元起到了關鍵性作用。想不到吧,CPU時至今日,無論核心如何變化,大框架實際沒有什么改變。

      CPU的技術名詞越來越多,但是總體的框架設計依舊是“原來的樣子”,很長時間內這一點都是無可改變的——如果有變更的那一天,必然是電腦產業(yè)界翻天覆地的變化,所有的體系都將改變。而且,隨著技術的發(fā)展,我們將會看到更多諸如3D V-Cache堆疊緩存、大小核心設計等等“出圈”的CPU設計“思路”——在現(xiàn)有技術條件下,僅僅依靠制程工藝升級來增加晶體管提升性能,則控制功耗會愈加困難,制程工藝正在走向“死胡同”,唯有“挖空心思”在其他方面進行優(yōu)化設計,尤其在數(shù)據(jù)傳輸瓶頸上多下功夫,才有機會進一步提升CPU的計算能力,不過,它們的工作基本原理依舊不會改變,這是CPU“先天基因”決定的。

      猜你喜歡
      浮點寄存器整數(shù)
      LEO星座增強GNSS PPP模糊度浮點解與固定解性能評估
      Lite寄存器模型的設計與實現(xiàn)
      計算機應用(2020年5期)2020-06-07 07:06:44
      基于浮點DSP的鐵路FSK信號檢測
      一類整數(shù)遞推數(shù)列的周期性
      分簇結構向量寄存器分配策略研究*
      聚焦不等式(組)的“整數(shù)解”
      基于FPGA的浮點FIR濾波器設計
      改進的Goldschmidt雙精度浮點除法器
      高速數(shù)模轉換器AD9779/AD9788的應用
      一種可重構線性反饋移位寄存器設計
      通信技術(2010年8期)2010-08-06 09:29:16
      镇巴县| 淮南市| 恩平市| 合川市| 霍林郭勒市| 淮南市| 偃师市| 工布江达县| 望江县| 中宁县| 平谷区| 镇平县| 六枝特区| 繁昌县| 荔浦县| 乌鲁木齐县| 乐清市| 泗水县| 崇左市| 弥勒县| 肥乡县| 乌拉特中旗| 松原市| 彭泽县| 临泉县| 方正县| 阿拉善右旗| 公主岭市| 乐昌市| 越西县| 宁明县| 康平县| 阜平县| 黄龙县| 富顺县| 吉水县| 普陀区| 买车| 临夏县| 新宁县| 东至县|