50 lines
16 KiB
HTML
50 lines
16 KiB
HTML
|
|
<!DOCTYPE html><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type" /><meta content="width=device-width, initial-scale=1" name="viewport" /><!--replace-start-0--><!--replace-start-5--><!--replace-start-8--><title>Fetch, decode, execute, store - My Zettelkasten</title><!--replace-end-8--><!--replace-end-5--><!--replace-end-0--><link href="https://cdn.jsdelivr.net/npm/fomantic-ui@2.8.7/dist/semantic.min.css" rel="stylesheet" /><link href="https://fonts.googleapis.com/css?family=Merriweather|Libre+Franklin|Roboto+Mono&display=swap" rel="stylesheet" /><!--replace-start-1--><!--replace-start-4--><!--replace-start-7--><link href="https://raw.githubusercontent.com/srid/neuron/master/assets/neuron.svg" rel="icon" /><meta content="Fetch, decode, execute is the operating cycle of the CPU. We will run through how this works with reference to the CPU architecture." name="description" /><meta content="Fetch, decode, execute, store" property="og:title" /><meta content="My Zettelkasten" property="og:site_name" /><meta content="article" property="og:type" /><meta content="Fetch_decode_execute" property="neuron:zettel-id" /><meta content="Fetch_decode_execute" property="neuron:zettel-slug" /><meta content="CPU" property="neuron:zettel-tag" /><script type="application/ld+json">[]</script><style type="text/css">body{background-color:#eeeeee !important;font-family:"Libre Franklin", serif !important}body .ui.container{font-family:"Libre Franklin", serif !important}body h1, h2, h3, h4, h5, h6, .ui.header, .headerFont{font-family:"Merriweather", sans-serif !important}body code, pre, tt, .monoFont{font-family:"Roboto Mono","SFMono-Regular","Menlo","Monaco","Consolas","Liberation Mono","Courier New", monospace !important}body div.z-index p.info{color:#808080}body div.z-index ul{list-style-type:square;padding-left:1.5em}body div.z-index .uplinks{margin-left:0.29999em}body .zettel-content h1#title-h1{background-color:rgba(33,133,208,0.1)}body nav.bottomPane{background-color:rgba(33,133,208,2.0e-2)}body div#footnotes{border-top-color:#2185d0}body p{line-height:150%}body img{max-width:100%}body .deemphasized{font-size:0.94999em}body .deemphasized:hover{opacity:1}body .deemphasized:not(:hover){opacity:0.69999}body .deemphasized:not(:hover) a{color:#808080 !important}body div.container.universe{padding-top:1em}body div.zettel-view ul{padding-left:1.5em;list-style-type:square}body div.zettel-view .pandoc .highlight{background-color:#ffff00}body div.zettel-view .pandoc .ui.disabled.fitted.checkbox{margin-right:0.29999em;vertical-align:middle}body div.zettel-view .zettel-content .metadata{margin-top:1em}body div.zettel-view .zettel-content .metadata div.date{text-align:center;color:#808080}body div.zettel-view .zettel-content h1{padding-top:0.2em;padding-bottom:0.2em;text-align:center}body div.zettel-view .zettel-content h2{border-bottom:solid 1px #4682b4;margin-bottom:0.5em}body div.zettel-view .zettel-content h3{margin:0px 0px 0.4em 0px}body div.zettel-view .zettel-content h4{opacity:0.8}body div.zettel-view .zettel-content div#footnotes{margin-top:4em;border-top-style:groove;border-top-width:2px;font-size:0.9em}body div.zettel-view .zettel-content div#footnotes ol > li > p:only-of-type{display:inline;margin-right:0.5em}body div.zettel-view .zettel-content aside.footnote-inline{width:30%;padding-left:15px;margin-left:15px;float:right;background-color:#d3d3d3}body div.zettel-view .zettel-content .overflows{overflow:auto}body div.zettel-view .zettel-content code{margin:auto auto auto auto;font-size:100%}body div.zettel-view .zettel-content p code, li code, ol code{padding:0.2em 0.2em 0.2em 0.2em;background-color:#f5f2f0}body div.zettel-view .zettel-content pre{overflow:auto}body div.zettel-view .zettel-content dl dt{font-weight:bold}body div.zettel-view .zettel-content blockquote{background-color:#f9f9f9;border-left:solid 10px #cccccc;margin:1.5em 0px 1.5em 0px;padding:0.5em 10px 0.5em 10px}body div.zettel-view .zettel-content.raw{background-color:#dddddd}body .ui.label.zettel-tag{color:#000000}body .ui.label.zettel-tag a{c
|
|||
|
|
async=""
|
|||
|
|
id="MathJax-script"
|
|||
|
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"
|
|||
|
|
></script>
|
|||
|
|
<link
|
|||
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/themes/prism.min.css"
|
|||
|
|
rel="stylesheet"
|
|||
|
|
/><link rel="preconnect" href="https://fonts.googleapis.com" /><link
|
|||
|
|
rel="preconnect"
|
|||
|
|
href="https://fonts.gstatic.com"
|
|||
|
|
crossorigin
|
|||
|
|
/><link
|
|||
|
|
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Serif:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap"
|
|||
|
|
rel="stylesheet"
|
|||
|
|
/>
|
|||
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-core.min.js"></script>
|
|||
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
|||
|
|
<style>
|
|||
|
|
body .ui.container,
|
|||
|
|
body ul {
|
|||
|
|
font-family: "IBM Plex Sans" !important;
|
|||
|
|
}
|
|||
|
|
body blockquote {
|
|||
|
|
border-left-width: 3px !important;
|
|||
|
|
font-style: italic;
|
|||
|
|
}
|
|||
|
|
.headerFont,
|
|||
|
|
.ui.header,
|
|||
|
|
body h1,
|
|||
|
|
h2,
|
|||
|
|
h3,
|
|||
|
|
h4,
|
|||
|
|
h5,
|
|||
|
|
h6 {
|
|||
|
|
font-family: "IBM Plex Sans Condensed" !important;
|
|||
|
|
}
|
|||
|
|
body p {
|
|||
|
|
line-height: 1.4;
|
|||
|
|
}
|
|||
|
|
.monoFont,
|
|||
|
|
body code,
|
|||
|
|
pre,
|
|||
|
|
tt {
|
|||
|
|
font-family: "IBM Plex Mono" !important;
|
|||
|
|
font-size: 12px !important;
|
|||
|
|
line-height: 1.4 !important;
|
|||
|
|
}
|
|||
|
|
</style>
|
|||
|
|
<!--replace-end-7--><!--replace-end-4--><!--replace-end-1--></head><body><div class="ui fluid container universe"><!--replace-start-2--><!--replace-start-3--><!--replace-start-6--><div class="ui text container" id="zettel-container" style="position: relative"><div class="zettel-view"><article class="ui raised attached segment zettel-content"><div class="pandoc"><h1 id="title-h1">Fetch, decode, execute, store</h1><p><em>Fetch, decode, execute</em> is the operating cycle of the CPU. We will run through how this works with reference to the <span class="zettel-link-container cf"><span class="zettel-link" title="Zettel: CPU architecture"><a href="CPU_architecture.html">CPU architecture</a></span></span>.</p><h2 id="fetch">Fetch</h2><h3 id="overview">Overview</h3><p>First, instructions and data are fetched from outside of the CPU chip (usually from the DRAM). In some cases, the data used by an instruction will be included with it. In other instance the instruction will reference the location where the data are held as an address.</p><h3 id="specifics">Specifics</h3><ul><li>The Program Counter register needs to keep track and sequence the different instructions that the CPU will work on. The first place it will look for an instruction is at the DRAM address <code>0000</code>, equivalent to 0 in the Program Counter register: the starting point. This is address therefore copied to the Memory Address Register for future reference.</li><li>This memory-storing event constitutes an instruction so it is copied to the Instruction Register.</li><li>As the first instruction has been fetched, the system reaches the end of the first cycle. Thus the Program counter increments by 1 to log this.</li><li>The next fetch cycle begins.</li></ul><h2 id="decode">Decode</h2><h3 id="overview-1">Overview</h3><p>Once the CPU has received the instruction, the CPU controller chip analyses it to determine which of its circuits should be used for processing.</p><h3 id="specifics-1">Specifics</h3><ul><li>Now that the instruction is fetched and stored in the RAM it needs to be decoded. It is therefore sent from the RAM to the Control Unit of the CPU. There are two parts to the instruction:<ol><li>The operation code (“op code”): the command that the computer will carry out.</li><li>The operand: an address in RAM where the data will be read and written to as part of the execution</li></ol></li><li>The Control Unit converts the operation code and operand into an instruction that is fed to the next stage in the cycle: execution. For example, for an add function, <code>add</code> would be the op code and <code>address x</code> and <code>address y</code> would be the operands, thus the instruction would be: <code>add</code> the value in <code>address x</code> to the value in <code>address y</code>.</li></ul><h2 id="execute">Execute</h2><p>Now the command will be executed. The operand is copied to the Memory Address Register and then passed to the Memory Data Register and the command is carried out by the ALU. The activities of ALU are covered in <a href="CPU_architecture.md#arithmetic-logic-unit">CPU Architecture</a> and the notes on <span class="zettel-link-container cf"><span class="zettel-link" title="Zettel: Logic gates"><a href="Logic_gates.html">Logic Gates</a></span></span>.</p><h2 id="store">Store</h2><h3 id="overview-2">Overview</h3><p>As well as telling the CPU what operation to perform, the instructions must specify where to store the result.</p><h3 id="specifics-2">Specifics</h3><ul><li>Data is stored differently depending on the instruction.</li><li>If the instruction is iterative (e.g. adding two numbers and then multiplying by another number), the instruction will tell the CPU to store the interim first value in the CPU’s <a href="CPU_architecture.md#registers">registers</a>. As these are part of the CPU, the data can be retrieved more readily. If the value is not expected to be used again immediately, it goes to the DRAM or harddisk.</li></ul></div></article><nav class="ui attached segment deemphasized backlinksPane" id="neuron-backlinks-pan
|