Цель работы изучение функционирования блока секторного буфера с признаковым обменом или сквозной записью.
Функционирование секторного буфера Для повышения производительности ЭВМ между "большой" памятью (оперативной, постоянной) и ЦП дополнительно используется сверхоперативная буферная память (БП), называемая кэш-памятью. Повышение производительности ЭВМ при использовании кэш-памяти достигается за счет того, что время доступа к БП значительно меньше времени доступа к "большой" памяти.
Уменьшение времени доступа к БП обеспечивается за счет уменьшения ее емкости по сравнению с большой памятью. В БП хранятся как программы, так и данные. Однако непосредственно из программы адресоваться к информации, хранимой в БП, нельзя. Функционирование двухуровневой системы памяти, включающей в себя БП и большую память, осуществляется следующим образом. По заданному адресу в команде определяется, хранится ли требуемая информация в БП. В том случае, если информация хранится в БП, то происходит работа с БП. В противном случае необходимо информацию перезаписать из "большой" памяти в БП, а затем происходит работа с БП.
Наибольшая производительность достигается в том случае, когда не требуется взаимодействия с "большой" памятью, а работа осуществляется на уровне БП.
В зависимости от способа отображения большой памяти на БП выделяют четыре способа построения БП: буферная память прямого соответствия, секторный буфер, ассоциативный буфер, группо-ассоциативный буфер. Ниже рассматривается функционирование секторного и группо-ассоциативного буфера, являющихся развитием буфера прямого соответствия и ассоциативного буфера соответственно.
Целью моделирования функционирования секторного и группо-ассоциативного буферов является изучение работы кэш-памяти. При этом для уменьшения сложности моделирования рассматривается упрощенный вариант организации большой и буферной памяти, включающий ограниченное число блоков и сегментов, начиная с адреса, равного нулю. В дальнейшем для определенности будем считать, что кэш-память используется между ОП и ЦП. Моделирование функционирования секторного буфера
Для организации функционирования ОП и секторного буфера все поле памяти и буфера разбивается на блоки равной величины, содержащие по L байтов. В свою очередь, блоки объединяются в зоны по N блоков. Зоны в ОП будем называть сегментами, а зоны в БП - секторами. Поскольку в реальных вычислительных системах емкость ОП составляет десятки и сотни мегабайт, а емкость БП определяется десятками и сотнями килобайт, то число сегментов С значительно превышает число секторов S. Любой из С сегментов ОП может быть помещен в любой из S секторов. Однако j- блок, j=(0, N-1), i-го сегмента ОП, i=(0,С-1), может быть помещен на место j-го блока к-го сектора БП, к=(0, S-1). Для указания номеров сегментов, которые присутствуют в БП, в каждом секторе используется специальный регистр номера присутствующего сегмента.
Число регистров номеров присутствующих сегментов равно S. Каждый блок в БП содержит дополнительный бит присутствия блока и бит изменения блока. Бит присутствия блока устанавливается равным 1, если данный блок содержится в БП, в противном случае бит присутствия равен 0. Бит изменения блока равен 1 в том случае, если содержимое в БП изменялось и, таким образом, стало отличным от содержимого, аналогичного блока в ОП.
Номер сегмента, номер блока и номер байта определяют отдельные группы разрядов исполнительного адреса. Номер сегмента определяют старшие ]log2(C)[ разрядов исполнительного адреса, где ]х[ означает наибольшее целое, большее х. Следующие ]lоg2(N)[ разрядов исполнительного адреса определяют номер блока внутри сегмента, а младшие ]log2(L)[ разрядов - номер байта внутри блока. Рассмотрим основные принципы функционирования секторного буфера. На основании старших ]log2(C)[ разрядов исполнительного адреса определяется номер сегмента. Этот номер сравнивается с содержимым регистра номера присутствующего сегмента в каждом секторе. Если в некотором секторе произошло совпадение номера сегмента и содержимого регистра номера присутствующего сегмента, то это означает, что сегмент находится в этом секторе. Далее на основании следующих ]log2(N)[ разрядов исполнительного адреса определяется номер блока. В секторе, который содержит адресуемый сегмент, по биту присутствия блока определяется, находится ли блок в БП. Если бит присутствия блока равен 1, то это означает, что адресуемый блок находится в БП и по адресу байта, который определяется младшими ]log2(L)[ разрядами исполнительного адреса, в зависимости от кода операции происходит чтение информации из ЦП в БП, или запись информации из ЦП в БП. Если же бит присутствия блока равен 0, то это означает, что адресуемый блок отсутствует в БП. В связи с этим блок переписывается из ОП в БП (старшие ]log2(C)[ разрядов исполнительного адреса определяют номер сегмента ОП, который содержит требуемый блок, а следующие ]log2(N)[ разрядов определяют номер адресуемого блока как в ОП, так и в БП). Найденный блок в ОП переписывается на соответствующее место в БП в тот сектор, который содержит адресуемый сегмент, а бит присутствия этого блока устанавливается в 1. Параллельно с перезаписью блока в БП, в случае операции чтения, происходит считывание информации в ЦП. В случае операции записи после занесения блока в БП записываются данные из ЦП в БП. Выше рассматривался случай нахождения адресуемого сегмента в БП. В том случае, если ни в одном секторе номер сегмента не совпал с номером регистра присутствующего сегмента, то это означает, что адресуемый сегмент отсутствует в БП. Для перезаписи сегмента в БП нужно один из сегментов, хранящихся в БП, вытеснить. Существуют различные алгоритмы определения номера сегмента, подлежащего вытеснению. LRU - вытесняется сегмент наиболее давно использовавшийся; FIFO - вытесняется сегмент, раньше других помещенный в буфер; LIFO - вытесняется сегмент, позже других поступивший в буфер.
На основании одного из принятых алгоритмов определяется номер сегмента, подлежащий вытеснению. При вытеснении сегмента могут использоваться различные дисциплины. Сначала рассмотрим дисциплину признакового обмена. Для каждого блока вытесняемого сегмента анализируется бит изменения блока. Для тех блоков, у которых бит изменения равен 1 , происходит перезапись блоков в ОП. Биты изменения сбрасываются в 0. После перезаписи блоков в ОП в регистре номера присутствующего сегмента устанавливается номер сегмента, который должен быть помещен в БП из ОП, а биты присутствия всех блоков сбрасываются в 0.
При вытеснении сегмента, кроме признакового регистрового обмена, в ряде ЭВМ используется сквозная запись, а также ряд других обменных дисциплин. При использовании сквозной записи запись данных в БП осуществляется одновременно с записью данных в ОП. Поэтому отпадает необходимость использовать биты изменения блоков. При сквозной записи, как и в случае признакового обмена, при вытеснении сегмента необходимо сбросить в 0 все биты присутствия блоков, а в регистр номера присутствующего сегмента поместить номер сегмента, записываемого в БП из ОП.
Буфер прямого соответствия является частным случаем секторного буфера, состоящего из одного сектора. Графическое изображение окна программы при выборе лабораторной работы «Секторный буфер (кэш-память)» приведено на рис. 49.
Рис. 49. Окно программы при выборе лабораторной работы «Секторный буфер (кэш-память)»
|