Сопоставление памяти хост-системы с адресом домена PCI

  1. Мое понимание PCI
    Хост-процессор отвечает за назначение адреса домена PCI всем другим устройствам на шине PCI путем установки регистра BAR устройств в пространстве конфигурации PCI.

    Хост-процессор может сопоставлять адресный домен PCI со своим доменом (т. е. системным доменом), так что хост, инициированный «транзакциями памяти PCI» с устройствами на шине PCI, может быть достигнут с помощью простых инструкций загрузки/сохранения хост-процессора.

  2. Вопрос -> Возможно ли, чтобы даже системная память, то есть основная память хоста (фактическая оперативная память), была сопоставлена ​​с адресом домена PCI, чтобы, когда хост-система является целевым устройством «транзакции памяти PCI», инициированной устройством на Шина PCI, основная память читается/записывается без вмешательства центрального процессора?

Дополнительная информация: я работаю над встроенной системой с 3 процессорами SH4, взаимодействующими по шине PCI.


person Anup    schedule 03.07.2014    source источник
comment
2. Вы говорите, что устройство PCI действует как мастер... Я не знаю ни одной из этих конфигураций...   -  person RootPhoenix    schedule 19.01.2015


Ответы (2)


В мире PCIe есть два вида отображения памяти. Один — входящее сопоставление, а другой — исходящее сопоставление.

Входящее сопоставление: пространство памяти находится на устройстве, и центральный процессор может искать сопоставленное пространство памяти. Исходящее сопоставление: пространство памяти находится на центральном процессоре, и устройство может искать сопоставленное пространство памяти.

Оба они кажутся одинаковыми, но это важное различие. Благодаря этой функции вам не потребуется дополнительная копия памяти для связи между центральным процессором и устройством.

person Wonkoo Jung    schedule 08.02.2019

Я понимаю, что это старый вопрос, но я все равно хотел бы ответить на него. Когда вы говорите «транзакция, инициированная устройством на шине PCI», я предполагаю, что вы имеете в виду чтение/запись, инициированную устройством для доступа к системной памяти (ОЗУ). Это называется управлением шиной на устройстве (также называемым DMA), и это можно сделать, если центральный процессор выделяет буфер DMA (то есть с помощью dma_alloc_coherent()), а драйвер предоставляет этот адрес DMA устройству. . Тогда да, устройство может читать/записывать в системную память без вмешательства центрального процессора.

person Murasaki    schedule 26.05.2020