Pamięć Scratchpada
Pamięć Scratchpad ( SPM ), znana również jako scratchpad , scratchpad RAM lub magazyn lokalny w terminologii komputerowej , to pamięć wewnętrzna, zwykle szybka, używana do tymczasowego przechowywania obliczeń, danych i innych prac w toku. W odniesieniu do mikroprocesora (lub CPU ) notatnik odnosi się do specjalnej szybkiej pamięci używanej do przechowywania małych elementów danych w celu ich szybkiego wyszukiwania. Jest podobny do użycia i rozmiaru notatnika w życiu: notatnik do wstępnych notatek, szkiców lub pism itp. Kiedy notatnik jest ukrytą częścią pamięci głównej, jest czasami określany jako pamięć wypukłości .
W niektórych systemach można ją uznać za podobną do pamięci podręcznej L1 , ponieważ jest następną pamięcią najbliżej jednostki ALU po rejestracji procesora , z wyraźnymi instrukcjami przenoszenia danych do iz pamięci głównej , często przy użyciu transferu danych opartego na DMA . W przeciwieństwie do systemu wykorzystującego pamięci podręczne, system z notatnikami jest systemem o nierównomiernym dostępie do pamięci (NUMA) opóźnienia, ponieważ opóźnienia dostępu do pamięci różnych notatników i pamięci głównej są różne. Inną różnicą w stosunku do systemu wykorzystującego pamięć podręczną jest to, że notatnik zwykle nie zawiera kopii danych, które są również przechowywane w pamięci głównej.
Scratchpady są wykorzystywane do uproszczenia logiki buforowania i zagwarantowania, że jednostka może pracować bez rywalizacji o pamięć główną w systemie wykorzystującym wiele procesorów, zwłaszcza w wieloprocesorowym systemie na chipie dla systemów wbudowanych . Nadają się głównie do przechowywania tymczasowych wyników (takie, jakie można znaleźć w stosie procesora), które zwykle nie muszą być zawsze zapisywane w pamięci głównej; jednak gdy są zasilane przez DMA , mogą być również używane zamiast pamięci podręcznej do odzwierciedlania stanu wolniejszej pamięci głównej. Te same kwestie lokalności odniesienia stosuje się w odniesieniu do efektywności użytkowania; chociaż niektóre systemy umożliwiają dostęp do prostokątnych zestawów danych za pomocą strided DMA. Inną różnicą jest to, że notatniki są jawnie manipulowane przez aplikacje. Mogą być przydatne w aplikacjach czasu rzeczywistego , w których zachowanie pamięci podręcznej utrudnia przewidywalność taktowania.
Brudnopisy nie są używane w głównych procesorach do komputerów stacjonarnych, gdzie wymagana jest ogólność, aby starsze oprogramowanie mogło działać z pokolenia na pokolenie, w których rozmiar dostępnej pamięci na chipie może się zmieniać. Lepiej sprawdzają się w systemach wbudowanych, procesorach specjalnego przeznaczenia i konsolach do gier , gdzie układy scalone są często produkowane jako MPSoC , a oprogramowanie jest często dostrajane do jednej konfiguracji sprzętowej.
Przykłady użycia
- Fairchild F8 z 1975 roku zawierał 64 bajty notatnika.
- TI -99/4A ma 256 bajtów pamięci notatnika na 16-bitowej szynie zawierającej rejestry procesora TMS9900
- Cyrix 6x86 to jedyny procesor do komputerów stacjonarnych zgodny z x86 , który zawiera dedykowany notatnik.
- SuperH , używany w konsolach Sega, mógł blokować pamięci podręczne na adres poza pamięcią główną do wykorzystania jako notatnik.
- R3000 Sony PS1 miał notatnik zamiast pamięci podręcznej L1. Tutaj można było umieścić stos procesora, przykład tymczasowego wykorzystania przestrzeni roboczej.
- Koprocesor równoległy Epiphany firmy Adapteva zawiera lokalne magazyny dla każdego rdzenia, połączone siecią na chipie , z możliwym DMA między nimi i łączami poza chipem (prawdopodobnie z DRAM). Architektura jest podobna do Sony Cell, z wyjątkiem tego, że wszystkie rdzenie mogą bezpośrednio adresować swoje notatniki, generując wiadomości sieciowe na podstawie standardowych instrukcji ładowania/zapisywania.
- Sony PS2 Emotion Engine zawiera notatnik o pojemności 16 KB , do i z którego transfery DMA mogą być wysyłane do jego GS i pamięci głównej.
- Cell są ograniczone wyłącznie do pracy w ich „lokalnym sklepie”, polegając na DMA do transferów z/do pamięci głównej i między lokalnymi sklepami, podobnie jak notatnik. W związku z tym dodatkową korzyścią jest brak sprzętu do sprawdzania i aktualizowania spójności między wieloma pamięciami podręcznymi: projekt wykorzystuje założenie, że obszar roboczy każdego procesora jest oddzielny i prywatny. Oczekuje się, że korzyści te staną się bardziej zauważalne, gdy liczba procesorów będzie rosła w przyszłości „wielordzeniowej”. Jednak z powodu wyeliminowania niektórych logik sprzętowych dane i instrukcje aplikacji w SPE muszą być zarządzane przez oprogramowanie, jeśli całe zadanie w SPE nie mieści się w lokalnym sklepie.
- Wiele innych procesorów umożliwia blokowanie linii pamięci podręcznej L1.
- Większość cyfrowych procesorów sygnałowych używa notatnika. Wiele wcześniejszych akceleratorów 3D i konsol do gier (w tym PS2) wykorzystywało procesory DSP do transformacji wierzchołków . Różni się to od podejścia opartego na strumieniu nowoczesnych procesorów graficznych, które mają więcej wspólnego z funkcjami pamięci podręcznej procesora.
- Procesor graficzny NVIDIA 8800 działający pod kontrolą CUDA zapewnia 16 KB notatnika (NVIDIA nazywa to pamięcią współdzieloną) na pakiet wątków, gdy jest używany do zadań GPGPU . Scratchpad był również używany w późniejszych procesorach graficznych Fermi ( seria GeForce 400 ).
- PhysX firmy Ageia zawiera pamięć RAM typu scratchpad w sposób podobny do Cell; teoria tej konkretnej jednostki przetwarzającej fizykę jest taka, że hierarchia pamięci podręcznej jest mniej użyteczna niż fizyka zarządzana przez oprogramowanie i obliczenia kolizji. Te pamięci są również bankowane, a transferami między nimi zarządza przełącznik.
- Procesor Intel Knights Landing ma 16 GB pamięci MCDRAM, którą można skonfigurować jako pamięć podręczną, pamięć podręczną lub podzieloną na część pamięci podręcznej i część pamięci podręcznej.
- Movidius Myriad 2 , jednostka przetwarzania obrazu , zorganizowana w architekturze wielordzeniowej z dużym, wieloportowym, współdzielonym notatnikiem.
- Graphcore zaprojektował akcelerator AI oparty na pamięciach typu scratchpad
Alternatywy
Kontrola pamięci podręcznej a notatniki
Niektóre architektury, takie jak PowerPC, próbują uniknąć konieczności blokowania pamięci podręcznej lub notatników za pomocą instrukcji kontroli pamięci podręcznej . Oznaczanie obszaru pamięci za pomocą „Blok pamięci podręcznej danych: zero” (przydzielanie wiersza, ale ustawianie jego zawartości na zero zamiast ładowania z pamięci głównej) i odrzucanie go po użyciu („Blok pamięci podręcznej danych: unieważnienie”, sygnalizujący, że pamięć główna nie” nie otrzymywać żadnych zaktualizowanych danych), pamięć podręczna zachowuje się jak notatnik. Utrzymuje się ogólną zasadę, że są to wskazówki, a podstawowy sprzęt będzie działał poprawnie niezależnie od rzeczywistego rozmiaru pamięci podręcznej.
Jeśli chodzi o komunikację międzyprocesorową w konfiguracji wielordzeniowej, istnieją podobieństwa między międzylokalnym sklepem DMA komórki a współdzieloną konfiguracją pamięci podręcznej L2, jak w Intel Core 2 Duo lub niestandardowym komputerze typu powerPC konsoli Xbox 360: pamięć podręczna L2 umożliwia procesorom udostępnianie wyników bez być zapisany w pamięci głównej. Może to być zaletą, gdy zestaw roboczy dla algorytmu obejmuje całość pamięci podręcznej L2. Jednak gdy program jest napisany w celu wykorzystania DMA między magazynami lokalnymi, komórka ma tę zaletę, że każdy inny magazyn lokalny służy ZARÓWNO prywatnemu obszarowi roboczemu dla pojedynczego procesora ORAZ punktowi współdzielenia między procesorami; tj. inne sklepy lokalne są na podobnej stopie oglądanej z jednego procesora, jak współdzielona pamięć podręczna L2 w konwencjonalnym chipie. Kompromisem jest marnowanie pamięci na buforowanie i złożoność programowania do synchronizacji, chociaż byłoby to podobne do stron wstępnie buforowanych w konwencjonalnym chipie. Domeny, w których korzystanie z tej funkcji jest skuteczne, obejmują:
- Przetwarzanie potokowe (w którym osiąga się ten sam efekt, co zwiększenie rozmiaru pamięci podręcznej L1 poprzez podzielenie jednego zadania na mniejsze części)
- Rozszerzenie zestawu roboczego, np. idealne miejsce na sortowanie przez scalanie, w którym dane mieszczą się w granicach 8×256 KB
- Przesyłanie współdzielonego kodu, na przykład ładowanie fragmentu kodu do jednego SPU, a następnie kopiowanie go stamtąd do innych, aby uniknąć ponownego uderzenia w pamięć główną
Konwencjonalny procesor mógłby uzyskać podobne korzyści dzięki instrukcjom kontroli pamięci podręcznej, na przykład umożliwiając wstępne pobieranie do L1 z pominięciem L2 lub wskazówkę eksmisji, która sygnalizowała transfer z L1 do L2, ale nie zapisuje się do pamięci głównej; jednak obecnie żaden system nie oferuje tej możliwości w użytecznej formie, a takie instrukcje w efekcie powinny odzwierciedlać wyraźny transfer danych między obszarami pamięci podręcznej używanymi przez każdy rdzeń.
Zobacz też
Notatki
Linki zewnętrzne
- Rajeshwari Banakar, Pamięć Scratchpad: alternatywa projektowa dla pamięci podręcznej. Pamięć wewnętrzna w systemach wbudowanych // CODES'02. 6-8 maja 2002