One embodiment of the present invention provides a system that prefetches
instructions by using an assist processor to perform prefetch operations
in advance of a primary processor. The system operates by executing
executable code on the primary processor, and simultaneously executing a
reduced version of the executable code on the assist processor. This
reduced version of the executable code executes more quickly than the
executable code, and performs prefetch operations for the primary
processor in advance of when the primary processor requires the
instructions. The system also stores the prefetched instructions into a
cache that is accessible by the primary processor so that the primary
processor is able to access the prefetched instructions without having to
retrieve the prefetched instructions from a main memory. In one embodiment
of the present invention, prior to executing the executable code, the
system compiles source code into executable code for the primary
processor. Next, the system profiles the executable code to create
instruction traces for frequently referenced portions of the executable
code. The system then produces the reduced version of the executable code
for the assist processor by producing prefetch instructions to prefetch
portions of the instruction traces into a cache that is accessible by the
primary processor. The system also inserts communication instructions into
the executable code for the primary processor and into the reduced version
of the executable code for the assist processor to transfer progress
information from the primary processor to the assist processor. This
progress information triggers the assist processor to perform the prefetch
operations.
Eine Verkörperung der anwesenden Erfindung liefert ein System, das prefetches Anweisungen dieses ist, indem sie einen Vorlage Prozessor verwendet, um prefetch Betriebe im Vorsprung vor einem Primärprozessor durchzuführen. Das System funktioniert, indem es vollziehbaren Code auf dem Primärprozessor durchführt, und gleichzeitig eine verringerte Version des vollziehbaren Codes auf dem Vorlage Prozessor durchführt. Diese verringerte Version des vollziehbaren Codes führt schneller als der vollziehbare Code durch und führt prefetch Betriebe für den Primärprozessor im Vorsprung vor durch, wenn der Primärprozessor die Anweisungen erfordert. Das System speichert auch prefetched Anweisungen in einen Pufferspeicher, der durch den Primärprozessor zugänglich ist, damit der Primärprozessor ist, zugänglich zu machen prefetched Anweisungen, ohne zu müssen, zurückzuholen, prefetched Anweisungen von einem Hauptspeicher. In einer Verkörperung der anwesenden Erfindung, vor der Durchführung des vollziehbaren Codes, kompiliert das System Quellenprogramm in vollziehbaren Code für den Primärprozessor. Zunächst profiliert das System den vollziehbaren Code, um Anweisung Spuren für häufig bezogene Teile des vollziehbaren Codes zu verursachen. Das System produziert dann die verringerte Version des vollziehbaren Codes für den Vorlage Prozessor, indem es prefetch Anweisungen zu den prefetch Teilen der Anweisung Spuren in einen Pufferspeicher produziert, der durch den Primärprozessor zugänglich ist. Das System setzt auch Kommunikation Anweisungen in den vollziehbaren Code für den Primärprozessor und in die verringerte Version des vollziehbaren Codes für den Vorlage Prozessor zu den Übergangsfortschrittinformationen vom Primärprozessor zum Vorlage Prozessor ein. Diese Fortschrittinformationen lösen den Vorlage Prozessor aus, um die prefetch Betriebe durchzuführen.