Czy oprogramowanie pobierające wstępnie przydziela bufor wypełniania linii (LFB)?

Zrozumiałem toLittle's Law ogranicza szybkość przesyłania danych przy danym opóźnieniu i przy danym poziomie współbieżności. Jeśli chcesz przenieść coś szybciej, potrzebujesz większych transferów, większej liczby transferów „w locie” lub mniejszego opóźnienia. W przypadku odczytu z pamięci RAM, współbieżność jest ograniczona przez liczbę buforów wypełnienia linii.

Bufor wypełnienia linii jest przydzielany, gdy ładunek omija pamięć podręczną L1. Nowoczesne układy Intela (Nehalem, Sandy Bridge, Ivy Bridge, Haswell) mają 10 LFB na rdzeń, a zatem są ograniczone do 10 wybitnych błędów cache na rdzeń. Jeśli opóźnienie pamięci RAM wynosi 70 ns (wiarygodne), a każdy transfer wynosi 128 bajtów (linia pamięci podręcznej 64B plus jej wstępnie spreparowany sprzęt bliźniaczy), ogranicza to przepustowość na rdzeń do: 10 * 128B / 75 ns = ~ 16 GB / s. Benchmarki takie jak jednowątkoweStrumień potwierdź, że jest to dość dokładne.

Oczywistym sposobem zmniejszenia opóźnienia byłoby wstępne pobranie żądanych danych za pomocą instrukcji x64, takich jak PREFETCHT0, PREFETCHT1, PREFETCHT2 lub PREFETCHNTA, aby nie trzeba było ich odczytywać z pamięci RAM. Ale nie byłem w stanie niczego przyspieszyć, używając ich. Problemem wydaje się być to, że instrukcje __mm_prefetch () same konsumują LFB, więc one również podlegają tym samym ograniczeniom. Preselekcje sprzętowe nie dotykają LFB, ale także nie przekraczają granic strony.

Ale nie mogę nigdzie znaleźć żadnego z tych dokumentów. Najbliższy, jaki znalazłem, ma 15 latartykuł mówi, że preselekcja w Pentium III używa buforów wypełniania linii. Martwię się, że sytuacja mogła się zmienić od tego czasu. A ponieważ uważam, że LFB są powiązane z pamięcią podręczną L1, nie jestem pewien, dlaczego pobieranie z wyprzedzeniem do L2 lub L3 mogłoby je pochłonąć. A jednak prędkości, które mierzę, są zgodne z tą sytuacją.

Więc: Czy jest jakiś sposób, aby zainicjować pobieranie z nowej lokalizacji w pamięci bez użycia jednego z tych 10 buforów wypełnienia liniowego, osiągając w ten sposób większą przepustowość, omijając prawo Little'a?

questionAnswers(2)

yourAnswerToTheQuestion