Co poszukiwanie ma wspólnego z pamięcią masową?

13

W przypadku pamięci mechanicznej działanie dysku niskiego poziomu seek()powoduje, że głowice dysków twardych przemieszczają się w miejsce, dzięki czemu są gotowe do odczytu z danego obszaru dysku.

Dzięki pamięci półprzewodnikowej, takiej jak karty SD, dyski flash i dyski SSD, nie ma ruchomych części sprzętu, a jedynie sygnały elektryczne.

Zakładając, że nieulotna technologia pamięci RAM NAND jest podstawą sprzętu, jaką funkcję seek()faktycznie wykonuje na poziomie sprzętowym takiego urządzenia?

Żeby było jasne, już wiem, że dzieje się tak:

  1. Program przestrzeni użytkownika wywołuje seek()wywołanie systemowe lub odpowiednik specyficzny dla systemu operacyjnego

  2. Jądro interpretuje wywołanie systemowe i wysyła komunikat do kontrolera SATA w celu wyszukania

  3. Kontroler SATA interpretuje polecenie i mówi podłączonemu urządzeniu dyskowemu, które jest w stanie stałym, aby szukał (a może jest wystarczająco inteligentny, aby rozpoznać, że jest w stanie stałym, a nawet nie mówi?)

  4. Co ja nie wiem, jest urządzenie półprzewodnikowe robi ??? z poleceniem „szukać”.

Jeśli istnieją szczegóły, które zależą od systemu operacyjnego, załóż względnie standardową wersję GNU / Linux na komputery stacjonarne z jądrem w wersji 3.2.

allquixotic
źródło
2
Myślę, że robi duży gruby NOP. Żartuję, gdybym był dyskiem SSD, zrobiłbym „zapobiegawcze” czytanie do pamięci podręcznej, aby upewnić się, że wszystko stanie się tak szybko, jak to możliwe. Ale ponieważ jest to tylko niejasne przypuszczenie czegoś, o czym nie mam najmniejszego pojęcia, więc weź to z
odrobiną
Nie sądzę, aby operacje wyszukiwania były już używane w interfejsie pamięci niskiego poziomu. Gdyby istniały, po prostu zmieniłyby zapisaną pozycję dla następnej operacji we / wy.
David Schwartz

Odpowiedzi:

4

jeśli masz na myśli Linuksa, szukaj nadal przesuwa się do przodu o wymaganą liczbę bajtów. Na przykład:

dd if=/dev/zero of=/dev/sdb bs=512 SEEK=2

Zacznie kopiować zera 1024 bajty na początku dysku, nie ma znaczenia, czy sdb jest kartą SD, czy dyskiem SSD, z powodu drobnej rzeczy zwanej abstrakcją, rzeczywistą mechaniką tego zajmuje się na niższym poziomie.

Aktualizacja

Rozumiem, co teraz mówisz. Zgodnie z przykładem mojej karty SD pamięć flash używa czegoś zwanego stronami , a strony mają określony rozmiar. kiedy przychodzi wyszukiwanie, system operacyjny wysyła polecenie do karty SD / kontrolera karty, aby przejść do określonej strony do odczytu i zapisu.

MDMoore313
źródło
Wiem, że logicznie porusza się on do przodu w pliku , ale oprócz logicznego wpływu na plik w kategoriach abstrakcyjnych „bloków”, czy sprzęt robi coś innego, kiedy tak naprawdę nakazuje mu szukać? W lseek()razie potrzeby możesz spojrzeć na wywołanie systemowe jako konkretny przykład. Wiem, że to wywołanie systemowe nie tylko szuka logiki, ale także powoduje ruch głowic HDD podczas pracy z dyskiem mechanicznym, więc co robi SSD?
allquixotic
@allquixotic Zaktualizowałem swoją odpowiedź.
MDMoore313
1
Nawet na fizycznie obracającym się dysku twardym system operacyjny wysyła polecenie (polecenie SCSI, polecenie ATA / SATA lub polecenie pamięci masowej USB), aby uzyskać napęd LBA X. Host w rzeczywistości nie informuje napędu, aby przesunął na dowolnym poziomie, oprogramowanie układowe napędu to robi. Jeśli chcesz dowiedzieć się, co robi oprogramowanie układowe SSD w odpowiedzi na polecenia pamięci, zapoznaj się z niektórymi specyfikacjami projektu Jasmine OpenSSD, jeśli możesz je znaleźć, niektóre z nich wyjaśniają rzeczy na bardzo niskim poziomie.
LawrenceC