Архітектура мікропроцесорної системи. Структура та функціонування мікропроцесорної системиАрхітектура мікропроцесорних систем Дотепер ми розглядали тільки один тип архітектури мікропроцесорних систем - архітектуру з загальною, єдиною шиною для даних і команд (одношинну, або принстонську, фон-нейманівську архітектуру). Відповідно, у складі системи в цьому випадку присутня одна загальна пам'ять, як для даних, так і для команд (Рис. 1.15). Але існує також і альтернативний тип архітектури мікропроцесорної системи - це архітектура з роздільними шинами даних і команд (двохшинна, або гарвардська архітектура). Ця архітектура припускає наявність у системі окремої пам'яті для даних і окремої пам'яті для команд (Рис. 1.16). Обмін процесора з кожним із двох типів пам'яті відбувається по своїй шині. Архітектура з загальною шиною поширена набагато більше, вона застосовується, наприклад, у персональних комп'ютерах і в складних мікрокомп'ютерах. Архітектура з роздільними шинами застосовується, в основному, в однокристальних мікроконтролерах. Розглянемо деякі переваги і недоліки обидвох архітектурних рішень. Архітектура з загальною шиною (принстонська, фон-нейманівська) є простішою, вона не вимагає від процесора одночасного обслуговування двох шин, контролю обміну двома шинами відразу. Наявність єдиної пам'яті даних і команд дозволяє гнучко розподіляти її об'єм між кодами даних і команд. Наприклад, у деяких випадках потрібна велика і складна програма, а даних у пам'яті треба зберігати не надто багато. В інших випадках, навпаки, програма проста, але необхідні великі об'єми збережених даних. Перерозподіл пам'яті не викликає ніяких проблем, головне - щоб програма і дані разом вміщувалися в пам'яті системи. Як правило, у системах з такою архітектурою пам'ять буває досить великого об'єму (до десятків і сотень мегабайт). Це дозволяє вирішувати самі складні задачі. Архітектура з роздільними шинами даних і команд складніша, вона змушує процесор працювати одночасно з двома потоками кодів, обслуговувати обмін двома шинами одночасно. Програма може розміщуватися тільки в пам'яті команд, дані - тільки в пам'яті даних. Така вузька спеціалізація обмежує коло задач, які розв'язуються системою, тому що не дає можливості гнучкого перерозподілу пам'яті. Пам'ять даних і пам'ять команд у цьому випадку мають порівняно невеликий об'єм, тому застосування систем з даною архітектурою обмежується переважно не надто складними задачами. У чому ж перевага архітектури з двома шинами (гарвардської)? У першу чергу, у швидкодії. Справа в тому, що при єдиній шині команд і даних процесор змушений по одній цій шині приймати дані (з пам'яті або пристрою вводу/виводу) і передавати дані (у пам'ять або в пристрій вводу/виводу), а також читати команди з пам'яті. Природно, одночасно ці пересилання кодів магістралями відбуватися не можуть, вони повинні відбуватися по черзі. Сучасні процесори здатні поєднати в часі виконання команд і проведення циклів обміну системною шиною. Використання конвеєрних технологій і швидкої кеш-пам'яті дозволяє їм прискорити процес взаємодії з порівняно повільною системною пам'яттю. Підвищення тактової частоти й удосконалення структури процесорів дають можливість скоротити час виконання команд. Але подальше збільшення швидкодії системи можливе тільки при поєднанні пересилання даних і читання команд, тобто при переході до архітектури з двома шинами. У випадку двохшинної архітектури обмін обидвома шинами може бути незалежним, паралельним у часі. Відповідно, структури шин (кількість розрядів коду адреси і коду даних, порядок і швидкість обміну інформацією і т.д.) можуть бути обрані оптимально для тієї задачі, яка виконується кожною шиною. Тому за інших рівних умов перехід на двохшинну архітектуру прискорює роботу мікропроцесорної системи, хоча і вимагає додаткових витрат на апаратуру, ускладнення структури процесора. Пам'ять даних у цьому випадку має свій розподіл адрес, а пам'ять команд - свій. Найпростіше переваги двохшинної архітектури реалізуються усередині однієї мікросхеми. У цьому випадку можна також істотно зменшити вплив недоліків цієї архітектури. Тому основне її застосування - у мікроконтролерах, від яких не потрібно рішення надто складних задач, але зате необхідна максимальна швидкодія при заданій тактовій частоті.
|