Самая подробная информация купить каркасный дом тут.
Транзакции записи начинаются с пакета запроса, в котором передается полный адрес назначения, идентификатор источника, которому нужно будет послать ответ, и сами данные записи. Пакет ответа записи несет код результата выполнения.
Транзакции чтения в пакете запроса несут полный адрес назначения, длину запрашиваемого блока и идентификатор источника. Запрашиваемая длина определяется кодом типа транзакции (чтение квадлета или блока), а для чтения блока — полем длины. Пакет ответа чтения несет код результата выполнения и собственно данные чтения.
Блокированные транзакции чтения-модификации-записи в пакете запроса кроме адреса назначения несут значения аргумента и данных транзакции. Эти значения могут быть как 32, так и 64-битными (одинаковой длины), аргумент может и отсутствовать. Расширенный код транзакции задает тип выполняемой операции (таблица) и, соответственно, наличие или отсутствие аргумента. Поле длины определяет разрядность аргумента и данных и может принимать значение 4 (только 4-байтные данные), 8 (аргумент и данные по 4 байта или только данные размером 8 байт) или 16 (аргумент и данные по 8 байт). Пакет ответа по формату аналогичен ответу на чтение блока, где в поле данных возвращаются старые данные (считанные перед модификацией). Длина блока данных ответа может составлять 4 или 8 байт.
Расширенный код транзакции | Имя | Назначение |
0000h | Резерв | Резерв |
0001h | mask_swap | Биты целевой ячейки, которым соответствуют единичные значения в arg_value, заменяются на биты из data_value |
0002h | compare_swap | Содержимое целевой ячейки заменяется на data_value, если ее прежнее значение совпадает с arg_value |
0003h | fetch_add | Содержимое целевой ячейки складывается с data_value; числа рассматриваются как целые, целевой адрес указывает на самый старший байт числа (big endian) |
0004h | litle_add | То же, но целевой адрес указывает на самый младший байт числа (litle endian) |
0005h | bounded_add | Если содержимое целевой ячейки не равно arg_value, то она заменяется на сумму прежнего и data_value; иначе целевая ячейка не изменяется |
0006h | wrap_add | Если содержимое целевой ячейки не равно arg_value, то она заменяется на сумму прежнего и data_value; иначе она заменяется на data_value |
0007h | vendor | Назначение определяется разработчиком |
0008-FFFFh | Резерв | Резерв |