2015-11-09 5 views
2

Предположим, у меня есть int массив из 10 элементов. С кешью в 64 байта он может содержать 16 элементов массива от arr[0] до arr[15].Как работает келин для регистрации передачи данных?

Я хотел бы знать, что произойдет, если вы извлечете, например, arr[5] из кэша L1 в регистр. Как происходит эта операция? Может ли процессор выбрать смещение в кешью и прочитать следующие байты n?

ответ

3

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^