9 Replies Latest reply on Sep 27, 2016 2:43 PM by Intel Corporation

    RAM to RAM DMA

    Ficus

      Does any Intel Gladden Ivy Bridge supports RAM to RAM DMA?

      How I can determine support of that technology by my CPU from Linux OS?

        • 1. Re: RAM to RAM DMA
          Evgenii_I

          I have the exact the same question. This is a very poorly covered in available documentation.

          • 2. Re: RAM to RAM DMA
            Ronin

            Hi,

             

            I think found something that can help you determine if it does or not support : linux - How to transfer data via DMA from RAM to RAM? - Stack Overflow

            From what I know all Intel CPUs should support it as is a very common operation.

            • 3. Re: RAM to RAM DMA
              Intel Corporation
              This message was posted on behalf of Intel Corporation

              Hello, All: 

               

              Ronin thank you for your input.

               

              Ficus, could you please provide me with your processor model?

               

              Regards,

              Amy.

              • 4. Re: RAM to RAM DMA
                Intel Corporation
                This message was posted on behalf of Intel Corporation

                Hello, Ficus:

                 

                I just wanted to check on your thread; did the previous input solve your inquiry? If you still require assistance please let me know.

                 

                Regards,

                Amy.

                • 5. Re: RAM to RAM DMA
                  Ficus

                  Hello,

                   

                  No problem didn't solved. It's CPUINFO output

                   

                  processor   : 0
                  vendor_id   : GenuineIntel
                  cpu family  : 6
                  model       : 86
                  model name  : Intel(R) Xeon(R) CPU D-1527 @ 2.20GHz
                  stepping    : 3
                  microcode   : 0x700000c
                  cpu MHz     : 2194.870
                  cache size  : 6144 KB
                  physical id : 0
                  siblings    : 8
                  core id     : 0
                  cpu cores   : 4
                  apicid      : 0

                  initial apicid  : 0

                  fpu         : yes

                  fpu_exception   : yes

                  cpuid level : 20
                  wp          : yes
                  flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov                                                                pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdt                                                               scp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc ap                                                               erfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma                                                                cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes                                                                xsave avx f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts d                                                               therm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 sm                                                               ep bmi2 erms invpcid rtm rdseed adx smap
                  bogomips    : 4389.74
                  clflush size: 64

                  cache_alignment : 64

                  address sizes   : 46 bits physical, 48 bits virtual

                  power management:

                   

                  processor   : 1
                  vendor_id   : GenuineIntel
                  cpu family  : 6
                  model       : 86
                  model name  : Intel(R) Xeon(R) CPU D-1527 @ 2.20GHz
                  stepping    : 3
                  microcode   : 0x700000c
                  cpu MHz     : 2194.870
                  cache size  : 6144 KB
                  physical id : 0
                  siblings    : 8
                  core id     : 1
                  cpu cores   : 4
                  apicid      : 2

                  initial apicid  : 2

                  fpu         : yes

                  fpu_exception   : yes

                  cpuid level : 20
                  wp          : yes
                  flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov                                                                pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdt                                                               scp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc ap                                                               erfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma                                                                cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes                                                                xsave avx f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts d                                                               therm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 sm                                                               ep bmi2 erms invpcid rtm rdseed adx smap
                  bogomips    : 4389.74
                  clflush size: 64

                  cache_alignment : 64

                  address sizes   : 46 bits physical, 48 bits virtual

                  power management:

                   

                  processor   : 2
                  vendor_id   : GenuineIntel
                  cpu family  : 6
                  model       : 86
                  model name  : Intel(R) Xeon(R) CPU D-1527 @ 2.20GHz
                  stepping    : 3
                  microcode   : 0x700000c
                  cpu MHz     : 2194.870
                  cache size  : 6144 KB
                  physical id : 0
                  siblings    : 8
                  core id     : 2
                  cpu cores   : 4
                  apicid      : 4

                  initial apicid  : 4

                  fpu         : yes

                  fpu_exception   : yes

                  cpuid level : 20
                  wp          : yes
                  flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov                                                                pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdt                                                               scp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc ap                                                               erfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma                                                                cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes                                                                xsave avx f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts d                                                               therm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 sm                                                               ep bmi2 erms invpcid rtm rdseed adx smap
                  bogomips    : 4389.74
                  clflush size: 64

                  cache_alignment : 64

                  address sizes   : 46 bits physical, 48 bits virtual

                  power management:

                   

                  processor   : 3
                  vendor_id   : GenuineIntel
                  cpu family  : 6
                  model       : 86
                  model name  : Intel(R) Xeon(R) CPU D-1527 @ 2.20GHz
                  stepping    : 3
                  microcode   : 0x700000c
                  cpu MHz     : 2194.870
                  cache size  : 6144 KB
                  physical id : 0
                  siblings    : 8
                  core id     : 3
                  cpu cores   : 4
                  apicid      : 6

                  initial apicid  : 6

                  fpu         : yes

                  fpu_exception   : yes

                  cpuid level : 20
                  wp          : yes
                  flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov                                                                pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdt                                                               scp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc ap                                                               erfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma                                                                cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes                                                                xsave avx f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts d                                                               therm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 sm                                                               ep bmi2 erms invpcid rtm rdseed adx smap
                  bogomips    : 4389.74
                  clflush size: 64

                  cache_alignment : 64

                  address sizes   : 46 bits physical, 48 bits virtual

                  power management:

                   

                  ..

                  [23/09/2016 19:30:31] Sergey Nikolayenko: processor   : 4
                  vendor_id   : GenuineIntel
                  cpu family  : 6
                  model       : 86
                  model name  : Intel(R) Xeon(R) CPU D-1527 @ 2.20GHz
                  stepping    : 3
                  microcode   : 0x700000c
                  cpu MHz     : 2194.870
                  cache size  : 6144 KB
                  physical id : 0
                  siblings    : 8
                  core id     : 0
                  cpu cores   : 4
                  apicid      : 1

                  initial apicid  : 1

                  fpu         : yes

                  fpu_exception   : yes

                  cpuid level : 20
                  wp          : yes
                  flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov                                                                pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdt                                                               scp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc ap                                                               erfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma                                                                cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes                                                                xsave avx f16c rdrand .
                  • 6. Re: RAM to RAM DMA
                    Ronin
                    • 7. Re: RAM to RAM DMA
                      Ficus

                      Ronin,

                      That test didn't work, because there aren't any visible DMA channels (folder /sys/class/dma/ is empty). I don't know how to determine, it's hardware doesn't support that DMA type or driver doesn't work properly (ioatdma driver was insmoded)

                      • 8. Re: RAM to RAM DMA
                        Ronin

                        Ok, I checked why is not working and I think that they changed the kernel and each device has it's own dma channel, assigned dynamically. I think only if you have an old device that uses old dma style will show a dma channel in that directory.

                        They changed the way memory is assigned, because before, each device driver was build with some default memory allocations (assigned by the driver developer), and because of that 2 devices could end up using the same memory space and BSOD . Now the kernel takes care of that.

                        There are some benchmarks that show you the transfer speed memory to memory, and the speed is the same as you were copying something from memory or on the memory and I think that operation is done internally, using only the memory controller.

                        • 9. Re: RAM to RAM DMA
                          Intel Corporation
                          This message was posted on behalf of Intel Corporation

                          Ronin again thank you for your input, and let's hope this can help Ficus.


                          Regards,

                          Amy.