b'\n_START_ARTICLE_\nE/S mapeada em mem\xc3\xb3ria\n_START_SECTION_\nVantagens relativas dos dois m\xc3\xa9todos de E/S\n_START_PARAGRAPH_\nA principal vantagem de se utilizar E/S mapeada em mem\xc3\xb3ria \xc3\xa9 em CPUs com a capacidade de endere\xc3\xa7amento limitada. Como a E/S mapeada em portas separa as o acesso de E/S do acesso de mem\xc3\xb3ria, o espa\xc3\xa7o para endere\xc3\xa7amento pode ser usado inteiramente para a mem\xc3\xb3ria. Al\xc3\xa9m disso, se torna evidente para uma pessoa lendo em linguagem assembly (ou mesmo analisando o c\xc3\xb3digo de m\xc3\xa1quina), a ocorr\xc3\xaancia de E/S, pela utiliza\xc3\xa7\xc3\xa3o das instru\xc3\xa7\xc3\xb5es espec\xc3\xadficas para este fim._NEWLINE_Se os barramentos de dados e endere\xc3\xa7o forem compartilhados, as opera\xc3\xa7\xc3\xb5es de E/S podem deixar o acesso a mem\xc3\xb3ria mais lento. Isto porque normalmente os dispositivos perif\xc3\xa9ricos s\xc3\xa3o muito mais lentos que a mem\xc3\xb3ria principal. Em algumas arquiteturas E/S mapeada em mem\xc3\xb3ria se d\xc3\xa1 por um barramento de E/S dedicado, atenuando o problema._NEWLINE_Al\xc3\xa9m desta, h\xc3\xa1 duas grandes vantagens de se utilizar o mapeamento em mem\xc3\xb3ria de E/S. Uma delas \xc3\xa9 que, descartando a complexidade extra trazida pela porta E/S, a CPU precisa menos l\xc3\xb3gica interna e, portanto, \xc3\xa9 mais r\xc3\xa1pida, \xc3\xa9 mais f\xc3\xa1cil de construir, \xc3\xa9 mais barata, consome menos energia e pode ser fisicamente menor; isto segue as diretrizes principais de um RISC e \xc3\xa9 tamb\xc3\xa9m vantajoso em sistemas embarcados. A outra vantagem \xc3\xa9 que por serem utilizadas instru\xc3\xa7\xc3\xb5es normais de mem\xc3\xb3ria para endere\xc3\xa7ar dispositivos, todos os m\xc3\xa9todos de endere\xc3\xa7amento da CPU estar\xc3\xa3o dipon\xc3\xadveis para E/S tanto quanto para a mem\xc3\xb3ria comum e as instru\xc3\xa7\xc3\xb5es que efetuam uma opera\xc3\xa7\xc3\xa3o da ULA diretamente em um operando - carregando o operando da mem\xc3\xb3ria, armazenando o resultado na mem\xc3\xb3ria, ou ambos - podem tamb\xc3\xa9m ser utilizadas com registradores de E/S. Em contraste, instru\xc3\xa7\xc3\xb5es de E/S mapeada em mem\xc3\xb3ria s\xc3\xa3o extremamente restritas, frequentemente realizando apenas leitura e armazenamento entre registradores da CPU e portas de E/S, para que, por exemplo, ao se adicionar uma constante ao registrador de um dispositivo E/S mapeada em porta sejam necess\xc3\xa1rias tr\xc3\xaas instru\xc3\xa7\xc3\xb5es de uma vez: ler a porta para um registrador da CPU, somar a constante ao registrador e escrever o resultado na porta novamente._NEWLINE_\xc3\x80 medida que processadores 16-bit se tornaram obsoletos e foram substitu\xc3\xaddos por 32-bit e 64-bit para o uso geral, reservar grandes intervalos de endere\xc3\xa7os de mem\xc3\xb3ria para E/S n\xc3\xa3o \xc3\xa9 mais um problema, j\xc3\xa1 que o espa\xc3\xa7o para endere\xc3\xa7amento de mem\xc3\xb3ria pelo processador \xc3\xa9 muito maior do que o necess\xc3\xa1rio por todos os dispositivos de E/S e a mem\xc3\xb3ria utilizada por um sistema juntos. Assim, frequentemente \xc3\xa9 muito mais pr\xc3\xa1tico utilizar as vantajens dos benef\xc3\xadcios do mapeamento de E/S em mem\xc3\xb3ria. No entanto, mesmo com o espa\xc3\xa7o para endere\xc3\xa7amento n\xc3\xa3o sendo mais um problema, nenhum m\xc3\xa9todo de mapeamento de E/S \xc3\xa9 universalmente superior ao outro, e haver\xc3\xa1 casos em que usar a E/S mapeada em porta ser\xc3\xa1 ainda prefer\xc3\xadvel._NEWLINE_Uma raz\xc3\xa3o final por que a E/S mapeada em mem\xc3\xb3ria \xc3\xa9 prefer\xc3\xadvel em arquiteturas x86 \xc3\xa9 que as instru\xc3\xa7\xc3\xb5es que realizam a E/S baseada em portas s\xc3\xa3o limitadas a poucos registradores: EAX, AX e AL s\xc3\xa3o os \xc3\xbanicos registradores dos quais se podem ser lidos ou onde podem ser escritos dados por essas instru\xc3\xa7\xc3\xb5es, al\xc3\xa9m do que \xc3\xa9 necess\xc3\xa1rio um valor imediato na instru\xc3\xa7\xc3\xa3o, com o tamanho de um byte, ou um valor no registrador DX que determina qual porta \xc3\xa9 a fonte ou destino da transfer\xc3\xaancia. Como qualquer registrador de uso geral pode receber dados de ou para E/S mapeada em mem\xc3\xb3ria, esta usa menos instru\xc3\xa7\xc3\xb5es e pode ser executada mais rapidamente. A AMD n\xc3\xa3o estendeu as instru\xc3\xa7\xc3\xb5es de portas de E/S ao definir a arquitetura x86-64 para suportar as portas 64-bits, e, portanto, as transmiss\xc3\xb5es de dados de 64-bits n\xc3\xa3o podem ser usadas em portas de E/S.\n_START_SECTION_\nLimites de mem\xc3\xb3ria\n_START_PARAGRAPH_\nE/S mapeada em mem\xc3\xb3ria \xc3\xa9 causa de limita\xc3\xa7\xc3\xb5es de mem\xc3\xb3ria em gera\xc3\xa7\xc3\xb5es antigas de computadores - o limite dos 640 KiB \xc3\xa9 devido ao fato de o IBM PC colocar a \xc3\x81rea Superior da Mem\xc3\xb3ria no intervalo de 640-1024 KiB (dos seus 20 bit de endere\xc3\xa7amento), enquanto o Limite dos 3 GB se deve ao mapeamento de mem\xc3\xb3ria similar nas arquiteturas de 32 bits, no intervalo de 3-4 GB.'