Принцип Фон Неймана 3)Принцип хранимой программы : Программа хранится в памяти вместе с данными. То есть запись программы можно рассматривать как данное и следовательно а)запись одной программы может подаваться на вход другой программе б)результатом работы программы может быть запись некоторой другой программы в) программа может изменять саму себя во время счета (как в УМ-3) т. е. самомодифицироваться 4) Принцип автоматической работы : Машина выполняет записанную в ее памяти программу автоматически, без участия человека (если только такое участие не предусмотрено в самой программе ) | 12)Сумматор - это внутренний регистр в ЦП на который помещается результат выполнения операции 1)регистр(счетчик ) адреса(RA)- это регистр в ЦП, в котором после выполнения текущей команды будет лежать адрес следующей команды подлежащей выполнению 4) Регистр Ошибки (Err)- регистр ошибки содержащий 0 в случае успешного выполнения очередной команды и единицу в противном случае |
3)Преимущества и недостатки стековых машин (УМ-С) по сравнению с другими архитектурами. Память в них делится условно на 2 части :ОП и СТЕК. Преимущества УМ-С. В арифметических командах не надо указывать местоположение операндов (они находятся в двух верхних словах стека) → задается только КОП(команда стала короткой) Это приводит к компактной программе. Недостатки УМ-С : Требуется больше команд. Необходимо дополнительно иметь одноадресные команды для обмена с ОП, для переходов. СТЕК - это часть оперативной памяти (медленной) → стековая машина работает медленно (иметь стек на регистрах дорого) Неудобно программировать только на стеке | 2)Достоинства сегментной организации памяти. Уменьшение длины команд, обращающихся к памяти т. к вместо длинного 20-разрядного адреса указывают более короткое (16- разрядное) смещение Разные определения 2)физический адрес ячейки – порядковый номер ячейки физической памяти(в диапазоне от 0 до 2^20-1) |
СХЕМА РАБОТЫ ТРАНСЛЯТОРА С ЯА Объектный язык – промежуточный язык между языком ассемблера и машинным языком; в него происходит трансляция с ЯА программой-ассемблером (в результате чего получается объектный модуль с расширением. obj). Транслятор с ЯА работает за 2 прохода (просмотра) исходного текста. 1-ый проход. Построение таблиц: Таблица лексем – содержит все опознанные лексемы (имена, числа, строки символов, разделители, комментарии), их класс и другие атрибуты. Таблица имен – содержит все имена пользователя. По каждому имени хранит его атрибуты (свойства): 1. Segment – адрес начала сегмента, где описано данное имя (для переменных и меток). 2. Offset – смещение имени внутри сегмента, где описано данное имя (для переменных и меток). 3. Type – результат применения оператора TYPE к имени. 4. Value – значение имени (для сегментов или констант). На каком этапе трансляции ассемблерной программы выявляется ошибка «повторное описание имени»? На 1-ом проходе. Ассемблер просматривает исходный текст сверху вниз и все описанные в программе имена (вместе с их атрибутами) заносит в таблицу имён. При попытке занести в эту таблицу имя, которое уже содержится в таблице, фиксируется ошибка «повторное описание имени». | Общие имена (входные точки). 1) Что такое общее имя и в чем его отличие от других имен модуля? Общее имя – это имя, описанное в данном модуле и которое можно использовать в других модулях программы. Остальные имена модуля (в силу принципа локализации имён в модулях) недоступны для других модулей. 2) Как ассемблер узнаёт, что некоторое имя в модуле является общим? Общими ассемблер считает имена, перечисленные в директиве PUBLIC. Достоинства и недостатки независимой трансляции модулей на Ассемблере. Достоинства модульного программирования на ЯА: 1) Раздельная трансляция (при ошибке в одном модуле – малое время перекомпиляции, так как не надо транслировать другие модули). 2) Локализация имен внутри модуля (все имена, объявленные в модуле, являются внутренними в этом модуле и не видны из другого модуля; исключение – только общие и внешние имена). 3) Возможность использовать разработанные модули в других программах. Недостатки модульного программирования на ЯА: 1) Необходимость явного задания связей между модулями при их описании (т. е. установления соответствия между их общими и внешними именами). 2) Необходимость сложного этапа сборки (компоновки) программы с целью контроля и установки всех связей между модулями. |
2) Связь по данным. Связь между модулями по данным означает, что один модуль может читать и/или записывать в память другого модуля (например, использовать или менять значения переменных в другом модуле). Статическая связь означает, что связи (то есть адреса данных из другого модуля, к которым идет доступ) известны сразу после загрузки программы в память до начала её счета, например, в случае обращения к внешним переменным. При динамической связи по данным эти адреса становятся известными только во время счета программы (например, в случае передачи во внешнюю процедуру параметра, адрес которого определяется только на этапе счета). Например, Masm 4.0 не проверяет соответствия типов у внешнего имени и общего. ЭТАПЫ РАЗРАБОТКИ И ВЫПОЛНЕНИЯ МОДУЛЬНОЙ ПРОГРАММЫ. Ассемблер – программа, выполняющая трансляцию исходного модуля (с расширением. asm) в объектный модуль (с расширением. obj). Объектный модуль – промежуточный модуль на машинном языке (с расширением. obj), получаемый в результате трансляции (ассемблером) исходного модуля на ЯА (с расширением. asm). Ассемблер не может окончательно оттранслировать исходный модуль с ЯА на машинный язык из-за наличия в исходном модуле внешних имен (они в этом модуле не описаны) и перемещаемых имен (т. е. номеров сегментов, которые будут известны только после загрузки программы в память непосредственно перед ее исполнением). | Загрузочный модуль (исполняемый файл) – модуль на машинном языке (с расширением. exe), получаемый компоновщиком в результате сборки объектных модулей в единое целое. В загрузочном модуле некоторые поля (например, адреса сегментов) остаются неоттранслированными и заполняются загрузчиком после размещения программы в память непосредственно перед началом ее счета. Заголовок загрузочного модуля. 1) Таблица сегментов (какие есть сегменты и их длина, какой сегмент считается сегментом стека). 2) Таблица перемещаемых адресов (содержит информацию о каждом вхождении такого адреса). 3) Точка входа (в каком сегменте находится и по какому смещению). Одна из функций компоновщика – редактирование межмодульных связей. Объяснить, 1) в чём смысл этой функции; 2) почему её не может выполнить ассемблер. Ответ. 1) Редактирование межмодульных связей – это замена внешних имен (имен других модулей) на их адреса. 2) Ассемблер транслирует каждый модуль по отдельности => он ничего не знает об именах из других модулей (о внешних именах) и поэтому не может сделать такую замену. В программе на ЯА есть предложения extrn x:abs и mov ax, x. Какая служебная программа подставляет конкретное значение на место операнда X команде mov ax, x? Ответ: Редактор внешних связей (компоновщик) на основании таблицы общих имен и таблицы вхождений внешних имен. |
Другие учебные машины 2) Почему (при одинаковой технической реализации ) УМ-1 работает быстрее УМ-2. УМ-2:формат команд КОП А1,А2 действие А1:=<A1>o<A2>,3 обращения к памяти (два для считывания операндов и одно для записи результата ). УМ-1 : формат команд КОП А, действие S:=<S>o<A> где S сумматор (регистр в ЦП )→ 2 обращения к быстрому регистру (для считывания 1-ого операнда и для записи результата и одно обращение к более медленной оперативной памяти – для считывания 2-ого операнда) | Эвм (любые ), определения 8)Машинная программа – набор записанных в памяти не обязательно последовательно машинных команд, описывающих шаги работы алгоритма |
5)Команда префикс замены сегмента - однобайтовая машинная команда, действующая непосредственно на следующую за ней машинную команду ( адресным операндом) и меняющая сегментный регситр(принятый по умолчанию )для доступа к этому операнду СРАВНЕНИЕ МАКРОСОВ И ПРОЦЕДУР. С точки зрения исходного текста: похожи (отдельно оформляем повторяющийся фрагмент и в нужных местах организуем к нему обращение). С точки зрения памяти: выигрывают процедуры (процедура существует в машинной программе в единственном экземпляре, тело же макроса копируется в машинной программе столько раз, сколько мы к нему обращаемся). С точки зрения времени выполнения: выигрывают макросы (для входа и выхода из процедуры требуются дополнительные команды – настройка на параметры, вызов процедуры, возврат из нее; в случае же макросов все настройки выполнены уже на этапе трансляции, и, следовательно, на этапе счета на это уже не тратится время). | 5)Общая схема выполнения команд в УМ Repeat Шаг 3 выполнение операции применительно к бинарным операциям Сегментирование адресов |
3) Ослабленный контроль интерфейса между модулями по входным точкам (общим именам) и внешним адресам, так как ассемблер видит в каждый данный момент только один модуль и => не может проконтролировать, правильно ли установлены связи между модулями; часто ошибка в связях выявляется только на этапе сборки (компоновки) или даже на этапе счета программы. Виды связей между модулями на Ассемблере. 1) Связь по управлению. Связь между модулями по управлению означает, что один модуль может передать управление в другой модуль (то есть начать выполнять команды из другого модуля). Статическая связь означает, что связи (то есть адреса команд, на которые передается управление) известны сразу после загрузки программы в память до начала её счета (например, в случае перехода по внешней метке или вызова внешней процедуры). При динамической связи по управлению эти адреса становятся известными только во время счета программы (например, при возврате в точку вызова из внешней процедуры по команде ret – конкретный адрес возврата находится в стеке и зависит от хода проводимых вычислений). | 2-ой проход. Построение объектного модуля: формирование внутреннего машинного представления команд и данных, построение заголовка объектного модуля. На каком этапе трансляции ассемблерной программы выявляется ошибка «неописанное имя»? На 2-ом проходе. В результате работы 1-го прохода строится таблица имен, в которую заносятся все описанные в программе имена вместе с их атрибутами. На 2-ом проходе ассемблер (при генерации объектного кода) обращается к этой таблице за информацией об имени. Если такая информация отсутствует, то фиксируется ошибка «неописанное имя». МОДУЛИ Головной модуль программы – модуль, содержащий точку входа (метку первой выполняемой команды) в программу (начиная с нее будет выполняться программа). Внешние имена. 1) Что такое внешнее имя и в чём его отличие от других имён модуля? Внешнее имя – это имя, используемое в данном модуле, но описанное в другом модуле программы. Остальные имена модуля должны быть описаны в самом модуле. 2) Как ассемблер узнаёт, что некоторое имя в модуле является внешним? Внешними ассемблер считает имена, перечисленные в директиве EXTRN. |
Загрузчик (статический) – специальная программа, вызываемая операционной системой (при запуске программы на счет), и выполняющая следующие задачи (на основе анализа информации из заголовка загрузочного модуля): 1) Загрузка программы в память (выполняет запрос на выделение памяти под программу и если памяти достаточно, то загружает программу по выделенному для нее адресу). 2) Завершение трансляции перемещаемых адресов (т. к. выяснился начальный адрес программы). 3) Инициализация значениями регистров SS и SP (по информации о сегменте стека) 4) Инициализация регистров CS и IP (по информации о точке входа). На каком этапе обработки программы на ЯА в поле с именем data команды start: mov AX, data будет занесено числовое значение адреса начала сегмента data, деленное на 16? Ответ. Поле data будет заполнено загрузчиком (статическим) после размещения программы в оперативной памяти непосредственно перед запуском её на счет. Загрузчик (динамический) – сначала он размещает в памяти не всю программу целиком (как статический загрузчик), а только её основную часть (головной модуль). Остальные же модули, содержащие процедуры, подгружаются в память по мере необходимости, когда к этим процедурам будет реальное обращение из головного модули или из других (уже загруженных) модулей программы => внешние связи между модулями редактируются только на этапе их динамической загрузки в память (т. е. осуществляется динамическое связывание модулей). При этом для загрузки необходимых процедур в ОП выделяется специальная область, называемая рабочим полем. | Заголовок объектного модуля. 1) Таблица сегментов (какие есть сегменты и их длина). 2) Таблица общих имен. По каждому такому имени хранит информацию а) о его типе (abs, byte, word, dword, near, far); б) о входной точке в модуль (в каком сегменте и по какому смещению находится объект, обозначаемый этим именем) – только для имен переменных и меток; в) значение имени – только для имен констант (типа abs). 3) Таблица вхождений внешних имен. Содержит информацию по каждому вхождению такого имени: его местоположение (в каком сегменте и с каким смещением оно встречается в модуле) и какая часть этого имени используется (сегмент или смещение). 4) Таблица перемещаемых имен (о каждом вхождении такого имени сохраняется информация о его местоположении в модуле). Компоновщик (редактор внешних связей) – программа, собирающая из объектных модулей единый загрузочный модуль (исполняемую программу с расширением. exe). В процессе объединения модулей учитываются параметры директивы segment (влияющие на взаимное расположение сегментов в окончательной программе) и редактируются межмодульные связи (т. е. выполняется трансляция внешних имен). В процессе своей работы компоновщик использует информацию из заголовков объектных модулей. |
Преимущества и недостатки схемы счета модульной программы со статической загрузкой по сравнению со схемой счета с динамической загрузкой. Преимущество: связывание модулей производится на этапе редактирования связей (до начала счета) => 1) высокая скорость работы программы, так как на этапе счета не тратится время на многократную загрузку в память (возможно, одного и того же модуля) и редактирование связей 2) загрузка программы в память производится только один раз Недостатки: 1) нельзя выполнять большие программы, которые целиком не умещаются в оперативной памяти; 2) лишние расходы памяти: модули, которые не вызываются во время данного счета программы, все равно загружаются в оперативную память Преимущества и недостатки схемы счета модульной программы с динамической загрузкой по сравнению со схемой счета со статической загрузкой. Преимущество: возможность выполнения больших программ, не умещающихся целиком в оперативной памяти (за счет подгрузки процедур на рабочее поле по мере их вызова). Недостатки: 1) после размещения головного модуля в ОП динамический загрузчик не проверяет, все ли модули, которые могут вызываться в процессы работы, действительно существуют. Если вызываемый модуль не будет найден, то фиксируется ошибка времени выполнения. | 8) Короткий переход – относительный переход, в котором величина, прибавляемая к IP, является i8 (в памяти занимает 2 байта). Все условные переходы, а также циклы – короткие. 9) Длинный переход – относительный переход, в котором величина, прибавляемая к IP, является i16. Прерывания Сист(аппарат) прерываний – это возможность ЦП автоматически совершать переходы при возникновении определенных условий(событий). По месту возникновения делятся на: 1) внутренние (от ЦП и ОП) 1) внешние (от перифер устройств) 1) для i8086 Все внутренние прерывание не маскируемые, т. е. их нельзя запретить, внешн. Маскируемые, т. е. их можно запретить путем уст-ки флага прерыв IF в 0(с помощью команды CLI). Невозможно замаскиров только внешн прерыв с номером 2 (выкл эл питан компа и т. п.), внутр прерыв(неисправность в р-те ЦП, сбой в работе памяти, попытка выполнен маш команды с несуществ КОП, дел-е на 0) маскировать нельзя, т. к. при их возникновении надо срочно предпринимать необх действ., иначе нет смысла выполнять программу далее. |
Программное прерывание - прерывание, которое возбуждается самой прогой путем выполнения команды int N, где N –номер прерывания от 0 до 255, исп-ся для отладки пр-м(ном от 0 до 30) и для обращения к функциям операт сист (>30) Мультипрограммный режим Мултипрограм. режим - это режим работы ЭВМ, который позволяет находится в оперативной памяти, сразу нескольким (независимым друг от друга) программам, готовым к счёту, переключение между которыми происходит по определённому правилу. Аппаратные средства необходимые для поддержки работы в мультипрограм. режиме: 1) система прерываний(для обеспеч. автомат. переключения с одной программы на другую); 2) механизм защиты памяти; 3) аппарат привилегированных команд(защищённый режим работы); 4) таймер, т. е. встроен. в компьютер электр. часы(для переключение с одной програм. на другую, через определён. кванты времени). | Аппарат привилегированных команд - компьютер имеет аппарат привилегир. команд, если все его команды разбиты на две части: привилег. команды (запрещённые) и обычные команды (пользовательские). ЦП такого комп. может работать в двух режимах. И имеет спец. регистр показывает в каком он сейчас режиме работает. В привилег. режиме ЦП может выполнять все команды; при попытки выполнить эти команды в польз. режиме, будет прерыван. НАЗАЧЕНИЕ без этого аппарата нет мультепрогр. режима. Например команды загрузки значений на регистры памяти, привилегир. команды должны быть и команды обращения к разным внешн. устройствам, чтобы не получилось, что сразу несколько программ одновременно работаютс этим устр. При необходим. обратится к нужному внешн. устр., программа обращает к служебн. прогр. ОС, которые осуществляет доступ к этому внешн. устройству работая в привилег. режиме. Переключение из обычного режима работы в привилег. происходит автоматич.(при обработки процессором сигнала прерыван., тем самым процедуру обработки прерыв. сразу в привилег., выход же из привилег. режима в обычный выполняется при выполнении обычной (не привилег.) команды. |
Способы повышения эффективности работы процессора. 1)расслоение ОП – это реализация оперативной памяти в виде неск параллельно работающих блоков – банков памяти. При этом байты памяти с послед адресами располагаются в послед банках памяти. Расслоение необх, чтобы иметь возможность за1 обращение памяти, обмениваться не 1, а сразу неск байтами, след, за 1 обращение памяти можно прочитать сразу несколько команд или данных, раполож в послед байтах памяти, след, повышать скорость работы ЦП с памятью. 2)Кэш-память – невидимая для прогера быстрая неадресуемая память относительно малого объёма. Используется для ускорения работы ЦП с ОП. Идея: прога в каждый данный момент времени работает только с какой-то частью ОП, след, с большой вероятностью она обратиться к этим же ячейкам. Пусть ЦП потребовалась ячейка с адресом А. Тогда содержимое этой ячейки вместе группой соседних ячеек переписывается в КЭШ, и только затем нужное слово считывается из КЭШа в ЦП. Если процессору снова потребуется какая-то ячейка, то он сначала проверит нет ли ее в КЭШе. Если есть, то возьмет ее от туда, если нет – снова прочитает ее в КЭШ вместе с соседними ячейками. Имеет место замедление с ОП, т к обращается к 1 яч, а считывается целая группа яч. Но если при этом поддерживается расслоение памяти на м банков, то при паралл считыв в КЭШ сразу м соседних ячеек потерь времени почти не будет. | |
Аппарат реакц(аппарат действие)-выполняется ЦП при поступлении сигнала прерывании: 1)завершить выполн тек команды; если данное прерыв запрещено(замаскир) , то перейти к выполнен след команды программы, иначе ; 2)сохран в стеке миним инф-ю (т. е. тек значение регистров flags, cs, ip) о прерв пр-ме(это т. н. малое упрятывание информации); 3) устр-ть запрет прерывания от внешн устройств( в ЦП установить флаг IP=0) для того, чтобы в нач момент выполнен процедуры обработчика прерывания она не была прерв другими внешн сигналами прерывания; 4)перейти на проц обработки прерывание(по его номеру n) . Адрес процед обработчика определяется автоматически по т. н. вектору прерывания Вектор прерывания - массив из 256 дв. слов в начале ОП, каждый эл-нт которого содержит дальн адр процедуры обработк прерывания. Автоматически IP:=<4*N>, CS:=<4*n+2> /=> управление передается на процедуру с этим адресом. Програмная реакция – на сигнал прерывания, выполн-я проц.-обработчиком прерывания: 1)Миним прогр реакция (выполняется в режиме запрета прерыв от внешн устр-тв)-запомнить в спец инф. поле важн инф-ю(т. е. контекст) о прерыв прогр(напр. Все адресн регистры), вспомнить самое необходимые действ, связи с проц событием; 2) Разрешить прерыв от внешн устр-тв путем выполнения команды SII : IF:=1; 3)Полная прогр реакция на прерыв и вып-ть все дальн. Действия по обработ прерыв; 4)Восстанов из инф-го поля зн-ния все регистров прерв. ранее программ(кроме flags, cs, ip); 5)Выполнить ком. Возвр из прерывания iret; из стека IP, из стека CS, из стека flags | 2) увеличение времени выполнения программы за счёт: а) необходимости использовать служебные процедуры динамического загрузчика (которые выполняют загрузку и динамическое связывание модулей); б) необходимости загрузки и выгрузки процедур на рабочее поле, в процессе чего идет обмен с медленной внешней памятью. Переходы 1) Адрес перехода – адрес той команды, на которую надо немедленно передать управление. 2) Команда прямого перехода – если адрес перехода задается в виде метки (например, jmp L или jE L). 3) Команда косвенного перехода – если адрес перехода находится в ячейке памяти или регистре общего назначения (например, jmp AX, jmp word ptr A, jmp dword ptr B, где А – адрес слова, В – адрес двойного слова). 4) Близкий (внутрисегментный) переход – переход в пределах текущего сегмента команд (изменение лишь регистра IP, без CS). 5) Дальний (межсегментный переход) – передача управления в другой сегмент команд (изменение регистровой пары CS:IP). 6) Относительный переход – знаковое сложение IP с некоторой величиной, которая задается в команде перехода (все близкие прямые переходы - относительные). 7) Абсолютный переход – присвоение регистру IP [и CS] нового значение (все дальние прямые переходы и все косвенные переходы - абсолютные). |
Механизм защиты памяти - механизм, обеспечивающий безопасность одновременного нахождения в ОП нескольких независимых программ. Защита памяти гарантирует, что одна программа не сможет случайно или предумышленно обратиться в память другой программы( по записи или чтению). Реализация: в ЦП имеются два внутренних регистра защиты памяти, которые обознач. условно Каково назначение механизма защиты памяти? Без него невозможна работа компьютера в мультипрогр. режиме. | |
3)Конвейер команд – особенность архитектуры ЦП, когда он сост из неск блоков, кажд из кот может выполнять 1 из шагов по выполнению команды. Возможные случаи сбоя в работе конвей команд: а)сбой по данным. Результат 1 ком явл операндом послед команды. В этом случае 2ая ком ждет, пока 1ая не запишет свой результат. б)сбой по управлению. При выполнении команды перех. В этом случае конвей сбрасывается(очищается) и на вход конвейера подается команда по адресу перехода. в)сбой по аппаратуре. Когда 2 команды одновременно пытаются получить доступ к устр-ву, кот в каждый момент может выполнять только 1 запрос. В этом случае доступ к устр-ву получает ком, попавшая в конв раньше, а 2ая ждет, пропуская свой этап выполнения(например, при рассорении памяти разрешен одноврем доступ к разным банкам памяти, но не одноврем доступ к 1 и тому же банку) |
Принцип Фон Неймана
НЕ нашли? Не то? Что вы ищете?



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