CPU/Core Number of Threads

Hallo,

schaut man auf der Intel-Seite die Spezifikation eines Prozessors an steht da immer etwas von "# of Threads".
Weiß jemand was das genau bedeutet? Was würde passieren wenn ich ein Programm schreibe das mehr Threads erzeugt als in der Spezifiktion steht?

Hier ein Beispiel:
Intel® Xeon® Processor E7540 (18M Cache, 2.00 GHz, 6.40 GT/s Intel® QPI)

Gruß
odigo

Sobald das OS Multiprozessfähig ist, regelt das OS welcher Prozess von welcher CPU abgearbeitet wird. Ein Thread ist mehr oder weniger ein Prozess, der den Adressraum vom Mutter-Prozess teilt. Sind nicht genügend Einheiten zum Abarbeiten der Threads vorhanden - Was quasi Standard ist - verwaltet ein Schedular die einzelnen Prozesse.

Generell kann man sagen "Eine Recheneinheit arbeitet einen Thread ab". Allerdings gibt es Techniken mit denen eine CPU mehrere Threads abarbeiten kann - parallel.
Der Core i5 in meinem iMac z.B. hat einen Dual-Core i5, welcher 4 Threads verarbeitet kann. Die CPU kann also maximal 4 Prozesse bzw. Threads gleichzeitig abarbeiten. Wie mit dem Schedular angedeutet, blockiert ein Thread nicht eine Recheneinheit vollständig. Ein Thread/Prozess wird schlafen gelegt bis der Schedular der Meinung ist, dass jener jetzt seine Arbeit verrichten darf.


Schließlich ist es egal wie viele Threads dein Prozess erzeugt. Dein OS kümmert sich um die Verwaltung. Du musst natürlich dafür sorgen, dass sich die Threads nicht gegenseitig stören - Stichwort Semaphore.

Btw ... Firefox nutzt bei mir aktuell 22 Threads ;)
 
Ich vermute mal die Intelseite drückt damit das Hyperthreading aus. Es gibt Prozessoren von Intel die pro CPU-Kern teilweise zwei Befehle in einem Takt ausführen können. Das wird technisch so umgesetzt, dass Teile des Cores doppelt vorhanden sind, und wenn sich zwei Befehle nicht gegenseitig im Weg sind, werden diese dann parallel ausgeführt. Praktisch bedeutet das, dass das Betriebssystem doppelt so viele Kerne sieht wie tatsächlich existieren. Ob die Threads, die das Betriebssystem dann auf die virtuellen Kerne verteilt, tatsächlich parallel ausgeführt werden, darauf hat das OS jedoch keinen Einfluß. Kommt eben ganz auf die jeweiligen Operationen aus, die als nächstes in der Pipeline anstehen.

mfg benediktibk
 
Ich vermute mal die Intelseite drückt damit das Hyperthreading aus. Es gibt Prozessoren von Intel die pro CPU-Kern teilweise zwei Befehle in einem Takt ausführen können. Das wird technisch so umgesetzt, dass Teile des Cores doppelt vorhanden sind, und wenn sich zwei Befehle nicht gegenseitig im Weg sind, werden diese dann parallel ausgeführt. Praktisch bedeutet das, dass das Betriebssystem doppelt so viele Kerne sieht wie tatsächlich existieren. Ob die Threads, die das Betriebssystem dann auf die virtuellen Kerne verteilt, tatsächlich parallel ausgeführt werden, darauf hat das OS jedoch keinen Einfluß. Kommt eben ganz auf die jeweiligen Operationen aus, die als nächstes in der Pipeline anstehen.

mfg benediktibk

So ist es, das ganze nennt man SMT bzw. im Intel Neusprech HTT (Hyper-Threading Technology). Dabei kann unter bestimmten Bedingungen ein Kern zwei Threads halbwegs gleichzeitig ausführen - bzw. - schneller als normal zwischen den Threads wechseln.
Ein i5-2500 hat z.B. nur 4 physikalisch vorhandene Kerne, via SMT gibt er sich jedoch als Achtkerner aus. Zumindest der Windows-Scheduler weiß aber von SMT und kann die Verteilung von Threads auf die Kerne optimieren. So würde Windows möglichst versuchen die virtuellen Kerne 1,3,5,7 auszulasten, bevor es mit 2,4,6,8 anfängt, da mit einem Kern Abstand ersteinmal seperate Hardwarekerne ausgelastet werden.
 
Zurück
Oben