From: jogging on
Hi,all
I have no experience in x86 assembly coding previously, but may need
to optimize code on PC.
So I begin to read the manuals doawloaded from Intel's website.

In the diagram of intel core microarchitecture, there are several
execution clusers behind
scheduler. It says several execution cluser can execute Integer ALU or
Integer SIMD ALU.
Do it means that each execution unit can execute part of ALU
instructions or each
each execution unit can execute all instructions.

Do execution units share the same register file or have their own
register file each.

Does Integer SIMD ALU contain MMX Integer SIMD ALU and SSE Integer
SIMD ALU or only
SSE Integer SIMD ALU?

Thanks
Jogging
From: nedbrek on
Hello,

"jogging" <joggingsong(a)gmail.com> wrote in message
news:03d9e589-2af5-4eb5-8e2b-64f225b57158(a)a32g2000yqm.googlegroups.com...
>
> In the diagram of intel core microarchitecture, there are several
> execution clusers behind scheduler. It says several execution cluser can
> execute Integer ALU or Integer SIMD ALU.
> Do it means that each execution unit can execute part of ALU
> instructions or each each execution unit can execute all instructions.

It's been a while since I've looked at the port layout of Core 2, but in
general:
- a given port will have a list of instructions it can execute
- the "integer execution" ports will execute all the simple instructions
(add, or, etc.) Complicated instructions will likely have one port.
- they will try to "balance" the ports (mul on one, shift on another)

> Do execution units share the same register file or have their own
> register file each.

The architected registers (E/RAX, E/RBP, etc) are all renamed inside the
machine. From your point of view, you want to cleanly specify dependencies.
Avoid partial width writes and full width reads (MOV AH=val; ADD AX+=val).
If
you are done with a partial value, insert a clear instruction (XOR reg,reg).

> Does Integer SIMD ALU contain MMX Integer SIMD ALU and SSE Integer
> SIMD ALU or only SSE Integer SIMD ALU?

It should contain both. IIRC, all the MMX functionality is subsumed into
SSE.

HTH,
Ned


From: Noob on
jogging wrote:

> I have no experience in x86 assembly coding previously, but may need
> to optimize code on PC.

You might enjoy comp.lang.asm.x86 (moderated).