C++多核高級編程

出版時間:2010年4月第1版  出版社:清華大學出版社  作者:Cameron Hughes,Tracey Hughes  頁數(shù):561  譯者:齊寧,董澤惠  
Tag標簽:無  

前言

  多核革命即將到來。并行處理不再是超級計算機或集群的專屬領(lǐng)域,入門級服務(wù)器乃至基本的開發(fā)工作站都擁有硬件級和軟件級并行處理的能力。問題是這對于軟件開發(fā)人員意味著什么?對軟件開發(fā)過程會有怎樣的影響?在誰擁有速度最快的計算機的競爭中,芯片生產(chǎn)商更傾向于在單獨的芯片上放置多個處理器,而不是提高處理器的速度。迄今為止,軟件開發(fā)人員尚能依賴于新的處理器,在不對軟件做出任何實際改進的情況下提高軟件的速度,但是這樣的情況將成為過去。為了提高總體系統(tǒng)性能,計算機供應(yīng)商已經(jīng)決定增加更多的處理器,而不是提高時鐘頻率。這意味著如果軟件開發(fā)人員希望應(yīng)用程序從下一個新的處理器受益,就必須對應(yīng)用程序進行修改以利用多處理器計算機。  盡管順序編程和單核應(yīng)用程序開發(fā)仍會有一席之地,但軟件開發(fā)將向多線程和多進程轉(zhuǎn)變。曾經(jīng)僅被理論計算機科學家和大學學術(shù)界所關(guān)注的并行編程技術(shù),現(xiàn)在正處于為大多數(shù)人所接受的過程中。多核應(yīng)用程序設(shè)計和開發(fā)的思想如今成為人們關(guān)注的主流。  學習多核編程  本書使用一般軟件開發(fā)人員能夠理解的術(shù)語介紹多核編程的基本知識。為讀者介紹了為多處理器和多線程體系結(jié)構(gòu)進行編程的基礎(chǔ)知識,對并行處理和軟件并發(fā)的概念進行了實用的介紹。本書介紹的是深奧的、不易理解的并行編程技術(shù),但將使用一種簡單、可理解的方式來介紹它們。我們介紹了并發(fā)編程和同步的缺陷與陷阱以及應(yīng)對之策,對多處理和多線程模型進行了直截了當?shù)挠懻?。本書提供了大量的編程實例,示范了如何實現(xiàn)成功的多核編程。本書還包含了調(diào)試及測試多核編程的方法與技術(shù)。最后,我們示范了如何使用跨平臺技術(shù)來利用處理器的具體特性?! 〔煌囊暯恰 ”緯膬?nèi)容是為對多核編程和應(yīng)用程序開發(fā)有著不同切入點的廣大讀者設(shè)計的。本書的讀者包含但不限于:  ·庫及工具制作人員  ·操作系統(tǒng)程序員  ·內(nèi)核開發(fā)人員  ·數(shù)據(jù)庫服務(wù)器及應(yīng)用服務(wù)器的設(shè)計人員及實現(xiàn)人員  ·科學應(yīng)用程序員以及使用計算密集型應(yīng)用程序的用戶  ·應(yīng)用程序開發(fā)人員  ·系統(tǒng)程序員  每組人員都會從不同的視角來了解多核計算機。有些人關(guān)心的是使用自底向上的方法,需要開發(fā)利用特定硬件和特定供應(yīng)商的特性的軟件。對于上述人員而言,他們希望更加詳盡地介紹多線程處理的知識。其他人員可能對自頂向下的方法感興趣,他們不希望為并發(fā)任務(wù)同步或線程安全的細節(jié)費心,而是傾向于使用高級庫和工具來完成工作。還有一些人需要混合使用自底向上和自頂向下的方法。本書提供了對多核編程的多種視角的介紹,涵蓋了自底向上和自頂向下的方法?! 〗鉀Q方案是多范型方法  首先,我們承認不是每個軟件解決方案都需要多處理或多線程。有些軟件解決方案通過使用順序編程技術(shù)能夠更好地實現(xiàn)(即使目標平臺是多核的)。我們的方法是以解決方案和模型作為驅(qū)動。首先,針對問題開發(fā)出模型或解決方案。如果解決方案要求某些指令、過程或任務(wù)并發(fā)地執(zhí)行,那么就決定了最好使用哪組技術(shù)。這個方法同強迫解決方案或模型去適合一些預先選擇的庫或開發(fā)工具的方法相反。技術(shù)應(yīng)當遵從解決方案。盡管本書討論庫和開發(fā)工具,但并不偏向任何具體生產(chǎn)商庫或工具集。盡管書中包含了利用特定硬件平臺的實例,但我們依賴跨平臺方法,使用POSIX標準操作系統(tǒng)調(diào)用和庫,并且僅使用國際化C++標準所支持的C++特性?! ∶鎸Χ嗵幚砗投嗑€程中的挑戰(zhàn)和障礙,我們倡導組件方法。主要的目的是利用框架類作為并發(fā)的構(gòu)建塊??蚣茴惐幻嫦?qū)ο蠡コ饬?mutex)、信號量(semaphore)、管道(pipe)、隊列(queue)和套接字(socket)所支持。通過使用接口類,顯著降低了任務(wù)同步和通信的復雜度。在我們的多線程和多處理應(yīng)用程序中,控制機制主要是agent驅(qū)動。這意味著在本書中,您將看到應(yīng)用程序架構(gòu)支持軟件開發(fā)的多范型(multiple-paradigm)方法?! ∥覀儗M件實現(xiàn)使用面向?qū)ο缶幊碳夹g(shù),對控制機制主要使用面向agent編程技術(shù)。面向agent編程的思想有時被邏輯編程技術(shù)支持。隨著處理器上可用內(nèi)核數(shù)目的增加,軟件開發(fā)模型將會越發(fā)地依賴面向agent編程和邏輯編程。本書包含了對軟件開發(fā)的這種多范型方法的簡介。

內(nèi)容概要

為了提高系統(tǒng)總體性能,計算機廠商已經(jīng)選擇增加更多的處理器,而不是提高時鐘頻率。相應(yīng)地,如果您希望應(yīng)用程序能夠通過使用下一代處理器提高性能,就必須為了利用多處理器計算機而對應(yīng)用程序進行改寫。這本非常實用的書教讀者如何從順序編程技術(shù)轉(zhuǎn)移到并行和多線程編程技術(shù),同時介紹了為多處理器和多線程架構(gòu)編程的所有必備知識。    本書的兩位作者具有豐富的經(jīng)驗,雖然是并行處理和軟件并發(fā)這些復雜的主題,但是采用了清晰、易于理解的方式來講述它們。通過他們進行多處理和多線程模型編程的實際方法,借助大量有用的實例,演示如何成功地完成多核編程,從而使讀者能夠充分利用新一代多核處理器的能力。    本書主要內(nèi)容    并發(fā)編程和同步帶來的各種缺陷、陷阱和挑戰(zhàn)    調(diào)試和測試多核編程的方法與技術(shù)    如何使川跨下臺技術(shù)米利用處理器的特定特性    操作系統(tǒng)在多核編程中的任務(wù)    將框架類作為并發(fā)構(gòu)建塊加以利用的方法    如何通過使用接口類宋降低任務(wù)同步和通信的復雜性    本書適合于希望從事多核編程和多核應(yīng)用程序開發(fā)的開發(fā)人員

作者簡介

Cameron Hughes是一名專業(yè)的軟件開發(fā)人員。他是CTEST實驗室的軟件工程師,同時還是Youngstown州立大學的編程人員/分析師。Cameron Hughes有著超過15年的軟件開發(fā)經(jīng)驗,參與過各種規(guī)模的軟件開發(fā)工作,從商業(yè)和工業(yè)應(yīng)用到航空設(shè)計和開發(fā)項目。Cameron是Cognopaedia的設(shè)計者,

書籍目錄

第1章 新的體系結(jié)構(gòu)   1.1 什么是多核   1.2 多核體系結(jié)構(gòu)   1.3 軟件開發(fā)人員眼中的多核體系結(jié)構(gòu)   1.4 總線連接   1.5 從單核到多核   1.6 小結(jié) 第2章 4種有影響的多核設(shè)計   2.1 AMD Multicore Opteron   2.2 Sun UltraSparc T1 多處理器   2.3 IBM Cell Broadband Engine   2.4 Intel Core 2 Duo處理器   2.5 小結(jié) 第3章 多核編程的挑戰(zhàn)   3.1 什么是順序模型   3.2 什么是并發(fā)   3.3 軟件開發(fā)   3.4 C++開發(fā)人員必須學習新的庫   3.5 處理器架構(gòu)的挑戰(zhàn)   3.6 小結(jié) 第4章 操作系統(tǒng)的任務(wù)   4.1 操作系統(tǒng)扮演什么角色   4.2 分解以及操作系統(tǒng)的任務(wù)   4.3 隱藏操作系統(tǒng)的任務(wù)   4.4 小結(jié) 第5章 進程、C++接口類和謂詞   5.1 多核是指多處理器   5.2 什么是進程   5.3 為什么是進程而不是線程   5.4 使用posix_spawn( )   5.5 哪個是父進程,哪個是子進程   5.6 對進程的詳細討論   5.7 使用ps實用工具監(jiān)視進程   5.8 設(shè)置和獲得進程優(yōu)先級   5.9 什么是上下文切換   5.10 進程創(chuàng)建中的活動   5.11 進程環(huán)境變量的使用   5.12 使用system( )生成新的進程   5.13 刪除進程   5.14 進程資源   5.15 異步進程和同步進程   5.16 wait( )函數(shù)調(diào)用   5.17 謂詞、進程和接口類   5.18 小結(jié) 第6章 多線程   6.1 什么是線程   6.2 線程和進程的比較   6.3 設(shè)置線程屬性   6.4 線程的結(jié)構(gòu)   6.5 簡單的線程程序   6.6 創(chuàng)建線程   6.7 管理線程   6.8 擴展線程接口類   6.9 小結(jié) 第7章 并發(fā)任務(wù)的通信和同步   7.1 通信和同步   7.2 對并發(fā)進行同步   7.3 線程策略方法   7.4 工作的分解和封裝   7.5 小結(jié) 第8章 PADL和PBS:應(yīng)用程序設(shè)計方法   8.1 為大規(guī)模多核處理器設(shè)計應(yīng)用程序   8.2 什么是PADL   8.3 謂詞分解結(jié)構(gòu)   8.4 小結(jié) 第9章 對要求并發(fā)的軟件系統(tǒng)進行建模   9.1 統(tǒng)一建模語言   9.2 對系統(tǒng)的結(jié)構(gòu)進行建模   9.3 UML與并發(fā)行為   9.4 整個系統(tǒng)的可視化   9.5 小結(jié) 第10章 并行程序的測試和邏輯容錯   10.1 能否跳過測試   10.2 測試中必須檢查的5個并發(fā)挑戰(zhàn)   10.3 失效:缺陷與故障導致的結(jié)果   10.4 如何對并行程序?qū)崿F(xiàn)缺陷排除   10.5 什么是標準軟件工程測試   10.6 小結(jié) 附錄A 并發(fā)設(shè)計使用的UML 附錄B 并發(fā)模型 附錄C 線程管理的POSIX標準 附錄D 進程管理的POSIX標準

章節(jié)摘錄

  除了CPU外,主板上最重要的部件是芯片組(chipset)。在圖2-8中,芯片組是被設(shè)計為連接CPU和主板上其他部件的一組集成電路。它是主板的集成部分,因此不能被移走或升級。它用于和特定類別的CPU或CPU系列共同工作,以優(yōu)化CPU性能和系統(tǒng)性能。芯片組將數(shù)據(jù)在CPU和主板上其他部件之間來回移動,這些部件包括內(nèi)存、顯卡、I/O設(shè)備,如圖2.8所示。所有到CPU的通信都經(jīng)由芯片組。  芯片組由兩個芯片組成:北橋(Northbridge)和南橋(southbridge)。之所以如此命名它們,是由芯片在主板上的位置以及它們的用途決定。北橋位于北部區(qū)域,南橋位于南部區(qū)域。兩者都是作為設(shè)備之間的橋梁或連接,它們?yōu)椴考峁蚪樱源_保數(shù)據(jù)到達期望的位置?!  け睒颍脖环Q為內(nèi)存控制中心(memory controller hub),直接通過前端總線(FSB)與CPU通信。它將CPIJ同高速設(shè)備連接起來,如主存。它還通過一條內(nèi)部總線將CPU同PCI.E插槽及南橋連接起來。數(shù)據(jù)在到達南橋之前,首先要經(jīng)過北橋?!  つ蠘?,也被稱為I/O控制器,它的速度要比北橋慢。由于它不是直接連接到CPU,因此它負責主板上較慢的部分,如音頻、磁盤接口等I/O設(shè)備。南橋通過串行外設(shè)接口(Serial Peripheral Interface,SPI)、6個PCI-E插槽、圖中未顯示的其他I/O設(shè)備連接到BIOS支持。SPI使用主從配置來允許南橋與BIOS支持之間的數(shù)據(jù)交換(每次1比特)。它使用全雙工方式,意味著數(shù)據(jù)可以雙向傳送?! ?.4.2 InteI的PCI Express  PCI.E或PCI Express是計算機擴展卡接口。該插槽是作為在主板上與聲卡、顯卡和網(wǎng)卡的串行連接。串行連接速度較慢,每次發(fā)送1比特。PCI-E是高速串行連接,其工作方式更像是網(wǎng)絡(luò),而不是總線。它使用一個開關(guān)來控制很多被稱為lane的點到點的全雙工f同時雙向通信)串行連接。每個插槽可以有4、8或16個lane。每個lane有兩對從開關(guān)到設(shè)備的線,一對發(fā)送數(shù)據(jù),一對接收數(shù)據(jù)。這決定了數(shù)據(jù)的傳送速度。這些lane從開關(guān)直接扇出到數(shù)據(jù)要去的設(shè)備。PCI-E是PCI的替代產(chǎn)品,并且提供了更多的帶寬。設(shè)備不共享帶寬。加速圖形端口(Accelera,ted Graphics Port,AGP)被PCI.E x16(16 lane)插槽所替代,它能夠提供更高的數(shù)據(jù)傳送速度(8GB/s)。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    C++多核高級編程 PDF格式下載


用戶評論 (總計14條)

 
 

  •   多核多線程編程的極佳的參考書
  •   多核編程也是一個領(lǐng)域,我也很想了解,這本書可以達到目的
  •   多線程寫的好,但沒寫透,看了還是沒明白。。。
  •   這本書就是我想要知道和學習的知識。
  •   內(nèi)容豐富,值得學習!
  •   好強大!
  •   朋友強烈推薦買的
  •   沒有成體系的知識,雖然很厚,但有價值的東西不多,我就看到一個注意點,
    那就是多核CPU中的“偽共享“,不值得。
  •   前面概括的還可以,后面內(nèi)容一蹋糊途.
  •   好書 內(nèi)容翔實
  •   一般,翻譯的語言比較晦澀
  •   書應(yīng)該還不錯的
  •   書很厚,貨真價實,值得閱讀
  •   不錯,慢慢看?。。〔诲e,慢慢看?。?!
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7