您好,歡迎來到易龍商務網!
【廣告】
發布時間:2020-07-19 06:44  





程序的運行過程,實際上是程序涉及到的、未涉及到的一大堆的指令的執行過程。當程序要執行的部分被裝載到內存后,CPU要從內存中取出指令,然后指令解了碼(以便知道類型和操作數,簡單的理解為CPU要知道這是什么指令),然后執行該指令。再然后取下一個指令、解了碼、執行,以此類推直到程序退出。
因為CPU有大量的緩存和復雜的邏輯控制單元,因此它非常擅長邏輯控制、串行的運算。相比較而言,GPU因為有大量的算術運算單元,因此可以同時執行大量的計算工作,它所擅長的是大規模的并發計算, 計算量大但是沒有什么技術含量,而且要重復很多次。這樣一說,我們利用GPU來提高程序運算速度的方法就顯而易見了。使用CPU來做復雜的邏輯控制,用GPU來做簡單但是量大的算術運算,就能夠大大地提高程序的運行速度。
用戶態CPU想要執行特權操作,需要發起系統調用來請求內核幫忙完成對應的操作。其實是在發起系統調用后,CPU會執行trap指令陷入(trap)到內核。當特權操作完成后,需要執行一個指令讓CPU返回到用戶態。除了系統調用會陷入內核,更多的是硬件會引起trap行為陷入內核,使得CPU控制權可以回到操作系統,以便操作系統去決定如何處理硬件異常。
每核上的多線程CPU都共享該核的CPU資源。
假設每核CPU都只有一個"發動機"資源,那么線程1這個虛擬CPU使用了這個"發動機"后,線程2就沒法使用,只能等待。
所以,超線程技術的主要目的是為了增加流水線上更多個獨立的指令,這樣線程1和線程2在流水線上就盡量不會爭搶該核CPU資源。所以,超線程技術利用了superscalar(超標量)架構的優點。