Мы не работаем над 128-битной архитектурой! Так — удивлённо и даже со смешком — прокомментировал вице-президент ARM Holdings мелькнувшее в азиатских СМИ известие о том, что ARM, покорившая 64 разряда в мобильных микропроцессорах, занялась теперь 128 битами. Собственно говоря, с популярной прессы много не возьмёшь; могли и соврать, и додумать, да и аргументация ARM звучит убедительно (64 бита покроют все потребности цифровой индустрии на много лет вперёд), но… Но что если не считать это бредом? Как много смысла (и есть ли он вообще) в разработке микропроцессора общего назначения, способного оперировать числами длиной в сто двадцать восемь бит?
Давайте начистоту: сколько-нибудь ощутимая потребность в таком процессоре на данный момент отсутствует. Для рядового пользователя разрядности как класса не существует давным-давно, со времён миграции на 32 бита (да и они-то в своё время оказались востребованы не сами по себе, а как бесплатная опция к умению новых процессоров защищать память). Массовый компьютерный мир всё ещё живёт в тех же самых 32 разрядах, лишь засматриваясь на следующую ступеньку и не говоря о том, чтобы прыгать через одну. Выбор разрядности за пользователя делают разработчики операционных систем, а они в массе своей всё ещё выбирают 32-битные конструкции (OS X с её «умолчательной» 64-разрядностью не в счёт).
В той же ситуации и программисты, которые давно уже работают с языками высокого уровня и крайне редко (синтез звука, анализ Big Data, кодирование-декодирование мультимедийных потоков, криптография, что ещё?) уходят ниже, к ассемблеру. Если обыватели не видят разрядности, то программеры её не чувствуют, о них заботится компилятор. Почему и принудительный переход к 64 битам на мобильных устройствах — инициированный Apple и подхваченный Intel, обещающей такие чипы уже в следующем году, — для большинства апп-девелоперов, скорее всего, пройдёт без проблем.
Вот так и получается, что даже 64 разряда нам пока не особо нужны, а про 128 и заикаться бессмысленно. Но давайте подойдём к теме с другой стороны. Попробуйте сформулировать, почему разговоры про «мобильную 64-битность» (а каких-то пять–семь лет назад и про 64 бита на десктопе) выводят вас из себя, а упоминание 128 бит кажется пустым дилетантским трёпом? Чем так уж провинились эти самые разряды, что нельзя просто взять и поставить в персоналку — представьте на минутку, что он вдруг появился — CPU с регистрами длиной в шестнадцать байт? Не считая понятных временных неудобств вроде перекомпиляции существующих программ, оптимизации кода для работы с данными большей длины и пропорционального увеличения накладных расходов (размер массивов данных и т. п.) — так вот, не считая этой мелочи, есть два раздражающих момента.
Момент первый — это тот факт, что обозначившаяся за последние годы необходимость в 64 разрядах опять сформирована не столько недостатком производительности, сколько побочным ограничением, а именно нехваткой оперативной памяти. Стараниями PC-вендоров каждый юзер знает теперь, что 32-битные CPU не в состоянии адресовать больше 4 Гбайт напрямую. На самом деле этот лимит сравнительно легко обходится, поскольку речь об ограничении памяти на один процесс, что среднестатистическому пользователю на среднестатистическом программном обеспечении в ближайшем будущем не грозит. Но тем сильнее раздражение: нам снова парят мозг, выдумывая трудности и навязывая «технологию завтрашнего дня», вместо того чтобы оптимизировать существующее железо и заняться наконец оптимизацией софта, разбазаривающего машинные ресурсы.
Момент второй — сравнительное благоденствие, которое мы сейчас переживаем. У производителей и сорок с лишним лет спустя после изобретения микропроцессора есть резервы и по тактовой частоте, и по количеству ядер (см. «Терафлопсы для PC: экстремальная многоядерность в действии»), и по энергопотреблению. Работая в этих направлениях, возможно получить ощутимый прирост производительности — без нужды что-либо менять собственно в программном обеспечении. Так на кой чёрт даже 64 бита?
Однако уже в обозримом будущем оба вышеозначенных фактора прекратят действовать или значительно ослабнут. Рост потребности в оперативной памяти сделает непрактичным 32-битный режим, а приближение к физическому пределу возможностей полупроводниковой микроэлектроники воспрепятствует продвижению вперёд прежними темпами. И вот тогда-то мы взглянем на увеличенную разрядность по-другому!
Тема 128 разрядов интересна практически полной своей неразработанностью. Можете смеяться, но статья в Википедии, посвящённая 128 битам, умещается на 1 (одной) страничке. Редкие исследователи, анализирующие преимущества высокоточной целочисленной арифметики (так называют 128-битный режим), сходятся на большой пользе для математики и физики. Но и для рядового пользователя, более обеспокоенного временем старта программы, сохранения документа, скоростью выборки из баз данных, наконец, энергоэффективностью (которая теоретически должна здесь вырасти скачком), возможность манипулировать 16 байтами за машинный цикл обозначит новую эпоху.
Всё говорит за то, что 128 бит станут первым барьером разрядности микропроцессоров после 8-битного, который будут штурмовать именно ради увеличенной производительности. Когда тактовую частоту нельзя будет повышать дальше, когда многоядерность и гетерогенность (распределение задачи между разнотипными вычислительными устройствами, в простейшем случае CPU и GPU) перестанут давать значительный прирост скорости, тогда повышение разрядности (читай: способность обработать больше данных за один удар «электронного сердца») с умной оптимизацией софта станет единственным реальным способом сдвинуться с мёртвой точки — конечно, не считая «замены рельсов», по которым движется компьютерный локомотив, то есть не привлекая нанотрубок, квантовых вычислителей и прочего подобного. Суперкомпьютеры уже столкнулись с этой проблемой (см. «Числогрызы ткнулись в физический предел»), и увеличение разрядности им определённо помогло бы.
Самое забавное, что незаметно для себя мы уже пользуемся 128-битными режимами. Да, массовых процессоров общего назначения, способных управляться с 16 байтами, за раз не существует. Однако в ограниченной форме 128-разрядность присутствует на широком рынке минимум полтора десятилетия (а экспериментально-коммерческие разработки были и ещё раньше — в частности модификации DEC VAX). Начало положили «мультимедийные» инструкции MMX/SSE в конце 90-х, манипулирующие 128 битами (хоть и не как одним целым, а разделяемыми на несколько чисел). В «нулевые» прогремела Transmeta (помните, где начинал свою американскую карьеру Линус Торвальдс?), оригинальные чипы которой использовали 128-битность для ускорения трансляции и исполнения эмулируемого машинного кода чужих процессоров. Сегодня последняя версия самой популярной операционной системы — MS Windows — откажется работать на компьютере, процессор и материнская плата которого не поддерживают ассемблерную инструкцию CMPXCHG16B, оперирующую опять-таки 128-битным числом. Наконец, многие вспомогательные технологии в массовом компьютинге используют 16-байтную математику: память в графических картах, адресация в IPv6, файловая система ZFS (само название которой произведено от «zettabyte» — разменной единицы в 128-битном мире). Все они выиграют, если центральные микропроцессоры перейдут на 128 бит.
Так где гарантии, что ARM или Intel не экспериментируют со 128 битами в своих лабораториях уже сейчас? Естественно, за плотно закрытыми дверями — и высмеивая саму идею на людях: никто из этих солидных господ не желает сам стать объектом насмешек, выглядеть замечтавшимся чудиком!
Но рисковать остаться без собственных наработок в таком деле, согласитесь, тоже не может позволить себе никто.