天天看點

計算機組成原理(2021最新版)面試知識點集錦(下)2 并行優化-阿姆達爾定律3 讓性能再次提升

2 并行優化-阿姆達爾定律

從90s到本世紀初,“面向摩爾定律程式設計”的套路越來越用不下去了。奔騰4開始,Intel意識到通過提升主頻“難”以性能提升。開始推出多核CPU,提升“吞吐率”而非“響應時間”。即通過并行提高性能。

但要使用這種思想,需滿足以下條件:

  • 需要進行的計算,本身即可分解成幾個可并行任務

    比如向量的點乘運算

  • 需要能夠分解好問題,并確定幾個人的結果能夠彙總到一起
  • 在“彙總”這個階段,是沒有辦法并行進行的,還是得順序執行,一步一步來

這就引出了阿姆達爾定律(Amdahl’s Law):

對一個程式優化後,處理器并行運算之後效率提升的情況可用如下公式表示:

優化後的執行時間 = 受優化影響的執行時間/加速倍數+不受影響的執行時間      

比如向量點乘,同時計算向量的一小段點積,就是并行提高部分計算性能。但最終還是要在一個人那彙總相加,這部分時間無法并行優化,即不受影響的執行時間。

比如向量

  • 點積需100ns
  • 加法需要20ns

總共需要120ns。這裡通過并行4個CPU有了4倍的加速度。那麼最終優化後,就有了100/4+20=45ns。

即使增加并行度來提供加速倍數,比如有100個CPU,整個時間也需要100/100+20=21ns,是以并非越多就肯定越快。

3 讓性能再次提升

無論是簡單提升主頻,還是增加CPU核心數,通過并行提升性能,都會遇到瓶頸。

僅靠“堆硬體”,已經不能很好地滿足性能。于是,工程師們需要從其他方面開始下功夫。

在“摩爾定律”和“并行計算”之外,在整個計算機組成層面,還有如下:

3.1 大機率事件

深度學習,整個計算過程中基本都是向量矩陣計算。是以用GPU替代CPU,大幅度提升了深度學習的模型訓練過程,Google不滿足GPU性能,還推出了TPU。

3.2 流水線

現代的工廠裡的生産線叫“流水線”。可以把裝配iPhone這樣的任務拆分成一個個細分的任務,讓每個人都隻需要處理一道工序,最大化整個工廠的生産效率。

CPU就是一個運算工廠,把CPU指令執行的過程進行拆分,細化運作。

3.3 預測

預測下一步而非苦等上一步結果,即提前運算。就像循環通路數組時,你也會猜到下一步會通路數組下一項。比如“分支和冒險”、“局部性原理”。

參考