![](/user_photo/70644__xXXN.png)
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd14x1.jpg)
Локальность данных
Временная локальность
Если мы обращались к некоторому участку памяти, то с большой вероятностью обратимся к нему и в ближайшем будущем, поскольку переменные в языках программирования используются неоднократно.
Следует сохранить прочитанные данные в кеш
14/
44
Пространственная локальность
Если мы обратились к некоторой области памяти, то, скорее всего, обратимся к данным в ближайшей окрестности.
Следует сохранить в кеш чуть больше данных, чем нужно в данный момент времени
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd15x1.jpg)
15/
44
Перемещение данных между кешем и ОЗУ
•Между ОЗУ и кешем данные перемещаются блоками, которые называются строками кеша.
•Размер строки кеша фиксирован и в подавляющем большинстве современных компьютеров составляет 64 байта
•Передача данных между процессором и DRAM производится блоками по 64 бита (8 байт), поэтому для заполнения строки кеша необходимо восемь передач
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd16x1.jpg)
16/
44
Выравнивание данных в памяти
• |
Большинство процессорных |
|
|
архитектур спроектировано |
|
|
с расчетом на то, что данные |
|
|
в памяти правильно выровнены. |
|
• |
Это означает, что начальный адрес |
|
|
данных кратен некоторому |
|
|
количеству байтов. |
|
• |
Для каждого типа определено свое |
|
|
выравнивание, а выравнивание |
|
|
структуры данных зависит от |
|
|
выравнивания ее полей. |
|
|
Обращение к невыровненным |
|
|
данным может оказаться |
|
|
в несколько раз медленнее, чем |
|
|
к выровненным. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
Москва, осень 2021 г. |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd17x1.jpg)
17/
44
Влияние кэша на выравнивание данных
Из-за строк кеша все данные, хранящиеся в памяти, выравниваются по границе, кратной 64 байтам. Поэтому в худшем случае для чтения двух соседних байтов придется заполнить две строки кеша, т. е. прочитать целых 128 байт. Они попадут в кеш, но если больше никаких данных из этой области памяти не нужно, то время будет потрачено зря.
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd18x1.jpg)
18/
44
Пример. Доступ к массиву размера 5000x5000
По строкам По столбцам
int[,] tab = new int[n, m]; for (int i = 0; i < n; ++i)
{for (int j = 0; j < m; ++j)
{
=1;tab[i, j]
} }
int[,] tab = new int[n, m]; for (int i = 0; i < n; ++i)
{for (int j = 0; j < m; ++j)
{
=1;tab[j, i]
} }
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd19x1.jpg)
19/
44
Результаты доступа к массивам по строкам и по столбцам
Доступ |
По |
По |
|
строкам |
столбцам |
||
|
|||
ПК |
52 мс |
401 мс |
|
Ноутбук |
127 мс |
413 мс |
|
Rasberry PI |
918 мс |
2001 мс |
|
2 |
|
|
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd20x1.jpg)
20/
44
Иерархический кеш
Операция |
Задержка |
Кеш L1 |
< 2,0 нс |
Кеш L2 |
4,8 нс |
Кеш L3 |
14,4 нс |
Основная память |
71,4 нс |
Жесткий диск |
150 000 нс |
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd21x1.jpg)
21/
44
Процессорный кеш в многоядерных процессорах
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd22x1.jpg)
Память
Памятью компьютера называется совокупность устройств для хранения программ, вводимой информации, промежуточных результатов и выходных данных.
ОЗУ – оперативное запоминающее устройство. Это энергозависимая память с произвольным доступом: RAM – Random Access Memory.
22/
44
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd23x1.jpg)
|
23/ |
|
44 |
Память |
|
Статическое оперативное |
Динамические оперативные |
запоминающее устройство (SRAM) |
запоминающие устройства (DRAM) |
Обеспечивает самый быстрый доступ, |
конструкция ячейки очень проста |
но весьма сложно и насчитывает от |
(гораздо меньше, чем в SRAM) и |
4 до 6 транзисторов на каждую |
состоит из одного транзистора и |
ячейку (для хранения одного бита). |
одного конденсатора. |
Данные в них сохраняются до тех |
Из-за утечки конденсатора ячейка |
пор, пока подается электропитание, |
нуждается в периодическом |
обновление не требуется. Из-за |
обновлении. Операции чтения и |
высокого быстродействия |
записи занимают время и нелинейны |
используется преимущественно |
из-за задержек конденсатора. |
в процессорных кешах. |
|
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd24x1.jpg)
24/
44
Внутреннее
устройство SDRAM, DDR, DDR2, DDR3, DDR4
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd25x1.jpg)
25/
44
Выравнивание данных
Во всех компьютерах память разделена на ячейки, которые имеют последовательные адреса. В настоящее время наиболее распространенный размер ячейки — 8 бит. Выравнивание адресов требуется довольно часто, поскольку при этом память работает наиболее эффективно.
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd26x1.jpg)
26/
44
Машинное слово
Пара подряд идущих байтов называется машинным словом (word). Слово располагается так, чтобы минимальный из адресов байтов был четным (это называется выравниванием – слово выравнивается на четный адрес).
Один из байтов старший, а другой младший.
Где расположен младший байт? В разных компьютерах по- разному. Если впереди, то говорят, что компьютер мелкоконечный (little-endian – этот термин ввел Джонатан Свифт в «Путешествие Гулливера»). Если сзади, то компьютер крупноконечный (big-endian).
Наши персональные компьютеры – мелкоконечные, и когда вы находите в памяти целое число, занимающее два байта, например, 515 = 020316, то в первом байте пишется 03, а во втором – 02.
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |
![](/html/70644/137/html_1O64l12yVW.CxNe/htmlconvd-hEBeNd27x1.jpg)
|
|
27/ |
Порядок следования байтов |
44 |
|
|
||
big-endian (от старшего к |
little-endian (от младшего к |
|
младшему) |
старшему) |
|
Старшие разряды хранятся в |
Старшие разряды хранятся в старших |
|
младших байтах |
байтах |
|
Москва, осень 2021 г. |
Разработка безопасного программного обеспечения | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики |