1- In chapter 8 ('Intel Core 2 and Nehalem pipeline') of his micro-architecture doc, Agner Fog said:
8.4 Micro-op fusion
The fused μop is treated as two μops by the scheduler and submitted to two different execution units, but it is treated as one μop in all other stages in the pipeline and uses only one entry in the reorder buffer.
While in 'Computer Organization and Design' RISC-V version book by Patterson and Hennessy, it says in subsection 'The Intel Core i7 920' which is Bloomfield architecture in '4.11 Real Stuff: The ARM Cortex-A53 and Intel Core i7 Pipelines'
Microfusion in the fourth step combines micro-operation pairs such as load/ALU operation and ALU operation/store and issues them to a single reservation station (where they can still issue independently), thus increasing the usage of the buffer
Does they point to same buffer? If not, what buffer does the book refer to?
2- In Agner's doc 8.4 section, it says the following two sentence block:
Instructions that have both a rip-relative address and immediate data cannot use μop fusion
Why failure exist with immediate?
2.1- Agner gives immediate failure reason with macro-op:
There is not enough space for storing both an immediate operand, the address of a memory operand, and the address of a branch target in the same ROB entry. My guess is that this is the reason why we can't have macro-op fusion with both a memory operand and an immediate operand. This may also be the reason why macro-op fusion doesn't work in 64- bit mode on Core2: 64-bit branch addresses take more space in the ROB entry.
Does this reason also results in micro-op condition when with both mem and imm?