我知道这个问题只是部分与编程有关,因为我想得到的答案最初来自这两个问题:
为什么CPU核心数量如此之低(与GPU相比)?为什么我们不使用GPU而不是CPU,仅GPU或CPU?(我知道GPU是专用的,而CPU更多用于多任务等).我也知道存在内存(主机与GPU)限制以及精度和缓存功能.但是,就硬件比较而言,高端到高端的CPU/GPU比较GPU的性能要高得多.
所以我的问题是:我们可以使用GPU而不是CPU用于操作系统,应用程序等
我问这个问题的原因是因为我想知道当前计算机仍然使用2个主处理单元(CPU/GPU)和两个主存储器和缓存系统(CPU/GPU)的原因,即使它不是程序员想.
Jer*_*fin 14
当前的GPU缺乏现代CPU的许多功能,这些功能通常被认为对操作系统这样的东西很重要(至关重要).
例如,操作系统通常使用虚拟内存和分页来管理进程.分页允许操作系统为每个进程提供自己的地址空间,(几乎)与其他进程完全隔离.至少基于公开可用的信息,大多数GPU根本不支持分页(或者至少不支持OS需要的方式).
GPU的运行时钟速度也远低于CPU.因此,它们仅为令人尴尬的并行问题提供高性能.CPU通常为单线程代码提供更高的性能.操作系统中的大多数代码都不是高度并行的 - 事实上,很多并行很难实现并行(例如,多年来,Linux有一个巨大的锁定来确保只有一个线程执行大多数内核代码任何给定的时间).对于这种任务,GPU不太可能提供任何好处.
从编程的角度来看,GPU是一种混合的祝福(充其量).人们花了数年时间研究编程模型,使编程成为GPU甚至中途,甚至比CPU编程更困难(一般).鉴于难以在GPU上获得相对琐碎的事情,我无法想象尝试编写任何与操作系统一样大而复杂的东西.
lya*_*per 12
GPU设计用于图形相关处理(显然),这本身就是从并行处理(一次执行多个任务/计算)中受益的东西.这意味着与现代CPU不同,GPU可能通常拥有2-8个内核,GPU拥有数百个内核.这意味着它们非常适合处理光线跟踪或您在3D游戏或其他图形密集型活动中可能遇到的任何其他内容.
另一方面,CPU具有相对有限的核心数,因为CPU面临的任务通常不会受益于并行处理,几乎与渲染3D场景一样多.事实上,在CPU中拥有太多内核实际上会降低机器的性能,因为CPU通常会执行任务的性质,而且很多程序无法编写以利用大量内核的事实.这意味着对于互联网浏览或大多数其他桌面任务,具有少量强大内核的CPU比具有许多更小内核的GPU更适合这项工作.
另外需要注意的是,更多内核通常意味着需要更多功率.这意味着从功率和散热的角度来看,256核手机或笔记本电脑是不切实际的,更不用说制造挑战和成本了.