Linux
2017-09-15
man-pages-ru
Russian man pages from the Linux Documentation Project
manpages
Manual pages about using a GNU/Linux system
man-pages
Linux kernel and C library user-space interface documentation
ИМЯ
spufs - файловая система SPU
ОПИСАНИЕ
Файловая система SPU используется на машинах PowerPC, на которых реализована Cell Broadband Engine Architecture для доступа к cинергичным процессорным блокам (Synergistic Processor Unit, SPU).
Файловая система предоставляет пространство имён похожее на общую память POSIX или очереди сообщений. Пользователи, имеющие права на запись в файловую систему, могут использовать вызов spu_create(2) для организации контекстов SPU в корневом каталоге spufs.
Каждый контекст SPU представлен каталогом с постоянным набором файлов. Эти файлы можно использовать для управления состоянием логического SPU. Пользователи могут изменять права на файлы, но не могут добавлять или удалять файлы.
Параметры монтирования
uid=<uid> | |
Назначает пользователя-владельца точки монтирования; по умолчанию 0 (root). | |
gid=<gid> | |
Назначает группу-владельца точки монтирования; по умолчанию 0 (root). | |
mode=<права> | |
Назначает права на каталог верхнего уровня в spufs, задаётся как строка-число прав в восьмеричной системе счисления. По умолчанию 0775. |
Файлы
При вызовах read(2) или write(2) файлы в spufs, в основном, ведут себя как обычно, но часто поддерживают только ограниченный набор операций. В данном списке перечислены поддерживаемые операции, а отклонения от стандартного поведения описаны в соответствующих справочных страницах.
Все файлы, поддерживающие операцию read(2), также поддерживают readv(2), а все файлы, поддерживающие операцию write(2), также поддерживают writev(2). Все файлы поддерживают семейство операций access(2) и stat(2), но у последней операции в возвращаемой структуре stat достоверную информацию содержат только поля st_mode, st_nlink, st_uid и st_gid.
Все файлы поддерживают операции chmod(2)/fchmod(2) и chown(2)/fchown(2), но они не могут предоставить права, которые противоречат возможным операциям (например, возможность чтения файла wbox).
Текущий список файлов:
/capabilities | |||||||||||||||||||
Содержит строку мандатов (перечисляемых через запятую) этого контекста SPU. Возможные мандаты:
|
|||||||||||||||||||
/mem | Содержимое хранилища локальной памяти SPU. Оно может быть доступно как обычный файл общей памяти и содержит код и данные в адресном пространстве SPU. Возможные операции после открытия файла mem:
|
||||||||||||||||||
/regs | Содержит сохранённые регистры общего назначения контекста SPU. Этот файл содержит 128-битное значение каждого регистра, начиная с регистра 0 и кончая 127, в этом порядке. Это позволяет просматривать регистры общего назначения при отладке. | ||||||||||||||||||
Для чтения или записи в этот файл требуется, чтобы контекст был запланирован, поэтому использовать этот файл не рекомендуется при нормальной работе программы. | |||||||||||||||||||
Файл regs отсутствует в контекстах, которые были созданы с флагом SPU_CREATE_NOSCHED. | |||||||||||||||||||
/mbox | Первый буфер обмена (communication mailbox) SPU-в-CPU. Этот файл доступен только для чтения и может быть прочитан по 4 байта за раз. Его можно использовать только в неблокирующем режиме — для блокировки нельзя даже использовать poll(2). Единственно возможная операция над открытым файлом mbox:
|
||||||||||||||||||
/ibox | Второй буфер обмена SPU-в-CPU. Этот файл подобен первому буферу обмена, но может открываться в блокирующем режиме ввода-вывода, то есть вызов read(2) с открытым файлом ibox заблокирует выполнение до тех пор, пока SPU не запишет данные в свой канал прерываний буфера (если файл не открыт с флагом O_NONBLOCK, смотрите далее). Также можно использовать poll(2) и подобные системные вызовы для отслеживания наличия данных в буфере. | ||||||||||||||||||
Возможные операции над открытым файлом ibox:
|
|||||||||||||||||||
/wbox | Буфер обмена CPU-в-SPU. Доступен только для записи, которую можно производить по четыре байта за раз. Если буфер полон, то write(2) блокируется; для слежения за возможностью записи можно использовать вызов poll(2). Возможные операции с открытым файлом wbox:
|
||||||||||||||||||
/mbox_stat, /ibox_stat, /wbox_stat | |||||||||||||||||||
Эти файлы доступны только для чтения и содержат размер текущей очереди каждого буфера — то есть сколько слов можно прочитать из mbox или ibox, или сколько слов можно записать в wbox без блокировки. Файлы можно читать только по четыре байта за раз и возвращается целое двоичное число с прямым порядком байт. С открытыми файлами *box_stat возможна только операция:
|
|||||||||||||||||||
/npc, /decr, /decr_status, /spu_tag_mask, /event_mask, /event_status, /srr0, /lslr | |||||||||||||||||||
Внутренние регистры SPU. В этих файлах содержатся строки ASCII, представляющие значение регистра в виде шестнадцатеричного числа. Для чтения и записи в эти файлы (кроме npc, смотрите далее) требуется, чтобы выполнялся контекст SPU, поэтому частый доступ к этим файлам не рекомендуется при обычной работе программы. | |||||||||||||||||||
Содержимое этих файлов:
|
|||||||||||||||||||
Возможные операции над этими файлами:
|
|||||||||||||||||||
/fpcr | Данный файл предоставляет доступ к регистру управления и состояния операций с плавающей запятой (fcpr). Это четырёхбайтный файл с двоичным значением регистра. Операции с fpcr:
|
||||||||||||||||||
/signal1, /signal2 | |||||||||||||||||||
Эти файлы предоставляют доступ к двум сигнальным каналам уведомления SPU. Они доступны на чтение-запись четырёхбайтными словами. Запись в один из файлов возбуждает прерывание на SPU. Значение, записанное в сигнальные файлы, можно прочитать из SPU через канал чтения или из пользовательского пространства узла через файл. После чтения SPU этого значения, оно сбрасывается в ноль. Возможные операции с открытым файлом signal1 или signal2:
|
|||||||||||||||||||
/signal1_type, /signal2_type | |||||||||||||||||||
Эти файлы изменяют поведение файлов уведомлений signal1 и signal2. В них содержится число в виде строки ASCII, которое читается как «1» или «0». В режиме 0 (перезапись) аппаратное обеспечение заменяет содержимое сигнального канала данными, которые в него записываются. В режиме 1 (логическое ИЛИ) аппаратное обеспечение складывает биты, которые в него последовательно поступают. Возможные операции с открытым файлом signal1_type или signal2_type:
|
|||||||||||||||||||
/mbox_info, /ibox_info, /wbox_info, /dma_into, /proxydma_info | |||||||||||||||||||
Эти файлы, доступные только для чтения, содержат сохранённое состояние буферов обмена SPU и очередей DMA. Это позволяет просматривать состояние SPU, полезно при отладке. Файлы mbox_info и ibox_info содержат четырёхбайтное сообщение, которое было записано SPU. Если сообщения не было записано в эти буферы обмена, то содержимое этих файлов не определено. Файлы mbox_stat, ibox_stat и wbox_stat содержат счётчик доступных сообщений. | |||||||||||||||||||
Файл wbox_info содержит массив четырёхбайтных сообщений, которые посылались в SPU. В существующих машинах CBEA размер массива равен четырём элементам, поэтому 4 * 4 = 16 байт можно прочитать из этого файла. Если какой-то элемент очереди пуст, то содержимое прочитанных байтов из этого положения не определено. | |||||||||||||||||||
Файл dma_info содержит данные очереди SPU MFC DMA, которые представлены следующей структурой: | |||||||||||||||||||
struct spu_dma_info { uint64_t dma_info_type; uint64_t dma_info_mask; uint64_t dma_info_status; uint64_t dma_info_stall_and_notify; uint64_t dma_info_atomic_command_status; struct mfc_cq_sr dma_info_command_data[16]; }; |
|||||||||||||||||||
Последний элемент структуры — действующая очередь DMA, содержащая 16 элементов. Структура mfc_cq_sr определена следующим образом: | |||||||||||||||||||
struct mfc_cq_sr { uint64_t mfc_cq_data0_RW; uint64_t mfc_cq_data1_RW; uint64_t mfc_cq_data2_RW; uint64_t mfc_cq_data3_RW; }; |
|||||||||||||||||||
В файле proxydma_info содержится подобная информация, но она описывает очередь прокси-DMA (т. е., DMA, инициируемые элементами вне SPU). Файл имеет следующий формат: | |||||||||||||||||||
struct spu_proxydma_info { uint64_t proxydma_info_type; uint64_t proxydma_info_mask; uint64_t proxydma_info_status; struct mfc_cq_sr proxydma_info_command_data[8]; }; |
|||||||||||||||||||
Для доступа к этим файлам требуется, чтобы выполнялся контекст SPU, частое использование может быть неэффективным. Эти файлы не должны использоваться в обычной работе. | |||||||||||||||||||
Эти файлы отсутствуют в контекстах, которые были созданы с флагом SPU_CREATE_NOSCHED. | |||||||||||||||||||
/cntl | Данный файл предоставляет доступ к регистрам управления работой SPU (Run Control) и состояния SPU, содержит строки ASCII. Поддерживаются следующие операции:
|
||||||||||||||||||
/mfc | Предоставляет доступ к Memory Flow Controller, находящийся в SPU. При чтении из файла возвращается содержимое регистра SPU MFC Tag Status, а при записи в файл запускается DMA из MFC. Поддерживаются следующие операции:
|
||||||||||||||||||
/psmap | Предоставляет доступ к полному отображению проблемного состояния (problem-state mapping) SPU. В приложениях эту область можно использовать для обмена с SPU вместо записи в отдельные регистровые файлы spufs. | ||||||||||||||||||
Поддерживаются следующие операции:
|
|||||||||||||||||||
/phys-id | Доступный только для чтения файл содержит номер физического SPU, на котором выполняется контекст SPU. Когда контекст не выполняется этот файл содержит строку «-1». | ||||||||||||||||||
Номер физического SPU описывается строкой ASCII числом в шестнадцатеричной системе счисления. | |||||||||||||||||||
/object-id | |||||||||||||||||||
Позволяет приложениям хранить (или получать) одиночный 64-битный ID в контекст. Позднее данный ID используется инструментами профилирования как уникальный идентификатор контекста.
|
ПРИМЕР
запись в /etc/fstab | |
none /spu spufs gid=spu 0 0 |
СМОТРИТЕ ТАКЖЕ
close(2), spu_create(2), spu_run(2), capabilities(7)
The Cell Broadband Engine Architecture (CBEA) specification