Base Address Register


1. Base Address Register – программа начальной инициализации и конфигурации определяет через базовый регистр объем памяти и тип адресного пространства, требуемые устройством. Для этого в регистр записывается 32-х разрядное число 0FFFFFFFFh, которое опознается устройством, и следующее чтение из этого регистра содержит тип адресного пространства и его объем.

clip_image002

Рис. 1. 79. Структура Base Address Register (адресное пространство ввода-вывода)

Если младший разряд содержит “1”, то это адресное пространство ввода-вывода (IO). Второй разряд всегда “0” и не используется (Reserved). В остальных содержится размер области или же базовый адрес.

Если младший разряд содержит “0” , то это адресное пространство памяти.

clip_image004

Рис. 1. 80. Структура Base Address Register (адресное пространство памяти)

Тогда первый и второй разряды содержат тип адресного пространства. 00 – 32-х разрядное адресное пространство, 10 — 64-х разрядное адресное пространство. В случае 10 следующий 32-х разрядный регистр после текущего участвует в определении размера и базового адреса.

Третий разряд устанавливается в “1”, если устройство выполняет перестановку байт, т.е. возможно обращение по чтению слова по любому адресу, не кратному слову. Устройство также поддерживает разряды разрешения байт на системном интерфейсе. “0” – в противном случае.

После выделения памяти в эти регистры записываются начальные адреса соответствующих адресных пространств. Устройства могут запрашивать адресные пространства большего объема, чем им необходимо для ускорения дешифрации адреса. В этом случае программа инициализации и конфигурации выделяет базовые адреса так, что устройству необходимо дешифрировать только соответствующую часть старших адресов. Программа инициализации и конфигурации определяет объем адресного пространства следующим образом: очищаются два (четыре) разряда после чтения, инвертируются все биты и прибавляется “1”, т.о. обеспечивается автоматическое невыделение памяти.

Загрузка...