Чому мікроконтролерам потрібен годинник


31

Чому інструкції потрібно обробляти через встановлені інтервали часу (тобто із застосуванням годинника)? Не можна їх виконувати послідовно - відразу після завершення попередньої інструкції?

Аналогія необхідності роботи годинників в мікроконтролерах виявиться особливо корисною.


6
Є асинхронні процесори.
Леон Геллер

6
Як би ви визначили "коли попередня інструкція завершена"? Якщо ви подумаєте про це, вам потрібно буде знати, коли "Чи завершена попередня інструкція?" обчислення було завершено, і коли обчислення "Чи завершилась попередня інструкція?", - і набагато простіше просто сказати "На виконання інструкції потрібно 0,4 наносекунди".
користувач253751

4
Логічні ворота не кажуть, коли вони зроблені. Сигнал просто невизначений протягом певного періоду часу, перш ніж встановити стабільне значення. По суті, годинник дозволяє дизайну знати, коли логіка встановила правильне значення. Прогресивні стратегії, такі як мікроінструкції, допомагають розбивати машинні інструкції на більш дрібні шматочки, тож ADD може взяти 4 годинника, тоді як доступ до пам'яті може зайняти сотні кліків.

Відповіді:


31

Тут може допомогти наочний приклад або два. Погляньте на наступний гіпотетичний контур:

схематичні

імітувати цю схему - Схематично створено за допомогою CircuitLab

Припустимо, для початку і А, і В є високими (1). Отже, вихід AND має 1, і оскільки обидва входи до XOR дорівнюють 1, вихід 0.

Логічні елементи не змінюють свій стан миттєво - існує невелика, але значна затримка розповсюдження, коли обробка змін відбувається. Припустимо, що B знижується (0). XOR миттєво бачить новий стан на своєму другому вході, але на першому вході все ще бачиться "несвіжий" 1 з воріт AND. Як результат, вихід ненадовго стає високим - але лише до тих пір, поки сигнал не поширюватиметься через ворота AND, роблячи обидва входи до рівня XOR низьким, а результат знову знижується.

Глюк не є бажаною частиною роботи схеми, але подібні глюки відбудуться будь-коли, коли різниця у швидкості поширення через різні частини схеми, через кількість логічності або навіть просто довжину проводів .

Один із дійсно простих способів впоратися з цим - поставити фліпфлоп, що спрацьовує край, на висновок вашої комбінаторної логіки, наприклад:

схематичні

моделювати цю схему

Тепер будь-які глюки, які трапляються, приховані від решти ланцюга фліпфлопом, який оновлює свій стан лише тоді, коли годинник переходить від 0 до 1. Поки інтервал між піднімаючими краями годинника досить довгий, щоб сигнали поширювали всі З допомогою комбінаторних логічних ланцюгів результати будуть надійно детермінованими та без глюків.


6
Дякую, що фактично згадуєте про затримку розповсюдження майже відразу, це, мабуть, 99% відповіді.

1
Робочий приклад цього в дії можна спостерігати на цифрових периферійних пристроях мікроконтролерів Microchip (та інших) мікроконтролерів. Якщо ви використовуєте регістри PORT для оновлення результатів (а не LATCH) за допомогою послідовних інструкцій Read-Modify-Write, можна прочитати стан штифта, змінюючи стан. Детальніше див. Розділ 10.2.2 документації на dsPIC33E / 24E .
Злий собачий пиріг

Я правильно розумію, що послідовні схеми критично потребують синхронізації не тільки тому, що вони отримають глюки, а й тому, що через цей глюк, якийсь триггер може в кінцевому підсумку зберігати неправильне значення?
озера

20

Я вважаю, що багато з цих відповідей не є чіткими в основному питанні. У мікроконтролера є годинник просто тому, що він виконує (і керується) послідовною логікою .

У теорії цифрових схем послідовна логіка - це тип логічної схеми, вихід якої залежить не тільки від теперішнього значення вхідних сигналів, але від послідовності минулих входів, історії вводу. Це на відміну від комбінаційної логіки, вихід якої є функцією лише теперішнього вводу. Тобто послідовна логіка має стан (пам'ять), тоді як комбінаційна логіка не має. Або, іншими словами, послідовна логіка - це комбінаційна логіка з пам'яттю.

Також:

Основна перевага синхронної логіки - її простота. Логічні ворота, які виконують операції над даними, потребують обмеженого часу, щоб відповісти на зміни своїх входів. Це називається затримкою розповсюдження. Інтервал між тактовими імпульсами повинен бути достатньо довгим, щоб усі логічні ворота встигли реагувати на зміни, а їхні виходи "осіли" до стабільних логічних значень, перш ніж відбудеться наступний тактовий імпульс. Поки ця умова виконується (ігноруючи деякі інші деталі), схема гарантується стабільною та надійною. Це визначає максимальну робочу швидкість синхронного ланцюга.


15

Коротка відповідь: менеджери хочуть простого, перевіреного, ДОКАЗАННЯ функції, перш ніж присвятити мільйонам (або більше) доларів за дизайн. Сучасні інструменти просто не дають асинхронних конструкцій цих відповідей.

Мікрокомп'ютери та мікроконтролери зазвичай використовують схему синхронізації, щоб забезпечити контроль часу. Усі кути технологічного процесу повинні підтримувати вплив часу на всі напруги, температуру, процес тощо на швидкість поширення сигналу. Там немає жодного струму логічних вентилів змінюються миттєво, і кожна брама перемикаються в залежності від напруги вона поставляється, привід він отримує, навантаження він керує, і розмір пристроїв, які використовуються , щоб зробити це, (і, звичайно , вузол процесу (розмір пристрою), в який він зроблений, і наскільки швидко ЦІЙ процес насправді виконується --- ЦЕ пройдете через файл). Для того, щоб дійти до «миттєвого» перемикання, вам доведеться використовувати квантову логіку, і це передбачає, що квантові пристрої можуть миттєво перемикатися; (Я не впевнений).

Заблокована логіка дозволяє довести, що синхросигнал у всьому процесорі працює над очікуваними змінними напруги, температури та обробки. Існує безліч програмних засобів, які допомагають виміряти цей термін, а мережевий процес називається "закінченням терміну". Годинник може (і, на мій досвід, дійсно ) займає десь від 1/3 до 1/2 потужності, що використовується в мікропроцесорі.

Отже, чому б не асинхронний дизайн? Існує небагато інструментів для закриття часу, якщо вони є, для підтримки цього стилю дизайну. Є декілька, якщо вони є, автоматизованих інструментів для місця та маршруту, які можуть мати справу з великим асинхронним дизайном та керувати ним. Якщо нічого іншого, менеджери НЕ схвалюють нічого, що не має прямого, створеного комп'ютером, ДОКАЗАННЯ функціональності.

У коментарі, що асинхронна конструкція вимагає "тонни" синхронізуючих сигналів, що вимагало "набагато більше транзисторів", ігнорує витрати на маршрутизацію та синхронізацію глобального годинника, а також вартість усіх тригерів, яких вимагає система годинника. Асинхронні конструкції є (або повинні бути) меншими та швидшими, ніж їх аналоги з тактовою системою. (Один просто проходить ОДИН найповільніший шлях сигналу і використовує його для подачі "готового" сигналу до попередньої логіки).

Асинхронна логіка швидша, тому що ніколи не доводиться чекати годинника, який довелося продовжити ще на інший блок десь в іншому місці. Особливо це стосується функцій реєстрація-логіка-реєстрація. Асинхронна логіка не має декількох питань "налаштування" та "утримування", так як лише ті, що закінчуються структури раковини (регістри) мають ці проблеми, на відміну від конвеєрного набору логіки з відкидними кришками, переміщеними в простір, затримка розповсюдження логіки до синхронізації межі.

Чи можна це зробити? Звичайно, навіть на мільярдну конструкцію транзистора. Це важче? Так, але тільки тому, що ДОСТУПНІСТЬ, що він працює на всій мікросхемі (або навіть системі), значно більше задіяний. Отримання часу на папері є розумним прямим для будь-якого блоку або підсистеми. Отримати керування тимчасовим регулюванням в автоматизованій системі місце та маршрутів набагато складніше, оскільки інструментарій НЕ налаштований для обробки набагато більшого набору обмежень часу.

Мікроконтролери також мають потенційно великий набір інших блоків, які інтерфейсують до (відносно) повільних зовнішніх сигналів, доданих до всієї складності мікропроцесора. Це робить час трохи більше задіяним, але не сильно.

Досягнення сигнального механізму "перший приїзд" "блокування" є проблемою проектування схеми, і існують відомі способи вирішення цього питання. Умови гонки - ознака 1). погана дизайнерська практика; або 2). зовнішні сигнали, що надходять у процесор. Годинник фактично вводить стан гонки сигнал проти годинника, який пов'язаний з порушеннями "налаштування" та "утримування".

Я, особисто, не розумію, як асинхронна конструкція могла потрапити в стійкий стан або будь-який інший стан гонки. Це може бути моїм обмеженням, але якщо це не відбувається при введенні даних в процесор, це НІКОЛИ не може бути можливим у добре розробленій логічній системі, і навіть тоді, оскільки це може статися під час надходження сигналів, ви розробляєте справу з цим.

(Я сподіваюся, що це допомагає).

Все, що говорили, якщо у вас є гроші ...


Звичайно, це залежить від мікросхеми, яку ви будуєте - наприклад, апаратне забезпечення нейронних мереж має тенденцію бути асинхронним, адже це насправді найпростіша річ - те, що вони імітують, є асинхронним . Ми здебільшого будуємо синхронне послідовне обладнання, тому що програмне забезпечення / вбудоване програмне забезпечення також здебільшого синхронні та послідовні (особливо в частині "послідовна" - асинхронний код використовується все частіше і частіше). Насправді обернути голову навколо послідовної, синхронної системи, особливо коли більшість програмувань виконується мовами, які заохочують послідовний код.
Луань

Події в реальному світі відбуваються в непередбачувані часи. Якщо у пристрою є кнопка і передбачається виконати один шлях коду, якщо його натиснути «досить швидко» та виконати інший шлях коду, якщо його немає, то, за відсутності квантово-механічних обмежень, між моментом натискання кнопки де натискання кнопки відбудеться досить швидко, щоб викликати альтернативний шлях коду, і момент, коли натискання кнопки буде "занадто пізно", буде якийсь точний момент, коли натискання кнопки викликає деяку поведінку "між" двома (наприклад, внаслідок чого деякі біти лічильника програми були змінені ...
supercat

... але не інші). За відсутності квантово-механічних обмежень час між останнім моментом, коли натискання спричинить гілку, і першим моментом, коли поштовх чисто зробить це, не може бути зроблено довільно невеликим, але не зведеним до нуля. Квантово-механічні обмеження можуть зробити ймовірним, що будь-яке натискання кнопки відбудеться достатньо раніше, щоб зареєструватися, або достатньо пізно, щоб чисто вийти з ладу, але доведено, що ніколи не буде квантового стану, яке дозволило б натиснути кнопку в смертельний проміжний час, як правило, нездійсненне.
supercat

Використання синхронної логіки значно спрощує аналіз ситуацій, коли системі потрібно буде реагувати на справді асинхронну подію, гарантуючи, що умови перегонів матимуть дуже низьку ймовірність уникнути дуже невеликої частини загального пристрою. Аналіз тієї невеликої частини пристрою, щоб гарантувати, що гоночні умови навряд чи зможуть уникнути, є набагато більш простежуваною проблемою, ніж дозволяти гоночним умовам виникати майже де завгодно, і намагатися проаналізувати їх наслідки, щоб довести, що їх прийнятно навряд чи викличе неприємність.
supercat

10

Мікроконтролерам потрібно використовувати годинник, оскільки вони повинні бути здатні реагувати на події, які можуть статися в будь-який час, включаючи майже одночасно з іншими зовнішніми подіями або подіями, породженими самими контролерами, і часто будуть мати кілька мікросхем, які повинні знати, чи одна подія X передує іншій події Y. Це може бути неважливо, чи всі такі схеми вирішують, що X передує Y, або всі такі схеми вирішать, що X не передував Y, але часто буде критично важливо, якщо будь-який з схем вирішить, що X передує Так, тоді всі повинні це зробити. На жаль, важко домогтися того, що ланцюги протягом обмеженого часу досягнуть гарантованого консенсусу щодо того, чи передує X Y, або навіть досягнуть консенсусу щодо того, досягнуто вони чи ні. Синхронна логіка може дуже допомогти в цьому.

Додавання годинника до ланцюга дає змогу гарантувати, що підсистема не матиме жодних перегонових умов, якщо вхід до системи не зміниться у дуже маленькому вікні щодо годинника, а також гарантує, що вихід одного пристрою подається на інший , вихід першого пристрою не зміниться у критичному вікні другого пристрою, якщо вхід до першого пристрою не зміниться в межах ще меншого критичного вікна. Додавання іншого пристрою до цього першого пристрою забезпечить, що вхід до першого пристрою не зміниться у цьому маленькому вікні, якщо вхід до нового пристрою не зміниться в дійсно крихітному вікні. З практичної точки зору, якщо хтось навмисно не намагається викликати невдачу консенсусу,

Безумовно, можна створити повністю асинхронні системи, які працюють «якнайшвидше», але якщо система не є надзвичайно простою, важко буде уникнути того, щоб дизайн не зациклювався на гоночному стані. Незважаючи на те, що існують способи вирішення перегонових умов, не потребуючи годинника, умови гонок часто можна вирішити набагато швидше та простіше, використовуючи годинники, ніж це було б без них. Хоча асинхронна логіка часто зможе вирішити умови перегонів швидше, ніж тактована логіка, випадки, коли вона не може цього зробити, є основною проблемою, особливо зважаючи на складність того, щоб частини системи досягли консенсусу щодо того, чи дійшли вони до консенсусу. Система, яка може послідовно виконувати один мільйон інструкцій на секцію, як правило, буде більш корисною, ніж та, яка іноді може виконувати чотири мільйони інструкцій в секунду, але може затриматись протягом тисячоліть (або довше) через умови перегонів.


Варто зазначити, що держави, про які приймається рішення, однаково можуть бути і внутрішніми - такими, як результат арифметичної операції. Затримка через довжину лінії може призвести до того, що одна частина MCU бачить результат - і без годинника, що діє на нього - перед іншими частинами.
Нік Джонсон

@ NickJohnson: Якщо послідовність, в якій виконуються операції, ніколи не залежить від речей, які ще не обчислюються, ці проблеми можна вирішити без труднощів, якщо кожен розділ, як ALU, має "дійсні" введення та "дійсний" вихід, і речі може бути влаштовано так, щоб це відбувалося в детермінованій послідовності. Там, де колеса відпадають, коли порядок здійснення операцій повинен залежати від часу (наприклад, якщо в одному є кілька паралельних операцій, для яких потрібно використовувати спільну шину пам'яті, і два з них видають запити, що мають одночасний характер, арбітраж яких один повинні йти першими ...
supercat

... і якого варто чекати, може бути непереборним. Якщо хтось заздалегідь вирішить, в який бій йде перший, таких проблем можна уникнути, але якщо виявиться, що підрозділ, який був призначений першим, не готовий до довгого часу після другого, продуктивність може сильно постраждати в результаті .
supercat

Ось чому йти в космос так важко, ймовірності змінюються несприятливо.
Чарівний дим

6

MCU - це лише один дуже складний приклад синхронної послідовної логічної схеми. Найпростішою формою є, мабуть, тактовий D-фліп-флоп (D-FF), тобто синхронний 1-бітний елемент пам'яті.

Є елементи пам'яті, які є асинхронними, наприклад D-засувка, яка є (в певному сенсі) асинхронним еквівалентом D-FF. MCU - це не що інше, як мільйон мільйонів таких основних елементів пам'яті (D-FF), склеєних разом з тоннами логічних воріт (я надто спрощую).

Тепер перейдемо до справи: чому MCU використовують D-FF замість D-засувок як елементи пам'яті всередині? По суті, це для надійності та простоти конструкції: D-засувки реагують, як тільки їх вхід змінюється, а їхні виходи оновлюються якомога швидше. Це дозволяє отримати неприємні небажані взаємодії між різними частинами логічної ланцюга (ненавмисні петлі зворотного зв'язку та перегони). Проектування складної послідовної схеми з використанням асинхронних будівельних блоків за своєю суттю складніше і схильне до помилок. Синхронні схеми уникають подібних пасток, обмежуючи роботу будівельних блоків тимчасовими моментами, коли виявляються краї годин. Коли край надходить, синхронна логічна схема отримує дані на своїх входах, але поки не оновлює свої виходи. Як тільки вхідні дані отримані, результати оновлюються. Це дозволяє уникнути ризику повернення вихідного сигналу на вхід, який не був повністю придбаний, і зіпсувати речі (сказати просто).

Ця стратегія "роз'єднання" збору вхідних даних із оновлення виходів дозволяє простіші методи проектування, що перекладається на більш складні системи для заданих проектних зусиль.


5

Те, що ви описуєте, називається асинхронною логікою . Він може працювати, і коли це робить, це часто швидше і використовує менше енергії, ніж синхронна (тактована) логіка. На жаль, асинхронна логіка має деякі проблеми, які не дозволяють їй широко застосовуватися. Основне, що я бачу, - це те, що потрібно реалізувати набагато більше транзисторів, оскільки вам потрібна маса незалежних сигналів синхронізації. (Мікроконтролери роблять багато роботи паралельно, як і процесори.) Це призведе до збільшення витрат. Відсутність хороших дизайнерських інструментів є великою передовою.

Мікроконтролерам, ймовірно, завжди потрібні годинники, оскільки їх периферійні пристрої зазвичай потребують вимірювання часу. Таймери та ШІМ працюють з фіксованим інтервалом часу, частота дискретизації АЦП впливає на їх пропускну здатність, а для асинхронних протоколів зв'язку, таких як CAN та USB, потрібні опорні годинники для відновлення годин. Зазвичай ми хочемо, щоб процесори працювали якомога швидше, але це не завжди так, як для інших цифрових систем.


3

Насправді ви бачите MCU як повну одиницю, але правда, вона сама складається з різних воріт та логіки TTL і RTL, часто FF масиву, всім потрібен синхронічний сигнал окремо.

Щоб бути більш конкретним, подумайте про просто доступ до адреси З пам'яті ця проста задача сама по собі може включати в себе кілька операцій, таких як надання BUS доступним для рядків даних та адресних рядків.
Найкращий спосіб сказати, що самі інструкції відбуваються в невеликих одиницях роботи, які вимагають тактових циклів, комбінованих для машинних циклів , які враховують різні властивості MCU, такі як швидкість (FLOPS ** у складних MCU), накладки труб тощо.

Відповідь на Коментар ОП

Щоб бути дуже точним, я наводжу вам приклад, є чіп під назвою ALE(Увімкнення адресної засувки) зазвичай для мультиплексування шини нижньої адреси для передачі і адрес, і даних на одних і тих же штифтах ми використовуємо осцилятори (Intel 8051 використовує локальний осцилятор 11.059 МГц як годинник) для отримання адреси, а потім даних.

Як ви можете знати, що основними частинами MCU є CPU, ALU та внутрішній реєстр тощо, ЦП (керуючий s / g) надсилає адресу на всі адресні штифти 16 у випадку 8051, це відбувається в момент миттєвого часу T1 і після адреса - відповідна матриця зберігання конденсаторів (заряд як сигнал) ( * відображення пам'яті * ), активується та вибирається.

Після вибору сигнал ALE активується, тобто контактний ALE робиться високим на наступний годинник, скажімо, T2 ( як правило, високий сигнал, але змінюється відповідно до конструкції блоку обробки ), після цього шини нижчої адреси діють як лінії передачі даних, і дані записуються чи читаються (залежно від виходу на штифт RD / WR MCU).
Ви чітко бачите, що всі події є своєчасно послідовними

Що трапиться, якщо ми не будемо використовувати годинник. Тоді нам доведеться використовувати метод асинхронного синхронізування ASQC, це зробить кожний хвірт залежним від іншого і може призвести до апаратних збоїв. час на виконання завдання.
Тож це щось небажане


Цей вид має сенс. Але навіщо цим різним відділенням MCU потрібен тактовий сигнал для роботи? Що теоретично сталося б, якби вони не використовували годинник?
MR

1
@Martin, логічні ворота змінюють стан негайно, коли змінюється їх вхід. Тактова послідовна логіка оцінює лише її входи під час події. Це основний принцип, який керує цифровими схемами пам'яті. Це дає нам можливість вибірково переміщувати дані з одного місця в інше з абсолютним контролем, що дозволяє створювати апаратне забезпечення загального призначення, яке можна запрограмувати за допомогою програмного забезпечення, щоб робити - ну що завгодно.
Шон Бодді

3
@SeanBoddy: Логічні ворота не мають шансу одразу, є коротке відставання, яке видно на осцилограмі. Якби ми не використовували годинник, різниця в цих термінах між компонентами може спричинити перегони, що дають неправильні результати.
BlueRaja - Danny Pflughoeft

@BlueRaja - добре гарні голубці, як щодо цього. Можливо, я повернусь через 4 роки записів сильної електроніки та 8 років військово-морського навчання, щоб дізнатися, де я пропустив це одне.
Шон Бодді

2

Основна проблема, яку вирішує годинник, полягає в тому, що транзистори насправді не є цифровими пристроями: вони використовують аналогові рівні напруги на входах, щоб визначити вихід, і потрібен обмежений час, щоб змінити стан. Якщо, як було сказано в іншій відповіді, ви не потрапите в квантові пристрої, настане період часу, коли вхід переходить з одного стану в інший. На час, який це потребує, впливає ємнісне навантаження, яке буде відрізнятися від одного пристрою до іншого. Це означає, що різні транісістори, що складають кожну логічну браму, реагуватимуть дещо в різні часи. Годинник використовується для «фіксації» виходів компонентних пристроїв, як тільки вони стабілізуються.

В якості аналогії розглянемо транспортний рівень зв'язку SPI (послідовний периферійний інтерфейс). Типова реалізація цього методу використовуватиме три рядки: Data In, Data Out та Clock. Щоб надіслати байт над цим транспортним шаром, майстер встановить рядок Data Out та затвердить рядок Clock, щоб вказати, що рядок Data Out має дійсне значення. Ведений пристрій відбирає дані Data In у рядку лише тоді, коли йому це буде доручено сигналом Clock. Якби не було тактового сигналу, як би раб знав, коли слід вибирати дані в рядку? Він міг взяти вибірковий аналіз до того, як лінію буде встановлено майстром або під час переходу між станами. Асинхронні протоколи, такі як CAN, RS485, RS422, RS232 тощо, вирішують це, використовуючи заздалегідь визначений час вибірки, фіксовану швидкість передачі бітів та (накладні) біти кадрування.

Іншими словами, існує певне загальне знання, яке потрібно визначити, коли всі транзистори в наборі воріт досягли свого остаточного стану і інструкція завершена. У головоломці (100 блакитних очей), зазначеній у посиланні вище, та детально поясненому в цьому питанні на Maths Stack Exchange, «оракул» виступає як годинник для людей на острові.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.