java并发 - 指令级并行(ILP)用于发动机罩

时间:2016-09-02 09:21:54

标签: java multithreading concurrency instruction-set happens-before

Java或某些类似语言中的并发是通过线程或任务级并行来实现的。但在引擎盖下,硬件或运行时间也使用ILP来实现最佳性能 进一步细化:在多核处理器(比如每个系统4个)中有多个线程(比如说每个核心2个)(即每个系统总共8个线程),java线程在几个(本例中为8个)处理器之一中执行线程。但是,如果系统确定所有或几个其他线程除了保持理想之外什么都不做,那么硬件或运行时是否可以执行任何合法的重新排序并在相同或其他内核上的其他线程中执行它们并将结果取回(或者返回到main)内存)
我很担心java实现是否允许这样做,甚至是硬件也可以独立处理这个问题,即使JVM甚至知​​道任何事情也是如此。

1 个答案:

答案 0 :(得分:2)

有点不清楚你在问什么,但我认为它与Java没什么关系。

我认为你在谈论(至少)两件事:

  1. “ILP”通常用于指代在单个核心内发生的一组技术(例如流水线和分支预测),并且与线程或多核无关。这些技术是CPU的透明实现细节,通常不会以您(或运行时)可以直接与之交互的方式公开。

  2. 如果内核调度程序被阻塞(即使它们没有,为了确保公平性),内核调度程序会在内核上交换线程。