{"id":26110,"date":"2020-12-06T19:12:35","date_gmt":"2020-12-07T01:12:35","guid":{"rendered":"https:\/\/goldenti.com\/site\/?p=26110"},"modified":"2020-12-06T19:12:37","modified_gmt":"2020-12-07T01:12:37","slug":"coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu","status":"publish","type":"post","link":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/","title":{"rendered":"Coherencia de cach\u00e9, as\u00ed se coordinan los n\u00facleos de la CPU"},"content":{"rendered":"\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/hardzone.es\/app\/uploads-hardzone.es\/2020\/09\/cpuregistrosinstruccionesportada.jpg\" alt=\"cpuregistrosinstruccionesportada\" \/><\/figure>\n\n\n\n<p>Si hab\u00e9is visto cualquier diagrama de cualquier CPU multin\u00facleo, independientemente del dise\u00f1ador, fabricante e incluso el tipo de sistema siempre os habr\u00e9is encontrado con el diagrama:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/hardzone.es\/app\/uploads-hardzone.es\/2020\/11\/CPU-Multinucleo.jpg\" alt=\"CPU-Multin\u00facleo\" class=\"wp-image-515806\" \/><\/figure><\/div>\n\n\n\n<p>El motivo de ello tiene que ver con lo que llamamos coherencia de cache.<\/p>\n\n\n\n<p>Para entender el concepto tenemos que imaginarnos lo siguiente:&nbsp; Vamos a suponer que hay varias personas personas cada una delante de una terminal , todas ellas editando el mismo archivo que se encuentra en el servidor. Si una de estas personas cambia una parte del documento entonces entonces se refleja en la pantalla del resto de los editores.<\/p>\n\n\n\n<p>Pero para ello hace falta un sistema que lo que haga que cada vez que se realice un cambio en el documento transmita la informaci\u00f3n al resto de pantallas de tal manera que el cambio se pueda ver a tiempo real. Pero un d\u00eda ese sistema falla y de repente todo se descordina, pese a que sus ojos est\u00e1n editando el mismo documento en realidad cada una de las personas tiene su versi\u00f3n del mismo y cualquier cambio que realicen sobre el documento ser\u00e1 independiente al que hagan otros.<\/p>\n\n\n\n<p>Aplicad esto a un programa inform\u00e1tico y entonces tenemos el caos absoluto, donde un peque\u00f1o cambio realizado por un n\u00facleo en la memoria RAM del que el resto no sean conscientes puede suponer un fallo critico en el sistema o la ejecuci\u00f3n de datos erroneos.<\/p>\n\n\n\n<p>Coherencia de caches y jerarqu\u00eda<\/p>\n\n\n\n<p>Las caches almacena una copia de una parte de la memoria RAM, la m\u00e1s cercana al c\u00f3digo que se esta ejecutando en este momento por la CPU, por lo que las caches no tienen una versi\u00f3n actualizada del contenido de la memoria sino una copia. Pensad en ella como las pantallas de las terminales del s\u00edmil del que os hemos hablado m\u00e1s arriba.<\/p>\n\n\n\n<p>Pero en los sistemas multin\u00facleo se a\u00f1ade un nivel de cache adicional, la cual se encuentra entre el controlador de memoria y los niveles anteriores de la cache, a la cual se conectan todos ellos.<\/p>\n\n\n\n<p>Esto se hace as\u00ed por el hecho que hacer que varios n\u00facleos accedan a la memoria RAM al mismo tiempo supondr\u00eda una serie de problemas y conflictos, utilizando una cache global en el \u00faltimo nivel tiene consecuencia que solo es necesario actualizar la linea en esa cache para que las caches m\u00e1s cercanas al procesador se actualicen, ya que estas tienen copias de secciones de las caches en niveles posteriores.<\/p>\n\n\n\n<p>por lo que los n\u00facleos acceden de uno a uno a la memoria y se utilizan las caches para reducir la cantidad de accesos de los mismos. Claro esta que si hay una copia de una linea de la memoria RAM en las caches y esta es modificada, entonces tiene que haber un mecanismo que actualice las copias de esa linea de memoria en el resto de n\u00facleos del procesador e incluso en la propia memoria.<\/p>\n\n\n\n<p>Si no existiese la cache compartida de \u00faltimo nivel, entonces cada uno de los n\u00facleos a la hora de comprobar la coherencia del contenido de sus caches con la RAM tendr\u00edan que acceder a la RAM varias veces de manera continuada, con la cache compartida de \u00faltimo nivel se evita este problema en parte ya que pese a que no todo el contenido de las caches de nivel m\u00e1s alejado al procesador esta en las caches m\u00e1s cercanas al procesador, las que est\u00e1n en los niveles m\u00e1s alejados al procesador si que guardan copia de las que est\u00e1n m\u00e1s cercanas al mismo.<\/p>\n\n\n\n<p>Por lo que de cara a mantener la coherencia de cache, es mucho m\u00e1s econ\u00f3mico de cara al dise\u00f1o no cambiar todas las l\u00edneas de las diferentes caches privadas de cada n\u00facleo sino que actualizando la cache de \u00faltimo nivel se actualizan el resto de caches m\u00e1s cercanas al procesador.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">El proceso de actualizaci\u00f3n de las caches<\/h3>\n\n\n\n<p>\u00bfPero que ocurre si dos n\u00facleos quieren acceder al mismo dato? Aqu\u00ed es donde aparecen dos m\u00e9todos.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>El primer m\u00e9todo es invalidar todas las escrituras a las copias de la misma l\u00ednea de memoria en el resto de caches excepto la del n\u00facleo que la esta utilizando en este momento.<\/li><li>El segundo m\u00e9todo es hacer que cuando un n\u00facleo modifique una l\u00ednea de la cache entonces se modifiquen tambi\u00e9n las copias de esa misma l\u00ednea en el resto de caches de la CPU.<\/li><\/ul>\n\n\n\n<p>s las caches entre si, el segundo bit indica si el contenido de esa linea de cache y el de la de la memoria RAM de la que es supuestamente copia es el mismo.<\/p>\n\n\n\n<p>As\u00ed pues, cuando el primer n\u00facleo escribe sobre su l\u00ednea de cache y modifica el contenido de la l\u00ednea entonces marca el bit de coherencia con la memoria, cuando ocurre eso toda l\u00ednea de cache que apunta a esa direcci\u00f3n de memoria es marcada como \u00abreservada\u00bb, a continuaci\u00f3n el contenido de la l\u00ednea de memoria a la que apuntan todas esas caches es modificado con el nuevo contenido.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Coherencia de caches y jerarqu\u00eda<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/hardzone.es\/app\/uploads-hardzone.es\/2020\/11\/Jerarquia-Caches.jpg\" alt=\"Jerarquia Caches\" class=\"wp-image-515905\" \/><\/figure><\/div>\n\n\n\n<p>Como comprobar todos los niveles de cache de la CPU (o GPU) con la memoria ser\u00eda un trabajo tit\u00e1nico que har\u00eda sumamente lento ay complejo al procesador, la comprobaci\u00f3n entre la coherencia del contenido de la cache y la RAM se hace entre la cache de \u00faltimo nivel de CPU (o GPU) y la memoria. Esto se hace as\u00ed porque las caches de niveles anteriores y por tanto m\u00e1s cercanas al procesador no est\u00e1n conectadas directamente a la RAM sino al siguiente nivel de cache, de tal manera que la coherencia del contenido no se comprueba respecto a la RAM sino respecto al siguiente nivel de la cache.<\/p>\n\n\n\n<p>Tened que el contenido de los diferentes niveles de la cache de un procesador es como la de una mu\u00f1eca rusa. Si por ejemplo tenemos una cache de tres niveles, entonces el tercer nivel tendr\u00e1 el contenido suyo y de los dos primeros niveles, el segundo nivel tendr\u00e1 el contenido suyo y el primer nivel solo el suyo propio. Por eso el sistema de coherencia entre cache y memoria solo necesita cambiar el \u00faltimo nivel de la cache, porque cualquier cambio en este ser\u00e1 un cambio en los niveles anteriores.<\/p>\n\n\n\n<p>Fuente: hardzone.es\/tutoriales\/rendimiento\/coherencia-cache\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si hab\u00e9is visto cualquier diagrama de cualquier CPU multin\u00facleo, independientemente del dise\u00f1ador, fabricante e incluso el [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":26111,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-26110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticas"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Coherencia de cach\u00e9, as\u00ed se coordinan los n\u00facleos de la CPU -<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Coherencia de cach\u00e9, as\u00ed se coordinan los n\u00facleos de la CPU -\" \/>\n<meta property=\"og:description\" content=\"Si hab\u00e9is visto cualquier diagrama de cualquier CPU multin\u00facleo, independientemente del dise\u00f1ador, fabricante e incluso el [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-07T01:12:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-07T01:12:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/goldenti.com\/site\/wp-content\/uploads\/2020\/12\/Captura-14.png\" \/>\n\t<meta property=\"og:image:width\" content=\"840\" \/>\n\t<meta property=\"og:image:height\" content=\"438\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Coherencia de cach\u00e9, as\u00ed se coordinan los n\u00facleos de la CPU\",\"datePublished\":\"2020-12-07T01:12:35+00:00\",\"dateModified\":\"2020-12-07T01:12:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/\"},\"wordCount\":1111,\"image\":{\"@id\":\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/goldenti.com\/site\/wp-content\/uploads\/2020\/12\/Captura-14.png\",\"articleSection\":[\"Noticas\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/\",\"url\":\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/\",\"name\":\"Coherencia de cach\u00e9, as\u00ed se coordinan los n\u00facleos de la CPU -\",\"isPartOf\":{\"@id\":\"https:\/\/goldenti.com\/site\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/goldenti.com\/site\/wp-content\/uploads\/2020\/12\/Captura-14.png\",\"datePublished\":\"2020-12-07T01:12:35+00:00\",\"dateModified\":\"2020-12-07T01:12:37+00:00\",\"author\":{\"@id\":\"\"},\"breadcrumb\":{\"@id\":\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#primaryimage\",\"url\":\"https:\/\/goldenti.com\/site\/wp-content\/uploads\/2020\/12\/Captura-14.png\",\"contentUrl\":\"https:\/\/goldenti.com\/site\/wp-content\/uploads\/2020\/12\/Captura-14.png\",\"width\":840,\"height\":438},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/goldenti.com\/site\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Coherencia de cach\u00e9, as\u00ed se coordinan los n\u00facleos de la CPU\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/goldenti.com\/site\/#website\",\"url\":\"https:\/\/goldenti.com\/site\/\",\"name\":\"\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/goldenti.com\/site\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"\",\"url\":\"https:\/\/goldenti.com\/site\/author\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Coherencia de cach\u00e9, as\u00ed se coordinan los n\u00facleos de la CPU -","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/","og_locale":"es_ES","og_type":"article","og_title":"Coherencia de cach\u00e9, as\u00ed se coordinan los n\u00facleos de la CPU -","og_description":"Si hab\u00e9is visto cualquier diagrama de cualquier CPU multin\u00facleo, independientemente del dise\u00f1ador, fabricante e incluso el [&hellip;]","og_url":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/","article_published_time":"2020-12-07T01:12:35+00:00","article_modified_time":"2020-12-07T01:12:37+00:00","og_image":[{"width":840,"height":438,"url":"https:\/\/goldenti.com\/site\/wp-content\/uploads\/2020\/12\/Captura-14.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#article","isPartOf":{"@id":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/"},"author":{"name":"","@id":""},"headline":"Coherencia de cach\u00e9, as\u00ed se coordinan los n\u00facleos de la CPU","datePublished":"2020-12-07T01:12:35+00:00","dateModified":"2020-12-07T01:12:37+00:00","mainEntityOfPage":{"@id":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/"},"wordCount":1111,"image":{"@id":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#primaryimage"},"thumbnailUrl":"https:\/\/goldenti.com\/site\/wp-content\/uploads\/2020\/12\/Captura-14.png","articleSection":["Noticas"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/","url":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/","name":"Coherencia de cach\u00e9, as\u00ed se coordinan los n\u00facleos de la CPU -","isPartOf":{"@id":"https:\/\/goldenti.com\/site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#primaryimage"},"image":{"@id":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#primaryimage"},"thumbnailUrl":"https:\/\/goldenti.com\/site\/wp-content\/uploads\/2020\/12\/Captura-14.png","datePublished":"2020-12-07T01:12:35+00:00","dateModified":"2020-12-07T01:12:37+00:00","author":{"@id":""},"breadcrumb":{"@id":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#primaryimage","url":"https:\/\/goldenti.com\/site\/wp-content\/uploads\/2020\/12\/Captura-14.png","contentUrl":"https:\/\/goldenti.com\/site\/wp-content\/uploads\/2020\/12\/Captura-14.png","width":840,"height":438},{"@type":"BreadcrumbList","@id":"https:\/\/goldenti.com\/site\/coherencia-de-cache-asi-se-coordinan-los-nucleos-de-la-cpu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/goldenti.com\/site\/"},{"@type":"ListItem","position":2,"name":"Coherencia de cach\u00e9, as\u00ed se coordinan los n\u00facleos de la CPU"}]},{"@type":"WebSite","@id":"https:\/\/goldenti.com\/site\/#website","url":"https:\/\/goldenti.com\/site\/","name":"","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/goldenti.com\/site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"","url":"https:\/\/goldenti.com\/site\/author\/"}]}},"_links":{"self":[{"href":"https:\/\/goldenti.com\/site\/wp-json\/wp\/v2\/posts\/26110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/goldenti.com\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/goldenti.com\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/goldenti.com\/site\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/goldenti.com\/site\/wp-json\/wp\/v2\/comments?post=26110"}],"version-history":[{"count":1,"href":"https:\/\/goldenti.com\/site\/wp-json\/wp\/v2\/posts\/26110\/revisions"}],"predecessor-version":[{"id":26112,"href":"https:\/\/goldenti.com\/site\/wp-json\/wp\/v2\/posts\/26110\/revisions\/26112"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/goldenti.com\/site\/wp-json\/wp\/v2\/media\/26111"}],"wp:attachment":[{"href":"https:\/\/goldenti.com\/site\/wp-json\/wp\/v2\/media?parent=26110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/goldenti.com\/site\/wp-json\/wp\/v2\/categories?post=26110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/goldenti.com\/site\/wp-json\/wp\/v2\/tags?post=26110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}