Як ми можемо бути впевнені, що комп’ютери ніколи не випадково переключать 0 на 1?


63

Я читав трохи про побудову цифрового комп’ютера в Шокен / Нісан: Елементи обчислювальних систем . Але ця книга нічого не говорить про певні електричні аспекти в комп’ютерах, наприклад: Часто кажуть, що 0 і 1 позначаються напругою, якщо напруга знаходиться в інтервалі [0, 0,9), то це 0. Якщо напруга дорівнює в інтервалі [0,9, 1,5), то це 1 (напруги можуть змінюватися, я наводжу лише приклад).

Але я ніколи не читав, що тримає електричні напруги «добре поводиться» таким чином, що 0 ніколи не може випадково стати рівнем 1 через електричну нестабільність [1] всередині комп'ютера. Можливо, напруга може бути дуже близько 0,9, то що робити, щоб не перейти порог?

[1]: Припустимо, що він існує.


7
Струм ніколи не буває майже 0,9, тому що ніколи ніколи не робить струм дуже близько 0,9.
користувач253751

7
Оскільки речі розроблені так, щоб струми не виходили близько 0,9. Ви також можете запитати: "У мене є вагомі емпіричні докази того, що мій ноутбук не заряджається на 50 гігавольт; чому це не так?" Просто тому, що немає причин для цього.
користувач253751

13
Нітпік: Більшість цифрових логік використовує напруги, а не струми для представлення логічних станів.
сумерк

11
анекдотичні докази: У 2011 році я трохи поміняв файл на hdd, який працював нормально протягом 5 років.
ПлазмаHH

7
Ці випадкові комутатори є корисними. Пояснення Google є цікавим для цього випадком. Це, безумовно, робить безпеку значно жорсткішою, коли справжній API для "Встановити біт X на 1" - "Встановити біт X на 1, а іноді випадково встановити біт Y на 1". Це також стає дуже поширеним у випадку розігнаних машин. Пригадую, одна компанія фактично додала купу розрахунків (кожен кадр) з відомими результатами, щоб побачити, чи обладнання було достатньо надійним для запуску гри.
Брайан

Відповіді:


100

Часто кажуть, що 0 і 1 представляються напругою, якщо напруга знаходиться в інтервалі [0, 0,9), то це 0. Якщо напруга знаходиться в інтервалі [0,9, 1,5), то це 1 ( напруги можуть різнитися, я наводжу лише приклад).

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

Наприклад, 5V CMOS логіка виведе 0-0,2 В для логіки низької і 4,7-5 В для логіки високої, і буде постійно приймати що-небудь нижче 1,3 В як низьке або що-небудь понад 3,7 В як вище. Тобто, на виходах є набагато більш жорсткі запаси, ніж на входах, і між напругами, які можуть використовуватися для логічних низьких сигналів (<1,3 В), і тими, які можуть використовуватися для логічного високого рівня (> 3,7 В), залишився величезний розрив. . Все це спеціально розроблено для припускання шуму та запобігання самим випадковим комутаціям, які ви описуєте.

Ось наочне зображення порогів для різних логічних стандартів, які я запозичив у interfacebus.com :

Пороги логічного рівня] [1]

Кожен стовпець представляє один логічний стандарт, а вертикальна вісь - напруга. Ось що представляє кожен колір:

  • Помаранчевий: Напруги в цьому діапазоні виводяться для логічного максимуму і приймаються як логічно високі.
  • Світло-зелений: Напруги в цьому діапазоні будуть прийняті як логічно високі.
  • Рожевий / блакитний: Напруги в цьому діапазоні не трактуватимуться послідовно, але напруги в рожевій області, як правило, трактуються як високі, а сині в області синього - зазвичай низькі.
  • Синювато-зелений: Напруги в цьому діапазоні будуть прийняті як логічно низькі.
  • Жовтий: Напруги в цьому діапазоні виводяться для логічного низького рівня і інтерпретуються як логічно низький.

4
Хороша відповідь, хоча я думаю, що це може бути і більш повним: ви захищаєте лише від імунітету (а точніше - захисту від) шуму. Існує безліч інших механізмів, що відповідають за цифрові помилки, і так само багато засобів захисту. Хороша річ у тому, що я не відповідав за захист від шуму у своїй відповіді :)
Mister Mystère

1
@ MisterMystère Це правда! Однак виправлення помилок - це величезна тема, і я не міг би охопити все це однією відповіддю.
сумерк

1
@ MisterMystère: Ну, "шум" - це термін, який охоплює всі види стохастичних джерел помилок. Ваші приклади перешкод ЕМ та космічного випромінювання відносяться до категорії "шуму" просто чудово. Єдина інша причина цифрових помилок - це детермінована, яку ми називаємо «помилкою». Але це питання стосується лише випадкових помилок.
Ben Voigt

У вашій третій кулі, я вважаю, у вас змінено кольори або логіку. рожевий повинен бути низьким, а синій - високим.
Гілл

@Guill Huh? Рожева область знаходиться вище V_T, тому вона ненадійно трактується як логічно висока.
сутінки

65

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

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

Питання: наскільки надійною ви бажаєте бути вашою системою? Супутники, які вбудовують деякі найнадійніші комп'ютерні системи, наприклад, іноді вдаються до перехресного надмірності неідентичних систем, а також голосів: три різні комп’ютери виконують один і той же алгоритм, кодований трьома різними особами трьома різними способами, і якщо один комп'ютерів дає інший результат від двох інших, він перезапускається (і якщо це повторюється, ізольований). Але знову ж таки, якщо одночасно несправні два комп’ютери, то неправильний комп'ютер буде перезапущений / ізольований. Зазвичай "холодної надмірності" достатньо: первинний і вторинний ланцюг реалізовані, первинна працює, поки помилка не буде виявлена ​​якоюсь (незахищеною) схемою моніторингу та заміною вторинної ланцюга. Якщо це просто помилка в оперативній пам’яті, код можна повторно запустити для оновлення даних. Ви просто мусите вирішити, де провести лінію, неможливо скласти 100% надійну схему виявлення помилок.

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


2
Я не впевнений, чи ти мав намір написати "порочне коло", але "в'язке коло" звучить так само смішно.
svavil

1
Насправді це було в'язке коло, але в'язке коло змусило мене сміятися :)
Mister Mystère

1
Потрібно лише журнал n бітів, щоб можна було знайти та виправити одну бітну помилку в n бітах.
Thorbjørn Ravn Andersen

1
Це нагадує мені про недавнє питанні про написання програм для обліку апаратних помилок в комп'ютерах , схильних до радіоактивні сполуки: stackoverflow.com/questions/36827659 / ...
Pharap

Я не знав про супутникові речі, що три різні "групи" (або більше) кодують одне і те саме по-різному. Звучить круто :)
kalmanIsAGameChanger

33

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

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

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

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

Ми бачимо розлади на поверхні. Будь-який накопичувач пам'яті ( DRAM ), який ви купуєте, має FIT, Failures In Time, а будь-який чіп із оперативною пам’яттю в ньому (усі процесори та багато інших) матиме специфікацію FIT (для блоків RAM (SRAM)). Оперативна пам’ять є більш щільною і використовує менші транзистори, тому вона більш чутлива до засмучення, внутрішньої чи зовнішньої. Більшу частину часу ми не помічаємо і не піклуємося про те, як пам'ять, яку ми використовуємо для даних, перегляд відео тощо, записується, читається назад і не використовується знову, перш ніж вона сидить досить довго, щоб засмутитись. Деяка пам’ять, як-от одна, що тримає програму чи ядро, є більш ризикованою. Але ми давно звикли до ідеї просто перезавантажити комп’ютер або скинути / перезавантажити наш телефон (деякі телефони / марки, які вам доведеться регулярно виймати акумулятор). Це були розлади або погане програмне забезпечення чи комбінація?

Номери FIT для вашого окремого продукту можуть перевищувати термін служби цього продукту, але, використовуючи велику ферму серверів, ви враховуєте всю оперативну пам’ять або мікросхеми чи будь-що інше, і MTBF йде від років чи замовлень, що минули, днями чи годинами, десь у ферма. І у вас є ECC, щоб покрити, що ви можете з них. А потім ви розподіляєте навантаження на обробку з відмовою, щоб покрити машини чи програмне забезпечення, яке не виконало завдання.

Прагнення до твердотільного зберігання та перехід від прядильних медіа створили проблему, пов’язану з цим. Сховище, що використовується для SSD (та інших енергонезалежних сховищ), щоб отримати швидше та дешевше, набагато більш мінливе, ніж ми хотіли б, і покладається на EDAC, оскільки ми втрачаємо дані без цього. Вони кидають багато зайвих шматочків у та все це, роблячи математику, щоб збалансувати швидкість, вартість та довговічність зберігання. Я не бачу, як ми повертаємось назад; люди хочуть більше енергонезалежного місця зберігання скрізь, яке вписується в крихітний пакет і не домінує над ціною товару.

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

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

Техніка мікросхем багато в чому покладається на статистику, засновану на експериментах. Коли ви розігнали свій процесор, ви добре натискаєте на цей запас, залишаєтесь у межах рекламованої тактової частоти, температури тощо, і ваші шанси значно менші, ніж виникнуть проблеми. Процесор xyz 3 ГГц - це просто чіп 4 ГГц, який не вдався до 4 ГГц, але пройшов на частоті 3 ГГц. Частини швидкості класифікуються в основному з лінії виробництва.

Тоді виникають зв’язки між мікросхемами чи платами, і вони також піддаються проблемам, і багато часу і зусиль витрачаються на створення стандартів та дизайну плати тощо, щоб зменшити помилки на цих інтерфейсах. USB , клавіатура, миша, HDMI , SATA тощо. Як і всі сліди на дошці. На дошці та поза нею виникають проблеми із перехресними перевагами; знову ж таки, є багато інструментів, якщо ви їх використовуєте, а також досвід уникнення проблем, в першу чергу, але ще один спосіб, коли ми можемо не побачити ці нулі та їх повноцінне використання.

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

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

Ви також підштовхуєте їх до поля. І в основному отримати тепле нечітке відчуття, що дизайн добре, щоб піти у виробництво. JTAG / граничне сканування використовується для запуску випадкових візерунків через мікросхеми між кожним замкненим станом, щоб побачити, що комбінаційні шляхи є надійними для дизайну. І там, де є проблеми, можуть відбутися і деякі спрямовані функціональні тести. Подальше тестування першого кремнію та, можливо, випадкове тестування, щоб переконатися, що продукт хороший. Якщо / коли трапляються збої, це може підштовхнути вас до більш функціональних тестів на виробничій лінії. Це сильно залежить від статистики / відсотків. 1/1000000 поганих, що виходять, може бути нормально, або 1/1000 чи будь-що інше; залежить від того, скільки ви думаєте, що ви виробите з цього чіпа.

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


4
Ваш перший абзац здається, що більше немає проблем з аерокосмічним середовищем, хоча, я думаю, ви мали на увазі, що СЕУ вже не є просто досвідченим у таких середовищах.
W5VO

Зауважте, що СЕУ можуть бути спричинені припоєм SnPb на БГА через те, що частина свинцю є частиною ланцюга розпаду урану, окрім активності вільних нейтронів.
Пітер Сміт

@ W5VO, так, я мав на увазі, що розлади через радіацію - це вже не просто космічна проблема, вони є проблемою аж до поверхні. Не так погано, як у космосі, але присутні.
old_timer

1
Здається, я пам'ятаю, що деякі міні-комп'ютери DEC мали проблеми з метастабільністю на практиці. Це відмінний механізм бітових помилок від тих, яких ви назвали, правда? Чи ні?
davidbak

2
@davidbak: Метастабільність - це неприємна проблема, найпоширенішим ефектом якої є те, що у кількох значеннях біт залежать від того, чи був якийсь вхід низьким чи високим в певний час у недавньому минулому, не все може перемикатися разом так, як це відповідає вхідним даних бути низьким, ні з таким чином, що відповідає його високим, але може натомість дати довільну суміш двох поведінок. Наприклад, якщо код повинен розгалужуватися при натисканні кнопки, біти лічильника програми можуть утримувати довільну суміш значень, які були б у них, якби кнопка була натиснута, або якби її не було.
supercat

12

Якщо вам потрібна проста відповідь:

Кожен цифровий компонент у комп'ютері більше обмежений у випусках, які він виробляє, ніж у входах, які він приймає. Наприклад, будь-яке "вхідне" значення від 0 В до 2 В буде прийняте як 0, але "вихід" 0 буде завжди знаходитися в діапазоні від 0 до 0,5 В. (Див. Відповідь сутінків на деякі фактичні значення.)

Це означає, що кожен компонент допомагає «виправити» деяке відхилення або шум, що виникли по лінії. Звичайно, якщо шум досить великий, система не може компенсувати. На комп’ютери в умовах високого випромінювання часто можуть впливати зміни 1 на 0 і навпаки.

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


8

Теоретично можливо, що сигнали змінюються між 0 і 1 через тепловий (та інший) шум, однак це вкрай малоймовірно.

Цифрові схеми розроблені з атрибутом, який називається "межа шуму". Це сума, на яку його вхід повинен змінитися до того, як вихід буде перевернутий. Як правило, в схемах CMOS це близько 50% напруги живлення. Неминучий тепловий шум (надходить від електронів, що рухаються при будь-якій температурі вище 0 кельвінів) у цих контурах генерує << 1 мВ шуму, і ймовірність того, що ці сплески можуть перевищувати (скажімо) 500 мВ, надзвичайно мала.

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

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


4

У системах, схильних до помилок, таких як канали зв'язку та магнітне зберігання (а іноді навіть оперативна пам'ять), контрольна сума, CRC або ECC зберігаються для відхилення поганих даних або виправлення невеликих помилок.

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

* Комунікаційні канали можуть мати набагато, значно вищий показник помилок!


4

Комп'ютерна техніка стала більш надійною та надійною. Але апаратне забезпечення занадто широке для простої відповіді. Однак може бути цікаво знати, що існує різниця у надійності між звичайним настільним комп’ютером та корпоративним комп'ютером сервера. Я знайшов це питання / відповідь щодо апаратного забезпечення сервера. Сервер обійдеться в багато разів, ніж порівнянна стільниця. Вартість - результат кращого обладнання, яке, можливо, в кілька разів менше, несподівано "переключиться на 1 і 0".

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


за винятком спалаху MLC, де надійність торгується на щільність,
Ясен

3

Є два способи, які зазвичай використовуються для мінімізації ймовірності випадкового перемикання логічного біта (0 до 1 або 1 до 0).
Перший полягає у забезпеченні максимально можливого зазору між рівнями напруги, визначеними для 0 і 1, наскільки це можливо . Як ви вже згадували, 0 визначається як рівень напруги <.9v, тоді як 1 визначається як рівень напруги> 2.9v (не як ви говорите .9-1,5). При цьому залишається розрив напруги 2В. Це означає, що напруга сигналу мала б змінюватися на 200% , перш ніж «випадково» переключити стан біта (дуже малоймовірно).
Друга - за допомогою "годинника"логічні сигнали. Оскільки "випадковий" напруга / шум є випадковим і короткочасним, дозволяючи змінювати стан лише через певні (і короткі) інтервали, ймовірність попадання "варіації" під час годинника зводиться до мінімуму.

Звичайно, застосовуються інші засоби та методи, залежно від необхідного рівня надійності (ECD, ECC тощо).


2

Хороша інженерія.

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

До речей, які можуть спричинити пошкодження даних, належать:

  • електрично галасливі середовища
  • питання, пов'язані з владою
  • Проблеми з тимчасовою передачею (наприклад, між тактовими та лініями даних або між двома різними лініями)
  • електричний перехресний ток

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


І звичайно, пам'ять ECC також може робити забавні речі, такі як запускати не маскуюче переривання (NMI), якщо більше бітів буде пошкоджено, ніж можливо відновити. Я думаю, що для сучасної оперативної пам’яті ECC це більше ніж одна бітова помилка в 64 бітах (кодування може виправляти однобітні помилки та виявляти, але не виправляти двобітні помилки), але я можу помилитися з цього приводу. У ситуаціях, коли ви дбаєте про свої дані, негайно зупиняти систему, якщо щось не вдається після ремонту, може бути кращим, ніж кульгати, не знаючи, чи можна довіряти цим даним (або ще гірше, знаючи, що їм не можна довіряти).
CVn

2

Два основні аспекти практичних електронних комп'ютерів:

  1. Дуже стабільний блок живлення

  2. Час (зазвичай визначається як тактова частота або затримка)

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

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

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

В інженерії вирішення цієї проблеми полягає в тому, щоб просто написати, скільки часу потрібно чекати, щоб результати були правильними на папері. Це початок тактової частоти процесора. Скільки ГГц можна запустити в процесорі, залежить від того, скільки часу потрібно для стабілізації змін стану ЦП.

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

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


2

Але я ніколи не читав, що тримає електричні напруги «добре поводиться» таким чином, що 0 ніколи не може випадково стати рівнем 1 через електричну нестабільність 1 всередині комп'ютера. Можливо, напруга може бути дуже близько 0,9, то що робити, щоб не перейти порог?

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

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

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

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


0

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

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

while(1)
{
  i++;
  do something here
  if (i == 10) break;
}

краще змінити на ==на >= всякий випадок, якщо значення iстрибків з 9 до 11 або будь-яке число більше 10, що призведе до того, що ви ніколи не виходите з циклу, поки не iзавернетеся до 0 (скажімо, після 4 мільярдів ітерацій).

while(1)
{
  i++;
  do something here
  if (i >= 10) break;
}

Буває, повірте мені ...


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