Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: class_OpenGL en 3 Enero 2016, 02:36 am



Título: (Consulta) ¿Por qué los procesadores de 16 bit solo pueden acceder a 1MB de RAM?
Publicado por: class_OpenGL en 3 Enero 2016, 02:36 am
Yo sé que para acceder a la memoria, se que se usan dos registros de 16 bits (uno se aprovecha entero, y el otro se aprovecha parte, para así sumar 20 bits, de donde viene la limitación). La duda es, ¿por qué no usaron esos dos registros al completo para así poder tener segmentos de 4GB? Gracias


Título: Re: (Consulta) ¿Por qué los procesadores de 16 bit solo pueden acceder a 1MB de RAM?
Publicado por: MCKSys Argentina en 3 Enero 2016, 02:58 am
Hola!

Revisa ésto (https://en.wikipedia.org/wiki/X86_memory_segmentation) y ésto (la parte que dice "16-bit application") (https://en.wikipedia.org/wiki/16-bit) y ésto (https://en.wikipedia.org/wiki/Intel_Memory_Model).  :P

Saludos!


Título: Re: (Consulta) ¿Por qué los procesadores de 16 bit solo pueden acceder a 1MB de RAM?
Publicado por: class_OpenGL en 3 Enero 2016, 05:09 am
Cita de: Wikipedia
segment:offset, typically in hexadecimal notation. In real mode, in order to calculate the physical address of a byte of memory, the hardware shifts the contents of the appropriate segment register 4 bits left (effectively multiplying by 16), and then adds the offset.

For example, the logical address 7522:F139 yields the 20-bit physical address:
75220 + F139 = 84359

Eso creo que lo entiendo. Mi duda es que si se podría hacer hecho que una dirección de 32 bits lineal se dividiese en dos y se guardase en registros de 16 bits individuales. Cada parte de esa dirección no tendría porque tener un significado (tales como selector y desplazamiento). A lo mejor no capto la idea global y me estoy haciendo un lío yo solo xD


Título: Re: (Consulta) ¿Por qué los procesadores de 16 bit solo pueden acceder a 1MB de RAM?
Publicado por: MCKSys Argentina en 3 Enero 2016, 08:29 am
La explicación a tu pregunta es ésta (sección "Real mode" de x86 memory segmentation (https://en.wikipedia.org/wiki/X86_memory_segmentation)):

Citar
The effective 20-bit address space of real mode limits the addressable memory to 2^20 bytes, or 1,048,576 bytes (1 MB). This derived directly from the hardware design of the Intel 8086 (and, subsequently, the closely related 8088), which had exactly 20 address pins. (Both were packaged in 40-pin DIP packages; even with only 20 address lines, the address and data buses were multiplexed to fit all the address and data lines within the limited pin count.)

Saludos!


Título: Re: (Consulta) ¿Por qué los procesadores de 16 bit solo pueden acceder a 1MB de RAM?
Publicado por: class_OpenGL en 3 Enero 2016, 23:07 pm
Vaya, eso no lo leí xD Muchas gracias por todas tus respuestas!!