Из чего состоит счетчик компьютера

Обновлено: 07.07.2024

Консоль " Производительность " (находящая в разделе " Администрирование " Главного меню системы Windows) позволяет более детально исследовать функционирование системы по сравнению с " Диспетчером задач ". И, кроме того, данная консоль позволяет накапливать статистику о работе системы в фоновом режиме, без непосредственного наблюдения администратором системы, а также собирать данные о производительности с нескольких компьютеров одновременно. Данная консоль содержит два раздела — "Системный монитор" и "Журналы и оповещения производительности". "Системный монитор" предназначен для наблюдения за системой (или системами в режиме реального времени), "Журналы и оповещения производительности" используются для накопления статистики в фоновом режиме и последующего изучения накопленных данных.

Работа консоли "Производительность" основана на понятиях "Объект" и "Счетчик". Понятие " Объект" относится к той или иной компоненте системы или к определенному приложению и состоит из набора "Счетчиков", числовых показателей, измеряющих степень загруженности данной компоненты. Набор доступных объектов и счетчиков обновляется при установке служб и дополнительных компонент. Например, после установки на сервере службы DNS консоль "Производительность" пополняется рядом объектов и счетчиков для отслеживания работы этой службы.

" Системный монитор "

Если открыть консоль "Производительность", то мы сразу попадем в раздел "Системного монитора". При этом на экране отображаются 3 самых важных с точки зрения операционной системы счетчика: "Обмен страниц в сек " (объекта " Память"), " Средняя длина очереди диска " (объекта " Физический диск ") и " % загруженности процессора " (объекта " Процессор "); обновление данных на экране производится раз в секунду (Рис. 16.19).

Для выбранного мышью активного процесса регистрируются показатели:

  • Последний — последнее полученное значение счетчика;
  • Средний — среднее из всех полученный значений счетчика;
  • Минимум — минимальное значение счетчика за период наблюдений;
  • Максимум — максимальное значение счетчика за период наблюдений.

Если открыть Свойства счетчика, то можно изменить способ отображения данного счетчика на экране: цвет, толщину и стиль линии и масштаб (от 1:10000000 до 10000000:1), также изменить частоту сбора показаний.

Нажатием комбинации клавиш CTRL+H можно выделить активный счетчик белым цветом (так лучше видно активный счетчик среди большого количества счетчиков).

Нажатием кнопки со знаком "+" на панели инструментов можно добавить другие счетчики, в том числе полученные с других компьютеров сети (рис. 16.20):

" Журналы и оповещения производительности "

Раздел " Журналы и оповещения производительности " в свою очередь состоит из трех частей:

  • " Журналы счетчиков " — выполняют ту же задачу, что и " Системный монитор ", но делают это в фоновом режиме и накапливают данные в файле журнале на жестком диске или в базе данных (это наиболее часто используемый раздел журналов производительности);
  • " Журналы трассировки " — отслеживание запуска и работы приложений (универсальный системный отладчик, позволяет определить некоторые ошибки в функционировании тех или иных приложений и системных задач);
  • " Оповещения " — отслеживание значений счетчиков, но не для накопления в журнале, а для отправки оповещения назначенным для этой задачи пользователям (по электронной почте, с помощью системной компоненты " Оповещатель " ( Messenger ), и др.).

Рассмотрим подробнее использование " Журналов счетчиков ".

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

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

При создании самого первого журнала на томе с системой Windows создастся папка Perflogs , в которой и будут сохраняться все файлы с журналами. Далее нажатием кнопок " Добавить объекты " или " Добавить счетчики " можно добавить соответственно необходимые для мониторинга объекты (целиком со всем набором счетчиков) или отдельные счетчики. Для примера создадим журнал с именем Log-1 , выберем счетчики " Память\Обмен страниц в сек ", " Процессор\% загруженности процессора " и " Физический диск\Средняя длина очереди диска " для сервера DC1, установим интервал опроса для сбора данных — 1 секунду (рис. 16.22). Нажмем кнопку " Применить ".

Теперь можно менять другие параметры журнала. На закладке " Файлы журнала " можно указать, где накапливать данные — в двоичном файле с расширением " .blg " (по умолчанию), в текстовом с разделителями в виде табуляции или запятой, в базе данных. На закладке " Расписание " задается время и дата запуска журнала. Назначим режим запуска журнала " Вручную " и нажмем кнопку " ОК ". Теперь запустим журнал для накопления данных (рис. 16.23). Саму консоль " Производительность " можно закрыть (и даже завершить сеанс работы в системе).

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

По окончании процесса накопления данных снова запустим консоль " Производительность " и удалим автоматически открытые счетчики. Для того чтобы открыть файл журнала для анализа накопленных данных, выполним следующие действия: нажмем кнопку " Просмотр данных журнала " (рис. 16.24) или комбинацию клавиш CTRL+L, выберем для источника данных вариант " Файлы журнала ", нажмем кнопку " Добавить ", укажем путь к файлу с накопленными данными, откроем этот файл, нажмем кнопку " Применить " (рис. 16.25).

Перейдем на закладку " Данные " и добавим нужные счетчики. Нажмем " ОК ". Если период накопления был достаточно долгий, то данных будет накоплено много и картинка получится не очень разборчивая (рис. 16.26).

Для сужения интервала времени, который подвергается анализу, откроем Свойства любого из счетчиков и перейдем на закладку " Источник ". В нижней части панели подвинем границы анализируемого интервала и установим нужный нам " Диапазон просмотра " (рис. 16.27).

После этого график приобретет вид (рис. 16.28):

Чтобы значения некоторых графиков не выходили за границы экрана просмотра, произведем масштабирование этих графиков. В итоге получится картинка, вполне пригодная для изучения и анализа (рис. 16.29):

Диапазон просмотра можно менять и переключаться на другие промежутки времени. Соответственно может потребоваться настроить масштаб отображения графиков.

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

Одним из самых мощных инструментов для обнаружения проблем с производительностью в Windows являются встроенные счетчики производительности (Performance Counters). О них и пойдет речь в этой статье.

Performance Monitor

Основным инструментом для управления счетчиками производительности в Windows является оснастка Монитор производительности (Performance Monitor), в более ранних версиях Windows известная как Системный монитор. Performance Monitor имеет несколько режимов отображения и позволяет выводить показания счетчиков производительности в режиме реального времени, а также сохранять данные в лог-файлы для последующего изучения.

Найти Performance Monitor можно в меню Пуск (стартовый экран в Server 2012) в разделе Administrative tools, либо нажав Win+R и в окне «Run» выполнить команду perfmon.msc. Стоит иметь в виду, что не все пользователи имеют права на использование этой оснастки. Кроме членов группы Administrators, которые имеют полные права и могут пользоваться всеми ее возможностями, есть еще две группы:

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

Важно. В соответствием с требованием инструментария управления Windows (WMI) группе Performance Log Users необходимо предоставить право входа в систему в качестве пакетного задания. Для этого надо открыть оснастку локальной политики безопасности (secpol.msc), в разделе «Local policies\User Rights Assignment» найти параметр Log on as batch job и добавить в список группу Performance Log Users.

разрешение на вход в качестве пакетного задания

Добавление счетчиков

Итак, первое что мы делаем, открыв Performance Monitor, это добавляем в окно мониторинга необходимые нам счетчики. По умолчанию в окне уже отображается один счетчик, показывающий общую загрузку процессора. Удалить ненужный счетчик можно, выделив его и нажав на красный крестик на панели инструментов, либо клавишей Delete. Для добавления счетчиков жмем зеленую кнопку либо Ctrl+N.

Performance monitor

Открывается окно добавления счетчиков. В поле «Select counters from computer» задаем имя или IP-адрес компьютера, за которым будет вестись наблюдение. Кстати, Performance Monitor может отображать в одном окне счетчики с разных компьютеров.

Затем выбираем счетчики производительности из списка. Все счетчики объединены в группы, как правило содержащие в своем названии имя объекта производительности. Например, для мониторинга сетевой активности открываем группу Network Interface и выбираем счетчики, показывающие объем получаемого и передаваемого сетевого трафика, общий объем трафика и текущую пропускную способность.

Если вы сомневаетесь в назначении какого либо счетчика, то есть возможность посмотреть его описание. Для этого надо отметить чекбокс «Show description» в левом нижнем углу. Описание не очень подробное, но достаточно информативное.

Примечание. Количество счетчиков производительности довольно велико и зависит от версии операционной системы и установленых серверных ролей и компонентов. Так, например, в Windows Server 2012 добавлено большое количество счетчиков, предназначеных для мониторинга виртуальных машин. Кроме того, некоторые серверные продукты, такие как Exchange или SQL Server добавляют в систему собственные счетчики.

Выбрав объект мониторинга и выделив нужные счетчики, в поле «Instances of selected оbject» выбираем экземпляр (Instance) объекта. Так выбрав в качестве объекта сетевые интерфейсы, здесь мы указываем, за каким именно необходимо наблюдать. Можно выбрать один или несколько экземпляров, выбрав All Instance мы выведем данные для каждого экземпляра отдельно , а значение _Total выведет усредненное значение по всем экземплярам объекта.

Далее кнопкой «Add»добавляем выбранные счетчики в окно справа и сохраняем изменения кнопкой OK.

добавление счетчиков производительности

Вот так выглядит окно монитора производительности после добавления счетчиков. По умолчанию значения счетчиков производительности выводятся в виде линейного графика. Выбрав конкретный счетчик, можно посмотреть в панели текущее (last), минимальное (minimum), максимальное (maximum) и среднее (average) значения за указанный период времени.

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

Нажав соответствующую кнопку на панели инструментов, можно выбрать режим отображения в виде гистограммы (Histogram bar) или в виде отчета (Report). Также между режимами можно переключаться сочетанием клавиш Ctrl+G.

изменение режима просмотра

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

просмотр данных в режиме отчета

Как вариант, можно выделить конкретный счетчик, так чтобы он отражался более жирной линией. Для этого выбираем нужный счетчик и жмем на кнопку Highlight, расположенную в панели инструментов. Также для выделения можно воспользоваться сочетанием клавиш Ctrl+H.

выделение одного счетчика

Настройка Performance Monitor

Performance Monitor имеет множество настроек, предназначенных для наилучшего отображения данных. Открыть диалоговое окно настроек монитора производительности можно, кликнув на нем правой клавишей мышки и выбрав пункт Properties, либо нажав на неприметную кнопку в панели инструментов, либо нажав Ctrl+Q.

переход к настройкам отображения

На вкладке General можно:

Настройки, вкладка General

На вкладке Source (Источник) мы указываем, откуда брать данные:

Настройки, вкладка Source

Настройки, вкладка Data

На вкладке Graph изменяем отображение графика:

Настройки, вкладка Graph

Ну и на вкладке Appearance настраивается цветовое оформление и используемый шрифт.

Настройки, вкладка Appearance

Сохранение данных о производительности

Иногда может потребоваться сохранить полученные данные, например для предоставления отчета или для проведения дальнейшего анализа. Performance Monitor позволяет экспортировать полученные данные в файл. Для экспорта надо кликнуть правой клавишей мыши в окне и в открывшемся меню выбрать пункт «Save Settings As». По умолчанию отчет сохраняется в формате HTML, и его можно открыть в любом браузере.

Сохранение данных в файл

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

работа с данными в HTML

PowerShell

Значения счетчиков производительности можно посмотреть и из консоли PowerShell, где для этого есть специальный командлет Get-Counter . Хотя PowerShell имеет гораздо меньше возможностей для отображения счетчиков производительности, чем Performance Monitor, но зато может использоваться в режиме установки Server Core, при полном отсутствии графического интерфейса.

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

(Get-Counter -ListSet Processor).counter

Затем выбираем нужный и выводим его значение:

Get-Counter -Counter ″\Processor(_total)\% Processor Time″ -SampleInterval 10 -MaxSamples 2

Просмотр счетчиков с помощью PowerShell

Заключение

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

Счетчик - устройство для подсчета числа входных импульсов. Счетчик можно реализовать на нескольких триггерах.

по модулю счёта:

с произвольным постоянным модулем счёта;

с переменным модулем счёта;

по направлению счёта:

по способу формирования внутренних связей:

с последовательным переносом;

Символом счетчиков на схемах служат буквы СТ (от англ. counter — счетчик), после символа проставляют число, характеризующее модуль счета (например, 2 или 10 — СТ2, СТ10).

Основными эксплуатационными показателями счетчика являются емкость и быстродействие. Емкость счетчика, численно равная коэффициенту счета, равна числу импульсов за один цикл.

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

а). считывание выходных сигналов счетчика не с прямых, а с инверсных выходов триггеров;

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

Реверсивный счетчик может работать в качестве суммирующего и вычитающего. Эти счетчики имеют дополнительные входы для задания направления счета. Режим работы определяется управляющими сигналами на этих входах. В программе EWB такие счетчики представлены ИМС 74163 и 74169 (К155ИЕ18, ИЕ17).

Главное достоинство счетчиков с последовательным переносом — простота схемы. Увеличение разрядности осуществляется подключением дополнительных триггеров к выходу последнего триггера. Основной недостаток счетчиков с последовательным переносом — сравнительно низкое быстродействие, поскольку триггеры срабатывают последовательно, один за другим. Счетчики этого класса в библиотеке EWB не представлены.

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

Счетчики с параллельным переносом состоят из синхронных триггеров. Счетные импульсы подаются одновременно на все тактовые входы, а каждый из триггеров цепочки служит по отношению к последующим только источником информационных сигналов. Срабатывание триггеров параллельного счетчика происходит синхронно, и задержка переключения всего счетчика равна задержке одного триггера. В таких счетчиках используются JK- и D-триггеры. В схемном отношении они сложнее счетчиков с последовательным переносом. Число разрядов у этих счетчиков обычно невелико (4. 6), поскольку с повышением числа разрядов число внутренних логических связей быстро растет.

Счетчики с параллельным переносом (их чаще называют синхронными) в библиотеке EWB представлены счетчиками 74160, 74162, 74163 и 74169 (аналоги — К155ИЕ9, ИЕН, ИЕ18, ИЕ17 соответственно).

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

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

Вопрос №36

Узлы как структурная единица ЭВМ, их типы.

Основные узлы ЭВМ.

Основными узлами ЭВМ являются :

- центральный процессор (ЦП)

- оперативная память (ОЗУ)

- постоянное запоминающее устройство (ПЗУ)

- внешняя память (ВЗУ)

- устройства Ввода (УВв)

- устройства Вывода (УВыв)

Все устройства ЭВМ подсоединены к единой ИНФОРМАЦИОННОЙ

Основные узлы ЭВМ объединены в следующую схему.

УУ
АЛУ
Ц П
Системные программы
ПЗУ
Программа Данные Результаты
ОЗУ
Системная шина
Устройства ВВОДА
ВНЕШНЯЯ ПАМЯТЬ
Устройства ВЫВОДА

1. Центральный процессор

Главным элементом любой ЭВМ является ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР . ЦП сосотоит из - Устройства Управления (УУ) - Арифметико-Логического устройства (АЛУ)

Назначение ЦП : 1) Управление узлами компьютера
2) Обработка информации, которая сводится к
выполнению арифметических операций.

УУ - управляет работой ЭВМ, путем исполнения команд ПРОГРАММЫ. Рабочая программа хранится в ОЗУ.

(АЛУ) Арифметико-логичеcкое устройство главный исполнительный орган ЭВМ. Назначение АЛУ - О Б Р А Б О Т К А ИНФОРМАЦИИ. Обработка информации сводится к выполнению арифметических операций. АЛУ выполняет над числами арифметические(+,-,умножить, делить) и логические( > , < , не равно и др.) операции

Оперативная память (ОЗУ)

Назначение ОЗУ ОЗУ предназначена для хранения рабочей программы во время ее выполнения, а также данных, которые эта программа должна обработать и результатов обработки

Вместе с программой в ОЗУ хранятся :

- ИСХОДНЫЕ ДАННЫЕ , которые программа обрабатывает

Пример: Вы рисуете на компьютере с помощью программы PAINT.

Где в этот момент хранится программа Paint и рисунок ? >

В оперативной памяти. Работающая программа и результат ее работы
находится в ОЗУ!

Рабочая программа находится в ОЗУ .

Недостатки ОЗУ ОЗУ современных ЭВМ является ЭНЕРГОЗАВИСИМОЙ. При выключении питания содержимое ОЗУ теряется.

Главное достоинство ОЗУ ВЫСОКОЕ БЫСТРОДЕЙСТВИЕ . ОЗУ выполнена из электронных элементов, поэтому быстродействие ОЗУ сопоставимо с быстродействием ЦП. Это значит, что время чтения (записи) двоичного числа из (в) ОЗУ примерно равно времени , за которое ЦП выполняет одну операцию над парой чисел.

Вопрос: <Можно ли в качестве ОЗУ использовать другой вид памяти? >

< Например, магнитную память (винчестер) >

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

Магнитная память обладает низким быстродействием (по сравнению с электронной памятью). Операции чтения записи с диска выполняются примерно в 10 000 раз медленнее, чем из электронных ячеек.
Если бы рабочая программа располагалась на диске, то ЦП большую часть времени пришлось бы простаивать в ожидании, пока будет прочитана очередная команда.

Работа компьютера сводится к чтению и исполнению команд программы. Поэтому быстродействие ЭВМ не может превысить, скорость чтения команд программы.

Чарльз Бэбидж - первый конструктор автоматической вычислительной машины, предполагал хранить программу на картонных картах.

1) До запуска все программы хранятся в .exe файлах на магнитном диске (винчестере). 2)После запуска программа копируются из .exe файла в ОЗУ. Зачем это делается? Для поддержки высокого быстродействия ЭВМ. (Что бы быстродействие ЭВМ было высоким, рабочая программа должна храниться в быстрой памяти, т.е. в ОЗУ) 3)После завершения выполнения очередной программы она удаляется из ОЗУ, тем самым освобождая место для запуска других программ. (программа удаляется только из ОЗУ, но остается в файле на диске)

<< Как в ОЗУ попадает первая программа? >>

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

Первой в ОЗУ попадает ОПЕРАЦИОННАЯ СИСТЕМА. Она копируется из файлов на магнитном диске в ОЗУ.

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

Таковой программой является начальный загрузчик. ОН хранится в ПЗУ. НАЧАЛЬНЫЙ ЗАГРУЗЧИК стартует первым сразу при включении компьютера и копирует в ОЗУ ОС. Далее ОС включается в работу и управляет компьютером.

2.1. Процессор.

Самый основной элемент компьютера, это, конечно, процессор. Давайте подробней его рассмотрим. Упрощённая структура процессора (рис. 4):


Рис. 4. Упрощённая структура процессора

Основные элементы процессора:

· Регистры – это специальные ячейки памяти, физически расположенные внутри процессора. В отличие от ОЗУ, где для обращения к данным требуется использовать шину адреса, к регистрам процессор может обращаться напрямую. Это существенно ускорят работу с данными.

· Арифметико-логическое устройство выполняет арифметические операции, такие как сложение, вычитание, а также логические операции.

· Блок управления определяет последовательность микрокоманд, выполняемых при обработке машинных кодов (команд).

· Тактовый генератор , или генератор тактовых импульсов, задаёт рабочую частоту процессора.

2.2. Режимы работы процессора.

Процессор архитектуры x86 может работать в одном из пяти режимов и переключаться между ними очень быстро:

1. Реальный (незащищенный) режим (real address mode) — режим, в котором работал процессор 8086. В современных процессорах этот режим поддерживается в основном для совместимости с древним программным обеспечением (DOS-программами).

2. Защищенный режим (protected mode) — режим, который впервые был реализован в 80286 процессоре. Все современные операционные системы (Windows, Linux и пр.) работают в защищенном режиме. Программы реального режима не могут функционировать в защищенном режиме.

3. Режим виртуального процессора 8086 (virtual-8086 mode, V86) — в этот режим можно перейти только из защищенного режима. Служит для обеспечения функционирования программ реального режима, причем дает возможность одновременной работы нескольких таких программ, что в реальном режиме невозможно. Режим V86 предоставляет аппаратные средства для формирования виртуальной машины, эмулирующей процессор8086. Виртуальная машина формируется программными средствами операционной системы. В Windows такая виртуальная машина называется VDM (Virtual DOS Machine — виртуальная машина DOS). VDM перехватывает и обрабатывает системные вызовы от работающих DOS-приложений.

4. Нереальный режим (unreal mode, он же big real mode) — аналогичен реальному режиму, только позволяет получать доступ ко всей физической памяти, что невозможно в реальном режиме.

5. Режим системного управления System Management Mode (SMM) используется в служебных и отладочных целях.

При загрузке компьютера процессор всегда находится в реальном режиме, в этом режиме работали первые операционные системы, например MS-DOS, однако современные операционные системы, такие как Windows и Linux переводят процессор в защищенный режим. Вам, наверное, интересно, что защищает процессор в защищенном режиме? В защищенном режиме процессор защищает выполняемые программы в памяти от взаимного влияния (умышленно или по ошибке) друг на друга, что легко может произойти в реальном режиме. Поэтому защищенный режим и назвали защищенным.

2.3. Регистры процессора (программная модель процессора).

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

· 8 регистров общего назначения, служащих для хранения данных и указателей;

· регистры сегментов — они хранят 6 селекторов сегментов;

· регистр управления и контроля EFLAGS, который позволяет управлять состоянием выполнения программы и состоянием (на уровне приложения) процессора;

· регистр-указатель EIP выполняемой следующей инструкции процессора;

· система команд (инструкций) процессора;

· режимы адресации данных в командах процессора.

Начнем с описания базовых регистров процессора Intel 80386.

Базовые регистры процессора Intel 80386 являются основой для разработки программ и позволяют решать основные задачи по обработке данных. Все они показаны на рис. 5.


Рис. 5. Базовые регистры процессора Intel 80386

Среди базового набора регистров выделим отдельные группы и рассмотрим их назначение.

2.4. Регистры общего назначения.

Остальные четыре регистра – ESI (индекс источника), EDI (индекс приемника), ЕВР (указатель базы), ESP (указатель стека) – имеют более конкретное назначение и применяются для хранения всевозможных временных переменных. Регистры ESI и EDI необходимы в строковых операциях, ЕВР и ESP – при работе со стеком. Так же как и в случае с регистрами ЕАХ - EDX, младшие половины этих четырех регистров называются SI, DI, BP и SP соответственно, и в процессорах до 80386 только они и присутствовали.

2.5. Сегментные регистры.

При использовании сегментированных моделей памяти для формирования любого адреса нужны два числа – адрес начала сегмента и смещение искомого байта относительно этого начала (в бессегментной модели памяти flat адреса начал всех сегментов равны). Операционные системы (кроме DOS) могут размещать сегменты, с которыми работает программа пользователя, в разных местах памяти и даже временно записывать их на диск, если памяти не хватает. Так как сегменты способны оказаться где угодно, программа обращается к ним, применяя вместо настоящего адреса начала сегмента 16-битное число, называемое селектором. В процессорах Intel предусмотрено шесть 16-битных регистров - CS, DS, ES, FS, GS, SS , где хранятся селекторы. (Регистры FS и GS отсутствовали в 8086, но появились уже в 80286.) Это означает, что в любой момент можно изменить параметры, записанные в этих регистрах.

В отличие от DS, ES, GS, FS, которые называются регистрами сегментов данных, CS и SS отвечают за сегменты двух особенных типов – сегмент кода и сегмент стека. Первый содержит программу, исполняющуюся в данный момент, следовательно, запись нового селектора в этот регистр приводит к тому, что далее будет исполнена не следующая по тексту программы команда, а команда из кода, находящегося в другом сегменте, с тем же смещением. Смещение очередной выполняемой команды всегда хранится в специальном регистре EIP (указатель инструкции, 16-битная форма IP), запись в который так же приведет к тому, что далее будет исполнена какая-нибудь другая команда. На самом деле все команды передачи управления – перехода, условного перехода, цикла, вызова подпрограммы и т.п. – и осуществляют эту самую запись в CS и EIP.

2.6. Регистр флагов.

Еще один важный регистр, использующийся при выполнении большинства команд, - регистр флагов. Как и раньше, его младшие 16 бит, представлявшие собой весь этот регистр до процессора 80386, называются FLAGS. В EFLAGS каждый бит является флагом, то есть устанавливается в 1 при определенных условиях или установка его в 1 изменяет поведение процессора. Все флаги, расположенные в старшем слове регистра, имеют отношение к управлению защищенным режимом, поэтому здесь рассмотрен только регистр FLAGS (см. рис. 6):


Рис. 6. Регистр флагов FLAGS.

CF – флаг переноса. Устанавливается в 1, если результат предыдущей операции не уместился в приемнике и произошел перенос из старшего бита или если требуется заем (при вычитании), в противном случае – в 0. Например, после сложения слова 0 FFFFh и 1, если регистр, в который надо поместить результат, – слово, в него будет записано 0000 h и флаг CF = 1.

PF – флаг четности. Устанавливается в 1, если младший байт результата предыдущей команды содержит четное число битов, равных 1, и в 0, если нечетное. Это не то же самое, что делимость на два. Число делится на два без остатка, если его самый младший бит равен нулю, и не делится, когда он равен 1.

AF – флаг полупереноса или вспомогательного переноса. Устанавливается в 1, если в результате предыдущей операции произошел перенос (или заем) из третьего бита в четвертый. Этот флаг используется автоматически командами двоично-десятичной коррекции.

ZF – флаг нуля. Устанавливается в 1, если результат предыдущей команды – ноль.

SF – флаг знака. Он всегда равен старшему биту результата.

TF – флаг ловушки. Он был предусмотрен для работы отладчиков, не использующих защищенный режим. Установка его в 1 приводит к тому, что после выполнения каждой программной команды управление временно передается отладчику.

IF – флаг прерываний. Сброс этого флага в 0 приводит к тому, что процессор перестает обрабатывать прерывания от внешних устройств. Обычно его сбрасывают на короткое время для выполнения критических участков кода.

DF – флаг направления. Он контролирует поведение команд обработки строк: когда он установлен в 1, строки обрабатываются в сторону уменьшения адресов, когда DF =0 – наоборот.

OF – флаг переполнения. Он устанавливается в 1, если результат предыдущей арифметической операции над числами со знаком выходит за допустимые для них пределы. Например, если при сложении двух положительных чисел получается число со старшим битом, равным единице, то есть отрицательное, и наоборот.

Флаги IOPL (уровень привилегий ввода-вывода) и NT (вложенная задача) применяются в защищенном режиме.

2.7. Цикл выполнения команды

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

Для того чтобы процессор знал, какую команду нужно выполнять в определённый момент, существует счётчик команд – специальный регистр, в котором хранится адрес команды, которая должна быть выполнена после выполнения текущей команды. То есть при запуске программы в этом регистре хранится адрес первой команды. В процессорах Intel в качестве счётчика команд (его ещё называют указатель команды) используется регистр EIP (или IP в 16-разрядных программах).

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

Цикл выполнения команды – это последовательность действий, которая совершается процессором при выполнении одной машинной команды. При выполнении каждой машинной команды процессор должен выполнить как минимум три действия: выборку, декодирование и выполнение. Если в команде используется операнд, расположенный в оперативной памяти, то процессору придётся выполнить ещё две операции: выборку операнда из памяти и запись результата в память. Ниже описаны эти пять операций.

  • Выборка команды . Блок управления извлекает команду из памяти (из очереди команд), копирует её во внутреннюю память процессора и увеличивает значение счётчика команд на длину этой команды (разные команды могут иметь разный размер).
  • Декодирование команды . Блок управления определяет тип выполняемой команды, пересылает указанные в ней операнды в АЛУ и генерирует электрические сигналы управления АЛУ, которые соответствуют типу выполняемой операции.
  • Выборка операндов . Если в команде используется операнд, расположенный в оперативной памяти, то блок управления начинает операцию по его выборке из памяти.
  • Выполнение команды . АЛУ выполняет указанную в команде операцию, сохраняет полученный результат в заданном месте и обновляет состояние флагов, по значению которых программа может судить о результате выполнения команды.
  • Запись результата в память . Если результат выполнения команды должен быть сохранён в памяти, блок управления начинает операцию сохранения данных в памяти.

Суммируем полученные знания и составим цикл выполнения команды:

  1. Выбрать из очереди команд команду, на которую указывает счётчик команд.
  2. Определить адрес следующей команды в очереди команд и записать адрес следующей команды в счётчик команд.
  3. Декодировать команду.
  4. Если в команде есть операнды, находящиеся в памяти, то выбрать операнды.
  5. Выполнить команду и установить флаги.
  6. Записать результат в память (по необходимости).
  7. Начать выполнение следующей команды с п.1.

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

Читайте также: