записаний - першим лічений» (Last Input First Output - LIFO). Використання принципу доступу до пам'яті на основі механізму LIFO почалося з великих ЕОМ. Застосування стековой пам'яті виявилося дуже ефективним при побудові компілює і інтерпретує програм, при обчисленні арифметичних виразів з використанням польського інверсного запису. У малих ЕОМ вона стала широко використовуватися у зв'язку зі зручностями реалізації процедур виклику підпрограм і при обробці переривань.
Принцип роботи стековой пам'яті полягає в наступному (див. малюнок 2.3.). Коли слово А поміщається в стек, воно розташовується в першій вільній комірці пам'яті. Наступне записуване слово переміщує попереднє на одну клітинку вгору і займає його місце і т.д. Запис 8-го коду, після H, призводить до переповнення стека і втрати коду A. Зчитування слів з стека здійснюється у зворотному порядку, починаючи з коду H, який був записаний останнім. Зауважимо, що вибірка, наприклад, коду E неможлива до вибірки коду F, що визначається механізмом звернення при записі і читанні типу LIFO.
Для фіксації переповнення стека бажано формувати ознака переповнення.
Переміщення даних при записі і зчитуванні інформації в стековой пам'яті подібно до того, як це має місце в сдвигающих регістрах. З точки зору реалізації механізму доступу до стековой пам'яті виділяють апаратний і апаратно-програмний (зовнішній) стеки.
Апаратний стек являє собою сукупність регістрів, зв'язки між якими організовує?? и таким чином, що при записі і зчитуванні даних вміст стека автоматично зсувається. Зазвичай ємність апаратного стека обмежена діапазоном від декількох регістрів до декількох десятків регістрів, тому в більшості МП такий стек використовується для зберігання вмісту програмного лічильника і його називають стеком команд. Основна перевага апаратного стека - високу швидкодію, а недолік - обмежена ємність.
Найбільш поширеним і можливо кращим в даний час організації стека в ЕОМ є використання області пам'яті. Для адресації стека використовується покажчик стека, який попередньо завантажується в регістр і визначає адресу останньої використаної клітинки. Крім команд CALL і RET, за якими записується в стек і відновлюється вміст програмного лічильника, є команди PUSH і POP. Команда PUCH - це процес проходження інформаційного слова через стек, а команда POP - це операція читання інформаційного слова з стека. У деяких МП вміст основних регістрів запам'ятовується в стеку автоматично при перериванні програм. Вміст регістра покажчика стека при записі зменшується, а при зчитуванні збільшується на 1 при виконанні команд PUSH і POP, відповідно.
Розглянемо застосування пам'яті LIFO в мікропроцесорі К1804ВУ4. На малюнку 2.4 наведена його структурна схема.
Основними частинами стека є покажчик стека (реверсивний лічильник зі спеціальними ланцюгами установки) і накопичувач стека. Накопичувач стека являє собою ОЗУ ємністю п`ять 12-розрядних слів. Запис і зчитування інформації здійснюються для того осередку накопичувача, яку адресує покажчик стека. Цей осередок називається вершиною стека. Інформація може зчитуватися з вершини стека на вхід мультиплексора адреси як без зміни вмісту стека, так і зі зміною. Інформація записується в стек при виконанні операції PUSH; при цьому спочатку вміст покажчика стека збільшується на 1, а потім відбувається власне запис. Таким чином, покажчик стека завжди вказує на останнє записане слово. У стек може записуватися тільки вміст лічильника мікрокоманд.
При виконанні над стеком операції POP вміст покажчика зменшується на одиницю після читання вершини стека. Логічно це означає заповнення вершини стека інший, раніше записаної при операції PUSH інформацією. Операція POP над порожнім стеком не змінює його стану. Заповнення всіх п'яти рівнів стека викликає появу осведомительного сигналу FL - 0. При виконанні чергової операції PUSH покажчик стека залишається без зміни, а в вершину стека записується нова інформація. Стара інформація при цьому втрачається. Така втрата є дуже небажаною, і рекомендується ретельно продумати мікропрограми, щоб її не допустити. У цьому мікропроцесорі реалізується апаратно - програмний стек.
Тепер розглянемо реалізацію апаратного стека на прикладі сигнального мікропроцесора TSM32010. На малюнку 2.5 наведена його структурна схема.
У мікропроцесорі TMS32010 реалізований апаратний 4-х рівневий стек у вигляді оперативної пам'яті з організацією 4x12. Запис здійснюється у верхній рівень стека з програмного лічильника. Попереднє значення верхнього рівня стека записується до другого рівня і т.д. Вміст останнього (4-го) рівня ...