3 Replies Latest reply on Sep 22, 2011 1:40 AM by bkoenig

    missing independency of voltage domains

    bkoenig

      As far as I understood the voltage domains of the SCC allow to set different voltage for six groups each consisting of eight cores (or four tiles). My problem is that if I change the voltage of a domain it seems to change the voltage for all domains.

       

      I clocked all tiles with 100 MHz for these experiements. In order to set the voltage I write a specific value to the VRC register (0xfb000000).

       

      For example if I write 0x000104d0 which means 1.3V at voltage domain 4 then the power consumption grows up to 24.2 W.

      Then I write 0x00010360 which means 0.6V at voltage domain 3. The power consumption goes down to 21.3 W.

       

      At this point I expect that there are at least two unequally configured voltage domains and subsequent writes of the same values should not change the power consumption at all. But if I write 0x000104d0 to the VRC register again then the power consumptions grows to 24.2 W and if I write 0x00010360 it goes down to 21.3 W again.

       

      It seems like that there are no independent voltage domains.

       

      Did I miss anything?

       

      Best regards

      Björn

        • 1. Re: missing independency of voltage domains
          bkoenig

          I tried to reproduce this issue with the rcce library, in particular with rccerun and apps/STENCIL/FV. I had no success. The tool changes the frequency successfully, but both cores of the involved tile lock up as soon as it tries to change the voltage although it is considered to be safe. The cores remain unreachable (No route to host) until I reset the SCC completely. I tried this several times with different tiles. No luck at all.

           

          bkoenig@marc029:/shared/bkoenig$ rccerun -nue 1 -f hosts/rck08 rcce/apps/STENCIL/FV 10
          pssh -h PSSH_HOST_FILE.14194 -t -1 -p 1 /shared/bkoenig/mpb.14194 < /dev/null
          [1] 08:51:03 [SUCCESS] rck08
          pssh -h PSSH_HOST_FILE.14194 -t -1 -P -p 1 /shared/bkoenig/rcce/apps/STENCIL/FV 1 0.533 08 10 < /dev/null
          rck08: UE 0, Core ID 8; size of V dom 2 is 1, size of F dom 4 is 1
          rck08: UE 0 trying to write VID word 10770 (level 0, V 0.700000) to address 97f0d000
          rck08: Requested fdiv: 10, actual fdiv, vlevel: 10, 0
          rck08: UE 0 writes VID word again
          UE 0 at voltage level 0, frequency divider 10
          Clock divider for tile 0 is 3
          Clock divider for tile 1 is 3
          Clock divider for tile 2 is 3
          Clock divider for tile 3 is 3
          Clock divider for tile 4 is 10
          Clock divider for tile 5 is 10
          Clock divider for tile 6 is 3
          Clock divider for tile 7 is 3
          Clock divider for tile 8 is 3
          Clock divider for tile 9 is 3
          Clock divider for tile 10 is 10
          Clock divider for tile 11 is 10
          Clock divider for tile 12 is 3
          Clock divider for tile 13 is 3
          Clock divider for tile 14 is 3
          Clock divider for tile 15 is 3
          Clock divider for tile 16 is 3
          Clock divider for tile 17 is 3
          Clock divider for tile 18 is 3
          Clock divider for tile 19 is 3
          Clock divider for tile 20 is 3
          Clock divider for tile 21 is 3
          Clock divider for tile 22 is 3

          Clock divider for tile 23 is 3
          [1] 08:51:04 [SUCCESS] rck08

           

          Works so far.

           

          bkoenig@marc029:/shared/bkoenig$ rccerun -nue 1 -f hosts/rck08 rcce/apps/STENCIL/FV 3
          pssh -h PSSH_HOST_FILE.14226 -t -1 -p 1 /shared/bkoenig/mpb.14226 < /dev/null
          [1] 08:51:16 [SUCCESS] rck08
          pssh -h PSSH_HOST_FILE.14226 -t -1 -P -p 1 /shared/bkoenig/rcce/apps/STENCIL/FV 1 0.533 08 3 < /dev/null
          rck08: UE 0, Core ID 8; size of V dom 2 is 1, size of F dom 4 is 1

          --- locked up here ---

          ^C[1] 08:51:41 [FAILURE] rck08 Interrupted
          bkoenig@marc029:/shared/bkoenig$ ssh root@rck08
          ssh: connect to host rck08 port 22: No route to host

          • 2. Re: missing independency of voltage domains
            tedk

            Here's what I see. I don't think I'm seeing anything anomalous. So I guess we should compare our methods in more detail.

             

            My intial condition is as follows. VCC3 and VCC4 are at 100 MHz (whcih I set with RCCE_Fdiv.c, not RCCE_FV.c). I wanted to use RCCE_set_frequency_divider() not RCCE_iset_power().

             

            Here’s my initial condition. SCC domains 3 and 4 are at 100 MHz

            Tertiary supplies: <== This is read with sccBmc status in the sccGui

              OPVR VCC0: 1.0968 V

              OPVR VCC1: 1.0959 V

              OPVR VCC2: 1.0906 V

              OPVR VCC3: 1.0958 V

              OPVR VCC4: 1.1131 V

              OPVR VCC5: 1.0969 V

              OPVR VCC7: 1.0952 V

            27.5 … 27.8 <== power read with sccPerf, seemed to fluctuate.

             

            GCBCFG   = 0x0380eff0  00 <== indicates 100 MHz on tile 00

            GCBCFG   = 0x0380eff0  01

            GCBCFG   = 0x00a8e2f0  02 <== indicates 533 MHz on tile 02

            GCBCFG   = 0x00a8e2f0  03

            GCBCFG   = 0x00a8e2f0  04

            GCBCFG   = 0x00a8e2f0  05

             

            GCBCFG   = 0x0380eff0  10

            GCBCFG   = 0x0380eff0  11

            GCBCFG   = 0x00a8e2f0  12

            GCBCFG   = 0x00a8e2f0  13

            GCBCFG   = 0x00a8e2f0  14

            GCBCFG   = 0x00a8e2f0  15

             

            GCBCFG   = 0x00a8e2f0  20

            GCBCFG   = 0x00a8e2f0  21

            GCBCFG   = 0x00a8e2f0  22

            GCBCFG   = 0x00a8e2f0  23

            GCBCFG   = 0x0380eff0  24

            GCBCFG   = 0x0380eff0  25

             

            GCBCFG   = 0x00a8e2f0  30

            GCBCFG   = 0x00a8e2f0  31

            GCBCFG   = 0x00a8e2f0  32

            GCBCFG   = 0x00a8e2f0  33

            GCBCFG   = 0x0380eff0  34

            GCBCFG   = 0x0380eff0  35

             

            Then I set VCC4 to 1.3 and read power of 29.442 (an increase which is good).

             

            Then I set VCC3 to 0.7 (the RCCE internal table was updated a while back to start at 0.7 and not 0.6) and read power of 28.168 ( a decrease which is good).

             

            Then I set VCC4 to 1.3 again. That's what it was anyway. I read power of 28.461.

            Then I set VCC3 to 0.7 again. I read power of 28.134.

             

            Then set VCC4 to 1.3

            Tertiary supplies:

              OPVR VCC0: 1.0977 V

              OPVR VCC1: 1.0970 V

              OPVR VCC2: 1.0997 V

              OPVR VCC3: 1.0971 V

              OPVR VCC4: 1.2903 V

              OPVR VCC5: 1.1022 V

              OPVR VCC7: 1.1013 V

            29.442

             

            Then set VCC3 to 0.7

            Tertiary supplies:

              OPVR VCC0: 1.0902 V

              OPVR VCC1: 1.0889 V

              OPVR VCC2: 1.0941 V

              OPVR VCC3: 0.7482 V

              OPVR VCC4: 1.2884 V

              OPVR VCC5: 1.1000 V

              OPVR VCC7: 1.0992 V

            28.168

             

            Then, set VCC4 to 1.3 (which is what it was)

            Tertiary supplies:

              OPVR VCC0: 1.0900 V

              OPVR VCC1: 1.0886 V

              OPVR VCC2: 1.0941 V

              OPVR VCC3: 0.7482 V

              OPVR VCC4: 1.2888 V

              OPVR VCC5: 1.1003 V

              OPVR VCC7: 1.0991 V

            28.461

             

            Then, set VCC3 to 0.7 which is what it was.

             

             

            Tertiary supplies:

              OPVR VCC0: 1.0901 V

              OPVR VCC1: 1.0886 V

              OPVR VCC2: 1.0941 V

              OPVR VCC3: 0.7480 V

              OPVR VCC4: 1.2885 V

              OPVR VCC5: 1.1002 V

              OPVR VCC7: 1.0992 V

            28.134

            I set the voltages as described in http://communities.intel.com/docs/DOC-19003 .. "How to Set SCC Voltages Directly." The method is essentially as below  (more detail in the link above).

             

            MappedAddr  = (t_vcharp) mmap(NULL, PAGE_SIZE, PROT_WRITE|PROT_READ, MAP_SHARED, NCMDeviceFD, ConfigAddr);


            RPC_virtual_address = (t_vintp)MappedAddr;
            // to change voltage to 1.3 in SCC domain 3
            *RPC_virtual_address = 0x103d0;


            I haven't yet looked at the hang in your next post.

            1 of 1 people found this helpful
            • 3. Re: missing independency of voltage domains
              bkoenig

              With the information that you have provided I found out that I actually did not change the voltage of the domains, but rather only the voltage of domain 0. Finally I found a bug in my code. If I assumed that I wrote 0x10470 then I actually wrote 0x70, because of a wrong pointer type. Now it works.

               

              Thanks for your help and I'm sorry for inconvenience.

               

              Björn