日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何讓CPU跑的更快

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

加快指令執(zhí)行的速度

加快CPU讀取數(shù)據(jù)的速度

對(duì)于第一個(gè)方向,CPU執(zhí)行指令的快慢,是跟CPU的主頻緊密相關(guān)的,如何更快的取指令、指令譯碼、執(zhí)行,縮短CPU的指令周期,提升主頻在相當(dāng)長(zhǎng)一段時(shí)間里都是非常有效的辦法。

從幾百M(fèi)Hz,到如今到幾GHz,CPU主頻有了長(zhǎng)足的進(jìn)步,相同時(shí)間里能夠執(zhí)行的指令數(shù)變的更多了。

對(duì)于第二個(gè)方向,如何提升CPU讀取數(shù)據(jù)的速度,答案就是加緩存,利用局部性原理將內(nèi)存中經(jīng)常會(huì)訪問的數(shù)據(jù)搬運(yùn)到CPU中,這樣大大提升了存取速度。

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

但隨著時(shí)間到推移,尤其進(jìn)入21世紀(jì)之后,處理器廠商發(fā)現(xiàn),進(jìn)一步提升主頻變得越來越困難了,CPU的緩存也很難進(jìn)一步擴(kuò)容。

怎么辦呢?既然一個(gè)人干活的速度已經(jīng)很難再提升,那何不多找?guī)讉€(gè)人一起干?于是,多核技術(shù)來了,一個(gè)CPU里面有多個(gè)核心,眾人劃槳開大船,CPU的速度再一次騰飛~

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

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

上面提到了線程,是的,如何提高性能,提高并發(fā)量?使用多線程技術(shù)當(dāng)然是一個(gè)非常好的思路。

但多線程的引入,就不得不提到兩個(gè)跟線程有關(guān)的話題:

線程同步

線程阻塞

多個(gè)線程協(xié)同工作,必然會(huì)引入同步的問題,常規(guī)解決方案是加鎖,加鎖的線程一般會(huì)進(jìn)入阻塞。

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

如果線程頻頻加鎖,頻頻阻塞,那這個(gè)損失就相當(dāng)可觀了。為了提升性能,無鎖編程技術(shù)就出現(xiàn)了,利用CPU提供的機(jī)制,提供更輕量的加鎖方案。

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

現(xiàn)代操作系統(tǒng)都是以時(shí)間片的形式來調(diào)度分配給多個(gè)線程使用。如果時(shí)間片還沒用完就因?yàn)檫@樣或那樣的原因?qū)?zhí)行機(jī)會(huì)拱手相讓,那線程也太虧了。

于是,有人提出要充分利用CPU,別讓線程阻塞,交出執(zhí)行權(quán),自己在應(yīng)用層實(shí)現(xiàn)多個(gè)執(zhí)行流的調(diào)度,這里阻塞了,就去執(zhí)行那里,總之要把時(shí)間片充分用完,這就誕生了協(xié)程技術(shù),阻塞了不要緊,我還能干別的,不要輕易發(fā)生線程切換。

內(nèi)存與CPU工作相關(guān)的第一親密伙伴就是內(nèi)存了,二者協(xié)作才能唱好一出戲。

提升內(nèi)存訪問的速度,同樣是高性能開發(fā)話題重要組成部分!

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

內(nèi)存的管理經(jīng)歷了從實(shí)地址模式到分頁式內(nèi)存管理,如今的計(jì)算機(jī)中,CPU拿的的地址都是虛擬地址,這中間就會(huì)涉及到地址的轉(zhuǎn)換,在這里就有文章可做,有兩個(gè)方向可以努力:

減少缺頁異常

使用大頁技術(shù)

現(xiàn)代操作系統(tǒng),基本上都會(huì)使用一個(gè)叫換頁/交換文件的技術(shù):內(nèi)存空間有限,但進(jìn)程越來越多,對(duì)內(nèi)存空間的需求越來越大,用完了怎么辦?于是在硬盤上劃分一塊區(qū)域出來,把內(nèi)存中很久不用的數(shù)據(jù)轉(zhuǎn)移到這塊區(qū)域上來,等程序用到的時(shí)候,觸發(fā)訪問異常,再在異常處理函數(shù)中將其從硬盤讀取進(jìn)來。

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

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

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

默認(rèn)情況下,操作系統(tǒng)是以4KB為單位管理內(nèi)存頁的,對(duì)于一些需要大量?jī)?nèi)存的服務(wù)器程序(Redis、JVM、ElascticSearch等等),動(dòng)輒就是幾十個(gè)G,按照4KB的單位劃分,那得產(chǎn)生多少的頁表項(xiàng)??!

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

在一些高配置的服務(wù)器上,內(nèi)存數(shù)量龐大,而CPU多個(gè)核都要通過內(nèi)存總線訪問內(nèi)存,可想而知,CPU核數(shù)上去以后,內(nèi)存總線的競(jìng)爭(zhēng)勢(shì)必也會(huì)加劇。于是NUMA架構(gòu)出現(xiàn)了,把CPU核心劃分不同的分組,各自使用自己的內(nèi)存訪問總線,提高內(nèi)存的訪問速度。

I/OCPU和內(nèi)存都?jí)蚩炝?,但這還是不夠。我們的程序日常工作中,除了一些CPU密集型的程序(執(zhí)行數(shù)學(xué)運(yùn)算,加密解密,機(jī)器學(xué)習(xí)等等)以外,相當(dāng)一部分時(shí)間都是在執(zhí)行I/O,如讀寫硬盤文件、收發(fā)網(wǎng)絡(luò)數(shù)據(jù)包等等。

所以,如何提升I/O的速度,是高性能開發(fā)技術(shù)領(lǐng)域一個(gè)重要的話題。

因?yàn)镮/O會(huì)涉及到與外設(shè)(硬盤、網(wǎng)卡等)的交互,而這些外設(shè)又通常是非常慢(相對(duì)CPU執(zhí)行速度)的,所以正常情況下,線程執(zhí)行到I/O操作時(shí)難免會(huì)阻塞,這也是前面在CPU部分提到過的。

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

那可不可以讓線程執(zhí)行I/O時(shí)不阻塞呢?于是,新的技術(shù)又出現(xiàn)了:

非阻塞I/O

I/O多路復(fù)用

異步I/O

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

但每個(gè)線程都去輪詢也不是個(gè)事兒啊,干脆交給一個(gè)線程去專門負(fù)責(zé)吧,這就是I/O多路復(fù)用,通過select/poll的方式只用一個(gè)線程就可以處理多個(gè)I/O目標(biāo)。再然后,再改進(jìn)一下,用epoll,連輪詢也不用了,改用內(nèi)核喚醒通知的機(jī)制,同時(shí)處理的I/O目標(biāo)還更多了。

異步I/O就更爽了,設(shè)置一個(gè)回調(diào)函數(shù),自己干別的事去了,回頭操作系統(tǒng)叫你來收數(shù)據(jù)就好了。

再說回到I/O本身,會(huì)將數(shù)據(jù)在內(nèi)存和外設(shè)之間傳輸,如果數(shù)據(jù)量很大,讓CPU去搬運(yùn)數(shù)據(jù)的話,既耗時(shí)又沒有技術(shù)含量,這是對(duì)CPU算力的很大浪費(fèi)。

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

有了DMA,再也不用麻煩CPU去執(zhí)行數(shù)據(jù)的搬運(yùn)工作。但對(duì)于應(yīng)用程序而言,想要把文件通過網(wǎng)絡(luò)發(fā)送出去,還是要把數(shù)據(jù)在內(nèi)核態(tài)空間和用戶態(tài)空間來回折騰兩次,這兩步還得CPU出馬去復(fù)制拷貝,屬于一種浪費(fèi),為了解決這個(gè)問題,提升性能,又進(jìn)一步產(chǎn)生了零拷貝技術(shù),徹底為CPU減負(fù)。

算法架構(gòu)CPU、內(nèi)存、I/O都?jí)蚩炝?,單臺(tái)計(jì)算機(jī)的性能已經(jīng)很難提升了。不過,現(xiàn)在的服務(wù)器很少是單打獨(dú)斗了,接下來就要把目光轉(zhuǎn)移到算法、架構(gòu)上來了。

一臺(tái)服務(wù)器搞不定,那就用硬件堆出性能來,分布式集群技術(shù)和負(fù)載均衡技術(shù)就派上用場(chǎng)了。

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

但數(shù)據(jù)庫(kù)這家伙的數(shù)據(jù)畢竟是存在硬盤上的,讀取的時(shí)候勢(shì)必會(huì)慢,要是大量的數(shù)據(jù)請(qǐng)求都懟上來,這誰頂?shù)米??于是基于?nèi)存的數(shù)據(jù)庫(kù)緩存Redis、Memcached應(yīng)運(yùn)而生,畢竟,訪問內(nèi)存比從數(shù)據(jù)庫(kù)查詢快得多。

算法架構(gòu)這一塊的技術(shù)實(shí)在太多了,也是從一個(gè)普通碼農(nóng)通往架構(gòu)師的必經(jīng)之路,咱們下回再聊。

總結(jié)高性能、高并發(fā)是后端開發(fā)永恒追求的話題。

每一項(xiàng)技術(shù)都不是憑空出現(xiàn)的,一定是為了解決某個(gè)問題而提出。我們?cè)趯W(xué)這些技術(shù)的時(shí)候,掌握它出現(xiàn)的原因,和其他技術(shù)之間的關(guān)聯(lián),在自己的大腦中建立一座技術(shù)知識(shí)層級(jí)圖,一定能事半功倍。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11332

    瀏覽量

    225991
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1965

    瀏覽量

    39892
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74419

原文標(biāo)題:為了追求更快,CPU、內(nèi)存、I/O都做了哪些努力?

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    全球首批搭載雙Snapdragon Ride平臺(tái)至尊版的零D19上市開售

    今日,零全新旗艦車型D19上市發(fā)布會(huì)在金華舉行。零汽車宣布,全球首批搭載雙Snapdragon Ride平臺(tái)至尊版(雙驍龍8797)的旗艦車型——零D19上市開售。作為零汽車旗
    的頭像 發(fā)表于 04-21 14:33 ?359次閱讀

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

    伺服系統(tǒng)在工業(yè)自動(dòng)化領(lǐng)域扮演著核心角色,其定位精度直接影響生產(chǎn)效率和產(chǎn)品質(zhì)量。然而在實(shí)際運(yùn)行中,伺服定位偏問題頻發(fā),成為困擾工程師的技術(shù)難題。本文將系統(tǒng)分析偏成因,并結(jié)合實(shí)際案例提出針對(duì)性解決方案,為設(shè)備維護(hù)和系統(tǒng)優(yōu)化提供參考。
    的頭像 發(fā)表于 03-05 17:32 ?1283次閱讀

    思必馳會(huì)議辦公產(chǎn)品助力清華MBA健俱樂部年會(huì)

    近日,2026年清華MBA健俱樂部年會(huì)暨“清華沙狐”回歸日活動(dòng)在北京圓滿舉行,思必馳作為最高等級(jí)“鉆石”贊助商,提供了“無手持麥?zhǔn)耙舴桨浮北U匣顒?dòng)開展,更將AI會(huì)議辦公本、M4會(huì)議麥克風(fēng)音箱作為重磅獎(jiǎng)品賦能現(xiàn)場(chǎng),科技智慧與奔跑熱血雙向奔赴。
    的頭像 發(fā)表于 02-06 14:44 ?641次閱讀

    強(qiáng)化學(xué)習(xí)會(huì)自動(dòng)駕駛模型學(xué)習(xí)更快嗎?

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

    MangoTree新品劇透:全新PXI形態(tài)+最強(qiáng)CPU #PXI #PXIe #測(cè)控 #CPU

    cpu
    芒果樹數(shù)字
    發(fā)布于 :2026年01月30日 11:36:11

    如何解決MCU系統(tǒng)時(shí)鐘頻率改變導(dǎo)致的程序飛?

    如何解決MCU系統(tǒng)時(shí)鐘頻率改變導(dǎo)致的程序飛問題
    發(fā)表于 12-05 08:20

    飛與通信的解決辦法

    導(dǎo)致系統(tǒng)飛或通信失敗。本文將分析CW32 MCU頻率調(diào)整對(duì)外設(shè)(如I2C接口)的影響,探討在與EEPROM通信時(shí)可能面臨的挑戰(zhàn),并提出相應(yīng)的同步調(diào)整與調(diào)試策略,確保系統(tǒng)的穩(wěn)定性和通信的可靠性
    發(fā)表于 12-02 06:18

    BNC線束 | 精準(zhǔn)傳輸,信號(hào)更快一步

    通信、測(cè)試、工業(yè)控制 還是 科研實(shí)驗(yàn), 德索都能為你提供值得信賴的 BNC線束解決方案 —— 信號(hào)更穩(wěn),數(shù)據(jù)更快。
    的頭像 發(fā)表于 11-13 16:59 ?864次閱讀
    BNC線束 | 精準(zhǔn)傳輸,<b class='flag-5'>讓</b>信號(hào)<b class='flag-5'>更快</b>一步

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

    在 FPGA 中測(cè)試 DDR 帶寬時(shí),帶寬無法滿是常見問題。下面我將從架構(gòu)、時(shí)序、訪問模式、工具限制等多個(gè)維度,系統(tǒng)梳理導(dǎo)致 DDR 帶寬不滿的常見原因及分析方法。
    的頭像 發(fā)表于 10-15 10:17 ?1296次閱讀

    大小鼠跑步機(jī) 小動(dòng)物臺(tái) 動(dòng)物跑步機(jī) 大鼠實(shí)驗(yàn)臺(tái) 小動(dòng)物能量 代謝氣體臺(tái)

    本帖最后由 jf_45880359 于 2025-8-15 07:40 編輯 一、概述: 動(dòng)物臺(tái)主要用于白鼠類小動(dòng)物作跑步運(yùn)動(dòng)訓(xùn)練,可取代傳統(tǒng)的游泳訓(xùn)練,使訓(xùn)練強(qiáng)度指標(biāo)更加準(zhǔn)確。是體能、耐力
    發(fā)表于 08-14 13:57

    【GM-3568JHF開發(fā)板免費(fèi)體驗(yàn)】GM-3568JHF的coremark分5007分

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

    單核CPU網(wǎng)關(guān)和雙核CPU網(wǎng)關(guān)有什么區(qū)別

    單核CPU網(wǎng)關(guān)與雙核CPU網(wǎng)關(guān)的核心區(qū)別在于處理能力、多任務(wù)效率、性能表現(xiàn)及適用場(chǎng)景,雙核CPU網(wǎng)關(guān)在多任務(wù)處理、復(fù)雜計(jì)算和響應(yīng)速度上具有顯著優(yōu)勢(shì),而單核CPU網(wǎng)關(guān)則更適合輕量級(jí)、低負(fù)
    的頭像 發(fā)表于 07-05 14:37 ?1349次閱讀

    恩智浦持續(xù)助力零汽車全域自研技術(shù)進(jìn)階 零全新LEAP 3.5中央集成電子電氣架構(gòu)采用恩智浦S32K388

    恩智浦半導(dǎo)體宣布,零全新的LEAP 3.5中央集成電子電氣架構(gòu)中采用恩智浦S32K388,助力其實(shí)現(xiàn)中央域控集成進(jìn)一步升級(jí)。同時(shí),隨著基于該架構(gòu)的零B系列首款全球化車型B10的發(fā)布,也實(shí)現(xiàn)了恩
    的頭像 發(fā)表于 07-04 16:11 ?4066次閱讀

    鈦和集團(tuán)榮獲零汽車第三方實(shí)驗(yàn)室資質(zhì)認(rèn)可

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

    能效提升3倍!異構(gòu)計(jì)算架構(gòu)AI跑得更快更省電

    電子發(fā)燒友網(wǎng)報(bào)道(文/李彎彎)異構(gòu)計(jì)算架構(gòu)通過集成多種不同類型的處理單元(如CPU、GPU、NPU、FPGA、DSP等),針對(duì)不同計(jì)算任務(wù)的特點(diǎn)進(jìn)行分工協(xié)作,從而在性能、能效和靈活性之間實(shí)現(xiàn)最優(yōu)平衡
    的頭像 發(fā)表于 05-25 01:55 ?4301次閱讀
    彩票| 时尚| 祁门县| 桦南县| 民权县| 普宁市| 大邑县| 定襄县| 马尔康县| 灵川县| 莲花县| 务川| 余姚市| 普格县| 霍邱县| 衡阳市| 田林县| 昌吉市| 房山区| 河北省| 东乌珠穆沁旗| 泗水县| 阳信县| 嘉善县| 大宁县| 杂多县| 尉犁县| 夹江县| 许昌市| 灯塔市| 永昌县| 横峰县| 安平县| 红原县| 庆安县| 舞阳县| 岳阳县| 洪湖市| 沈丘县| 新建县| 内江市|