多核多線程技術

所属分类:編程語言與程序設計  
出版时间:2011-1   出版时间:英特爾亞太研發有限公司、 英特爾軟件學院教材編寫組 上海交通大學出版社 (2011-01出版)   作者:英特爾亞太研發有限公司,英特爾軟件學院教材編寫組 編   页数:265  

前言

在多核体系结构出现以前的近20年里,程序员们已经习惯了由硬件的发展来自然而然地获得程序性能的提高。即,每当出现一代新的体系结构平台,原有的程序无需修改,或者只需很少的修改,就可以轻而易举地获得由摩尔定律所带来的性能提升。但是,三个主要因素的日益凸显,使得这一免费午餐即将走到尽头:第一,系统建造者遇到了难以克服的物理阻碍——太多的发热量、太多的能量消耗以及过多的能量泄露,阻止了通过进一步提高时钟频率来提升性能的方法;第二,单个芯片上可以集成的引脚(pin)数目以及带宽限制,都意味着处理器与内存性能之间的差异只会越来越大;第三,为了解决以上两个问题,所在处理器体系结构上做的妥协将不足以使得单个处理器核心承担更高性能的计算需求。因此,要想在现在的多核体系结构上获得性能的提升,必须在原有的软件基础上作出大幅度的革新。这其中最主要的是利用多线程技术,充分利用好单个芯片上的多个计算核心,提高程序整体的计算吞吐量。虽然在多核处理器出现之前,它一直属于一种比较深奥的理论,但多线程技术的出现已经有了几十年的历史。迄今为止,很多程序员都曾经在一些常见的多线程程序设计问题上经历过挫折。如何解决好这些问题?将是我们在本书中要与读者们共同探讨的重要问题。

内容概要

  《英特爾軟件學院系列課程培訓教材︰多核多線程技術》就多核體系結構、芯片發展與系統軟件,多性能並行程序,多線程程序的性能調優方法,多線程編程方法以及編程中的常見問題等作了綜合講述,處處體現了多線程編程理念與綜合應用能力的培養。全書深入淺出,適合廣大程序員和IT從事人員使用。

书籍目录

1 多核技術導論1.1 微處理器發展史1.1.1 計算機與微處理器1.1.2 4位、8位與16位微處理器1.1.3 32位微處理器1.2 並行計算機1.2.1 並行處理思想與弗林(Flynn)分類1.2.2 超級計算機1.3 片上多核處理器架構1.3.1 多核芯片1.3.2 片上多核處理器體系結構1.3.3 典型多核芯片架構1.4 操作系統對多核處理器的支持方法1.4.1 調度與中斷1.4.2 輸入輸出系統1.4.3 存儲管理與文件系統1.4.4 典型支持多核的操作系統2 多線程並行程序性能分析方法綜述2.1 性能調優周期2.1.1 搜集性能數據2.1.2 分析數據並定位性能瓶頸2.1.3 加速比性能定律2.1.4 解決性能瓶頸2.1.5 實現優化措施2.1.6 測試2.2 使用Intel Tune進行性能分析2.2.1 性能分析器功能與使用方法2.2.2 性能分析器實驗2.3 MKL數學核心函數庫2.3.1 MKI。數學核心函數庫功能與特性2.3.2 MKL數學核心函數庫性能2.3.3 MKL數學核心函數庫實驗2.4 Thread Checker線程檢查器2.4.1 線程檢查器功能與使用2.4.2 線程檢查器實驗2.5 Thread Profiler線程檔案器2.5.1 線程檔案器功能與使用2.5.2 線程檔案器實驗3 Intel多核處理器上的性能調優方法3.1 體系結構無關的性能調優方法3.1.1 消除循環不變量3.1.2 減少過程調用3.1.3 消除不必要的內存存取3.2 阻礙優化的因素3.2.1 編譯優化選項3.2.2 變量別名3.2.3 函數調用的邊際效應3.3 體系結構無關優化的小結3.4 深入理解Intel多核處理器體系結構3.4.1 Intel多核處理器微體系結構的顯著特性3.5 Intel多核處理器體系結構相關的優化3.5.1 Intel多核處理器微體系結構中對代碼優化的支持4 多線程編程方法綜述4.1 線程的基本概念4.1.1 線程與進程的區別4.1.2 用戶級線程、核心級線程和硬件線程4.1.3 線程的生命周期4.2 線程的同步4.2.1 競爭條件4.2.2 臨界區4.2.3 信號量4.2.4 鎖4.2.5 條件變量4.2.6 線程的本地存儲4.2.7 介紹TLS的特性和使用方法4.3 多線程編程模型4.3.1 流水線4.3.2 工作組4.3.3 客戶服務器方式4.4 多線程編程的原則及要點4.4.1 靜態負載平衡4.4.2 動態負載平衡4.4.3 負載平衡的難題4.4.4 串行化方面的難題5 多線程程序設計中的常見問題及解決途徑5.1 線程過多5.2 數據競爭、死鎖和活鎖5.2.1 數據競爭5.2.2 死鎖和活鎖5.3 競爭激烈的鎖5.3.1 優先級倒置5.3.2 鎖競爭激烈的解決方法5.4 非阻塞算法5.4.1 比較並交換5.4.2 原子變量類5.4.3 非阻塞算法的介紹5.4.4 ABA問題5.4.5 cache線乒乓現象5.4.6 存儲空間回收問題5.4.7 一些建議5.5 線程安全函數和庫5.5.1 理解可重入與線程安全5.5.2 函數可重入化5.5.3 函數線程安全化5.6 存儲問題5.6.1 帶寬5.6.2 cache的利用5.6.3 存儲競爭5.7 Cache相關問題5.7.1 偽共享5.7.2 存儲一致性5.7.3 當前IA-32體系結構5.7.4 Itanium體系結構5.7.5 高級語言5.8 避免IA-32上的流水線停頓5.9 面向高性能的數據組織6 UnixLinux多線程編程6.1 POSIX的一些基本知識6.2 POSIX線程庫6.2.1 創建線程6.2.2 分離和接合線程6.2.3 退出和取消線程6.2.4 用戶級線程和內核級線程6.2.5 線程的屬性6.2.6 線程安全函數6.2.7 線程特定數據……

章节摘录

插圖︰7.2.2Windows操作系統中對線程概念的定義下面開始介紹線程的一些基本概念。與進程相似,線程也是由兩個部分構成的︰(1)線程的內核對象。操作系統用它來對線程實施管理。(2)線程堆棧。它用于維護線程在執行代碼時需要的所有函數參數和局部變量。線程總是在某個進程環境中創建的,而且它的整個壽命期都在該進程中。這意味著線程在它的進程地址空間中執行代碼,並且在進程的地址空間中對數據進行操作。因此,如果在單進程環境中,有兩個或多個線程正在運行,那麼這些線程將共享單個的地址空間。這些線程能夠執行相同的代碼,對相同的數據進行操作。這些線程還能共享內核對象句柄,因為句柄表依賴于每個進程而不是每個線程存在。可以預見,進程使用的系統資源會比線程多得多,因為進程需要更多的地址空間。為進程創建一個虛擬地址空間需要許多系統資源,系統中要保留大量的記錄,這要佔用大量的內存。另外,由于.exe和.dll文件要加載到一個地址空間,因此也需要文件資源。而線程使用的系統資源要少得多,實際上,線程只有一個內核對象和一個堆棧,保留的記錄很少,因此只需要很少的內存。線程用于描述進程中的運行路徑,每當進程被初始化時,系統就要創建一個主線程。對于許多應用程序來說,這個主線程是應用程序需要的唯一線程,不過,進程能夠創建更多的線程來幫助執行他們的操作。設計一個擁有多線程的應用程序,就會更充分地利用系統資源,擴大該應用程序的功能,比如,當你的計算機擁有兩個CPU時,你的應用程序中有兩個線程,那麼兩個CPU都將處于繁忙狀態,這就提高了程序運行的效率。

编辑推荐

《多核多線程技術》︰英特爾軟件學院系列課程培訓教材

图书封面




    多核多線程技術下載



用户评论 (总计6条)

 
 

  •     說是Intel教育學院教材,實際上內容非常粗糙簡單,在Intel工具庫沒有免費開放的現實,網上又找不到合適的資料時,把全部希望寄托在這本不靠譜的書上,簡直就是天大的玩笑!想知道並行開發的還不如買NVD的《大規模並行處理器編程實戰》或者《並行計算理論》這些書……簡直坑大發了!
  •     宣傳得太好了,實際內容很一般,不值得購買。有上當受騙的感覺
  •     內容比較少,但是很新。買了之後,現在看,居然漲價了︰)
  •     質量還說的過去,不過書不算厚,價錢感覺有點偏貴,可能跟內容有關吧,都是一些比較新而且不錯的內容
  •     書介紹的還是挺基礎的,作為教材正好。
  •     試驗很多,所以要準備好相應的平台和軟件。對多處理器和多線程的理論分析多在Linux角度,而試驗多在Win平台上面。教材整體還是不錯,不過在有的概念上面還是比較含糊。
 

計算機與互聯網 PDF免费下载,編程語言與程序設計PDF免费下载。 计算机教程网 

计算机教程网 @ 2018