кэш и промахи
От: Аноним  
Дата: 30.12.09 14:24
Оценка:
А можно ли в теории создать такую программу, чтобы она
на процессоре с кэшем для ОЗУ работала медленее,
чем на том же самом процессоре без кэша?

Т.е. в теории кэши допускают работу со скоростью >= скорости памяти,
или при нетипичных нагрузках может быть и '<'?
Re: кэш и промахи
От: omgwtf  
Дата: 30.12.09 15:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А можно ли в теории создать такую программу, чтобы она

А>на процессоре с кэшем для ОЗУ работала медленее,
А>чем на том же самом процессоре без кэша?

А>Т.е. в теории кэши допускают работу со скоростью >= скорости памяти,

А>или при нетипичных нагрузках может быть и '<'?

Кэш по определению предназначен для того чтобы скорость была > скорости памяти. Алсо, почитай мануалы к процам.
Re: кэш и промахи
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 30.12.09 15:45
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>А можно ли в теории создать такую программу, чтобы она

А>на процессоре с кэшем для ОЗУ работала медленее,
А>чем на том же самом процессоре без кэша?

Кэш заполняется/сбрасывается параллельно работе процессора, никоим образом его не задерживая. То есть, ускорить работу может, замедлить — нет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: кэш и промахи
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.12.09 15:55
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Кэш заполняется/сбрасывается параллельно работе процессора, никоим образом его не задерживая. То есть, ускорить работу может, замедлить — нет.


Если cache line шире, чем шина данных, к которой припаяна память, то вытаскивать целую cache line ради одного байта может быть невыгодно.

Потом, write back кэш может заняться write как раз в тот момент, когда программе очень надо read, да нету свободного cache line.
Re[3]: кэш и промахи
От: Аноним  
Дата: 30.12.09 16:43
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Если cache line шире, чем шина данных, к которой припаяна память, то вытаскивать целую cache line ради одного байта может быть невыгодно.


примерно об этом и шла речь,
конктекст был такой:
32 битный процессор
за раз из памяти можно считать 64 бита,
в линии кэша 16 32 битных слов,

но я подумал может такие проблемы решают какими-нибудь средствами,
например сначала считывают нужное слово, а потом дочитывают остальную линейку
Re[4]: кэш и промахи
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.12.09 17:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>примерно об этом и шла речь,

А>конктекст был такой:
А>32 битный процессор
А>за раз из памяти можно считать 64 бита,
А>в линии кэша 16 32 битных слов,

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

А>но я подумал может такие проблемы решают какими-нибудь средствами,

А>например сначала считывают нужное слово, а потом дочитывают остальную линейку

Нет, на самом деле скорее эти проблемы являются решением фундаментальных проблем, присущих самой памяти — см. выше
Re[5]: кэш и промахи
От: Аноним  
Дата: 02.01.10 14:36
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, Аноним, Вы писали:


А>>примерно об этом и шла речь,

А>>конктекст был такой:
А>>32 битный процессор
А>>за раз из памяти можно считать 64 бита,
А>>в линии кэша 16 32 битных слов,

Pzz>Вы не думайте только, что высосать из такой памяти целый кеш-лайн аж в 8 раз дороже, чем высосать один байт. На самом деле, современная память долго запрягает да быстро едет, в том смысле, что при последовательном чтении первого слова приходится ждать в несколько раз дольше, чем каждого последующего.


согласно

http://udrepper.livejournal.com/19557.html

процессор может запросить линейку кеша в разном порядке,
а вот если ее в определенном порядке ждать, то для современного
процессора с большим line cache size даже с учетом того что последовательный
доступ к DRAM быстрыый все равно слишком медленно.
Re[5]: кэш и промахи
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 06.01.10 20:40
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Вы не думайте только, что высосать из такой памяти целый кеш-лайн аж в 8 раз дороже, чем высосать один байт. На самом деле, современная память долго запрягает да быстро едет, в том смысле, что при последовательном чтении первого слова приходится ждать в несколько раз дольше, чем каждого последующего.


Насколько я знаю, это не соответствует действительности, и любая операция чтения занимает одинаковое время, т.е. цикл чтения всегда одинаков вне зависимости от предыдущих чтений. На то она и Random Access Memory. Другой вопрос, что ширина шины памяти больше ширины слова проца (вроде бы сейчас она 128 бит), посему, при чтении линии может быть некоторый прирост производительности...
[КУ] оккупировала армия.
Re[6]: кэш и промахи
От: ononim  
Дата: 06.01.10 22:38
Оценка:
Pzz>>Вы не думайте только, что высосать из такой памяти целый кеш-лайн аж в 8 раз дороже, чем высосать один байт. На самом деле, современная память долго запрягает да быстро едет, в том смысле, что при последовательном чтении первого слова приходится ждать в несколько раз дольше, чем каждого последующего.
K>Насколько я знаю, это не соответствует действительности, и любая операция чтения занимает одинаковое время, т.е. цикл чтения всегда одинаков вне зависимости от предыдущих чтений. На то она и Random Access Memory.
Святая наивность Это давно неправда, обращали внимание на кучу разных таймингов у современной памяти?
Вот почитайте про них http://people.overclockers.ru/antinomy/record4
Как много веселых ребят, и все делают велосипед...
Re[6]: кэш и промахи
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.01.10 23:10
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Насколько я знаю, это не соответствует действительности, и любая операция чтения занимает одинаковое время, т.е. цикл чтения всегда одинаков вне зависимости от предыдущих чтений. На то она и Random Access Memory. Другой вопрос, что ширина шины памяти больше ширины слова проца (вроде бы сейчас она 128 бит), посему, при чтении линии может быть некоторый прирост производительности...


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

Если вкратце, физически она представляет собой большую, более-менее квадратную матрицу конденсаторов. Чтение происходит в два этапа: сначала из матрицы выбирается целая строка, а на следующем этапе из строки выбираются нужные биты. Так вот, строка довольно длинная, значительно длиннее ширины шины памяти (которая, к слову, не имеет прямого отношения к ширине слова процессора). Выборка строки — довольно длительная операция, а вот когда строка уже выбрана, читать ее последовательно, слово за словом, получается в несколько раз быстрее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.