Арифметические основы вычислительных машин

Автор работы: Пользователь скрыл имя, 04 Сентября 2014 в 13:43, реферат

Описание работы

Все компьютеры используют для хранения информации двоичную систему. Это значит, что каждый элемент хранимой информации может иметь только два состояния. Эти состояния обозначаются как «включен» и «выключен», «истина» и «ложь», или «1» и «0». Как правило, компьютер использует эти значения в виде уровней напряжения.
Из-за двоичного представления данных компьютеры используют в своих вычислениях арифметику с двоичным основанием. Используя простейшие числа 0 и 1, можно выполнять очень сложные вычисления.

Файлы: 1 файл

Архитектура компьютера и принципы его работы.doc

— 1.02 Мб (Скачать файл)
  1. Принцип однородности памяти. Программы и данные хранятся в одной и той же памяти, поэтому компьютер не различает, что хранится в данной ячейке памяти — данные (число, текст) или команда. Над командами можно выполнять такие же действия, как и над данными.

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

Более того, команды одной программы могут быть получены как результаты исполнения другой программы. На этом принципе основаны методы трансляции — перевода текста программы с языка программирования высокого уровня на язык конкретной машины.

 

  1. Принцип адресности. Структурно основная память состоит из перенумерованных ячеек. Процессору в произвольный момент времени доступна любая ячейка.

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

Основные понятия

Поясним основные понятия, которыми мы должны будем пользоваться при разборе архитектуры (и которые уже использовались в принципах фон Неймана).

Адрес – способ обратиться к содержимому ячейки памяти. Обычно в качестве минимально адресуемой ячейки памяти выбирается восьмиразрядная ячейка памяти (байт), поэтому можно считать, что адрес это номер байта в адресном пространстве. 

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

Размер объема памяти обычно измеряют в кило-, мега-, гига-, тера- и петабайтах (больше пока не употребляются). Название «килобайт» общепринято, но формально неверно, так как приставка кило-, в этом случае означает умножение не на 1000, а на 210 т.е. на  1024. При этом обозначение Кбайт (и все остальные тоже) начинают с прописной буквы в отличие от строчной буквы к для обозначения множителя 103. Приведем определения для всех введенных приставок.

Название

Символ

Степень

Степень ГОСТ

Кбайт

KiB

210

103

Мбайт

MiB

220

106

Гбайт

GiB

230

109

Тбайт

TiB

240

1012

Пбайт

PiB

250

1015


Машинная команда (она же инструкция) – «Слово» машинного языка располагающееся в памяти. У каждой команды есть свой код, который называют код операции (англ. operation code). Код операции показывает, какую именно операцию из системы команд процессора надо выполнить. В отличие от самого кода операции, машинные команды, которые обрабатывает процессор, обычно включают один или два операнда (англ. operand), над которыми должна выполняться операция, хотя некоторые операции могут совсем их не иметь.

Для того чтобы исполнить команду, процессор должен прочитать ее из памяти. Для того чтобы произвести операцию над данными, процессор должен прочитать их из памяти, и, возможно, после произведения над ними определенного действия, записать их обратно в память в обновленном (измененном) виде. Команды и данные идентифицируются их адресом, который, по сути, представляет собой порядковый номер ячейки памяти.

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

Большинство команд требуют двух операндов, один из которых является операндом-источником, а второй — операндом назначения или приемником. В двухоперандной машинной команде возможны следующие сочетания операндов:

  • Регистр – регистр;
  • Регистр – память;
  • Память – регистр;
  • непосредственный операнд – регистр;
  • непосредственный операнд – память.

Программа – это просто список инструкций, выполняемых процессором.

Регистр процессора – сверхбыстрая память внутри процессора или иначе ячейка процессора. Регистр предназначен, прежде всего, для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или данных, необходимых для работы процессора (специальные регистры). Можно сказать, что регистры общего назначения - это переменные, как X или Y в алгебре. Только регистры физически существуют в отличие от абстрактных переменных. С точки зрения схемотехники регистр это многоразрядная ячейка памяти, которая состоит из нескольких триггеров.

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

Регистры могут быть восьмиразрядные (в такой регистр помещаются 8 бит, т.е. 1 байт), шестнадцатиразрядные (в такой регистр помещается два байта или говорят машинное слово), 32-разрядные и т.д.

Доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти.

Счетчик команд – регистр процессора, содержащий адрес текущей выполняемой команды.

Упрощенная архитектура компьютера

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

  • шину данных,

Рисунок  Упрощенная архитектура компьютера



шину адреса,

  • шину управления.

В самом упрощенном виде компьютер включает два компонента процессор и память. (Рис …). Для обозначения процессора также часто используют сокращение CPU (англ., céntral prócessing únit, дословно — центральное вычислительное устройство).

Так как существует несколько разновидностей памяти обычно уточняют, что процессор имеет доступ к оперативной памяти, или иначе к памяти с произвольным доступом (англ., Random Access Memory, RAM).

Большинство современных процессоров для персональных компьютеров в общем основаны на той или иной версии циклического процесса последовательной обработки информации, изобретённого Джоном фон Нейманом.

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

Этапы цикла выполнения:

  1. Процессор выставляет число, хранящееся в регистре счётчика команд, на шину адреса, и отдаёт памяти команду чтения (по шине управления);
  2. Выставленное число является для памяти адресом; память, получив адрес и команду чтения, выставляет содержимое, хранящееся по этому адресу, на шину данных, и сообщает о готовности;
  3. Процессор получает число с шины данных, интерпретирует его как команду (машинную инструкцию) из своей системы команд и исполняет её. Если в качестве операнда в инструкции используется значение адреса, перед выполнением инструкции процессор обращается к памяти  и извлекает данные, хранящиеся по этому адресу;
  4. Если последняя команда не является командой перехода, процессор увеличивает число, хранящееся в счётчике команд на длину (в байтах) выполненной команды; в результате там образуется адрес следующей команды;
  5. Снова выполняется п. 1.

Данный цикл выполняется неизменно, и именно он называется процессом (откуда и произошло название устройства).

Во время процесса процессор считывает последовательность команд, содержащихся в памяти, и исполняет их. Такая последовательность команд называется программой и представляет алгоритм полезной работы процессора. Очерёдность считывания команд изменяется в случае, если процессор считывает команду перехода — тогда адрес следующей команды может оказаться другим. Другим примером изменения процесса может служить случай переключения в режим обработки аппаратного прерывания.

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

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

Система команд

Система команд (язык) это конкретной вычислительной машины (машинный язык), который интерпретируется непосредственно микропроцессором.

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

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

Каждая команда процессора имеет два представления:

  • В виде машинной команды (цифровое представление).
  • В виде команды Ассемблера. Поскольку человек не привык читать сплошные цифры, каждая команда имеет своё имя (имена) и формат.

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

Имя_команды    операнд_Приемник, операнд_Источник.

Расскажем теперь только об основных командах и только самое главное. Все приведенные ниже примеры будут относиться к системе команд х86. Полную информацию об этой системе команд можно найти в приложении.

 

Команды можно условно разделить на следующие:

  • арифметические, например «сложения» и «вычитания»;
  • битовые, например «логическое и», «логическое или» и «логическое не»;
  • присваивание данных, например «переместить», «загрузить», «выгрузить»;
  • ввода-вывода, для обмена данными с внешними устройствами;
  • управляющие инструкции (команды переходов), например «переход», «условный переход», «вызов подпрограммы», «возврат из подпрограммы».

Арифметические команды выполняют операции сложения, вычитания, умножения, деления, увеличения на единицу (инкрементирования), уменьшения на единицу (декрементирования) и т.д. Этим командам требуется один или два входных операнда. Формируют команды один выходной операнд (для большинства процессоров, и для частности для семейства  х86, один из входных операндов будет и выходным, это так называемый операнд приемник, второй входной операнд будет операндом источником).

Примеры арифметических команд

  1. Чтоб сложить содержимое двух регистров, нужно использовать команду

ADD   AH,AL

Прибавить к содержимому регистра AH содержимое регистра AL. Результат будет находиться в  регистре AH. Здесь ADD обозначает код операции, а AH,AL операнды, которые в нашем примере являются регистрами общего назначения.

  1. Чтобы вычесть из значения регистра число, находящееся в другом регистре, нужно использовать команду:

SUB   CX,DX   

Отнять от CX содержимое DX, результат будет находиться в регистре CX.

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

  1. Добавить число к содержимому регистра

ADD AH,9

Добавляем значение 9 к содержимому регистра AH, результат будет находиться в регистре AH. То есть в этом случае приемник это регистр, а источник находится непосредственно в команде. Это пример на использование в качестве операнда конкретного числа.

  1. Добавить содержимое, находящееся по известному адресу, к  содержимому регистра

ADD   AX,[0133h]

Прибавить к содержимому регистра AX  байты находящиеся в памяти по адресу 0133h (квадратные скобки указывают что операндом будет адрес).

Команды пересылки данных не требуют выполнения никаких операций над операндами. Операнды просто пересылаются (точнее, копируются) из источника в приемник. Источником и приемником могут быть регистры процессора, ячейки памяти.

Примеры  команд пересылки данных

  1. Поместить содержимое одного регистра в другой

MOV  DX,BX                   

Копировать содержимое регистра BX в регистр DX.

Информация о работе Арифметические основы вычислительных машин