Пробежавшись в прошлой главе по истории развития компьютеров мы отследили как из системы зубчатых колес, компьютер пришел к современному виду. Однако, устройство самого компьютера осталось вне поля нашего зрения. Предлагаю это исправить.
Начнем мы с простого, попробуйте ответить на вопрос, для чего нужен компьютер?
Вопрос кажется довольно простым, но ответить на него не так просто.
Если вы подумали:
- "Для работы", возможно вам пора взять выходной или съездить в отпуск.
- "Для игр" - уважаю, но уверяю вас он умеет много чего ещё.
- "Для детерминации кинетической энергии путем последовательной мультипликации массы на квадрат вектора скорости с последующей бинарной операцией деления полученного произведения на константу два" - не знаю как вы сумели это сформулировать, но уверяю вас он и с этим справится.
Каждый из этих ответов будет верным, но недостаточным, поскольку основное назначение компьютера это облегчить нам жизнь. Это высокотехнологичный помощник. Так давайте представим, что мы приняли его на работу как младшего стажера. Программно-аппаратного стажера.
Этого стажера привез нам запыхавшийся курьер, мы аккуратно и с трепетом поставили его на стол. Фух! И вот он. Стоит черной коробкой, безмолвным обелиском, не подавая признаков жизни. Хоть бы пожужжал. Кажется, что учить его делать хоть что-то придется самим.
Что ж, начнем с того, что ему надо как-то объяснить, что вообще мы от него хотим. Значит первое что необходимо - интерфейс ввода. Интерфейс ввода — это совокупность средств и методов, с помощью которых пользователь «объясняет» компьютеру, что он хочет сделать. Объяснить это можно используя различные устройства ввода: терминалы, клавиатуры, мышки, сенсоры на смартфонах, микрофоны, камеры и сканеры.
Очевидно, что если мы хотим получить от стажера какой-то ответ, то необходимо предоставить ему и интерфейс вывода. Через интерфейсы вывода компьютер сообщает нам о результатах своих вычислений. Это могут быть: мониторы, проекторы, терминалы, колонки, наушники, принтеры.
Подключаем к компьютеру мышь, клавиатуру, монитор, микрофон и наушники.
ВЖУХ!
Наш стажер, наконец, подает признаки жизни! Мигнул светодиодом, зашумел вентилятором. Он готов к работе. Мы протягиваем руку к клавиатуре — и вот он, момент истины, наш первый приказ.
«Печатаем букву "А"» Ну давай, трудись студент.
Что происходит внутри черного обелиска в этот самый момент?
Клавиатура — это не просто набор кнопок. Это самостоятельное мини-устройство с собственной простейшей «логикой». Когда вы нажимаете клавишу, она замыкает определенную электрическую цепь. Специальный чип-контроллер внутри клавиатуры фиксирует это замыкание, определяет, какая именно клавиша нажата, и... нет он не отправляет в компьютер букву "А".
Потому что компьютер не понимает букв.
Наш стажер, при всей своей кажущейся гениальности, на самом деле — существо простое и даже примитивное. Его язык состоит всего из двух «слов»: НЕТ и ДА. ВЫКЛ и ВКЛ. 0 и 1. - и называют его двоичным кодом.
Двоичный код, фундамент всего цифрового мира.
Так что же отправляет клавиатура? Она отправляет так называемый скан-код — специальный числовой код, уникальный для каждой клавиши. Код для буквы "А" — это число 30 (в десятичной системе, которую понимаем мы с вами).
Но и это число 30 компьютер внутри себя не хранит. Он мгновенно переводит его в свой родной двоичный язык. Число 30 превращается в последовательность: 00011110.
Вот теперь наш стажер получил понятную для него команду. Но это еще не конец, а только начало.
Эту последовательность нулей и единиц — 00011110 — ловит центральный процессор (ЦП, или CPU). Его часто называют «мозгом» компьютера, и это одновременно верно и неверно.
Верно, потому что через него проходят все вычисления. Неверно, потому что CPU не «думает» и не «понимает», что такое буква "А". Он — невероятно быстрый и дисциплинированный исполнитель.
Его работа — тупо и без раздумий выполнять строгий набор инструкций, который называется машинным кодом. Каждая инструкция — это простейшее действие вроде «прочти число из ячейки памяти», «сложи два числа», «сравни два числа», «запиши результат обратно».
Инструкции эти отдает программа, работающая в операционной системе (об этом в следующей статье). Именно программа шепчет процессору на его машинном языке: «Эй, стажер! Ты только что получил код 00011110. Согласно таблице команд, это — буква "А". Отправь её туда-то и сделай то-то».
CPU послушно выполняет. Результат его работы (уже обработанную информацию о том, что нужно отобразить букву "А») он отправляет дальше.
Куда он ее отправляет? Чаще всего — в оперативную память (ОЗУ, или RAM). Представьте себе огромный стол, за которым работает наш клерк-процессор. Оперативная память — это быстрый и просторный рабочий стол. На него CPU кладет все, что нужно для текущей задачи: данные, части программ, промежуточные результаты.
Довольно часто, нам необходимо сохранить какие-то данные или файлы на продолжительный срок. В таком случае компьютер сохраняет данные на жесткий диск. Жесткий диск — это шкаф с архивами, где хранятся все программы и файлы. Доставать данные оттуда медленно.
Пока вы печатаете текст, этот текст живет именно в оперативной памяти. Это быстро и удобно. Но у этого стола есть ключевая особенность: стоит выключить свет (питание компьютера) — и всё, что было на столе, бесследно исчезает. Поэтому важно время от времени сохранять работу, отправляя данные обратно в «шкаф»-накопитель, т.е. на жесткий диск.
Итак, в оперативной памяти лежит информация: «пользователь ввел букву "А"». Но это мы и сами знаем, почему её нет на экране?
Здесь на сцену выходит видеокарта (GPU). Если CPU — это исполнитель и главный логик, то GPU — это архитектор и художник. Его задача — взять абстрактные данные из памяти и превратить их в картинку, которую мы видим.
Процессор говорит видеокарте: «Вот тебе данные, нужно отобразить букву "А" в точке с такими-то координатами, таким-то шрифтом и цветом».
Видеокарта, используя свои специализированные процессоры и собственную быструю видеопамять, молниеносно рассчитывает каждый пиксель на экране и отправляет готовую картинку на монитор.
И только в этот самый момент мы видим заветную букву "А" на своем экране.
Соберем всю цепочку воедино:
- Ввод: Вы нажимаете клавишу А.
- Преобразование: Клавиатура превращает нажатие в скан-код (30), а затем в двоичное число (00011110).
- Обработка: Центральный процессор получает это число и, следуя инструкциям программы, понимает, что это буква "А". Он помещает результат своей работы в оперативную память.
- Визуализация: Видеокарта забирает данные из оперативной памяти, рассчитывает изображение и отправляет его на монитор.
- Вывод: Вы видите букву "А" на экране.
Вот как, работает наш «программно-аппаратный стажер».
Все кажется логичным, однако, в процессе рассказа, мы упустили один важный вопрос. Каким образом друг с другом общаются элементы нашего компьютера?
Такое общение обеспечивает материнская плата — электронный компонент компьютера, который координирует работу всех остальных его составных частей.
Естественно, для того чтобы все это работало необходимо электричество. Поэтому кормить нашего стажера мы будем с помощью блока питания.
Ну и совет напоследок. Если очень сильно нагружать нашего стажера задачами, то голова у него закипит. Чтобы такого не произошло мы установим в него несколько кулеров, которые будут выдувать горячий воздух наружу, и затягивать холодный внутрь.
Наш рабочий день подошел к концу. Посоветуйте своему стажеру сохранить все необходимые данные на диски, перед тем как он отправится спать.
Хорошая работа, малыш!
В главе выше мы рассматривали, в основном физические компоненты компьютера. В следующей рассмотрим программные и разберемся что такое операционные системы.