Nella mia domanda precedente , ho stabilito che l'indirizzo di memoria utilizzato dai dispositivi PCI / PCIe non deve essere mappato alla RAM di sistema, ma potrebbe anche riferirsi alla memoria "sul dispositivo", ad esempio RAM o registri.
Ma come sono impostati i BAR in questo caso?
È semplicemente un caso (che durante la configurazione):
- il dispositivo pubblicizza che desidera esporre, ad esempio 16 MB di memoria,
- BAR viene assegnato un indirizzo di base,
- Successivamente il dispositivo mappa gli offset sulla sua memoria interna?
In che cosa differisce da quando il dispositivo desidera accedere a 16 MB di memoria di sistema (ovvero il dispositivo non ha memoria propria?)
Grazie!
EDIT: in che modo l'indirizzamento differisce tra:
A: il dispositivo non ha memoria propria, ad es. Un adattatore video che utilizza memoria condivisa.
B: il dispositivo ha memoria e la condivide con il sistema (ad es. Ipotetico adattatore HDD con buffer RAM).
In entrambi i casi, i BAR sono assegnati dal sistema operativo e occupano memoria indirizzabile?
Questa distinzione è importante in un sistema completamente occupato con RAM (ad esempio un sistema a 32 bit con 4 GB di RAM installati sarebbe in grado di supportare un adattatore video con 2 GB di RAM condivisa [situazione (A)]. Ma lo stesso sistema non ha spazio di indirizzamento lasciato per un ipotetico adattatore per HDD con cache RAM integrata da 2 GB [situazione (B)]?