Инструмент для проверки сложных архитектур ЭВМ показывает недостатки в появляющемся дизайне

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

Чиновники в Фонде RISC-V заявили, что ошибки не затронут большинство версий RISC-V, но вызвали бы проблемы для систем более высокой работы.«Неправильные заказы доступа памяти могут привести к программному обеспечению, выполняющему вычисления, используя неправильные ценности», сказали Маргарет Мартонози, Хью Трамбалл Адамс ’35 профессоров Информатики в Принстоне и лидере команды Принстона, которая также включает аспирантов Кэролайн Триппель и Ятина Мэнеркэра. «Они в свою очередь могут привести к трудным к отладке ошибкам программного обеспечения, что или заставьте программное обеспечение потерпеть крах или быть уязвимым для деяний безопасности. С процессорами RISC-V, часто предполагаемыми как процессоры контроля для реальных физических устройств (т.е., Интернет вещей устройства), эти ошибки могут вызвать слабые места ненадежности или безопасности, затрагивающие полную безопасность систем».Krste Asanovi?, председатель Фонда RISC-V, приветствовал вклады исследователей.

Он сказал, что Фонд RISC-V сформировал рабочую группу, возглавляемую бывшим аспирантом и co-исследователем Мартонози Дэниелом Ластигом, чтобы решить заказывающие память проблемы. Asanovi?, преподаватель электротехники и информатики в Калифорнийском-университете-Беркли, сказал, что проект RISC-V искал вход от сообщества дизайнеров, чтобы «заполнить промежутки и отверстия и получал спекуляцию, о которой все могут договориться».«Цель состоит в том, чтобы ратифицировать спекуляцию в 2017», сказал он. «Модель памяти – часть этого».

Lustig, соавтор недавней статьи Мартонози и теперь исследователь в NVIDIA, заявил, что работа шла полным ходом, чтобы улучшить модель памяти RISC-V.«RISC-V находится в удачном положении способности оглянуться назад на ценность десятилетий промышленности и академического опыта», сказал он. «Это будет в состоянии извлечь уроки изо всего понимания и ошибок, сделанных предыдущими попытками».Проект RISC-V по существу предлагает технические требования, которые ведут дизайн аппаратного и программного обеспечения процессоров RISC-V и приложений. Эти технические требования, известные обычно как Архитектура Набора команд, описывают самые основные функции процессора включая его арифметические и логические действия, а также способ, которым программы используют память компьютера.

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

Это было сначала развито в UC-Беркли с идеей, что любой проектировщик мог использовать набор команд, чтобы создать жареный картофель, и также компиляторы программного обеспечения, которые переводят приложения с языков программирования высокого уровня, чтобы работать на них. Проектом теперь управляет Фонд RISC-V, членство которого включает список университетов, некоммерческих организаций и лучших технологических компаний, включая Google, IBM, Microsoft, NVIDIA и Oracle.

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

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

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

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

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

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

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

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

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

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

«Инструменты как PipeCheck и TriCheck чрезвычайно полезны, строя новую архитектуру, особенно для проектов, которые действительно пытаются попытаться выйти за границы возможного», сказал Ластиг. Он добавил, что идентификация ошибок может быть трудной, но даже когда они раскрыты, удостоверившись, что решения не вызывают проблемы в других областях системы, ставит новые проблемы. «TriCheck соединяет все части, проверяя программное обеспечение, компилятор, архитектуру и микроархитектуру в одном единственном пакете».

В дополнение к Martonosi и Lustig, авторы газеты включают: Кэролайн Триппель и Ятин Мэнеркэр, Принстона; и Майкл Пеллоер из NVIDIA. Поддержка работы была оказана частично Национальным научным фондом и CFAR, одним из шести центров STARNET, программа Semiconductor Research Corporation, спонсируемая Microelectronics Advanced Research Corporation и Управлением перспективного планирования оборонных научно-исследовательских работ.

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