Skip to main content

Prefetching

Was ist Prefetching?

Prefetching bezeichnet das Laden einer Ressource, bevor auf diese Ressource tatsächlich zugegriffen wird. Ein Beispiel hierfür ist der Vorabruf von Befehlen, bei denen eine CPU Daten und Anweisungsblöcke aus dem Hauptspeicher lädt und im Cache zwischenspeichert, bevor sie ausgeführt werden.

 

Anwendung und Nutzen

Das Vorabladen ermöglicht es Anwendungen und Hardware, die Leistung zu maximieren und Wartezeiten zu minimieren, indem Ressourcen vorab geladen werden, die Benutzer benötigen, bevor sie diese anfordern. In der Computerarchitektur ist der Befehlsvorabruf eine Technik, die in zentralen Prozessoreinheiten verwendet wird, um die Ausführung eines Programms durch Reduzieren von Wartezuständen zu beschleunigen.

Prefetching findet statt, wenn ein Prozessor einen Befehl oder einen Datenblock aus dem Hauptspeicher anfordert, bevor er tatsächlich benötigt wird. Sobald der Block aus dem Speicher geladen wurde, wird er in einem Cache zwischengespeichert. Wenn der Befehl oder Datenblock tatsächlich benötigt wird, kann das ausführende Programm viel schneller auf den Cache zugreifen, als wenn erste eine Anforderung an den Speicher ausgeführt werden müsste. Auf diese Weise verringert sich die Speicherzugriffslatenz.

Da Datenzugriffsmuster weniger Regelmäßigkeiten als Befehlsmuster zeigen, ist ein genaues Datenprefetching im Allgemeinen schwieriger als Befehlsprefetching.

Programme werden im Allgemeinen sequenziell ausgeführt, sodass die Ausführungsgeschwindigkeit beschleunigt werden kann, wenn die Befehle in der Programmreihenfolge vorab abgerufen werden. Der Vorababruf kann darüber hinaus zusammen mit komplexen Vorhersagealgorithmen angewendet werden, bei dem der Prozessor versucht, das Ergebnis einer Berechnung vorauszusehen und die richtigen Anweisungen im Voraus abzurufen. Im Falle dedizierter Hardware, wie etwa einer Graphics Processing Unit, kann Prefetching die räumliche Kohärenz ausnutzen, die normalerweise im Textur-Mapping-Prozess gefunden wird. In diesem Fall sind die vorab abgerufenen Daten keine Anweisungen, sondern bestimmte Texturelemente.

Die ersten Mikroprozessoren, die den Vorabruf verwendet haben, waren der Intel 8086 und der Motorola 68000. Praktisch alle modernen Prozessoren nutzen heute diese Technik.

Prefetching durch Webbrowser und Betriebssysteme

Webbrowser verwenden Prefetchfunktionen und laden häufig aufgerufene Seiten vorab in den Browsercache. Wenn der Benutzer zur Seite navigiert, wird diese schneller geladen, da der Browser die Seite aus dem Cache abrufen kann. Prefetching von Webseiten wurde erstmals mit HTML 5 möglich. Für den Vorababruf werden Hinweise in Webseiten integriert, die ein Browser nutzen kann, um zum Beispiel Links vorab zu laden. Der Vorabruf ist möglich für Schriften, CSS, Bilder, Video- und Audiodateien.

Zusätzlich können TCP-Verbindungen und DNS-Namen für den Vorababruf im Dokument angegeben werden. Durch das sogenannte DNS-Prefetching kann die IP-Adresse einer Ressource aufgelöst werden, bevor der Inhalt der externen Domain vom Nutzer aufgerufen wird. Dieses Vorgehen ist sinnvoll, wenn bei einer Webseite viele externe Inhalte genutzt werden, die nicht an erster Stelle im Quelltext stehen. Dadurch beschleunigt sich die Anzeige der Webseite im Browser. Die Angaben für den DNS-Vorababruf erfolgen im HEAD-Bereich eines HTML Dokumentes.

Einige Browser-Plugins laden alle Seiten einer Domain vorab herunter, die mit Hyperlinks versehen wurden, um die Darstellung im Browser zu beschleunigen. Auch von verschiedenen Betriebssystemen, wie Windows wird Prefetching genutzt, um das Starten von Anwendungsprogrammen zu beschleunigen. Dazu werden Programmteile im Cache zwischengespeichert.

Prefetching Arten

Der Vorababruf kann durch Hardware oder Software erfolgen. Hardware-Prefetcher verwenden einen Speicher, um Zugriffsmuster zu erkennen und basierend auf den Speicherdaten Prefetch-Anweisungen auszugeben. Software-Prefetchfunktionen fügen Vorabrufbefehle in den Programmquellcode basierend auf der Kenntnis des Ablaufs der Programmsteuerung ein.

Prefetch-Metriken

Der Prefetch-Grad ist eine wichtige Metrik für das Prefetching und beschreibt die Anzahl von Cache-Zeilen, die bei jeder Prefetchoperation abgerufen werden. Der Prefetch-Abstand oder die Prefetch-Distanz zeigt an, wie weit vor dem Demand Access Stream die Prefetch-Datenblöcke abgerufen werden.

Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG