Описание тега micro-architecture

1 ответ

Каково минимальное количество цепочек зависимостей, чтобы максимизировать производительность?

Данная цепочка инструкций связана истинными зависимостями и периодически повторяется (то есть цикл), например (a->b->c)->(a->b->c)->... Предполагая, что он может быть разбит на несколько более коротких и независимых цепочек зависимостей, чтобы получ…
1 ответ

В x86 Intel VT-X без корневого режима, может ли прерывание доставляться на каждой границе инструкции?

Кроме определенных нормальных заданных условий, когда прерывания не доставляются виртуальному процессору (cli, if=0 и т. Д.), Все ли инструкции в гостевой системе фактически прерываются? То есть, когда входящее аппаратное прерывание передается LAPIC…
2 ответа

Позднее обновление lhr / ghr в длинном конвейере

Мне интересно, является ли это жизнеспособным сценарием в длинных конвейерах, когда младшая инструкция ветвления уже обрабатывается механизмом предсказания ветвления, но соответствующий lhr (или ghr, в зависимости от реализации) все еще не обновлен …
1 ответ

Почему jnz не считает цикл?

В интернет-ресурсе я обнаружил, что у IvyBridge есть 3 ALU. Поэтому я пишу небольшую программу для тестирования: global _start _start: mov rcx, 10000000 .for_loop: ; do { inc rax inc rbx dec rcx jnz .for_loop ; } while (--rcx) xor rdi, rdi mov rax, …
0 ответов

Почему строка кэша L1 (NVIDIA) GPU длиннее строки кэша L2?

В графических процессорах NVIDIA Fermi и Kepler (возможно, и Maxwell) строка кэша L1 имеет длину 128 байт, а строка кэша L2 - 32 байта. Разве это не должно быть наоборот? Я имею в виду, что L1 намного меньше, не должен ли он пытаться кэшировать боле…
24 май '15 в 06:29
2 ответа

Почему jnz требуется 2 цикла для завершения во внутреннем цикле

Я на IvyBridge. Я нашел поведение производительности jnz несовместимы во внутренней и внешней петлях. Следующая простая программа имеет внутренний цикл с фиксированным размером 16: global _start _start: mov rcx, 100000000 .loop_outer: mov rax, 16 .l…
1 ответ

Будет ли CPUID сериализировать спекулятивное кеширование данных?

Я нашел описание спекулятивной процедуры кэширования данных из нескольких записей инструкций в Intel Vol.2. Например, lfence: Процессоры могут произвольно извлекать и кэшировать данные из областей системной памяти, которые используют типы памяти WB,…
0 ответов

MIPS проводной логики DPU

Я студент, и у меня есть упражнение на MIPS, и мне нужно некоторое руководство! Ниже приведено упражнение: Рассмотрим модуль обработки данных проводной логики архитектуры MIPS для командного цикла для одного и нескольких машинных циклов. Опишите пол…
10 дек '18 в 13:28
0 ответов

Могут ли инструкции по загрузке без загрузки пройти за пределы памяти? (X86_64)

Разве только операции загрузки / сохранения не переупорядочиваются вокруг ограждений памяти? Насколько я понимаю, сериализационные инструкции, такие как CPUID, не позволяют переупорядочивать любые инструкции (включая операции загрузки / сохранения).…
25 апр '16 в 23:37
0 ответов

Откуда берется отсутствующий кэш данных L1 в заблокированной матричной матрице?

Я пытаюсь оптимизировать кратность целочисленной матрицы, разделив их на меньший матричный блок, чтобы получить лучшую частоту обращений в кэш на RasPberry Pi 3b+ (это ядро ​​Cortex-A53, со строкой кэша 64 байта, 4-сторонней ассоциативностью. Это 32…
1 ответ

Zilog Z80 I, R регистрирует назначение

В разделе управления процессора Z80 есть регистры I и R, каково их назначение и использование?
1 ответ

Почему зависимость в итерации цикла не может быть выполнена вместе с предыдущей

Я использую этот код для проверки влияния зависимости в итерации цикла на IvyBridge: global _start _start: mov rcx, 1000000000 .for_loop: inc rax ; uop A inc rax ; uop B dec rcx ; uop C jnz .for_loop xor rdi, rdi mov rax, 60 ; _exit(0) syscall поско…
1 ответ

Как современные процессоры X86 на самом деле вычисляют умножения?

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

Как определить длину кода операции инструкции x86-64, используя сам процессор?

Я знаю, что есть библиотеки, которые могут "анализировать" двоичный машинный код / ​​код операции, чтобы определить длину инструкции процессора x86-64. Но мне интересно, так как процессор имеет внутреннюю схему, чтобы определить это, есть ли способ …
1 ответ

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

Я отправился на поиски в руководстве по оптимизации Intel, и для Skylake я не смог найти, сколько времени потребуется, чтобы удалить инструкцию после того, как она покинула порт выполнения, не предполагая задержек. Может кто-нибудь предоставить эту …
1 ответ

Пересылка запроса на загрузку изображения на другой сервер

Я пытаюсь создать проект NodeJS REST API, основанный на так называемой "микроархитектуре" (в основном это несколько небольших проектов NodeJS, которые могут работать полностью независимо, но в то же время работать вместе). В настоящее время пользова…
1 ответ

Прогнозирование малых ветвей (не домашнее задание)

Это НЕ домашнее задание. Я читал этот сайт, который, IMO, имеет довольно хорошее введение в прогнозирование ветвлений, и решил попробовать решить проблему после лекции: рассмотрим следующий код [нет интервалов задержки ветвления]: add $2, $0, $0 add…
3 ответа

Предотвращает ли спекуляция зависимость от памяти постоянное время BN_consttime_swap?

контекст Функция BN_consttime_swap в OpenSSL это красота. В этом фрагменте condition был вычислен как 0 или же (BN_ULONG)-1: #define BN_CONSTTIME_SWAP(ind) \ do { \ t = (a->d[ind] ^ b->d[ind]) & condition; \ a->d[ind] ^= t; \ b->d[i…
1 ответ

Что "нового" в "новом" процессоре, если смотреть с точки зрения программиста

Недавно я был заинтересован в понимании низкоуровневых вычислений. Я понимаю, что современные широко используемые компьютеры следуют архитектуре x86/x86-64. Насколько я понимаю, архитектура, точнее говоря, Instruction Set Architecture (ISA) - это на…
1 ответ

Что делает функция wait()?

Привет, я начал изучать Java и сейчас пытаюсь выучить C++. У меня есть этот кусок кода и не могу тренироваться, что он делает. Я предполагаю, что это заставляет программу ждать определенный период времени, прежде чем она запустится. Но некоторые дал…
30 янв '16 в 19:13