В чем разница между аппаратным регистром и регистром, отображенным в памяти?

Это было загадочно, поэтому я изложу все это здесь. По-видимому, через MMIO вы можете получить доступ к внешним устройствам, используя определенный адрес, отображенный в памяти, который затем будет перенаправлен на само это устройство (посредством записи, командного пакета и т. Д.). Однако я слышал смешанные описания как аппаратных регистров (например, регистр CPU/GPU или даже звуковые чипы), так и регистров, отображенных в памяти, используемых взаимозаменяемо. Являются ли они одинаковыми вещь?

Когда вы говорите "регистр с отображением в памяти", не имеете ли вы в виду адрес, с которого байт данных перенаправляется на определенный адрес внутри этого устройства (например, теоретически: адрес 0x500 графического процессора предназначен для TEXTURE_BUFFER регистра). Однако устройство с отображением в память не может отображать физический регистр в оперативной памяти.

Итак, в принципе, в чем разница между регистром, отображенным в памяти, и просто аппаратным регистром?