Re: [gem5-dev] Review Request 3790: x86: fixed branching computation for branch uops that only changes nupc and not npc
> On Jan. 25, 2017, 7:45 a.m., Gabe Black wrote: > > Ship It! > > Santi Galan wrote: > Let me comment on this review request to bring it to live since it seems > like it has not been applied yet. Is there anything missing in order to be > applied? > > Thanks, > Santi Galan No. I'll pull it into the repository. Thanks for pinging me on it. - Jason --- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3790/#review9314 --- On Jan. 23, 2017, 3:39 p.m., Santi Galan wrote: > > --- > This is an automatically generated e-mail. To reply, visit: > http://reviews.gem5.org/r/3790/ > --- > > (Updated Jan. 23, 2017, 3:39 p.m.) > > > Review request for Default. > > > Repository: gem5 > > > Description > --- > > Changeset 11801:80af6a1e6beb > \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- > x86: fixed branching() computation for branch uops that only changes nupc and > not npc > > When a branch micro-op belongs to a flow and the micro-op does not change the > nPC and just updates the nuPC > (like a 'rep movs' flow), `branching()` function always returns not-taken no > matter actual > micro-branch outcome. Provided fix adds to the equation nuPC attribute > checking since these kind of branch > micro-op only updates that pointer. > > This issue has been found while debugging the performance of a copy-loop > implemented with `memcopy` function. Without the fix, 'rep movss' internal > micro-branch was always predicted as not-taken causing an squash event after > every branch micro-branch execution. > > Using the provided test, branch mispredition went from *1922* without the fix > to *7*. > > > Diffs > - > > src/arch/x86/types.hh e47703369039 > > Diff: http://reviews.gem5.org/r/3790/diff/ > > > Testing > --- > > I used this command line to evaluate the performance: > > ``` > ./build/X86/gem5.opt configs/example/se.py --cpu-type=detailed --caches > --l2cache -c /path/to/binary > ``` > > This is the source code of the binary: > ``` > #include > #include "m5op.h" > > #define SIZE 15*1024 > > //arrays are cache aligned > char a [SIZE] __attribute__((aligned(0x40))); > char b [SIZE] __attribute__((aligned(0x40))); > > int main () > { > //some warmup > int i; > for (i = 0; i < SIZE; ++i) > { > a[i] = 1; > b[i] = 2; > } > > m5_reset_stats(0, 0); > memcpy(a, b, SIZE); > m5_exit(0); > > //keep compiler happy > return 0; > } > ``` > > Which was compiled with this makefile: > > ``` > GEM5_PATH=/path/to/gem5 > > binary: binary.c $(GEM5_PATH)/util/m5/m5op_x86.S > gcc -o $@ $^ -static -I$(GEM5_PATH)/util/m5 > ``` > > > Thanks, > > Santi Galan > > ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
Re: [gem5-dev] Review Request 3790: x86: fixed branching computation for branch uops that only changes nupc and not npc
> On gen. 25, 2017, 7:45 a.m., Gabe Black wrote: > > Ship It! Let me comment on this review request to bring it to live since it seems like it has not been applied yet. Is there anything missing in order to be applied? Thanks, Santi Galan - Santi --- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3790/#review9314 --- On gen. 23, 2017, 3:39 p.m., Santi Galan wrote: > > --- > This is an automatically generated e-mail. To reply, visit: > http://reviews.gem5.org/r/3790/ > --- > > (Updated gen. 23, 2017, 3:39 p.m.) > > > Review request for Default. > > > Repository: gem5 > > > Description > --- > > Changeset 11801:80af6a1e6beb > \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- > x86: fixed branching() computation for branch uops that only changes nupc and > not npc > > When a branch micro-op belongs to a flow and the micro-op does not change the > nPC and just updates the nuPC > (like a 'rep movs' flow), `branching()` function always returns not-taken no > matter actual > micro-branch outcome. Provided fix adds to the equation nuPC attribute > checking since these kind of branch > micro-op only updates that pointer. > > This issue has been found while debugging the performance of a copy-loop > implemented with `memcopy` function. Without the fix, 'rep movss' internal > micro-branch was always predicted as not-taken causing an squash event after > every branch micro-branch execution. > > Using the provided test, branch mispredition went from *1922* without the fix > to *7*. > > > Diffs > - > > src/arch/x86/types.hh e47703369039 > > Diff: http://reviews.gem5.org/r/3790/diff/ > > > Testing > --- > > I used this command line to evaluate the performance: > > ``` > ./build/X86/gem5.opt configs/example/se.py --cpu-type=detailed --caches > --l2cache -c /path/to/binary > ``` > > This is the source code of the binary: > ``` > #include > #include "m5op.h" > > #define SIZE 15*1024 > > //arrays are cache aligned > char a [SIZE] __attribute__((aligned(0x40))); > char b [SIZE] __attribute__((aligned(0x40))); > > int main () > { > //some warmup > int i; > for (i = 0; i < SIZE; ++i) > { > a[i] = 1; > b[i] = 2; > } > > m5_reset_stats(0, 0); > memcpy(a, b, SIZE); > m5_exit(0); > > //keep compiler happy > return 0; > } > ``` > > Which was compiled with this makefile: > > ``` > GEM5_PATH=/path/to/gem5 > > binary: binary.c $(GEM5_PATH)/util/m5/m5op_x86.S > gcc -o $@ $^ -static -I$(GEM5_PATH)/util/m5 > ``` > > > Thanks, > > Santi Galan > > ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
Re: [gem5-dev] Review Request 3790: x86: fixed branching computation for branch uops that only changes nupc and not npc
--- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3790/#review9314 --- Ship it! Ship It! - Gabe Black On Jan. 23, 2017, 3:39 p.m., Santi Galan wrote: > > --- > This is an automatically generated e-mail. To reply, visit: > http://reviews.gem5.org/r/3790/ > --- > > (Updated Jan. 23, 2017, 3:39 p.m.) > > > Review request for Default. > > > Repository: gem5 > > > Description > --- > > Changeset 11801:80af6a1e6beb > \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- > x86: fixed branching() computation for branch uops that only changes nupc and > not npc > > When a branch micro-op belongs to a flow and the micro-op does not change the > nPC and just updates the nuPC > (like a 'rep movs' flow), `branching()` function always returns not-taken no > matter actual > micro-branch outcome. Provided fix adds to the equation nuPC attribute > checking since these kind of branch > micro-op only updates that pointer. > > This issue has been found while debugging the performance of a copy-loop > implemented with `memcopy` function. Without the fix, 'rep movss' internal > micro-branch was always predicted as not-taken causing an squash event after > every branch micro-branch execution. > > Using the provided test, branch mispredition went from *1922* without the fix > to *7*. > > > Diffs > - > > src/arch/x86/types.hh e47703369039 > > Diff: http://reviews.gem5.org/r/3790/diff/ > > > Testing > --- > > I used this command line to evaluate the performance: > > ``` > ./build/X86/gem5.opt configs/example/se.py --cpu-type=detailed --caches > --l2cache -c /path/to/binary > ``` > > This is the source code of the binary: > ``` > #include > #include "m5op.h" > > #define SIZE 15*1024 > > //arrays are cache aligned > char a [SIZE] __attribute__((aligned(0x40))); > char b [SIZE] __attribute__((aligned(0x40))); > > int main () > { > //some warmup > int i; > for (i = 0; i < SIZE; ++i) > { > a[i] = 1; > b[i] = 2; > } > > m5_reset_stats(0, 0); > memcpy(a, b, SIZE); > m5_exit(0); > > //keep compiler happy > return 0; > } > ``` > > Which was compiled with this makefile: > > ``` > GEM5_PATH=/path/to/gem5 > > binary: binary.c $(GEM5_PATH)/util/m5/m5op_x86.S > gcc -o $@ $^ -static -I$(GEM5_PATH)/util/m5 > ``` > > > Thanks, > > Santi Galan > > ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
Re: [gem5-dev] Review Request 3790: x86: fixed branching computation for branch uops that only changes nupc and not npc
--- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3790/#review9308 --- Ship it! Ship It! - Jason Lowe-Power On Jan. 23, 2017, 3:39 p.m., Santi Galan wrote: > > --- > This is an automatically generated e-mail. To reply, visit: > http://reviews.gem5.org/r/3790/ > --- > > (Updated Jan. 23, 2017, 3:39 p.m.) > > > Review request for Default. > > > Repository: gem5 > > > Description > --- > > Changeset 11801:80af6a1e6beb > \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- > x86: fixed branching() computation for branch uops that only changes nupc and > not npc > > When a branch micro-op belongs to a flow and the micro-op does not change the > nPC and just updates the nuPC > (like a 'rep movs' flow), `branching()` function always returns not-taken no > matter actual > micro-branch outcome. Provided fix adds to the equation nuPC attribute > checking since these kind of branch > micro-op only updates that pointer. > > This issue has been found while debugging the performance of a copy-loop > implemented with `memcopy` function. Without the fix, 'rep movss' internal > micro-branch was always predicted as not-taken causing an squash event after > every branch micro-branch execution. > > Using the provided test, branch mispredition went from *1922* without the fix > to *7*. > > > Diffs > - > > src/arch/x86/types.hh e47703369039 > > Diff: http://reviews.gem5.org/r/3790/diff/ > > > Testing > --- > > I used this command line to evaluate the performance: > > ``` > ./build/X86/gem5.opt configs/example/se.py --cpu-type=detailed --caches > --l2cache -c /path/to/binary > ``` > > This is the source code of the binary: > ``` > #include > #include "m5op.h" > > #define SIZE 15*1024 > > //arrays are cache aligned > char a [SIZE] __attribute__((aligned(0x40))); > char b [SIZE] __attribute__((aligned(0x40))); > > int main () > { > //some warmup > int i; > for (i = 0; i < SIZE; ++i) > { > a[i] = 1; > b[i] = 2; > } > > m5_reset_stats(0, 0); > memcpy(a, b, SIZE); > m5_exit(0); > > //keep compiler happy > return 0; > } > ``` > > Which was compiled with this makefile: > > ``` > GEM5_PATH=/path/to/gem5 > > binary: binary.c $(GEM5_PATH)/util/m5/m5op_x86.S > gcc -o $@ $^ -static -I$(GEM5_PATH)/util/m5 > ``` > > > Thanks, > > Santi Galan > > ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
Re: [gem5-dev] Review Request 3790: x86: fixed branching computation for branch uops that only changes nupc and not npc
> On gen. 24, 2017, 8:53 a.m., Santi Galan wrote: > > Ship It! My bad, I am not familiar with the process and I thought that the "Ship it!" button would change somehow the revision state. Santi - Santi --- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3790/#review9299 --- On gen. 23, 2017, 3:39 p.m., Santi Galan wrote: > > --- > This is an automatically generated e-mail. To reply, visit: > http://reviews.gem5.org/r/3790/ > --- > > (Updated gen. 23, 2017, 3:39 p.m.) > > > Review request for Default. > > > Repository: gem5 > > > Description > --- > > Changeset 11801:80af6a1e6beb > \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- > x86: fixed branching() computation for branch uops that only changes nupc and > not npc > > When a branch micro-op belongs to a flow and the micro-op does not change the > nPC and just updates the nuPC > (like a 'rep movs' flow), `branching()` function always returns not-taken no > matter actual > micro-branch outcome. Provided fix adds to the equation nuPC attribute > checking since these kind of branch > micro-op only updates that pointer. > > This issue has been found while debugging the performance of a copy-loop > implemented with `memcopy` function. Without the fix, 'rep movss' internal > micro-branch was always predicted as not-taken causing an squash event after > every branch micro-branch execution. > > Using the provided test, branch mispredition went from *1922* without the fix > to *7*. > > > Diffs > - > > src/arch/x86/types.hh e47703369039 > > Diff: http://reviews.gem5.org/r/3790/diff/ > > > Testing > --- > > I used this command line to evaluate the performance: > > ``` > ./build/X86/gem5.opt configs/example/se.py --cpu-type=detailed --caches > --l2cache -c /path/to/binary > ``` > > This is the source code of the binary: > ``` > #include > #include "m5op.h" > > #define SIZE 15*1024 > > //arrays are cache aligned > char a [SIZE] __attribute__((aligned(0x40))); > char b [SIZE] __attribute__((aligned(0x40))); > > int main () > { > //some warmup > int i; > for (i = 0; i < SIZE; ++i) > { > a[i] = 1; > b[i] = 2; > } > > m5_reset_stats(0, 0); > memcpy(a, b, SIZE); > m5_exit(0); > > //keep compiler happy > return 0; > } > ``` > > Which was compiled with this makefile: > > ``` > GEM5_PATH=/path/to/gem5 > > binary: binary.c $(GEM5_PATH)/util/m5/m5op_x86.S > gcc -o $@ $^ -static -I$(GEM5_PATH)/util/m5 > ``` > > > Thanks, > > Santi Galan > > ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
Re: [gem5-dev] Review Request 3790: x86: fixed branching computation for branch uops that only changes nupc and not npc
--- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3790/#review9299 --- Ship it! Ship It! - Santi Galan On gen. 23, 2017, 3:39 p.m., Santi Galan wrote: > > --- > This is an automatically generated e-mail. To reply, visit: > http://reviews.gem5.org/r/3790/ > --- > > (Updated gen. 23, 2017, 3:39 p.m.) > > > Review request for Default. > > > Repository: gem5 > > > Description > --- > > Changeset 11801:80af6a1e6beb > \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- > x86: fixed branching() computation for branch uops that only changes nupc and > not npc > > When a branch micro-op belongs to a flow and the micro-op does not change the > nPC and just updates the nuPC > (like a 'rep movs' flow), `branching()` function always returns not-taken no > matter actual > micro-branch outcome. Provided fix adds to the equation nuPC attribute > checking since these kind of branch > micro-op only updates that pointer. > > This issue has been found while debugging the performance of a copy-loop > implemented with `memcopy` function. Without the fix, 'rep movss' internal > micro-branch was always predicted as not-taken causing an squash event after > every branch micro-branch execution. > > Using the provided test, branch mispredition went from *1922* without the fix > to *7*. > > > Diffs > - > > src/arch/x86/types.hh e47703369039 > > Diff: http://reviews.gem5.org/r/3790/diff/ > > > Testing > --- > > I used this command line to evaluate the performance: > > ``` > ./build/X86/gem5.opt configs/example/se.py --cpu-type=detailed --caches > --l2cache -c /path/to/binary > ``` > > This is the source code of the binary: > ``` > #include > #include "m5op.h" > > #define SIZE 15*1024 > > //arrays are cache aligned > char a [SIZE] __attribute__((aligned(0x40))); > char b [SIZE] __attribute__((aligned(0x40))); > > int main () > { > //some warmup > int i; > for (i = 0; i < SIZE; ++i) > { > a[i] = 1; > b[i] = 2; > } > > m5_reset_stats(0, 0); > memcpy(a, b, SIZE); > m5_exit(0); > > //keep compiler happy > return 0; > } > ``` > > Which was compiled with this makefile: > > ``` > GEM5_PATH=/path/to/gem5 > > binary: binary.c $(GEM5_PATH)/util/m5/m5op_x86.S > gcc -o $@ $^ -static -I$(GEM5_PATH)/util/m5 > ``` > > > Thanks, > > Santi Galan > > ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
Re: [gem5-dev] Review Request 3790: x86: fixed branching computation for branch uops that only changes nupc and not npc
--- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3790/#review9293 --- Ship it! Ship It! - Tony Gutierrez On Jan. 23, 2017, 7:39 a.m., Santi Galan wrote: > > --- > This is an automatically generated e-mail. To reply, visit: > http://reviews.gem5.org/r/3790/ > --- > > (Updated Jan. 23, 2017, 7:39 a.m.) > > > Review request for Default. > > > Repository: gem5 > > > Description > --- > > Changeset 11801:80af6a1e6beb > \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- > x86: fixed branching() computation for branch uops that only changes nupc and > not npc > > When a branch micro-op belongs to a flow and the micro-op does not change the > nPC and just updates the nuPC > (like a 'rep movs' flow), `branching()` function always returns not-taken no > matter actual > micro-branch outcome. Provided fix adds to the equation nuPC attribute > checking since these kind of branch > micro-op only updates that pointer. > > This issue has been found while debugging the performance of a copy-loop > implemented with `memcopy` function. Without the fix, 'rep movss' internal > micro-branch was always predicted as not-taken causing an squash event after > every branch micro-branch execution. > > Using the provided test, branch mispredition went from *1922* without the fix > to *7*. > > > Diffs > - > > src/arch/x86/types.hh e47703369039 > > Diff: http://reviews.gem5.org/r/3790/diff/ > > > Testing > --- > > I used this command line to evaluate the performance: > > ``` > ./build/X86/gem5.opt configs/example/se.py --cpu-type=detailed --caches > --l2cache -c /path/to/binary > ``` > > This is the source code of the binary: > ``` > #include > #include "m5op.h" > > #define SIZE 15*1024 > > //arrays are cache aligned > char a [SIZE] __attribute__((aligned(0x40))); > char b [SIZE] __attribute__((aligned(0x40))); > > int main () > { > //some warmup > int i; > for (i = 0; i < SIZE; ++i) > { > a[i] = 1; > b[i] = 2; > } > > m5_reset_stats(0, 0); > memcpy(a, b, SIZE); > m5_exit(0); > > //keep compiler happy > return 0; > } > ``` > > Which was compiled with this makefile: > > ``` > GEM5_PATH=/path/to/gem5 > > binary: binary.c $(GEM5_PATH)/util/m5/m5op_x86.S > gcc -o $@ $^ -static -I$(GEM5_PATH)/util/m5 > ``` > > > Thanks, > > Santi Galan > > ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev