issue group for pentium4

Attilio Rao attilio at freebsd.org
Fri Nov 3 23:12:02 UTC 2006


2006/11/3, ranjith kumar <ranjith_kumar_b4u at yahoo.com>:
> Hi
>   1) "Issue group" is a set of instructions which can
> be issued to different execution units at same time so
> that many execution units can be executed parallely.
>
>  Can any one tell any sourse where I can get the
> information such as which set of instructions are
> called as  an issue group(in case of pentium 4
> processor only).

I'm unsure there is public informations about that specific CPU for
issue groups. Note that these are particular important in order to
prevent pipeline flushings in some cases (ie: multiple L1 miss).

>  2) Compilers exploit such a feature by reodering
> instructions.
>  But Pentium 4 processor reoders instructions to do
> the same thing.
>  So reordering by compilers is unnessecary.
>
> Am I right????????????

No.
Instruction reordering must be helped by an ad-hoc programming of the
developers. You can manually exploit this trying to access as many
different registers you can in the same code-path (and in the same
pipeline scope).

Stupid examples:
not reordering:
mov (%esi), %eax
mov %eax, (%edi)
mov 4(%esi), %eax
mov %eax, 4(%edi)
mov 8(%esi), %eax
mov %eax, 8(%edi)
mov 12(%esi), %eax
mov %eax, 12(%edi)

good ordering:
mov (%esi), %eax
mov 4(%esi), %ebx
mov 8(%esi), %ecx
mov 12(%esi), %edx
mov %eax, (%edi)
mov %ebx, 4(%edi)
mov %ecx, 8(%edi)
mov %edx, 12(%edi)

This is what the compiler might optimize.

> 3)How many instructions  does Pentium 4 processor can
> look insatantly to reorder instructions?

As long as NetBurst's pipeline is (20 pipeline stages).

Attilio


-- 
Peace can only be achieved by understanding - A. Einstein


More information about the freebsd-ia32 mailing list