Сообщение Re[9]: i7-12700 vs M1 от 02.02.2022 17:09
Изменено 02.02.2022 17:11 netch80
Re[9]: i7-12700 vs M1
Здравствуйте, koandrew, Вы писали:
N>>Чуть больше десяти. В командах это всё равно будет меньше ~8 для x86.
K>А остальные? А адрес возврата?
N>>Ну расскажи, сколько. Только учти, что по sysenter (syscall) только вход облегчается. А дальше всё равно надо все регистры сохранять и возвращать что-то только в RAX (иногда RDX, иначе его обнулять), потому что иначе утекут данные ядра.
K>Всё равно в ARM намного больше.
А у слона хобот длиннее.
Открываем AArch64 ABI, видим: callee-saved registers: r19...r28. 10 регистров — 5 пар.
Смотрим x86-64 ABI (Linux/Itanium style): callee-saved registers: rbx, rbp, r12-r15. Уже 6 штук.
А теперь ещё учтём, что большее количество регистров, доступных для функции, означает больше возможностей уложить алгоритм в них и не занимать callee-saved.
K>Вот уж не ожидал, что тебе нужно объяснять, что команды в коде и команды исполненные — это не одно и то же. Может всё же голову включишь?
Приведи тогда реальную статистику их использования. А про "голову включишь" — сам не пробовал первым включить?
Я хотя бы опираюсь на количество команд в целом в коде, а у тебя вообще не то святой дух, не то справочник Стеля.
N>>Подбери аналог, скомпилирую и сравню специально по запросу. Я тут пытался со squid это сделать, но у него configure хочет странного. Есть идеи что проверить? Нужен выходной бинарник в 0.5-1MB без сложной плагинной структуры.
K>А мне-то оно зачем? Ты выдвинул тезис — тебе и доказывать. Я-то ответ и так знаю.
Ага, только доказать никак не можешь. Только классовое чутьё тебе что-то шепчет.
N>>Второе, что у него сейчас начинаются собственные... мнэээ... странные решения. Например, ABI с global pointer. Страничная система типа Sv32 с тем, что 2**34 физических бит, зато 10 бит на все свойства страниц — серьёзно?
N>>Уже на 1.5GB RAM надо переходить на 64-битку, а они физические 2**34 придумывают, будто мало фейла с x86 PSE.
N>>Ну и так далее.
K>32 бита не актуальны для PC, этот стандарт больше для микроконтроллеров, потому там важно экономить ресурсы, и страничная адресация не нужна от слова "вообще".
Ну так незачем было тогда такое вводить, раз экономить ресурсы надо.
N>>Чуть больше десяти. В командах это всё равно будет меньше ~8 для x86.
K>А остальные? А адрес возврата?
N>>Ну расскажи, сколько. Только учти, что по sysenter (syscall) только вход облегчается. А дальше всё равно надо все регистры сохранять и возвращать что-то только в RAX (иногда RDX, иначе его обнулять), потому что иначе утекут данные ядра.
K>Всё равно в ARM намного больше.
А у слона хобот длиннее.
Открываем AArch64 ABI, видим: callee-saved registers: r19...r28. 10 регистров — 5 пар.
Смотрим x86-64 ABI (Linux/Itanium style): callee-saved registers: rbx, rbp, r12-r15. Уже 6 штук.
А теперь ещё учтём, что большее количество регистров, доступных для функции, означает больше возможностей уложить алгоритм в них и не занимать callee-saved.
K>Вот уж не ожидал, что тебе нужно объяснять, что команды в коде и команды исполненные — это не одно и то же. Может всё же голову включишь?
Приведи тогда реальную статистику их использования. А про "голову включишь" — сам не пробовал первым включить?
Я хотя бы опираюсь на количество команд в целом в коде, а у тебя вообще не то святой дух, не то справочник Стеля.
N>>Подбери аналог, скомпилирую и сравню специально по запросу. Я тут пытался со squid это сделать, но у него configure хочет странного. Есть идеи что проверить? Нужен выходной бинарник в 0.5-1MB без сложной плагинной структуры.
K>А мне-то оно зачем? Ты выдвинул тезис — тебе и доказывать. Я-то ответ и так знаю.
Ага, только доказать никак не можешь. Только классовое чутьё тебе что-то шепчет.
N>>Второе, что у него сейчас начинаются собственные... мнэээ... странные решения. Например, ABI с global pointer. Страничная система типа Sv32 с тем, что 2**34 физических бит, зато 10 бит на все свойства страниц — серьёзно?
N>>Уже на 1.5GB RAM надо переходить на 64-битку, а они физические 2**34 придумывают, будто мало фейла с x86 PSE.
N>>Ну и так далее.
K>32 бита не актуальны для PC, этот стандарт больше для микроконтроллеров, потому там важно экономить ресурсы, и страничная адресация не нужна от слова "вообще".
Ну так незачем было тогда такое вводить, раз экономить ресурсы надо.
Re[9]: i7-12700 vs M1
Здравствуйте, koandrew, Вы писали:
N>>Чуть больше десяти. В командах это всё равно будет меньше ~8 для x86.
K>А остальные? А адрес возврата?
N>>Ну расскажи, сколько. Только учти, что по sysenter (syscall) только вход облегчается. А дальше всё равно надо все регистры сохранять и возвращать что-то только в RAX (иногда RDX, иначе его обнулять), потому что иначе утекут данные ядра.
K>Всё равно в ARM намного больше.
А у слона хобот длиннее.
Открываем AArch64 ABI, видим: callee-saved registers: r19...r28. 10 регистров — 5 пар.
Смотрим x86-64 ABI (Linux/Itanium style): callee-saved registers: rbx, rbp, r12-r15. Уже 6 штук.
А теперь ещё учтём, что большее количество регистров, доступных для функции, означает больше возможностей уложить алгоритм в них и не занимать callee-saved.
K>Вот уж не ожидал, что тебе нужно объяснять, что команды в коде и команды исполненные — это не одно и то же. Может всё же голову включишь?
Приведи тогда реальную статистику их использования. А про "голову включишь" — сам не пробовал первым включить?
Я хотя бы опираюсь на количество команд в целом в коде, а у тебя вообще не то святой дух, не то справочник Стеля.
N>>Подбери аналог, скомпилирую и сравню специально по запросу. Я тут пытался со squid это сделать, но у него configure хочет странного. Есть идеи что проверить? Нужен выходной бинарник в 0.5-1MB без сложной плагинной структуры.
K>А мне-то оно зачем? Ты выдвинул тезис — тебе и доказывать. Я-то ответ и так знаю.
Ага, только доказать никак не можешь. Только классовое чутьё тебе что-то шепчет.
И по поводу "выдвинул тезис" — это чьи слова
K>> Поскольку инструкции ARM в среднем более примитивны, чем x86, первые должны выполнить больше инструкций для выполнения одной и той же задачи.
мои, что ли?
N>>Второе, что у него сейчас начинаются собственные... мнэээ... странные решения. Например, ABI с global pointer. Страничная система типа Sv32 с тем, что 2**34 физических бит, зато 10 бит на все свойства страниц — серьёзно?
N>>Уже на 1.5GB RAM надо переходить на 64-битку, а они физические 2**34 придумывают, будто мало фейла с x86 PSE.
N>>Ну и так далее.
K>32 бита не актуальны для PC, этот стандарт больше для микроконтроллеров, потому там важно экономить ресурсы, и страничная адресация не нужна от слова "вообще".
Ну так незачем было тогда такое вводить, раз экономить ресурсы надо.
N>>Чуть больше десяти. В командах это всё равно будет меньше ~8 для x86.
K>А остальные? А адрес возврата?
N>>Ну расскажи, сколько. Только учти, что по sysenter (syscall) только вход облегчается. А дальше всё равно надо все регистры сохранять и возвращать что-то только в RAX (иногда RDX, иначе его обнулять), потому что иначе утекут данные ядра.
K>Всё равно в ARM намного больше.
А у слона хобот длиннее.
Открываем AArch64 ABI, видим: callee-saved registers: r19...r28. 10 регистров — 5 пар.
Смотрим x86-64 ABI (Linux/Itanium style): callee-saved registers: rbx, rbp, r12-r15. Уже 6 штук.
А теперь ещё учтём, что большее количество регистров, доступных для функции, означает больше возможностей уложить алгоритм в них и не занимать callee-saved.
K>Вот уж не ожидал, что тебе нужно объяснять, что команды в коде и команды исполненные — это не одно и то же. Может всё же голову включишь?
Приведи тогда реальную статистику их использования. А про "голову включишь" — сам не пробовал первым включить?
Я хотя бы опираюсь на количество команд в целом в коде, а у тебя вообще не то святой дух, не то справочник Стеля.
N>>Подбери аналог, скомпилирую и сравню специально по запросу. Я тут пытался со squid это сделать, но у него configure хочет странного. Есть идеи что проверить? Нужен выходной бинарник в 0.5-1MB без сложной плагинной структуры.
K>А мне-то оно зачем? Ты выдвинул тезис — тебе и доказывать. Я-то ответ и так знаю.
Ага, только доказать никак не можешь. Только классовое чутьё тебе что-то шепчет.
И по поводу "выдвинул тезис" — это чьи слова
K>> Поскольку инструкции ARM в среднем более примитивны, чем x86, первые должны выполнить больше инструкций для выполнения одной и той же задачи.
мои, что ли?
N>>Второе, что у него сейчас начинаются собственные... мнэээ... странные решения. Например, ABI с global pointer. Страничная система типа Sv32 с тем, что 2**34 физических бит, зато 10 бит на все свойства страниц — серьёзно?
N>>Уже на 1.5GB RAM надо переходить на 64-битку, а они физические 2**34 придумывают, будто мало фейла с x86 PSE.
N>>Ну и так далее.
K>32 бита не актуальны для PC, этот стандарт больше для микроконтроллеров, потому там важно экономить ресурсы, и страничная адресация не нужна от слова "вообще".
Ну так незачем было тогда такое вводить, раз экономить ресурсы надо.