Как устроен компьютер? Часть 7 (Clock и Control Section)

Прежде всего, хочу поздравить всех юных начинающих радиолюбителей с Днем Знаний! Да, знаю, что не все из вас очень рады тому, что каникулы закончились и начинается очередной учебный год с училками и домашкой, но посмотрите на это с другой стороны. Вы вновь увидите всех своих товарищей, которые разъезжались на лето по бабушкам, морям, дачам и куда угодно еще. В вашей жизни снова появятся шуточки над одноклассниками, интриги, сплетни, коллективные прогулы уроков, какие-то общие интересы и занятия... В общем школа - это далеко не только скучные или даже ненавистные уроки и учителя. Это целый отрезок жизни, длинною в одиннадцать лет, во время которого вы формируетесь как личность, познаете новое, учитесь общаться, влюбляться и выкручиваться из различных ситуаций. Не забывайте о том, что вы сейчас молоды и полны сил! Так что пользуйтесь моментом и живите на полную катушку! Но делать уроки тоже успевайте, а то выйдите из школы с пустой головой и не сможете поступить в нормальный ВУЗ, чтобы потом хвастаться перед коллегами в Макдональдсе своим красным дипломом))) В общем, с праздником вас, школьники и студенты!

А теперь продолжим изучение шайтан-машины, которая таится внутри каждого современного гаджета.

Тактовый Генератор (Clock)

Нам необходимо включать и выключать нужные биты в нужное время. Начнем с «нужного времени». На графике ниже изображено изменение состояния бита во времени слева направо.

Как вы заметили, на графике нет конкретной шкалы времени (т.е. секунд или минут). Дело в том, что внутри компьютера частота смены состояний бита настолько велика, что этот же, например, график из восьми переключений, в зависимости от конкретного процессора, длился бы микро- или даже нано секунду! Поэтому на графиках мы будем рассматривать течение времени как момент включения одних битов относительно включения других.

Со временем мы договорились. Теперь начнем разбираться с понятиями. Первое – «Цикл». Это повторение одного и того же действия. У цикла есть начало и конец. Посмотрев на график, вы увидите, что бит включается, затем выключается, а затем все повторяется вновь. Т.е. одно включение и последующее за ним одно выключение это и есть цикл.

«Частота» - это количество циклов в секунду. Измеряется в Герцах, обозначается «Гц». Например, бит за одну секунду успевает включиться и выключиться три раза, а мы помним, что в случае с битом, цикл это одно включение и одно выключение. Соответственно частота будет равна 3 цикла в секунду или 3 Герца, или 3Гц. При больших значениях здесь действуют такие же приставки, как и в остальных измерениях: 1000 Гц – это 1 кГц, 1 000 000 Гц – это 1 МГц, и т.д.

В компьютере постоянно какие-то биты включаются и какие-то выключаются, в силу логики программного кода, как мы уже поняли выше. Но начинается все с одного специального единственного бита, который включается и выключается автоматически с определенной частотой, не смотря ни на что. Этот бит построен очень просто:

На первый взгляд, это кажется глупо. Да и на второй тоже. Но это лишь принципиальная схема. Представим, что данная схема начинает работать с включенным выходом. Что произойдет дальше? 1 поступит на вход и на выходе окажется 0, который поступит на вход и на выходе снова появится 1. Конечно, если вы попробуете собрать такую схему в реальном мире, то скорость срабатывания будет настолько высока, что ни измерить, ни использовать данный бит мы не сможем. Поэтому мы просто удлиним провод, по которому будет идти сигнал (ну да, удлиним на несколько десятков километров).

Если вам интересно, как это устройство сделать в реальном мире, то посмотрите на схему ниже:

Это единственный элемент, у которого нет входа, и его упрощенная схема выглядит так:

Дословно Clock – это «часы». Но нам с вами повезло больше. У нас это называется «Тактовый генератор» и тут все понятно: это штука, которая генерирует такты, т.е. 1 и 0 попеременно, в нашем случае.

Для начала, подключим к выходу генератора кусок провода подлиннее и тем самым задержим сигнал на четверть цикла.

Сигнал на выходе «clk d» будет отставать от сигнала «clk» на четверть цикла. На графике это будет выглядеть так:

Теперь соберем нехитрое устройство из элементов «И» и «ИЛИ» и подключим их к двум сигналам тактового генератора.

Один из новых битов (clk e) включается когда включен ‘clk’ или ‘clk d’, второй новый бит (clk s) включится только когда оба бита ‘clk’ и ‘clk d’ включены. Новые биты тоже работают циклично, но теперь бит ‘clk e’ включен дольше, чем бит ‘clk s’.

«Clk e» означает «включение бита enable», а «clk s» означает «включение бита set» . То есть наше условие соблюдено: включается ‘e’, затем включается ‘s’, затем выключается ‘s’, затем выключается ‘e’.

Тактовый генератор у нас теперь есть. Но не можем же мы напрямую подключить его выходы к каждому регистру. Нам ведь нужно контролировать какой именно регистр нужно активировать и какой установить. Тактовый генератор мы будем использовать и далее, поэтому упростим его отображение на схеме:

Сделать что-то полезное

Допустим, мы хотим сделать что-нибудь полезное, например, сложить два числа. У нас есть два регистра R0 и R1, в которых записаны эти числа. Наш процессор вполне может выполнить эту операцию, но для этого ему явно понадобится более одного такта. В первом такте мы активируем R1, отправляя данные из него на шину, а так же включим «установить» TMP (set). Во втором такте мы активируем R0 на шину и установим в ALU «Сложение», чтобы произошли расчеты суммы, а так же установим ACC для записи в него результата. В третьем такте мы активируем ACC и установим R0.

Возможно, это покажется не очень полезным, но все сложные расчеты состоят как раз из таких маленьких и простых вычислений. Теперь мы видим, что компьютеру для выполнения даже самой простой задачи нужно несколько шагов. И шаги эти нужно выполнять в определенной последовательности. Поэтому нам нужно еще одно устройство – «Контрольная секция».

Шаг за шагом

В этой главе мы познакомимся с еще одним устройством, которое называется «Степпер» («Stepper»). В даташитах процессоров, это устройство часто называется «счетчиком», но в этой книге, почему-то, автор называет его «степпер». Сначала мы рассмотрим готовое устройство, а затем разберемся, как оно работает.

У данного устройства два входа и семь выходов.

Обратите внимание: США делают ставку на квантовые компьютеры.

К входу «clk» мы подключаем бит ‘clk’, а на выходах Step 1-7 состояние будет сменяться при каждой смене состояния бита ‘clk’ с 0 на 1, но поочереди – сначала на ‘Step 1’, затем на ‘Step 2’, … , затем на ‘Step 7’ и тут нужно кратковременно подать сигнал на вход «Reset», чтобы «сбросить» Степпер и следующим шагом после ‘Step 7’ будет ‘Step 1’.

На самом деле, Степпер состоит из уже знакомых нам однобитных ячеек памяти, соединенных попарно последовательно следующим образом:

На этой схеме не все семь «шагов», а только пять. И это лишь часть всего механизма. Но это не мешает нам понять принцип действия. Итак, у нас пять пар соединенных последовательно битов памяти. На один из входов крайнего левого бита всегда поступает электричество. Контакты ‘s’ каждого четного бита памяти подключены к «clk», у нечетных же – к инвертированному clk (или «not clk»). Сигналы на clk и not clk выглядят так:

Что же тут происходит? Допустим, что изначально все «М» выключены и clk начинает «тикать». Сначала ничего не произойдет, так как ‘s’ первого «М» подключен к «not clk». Когда clk выключится, включится not clk и первый «М» запишется и на выходе выдаст 1, но со вторым «М» ничего происходить не будет, пока clk вновь не включится. Как только это произойдет, уже второй бит «М» запишет 1 и выдаст это значение на выход. Таким образом, с каждым тактом 1 записывается в очередной четный бит «М». Теперь давайте рассмотрим полную схему Степпера.

Из вышеописанного мы поняли, что в ячейки памяти по очереди записывается 1. Но ведь нам необходимо, чтобы единица была одновременно только на одном выходе. Поэтому выходы Step подключены к выходам логических элементов.

Изначально на reset приходит 0 из «step 7», так как в М 7.2, пока, записан 0. При старте clk, через элемент ИЛИ, проходит 1 на ‘s’ вход бита М 1.2, в который записывается 0. Поэтому на выходе М 1.2 появляется записанное значение 0, которое сменяется инвертором с 0 на 1 и на выходе ИЛИ так же появляется 1. Итак, на выходе «step 1» у нас появилось значение 1.

Затем сигнал clk с 1 сменяется на 0. Теперь уже not clk принимает значение 1. Этот сигнал проходит через вентиль ИЛИ на ‘s’ М 1.1, в который теперь записывается 1. В М 1.2 все еще записан 0 и бит ‘s’ отключен. Таким образом, выход step 1 включен.

Далее начинается очередной такт счетчика и clk снова сменяет состояние с 0 на 1. Теперь вам уже не трудно понять, что в М 1.2 записывается 1, оба входа вентиля ИЛИ перед «step 1» теперь выключены и «step 1» сменяет состояние с 1 на 0. Так как в М 1.2 теперь записана единица, то первый вход вентиля И, расположенного перед «step 2», включается (на втором входе вентиля И единица была с самого начала, т.к. во всех «М» был записан 0) , и на выходе «step 2» появляется 1.

Теперь clk принимает значение 0, а not clk – значение 1. В М 2.1 записывается 1. Выход «step 1» остается включен.

Новый такт и clk вновь меняет состояние на 1, а not clk – на 0. В ячейку М 2.2 записывается 1, Состояние выхода М 2.2 инвертируется вентилем НЕ и теперь на правый вход вентиля И приходит 0, поэтому «step 2» выключается. А на левый вход следующего вентиля И приходит 1 с выхода М 2.2 и выход «step 3» включается.

Так продолжается до включения выхода «step 7».

Теперь рассмотрим момент, когда выход «step 7» включен, clk включен, а в М 6.2 записана единица. По времени все дальнейшие действия занимают так же пол такта, но происходит здесь намного больше событий, чем во всех предыдущих тактах. На самом деле, выход «step 7» подключают к входу Степпера reset. Из-за этого, в момент включения «step 7» включается ‘reset’ и через вентиль ИЛИ включается выход «step 1», а на вход М 1.1 приходит 0. И хотя not clk сейчас имеет значение 0, бит ‘s’ ячейки М 1.1 все же включен сигналом ‘reset’ через вентиль ИЛИ. Это значит, что на выходе М 1.1 теперь 0. Выходит, что сейчас биты четных ячеек сейчас включены сигналом clk, а биты ‘s’ нечетных ячеек включены сигналом reset. Это значит, что все ячейки находятся в состоянии «записи». В М 1.1 сейчас записан 0, поэтому абсолютно во все ячейки записывается 0. Так как В М 6.2 тоже записывается 0, сигнал reset отключается, но «step 1» остается включен, ведь выход М 1.2 инвертируется перед тем как попасть в вентиль ИЛИ. И теперь мы можем сказать, что наш Степпер сброшен в исходное состояние.

На самом деле Степпер может иметь два входа (reset и clk) и сколько угодно выходов. Но нам будет достаточно и семи. Упрощенная схема Степпера ниже:

Всё под контролем

У нас есть тактовый генератор, который выдает такие сигналы как общий тактовый и два дополнительных сигнала для корректной работы записи и чтения памяти. Теперь же у нас есть еще и Степпер, который выдает серию бит поочередно с каждым базовым тактом. Вспомните схему ЦП, которую мы видели ранее. На ней были Шина, АЛУ, шесть регистров и даже ОЗУ. Все было соединено шинами, но все регистры, ОЗУ, Шина 1 и АЛУ управлялись таинственным прямоугольником с надписью «Контрольная секция» (Control Section), о которой мы, пока, ничего не знаем. Так вот пришло время заглянуть внутрь этого прямоугольника.

Это базовое изображение раздела управления компьютером. Сверху находятся Тактовый генератор и Степпер, ниже расположены биты регистров, слева – разрешающие, справа – устанавливающие. Но у нас все еще подключены не все входы элементов «И» и что-то нужно подключить к АЛУ. Логично предположить, что если соединить выходы Степпера с вентилями «И», то уже можно будет сделать что-то полезное.

Часть 6 - Назад Далее - Часть 8

#компьютеры #наука и техника #образование #радиолюбитель #процессоры #электроника начинающим

Еще по теме здесь: Новости науки и техники.

Источник: Как устроен компьютер? Часть 7 (Clock и Control Section).