CINXE.COM
Instruction set architecture - 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>Instruction set architecture - 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":"6dc16cfa-8e0a-426a-9405-346d4991db42","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Instruction_set_architecture","wgTitle":"Instruction set architecture","wgCurRevisionId":1256414498,"wgRevisionId":1256414498,"wgArticleId":47772,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description is different from Wikidata","Wikipedia articles needing clarification from April 2024","All articles with unsourced statements","Articles with unsourced statements from March 2023","All articles with failed verification","Articles with failed verification from December 2021","Wikipedia articles needing clarification from October 2012","All accuracy disputes", "Articles with disputed statements from October 2012","Articles with unsourced statements from October 2012","Commons category link is on Wikidata","Central processing unit","Instruction processing","Instruction set architectures","Microprocessors"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Instruction_set_architecture","wgRelevantArticleId":47772,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgRedirectedFrom":"Instruction_set","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":40000,"wgInternalRedirectTargetUrl":"/wiki/Instruction_set_architecture","wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q272683","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","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons": "ready","jquery.makeCollapsible.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["mediawiki.action.view.redirect","ext.cite.ux-enhancements","mediawiki.page.media","ext.scribunto.logs","site","mediawiki.page.ready","jquery.makeCollapsible","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&modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&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="Instruction set architecture - 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/Instruction_set_architecture"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Instruction_set_architecture&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/Instruction_set_architecture"> <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&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-Instruction_set_architecture rootpage-Instruction_set_architecture 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'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&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&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&returnto=Instruction+set+architecture" 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&returnto=Instruction+set+architecture" title="You're encouraged to log in; however, it'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&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&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&returnto=Instruction+set+architecture" 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&returnto=Instruction+set+architecture" title="You're encouraged to log in; however, it'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-Overview" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Overview"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Overview</span> </div> </a> <ul id="toc-Overview-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Classification_of_ISAs" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Classification_of_ISAs"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Classification of ISAs</span> </div> </a> <ul id="toc-Classification_of_ISAs-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Instructions" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Instructions"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Instructions</span> </div> </a> <button aria-controls="toc-Instructions-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 Instructions subsection</span> </button> <ul id="toc-Instructions-sublist" class="vector-toc-list"> <li id="toc-Instruction_types" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Instruction_types"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Instruction types</span> </div> </a> <ul id="toc-Instruction_types-sublist" class="vector-toc-list"> <li id="toc-Data_handling_and_memory_operations" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Data_handling_and_memory_operations"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1.1</span> <span>Data handling and memory operations</span> </div> </a> <ul id="toc-Data_handling_and_memory_operations-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Arithmetic_and_logic_operations" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Arithmetic_and_logic_operations"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1.2</span> <span>Arithmetic and logic operations</span> </div> </a> <ul id="toc-Arithmetic_and_logic_operations-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Control_flow_operations" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Control_flow_operations"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1.3</span> <span>Control flow operations</span> </div> </a> <ul id="toc-Control_flow_operations-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Coprocessor_instructions" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Coprocessor_instructions"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1.4</span> <span>Coprocessor instructions</span> </div> </a> <ul id="toc-Coprocessor_instructions-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Complex_instructions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Complex_instructions"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Complex instructions</span> </div> </a> <ul id="toc-Complex_instructions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Instruction_encoding" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Instruction_encoding"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3</span> <span>Instruction encoding</span> </div> </a> <ul id="toc-Instruction_encoding-sublist" class="vector-toc-list"> <li id="toc-Number_of_operands" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Number_of_operands"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3.1</span> <span>Number of operands</span> </div> </a> <ul id="toc-Number_of_operands-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Register_pressure" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Register_pressure"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.4</span> <span>Register pressure</span> </div> </a> <ul id="toc-Register_pressure-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Instruction_length" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Instruction_length"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.5</span> <span>Instruction length</span> </div> </a> <ul id="toc-Instruction_length-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Code_density" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Code_density"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.6</span> <span>Code density</span> </div> </a> <ul id="toc-Code_density-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Representation" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Representation"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.7</span> <span>Representation</span> </div> </a> <ul id="toc-Representation-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Design" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Design"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Design</span> </div> </a> <ul id="toc-Design-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Instruction_set_implementation" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Instruction_set_implementation"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Instruction set implementation</span> </div> </a> <ul id="toc-Instruction_set_implementation-sublist" class="vector-toc-list"> </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">6</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">7</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Further_reading" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Further_reading"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Further reading</span> </div> </a> <ul id="toc-Further_reading-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>External links</span> </div> </a> <ul id="toc-External_links-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">Instruction set architecture</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 33 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-33" 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">33 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D8%A9_%D8%AA%D8%B9%D9%84%D9%8A%D9%85%D8%A7%D8%AA" title="مجموعة تعليمات – Arabic" lang="ar" hreflang="ar" data-title="مجموعة تعليمات" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-be-x-old mw-list-item"><a href="https://be-tarask.wikipedia.org/wiki/%D0%90%D1%80%D1%85%D1%96%D1%82%D1%8D%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D1%83_%D1%96%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D1%8B%D1%8F%D1%9E" title="Архітэктура набору інструкцыяў – Belarusian (Taraškievica orthography)" lang="be-tarask" hreflang="be-tarask" data-title="Архітэктура набору інструкцыяў" data-language-autonym="Беларуская (тарашкевіца)" data-language-local-name="Belarusian (Taraškievica orthography)" class="interlanguage-link-target"><span>Беларуская (тарашкевіца)</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/%D0%9D%D0%B0%D0%B1%D0%BE%D1%80_%D0%BE%D1%82_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8" title="Набор от инструкции – Bulgarian" lang="bg" hreflang="bg" data-title="Набор от инструкции" data-language-autonym="Български" data-language-local-name="Bulgarian" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-bs mw-list-item"><a href="https://bs.wikipedia.org/wiki/Arhitektura_seta_instrukcija" title="Arhitektura seta instrukcija – Bosnian" lang="bs" hreflang="bs" data-title="Arhitektura seta instrukcija" data-language-autonym="Bosanski" data-language-local-name="Bosnian" class="interlanguage-link-target"><span>Bosanski</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Arquitectura_del_conjunt_d%27instruccions" title="Arquitectura del conjunt d'instruccions – Catalan" lang="ca" hreflang="ca" data-title="Arquitectura del conjunt d'instruccions" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Befehlssatzarchitektur" title="Befehlssatzarchitektur – German" lang="de" hreflang="de" data-title="Befehlssatzarchitektur" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/K%C3%A4sustik" title="Käsustik – Estonian" lang="et" hreflang="et" data-title="Käsustik" data-language-autonym="Eesti" data-language-local-name="Estonian" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/%CE%91%CF%81%CF%87%CE%B9%CF%84%CE%B5%CE%BA%CF%84%CE%BF%CE%BD%CE%B9%CE%BA%CE%AE_%CF%83%CF%85%CE%BD%CF%8C%CE%BB%CE%BF%CF%85_%CE%B5%CE%BD%CF%84%CE%BF%CE%BB%CF%8E%CE%BD" title="Αρχιτεκτονική συνόλου εντολών – Greek" lang="el" hreflang="el" data-title="Αρχιτεκτονική συνόλου εντολών" data-language-autonym="Ελληνικά" data-language-local-name="Greek" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Conjunto_de_instrucciones" title="Conjunto de instrucciones – Spanish" lang="es" hreflang="es" data-title="Conjunto de instrucciones" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87_%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D9%84%D8%B9%D9%85%D9%84" title="مجموعه دستورالعمل – Persian" lang="fa" hreflang="fa" data-title="مجموعه دستورالعمل" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-ga mw-list-item"><a href="https://ga.wikipedia.org/wiki/Tacar_treoracha" title="Tacar treoracha – Irish" lang="ga" hreflang="ga" data-title="Tacar treoracha" data-language-autonym="Gaeilge" data-language-local-name="Irish" class="interlanguage-link-target"><span>Gaeilge</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9%EC%96%B4_%EC%A7%91%ED%95%A9" title="명령어 집합 – Korean" lang="ko" hreflang="ko" data-title="명령어 집합" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/Skup_naredbi" title="Skup naredbi – Croatian" lang="hr" hreflang="hr" data-title="Skup naredbi" data-language-autonym="Hrvatski" data-language-local-name="Croatian" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Architettura_del_set_di_istruzioni" title="Architettura del set di istruzioni – Italian" lang="it" hreflang="it" data-title="Architettura del set di istruzioni" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/%D7%A1%D7%98_%D7%A4%D7%A7%D7%95%D7%93%D7%95%D7%AA" title="סט פקודות – Hebrew" lang="he" hreflang="he" data-title="סט פקודות" data-language-autonym="עברית" data-language-local-name="Hebrew" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-lv mw-list-item"><a href="https://lv.wikipedia.org/wiki/Instrukciju_kopa" title="Instrukciju kopa – Latvian" lang="lv" hreflang="lv" data-title="Instrukciju kopa" data-language-autonym="Latviešu" data-language-local-name="Latvian" class="interlanguage-link-target"><span>Latviešu</span></a></li><li class="interlanguage-link interwiki-lmo mw-list-item"><a href="https://lmo.wikipedia.org/wiki/Instruction_Set_Architecture" title="Instruction Set Architecture – Lombard" lang="lmo" hreflang="lmo" data-title="Instruction Set Architecture" data-language-autonym="Lombard" data-language-local-name="Lombard" class="interlanguage-link-target"><span>Lombard</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Utas%C3%ADt%C3%A1sk%C3%A9szlet" title="Utasításkészlet – Hungarian" lang="hu" hreflang="hu" data-title="Utasításkészlet" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-mk mw-list-item"><a href="https://mk.wikipedia.org/wiki/%D0%9D%D0%B0%D1%80%D0%B5%D0%B4%D0%B1%D0%B5%D0%BD%D0%BE_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE" title="Наредбено множество – Macedonian" lang="mk" hreflang="mk" data-title="Наредбено множество" data-language-autonym="Македонски" data-language-local-name="Macedonian" class="interlanguage-link-target"><span>Македонски</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%87%E0%B5%BB%E0%B4%B8%E0%B5%8D%E0%B4%9F%E0%B5%8D%E0%B4%B0%E0%B4%95%E0%B5%8D%E0%B4%B7%E0%B5%BB_%E0%B4%B8%E0%B5%86%E0%B4%B1%E0%B5%8D%E0%B4%B1%E0%B5%8D_%E0%B4%86%E0%B5%BC%E0%B4%95%E0%B5%8D%E0%B4%95%E0%B4%BF%E0%B4%9F%E0%B5%86%E0%B4%95%E0%B5%8D%E0%B4%9A%E0%B5%BC" title="ഇൻസ്ട്രക്ഷൻ സെറ്റ് ആർക്കിടെക്ചർ – Malayalam" lang="ml" hreflang="ml" data-title="ഇൻസ്ട്രക്ഷൻ സെറ്റ് ആർക്കിടെക്ചർ" data-language-autonym="മലയാളം" data-language-local-name="Malayalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-mn mw-list-item"><a href="https://mn.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B%D0%BD_%D0%B1%D0%B0%D0%B3%D1%86" title="Командын багц – Mongolian" lang="mn" hreflang="mn" data-title="Командын багц" data-language-autonym="Монгол" data-language-local-name="Mongolian" class="interlanguage-link-target"><span>Монгол</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Architektura_zestawu_instrukcji" title="Architektura zestawu instrukcji – Polish" lang="pl" hreflang="pl" data-title="Architektura zestawu instrukcji" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D0%B0_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4" title="Архитектура набора команд – Russian" lang="ru" hreflang="ru" data-title="Архитектура набора команд" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sk mw-list-item"><a href="https://sk.wikipedia.org/wiki/In%C5%A1truk%C4%8Dn%C3%BD_s%C3%BAbor" title="Inštrukčný súbor – Slovak" lang="sk" hreflang="sk" data-title="Inštrukčný súbor" data-language-autonym="Slovenčina" data-language-local-name="Slovak" class="interlanguage-link-target"><span>Slovenčina</span></a></li><li class="interlanguage-link interwiki-ckb mw-list-item"><a href="https://ckb.wikipedia.org/wiki/%DA%A9%DB%86%D9%85%DB%95%DA%B5%DB%95_%D9%81%DB%95%D8%B1%D9%85%D8%A7%D9%86" title="کۆمەڵە فەرمان – Central Kurdish" lang="ckb" hreflang="ckb" data-title="کۆمەڵە فەرمان" data-language-autonym="کوردی" data-language-local-name="Central Kurdish" class="interlanguage-link-target"><span>کوردی</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/%D0%A1%D0%BA%D1%83%D0%BF_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%98%D0%B0" title="Скуп инструкција – Serbian" lang="sr" hreflang="sr" data-title="Скуп инструкција" data-language-autonym="Српски / srpski" data-language-local-name="Serbian" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Instruktionsupps%C3%A4ttning" title="Instruktionsuppsättning – Swedish" lang="sv" hreflang="sv" data-title="Instruktionsuppsättning" data-language-autonym="Svenska" data-language-local-name="Swedish" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wikipedia.org/wiki/%E0%B8%8A%E0%B8%B8%E0%B8%94%E0%B8%82%E0%B8%AD%E0%B8%87%E0%B8%84%E0%B8%B3%E0%B8%AA%E0%B8%B1%E0%B9%88%E0%B8%87%E0%B9%80%E0%B8%84%E0%B8%A3%E0%B8%B7%E0%B9%88%E0%B8%AD%E0%B8%87" title="ชุดของคำสั่งเครื่อง – Thai" lang="th" hreflang="th" data-title="ชุดของคำสั่งเครื่อง" data-language-autonym="ไทย" data-language-local-name="Thai" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Buyruk_k%C3%BCmesi_mimarisi" title="Buyruk kümesi mimarisi – Turkish" lang="tr" hreflang="tr" data-title="Buyruk kümesi mimarisi" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%90%D1%80%D1%85%D1%96%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4" title="Архітектура системи команд – Ukrainian" lang="uk" hreflang="uk" data-title="Архітектура системи команд" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/Ki%E1%BA%BFn_tr%C3%BAc_t%E1%BA%ADp_l%E1%BB%87nh" title="Kiến trúc tập lệnh – Vietnamese" lang="vi" hreflang="vi" data-title="Kiến trúc tập lệnh" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamese" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/%E6%8C%87%E4%BB%A4%E9%9B%86%E6%9E%B6%E6%A7%8B" title="指令集架構 – Cantonese" lang="yue" hreflang="yue" data-title="指令集架構" data-language-autonym="粵語" data-language-local-name="Cantonese" class="interlanguage-link-target"><span>粵語</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E6%8C%87%E4%BB%A4%E9%9B%86%E6%9E%B6%E6%A7%8B" title="指令集架構 – Chinese" lang="zh" hreflang="zh" data-title="指令集架構" data-language-autonym="中文" data-language-local-name="Chinese" 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/Q272683#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/Instruction_set_architecture" 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:Instruction_set_architecture" 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/Instruction_set_architecture"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Instruction_set_architecture&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=Instruction_set_architecture&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/Instruction_set_architecture"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Instruction_set_architecture&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=Instruction_set_architecture&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/Instruction_set_architecture" 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/Instruction_set_architecture" 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=Instruction_set_architecture&oldid=1256414498" 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=Instruction_set_architecture&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&page=Instruction_set_architecture&id=1256414498&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&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FInstruction_set_architecture"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FInstruction_set_architecture"><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&page=Instruction_set_architecture&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=Instruction_set_architecture&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 class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Category:Instruction_set_architectures" hreflang="en"><span>Wikimedia Commons</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q272683" 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"><span class="mw-redirectedfrom">(Redirected from <a href="/w/index.php?title=Instruction_set&redirect=no" class="mw-redirect" title="Instruction set">Instruction set</a>)</span></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">Set of abstract symbols that describe a computer program's operations to a processor</div> <style data-mw-deduplicate="TemplateStyles:r1236090951">.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}</style><div role="note" class="hatnote navigation-not-searchable">For broader coverage of this topic, see <a href="/wiki/Computer_architecture" title="Computer architecture">computer architecture</a>.</div> <style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1246091330">.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:640px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}body.skin--responsive .mw-parser-output .sidebar a>img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}</style><table class="sidebar nomobile nowraplinks" style="margin-top: 0.5em;"><tbody><tr><th class="sidebar-title" style="background-color: rgba(51, 153, 255, 0.15);"><a href="/wiki/Machine_code" title="Machine code">Machine code</a></th></tr><tr><th class="sidebar-heading" style="background-color: rgba(51, 153, 255, 0.15);"> General concepts</th></tr><tr><td class="sidebar-content" style="text-align: left;"> <ul><li><a class="mw-selflink selflink">Instruction set</a></li> <li><a href="/wiki/Opcode" title="Opcode">Opcode</a> <ul><li><a href="/wiki/Illegal_opcode" title="Illegal opcode">Illegal opcode</a></li> <li><a href="/wiki/Opcode_table" title="Opcode table">Opcode table</a></li></ul></li> <li><a href="/wiki/Operand#Computer_science" title="Operand">Operand</a></li></ul></td> </tr><tr><th class="sidebar-heading" style="background-color: rgba(51, 153, 255, 0.15);"> Instructions</th></tr><tr><td class="sidebar-content" style="text-align: left;"> <ul><li><a href="/wiki/NOP_(code)" title="NOP (code)">NOP</a></li> <li><a href="/wiki/Branch_(computer_science)" title="Branch (computer science)">Branch</a> <ul><li><a href="/wiki/Indirect_branch" title="Indirect branch">Indirect branch</a></li></ul></li> <li><a href="/wiki/Repeat_instruction" title="Repeat instruction">Repeat instruction</a></li> <li><a href="/wiki/Execute_instruction" title="Execute instruction">Execute instruction</a></li></ul></td> </tr><tr><td class="sidebar-navbar"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Machine_code" title="Template:Machine code"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Machine_code" title="Template talk:Machine code"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Machine_code" title="Special:EditPage/Template:Machine code"><abbr title="Edit this template">e</abbr></a></li></ul></div></td></tr></tbody></table> <p>In <a href="/wiki/Computer_science" title="Computer science">computer science</a>, an <b>instruction set architecture</b> (<b>ISA</b>) is an <a href="/wiki/Conceptual_model" title="Conceptual model">abstract model</a> that generally defines how <a href="/wiki/Software" title="Software">software</a> controls the <a href="/wiki/Central_processing_unit" title="Central processing unit">CPU</a> in a computer or a family of computers.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> A device or program that executes instructions described by that ISA, such as a central processing unit (CPU), is called an <i><a href="/wiki/Implementation" title="Implementation">implementation</a></i> of that ISA. </p><p>In general, an ISA defines the supported <a href="/wiki/Machine_code" title="Machine code">instructions</a>, <a href="/wiki/Data_type" title="Data type">data types</a>, <a href="/wiki/Register_(computer)" class="mw-redirect" title="Register (computer)">registers</a>, the hardware support for managing <a href="/wiki/Computer_memory" title="Computer memory">main memory</a>,<sup class="noprint Inline-Template" style="margin-left:0.1em; white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Please_clarify" title="Wikipedia:Please clarify"><span title="See "What does "Hardware support for managing main memory" refer to?" on the talk page.]] (April 2024)">clarification needed</span></a></i>]</sup> fundamental features (such as the <a href="/wiki/Memory_consistency" class="mw-redirect" title="Memory consistency">memory consistency</a>, <a href="/wiki/Addressing_mode" title="Addressing mode">addressing modes</a>, <a href="/wiki/Virtual_memory" title="Virtual memory">virtual memory</a>), and the <a href="/wiki/Input/output" title="Input/output">input/output</a> model of implementations of the ISA. </p><p>An ISA specifies the behavior of <a href="/wiki/Machine_code" title="Machine code">machine code</a> running on implementations of that ISA in a fashion that does not depend on the characteristics of that implementation, providing <a href="/wiki/Binary_compatibility" class="mw-redirect" title="Binary compatibility">binary compatibility</a> between implementations. This enables multiple implementations of an ISA that differ in characteristics such as <a href="/wiki/Computer_performance" title="Computer performance">performance</a>, physical size, and monetary cost (among other things), but that are capable of running the same machine code, so that a lower-performance, lower-cost machine can be replaced with a higher-cost, higher-performance machine without having to replace software. It also enables the evolution of the <a href="/wiki/Microarchitecture" title="Microarchitecture">microarchitectures</a> of the implementations of that ISA, so that a newer, higher-performance implementation of an ISA can run software that runs on previous generations of implementations. </p><p>If an <a href="/wiki/Operating_system" title="Operating system">operating system</a> maintains a standard and compatible <a href="/wiki/Application_binary_interface" title="Application binary interface">application binary interface</a> (ABI) for a particular ISA, machine code will run on future implementations of that ISA and operating system. However, if an ISA supports running multiple operating systems, it does not guarantee that machine code for one operating system will run on another operating system, unless the first operating system supports running machine code built for the other operating system. </p><p>An ISA can be extended by adding instructions or other capabilities, or adding support for larger addresses and data values; an implementation of the extended ISA will still be able to execute <a href="/wiki/Machine_code" title="Machine code">machine code</a> for versions of the ISA without those extensions. Machine code using those extensions will only run on implementations that support those extensions. </p><p>The binary compatibility that they provide makes ISAs one of the most fundamental abstractions in <a href="/wiki/Computing" title="Computing">computing</a>. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Overview">Overview</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=1" title="Edit section: Overview"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>An instruction set architecture is distinguished from a <a href="/wiki/Microarchitecture" title="Microarchitecture">microarchitecture</a>, which is the set of <a href="/wiki/Processor_design" title="Processor design">processor design</a> techniques used, in a particular processor, to implement the instruction set. Processors with different microarchitectures can share a common instruction set. For example, the <a href="/wiki/Intel" title="Intel">Intel</a> <a href="/wiki/P5_(microarchitecture)" class="mw-redirect" title="P5 (microarchitecture)">Pentium</a> and the <a href="/wiki/Advanced_Micro_Devices" class="mw-redirect" title="Advanced Micro Devices">AMD</a> <a href="/wiki/Athlon" title="Athlon">Athlon</a> implement nearly identical versions of the <a href="/wiki/X86_instruction_set" class="mw-redirect" title="X86 instruction set">x86 instruction set</a>, but they have radically different internal designs. </p><p> The concept of an <i>architecture</i>, distinct from the design of a specific machine, was developed by <a href="/wiki/Fred_Brooks" title="Fred Brooks">Fred Brooks</a> at IBM during the design phase of <a href="/wiki/System/360" class="mw-redirect" title="System/360">System/360</a>. <style data-mw-deduplicate="TemplateStyles:r1244412712">.mw-parser-output .templatequote{overflow:hidden;margin:1em 0;padding:0 32px}.mw-parser-output .templatequotecite{line-height:1.5em;text-align:left;margin-top:0}@media(min-width:500px){.mw-parser-output .templatequotecite{padding-left:1.6em}}</style></p><blockquote class="templatequote"><p>Prior to NPL [System/360], the company's computer designers had been free to honor cost objectives not only by selecting technologies but also by fashioning functional and architectural refinements. The SPREAD compatibility objective, in contrast, postulated a single architecture for a series of five processors spanning a wide range of cost and performance. None of the five engineering design teams could count on being able to bring about adjustments in architectural specifications as a way of easing difficulties in achieving cost and performance objectives.<sup id="cite_ref-Pugh_2-0" class="reference"><a href="#cite_note-Pugh-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap"><span title="Page / location: p.137">: p.137 </span></sup></p></blockquote> <p>Some <a href="/wiki/Virtual_machine" title="Virtual machine">virtual machines</a> that support <a href="/wiki/Bytecode" title="Bytecode">bytecode</a> as their ISA such as <a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a>, the <a href="/wiki/Java_virtual_machine" title="Java virtual machine">Java virtual machine</a>, and <a href="/wiki/Microsoft" title="Microsoft">Microsoft</a>'s <a href="/wiki/Common_Language_Runtime" title="Common Language Runtime">Common Language Runtime</a>, implement this by translating the bytecode for commonly used code paths into native machine code. In addition, these virtual machines execute less frequently used code paths by interpretation (see: <a href="/wiki/Just-in-time_compilation" title="Just-in-time compilation">Just-in-time compilation</a>). <a href="/wiki/Transmeta" title="Transmeta">Transmeta</a> implemented the x86 instruction set atop <a href="/wiki/VLIW" class="mw-redirect" title="VLIW">VLIW</a> processors in this fashion. </p> <div class="mw-heading mw-heading2"><h2 id="Classification_of_ISAs">Classification of ISAs</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=2" title="Edit section: Classification of ISAs"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>An ISA may be classified in a number of different ways. A common classification is by architectural <i>complexity</i>. A <a href="/wiki/Complex_instruction_set_computer" title="Complex instruction set computer">complex instruction set computer</a> (CISC) has many specialized instructions, some of which may only be rarely used in practical programs. A <a href="/wiki/Reduced_instruction_set_computer" title="Reduced instruction set computer">reduced instruction set computer</a> (RISC) simplifies the processor by efficiently implementing only the instructions that are frequently used in programs, while the less common operations are implemented as subroutines, having their resulting additional processor execution time offset by infrequent use.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> </p><p>Other types include <a href="/wiki/Very_long_instruction_word" title="Very long instruction word">very long instruction word</a> (VLIW) architectures, and the closely related <span class="citation-needed-content" style="padding-left:0.1em; padding-right:0.1em; color:var(--color-subtle, #54595d); border:1px solid var(--border-color-subtle, #c8ccd1);"><i>long instruction word</i> (LIW)</span><sup class="noprint Inline-Template Template-Fact" style="margin-left:0.1em; white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (March 2023)">citation needed</span></a></i>]</sup> and <i><a href="/wiki/Explicitly_parallel_instruction_computing" title="Explicitly parallel instruction computing">explicitly parallel instruction computing</a></i> (EPIC) architectures. These architectures seek to exploit <a href="/wiki/Instruction-level_parallelism" title="Instruction-level parallelism">instruction-level parallelism</a> with less hardware than RISC and CISC by making the <a href="/wiki/Compiler" title="Compiler">compiler</a> responsible for instruction issue and scheduling.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> </p><p>Architectures with even less complexity have been studied, such as the <a href="/wiki/Minimal_instruction_set_computer" title="Minimal instruction set computer">minimal instruction set computer</a> (MISC) and <a href="/wiki/One-instruction_set_computer" title="One-instruction set computer">one-instruction set computer</a> (OISC). These are theoretically important types, but have not been commercialized.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Instructions"><span id="NATIVE"></span>Instructions</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=3" title="Edit section: Instructions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Machine_code" title="Machine code">Machine language</a> is built up from discrete <i>statements</i> or <i>instructions</i>. On the processing architecture, a given instruction may specify: </p> <ul><li><a href="/wiki/Opcode" title="Opcode">opcode</a> (the instruction to be performed) e.g. add, copy, test</li> <li>any explicit operands:</li></ul> <dl><dd><dl><dd><a href="/wiki/Processor_register" title="Processor register">registers</a></dd> <dd>literal/constant values</dd> <dd><a href="/wiki/Addressing_mode" title="Addressing mode">addressing modes</a> used to access memory</dd></dl></dd></dl> <p>More complex operations are built up by combining these simple instructions, which are executed sequentially, or as otherwise directed by <a href="/wiki/Control_flow" title="Control flow">control flow</a> instructions. </p> <div class="mw-heading mw-heading3"><h3 id="Instruction_types">Instruction types</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=4" title="Edit section: Instruction types"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Examples of operations common to many instruction sets include: </p> <div class="mw-heading mw-heading4"><h4 id="Data_handling_and_memory_operations">Data handling and memory operations</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=5" title="Edit section: Data handling and memory operations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><i>Set</i> a <a href="/wiki/Processor_register" title="Processor register">register</a> to a fixed constant value.</li> <li><i>Copy</i> data from a memory location or a register to a memory location or a register (a machine instruction is often called <i>move</i>; however, the term is misleading). They are used to store the contents of a register, the contents of another memory location or the result of a computation, or to retrieve stored data to perform a computation on it later. They are often called <a href="/wiki/Load%E2%80%93store_unit" title="Load–store unit"><i>load</i> or <i>store</i></a> operations.</li> <li><i>Read</i> or <i>write</i> data from hardware devices.</li></ul> <div class="mw-heading mw-heading4"><h4 id="Arithmetic_and_logic_operations">Arithmetic and logic operations</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=6" title="Edit section: Arithmetic and logic operations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><i>Add</i>, <i>subtract</i>, <i>multiply</i>, or <i>divide</i> the values of two registers, placing the result in a register, possibly setting one or more <a href="/wiki/Flag_(programming)" title="Flag (programming)">condition codes</a> in a <a href="/wiki/Status_register" title="Status register">status register</a>.<sup id="cite_ref-FOOTNOTEHennessyPatterson2003108_7-0" class="reference"><a href="#cite_note-FOOTNOTEHennessyPatterson2003108-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> <ul><li><i><style data-mw-deduplicate="TemplateStyles:r1238216509">.mw-parser-output .vanchor>:target~.vanchor-text{background-color:#b1d2ff}@media screen{html.skin-theme-clientpref-night .mw-parser-output .vanchor>:target~.vanchor-text{background-color:#0f4dc9}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .vanchor>:target~.vanchor-text{background-color:#0f4dc9}}</style><span class="vanchor"><span id="increment"></span><span class="vanchor-text">increment</span></span></i>, <i><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238216509"><span class="vanchor"><span id="decrement"></span><span class="vanchor-text">decrement</span></span></i> in some ISAs, saving operand fetch in trivial cases.</li></ul></li> <li>Perform <a href="/wiki/Bitwise_operation" title="Bitwise operation">bitwise operations</a>, e.g., taking the <i><a href="/wiki/Logical_conjunction" title="Logical conjunction">conjunction</a></i> and <i><a href="/wiki/Logical_disjunction" title="Logical disjunction">disjunction</a></i> of corresponding bits in a pair of registers, taking the <i><a href="/wiki/Logical_negation" class="mw-redirect" title="Logical negation">negation</a></i> of each bit in a register.</li> <li><i>Compare</i> two values in registers (for example, to see if one is less, or if they are equal).</li> <li><i><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238216509"><span class="vanchor"><span id="Floating-point_instruction"></span><span class="vanchor-text">Floating-point instruction</span></span>s</i> for arithmetic on floating-point numbers.<sup id="cite_ref-FOOTNOTEHennessyPatterson2003108_7-1" class="reference"><a href="#cite_note-FOOTNOTEHennessyPatterson2003108-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup></li></ul> <div class="mw-heading mw-heading4"><h4 id="Control_flow_operations">Control flow operations</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=7" title="Edit section: Control flow operations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><i><a href="/wiki/Branch_(computer_science)" title="Branch (computer science)">Branch</a></i> to another location in the program and execute instructions there.</li> <li><i><a href="/wiki/Conditional_branch" class="mw-redirect" title="Conditional branch">Conditionally branch</a></i> to another location if a certain condition holds.</li> <li><i><a href="/wiki/Indirect_branch" title="Indirect branch">Indirectly branch</a></i> to another location.</li> <li><i><a href="/wiki/Subroutine" class="mw-redirect" title="Subroutine">Call</a></i> another block of code, while saving the location of the next instruction as a point to return to.</li></ul> <div class="mw-heading mw-heading4"><h4 id="Coprocessor_instructions">Coprocessor instructions</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=8" title="Edit section: Coprocessor instructions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Load/store data to and from a coprocessor or exchanging with CPU registers.</li> <li>Perform coprocessor operations.</li></ul> <div class="mw-heading mw-heading3"><h3 id="Complex_instructions">Complex instructions</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=9" title="Edit section: Complex instructions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Processors may include "complex" instructions in their instruction set. A single "complex" instruction does something that may take many instructions on other computers. Such instructions are <a href="/wiki/Typified" class="mw-redirect" title="Typified">typified</a> by instructions that take multiple steps, control multiple functional units, or otherwise appear on a larger scale than the bulk of simple instructions implemented by the given processor. Some examples of "complex" instructions include: </p> <ul><li>transferring multiple registers to or from memory (especially the <a href="/wiki/Call_stack" title="Call stack">stack</a>) at once</li> <li>moving large blocks of memory (e.g. <a href="/wiki/String_copy" class="mw-redirect" title="String copy">string copy</a> or <a href="/wiki/DMA_transfer" class="mw-redirect" title="DMA transfer">DMA transfer</a>)</li> <li>complicated integer and <a href="/wiki/Floating-point_arithmetic" title="Floating-point arithmetic">floating-point arithmetic</a> (e.g. <a href="/wiki/Square_root" title="Square root">square root</a>, or <a href="/wiki/Transcendental_function" title="Transcendental function">transcendental functions</a> such as <a href="/wiki/Logarithm" title="Logarithm">logarithm</a>, <a href="/wiki/Sine" class="mw-redirect" title="Sine">sine</a>, <a href="/wiki/Cosine" class="mw-redirect" title="Cosine">cosine</a>, etc.)</li> <li><i><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238216509"><span class="vanchor"><span id="[[Single_instruction,_multiple_data|SIMD]]_instruction"></span><span id="SIMD_instruction"></span><span class="vanchor-text"><a href="/wiki/Single_instruction,_multiple_data" title="Single instruction, multiple data">SIMD</a> instruction</span></span>s</i>, a single instruction performing an operation on many homogeneous values in parallel, possibly in dedicated <a href="/wiki/SIMD_register" class="mw-redirect" title="SIMD register">SIMD registers</a></li> <li>performing an atomic <a href="/wiki/Test-and-set" title="Test-and-set">test-and-set</a> instruction or other <a href="/wiki/Read%E2%80%93modify%E2%80%93write" title="Read–modify–write">read–modify–write</a> <a href="/wiki/Atomic_instruction" class="mw-redirect" title="Atomic instruction">atomic instruction</a></li> <li>instructions that perform <a href="/wiki/Arithmetic_logic_unit" title="Arithmetic logic unit">ALU</a> operations with an operand from memory rather than a register</li></ul> <p>Complex instructions are more common in CISC instruction sets than in RISC instruction sets, but RISC instruction sets may include them as well. RISC instruction sets generally do not include ALU operations with memory operands, or instructions to move large blocks of memory, but most RISC instruction sets include <a href="/wiki/Single_instruction,_multiple_data" title="Single instruction, multiple data">SIMD</a> or <a href="/wiki/Vector_processing" class="mw-redirect" title="Vector processing">vector</a> instructions that perform the same arithmetic operation on multiple pieces of data at the same time. SIMD instructions have the ability of manipulating large vectors and matrices in minimal time. SIMD instructions allow easy <a href="/wiki/Parallelization" class="mw-redirect" title="Parallelization">parallelization</a> of algorithms commonly involved in sound, image, and video processing. Various SIMD implementations have been brought to market under trade names such as <a href="/wiki/MMX_(instruction_set)" title="MMX (instruction set)">MMX</a>, <a href="/wiki/3DNow!" title="3DNow!">3DNow!</a>, and <a href="/wiki/AltiVec" title="AltiVec">AltiVec</a>. </p><p><span class="anchor" id="Parts_of_an_instruction"></span> </p> <div class="mw-heading mw-heading3"><h3 id="Instruction_encoding">Instruction encoding</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=10" title="Edit section: Instruction encoding"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-default-size mw-halign-right" typeof="mw:File/Thumb"><a href="/wiki/File:Mips32_addi.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Mips32_addi.svg/370px-Mips32_addi.svg.png" decoding="async" width="370" height="133" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Mips32_addi.svg/555px-Mips32_addi.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Mips32_addi.svg/740px-Mips32_addi.svg.png 2x" data-file-width="500" data-file-height="180" /></a><figcaption>One instruction may have several fields, which identify the logical operation, and may also include source and destination addresses and constant values. This is the MIPS "Add Immediate" instruction, which allows selection of source and destination registers and inclusion of a small constant.</figcaption></figure> <p>On traditional architectures, an instruction includes an <a href="/wiki/Opcode" title="Opcode">opcode</a> that specifies the operation to perform, such as <i>add contents of memory to register</i>—and zero or more <a href="/wiki/Operand" title="Operand">operand</a> specifiers, which may specify <a href="/wiki/Processor_register" title="Processor register">registers</a>, memory locations, or literal data. The operand specifiers may have <a href="/wiki/Addressing_mode" title="Addressing mode">addressing modes</a> determining their meaning or may be in fixed fields. In <a href="/wiki/Very_long_instruction_word" title="Very long instruction word">very long instruction word</a> (VLIW) architectures, which include many <a href="/wiki/Microcode" title="Microcode">microcode</a> architectures, multiple simultaneous opcodes and operands are specified in a single instruction. </p><p>Some exotic instruction sets do not have an opcode field, such as <a href="/wiki/Transport_triggered_architecture" title="Transport triggered architecture">transport triggered architectures</a> (TTA), only operand(s). </p><p>Most <a href="/wiki/Stack_machine" title="Stack machine">stack machines</a> have "<a href="/wiki/0-operand_instruction_set" class="mw-redirect" title="0-operand instruction set">0-operand</a>" instruction sets in which arithmetic and logical operations lack any operand specifier fields; only instructions that push operands onto the evaluation stack or that pop operands from the stack into variables have operand specifiers. The instruction set carries out most ALU actions with postfix (<a href="/wiki/Reverse_Polish_notation" title="Reverse Polish notation">reverse Polish notation</a>) operations that work only on the expression <a href="/wiki/Stack_(abstract_data_type)" title="Stack (abstract data type)">stack</a>, not on data registers or arbitrary main memory cells. This can be very convenient for compiling high-level languages, because most arithmetic expressions can be easily translated into postfix notation.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> </p><p>Conditional instructions often have a predicate field—a few bits that encode the specific condition to cause an operation to be performed rather than not performed. For example, a conditional branch instruction will transfer control if the condition is true, so that execution proceeds to a different part of the program, and not transfer control if the condition is false, so that execution continues sequentially. Some instruction sets also have conditional moves, so that the move will be executed, and the data stored in the target location, if the condition is true, and not executed, and the target location not modified, if the condition is false. Similarly, IBM <a href="/wiki/Z/Architecture" title="Z/Architecture">z/Architecture</a> has a conditional store instruction. A few instruction sets include a predicate field in every instruction; this is called <a href="/wiki/Branch_predication" class="mw-redirect" title="Branch predication">branch predication</a>. </p> <div class="mw-heading mw-heading4"><h4 id="Number_of_operands">Number of operands</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=11" title="Edit section: Number of operands"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Instruction sets may be categorized by the maximum number of operands <i>explicitly</i> specified in instructions. </p><p>(In the examples that follow, <i>a</i>, <i>b</i>, and <i>c</i> are (direct or calculated) addresses referring to memory cells, while <i>reg1</i> and so on refer to machine registers.) </p> <pre>C = A+B </pre> <ul><li>0-operand (<i>zero-address machines</i>), so called <a href="/wiki/Stack_machine" title="Stack machine">stack machines</a>: All arithmetic operations take place using the top one or two positions on the stack:<sup id="cite_ref-FOOTNOTEHennessyPatterson200392_9-0" class="reference"><a href="#cite_note-FOOTNOTEHennessyPatterson200392-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> <code>push a</code>, <code>push b</code>, <code>add</code>, <code>pop c</code>. <ul><li><code>C = A+B</code> needs <i>four instructions</i>.<sup id="cite_ref-FOOTNOTEHennessyPatterson200393_10-0" class="reference"><a href="#cite_note-FOOTNOTEHennessyPatterson200393-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> For stack machines, the terms "0-operand" and "zero-address" apply to arithmetic instructions, but not to all instructions, as 1-operand push and pop instructions are used to access memory.</li></ul></li> <li>1-operand (<i>one-address machines</i>), so called <a href="/wiki/Accumulator_machine" class="mw-redirect" title="Accumulator machine">accumulator machines</a>, include early computers and many small <a href="/wiki/Microcontroller" title="Microcontroller">microcontrollers</a>: most instructions specify a single right operand (that is, constant, a register, or a memory location), with the implicit <a href="/wiki/Accumulator_(computing)" title="Accumulator (computing)">accumulator</a> as the left operand (and the destination if there is one): <code>load a</code>, <code>add b</code>, <code>store c</code>. <ul><li><code>C = A+B</code> needs <i>three instructions</i>.<sup id="cite_ref-FOOTNOTEHennessyPatterson200393_10-1" class="reference"><a href="#cite_note-FOOTNOTEHennessyPatterson200393-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></li></ul></li> <li>2-operand — many CISC and RISC machines fall under this category: <ul><li>CISC — <code>move A</code> to <i>C</i>; then <code>add B</code> to <i>C</i>. <ul><li><code>C = A+B</code> needs <i>two instructions</i>. This effectively 'stores' the result without an explicit <i>store</i> instruction.</li></ul></li> <li>CISC — Often machines are <a rel="nofollow" class="external text" href="https://web.archive.org/web/20131105155703/http://cs.smith.edu/~thiebaut/ArtOfAssembly/CH04/CH04-3.html#HEADING3-79">limited to one memory operand</a> per instruction: <code>load a,reg1</code>; <code>add b,reg1</code>; <code>store reg1,c</code>; This requires a load/store pair for any memory movement regardless of whether the <code>add</code> result is an augmentation stored to a different place, as in <code>C = A+B</code>, or the same memory location: <code>A = A+B</code>. <ul><li><code>C = A+B</code> needs <i>three instructions</i>.</li></ul></li> <li>RISC — Requiring explicit memory loads, the instructions would be: <code>load a,reg1</code>; <code>load b,reg2</code>; <code>add reg1,reg2</code>; <code>store reg2,c</code>. <ul><li><code>C = A+B</code> needs <i>four instructions</i>.</li></ul></li></ul></li> <li>3-operand, allowing better reuse of data:<sup id="cite_ref-Cocke_11-0" class="reference"><a href="#cite_note-Cocke-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> <ul><li>CISC — It becomes either a single instruction: <code>add a,b,c</code> <ul><li><code>C = A+B</code> needs <i>one instruction</i>.</li></ul></li> <li>CISC — Or, on machines limited to two memory operands per instruction, <code>move a,reg1</code>; <code>add reg1,b,c</code>; <ul><li><code>C = A+B</code> needs <i>two instructions</i>.</li></ul></li> <li>RISC — arithmetic instructions use registers only, so explicit 2-operand load/store instructions are needed: <code>load a,reg1</code>; <code>load b,reg2</code>; <code>add reg1+reg2->reg3</code>; <code>store reg3,c</code>; <ul><li><code>C = A+B</code> needs <i>four instructions</i>.</li> <li>Unlike 2-operand or 1-operand, this leaves all three values a, b, and c in registers available for further reuse.<sup id="cite_ref-Cocke_11-1" class="reference"><a href="#cite_note-Cocke-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup></li></ul></li></ul></li> <li>more operands—some CISC machines permit a variety of addressing modes that allow more than 3 operands (registers or memory accesses), such as the <a href="/wiki/VAX" title="VAX">VAX</a> "POLY" polynomial evaluation instruction.</li></ul> <p>Due to the large number of bits needed to encode the three registers of a 3-operand instruction, RISC architectures that have 16-bit instructions are invariably 2-operand designs, such as the Atmel AVR, <a href="/wiki/TI_MSP430" title="TI MSP430">TI MSP430</a>, and some versions of <a href="/wiki/ARM_Thumb" class="mw-redirect" title="ARM Thumb">ARM Thumb</a>. RISC architectures that have 32-bit instructions are usually 3-operand designs, such as the <a href="/wiki/ARM_architecture_family" title="ARM architecture family">ARM</a>, <a href="/wiki/AVR32" title="AVR32">AVR32</a>, <a href="/wiki/MIPS_architecture" title="MIPS architecture">MIPS</a>, <a href="/wiki/Power_ISA" title="Power ISA">Power ISA</a>, and <a href="/wiki/SPARC" title="SPARC">SPARC</a> architectures. </p><p>Each instruction specifies some number of operands (registers, memory locations, or immediate values) <i>explicitly</i>. Some instructions give one or both operands implicitly, such as by being stored on top of the <a href="/wiki/Stack_(data_structure)" class="mw-redirect" title="Stack (data structure)">stack</a> or in an implicit register. If some of the operands are given implicitly, fewer operands need be specified in the instruction. When a "destination operand" explicitly specifies the destination, an additional operand must be supplied. Consequently, the number of operands encoded in an instruction may differ from the mathematically necessary number of arguments for a logical or arithmetic operation (the <a href="/wiki/Arity" title="Arity">arity</a>). Operands are either encoded in the "opcode" representation of the instruction, or else are given as values or addresses following the opcode. </p> <div class="mw-heading mw-heading3"><h3 id="Register_pressure"><span class="anchor" id="REGISTER-PRESSURE"></span>Register pressure</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=12" title="Edit section: Register pressure"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><i>Register pressure</i> measures the availability of free registers at any point in time during the program execution. Register pressure is high when a large number of the available registers are in use; thus, the higher the register pressure, the more often the register contents must be <a href="/wiki/Register_spilling" class="mw-redirect" title="Register spilling">spilled</a> into memory. Increasing the number of registers in an architecture decreases register pressure but increases the cost.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> </p><p>While embedded instruction sets such as <a href="/wiki/ARM_Thumb" class="mw-redirect" title="ARM Thumb">Thumb</a> suffer from extremely high register pressure because they have small register sets, general-purpose RISC ISAs like <a href="/wiki/MIPS_architecture" title="MIPS architecture">MIPS</a> and <a href="/wiki/DEC_Alpha" title="DEC Alpha">Alpha</a> enjoy low register pressure. CISC ISAs like x86-64 offer low register pressure despite having smaller register sets. This is due to the many addressing modes and optimizations (such as sub-register addressing, memory operands in ALU instructions, absolute addressing, PC-relative addressing, and register-to-register spills) that CISC ISAs offer.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Instruction_length"><span class="anchor" id="Fixed_length"></span><span class="anchor" id="Fixed_width"></span><span class="anchor" id="Variable_length"></span><span class="anchor" id="Variable_width"></span>Instruction length</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=13" title="Edit section: Instruction length"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The size or length of an instruction varies widely, from as little as four bits in some <a href="/wiki/Microcontroller" title="Microcontroller">microcontrollers</a> to many hundreds of bits in some <a href="/wiki/Very_long_instruction_word" title="Very long instruction word">VLIW</a> systems. Processors used in <a href="/wiki/Personal_computer" title="Personal computer">personal computers</a>, <a href="/wiki/Mainframe_computer" title="Mainframe computer">mainframes</a>, and <a href="/wiki/Supercomputer" title="Supercomputer">supercomputers</a> have minimum instruction sizes between 8 and 64 bits. The longest possible instruction on x86 is 15 bytes (120 bits).<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> Within an instruction set, different instructions may have different lengths. In some architectures, notably most <a href="/wiki/Reduced_instruction_set_computer" title="Reduced instruction set computer">reduced instruction set computers</a> (RISC), <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238216509"><span class="vanchor"><span id="instructions_are_a_fixed_length"></span><span id="FIXED_LENGTH_INSTRUCTIONS"></span><span class="vanchor-text">instructions are a fixed length</span></span>, typically corresponding with that architecture's <a href="/wiki/Word_(data_type)" class="mw-redirect" title="Word (data type)">word size</a>. In other architectures, instructions have <a href="/wiki/Variable-length_code" title="Variable-length code">variable length</a>, typically integral multiples of a <a href="/wiki/Byte" title="Byte">byte</a> or a <a href="/wiki/Halfword" class="mw-redirect" title="Halfword">halfword</a>. Some, such as the <a href="/wiki/ARMv7" class="mw-redirect" title="ARMv7">ARM</a> with <i>Thumb-extension</i> have <i>mixed</i> variable encoding, that is two fixed, usually 32-bit and 16-bit encodings, where instructions cannot be mixed freely but must be switched between on a branch (or exception boundary in ARMv8). </p><p>Fixed-length instructions are less complicated to handle than variable-length instructions for several reasons (not having to check whether an instruction straddles a cache line or virtual memory page boundary,<sup id="cite_ref-Cocke_11-2" class="reference"><a href="#cite_note-Cocke-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> for instance), and are therefore somewhat easier to optimize for speed. </p> <div class="mw-heading mw-heading3"><h3 id="Code_density">Code density</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=14" title="Edit section: Code density"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In early 1960s computers, main memory was expensive and very limited, even on mainframes. Minimizing the size of a program to make sure it would fit in the limited memory was often central. Thus the size of the instructions needed to perform a particular task, the <i>code density</i>, was an important characteristic of any instruction set. It remained important on the initially-tiny memories of minicomputers and then microprocessors. Density remains important today, for smartphone applications, applications downloaded into browsers over slow Internet connections, and in ROMs for embedded applications. A more general advantage of increased density is improved effectiveness of caches and instruction prefetch. </p><p>Computers with high code density often have complex instructions for procedure entry, parameterized returns, loops, etc. (therefore retroactively named <i>Complex Instruction Set Computers</i>, <a href="/wiki/Complex_instruction_set_computer" title="Complex instruction set computer">CISC</a>). However, more typical, or frequent, "CISC" instructions merely combine a basic ALU operation, such as "add", with the access of one or more operands in memory (using <a href="/wiki/Addressing_mode" title="Addressing mode">addressing modes</a> such as direct, indirect, indexed, etc.). Certain architectures may allow two or three operands (including the result) directly in memory or may be able to perform functions such as automatic pointer increment, etc. Software-implemented instruction sets may have even more complex and powerful instructions. </p><p><i>Reduced instruction-set computers</i>, <a href="/wiki/Reduced_instruction_set_computer" title="Reduced instruction set computer">RISC</a>, were first widely implemented during a period of rapidly growing memory subsystems. They sacrifice code density to simplify implementation circuitry, and try to increase performance via higher clock frequencies and more registers. A single RISC instruction typically performs only a single operation, such as an "add" of registers or a "load" from a memory location into a register. A RISC instruction set normally has a fixed <a href="#Instruction_length">instruction length</a>, whereas a typical CISC instruction set has instructions of widely varying length. However, as RISC computers normally require more and often longer instructions to implement a given task, they inherently make less optimal use of bus bandwidth and cache memories. </p><p>Certain embedded RISC ISAs like <a href="/wiki/ARM_architecture#Thumb" class="mw-redirect" title="ARM architecture">Thumb</a> and <a href="/wiki/AVR32" title="AVR32">AVR32</a> typically exhibit very high density owing to a technique called code compression. This technique packs two 16-bit instructions into one 32-bit word, which is then unpacked at the decode stage and executed as two instructions.<sup id="cite_ref-weaver_15-0" class="reference"><a href="#cite_note-weaver-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> </p><p><a href="/wiki/Minimal_instruction_set_computer" title="Minimal instruction set computer">Minimal instruction set computers</a> (MISC) are commonly a form of <a href="/wiki/Stack_machine" title="Stack machine">stack machine</a>, where there are few separate instructions (8–32), so that multiple instructions can be fit into a single machine word. These types of cores often take little silicon to implement, so they can be easily realized in an <a href="/wiki/Field-programmable_gate_array" title="Field-programmable gate array">FPGA</a> or in a <a href="/wiki/Multi-core" class="mw-redirect" title="Multi-core">multi-core</a> form. The code density of MISC is similar to the code density of RISC; the increased instruction density is offset by requiring more of the primitive instructions to do a task.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup><sup class="noprint Inline-Template" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability"><span title="That discusses RISC and CISC, but not MISC. (December 2021)">failed verification</span></a></i>]</sup> </p><p>There has been research into <a href="/wiki/Executable_compression" title="Executable compression">executable compression</a> as a mechanism for improving code density. The mathematics of <a href="/wiki/Kolmogorov_complexity" title="Kolmogorov complexity">Kolmogorov complexity</a> describes the challenges and limits of this. </p><p>In practice, code density is also dependent on the <a href="/wiki/Compiler" title="Compiler">compiler</a>. Most <a href="/wiki/Optimizing_compiler" title="Optimizing compiler">optimizing compilers</a> have options that control whether to optimize code generation for execution speed or for code density. For instance <a href="/wiki/GNU_Compiler_Collection" title="GNU Compiler Collection">GCC</a> has the option <code>-Os</code> to optimize for small machine code size, and <code>-O3</code> to optimize for execution speed at the cost of larger machine code. </p> <div class="mw-heading mw-heading3"><h3 id="Representation">Representation</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=15" title="Edit section: Representation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The instructions constituting a program are rarely specified using their internal, numeric form (<a href="/wiki/Machine_code" title="Machine code">machine code</a>); they may be specified by programmers using an <a href="/wiki/Assembly_language" title="Assembly language">assembly language</a> or, more commonly, may be generated from <a href="/wiki/High-level_programming_language" title="High-level programming language">high-level programming languages</a> by <a href="/wiki/Compiler" title="Compiler">compilers</a>.<sup id="cite_ref-FOOTNOTEHennessyPatterson2003120_17-0" class="reference"><a href="#cite_note-FOOTNOTEHennessyPatterson2003120-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Design">Design</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=16" title="Edit section: Design"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The design of instruction sets is a complex issue. There were two stages in history for the microprocessor. The first was the CISC (Complex Instruction Set Computer), which had many different instructions. In the 1970s, however, places like IBM did research and found that many instructions in the set could be eliminated. The result was the RISC (Reduced Instruction Set Computer), an architecture that uses a smaller set of instructions. A simpler instruction set may offer the potential for higher speeds, reduced processor size, and reduced power consumption. However, a more complex set may optimize common operations, improve memory and <a href="/wiki/CPU_cache" title="CPU cache">cache</a> efficiency, or simplify programming. </p><p>Some instruction set designers reserve one or more opcodes for some kind of <a href="/wiki/System_call" title="System call">system call</a> or <a href="/wiki/Software_interrupt" class="mw-redirect" title="Software interrupt">software interrupt</a>. For example, <a href="/wiki/MOS_Technology_6502" title="MOS Technology 6502">MOS Technology 6502</a> uses 00<sub>H</sub>, <a href="/wiki/Zilog_Z80" title="Zilog Z80">Zilog Z80</a> uses the eight codes C7,CF,D7,DF,E7,EF,F7,FF<sub>H</sub><sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup> while <a href="/wiki/Motorola_68000" title="Motorola 68000">Motorola 68000</a> use codes in the range A000..AFFF<sub>H</sub>. </p><p>Fast virtual machines are much easier to implement if an instruction set meets the <a href="/wiki/Popek_and_Goldberg_virtualization_requirements" title="Popek and Goldberg virtualization requirements">Popek and Goldberg virtualization requirements</a>.<sup class="noprint Inline-Template" style="margin-left:0.1em; white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Please_clarify" title="Wikipedia:Please clarify"><span title="The text near this tag may need clarification or removal of jargon. (October 2012)">clarification needed</span></a></i>]</sup> </p><p>The <a href="/wiki/NOP_slide" title="NOP slide">NOP slide</a> used in immunity-aware programming is much easier to implement if the "unprogrammed" state of the memory is interpreted as a <a href="/wiki/NOP_(code)" title="NOP (code)">NOP</a>.<sup class="noprint Inline-Template" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Accuracy_dispute#Disputed_statement" title="Wikipedia:Accuracy dispute"><span title="The material near this tag is possibly inaccurate or nonfactual. (October 2012)">dubious</span></a> – <a href="/wiki/Talk:Instruction_set_architecture#Dubious" title="Talk:Instruction set architecture">discuss</a></i>]</sup> </p><p>On systems with multiple processors, <a href="/wiki/Non-blocking_synchronization" class="mw-redirect" title="Non-blocking synchronization">non-blocking synchronization</a> algorithms are much easier to implement<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="Opinion unsupported by a textbook (October 2012)">citation needed</span></a></i>]</sup> if the instruction set includes support for something such as "<a href="/wiki/Fetch-and-add" title="Fetch-and-add">fetch-and-add</a>", "<a href="/wiki/Load-link/store-conditional" title="Load-link/store-conditional">load-link/store-conditional</a>" (LL/SC), or "atomic <a href="/wiki/Compare-and-swap" title="Compare-and-swap">compare-and-swap</a>". </p> <div class="mw-heading mw-heading2"><h2 id="Instruction_set_implementation">Instruction set implementation</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=17" title="Edit section: Instruction set implementation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main articles: <a href="/wiki/Processor_design" title="Processor design">Processor design</a>, <a href="/wiki/Semiconductor_device_fabrication" title="Semiconductor device fabrication">Semiconductor device fabrication</a>, and <a href="/wiki/Silicon_compiler" title="Silicon compiler">Silicon compiler</a></div> <p>A given instruction set can be implemented in a variety of ways. All ways of implementing a particular instruction set provide the same <a href="/wiki/Programming_model" title="Programming model">programming model</a>, and all implementations of that instruction set are able to run the same executables. The various ways of implementing an instruction set give different tradeoffs between cost, performance, power consumption, size, etc. </p><p>When designing the <a href="/wiki/Microarchitecture" title="Microarchitecture">microarchitecture</a> of a processor, engineers use blocks of "hard-wired" electronic circuitry (often designed separately) such as adders, multiplexers, counters, registers, ALUs, etc. Some kind of <a href="/wiki/Register_transfer_language" title="Register transfer language">register transfer language</a> is then often used to describe the decoding and sequencing of each instruction of an ISA using this physical microarchitecture. There are two basic ways to build a <a href="/wiki/Control_unit" title="Control unit">control unit</a> to implement this description (although many designs use middle ways or compromises): </p> <ol><li>Some computer designs "hardwire" the complete instruction set decoding and sequencing (just like the rest of the microarchitecture).</li> <li>Other designs employ <a href="/wiki/Microcode" title="Microcode">microcode</a> routines or tables (or both) to do this, using <a href="/wiki/Read-only_memory" title="Read-only memory">ROMs</a> or writable <a href="/wiki/Random-access_memory" title="Random-access memory">RAMs</a> (<a href="/wiki/Writable_control_store" class="mw-redirect" title="Writable control store">writable control store</a>), <a href="/wiki/Programmable_logic_array" title="Programmable logic array">PLAs</a>, or both.</li></ol> <p>Some microcoded CPU designs with a writable control store use it to allow the instruction set to be changed (for example, the <a href="/wiki/Rekursiv" title="Rekursiv">Rekursiv</a> processor and the <a href="/w/index.php?title=Imsys&action=edit&redlink=1" class="new" title="Imsys (page does not exist)">Imsys</a> <a href="/w/index.php?title=Cjip&action=edit&redlink=1" class="new" title="Cjip (page does not exist)">Cjip</a>).<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> </p><p>CPUs designed for <a href="/wiki/Reconfigurable_computing" title="Reconfigurable computing">reconfigurable computing</a> may use <a href="/wiki/Field-programmable_gate_array" title="Field-programmable gate array">field-programmable gate arrays</a> (FPGAs). </p><p>An ISA can also be <a href="/wiki/Emulator" title="Emulator">emulated</a> in software by an <a href="/wiki/Interpreter_(computing)" title="Interpreter (computing)">interpreter</a>. Naturally, due to the interpretation overhead, this is slower than directly running programs on the emulated hardware, unless the hardware running the emulator is an order of magnitude faster. Today, it is common practice for vendors of new ISAs or microarchitectures to make software emulators available to software developers before the hardware implementation is ready. </p><p>Often the details of the implementation have a strong influence on the particular instructions selected for the instruction set. For example, many implementations of the <a href="/wiki/Instruction_pipeline" class="mw-redirect" title="Instruction pipeline">instruction pipeline</a> only allow a single memory load or memory store per instruction, leading to a <a href="/wiki/Load%E2%80%93store_architecture" title="Load–store architecture">load–store architecture</a> (RISC). For another example, some early ways of implementing the <a href="/wiki/Instruction_pipeline" class="mw-redirect" title="Instruction pipeline">instruction pipeline</a> led to a <a href="/wiki/Delay_slot" title="Delay slot">delay slot</a>. </p><p>The demands of high-speed digital signal processing have pushed in the opposite direction—forcing instructions to be implemented in a particular way. For example, to perform digital filters fast enough, the MAC instruction in a typical <a href="/wiki/Digital_signal_processor" title="Digital signal processor">digital signal processor</a> (DSP) must use a kind of <a href="/wiki/Harvard_architecture" title="Harvard architecture">Harvard architecture</a> that can fetch an instruction and two data words simultaneously, and it requires a single-cycle <a href="/wiki/Multiply%E2%80%93accumulate_operation" title="Multiply–accumulate operation">multiply–accumulate</a> <a href="/wiki/Binary_multiplier" title="Binary multiplier">multiplier</a>. </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=Instruction_set_architecture&action=edit&section=18" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Comparison_of_instruction_set_architectures" title="Comparison of instruction set architectures">Comparison of instruction set architectures</a></li> <li><a href="/wiki/Compressed_instruction_set" title="Compressed instruction set">Compressed instruction set</a></li> <li><a href="/wiki/Computer_architecture" title="Computer architecture">Computer architecture</a></li> <li><a href="/wiki/Emulator" title="Emulator">Emulator</a></li> <li><a href="/wiki/Instruction_set_simulator" title="Instruction set simulator">Instruction set simulator</a></li> <li><a href="/wiki/Micro-operation" title="Micro-operation">Micro-operation</a></li> <li><a href="/wiki/No_instruction_set_computing" title="No instruction set computing">No instruction set computing</a></li> <li><a href="/wiki/OVPsim" title="OVPsim">OVPsim</a> full systems simulator providing ability to create/model/emulate any instruction set using C and standard APIs</li> <li><a href="/wiki/Processor_design" title="Processor design">Processor design</a></li> <li><a href="/wiki/Simulation" title="Simulation">Simulation</a></li> <li><a href="/wiki/Register_transfer_language" title="Register transfer language">Register transfer language</a> (RTL)</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=Instruction_set_architecture&action=edit&section=19" 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-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></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 class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20231111175250/https://www.arm.com/glossary/isa">"GLOSSARY: Instruction Set Architecture (ISA)"</a>. <i>arm.com</i>. Archived from <a rel="nofollow" class="external text" href="https://www.arm.com/glossary/isa">the original</a> on 2023-11-11<span class="reference-accessdate">. Retrieved <span class="nowrap">2024-02-03</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=arm.com&rft.atitle=GLOSSARY%3A+Instruction+Set+Architecture+%28ISA%29&rft_id=https%3A%2F%2Fwww.arm.com%2Fglossary%2Fisa&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" class="Z3988"></span></span> </li> <li id="cite_note-Pugh-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-Pugh_2-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPughJohnsonPalmer1991" class="citation book cs1">Pugh, Emerson W.; Johnson, Lyle R.; Palmer, John H. (1991). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/ibms360early370s0000pugh"><i>IBM's 360 and Early 370 Systems</i></a></span>. MIT Press. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-262-16123-0" title="Special:BookSources/0-262-16123-0"><bdi>0-262-16123-0</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=IBM%27s+360+and+Early+370+Systems&rft.pub=MIT+Press&rft.date=1991&rft.isbn=0-262-16123-0&rft.aulast=Pugh&rft.aufirst=Emerson+W.&rft.au=Johnson%2C+Lyle+R.&rft.au=Palmer%2C+John+H.&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fibms360early370s0000pugh&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" class="Z3988"></span></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFCrystal_ChenGreg_NovickKirk_Shimano2006" class="citation web cs1">Crystal Chen; Greg Novick; Kirk Shimano (December 16, 2006). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150221071744/http://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/risccisc/">"RISC Architecture: RISC vs. CISC"</a>. <i>cs.stanford.edu</i>. Archived from <a rel="nofollow" class="external text" href="http://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/risccisc/">the original</a> on February 21, 2015<span class="reference-accessdate">. Retrieved <span class="nowrap">February 21,</span> 2015</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=cs.stanford.edu&rft.atitle=RISC+Architecture%3A+RISC+vs.+CISC&rft.date=2006-12-16&rft.au=Crystal+Chen&rft.au=Greg+Novick&rft.au=Kirk+Shimano&rft_id=http%3A%2F%2Fcs.stanford.edu%2Fpeople%2Feroberts%2Fcourses%2Fsoco%2Fprojects%2Frisc%2Frisccisc%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" 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="CITEREFSchlanskerRau2000" class="citation journal cs1">Schlansker, Michael S.; Rau, B. Ramakrishna (February 2000). "EPIC: Explicitly Parallel Instruction Computing". <i><a href="/wiki/Computer_(magazine)" title="Computer (magazine)">Computer</a></i>. <b>33</b> (2): 37–45. <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%2F2.820037">10.1109/2.820037</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Computer&rft.atitle=EPIC%3A+Explicitly+Parallel+Instruction+Computing&rft.volume=33&rft.issue=2&rft.pages=37-45&rft.date=2000-02&rft_id=info%3Adoi%2F10.1109%2F2.820037&rft.aulast=Schlansker&rft.aufirst=Michael+S.&rft.au=Rau%2C+B.+Ramakrishna&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" 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="CITEREFShaoutEldos2003" class="citation journal cs1">Shaout, Adnan; Eldos, Taisir (Summer 2003). <a rel="nofollow" class="external text" href="https://www.researchgate.net/publication/267239549">"On the Classification of Computer Architecture"</a>. <i>International Journal of Science and Technology</i>. <b>14</b>: 3<span class="reference-accessdate">. Retrieved <span class="nowrap">March 2,</span> 2023</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=International+Journal+of+Science+and+Technology&rft.atitle=On+the+Classification+of+Computer+Architecture&rft.ssn=summer&rft.volume=14&rft.pages=3&rft.date=2003&rft.aulast=Shaout&rft.aufirst=Adnan&rft.au=Eldos%2C+Taisir&rft_id=https%3A%2F%2Fwww.researchgate.net%2Fpublication%2F267239549&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" class="Z3988"></span></span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFGilreathLaplante2012" class="citation book cs1">Gilreath, William F.; Laplante, Phillip A. (December 6, 2012). <i>Computer Architecture: A Minimalist Perspective</i>. <a href="/wiki/Springer_Science%2BBusiness_Media" title="Springer Science+Business Media">Springer Science+Business Media</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-4615-0237-1" title="Special:BookSources/978-1-4615-0237-1"><bdi>978-1-4615-0237-1</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Computer+Architecture%3A+A+Minimalist+Perspective&rft.pub=Springer+Science%2BBusiness+Media&rft.date=2012-12-06&rft.isbn=978-1-4615-0237-1&rft.aulast=Gilreath&rft.aufirst=William+F.&rft.au=Laplante%2C+Phillip+A.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" class="Z3988"></span></span> </li> <li id="cite_note-FOOTNOTEHennessyPatterson2003108-7"><span class="mw-cite-backlink">^ <a href="#cite_ref-FOOTNOTEHennessyPatterson2003108_7-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHennessyPatterson2003108_7-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFHennessyPatterson2003">Hennessy & Patterson 2003</a>, p. 108.</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="CITEREFDurand" class="citation web cs1">Durand, Paul. <a rel="nofollow" class="external text" href="http://www.cs.kent.edu/~durand/CS0/Notes/Chapter05/isa.html">"Instruction Set Architecture (ISA)"</a>. <i>Introduction to Computer Science CS 0</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Introduction+to+Computer+Science+CS+0&rft.atitle=Instruction+Set+Architecture+%28ISA%29&rft.aulast=Durand&rft.aufirst=Paul&rft_id=http%3A%2F%2Fwww.cs.kent.edu%2F~durand%2FCS0%2FNotes%2FChapter05%2Fisa.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" class="Z3988"></span></span> </li> <li id="cite_note-FOOTNOTEHennessyPatterson200392-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEHennessyPatterson200392_9-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFHennessyPatterson2003">Hennessy & Patterson 2003</a>, p. 92.</span> </li> <li id="cite_note-FOOTNOTEHennessyPatterson200393-10"><span class="mw-cite-backlink">^ <a href="#cite_ref-FOOTNOTEHennessyPatterson200393_10-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHennessyPatterson200393_10-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFHennessyPatterson2003">Hennessy & Patterson 2003</a>, p. 93.</span> </li> <li id="cite_note-Cocke-11"><span class="mw-cite-backlink">^ <a href="#cite_ref-Cocke_11-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Cocke_11-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Cocke_11-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="CITEREFCockeMarkstein1990" class="citation journal cs1">Cocke, John; Markstein, Victoria (January 1990). <a rel="nofollow" class="external text" href="https://www.cis.upenn.edu/~milom/cis501-Fall11/papers/cocke-RISC.pdf">"The evolution of RISC technology at IBM"</a> <span class="cs1-format">(PDF)</span>. <i>IBM Journal of Research and Development</i>. <b>34</b> (1): 4–11. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1147%2Frd.341.0004">10.1147/rd.341.0004</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2022-10-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IBM+Journal+of+Research+and+Development&rft.atitle=The+evolution+of+RISC+technology+at+IBM&rft.volume=34&rft.issue=1&rft.pages=4-11&rft.date=1990-01&rft_id=info%3Adoi%2F10.1147%2Frd.341.0004&rft.aulast=Cocke&rft.aufirst=John&rft.au=Markstein%2C+Victoria&rft_id=https%3A%2F%2Fwww.cis.upenn.edu%2F~milom%2Fcis501-Fall11%2Fpapers%2Fcocke-RISC.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" 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="CITEREFPage2009" class="citation book cs1">Page, Daniel (2009). "11. Compilers". <i>A Practical Introduction to Computer Architecture</i>. Springer. p. 464. <a href="/wiki/Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2009pica.book.....P">2009pica.book.....P</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-84882-255-9" title="Special:BookSources/978-1-84882-255-9"><bdi>978-1-84882-255-9</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=11.+Compilers&rft.btitle=A+Practical+Introduction+to+Computer+Architecture&rft.pages=464&rft.pub=Springer&rft.date=2009&rft_id=info%3Abibcode%2F2009pica.book.....P&rft.isbn=978-1-84882-255-9&rft.aulast=Page&rft.aufirst=Daniel&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" 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="CITEREFVenkatTullsen2014" class="citation conference cs1">Venkat, Ashish; Tullsen, Dean M. (2014). <a rel="nofollow" class="external text" href="http://dl.acm.org/citation.cfm?id=2665692"><i>Harnessing ISA Diversity: Design of a Heterogeneous-ISA Chip Multiprocessor</i></a>. 41st Annual International Symposium on Computer Architecture.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=conference&rft.btitle=Harnessing+ISA+Diversity%3A+Design+of+a+Heterogeneous-ISA+Chip+Multiprocessor&rft.date=2014&rft.aulast=Venkat&rft.aufirst=Ashish&rft.au=Tullsen%2C+Dean+M.&rft_id=http%3A%2F%2Fdl.acm.org%2Fcitation.cfm%3Fid%3D2665692&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" 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 class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html">"Intel® 64 and IA-32 Architectures Software Developer's Manual"</a>. Intel Corporation<span class="reference-accessdate">. Retrieved <span class="nowrap">5 October</span> 2022</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Intel%C2%AE+64+and+IA-32+Architectures+Software+Developer%27s+Manual&rft.pub=Intel+Corporation&rft_id=https%3A%2F%2Fwww.intel.com%2Fcontent%2Fwww%2Fus%2Fen%2Fdeveloper%2Farticles%2Ftechnical%2Fintel-sdm.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" class="Z3988"></span></span> </li> <li id="cite_note-weaver-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-weaver_15-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFWeaverMcKee2009" class="citation conference cs1">Weaver, Vincent M.; McKee, Sally A. (2009). <i>Code density concerns for new architectures</i>. IEEE International Conference on Computer Design. <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <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.398.1967">10.1.1.398.1967</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%2FICCD.2009.5413117">10.1109/ICCD.2009.5413117</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=conference&rft.btitle=Code+density+concerns+for+new+architectures&rft.date=2009&rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.398.1967%23id-name%3DCiteSeerX&rft_id=info%3Adoi%2F10.1109%2FICCD.2009.5413117&rft.aulast=Weaver&rft.aufirst=Vincent+M.&rft.au=McKee%2C+Sally+A.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" 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 class="citation web cs1"><a rel="nofollow" class="external text" href="https://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/risccisc/">"RISC vs. CISC"</a>. <i>cs.stanford.edu</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2021-12-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=cs.stanford.edu&rft.atitle=RISC+vs.+CISC&rft_id=https%3A%2F%2Fcs.stanford.edu%2Fpeople%2Feroberts%2Fcourses%2Fsoco%2Fprojects%2Frisc%2Frisccisc%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" class="Z3988"></span></span> </li> <li id="cite_note-FOOTNOTEHennessyPatterson2003120-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEHennessyPatterson2003120_17-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFHennessyPatterson2003">Hennessy & Patterson 2003</a>, p. 120.</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 id="CITEREFGanssle2001" class="citation web cs1">Ganssle, Jack (February 26, 2001). <a rel="nofollow" class="external text" href="https://www.embedded.com/electronics-blogs/break-points/4023293/Proactive-Debugging">"Proactive Debugging"</a>. <i>embedded.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=embedded.com&rft.atitle=Proactive+Debugging&rft.date=2001-02-26&rft.aulast=Ganssle&rft.aufirst=Jack&rft_id=https%3A%2F%2Fwww.embedded.com%2Felectronics-blogs%2Fbreak-points%2F4023293%2FProactive-Debugging&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" 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 class="citation web cs1"><a rel="nofollow" class="external text" href="http://cpushack.net/CPU/cpu7.html">"Great Microprocessors of the Past and Present (V 13.4.0)"</a>. <i>cpushack.net</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2014-07-25</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=cpushack.net&rft.atitle=Great+Microprocessors+of+the+Past+and+Present+%28V+13.4.0%29&rft_id=http%3A%2F%2Fcpushack.net%2FCPU%2Fcpu7.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" class="Z3988"></span></span> </li> </ol></div> <div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=20" title="Edit section: Further reading"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBowen1985" class="citation journal cs1"><a href="/wiki/Jonathan_Bowen" title="Jonathan Bowen">Bowen, Jonathan P.</a> (July–August 1985). "Standard Microprocessor Programming Cards". <i>Microprocessors and Microsystems</i>. <b>9</b> (6): 274–290. <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%2F0141-9331%2885%2990116-4">10.1016/0141-9331(85)90116-4</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Microprocessors+and+Microsystems&rft.atitle=Standard+Microprocessor+Programming+Cards&rft.volume=9&rft.issue=6&rft.pages=274-290&rft.date=1985-07%2F1985-08&rft_id=info%3Adoi%2F10.1016%2F0141-9331%2885%2990116-4&rft.aulast=Bowen&rft.aufirst=Jonathan+P.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFHennessyPatterson2003" class="citation book cs1"><a href="/wiki/John_L._Hennessy" title="John L. Hennessy">Hennessy, John L.</a>; <a href="/wiki/David_Patterson_(computer_scientist)" title="David Patterson (computer scientist)">Patterson, David A.</a> (2003). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=XX69oNsazH4C"><i>Computer Architecture: A Quantitative Approach</i></a> (Third ed.). <a href="/wiki/Morgan_Kaufmann_Publishers" title="Morgan Kaufmann Publishers">Morgan Kaufmann Publishers</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/1-55860-724-2" title="Special:BookSources/1-55860-724-2"><bdi>1-55860-724-2</bdi></a><span class="reference-accessdate">. Retrieved <span class="nowrap">2023-03-04</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Computer+Architecture%3A+A+Quantitative+Approach&rft.edition=Third&rft.pub=Morgan+Kaufmann+Publishers&rft.date=2003&rft.isbn=1-55860-724-2&rft.aulast=Hennessy&rft.aufirst=John+L.&rft.au=Patterson%2C+David+A.&rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DXX69oNsazH4C&rfr_id=info%3Asid%2Fen.wikipedia.org%3AInstruction+set+architecture" class="Z3988"></span></li></ul> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Instruction_set_architecture&action=edit&section=21" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1235681985">.mw-parser-output .side-box{margin:4px 0;box-sizing:border-box;border:1px solid #aaa;font-size:88%;line-height:1.25em;background-color:var(--background-color-interactive-subtle,#f8f9fa);display:flow-root}.mw-parser-output .side-box-abovebelow,.mw-parser-output .side-box-text{padding:0.25em 0.9em}.mw-parser-output .side-box-image{padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .side-box-imageright{padding:2px 0.9em 2px 0;text-align:center}@media(min-width:500px){.mw-parser-output .side-box-flex{display:flex;align-items:center}.mw-parser-output .side-box-text{flex:1;min-width:0}}@media(min-width:720px){.mw-parser-output .side-box{width:238px}.mw-parser-output .side-box-right{clear:right;float:right;margin-left:1em}.mw-parser-output .side-box-left{margin-right:1em}}</style><style data-mw-deduplicate="TemplateStyles:r1237033735">@media print{body.ns-0 .mw-parser-output .sistersitebox{display:none!important}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}</style><div class="side-box side-box-right plainlinks sistersitebox"><style data-mw-deduplicate="TemplateStyles:r1126788409">.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}</style> <div class="side-box-flex"> <div class="side-box-image"><span class="noviewer" typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/60px-Wikibooks-logo-en-noslogan.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/80px-Wikibooks-logo-en-noslogan.svg.png 2x" data-file-width="400" data-file-height="400" /></span></span></div> <div class="side-box-text plainlist">The Wikibook <i><a href="https://en.wikibooks.org/wiki/Microprocessor_Design" class="extiw" title="wikibooks:Microprocessor Design">Microprocessor Design</a></i> has a page on the topic of: <i><b><a href="https://en.wikibooks.org/wiki/Microprocessor_Design/Instruction_Set_Architectures" class="extiw" title="wikibooks:Microprocessor Design/Instruction Set Architectures">Instruction Set Architectures</a></b></i></div></div> </div> <ul><li><span class="noviewer" typeof="mw:File"><a href="/wiki/File:Commons-logo.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/12px-Commons-logo.svg.png" decoding="async" width="12" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/18px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/24px-Commons-logo.svg.png 2x" data-file-width="1024" data-file-height="1376" /></a></span> Media related to <a href="https://commons.wikimedia.org/wiki/Category:Instruction_set_architectures" class="extiw" title="commons:Category:Instruction set architectures">Instruction set architectures</a> at Wikimedia Commons</li> <li><a rel="nofollow" class="external text" href="http://www.textfiles.com/programming/CARDS/">Programming Textfiles: Bowen's Instruction Summary Cards</a></li> <li><a rel="nofollow" class="external text" href="http://www.cs.clemson.edu/~mark/hist.html">Mark Smotherman's Historical Computer Designs Page</a></li></ul> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1236075235">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}</style></div><div role="navigation" class="navbox" aria-labelledby="Processor_technologies" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239400231"><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Processor_technologies" title="Template:Processor technologies"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Processor_technologies" title="Template talk:Processor technologies"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Processor_technologies" title="Special:EditPage/Template:Processor technologies"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Processor_technologies" style="font-size:114%;margin:0 4em"><a href="/wiki/Processor_(computing)" title="Processor (computing)">Processor technologies</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Model_of_computation" title="Model of computation">Models</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Abstract_machine" title="Abstract machine">Abstract machine</a></li> <li><a href="/wiki/Stored-program_computer" title="Stored-program computer">Stored-program computer</a></li> <li><a href="/wiki/Finite-state_machine" title="Finite-state machine">Finite-state machine</a> <ul><li><a href="/wiki/Finite-state_machine_with_datapath" class="mw-redirect" title="Finite-state machine with datapath">with datapath</a></li> <li><a href="/wiki/Hierarchical_state_machine" class="mw-redirect" title="Hierarchical state machine">Hierarchical</a></li> <li><a href="/wiki/Deterministic_finite_automaton" title="Deterministic finite automaton">Deterministic finite automaton</a></li> <li><a href="/wiki/Queue_automaton" title="Queue automaton">Queue automaton</a></li> <li><a href="/wiki/Cellular_automaton" title="Cellular automaton">Cellular automaton</a></li> <li><a href="/wiki/Quantum_cellular_automaton" title="Quantum cellular automaton">Quantum cellular automaton</a></li></ul></li> <li><a href="/wiki/Turing_machine" title="Turing machine">Turing machine</a> <ul><li><a href="/wiki/Alternating_Turing_machine" title="Alternating Turing machine">Alternating Turing machine</a></li> <li><a href="/wiki/Universal_Turing_machine" title="Universal Turing machine">Universal</a></li> <li><a href="/wiki/Post%E2%80%93Turing_machine" title="Post–Turing machine">Post–Turing</a></li> <li><a href="/wiki/Quantum_Turing_machine" title="Quantum Turing machine">Quantum</a></li> <li><a href="/wiki/Nondeterministic_Turing_machine" title="Nondeterministic Turing machine">Nondeterministic Turing machine</a></li> <li><a href="/wiki/Probabilistic_Turing_machine" title="Probabilistic Turing machine">Probabilistic Turing machine</a></li> <li><a href="/wiki/Hypercomputation" title="Hypercomputation">Hypercomputation</a></li> <li><a href="/wiki/Zeno_machine" title="Zeno machine">Zeno machine</a></li></ul></li> <li><a href="/wiki/History_of_general-purpose_CPUs#Belt_machine_architecture" title="History of general-purpose CPUs">Belt machine</a></li> <li><a href="/wiki/Stack_machine" title="Stack machine">Stack machine</a></li> <li><a href="/wiki/Register_machine" title="Register machine">Register machines</a> <ul><li><a href="/wiki/Counter_machine" title="Counter machine">Counter</a></li> <li><a href="/wiki/Pointer_machine" title="Pointer machine">Pointer</a></li> <li><a href="/wiki/Random-access_machine" title="Random-access machine">Random-access</a></li> <li><a href="/wiki/Random-access_stored-program_machine" title="Random-access stored-program machine">Random-access stored program</a></li></ul></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Computer_architecture" title="Computer architecture">Architecture</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Microarchitecture" title="Microarchitecture">Microarchitecture</a></li> <li><a href="/wiki/Von_Neumann_architecture" title="Von Neumann architecture">Von Neumann</a></li> <li><a href="/wiki/Harvard_architecture" title="Harvard architecture">Harvard</a> <ul><li><a href="/wiki/Modified_Harvard_architecture" title="Modified Harvard architecture">modified</a></li></ul></li> <li><a href="/wiki/Dataflow_architecture" title="Dataflow architecture">Dataflow</a></li> <li><a href="/wiki/Transport_triggered_architecture" title="Transport triggered architecture">Transport-triggered</a></li> <li><a href="/wiki/Cellular_architecture" title="Cellular architecture">Cellular</a></li> <li><a href="/wiki/Endianness" title="Endianness">Endianness</a></li> <li><a href="/wiki/Computer_data_storage" title="Computer data storage">Memory access</a> <ul><li><a href="/wiki/Non-uniform_memory_access" title="Non-uniform memory access">NUMA</a></li> <li><a href="/wiki/Uniform_memory_access" title="Uniform memory access">HUMA</a></li> <li><a href="/wiki/Load%E2%80%93store_architecture" title="Load–store architecture">Load–store</a></li> <li><a href="/wiki/Register%E2%80%93memory_architecture" title="Register–memory architecture">Register/memory</a></li></ul></li> <li><a href="/wiki/Cache_hierarchy" title="Cache hierarchy">Cache hierarchy</a></li> <li><a href="/wiki/Memory_hierarchy" title="Memory hierarchy">Memory hierarchy</a> <ul><li><a href="/wiki/Virtual_memory" title="Virtual memory">Virtual memory</a></li> <li><a href="/wiki/Secondary_storage" class="mw-redirect" title="Secondary storage">Secondary storage</a></li></ul></li> <li><a href="/wiki/Heterogeneous_System_Architecture" title="Heterogeneous System Architecture">Heterogeneous</a></li> <li><a href="/wiki/Fabric_computing" title="Fabric computing">Fabric</a></li> <li><a href="/wiki/Multiprocessing" title="Multiprocessing">Multiprocessing</a></li> <li><a href="/wiki/Cognitive_computing" title="Cognitive computing">Cognitive</a></li> <li><a href="/wiki/Neuromorphic_engineering" class="mw-redirect" title="Neuromorphic engineering">Neuromorphic</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a class="mw-selflink selflink">Instruction set<br />architectures</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Types</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Orthogonal_instruction_set" title="Orthogonal instruction set">Orthogonal instruction set</a></li> <li><a href="/wiki/Complex_instruction_set_computer" title="Complex instruction set computer">CISC</a></li> <li><a href="/wiki/Reduced_instruction_set_computer" title="Reduced instruction set computer">RISC</a></li> <li><a href="/wiki/Application-specific_instruction_set_processor" title="Application-specific instruction set processor">Application-specific</a></li> <li><a href="/wiki/Explicit_data_graph_execution" title="Explicit data graph execution">EDGE</a> <ul><li><a href="/wiki/TRIPS_architecture" title="TRIPS architecture">TRIPS</a></li></ul></li> <li><a href="/wiki/Very_long_instruction_word" title="Very long instruction word">VLIW</a> <ul><li><a href="/wiki/Explicitly_parallel_instruction_computing" title="Explicitly parallel instruction computing">EPIC</a></li></ul></li> <li><a href="/wiki/Minimal_instruction_set_computer" title="Minimal instruction set computer">MISC</a></li> <li><a href="/wiki/One-instruction_set_computer" title="One-instruction set computer">OISC</a></li> <li><a href="/wiki/No_instruction_set_computing" title="No instruction set computing">NISC</a></li> <li><a href="/wiki/Zero_instruction_set_computer" class="mw-redirect" title="Zero instruction set computer">ZISC</a></li> <li><a href="/wiki/VISC_architecture" title="VISC architecture">VISC architecture</a></li> <li><a href="/wiki/Quantum_computing" title="Quantum computing">Quantum computing</a></li> <li><a href="/wiki/Comparison_of_instruction_set_architectures" title="Comparison of instruction set architectures">Comparison</a> <ul><li><a href="/wiki/Addressing_mode" title="Addressing mode">Addressing modes</a></li></ul></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Instruction<br />sets</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Motorola_68000_series" title="Motorola 68000 series">Motorola 68000 series</a></li> <li><a href="/wiki/VAX" title="VAX">VAX</a></li> <li><a href="/wiki/PDP-11_architecture" title="PDP-11 architecture">PDP-11</a></li> <li><a href="/wiki/X86" title="X86">x86</a></li> <li><a href="/wiki/ARM_architecture_family" title="ARM architecture family">ARM</a></li> <li><a href="/wiki/Stanford_MIPS" title="Stanford MIPS">Stanford MIPS</a></li> <li><a href="/wiki/MIPS_architecture" title="MIPS architecture">MIPS</a></li> <li><a href="/wiki/MIPS-X" title="MIPS-X">MIPS-X</a></li> <li>Power <ul><li><a href="/wiki/IBM_POWER_architecture" title="IBM POWER architecture">POWER</a></li> <li><a href="/wiki/PowerPC" title="PowerPC">PowerPC</a></li> <li><a href="/wiki/Power_ISA" title="Power ISA">Power ISA</a></li></ul></li> <li><a href="/wiki/Clipper_architecture" title="Clipper architecture">Clipper architecture</a></li> <li><a href="/wiki/SPARC" title="SPARC">SPARC</a></li> <li><a href="/wiki/SuperH" title="SuperH">SuperH</a></li> <li><a href="/wiki/DEC_Alpha" title="DEC Alpha">DEC Alpha</a></li> <li><a href="/wiki/ETRAX_CRIS" title="ETRAX CRIS">ETRAX CRIS</a></li> <li><a href="/wiki/M32R" title="M32R">M32R</a></li> <li><a href="/wiki/Unicore" title="Unicore">Unicore</a></li> <li><a href="/wiki/IA-64" title="IA-64">Itanium</a></li> <li><a href="/wiki/OpenRISC" title="OpenRISC">OpenRISC</a></li> <li><a href="/wiki/RISC-V" title="RISC-V">RISC-V</a></li> <li><a href="/wiki/MicroBlaze" title="MicroBlaze">MicroBlaze</a></li> <li><a href="/wiki/Little_man_computer" title="Little man computer">LMC</a></li> <li>System/3x0 <ul><li><a href="/wiki/IBM_System/360_architecture" title="IBM System/360 architecture">S/360</a></li> <li><a href="/wiki/IBM_System/370" title="IBM System/370">S/370</a></li> <li><a href="/wiki/IBM_System/390" title="IBM System/390">S/390</a></li> <li><a href="/wiki/Z/Architecture" title="Z/Architecture">z/Architecture</a></li></ul></li> <li>Tilera ISA</li> <li><a href="/wiki/VISC_architecture" title="VISC architecture">VISC architecture</a></li> <li><a href="/wiki/Adapteva#Products" class="mw-redirect" title="Adapteva">Epiphany architecture</a></li> <li><a href="/wiki/Comparison_of_instruction_set_architectures" title="Comparison of instruction set architectures">Others</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Instruction_cycle" title="Instruction cycle">Execution</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Instruction_pipelining" title="Instruction pipelining">Instruction pipelining</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Pipeline_stall" title="Pipeline stall">Pipeline stall</a></li> <li><a href="/wiki/Operand_forwarding" title="Operand forwarding">Operand forwarding</a></li> <li><a href="/wiki/Classic_RISC_pipeline" title="Classic RISC pipeline">Classic RISC pipeline</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Hazard_(computer_architecture)" title="Hazard (computer architecture)">Hazards</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Data_dependency" title="Data dependency">Data dependency</a></li> <li><a href="/wiki/Structural_hazard" class="mw-redirect" title="Structural hazard">Structural</a></li> <li><a href="/wiki/Control_hazard" class="mw-redirect" title="Control hazard">Control</a></li> <li><a href="/wiki/False_sharing" title="False sharing">False sharing</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Out-of-order_execution" title="Out-of-order execution">Out-of-order</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Scoreboarding" title="Scoreboarding">Scoreboarding</a></li> <li><a href="/wiki/Tomasulo%27s_algorithm" title="Tomasulo's algorithm">Tomasulo's algorithm</a> <ul><li><a href="/wiki/Reservation_station" title="Reservation station">Reservation station</a></li> <li><a href="/wiki/Re-order_buffer" title="Re-order buffer">Re-order buffer</a></li></ul></li> <li><a href="/wiki/Register_renaming" title="Register renaming">Register renaming</a></li> <li><a href="/wiki/Wide-issue" title="Wide-issue">Wide-issue</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Speculative_execution" title="Speculative execution">Speculative</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Branch_predictor" title="Branch predictor">Branch prediction</a></li> <li><a href="/wiki/Memory_dependence_prediction" title="Memory dependence prediction">Memory dependence prediction</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Parallel_computing" title="Parallel computing">Parallelism</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Level</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Bit-level_parallelism" title="Bit-level parallelism">Bit</a> <ul><li><a href="/wiki/Bit-serial_architecture" title="Bit-serial architecture">Bit-serial</a></li> <li><a href="/wiki/Word_(computer_architecture)" title="Word (computer architecture)">Word</a></li></ul></li> <li><a href="/wiki/Instruction-level_parallelism" title="Instruction-level parallelism">Instruction</a></li> <li><a href="/wiki/Instruction_pipelining" title="Instruction pipelining">Pipelining</a> <ul><li><a href="/wiki/Scalar_processor" title="Scalar processor">Scalar</a></li> <li><a href="/wiki/Superscalar_processor" title="Superscalar processor">Superscalar</a></li></ul></li> <li><a href="/wiki/Task_parallelism" title="Task parallelism">Task</a> <ul><li><a href="/wiki/Thread_(computing)" title="Thread (computing)">Thread</a></li> <li><a href="/wiki/Process_(computing)" title="Process (computing)">Process</a></li></ul></li> <li><a href="/wiki/Data_parallelism" title="Data parallelism">Data</a> <ul><li><a href="/wiki/Vector_processor" title="Vector processor">Vector</a></li></ul></li> <li><a href="/wiki/Memory-level_parallelism" title="Memory-level parallelism">Memory</a></li> <li><a href="/wiki/Distributed_architecture" class="mw-redirect" title="Distributed architecture">Distributed</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Multithreading_(computer_architecture)" title="Multithreading (computer architecture)">Multithreading</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Temporal_multithreading" title="Temporal multithreading">Temporal</a></li> <li><a href="/wiki/Simultaneous_multithreading" title="Simultaneous multithreading">Simultaneous</a> <ul><li><a href="/wiki/Hyper-threading" title="Hyper-threading">Hyperthreading</a></li> <li><a href="/wiki/Simultaneous_and_heterogeneous_multithreading" title="Simultaneous and heterogeneous multithreading">Simultaneous and heterogenous</a></li></ul></li> <li><a href="/wiki/Speculative_multithreading" title="Speculative multithreading">Speculative</a></li> <li><a href="/wiki/Preemption_(computing)" title="Preemption (computing)">Preemptive</a></li> <li><a href="/wiki/Cooperative_multitasking" title="Cooperative multitasking">Cooperative</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Flynn%27s_taxonomy" title="Flynn's taxonomy">Flynn's taxonomy</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Single_instruction,_single_data" title="Single instruction, single data">SISD</a></li> <li><a href="/wiki/Single_instruction,_multiple_data" title="Single instruction, multiple data">SIMD</a> <ul><li><a href="/wiki/Single_instruction,_multiple_threads" title="Single instruction, multiple threads">Array processing (SIMT)</a></li> <li><a href="/wiki/Flynn%27s_taxonomy#Pipelined_processor" title="Flynn's taxonomy">Pipelined processing</a></li> <li><a href="/wiki/Flynn%27s_taxonomy#Associative_processor" title="Flynn's taxonomy">Associative processing</a></li> <li><a href="/wiki/SWAR" title="SWAR">SWAR</a></li></ul></li> <li><a href="/wiki/Multiple_instruction,_single_data" title="Multiple instruction, single data">MISD</a></li> <li><a href="/wiki/Multiple_instruction,_multiple_data" title="Multiple instruction, multiple data">MIMD</a> <ul><li><a href="/wiki/Single_program,_multiple_data" title="Single program, multiple data">SPMD</a></li></ul></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Computer_performance" title="Computer performance">Processor<br />performance</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Transistor_count" title="Transistor count">Transistor count</a></li> <li><a href="/wiki/Instructions_per_cycle" title="Instructions per cycle">Instructions per cycle</a> (IPC) <ul><li><a href="/wiki/Cycles_per_instruction" title="Cycles per instruction">Cycles per instruction</a> (CPI)</li></ul></li> <li><a href="/wiki/Instructions_per_second" title="Instructions per second">Instructions per second</a> (IPS)</li> <li><a href="/wiki/FLOPS" class="mw-redirect" title="FLOPS">Floating-point operations per second</a> (FLOPS)</li> <li><a href="/wiki/Transactions_per_second" title="Transactions per second">Transactions per second</a> (TPS)</li> <li><a href="/wiki/SUPS" title="SUPS">Synaptic updates per second</a> (SUPS)</li> <li><a href="/wiki/Performance_per_watt" title="Performance per watt">Performance per watt</a> (PPW)</li> <li><a href="/wiki/Cache_performance_measurement_and_metric" title="Cache performance measurement and metric">Cache performance metrics</a></li> <li><a href="/wiki/Computer_performance_by_orders_of_magnitude" title="Computer performance by orders of magnitude">Computer performance by orders of magnitude</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Processor_(computing)" title="Processor (computing)">Types</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Central_processing_unit" title="Central processing unit">Central processing unit</a> (CPU)</li> <li><a href="/wiki/Graphics_processing_unit" title="Graphics processing unit">Graphics processing unit</a> (GPU) <ul><li><a href="/wiki/General-purpose_computing_on_graphics_processing_units" title="General-purpose computing on graphics processing units">GPGPU</a></li></ul></li> <li><a href="/wiki/Vector_processor" title="Vector processor">Vector</a></li> <li><a href="/wiki/Barrel_processor" title="Barrel processor">Barrel</a></li> <li><a href="/wiki/Stream_processing" title="Stream processing">Stream</a></li> <li><a href="/wiki/Tile_processor" title="Tile processor">Tile processor</a></li> <li><a href="/wiki/Coprocessor" title="Coprocessor">Coprocessor</a></li> <li><a href="/wiki/Programmable_Array_Logic" title="Programmable Array Logic">PAL</a></li> <li><a href="/wiki/Application-specific_integrated_circuit" title="Application-specific integrated circuit">ASIC</a></li> <li><a href="/wiki/Field-programmable_gate_array" title="Field-programmable gate array">FPGA</a></li> <li><a href="/wiki/Field-programmable_object_array" title="Field-programmable object array">FPOA</a></li> <li><a href="/wiki/Complex_programmable_logic_device" title="Complex programmable logic device">CPLD</a></li> <li><a href="/wiki/Multi-chip_module" title="Multi-chip module">Multi-chip module</a> (MCM)</li> <li><a href="/wiki/System_in_a_package" title="System in a package">System in a package</a> (SiP)</li> <li><a href="/wiki/Package_on_a_package" title="Package on a package">Package on a package</a> (PoP)</li></ul> </div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">By application</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Embedded_system" title="Embedded system">Embedded system</a></li> <li><a href="/wiki/Microprocessor" title="Microprocessor">Microprocessor</a></li> <li><a href="/wiki/Microcontroller" title="Microcontroller">Microcontroller</a></li> <li><a href="/wiki/Mobile_processor" title="Mobile processor">Mobile</a></li> <li><a href="/wiki/Ultra-low-voltage_processor" title="Ultra-low-voltage processor">Ultra-low-voltage</a></li> <li><a href="/wiki/Application-specific_instruction_set_processor" title="Application-specific instruction set processor">ASIP</a></li> <li><a href="/wiki/Soft_microprocessor" title="Soft microprocessor">Soft microprocessor</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Systems<br />on chip</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/System_on_a_chip" title="System on a chip">System on a chip</a> (SoC)</li> <li><a href="/wiki/Multiprocessor_system_on_a_chip" class="mw-redirect" title="Multiprocessor system on a chip">Multiprocessor</a> (MPSoC)</li> <li><a href="/wiki/Cypress_PSoC" title="Cypress PSoC">Cypress PSoC</a></li> <li><a href="/wiki/Network_on_a_chip" title="Network on a chip">Network on a chip</a> (NoC)</li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Hardware_acceleration" title="Hardware acceleration">Hardware<br />accelerators</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Coprocessor" title="Coprocessor">Coprocessor</a></li> <li><a href="/wiki/AI_accelerator" title="AI accelerator">AI accelerator</a></li> <li><a href="/wiki/Graphics_processing_unit" title="Graphics processing unit">Graphics processing unit</a> (GPU)</li> <li><a href="/wiki/Image_processor" title="Image processor">Image processor</a></li> <li><a href="/wiki/Vision_processing_unit" title="Vision processing unit">Vision processing unit</a> (VPU)</li> <li><a href="/wiki/Physics_processing_unit" title="Physics processing unit">Physics processing unit</a> (PPU)</li> <li><a href="/wiki/Digital_signal_processor" title="Digital signal processor">Digital signal processor</a> (DSP)</li> <li><a href="/wiki/Tensor_Processing_Unit" title="Tensor Processing Unit">Tensor Processing Unit</a> (TPU)</li> <li><a href="/wiki/Secure_cryptoprocessor" title="Secure cryptoprocessor">Secure cryptoprocessor</a></li> <li><a href="/wiki/Network_processor" title="Network processor">Network processor</a></li> <li><a href="/wiki/Baseband_processor" title="Baseband processor">Baseband processor</a></li></ul> </div></td></tr></tbody></table><div> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Word_(computer_architecture)" title="Word (computer architecture)">Word size</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/1-bit_computing" title="1-bit computing">1-bit</a></li> <li><a href="/wiki/4-bit_computing" title="4-bit computing">4-bit</a></li> <li><a href="/wiki/8-bit_computing" title="8-bit computing">8-bit</a></li> <li><a href="/wiki/12-bit_computing" title="12-bit computing">12-bit</a></li> <li><a href="/wiki/Apollo_Guidance_Computer" title="Apollo Guidance Computer">15-bit</a></li> <li><a href="/wiki/16-bit_computing" title="16-bit computing">16-bit</a></li> <li><a href="/wiki/24-bit_computing" title="24-bit computing">24-bit</a></li> <li><a href="/wiki/32-bit_computing" title="32-bit computing">32-bit</a></li> <li><a href="/wiki/48-bit_computing" title="48-bit computing">48-bit</a></li> <li><a href="/wiki/64-bit_computing" title="64-bit computing">64-bit</a></li> <li><a href="/wiki/128-bit_computing" title="128-bit computing">128-bit</a></li> <li><a href="/wiki/256-bit_computing" title="256-bit computing">256-bit</a></li> <li><a href="/wiki/512-bit_computing" title="512-bit computing">512-bit</a></li> <li><a href="/wiki/Bit_slicing" title="Bit slicing">bit slicing</a></li> <li><a href="/wiki/Word_(computer_architecture)#Table_of_word_sizes" title="Word (computer architecture)">others</a> <ul><li><a href="/wiki/Word_(computer_architecture)#Variable-word_architectures" title="Word (computer architecture)">variable</a></li></ul></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Core count</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Single-core" title="Single-core">Single-core</a></li> <li><a href="/wiki/Multi-core_processor" title="Multi-core processor">Multi-core</a></li> <li><a href="/wiki/Manycore_processor" title="Manycore processor">Manycore</a></li> <li><a href="/wiki/Heterogeneous_computing" title="Heterogeneous computing">Heterogeneous architecture</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Components</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Central_processing_unit" title="Central processing unit">Core</a></li> <li><a href="/wiki/Cache_(computing)" title="Cache (computing)">Cache</a> <ul><li><a href="/wiki/CPU_cache" title="CPU cache">CPU cache</a></li> <li><a href="/wiki/Scratchpad_memory" title="Scratchpad memory">Scratchpad memory</a></li> <li><a href="/wiki/Data_cache" class="mw-redirect" title="Data cache">Data cache</a></li> <li><a href="/wiki/Instruction_cache" class="mw-redirect" title="Instruction cache">Instruction cache</a></li> <li><a href="/wiki/Cache_replacement_policies" title="Cache replacement policies">replacement policies</a></li> <li><a href="/wiki/Cache_coherence" title="Cache coherence">coherence</a></li></ul></li> <li><a href="/wiki/Bus_(computing)" title="Bus (computing)">Bus</a></li> <li><a href="/wiki/Clock_rate" title="Clock rate">Clock rate</a></li> <li><a href="/wiki/Clock_signal" title="Clock signal">Clock signal</a></li> <li><a href="/wiki/FIFO_(computing_and_electronics)" title="FIFO (computing and electronics)">FIFO</a></li></ul> </div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Execution_unit" title="Execution unit">Functional<br />units</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Arithmetic_logic_unit" title="Arithmetic logic unit">Arithmetic logic unit</a> (ALU)</li> <li><a href="/wiki/Address_generation_unit" title="Address generation unit">Address generation unit</a> (AGU)</li> <li><a href="/wiki/Floating-point_unit" title="Floating-point unit">Floating-point unit</a> (FPU)</li> <li><a href="/wiki/Memory_management_unit" title="Memory management unit">Memory management unit</a> (MMU) <ul><li><a href="/wiki/Load%E2%80%93store_unit" title="Load–store unit">Load–store unit</a></li> <li><a href="/wiki/Translation_lookaside_buffer" title="Translation lookaside buffer">Translation lookaside buffer</a> (TLB)</li></ul></li> <li><a href="/wiki/Branch_predictor" title="Branch predictor">Branch predictor</a></li> <li><a href="/wiki/Branch_target_predictor" title="Branch target predictor">Branch target predictor</a></li> <li><a href="/wiki/Memory_controller" title="Memory controller">Integrated memory controller</a> (IMC) <ul><li><a href="/wiki/Memory_management_unit" title="Memory management unit">Memory management unit</a></li></ul></li> <li><a href="/wiki/Instruction_decoder" class="mw-redirect" title="Instruction decoder">Instruction decoder</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Logic_gate" title="Logic gate">Logic</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Combinational_logic" title="Combinational logic">Combinational</a></li> <li><a href="/wiki/Sequential_logic" title="Sequential logic">Sequential</a></li> <li><a href="/wiki/Glue_logic" title="Glue logic">Glue</a></li> <li><a href="/wiki/Logic_gate" title="Logic gate">Logic gate</a> <ul><li><a href="/wiki/Quantum_logic_gate" title="Quantum logic gate">Quantum</a></li> <li><a href="/wiki/Gate_array" title="Gate array">Array</a></li></ul></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Hardware_register" title="Hardware register">Registers</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Processor_register" title="Processor register">Processor register</a></li> <li><a href="/wiki/Status_register" title="Status register">Status register</a></li> <li><a href="/wiki/Stack_register" title="Stack register">Stack register</a></li> <li><a href="/wiki/Register_file" title="Register file">Register file</a></li> <li><a href="/wiki/Memory_buffer_register" title="Memory buffer register">Memory buffer</a></li> <li><a href="/wiki/Memory_address_register" title="Memory address register">Memory address register</a></li> <li><a href="/wiki/Program_counter" title="Program counter">Program counter</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Control_unit" title="Control unit">Control unit</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Hardwired_control_unit" class="mw-redirect" title="Hardwired control unit">Hardwired control unit</a></li> <li><a href="/wiki/Instruction_unit" title="Instruction unit">Instruction unit</a></li> <li><a href="/wiki/Data_buffer" title="Data buffer">Data buffer</a></li> <li><a href="/wiki/Write_buffer" title="Write buffer">Write buffer</a></li> <li><a href="/wiki/Microcode" title="Microcode">Microcode</a> <a href="/wiki/ROM_image" title="ROM image">ROM</a></li> <li><a href="/wiki/Counter_(digital)" title="Counter (digital)">Counter</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Datapath" title="Datapath">Datapath</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Multiplexer" title="Multiplexer">Multiplexer</a></li> <li><a href="/wiki/Demultiplexer" class="mw-redirect" title="Demultiplexer">Demultiplexer</a></li> <li><a href="/wiki/Adder_(electronics)" title="Adder (electronics)">Adder</a></li> <li><a href="/wiki/Binary_multiplier" title="Binary multiplier">Multiplier</a> <ul><li><a href="/wiki/CPU_multiplier" title="CPU multiplier">CPU</a></li></ul></li> <li><a href="/wiki/Binary_decoder" title="Binary decoder">Binary decoder</a> <ul><li><a href="/wiki/Address_decoder" title="Address decoder">Address decoder</a></li> <li><a href="/wiki/Sum-addressed_decoder" title="Sum-addressed decoder">Sum-addressed decoder</a></li></ul></li> <li><a href="/wiki/Barrel_shifter" title="Barrel shifter">Barrel shifter</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Electronic_circuit" title="Electronic circuit">Circuitry</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Integrated_circuit" title="Integrated circuit">Integrated circuit</a> <ul><li><a href="/wiki/Three-dimensional_integrated_circuit" title="Three-dimensional integrated circuit">3D</a></li> <li><a href="/wiki/Mixed-signal_integrated_circuit" title="Mixed-signal integrated circuit">Mixed-signal</a></li> <li><a href="/wiki/Power_management_integrated_circuit" title="Power management integrated circuit">Power management</a></li></ul></li> <li><a href="/wiki/Boolean_circuit" title="Boolean circuit">Boolean</a></li> <li><a href="/wiki/Circuit_(computer_science)" title="Circuit (computer science)">Digital</a></li> <li><a href="/wiki/Analogue_electronics" title="Analogue electronics">Analog</a></li> <li><a href="/wiki/Quantum_circuit" title="Quantum circuit">Quantum</a></li> <li><a href="/wiki/Switch#Electronic_switches" title="Switch">Switch</a></li></ul> </div></td></tr></tbody></table><div> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Power_management" title="Power management">Power<br />management</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Power_Management_Unit" title="Power Management Unit">PMU</a></li> <li><a href="/wiki/Advanced_Power_Management" title="Advanced Power Management">APM</a></li> <li><a href="/wiki/ACPI" title="ACPI">ACPI</a></li> <li><a href="/wiki/Dynamic_frequency_scaling" title="Dynamic frequency scaling">Dynamic frequency scaling</a></li> <li><a href="/wiki/Dynamic_voltage_scaling" title="Dynamic voltage scaling">Dynamic voltage scaling</a></li> <li><a href="/wiki/Clock_gating" title="Clock gating">Clock gating</a></li> <li><a href="/wiki/Performance_per_watt" title="Performance per watt">Performance per watt</a> (PPW)</li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Related</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/History_of_general-purpose_CPUs" title="History of general-purpose CPUs">History of general-purpose CPUs</a></li> <li><a href="/wiki/Microprocessor_chronology" title="Microprocessor chronology">Microprocessor chronology</a></li> <li><a href="/wiki/Processor_design" title="Processor design">Processor design</a></li> <li><a href="/wiki/Digital_electronics" title="Digital electronics">Digital electronics</a></li> <li><a href="/wiki/Hardware_security_module" title="Hardware security module">Hardware security module</a></li> <li><a href="/wiki/Semiconductor_device_fabrication" title="Semiconductor device fabrication">Semiconductor device fabrication</a></li> <li><a href="/wiki/Tick%E2%80%93tock_model" title="Tick–tock model">Tick–tock model</a></li> <li><a href="/wiki/Pin_grid_array" title="Pin grid array">Pin grid array</a></li> <li><a href="/wiki/Chip_carrier" title="Chip carrier">Chip carrier</a></li></ul> </div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox authority-control" aria-label="Navbox" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Help:Authority_control" title="Help:Authority control">Authority control databases</a>: National <span class="mw-valign-text-top noprint" typeof="mw:File/Frameless"><a href="https://www.wikidata.org/wiki/Q272683#identifiers" title="Edit this at Wikidata"><img alt="Edit this at Wikidata" src="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4129931-0">Germany</a></span></li></ul></div></td></tr></tbody></table></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐rf9q5 Cached time: 20241122140518 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.764 seconds Real time usage: 0.983 seconds Preprocessor visited node count: 3629/1000000 Post‐expand include size: 131372/2097152 bytes Template argument size: 6947/2097152 bytes Highest expansion depth: 18/100 Expensive parser function count: 11/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 87189/5000000 bytes Lua time usage: 0.457/10.000 seconds Lua memory usage: 8635374/52428800 bytes Number of Wikibase entities loaded: 1/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 827.525 1 -total 25.84% 213.802 1 Template:Reflist 16.54% 136.872 7 Template:Cite_web 11.13% 92.075 1 Template:Machine_code 10.40% 86.058 1 Template:Short_description 7.46% 61.770 2 Template:Clarify 7.36% 60.915 3 Template:Fix-span 6.63% 54.900 2 Template:Pagetype 6.47% 53.501 6 Template:Sfn 6.37% 52.692 6 Template:Navbox --> <!-- Saved in parser cache with key enwiki:pcache:idhash:47772-0!canonical and timestamp 20241122140518 and revision id 1256414498. 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=Instruction_set_architecture&oldid=1256414498">https://en.wikipedia.org/w/index.php?title=Instruction_set_architecture&oldid=1256414498</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">Categories</a>: <ul><li><a href="/wiki/Category:Central_processing_unit" title="Category:Central processing unit">Central processing unit</a></li><li><a href="/wiki/Category:Instruction_processing" title="Category:Instruction processing">Instruction processing</a></li><li><a href="/wiki/Category:Instruction_set_architectures" title="Category:Instruction set architectures">Instruction set architectures</a></li><li><a href="/wiki/Category:Microprocessors" title="Category:Microprocessors">Microprocessors</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: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><li><a href="/wiki/Category:Wikipedia_articles_needing_clarification_from_April_2024" title="Category:Wikipedia articles needing clarification from April 2024">Wikipedia articles needing clarification from April 2024</a></li><li><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_March_2023" title="Category:Articles with unsourced statements from March 2023">Articles with unsourced statements from March 2023</a></li><li><a href="/wiki/Category:All_articles_with_failed_verification" title="Category:All articles with failed verification">All articles with failed verification</a></li><li><a href="/wiki/Category:Articles_with_failed_verification_from_December_2021" title="Category:Articles with failed verification from December 2021">Articles with failed verification from December 2021</a></li><li><a href="/wiki/Category:Wikipedia_articles_needing_clarification_from_October_2012" title="Category:Wikipedia articles needing clarification from October 2012">Wikipedia articles needing clarification from October 2012</a></li><li><a href="/wiki/Category:All_accuracy_disputes" title="Category:All accuracy disputes">All accuracy disputes</a></li><li><a href="/wiki/Category:Articles_with_disputed_statements_from_October_2012" title="Category:Articles with disputed statements from October 2012">Articles with disputed statements from October 2012</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_October_2012" title="Category:Articles with unsourced statements from October 2012">Articles with unsourced statements from October 2012</a></li><li><a href="/wiki/Category:Commons_category_link_is_on_Wikidata" title="Category:Commons category link is on Wikidata">Commons category link is on 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 9 November 2024, at 21:15<span class="anonymous-show"> (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=Instruction_set_architecture&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-tc56n","wgBackendResponseTime":148,"wgPageParseReport":{"limitreport":{"cputime":"0.764","walltime":"0.983","ppvisitednodes":{"value":3629,"limit":1000000},"postexpandincludesize":{"value":131372,"limit":2097152},"templateargumentsize":{"value":6947,"limit":2097152},"expansiondepth":{"value":18,"limit":100},"expensivefunctioncount":{"value":11,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":87189,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 827.525 1 -total"," 25.84% 213.802 1 Template:Reflist"," 16.54% 136.872 7 Template:Cite_web"," 11.13% 92.075 1 Template:Machine_code"," 10.40% 86.058 1 Template:Short_description"," 7.46% 61.770 2 Template:Clarify"," 7.36% 60.915 3 Template:Fix-span"," 6.63% 54.900 2 Template:Pagetype"," 6.47% 53.501 6 Template:Sfn"," 6.37% 52.692 6 Template:Navbox"]},"scribunto":{"limitreport-timeusage":{"value":"0.457","limit":"10.000"},"limitreport-memusage":{"value":8635374,"limit":52428800},"limitreport-logs":"anchor_id_list = table#1 {\n [\"CITEREFBowen1985\"] = 1,\n [\"CITEREFCockeMarkstein1990\"] = 1,\n [\"CITEREFCrystal_ChenGreg_NovickKirk_Shimano2006\"] = 1,\n [\"CITEREFDurand\"] = 1,\n [\"CITEREFGanssle2001\"] = 1,\n [\"CITEREFGilreathLaplante2012\"] = 1,\n [\"CITEREFHennessyPatterson2003\"] = 1,\n [\"CITEREFPage2009\"] = 1,\n [\"CITEREFPughJohnsonPalmer1991\"] = 1,\n [\"CITEREFSchlanskerRau2000\"] = 1,\n [\"CITEREFShaoutEldos2003\"] = 1,\n [\"CITEREFVenkatTullsen2014\"] = 1,\n [\"CITEREFWeaverMcKee2009\"] = 1,\n [\"Fixed_length\"] = 1,\n [\"Fixed_width\"] = 1,\n [\"Parts_of_an_instruction\"] = 1,\n [\"REGISTER-PRESSURE\"] = 1,\n [\"Variable_length\"] = 1,\n [\"Variable_width\"] = 1,\n}\ntemplate_list = table#1 {\n [\"Anchor\"] = 3,\n [\"Authority control\"] = 1,\n [\"Broader\"] = 1,\n [\"CPU technologies\"] = 1,\n [\"Citation needed\"] = 1,\n [\"Citation needed span\"] = 1,\n [\"Cite book\"] = 4,\n [\"Cite conference\"] = 2,\n [\"Cite journal\"] = 4,\n [\"Cite web\"] = 7,\n [\"Clarify\"] = 2,\n [\"Commonscatinline\"] = 1,\n [\"Dubious\"] = 1,\n [\"Failed verification\"] = 1,\n [\"Machine code\"] = 1,\n [\"Main\"] = 1,\n [\"Quote\"] = 1,\n [\"Reflist\"] = 1,\n [\"Rp\"] = 1,\n [\"Sfn\"] = 6,\n [\"Short description\"] = 1,\n [\"Vanchor\"] = 5,\n [\"Wikibooks\"] = 1,\n}\narticle_whitelist = table#1 {\n}\n"},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-rf9q5","timestamp":"20241122140518","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Instruction set architecture","url":"https:\/\/en.wikipedia.org\/wiki\/Instruction_set_architecture","sameAs":"http:\/\/www.wikidata.org\/entity\/Q272683","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q272683","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":"2002-04-05T18:31:34Z","dateModified":"2024-11-09T21:15:15Z","headline":"set of abstract symbols (called instructions) which identify and describe operations in a computer program to a computer processor"}</script> </body> </html>