[Beignet] [PATCH] Pad instruction stream with 8 nops;
Zhigang Gong
zhigang.gong at linux.intel.com
Wed Jun 5 19:58:13 PDT 2013
Thanks for the explaintation. Just pushed the patch.
On Thu, Jun 06, 2013 at 02:07:56AM +0000, Zou, Nanhai wrote:
> No performance impact.
> The program will end at the EOT bit. The next 8 instructions will be prefetched but not executed.
>
>
> -----Original Message-----
> From: beignet-bounces+nanhai.zou=intel.com at lists.freedesktop.org [mailto:beignet-bounces+nanhai.zou=intel.com at lists.freedesktop.org] On Behalf Of Zhigang Gong
> Sent: Wednesday, June 05, 2013 5:01 PM
> To: Zou, Nanhai
> Cc: beignet at lists.freedesktop.org
> Subject: Re: [Beignet] [PATCH] Pad instruction stream with 8 nops;
>
> In general, this patch looks good to me. The only thing I'm not sure is that whether this brings any performance side effect. It will add 8 nops after the EOT send message as below. Will those 8 nop instructions be executed or they will be ignored?
>
> send(8) null g0<8,8,1>UD
> thread_spawnerunsupported target 7 mlen 1 rlen 0 { align1 WE_normal 1Q EOT };
> nop ;
> nop ;
> nop ;
> nop ;
> nop ;
> nop ;
> nop ;
> nop ;
>
> On Wed, Jun 05, 2013 at 09:09:57AM +0800, Zou Nan hai wrote:
> > According to Bspec, EU may access 8 instrunctions beyond the
> > kernel program because of prefetch.
> > Pad the instruction stream with 8 nop to avoid access into an
> > invalide page.
> >
> > Signed-off-by: Zou Nanhai <nanhai.zou at intel.com>
> > ---
> > backend/src/backend/gen_context.cpp | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/backend/src/backend/gen_context.cpp
> > b/backend/src/backend/gen_context.cpp
> > index 18f6c11..b9c0392 100644
> > --- a/backend/src/backend/gen_context.cpp
> > +++ b/backend/src/backend/gen_context.cpp
> > @@ -72,6 +72,10 @@ namespace gbe
> > }
> > p->pop();
> > }
> > + /* per spec, pad the instruction stream with 8 nop to avoid
> > + instruction prefetcher prefetch into an invalide page */
> > + for(int i = 0; i < 8; i++)
> > + p->NOP();
> > }
> >
> > void GenContext::patchBranches(void) {
> > --
> > 1.7.9.5
> >
> > _______________________________________________
> > Beignet mailing list
> > Beignet at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/beignet
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list