Введение

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

Масштабируемый когерентный интерфейс (SCI) – это стандарт высокоскоростного межсоединения для многопроцессорной обработки с разделяемой памятью и передачей сообщений. Его целью было хорошее масштабирование, обеспечение когерентности памяти во всей системе и простой интерфейс, то есть стандарт для замены существующих шин в многопроцессорных системах на систему, не имеющую внутренних ограничений масштабируемости и производительности. Стандарт IEEE Std 1596 1992, Стандарт IEEE для масштабируемого когерентного интерфейса (SCI), был одобрен советом по стандартам IEEE 19 марта 1992 года. Он применялся в течение 1990-х годов, но так и не получил широкого распространения и был заменен другими системами с начала 2000-х годов.

История

Вскоре после проекта Futurebus (IEEE 896), последовавшего за Fastbus (IEEE 960) в 1987 году, некоторые инженеры предсказывали, что к моменту его выпуска в начале 1990-х годов он уже будет недостаточно быстрым для рынка высокопроизводительных вычислений. В ответ в ноябре 1987 года была сформирована исследовательская группа "Superbus". В июле 1988 года от рабочей группы ассоциации по стандартизации Института инженеров электротехники и электроники (IEEE) отделилась еще одна группа для разработки стандарта, ориентированного на этот рынок. По сути, это было подмножество функций Futurebus, которые можно было легко реализовать на высокой скорости, с незначительными дополнениями для упрощения подключения к другим системам, таким как VMEbus. Большинство разработчиков имели опыт работы с высокоскоростными компьютерными шинами. Представители компаний из компьютерной индустрии и научного сообщества включали Amdahl, Apple Computer, BB&N, Hewlett Packard, CERN, Dolphin Server Technology, Cray Research, Sequent, AT&T, Digital Equipment Corporation, McDonnell Douglas, National Semiconductor, Stanford Linear Accelerator Center, Tektronix, Texas Instruments, Unisys, Университет Осло, Университет Висконсина. Первоначальной целью было создание единого стандарта для всех шин в компьютере. Вскоре рабочая группа пришла к идее использования связи точка-точка в виде вставных колец. Это позволило избежать проблем с суммарной емкостью, ограничением физической длины/скоростью света и отражениями, а также обеспечить параллельные транзакции. Использование вставных колец приписывается Манолису Катевенису, который предложил эту идею на одном из первых заседаний рабочей группы. Рабочей группой по разработке стандарта руководили Дэвид Б. Густавсон (председатель) и Дэвид В. Джеймс (вице-председатель). Дэвид В. Джеймс внес значительный вклад в написание спецификаций, включая исполняемый код на C. Группа Штейна Гьессинга из Университета Осло использовала формальные методы для проверки протокола когерентности, а Dolphin Server Technology разработала чип контроллера узла, включающий логику когерентности кэша. Различные версии и производные SCI были реализованы такими компаниями, как Dolphin Interconnect Solutions, Convex, Data General AViiON (с использованием контроллеров кэша и контроллеров шин от Dolphin), Sequent и Cray Research. Dolphin Interconnect Solutions реализовала производную SCI, подключенную к PCI и PCI Express, обеспечивающую некогерентный доступ к общей памяти. Эта реализация использовалась Sun Microsystems для своих высокопроизводительных кластеров, Thales Group и рядом других компаний, включая масштабные приложения для обмена сообщениями в кластерах HPC и медицинской визуализации. SCI часто использовался для реализации архитектур с неравномерным доступом к памяти. Он также использовался Sequent Computer Systems в качестве шины памяти процессора в их системах NUMA Q. Numascale разработала производную версию для подключения к когерентному HyperTransport.

Сделки

SCI передает информацию в пакетах. Каждый пакет состоит из непрерывной последовательности 16-битных символов. Каждый символ сопровождается флагом. Переход флага с 0 на 1 указывает на начало пакета. Переход с 1 на 0 происходит за 1 (для эхо-сигналов) или 4 символа до конца пакета. Пакет содержит заголовок с адресной информацией, командой и статусом, полезную нагрузку (от 0 до произвольной длины данных) и контрольную сумму CRC. Первый символ в заголовке пакета содержит адрес узла назначения. Если адрес не входит в область, обслуживаемую принимающим узлом, пакет передается на выход через FIFO обхода. В противном случае пакет помещается в очередь приема и может быть передан в кольцо в другом измерении. Все пакеты маркируются при прохождении через скруббер (узел назначается скруббером при инициализации кольца). Пакеты без допустимого адреса назначения будут удалены при повторном прохождении скруббера, чтобы избежать заполнения кольца пакетами, которые в противном случае циркулировали бы бесконечно.

Соответствие кэша

Когерентность кэша обеспечивает согласованность данных в многопроцессорных системах. Самая простая форма, применявшаяся в ранних системах, основывалась на очистке содержимого кэша при переключении контекста и отключении кэша для данных, совместно используемых двумя или более процессорами. Эти методы были применимы, когда разница в производительности между кэшем и памятью была менее чем на один порядок величины. Современные процессоры с кэшами, которые более чем на два порядка быстрее основной памяти, не смогли бы достичь оптимальной производительности без более сложных методов обеспечения согласованности данных. Системы с общей шиной используют методы прослушивания (подглядывания), поскольку шины по своей природе обеспечивают широковещательную передачу. Современные системы с межсоединениями типа «точка-точка» используют методы широковещательной передачи с возможностями фильтрации прослушивания для повышения производительности. Поскольку широковещательная передача и прослушивание по своей сути не масштабируемы, они не используются в SCI. Вместо этого SCI использует протокол когерентности кэша на основе распределенного каталога со связным списком узлов, содержащих процессоры, совместно использующие определенную строку кэша. Каждый узел содержит каталог для основной памяти узла с тегом для каждой строки памяти (той же длины, что и строка кэша). Тег памяти содержит указатель на начало связного списка и код состояния строки (три состояния: home, fresh, gone). С каждым узлом также связан кэш для хранения удаленных данных с каталогом, содержащим указатели вперед и назад к узлам в связном списке, совместно использующим строку кэша. Тег кэша имеет семь состояний (недействительный, только fresh, head fresh, только dirty, head dirty, mid valid, tail valid). Распределенный каталог масштабируем. Накладные расходы на когерентность кэша на основе каталога составляют постоянный процент памяти и кэша узла. Этот процент составляет около 4% для памяти и 7% для кэша.

Наследие

SCI — это стандарт для соединения различных ресурсов в многопроцессорной компьютерной системе, и он не так широко известен публике, как, например, семейство Ethernet для соединения различных систем. Разные производители систем реализовали различные варианты SCI для своей внутренней системной инфраструктуры. Эти реализации взаимодействуют со сложными механизмами в процессорах и системах памяти, и каждый производитель должен обеспечивать определенную степень совместимости как для аппаратного, так и для программного обеспечения. Густавсон возглавил группу под названием "Ассоциация пользователей, разработчиков и производителей масштабируемого когерентного интерфейса и Serial Express" и поддерживал веб-сайт для этой технологии, начиная с 1996 года. В 1996 году была разработана версия с использованием дифференциальной сигнализации низкого напряжения, а позднее в 1996 году – интерфейс памяти, известный как Ramlink. В январе 1998 года корпорация SLDRAM была создана для получения патентов на попытку определения нового интерфейса памяти, связанного с другой рабочей группой под названием SerialExpress или Local Area Memory Port. Однако к началу 1999 года новый стандарт памяти был отменен. В 1999 году серия статей была опубликована в виде книги, посвященной SCI. Обновленная спецификация была опубликована в июле 2000 года Международной электротехнической комиссией (МЭК) Международной организации по стандартизации (ISO) как ISO/IEC 13961.