PCI Express

PCI Express (англ. Peripheral Component Interconnect Express), или PCIe, или PCI-e; также известная как 3GIO (3rd Generation I/O) — компьютерная шина (хотя на физическом уровне шиной не является, будучи соединением типа «точка-точка»), использующая программную модель шины PCI и высокопроизводительный физический протокол, основанный на последовательной передаче данных.

PCI Express
Изображение логотипа
Слоты (сверху вниз): PCIe x4, PCIe x16, PCIe x1, PCIe x16, стандартный слот PCI
Слоты (сверху вниз): PCIe x4, PCIe x16, PCIe x1, PCIe x16, стандартный слот PCI
Тип шина
История
Разработчик Intel, PCI SIG, Dell, HP, IBM
Разработано 2003
Вытеснил AGP, PCI-X, PCI
Спецификации
Горячая замена нет
Внешнее да
Параметры данных
Пропускная способность от 500 Мб/с до 512 Гб/с[1]
Протокол последовательный
Логотип Викисклада Медиафайлы на Викискладе

Разработка стандарта PCI Express была начата фирмой Intel после отказа от шины InfiniBand. Официально первая базовая спецификация PCI Express появилась в июле 2002 года[2][3]. Развитием стандарта PCI Express занимается организация PCI Special Interest Group. Первые продукты (материнские платы и видеокарты) с поддержкой стандарта PCI Express были представлены в середине 2004 года[4].

Описание

править

В отличие от стандарта PCI, использовавшего для передачи данных общую шину с подключением параллельно нескольких устройств, PCI Express, в общем случае, является пакетной сетью с топологией типа звезда.

Устройства PCI Express взаимодействуют между собой через среду, образованную коммутаторами, при этом каждое устройство напрямую связано соединением типа точка-точка с коммутатором.

Кроме того, шиной PCI Express поддерживается[2][3]:

Шина PCI Express нацелена на использование только в качестве локальной шины. Так как программная модель PCI Express во многом унаследована от PCI, то существующие системы и контроллеры могут быть доработаны для использования шины PCI Express заменой только физического уровня, без доработки программного обеспечения. Высокая пиковая производительность шины PCI Express позволяет использовать её вместо шин AGP и тем более PCI и PCI-X[3]. Де-факто PCI Express заменила эти шины в персональных компьютерах.

Протокол

править
 
Видеокарта для PCI Express x16

Для подключения устройства PCI Express используется двунаправленное последовательное соединение типа точка-точка, называемое линией (англ. lane — полоса, ряд); это резко отличается от PCI, в которой все устройства подключаются к общей 32-разрядной параллельной двунаправленной шине.

Соединение (англ. link — связь, соединение) между двумя устройствами PCI Express состоит из одной (×1) или нескольких (×2, ×4, ×8, ×16 и ×32) двунаправленных последовательных линий[2][3]. Каждое устройство должно поддерживать соединение, по крайней мере, с одной линией (×1).

На электрическом уровне каждое соединение использует низковольтную дифференциальную передачу сигнала (LVDS), приём и передача информации производится каждым устройством PCI Express по отдельным двум проводникам, таким образом, в простейшем случае устройство подключается к коммутатору PCI Express четырьмя проводниками.

Использование подобного подхода имеет следующие преимущества:

  • карта PCI Express помещается и корректно работает в любом слоте той же или большей пропускной способности (например, карта ×1 будет работать в слотах ×4 и ×16);
  • слот большего физического размера может использовать не все линии (например, к слоту ×16 можно подвести проводники передачи информации, соответствующие ×1 или ×8, и всё это будет нормально функционировать; однако при этом необходимо подключить все проводники питания и заземления, необходимые для слота ×16).

В обоих случаях на шине PCI Express будет использоваться максимальное количество линий, доступных как для карты, так и для слота. Однако это не позволяет устройству работать в слоте, предназначенном для карт с меньшей пропускной способностью шины PCI Express. Например, карта ×4 физически не поместится в стандартный слот ×1, несмотря на то, что она могла бы работать в слоте ×1 с использованием только одной линии. На некоторых материнских платах можно встретить нестандартные слоты ×1 и ×4, у которых отсутствует крайняя перегородка, таким образом, в них можно устанавливать карты большей длины, чем разъём. При этом не обеспечивается питание и заземление выступающей части карты, что может привести к различным проблемам.

PCI Express пересылает всю управляющую информацию, включая прерывания, через те же линии, что используются для передачи данных. Последовательный протокол никогда не может быть заблокирован, таким образом задержки шины PCI Express вполне сравнимы с таковыми для шины PCI (заметим, что шина PCI для передачи сигнала о запросе на прерывание использует отдельные физические линии IRQ#A, IRQ#B, IRQ#C, IRQ#D).

Во всех высокоскоростных последовательных протоколах (например, гигабитный Ethernet) информация о синхронизации должна быть встроена в передаваемый сигнал. На физическом уровне PCI Express использует метод канального кодирования 8b/10b (8 бит в десяти, избыточность — 20 %)[2][3] для устранения постоянной составляющей в передаваемом сигнале и для встраивания информации о синхронизации в поток данных. Начиная с версии PCI Express 3.0 используется более экономное кодирование 128b/130b с избыточностью 1,5 %.

Некоторые протоколы (например, SONET/SDH) используют метод, который называется скремблинг (англ. scrambling) для встраивания информации о синхронизации в поток данных и для «размывания» спектра передаваемого сигнала. Спецификация PCI Express также предусматривает функцию скремблинга, но скремблинг PCI Express отличается от такового для SONET.

Спецификации стандарта

править

PCI-Express 2.0

править

Группа PCI-SIG выпустила спецификацию PCI Express 2.0 15 января 2007 года. Основные нововведения в PCI Express 2.0:

  • Увеличенная пропускная способность: ПСП одной линии — 500 МБайт/с, или 5 ГТ/с (Гигатранзакций/с).
  • Внесены усовершенствования в протокол передачи между устройствами и программную модель.
  • Динамическое управление скоростью (для управления скоростью работы связи).
  • Оповещение о пропускной способности (для оповещения ПО об изменениях скорости и ширины шины).
  • Расширения структуры возможностей[уточнить] — расширение управляющих регистров для лучшего управления устройствами, слотами и интерконнектом).
  • Службы управления доступом — опциональные возможности управления транзакциями точка-точка.
  • Управление таймаутом выполнения.
  • Сброс на уровне функций — опциональный механизм для сброса функций (англ. PCI functions) внутри устройства (англ. PCI device).
  • Переопределение предела по мощности (для переопределения лимита мощности слота при присоединении устройств, потребляющих бо́льшую мощность).

PCI-Express 2.0 полностью совместим с PCI Express 1.1 (старые видеокарты будут работать в системных платах с новыми разъёмами, но только на скорости 2,5 ГТ/с, так как старые чипсеты не могут поддерживать удвоенную скорость передачи данных; новые видеоадаптеры будут без проблем работать в старых разъёмах стандарта PCI Express 1.х.).

Внешняя кабельная спецификация PCIe

7 февраля 2007 года PCI-SIG выпустила спецификацию внешней кабельной системы PCIe. Новая спецификация позволяет использовать кабели длиной до 10 метров, работающие с пропускной способностью 2,5 ГТ/с.

PCI-Express 2.1

править

По физическим характеристикам (скорость, разъём) соответствует 2.0, в программной части добавлены функции, которые в полной мере планируют внедрить в версии 3.0. Так как большинство системных плат продаётся с версией 2.0, наличие только видеокарты с 2.1 не даёт задействовать режим 2.1.

PCI-Express 3.0

править

В ноябре 2010 года[5] были утверждены спецификации версии PCI Express 3.0. Интерфейс обладает скоростью передачи данных 8 GT/s (Гигатранзакций/с). Но, несмотря на это, его реальная пропускная способность всё равно была увеличена вдвое по сравнению со стандартом PCI Express 2.0. Этого удалось достигнуть благодаря более экономичной схеме кодирования 128b/130b, когда 128 бит данных, пересылаемых по шине, кодируются 130 битами. При этом сохранилась полная совместимость с предыдущими версиями PCI Express. Карты PCI Express 1.x и 2.x будут работать в разъёме 3.0 и, наоборот, карта PCI Express 3.0 будет работать в разъёмах 1.х и 2.х (хотя и не сможет раскрыть весь свой скоростной потенциал). Для 4 линий скорость передачи данных составляет 4 Гбайт/с, для 16 линий — 16 Гбайт/с[6].

По данным PCI-SIG, первые тесты PCI-Express 3.0 начались в 2011 году, средства для проверки совместимости для партнёров появились лишь в середине 2011 года, а реальные устройства ― только в 2012 году.

PCI-Express 4.0

править

PCI-SIG заявила, что PCI-Express 4.0 может быть стандартизирован до конца 2016 года[7], однако на середину 2016 года, когда ряд чипов уже готовился к изготовлению, СМИ сообщали, что стандартизация ожидается в начале 2017[8]. Позднее сроки стандартизации были перенесены, и спецификация была опубликована только 5 октября 2017 года[9].

По сравнению со спецификацией PCI Express 3.0 максимальная скорость передачи данных по шине PCI Express удвоена — с 8 до 16 GT/s. Кроме того, уменьшены задержки, улучшена масштабируемость и поддержка виртуализации[10]. Для 4 линий скорость передачи данных составляет 8 Гбайт/с, для 16 линий — 32 Гбайт/с[6].

7 ноября 2018 года AMD объявила о планах выпуска в продажу в четвёртом квартале 2018 года первого GPU с поддержкой PCI-Express 4.0 x16[11]. 27 мая 2019 года компания Gigabyte объявила о выпуске системных плат серии X570 Aorus. По словам производителя, эти платы «открывают эру PCIe 4.0»[12].

PCI-Express 5.0

править

В мае 2019 года появилась окончательная спецификация стандарта PCI Express 5.0[6]. Скорость передачи данных по шине PCI-Express составила 32 GT/s. Ожидается, что подобная скорость положительно повлияет на проекты, связанные с виртуальной реальностью[13]. Для 4 линий скорость передачи данных составляет 15.753 ГБайт/с, для 16 линий — 63.015 ГБайт/с[6], обе скорости высчитаны с сокращением до тысячных, округлением в меньшую и даны в гига, а не гибибайтах.

PCI-Express 6.0

править

11 января 2022 года PCI-SIG официально объявила о выпуске окончательной спецификации PCI Express 6.0. По сравнению с PCIe 5.0 произошло удвоение пропускной способности. Так, скорость передачи данных составляет 64 ГТ/с, а для 16 линий 256 Гбайт/с. Кроме того, посредством блока управления потоком[англ.] (англ. Flit), использовано кодирование, позволяющее применять упрощённую систему коррекции ошибок Low-latency Forward Error Correction (FEC), передачу по схеме с амплитудно-импульсной модуляцией (PAM4) и алгоритма CRC (англ. Cyclic redundancy check), проверяющий без задержек целостность данных[14].

PCI-Express 7.0

править

В июне 2022 PCI-SIG анонсировал разработку спецификации PCI-E 7.0. Она будет обеспечивать скорость передачи данных до 128 ГТ/с и до 512 ГБ/с в каждом направлении в конфигурации ×16 с использованием той же сигнализации PAM4, что и в версии PCI-E 6.0. Удвоение скорости передачи данных будет достигнуто за счет точной настройки параметров канала для уменьшения потерь сигнала и повышения энергоэффективности. Ожидается, что спецификация будет окончательна принята в 2025 году[15][16][17].

Пропускная способность

править

PCIe является полнодуплексным[18] протоколом, то есть потоки приёма и передачи имеют независимые каналы и одинаковые максимальные скорости. Скорость компьютерных шин принято выражать в гигатранзакциях в секунду. За 1 транзакцию передаётся одно кодовое слово. Для расчёта пропускной способности 1 линии шины необходимо учесть кодировку 8b/10b (англ. 8b/10b encoding)[2][3] (для PCI-E 3.0 и выше — 128b/130b (англ. 128b/130b encoding).

Например, пропускная способность линии PCIe 1.0 составляет:

2,5 ГТ/с · 8/10 бит/Т = 2 Гбит/с = 0,25 ГБайт/с
А, пропускная способность одной линии PCIe 3.0-3.1:
8 ГТ/с · 128/130 бит/Т = 7,88 Гбит/с = 0,98 ГБайт/с ( 15.75 для 16 линий)
Несмотря на то, что стандарт допускает 32 линии на порт, такие решения физически достаточно громоздки для прямой реализации и выпускаются только в проприетарных разъёмах.
Пропускная способность PCI Express в дуплексе, Гбайт/с[1]
Год
выпуска
Версия
PCI Express
Кодирование Скорость
передачи
одной
линии
Пропускная способность на x линий полудуплекс
×1 ×2 ×4 ×8 ×16
2002 1.0-1.1 8b/10b 2,5 ГТ/с 0.250 GB/s 0.500 GB/s 1.000 GB/s 2.000 GB/s 4.000 GB/s
2007 2.0-2.1 8b/10b 5 ГТ/с 500 МБайт/с = 0,5 ГБайт/с 1 ГБайт/с 2 ГБайт/с 4 ГБайт/с 8 ГБайт/с
2010 3.0-3.1 128b/130b 8 ГТ/с 1 ГБайт/с 2 ГБайт/с 4 ГБайт/с 8 ГБайт/с 16 ГБайт/с
2017 4.0 128b/130b 16 ГТ/с 2 ГБайт/с 4 ГБайт/с 8 ГБайт/с 16 ГБайт/с 32 ГБайт/с (256 Gbit/s)
2019 5.0 128b/130b 32 ГТ/с 4 ГБайт/с 8 ГБайт/с 16 ГБайт/с 32 ГБайт/с 64 ГБайт/с (512 Gbit/s)
2022 6.0 242B/256B, PAM-4, FEC, FLIT 64 ГТ/с 8 ГБайт/с 16 ГБайт/с 32 ГБайт/с 64 ГБайт/с 128 ГБайт/с (1024 Gbit/s)
2025 7.0 242B/256B, PAM-4, FEC, FLIT 128 ГТ/с 16 ГБайт/с 32 ГБайт/с 64 ГБайт/с 128 ГБайт/с 256 ГБайт/с (2048 Gbit/s)

Интерфейсы

править
  • MiniCard (Mini PCIe) — замена форм-фактора Mini PCI. На разъём Mini Card выведены шины: ×1 PCIe, USB 2.0 и SMBus.
    • M.2 — вторая версия Mini PCIe, до ×4 PCIe и SATA.
  • ExpressCard — подобен форм-фактору PCMCIA. На разъём ExpressCard выведены шины ×1 PCIe и USB 2.0, карты ExpressCard поддерживают горячее подключение.
  • AdvancedTCA, MicroTCA — форм-фактор для модульного телекоммуникационного оборудования[2].
  • Mobile PCI Express Module (MXM) — промышленный форм-фактор, созданный для ноутбуков фирмой NVIDIA. Его используют для подключения графических ускорителей.
  • Кабельные спецификации PCI Express позволяют доводить длину одного соединения до десятков метров, что делает возможным создание ЭВМ, периферийные устройства которой находятся на значительном удалении[2][3].
  • StackPC — спецификация для построения наращиваемых компьютерных систем. Данная спецификация описывает разъёмы расширения StackPC, FPE и их взаимное расположение.

PCI Express ×1

править
См. также M.2

Mini PCI Express — формат шины PCI Express для портативных устройств.

Для этого стандарта разъёма выпускается много периферийных устройств:

  • WiFi-карты
  • WiMax-карты
  • GSM-модемы
  • GPS-приёмники
  • SSD-накопители — использует нестандартную распиновку разъёма Mini PCI-E (SSD Mini PCI Express)
  • Контроллеры USB (2.0 или 3.0), SATA (I, II или III)
  • Контроллер COM-портов (RS232)
  • SMBus
  • Выводы для индикаторных светодиодов
  • Выводы подключения SIM-карт (для GSM WCDMA)[19]
  • Имеет зарезервированные контакты (для будущих устройств)
  • Питание 1,5 В и 3,3 В
 
MiniPCI и MiniPCI Express

SSD Mini PCI Express

править
  • PATA
  • SATA
  • USB
  • Питание 3.3 В

ExpressCard

править

Слоты ExpressCard применяются в ноутбуках для подключения:[20]

  • Плат SSD накопителей
  • Видеокарт
  • Контроллеров 1394/FireWire (iLINK)
  • Док-станций
  • Измерительных приборов
  • Адаптеров карт памяти (CF, MS, SD, xD, и т. д.)
  • Сетевых адаптеров
  • Контроллеров параллельных и последовательных портов
  • Адаптеров PC Card/PCMCIA
  • Дистанционного управления
  • Контроллеров SATA
  • Адаптеров SmartCard
  • ТВ-тюнеров
  • Контроллеров USB
  • Беспроводных сетевых адаптеров Wi-Fi
  • Беспроводных широкополосных интернет-адаптеров (3G, CDMA, EVDO, GPRS, UMTS, и т. д.)
  • Звуковых карт для домашнего мультимедиа и профессиональных аудиоинтерфейсов.

Оптический

править

В 2023 году комитет по стандартизации PCI-SIG начал изучать возможность использования в PCIe 8.0 или 9.0 оптических соединений вместо электрических. Это позволит сэкономить энергию, снизить тепловыделение и повысит скорость передачи данных[21][22][23][24].

Конкурирующие протоколы

править

Кроме PCI Express, существует ещё ряд высокоскоростных стандартизованных последовательных интерфейсов, вот некоторые из них: HyperTransport, InfiniBand, RapidIO, и StarFabric. Каждый интерфейс имеет своих сторонников среди промышленных компаний, так как на разработку спецификаций протоколов уже ушли значительные суммы, и каждый консорциум стремится подчеркнуть преимущества именно своего интерфейса над другими.

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

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

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

Положение PCI-Express — между описанными подходами, так как шина PCI Express предназначена для работы в качестве локальной шины, нежели шины процессор-память или сложной маршрутизируемой сети. Кроме того, PCI Express изначально задумывалась как шина, логически совместимая с шиной PCI, что также внесло свои ограничения.

Также существуют специализированные шины для подключения чипсетов (между северным и южным мостом), созданные на базе физического протокола PCI Express (обычно ×4), но с иными логическими протоколами. Например, в платформах Intel используется шина DMI, а в системах AMD с чипсетом AMD Fusion — шина UMI[англ.][25].

См. также

править

Примечания

править
  1. 1 2 PCI-SIG Speeds and Feeds Graphic Final. Дата обращения: 9 августа 2023. Архивировано 10 августа 2023 года.
  2. 1 2 3 4 5 6 7 Слюсар В. И. Новые стандарты промышленных компьютерных систем. //Электроника: наука, технология, бизнес. — 2005. — № 6. — С. 52 — 53. Скачать PDF файл Архивная копия от 4 марта 2016 на Wayback Machine
  3. 1 2 3 4 5 6 7 Слюсар В. И. PCI Express. Лицо стандарта.// Мир автоматизации. — 2006. — № 1. — C. 38 — 41. [1] Архивная копия от 27 августа 2018 на Wayback Machine
  4. Первая проба PCI-Express в графике
  5. Утверждена спецификация PCI-Express 3.0 — скорость удвоена. Дата обращения: 15 мая 2018. Архивировано из оригинала 20 ноября 2010 года.
  6. 1 2 3 4 Андрей Шиллинг. PCI Express 5.0 - представлены финальные спецификации. Hardwareluxx (30 мая 2019). Дата обращения: 9 августа 2023. Архивировано 10 августа 2023 года.
  7. PCI Express® 4.0 FAQ: PCI SIG (18 декабря 2014). Архивировано из оригинала 18 декабря 2014 года.
  8. PCIe 4.0 Heads to Fab, 5.0 to Lab Архивная копия от 28 августа 2016 на Wayback Machine / EETimes, 2016-06-28: «won’t be final until early next year» (англ.)
  9. Specifications | PCI-SIG (англ.). pcisig.com. Дата обращения: 18 января 2018. Архивировано 18 января 2018 года.
  10. PCIe 4.0 blog. Дата обращения: 18 января 2018. Архивировано 27 октября 2017 года.
  11. AMD Radeon Instinct MI60: первый ускоритель вычислений на 7-нм Vega. Дата обращения: 7 ноября 2018. Архивировано 7 ноября 2018 года.
  12. GIGABYTE Advances To PCIe 4.0 With X570 AORUS Motherboards | News - GIGABYTE Global. GIGABYTE. Дата обращения: 27 мая 2019. Архивировано 27 мая 2019 года.
  13. "Hot Chips 2017: We'll See PCIe 4.0 This Year, PCIe 5.0 In 2019". Tom's Hardware (англ.). 2017-08-29. Дата обращения: 18 января 2018.
  14. Николай Хижняк. Приняты окончательные спецификации стандарта PCIe 6.0 — первые продукты появятся через 1-2 года. 3DNews (11 января 2022). Дата обращения: 9 августа 2023. Архивировано 10 августа 2023 года.
  15. Michael Crider. PCIe 7.0 is coming sooner than you think, and ludicrously fast (англ.). PCWorld (14 июня 2022). Дата обращения: 9 августа 2023. Архивировано 10 августа 2023 года.
  16. Paul Alcorn. PCIe 7.0 to Reach 512 GB/s, Arriving in 2025 (англ.). Tom’s Hardware (25 июня 2022). Дата обращения: 9 августа 2023. Архивировано 10 августа 2023 года.
  17. Николай Хижняк. Анонсирован стандарт PCIe 7.0 — в четыре раза быстрее PCIe 5.0, но продукты с ним выйдут ещё не скоро. 3DNews (21 июня 2022). Дата обращения: 9 августа 2023. Архивировано 10 августа 2023 года.
  18. PCI Express 3.0. Frequently Asked Questions. PCI-SIG. Retrieved 23 November 2008. Архивировано 18 февраля 2010 года. (англ.)
  19. PCI Express Mini Card (Mini PCIe) распиновка и описание @ pinouts.ru. pinouts.ru. Дата обращения: 28 июля 2022. Архивировано 1 июня 2022 года.
  20. ExpressCard. Where to Buy page. Дата обращения: 10 апреля 2010. Архивировано из оригинала 16 февраля 2011 года.
  21. Meghan Zea. PCI-SIG Exploring an Optical Interconnect to Enable Higher PCIe Technology Performance (англ.). Business Wire (2 августа 2023). Дата обращения: 9 августа 2023. Архивировано 7 августа 2023 года.
  22. Ryan Smith. PCI-SIG Forms Optical Workgroup - Lighting The Way To PCIe's Future (англ.). AnandTech (2 августа 2023). Дата обращения: 9 августа 2023. Архивировано 10 августа 2023 года.
  23. Mark Hachman. PCI Express explores PC tech that will run on light (англ.). PCWorld (2 августа 2023). Дата обращения: 9 августа 2023. Архивировано 10 августа 2023 года.
  24. Павел Котов. Стартовала разработка оптической версии PCI Express, но реальные продукты появятся нескоро. 3DNews (3 августа 2023). Дата обращения: 9 августа 2023. Архивировано 10 августа 2023 года.
  25. Scott Mueller. «Hub Architecture», «Other Processor/Chipset Interconnects» // Upgrading and Repairing PCs. 21st edition (англ.). — Que Publishing, 2013-03-07. — P. 187—188. — ISBN 978-0-13-310536-0. Архивировано 2 августа 2017 года.

Литература

править
  • Ravi Budruk, Don Anderson, Tom Shanley. PCI Express System Architecture. — Addison-Wesley Professional, 1999. — С. 832. — (PC System Architecture Series). — ISBN 978-0201309744.
  • Doug Abbott. PCI Bus Demystified. — 2-е. — Newnes, 2004. — С. 250. — (Demystifying Technology Series). — ISBN 978-0750677394.

Ссылки

править
  NODES
3d 3
coding 2
mac 4
os 2