title: Microcode on Time Processing Unit (TPU)
body: <p>I read about microcodes, and tried to understand what it means. But, I had a hard time understanding it. Can someone please clarify some of the confusion that I have?</p>
  
  <p>Apparently, microcode is a built-in code, sitting on a ROM that performs hardware level instruction implementation of machine code at hardware circuitary level. Machine language operates at the hardware abstraction’s upper layer, but Microcode works at the low-level circuit-based operations.</p>
  
  <p>But what does that mean? Does it mean that every CPU MUST have a Microcode embedded in it, on some sort of flash or ROM, or else the machine code will not be able to get translated in CPU?</p>
  
  <p>But shouldn't Microcode be an application specific code? How can it be sitting there knowing what to do?
  For example, let's say that one application moves the value of Register 1 (R1) into Register 2.
  But I have a second application that takes R1 and mutiply it by 2, and then move it to R2.</p>
  
  <p>So, does this mean that my two applications have two different Microcode?</p>
  
  <p>Also, Freescale makes bunch of processors with something called eTPU (Time Processing Unit)</p>
  
  <p><a href="http://www.ashware.com/etpu-tpu.htm" rel="nofollow">http://www.ashware.com/etpu-tpu.htm</a></p>
  
  <p>But, I am really not sure what that means. It says that there are 64 total channels in eTPU. But, what is the definition of channel? Is it referring to a single I/O pin? The example they have in the above artcile is little confusing to me, can someone please give a more clear example of how we would take advantage of writing a custom Microcode using eTPU?</p>
  
  <p>Thanks, 
  --Rudy  </p>