- Главная
- Блог
- Информационная безопасность
- Проектируем свой компьютер: начало
Проектируем свой компьютер: начало
Оглавление
- Начало
- Элементарная ячейка памяти
- Регистр
- Декодер и оперативная память
- Арифметико-логическое устройство
1. Начало
Ключ к пониманию сложных систем
Самое первое, что нам предстоит освоить – это такое понятие как абстракция. Абстракции – это с чем мы сталкиваемся каждый день. Рассмотрим эту идею на примере автомобиля. Что бы им управлять, нам не обязательно вдаваться в детали его устройства. Мы просто воздействуем на руль, педали и коробку передач и машина реагирует соответствующим образом. Если смотреть чуть глубже можно понять, что автомобиль состоит из двигателя, трансмиссии, электронной начинки, системы охлаждения и шасси.
Каждый из этих элементов сам свою очередь состоит из каких-то частей. Например, электронная начинка может включать в себя аккумулятор, провода, фары и регулятор напряжения. Мы можем пойти еще дальше и задаться вопросом – а как устроен аккумулятор? Я не буду здесь касаться этого вопроса, если интересно, – можете загуглить :)
Главную идею вы уловили – наш разум не в состоянии переварить устройство сложных механизмов сразу во всех деталях. Тут то нам на помощь и приходит абстракция - из всей системы мы выхватываем только интересующий нас набор элементов и рассматриваем их взаимодействие друг с другом, игнорируя их внутреннее строение. Благодаря этому мы можем создавать сложные системы и понимать как они устроены.
Уровни абстракции компьютера
Теперь перейдем непосредственно к компьютеру и его уровням абстракции.
- Cофт (программное обеспечение)
- Архитектура
- Микроархитектура
- Логические элементы
- Девайсы (транзисторы и т.д.)
- Физика
Итак, на физическом уровне мы имеем заряженные частицы (электроны и протоны), которые взаимодействуют между собой силами притягивания и отталкивания. На уровне девайсов мы видим устройства, которые организовывают движение электронов таким образом, что бы они выполняли полезную работу (вычисления). Первые два уровня являются скорее прерогативой инженеров-электронщиков, поэтому мы сразу перейдем к уровню логических элементов, абстрагируясь от их физического строения, а отталкиваясь от этого уровня можно будет двигаться выше по этой лестнице абстракций.
Логический элемент (мы будем называть его также логическим гейтом или просто гейтом – от английского logic gate) функционально представляет из себя довольно простое устройство. Он имеет вход и выход. На вход мы подаем некий сигнал или несколько сигналов и в ответ на это он выдает определенный сигнал на выход. Важно знать, что всего у нас есть два типа сигналов: их условно называют единица и ноль либо истина и ложь. Далее мы поймем почему. Логических элементов существует несколько типов. Рассмотрим их подробнее.
AND
Рассмотрим гейт, который называют AND (И).
Как он работает? У него два входа (A и B) и один выход (X). Если на оба входа подаются единицы, то и на выходе гейт будет выдавать единицу. В любых других случаях на выходе мы будем иметь ноль. Более наглядно работу данного гейта можно изобразить используя таблицу (такие таблицы еще называют таблицами истинности).
A |
B |
X |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
Его неспроста назвали И – если приглядеться, можно увидеть, что он представляет собой физическое воплощение логической операции конъюнкции. Конъюнкция, как гласит Википедия, – логическая операция, по смыслу максимально приближенная к союзу «и».
Ничего сложного на самом деле тут нет – если мы слышим некое утверждение, например “2+2=4 И небо-голубое” то мы интуитивно чувствуем, что в целом это утверждение является истинным, поскольку обе его части истины. В остальных же случаях, когда одна или обе части утверждения ложны, – понятно что и в целом утверждение будет ложным.
OR
Теперь рассмотрим такой гейт как OR (или).
И тут же ознакомимся с его таблицей истинности
A |
B |
X |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
Если снова обратится к нашей интуиции, то мы поймем что логическая операция ИЛИ ведет себя именно таким образом. Если в утверждении с союзом “или” хотя бы одна часть будет истина то и само утверждение в целом будет истинно (“2*2=4 ИЛИ овчарки умеют летать”), если же обе части утверждения ложны то и само утверждение будет ложным.
NOT
Еще один гейт – NOT (НЕ).
Как мы видим у него только один вход и выход. Сам этот элемент как бы отрицает сигнал на входе. Единица превращается в ноль, а ноль наоборот в единицу.
A |
X |
0 |
1 |
1 |
0 |
XOR
Гейт XOR (исключающее ИЛИ)
Таблица истинности
A |
B |
X |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
NAND
Гейт NAND (НЕ-ИЛИ).
Этот логический гейт выдает ноль только когда на обоих его входах единица. В остальных же случаях на выходе гейта мы имеем единицу.
A |
B |
X |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
Все эти логические элементы по-сути являются некими кирпичами. Комбинируя гейты друг с другом можно построить вычислительную систему любой сложности.