Natywne kolejkowanie poleceń - Native Command Queuing

NCQ pozwala samemu napędowi określić optymalną kolejność pobierania zaległych żądań. Może to, tak jak tutaj, pozwolić napędowi na spełnienie wszystkich żądań przy mniejszej liczbie obrotów, a tym samym w krótszym czasie.

W obliczeniowej , Native Command Queuing ( NCQ ) jest przedłużeniem Serial ATA protokół umożliwiający dyski twarde do wewnętrznie zoptymalizować kolejność, w której otrzymał polecenia odczytu i zapisu są wykonywane. Może to zmniejszyć ilość niepotrzebnych ruchów głowicy dysku, skutkując zwiększoną wydajnością (i nieznacznie zmniejszonym zużyciem dysku) w przypadku obciążeń, w których wiele jednoczesnych żądań odczytu / zapisu jest wyjątkowych, najczęściej występujących w aplikacjach typu serwerowego .

Historia

Native Command Queuing zostało poprzedzone wersją Tagged Command Queuing (TCQ) w Parallel ATA . Próba integracji TCQ przez ATA była ograniczona przez wymaganie, aby adaptery magistrali hosta ATA używały protokołów urządzeń magistrali ISA do interakcji z systemem operacyjnym. Wynikające z tego wysokie obciążenie procesora i znikomy wzrost wydajności przyczyniły się do braku akceptacji rynku dla TCQ.

NCQ różni się od TCQ tym, że w przypadku NCQ każde polecenie ma takie samo znaczenie, ale adapter magistrali hosta NCQ programuje również swój własny silnik DMA z parametrami DMA podanymi przez CPU podczas sekwencji poleceń, podczas gdy TCQ przerywa CPU podczas zapytań poleceń i wymaga służy do modulowania silnika DMA adaptera magistrali hosta ATA innej firmy. Implementacja NCQ jest preferowana, ponieważ napęd ma dokładniejszą wiedzę na temat swoich charakterystyk wydajności i jest w stanie uwzględnić swoje położenie obrotowe. Zarówno NCQ, jak i TCQ mają maksymalną długość kolejki 32 niezrealizowanych poleceń.

Aby funkcja NCQ była włączona, musi być obsługiwana i włączona w adapterze magistrali hosta SATA oraz w samym dysku twardym. Odpowiedni sterownik musi zostać załadowany do systemu operacyjnego, aby włączyć NCQ na adapterze magistrali hosta.

Wiele nowszych chipsetów obsługuje zaawansowany interfejs kontrolera hosta (AHCI), który umożliwia systemom operacyjnym uniwersalne sterowanie nimi i włączanie NCQ. DragonFly BSD obsługuje AHCI z NCQ od 2.3 w 2009. Nowsze główne jądra Linuksa obsługują AHCI natywnie, a FreeBSD w pełni obsługuje AHCI od wersji 8.0. Windows Vista i Windows 7 również natywnie obsługują AHCI, ale ich obsługa AHCI (za pośrednictwem usługi msahci) musi być ręcznie włączona poprzez edycję rejestru, jeśli obsługa kontrolera nie była obecna podczas ich początkowej instalacji. AHCI systemu Windows 7 umożliwia nie tylko obsługę NCQ, ale także TRIM na dyskach SSD (z ich wspierającym oprogramowaniem układowym). Starsze systemy operacyjne, takie jak Windows XP, wymagają instalacji sterownika specyficznego dla dostawcy (podobnego do instalacji kontrolera RAID lub SCSI ), nawet jeśli AHCI jest obecny na karcie magistrali hosta, co sprawia, że ​​początkowa konfiguracja jest bardziej żmudna, a konwersja istniejących instalacji jest stosunkowo trudna ponieważ większość kontrolerów nie może pracować na swoich portach w mieszanym trybie AHCI – SATA / IDE / legacy.

Dysk twardy

Występ

Test z 2004 r. Z napędem NCQ pierwszej generacji (Seagate 7200.7 NCQ) wykazał, że podczas gdy NCQ zwiększyło wydajność IOMeter, w rzeczywistości wydajność aplikacji desktopowych spadła. W jednym przeglądzie z 2010 roku stwierdzono poprawę rzędu 9% (średnio) z włączonym NCQ w serii testów wielozadaniowych systemu Windows.

NCQ może negatywnie wpływać na harmonogram we / wy systemu operacyjnego , faktycznie obniżając wydajność; zaobserwowano to w praktyce w Linuksie z RAID-5 . W NCQ nie ma mechanizmu, który pozwalałby hostowi określać terminy dla I / O, na przykład ile razy żądanie może zostać zignorowane na korzyść innych. Teoretycznie żądanie umieszczone w kolejce może zostać opóźnione przez przemiennik o dowolną ilość czasu, podczas gdy obsługuje inne (prawdopodobnie nowe) żądania pod presją we / wy. Ponieważ algorytmy używane w oprogramowaniu sprzętowym napędów do porządkowania wysyłek NCQ na ogół nie są publicznie znane, wprowadza to kolejny poziom niepewności co do wydajności sprzętu / oprogramowania układowego. Testy przeprowadzone w Google około 2008 roku wykazały, że NCQ może opóźnić I / O nawet o 1–2 sekundy. Proponowane obejście polega na tym, że system operacyjny ma sztucznie zagłodzić kolejkę NCQ wcześniej w celu terminowego zaspokojenia aplikacji o niskim opóźnieniu.

W oprogramowaniu sprzętowym niektórych dysków, takich jak WD Raptor z około 2007 roku, odczyt z wyprzedzeniem jest wyłączony, gdy włączona jest funkcja NCQ, co powoduje wolniejsze działanie sekwencyjne.

Bezpieczeństwo (FUA)

Jedną z mniej znanych funkcji NCQ jest to, że w przeciwieństwie do swojego poprzednika ATA TCQ, pozwala on hostowi określić, czy chce być powiadamiany, gdy dane dotrą do talerzy dysku, czy też gdy osiągną bufor dysku (wbudowana pamięć podręczna). Zakładając poprawną implementację sprzętową, ta funkcja pozwala zagwarantować spójność danych, gdy wbudowana pamięć podręczna dysku jest używana w połączeniu z wywołaniami systemowymi, takimi jak fsync . Powiązana flaga zapisu, również zapożyczona z SCSI, nosi nazwę Force Unit Access (FUA).

Dyski SSD

NCQ jest również używany w nowszych dyskach półprzewodnikowych, w których dysk napotyka opóźnienie na hoście, a nie na odwrót. Na przykład dysk półprzewodnikowy Intel X25-E Extreme wykorzystuje NCQ, aby zapewnić, że napęd ma polecenia do przetworzenia, gdy system hosta jest zajęty przetwarzaniem zadań procesora.

NCQ umożliwia również kontrolerowi SSD wykonywanie poleceń jednocześnie (lub częściowo jednocześnie, na przykład za pomocą potoków), gdy wewnętrzna organizacja urządzenia umożliwia takie przetwarzanie.

Standard NVM Express (NVMe) obsługuje również kolejkowanie poleceń w formie zoptymalizowanej dla dysków SSD. NVMe pozwala na wiele kolejek dla pojedynczego kontrolera i urządzenia, pozwalając jednocześnie na znacznie większe głębokości dla każdej kolejki, co jest bardziej zgodne z działaniem podstawowego sprzętu SSD.

Zobacz też

Bibliografia

Linki zewnętrzne