Данные, считанные из основной памяти, могут быть переданы в процессор для хранения

Обновлено: 03.07.2024

Прямой доступ к памяти (DMA) – это метод, который позволяет устройству ввода-вывода (I/O) отправлять или получать данные непосредственно в основную память или из нее, минуя ЦП для ускорения операций с памятью.

Процессом управляет микросхема, известная как контроллер прямого доступа к памяти (DMAC).

Techopedia объясняет прямой доступ к памяти (DMA)

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

В старых компьютерах четыре канала прямого доступа к памяти имели номера 0, 1, 2 и 3. Когда была введена 16-битная шина расширения промышленного стандарта (ISA), были добавлены каналы 5, 6 и 7.

ISA — это стандарт компьютерной шины для IBM-совместимых компьютеров, позволяющий устройству инициировать транзакции (управление шиной) на более высокой скорости. Контроллер DMA ISA имеет 8 каналов DMA, каждый из которых связан с 16-битным адресом и регистрами счетчика.

С тех пор на смену ISA пришли карты расширения с ускоренным графическим портом (AGP) и интерфейсом периферийных компонентов (PCI), которые стали намного быстрее. Каждый DMA передает примерно 2 МБ данных в секунду.

Номера запросов на прерывание (IRQ).

Каналы прямого доступа к памяти (DMA).

Каналы DMA используются для передачи данных между периферийным устройством и системной памятью. Все четыре системных ресурса зависят от определенных линий на шине. Некоторые линии на шине используются для IRQ, некоторые для адресов (адреса ввода/вывода и адрес памяти), а некоторые для каналов DMA.

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

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

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

Однако использование контроллера прямого доступа к памяти может вызвать проблемы с когерентностью кэша. Данные, хранящиеся в ОЗУ, к которым обращается контроллер DMA, могут не обновляться правильными данными кэша, если ЦП использует внешнюю память.

Решения включают очистку строк кэша перед запуском исходящих передач DMA или выполнение аннулирования кэша для входящих передач DMA, когда внешние записи передаются контроллеру кэша.

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

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

Что такое кэш-память?

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

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

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

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

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

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

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

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

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

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

Кэш памяти «сработал»

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

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

Как это делается, зависит от политики записи кеша. Простейшая политика называется сквозной записью: при этой политике все, что записывается в кеш памяти, сразу же записывается в ОЗУ.

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

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

Кэш памяти «промах»

Если данные или инструкции по заданному адресу оперативной памяти не найдены в кэш-памяти, это называется «промахом кэша». В этом случае ЦП вынужден ждать, пока информация извлекается из ОЗУ.

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

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

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

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

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

Ключевое значение кэш-памяти

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

Поскольку ОЗУ дороже (но быстрее), чем вторичное хранилище, дисковые кэши меньше, чем жесткие диски или твердотельные накопители. Поскольку SRAM дороже (но быстрее), чем DRAM, кэши памяти меньше, чем RAM.

Типы кэш-памяти

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

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

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

Самая маленькая и самая быстрая кэш-память — это кэш-память 1-го уровня, или кэш-память L1, а следующей является кэш-память L2. Большинство систем теперь имеют кэш-память L3, а с момента появления чипов Skylake Intel также добавила кэш-память L4 в некоторые из своих процессоров.

Уровень 1

Кэш L1 — это кэш-память, встроенная в сам ЦП. Он работает на той же тактовой частоте, что и процессор. Это самый дорогой тип кэш-памяти, поэтому его размер крайне ограничен. Но поскольку он очень быстрый, это первое место, где процессор будет искать данные или инструкции, которые могли быть буферизованы там из ОЗУ.

На самом деле в большинстве современных процессоров кэш L1 разделен на две части: раздел данных (L1d) и раздел инструкций (L1i). Они содержат данные и инструкции соответственно.

Современный ЦП может иметь размер кэша порядка 32 КБ L1i и L1d на ядро.

Уровень 2

Кэш L2 также может располагаться в микросхеме ЦП, хотя и не так близко к ядру, как кэш L1. Или, что реже, он может быть расположен на отдельном чипе рядом с процессором. Кэш L2 дешевле и больше, чем кэш L1, поэтому размер кэша L2, как правило, больше и может составлять порядка 256 КБ на ядро.

Уровень 3

Кэш уровня 3, как правило, намного больше, чем кэш L1 или L2, но он также отличается еще одним важным аспектом. В то время как кэши L1 и L2 являются частными для каждого ядра процессора, кэш L3, как правило, является общим кешем, общим для всех ядер. Это позволяет ему играть важную роль в обмене данными и межъядерной связи. Кэш L3 может иметь размер порядка 2 МБ на ядро.

Отображение кэша

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

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

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

Обычно используются следующие методы сопоставления кеша:

Прямое сопоставление

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

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

Ассоциативное сопоставление

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

Набор-ассоциативное сопоставление

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

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

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

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

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

  • Вы включаете компьютер.
  • Компьютер загружает данные из постоянной памяти (ПЗУ) и выполняет самотестирование при включении питания (POST), чтобы убедиться, что все основные компоненты работают правильно. В рамках этого теста контроллер памяти проверяет все адреса памяти с помощью операции быстрого чтения/записи, чтобы убедиться в отсутствии ошибок в микросхемах памяти. Чтение/запись означает, что данные записываются в бит, а затем считываются из этого бита.
  • Компьютер загружает базовую систему ввода-вывода (BIOS) из ПЗУ. BIOS предоставляет самую основную информацию об устройствах хранения, последовательности загрузки, безопасности, функции Plug and Play (автоматическое распознавание устройств) и некоторых других элементах.
  • Компьютер загружает операционную систему (ОС) с жесткого диска в оперативную память системы. Как правило, критически важные части операционной системы хранятся в оперативной памяти, пока компьютер включен. Это позволяет ЦП иметь немедленный доступ к операционной системе, что повышает производительность и функциональность всей системы.
  • Когда вы открываете приложение, оно загружается в ОЗУ. Для экономии использования оперативной памяти многие приложения сначала загружают только основные части программы, а затем загружают другие части по мере необходимости.
  • После загрузки приложения все файлы, открытые для использования в этом приложении, загружаются в ОЗУ.
  • Когда вы сохраняете файл и закрываете приложение, файл записывается на указанное устройство хранения, а затем он и приложение удаляются из ОЗУ.

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

Один распространенный вопрос о настольных компьютерах, который возникает все время, звучит так: "Зачем компьютеру нужно так много систем памяти?"

Как данные передаются из процессора в память? Объясните пошагово

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

1 ЦП размещает адрес основной памяти на адресной шине.

2 ЦП помещает адрес местоположения данных на адресную шину.

3 Основная память видит адрес на адресной шине.

Что такое регистры процессора? Кратко опишите регистры специального назначения.

Зарегистрироваться

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

Размер регистра определяет, сколько информации он может хранить. Размер регистров в байтах. Каждый байт может хранить один символ данных. Регистр может иметь размер 1, 2, 4 или 8 байт. Больший размер регистра увеличивает производительность процессора.

Регистры специального назначения

Регистры специального назначения обычно используются процессором. Эти регистры следующие:

<р>1. Счетчик программ (ПК)

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

<р>2. Регистр инструкций (IR)

Регистр инструкций используется для хранения выбранных инструкций. Инструкция также декодируется в этом регистре.

<р>3. Регистр адреса памяти (MAR)

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

<р>4. Регистр буфера памяти (MBR)

Регистр буфера памяти используется для хранения данных, поступающих из памяти или поступающих в память.

<р>5. Регистр указателя стека

Стек — это набор ячеек памяти, в которых данные хранятся и извлекаются в определенном порядке.Этот порядок называется Las-in-First-Out (LIFO). Элемент данных, хранящийся наверху стека, извлекается до извлечения элемента под ним. Регистры указателя стека используются для управления стеком в компьютере.

Кратко обсудите различные регистры общего назначения.

Регистры общего назначения используются в математических и логических операциях. Эти регистры являются частью ALU. Аккумуляторный регистр является регистром общего назначения. Существует четыре типа накопительных регистров: EAX, EBX, ECX и EDX.

<р>1. A означает аккумулятор.

<р>2. B означает База.

<р>3. C означает данные

<р>4. D означает данные

AX, BX, CC, DX

Различаются следующие регистры общего назначения:

<р>1. Аккумуляторный регистр (AX): Он используется для арифметики и перемещения данных. Он имеет специальные возможности адресации.

<р>2. базовый регистр (AX): он используется для арифметических операций и операций с данными.

<р>3. Регистр счетчика (CX): используется для подсчета. Он действует как счетчик повторений или циклов.

<р>4. Регистр данных (CX): используется для деления и умножения.

Читайте также: