Существуют ли какие-либо современные / древние процессоры / микроконтроллеры, в которых хранилище кэшированных байтов на самом деле медленнее хранилища слов?

с использованием библиотеки apache это можно сделать в одной строке

import org.apache.commons.lang.RandomStringUtils;
RandomStringUtils.randomAlphanumeric(64);

здесь doc http://commons.apache.org/lang/api-2.3/org/apache/commons /lang/RandomStringUtils.html

6
задан Peter Cordes 16 January 2019 в 20:33
поделиться

1 ответ

Документация ARM для Cortex-A15 MPCore (с ~ 2012 г.) говорит, что она использует 32-битную гранулярность ECC в L1d и фактически выполняет слово-RMW для узких хранилищ для обновления данных. [ 112]

Кэш данных L1 поддерживает необязательную однобитовую корректную и двухбитную логику исправления ошибок в массивах тегов и данных. Гранулярность ECC для массива тегов - это тег для отдельной строки кэша, а гранулярность ECC для массива данных - это 32-разрядное слово.

Из-за гранулярности ECC в массиве данных запись в массив не может обновить часть 4-байтовой выровненной ячейки памяти, потому что недостаточно информации для вычисления нового значения ECC. Это относится к любой инструкции сохранения, которая не записывает одну или несколько выровненных 4-байтовых областей памяти. В этом случае система памяти данных L1 считывает существующие данные в кеше, объединяет модифицированные байты и вычисляет ECC на основе объединенного значения. Система памяти L1 пытается объединить несколько хранилищ вместе, чтобы соответствовать выровненной 4-байтовой гранулярности ECC и избежать требования чтения-изменения-записи.

(Когда они говорят «система памяти L1», я думаю, что они имеют в виду буфер хранения, если у вас есть смежные хранилища байтов, которые еще не фиксировали в L1d.)


[116 ] Я стою исправлено. Может быть штраф за узкие магазины на некоторых не x86 процессорах.

Cortex-A15 MPCore представляет собой трехпроцессорный исполняющий процессор, работающий не по порядку, так что это не минимальная мощность / простая схема ARM, но они решили тратить транзисторы на OoO exec, но не эффективный байт магазины.

По-видимому, без необходимости поддерживать эффективные невыровненные хранилища (которые программное обеспечение для x86 будет более вероятно принимать / использовать в своих интересах), более медленные хранилища байтов считались оправданными для более высокой надежности ECC для L1d без чрезмерных накладных расходов.

Cortex-A15, вероятно, не единственное и не самое последнее ядро ​​ARM, работающее таким образом.

0
ответ дан Peter Cordes 16 January 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: