<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блоги &#187; Yuriy Viktorov (Intel)</title>
	<atom:link href="http://software.intel.com/ru-ru/blogs/author/yuriy-viktorov/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/ru-ru/blogs</link>
	<description></description>
	<lastBuildDate>Thu, 24 May 2012 12:16:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Верификация простейших свойств микроархитектуры: пространство состояний</title>
		<link>http://software.intel.com/ru-ru/blogs/2012/03/01/2006934/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2012/03/01/2006934/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 06:46:49 +0000</pubDate>
		<dc:creator>Yuriy Viktorov (Intel)</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2012/03/01/2006934/</guid>
		<description><![CDATA[В прошлых записях я рассказывал о том, что такое коммуникационные фабрики, в чем заключаются проблемы связанные с их проектированием и верификацией, а также об использовании высокоуровневого моделирования как подхода к решению проблемы сложности. Однако, даже имея высокоуровневую модель микроархитектуры, абстрагированную от многих деталей реализации, для верификации простейших свойств такой модели требуются дополнительные усилия. В этой [...]]]></description>
			<content:encoded><![CDATA[<p>В прошлых записях я рассказывал о том, что такое коммуникационные фабрики, в чем заключаются проблемы связанные с их <a href="http://software.intel.com/ru-ru/blogs/2011/09/16/2005178/">проектированием</a> и <a href="http://software.intel.com/ru-ru/blogs/2011/10/25/2005532/">верификацией</a>, а также об <a href="http://software.intel.com/ru-ru/blogs/2011/11/30/xmas/">использовании высокоуровневого моделирования</a> как подхода к решению проблемы сложности. Однако, даже имея высокоуровневую модель микроархитектуры, абстрагированную от многих деталей реализации, для верификации простейших свойств такой модели требуются дополнительные усилия. </p>
<p>В этой записи я немного расскажу о том, что представляет собой процесс верификации простейших свойств с одной из точек зрения, почему его сложность высока и как с ней бороться.</p>
<p><strong>Пространство состояний</strong></p>
<p>Состояние фрагмента архитектурной модели можно описать некоторым количеством бит состояния, число которых равно числу регистров внутри данного фрагмента модели и числу входных сигнальных линий. Соответственно, как учит комбинаторика, число возможных состояний для такого фрагмента равно двум в степени количества бит состояния. Очевидно, что даже для простейшей модели это число огромно.</p>
<p>Т.к. состояние системы не статично, а меняется в процессе работы, то состояния можно представить в виде вершин ориентированного графа – графа состояний, дуги которого соответствуют возможным переходам между состояниями.</p>
<p><strong>Верификация простейшего свойства</strong></p>
<p>В качестве примера рассмотрим простейшее свойство: «определенный бит состояния всегда сохраняет нулевое значение». Для доказательства такого свойства нам необходимо убедиться, что это свойство выполняется во всех вершинах графа состояний, достижимых из начального состояния. В качестве начального состояния выбирается то состояние, в котором система находится после выполнения сброса/начальной установке.<br />
Конечно, в чистом виде состояния никто не перебирает, вместо этого используются  различные нетривиальные подходы для представления групп состояний и техники на основе решений SAT задачи. Но, в силу размерности это всё равно крайне трудоемкая задача.</p>
<p><strong>Ограничение пространства состояний</strong></p>
<p>Практически во всех системах большая часть состояний не является допустимыми. Исключение части недопустимых состояний позволяет радикально ускорить процесс верификации. Это можно сделать путем формулирования вспомогательных свойств (инвариантов), которые определяют, является ли состояние корректным. Такие свойства можно сформулировать на основе информации о структуре системы и логике её работы.<br />
Недопустимые состояния можно разделить на две категории: недопустимые по структуре и недопустимые по выполнению.</p>
<p>Приведу примеры.<br />
Предположим, в структуре передаваемых по модели пакетов есть четырехбитное поле (диапазон значений 0-15), хранящее номер передающего устройства. Но в системе присутствует только 10 передающих устройств (номера 0-9). Соответственно, все состояния содержащие пакеты, в соответствующем поле которых находится значение большее 9, не являются допустимыми по своей структуре.</p>
<p>Другой пример:<br />
Предположим, что в системе есть фрагмент, состоящий из двух параллельных очередей с емкостью 2 пакета (см. рис.). Схема устроена так, что пакеты помещаются и извлекаются из очередей только одновременно, а после сброса очереди пусты. В ходе работы системы очереди такого фрагмента всегда будут содержать равное число пакетов.<br />
Ситуация, когда количество корректных пакетов в этих двух очередях различно, является корректной, но она недостижима ни на каком из путей выполнения системы. Это недопустимое по выполнению состояние.<br />
Кроме того, такие ситуации привносят неожиданные поведения в систему. В частности, если одна из очередей целиком заполнена, а другая пуста, то такой фрагмент полностью блокирует движение пакетов через систему. Так как одна очередь полностью заполнена, то нельзя одновременно поместить по одному пакету в каждую из очередей. Аналогично, нельзя одновременно извлечь из каждой очереди по пакету.<br />
<a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Untitled3.png"><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Untitled3.png" alt="" width="413" height="185" class="aligncenter size-full wp-image-2006935" /></a><br />
Фрагмент микроархитектурной модели из двух параллельных очередей</p>
<p><strong>Верификация свойства из произвольного состояния</strong></p>
<p>При верификации простейшего свойства описанного выше можно воспользоваться не подходом поиска на графе состояний, начиная из начального состояния системы, а иным подходом. В качестве проверяемого состояния можно использовать не конкретное состояние системы, а произвольное, абстрактное, ограниченное вспомогательными инвариантами. Достоинством такого подхода является то, что нам необходимо проверить единственное состояние, что быстрее поиска перебором на графе.<br />
Недостатком же такого подхода является то, что неудача в доказательстве свойства совершенно не означает, что оно действительно нарушается. Возможно, система ограничивающих инвариантов недостаточно сильна и не отсекает часть недопустимых состояний. И одно из таких недопустимых состояний в результате приводится как контр пример к доказываемому свойству.</p>
<p>Запись получилась не очень длинная, отчасти потому, что и февраль – месяц короткий <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . В следующей записи я думаю написать о том, как можно верифицировать более нетривиальные свойства, формулируемые с помощью операторов линейной темпоральной логики, например, свойств ограничения задержки передачи данных.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2012/03/01/2006934/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Качество обслуживания: Computer Networks vs. Network on Chip</title>
		<link>http://software.intel.com/ru-ru/blogs/2012/01/31/computer-networks-vs-network-on-chip/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2012/01/31/computer-networks-vs-network-on-chip/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 13:35:49 +0000</pubDate>
		<dc:creator>Yuriy Viktorov (Intel)</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>
		<category><![CDATA[communication fabrics]]></category>
		<category><![CDATA[Computer Networks]]></category>
		<category><![CDATA[Network on Chip]]></category>
		<category><![CDATA[QoS]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2012/01/31/computer-networks-vs-network-on-chip/</guid>
		<description><![CDATA[Традиционно устройства внутри микропроцессора коммутировались с помощью общей шины. С течением времени росла степень интеграции, что сопровождалось увеличением числа блоков внутри микропроцессора. При числе блоков порядка десятков и сотен, шинная архитектура соединений становится непригодной из-за ограниченной пропускной способности и масштабируемости. Современные системы межсоединений, архитектуры которых сильно зависят от области применения, объединяют под общим названием коммуникационных [...]]]></description>
			<content:encoded><![CDATA[<p>Традиционно устройства внутри микропроцессора коммутировались с помощью общей шины. С течением времени росла степень интеграции, что сопровождалось увеличением числа блоков внутри микропроцессора. При числе блоков порядка десятков и сотен, шинная архитектура соединений становится непригодной из-за ограниченной пропускной способности и масштабируемости.<br />
Современные системы межсоединений, архитектуры которых сильно зависят от области применения, объединяют под общим названием коммуникационных фабрик (<em>communication fabrics</em>). При этом для северного кластера микросхем потребительской электроники характерна централизованная структура, являющаяся дальнейшим развитием идей общей шины в сторону конвейеризации и параллельной обработки запросов. Южный кластер традиционно имеет древовидную иерархическую структуру. Для серверов применяют распределенные архитектуры типа «сеть на кристалле» (<em>Network on Chip, NoC</em>), такие как кольца и решетки. </p>
<p>Если проводить аналогии, то сети на кристалле (<em>NoC</em>) являются прямым аналогом вычислительных (компьютерных) сетей, которые исторически возникли намного раньше. Вопросы  их проектирования, в том числе и в области качества обслуживания, достаточно подробно исследованы в литературе и отражены в технических стандартах. Для компьютерных сетей существуют методы анализа и обеспечения требований к пропускной способности, задержке и её вариации, надежности и т.д. Пришло время разобраться, в чем же отличия компьютерных сетей от сетей на кристалле, которые препятствуют использованию существующих подходов к обеспечению качества обслуживания и вынуждают разрабатывать новые.</p>
<p>Первое отличие, которое должно быть очевидно каждому, это расстояние, на которое передаются данные. Поскольку скорость распространения сигнала величина конечная, то и задержка передачи на большее расстояние превосходит задержку передачи на меньшее. Хоть задержка передачи по физической линии связи это лишь одна из составляющих общей задержки и не всегда существенная, но она есть.</p>
<p>Другое, менее очевидное отличие это то, что для буферизации трафика в сетях на кристалле используется регистровая память небольшого объема, и широко применяются сложные схемы разделения ресурсов с блокировкой каналов. Память, используемая для буферизации в компьютерных сетях, обладает большим объемом и гораздо дешевле, чем регистровая память. Так как прежде чем начать передачу пакета данных он должен быть сформирован и помещен в буферную память, то дефицит буферной памяти делает сети на кристалле более чувствительными к неравномерному характеру поступления данных и разнообразным задержкам передачи.</p>
<p>Аргумент в пользу сетей на кристалле: в глобальных сетях, поток данных может проходить через участки, построенные по различным технологиям, отличающимся способами коммутации, разделения среды, маршрутизации и т.д. Например, при звонке с IP-телефона на сотовый телефон, голосовой трафик может сначала проходить через локальную сеть с коммутацией пакетов, затем через сеть ATM с коммутацией соединений и, наконец, через мобильную сеть построенную по третьей технологии (например, UMTS). Чтобы обеспечить выполнение требований качества обслуживания на всем пути от источника к получателю, необходимо учитывать отличия механизмов качества обслуживания в этих типах сетей. Для сетей на кристалле архитектура заранее  известна и проблемы связанные с передачей данных между разными типами сетей не актуальны.</p>
<p>Число агентов подключенных к сети на кристалле и их поведение в процессе эксплуатации остается неизменным, в то время как для компьютерных сетей оно может меняться. Это приводит к тому, что в компьютерных сетях гораздо выше «запас прочности». В частности линии связи большую часть времени функционируют не на пределе своей пропускной способности, а между двумя узлами может существовать несколько маршрутов. Последнее позволяет использовать для передачи критичных к параметрам качества обслуживания данных другой маршрут, нежели для остальных данных. В сетях на кристалле, как правило, маршрутизация носит детерминированный характер, а линии связи работают под нагрузкой близкой к предельной.<br />
Можно приводить еще множество отличий, например, что компьютерные сети в случае выхода линии связи из строя могут провести реконфигурацию и продолжить работу, а для сетей на кристалле выход линии связи из строя, как правило, фатален. Но какое же отличие является главным?</p>
<p>Принципиальным отличием компьютерных сетей от сетей на кристалле является масштаб времени. Для компьютерных сетей время обработки пакетов измеряется микросекундами или миллисекундами, тогда как для сетей на кристалле время обработки и доставки пакетов измеряется наносекундами и долями наносекунд. При этом требования к пропускной способности в сетях на кристалле сопоставимы или превосходят требования для компьютерных сетей. Это накладывает дополнительные ограничения на используемые алгоритмы маршрутизации, планирования и арбитража. Для компьютерной сети анализ одного пакета данных может предполагать  выполнение целой подпрограммы, в то время как в сетях на кристалле большинство решений должно приниматься за 1-2 периода тактового сигнала или  и вовсе комбинационно. Это делает неприменимыми для сетей на кристалле практически все алгоритмы обеспечения качества обслуживания, используемые в компьютерных сетях.</p>
<p>За последнее десятилетие были предложены подходы к проектированию коммуникационных фабрик, призванные обеспечить гарантии качества обслуживания “по построению”. Их можно условно разделить на две категории. Подходы на основе дифференциации трафика (<em>traffic differentiation</em>) решают проблему конкурирующих запросов введением уровней приоритета, соответствующих разным классам трафика.  Однако для сложной системы затруднительно определить необходимое количество уровней приоритетов и избежать таких проблем, как инверсии приоритета и истощения ресурсов (<em>starvation</em>).<br />
Проблема инверсии приоритетов заключается в следующем: если в одной из очередей пакетов высокоприоритетному пакету предшествует низкоприоритетный, то продвижение пакета с высоким приоритетом блокируется до тех пор, пока не будет обработан низкоприоритетный пакет. Такая ситуация потенциально приводит к нарушению требований качества обслуживания для высокоприоритетного трафика. Фактически приоритет обслуживания блокирующего пакета повышается по сравнению с тем классом трафика, к которому он принадлежит. Избежать этого можно, например, повсеместным использованием раздельных очередей для буферизации различных классов трафика.</p>
<p>Передача без конкуренции (<em>contention-free transmisson</em>) основывается на той или иной схеме резервирования ресурсов перед началом передачи.  Разделение времени обработки, использование мест в очередях, порядок передачи по разделяемым линиям связи, планируются заранее. Если тот или иной ресурс оказывается невостребованным тем, кому он предназначался согласно плану, то он не используется даже при наличии других запросов на этот ресурс.<br />
Используя статическое резервирование, несложно добиться определенных гарантий производительности. Такой подход позволяет оптимизировать архитектуру под конкретное приложение и пригоден для встраиваемых систем, но приводит к низкой утилизация ресурсов в системах на кристалле широкого спектра применения. Это объясняется опять же тем, что поведение узлов сети может сильно изменяться с течением времени. При динамическом резервировании ресурсов, после того как ресурсы уже зарезервированы, удается добиться и гарантий производительности и хорошей утилизации ресурсов. Но сам процесс резервирования может занять длительное время и задержки на стадии резервирования по-прежнему трудно оценить.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2012/01/31/computer-networks-vs-network-on-chip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Коммуникационные фабрики:  анализ и оптимизация качества обслуживания</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/12/23/2006557/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/12/23/2006557/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 17:04:48 +0000</pubDate>
		<dc:creator>Yuriy Viktorov (Intel)</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>
		<category><![CDATA[communication fabrics]]></category>
		<category><![CDATA[quality of service]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/12/23/2006557/</guid>
		<description><![CDATA[Эта запись является продолжением записи «Коммуникационные фабрики: xMAS как подход к моделированию и верификации» Коммуникационная фабрика – это сложное распределенное устройство, решающее задачу взаимодействия агентов (отдельных функциональных блоков) в составе системы на кристалле и обеспечивающее эффективное разделение ресурсов. Для коммуникационных фабрик характерен высокий уровень параллелизма и конвейеризации, с буферизацией данных и одновременной обработкой множества транзакций, [...]]]></description>
			<content:encoded><![CDATA[<p>Эта запись является продолжением записи <a href="http://software.intel.com/ru-ru/blogs/2011/11/30/xmas/">«Коммуникационные фабрики: xMAS как подход к моделированию и верификации»</a></p>
<p>Коммуникационная фабрика – это сложное распределенное устройство, решающее задачу взаимодействия агентов (отдельных функциональных блоков) в составе системы на кристалле и обеспечивающее эффективное разделение ресурсов. Для коммуникационных фабрик характерен высокий уровень параллелизма и конвейеризации, с буферизацией данных и одновременной обработкой множества транзакций, проводимых разными устройствами и находящихся на разных стадиях исполнения.</p>
<p>Некорректное распределенное взаимодействие агентов и фабрики может приводить к нарушению целостности памяти, возникновению тупиковых ситуаций, истощению ресурсов, деградации производительности и другим проблемам.<br />
Ресурсы в системах на кристалле (размеры очередей, разрядность шин, и т.д.), как правило, ограничены, а производительность и корректность работы системы сильно зависят от эффективности их разделения конкурирующими транзакциями. Поэтому при проектировании коммуникационных фабрик необходимо учитывать минимальный уровень обслуживания, который система должна гарантировать своим агентам. Совокупность таких гарантий называется качеством обслуживания.</p>
<p>Качество обслуживания (Quality of Service, QoS) – это способность системы обеспечивать своим агентам определенные измеряемые гарантии по обработке потоков данных. Нас в первую очередь будут интересовать гарантии касающиеся производительности, а потоком данных мы будем называть совокупность сообщений, обладающих каким-либо общим признаком, например, сообщения от одного источника или адресованные одному получателю.<br />
Количественно такие гарантии для потока данных, как правило, описываются тремя характеристиками:<br />
•	Форма потока – объем данных, переданных потоком, начиная с некоторого момента времени. Для описания формы потока часто используют показатели средней плотности (rate, bandwidth) и величины всплеска (burst).<br />
•	Задержка передачи (latency) – интервал времени между отправлением данных источником и их получением в точке назначения.<br />
•	Вариация задержки (jitter) – разница между максимальным и минимальным значениями задержки в потоке данных.</p>
<p>Современные подходы к анализу качества обслуживания преимущественно представлены двумя группами: неформальное ревью архитектуры системы и детальное имитационное моделирование. Первые – крайне неточны и склонны к ошибкам, а вторые становятся доступны только на поздних стадиях разработки, когда большинство архитектурных решений уже принято и не подлежит изменению за разумное время. Кроме того, ни те, ни другие методы не способны решить проблему истощения ресурсов или вычислить верхнюю границу на задержку передачи пакетов определенного потока данных. Формальная верификация для свойств качества обслуживания практически не используется т.к. такие свойства гораздо более сложны для доказательства, чем safety или liveness свойства.</p>
<p>Ранее приближенные оценки для подобных свойств получались с помощью аналитических методов [1,6,4], таких, как, например, network calculus. Однако для современных систем межсоединений внутри кристалла подобные методы или не применимы или дают слишком неточные оценки из-за требуемых для применения методов ограничений и упрощений.<br />
Другая интересная задача носит в литературе название «Exploration». Современные коммуникационные фабрики параметризованы множеством параметров: размеры буферов и очередей, алгоритмы арбитража, ширина линий связи, количество используемых классов трафика, и т.д. Быстрый выбор такого набора параметров, который бы оптимизировал метрики качества обслуживания, на сегодняшний день является открытой проблемой. На текущий момент она (не слишком эффективно) решается путем ревью архитектуры и валидации производительности. </p>
<p>Некоторые частные exploration-задачи имеют эффективное решение. Например, задача оптимального выбора емкости буферов и очередей успешно решена для асинхронных и синхронных эластичных структур [5,2,3]. Но это лишь небольшое подмножество структур используемых в современных фабриках.</p>
<p>Возможно, в одной из следующих записей я расскажу подробнее, какие новые подходы разрабатываются для анализа свойств качества обслуживания и как они ложатся в инфраструктуру xMAS, о которой я упоминал в предыдущих записях. </p>
<p><strong>Библиографический список:</strong><br />
1.	Boudec, J.Y.L., Thiran, P.: A Theory of Deterministic Queuing Systems for the Internet, lncs, vol. 2050. Springer-Verlag (2004)<br />
2.	Bufistov, D., J´ulvez, J., Cortadella, J.: Performance optimization of elastic systems using buffer resizing and buffer insertion. In: Proc. International Conf. Computer-Aided Design (ICCAD). pp. 442–448 (Nov 2008)<br />
3.	Bufistov, D.E., Cortadella, J., Galceran-Oms, M., J´ulvez, J., Kishinevsky, M.: Retiming and recycling for elastic systems with early evaluation. In: DAC ’09: Proceedings of the 46th Annual Design Automation Conferen ce. pp. 288–291. ACM (2009)<br />
4.	Burns, S.M., Hulgaard, H., Amon, T., Borriello, G.: An algorithm for exact bounds on the time separation of events in concurrent systems. IEEE Trans. Comput. 44, 1306–1317 (November 1995), http://dx.doi.org/10.1109/12.475126<br />
5.	Manohar, R., Martin, A.J.: Slack elasticity in concurrent computing. In: Proc. 4th Int. Conf. on the Mathematics of Program Construction. LNCS, vol. 1422, pp. 272–285 (1998)<br />
6.	Wilhelm, R.: Timing analysis and timing predictability. In: de Boer, F., Bonsangue, M., Graf, S., de Roever, W.P. (eds.) Formal Methods for Components and Objects, Lecture Notes in Computer Science, vol. 3657, pp.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/12/23/2006557/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Коммуникационные фабрики: xMAS как подход к моделированию и верификации</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/11/30/xmas/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/11/30/xmas/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 12:53:00 +0000</pubDate>
		<dc:creator>Yuriy Viktorov (Intel)</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>
		<category><![CDATA[Verilog]]></category>
		<category><![CDATA[xMAS]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/11/30/xmas/</guid>
		<description><![CDATA[Эта запись является продолжением записи <a href="http://software.intel.com/ru-ru/blogs/2011/10/25/2005532/"> «Коммуникационные фабрики и с чем их едят: верификация»</a>

В предыдущей части я упомянул о подходе к высокоуровневому моделированию и верификации микроархитектуры (в частности, микроархитектуры коммуникационных фабрик), разработанному моими коллегами в недрах Intel. И собирался в дальнейшем написать подробную статью о том, в чем же он заключается. Но, вероятно, эти планы будут отложены до нового года, а сейчас я ограничусь более поверхностным изложением и закончу рассказ о проблемах связанных с проектированием коммуникационных фабрик.]]></description>
			<content:encoded><![CDATA[<p>Эта запись является продолжением записи <a href="http://software.intel.com/ru-ru/blogs/2011/10/25/2005532/"> «Коммуникационные фабрики и с чем их едят: верификация»</a></p>
<p>В предыдущей части я упомянул о подходе к высокоуровневому моделированию и верификации микроархитектуры (в частности, микроархитектуры коммуникационных фабрик), разработанному моими коллегами в недрах Intel. И собирался в дальнейшем написать подробную статью о том, в чем же он заключается. Но, вероятно, эти планы будут отложены до нового года, а сейчас я ограничусь более поверхностным изложением и закончу рассказ о проблемах связанных с проектированием коммуникационных фабрик.</p>
<p>Используемые архитектурные модели представляют собой сети передачи пакетов, состоящие из небольшого набора простых примитивов. Такие модели называются сетями xMAS (xMAS -  eXecutable MicroArchitectural Specification). Семантика таких сетей описывается с использованием синхронных уравнений для каждого примитива. За счет этого для каждой сети xMAS существует соответствующая ей синхронная модель.<br />
<a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/tmp0.png"><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/tmp0.png" alt="" width="700" height="355" class="aligncenter size-medium wp-image-2006220" /></a><br />
Набор базовых примитивов xMAS</p>
<p>Требующие верификации свойства архитектуры коммуникационных фабрик определяются для сетей xMAS. А для верификации сеть xMAS преобразуется в соответствующую синхронную модель. Свойства такой модели затем верифицируются c использованием стандартных средств верификации или разработанных самостоятельно.<br />
Например, Синхронная модель xMAS может быть представлена в виде single clock, edge-triggered описания на языке Verilog – одном из языков описания аппаратуры. Такое представление позволяет использовать для верификации наших свойств любые сторонние средства верификации Verilog.</p>
<p>Следует заметить, что хоть такое описание на языке Verilog и является синтезируемым, но оно не используется при создании микропроцессора. Такое описание лишь отражает (высокоуровневую) структуру модели, абстрагируя многие детали реального RTL описания на языке Verilog.<br />
<img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/tmp11.png" alt="." /><br />
Простая модель xMAS</p>
<p>На этапе трансляции  сети xMAS в описание на языке Verilog мы располагаем информацией о высокоуровневой структуре модели (например, что здесь не просто набор регистров, а очередь, а это не просто несколько логических элементов, а логика синхронизации). Используя информацию такого рода можно автоматически обнаруживать дополнительные инварианты, описывающие поведение модели. Добавление дополнительных инвариантов в Verilog-описание обеспечивает индуктивное усиление доказываемых утверждений и, в конечном счете, упрощает их верификацию.<br />
Методология моделирования более подробно рассмотрена в [1], а использование автоматического усиления доказываемых утверждений в [2].</p>
<p>Одним из достоинств такого метода является легковесное автоматизированное доказательство так называемых liveness свойств (отсутствия тупиковых состояний) большого класса реальных примеров из области коммуникационных фабрик.<br />
<a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/tmp21.png"><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/tmp21.png" alt="" width="700" height="700" class="aligncenter size-medium wp-image-2006222" /></a><br />
Модель двух агентов обменивающихся запросами и ответами на запросы</p>
<p>Определение тупикового состояния (deadlock) в моделях xMAS носит локальный характер.  Т.е. допускается, что часть модели всегда заблокирована, в то время как остальная модель продолжает обрабатывать пакеты. Такие локальные тупиковые состояния носят название livelock.</p>
<p>Основная идея используемого метода состоит в использовании высокоуровневой структуры для того, чтобы сделать выводы о liveness свойствах модели. Структурные тупиковые состояния могут быть характеризованы на основании анализа только структуры модели. При этом недостижимые тупиковые состояния могут быть исключены с помощью автоматически сгенерированных инвариантов [3].</p>
<p>Продолжение (если таковое появится) будет посвящено проблемам анализа свойств качества обслуживания или же более детальному описанию подхода к моделированию xMAS.</p>
<p><strong>Библиографический список:</strong><br />
1.	Chatterjee, S., Kishinevsky, M., Ogras, U.Y.: Quick formal modeling of communication fabrics to enable verification. Proc. IEEE High Level Design Validation and TestWorkshop (HLDVT) pp. 42–49 (2010)<br />
2.	Chatterjee, S., Kishinevsky, M.: Automatic generation of inductive invariants from highlevel microarchitectural models of communication fabrics. In: Computer Aided Verification, LNCS, vol. 6174, pp. 321–338. Springer-Verlag (2010)<br />
3.	Gotmanov, A., Chatterjee, S., Kishinevsky, M.: Verifying deadlock-freedom of communication fabrics. pp. 214–231 (2011)</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/11/30/xmas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Коммуникационные фабрики и с чем их едят: верификация</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/10/25/2005532/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/10/25/2005532/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 06:10:22 +0000</pubDate>
		<dc:creator>Yuriy Viktorov (Intel)</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/10/25/2005532/</guid>
		<description><![CDATA[(Эта запись является продолжением записи Коммуникационные фабрики и с чем их едят: трудности проектирования) Время выхода на рынок или Time-to-Market является одним из основных ограничений при проектировании систем на кристалле (SoC). Команды разработчиков обычно рассчитывают на использование стандартных IP блоков, которые переиспользуются во множестве продуктов, что обеспечивает малое время проектирования. Поэтому, эффективные решения в области [...]]]></description>
			<content:encoded><![CDATA[<p>(Эта запись является продолжением записи <a href="http://software.intel.com/ru-ru/blogs/2011/09/16/2005178/">Коммуникационные фабрики и с чем их едят: трудности проектирования</a>)</p>
<p>Время выхода на рынок или Time-to-Market является одним из основных ограничений при проектировании систем на кристалле (SoC). Команды разработчиков обычно рассчитывают на использование стандартных IP блоков, которые переиспользуются во множестве продуктов, что обеспечивает малое время проектирования.</p>
<p>Поэтому, эффективные решения в области соединения аппаратных узлов на системном уровне (коммуникационные фабрики), способные без дополнительных усилий соединять вместе различные IP блоки, также становятся неотъемлемой частью дизайна. Такая методология проектирования распространяется вплоть до Hi-End серверов и высокопроизводительных систем, где требования к переиспользованию стандартизованых компонентов (особенно, решений в области соединения узлов) между различными сегментами продукции и поколениями устройств растут.</p>
<p>Если разработке системы соединений не уделялось должного внимания, то потенциально возникающие тупиковые состояния (deadlocks и livelocks) создают большие трудности для быстрой интеграции системы на кристалле. Распределенная природа системы межсоединений и сложное взаимодействие между различными IP блоками делают возникающие проблемы сложными для понимания и отладки. Ряд сценариев, приводящих к тупиковым состояниям можно обнаружить, только рассматривая систему на кристалле целиком. И лишь очень немногие инженеры занятые разработкой  системы имеют представление о функционировании системы в целом, а значит, могут корректно и за разумное время локализовать возникающие ошибки и определить их природу.</p>
<p><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/tmp.png" alt="Распределенное взаимодействие и поиск ошибок в системе на кристалле" /><br />
Распределенное взаимодействие и поиск ошибок в системе на кристалле <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Кроме того, проблемы возникновения тупиковых состояний трудны для исправления или исправления оптимальным образом, даже после того, как они обнаружены. Например, оптимальное решение проблемы может потребовать модификации многих функциональных блоков, в то время, как простое решение нередко требует пожертвовать производительностью из-за ограничений накладываемых на параллелизм обработки транзакций.</p>
<p>Текущие средства формальной верификации не способны анализировать системы такой сложности напрямую – коммуникационная фабрика и её окружение составляют существенную часть всех логических элементов внутри процессорного кристалла (какую именно часть – не скажу <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p>Один из перспективных подходов к верификации отсутствия тупиковых состояний в коммуникационных фабриках основывается на использовании высокоуровневого моделирования архитектуры и верификации интересующих свойств уже на модели, а не на реальном описании фабрики уровня регистровых передач (RTL). </p>
<p>Сравнительно недавно моими коллегами был достигнут значительный успех в  этом направлении, с использованием простого набора функциональных примитивов для построения моделей[1], автоматической генерации индуктивных инвариантов[2] и анализе условий возникновения тупиковых состояний[3].  Этот подход успешно применяется и позволил как обнаружить ряд ряд тупиковых состояний в реальной микроархитектуре, так и доказать их отсутствие при внесении предложенных исправлений.</p>
<p>Однако, есть потребность в значительном расширении методов верификации, для того, чтобы иметь возможность анализировать более широкий класс систем и их свойств. Например, анализировать свойства высокоуровневых протоколов используемых блоками, таких, как когерентность кэша (cache coherency) или целостность памяти (memory consistency), принимая во внимание особенности микроархитектурной реализации (чего не позволяют современные подходы к верификации целостности кэша).</p>
<p>И, наконец, требуются более совершенные методы  для связи высокоуровневых моделей с RTL описаниями через оптимизирующую компиляцию или валидацию RTL. Ведь переход от доказательства на реальном RTL описании к доказательству на описании модели и перенос доказанного свойства с модели обратно на RTL описание должны выполняться корректно.</p>
<p>В следующей части, если таковая появится, я попробую рассказать о том, в чем же заключается разрекламированный здесь подход верификации отсутствия тупиковых состояний в  коммуникационных фабриках.</p>
<p><strong>Библиографический список:</strong><br />
1.	Chatterjee, S., Kishinevsky, M., Ogras, U.Y.: Quick formal modeling of communication fabrics to enable verification. Proc. IEEE High Level Design Validation and TestWorkshop (HLDVT) pp. 42–49 (2010)</p>
<p>2.	Chatterjee, S., Kishinevsky, M.: Automatic generation of inductive invariants from highlevel microarchitectural models of communication fabrics. In: Computer Aided Verification, LNCS, vol. 6174, pp. 321–338. Springer-Verlag (2010)</p>
<p>3.	Gotmanov, A., Chatterjee, S., Kishinevsky, M.: Verifying deadlock-freedom of communication fabrics. VMCAI'11, LNCS, vol. 6538, pp. 214–231 (2011)</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/10/25/2005532/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Коммуникационные фабрики и с чем их едят – трудности проектирования</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/09/16/2005178/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/09/16/2005178/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 10:50:40 +0000</pubDate>
		<dc:creator>Yuriy Viktorov (Intel)</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[communication fabrics]]></category>
		<category><![CDATA[Core]]></category>
		<category><![CDATA[CPU]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/09/16/2005178/</guid>
		<description><![CDATA[Коммуникационные фабрики (communication fabrics) – это современный подход к построению системы внутренних соединений функциональных блоков (ядра, контроллеры разнообразных шин, интерфейсов и памяти, видеоускорители и т.п.) процессорного кристалла. Его назначение – обеспечить требуемые пропускную способность и масштабируемость архитектуры (в рамках одного семейства процессоров такие вещи, как количество ядер, наличие/отсутствие каких-то узлов и функций могут варьироваться), преодолев ограничения, свойственные другим решениям. Продолжение статьи читайте далее.]]></description>
			<content:encoded><![CDATA[<p>Если у человека, далекого от компьютерной индустрии, спросить, что находится внутри процессора, ответ, скорее всего, ограничится словами «компьютерные мозги». Человек, которому эта тема ближе, назовет примерно десяток различных блоков (например, кэш, ядра и контроллер памяти).  Но вот как эти блоки соединены друг с другом, ответить, скорее всего, затруднится или ответит неверно.</p>
<p>Первоначально  функциональные блоки внутри процессора соединялись общей шиной передачи данных. Но сложность процессоров росла, и счет блокам пошел на десятки (для некоторых процессоров уже перевалил за сотню). Общая шина стала узким местом, ограничивающим рост производительности.</p>
<p>Коммуникационные фабрики (communication fabrics) – это современный подход к построению системы внутренних соединений функциональных блоков (ядра, контроллеры разнообразных шин, интерфейсов и памяти, видеоускорители и т.п.) процессорного кристалла. Его назначение – обеспечить требуемые пропускную способность и масштабируемость архитектуры (в рамках одного семейства процессоров такие вещи, как количество ядер, наличие/отсутствие каких-то узлов и функций могут варьироваться), преодолев ограничения, свойственные другим решениям. Если одно устройство использует общую шину для передачи данных, то все остальные блоки ожидают, когда шина освободится, чтобы  занять её для своих нужд. Внутри же коммуникационной фабрики одновременно может протекать множество транзакций, проводимых разными устройствами и находящихся на разных стадиях исполнения.</p>
<p><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/tmp1.png" alt="Система соединений Intel Atom CE4100 и подключенные к ней блоки" /><br />
Система соединений Intel Atom CE4100 и подключенные к ней блоки</p>
<p><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/tmp2.png" alt="Кольцевая шина SandyBridge-EX и подключенные к ней блоки" /><br />
Кольцевая шина SandyBridge-EX и подключенные к ней блоки</p>
<p>Однако, с проектированием коммуникационных фабрик связано множество трудностей, которые я попробую вкратце обрисовать.<br />
Сейчас коммуникационные фабрики используются  в процессорах для практически всех сегментов компьютерного рынка: от высокопроизводительных серверных и графических решений, до настольных и встраиваемых систем. Архитектура фабрик для hi-end систем обычно представлена регулярными кольцами (rings) и решетками (meshes) и существенно отличается от используемой во встраиваемых системах. В составе систем на кристалле коммуникационные фабрики нередко решают задачи ввода/вывода и выполнения протокола целостности кэша. Поэтому дизайн коммуникационных фабрик предъявляет повышенные требования к качеству (корректность, производительность, энергопотребление, надежность) и скорости интеграции в современные и будущие продукты.</p>
<p>Проектирование коммуникационных фабрик представляет одну из наибольших проблем, из-за сложного и распределенного характера передач данных внутри фабрики, а также запутанности взаимодействия между фабрикой и подключенными к ней узлами. Ситуация осложняется тем, что фабрике необходимо корректно и эффективно реализовывать протоколы высокого уровня, используемые узлами.</p>
<p>В процессе проектирования решаются задачи проверки функциональных и связанных с производительностью характеристик, анализа стоимости (площадь кристалла, энергопотребление, цена разработки) и многоуровневой оптимизации (логическая производительность vs физические аспекты интегрального исполнения устройства).</p>
<p>Если рассматривать проблему проверки характеристик фабрики, то оказывается, что текущие средства формальной верификации не способны анализировать системы такой сложности. Как правило, проводимый анализ производительности и корректности основывается на имитационном моделировании. При этом высока вероятность упустить существенные граничные случаи, что не позволяет получить надежных гарантий производительности. А убедиться в отсутствии тупиковых состояний (так называемых deadlocks и livelocks) при таком подходе просто невозможно. Кроме того, ряд тупиковых сценариев в принципе невозможно обнаружить, анализируя части системы по отдельности – необходимо рассматривать коммуникационную фабрику в конкретной конфигурации, вместе с подключенными к ней агентами.</p>
<p>Вот такие непростые задачи стоят перед Intel'овскими (и не только) дизайнерами <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . В следующих частях, если таковые появятся, я попробую рассказать о том, как решаются проблемы формальной верификации и анализа производительности для коммуникационных фабрик.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/09/16/2005178/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

