Стекова пам’ять (магазинна) - студопедія
У разі апаратної реалізації осередку стековой пам'яті утворюють одномірний масив, в якому сусідні осередки пов'язані один з одним розрядними ланцюгами передачі слів (рис. 4.4). При цьому можливі два типи пристроїв (а, б), принципи функціонування яких різні. Розглянемо спочатку структуру на
Мал. 4.4, а.

Запис нового слова, що надійшов з ШІВх. виробляється в верхню (нульову) осередок, при цьому буде видалено всі слова (включаючи слово в осередку 0) зсуваються вниз, в сусідні осередки, номери яких на одиницю більше. Зчитування можливо тільки з верхньої (нульовий) осередки пам'яті. Основний режим - це зчитування з видаленням. При цьому всі інші слова в пам'яті зсуваються вгору, в сусідні осередки з меншими номерами. У такій пам'яті реалізується правило: останній прийшов - перший пішов. Стеки подібного типу прийнято називати стеками LIFO (Last In - First Out).
У ряді випадків пристрої стековой пам'яті передбачають також операцію простого зчитування слова з комірки 0 без його видалення і зсуву інших слів. При використанні стека для запам'ятовування параметрів ініціалізації контролерів будь-яких пристроїв ЕОМ зазвичай передбачається можливість зчитування вмісту будь-якої комірки стека без його видалення, тобто зчитування вмісту не тільки осередки 0.
Про першому слові, посилає в стек, кажуть, що воно розташовується на дні стека. Про останній надісланому (за часом) в стек слові кажуть, що воно знаходиться в вершині стека. Таким чином, осередок N-1 - дно стека, а осередок 0 - вершина.
Зазвичай апаратний стек забезпечується лічильником стека СчСт, що показує загальну кількість занесених в пам'ять слів (СчСт = 0 - стек порожній). При заповненні стека повністю він забороняє подальші операції записи.
Крім розглянутої вище стековой пам'яті типу LIFO в ЕОМ використовуються стекові пам'яті іншого типу, що реалізують правило: перший прийшов - перший пішов. Стеки подібного типу прийнято називати стеками FIFO (First In - First Out). Така стековая пам'ять широко використовується для організації різного роду черг (команд, даних, запитів і т.д.). Узагальнена структура апаратного стека типу FIFO представлена на рис. 4.4, б.
Як і в попередньому випадку, осередки стековой пам'яті утворюють одномірний масив, в якому сусідні осередки пов'язані один з одним розрядними ланцюгами передачі слів. Запис нового слова, що надійшов з ШІВх. здійснюється у верхню (нульову) осередок, після чого воно відразу переміщається вниз і записується в останню за рахунком незаповнену клітинку. Якщо стек перед записом був порожній, слово відразу потрапляє в осередок з номером N-1, тобто на дно стека. Зчитування можливо тільки з нижньої комірки з номером N-1 (дно стека). Основний режим - це зчитування з видаленням. При цьому всі наступні (записані) слова зсуваються вниз, в сусідні осередки, номери яких на одиницю більше. При заповненні стека лічильник (СчСт) забороняє подальші операції записи в стек.
Таким чином, на відміну від стека LIFO, в стеку FIFO переміщається НЕ дно, а вершина. Записуються в стек FIFO слова поступово просуваються від вершини до дна, звідки і зчитуються в міру необхідності, причому темп запису і зчитування визначаються зовнішніми керуючими сигналами і не пов'язані один з одним.
Програмна реалізація стека FIFO в цьому розділі не розглядається, оскільки на практиці використовується досить рідко.