Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 什么软件可以充分利用超线程?_Multithreading_Performance_Operating System_Cpu Architecture_Hyperthreading - Fatal编程技术网

Multithreading 什么软件可以充分利用超线程?

Multithreading 什么软件可以充分利用超线程?,multithreading,performance,operating-system,cpu-architecture,hyperthreading,Multithreading,Performance,Operating System,Cpu Architecture,Hyperthreading,我想知道什么软件必须充分利用超线程?比如说,我有4个物理内核的英特尔cpu。通过超线程技术,cpu似乎有8个内核到支持HT技术的操作系统,这意味着操作系统可以将两个独立的线程寻址到一个内核。这意味着cpu可以为每个核心运行8个线程的100%并行控制,分为2个线程?但是,单个内核是否可以有多个程序计数器 因此,如果上面这句话是真的,那就意味着要充分利用带有HTT的4核cpu,软件必须至少有8个编程控制线程?一个内核一次只能运行一个线程。但是,在运行该线程时,当它等待某件事情时,可能会进入空闲时间

我想知道什么软件必须充分利用超线程?比如说,我有4个物理内核的英特尔cpu。通过超线程技术,cpu似乎有8个内核到支持HT技术的操作系统,这意味着操作系统可以将两个独立的线程寻址到一个内核。这意味着cpu可以为每个核心运行8个线程的100%并行控制,分为2个线程?但是,单个内核是否可以有多个程序计数器



因此,如果上面这句话是真的,那就意味着要充分利用带有HTT的4核cpu,软件必须至少有8个编程控制线程?

一个内核一次只能运行一个线程。但是,在运行该线程时,当它等待某件事情时,可能会进入空闲时间,例如从RAM加载代码或数据(RAM比CPU慢得多),或者等待特定电路(FPU)的计算。触发调度程序不是一个选项,因为它需要一个(与RAM相比)非常慢的上下文切换。使用HT,它将切换到第二个准备好的线程,而不是等待


一个内核如何具有多个程序计数器?嗯,它只有两组所有寄存器。

如果有什么不清楚的地方,请要求澄清,但不要无缘无故地投反对票……我没有投反对票,但问题不清楚-为什么一个操作系统可以同时有8个不同的线程(甚至可能来自8个不同的进程)?嗯,我所说的软件不是操作系统,而是应用程序(Photoshop、Chrome、firefox…),所以为了最大限度地提高性能和cpu工作,这些应用程序至少需要8个线程?为了最大限度地提高性能-是的,假设它们可以并行化(不是所有东西都可以)。对于整体系统性能-只运行8个应用程序我不太明白您所说的“触发调度程序不是一个选项,因为它需要一个(与RAM相比)非常慢的上下文切换”是什么意思您的意思是上下文切换比将数据从RAM加载到缓存然后再加载到寄存器慢吗?您知道每个操作需要多少时间吗?上下文开关:1毫秒,访问RAM;100ns???+将其加载到缓存的额外时间访问RAM的成本高达其频率的反转,因此它具有1066 MHz,所需时间不到1µs。上下文切换需要数千个周期(根据需要约4900个周期),这将在5 GHz内核上产生1µs,在较慢的内核上相应地产生更多周期。