[Switch] chipset de placa base y asignación de memoria

Motherboard Chipset

Título original: Motherboard Chipsets and the Memory Map

Dirección original: http://duartes.org/gustavo/blog/



[Nota: tengo un nivel limitado, tengo que elegir algunos artículos maravillosos de expertos extranjeros para traducir. Déjame revisarlo yo mismo y compartirlo contigo. ]



Voy a escribir una serie de artículos sobre el interior de la computadora para revelar cómo funcionan los núcleos de los sistemas operativos modernos. Espero que estos artículos sean útiles para los entusiastas de la informática y los programadores, especialmente aquellos que están interesados ​​en estos temas pero no tienen ningún conocimiento. El foco de la discusión estuvo en los procesadores Linux, Windows e Intel. Mi afición es estudiar el interior del sistema. He escrito mucho código en modo kernel, pero no lo he escrito por un tiempo. Este primer artículo describe el diseño de las placas base Intel modernas, cómo la CPU accede a la memoria y el mapa de memoria del sistema.



Como punto de partida, echemos un vistazo a cómo las computadoras Intel actuales conectan los componentes. La siguiente figura muestra los componentes principales de la placa base:

Un diagrama esquemático de una placa base moderna, el Puente Norte y el Puente Sur forman un conjunto de chips.



Cuando mire la imagen, tenga en cuenta el hecho crucial de que la CPU no sabe a qué está conectada. CPU solo a través de un grupo puntada Al interactuar con el mundo exterior, no le importa lo que tenga el mundo exterior. Podría ser una placa base de computadora, pero también podría ser una tostadora, un enrutador de red, un dispositivo implantado en el cerebro o un banco de pruebas de CPU. La CPU interactúa con el mundo exterior de tres formas: espacio de direcciones de memoria, espacio de direcciones de E / S e interrupciones.

En este momento, solo nos preocupamos por la placa base y la memoria. El portal que se comunica con el mundo exterior en la placa base es el bus frontal, que conecta la CPU al puente norte. Este bus se utiliza siempre que la CPU necesita leer o escribir memoria. La CPU transfiere la dirección de memoria física que desea leer y escribir a través de una parte de los pines, mientras que otros pines se utilizan para enviar los datos que se escribirán o recibirán. Un Intel Core 2 QX6600 tiene 33 pines para transferir direcciones de memoria física (que pueden representar 233 ubicaciones de direcciones) y 64 pines para recibir / transmitir datos (por lo que los datos se transfieren en canales de 64 bits, que son 8 bytes de datos). Pedazo). Esto permite que la CPU controle 64 GB de memoria física (233 direcciones multiplicadas por 8 bytes), aunque la mayoría de los conjuntos de chips solo pueden admitir 8 GB de RAM.

Ahora es la parte más difícil de entender. Podríamos haber pensado que la memoria se refiere a la RAM y es leída y escrita por una variedad de programas. De hecho, Northbridge reenvía la mayoría de las solicitudes de memoria de la CPU al administrador de RAM, pero no todas. La dirección de memoria física también se puede utilizar para la comunicación entre varios dispositivos en la placa base. Este método de comunicación se llama Mapeo de memoria E / S. Dichos dispositivos incluyen tarjetas gráficas, la mayoría de las tarjetas PCI (como escáneres o tarjetas SCSI) y memoria flash en el BIOS.

Cuando North Bridge recibe una solicitud de acceso a la memoria física, debe decidir a dónde reenviar la solicitud: ¿Se envía a la RAM? ¿O es una tarjeta gráfica? El problema específico a quién está determinado por la tabla de asignación de direcciones de memoria. La tabla de mapeo conoce el dispositivo correspondiente a cada área de dirección de memoria física. La mayoría de las direcciones se asignan a la RAM, y la tabla de asignación utiliza las direcciones restantes para informar al chipset qué dispositivo está respondiendo a las solicitudes de acceso para esta dirección. Estas direcciones de memoria asignadas al dispositivo forman un hueco clásico entre 640 KB y 1 MB de memoria de PC. Cuando las direcciones de memoria se reservan para tarjetas gráficas y dispositivos PCI, se crean agujeros más grandes. Es por eso que el sistema operativo de 32 bits Incapaz de usar todo 4 GB de RAM. En Linux, / proc / iomem Este archivo enumera sucintamente estos rangos de direcciones vacíos. La siguiente figura muestra un mapa de memoria típico formado por la dirección de memoria física de 4GB de gama baja de Intel PC:

En el sistema Intel, el diseño del espacio de direcciones de memoria de 4GB de gama baja.

La dirección y el rango reales dependen de la placa base en particular y de los dispositivos conectados a la computadora, pero para la mayoría de los sistemas Core 2, la situación es muy parecida a la de la imagen de arriba. Todas las áreas marrones están mapeadas por la dirección del dispositivo. Recuerde, todos estos se utilizan en el bus de la placa base. Dirección física . En la CPU interno (como el programa que estamos escribiendo y ejecutando), usando Dirección lógica La CPU debe traducirlo a una dirección física antes de que pueda publicarse en el bus para acceder a la memoria.

Esta regla de convertir direcciones lógicas en direcciones físicas es más complicada y depende de la CPU en ese momento. Modo operativo (modo real, modo protegido de 32 bits, modo protegido de 64 bits). Independientemente del mecanismo de traducción utilizado, el modo de funcionamiento de la CPU determina a cuánta memoria física se puede acceder. Por ejemplo, cuando la CPU está operando en modo protegido de 32 bits, solo puede direccionar 4GB de espacio de direcciones físicas (por supuesto, hay una excepción llamada Extensión de dirección física Pero por el momento, ignore esta tecnología). Dado que la dirección física superior de 1 GB está asignada al dispositivo en la placa base, la CPU en realidad puede usar solo alrededor de 3 GB de RAM (a veces incluso menos, he usado una computadora con Vista instalada, solo tiene 2,4 GB disponibles)). Si la CPU está funcionando Modo real , entonces solo podrá abordar 1 MB de espacio de direcciones físicas (este es el único modo compatible con los procesadores Intel anteriores). Si la CPU está operando en modo protegido de 64 bits, puede manejar 64 GB de espacio de direcciones (aunque pocos conjuntos de chips admiten una RAM tan grande). Cuando está en modo protegido de 64 bits, es posible que la CPU acceda al área del espacio de RAM que ha sido mapeada por el dispositivo en la placa base (es decir, acceder a la RAM debajo del orificio). Para lograr esto, necesita usar una dirección más alta que el área de dirección RAM cargada en el sistema. Esta técnica se llama Reciclaje (recuperación), sino también la cooperación del chipset.

Estos conocimientos sobre la memoria allanarán el camino para el próximo artículo. La próxima vez exploraremos el proceso de arranque de la máquina: desde el encendido hasta que el cargador de arranque esté listo para saltar y ejecutar el kernel del sistema operativo. Si desea obtener más información sobre estas cosas, le recomiendo encarecidamente el manual de Intel. Aunque he enumerado información de primera mano, el manual de Intel está muy bien escrito y es preciso. Aquí hay alguna información:

 “Hoja de datos para el chipset Intel G35” describe un chipset representativo que es compatible con el procesador Core 2. Esta es también la principal fuente de información para este artículo.

 “Hoja de datos para la secuencia Intel Core 2 Quad-Core Q6000” es una hoja de datos del procesador. Registra la función de cada pin en el procesador (cuando agrupa los pines por función, no es tanto). Gran información, aunque la descripción de algunos bits es bastante vaga.

 Los Manuales para desarrolladores de software de Intel son un documento excelente. Explica maravillosamente las distintas partes de la arquitectura y no hace que la gente se sienta ambigua en absoluto. Vale la pena leer el primer volumen y el tercer volumen, la Parte A (no se deje intimidar por la palabra 'volumen', cada volumen no es largo y puede leerlo de forma selectiva).

 Pádraig Brady sugirió que me vincule a un artículo de Ulrich Drepper Excelente artículo sobre la memoria. . De hecho, es algo bueno. Tenía la intención de poner este enlace en el artículo sobre el almacenamiento, pero cuanto más se enumeren aquí, mejor.