PCIe TLP записывает адрес пакета только 31: 2 бита

#cpu-architecture #pci-e

#архитектура процессора #pci-e

Вопрос:

Давайте возьмем пример пакета записи: предположим, что процессор записал значение 0x12345678 в физический адрес 0xfdaff040 , используя 32-разрядную адресацию

пример пакета записи

Этот пример взят с этого сайта (я не понял объяснений в исходном сообщении)

  1. Почему адрес начинается со второго бита [31 : 2]
  2. Почему адрес не тот же

Комментарии:

1. Адрес не совпадает просто из-за несоответствия в оригинале между диаграммой и текстом.

Ответ №1:

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

Комментарии:

1. Другими словами, это (32b) словесный адрес , а не байтовый адрес .

2. И поскольку отправляется по меньшей мере 32 бита, разрешающие байты слова first_be и last_be используются для указания, какие байты допустимы.