CINXE.COM

Cache prefetching - Wikipedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Cache prefetching - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"907f496b-73cf-4c60-b5c3-13b66941a494","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Cache_prefetching","wgTitle":"Cache prefetching","wgCurRevisionId":1207865161,"wgRevisionId":1207865161,"wgArticleId":51540963,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["CS1 maint: multiple names: authors list","Articles with short description","Short description is different from Wikidata","Cache (computing)"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Cache_prefetching","wgRelevantArticleId":51540963,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive": false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q28455645","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={ "ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.math.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","mediawiki.page.media","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging", "ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=ext.cite.styles%7Cext.math.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Cache prefetching - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Cache_prefetching"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Cache_prefetching&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Cache_prefetching"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Cache_prefetching rootpage-Cache_prefetching skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page&#039;s font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&amp;returnto=Cache+prefetching" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&amp;returnto=Cache+prefetching" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&amp;returnto=Cache+prefetching" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Cache+prefetching" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-Data_vs._instruction_cache_prefetching" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Data_vs._instruction_cache_prefetching"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Data vs. instruction cache prefetching</span> </div> </a> <ul id="toc-Data_vs._instruction_cache_prefetching-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Hardware_vs._software_cache_prefetching" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Hardware_vs._software_cache_prefetching"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Hardware vs. software cache prefetching</span> </div> </a> <ul id="toc-Hardware_vs._software_cache_prefetching-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Methods_of_hardware_prefetching" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Methods_of_hardware_prefetching"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Methods of hardware prefetching</span> </div> </a> <button aria-controls="toc-Methods_of_hardware_prefetching-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Methods of hardware prefetching subsection</span> </button> <ul id="toc-Methods_of_hardware_prefetching-sublist" class="vector-toc-list"> <li id="toc-Stream_buffers" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Stream_buffers"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Stream buffers</span> </div> </a> <ul id="toc-Stream_buffers-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Strided_prefetching" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Strided_prefetching"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Strided prefetching</span> </div> </a> <ul id="toc-Strided_prefetching-sublist" class="vector-toc-list"> <li id="toc-Regular_strides" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Regular_strides"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2.1</span> <span>Regular strides</span> </div> </a> <ul id="toc-Regular_strides-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Irregular_spatial_strides" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Irregular_spatial_strides"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2.2</span> <span>Irregular spatial strides</span> </div> </a> <ul id="toc-Irregular_spatial_strides-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Irregular_temporal_prefetching" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Irregular_temporal_prefetching"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2.3</span> <span>Irregular temporal prefetching</span> </div> </a> <ul id="toc-Irregular_temporal_prefetching-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Collaborative_prefetching" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Collaborative_prefetching"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3</span> <span>Collaborative prefetching</span> </div> </a> <ul id="toc-Collaborative_prefetching-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Methods_of_software_prefetching" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Methods_of_software_prefetching"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Methods of software prefetching</span> </div> </a> <button aria-controls="toc-Methods_of_software_prefetching-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Methods of software prefetching subsection</span> </button> <ul id="toc-Methods_of_software_prefetching-sublist" class="vector-toc-list"> <li id="toc-Compiler_directed_prefetching" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Compiler_directed_prefetching"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Compiler directed prefetching</span> </div> </a> <ul id="toc-Compiler_directed_prefetching-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Comparison_of_hardware_and_software_prefetching" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Comparison_of_hardware_and_software_prefetching"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Comparison of hardware and software prefetching</span> </div> </a> <ul id="toc-Comparison_of_hardware_and_software_prefetching-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Metrics_of_cache_prefetching" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Metrics_of_cache_prefetching"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Metrics of cache prefetching</span> </div> </a> <button aria-controls="toc-Metrics_of_cache_prefetching-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Metrics of cache prefetching subsection</span> </button> <ul id="toc-Metrics_of_cache_prefetching-sublist" class="vector-toc-list"> <li id="toc-Coverage" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Coverage"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.1</span> <span>Coverage</span> </div> </a> <ul id="toc-Coverage-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Accuracy" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Accuracy"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.2</span> <span>Accuracy</span> </div> </a> <ul id="toc-Accuracy-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Timeliness" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Timeliness"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.3</span> <span>Timeliness</span> </div> </a> <ul id="toc-Timeliness-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Cache prefetching</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 2 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-2" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">2 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Cache_prefetching" title="Cache prefetching – Catalan" lang="ca" hreflang="ca" data-title="Cache prefetching" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%BE%DB%8C%D8%B4%E2%80%8C%D9%88%D8%A7%DA%A9%D8%B4%DB%8C_%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D9%86%D9%87%D8%A7%D9%86" title="پیش‌واکشی حافظه نهان – Persian" lang="fa" hreflang="fa" data-title="پیش‌واکشی حافظه نهان" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q28455645#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Cache_prefetching" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Cache_prefetching" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Cache_prefetching"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Cache_prefetching&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Cache_prefetching&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Cache_prefetching"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Cache_prefetching&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Cache_prefetching&amp;action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Cache_prefetching" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Cache_prefetching" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Cache_prefetching&amp;oldid=1207865161" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Cache_prefetching&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&amp;page=Cache_prefetching&amp;id=1207865161&amp;wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCache_prefetching"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCache_prefetching"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&amp;page=Cache_prefetching&amp;action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Cache_prefetching&amp;printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q28455645" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Computer processing technique to boost memory performance</div> <p><b>Cache prefetching</b> is a technique used by computer processors to boost execution performance by fetching instructions or data from their original storage in slower memory to a faster local memory before it is actually needed (hence the term 'prefetch').<sup id="cite_ref-:3_1-0" class="reference"><a href="#cite_note-:3-1"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">&#91;</span>2<span class="cite-bracket">&#93;</span></a></sup> Most modern computer processors have fast and local <a href="/wiki/CPU_cache" title="CPU cache">cache memory</a> in which prefetched data is held until it is required. The source for the prefetch operation is usually <a href="/wiki/Computer_data_storage#Primary_storage" title="Computer data storage">main memory</a>. Because of their design, accessing cache memories is typically much faster than accessing <a href="/wiki/Main_memory" class="mw-redirect" title="Main memory">main memory</a>, so prefetching data and then accessing it from caches is usually many orders of magnitude faster than accessing it directly from main memory. Prefetching can be done with non-blocking <a href="/wiki/Cache_control_instruction" title="Cache control instruction">cache control instructions</a>. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Data_vs._instruction_cache_prefetching">Data vs. instruction cache prefetching</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=1" title="Edit section: Data vs. instruction cache prefetching"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Cache prefetching can either fetch data or instructions into cache. </p> <ul><li><b>Data prefetching</b> fetches data before it is needed. Because data access patterns show less regularity than instruction patterns, accurate data prefetching is generally more challenging than instruction prefetching.</li> <li><b>Instruction prefetching</b> fetches instructions before they need to be executed. The first mainstream microprocessors to use some form of instruction prefetch were the <a href="/wiki/Intel" title="Intel">Intel</a> <a href="/wiki/8086" class="mw-redirect" title="8086">8086</a> (six bytes) and the <a href="/wiki/Motorola" title="Motorola">Motorola</a> <a href="/wiki/68000" class="mw-redirect" title="68000">68000</a> (four bytes). In recent years, all high-performance processors use prefetching techniques.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Hardware_vs._software_cache_prefetching">Hardware vs. software cache prefetching</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=2" title="Edit section: Hardware vs. software cache prefetching"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Cache prefetching can be accomplished either by hardware or by software.<sup id="cite_ref-:2_3-0" class="reference"><a href="#cite_note-:2-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup> </p> <ul><li><b>Hardware based prefetching</b> is typically accomplished by having a dedicated hardware mechanism in the processor that watches the stream of instructions or data being requested by the executing program, recognizes the next few elements that the program might need based on this stream and prefetches into the processor's cache.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">&#91;</span>4<span class="cite-bracket">&#93;</span></a></sup></li> <li><b>Software based prefetching</b> is typically accomplished by having the compiler analyze the code and insert additional "prefetch" instructions in the program during compilation itself.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">&#91;</span>5<span class="cite-bracket">&#93;</span></a></sup></li></ul> <div class="mw-heading mw-heading2"><h2 id="Methods_of_hardware_prefetching">Methods of hardware prefetching</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=3" title="Edit section: Methods of hardware prefetching"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Stream_buffers">Stream buffers</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=4" title="Edit section: Stream buffers"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Stream buffers were developed based on the concept of "one block lookahead (OBL) scheme" proposed by <a href="/wiki/Alan_Jay_Smith" title="Alan Jay Smith">Alan Jay Smith</a>.<sup id="cite_ref-:3_1-1" class="reference"><a href="#cite_note-:3-1"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup></li> <li>Stream <a href="/wiki/Data_buffer" title="Data buffer">buffers</a> are one of the most common hardware based prefetching techniques in use. This technique was originally proposed by <a href="/wiki/Norman_Jouppi" title="Norman Jouppi">Norman Jouppi</a> in 1990<sup id="cite_ref-:1_6-0" class="reference"><a href="#cite_note-:1-6"><span class="cite-bracket">&#91;</span>6<span class="cite-bracket">&#93;</span></a></sup> and many variations of this method have been developed since.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">&#91;</span>7<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">&#91;</span>8<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-grannaes_9-0" class="reference"><a href="#cite_note-grannaes-9"><span class="cite-bracket">&#91;</span>9<span class="cite-bracket">&#93;</span></a></sup> The basic idea is that the <a href="/wiki/Cache_miss" class="mw-redirect" title="Cache miss">cache miss</a> address (and <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.211ex; height:2.176ex;" alt="{\displaystyle k}"></span> subsequent addresses) are fetched into a separate buffer of depth <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.211ex; height:2.176ex;" alt="{\displaystyle k}"></span>. This buffer is called a stream buffer and is separate from the cache. The processor then consumes data/instructions from the stream buffer if the address associated with the prefetched blocks match the requested address generated by the program executing on the processor. The figure below illustrates this setup:</li></ul> <figure class="mw-default-size mw-halign-center" typeof="mw:File/Thumb"><a href="/wiki/File:CachePrefetching_StreamBuffers.png" class="mw-file-description"><img alt="A typical stream buffer setup as originally proposed" src="//upload.wikimedia.org/wikipedia/commons/thumb/0/08/CachePrefetching_StreamBuffers.png/310px-CachePrefetching_StreamBuffers.png" decoding="async" width="310" height="256" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/0/08/CachePrefetching_StreamBuffers.png/465px-CachePrefetching_StreamBuffers.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/0/08/CachePrefetching_StreamBuffers.png/620px-CachePrefetching_StreamBuffers.png 2x" data-file-width="666" data-file-height="550" /></a><figcaption>A typical stream buffer setup as originally proposed by Norman Jouppi in 1990<sup id="cite_ref-:1_6-1" class="reference"><a href="#cite_note-:1-6"><span class="cite-bracket">&#91;</span>6<span class="cite-bracket">&#93;</span></a></sup></figcaption></figure> <ul><li>Whenever the prefetch mechanism detects a miss on a memory block, say A, it allocates a stream to begin prefetching successive blocks from the missed block onward. If the stream buffer can hold 4 blocks, then the processor would prefetch A+1, A+2, A+3, A+4 and hold those in the allocated stream buffer. If the processor consumes A+1 next, then it shall be moved "up" from the stream buffer to the processor's cache. The first entry of the stream buffer would now be A+2 and so on. This pattern of prefetching successive blocks is called <b>Sequential Prefetching</b>. It is mainly used when contiguous locations are to be prefetched. For example, it is used when prefetching instructions.</li> <li>This mechanism can be scaled up by adding multiple such 'stream buffers' - each of which would maintain a separate prefetch stream.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">&#91;</span>10<span class="cite-bracket">&#93;</span></a></sup> For each new miss, there would be a new stream buffer allocated and it would operate in a similar way as described above.</li> <li>The ideal depth of the stream buffer is something that is subject to experimentation against various benchmarks<sup id="cite_ref-:1_6-2" class="reference"><a href="#cite_note-:1-6"><span class="cite-bracket">&#91;</span>6<span class="cite-bracket">&#93;</span></a></sup> and depends on the rest of the <a href="/wiki/Microarchitecture" title="Microarchitecture">microarchitecture</a> involved.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">&#91;</span>11<span class="cite-bracket">&#93;</span></a></sup></li></ul> <div class="mw-heading mw-heading3"><h3 id="Strided_prefetching">Strided prefetching</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=5" title="Edit section: Strided prefetching"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>This type of prefetching monitors the delta between the addresses of the memory accesses and looks for patterns within it. </p> <div class="mw-heading mw-heading4"><h4 id="Regular_strides">Regular strides</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=6" title="Edit section: Regular strides"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In this pattern, consecutive memory accesses are made to blocks that are <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/01d131dfd7673938b947072a13a9744fe997e632" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.09ex; height:1.676ex;" alt="{\displaystyle s}"></span> addresses apart.<sup id="cite_ref-:2_3-1" class="reference"><a href="#cite_note-:2-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">&#91;</span>12<span class="cite-bracket">&#93;</span></a></sup> In this case, the prefetcher calculates the <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/01d131dfd7673938b947072a13a9744fe997e632" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.09ex; height:1.676ex;" alt="{\displaystyle s}"></span> and uses it to compute the memory address for prefetching. E.g.: If the <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/01d131dfd7673938b947072a13a9744fe997e632" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.09ex; height:1.676ex;" alt="{\displaystyle s}"></span> is 4, the address to be prefetched would A+4. </p> <div class="mw-heading mw-heading4"><h4 id="Irregular_spatial_strides">Irregular spatial strides</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=7" title="Edit section: Irregular spatial strides"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In this case, the delta between the addresses of consecutive memory accesses is variable but still follows a pattern. Some prefetchers designs<sup id="cite_ref-grannaes_9-1" class="reference"><a href="#cite_note-grannaes-9"><span class="cite-bracket">&#91;</span>9<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">&#91;</span>13<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">&#91;</span>14<span class="cite-bracket">&#93;</span></a></sup> exploit this property to predict and prefetch for future accesses. </p> <div class="mw-heading mw-heading4"><h4 id="Irregular_temporal_prefetching">Irregular temporal prefetching</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=8" title="Edit section: Irregular temporal prefetching"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>This class of prefetchers look for memory access streams that repeat over time.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">&#91;</span>15<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">&#91;</span>16<span class="cite-bracket">&#93;</span></a></sup> E.g. In this stream of memory accesses: N, A, B, C, E, G, H, A, B, C, I, J, K, A, B, C, L, M, N, O, A, B, C, ...; the stream A,B,C is repeating over time. Other design variation have tried to provide more efficient, performant implementations.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">&#91;</span>17<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">&#91;</span>18<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Collaborative_prefetching">Collaborative prefetching</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=9" title="Edit section: Collaborative prefetching"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Computer applications generate a variety of access patterns. The processor and memory subsystem architectures used to execute these applications further disambiguate the memory access patterns they generate. Hence, the effectiveness and efficiency of prefetching schemes often depend on the application and the architectures used to execute them.<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">&#91;</span>19<span class="cite-bracket">&#93;</span></a></sup> Recent research<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">&#91;</span>20<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">&#91;</span>21<span class="cite-bracket">&#93;</span></a></sup> has focused on building collaborative mechanisms to synergistically use multiple prefetching schemes for better prefetching coverage and accuracy. </p> <div class="mw-heading mw-heading2"><h2 id="Methods_of_software_prefetching">Methods of software prefetching</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=10" title="Edit section: Methods of software prefetching"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Compiler_directed_prefetching">Compiler directed prefetching</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=11" title="Edit section: Compiler directed prefetching"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Compiler directed prefetching is widely used within loops with a large number of iterations. In this technique, the compiler predicts future cache misses and inserts a prefetch instruction based on the <a href="/wiki/Cache_Hierarchy" class="mw-redirect" title="Cache Hierarchy">miss penalty</a> and execution time of the instructions. </p><p>These prefetches are non-blocking memory operations, i.e. these memory accesses do not interfere with actual memory accesses. They do not change the state of the processor or cause page faults. </p><p>One main advantage of software prefetching is that it reduces the number of compulsory cache misses.<sup id="cite_ref-:2_3-2" class="reference"><a href="#cite_note-:2-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup> </p><p>The following example shows how a prefetch instruction would be added into code to improve <a href="/wiki/Cache_performance_measurement_and_metric" title="Cache performance measurement and metric">cache performance</a>. </p><p> Consider a for loop as shown below:</p><div class="mw-highlight mw-highlight-lang-c++ mw-content-ltr" dir="ltr"><pre><span></span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">&lt;</span><span class="mi">1024</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">array1</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">array1</span><span class="p">[</span><span class="n">i</span><span class="p">];</span> <span class="p">}</span> </pre></div><p>At each iteration, the i<sup>th</sup> element of the array "array1" is accessed. Therefore, the system can prefetch the elements that are going to be accessed in future iterations by inserting a "prefetch" instruction as shown below:</p><div class="mw-highlight mw-highlight-lang-c++ mw-content-ltr" dir="ltr"><pre><span></span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">&lt;</span><span class="mi">1024</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">prefetch</span><span class="w"> </span><span class="p">(</span><span class="n">array1</span><span class="w"> </span><span class="p">[</span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">k</span><span class="p">]);</span> <span class="w"> </span><span class="n">array1</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">array1</span><span class="p">[</span><span class="n">i</span><span class="p">];</span> <span class="p">}</span> </pre></div><p>Here, the prefetch stride, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.211ex; height:2.176ex;" alt="{\displaystyle k}"></span> depends on two factors, the cache miss penalty and the time it takes to execute a single iteration of the <i><b>for</b></i> loop. For instance, if one iteration of the loop takes 7 cycles to execute, and the cache miss penalty is 49 cycles then there should be <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k=49/7=7}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> <mo>=</mo> <mn>49</mn> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mn>7</mn> <mo>=</mo> <mn>7</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k=49/7=7}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/aa88fa7dd8441e4c706dbc4096286780d2bf0648" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:13.22ex; height:2.843ex;" alt="{\displaystyle k=49/7=7}"></span> - which means that the system should prefetch 7 elements ahead. With the first iteration, i will be 0, so the system prefetches the 7th element. Now, with this arrangement, the first 7 accesses (i=0-&gt;6) will still be misses (under the simplifying assumption that each element of array1 is in a separate cache line of its own). </p><div class="mw-heading mw-heading2"><h2 id="Comparison_of_hardware_and_software_prefetching">Comparison of hardware and software prefetching</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=12" title="Edit section: Comparison of hardware and software prefetching"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>While software prefetching requires programmer or <a href="/wiki/Compiler" title="Compiler">compiler</a> intervention, hardware prefetching requires special hardware mechanisms.<sup id="cite_ref-:2_3-3" class="reference"><a href="#cite_note-:2-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup></li> <li>Software prefetching works well only with loops where there is regular array access as the programmer has to hand code the prefetch instructions, whereas hardware prefetchers work dynamically based on the program's behavior at <a href="/wiki/Run_time_(program_lifecycle_phase)" class="mw-redirect" title="Run time (program lifecycle phase)">runtime</a>.<sup id="cite_ref-:2_3-4" class="reference"><a href="#cite_note-:2-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup></li> <li>Hardware prefetching also has less CPU overhead when compared to software prefetching.<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">&#91;</span>22<span class="cite-bracket">&#93;</span></a></sup> However, software prefetching can mitigate certain constraints of hardware prefetching, leading to improvements in performance.<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">&#91;</span>23<span class="cite-bracket">&#93;</span></a></sup></li></ul> <div class="mw-heading mw-heading2"><h2 id="Metrics_of_cache_prefetching">Metrics of cache prefetching</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=13" title="Edit section: Metrics of cache prefetching"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>There are three main metrics to judge cache prefetching<sup id="cite_ref-:2_3-5" class="reference"><a href="#cite_note-:2-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Coverage">Coverage</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=14" title="Edit section: Coverage"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Coverage is the fraction of total misses that are eliminated because of prefetching, i.e. </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle Coverage={\frac {\text{Cache Misses eliminated by Prefetching}}{\text{Total Cache Misses}}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mi>o</mi> <mi>v</mi> <mi>e</mi> <mi>r</mi> <mi>a</mi> <mi>g</mi> <mi>e</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mtext>Cache Misses eliminated by Prefetching</mtext> <mtext>Total Cache Misses</mtext> </mfrac> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle Coverage={\frac {\text{Cache Misses eliminated by Prefetching}}{\text{Total Cache Misses}}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a5f32a3620e4eccd6bcb47a25692e42468672f4a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.005ex; width:53.313ex; height:5.509ex;" alt="{\displaystyle Coverage={\frac {\text{Cache Misses eliminated by Prefetching}}{\text{Total Cache Misses}}}}"></span>, </p><p>where, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\text{Total Cache Misses}}=({\text{Cache misses eliminated by prefetching}})+({\text{Cache misses not eliminated by prefetching}})}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mtext>Total Cache Misses</mtext> </mrow> <mo>=</mo> <mo stretchy="false">(</mo> <mrow class="MJX-TeXAtom-ORD"> <mtext>Cache misses eliminated by prefetching</mtext> </mrow> <mo stretchy="false">)</mo> <mo>+</mo> <mo stretchy="false">(</mo> <mrow class="MJX-TeXAtom-ORD"> <mtext>Cache misses not eliminated by prefetching</mtext> </mrow> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\text{Total Cache Misses}}=({\text{Cache misses eliminated by prefetching}})+({\text{Cache misses not eliminated by prefetching}})}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/7b7338d1a6ad16ddaa3d71f2e42c7497fe72ec80" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:111.59ex; height:2.843ex;" alt="{\displaystyle {\text{Total Cache Misses}}=({\text{Cache misses eliminated by prefetching}})+({\text{Cache misses not eliminated by prefetching}})}"></span> </p> <div class="mw-heading mw-heading3"><h3 id="Accuracy">Accuracy</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=15" title="Edit section: Accuracy"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Accuracy is the fraction of total prefetches that were useful - i.e. the ratio of the number of memory addresses prefetched were actually referenced by the program to the total prefetches done. </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\text{Prefetch Accuracy}}={\frac {\text{Cache Misses eliminated by prefetching}}{({\text{Useless Cache Prefetches}})+({\text{Cache Misses eliminated by prefetching}})}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mtext>Prefetch Accuracy</mtext> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mtext>Cache Misses eliminated by prefetching</mtext> <mrow> <mo stretchy="false">(</mo> <mrow class="MJX-TeXAtom-ORD"> <mtext>Useless Cache Prefetches</mtext> </mrow> <mo stretchy="false">)</mo> <mo>+</mo> <mo stretchy="false">(</mo> <mrow class="MJX-TeXAtom-ORD"> <mtext>Cache Misses eliminated by prefetching</mtext> </mrow> <mo stretchy="false">)</mo> </mrow> </mfrac> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\text{Prefetch Accuracy}}={\frac {\text{Cache Misses eliminated by prefetching}}{({\text{Useless Cache Prefetches}})+({\text{Cache Misses eliminated by prefetching}})}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/577ef350aef993c3cad07cb7d2e245f839eaf1c8" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.671ex; width:93.426ex; height:6.176ex;" alt="{\displaystyle {\text{Prefetch Accuracy}}={\frac {\text{Cache Misses eliminated by prefetching}}{({\text{Useless Cache Prefetches}})+({\text{Cache Misses eliminated by prefetching}})}}}"></span> </p><p>While it appears that having perfect accuracy might imply that there are no misses, this is not the case. The prefetches themselves might result in new misses if the prefetched blocks are placed directly into the cache. Although these may be a small fraction of the total number of misses observed without any prefetching, this is a non-zero number of misses. </p> <div class="mw-heading mw-heading3"><h3 id="Timeliness">Timeliness</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=16" title="Edit section: Timeliness"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The qualitative definition of timeliness is how early a block is prefetched versus when it is actually referenced. An example to further explain timeliness is as follows: </p><p>Consider a for loop where each iteration takes 3 cycles to execute and the 'prefetch' operation takes 12 cycles. This implies that for the prefetched data to be useful, the system must start the prefetch <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 12/3=4}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mn>12</mn> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mn>3</mn> <mo>=</mo> <mn>4</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 12/3=4}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d0825e3b1d5cb1ab9622d17aadf3e93018873867" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:8.911ex; height:2.843ex;" alt="{\displaystyle 12/3=4}"></span> iterations prior to its usage to maintain timeliness. </p> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=17" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Prefetch_input_queue" title="Prefetch input queue">Prefetch input queue</a></li> <li><a href="/wiki/Link_prefetching" title="Link prefetching">Link prefetching</a></li> <li><a href="/wiki/Prefetcher" title="Prefetcher">Prefetcher</a></li> <li><a href="/wiki/Cache_control_instruction" title="Cache control instruction">Cache control instruction</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Cache_prefetching&amp;action=edit&amp;section=18" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist reflist-columns references-column-width" style="column-width: 30em;"> <ol class="references"> <li id="cite_note-:3-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-:3_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:3_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite id="CITEREFSmith1982" class="citation journal cs1">Smith, Alan Jay (1982-09-01). "Cache Memories". <i>ACM Comput. Surv</i>. <b>14</b> (3): 473–530. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F356887.356892">10.1145/356887.356892</a>. <a href="/wiki/ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&#160;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0360-0300">0360-0300</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:6023466">6023466</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=ACM+Comput.+Surv.&amp;rft.atitle=Cache+Memories&amp;rft.volume=14&amp;rft.issue=3&amp;rft.pages=473-530&amp;rft.date=1982-09-01&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A6023466%23id-name%3DS2CID&amp;rft.issn=0360-0300&amp;rft_id=info%3Adoi%2F10.1145%2F356887.356892&amp;rft.aulast=Smith&amp;rft.aufirst=Alan+Jay&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFLiSongDuWang2020" class="citation journal cs1">Li, Chunlin; Song, Mingyang; Du, Shaofeng; Wang, Xiaohai; Zhang, Min; Luo, Youlong (2020-09-01). <a rel="nofollow" class="external text" href="https://linkinghub.elsevier.com/retrieve/pii/S1084804520301892">"Adaptive priority-based cache replacement and prediction-based cache prefetching in edge computing environment"</a>. <i>Journal of Network and Computer Applications</i>. <b>165</b>: 102715. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2Fj.jnca.2020.102715">10.1016/j.jnca.2020.102715</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:219506427">219506427</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=Journal+of+Network+and+Computer+Applications&amp;rft.atitle=Adaptive+priority-based+cache+replacement+and+prediction-based+cache+prefetching+in+edge+computing+environment&amp;rft.volume=165&amp;rft.pages=102715&amp;rft.date=2020-09-01&amp;rft_id=info%3Adoi%2F10.1016%2Fj.jnca.2020.102715&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A219506427%23id-name%3DS2CID&amp;rft.aulast=Li&amp;rft.aufirst=Chunlin&amp;rft.au=Song%2C+Mingyang&amp;rft.au=Du%2C+Shaofeng&amp;rft.au=Wang%2C+Xiaohai&amp;rft.au=Zhang%2C+Min&amp;rft.au=Luo%2C+Youlong&amp;rft_id=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS1084804520301892&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-:2-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-:2_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:2_3-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-:2_3-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-:2_3-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-:2_3-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-:2_3-5"><sup><i><b>f</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFSolihin2016" class="citation book cs1">Solihin, Yan (2016). <i>Fundamentals of parallel multicore architecture</i>. Boca Raton, Florida: CRC Press, Taylor &amp; Francis Group. p.&#160;163. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1482211184" title="Special:BookSources/978-1482211184"><bdi>978-1482211184</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=Fundamentals+of+parallel+multicore+architecture&amp;rft.place=Boca+Raton%2C+Florida&amp;rft.pages=163&amp;rft.pub=CRC+Press%2C+Taylor+%26+Francis+Group&amp;rft.date=2016&amp;rft.isbn=978-1482211184&amp;rft.aulast=Solihin&amp;rft.aufirst=Yan&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBaerChen1991" class="citation conference cs1">Baer, Jean-Loup; Chen, Tien-Fu (1991-01-01). <i>An Effective On-chip Preloading Scheme to Reduce Data Access Penalty</i>. 1991 ACM/IEEE Conference on Supercomputing. Albuquerque, New Mexico, USA: Association for Computing Machinery. pp.&#160;176–186. <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&#160;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.642.703">10.1.1.642.703</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F125826.125932">10.1145/125826.125932</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-0897914598" title="Special:BookSources/978-0897914598"><bdi>978-0897914598</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.btitle=An+Effective+On-chip+Preloading+Scheme+to+Reduce+Data+Access+Penalty&amp;rft.place=Albuquerque%2C+New+Mexico%2C+USA&amp;rft.pages=176-186&amp;rft.pub=Association+for+Computing+Machinery&amp;rft.date=1991-01-01&amp;rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.642.703%23id-name%3DCiteSeerX&amp;rft_id=info%3Adoi%2F10.1145%2F125826.125932&amp;rft.isbn=978-0897914598&amp;rft.aulast=Baer&amp;rft.aufirst=Jean-Loup&amp;rft.au=Chen%2C+Tien-Fu&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFKennedy1989" class="citation thesis cs1">Kennedy, Porterfield, Allan (1989-01-01). <i>Software methods for improvement of cache performance on supercomputer applications</i> (Thesis). Rice University. <a href="/wiki/Hdl_(identifier)" class="mw-redirect" title="Hdl (identifier)">hdl</a>:<a rel="nofollow" class="external text" href="https://hdl.handle.net/1911%2F19069">1911/19069</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adissertation&amp;rft.title=Software+methods+for+improvement+of+cache+performance+on+supercomputer+applications&amp;rft.inst=Rice+University&amp;rft.date=1989-01-01&amp;rft_id=info%3Ahdl%2F1911%2F19069&amp;rft.aulast=Kennedy&amp;rft.aufirst=Porterfield%2C+Allan&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span><span class="cs1-maint citation-comment"><code class="cs1-code">{{<a href="/wiki/Template:Cite_thesis" title="Template:Cite thesis">cite thesis</a>}}</code>: CS1 maint: multiple names: authors list (<a href="/wiki/Category:CS1_maint:_multiple_names:_authors_list" title="Category:CS1 maint: multiple names: authors list">link</a>)</span></span> </li> <li id="cite_note-:1-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-:1_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:1_6-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-:1_6-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFJouppi1990" class="citation conference cs1">Jouppi, Norman P. (1990). "Improving direct-mapped cache performance by the addition of a small fully-associative cache and prefetch buffers". <i>Proceedings of the 17th annual international symposium on Computer Architecture – ISCA 1990</i>. 17th annual international symposium on Computer Architecture – ISCA 1990. New York, New York, USA: Association for Computing Machinery Press. pp.&#160;364–373. <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&#160;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.37.6114">10.1.1.37.6114</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F325164.325162">10.1145/325164.325162</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-89791-366-3" title="Special:BookSources/0-89791-366-3"><bdi>0-89791-366-3</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.atitle=Improving+direct-mapped+cache+performance+by+the+addition+of+a+small+fully-associative+cache+and+prefetch+buffers&amp;rft.btitle=Proceedings+of+the+17th+annual+international+symposium+on+Computer+Architecture+%E2%80%93+ISCA+1990&amp;rft.place=New+York%2C+New+York%2C+USA&amp;rft.pages=364-373&amp;rft.pub=Association+for+Computing+Machinery+Press&amp;rft.date=1990&amp;rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.37.6114%23id-name%3DCiteSeerX&amp;rft_id=info%3Adoi%2F10.1145%2F325164.325162&amp;rft.isbn=0-89791-366-3&amp;rft.aulast=Jouppi&amp;rft.aufirst=Norman+P.&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFChenBaer1995" class="citation journal cs1">Chen, Tien-Fu; Baer, Jean-Loup (1995-05-01). "Effective hardware-based data prefetching for high-performance processors". <i>IEEE Transactions on Computers</i>. <b>44</b> (5): 609–623. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2F12.381947">10.1109/12.381947</a>. <a href="/wiki/ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&#160;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0018-9340">0018-9340</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:1450745">1450745</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=IEEE+Transactions+on+Computers&amp;rft.atitle=Effective+hardware-based+data+prefetching+for+high-performance+processors&amp;rft.volume=44&amp;rft.issue=5&amp;rft.pages=609-623&amp;rft.date=1995-05-01&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A1450745%23id-name%3DS2CID&amp;rft.issn=0018-9340&amp;rft_id=info%3Adoi%2F10.1109%2F12.381947&amp;rft.aulast=Chen&amp;rft.aufirst=Tien-Fu&amp;rft.au=Baer%2C+Jean-Loup&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPalacharlaKessler1994" class="citation conference cs1">Palacharla, S.; Kessler, R. E. (1994-01-01). <i>Evaluating Stream Buffers As a Secondary Cache Replacement</i>. 21st Annual International Symposium on Computer Architecture. Chicago, Illinois, USA: IEEE Computer Society Press. pp.&#160;24–33. <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&#160;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.92.3031">10.1.1.92.3031</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FISCA.1994.288164">10.1109/ISCA.1994.288164</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-0818655104" title="Special:BookSources/978-0818655104"><bdi>978-0818655104</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.btitle=Evaluating+Stream+Buffers+As+a+Secondary+Cache+Replacement&amp;rft.place=Chicago%2C+Illinois%2C+USA&amp;rft.pages=24-33&amp;rft.pub=IEEE+Computer+Society+Press&amp;rft.date=1994-01-01&amp;rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.92.3031%23id-name%3DCiteSeerX&amp;rft_id=info%3Adoi%2F10.1109%2FISCA.1994.288164&amp;rft.isbn=978-0818655104&amp;rft.aulast=Palacharla&amp;rft.aufirst=S.&amp;rft.au=Kessler%2C+R.+E.&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-grannaes-9"><span class="mw-cite-backlink">^ <a href="#cite_ref-grannaes_9-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-grannaes_9-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFGrannaesJahreNatvig2011" class="citation journal cs1">Grannaes, Marius; Jahre, Magnus; Natvig, Lasse (2011). "Storage Efficient Hardware Prefetching using Delta-Correlating Prediction Tables". <i>Journal of Instruction-Level Parallelism</i> (13): 1–16. <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&#160;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.229.3483">10.1.1.229.3483</a></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=Journal+of+Instruction-Level+Parallelism&amp;rft.atitle=Storage+Efficient+Hardware+Prefetching+using+Delta-Correlating+Prediction+Tables&amp;rft.issue=13&amp;rft.pages=1-16&amp;rft.date=2011&amp;rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.229.3483%23id-name%3DCiteSeerX&amp;rft.aulast=Grannaes&amp;rft.aufirst=Marius&amp;rft.au=Jahre%2C+Magnus&amp;rft.au=Natvig%2C+Lasse&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFIshiiInabaHiraki2009" class="citation conference cs1">Ishii, Yasuo; Inaba, Mary; Hiraki, Kei (2009-06-08). <a rel="nofollow" class="external text" href="https://doi.org/10.1145/1542275.1542349">"Access map pattern matching for data cache prefetch"</a>. <i>Proceedings of the 23rd International Conference on Supercomputing</i>. ICS 2009. New York, New York, USA: Association for Computing Machinery. pp.&#160;499–500. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F1542275.1542349">10.1145/1542275.1542349</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1-60558-498-0" title="Special:BookSources/978-1-60558-498-0"><bdi>978-1-60558-498-0</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:37841036">37841036</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.atitle=Access+map+pattern+matching+for+data+cache+prefetch&amp;rft.btitle=Proceedings+of+the+23rd+International+Conference+on+Supercomputing&amp;rft.place=New+York%2C+New+York%2C+USA&amp;rft.pages=499-500&amp;rft.pub=Association+for+Computing+Machinery&amp;rft.date=2009-06-08&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A37841036%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1145%2F1542275.1542349&amp;rft.isbn=978-1-60558-498-0&amp;rft.aulast=Ishii&amp;rft.aufirst=Yasuo&amp;rft.au=Inaba%2C+Mary&amp;rft.au=Hiraki%2C+Kei&amp;rft_id=https%3A%2F%2Fdoi.org%2F10.1145%2F1542275.1542349&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFSrinathMutluKimPatt2007" class="citation conference cs1">Srinath, Santhosh; Mutlu, Onur; <a href="/wiki/Hyesoon_Kim" title="Hyesoon Kim">Kim, Hyesoon</a>; <a href="/wiki/Yale_Patt" title="Yale Patt">Patt, Yale N.</a> (February 2007). <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/4147648"><i>Feedback Directed Prefetching: Improving the Performance and Bandwidth-Efficiency of Hardware Prefetchers</i></a>. 2007 IEEE 13th International Symposium on High Performance Computer Architecture. pp.&#160;63–74. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FHPCA.2007.346185">10.1109/HPCA.2007.346185</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1-4244-0804-7" title="Special:BookSources/978-1-4244-0804-7"><bdi>978-1-4244-0804-7</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:6909725">6909725</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.btitle=Feedback+Directed+Prefetching%3A+Improving+the+Performance+and+Bandwidth-Efficiency+of+Hardware+Prefetchers&amp;rft.pages=63-74&amp;rft.date=2007-02&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A6909725%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1109%2FHPCA.2007.346185&amp;rft.isbn=978-1-4244-0804-7&amp;rft.aulast=Srinath&amp;rft.aufirst=Santhosh&amp;rft.au=Mutlu%2C+Onur&amp;rft.au=Kim%2C+Hyesoon&amp;rft.au=Patt%2C+Yale+N.&amp;rft_id=https%3A%2F%2Fieeexplore.ieee.org%2Fdocument%2F4147648&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFKondguliHuang2017" class="citation conference cs1">Kondguli, Sushant; Huang, Michael (November 2017). <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/8119237"><i>T2: A Highly Accurate and Energy Efficient Stride Prefetcher</i></a>. 2017 IEEE International Conference on Computer Design (ICCD). pp.&#160;373–376. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICCD.2017.64">10.1109/ICCD.2017.64</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1-5386-2254-4" title="Special:BookSources/978-1-5386-2254-4"><bdi>978-1-5386-2254-4</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:11055312">11055312</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.btitle=T2%3A+A+Highly+Accurate+and+Energy+Efficient+Stride+Prefetcher&amp;rft.pages=373-376&amp;rft.date=2017-11&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A11055312%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1109%2FICCD.2017.64&amp;rft.isbn=978-1-5386-2254-4&amp;rft.aulast=Kondguli&amp;rft.aufirst=Sushant&amp;rft.au=Huang%2C+Michael&amp;rft_id=https%3A%2F%2Fieeexplore.ieee.org%2Fdocument%2F8119237&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFShevgoorKoladiyaBalasubramonianWilkerson2015" class="citation conference cs1">Shevgoor, Manjunath; Koladiya, Sahil; Balasubramonian, Rajeev; Wilkerson, Chris; Pugsley, Seth H.; Chishti, Zeshan (December 2015). <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/7856594"><i>Efficiently prefetching complex address patterns</i></a>. 2015 48th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO). pp.&#160;141–152. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2830772.2830793">10.1145/2830772.2830793</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/9781450340342" title="Special:BookSources/9781450340342"><bdi>9781450340342</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:15294463">15294463</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.btitle=Efficiently+prefetching+complex+address+patterns&amp;rft.pages=141-152&amp;rft.date=2015-12&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A15294463%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1145%2F2830772.2830793&amp;rft.isbn=9781450340342&amp;rft.aulast=Shevgoor&amp;rft.aufirst=Manjunath&amp;rft.au=Koladiya%2C+Sahil&amp;rft.au=Balasubramonian%2C+Rajeev&amp;rft.au=Wilkerson%2C+Chris&amp;rft.au=Pugsley%2C+Seth+H.&amp;rft.au=Chishti%2C+Zeshan&amp;rft_id=https%3A%2F%2Fieeexplore.ieee.org%2Fdocument%2F7856594&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFKimPugsleyGratzReddy2016" class="citation conference cs1">Kim, Jinchun; Pugsley, Seth H.; Gratz, Paul V.; Reddy, A.L. Narasimha; Wilkerson, Chris; Chishti, Zeshan (October 2016). <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/7783763"><i>Path confidence based lookahead prefetching</i></a>. 2016 49th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO). pp.&#160;1–12. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FMICRO.2016.7783763">10.1109/MICRO.2016.7783763</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1-5090-3508-3" title="Special:BookSources/978-1-5090-3508-3"><bdi>978-1-5090-3508-3</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:1097472">1097472</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.btitle=Path+confidence+based+lookahead+prefetching&amp;rft.pages=1-12&amp;rft.date=2016-10&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A1097472%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1109%2FMICRO.2016.7783763&amp;rft.isbn=978-1-5090-3508-3&amp;rft.aulast=Kim&amp;rft.aufirst=Jinchun&amp;rft.au=Pugsley%2C+Seth+H.&amp;rft.au=Gratz%2C+Paul+V.&amp;rft.au=Reddy%2C+A.L.+Narasimha&amp;rft.au=Wilkerson%2C+Chris&amp;rft.au=Chishti%2C+Zeshan&amp;rft_id=https%3A%2F%2Fieeexplore.ieee.org%2Fdocument%2F7783763&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFJosephGrunwald1997" class="citation conference cs1">Joseph, Doug; Grunwald, Dirk (1997-05-01). <a rel="nofollow" class="external text" href="https://doi.org/10.1145/264107.264207">"Prefetching using Markov predictors"</a>. <i>Proceedings of the 24th Annual International Symposium on Computer Architecture</i>. ISCA 1997. ISCA 1997. New York, New York, USA: Association for Computing Machinery. pp.&#160;252–263. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F264107.264207">10.1145/264107.264207</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-0-89791-901-2" title="Special:BookSources/978-0-89791-901-2"><bdi>978-0-89791-901-2</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:434419">434419</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.atitle=Prefetching+using+Markov+predictors&amp;rft.btitle=Proceedings+of+the+24th+Annual+International+Symposium+on+Computer+Architecture&amp;rft.place=New+York%2C+New+York%2C+USA&amp;rft.series=ISCA+1997&amp;rft.pages=252-263&amp;rft.pub=Association+for+Computing+Machinery&amp;rft.date=1997-05-01&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A434419%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1145%2F264107.264207&amp;rft.isbn=978-0-89791-901-2&amp;rft.aulast=Joseph&amp;rft.aufirst=Doug&amp;rft.au=Grunwald%2C+Dirk&amp;rft_id=https%3A%2F%2Fdoi.org%2F10.1145%2F264107.264207&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFCollinsSairCalderTullsen2002" class="citation conference cs1">Collins, J.; Sair, S.; Calder, B.; Tullsen, D.M. (November 2002). <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/1176239"><i>Pointer cache assisted prefetching</i></a>. 35th Annual IEEE/ACM International Symposium on Microarchitecture, 2002. (MICRO-35). Proceedings. pp.&#160;62–73. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FMICRO.2002.1176239">10.1109/MICRO.2002.1176239</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-7695-1859-1" title="Special:BookSources/0-7695-1859-1"><bdi>0-7695-1859-1</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:5608519">5608519</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.btitle=Pointer+cache+assisted+prefetching&amp;rft.pages=62-73&amp;rft.date=2002-11&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A5608519%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1109%2FMICRO.2002.1176239&amp;rft.isbn=0-7695-1859-1&amp;rft.aulast=Collins&amp;rft.aufirst=J.&amp;rft.au=Sair%2C+S.&amp;rft.au=Calder%2C+B.&amp;rft.au=Tullsen%2C+D.M.&amp;rft_id=https%3A%2F%2Fieeexplore.ieee.org%2Fdocument%2F1176239&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFJainLin2013" class="citation conference cs1">Jain, Akanksha; Lin, Calvin (2013-12-07). <a rel="nofollow" class="external text" href="https://doi.org/10.1145/2540708.2540730">"Linearizing irregular memory accesses for improved correlated prefetching"</a>. <i>Proceedings of the 46th Annual IEEE/ACM International Symposium on Microarchitecture</i>. MICRO-46. New York, New York, USA: Association for Computing Machinery. pp.&#160;247–259. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2540708.2540730">10.1145/2540708.2540730</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1-4503-2638-4" title="Special:BookSources/978-1-4503-2638-4"><bdi>978-1-4503-2638-4</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:196831">196831</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.atitle=Linearizing+irregular+memory+accesses+for+improved+correlated+prefetching&amp;rft.btitle=Proceedings+of+the+46th+Annual+IEEE%2FACM+International+Symposium+on+Microarchitecture&amp;rft.place=New+York%2C+New+York%2C+USA&amp;rft.pages=247-259&amp;rft.pub=Association+for+Computing+Machinery&amp;rft.date=2013-12-07&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A196831%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1145%2F2540708.2540730&amp;rft.isbn=978-1-4503-2638-4&amp;rft.aulast=Jain&amp;rft.aufirst=Akanksha&amp;rft.au=Lin%2C+Calvin&amp;rft_id=https%3A%2F%2Fdoi.org%2F10.1145%2F2540708.2540730&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://community.arm.com/arm-research/b/articles/posts/making-temporal-prefetchers-practical--the-misb-prefetcher">"Making Temporal Prefetchers Practical: The MISB Prefetcher – Research Articles – Arm Research – Arm Community"</a>. <i>community.arm.com</i>. 24 June 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">2022-03-16</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=community.arm.com&amp;rft.atitle=Making+Temporal+Prefetchers+Practical%3A+The+MISB+Prefetcher+%E2%80%93+Research+Articles+%E2%80%93+Arm+Research+%E2%80%93+Arm+Community&amp;rft.date=2019-06-24&amp;rft_id=https%3A%2F%2Fcommunity.arm.com%2Farm-research%2Fb%2Farticles%2Fposts%2Fmaking-temporal-prefetchers-practical--the-misb-prefetcher&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFKimTeranGratzJiménez2017" class="citation journal cs1">Kim, Jinchun; Teran, Elvira; Gratz, Paul V.; Jiménez, Daniel A.; Pugsley, Seth H.; Wilkerson, Chris (2017-05-12). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3093336.3037701">"Kill the Program Counter: Reconstructing Program Behavior in the Processor Cache Hierarchy"</a>. <i>ACM SIGPLAN Notices</i>. <b>52</b> (4): 737–749. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3093336.3037701">10.1145/3093336.3037701</a></span>. <a href="/wiki/ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&#160;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0362-1340">0362-1340</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=ACM+SIGPLAN+Notices&amp;rft.atitle=Kill+the+Program+Counter%3A+Reconstructing+Program+Behavior+in+the+Processor+Cache+Hierarchy&amp;rft.volume=52&amp;rft.issue=4&amp;rft.pages=737-749&amp;rft.date=2017-05-12&amp;rft_id=info%3Adoi%2F10.1145%2F3093336.3037701&amp;rft.issn=0362-1340&amp;rft.aulast=Kim&amp;rft.aufirst=Jinchun&amp;rft.au=Teran%2C+Elvira&amp;rft.au=Gratz%2C+Paul+V.&amp;rft.au=Jim%C3%A9nez%2C+Daniel+A.&amp;rft.au=Pugsley%2C+Seth+H.&amp;rft.au=Wilkerson%2C+Chris&amp;rft_id=https%3A%2F%2Fdoi.org%2F10.1145%252F3093336.3037701&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFKondguliHuang2018" class="citation conference cs1">Kondguli, Sushant; Huang, Michael (2018-06-02). <a rel="nofollow" class="external text" href="https://doi.org/10.1109/ISCA.2018.00018">"Division of labor: a more effective approach to prefetching"</a>. <i>Proceedings of the 45th Annual International Symposium on Computer Architecture</i>. ISCA '18. Los Angeles, California: IEEE Press. pp.&#160;83–95. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FISCA.2018.00018">10.1109/ISCA.2018.00018</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1-5386-5984-7" title="Special:BookSources/978-1-5386-5984-7"><bdi>978-1-5386-5984-7</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:50777324">50777324</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.atitle=Division+of+labor%3A+a+more+effective+approach+to+prefetching&amp;rft.btitle=Proceedings+of+the+45th+Annual+International+Symposium+on+Computer+Architecture&amp;rft.place=Los+Angeles%2C+California&amp;rft.pages=83-95&amp;rft.pub=IEEE+Press&amp;rft.date=2018-06-02&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A50777324%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1109%2FISCA.2018.00018&amp;rft.isbn=978-1-5386-5984-7&amp;rft.aulast=Kondguli&amp;rft.aufirst=Sushant&amp;rft.au=Huang%2C+Michael&amp;rft_id=https%3A%2F%2Fdoi.org%2F10.1109%2FISCA.2018.00018&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPakalapatiPanda2020" class="citation conference cs1">Pakalapati, Samuel; Panda, Biswabandan (May 2020). <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/9138971"><i>Bouquet of Instruction Pointers: Instruction Pointer Classifier-based Spatial Hardware Prefetching</i></a>. 2020 ACM/IEEE 47th Annual International Symposium on Computer Architecture (ISCA). pp.&#160;118–131. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FISCA45697.2020.00021">10.1109/ISCA45697.2020.00021</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1-7281-4661-4" title="Special:BookSources/978-1-7281-4661-4"><bdi>978-1-7281-4661-4</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:218683672">218683672</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.btitle=Bouquet+of+Instruction+Pointers%3A+Instruction+Pointer+Classifier-based+Spatial+Hardware+Prefetching&amp;rft.pages=118-131&amp;rft.date=2020-05&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A218683672%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1109%2FISCA45697.2020.00021&amp;rft.isbn=978-1-7281-4661-4&amp;rft.aulast=Pakalapati&amp;rft.aufirst=Samuel&amp;rft.au=Panda%2C+Biswabandan&amp;rft_id=https%3A%2F%2Fieeexplore.ieee.org%2Fdocument%2F9138971&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFCallahanKennedyPorterfield1991" class="citation conference cs1">Callahan, David; Kennedy, Ken; Porterfield, Allan (1991-01-01). <i>Software Prefetching</i>. Fourth International Conference on Architectural Support for Programming Languages and Operating Systems. Santa Clara, California, USA: Association for Computing Machinery. pp.&#160;40–52. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F106972.106979">10.1145/106972.106979</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-0897913805" title="Special:BookSources/978-0897913805"><bdi>978-0897913805</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=conference&amp;rft.btitle=Software+Prefetching&amp;rft.place=Santa+Clara%2C+California%2C+USA&amp;rft.pages=40-52&amp;rft.pub=Association+for+Computing+Machinery&amp;rft.date=1991-01-01&amp;rft_id=info%3Adoi%2F10.1145%2F106972.106979&amp;rft.isbn=978-0897913805&amp;rft.aulast=Callahan&amp;rft.aufirst=David&amp;rft.au=Kennedy%2C+Ken&amp;rft.au=Porterfield%2C+Allan&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span></span> </li> <li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFLee,_Jaekyu_and_Kim,_Hyesoon_and_Vuduc,_Richard2012" class="citation cs2">Lee, Jaekyu and Kim, Hyesoon and Vuduc, Richard (2012), <a rel="nofollow" class="external text" href="https://faculty.cc.gatech.edu/~hyesoon/lee_taco12.pdf">"When Prefetching Works, When It Doesn't, and Why"</a> <span class="cs1-format">(PDF)</span>, <i>ACM Trans. Archit. Code Optim.</i>, <b>9</b>: 1–29, <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2133382.2133384">10.1145/2133382.2133384</a></cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=ACM+Trans.+Archit.+Code+Optim.&amp;rft.atitle=When+Prefetching+Works%2C+When+It+Doesn%27t%2C+and+Why&amp;rft.volume=9&amp;rft.pages=1-29&amp;rft.date=2012&amp;rft_id=info%3Adoi%2F10.1145%2F2133382.2133384&amp;rft.au=Lee%2C+Jaekyu+and+Kim%2C+Hyesoon+and+Vuduc%2C+Richard&amp;rft_id=https%3A%2F%2Ffaculty.cc.gatech.edu%2F~hyesoon%2Flee_taco12.pdf&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACache+prefetching" class="Z3988"></span><span class="cs1-maint citation-comment"><code class="cs1-code">{{<a href="/wiki/Template:Citation" title="Template:Citation">citation</a>}}</code>: CS1 maint: multiple names: authors list (<a href="/wiki/Category:CS1_maint:_multiple_names:_authors_list" title="Category:CS1 maint: multiple names: authors list">link</a>)</span></span> </li> </ol></div> <!-- NewPP limit report Parsed by mw‐web.eqiad.main‐5dc468848‐2hr2z Cached time: 20241122153101 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.295 seconds Real time usage: 0.847 seconds Preprocessor visited node count: 1647/1000000 Post‐expand include size: 60237/2097152 bytes Template argument size: 714/2097152 bytes Highest expansion depth: 8/100 Expensive parser function count: 3/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 96763/5000000 bytes Lua time usage: 0.173/10.000 seconds Lua memory usage: 4983021/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 747.896 1 -total 47.98% 358.846 1 Template:Short_description 36.07% 269.773 2 Template:Pagetype 28.16% 210.610 1 Template:Reflist 11.91% 89.097 5 Template:Cite_journal 9.76% 72.973 3 Template:Main_other 9.35% 69.912 1 Template:SDcat 9.11% 68.129 14 Template:Cite_conference 0.90% 6.740 1 Template:Citation 0.83% 6.225 1 Template:Cite_web --> <!-- Saved in parser cache with key enwiki:pcache:idhash:51540963-0!canonical and timestamp 20241122153101 and revision id 1207865161. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Cache_prefetching&amp;oldid=1207865161">https://en.wikipedia.org/w/index.php?title=Cache_prefetching&amp;oldid=1207865161</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Category</a>: <ul><li><a href="/wiki/Category:Cache_(computing)" title="Category:Cache (computing)">Cache (computing)</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:CS1_maint:_multiple_names:_authors_list" title="Category:CS1 maint: multiple names: authors list">CS1 maint: multiple names: authors list</a></li><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_is_different_from_Wikidata" title="Category:Short description is different from Wikidata">Short description is different from Wikidata</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 15 February 2024, at 22:50<span class="anonymous-show">&#160;(UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Cache_prefetching&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-f7rzp","wgBackendResponseTime":147,"wgPageParseReport":{"limitreport":{"cputime":"0.295","walltime":"0.847","ppvisitednodes":{"value":1647,"limit":1000000},"postexpandincludesize":{"value":60237,"limit":2097152},"templateargumentsize":{"value":714,"limit":2097152},"expansiondepth":{"value":8,"limit":100},"expensivefunctioncount":{"value":3,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":96763,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 747.896 1 -total"," 47.98% 358.846 1 Template:Short_description"," 36.07% 269.773 2 Template:Pagetype"," 28.16% 210.610 1 Template:Reflist"," 11.91% 89.097 5 Template:Cite_journal"," 9.76% 72.973 3 Template:Main_other"," 9.35% 69.912 1 Template:SDcat"," 9.11% 68.129 14 Template:Cite_conference"," 0.90% 6.740 1 Template:Citation"," 0.83% 6.225 1 Template:Cite_web"]},"scribunto":{"limitreport-timeusage":{"value":"0.173","limit":"10.000"},"limitreport-memusage":{"value":4983021,"limit":52428800}},"cachereport":{"origin":"mw-web.eqiad.main-5dc468848-2hr2z","timestamp":"20241122153101","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Cache prefetching","url":"https:\/\/en.wikipedia.org\/wiki\/Cache_prefetching","sameAs":"http:\/\/www.wikidata.org\/entity\/Q28455645","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q28455645","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2016-09-07T19:02:55Z","dateModified":"2024-02-15T22:50:29Z","headline":"Computer processing technique to boost memory"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10