Я немного читал о создании цифрового компьютера в Shocken / Nisan's: «Элементы вычислительных систем» . Но эта книга ничего не говорит об определенных электрических аспектах в компьютерах, например: часто говорят, что 0 и 1 представлены напряжением, если напряжение находится в интервале [0, 0,9), то это 0. Если напряжение в интервале [0,9, 1,5), то это 1 (напряжение может меняться, я только приведу пример).
Но я никогда не читал о том, что позволяет электрическим напряжениям «хорошо себя вести» таким образом, чтобы 0 никогда не могло случайно стать 1 из-за электрической волатильности [1] внутри компьютера. Возможно, что напряжение может быть очень близко к 0,9, тогда что делается, чтобы избежать превышения порога?
[1]: Предположим, он существует.
источник
Ответы:
В некоторой степени вы в основном создали эту проблему на нереальном примере. Существует гораздо больший разрыв между логическим минимумом и максимумом в реальных цепях.
Например, логика 5 В CMOS выдает 0–0,2 В для низкого логического уровня и 4,7–5 В для высокого логического уровня и последовательно принимает все, что ниже 1,3 В, как низкое или что-либо выше 3,7 В как высокое. То есть на выходах гораздо более узкие поля, чем на входах, и остается огромный разрыв между напряжениями, которые могут использоваться для логических сигналов низкого уровня (<1,3 В), и сигналами, которые могут использоваться для логических сигналов высокого уровня (> 3,7 В). , Все это специально разработано, чтобы учесть шум и предотвратить случайное переключение, которое вы описываете.
Вот визуальное представление порогов для различных логических стандартов, которые я позаимствовал на interfacebus.com :
Каждый столбец представляет один логический стандарт, а вертикальная ось является напряжением. Вот что представляет каждый цвет:
источник
Мы не можем Мы просто уменьшаем вероятность ошибок, добавляя проверки к данным. В зависимости от того, какой тип данных должен быть проверен, это может быть сделано с помощью аппаратного или программного обеспечения и может принимать любую форму от простых битов контрольной суммы в последовательных потоках до циклических конечных автоматов, позволяющих выполнять только определенные переходы в любой момент времени.
Но это замкнутый круг, не так ли? Как мы можем гарантировать, что цепь, отвечающая за проверку данных, не подвержена тем же помехам, что и данные, и дает ложное срабатывание? Добавляете еще один? Вы можете видеть, как это может стать довольно дорогим за очень небольшую выгоду в конце.
Вопрос в том, насколько надежной должна быть ваша система? Спутники, которые включают в себя некоторые из самых надежных доступных компьютерных систем, например, иногда прибегают к перекрестной избыточности неидентичных систем, а также голосов: три разных компьютера используют один и тот же алгоритм, закодированный тремя разными людьми тремя разными способами, и если один из компьютеров дает другой результат, чем два других, он перезапускается (и, если это произойдет снова, изолирован). Но опять же, если два компьютера неисправны одновременно, неправильный компьютер будет перезагружен / изолирован. Обычно «холодного резервирования» достаточно: реализованы первичный и вторичный контур, первичный работает до тех пор, пока не обнаруживается ошибка какой-либо (незащищенной) контрольной цепью, и вторичный контур не заменяется. Если это просто ошибка в оперативной памяти, код может быть перезапущен для обновления данных. Вам просто нужно мудро решить, где провести линию, невозможно сделать 100% надежную схему обнаружения ошибок.
На спутники (особенно на большой высоте или в поясе Ван Аллена) и компьютеры на атомных станциях или в других радиоактивных средах особенно распространяются (ключевое слово :) Одиночные события. Расстройства или защелки из-за столкновения частиц высокой энергии или поглощения их кристаллическими решетками полупроводников. , Книги, охватывающие эти области, безусловно, будут лучшим выбором. Краска ухудшается из-за повреждения, вызванного смещением от излучения, поэтому совершенно понятно, что полупроводники могут быть повреждены или расстроены также входящим излучением.
источник
Одиночные события больше не являются ни космическим, ни летательным аппаратом; мы наблюдаем, как они происходят на поверхности более десяти лет, а может быть, два.
Как уже упоминалось, по крайней мере, в космических приложениях мы имеем дело с расстройствами, используя тройное голосование (каждый бит на самом деле равен трем, и выигрывает две трети, поэтому, если есть один, который изменяет, другие два покроют его). И затем ECC или EDAC с очистителями , которые проходят через ОЗУ со скоростью, превышающей прогнозируемую частоту обновления одного события, чтобы убрать сбои одного события (те, которые фактически заставляют две трети голосовать неправильно).
Тогда есть общая доза; Со временем материал становится слишком радиоактивным, чтобы работать, поэтому вы используете достаточно материала, чтобы продлить срок службы автомобиля. Не то, о чем мы обычно беспокоимся на поверхности. (И защелка). Использование трех / нескольких наборов логики параллельно было / было способом попытаться не использовать традиционные радикальные технологии, и, ну, вы можете найти, насколько хорошо это работает.
Люди, которые раньше знали, как делать вещи для космоса, по большей части ушли на пенсию или переехали, поэтому у нас есть несколько программ, создающих космический мусор. Или рассматривая космос как земные продукты, вместо того, чтобы заставлять всех работать и иметь контролируемый повторный вход и выгорание, мы теперь ожидаем определенное количество космического мусора из каждого созвездия.
Мы видим расстраивания на поверхности. Любая карта памяти ( DRAM ), которую вы покупаете, имеет FIT, Failures In Time, и любой чип с ОЗУ (все процессоры, многие другие) также будет иметь спецификацию FIT (для блоков RAM (SRAM)). Оперативная память более плотная и использует меньшие транзисторы, поэтому она более восприимчива к расстройствам, внутренним или внешним. В большинстве случаев мы не замечаем и не заботимся о том, как память, которую мы используем для данных, просмотра видео и т. Д., Записывается, читается и не используется снова, пока она не отработала достаточно долго, чтобы расстроиться. Некоторая память, например, содержащая программу или ядро, более рискованна. Но мы давно привыкли к идее простой перезагрузки нашего компьютера или перезагрузки / перезагрузки нашего телефона (в некоторых телефонах / брендах вам придется периодически периодически вынимать аккумулятор). Были ли это расстроены или плохое программное обеспечение или комбинация?
Числа FIT для вашего отдельного продукта могут превышать срок службы этого продукта, но для большой фермы серверов вы учитываете все ОЗУ или микросхемы или что-то еще, а MTBF исчисляется годами или заказами после этого, днями или часами, где-то в ферма. И у вас есть ECC, чтобы покрыть то, что вы можете из них. А затем вы распределяете нагрузку обработки с помощью отказоустойчивости, чтобы охватить машины или программное обеспечение, которое не может выполнить задачу.
Стремление к твердотельному хранилищу и переход от вращающихся носителей создали проблему, связанную с этим. Хранилище, используемое для SSD (и других энергонезависимых хранилищ), чтобы получить его быстрее и дешевле, гораздо более волатильно, чем нам хотелось бы, и полагается на EDAC, потому что без него мы потеряли бы данные. Они добавляют много лишних битов и, в общем-то, все это делают, делая математику, чтобы сбалансировать скорость, стоимость и долговечность хранилища. Я не вижу, как мы возвращаемся; люди хотят больше энергонезависимого хранилища везде, которое помещается в крошечную упаковку и не доминирует в цене продукта.
Что касается нормальных цепей, с первых дней использования транзисторов для цифровых цепей до настоящего времени, мы проходим через линейную часть транзистора и используем его в качестве переключателя, мы ударяем его между рельсами с некоторым избытком, чтобы обеспечить его залипание , Как выключатель света на вашей стене, вы переворачиваете его более чем наполовину, а пружина помогает остальным и удерживает его там. Вот почему мы используем цифровой и не пытаемся жить в линейной области; они попробовали рано, но потерпели неудачу. Они не могли оставаться откалиброванными.
Поэтому мы просто вбиваем транзистор в его рельсы, и обе стороны сигнала установятся к следующему такту. Прилагаются большие усилия, и современные инструменты значительно лучше, чем они были при анализе конструкции микросхемы, чтобы увидеть, что по конструкции есть запас времени. Затем протестируйте каждый кристалл на каждой пластине (той и / или после упаковки), чтобы убедиться, что каждый чип хорош.
Технология чипов сильно зависит от статистики, основанной на экспериментах. Когда вы разгоняете свой ЦП, вы просто увеличиваете этот запас, оставаясь в пределах заявленной тактовой частоты, температуры и т. Д., И ваши шансы значительно ниже проблем. Процессор 3 ГГц xyz - это просто чип 4 ГГц, который вышел из строя на частоте 4 ГГц, но прошел на частоте 3 ГГц. Части оцениваются по скорости в основном с производственной линии.
Кроме того, существуют связи между микросхемами или платами, и они также подвержены проблемам, и много времени и усилий уходит на разработку стандартов, конструкций плат и т. Д., Чтобы уменьшить ошибки на этих интерфейсах. USB , клавиатура, мышь, HDMI , SATA и тд. Как и все следы на доске. На доске и за ее пределами возникают проблемы с перекрестными помехами; Опять же, многие инструменты доступны, если вы используете их, а также опыт во избежание проблем, во-первых, но еще один способ, при котором мы можем не видеть, что единицы и нули будут полностью задействованы.
Ни одна из технологий, даже космос, не идеальна. Оно должно быть достаточно хорошим, достаточный процент продукта должен покрывать достаточный ожидаемый срок службы продукта. Некоторый процент смартфонов должен сделать это как минимум два года, и все. У более старых литейных заводов или технологий больше экспериментальных данных, и они могут производить более надежный продукт, но он медленнее и не может быть новым дизайном, так что начните. Передовой край - это всего лишь азартная игра для всех.
К вашему конкретному вопросу, транзисторы на каждом конце сигнала быстро проталкиваются через их линейную область и наклоняются в одну из направляющих. Анализ выполняется на каждом комбинационном пути, чтобы определить, что он установится до того, как часы в конце пути зафиксируют его, так что он действительно будет равен нулю или единице. Анализ основан на экспериментах. Первые чипы продуктовой линейки вытесняются за пределы дизайна, графики Schmoo сделаны, чтобы определить, есть ли запас в дизайне. Изменения в процессе сделаны и / или найдены отдельные кандидаты, которые представляют медленные и быстрые фишки. Это сложный процесс, и у некоторых больше материала, у некоторых меньше, он работает быстрее, но использует больше энергии или работает медленнее и т. Д.
Вы также подталкиваете их к полям. И в основном получаю теплое нечеткое ощущение, что дизайн вполне подходит для запуска в производство. JTAG / сканирование границы используются для прогона случайных паттернов через микросхемы между каждым фиксированным состоянием, чтобы увидеть, что комбинационные пути являются надежными для проекта. И там, где есть проблемы, могут также проводиться некоторые направленные функциональные тесты. Дальнейшее тестирование первого кремния и, возможно, случайное тестирование, чтобы убедиться, что продукт хорош. Если / когда происходят сбои, это может подтолкнуть вас к более функциональным испытаниям на производственной линии. Это сильно зависит от статистики / процентов. 1/1000000 плохих выходить может быть в порядке или 1/1000 или что-то еще; это зависит от того, сколько вы думаете, вы будете производить из этого чипа.
Уязвимости, как упомянуто здесь и с другими. Во-первых, сам чип, насколько хорош дизайн и процесс, насколько близко к краю - самый слабый путь конкретного чипа в купленном вами продукте. Если слишком близко к краю, то изменение температуры или другое может вызвать проблемы синхронизации, и биты зафиксируют данные, которые не установились в единицу или ноль. Тогда есть одиночные события. И тогда есть шум. опять материал уже упоминался ...
источник
Если вам нужен простой ответ:
Каждый цифровой компонент в компьютере более ограничен по выходам, которые он производит, чем по входам, которые он принимает. Например, любое «входное» значение от 0 В до 2 В будет принято как 0, но «выход» 0 всегда будет в диапазоне от 0 до 0,5 В. (См. Duskwuff ответ для некоторых фактических значений.)
Это означает, что каждый компонент помогает «исправить» некоторые отклонения или шум, которые произошли вдоль линии. Конечно, если шум достаточно велик, система не сможет компенсировать это. Компьютеры в среде с высокой радиацией могут часто зависеть от того, что значение 1 изменяется на 0 и наоборот.
В основном компьютеры спроектированы так, чтобы выдерживать определенные уровни шума / помех , что достаточно для большинства практических целей.
источник
Теоретически возможно, что сигналы изменятся между 0 и 1 из-за теплового (и другого) шума, однако это крайне маловероятно.
Цифровые схемы имеют атрибут «запас по шуму». Это величина, на которую его входной сигнал должен измениться, прежде чем выходной сигнал перевернется. Обычно в КМОП-схемах это составляет около 50% от напряжения питания. Неизбежный тепловой шум (исходящий от электронов, движущихся при любой температуре выше 0 Кельвина) в этих цепях создает шум ~ 1 мВ, и вероятность того, что эти пики могут превысить (скажем) 500 мВ, чрезвычайно мала.
Цифровые (например, CMOS) вентили имеют характеристики усиления и насыщения. Это означает, что когда входной сигнал находится близко к середине диапазона, выход изменяется быстро (высокий коэффициент усиления), но когда он близок к крайним значениям диапазона, он изменяется медленно. В результате этого, когда входной сигнал «близок» к рельсам, выходной сигнал еще ближе - это означает, что шум не усиливается.
Другие функции, упомянутые выше (исправление ошибок и т. Д.), Означают, что ошибки, даже если они возникают, не распространяются.
источник
В системах, подверженных ошибкам, таких как каналы связи и магнитное хранилище (и иногда даже ОЗУ), контрольная сумма, CRC или ECC хранятся для отклонения неверных данных или исправления небольших ошибок.
Обычно двоичные системы спроектированы так, что это невозможно, но один раз в несколько миллионов или миллиард * раз космический луч или вспышка шума будут подталкивать вещи по линии, обнаружение / исправление ошибок необходимо, чтобы сохранить искажение от серьезного влияния на компьютер.
* Каналы связи могут иметь гораздо более высокий уровень ошибок!
источник
Компьютерное оборудование стало более надежным и надежным. Но аппаратные средства слишком широки для простого ответа. Однако может быть интересно знать, что существует разница в надежности между обычным настольным компьютером и компьютером корпоративного сервера. Я нашел эту ветку вопросов / ответов о серверном оборудовании. Сервер будет стоить во много раз дороже аналогичного настольного компьютера. Стоимость является результатом более качественного оборудования, которое, вероятно, в несколько раз реже «переключит 1 и 0».
Но аппаратная часть - это только половина дела. Компьютеры также могут защитить данные от непредвиденных ошибок с помощью программного обеспечения. Код Хэмминга - это пример, в котором путем добавления небольшого количества дополнительных данных небольшое количество ошибок можно не только обнаружить, но и исправить.
источник
Существует два способа, которые обычно используются для минимизации вероятности случайного переключения логического бита (от 0 до 1 или от 1 до 0).
Первым является предоставление , как большой зазор , между уровнями напряжения , определенных для 0 и 1, как это возможно . Как вы упомянули, 0 определяется как уровень напряжения <0,9 В, в то время как 1 определяется как уровень напряжения> 2,9 В (не так, как вы говорите от 0,9 до 1,5). Это оставляет разрыв напряжения 2v. Это означает, что напряжение сигнала должно измениться на 200% , прежде чем оно «случайно» переключит состояние бита (очень маловероятно).
Второе - это "тактирование"логические сигналы. Поскольку «случайное» напряжение / шум является случайным и кратковременным, что позволяет изменять состояние только через определенные (и короткие) интервалы, вероятность попадания «вариации» во время часов сводится к минимуму.
Конечно, используются другие средства и методы, в зависимости от требуемой степени надежности (ECD, ECC и т. Д.).
источник
Хорошая инженерия.
Много усилий направлено на то, чтобы предотвратить повреждение данных или исправить их, когда их невозможно предотвратить (например, память ECC ).
Вещи, которые могут вызвать повреждение данных, включают в себя:
Короче говоря, многие разработки были направлены на цифровые разработки, поэтому разработчики программного обеспечения могут сделать простое предположение, что «0» означает «0», а «1» означает «1».
источник
Два фундаментальных аспекта практических электронных компьютеров:
Очень стабильный источник питания
Время (обычно определяется как тактовая частота или задержка)
Блоки питания для вычислительных систем очень строго определены и регламентированы. Фактически, для любой вычислительной системы источник питания обычно регулируется несколько раз: на источнике питания (или зарядном устройстве), на главном входе материнской платы, на входе дочерних плат и, наконец, на самом чипе.
Это устраняет много шума (электрическая изменчивость). Процессор видит очень стабильный, энергонезависимый источник напряжения, который он может использовать для обработки логики.
Следующий основной источник промежуточных значений (напряжения между тем, что считается 0 или 1) появляется, когда значения переходят. Либо 1 меняется на 0 (время спада), либо 0 меняется на 1 (время спада). Вы действительно ничего не можете с этим поделать, кроме как дождаться завершения перехода, прежде чем принимать вывод схемы. Перед завершением перехода вывод схемы считается мусором.
В разработке решение этой проблемы состоит в том, чтобы просто написать, как долго вам нужно ждать, пока результаты будут правильными на бумаге. Это источник тактовой частоты процессора. Сколько ГГц вы можете запустить ЦП, зависит от того, сколько времени потребуется для стабилизации изменений состояния ЦП.
На самом деле существует третий источник волатильности: входы в цепь. Решение этой проблемы аналогично общей проблеме выше: убедитесь, что сигнал (напряжение или ток), поступающий в систему, стабилен, и убедитесь, что у сигнала достаточно времени для стабилизации.
Вторая часть проблемы заключается в том, почему перед обработкой мы выбираем входные данные в защелки или регистры. Сигнал может быть мусором. Но они будут 0 или 1 мусором внутри регистров, когда они будут обработаны. Первая часть проблемы заключается в том, для чего нужны гарантии.
источник
Обратная связь - это то, что мешает ему приблизиться к пороговому напряжению и заставляет его вести себя хорошо.
Обычно это имеет вид какой-либо схемы с защелкой, часто с синхронизированной схемой с защелкой.
В качестве простого примера рассмотрим триггер . Он спроектирован так, что выход подается обратно в логическую схему в качестве дополнительного входа. Следовательно, логика внутри элемента знает, что он выводит, и будет продолжать выводить то же значение, пока другие входы не приведут его в противоположное состояние.
Поскольку схема спроектирована таким образом, что транзисторы полностью включены или полностью выключены, то он всегда будет выходить вблизи пределов питания и заземления - он не будет приближаться к уровню 0,9 В, а при переходе он будет быстро и полностью перемещаться. в другой штат. Цепи разработаны специально, чтобы избежать работы в аналоговой области между двумя состояниями.
источник
При нормальных условиях работы 0 и 1 редко дают сбой, но при плохих условиях работы (например, разряженная батарея или это короткое время после отключения питания переменного тока и падения напряжения в конденсаторе) происходят странные вещи, и 0 и 1 портятся все время.
По этой причине, если вы пишете защитный код (программное обеспечение или HDL), который не хотите блокировать, вы всегда должны учитывать случай, когда число может сбиться. Например,
Лучше изменить значение
==
на>=
всякий случай, если значениеi
скачка от 9 до 11 или любое число больше 10, что приведет к тому, что вы никогда не выйдете из цикла, пока неi
достигнете 0 (скажем, после 4 миллиардов итераций).Бывает, поверь мне ...
источник
i
перейти к какому-то большому отрицательному числу?