Что такое pci драйвер. Как найти PCI устройства без операционной системы. Отличия PCI Express от PCI

  • 02.04.2019

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

Итак, для начала давайте кратко ответим на такой вопрос, что же вообще такое PCI Express и PCI.

Что такое PCI Express и PCI?

PCI – это компьютерная параллельнаяшина ввода-вывода для подключения периферийных устройств к материнской плате компьютера. PCI используется для подключения: видеокарт, звуковых карт, сетевых карт, TV-тюнеров и других устройств. Интерфейс PCI является устаревшим, поэтому найти, например, современную видеокарту, которая подключается через PCI, наверное, не получится.

PCI Express (PCIe или PCI-E) - это компьютерная последовательная шина ввода-вывода для подключения периферийных устройств к материнской плате компьютера. Т.е. при этом уже используется двунаправленное последовательное соединение, которое может иметь несколько линий (x1, x2, x4, x8, x12, x16 и x32) чем больше таких линий, тем выше пропускная способность у шины PCI-E. Интерфейс PCI Express используется для подключения таких устройств как: видеокарты, звуковые карты, сетевые карты, SSD накопители и другие.

Существует несколько версий интерфейса PCI-E это: 1.0, 2.0 и 3.0 (скоро выйдет и версия 4.0 ). Обозначается данный интерфейс обычно, например, вот так PCI-E 3.0 x16 , что означает версия PCI Express 3.0 с 16 линиями.

Если говорить о том будет ли работать, например, видеокарта, которая имеет интерфейсPCI-E 3.0 на материнской плате, которая поддерживает только PCI-E 2.0 или 1.0, так вот разработчики заявляют, что все работать будет, только конечно учтите, что пропускная способность будет ограничена возможностями материнской платы. Поэтому в этом случае переплачивать за видеокарту с более новой версией PCI Express я думаю, не стоит (если только на будущее, т.е. Вы, планируете приобрести новую материнскую плату с PCI-E 3.0 ). Также и наоборот допустим, у Вас материнская плата поддерживает версию PCI Express 3.0, а видеокарта версию скажем 1.0, то такая конфигурация также должна работать, но только с возможностями PCI-E 1.0, т.е. здесь никакого ограничения нет, так как видеокарта в этом случае будет работать на пределе своих возможностей.

Отличия PCI Express от PCI

Основное отличие в характеристиках это, конечно же, пропускная способность, у PCI Express она значительно выше, например, у PCI на частоте 66 МГц пропускная способность 266 Мб/сек, а у PCI-E 3.0 (x16) 32 Гб/сек .

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

Слоты расширения PCI Express и PCI на материнских платах

Слоты PCI и AGP

Слоты PCI-E x1, PCI-E x16 и PCI

Интерфейсы PCI Express на видеокартах

На этом у меня все, пока!

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

В качестве минимальной базы для работы с PCI-устройствами будем использовать ядро, поддерживающее спецификацию Multiboot. Так удастся избежать необходимости писать собственный загрузочный сектор и загрузчик (loader). Кроме того, этот вопрос и так отлично освещен в интернете. В качестве загрузчика будет выступать GRUB. Грузиться мы будем с флэшки, так как с нее удобно загружать и виртуальную, и реальную машину. В качестве виртуальной машины будем использовать QEMU. В качестве реальной машины должна выступать машина с обычным BIOS-ом (не UEFI), поддерживающим загрузку с USB-HDD (обычно присутствует опция Legacy USB support). Для работы понадобятся Ubuntu Linux со следующими программами: expect, qemu, grub (их можно легко установить при помощи команды sudo apt-get install). Используемый gcc должен компилировать 32х битный код.

Рассмотрим первый шаг – создание ядра, поддерживающего спецификацию Multiboot. В случае использования GRUB-а в качестве загрузчика ядро будет создаваться из 3-х файлов:
Kernel.c – основной файл с кодом нашей программы и процедурой main();
Loader.s – содержит заголовок мультизагрузчика для GRUB;
Linker.ld – скрипт компоновщика ld, в котором в частности указывается, по какому адресу будет располагаться ядро.

Содержимое Linker.ld:

ENTRY (loader) SECTIONS { . = 0x00100000; .text ALIGN (0x1000) : { *(.text) } .rodata ALIGN (0x1000) : { *(.rodata*) } .data ALIGN (0x1000) : { *(.data) } .bss: { sbss = .; *(COMMON) *(.bss) ebss = .; } }

Скрипт компоновщика указывает, как слинковать уже скомпилированные объектные файлы. В первой строчке указано, что точкой входа в нашем ядре будет адрес с меткой «loader». Далее в скрипте указано, что начиная с адреса 0x00100000 (1Мб) будет располагаться секция text. Секции rodata, data и bss выровнены по 0x1000 (4Кб) и располагаются после секции text.

Содержимое Loader.s:

Global loader .set FLAGS, 0x0 .set MAGIC, 0x1BADB002 .set CHECKSUM, -(MAGIC + FLAGS) .align 4 .long MAGIC .long FLAGS .long CHECKSUM # reserve initial kernel stack space .set STACKSIZE, 0x4000 .lcomm stack, STACKSIZE .comm mbd, 4 .comm magic, 4 loader: movl $(stack + STACKSIZE), %esp movl %eax, magic movl %ebx, mbd call kmain cli hang: hlt jmp hang

GRUB после загрузки образа ядра с диска ищет в первых 8Кб загруженного образа сигнатуру 0x1BADB002. Сигнатура является первым полем заголовка мультизагрузки. Сам заголовок выглядит следующим образом:

Offset Type Field Name Note
0 u32 magic required
4 u32 flags required
8 u32 checksum required
12 u32 header_addr if flags is set
16 u32 load_addr if flags is set
20 u32 load_end_addr if flags is set
24 u32 bss_end_addr if flags is set
28 u32 entry_addr if flags is set
32 u32 mode_type if flags is set
36 u32 width if flags is set
40 u32 height if flags is set
44 u32 depth if flags is set

Заголовок должен включать в себя минимум 3 поля – magic, flag, checksum. Поле magic является сигнатурой и, как уже было сказано выше, всегда равно 0x1BADB002. Поле flag содержит дополнительные требования к состоянию машины на момент передачи управления ОС. В зависимости от значения этого поля может меняться набор полей в структуре Multiboot Information. Указатель на структуру Multiboot Information содержит регистр EBX в момент передачи управления загружаемому ядру. В нашем случае поле flag имеет значение 0, и заголовок мультизагрузки состоит только из 3-ех полей.

На момент передачи управления ядру процессор работает в защищенном режиме с выключенной страничной адресацией. Обработка прерываний от устройств отключена. GRUB не формирует стек для загружаемого ядра, и это первое что должна сделать операционная система. В нашем случае под стек выделяется 16Кб. Последней выполненной ассемблерной инструкцией будет инструкция call kmain, которая передает управление коду на C, а именно функции void kmain(void).

Содержимое kernel.c:

#include "printf.h" #include "screen.h" void kmain(void) { clear_screen(); printf(" -- Kernel started! -- n"); }

Пока здесь нет ничего интересного. С точки зрения загрузки в нем не должно присутствовать ничего специфичного, только точка входа для кода на С. Для вывода на экран была добавлена реализация функции printf, найденная на просторах Интернета, и несколько функций для работы с видеопамятью, таких как putchar, clear_screen.

Для сборки ядра будет использоваться следующий простой makefile:

CC = gcc CFLAGS = -Wall -nostdlib -fno-builtin -nostartfiles -nodefaultlibs LD = ld OBJFILES = loader.o printf.o screen.o pci.o kernel.o start: all cp ./kernel.bin ./flash/boot/grub/ expect ./grub_install.exp qemu /dev/sdb all: kernel.bin .s.o: as -o $@ $< .c.o: $(CC) $(CFLAGS) -o $@ -c $< kernel.bin: $(OBJFILES) $(LD) -T linker.ld -o $@ $^ clean: rm $(OBJFILES) kernel.bin

Теперь у нас есть ядро, которое можно загрузить. Пора проверить, что оно действительно загружается. Установим GRUB на флешку и скажем ему загружать наше ядро при старте. Для этого нужно выполнить следующие шаги:

1. Создать раздел на флешке, отформатировать его в файловую систему, поддерживаемую GRUB-ом (в нашем случае это файловая система FAT32). Мы воспользовались утилитой Disk Utility из комплекта Ubuntu, которая позволила создать раздел:

2. Примонтировать флешку и создать каталог /boot/grub/. Скопировать в него из /usr/lib файлы stage1, stage2, fat_stage1_5. Создать текстовый файл menu.lst в директории /boot/grub/ и записать в него

Timeout 5 default 0 title start_kernel root (hd0,0) kernel /boot/grub/kernel.bin

Для установки GRUB-а на флешку используется expect-скрипт в файле grub_install.exp. Его содержимое:

Log_user 0 spawn grub expect "grub> " send "root (hd1,0)r" expect "grub> " send "setup (hd1)r" expect "grub> " send "quitr" exit 0

В конкретном случае возможны другие номера дисков и названия устройств. В конечном итоге компиляция и запуск виртуальной машины должны выполняться командой make start. Эта команда из makefile выполнит установку GRUB на флэшку с использованием скрипта grub_install.exp, а затем запустит виртуальную машину QEMU с нашей программой. Поскольку все загружается с реальной флэшки, то с нее можно загрузить не только виртуальную машину QEMU, но и реальный компьютер.

Запущенная виртуальная машина QEMU с нашей программой выглядит следующим образом:


Теперь займемся основной задачей – перечисление всех имеющихся на компьютере PCI-устройств. PCI – это основная шина с устройствами на компьютере. В нее помимо обычных устройств, которые вставляются во всем известные слоты на материнской плате, также подключены устройства, вшитые в саму материнскую плату (так называемые On-board devices), а так же ряд контроллеров (например, USB) и мостов на другие шины (например, PCI-ISA bridge). Таким образом, PCI – это основная шина на компьютере, с которой начинается опрос всех его устройств.

С каждым PCI-устройством связана структура из 256-ти байт (PCI Configuration Space), в которой располагаются его настройки. Конфигурация устройства в конечном итоге сводится к записи и чтению данных из этой структуры. Для всех PCI-устройств чтение и запись данных происходит через 2 порта ввода-вывода:
0xcf8 - конфигурационный порт, в который записывается PCI-адрес;
0xcfc - порт данных, через который происходит чтение и запись данных по указанному в конфигурационном порту PCI-адресу.

При чтении данных из PCI Configuration Space можно получить информацию об устройстве, а записывая туда данные устройство можно настроить.

PCI-адрес представляет собой следующую 32-х битную структуру:

Бит 31 Биты 30 – 24 Биты 23 – 16 Биты 15 – 11 Биты 10 – 8 Биты 7 – 2 Биты 1 – 0
Всегда 1 Зарезервировано Номер шины Номер устройства Номер функции Номер регистра Всегда 0

Номер шины вместе с номером устройства идентифицируют физическое устройство на компьютере. Физическое устройство может включать в себя несколько логических, которые идентифицируются номером функции (например, плата видео захвата с контроллером Wi-Fi будет иметь, по крайней мере, две функции).

PCI Configuration Space условно разбита на регистры по 4 байта. Номер регистра, к которому происходит обращение, хранится с 2го по 7й биты в 32-х битном PCI-адресе. Поля структуры PCI Configuration Space, описывающей PCI-устройство, зависят от его типа. Но для всех типов устройств первые 4 регистра структуры содержат следующие поля:

Номер регистра Биты 31 - 24 Биты 23 – 16 Биты 15 – 8 Биты 7 – 0
0 Device ID Vendor ID
1 Status Command
2 Class code Subclass Prog IF Revision ID
3 BIST Header type Latency Timer Cache Line Size

Class code – описывает тип (класс) устройства с точки зрения функций, которые устройство выполняет (сетевой адаптер, видео карта и т.д.);
Vendor ID – идентификатор производителя устройства (у каждого производителя устройств в мире есть один или несколько таких уникальных идентификаторов). Эти номера выдаются международной организацией PCI SIG;
Device ID – уникальный идентификатор устройства (уникален для заданного Vendor ID). Их нумерацию определяет сам производитель.

По полям DeviceID (сокращенно DEV) и VendorID (сокращенно VEN) определяется драйвер, соответствующий этому устройству. Иногда для этого используется еще дополнительный идентификатор RevisionID (сокращенно REV). Другими словами, Windows, обнаруживая новое устройство в компьютере, использует числа VEN, DEV и REV для поиска соответствующих им драйверов у себя на диске или в Интернете, используя сервера Microsoft. Также эти номера можно встретить в диспетчере устройств:

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

Int ReadPCIDevHeader(u32 bus, u32 dev, u32 func, PCIDevHeader *p_pciDevice) { int i; if (p_pciDevice == 0) return 1; for (i = 0; i < sizeof(p_pciDevice->header)/sizeof(p_pciDevice->header); i++) ReadConfig32(bus, dev, func, i, &p_pciDevice->header[i]); if (p_pciDevice->option.vendorID == 0x0000 || p_pciDevice->option.vendorID == 0xffff || p_pciDevice->option.deviceID == 0xffff) return 1; return 0; } void kmain(void) { int bus; int dev; clear_screen(); printf(" -- Kernel started! -- n"); for (bus = 0; bus < PCI_MAX_BUSES; bus++) for (dev = 0; dev < PCI_MAX_DEVICES; dev++) { u32 func = 0; PCIDevHeader pci_device; if (ReadPCIDevHeader(bus, dev, func, &pci_device)) continue; PrintPCIDevHeader(bus, dev, func, &pci_device); if (pci_device.option.headerType & PCI_HEADERTYPE_MULTIFUNC) { for (func = 1; func < PCI_MAX_FUNCTIONS; func++) { if (ReadPCIDevHeader(bus, dev, func, &pci_device)) continue; PrintPCIDevHeader(bus, dev, func, &pci_device); } } } }

В данном коде происходит полный перебор номеров шин и номеров устройств в адресе, по которому происходит чтение. Если поле Header type содержит флаг PCI_HEADERTYPE_MULTIFUNC, то данное физическое устройство реализует несколько логических устройств, и при поиске PCI-устройств в адресе, записываемом в конфигурационный порт, нужно перебирать номер функции. Если VendorID имеет некорректное значение, то устройства с таким номером на этой шине нет. На Qemu этот код выводит следующий результат:


0x8086 – это VendorID оборудования компании Intel. DeviceID, равный 0x7000, соответствует устройству PIIX3 PCI-to-ISA Bridge. Загрузимся с получившейся флешки в VmWare Workstation 9.0. Список PCI-устройств оказался значительно длиннее и выглядит следующим образом:


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

Весной 1991 года компания Intel завершает разработку первой макетной версии шины PCI. Перед инженерами была поставлена задача разработать недорогое и производительное решение, которое позволило бы реализовать возможности процессоров 486, Pentium и Pentium Pro. Кроме того, было необходимо учесть ошибки, допущенные VESA при проектировании шины VLB (электрическая нагрузка не позволяла подключать более 3 плат расширения), а также реализовать автоматическую настройку устройств.

В 1992 году появляется первая версия шины PCI, Intel объявляет, что стандарт шины будет открытым, и создаёт PCI Special Interest Group. Благодаря этому любой заинтересованный разработчик получает возможность создавать устройства для шины PCI без необходимости приобретения лицензии. Первая версия шины имела тактовую частоту 33 МГц, могла быть 32- или 64-битной, а устройства могли работать с сигналами в 5 В или 3,3 В. Теоретически пропускная способность шины 133 Мбайт/с, однако в реальности пропускная способность составляла около 80 Мбайт/с.

Основные характеристики:


  • частота шины - 33,33 или 66,66 МГц, передача синхронная;
  • разрядность шины - 32 или 64 бита, шина мультиплексированная (адрес и данные передаются по одним и тем же линиям);
  • пиковая пропускная способность для 32-разрядного варианта, работающего на частоте 33,33 МГц - 133 Мбайт/с;
  • адресное пространство памяти - 32 бита (4 байта);
  • адресное пространство портов ввода-вывода - 32 бита (4 байта);
  • конфигурационное адресное пространство (для одной функции) - 256 байт;
  • напряжение - 3,3 или 5 В.

Фото разъемов:

MiniPCI - 124 pin
MiniPCI Express MiniSata/mSATA - 52 pin
Apple MBA SSD, 2012
Apple SSD, 2012
Apple PCIe SSD
MXM, Graphics Card, 230 / 232 pin

MXM2 NGIFF 75 pins

KEY A PCIe x2

KEY B PCIe x4 Sata SMBus

MXM3, Graphics Card, 314 pin
PCI 5V
PCI Universal
PCI-X 5v
AGP Universal
AGP 3.3 v
AGP 3.3 v + ADS Power
PCIe x1
PCIe x16
Custom PCIe
ISA 8bit

ISA 16bit
eISA
VESA
NuBus
PDS
PDS
Apple II / GS Expasion slot
PC/ XT / AT expasion bus 8 bit
ISA (industry standard architecture) - 16 bit
eISA
MBA - Micro Bus architecture 16 bit
MBA - Micro Bus architecture с видео 16 bit
MBA - Micro Bus architecture 32 bit
MBA - Micro Bus architecture с видео 32 bit
ISA 16 + VLB (VESA)
Processor Direct Slot PDS
601 Processor Direct Slot PDS
LC Processor Direct Slot PERCH
NuBus
PCI (Peripheral Computer Interconnect) - 5v
PCI 3.3v
CNR (Communications / network Riser)
AMR (Audio / Modem Riser)
ACR (Advanced communication Riser)
PCI-X (Периферийный PCI) 3.3v
PCI-X 5v
PCI 5v + RAID option - ARO
AGP 3.3v
AGP 1.5v
AGP Universal
AGP Pro 1.5v
AGP Pro 1.5v+ADC power
PCIe (peripheral component interconnect express) x1
PCIe x4
PCIe x8
PCIe x16

PCI 2.0

Первая версия базового стандарта, получившая широкое распространение, использовались как карты, так и слоты с сигнальным напряжением только 5 вольт. Пиковая пропускная способность - 133 Мбайт/с.

PCI 2.1 - 3.0

Отличались от версии 2.0 возможностью одновременной работы нескольких шинных задатчиков (англ. bus-master, т. н. конкурентный режим), а также появлением универсальных карт расширения, способных работать как в слотах, использующих напряжение 5 вольт, так и в слотах, использующих 3,3 вольта (с частотой 33 и 66 МГц соответственно). Пиковая пропускная способность для 33 МГц - 133 Мбайт/с, а для 66 МГц - 266 Мбайт/с.

  • Версия 2.1 - работа с картами, рассчитанными на напряжение 3,3 вольта, и наличие соответствующих линий питания являлись опциональными.
  • Версия 2.2 - сделанные в соответствии с этими стандартами карты расширения имеют универсальный ключ разъёма по питанию и способны работать во многих более поздних разновидностях слотов шины PCI, а также, в некоторых случаях, и в слотах версии 2.1.
  • Версия 2.3 - несовместима с картами PCI, рассчитанными на использование 5 вольт, несмотря на продолжающееся использование 32-битных слотов с 5-вольтовым ключом. Карты расширения имеют универсальный разъём, но не способны работать в 5-вольтовых слотах ранних версий (до 2.1 включительно).
  • Версия 3.0 - завершает переход на карты PCI 3,3 вольт, карты PCI 5 вольт больше не поддерживаются.

PCI 64

Расширение базового стандарта PCI, появившееся в версии 2.1, удваивающее число линий данных, и, следовательно, пропускную способность. Слот PCI 64 является удлинённой версией обычного PCI-слота. Формально совместимость 32-битных карт с 64-битным слотами (при условии наличия общего поддерживаемого сигнального напряжения) полная, а совместимость 64-битной карты с 32-битным слотами является ограниченной (в любом случае произойдёт потеря производительности). Работает на тактовой частоте 33 МГц. Пиковая пропускная способность - 266 Мбайт/с.

  • Версия 1 - использует слот PCI 64-бита и напряжение 5 вольт.
  • Версия 2 - использует слот PCI 64-бита и напряжение 3,3 вольта.

PCI 66

Версия PCI 66 является работающим на тактовой частоте 66 МГц развитием PCI 64; использует напряжение 3,3 вольта в слоте; карты имеют универсальный, либо форм-фактор на 3,3 В. Пиковая пропускная способность - 533 Мбайт/с.

PCI 64/66

Комбинация PCI 64 и PCI 66 позволяет вчетверо увеличить скорость передачи данных по сравнению с базовым стандартом PCI; использует 64-битные 3,3-вольтовые слоты, совместимые только с универсальными, и 3,3-вольтовые 32-битные карты расширения. Карты стандарта PCI64/66 имеют либо универсальный (но имеющий ограниченную совместимость с 32-битными слотами), либо 3,3-вольтовый форм-фактор (последний вариант принципиально не совместим с 32-битными 33-мегагерцовыми слотами популярных стандартов). Пиковая пропускная способность - 533 Мбайт/с.

PCI-X

PCI-X 1.0 - расширение шины PCI64 с добавлением двух новых частот работы, 100 и 133 МГц, а также механизма раздельных транзакций для улучшения производительности при одновременной работе нескольких устройств. Как правило, обратно совместима со всеми 3.3В и универсальными PCI-картами. PCI-X карты обычно выполняются в 64-бит 3,3 В формате и имеют ограниченную обратную совместимость со слотами PCI64/66, а некоторые PCI-X карты - в универсальном формате и способны работать (хотя практической ценности это почти не имеет) в обычном PCI 2.2/2.3. В сложных случаях для того, чтобы быть полностью уверенным в работоспособности комбинации из материнской платы и карты расширения, надо посмотреть таблицы совместимости (compatibility lists) производителей обоих устройств.

PCI-X 2.0

PCI-X 2.0 - дальнейшее расширение возможностей PCI-X 1.0; добавлены частоты 266 и 533 МГц, а также - коррекция ошибок чётности при передаче данных (ECC ). Допускает расщепление на 4 независимых 16-битных шины, что применяется исключительно во встраиваемых и промышленных системах ; сигнальное напряжение снижено до 1,5 В, но сохранена обратная совместимость разъёмов со всеми картами, использующими сигнальное напряжение 3,3 В. В настоящее время для не профессионального сегмента рынка высокопроизводительных компьютеров (мощных рабочих станций и серверов начального уровня), в которых находит применение шина PCI-X, выпускается крайне мало материнских плат с поддержкой шины. Примером материнской платы для такого сегмента является ASUS P5K WS. В профессиональном сегменте применяется в RAID-контроллерах, в SSD-накопителях под PCI-E.

Mini PCI

Форм-фактор PCI 2.2, предназначен для использования, в основном, в ноутбуках.

PCI Express

PCI Express, или PCIe, или PCI-E (также известная как 3GIO for 3rd Generation I/O; не путать с PCI-X и PXI ) - компьютерная шина (хотя на физическом уровне шиной не является, будучи соединением типа «точка-точка»), использующая программную модель шины PCI и высокопроизводительный физический протокол , основанный на последовательной передаче данных . Разработка стандарта PCI Express была начата фирмой Intel после отказа от шины InfiniBand. Официально первая базовая спецификация PCI Express появилась в июле 2002 года.Развитием стандарта PCI Express занимается организация PCI Special Interest Group.

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

  • горячая замена карт;
  • гарантированная полоса пропускания (QoS );
  • управление энергопотреблением;
  • контроль целостности передаваемых данных.

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

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

Несмотря на то, что стандарт допускает x32 линий на порт, такие решения физически достаточно громоздки и не выпускаются.

Год
выпуска
Версия
PCI Express
Кодирование Скорость
передачи
Пропускная способность на x линий
×1 ×2 ×4 ×8 ×16
2002 1.0 8b/10b 2,5 ГТ/с 2 4 8 16 32
2007 2.0 8b/10b 5 ГТ/с 4 8 16 32 64
2010 3.0 128b/130b 8 ГТ/с ~7,877 ~15,754 ~31,508 ~63,015 ~126,031
2017 4.0 128b/130b 16 ГТ/с ~15,754 ~31,508 ~63,015 ~126,031 ~252,062
2019
5.0 128b/130b 32 ГТ/с ~32 ~64 ~128 ~256 ~512

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.х.).

PCI Express 2.1

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

PCI Express 3.0

В ноябре 2010 года были утверждены спецификации версии 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.х.

PCI Express 4.0

PCI Special Interest Group (PCI SIG) заявила, что PCI Express 4.0 может быть стандартизирован до конца 2016 года, однако на середину 2016 года, когда ряд чипов уже готовился к изготовлению, СМИ сообщали, что стандартизация ожидается в начале 2017. Ожидается, что он будет иметь пропускную способность 16 GT/s, то есть будет в два раза быстрее PCIe 3.0.

Оставьте свой комментарий!

Приветствую вас, дорогие читатели.

После переустановки операционной системы некоторые пользователи (в том числе и я) встречались с ситуацией, когда в «Диспетчере устройств» показывает, что необходим драйвер PCI-устройства для Windows 7. И чаще всего такое встречается на ноутбуках, хоть и на ПК также можно увидеть проблему. В некоторых случаях можно заметить определенные негативные моменты в работе устройства, проявляющиеся скоростью обработки информации, «паузами», а иногда и «остановками». В статье я постараюсь рассказать, как справиться с недугом.

Сразу нужно сказать, что PCI-устройство не имеет конкретного назначения. Эта маркировка указывает на шину, с помощью которой подключается компонент. Само по себе оборудование может иметь разное назначение – модем, сетевая карта, cardreader и многое другое. А потому решить так сразу проблему не всегда удастся.

Установка определенных драйверов ( )

Узнать, какой именно драйвер необходимо искать, можно несколькими способами. Для начала необходимо попасть в «», а затем в «».

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

Так, например, необходимо найти драйвер PCI-контроллер Simple Communications. Это означает, что на компьютере не найдено специального интерфейса между хостом и микропрограммой Management Engine от Intel.

Еще одной популярной проблемой считается наличие ошибки в Nvidia nforce PCI Management. Она указывает на недуг с программным обеспечением чипсета. Для решения нужно зайти на официальный сайт и найти соответствующее ПО. Важно разыскать именно подходящее обеспечение (должны совпадать версии Windows, разрядность и даже выпуск БИОСа). Далее вы можете просто обновить драйвер или установить, если его не было. Иногда требуется перезагрузка.

Поиск по ID ( )

Иногда случаются ситуации, когда вы не можете так сразу определить, какое именно оборудование не работает. Кроме того, не помогает маркировка в «Диспетчере устройств ». Что же делать в таком случае?

Чтобы для Windows 7 найти нужное программное обеспечение, нужно проделать несколько движений:


Кстати, этот способ подходит и для устройств PCI Windows XP. Лучше всего искать на проверенных сайтах, чтобы ненароком себе не установить вирус.

Возможно, вам будет интересно:

Любое устройство, которое установлено через разъем PCI в вашей материнской плате до того, как будут установлены на него драйвера и операционная система распознает его, отображается в диспетчере устройств как PCI Device с желтым знаком вопроса. Это может быть и звуковая карта, и модем и любое другое устройство. Установить его очень просто. Нужно всего лишь поставить драйвера, с которыми устройство будет работать. Для начала установите…

Подавляющему большинству любителей компьютерных игр давно известно, что такое Xbox 360. Поэтому эта статья для тех, кто еще не знаком с данным словосочетанием. Начнем с того, что Xbox – это игровая приставка, которая была разработана и производится компанией Microsoft. Продажи Xbox начались 15-го ноября 2001 года. Данная консоль является первым самостоятельным выходом Microsoft на рынок игровых приставок. До этого компания могла похвастаться лишь разработкой совместно…

Сегодня планшетный компьютер прочно вошел в нашу жизнь. Эти устройства постоянно совершенствуются, и речи об остановке в развитии планшетов быть не может. Основное отличие «планшетников» от других подобных «девайсов», по которому его можно отличить, заключается в наличии большого сенсорного экрана. Размеры его практически совпадают с размерами всего планшета. А все комплектующие располагаются в корпусе под экраном. Как правило, диагональ экрана планшетного компьютера варьируется в пределах…

Типичный представитель - HP Mini 1103 При ответе на вопрос, что такое нетбук, сначала нужно сказать, что нетбук является портативным компьютером. Его еще называют мини-ноутбуком. Это небольшое как по размерам, так и по производительности устройство, имеющее экран с диагональю 7-12 дюймов. Мало весит, характеризуется невысокой стоимостью и энергопотреблением. Преимущественно нетбуки, также как и карманные компьютеры, используют для работы с электронной почтой, общения по Skype или ICQ,…