считайте содержимое кэша ЦП

Используя Ionic 2 beta 6, я решил простую задачу. Я сбросил свои изображения в app/assets/images (этот путь совершенно произвольный). Затем я добавил следующую задачу в gulpfile.js:

gulp.task("assets", function() {
    return gulp.src(["app/assets/images/*"])
        .pipe(gulp.dest("www/build/images"));
});

Вам также необходимо обновить задачи watch и build, чтобы включить новую задачу assets в их вызовы runSequence(). Я не верю, что порядок задач в последовательности имеет значение, в этом случае:

gulp.task("build", ["clean"], function(done) {
    runSequence(
        ["sass", "html", "fonts", "assets", "scripts"],
        function() {
            buildBrowserify().on("end", done);
        }
    );
});

Если вы выводите свои изображения по тому же пути, что и я, то вы бы ссылались на свои изображения в CSS из ../images/image-name.png и в <img> тегах из build/images/image-name.png. Я подтвердил, что эти изображения видны как из браузера, так и с устройства Android. Я не думаю, что для iOS все должно быть иначе.

11
задан Ian Ringrose 30 July 2010 в 09:18
поделиться

4 ответа

ARM9 обеспечивает манипулирование кешем и тестовые регистры, которые позволяют вам проверять состояние кеша. Вот разумная отправная точка:

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0151c/Chdcfejb.html

ICache и DCache поддерживаются с использованием MCR и инструкции MRC для регистров 7 и 9 CP15, определенные моделью программиста ARM v4T. Дополнительные операции доступны с использованием MCR и MRC для регистра CP15 15. Эти операции объединены с операциями, использующими регистры 7 и 9, чтобы обеспечить тестирование кешей полностью программно.

Это привилегированные инструкции, поэтому они могут быть недоступны на вашей цели. платформа.

Я бы начал с простой программы, которая выгружает состояние всех строк кэша.

8
ответ дан 3 December 2019 в 09:42
поделиться

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

Можно использовать своего рода модуль наблюдения за аппаратным обеспечением и анализатор данных на системной шине, который соединяет кеш-память с ОЗУ. Если запрос данных появится на шине, значит, запрошенные данные не были в кеше.

надеюсь, что кто-то с более глубокими знаниями HW прольет свет.

в википедии есть запись, посвященная кэшированию ЦП: http://en.wikipedia.org/wiki/CPU_cache

2
ответ дан 3 December 2019 в 09:42
поделиться

По определению, все, что вам нужно сделать для чтения содержимого кеша, - это загрузить ячейку памяти, которая хранится в кэше. Если кэш работает правильно, он извлечет содержимое из кеша.

Однако, если вы пытаетесь прочитать содержимое I-кеша, это зависит от архитектуры. Кроме того, вам нужно будет учитывать условия гонки. Инструкция для чтения содержимого кеша может непреднамеренно перезаписать само содержимое кеша.

1
ответ дан 3 December 2019 в 09:42
поделиться

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

Чтобы сделать что-то подобное, потребовалось бы либо поддерживающее кэширование CPU (со специальными инструкциями для управления кешем; я понятия не имею, существуют ли они на самом деле), или вам потребуется установить отдельный HW-модуль для просмотра кеша. Вот 2 идеи, которые у меня есть для этого:

  1. Замените исходный контроллер кеша на тот, который имеет дополнительные функции управления и может быть подключен к системной шине для чтения данных. Этот контроллер находится «между» процессором и кешем.

  2. Разместите вторичный модуль параллельно с исходным кешем с доступом только для чтения. Используя специальную линию прерывания (или аналогичный аппаратный -NOT- программный сигнал), ЦП мог затем запустить дамп кеша в память этого модуля, а затем прочитать его (по шине) позже. Этот контроллер не повлияет на работу вашего кеша; это просто позволит вам делать снимки в любой момент времени.

0
ответ дан 3 December 2019 в 09:42
поделиться
Другие вопросы по тегам:

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