Организация внешней памяти
В ЦП i486 используется ОП с расслоение обращений на 16 байт. Поэтому при считывании строки за одно обращение к ОП и передачи первого слова строки в кэш-память последующие данные будут переданы за 3 такта. Таким образом, считывание и передача строки в кэш-память требует минимум 5 тактов (вместо 8). Отсюда, введение пакетных циклов шины позволяет сократить число обращений к ОП при выполнении процедур замещения строк, а, следовательно, повысить производительность ВС. Пакетные циклы могут применяться только, если считываемые данные выровнены по границе 16 байт при: выполнении процедур замещения строк, работе с массивами данных, при обработке строковых переменных и т.д. Пакетные циклы могут использоваться только на операциях чтения. Выигрыш в быстродействии при пакетных циклах шины достигается за счет сокращения обращений к ОП (расслоения обращений к ОП).
Следует заметить, что время доступа к ОП в реальных условиях составляет 5-6 тактов. Тогда ярко видно достоинство пакетных циклов. Например, время доступа к ОП составляет 5 тактов. Тогда непакетные циклы шины для выполнения замещения строки составят 5х4=20 тактов, а пакетный цикл шины 5+3=8 тактов.
Кроме того, компромиссным вариантом организации памяти ВС является использование внешней кэш-памяти, которая подключается к локальной шине ЦП и служит для расширения адресного пространства внутренней кэш-памяти и для сокращения количества обращений к медленной ОП. Такое подключение позволяет:
-
при сквозной записи во внутренней кэш-памяти выполнять запись во внешнюю кэш-память, освобождая ОП, например, для межпроцессорного обмена или ПДП;
-
при отложенной записи тоже самое, что не приведет к искажению достоверности данных;
-
при замещении строки параллельно записывать строку во внешнюю и внутреннюю кэш-память, если Авнешней кэш памяти;
-
при промахе обеспечивает выполнение процедуры замещения с внешней кэш-памятью без привлечения системной шины (Авнутренней кэш памяти, но внешней кэш памяти, а ОП может использоваться для организации ПДП, обмена между устройствами, процессорами и других целей.
Максимальный выигрыш в производительности внешняя кэш-память дает в мультипрограммных режимах работы, когда емкости внутренней кэш-памяти недостаточно для хранения строк программ и данных, находящихся в обработке и возникает ситуация частого выполнения процедуры замещения строк (возрастает число промахов). По сравнению с циклами шины без ожидания при использовании внешней кэш-памяти требуется значительно меньшее число обращений к ОП, так как при промахе большинство запросов будет удовлетворять внешняя кэш-памяти (5-6 тактов на замещение строки), плюс ЦП несколько разгружает системную шину для организации межпроцессорного обмена. В однопрограммном режиме работы внешняя кэш-память может дать выигрыш максимум до 5%, так как внутренняя кэш-память ЦП i486 удовлетворяет до 95% запросов.
Внешняя кэш-память (БИС i82485) построена на основе четырех модулей с частично-ассоциативным распределением общей емкость N=64, 128, 256 и 512 Кбайт Длина строки 16 байт. Отсюда, ФА делится на 3 поля: 4-разрядное поле С для указания номера байта в строке, k-разрядное поле b индекса группы из четырех строк и m-разрядное поле тегов [а]. ЧАЗУ состоит из четырех m-разрядных модулей памяти тегов и четырех 32-разрядных модулей памяти данных, а также и 7-разрядного модуля памяти бит достоверности и LRU состояний кандидатов на удаление (D/LRU) емкостью по N/4 ячеек для каждого модуля. В памяти D/LRU 4 бита отводятся для указания бит достоверности строк для каждого модуля ЧАЗУ и 3 бита для хранения кода LRU состояния. ЧАЗУ позволяет получить: а) максимальную емкость кэш-памяти за счет использования 4 одинаковых модулей, работающих параллельно; б) более высокое быстродействие, по сравнению с полностью ассоциативным ЗУ (ПАЗУ); в) позволяет выполнять чтение за 2-3 такта (ОП 5-6 тактов); г) сокращает число промахов, по сравнению с прямым распределением; д) сквозная запись выполняется за 2-3 такта (время доступа к внешней кэш памяти, а не за 5-6 тактов при записи в ОП.
Для внешней кэш-памяти используется стратегия обратной записи, а замещение по стратегии псевдо LRU стека. Стратегия псевдо LRU стека позволяет сократить число промахов. Обратная запись с одной стороны сокращает число обращений к ОП по операциям считывания из-за пространственной и временной локальности данных и команд, а с другой в сквозной записи нет необходимости, так как она уже реализована во внутренней кэш-памяти, а внешняя кэш-память имеет достаточно большую емкость и содержит все копии содержимого внутренней кэш-памяти и данных, используемых за достаточно большой промежуток времени.
Алгоритм работы с внешней кэш-памятью:
-
если Авнутренней кэш-памяти, но Авнешней кэш-памяти, то замещение строки выполняется из внешней кэш-памяти за 5-6 тактов;
-
если Авнутренней кэш-памяти и Авнешней кэш-памяти, то замещение строки выполняется из ОП за время пакетного кэшируемого цикла шины (5k тактов), а замещаемая строка параллельно записывается во внутреннюю и внешнюю кэш-память.
Процедура обновления ОП из внешней кэш-памяти выполняется только в двух ситуациях: при промахе при обращении к внешней и внутренней кэш-памяти, когда все биты достоверности строк внешней кэш-памяти установлены в "1" (ситуация возникает крайне редко) и при выполнении "выгрузки" содержимого внешней кэш-памяти в ОП при завершении решения заданий или перезагрузке ОС.
Следует отметить, что в ПЭВМ в мультипрограммном режиме работы в некоторых применениях внешняя кэш-память обеспечивает рост производительности менее 5%, в большинстве применений 10-15%, а в небольшом числе применений даже до 40%. Поэтому в ПЭВМ внешняя кэш-память используется редко.
В таблице приведены данные о процентном соотношении операций записи, чтения и опережающей выборки для процессора без кэш-памятей и с внутренней и внешней кэш-памятью.
Операция |
Без кэш-памяти |
С кэш-памятью |
Считывание |
42% |
8% |
Опережающая выборка |
22% |
15% |
Запись |
36% |
77% |
Выводы: За счет использования кэш-памяти:
Число обращений к ОП при считывание сократилось в 5 раз за счет;
-
Использования сквозной записи, так как замещение выполняется строками и при последующих обращениях к данным, принадлежащим строке, не требуется обращение к внешней кэш-памяти и ОП. Процедура обновления внешней кэш-памяти выполняется словами, а не строками по сравнению с обратной записью.
-
Введения пакетируемых циклов шины (одно обращение к ОП вместо четырех).
Опережающая выборка команд (Авнутренней кэш-памяти) выполняется из кэш-памяти и записывается в ОК строкой в 16 байт (4 слова) за один такт. Кроме того, циклические участки программы, часто используемые подпрограммы в ОК поступают не из ОП, а из кэш-памяти (внутренней или внешней). Поэтому % не велик из-за промахов.
Число записей возросло в 2 раза за счет реализации стратегии обратной записи во внешней кэш-памяти, так как а) при промахе обновление ОП выполняется строками, а не словами и б) при завершении выполнения заданий или переключении задач выполняется процедура "выгрузки" данных из внешней кэш-памяти в ОП.
При использовании только внутренней кэш-памяти число записей не изменяется.
Использование сквозной записи во внешней кэш-памяти приведет к перегрузке по пропускной способности системной шины, что в мультипрограммных режимах работы приведет к снижению общей производительности ВС и арбитража СШ.
Средняя производительность ЦП i486 составляет 1,95 такта вместо 1 такта в идеальном случае за счет:
-
нарушения естественного порядка выполнения команд (БП, УП, CALL, INT, аппаратные прерывания);
-
нарушения работы конвейера (простоев);
-
выполнения процедур замещения кэш-памяти;
-
конфликтных ситуаций по доступу к памяти.
В ЦП i386 (4,919 такта) отсутствовала кэш-память, сопроцессор подключался к СШ, что предусматривает последовательный обмен по магистрали данных словами (32 бита), в малой степени использован принцип многошинной организации (только внешние шины).
Таким образом, существенное повышение производительности ЦП i486 достигнуто за счет:
-
применения конвейерного принципа выполнения команд и операций в УЦА и УПЗ (большинство команд выполняются за один такт);
-
введение внутренней кэш-памяти сокращает:
-
время доступа к памяти;
-
число обращений к системной шине и ОП:
-
сокращается число считываний из ОП;
-
появилась возможность организации опережающей (предвыборки) выборки команд;
-
введение очереди команд с буфером на две строки;
-
использование в ОК принципа обхода внутренней кэш-памяти при пополнении очереди команд;
-
Организации ОП;
-
расслоение обращений;
-
введение пакетируемых кэшируемых и некэшируемых циклов шины.
-
Организации внутренней кэш-памяти;
-
сквозная запись;
-
расслоение обращений с параллельным доступом в 16 байт к кэш-памяти и ОК;
-
многопортовая кэш-память;
-
использование стратегии замещения псевдо LRU стека.
-
Возможность подключения дополнительной внешней кэш-памяти для мультипрограммных режимов работы.