{"id":173,"date":"2021-02-03T21:28:12","date_gmt":"2021-02-03T20:28:12","guid":{"rendered":"https:\/\/threedots.ovh\/blog\/?p=173"},"modified":"2021-02-03T21:34:27","modified_gmt":"2021-02-03T20:34:27","slug":"cpus-with-sequential-consistency","status":"publish","type":"post","link":"https:\/\/threedots.ovh\/blog\/2021\/02\/cpus-with-sequential-consistency\/","title":{"rendered":"Arm CPUs with sequential consistency"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"261\" src=\"https:\/\/threedots.ovh\/blog\/wp-content\/uploads\/2021\/01\/Screenshot-2021-01-19-at-03.17.53-1024x261.png\" alt=\"\" class=\"wp-image-174\" srcset=\"https:\/\/threedots.ovh\/blog\/wp-content\/uploads\/2021\/01\/Screenshot-2021-01-19-at-03.17.53-1024x261.png 1024w, https:\/\/threedots.ovh\/blog\/wp-content\/uploads\/2021\/01\/Screenshot-2021-01-19-at-03.17.53-300x77.png 300w, https:\/\/threedots.ovh\/blog\/wp-content\/uploads\/2021\/01\/Screenshot-2021-01-19-at-03.17.53-768x196.png 768w, https:\/\/threedots.ovh\/blog\/wp-content\/uploads\/2021\/01\/Screenshot-2021-01-19-at-03.17.53-1536x392.png 1536w, https:\/\/threedots.ovh\/blog\/wp-content\/uploads\/2021\/01\/Screenshot-2021-01-19-at-03.17.53-2048x522.png 2048w, https:\/\/threedots.ovh\/blog\/wp-content\/uploads\/2021\/01\/Screenshot-2021-01-19-at-03.17.53-1568x400.png 1568w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>(NVIDIA Xavier Series SoC Technical Reference Manual 1.4p, page 576)<\/p>\n\n\n\n<p>One of the few general purpose processors in the wild with sequential consistency is the NVIDIA Carmel CPU core, present on the Tegra Xavier processor.<\/p>\n\n\n\n<p>The 64-bit Tegra K1 (with Denver) also implements sequential consistency as the memory model. It also had a coherent instruction cache, a feature that was removed from Xavier. Meanwhile, Tegra X2 has 2 Denver2 cores implementing SC and 4 Cortex-A57s which don&#8217;t.<\/p>\n\n\n\n<p>As such, Arm CPUs are available with memory models ranging from the weak one defined by the Arm ARM to sequential consistency. On Arm CPUs with SC, barriers during normal operation to coherent memory are analogous to NOPs.<\/p>\n\n\n\n<p>The Fujitsu A64fx processor <a href=\"https:\/\/twitter.com\/jonmasters\/status\/1257359219545833472?s=21\">implements TSO<\/a> as the memory model. Meanwhile, Apple processors can be switched to TSO through a write to ACTLR_EL1.<\/p>\n\n\n\n<p>One of the uses for a stronger memory model on an Arm CPU is emulating other architectures with stronger memory ordering guarantees in a fast way&#8230; such as x86. Having support for a stronger memory model in hardware can decrease that overhead significantly.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(NVIDIA Xavier Series SoC Technical Reference Manual 1.4p, page 576) One of the few general purpose processors in the wild with sequential consistency is the NVIDIA Carmel CPU core, present on the Tegra Xavier processor. The 64-bit Tegra K1 (with Denver) also implements sequential consistency as the memory model. It also had a coherent instruction&hellip;&nbsp;<a href=\"https:\/\/threedots.ovh\/blog\/2021\/02\/cpus-with-sequential-consistency\/\" rel=\"bookmark\">Read More &raquo;<span class=\"screen-reader-text\">Arm CPUs with sequential consistency<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-173","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/posts\/173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/comments?post=173"}],"version-history":[{"count":4,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/posts\/173\/revisions"}],"predecessor-version":[{"id":199,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/posts\/173\/revisions\/199"}],"wp:attachment":[{"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/media?parent=173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/categories?post=173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/tags?post=173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}