Nowoczesne procesory są bardzo szybkie w porównaniu do wszystkich rzeczy zewnętrznych, w tym pamięci (RAM).
Jest to zrozumiałe, ponieważ częstotliwość zegara procesora osiągnęła punkt, w którym potrzeba kilku tyknięć zegara, aby sygnał elektryczny po prostu przepłynął z procesora przez magistralę do układów RAM iz powrotem.
Komplikuje to także życie na wielu poziomach: wielopoziomowe hierarchie pamięci podręcznej są budowane w celu dostarczania danych bliżej procesora, co z kolei wymaga złożonej logiki synchronizacji w układzie. Programy muszą być pisane w sposób przyjazny dla pamięci podręcznej, aby uniknąć cykli oczekiwania podczas pobierania danych.
Wiele z tych problemów można by uniknąć, gdyby znaczna ilość pamięci RAM znajdowała się bezpośrednio w układzie procesora. Nie musi to być wyjątkowa aranżacja: może włożyć 1-4 GB na układ, w zależności od jego klasy i pozwolić na zainstalowanie dodatkowej pamięci osobno.
Jestem pewien, że istnieją dobre powody, dla których Intel, AMD i tym podobne nie robią tego. Jakie są te powody? Czy to nie ma miejsca na chipie?
Odpowiedzi:
Haswell Intela (a przynajmniej te, które zawierają procesor graficzny Iris Pro 5200) oraz POWER7 i POWER8 IBM, zawierają wbudowaną pamięć DRAM „eDRAM”.
Jedną ważną kwestią, która sprawiła, że eDRAM do niedawna nie był powszechny, jest to, że proces wytwarzania pamięci DRAM nie jest z natury kompatybilny z procesami logicznymi, dlatego należy uwzględnić dodatkowe kroki (które zwiększają koszty i zmniejszają wydajność), gdy pożądana jest eDRAM. Musi więc istnieć ważny powód, aby chcieć go włączyć, aby zrównoważyć tę niekorzystną sytuację ekonomiczną. Alternatywnie, pamięć DRAM można umieścić na osobnej matrycy, która jest produkowana niezależnie, ale następnie zintegrowana z tym samym pakietem co procesor. Zapewnia to większość korzyści płynących z lokalizacji bez trudności z produkcją obu w prawdziwie zintegrowany sposób.
Innym problemem jest to, że DRAM nie jest podobny do SRAM, ponieważ nie przechowuje swojej zawartości w nieskończoność podczas zasilania, a odczytanie go niszczy również przechowywane dane, które należy później zapisać. Dlatego należy go okresowo odświeżać i po każdym czytaniu. A ponieważ ogniwo DRAM jest oparte na kondensatorze, ładowanie lub rozładowywanie jest wystarczające, aby wyciek nie zniszczył jego wartości, zanim następne odświeżenie nie zajmie skończonej ilości czasu. Ten czas ładowania nie jest wymagany w przypadku SRAM, który jest tylko zatrzaskiem; w konsekwencji może być taktowany z taką samą szybkością jak procesor, podczas gdy pamięć DRAM jest ograniczona do około 1 GHz przy zachowaniu rozsądnego zużycia energii. Powoduje to, że DRAM ma większe nieodłączne opóźnienie niż SRAM, co sprawia, że nie warto używać go dla wszystkich oprócz największych pamięci podręcznych, w przypadku których zmniejszy się wskaźnik pominięć.
Ponadto, jeśli chodzi o opóźnienie, dużą część trudności stanowią fizyczne odległości, które muszą pokonać sygnały. Światło może przemieszczać się tylko 10 cm w okresie taktowania procesora 3 GHz. Oczywiście sygnały nie przemieszczają się w poprzek matrycy i nie rozprzestrzeniają się z prędkością zbliżoną do prędkości światła ze względu na potrzebę buforowania i rozkładania, co powoduje opóźnienia propagacji. Zatem maksymalna odległość, jaką pamięć może znajdować się od procesora w celu utrzymania 1 cyklu opóźnienia, wynosi najwyżej kilka centymetrów, ograniczając ilość pamięci, którą można pomieścić w dostępnym obszarze. Procesor Nehalem Intela faktycznie zmniejszył pojemność pamięci podręcznej L2 w porównaniu do Penryna, aby częściowo poprawić jego opóźnienie, co doprowadziło do wyższej wydajności. * Jeśli tak bardzo nie dbamy o opóźnienie, to nie ma powodu, aby umieszczać pamięć w pakiecie,
Należy również zauważyć, że wskaźnik trafień w pamięci podręcznej jest bardzo wysoki w przypadku większości obciążeń: znacznie powyżej 90% w prawie wszystkich praktycznych przypadkach i nierzadko nawet powyżej 99%. Tak więc korzyść z włączenia większych wspomnień do pamięci jest z natury ograniczona do zmniejszenia wpływu tych kilku procent braków. Procesory przeznaczone na rynek serwerów korporacyjnych (takie jak POWER) zwykle mają ogromne pamięci podręczne i mogą z korzyścią zawierać eDRAM, ponieważ przydatne jest dostosowanie do dużych zestawów roboczych wielu obciążeń korporacyjnych. Haswell ma go do obsługi GPU, ponieważ tekstury są duże i nie można ich umieścić w pamięci podręcznej. Są to obecnie przypadki użycia eDRAM, a nie typowe obciążenia komputerów stacjonarnych lub HPC, które są bardzo dobrze obsługiwane przez typowe hierarchie pamięci podręcznej.
Aby rozwiązać niektóre problemy poruszone w komentarzach:
Te pamięci podręczne eDRAM nie mogą być używane zamiast pamięci głównej, ponieważ zostały zaprojektowane jako pamięci podręczne ofiar L4. Oznacza to, że są one niestabilne i skutecznie adresowalne pod względem zawartości, dzięki czemu przechowywane w nich dane nie są traktowane jako rezydujące w żadnym konkretnym miejscu i mogą zostać odrzucone w dowolnym momencie. Te właściwości są trudne do pogodzenia z wymogiem, aby pamięć RAM była bezpośrednio odwzorowana i trwała, ale ich zmiana sprawiłaby, że pamięci podręczne byłyby bezużyteczne zgodnie z ich przeznaczeniem. Oczywiście możliwe jest osadzenie pamięci o bardziej konwencjonalnej konstrukcji, tak jak ma to miejsce w mikrokontrolerach, ale nie jest to uzasadnione w systemach z dużymi pamięciami, ponieważ małe opóźnienia nie są tak korzystne w pamięci głównej, jak w pamięci podręcznej, więc powiększanie lub dodanie pamięci podręcznej jest bardziej opłacalną propozycją.
Jeśli chodzi o możliwość bardzo dużych pamięci podręcznych o pojemności rzędu gigabajtów, pamięć podręczna musi być co najwyżej wielkości zestawu roboczego dla aplikacji. Aplikacje HPC mogą radzić sobie z zestawami danych terabajtowych, ale mają dobrą lokalizację czasową i przestrzenną, więc ich zestawy robocze zwykle nie są bardzo duże. Aplikacje z dużymi zestawami roboczymi to np. Bazy danych i oprogramowanie ERP, ale rynek procesorów zoptymalizowanych pod kątem tego rodzaju obciążenia jest ograniczony. O ile oprogramowanie tego naprawdę nie potrzebuje, dodanie większej ilości pamięci podręcznej zapewnia bardzo szybko zmniejszające się zwroty. Ostatnio widzieliśmy procesory zdobywające instrukcje pobierania wstępnego, więc pamięci podręczne mogą być używane bardziej wydajnie: można użyć tych instrukcji, aby uniknąć błędów spowodowanych nieprzewidywalnością wzorców dostępu do pamięci, a nie bezwzględnym rozmiarem zestawu roboczego,
* Poprawa opóźnień wynikała nie tylko z mniejszego rozmiaru pamięci podręcznej, ale również z powodu zmniejszenia asocjatywności. Nastąpiły znaczące zmiany w całej hierarchii pamięci podręcznej w Nehalem z kilku różnych powodów, z których nie wszystkie koncentrowały się na poprawie wydajności. Tak więc, chociaż wystarcza to na przykład, nie jest to pełne konto.
źródło
Głównymi powodami, dla których większa pamięć (GB pamięci DRAM) nie jest uwzględniona w samej matrycy procesora, są przede wszystkim koszty. Przestrzeń matryc procesora jest znacznie droższa ze względu na proces produkcyjny wymagany do wykonania bardzo małych funkcji. Może być również niemożliwe wyprodukowanie dwóch na tej samej matrycy, chociaż nie znam wystarczająco dużo szczegółów, aby udzielić tutaj ostatecznej odpowiedzi.
Oceńmy możliwość wprowadzenia dużej ilości pamięci DRAM bezpośrednio na matrycę procesora.
Jednak pomysł przylegania pamięci bliżej procesora nie jest całkowicie straconą przyczyną. Jest to prawdopodobnie miejsce, w którym pamięć będzie się przemieszczać w przyszłości, ponieważ faktem jest, że prędkość światła jest skończona i można tak szybko komunikować się tylko na określonej odległości.
Realistyczne techniki przenoszenia pamięci bliżej procesora (zauważ, że mają one również kompromisy z tradycyjnymi technikami):
Ułóż je na samym procesorze. Jest to już zrobione na Raspberry Pi i jest częścią standardu pamięci Wide I / O. Pamięć jest wciąż oddzielną matrycą wytwarzaną w oddzielnym procesie. Ma to jednak problem polegający na tym, że wszelkie ciepło rozproszone w procesorze musi przejść przez pamięć przed dotarciem do radiatora. Oznacza to, że nie będzie działać na procesory o dużej mocy, i dlatego podstawowymi aplikacjami dla tej technologii są procesory mobilne / inne aplikacje osadzone, w których procesor nie zużywa wielu dziesiątek lub setek watów.
Przyklej je naprawdę blisko na tańszym podłożu. Tak zaprojektowano HBM z bardzo dużą magistralą produkowaną na tańszej matrycy „interposer” i jest to kierunek, w którym zmierza pamięć high-end GPU, ponieważ przepustowość jest znacznie wyższa. Układy pamięci i interposer są nadal produkowane na różnych matrycach od rzeczywistego procesora.
źródło
Istnieje kilka powodów, dla których dodanie dużej ilości pamięci DRAM do procesora może być niemożliwe.
Proces i fab mogą nie zostać skonfigurowane dla DRAM. DRAM wymaga specjalnych elementów obwodu, które wymagają dodatkowych etapów produkcji. Zwiększa to koszty produkcji.
Cała ta pamięć musi zostać przetestowana. Testowanie pamięci wydłuża czas testu. To kolejny wzrost kosztów.
Powiększenie matrycy samo w sobie stanowi wzrost kosztów, ponieważ oznacza mniej matrycy na wafel. Wpływa również na wydajność - jedna wada usuwa większą część wafla. Dla skrajnego przykładu spójrz na koszt pełnoklatkowych (35 mm) czujników obrazu w aparatach.
Opracowanie procesu, który może obsługiwać specjalne rodzaje pamięci, zajmuje więcej czasu, pieniędzy i pracy oraz wiąże się z większym ryzykiem awarii. Każdy problem z pamięcią DRAM opóźniałby zwolnienie procesora. Procesory do komputerów stacjonarnych znajdują się w czołówce produkcji półprzewodników, więc opóźnienie może być ogromną wadą konkurencyjną. (Zobacz: AMD vs. Intel od kilku lat).
DRAM wymaga odczytu analogowego dla odczytów, a także okresowego odświeżania. Nie jestem ekspertem od pamięci DRAM, ale wątpię, aby mógł być tak szybki jak wysokiej klasy procesor, bez względu na to, czy jest poza chipem, czy na chipie. Prawdopodobnie nadal będziesz mieć problem z buforowaniem SRAM.
Nawet jeśli uda ci się rozwiązać powyższe problemy i wrzucić kilka gigabajtów pamięci DRAM do procesora, nadal nie wystarczy uruchomić komputer stacjonarny, laptop lub serwer, więc i tak będziesz musiał mieć pamięć poza układem .
źródło
Oprócz innych odpowiedzi na temat takiego systemu można powiedzieć więcej. Przeniesienie pamięci do głównej matrycy obejmowałoby wiele innych problemów inżynieryjnych. Trzeba będzie przekierować autobusy, wbudować kontroler DMA w główny procesor, zrestrukturyzować magistralę IRQ i ustalić, jak pozbyć się całego dodatkowego ciepła, które można byłoby wydać w skoncentrowanym miejscu. Oznacza to, że producent płyty głównej również musiałby się zaangażować, aby wesprzeć tak istotną zmianę. Podczas gdy systemy klasy wyższej prawdopodobnie skorzystałyby na takiej zmianie, systemy klasy wyższej prawdopodobnie wymagałyby znacznego chłodzenia. Wątpię, czy przeciętny laptop poradziłby sobie z takim układem, na przykład.
Taki układ byłby znacznie droższy, chociaż cena głównej płyty głównej spadłaby (choć prawdopodobnie nie znacznie). Jeśli widziałeś pakiety kontrolera DMA oraz pakiety pamięci RAM, trudno byłoby uwierzyć, że cała ta logika mogłaby zostać wciśnięta w jedną matrycę, która nie byłaby znacznie większa. Pamiętaj również, że procesory są wycinane z dużych płytek o określonym rozmiarze. Oznacza to, że producent miałby również znacznie mniej procesorów na wafel, co również zwiększyłoby całkowity koszt.
Należy pamiętać, że nie mówimy o zużyciu mocy w całym systemie, co by się zmniejszyło, ale raczej o większej koncentracji mocy (a więc i ciepła) w jednym obszarze, co prawdopodobnie zwiększyłoby prawdopodobieństwo niepowodzenie.
Wreszcie, jest jeszcze jedna wada, a mianowicie możliwość zapewnienia niestandardowych systemów. Obecnie producenci mogą wybierać systemy z identycznymi procesorami, ale o różnej ilości pamięci lub różnymi procesorami, ale o tej samej ilości pamięci, w zależności od preferencji klienta. Aby zaoferować wiele różnych konfiguracji, musieliby zbudować różne matryce, każda na innej linii montażowej.
AMD aktywnie wykorzystuje technologię, która faktycznie działa w ten sposób, w której każda część matrycy procesora jest dyskretną jednostką logiczną, którą można wymienić na różne konfiguracje. W przyszłości, jeśli taki projekt jest wykonalny, bardzo dobrze moglibyśmy zobaczyć procesory, które oferują pamięć wewnętrzną jako drogie uaktualnienie modułu, być może wymieniając w zamian pewną moc obliczeniową lub inne poprawki. Na przykład, pewnego dnia możemy mieć wybór między 256 rdzeniami bez wbudowanej pamięci lub 128 rdzeniami z wbudowaną pamięcią, a może nawet inne konfiguracje, takie jak część GPU, część procesora, część pamięci RAM.
źródło
Prawie wszystkie powyższe + jeszcze jeden dodatkowy problem: ciepło.
Ogniwa DRAM są zasadniczo nieszczelnymi kondensatorami. A dielektrykiem tutaj jest sama warstwa SiO2. Wraz ze wzrostem temperatury prądy upływowe wzrastają proporcjonalnie. Te rozładowują komórki DRAM znacznie szybciej, co wymagałoby znacznie szybszych częstotliwości odświeżania, co zwiększyłoby złożoność, wymagany prąd i oczywiście dodało nieco więcej ciepła.
źródło
Oprócz udzielonych odpowiedzi istnieje jeszcze jeden dodatkowy aspekt: Odpady spowodowane błędami produkcyjnymi:
Powiedzmy, że 1/100 wszystkich procesorów danego modelu jest wadliwych (w rzeczywistości jest to mniej, oczywiście, 1/100 łatwiej jest obliczyć), a 1/100 wszystkich wyprodukowanych pamięci RAM jest wadliwych.
Gdyby oba komponenty zostały połączone w jednym układzie, 1/100 wszystkich układów miałaby wadliwy procesor, a 1/100 wszystkich układów miałaby wadliwą pamięć RAM.
Oznaczałoby to:
W przypadku oddzielnych układów scalonych obliczenia są następujące:
Zauważ, że jeden GB pamięci RAM jest zwykle wykonany w postaci banku składającego się z ośmiu układów, więc nie musisz łączyć dwóch, ale 9 komponentów w jeden układ, jeśli chcesz umieścić pamięć RAM i procesor na tym samym układzie. Doprowadziłoby to do około 865 wadliwych części 10000 wyprodukowanych w prostym przykładzie powyżej.
Procesory „IBM Cell” miały właśnie ten problem. Konsola „Playstation” używała częściowo uszkodzonych układów; oprogramowanie Playstation zostało napisane w taki sposób, że wadliwe rdzenie i pamięci SRAM nie były używane.
źródło
Istnieją dwa typy pamięci RAM. Są to statyczna pamięć RAM i dynamiczna pamięć RAM. Pamięć statyczna jest bardzo szybka, ale wiąże się z wyższym kosztem. Tymczasem dynamiczna pamięć RAM jest wolniejsza w porównaniu ze statyczną pamięcią RAM, ale wiąże się z niskim kosztem w porównaniu ze statyczną pamięcią RAM.
Pamięć podręczna wpada do statycznej pamięci RAM. widać, że są w rozmiarach KB lub MB. Oni są szybcy. Ale wysoki koszt.
źródło
Oprócz innych wymienionych powodów wiele systemów ma więcej niż jeden rdzeń procesora. W czasach, gdy informacje przechowywane w głównej pamięci DRAM są spójne ze wszystkimi buforowanymi kopiami, wszystkie procesory, które nie mają buforowanych informacji, będą miały do nich równy dostęp. Niektóre architektury zostały zaprojektowane w oparciu o założenie, że każdy rdzeń procesora będzie „posiadał” zakres przestrzeni adresowej, a nawet jeśli procesor jest w stanie uzyskać dostęp do pamięci, która jest własnością innych procesorów, dostęp taki będzie znacznie wolniejszy niż dostęp do własnej pamięci , ale x86 zasadniczo nie jest implementowane w taki sposób.
Jeśli system został zaprojektowany w oparciu o założenie, że rdzenie procesorów posiadają określone zakresy adresów, a kod powinien starać się zminimalizować użycie zakresów adresów innych procesorów, wówczas rozsądne byłoby, aby każdy kod procesora zawierał dużą ilość pamięci na chipie. Taki projekt może skrócić czas wymagany do uzyskania przez rdzeń procesora dostępu do własnej pamięci, ale prawdopodobnie wydłużyłby czas wymagany do uzyskania dostępu do pamięci innego procesora. O ile system nie został zaprojektowany w oparciu o takie założenie, istnieje prawdopodobieństwo, że dane zostaną rozdzielone między procesory bez względu na to, kto był potrzebny. Nawet jeśli dodatkowy czas wymagany na dostęp do danych z innego procesora (w porównaniu z zewnętrznym systemem pamięci) był tylko o połowę krótszy niż czas zaoszczędzony na wewnętrznym dostępie,
Gdyby zaprojektować system od zera, aby pasował do współczesnych technologii, niejednolita architektura pamięci mogłaby pozwolić na więcej „huku za grosze” niż taka, która musi umożliwić wszystkim procesorom efektywny dostęp do całej pamięci. Biorąc jednak pod uwagę dzisiejsze projekty oprogramowania, posiadanie zewnętrznego systemu pamięci współdzielonego przez procesory może być bardziej wydajne niż próbowanie masowego przechowywania danych w samych procesorach.
źródło
Chociaż wszystkie poprzednie odpowiedzi słusznie wskazują, dlaczego tak trudno jest dodać więcej pamięci do procesora, prawdą jest również, że we współczesnych procesorach jest dość dużo pamięci.
W operacjach w czasie rzeczywistym, w których ważne są deterministyczne opóźnienia, nie jest niczym niezwykłym wykorzystywanie wbudowanej pamięci podręcznej jako pamięci adresowalnej dla kodu i / lub danych. Zaletą jest szybki i stały czas dostępu, a wadą jest to, że pamięć na chipie jest dość ograniczona.
źródło
Problemów, które opisujesz w swoim pierwotnym pytaniu, można uniknąć tylko wtedy, gdy CAŁA pamięć w urządzeniu znajduje się w CPU. Każda dodatkowa pamięć dodana do maszyny za pośrednictwem gniazd na płycie głównej będzie podlegać tym samym opóźnieniom, które opisujesz i wymagałaby urządzeń sterujących i logicznych między procesorem / pamięcią RAM a wbudowaną pamięcią RAM.
Pamięć RAM jest tania i zwykle jest rozszerzana przez użytkowników jeden lub nawet dwa razy między aktualizacjami procesorów.
Pamiętaj także, że typowe wywołanie „Fetch”, nawet jeśli pamięć RAM działa z częstotliwością taktowania procesora, spowoduje szereg bezczynnych tyknięć na procesorze.
Tradycyjna organizacja pamięci na maszynie to piramida z rejestrami CPU u góry, następnie pamięć podręczna, następnie pamięć RAM, a następnie dysk. Zazwyczaj maszyny, które działają dobrze, mają połączenie przyzwoitej szybkości zegara, rozsądnej ilości pamięci podręcznej, dobrej ilości pamięci RAM i szybkiego dysku twardego (lub macierzy). W ostatnich latach wydajność dysków zazwyczaj zapewnia najlepszy wzrost wydajności w większości płyt PC i płyt o wysokich obrotach, dyski z pamięcią podręczną i dyski półprzewodnikowe zapewniają dobry wzrost wydajności.
Tak, maszyna z całą pamięcią RAM na chipie działałaby dobrze w nowoczesnych aplikacjach, ale maszyna z częścią RAM na chipie ze standardowym systemem operacyjnym prawdopodobnie nie zapewni wzrostu wydajności, który może się wydawać.
źródło