Tenho suporte ao conjunto de instruções PCLMUL?

5

Aqui estão os flags de /proc/cpuinfo :

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 rdtscp lm
constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc aperfmperf
pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid
sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida
arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid

Eu claramente tenho um sinalizador pclmulqdq , mas não tenho certeza se isso significa suporte ao conjunto de instruções PCLMUL. Como posso encontrar o que o sinalizador significa ou a que sinalizador PCLMUL corresponde?

    
por daisy 23.06.2012 / 08:15

2 respostas

4

A partir das informações disponíveis em Wikipedia e Intel , eu diria que sim.

A partir da entrada da Wikipedia:

PCLMULQDQ   Performs a carry-less multiplication of two 64-bit integers 

que corresponde ao sinalizador que você tem.

    
por 24.06.2012 / 01:53
0

Na referência do conjunto de instruções Intel 64 IA-32, nenhuma listagem é dada para uma instrução PCLMUL. No entanto, a Intel lista uma instrução PCLMULQDQ descrita a seguir:

Description

Performs a carry-less multiplication of two quadwords, selected from the first source and second source operand according to the value of the immediate byte. Bits 4 and 0 are used to select which 64-bit half of each operand to use according to Table 4-13, other bits of the immediate byte are ignored (Intel 64 IA-32 Instruction Set Reference, Volume II).

Então, quando você vê o suporte PCLMUL, assuma que é apenas uma forma abreviada de PCLMULQDQ. Em vez de usar dois registradores de 64 bits para armazenar o resultado da multiplicação de dois registradores de 64 bits, o resultado é armazenado em um registrador de 128 bits. Daí, o nome carry-less multiplation. Outras instruções usariam dois registros diferentes para armazenar o resultado e o programador de montagem teria que executar etapas extras para descobrir o resultado final para uso em seu programa. Mas com a multiplicação carry-less, o resultado é armazenado em um registro maior. Nesta instrução (PCLMULQDQ), o resultado de dois números de 64 bits multiplicados é armazenado em um registrador de 128 bits. A Instrução usa os registradores XMM de 128 bits com CPUs que possuem esses registradores para uso.

    
por 29.10.2018 / 06:07

Tags