[go: up one dir, main page]

KR20020002334A - 정렬된 simd용 범용 레지스터 파일 구조 - Google Patents

정렬된 simd용 범용 레지스터 파일 구조 Download PDF

Info

Publication number
KR20020002334A
KR20020002334A KR1020010038638A KR20010038638A KR20020002334A KR 20020002334 A KR20020002334 A KR 20020002334A KR 1020010038638 A KR1020010038638 A KR 1020010038638A KR 20010038638 A KR20010038638 A KR 20010038638A KR 20020002334 A KR20020002334 A KR 20020002334A
Authority
KR
South Korea
Prior art keywords
operands
group
word
words
bit
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
KR1020010038638A
Other languages
English (en)
Other versions
KR100463121B1 (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 KR20020002334A publication Critical patent/KR20020002334A/ko
Application granted granted Critical
Publication of KR100463121B1 publication Critical patent/KR100463121B1/ko
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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
    • 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/30112Register structure comprising data of variable length
    • 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/3001Arithmetic 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 정렬 독립 SIMD(Single Instruction/Multiple Data) 연산을 지원하는 범용 디지털 신호 처리기(DSP)의 레지스터 파일 구조에 관한 것이다. 레지스터 파일 구조는 레지스터쌍과 정렬 멀티플렉서를 포함한다. 2개의 32비트 그룹 워드는 레지스터쌍에 로드될 수 있다. 각 그룹 워드는 4개의 8비트 오퍼랜드를 포함한다. 32비트 워드의 정렬 상태는 그룹 워드의 포인터 어드레스의 2개의 최하위 비트(LSB)에 의해 결정될 수 있다. 상기 LSB는 정렬 MUX를 제어하여 2개의 32비트 그룹 워드로부터 n 오퍼랜드를 결정하고, 정렬된 32비트 그룹 워드를 병렬 처리하는 실행부로 출력하는데 이용된다.

Description

정렬된 SIMD용 범용 레지스터 파일 구조{GENERAL PURPOSE REGISTER FILE ARCHITECTURE FOR ALIGNED SIMD}
DSP(Digital Signal Processor)는 디지털 비디오, 이미지, 오디오 등의 각종 멀티미디어 애플리케이션에 이용될 수 있다. DSP는 디지털 신호를 조작하여 상기 멀티미디어 파일을 생성 및 개방할 수 있다.
DSP는 SIMD(Single Instruction/Multiple Data)나 데이터 병렬 처리기와 같이 연산한다. SIMD 연산에 있어서, 단일 명령어는 상이한 데이터에 대해 동일한 연산을 수행하는 다수의 처리 소자에 전달된다. 중앙 제어기는 그 명령어 스트림을 상이한 처리 소자로 전달하는 데 이용될 수 있다. SIMD 명령어는 가산, 감산, 승산, 승산-누산(MAC)을 포함하는 여러 형태의 표준 연산을 위해 제공되고, 다수의 특정 명령어는 L1-표-누산(SAA), 클리핑 및 쌍선형(bilinear) 보간을 위해 제공된다.
다수의 비디오 및 이미지 처리 장치는 2차원(2D) 데이터 어레이에 배열된 8비트 워드를 연산한다. 4개의 8비트 오퍼랜드는 32비트 그룹 워드로 압축되어 병렬 처리를 위해 실행부에 전달된다. 2D 어레이에서의 그 8비트 오퍼랜드는 적절한 연산을 위해 32 그룹 워드에 적절하게 정렬되어야 한다.
32비트 워드 정렬 머신에서 8비트로 작업할 경우, 가능한 4개의 상이한 정렬상태, 즉 정렬 상태; 시프트된 8비트 상태; 시프트된 16비트 상태; 시프트된 24비트 상태가 있을 수 있다. DSP는 오정렬된(misaligned) 워드를 검출할 경우, 예외 상황을 발생시킬 수 있다. 그 예외 상황에 응답하여, 정렬 연산은 메모리 인터페이스에서 수행되거나 데이터 레지스터에서 수행되어 8비트 오퍼랜드를 시프트하여 정렬 32비트 워드를 생성한다. 그러나, 상기 정렬 연산에서는 머신의 연산에 추가적인 처리 오버헤드가 있어야 한다.
8비트 SIMD 연산용 정렬 오버헤드는 범용 DSP 내부에서 리소스를 비효율적으로 사용하게 된다. 종종 이러한 비효율성은 처리용 데이터를 준비하기에 적합한 정렬 연산으로 인해 불필요한 사이클을 거치게 된다.
본 발명의, 범용 디지털 신호 처리기(DSP)의 레지스터 파일 구조는 정렬 독립 SIMD(Single Instruction/Multiple Data) 연산을 지원한다. 레지스터 파일 구조는 레지스터쌍과 정렬 멀티플렉서를 포함한다. 2개의 32비트 그룹 워드는 레지스터쌍에 로드될 수 있다. 각 그룹 워드는 4개의 8비트 오퍼랜드를 포함한다. 32비트 워드의 정렬 상태는 그룹 워드의 포인터 어드레스에서 2개의 최하위 비트(LSB)에 의해 결정될 수 있다. 상기 LSB는 정렬 MUX를 제어하여 2개의 32비트 그룹 워드로부터 n 오퍼랜드를 결정하고 정렬된 32비트 그룹 워드를 병렬 처리하는 실행부로 출력하도록 제어된다.
도 1은 실시예에 따른 레지스터 파일 구조의 간략 도면.
도 2는 4개의 정렬 상태에서 32비트 로드를 연산하는 실시예에 따른 레지스터 파일 구조를 도시하는 도면.
도 3a 내지 도 3c는 실시예에 따른 정렬 연산을 도시하는 도면.
도 4는 2개의 레지스터쌍을 포함하는 다른 실시예에 따른 레지스터 파일 구조를 도시하는 도면.
도 5는 2개의 레지스터쌍을 포함하는 또다른 실시예에 따른 레지스터 파일 구조를 도시하는 도면.
도 6은 실시예에 따른 레지스터 파일 구조로 이루어진 디지털 신호 처리기를 통합하는 고화질 텔레비젼의 간략 도면.
<도면의 주요부분에 대한 부호의 설명>
104 : 레지스터
106 : 로드 MUX
108 : 기억 MUX
110 : 정렬 MUX
112 : 레지스터쌍
114 : 제어부
여러 도면에서 같은 기재 부호는 동일 요소를 나타낸다.
도 1은 어드레스 포인터를 이용하여 32비트 그룹 워드의 자동 정렬을 2차원(2D)의 팩 8비트 데이터 어레이에 제공하는 실시예에 따른 레지스터 파일 구조(100)를 도시한다. 레지스터 파일은 다수의 레지스터(R0∼R7)(104)를 포함한다. 로드 멀티플렉서(MUX)(106)는 32비트 로드를 레지스터 파일로 다중화하고, 기억 MUX(108)는 레지스터 파일로부터 기억 워드를 출력하고, 정렬 MUX(110)는 레지스터 R0, R1로 이루어진 레지스터쌍(112)으로부터 정렬된 32비트 그룹을 출력한다. 정렬 MUX(110)와 레지스터 파일은 제어부(114)에 의해 제어된다.
2개의 32비트 그룹 워드(k, k+1)를 데이터 어레이로부터 레지스터쌍(R0, R1) 각각의 데이터 레지스터 중 한 레지스터 각각에 로드함으로써 정렬 연산에 대해 레지스터 파일이 준비된다. 각 8비트 오퍼랜드는 레지스터에서 4개의 메모리 장소(RxLL, RxLH, RxHL, RxHH) 중 하나를 차지한다. 도 2는 레지스터 R2, R3로 이루어진 레지스터쌍(200)에서 32비트 워드에 대한 4개의 상이한 정렬 케이스를 도시한다. 4개의 8비트 오퍼랜드는 일렬로 정렬될 수 있거나(도 2의 (a)) 32비트 워드 경계를 교차시킬 수도 있다(도 2의 (b) 내지 도 2의 (d)).
포인터 어드레스의 2개의 최하위 비트(LSB)(202)는 제어 비트에 의해 마스크 오프(mask off)되어 32비트 그룹 워드에 대한 정렬 상태를 결정하는 데 이용된다. 상기 LSB(202)는 제어 신호로서 정렬 MUX(110)를 제어하여 정렬된 32비트 워드(204)에 해당하는, 레지스터쌍의 8개의 메모리 장소로부터 4개의 8비트 오퍼랜드를 선택하는 데 이용된다. 정렬된 32비트 워드(202)는 그 성분 8비트 오퍼랜드를 병렬 처리하기 위해 실행부에 의해 오퍼랜드(OPA 또는 OPB)로서 출력된다.
도 2의 (a)에 도시된 바와 같이, "00"은 정렬된 워드를 가리킨다. 이 케이스에서, 정렬 MUX(110)는 R2LL, R2LH, R2HL, R2HH에서 오퍼랜드를 선택하여, 그 순서대로, 8비트 오퍼랜드를 포함하는 정렬된 32비트 워드(204)를 출력하도록 제어된다.
도 2의 (b)에 도시된 바와 같이, "01"은 8비트씩 오프셋된 32비트 워드를 가리킨다. 이 케이스에서, 정렬 MUX(110)는 R3HH, R2LL, R2LH, R2HL에서 오퍼랜드를 선택하여, 그 순서대로 8비트 오퍼랜드를 포함하는 정렬된 32비트 워드(206)를 출력하도록 제어된다.
도 2의 (c)에 도시된 바와 같이, "10"은 16비트씩 오프셋된 32비트 워드를 가리킨다. 이 케이스에서, 정렬 MUX(110)는 R3HL, R3HH, R2LL, R2LH에서 오퍼랜드를 선택하여, 그 순서대로 8비트 오퍼랜드를 포함하는 정렬된 32비트 워드(208)를 출력하도록 제어된다.
도 2의 (d)에 도시된 바와 같이, "11"은 24비트씩 오프셋된 32 비트 워드를 가리킨다. 이 케이스에서, 정렬 MUX(110)는 R3LH, R3HL, R3HH, R2LL에서 오퍼랜드를 선택하고, 그 순서대로 8비트 오퍼랜드를 포함하는 정렬된 32비트 워드(210)를 출력하도록 제어된다.
도 3a 내지 도3c는 실시예에 따른 정렬 연산을 도시한다. 상태(300)에서 2D 데이터 어레이의 오정렬된 32비트 워드(k, k+1)를 레지스터(R0, R1)에 로드함으로써 연산이 준비된다(사이클 1). 워드 k는 8비트 오퍼랜드(A, B, C)로 나누어지고, 워드 k+1은 8비트 오퍼랜드(D, E, F, G)를 포함한다. 이 상황에서, 워드(k, k+1)는8비트씩 오프셋된다. 이 워드에 대한 포인터 어드레스의 LSB는 "01"이다. 따라서, 정렬 MUX(110)는 레지스터(R0)로부터 8비트 오퍼랜드(A, B, C)를 선택하고, 상태(302)에서 레지스터(R1)로부터 오퍼랜드(D)를 선택하며, 상태(306)에서 정렬된 32비트 워드(ABCD)(304)를 출력한다. 일단 준비되면, 사이클 당 오직 1 로드만 필요하다. 도 3b에 도시된 바와 같이, 그 다음 사이클(사이클 2)에 있어서, 상태 308에서, 레지스터(R0)에는 32비트 워드(k+2)(HIJK)가 로드된다. 정렬 MUX(110)는 레지스터쌍에서 오퍼랜드를 역다중화하여 판독 반사를 얻을 수 있도록 제어된다. 그 오퍼랜드를 역다중화할 때, 정렬 MUX는 레지스터(R0) 전에 레지스터(R1)를 판독한다. 상태(310)에서, 정렬 MUX는 레지스터(R1)로부터 비선택된 8비트 오퍼랜드(E, F, G)와, 레지스터(R0)로부터 오퍼랜드(H)를 미리 선택한다. 상태(314)에서 정렬 MUX는 처리용 정렬된 32비트 워드(EFGH)(312)를 출력한다.
다음 사이클(사이클 3)에서, R1에는 32비트 워드(k+3)(LMNO)(316)가 로드된다. 정렬 MUX(110)는 상태(318)에서 바이트(I, J, K)를 선택하여 상태(322)에서 32비트 워드(IJKL)를 출력하도록 제어된다. 사이클 3에 있어서, 정렬 MUX(110)는 레지스터(R0, R1)를 포워드 다중화한다. 그러므로, 32비트 로드는 쌍의 각 짝/홀 사이클에서 팩 8비트 어레이를 처리하는 동안 2개의 레지스터(R0, R1) 사이에서 핑퐁으로 전송된다.
도 3a 내지 도 3c에 도시된 연산으로 설명한 바와 같이, 8비트 데이터의 처리 요구 조건은 종종 되폴이되고, 일단 성립되면 일정해진다. 일단 레지스터 파일이 준비되면, 32비트 로드는 최소의 오버헤드로 정렬된다.
범용 DSP에서 오정렬된 32비트 워드를 데이터 레지스터에 로드하는 것은 예외 발생의 원인일 수 있다. 8비트 SIMD 연산은 실행부에서 소용될 8비트 오퍼랜드가 16개씩이나 많이 필요하다. 이는 2개의 레지스터쌍, 즉 4개의 레지스터에 해당한다. 레지스터쌍에 로드하는데 소용되는 2개의 32비트 버스로 인해, 4개의 레지스터는 SIMD 연산 시작 전에 로드되어야 한다. 실시예에 따르면, 특수 명령어, 예컨대, DISALGENEX는 8비트 SIMD 함수 루프를 준비하는 동안 오정렬된 엑세스로 인한 예외 발생을 디스에이블하기 위해 함수를 준비하는 동안 이용될 수 있다. DISALGENEX 명령어는 32비트 경계를 교차하거나 교차하지 않을 1개 또는 2개의 로드 연산과 조합하여 발행될 수 있다. 소정의 명령어 예는 다음과 같다.
(1) DISALGENEX, R1 = [i0++], R3 = [I1++];
(2) DISALGENEX, [p0++p1] = R5, R3 = [i1++];
도 1로 되돌아 가서, 제어부(114)는 로드 MUX(106)가 로드 A에 해당하는 인접한 32비트 그룹 워드를 레지스터쌍(R0/R1)에 로드하도록 제어한다. 제어 비트는 또한 로드 MUX(106)가 로드 B에 해당하는 32비트 그룹 워드를 로드 레지스터(R2)에 로드하도록 제어한다. 로드 A(*loada[1:0])용 포인터 어드레스의 2개의 LSB(202)는 제어부에 의해 마스크 오프되어 제어 신호로서 정렬 MUX(110)에 입력된다. 정렬 MUX는 로드 A의 포인터 어드레스의 LSB에 따라 적합한 4개의 오퍼랜드를 선택하여 정렬된 32비트 워드(OPA)를 출력한다. R2는 32비트 그룹 워드(OPB)를 출력한다. OPA와 OPB에서 8비트 오퍼랜드는 실행부에 의해 연산된다. 이러한 연산으로부터 결과(RESA, RESB)는 레지스터 파일로 재로드될 수 있다.
도 4는 2개의 정렬된 32비트 워드(OPA, OPB)를 출력하기 위해, 단일 포인터 어드레스(*loadb[1:0])에서의 LSB가 2개의 레지스터쌍(R0/R1, R2/R3)으로부터 8개의 8비트 오퍼랜드를 다중화하는데 이용될 수 있는 실시예에 따른 레지스터 파일 구조를 도시한다. 이는 두번째 포인터가 오퍼랜드 기억용으로 이용되는 것을 허용한다. 이 실시예에 따르면, 8비트 SIMD 명령어는 2D 8비트 데이터 어레이에서 인접한 로우 또는 컬럼을 연산하도록 의도된 명령어의 정렬 독립 실행을 허용함으로써 지원될 수 있다. 이러한 유형의 정렬을 지원하는 명령어는 다음식을 포함한다.
dregs = 8b_OP(R1:0, R3:2)AMOD, [im++] = dregs, dregs = [im++];
도 5는 팩 8비트 데이터 어레이에 대하여 각 2개의 포인터에서의 2개의 LSB(im, in)가 8개의 8비트 오퍼랜드를 다중화하는 제어 신호로서 이용되는 실시예에 따른 레지스터 파일 구조를 도시한다. 이는 각 정렬이 상이한 실행부에서 2개의 32비트 그룹 워드를 제공하도록 의도된 것이다. 2개의 정렬 MUX(110)가 설치되고, 각 정렬 MUX(100)에는 제어 신호로서 상이한 포인트의 LSB가 각각 제공된다.
이러한 유형의 정렬을 지원하는 명령어는 다음식을 포함한다.
dregs = 8b_OP(R1:0, R3:2)AMOD, dregs=[im++], dregs = [im++];
dregs = 8b_OP(R1:0, R3:2)AMOD, dregs=[in++], dregs = [in++];
정렬 독립 8비트 SIMD ADD 연산은 실시예에 따라 수행될 수 있다. 쿼드(quad) 8비트 SIMD 명령어는 4개의 16비트 부호 데이터 출력과 2바이트 가산을수행하는 데 이용된다. 32비트 로드(OPA)는 4개의 8비트 오퍼랜드(am+3, am+2, am+1, am)를 포함한다. 32비트 로드(OPB)는 4개의 8비트 오퍼랜드(bm+3, bm+2, bm+1, bm)를 포함한다. OPA를 결정하는 데 이용되는 2개의 32비트 그룹 워드가 레지스터쌍(R0/R1)에 로드될 수 있고, OPB 결정에 이용되는 2개의 32비트 그룹 워드는 레지스터쌍(R2/R3)에 로드될 수 있다. OPA와 OPB의 해당 8비트 오퍼랜드는 더해진다. 가산 오퍼랜드 결과는, 32비트 워드로 그룹화되어 R4, R5, R6, R7로부터 선택된 2개의 목적 레지스터에 저장되는 4개의 16비트 값이다(am+3+bm+3, am+2+bm+2, am+1+bm+1, am+bm).
정렬 독립 8비트 SIMD ADD 연산을 수행하는 명령어는 다음식을 포함한다.
(dregs, dregs) = q2badd(dreg_pair, dreg_pair);
(dregs, dregs) = q2badd(dreg_pair, dreg_pair)R;
예로서 다음이 있다.
(r4, r5) = q2badd(r1:0, r3:2);
(r5, r4) = q2badd(r1:0, r3:2)R.
이 명령어는 항상 32비트 경계 상에 로드가 있다는 것과 2개의 포인터는 I0, I1에 저장되는 것을 가정한다. 로드가 사실상 32비트 경계에서 일어난다 하더라도, 이 값들은 8비트 경계에 대해 유효하다. 포인터(i0, i1)로부터 2개의 LSB는 디코드되어 레지스터쌍(R0/R1, R2/R3) 각각에서 4개의 가능한 정렬 케이스 가운데 하나를선택한다. 워드(k+1)를 포함하는 레지스터는 디폴트로 레지스터(R0, R2)에 속하도록 고려될 수 있고, 워드(k+2)는 레지스터(R1, R3)에 속하도록 고려될 수 있다.
"R" 옵션은, 도 3b와 관련하여 앞서 설명한 바와 같이, 판독 반사가 수행되어야 한다는 것을 명시한다. 이는 어레이 처리 함수를 실행하는 동안 각 쌍의 레지스터 사이에 효율적인 핑퐁 전송을 가능하게 한다.
전술한 정렬 독립 SIMD ADD 연산은 다수의 이미지 기반의 계산을 지원하는 데 이용된다. 예컨대, 감산, 승산, 승산-누산(MAC) 및 L1-표-누산(SAA), 클리핑. 쌍선형 보간에 대한 다수의 특수 명령어를 포함하는 기타 정렬 독립 SIMD 연산은 다양한 실시예에 따라 수행될 수 있다.
바람직한 SIMD 연산에 따라, 32비트 그룹 워드에 대해 상이한 정렬 방법이 이용될 수 있다. 8비트 케이스는 4개의 상이한 정렬 케이스와 함께 앞서 설명하였다. 16비트 데이터 역시 32비트 로드로 그룹화될 수 있다. 상기 로드는 16비트 오퍼랜드가 16비트씩 시프트된 2개의 정렬 케이스, 즉 정렬 케이스, 오정렬 케이스를 갖을 것이다. 로드용 포인터 어드레스의 2개의 LSB는 정렬 케이스, 예컨대, 정렬된 케이스에 대한 "00"과 오정렬된 케이스에 대한 "01"를 결정하는 데 이용될 수 있다. 또다른 케이스는 혼합된 데이터 유형, 예컨대, 혼합 8비트와 16비트 오퍼랜드를 포함하는 32비트 그룹 워드를 연산하는 SIMD 연산에 대해 일반화될 수 있다.
실시예에 따른 레지스터 파일 구조는 다양한 정렬 연산용 데이터를 선처리할 필요를 없앰으로써 각종 비디오 및 이미지 알고리즘에 대하여 높은 처리량을 제공할 수 있다. 이는 상이한 정렬 상황을 처리하도록 의도된 코드에서 유사한 루틴을제거함으로써 코드 사이즈를 감소시킬 수 있으며, 정렬 상태 검출 필요성 제거와 명령어의 적합한 시퀀스로의 연속적인 분기에 의해 사이클 카운트 또한 향상시킬 수 있다. 그러므로, 레지스터 파일 구조는 메모리 인터페이스 부담 없이 실행부 내부에서 8비트 경계의 데이터 정렬을 제공할 수 있다.
전술한 정렬 독립 SIMD 연산을 지원하는 실시예는 특히 비디오와 이미지 기반의 처리를 지원하도록 계획된 연산에 특히 적합하다. 이들은 예컨대, 하프(half) X, 하프 Y, 하프 XY에 대한 8비트 쿼드 보간, 소수 운동 검색 연산 및 운동 보상 연산를 포함한다.
다양한 실시예에 따른 레지스터 파일 구조를 포함하는 범용 DSP는 비디오 압축을 위해 MPEG-1/MPEG-2/MPEG-4/MPEG-4/H.263 미래 표준을 이용하는 비디오 처리 촬상 장치 이용에 더욱 적합할 수 있다.
상기 범용 DSP는 비디오 캠코더, 디지털 카메라, 전자회의, PC 비디오 카드, HDTV 이용에 고려되고 있다. 도 6에 도시된 바와 같이, 디스플레이 화면(604)을 포함한 HDTV(602)용 비디오 처리기(600)는 실시예에 따른 레지스터 파일 구조(608)와, 비디오 처리 연산을 수행하는 명령어를 기억하는 메모리(610)로 이루어진 DSP(606)를 포함한다. 또한, 범용 DSP 역시 이동 전화, 음성 인식 및 기타 애플리케이션에 이용되는 음성 처리기와 같은 디지털 신호 처리를 이용하는 기타 기술과 결합한 이용에 고려되고 있다.
본 발명의 여러 실시예가 설명되었다. 그럼에도 불구하고, 본 발명의 사상과 범위에 벗어나지 않고 다양한 변형 실시예가 이루어질 수 있다. 따라서, 기타 실시예는 다음의 청구범위 내에 있다.
본 발명의 실시예에 따른 레지스터 파일 구조는 다양한 정렬 연산용 데이터를 선처리할 필요를 없앰으로써 각종 비디오 및 이미지 알고리즘에 대하여 높은 처리량을 제공할 수 있다. 이는 상이한 정렬 상황을 처리하도록 의도된 코드에서 유사한 루틴을 제거함으로써 코드 사이즈를 감소시킬 수 있으며, 정렬 상태 검출 필요성 제거와 명령어의 적합한 시퀀스로의 연속적인 분기에 의해 사이클 카운트 또한 향상시킬 수 있다. 그러므로, 레지스터 파일 구조는 메모리 인터페이스 부담 없이 실행부 내부에서 8비트 경계의 데이터 정렬을 제공할 수 있다.
전술한 정렬 독립 SIMD 연산을 지원하는 실시예는 특히 비디오와 이미지 기반의 처리를 지원하도록 계획된 연산에 특히 적합하다.
다양한 실시예에 따른 레지스터 파일 구조를 포함하는 범용 DSP는 비디오 압축을 위해 MPEG-1/MPEG-2/MPEG-4/MPEG-4/H.263 미래 표준을 이용하는 비디오 처리 촬상 장치 이용에 더욱 적합할 수 있다.
이상의 범용 DSP는 비디오 캠코더, 디지털 카메라, 전자회의, PC 비디오 카드, HDTV 이용에 고려되고 있다. 또한, 범용 DSP는 이동 전화, 음성 인식 및 기타 애플리케이션에 이용되는 음성 처리기와 같이 디지털 신호 처리를 이용하는 기타 기술과 결합한 이용에 고려되고 있다.

Claims (29)

  1. 2n 오퍼랜드까지의 집합체를 포함하는 2개 그룹 워드를 기억하기에 적합한 레지스터쌍과,
    상기 레지스터쌍으로부터 n 오퍼랜드를 선택하고 상기 2개의 그룹 워드의 정렬 상태를 나타내는 제어 신호에 응답하여 상기 n 오퍼랜드를 포함하는 정렬된 그룹 워드를 출력하기에 적합한 오퍼랜드 선택기를 포함하는 장치.
  2. 제1항에 있어서, 상기 오퍼랜드 선택기는 멀티플렉서인 것인 장치.
  3. 제1항에 있어서, 상기 제어 신호는 상기 2개 그룹 워드 중 하나의 포인터 어드레스의 2개의 최하위 비트를 포함하는 것인 장치.
  4. 제1항에 있어서, 상기 2개 그룹 워드와 정렬된 그룹 워드 각각은 32비트 워드를 포함하는 것인 장치.
  5. 제1항에 있어서, 상기 n은 4인 것인 장치.
  6. 제1항에 있어서, 상기 n 오퍼랜드는 8비트 워드를 포함하는 것인 장치.
  7. 제1항에 있어서, 상기 n 오퍼랜드는 16비트 워드를 포함하는 것인 장치.
  8. 제1항에 있어서,
    2n 오퍼랜드를 포함하는 2개의 그룹 워드의 제2 세트를 기억하기에 적합한 제2 레지스터쌍을 더 포함하고,
    상기 오퍼랜드 선택기는 상기 제2 레지스터쌍으로부터 n 오퍼랜드를 선택하고, 2개 그룹 워드의 제1 세트의 정렬 상태를 나타내는 제어 신호에 응답하여 상기 n 오퍼랜드를 포함하는 제2의 정렬된 그룹 워드를 출력하기에 적합한 것인 장치.
  9. 제1항에 있어서,
    2n 오퍼랜드를 포함하는 2개의 그룹 워드의 제2 세트를 기억하기에 적합한 제2 레지스터쌍을 더 포함하고,
    상기 오퍼랜드 선택기는 상기 제2 레지스터쌍으로부터 n 오퍼랜드를 선택하고, 2개 그룹 워드의 제2 세트의 정렬 상태를 나타내는 제어 신호에 응답하여 상기 n 오퍼랜드를 포함하는 제2의 정렬된 그룹 워드를 출력하기에 적합한 것인 장치.
  10. 명령어를 기억하여 비디오 처리 연산을 수행하는 메모리와,
    디지털 신호 처리기를 포함하고,
    상기 디지털 신호 처리기는,
    n 오퍼랜드를 포함하는 제1 그룹 워드를 기억하기에 적합한 제1 레지스터와,
    n 오퍼랜드를 포함하는 제2 그룹 워드를 기억하기에 적합한 제2 레지스터와,
    상기 제1 및 제2 레지스터의 2n 오퍼랜드로부터 n 오퍼랜드를 선택하고 상기 제1 그룹 워드의 정렬 상태에 해당하는 제어 신호에 응답하여 상기 n개의 선택된 오퍼랜드를 포함하는 정렬된 그룹 워드를 출력하기에 적합한 것인 비디오 처리기.
  11. 제10항에 있어서, 상기 제어 신호는 제1 그룹 워드와 제2 그룹 워드 중 하나의 포인터 어드레스의 2개의 최하위 비트를 포함하는 것인 비디오 처리기.
  12. 제10항에 있어서, 상기 제1 그룹 워드와 제2 그룹 워드 및 상기 정렬된 그룹 워드 각각은 32비트 워드를 포함하는 것인 비디오 처리기.
  13. 제10항에 있어서, 상기 n은 4인 것인 비디오 처리기.
  14. 제10항에 있어서, 상기 n 오퍼랜드는 8비트 워드를 포함하는 것인 비디오 처리기.
  15. 제10항에 있어서, 상기 n 오퍼랜드는 16비트 워드를 포함하는 것인 비디오 처리기.
  16. n 오퍼랜드를 포함하는 제1 그룹 워드를 로드하는 단계와,
    n 오퍼랜드를 포함하는 제2 그룹 워드를 로드하는 단계와,
    상기 제1 및 제2 그룹 워드의 정렬 상태를 결정하는 단계와,
    상기 결정된 정렬 상태에 따라 상기 제1 및 제2 그룹 워드의 2n 오퍼랜드로부터 n 오퍼랜드를 선택하는 단계와,
    n 오퍼랜드를 포함하는 정렬된 그룹 워드를 출력하는 단계를 포함하는 방법.
  17. 제16항에 있어서, 상기 정렬 상태를 결정하는 단계는 상기 제1 및 제2 그룹 워드 중 하나의 2개의 최하위 비트를 결정하는 단계를 포함하는 것인 방법.
  18. 제16항에 있어서, 상기 제1 및 제2 그룹 워드는 데이터 어레이에서 인접한 워드인 것인 방법.
  19. 제18항에 있어서, 상기 n 오퍼랜드 선택 단계는 상기 제1 및 제2 그룹 워드 내에서 n개의 인접한 오퍼랜드를 선택하는 단계를 포함하는 것인 방법.
  20. 제16항에 있어서,
    n 오퍼랜드를 포함하는 제3 그룹 워드를 로드하는 단계와,
    상기 결정된 정렬 상태에 응답하여 상기 제2 및 제3 그룹 워드의 2n 오퍼랜드로부터 n 오퍼랜드를 선택하는 단계와,
    n 오퍼랜드를 포함하는 제2 정렬 그룹 워드를 출력하는 단계를 더 포함하는방법.
  21. 제20항에 있어서, 상기 n 오퍼랜드 선택 단계는 상기 제2 및 제3 그룹 워드 사이에서 n 오퍼랜드를 역다중화하는 단계를 포함하는 것인 방법.
  22. 제16항에 있어서, 상기 2개의 그룹 워드와 상기 정렬된 그룹 워드 각각은 32비트 워드를 포함하는 것인 장치.
  23. 제16항에 있어서, 상기 n 오퍼랜드는 8비트 워드인 것인 장치.
  24. 그룹 워드에서 정렬 연산을 이용하기 위해, 머신 판독 가능 매체 상에 상주하는 멍령어를 포함하고, 상기 명령어는 상기 머신으로 하여금
    n 오퍼랜드를 포함하는 제1 그룹 워드를 로드하게 하고,
    n 오퍼랜드를 포함하는 제2 그룹 워드를 로드하게 하고,
    상기 제1 및 제2 워드의 정렬 상태를 결정하게 하고,
    상기 결정된 정렬 상태에 응답하여 상기 제1 및 제2 그룹 워드의 2n 오퍼랜드로부터 n 오퍼랜드를 선택하게 하는 것인 장치.
  25. 제24항에 있어서, 상기 머신으로 하여금 상기 정렬 상태를 결정하게 하는 상기 명령어는 상기 머신으로 하여금 상기 제1 및 제2 그룹 워드 중 하나의 2개의 최하위 비트를 결정하게 하는 명령어를 더 포함하는 것인 장치.
  26. 제24항에 있어서, 상기 제1 및 제2 그룹 워드는 데이터 어레이에서 인접한 워드인 것인 장치.
  27. 제26항에 있어서, 상기 머신으로 하여금 n 오퍼랜드를 선택하게 하는 상기 명령어는 상기 머신으로 하여금 상기 제1 및 제2 그룹 워드에서 n개의 인접한 오퍼랜드를 선택하게 하는 명령어를 포함하는 것인 장치.
  28. 제24항에 있어서, 상기 머신으로 하여금,
    n 오퍼랜드를 포함하는 제3 그룹 워드를 로드하게 하는 명령어와,
    결정된 정렬 상태에 응답하여 상기 제2 및 제3 그룹 워드의 2n 오퍼랜드로부터 n 오퍼랜드를 선택하게 하는 명령어와,
    n 오퍼랜드를 포함하는 제2 정렬된 그룹 워드를 출력하게 하는 명령어를 더 포함하는 장치.
  29. 제28항에 있어서, 상기 머신으로 하여금 n 오퍼랜드를 선택하게 하는 명령어는 상기 머신으로 하여금 상기 제2 및 제3 그룹 워드 사이에서 n 오퍼랜드를 역다중화하게 하는 명령어를 더 포함하는 것인 장치.
KR10-2001-0038638A 2000-06-30 2001-06-30 정렬된 simd용 범용 레지스터 파일 구조 Expired - Lifetime KR100463121B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/608,983 2000-06-30
US09/608,983 US7120781B1 (en) 2000-06-30 2000-06-30 General purpose register file architecture for aligned simd

Publications (2)

Publication Number Publication Date
KR20020002334A true KR20020002334A (ko) 2002-01-09
KR100463121B1 KR100463121B1 (ko) 2004-12-23

Family

ID=24438892

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0038638A Expired - Lifetime KR100463121B1 (ko) 2000-06-30 2001-06-30 정렬된 simd용 범용 레지스터 파일 구조

Country Status (5)

Country Link
US (1) US7120781B1 (ko)
JP (1) JP3975231B2 (ko)
KR (1) KR100463121B1 (ko)
CN (1) CN1246789C (ko)
TW (1) TW559709B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190119076A (ko) * 2017-02-23 2019-10-21 에이알엠 리미티드 데이터 처리장치에서의 곱셈-누적

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484441B2 (en) * 2004-03-31 2013-07-09 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths
US7949856B2 (en) * 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit
US9047094B2 (en) 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
US7246218B2 (en) * 2004-11-01 2007-07-17 Via Technologies, Inc. Systems for increasing register addressing space in instruction-width limited processors
US8417922B2 (en) * 2006-08-02 2013-04-09 Qualcomm Incorporated Method and system to combine multiple register units within a microprocessor
US9015452B2 (en) * 2009-02-18 2015-04-21 Texas Instruments Incorporated Vector math instruction execution by DSP processor approximating division and complex number magnitude
CN101930356B (zh) * 2010-08-24 2013-03-20 中国航天科技集团公司第九研究院第七七一研究所 用于浮点协处理器的寄存器文件分组编址、读写控制方法
CN101930355B (zh) * 2010-08-24 2013-07-24 中国航天科技集团公司第九研究院第七七一研究所 实现寄存器文件分组编址、读写控制方法的寄存器电路
KR101699685B1 (ko) * 2010-11-16 2017-01-26 삼성전자 주식회사 명령어 오퍼랜드 변경 장치 및 방법
US9582419B2 (en) * 2013-10-25 2017-02-28 Arm Limited Data processing device and method for interleaved storage of data elements
CN103984524B (zh) * 2014-05-15 2016-07-06 中国航天科技集团公司第九研究院第七七一研究所 一种面向risc处理器的三端口浮点寄存器文件
CN112859377B (zh) * 2019-11-28 2023-03-14 京东方科技集团股份有限公司 一种复用寄存器、三维显示装置及其控制方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63124154A (ja) 1986-11-05 1988-05-27 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 暗証情報発生装置
US4972260A (en) 1988-08-22 1990-11-20 Matsushita Electric Industrial Co., Ltd. Apparatus for coding a moving-picture signal
US5179671A (en) * 1989-03-31 1993-01-12 Bull Hn Information Systems Inc. Apparatus for generating first and second selection signals for aligning words of an operand and bytes within these words respectively
JPH02292647A (ja) * 1989-05-02 1990-12-04 Toshiba Corp 半導体記憶装置
US5253308A (en) * 1989-06-21 1993-10-12 Amber Engineering, Inc. Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing
GB8925723D0 (en) * 1989-11-14 1990-01-04 Amt Holdings Processor array system
JP2842930B2 (ja) 1990-05-16 1999-01-06 株式会社アドバンテスト 半導体集積回路試験装置のテストプロセッサに用いられる命令読み出し回路
US5128759A (en) 1990-05-31 1992-07-07 Sony Corporation Video signal decoder
US5771368A (en) * 1990-10-29 1998-06-23 Sun Microsystems, Inc. Memory addressing scheme for increasing the number of memory locations available in a computer for storing higher precision numbers
JPH04236664A (ja) 1991-01-18 1992-08-25 Sony Corp 演算回路
JPH0530493A (ja) 1991-07-24 1993-02-05 Sony Corp デイジタルビデオ信号の復号化装置
US5319573A (en) 1992-01-15 1994-06-07 Motorola, Inc. Method and apparatus for noise burst detection in a signal processor
JPH06131248A (ja) 1992-10-19 1994-05-13 Minolta Camera Co Ltd 記憶データ読出制御装置
US5651121A (en) * 1992-12-18 1997-07-22 Xerox Corporation Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand
JPH0713762A (ja) 1993-06-22 1995-01-17 Fujitsu Ltd スーパースカラ計算機における命令供給方法
US5544251A (en) 1994-01-14 1996-08-06 Intel Corporation Process and apparatus for pseudo-SIMD processing of image data
US5566250A (en) 1994-01-14 1996-10-15 Intel Corporation Process and apparatus for pseudo-SIMD processing of image data
JPH0863452A (ja) * 1994-08-26 1996-03-08 Nec Corp Simdプロセッサ
US5724275A (en) * 1996-03-22 1998-03-03 Hitachi Microsystems, Inc. Fast multi-operand bit pattern detection method and circuit
US5922066A (en) * 1997-02-24 1999-07-13 Samsung Electronics Co., Ltd. Multifunction data aligner in wide data width processor
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6061779A (en) * 1998-01-16 2000-05-09 Analog Devices, Inc. Digital signal processor having data alignment buffer for performing unaligned data accesses
US6112297A (en) * 1998-02-10 2000-08-29 International Business Machines Corporation Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution
US5996057A (en) * 1998-04-17 1999-11-30 Apple Data processing system and method of permutation with replication within a vector register file
JPH11312085A (ja) 1998-04-28 1999-11-09 Hitachi Ltd プロセッサ
US5951677A (en) 1998-05-29 1999-09-14 Texas Instruments Incorporated Efficient hardware implementation of euclidean array processing in reed-solomon decoding

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190119076A (ko) * 2017-02-23 2019-10-21 에이알엠 리미티드 데이터 처리장치에서의 곱셈-누적

Also Published As

Publication number Publication date
CN1334525A (zh) 2002-02-06
JP3975231B2 (ja) 2007-09-12
KR100463121B1 (ko) 2004-12-23
TW559709B (en) 2003-11-01
JP2002117009A (ja) 2002-04-19
CN1246789C (zh) 2006-03-22
US7120781B1 (en) 2006-10-10

Similar Documents

Publication Publication Date Title
US6556716B2 (en) On-the-fly compression for pixel data
US7191310B2 (en) Parallel processor and image processing apparatus adapted for nonlinear processing through selection via processor element numbers
US8869147B2 (en) Multi-threaded processor with deferred thread output control
KR101072707B1 (ko) 스칼라/벡터 명령들을 사용하여 데이터를 처리하는 시스템 및 방법
US6484255B1 (en) Selective writing of data elements from packed data based upon a mask using predication
KR100463121B1 (ko) 정렬된 simd용 범용 레지스터 파일 구조
US20200058133A1 (en) Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor
EP0398881B1 (en) Memory controller as for a video signal processor
EP0404816A1 (en) Dual mode adder circuitry
EP0386137A1 (en) Processor for expanding a compressed video signal
US8019972B2 (en) Digital signal processor having a plurality of independent dedicated processors
US5307300A (en) High speed processing unit
JP2001084229A (ja) Simd型プロセッサ
US6411652B1 (en) Motion estimation
KR19980041758A (ko) 축소 데이타 경로 폭을 갖는 2-비트 부스 곱셈기
US5860130A (en) Memory interface apparatus including an address modification unit having an offset table for prestoring a plurality of offsets
Tanskanen et al. Byte and modulo addressable parallel memory architecture for video coding
US6990571B2 (en) Method for memory optimization in a digital signal processor
JP2001216275A (ja) 画像処理装置および画像処理方法
KR20010072490A (ko) 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치
US20230409323A1 (en) Signal processing apparatus and non-transitory computer-readable storage medium
JPH05143447A (ja) デイジタルプロセツサ及びその制御方法
JP3844465B2 (ja) イベント・ベクトル・テーブルのオーバーライド
JP2001092658A (ja) データ処理回路及びデータ処理装置
JP2945726B2 (ja) 並列処理システム

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20010630

A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20011112

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20010630

Comment text: Patent Application

PG1501 Laying open of application
N231 Notification of change of applicant
PN2301 Change of applicant

Patent event date: 20030312

Comment text: Notification of Change of Applicant

Patent event code: PN23011R01D

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20040226

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20040914

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20041214

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20041215

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20071206

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20081211

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20091202

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20101130

Start annual number: 7

End annual number: 7

PR1001 Payment of annual fee

Payment date: 20111122

Start annual number: 8

End annual number: 8

FPAY Annual fee payment

Payment date: 20121123

Year of fee payment: 9

PR1001 Payment of annual fee

Payment date: 20121123

Start annual number: 9

End annual number: 9

FPAY Annual fee payment

Payment date: 20131119

Year of fee payment: 10

PR1001 Payment of annual fee

Payment date: 20131119

Start annual number: 10

End annual number: 10

FPAY Annual fee payment

Payment date: 20141124

Year of fee payment: 11

PR1001 Payment of annual fee

Payment date: 20141124

Start annual number: 11

End annual number: 11

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 12

PR1001 Payment of annual fee

Payment date: 20151118

Start annual number: 12

End annual number: 12

FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 13

PR1001 Payment of annual fee

Payment date: 20161123

Start annual number: 13

End annual number: 13

FPAY Annual fee payment

Payment date: 20171211

Year of fee payment: 14

PR1001 Payment of annual fee

Payment date: 20171211

Start annual number: 14

End annual number: 14

PR1001 Payment of annual fee

Payment date: 20181130

Start annual number: 15

End annual number: 15

PR1001 Payment of annual fee

Payment date: 20191202

Start annual number: 16

End annual number: 16

PR1001 Payment of annual fee

Payment date: 20201201

Start annual number: 17

End annual number: 17

PC1801 Expiration of term