多处理器和多核处理器的用途

问题描述

我确实想澄清我脑海中的事情并模拟具体的知识。双核一个处理器系统,一个进程内只能同时执行两个线程。单核有两个处理器系统,每个cpu可以执行两个不同的进程。 所以我们可以说,每个处理器都可以并发执行进程。而多核处理器并发执行进程内的线程?

解决方法

我认为您对进程和线程是什么以及它们与硬件本身的关系存在根本性的误解。

一个 CPU 内核每个时钟周期只能执行 1 条机器级指令(所以本质上,只有 1 条汇编指令)。 CPU 通常通过它们在一秒钟内经过的时钟周期数来衡量。因此,2.5 GHz 内核每秒可以执行 25 亿条指令。

操作系统(操作系统,如 Windows、Linux、macOS、Android、iOS 等)负责启动程序并授予它们对硬件资源的访问权限。每个程序都可以看作是一个“进程”。

每个进程可以启动多个线程。

为了确保多个进程可以共享相同的硬件资源,抢先计算的想法大约在 40 多年前就出现了。

简而言之,先发制人的计算或时间切片是操作系统的一项功能。它基本上为每个正在运行的线程提供几毫秒的时间,无论该线程属于哪个进程,并保留每个线程的“上下文”,以便在该线程的时间到时可以适当地处理每个线程的状态跑步;这也称为上下文切换。

双核、四核甚至 128 核 CPU 不会改变这一点,系统中的 CPU 数量也不会改变(例如,4 个 CPU,每个 CPU 具有 128 核)。每个内核每个时钟周期只能执行 1 条指令。

改变的是可以真正并行运行多少条指令。如果我的 CPU 有 16 个内核,那么这意味着它每个时钟周期可以执行 16 条指令,因此可以运行 16 个独立的执行线程而无需任何上下文切换(尽管它仍然会发生,但这是一个不同的问题)。

这不包括超线程,其中 1 个内核每个周期可以执行 2 条指令,本质上使您的 CPU 数量增加一倍,也不包括缓存未命中的想法或其他额外周期的低级想法可以花在一个线程上,但它涵盖了 CPU 调度的一般思想。