Найти тему

Как устроен компьютер? Часть 5 (Вторая часть компьютера)

Оглавление

Вторая часть компьютера

Вторая часть компьютера так же сделана только из И-НЕ элементов и, возможно, этих элементов здесь даже меньше, чем в RAM памяти. Назовём эту часть «Центральный процессор» или ЦП. Этот самый ЦП «обрабатывает» данные и перемещает в обе стороны по шине.

-2

Это принципиальная схема процессора. Справа находится ОЗУ, а шина делает петлю между двумя его соединениями. ЦП начинается с шести регистров, подключенных к шине. Эти регистры нужны ЦП для обработки байтов. Не так уж сложно, не правда ли? Более подробная схема большого прямоугольника под названием «Секция управления» будет рассмотрена позже. Это устройство контролирует все биты «set» и «enable» в ЦП и оперативной памяти. Устройства со знаком «?» будут рассмотрены сразу после этой главы. А пока, познакомимся с байтами ЦП. R0, R1, R2 и R3 – это регистры, которые ЦП использует как временное хранилище. Их входы и выходы подключены к общей шине. Эти регистры могут использоваться для различных целей, поэтому они называются «Регистры общего назначения». Название регистра «TMP» (Temp) означает «временный». Данные входят в него из шины, выходят в неизвестные нам пока блоки. У TMP есть бит «set», но нет бита «enable» так как нет причин выключать его выход. Последнее устройство называется «Аккумулятор» (ACC). Аккумулятор временно хранит байт, полученный из неизвестного блока, а выход подключен к шине. Так что с данными из аккумулятора мы можем делать что угодно в пределах шины. Вся суть работы компьютера заключается в том, чтобы перемещать данные из одного регистра в другой между ЦП, памятью и другими устройствами, подключенными к шине. А теперь рассмотрим эти загадочные устройства «?».

Больше вентилей!

До сих пор мы использовали вентили И, И-НЕ и НЕ. Но есть ещё два комбинированных элемента, о которых нам необходимо узнать. Первый из них устроен так:

-3

В таблице ниже приведены возможные состояния в узлах этой схемы:

-4

В данном устройстве на выходе будет 0 только если на обоих входах 0, но если на ‘a’ или ‘b’, или на обоих 1, то и на выходе появится 1. Такое устройство называется «ИЛИ». На схемах обозначается так:

-5

Таблица истинности для этого элемента имеет вид:

-6

Ещё одно устройство, которое мы сейчас рассмотрим, это устройство похожее на ИЛИ, но 1 на выходе выдаёт только в том случае, если сигналы на входах отличаются друг от друга:

-7
-8

Называется такой элемент «Исключающее ИЛИ» (XOR) и на схемах изображается так:

-9
-10

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

-11

Запомнить свойства каждого элемента не трудно. Тем более, само название поможет нам вспомнить какой из них как работает.

Перетасовка битов

Каждый вентиль работает с одним битом. Два бита на вход, один на выход. Но RAM сохраняет и извлекает единовременно только один байт, так же как и шина. ЦП нужен для работы с целыми байтами. И тут нам понадобятся биты, влияющие на байты. В главе про шину, мы узнали, как можно просто переместить байт из одного регистра в другой. Далее мы узнаем кое-что новое.

Во-первых, мы рассмотрим ещё три способа влияния на содержимое байта во время его перемещения, а во-вторых – четыре варианта взаимодействия двух байтов для получения данных для третьего.

На самом деле, эти семь операций - это и всё, что компьютер делает с байтами.

Левый и правый сдвиговый регистр

Shifter (англ.«сдвигатель») – очень простое устройство. В нём нет никаких вентилей. Он представляет из себя шину, подключенную особым образом.

-12

На картинке два регистра, соединённые правым сдвигателем. Сдвигатель – это просто провода между двумя регистрами. Когда бит ‘e’ регистра R1 включен, а бит ‘s’ регистра R2 был включен и затем выключен, все биты из R1 копируются в R2, но сдвигаются на одну позицию. Сдвинутый бит (shift out) может быть подключен к какому-то другому биту в компьютере, но чаще его подключают к входящему сдвигателю (shift in). В таком случае, сдвинутый вправо бит перемещается в левую часть байта.

Правый сдвигатель изменит байт из 0100 0010 в 0010 0001, если ‘shift out’ подключен к ‘shift in’.

Левый сдвигатель изменит байт из 0100 0010 в 1000 0100. Левый сдвигатель выглядит так:

-13

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

-14
-15

Зачем нужны такие устройства? Программисты придумывают разные интересные вещи и это одна из них. Допустим, мы используем двоичный цифровой код. У нас есть код 0000 0110 в R1, что соответствует числу 6. Но что произойдёт, если мы сдвинем этот код влево из R1 в R2? Из 0000 0110 мы получим 0000 1100, что соответствует 12. Как вы догадались, мы только что умножили число на 2. Это основа умножения в нашем компьютере. С умножением на большие числа мы познакомимся позже, но это будет так же просто, как сдвиг влево. Это похоже на умножение десятичных чисел, где умножая на 10, мы просто приписываем нолик справа от исходного числа, сдвигая исходное число на одну позицию влево. В двоичной системе это работает с умножением на 2 потому, что это двоичная система. В этом вся суть сдвигового регистра.

Инвертор

Это устройство соединяет два регистра через восемь элементов «НЕ». Если на вход такого устройства мы подадим 0110 1000, то на выходе получим 1001 0111. Эта операция используется в некоторых арифметических функциях.

-16

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

-17

Побитовый оператор "И" (ANDer)

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

-18

Данное устройство применяется довольно часто. Например, чтобы при вводе, буква, пусть это будет ‘e’, в коде ASCII в любом случае записалась как заглавная, нам нужно: поместить ‘e’ (0110 0101) или ‘E’ (0100 0101) в R0, поместить код 1101 1111 в R1 и когда на выходе «c» получим ответ, помещаем его в R0. Таким образом, неизменными останутся все биты R0, кроме третьего. Вне зависимости от первоначального значения, в конце операции третий бит будет равен 0. Наглядно это показано в таблице ниже:

-19

Этот способ преобразования работает со всеми буквами кода ASCII. Теперь мы упростим изображение данного устройства на схеме:

-20

Побитовый оператор "ИЛИ" (ORer)

Это устройство работает так же как и предыдущее, с той лишь разницей, что вместо элементов «И» здесь элементы «ИЛИ»:

-21

Это устройство так же широко применяется и вот аналогичный пример с кодом ASCII:

Допустим, у нас так же есть некое поля для ввода символов и нам надо, чтобы вводимые буквы, в этот раз, всегда были строчными (маленькими). На вход ‘a’ из R0 мы подаем, например, ‘E’ (0100 0101). На вход ‘b’ из R1 подадим код 0010 0000. Полученный на выходе ‘c’ результат мы запишем в R0. Как и в предыдущем случае, все биты, кроме третьего, останутся в исходном состоянии. Третий же бит, вне зависимости от первоначального состояния, примет значение 1.

-22

Ну и, конечно же, упрощенное обозначение данного устройства:

-23

Побитовый оператор "Исключающее ИЛИ" (Exclusive ORer)

Еще одно подобное устройство, в котором теперь уже восемь побитовых элементов «Исключающее ИЛИ».

-24

Где же применить данное устройство? Одним из примеров может послужить необходимость проверки равенства двух регистров. Например, у нас есть R1 и R2. В них записаны какие-то значения. Если значения в этих регистрах одинаковые, то в силу того, что все биты проходят через элементы «XOR», на выходе ‘c’ все биты будут равны 0.

-25

Упрощенный вид на схемах изображается так:

-26

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

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