Dlaczego pamięć RAM nie jest umieszczana w układzie procesora?


55

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?


29
Pamięć podręczna to pamięć RAM. Spacja i szpilki na kości są na wagę złota.
copper.hat

2
@ copper.hat Pamięć podręczna to pamięć RAM, ale rozmiar pamięci podręcznej stanowi niewielki ułamek zainstalowanej pamięci RAM (zazwyczaj mówimy o zakresach MBytes vs. Gbytes). Zastanawiam się, dlaczego nie włożyć 1 GB do układu CPU.
Lesser Hedgehog

5
Zasadniczo jest zoptymalizowany pod kątem mieszania instrukcji / przepływu danych. Ponadto nie wszystkie dane z / do pamięci RAM przechodzą przez procesor.
copper.hat

1
Im prostsza kostka, tym tańsza. Oznacza to również, że możesz używać różnych rozmiarów i metod procesu.
Journeyman Geek

@LesserHedgehog Istnieje ogólny limit liczby trafień w pamięci podręcznej, więc dodanie większej ilości pamięci podręcznej tak naprawdę nic nie pomaga. Również wiele procesorów faktycznie ma teraz wbudowaną pamięć DRAM, szczególnie w przestrzeni mobilnej / osadzonej (na przykład wiele SoC opartych na ARM).
puszysty

Odpowiedzi:


79

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.


1
Dobrze wyjaśnione, @Oleksandr R. Krótko mówiąc, wygląda na to, że istnieje coś w rodzaju „niedopasowania impedancji” pomiędzy CPU a DRAM, co utrudnia połączenie tych dwóch.
Lesser Hedgehog,

3
I oczywiście SRAM jest wciąż dość ogromny - nawet małe (w porównaniu do RAM) pamięci podręczne zajmują około połowy powierzchni kości na nowoczesnych procesorach (no, z wyjątkiem procesorów ze zintegrowanymi GPU: D).
Luaan

2
Zastanawiam się, czy istnieje sposób na uruchomienie bez pamięci głównej. 128 MB powinno wystarczyć, aby uruchomić uproszczoną dystrybucję Linuksa (lub starszą wersję systemu Windows).
user253751

Nazywa się to „GPU-on-die”, a nie „GPU-on-package”.
AStopher

4
@cybermonkey: Instrukcje są pobierane z pamięci podręcznej L1, a nie z pamięci głównej. Pobranie ich z pamięci głównej byłoby okropne - czas cyklu około 60 ns, co ogranicza procesor do 16 MHz w przypadku konstrukcji jednordzeniowej.
MSalters

17

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.

22

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):

  1. 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.

  2. 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.


5
Spodziewałbym się, że wydajność spadnie, gdy spróbujesz wcisnąć więcej miliardów tranzystorów na jednej dużej matrycy - prawdopodobieństwo uszkodzenia lub usterki wzrasta z każdym dodatkowym urządzeniem. Jeśli podzielisz system na kilka mniejszych części, szansa na pojawienie się błędu na jednym kawałku spadnie znacznie, a koszt odrzucenia tego jednego wadliwego elementu również będzie niższy. Wyobrażam sobie, że bardzo duża kostka byłaby znacznie trudniejsza do wyprodukowania, a wszystkie inne byłyby równe.
John U

4
2

@JohnU - umieszczenie dużej liczby powtarzających się modułów na matrycy ma tę zaletę, że w przypadku wystąpienia defektu można po prostu wyłączyć moduł, w którym się pojawia, i zwolnić matrycę jako zgodną z tańszym standardem (dzieje się to często w przypadku pamięci DRAM, wracając do lat 80., kiedy wiele maszyn, które miały moduły 32 KB, faktycznie używało układów 64 KB z wyłączoną wadliwą sekcją). Może to w rzeczywistości oznaczać, że wydajność wzrośnie po zintegrowaniu pamięci DRAM z procesorami ...
Jules,

7

Istnieje kilka powodów, dla których dodanie dużej ilości pamięci DRAM do procesora może być niemożliwe.

  1. 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.

  2. Cała ta pamięć musi zostać przetestowana. Testowanie pamięci wydłuża czas testu. To kolejny wzrost kosztów.

  3. 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.

  4. 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).

  5. 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.

  6. 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 .


1
Większość pamięci podręcznych jest implementowanych za pomocą ECC, a niektóre najnowsze procesory Intel zawierają chipkill i nadmiarowość bloków dla pamięci podręcznej. Zmniejsza to wymagania testowe i znacznie poprawia wydajność w przypadku większych matryc. W przeciwieństwie do czujnika obrazu nie ma możliwości korekcji błędów, ponieważ informacje nie są znane z góry , a my nie możemy zdecydować, gdy blok pikseli nie działa poprawnie, po prostu zignorować go i użyć zapasowego jego miejsce.
Oleksandr R.

To prawda, że ​​łatwiej uzyskać wyższą wydajność dzięki wspomnieniom. Jak powiedziałem, był to skrajny przykład.
Adam Haun

3

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.


Głównym problemem związanym z tą odpowiedzią jest to, że projekty SoC dla smartfonów faktycznie zawierają pamięć RAM. Nie są one znacznie droższe, w rzeczywistości są tańsze.
MSalters

@MSalters Tyle, że nie są zintegrowane w tej samej kości. Matryce pamięci są osobne, przetestowane i potwierdzone, że działają poprawnie, i są jedynie pakowane razem z matrycą mikroprocesora.
Szczoteczka do zębów

2

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.


2

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:

  • 1 na 10000 układów miałby zarówno wadliwą pamięć RAM, jak i procesor
  • 99 układów miałoby wadliwą pamięć RAM
  • 99 układów miałoby wadliwy procesor
  • W sumie 199 ze 10000 wyprodukowanych części stanowiłoby odpady

W przypadku oddzielnych układów scalonych obliczenia są następujące:

  • 50 z 5000 pamięci RAM jest uszkodzonych
  • 50 z 5000 procesorów jest uszkodzonych
  • 100 na 10000 wyprodukowanych części byłoby odpadami

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.


1
AMD oferowało 3-rdzeniowe procesory przez pewien czas z tego samego powodu. Myślę, że w praktyce części są zwykle testowane na poziomie matrycy przed zapakowaniem, więc twoje obawy dotyczą najbardziej monolitycznych kombinacji procesora i pamięci.
Oleksandr R.

Darpa otrzymała nagrodę za 50-krotną efektywność energetyczną, pokonując ścianę pamięci za pomocą 3dSoC, który jest krajem fantasy w stosunku do inżynierów Intela i Qualcom, z wyjątkiem tego, że darpa to darpa. monolithic3d.com/blog/… SoC (system na chipie) są najlepsze dla równoległych procesorów, co oznacza, że ​​istnieje 1000ds grup zamiast 2/16.
com. Czytelny

1

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.


Nie do końca tak, są szybkie, ale przede wszystkim dlatego, że odległość, którą muszą pokonać dane, jest znacznie mniejsza niż w DRAM.
AStopher

3
W rzeczywistości komórka SRAM jest szybsza, ponieważ jest prostsza. Jest to cyfrowy bistabilny obwód. Jeśli przypadkowo ustawisz go na wartość analogową 0,8, naprawi się on, przechodząc do stabilnej pozycji 1.0. DRAM nie ma tak stabilnych stanów. Nie odchodzi od stanów pośrednich. Co gorsza, zmierza w kierunku takich stanów, dlatego potrzebujesz dodatkowych korekcyjnych obwodów „odświeżających”.
MSalters

@MSalters: Komórka SRAM NIE jest prostsza niż komórka DRAM. Masz rację, że jest znacznie bardziej stabilny, co sprawia, że korzystanie z niego jest prostsze (zarówno pod względem obsługi obwodów, jak i schematów czasowych). Ale ogniwa SRAM mają około 6 razy więcej obwodów na bit niż DRAM.
Ben Voigt,

1
@BenVoigt: W liczbie tranzystorów tak - 6T vs 1T. Ale DRAM ma kondensator, który jest dość dziwnym elementem. SRAM to tylko tranzystory połączone ze sobą.
MSalters

Okazuje się, że kondensator w pamięci DRAM został zaimplementowany również jako tranzystor
Ben Voigt,

1

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.


2
Niejednorodne architektury pamięci są już używane (a nawet powszechne) dzisiaj. W przypadku procesora ze zintegrowanymi kontrolerami pamięci stosowanymi w systemie wieloprocesorowym dane przechowywane w pamięci fizycznej innego procesora są bardziej odległe i dostępne z większym opóźnieniem niż w lokalnej pamięci RAM. W praktyce w tych systemach dzieje się tak, że procesory są wyposażone w dodatkowe poziomy pamięci podręcznej, a ruch koherencji jest częściowo obsługiwany przez strukturę łączącą. POWER7 i POWER8 są tego typu.
Oleksandr R.

1

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.


1

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ć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.