2010-10-08 20 views

risposta

3

Su x86 ci sono due diversi spazi di indirizzi, uno per la memoria e un altro per le porte I/O.

Lo spazio di indirizzamento della porta è limitato a 65536 porte ed è accessibile tramite le istruzioni IN/OUT.

Ad esempio, è possibile accedere alla funzionalità VGA di una scheda video utilizzando alcune porte I/O, ma il framebuffer è mappato in memoria.

Altre architetture CPU hanno solo uno spazio indirizzo. In queste architetture, tutti i dispositivi sono mappati in memoria.

7

Uhm, ... a meno che non ho capito male, si sta parlando di due cose completamente diverse. Ti darò due spiegazioni molto brevi in ​​modo da poter fare su google ciò che è necessario per ora.

I/O mappato in memoria significa mappare la memoria dei dispositivi hardware I/O nella mappa della memoria principale. Cioè, nella memoria del computer ci saranno degli indirizzi che in realtà non corrisponderanno alla tua RAM, ma ai registri interni e alla memoria dei dispositivi periferici. Questa è l'architettura della macchina di cui stava parlando Pointy.

C'è anche un I/O mappato, che significa prendere (dire) un file, e avere il sistema operativo caricare parti di esso in memoria per un accesso più veloce in seguito. In Unix, questo può essere realizzato tramite mmap().

Spero che questo abbia aiutato.

+0

La tua risposta è informativa ma non hai spiegato IO mappato IO. – JagsVG

+0

* "nella memoria del computer ci saranno degli indirizzi che in realtà non corrispondono alla RAM, ma ai registri interni e alla memoria dei dispositivi periferici." * Ogni dispositivo ha i suoi registri interni e la memoria che mappano alla RAM (per esempio: una stampante può avere 4 registri mentre una webcam ha 7 registri) oppure esiste un numero standard di registri e di memoria che tutti i dispositivi devono implementare? – John

+0

Ogni dispositivo è diverso, sia internamente che interfacciato. Le mappature di memoria possono essere usate o no. È altamente dipendente dal dispositivo – slezica

1

Ho ancora una chiara differenza tra i due. Il dispositivo I/O mappato in memoria è quel dispositivo I/O che risponde quando IO/M è basso. Mentre un I/O mappato I/O (o periferica) è quello che risponde quando IO/M è alto.

4

I/O mappati in memoria sono mappati nello stesso spazio di indirizzi della memoria del programma e/o della memoria utente e sono accessibili allo stesso modo.

L'I/O mappato porta utilizza uno spazio di indirizzamento dedicato separato ed è accessibile tramite un set dedicato di istruzioni del microprocessore.

Poiché i processori a 16 bit diventeranno lentamente obsoleti e sostituiti con 32 bit e 64 bit in uso generale, riservare intervalli di spazio di indirizzamento della memoria per I/O è meno problematico, come lo spazio di indirizzamento della memoria del il processore è in genere molto più grande dello spazio richiesto per tutti i dispositivi di memoria e I/O in un sistema.

Pertanto, è diventato più spesso pratico sfruttare i vantaggi di I/O mappato in memoria.

Lo svantaggio di questo metodo è che l'intero bus di indirizzi deve essere completamente decodificato per ogni dispositivo. Ad esempio, una macchina con un bus di indirizzo a 32 bit richiederebbe porte logiche per risolvere lo stato di tutte le 32 linee di indirizzo per decodificare correttamente l'indirizzo specifico di qualsiasi dispositivo. Ciò aumenta il costo dell'aggiunta di hardware alla macchina.

Il vantaggio del sistema IO mappato IO è che è necessaria meno logica per decodificare un indirizzo discreto e quindi meno costi per aggiungere dispositivi hardware a una macchina. Tuttavia potrebbero essere necessarie ulteriori istruzioni.

Ref: - Check This link