yuriy_dd: ↑
26.12.2025 14:46
незважаючи на ваші понти з асемблером - ви не знаєте прикладів такого простого - завдання загрузити по максимуму всі наявні контролери памяті, приклади коду:
Код: Виділити все
hash = hash * 33 ^ data[i] ^ data[i+1] ^ data[i+2] ^ data[i+3];
ну шо, поїхали розмотувати вашу пихату самовпевненість
- data[i..i+3] буде завантажений за 1 (одну), максимум 2(дві) операції тому що сучасні ЦП читають не байтами, а Cache Line (64 байти)
- в DDR5 дані вичитуюся рядками (Burst Length) в 64 байти, це було зроблено для співпадіння з Cache Line
- підчас вичитування даних лише один MC фізично може тримати Bank/ROW відкритим
- майже гарантовано спрацює prefetcher, який підвантажить і наступні байти в кеш для наступних викликів
тож тут буде активним лише 1 MC
аналогічно для інших прикладів, окрім хіба що
Код: Виділити все
size = chunk->prev_size + chunk->size + next->size;
тут може бути 2 MC якщо next та chunk в різних ROW/Cache Line
Я дав відповідь на ваше питання. Тепер прошу коментарі по мому коду. Він насправді не простий. І я маю з ним проблему яку не можу вирішити. Ви зможете допомогти вирішити?
- це не відповідь а хаотичний grep по коду
- вочевидь без розуміння як коду, так і як з ним працює ЦП
- для мене цей код не простий, а примітивний
- можете не дякувати за безкоштовний лікбез
ну ви не вмієте читати, розуміти і шукати в темі. Але це не моя вина.
мені не цікаво, що ви писали іншим, головне те, що ви мені особисто постійно та бездоказово брешете про 50% як ... фанат? О це новина
