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

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

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

3天內不再提示

講講線程、進程和CPU中的超線程

冬至配餃子 ? 來源:天奇工作室 ? 作者:LRC ? 2022-08-05 16:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們先來回顧一下之前的內容。CPU其實就是執行指令的器件,指令從哪讀取要看PC寄存器,取得的指令需要翻譯成電路的控制信號,最后輸出一條指令的結果,這個結果可能會對下一條指令產生影響,也可能會對內存或地址空間中的某個值產生影響。

今天我們來講講線程、進程和CPU中的超線程。

我們通過不計其數的指令的組合,可以形成一個完整的線程。線程之間通過少量的必要的溝通組合形成一個進程,也就是我們通常意義上的應用程序。比如說音樂播放器中,音樂的播放是一個線程,用戶的操作界面是另外一個線程,兩個線程合起來構成了音樂播放器。當然,一個應用程序(進程)也可以只有一個線程。

早期的計算機不像現在如此發達,一般一臺計算機一段時間內只運行一個線程,比如說計算導彈軌跡什么的,在計算完成后輸出結果,線程結束。然而時代在改變,在寫這段文字的時候,我的平板一邊打開著wps,一邊播放著音樂。這兩個進程的運行是連續的、同時的。

為什么會連續、同時呢?

首先,當今的CPU的核心數早已不是單核心,一個非超線程(一會會講)的核心可以運行一個線程,現在的八核CPU就可以同時運行八個線程。但是這樣夠嗎?我們現在的電腦同一時刻需要運行的線程可遠不止八個。那看來光有核心數還不夠,我們還需要別的辦法。

第二個辦法便是分時間片。CPU運算速度極快,我們能不能讓CPU在這一些線程上反復橫跳,快速切換并輪流執行這些個線程,營造出一種這些線程是同時進行的錯覺。具體怎么操作呢?可以設置一個“鬧鐘”,當倒計時結束的時候強行停止CPU當前的線程(中斷),PC寄存器跳轉到相應的地址,將當前未處理完的線程的PC值、寄存器組數據等信息用一種數據類型保存到內存中,CPU將根據操作系統給出的決定切換到接下來要運行的下一個線程。CPU此時要將接下來要運行的線程從內存中讀取,恢復該線程到CPU內核心中,就像它之前被切換出去時的樣子,然后開始執行這個線程。(暫不細講)

第三個方法則是今天的主角--超線程技術。這個技術我沒記錯的話是Intel率先提出來的,他們聲稱增加5%的晶體管數量可以提升20%的性能。

具體怎么操作呢?首先我們先要考慮一下為什么一個核心只能同時運行一個線程。

1.只有一個PC寄存器,只能指示一個線程目前運行到哪了。

2.無法區分對寄存器組的操作。比如線程A要把第一個寄存器的值寫成0,B要讀出第一個寄存器的值,現在也就是0。但這個0是B想要的嗎?肯定不是。

3.還有一些涉及到線程的棧指針和頁表基地址的寄存器,也只能支撐一個線程的運行。

因此,超線程簡單來講就是把這些不能公用的資源加倍。而那些流水線上的操作邏輯電路、ALU單元等則可以不用復制。以此實現多個線程同時在一個CPU的核心中進行處理。注意,不一定一個核心只能虛擬出兩個線程,IBM的某款CPU甚至一個核心虛擬出了八個線程。

那為什么性能會提升呢?共用了這么多資源,性能應該會有所下降才對。是的,有些時候性能確實會下滑,尤其是某個線程需要很大計算量的時候,因為共用,可能會導致該線程運行速度減慢。那Intel是瞎吹他們的超線程技術嗎?并不是,往往CPU限制運行速度的不是計算而是讀寫。讀寫要做的就是等待數據的傳輸,這個過程CPU沒事可做,只能空等。但有了超線程就不一樣了,CPU可以在本該空等的地方擇機執行另外一個線程的指令,實現了時間管理,縮短了兩個程序執行的總體時間。


審核編輯:劉清

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

    關注

    31

    文章

    5608

    瀏覽量

    129968
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11277

    瀏覽量

    224958
  • ALU
    ALU
    +關注

    關注

    0

    文章

    34

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    摩爾線程正式開源TileLang-MUSA項目

    近日,摩爾線程正式開源TileLang-MUSA項目,實現對TileLang編程語言的完整支持。該項目已成功在摩爾線程多代全功能GPU上完成功能驗證與特性開發,旨在通過高層抽象與編譯器優化,大幅降低開發門檻,為國產算力平臺提供更高效的AI與高性能計算開發體驗。
    的頭像 發表于 02-11 16:57 ?1242次閱讀

    解析Linux的進程線程和協程

    進程間通信(IPC):Linux提供了多種IPC機制,如管道、信號、共享內存和消息隊列,用于進程之間的通信。 線程管理 在Linux線程
    發表于 12-22 11:00

    線程的系統

    線程系統的事件響應也是在中斷完成的,但事件的處理是在線程完成的。在多線程系統
    發表于 12-08 07:55

    Linux多線程對比單線程的優勢

    在Linux系統線程是操作系統能夠進行運算調度的最小單位。線程被包含在進程之中,是進程的實
    發表于 12-01 06:11

    rt-thread studio 如何進行多線程編譯?

    ,使用的是5800h+32g內存+sn550 ssd,開啟16線程編譯時cpu的占用率也只能到30%,編譯完整個工程需要3分鐘 感覺多線程編譯設置沒有生效,有辦法提高編譯速度嗎 rtthread studio版本是 2.2.9
    發表于 10-11 09:16

    rtt建兩個線程a和b,怎么確保線程a執行完立刻切到線程b?

    怎么獲取從線程開始切換到切換完成用的總的CPU時鐘節拍數量?
    發表于 10-10 06:37

    線程刪除時遇到斷言,是什么原因導致的?

    在一個線程調用線程刪除函數刪除另外一個線程,這2個線程的優先級是相等的,被刪除的線程也是動態創
    發表于 09-12 06:08

    rtth studionano 如何創建動態線程

    有沒有大佬,可以說一下為什么靜態線程可以正常使用,動態線程怎么也使用不了。 具體需要什么配置才能使用動態線程創建。謝謝!
    發表于 09-11 06:01

    【HZ-T536開發板免費體驗】—— linux創建線程

    線程進程 一個進程指的是一個正在執行的應用程序,而線程的功能是執行應用程序的某個具體任務。線程
    發表于 09-01 21:31

    rtt studionano 如何創建動態線程

    有沒有大佬,可以說一下為什么靜態線程可以正常使用,動態線程怎么也使用不了。 具體需要什么配置才能使用動態線程創建。謝謝!
    發表于 08-22 06:19

    UVC+MSC實現MSC線程未運行的原因?

    我正在嘗試使用 EZUSB 運行 UVC + MSC。我有以下內容。但看起來只有 UVC 線程在運行,而 MSC 沒有運行。fw 不響應 MSC 命令。我確保 LPM 已被禁用,只是為了檢查傳感器
    發表于 07-16 07:08

    深度剖析 RT-Thread 線程調度流程

    rt_system_scheduler_start:調度系統第一個線程rt_hw_context_switch_to:初始化上下文切換環境,觸發PendSV異常first_thread:系統優先級最高
    的頭像 發表于 06-25 18:24 ?1768次閱讀
    深度剖析 RT-Thread <b class='flag-5'>線程</b>調度流程

    線程的安全注意事項

    線程安全是指多個線程同時訪問或修改共享資源時,能夠保證程序的正確性和可靠性。 開發者選擇TaskPool或Worker進行多線程開發時,在TaskPool和Worker的工作線程中導
    發表于 06-20 07:49

    進程線程、協程傻傻分不清?一文帶你徹底扒光它們的\"底褲\"!

    ;) ? asyncio.run(main()) 輸出結果: markdown 抓取完成!共 10 條數據 「三大門派」終極對比表(含「社死」現場) 特性 進程 線程 協程 資源開銷 高(買房) (合租
    發表于 03-26 09:27

    請問如何在Python實現多線程與多進程的協作?

    () thread.join() process.join() 我的問題是:**如何合理地組合多線程和多進程以獲得更好的性能?**特別是在I/O密集型任務和CPU密集型任務混合的情況下,如何避免性能瓶頸,確保程序的高效運行? 希
    發表于 03-11 06:57