java 并发性 - 指令级并行 (ILP) 是否在底层使用
java concurrency - Is Instruction Level Parallelism(ILP) used underhood
Java 或一些类似语言的并发是通过线程或任务级并行实现的。但在引擎盖下,硬件或 运行 时间也使用 ILP 来实现最佳性能。
进一步阐述:在具有多个线程(比如每个内核 2 个)(即每个系统总共 8 个线程)的多核处理器(比如每个系统 4 个)中,一个 java 线程在几个(8 in本例)处理器线程。但是如果系统确定所有或几个其他线程除了保持理想状态什么都不做,硬件或 运行 时间是否可以进行任何合法的重新排序并在相同或其他内核的其他线程中执行它们并取回结果(或进入主内存)
我很担心 java 实现是否允许这样做,或者即使 JVM 不知道任何事情,硬件也可以独立处理这个问题。
有点不清楚你在问什么,但我认为这与Java没有太大关系。
我认为您(至少)在谈论两件不同的事情:
"ILP"一般用来指代出现在单核内的一组技术(如流水线和分支预测),与线程或多核关系不大核。这些技术是 CPU 的透明实现细节,通常不会以您(或运行时)可以直接交互的方式公开。
如果线程被阻塞,内核调度程序会在内核上和内核外交换线程(即使没有,以确保公平)。
Java 或一些类似语言的并发是通过线程或任务级并行实现的。但在引擎盖下,硬件或 运行 时间也使用 ILP 来实现最佳性能。
进一步阐述:在具有多个线程(比如每个内核 2 个)(即每个系统总共 8 个线程)的多核处理器(比如每个系统 4 个)中,一个 java 线程在几个(8 in本例)处理器线程。但是如果系统确定所有或几个其他线程除了保持理想状态什么都不做,硬件或 运行 时间是否可以进行任何合法的重新排序并在相同或其他内核的其他线程中执行它们并取回结果(或进入主内存)
我很担心 java 实现是否允许这样做,或者即使 JVM 不知道任何事情,硬件也可以独立处理这个问题。
有点不清楚你在问什么,但我认为这与Java没有太大关系。
我认为您(至少)在谈论两件不同的事情:
"ILP"一般用来指代出现在单核内的一组技术(如流水线和分支预测),与线程或多核关系不大核。这些技术是 CPU 的透明实现细节,通常不会以您(或运行时)可以直接交互的方式公开。
如果线程被阻塞,内核调度程序会在内核上和内核外交换线程(即使没有,以确保公平)。