Что быстрее кэш или регистры
в чем разница между кэш-памятью и регистрами?Я знаю их по определению, но зачем нам нужен другой, когда у нас есть один из них?
- мало (обычно меньше 32)
- ограниченный размер (32, 64, 80, 128 бит)
- единственное, на чем большинство процессоров могут работать напрямую (хотя x86/x86-64 немного размывает это)
- Extant (32kB+)
- больше в квантах (512 байт и более)
- не доступны непосредственно для операций (только пул между ЦП и основным хранилищем)
, чтобы сделать его простой регистр процессора гораздо быстрее, чем кэш-памяти, и в отличие от кэш-памяти, хранящей данные, регистр процессора магазин - инструкции, которые манипулируют данными, инструкцией, которую я имею в виду (адрес , опкод, небольшой фрагмент данных, которые нам нужны для работы . ).
регистры управляемы, вы можете хранить и извлекать из них информацию. Их очень мало (по крайней мере на x86), но очень быстро. Многие из них имеют очень конкретное применение (указатель инструкций, базовый указатель и т. д.) и не должны использоваться пользователем.
кэш практически неуправляем. Его можно аннулировать (привилегированные инструкции INVD и WBINVD), но нельзя явно хранить или извлекать из него информацию. Он также помещен между памятью и CPU, поэтому вы даже не знаете, работает ли он или нет, если вы не делаете сравнения времени. Он предназначен для обеспечения полной прозрачности операций. Кроме того, они могут быть иерархическими и довольно крупными (по крайней мере, в сравнении с регистрами).
Итак, я думаю, вам интересно, так как все это просто хранимые байты, зачем выделять некоторые из них в качестве регистров и вызывать остальной кэш?
Ну, прошло некоторое время с тех пор, как я запрограммировал на рис, но если я правильно помню, рис не различает "память" и "регистры", и называет всю свою память "регистры"; все они имеют общее адресное пространство. Некоторые из них специального назначения, для таких вещей, как порты ввода-вывода, но большинство из них общего назначения.
Это хорошая идея? Ну, это, очевидно, не страшно, потому что PIC-достаточно успешный микроконтроллер. Но вы можете видеть, что это будет иметь ограничения, когда вы начинаете расширения, чтобы добавить больше памяти и более высокой тактовой. (Я не EE, поэтому возьмите это с солью). Преимущество выделения нескольких конкретных регистров заключается в том, что их можно подключить к меньшему количеству вещей: все провода, прикрепленные к цепи, добавляют емкостную нагрузку, которая замедляет ее. На современной машине с килобайтами кэша, который будет много загрузки для чего-то вы хотите получить доступ в основном каждую инструкцию. Я полагаю, что это также может стоить преимуществ, потому что вы можете сделать регистры из широких быстрых транзисторов, а затем уменьшить масштаб для кэша, который не должен быть таким быстрым.
регистр содержит инструкции или данные, над которыми процессор работает или будет работать в ближайшее время. Они формируют часть обработчика и способны держать только один деталь одновременно.
кэш-память-это область компьютера, в которой хранятся коды и инструкции.
Cache имеет content-addressable природу -- данная строка (по крайней мере концептуально) содержит как данные, так и адрес в качестве динамических значений, так что строка будет распознавать свой собственный адрес и отвечать, по сравнению с тем, чтобы быть адресованным с определенным внешне сгенерированным жестким проводным адресом.
именно этот контент-адресуемый характер определяет что-то как "кэш".
(конечно, на практике кэш часто реализуется с относительно обычным" проводным адресом " ОЗУ и блок преобразования адресов на стороне, но на самом деле это не "кэш", пока вы не объедините их.)
Я сожалею, если это неправильное место, чтобы спросить это, но я искал и всегда находил другой ответ. Мой вопрос:
Что быстрее? Регистры кэша или процессора?
По моему мнению, регистры-это то, что непосредственно загружает данные, чтобы выполнить его, в то время как кэш-это просто место хранения, закрытое или внутренне в ЦП.
Вот источники, которые я нашел, которые сбивают меня с толку:
2 для кэша | 1 для регистров
Кэш быстрее.
Так что же это на самом деле?
2 ответа
Специально для архитектуры x86:
- Чтение от регистра имеет задержку 0 или 1 цикла.
- Запись в регистры имеет 0 циклов задержки.
- Чтение / запись кэш L1 имеет задержку от 3 до 5 циклов (зависит от возраста архитектуры)
- Фактическая загрузка / хранение запросы могут выполняться в течение 0 или 1 циклов из-за буфера обратной записи и функции пересылки хранилища (подробнее ниже)
Чтение из регистра может иметь задержку в 1 цикл на процессорах Intel Core 2 (и более ранних моделях) из-за его конструкции: Если достаточно одновременно выполняемые инструкции читаются из разных регистров, банк регистров процессора не сможет обслуживать все запросы за один цикл. Это ограничение не присутствует ни в одном чипе x86, который был поставлен на потребительский рынок с 2010 года (но он присутствует в некоторых чипах Xeon 2010/11).
Задержки кэша L1 фиксированы для каждой модели, но, как правило, становятся медленнее, когда вы возвращаетесь во времени к старым моделям. Однако имейте в виду три вещи:
чипы x86 в наши дни имеют кэш обратной записи с задержкой 0 циклов. При хранении значения в памяти оно попадает в этот кэш, и инструкция может удалиться за один цикл. Задержка памяти становится видимой только при выполнении последовательных операций записи, достаточных для заполнения кэша обратной записи. Кэш обратной записи был виден в настольном чиповом дизайне с 2001 года, но широко отсутствовал на рынках мобильных чипов на базе ARM до недавнего времени.
И затем вручную изобразите информацию из этого с таблицами по архитектурам, моделям и датам выпуска из различных списков процессоров на страницах Википедии.
Отсюда следует, что чем больше, тем медленнее. Потому что если вы делаете что-то большее, то неизбежно расстояния будут становиться больше. Что-то, что было автоматическим на некоторое время, уменьшив размер функции на чипе, автоматически произвело более быстрый процессор.
Файл регистра в процессоре мал и находится физически близко к исполнительному механизму. Наиболее удаленным от процессора является ОЗУ. Вы можете открыть корпус и фактически увидеть провода между ними. Между ними располагаются тайники, предназначенные для преодоления резкого разрыва между скоростью этих двух противоположностей. Каждый процессор имеет кэш L1, относительно небольшой (32 KB typ) и расположенный ближе всего к ядру. Дальше вниз находится кэш L2, относительно большой (тип 4 МБ) и расположенный дальше от ядра. Более дорогие процессоры также имеют кэш L3, больше и дальше.
Таким образом, следует, что регистр ЦП всегда быстрее, чем кэш L1. Он ближе всего. Разница примерно в 3 раза.
Прошу прощения, если это неправильное место, чтобы спросить об этом, но я искал и всегда находил другой ответ. Мой вопрос:
Что быстрее? Кэш или регистры процессора?
По моим словам, регистры - это то, что непосредственно загружает данные для его выполнения, в то время как кеш - это просто место хранения, закрытое или внутренне в ЦП.
Вот те источники, которые я нашел, что смущает меня:
2 для кеша | 1 для регистров
Кэш быстрее.
спросил(а) 2020-03-11T16:11:53+03:00 1 год, 8 месяцев назадПопытка сделать это максимально интуитивным, не теряясь в физике, лежащей в основе вопроса: существует простая корреляция между скоростью и расстоянием в электронике. Чем дальше вы совершаете движение сигнала, тем сложнее получить этот сигнал на другом конце провода без искажения сигнала. Это принцип "бесплатного обеда" электронного дизайна.
Следствие состоит в том, что больше медленнее. Потому что, если вы сделаете что-то большее, то неизбежно расстояния увеличатся. Что-то, что было автоматически на некоторое время, уменьшив размер функции на чипе, автоматически создало более быстрый процессор.
Регистровый файл в процессоре мал и физически близок к механизму выполнения. Наиболее удаленным от процессора является ОЗУ. Вы можете вскрыть корпус и увидеть провода между ними. Между ними сидят тайники, предназначенные для преодоления драматического разрыва между скоростью этих двух противоположностей. Каждый процессор имеет кэш L1, относительно небольшой (32 КБ типа) и расположен ближе всего к ядру. Далее - кеш L2, относительно большой (тип 4 МБ) и расположен дальше от ядра. Более дорогие процессоры также имеют кэш L3, больше и дальше.
Итак, что нужно, так это то, что регистр ЦП всегда быстрее, чем кэш L1. Он ближе всего. Разница примерно в 3 раза.
ответил(а) 2020-03-11T16:28:46.722193+03:00 1 год, 8 месяцев назадВ частности, архитектура x86:
-
Чтение из регистра имеет задержку 0 или 1 цикла.
Запись в регистры имеет 0 задержку цикла.
Чтение/запись кеша L1 имеет задержку от 3 до 5 циклов (зависит от возраста архитектуры)
Фактические запросы загрузки/хранения могут выполняться в течение 0 или 1 такта из-за функций резервного копирования и хранения (подробнее см. ниже).
Чтение из регистра может иметь 1-часовую задержку на процессорах Intel Core 2 (и более ранних моделях) из-за его дизайна: если достаточно одновременных команд-инструкций считываются из разных регистров, банк регистров ЦП не сможет обслуживать все запросов за один цикл. Это ограничение дизайна отсутствует в любом чипе x86, который был поставлен на потребительский рынок с 2010 года (но он присутствует в некоторых чипах Xeon, выпущенных в 2010/11 годах).
Задержки кэша L1 фиксированы для каждой модели, но, как вы возвращаетесь во времени, к более старым моделям, они становятся медленнее. Однако имейте в виду три вещи:
Процессоры x86 в эти дни имеют кэш обратной записи с задержкой 0 циклов. Когда вы храните значение в память, оно попадает в этот кеш, и инструкция может уйти в отставку за один цикл. Задержка латентности становится видимой только тогда, когда вы выдаете достаточную последовательную запись для заполнения кэша обратной записи. Кэши обратной записи были заметны в дизайне настольных чипов с 2001 года, но до недавнего времени они широко отсутствовали на рынке мобильных чипов на базе ARM.
И затем вручную сопоставьте информацию об этом с таблицами по архитектурам, моделям и датам выпуска с различных страниц списка процессоров в википедии.
В чем разница между кеш-памятью и регистрами?Я знаю их по определению, но зачем нам нужен другой, когда у нас есть один из них?
чтобы сделать его простым, регистр процессора намного быстрее, чем кэш-память, и в отличие от кэш-памяти, в которой хранятся данные, в регистре процессора хранятся инструкции, которые манипулируют данными, в соответствии с инструкцией, которую я имею в виду (адрес, код операции, небольшой фрагмент данных, с которыми нам нужно работать. ..).
Регистры являются контролируемыми, вы можете хранить и извлекать информацию из них. Их очень мало (по крайней мере на x86), но очень быстро. Многие из них имеют очень специфическое использование (указатель инструкций, базовый указатель и т.д.) И не должны использоваться пользователем.
Кеш практически неуправляем. Вы можете сделать его недействительным (привилегированные инструкции INVD и WBINVD), но вы не можете явно сохранить или извлечь информацию из него. Он также находится между памятью и процессором, поэтому вы даже не знаете, работает ли он или нет, если только вы не сравниваете время. Он предназначен быть полностью прозрачным в операциях. Кроме того, они могут быть иерархическими и довольно большими (по крайней мере, по сравнению с регистрами).
Итак, я думаю, что вас интересует, так как все они просто хранятся в байтах, зачем выделять некоторые из них в качестве регистров и вызывать остальной кеш?
Что ж, прошло много времени с тех пор, как я запрограммировал PIC, но если я правильно помню, PIC не различает "память" и "регистры" и вызывает всю свою память "регистры"; все они имеют адресное пространство. Некоторые из них имеют специальное назначение для таких вещей, как порты ввода-вывода, но большинство - общего назначения.
Это хорошая идея? Ну, это явно не страшно, потому что PIC - довольно успешный микроконтроллер. Но вы можете видеть, что это будет иметь ограничения, когда вы начнете увеличивать масштаб, чтобы добавить больше памяти и более быстрые часы. (Я не EE, поэтому возьмите это с крошкой соли). Преимущество выделения нескольких отдельных регистров состоит в том, что они могут быть связаны с меньшим количеством вещей: все провода, подключенные к цепи, добавляют емкостную нагрузку, которая замедляет ее. На современном компьютере с килобайтами кеша, который будет очень загружен для чего-то, что вы хотите получить, в основном, для каждой инструкции. Я полагаю, что это также может иметь преимущества в стоимости, потому что вы можете сделать регистры из широких быстрых транзисторов, а затем уменьшить масштаб для кэша, который не должен быть таким быстрым.
Регистр содержит инструкции или данные, над которыми процессор работает или будет работать в ближайшее время. Они являются частью процессора и способны одновременно удерживать только один элемент.
Кэш-память - это область компьютера, где хранятся коды и инструкции.
Кэш имеет адресно-контентную природу - данная строка (по крайней мере концептуально) содержит как данные, так и адрес в виде динамических значений, так что строка будет распознавать свой собственный адрес и отвечать, в отличие от необходимости обращаться с конкретным сгенерированным извне жестким адрес
Именно эта адресно-ориентированная природа определяет нечто как "кеш".
(Конечно, на практике кэш-память часто реализуется с относительно обычной оперативной памятью с "жестким адресом" и блоком преобразования адресов на стороне, но на самом деле это не "кэш", пока вы не объедините их.)
Читайте также: