第1章 引論
1.1 為什麼要用並行體係結構
1.1.1 計算機應用發展的趨勢
1.1.2 微電子技術趨勢
1.1.3 體係結構趨勢
1.1.4 超級計算機
1.1.5 小結
1.2 並行體係結構的融閤
1.2.1 通信體係結構
1.2.2 共享地址空間
1.2.3 消息傳遞
1.2.4 融閤
1. 2.5 數據並行體係結構
1.2.6 其他並行體係結構
1.2.7 一個通用並行體係結構
1.3 基本的設計問題
1.3.1 通信抽象
1.3.2 編程模型的要求
1.3.3 通信和復製
1.3.4 性能
1.3.5 小結
1.4 結論
1.5 曆史資料
習題
第2章 並行程序
2.1 並行應用的案例分析
2.1.1 洋流的模擬
2.1.2星係演化的模擬
2.1.3 用光綫跟蹤法來實現復雜場景的可視化
2.1.4 針對關聯性的數據挖掘
1.2 並行化過程
2.2.1 程序並行化過程中的幾個步驟
2.2.2 計算並行和數據並行
2.2.3 並行化過程的目標
2.3 一個例子程序的並行化
2.3.1 方程求解器的內核
2.3.2 分解
2.3.3 分配
2.3.4 在數據並行模型下的協調
2.3.5 在共享地址空間模型下的協調
2.3.6 在消息傳遞模型下的協調
2.4 結論
習題
第3章 麵嚮性能的程序設計
3.1 劃分階段的性能問題
3.1.1 負載平衡和同步等待時間
3.1.2 減少固有的通信
3.1.3 減少額外的工作
3.1.4 小結
3.2 在多存儲器係統中的數據訪問和通信
3.2.1 看作擴展的存儲層次結構的多處理器係統
3.2.2 在擴展的存儲層次結構中的附加通信
3.2.3 用工作集的觀點看附加的通信和數據的復製
3.3 性能的協調
3.3.1 減少附加通信
3.3.2 將通信結構化以降低代價
3.4 從處理器角度看到的性能因素
3.5 並行應用程序案例的深入分析
3.5.1 Ocean
3.5.2 Bames-Hut
3.5.3 光綫跟蹤
3.5.4 數據挖掘
3.6 編程模型涉及的問題
3.6.1 命名
3.6.2 復製
3.6.3 通信的開銷和粒度
3.6.4 塊數據傳送
3.6.5 同步
3.6.6 硬件代價和設計復雜性
3.6.7 性能模型
3.6.6 小結
3.7 結論
習題
第4章 工作負載驅動的性能評價
4.1 改變工作負載和機器的規模
4.1.1 多處理器性能的基本測量
4.1.2 為什麼要考慮擴放性
4.1.3 擴放的關鍵問題
4.1.4 擴放模型和加速比的測量
4.1.5 擴放模型對方程求解器內核的影響
4.1.6 擴放工作負載參數
4.2 評價一颱實際的機器
4.2.1 使用微基準測試程序分離性能
4.2.2 選擇工作負載
4.2.3 評價一颱固定規模的機器
4.2.4 改變機器的規模
4.2.5 選擇性能指標
4.3 對一個體係結構概念或設計權衡的評估
4.3.1 多處理器的模擬
4.3.2 縮小模擬的問題和機器參女的規模
4.3.3 處理參數空間:評價舉例
4.3.4 小結
4.4 說明工作負載的特徵
4.4.1 工作負載案例分析
4.4.2 工作負載的特徵化
4.5 結論
習題
第5章 共享存儲的多處理器
5.1 高速緩存的一緻性
5.1.1 高速緩存一緻性問題
5.1.2 通過總綫偵聽的高速緩存一緻性
5.2 存儲同一性
5. 2. 1 順序同一性
5.2.2 保證順序同一性的充分條件
5.3 總綫偵聽協議的設計空間
5.3.1 一種三態(MSI)迴寫作廢式協議
5.3.2 一種四態(MESI)迴寫作廢式協議
5.3.3 一種四態(Dragon)迴寫更新式協議
5.4 關於協議設計中若乾摺中的評估
5.4.1 方法論
5.4.2 在MESI協議下的帶寬需求
5.4.3 協議優化的影響
5.4.4 高速緩存中存儲塊大小的權衡
5.4. 5 基於更新和基於作廢協議的對比
5.5 同步
5.5.1 同步事件的組成部分
5.5.2 用戶和係統的角色
5.5.3 互斥
5.5.4 點對點事件同步
5.5.5 全局(柵障)事件的同步
5.5.6 同步問題小結
5.6 對軟件的影響
5.7 結論
習題
第6章 基於偵聽的多處理器的設計
6.1 正確性需求
6.2 基礎設計:采用原子總綫的單級高速緩存
6.2.1 高速緩存控製器和標記的設計
6.2.2 偵聽結果的報告
6.2.3 對迴寫的處理
6.2.4 基礎係統組織
6.2. 5 非原子性的狀態轉移
6.2.6 串行化
6.2.7 死鎖
6.2.8 活鎖和挨餓
6.2.9 原子操作的實現
6.3 多級高速緩存層次結構
6.3.1 包含性的維護
6.3.2 在高速緩存層次結構中傳播一緻性的事務
6.4 事務拆分型總綫
6.4.1 事務拆分型總綫設計的一個例子
6.4.2 總綫設計和請求-響應的匹配
6.4.3 偵聽結果和衝突的請求
6.4.4 流控製
6.4.5 一次緩存撲空的路綫
6.4.6 串行化和順序同一性
6.4.7 其他設計選擇
6.4.8 帶有多級高速緩存的事務拆分型總綫
6.4.9 對一個處理器有多個待完成撲空的支持
6.5 實例分析:SGI Challenge 和Sun Enterprise 6000
6.5.1 SGI Powerpath-2係統總綫
6.5.2 SGI處理器和內存子係統
6.5.3 SGI I/O子係統
6.5.4 SGI Challenge內存係統性能
6.5.5 Sun Gigaplane係統總綫
6.5.6 Sun處理器和內存係統
6.5.7 Sun I/O子係統
6.5.8 Sun Enterprise內存係統性能
6.5.9 應用程序性能
6.6 高速緩存一緻性的擴充
6.6.1 共享緩存的設計
6.6.2 虛擬標引緩存的一緻性
6.6.3 轉換檢測緩衝器的一緻性
6.6.4 環上基於偵聽的高速緩存一緻性
6.6.5 在基於總綫的係統中的數據和偵聽帶寬的擴展
6.7 結論
習題
第7章 可擴展多處理器
7.1 可擴展性
7.1.1 帶寬的可擴展性
7.1.2 時延的可擴展性
7.1.3 成本的可擴展性
7.1.4 物理可擴展性
7.1.5 通用並行體係結構的可擴展性
7.2 編程模型的實現
7.2.1 基本的網絡事務
7.2.2 共享地址空間
7.2.3 消息傳遞
7.2.4 主動消息
7.2.5 共同的挑戰
7.2.6 通信體係結構設計空間
7.3 物理DMA
7.3.1 節點到網絡的接口
7.3.2 通信抽象的實現
7.3.3 案例分析:nCUBE/2
7.3.4 典型的局域網接口
7.4 用戶級訪問
7.4.1 節點到網絡的接口
7.4.2 案例分析:Thinking Machines CM-5
7. 4.3 用戶級的處理程序
7.5 專用消息處理
7.5.1 案例分析:Intel Paragon
7.5.2 案例分析:Meiko CS-2
7.6 共享的物理地址空間
7.6.1 案例分析:CRAY T3D
7.6.2 案例分析:CRAY T3E
7.6.3 小結
7.7 工作站機群和工作站網絡
7.7.1 案例分析:Myrinet SBUS Lanai
7.7.2 案例分析:PCI存儲器通道
7.8 並行軟件涉及的問題
7.8.1 網絡事務的性能
7.8.2 共享地址空間操作
7.8.3 消息傳遞操作
7.8.4 應用層性能
7.9 同步
7.9.1 加鎖算法
7.9.2 柵障算法
7.10 結論
習題
第8章 基於目錄的高速緩存一緻性
8.1 可擴展的高速緩存一緻性
8.2 基於目錄方法概述
8.2.1 簡單目錄方案的操作
8.2.2 可擴展性
8.2.3 組織目錄錶的其他方法
8.3 目錄協議和摺中的評價
8.3.1 目錄方案的數據共享模式
8.3.2 本地和遠程通信流量
8.3.3 高速緩存塊尺寸的影響
8.4 目錄協議設計上的挑戰性問題
8.4.1 性能
8.4.2 正確性
8.5 基於存儲器的目錄協議:SGI的Origin係統
8.5.1 高速緩存一緻性協議
8.5.2 關於正確性問題
8.5.3 目錄結構的細節
8.5.4 協議擴展
8.5.5 Origin2000硬件概述
8.5.6 Hub的實現
8.5.7 性能特徵
8.6 基於高速緩存的目錄協議:Sequent的NUMA-Q
8.6.1 高速緩存一緻性協議
8.6.2 關於正確性問題
8.6.3 協議擴展
8. 6.4 NUMA-Q硬件一覽
8.6.5 協議和SMP節點的交互
8.6.6 IQ鏈路的實現
8.6.7 性能特徵
8.6.8 對比案例分析:HAL S1多處理器
8.7 性能參數和協議性能
8.8 同步
8.8.1 幾種同步算法的性能
8.8.2 實現原子性原語
8.9 對並行軟件的影響
8.10 高級論題
8.10.1 減少目錄存儲的開銷
8.10.2 層次式的一緻性
8.11 結論
習題
第9章 硬件/軟件功能的摺中
9.1 放鬆的存儲同一性模型
9.1.1 係統規範說明
9.1.2 程序員接口
9.1.3 翻譯機製
9.1.4 真實的多處理器係統中的同一性模型
9.2 剋服容量限製
9.2.1 第三層高速緩存
9.2.2 惟有高速續存的存儲器體係結構
9.3 降低硬件成本
9.3.1 具有去耦輔助部件的硬件訪問控製
9.3.2 通過代碼修改實現的訪問控製
9.3.3 基於頁麵的訪問控製:共享虛擬存儲器
9.3.4 語言和編譯器支持的訪問控製
9.4 綜閤:分類和簡單的COMA
9.4.1 綜閤:簡單的COMA和Stache
9.5 對並行軟件的影響
9.6 高級論題
9.6.1 靈活性和CC-NUMA係統中的地址約束
9.6.2 以軟件實現放鬆的存儲同一性
9.7 結論
習題
第10章 互連網絡設計
10.1 基本定義
10.2 基本的通信性能
10.2.1 時延
10.2.2 帶寬
10.3 組織結構
10.3.1 鏈路
10.3.2 交換機
10.3.3 網絡接口
10.4 互連拓撲結構
10.4.1 全連接網絡
10.4.2 綫性陣列和環
10.4.3 多維網格和多維花環
10.4.4 樹
10.4. 5 蝶網
10.4.6 超立方體
10.5 對網絡拓撲設計摺中的評價
10.5.1 無負載時延
10.5.2 負載情況下的時延
10. 6 路由
10.6.1 路由機製
10.6.2 確定性路由
10.6.3 免死鎖
10.6.4 虛通道
10.6.5 上行-下行路由
10.6.6 摺轉模型路由
10.6.7 自適應路由
10.7 交換機的設計
10.7.1 端口
10.7.2 內部數據通路
10.7.3 通道緩衝
10.7.4 輸齣調度
10.7.5 堆疊式維度交換機
10.8 流控
10.8.1 並行計算機網絡與局域網、廣域網的對照
10.8.2 鏈路級的流控
10.8.3 端到端的流控
10.9 案例分析
10.9.1 CRAY T3D網絡
10.9.2 IBM SP-1、SP-2網絡
10.9.3 可擴展一緻性接口
10.9.4 SCI的Origin網
10.9.5 Myricom網絡
10.10 結論
習題
第11章 時延的包容
11.1 時延包容技術概述
11.1.1 時延包容與通信流水綫
11.1.2 采用技術
11.1.3 基本要求、優點與局限性
11.2 顯式消息傳遞中的時延包容
11.2.1 通信結構
11.2.2 塊數據傳送
11.2.3 預通信
11. 2.4 跨越同一綫程中的通信
11.2.5 多綫程技術
11.3 共享地址空間中的時延包容
11.4 共享地址空間中的數據成塊傳送
11.4.1 技術和機製
11.4.2 策略問題和摺衷方案
11.4.3 性能收益
11.5 跨越長時延事件
11.5.1 跨越寫操作
11.5.2 跨越讀操作
11.5.3 小結
11.6 共享地址空間中的預通信
11.6.1 沒有共享數據高速緩存的共享地址空間
11.6.2 緩存一緻的共享地址空間
11.6.3 性能收益
11.6.4 小結
11.7 共享地址空間中的多綫程技術
11.7.1 技術和機製
11.7.2 性能收益
11.7.3 阻塞方式的實現問題
11.7.4 交替方式的實現問題
11.7.5 在多發布處理器中集成多綫程
11.8 免鎖定的緩存設計
11.9 結論
習題
第12章 將來的發展方嚮
12.1 技術與體係結構
12.1.1 演變趨勢
12.1.2 遇到的阻礙
12.1.3 潛在的突破
12.2 應用程序和係統軟件
12.2.1 演變趨勢
12.2.2 遇到的睏難
12.2.3 潛在的突破
附錄 並行基準測試程序集
參考文獻
索引
· · · · · · (
收起)