国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何讓CPU跑的更快

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-07-28 09:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

CPU不管什么樣的編程語言,什么樣的代碼框架,最終都是由CPU去執行完成的(當然這么說不太準確,也有GPU、TPU、協處理器等其他情況,當然這不是本文探討的重點)。

所以要想提高性能,提高并發量,首要問題就是如何讓CPU跑的更快?

這個問題,也是一直以來CPU廠商一直在努力追求的方向。

如何讓CPU更快?CPU廠商做了兩個方面的努力:

加快指令執行的速度

加快CPU讀取數據的速度

對于第一個方向,CPU執行指令的快慢,是跟CPU的主頻緊密相關的,如何更快的取指令、指令譯碼、執行,縮短CPU的指令周期,提升主頻在相當長一段時間里都是非常有效的辦法。

從幾百MHz,到如今到幾GHz,CPU主頻有了長足的進步,相同時間里能夠執行的指令數變的更多了。

對于第二個方向,如何提升CPU讀取數據的速度,答案就是加緩存,利用局部性原理將內存中經常會訪問的數據搬運到CPU中,這樣大大提升了存取速度。

從一級緩存,到二級緩存,乃至三級緩存,CPU緩存的層級和容量也在不斷提升,讀寫數據的時間省了不少。

但隨著時間到推移,尤其進入21世紀之后,處理器廠商發現,進一步提升主頻變得越來越困難了,CPU的緩存也很難進一步擴容。

怎么辦呢?既然一個人干活的速度已經很難再提升,那何不多找幾個人一起干?于是,多核技術來了,一個CPU里面有多個核心,眾人劃槳開大船,CPU的速度再一次騰飛~

甚至,讓一個核在“閑暇時間”,利用“閑置資源”去執行另外的線程,誕生了讓一個核“同時”執行兩個線程的超線程技術。

上面簡單交代了為了提升性能,CPU所做的努力。但是光是CPU快是沒用的,還需要我們更好的去利用開發,否則就是對CPU算力的浪費。

上面提到了線程,是的,如何提高性能,提高并發量?使用多線程技術當然是一個非常好的思路。

但多線程的引入,就不得不提到兩個跟線程有關的話題:

線程同步

線程阻塞

多個線程協同工作,必然會引入同步的問題,常規解決方案是加鎖,加鎖的線程一般會進入阻塞。

線程遇到阻塞了,就需要切換,而切換是有一定的成本開銷的,不僅是系統調度的時間開銷,還可能有CPU緩存失效的損失。

如果線程頻頻加鎖,頻頻阻塞,那這個損失就相當可觀了。為了提升性能,無鎖編程技術就出現了,利用CPU提供的機制,提供更輕量的加鎖方案。

同時,為了讓切換后的線程仍然能夠在之前的CPU核心上運行,降低緩存損失,線程的CPU親和性綁定技術也出現了。

現代操作系統都是以時間片的形式來調度分配給多個線程使用。如果時間片還沒用完就因為這樣或那樣的原因將執行機會拱手相讓,那線程也太虧了。

于是,有人提出要充分利用CPU,別讓線程阻塞,交出執行權,自己在應用層實現多個執行流的調度,這里阻塞了,就去執行那里,總之要把時間片充分用完,這就誕生了協程技術,阻塞了不要緊,我還能干別的,不要輕易發生線程切換。

內存與CPU工作相關的第一親密伙伴就是內存了,二者協作才能唱好一出戲。

提升內存訪問的速度,同樣是高性能開發話題重要組成部分!

那如何提升呢?硬件層面程序員是很難改變的,咱們只好從軟件層面下功夫。

內存的管理經歷了從實地址模式到分頁式內存管理,如今的計算機中,CPU拿的的地址都是虛擬地址,這中間就會涉及到地址的轉換,在這里就有文章可做,有兩個方向可以努力:

減少缺頁異常

使用大頁技術

現代操作系統,基本上都會使用一個叫換頁/交換文件的技術:內存空間有限,但進程越來越多,對內存空間的需求越來越大,用完了怎么辦?于是在硬盤上劃分一塊區域出來,把內存中很久不用的數據轉移到這塊區域上來,等程序用到的時候,觸發訪問異常,再在異常處理函數中將其從硬盤讀取進來。

可以想象,如果程序訪問的內存老是不在內存中,而是被交換到了硬盤上,就會頻繁觸發缺頁異常,那程序的性能肯定大打折扣,所以減少缺頁異常也是提升性能的好辦法。

從虛擬地址尋址真實的物理內存,這個過程是CPU完成的,具體來說,就是通過查表,從頁表-》一級頁目錄-》二級頁目錄-》物理內存。

頁目錄和頁表是存在內存中的,毫無疑問,內存尋址是一個非常非常高頻的事情,時時刻刻都在發生,而多次查表勢必是很慢的,有鑒于此,CPU引入了一個叫TLB(Translation Look- aside buffer)的東西,使用緩存頁表項的方式來減少內存查表的操作,加快尋址速度。

默認情況下,操作系統是以4KB為單位管理內存頁的,對于一些需要大量內存的服務器程序(Redis、JVM、ElascticSearch等等),動輒就是幾十個G,按照4KB的單位劃分,那得產生多少的頁表項啊!

而CPU中的TLB的大小是有限的,內存越多,頁表項也就越多,TLB緩存失效的概率也就越大。所以,大頁內存技術就出現了,4KB太小,就弄大點。大頁內存技術的出現,減少了缺頁異常的出現次數,也提高了TLB命中的概率,對于提升性能有很大的幫助。

在一些高配置的服務器上,內存數量龐大,而CPU多個核都要通過內存總線訪問內存,可想而知,CPU核數上去以后,內存總線的競爭勢必也會加劇。于是NUMA架構出現了,把CPU核心劃分不同的分組,各自使用自己的內存訪問總線,提高內存的訪問速度。

I/OCPU和內存都夠快了,但這還是不夠。我們的程序日常工作中,除了一些CPU密集型的程序(執行數學運算,加密解密,機器學習等等)以外,相當一部分時間都是在執行I/O,如讀寫硬盤文件、收發網絡數據包等等。

所以,如何提升I/O的速度,是高性能開發技術領域一個重要的話題。

因為I/O會涉及到與外設(硬盤、網卡等)的交互,而這些外設又通常是非常慢(相對CPU執行速度)的,所以正常情況下,線程執行到I/O操作時難免會阻塞,這也是前面在CPU部分提到過的。

阻塞以后那就沒辦法干活了,為了能干活,那就開多個線程。但線程資源是很昂貴的,沒辦法大量使用,況且線程多了,多個線程切換調度同樣是很花時間的。

那可不可以讓線程執行I/O時不阻塞呢?于是,新的技術又出現了:

非阻塞I/O

I/O多路復用

異步I/O

原來的阻塞I/O是一直等,等到I/O的完成,非阻塞I/O一般是輪詢,可以去干別的事,過一會兒就來問一下:好了沒有?

但每個線程都去輪詢也不是個事兒啊,干脆交給一個線程去專門負責吧,這就是I/O多路復用,通過select/poll的方式只用一個線程就可以處理多個I/O目標。再然后,再改進一下,用epoll,連輪詢也不用了,改用內核喚醒通知的機制,同時處理的I/O目標還更多了。

異步I/O就更爽了,設置一個回調函數,自己干別的事去了,回頭操作系統叫你來收數據就好了。

再說回到I/O本身,會將數據在內存和外設之間傳輸,如果數據量很大,讓CPU去搬運數據的話,既耗時又沒有技術含量,這是對CPU算力的很大浪費。

所以,為了將CPU從中解放出來,又誕生了一門技術:直接內存訪問DMA,把數據的傳輸工作外包出去,交由DMA控制器來完成,CPU只在背后發號施令即可。

有了DMA,再也不用麻煩CPU去執行數據的搬運工作。但對于應用程序而言,想要把文件通過網絡發送出去,還是要把數據在內核態空間和用戶態空間來回折騰兩次,這兩步還得CPU出馬去復制拷貝,屬于一種浪費,為了解決這個問題,提升性能,又進一步產生了零拷貝技術,徹底為CPU減負。

算法架構CPU、內存、I/O都夠快了,單臺計算機的性能已經很難提升了。不過,現在的服務器很少是單打獨斗了,接下來就要把目光轉移到算法、架構上來了。

一臺服務器搞不定,那就用硬件堆出性能來,分布式集群技術和負載均衡技術就派上用場了。

這年頭,哪個后端服務沒有數據庫?如何讓數據庫更快?該輪到索引技術上了,通過給數據庫建立索引,提升檢索速度。

但數據庫這家伙的數據畢竟是存在硬盤上的,讀取的時候勢必會慢,要是大量的數據請求都懟上來,這誰頂得住?于是基于內存的數據庫緩存Redis、Memcached應運而生,畢竟,訪問內存比從數據庫查詢快得多。

算法架構這一塊的技術實在太多了,也是從一個普通碼農通往架構師的必經之路,咱們下回再聊。

總結高性能、高并發是后端開發永恒追求的話題。

每一項技術都不是憑空出現的,一定是為了解決某個問題而提出。我們在學這些技術的時候,掌握它出現的原因,和其他技術之間的關聯,在自己的大腦中建立一座技術知識層級圖,一定能事半功倍。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11279

    瀏覽量

    224964
  • 編程語言
    +關注

    關注

    10

    文章

    1964

    瀏覽量

    39566
  • 代碼
    +關注

    關注

    30

    文章

    4968

    瀏覽量

    73960

原文標題:為了追求更快,CPU、內存、I/O都做了哪些努力?

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    伺服定位偏分析及解決方法

    伺服系統在工業自動化領域扮演著核心角色,其定位精度直接影響生產效率和產品質量。然而在實際運行中,伺服定位偏問題頻發,成為困擾工程師的技術難題。本文將系統分析偏成因,并結合實際案例提出針對性解決方案,為設備維護和系統優化提供參考。
    的頭像 發表于 03-05 17:32 ?805次閱讀

    強化學習會自動駕駛模型學習更快嗎?

    學習是一種機器通過“試錯”學會決策的辦法。與監督學習不同,監督學習是有人提供示范答案,模型去模仿;而強化學習不會把每一步的“正確答案”都告訴你,而是把環境、動作和結果連起來,機器自己探索哪個行為長期看起來更有利
    的頭像 發表于 01-31 09:34 ?641次閱讀
    強化學習會<b class='flag-5'>讓</b>自動駕駛模型學習<b class='flag-5'>更快</b>嗎?

    飛與通信的解決辦法

    導致系統飛或通信失敗。本文將分析CW32 MCU頻率調整對外設(如I2C接口)的影響,探討在與EEPROM通信時可能面臨的挑戰,并提出相應的同步調整與調試策略,確保系統的穩定性和通信的可靠性
    發表于 12-02 06:18

    BNC線束 | 精準傳輸,信號更快一步

    通信、測試、工業控制 還是 科研實驗, 德索都能為你提供值得信賴的 BNC線束解決方案 —— 信號更穩,數據更快
    的頭像 發表于 11-13 16:59 ?716次閱讀
    BNC線束 | 精準傳輸,<b class='flag-5'>讓</b>信號<b class='flag-5'>更快</b>一步

    FPGA測試DDR帶寬不滿的常見原因及分析方法

    在 FPGA 中測試 DDR 帶寬時,帶寬無法滿是常見問題。下面我將從架構、時序、訪問模式、工具限制等多個維度,系統梳理導致 DDR 帶寬不滿的常見原因及分析方法。
    的頭像 發表于 10-15 10:17 ?1031次閱讀

    大小鼠跑步機 小動物臺 動物跑步機 大鼠實驗臺 小動物能量 代謝氣體

    本帖最后由 jf_45880359 于 2025-8-15 07:40 編輯 一、概述: 動物臺主要用于白鼠類小動物作跑步運動訓練,可取代傳統的游泳訓練,使訓練強度指標更加準確。是體能、耐力
    發表于 08-14 13:57

    【GM-3568JHF開發板免費體驗】GM-3568JHF的coremark分5007分

    用的微控制器(MCU)和中央處理單元(CPU)的性能,可以幫助人們比較不同的 CPU 架構的性能表現。 拿到視美泰GM-3568JHF開發板后,一直想測試下GM-3568JHF開發板的極限性能參數,想用
    發表于 07-22 17:32

    單核CPU網關和雙核CPU網關有什么區別

    單核CPU網關與雙核CPU網關的核心區別在于處理能力、多任務效率、性能表現及適用場景,雙核CPU網關在多任務處理、復雜計算和響應速度上具有顯著優勢,而單核CPU網關則更適合輕量級、低負
    的頭像 發表于 07-05 14:37 ?1061次閱讀

    鈦和集團榮獲零汽車第三方實驗室資質認可

    近期,鈦和集團順利通過了浙江零科技股份有限公司(以下簡稱“零汽車”)對第三方實驗室的能力驗證及資質審核,助力零汽車實現“成為值得尊敬的世界級智能電動車企”的品牌愿景。
    的頭像 發表于 06-13 17:00 ?1222次閱讀

    能效提升3倍!異構計算架構AI跑得更快更省電

    電子發燒友網報道(文/李彎彎)異構計算架構通過集成多種不同類型的處理單元(如CPU、GPU、NPU、FPGA、DSP等),針對不同計算任務的特點進行分工協作,從而在性能、能效和靈活性之間實現最優平衡
    的頭像 發表于 05-25 01:55 ?3994次閱讀

    服務器CPU架構解析,從x86到ARM:一文吃透其分類及對應品牌優勢

    為什么你的服務器總在"喘氣"?CPU架構才是關鍵。大家可能都遇到過這樣的情況:公司剛采購的服務器用了不到半年,個數據庫就像老牛拉車,加內存換硬盤都沒用。這時候老工程師會叼著煙告訴你:"小伙子,問題出在CPU架構上!"
    的頭像 發表于 04-30 15:11 ?1921次閱讀
    服務器<b class='flag-5'>CPU</b>架構解析,從x86到ARM:一文吃透其分類及對應品牌優勢

    信創國產CPU推薦

    cpu
    jf_10805031
    發布于 :2025年04月23日 17:20:43

    禾賽科技與零汽車深化戰略合作

    汽車與禾賽科技在零科技總部正式達成深化戰略合作。后續零預計將采購約 20 萬臺的禾賽 ATX 激光雷達,覆蓋零 2025 年起多款量產車型。作為零
    的頭像 發表于 04-08 17:14 ?1099次閱讀

    速度更快,傳輸更穩定的工業相機COF接口

    工業相機的數據接口之一COF接口,速度更快,傳輸更穩定的。
    的頭像 發表于 03-10 17:32 ?1142次閱讀
    速度<b class='flag-5'>更快</b>,傳輸更穩定的工業相機COF接口

    B10搭載禾賽ATX激光雷達

    近日,零汽車將舉辦零 LEAP3.5 技術暨 B10 預售發布會。屆時,零汽車旗下全新 B 系列首款全球化車型——零 B10 將正式開啟預售。
    的頭像 發表于 03-07 09:06 ?1364次閱讀