Jak zapobiegać błędom i wydłużyć żywotność, czyli pamięci fail-safe

| Technika

Wymagania stawiane pamięciom rosną. Ich głównym wyróżnikiem przestaje być pojemność, natomiast przybywa aplikacji, w których na znaczeniu zyskują niezawodność, poprawność i trwałość zapisu danych. Wychodząc naprzeciw takim oczekiwaniom, producenci uzupełniają pamięci o jednostki obliczeniowe. To z kolei, dzięki odciążeniu głównego procesora, otwiera drogę do nowych zastosowań.

Jak zapobiegać błędom i wydłużyć żywotność, czyli pamięci fail-safe

Przewiduje się, że w niedalekiej przyszłości w sieciach Internetu Rzeczy komunikować się może kilkanaście miliardów urządzeń, od aut autonomicznych, przez węzły sieci czujników w przemyśle, automatykę domową, po implanty medyczne i elektronikę noszoną. Za obsługę przynajmniej części ogromnego ruchu sieciowego przez nie generowanego, z którym dotychczas wiązano największe obawy, odpowiadać będą wdrażane już w kilku częściach świata sieci 5G.

W tym zakresie jednak pojawiają się dodatkowe kontrowersje. Wynikają one ze stawianych coraz częściej pytań o to: które urządzenia powinno się podłączać do chmury? Jaką część informacji do niej przesyłać? Czy część danych można przetwarzać lokalnie? Na końcu zaś zawsze pojawia się pytanie często najważniejsze: ile to będzie kosztować?

Przesyłać czy nie przesyłać?

Podejście zakładające przesyłanie wszystkich danych do chmury i ich zdalne przetwarzanie tam z pewnością sprawdzić się może w przypadku mniejszych, odizolowanych systemów. W miarę jednak jak obciążenie zdalnych serwerów będzie rosło – a przykładowo pojedynczy autonomiczny samochód może generować nawet kilka gigabajtów danych na godzinę podczas jazdy – większą uwagę zacznie się przywiązywać do kosztów korzystania z chmury w porównaniu do kosztów lokalnego przechowywania i przetwarzania informacji.

Przewiduje się, że z dużym prawdopodobieństwem ostatecznie zwycięży rozwiązanie "przetwarzaj na miejscu i przesyłaj inteligentnie", czyli na przykład partiami i po skompresowaniu. To sprawia, że lokalne nośniki danych będą zyskiwać na znaczeniu.

Pamięci fail-safe

W zależności od aplikacji, w systemach gromadzących i przetwarzających dane obowiązują różne priorytety. Przykładowo w sieciach czujników w przemyśle generowane są ich bardzo duże ilości. Z kolei w przypadku zasilanych bateryjnie przenośnych urządzeń medycznych, takich jak na przykład implanty medyczne albo aparaty słuchowe, przy wyborze technologii pamięci kluczowe znaczenie ma zużycie energii.

W systemach wspomagania kierowców ADAS (Advanced Driver Assistance Systems) ważna jest natomiast jak najdłuższa żywotność pamięci oraz niezawodność zapisu danych. W niektórych podobnych zastosowaniach o znaczeniu krytycznym z pamięci uruchamia się również system.

Z myślą m.in. o nich opracowywane są pamięci fail-safe. W ich przypadku można mieć pewność, że jeżeli dana wartość zostanie w nich zapisana, ta sama wartość zostanie później odczytana. W przypadku, gdy warunek ten nie będzie mógł być spełniony, błąd zostanie wykryty i system będzie mógł podjąć działania naprawcze.

Jak zapobiegać błędom i wydłużyć żywotność?

Realizuje się to standardowo na kilka sposobów. Przykładowo integralność danych poprawia się, stosując kodowanie korekcyjne ECC (Error Correction Code). Aby sprawdzić, czy dane zostały zapisane poprawnie, uzupełnia się je o nadmiarowe informacje. Po ich rozkodowaniu wiadomo, które bity danych są przekłamane.

Żywotność pamięci można wydłużyć przez optymalizację jej zużycia (wear leveling). Polega to na monitorowaniu częstości użycia poszczególnych bloków pamięci i równomiernym rozmieszczaniu w nich danych tak, aby żaden z bloków nie był czyszczony ani zapisywany częściej niż pozostałe. W efekcie wszystkie bloki pamięci są chociaż raz zapisane, zanim operacja ta zostanie powtórzona. Maksymalna liczba komórek pamięci jest wtedy zużyta minimalnie, a żywotność jest najdłuższa z możliwych.

 
Rys. 1. Główne bloki funkcyjne przykładowej pamięci fail-safe Semper NOR Flash

Nowe podejście w konstrukcji pamięci fail-safe

Wyżej wymienione zadania są obciążające obliczeniowo dla jednostki głównej urządzenia. Dlatego w ostatnim czasie na rynku pojawiły się pamięci z wbudowanymi jednostkami obliczeniowymi. Dzięki temu, zamiast polegać na głównym procesorze, pamięć weryfikuje swoją funkcjonalność i zarządza podstawowymi zadaniami we własnym zakresie. Znacząco przyspiesza to na przykład ładowanie kodu rozruchowego i sprawdzanie integralności danych w operacjach zapisu/odczytu.

Korzystając z pamięci tego typu, można również znacznie przyspieszyć wprowadzenie produktu na rynek, dzięki temu, że wymuszane na przykład przepisami funkcje bezpieczeństwa są łatwiejsze do zrealizowania. Zmniejsza się także wymagana moc obliczeniowa jednostki głównej, co ostatecznie ma wpływ na jej koszt.

Realizacja funkcji fail-safe to jednak tylko jedno z możliwych zastosowań wbudowanych jednostek obliczeniowych. Innym potencjalnym może się stać wykonywanie obliczeń na danych czujnika przed ich zapisaniem. Warto również dodać, że tego typu pamięci są niezawodniejsze, ponieważ nie są zależne od zewnętrznego procesora.

 

Monika Jaworowska