stringtranslate.com

Кэш (вычисления)

Схема работы кэш-памяти процессора

В вычислительной технике кэш ( / k æ ʃ / KASH)[1]— это аппаратный или программный компонент, который хранит данные, чтобы будущие запросы на эти данные могли обслуживаться быстрее; данные, хранящиеся в кэше, могут быть результатом более раннего вычисления или копией данных, хранящихся в другом месте.Попадание в кэшпроисходит, когда запрошенные данные могут быть найдены в кэше, в то время какпромах кэшапроисходит, когда они не могут быть найдены. Попадания в кэш обслуживаются путем чтения данных из кэша, что быстрее, чем повторное вычисление результата или чтение из более медленного хранилища данных; таким образом, чем больше запросов может быть обработано из кэша, тем быстрее работает система.[2]

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

Мотивация

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

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

Больший ресурс вызывает значительную задержку доступа – например, современному процессору с частотой 4 ГГц могут потребоваться сотни тактовых циклов, чтобы достичь DRAM. Это смягчается путем чтения больших фрагментов в кэш, в надежде, что последующие чтения будут из соседних мест и могут быть прочитаны из кэша. Прогнозирование или явная предварительная выборка могут использоваться для того, чтобы угадать, откуда будут поступать будущие чтения, и делать запросы заранее; если все сделано оптимально, задержка полностью обходится.

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

Операция

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

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

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

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

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

Написание политик

Кэш сквозной записи без выделения места для записи
Кэш обратной записи с распределением записи

Когда система записывает данные в кэш, она должна в какой-то момент записать эти данные и в резервное хранилище. Время этой записи контролируется тем, что известно как политика записи . Существует два основных подхода к записи: [3]

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

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

Как политика сквозной записи, так и политика обратной записи могут использовать любую из этих политик промахов записи, но обычно они используются в паре. [4] [5]

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

Предварительная выборка

При промахе чтения кэша кэши с политикой подкачки по требованию считывают минимальный объем из резервного хранилища. Типичная реализация виртуальной памяти с подкачкой по требованию считывает одну страницу виртуальной памяти (часто 4 КБ) с диска в дисковый кэш в ОЗУ. Типичный ЦП считывает одну строку кэша L2 размером 128 байт из DRAM в кэш L2 и одну строку кэша L1 размером 64 байта из кэша L2 в кэш L1.

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

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

Примеры аппаратных кэшей

Кэш процессора

Небольшие объемы памяти на ЦП или рядом с ним могут работать быстрее, чем основная память гораздо большего размера . [6] Большинство ЦП с 1980-х годов использовали один или несколько кэшей, иногда в каскадных уровнях ; современные высокопроизводительные встраиваемые , настольные и серверные микропроцессоры могут иметь до шести типов кэшей (между уровнями и функциями). [7] Некоторые примеры кэшей с определенной функцией — это D-кэш , I-кэш и буфер трансляции для блока управления памятью (MMU).

Кэш графического процессора

Более ранние графические процессоры (GPU) часто имели ограниченные кэши текстур только для чтения и использовали swizzling для улучшения 2D- локальности ссылок . Промахи кэша могли бы существенно повлиять на производительность, например, если бы не использовалось mip-отображение . Кэширование было важно для использования 32-битных (и более широких) передач для текстурных данных, которые часто были всего лишь 4 бита на пиксель.

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

DSP-системы

Цифровые сигнальные процессоры также обобщались на протяжении многих лет. Более ранние разработки использовали память блокнота, питаемую прямым доступом к памяти , но современные DSP, такие как Qualcomm Hexagon, часто включают в себя набор кэшей, очень похожий на набор кэшей ЦП (например, модифицированная архитектура Гарварда с общим L2, разделенным L1 I-кэшем и D-кэшем). [8]

Буфер поиска перевода

Блок управления памятью (MMU), который извлекает записи таблицы страниц из основной памяти, имеет специализированный кэш, используемый для записи результатов трансляций виртуальных адресов в физические адреса . Этот специализированный кэш называется буфером трансляции lookaside (TLB). [9]

Внутрисетевой кэш

Информационно-ориентированное сетевое взаимодействие

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

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

Политики

Время известное, последнее использованное

Time aware last recently used (TLRU) — это вариант LRU, разработанный для ситуации, когда хранящееся в кэше содержимое имеет допустимый срок службы. Алгоритм подходит для приложений сетевого кэширования, таких как ICN, сети доставки контента (CDN) и распределенные сети в целом. TLRU вводит новый термин: время использования (TTU). TTU — это временная метка на контенте, которая определяет время использования контента на основе местоположения контента и информации от издателя контента. Благодаря этой временной метке на основе местоположения TTU предоставляет локальному администратору больше контроля для регулирования внутрисетевого хранения.

В алгоритме TLRU, когда поступает фрагмент контента, узел кэша вычисляет локальное значение TTU на основе значения TTU, назначенного издателем контента. Локальное значение TTU вычисляется с использованием локально определенной функции. После вычисления локального значения TTU выполняется замена контента на подмножестве общего контента, хранящегося в узле кэша. TLRU гарантирует, что менее популярный и недолговечный контент должен быть заменен входящим контентом. [11]

Наименее часто используемый в последнее время

Схема замены кэша наименее часто используемого (LFRU) сочетает в себе преимущества схем LFU и LRU. LFRU подходит для сетевых приложений кэширования, таких как ICN, CDN и распределенные сети в целом. В LFRU кэш делится на два раздела, называемых привилегированными и непривилегированными разделами. Привилегированный раздел можно рассматривать как защищенный раздел. Если контент очень популярен, он помещается в привилегированный раздел. Замена привилегированного раздела выполняется путем первого вытеснения контента из непривилегированного раздела, затем помещения контента из привилегированного раздела в непривилегированный раздел и, наконец, вставки нового контента в привилегированный раздел. В вышеприведенной процедуре LRU используется для привилегированного раздела, а приближенная схема LFU (ALFU) — для непривилегированного раздела. Основная идея заключается в кэшировании локально популярного контента с помощью схемы ALFU и помещении популярного контента в привилегированный раздел. [12]

Прогноз погоды

В 2011 году использование смартфонов с опциями прогнозирования погоды было чрезмерно обременительным для серверов AccuWeather ; два запроса в пределах одного парка генерировали отдельные запросы. Оптимизация пограничными серверами для усечения координат GPS до меньшего количества десятичных знаков означала, что будут использоваться кэшированные результаты из более раннего запроса. Количество запросов на сервер в день сократилось вдвое. [13]

Программные кэши

Кэш диска

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

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

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

Веб-кэш

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

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

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

Мемоизация

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

Сеть доставки контента

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

CDN появились в конце 1990-х годов как способ ускорить доставку статического контента, такого как HTML-страницы, изображения и видео. Реплицируя контент на нескольких серверах по всему миру и доставляя его пользователям в зависимости от их местоположения, CDN могут значительно повысить скорость и доступность веб-сайта или приложения. Когда пользователь запрашивает часть контента, CDN проверит, есть ли у него копия контента в кэше. Если это так, CDN доставит контент пользователю из кэша. [16]

Шлюз облачного хранения

Облачный шлюз хранения, также известный как пограничный файлер, представляет собой гибридное облачное устройство хранения, которое подключает локальную сеть к одному или нескольким облачным сервисам хранения , как правило, сервисам хранения объектов , таким как Amazon S3 . Он предоставляет кэш для часто используемых данных, обеспечивая высокоскоростной локальный доступ к часто используемым данным в облачном сервисе хранения. Облачные шлюзы хранения также предоставляют дополнительные преимущества, такие как доступ к облачному объектному хранилищу через традиционные протоколы обслуживания файлов, а также постоянный доступ к кэшированным данным во время сбоев подключения. [17]

Другие тайники

Демон BIND DNS кэширует сопоставление доменных имен с IP-адресами , как и библиотека резолвера.

Операция сквозной записи обычна при работе в ненадежных сетях (например, Ethernet LAN) из-за огромной сложности протокола когерентности, необходимого между несколькими кэшами обратной записи, когда связь ненадежна. Например, кэши веб-страниц и кэши клиентских сетевых файловых систем (например, в NFS или SMB ) обычно доступны только для чтения или сквозной записи специально для того, чтобы сетевой протокол был простым и надежным.

Поисковые системы также часто делают проиндексированные ими веб-страницы доступными из своего кэша. Например, Google предоставляет ссылку «Кэшировано» рядом с каждым результатом поиска. Это может оказаться полезным, когда веб-страницы с веб-сервера временно или постоянно недоступны.

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

Распределенный кэш [ 18] использует сетевые хосты для обеспечения масштабируемости, надежности и производительности приложения. [19] Хосты могут быть размещены совместно или распределены по разным географическим регионам.

Буфер против кеша

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

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

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

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

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

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

Смотрите также

Ссылки

  1. ^ "Кэш". Oxford Dictionaries . Архивировано из оригинала 18 августа 2012 года . Получено 2 августа 2016 года .
  2. ^ Чжун, Лян; Чжэн, Сюэцянь; Лю, Юн; Ван, Мэнтин; Цао, Ян (февраль 2020 г.). «Максимизация коэффициента попадания в кэш при коммуникациях между устройствами, наложенных на сотовые сети». China Communications . 17 (2): 232–238. doi :10.23919/jcc.2020.02.018. ISSN  1673-5447. S2CID  212649328.
  3. ^ Bottomley, James (1 января 2004 г.). «Понимание кэширования». Linux Journal . Получено 1 октября 2019 г. .
  4. ^ Хеннесси, Джон Л.; Паттерсон, Дэвид А. (2011). Архитектура компьютера: количественный подход. Elsevier. стр. B–12. ISBN 978-0-12-383872-8.
  5. ^ Паттерсон, Дэвид А.; Хеннесси, Джон Л. (1990). Архитектура компьютера: количественный подход . Morgan Kaufmann Publishers. стр. 413. ISBN 1-55860-069-8.
  6. ^ Су, Чао; Цзэн, Цинкай (10 июня 2021 г.). Никополитидис, Петрос (ред.). «Обзор атак по сторонним каналам на кэш-память ЦП: систематический анализ, модели безопасности и контрмеры». Безопасность и коммуникационные сети . 2021 : 1–15. doi : 10.1155/2021/5559552 . ISSN  1939-0122.
  7. ^ "Игровой гигант Intel Broadwell Core i7 5775C '128 МБ кэш-памяти L4' и флагманские процессоры Skylake Core i7 6700K наконец-то поступили в продажу". 25 сентября 2015 г.Упоминается кэш L4. В сочетании с отдельными I-Cache и TLB это доводит общее количество кэшей (уровни+функции) до 6.
  8. ^ "Обзор SDK Qualcom Hexagon DSP".
  9. ^ Фрэнк Уеда (2009). "Лекция 7: Управление памятью" (PDF) . CSE 120: Принципы операционных систем . Калифорнийский университет в Сан-Диего . Получено 4 декабря 2013 г. .
  10. ^ Билал, Мухаммад и др. (2019). «Безопасное распространение защищенного контента в информационно-ориентированных сетях». IEEE Systems Journal . 14 (2): 1–12. arXiv : 1907.11717 . Bibcode : 2020ISysJ..14.1921B. doi : 10.1109/JSYST.2019.2931813. S2CID  198967720.
  11. ^ Билал, Мухаммад; Канг, Шин-Гак (2014). Политика управления кэшем Time Aware Least Recent Used (TLRU) в ICN . 16-я Международная конференция по передовым коммуникационным технологиям. С. 528–532. arXiv : 1801.00390 . Bibcode : 2018arXiv180100390B. doi : 10.1109/ICACT.2014.6779016. ISBN 978-89-968650-3-2. S2CID  830503.
  12. ^ Билал, Мухаммад и др. (2017). «Схема управления кэшем для эффективного вытеснения и репликации контента в сетях кэширования». IEEE Access . 5 : 1692–1701. arXiv : 1702.04078 . Bibcode : 2017arXiv170204078B. doi : 10.1109/ACCESS.2017.2669344. S2CID  14517299.
  13. ^ Мерфи, Крис (30 мая 2011 г.). «5 строк кода в облаке». InformationWeek . стр. 28. На 300–500 миллионов меньше запросов в день обрабатываются серверами AccuWeather
  14. ^ Multiple (wiki). "Кэширование веб-приложений". Docforge . Архивировано из оригинала 12 декабря 2019 . Получено 24 июля 2013 .
  15. ^ Тайсон, Гарет; Маут, Андреас; Кауне, Себастьян; Му, Му; Плагеманн, Томас. Корелли: Динамическая служба репликации для поддержки контента, зависящего от задержки, в сетях сообщества (PDF) . MMCN'09. Архивировано из оригинала (PDF) 18 июня 2015 г.
  16. ^ "Глобально распределенная доставка контента, J. ​​Dilley, B. Maggs, J. Parikh, H. Prokop, R. Sitaraman и B. Weihl, IEEE Internet Computing, том 6, выпуск 5, ноябрь 2002 г." (PDF) . Архивировано (PDF) из оригинала 9 августа 2017 г. . Получено 25 октября 2019 г. .
  17. ^ "Определение: шлюз облачного хранения". SearchStorage . Июль 2014.
  18. ^ Пол, С.; Фэй, З. (1 февраля 2001 г.). «Распределенное кэширование с централизованным управлением». Computer Communications . 24 (2): 256–268. CiteSeerX 10.1.1.38.1094 . doi :10.1016/S0140-3664(00)00322-4. 
  19. ^ Хан, Икбал (июль 2009 г.). «Распределенное кэширование на пути к масштабируемости». MSDN . 24 (7).

Дальнейшее чтение