Чому годинники використовуються в комп'ютерах?


22

Як я знаю, годинник керує всіма логічними операціями, але він також обмежує швидкість роботи комп’ютера, оскільки воротам доводиться чекати, коли годинник зміниться від низького до високого або від високого до низького в залежності від компонента. Якщо не було включено годинник, ворота змінювалися б настільки швидко, наскільки вони могли, коли це було дано команду, то чому б це не збільшувало швидкість роботи комп'ютерів і чому використовуються годинники?


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

можливий дублікат синхросигналів у комп’ютерах та машинах , (і це питання було закрито як не справжнє питання ...)
amadeus

Для вузького кола завдань аналогові комп'ютери можуть бути швидшими, ніж цифрові.
Нік Алексєєв

1
Так вони знають, який час! (вибачте, не втримався)
Скотт Сейдман

Відповіді:


32

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

У синхронному ланцюзі електронний генератор, який називається годинником, генерує послідовність повторюваних імпульсів, званих тактовим сигналом, який розподіляється на всі елементи пам'яті в ланцюзі.

Тепер, що може здатися не задоволеним і наданим, ви з розумом запитаєте "чому синхронні схеми використовуються в комп'ютерах?" але на це також легко відповісти :

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

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


Частка Вікіпедії про асинхронну послідовну логіку досить коротка; Можливо, було б корисно розрізнити логіку, яка не має жодного годинника, але може гарантувати або те, що входи мікросхем не спричинять перегонових умов, або, в гіршому випадку, що виходи будь-якої схеми, вхід якої, можливо, мав стан гонки, не буде б / в.
supercat

Думаю, варто зазначити, що був повністю асинхронний комп'ютер, побудований Яцеком Карпінським, який отримав назву KAR-65. На жаль, я нічого не можу знайти про це англійською.
elmo

6

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

Використання тут годинника забезпечить, щоб 8 ліній даних містили правильне значення для цілого числа, представленого для одного тактового циклу, і що АЛУ буде "збирати" ці дані в межах одного тактового циклу.

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


6

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

Можна було б сконструювати АЛУ з "дійсним" входом і "дійсним" висновком і вказати, що за умови, що "дійсний" вхід є низьким протягом достатньої кількості часу до того, як буде проведено обчислення, і введення даних містять бажані значення до того, як "допустимий" вхід вийде високим, "дійсний" вихід не підніметься до тих пір, поки вихідні біти насправді не будуть правильними. Така конструкція, ймовірно, потребує приблизно вдвічі більшої схеми, ніж звичайна АЛУ [в основному, вона повинна буде відслідковувати, чи був кожен біт «відомим» нульовим або «відомим», щоб бути одним; його "дійсний" вихід стане істинним, як тільки стане відомим стан кожного вихідного біта].

Що ще гірше, дозволити ті частини процесора, які були б здатні працювати швидше, буде корисним лише у тому випадку, якщо вони не будуть чекати весь час, щоб повільніші частини відтворили наздоганяючі. Для того, щоб це сталося, повинна бути логікою, щоб вирішити, яка частина машини «попереду» в даний момент часу, і вибрати спосіб дії, виходячи з цього. На жаль, таке рішення є одним із найважчих для електроніки надійно прийняти. Надійно вирішити, яка з двох подій відбулася спочатку, як правило, просто, якщо можна гарантувати, що ніколи не буде "закритих дзвінків". Припустимо, що секвенсор пам'яті обробляє запит від блоку №1 обробки, а блок №1 має ще один запит, який очікує після цього. Якщо блок №2 подає запит до завершення першого запиту від №1, блок пам'яті повинен це впоратися; в іншому випадку він повинен обробляти наступний запит від підрозділу №1. Це могло б здатися розумним дизайном, але це, зрештою, напрочуд проблематично. Проблема полягає в тому, що якщо є такий момент часу, що запит, отриманий до цього моменту, який буде негайно оброблений, і запит, отриманий після цього, доведеться почекати, кількість часу, необхідного для визначення, чи буде запит перевищувати граничний термін приблизно обернено пропорційна різниці між часом отримання запиту та кінцевим терміном. Час, необхідний для того, щоб блок пам'яті визначив, що запит №2 перевищує термін на одну фемптосекунду, може значно перевищити кількість часу, необхідного для обслуговування другого запиту від блоку №1, але пристрій не може обслуговувати або запит, поки не вирішить, який з них спочатку надати.

Після того, як все закінчилося загальним годинником, це не тільки усуває потребу в схемі визначати, коли результат обчислення є дійсним, але також дозволяє усунути "закриті дзвінки" в часі. Якщо все в системі працює з тактовою частотою 100 МГц, сигнал не змінюється у відповідь на годинник до 1 секунди після краю годинника, і все, що відбудеться у відповідь на край годинника, відбувається протягом 7 секунд, тоді все, що відбудеться перед конкретний край годинника "виграє" щонайменше за 3 секунди, і все, що не відбудеться, поки після того, як край годинника не "втратить" щонайменше на 1нс. Визначити, чи є шанс сигналу до або після годинника, коли гарантується, що він не буде "близьким", набагато простіше, ніж визначити, який із двох сигналів з довільною синхронізацією відбувається спочатку.


4

Цифрові системи можуть бути як синхронні, так і асинхронні . У асинхронних системах вихід може змінюватися в будь-який момент, відрізняючись від синхронних систем, які залежать від годинника для зміни його виходів.

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

Я майже скопіював це з цього Digital Systems: Principles and Applications, 10th edition by R. J. Tocci et al.


3

Добре, якщо ви проектуєте синхронну систему, у вас є цільова тактова частота, і ви розробляєте логіку для завершення всіх обчислень протягом циклу протягом одного тактового періоду. Це також означає, що вам потрібно включити запас міцності, щоб забезпечити різні умови, такі як низька напруга живлення, висока температура та "повільний" чіп. Синхронні мікросхеми розроблені так, що найдовший логічний шлях (найповільніший обчислення) закінчиться в часі за всіх цих несприятливих умов. Як результат, коли умови не страшні, у вас буде набагато більше часу / запасу між тим, коли логіка завершить свою роботу, і наступний годинник зав'яже результат. Оскільки ви (як правило) не можете змінити тактову частоту, ви втрачаєте цю швидкість.

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

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


1

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

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

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

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


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

Якби дизайн був асинхронним, можна виявити, що випадкові 99% інструкцій беруть 5ns, 0,9% випадковим чином беруть 10ns, 0,09% беруть 30ns, 0,009% 100ns, 0,0009% 300ns, 0,00009% 1us, 0,000009% 3us тощо, без тверда гарантія, скільки часу може зайняти система, щоб вирішити двозначність часу. У більшості випадків наявність продуктивності, яка є неоптимальною, але передбачуваною, краще, ніж продуктивність, яка в середньому швидша, але має непередбачувані зміни, які іноді є серйозними.
supercat

@supercat 1) Чи не може бути розроблена схема, коли одночасні події ніколи не трапляються? (принаймні, якщо входи є достатньо регулярними) 2) Чи не може бути спроектована схема там, де не має значення, якщо відбуваються одночасні події?
Олександр Дубінський

Якщо відомий відносний термін двох подій, можна запобігти їх одночасному затриманню, затримуючи ту чи іншу. Чим точніше відомий їх відносний термін, тим менше затримки знадобиться. Якщо відносні терміни невідомі, можна вирішити дві події, які можуть статися одночасно, вказуючи на те, що відбулося спочатку, але щоб мінімізувати поведінку в гіршому випадку, потрібно прийняти деякі досить серйозні компроміси в поведінці найкращого випадку. Компроміси, необхідні для роботи комп'ютера без годинника, були б гіршими, ніж використання годинника.
supercat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.