On Wed, Dec 07, 2016 at 04:00:07PM +0100, Thomas Monjalon wrote: > 2016-12-07 04:54, Jerin Jacob: > > On Tue, Dec 06, 2016 at 02:41:01PM -0800, Thomas Monjalon wrote: > > > 2016-12-07 03:35, Jerin Jacob: > > > > On Tue, Dec 06, 2016 at 10:42:51PM +0100, Thomas Monjalon wrote: > > > > > 2016-12-07 02:48, Jerin Jacob: > > > > > > On Tue, Dec 06, 2016 at 09:29:25PM +0100, Thomas Monjalon wrote: > > > > > > > 2016-12-06 18:32, zbigniew.bo...@caviumnetworks.com: > > > > > > > > From: Zbigniew Bodek <zbigniew.bo...@caviumnetworks.com> > > > > > > > > > > > > > > > > This patch adds core low-level crypto operations > > > > > > > > for ARMv8 processors. The assembly code is a base > > > > > > > > for an optimized PMD and is currently excluded > > > > > > > > from the build. > > > > > > > > > > > > > > It's a bit sad that you cannot achieve the same performance with > > > > > > > C code and a good compiler. > > > > > > > Have you tried it? How much is the difference? > > > > > > > > > > > > Like AES-NI on IA side(exposed as separate PMD in dpdk), > > > > > > armv8 has special dedicated instructions for crypto operation using > > > > > > SIMD. > > > > > > This patch is using the "dedicated" armv8 crypto instructions and > > > > > > SIMD > > > > > > operation to achieve better performance. > > > > > > > > > > It does not justify to have all the code in asm. > > > > > > > > Why ? if we can have separate dpdk pmd for AES-NI on IA . Why not for > > > > ARM? > > > > > > Jerin, you or me is not understanding the other. > > > It is perfectly fine to have a separate PMD. > > > I am just talking about the language C vs ASM. > > > > Hmm. Both are bit connected topic :-) > > > > If you check the AES-NI PMD installation guide, We need to download the > > "ASM" optimized AES-NI library and build with yasm. > > We all uses fine grained ASM code such work. > > So AES-NI case those are still ASM code but reside in some other > > library. > > Yes > > > http://dpdk.org/doc/guides/cryptodevs/aesni_mb.html(Check Installation > > section) > > https://downloadcenter.intel.com/download/22972 > > > > Even linux kernel use, hardcore ASM for crypto work. > > https://github.com/torvalds/linux/blob/master/arch/arm/crypto/aes-ce-core.S > > Yes > > > > > > > We had compared with openssl implementation.Here is the performance > > > > > > improvement for chained crypto operations case WRT openssl pmd > > > > > > > > > > > > Buffer > > > > > > Size(B) OPS(M) Throughput(Gbps) > > > > > > 64 729 % 742 % > > > > > > 128 577 % 592 % > > > > > > 256 483 % 476 % > > > > > > 512 336 % 351 % > > > > > > 768 300 % 286 % > > > > > > 1024 263 % 250 % > > > > > > 1280 225 % 229 % > > > > > > 1536 214 % 213 % > > > > > > 1792 186 % 203 % > > > > > > 2048 200 % 193 % > > > > > > > > > > OK but what is the performance difference between this asm code > > > > > and a C equivalent? > > > > > > > > Do you you want compare against the scalar version of C code? its not > > > > even worth to think about it. The vector version will use > > > > dedicated armv8 instruction for crypto so its not portable anyway. > > > > We would like to asm code so that we can have better control on what we > > > > do > > > > and we cant rely compiler for that. > > > > > > No I'm talking about comparing a PMD written in C vs this one in ASM. > > > > Only fast stuff written in ASM. Remaining pmd is written in C. > > Look "crypto/armv8: add PMD optimized for ARMv8 processors" > > > > > It"s just harder to read ASM. Most of DPDK code is in C. > > > And only some small functions are written in ASM. > > > The vector instructions use some C intrinsics. > > > Do you mean that the instructions that you are using have no intrinsics > > > equivalent? Nobody made it into GCC? > > > > There is intrinsic equivalent for crypto but that will work only on > > armv8. If we start using the arch specific intrinsic then it better to > > plain ASM code, it is clean and we all do similar scheme for core crypto > > work(like AES-NI library, linux etc) > > > > We did a lot of effort to make clean armv8 ASM code _optimized_ for DPDK > > workload. > > Just because someone doesn't familiar with armv8 Assembly its not fair to > > say write it in C. > > I'm just saying it is sad, as it is sad for AES-NI or Linux code. > Please read again my questions: > Have you tried it? How much is the difference?
We haven't tried due to following reasons, 1) It is a norm in the industry to write such things in ASM.So we have to do it anyway. 2) It really takes a lot of R&D cycles first to write it in C and then ASM. So skipped the R&D part and moved to ASM directly as we need to write in ASM anyway. > I'm not saying it should not enter in DPDK, I'm just asking some basic > questions to better understand the motivations and the status of ARM crypto > in general. OK > You did not answer for comparing with a C implementation, so I guess you > have implemented it in ASM without even trying to do it in C. > The conclusion: we will never know what is the real gain of coding this in > ASM.