Концепция многоуровневой памяти.
ЛЮДИ ПЛИИЗ ПОМОГИТЕ =)
Другие языки программирования и технологии
Взаимодействие между процессором и уровнями памяти. Концепция многоуровневой памяти. ЛЮДИ ПЛИИЗ ПОМОГИТЕ =)
Могу только в общих чертах
Чем быстрее память, тем она дороже.
Самая быстрая память - на регистрах процессора. Она самая дорогая. В каждом процессоре не больше 20 регистров по нескольку байт, то есть очень мало.
Вторая по скорости память - кэш на процессоре. Она тоже сравнительно дорогая и ценная. Но она тоже разделяется на уровни - кэш 1 уровня, кэш 2 уровня и т. д. Зачем это нужно, объясню позже
Более дешёвая, но энергозависимая память - оперативная память. Энергозависимая, потому что при отключении питания все данные на ней стираются.
Самая дешёвая и самая медленная память - внешняя память, или жёсткий диск. Обращение к ней занимает очень большое время, потому что в жёстком диске есть механические детали, например, головка, которую надо подвести к нужному месту диска.
Рассмотрим пример работы процессора.
Процессор запрашивает какие-то данные из оперативной памяти.
Медленно, но верно, память ему их даёт на какой-то регистр.
НО! Перед тем, как дать ему на этот регистр, проц записывает ячейку памяти к себе на кэш память.
Проц юзает этот регистр, делает какие-то вычисления, и.. .
Ему понадобилось опять обратиться к той же самой ячейке памяти в оперативке.
Тут происходит самое интересное. Проц видит, что он уже обращался к этой ячейке раньше, и видит, что содержимое этой ячейке записано у него на кэше. Поэтому он, вместо того, чтобы медленно запрашивать заново эту ячейку у оперативы, делает запрос к себе в кэш, что гораздо быстрее.
Вдруг понадобилось записать в эту ячейку в оперативе какие-то данные. Тут процессор без раздумьев сначала обновляет ячейку у себя в кеше, а потом тут же делает запрос на запись в оперативу. Это сделано для надёжности, потому что если не сразу записать в оперативу, то потом может оказаться, что кэш уже забыл ту ячейку.. . Второй вариант - если кэш умный и перед тем, как забыть ячейку, он её записывает в оперативу.
Так происходит на всех уровнях памяти, то есть в парах
Жёсткий диск <-> Оперативка
Оперативка <-> Кэш процессора 2 уровня L2
Кэш процессора 2 уровня L2 <-> Кэш 1 уровня L1(его меньше, чем L2, но он быстрее)
Кэш 1 уровня L1 <-> Регистры
Всё бы хорошо, но кэш постепенно переполняется и становится некуда пихать новые ячейки памяти из оперативы. Тогда идут в ход алгоритмы "забывания" ячеек из кеша. Один подход - забывать самые старые ячейки, другой - забывать ячейки, которые меньше всего раз использовались.. . У каждого свои плюсы и минусы, это уже другая тема.. . =)
Чем быстрее память, тем она дороже.
Самая быстрая память - на регистрах процессора. Она самая дорогая. В каждом процессоре не больше 20 регистров по нескольку байт, то есть очень мало.
Вторая по скорости память - кэш на процессоре. Она тоже сравнительно дорогая и ценная. Но она тоже разделяется на уровни - кэш 1 уровня, кэш 2 уровня и т. д. Зачем это нужно, объясню позже
Более дешёвая, но энергозависимая память - оперативная память. Энергозависимая, потому что при отключении питания все данные на ней стираются.
Самая дешёвая и самая медленная память - внешняя память, или жёсткий диск. Обращение к ней занимает очень большое время, потому что в жёстком диске есть механические детали, например, головка, которую надо подвести к нужному месту диска.
Рассмотрим пример работы процессора.
Процессор запрашивает какие-то данные из оперативной памяти.
Медленно, но верно, память ему их даёт на какой-то регистр.
НО! Перед тем, как дать ему на этот регистр, проц записывает ячейку памяти к себе на кэш память.
Проц юзает этот регистр, делает какие-то вычисления, и.. .
Ему понадобилось опять обратиться к той же самой ячейке памяти в оперативке.
Тут происходит самое интересное. Проц видит, что он уже обращался к этой ячейке раньше, и видит, что содержимое этой ячейке записано у него на кэше. Поэтому он, вместо того, чтобы медленно запрашивать заново эту ячейку у оперативы, делает запрос к себе в кэш, что гораздо быстрее.
Вдруг понадобилось записать в эту ячейку в оперативе какие-то данные. Тут процессор без раздумьев сначала обновляет ячейку у себя в кеше, а потом тут же делает запрос на запись в оперативу. Это сделано для надёжности, потому что если не сразу записать в оперативу, то потом может оказаться, что кэш уже забыл ту ячейку.. . Второй вариант - если кэш умный и перед тем, как забыть ячейку, он её записывает в оперативу.
Так происходит на всех уровнях памяти, то есть в парах
Жёсткий диск <-> Оперативка
Оперативка <-> Кэш процессора 2 уровня L2
Кэш процессора 2 уровня L2 <-> Кэш 1 уровня L1(его меньше, чем L2, но он быстрее)
Кэш 1 уровня L1 <-> Регистры
Всё бы хорошо, но кэш постепенно переполняется и становится некуда пихать новые ячейки памяти из оперативы. Тогда идут в ход алгоритмы "забывания" ячеек из кеша. Один подход - забывать самые старые ячейки, другой - забывать ячейки, которые меньше всего раз использовались.. . У каждого свои плюсы и минусы, это уже другая тема.. . =)
лекцию тебе что ли прочитать ?
Bloodrr Bloodrr
да если можно....завтра зачет а меня небыло на этой теме(
А что именно не понятно?
Похожие вопросы
- Пропала память у компа помогите (в подробностях внутри)
- Напишите пожалуйста примеры функций выделения памяти и освобождения памяти (с аргументами) в С++ ?
- Помогите с проблемой,Есть ли или существует метод-способ востоновить данные,файлы с карты памяти телефона.
- Помогите Плииз !! +5Б .. Как написать прогу чтобы сам включал браузер и через 10 секунд отключал
- Помогите понять как построить многоуровневое меню
- помогите найти утечку в памяти Builder С++
- Турбо паскаль. Помогите плииз!!!
- Народ помогите плииз !!!
- как послать всю мощность процессора на один процесс? помогите плиз!
- люди помогите как увеличить память на диске C