Blog Personal.

Conceptos Básicos, Feedback

Conceptos Básicos: Organización General del Hardware

Por petición en el buzón de sugerencias.

Hola Urian:

A mi me gustaría saber que diferencias hay entre un SoC como el de las nuevas consolas y la arquitectura de PC con CPU y tarjeta gráfica por separado.

Que ventajas y/o inconvenientes tiene cada tipo de arquitectura.

Es una buena pregunta para colocar en conceptos generales y que de esta manera no andeis tan perdidos con mis entradas.

#1 Sistema en un chip/System On a Chip (SoC)

Es la utilizada en consolas portátiles y los dispositivos PostPC.

La organización general de todos los SoC es la siguiente independientemente de la arquitectura interna de sus componentes.

Para empezar una memoria unificada simplifica la memoria a un solo pozo y un solo proveedor pero no por ello esta desprovisto de desventajas. A nivel físico todos ellos comparten el acceso a una memoria en común pero hay que diferenciar lo que es la memoria física en común de la forma en la que los procesadores internos ven dicha memoria y por tanto el direccionamiento de cada procesador,

obviamente el puente norte ha de tener un mecanismo para interpretar el direccionamiento de cada tipo de procesador, lo cual es un infierno para los ingenieros de hardware.

Es por ello que en los últimos años todas las arquitecturas han ido a un espacio de direccionamiento común con la CPU. El hecho de tener diferentes direccionamientos es como si dentro de una misma ciudad hubiesen varias empresas de correos y cada uno con un callejero y un sistema de direcciones distinto que enviasen los paquetes y las cartas a una oficina central que tuviese que trasladar esas direcciones, el hecho de unificar el direccionamiento a la memoria en los SoC elimina por completo la necesidad de dicha oficina central.

El otro problema es la contención, el acceso a la memoria es secuencial. Imaginad el acceso a memoria como una cola de gente…

Dependiendo del tipo de memoria que utilicemos tendremos varias colas de gente (Canales, Puertos a Memoria) que nos permitirán acortar dichas colas pero el problema de los SoC es ese, que tienden a la contención y su rendimiento en cuanto a memoria no es el ideal.

Si tenemos varios canales podemos asignar un acceso a memoria por canal y que no se molesten pero si tenemos un solo canal entonces el acceso a memoria será:

Tiempo de Acceso: Acceso componente A+Acceso Componente B+Contención.

El Tiempo de Acceso afecta también al ancho de banda y la contención es el tiempo entre cambiar de la lista de peticiones de un componente a otro. Es decir, aunque la cola es lineal los componentes del SoC envian sus peticiones a memoria en bloque y hay una una persona controlando que entre cada grupo, cuando toma preferencia otro grupo diferente al actual, para el avance de la cola y le dice que se adelante el nuevo grupo, pues ese tiempo en hacer ese proceso se le llama contención.

El otro elemento bueno de los SoC es la distancia entre componentes por lo que la latencia de comunicación entre ellos y se reduce. El mismo principio de la latencia de instrucciones con la distancia se aplica aquí y en sistemas dependientes del timing de las instrucciones esto es mortal. ¿Un ejemplo? Cuando IBM, AMD y Microsoft realizaron la CGPU de Xbox 360 S (SoC) ocurrió que la GPU estaba tan cerca de la CPU que el timing de comunicación entre CPU y GPU se acorto y el rendimiento era superior. Microsoft decidió no dejar en evidencia el modelo original y añadió una pieza que añadia latencia en el proceso.

#2 Sistema NUMA

Es la utilizada en ordenadores personales.

Su diagrama es algo más complejo, bastante más y es el utilizado en el mundo de los ordenadores personales.

Aquí cada elemento del sistema tiene su puente norte y su memoria, el sistema se le llama NUMA porque son las siglas de Non-Unified Memory Architecture o Arquitectura de Memoria no Unificada donde cada componente tiene su RAM privada y por tanto no hay problemas de contención, es decir, cada nucleo tiene su oficina de correos.

¿Pero como se comunican? Hay dos formas distintas, la primera de ellas es añadir pines adicionales para E/S en la CPU y conectarlos a los periféricos. Ciertas instrucciones de esas CPU no utilizan los pines de direccionamiento a la RAM sino unos pines adicionales para conectar a E/S. La segunda consiste en asignar de la RAM principal ciertas direcciones de memoria al contacto con ciertos periféricos. Cuando escribimos en esas direcciones hay un mecanismo de copia que lo que hace es leer de esas direcciones concretas y pasarlas a o desde la memoria del periférico a o desde la RAM principal.

Es aqui donde entran en juego las unidades DMA que vemos en muchas arquitecturas. Una unidad DMA esta conectada al PIN de «Pausa» de la CPU y tiene la capacidad de acceder a la RAM principal aparte del puente norte de la CPU. ¿Que es lo que hace? Poner en Pausa la CPU y colarse, como si la CPU que tiene su propia cola de gente de repente viese como alguien parase la cola y dejase entrar un grupo de gente al servicio de correos que es la memoria, cuando saliesen de hacer lo que tienen que hacer simplemente dejarían continuar la fila, simplemente ponen en bajo el PIN de pausa y dejan que la cola de gente de la CPU pueda acceder a su oficina de correos. El caso contrario también puede ocurrir pero lo normal es que sean los periféricos los que acceden a la RAM principal, más que nada porque es menos complicado y más fácil de implementar a nivel del diseño del hardware.

#3 Modelos Mixtos

Es el caso de los SoC para consolas de videojuegos que son un caso especial que se diferencian del modelo PostPC del caso #1 por la forma que tienen de acceder a la RAM desde la perspectiva de la GPU.

En este caso tenemos dos colas si o si para acceder a la RAM unificada (Oficina de Correos) pero se crea contención si hay una sola puerta a la oficina (Canales de memoria o puertos de la RAM) . La diferencia es que el Puente Norte de la GPU tiene preferencia y si es necesario puede bloquear el acceso al Puente Norte principal si hay un solo canal de acceso.

Es por ello por ejemplo que en las consolas de la generación de sobremesa que empieza en 2020 se utiliza memoria GDDR6 donde el Puente Norte de la GPU tiene acceso exclusivo a uno de los canales y en el segundo canal funcionan de manera conmutada en el acceso dependiendo de la dirección de memoria a la que se accede el segundo canal accede el Puente Norte de la CPU o el de la GPU.

Esto es todo, tenéis el Discord y los comentarios de esta entrada para comentarla.

0 0 vote
Article Rating
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Tokra_Kree

Gracias Urian. Muy interesante!

Entiendo que en las nuevas consolas unicamente se producirá contención de memoria cuando la GPU tenga que acceder al canal compartido.

jonathan

me habria gustado ver ese rendimiento extra de xbox 360 sin esa pieza que agregaba latencia