I'd say it's the same in either case. Horizontal is just more capable by complying with more implied restrictions. In consequence one needs to think even more about each line.
@stman @brouhaha @gabrielesvelto
Well, isn't it the same way as an Assembler is specific to a CPU? And boy there are CPU's out there at least as weird as some micro code engine...
Is there? to me they are just different representation of the same. A CPU is also just a FSM - like any other real existing hardware. The usual description being procedural doesn't make a difference - in fact, just think how many different ways of programming there are which in the end will be executed by a plain CPU :)
And no. For one, having a PC is just the most common way, not the only one there is. More important, even a 'simple' instruction of a 'simple' CPU, like the 8080, does several things at once. Take SBB, SUB and CMP. These 3 instructions handle the same functions in different ways.
SBB
- takes two input values
- takes a borrow flag
- subtracts them using the borrow
- stores the result
- stores a resulting borrow
- updates flags
SUB does the same, but
- sets the borrow input to zero before subtracting
CMP again the same, but
- as well sets borrow input to zero
- does not update borrow
- does not store the result
Doesn't that sound quite like those 'micro instructions' handling different output bits / functions in parallel and in reaction to input bits?
The fact that there is a decoding stage is just a storage optimization. Kind like the Thumb instruction set of older ARM architectures was made used to compress much used instructions variants into a shorter form. Internally going thru a decoding stage to create the long form.
CPU instructions are usually nothing more than compacted representations, leaving out all the variations a wide word would have to carry without using.
Or from a total different point of view one can think of it like Japanese writing:
- There are Kanji - Boom, one symbol a whole complex meaning
- And Kana, Mora (Syllables) where usually more are needed for a word, they com even in two variations:
- Hiragana which still go along the meaning, while
- Katakana go strictly by pronunciation
- And finally Romaji.
All different levels of explicite detailing for the same thing.
@stman @Raffzahn
The micro program counter in such a system is often referred to as the ΞΌPC (or uPC), and is entirely unrelated to the macro-level PC.
It's true that the macro-level PC is a state variable of the state machine that is the ENTIRE machine, but it's not directly a state variable of the micro program control state machine.
3/