title: What is instruction set architecture?
body: <p>I'm reading <code>Computer Organization and Design, Fifth Edition by Patterson</code> and I'm confused about a few sentences:</p>
  
  <p>Mainly, what is ISA (instruction set architecture)?</p>
  
  <p>Here are some sentences I am having trouble rectifying:</p>
  
  <blockquote>
    <p>Maintaining the instruction set architecture as a constant enables many implementations of that architecture—presumably varying in cost and performance—to run identical software.</p>
  </blockquote>
  
  <p>and</p>
  
  <blockquote>
    <p>The term clock cycles per instruction, which is the average number of clock cycles each instruction takes to execute, is often abbreviated as CPI. Since different instructions may take different amounts of time depending on what they do, CPI is an average of all the instructions executed in the program. CPI provides one way of comparing two different implementations of the same instruction set architecture, since the number of instructions executed for a program will, of course, be the same.</p>
  </blockquote>
  
  <p>What is an implementation of ISA?</p>
  
  <p>My book's definition:</p>
  
  <p>My book's definition seems lacking... or at least I don't understand what i means:</p>
  
  <blockquote>
    <p>the instruction set architecture, or simply architecture, of a computer. The instruction set architecture includes anything programmers need to know to make a binary machine language program work correctly, including instructions, I/O devices, and so on. Typically, the operating system will encapsulate the details of doing I/O, allocating memory, and other low-level system functions so that application programmers do not need to worry about such details. The combination of the basic instruction set and the operating system interface provided for application programmers is called the application binary interface (ABI).</p>
  </blockquote>
  
  <p>also:</p>
  
  <blockquote>
    <p>the instruction set architecture—the interface between the hardware and low-level software. This abstract interface enables many implementations of varying cost and performance to run identical software.</p>
  </blockquote>
  
  <p>So is ISA some kind of program that translates software into machine level instruction like turning on and off switches? What is ABI?</p>