-4
$\begingroup$

What is Architecture, microarchitecture and ISA in processor. How do they relate to each other and what is the difference between them.

Elucidate their differences with examples so that it is clarified.

Also, clarify, do the word computer architecture and processor architecture mean the same thing?

$\endgroup$
  • $\begingroup$ Did your teacher make these spelling mistakes, or did you make them when you asked your homework question? $\endgroup$ – gnasher729 Mar 26 '17 at 12:20
  • $\begingroup$ @paul My question is more exhaustive. $\endgroup$ – Suraj tiwari Mar 26 '17 at 18:56
  • 1
    $\begingroup$ Have you tried searching or reading a good computer architecture book? Once you've done that, let us know where you've got stuck, more than happy to help. $\endgroup$ – Isu Mar 27 '17 at 8:02
  • 1
    $\begingroup$ Surajtiwari, could you be clearer about what is missing in the answer referenced by @PaulA.Clayton? (And note that you have to be careful with definitions, they are rarely universal. For instance, I'm pretty sure that some are using computer architecture and processor architecture as synonymous, while others introduce a difference of meaning; I'd not even be surprised if the same person is using them sometimes as synonymous, sometimes with different meanings depending on the context. Your question sound like a test one, in that case, the definition of your professor is the one to be used) $\endgroup$ – AProgrammer Mar 27 '17 at 12:24
  • $\begingroup$ @ Aprogrammer my professors do not give any definition on ISA, microarchitecture and computer Architecture; they give lectures on economics, Accounts, business studies etc., as I am doing b.com. (hons.). And I designed this question myself thinking that I will get to know more than what I already know. well, It's not a 'test' question :) $\endgroup$ – Suraj tiwari Jun 1 '17 at 11:57
-4
$\begingroup$

There are three architectures in computer science that relate to the computer hardware, CPU :

ISA

ISA (instruction set architecture) is the set of all instruction that a given cpu has and accordingly, is able to understand. Let's assume a cpu has only five instruction ADD, MULT, WRITE, LOAD, OUT. Then this processor can do only these five things (i.e., addition, multiplication of two or more numbers and writing (to RAM), Loading (reading and getting data and instructions stored in your hdd to RAM and then on register) , and outputting the result onto the monitor.

It is the ISA that is implemented by microarchitecture of a given cpu. If you have less instructions in your ISA then you need less components (transistors, capacitors etc.) in designing the microarchitecture.

[Note: You can easily counteract me with the following: Snapdragon 835 follows 'ARM RISC ISA' but it has 3 billion transistors. Then, i will elaborate on this as: snapdragon employs 8 core, four of them are semi-custom core kryo 280 (probably, based on the A73 core) and A73 is a big core which needs more die area and transistors, moreover, snapdragon 835 is not meant for mid-range processor, it is the top-of-the-line processor and is designed, keeping in view, of the technologies such as VR (virtual reality), so its extra (higher) transistors are for extra performance, Moreover, today's processor are not completely RISC or CISC, they incorporate the element of both i.e., ARM ISA is not a true RISC ISA and intel CISC is not a true CISC ISA].

All the instructions in ISA are in binary form and is supported by a accompanying (associated) hardware. For example, in intel, all instructions in ISA are in binary form and to implement that one of several instructions in the ISA, x86 assembly language is used. X86 assembly language produces object code for that x86 instruction, and assembler and linker translates it to machine language, which is then executed by the intel cpu directly. And all programming languages (like c++) is designed according to the ISA and Microarchitecture of a particular processor. Your cpu manufacturer (intel, AMD) or designer (ARM) provides information as to what instructions are supported by a particular processor. You need not worry much about ISA (if you are a casual programmer) because c++ compiler (or any third generation or fourth gen programming language and up compilers) act as translator i.e., translate source code (code written by the user) to assembly language which is again translated to machine language by the assembler.

[Note: Not all compilers (interpreters) translate high-level language to assembly, e.g. Java compiler translates java code to java bytecode (a code which JVM understands) which is then converted to machine language by JVM (java virtual machine) and then executed by the processor, Moreover, some compilers (interpreters) translate high-level language directly to machine language.]

You just need to learn the c++ or other programming language, However, if you are a serious programmer or a professional, you do need to take into consideration about addition of new instructions in new generation processors, because it will give you more performance or power reduction or both. Moreover, if there is addition of new instructions in a given ISA of a particular processor then to support that instruction, a new compiler has to be made which must contain that instruction [Binary or assembly instruction {depending on the type of compiler (interperter) } ] in its database and it’s equivalent high-level instruction for a given programming language (c++, c etc.) that you will use. You can’t make use of that new instruction until the compiler of a given third gen. and up programming language has a support for that instruction (because you will not be able to compile that particular instruction, because it does not understand that).

Role of the ISA-

Any program that you create in any programming language (be it c, c++, java ) has to follow the ISA of a given processor. For example, if there is no instruction in the ISA of a given processor to ‘display output in the monitor’ then you will not be able to display anything on to the monitor, Likewise, if there is no instruction that is supposed to load and write something to your RAM, then you will not be able to do both operations i.e., loading and writing of instructions and data to your RAM.

If a program is designed according to a particular ISA then it can run on two or more different processor having the same ISA i.e., if a program is designed for x64-x86 cpu then it will run on both intel and AMD CPU because they incorporate the same ISA (Note: A 64 bit program will only run on 64 bit processor and not on 32 bit processor even if they have the same ISA as 64 bit processor but not vice versa i.e., a 32 bit program can run on x64 processor because cpu designers provide the compatibility for that).

Examples of ISA are- intel CISC (complex instruction set architecture), ARM RISC ( reduced instruction set architecture)

Microarchitecture

Microarchitecture refers to set of techniques in which a given ISA is implemented. It includes decisions and choices as to how many cores you will have, choice of cache type, size, and their design, pipelinine stages and width, microcode, ILP (instruction level parallellism), buses type (PCI, PCIE etc.), whether to have in-order execution or out-of-order execution (if cpu designer chooses out-of-order execution what will be the depth of out-of-order execution engine), whether to have 'speculative execution'.

It is the ISA that is implemented by microarchitecture of a given cpu. If you have less instructions in your ISA then you need less components (transistors, capacitors etc.) in designing the microarchitecture. Several studies have shown that microarchitecture has a greater importance than ISA i.e., it doesn't matter much if your ISA is of cisc or risc type but it does matter how well your microarchitecture is designed and optimised. what this means is that a well-designed microarchitecture can bring you more performance and power efficiency than the choice of the type of ISA.

Examples of microarchitecture are -Skylake, kabylake, ARM v7, ARMv8

Computer Architecture

It is a collective term that includes ISA, microarchitecture, system design ( system design includes all hardware components in the system, including data processors aside from the CPU, such as the graphics processing unit and direct memory access, on-board or external memory controller , and should you add some other components like integated GPU, Northbridge chip onto the same silicon die chip, whether, northbridge will be having only memory controller (As in the case of AMD, that's why 'AMD cpu compatible' motherboards have Northbridge chipset because in Amd cpu there is no interface for data transfer with southbridge chip) or memory controller + interface for data transfer with south bridge chipset ( as in the case of intel and because of this they do not require 'external' northbridge chip built onto the motherboard) and so on.

It also includes data paths (as mentioned above) and miscellaneous things like multiprocessing and virtualization). In short, computer architecture refers to how a computer system is designed and what technologies it is compatible with.

Examples of computer architecture are -Von neumann architecture, Harvard Architecture

Computer architecture and processor architecture do not mean the same thing. When someone strictly says 'computer architecture' then he is referring to the last one (in this answer) and if someone says 'processor architecture' or 'cpu architecture' (whether by ignorance or laziness), he could mean any of the above. When someone says just 'architecture' (in short form) he could also mean any of the above three, you have to judge it by the context. For example, if someone is talking about instructions and says risc or cisc architecture, you can easily see that he is talking about 'ISA' and if there is no use of words like RISC, CISC, instructions, then surely he is talking about 'Microarchitecture'. And if someone is talking about architecture and saying words like ISA (or is saying CISC, RISC), microarchitecture, system design and mixing up all these things and it is becoming too difficult for you to understand, then, for sure, he is referring to the computer architecture.

SOURCE: https://www.techopedia.com/definition/26757/computer-architecture

$\endgroup$
  • 2
    $\begingroup$ Parts of this answer are taken from other sources. Please clearly indicate what you are quoting and properly cite the author. $\endgroup$ – Gilles 'SO- stop being evil' Apr 28 '17 at 10:15
  • 1
    $\begingroup$ @DavidRicherby No, I'd noticed that. I'm referring to some of the parts of this answer which have been on the web for at least a couple of years. $\endgroup$ – Gilles 'SO- stop being evil' Apr 28 '17 at 10:35
  • 2
    $\begingroup$ I find this answer confusing, and with far too many underlying misconceptions, and even patently false statements ("You can’t use [a new] assembly instruction until a given compiler support that."). $\endgroup$ – AProgrammer Apr 28 '17 at 14:00
  • 2
    $\begingroup$ There are errors in about any paragraph. I don't have time to list them. If I had that time, I'd write an answer of my own; but I still don't know what is missing from the one pointed to in @PaulAClayton 's comment. $\endgroup$ – AProgrammer Apr 28 '17 at 15:25
  • 2
    $\begingroup$ I notice you've made more than 20 edits to this question. Most of them are very small changes that don't affect the content. We prefer that you not do that, as it 'bumps' the question to the top of the front page. I do appreciate that you want to improve your answer. However, making many small changes is discouraged; we'd prefer that you batch your changes. Also, if you want this answer to continue to exist, you need to address the feedback from Gilles and follow our guidelines regarding attribution. $\endgroup$ – D.W. May 1 '17 at 19:18

Not the answer you're looking for? Browse other questions tagged or ask your own question.