KR101778175B1 - 수평 치환을 이용한 벡터 간접 엘리먼트 수직 어드레싱 모드 - Google Patents

수평 치환을 이용한 벡터 간접 엘리먼트 수직 어드레싱 모드 Download PDF

Info

Publication number
KR101778175B1
KR101778175B1 KR1020157029038A KR20157029038A KR101778175B1 KR 101778175 B1 KR101778175 B1 KR 101778175B1 KR 1020157029038 A KR1020157029038 A KR 1020157029038A KR 20157029038 A KR20157029038 A KR 20157029038A KR 101778175 B1 KR101778175 B1 KR 101778175B1
Authority
KR
South Korea
Prior art keywords
vector
element data
register
data values
permutation control
Prior art date
Application number
KR1020157029038A
Other languages
English (en)
Other versions
KR20150132364A (ko
Inventor
아제이 아난트 잉글
데이비드 제이. 호일
마크 엠. 호프만
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20150132364A publication Critical patent/KR20150132364A/ko
Application granted granted Critical
Publication of KR101778175B1 publication Critical patent/KR101778175B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register

Abstract

하나 또는 둘 이상의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 예시적 방법은, 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하는 단계를 포함하고, 상기 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함한다. 방법은 또한, 복수의 엘리먼트들의 각각의 엘리먼트에 대해, 수직 치환 제어 벡터로부터 레지스터 어드레스를 판독하는 단계를 포함한다. 방법은, 레지스터 어드레스에 기초하여 복수의 엘리먼트 데이터 값들을 리트리브하는 단계를 더 포함한다. 방법은 또한, 출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별한다. 방법은 수평 치환 제어 벡터에서의 어드레스들의 세트에 기초하여, 복수의 엘리먼트 데이터 값들의 리트리브된 엘리먼트 데이터 값들 중 적어도 일부를 출력 벡터에 배치하는 단계를 더 포함한다.

Description

수평 치환을 이용한 벡터 간접 엘리먼트 수직 어드레싱 모드{VECTOR INDIRECT ELEMENT VERTICAL ADDRESSING MODE WITH HORIZONTAL PERMUTE}
[0001] 본 출원은 2013년 3월 15일자로 출원된 "VECTOR INDIRECT ELEMENT VERTICAL ADDRESSING MODE WITH HORIZONTAL PERMUTE"라는 명칭의 미국 특허 출원 일련번호 제13/834,785호에 대한 우선권을 주장하고, 상기 미국 특허 출원은 그 전체가 인용에 의해 본원에 포함된다.
[0002] 본 개시는 일반적으로, 프로세서들에 관한 것으로, 더 상세하게는, 프로세서에서 엘리먼트들을 프로세싱하는 것에 관한 것이다.
[0003] 프로세서는 데이터 스트림을 수신하고, 데이터를 레지스터들에 저장할 수 있다. 데이터 스트림은 다수의 레지스터들에 걸쳐 있고, 프로세서에 대해 관심있는 데이터의 서브세트를 포함할 수 있다. 예에서, 사용자는 프로세서를 포함하는 핸드셋을 이용할 수 있다. 신호는 사용자와 연관된 데이터를 포함할 수 있고, 기준 신호는 타워(tower)로부터 핸드셋으로 전송된다. 기준 신호는 다른 데이터와 함께 사용자의 데이터와 인터레이싱될 수 있다. 예를 들어, 신호는 기준 신호 및 다른 사용자들과 연관된 데이터를 포함할 수 있다. 패킷이 상실된 경우, 사용자의 데이터를 포함하는 전체 패킷에 비해 더 적은 양의 사용자의 데이터가 상실되기 때문에, 신호는 다른 사용자들의 데이터와 함께 사용자의 데이터를 포함할 수 있다. 이것은 사용자 기반으로의 패킷의 상실에 대한 영향(effect)을 경감시킬 수 있다.
[0004] 프로세서가, 예를 들어, 관심있는 데이터(예를 들어, 기준 신호)를 효율적으로 리트리브하고, 데이터 스트림에서 인터리빙되는 관심있는 데이터를 구조화(organize)하는 것이 바람직할 수 있다.
[0005] 본 개시는 프로세서들에 관련된다. 프로세서에서 엘리먼트들을 프로세싱하기 위한 방법들, 시스템들 및 기법들이 제공된다.
[0006] 실시예에 따라, 하나 또는 둘 이상의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법은, 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하는 단계를 포함한다. 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함한다. 방법은 또한, 복수의 엘리먼트들의 각각의 엘리먼트에 대해, 상기 수직 치환 제어 벡터로부터 레지스터 어드레스를 판독하는 단계를 포함한다. 방법은 상기 레지스터 어드레스에 기초하여 복수의 엘리먼트 데이터 값들을 리트리브하는 단계를 더 포함한다. 방법은 또한, 출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하는 단계를 포함한다. 방법은 상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여, 상기 복수의 엘리먼트 데이터 값들의 리트리브된 엘리먼트 데이터 값들 중 적어도 일부를 상기 출력 벡터에 배치하는 단계를 더 포함한다.
[0007] 또 다른 실시예에 따라, 장치는 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하도록 동작가능한 프로세서를 포함하고, 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함한다. 프로세서는 또한, 복수의 엘리먼트들의 각각의 엘리먼트에 대해, 상기 수직 치환 제어 벡터로부터 레지스터 어드레스를 판독하도록 동작가능하다. 프로세서는 또한, 레지스터 어드레스들에 기초하여 복수의 엘리먼트 데이터 값들을 리트리브하도록 동작가능하다. 프로세서는 또한, 출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하도록 동작가능하다. 프로세서는 또한, 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여, 리트리브된 엘리먼트 데이터 값들 중 적어도 일부를 상기 출력 벡터에 배치하도록 동작가능하다.
[0008] 또 다른 실시예에 따라, 컴퓨터 판독가능한 매체에는, 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하는 것 ― 상기 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함함 ― , 복수의 엘리먼트들의 각각의 엘리먼트에 대해, 상기 수직 치환 제어 벡터로부터 레지스터 어드레스를 판독하는 것, 하나 또는 둘 이상의 레지스터 어드레스들을 판독하는 것에 기초하여 복수의 엘리먼트 데이터 값들을 리트리브하는 것, 출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하는 것, 및 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여, 상기 복수의 엘리먼트 데이터 값들의 리트리브된 엘리먼트 데이터 값들 중 적어도 일부를 상기 출력 벡터에 배치하는 것을 포함하는 동작들을 수행하기 위한 컴퓨터 실행가능한 명령들이 저장된다.
[0009] 또 다른 실시예에 따라, 하나 또는 둘 이상의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 장치는, 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하기 위한 수단 ― 상기 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함함 ― , 상기 복수의 엘리먼트들의 각각의 엘리먼트에 대해, 상기 수직 치환 제어 벡터로부터 레지스터 어드레스를 판독하기 위한 수단, 하나 또는 둘 이상의 레지스터 어드레스들을 판독하는 것에 기초하여 복수의 엘리먼트 데이터 값들을 리트리브하기 위한 수단, 출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하기 위한 수단, 및 상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여, 상기 복수의 엘리먼트 데이터 값들의 리트리브된 엘리먼트 데이터 값들 중 적어도 일부를 상기 출력 벡터에 배치하기 위한 수단을 포함한다.
[0010] 또 다른 실시예에 따라, 엘리먼트 데이터 값들을 출력 벡터에 기록하기 위한 방법은, 복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터를 판독하는 단계를 포함한다. 방법은 또한, 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하는 단계를 포함한다. 방법은 수평 치환 제어 벡터에서의 어드레스들의 세트에 기초하여 입력 벡터에서의 복수의 엘리먼트 데이터 값들의 엘리먼트 데이터 값들 중 적어도 일부를 재배열하는 단계를 더 포함한다. 방법은 또한, 재배열된 복수의 엘리먼트 데이터 값들을 임시(temporary) 벡터에 배치하는 단계를 포함한다. 방법은 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하는 단계를 더 포함한다. 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함한다. 방법은 또한, 상기 수직 치환 제어 벡터에서의 상기 레지스터 어드레스들에 기초하여 상기 임시 벡터에서의 상기 엘리먼트 데이터 값들을 적어도 하나의 벡터 레지스터에 배치하는 단계를 포함한다.
[0011] 또 다른 실시예에 따라, 장치는 복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터를 판독하도록 동작가능한 프로세서를 포함한다. 프로세서는 또한, 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하도록 동작가능하다. 프로세서는 또한, 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여 상기 입력 벡터에서의 엘리먼트 데이터 값들 중 적어도 일부를 재배열하도록 동작가능하다. 프로세서는 또한, 재배열된 복수의 엘리먼트 데이터 값들을 임시 벡터에 배치하도록 동작가능하다. 프로세서는 또한, 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하도록 동작가능하고, 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함한다. 프로세서는 또한, 수직 치환 제어 벡터에서의 상기 레지스터 어드레스들에 기초하여 상기 임시 벡터에서의 상기 엘리먼트 데이터 값들을 적어도 하나의 벡터 레지스터에 배치하도록 동작가능하다.
[0012] 또 다른 실시예에 따라, 컴퓨터 판독가능한 매체에는, 복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터를 판독하는 것, 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하는 것, 상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여 상기 입력 벡터에서의 상기 복수의 엘리먼트 데이터 값들의 상기 엘리먼트 데이터 값들 중 적어도 일부를 재배열하는 것, 재배열된 복수의 엘리먼트 데이터 값들을 임시 벡터에 배치하는 것, 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하는 것 ― 상기 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함함 ― 및 수직 치환 제어 벡터에서의 상기 레지스터 어드레스들에 기초하여 상기 임시 벡터에서의 상기 엘리먼트 데이터 값들을 적어도 하나의 벡터 레지스터에 배치하는 것을 포함하는 동작들을 수행하기 위한 컴퓨터 실행가능한 명령들이 저장된다.
[0013] 또 다른 실시예에 따라, 엘리먼트 데이터 값들을 출력 벡터에 기록하기 위한 장치는, 복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터를 판독하기 위한 수단, 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하기 위한 수단, 상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여 상기 입력 벡터에서의 상기 복수의 엘리먼트 데이터 값들의 상기 엘리먼트 데이터 값들 중 적어도 일부를 재배열하기 위한 수단, 재배열된 복수의 엘리먼트 데이터 값들을 임시 벡터에 배치하기 위한 수단, 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하기 위한 수단 ― 상기 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함함 ― , 및 상기 수직 치환 제어 벡터에서의 상기 레지스터 어드레스들에 기초하여 상기 임시 벡터에서의 상기 엘리먼트 데이터 값들을 적어도 하나의 벡터 레지스터에 배치하기 위한 수단을 포함한다.
[0014] 명세서의 일부분을 형성하는 첨부한 도면들은, 설명과 함께, 본 발명의 예시적인 실시예들을 예시하고, 실시예들의 원리들을 설명하도록 추가로 서빙한다. 도면들에서, 동일한 참조 번호들은 동일하거나 또는 기능적으로 유사한 엘리먼트들을 표시할 수 있다. 엘리먼트가 먼저 나타나는 도면은 일반적으로, 대응하는 참조 번호에서의 최좌측 디짓(left-most digit)에 의해 표시된다.
[0015] 도 1은 실시예에 따른, 벡터 레지스터 파일을 포함하는 프로세서를 예시하는 블록도이다.
[0016] 도 2는 실시예에 따른, 출력 벡터에 배치되는 하나 또는 둘 이상의 엘리먼트 데이터 값들을 예시하는 블록도이다.
[0017] 도 3은 실시예에 따른, 적어도 하나의 출력 벡터에 기록되는 엘리먼트 데이터 값들을 예시하는 블록도이다.
[0018] 도 4는 실시예에 따른, 벡터 레지스터 파일을 예시하는 블록도이다.
[0019] 도 5는 실시예에 따라, 하나 또는 둘 이상의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법을 예시하는 흐름도이다.
[0020] 도 6은 실시예에 따라, 엘리먼트 데이터 값들을 적어도 하나의 출력 벡터에 기록하기 위한 방법을 예시하는 흐름도이다.
[0021] 도 7은 실시예에 따른, 디지털 신호 프로세서를 포함하는 무선 디바이스를 예시하는 블록도이다.
I. 개요
II. 예시적 명령들
A. 예시적 판독 명령
B. 예시적 기록 명령
C. 스칼라 값들
III. 예시적 레지스터 파일
IV. 예시적 방법들
V. 예시적 무선 디바이스
I. 개요
[0022] 다음의 개시는 본 개시의 상이한 특징들을 구현하기 위한 많은 상이한 실시예들 또는 예들을 제공한다는 것이 이해될 것이다. 일부 실시예들은 이러한 특정 세부사항들 전부 또는 그 일부가 없이도 실시될 수 있다. 컴포넌트들, 모듈들 및 배열들의 특정 예들은 본 개시를 간략화하기 위해 아래에서 설명된다. 이것들은, 물론, 단지 예들이고, 제한되는 것으로 의도되지 않는다.
[0023] 프로세서는 복수의 벡터 레지스터들을 포함하는 벡터 레지스터 파일을 포함할 수 있다. 벡터 레지스터들은 엘리먼트 데이터 값들을 저장할 수 있고, 엘리먼트 데이터 값들과 연관된 데이터의 서브세트가 관심있는 데이터의 서브세트일 수 있다. 복수의 벡터 레지스터들로부터 엘리먼트 데이터 값들의 서브세트(예를 들어, 사용자 데이터와 인터레이싱되는 기준 신호)를 판독하고, 엘리먼트 데이터 값들의 서브세트를 출력 벡터로 분포시키는 것이 바람직할 수 있다.
[0024] 예에서, 제어들의 2개의 세트들은 엘리먼트 데이터 값들의 서브세트를 리트리브하고, 엘리먼트 데이터 값들의 서브세트 중 하나 또는 둘 이상을 출력 벡터에 배치하기 위해 이용될 수 있다. 제어들의 제 1 세트는, 복수의 벡터 레지스터들의 벡터 레지스터들 내의 어떤 칼럼(column) 엘리먼트들을 판독할 것인지를 결정하기 위한, 레지스터 어드레스들을 포함하는 수직 치환 제어 벡터일 수 있다. 예를 들어, 수직 치환 제어 벡터는 엘리먼트 데이터 값들이 판독되게 할 수직 어드레스들을 포함할 수 있다. 제어들의 제 2 세트는 출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터일 수 있다. 수평 치환 제어 벡터는 출력 벡터에서의 리트리브된 엘리먼트 데이터 값들의 서브세트의 수평 분포를 결정할 수 있다. 리트리브된 엘리먼트 데이터 값들의 서브세트 중 적어도 일부는 수평 치환 제어 벡터에서의 어드레스들의 세트에 기초하여 출력 벡터에 배치될 수 있다.
[0025] 또 다른 예에서, 제어들의 2개의 세트들은 엘리먼트 데이터 값들을 적어도 하나의 출력 벡터에 기록하기 위해 이용될 수 있다. 예에서, 복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터가 판독될 수 있다. 입력 벡터에서의 복수의 엘리먼트 데이터 값들의 엘리먼트 데이터 값들 중 적어도 일부는 수평 치환 제어 벡터에서의 어드레스들의 세트에 기초하여 재배열될 수 있고, 재배열된 엘리먼트 데이터 값들은 임시 벡터에 배치될 수 있다. 임시 벡터에서의 엘리먼트 데이터 값들은 수직 치환 제어 벡터에 기초하여 적어도 하나의 출력 벡터에 배치될 수 있다. 수직 치환 제어 벡터는 복수의 엘리먼트들을 포함할 수 있고, 복수의 엘리먼트들의 각각의 엘리먼트는 벡터 레지스터 파일 내의 벡터 레지스터의 레지스터 어드레스를 포함한다.
[0026] 도 1은 일 실시예에 따른, 벡터 레지스터 파일(120)을 포함하는 프로세서(110)를 예시하는 블록도이다.
[0027] 벡터 레지스터 파일(120)은 N개의 범용 벡터 레지스터들을 포함할 수 있고, 여기서, N은 0보다 큰 정수이다. 각각의 벡터 레지스터는 M개의 엘리먼트들의 벡터로 패킹(pack)될 수 있고, 여기서, M은 0보다 큰 정수이다. 엘리먼트는 벡터 레지스터로부터 판독될 수 있는 최소 입도(granularity)의 데이터를 지칭할 수 있다. 각각의 벡터 레지스터 내에서, 데이터는, 예를 들어, 바이트들(8-비트), 쇼트 워드들(short words)(16 비트), 워드들(32 비트) 또는 더블-워드들(64 비트)로서 기록 또는 판독될 수 있다. 예에서, 벡터 레지스터 파일(120)은 32개의 벡터 레지스터들(N=32) 및 32개의 32-비트 엘리먼트들(M=32)을 포함하고, 각각의 벡터 레지스터는 1024 비트 와이드(32개의 엘리먼트들 x 32 비트)이다.
[0028] 도 1에서, 벡터 레지스터 파일(120)은 벡터 레지스터들 V0(122), V1(124), V2(126), V3(127), V4(128), V5(130), V6(132) 및 V7(134)을 포함한다. 벡터 레지스터 파일(120)은 8개의 벡터 레지스터들을 포함하는 것으로서 도 1에 예시되지만, 벡터 레지스터 파일(120)에 8개 미만의 또는 8개 초과의 벡터 레지스터들을 갖는 다른 실시예들이 본 개시의 범위 내에 있다. 예에서, 벡터 레지스터 파일(120)은 32개의 벡터 레지스터들 V0-V31을 포함한다.
[0029] 프로세서(110)는 엘리먼트들을 벡터 레지스터들로 로딩하고, 벡터 레지스터들로부터 값들을 판독할 수 있다. 예에서, 벡터 레지스터들 V4, V5, V6 및 V7과 연관된 엘리먼트들의 서브세트는 수직 그리고 수평 치환 제어 벡터들에 기초하여 프로세싱될 수 있다.
III. 예시적 명령들
A. 예시적 판독 명령
[0030] 프로세서(110)는 하나 또는 둘 이상의 엘리먼트 데이터 값들을 출력 벡터에 배치하는 판독 명령을 수신할 수 있다.
[0031] 도 2는 실시예에 따른, 출력 벡터에 배치되는 하나 또는 둘 이상의 엘리먼트 데이터 값들을 예시하는 블록도(200)이다.
[0032] 도면(200)은
Figure 112015098861439-pct00001
를 포함하는 예시적 판독 명령(201)을 포함한다. 명령(201)은 2개의 입력 벡터 레지스터들(예를 들어, Vu 및 Vv)을 판독하는 것 및 출력을 출력 벡터 레지스터(예를 들어, Vd)에 기록하는 것을 포함한다. 벡터 레지스터들 Vu, Vv 및 Vd는 벡터 레지스터 파일(120)로부터의 벡터 레지스터들 V0-V7 중 임의의 것일 수 있고, 여기서, u, v 및 d는 0 내지 7 중 임의의 값일 수 있다. 명령은 Vu, Vv 및 Vd에 대한 특정 값을 특정하는 오피코드(opcode)로 컨버팅될 수 있다. 예에서, Vu=V0, Vv=V1 그리고 Vv=V3이다. Vu는 수직 치환 제어 벡터를 포함할 수 있고, Vv는 수평 치환 제어 벡터를 포함할 수 있으며, Vd는 출력 벡터 및 벡터 레지스터들 각각을 포함할 수 있다. Vu, Vx 및 Vv 각각은 벡터 레지스터 파일(120) 내의 벡터 레지스터들 중 임의의 것일 수 있다.
[0033] 프로세서(110)는 명령(201)을 수신하여 실행할 수 있다. 명령(201)을 실행하는 것은 수직 치환 제어 벡터를 식별하는 것, 수직 치환 제어 벡터로부터 하나 또는 둘 이상의 메모리 어드레스들을 판독하는 것 및 판독된 메모리 어드레스들에 기초하여 복수의 엘리먼트 데이터 값들을 리트리브하는 것을 포함할 수 있다. 명령(201)을 실행하는 것은 또한, 수평 치환 제어 벡터를 식별하는 것 및 수평 치환 제어 벡터에 기초하여 리트리브된 엘리먼트 데이터 값들 중 적어도 일부를 출력 벡터에 배치하는 것을 포함할 수 있다.
[0034] 도면(200)은 벡터 레지스터 파일(120)에 포함될 수 있는 복수의 벡터 레지스터들을 포함한다. 복수의 벡터 레지스터들은 벡터 레지스터들 V4, V5, V6 및 V7을 포함하고, 각각의 벡터 레지스터는 엘리먼트 데이터 값들을 포함할 수 있다. 복수의 벡터 레지스터들에 저장된 엘리먼트 데이터 값들의 서브세트를 리트리브하는 것이 바람직할 수 있다.
[0035] 프로세서(110)는 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터(202)를 식별할 수 있다. 실시예에서, 프로세서(110)는 명령과 연관된 데이터를 수신하고, 수신된 데이터를 복수의 엘리먼트들로 분할한다. 복수의 엘리먼트들은 수직 치환 제어 벡터에 배치될 수 있고, 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함한다.
[0036] 도 2에서, 수직 치환 제어 벡터(202)는 벡터 레지스터 파일(120)로부터의 벡터 레지스터 Vu(122)에 저장될 수 있다. 따라서, 프로세서(110)가 수직 치환 제어 벡터를 식별할 때, 프로세서(110)는 벡터 레지스터 파일(120) 내의 벡터 레지스터 Vu를 식별할 수 있다. 벡터 레지스터 파일(120) 내의 벡터 레지스터들은 프로그래머에게는 보일 수 있으며, 벡터 레지스터 파일(120) 내의 벡터 레지스터들로부터 간접적으로 판독하기 위해 이용될 수 있다. 상기 예를 참조하면, 벡터 레지스터들 V4, V5, V6 및 V7에서의 엘리먼트 데이터 값들의 서브세트만이 기준 신호를 저장하고, 나머지 엘리먼트들 데이터 값들은 관심없는 다른 데이터를 포함할 수 있다. 관심있는 엘리먼트 데이터 값들의 서브세트는 다수의 벡터 레지스터들에 걸쳐 있을 수 있다. 이 특정 엘리먼트 데이터 값들을 리트리브하기 위해, 프로그래머는 적절한 레지스터 어드레스들에 저장된 관심있는 엘리먼트 데이터 값들을 추출하기 위해 이러한 패턴을 Vu로 프로그래밍할 수 있다.
[0037] 벡터 레지스터 Vu는 32개의 엘리먼트들을 포함할 수 있고, 각각의 엘리먼트는 32 비트 레지스터 어드레스를 포함할 수 있다. 예를 들어, Vu[0]=4이며 벡터 레지스터 V4[0]에 대한 레지스터 어드레스를 포함하고, Vu[1]=5이며 벡터 레지스터 V5[1]에 대한 레지스터 어드레스를 포함하고, Vu[2]=6이며 벡터 레지스터 V6[2]에 대한 레지스터 어드레스를 포함하고, Vu[3]=7이며 벡터 레지스터 V7[3]에 대한 레지스터 어드레스를 포함한다.
[0038] 복수의 엘리먼트 데이터 값들은 레지스터 어드레스들을 판독하는 것에 기초하여 리트리브될 수 있다. 특히, 수직 치환 제어 벡터에서의 레지스터 어드레스는 벡터 레지스터 파일로부터 적절한 엘리먼트 데이터 값을 리트리브하기 위해 간접 어드레스로서 이용될 수 있다. 이러한 방식으로, 수직 치환 제어 벡터(202)에 저장된 하나 또는 둘 이상의 레지스터 어드레스들은 대응하는 레지스터 어드레스에서 저장된 엘리먼트 데이터 값으로의 간접 액세스로서 이용될 수 있다. 간접 판독은 직접 판독과 대조적일 수 있고, 이는 레지스터 어드레스 대신에 엘리먼트 데이터 값을 특정한다. 간접 판독에 대해, 레지스터 어드레스는 판독되고, 관심있는 엘리먼트 데이터 값을 리트리브하기 위해 이용될 수 있다.
[0039] 예에서, Vu[0]로부터 벡터 레지스터 V4에 대한 레지스터 어드레스를 판독한 이후, 프로세서(110)는 벡터 레지스터 V4[0]에 저장된 엘리먼트 데이터 값인 엘리먼트 데이터 값 "i0"를 리트리브할 수 있다. 유사하게, Vu[1]로부터 벡터 레지스터 V5에 대한 레지스터 어드레스를 판독한 이후, 프로세서(110)는 벡터 레지스터 V5[1]에 저장된 엘리먼트 데이터 값인 엘리먼트 데이터 값 "j1"을 리트리브할 수 있다. 유사하게, Vu[2]로부터 벡터 레지스터 V6에 대한 레지스터 어드레스를 판독한 이후, 프로세서(110)는 벡터 레지스터 V6[2]에 저장된 엘리먼트 데이터 값인 엘리먼트 데이터 값 "k2"를 리트리브할 수 있다. 유사하게, Vu[3]로부터 벡터 레지스터 V7에 대한 레지스터 어드레스를 판독한 이후, 프로세서(110)는 벡터 레지스터 V7[3]에 저장된 엘리먼트 데이터 값인 엘리먼트 데이터 값 "l3"을 리트리브할 수 있다. 프로세서(110)는 Vu에 저장된 다른 레지스터 어드레스들에 대해 유사한 동작들을 수행할 수 있다. 실시예에서, 프로세서(110)는 SIMD(single instruction, multiple data) 프로세서이며, 본 개시에 설명된 명령들을 동시에 수행한다. 예를 들어, 프로세서(110)는 Vv에서의 레지스터 어드레스들을 동시에 판독할 수 있으며, 판독된 레지스터 어드레스에 기초하여 엘리먼트 데이터 값들을 동시에 리트리브한다.
[0040] 프로세서(110)는 리트리브된 복수의 엘리먼트 데이터 값들을 벡터 레지스터에 배치할 수 있다. 도면(200)은 벡터 레지스터 Vtmp(204)를 포함한다. 프로세서(110)는 파이프라인 프로세서일 수 있고, Vtmp(204)는 중간 결과들을 저장하기 위해 이용되는 임시(temporary) 파이프라인 벡터 레지스터일 수 있다. 또 다른 예에서, Vtmp(204)는 벡터 레지스터 파일(120) 내의 벡터 레지스터일 수 있다. Vu에서의 레지스터 어드레스들에 기초하여 리트리브된 엘리먼트 데이터 값들은 Vtmp(204)에 배치될 수 있다.
[0041] 예를 들어, 도 2에서, 벡터 레지스터 V4[0]로부터 판독되었던 "i0"는 Vtmp[0]에 배치되고, 벡터 레지스터 V5[1]로부터 판독되었던 "j1"은 Vtmp[1]에 배치되며, 벡터 레지스터 V6[2]로부터 판독되었던 "k2"는 Vtmp[2]에 배치되고, 벡터 레지스터 V7[3]으로부터 판독되었던 "l3"은 Vtmp[3]에 배치된다. 프로세서(110)는 수직 치환 제어 벡터에서의 레지스터 어드레스들에 기초하여 다른 리트리브된 엘리먼트 데이터 값들 모두에 대해 유사한 동작들을 수행할 수 있다.
[0042] 실시예에서, 프로세서(110)는 출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터(206)를 식별한다. 수평 치환 제어 벡터(206)는 출력 벡터에의 리트리브된 데이터 값 엘리먼트들의 배치를 결정하는 제어들의 세트를 갖는다. 프로세서(110)는 수평 치환 제어 벡터에서의 어드레스들의 세트에 기초하여 복수의 엘리먼트 데이터 값들의 리트리브된 엘리먼트 데이터 값들 중 적어도 일부를 출력 벡터에 배치할 수 있다. 예를 들어, Vtmp(204)에서의 엘리먼트 데이터 값들은 치환되어 출력 벡터에 배치될 수 있다. 예에서, 수평 치환은 크로스바를 이용하여 구현된다. 이 예에서, 리트리브된 엘리먼트 데이터 값들 중 적어도 일부는 크로스바를 이용하여 출력 벡터에 배치될 수 있다.
[0043] 도 2에서, 수평 치환 제어 벡터는 벡터 레지스터 Vv(124)에 저장될 수 있고, 출력 벡터는 벡터 레지스터 파일(120)로부터의 Vd(126)일 수 있다.
[0044] 예에서, Vv[0]=3이고, 이는 Vtmp[3]에 대응하는 엘리먼트 데이터 값이 Vd[0]에 속함을 표시한다. 따라서, Vtmp[3]에 대응하는 엘리먼트 데이터 값인 "l3"은 출력 벡터 Vd[0]에 배치된다. 유사하게, Vv[1]=1이고, 이는 Vtmp[1]에 대응하는 엘리먼트 데이터 값이 Vd[1]에 속함을 표시한다. 따라서, Vtmp[1]에 대응하는 엘리먼트 데이터 값인 "j1"은 출력 벡터 Vd[1]에 배치된다. 유사하게, Vv[2]=0이고, 이는 Vtmp[0]에 대응하는 엘리먼트 데이터 값이 Vd[2]에 속함을 표시한다. 따라서, Vtmp[0]에 대응하는 엘리먼트 데이터 값인 "i0"는 출력 벡터 Vd[2]에 배치된다. 유사하게, Vv[3]=28이고, 이는 Vtmp[28]에 대응하는 엘리먼트 데이터 값이 Vd[3]에 속함을 표시한다. 따라서, Vtmp[28]에 대응하는 엘리먼트 데이터 값인 "i28"은 출력 벡터 Vd[3]에 배치된다. 프로세서(110)는 Vtmp(204)에서의 다른 엘리먼트 데이터 값들을 출력 벡터 Vd(126)에 배치하기 위해 유사한 동작들을 수행할 수 있다.
[0045] 벡터 레지스터(120)는 어드레스가 주어진 판독 포트를 가질 수 있다. 예에서, 제 1 사이클에서, 프로세서(110)는 수직 치환 제어 벡터(예를 들어, 도 1의 벡터 레지스터 파일(120) 내의 벡터 레지스터 Vu)로부터 레지스터 어드레스를 판독한다. 프로세서(110)는 동일한 타입의 하나의 명령에서 32개의 상이한 동작들을 수행할 수 있다. 예를 들어, 벡터 레지스터 Vu가 수직 치환 제어 벡터를 포함하는 경우, 프로세서(110)는 프로세서(110)가 벡터 레지스터 Vu로부터 32개의 레지스터 어드레스들을 동시에 판독하도록, Vu[0]-Vu[31]에 대해 판독 동작을 수행할 수 있다. 내부적으로, 다음 사이클에서, 프로세서(110)는 적절한 엘리먼트 데이터 값들을 리트리브하기 위해 판독된 레지스터 어드레스들에 기초하여 벡터 레지스터 파일(120)로부터 다시 판독할 수 있다. 프로세서(110)는 프로세서(110)가 벡터 레지스터 Vu로부터 판독된 레지스터 어드레스들에 기초하여 32개의 엘리먼트 데이터 값들을 동시에 리트리브하도록, 리트리브 동작을 수행할 수 있다. 프로세서(110)는 32개의 리트리브된 엘리먼트 데이터 값들을 Vtmp에 동시에 배치할 수 있다.
[0046] Vtmp에 저장된 32개의 리트리브된 엘리먼트 데이터 값들은 수평 치환 제어 벡터를 이용하여 출력 벡터에서 수평 분포될 수 있다. 수평 치환 제어 벡터는 출력 벡터에 대응하는 어드레스들의 세트를 포함할 수 있다. 프로세서(110)는 수평 치환 제어 벡터를 식별하고, 수평 치환 제어 벡터에서의 어드레스들의 세트에 기초하여 복수의 엘리먼트 데이터 값들의 리트리브된 엘리먼트 데이터 값들 중 적어도 일부를 출력 벡터에 배치할 수 있다. 프로세서(110)는 수평 치환 제어 벡터에서의 어드레스들의 세트에 기초하여 32개의 리트리브된 엘리먼트 데이터 값들을 출력 벡터에 동시에 배치할 수 있다. 그 다음, 출력 벡터는 관심있는 엘리먼트 데이터 값들을 포함할 수 있다.
B. 예시적 기록 명령
[0047] 프로세서(110)는 또한, 엘리먼트 데이터 값들을 적어도 하나의 벡터 레지스터에 기록하는 기록 명령을 수신할 수 있다. 프로세서(110)는 수직 치환 제어 벡터 및 수평 치환 제어 벡터를 이용하여 엘리먼트 데이터 값들을 적어도 하나의 벡터 레지스터에 기록할 수 있다. 기록 명령은 위에서 논의된 판독 명령에 대해 유사한 기록 버전일 수 있다.
[0048] 도 3은 실시예에 따른, 적어도 하나의 벡터 레지스터에 기록되는 엘리먼트 데이터 값들을 예시하는 블록도(300)이다.
[0049] 도면(300)은
Figure 112015098861439-pct00002
를 포함하는 예시적 기록 명령(301)을 포함한다. 명령(301)은, 입력 벡터 레지스터(예를 들어, 벡터 레지스터 Vu)를 판독하는 것, 및 수직 치환 제어 벡터(예를 들어, 벡터 레지스터 Vd) 및 수평 치환 제어 벡터(예를 들어, 벡터 레지스터 Vv)에 기초하여 입력 벡터 레지스터로부터 적어도 하나의 벡터레지스터(예를 들어, 벡터 레지스터들 V4, V5, V6 및 V7)로 엘리먼트 데이터 값들을 기록하는 것을 포함한다.
[0050] 벡터 레지스터들 Vu, Vv 및 Vd는 벡터 레지스터 파일(120)로부터의 벡터 레지스터들(V0-V7) 중 임의의 것일 수 있고, 여기서, u, v 및 d는 0 내지 7 중 임의의 값일 수 있다. 명령은 Vu, Vv 및 Vd에 대한 특정 값을 특정하는 오피코드로 컨버팅될 수 있다. 예에서, Vu=V0, Vv=V1 그리고 Vv=V3이다. Vu는 입력 벡터 레지스터를 포함할 수 있고, Vv는 수평 치환 제어 벡터를 포함할 수 있으며, Vd는 수직 치환 제어 벡터를 포함할 수 있다.
[0051] 프로세서(110)는 명령(301)을 수신하여 실행할 수 있다. 명령(301)을 실행하는 것은 복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터 Vu(122)를 판독하는 것을 포함할 수 있다. 예를 들어, Vu[0]=u0, Vu[1]=u1, Vu[2]=u2 그리고 Vu[3]=u3이다. 예에서, 입력 벡터는 적어도 하나의 출력 벡터에 기록된 실제 엘리먼트 데이터 값들을 포함한다.
[0052] Vu에서의 엘리먼트 데이터 값들은 수평 치환 제어 벡터에 기초하여 판독 및 치환될 수 있다. 프로세서(110)는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터(206)를 식별할 수 있다. 수평 치환 제어 벡터(206)는 벡터 레지스터 파일(120)로부터의 벡터 레지스터 Vv(124)에 저장될 수 있다. 따라서, 프로세서(110)가 수평 치환 제어 벡터를 식별할 때, 프로세서(110)는 벡터 레지스터 파일(120) 내의 벡터 레지스터 Vv를 식별할 수 있다. 입력 벡터 Vu에서의 복수의 엘리먼트 데이터 값들의 엘리먼트 데이터 값들 중 적어도 일부는 수평 치환 제어 벡터(206)에서의 어드레스들의 세트에 기초하여 재배열될 수 있다. 복수의 재배열된 엘리먼트 데이터 값들은 임시 벡터 Vtmp(204)에 배치될 수 있다.
[0053] 예에서, Vv[0]로부터의 레지스터 어드레스=3이고, 프로세서(110)는 Vu[3]에 저장된 엘리먼트 데이터 값 "u3"을 리트리브하고, 리트리브된 엘리먼트 데이터 값을 Vtmp[0]에 배치할 수 있다. 유사하게, Vv[1]로부터의 레지스터 어드레스=1이고, 프로세서(110)는 Vu[1]에 저장된 엘리먼트 데이터 값 "u1"을 리트리브하고, 리트리브된 엘리먼트 데이터 값을 Vtmp[1]에 배치할 수 있다. 유사하게, Vv[2]로부터의 레지스터 어드레스=0이고, 프로세서(110)는 Vu[0]에 저장된 엘리먼트 데이터 값 "u0"을 리트리브하고, 리트리브된 엘리먼트 데이터 값을 Vtmp[2]에 배치할 수 있다. 프로세서(110)는 Vu에서의 다른 엘리먼트 데이터 값들을 임시 벡터 Vtmp에 배치하기 위해 유사한 동작들을 수행할 수 있다.
[0054] 명령(301)을 실행하는 것은 또한, 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터(202)를 식별하는 것을 포함할 수 있고, 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함한다. 수직 치환 제어 벡터(202)는 벡터 레지스터 파일(120)로부터의 벡터 레지스터 Vd(126)에 저장될 수 있다. Vtmp에서의 엘리먼트 데이터 값들은 수직 치환 제어 벡터에서의 레지스터 어드레스들에 기초하여 적어도 하나의 벡터 레지스터에 배치될 수 있다. 특히, Vd에서의 레지스터 어드레스들은 적어도 하나의 벡터 레지스터에 대해 수직 방식으로 Vtmp에서의 엘리먼트 데이터 값들을 기록하기 위해 이용될 수 있다.
[0055] 예를 들어, 도 3에서, Vd[0]=4이고, 이는 Vtmp[0]에 대응하는 엘리먼트 데이터 값이 V4[0]에 속함을 표시한다. 따라서, Vtmp[0]에 대응하는 엘리먼트 데이터 값인 "i0"은 벡터 레지스터 V4[0]에 배치된다. 유사하게, Vd[1]=5이고, 이는 Vtmp[1]에 대응하는 엘리먼트 데이터 값이 V5[1]에 속함을 표시한다. 따라서, Vtmp[1]에 대응하는 엘리먼트 데이터 값인 "j1"은 벡터 레지스터 V5[1]에 배치된다. 유사하게, Vd[2]=6이고, 이는 Vtmp[2]에 대응하는 엘리먼트 데이터 값이 V6[2]에 속함을 표시한다. 따라서, Vtmp[2]에 대응하는 엘리먼트 데이터 값인 "k2"는 벡터 레지스터 V6[2]에 배치된다. 유사하게, Vd[3]=7이고, 이는 Vtmp[3]에 대응하는 엘리먼트 데이터 값이 V7[3]에 속함을 표시한다. 따라서, Vtmp[3]에 대응하는 엘리먼트 데이터 값인 "l3"은 벡터 레지스터 V7[3]에 배치된다. 프로세서(110)는 Vtmp(204)에서의 다른 엘리먼트 데이터 값들을 하나 또는 둘 이상의 벡터 레지스터들(예를 들어, 벡터 레지스터들 V4, V5, V6 및 V7)에 배치하기 위해 유사한 동작들을 수행할 수 있다. 그 다음, 벡터 레지스터들은 입력 벡터로부터의 엘리먼트 데이터 값들을 적절한 장소들에 저장할 수 있다.
[0056] 위에서 논의되고, 여기서 추가로 강조되는 바와 같이, 도 1-3은 단지 예들일뿐이고, 이는 청구항들의 범위를 과도하게 제한하여서는 안 된다.
[0057] 위에서 예시된 바와 같이, 치환 제어 벡터들(예를 들어, 수직 치환 제어 벡터 및/또는 수평 치환 제어 벡터)은, 데이터가 프로세서(110)에 의해 수신되는 바와 같이 업데이트된 동적 레지스터들에 저장될 수 있다. 예를 들어, 도 1에서, 수직 치환 제어 벡터는 벡터 레지스터(예를 들어, Vu)에 포함되고, 수평 치환 제어 벡터는 또한, 벡터 레지스터 파일로부터의 벡터 레지스터(예를 들어, Vv)에 포함된다. 이것은 제한되는 것으로 의도되지 않고, 치환 제어 벡터들은 다수의 방식으로 리트리브될 수 있다.
[0058] 예를 들어, 치환 제어 벡터들에서 예시된 패턴들은 도 2 및 3에서 예시된 것과 상이할 수 있다. 예를 들어, 도 2의 수직 치환 제어 벡터는 벡터 레지스터들 V4, V5, V6, V7, V4, V5, V6, V7 등으로부터의 엘리먼트 데이터 값들의 판독을 특정하는 패턴을 갖는다. 이것은 제한되는 것으로 의도되지 않고, 임의의 패턴이 이용될 수 있다. 예를 들어, 프로그래머는 임의의 패턴을 치환 제어 벡터들로 프로그래밍할 수 있다.
[0059] 추가로, 도 3에서, 입력 벡터 Vu에서의 모든 값들은 적어도 하나의 출력 벡터에 기록된다. 이것은 제한되는 것으로 의도되지 않는다. 예를 들어, 또 다른 실시예에서, 입력 벡터 Vu에서의 하나 또는 둘 이상의 엘리먼트 데이터 값들은 출력 벡터에 기록되지 않는다. 추가로, 입력 벡터 Vu에서의 엘리먼트 데이터 값들은 단일 벡터 레지스터에 또는 하나 초과의 벡터 레지스터에 기록될 수 있다. 예에서, 수직 치환 제어가 동일한 레지스터 어드레스들을 포함하는 경우, Vtmp에서의 모든 엘리먼트 데이터 값들은 동일한 벡터 레지스터(예를 들어, 벡터 레지스터 V4)에 기록될 수 있다.
C. 스칼라 값들
[0060] 추가적으로, 치환 제어 벡터(예를 들어, 수직 치환 제어 벡터 또는 수평 치환 제어 벡터)는 벡터 레지스터 외의 메모리 위치에 저장될 수 있다. 하나의 예에서, 치환 제어 벡터는 ROM(read-only memory)에 저장되고 ROM으로부터 판독될 수 있다. 예시적 판독 명령에서, 프로세서(110)는
Figure 112015098861439-pct00003
와 같은 명령을 수신할 수 있고, 여기서, R은 ROM 내의 데이터 구조를 레퍼런싱하는 스칼라 값이다. 수직 치환 제어 벡터는 ROM 내의 데이터 구조(예를 들어, 표)에 저장될 수 있다. 따라서, 수직 치환 제어 벡터를 식별하기 위해, 프로세서(110)는 스칼라 값을 이용하여 ROM 내의 데이터 구조에서 수직 치환 제어 벡터를 식별할 수 있다.
[0061] 또 다른 예시적 판독 명령에서, 프로세서(110)는
Figure 112015098861439-pct00004
와 같은 명령을 수신할 수 있고, 여기서, R은 ROM 내의 데이터 구조를 레퍼런싱하는 스칼라 값이다. 수평 치환 제어 벡터는 ROM 내의 데이터 구조(예를 들어, 표)에 저장될 수 있다. 따라서, 수평 치환 제어 벡터를 식별하기 위해, 프로세서(110)는 스칼라 값을 이용하여 ROM 내의 데이터 구조에서 수평 치환 제어 벡터를 식별할 수 있다.
[0062] 또 다른 판독 예에서, 프로세서(110)는
Figure 112015098861439-pct00005
와 같은 명령을 수신할 수 있고, 여기서, R1은 ROM 내의 제 1 데이터 구조를 레퍼런싱하는 제 1 스칼라 값이고, R2는 ROM 내의 제 2 데이터 구조를 레퍼런싱하는 제 2 스칼라 값이다. 수직 치환 제어 벡터는 ROM 내의 제 1 데이터 구조(예를 들어, 표)에 저장될 수 있고, 수평 치환 제어 벡터는 ROM 내의 제 2 데이터 구조(예를 들어, 표)에 저장될 수 있다. 따라서, 수직 치환 제어 벡터를 식별하기 위해, 프로세서(110)는 제 1 스칼라 값을 이용하여 ROM 내의 제 1 데이터 구조에서 수직 치환 제어 벡터를 식별할 수 있고, 수평 치환 제어 벡터를 식별하기 위해, 프로세서(110)는 제 2 스칼라 값을 이용하여 ROM 내의 제 2 데이터 구조에서 수평 치환 제어 벡터를 식별할 수 있다.
[0063] 유사하게, 기록 명령들은 또한, 스칼라 값들을 포함할 수 있다. 예를 들어, 프로세서(110)는
Figure 112015098861439-pct00006
와 같은 명령을 수신할 수 있고, 여기서, R은 ROM 내의 데이터 구조를 레퍼런싱하는 스칼라 값이다. 수직 치환 제어 벡터는 ROM 내의 데이터 구조(예를 들어, 표)에 저장될 수 있다. 따라서, 수직 치환 제어 벡터를 식별하기 위해, 프로세서(110)는 스칼라 값을 이용하여 ROM 내의 데이터 구조에서 수직 치환 제어 벡터를 식별할 수 있다.
[0064] 또 다른 예시적 기록 명령에서, 프로세서(110)는
Figure 112015098861439-pct00007
와 같은 명령을 수신할 수 있고, 여기서, R은 ROM 내의 데이터 구조를 레퍼런싱하는 스칼라 값이다. 수평 치환 제어 벡터는 ROM 내의 데이터 구조(예를 들어, 표)에 저장될 수 있다. 따라서, 수평 치환 제어 벡터를 식별하기 위해, 프로세서(110)는 스칼라 값을 이용하여 ROM 내의 데이터 구조에서 수평 치환 제어 벡터를 식별할 수 있다.
[0065] 또 다른 기록 예에서, 프로세서(110)는
Figure 112015098861439-pct00008
와 같은 명령을 수신할 수 있고, 여기서, R1은 ROM 내의 제 1 데이터 구조를 레퍼런싱하는 제 1 스칼라 값이고, R2는 ROM 내의 제 2 데이터 구조를 레퍼런싱하는 제 2 스칼라 값이다. 수직 치환 제어 벡터는 ROM 내의 제 1 데이터 구조(예를 들어, 표)에 저장될 수 있고, 수평 치환 제어 벡터는 ROM 내의 제 2 데이터 구조(예를 들어, 표)에 저장될 수 있다. 따라서, 수직 치환 제어 벡터를 식별하기 위해, 프로세서(110)는 제 1 스칼라 값을 이용하여 ROM 내의 제 1 데이터 구조에서 수직 치환 제어 벡터를 식별할 수 있고, 수평 치환 제어 벡터를 식별하기 위해, 프로세서(110)는 제 2 스칼라 값을 이용하여 ROM 내의 제 2 데이터 구조에서 수평 치환 제어 벡터를 식별할 수 있다.
[0066] 이것은, 치환 제어 벡터를 저장하기 위해 벡터 레지스터를 이용할 필요가 없을 수 있기 때문에, 일부 실시예들에서 유리할 수 있다. 따라서, 벡터 레지스터들은 다른 데이터를 저장하는 것이 자유로울 수 있다. 추가적으로, 치환 제어 벡터의 값들은 미리 저장된 값일 수 있어, 패턴을 치환 제어 벡터로 프로그래밍하기 위해 컴퓨팅 사이클들을 소비할 필요가 없을 수 있다.
[0067] 스칼라 값은 명령에서 특정될 수 있다. 실시예에서, 프로세서(110)는 코-프로세서이며, 또 다른 프로세서로부터 스칼라 값을 수신한다. 실시예에서, 프로세서(110)는 메인 메모리 또는 ROM으로부터 스칼라 값을 리트리브할 수 있다. 더욱이, 프로세서(110)는 다른 프로세서로부터 수직 치환 제어 벡터 및/또는 수평 치환 제어 벡터를 수신할 수 있다.
III. 예시적 레지스터 파일
[0068] 도 4는 실시예에 따른 벡터 레지스터 파일을 예시하는 블록도이다.
[0069] 실시예에서, 프로세서(110)는 벡터 레지스터 파일(120) 내의 벡터 레지스터들로부터 판독되고 벡터 레지스터 파일(120) 내의 벡터 레지스터들에 기록되는 SIMD 프로세서이다. 예에서, 벡터 레지스터 파일(120) 내의 각각의 벡터 레지스터는 P 비트 와이드인 워드 0(W0)(122), P 비트 와이드인 워드 1(W1)(124), ...P 비트 와이드인 워드 31(W31)까지 포함할 수 있다. P는 0보다 큰 정수일 수 있다. 벡터 레지스터들은 최소 입도의 바이트들로 구성될 수 있다. 예에서, 벡터 레지스터 파일(120)은 32개의 벡터 레지스터들을 포함하고, 각각의 벡터 레지스터는 1024 비트 와이드이다. 각각의 벡터 레지스터는 32개의 워드들을 포함할 수 있고, 각각의 워드는 32 비트를 포함한다.
[0070] 예에서, P는 임의의 8의 배수(예를 들어, 8, 16, 32, 64 등)일 수 있다. P=32인 경우에도, 치환 제어들은, 32 초과의 비트의 데이터의 구성들이 이용될 수 있도록 서로 인접할 수 있다. 예를 들어, 워드들이 32 비트 와이드이고, 64 비트 와이드인 데이터를 핸들링하는 것이 바람직한 경우, 32 비트 청크들에서의 동일한 제어는, 시스템이 64 비트의 데이터를 핸들링 및 치환할 수 있도록 인접하게 배치될 수 있다.
IV. 예시적 방법들
[0071] 도 5는 실시예에 따라, 하나 또는 둘 이상의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법(500)을 예시하는 흐름도이다. 방법(500)은 제한되는 것으로 의도되지 않으며, 다른 애플리케이션들에서 이용될 수 있다.
[0072] 방법(500)은 단계들(510-550)을 포함한다. 단계(510)에서, 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터가 식별되고, 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함한다. 예에서, 프로세서(110)는 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하고, 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함한다. 수직 치환 제어 벡터에 저장된 레지스터 어드레스들은 벡터 레지스터 파일 내의 하나 또는 둘 이상의 벡터 레지스터들로부터 엘리먼트 데이터 값들을 판독하기 위해 이용될 수 있다. 수직 치환 제어 벡터는 동적 레지스터에 또는 정적 메모리에 저장될 수 있다. 예를 들어, 도 2의 판독 명령에서, 프로세서(110)는 수직 치환 제어 벡터로서 벡터 레지스터 파일로부터의 Vu를 식별할 수 있다. 또 다른 예에서, 프로세서는 ROM로부터 수직 치환 제어 벡터를 리트리브한다.
[0073] 단계(520)에서, 복수의 엘리먼트들의 각각의 엘리먼트에 대해, 수직 치환 제어 벡터로부터의 레지스터 어드레스가 판독된다. 예에서, 복수의 엘리먼트들의 각각의 엘리먼트에 대해, 프로세서(110)는 수직 치환 제어 벡터로부터 레지스터 어드레스를 판독한다. 수직 치환 제어 벡터에서의 레지스터 어드레스들은 수직 방식으로 하나 또는 둘 이상의 벡터 레지스터들로부터 판독하기 위해 이용될 수 있다. 프로세서에 대해 관심있는 엘리먼트 데이터 값들은 레지스터 어드레스들에 로케이팅될 수 있다.
[0074] 단계(530)에서, 복수의 엘리먼트 데이터 값들은 판독된 레지스터 어드레스들에 기초하여 리트리브된다. 예에서, 프로세서(110)는 판독된 레지스터 어드레스들에 기초하여 복수의 엘리먼트 데이터 값들을 리트리브한다. 리트리브된 복수의 엘리먼트 데이터 값들은 임시 벡터에 배치될 수 있다. 예를 들어, 도 2에서, 벡터 레지스터 V4[0]의 어드레스는 Vu[0]에서의 수직 치환 제어 벡터에 저장된다. 그 다음, 벡터 레지스터 V4[0]에서의 엘리먼트 데이터 값은 임시 벡터에 배치될 수 있다. 리트리브된 엘리먼트 데이터 값들은 프로세서에 대해 관심있을 수 있다.
[0075] 단계(540)에서, 출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터가 식별된다. 예에서, 프로세서(110)는 출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별한다. 수평 치환 제어 벡터에 저장된 어드레스들의 세트는 수평 방식으로 출력 벡터에서 리트리브된 복수의 엘리먼트 데이터 값들(예를 들어, 임시 벡터 레지스터에 저장됨)을 배열하기 위해 이용될 수 있다. 수평 치환 제어 벡터는 동적 레지스터에 또는 정적 메모리에 저장될 수 있다. 예를 들어, 도 2의 판독 명령에서, 프로세서(110)는 수평 치환 제어 벡터와 같이 벡터 레지스터 파일로부터의 Vv를 식별할 수 있다. 또 다른 예에서, 프로세서는 ROM으로부터 수평 치환 제어 벡터를 리트리브한다.
[0076] 단계(550)에서, 복수의 엘리먼트 데이터 값들의 리트리브된 엘리먼트 데이터 값들 중 적어도 일부가 수평 치환 제어 벡터에서의 어드레스들의 세트에 기초하여 출력 벡터에 배치된다. 예에서, 프로세서(110)는 수평 치환 제어 벡터에서의 어드레스들의 세트에 기초하여 복수의 엘리먼트 데이터 값들의 리트리브된 엘리먼트 데이터 값들 중 적어도 일부를 출력 벡터에 배치한다. 관심있는 엘리먼트 데이터 값들은 원래 걸쳐있는 다수의 레지스터들을 가질 수 있고, 이 다수의 레지스터들 사이에는 다른 데이터가 분산되어 있다. 그 다음, 출력 벡터는 관심있는 엘리먼트 데이터 값들만을 저장할 수 있다.
[0077] 추가 방법 단계들이 위에서 논의된 단계들(510-550) 전에, 그 동안 또는 그 후 수행될 수 있다는 것이 또한 이해된다. 예를 들어, 방법(500)은 엘리먼트 데이터 값들을 적어도 하나의 출력 벡터에 기록하는 단계들을 포함할 수 있다. 본원에 설명된 방법(500)의 단계들 중 하나 또는 둘 이상이 원하는 대로 상이한 시퀀스에서 생략, 결합 또는 수행될 수 있다는 것이 또한 이해된다.
[0078] 도 6은 실시예에 따라, 엘리먼트 데이터 값들을 벡터 레지스터에 기록하기 위한 방법(600)을 예시하는 흐름도이다. 방법(600)은 제한되는 것으로 의도되지 않으며, 다른 애플리케이션들에서 이용될 수 있다.
[0079] 방법(600)은 단계들(610-660)을 포함한다. 단계(610)에서, 복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터가 판독된다. 예에서, 프로세서(110)는 복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터를 판독한다. 예를 들어, 도 3에서, 프로세서(110)는 입력 벡터로서 벡터 레지스터 파일로부터의 Vu를 식별할 수 있다. 또 다른 예에서, 프로세서 ROM으로부터 입력 벡터를 리트리브한다. 입력 벡터에 저장된 엘리먼트 데이터 값들 중 하나 또는 둘 이상은 수평 치환 제어 벡터 및 수직 치환 제어 벡터에 기초하여 적어도 하나의 벡터 레지스터에 기록될 수 있다.
[0080] 단계(620)에서, 어드레스들의 세트를 포함하는 수평 치환 제어 벡터가 식별된다. 예에서, 프로세서(110)는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별한다. 수평 치환 제어 벡터는 동적 레지스터에 또는 정적 메모리에 저장될 수 있다. 예를 들어, 도 3의 기록 명령에서, 프로세서(110)는 수평 치환 제어 벡터로서 벡터 레지스터 파일로부터의 벡터 레지스터 Vv를 식별할 수 있다. 또 다른 예에서, 프로세서는 ROM으로부터 수평 치환 제어 벡터를 리트리브한다.
[0081] 단계(630)에서, 입력 벡터에서의 복수의 엘리먼트 데이터 값들의 엘리먼트 데이터 값들 중 적어도 일부는 수평 치환 제어 벡터에서의 어드레스들의 세트에 기초하여 재배열된다. 예에서, 프로세서(110)는 수평 치환 제어 벡터에서의 어드레스들의 세트에 기초하여 입력 벡터에서의 복수의 엘리먼트 데이터 값들의 엘리먼트 데이터 값들 중 적어도 일부를 재배열한다. 특히, 수평 치환 제어 벡터에 저장된 어드레스들의 세트는 수평 방식으로 입력 벡터에서의 복수의 엘리먼트 데이터 값들을 재배열하기 위해 이용될 수 있다.
[0082] 단계(640)에서, 재배열된 복수의 엘리먼트 데이터 값들이 임시 벡터에 배치된다. 예에서, 프로세서(110)는 재배열된 복수의 엘리먼트 데이터 값들을 임시 벡터에 배치한다. 예를 들어, 도 3에서, Vtmp(204)는 재배열된 복수의 엘리먼트 데이터 값들을 저장하는 임시 벡터일 수 있다.
[0083] 단계(650)에서, 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터가 식별되고, 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함한다. 예에서, 프로세서(110)는 복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하고, 복수의 엘리먼트들의 각각의 엘리먼트는 레지스터 어드레스를 포함한다. 수직 치환 제어 벡터에 저장된 레지스터 어드레스들은 수직 방식으로 임시 벡터로부터 적어도 하나의 벡터 레지스터로 엘리먼트 데이터 값들을 기록하기 위해 이용될 수 있다. 수직 치환 제어 벡터는 동적 레지스터에 또는 정적 메모리에 저장될 수 있다. 예를 들어, 도 3의 기록 명령에서, 프로세서(110)는 수직 치환 제어 벡터로서 벡터 레지스터 파일로부터의 벡터 레지스터 Vd를 식별할 수 있다. 또 다른 예에서, 프로세서는 ROM으로부터 수직 치환 제어 벡터를 리트리브한다.
[0084] 단계(660)에서, 임시 벡터에서의 엘리먼트 데이터 값들이 수직 치환 제어 벡터에서의 레지스터 어드레스들에 기초하여 적어도 하나의 벡터 레지스터에 배치된다. 예에서, 프로세서(110)는 수직 치환 제어 벡터에서의 레지스터 어드레스들에 기초하여 임시 벡터에서의 엘리먼트 데이터 값들을 적어도 하나의 벡터 레지스터에 배치한다. 예를 들어, 도 3에서, 임시 벡터에서의 엘리먼트 데이터 값들은 벡터 레지스터 Vd에서의 레지스터 어드레스들에 기초하여 벡터 레지스터들 V4, V5, V6, 및/또는 V7에 배치된다. 그 다음, 입력 벡터 Vu에 저장되었던 데이터 엘리먼트 값들은 하나 또는 둘 이상의 벡터 레지스터들에 적절하게 기록될 수 있다.
[0085] 추가 방법 단계들이 위에서 논의된 단계들(610-660) 전에, 그 동안 또는 그 후 수행될 수 있다는 것이 또한 이해된다. 예를 들어, 방법(600)은 하나 또는 둘 이상의 엘리먼트 데이터 값들을 벡터 레지스터에 배치하는 단계들을 포함할 수 있다. 본원에 설명된 방법(600)의 단계들 중 하나 또는 둘 이상이 원하는 대로 상이한 시퀀스에서 생략, 결합 또는 수행될 수 있다는 것이 또한 이해된다.
V. 예시적 무선 디바이스
[0086] 도 7은 실시예에 따른, 디지털 신호 프로세서를 포함하는 무선 디바이스(700)를 예시하는 블록도이다. 디바이스(700)는 프로세서 DSP(digital signal processor)(701)와 같은 프로세서를 포함한다. 명령(201) 및/또는 명령(301)은 메모리(750)에 저장될 수 있고, VRF(120)는 DSP(701)에 포함될 수 있다. 예에서, DSP(701) 및 VFR(129)은 도 1-4 중 하나 또는 둘 이상에 따라 그리고/또는 도 5 및 6의 방법들 중 하나 또는 둘 이상에 따라, 또는 이들의 임의의 결합으로 명령(201) 및/또는 명령(301)을 프로세싱할 수 있다.
[0087] 도 7은 또한, DSP(701) 및 디스플레이(732)에 커플링된 디스플레이 제어기(730)를 도시한다. 코더/디코더(CODEC)(734)는 또한, DSP(701)에 커플링될 수 있다. 스피커(736) 및 마이크로폰(738)은 CODEC(734)에 커플링될 수 있다. 추가적으로, 무선 제어기(740)는 DSP(701) 및 무선 안테나(748)에 커플링될 수 있다. 실시예에서, DSP(701), 디스플레이 제어기(730), 메모리(750), CODEC(734) 및 무선 제어기(740)는 시스템-인-패키지 또는 시스템-온-칩 디바이스(756)에 포함된다.
[0088] 실시예에서, 입력 디바이스(730) 및 파워 서플라이(760)는 시스템-온-칩 디바이스(756)에 커플링된다. 더욱이, 실시예에서, 도 7에 예시된 바와 같이, 디스플레이(732), 입력 디바이스(730), 스피커(736), 마이크로폰(738), 무선 안테나(748) 및 파워 서플라이(760)는 시스템-온-칩 디바이스(756) 외부에 있다. 디스플레이(732), 입력 디바이스(730), 스피커(736), 마이크로폰(738), 무선 안테나(748) 및 파워 서플라이(760) 각각은 인터페이스 또는 제어기와 같은 시스템-온-칩 디바이스(756)의 컴포넌트에 커플링될 수 있다.
[0089] 당업자들은 본원에 개시되는 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 구성들, 모듈들, 회로들, 및 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 결합들로서 구현될 수 있다는 것을 추가로 인식할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 교환가능성을 명백하게 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 구성들, 모듈들, 회로들 및 단계들이 이들의 기능적 관점에서 일반적으로 전술되었다. 이러한 기능성이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지는 전체 시스템 상에 부과되는 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자들은 설명된 기능성을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 이러한 구현 결정들은 본 개시의 범위를 벗어나게 하는 것으로 해석되어서는 안 된다.
[0090] 본원에 개시된 실시예들과 관련하여 설명된 방법 또는 단계들은 직접 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 결합으로 구현될 수 있다. 소프트웨어 모듈은 RAM(random access memory), 플래시 메모리, ROM(read-only memory), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 레지스터들, 하드 디스크, 착탈식(removable) 디스크, CD-ROM(compact disc read-only memory), 또는 당해 기술 분야에 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 ASIC(application-specific integrated circuit)에 상주할 수 있다. ASIC는 컴퓨팅 디바이스 또는 사용자 단말에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스 또는 사용자 단말에서 개별 컴포넌트들로서 상주할 수 있다.
[0091] 개시된 실시예들의 이전의 설명은 임의의 당업자가 개시된 실시예들을 실시하거나 또는 이용할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 수정들은 당업자들에게 쉽게 명백할 것이고, 본원에서 정의된 원리들은 본 개시의 범위를 벗어나지 않고 다른 실시예들에 적용될 수 있다. 따라서, 본 개시는 본원에 도시된 실시예들에 제한되는 것으로 의도된 것이 아니라, 다음의 청구항들에 의해 정의되는 원리들 및 신규한 특징들과 일치하는 가능한 가장 넓은 범위를 따를 것이다. 따라서, 본 개시는 청구항들에 의해서만 제한된다.

Claims (26)

  1. 하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법으로서,
    복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하는 단계 ― 상기 복수의 엘리먼트들은 각각이 복수의 벡터 레지스터들 중 벡터 레지스터를 표시하는 대응하는 복수의 레지스터 어드레스들을 포함함 ―;
    상기 수직 치환 제어 벡터의 상기 복수의 엘리먼트들로부터 상기 복수의 레지스터 어드레스들을 판독하는 단계;
    상기 대응하는 복수의 레지스터 어드레스들에 기초하여 상기 복수의 엘리먼트들에 대해, 상기 복수의 벡터 레지스터들로부터 복수의 엘리먼트 데이터 값들을 리트리브(retrieve)하는 단계 ― 상기 복수의 엘리먼트 데이터 값들의 각각의 엘리먼트 데이터 값은, 상기 수직 치환 제어 벡터 내의 대응하는 레지스터 어드레스의 위치에 대한 일-대-일 대응을 갖는 벡터 레지스터 내의 위치에서, 상기 복수의 벡터 레지스터들 중 상기 대응하는 레지스터 어드레스에 의해 표시되는 상기 벡터 레지스터로부터 리트리브됨 ―;
    출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하는 단계; 및
    상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여, 상기 복수의 엘리먼트 데이터 값들 중 적어도 일부를 상기 출력 벡터에 배치하는 단계를 포함하는,
    하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법.
  2. 제 1 항에 있어서,
    명령과 연관된 데이터를 수신하는 단계;
    상기 수신된 데이터를 상기 복수의 엘리먼트들로 분할하는 단계; 및
    상기 복수의 엘리먼트들을 상기 수직 치환 제어 벡터에 배치하는 단계를 더 포함하는,
    하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 복수의 엘리먼트 데이터 값들을 리트리브하는 단계는, 각각의 엘리먼트 데이터 값을 리트리브하기 위해 간접 어드레스로서 상기 수직 치환 제어 벡터에서의 판독 메모리 어드레스를 이용하는 단계를 포함하는,
    하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 복수의 엘리먼트 데이터 값들 중 상기 적어도 일부를 상기 출력 벡터에 배치하는 단계는, 상기 복수의 엘리먼트 데이터 값들 중 상기 적어도 일부를 상기 출력 벡터에 배치하기 위해 크로스바(crossbar)를 이용하는 단계를 포함하는,
    하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 수직 치환 제어 벡터를 식별하는 단계는 벡터 레지스터 파일에서의 벡터 레지스터를 식별하는 단계를 포함하는,
    하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 수평 치환 제어 벡터를 식별하는 단계는 벡터 레지스터 파일에서의 벡터 레지스터를 식별하는 단계를 포함하는,
    하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법.
  7. 제 1 항에 있어서,
    데이터 구조를 레퍼런싱(reference)하는 스칼라 값을 수신하는 단계를 더 포함하고,
    상기 수직 치환 제어 벡터를 식별하는 단계는 상기 스칼라 값을 이용하여 상기 데이터 구조에서 상기 수직 치환 제어 벡터를 식별하는 단계를 포함하는,
    하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법.
  8. 제 1 항에 있어서,
    데이터 구조를 레퍼런싱하는 스칼라 값을 수신하는 단계를 더 포함하고,
    상기 수평 치환 제어 벡터를 식별하는 단계는 상기 스칼라 값을 이용하여 상기 데이터 구조에서 상기 수평 치환 제어 벡터를 식별하는 단계를 포함하는,
    하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법.
  9. 제 1 항에 있어서,
    상기 복수의 엘리먼트 데이터 값들을 임시(temporary) 벡터에 배치하는 단계를 더 포함하고,
    상기 복수의 엘리먼트 데이터 값들 중 상기 적어도 일부를 상기 출력 벡터에 배치하는 단계는 상기 수평 치환 제어 벡터를 이용하여 상기 임시 벡터를 치환하는 단계를 포함하는,
    하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 방법.
  10. 프로세서를 포함하는 장치로서,
    상기 프로세서는,
    복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하고 ― 상기 복수의 엘리먼트들은 각각이 복수의 벡터 레지스터들 중 벡터 레지스터를 표시하는 대응하는 복수의 레지스터 어드레스들을 포함함 ―;
    상기 수직 치환 제어 벡터의 상기 복수의 엘리먼트들로부터 상기 복수의 레지스터 어드레스들을 판독하고;
    상기 대응하는 복수의 레지스터 어드레스들에 기초하여 상기 복수의 엘리먼트들에 대해, 상기 복수의 벡터 레지스터들로부터 복수의 엘리먼트 데이터 값들을 리트리브하고 ― 상기 복수의 엘리먼트 데이터 값들의 각각의 엘리먼트 데이터 값은, 상기 수직 치환 제어 벡터 내의 대응하는 레지스터 어드레스의 위치에 대한 일-대-일 대응을 갖는 벡터 레지스터 내의 위치에서, 상기 복수의 벡터 레지스터들 중 상기 대응하는 레지스터 어드레스에 의해 표시되는 상기 벡터 레지스터로부터 리트리브됨 ―;
    출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하고; 그리고
    상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여, 상기 복수의 엘리먼트 데이터 값들 중 적어도 일부를 상기 출력 벡터에 배치하기 위해
    구성되는, 장치.
  11. 제 10 항에 있어서,
    상기 프로세서는 벡터 레지스터 파일에서의 벡터 레지스터를 식별하기 위해 추가로 구성되고, 그리고 상기 식별된 벡터 레지스터는 상기 수직 치환 제어 벡터인, 장치.
  12. 제 10 항에 있어서,
    상기 프로세서는 벡터 레지스터 파일에서의 벡터 레지스터를 식별하기 위해 추가로 구성되고, 그리고 상기 식별된 벡터 레지스터는 상기 수평 치환 제어 벡터인, 장치.
  13. 제 10 항에 있어서,
    상기 프로세서는 데이터 구조를 레퍼런싱하는 스칼라 값을 수신하기 위해 추가로 구성되고, 그리고 상기 수직 치환 제어 벡터는 상기 데이터 구조에 저장되는, 장치.
  14. 제 10 항에 있어서,
    상기 프로세서는 데이터 구조를 레퍼런싱하는 스칼라 값을 수신하기 위해 추가로 구성되고, 그리고 상기 수평 치환 제어 벡터는 상기 데이터 구조에 저장되는, 장치.
  15. 동작들을 수행하기 위한 컴퓨터-실행가능 명령들이 저장되는 비-일시적 컴퓨터-판독가능 저장 매체로서,
    상기 동작들은,
    복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하는 것 ― 상기 복수의 엘리먼트들은 각각이 복수의 벡터 레지스터들 중 벡터 레지스터를 표시하는 대응하는 복수의 레지스터 어드레스들을 포함함 ―;
    상기 수직 치환 제어 벡터의 상기 복수의 엘리먼트들로부터 상기 복수의 레지스터 어드레스들을 판독하는 것;
    상기 대응하는 복수의 레지스터 어드레스들에 기초하여 상기 복수의 엘리먼트들에 대해, 상기 복수의 벡터 레지스터들로부터 복수의 엘리먼트 데이터 값들을 리트리브하는 것 ― 상기 복수의 엘리먼트 데이터 값들의 각각의 엘리먼트 데이터 값은, 상기 수직 치환 제어 벡터 내의 대응하는 레지스터 어드레스의 위치에 대한 일-대-일 대응을 갖는 벡터 레지스터 내의 위치에서, 상기 복수의 벡터 레지스터들 중 상기 대응하는 레지스터 어드레스에 의해 표시되는 상기 벡터 레지스터로부터 리트리브됨 ―;
    출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하는 것; 및
    상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여, 상기 복수의 엘리먼트 데이터 값들 중 적어도 일부를 상기 출력 벡터에 배치하는 것
    을 포함하는,
    비-일시적 컴퓨터-판독가능 저장 매체.
  16. 하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 장치로서,
    복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하기 위한 수단 ― 상기 복수의 엘리먼트들은 각각이 복수의 벡터 레지스터들 중 벡터 레지스터를 표시하는 대응하는 복수의 레지스터 어드레스들을 포함함 ―;
    상기 수직 치환 제어 벡터의 상기 복수의 엘리먼트들로부터 상기 복수의 레지스터 어드레스들을 판독하기 위한 수단;
    상기 대응하는 복수의 레지스터 어드레스들에 기초하여 상기 복수의 엘리먼트들에 대해, 상기 복수의 벡터 레지스터들로부터 복수의 엘리먼트 데이터 값들을 리트리브하기 위한 수단 ― 상기 복수의 엘리먼트 데이터 값들의 각각의 엘리먼트 데이터 값은, 상기 수직 치환 제어 벡터 내의 대응하는 레지스터 어드레스의 위치에 대한 일-대-일 대응을 갖는 벡터 레지스터 내의 위치에서, 상기 복수의 벡터 레지스터들 중 상기 대응하는 레지스터 어드레스에 의해 표시되는 상기 벡터 레지스터로부터 리트리브됨 ―;
    출력 벡터에 대응하는 어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하기 위한 수단; 및
    상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여, 상기 복수의 엘리먼트 데이터 값들 중 적어도 일부를 상기 출력 벡터에 배치하기 위한 수단을 포함하는,
    하나 또는 그 초과의 엘리먼트 데이터 값들을 출력 벡터에 배치하기 위한 장치.
  17. 엘리먼트 데이터 값들을 출력 벡터에 기록하기 위한 방법으로서,
    복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터를 판독하는 단계;
    어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하는 단계;
    상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여 상기 입력 벡터에서의 상기 복수의 엘리먼트 데이터 값들 중 적어도 일부를 재배열하는 단계;
    상기 복수의 엘리먼트 데이터 값들 중 상기 재배열된 적어도 일부를 임시 벡터에 배치하는 단계;
    복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하는 단계 ― 상기 복수의 엘리먼트들의 각각의 엘리먼트는 복수의 벡터 레지스터들 중 벡터 레지스터를 표시하는 레지스터 어드레스를 포함함 ―; 및
    상기 수직 치환 제어 벡터에서의 상기 레지스터 어드레스들에 기초하여 상기 임시 벡터에서의 상기 복수의 엘리먼트 데이터 값들을 상기 복수의 벡터 레지스터들 중의 복수에 배치하는 단계를 포함하고,
    상기 복수의 엘리먼트 데이터 값들의 각각의 엘리먼트 데이터 값은, 상기 수직 치환 제어 벡터 내의 대응하는 레지스터 어드레스의 위치에 대한 일-대-일 대응을 갖는 벡터 레지스터 내의 위치에서, 상기 복수의 벡터 레지스터들 중 상기 대응하는 레지스터 어드레스에 의해 표시되는 상기 벡터 레지스터에 배치되는,
    엘리먼트 데이터 값들을 출력 벡터에 기록하기 위한 방법.
  18. 제 17 항에 있어서,
    상기 수평 치환 제어 벡터를 식별하는 단계는 벡터 레지스터 파일에서의 벡터 레지스터를 식별하는 단계를 포함하는,
    엘리먼트 데이터 값들을 출력 벡터에 기록하기 위한 방법.
  19. 제 17 항에 있어서,
    상기 수직 치환 제어 벡터를 식별하는 단계는 벡터 레지스터 파일에서의 벡터 레지스터를 식별하는 단계를 포함하는,
    엘리먼트 데이터 값들을 출력 벡터에 기록하기 위한 방법.
  20. 제 17 항에 있어서,
    데이터 구조를 레퍼런싱하는 스칼라 값을 수신하는 단계를 더 포함하고,
    상기 수평 치환 제어 벡터를 식별하는 단계는 상기 스칼라 값을 이용하여 상기 데이터 구조에서 상기 수평 치환 제어 벡터를 식별하는 단계를 포함하는,
    엘리먼트 데이터 값들을 출력 벡터에 기록하기 위한 방법.
  21. 제 17 항에 있어서,
    데이터 구조를 레퍼런싱하는 스칼라 값을 수신하는 단계를 더 포함하고,
    상기 수직 치환 제어 벡터를 식별하는 단계는 상기 스칼라 값을 이용하여 상기 데이터 구조에서 상기 수직 치환 제어 벡터를 식별하는 단계를 포함하는,
    엘리먼트 데이터 값들을 출력 벡터에 기록하기 위한 방법.
  22. 프로세서를 포함하는 장치로서,
    상기 프로세서는,
    복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터를 판독하고;
    어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하고;
    상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여 상기 입력 벡터에서의 상기 복수의 엘리먼트 데이터 값들 중 적어도 일부를 재배열하고;
    상기 복수의 엘리먼트 데이터 값들 중 상기 재배열된 적어도 일부를 임시 벡터에 배치하고;
    복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하고 ― 상기 복수의 엘리먼트들의 각각의 엘리먼트는 복수의 벡터 레지스터들 중 벡터 레지스터를 표시하는 레지스터 어드레스를 포함함 ―; 그리고
    상기 수직 치환 제어 벡터에서의 상기 레지스터 어드레스들에 기초하여 상기 임시 벡터에서의 상기 복수의 엘리먼트 데이터 값들을 상기 복수의 벡터 레지스터들 중의 복수에 배치하기 위해
    구성되고,
    상기 복수의 엘리먼트 데이터 값들의 각각의 엘리먼트 데이터 값은, 상기 수직 치환 제어 벡터 내의 대응하는 레지스터 어드레스의 위치에 대한 일-대-일 대응을 갖는 벡터 레지스터 내의 위치에서, 상기 복수의 벡터 레지스터들 중 상기 대응하는 레지스터 어드레스에 의해 표시되는 상기 벡터 레지스터에 배치되는, 장치.
  23. 동작들을 수행하기 위한 컴퓨터-실행가능 명령들이 저장되는 비-일시적 컴퓨터-판독가능 저장 매체로서,
    상기 동작들은,
    복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터를 판독하는 것;
    어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하는 것;
    상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여 상기 입력 벡터에서의 상기 복수의 엘리먼트 데이터 값들 중 적어도 일부를 재배열하는 것;
    상기 복수의 엘리먼트 데이터 값들 중 상기 재배열된 적어도 일부를 임시 벡터에 배치하는 것;
    복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하는 것 ― 상기 복수의 엘리먼트들의 각각의 엘리먼트는 복수의 벡터 레지스터들 중 벡터 레지스터를 표시하는 레지스터 어드레스를 포함함 ―; 및
    상기 수직 치환 제어 벡터에서의 상기 레지스터 어드레스들에 기초하여 상기 임시 벡터에서의 상기 복수의 엘리먼트 데이터 값들을 상기 복수의 벡터 레지스터들 중의 복수에 배치하는 것
    을 포함하고,
    상기 복수의 엘리먼트 데이터 값들의 각각의 엘리먼트 데이터 값은, 상기 수직 치환 제어 벡터 내의 대응하는 레지스터 어드레스의 위치에 대한 일-대-일 대응을 갖는 벡터 레지스터 내의 위치에서, 상기 복수의 벡터 레지스터들 중 상기 대응하는 레지스터 어드레스에 의해 표시되는 상기 벡터 레지스터에 배치되는,
    비-일시적 컴퓨터-판독가능 저장 매체.
  24. 엘리먼트 데이터 값들을 출력 벡터에 기록하기 위한 장치로서,
    복수의 엘리먼트 데이터 값들을 포함하는 입력 벡터를 판독하기 위한 수단;
    어드레스들의 세트를 포함하는 수평 치환 제어 벡터를 식별하기 위한 수단;
    상기 수평 치환 제어 벡터에서의 상기 어드레스들의 세트에 기초하여 상기 입력 벡터에서의 상기 복수의 엘리먼트 데이터 값들 중 적어도 일부를 재배열하기 위한 수단;
    상기 복수의 엘리먼트 데이터 값들 중 상기 재배열된 적어도 일부를 임시 벡터에 배치하기 위한 수단;
    복수의 엘리먼트들을 포함하는 수직 치환 제어 벡터를 식별하기 위한 수단 ― 상기 복수의 엘리먼트들의 각각의 엘리먼트는 복수의 벡터 레지스터들 중 벡터 레지스터를 표시하는 레지스터 어드레스를 포함함 ―; 및
    상기 수직 치환 제어 벡터에서의 상기 레지스터 어드레스들에 기초하여 상기 임시 벡터에서의 상기 복수의 엘리먼트 데이터 값들을 상기 복수의 벡터 레지스터들 중의 복수에 배치하기 위한 수단을 포함하고,
    상기 복수의 엘리먼트 데이터 값들의 각각의 엘리먼트 데이터 값은, 상기 수직 치환 제어 벡터 내의 대응하는 레지스터 어드레스의 위치에 대한 일-대-일 대응을 갖는 벡터 레지스터 내의 위치에서, 상기 복수의 벡터 레지스터들 중 상기 대응하는 레지스터 어드레스에 의해 표시되는 상기 벡터 레지스터에 배치되는,
    엘리먼트 데이터 값들을 출력 벡터에 기록하기 위한 장치.
  25. 삭제
  26. 삭제
KR1020157029038A 2013-03-15 2014-03-12 수평 치환을 이용한 벡터 간접 엘리먼트 수직 어드레싱 모드 KR101778175B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/834,785 2013-03-15
US13/834,785 US9639503B2 (en) 2013-03-15 2013-03-15 Vector indirect element vertical addressing mode with horizontal permute
PCT/US2014/023849 WO2014150636A1 (en) 2013-03-15 2014-03-12 Vector indirect element vertical addressing mode with horizontal permute

Publications (2)

Publication Number Publication Date
KR20150132364A KR20150132364A (ko) 2015-11-25
KR101778175B1 true KR101778175B1 (ko) 2017-09-13

Family

ID=50942769

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157029038A KR101778175B1 (ko) 2013-03-15 2014-03-12 수평 치환을 이용한 벡터 간접 엘리먼트 수직 어드레싱 모드

Country Status (8)

Country Link
US (1) US9639503B2 (ko)
EP (1) EP2972792B1 (ko)
JP (1) JP6577450B2 (ko)
KR (1) KR101778175B1 (ko)
CN (1) CN105009075B (ko)
ES (1) ES2688878T3 (ko)
HU (1) HUE040269T2 (ko)
WO (1) WO2014150636A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645820B2 (en) * 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
US10445092B2 (en) * 2014-12-27 2019-10-15 Intel Corporation Method and apparatus for performing a vector permute with an index and an immediate
US11544214B2 (en) 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
GB2540939B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd An apparatus and method for performing a splice operation
EP3394720A4 (en) * 2015-12-24 2019-11-06 Intel Corporation DIFFUSION REDUCTION INSTRUCTION
TWI724066B (zh) * 2015-12-24 2021-04-11 美商英特爾股份有限公司 分散縮減指令
CN111580865B (zh) * 2016-01-20 2024-02-27 中科寒武纪科技股份有限公司 一种向量运算装置及运算方法
US10762164B2 (en) 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
US10884750B2 (en) * 2017-02-28 2021-01-05 Intel Corporation Strideshift instruction for transposing bits inside vector register
EP3602276A1 (en) * 2017-03-31 2020-02-05 Intel Corporation Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements
US11900111B2 (en) 2021-09-24 2024-02-13 Qualcomm Incorporated Permutation instruction

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6233671B1 (en) * 1998-03-31 2001-05-15 Intel Corporation Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions
US5996057A (en) * 1998-04-17 1999-11-30 Apple Data processing system and method of permutation with replication within a vector register file
US6446198B1 (en) * 1999-09-30 2002-09-03 Apple Computer, Inc. Vectorized table lookup
US6665790B1 (en) * 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing
US7739319B2 (en) 2001-10-29 2010-06-15 Intel Corporation Method and apparatus for parallel table lookup using SIMD instructions
JP3845711B2 (ja) 2001-11-08 2006-11-15 独立行政法人 日本原子力研究開発機構 ベクトル計算機上での間接アドレス参照を含む加算の高速処理方法、プログラム及びそれを用いたベクトル計算機
US20030167460A1 (en) 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
CN101061460B (zh) * 2004-09-21 2011-03-30 Nxp股份有限公司 用于混移运算的微处理器设备和方法
US8161271B2 (en) 2007-07-11 2012-04-17 International Business Machines Corporation Store misaligned vector with permute
US8140932B2 (en) 2007-11-26 2012-03-20 Motorola Mobility, Inc. Data interleaving circuit and method for vectorized turbo decoder
GB2456775B (en) 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
US9513905B2 (en) 2008-03-28 2016-12-06 Intel Corporation Vector instructions to enable efficient synchronization and parallel reduction operations
JP5633122B2 (ja) 2009-06-16 2014-12-03 富士通セミコンダクター株式会社 プロセッサ及び情報処理システム
US20120047344A1 (en) 2010-08-17 2012-02-23 Sheaffer Gad S Methods and apparatuses for re-ordering data
US20120060016A1 (en) 2010-09-07 2012-03-08 International Business Machines Corporation Vector Loads from Scattered Memory Locations
US20120260062A1 (en) 2011-04-07 2012-10-11 International Business Machines Corporation System and method for providing dynamic addressability of data elements in a register file with subword parallelism
US10055225B2 (en) * 2011-12-23 2018-08-21 Intel Corporation Multi-register scatter instruction
US9766887B2 (en) * 2011-12-23 2017-09-19 Intel Corporation Multi-register gather instruction
CN104756068B (zh) * 2012-12-26 2018-08-17 英特尔公司 合并相邻的聚集/分散操作

Also Published As

Publication number Publication date
JP6577450B2 (ja) 2019-09-18
WO2014150636A1 (en) 2014-09-25
CN105009075A (zh) 2015-10-28
CN105009075B (zh) 2018-04-03
US20140281372A1 (en) 2014-09-18
JP2016511491A (ja) 2016-04-14
EP2972792A1 (en) 2016-01-20
US9639503B2 (en) 2017-05-02
ES2688878T3 (es) 2018-11-07
EP2972792B1 (en) 2018-07-25
KR20150132364A (ko) 2015-11-25
HUE040269T2 (hu) 2019-02-28

Similar Documents

Publication Publication Date Title
KR101778175B1 (ko) 수평 치환을 이용한 벡터 간접 엘리먼트 수직 어드레싱 모드
KR101834174B1 (ko) 데이터 처리장치 및 방법
CN110770701A (zh) 基于寄存器的矩阵乘法
JP2013175218A5 (ko)
JP2001273277A (ja) 演算処理システム、演算処理方法およびそのプログラム格納装置
CN107315566B (zh) 一种用于执行向量循环移位运算的装置和方法
CN110832455B (zh) 测试向量元素内部的位值
JP2016511491A5 (ko)
JP2012119009A5 (ja) 選択演算を実行するプロセッサ
JP2013543175A5 (ko)
KR102121866B1 (ko) 와이드 데이터 엘리먼트들에 대한 레지스터 쌍을 사용하는 짝수-엘리먼트 및 홀수-엘리먼트 연산들을 가지는 혼합-폭 simd 연산들
JP4901754B2 (ja) 単一命令複数データ実行エンジンのフラグレジスタのための評価ユニット
US11263018B2 (en) Vector processor and control method therefor
JP2018523245A (ja) Simd命令を使用したテーブルルックアップ
US9841979B2 (en) Method and apparatus for shuffling data using hierarchical shuffle units
CN107851022B (zh) 向量长度查询指令
WO2012131433A1 (en) Integrated circuit device and methods of performing bit manipulation therefor
US9639356B2 (en) Arbitrary size table lookup and permutes with crossbar
CN105980980B (zh) 用于运行指令的方法和处理器、用于对指令进行编码的方法和装置以及用于其的记录介质
JP2013517576A5 (ko)
US20180203699A1 (en) Vector operand bitsize control
US10162752B2 (en) Data storage at contiguous memory addresses
US20130238880A1 (en) Operation processing device, mobile terminal and operation processing method
JP2004302647A (ja) ベクトルプロセッサおよびレジスタのアドレス指定方法
TW201131567A (en) Multi-level cell programming speed improvement through program level exchange

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant