A system and method are provided for efficiently prefetching data in a
pointer linked data structure (140). In one embodiment, a data processing
system (100) is provided including a processor (110) capable of executing
a program, a main-memory (115) and a prefetch engine (175) configured to
prefetch data from a plurality of locations in main-memory in response to
a prefetch request from the processor. When the data in main-memory (115)
has a linked-data-structure having a number nodes (145) each with data
(150) stored therein, prefetch engine (175) is configured to traverse the
linked-data-structure and prefetch data from the nodes. The prefetch
engine (175) is configured to determine from data contained in a
prefetched first node (145A) and an offset value a new starting address
for a second node (145B) to be prefetched. In one embodiment, the prefetch
engine (175) includes a number of sets of prefetch registers (180), one
set of prefetch registers for each prefetch request from processor (110)
that is yet to be completed. Each set of prefetch registers (180) includes
(i) a prefetch address register (190); (ii) an offset register (195);
(iii) a termination register (200); (iv) a status register (205); and (v)
a returned data register (210).
Ein System und eine Methode werden für leistungsfähig prefetching Daten in einer Zeiger verbundenen Datenstruktur (140) zur Verfügung gestellt. In einer Verkörperung wird ein Datenverarbeitungssystem (100) einschließlich einen Prozessor (110) fähig zur Durchführung eines Programms zur Verfügung gestellt, der Zentralspeicher- (115) und prefetch Maschine (175) zusammengebaut zu den prefetch Daten von einer Mehrzahl von Positionen in Zentralspeicher in Erwiderung auf einen prefetch Antrag vom Prozessor. Wenn die Daten in Zentralspeicher (115) eine Verbinden-Datenstruktur haben, Nullpunkte einer Zahl (145) jeden zu haben mit den Daten (150) darin gespeichert, wird prefetch Maschine (175) zusammengebaut, um die Verbinden-Datenstruktur und die prefetch Daten von den Nullpunkten zu überqueren. Die prefetch Maschine (175) wird zusammengebaut, um von den Daten festzustellen, die in a enthalten werden, prefetched ersten Nullpunkt (145A) und ein Offsetwert, den eine neue beginnende Adresse für einen zweiten Nullpunkt (145B) zum zu sein prefetched. In einer Verkörperung schließt die prefetch Maschine (175) eine Anzahl von Sätzen prefetch Registern (180), ein Satz prefetch registriert für jeden prefetch Antrag vom Prozessor ein (110) der schon durchgeführt werden soll. Jeder Satz prefetch Register (180) schließt (i) ein prefetch Adresse Register ein (190); (ii) ein Offsetregister (195); (iii) ein Endpunktregister (200); (iv) ein Statusregister (205); und (V) ein zurückgebrachtes Datenregister (210).