From the book Embedded Computing, it has a ISA chapter, below is the summary of “what is ISA”
- ISA helps compiler’s life easy. Hardware engineer often saving a few gates or some code, but that hurt the design of compiler
- ISA can both hide and expose key implementation details to the programmer or compiler
- Process Instruction encoding
- Exception handling
So ISA means what hardware engineer want software programmer to do. ISA standard describe how the cpu works in software programmer point of will. So I think Intel IA32 is a kind of ISA, correct me if i am wrong. If two CPUs are in same ISA family, they should share the instruction encoding, compilers and aspects of implements.
ISA is just a specification, “Microarchitecture design” is an implement of ISA. Let me give you an example, IA32 is an ISA, from a very old 80386 and latest i9 cpu, they all in same ISA, because their instructions are encoded and decoded in similar way. But they are in different microarchitecture design, because i9 provide lot of programming features in low-level programming. I think ISA is more like a philosophy of the cpu design and the microarchitecture is an actual implementation detail.