Jest to być może głupie pytanie i może być wynikiem nieporozumienia. Studiuję teraz procesory, a zwłaszcza pamięć. Właśnie czytałem o tym, jak szybsza jest pamięć SRAM niż DRAM, ale jest droższa. SRAM jest bardzo drogi: kupiłem trochę i znalazłem zasilaną baterią kartę SRAM z 16 MB za około 400 USD.
Niedawno znajomy wspomniał, że prowadzi Linuksa ze szczeniakami w pamięci RAM i że jest szybki. Zauważyłem jednak, że mały rdzeń linux może być jeszcze mniejszy ... tak mały jak 8 MB! To skłoniło mnie do myślenia: czy możemy uruchomić Linux w SRAM? Czy to pytanie jest nawet dobrze sformułowane?
Googlowanie tego pytania okazało się nieskuteczne, ale wywołało jeszcze więcej pytań. Czy można uruchomić Linuksa w pamięci podręcznej L3? Intel Core i7 może mieć pamięć podręczną L3 wystarczająco dużą, aby zmieścić 8 MB ... ale czy popełniam kategoryczny błąd? Jaka jest różnica między tym a „osadzonym” linuksem?
Oto pytanie: czy możemy uruchomić system Linux w pamięci SRAM lub L3 Cache? Czy jest coś szybszego? Jak szybko możemy linux !?
z.
źródło
Odpowiedzi:
Linux lub inny system operacyjny nie wie, jak działa pamięć RAM. Tak długo, jak kontroler pamięci jest odpowiednio skonfigurowany (np. Ustawione częstotliwości odświeżania dla non-SRAM), system operacyjny nie dba o to, czy działa na zwykłej pamięci dynamicznej (zwykła pamięć RAM), szybkiej pamięci RAM w trybie strony (RAM RAM, z C64-ish razy), rozszerzony tryb wyjścia danych RAM (EDO), synchroniczna pamięć RAM (SDRAM), dowolna z podwójnej prędkości SDRAMS (DDR 1/2/3).
Wszyscy wspierają czytanie i pisanie z przypadkowych miejsc. Wszystko zadziała.
Teraz pamięć podręczna jest nieco inna. Nie musisz pisać do niego, aby zawartość się zmieniła. To przeszkadza. Mimo to jest w pewien sposób użyteczny. Wiem, że coreboot używa pamięci podręcznej jako pamięci podczas rozruchu, zanim kontroler pamięci zostanie poprawnie skonfigurowany. (Aby uzyskać szczegółowe informacje, obejrzyj filmy z rozmów o coreboot podczas FOSDEM 2011).
Więc teoretycznie tak, możesz go użyć.
ALE : W przypadku zadań praktycznych system z 1 GB „zwykłej” „średniej prędkości” pamięci będzie działał o wiele lepiej niż z zaledwie kilkoma MB superszybkiej pamięci. Co oznacza, że masz trzy możliwości:
Z wyjątkiem bardzo rzadkich przypadków ten ostatni nie jest rozsądny.
źródło
Tak, możesz, i tak właśnie jest zrobione automatycznie. Najczęściej używane części pamięci RAM są kopiowane w pamięci podręcznej. Jeśli całkowite użycie pamięci RAM jest mniejsze niż rozmiar pamięci podręcznej (jak przypuszczasz), istniejący mechanizm buforowania skopiuje wszystko z pamięci RAM.
Jedyny moment, w którym pamięć podręczna zostanie skopiowana z powrotem do normalnej pamięci RAM, to przejście komputera w tryb uśpienia S3. Jest to konieczne, ponieważ pamięci podręczne są wyłączone w trybie S3.
źródło
Wiele procesorów pozwala na użycie pamięci podręcznej jako pamięci RAM. Na przykład większość nowszych procesorów x86 może konfigurować niektóre regiony jako zapisy z zapisem bez uzupełniania przy odczytach przez MTRR. Można to wykorzystać do wyznaczenia regionu przestrzeni adresowej jako - efektywnie - pamięci podręcznej jako pamięci RAM.
Czy byłoby to korzystne, to kolejne pytanie - zablokowałoby jądro w pamięci RAM, ale jednocześnie zmniejszyłoby efektywny rozmiar pamięci podręcznej. Mogą również wystąpić skutki uboczne (takie jak wyłączenie buforowania dla reszty systemu), które spowodują, że będzie to znacznie wolniejsze.
źródło
„czy możemy uruchomić Linuksa w pamięci podręcznej L3?”
Nie , nie jest to możliwe, ponieważ pamięć podręczna nie jest adresowana bezpośrednio / liniowo.
Ze względu na sposób zaprojektowania pamięci podręcznej rejestr rejestru programowego procesora (IP) nie może wskazywać lokalizacji w pamięci podręcznej.
Pamięć podręczna procesora ma własną „asocjatywność”, która określa sposób, w jaki „normalna” pamięć jest „mapowana” na pamięć cache. Ta funkcja pamięci podręcznej jest jednym z powodów, dla których pamięć podręczna jest tak szybka.
źródło
„czy możemy uruchomić Linuksa w pamięci podręcznej L3?”
Nie, pamięć podręczna służy do przechowywania danych programu i instrukcji gotowych na wypadek, gdyby procesor ich potrzebował. System operacyjny i tak znajdziesz w pamięci podręcznej, ponieważ jest stale używany. Ładowanie całego systemu operacyjnego do pamięci podręcznej nie jest wydajne, ponieważ nie używasz wszystkich ścieżek kodu w jądrze jednocześnie.
„czy możemy uruchomić Linux w SRAM?”
Z pewnością można użyć SRAM z podtrzymaniem bateryjnym jako partycji rozruchowej, a następnie można użyć wbudowanej flagi execute na miejscu. Może to prowadzić do szybszych czasów uruchamiania i nieco szybszych operacji. Jednak głównym czynnikiem jest przepustowość między pamięcią podręczną L3 a miejscem, w którym znajduje się jądro (dysk rozruchowy lub pamięć RAM).
„Czy jest coś szybciej? Jak szybko możemy linux !?”
Zasadniczo producenci sprzętu i programiści systemów operacyjnych pracują nad tym, aby przetwarzanie było jak najszybsze. Jednak twoje pytanie jest bardzo ogólne: czy chcesz przyspieszyć rozruch, zoptymalizować dostęp do systemu plików, przyspieszyć obliczenia lub coś innego. Gdy masz bardziej szczegółowe pytanie, z pewnością możesz zacząć szukać wąskiego gardła i go usunąć. Napęd SRAM z pewnością przyspieszy proces rozruchu. Bardzo fajnie byłoby dostać się do GUI w 3 sekundy.
źródło
W czasach 486 istniały maszyny, w których cała pamięć RAM była SRAM. Wróciło, gdy 8 MB było dużo, ale wydaje się pasować do twoich ograniczeń. Jestem pewien, że 8 MB pamięci SRAM jest teraz znacznie tańsze niż wtedy.
Możesz więc uruchomić Linuksa w SRAM, jeśli maszyna została stworzona w ten sposób. To nie jest teoria; zostało zrobione.
Ale nie w pamięci podręcznej. Pamięć podręczna jest podłączona inaczej, a co ważniejsze inaczej adresowana. Nie możesz rozwiązać tego samego. Fragmenty są odwzorowywane w różny sposób, a nie jako fragment ciągły. A zawartość niekoniecznie jest tym, co widzisz na dysku - nowsze układy Intela wykonują swego rodzaju „kompilację” w samą porę (bardziej jak ponowne kodowanie CISC => RISC-mikro-op), gdzie mikro-operacje to rzeczy które kończą się w pamięci podręcznej. Krótko mówiąc, tym, co znajduje się w pamięci podręcznej, nie jest twój program, ale zmieniony widok, więc nie można go używać jako reprezentacji pamięci programu.
Pytanie brzmi dlaczego. Poza „ponieważ mogę” nie ma tego wiele powodów. System pamięci podręcznej zapewnia największe korzyści prędkości przy znacznie niższych kosztach. I pamiętaj, że koszt to nie tylko dolary ... SRAM wymaga więcej tranzystorów, co oznacza więcej energii elektrycznej.
źródło