{"id":881,"date":"2009-04-30T16:44:00","date_gmt":"2009-04-30T16:44:00","guid":{"rendered":"\/blogs\/paul\/post\/Blog-series-on-computer-memory-architectures.aspx"},"modified":"2013-01-01T23:56:13","modified_gmt":"2013-01-02T07:56:13","slug":"blog-series-on-computer-memory-architectures","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/","title":{"rendered":"Blog series on computer memory architectures"},"content":{"rendered":"<p>\n<font face=\"verdana,geneva\" size=\"2\">(Thanks to David Baffaleuf for pointing this out to me)<\/font>\n<\/p>\n<p>\n<font face=\"verdana,geneva\" size=\"2\">Ever wanted to know a bit deeper how memory works in your laptop or servers? This comprehensive series of blog posts will give you a great overview. It&#39;s very clearly written and goes very deep. At times it talks about how things show up in the Linux OS, but all the hardware details and concepts (caches, NUMA, etc) translate exactly into our world.<\/font>\n<\/p>\n<p>\n<font face=\"verdana,geneva\" size=\"2\">It covers:<\/font>\n<\/p>\n<ul>\n<li>\n<div>\n\t<a href=\"http:\/\/lwn.net\/Articles\/250967\/\"><font face=\"verdana,geneva\" size=\"2\">Part 1<\/font><\/a><font face=\"verdana,geneva\" size=\"2\"> (Introduction to memory)<\/font>\n\t<\/div>\n<\/li>\n<li>\n<div>\n\t<a href=\"http:\/\/lwn.net\/Articles\/252125\/\"><font face=\"verdana,geneva\" size=\"2\">Part 2<\/font><\/a><font face=\"verdana,geneva\" size=\"2\"> (CPU caches)<\/font>\n\t<\/div>\n<\/li>\n<li>\n<div>\n\t<a href=\"http:\/\/lwn.net\/Articles\/253361\/\"><font face=\"verdana,geneva\" size=\"2\">Part 3<\/font><\/a><font face=\"verdana,geneva\" size=\"2\"> (Virtual memory)<\/font>\n\t<\/div>\n<\/li>\n<li>\n<div>\n\t<a href=\"http:\/\/lwn.net\/Articles\/254445\/\"><font face=\"verdana,geneva\" size=\"2\">Part 4<\/font><\/a><font face=\"verdana,geneva\" size=\"2\"> (NUMA systems)<\/font>\n\t<\/div>\n<\/li>\n<li>\n<div>\n\t<a href=\"http:\/\/lwn.net\/Articles\/255364\/\"><font face=\"verdana,geneva\" size=\"2\">Part 5<\/font><\/a><font face=\"verdana,geneva\" size=\"2\"> (What programmers can do &#8211; cache optimization)<\/font>\n\t<\/div>\n<\/li>\n<li>\n<div>\n\t<a href=\"http:\/\/lwn.net\/Articles\/256433\/\"><font face=\"verdana,geneva\" size=\"2\">Part 6<\/font><\/a><font face=\"verdana,geneva\" size=\"2\"> (What programmers can do &#8211; multi-threaded optimizations)<\/font>\n\t<\/div>\n<\/li>\n<li>\n<div>\n\t<a href=\"http:\/\/lwn.net\/Articles\/257209\/\"><font face=\"verdana,geneva\" size=\"2\">Part 7<\/font><\/a><font face=\"verdana,geneva\" size=\"2\"> (Memory performance tools)<\/font>\n\t<\/div>\n<\/li>\n<li>\n<div>\n\t<a href=\"http:\/\/lwn.net\/Articles\/258154\/\"><font face=\"verdana,geneva\" size=\"2\">Part 8<\/font><\/a><font face=\"verdana,geneva\" size=\"2\"> (Future technologies)<\/font>\n\t<\/div>\n<\/li>\n<li>\n<div>\n\t<a href=\"http:\/\/lwn.net\/Articles\/258188\/\"><font face=\"verdana,geneva\" size=\"2\">Part 9<\/font><\/a><font face=\"verdana,geneva\" size=\"2\"> (Appendices and bibliography)<\/font>\n\t<\/div>\n<\/li>\n<\/ul>\n<p>\n<font size=\"2\">[Edit: And as Kalen points out in her comment below, you can get the whole thing as a PDF <a href=\"http:\/\/www.akkadia.org\/drepper\/cpumemory.pdf\">here<\/a>.]<\/font>\n<\/p>\n<p>\n<font face=\"verdana,geneva\" size=\"2\">Enjoy!<\/font>\n<\/p>\n<p>\n<font size=\"2\">PS This is something I&#39;ll start posting on in the rest of the year too, as far as SQL Server is concerned.<\/font><\/p>\n","protected":false},"excerpt":{"rendered":"<p>(Thanks to David Baffaleuf for pointing this out to me) Ever wanted to know a bit deeper how memory works in your laptop or servers? This comprehensive series of blog posts will give you a great overview. It&#39;s very clearly written and goes very deep. At times it talks about how things show up in [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[60],"tags":[],"class_list":["post-881","post","type-post","status-publish","format-standard","hentry","category-memory"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Blog series on computer memory architectures - Paul S. Randal<\/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:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Blog series on computer memory architectures - Paul S. Randal\" \/>\n<meta property=\"og:description\" content=\"(Thanks to David Baffaleuf for pointing this out to me) Ever wanted to know a bit deeper how memory works in your laptop or servers? This comprehensive series of blog posts will give you a great overview. It&#039;s very clearly written and goes very deep. At times it talks about how things show up in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/\" \/>\n<meta property=\"og:site_name\" content=\"Paul S. Randal\" \/>\n<meta property=\"article:published_time\" content=\"2009-04-30T16:44:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-01-02T07:56:13+00:00\" \/>\n<meta name=\"author\" content=\"Paul Randal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paul Randal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/\",\"name\":\"Blog series on computer memory architectures - Paul S. Randal\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\"},\"datePublished\":\"2009-04-30T16:44:00+00:00\",\"dateModified\":\"2013-01-02T07:56:13+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog series on computer memory architectures\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\",\"name\":\"Paul S. Randal\",\"description\":\"In Recovery...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\",\"name\":\"Paul Randal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"caption\":\"Paul Randal\"},\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/paul\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Blog series on computer memory architectures - Paul S. Randal","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:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/","og_locale":"en_US","og_type":"article","og_title":"Blog series on computer memory architectures - Paul S. Randal","og_description":"(Thanks to David Baffaleuf for pointing this out to me) Ever wanted to know a bit deeper how memory works in your laptop or servers? This comprehensive series of blog posts will give you a great overview. It&#39;s very clearly written and goes very deep. At times it talks about how things show up in [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/","og_site_name":"Paul S. Randal","article_published_time":"2009-04-30T16:44:00+00:00","article_modified_time":"2013-01-02T07:56:13+00:00","author":"Paul Randal","twitter_misc":{"Written by":"Paul Randal","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/","name":"Blog series on computer memory architectures - Paul S. Randal","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website"},"datePublished":"2009-04-30T16:44:00+00:00","dateModified":"2013-01-02T07:56:13+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/blog-series-on-computer-memory-architectures\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/paul\/"},{"@type":"ListItem","position":2,"name":"Blog series on computer memory architectures"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/","name":"Paul S. Randal","description":"In Recovery...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce","name":"Paul Randal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","caption":"Paul Randal"},"sameAs":["http:\/\/3.209.169.194\/blogs\/paul"],"url":"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/comments?post=881"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/881\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/media?parent=881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/categories?post=881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/tags?post=881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}