5.17.2. 벡터

벡터는 동일한 뱅크에서 최대 여덟 개의 단정밀도 레지스터나 네 개의 배정밀도 레지스터를 사용할 수 있습니다. 벡터가 사용하는 레지스터 수는 FPSCRLEN 비트로 제어됩니다 (FPSCR, 부동 소수점 상태 및 제어 레지스터 참조).

벡터는 모든 레지스터에서 시작할 수 있습니다. 벡터가 사용하는 첫 번째 레지스터는 개별 명령어의 레지스터 필드에 지정됩니다.

벡터 래핑

벡터가 뱅크 끝을 넘어서 확장되면 다음과 같이 동일한 뱅크의 시작으로 래핑됩니다.

  • s5에서 시작하는 길이가 6인 벡터는 {s5, s6, s7, s0, s1, s2}입니다.

  • s15에서 시작하는 길이가 3인 벡터는 {s15, s8, s9}입니다.

  • s22에서 시작하는 길이가 4인 벡터는 {s22, s23, s16, s17}입니다.

  • d7에서 시작하는 길이 2인 벡터는 {d7, d4}입니다.

  • d10에서 시작하는 길이가 3인 벡터는 {d10, d11, d8}입니다.

벡터에는 둘 이상의 뱅크에 속한 레지스터가 포함될 수 없습니다.

벡터 스트라이드

벡터는 위의 예와 같이 연속된 레지스터를 차지하거나 대체 레지스터를 차지할 수 있습니다. 이 동작은 FPSCRSTRIDE 비트로 제어됩니다 (FPSCR, 부동 소수점 상태 및 제어 레지스터 참조). 예를 들면 다음과 같습니다.

  • s1에서 시작하며 길이와 스트라이드가 각각 3과 2인 벡터는 {s1, s3, s5}입니다.

  • s6에서 시작하며 길이와 스트라이드가 각각 4와 2인 벡터는 {s6, s0, s2, s4}입니다.

  • d1에서 시작하며 길이와 스트라이드가 둘 다 2인 벡터는 {d1, d3}입니다.

벡터 길이 제한

한 벡터에서 동일한 레지스터를 두 번 사용할 수 없습니다. 즉, 벡터 래핑을 설정하면 다음과 같은 벡터가 생성되지 않습니다.

  • 길이가 4보다 길고 스트라이드가 2인 단정밀도 벡터

  • 길이가 4보다 길고 스트라이드가 1인 배정밀도 벡터

  • 길이가 2보다 길고 스트라이드가 2인 배정밀도 벡터

Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential