Научная статья на тему 'Метод построения абстрактных моделей, используемых для верификации протоколов когерентности кэш-памяти масштабируемых систем'

Метод построения абстрактных моделей, используемых для верификации протоколов когерентности кэш-памяти масштабируемых систем Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
176
21
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ФОРМАЛЬНЫЙ МЕТОД / ПРОВЕРКА МОДЕЛЕЙ / ПРЕОБРАЗОВАНИЕ МОДЕЛЕЙ / ПРОТОКОЛ КОГЕРЕНТНОСТИ КЭШ-ПАМЯТИ / FORMAL METHOD / MODEL CHECKING / MODEL TRANSFORMATIONS / CACHE COHERENCE PROTOCOL

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Буренков В. С., Иванов С. Р.

Изложен новый подход к решению задачи верификации протоколов когерентности кэш-памяти масштабируемых микропроцессорных систем. Рассмотрена математическая модель протоколов когерентности. Модель представляет собой отдельные группы устройств, работающих в соответствии с протоколом, в виде графов программ, а протокол в целом в виде канальной системы, из которой может быть получена и исследована методом Model checking система переходов. Предложен подход к описанию моделей протоколов когерентности на языке Promela и сформулированы ограничения на модели. Представлен метод построения абстрактных моделей, позволяющий существенно уменьшить их размер и базирующийся на преобразованиях отдельных графов программ исходной модели, или на синтаксических преобразованиях Promela-процессов. Приведено математическое доказательство сохранения преобразованиями свойств-инвариантов. Результаты основаны на практике верификации протокола сложной системы на кристалле с архитектурой «Эльбрус»

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

METHOD OF CONSTRUCTING ABSTRACT MODELS FOR PROTOCOL VERIFICATION OF CACHE COHERENCE IN SCALABLE SYSTEMS

The article presents a novel approach to solving the verification problem for cache coherence in scalable microprocessor systems. The article examines a mathematical model of cache coherence protocols. The model uses program graphs as an abstraction for groups of devices operating in accordance with a given cache coherence protocol. The whole protocol is represented as a channel system that can be unfolded into a transition system to be explored by model checking algorithms. The paper proposes an approach to the construction of Promela models of cache coherence protocols and defines the limitations on models. The article presents a method for constructing abstract models of cache coherence protocols that produces models of significantly smaller size and there-fore subjected to model checking. The method is based on program graphs transformations, or, equivalently, on syntactical transformations of Promela models. The paper contains a mathematical proof of invariance preservation by the abstract models. All the results are based on verification practice of a complex industrial Elbrus system-on-a-chip

Текст научной работы на тему «Метод построения абстрактных моделей, используемых для верификации протоколов когерентности кэш-памяти масштабируемых систем»

УДК 004.052.42

DOI: 10.18698/0236-3933-2017-1-49-66

МЕТОД ПОСТРОЕНИЯ АБСТРАКТНЫХ МОДЕЛЕЙ, ИСПОЛЬЗУЕМЫХ ДЛЯ ВЕРИФИКАЦИИ ПРОТОКОЛОВ КОГЕРЕНТНОСТИ КЭШ-ПАМЯТИ МАСШТАБИРУЕМЫХ СИСТЕМ

B.С. Буренков

C.Р. Иванов

[email protected] [email protected]

МГТУ им. Н.Э. Баумана, Москва, Российская Федерация

Аннотация

Изложен новый подход к решению задачи верификации протоколов когерентности кэш-памяти масштабируемых микропроцессорных систем. Рассмотрена математическая модель протоколов когерентности. Модель представляет собой отдельные группы устройств, работающих в соответствии с протоколом, в виде графов программ, а протокол в целом — в виде канальной системы, из которой может быть получена и исследована методом Model checking система переходов. Предложен подход к описанию моделей протоколов когерентности на языке Promela и сформулированы ограничения на модели. Представлен метод построения абстрактных моделей, позволяющий существенно уменьшить их размер и базирующийся на преобразованиях отдельных графов программ исходной модели, или на синтаксических преобразованиях Promela-процессов. Приведено математическое доказательство сохранения преобразованиями свойств-инвариантов. Результаты основаны на практике верификации протокола сложной системы на кристалле с архитектурой «Эльбрус»

Ключевые слова

Формальный метод, проверка моделей, преобразование моделей, протокол когерентности кэш-памяти

Поступила в редакцию 19.04.2016 © МГТУ им. Н.Э. Баумана, 2017

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

Не существует единого подхода к решению проблемы, способного адаптироваться к увеличению числа ядер в современных микропроцессорах. В настоящей работе развиваются приведенные в статье [1] направления по разработке формальных методов верификации протоколов когерентности кэш-памяти масштабируемых систем. В основе предлагаемого метода лежит метод, основанный на синтаксической абстракции и способный к масштабированию [2-4]. Однако приведенное описание недостаточно полное, и отсутствует определение ограничений на модели протоколов, что делает невозможным непосредственное применение метода.

Решаемую в этой работе задачу можно сформулировать следующим образом. Дано неформальное описание протокола когерентности наподобие MOSI [5], обеспечивающего согласованность данных в n блоках кэш-памяти, каждый из которых принадлежит отдельному процессорному ядру. Сформулирована спецификация протокола когерентности в виде множества свойств-инвариантов, запрещающих определенные комбинации состояний кэш-строки в кэшах системы. Необходимо разработать метод, проверяющий соответствие протокола данному множеству свойств при любом числе n е N кэшей.

Синтез математической модели для представления протоколов когерентности. Проведем синтез математической модели.

Модель протоколов когерентности. Язык описания моделей Promela предлагает абстракции, представляющие группы устройств, работающих в соответствии с протоколом когерентности (процессы, являющиеся конечными автоматами), и их асинхронное взаимодействие (каналы, являющиеся FIFO-очередями). В связи с этим математическая модель протоколов когерентности, используемая в настоящей работе, основана на формальной семантике Promela-моделей и базируется на модели, применяемой в работе [6].

Модель состоит из нескольких уровней. Promela-процессам соответствуют графы программ. Асинхронная композиция графов программ описывается канальной системой. Путем «развертывания» канальной системы получается система переходов — стандартная модель аппаратных и программных систем.

Система переходов. Системой переходов TS называется шестерка TS = ( S, Act, —, I, AP, L), где S — множество состояний; Act — множество действий; —с S х Act xS — отношение переходов; I с S — множество начальных состояний; AP — множество атомарных высказываний; L: S — 2AP — функция

пометок. Для краткости под обозначением 5 --— s' будем понимать (s, a, s')e—. Если осуществляемое действие в таком контексте неважно, запишем s — s'.

Граф программы. Поведение процессов описывается с помощью операторов языка Promela. Множество всех переменных модели будем обозначать через Var, множество каналов модели — Chan.

Обозначим через dom (x ) тип переменной x, а через dom (c ) — тип переменных, которые могут быть переданы через канал c. Емкость канала c — максимальное число сообщений, которое он способен хранить, — обозначим через cap (c).

Интерпретацией ^ переменных называется отображение, ставящее в соответствие каждой переменной v eVar значение "q( v )е dom ( v ). Через v := r ] обозначим интерпретацию переменных, присваивающую значение r переменной v и оставляющую все остальные переменные неизменными. Обозначим через Eval (Var) множество интерпретаций переменных.

Интерпретация каналов — отображение, ставящее в соответствие каждому каналу c е Chan последовательность E,(c)е dom (c) такую, что len (£,(c))< < cap(c), где len (•) — длина последовательности; * — звезда Клини. Запись

интерпретации вида c) = v1v2 ...vk, где cap(c)> k, показывает, что элемент v1 находится в голове очереди c, элемент v2 — следующий элемент и т. д., элемент vk находится в хвосте очереди. Обозначим через Е [c := v1... vk ] интерпретацию каналов, присваивающую последовательность v1 ..vk каналу с и оставляющую все остальные каналы неизменными. Интерпретация Ео отображает канал в пустую последовательность в, т. е. Vc е Chan : Е,0 (c) = s, len(s) = 0. Обозначим через Eval ( Chan ) множество всех интерпретаций каналов.

Обозначим через Cond (Var) множество логических выражений относительно переменных v eVar [6], а через Cond (Var,Chan) — множество логических выражений относительно переменных v е Var и каналов c е Chan. Выражения относительно каналов строятся из вызовов функций empty(), nempty(), full(), nfull() [7] и их объединения с помощью операторов языка Promela.

Формальная семантика оператора языка Promela с переменными из множества Var и каналами из множества Chan представляется графом программы над (Var,Chan) — ориентированным графом, ребра которого помечены условиями над элементами (v, c )е Var х Chan и действиями. Вершины графа программы носят управляющую функцию: они показывают возможные переходы.

Множество действий будем рассматривать как объединение Act U Comm, элементы которого определяются только шестью базовыми операторами языка Promela: 1) присваивание; 2) оператор assert; 3) оператор print; 4) выражение; 5) отправка сообщения в канал; 6) извлечение сообщения из канала. Действия, выраженные первыми четырьмя операторами, составляют множество Act. Действия, выраженные последними двумя операторами, являются коммуникационными действиями:

Comm = {c! v,c ? x |c e Chan,v e dom (c), x e Var,dom (x) з dom (c)}.

Графом программы (programgraph) PG над (Var,Chan) называется шестерка PG = (Loc, Act,Effect,Loc0,g0),

где Loc — множество состояний (вершин) графа; Effect: Act х Eval (Var ^ Eval (Var) — функция, определяющая результат действий; ^е Loc х х Cond (Var ,Chan )х( Act U Comm )х Loc — отношение переходов; Loc0 с Loc — множество начальных состояний; g0 е Cond (Var, Chan) — начальное условие.

g :act

Переход (l, g, act, l')е^ будем сокращенно обозначать l ^ Г. Логическое

g:act

условие g называется защитой перехода l ^ l'. Действие act может быть осуществлено только в том случае, если защита g истинна, а действие выполнимо.

Далее будем подразумевать соответствие графов программы Promela-процессам.

Канальная система. Такая система CS над (Var,Chan) состоит из графов программы PGi над (Vari,Chan), где 1 < i < n и Var = J<nVari. Обозначение CS = [PG1|...|PGn ].

В языке Promela возможны два типа взаимодействия между процессами с помощью каналов: 1) синхронная передача сообщения через канал нулевой емкости; 2) асинхронная передача сообщения через канал ненулевой емкости. При разработке моделей протоколов когерентности нет необходимости использовать синхронную передачу сообщений, поэтому далее такой тип взаимодействия рассматриваться не будет.

Семантика канальной системы формализуется посредством системы переходов. Пусть CS = [PG11...| PGn ] — канальная система над (Var,Chan). Состояния соответствующей системы переходов TS (CS) являются кортежами вида (l1,..., ln, л, , где li — состояние графа PGi, "е Eval (Var ) — текущая интерпретация переменных; ^е Eval (Chan) — интерпретация каналов.

Пусть CS = [PG11 PGn ] — канальная система над (Var,Chan), и PGi = (Loci, Acti, Effecti, ^i, Loc0J, g0J ), 1 < i < n.

Системой переходов TS (CS), соответствующей данной канальной системе, называется шестерка TS (CS) = (S,Act,—,I, AP, L), где

S = (Loc1 x ...x Locn )x Eval (Var)x Eval(Chan);

Act = J0<j<nActi J {t}, x — специальный символ, представляющий все коммуникационные действия, при которых происходит обмен данными; переход — определяется правилами, представленными ниже:

I = {l1,...,ln,£,о |V0 < i < n : (li е Loc0d л(л,) |= go,i ); AP = J0<j<nLoci J Cond (Var,Chan);

L ((,... , l„,£)) = {l1,..., l„} J {g е Cond (Var, Chan)|(л, £,)|= g}.

Отметим, что в зависимости от интересующих свойств, в качестве пометок может быть использовано любое подмножество указанного множества AP.

Перечислим правила, определяющие отношение переходов — системы TS(CS).

1. Интерливинг для a е Acti:

g:a

li ^ g_,

<l1, ..., l¡,.. . , ln ,

где q' = Effect (a, q).

2. Асинхронная передача сообщения для c е Chan,cap (c) > 0.

2.1. Получение значения по каналу c и присваивание его переменной x:

g:c ?x

li ^ l' л (r|,Е)|= gл len(E,(c)) = k > 0 л E(c) = v1 ... vk

y

{l1, . . . , li, . . . , ln , r, E>^<l1, .••, l',ln, r', Е ')

где r' = r[x := v1 ] и Е/ = E[c := v2 . vk ].

2.2. Отправка значения v е dom (c) по каналу c:

g:c! V

li ^ l' л (r,Е)|= gл len(E(c)) = k<cap(c)л E(c) = v1 .vk

>

{l1, . . . , li, . . . , ln, r,E)^(l1,l'',.••, ln,r,Е ')

где Е' = E[c := v1v2 ...vkv].

Разработка моделей протоколов когерентности на языке Promela и определение ограничений для них. Вопрос построения формальных моделей протоколов когерентности изучен в литературе недостаточно. Здесь использована математическая модель протоколов когерентности в виде канальной системы, и на основе практики верификации системы «Эльбрус-4С» определена структура отдельных графов программ и изложены ограничения на используемые операторы, выполнение которых необходимо для работы предлагаемого метода.

Рассмотрены протоколы когерентности, в которых исполнение запросов происходит под управлением координатора. В микропроцессорах с архитектурой «Эльбрус» координатором является системный коммутатор процессора, к памяти которого происходит обращение (home-процессора).

В качестве математической модели протокола когерентности будем использовать канальную систему CS = [PG0 | PG11 PGn ], где PG0 — граф программы, соответствующий системному коммутатору home-процессора; PG1,..., PGn — идентичные графы программы, соответствующие контроллерам кэш-строки, находящимся в кэшах верифицируемой системы. Каждый граф программы определен над парой (Var¡,Chani) так, что множества Var и Chani могут пересекаться. При этом Var = U 0 <, < nVar¡, Chan = U 0 < ¡ < nChani.

Среди переменных из Var выделим множество подмножеств {Vstate¡ с Var |i = 0,...,n} переменных, описывающих состояние процессов PGj,0< i < n. При этом P|0<.<nVstate¡ = 0. Примерами переменных, входящих в

это подмножество, являются локальные переменные процесса PGi; переменная, хранящая состояние кэш-строки в таком кэш-контроллере; переменная, хранящая признак получения ответа на снуп-запрос от процесса PGi.

Определим ограничения на структуру графов PGi, 0 < i < n.

Протоколы когерентности обладают свойством, согласно которому в один момент времени в системе может исполняться только один исходный запрос. В работе системного коммутатора home-процессора можно выделить последовательность этапов, например, получение исходного запроса и его анализ, рассылка когерентных и других служебных запросов по результатам анализа, сбор коге-

(2)

(3)

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

Защищенные команды, которыми помечены ребра графа PG0, строятся так, что их защиты могут являться:

- логическими утверждениями относительно переменных v е Var \ |J 0 <. < n х

xVstatei, причем значение этих переменных получается либо непосредственно путем исполнения операции извлечения из канала, либо в ходе анализа извлеченного со-общения;

- логическими утверждениями относительно переменных v eVstatei, 1 < i < n, значение которых устанавливается в процессе анализа принятых графом сообщений.

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

Защита команды графа PGi, 1 < i < n, может быть логическим утверждением e е Cond (Var¡, Chani). Предполагается использование логических утверждений относительно каналов для возможности неблокирующего опроса состояния каналов. Например, если действие команды включает в себя получение сообщения по каналу c, и это действие не должно быть заблокировано, то в защиту с помощью конъюнкции добавляется условие nempty (c). Также любая защита может являться тавтологией.

Оператор извлечения сообщения из канала с в графе PG. ,0 < i < n, имеет вид c ? x, где x eVar \ J .ф1Vstate¡.

Множество каналов модели представлено тремя подмножествами.

1. Множество каналов C1 емкостью n, в которые могут отправлять сообщения графы PGi ,1 < i < n. Извлекать сообщения может только один процесс PGi ,0 < i < n, на определенном этапе выполнения запроса. Примеры таких каналов: канал, посредством которого процессы, представляющие кэш-контроллеры, передают исходные запросы процессу, представляющему системный коммутатор home-процессора; канал, по которому некоторому процессу передаются когерентные ответы.

2. Множество каналов C2 = |c2,i,..., c2,n} емкостью m е N, таких, что из канала c2,i, 1 < i < n, может извлекать сообщения только PGi, а отправлять сообщения по этому каналу может только PG0. Примером канала из этого множества является канал, по которому процесс, представляющий системный коммутатор home-процессора, передает когерентный запрос процессу, представляющему кэш-контроллер.

3. Множество каналов C3, по которым может отправлять сообщения только один процесс в специфицированное «время» в ходе выполнения запроса. Для каналов этого множества характерно соответствие каждому оператору приема сообщения ровно одного оператора отправки сообщения. Примером канала из этого множества является канал, по которому процесс-запросчик передает подтверждение о завершении операции процессу-координатору.

Сообщения, передаваемые по каналам, являются парами m = (opc,id), где

opc еN не является номером процесса; idе{0,...,n} — номер процесса (например, идентификатор отправителя сообщения). Для обращения к первому и второму элементам пары m запишем m.opc и m.id.

Синтез совокупности преобразований, приводящих к получению абстрактной модели. Проведем синтез совокупности преобразований.

Абстрактная модель протоколов когерентности. Проверяемые свойства протокола затрагивают не более двух кэшей. Поскольку все кэш-контроллеры идентичны и взаимозаменяемы, не имеет значения, какие именно два индекса графов PG1,...,PGn рассматривать. Поэтому без потери общности будем полагать, что рассматриваются графы PG1; PG2, и все проверяемые свойства сформулированы только относительно части системы, определяемой этими графами.

В отсутствие свойств относительно графов PG3,..., PGn, с позиции графов PG0,PG1;PG2 конкретное значение индекса графов PG3,...,PGn неважно. Поэтому можем выполнить следующее консервативное преобразование системы CS.

Предполагается, что в исходной системе среди переменных v eVstatei, 0 < i < n, хранящих информацию о других процессах, могут быть только переменные, хранящие номер процесса, т. е. переменные, областью определения которых является множество {0,..., n}. В случае, когда полностью рассматривается только состояние процессов PGi ,0 < i < 2, важно сохранять точные значения лишь тогда, когда это значение принадлежит множеству {0,1,2}; все остальные значения неразличимы и их можно представить некоторым абстрактным значением, не находящимся в этом множестве. В связи с этим применим абстракцию типов данных. Множества значений переменных v е Var и каналов c е Chan таких, что dom (v) = {0,...,n} и dom (c.id) = {0,...,n}, заменяются domabs (v) = {0,1,2, ABS} и domabs (c.id) = {0,1,2, ABS}, где ABS > 2 — некоторая константа. Для всех остальных случаев domabs (v) = dom (v), domabs (c) = dom(c). Далее под исходной системой будем понимать преобразованную таким способом систему CS.

В соответствии с предлагаемым методом после проведения абстракции типов данных осуществляется замена исходной модели CS = [PG0 | PG1 |...| PGn] моделью CSabs = [PG0|PGi|PG2 |PG3], в которой изначально графы PGi,0 < i < 3, являются графами PGi ,0 < i < 3, исходной системы CS.

Пометим множество состояний системы переходов TSabs = TS (CSabs) и исходной системы так, чтобы пометка полностью отражала состояние графов PGi, 0 < i < 2, исходной системы TS (CS), а также состояние графов PGi, i > 2, непосредственно используемое при модификации состояния графов PGi, 0 < i < 2.

Сделаем пояснения. В графах программ PGi, 2 < i < n, могут быть переменные v е U2<i<nVstatei, которые непосредственно участвуют в изменении значений переменных из |J 0 < i < 2 Vstatei. Обозначим множество таких переменных через Voc, Vioc Е J2<i<nVstatei. Значения таких переменных модифицируются операциями извлечения сообщения из канала c е Q, например,

// messageе J2<.<nVstatei

coh_answers_chan ? message;

// ack_list[message.id]е J0<i<2Vstatei , если message.id = 1,2

ack_list[message.id] = false;

В ходе исполнения исходного запроса релевантны значения таких переменных только одного процесса. Введем такое множество переменных Vioca, что его элементы всегда находятся во взаимно-однозначном соответствии с рассмотренными локальными переменными того из процессов, который проводит модификацию переменных из J0<i<2 Vstatei : Vloca ^ Vstatei для некоторого 2 < i < n.

Следовательно, в качестве пометок состояний абстрактной ( TSabs) и исходной (TS ) систем будем использовать множество AP = Cond (VAP ), где VAP = = J0<i< Vstate¡ J Vhca.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Последующая модификация графов программ PGi, 0 < i < 3, осуществляется путем синтаксических преобразований, описанных ниже.

Абстрактные преобразования элементов множеств Acti. Множество выражений ограничим множеством Cond (Var, Chan). Преобразования присваиваний приведены ниже (символ 0 означает отсутствие действия).

1. Оператор в исходной модели v = val(v е Var,val е dom (v)).

2. Оператор в абстрактной модели v = val, если v е J = Vstatei; 0, если

v е J 2 < i < nVstatei.

Других операторов присваивания нет.

Преобразование выражений (v, c) еCond(V, C) осуществляется следующим образом. Если V = J Vstatei J Vloc, то v остается неизменным, иначе v заме-

няется истиной. Если C = Cl и {с2,1, C2,2 }и Cз, то с остается неизменным, иначе с заменяется истиной.

Абстрактные преобразования элементов множеств Сотт1. Преобразования коммуникационных действий можно проводить различными способами. Так, можно удалять только те операторы извлечения сообщений и соответствующие им операторы отправки сообщений, которые не изменяют элементов множества VAP. Однако для возможности проведения верификации на практике необходимо ограничивать емкость каналов и их число небольшими значениями (3-4), что приводит к удалению некоторых операторов, изменяющих состояние переменных из множества VAP.

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

Преобразование коммуникационных действий

Оператор в исходной модели Оператор в абстрактной модели

c!v(v е dom (c)) Для c е C1 c!v, если оператор находится в графах PG1, PG2; 0, если оператор находится в графе PG3

c?x(x е Var,dom(x) з dom(c)) Недетерминированный выбор

c!v(v е dom (c)) Для c е C2 c!v, если c = c2,1 или c = c2,2; 0, если c е C2 \ {cy,c2,2}

c?x(x е Var,dom(x) з dom(c)) c? x, если c = c2,1 или c = c2,2; 0, если c е C2 \ {c2,1,c2,2}

c!v(v е dom (c)) Для c е C3 c!v

c?x(x е Var,dom(x) з dom(c)) c?x

Рассмотрим замену недетерминированным выбором. Если оператор atomic {guard_abs -> c?x;} находится в PG0, то он заменяется оператором недетерминированного выбора if

:: atomic { guard_abs -> c?x; } :: atomic { m.opc = opci; m.id = ABS; }

:: atomic { m.opc = opck; m.id = ABS; } fi;

так, что множество {opci,...,opck domabs (m.opc) содержит все возможные значения, которые в исходной модели могли быть отправлены с помощью соответствующих операторов отправки сообщения, находящихся в PG3,...,PGn. Здесь guard _ abs получается согласно преобразованиям выражений.

Если оператор находится внутри действия защищенной команды do-цикла, то в цикл добавляется множество защищенных команд, защита которых получается из защиты исходной команды заменой истиной всех условий относительно канала c, а действия формируются присваиваниями m.opc = opci; mid = ABS, 1 < i < k.

Математическое доказательство корректности процедуры абстракции. Проверка выполнимости свойств-инвариантов для данной системы переходов TS эквивалентна проверке выполнения свойства p в каждом состоянии, достижимом из некоторого начального состояния системы TS. Покажем, что множество достижимых состояний системы TSabs = (Sabs,Actabs, ^abs, Iabs, AP, Labs) включает в себя множество достижимых состояний системы TS = ( S, Act , I, AP, L ).

Теорема. Пусть p — некоторая формула пропозициональной логики, составленная относительно атомарных высказываний из множества AP. Для всех состояний s е S, таких, что s достижимо из некоторого начального состояния s0 е I и s |= p, существует состояние f (s)е Sabs, достижимое из некоторого начального состояния f (s0 )е Iabs, такое, что f (s) |= p.

◄ Обозначим множество состояний системы переходов TS, достижимых из некоторого начального состояния, через Reach (TS). Докажем утверждение теоремы методом математической индукции по длине пути исходной системы TS [6].

Базис индукции. Длина пути m = 0. По построению абстракции каждому состоянию s е I соответствует состояние f (s)е Iabs, такое, что Labs (f (s)) = L (s).

Индуктивная гипотеза. Пусть для некоторого m > 0 верно Vk < m : f (sk )е Reach (TSabs). Это означает, что фрагменту пути s0s1 ...sm системы TS соответствует фрагмент пути f (s0) f (s1)... f (sm) системы TSabs, причем f (si) и f (si+1), 0 < i < m, не обязательно различны. Кроме того, Labs ( f (sm )) = L (sm ) , m > 0.

Шаг индукции. Рассмотрим переход sm ^ sm+1 исходной системы. Состояние sm+1 исходной системы TS является следствием наличия в системе перехода из состояния sm, описываемого одним из правил (1)-(3). Рассмотрим все возможные правила и проверим наличие соответствующих правил в абстрактной системе.

Случай 1. Интерливинг для ае Acti, 0 < i < n. Элемент множества правил

исходной системы Rulesiconcrete = {ric |0 < i < n} имеет вид

g:а

riCt =_l' ^ l' Л (п, ^ = g_,

sm =(l0,. • •, li,. • •, ln, п, ^ sm+1 = (l0,. • •, li ,. • •, ln,п ,

где п' = Effect (а, п).

Элемент множества правил абстрактной системы Rulesiabstract = {riai | 0 < i < 3} имеет вид

gabs :aabs

li ^ l'j Л ("abs,%abs )| = gabs

nai =-----,

aabs f f

f (sm ) = <l0 , • • •, li, • • •, l3, "abs, %abs } ^ f (sm+l ) = (l0 , • • •, , • • •, l3, "abs, %abs }

где ""bs = Effect (aabs, "Tabs ).

Рассмотрим функцию Transi : Rulesiconcrete ^ Rulesiabstract. Абстрактные преобразования построены так, что Transi ( ric, ) = riat, i = 0, l, 2, Transi (ricj ) = ria3,i > 2 л L (sm+1) ф L(sm ), Transi (ricj ) = 0,i > 2 л L (sm+1) = L(sm ).

Покажем, что если посылка правила системы CS выполнима, то посылка соответствующего правила системы CSabs также выполнима.

В исходной системе имеем условие (r, %) = g, причем согласно ограничениям на модель в g не входят логические утверждения относительно каналов. В соответствии с индуктивной гипотезой в состоянии f ( sm ) выполняется

Vv е Vap : Tabs ( V ) = r( v )e domabs ( v ). (4)

В то же время, защиту g можно представить в виде конъюнкции g = A1 л A2, где A1 е Cond (VAP, C), A2 g Cond (VAP, C). В соответствии с абстрактными преобразованиями gabs = A1 л true , т. е. часть A2 g Cond (VAP, C ) заменена истиной. Таким образом, защита gabs является логическим следствием защиты g. С учетом вида g, gabs и соотношения (4) следует, что ((", %) |= g) ^ (("abs, %abs) |= gabs).

Действие a может быть присваиванием или выражением. Если a — присваивание, то в соответствии с абстрактными преобразованиями получим:

- aabs =a, если L(sm+1) Ф L(sm), т. е. имеем соответствующий переход

aabs

f (sm f (sm+1 ) в абстрактной системе, вследствие чего Labs ( f (sm+1 )) =

= L (sm+1 ).

- aabs =0, если L(sm+1) = L(sm ), т. е. в абстрактной системе два состояния исходной системы sm+1 и sm с одинаковыми пометками объединяются в одно. Заключаем, что в TSabs достижимо состояние f ( sm+1 ) = f ( sm ).

Если a — выражение, то применение соответствующего правила не изменяет пометку состояния (что имеет место и в исходной системе), а дает переход в системе TSabs с более слабым условием, поскольку a^ aabs, аналогично защитам g и gabs.

Случай 2. Получение значения по каналу c е Chan,cap (c)> 0 и присваивание его переменной х.

Случай 2.1: c eC1. Элемент множества правил исходной системы Rulesrconcrete1 = {rrci |0 < i < n} имеет вид

g:c ? X

_ li ^ l'A (r,£)| = g л len(^(c)) = k > 0 л %(c) = vi...vk

П"Сг' _ , (5)

<lo,..., lt, ..., ln, r, S)—<k, li',..., ln, Г, S ') где r'_r[ x :_ vi ] и £'_£[c:_ v2 ... vk ].

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

50а151а2 ...amsm системы переходов TS. В таком случае переход sm sm+1 получен вследствие применения правила rrci е Rulesrconcrete1. В моделях либо i _ 0 (сообщение извлекает процесс, представляющий системный коммутатор home-процессора), либо i > 0 (сообщение извлекает процесс-запросчик с номером i). Факт применения правила означает, что условие len (£,( c))_ k > 0 выполнено. В свою очередь, это позволяет записать c )_ v1... vk .Следовательно, из а1,..., am находится k членов, каждый из которых имеет вид ai _ т. Таким образом, после осуществления

перехода sm sm+1, переменная х будет принимать одно из значений из множества X, всех ранее отправленных по каналу значений, причем v1 ...vk является перестановкой этого множества.

Указанному множеству правил Rulesrconcrete1 в абстрактной модели соответствует множество правил Rulesrabstract1 _{rrai, raait j | 0 < i < 3, 1 < j < S1 }, где S1 < \domabs (c)| — число различных отправляемых значений в операторах отправки сообщения, соответствующих операторам приема сообщения из c eC1. Выбор правила из этого множества недетерминирован, т. е. Transr1: Rulesrconcrete1 — Rulesrabstract1 — мультиотображение. Первый тип элементов этого множества имеет вид

gabs :c ? х

li ^ l' Л (labs,£,abs )| _ gabs Л len(t,abs(c)) _ l > 0 Л t,abs(c) _ v1..v

rrai _-----,

<l0, li, l3, labs, ^¡abs )—li, l3, lbs, ^ 'abs )

где r'abs _ labs [ х :_ v1 ] и ^abs _ ^abs [c:_ v2 ... vi ] .Здесь l может принимать значения 1, 2.

Согласно абстрактным преобразованиям,

Transr1 (rrci) _ rrai, 0 < i < 2, Transr1 (rrci) _ rra3,2 < i < n.

Определим, какие значения при этом может принимать переменная х в абстрактной модели в состоянии f (sm+1). Рассмотрим фрагмент вычисления f(s0)A(a1)f(s1)A(a2)...A(am)f(sm) системы переходов TSabs. Здесь A: Act U {т} — Actabs U {т}. Условие len (£,abs (c ))_ l > 0 может быть выполнено только, если из A(a1),...,A(am) было l членов, каждый из которых порожден

действием с! V и имеет вид А (а,) = т, для некоторого 1 < I < т. Рассмотрим, как А (а,) связан с а,. Для случая отправки сообщения по каналу с е С множество правил исходной системы Ки1е$$сопстае1 = {т$с, |1 < I < п}, где

g:с! V

= I, ^ I' л (г|,%)| = g л /еп(^(с)) = к < сар(с) л ^(с) = vl...vk (

т$с1 = т , (6)

</с , • • •, Ь, • • •, 1п,

где £ ' = ^[с := VIV2 • .. VkV].

Множество правил абстрактной системы Ки!е$$аыша1 = {тза^ |1 < I < 2}, где

gabs !v

l

rsa; =

li ^ l,' A((abs,^abs))= gabs А len(bs(c)) = l < caPabs(c) A^abs(c) = V1...V

(l0> - • •, li, —, l3, "Habs , ^abs (l0> - • •, li ,• • •, l3> "Habs > ^ abs )

где ^abs =^abs [c := ViV2 — V/V ], CUpabs (С ) = 2.

В соответствии с преобразованиями абстракции отображение Transs1: Rulessconcrete1 ^ Rulessabstract1 определено так, что Transs1 (rsci) = rsat,

1 = 1,2, Transs1 (rsci ) = 0, i >2. Следовательно, А (т) = т, если соответствующая метка порождена действиями c! V процессов PG1, PG2, и А (т) = 0 в противном случае. Таким образом, переменная х может принимать только те значения из множества X, которые были отправлены процессами PG1 и PG2.

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

gabs:x.opc:=V, х .id:=ABS li ^ li А( (abs, ^abs ) 1 = gabs

raait j =-----.

x.opc:=V,x.id:=ABS / /

(l0, — , li, — , l3, (abs, ^abs ) ^ (l0, — , li , — , l3, (abs, ^abs )

Здесь (abs =(abs [x := v]; V принимает все возможные значения из domabs (x.opc), которые в исходной системе могут быть отправлены по каналу c процессами PGr ,2 < r < n.

Мультиотображение Transr1 определено следующим образом, как следует из абстрактных преобразований. Пусть 0 < i < n; t = i, если 0 < i < 2, t = 3, если

2 < i < n. Тогда Transr1 (rrci ) = rrat, если значение V1 было записано графом PG1 или графом PG2; Transr1 (rrct) = |raat,j |1 < j < S1}, если значение V1 не было записано ни PG1, ни PG2.

Покажем, что, если посылка правила системы CS выполнима, то посылка соответствующего правила системы CSabs также выполнима.

Случай а. Правило исходной системы — rrci е Rulesrconcrete1. Правило абстрактной системы — rrat, где t = i, если 0 < i < 2, t = 3, если 2 < i < n.

Защита g имеет вид g = A1 л A2, где A1 е Cond (VAP, C1 ); A2 € Cond (VAP, Ci). В Ai может входить условие nempty(с). В A2 не входят условия относительно каналов. В соответствии с Transsi, если vi в исходной системе было отправлено процессом PGi или PG2, то это же справедливо и в абстрактной системе. В таком случае условие nempty (с) выполняется. Доказательство выполнимости условий относительно переменных аналогично случаю 1.

Случай б. Правило исходной системы rrci, правила абстрактной системы raat,j, 1 < j < S1. Доказательство выполнимости посылки правила абстрактной системы такое же, как и в случае 1.

Следовательно, в абстрактной системе из состояния f (sm) существует множество переходов, в которых всегда найдется переход f (sm f (sm+1), соответствующий переходу sm ^ sm+1, такой, что Labs ( f (sm+1 )) = L (sm+1).

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Случай 2.2: с eC2. Элемент множества правил исходной системы Rulesrconcrete2 = {rrCi |1 < i < n} имеет вид (5), элемент множества правил абстрактной системы Rulesrabstract2 = {rrai |1 < i < 2} — вид

rrai =

gabs:C2,i ? x

li ^ l'i Л (abs, \abs )| = gabs Л len(^abs (C2,i)) = k > 0 Л \abs (c2,i ) = Vb..Vk

(l0, —, li, — , l3, nabs, ^abs ) ^(l0, —, li, —, l3, п abs, ^ abs )

где nabs = nabs [x := V1 ] и E^bs =\abs [c2,i := V2 — Vk ].

Из выполнимости условия len (£,(c)) = k > 0 в посылке правила rrci е Rulesrconcrete2, следует выполнимость len (£,abs (c2i )) = k > 0 в посылке правила rrai е Rulesrabstract2. Покажем это рассмотрением фрагмента вычисления s0a1s1a2 —amsm системы TS и соответствующего фрагмента вычисления f(s0)A(a1)f(s1)A(a2) — A(am)f(sm) системы TSabs. Для случая отправки сообщения по каналу c еС2 множество правил исходной системы Rulessconcrete2 = = {rsc0}, c е С2 = {c2,1,...,c2,n}:

g :c! v

_la ^ l0 Л (n,£)| = g Л len(£(c)) = k < cap(c) л £(c) = V1..V rsc0 =-,

(l0, — , li, — , ln, n, Kl0, — , li, — , ln, n, S ')

где \' = £[c := V1V2 — VkV].

Множество правил абстрактной системы Rulessabstract2 = {rsc0}, c е {c2,1, c2,2}:

gabs :c! V

= la ^ l0 Л (n|abs, ^abs )| = gabs Л len(^abs(c)) = k < cap(c) Л £,abs(c) = V1...Vk rsUQ =-,

(l0, — , li, — , l3, nabs, ^abs )^(l0, — , li, — , l3, nabs, ^abs )

где £ abs =^abs [c := V1V2 — VkV ].

Отображение Transs2: Rulessconcrete2 ^ Rulessabstract2 определено следующим образом: Transs2 (rsc0) = rsa0,c e {с2Д,c2,2}, Transs2 (rsc0) = 0,c e C2 \{с2д,c2,2}. Таким образом, A (ai ) = a,', если a; =x и порождено действием c2,1!v или ai = x и порождено действием c2,2! v, A (a,) = 0 в противном случае.

В соответствии с абстрактными преобразованиями, отображение Transr : Rulesrconcrete2 ^ Rulesrabstract2 такое, что, во-первых, Transr2 (rrc, ) = rra,i, i = 1, 2. Выполнимость посылок правил абстрактной системы при выполнимости посылок соответствующих правил исходной системы показывается аналогично, как и в случае 2.1. Во-вторых, Transr2 (rrc,) = 0, i >2. Для случая i > 2 правило в исходной системе описывает переход между двумя состояниями с одинаковыми пометками (переменная х является локальной переменной графа PGi системы CS : x eVstatei), которые в абстрактной системе объединяются в одно. Это означает, что значение переменной х в состоянии f (sm+1) является таким же, как и значение х в состоянии sm+1, в тех случаях, когда x входит в множество VAP.

Случай 2.3: c eC3. Элемент множества правил исходной системы Rulesrconcrete3 = [rrc | 0 < i < n} имеет вид (5). Элемент множества правил абстрактной системы Rulesrabstract3 = {rra; |0 < i < 3}:

gabs :c ? x

гш = li ^ l' A (riabs,^abs )| = gabs A len(^abs(c)) = k > 0 Л ¡~abs(c) = Vb..Vk

(l0, ..., li, ..., l3> rabs > ^abs )^(l0> ••• > li >••• > l3> Vt'abs > ^,'abs )

где labs = labs [x := V1 ] и %abs = ^abs [c := V2 • Vk ].

Выполнимость условия len (£,abs (c)) = k > 0 a E>abs (c) = v1 ... Vk в абстрактной модели следует из выполнимости соответствующего условия исходной модели, так как переход, помеченный оператором отправки сообщения по этому каналу от единственного отправителя, также присутствует и в абстрактной модели, и выполнение этого условия осуществимо только при возможности такого перехода. Это доказывается рассмотрением для случая отправки сообщения по каналу c eC3 функции из множества правил исходной системы во множество правил абстрактной системы (аналогично случаям 2.1 и 2.2).

Отображение Transr3: Rulesrconcrete ^ Rulesrabstract3 определено следующим образом: Transr3 (ггс, ) = rrai, i = 0,1,2, Transr3 (rrq ) = rra3, i > 2. Следовательно, переходу исходной системы, порожденному считыванием сообщения из канала c e C3, в абстрактной системе всегда соответствует переход, порожденный аналогичным считыванием, и значение переменной х в состоянии f (sm+1) является таким же, как и значение х в состоянии sm+1, в тех случаях, когда x входит в VAP.

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

перехода sm ^ sm+1, таких, что L ( sm ) ф L ( sm+1), в абстрактной системе существует переход f ( sm f ( sm+1 ) , такой, что Labs ( f ( sm+1 )) = L ( sm+1 ). ►

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

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

ЛИТЕРАТУРА

1. Буренков В.С. Анализ применимости формальных методов к верификации протоколов когерентности кэш-памяти масштабируемых систем // Вопросы радиоэлектроники. 2015. № 3. С. 105-117.

2. Chou С., MannaVa P., Park S. A simple method for parameterized verification of cache coherence protocols // Proc. Formal Methods in Computer-Aided Design. 2004. P. 382-398.

3. Talupur M., Tuttle M. Going with the flow: Parameterized verification using message flows // Proc. Formal Methods in Computer-Aided Design. 2008. P. 1-8.

4. O'Leary J., Talupur M., Tuttle M. Protocol verification using flows: An industrial experience // Proc. Formal Methods in Computer-Aided Design. 2009. P. 172-179.

5. Sorin D.J., Hill M.D., Wood D.A. A primer on memory consistency and cache coherence. San Rafael: Morgan & Claypool Publishers, 2012. 210 p.

6. Baier C., Katoen J.-P. Principles of model checking. Cambridge: MIT Press, 2008. 984 p.

7. Holzmann G. The spin model checker: Primer and reference manual. Boston: Addison-Wesley Professional, 2003. 608 p.

Буренков Владимир Сергеевич — аспирант кафедры «Компьютерные системы и сети» МГТУ им. Н.Э. Баумана (Российская Федерация, 105005, Москва, 2-я Бауманская ул., д. 5).

Иванов Сергей Ростиславович — канд. техн. наук, доцент кафедры «Компьютерные системы и сети» МГТУ им. Н.Э. Баумана (Российская Федерация, 105005, Москва, 2-я Бауманская ул., д. 5).

Просьба ссылаться на эту статью следующим образом:

Буренков В.С., Иванов С.Р. Метод построения абстрактных моделей, используемых для верификации протоколов когерентности кэш-памяти масштабируемых систем // Вестник МГТУ им. Н.Э. Баумана. Сер. Приборостроение. 2017. № 1. C. 49-66. DOI: 10.18698/0236-3933-2017-1-49-66

METHOD OF CONSTRUCTING ABSTRACT MODELS FOR PROTOCOL VERIFICATION OF CACHE COHERENCE IN SCALABLE SYSTEMS

V.S. Burenkov S.R. Ivanov

[email protected] [email protected]

Bauman Moscow State Technical University, Moscow, Russian Federation

Abstract

The article presents a novel approach to solving the verification problem for cache coherence in scalable microprocessor systems. The article examines a mathematical model of cache coherence protocols. The model uses program graphs as an abstraction for groups of devices operating in accordance with a given cache coherence protocol. The whole protocol is represented as a channel system that can be unfolded into a transition system to be explored by model checking algorithms. The paper proposes an approach to the construction of Promela models of cache coherence protocols and defines the limitations on models. The article presents a method for constructing abstract models of cache coherence protocols that produces models of significantly smaller size and therefore subjected to model checking. The method is based on program graphs transformations, or, equivalently, on syntactical transformations of Promela models. The paper contains a mathematical proof of invariance preservation by the abstract models. All the results are based on verification practice of a complex industrial Elbrus system-on-a-chip

Keywords

Formal method, model checking, model transformations, cache coherence protocol

REFERENCES

[1] Burenkov V.S. An analysis of applicability of formal methods to verification of cache coherence protocols of scalable systems. Voprosy radioelektroniki [Questions of Radio-Electronics], 2015, no. 3, pp. 105-117 (in Russ.).

[2] Chou C., Mannava P., Park S. A simple method for parameterized verification of cache coherence protocols. Proc. "Formal Methods in Computer-Aided Design", 2004, pp. 382-398.

[3] Talupur M., Tuttle M. Going with the flow: Parameterized verification using message flows. Proc. "Formal Methods in Computer-Aided Design", 2008, pp. 1-8.

[4] O'Leary J., Talupur M., Tuttle M. Protocol verification using flows: An industrial experience. Proc. "Formal Methods in Computer-Aided Design", 2009, pp. 172-179.

[5] Sorin D.J., Hill M.D., Wood D.A. A primer on memory consistency and cache coherence. San Rafael, Morgan & Claypool Publishers, 2012. 210 p.

[6] Baier C., Katoen J.-P. Principles of model checking. Cambridge, MIT Press, 2008. 984 p.

[7] Holzmann G. The spin model checker: Primer and reference manual. Boston, Addison-Wesley Professional, 2003. 608 p.

Burenkov V.S. — post-graduate student of Computer Systems, Complexes and Networks Department, Bauman Moscow State Technical University (2-ya Baumanskaya ul. 5, Moscow, 105005 Russian Federation).

Ivanov S.R. — Cand. Sci. (Eng.), Assoc. Professor of Computer Systems, Complexes and Networks Department, Bauman Moscow State Technical University (2-ya Baumanskaya ul. 5, Moscow, 105005 Russian Federation).

Please cite this article in English as:

Burenkov V.S., Ivanov S.R. Method of Constructing Abstract Models for Protocol Verification of Cache Coherence in Scalable Systems. Vestn. Mosk. Gos. Tekh. Univ. im. N.E. Baumana, Priborostr. [Herald of the Bauman Moscow State Tech. Univ., Instrum. Eng.], 2017, no. 1, pp. 49-66. DOI: 10.18698/0236-3933-2017-1-49-66

Б.В. Бондарев

Введение

в информационную безопасность автоматизированных систем

iß*

В Издательстве МГТУ им. Н.Э. Баумана вышло в свет учебное пособие автора В.В. Бондарева

«Введение в информационную безопасность автоматизированных систем»

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

По вопросам приобретения обращайтесь:

105005, Москва, 2-я Бауманская ул., д. 5, стр. 1

+7 (499) 263-60-45

[email protected]

www.baumanpress.ru

i Надоели баннеры? Вы всегда можете отключить рекламу.