Home Tags 多線程

Tag: 多線程

雖然Lunar Lake沒有超線程,但多線程性能依然是Meteor Lake-U高50%

有消息指出Intel下一代處理器Arrow Lake和Lunar Lake都沒有超線程技術,前者有沒有還不太確定,但後者由於定位是低功耗平台,所以把會增加功耗的超線程砍掉也正常。 根據Bionic_Squash的消息,即將推出的Lunar Lake預計會比Meteor Lake-U帶來50%的性能提升,這里指的是Cinebench R23和Geekbench 5.4.5的多線程跑分成績。 Lunar Lake-MX預計是一顆8核處理器,包括四個基於Lion Cove架構的P-Core和四個基於Skymont的E-Core,而Arrow Lake用的也是同樣架構的內核,但它的定位是功耗更高的中高端平台。目前Intel並沒有透露Lunar Lake的全部細節,但很明確的表示它是用於低功耗的輕薄本等設備,可以看作是Meteor Lake-U的繼任者。 Meteor Lake-U擁有2P+8E+2LP-E,TDP為15W,而Lunar Lake則是4P+4E,但沒有超線程,TDPS 17-30W可調,此外Intel還准備為無風扇設備推出8W的版本,在這個規格的基礎上多線程性能提高50%,它的性能還是蠻讓人期待的。 除了更強的CPU外,Lunar Lake還配備了更快的NPU,與前身Meteor Lake相比,速度提升了三倍。此外新的處理器還把GPU架構升級到Xe2-LPG,這樣就能擁有更好的3D遊戲性能。預計今年Intel就會發布Lunar Lake,但採用這處理器的設備上市估計得等到明年。 ...

迎來性能更好的飛行:《DCS World》在開發測試版中引入了多線程支持

日前,著名軍事模擬遊戲《DCS World》迎來了開放測試版更新,在這次更新日誌中,開發商EagleDynamics宣布給遊戲帶來了初步的CPU多線程支持。考慮到目前主流玩家都是六核起步的CPU,這個更新無疑能充分發揮現代處理器的性能,提升遊戲的幀率。 當然,擺脫以往「一核幹活,多核圍觀」的情況所要付出的代價就是編程上困難的增加,特別是對於遊戲這種應用而言,開發者們需要處理非常多的問題,比如線程同步、資源共享等,因此EagleDynamics也通過一篇FAQ特別強調了該技術的實驗性,和一些注意事項。 (圖片來源:EagleDynamics) 首先是遊戲可以利用的CPU核心數。EagleDynamics表示有一半的P-Core是專用於圖形渲染的,目前渲染池可以擴展到P-Core上的16個線程(1核心 = 2線程,也就是開啟超線程了),而其餘的P-Core則負責處理邏輯線程、音頻引擎線程及一些輔助線程等;至於E-Core(無超線程功能)僅會被資源串流池使用。 看來開發者們所舉的例子是基於擁有混合架構的12代及以後的英特爾酷睿處理器,如果是非混合架構,且核心支持超線程的處理器的話,那應該就不用考慮E-Core的情況了。當然,針對這種情況開發者們還沒有給出更詳細的說明。 (圖片來源:EagleDynamics) 開發者們還強調了一件事,如果玩家的CPU核心數太少,比如說較老的四核CPU,多線程技術可能不會提供顯著的性能提升,有時甚至會降低性能。另外,線程數也不是越多越好,開發者們指出,如果玩家的CPU擁有超過32個線程的話,那就應該禁用超線程功能,但只要不超過的話,超線程功能還是建議啟用的。 一般來說,像銳龍9 7950X還有酷睿i9-13900KS這些MSDT上的旗艦CPU總線程也就32個,所以只要不是HEDT玩家,應該也不用擔心這個問題。 目前多線程測試版應該已經提供給玩家預覽了,感興趣的玩家可以親自體驗一番。當然,對於一個還在測試中的功能,bug和崩潰是難免之事。EagleDynamics也呼籲遇到錯誤的玩家報告問題,以便他們日後改善。 ...

Core i9-13900KS跑分泄露,單線程性能較Core i9-13900K高5%,多線程僅高3%

其實早幾天的時候Core i9-13900KS的跑分已經在Geekbench上有泄露了,不過這軟體用來跑x86處理器其實不怎麼靠譜,現在這處理器的Cinebench R23測試也流出了。 泄露Core i9-13900KS跑分的其實就是前幾天泄露13代酷睿非K處理器的跑分的@g01d3nm4ng0,這款處理器在Cinebench R23里面單線程得分是2366,多線程得分為40998,和Core i9-13900K相比單線程性能提升了5%,多線程得分提高了3%,主要原因是這Core i9-13900KS其實就只有P-Core的頻率拉高了,而E-Core的頻率完全沒變,但想拉多線程性能的話,拉高E-Core頻率其實效果會好很多。 Core i9-13900KS和Core i9-13900K一樣擁有8個P-Core和16個E-Core,P-Core的基礎頻率從3.0GHz提高到了3.2GHz,最高頻率從5.8GHz提高到6GHz,處理器的PL1從125W提高到了150W,PL2維持253W不變,不過這個數字沒什麼意義,基本上大家都是把功率都解開用的。 根據最新的消息,Core i9-13900KS會在2023年1月12日推出,其實此前已經有多個消息來源提到這個時間點了,售價方面,此前加拿大的一個零售上泄露了價格,比Core i9-13900K高了22%,但由於只有一家來源,所以這價格未必准確。 ...

《賽道大師》遊戲積木模式解決方法分享

《賽道大師》中玩家在放置一個積木或者是離開積木模式會導致我的遊戲崩潰,解決方法就是玩家需要升級自己電腦的CPU,當玩家的CPU不支持遊戲添加的多線程空氣動力學時,就會崩潰。 遊戲積木模式解決方法 當您的CPU不支持我們在塊中添加的多線程空氣動力學時,就會發生這種情況!阻礙!阻礙!更新。要解決此問題,請從主菜單進入首選項菜單,並切換到「禁用突發編譯器」選項。這將禁用多線程空氣動力學,並允許您正常玩遊戲。不過,你將錯過令人敬畏的新物理和提高性能,這增加了叛徒,所以如果你有機會,升級你的CPU! 來源:3DMGAME

Alder Lake內兩種核心性能相差50%,效能核可有效提升整體多線程性能

Intel的Alder Lake處理器作為第一款要在多平台上布局混合架構x86處理器,自然是受到很多人關注的,特別是處理器里面兩種不同架構處理器的性能表現到底怎麼是很多人都想知道的,在Hot Chips 33大會上Intel對此有個簡單的答復。 傳統的處理器,單線程性能與多線程性能是呈線性關系的,核心架構的單線程性能越強,多線程性能就越強 但在Alder Lake這種混合架構處理器中就不一樣了,P-Core性能核的目的是提升處理器的單線程性能,而E-Core效能核的目的設計目的則是用更低的功耗來提升多線程性能,根據Intel的示意圖,四個效能核加起來才等於一個性能核那麼大。 性能核在同功耗的情況下單線程性能比效能核高出50%,而且實際情況是性能核的頻率與功耗會比效能核高得多,所以這個差距會更大,當然了,效能核本身的性能不差,別把他們看作ARM處理器的小核。 多線程的時候就會變得很有趣,4個性能核與2個性能核加8個效能核的晶片尺寸應該是差不多的,前者有8個線程,後者則是4+8共12個線程,而Intel給出的測試結果是2+8的組合比單純4個性能核多線程要領先50%,很明顯想提升多線程性能堆效能核其實更加劃算,但必須保留一定數量的性能核,以確保在一定線程數量內提供更好的性能,所以Alder Lake的2+8、6+8、8+8這種組合Intel應該是對實際使用環境考量過後定出來的。 ...

12代酷睿規格偷跑 最高16核 多線程性能翻倍

12代酷睿桌面處理器Alder Lake將在年底前發布,除了10nm SuperFin工藝,其它看點還有首次啟用大小核異構設計、對DDR5/PCIe 5.0的支持等。 日前,一份關於12代酷睿i5/i7/i9處理器規格爆料浮出水面,還沒有更多佐證,僅供參考。 具體來說,酷睿i9-12900K,8大核+8小核設計,大核單核睿頻最高5.3GHz、全核最高5.0GHz,小核單核睿頻最高3.9GHz、全核最高3.7GHz。 可能與新架構有關,三級緩存高達30MB,畢竟11代酷睿i9-11900K的三緩才16MB。 PL1(長時睿頻功耗)125瓦,PL2(短時睿頻功耗)228瓦。 酷睿i7-12700K,8大核+4小核設計,大核單核睿頻最高5.0GHz、全核最高4.7GHz,小核單核睿頻最高3.8GHz、全核最高3.6GHz。 三級緩存25MB,PL1(長時睿頻功耗)125瓦,PL2(短時睿頻功耗)228瓦。 酷睿i5-12600K,6大核+4小核設計,大核單核睿頻最高4.9GHz、全核最高4.5GHz,小核單核睿頻最高3.6GHz、全核最高3.4GHz。 三級緩存20MB,PL1(長時睿頻功耗)125瓦,PL2(短時睿頻功耗)228瓦。 根據此前曝光,大小核雖然異構,但都是x86,其中大核是Golden Cove,小核是Atom下的Gracemont。 依照此前一份曝光的PPT,12代酷睿單核性能增幅高達20%,新架構下核心數量暴漲,多線程性能提升兩倍。 來源:遊民星空

12代酷睿i5/i7/i9規格偷跑:最高16核、多線程性能提升兩倍

12代酷睿桌面處理器Alder Lake將在年底前發布,除了10nm SuperFin工藝,其它看點還有首次啟用大小核異構設計、對DDR5/PCIe 5.0的支持等。 日前,一份關於12代酷睿i5/i7/i9處理器規格爆料浮出水面,還沒有更多佐證,僅供參考。 具體來說,酷睿i9-12900K,8大核+8小核設計,大核單核睿頻最高5.3GHz、全核最高5.0GHz,小核單核睿頻最高3.9GHz、全核最高3.7GHz。 可能與新架構有關,三級緩存高達30MB,畢竟11代酷睿i9-11900K的三緩才16MB。 PL1(長時睿頻功耗)125瓦,PL2(短時睿頻功耗)228瓦。 酷睿i7-12700K,8大核+4小核設計,大核單核睿頻最高5.0GHz、全核最高4.7GHz,小核單核睿頻最高3.8GHz、全核最高3.6GHz。 三級緩存25MB,PL1(長時睿頻功耗)125瓦,PL2(短時睿頻功耗)228瓦。 酷睿i5-12600K,6大核+4小核設計,大核單核睿頻最高4.9GHz、全核最高4.5GHz,小核單核睿頻最高3.6GHz、全核最高3.4GHz。 三級緩存20MB,PL1(長時睿頻功耗)125瓦,PL2(短時睿頻功耗)228瓦。 根據此前曝光,大小核雖然異構,但都是x86,其中大核是Golden Cove,小核是Atom下的Gracemont。 依照此前一份曝光的PPT,12代酷睿單核性能增幅高達20%,新架構下核心數量暴漲,多線程性能提升兩倍。 來源:快科技

使用多線程編程來實現並發時,需要考慮並發所帶來的哪些風險呢?

並發與並行 分布式系統的一個重要特徵就是計算能力是可以並發或者並行的。 在分布式系統中,往往會將一個大任務進行分解,而後下發給不同的節點去計算,從而節省整個任務的計算時間。 並發與並行的區別 計算機用戶很容易認為他們的系統在一段時間內可以做多件事。比如,用戶一邊用瀏覽器下載視頻文件,一邊可以繼續在瀏覽器上瀏覽網頁。可以做這樣的事情的軟體被稱為並發軟體(ConcurrentSoftware)。 計算機能實現多個程序的同時執行,主要基於以下因素。 ·資源利用率。某些情況下,程序必須等待其他外部的某個操作完成,才能往下繼續執行,而在等待的過程中,該程序無法執行其他任何工作。因此,如果在等待的同時可以運行另外一個程序,無疑將提高資源的利用率。 ·公平性。不同的用戶和程序對於計算機上的資源有著同等的使用權。一種高效的運行方式是粗粒度的時間分片(Time Slicing)使這些用戶和程序能共享計算機資源,而不是一個程序從頭運行到尾,然後再啟動下一個程序。 ·便利性。通常來說,在計算多個任務時,應該編寫多個程序,每個程序執行一個任務並在必要時相互通信,這比只編寫一個程序來計算所有任務更加容易實現。 那麼並發與並行到底是如何區別的呢? The Practice of Programming一書的作者Rob Pike對並發與並行做了如下描述。 並發是同一時間應對(Dealing With)多件事情的能力;並行是同一時間動手做(Doing)多件事情的能力。並發(Concurrency)屬於問題域(Problem Domain),並行(Parallelism)屬於解決域(SolutionDomain)。並行和並發的區別在於有無狀態,並行計算適合無狀態應用,而並發解決的是有狀態的高性能;有狀態要著力解決並發計算,無狀態要著力並行計算,雲計算要能做到這兩種計算自動伸縮擴展。 上述的描述貌似有點抽象。舉一個生活中的例子,某些人工作很忙,那麼會請鐘點工來打掃衛生。一個鐘點工在一小時可以幫你掃地、擦桌子、洗菜、做飯。客戶並不關心哪件活兒先干哪件活兒後做,客戶所關心的是,付費的這一小時,需要看到所有活兒都完成。在客戶看來,這一小時內,所有的活兒都是一個鐘點工乾的,這就是並發。 再舉一例子,客戶的親戚要來看望客戶,還有不到一小時親戚就要登門了。那麼平時要花一小時才能做完的家務,如何才能提前做完呢? 答案是加人。多請幾個鐘點工來一起做事,比如某個鐘點工專門掃地,某人專門抹桌子,某人專門負責洗菜、做飯。這樣3人同時開工,就能縮短整體的時間,這就是並行。 從計算機的角度來說,單個CPU是需要被某個任務獨占的,就如同鐘點工,在掃地的同時不能做擦桌子的動作。如果她想去擦桌子,就需要將手頭的掃地任務先停下來。當然,由於多個任務是不斷切換的,因此,在外界看來,就有了「同時」執行多個任務的錯覺。 現代的計算機大多是多核的,因此,多個CPU同時執行任務,就實現了任務的並行。 線程與並發 早期的分時系統中,每個進程以串行方式執行指令,並通過一組I/O指令來與外部設備通信。每條被執行的指令都有相應的「下一條指令」,程序中的控制流就是按照指令集的規則來確定的。 串行編程模型的優勢是直觀性和簡單性,因為它模仿了人類的工作方式:每次只做一件事,做完再做其他事情。例如,早上起床,先穿衣,然後下樓,吃早飯。在程式語言中,這些現實世界的動作可以進一步被抽象為一組粒度更細的動作。例如,喝茶的動作可以被細化為:打開櫥櫃,挑選茶葉,將茶葉倒入杯中,查看茶壺的水是否夠,不夠要加水,將茶壺放在火爐上,點燃火爐,然後等水煮沸,等等。在等水煮沸這個過程中包含了一定程序的異步性。例如,在燒水過程中,你可以一直等,也可以做其他事情,比如開始烤麵包,或者看報紙(這就是另一個異步任務),同時留意水是否煮沸了。但凡做事高效的人,總能在串行性和異步性之間找到合理的平衡,程序也是如此。 線程允許在同一個進程中同時存在多個線程控制流。線程會共享進程範圍內的資源,例如記憶體句柄和文件句柄,但每個線程都有各自的程序計數器、棧以及局部變量。線程還提供了一種直觀的分解模式來充分利用作業系統中的硬體並行性,而在同一個程序中的多個線程也可以被同時調度到多個CPU上運行。 毫無疑問,多線程編程使得程序任務並發成為可能。而並發控制主要是為了解決多個線程之間資源爭奪等問題。並發一般發生在數據聚合的地方,只要有聚合,就有爭奪發生,傳統解決爭奪的方式是採取線程鎖機制,這是強行對CPU管理線程進行人為干預,線程喚醒成本高,新的無鎖並發策略來源於異步編程、非阻塞I/O等編程模型。 並髮帶來的風險 多線程並發會帶來以下問題。 ·安全性問題。在沒有充足同步的情況下,多個線程中的操作執行順序是不可預測的,甚至會產生奇怪的結果。線程間的通信主要是通過共享訪問欄位及其欄位所引用的對象來實現的。這種形式的通信是非常有效的,但可能導致兩種錯誤:線程干擾(Thread Interference)和記憶體一致性錯誤(Memory Consistency Errors)。 ·活躍度問題。一個並行應用程式的及時執行能力被稱為它的活躍度(Liveness)。安全性的含義是「永遠不發生糟糕的事情」,而活躍度則關注另外一個目標,即「某件正確的事情最終會發生」。當某個操作無法繼續執行下去,就會發生活躍度問題。在串行程序中,活躍度問題形式之一就是無意中造成的無限循環(死循環)。而在多線程程序中,常見的活躍度問題主要有死鎖、飢餓以及活鎖。 ·性能問題。在設計良好的並發應用程式中,線程能提升程序的性能,但無論如何,線程總是帶來某種程度的運行時開銷。而這種開銷主要是在線程調度器臨時關閉活躍線程並轉而運行另外一個線程的上下文切換操作(Context Switch)上,因為執行上下文切換,需要保存和恢復執行上下文,丟失局部性,並且CPU時間將更多地花在線程調度而不是在線程運行上。當線程共享數據時,必須使用同步機制,而這些機制往往會抑制某些編譯器優化,使記憶體緩存區中的數據無效,以及增加貢獻記憶體總線的同步流量。所以這些因素都會帶來額外的性能開銷。 死鎖 死鎖(Deadlock)是指兩個或兩個以上的線程永遠被阻塞,一直等待對方的資源。下面是一個用Java編寫的死鎖的例子。 Alphonse和Gaston是朋友,都很有禮貌。禮貌的一個嚴格的規則是,當你給一個朋友鞠躬時,你必須保持鞠躬,直到你的朋友回給你鞠躬。不幸的是,這條規則有個缺陷,那就是如果兩個朋友同一時間向對方鞠躬,那就永遠不會完了。這個示例應用程式中,死鎖模型如下。 package com.waylau.java.demo.concurrency; public class Deadlock { public static void main(String args) { final Friend alphonse = new Friend("Alphonse"); final Friend gaston...

捨不得扔的舊電腦,與其放在家里吃灰,倒不如讓它變廢為寶

經常聽到網友們說「丟進我的文章收藏夾里吃灰吧,狗頭.jpg」。 後來仔細琢磨了這句話,才知道網友們是用幽默+委婉+有趣的表情包的方式。表達文章內容毫無用處,猶如老舊的電腦,只能放在家里,基本不會再打開來使用,時間久了就積滿灰塵。 原來,這句「丟進我的文章收藏夾里吃灰吧」是這麼來的。不過,這些不是重點,重點是淘汰的舊電腦真的只能放在家里面吃灰了嗎? 幾年前的舊電腦,配置跟不上軟體升級的速度,已經滿足不了現在的應用軟體,很難帶動主流遊戲,並且使用起來卡頓、死機也正常。 但是呢,舊電腦其實並非毫無用處!很多人的家里還存放著舊電腦,捨不得扔。如果你還想繼續讓電腦發揮作用的話,不妨試試下面的方法為電腦進行優化。 第一步,檢查電腦有沒有損壞,如果能正常開機,就先查看電腦的基本配置信息。 打開電腦管家軟體,進行硬體檢測。 此時,在彈出來的介面中,可以看到系統、顯卡、音效卡的配置詳細信息。一般,電腦性能主要由:CPU、主板、記憶體、硬碟、顯卡這幾個配件來決定。 第二步,結合配置需求,考慮我們的預算。 一般普通辦公、網頁、小遊戲需求,配置建議:雙核處理器+2G記憶體+集成顯卡+機械硬碟。 如果是播放高清視頻、多開應用、做圖、網路遊戲的需求,配置建議:四核處理器+4G/8G記憶體+中高端獨立顯卡+固態硬碟/機械硬碟。 大型發燒單機遊戲/網路遊戲、專業做圖設計/視頻編輯處理、多開應用辦公,配置建議:四核以上處理器+8G以上記憶體+高端獨立顯卡+固態硬碟+機械硬碟。 只要結合電腦原來的配置,以及現在想要用來做什麼,我們就可以大概判斷電腦是否值得升級配置,升級空間大不大,升級是否超出預算。 如果電腦是單核CPU、DDR1記憶體的話,這類主機太舊了,配置已經沒有升級的空間,全部配件都需要換代了,所以不建議做優化。 這些淘汰的電腦不妨捐給有需要的人,或者二手處理,幫助它實現最後的價值。注意,在處理前請確保電腦里面沒有需要的數據,或者奇奇怪怪的東西。 若是,低頻雙核CPU、DDR2記憶體,主機升級空間不大,可以在預算內考慮淘二手硬體進行升級,升級後性能會有小小的提升,但不會有質的飛躍! 另外,高頻多線程雙核、四核心或以上的CPU、DDR3/DDR4記憶體平台,這類主機升級空間比較大,可以根據需求,選擇合適的配件升級。 那麼,今天的分享就到這里了,希望文章可以幫助到各位~ 來源:kknews捨不得扔的舊電腦,與其放在家里吃灰,倒不如讓它變廢為寶

一篇文章快速了解多線程

1. 基本概念 1.1 進程與線程 程序(program) 是為完成特定任務、用某種語言編寫的一組指令的集合。即指一段靜態的代碼,靜態對象。 進程(process)是程序的一次執行過程,或是正在運行的一個程序。 是一個動態的過程:有它自身的產生、存在和消亡的過程。——生命周期 如:運行中的QQ,運行中的MP3播放器 程序是靜態的,進程是動態的 進程作為資源分配的單位,系統在運行時會為每個進程分配不同的記憶體區域 線程(thread),進程可進一步細化為線程,是一個程序內部的一條執行路徑。 若一個進程同一時間並行執行多個線程,就是支持多線程的 線程作為調度和執行的單位,每個線程擁有獨立的運行棧和程序計數器(pc),線程切換的開銷小 一個進程中的多個線程共享相同的記憶體單元/記憶體地址空間,它們從同一堆中分配對象,可以訪問相同的變量和對象。這就使得線程間通信更簡便、高效。但多個線程操作共享的系統資源可能就會帶來安全的隱患 1.2 並行與並發 並行:多個CPU同時執行多個任務,指同⼀時刻內發⽣兩個或多個事件。在不同實體上的多個事件。 比如:多個人同時做不同的事。 並發:一個CPU(採用時間片)同時執行多個任務,同⼀時間間隔內發⽣兩個或多個事件,同⼀實體上的多個事件。比如:秒殺、多個人做同一件事。 並⾏是針對進程的,並發是針對線程的 2. 實現多線程 2.1 繼承Thread 定義子類繼承Thread類。 子類中重寫Thread類中的run方法。 創建Thread子類對象,即創建了線程對象。 調用線程對象start方法:啟動線程,調用run方法。 //1. 創建一個繼承於Thread類的子類 class MyClass extends Thread { //2. 重寫Thread類中的run方法 @Override public void run() { for (int...

移動SoC支持SMT多線程了,ARM發佈7nm Cortex-A65AE處理器

X86及Power處理器都支持SMT多線程技術,目的是為了盡可能獲得更高的多線程性能,但是移動處理器一直沒有上SMT的,倒不是ARM等廠商沒那個技術,是因為沒必要,因為移動處理器還考慮能效問題,真想要多線程性能直接上多核就行了。ARM今晚發佈了Cortex-A65AE處理器,它是面向汽車電子市場的,為7nm工藝優化,其最大特點就是支持了SMT多線程,性能吞吐率比前代高3.5倍,預計2020年上市。 針對自動汽車電子市場,ARM今年9月份推出了Cortex-A76AE處理器,AE代表的是Automotive Enhanced駕駛增強,主要用於汽車的ADAS高級駕駛員輔助系統,除了強調性能之外更注重安全性,比如支持Split-Lock分離-鎖定技術,使得CPU內核可以運行在不同的模式下,分離模式下性能最大化,鎖定模式下兩個核心/線程可以互相鎖定,確保安全性。 除了安全性能之外,Cortex-A65AE處理器還是ARM首個支持SMT多線程技術的,簡單來說就是類似現在AMD、英特爾X86處理器的多線程一樣,核心數不變的情況下線程翻倍。 Cortex-A65AE處理器支持SMT超線程技術是為了提高數據吞吐率,畢竟汽車輔助駕駛系統需要應對大量傳感器,對計算及吞吐量都有較高的要求。根據ARM的資料,Cortex-A65AE處理器在能效更高的情況下吞吐率比前代提升3.5倍,而這個前代指的是Cortex-A53處理器。 ARM對Cortex-A65AE處理器的架構介紹總體還是偏少的,所以具體的性能、架構細節沒什麼料,不過它也不是用於消費級的,而且要到2020年才有可能推出實物。來源:超能網