引言
並發與並行一直是IT界炙手可熱的詞匯,相信各位猿友都不會陌生。在計算機系統這本書當中,對並發與並行的解釋是,並發是指一個同時具有多個活動的系統,而並行則是指的用並發使得一個系統運行的更快。
這與LZ之前的理解應該是不沖突的,在LZ之前看來,並發是一種模式,而並行是實現這種模式的手段之一。
在進程的抽象概念下引入了線程,而線程級並發的概念,就是指的多個線程在同一時間(並非是絕對同時的)活動。
操作系統從單處理器,直到現在多核多處理器系統,乃至超線程技術,已經經歷了很大的變化。這也使得針對多線程編程變得更加重要,否則就無法利用多處理器帶來的好處。
針對多處理器系統來說,比較好理解,其實就是物理上將多個CPU集中在一個集成電路的芯片上。而對於超線程技術來說,則是利用N個物理內核,模擬出2N個邏輯內核的技術。在硬件上來講,超線程需要CPU的某些部分有多個備份,比如寄存器和程序計數器,但是其它部分只有一份,比如ALU。
在書中,對指令級並行的解釋是,如果處理器可以同時執行多條指令,則稱這種屬性為指令級並行。其實指令級並行就是利用了指令的執行過程中會有不同的階段,或者更精確的說,是在同一時間只會利用部分CPU的硬件,因此可以利用這一點做到多個指令並行執行。
更好的情況下,現代的很多處理器能夠做到執行一條指令的平均時間尚且不到一個周期,這種處理器就稱為超標量處理器。
查看本欄目