21

我知道这个问题只是部分与编程相关,因为我想得到的答案最初来自这两个问题:

为什么 CPU 内核数量如此之低(与 GPU 相比)?为什么我们不使用 GPU 而不是 CPU、仅使用 GPU 或仅使用 CPU?(我知道 GPU 是专门的,而 CPU 则更多地用于多任务等)。我也知道存在内存(主机与 GPU)限制以及精度和缓存能力。但是,在硬件比较方面,高端到高端 CPU/GPU 比较 GPU 的性能要高得多。

所以我的问题是:我们能否在操作系统、应用程序等中使用 GPU 而不是 CPU

我问这个问题的原因是因为我想知道为什么当前的计算机仍然使用 2 个主处理单元 (CPU/GPU) 和两个主内存和缓存系统 (CPU/GPU),即使它不是一个程序员愿意。

4

4 回答 4

16

当前的 GPU 缺乏现代 CPU 的许多功能,这些功能通常被认为对操作系统之类的东西很重要(真的很重要)。

例如,操作系统通常使用虚拟内存和分页来管理进程。分页允许操作系统为每个进程提供自己的地址空间,(几乎)与其他所有进程完全隔离。至少根据公开可用的信息,大多数 GPU 根本不支持分页(或者至少不支持操作系统所需的方式)。

GPU 的时钟速度也比 CPU 低得多。因此,它们为令人尴尬的并行问题提供高性能。CPU 通常为单线程代码提供更高的性能。操作系统中的大多数代码都不是高度并行的——事实上,很多代码都很难实现并行(例如,多年来,Linux 有一个巨大的锁来确保只有一个线程执行大多数内核代码)任何给定时间)。对于此类任务,GPU 不太可能提供任何好处。

从编程的角度来看,GPU 是喜忧参半(充其量)。人们花了数年时间研究编程模型,以使 GPU 编程更加理智,即便如此,它(通常)比 CPU 编程要困难得多。考虑到即使是相对微不足道的事情也很难在 GPU 上正常运行,我无法想象尝试编写任何接近于像操作系统一样大和复杂的东西来在 GPU 上运行。

于 2012-06-12T22:32:46.187 回答
14

GPU 是为与图形相关的处理而设计的(显然),这本质上是从并行处理(一次执行多个任务/计算)中受益的东西。这意味着,与您可能知道的通常具有 2-8 个内核的现代 CPU 不同,GPU 具有数百个内核。这意味着它们特别适合处理光线追踪或您在 3D 游戏或其他图形密集型活动中可能遇到的任何其他事情。

另一方面,CPU 的内核数量相对有限,因为 CPU 面临的任务通常不会像渲染 3D 场景那样从并行处理中受益。事实上,CPU 中的内核过多实际上会降低机器的性能,因为 CPU 通常执行的任务的性质以及许多程序不会被编写以利用多个内核的事实. 这意味着对于互联网浏览或大多数其他桌面任务,具有几个强大内核的 CPU 比具有许多更小内核的 GPU 更适合这项工作。

另一件需要注意的是,更多的内核通常意味着需要更多的功率。这意味着从功率和热量的角度来看,256 核手机或笔记本电脑将非常不切实际,更不用说制造挑战和成本了。

于 2012-06-12T22:33:08.680 回答
2

如果您查看它们的结构,通常操作系统非常简单。但是并行化它们不会大大提高速度,只有原始时钟速度可以。

GPU 只是缺少操作系统需要的指令集中的部件和大量指令,这是一个复杂的问题。想想虚拟化功能(Intel VT-x 或 AMD 的 AMD-v)。

GPU 核心就像是哑蚂蚁,而 CPU 就像一个复杂的人,可以这么说。两者因此具有不同的能量消耗并产生非常不同的热量。

有关更多信息,请在此处查看此广泛的超级用户答案。

于 2015-07-05T14:03:23.500 回答
1

因为没有人会为此花费金钱和时间。除了像这样的一些爱好者:http: //gerigeri.uw.hu/DawnOS/history.html(现在在这里:http ://users.atw.hu/gerigeri/DawnOS/history.html )

Dawn 现在可以在 GPU-s 上运行:借助新的支持 OpenCL 的模拟器,Dawn 现在可以在显卡、GPU-s 和 IGP-s(使用 OpenCL 1.0)上启动并运行。Dawn 是第一个也是唯一一个在图形芯片上完全启动和工作的操作系统。

于 2019-10-22T06:25:57.627 回答