Durante años se ha repetido que las arquitecturas con modelo de memoria débil —como ARM y RISC-V— escalan mucho mejor en sistemas multinúcleo que las de modelo fuerte, como x86 o SPARC. La premisa implícita es que esas CPUs cumplen sus reglas de ordenación en cada acceso a memoria. No es así: casi todas las CPU ejecutan los accesos de forma optimista, asumiendo que la mayoría de las lecturas toman datos no modificados por otro núcleo y que las escrituras no están contendidas. Cuando aparece una contención —es decir, otro agente modifica la línea de caché entre la ejecución de la instrucción y su commit—, se detecta la posible violación y se retrocede el estado para reintentar. Esa estrategia de "confiar, pero verificar" la usan tanto arquitecturas fuertes como débiles. La diferencia real no es si una cumple el modelo y la otra no, sino cuántas ordenaciones legales admite cada una en caso de contención: las máquinas fuertemente ordenadas conservan metadatos para casi todas las operaciones en vuelo, mientras que las débiles trabajan sobre todo con accesos relajados y barreras. El coste de modelos como el TSO de x86 no es nulo, pero medirlo no es trivial. Como prueba empírica, los servidores actuales con cientos de núcleos —ya sean ARM o x86— muestran un comportamiento muy parecido: les va bien en cargas 'shared nothing', dependen de NUMA y se degradan ante verdaderos cuellos de contención. La moraleja práctica es reducir la contención, no intentar resolverla más rápido.
El mito del orden de memoria en las CPU: fuerte y débil rinden parecido
Fuentes:
Memory ordering in CPUs
