stringtranslate.com

СПАРК

Микропроцессор Sun UltraSPARC II (1997)

SPARC ( Scalable Processor ARChitecture ) — это архитектура набора инструкций компьютера с сокращенным набором команд (RISC), первоначально разработанная Sun Microsystems . [1] [2] На ее конструкцию сильно повлияла экспериментальная система Berkeley RISC, разработанная в начале 1980-х годов. Впервые разработанная в 1986 году и выпущенная в 1987 году, [3] [2] SPARC была одной из самых успешных ранних коммерческих систем RISC, и ее успех привел к внедрению аналогичных конструкций RISC многими поставщиками в 1980-х и 1990-х годах.

Первая реализация оригинальной 32-разрядной архитектуры (SPARC V7) использовалась в компьютерных рабочих станциях и серверных системах Sun-4 компании Sun, заменив их более ранние системы Sun-3 на базе серии процессоров Motorola 68000. SPARC V8 добавил ряд улучшений, которые были частью серии процессоров SuperSPARC , выпущенной в 1992 году. SPARC V9, выпущенный в 1993 году, представил 64-разрядную архитектуру и впервые был выпущен в процессорах UltraSPARC компании Sun в 1995 году. Позднее процессоры SPARC использовались в серверах с симметричной многопроцессорной обработкой (SMP) и неоднородным доступом к памяти ( CC-NUMA ), производимых Sun, Solbourne и Fujitsu , среди прочих.

Проект был передан торговой группе SPARC International в 1989 году, и с тех пор ее архитектура разрабатывалась ее членами. SPARC International также отвечает за лицензирование и продвижение архитектуры SPARC, управление товарными знаками SPARC (включая SPARC, которым она владеет) и обеспечение тестирования на соответствие . SPARC International была призвана развивать архитектуру SPARC для создания более крупной экосистемы; SPARC был лицензирован несколькими производителями, включая Atmel , Bipolar Integrated Technology , Cypress Semiconductor , Fujitsu , Matsushita и Texas Instruments . Благодаря SPARC International, SPARC является полностью открытым, непатентованным и безвозмездным.

По состоянию на 2024 год новейшими коммерческими процессорами SPARC высокого класса являются SPARC64 XII компании Fujitsu (представленный в сентябре 2017 года для сервера SPARC M12) и SPARC M8 компании Oracle , представленный в сентябре 2017 года для серверов высокого класса.

1 сентября 2017 года, после серии увольнений, начавшихся в Oracle Labs в ноябре 2016 года, Oracle прекратила разработку SPARC после завершения M8. Большая часть группы разработчиков ядра процессора в Остине, штат Техас, была уволена, как и команды в Санта-Кларе, штат Калифорния, и Берлингтоне, штат Массачусетс. [4] [5]

Fujitsu также прекратит производство SPARC (уже перешла на производство собственных процессоров на базе ARM ) после двух «улучшенных» версий старого сервера Fujitsu SPARC M12 в 2020–2022 годах (ранее планировалось на 2021 год) и снова в 2026–2027 годах, окончания продаж в 2029 году серверов UNIX и годом позже — мэйнфреймов и окончания поддержки в 2034 году «для содействия модернизации клиентов». [6]

Функции

Архитектура SPARC находилась под сильным влиянием более ранних разработок RISC, включая RISC I и II из Калифорнийского университета в Беркли и IBM 801. Эти оригинальные разработки RISC были минималистичными, включали как можно меньше функций или кодов операций и были нацелены на выполнение инструкций со скоростью почти одна инструкция за такт . Это делало их похожими на архитектуру MIPS во многих отношениях, включая отсутствие таких инструкций, как умножение или деление. Еще одной особенностью SPARC, на которую повлияло это раннее движение RISC, является слот задержки ветвления .

Процессор SPARC обычно содержит до 160 регистров общего назначения . Согласно спецификации «Oracle SPARC Architecture 2015», «реализация может содержать от 72 до 640 64-битных регистров общего назначения». [7] В любой момент времени только 32 из них видны программному обеспечению — 8 представляют собой набор глобальных регистров (один из которых, g0 , жестко связан с нулем, поэтому только семь из них можно использовать как регистры), а остальные 24 находятся в стеке регистров . Эти 24 регистра образуют то, что называется окном регистров , и при вызове/возврате функции это окно перемещается вверх и вниз по стеку регистров. Каждое окно имеет восемь локальных регистров и разделяет восемь регистров с каждым из соседних окон. Общие регистры используются для передачи параметров функции и возврата значений, а локальные регистры используются для сохранения локальных значений между вызовами функций.

«Масштабируемость» в SPARC проистекает из того факта, что спецификация SPARC позволяет масштабировать реализации от встроенных процессоров до больших серверных процессоров, все из которых используют один и тот же основной (непривилегированный) набор инструкций. Одним из масштабируемых архитектурных параметров является количество реализованных окон регистров; спецификация позволяет реализовать от трех до 32 окон, поэтому реализация может выбрать реализацию всех 32 для обеспечения максимальной эффективности стека вызовов или реализацию только трех для снижения стоимости и сложности конструкции или реализацию некоторого числа между ними. Другие архитектуры, которые включают в себя схожие функции регистровых файлов , включают Intel i960 , IA-64 и AMD 29000 .

Архитектура прошла через несколько ревизий. Она получила аппаратную функциональность умножения и деления в версии 8. [8] [9] 64-бит (адресация и данные) были добавлены в спецификацию SPARC версии 9, опубликованную в 1994 году. [10]

В SPARC версии 8 регистровый файл с плавающей точкой имеет 16 регистров двойной точности . Каждый из них может использоваться как два регистра одинарной точности , обеспечивая в общей сложности 32 регистра одинарной точности. Пара нечетных и четных чисел регистров двойной точности может использоваться как регистр учетверенной точности , что позволяет использовать 8 регистров учетверенной точности. SPARC версии 9 добавила еще 16 регистров двойной точности (к которым также можно получить доступ как к 8 регистрам учетверенной точности), но к этим дополнительным регистрам нельзя получить доступ как к регистрам одинарной точности. Ни один процессор SPARC не реализует операции учетверенной точности на аппаратном уровне по состоянию на 2024 год. [11]

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

Порядок байтов в 32-битной архитектуре SPARC V8 — чисто big-endian. 64-битная архитектура SPARC V9 использует big-endian инструкции, но может получать доступ к данным как в big-endian, так и в little-endian порядке байтов, выбираемом либо на уровне инструкций приложения ( load-store ), либо на уровне страницы памяти (через настройку MMU). Последний часто используется для доступа к данным с изначально little-endian устройств, например, на шинах PCI.

История

Было три основных пересмотра архитектуры. Первой опубликованной версией была 32-битная версия SPARC 7 (V7) в 1986 году. SPARC версии 8 (V8), улучшенное определение архитектуры SPARC, было выпущено в 1990 году. Основными отличиями между V7 и V8 были добавление инструкций целочисленного умножения и деления, а также обновление с 80-битной арифметики с плавающей точкой «расширенной точности» до 128-битной арифметики « четверной точности ». SPARC V8 послужил основой для стандарта IEEE 1754-1994, стандарта IEEE для 32-битной архитектуры микропроцессора.

SPARC версии 9 , 64-битная архитектура SPARC, была выпущена SPARC International в 1993 году. Она была разработана Комитетом по архитектуре SPARC, состоящим из Amdahl Corporation , Fujitsu , ICL , LSI Logic , Matsushita , Philips , Ross Technology , Sun Microsystems и Texas Instruments . Более новые спецификации всегда остаются соответствующими полной спецификации SPARC V9 Level 1.

В 2002 году Fujitsu и Sun выпустили SPARC Joint Programming Specification 1 (JPS1), описывающую функции процессора, которые были идентично реализованы в процессорах обеих компаний («Общность»). Первыми процессорами, соответствующими JPS1, были UltraSPARC III от Sun и SPARC64 V от Fujitsu. Функциональность, не охватываемая JPS1, документирована для каждого процессора в «Дополнениях к реализации».

В конце 2003 года был выпущен JPS2 для поддержки многоядерных процессоров. Первыми процессорами, соответствующими JPS2, были UltraSPARC IV от Sun и SPARC64 VI от Fujitsu.

В начале 2006 года Sun выпустила расширенную спецификацию архитектуры UltraSPARC Architecture 2005. Она включает в себя не только непривилегированные и большую часть привилегированных частей SPARC V9, но и все архитектурные расширения, разработанные в поколениях процессоров UltraSPARC III, IV IV+, а также расширения CMT, начиная с реализации UltraSPARC T1 :

В 2007 году компания Sun выпустила обновленную спецификацию UltraSPARC Architecture 2007 , которой соответствовала реализация UltraSPARC T2 .

В декабре 2007 года Sun также сделала RTL процессора UltraSPARC T2 доступным через проект OpenSPARC . [12] Он также был выпущен под лицензией GNU General public license v2. [13] OpenSPARC T2 имеет 8 ядер, 16 конвейеров и 64 потока.

В августе 2012 года корпорация Oracle представила новую спецификацию Oracle SPARC Architecture 2011 , которая, помимо общего обновления справочника, добавляет расширения набора инструкций VIS 3 и гиперпривилегированный режим к спецификации 2007 года. [14]

В октябре 2015 года Oracle выпустила SPARC M7, первый процессор, основанный на новой спецификации Oracle SPARC Architecture 2015. [7] [15] Эта версия включает расширения набора инструкций VIS 4, аппаратное шифрование и кремниевую защищенную память (SSM). [16]

Архитектура SPARC обеспечивала непрерывную двоичную совместимость приложений с первой реализации SPARC V7 в 1987 году и вплоть до реализаций архитектуры Sun UltraSPARC.

Среди различных реализаций SPARC, Sun's SuperSPARC и UltraSPARC-I были очень популярны и использовались в качестве референсных систем для тестов SPEC CPU95 и CPU2000. 296 МГц UltraSPARC-II является референсной системой для теста SPEC CPU2006.

Архитектура

SPARC — это архитектура загрузки-сохранения (также известная как архитектура регистр-регистр ); за исключением инструкций загрузки/сохранения, используемых для доступа к памяти , все инструкции работают с регистрами в соответствии с принципами проектирования RISC.

Процессор SPARC включает в себя целочисленный блок (IU), который выполняет целочисленные операции загрузки, сохранения и арифметические операции. [17] : 9  [10] : 15–16  Он может включать в себя блок с плавающей точкой (FPU), который выполняет операции с плавающей точкой [17] : 9  [10] : 15–16  и, для SPARC V8, может включать в себя сопроцессор (CP), который выполняет операции, специфичные для сопроцессора; архитектура не определяет, какие функции будет выполнять сопроцессор, кроме операций загрузки и сохранения. [17] : 9 

Регистры

Архитектура SPARC имеет схему перекрывающихся окон регистров. В любой момент времени видны 32 регистра общего назначения. Переменная Current Window Pointer ( CWP ) в оборудовании указывает на текущий набор. Общий размер файла регистров не является частью архитектуры, что позволяет добавлять больше регистров по мере совершенствования технологии, вплоть до 32 окон в SPARC V7 и V8, поскольку CWP составляет 5 бит и является частью регистра PSR .

В SPARC V7 и V8 CWP обычно уменьшается инструкцией SAVE (используется инструкцией SAVE во время вызова процедуры для открытия нового стекового кадра и переключения окна регистра) или увеличивается инструкцией RESTORE (переключение обратно к вызову перед возвратом из процедуры). События прерывания ( прерывания , исключения или инструкции TRAP) и инструкции RETT (возврат из прерываний) также изменяют CWP . Для SPARC V9 регистр CWP уменьшается во время инструкции RESTORE и увеличивается во время инструкции SAVE. Это противоположно поведению PSR.CWP в SPARC V8. Это изменение не влияет на непривилегированные инструкции.

Регистры SPARC показаны на рисунке выше.

Также имеется неоконный регистр Y, используемый инструкциями пошагового умножения, целочисленного умножения и целочисленного деления. [17] : 32 

Процессор SPARC V8 с FPU включает 32 32-битных регистра с плавающей точкой, каждый из которых может содержать одно число с плавающей точкой одинарной точности IEEE 754. Четная-нечетная пара регистров с плавающей точкой может содержать одно число с плавающей точкой двойной точности IEEE 754, а четверная группа из четырех регистров с плавающей точкой может содержать одно число с плавающей точкой четверной точности IEEE 754. [17] : 10 

Процессор SPARC V9 с FPU включает в себя: [10] : 36–40 

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

Регистры с плавающей точкой не являются оконными; все они являются глобальными регистрами. [10] : 36–40 

Форматы инструкций

Все инструкции SPARC занимают полное 32-битное слово и начинаются на границе слова. Используются четыре формата, различающиеся первыми двумя битами. Все арифметические и логические инструкции имеют 2 исходных операнда и 1 целевой операнд. [18] RD — это «целевой регистр», куда помещается вывод операции. Большинство инструкций SPARC имеют по крайней мере этот регистр, поэтому он размещается рядом с «передней частью» формата инструкции. RS1 и RS2 — это «исходные регистры», которые могут присутствовать или отсутствовать, или заменяться константой.

Инструкции

Грузы и склады

Инструкции загрузки и сохранения имеют формат с тремя операндами, в котором два операнда представляют значения для адреса, а один операнд для регистра для чтения или записи. Адрес создается путем сложения двух операндов адреса для получения адреса. Второй операнд адреса может быть константой или регистром. Загрузки берут значение по адресу и помещают его в регистр, указанный третьим операндом, тогда как сохранения берут значение из регистра, указанного первым операндом, и помещают его по адресу. Чтобы сделать это более очевидным, язык ассемблера указывает операнды адреса с помощью квадратных скобок со знаком плюс, разделяющим операнды, вместо использования списка, разделенного запятыми. Примеры: [18]

ld [%L1+%L2],%L3 !загрузить 32-битное значение по адресу %L1+%L2 и поместить значение в %L3ld [%L1+8],%L2 !загрузить значение из %L1+8 в %L2ld [%L1],%L2 !как указано выше, но без смещения, что то же самое, что и +%G0st %L1,[%I2] !сохранить значение в %L1 в месте, сохранённом в %I2st %G0,[%I1+8] !очистить память в %I1+8

В связи с широким распространением не 32-битных данных, таких как 16-битные или 8-битные целые данные или 8-битные байты в строках, существуют инструкции, загружающие и сохраняющие 16-битные полуслова и 8-битные байты, а также инструкции, загружающие 32-битные слова. Во время загрузки эти инструкции будут считывать только байт или полуслово в указанном месте, а затем либо заполнять остаток целевого регистра нулями (беззнаковая загрузка), либо значением самого верхнего бита байта или полуслова (знаковая загрузка). Во время сохранения эти инструкции отбрасывают верхние биты в регистре и сохраняют только нижние биты. Существуют также инструкции для загрузки значений двойной точности, используемых для арифметики с плавающей точкой , чтения или записи восьми байтов из указанного регистра и «следующего», поэтому, если местом назначения загрузки является L1, будут установлены L1 и L2. Полный список инструкций загрузки и сохранения для регистров общего назначения в 32-битном SPARC выглядит следующим образом LD: (беззнаковый байт), ST( знаковый байт), (беззнаковое полуслово), (знаковое полуслово), (загрузка double), (сохранение байта), (сохранение half-word), (сохранение double). [18]LDUBLDSBLDUHLDSHLDDSTBSTHSTD

В SPARC V9 регистры 64-битные, и LDинструкция, переименованная LDUW, очищает верхние 32 бита в регистре и загружает 32-битное значение в нижние 32 бита, а инструкция ST, переименованная STW, отбрасывает верхние 32 бита регистра и сохраняет только нижние 32 бита. Новая LDSWинструкция устанавливает верхние биты в регистре в значение самого верхнего бита слова и загружает 32-битное значение в нижние биты. Новая LDXинструкция загружает 64-битное значение в регистр, и STXинструкция сохраняет все 64 бита регистра.

Инструкции LDF, LDDF, и LDQFзагружают значение одинарной, двойной или учетверенной точности из памяти в регистр с плавающей точкой; инструкции STF, STDF, и STQFсохраняют регистр с плавающей точкой одинарной, двойной или учетверенной точности в памяти.

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

Операции АЛУ

Арифметические и логические инструкции также используют формат из трех операндов, где первые два являются операндами, а последний — местом хранения результата. Средний операнд может быть регистром или 13-битной целочисленной константой со знаком; другие операнды — регистры. Любой из операндов регистра может указывать на G0; указание результата на G0 отбрасывает результаты, которые можно использовать для тестов. Вот некоторые примеры: [18]

добавить %L1,%L2,%L3 !сложить значения в %L1 и %L2 и поместить результат в %L3добавить %L1,1,%L1 !увеличить %L1добавить %G0,%G0,%L4 !очистить все значения в %L4

Список математических инструкций: ADD, SUB, AND, OR, XOR, и отрицательные версии ANDN, ORN, и XNOR. Одной из особенностей конструкции SPARC является то, что большинство арифметических инструкций идут парами, причем одна версия устанавливает биты кода условия NZVC в регистре состояния , а другая не устанавливает их, причем по умолчанию коды не устанавливаются. Это сделано для того, чтобы компилятор имел возможность перемещать инструкции при попытке заполнить слоты задержки. Если требуется установить коды условий, это указывается добавлением ccк инструкции: [18]

subcc %L1,10,%G0 !сравнить %L1 с 10 и проигнорировать результат, но установить флаги

У add и sub также есть еще один модификатор, X, который указывает, должна ли операция устанавливать бит переноса:

addx %L1,100,%L1 !добавьте 100 к значению в %L1 и отслеживайте перенос

SPARC V7 не имеет инструкций умножения или деления, но имеет MULSCC, который выполняет один шаг умножения, проверяя один бит и условно добавляя множимое к произведению. Это было потому, что MULSCCможет завершиться за один такт в соответствии с философией RISC. SPARC V8 добавил инструкции UMUL(беззнаковое умножение), SMUL(знаковое умножение), UDIV(беззнаковое деление) и SDIV(знаковое деление), причем обе версии не обновляют коды условий, а версии обновляют. MULSCCи инструкции умножения используют регистр Y для хранения старших 32 бит произведения; инструкции деления используют его для хранения старших 32 бит делимого. Инструкция RDYсчитывает значение регистра Y в регистр общего назначения; WRYинструкция записывает значение регистра общего назначения в регистр Y. [17] : 32  SPARC V9 добавил MULX, который умножает два 64-битных значения и выдает 64-битный результат, SDIVX, который делит 64-битное знаковое делимое на 64-битный знаковый делитель и выдает 64-битное знаковое частное, и UDIVX, который делит 64-битное беззнаковое делимое на 64-битный беззнаковый делитель и выдает 64-битное знаковое частное; ни одна из этих инструкций не использует регистр Y. [10] : 199 

Ветвление

Условные переходы проверяют коды условий в регистре состояния , как это видно во многих наборах инструкций, таких как архитектура IBM System/360 и ее последователи, а также архитектура x86 . Это означает, что тест и переход обычно выполняются с помощью двух инструкций; первая — это инструкция ALU, которая устанавливает коды условий, за которой следует инструкция перехода, которая проверяет один из этих флагов. SPARC не имеет специализированных тестовых инструкций; тесты выполняются с использованием обычных инструкций ALU с назначением, установленным на %G0. Например, чтобы проверить, содержит ли регистр значение 10, а затем перейти к коду, который его обрабатывает, нужно:

subcc %L1,10,%G0 !вычесть 10 из %L1, устанавливая нулевой флаг, если %L1 равен 10быть WASEQUAL! если установлен нулевой флаг, перейти к адресу, отмеченному WASEQUAL

В инструкции условного перехода поле icc или fcc определяет проверяемое условие. 22-битное поле смещения — это адрес цели относительно текущего ПК словами, так что условные переходы могут идти вперед или назад до 8 мегабайт. Бит ANNUL (A) используется для избавления от некоторых слотов задержки. Если в условном переходе он равен 0, слот задержки выполняется как обычно. Если он равен 1, слот задержки выполняется только в том случае, если переход выполняется. Если он не выполняется, инструкция, следующая за условным переходом, пропускается.

Существует большое разнообразие условных переходов: BA(переход всегда, по сути jmp), BN(переход никогда), BE(равно), BNE(не равно), BL(меньше), BLE(меньше или равно), BLEU(меньше или равно, без знака), BG(больше), BGE(больше или равно), BGU(больше без знака), BPOS(положительный), BNEG(отрицательный), BCC(очистка переноса), BCS(перенос установлен), BVC(очистка переполнения), BVS(переполнение установлено). [17] : 119–120 

FPU и CP имеют наборы кодов условий, отдельные от целочисленных кодов условий и друг от друга; два дополнительных набора инструкций ветвления были определены для проверки этих кодов условий. Добавление F в начало инструкции ветвления в списке выше выполняет проверку кодов условий FPU, [17] : 121–122  , тогда как в SPARC V8 добавление C проверяет флаги в иначе неопределенном CP. [17] : 123–124 

Инструкция CALL(перейти к подпрограмме) использует 30-битный программный счетчик - относительное смещение слова . Поскольку целевой адрес указывает начало слова, а не байта, 30 бит - это все, что нужно для достижения любого адреса в 4-гигабайтном адресном пространстве. [18] Инструкция CALL помещает адрес возврата в регистр R15, также известный как выходной регистр O7.

Инструкция JMPL(переход и ссылка) — это инструкция с тремя операндами, два из которых представляют значения для целевого адреса, а один операнд — для регистра, в который помещается адрес возврата. Адрес создается путем сложения двух операндов адреса для получения 32-битного адреса. Второй операнд адреса может быть константой или регистром.

Большие константы

Поскольку код операции инструкции занимает некоторые биты 32-битного слова инструкции, нет способа загрузить 32-битную константу с помощью одной инструкции. Это важно, поскольку адреса обрабатываются через регистры, а они 32-битные. Чтобы облегчить это, специальная инструкция SETHIкопирует свой 22-битный непосредственный операнд в старшие 22 бита любого указанного регистра и устанавливает каждый из младших 10 бит в 0. В общем случае за SETHI следует инструкция or с только младшими 10 битами набора значений. Чтобы облегчить это, ассемблер включает макросы %hi(X)and %lo(X). Например: [18]

sethi %hi(0x89ABCDEF),%L1 !устанавливает верхние 22 бита L1или %L1,%lo(0x89ABCDEF),%L1 !устанавливает нижние 10 бит L1 с помощью операции ИЛИ

Макросы hi и lo выполняются во время сборки, а не во время выполнения, поэтому это не влияет на производительность, но делает более понятным, что L1 установлен на одно значение, а не на два несвязанных. Чтобы сделать это еще проще, ассемблер также включает "синтетическую инструкцию", setкоторая выполняет эти две операции в одной строке:

установить 0x89ABCDEF,% L1

Это выводит две инструкции выше, если значение больше 13 бит, в противном случае он выводит сингл ldсо значением. [18]

Синтетические инструкции

Как было отмечено ранее, ассемблер SPARC использует «синтетические инструкции» для облегчения общих задач кодирования. Дополнительные примеры включают (среди прочих): [18]

Лицензиаты архитектуры SPARC

Intel была единственным производителем 80386 , что сделало его очень дорогим и заставило отрасль опасаться процессоров, поставляемых одним поставщиком . Когда Sun анонсировала SPARC в 1987 году, компания заявила, что он будет доступен из нескольких источников. Fujitsu была первым поставщиком SPARC, а Cypress Semiconductor была вторым лицензиатом; по состоянию на февраль 1989 года их процессоры SPARC были доступны, как и FPU Texas Instruments. [20] Следующие организации лицензировали архитектуру SPARC:

Реализации

Примечания :

  1. ^ ab Потоки на ядро ​​× количество ядер
  2. ^ Различные реализации SPARC V7 были произведены компаниями Fujitsu, LSI Logic , Weitek, Texas Instruments, Cypress и Temic. Процессор SPARC V7 обычно состоял из нескольких дискретных чипов, обычно включающих целочисленный блок (IU), блок с плавающей точкой (FPU), блок управления памятью (MMU) и кэш-память. Напротив, Atmel (теперь Microchip Technology) TSC695 представляет собой одночиповую реализацию SPARC V7.
  3. ^ @167 МГц
  4. ^ @250 МГц
  5. ^ @400 МГц
  6. ^ @440 МГц
  7. ^ макс. @500 МГц
  8. ^ @1200 МГц
  9. ^ без учета шин ввода-вывода
  10. ^ номинальная; спецификация от 100 до 424 МГц в зависимости от возможностей подключенной оперативной памяти

Поддержка операционной системы

Машины SPARC обычно использовали SunOS , Solaris , JavaOS или OpenSolaris от Sun, включая производные illumos и OpenIndiana , но также использовались и другие операционные системы , такие как NeXTSTEP , RTEMS , FreeBSD , OpenBSD , NetBSD и Linux .

В 1993 году Intergraph анонсировала перенос Windows NT на архитектуру SPARC, [47] но позже проект был отменен.

В октябре 2015 года Oracle анонсировала «эталонную платформу Linux для SPARC». [48]

Реализации с открытым исходным кодом

Существует несколько полностью открытых реализаций архитектуры SPARC:

Также существует полностью открытый симулятор для архитектуры SPARC:

Суперкомпьютеры

Для высокопроизводительных вычислений компания Fujitsu создает специализированные процессоры SPARC64 fx с новым набором расширений инструкций, называемым HPC-ACE (High Performance Computing – Arithmetic Computational Extensions).

Компьютер Fujitsu K занял первое место в списках TOP500 за июнь 2011 и ноябрь 2011 года. Он объединяет 88 128 процессоров SPARC64 VIIIfx , каждый с восемью ядрами, что в общей сложности составляет 705 024 ядра — почти вдвое больше, чем любая другая система в TOP500 на тот момент. Компьютер K был мощнее, чем следующие пять систем в списке вместе взятые, и имел самое высокое отношение производительности к мощности среди всех суперкомпьютерных систем. [49] Он также занял 6 место в списке Green500 за июнь 2011 года с результатом 824,56 MFLOPS/W. [50] В выпуске TOP500 за ноябрь 2012 года компьютер K занял 3 место, используя наибольшую мощность из трех лучших. [51] Он занял 85 место в соответствующем выпуске Green500 . [52] Более новые процессоры HPC, IXfx и XIfx , были включены в последние суперкомпьютеры PRIMEHPC FX10 и FX100.

Tianhe-2 ( TOP500 № 1 по состоянию на ноябрь 2014 г. [53] ) имеет ряд узлов с процессорами Galaxy FT-1500 OpenSPARC, разработанными в Китае. Однако эти процессоры не внесли вклад в оценку LINPACK . [54] [55]

Смотрите также

Ссылки

  1. ^ abc "Fujitsu to take ARM into the realm of Super". Музей CPU Shack . 21 июня 2016 г. Архивировано из оригинала 30 июня 2019 г. Получено 30 июня 2019 г.
  2. ^ abcd "Timeline". SPARC International . Архивировано из оригинала 24 апреля 2019 г. Получено 30 июня 2019 г.
  3. ^ ab "Fujitsu SPARC". cpu-collection.de . Архивировано из оригинала 6 августа 2016 г. Получено 30 июня 2019 г.
  4. ^ Vaughan-Nichols, Steven J. (5 сентября 2017 г.). «Sun set: Oracle closes down last Sun product lines». ZDNet . Архивировано из оригинала 10 сентября 2017 г. . Получено 11 сентября 2017 г. .
  5. ^ Николс, Шон (31 августа 2017 г.). «Oracle наконец решает прекратить оттягивать неизбежное, начинает увольнения оборудования». The Register . Архивировано из оригинала 12 сентября 2017 г. Получено 11 сентября 2017 г.
  6. ^ "Roadmap: Fujitsu Global". www.fujitsu.com . Получено 15 февраля 2022 г. .
  7. ^ ab "Oracle SPARC Architecture 2015: One Architecture ... Multiple Innovative Implementations" (PDF) . Проект D1.0.0. 12 января 2016 г. Архивировано (PDF) из оригинала 24 апреля 2016 г. Получено 13 июня 2016 г. IMPL . DEP. #2-V8: Реализация архитектуры Oracle SPARC может содержать от 72 до 640 64-битных регистров R общего назначения. Это соответствует группировке регистров в MAXPGL + 1 наборов глобальных регистров R плюс кольцевой стек из N_REG_WINDOWS наборов по 16 регистров в каждом, известных как окна регистров. Количество имеющихся окон регистров (N_REG_WINDOWS) зависит от реализации и находится в диапазоне от 3 до 32 (включительно).
  8. ^ "Параметры SPARC", Использование коллекции компиляторов GNU (GCC), GNU , заархивировано из оригинала 9 января 2013 г. , извлечено 8 января 2013 г.
  9. ^ SPARC Optimizations With GCC, OSNews , 23 февраля 2004 г., архивировано из оригинала 23 мая 2013 г. , извлечено 8 января 2013 г.
  10. ^ abcdef Weaver, DL; Germond, T., ред. (1994). Руководство по архитектуре SPARC, версия 9. SPARC International, Inc.: Prentice Hall . ISBN 0-13-825001-4. Получено 27 мая 2023 г. .
  11. ^ "SPARC Behavior and Implementation". Numerical Computation Guide – Sun Studio 10. Sun Microsystems, Inc. 2004. Архивировано из оригинала 25 января 2022 г. Получено 24 сентября 2011 г. Однако существуют четыре ситуации, когда оборудование не может успешно выполнить инструкцию с плавающей точкой: ... Инструкция не реализована оборудованием (например, ... инструкции с четверной точностью на любом SPARC FPU).
  12. ^ "Sun Accelerates Growth of UltraSPARC CMT Eco System". Sun Microsystems. Архивировано из оригинала 26 января 2008 г.
  13. ^ "OpenSPARC Frequently Asked Questions". Oracle. Архивировано из оригинала 17 октября 2012 г. Получено 20 марта 2021 г.
  14. ^ "Oracle SPARC Architecture 2011" (PDF) , Oracle Corporation , 21 мая 2014 г., заархивировано (PDF) из оригинала 24 сентября 2015 г. , извлечено 25 ноября 2015 г.
  15. ^ Соат, Джон. "SPARC M7 Innovation". Веб-сайт Oracle . Корпорация Oracle . Архивировано из оригинала 5 сентября 2015 г. Получено 13 октября 2015 г.
  16. ^ "Software in Silicon Cloud - Oracle". www.oracle.com . Архивировано из оригинала 21 января 2019 г. Получено 21 января 2019 г.
  17. ^ abcdefghi Руководство по архитектуре SPARC, версия 8. SPARC International, Inc. 1992. Получено 27 мая 2023 г.
  18. ^ abcdefghi «Основные инструкции SPARC».
  19. ^ "SPARC64 IXfx Extensions Fujitsu Limited Ver 12, 2 декабря 2013 г." (PDF) . стр. 103–104 . Получено 17 декабря 2023 г. .
  20. ^ abcdef Маршалл, Тревор; Тазелаар, Джейн Моррилл (февраль 1989). «Worth the RISC». BYTE . стр. 245–249 . Получено 8 октября 2024 г. .
  21. ^ "Floodgap Retrobits представляет Solbourne Solace: святилище забытого SPARC". www.floodgap.com . Архивировано из оригинала 1 декабря 2020 г. . Получено 14 января 2020 г. .
  22. ^ Sager, D.; Hinton, G.; Upton, M.; Chappell, T.; Fletcher, TD; Samaan, S.; Murray, R. (2001). "Микропроцессор 0,18 мкм КМОП IA32 с целочисленным исполнительным устройством 4 ГГц". Международная конференция IEEE по твердотельным схемам 2001 года. Сборник технических документов. ISSCC (Cat. No.01CH37177) . Сан-Франциско, Калифорния, США: IEEE. стр. 324–325. doi :10.1109/ISSCC.2001.912658. ISBN 978-0-7803-6608-4.
  23. ^ FX1 Ключевые характеристики и характеристики (PDF) , Fujitsu , 19 февраля 2008 г., архивировано (PDF) из оригинала 18 января 2012 г. , извлечено 6 декабря 2011 г.
  24. ^ Тремблей, Марк ; Чаудхри, Шейлендер (19 февраля 2008 г.), «Процессор третьего поколения 65 нм 16-ядерный 32-поточный плюс 32-поточный Scout-Thread CMT SPARC(R)» (PDF) , OpenSPARC , Sun Microsystems , заархивировано из оригинала 16 января 2013 г. , извлечено 6 декабря 2011 г.
  25. Вэнс, Эшли (15 июня 2009 г.), «Sun Is Said to Cancel Big Chip Project», The New York Times , заархивировано из оригинала 4 ноября 2011 г. , извлечено 23 мая 2010 г.
  26. ^ "Fujitsu демонстрирует SPARC64 VII", heise online , 28 августа 2008 г., заархивировано из оригинала 23 мая 2013 г. , извлечено 6 декабря 2011 г.
  27. Барак, Сильви (14 мая 2009 г.), «Fujitsu представляет самый быстрый процессор в мире», The Inquirer , заархивировано из оригинала 17 мая 2009 г. , извлечено 6 декабря 2011 г.{{citation}}: CS1 maint: неподходящий URL ( ссылка )
  28. ^ "Sparc T3processor" (PDF) , Oracle Corporation , архив (PDF) из оригинала 24 апреля 2016 г. , извлечено 6 декабря 2011 г.
  29. Морган, Тимоти Прикетт (3 декабря 2010 г.), «Эллисон: Sparc T4 выйдет в следующем году», The Register , заархивировано из оригинала 7 марта 2012 г. , извлечено 6 декабря 2011 г.
  30. ^ "Архитектура серверов SPARC Enterprise M-series" (PDF) , Fujitsu , апрель 2011 г., архивировано (PDF) из оригинала 4 марта 2016 г. , извлечено 5 ноября 2011 г.
  31. Морган, Тимоти Прикетт (22 августа 2011 г.), «Oracle's Sparc T4 chip», The Register , заархивировано из оригинала 30 ноября 2011 г. , извлечено 6 декабря 2011 г.
  32. Морган, Тимоти Прикетт (21 ноября 2011 г.), «Fujitsu представляет 16-ядерный Sparc64 super stunner», The Register , заархивировано из оригинала 24 ноября 2011 г. , извлечено 8 декабря 2011 г.
  33. ^ "Fujitsu Launches PRIMEHPC FX10 Supercomputer", Fujitsu , 7 ноября 2011 г., архивировано из оригинала 18 января 2012 г. , извлечено 3 февраля 2012 г.
  34. ^ "Ixfx Download" (PDF) . fujitsu.com. Архивировано (PDF) из оригинала 18 мая 2015 г. Получено 17 мая 2015 г.
  35. ^ "Images of SPARC64" (PDF) . fujitsu.com. Архивировано (PDF) из оригинала 22 апреля 2016 г. Получено 29 августа 2017 г.
  36. ^ "Oracle Products" (PDF) . oracle.com. Архивировано (PDF) из оригинала 8 марта 2017 г. Получено 29 августа 2017 г.
  37. ^ "Oracle SPARC products" (PDF) . oracle.com. Архивировано (PDF) из оригинала 26 сентября 2018 г. Получено 29 августа 2017 г.
  38. ^ "Fujitsu Presentation pdf" (PDF) . fujitsu.com. Архивировано (PDF) из оригинала 22 апреля 2016 г. Получено 29 августа 2017 г.
  39. ^ "Fujitsu Global Images" (PDF) . fujitsu.com. Архивировано из оригинала (PDF) 18 мая 2015 г. Получено 29 августа 2017 г.
  40. ^ "M7: Next Generation SPARC. Hotchips 26" (PDF) . swisdev.oracle.com. Архивировано (PDF) из оригинала 31 октября 2014 г. . Получено 12 августа 2014 г. .
  41. ^ "Архитектура серверов Oracle SPARC T7 и SPARC M7" (PDF) . oracle.com. Архивировано (PDF) из оригинала 6 ноября 2015 г. Получено 10 октября 2015 г.
  42. ^ Винайк, Басант; Пури, Рахул (24 августа 2015 г.). «Hot Chips – 23–25 августа 2015 г. – Конференция, день 1 – Процессор Sonoma от Oracle: передовой недорогой процессор SPARC для корпоративных рабочих нагрузок» (PDF) . hotchips.org. Архивировано (PDF) из оригинала 9 октября 2022 г. . Получено 25 января 2022 г. .
  43. ^ "Blueprints reveals: Oracle crams Sparc M7 and InfiniBand into cheap 'Sonoma' chips". theregister.co.uk. Архивировано из оригинала 29 августа 2017 г. Получено 29 августа 2017 г.
  44. ^ "Документы Fujitsu" (PDF) . fujitsu.com. Архивировано (PDF) из оригинала 29 августа 2017 г. . Получено 29 августа 2017 г. .
  45. ^ "Новые системы Oracle SPARC обеспечивают в 2-7 раз лучшую производительность, безопасность и эффективность, чем системы на базе Intel". oracle.com. Архивировано из оригинала 18 сентября 2017 г. Получено 18 сентября 2017 г.
  46. ^ "Процессор SPARC M8" (PDF) . oracle.com. Архивировано (PDF) из оригинала 28 февраля 2019 г. Получено 18 сентября 2017 г.
  47. Маклафлин, Джон (7 июля 1993 г.), «Intergraph переносит Windows NT на SPARC», The Florida SunFlash , 55 (11), архивировано из оригинала 23 июля 2014 г. , извлечено 6 декабря 2011 г.
  48. Проект: Linux для SPARC - oss.oracle.com, 12 октября 2015 г., заархивировано из оригинала 8 декабря 2015 г. , извлечено 4 декабря 2015 г.
  49. ^ "TOP500 List (1-100)", TOP500 , июнь 2011 г., архивировано из оригинала 23 июня 2011 г. , извлечено 6 декабря 2011 г.
  50. ^ "The Green500 List", Green500 , июнь 2011 г., архивировано из оригинала 3 июля 2011 г.
  51. ^ "Top500 List – November 2012 | TOP500 Supercomputer Sites", TOP500 , ноябрь 2012, архивировано из оригинала 13 ноября 2012 , извлечено 8 января 2013
  52. ^ "The Green500 List – November 2012 | The Green500", Green500 , ноябрь 2012, архивировано из оригинала 6 июня 2016 , извлечено 8 января 2013
  53. ^ "Tianhe-2 (MilkyWay-2)", TOP500 , май 2015 г., архивировано из оригинала 26 мая 2015 г. , извлечено 27 мая 2015 г.
  54. Keane, Andy, «Tesla Supercomputing» ( mp4 ) , Nvidia , заархивировано из оригинала 25 февраля 2021 г. , извлечено 6 декабря 2011 г.
  55. ^ Тибодо, Патрик (4 ноября 2010 г.). «США говорят, что Китай строит «полностью местный» суперкомпьютер». Computerworld . Архивировано из оригинала 11 октября 2012 г. . Получено 28 августа 2017 г. .

Внешние ссылки