Вопрос в следующем: если последовательность начинается с какого-то количества нулей, как цп понимает и разбирает это? Ему же нужно понять, сколько нулевых битов прошло
-
Желательно ссылку на какую-то литературу, очевидно, что метод не один – TrueBad0ur Jul 12 '18 at 15:20
-
Возможно вам стоит почитать о программировании на ассемблере, там конечно не 0 и 1, но может стать понятнее как работает процессор. По сути зачем ему это считать? Он выполняет простые операции: сложить 2 регистра, вычесть, перейти по такому то адресу, сравнить один регистр с другим. – Unick Jul 12 '18 at 15:24
-
2@TrueBad0ur процессор оперирует байтами (как минимум). А битами - может Вы путаете с шиной (например i2c) – KoVadim Jul 12 '18 at 15:25
-
Последовательность чего? – Эникейщик Jul 12 '18 at 15:34
1 Answers
Последовательность бит - это последовательность импульсов высокого или низкого уровня. Однако стоит понимать, что эти импульсы не поступают непрерывной последовательностью один за другим. Чаще всего (за исключением различных компонентов процессора, требующих обратное) импульсы подаются в виде так называемого "параллельного кода".
Если взять, например, 8-ми битный Intel 8080, то у него все шины, несложно догадаться, 8-ми битны. То есть в один момент времени на шине, скажем, данных, может находиться один байт информации. Этот байт информации в один момент времени может быть подан, например, на АЛУ. Целиком. Не последовательностью. И, если вдуматься, то это вполне логично, поскольку для передачи 4-х байт пришлось бы потратить 4 * 8 = 32 такта процессорного времени, в то время как при использовании параллельного кода на это уходит всего 4 такта.
Неверно думать, что подается последовательность импульсов
На самом деле входов несколько, и шина многоразрядна
Однако все устройства работают с разной скоростью. Где-то транзисторы с более узким затвором, где-то - с более широким. Одним нужно времени на управление больше, другим меньше. Поэтому если бы все пустили на волю судьбы, то в итоге получилась бы полная неразбериха и вообще ничего бы не работало. Поэтому нужно каким-то образом заставить все компоненты работать синхронно. И именно для этой цели существует такое устройство, как clock (по английски, по русски вариантов перевода много: и часы, и таймер и еще разные, однако я буду придерживаться "таймера").
Таймер вырабатывает импульсы (очень короткие, порядка единиц-долей наносекунд). Эти импульсы подаются на все компоненты процессора в качестве управляющих сигналов. Компонент производит какое-то действие только тогда, когда он получает этот импульс синхронизации. Причем действия начинают производить все устройства одновременно. Промежуток времени между началами двух соседних импульсов называется тактом. И вот за один такт может происходить много всего: данные с шины данных загрузятся в АЛУ, регистр счета будет инкрементирован, шина управления получит адрес следующей инструкции, и так далее, это неважно. Важно лишь то, что все должно происходить синхронно.
Даже если на шине данных будут все нули (то есть по сути не будет напряжения), то устройство, которое должно оперировать этими данными и посчитает их за нули в тот момент, когда на него поступит импульс синхронизации.
По сути это все можно сравнить с моментом нажатия на затвор в фотокамере. Люди в кадре могут двигаться, дергаться, танцевать, бегать туда-сюда, однако на снимке они будут находиться именно в том состоянии, в котором они были в момент нажатия кнопки.
Вообще тема слишком обширная, тут всего не распишешь (а если и распишешь, то либо текста на 2 тома войны и мира наберется, либо вы ничего не поймете), я попытался в кратце (как смог) объяснить. Но без обширного бэкграунда в области микроэлектроники туда лучше вообще не соваться.
- 5,224

