Что такое рост кэш
Биткойн кэш (BCH) часто рассматривается как наиболее успешный форк оригинального биткойна (BTC). Хотя есть и другие криптовалюты, которые также принимают название «биткойн» (например, BSV или BCD), но, несомненно, биткойн-кэш значительно более популярен, чем все остальные.
Единственный Биткойн, который все еще более популярен, чем Биткойн Кэш, это, очевидно, оригинальный Биткойн. В этой статье будет рассмотрено, почему BCH имеет значение и стоит ли BCH ваших денег для долгосрочных инвестиций или нет. Давайте начнем прямо сейчас!
Биткойн Кэш - Резюме
Самым популярной монетой в криптовалюте всегда был биткойн. Первоначальный проект Биткойн был основан анонимным человеком, который называл себя Сатоши Накамото. После мирового финансового кризиса Сатоши Накамото почувствовал, что деньги должны контролироваться людьми, а не централизованным учреждениями, которое снова и снова нарушало доверие людей.
Идея Биткойна успешно привлекла внимание многих разработчиков криптографии. Многие из тех, кто сейчас является хардкорными сторонниками Bitcoin Cash, изначально были частью группы, которая активно следовала замыслу Сатоши.
Биткойн должен был стать децентрализованной одноранговой электронной наличностью. Он должен был заменить устаревшую банковскую систему, особенно когда речь идет о трансграничных операциях. Первоначальные сторонники Биткойна в его первые дни часто «хвастались» скоростью и транзакционными издержками отправки Биткойна из разных стран.
Однако в 2017 году все изменилось довольно быстро, наряду с растущей популярностью самого Биткойна. Два года назад был год, который изменил все. Биткойн быстро взлетел в цене по отношению к доллару США и другим фиатным валютам. Однако блокчейн довольно легко забился из-за всех новичков, которые начали скупать биткойны.
В какой-то момент операционные издержки Биткойна стали довольно дорогими и неуправляемыми. Скорость транзакции стала очень низкой, и для завершения одной транзакции могут потребоваться часы. Из-за всех этих проблем многие из первоначальных сторонников Биткойна разочаровались в сети Биткойн. Они начали сомневаться, сможет ли Биткойн управлять всеми транзакциями новичков.
Сторонники изменений считают, что было бы неплохо увеличить верхний предел размера блока Биткойна с 1 МБ до 8 МБ. С увеличением предельного размера блока Биткойн сможет обрабатывать гораздо больше транзакций, а также снизить операционные издержки, на которые жаловались многие пользователи.
Однако это предложение было оспорено многими другими сторонниками Биткойна. Те, кто принимал сторону «против», считали, что идея увеличить лимит размера блока усложнит жизнь майнерам из-за более низкой платы за транзакции. Они боялись, что весь бизнес по добыче биткойнов в этом случае будет невыгодным.
Они также заявили, что Биткойн уже рассматривался как «цифровое золото», и его основное назначение уже сместилось в сторону «накопления стоимости». Вот почему они полагали, что увеличение верхнего предела размера блока больше не должно было быть главным приоритетом.
Оба лагеря не смогли найти решение, которое было бы сочтено приемлемым для обеих сторон. По этой причине, в конце концов, сообщество по продвижению изменений разделило первоначальный биткойн 1 августа 2017 года. В частности, на блоке 478557.
«Новый» биткойн, появившийся после форка, получил название Bitcoin Cash. Они использовали название Bitcoin Cash, потому что они полагали, что первоначальная цель Bitcoin должна была использоваться в качестве наличных. Название «Денежные средства», стоящее за «Биткойн», призвано уважать оригинальное видение и цель самого Биткойна.
После инцидента с исходным биткойном, Bitcoin Cash 15 мая 2018 года испытал очередное обновление ограничения размера блока. В настоящее время ограничение размера блока Bitcoin Cash составляет до 32 МБ.
Для сравнения, Биткойн может обрабатывать только около 4,4 транзакций в секунду (TPS), тогда как Bitcoin Cash может обрабатывать до 116 транзакций в секунду. Это возможно благодаря гораздо большему размеру блока биткойнов.
Помимо различий в скорости и операционных издержках, между биткойном и биткойн кэш нет особой технической разницы. Считая, что BCH - простой форк BTC, они имеют много общего. Скрипт, проводник цепочки блоков и даже устаревший адрес BCH, они очень похожи (или даже одинаковы) с биткойном.
К вашему сведению, многие сторонники BCH часто называют BTC «биткойн-ядром» и называют BCH «настоящим биткойном». Конечно, термины обсуждались бесчисленное количество раз другими крипто-энтузиастами.
Анализ
Там нет «официальных соучредителей» Bitcoin Cash, поскольку это раздвоенная версия самого оригинального Bitcoin. Многие из разработчиков Биткойн много лет назад начали разрабатывать для Биткойн Кэш, со времени его существования. Один из наиболее известных разработчиков, который перевел поддержку с BTC на BCH, - это Гэвин Андресен . Гевин не участвует в развитии Биткойна с февраля 2016 года.
И не забудьте соучредитель " Bitmain " Джихан Ву . Bitmain в основном известен своими чипами ASIC, которые использовались для майнинга BTC. И Джихан Ву, который разбогател на своем "горном" бизнесе, также является большим сторонником и держателем BTC.
Ранее Крэйг Райт (парень, который прославился тем, что называл себя Сатоши) также поддерживал BCH. Но из-за раскола между BCH и BSV (Bitcoin Satoshi Vision) в конце 2018 года Крейг Райт больше не является сторонником BCH. Другой известный сторонник BCH, Кэлвин Эйр, также решил перенести свою поддержку на BSV.
Мы не будем вдаваться в подробности о том, что произошло между BCH и BSV, но в целом между двумя лагерями произошел раскол. Основные аргументы касались изменений в скрипте и обновления ограничения размера блока.
Те, кто решил придерживаться оригинального сценария, пошли на поддержку BSV, в то время как лагерь, который поддерживал BCH, ввел в сценарий два новых кода операции (OP_CHECKDATASIG и OP_CHECKDATASIGVERIFY).
Для вашей информации, BCH был первоначально известен как BCHABC в первые дни раскола, в то время как BSV был известен как BCHSV. Но со временем BCHABC стал более популярной монетой по сравнению с BCHSV. Вот почему BCHABC стал BCH на большинстве криптообменников, а BCHSV стал BSV.
Будущее и потенциальные препятствия
Вот почему будущее Bitcoin Cash, скорее всего, будет зависеть от самого имени Биткойна в глазах крипто-трейдеров, а также в глазах случайных пользователей вне энтузиастов крипто.
BCH в основном можно найти на крипто биржах, которые также принимают биткойны. Из-за того, что крипто-биржи и сервисы кошельков начали использовать Bitcoin, было довольно легко начать использовать Bitcoin Cash, поскольку кодовая база уже была такой же.
Говорить о будущем Bitcoin Cash немного сложно. В какой-то момент будущее Bitcoin Cash зависит от имени самого Bitcoin. С другой стороны, сторонники Bitcoin Cash должны убедить мир, что Bitcoin Cash работает как Bitcoin, но быстрее и дешевле.
И, честно говоря, не так легко убедить людей вне сообщества BCH. Во многих общих крипто сообществах, таких как криптовалюта, многие люди на самом деле критикуют BCH за то, что он всегда сравнивает себя с оригинальным биткойном.
При этом будущее BCH может быть по-настоящему светлым, если сам BTC сможет последовательно повышаться с точки зрения цены по отношению к фиатным валютам ( рубли, евро, доллары), особенно потому, что платформе или кошельку или обменнику действительно легко принять BCH, если они уже принимают BTC.
Принятие
Прежде чем вы решите, является ли Биткойн Кэш хорошей долгосрочной инвестицией или нет, стоит узнать, где была принята монета. С точки зрения обмена криптовалют и услуг кошелька, BCH фактически является одним из наиболее популярных альткойнов.
Многие кошельки, поддерживающие Биткойн, также обычно принимают Биткойн Кэш. Что касается криптообменников, вы можете легко получить BCH на Binance, Coinbase Pro, Bithumb и многих других известных биржах.
Соотношение между ценой BTC и BCH
Давайте поговорим о внешнем факторе, который может повлиять на цену BCH в долгосрочной перспективе. Ну, без сомнения, цены на альткойны почти всегда следуют ценам на биткойн. Когда в декабре 2017 года Биткойн достиг пиковой цены, почти все цены на альткойны также значительно выросли. Когда биткойн упал в 2018 году, почти все альткойны также упали.
Корреляция между ценами BTC и BCH еще сильнее по сравнению с корреляцией между BTC и другими альткойнами. Нет веских доказательств, чтобы объяснить, почему, но большинство ветеранов криптовалют уже знают о корреляции между ценами BTC и BCH.
Всякий раз, когда BTC значительно повышается, иногда альткойны могут немного отставать. Тем не менее, BCH часто повышается значительно без проблем после BTC. Ценовая корреляция между ними (исторически) действительно сильная, хотя, конечно, это не всегда так.
Таким образом, если вы решили инвестировать в BCH, вам нужно обратить пристальное внимание на ценовое действие BTC. Как мы уже упоминали несколько раз, цена BTC будет одним из решающих факторов будущего BCH.
Заключение
У Bitcoin Cash есть все правильные рецепты, чтобы быть успешными. Он имеет гораздо больший размер лимита транзакций блоков, чем исходный биткойн, и способен обрабатывать гораздо больше транзакций в секунду. Многие люди говорят, что Bitcoin Cash послужил первоначальной цели Bitcoin в качестве децентрализованной одноранговой электронной наличности.
При этом его будущее остается сложным. Основная точка продажи Bitcoin Cash должна рассматриваться как настоящий биткойн. А вне лагеря поддержки Биткойн Кэш многие считают,что Биткойн Кэш лишь одна из «альтернатив» Биткойн.
Сможет ли Bitcoin Cash в конечном итоге превзойти первоначальный биткойн или нет, с точки зрения популярности и рыночной капитализации, еще неизвестно. Инвестирование в BCH в долгосрочной перспективе по-прежнему является хорошим вариантом, поскольку, как правило, цена BCH следует за ценой BTC.
Конфликтные хардфорки, приводящие к разделению сети и расколу сообщества на два лагеря, — большая проблема, уверен сторонник Bitcoin Cash Роджер Вер. В интервью CoinDesk он подчеркнул, что если бы PayPal узнала о разногласиях внутри проекта, возможно, вообще не стала бы добавлять Bitcoin Cash (помимо BCH, американские пользователи платежной системы могут покупать, продавать и хранить Bitcoin, Ethereum и Litecoin).
Сам Bitcoin Cash появился в результате хардфорка биткоина. Часть разработчиков настаивала на увеличении размера блоков в блокчейне первой криптовалюты. Они считали, что создатель актива Сатоши Накамото подразумевал в первую очередь недорогие одноранговые транзакции как основную ценность новой технологии.
Теперь в сети BCH обновления проходят каждые полгода. Когда сообщество не может прийти к консенсусу, цепь разделяется. Например, так произошло в 2018 году, в результате ноябрьского хардфорка появилась криптовалюта Bitcoin SV (Satoshi Vision). В 2020 году появилась монета Bitcoin Cash Node (BCHN), которая стала главенствующей после обновления и получила тикер BCH.
Такие события негативно отражаются на стоимости криптовалюты. В декабре 2017 года она достигала исторического максимума стоимости в $4 тыс. Тогда же биткоин торговался на уровне в $20 тыс. Однако с тех пор цена BTC практически отыграла падение, в ноябре текущего года достигая $16,5 тыс., тогда как BCH по-прежнему торгуется на 94% ниже рекордной отметки.
Проект пока находится в очень нестабильном положении, а сообщество имеет серьезные разногласия относительно его дальнейшего развития, подчеркнула официальный представитель биржи криптовалют Garantex Татьяна Максименко. Она добавила, что сомневается в перспективах всех форков биткоина.
«Ни один из них не добился и толики того, чего добился биткоин за 12 лет существования. Зачем нужен Bitcoin Cash, если есть биткоин? Лучше создавать что-то кардинально новое, чем пытаться сделать улучшенный вариант биткоина. Вкладываться в Bitcoin Cash, на мой взгляд, не стоило и до нынешнего форка. С самого начала там было сильно влияние лидеров мнений — того же Роджера Вера, что на децентрализации всегда сказывается не в лучшую сторону. Если хочется купить биткоины, то лучше их и покупать, а не видоизмененные копии», — посоветовала Максименко.
С ней согласился CEO Cryptorg.Exchange Андрей Подолян. По его мнению, сейчас это далеко не самая интересная монета на рынке. Эксперт подчеркнул, что главное во многих криптомонетах — это комьюнити. Если сообщество не будет поддерживать монету, то никакие самые передовые технологии ее не спасут. При этом в сообществе Bitcoin Cash происходят постоянные расколы, что не лучшим образом влияет на ее перспективы.
Больше новостей о криптовалютах вы найдете в нашем телеграм-канале РБК-Крипто.
Проверяем, какое влияние оказывает объём L3 Cache на производительность процессоров Intel Core 10 серии как в рабочих приложениях, так и в играх. Выясняем, почему нельзя использовать старшие процессоры для эмуляции младших моделей.
Что такое кэш процессора и зачем он нужен
Кэш процессора – это очень быстрая память. Он выполняет функцию буфера (временного хранения данных), из которого процессор очень быстро может получить необходимую для обработки информацию.
Современные процессоры, будь то Intel или AMD, в основном имеет 3 уровня кэша:
- L1 Cache (кэш первого уровня) — очень быстрый, но относительно небольшой, содержит данные и команды, которые понадобятся для работы в первую очередь.
- L2 Cache (кэш второго уровня процессора) — медленнее чем L1 Cache, но значительно больше по размеру. Содержит в себе данные, которые могут скоро потребоваться, но не уместились в L1.
- L3 Cache (кэш третьего уровня) — самый медленный, но в то же время самый большой по объёму хранения информации, его скорость обычно в пять-шесть раз превышает скорость DRAM.
В многоядерных процессорах каждое ядро имеет выделенный кэш L1 и L2 Cache, а вот к L3 Cache чье влияние на производительность мы и будем сегодня изучать имеют доступ все ядра процессора.
Когда процессору необходимо получить данные, поиск он начинает с кэша первого уровня. Если нужной информации в нем нет, он повторяет поиск в кэше второго и третьего уровня что несколько увеличивает время на выполнение операции. Если поиск завершился неудачей процессору приходится обращаться к оперативной памяти что значительно увеличивает время выполнение операции.
Именно поэтому чем больше объём кэша, тем больше вероятность нахождения в нем нужных данных, а значит сократить задержек. Но и у большого кэша есть и свои минусы, о которых чуть позже.
Более подробно о работе кэша процессора и зачем он нужен можно ознакомиться в статье "Что такое кэш в процессоре и зачем он нужен"
В тестировании участвую 4 процессора Intel из 10 серии:
Чтобы измерить именно влияние объёма L3 Cache на производительность процессора, зафиксируем частоту ядер всех участников на отметке 4000 MHz, а у старших моделей дополнительно отключим ядра, чтобы конфигурация ядер всех участников составила 4 ядра с HT, как и у младшей модели intel Core i3.
Частота контроллера памяти во всех случаях составила 3400 MHz. Оперативная память работала на частоте 2133 MHz по стандарту JEDEC c таймингами 15-15-15-36 CR2.
Тестовая конфигурация
- Материнская плата — MSI MPG Z490 GAMING CARBON WIFI;
- Оперативная память №1 — G.SKILL F4-3000C14-16GVR 2x16GB;
- Видеокарта — GIGABYTE GeForce RTX 3070 EAGLE OC;
- Накопитель №1 — M.2 Samsung 970 Pro 512 Гбайт;
- Накопитель №2 — SATA-III SanDisk Ultra II 960 Гб SDSSDHII-960G-G25;
- Блок питания — Cooler Master V1200 Platinum 1200 ВТ.
Тестирование в бенчмарках
В Aida64 Cache and Memory Benchmark разный объём L3 Cache оказывает незначительное влияние на прописную способность памяти, также можно заметить, что процессор с более больший кэш 3 уровня несколько отстает по скорости и задержкам от своих младших собратьев с меньшем кэшем.
Бенчмарк CPU-Z как и Geekbench 5 не питает большой любви к объёму кэша, хоть и прослеживается незначительное изменение в производительности.
Похожая картина наблюдается и в бенчмарке 3DMark Time Spy.
А вот программы архивации, в частности, WinRAR, отдают предпочтение процессору с большим кэшем, разница в производительности доходит до 35 %.
7-Zip также положительно откликается на увеличение объёма кэша, разница между моделью i3 с L3 Cache 6 mb и процессором i9 L3 Cache 20 mb составляет порядка 20 % в операциях упаковки.
Получив такую неоднозначную реакцию бенчмарков на объём кэша третьего уровня, переходим к тестированию в играх.
Тестирование в играх
Скандинавская сага о набегах викингов хорошо откликается на изменение объёма L3 кэша, и если переход от процессора с 6 мегабайтами кэша на 12 кажется не столь значительным, то переход на модель i9 c 20 мегабайтами кэша 3 уровня составляет уже 15%.
Подобная картина наблюдается во всех протестированных играх, где-то влияние больше где-то меньше, но оно безусловно.
Это еще раз доказывает факт того что использовать для тестирования необходимо оригинальные модели процессоров а не старшую модель для эмуляции младших путем отключения ядер процессора в биос материнской платы.
Выводы
Изменение объёма кэша 3 уровня положительно сказывается на игровой производительности процессора. Большинство протестированных программ практически не реагируют на его изменение, исключением являются программы-архиваторы.
В целом объем кэша 3 уровня играет немалую роль в производительности процессора, но самостоятельно пользователь увеличить его объем, увы, не сможет.
Выход процессоров AMD Zen 2 с увеличенным до 32 мегабайт кэшем 3 уровня должен был заставить инженеров Intel задуматься, ведь процессор intel Core i3 10100 c кэшем 3 уровня 20 мегабайт мог бы составить конкуренцию даже процессорам Ryzen 5000 серии.
В то же время у большого кэша есть и недостатки — это большая площадь, занимаемая на подложке, и возросшие задержки, но эти недостатки не кажутся такими серьезными на фоне роста производительности.
Во всех центральных процессорах любого компьютера, будь то дешёвый ноутбук или сервер за миллионы долларов, есть устройство под названием «кэш». И с очень большой вероятностью он обладает несколькими уровнями.
Наверно, он важен, иначе зачем бы его устанавливать? Но что же делает кэш, и для чего ему разные уровни? И что означает «12-канальный ассоциативный кэш» (12-way set associative)?
Что такое кэш?
TL;DR: это небольшая, но очень быстрая память, расположенная в непосредственной близости от логических блоков центрального процессора.
Однако мы, разумеется, можем узнать о кэше гораздо больше…
Давайте начнём с воображаемой волшебной системы хранения: она бесконечно быстра, может одновременно обрабатывать бесконечное количество операций передачи данных и всегда обеспечивает надёжное и безопасное хранение данных. Конечно же, ничего подобного и близко не существует, однако если бы это было так, то структура процессора была бы гораздо проще.
Процессорам бы тогда требовались только логические блоки для сложения, умножения и т.п, а также система управления передачей данных, ведь наша теоретическая система хранения способна мгновенно передавать и получать все необходимые числа; ни одному из логических блоков не приходится простаивать в ожидании передачи данных.
Но, как мы знаем, такой волшебной технологии хранения не существует. Вместо неё у нас есть жёсткие диски или твердотельные накопители, и даже самые лучшие из них далеки от возможностей обработки, необходимых для современного процессора.
Великий Т'Фон хранения данных
Причина этого заключается в том, что современные процессоры невероятно быстры — им требуется всего один тактовый цикл для сложения двух 64-битных целочисленных значений; если процессор работает с частотой 4 ГГЦ, то это составляет всего 0,00000000025 секунды, или четверть наносекунды.
В то же время, вращающемуся жёсткому диску требуются тысячи наносекунд только для нахождения данных на дисках, не говоря уже об их передаче, а твердотельным накопителям — десятки или сотни наносекунд.
Очевидно, что такие приводы невозможно встроить внутрь процессоров, поэтому между ними будет присутствовать физическое разделение. Поэтому ещё добавляется время на перемещение данных, что усугубляет ситуацию.
Увы, но это Великий А'Туин хранения данных
Именно поэтому нам нужна ещё одна система хранения данных, расположенная между процессором и основным накопителем. Она должна быть быстрее накопителя, способна одновременно управлять множеством операций передачи данных и находиться намного ближе к процессору.
Ну, у нас уже есть такая система, и она называется ОЗУ (RAM); она присутствует в каждом компьютере и выполняет именно эту задачу.
Почти все такие хранилища имеют тип DRAM (dynamic random access memory); они способны передавать данные гораздо быстрее, чем любой накопитель.
Однако, несмотря на свою огромную скорость, DRAM не способна хранить такие объёмы данных.
Одни из самых крупных чипов памяти DDR4, разработанных Micron, хранят 32 Гбит, или 4 ГБ данных; самые крупные жёсткие диски хранят в 4 000 раз больше.
Итак, хоть мы и повысили скорость нашей сети данных, нам потребуются дополнительные системы (аппаратные и программные), чтобы разобраться, какие данные должны храниться в ограниченном объёме DRAM, готовые к обработке процессором.
DRAM могут изготавливаться в корпусе чипа (это называется встроенной (embedded) DRAM). Однако процессоры довольно малы, поэтому в них не удастся поместить много памяти.
10 МБ DRAM слева от графического процессора Xbox 360. Источник: CPU Grave Yard
Подавляющее большинство DRAM расположено в непосредственной близости от процессора, подключено к материнской плате и всегда является самым близким к процессору компонентом. Тем не менее, эта память всё равно недостаточно быстра…
DRAM требуется примерно 100 наносекунд для нахождения данных, но, по крайней мере, она способна передавать миллиарды битов в секунду. Похоже, нам нужна ещё одна ступень памяти, которую можно разместить между блоками процессора и DRAM.
На сцене появляется оставшаяся ступень: SRAM (static random access memory). DRAM использует микроскопические конденсаторы для хранения данных в виде электрического заряда, а SRAM для той же задачи применяет транзисторы, которые работают с той же скоростью, что и логические блоки процессора (примерно в 10 раз быстрее, чем DRAM).
Разумеется, у SRAM есть недостаток, и он опять-таки связан с пространством.
Память на основе транзисторов занимает гораздо больше места, чем DRAM: в том же размере, что чип DDR4 на 4 ГБ, можно получить меньше 100 МБ SRAM. Но поскольку она производится по тому же технологическому процессу, что и CPU, память SRAM можно встроить прямо внутрь процессора, максимально близко к логическим блокам.
С каждой дополнительной ступенью мы увеличивали скорость перемещаемых данных ценой хранимого объёма. Мы можем продолжить и добавлять новые ступени,, которые будут быстрее, но меньше.
И так мы добрались до более строгого определения понятия кэша: это набор блоков SRAM, расположенных внутри процессора; они обеспечивают максимальную занятость процессора благодаря передаче и сохранению данных с очень высокими скоростями. Вас устраивает такое определение? Отлично, потому что дальше всё будет намного сложнее!
Кэш: многоуровневая парковка
На приведённом выше изображении процессор (CPU) обозначен прямоугольником с пунктирной границей. Слева расположены ALU (arithmetic logic units, арифметико-логические устройства); это структуры, выполняющие математические операции. Хотя строго говоря, они не являются кэшем, ближайший к ALU уровень памяти — это регистры (они упорядочены в регистровый файл).
Каждый из них хранит одно число, например, 64-битное целое число; само значение может быть элементом каких-нибудь данных, кодом определённой инструкции или адресом памяти каких-то других данных.
Регистровый файл в десктопных процессорах довольно мал, например, в каждом из ядер Intel Core i9-9900K есть по два банка таких файлов, а тот, который предназначен для целых чисел, содержит всего 180 64-битных целых чисел. Другой регистровый файл для векторов (небольших массивов чисел) содержит 168 256-битных элементов. То есть общий регистровый файл каждого ядра чуть меньше 7 КБ. Для сравнения: регистровый файл потоковых мультипроцессоров (так в GPU называются аналоги ядер CPU) Nvidia GeForce RTX 2080 Ti имеет размер 256 КБ.
Регистры, как и кэш, являются SRAM, но их скорость не превышает скорость обслуживаемых ими ALU; они передают данные за один тактовый цикл. Но они не предназначены для хранения больших объёмов данных (только одного элемента), поэтому рядом с ними всегда есть более крупные блоки памяти: это кэш первого уровня (Level 1).
Одно ядро процессора Intel Skylake. Источник: Wikichip
На изображении выше представлен увеличенный снимок одного из ядер десктопного процессора Intel Skylake.
ALU и регистровые файлы расположены слева и обведены зелёной рамкой. В верхней части фотографии белым обозначен кэш данных первого уровня (Level 1 Data cache). Он не содержит много информации, всего 32 КБ, но как и регистры, он расположен очень близко к логическим блокам и работает на одной скорости с ними.
Ещё одним белым прямоугольником справа показан кэш инструкций первого уровня (Level 1 Instruction cache), тоже имеющий размер 32 КБ. Как понятно из названия, в нём хранятся различные команды, готовые к разбиению на более мелкие микрооперации (обычно обозначаемые μops), которые должны выполнять ALU. Для них тоже существует кэш, который можно классифицировать как Level 0, потому что он меньше (содержит всего 1 500 операций) и ближе, чем кэши L1.
Вы можете задаться вопросом: почему эти блоки SRAM настолько малы? Почему они не имеют размер в мегабайт? Вместе кэши данных и инструкций занимают почти такую же площадь на чипе, что основные логические блоки, поэтому их увеличение приведёт к повышению общей площади кристалла.
Но основная причина их размера в несколько килобайт заключается в том, что при увеличении ёмкости памяти повышается время, необходимое для поиска и получения данных. Кэшу L1 нужно быть очень быстрым, поэтому необходимо достичь компромисса между размером и скоростью — в лучшем случае для получения данных из этого кэша требуется около 5 тактовых циклов (для значений с плавающей запятой больше).
Кэш L2 процессора Skylake: 256 КБ SRAM
Но если бы это был единственный кэш внутри процессора, то его производительность наткнулась бы на неожиданное препятствие. Именно поэтому в ядра встраивается еще один уровень памяти: кэш Level 2. Это обобщённый блок хранения, содержащий инструкции и данные.
Он всегда больше, чем Level 1: в процессорах AMD Zen 2 он занимает до 512 КБ, чтобы кэши нижнего уровня обеспечивались достаточным объёмом данных. Однако большой размер требует жертв — для поиска и передачи данных из этого кэша требуется примерно в два раза больше времени по сравнению с Level 1.
Во времена первого Intel Pentium кэш Level 2 был отдельным чипом, или устанавливаемым на отдельной небольшой плате (как ОЗУ DIMM), или встроенным в основную материнскую плату. Постепенно он перебрался в корпус самого процессора, и, наконец, полностью интегрировался в кристалл чипа; это произошло в эпоху таких процессоров, как Pentium III и AMD K6-III.
За этим достижением вскоре последовал ещё один уровень кэша, необходимый для поддержки более низких уровней, и появился он как раз вовремя — в эпоху расцвета многоядерных чипов.
Чип Intel Kaby Lake. Источник: Wikichip
На этом изображении чипа Intel Kaby Lake в левой части показаны четыре ядра (интегрированный GPU занимает почти половину кристалла и находится справа). Каждое ядро имеет свой «личный» набор кэшей Level 1 и 2 (выделены белыми и жёлтым прямоугольниками), но у них также есть и третий комплект блоков SRAM.
Кэш третьего уровня (Level 3), хоть и расположен непосредственно рядом с одним ядром, является полностью общим для всех остальных — каждое ядро свободно может получать доступ к содержимому кэша L3 другого ядра. Он намного больше (от 2 до 32 МБ), но и намного медленнее, в среднем более 30 циклов, особенно когда ядру нужно использовать данные, находящиеся в блоке кэша, расположенного на большом расстоянии.
Ниже показано одно ядро архитектуры AMD Zen 2: кэши Level 1 данных и инструкций по 32 КБ (в белых прямоугольниках), кэш Level 2 на 512 КБ (в жёлтых прямоугольниках) и огромный блок кэша L3 на 4 МБ (в красном прямоугольнике).
Увеличенный снимок одного ядра процессора AMD Zen 2. Источник: Fritzchens Fritz
Но постойте: как 32 КБ могут занимать больше физического пространства чем 512 КБ? Если Level 1 хранит так мало данных, почему он непропорционально велик по сравнению с кэшами L2 и L3?
Не только числа
Кэш повышает производительность, ускоряя передачу данных в логические блоки и храня поблизости копию часто используемых инструкций и данных. Хранящаяся в кэше информация разделена на две части: сами данные и место, где они изначально располагаются в системной памяти/накопителе — такой адрес называется тег кэша (cache tag).
Когда процессор выполняет операцию, которой нужно считать или записать данные из/в память, то он начинает с проверки тегов в кэше Level 1. Если нужные данные там есть (произошло кэш-попадание (cache hit)), то доступ к этим данным выполняется почти сразу же. Промах кэша (cache miss) возникает, если требуемый тег не найден на самом нижнем уровне кэша.
В кэше L1 создаётся новый тег, а за дело берётся остальная часть архитектуры процессора выполняющая поиск в других уровнях кэша (при необходимости вплоть до основного накопителя) данных для этого тега. Но чтобы освободить пространство в кэше L1 под этот новый тег, что-то обязательно нужно перебросить в L2.
Это приводит к почти постоянному перемешиванию данных, выполняемому всего за несколько тактовых циклов. Единственный способ добиться этого — создание сложной структуры вокруг SRAM для обработки управления данными. Иными словами, если бы ядро процессора состояло всего из одного ALU, то кэш L1 был бы гораздо проще, но поскольку их десятки (и многие из них жонглируют двумя потоками инструкций), то для перемещения данных кэшу требуется множество соединений.
Для изучения информации кэша в процессоре вашего компьютера можно использовать бесплатные программы, например CPU-Z. Но что означает вся эта информация? Важным элементом является метка set associative (множественно-ассоциативный) — она указывает на правила, применяемые для копирования блоков данных из системной памяти в кэш.
Представленная выше информация кэша относится к Intel Core i7-9700K. Каждый из его кэшей Level 1 разделён на 64 небольших блока, называемые sets, и каждый из этих блоков ещё разбит на строки кэша (cache lines) (размером 64 байта). «Set associative» означает, что блок данных из системы привязывается к строкам кэша в одном конкретном сете, и не может свободно привязываться к какому-то другому месту.
Инклюзивный кэш L1+L2, victim cache L3, политики write-back, есть даже ECC. Источник: Fritzchens Fritz
Ещё один аспект сложности кэша связан с тем, как хранятся данные между разными уровнями. Правила задаются в inclusion policy (политике инклюзивности). Например, процессоры Intel Core имеют полностью инклюзивные кэши L1+L3. Это означает, что одни данные в Level 1, например, могут присутствовать в Level 3. Может показаться, что это пустая трата ценного пространства кэша, однако преимущество заключается в том, что если процессор совершает промах при поиске тега в нижнем уровне, ему не потребуется обыскивать верхний уровень для нахождения данных.
В тех же самых процессорах кэш L2 неинклюзивен: все хранящиеся там данные не копируются ни на какой другой уровень. Это экономит место, но приводит к тому, что системе памяти чипа нужно искать ненайденный тег в L3 (который всегда намного больше). Victim caches (кэши-жертвы) имеют похожий принцип, но они используются для хранения информации, переносимой с более низких уровней. Например, процессоры AMD Zen 2 используют victim cache L3, который просто хранит данные из L2.
Существуют и другие политики для кэша, например, при которых данные записываются и в кэш, и основную системную память. Они называются политиками записи (write policies); большинство современных процессоров использует кэши write-back — это означает, что когда данные записываются на уровень кэшей, происходит задержка перед записью их копии в системную память. Чаще всего эта пауза длится в течение того времени, пока данные остаются в кэше — ОЗУ получает эту информацию только при «выталкивании» из кэша.
Графический процессор Nvidia GA100, имеющий 20 МБ кэша L1 и 40 МБ кэша L2
Для проектировщиков процессоров выбор объёма, типа и политики кэшей является вопросом уравновешивания стремления к повышению мощности процессора с увеличением его сложности и занимаемым чипом пространством. Если бы можно было создать 1000-канальные ассоциативные кэши Level 1 на 20 МБ такими, чтобы они при этом не занимали площадь Манхэттена (и не потребляли столько же энергии), то у нас у всех бы были компьютеры с такими чипами!
Самый нижний уровень кэшей в современных процессорах за последнее десятилетие практически не изменился. Однако кэш Level 3 продолжает расти в размерах. Если бы десять лет назад у вас было 999 долларов на Intel i7-980X, то вы могли бы получить кэш размером 12 МБ. Сегодня за половину этой суммы можно приобрести 64 МБ.
Подведём итог: кэш — это абсолютно необходимое и потрясающее устройство. Мы не рассматривали другие типы кэшей в CPU и GPU (например, буферы ассоциативной трансляции или кэши текстур), но поскольку все они имеют такую же простую структуру и расположение уровней, разобраться в них будет несложно.
Был ли у вас компьютер с кэшем L2 на материнской плате? Как насчёт слотовых Pentium II и Celeron (например, 300a) на дочерних платах? Помните свой первый процессор с общим L3?
На правах рекламы
Наша компания предлагает в аренду серверы с процессорами от Intel и AMD. В последнем случае — это эпичные серверы! VDS с AMD EPYC, частота ядра CPU до 3.4 GHz. Максимальная конфигурация — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.
Читайте также: