Данный материал взят с сайта old.shatalov.su и является его зеркалом

Создаём компьютерную игру. Создание игр на C++/DirectX

Есть вопросы?
Ошибка на сайте?
рус eng esp
Внимание! Данный сайт не обновляется. Новая версия: shatalov.su

Устройство компьютера

Дата создания: 2012-04-29 18:20:38
Последний раз редактировалось: 2012-04-29 18:24:11

В этом вводном уроке мы познакомимся с устройством компьютера. Зачем, спросите вы? А я отвечу, что, конечно, знание устройства компьютера необязательно для создания игр, но это знание сослужит хорошую службу, если вы соберётесь глубоко осваивать программирование.

Так что, если вы связываете своё будущее с программированием (без разницы: игр, системных программ, приложений для мобильных), то данный урок совершенно необходим. Ну или может быть вам просто интересно как устроен компьютер?

Computer или ЭВМ

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

Как мы все знаем, слово компьютер происходит из английского языка (или даже латыни, если смотреть шире). На английском слово компьютер выглядит вот так - computer. Computer образовано от глагола to compute - вычислять. А computer тогда будет переводиться как вычислитель.

В русском языке есть "правильное" название компьютера - ЭВМ - электронная вычислительная машина. Но, к сожалению, в повседневной речи укоренился термин компьютер.

В дальнейшем я буду использовать взаимозаменяемо все термины: компьютер, ЭВМ, вычислительное устройство, вычислительная техника - это одно и то же (по крайней мере, мы будем так считать).

Как нетрудно заметить из названия, задача компьютера - вычислять. Что вычислять? Первоначально это были математические формулы.

Здесь нам стоит немного расширить понятие "вычисление". Слово "вычисление" подразумевает решение какой-то математической задачи. И первые компьютеры занимались только этим. Но современные компьютеры умеют не только вычислять математические формулы, они способны на гораздо большее. Поэтому я считаю уместным вместо слова "вычисление" использовать "решение задачи". Т.е. когда мы говорим вычислительное устройство, мы подразумеваем устройство, умеющее решать какие-то задачи, например: находить площадять круга, проверять отпечатки пальцев (да, для этого тоже нужно вычислительное устройство), принимать кредитную карту и работать с ней (банкомат).

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

Теперь, когда мы определились с терминами, самое время рассмотреть историю вычислительной техники. Хотя бы кратко.

История вычислительной техники

Как-то неожиданно из всех магазинов ушли абаки. Казалось бы, ещё недавно они были везде. И вдруг настало время, когда увидеть вживую абак большая редкость. Так вот, абак одно из самых древних вычислительных устройств.

Массовое появление вычислительных устройств начинается в новой истории. Например, в 17 веке Блез Паскаль создал простой механический калькулятор.

Особого упоминания заслуживает Жозеф Мари Жаккар - изобретатель перфокарт. Первоначально перфокарты использовались в ткацких станках - для задания узора. Но впоследствии перфокарты оказались чрезвычайно полезными как устройства ввода/вывода в ЭВМ.

Период с конца ренессанса и вплоть до начала двадцатого века можно назвать эрой механических (а затем и электромеханических) вычислительных устройств. В этот период особенно следует выделить машины Чарльза Беббиджа. В 30-х годах 19-го века он создал разностную машину - фактически, венец механических устройств (который так и не заработал). Сразу после этого он начал создавать аналитическую машину - она уже была электромеханической. Разработка завершиалсь неудачей в результате смерти автора. Аналитическая машина Чарльза Беббиджа является прообразом компьютеров. В отличие от всей вычислительной техники созданной ранее, аналитическая машина могла выполнять разные задачи в зависимости от заданной программы, т.е. она была программируемой.

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

В пятидесятых годах Джон Фон Нейман выделил основные составные части компьютеров: АЛУ (процессор), память, устройство управления, устройства ввода/вывода.

Второе поколение начинается во второй половине пятидесятых годов с изобретением транзистора исследователями Bell Labs Бардином, Браттейном и Шокли. За транзистор они и получили нобелевскую премию в 1956г.

Один из интересных фактов этого периода: фирма DEC выпустила компьютер PDP-1 в 1961г. Это стало началом компьютерной индустрии - было продано несколько десятков устройств. Также в PDP-1 впервые появился дисплей (512x512 пикселей) и для этого компьютера была разработана первая игра. В одном из следующих потомках (PDP-8) была реализована первая шина - omnibus.

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

В 70-х годах начинается четвёртое поколение - больших интегральных схем. Собственно, в современных схемах количество транзисторов достигает миллионов единиц.

Важнейшим годом в истории вычислительной техники является 1981. Именно в 1981-ом компания IMB выпустила IBM PC (Personal Computer). На IMB PC использовалась операционная система MS-DOS, разработанная компанией MicroSoft.

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

Процессоры и INTEL

Процессор - микросхема в компьютере, которая выполняет все вычисления. Первый процессор на одной микросхеме был разработан в компании Intel (в Intel работал Роберт Нойс) в 1970-м году. Назывался этот процессор 4004 (он был 4-битным) и в нём было 2300 транзисторов.

В IBM PC использовался уже восьмибитный интеловский процессор 8088. Развитие этого процессора привело к появлению 32-битного 80386, который во многом и определяет архитектуру современных компьютеров. Далее был процесор 80486 и различные Пентиумы. Во второй половине десятых на рынок массово стали выпускаться двухъядерные (многоядерные) процессоры.

На данный момент компания Intel предлагаяет процессоры различной мощности: core i3, core i5, core i7. Эти процессоры являются уже 64-битными, но поддерживают и 32-битные вычисления. Большинство из них двухъядерные.

Устройство (архитектура) компьютера

Теперь настало время разобраться с устройством современного персонального компьютера.

Самая большая плата персонального компьютера - материнская плата (motherboard). На материнской платер расположено множство микросхем. На картинке ниже мы видим плату с двумя мостами:

Материнская плата с двумя мостами (north bridge, south bridge)

Всеми микросхемами управляет чипсет (chipset; chip - микросхема; set - набор, множество). Чипсет - это набор микросхем. На рисунке ниже представлено схематическое отображение материнской платы с двумя мостами:

Северный и южный мосты материнской платы

Северный и южный мост (north - север, south - юг, bridge - мост) - образуют чипсет. Чипсет определяет, какие устройства можно подключить к данной материнской плате. Если вы посмотрите на любую плату с обратной стороны, то увидите, что все устройства подключены так, как показано на схеме (разводка проводов).

К северному мосту подсоединены: процессор (CPU - Сentral Processing Unit - центральный вычислительный модуль), видеокарта (стандарта AGP или PCI-E), оперативная память (RAM - Random Access Memory - память с произвольным доступом или по-русски ОЗУ - оперативное запоминающее устройство) и южный мост.

Южный мост управляет дополнительным устройствами: сетевой картой, USB-портами, жёсткими дисками, устройствами PCI, ISA (и другими устаревшими).

Все устройства соединены проводами, которые называются шинами (Bus - шина). Например, USB расшифровывается как Universal Serial Bus - универсальная последовательная шина. Т.е. шина, по сути, это несколько проводов, по которым передаются данные между двумя микросхемами.

В последние годы стали выпускаться компьютеры с одним мостом. Например, материнские платы, поддерживающие процессоры core i3, core i5, core i7. На картинке ниже схематично паказана материнская плата с одним мостом - Sandy Bridge:

Материнская плата с мостом Sandy Bridge

В любом случае главной микросхемой является является процессор (CPU). Именно процессор выполняет все вычисления. А все остальные устройства лишь помогают ему: видеокарта выводит изображение на монитор, RAM - служит хранилищем данных для выполняемых программ, различные шины позволяют подключить периферийные устройства.

Команды процессора (CPU Instruction Set)

У каждого процессора есть свой набор команд (или инструкций), который называется Instruction Set (set - набор, множество).

Например, у 32-битных процессоров Intel основной набор команд называется IA-32 (Intel Architecture). Есть и дополнительные наборы команд. У последних моделей процессоров Intel это SSE4.2, который предоставляет дополнительные возможности по обработке данных. Но нас интересует основной IA-32.

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

Как видим, процессор может выполнять только очень простые команды. Именно из таких простых команд и состоит всё то великолепие виртуального мира, которое так любит современный человек. Как из простых команд получить текст, музыку, видео, игры, мы ещё узнаем - у нас будет достаточно времени на это.

Для того чтобы человеку было удобно использовать команды процессора, используется язык программирования ассемблер. В ассемблере одной команде процессора соответсвует одна команда ассемблера. Примеры: div - деление (от division), add - сложение, sub - вычитание (от subtraction).

Инструкции выполняются над данными, которые поступают в процессор из памяти и хранятся внутри в регистрах. Регистров в процессоре немного и у каждого есть имя. Например, имена регистров в процессорах Intel: EAX, EBX, ECX...

Теперь посмотрим на код, написанный на ассемблере:

mov EAX, 2 ;помещаем в регистр EAX значение 2
mov EBX, 3 ;помещаем в регистр EBX значение 3
add EAX, EBX ;прибавляем к EAX значение EBX, теперь регистр EAX хранит значение 5

Самое важное, что здесь нужно усвоить - процессор может выполнять только очень простые действия над регистрами. Задача программиста - из этих простых действий составить осмысленную и сложную программу. Об этом мы поговорим в дальнейших уроках.

Заключение

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