(Consulta) ¿Por qué los procesadores de 16 bit solo pueden acceder a 1MB de RAM?

Iniciado por class_OpenGL, 3 Enero 2016, 02:36 AM

0 Miembros y 1 Visitante están viendo este tema.

class_OpenGL

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

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

MCKSys Argentina

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


class_OpenGL

Cita de: Wikipediasegment: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

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

MCKSys Argentina

La explicación a tu pregunta es ésta (sección "Real mode" de 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!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


class_OpenGL


Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL