Упрощенная архитектура компьютера
В основу архитектуры современных персональных компьютеров положен магистрально-модульный принцип. Модульный принцип подразумевает организацию компьютера на основе функциональных модулей (компонент). Модульная организация компьютера опирается на магистральный (шинный) принцип обмена информацией между устройствами. Компоненты соединены шиной, представляющей собой набор параллельно связанных проводов (линий), по которым передаются адреса, данные и сигналы управления. Линии разного назначения образуют:
- шину данных,
Рисунок Упрощенная архитектура компьютера |
- шину адреса,
- шину управления.
В самом упрощенном виде компьютер включает два компонента процессор и память. (Рис …). Для обозначения процессора также часто используют сокращение CPU (англ., céntral prócessing únit, дословно — центральное вычислительное устройство).
Так как существует несколько разновидностей памяти обычно уточняют, что процессор имеет доступ к оперативной памяти, или иначе кпамяти с произвольным доступом (англ., Random Access Memory, RAM).
Большинство современных процессоров для персональных компьютеров в общем основаны на той или иной версии циклического процесса последовательной обработки информации, изобретённого Джоном фон Нейманом.
Важнейшие этапы этого процесса приведены ниже. В различных архитектурах и для различных команд могут потребоваться дополнительные этапы.
Этапы цикла выполнения:
1. Процессор выставляет число, хранящееся в регистре счётчика команд, на шину адреса, и отдаёт памяти команду чтения (по шине управления);
2. Выставленное число является для памяти адресом; память, получив адрес и команду чтения, выставляет содержимое, хранящееся по этому адресу, на шину данных, и сообщает о готовности;
3. Процессор получает число с шины данных, интерпретирует его как команду (машинную инструкцию) из своей системы команд и исполняет её. Если в качестве операнда в инструкции используется значение адреса, перед выполнением инструкции процессор обращается к памяти и извлекает данные, хранящиеся по этому адресу;
4. Если последняя команда не является командой перехода, процессор увеличивает на единицу (в предположении, что длина каждой команды равна единице) число, хранящееся в счётчике команд; в результате там образуется адрес следующей команды;
5. Снова выполняется п. 1.
Данный цикл выполняется неизменно, и именно он называется процессом (откуда и произошло название устройства).
Во время процесса процессор считывает последовательность команд, содержащихся в памяти, и исполняет их. Такая последовательность команд называется программой и представляет алгоритм полезной работы процессора. Очерёдность считывания команд изменяется в случае, если процессор считывает команду перехода — тогда адрес следующей команды может оказаться другим. Другим примером изменения процесса может служить случай переключения в режим обработки аппаратного прерывания.
Команды центрального процессора являются самым нижним уровнем управления компьютером, поэтому выполнение каждой команды неизбежно и безусловно. Не производится никакой проверки на допустимость выполняемых действий, в частности, не проверяется возможная потеря ценных данных. Чтобы компьютер выполнял только допустимые действия, команды должны быть соответствующим образом организованы в виде необходимой программы.
Скорость перехода от одного этапа цикла к другому определяется тактовым генератором. Тактовый генератор вырабатывает импульсы, служащие ритмом для центрального процессора. Частота тактовых импульсов называется тактовой частотой.
Система команд
Система команд (язык) это конкретной вычислительной машины (машинный язык), который интерпретируется непосредственно микропроцессором.
«Слова» машинного языка называются машинными командамиилиинструкциями. Каждая из них описывает элементарное действие, выполняемое процессором, такое как «переслать байт из памяти в регистр».
У разных процессоров системы команд существенно различаются, но в основе своей они очень похожи. Количество команд у процессоров также различно. У современных мощных процессоров количество команд достигает нескольких сотен.
Каждая команда процессора имеет два представления:
- В виде машинной команды (цифровое представление).
- В виде команды Ассемблера. Поскольку человек не привык читать сплошные цифры, каждая команда имеет своё имя (имена) и формат.
Ассемблер это символический язык программирования, представляющий команды процессора. В приведенных ниже примерах мы будем рассматривать именно команды Ассемблера. Команда с двумя операндами будет на ассемблере иметь следующий вид:
Имя_команды операнд_Приемник, операнд_Источник.
Расскажем теперь только об основных командах и только самое главное. Все приведенные ниже примеры будут относиться к системе команд х86. Полную информацию об этой системе команд можно найти в приложении.
Команды можно условно разделить на следующие:
- арифметические, например «сложения» и «вычитания»;
- битовые, например «логическое и», «логическое или» и «логическое не»;
- присваивание данных, например «переместить», «загрузить», «выгрузить»;
- ввода-вывода, для обмена данными с внешними устройствами;
- управляющие инструкции (команды переходов), например «переход», «условный переход», «вызов подпрограммы», «возврат из подпрограммы».
Арифметические команды выполняют операции сложения, вычитания, умножения, деления, увеличения на единицу (инкрементирования), уменьшения на единицу (декрементирования) и т.д. Этим командам требуется один или два входных операнда. Формируют команды один выходной операнд (для большинства процессоров, и для частности для семейства х86, один из входных операндов будет и выходным, это так называемый операнд приемник, второй входной операнд будет операндом источником).