Co ja, Michaś, o pamięciach podręcznych myślę.
Saturday, 15. September 2007, 19:09:06
Z okazji premiery nowego procesora AMD postanowiłem napisać, co ja myślę o różnych pamięciach podręcznych.
Początkowo pamięć podręczna procesorów była podzielona na dwie grupy: małą, szybką pamięć podręczną zintegrowaną z rdzeniem procesora; oraz znacznie większą i wolniejszą umieszczoną poza owym rdzeniem. Początkowo taki układ się sprawdzał. Niemniej jednak szybkość połączenia z zewnętrzną pamięcią nie zwiększała się tak szybko, jak prędkość samych procesorów.
AMD postanowiło ów problem rozwiązać zwiększając pamięć zintegrowaną z rdzeniem. Kiedy procesory Intela miały 32kB, Athlon posiadał aż 128kB. Oczywiście takie zwiększenie rozmiaru pamięci odbiło się trochę na jej wydajności i na wielkości samego układu.
Niemniej jednak technologia miniaturyzacji postępowała do przodu i zrobiło się trochę dodatkowego miejsca w chipach. Okazało się wtedy, że nawet relatywnie niewielka pamięć drugiego poziomu, ale zintegrowana z rdzeniem i działająca szybciej, jest w stanie zrównoważyć brak znacznie większej, ale wolniejszej pamięci zewnętrznej.
Problem polegał jednak na tym, że do tej pory wszystkie dane i instrukcje z pamięci pierwszego poziomu były też obecne w pamięci poziomu drugiego. W przypadku Intela 32kB z 256kB, bo tyle było gdzieś dodatkowego miejsca na chipie, były jeszcze do zaakceptowania. W przypadku AMD 128kB było jednak wartością zbyt dużą. Zamiast więc zmniejszać pamięć pierwszego poziomu, postanowiono przeprojektować układ tak, aby nie dublował informacji w obydwu pamięciach podręcznych. Rozwiązanie to ograniczało zapewne w pewnym stopniu potencjalną szybkość, ale jednocześnie niwelowało tą wadę przez sumaryczne zwiększenie dostępnej pamięci. Przy okazji w procesorze AMD Duron mogło dojść nawet do takiego ciekawego faktu, że pamięć drugiego poziomu była dwa razy mniejsza od pamięci poziomu pierwszego.
W międzyczasie AMD zaprezentowało też układ K6-III, który posiadał dwa poziomy pamięci podręcznych w rdzeniu procesora i jeden na zewnątrz, w sumie aż trzy. Niemniej jednak sam procesor ustępował swoimi możliwościami Athlonom, a że też był kosztowy w produkcji, został dość szybko wycofany z rynku. W każdym razie był to chyba jedyny przykład układu z tak rozbudowanym podsystemem pamięci, jaki zagościł w procesorach na masowy rynek. Takie rozwiązania spotyka się praktycznie tylko w procesorach serwerowych i do wydajnych stacji roboczych.
Potem przez dłuższy czas nie działo się w tym segmencie nic ciekawego. Dopiero Intel wraz z premierą Core 2 zaprezentował w tej materii coś świeżego. Mianowicie była to pamięć drugiego poziomu dzielona między dwa rdzenie. Dzięki temu komunikacja międzywątkowa została znacznie udoskonalona. Ponadto w ten sposób poprawiono wykorzystanie pamięci, kiedy jeden wątek potrzebuje jej bardzo, drugi ma wtedy jej więcej do dyspozycji.
Podobne rozwiązanie, jako pamięć trzeciego poziomu, AMD wprowadzi dopiero w swoich Phenomach. Będzie to jednak znowu pamięć, która nie będzie się dublować z niższymi poziomami. Dzięki temu będzie można zachować jej relatywnie mały rozmiar. Alternatywnie trzeba by było zastosować gdzieś 8MB dla czterordzenowych układów, co jest obecnie niewykonalne, a tak wystarczyły ponoć 2MB.
Początkowo pamięć podręczna procesorów była podzielona na dwie grupy: małą, szybką pamięć podręczną zintegrowaną z rdzeniem procesora; oraz znacznie większą i wolniejszą umieszczoną poza owym rdzeniem. Początkowo taki układ się sprawdzał. Niemniej jednak szybkość połączenia z zewnętrzną pamięcią nie zwiększała się tak szybko, jak prędkość samych procesorów.
AMD postanowiło ów problem rozwiązać zwiększając pamięć zintegrowaną z rdzeniem. Kiedy procesory Intela miały 32kB, Athlon posiadał aż 128kB. Oczywiście takie zwiększenie rozmiaru pamięci odbiło się trochę na jej wydajności i na wielkości samego układu.
Niemniej jednak technologia miniaturyzacji postępowała do przodu i zrobiło się trochę dodatkowego miejsca w chipach. Okazało się wtedy, że nawet relatywnie niewielka pamięć drugiego poziomu, ale zintegrowana z rdzeniem i działająca szybciej, jest w stanie zrównoważyć brak znacznie większej, ale wolniejszej pamięci zewnętrznej.
Problem polegał jednak na tym, że do tej pory wszystkie dane i instrukcje z pamięci pierwszego poziomu były też obecne w pamięci poziomu drugiego. W przypadku Intela 32kB z 256kB, bo tyle było gdzieś dodatkowego miejsca na chipie, były jeszcze do zaakceptowania. W przypadku AMD 128kB było jednak wartością zbyt dużą. Zamiast więc zmniejszać pamięć pierwszego poziomu, postanowiono przeprojektować układ tak, aby nie dublował informacji w obydwu pamięciach podręcznych. Rozwiązanie to ograniczało zapewne w pewnym stopniu potencjalną szybkość, ale jednocześnie niwelowało tą wadę przez sumaryczne zwiększenie dostępnej pamięci. Przy okazji w procesorze AMD Duron mogło dojść nawet do takiego ciekawego faktu, że pamięć drugiego poziomu była dwa razy mniejsza od pamięci poziomu pierwszego.
W międzyczasie AMD zaprezentowało też układ K6-III, który posiadał dwa poziomy pamięci podręcznych w rdzeniu procesora i jeden na zewnątrz, w sumie aż trzy. Niemniej jednak sam procesor ustępował swoimi możliwościami Athlonom, a że też był kosztowy w produkcji, został dość szybko wycofany z rynku. W każdym razie był to chyba jedyny przykład układu z tak rozbudowanym podsystemem pamięci, jaki zagościł w procesorach na masowy rynek. Takie rozwiązania spotyka się praktycznie tylko w procesorach serwerowych i do wydajnych stacji roboczych.
Potem przez dłuższy czas nie działo się w tym segmencie nic ciekawego. Dopiero Intel wraz z premierą Core 2 zaprezentował w tej materii coś świeżego. Mianowicie była to pamięć drugiego poziomu dzielona między dwa rdzenie. Dzięki temu komunikacja międzywątkowa została znacznie udoskonalona. Ponadto w ten sposób poprawiono wykorzystanie pamięci, kiedy jeden wątek potrzebuje jej bardzo, drugi ma wtedy jej więcej do dyspozycji.
Podobne rozwiązanie, jako pamięć trzeciego poziomu, AMD wprowadzi dopiero w swoich Phenomach. Będzie to jednak znowu pamięć, która nie będzie się dublować z niższymi poziomami. Dzięki temu będzie można zachować jej relatywnie mały rozmiar. Alternatywnie trzeba by było zastosować gdzieś 8MB dla czterordzenowych układów, co jest obecnie niewykonalne, a tak wystarczyły ponoć 2MB.