Внизапнае околокомпьютерное

Nov 11, 2023 15:24

Собсна, кому интересно - те и так знают, но что-то меня вдруг недавно накрыло, видимо, в свете активного развития локальных процессорных архитектур в Китае.
Итак, что у нас есть?
Перво-наперво у нас есть параллельное и спекулятивное выполнение, очереди команд, кэш и дохрена прочей обвязки. И всё это - чтобы быстрее выполнять команды.
У нас есть два более концептуально разных подхода: когда процессор сам разбирается, какие команды и когда он выполняет (причём это есть и для архитектур с простыми командами вроде арм и риск, и для архитектур со сложными командами вроде х86), и VLIW, когда команды параллелит компилятор, заметно облегчая жизнь процессора (или нет). Из того, что на слуху - VLIW есть в Эльбрусе и было в процессорах Transmeta, когда интел и амд ещё не съели всех остальных игроков на рынке х86.
VLIW - very long instruction word, очень длинное командное слово - это когда одна "команда" процессора, выполняющаяся за раз, на самом деле является объединением нескольких базовых команд, не пересекающихся ни по аргументам, ни по используемым вычислительным блокам.
Итог: в суперскалярных процессорах выделен существенный транзисторный бюджет на логику определенния зависимости команд в очереди друг от друга, что позволяет независимые по данным командам выполнять в произвольном порядке по мере доступности аргументов и вычислительных блоков. В случае VLIW эту работу выполняет компилятор, в спокойной обстановке во время компиляции программы, а не на бегу в продакшне.
Главное: оба подхода имеют свои плюсы и минусы.
Суперскалярные процессоры обеспечивают очень высокую совместимость. Если код хорошо работал на процессоре Н поколений назад - ровно тот же код будет работать не хуже и сейчас (возможно, даже и лучше).
VLIW-процессоры, конкретно Трансмета, показывали охренительную энергоэффективность: лишь немного уступая по производительности современным им интелам и амд (отставая на единицы процентов, по-разному на разных задачах), они потребляли на десятки процентов меньше энергии. Тот же самый Эльбрус, насколько я помню, в режиме эмуляции х86 тоже показывал весьма неплохие результаты.
Проблемы, однако, тоже есть и, как положено, являются продолжением достоинств: суперскалярные процессоры СЛОЖНЫЕ. ОЧЕНЬ сложные. Там очень много логики, которая как раз и обеспечивает то самое выполнение команд параллельно или не в том порядке, как они идут в программе, но с правильным результатом.
VLIW-процесоры весьма капризны при модернизации: их параллелизм - аппаратный, и компилятор, оптимизируя код, фактически делает это очень жёстко под конкретный вариант. Если мы перенесём код на следующей поколение того же VLIW-процессора - может оказаться, что у него ширина параллельности увеличилась или поменялось соотношение вычислительных блоков, но без перекомпиляции использовать это не получится.
Лично я, как программист, смотрю на это всё с совершенно иной точки зрения: патенты и применимость.
Архитектура х86 сейчас является де-факто стандартом и на серверах, и на рабочих местах. Её достаточно уверенно теснит арм, но пока что его доля не особенно велика. Обе архитектуры - проприетарные, так что соответствующие процессоры разрабатываются строго по лицензии, которую могут в любой момент отозвать (что и случилось с нашими разработчиками армов), если вообще давали (лицензия на х86 осталась, по-моему, только у VIA, если не брать интел и амд, которые уже очень давно кросслицензировали друг другу всё, что можно, и так и будут дальше тошнить дуэтом, ибо антимонопольное законодательство). Есть (условно) открытые архитектуры: power, разрабатываемый и лицензируемый IBM и RISC-VЮ, разрабатываемый международным консорциумом и доступный всем желающим, как я понял.
Создать свою собственную уникальную архитектуру, сиречь, систему команд процессора, задача не особо сложная - можно посмотреть, что сделали умные люди и аккуратно надёргать. Проблема эту архитектуру хоть как-то использовать, ибо сами по себе процессоры никому нафиг не нужны, нужны исполняемые на них программы... и даже сами программы не очень нужны, часто нужен результат работы этих программ, а уже для этого нужна операционка, процессор и компилятор, который с помощью лома и какой-то матери заставит их приносить пользу конечному пользователю.
Соответственно, "национальные" архитектуры, хоть наш Эльбрус, хоть китайский Loongson - это сугубо нишевые решения, например, в оборонку. Деньги там есть, а паранойя не дремлет.
С точки зрения конечного пользователя интерес представляют максимально широко распространённые архитектуры (именно поэтому х86, при всех своих недостатках, и стала де-факто стандартом), чтобы не надо было мучительно разбираться, почему нужная программа не работает и как её починить. Именно поэтому я с большим интересом смотрю в сторону RISC: архитектура открытая, по ней есть масса интересных наработок (в основном - всякие микроконтроллеры, но это тоже отличная база).

железо, мысли

Previous post Next post
Up