Game Programming Patterns / Паттерны программирования в играх: 5.1 Data Locality

← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Цель

Deo 21.08.14 в 18:35

0

Ускорить доступ к памяти при помощи кэширования обращений к процессору.

Deo 21.08.14 в 18:36

0

Мотивация

fragmentic 17.07.14 в 16:57

0

Нас обманывали.

Deo 21.08.14 в 18:58

0

Нам показывают графики где частота процессора растет каждый год, словно закон Мура не просто историческое наблюдение, а какое-то божественное правило.

Deo 21.08.14 в 18:38

0

Не пошевелив и пальцем, мы, ребята из ПО, видим как наши прораммы ускоряются на новом "железе".

Deo 21.08.14 в 18:40

0

Микросхемы становятся быстрее (хотя этот процесс замедлился)

Deo 21.08.14 в 18:42

0
+1

но владельцы заводов "железа" забывают сказать нам кое-что.

Deo 21.08.14 в 18:43

0

Конечно, мы можем обработать данные быстрее, чем когда-либо, но мы не можем их быстрее получить.

Deo 21.08.14 в 18:44

0

Частота процессора и памяти по сравнению со значениями в 1980г. Как видите, процессор "подрос" семимильными шагами, но память еле тащиться вслед за ним.

Deo 21.08.14 в 18:46

0

Для того, чтобы ваш супер-быстрый процессор смог "проломиться" сквозь массу вычислений, он должен загрузить данные из оперативной памяти в регистры.

Deo 21.08.14 в 18:51

0

Как видите, память не поспевает за увеличивающейся частотой процессоров.

Deo 21.08.14 в 18:52

0

Совсем не поспевает.

Deo 21.08.14 в 18:52

0

Сегодня, может потребоваться сотни циклов, чтобы получиь байт данных из ОЗУ.

Deo 21.08.14 в 18:54

0

Так если для большинства машинных команд нужны данные, и чтобы их получить, нужно выполнить сотни циклов, как же получается, что процессор не простаивает 99% времени в ожидании данных?

Deo 21.08.14 в 18:56

0

Вообще-то, он и правда простаивает изумительно большое количество времени в наши дни, но, все же, все не так уж плохо, как могло бы быть.

Deo 21.08.14 в 19:00

0

Оперативное Запоминующее Устройство назвали так потому, что в теории, можно получить доступ к любому его участку одинаково быстро.

Deo 21.08.14 в 19:03

0
+5

Вам не нужно беспокоиться о том, надо ли считывать последовательно, как, например, при работе с диском.

Deo 21.08.14 в 19:06

0

Теперь нужно.

Deo 21.08.14 в 19:09

0

Как мы увидим, доступ к ОЗУ по-разному "оперативен".

Deo 21.08.14 в 19:10

0

Склад данных.

Deo 21.08.14 в 19:10

0

Представьте, что вы - бухгалтер в небольшом офисе.

Deo 21.08.14 в 19:11

0

Ваша работа состоит в том, чтобы брать коробки с бумагами и "бухгалтерить" над ними, например, выдавать каждому листу номер.

Deo 21.08.14 в 19:12

0

Причем, вы должны это делать только с коробками, промаркированными с помощью загадочной бухгалтерской логики.

Deo 21.08.14 в 19:18

0

Наверное, мне не следует использовать в качестве аналогии работу, в которой я ничего не смыслю.

Deo 21.08.14 в 19:19

0

Благодаря упорной работе, естественной предрасположенности и стимулянтам, вы можете обработать целую коробку за минуту.

Deo 21.08.14 в 19:22

0

Вот тут и возникает небольшая проблемка.

Deo 21.08.14 в 19:22

0

Все эти коробки находятся на складе в разных зданиях.

Deo 21.08.14 в 19:24

0

Чтобы получить коробку, вам нужно попросить кладовщика вам ее принести.

Deo 21.08.14 в 19:26

0

Он идет, берет грузоподъемник и едет на нем между пролетами, пока не найдет нужную вам коробку.

Deo 21.08.14 в 19:27

0

И у него это занимает, кроме шуток, целый день.

Deo 21.08.14 в 19:28

0

В отличие от вас, ему статус "работника месяца" в ближайшее время не светит.

Deo 21.08.14 в 19:28

0

Значит, как бы быстро вы ни работали, вы получаете по коробке в день.

Deo 21.08.14 в 19:29

0

Остаток времени, вы просто сидите и думаете, как же вас занесло на такую отстойную работу.

Deo 21.08.14 в 19:30

0

Однажды, появляется группа промышленных инженеров.

Deo 21.08.14 в 19:31

0

Их работа состоит в увеличении эффективности операций - вроде ускорения конвеерной обработки.

Deo 21.08.14 в 19:34

0

Понаблюдав за вашей работой два дня, они заметили следующее:

Deo 21.08.14 в 19:35

0

Весьма часто, когда вы закончили одну коробку, следующая коробка лежит неподалеку на той же полке в складу.

Deo 21.08.14 в 19:36

0

Использовать грузоподъемник, чтобы достать одну единственную коробку - довольно тупо.

Deo 21.08.14 в 19:37

0

В углу вашего офиса есть немного свободного места.

Deo 21.08.14 в 19:59

0

"Принцип локальности" означает: "применяется там, где только что, что-то использовалось".

Deo 21.08.14 в 20:04

0
+2

Они применили умное решение.

Deo 21.08.14 в 20:06

0

Когда бы вы не попросили у кладовщика коробку, он хватает их на целую палету.

Deo 21.08.14 в 20:08

0

Он берет нужную вам коробку, а также еще несколько коробок рядом с ней.

Deo 21.08.14 в 20:08

0

Нужны ли они вам, он этого не знает (да его это и не волнует).

Deo 21.08.14 в 20:10

0
Минутку...

Следующая страница →