Kernel-Log – Was 3.2 bringt (3): Architektur-Code

Optimierte Assembler-Codepfade beschleunigen SHA1 und die Verschlüsselungs-Algorithmen Blowfish und Twofish. Der Linux-Kernel 3.2 umschifft ferner ein Cache-Problem der neuesten AMD-Prozessoren und bringt neue und erweiterte Treiber für Intel-CPUs mit.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen
Lesezeit: 16 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Dem üblichen Wochenrhythmus folgend gab Linus Torvalds am Freitag vergangener Woche die vierte Vorabversion von Linux 3.2 frei. Sie sei kleiner als die beiden vorangegangenen Vorabversionen und es würde langsam ruhiger; Torvalds deutete sogar an, es sei verdächtig ruhig.

Mit der fortschreitenden Entwicklung von Linux 3.2 will auch das Kernel-Log die Mini-Serie "Was 3.2 bringt" fortsetzen. Nach der Beschreibung der Neuerungen rund um Netzwerk-Treiber und -Infrastruktur sowie denen bei Dateisystemen folgen nun die mit Bezug zu Architektur- und Prozessor-Unterstützung; für die kommenden Wochen sind Artikel zur Kernel-Infrastruktur und Treibern geplant.

Eine zusätzliche SHA1-Implementierung für x86-64-CPUs soll der Hash-Algorithmus durch den Einsatz von SSE3- oder AVX-Befehlen einen höheren Durchsatz erzielen; laut Messungen des Entwicklers habe sie den Durchsatz bei Messungen mit einer IPSec-Verbindung auf einem Core 2 Quad von 344 auf 464 Mbit/s gesteigert.

Der Blowfish-Code erhielt eine x86-64-Assembler-Implementation, der Twofish-Code eine ebenfalls in Assembler für x86-64-Systeme realisierte 3-Wege-Parallel-Implementation. Beide sollen das Ver- und Entschlüsseln mit den genannten Mechanismen erheblich beschleunigen, wie Messwerte in den Commit-Kommentaren zeigen; das Entschlüsseln mit Blowfish etwa soll in bestimmten Fällen zwei bis zweieinhalb Mal schneller erfolgen.

Durch einige Patches (u. a. 1) umschifft Linux 3.2 eine Eigenart des L1-Instruktioncaches in AMDs Bulldozer-Prozessoren, die bei bestimmten Arbeitsszenarien zu Performance-Einbußen führt. Diese Patches sind auch als Korrekturen für Stable-Kernel der Serien 3.0 und 3.1 eingereicht (1, 2), wurden dort aber bislang nicht integriert.

Neu ist auch Unterstützung für den über die x86-Instruktion RDRAND ansprechbaren Zufallszahlengenerator der Ivy-Bridge-CPUs, die Intel im nächsten Jahr als Sandy-Bridge-Nachfolger einführen will (1, 2, 3). Zum Subsystem für EDAC (Error Detection And Correction) stieß ein experimenteller neuer Treiber für Intels Sandy-Bridge-EP-Prozessoren (1, 2, 3). Der Treiber i7core_edac bietet nun auch Unterstützung zum Beeinflussen der Scrub-Rate des Arbeitsspeichers.

Linux arbeitet nun auch auf Qualcomms Hexagon-CPU-Architektur (u. a. 1, 2). Einige Hintergründe zu dieser liefert LWN.net im Artikel "Upcoming DSP architectures"; die dort ebenfalls erwähnte Unterstützung für die C6X-Architektur wurde nicht aufgenommen, dürfte jedoch bei Version 3.3 folgen.

  • Der Zeitgeber-Treiber für Micosofts Virtualisierungstechnik Hyper-V zog vom Staging-Bereich in den x86-Architektur-Code um. Auch einige andere Treiber für Kern-Techniken von Hyper-V konnten nach zahlreichen Verbesserungen durch Microsoft-Programmierer nun die Staging-Einstufung ablegen. Die Hyper-V-Treiber für die emulierte Pointer-, Netzwerk- und Storage-Hardware bleiben vorerst noch im Staging-Bereich, dürften diesen aber mit Linux 3.3 verlassen.
  • Die seit einigen Monaten vorangetriebenen Umstrukturierung und Aufräumarbeiten im ARM-Code gingen weiter voran. Über die neuen Sub-Architekturen Highbank und Picoxcell spricht der Kernel die gleichnamigen Chipfamilien an. Neu ist auch Unterstützung für die SOC-Familie imx6q (u. a. 1, 2), den Denx MX28 und Boards mit dem Omicron ixp425.
  • Unter den Änderungen am Code für Power/PowerPC-Prozessoren ist Unterstützung (u. a. 1) für die "Power 'Non Virtualized' Platform". Einige neuere Systeme bieten diese PowerNV genannte Betriebsart, bei der Linux nicht unter einem Hypervisor läuft, sondern selbst mit KVM virtualisiert.
  • Am Code für User-Mode-Linux (UML) gab es eine Reihe Aufräum- und Umbauarbeiten.