Bitte genau lesen:
http://de.wikipedia.org/wiki/Hyper-Threading
Bei Hyperthreading gibt doppelte Register- und Ausführungseinheiten, aber es gibt auch 'gemeinsam' (shared) benutzte Einheiten (in dem Artikel werden ALUS und FPUs genannt - Achtung, das kann sich je nach Prozessorgeneration und -Typ ändern). Es wird bei Hyperthreading symetrisches Multiprozessing gemacht. Bislang habe ich bei Hyperthreading maximal 2 Ausführungspipelines ausmachen können, offensichtlich geht mehr nicht so einfach/konfliktfrei.
Ein doppelter (Dual-) Core bedeutet, dass alle Einheiten doppelt sind ... also mehr als beim Hyperthreading.
Dual-Core in Kombination mit Hyperthreading wird (bei Intels Atom Prozessoren) also verwendet, um insgesamt auf 4 Ausführungspipelines zu kommen (man sieht also maximal eine Prozessorbelegung mit 25%, wenn man nur einen Thread fährt).
(unser) Linux ist relativ 'dumm' im Umgang mit solchen Prozessorarchitekturen - wir können also keine Prozesse auf spezielle Cores binden oder in einem Prozess bewusst mehrere Cores parallel nutzen. Was halt geht, sind paralle Verarbeitungen 'unterscheidlicher' Prozesse ... also wenn ein Datenbankserver mehrere Prozesse hat, dann kann diese auch mehrere Ausführungspipeleines nutzen. Wenn ein Thumbnail-Programm nur einen Prozess aufmacht, dann wird das Kleinrechnen der Bilder nicht schneller, weil es eben nur auf einer Ausführungspipline läuft ... nicht , dass man daran nicht etwas ändern könnte, aber dass muss dann schon der Entwickler vorsehen. Samba z. B. baut auch bei jeder Connection einen neuen Prozess auf und kann also von der Hardware profitieren.
Itari