Autor Thema: Das Multi Core-Problem  (Gelesen 737 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline SiLæncer

  • Cheff-Cubie
  • *****
  • Beiträge: 158890
  • Ohne Input kein Output
    • DVB-Cube
Das Multi Core-Problem
« am: 26 November, 2006, 12:30 »
Heutige Rechner kommen mit Dual-Core-CPUs – also zwei Prozessorkernen, die gleichzeitig verschiedene Aufgaben übernehmen können. Der Trend wird sich bald noch verstärken: Erste Quad-Core-CPUs sind von Intel, IBM und AMD längst angekündigt und sollten spätestens Anfang 2007 erhältlich sein. Doch obwohl mehrere Prozessorkerne theoretisch schneller sind als ein einzelner Prozessorkern, ist es nicht besonders leicht, passende Software dafür zu schreiben. Das dafür notwendige "Parallel Programming" gilt als komplex

Forscher am MIT arbeiten derzeit daran, dies zu vereinfachen. Mit der Technik, die sich derzeit im Versuchsbetrieb befindet, soll auch ganz normale Software mit der Power der Mehrkern-Rechner Schritt halten können. Dazu schlagen die Forscher ein neues Framework vor, das aus einer Kombination aus speziellen Software-Befehlen und Veränderungen in der Mehrkern-Hardware besteht. Mit diesem Framework soll es irgendwann möglich werden, Software weiterhin ganz normal zu schreiben, ohne sich wirklich mit Parallel Programming auseinandersetzen zu müssen.

Derzeit sind hier traditionell noch Experten aus der Supercomputer-Welt gefragt. Da die darin verwendete Technik inzwischen langsam auch auf dem Schreibtisch verfügbar ist, müssen nun auch ganz normale Programmierer lernen, ihre Software für mehrere Kerne anzupassen.

"Das macht den Leuten erstmal Angst", meint Krste Asanovic, Professor für Informatik und Maschinenbau am MIT, der an dem neuen Framework arbeitet. Der Grund sei, dass die meisten Programmierer sich bislang nie darum gekümmert hätten und die Technik an sich nur schwer zu beherrschen sei. Asanovic und sein Team wollen deshalb eines der Hauptprobleme angehen, das Programmierer überwinden müssen, um ihre Software effizient für Mehrkern-Systeme anzupassen: Die Koordination verschiedener Aufgaben (Tasks), die auf unterschiedlichen Kernen läuft, ohne dass es dabei zu Zusammenstößen kommt.

Wenn eine Anwendung wie Microsofts E-Mail-Lösung Outlook oder eine Videoabspiel-Software parallelisiert werden soll, werden verschiedene Tasks zwischen den Prozessoren aufgeteilt. Oft genug müssen diese allerdings auf einen geteilten Zwischenspeicher (Cache) zugreifen, um an ihre Daten zu gelangen. Greift nun ein Task auf den gleichen Speicherbereich zu, der bereits von einem anderen Task bearbeitet wird, kann ein Rechner abstürzen, wenn nicht zuvor entsprechende Sicherheitsmaßnahmen getroffen wurden. Das ist ungefähr so, wie wenn ein Ehepaar ein Gemeinschaftskonto hat, auf dem nur eine eingeschränkte Menge an Geld zur Verfügung steht – heben beide zu viel ab, landet man schnell in den Miesen.

Beim Parallel Programming gehört es zur Routine, solche simultan verlaufenden Tasks vorherzusehen. Deshalb wird sichergestellt, dass sie nur dann auf den Speicher zugreifen können, wenn andere Tasks gleichzeitig warten.

Implementiert man das richtig, werden Parallel-Rechner durch diese so genannten "Locks" sogar noch beschleunigt. Es ist allerdings kompliziert, sie auch umzusetzen, wie Jim Larus, Forschungsmanager bei Microsoft, erklärt. Zwei verschiedene Anwendungen könnten beispielsweise zur gleichen Zeit solche Locks benötigen, was sie dazu zwingt, gegenseitig aufeinander zu warten. Ohne einen dritten Task, der das überwacht, bleiben sie dann eingefroren.

Die MIT-Forscher umgehen dieses Problem, in dem sie eine neue Speicherverwaltung namens "Transactional Memory" (TM) verwenden. Hier habe man in den letzten fünf Jahren starke Fortschritte gemacht, meint Asanovic. TM koordiniert Tasks automatisch, so dass sich die Programmierer nicht mehr darum kümmern müssen - entsprechende Routinen dürfen also weggelassen werden. Dadurch wird es möglich, dass verschiedene Tasks den gleichen Speicher zur gleichen Zeit verwenden können. Sobald eine Task-Transaktion abgeschlossen ist, prüft das System, ob nachfolgende Tasks Veränderungen am Speicher vorgenommen haben, die das Ergebnis der ersten Transaktion verändern würden. Sollte dem so sein, wird der erste Task so lange wiederholt, bis er erfolgreich abgeschlossen ist.

Ganz perfekt ist die TM-Technik allerdings laut Asanovic noch nicht. Meistens sind die Tasks nur klein und der dafür vorgesehene Speicher reicht auch. Doch es gibt auch Tasks, die mehr Speicher brauchen, als aktuell festgelegt wurde - genau dann kommt es noch immer zu Abstürzen. Asanovic will das Problem durch einen kleinen Backup-Speicher direkt in der Hardware lösen und außerdem Software ergänzen, die erkennen kann, wenn Tasks "überlaufen".

Die Methode der MIT-Forscher basiert auf einer Kombination aus Soft- und Hardware, wie Microsoft-Mann Larus erklärt. Es sei aber noch unklar, wo hier die Linie zu ziehen ist – also ob Soft- oder Hardware mehr hilft.

Microsoft, AMD, Intel und US-Hochschulen wie das MIT und die Stanford University arbeiten derzeit allesamt an der Thematik. Neben der TM-Technik wird auch an neuen Debugger-Programmen gearbeitet, die Fehler in parallelem Code schneller auffinden sollen. Daneben arbeitet man an fertigen Parallel Programming-Bibliotheken, die die Programmierer dann nur noch einbinden müssten, ohne sich jedes Mal zu sehr mit den Details zu beschäftigen.

Bei aktuellen Dual Core-Rechnern sei das Fehlen echter paralleler Programme noch kein wirkliches Problem, meint Asanovic. Mit dem Erscheinen der ersten Quad Core-Systeme dürfte das aber bald anders aussehen. Bei zwei Kernen können angepasste Betriebssysteme wie Windows oder Mac OS X Anwendungen effizient zwischen diesen verteilen. So läuft beispielsweise ein Virenscanner auf einem Kern im Hintergrund, während Anwendungen wie Word oder Firefox auf den anderen verwenden, ohne dass das die Geschwindigkeit reduziert.

Mit 4, 8 oder gar 16 Kernen ist das alles aber nicht mehr so einfach – dann müssen die Anwendungen selbst deutlich verändert werden, um die Power wirklich zu nutzen. Die TM-Technik sei bei der Vereinfachung der Programmierarbeit zwar keine Patentlösung. Doch sie ist zumindest eine Komponente eines zukünftigen Parallel-Computing-Modells, wie Asanovic meint. "Das ist ein Mechanismus, der uns sinnvoll erscheint."

Quelle : www.heise.de

Arbeits.- Testrechner :

Intel® Core™ i7-6700 (4 x 3.40 GHz / 4.00 GHz)
16 GB (2 x 8 GB) DDR4 SDRAM 2133 MHz
250 GB SSD Samsung 750 EVO / 1 TB HDD
ZOTAC Geforce GTX 1080TI AMPExtreme Core Edition 11GB GDDR5
MSI Z170A PC Mate Mainboard
DVD-Brenner Laufwerk
Microsoft Windows 10 Home 64Bit

TT S2 3200 ( BDA Treiber 5.0.1.8 ) + Terratec Cinergy 1200 C ( BDA Treiber 4.8.3.1.8 )

Offline Theos

  • Premium-Cubie
  • ****
  • Beiträge: 570
Re: Das Multi Core-Problem
« Antwort #1 am: 26 November, 2006, 14:49 »
sag mal, hast du das wirklich von heise? ich konnte es dort nirgends finden.

Doch obwohl mehrere Prozessorkerne theoretisch schneller sind als ein einzelner Prozessorkern, ist es nicht besonders leicht, passende Software dafür zu schreiben. Das dafür notwendige "Parallel Programming" gilt als komplex
IMO, ist das nicht wirklich schwerer als ordentliche "normale" software zu schreiben...

Forscher am MIT arbeiten derzeit daran, dies zu vereinfachen. Mit der Technik, die sich derzeit im Versuchsbetrieb befindet, soll auch ganz normale Software mit der Power der Mehrkern-Rechner Schritt halten können. Dazu schlagen die Forscher ein neues Framework vor, das aus einer Kombination aus speziellen Software-Befehlen und Veränderungen in der Mehrkern-Hardware besteht. Mit diesem Framework soll es irgendwann möglich werden, Software weiterhin ganz normal zu schreiben, ohne sich wirklich mit Parallel Programming auseinandersetzen zu müssen.
Gute compiler/Laufzeitumgebungen machen das bereits jetzt schon. Aber die performance die man daraus gewinnt, ist (und wird auch in naher zukunft immer sein) leider nur ein bruchteil derer, die man durch händisches optimieren erreichen kann.

"Das macht den Leuten erstmal Angst", meint Krste Asanovic, Professor für Informatik und Maschinenbau am MIT, der an dem neuen Framework arbeitet. Der Grund sei, dass die meisten Programmierer sich bislang nie darum gekümmert hätten und die Technik an sich nur schwer zu beherrschen sei. Asanovic und sein Team wollen deshalb eines der Hauptprobleme angehen, das Programmierer überwinden müssen, um ihre Software effizient für Mehrkern-Systeme anzupassen: Die Koordination verschiedener Aufgaben (Tasks), die auf unterschiedlichen Kernen läuft, ohne dass es dabei zu Zusammenstößen kommt.
Das problem hat man nicht nur auf multicore systeme, sondern bei jeder anwendungen, die aus mehreren threads bestehen(praktisch ist das heutzutage jede anwendung). Bei multicore systemen sieht man's halt nur öfter.

Implementiert man das richtig, werden Parallel-Rechner durch diese so genannten "Locks" sogar noch beschleunigt.
schwachsinn. Locks, man könnte sie mit einem türsteher, der immer nur einen reinlässt, vergleichen, an sich machen eine anwendung nie schneller, nur "sicherer".

Microsoft, AMD, Intel und US-Hochschulen wie das MIT und die Stanford University arbeiten derzeit allesamt an der Thematik. Neben der TM-Technik wird auch an neuen Debugger-Programmen gearbeitet, die Fehler in parallelem Code schneller auffinden sollen. Daneben arbeitet man an fertigen Parallel Programming-Bibliotheken, die die Programmierer dann nur noch einbinden müssten, ohne sich jedes Mal zu sehr mit den Details zu beschäftigen.
Intel hat das schon seit jahren im portfolio.


abschließend kann man nur sagen:
Die hier angesprochenen probleme sind nichts neues, sie traten mit dem einführen von betriebssystemen ein, die mehrere anwendungen parallel laufen lassen konnten, bzw. sind sie meist nicht sonderlich relevant im consumer bereich.

Im allgemeinen hat man immer diese möglichkeiten ein multi(core|cpu|rechner) System auszunutzen:
Job Partitioning: Eine Anwendung pro Element (z.b. virenscanner)
Task Partitioning: Eine Aufgabe pro Element (z.b. ein element zeigt die benutzeroberfläche an, ein element wartet auf benutzereingaben)
Data Partitioning: Ein Element bekommt ein Bereich zum Arbeiten(z.b. ein element berrechnet die summe von 0-100, ein anderes von 100-300, und abschließend eins summe der teilergebnisse)

die letzteren beiden werden im artikel als problematisch bezeichnet. Das sind sie aber hauptsächlich nur dann, wenn man zwanghaft versucht eine nicht-parallelisierbare aufgabe zu parallelisieren.

Offline SiLæncer

  • Cheff-Cubie
  • *****
  • Beiträge: 158890
  • Ohne Input kein Output
    • DVB-Cube
Re: Das Multi Core-Problem
« Antwort #2 am: 26 November, 2006, 14:50 »
Zitat
sag mal, hast du das wirklich von heise? ich konnte es dort nirgends finden.

jo, hier : Technology Review -> http://www.heise.de/tr/artikel/81305
« Letzte Änderung: 26 November, 2006, 15:00 von SiLencer »

Arbeits.- Testrechner :

Intel® Core™ i7-6700 (4 x 3.40 GHz / 4.00 GHz)
16 GB (2 x 8 GB) DDR4 SDRAM 2133 MHz
250 GB SSD Samsung 750 EVO / 1 TB HDD
ZOTAC Geforce GTX 1080TI AMPExtreme Core Edition 11GB GDDR5
MSI Z170A PC Mate Mainboard
DVD-Brenner Laufwerk
Microsoft Windows 10 Home 64Bit

TT S2 3200 ( BDA Treiber 5.0.1.8 ) + Terratec Cinergy 1200 C ( BDA Treiber 4.8.3.1.8 )