Задать вопрос
@daniil14056

Как именно работает Сумматор в процессоре? Сигналы же не могут одновременно прийти, то есть будет 2 работы?

И все другие логические устройства.
Интересует когда именно происходит вычисления.
Допустим приходит 2 сигнала, но они же 100% не одновременно же придут?
То есть допустим на входах были до 1 и 1 сигналы, и приходят сигналы 0 0, но сначала же придет первый 0, и он там пойдет дальше по цепи 0 + 1 , а потом(через 0.0000000001 секунды) придет второй 0-0й и произойдет вычисление 0+0. То есть первое лишние вычисление.
  • Вопрос задан
  • 500 просмотров
Подписаться 1 Сложный Комментировать
Решения вопроса 1
@nehrung
Не забывайте кликать кнопку "Отметить решением"!
Я уже отвечал недавно на вопрос, как работает сумматор, и вопрос этот был ваш. Видимо, вы не поняли мой ответ, хотя мне казалось, он сформулирован достаточно просто. Ну что ж, придётся разжёвывать.
Прежде всего, сам по себе сумматор - комбинационная цифровая схема, и как таковой, он в тактовых импульсах не нуждается. Подали на его входы два операнда, и спустя время задержки на выходе появляется сумма. Но разжуём уже до мельчайших косточек - возьмём идеальный сумматор, составленный из идеальных логических элементов, не имеющих задержек распространения сигнала. Исходное состояние - на входах нули. На выходе, естественно, тоже нуль. Подаём первый операнд. Задержек нет, поэтому на выходе тут же появляется этот же операнд (он суммировался с нулём на другом входе). Затем подаём второй операнд - на выходе тут же (т.е. опять-таки без задержек) появляется сумма. Надеюсь, тут всё понятно (собственно, это мой ответ на эти ваши 0.0000000001 секунды - да хоть 0.00000000000000000000000000000001 сек, в идеальном сумматоре это без разницы).
Теперь рассмотрим сумматор из реальных логических элементов, имеющих задержку распространения. В нём всё точно так же, вот только на время суммарной задержки его составных частей на выходе будет неизвестно что. Вот так, буквально - подали первый операнд, на выходе неизвестно что (какая-то каша, которой нельзя доверять), и спустя время задержки каша успокаивается, и мы обнаруживаем на выходе этот самый первый операнд, который суммирован с нулём. Подали второй операнд - то же самое: сумму видим на выходе, когда период задержек закончился.
Именно по этой причине реальный сумматор в реальном процессоре снабжается входными и выходным регистрами - они позволяют отсеять те его состояния, которым нельзя доверять. Записали в первый регистр первый операнд по тактовому импульсу 1, затем второй по импульсу 2 (впрочем, можно и одновременно), и только потом по тактовому импульсу 3 записываем сумму в выходной регистр и пускаем дальше туда, где она понадобилась. Время между тактами должно быть заведомо больше, чем общие задержки в сумматоре - только при этом условии мы можем быть уверены в точности его работы. Попытки уменьшить тактовое время (мол, вот я счас сделаю мой проц более быстрым) неизбежно приведут к сбоям, т.е. к ошибкам в вычислениях.
Теперь понятно? Если всё ещё нет, задавайте вопросы, только не в виде программного кода - на этом уровне рассмотрения он не нужен.
И ещё: вы сделали два одинаковых вопроса - так тут не делается. Настоятельно советую удалить второй, который сейчас заблокирован.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@rPman
Приходит именно одновременно, даже если есть какие то различие из-за скорости света, времени там прилично, например между тактами.

Операция сложения делится на кучу мелких, типа поместить значение ячейки памяти в регистр, сложить, переместить результат, все они складываются в очередь и исполняются как получится, порядок определяет специальный модуль, если он решит что можно одновременно то так и сделает.
Ответ написан
Комментировать
begemot_sun
@begemot_sun
Программист в душе.
К любому мало-мальки сложному устройству внутри процессора подводится тактовая частота.
И все элементы внутри такого устройства работают исходя из этой частоты.
Пусть имеется сумматор с 2 входами. Третий вход такого сумматора всегда будет тактовым. Т.о.
сумматор будет выполнять свою работу только при изменении тактового сигнала скажем с 0 на 1.
т.о. неважно когда приходят (на самом деле не приходят, а выставляются) уровни на входах. Важно какие они в момент прихода тактового импульса.

т.е. в момент времени 1 - выставляется уровень на входе 1, в момент времени 2 - выставляется уровень на входе 2 .. в момент времени 3 - подается тактовый импульс (сумматор суммирует) и через некоторое время на выходе имеется какое-то значение результата который идет дальше, и при следующем тактовом импульсе этот результат может быть обработан другими схемами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы