digital-garden/dev/fundamental/Кэш процессора.md
Struchkov Mark abd333c9bd
All checks were successful
continuous-integration/drone/push Build is passing
Кэш процессора
2024-10-12 12:38:43 +03:00

48 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
- кэше процессора
- кэш-памяти
- кэш-память
tags:
- maturity/🌱
date: 2024-10-12
zero-link:
parents:
linked:
---
Кэш — это небольшая и очень быстрая память, встроенная в [[Центральный процессор|процессор]], предназначенная для временного хранения данных, к которым процессор обращается чаще всего. Основная задача кэша — ускорение работы процессора за счет минимизации времени доступа к этим данным.
Процессор работает значительно быстрее, чем [[../../../../knowledge/dev/pc/Оперативная память|оперативная память]] (RAM), поэтому при прямом обращении к оперативной памяти возникали бы значительные задержки. Кэш решает эту проблему, храня наиболее востребованные данные и инструкции ближе к процессору. Когда процессор выполняет операцию, он сначала проверяет кэш. ==Если нужная информация находится в кэше, она загружается практически мгновенно==. В противном случае процессору приходится обращаться к более медленной оперативной памяти, что увеличивает время ожидания.
Кэш-память процессора делится на два типа: кэш для данных и кэш для инструкций. Такое разделение позволяет повысить производительность процессора за счет оптимизации доступа к различным видам информации.
Кэш инструкций хранит машинный код программ, который процессор должен выполнить, а кэш данных содержит фактические данные, с которыми работают программы. Это разделение позволяет процессору одновременно загружать инструкции для выполнения и данные для обработки, минимизируя задержки.
Когда кэш заполняется, процессор должен решить, какие данные удалить, чтобы освободить место для новых. Эта задача решается с помощью специальных алгоритмов замещения.
Когда процессор имеет несколько ядер, каждое из них может иметь собственный кэш, что приводит к проблеме [[Cache coherence|кэш-кохерентности]].
## Уровни кэша
Кэш процессора разделен на несколько уровней: L1, L2 и L3. Каждый уровень отличается по объему, скорости и месту в архитектуре процессора.
**L1-кэш** — самый быстрый и ближайший к ядру процессора уровень кэша. Он имеет небольшой объем, обычно от нескольких десятков до сотни килобайт, и разделяется на две части: для инструкций и для данных. Это позволяет ускорять как выполнение команд, так и работу с информацией.
**L2-кэш** находится на следующем уровне и имеет больший объем, чем L1, но его скорость ниже. Обычно L2-кэш выделяется для каждого ядра процессора отдельно, что позволяет ядрам работать автономно и быстро получать доступ к своим данным.
**L3-кэш** — самый медленный, но и самый большой по объему уровень кэша. Он общий для всех ядер процессора и позволяет ядрам обмениваться данными через этот уровень. Несмотря на то что L3 медленнее, чем L1 и L2, он все равно значительно быстрее оперативной памяти.
## Кэш-линия
Кэш-линия — это минимальная единица данных, с которой работает кэш-память. Когда процессор загружает данные из оперативной памяти в кэш, он перемещает не один байт, а целую кэш-линию, которая содержит группу смежных данных. Использование кэш-линий позволяет более эффективно задействовать кэш, так как высока вероятность того, что процессору понадобятся соседние данные, что объясняется [[Принцип локальности|принципом локальности]].
***
## Мета информация
**Область**:: [[../../meta/zero/00 Архитектура ЭВМ|00 Архитектура ЭВМ]]
**Родитель**:: [[Центральный процессор]]
**Источник**::
**Создана**:: [[2024-10-12]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->