
- •Билет №1 Структура эвм общего назначения. Алу, уу
- •Арифметико-логические устройства.
- •Устройства управления.
- •Описание сегментного механизма
- •Билет №2 Структура эвм общего назначения. Risc и cisc процессоры. Форматы машинных команд.
- •Risc и cisc процессоры.
- •Форматы машинных команд.
- •Описание страничного механизма.
- •Билет №3 Структура эвм общего назначения. Способы адресации. Стековая адресация. Виды стеков.
- •Способы адресации.
- •Стековая адресация. Виды стеков.
- •Особенности страничного механизма в Pentium и в р6.
- •Билет №4 Микропроцессор вм86. Назначение входов/выходов вм86 в минимальном/максимальном режиме.
- •Назначение входов/выходов вм86 в максимальном режиме.
- •Общие сведения о механизмах адресации в защищенном режиме.
- •Билет №5 Внутренняя архитектура мп вм86. Программная модель мп вм86.
- •Программная модель мп вм86.
- •Форматы системных таблиц защищенного режима. Системные таблицы
- •Билет №6 мп вм86. Сегментация памяти. Организация оперативной памяти.
- •Общие сведения о 32х разрядных процессорах фирмы Intel. Tss, ldt, gdt. Селектор,дескриптор. Билет №7 мп вм86. Организация адресного пространства портов ву.
- •Общие сведения о 32х разрядных процессорах фирмы Intel. Режимы работы, Режимы работы 32 разрядного процессора.
- •Билет №8 Программируемый адаптер к1810вв55 (i8255)
- •Битовая карта ввода вывода
- •Билет 9 Программируемый таймер к1810ви54 (i8254)
- •Механизм перехода в защищенном режиме
- •Билет №10 Общие сведения об обработке прерываний.
- •Формат машинной команды 32х разрядного процессора.
- •Билет №11 Система прерываний вм86.
- •Внутренняя кэш-память.
- •Билет №12 Контроллер прерываний к1810вн59 (i8259). Настройка вн59.
- •Сведения о внутренней организации 32-х разрядных процессорах, (состав, назначение).
- •Билет №13 Общие сведения о прямом доступе к памяти.
- •Буфер tlb. Кэш-память страниц.
- •Билет 14 Контроллер прямого доступа к памяти к1810вт37 (i8237).
- •Программирование кпдп вт37
- •Вопрос №2
- •Билет 15
- •1. Организация процессорного модуля вм86.
- •2.21 Организация процессорного модуля вм86.
- •Программная модель 32-разрядного мп.
- •Программная модель 32 разрядного мп
- •Билет 16 Слабосвязанная конфигурация.
- •2.23. Слабо связанные конфигурации.
- •Форматы таблиц gdt, ldt и idt.
- •3.4. Системные таблицы
- •Билет 17 Арбитр шин к1810вб89 (i8289).
- •2.24. Арбитр шин к1810вб89 (i8289).
- •Формат дескриптора.
- •3.15 Формат дескриптора.
- •Билет №18 Сильно связанные конфигурации на примере совместной работы мп86 и арифметического сопроцессора вм87.
- •Форматы элементов pte и pde.
- •3.8. Формат элемента pte (pde).
- •Билет №19 Формат машинных команд мп вм86.
- •Механизм переключения задач. Формат сегмента tss
- •Билет №20 мп вм86. Сегментация памяти. Организация оперативной памяти.
- •Сегментация памяти.
- •2.7 Организация оперативной памяти.
- •Общие сведения о кэш-памяти.
- •Внутренняя кэш-память
- •Сведения о кэшах в процессорах фирмы Intel.
2.7 Организация оперативной памяти.
С точки зрения программиста оперативная память для ВМ86 представляет собой линейный массив ячеек форматом 1 байт каждая, с адресами от 00000h до fffffh (рис. 8).
Информация, располагаемая в ОП, может иметь следующие форматы:
байт;
слово (2 байта);
двойное слово (4 байта).
При этом адресом слова или двойного слова считается адрес его младшего байта.
Физически память для МП86 организуется иначе. Память реализуется в виде 2-х банков: старшего и младшего. В младший банк входят все ячейки с четными адресами, в старший – все ячейки с нечетными адресами. Обращение к тому или иному банку (или к обоим сразу) определяется комбинацией сигналов на выходах BHE и A0 МП. Подключение банков к шине данных показано на рис. 9.
Банк подключается к ШД, когда на его вход CS приходит активный (нулевой) сигнал. При этом младший банк подключается к младшей половине ШД, а старший – к старшей половине ШД. Такая организация позволяет производить обмен между МП и ОП как по всей ШД, так и по отдельным ее половинам. Подобная архитектура приводит к следующему правилу: слова желательно располагать в памяти по четным адресам. Если слово располагается в ОП по четному адресу, то оно будет передаваться по ШД за один цикл шины, если же по нечетному – за два цикла шины. По той же причине двойные слова также желательно располагать по четным адресам.
Рис. 8.
Общие сведения о кэш-памяти.
Рассмотренный в предыдущем разделе буфер TLB представляет из себя весьма специфический вид кэш-памяти. Во- первых, в нем храняться только адреса страниц, во-вторых, информация в кэше модифицируется только со стороны ОП (когда при кэш промахе в строку из ОП загружается новый начальный адрес страницы).
Стандартная же кэш-память предназначена для хранения кодов и данных. При этом модификация информации в кэше может происходить как со стороны ОП (кэш-промах при чтении), так и со стороны процессора (кэш-попадание при записи).
Б
ыстродействующие
микросхемы ОЗУ стоят весьма дорого, а
дешевые микросхемы ОЗУ работают
значительно медленнее процессора.
Возникает противоречие между стоимостью
системы и ее быстродействием. Для решения
этой проблемы в систему вводится
кэш-память. Она представляет из себя
высоко быстродействующее ОЗУ сравнительно
небольшого объема и располагается в
системе между МП и ОП (рис. 75).
Рис. 75
Использование кэш-памяти базируется на принципе локальности программ и данных. То есть соседние команды программы располагаются, как правило, в соседних ячейках памяти. Аналогично и данные, к которым обращается МП по ходу выполнения программы, обычно занимают некоторую локальную область ОП. Пусть нам понадобилось прочитать байт, расположенный в ячейке ОП с адресом А. Давайте прочтем помимо байта А целый блок информации, включающий в себя нужный нам байт, и поместим этот блок в кэш-память. Велика вероятность того, что при следующем обращении за данными нужная нам информация уже окажется в кэш-памяти. Размер считываемого в кэш-память блока часто называют шириной выборки.
Пусть процессор выполняет команду mov ax,[bx]. При кэш –попадании он просто возьмет нужную информацию из кэша. При кэш-промахе в одну из строк кэша попадет блок информации из ОП.
Пусть выполняется команда mov [bx],ax. При кэш-промахе процессор запишет информацию в ОП (в Р6 плюс к этому обновится и некоторая строка кэша). При кэш-попадании процессор запишет информацию в кэш (вопрос об изменении в такой ситуации информации в ОП рассмотрим несколько позже).
Важнейшей характеристикой любой кэш-памяти является процент кэш-попаданий, который она обеспечивает. Дело в том что кэш-память дает выигрыш в быстродействии только при кэш-попадании, а при кэш-промахе даже замедляет работу системы (сначала МП потратит время на поиск данных в кэш-памяти, а затем будет вынужден обычным образом обратиться к ОП ). Процент попаданий зависит от многих факторов. Перечислим здесь основные из них:
- Объем кэш-памяти. Очевидно что чем он выше, тем выше процент попаданий. Но при этом растет стоимость кэш-памяти. Современная кэш-память уже имеет объем, измеряемый в мегабайтах.
Ширина выборки. Чем шире выборка, тем выше процент попаданий. Однако при большой ширине выборки трудно организовать быстрое считывание информации из ОП в кэш-память. Обычно ширина выборки берется от 4-х до 32-х байт и определяется в основном разрядностью шины данных.
Стратегия заполнения кэш-памяти.
Остановимся на последнем факторе подробнее. Любая кэш-память состоит из блока данных, разбитого на строки и блока тэгов ( смотри буфер TLB ). Формат строки блока данных совпадает с шириной выборки. В зависимости от стратегии заполнения различают три вида кэш-памятей.
Кэш-память с прямым отображением. В такой кэш-памяти любой считываемый из ОП блок информации может попасть только в одну конкретную строку кэш-памяти. Однако в эту строку может попасть (отобразиться) не только этот блок, но и ряд других блоков, имеющих в ОП конкретное месторасположение. Поясним структуру такой кэш-памяти рисунком 76.
Как видно из рисунка, кэш-память состоит из Х горизонталей. На каждой горизонтали располагается одна строка и один тэг. Сам принцип работы такой кэш-памяти аналогичен принципу работы рассмотренной выше кэш-памяти страниц. Разница заключается в том, что там любая информация могла попасть в любую из 4-х строк, расположенных на одной горизонтали, а здесь информация попадает только в конкретную строку (поскольку на горизонтали располагается всего одна строка). Достоинством кэш-памяти с прямым отображением являются малые аппаратурные затраты. В частности, просто реализуется схема сравнения, так как сравнение производится только с одним тэгом. Блок LRU вообще оказывается не нужен (не из чего выбирать!). Серьезным недостатком такой кэш-памяти является невысокий процент кэш-попаданий. Имеется еще ряд мелких, но неприятных недостатков, которые мы рассматривать не будем.
Рис. 76
П
олностью
ассоциативная кэш-память.
Здесь любой блок информации может
попасть в любую строку блока данных.
Поясним рисунком 77.
Рис. 77
Как видно из рисунка, здесь все строки, а соответственно и все тэги, располагаются на одной единственной горизонтали. Такая кэш-память обеспечивает (при прочих равных) наивысший процент кэш-попаданий, но требует при своей реализации грандиозных аппаратурных затрат. Чего стоит одна только схема сравнения, ведь сравнение здесь ведется со всеми тэгами одновременно. На практике такой принцип построения применяется только для кэшей малого объема. Например, Intel использует этот принцип в буферах TLB для больших страниц, где блок данных состоит всего из двух (или четырех) строк.
Частично ассоциативная кэш-память. Это компромиссный вариант между полностью ассоциативной кэш-памятью и кэш-памятью с прямым отображением. Именно этот вариант и используется на практике. Здесь любой блок информации может попасть в любую из нескольких строк, расположенных на конкретной горизонтали, но не может попасть на другую горизонталь. Нетрудно видеть, что такую кэш-память мы уже подробно рассмотрели выше. Именно так реализована кэш-память страниц. Поэтому еще одного рисунка для этого варианта мы здесь приводить не будем. Отметим, что совсем не обязательно, чтобы на горизонтали располагалось именно четыре строки (4 way-set cache). Например, Intel использует кэши и с двумя строками на горизонтали (2 way-set).
Наличие кэш-памяти приводит как минимум к ряду проблем, связанных с согласованностью данных в различных памятях системы. Пусть какое-то ВУ использовав ПДП занесло в ОП новую информацию. При этом часть информации в кэш-памяти может оказаться устаревшей. Подобные ситуации должен отслеживать контроллер кэш-памяти. Обычно он в такой ситуации поступает наиболее просто - объявляет все строки кэш-памяти недостоверными и кэш-память начинает заполняться «с нуля». Вторая проблема связана с операцией записи в ОП. Пусть МП выполняет команду записи в ОП. При кэш-промахе проблемы не возникает - данные просто будут записаны в ОП (в Р6 при этом будет еще инициировано заполнение строки кэша). При кэш-попадании обновляется информация в кэш-памяти, а как быть с ОП !? Есть два варианта. Первый - сразу продублировать эту информацию в ОП. Это, так называемая, сквозная запись (write through). Однако при этом кэш-память не дает при записи никакого выигрыша в быстродействии. Второй вариант - отложить запись новой информации в ОП до той поры, когда это будет действительно необходимо (например, какое-то ВУ выдало запрос на ПДП для чтения информации из ОП). Это, так называемая, обратная запись (write back). Кэш с обратной записью обеспечивает большее быстродействие, но требует более сложного контроллера кэш-памяти. В МП 486 внутренняя кэш-память работает только со сквозной записью.
В современных вычислительных системах обычно используется сразу несколько кэшей:
Кэш первого уровня (L1 кэш) – кэш небольшого объема, встроенный в процессор;
Кэш второго уровня (L2) – кэш большого объема, обычно расположенный вне процессора.
Кроме того, начиная с Pentium, в системах аппаратно поддерживаются два и более процессоров. Поскольку каждый из этих процессоров имеет свои кэши, проблема согласованности информации в различных памятях системы серьезно обостряется. Поэтому, начиная с Pentium, для работы с кэшами применяется , так называемый, MESI протокол. Согласно этому протоколу любая строка любого кэша может находиться в одном из четырех состояний:
М (modified) – модифицирована. Строка находится только в этом кэше и ее содержимое изменено процессором, то есть такая же информация в ОП устарела;
Е (exclusive) – уникальная. Строка находится только в этом кэше и информация в ней совпадает с информацией в ОП;
S (shared) – разделяемая. Строка потенциально находится сразу в нескольких кэшах. Если процессор модифицирует информацию в такой строке, одновременно модифицируется такая же информация в ОП, а соответствующая информация в других кэшах объявляется недостоверной;
I (invalid) – недостоверная строка.