Инструмент для проверки сложных компьютерных архитектур выявляет недостатки в разрабатываемом дизайне

Исследователи, тестируя созданную ими методику анализа применения памяти компьютера, нашли более 100 неточностей, каковые связаны с неправильным порядком хранения и извлечения информации из памяти в вариантах архитектуры процессора RISC-V. Исследователи предотвратили, что, если неприятности не будут устранены, они смогут привести к в программном обеспечении, трудящемся на чипах RISC-V. Офпреды RISC-V Foundation заявили, что неточности не повлияют на большинство догадок RISC-V, но приведут к для высокопроизводительных совокупностей.

«Неверный порядок доступа к памяти может привести к тому, что ПО будет делать вычисления с применением неверных значений», — сказала Маргарет Мартоноси, профессор компьютерных наук Хью Трамбалла Адамса 35 года в Принстоне и глава команды Принстона, в которую также входит доктор философии. студенты Кэролайн Триппель и Ятин Манеркарь. «Это, со своей стороны, может привести к сложным для отладки программным неточностям, каковые либо приводят к сбою ПО, либо становятся уязвимыми для эксплойтов безопасности. Процессоры RISC-V частенько рассматриваются как управляющие процессоры для настоящих физических устройств (к примеру, Интернет вещи устройства) эти неточности смогут привести к ненадЁжности или уязвимость совокупности безопасности, влияющую на неспециализированную безопасность совокупностей ".Крсте Асанович, глава RISC-V Foundation, приветствовал вклад исследователей.

Он объявил, что RISC-V Foundation организовал коммисию во главе с бывшим аспирантом и со-исследователем Мартоноси Даниэлем Люстигом для решения проблем упорядочивания памяти. Асанович, электротехники наук и доктор информатики в Калифорнийском университете в Беркли, объявил, что проект RISC-V ищет мнения дизайнерского сообщества, чтобы «заполнить дыры и пробелы и забрать спецификацию, с которой может согласиться любой. . "«Отечественная цель — ратифицировать спецификацию в 2017 году», — сказал он. «Модель памяти — часть этого».Люстиг, соавтор недавней статьи Мартоноси, а на данный момент научный сотрудник NVIDIA, объявил, что работа над улучшением модели памяти RISC-V ведется.«RISC-V находится в весёлом положении, вследствие того что может взглянуть назад на накопленный за десятилетия промышленный и отвлечённый опыт», — сказал он. «Он сможет извлечь уроки из всех идей и ошибок, сделанных в прошлых попытках».

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

Разработчики оборудования используют наборы команд при создании новых микросхем, а программисты сохраняют надежду на них при написании нового ПО.Большая часть компьютеров, используемых на данный момент, и миллионы ПК и совокупностей Apple, используют процессоры, основанные на наборах управлений, созданных гигантами по производству микросхем Intel или ARM (к примеру, Intel широко известна как x86). Напротив, набор команд RISC-V сперва был открытым. В первоначальный раз он был создан в Калифорнийском университете в Беркли с идеей, что любой разработчик может использовать набор управлений для микросхем, и программных компиляторов, каковые переводят программные приложения с языков программирования громадного уровня для работы на них.

Сейчас проектом командует фонд RISC-V, в состав которого входят университеты, некоммерческие организации и ведущие технологические компании, включая Google, IBM, Microsoft, NVIDIA и Oracle.Команда Мартоноси отыскала проблеме при тестировании собственной новой совокупности для проверки операций с памятью на любой компьютерной архитектуре.

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

«Мы именуем это TriCheck, по обстоятельству того, что он снабжает согласованность обеспечений упорядочения памяти, снабжаемых этими тремя уровнями», — сказал Мартоноси.В документе, представленном 10 апреля на Интернациональной конференции ACM по архитектурной помощи языков программирования и операционных систем, исследователи обрисовывают совокупность TriCheck. В документе также подробно описывается, как TriCheck выявлял потенциальные проблемы с памятью в высокопроизводительных аппаратных реализациях набора команд RISC-V. (Подобные неточности не были обнаружены в других реализациях архитектуры.) Авторы обрисовывают, как они запускали тесты набора управлений RISC-V с применением высокоуровневой программы, написанной на языке программирования C. В одном конкретном проекте, совместимом с RISC-V, TriCheck отыскал 144 ошибочные программы из 1701 тестовой программы.

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

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

«Если я пишу программу на C, она делает кое-какие предположения о порядке памяти», — сказал Мартоноси. «Позже второй набор правил упорядочивания памяти определяется архитектурой набора управлений. Нам нужно проверить, что предположения высокоуровневой программы совсем правильно поддерживаются базовым набором и конструкцией процессора руководств».Но исследователи заявили, что самая сильная сторона TriCheck — это свойство дать дизайнерам широкий обзор применения памяти. Без оглядки на то, что дизайнеры в далеком прошлом интересовались предоставит шанс, прошлые попытки всестороннего анализа операций с памятью были слишком медленными, чтобы их вероятно было реализовать на практике.

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

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

Но устранение проблем на столь позднем этапе разработки может оказаться дорогостоящим. PipeCheck разрешает разработчикам осуществлять контроль использование памяти намного раньше в конвейере проектирования и стремительнее исправлять неточности на данной более недорогой стадии.«PipeCheck оказывает помощь узнать, делает ли центральный процессор данные об применении памяти», — сказал Мартоноси.Люстиг трудился над проектами PipeCheck и TriCheck и присоединился к NVIDIA по окончании получения докторской степени в 2015 году. на данный момент в NVIDIA, которая создаёт процессоры, специализирующиеся на компьютерной графике, Люстиг объявил, что ценит свойство внимательно разбирать дизайн на предмет неточностей.

«Такие инструменты, как PipeCheck и TriCheck, весьма необходимы при создании новых архитектур, в особенности для проектов, каковые в самом деле пробуют раздвинуть границы», — сказал Люстиг. Он заявил, что обнаружение неточностей вероятно тяжёлым, но помимо этого в то время, в то время, когда они обнаруживаются, обеспечение того, чтобы решения не вызывали проблем в других областях совокупности, формирует новые проблемы. «TriCheck объединяет все воедино, осуществляя контроль ПО, компилятор, архитектуру и микроархитектуру в одном пакете».Не считая Мартоноси и Лустига, авторами статьи являются: Кэролайн Триппель и Ятин Манеркар из Принстона; и Майкл Пеллауэр из NVIDIA. Работа была частично поддержана Национальным научным фондом и CFAR, одним из шести центров STARnet, программы корпорации полупроводниковых изучений, спонсируемой Корпорацией перспективных изучений в области микроэлектроники и Агентством перспективных исследовательских проектов Минобороны.

Мартоноси объявил, что цель проекта TriCheck — остановить неточности перед тем, как они создадут проблеме для пользователей.«TriCheck — важный движение в достижении нашей общей цели комплексной проверки правильности порядка памяти в сложных аппаратных и программных системах», — сказала она. «Учитывая растущую зависимость от компьютерных совокупностей везде, включая финансы, совокупности и машины управления производством, переход к совершенно верно верной работе важен для их надёжности и безопасности».


Портал обо всем