Size: a a a

Compiler Development

2020 February 05

BD

Berkus Decker in Compiler Development
ну страницы бывают разные, там именно 8к итераций, неважно rep movsb или movsq
источник

IN

Ilya Neganov in Compiler Development
Странно. Надо перечитать мануал, видимо
источник

МБ

Михаил Бахтерев in Compiler Development
Странно. А если адрес попал на границу страницы или сегмента? Вряд ли так бы кто-то стал делать, что 8k итераций нельзя прервать. Это дыра в безопасности похлеще всяких meltdown-ов бы была.
источник

BD

Berkus Decker in Compiler Development
Михаил Бахтерев
Странно. А если адрес попал на границу страницы или сегмента? Вряд ли так бы кто-то стал делать, что 8k итераций нельзя прервать. Это дыра в безопасности похлеще всяких meltdown-ов бы была.
проверки адреса проходят до этого насколько я помню
источник

BD

Berkus Decker in Compiler Development
потому что mmu mapping должен случиться до того как ты начнешь писать в память
источник

IN

Ilya Neganov in Compiler Development
Ну проверку на чтение/запись всё равно надо на каждой итерации делать, заранее-то на всю инструкцию не проверишь. Их и делают, но восстанавливаться после miss’а не очень просто, особенно в OOO процессоре, да с многопоточностью
источник

BD

Berkus Decker in Compiler Development
проверка достаточна до границы страницы, 12 бит (или PAGE_SIZE_BITS) занулил и вперед
источник

BD

Berkus Decker in Compiler Development
в тлб все равно будет одна и та же запись, так что проверка выходит быстрой как ее ни делай
источник

BD

Berkus Decker in Compiler Development
(но лучше конечно на каждом обращении тогда, на случай tlb flush)
источник

BD

Berkus Decker in Compiler Development
согласен
источник

МБ

Михаил Бахтерев in Compiler Development
Berkus Decker
в тлб все равно будет одна и та же запись, так что проверка выходит быстрой как ее ни делай
С чего это? ECX - это потенциальные (сколько там?) 16 гигабайтов данных. Страниц будет много, и не факт, что некоторые из них вообще в память отображены
источник

BD

Berkus Decker in Compiler Development
Михаил Бахтерев
С чего это? ECX - это потенциальные (сколько там?) 16 гигабайтов данных. Страниц будет много, и не факт, что некоторые из них вообще в память отображены
Для каждой страницы - одна запись, я про это
источник

BD

Berkus Decker in Compiler Development
Суммарно страниц будет много но тут главный консерн это tlb flush в процессе записи
источник

МБ

Михаил Бахтерев in Compiler Development
Да ну, сликшом сложно, imho. Скорее всего, это просто всё тупо разворачивается в стандартные микропсы, которые лезут в память, и отдельно для каждой проверяется всё, как для обычных инструкций. if в процессоре -- дорогущая конструкция, поэтому стараются делать как можно более однороднее.
источник

МБ

Михаил Бахтерев in Compiler Development
Тем более, что у x86 традиционно и без того адски хитрый контроллер памяти с комбинацией запросов, линейным префетчингом и прочими радостями, оптимизированными под мультимедию всякую. Делать что-то отдельное под REP смысла особого, кажется, не имеет.
источник

BD

Berkus Decker in Compiler Development
Михаил Бахтерев
Да ну, сликшом сложно, imho. Скорее всего, это просто всё тупо разворачивается в стандартные микропсы, которые лезут в память, и отдельно для каждой проверяется всё, как для обычных инструкций. if в процессоре -- дорогущая конструкция, поэтому стараются делать как можно более однороднее.
ну я так и сказал в итоге
источник

BD

Berkus Decker in Compiler Development
я ж написал "согласен"
источник

BD

Berkus Decker in Compiler Development
источник

E

Eugene in Compiler Development
Опубликована видеозапись доклада Алексея Евгеньевича Недори про сборочное программирование, Вир и перспективы применения этого опыта для проектов на работе в Huawei
https://youtu.be/AZdcaLWPAd8
источник

PS

Peter Sovietov in Compiler Development
Учитывая (удивительную для меня) очарованность заслуженного автора LLVM'ом, мне странным кажется выбор для представления программ деревьев, а не DAG'ов :)
источник