輕松讀懂移動處理器 CPU微架構全解析
假設我們有這樣的一段 C 代碼:
int x,y ;
int z ;
x = 100 ;
y = x + 1 ;
z = 5 ;
由于 z 的初始化和賦值都是相對對立的,這里也許可以拆成兩條 thread(線程):
thread #1:
int x,y ;
x = 100 ;
y = x + 1 ;
和 thread #2:
int z ;
z = 5 ;
如果處理器的微架構具備兩種架構狀態讓操作系統認為有兩個處理器的話,上面的兩條 thread 就能同時執行了,這就是多線程。
多線程有三種類型,即 SMT、FGMT 和 CGMT,其中最早實現 SMT 的處理器是 Intel 的 Pentium 4,而 FGMT 大都在 in-order(相對于 OoOE)處理器上采用例如 Cell PPU 和所有的 GPU 上。
隨著半導體工藝提升以及功率墻壁壘橫亙在前面導致超級流水線提升頻率和各種指令并行度措施不再靈光后(這些限制其實在 20 多年前就被處理器廠商和科研界預見到,例如 1993 年 DEC 西部研究院 David W.Wall)的論文《LIMITS OF INSTRUCTION-LEVEL PARALLELISM》,1993 年英特爾在路線圖中明確提出在 P8(當時還是 P5 或者說 Pentium)時代引入多核處理器)廠商開始在片上實現多個內核,這也就出現了多核處理器。
多核處理器能讓支持多線程的程序、操作系統跑得更快,但是目前大部分的應用通常更偏好于單線程性能出色的處理器,因此你會看到單線程性能較強的雙核處理器比單線程性能較弱的多核處理器更快的情況發生。
到目前為止我們介紹了指令并行、線程并行的微架構實現,不過除了這兩種并行技術外,還有另一種非常常見的并行技術:數據級并行化,通常以 SIMD 向量方式實現。
關注我們


