我正在阅读操作系统:内部和设计原则。在第10.1节“多处理器调度”中,作者介绍了一个同步粒度表,如下所示:
- 精细:单个指令流中固有的并行性
- 中:单个应用程序中的并行处理或多任务处理
- Coarse:在多道程序设计环境中对并发进程进行多处理
- 非常粗略:跨网络节点的分布式处理,以形成单个计算环境
- 独立:多个不相关的流程
他解释了这样的细粒度并行性:
与使用线程相比,细粒度并行性表示并行性的使用要复杂得多。尽管在高度并行的应用程序上已经做了很多工作,但到目前为止,这是一个专门的,零碎的领域,有许多不同的方法。
我可以理解中等粒度是关于线程和其他粒度,除了所谓的细粒度并行性。我在互联网上搜索并没有获得太多信息。那么请你为我澄清一下吗?一些例子真的会有所帮助。
提前致谢!
它是对所谓的指令级并行性的引用,它是可以从同一个线程并行执行的指令。
例如,如果你有两个指令,如
a = b*2
c = d+5
这些指令可以由处理器并行执行而没有任何问题,因为它们不以任何方式相互依赖。
另一方面,如果你有像这样的指示
a = b*2
c = a+5
在这种情况下,第二条指令取决于第一条指令,直到第一条指令的结果可用时才能处理。这是指令级并行性的限制因素,因为大多数指令依赖于其他指令。
与使用线程相比,细粒度并行性表示并行性的使用要复杂得多。
这是因为为了在同一个线程中识别独立指令,您必须能够查看指令管道,这不是一项简单的任务,需要特殊的硬件和编译器优化。
另一方面,线程级并行很容易,因为您知道来自两个不同线程的两条指令不可能相互依赖。