2014-01-14 1 views
1

제가 알고있는 프로그램은 매우 특정한 하드웨어에서만 실행되기 때문에 SSE4.2 명령어 세트에서 제공하는 crc32를 사용하기 시작했지만 지금은 다른 목적으로 crc16이 필요합니다. SSC의 crc32와 같은 성능으로 crc16을주기 위해 하드웨어를 감추는 방법이 있습니까?CRC16을 효율적으로 구현합니다.

감사

답변

1

당신이 PCLMULQDQ 명령이있는 경우, 빠른 CRC를 만들기 위해 그것을 사용할 수 있습니다. crc32 명령만큼 빠르지는 않지만.

또는 가난한 사람의 검사 값은 crc32 결과의 하위 16 비트 일 수 있습니다.

+0

crc32의 전반부를 얼마나 약하게 사용합니까? 나는 crc가 균일 한 해시 함수가 아니라는 것을 알고 있으므로 그렇게하는 것이 최적이 아니다. 편집 : 아마도 xor'ing 두 반쪽 더 균일 한 결과를 줄 것이라고? – Afiefh

+1

응용 프로그램에 따라 다릅니다. crc32의 절반은 비트 플립의 아주 작은 수를 탐지하려고 시도하는 경우 crc16보다 약합니다. 오류 소스가 더 큰 영향을 주면 둘은 대략 동일합니다. 이 경우 소스 비트가 이미 하반부에서 잘 혼합되어 있으므로 두 반쪽을 xoring하면 아무런 차이가 없습니다. 비트 오류 수가 적은 경우 xoring이 도움이 될 수 있습니다. 나는 잘 모르겠다. –

관련 문제