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

25 февраля 1991 года в ходе первой войны в Персидском заливе ракета «Скад» неожиданно угодила в казармы армии США, дислоцированной в Саудовской Аравии, что привело к гибели 28 американских солдат. Казармы находились под защитой системы противоракетной обороны Patriot, которая по ряду причин не смогла обнаружить приближение «Скада» и организовать достойное противодействие этому удару. Годом позже главное учетно-контрольное управление армии США, проведя расследование этого трагического инцидента, пришло к выводу, что в системе управления батареей Patriot имеется неисправимая ошибка. Система была не в ладах с математикой.

Сегодня представители компании Sun Microsystems приступили к выполнению работ, финансирование которых в течение трех лет будет осуществляться за счет гранта на сумму 50 млн. долл., выделенного агентством DARPA, и которые должны будут исключить возможность возникновения в дальнейшем ошибок, подобных той, что случилась с системой Patriot. «В информационных системах ошибки в математических вычислениях — явление гораздо более распространенное, нежели предполагает большинство людей», — заметил вице-президент и директор по технологиям компании Sun Грег Паподопулос. Хотя за Sun закрепилась слава компании, которая едва ли не во всех грехах винит Microsoft, но, по признанию Паподопулоса, во многих случаях в необъяснимых сбоях ПК повинна отнюдь не Windows, а плохая математическая проработка.

«Множество компьютерных ошибок остаются нераспознанными, — подчеркнул он. — Довольно часто машина, только что работавшая очень хорошо, вдруг зависает. Вы привычно обвиняете в этом Microsoft. Впрочем, и мы тоже. Ведь это удобно. Это весьма удобно и для Intel».

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

Сложности, о которых говорят Густафсон и Паподопулос, объясняются тем, что бинарная математика, на базе которой построена вся вычислительная техника, не обеспечивает точного представления некоторых чисел. Наибольшие трудности возникают с дробями, поскольку они зачастую в десятичной записи являются бесконечными, а следовательно, не вписываются в рамки ограничений разрядности двоичного формата.

Вспомним еще раз инцидент в Персидском заливе. Компьютер, управляющий батареей ракетных установок Patriot, округлил такую же бесконечную дробь при расчете времени. Но отбрасывая несколько цифр при выполнении каждой операции, компьютер вместе с этим «округлял» и некоторый временной интервал. С каждым часом хронометр Patriot отставал на 0,0034 секунды. К 25 февраля компьютер проработал без перерыва 100 часов, и ошибка составляла уже около трети секунды. Этого оказалось достаточно, для того чтобы пропустить атаку «Скада».

«Конечно, программисты, которые разрабатывали ПО, отвечавшее за выполнение всех расчетов, хорошо знали о возможности возникновения подобных осложнений и, чтобы избежать их, использовали целый ряд различных приемов», — сообщил главный аналитик компании Insight64 Натан Бруквуд.

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

Некоторые компиляторы уже сейчас поддерживают интервальную арифметику, усилия же разработчиков Sun направлены на повышение производительности интервальных вычислений. «В наших компиляторах реализованы очень тонкие алгоритмы, поэтому потери производительности вследствие использования интервалов сегодня малы, как никогда ранее», — заявил Густафсон.

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

В августе в Sun для работы над прототипом была сформирована группа High Productivity Computing Solutions. Возглавил ее бывший руководитель научно-производственной лаборатории SunLabs Джим Митчелл. В состав группы вошли более 100 человек, включая четырех наиболее заслуженных исследователей Sun, обладающих статусом Sun Fellow.

Суперкомпьютеру Sun неспроста присвоено кодовое наименование Hero. Это машина действительно героических пропорций. По словам Густафсона, ее быстродействие приблизительно в 50 раз превышает производительность самого мощного на сегодняшний день суперкомпьютера Earth Simulator, находящегося в японском городе Иокогама.

Компьютер Earth Simulator способен выполнять свыше 40 трлн. математических операций в секунду. Если руководству Sun удастся продлить с DARPA соглашение о финансировании и перейти от прототипа Hero к следующей стадии его развития, суперкомпьютер сможет выполнять за секунду примерно в 50 раз больше операций.

Наряду с корпорациями IBM и Cray, компания Sun получила в июле прошлого года от агентства DARPA грант на построение прототипа суперкомпьютера следующего поколения. После появления прототипов правительственное агентство планирует организовать финансирование мероприятий по созданию по крайней мере двух работающих суперкомпьютеров.

Группа Митчелла занимается сегодня сразу несколькими перспективными технологиями, в том числе проектированием алгоритмов интервальной арифметики и спецификаций языка, который найдет применение при разработке нового программного обеспечения для суперкомпьютеров. Однако результат попыток Sun убедить DARPA пойти дальше прототипа в первую очередь будет зависеть от успеха новой технологии организации взаимодействия между отдельными чипами, которая получила название proximity interconnect и была представлена группой Митчелла на конференции Custom Integrated Circuits Conference, организованной ассоциацией IEEE в сентябре прошлого года.

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

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

«Сейчас разработчики Sun пытаются исключить потери времени при пересылке данных от одной микросхемы к другой, — пояснил Бруквуд. — И если им удастся реализовать этот процесс и поставить соответствующее производство на промышленную основу, последствия могут оказаться просто революционными».