2015년 5월 25일 월요일

04. NEON의 기본 개념 (작성중...)

* 위 블로그는 스터디를 정리한 것이므로 참고용으로만 사용하시길 바랍니다.

    1. NEON의 자료형


    {0, 1}을 통해 두 개의 다항식을 더하는 연산은 비트 단위는 배타적 OR(XOR)와 같고, {0, 1}을 통해서 
    두 개의 다항식을 곱하는 연산은 정수 곱하기와 같다.

    2. NEON 벡터의 크기

        A. NEON 벡터(변수)는 레지스터와 연결되어 있으며, NEON 함수는 레지스터를 제어하기 위해서 사용된다. 다음은 벡터의 종류와 크기를 정의한 것이다.

        B. 더블 워드 (64bit) NEON 벡터 (D 레지스터)

    • 8개의 8비트 요소
    • 4개의 16비트 요소
    • 2개의 64비트 요소
    • 1개의 64비트 요소

        C. 쿼드 워드 (64bit) NEON 벡터 (Q 레지스터)

    • 16개의 8비트 요소
    • 8개의 16비트 요소
    • 4개의 32비트 요소
    • 2개의 64비트 요소

        D. NEON 벡터 형태인 더블 워드 NEON 벡터는 D 레지스터와 연결되어 있고, 쿼드 NEON벡터는 Q레지스터와 연결되어 있다. 더블 워드 NEON 벡터는 64bit 크기의 연산을 지원하고 쿼드 워드 NEON 벡터는 128bit 크기의 연산을 지원한다.


        E. NEON 벡터는 NEON함수의 동작이나 연산으로 얻은 결과를 같은 형태의 NEON벡터에 대입할 수 있고, 다른 형태의 NEON 벡터에도 대입할 수 있다. 
        F. 즉, 더블 워드 벡터를 더블 워드 벡터에, 쿼드 워드 벡터를 쿼드 워드 벡터에 대입할 수 있으며, 더블 워드벡터를 쿼드 워드 벡터에, 쿼드 워드벡터를 더블 워드 벡터에 대입할 수도 있다. 

 3. NEON 레지스터

        A. NEON에서는 Q 레지스터 16개와 D 레지스터 32개를 포함하여 총 256 byte의 레지스터를 사용하여 연산한다. 
        B. 256 byte중에서 D레지스트는 VFP(부동 소수점) 레지스터와 공유한다. 
        C. NEON은 D레지스터를 VFP레지스터와 공유하므로 NEON 연산과 VFP 연산을 동시에 사용하면 레지스터가 충돌하여 예상하지 못한 결과가 발생한다.





댓글 없음:

댓글 쓰기