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

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

Info

Publication number
KR100463121B1
KR100463121B1 KR10-2001-0038638A KR20010038638A KR100463121B1 KR 100463121 B1 KR100463121 B1 KR 100463121B1 KR 20010038638 A KR20010038638 A KR 20010038638A KR 100463121 B1 KR100463121 B1 KR 100463121B1
Authority
KR
South Korea
Prior art keywords
group
operands
word
words
bit
Prior art date
Application number
KR10-2001-0038638A
Other languages
English (en)
Other versions
KR20020002334A (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

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
    • 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
    • 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)의 레지스터 파일 구조에 관한 것이다. 레지스터 파일 구조는 레지스터쌍과 정렬 다중화기(MUX)를 포함한다. 2개의 32비트 그룹 워드가 레지스터쌍에 로드될 수 있다. 각 그룹 워드는 4개의 8비트 오퍼랜드를 포함한다. 32비트 워드의 정렬 상태는 그 그룹 워드의 포인터 어드레스의 2개의 최하위 비트(LSB)에 의해 결정될 수 있다. 이들 LSB는 2개의 32비트 그룹 워드로부터 n 오퍼랜드를 선택하고, 정렬된 32비트 그룹 워드를 병렬 처리를 위해 실행부로 출력하도록 정렬 MUX를 제어하는 데 이용된다.

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-노름(norm)-누산(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는 2개의 32비트 그룹 워드로부터 n개의 오퍼랜드를 결정하고 정렬된 32비트 그룹 워드를 병렬 처리를 위해 실행부로 출력하도록 정렬 MUX를 제어하는 데 이용된다.
도 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)를 포워드 다중화한다. 그에 따라, 레지스터쌍의 2개의 레지스터(R0, R1) 사이에서 각 짝/홀 사이클마다 패킹된 8비트 어레이를 처리하는 동안 32비트 로드가 핑퐁된다.
도 3a 내지 도 3c에 도시한 연산에서 설명한 바와 같이, 8비트 데이터의 처리 요건은 종종 되폴이되고, 일단 성립되면 일정해진다. 일단 레지스터 파일이 준비되면, 32비트 로드는 최소의 오버헤드로 정렬된다.
범용 DSP에서 오정렬된 32비트 워드를 데이터 레지스터에 로드하는 것은 예외 발생의 원인일 수 있다. 8비트 SIMD 연산에는 실행부에서 소용될 8비트 오퍼랜드가 16개씩이나 많이 필요하다. 이것은 2개의 레지스터쌍, 즉 4개의 레지스터에 해당한다. 레지스터쌍에 로드하는데 소용되는 2개의 32비트 버스로 인해, 4개의 레지스터는 SIMD 연산을 시작하기 전에 로드되어야 한다. 본 발명의 실시예에 따라, 8비트 SIMD 함수 루프를 준비하면서, 오정렬된 액세스로 인한 예외 발생을 디스에이블하기 위해 함수를 준비하는 동안 특수 명령어, 예컨대 DISALGENEX를 이용할 수 있다. 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비트 오퍼랜드를 다중화하는데 이용될 수 있는 실시예에 따른 레지스터 파일 구조(400)를 도시하고 있다. 이것에 의해, 오퍼랜드를 기억하기 위해 두번째 포인터를 이용할 수 있다. 이 실시예에 따라, 2D 8비트 데이터 어레이의 인접한 로우 또는 컬럼에 대하여 연산하도록 계획된 명령어가 정렬 독립 실행되게 함으로써 8비트 SIMD 명령어를 지원할 수 있다. 이러한 유형의 정렬을 지원하는 명령어는 다음식을 포함한다.
dregs = 8b_OP(R1:0, R3:2)AMOD, [im++] = dregs, dregs = [im++];
도 5는 패킹된 8비트 데이터 어레이에 대하여, 2개의 포인터(im, in) 각각에서 2개의 LSB가 8개의 8비트 오퍼랜드를 다중화하는 제어 신호로서 이용되는 실시예에 따른 레지스터 파일 구조(500)를 도시하고 있다. 이것은 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`, 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비트 경계 상에 데이터 정렬을 제공하여, 그에 따라 그 결과 32비트로드/기억 연산을 확보할 수 있다.
전술한 정렬 독립 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비트 경계 상에 데이터 정렬을 제공하며, 그 결과 32비트 로드/기억 연산을 확보할 수 있다.

Claims (29)

  1. 총계로 최대 2n 오퍼랜드를 포함하는 2개 그룹 워드를 기억하도록 구성된 레지스터쌍과,
    상기 2개의 그룹 워드의 정렬 상태를 나타내는 제어 신호에 응답하여, 상기 레지스터쌍으로부터 n 오퍼랜드를 선택하고, 상기 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개 그룹 워드의 제1 세트의 정렬 상태를 나타내는 제어 신호에 응답하여, 상기 제2 레지스터쌍으로부터 n 오퍼랜드를 선택하고, 상기 n 오퍼랜드를 포함하는 제2의 정렬된 그룹 워드를 출력하도록 구성된 것인 장치.
  9. 제1항에 있어서,
    2n 오퍼랜드를 포함하는 2개의 그룹 워드의 제2 세트를 기억하도록 구성된 제2 레지스터쌍을 더 포함하고,
    상기 오퍼랜드 선택기는 2개 그룹 워드의 제2 세트의 정렬 상태를 나타내는 제어 신호에 응답하여. 상기 제2 레지스터쌍으로부터 n 오퍼랜드를 선택하고, 상기 n 오퍼랜드를 포함하는 제2의 정렬된 그룹 워드를 출력하도록 구성된 것인 장치.
  10. 비디오 처리 연산을 수행하도록 명령어를 기억하는 메모리와,
    디지털 신호 처리기를 포함하고,
    상기 디지털 신호 처리기는,
    n 오퍼랜드를 포함하는 제1 그룹 워드를 기억하도록 구성된 제1 레지스터와,
    n 오퍼랜드를 포함하는 제2 그룹 워드를 기억하도록 구성된 제2 레지스터와,
    상기 제1 그룹 워드의 정렬 상태에 대응하는 제어 신호에 응답하여, 상기 제1 및 제2 레지스터의 2n 오퍼랜드로부터 n 오퍼랜드를 선택하고, 상기 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 오퍼랜드를 선택하게 하며,
    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용 범용 레지스터 파일 구조 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 KR20020002334A (ko) 2002-01-09
KR100463121B1 true KR100463121B1 (ko) 2004-12-23

Family

ID=24438892

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0038638A 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)

Families Citing this family (13)

* 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
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
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
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处理器的三端口浮点寄存器文件
KR102425668B1 (ko) * 2017-02-23 2022-07-28 에이알엠 리미티드 데이터 처리장치에서의 곱셈-누적
CN112859377B (zh) * 2019-11-28 2023-03-14 京东方科技集团股份有限公司 一种复用寄存器、三维显示装置及其控制方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03175563A (ja) * 1989-11-14 1991-07-30 Amt Holdings Ltd プロセッサ配列システムおよびプロセッサ配列の操作方法
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
JPH0863452A (ja) * 1994-08-26 1996-03-08 Nec Corp Simdプロセッサ
WO1999014663A2 (en) * 1997-09-12 1999-03-25 Siemens Microelectronics, Inc. Data processing unit with digital signal processing capabilities
KR19990072271A (ko) * 1998-02-10 1999-09-27 포만 제프리 엘 고성능의추론적인오정렬로드연산
US6061779A (en) * 1998-01-16 2000-05-09 Analog Devices, Inc. Digital signal processor having data alignment buffer for performing unaligned data accesses

Family Cites Families (21)

* 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 半導体記憶装置
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
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
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JPH03175563A (ja) * 1989-11-14 1991-07-30 Amt Holdings Ltd プロセッサ配列システムおよびプロセッサ配列の操作方法
JPH0863452A (ja) * 1994-08-26 1996-03-08 Nec Corp Simdプロセッサ
WO1999014663A2 (en) * 1997-09-12 1999-03-25 Siemens Microelectronics, Inc. Data processing unit with digital signal processing capabilities
US6061779A (en) * 1998-01-16 2000-05-09 Analog Devices, Inc. Digital signal processor having data alignment buffer for performing unaligned data accesses
KR19990072271A (ko) * 1998-02-10 1999-09-27 포만 제프리 엘 고성능의추론적인오정렬로드연산

Also Published As

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

Similar Documents

Publication Publication Date Title
US10996955B2 (en) Method for performing random read access to a block of data using parallel LUT read instruction in vector processors
KR100463121B1 (ko) 정렬된 simd용 범용 레지스터 파일 구조
US6556716B2 (en) On-the-fly compression for pixel data
KR100415417B1 (ko) 이미지-처리프로세서
US6941446B2 (en) Single instruction multiple data array cell
US6343337B1 (en) Wide shifting in the vector permute unit
CN117632257A (zh) 将有效位通道作为矢量断言暴露于cpu
US7107429B2 (en) Data access in a processor
US5307300A (en) High speed processing unit
JP2001084229A (ja) Simd型プロセッサ
US5958000A (en) Two-bit booth multiplier with reduced data path width
US20060155925A1 (en) Data access in a processor
US7130985B2 (en) Parallel processor executing an instruction specifying any location first operand register and group configuration in two dimensional register file
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
US20080229063A1 (en) Processor Array with Separate Serial Module
US5502834A (en) Memory interface apparatus for carrying out complex operation processing
US7814296B2 (en) Arithmetic units responsive to common control signal to generate signals to selectors for selecting instructions from among respective program memories for SIMD / MIMD processing control
US5715175A (en) Device for providing pixels to a series of operators of a circuit for compressing motion pictures
JPH05143447A (ja) デイジタルプロセツサ及びその制御方法
US20050283581A1 (en) Data reading structure
JP2002108833A (ja) 並列プロセッサ及びそれを用いた画像処理装置
GB2382677A (en) Data access in a processor
JP2002207591A (ja) ディジタル信号処理装置及び方法
JPH05143719A (ja) ラスター・オペレーシヨン処理装置

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121123

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20131119

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20141124

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20171211

Year of fee payment: 14