Con nombres como 'Señal de E / S' y 'mapeo de memoria' todo se vuelve mucho más complicado de lo que realmente es, y por lo tanto le da a la persona la impresión de que hay mucho más y cubre un tema avanzado. La tendencia ahora es que la gente lo vea como algo nuevo. Pero esto está muy lejos del caso. Incluso Babbage en la década de 1830 manejaba su impresora, esto necesitaba una señal de E / S, aunque hecha por un eje y una rueda dentada. Por ejemplo, en las máquinas de Hero of Alexandria hace 2000 años o en los teatros desde la época griega, siempre sacaban una cuerda de un conjunto de cuerdas diferentes para controlar las luces o el escenario, cada cuerda es como una línea de entrada y salida, es como así de simple, la dirección es 'qué línea', es decir, qué cosa, memoria o dispositivo estamos eligiendo,
Aunque las grandes computadoras centrales que llenaban los edificios con gabinetes, usaban cosas como 64 bits en los años 40 y, por lo tanto, se ocupaban del mapeo de E / S de la misma manera que hace mucho tiempo, por ejemplo, Konrad Zuse y su computadora del tamaño de una habitación usaban flotación punto que tenía unos 20 dígitos en decimal en la década de 1930, y tuvo que manejar cosas como su impresora y sus diversos indicadores de bombilla y sus interruptores. Pero en microprocesadores pequeños, la historia es diferente: no se imaginaron hasta los años 60 y se construyeron hasta 1971. Todas estas técnicas que utilizan la lógica de 8 bits en los años 80, se usaron para microprocesadores en 4 bits en los años 70, 2 bits en los años 60 y se usaron en 16 bits en los 90 ' s cuando todos comenzaron a tener una computadora y, por lo tanto, porque ahora estaba frente a ellos, comenzaron a discutir este tema de E / S y mapeo de memoria por primera vez, y parecía ser algo nuevo que surgió con el advenimiento de Internet; luego tuvimos 32 bits en las computadoras de los 00 y 64 bits en los años 10, lo que provocó discusiones interminables sobre la memoria en las líneas de datos. Para responder a su pregunta, hablaré sobre los chips que los aficionados a la electrónica compraron hace 30-40 años, como lo hice en ese momento, ya que más tarde, las cosas se pusieron tan avanzadas que no pude construir con los chips posteriores, pero el Los principios son exactamente los mismos ahora, las puertas están ocultas dentro de chips más grandes en caja negra que incorporan otros pines que se ocupan de que estas operaciones se desarrollen mucho más en paralelo (por ejemplo, permitiendo muchos pestillos octales,
Bueno, no sé nada sobre todos los nuevos idiomas o cómo está en las PC modernas ahora, pero puedo decirte cómo era en los viejos tiempos cuando solía construir computadoras con chips.
Todo el mapeo de E / S y el mapeo de memoria significan en términos simples, si colgó una carga de ejemplo de bombillas para alguna celebración y tenía cables que iban a cada uno y llamó a las bombillas Lugares de memoria (es decir, las bombillas representan memoria en la RAM, ya sea encendido o apagado, y si selecciona la ubicación 0, obtiene el cable 0, la ubicación 1, el cable 1, la ubicación 2, el cable 2, etc. es un dispositivo al que se envía, utilizando el comando OUT, para que suene. Pero se ve como una ubicación de memoria desde el punto de vista de la computadora, ya que viene como un cable a la MPU de la misma manera. Si se agregó otro cable que era un interruptor que usted operaba externamente, este es un dispositivo de E / S, que sería una instrucción IN para la PC. Entonces esto se llama E / S mapeadas.
Ahora en las computadoras, los cables en los autobuses representan líneas de dirección o líneas de datos, PERO están en binario, es decir, con 2 cables puede tener 00 01 10 11, es decir, 4 combinaciones 2 ^ 2, por lo que con 8 líneas 2 ^ 8 = 256 posibilidades, con 20 líneas 2 ^ 20 = 1048576 con 30 líneas 2 ^ 30 = 1073741824 (1 concierto) de posibilidades con 30 líneas. Por eso se llama MAPPED, en lugar de solo decir E / S y memoria, dicen E / S mapeadas, y memoria mapeada, porque estás mapeando los cables como una COMBINACIÓN y codificándolos binariamente. Entonces, si dice que tenía 2 cables, 4 combinaciones, no se pueden conectar a las bombillas (sin mencionar la amplificación de corriente requerida por los pequeños voltajes de la MPU y la prevención de la corriente de retroalimentación), pero los 2 cables tienen para pasar a través de un decodificador (solíamos usar un 138 para decodificar 3 líneas en 8 líneas, un 164 para decodificar 4 líneas binarias en 16 líneas. ) Una vez a través del decodificador, estas 2 líneas, por ejemplo, A0 y A1 (dirección 0 y dirección 1 (LÍNEAS)), se convierten en 4 líneas (activadas o desactivadas) para la bombilla particular que está manejando (en el caso en una computadora, LA MEMORIA), pero en algunos casos, esta ubicación en su lugar selecciona algún dispositivo de entrada / salida y dice "úsame", es decir, como memoria, una vez localizada, los datos se pasan de una forma u otra (usando una lógica inteligente de tres estados para cortar los voltajes en el camino cada vez) en las líneas de bus de datos D0..7 o D0..31 o el tamaño de los datos en la computadora (usted tiene una computadora de 2 bits, 4 bits, 8 bits, 16 bits, 32 bits, 64 bits, 128 bits, 256 bits, lo que sea computadora que está construyendo). Por lo tanto, los datos pasan de forma natural dentro o fuera de las líneas de datos a la memoria o al dispositivo de E / S (SI está mapeado en memoria), pero ESTO NO DEBE SER CONFUNDIDO CON LAS instrucciones de ENTRADA / SALIDA, ESTE ENTRADA y SALIDA significa de algún OTRO bloque de memoria de E / S, un bloque de memoria de E / S especial dentro de la MPU asignado especialmente solo para E / S, es decir (no mapeado en memoria), este espacio de E / S no siempre se obtiene en algunos microprocesadores, por ejemplo, no creo que lo tengamos en un 6502, pero lo tuvimos en un z80. Los chips más artísticos utilizaron solo el mapeo de memoria, por ejemplo, en consolas de juegos, etc., los chips más sensibles pero poco interesantes (permanecieron en el libro) también van para el espacio de E / S. La E / S mapeada en memoria es una velocidad más ligera ya que incorpora direccionamiento de memoria (que es súper rápido para la RAM), por lo tanto, la computadora de tipo gráfico usa solo mapeo de memoria para que la E / S obtenga la velocidad. La E / S asignada de E / S se asigna para puertos lentos, por ejemplo, rs232 o el puerto paralelo, y utiliza los comandos IN OUT. mi. (sin memoria asignada), este espacio de E / S no siempre se obtiene en algunos microprocesadores, por ejemplo, no creo que lo tengamos en un 6502, pero lo tuvimos en un z80. Los chips más artísticos utilizaron solo el mapeo de memoria, por ejemplo, en consolas de juegos, etc., los chips más sensibles pero poco interesantes (permanecieron en el libro) también van para el espacio de E / S. La E / S mapeada en memoria es una velocidad más ligera ya que incorpora direccionamiento de memoria (que es súper rápido para la RAM), por lo tanto, la computadora de tipo gráfico usa solo mapeo de memoria para que la E / S obtenga la velocidad. La E / S asignada de E / S se asigna para puertos lentos, por ejemplo, rs232 o el puerto paralelo, y utiliza los comandos IN OUT. mi. (sin memoria asignada), este espacio de E / S no siempre se obtiene en algunos microprocesadores, por ejemplo, no creo que lo tengamos en un 6502, pero lo tuvimos en un z80. Los chips más artísticos utilizaron solo el mapeo de memoria, por ejemplo, en consolas de juegos, etc., los chips más sensibles pero poco interesantes (permanecieron en el libro) también van para el espacio de E / S. La E / S mapeada en memoria es una velocidad más ligera ya que incorpora direccionamiento de memoria (que es súper rápido para la RAM), por lo tanto, la computadora de tipo gráfico usa solo mapeo de memoria para que la E / S obtenga la velocidad. La E / S asignada de E / S se asigna para puertos lentos, por ejemplo, rs232 o el puerto paralelo, y utiliza los comandos IN OUT. los chips más sensibles pero poco interesantes (permanecieron en el libro) también van para el espacio de E / S. La E / S mapeada en memoria es una velocidad más ligera ya que incorpora direccionamiento de memoria (que es súper rápido para la RAM), por lo tanto, la computadora de tipo gráfico usa solo mapeo de memoria para que la E / S obtenga la velocidad. La E / S asignada de E / S se asigna para puertos lentos, por ejemplo, rs232 o el puerto paralelo, y utiliza los comandos IN OUT. los chips más sensibles pero poco interesantes (permanecieron en el libro) también van para el espacio de E / S. La E / S mapeada en memoria es una velocidad más ligera ya que incorpora direccionamiento de memoria (que es súper rápido para la RAM), por lo tanto, la computadora de tipo gráfico usa solo mapeo de memoria para que la E / S obtenga la velocidad. La E / S asignada de E / S se asigna para puertos lentos, por ejemplo, rs232 o el puerto paralelo, y utiliza los comandos IN OUT.
Ahora, si en lugar de agregar dos cables, si realmente reemplazó dos cables que originalmente fueron a bombillas y tomó algunas de esas bombillas y las reemplazó con otras cosas, por ejemplo, una campana en uno y un interruptor en otro, ahora no se hace referencia a ellos (seleccionado ) con las instrucciones IN y OUT respectivamente, se hace referencia a ellas accediendo a esa ubicación de memoria particular que selecciona esos cables (que originalmente eran bombillas). Entonces esto es E / S mapeada en memoria.
La E / S mapeada en memoria significa que el bus de direcciones real que normalmente va a la memoria (la RAM), está conectado también a OTROS decodificadores (decodificadores lógicos), y cuando detecta la combinación binaria particular de señales de dirección, produce una salida alta , (por ejemplo, si tenía una carga de y no puertas, y usted dijo, si esto y no eso y así sucesivamente, utilizando los pines A0..A20 o el tamaño de su bus de direcciones), esta señal alta PERMITE un pestillo, (para un dispositivo en particular, como un puerto serie, un puerto paralelo), este pestillo luego PASA los datos en el bus de datos, a través del dispositivo de E / S. Esto es para escribir en el dispositivo de E / S. La lectura funciona al revés, el dispositivo de E / S, devuelve los datos y, si no recuerdo mal, envía exactamente la misma combinación de código de dirección a las líneas de dirección.
Supongo que debe funcionar de la misma manera hoy, excepto que serán muchas más líneas de datos y direcciones.
Literalmente está CONECTANDO la E / S a las líneas de dirección. Por lo tanto, la E / S se MAPEA efectivamente en el espacio de memoria, como si fuera memoria. Pero otro pestillo impide que los pines de dirección accedan al ram al mismo tiempo, para que no obtenga voltajes de dos direcciones o fuentes de datos en la misma línea, lo que dañaría los chips.
Con la instrucción IN y OUT, tuvimos esto hace 40 años, en el chip z80. Esto es para casos especiales en los que el chip realmente trata las E / S de una manera diferente, es decir, no está mapeado en memoria. (es decir, con la memoria asignada, solo lee o escribe en la ubicación de la memoria, pero con IN y OUT ya le está diciendo a la CPU que es una señal de E / S y no una memoria). Entonces, con la instrucción IN / OUT, esto tiene su propio espacio de dirección de E / S (que es adicional a la memoria del ram), este Ram de E / S, como parece ser, tiene un conjunto de direcciones igual, excepto que está accediendo directamente al dispositivo a través de un decodificador conectado a esas direcciones de E / S, y no está accediendo al dispositivo de E / S desde los pines de dirección estándar, esto es para la instrucción IN / OUT.
que para este caso se pasan mejor como cadenas de códigos ASCII para letras y números. Estos comandos son exactamente los mismos que si usara las instrucciones IN y OUT en un bucle donde el conteo es la longitud de la cadena.
Si está accediendo, por ejemplo, al altavoz de la PC, simplemente estaría pasando una pieza de datos a la vez usando OUT.
Si estuviera leyendo desde el puerto paralelo, estaría haciendo IN y utilizando el código para la dirección de E / S del puerto. Al escribirle, por ejemplo, para manejar impresoras antiguas o robótica mediante señales electrónicas, usaría el comando OUT. El puerto paralelo y el puerto serie (antiguo RS232) son puertos típicos que se utilizaron. El RS232 son datos en serie, solo se permite la entrada o salida de un bit, por lo que si estaba leyendo desde un rs232, solo tendría 1 bit del byte que es relevante, lo mismo con la salida. La velocidad en baudios es de aproximadamente 17 kHz como máximo para un rs232, pero estos solían conducir mucho la electrónica, en aquellos días solía construir circuitos rs232, por ejemplo, para leer voltajes o controlar microcontroladores PIC. Cada puerto se llama, por ejemplo, COM1 COM2 COM3 COM4 y tienen direcciones de E / S. No estoy seguro aquí, pero son similares a, por ejemplo, 3F8h 378h (h = dirección hexadecimal)
No estoy seguro acerca de los puertos modernos, pero si estaba escribiendo en el USB, probablemente sea una E / S mapeada en memoria para una mayor velocidad.
El puerto del teclado PS / 2, creo que esto usa la instrucción IN, para leer datos del teclado. Esto reemplaza al antiguo RS232, pero creo que tiene una especificación ligeramente diferente.
Por lo general, una unidad de disco tenía un mapa de memoria, presumiblemente todavía lo es ahora, es decir, si no maneja una unidad de disco con instrucciones de ENTRADA / SALIDA, serían demasiado lentas. Pero los puertos son lentos de todos modos, por lo que no importa, por ejemplo, una impresora es lenta en cuanto a la velocidad de datos requerida en comparación con la excelente, por ejemplo, 200 megabytes / segundo necesarios de un disco duro. Un altavoz, solo necesita la frecuencia del sonido por 10 o 20, digamos que 20kHz sería suficiente para un zumbador, por lo tanto, es E / S. Las cosas lentas usan E / S, las instrucciones IN / OUT. Por lo tanto, el USB probablemente ahora esté mapeado en memoria, tendrá que verificarlo.
Una mejor manera de entenderlo es esto. En las computadoras antiguas de los años 80, a veces deseaba controlar algún dispositivo que había construido y no tenía especificaciones para los puertos de salida (ya que en aquellos días el fabricante mantenía esto oculto para que ciertas compañías, por ejemplo, las compañías de joystick y cartuchos) pudieran avanzar. mercado por algún negocio). Lo que tenía que hacer era abrir la computadora y soldar literalmente los cables en algunos puntos del bus de direcciones, por ejemplo, soldaba tres cables en algunos puntos del circuito a una distancia segura (para no dañar el chip con el calor), esos puntos conectados por el diseño de la placa de circuito a, por ejemplo, los pines A15 A7 y A1 en el microprocesador. Y tendrías que cablear también generalmente una línea MREQ (una línea de solicitud de memoria y / o la línea RD / WR para hacer una señal más ordenada, y agregar eso a la lógica o no, pero si fuera inteligente, simplemente podría hacerlo con las líneas de dirección) Y luego conectó estos tres cables + esta señal adicional de tipo Ready (por ejemplo, MREQ RD o línea WR para dar algo de activo bajo o alto (que necesitaría un posible NO adicional compuerta aquí) para decir que los DATOS están listos en la línea AHORA) a través de una compuerta AND de 4 entradas, que dio salida a un led a través de una resistencia de 200 ohmios, tiene su propia memoria asignada de E / S de alta velocidad a una luz led , que puede enganchar a través de un enganche SR o enganche tipo D para almacenarlo en una memoria de 1 bit externamente en alguna placa de circuito. Aquí 15 es la línea de 32K, 7 es la línea de 64, 1 es la línea 2 (el binario funciona en potencias de 2, entonces A1 es 2 ^ 1, A7 es 2 ^ 7 y A15 es 2 ^ 15), entonces si ubicación direccionada 32768 + 64 + 2 = 32834 = F041 en hexadecimal, usando LDA o STA o LD en las MPU antiguas en el ensamblador, usted saldría a este led, se iluminaría si la resistencia fuera de unos 100 ohmios. Entonces, ha hecho E / S mapeadas en memoria, que tan simple como es, podría hacerlo hoy soldando a sus líneas de dirección de mpu lo mismo. Pero no lo harías ahora debido a la delicadeza de los circuitos. Pero también puede unirse a las líneas de datos D0..7 (en los viejos tiempos) o decir d0..31 ahora por 32 bits en una vieja PC 486. Entonces, si abordó esa ubicación en el código de la máquina cargando el acumulador con el valor 8 (mov ax, 8 hoy en día) o almacenando ese valor del acumulador en una ubicación de dirección (mov F041h, acumulador del hacha, INCLUSO hoy obtendría ese led para venir Nota: el 8, en el ejemplo, es lo que está en el bus de datos, en este caso particular, no estamos pasando datos, solo estamos habilitando el dispositivo en particular (el LED está encendido, si hemos seleccionado ESE dispositivo de E / S, aquí, solo un LED), así que, en este ejemplo, no importa qué número tengamos con ese eje MOV, 8 instrucciones, podría ser, por ejemplo, mov ax, 243 y todavía estaríamos habilitando el LED en la línea F041h cuando hagamos mov F041h, como ya que estamos usando la misma dirección. Usted ve, hay líneas de dirección y hay líneas de datos. Entonces, cuando se dirige a 3F8 en COM1 o cualquiera que sea la dirección, el mapa de memoria de E / S simplemente está enviando una señal a un puerto, por ejemplo, ps / 2, y una puerta y está verificando si tiene 1110000100 en las líneas, es decir, 11 es 3 1000 es F y 0100 es 8, ver conversión de binario a hexadecimal. Si aparecen voltajes altos en esas posiciones de bit donde hay un 1, entonces el puerto, por ejemplo, rs232 o ps / 2, se establece en activo, es decir, está habilitado, esto habilita los pestillos, mediante la señal de habilitación del chip CE o el chip CS seleccione simple. 8 instrucciones, podría ser, por ejemplo, mov axe, 243 y todavía estaríamos habilitando el LED en la línea F041h cuando hagamos mov F041h, ya que estamos usando la misma dirección. Usted ve, hay líneas de dirección y hay líneas de datos. Entonces, cuando se dirige a 3F8 en COM1 o cualquiera que sea la dirección, el mapa de memoria de E / S simplemente está enviando una señal a un puerto, por ejemplo, ps / 2, y una puerta y está verificando si tiene 1110000100 en las líneas, es decir, 11 es 3 1000 es F y 0100 es 8, ver conversión de binario a hexadecimal. Si aparecen voltajes altos en esas posiciones de bit donde hay un 1, entonces el puerto, por ejemplo, rs232 o ps / 2, se establece en activo, es decir, está habilitado, esto habilita los pestillos, mediante la señal de habilitación del chip CE o el chip CS seleccione simple. 8 instrucciones, podría ser, por ejemplo, mov axe, 243 y todavía estaríamos habilitando el LED en la línea F041h cuando hagamos mov F041h, ya que estamos usando la misma dirección. Usted ve, hay líneas de dirección y hay líneas de datos. Entonces, cuando se dirige a 3F8 en COM1 o cualquiera que sea la dirección, el mapa de memoria de E / S simplemente está enviando una señal a un puerto, por ejemplo, ps / 2, y una puerta y está verificando si tiene 1110000100 en las líneas, es decir, 11 es 3 1000 es F y 0100 es 8, ver conversión de binario a hexadecimal. Si aparecen voltajes altos en esas posiciones de bit donde hay un 1, entonces el puerto, por ejemplo, rs232 o ps / 2, se establece en activo, es decir, está habilitado, esto habilita los pestillos, mediante la señal de habilitación del chip CE o el chip CS seleccione simple. ya que estamos usando la misma dirección. Usted ve, hay líneas de dirección y hay líneas de datos. Entonces, cuando se dirige a 3F8 en COM1 o cualquiera que sea la dirección, el mapa de memoria de E / S simplemente está enviando una señal a un puerto, por ejemplo, ps / 2, y una puerta y está verificando si tiene 1110000100 en las líneas, es decir, 11 es 3 1000 es F y 0100 es 8, ver conversión de binario a hexadecimal. Si aparecen voltajes altos en esas posiciones de bit donde hay un 1, entonces el puerto, por ejemplo, rs232 o ps / 2, se establece en activo, es decir, está habilitado, esto habilita los pestillos, mediante la señal de habilitación del chip CE o el chip CS seleccione simple. ya que estamos usando la misma dirección. Usted ve, hay líneas de dirección y hay líneas de datos. Entonces, cuando se dirige a 3F8 en COM1 o cualquiera que sea la dirección, el mapa de memoria de E / S simplemente envía una señal a un puerto, por ejemplo, ps / 2, y una compuerta y comprueba si tiene 1110000100 en las líneas, es decir, 11 es 3 1000 es F y 0100 es 8, ver conversión de binario a hexadecimal. Si aparecen voltajes altos en esas posiciones de bit donde hay un 1, entonces el puerto, por ejemplo, rs232 o ps / 2, se establece en activo, es decir, está habilitado, esto habilita los pestillos, mediante la señal de habilitación del chip CE o el chip CS seleccione simple. 11 es 3 1000 es F y 0100 es 8, vea la conversión de binario a hexadecimal. Si aparecen voltajes altos en esas posiciones de bit donde hay un 1, entonces el puerto, por ejemplo, rs232 o ps / 2, se establece en activo, es decir, está habilitado, esto habilita los pestillos, mediante la señal de habilitación del chip CE o el chip CS seleccione simple. 11 es 3 1000 es F y 0100 es 8, vea la conversión de binario a hexadecimal. Si aparecen voltajes altos en esas posiciones de bit donde hay un 1, entonces el puerto, por ejemplo, rs232 o ps / 2, se establece en activo, es decir, está habilitado, esto habilita los pestillos, mediante la señal de habilitación del chip CE o el chip CS seleccione simple.
En un pestillo es el pin E Enable u OE active low output enable. Es decir, con el ejemplo descrito anteriormente, usamos las direcciones para seleccionar (decodificando) QUÉ dispositivo de E / S queremos usar (es decir, en el ejemplo, el LED se enciende, si ese dispositivo de E / S está seleccionado. Entonces esta es la línea de activación ENTONCES, una vez que se selecciona el dispositivo de E / S, ENTONCES los datos pasan del bus de datos (D0..7 en los viejos tiempos, o ejemplo D0..63 ahora para una computadora de 64 bits), a través de los pestillos octales 373 en el viejo días, estos son circuitos tipo flip flop tipo D que almacenan los datos dentro de los flip flops. Con un borde de reloj alto activo, los datos pasan y se almacenan. Este borde de reloj vendrá de la señal 'DATA RDY' en la señal de datos , esto tiene varios nombres, no sé cuál es el nombre ahora, así que para 64 bits, tenemos 8 pestillos octales. Y usan pestillos bidireccionales para controlar los datos de cualquier manera o de tres estados, de modo que cuando no se usa el dispositivo de E / S, las líneas de datos están en el estado de alta impedancia. Por lo tanto, selecciona el dispositivo de E / S con una combinación en las líneas de dirección, este es el número, por ejemplo, 3f8h en OUT 3F8h, 7, y los datos, aquí en el ejemplo 7, es lo que se pasa en las líneas de datos, en con el comando OUT, los datos pasan OUT al pestillo de datos y salen al dispositivo de E / S. Si tuviera IN, estaría haciendo un comando, por ejemplo, IN 3f8h, 800h, (espero, pero no sé la sintaxis del ensamblador x86), lo que quiero decir es que, para IN, está ingresando los datos del líneas de datos (después de haber seleccionado la dirección, por ejemplo, aquí 3f7h, que selecciona ESE dispositivo de E / S), estos datos provienen del dispositivo de E / S, a través de los flip flops tipo D en el pestillo de datos (uno para cada bit de las líneas del bus de datos), y se ingresa a los pines D0..7 o (D0..63 en PC modernas) en la unidad de microprocesador MPU ) En este ejemplo, puse IN 3f8h, 800h, para mostrar que una vez que entran los datos, se almacenan en la dirección 800h. La sintaxis de x86 creo que es diferente, probablemente tendría que hacer IN 3f8h, ah o algo similar, es decir, en un registro primero con los datos entrantes, luego MOV 800h, ah es decir, mover los datos a la memoria ubicación en la RAM, (si desea almacenarlo), o hacer algo más con ah etc. ah es un ejemplo de registro, podría ser cualquiera, al, bh, bl, etc. lo que sea, pero verifique la sintaxis, cada sistema ensamblador es ligeramente diferente, no soy un experto en x86. De nuevo, estoy usando 3f8h como ejemplo de dirección de E / S, hay cientos,
Mientras que cuando accede a la memoria (la RAM, por ejemplo, RAM estáticas de 64 bytes y RAM dinámicas en los años 70, 8K SRAM y DRAM en los 80, las filas de SIMMS tienen cada una unos pocos megabytes cada una (módulo de memoria en línea individual) en los 90 y ahora está en forma de módulos DDR que contienen módulos DIMM, módulos de memoria dual en línea, no lo he comprobado, pero lo último probablemente sin duda cada uno tiene unos pocos gigabytes en cada pequeño chip), si no es una dirección de E / S pocas direcciones son direcciones de E / S, hoy en día la memoria tiene millones de veces o más de probabilidades de estar en el espacio de direcciones que la E / S en una PC moderna), todavía usa las mismas instrucciones de lectura, escritura y datos en la memoria, pero no controlando algunos circuitos lógicos externos que buscan esos bits, en cambio, los pines de dirección y datos están conectados directamente a los chips de RAM.
En el código de máquina, el direccionamiento de E / S y memoria simplemente parece lo mismo, como si ambos fueran accesos a la memoria, pero lo que sucede físicamente es totalmente diferente en el circuito electrónico real.