5

В чем разница между кеш-памятью и регистрами?Я знаю их по определению, но зачем нам нужен другой, когда у нас есть один из них?

6 ответов6

11

Регистры являются:

  • Немногочисленное количество (обычно менее 32)
  • Ограниченный размер (32, 64, 80, 128 бит)
  • Единственное, на чем большинство процессоров могут работать напрямую (хотя x86/x86-64 это немного размывает)

Кеш это:

  • Дошедший (32 КБ +)
  • Больше в квантах (512 байт или больше)
  • Непосредственно недоступен для операций (просто пул между процессором и основным хранилищем)
2

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

2

Регистры являются контролируемыми, вы можете хранить и извлекать информацию из них. Их очень мало (по крайней мере на x86), но очень быстро. Многие из них имеют очень специфическое использование (указатель инструкций, базовый указатель и т.д.) И не должны использоваться пользователем.

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

1

Итак, я думаю, что вас интересует, так как все они просто хранятся в байтах, зачем выделять некоторые из них в качестве регистров и вызывать остальной кеш?

Что ж, прошло много времени с тех пор, как я запрограммировал PIC, но если я правильно помню, PIC не различает "память" и "регистры" и вызывает всю свою память "регистры"; все они имеют адресное пространство. Некоторые из них имеют специальное назначение для таких вещей, как порты ввода-вывода, но большинство - общего назначения.

Это хорошая идея? Ну, это явно не страшно, потому что PIC - довольно успешный микроконтроллер. Но вы можете видеть, что это будет иметь ограничения, когда вы начнете увеличивать масштаб, чтобы добавить больше памяти и более быстрые часы. (Я не EE, поэтому возьмите это с крошкой соли). Преимущество выделения нескольких отдельных регистров состоит в том, что они могут быть связаны с меньшим количеством вещей: все провода, подключенные к цепи, добавляют емкостную нагрузку, которая замедляет ее. На современном компьютере с килобайтами кеша, который будет очень загружен для чего-то, что вы хотите получить, в основном, для каждой инструкции. Я полагаю, что это также может иметь преимущества в стоимости, потому что вы можете сделать регистры из широких быстрых транзисторов, а затем уменьшить масштаб для кэша, который не должен быть таким быстрым.

0

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

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

0

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

Именно эта адресно-ориентированная природа определяет нечто как "кеш".

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .