Иерархия памяти - недоразумения
10.05.2019
Как один из наиболее естественных количественных аспектов компьютерной архитектуры, иерархия памяти может показаться наименее уязвимой в плане заблуждений и недоразумений. Мало того, что существует масса весьма распространенных заблуждений и недоразумений, так еще и некоторые из них приводят к существенным негативным последствиям. Начнем с заблуждения, в котором довольно часто пребывают студенты при решении упражнений и сдаче экзаменов.
Недоразумение. При имитации кэш-памяти упускается из виду байтовая адресация или размер блока кэш-памяти.
При имитации кэш-памяти (с использованием или без использования компьютера) нужно убедиться в том, что при определении, на какой блок кэш-памяти отображается заданный адрес, в расчет берется эффект байтовой адресации и факт наличия в блоке нескольких слов. Например, если мы располагаем 32-разрядной кэш памятью с непосредственным отображением и размером блока, равном 4 байтам, байтовый адрес 36 отображается на блок 1 кэш-памяти, поскольку байтовый адрес 36 — это блоковый адрес 9, а (9 mod 8) - 1. С другой стороны, если адрес 36 это адрес слова, то тогда он отображается на блок (36 mod 8) 4. Убедитесь в том, что в задаче четко определена база адреса. В эту ловушку попадаются многие люди, включая авторов (при первоначальных прикидках) и преподавателей, забывших о том, какие адреса подразумеваются в словах, байтах или номерах блоков. Не забудьте об этом заблуждении при решении упражнений.
Недоразумение. Игнорирование поведения системы памяти при написании программ или при генерации кода в компиляторе. Хотите заняться разведением пернатых? купить инкубационное яйцо породистых кур стоит в таком случае.
При запуске с входными данными, представленными матрицами 500 * 500 с двойной точностью, время выполнения процессором показанного выше цикла на МIPS-процессоре, имеющем 1-мегабайтную вторичную кэш-память, будет примерно вдвое больше по сравнению с тем, когда порядок цикла будет изменен на k, J, 1 (то есть і станет самым внутренним циклом)! Единственное отличие состоит в том, как программа обращается к памяти и стремится получить эффект от иерархии памяти. Дальнейшая оптимизация компилятора с использованием технологии подзазванном объединение в блоки может отразиться на времени выполнения, которое уменьшится для этого кода еще в четыре раза!
Комментарии посетителей:
Ваш комментарий:
|