Влияет кэш память. Небольшое сравнение L3 кэша в играх и приложениях. Когда полезен большой объем кэша

Влияет кэш память. Небольшое сравнение L3 кэша в играх и приложениях. Когда полезен большой объем кэша

Хеллоу ребята Поговорим о процессоре, а если быть точнее то о его кэше. Кэш у процессора может быть разный, например у меня сейчас Pentium G3220 (1150 сокет), это современный проц и в нем 3 мб кэша. Но при этом у старой модели Pentium D965 (775 сокет) кэша 4 мб. Но при этом G3220 в несколько раз быстрее чем D965, это я к тому, что кэш это хорошо, но главное чтобы кэш был современный. Кэш-память у старых процов намного медленнее, чем у новых, учтите это.

Давайте поговорим о некоторых устройствах, от которых зависит быстродействие. Вот смотрите, возьмем жесткий диск, есть ли у него кэш? Да, есть, но он мал, хотя и немного влияет на производительность. Потом идет что? Потом идет оперативная память, все с чем работает программа или процессор, все это помещается в оперативку. Если нет данных в оперативке, то они считываются с жесткого диска, а это очень медленно. А вот оперативка уже очень быстрая, ее может быть достаточно много. Но оперативка быстрая по сравнению с жестким диском, для процессора она все таки не очень быстрая и поэтому у последнего есть еще свой кэш, который уже реактивно супер быстрый!

Кэш процессора на что влияет? Именно в этом кэше процессор хранит то, чем часто пользуется, ну то есть всякие там команды и инструкции. Соответственно чем его больше, тем лучше, но это не совсем так. Вот сколько у вас кэша? Если не знаете, то я еще покажу как это узнать, тут все просто. Ну так вот, смотрите какая интересная ситуация, опять вернемся к старым процам. Вроде бы если много кэша, то это хорошо. Но есть процессор Q9650 (775 сокет), у которого 12 мб кэша, но он и близко не дотягивает до современных моделей Core i5 а то и Core i3. В i5 кэша в да раза меньше, то есть просто 6 мб, а в i3 его еще меньше - всего 3 мб.

Я понимаю что вообще современные процы куда быстрее, чем старые. Но я не о том. Кеш кэшу рознь, в топовом Q9650 просто медленный кэш по сравнению с процами на современном сокете. Поэтому толку от тех 12 мб никакого нет. Это все я к тому, что не гонитесь за количеством, гонитесь за качеством. Ну вот так. Это все я вам написал на заметку, надеюсь что вам пригодится

Вот на этой картинке по простому указан принцип работы кэша:

А вот другая картинка, тут также указано еще одно устройство, это контроллер, который как раз говорит о том есть ли данные в кэша или нет:

Кэш-память супер быстрая. Я не настолько разбираюсь в процах, но самому было бы интересно узнать, вот если бы этого кэша было… 100 мб.. или даже 1 гб.. был бы процессор быстрее? Это конечно даже сейчас фантастика, но уже сейчас есть процы с огромным количеством кэша.. около 30 мб или больше.. Я не уверен в этом, но вроде бы эта кэш-память очень дорогая и ее вообще сложно засунуть в проц, я имею ввиду большой обьем

Ну а теперь давайте я покажу как узнать сколько кэша в процессоре. Если у вас Windows 10, то это отлично, ибо она умеет показывать все кэши, там ведь есть три уровня. Хотя вроде бы самый главный это третий уровень, он же и самый большой. Итак, смотрите, открываете диспетчер задач и идете в на вкладку Производительность и вот нам на вкладке ЦП вы можете увидеть инфу о кэше, вот она:

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

Но скажу вот по чесноку, что это не есть четкий способ посмотреть сколько кэша у проца. Я советую использовать утилиту CPU-Z, если вы думаете типа: да это прога, нада ставить и все такое, а ну его… То стойте! Эту программу используют крутые оверлокеры, которые разгоняют свои процы. Утилита при установке не создает кучу файлов и на самом деле установка это просто распаковка проги в Program Files, потом cpuz.exe можно куда угодно скопировать и запускать, работать будет! Просто запустили и все, она собрала инфу и вы смотрите! Скачать ее можно легко в интернете, благо она есть на каждом углу. Только смотрите, чтобы вирусов не хапанули.. Для этого качайте например на софт-портале.. Так и пишите в поиске CPU-Z софт портал. Работает CPU-Z почти на всех версиях винды, ну кроме самих древних…

А вообще можете скачать вот на этом сайте: cpuid.com, я просто честно говоря не знал о нем и привык качать с других сайтов!

Ну что, надеюсь что скачать вы ее сможете без проблем. Теперь запускаете и вот тут вам о процессоре все как на ладони. Вот я запустил CPU-Z и вот что она показала о моем Pentium G3220:

Там где я обвел рамочкой, вот там и отображается кэш. Что такое way, ну вот там написано 8-way, 12-way, ну вот что это я не знаю, уж простите. Но вот как видите тут четко видно не только кэш, но и другая инфа, частота, ядра (Cores) и потоки (Threads). Ну так вот, что еще интересно, так это то что тут показывает у вас один кэш или два. Ну вот у меня тут написано просто 3 MBytes, то есть у меня просто 3 мб кэша.

А вот например что касается топового Q9650, то там немного другая ситуация, хоть там и 12 мб кэша, но это по сути два блока по 6 мб и CPU-Z это определяет:

Тут кстати еще как видите есть разгон до 4 ГГц, это неплохо. Кстати такой разгон вполне может быть и на воздушном охлаждении. Но это уже совсем другая история…

Кстати еще что интересно, что в моделях на 775 сокете нет кэша третьего уровня L3… То есть там только L1 и L2.., а я не знал…

Так что вот такие вот дела. Надеюсь что все написал понятно. Еще раз повторю, не гонитесь вы за количеством. Вот я не очень жалею, но тем не менее.. Короче взял я и собрал себе комп на 1150 сокете. Ну думаю, все ништяк. Но как мне стало немного обидно, когда я узнал, что сокет 1151 вышел вот и что он стоит также, а то и чуть дешевле.. Но там реально быстрее процы уже идут.. Ну ладно. Я просто брал комп на века, но зато я обрадовался что моя плата, а это Asus Gryphon Z87 поддерживает процессоры на ядре Devil’s Canyon! Вот это был подарок, ведь раньше Intel заявляла что эти процессоры будут поддерживаться только чипсетом Z97, а я взял то блин Z87!

Короче вот такие дела

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

На главную! кэш процессор 30.07.2016

virtmachine.ru

Влияние кэш-памяти на производительность компьютера

Всем пользователям хорошо известны такие элементы компьютера, как процессор, отвечающий за обработку данных, а также оперативная память (ОЗУ или RAM), отвечающая за их хранение. Но далеко не все, наверное, знают, что существует и кэш-память процессора(Cache CPU), то есть оперативная память самого процессора (так называемая сверхоперативная память).

Функция кэш-памяти

В чем же состоит причина, которая побудила разработчиков компьютеров использовать специальную память для процессора? Разве возможностей ОЗУ для компьютера недостаточно?

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

Вообще говоря, существуют две основные технологии микросхем памяти – статическая память и динамическая память. Не углубляясь в подробности их устройства, скажем лишь, что статическая память, в отличие от динамической, не требует регенерации; кроме того, в статической памяти для одного бита информации используется 4-8 транзисторов, в то время как в динамической – 1-2 транзистора. Соответственно динамическая память гораздо дешевле статической, но в то же время и намного медленнее. В настоящее время микросхемы ОЗУ изготавливаются на основе динамической памяти.

Примерная эволюция соотношения скорости работы процессоров и ОЗУ:

Таким образом, если бы процессор брал все время информацию из оперативной памяти, то ему пришлось бы ждать медлительную динамическую память, и он все время бы простаивал. В том же случае, если бы в качестве ОЗУ использовалась статическая память, то стоимость компьютера возросла бы в несколько раз.

Именно поэтому был разработан разумный компромисс. Основная часть ОЗУ так и осталась динамической, в то время как у процессора появилась своя быстрая кэш-память, основанная на микросхемах статической памяти. Ее объем сравнительно невелик – например, объем кэш-памяти второго уровня составляет всего несколько мегабайт. Впрочем, тут стоить вспомнить о том, что вся оперативная память первых компьютеров IBM PC составляла меньше 1 МБ.

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

История кэш-памяти

Строго говоря, до того, как кэш-память перебралась на персоналки, она уже несколько десятилетий успешно использовалась в суперкомпьютерах.

Впервые кэш-память объемом всего в 16 КБ появилась в ПК на базе процессора i80386. На сегодняшний день современные процессоры используют различные уровни кэша, от первого (самый быстрый кэш самого маленького объема – как правило, 128 КБ) до третьего (самый медленный кэш самого большого объема – до десятков МБ).

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

Долгое время в процессорах существовали всего два уровня кэша, но в CPU Intel Itanium впервые появилась кэш-память третьего уровня, общая для всех ядер процессора. Существуют и разработки процессоров с четырехуровневым кэшем.

Архитектуры и принципы работы кэша

На сегодняшний день известны два основных типа организации кэш-памяти, которые берут свое начало от первых теоретических разработок в области кибернетики – принстонская и гарвардская архитектуры. Принстонская архитектура подразумевает единое пространство памяти для хранения данных и команд, а гарвардская – раздельное. Большинство процессоров персональных компьютеров линейки x86 использует раздельный тип кэш-памяти. Кроме того, в современных процессорах появился также третий тип кэш-памяти – так называемый буфер ассоциативной трансляции, предназначенный для ускорения преобразования адресов виртуальной памяти операционной системы в адреса физической памяти.

Упрощенно схему взаимодействия кэш-памяти и процессора можно описать следующим образом. Сначала происходит проверка наличия нужной процессору информации в самом быстром - кэше первого уровня, затем - в кэше второго уровня, и.т.д. Если же нужной информации в каком-либо уровне кэша не оказалось, то говорят об ошибке, или промахе кэша. Если информации в кэше нет вообще, то процессору приходится брать ее из ОЗУ или даже из внешней памяти (с жесткого диска).

Порядок поиска процессором информации в памяти:

Именно таким образом Процессор осуществляет поиск инфоромации

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

Схема организации взаимодействия ядра процессора, кэша и ОЗУ:


Кэш-контроллер является ключевым элементом связи процессора, ОЗУ и Кэш-памяти

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

Методы записи кэша

Существует два основных метода записи информации в кэш-память:

  1. Метод write-back (обратная запись) – запись данных производится сначала в кэш, а затем, при наступлении определенных условий, и в ОЗУ.
  2. Метод write-through (сквозная запись) – запись данных производится одновременно в ОЗУ и в кэш.

Архитектура ассоциативности кэш-памяти

Архитектура ассоциативности кэша определяет способ, при помощи которого данные из ОЗУ отображаются в кэше. Существуют следующие основные варианты архитектуры ассоциативности кэширования:

  1. Кэш с прямым отображением – определенный участок кэша отвечает за определенный участок ОЗУ
  2. Полностью ассоциативный кэш – любой участок кэша может ассоциироваться с любым участком ОЗУ
  3. Смешанный кэш (наборно-ассоциативный)

На различных уровнях кэша обычно могут использоваться различные архитектуры ассоциативности кэша. Кэширование с прямым отображением ОЗУ является самым быстрым вариантом кэширования, поэтому эта архитектура обычно используется для кэшей большого объема. В свою очередь, полностью ассоциативный кэш обладает меньшим количеством ошибок кэширования (промахов).

Заключение

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

biosgid.ru

Галерея эффектов кэшей процессоров

Почти все разработчики знают, что кэш процессора - это такая маленькая, но быстрая память, в которой хранятся данные из недавно посещённых областей памяти - определение краткое и довольно точное. Тем не менее, знание «скучных» подробностей относительно механизмов работы кэша необходимо для понимания факторов влияющих на производительность кода.

В этой статье мы рассмотрим ряд примеров иллюстрирующих различные особенности работы кэшей и их влияние на производительность. Примеры будут на C#, выбор языка и платформы не так сильно влияет на оценку производительности и конечные выводы. Естественно, в разумных пределах, если вы выберите язык, в котором чтение значения из массива равносильно обращению к хеш-таблице, никаких результатов пригодных к интерпретации вы не получите. Курсивом идут примечания переводчика.

Habracut - - -

Пример 1: доступ к памяти и производительность
Как вы думаете, насколько второй цикл быстрее первого? int arr = new int;

For (int i = 0; i // второй for (int i = 0; i Пример 2: влияние строк кэша Копнём глубже - попробуем другие значения шага, не только 1 и 16: for (int i = 0; i

Обратите внимание, при значениях шага от 1 до 16 время работы практически не изменяется. Но при значениях больше 16, время работы уменьшается примерно вдвое каждый раз когда мы увеличиваем шаг в два раза. Это не означает, что цикл каким-то магическим образом начинает работать быстрее, просто количество итераций при этом так же уменьшается. Ключевой момент - одинаковое время работы при значениях шага от 1 до 16.

Причина этого в том, что современные процессоры осуществляют доступ к памяти не побайтно, а небольшими блоками, которые называют строками кэша. Обычно размер строки составляет 64 байта. Когда вы читаете какое-либо значение из памяти, в кэш попадает как минимум одна строка кэша. Последующий доступ к какому-либо значению из этой строки происходит очень быстро. Из-за того, что 16 значений типа int занимают 64 байта, циклы с шагами от 1 до 16 обращаются к одинаковому количеству строк кэша, точнее говоря, ко всем строкам кэша массива. При шаге 32, обращение происходит к каждой второй строке, при шаге 64, к каждой четвёртой. Понимание этого очень важно для некоторых способов оптимизации. От места расположения данных в памяти зависит число обращений к ней. Например, из-за невыровненных данных может потребоваться два обращения к оперативной памяти, вместо одного. Как мы выяснили выше, скорость работы при этом будет в два раза ниже.

Пример 3: размеры кэшей первого и второго уровня (L1 и L2)
Современные процессоры, как правило, имеют два или три уровня кэшей, обычно их называют L1, L2 и L3. Для того, чтобы узнать размеры кэшей различных уровней, можно воспользоваться утилитой CoreInfo или функцией Windows API GetLogicalProcessorInfo. Оба способа так же предоставляют информацию о размере строки кэша для каждого уровня. На моей машине CoreInfo сообщает о кэшах данных L1 объёмом по 32 Кбайт, кэшах инструкций L1 объёмом по 32 Кбайт и кэшах данных L2 объёмом по 4 Мбайт. Каждое ядро имеет свои персональные кэши L1, кэши L2 общие для каждой пары ядер: Logical Processor to Cache Map: *--- Data Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64 *--- Instruction Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64 -*-- Data Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64 -*-- Instruction Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64 **-- Unified Cache 0, Level 2, 4 MB, Assoc 16, LineSize 64 --*- Data Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64 --*- Instruction Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64 ---* Data Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64 ---* Instruction Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64 --** Unified Cache 1, Level 2, 4 MB, Assoc 16, LineSize 64 Проверим эту информацию экспериментально. Для этого, пройдёмся по нашему массиву инкрементируя каждое 16-ое значение - простой способ изменить данные в каждой строке кэша. При достижении конца, возвращаемся к началу. Проверим различные размеры массива, мы должны увидеть падение производительности когда массив перестаёт помещаться в кэши разных уровней. Код такой: int steps = 64 * 1024 * 1024; // количество итераций int lengthMod = arr.Length - 1; // размер массива -- степень двойки

for (int i = 0; i {

// x & lengthMod = x % arr.Length, ибо степени двойки

Arr[(i * 16) & lengthMod]++; } Результаты тестов:

На моей машине заметны падения производительности после 32 Кбайт и 4 Мбайт - это и есть размеры кэшей L1 и L2.

Пример 4: параллелизм инструкций
Теперь давайте взглянем на кое-что другое. По вашему мнению, какой из этих двух циклов выполнится быстрее? int steps = 256 * 1024 * 1024; int a = new int;

For (int i = 0; i // второй for (int i = 0; i Пример 5: ассоциативность кэша Один из ключевых вопросов, на который необходимо дать ответ при проектировании кэша - могут ли данные из определённой области памяти храниться в любых ячейках кэша или только в некоторых из них. Три возможных решения:

  1. Кэш прямого отображения, данные каждой строки кэша в оперативной памяти хранятся только в одной заранее определённой ячейке кэша. Простейший способ вычисления отображения: индекс_строки_в_памяти % количество_ячеек_кэша. Две строки, отображённые на одну и ту же ячейку, не могут находится в кэше одновременно.
  2. N-входовый частично-ассоциативный кэш, каждая строка может храниться в N различных ячейках кэша. Например, в 16-входовом кэше строка может храниться в одной из 16-ти ячеек составляющих группу. Обычно, строки с равными младшими битами индексов разделяют одну группу.
  3. Полностью ассоциативный кэш, любая строка может быть сохранена в любую ячейку кэша. Решение эквивалентно хеш-таблице по своему поведению.
Кэши прямого отображения подвержены конфликтам, например, когда две строки соревнуются за одну ячейку, поочерёдно вытесняя друг-друга из кэша, эффективность очень низка. С другой стороны, полностью ассоциативные кэши, хотя и лишены этого недостатка, очень сложны и дороги в реализации. Частично-ассоциативные кэши - типичный компромисс между сложностью реализации и эффективностью. К примеру, на моей машине кэш L2 размером в 4 Мбайт является 16-входовым частично-ассоциативным кэшем. Вся оперативная память разделена на множества строк по младшим битам их индексов, строки из каждого множества соревнуются за одну группу из 16 ячеек кэша L2.

Так как кэш L2 имеет 65 536 ячеек (4 * 220 / 64) и каждая группа состоит из 16 ячеек, всего мы имеем 4 096 групп. Таким образом, младшие 12 битов индекса строки определяют к какой группе относится эта строка (212 = 4 096). В результате, строки с адресами кратными 262 144 (4 096 * 64) разделяют одну и ту же группу из 16-ти ячеек и соревнуются за место в ней.

Чтобы эффекты ассоциативности проявили себя, нам необходимо постоянно обращаться к большому количеству строк из одной группы, например, используя следующий код: public static long UpdateEveryKthByte(byte arr, int K) {

const int rep = 1024 * 1024; // количество итераций

Stopwatch sw = Stopwatch.StartNew();

For (int i = 0; i p += K; if (p >= arr.Length) p = 0; } sw.Stop();

return sw.ElapsedMilliseconds;

} Метод инкрементирует каждый K-ый элемент массива. По достижении конца, начинаем заново. После довольно большого количества итераций (220), останавливаемся. Я сделал прогоны для различных размеров массива и значений шага K. Результаты (синий - большое время работы, белый - маленькое):

Синим областям соответствуют те случаи, когда при постоянном изменении данных кэш не в состоянии вместить все требуемые данные одновременно. Яркий синий цвет говорит о времени работы порядка 80 мс, почти белый - 10 мс.

Разберёмся с синими областями:

  1. Почему появляются вертикальные линии? Вертикальные линии соответствуют значениям шага при которых осуществляется доступ к слишком большому числу строк (больше 16-ти) из одной группы. Для таких значений, 16-входовый кэш моей машины не может вместить все необходимые данные.

    Некоторые из плохих значений шага - степени двойки: 256 и 512. Для примера рассмотрим шаг 512 и массив в 8 Мбайт. При этом шаге, в массиве имеются 32 участка (8 * 220 / 262 144), которые ведут борьбу друг с другом за ячейки в 512-ти группах кэша (262 144 / 512). Участка 32, а ячеек в кэше под каждую группу только 16, поэтому места на всех не хватает.

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

  2. Почему вертикальные линии обрываются на границе в 4 Мбайт? При размере массива в 4 Мбайт или меньше, 16-входовый кэш ведёт себя так же как и полностью ассоциативный, то есть может вместить все данные массива без конфликтов. Имеется не более 16-ти областей ведущих борьбу за одну группу кэша (262 144 * 16 = 4 * 220 = 4 Мбайт).
  3. Почему слева вверху находится большой синий треугольник? Потому, что при маленьком шаге и большом массиве кэш не в состоянии уместить все необходимые данные. Степень ассоциативности кэша играет тут второстепенную роль, ограничение связано с размером кэша L2. Например, при размере массива в 16 Мбайт и шаге 128, мы обращаемся к каждому 128-му байту, таким образом, модифицируя каждую вторую строку кэша массива. Чтобы сохранить каждую вторую строку в кэше, необходим его объём в 8 Мбайт, но на моей машине есть только 4 Мбайт.

    Даже если бы кэш был полностью ассоциативным, это не позволило бы сохранить в нём 8 Мбайт данных. Заметьте, что в уже рассмотренном примере с шагом 512 и размером массива 8 Мбайт, нам необходим только 1 Мбайт кэша, чтобы сохранить все нужные данные, но это невозможно сделать из-за недостаточной ассоциативности кэша.

  4. Почему левая сторона треугольника постепенно набирает свою интенсивность? Максимум интенсивности приходится на значение шага в 64 байта, что равно размеру строки кэша. Как мы увидели в первом и во втором примере, последовательный доступ к одной и той же строке практически ничего не стоит. Скажем, при шаге в 16 байт, мы имеем четыре обращения к памяти по цене одного. Так как количество итераций равно в нашем тесте при любом значении шага, то более дешёвый шаг в результате даёт меньшее время работы.
Обнаруженные эффекты сохраняются и при больших значениях параметров:

Ассоциативность кэша - интересная штука, которая может проявить себя при определённых условиях. В отличие от остальных рассмотренных в этой статье проблем, она не является настолько серьёзной. Определённо, это не то, что требует постоянного внимания при написании программ.

Пример 6: ложное разделение кэша
На многоядерных машинах можно столкнуться с другой проблемой - согласование кэшей. Ядра процессора имеют частично или полностью раздельные кэши. На моей машине кэши L1 раздельны (как и обычно), так же имеются два кэша L2, общие для каждой пары ядер. Детали могут различаться, но в целом современные многоядерные процессоры имеют многоуровневые иерархические кэши. Причём самые быстрые, но и самые маленькие кэши, принадлежат индивидуальным ядрам.

Когда одно из ядер модифицирует значение в своём кэше, другие ядра больше не могут использовать старое значение. Значение в кэшах других ядер должно быть обновлено. Более того, должна быть обновлена полностью вся строка кэша, так как кэши оперируют данными на уровне строк.

Продемонстрируем эту проблему на следующем коде: private static int s_counter = new int;

private void UpdateCounter(int position)

{

for (int j = 0; j { s_counter = s_counter + 3; }

Если на своей четырёхядерной машине я вызову этот метод с параметрами 0, 1, 2, 3 одновременно из четырёх потоков, то время работы составит 4.3 секунды. Но если я вызову метод с параметрами 16, 32, 48, 64, то время работы составит только 0.28 секунды. Почему? В первом случае, все четыре значения, обрабатываемые потоками в каждый момент времени, с большой вероятностью попадают в одну строку кэша. Каждый раз когда одно ядро увеличивает очередное значение, оно помечает ячейки кэша, содержащие это значение в других ядрах, как невалидные. После этой операции, все остальные ядра должны будут закэшировать строку заново. Это делает механизм кэширования неработоспособным, убивая производительность.

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

Кэш L1 некоторых процессоров может осуществлять параллельный доступ к двум ячейкам, если они относятся к разным группам, но если они относятся к одной, только последовательно. Насколько мне известно, некоторые даже могут осуществлять параллельный доступ к разным четвертинкам одной ячейки.

Процессоры могут удивить вас хитрыми оптимизациями. Например, код из предыдущего примера про ложное разделение кэша не работает на моём домашнем компьютере так, как задумывалось - в простейших случаях процессор может оптимизировать работу и уменьшить негативные эффекты. Если код немного модифицировать, всё встаёт на свои места. Вот другой пример странных причуд железа: private static int A, B, C, D, E, F, G;

private static void Weirdness()

{

for (int i = 0; i { } } Если вместо подставить три разных варианта, можно получить следующие результаты:

Инкрементирование полей A, B, C, D занимает больше времени, чем инкрементирование полей A, C, E, G. Что ещё страннее, инкрементирование полей A и C занимает больше времени, чем полей A, C и E, G. Не знаю точно каковы причины этого, но возможно они связаны с банками памяти (да-да, с обычными трёхлитровыми сберегательными банками памяти, а не то, что вы подумали). Имеющих соображения на этот счёт, прошу высказываться в комментариях.

У меня на машине вышеописанного не наблюдается, тем не менее, иногда бывают аномально плохие результаты - скорее всего, планировщик задач вносит свои «коррективы».

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

Заключение
Надеюсь, что всё рассмотренное помогло вам понять устройство кэшей процессоров. Теперь вы можете использовать полученные знания на практике для оптимизации своего кода. * Source code was highlighted with Source Code Highlighter. Метки:

Речь идет не о наличности, а о кэш -памяти процессоров и не только. Из объема кэш -памяти торгаши сделали очередной коммерческий фетиш, в особенности с кэшем центральных процессоров и жестких дисков (у видеокарт он тоже есть – но до него пока не добрались). Итак, есть процессор ХХХ с кэшем L2 объемом 1Мб, и точно такой же процессор XYZ с кэшем объемом 2Мб. Угадайте какой лучше? Аа – вот не надо так сразу!

Кэш -память – это буфер, куда складывается то, что можно и/или нужно отложить на потом. Процессор выполняет работу и возникают ситуации, когда промежуточные данные нужно где-то сохранить. Ну конечно в кэше! – ведь он на порядки быстрее, чем оперативная память, т.к. он в самом кристалле процессора и обычно работает на той же частоте. А потом, через какое то время, эти данные он выудит обратно и будет снова их обрабатывать. Грубо говоря как сортировщик картошки на конвейере, который каждый раз, когда попадается что-то другое кроме картошки (морковка ) , бросает ее в ящик. А когда тот полон – встает и выносит его в соседнюю комнату. В этот момент конвейер стоит и наблюдается простой. Объем ящика и есть кэш в данной аналогии. И сколько его надо – 1Мб или 12? Понятно, что если его объем мал придется слишком много времени уделят выносу и будет простой, но с какого то объема его дальнейшее увеличение ничего не даст. Ну будет ящик у сортировщика на 1000кг морковки – да у него за всю смену столько ее не будет и от этого он НЕ СТАНЕТ В ДВА РАЗА БЫСТРЕЕ! Есть еще одна тонкость – большой кэш может вызывать увеличение задержек обращения к нему во-первых, а заодно повышается и вероятность возникновения ошибок в нем, например при разгоне – во-вторых. (о том КАК в этом случае определить стабильность/нестабильность процессора и выяснить что ошибка возникает именно в его кэше, протестировать L1 и L2 – можно прочесть тут.) В-третьих – кэш выжирает приличную площадь кристалла и транзисторный бюджет схемы процессора. То же самое касается и кэш памяти жестких дисков. И если архитектура процессора сильная – у него будет востребовано во многих приложениях 1024Кб кэша и более. Если у вас быстрый HDD – 16Мб или даже 32Мб уместны. Но никакие 64Мб кэша не сделают его быстрее, если это обрезок под названием грин версия (Green WD) с частотой оборотов 5900 вместо положеных 7200, пусть даже у последнего будет и 8Мб. Потом процессоры Intel и AMD по-разному используют этот кэш (вообще говоря AMD более эффективно и их процессоры часто комфортно довольствуются меньшими значениями). Вдобавок у Intel кэш общий, а вот у AMD он персональный у каждого ядра. Самый быстрый кэш L1 у процессоров AMD составляет по 64Кб на данные и инструкции, что вдвое больше, чем у Intel. Кэш третьего уровня L3 обычно присутствует у топовых процессоров наподобие AMD Phenom II 1055T X6 Socket AM3 2.8GHz или у конкурента в лице Intel Core i7-980X. Прежде всего большие объемы кэша любят игры. И кэш НЕ любят многие профессиональные приложения (см. Компьютер для рендеринга, видеомонтажа и профприложений). Точнее наиболее требовательные к нему вообще равнодушны. Но чего точно не стоит делать, так это выбирать процессор по объему кэша. Старенький Pentium 4 в последних своих проявлениях имел и по 2Мб кэша при частотах работы далеко за 3ГГц – сравните его производительность с дешевеньким двуядерничком Celeron E1***, работающим на частотах около 2ГГц. Он не оставит от старичка камня на камне. Более актуальный пример – высокочастотный двухъядерник E8600 стоимостью чуть не 200$ (видимо из-за 6Мб кэша) и Athlon II X4-620 2,6ГГц, у которого всего 2Мб. Это не мешает Атлону разделать конкурента под орех.

Как видно на графиках – ни в сложных программах, ни в требовательных к процессору играх никакой кэш не заменит дополнительных ядер. Athlon с 2Мб кэша (красный) легко побеждает Cor2Duo с 6Мб кэша даже при меньшей частота и чуть не вдвое меньшей стоимости. Так же многие забывают, что кэш присутствует в видеокартах, потому что в них, вообще говоря, тоже есть процессоры. Свежий пример видеокарта GTX460, где умудряются не только порезать шину и объем памяти (о чем покупатель догадается) – но и КЭШ шейдеров соответственно с 512Кб до 384Кб (о чем покупатель уже НЕ догадается). А это тоже добавит свой негативный вклад в производительность. Интересно еще будет выяснить зависимость производительности от объема кэша. Исследуем как быстро она растет с увеличением объема кэша на примере одного и того же процессора. Как известно процессоры серии E6*** , E4*** и E2*** отличаются только объемом кэша (по 4, 2 и 1 Мб соответственно). Работая на одинаковой частоте 2400МГц они показывают следующие результаты.

Как видно – результаты не слишком отличаются. Скажу больше – если бы участвовал процессор с объемом 6Мб – результат увеличился бы еще на чуть-чуть, т.к. процессоры достигают насыщения. А вот для моделей с 512Кб падение было бы ощутимым. Другими словами 2Мб даже в играх вполне достаточно. Резюмируя можно сделать такой вывод – кэш это хорошо, когда УЖЕ много всего остального. Наивно и глупо менять скорость оборотов винчестера или количество ядер процессора на объем кэша при равной стоимости, ибо даже самый емкий ящик для сортировки не заменит еще одного сортировщика Но есть и хорошие примеры.. Например Pentium Dual-Core в ранней ревизии по 65-нм процессу имел 1Мб кэша на два ядра (серия E2160 и подобные), а поздняя 45-нм ревизия серии E5200 и дальше имеет уже 2Мб при прочих равных условиях (а главное – ЦЕНЕ). Конечно же стоит выбирать именно последний.

Чипы на большинстве современных настольных компьютеров имеют четыре ядра, но производители микросхем уже объявили о планах перехода на шесть ядер, а для высокопроизводительных серверов и сегодня 16-ядерные процессоры далеко не редкость.

Чем больше ядер, тем больше проблема распределения памяти между всеми ядрами при одновременной совместной работе. С увеличением числа ядер всё больше выгодно минимизировать потери времени на управлении ядрами при обработке данных - ибо скорость обмена данными отстает от скорости работы процессора и обработки данных в памяти. Можно физически обратиться к чужому быстрому кэшу, а можно к своему медленному, но сэкономить на времени передаче данных. Задача усложняется тем, что запрашиваемые программами объемы памяти не четко соответствуют объемам кэш-памяти каждого типа.

Физически разместить максимально близко к процессору можно только очень ограниченный объем памяти - кэш процесcора уровня L1, объем которого крайне незначителен. Даниэль Санчес (Daniel Sanchez), По-Ан Цай (Po-An Tsai) и Натан Бэкмен (Nathan Beckmann) - исследователи из лаборатории компьютерных наук и искусственного интеллекта Массачусетского технологического института - научили компьютер конфигурировать разные виды своей памяти под гибко формируемую иерархию программ в реальном режиме времени. Новая система, названная Jenga, анализирует объемные потребности и частоту обращения программ к памяти и перераспределяет мощности каждого из 3 видов процессорного кэша в комбинациях обеспечивающих рост эффективности и экономии энергии.


Для начала исследователи протестировали рост производительности при комбинации статичной и динамической памяти в работе над программами для одноядерного процессора и получили первичную иерархию - когда какую комбинацию лучше применять. Из 2 видов памяти или из одного. Оценивались два параметра -задержка сигнала (латентность) и потребляемая энергия при работе каждой из программ. Примерно 40% программ стали работать хуже при комбинации видов памяти, остальные - лучше. Зафиксировав какие программы «любят» смешанное быстродействие, а какие - размер памяти, исследователи построили свою систему Jenga.

Они виртуально протестировали 4 виды программ на виртуальном компьютере с 36 ядрами. Тестировали программы:

  • omnet - Objective Modular Network Testbed, библиотека моделирования C и платформа сетевых средств моделирования (синий цвет на рисунке)
  • mcf - Meta Content Framework (красный цвет)
  • astar - ПО для отображения виртуальной реальности (зеленый цвет)
  • bzip2 - архиватор (фиолетовый цвет)


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

Уровни кэша

Кэш центрального процессора разделён на несколько уровней. Для универсальных процессоров - до 3. Самой быстрой памятью является кэш первого уровня - L1-cache, поскольку расположена на одном с процессором кристалле. Состоит из кэша команд и кэша данных. Некоторые процессоры без L1 кэша не могут функционировать. L1 кэш работает на частоте процессора, и обращение к нему может производиться каждый такт. Зачастую является возможным выполнять несколько операций чтения/записи одновременно. Объём обычно невелик - не более 128 Кбайт.

С кэшем L1 взаимодействует кэш второго уровня - L2. Он является вторым по быстродействию. Обычно он расположен либо на кристалле, как и L1, либо в непосредственной близости от ядра, например, в процессорном картридже. В старых процессорах - набор микросхем на системной плате. Объём L2 кэша от 128 Кбайт до 12 Мбайт. В современных многоядерных процессорах кэш второго уровня, находясь на том же кристалле, является памятью раздельного пользования - при общем объёме кэша в 8 Мбайт на каждое ядро приходится по 2 Мбайта. Обычно латентность L2 кэша, расположенного на кристалле ядра, составляет от 8 до 20 тактов ядра. В задачах, связанных с многочисленными обращениями к ограниченной области памяти, например, СУБД, его полноценное использование дает рост производительность в десятки раз.

Кэш L3 обычно еще больше по размеру, хотя и несколько медленнее, чем L2 (за счет того, что шина между L2 и L3 более узкая, чем шина между L1 и L2). L3 обычно расположен отдельно от ядра ЦП, но может быть большим - более 32 Мбайт. L3 кэш медленнее предыдущих кэшей, но всё равно быстрее, чем оперативная память. В многопроцессорных системах находится в общем пользовании. Применение кэша третьего уровня оправдано в очень узком круге задач и может не только не дать увеличения производительности, но наоборот и привести к общему снижению производительности системы.

Отключение кэша второго и третьего уровней наиболее полезно в математических задачах, когда объём данных меньше размера кэша. В этом случае, можно загрузить все данные сразу в кэш L1, а затем производить их обработку.


Периодически Jenga на уровне ОС реконфигурирует виртуальные иерархии для минимизации объемов обмена данных, учитывая ограниченность ресурсов и поведение приложений. Каждая реконфигурация состоит из четырех шагов.

Jenga распределяет данные не только в зависимости от того, какие программы диспетчеризируются - любящие большую односкоростную память или любящие быстродействие смешанных кэшей, но и в зависимости от физической близости ячеек памяти к обрабатываемым данным. Независимо от того - какой вид кэша требует программа по умолчанию или по иерархии. Главное чтобы минимизировать задержку сигнала и энергозатраты. В зависимости от того, сколько видов памяти «любит» программа, Jenga моделирует латентность каждой виртуальной иерархии с одним или двумя уровнями. Двухуровневые иерархии образуют поверхность, одноуровневые иерархии - кривую. Затем Jenga проектирует минимальную задержку в размерах VL1, что дает две кривые. Наконец, Jenga использует эти кривые для выбора лучшей иерархии (то есть размера VL1).

Применение Jenga дало ощутимый эффект. Виртуальный 36-ядерный чип стал работать на 30 процентов быстрее и использовал на 85 процентов меньше энергии. Конечно, пока Jenga - просто симуляция работающего компьютера и пройдет некоторое время, прежде чем вы увидите реальные примеры этого кеша и еще до того, как производители микросхем примут его, если понравится технология.

Конфигурация условной 36 ядерной машины

  • Процессоры . 36 ядер, x86-64 ISA, 2.4 GHz, Silvermont-like OOO: 8B-wide
    ifetch; 2-level bpred with 512×10-bit BHSRs + 1024×2-bit PHT, 2-way decode/issue/rename/commit, 32-entry IQ and ROB, 10-entry LQ, 16-entry SQ; 371 pJ/instruction, 163 mW/core static power
  • Кэши уровня L1 . 32 KB, 8-way set-associative, split data and instruction caches,
    3-cycle latency; 15/33 pJ per hit/miss
  • Служба предварительной выборки Prefetchers . 16-entry stream prefetchers modeled after and validated against
    Nehalem
  • Кэши уровня L2 . 128 KB private per-core, 8-way set-associative, inclusive, 6-cycle latency; 46/93 pJ per hit/miss
  • Когерентный режим (Coherence) . 16-way, 6-cycle latency directory banks for Jenga; in-cache L3 directories for others
  • Global NoC . 6×6 mesh, 128-bit flits and links, X-Y routing, 2-cycle pipelined routers, 1-cycle links; 63/71 pJ per router/link flit traversal, 12/4mW router/link static power
  • Блоки статической памяти SRAM . 18 MB, one 512 KB bank per tile, 4-way 52-candidate zcache, 9-cycle bank latency, Vantage partitioning; 240/500 pJ per hit/miss, 28 mW/bank static power
  • Многослойная динамическая память Stacked DRAM . 1152MB, one 128MB vault per 4 tiles, Alloy with MAP-I DDR3-3200 (1600MHz), 128-bit bus, 16 ranks, 8 banks/rank, 2 KB row buffer; 4.4/6.2 nJ per hit/miss, 88 mW/vault static power
  • Основная память . 4 DDR3-1600 channels, 64-bit bus, 2 ranks/channel, 8 banks/rank, 8 KB row buffer; 20 nJ/access, 4W static power
  • DRAM timings . tCAS=8, tRCD=8, tRTP=4, tRAS=24, tRP=8, tRRD=4, tWTR=4, tWR=8, tFAW=18 (все тайминги в tCK; stacked DRAM has half the tCK as main memory)

Одним из немаловажных факторов повышающих производительность процессора, является наличие кэш-памяти, а точнее её объём, скорость доступа и распределение по уровням.

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

Что такое кэш-память и её структура

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

Кэш-память построена на триггерах, которые, в свою очередь, состоят из транзисторов. Группа транзисторов занимает гораздо больше места, нежели те же самые конденсаторы, из которых состоит оперативная память . Это тянет за собой множество трудностей в производстве, а также ограничения в объёмах. Именно поэтому кэш память является очень дорогой памятью, при этом обладая ничтожными объёмами. Но из такой структуры, вытекает главное преимущество такой памяти – скорость. Так как триггеры не нуждаются в регенерации, а время задержки вентиля, на которых они собраны, невелико, то время переключения триггера из одного состояния в другое происходит очень быстро. Это и позволяет кэш-памяти работать на таких же частотах, что и современные процессоры.

Также, немаловажным фактором является размещение кэш-памяти. Размещена она, на самом кристалле процессора, что значительно уменьшает время доступа к ней. Ранее, кэш память некоторых уровней, размещалась за пределами кристалла процессора, на специальной микросхеме SRAM где-то на просторах материнской платы. Сейчас же, практически у всех процессоров, кэш-память размещена на кристалле процессора.


Для чего нужна кэш-память процессора?

Как уже упоминалось выше, главное назначение кэш-памяти – это хранение данных, которые часто используются процессором. Кэш является буфером, в который загружаются данные, и, несмотря на его небольшой объём, (около 4-16 Мбайт) в современных процессорах , он дает значительный прирост производительности в любых приложениях.

Чтобы лучше понять необходимость кэш-памяти, давайте представим себе организацию памяти компьютера в виде офиса. Оперативная память будет являть собою шкаф с папками, к которым периодически обращается бухгалтер, чтобы извлечь большие блоки данных (то есть папки). А стол, будет являться кэш-памятью.

Есть такие элементы, которые размещены на столе бухгалтера, к которым он обращается в течение часа по несколько раз. Например, это могут быть номера телефонов, какие-то примеры документов. Данные виды информации находятся прямо на столе, что, в свою очередь,увеличивает скорость доступа к ним.

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

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

Уровни кэш-памяти процессора

Современные процессоры, оснащены кэшем, который состоит, зачастую из 2–ух или 3-ёх уровней. Конечно же, бывают и исключения, но зачастую это именно так.

В общем, могут быть такие уровни: L1 (первый уровень), L2 (второй уровень), L3 (третий уровень). Теперь немного подробнее по каждому из них:

Кэш первого уровня (L1) – наиболее быстрый уровень кэш-памяти, который работает напрямую с ядром процессора, благодаря этому плотному взаимодействию, данный уровень обладает наименьшим временем доступа и работает на частотах близких процессору. Является буфером между процессором и кэш-памятью второго уровня.

Мы будем рассматривать объёмы на процессоре высокого уровня производительности Intel Core i7-3770K. Данный процессор оснащен 4х32 Кб кэш-памяти первого уровня 4 x 32 КБ = 128 Кб. (на каждое ядро по 32 КБ)

Кэш второго уровня (L2) – второй уровень более масштабный, нежели первый, но в результате, обладает меньшими «скоростными характеристиками». Соответственно, служит буфером между уровнем L1 и L3. Если обратиться снова к нашему примеру Core i7-3770 K, то здесь объём кэш-памяти L2 составляет 4х256 Кб = 1 Мб.

Кэш третьего уровня (L3) – третий уровень, опять же, более медленный, нежели два предыдущих. Но всё равно он гораздо быстрее, нежели оперативная память. Объём кэша L3 в i7-3770K составляет 8 Мбайт. Если два предыдущих уровня разделяются на каждое ядро, то данный уровень является общим для всего процессора. Показатель довольно солидный, но не заоблачный. Так как, к примеру, у процессоров Extreme-серии по типу i7-3960X, он равен 15Мб, а у некоторых новых процессоров Xeon, более 20.

Кэш память или как ее называют буферная память жесткого диска. Если вы не знаете что это, то мы с радостью ответим на данный вопрос и расскажем обо всех имеющихся особенностях. Это особый вид оперативки, выступающий в качестве буфера для хранения ранее считанных, но еще не переданных данных для их дальнейшей обработки, а также для хранения информации, к которой система обращается чаще всего.

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

Какой бывает объем и на что он влияет

Отдельного внимания заслуживает объем буфера. Зачастую HDD оснащаются кэшем 8, 16, 32 и 64 Мб. При копировании файлов больших размеров между 8 и 16 Мб будет заметна значительная разница в плане быстродействия, однако между 16 и 32 она уже менее незаметна. Если выбирать между 32 и 64, то ее вообще почти не будет. Необходимо понимать, что буфер достаточно часто испытывает большие нагрузки, и в этом случае, чем он больше, тем лучше.

В современных жестких дисках используется 32 или 64 Мб, меньше на сегодняшний день вряд ли где-то можно найти. Для обычного пользователя будет достаточно и первого, и второго значения. Тем более что помимо этого на производительность также влияет размер собственного, встроенного в систему кэша. Именно он увеличивает производительность жесткого диска, особенно при достаточном объеме оперативки.

То есть, в теории, чем больше объем, тем лучше производительность и тем больше информации может находиться в буфере и не нагружать винчестер, но на практике все немного по-другому, и обычный пользователь за исключением редких случаев не заметит особой разницы. Конечно, рекомендуется выбирать и покупать устройства с наибольшим размером, что значительно улучшит работу ПК. Однако на такое следует идти только в том случае, если позволяют финансовые возможности.

Предназначение

Она предназначена для чтения и записи данных, однако на SCSI дисках в редких случаях необходимо разрешение на кэширование записи, так как по умолчанию установлено, что кэширование записи запрещено. Как мы уже говорили, объем – не решающий фактор для улучшения эффективности работы. Для увеличения производительности винчестера более важной является организация обмена информацией с буфером. Кроме этого, на нее также в полной мере влияет функционирование управляющей электроники, предотвращение возникновения и прочее.

В буферной памяти хранятся наиболее часто используемые данные, в то время как, объем определяет вместимость этой самой хранимой информации. За счет большого размера производительность винчестера возрастает в разы, так как данные подгружаются напрямую из кэша и не требуют физического чтения.

Физическое чтение – прямое обращение системы к жесткому диску и его секторам. Данный процесс измеряется в миллисекундах и занимает достаточно большое количество времени. Вместе с этим HDD передает данные более чем в 100 раз быстрее, чем при запросе путем физического обращения к винчестеру. То есть, он позволяет устройству работать даже если хост-шина занята.

Основные преимущества

Буферная память имеет целый ряд достоинств, основным из которых является быстрая обработка данных, занимающая минимальное количество времени, в то время как физическое обращение к секторам накопителя требует определенного времени, пока головка диска отыщет требуемый участок данных и начнет их читать. Более того, винчестеры с наибольшим хранилищем, позволяют значительно разгрузить процессор компьютера. Соответственно процессор задействуется минимально.

Ее также можно назвать полноценным ускорителем, так как функция буферизации делает работу винчестера значительно эффективнее и быстрее. Но на сегодняшний день, в условиях быстрого развития технологий, она теряет свое былое значение. Это связано с тем, что большинство современных моделей имеют 32 и 64 Мб, чего с головой хватает для нормального функционирования накопителя. Как уже было сказано выше, переплачивать разницу можно лишь тогда, когда разница по стоимости соответствует разнице в эффективности.

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

Как узнать текущий объем кэша

Все что нужно, это скачать и установить бесплатную программу HDTune . После запуска перейдите в раздел «Информация» и в нижней части окна вы увидите все необходимые параметры.


Если вы покупаете новое устройство, то все необходимые характеристики можно узнать на коробке или в приложенной инструкции. Еще один вариант – посмотреть в интернете.

© 2024 mnogodropa.ru - Windows. Железо. Интернет. Безопасность. Операционные системы. Железо