кэш буфер что это

В чем разница между кэшем и буфером?

говорит ли кэш особый вид буфера правильно? Они оба выполняют аналогичные функции, но есть ли какая-то принципиальная разница, которую я упускаю?

4 ответов

из статьи Википедии о буферов данных:

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

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

цель a cache хранить данные в прозрачном пути, так, что как раз достаточные данные будут кэшированы так, что остальные данные можно перенести без каких-либо штрафных санкций. В этом контексте только кэш «предварительной выборки» небольшой объем данных (в зависимости от скорости передачи, размера кэша и т. д. ).

наоборот, буфер нельзя использовать мгновенно для того чтобы двинуть ваше положение в потоке данных, если новая деталь уже перемещена в буфер. Для этого потребуется переместить буфер (учитывая, что новое местоположение превышает длину буфера), что фактически потребует «перезапуска» буфера из нового местоположения. Лучшим примером этого является перемещение ползунка в видео Youtube.

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

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

существует, конечно, большое совпадение как в реализации, так и в использовании.

одно важное различие между кэшем и буфером:

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

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

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

буферы используются для временного хранения данных, в то время как данные перемещаются из одного объекта в другой. Например: когда видео перемещается из интернета на наш компьютер для отображения буферов используются для хранения кадров видео, которые будут отображаться рядом. ( Это увеличивает QoS, поскольку видео будет работать гладко после успешного процесса буферизации.) Пример: другой пример-сценарий, когда мы записываем данные в наши файлы. Вновь записанные данные не скопировано во вторичную память мгновенно. Внесенные изменения сохраняются в буфере, а затем в соответствии с разработанной политикой, изменения отражаются обратно в файл во вторичной памяти (Жесткий диск).

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

Common thing: оба являются промежуточными компонентами хранения данных (программными или аппаратными) между вычислением и «основным» хранилищем.

для меня разница заключается в следующем:

Источник

В чем разница между кешем и буфером в Linux?

Кэш-страницы

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

Эта память используется ядром для кэширования данных диска и улучшения производительности ввода-вывода.

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

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

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

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

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

Сегменты разделяемой памяти SysV также учитываются как кеш, хотя они не представляют никаких данных на дисках.

Буферы

Буферы представляют собой представление на диске данных, которые хранятся в кэшах страниц.

Буферы содержат метаданные файлов / данных, которые находятся в кеше страницы.

Пример

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

Как только из метаданных известен фактический адрес блока файла, он подбирается ядром для обработки.

Источник

Особенности работы SSD — что такое SLC-кэш и как он влияет на скорость

Содержание

Содержание

Ты купил современный SSD и довольный устанавливаешь его в свой ПК. Сразу же, на высокой скорости, начинаешь переносить на него данные с других накопителей. И вдруг в какой-то момент скорость записи на SSD падает в несколько раз. Что произошло? Почему падает скорость записи? Все дело в SLC-кэше.

Читайте также:  обшивка стен тканью расценка

Сегодня существуют твердотельные накопители на четырех типах памяти:

Samsung — единственная компания, которая продолжает называть всю свою память MLC, лишь добавляя количество бит на ячейку. И часто это вводит покупателей в заблуждение. Например, 3-bit MLC, хотя по факту это TLC.

Сегодня самыми распространенным типом памяти в твердотельных накопителях является усовершенствованный 3D NAND TLC. Невысокая цена производства, высокая плотность данных, современные контроллеры и использование технологий SLC-кэширования позволили производителям значительно повысить скорость и ресурс TLC накопителей. Но все ли так хорошо, как кажется на первый взгляд?

Что такое SLC-кэш, и как он реализован

Чтение и запись данных на SSD-накопитель происходит по битам. Запись в ячейки SLC памяти самая быстрая, так как одна ячейка содержит лишь один бит. С TLC-накопителями сложнее. Чтобы записать одну ячейку, необходимо несколько раз считать с нее данные, для того чтобы далее их правильно записать. А дополнительные операции чтения с ячейкой значительно увеличивают время.

И для того, чтобы повысить скорость записи в TLC ячейки, производители прибегли к простой хитрости. В начале записи контроллер сохраняет данные по одному биту на ячейку, что называется режимом SLC. Это значительно увеличивает скорость записи. Продолжая запись, контроллер в фоновом режим уплотняет записанные данные в ячейку, преобразуя ее в трехбитную. Но такая быстрая запись не может быть постоянной. Объем накопителя все же рассчитывается из трех бит на ячейку. Следовательно, после заполнения SLC-кэша, скорость падает и достаточно сильно. SLC-кэш бывает реализован разными способами:

Следовательно, на QLC накопителях в таком режиме максимальная скорость будет на четверть свободного объема накопителя или меньше — все зависит от реализации SLC-кэша. Пример SLC-кэша на Smartbuy Nitro 480GB (SBSSD-480GQ-MX902-25S3). Объем SLC-кэша на QLC накопителе составил всего 23 % от общего свободного объема SSD.

Большинство пользователей не столкнутся с заполнением SLC-кэша при работе с SSD накопителем и вот почему:

Как определить объем SLC-кэша?

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

Подготовка SSD накопителя

Если накопитель уже используется как дополнительный, лучше его очистить или отформатировать. Дальше необходимо выполнить команду TRIM через оптимизацию накопителя средствами Windows. Для этого переходим в «Этот компьютер» («Мой компьютер»).

Правой кнопкой мыши нажимаем на наш SSD и выбираем Свойства.

Переходим во вкладку Сервис и нажимаем кнопку Оптимизировать.

После чего выбираем снова наш SSD накопитель и наживаем кнопку Оптимизировать.

После данной операции необходимо дать накопитель «отдохнуть» примерно 15 минут и не выполнять с ним никаких операций.

Первый способ

Для определения SLC-кэша нам понадобятся программы, которые могут непрерывно линейно записывать данные на накопитель. Это можно сделать утилитой AIDA64, в разделе Сервис → Тест диска.

Далее в новом окне AIDA64 Disk Benchmark, в первом выпадающем списке меню выбираем Тест линейной записи (Linear Write), а затем накопитель, который необходимо протестировать.

ВАЖНО! Сразу после начала этого теста все данные с накопителя будут удалены!

Второй способ

Не настолько точный, как тесты утилитами, но тоже наглядный и очень понятный. Для этого нам понадобится второй SSD-накопитель, назовем его «исходный». (исходный SSD накопитель может быть даже системным). Для максимальной точности скорость чтения Исходного SSD должна быть выше, чем скорость записи тестового SSD, на котором будем определять объем SLC-кэша. На исходном накопителе создаем папку с объемными видеофайлами. Даже если у вас есть один видеофайл, просто копируем его несколько раз. Объем папки будет зависеть от объема тестового SSD — папка должна быть кратна 100 ГБ, чтобы можно было легко увидеть объем SLC-кэша. Также объем папки должен быть больше, чем треть общего объема тестового SSD накопителя, чтобы на примере одного копирования мы смогли все увидеть. Не забываем подготовить SSD по инструкции выше. Давайте скопируем папку объемом 100 Гб на SSD накопитель ADATA Falcon 256GB (AFALCON-256G-C) и посмотрим на SLC-кэш.

По графику объем SLC-кэша составил примерно 85 Гб. А вот скорость до заполнения SLC-кэша и после составили 1,05 ГБ/сек и 123 МБ/сек соответственно.

Как сильно скорость SSD накопителя может падать после заполнения SLC-кэша?

Ответить на это вопрос однозначно для всех накопителей не получится. И тому есть несколько причин:

Вот пример недорого SATA SSD накопителя Patriot P210 128GB (P210S128G25)

Скорость после заполнения SLC-кэша падает до 71,5 МБ/сек. И это скорости прямой записи в TLC режиме.

Теперь давайте посмотрим, на что способны топовые NVMe SSD накопители на примере Samsung 970 EVO Plus 1TB (MZ-V7S1T0BW).

Даже после заполнения SLC-кэша скорости падают не значительно и остаются высокими до полного заполнения SSD-накопителя.

Если мы посмотрим на Smartbuy Nitro 240GB с QLC чипами памяти, то тут сразу видно еще более сильное снижение скорости до 22 МБ/сек. Даже не нужно ждать окончания теста — по графику все и так понятно.

Без SLC-кэширования не обходится ни один современный SSD-накопитель. Причем не важно, на каком типе памяти он построен — TLC или QLC. Благодаря SLC-кэшу мы имеет такие высокие скорости. И пусть на разных накопителях разный объем кэша, при обычном использовании мы никогда не увидим значительное снижение скорости, так как просто не сможем заполнить SLC-кэш. Конечно, если вы работаете с видеофайлами, особенно с разрешением 4К, и вам постоянно приходится перемещать их, например при видеомонтаже, то не стоит покупать дешевые SSD накопители. Лучше заранее посмотреть тесты и обзоры и выбрать оптимальный вариант. В большинстве же случаев SLC-кэш так и останется чем-то неизвестным.

Читайте также:  картинка для двух мониторов windows 10

Источник

Что такое кэш в процессоре и зачем он нужен

Содержание

Содержание

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

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

Предпосылки создания кэш-памяти

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

Каждый раз при запуске программы из постоянной памяти, ее наиболее часто используемые данные или вся программа целиком «подгружаются» в оперативную память. Это делается для ускорения обработки данных процессором. Считывать и обрабатывать данные из оперативной памяти процессор будет значительно быстрей, а, следовательно, и система будет работать значительно быстрее в сравнении с тем, если бы массивы данных поступали напрямую из не очень быстрых (по меркам процессорных вычислений) накопителей.

Если бы не было «оперативки», то процесс считывания напрямую с накопителя занимал бы непозволительно огромное, по меркам вычислительной мощности процессора, время.

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

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

Процессоры развиваются так же быстро, как память, поэтому несоответствие в их производительности и скорости сохраняется. Производство полупроводниковых изделий постоянно совершенствуется, поэтому на пластину процессора, которая сохраняет те же размеры, что и 10 лет назад, теперь можно поместить намного больше транзисторов. Как следствие, вычислительная мощность за это время увеличилась. Впрочем, не все производители используют новые технологии для увеличения именно вычислительной мощности. К примеру, производители оперативной памяти ставят во главу угла увеличение ее емкости: ведь потребитель намного больше ценит объем, нежели ее быстродействие. Когда на компьютере запущена программа и процессор обращается к ОЗУ, то с момента запроса до получения данных из оперативной памяти проходит несколько циклов процессора. А это неправильно — вычислительная мощность процессора простаивает, и относительно медленная «оперативка» тормозит его работу.

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

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

Как работает кэш-память

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

Кэш-память — это, по сути, та же оперативная память, только более быстрая и дорогая. Она имеет небольшой объем и является одним из компонентов современного процессора.

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

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

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

Читайте также:  китайский виндовс 10 на русский

Но как процессор это делает? Процессор что, следит за пользователем? В некоторой степени да. Он выгружает данные из оперативной памяти в кэш-память для того, чтобы иметь к ним мгновенный доступ, и делает это на основе предыдущих данных, которые ранее были помещены в кэш в этом сеансе работы. Существует несколько способов, увеличивающих число «попаданий» (угадываний), а точнее, уменьшающих число «промахов». Это временная и пространственная локальность — два главных принципа кэш-памяти, благодаря которым процессор выбирает, какие данные нужно поместить из оперативной памяти в кэш.

Временная локальность

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

Пространственная локальность

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

Набор таких адресов называется строкой (блоком) кэша, а количество считанных данных — длиной кэша.

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

Иерархия кэш-памяти

Любой современный процессор имеет в своей структуре несколько уровней кэш-памяти. В спецификации процессора они обозначаются как L1, L2, L3 и т. д.

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

Так же организована и работа быстрых ячеек кэша. Ячейки памяти первого уровня (L1) располагаются на кристалле в непосредственной близости от вычислительного ядра. Эта память — самая быстрая, но и самая малая по объему. В нее помещаются наиболее востребованные данные и команды. Для передачи данных оттуда потребуется всего около 5 тактовых циклов. Как правило, кэш-память первого уровня состоит из двух блоков, каждый из которых имеет размер 32 КБ. Один из них — кэш данных первого уровня, второй — кэш инструкций первого уровня. Они отвечают за работу с блоками данных и молниеносное обращение к командам.

Кэш второго и третьего уровня больше по объему, но за счет того, что L2 и L3 удалены от вычислительного ядра, при обращении к ним будут более длительные временные интервалы. Более наглядно устройство кэш-памяти проиллюстрировано в следующем видео.

Кэш L2, который также содержит команды и данные, занимает уже до 512 КБ, чтобы обеспечить необходимый объем данных кэшу нижнего уровня. Но на обработку запросов уходит в два раза больше времени. Кэш третьего уровня имеет размеры уже от 2 до 32 МБ (и постоянно увеличивается вслед за развитием технологий), но и его скорость заметно ниже. Она превышает 30 тактовых циклов.

Процессор запрашивает команды и данные, обрабатывая их, что называется, параллельными курсами. За счет этого и достигается потрясающая скорость работы. В качестве примера рассмотрим процессоры Intel. Принцип работы таков: в кэше хранятся данные и их адрес (тэг кэша). Сначала процессор ищет их в L1. Если информация не найдена (возник промах кэша), то в L1 будет создан новый тэг, а поиск данных продолжится на других уровнях. Для того, чтобы освободить место под новый тэг, информация, не используемая в данный момент, переносится на уровень L2. В результате данные постоянно перемещаются с одного уровня на другой.

С кэшем связан термин «сет ассоциативности». В L1 блок данных привязан к строкам кэша в определенном сете (блоке кэша). Так, например, 8-way (8 уровень ассоциативности) означает, что один блок может быть привязан к 8 строкам кэша. Чем выше уровень, тем выше шанс на попадание кэша (процессор нашел требуемую информацию). Есть и недостатки. Главные — усложнение процесса и соответствующее снижение производительности.

Также при хранении одних и тех же данных могут задействоваться различные уровни кэша, например, L1 и L3. Это так называемые инклюзивные кэши. Использование лишнего объема памяти окупается скоростью поиска. Если процессор не нашел данные на нижнем уровне, ему не придется искать их на верхних уровнях кэша. В этом случае задействованы кэши-жертвы. Это полностью ассоциативный кэш, который используется для хранения блоков, вытесненных из кэша при замене. Он предназначен для уменьшения количества промахов. Например, кэши-жертвы L3 будут хранить информацию из L2. В то же время данные, которые хранятся в L2, остаются только там, что помогает сэкономить место в памяти, однако усложняет поиск данных: системе приходится искать необходимый тэг в L3, который заметно больше по размеру.

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

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

Источник

Образовательный портал