logo
Конспект Граур

Системы программирования

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

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

Этапы ,связанные с разработкой и внедрением программы, называются жизненным циклом.

Проектирование

Обычно он включает исследование задачи, исследование характеристик объектной среды (как объектная среда будет связана с нашей системой).

Объектная среда – это та ВС, в рамках которой продукт будет функционировать.

Построение модели функционирования автоматизированного объекта.

Определение характеристик инструментальной среды.

Инструментальная среда – это ВС, которая будет использована для разработки программ. В каких-то случаях объектная среда и инструментальная среда могут совпадать. Выбор инструментальной среды - это выбор как аппаратной платформы для разработки так и тех программных инструментов, которые будут использованы при построении программного продукта.

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

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

Наличие априорной оценки позволяет:

а) достичь, в принципе, поставленной задачи;

б) повысить надежность рекурционной характеристики того решения, которое создается.

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

Результатом этапа проектирования является спецификация на создаваемое программное решение. Эти спецификации могут быть формальные и не формальные. Это зависит от использования тех или иных средств систем программирования и вообще тех или иных систем программирования. Соответственно 1-й этап проектирования – это спецификация.

Кодирование

Спецификация бывает формальная и неформальная.

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

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

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

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

Тестирование и отладка

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

Ввод программной системы в эксплуатацию внедрение) и сопровождение 

Включает следующий набор требований:

1 - подготовка документации, иногда автоматической или автоматизированной;

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

Современные технологии разработки программного обеспечения

К аскадная модель

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

Каскадная итерационная модель

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

Спиральная модель организации жизненного цикла программных систем

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

Система программирования – это комплекс программ, обеспечивающий технологию автоматизации :

• проектирования,

• кодирования,

• тестирования,

• отладки и сопровождения программного обеспечения.

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

Немного истории:

Начало 50-х годов ХХ – века. Система программирования или система автоматизации программирования включала в себя ассемблер (или автокод) и загрузчик, появление библиотек стандартных программ и макрогенераторов.

Середина 50-х – начало 60-х годов ХХ – века. Появление и распространение языков программирования высокого уровня (Фортран, Алгол-60, Кобол и др.). Формирование концепций модульного программирования.

Середина 60-х годов – начало 90-х ХХ – века. Развитие интерактивных и персональных систем, появление и развитие языков объектно-ориентированного программирования.

90-е ХХ – века – настоящее время. Появление промышленных средств автоматизации проектирования программного обеспечения, CASE-средств (Computer-Aided Software/System Engineering), унифицированного языка моделирования UML.

Появляются промышленные средства автоматического проектирования програмного обеспечения. CASE – средства.

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

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

Прикладные системы

Первый этап развития прикладных систем

Прикладная система – программная система, ориентированная на решение или автоматизацию решения задач из конкретной предметной области.

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

Второй этап – развитие систем программирования и появление средств создания и использования библиотек программ

Третий этап

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

Прикладные системы

Примеры:

Основные тенденции в развитии современных прикладных систем

Стандартизация моделей автоматизируемых

бизнес-процессов

B2B (business to business)

B2C (business to customer)

ERP (Enterprise Resource Planning)

CRM (Customer Relationship Management)

Открытость системы

API - Application Programming Interface

В ыводы

Базовые определения и понятия:

• Вычислительная система

• Физические ресурсы (устройства)

• Драйвер физического устройства

• Логические или виртуальные ресурсы (устройства)

• Драйвер логического/виртуального ресурса

• Ресурсы вычислительной системы

• Операционная система

• Жизненный цикл программы в вычислительной системе

• Система программирования

• Прикладная система

Основы компьютерной архитектуры

«Компьютер фон Неймана»:

• Джон фон Нейман (John Von Neumann)

• EDVAC (Electronic Discrete Variable Computer - Электронный Компьютер Дискретных Переменных)

• Предварительный доклад о компьютере EDVAC (A First Draft Report on the EDVAC).

• Джон Мочли (John Mauchly) и Джон Преспер Эккерт (John Presper Eckert).

• ENIAC  (Electronic Numerical Integrator And Computer).

Структура, основные компоненты:

Структура компьютера фон Неймана

"принципы построения компьютера фон Неймана":

Принцип двоичного кодирования

(придуман в США в 30 – е годы, все поступающие данные кодируются в виде двоичного сигнала) Суть заключается в том, что все поступающие и обрабатываемые компьютером данные кодируются при помощи двоичных сигналов. Т.е. как данные, которые должны обрабатываться, так и управляющая информация (команды), кодируются одинаково в двоичной системе.

Принцип программного управления

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

Принцип хранимой программы

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

Предполагается, что компьютеры фон Неймана имеют следующие компоненты:

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

Рассмотрим каждое из компонентов модельной машины.

Оперативное запоминающее устройство

ТЕГ

(поле служебной

информации)

Компьютер представляет собой разнородные, разноцелевые, разноскоростные аппаратные устройства.

Функция ОЗУ - хранение программы, выполняющейся в компьютере

ОЗУ - устройство, предназначенное для хранения оперативной информации.

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

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

В ОЗУ все ячейки памяти имеют уникальные имена, имя - адрес ячейки памяти.

Доступ к содержимому машинного слова осуществляется посредством использования адреса.

Машинное слово – поле программно изменяемой информации.

в машинном слове могут располагаться

1) машинные команды (или части машинных команд)

2) данные, с которыми может оперировать программа.

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

Служебная информация (иногда ТЭГ) – поле ячейки памяти, в котором схемами контроля процессора и ОЗУ автоматически размещается информация, необходимая для осуществления контроля за целостностью и корректностью использования данных, размещаемых в машинном слове.

В поле служебной информации могут размещаться :

1)разряды контроля четности машинного слова, при чтении контроль соответствия;

2)разряды контроля «данные-команда»;

3)машинный тип данных – осуществление контроля за соответствием машинной команды и типа ее операндов.

Использование содержимого поля служебной информации

1. Контроль за целостностью данных.

Элементарная схема контроля основывается на том, что тэг состоит из одного разряда, который формируется автоматически при записи информации в машинное слово. Этот разряд осуществляет контроль четности, либо контроль нечетности в зависимости от условия. Суть его в следующем: при выполнении команды записи некоторых данных в машинное слово схема управления ОП осуществляет подсчет двоичных единиц, записываемых в коде машинного слова, и в этом случае автоматически формируется контрольный разряд. Для нашего случая – идет работа с контролем четности, т.е. если количество единичек в машинном слове нечетное, то в контрольном разряде появляется единичка, которая формирует четное количество единиц в ячейках, если четное, то в контрольном разряде выставляется ноль. Вот записали это слово, и все правильно сформировалось. При записи либо при чтении возможет сбой памяти и потеря содержимого разрядов. Соответственно при чтении осуществляется контроль содержимого ячейки в соответствии с содержимым машинного слова и разряда тэга. Если при контроле получается код, который не соответствует контролю четности или нечетности, то фиксируется ошибка памяти. Понятно, что эта схема совсем примитивная, ненадежная, потому что потеря или добавление четного количества единичек этой схемой контроля не фиксируется. Это пример. Дальше можно использовать более сложные модели организации контроля четности, но в этом случае уже используется не один разряд, а большее количество. Есть схемы, которые использую поле тега и содержимое машинного слова, могут частично исправлять ошибки, но это уже различия.

2. Контроль доступа к командам/данными.

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

3. Контроль доступа к машинным типам данных

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

Важной характеристикой ОП является производительность ОП.

Производительность оперативной памяти - скорость доступа процессора к данным, размещенным в ОЗУ:

Cкорость доступа к данным ОЗУ существенно ниже скорости обработки информации в ЦП.

Фигурируют два компонента, которые определяют эту характеристику производительности:

время доступа (access time- taccess) - время между запросом на чтение слова из оперативной памяти и получением содержимого этого слова.

длительность цикла памяти (cycle time - tcycle) - минимальное время между началом текущего и последующего обращения к памяти.

(tcycle>taccess)

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

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

Расслоение памяти

Расслоение ОЗУ – один из аппаратных путей решения проблемы дисбаланса в скорости доступа к данным, размещенным в ОЗУ и производительностью ЦП. Суть его в следующем: предполагается, что вся память аппаратно разделена на последовательность областей, каждая из которых называется банк памяти и ОП физически представляется как объединение k банков памяти. Соответственно для управления ОП существует аппаратура, которая обеспечивает функцию управления, это контроллер ОП. Он может состоять из двух уровней – это контроллер доступа к памяти в целом, который имеет k своих внутренних каналов, которые могут работать параллельно, и каждый из каналов связан с контролем соответствующего банка памяти. Ячейки памяти расположены между соседними банками. Это означает, что в нулевом банке находится нулевая ячейка, в первом банке – первая ячейка и т.д. , в k-1 м банке k-1 – я ячейка, k – я ячейка находится в нулевом банке, k+1 – в первом и т.д. Все адреса размазаны по этим банкам. Всегда гарантированно, что соседние адреса, если их не более k находятся в разных банках. Это и есть аппаратная организация. Соответственно, если имеется ОП без расслоения памяти и с расслоением, то мы имеем следующую картину:

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

Другие пути решения данной проблемы – возможность предварительной буферизации при чтении команд/данных и оптимизация при записи в ОЗУ больших объемов данных.

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

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

Регистровая память – совокупность устройств памяти ЦП ,предназначенных для временного хранения операндов, информации, результатов операций.

Устройство управления (control unit)– координирует выполнение команд программы процессором.

Арифметико-логическое устройство (arithmetic/logic unit) –обеспечивает выполнение команд, предусматривающих арифметическую или логическую обработку операндов.

Регистровая память

Регистры общего назначения (РОН)

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

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

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

Регистр результата (РР) - содержит код, характеризующий результат выполнения последней арифметико-логической команды. Содержимое РР может характеризовать результат операции. Для арифметических команд это может быть «=0», «>0», «<0», переполнение. Содержимое РР используется для организации ветвлений в программах, а также для программного контроля результатов.

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

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

Регистр указатель стека - используется для ЭВМ, имеющих аппаратную реализацию стека, в данном регистре размещается адрес вершины стека. Содержимое изменяется автоматически при выполнении «стековых» команд ЦП.

Устройство управления и арифметико-логическое устройство

Устройство управления (control unit)– координирует выполнение команд программы процессором.

Арифметико-логическое устройство (arithmetic/logic unit) – обеспечивает выполнение команд, предусматривающих арифметическую или логическую обработку операндов.

Эти устройства являются «мозгом» процессора. Как именно функционирование этих устройств обеспечивает выполнение программ? Для ответа на этот вопрос рассмотрим упрощенную схему выполнения программ, иногда называемую рабочим циклом процессора.

Пусть у нас имеется специальный регистр - счетчик команд. В начальный момент времени в счетчике команд образуется адрес первой команды программы. Договоримся о том, что любая команда размещается в одном машинном слове и адреса соседних машинных слов различаются на 1. Рассмотрим последовательность действий в УУ процессора при выполнении программы.

По содержимому счетчика команд на выполнение из памяти выбирается очередная команда. Далее формируется адрес следующей команды, которая должна выполнится, т.е. счетчик команд увеличивается на 1. После этого в УУ происходит анализ кода операции, которая находится в выбранной команде, если это арифметико-логическая команда, то происходит вычисление исполнительных адресов операндов и выбор соответствующих их значений, и после этого идет обращение в АЛУ, в пределах которого выполняется эта команда. После этого цикл возвращается на этап выбора очередной команды по содержимому счетчика команд. Если после анализа кода операции выяснилось, что это не есть арифметико-логическая команда, а некоторая команда отличающаяся, (т.е. если, например, это команда передачи управления), то происходит анализ условия перехода. Это означает автоматический выбор специального регистра и по его значению принимается решение о переходе, если условие не выполнено, то мы переходим к выбору следующей команды, иначе происходит вычисление исполнительного адреса и счетчику команд присваивается этот адрес перехода и опять осуществляется переход на этап выборки команды по значению счетчика команд.

Рабочий цикл процессора

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

Кэш-память (L1)

Вернемся к проблеме дисбаланса скорости доступа к ОЗУ и скорости обработки информации ЦП.

Первое решениеиспользовать программные средства. Программист может разместить наиболее часто используемые операнды в РОН, тем самым сокращается количество «медленных» обращений в ОЗУ. Результат решения во многом зависит от качества программирования.

Второе решение – использование в архитектуре ЭВМ специальных регистровых буферов или КЭШ памяти (Аппаратное решение). Традиционно, в развитых ЭВМ используется аппаратная буферизация доступа к операндам команд, а также к самим командам. Регистровые буфера или КЭШ память предназначены для разрешения проблемы несоответствия скоростей работы ОЗУ и ЦП, на аппаратном уровне, т.е. эта форма оптимизации в системе организована аппаратно и работает всегда, вне зависимости от исполняемой программы.

Кэш память (cache memory) первого уровня (L1)

Автоматически минимизирует число обращений к ОП за командами и операндами команд. Обмен данными между КЭШем и оперативной памятью осуществляется блоками фиксированного размера .

Адресный тег блока содержит служебную информацию о блоке (соответствие области ОЗУ, свободен/занят блок, ......).

Нахождения данных в КЭШе - попаданием (hit). Если искомых данных нет в КЭШе, то фиксируется промах (cach miss).

При возникновении промаха происходит обновление содержимого КЭШа - вытеснение.

Появляется вопрос кого “убирать”? Существуют различные дифференцированные критерии решения этой проблемы.

Стратегии вытеснения:

случайная;

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

вытеснение наименее популярного (LRU - Least-Recently Used).

Наиболее распространенный и простой критерий - вытеснять из таблицы самую “старую” строчку. А признаком старения может быть, например, количество обращений к буферу, при котором нет обращения к этой строчке.

 

 

Вытеснение КЭШ’а данных:

сквозное кэширование (write-through caching)

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

кэширование с обратной связью (write-back cache) - тег модификации (dirty bit )

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

При использовании кэш памяти (cache memory):

• сокращается количество обращений к ОЗУ;

• существенно увеличивается скорость доступа к памяти в случае использования ОЗУ с «расслоением», т.к. обмены блоков с памятью будут проходить, практически параллельно.

Аппарат прерываний

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

Прерывания:

внутренние - инициируются схемами контроля работы процессора

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

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

Этап аппаратной обработки прерываний

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

Программный этап обработки прерываний

Происходит идентификация типа прерывания:

Идентификация прерывания может осуществляться разными моделями.

М одель организации прерываний с использованием «регистра прерываний»

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

 

Модель организации прерываний с использованием «вектора прерываний»

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