TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Московия и не только

10 Aug, 17:50

Открыть в Telegram Поделиться Пожаловаться

Зал ассемблерного позора

На днях товарищ зашёл с довольно неожиданным вопросом:
Как ты думаешь, какой правильный ответ на вопрос «максимальное время исполнения одной инструкции в современном процессоре»?

Вопрос, действительно, оказался с подвохом.

Всегда можно ответить уклончиво: «зависит от реализации», что будет абсолютной правдой. Человечество придумало много моделей того, как должен работать вычислитель. Как минимум до сих пор есть архитектуры CISC (Complex Instruction Set Computer) и RISC (Reduced -//-).

Первая архитектура, CISC, предлагает тысячи разных команд от простого «ничего не делай» (NOP) за один такт до инструкций вроде вычисления синуса и косинуса (FSINCOS), которые выполняются сотню тактов. Одна инструкция в CISC может запросить данные из памяти, провести вычисления и положить данные обратно в память.

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

Вторая архитектура, RISC, предлагает иной подход: каждая инструкция делает что-то одно: или работает с памятью, или занимается вычислениями. Разнообразие инструкций меньше, но программы более многословные. Это могло быть минусом, но сейчас с машинными кодом работают в основном компиляторы, а не люди. (Более подробно о различиях CISC и RISC можно почитать в этом переводе.)

Очевидно, что сокращенные команды RISC едва ли смогут выполняться дольше, чем комплексные команды CISC. Но всё равно хочется цифр.

Как я уже говорил, самая простая инструкция, которая есть — это NOP, буквально отсутствие действия. Эта инструкция выполняется один такт, то есть при частоте современного процессора 5 ГГц один такт занимает примерно 0.2 наносекунды.

Вот тут есть Зал ассемблерного позора, в котором автор составил список самого долго выполнения одной инструкции процессором. Первое место заняла инструкция fxrstor64 — чтение памяти устройства на шине PCIe.

Секрет медлительности довольно прост: другие ядра процессора генерируют множество неэффективных обращений и «забивают» очередь. «Замеряемая» инструкция становится в самый конец очереди и вынуждена ждать. В худшем случае получилось, что одна инструкция выполнялась 198 миллиардов тактов, то есть 62 секунды человеческого времени.

Очень специфичная информация. Но этот эксперимент показывает узкие места в архитектуре компьютера, а это может быть полезно для тех, кто готов бороться за каждую микросекунду ускорения своей программы.

308 0 1 3 2
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot