s54820
Народ, что такое Revision у процессора (здесь R0), где его найти? В мануале про CPUID ничего об этом я не нашёл.
Это по идее декодированный stepping, а вот как его декодировать — не знаю. В «Intel XXX Specification Update» (спеки на конкретные семейства) оно есть в виде таблички CPUID (из 80000001) и stepping вот в таком, декодированном виде. Upd: да, и в CPU-Z видимо тоже просто таблички надёрганы.
Aiwan \ (•◡•) / _bot
если пишешь в сасме, то не используй макорсы, удали строку c include 'io.inc'. так будет понятней что по чем
Aiwan \ (•◡•) / _bot
скрин в студию
Aiwan \ (•◡•) / _bot
ты про сасм говорил. или я уже что т опутаю
Aiwan \ (•◡•) / _bot
сасм это редактор
Aiwan \ (•◡•) / _bot
дай скрин первых строк
Aiwan \ (•◡•) / _bot
уже чуть ясней
Aiwan \ (•◡•) / _bot
а зачем эта пляска с rbp? все равно не использцешь этот регистр
Aiwan \ (•◡•) / _bot
попробуй другие отладчики и сравни результаты
Aiwan \ (•◡•) / _bot
терпенья тебе
The Bird of Hermes
Вообще обычно rbp используется как база для стековых переменных и вообще предназначен для работы со стеком как с кучей
The Bird of Hermes
Локальные переменные, они же организуются так: push rbp mov rbp, rsp И потом аргументы будут [rbp-24], [rbp-32],... А для локальных переменных надо уменьшить rsp на нужное кол-во байт и потом использовать положительное смещение относительно rbp
The Bird of Hermes
Чуть не забыл про адрес возврата
The Bird of Hermes
Ну тут у тебя не используются языковые соглашения, нет локальных переменных, соответственно и изменения rbp ни на что влиять не должны
The Bird of Hermes
Каким образом?
bilka00
Я бы советовал почитать про механизм "стэкфреймов"
bilka00
Странно, у меня отладчик от такого никогда не падал
bilka00
А непредвиденные проблемы - вполне себе логичны. Если игратся с динамическими алоками на стэк.
Aiwan \ (•◡•) / _bot
выполняет не отладчик, а программа. отладчик только останавливает выполнение после каждой инструкции, если ты об этом его просишь. если ошибка в проге (ошибка в логике выполнения механизмов), то отладчик должен это показать явно или косвенно. анализ всего этого висит на тебе. имхо
Aiwan \ (•◡•) / _bot
мож нужно поставить версии инструментов как у автора? (по году книги определить версию отладчика, если автор явно не говорит ее)
s54820
Ты лучше скажи, как ты это собираешь и линкуешь? Тебе там случайно про -g не рассказывали?
s54820
Да, всё ок.
s54820
Но у тебя на скриншоте зелёном явно пишет, что main has no line number information. Т.е., оно почему-то отладочную информацию не сожрало, и поэтому проблемы с s. И rbp тут никакой роли не играет. У меня работает, кстати.
s54820
А у меня — если собрать без g.
disba1ancer
что не так то?
Leon
Поправьте если я не прав но мне кажется в 16-байтовое выравнивание будет тогда когда в конце регистра три нуля а не один
Leon
Три нуля это кратно 4к.
Чета я туплю. Как это так? Ведь rsp содержит адрес верхушки стека и как и все адреса - он в байтах. Или я чтото не догоняю?
The Bird of Hermes
Поправьте если я не прав но мне кажется в 16-байтовое выравнивание будет тогда когда в конце регистра три нуля а не один
В 16-ричной системе счисления 10 это 16. Соответственно, если ты в 16-ричной системе видишь число с 0 на конце, то оно кратно 16-ти
Leon
Kaydzyu
Привет. Направили сюда. Хз куда еще писать.
Kaydzyu
https://kwork.ru/projects/2049962
disba1ancer
@Ioann_V а movsd или movsq быстрее чем копирование через sse?
Ioann_
Есть ссе, а есть спец инструкция.
disba1ancer
Может ты про repb?
rep movsd или rep movsq, про rep movsb я речь не веду, и не уверен, что он будет быстрее или медленнее первых двух
Eugene
Салют! Интересная штука. Загрузились в DOS, выключили программно Turbo Boost (через MSR, в итоге cpuid и rdmsr показал, что он выключился). Запустили тест скорости до и после. Результат одинаковый на ряде копов (2, 3, 6 поколение). На 12-м разница в 2 раза. Почему такое может быть? Может, влияние каких-то других технологий? Или в DOS'е так странно работает или ещё что?
Eugene
В 12 же вроде LITTLE.big ядра? Может это и повлияло?
Да, но как это должно повлиять? Работа идёт на одном ядре всё равно. Просто режим меняется.
Eugene
Там разбег большой по частоте (турбо и не турбо) - это да. Но не в 2 раза. Хотя и там, где разница чуть больше 10%, всё равно это должно быть заметно ж. Может, какие-то доп новые технологии влияют. Надо почитать подробнее про ТВ и про новые (и старые) технологии управления частотами и пр.
­
Может просто запускается выполнение на "энергоэффективном" ядре?
Eugene
Может просто запускается выполнение на "энергоэффективном" ядре?
Не думаю. Слишком заметный прирост производительности в сравнении с более старыми поколениями. По ДОС.
­
А, оно наоборот более производительнее становится.
Eugene
А, оно наоборот более производительнее становится.
С чего бы это? К тому же, первое ядро - P, а стартует проц вроде с первого как раз. Плюс BIOS показывает частоту 2.1 ГГц, а не 1.6.
Aiwan \ (•◡•) / _bot
попробуй 99% поставить. так проц в буст не будет уходить, будет работать на базовых частотах
Aiwan \ (•◡•) / _bot
в твоих тестах это скорей всего стояло (надо перепроходить)
Aiwan \ (•◡•) / _bot
Eugene
знаю, на ноуте всегда ставлю
Ну так, это винда его восстанавливает. Но попробовать можно, конечно :)
Eugene
Попробовал на AMD (другие регистры). На глаз разницы не видно, но я нашёл описание в сколько шагов. Кто-нибудь знает, как определить текущую частоту ядра? Пока не нашёл, надо ещё рыться...
Eugene
TSC (rdtsc) вообще не отражает частоту ядра. В современных процессорах он шагает с постоянной скоростью вне зависимости от частоты ядра (даже во время сна). См. invariant tsc. Его скорость вычисляется через CPUID leaf 15h.
disba1ancer
Eugene
ничего она не восстанавливает, это в реестре
Так, в реестре записана конфигурация, под которую винда настраивает ЦП.
Leon
как это независимо от частоты? такты процессора уже не зависят частоты его чтоль? мож я чегото не знаю🤪
Изначально это был просто счетчик тактов но потом оказалось что он мешается, в меньшей степени, при переменной частоте и, в большей степени, при многоядерных конфигурациях, когда каждое ядро на своей частоте. В итоге начиная с не помню каких моделей гдето в CRx есть бит который превращает rdtsc в привилегированную инструкцию, соответсвенно исключение при вызове, и ОС уже обрабатывает и эмулирует выполнение так чтобы нигде никаких проблем не было.
Ask
ничоси... спасибо за инфу)
Eugene
Грядёт появление архитектуры x86-s, которая, судя по всему, заменит x86 (вопрос времени). Вот что пишут люди в Свиттере: https://twitter.com/lemire/status/1659766296358133760 Ну и прикладываю сам документ о том + отрывок из него. Что думаете об этом?
Eugene
Eugene
Leon
Вопрос так ли много они упрощают чтобы прозводительтность выросла хотя бы на 3% и так ли много это упростит в плане логики и транзисторного бюджета. Там Небось всё таскается из поколение в поколение практически без изменений уже больше 10 лет, особенно 16б части.
Leon
А ещё будет прикол если AMD сможет остаться с поддержкой всего этого И тогда кто-то будет покупать AMD это всё сильно нужно
Aiwan \ (•◡•) / _bot
но для этого надо все перепроектировать
usernameak
по сути, 16 бит выпиливают полностью, а 32 бита только в кернелмоде?
usernameak
мало кому это нужно
единственная проблема которая приходит в голову - системы будут UEFI-онли
Leon
удешевление производства, уменьшение площади кристала, уменьшение tdp, увеличение разгонного потенциала
Это только теоретически а практически реальным Hotspot который что-то реально ограничивает это fpu sse и avx
Aiwan \ (•◡•) / _bot
единственная проблема которая приходит в голову - системы будут UEFI-онли
ефи это програмный код, а код надо как то грузить, этим занимается биос. мож лучше биос сразу сделать х64???
Leon
по сути, 16 бит выпиливают полностью, а 32 бита только в кернелмоде?
Наоборот в 32 только в режиме совместимости под 64-битный ос, 32-битную ос запустить будет больше Невозможно или почти невозможно
Leon
Да кстати сейчас после старта компьютера процессор стартует шестнадцатибитном Real mode. Видимо и это изменит
usernameak