Warum nicht mit GPUs als eine CPU?
Ich weiß, die Frage ist nur teilweise Programmierung-Verwandte, weil die Antwort, die ich bekommen möchte, ist ursprünglich aus diesen zwei Fragen:
Warum sind die CPU-Kerne, die Anzahl so gering (vs GPU)? und Warum sind wir nicht mit GPUs statt CPUs, GPUs oder nur CPUs nur? (Ich weiß, dass GPUs spezialisiert sind, während die CPUs sind mehr für die multi-task, etc.). Ich weiß auch, dass es Speicher (Host-vs. GPU) Einschränkungen, zusammen mit Präzision und caches-Fähigkeit. Aber, Im Begriff der hardware-Vergleich, high-end zu high-end-CPU/GPU Vergleich GPUs sind viel viel schneller.
Also meine Frage ist: Könnten wir nutzen, GPUs anstelle von CPUs für OS, Anwendungen, etc
Der Grund, warum ich Stelle diese Fragen weil ich würde gerne wissen, der Grund, warum die aktuellen Computer sind immer noch mit 2 main processing units (CPU/GPU) mit zwei Arbeitsspeicher-und caching-Systeme (CPU/GPU) auch wenn es ist nicht etwas, was ein Programmierer möchte.
InformationsquelleAutor der Frage Maiss | 2012-06-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
GPUs sind konzipiert für Grafiken processing (offensichtlich), das ist grundsätzlich etwas, dass die Vorteile von paralleler Verarbeitung (mache immer mehrere Aufgaben/Berechnungen auf einmal). Dies bedeutet, dass im Gegensatz zu modernen CPUs, die, wie Sie wahrscheinlich wissen, haben in der Regel 2-8 Kerne, GPUs haben Hunderte Prozessorkerne. Dies bedeutet, dass Sie sind einzigartig geeignet, um die Verarbeitung Dinge wie ray-tracing oder irgendetwas anderes, dass Sie kann auch in einem 3D-Spiel oder andere Grafik-intensive Aktivität.
CPUs auf der anderen Seite haben eine relativ begrenzte Zahl der Kerne, weil die Aufgaben, die ein CPU-Gesichter in der Regel nicht profitieren von der parallelen Verarbeitung fast so viel wie das Rendern einer 3D-Szene. In der Tat, dass zu viele Kerne in einer CPU könnte tatsächlich verschlechtern die Leistung einer Maschine, die aufgrund der Art der Aufgaben, die ein CPU der Regel nicht, und die Tatsache, dass viele Programme würden nicht geschrieben werden, um die Vorteile der Vielzahl der Kerne. Dies bedeutet, dass für das surfen im internet oder die meisten anderen desktop-Aufgaben, eine CPU mit ein paar mächtigen Kerne wäre besser für den job geeignet, als eine GPU mit viele, viele kleinere Kerne.
Andere Sache zu beachten ist, dass mehr Kerne bedeutet in der Regel mehr Energie benötigt. Dies bedeutet, dass ein 256-core-Handy oder laptop wäre ziemlich unpraktisch von Strom-und Wärme-Sicht, nicht zu erwähnen die Herausforderungen in der Fertigung und Kosten.
InformationsquelleAutor der Antwort lyallcooper
Aktuellen GPUs fehlen viele der Einrichtungen, die eine moderne CPU, die im Allgemeinen als wichtige (entscheidende) Dinge wie ein OS.
Nur ein Beispiel, ein OS normalerweise verwendet, virtueller Speicher und paging zur Verwaltung der Prozesse. Paging ermöglicht es dem Betriebssystem, dass jeder Prozess seinen eigenen Adressraum (fast) komplett isoliert von jedem anderen Prozess. Zumindest auf öffentlich zugänglichen Informationen beruhen, die meisten GPUs nicht unterstützt paging in alle (oder zumindest nicht in der Art und Weise ein OS braucht).
GPUs arbeiten auch bei viel geringeren Taktraten als CPUs. Daher, Sie nur bieten hohe Leistung für peinlich parallele Probleme. CPUs sind in der Regel viel höhere Leistung für single-threaded-code. Die meisten der code in einem OS nicht hoch parallele-in der Tat, viel ist es ziemlich schwierig zu machen, parallel an alle (z.B., seit Jahren Linux hatte ein Riesen Schloss, um sicherzustellen, dass nur ein thread ausgeführt, die meisten kernel-code zu einem bestimmten Zeitpunkt). Für diese Art der Aufgabe, eine GPU wäre unwahrscheinlich, dass irgendwelche profitieren.
Programmierung Standpunkt, eine GPU ist ein gemischter Segen (am besten). Die Menschen haben in jahrelanger Arbeit über die Programmierung von Modellen, um die Programmierung einer GPU auch halbwegs gesund und auch so ist es sehr viel schwieriger (im Allgemeinen) als die CPU-Programmierung. Angesichts der Schwierigkeit, noch relativ triviale Dinge, um gut zu funktionieren auf einer GPU, ich kann mir nicht vorstellen, versuchen, etwas zu schreiben, auch nur annähernd so großes und Komplexes wie ein Betriebssystem zu laufen.
InformationsquelleAutor der Antwort Jerry Coffin
In der Regel Betriebssysteme sind ziemlich einfach, wenn man sich Ihre Struktur.
Aber parallelisieren, Sie wird sich nicht verbessern Geschwindigkeiten viel, nur raw-clock-Geschwindigkeit zu tun.
GPU ist, fehlen einfach Teile und eine Menge von Anweisungen, die von Ihrem Unterricht legt, dass ein OS braucht, es ist eine Frage der Komplexität. Man denke nur an den Virtualisierungsfunktionen (Intel VT-x oder AMD-AMD-v).
GPU-Kerne sind wie Stumme Ameisen, in der Erwägung, dass eine CPU ist wie ein komplexer Mensch, so zu sprechen. Beide haben einen unterschiedlichen Energieverbrauch, weil dieser und produzieren sehr unterschiedliche Mengen an Wärme.
Sehen dieses umfangreiche superuser Antwort hier auf mehr info.
InformationsquelleAutor der Antwort sjas