Kluczową rolę w technikach testowania pamięci odgrywają testy krokowe (testy typu March) określane również w literaturze polskiej jako testy maszerujące [14]. Test typu March składa się ze skończonej liczby elementów typu March. Element typu March (faza testu) składa się ze skończonej liczby operacji, z których wszystkie oddziałują na określoną komórkę przed przejściem do następnej komórki pamięci. Komórka następna określona jest poprzez sposób adresowania, który może być wzrastający, w którym adresy wzrastają od 0 do N-1, oznaczany przez ⇑, lub malejący, w którym adresy maleją od N-1 do 0, oznaczany przez ⇓.W niektórych przypadkach sposób adresowania można wybrać dowolnie i jest to oznaczane przez . Możliwe operacje dostępne na komórkach pamięci dostępne w testach krokowych to: wx – zapisz do komórki pamięci wartość x i operacja rx – odczytaj wartość z komórki pamięci (wartość spodziewana jest równa x). Cały test typu March ograniczony jest poprzez parę nawiasów klamrowych {...}, podczas gdy faza testu krokowego ograniczona jest parą nawiasów okrągłych (...). Jako przykład rozpatrzymy test MATS+ [8]:
M0 M1 M2
Test ten składa się z trzech faz: M0, M1, M2. Faza M0 zeruje pamięć.
Faza M1 w porządku adresów rosnących czyta wartość 0 z komórki, następnie zapisuje tam wartość 1. Faza M2 w porządku adresów malejących odczytuje wartość 1 z komórki, po czym do tej samej komórki wpisuje wartość 0. W tradycyjnych testach krokowych na uszkodzenie pamięci wskazuje fakt odczytania innej wartości niż wartość spodziewana.
Możliwość wystąpienia uszkodzenia w trakcie eksploatacji układu pamięci wymaga cyklicznego sprawdzania jakości jej działania bez niszczenia przechowywanej tam zawartości. Można to osiągnąć używając transparentnej metody testowania. Zgodnie z procedurą, zaproponowaną przez M. Nicloaidis’a [9], każdy tradycyjny test krokowy można przekształcić do postaci transparentnej. Procedura transformacji sprowadza się do następujących kroków:
1. Pominąć w teście fazę inicjacyjną nie mającą wpływu na jakość testu. Jej zadaniem jest jedynie wstępne wypełnienie pamięci określonymi wartościami (zazwyczaj wartością 0).
2. Wszystkie statyczne polecenia odczytu (r 0, r 1) i zapisu (w 0, w 1) zastąpić poleceniami uogólnionymi w postaci ra, ra*, wa, wa*. Uogólnione polecenia ra (ra*) oznaczają odczytanie z pamięci wartości a (a*) oraz przekazanie ich do analizatora sygnatury.
3. W każdej fazie testu, w której przyjęty jest dowolny sposób adresowania, przyjąć jeden z określonych sposobów adresowania (np. w danej fazie symbol , oznaczający dowolny sposób adresowania, zastąpić symbolem ⇑ lub ⇓, jednoznacznie opisującym sposób adresowania pamięci).
Po tych trzech krokach otrzymana zostanie bazowa transparentna wersja testu poddanego transformacji. W celu pełnej realizacji testu niezbędne jest wyznaczenie algorytmu pozwalającego określić sygnaturę odniesienia. Sposób otrzymania tej sygnatury opisany jest w czwartym kroku przekształceń.
4. Z otrzymanego w trzecim kroku testu usunąć wszystkie polecenia zapisu. Polecenia odczytu
(ra i ra*) zaimplementować tak, aby po poleceniu ra do rejestru sygnatury skierowana została odczytana wartość, zaś po poleceniu ra* wartość przeciwna do wartości odczytanej.
W tym wypadku rezultat testu jest wynikiem porównania wartości sygnatury odniesienia (sygnatury pamięci z momentu poprzedzającego rozpoczęcie testu) z wartością sygnatury pamięci wyliczonej po zakończeniu testu (lub wyliczanej w trakcie jego trwania). Zatem w wypadku tradycyjnej postaci testowania transparentnego zaproponowanej w [9], transponowany test jest rozszerzany o fazę wyznaczenia sygnatury odniesienia Stest. Zwiększa to o około 50% czas realizacji testu. Przy wciąż zwiększających się rozmiarach pamięci jest to stosunkowo ważna kwestia.
Podczas realizacji testu krokowego można wyróżnić dwie podstawowe zawartości pamięci RAM: oryginalną D = d1d2d3...dN-1 (zawartość pamięci z momentu bezpośrednio poprzedzającego rozpoczęcie testu) oraz zawartość komplementarną w stosunku do zawartości oryginalnej D* = d1 *d2 *d3*...dN-1* składającą się z zanegowanych wartości oryginalnych. Przykładowo, rozważając test March C-: {⇑(rd,wd*);⇑(rd*,wd);⇓(rd,wd*) ⇓(rd*,wd)⇑(rd)}, podczas pierwszej, trzeciej i piątej fazy odczytywane są z pamięci wartości oryginalne D = d1d2d3...dN-1, zaś w fazie drugiej i czwartej z pamięci odczytywane są wartości zanegowane D*=d1*d2*d3*...dN-1*. W wypadku zastosowania techniki SAODC powyższe spostrzeżenie oraz równanie (2) pozwalają zmniejszyć złożoność wyliczania sygnatury odniesienia i zredukować ją do pojedynczej instrukcji. W tym celu w procedurze konwersji testu krokowego na postać transparentną należy pominąć p. 4 i zmodyfikować p. 1 na postać: „Zamienić fazę inicjacyjną transponowanego testu (w0) na uogólnioną instrukcję odczytu (ra) mającą za zadanie wyznaczenie charakterystyki odniesienia SR zgodnie z (1)”. Zastosowanie tej procedury do testu MATS+ prowadzi do następującej postaci transparentnej testu: { (ra);⇑(ra,wa*);⇓(ra*,wa)}. Za wyznaczenie sygnatury odniesienia odpowiedzialna jest w tym wypadku pierwsza faza testu. Należy również podkreślić, że faza wyznaczania sygnatury odniesienia ma tutaj charakter uniwersalny i jest identyczna dla każdego standardowego testu krokowego. Porównanie złożoności transparentnych wersji wybranych testów krokowych realizowanych techniką tradycyjną i techniką SAODC zawiera tab. 1.
Tab.1. Porównanie złożoności techniki tradycyjnej i techniki SAODC:
Test | Wersja bazowa | Technika tradycyjna | Technika SADOC | ||
Sygnatura | Razem | Sygnatura | Razem | ||
MATS | 3N | 2N | 5N | 1N | 4N |
MATS+ | 4N | 2N | 6N | 1N | 5N |
MATS++ | 5N | 3N | 8N | 1N | 6N |
March X | 5N | 3N | 8N | 1N | 6N |
March Y | 7N | 5N | 12N | 1N | 8N |
March A | 14N | 4N | 18N | 1N | 15N |
March B | 16N | 6N | 22N | 1N | 17N |
March C | 10N | 6N | 16N | 1N | 11N |
March C- | 9N | 5N | 14N | 1N | 10N |
Przedstawione wyniki dość wyraźnie pokazują zmniejszenie złożoności testów transparentnych realizowanych z użyciem techniki SAODC w stosunku do testów realizowanych techniką tradycyjną.
|
REKLAMA |
REKLAMA |