Powrót

Zrozumieć mikroprocesory – stos procesora

W poprzedniej części przedstawiony został mechanizm przerwań. To niezwykle istotny element w świecie mikroprocesorów. Jego przyjęcie i obsługa nie jest możliwa bez elementu, który jest nierozerwalnie związany z przerwaniami. Ten element to stos w pamięci.

Kontynuując tematykę związaną z obsługą przerwań w mikroprocesorach zapoznamy się w kolejnej części z pojęciem stosu i rozwiązaniami stosowanymi w implementacji stosu. Choć pierwotną jego funkcją było wsparcie mechanizmu przerwań, z czasem z racji uniwersalności rozwiązania, znalazł on zastosowanie w rozwiązywaniu wielu problemów o charakterze czysto programistycznym. Dzisiaj wykorzystanie stosu w oprogramowaniu staje się istotnym elementem. Świadczyć o tym może wzbogacanie listy instrukcji mikroprocesorów o możliwość dowolnego operowania danymi zapisanymi w obrębie stosu.

Problematyka programowej obsługi przerwań ma istotne znaczenie dla efektywności działania całości. Przy tworzeniu oprogramowania w językach wysokiego poziomu, jak przykładowo język C, wiele elementów staje się niewidocznych dla twórcy programu. Nie znaczy, że one nie istnieją. Procedury biblioteczne, jakie są dołączane do programu mają to już rozwiązane. Można jedynie dywagować nad ich optymalnością. Jak mówi znane porzekadło, jeżeli coś jest uniwersalne, to wcale nie musi być optymalne. Trudno się nie zgodzić z tą sugestią. Załóżmy, że system mikroprocesorowy „ma świadomość” upływającego czasu, co oznacza, że jakiś układ generuje cykliczne przerwania (przykładowo 100 razy na sekundę – co wcale nie jest dużo). Prowadzi to do wywołania odpowiedniego fragmentu kodu. Patrząc na to z boku, można powiedzieć, że jest to najczęściej wykonywany fragment programu i jego optymalna realizacja ma duże znaczenie.
By stworzyć ten element oprogramowania w sposób maksymalnie optymalny, niezbędna jest przede wszystkim wiedza i wyobraźnia. Pomimo że procesory różnią się między sobą, to pewne elementy są wspólne.

Definicja stosu

W mikroprocesorach istnieje pewien mechanizm, który pozwala na obsługę przerwań. Określany jest on jako stos. To nowe pojęcie doskonale odzwierciedla rzeczywistość. Wyobraźmy sobie stos dosłownie jako stertę kartek papieru (rysunek 1). Zapisujemy na kartce jakąś informację i kładziemy ją „na kupkę”. Odpowiada to operacji zapisu informacji na stos. Każda nowa kartka „przysłania” wszystkie dotychczas zgromadzone na naszej stercie. Pobranie ze szczytu stosu jednej odpowiada odczytowi danych ze stosu. Po zdjęciu kartki ze szczytu dostępna staje się ta, która była pod spodem – zmienił się szczyt stosu. Stos w mikroprocesorach działa dokładnie w ten sposób. Jeżeli „zrobimy” przysłonę zasłaniającą wszystkie komórki pamięci z wyjątkiem tej wskazanej przez wskaźnik stosu, to uzyskamy koncepcyjne podobieństwo (rysunek 1). Jest to pamięć podręczna o różnorodnym zastosowaniu. Z punktu widzenia układów cyfrowych ta idea nazywa się rejestrem LIFO (ang. Last In, First Out – ostatni wszedł, pierwszy wyszedł).

Rysunek 1

 

(…) ciach!

To jest tylko początek, zapowiedź artykułu, którego pełna wersja ukazała się z numerze lutowym czasopisma Zrozumieć Elektronikę (ZE 3/2023). Pełna wersja czasopisma umieszczona jest pod tym linkiem. Natomiast niepełna, okrojona wersja, pozwalająca zapoznać się z zawartością numeru ZE 3/2023 znajduje się tutaj.

 

Andrzej Pawluczuk