发展动力
未来需求——性能需求永远无法终止;
杀手应用:
![v2-6f9978ef0c5a778f5ed00e3d203c371c_b.jpg](https://img-blog.csdnimg.cn/img_convert/285833bf48f33357bab4b252cae09df0.png)
线延迟:如果串行达到1Tflop/s,芯片大小不能超过1.3mm,每个字约占3平方埃,或一个小原子的大小;
发热问题:
![v2-2696aeab2e62f93651f9026077a61fbc_b.jpg](https://img-blog.csdnimg.cn/img_convert/8f4f296ce176266c8b88b2b4013b9147.png)
漏电流:
![v2-70ec9131bdbd061daccc74efaa3e1824_b.jpg](https://img-blog.csdnimg.cn/img_convert/500df67f0dca3a693ef73d559af08e8c.png)
制造成本:摩尔第二定律
![v2-26c04c861a25b4d5fdd03ea2d2cd3ba8_b.jpg](https://img-blog.csdnimg.cn/img_convert/ead888b3bae314e9afee46810dde2d70.png)
摩尔定律:
![v2-f154a450df46b080525dfc4ab1e32c41_b.jpg](https://img-blog.csdnimg.cn/img_convert/35d3eb72906820046e2e8e667110ae7a.png)
提高性能的手段:提高时钟频率;执行优化指令级并行(ILP);
![v2-f8ec3e8636642c97c706f9b8a2fa8652_b.jpg](https://img-blog.csdnimg.cn/img_convert/20f80837a3d8de022319f48d653ec239.png)
线程级并行(TLP)
![v2-a5ceb87d380237ea16be67206f841cf6_b.jpg](https://img-blog.csdnimg.cn/img_convert/e554ead7b793681423ec819dcbd0c75a.png)
同步多线程(SMT)--英特尔超线程:提供更多的资源-执行上下文(context),如果遇到访存长延迟,可以立刻利用空闲资源;
![v2-05572a5fa62652f44b5b13326e0cf35d_b.jpg](https://img-blog.csdnimg.cn/img_convert/33fbd6ff320958fd20f879a424117491.png)
芯片多处理(CMP)--多核处理器:
减少了资源竞争关系--同时使用资源;
![v2-8ad5dadbc836517e090346a3f8beac58_b.jpg](https://img-blog.csdnimg.cn/img_convert/eff4930048dcffe4dc39a92d2d18d070.png)
需要显式多线程编程;
并发与并行:
并发:单个处理器运行多个进程
![v2-bbbd8799fba5ff55996ed84f81251111_b.png](https://img-blog.csdnimg.cn/img_convert/123a6bcb47424fb0e94fd9a4bdb80ef4.png)
并行:
![v2-08562486582bb9ff3afe30d97c33ea5b_b.png](https://img-blog.csdnimg.cn/img_convert/a5fb55401a111453bc88a73ad5582f40.png)
结构
基本思路:
- 使用更多晶体管增加更多简单的核,而不是增加处理器复杂度;
- SIMD思路:单指令多数据,减少指令流调度的开销;
![v2-406ef587a5faa8fbb8b0f1cebddbf8bb_b.jpg](https://img-blog.csdnimg.cn/img_convert/263758fe570cb0f36f9acbef2a782dcf.png)
![v2-4e65b5d2e7c844565196dc7a3be079e8_b.jpg](https://img-blog.csdnimg.cn/img_convert/ab69de50f514842ed01c3ef3642c762c.png)
![v2-a1da662a62354f0d21bcbdc57091d5d4_b.jpg](https://img-blog.csdnimg.cn/img_convert/d3b82a8001adebb6322d0cd13bcf7ce6.png)
![v2-f279c89a28a94c35c7f7193b06abb717_b.jpg](https://img-blog.csdnimg.cn/img_convert/e56046e62572f1bd21a400de68ee7a52.png)
CPU:
- Big Caches;
- Few Threads;
- 依赖于Cache和预取(Prefeching);
GPU
- Small Caches;
- Many Threads;
- 依赖于多线程;
现代处理器
- 采用更多核心(简单的核心):支持线程级并行而不是指令集并行;
- 将指令流处理分配在多个ALU(SIMD):以很少的额外成本增加计算能力;
- 使用多线程更有效地利用处理资源(隐藏延迟,填充所有可用资源);
编程
挑战--Where are the threads?
- 让程序员写线程程序--困惑
- 自动并行化--不可能,但可以改进
- 使用线程模块;
硬件支持:
- 推断都线程
- 数据驱动的推断
- 硬件线程支持--轻量级同步
事务存储器
解决数据同步问题。
两个事务要具有原子性:
- 记录对变量的操作(Cache),将中间数据保存在缓冲区;
- 确保没有数据冲突(Cache coherence):恢复状态;提交状态(Processor&caches);
IBM X10
对多核系统和集群系统提供统一的支持
高生产率:
- 语言设计注重可以执行和安全性
性能:
- 扩展了Java虚拟机
- 提供手工性能调整手段
在Java语言基础上开发
- 继承了Java语言的核心价值--高生产率,可移植性,成熟,安全
![v2-04aeac98dbef4534226dc46e3daf52ab_b.jpg](https://img-blog.csdnimg.cn/img_convert/7bd770e43436651f278bafa844b9370d.png)
推测多线程:
没有数据依赖关系的代码段可以提前执行;
![v2-3f2ae9ce83b9e976374d8e20ad512821_b.jpg](https://img-blog.csdnimg.cn/img_convert/c0c1591d91ce73c8a1c3dc82d5adf2c4.png)
定位程序中可以有效并行执行的部分
- 预计算片具有较低的计算开销
- 工作负载平衡,A与B差别不应太大
预计算片的低开销
内存层次结构中的缓冲和多版本控制
- 缓冲将保持推测状态,直到线程被验证并可以提交;
- 多版本控制允许每个变量对并行运行的每个线程有不同的值;
快速检查数据依赖的错误推测