Кэш память и её предназначение в процессоре

Кэш-память на жёстком диске

Определение скорости, объёма и типа памяти в Windows 10

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

  1. Нажмите сочетание клавиш Win + I для запуска приложения «Параметры».
  2. Перейдите в раздел «Система».

Это самый простой метод узнать объём оперативной памяти. Если вам нужно больше информации, читайте дальше.

Просмотр информации о RAM в окне командной строки

Лучшим методом получения информации относительно оперативной памяти компьютера является командная строка Windows 10 или PowerShell. Другие встроенные приложения вроде «Информация о системе» и панели управления показывают часть информации, такую как объём, тип или то и другое. Вот как узнать подробности:

  1. Нажмите на кнопку «Пуск», наберите в поиске cmd, выберите наверху списка на приложение «Командная строка».

  1. Наберите в окне следующую команду и нажмите ввод:
wmic MemoryChip get MemoryType, Name, Capacity, Configuredclockspeed, DeviceLocator, FormFactor, Manufacturer, Serialnumber, Speed

  1. Для более подробной информации можно добавить следующие параметры:
ConfiguredVoltage, DataWidth, MaxVoltage, CreationClassName, InterleavePosition

Некоторые из этих параметров могут не отображать никакой информации.

Для просмотра полного списка параметров наберите следующую команду и ищите в разделе FULL:

WMIC MemoryChip List /?

Просмотр информации об оперативной памяти в PowerShell

  1. Правой кнопкой мыши нажмите на меню «Пуск» и выберите Windows PowerShell. Необязательно запускать от имени администратора.

  1. Наберитеследующийкод:
Get-CimInstance -ClassName Win32_PhysicalMemory | Format-Table Capacity, Manufacturer, MemoryType, FormFactor, Name, Configuredclockspeed, Speed, Devicelocator, Serialnumber -AutoSize

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

Просмотр сведений об оперативной памяти в Windows 10 в приложении CPU-Z

  1. Скачайте программу CPU-Z и запустите исполнительный файл. Скорее всего подойдёт вариант CLASSIC VERSIONS.

  1. Откройте вкладку «Память» для просмотра количества доступных на материнской плате слотов памяти, типа установленной памяти (DDR, DDR2, DDR3), объёма памяти (ГБ). Вы увидите информацию о тактовой частоте памяти и задержках.

Meltdown

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

Ещё немного о PML4

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

  • P (Present) указывает на то, что далее идёт таблица следующего уровня. Если 0, то вместо указателя на следующую таблицу лежит указатель на физическую страницу без смещения. Если в PT будет лежать сразу указатель на физический сегмент, то такой сегмент будет размером 2 МБ. C 1 ГБ сегментами аналогично, только в PD-таблице.
  • R/W (Read/Write) указывает на доступ для чтения. Если стоит 0, то разрешено только чтение.
  • NX (No Execute) (самый левый), установленный в 1, запрещает исполнение данных как программный код.
  • U/S (User/Supervisor), установленный в 0, запрещает использовать данные процессам (User, кольцо защиты 3), память может быть использована только ОС и драйверами (Supervisor, кольцо 0) (это по сути самый важный флаг для Meltdown).
  • A (Accessed) указывает на то, была ли память, на которую указывает таблица, использована хотя бы раз.

Принцип работы

Наконец, перейдём к самому принципу работы уязвимости Metldown.

Ранее уже было написано о спекулятивном исполнении команд в статье об архитектуре процессора. Цитата из статьи: «Спекулятивное исполнение команд — это выполнение команды до того, как станет известно, понадобится эта команда или нет».

Суть атаки в том, что современные ОС всё своё адресное пространство отображают в адресном пространстве каждого пользователя (процесса). Другими словами добавляют в PML4-таблицу процесса указатели на подтаблицы ОС, но с флагом U/S, установленным в 0. Это сделано для того, чтобы при переключении контекста процесса уменьшить количество операций перезаписи CR3 и улучшить кэширование данных ОС с чистыми VIPT- или VIVP-кэшами (PML4 первого процесса → PML4 второго процесса вместо PML4 первого процесса → PML4 ОС → PML4 второго процесса), но эту защиту можно обойти в некоторых процессорах Intel и ARM (у AMD обнаружили только уязвимость Spectre, у которой другой принцип работы).

Некоторые ОС используют одну PML4-таблицу на всю систему, а при переключении контекста меняют только подтаблицы. Отсюда в той же Windows максимальный размер ОЗУ 256 ГБ — максимальный размер таблицы PDP.

При спекулятивном исполнении в уязвимых процессорах часть команд может выполниться до того, как будет проверено, стоит ли бит 0 в U/S флаге. Причём благодаря спекуляции код атаки может быть выполнен из недостижимого кода, например, в ветке else при всегда истинном условии в if, перед тем, как процессору станет известно, что этот код недостижим. После того, как процессор поймёт, что доступа к этой памяти нет, он обнулит результат команд доступа к памяти, сбросив соответствующие регистры, но TLB- и L1-кэш он сбрасывать не будет. А в них уже не хранится флаг U/S, поэтому процесс может получить полный доступ к успевшей закэшироваться закрытой памяти ядра ОС, ведь процессор, который нашёл нужную запись в L1 и TLB, не будет проверять её в PML4. Решается эта проблема либо аппаратно — добавлением флагов из PML4 в TLB, либо программно — удаление таблиц памяти ОС из PML4-процессов, что увеличит время смены контекста и системных вызовов.

История[]

Впервые слово «cache» в компьютерном контексте было использовано в 1967 году во время подготовки статьи для публикации в журнале «IBM Systems Journal». Статья касалась усовершенствования памяти в разрабатываемой модели 85 из серии IBM System/360. Редактор журнала Лайл Джонсон попросил придумать более описательный термин, нежели «высокоскоростной буфер», но из-за отсутствия идей сам предложил слово «cache». Статья была опубликована в начале 1968 года, авторы были премированы IBM, их работа получила распространение и впоследствии была улучшена, а слово «кэш» вскоре стало использоваться в компьютерной литературе как общепринятый термин.

Что же такое кэш?

Это небольшая, но очень быстрая память, которая находится рядом с логическими блоками процессора.

Но, конечно, такого определения нам недостаточно…

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

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

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

Причина в том, что современные процессоры невероятно быстры – им требуется всего один такт, чтобы сложить два 64-битных целых числа, а для процессора, работающего на частоте 4 ГГц, это занимает всего 0,00000000025 секунды (четверть наносекунды).

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

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

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

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

Почти всегда это – DRAM (динамическая память с произвольным доступом), и она способна совершать обмен данными намного быстрее любого диска.

Однако, значительно превосходя в скорости, DRAM столь же значительно уступает в объёме хранимых данных.

Самые большие на сегодня чипы DDR4 (производства Micron, одного из немногих производителей DRAM) уступают самым большим по объёму жестким дискам примерно в 4000 раз.

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

Но по крайней мере, DRAM можно встроить в корпус процессора (встраиваемая DRAM, eDRAM). Однако процессоры относительно небольшие, поэтому особо внутри них не развернёшься.

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

Опять же, для поиска данных DRAM требуется время около 100 наносекунд, но по крайней мере она может передавать миллиарды бит данных в секунду. Похоже, нам понадобится еще одна промежуточная память, между блоками процессора и DRAM.

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

Конечно, у SRAM есть недостаток, и опять же, речь об объёме.

Транзисторная память занимает намного больше физического места, чем DRAM: чип SRAM размером с чип DDR4 4 Гб будет иметь объём менее 100 Мб. Но поскольку технологически SRAM основана на том же процессе, что и процессор, то её можно встроить прямо внутрь него, в непосредственной близости к его логическим блокам.

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

И вот теперь мы можем дать более внятное определение, что такое кэш: это несколько модулей SRAM, расположенных внутри процессора. Они обеспечивают максимальную загрузку логических блоков, выполняя обмен данными на сверхвысоких скоростях. Этого достаточно? Отлично, потому что с этого момента все станет намного сложнее!

Кеш-память и алгоритмы обработки данных

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

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

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

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

Кэш память компьютера: характеристики и принцип работы

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

Основными характеристиками кэш памяти являются её размер и скорость доступа. Кэш память обычно делится на несколько уровней — L1, L2 и L3. L1 кэш имеет наименьший размер и наиболее быстрый доступ к данным, а L3 кэш имеет наибольший размер и более медленный доступ. Размер и количество уровней кэш памяти зависит от конкретного процессора и его архитектуры.р>

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

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

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

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

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

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

Анализ эффективности работы кэш-памяти

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

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

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

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

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

Как проверить технические характеристики процессора

Для проверки технических характеристик процессора на ноутбуке можно использовать несколько способов:

  1. Системная информация: В операционной системе Windows можно открыть «Системную информацию», нажав правую кнопку мыши на значке «Мой компьютер» и выбрав пункт «Свойства». В открывшемся окне будет указана информация о процессоре, включая его название, тактовую частоту и количество ядер.
  2. Утилиты для мониторинга: Существуют различные утилиты, которые позволяют мониторить состояние компьютера, включая информацию о процессоре. Программы такие, как CPU-Z или AIDA64, предоставляют подробную информацию о процессоре, включая модель, архитектуру, тактовую частоту, технологии и другие параметры.
  3. Онлайн-сервисы: Существуют также онлайн-сервисы, которые позволяют проверить технические характеристики процессора, используя веб-браузер. Некоторые из таких сервисов предоставляют дополнительную информацию о производительности и сравнении с другими процессорами.

Независимо от выбранного способа, важно помнить о следующих характеристиках процессора, которые могут быть полезны при его проверке:

  • Модель: указывает на конкретную серию и модель процессора;
  • Тактовая частота: определяет скорость работы процессора в герцах;
  • Количество ядер: отвечает за параллельную обработку информации и влияет на производительность;
  • Socket: определяет совместимость с материнской платой;
  • Кэш-память: служит для временного хранения данных, ускоряя доступ к ним;
  • Технологии: такие, как Hyper-Threading или Turbo Boost, могут влиять на производительность.

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

Стоит ли больше кэша

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

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

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

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

Для чего нужен кэш

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

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

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

Что такое кэш?

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

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

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

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

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

Такие диски невозможно встроить в процессоры, поэтому между ними есть физическое разделение. Это увеличивает время на перемещение данных.

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

Такая память уже существует и называется оперативной (RAM). Она есть в каждом компьютере.

Чаще всего это тип памяти DRAM (dynamic random access memory), где данные передаются намного быстрее, чем на любом диске.

Однако, хотя DRAM очень быстрая, она не может хранить в себе много данных. Производителем одних из наиболее крупных чипов памяти DDR4 является Micron. Их объём составляет 32 Гбит или 4 Гб, тогда как крупнейшие жёсткие диски вмещают в 4000 раз больше.

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

Бывает также встроенная в процессоры память DRAM. Поскольку размер процессоров невелик, такой памяти внутри них не может быть много.

10 Мб DRAM слева от графического процессора в Xbox 360

Обычно память DRAM располагается рядом с процессором на материнской плате. Это ближайший к процессору компонент внутри компьютерных систем. И всё же, даже такая память недостаточно быстрая.

DRAM тратит около 100 наносекунд на поиск данных, но она хотя бы может передавать миллиарды бит информации каждую секунду. Нужен ещё один уровень памяти, который будет находиться между процессорными блоками и DRAM.

Такой памятью является SRAM (static random access memory). Если DRAM использует микроскопические конденсаторы для хранения данных в виде электрического сигнала, то SRAM применяет для этого транзисторы. Они работают почти так же быстро, как логические блоки процессора, в десять раз быстрее по сравнению с DRAM.

Недостатком SRAM является объём. Память на основе транзисторов занимает больше места, чем DRAM. При одинаковых размерах чип DRAM обладает объёмом памяти 4 Гб, а SRAM будет меньше 100 Мб. Поскольку она производится на основе того же процесса, что и сам CPU, SRAM может быть встроена в него и находиться максимально близко к логическим блокам.

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

Но сначала разберемся с диодом

Вдыхаем!

Кремний (он же Si – «silicium» в таблице Менделеева) относится к категории полупроводников, а значит он, с одной стороны, пропускает ток лучше диэлектрика, с другой, – делает это хуже, чем металл.

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

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

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

Так стали использовать 5-валентную примесь фосфора, за счет чего получили транзисторы n-типа. Наличие дополнительного электрона позволило ускорить их движение, повысив пропуск тока.

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

Предположим, мы взяли кремниевую пластину и легировали одну ее часть при помощи примеси p-типа, а другую – при помощи n-типа. Так мы получили диод – базовый элемент транзистора.

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

Если к диоду подключить источник питания таким образом, чтобы «–» касался p-стороны пластины, а «+» – n-стороны, протекание тока будет невозможно из-за того, что дырки притянутся в минусовому контакту источника питания, а электроны – к плюсовому, и связь между электронами p и n стороны будет утеряна за счет расширения объединенного слоя.

Но если подключить питание с достаточным напряжением наоборот, т.е. «+» от источника к p-стороне, а «–» – к n-стороне, размещенные на n-стороне электроны будут отталкиваться отрицательным полюсом и выталкиваться на p-сторону, занимая дырки в p-области.

Но теперь электроны притягивает к положительному полюсу источника питания и они продолжаются перемещаться по p-дыркам. Это явление назвали прямым смещением диода.

Больше, чем просто число

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

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

В результате происходит почти непрерывное перемещение данных, на которое уходит всего несколько тактов процессора. Для достижения этого нужна сложная структура вокруг SRAM, которая управляет данными. Если бы процессор состоял всего из одного АЛУ, кэш L1 был бы намного проще.

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

CPU-Z

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

На изображении выше показана информация о кэше Intel Core i7-9700K. кэш первого уровня разделён на 64 небольших блока, которые называются наборы. Каждый из них разделён на линии кэша размером 64 байт. Модульно-ассоциативный означает, что блок данных из системной памяти помещается в линиях кэша одного определённого набора вместо того, чтобы помечаться где угодно.

Процессор Intel Core i7-9700K

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

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

Инклюзивный кэш L1+L2, кэш-жертва, политики обратной записи, ECC

Другой аспект сложности кэша относится к тому, как данные сохраняются на разных уровнях. Правила описываются в политике инклюзивности. Например, процессоры Intel Core обладают полностью инклюзивным кэшем L1+L3.

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

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

Существуют и другие политики кэша. Например, когда данные записываются в кэш и основную системную память. Это называется политиками записи и большинство современных процессоров используют кэши с обратной записью (write-back).

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

Графический процессор Nvidia GA100 с кэшем L1 20 Мб и L2 40 Мб

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

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

Кэши нижнего уровня в современных процессорах не менялись на протяжении последнего десятилетия. Зато постоянно растёт размер кэша L3. 10 лет назад в Intel i7-980X за $999 его размер составлял 12 Мб. Теперь в два раза дешевле можно взять процессор с кэшем 64 Мб.

Dzen News Google News

Вывод

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

Для более подробного изучения этой темы вы можете прочитать литературу, например, трёхтомник Э. С. Таненбаума или документы от Intel про x86_64 — благо они есть в свободном доступе — или другую микроархитектуру, а также посмотреть доклад с конференции C++ Russia 2018 для уточнения некоторых мелочей про кэши и виртуальную адресацию, не описанных в этой статье.

Понравилась статья? Поделиться с друзьями:
Jsk-oren
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: