<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" >

<channel><title><![CDATA[Digital Electronics - Processor Design]]></title><link><![CDATA[https://digitalbyte.weebly.com/processor-design]]></link><description><![CDATA[Processor Design]]></description><pubDate>Sun, 03 Sep 2023 14:01:22 +0530</pubDate><generator>Weebly</generator><item><title><![CDATA[Memory Access]]></title><link><![CDATA[https://digitalbyte.weebly.com/processor-design/memory-access]]></link><comments><![CDATA[https://digitalbyte.weebly.com/processor-design/memory-access#comments]]></comments><pubDate>Fri, 24 Oct 2014 14:45:31 GMT</pubDate><category><![CDATA[memory]]></category><category><![CDATA[organization]]></category><category><![CDATA[Register]]></category><guid isPermaLink="false">https://digitalbyte.weebly.com/processor-design/memory-access</guid><description><![CDATA[Why memory access is important aspect?The statistics* obtained by running some program on ARM processor shows that, around 43% of instructions dynamically executed by the processor are related to the data transfer (to and from memory), while 23% of instructions are related to control flow i.e. to branch to a sub-routine. Only 34% are ALU instructions &amp; other.Though this statistics are obtained for ARM, similar is case for almost all general-purpose computing applications.  (* reference from  [...] ]]></description><content:encoded><![CDATA[<div class="paragraph" style="text-align:justify;"><font size="4"><strong>Why memory access is important aspect?</strong><br />The statistics* obtained by running some program on ARM processor shows that, around <strong>43%</strong> of instructions dynamically executed by the processor are related to the <em>data transfer</em> (to and from memory), while 23% of instructions are related to control flow i.e. to branch to a sub-routine. Only 34% are ALU instructions &amp; other.<br />Though this statistics are obtained for ARM, similar is case for almost all general-purpose computing applications.</font><br /><span></span></div>  <div class="paragraph" style="text-align:left;">(* reference from book :&nbsp;Steve Furber,&nbsp;"Arm - System-on-chip architecture", 2nd ed, 2000)</div>  <div class="paragraph" style="text-align:left;"><font size="4">So, a processor, which is defined to be a digital thing that 'processes' data, indeed shows most of its performance in moving the data to and form memory.<br />In this context, the memory access should definitely be considered while designing a processor.<br /><br /><strong>For what purpose does a processor access the memory?</strong><br />-	to fetch an <a href="http://digitalbyte.weebly.com/processor-design/instruction-instruction-set">instruction</a><br />-	to fetch data operands from memory<br />-	to store data result in memory &nbsp;etc.</font><br /></div>  <div class="paragraph" style="text-align:justify;"><font size="4"><br /><span style=""></span>The memory mentioned here is either its internal memory (registers) or the external memory connected to processor such as disk/sdCard etc. In case of internal memory, the access time is much low, but access time for external memory is often not negligible, given the fact that almost 40% time of program execution is spent on memory access.</font><br /><br /><font size="4">For various kinds of memories connected to a CPU, the speed and capacity hierarchy is as shown in figure below:</font></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://digitalbyte.weebly.com/uploads/1/3/0/4/13049223/4182959.png?568" alt="Picture" style="width:568;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph" style="text-align:justify;"><font size="4">Since the <a href="http://digitalbyte.weebly.com/processor-design/registers-the-memory-of-processor" target="_blank">registers</a> are available on-chip, their access time is lowest. The main memory (RAM) is frequently accessed by CPU, which is comparatively slower. Thus, a secondary on-chip memory, called CACHE memory is often used in modern processors. The cache stores some data/code which is frequently needed.</font></div>  <div class="wsite-spacer" style="height:50px;"></div>  <div class="paragraph" style="text-align:center;">Connect with <a href="https://www.facebook.com/thedigitalbyte" target="_blank">Digital Byte on facebook</a> to get updates.<br /></div>]]></content:encoded></item><item><title><![CDATA[The MU0 Processor – ALU]]></title><link><![CDATA[https://digitalbyte.weebly.com/processor-design/the-mu0-processor-alu]]></link><comments><![CDATA[https://digitalbyte.weebly.com/processor-design/the-mu0-processor-alu#comments]]></comments><pubDate>Mon, 06 Oct 2014 03:55:01 GMT</pubDate><category><![CDATA[alu]]></category><category><![CDATA[architecture]]></category><category><![CDATA[MU0]]></category><guid isPermaLink="false">https://digitalbyte.weebly.com/processor-design/the-mu0-processor-alu</guid><description><![CDATA[ From the instruction set of MU0, it may seem like the ALU needs to perform only two operations viz. ADD and SUB. However, the way the datapath is designed, ALU gets some additional responsibilities. Consider that X and Y are LHS and RHS inputs to ALU respectively, and Z is its output. X bus is accessed by ACC and PC, while Y bus accessed by IR and memory.                       Following are the operations supported by MU0 ALU:     1) Addition (ADD instruction)     Z = X+Y where, X = [ACC] and Y [...] ]]></description><content:encoded><![CDATA[<div class="paragraph" style="text-align:justify;"> <strong><font size="4">From the <a href="http://digitalbyte.weebly.com/processor-design/the-mu0-processor-instructions" target="_blank">instruction set of MU0</a>, it may seem like the ALU needs to perform only two operations viz. ADD and SUB. However, the way the datapath is designed, ALU gets some additional responsibilities.</font></strong><br> <font size="4"><span style="line-height: 27px;"><br></span></font><span></span><strong><font size="4">Consider that X and Y are LHS and RHS inputs to ALU respectively, and Z is its output. X bus is accessed by ACC and PC, while Y bus accessed by IR and memory.</font></strong><br> </div>  <div> <!--BLOG_SUMMARY_END--> </div>  <div> <div class="wsite-image wsite-image-border-none" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a><img src="https://digitalbyte.weebly.com/uploads/1/3/0/4/13049223/9933579.png?425" alt="Picture" style="width:425;max-width:100%"></a>  <div style="display:block;font-size:90%"></div> </div> </div>  <div> <div style="height: 20px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;">  <div style="height: 20px; overflow: hidden; width: 100%;"></div> </div>  <div class="paragraph" style="text-align:left;"> <strong><font size="4">Following are the operations supported by MU0 ALU:</font></strong><br> <span></span> </div>  <div class="paragraph" style="text-align:left;"> <font size="4"><strong>1) Addition (ADD instruction)</strong></font><br> <span></span> </div>  <div class="paragraph" style="text-align:center;"> <font size="4">Z = X+Y<br> where, X = [ACC] and Y = [memory]</font><br> </div>  <div class="paragraph" style="text-align:left;"> <font size="4"><strong>2) Subtraction (SUB instruction)</strong></font><br> <span></span> </div>  <div class="paragraph" style="text-align:center;"> <font size="4">Z = X-Y. &nbsp;</font><font size="4">In this case, the adder can act as subtractor.<br> <span></span> The ALU performs</font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<font size="4">&nbsp;Z = X+(-Y)</font>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<font size="4">where, X = [ACC] and Y = [memory]<br></font><br> <span></span><br> <span></span> </div>  <div class="paragraph" style="text-align:left;"> <strong><font size="4">3) Increment PC</font></strong><br> <span></span> </div>  <div class="paragraph" style="text-align:center;"> <font size="4">After each and every instruction, the PC is incremented by 1.<br> <span></span> The ALU performs</font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<font size="4">&nbsp;Z = X + 1&nbsp;</font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<font size="4">where X = [PC]<br></font><span></span><br> <span></span> </div>  <div class="paragraph" style="text-align:left;"> <strong><font size="4">4) Write to ACC (LDA instruction) and to PC (branch instruction)</font></strong><br> <span></span> </div>  <div class="paragraph" style="text-align:center;"> <font size="4">The ALU performs</font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<font size="4">&nbsp;Z = 0 + Y</font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <font size="4">where Y = [IR]<br></font><br> <span></span> </div>  <div> <div style="height: 20px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;">  <div style="height: 20px; overflow: hidden; width: 100%;"></div> </div>  <div class="paragraph" style="text-align:justify;"> <font size="4"><strong>Each operation can be expressed as an addition operation. This means that ALU contains ADDER and other circuitry to choose the proper operand. The MU0 ALU schematic :<br></strong></font><span></span><br> <span></span> </div>  <div> <div class="wsite-image wsite-image-border-none" style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a><img src="https://digitalbyte.weebly.com/uploads/1/3/0/4/13049223/2386044.png?361" alt="Picture" style="width:361;max-width:100%"></a>  <div style="display:block;font-size:90%"></div> </div> </div>  <div class="paragraph" style="text-align:justify;"> <strong><font size="4">Pre-condition logic is able to reset either of the operands to 0. For various operations, the pre-condition on X-bus and Y-bus, and carry-in are shown below in tabular form:</font></strong> </div>  <div> <div id="198136344349192345" align="center" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"> <center> <table border="1" bordercolor="#000000" style="background-color:#ffff" width="600" cellpadding="1" cellspacing="1"> <tr> <td>Instruction Type</td>  <td>X bus</td>  <td>Y bus</td>  <td>Carry-In</td> </tr>  <tr> <td>ADD</td>  <td>as it is</td>  <td>as it is</td>  <td>0</td> </tr>  <tr> <td>SUB</td>  <td>as it is</td>  <td>&rdquo;INVERT&rdquo;</td>  <td>0</td> </tr>  <tr> <td>PC increment</td>  <td>as it is</td>  <td>0</td>  <td>1</td> </tr>  <tr> <td>branches</td>  <td>0</td>  <td>as it is</td>  <td>0</td> </tr> </table> </center> </div> </div>  <div> <div style="height: 20px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;">  <div style="height: 20px; overflow: hidden; width: 100%;"></div> </div>  <div class="paragraph" style="text-align:justify;"> <font size="4"><strong>In conclusion, we can say that an adder, along with some extra logic is used to create this simple ALU.&nbsp;<span style="line-height: 1.5; background-color: initial;">We'll stop this discussion on MU0 processor here.</span></strong></font><br> <font size="4"><span style="line-height: 27px;"><br></span></font><br> <span style="line-height: 1.5; background-color: initial;"><font size="4"><strong>Next is what? . . . let's discuss next the things that makes a processor more powerful...</strong><br> <br> <br> <br> <br></font></span> </div>  <div> <div style="height: 20px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;">  <div style="height: 20px; overflow: hidden; width: 100%;"></div> </div>  <div class="paragraph" style="text-align:center;"> Connect with <a href="https://www.facebook.com/thedigitalbyte" target="_blank">Digital Byte on facebook</a> to get updates. </div>  <div> <div style="height: 20px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;">  <div style="height: 20px; overflow: hidden; width: 100%;"></div> </div> ]]></content:encoded></item><item><title><![CDATA[The MU0 Processor – Datapath]]></title><link><![CDATA[https://digitalbyte.weebly.com/processor-design/the-mu0-processor-datapath]]></link><comments><![CDATA[https://digitalbyte.weebly.com/processor-design/the-mu0-processor-datapath#comments]]></comments><pubDate>Sun, 05 Oct 2014 16:15:01 GMT</pubDate><category><![CDATA[datapath]]></category><category><![CDATA[MU0]]></category><guid isPermaLink="false">https://digitalbyte.weebly.com/processor-design/the-mu0-processor-datapath</guid><description><![CDATA[The RTL (Register-Transfer Level) datapath is sketched so as to ensure that every desired operation can be performed. In other words, the datapath is so sketched that internal signals get all necessary paths from register-to-register.          The MU0 datapath   The control signals required by various blocks are not considered in this part.e.g. The datapath for Arithmetic Operations (ADD, SUB)         Datapath for Fetch stage             Datapath for Decode &amp; Execute stages      Next we disc [...] ]]></description><content:encoded><![CDATA[<div class="paragraph" style="text-align:justify;"><strong><font size="4">The RTL (Register-Transfer Level) datapath is sketched so as to ensure that every desired operation can be performed. In other words, the datapath is so sketched that internal signals get all necessary paths from register-to-register.<br /></font></strong><br /></div>  <div>  <!--BLOG_SUMMARY_END--></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://digitalbyte.weebly.com/uploads/1/3/0/4/13049223/3703713.png?492" alt="Picture" style="width:492;max-width:100%" /> </a> <div style="display:block;font-size:90%">The MU0 datapath</div> </div></div>  <div class="paragraph" style="text-align:justify;"><strong><font size="4">The control signals required by various blocks are not considered in this part.<br /><br />e.g. The datapath for Arithmetic Operations (ADD, SUB)</font></strong><br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://digitalbyte.weebly.com/uploads/1/3/0/4/13049223/4370063_orig.png" alt="Picture" style="width:100%;max-width:1100px" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph" style="text-align:center;"><em>Datapath for Fetch stage</em></div>  <div><div style="height: 20px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;"></hr> <div style="height: 20px; overflow: hidden; width: 100%;"></div></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://digitalbyte.weebly.com/uploads/1/3/0/4/13049223/6434935_orig.png" alt="Picture" style="width:100%;max-width:1100px" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph" style="text-align:center;"><font size="2"><em>Datapath for Decode &amp; Execute stages</em></font></div>  <div><div style="height: 20px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;"></hr> <div style="height: 20px; overflow: hidden; width: 100%;"></div></div>  <div class="paragraph" style="text-align:left;"><strong><font size="4">Next we discuss the <a href="http://digitalbyte.weebly.com/processor-design/the-mu0-processor-alu" target="_blank">ALU of MU0</a> processor in details.</font><br /><br /></strong></div>  <div><div style="height: 20px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;"></hr> <div style="height: 20px; overflow: hidden; width: 100%;"></div></div>  <div class="paragraph" style="text-align:center;"><font size="2">Connect with <a href="https://www.facebook.com/thedigitalbyte" target="_blank" title="">Digital Byte on facebook</a> to get updates.</font></div>  <div><div style="height: 20px; overflow: hidden; width: 100%;"></div> <hr class="styled-hr" style="width:100%;"></hr> <div style="height: 20px; overflow: hidden; width: 100%;"></div></div>]]></content:encoded></item></channel></rss>