KR100874949B1 - 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조 - Google Patents

단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조 Download PDF

Info

Publication number
KR100874949B1
KR100874949B1 KR1020060112964A KR20060112964A KR100874949B1 KR 100874949 B1 KR100874949 B1 KR 100874949B1 KR 1020060112964 A KR1020060112964 A KR 1020060112964A KR 20060112964 A KR20060112964 A KR 20060112964A KR 100874949 B1 KR100874949 B1 KR 100874949B1
Authority
KR
South Korea
Prior art keywords
data
memory
abandoned
internal address
payment
Prior art date
Application number
KR1020060112964A
Other languages
English (en)
Other versions
KR20080044102A (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 삼성전자주식회사
Priority to KR1020060112964A priority Critical patent/KR100874949B1/ko
Priority to JP2007115850A priority patent/JP2008123479A/ja
Priority to US11/806,593 priority patent/US7725641B2/en
Publication of KR20080044102A publication Critical patent/KR20080044102A/ko
Application granted granted Critical
Publication of KR100874949B1 publication Critical patent/KR100874949B1/ko

Links

Images

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
    • 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/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/2312Data placement on disk arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

여기에 개시된 단일 명령 다중 자료 프로세서는, 입력 데이터에 대한 병렬 연산을 수행하는 복수 개의 연산 소자들, 비디오 코덱에서 요구되는 메모리 접근 형태에 대해 충돌 회피 접근이 가능하도록 데이터를 재배치하여 저장하는 메모리, 그리고 상기 연산 소자들의 데이터 액세스시, 상기 메모리로부터 출력되는 복수 개의 데이터를 소정 비트 쉬프트하여 대응되는 연산 소자로 제공하는 데이터 연결부를 포함한다.
SIMD, 단일 명령 다중자료 프로세서, 영상 처리, 충돌회피

Description

단일 명령 다중 자료 프로세서 및 그것을 위한 메모리 어레이 구조{SINGLE INSTRUCTION MULTIPLE DATA PROCESSOR AND MEMORY ARRAY STRUCTURE FOR THE SAME}
도 1은 일반적인 SIMD 프로세서의 구조를 보여주는 도면;
도 2는 본 발명에 따른 SIMD 프로세서의 구조를 보여주는 도면;
도 3은 도 2에 도시된 메모리의 데이터 배치도;
도 4 내지 도 7은 처리하고자 하는 영상 데이터의 논리적인 배치와, 액세스 방식을 보여주는 도면; 그리고
도 8 내지 도 10은 본 발명에 따른 SIMD 프로세서를 이용한 움직임 추정 방법을 설명하기 위한 도면이다.
*도면의 주요 부분에 대한 부호의 설명*
100 : SIMD 프로세서 110 : SIMD 어레이
150 : 데이터 연결부 190 : 메모리
본 발명은 영상 처리 프로세서에 관한 것으로, 좀 더 구체적으로는 영상 처리에 사용되는 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리 구조에 관한 것이다.
디지털 신호처리, 저장매체, 및 전송방식에 관한 기술이 발전함에 따라 음성 정보에 국한되었던 서비스가 멀티미디어 서비스로 진화되었다. 특히, 디지털 TV, IPTV(Internet Protocol Television), VOD(Video On Demand) 등과 같이 멀티미디어 서비스가 다양화되고 단말기의 기술이 발전함에 따라, H.264와 같은 고화질의 영상 압축/복원 기술이 등장하게 되었다. 하지만, 고화질의 영상 압축/복원 기술은 기존의 영상 압축/복원 기술에 비해 더욱 많은 연산량을 필요로 하기 때문에, 서비스 및 기능의 컨버전스에 따라 다중 압축 표준을 지원하기 위한 비디오 코덱 솔루션으로서 프래그래머블 하드웨어 구조에 대한 요구가 높아지고 있다.
상기와 같은 요구에 부응하여 다양한 형태의 ASICs(application-specific integrated circuits) 또는 DSP(digital signal processor) 플랫폼들이 영상 압축/복원을 위해 개발되고 있다. 그러나 이러한 하드웨어적인 구조들은 호환성과 추가적인 비용 증가라는 문제를 가지고 있다. 이와 같은 문제를 해결하기 위해, 적은 비용으로 높은 효율을 얻을 수 있는 장치로 단일 명령 다중 자료(Single Instruction Multiple Data ; SIMD) 프로세서(이하, SIMD 프로세서라 칭함)가 개발되고 있다. SIMD 프로세서는 각각의 SIMD 어레이 내부에 구비된 연산 소자(Processing Element ; PE)를 통해 동일한 명령을 공통으로 수신하고, 수신된 명령을 병렬로 실행한다. 연산 소자(PE)에는 ALU(Arithmetic and Logic Unit)와 같은 연산 회로가 포함된다.
SIMD 프로세서는 하나의 명령으로 복수 개의 데이터를 처리할 수 있기 때문 에, 데이터 처리 능력을 쉽게 향상시킬 수 있다. 특히, SIMD 프로세서는 반복적이고 병렬성이 강한 루틴에 적합하기 때문에, 멀티미디어의 처리나, 그래픽, 음성 통신 등에 많이 적용되고 있다. 대표적인 SIMD 프로세서로, MMX, SSE, MAX-1, MAX-2, Altivec 등이 있다. SIMD로 대표되는 어레이 프로세서 구조, 또는 VLIW(very long instruction word) 등의 병렬 프로세서 구조를 효과적으로 활용하기 위해서는, 가용한 연산 유닛이 항상 연산을 수행할 수 있도록 데이터를 정렬하여 공급해 주는 것이 중요하다. 따라서, 기존의 SIMD 프로세서 내부에는 데이터를 재정렬하기 위한 별도의 회로로서 퍼뮤테이션부(permutation unit)를 구비한다.
도 1은 일반적인 SIMD 프로세서(10)의 구조를 보여주는 도면이다. 도 1에 도시된 SIMD 프로세서의 구조는 2006년 8월 15일, Lee에 의해 취득된 미국특허공보 7,092,526, "METHOD AND SYSTEM FOR PERFORMING SUBWORD PERMUTATION INSTRUCTIONS FOR USE IN TWO-DIMENSIONAL MULTIMEDIA PROCESSING" 등에 게재되어 있다.
도 1을 참조하면, SIMD 프로세서(10)는 벡터 ALU(vector Arithmetic and Logic Unit ; 20), 퍼뮤테이션부(permutation unit ; 30), 벡터 레지스터(vector register ; 40), 및 메모리(90)를 포함한다. 비록 도 1에는 1개의 벡터 ALU(20)가 도시되어 있으나, 고속 병렬 데이터 처리를 수행하기 위해서는 SIMD 프로세서 내에 복수 개의 벡터 ALU(20)가 병렬로 연결된다. 명령이 입력되면, SIMD(10)는 메모리(90)에 저장되어 있는 데이터를 로딩하여 벡터 레지스터(40)에 저장한다. 벡터 레지스터(40)에 저장된 데이터는 퍼뮤테이션부(30)를 통해 재정렬(rearrangement)되어 벡터 ALU(20)로 제공된다. 벡터 ALU(20)는 퍼뮤테이션부(30)를 통해 재정렬된 데이터를 처리한다. 퍼뮤테이션부(30)는 범용의 멀티미디어 연산에 사용되는 데이터를 재정렬하기 위해 크로스바 또는 버터플라이 연결망이 사용된다.
단순한 리니어(linear) 어레이로 구성되는 메모리 뱅크에 대하여 다양한 형태의 병렬 접근이 동시에 가능하도록 데이터를 배치하여 운용하는 기법을 충돌회피 기법(conflict free)이라 하는데, 충돌회피 기법에 따른 데이터의 재배치 또는 재정렬 동작은 퍼뮤테이션부(30)를 통해 수행된다. 퍼뮤테이션부(30)는 데이터 배치와 각 메모리 뱅크에 대한 랜덤 액세스(random access)를 수행하기 위하여 복잡한 퍼뮤테이션 네트워크(permutation network), 또는 복수 개의 단계로 구성된 멀티플렉싱(multiplexing)과 쉬프팅(shifting), 로테이션(rotation) 등의 동작을 수행한다. 따라서, 데이터의 재배치시 소요되는 시간이 많게 된다. 따라서, SIMD 프로세서의 동작 효율을 높이기 위해서는, 메모리(90)에 대한 접근 비용을 최소화하고, 퍼뮤테이션부(30)의 데이터 재정렬 시간을 줄일 수 있는 방안이 필수적으로 요구된다.
따라서, 본 발명의 목적은 동작 속도를 향상시킬 수 있는 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리 어레이 구조를 제공하는 데 있다.
본 발명의 다른 목적은 연산 소자의 메모리 접근 비용을 최소화할 수 있는 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리 어레이 구조를 제공하는 데 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 단일 명령 다중 자료 프로세서는, 입력 데이터에 대한 병렬 연산을 수행하는 복수 개의 연산 소자들; 비디오 코덱에서 요구되는 메모리 접근 형태에 대해 충돌 회피 접근이 가능하도록 데이터를 재배치하여 저장하는 메모리; 그리고 상기 연산 소자들의 데이터 액세스시, 상기 메모리로부터 출력되는 복수 개의 데이터를 소정 비트 쉬프트하여 대응되는 연산 소자로 제공하는 데이터 연결부를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 각각의 연산 소자는 상기 데이터 연결부로부터 제공되는 데이터를 저장하는 레지스터를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 레지스터에 저장된 데이터는 현재 데이터의 연산에 사용된 후, 다음 데이터의 연산에 재사용되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 각각의 연산 소자에서 수행된 연산 결과는 상기 메모리의 일 영역에 저장되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 메모리의 일 영역에 저장된 상기 연산 결과는 상기 각각의 연산 소자로 로딩되어 재사용되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 메모리 접근 형태는 매크로 블록의 동일 로우에 속하는 복수 개의 데이터를 동시에 출력하는 가로 메모리 접근 형태; 상기 매크로 블록의 동일 칼럼에 속하는 복수 개의 데이터를 동시에 출력하는 세로 메모리 접근 형태; 그리고 상기 매크로 블록의 일 영역에 속하는 데이터들을 동시에 출력하는 블록 메모리 접근 형태를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 메모리는 상기 각각의 연산 소자에 대응되는 데이 터를 저장하는 복수 개의 뱅크들을 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 메모리는 상기 데이터 액세스시 상기 복수 개 개의 뱅크들 각각으로부터 복수 개의 데이터를 동시에 출력하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 메모리는 N 개의 내부 어드레스로 구성되고, 상기 각각의 내부 어드레스 번호에는 N 개의 뱅크 번호가 대응되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 각각의 내부 어드레스 번호에 저장되는 데이터 스트림의 시작 뱅크 번호는 상기 내부 어드레스 번호가 1만큼 증가할 때마다 4개의 뱅크 번호만큼씩 쉬프트되는 것을 특징으로 한다.
이 실시예에 있어서, 데이터 스트림의 첫 번째 데이터를 x라 할 때 상기 메모리의 첫 번째 내부 어드레스 y는
Figure 112006083651159-pat00001
의 값을 갖고, 상기 첫 번째 내부 어드레스 y에 대응되는 시작 뱅크 번호는
Figure 112006083651159-pat00002
의 값을 갖는 것을 특징으로 한다.
이 실시예에 있어서, 상기 데이터 연결부는, 상기 메모리로부터 제공되는 각각의 데이터를 소정 비트 쉬프트하는 배럴 쉬프터로 구성되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 배럴 쉬프터에서 쉬프트되는 비트 수는 상기 메모리의 각각의 내부 어드레스 번호에 대응되는 시작 뱅크 번호에 따라 결정되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 단일 명령 다중 자료 프로세서는, 상기 비디오 코덱의 인터폴레이션 동작, 움직임 추정 동작, 및 이산 코사인 변환/역이산 코사인 변환 중 어느 하나에 적용되는 것을 특징으로 한다.
상기의 과제를 이루기 위하여 본 발명에 의한 단일 명령 다중 자료 프로세서의 메모리는, 비디오 코덱에서 요구되는 메모리 접근 형태에 대해 충돌 회피 접근이 가능하도록 데이터를 재배치하여 저장하는 복수 개의 뱅크들을 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 메모리 접근 형태는 매크로 블록의 동일 로우에 속하는 복수 개의 데이터를 동시에 출력하는 가로 메모리 접근 형태; 상기 매크로 블록의 동일 칼럼에 속하는 복수 개의 데이터를 동시에 출력하는 세로 메모리 접근 형태; 그리고 상기 매크로 블록의 일 영역에 속하는 데이터들을 동시에 출력하는 블록 메모리 접근 형태를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 메모리는 N 개의 내부 어드레스로 구성되고, 상기 각각의 내부 어드레스 번호에는 N 개의 뱅크 번호가 대응되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 각각의 내부 어드레스 번호에 저장되는 데이터 스트림의 시작 뱅크 번호는 상기 내부 어드레스 번호가 1만큼 증가할 때마다 4개의 뱅크 번호만큼씩 쉬프트되는 것을 특징으로 한다.
이 실시예에 있어서, 데이터 스트림의 첫 번째 데이터를 x라 할 때 상기 메모리의 첫 번째 내부 어드레스 y는
Figure 112006083651159-pat00003
의 값을 갖고, 상기 첫 번째 내부 어드레스 y에 대응되는 시작 뱅크 번호는
Figure 112006083651159-pat00004
의 값을 갖는 것을 특징으로 한다.
이 실시예에 있어서, 상기 각각의 뱅크에 저장된 데이터는 복수 개의 데이터를 병렬로 처리하는 복수 개의 연산 소자로 동시에 제공되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 각각의 연산 소자에서 수행된 연산 결과는 상기 메모리의 일 영역에 저장되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 메모리의 일 영역에 저장된 상기 연산 결과는 상기 각각의 연산 소자로 로딩되어 재사용되는 것을 특징으로 한다.
(실시예)
이하 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세히 설명한다.
본 발명의 신규한 단일 명령 다중 자료 프로세서(즉, SIMD 프로세서)는 비디오 코덱에서 필수적으로 요구되는 메모리 접근 형태에 대해 제한적으로 충돌 회피(conflict free) 접근이 가능하도록 데이터가 배치된 메모리를 포함한다. 메모리에 저장된 데이터는 복수 개의 데이터 비트를 동시에 쉬프트할 수 있는 데이터 연결부를 통해 대응되는 연산소자들로 직접 제공된다. 따라서, 연산 소자의 메모리 접근 비용이 감소 된다. 그리고, 별도의 데이터 재배치 수단인 퍼뮤테이션 로직을 구현하지 않아도 되기 때문에, 회로가 간단해지고 구현비용이 감소 된다.
도 2는 본 발명에 따른 SIMD 프로세서(100)의 구조를 보여주는 도면이다. 도 2에는 8비트의 화소 데이터 16개를 병렬로 처리할 수 있는 SIMD 프로세서(100)의 구성이 예시적으로 도시되어 있다. 상기 SIMD 프로세서(100)는 H.264와 같이 연산량이 많은 고화질의 영상 압축/복원 표준을 따르는 비디오 코덱(Video CODEC)에 적용될 수 있다.
도 2를 참조하면, 본 발명에 따른 SIMD 프로세서(100)는 SIMD 어레이(110)와 데이터 연결부(data interconnection unit ; 150), 및 메모리(190)를 포함한다. SIMD 어레이(110)는 복수 개(예를 들면, 16개)의 연산 소자들(PE0-PE15)로 구성되며, 각각의 연산 소자 내부에는 ALU와 레지스터가 포함된다. 데이터 연결부(150)는 메모리(190)로부터 전송되는 데이터를 대응되는 연산소자들(PE0-PE15)과 연결시켜 주는 역할을 수행한다.
메모리(190)는 영상 처리에 사용될 화소 데이터를 임시로 저장하는 버퍼 메모리로서의 역할을 수행한다. 메모리(190)는 SRAM(static random access memory)과 같이 랜덤 액세스가 가능한 메모리로 구성될 수 있다. 하지만, 이는 본 발명의 일 실시예에 불과하며, 메모리(190)가 SRAM 이외의 다른 형태의 메모리로 구성 가능함은 이 분야의 통상의 지식을 가진 이들에 있어 자명하다. 아래에서 상세히 설명되겠지만, 본 발명의 SIMD 프로세서(100)에서 처리될 데이터는 충돌 회피(conflict free) 기법을 이용하여 재배치된 후 메모리(190)에 저장된다. 메모리(190)에 저장되는 데이터의 재배치 동작은, SIMD 프로세서(100)의 제반 동작을 제어하는 컨트롤 로직(미 도시됨)의 제어에 따라 수행된다. 메모리(190)에 저장되는 데이터의 재배치 동작에 대해서는 [수학식 1] 및 [수학식 2]를 참조하여 아래에서 상세히 설명될 것이다.
메모리(190)에 영상 데이터를 저장하는 데이터 저장 영역은 16 개의 뱅크(BK0-BK15)로 구분된다. 각각의 뱅크(BK0-BK15)는 1회의 사이클 동안 1개의 데이터를 출력할 수 있다. 본 발명에 따른 데이터 재배치 결과에 따르면, 상기 뱅 크(BK0-BK15)들의 출력 데이터가 서로 충돌되는 일 없이 1회의 사이클 동안 16개의 화소 데이터를 동시에 병렬로 출력할 수 있게 된다. 그 결과, 연산 소자의 메모리 접근 비용과 데이터 로딩 시간이 줄어들게 된다. 한편, 메모리(190)에 저장된 데이터는 소정의 데이터 배치 규칙에 따라 미리 재배치된 후 저장된 것이다. 그러므로, 본 발명에 따른 SIMD 프로세서(100)는 데이터를 재정렬하는 별도의 퍼뮤테이션부를 필요로 하지 않는다. 따라서, 데이터 로딩 속도가 향상될 뿐만 아니라, 하드웨어의 구성이 단순해진다.
충돌 회피 기법에 따라 재배치된 데이터가 저장되어 있는 메모리(190)는 1회의 사이클 동안 복수 개(예를 들면, 16개)의 화소 데이터를 동시에 출력한다. 메모리(190)로부터 출력된 복수 개의 데이터는 데이터 연결부(150)를 통해 쉬프팅된 후, 대응되는 연산소자(PE0-PE15)로 각각 제공된다. 아래에서 상세히 설명되겠지만, 연산소자들(PE0-PE15)로 제공되는 데이터는 H.264 표준에서 사용되는 다양한 형태의 매크로 블록(예를 들면, 16×16, 8×8, 8×4, 4×8, 4×4의 매크로 블록) 형태를 모두 지원할 수 있다. 각각의 연산소자(PE0-PE15) 내부에는 레지스터가 구비되어 있어, 데이터 연결부(150)로부터 제공되는 데이터를 저장한다. 연산소자들(PE0-PE15)의 레지스터(또는 이에 상응하는 메모리 장치)에 저장된 데이터는 비디오 코덱에서 수행되는 연산에 재사용될 수 있다. 따라서, 복잡한 연산이 단순해 질수 있으며, 재사용되는 데이터의 빈도가 증가할수록 전체 연산 속도는 빨라지게 된다.
데이터 연결부(150)는 16 비트 베럴 쉬프터(16-bit Barrel Shifter)로 구성 되며, 상기 16 비트 배럴 쉬프터는 8 비트의 화소(pixel) 데이터를 전달할 수 있도록 8개가 구비된다. 배럴 시프터는 한 개의 연산으로 데이터 워드 내에 있는 다수의 비트를 이동하거나 회전시킬 수 있는 하드웨어 장치이다. 예를 들어 16 비트 배럴 시프터는 1 사이클 동안 좌측이나 우측으로 최대 16 비트씩 이동시킬 수 있다. 따라서, 메모리(190)로부터 출력된 데이터는 데이터 연결부(150)를 통해 단시간 내에 연산소자들(PE0-PE15)로 제공된다.
일반적으로, 비디오 코덱에서는 2차원의 화소들로 이루어진 영상에 대한 연산을 주로 수행하게 된다. 이론적으로 연산소자들(PE0-PE15)(또는 연산유닛)에 대한 연산은 자유방향으로 진행될 수 있다. 그러나, 상기 연산을 수행하기 위한 메모리 접근은 제한된 형태(예를 들면, 가로 방행, 세로 방향, 대각선 방향)로 진행할 수밖에 없다. 그러므로, 본 발명에서는 이와 같은 영상 처리의 특성을 이용하여 비디오 코덱에서 필수적으로 요구되는 메모리 접근 형태에 대해서만 제한적으로 충돌 회피(conflict free) 접근이 가능하도록 메모리(190)에 데이터를 배치한다. 그 결과, 본 발명에 따른 SIMD 프로세서(100)는 하드웨어적인 구성을 최소화하면서도 영상 처리에 사용될 데이터에 대한 재배치를 효과적으로 수행할 수 있게 된다. 특히, 본 발명에 따른 SIMD 프로세서(100)는 연산소자들(PE0-PE15)과 메모리(190) 사이에서 데이터 재정렬을 수행하는 퍼뮤테이션부(30)를 별도로 구비하지 않고도 각각의 연산소자(PE0-PE15)로 데이터를 지속적으로 병렬로 제공할 수 있게 된다. 이 경우, 메모리(190)에서 출력되는 복수 개의 데이터는 데이터 연결부(150)를 통해 대응되는 연산소자들(PE0-PE15)로 직접 제공된다. 따라서, 퍼뮤테이션 로직의 구현비용이 감소되고, 연산 소자의 메모리 접근 비용이 감소된다.
이 경우, 메모리(190)로부터 연산소자들(PE0-PE15)로 제공된 데이터는 각각의 연산소자(PE0-PE15) 내부에 구비된 레지스터에 저장되어, 반복되는 연산에 재 사용될 수 있다. 그 결과, 데이터의 재사용성을 크게 높일 수 있어, 연산 효율을 높일 수 있다. 그리고, 데이터의 재사용은 데이터의 재 로딩의 필요성을 없애주므로, 데이터 로딩에 소비되는 시간을 단축시킬 수 있다. 이러한 기능은 화소 데이터 자체의 재이용에도 적용될 수 있고, 연산 결과의 재이용에도 적용될 수 있다. 연산 결과 또는 중간 연산 결과가 재이용되는 경우, 연산량이 줄어들게 되어 SIMD 프로세서의 연산 효율을 높일 수 있게 된다.
도 3은 도 2에 도시된 메모리(190)의 데이터 배치도이다. 도 3에는 충돌회피 기법을 이용하여 16×16 사이즈의 매크로 블록 데이터를 저장하는 메모리(190)의 데이터 배치도가 도시되어 있다.
도 3에 도시된 데이터 배치도의 가로축(98)은 메모리(190)의 뱅크 번호(Bank Number ; N)를 나타낸다. 상기 데이터 배치도의 세로축(99)은 각각의 뱅크에 대응되는 내부 어드레스 번호(Address Number inside Nth Bank)를 나타낸다. 그리고, 상기 데이터 배치도의 참조번호(95)는 메모리(190)의 칼럼 액세스 패턴(column access pattern)을 의미하고, 참조번호(971, 972)은 메모리(190)의 로우 액세스 패턴(row access pattern)을 각각 의미한다. 그리고, 참조번호(91-94)는 블록 액세스 패턴(block access pattern)을 의미한다. 도 3에 도시된 데이터 배치도를 구성하는 방법은 다음과 같다.
먼저, 16 비트 데이터 스트림의 첫 번째 데이터를 x라 할 때, 메모리(190)의 첫 번째 어드레스 y는 [수학식 1]과 같이 정의된다.
Figure 112006083651159-pat00005
[수학식 1]에서 구해진 메모리(190)의 첫 번째 어드레스 y에 대응되는 시작 뱅크 번호(Start Bank Number) N은 [수학식 2]와 같이 정의된다.
Figure 112006083651159-pat00006
처리하고자 하는 영상 데이터가 저장될 메모리(190)의 물리적인 위치 정보는 [수학식 1] 및 [수학식 2]에 의해 결정된다. 이상과 같은 데이터 배치 방법에 따르면, 1개의 내부 어드레스 번호에는 16 개의 뱅크 번호가 대응된다. 그리고, 각각의 내부 어드레스 번호에 저장되는 데이터 스트림의 시작점(즉, 시작 뱅크 번호)은 내부 어드레스 번호가 1만큼 증가할 때마다 4개의 뱅크 번호만큼씩 쉬프트된다.
도 4 내지 도 7은 처리하고자 하는 영상 데이터의 논리적인 배치와, 액세스 방식을 보여주는 도면이다. 도 4는 16×16 사이즈의 매크로 블록에서 가로(horizontal)(또는 로우(row)) 방향으로 16 화소씩 액세스하는 경우를 보여주는 도면이고, 도 5는 16×16 사이즈의 매크로 블록에서 세로(vertical)(또는 칼럼(column)) 방향으로 16 화소씩 액세스하는 경우를 보여주는 도면이다. 그리고, 도 6 및 도 7은 4×4 사이즈의 매크로 블록으로부터 16 화소씩 액세스하는 경우를 보여주는 도면이다. 도 6에서 액세스 되는 4×4 사이즈의 매크로 블록의 첫 번째 화소의 좌표는 (4m, n)(0≤m, n≤3)의 값을 갖는다. 그리고 도 7에서 액세스 되는 4×4 사이즈의 매크로 블록의 첫 번째 화소의 좌표는 (4m+j, n+k)(0≤ m, n, j, k ≤3)의 값을 갖는다. 도 4 내지 도 6에 도시된 영상 데이터의 구성은 움직임 보상과, 인터폴레이션(interpolation)에 주로 사용되는 데이터 패턴이고, 도 7에 도시된 영상 데이터의 구성은 이산 코사인 변환(discrete cosine transform ; DCT) 또는 역이산 코사인 변환(inverse discrete cosine transform ; IDCT)에 주로 사용되는 데이터 패턴이다. 도 4 내지 도 7에 도시된 각각의 영상 데이터를 처리하기 위한 메모리(190)의 데이터 액세스 방식은 다음과 같다.
먼저 도 3 및 도 4를 참조하면, 로우 단위의 데이터 액세스시(즉, 가로 방향의 액세스시), 참조번호(971, 972)의 로우 액세스 패턴 형태로 데이터들이 메모리(190)로부터 연산소자들(PE0-PE15)로 제공된다. 이 경우, 참조번호(971)의 로우 액세스 패턴에 해당되는 첫 번째 로우의 16 비트의 데이터는 1 사이클 동안 16 개의 뱅크들(BK0-BK15)로부터 출력된다. 이때, 출력되는 각각의 데이터의 논리적인 위치와 물리적인 위치는 서로 일치한다. 그러므로, 메모리(190)로부터 출력되는 16 비트의 데이터는 데이터 연결부(150)를 통해 곧바로 대응되는 연산소자들(PE0-PE15)로 제공된다. 한편, 참조번호(972)의 로우 액세스 패턴에 해당되는 두 번째 로우의 16 비트의 데이터는 1 사이클 동안 16 개의 뱅크들(BK0-BK15)로부터 출력된다. 이때, 출력되는 각각의 데이터의 논리적인 위치와 물리적인 위치는 4 개의 뱅크 위치 만큼(즉, 4 비트만큼) 차이를 갖는다. 그러므로, 메모리(190)로부터 출력 되는 16 비트의 데이터는 데이터 연결부(150)를 통해 4 비트만큼 쉬프트된 후 대응되는 연산소자들(PE0-PE15)로 제공된다. 이와 같은 데이터 연결부(150)의 데이터 쉬프트 동작은 각각의 내부 어드레스 번호에 저장되는 데이터 스트림의 시작점(95)의 위치에 따라 결정된다. 이상과 같은 로우 단위의 데이터 액세스 동작을 16회 반복하면, 16×16 사이즈의 매크로 블록에 대응되는 데이터가 연산소자들(PE0-PE15)로 모두 로딩된다.
계속해서, 도 3 및 도 5를 참조하면, 칼럼 단위의 데이터 액세스시(즉, 세로 방향의 액세스시), 참조번호(95)와 같은 칼럼 액세스 패턴 형태로 데이터들이 메모리(190)로부터 연산소자들(PE0-PE15)로 제공된다. 도 3에서, 참조번호(95)는 16 개의 뱅크들(BK0-BK15)로부터 동시에 액세스 되는 16 개의 데이터 저장 영역들(빗금친 부분 참조) 중 하나만을 예시적으로 표시한 것이다. 데이터 저장 영역에 표시된 숫자(0 내지 15)가 동일한 데이터들이 16 개의 뱅크들(BK0-BK15)로부터 동시에 액세스 된다. 이 경우, 동일한 칼럼 액세스 패턴에 속하는 데이터들(즉, 데이터 저장 영역에 표시된 숫자가 동일한 데이터들)은, 1개의 내부 어드레스가 변동될 때마다 4 개의 뱅크 위치 만큼(즉, 4 비트만큼) 쉬프트되는 구성을 갖는다. 이와 같은 구성에 따르면, 도 5와 같이 논리적으로는 동일한 칼럼에 속하는 데이터라 하더라도 물리적으로는 메모리(190)의 서로 다른 뱅크들(BK0-BK15)에 분산되어 저장되기 때문에, 1 사이클 동안 16 개의 데이터가 동시에 출력될 수 있다. 예를 들면, 데이터 저장 영역에 표시된 숫자가 '0' 인 16 개의 데이터들은 서로 다른 16 개의 뱅크들(BK0-BK15)에 고루 분산되어 있으므로, 액세스 동작시 1 사이클 동안 동시에 출 력될 수 있다. 메모리(190)로부터 동시에 출력된 16 비트의 데이터는 데이터 연결부(150)를 통해 소정 비트만큼 쉬프트되어 대응되는 연산소자들(PE0-PE15)로 제공된다. 데이터 연결부(150)에서 쉬프트 되는 비트 수는 각각의 내부 어드레스 번호에 저장되는 데이터 스트림의 시작점(95)의 위치에 따라 결정된다. 이상과 같은 칼럼 단위의 데이터 액세스 동작을 16회 반복하면, 16×16 사이즈의 매크로 블록에 대응되는 데이터가 연산소자들(PE0-PE15)로 모두 로딩된다.
만일 본 발명과 같이 동일 칼럼 액세스 패턴에 속하는 데이터들이 16 개의 뱅크들(BK0-BK15)에 고루 분산되어 있지 않다면, 액세스 동작시 1 사이클 동안 16 개의 데이터들이 동시에 출력될 수 없을 것이다. 예를 들면, 퍼뮤테이션부(30)를 통해서 데이터를 재정렬하는 종래의 SIMD 프로세서(10)의 경우, 도 5에 도시된 동일 칼럼의 16 비트의 데이터를 로딩하기 위해서는 16회의 사이클 동안 메모리를 액세스해야 한다. 따라서, 본 발명에 따른 SIMD 프로세서(100)의 데이터 액세스 속도는 종래의 SIMD 프로세서(10)에 비해 최대 16배 정도 빨라지는 효과가 있다. 한편, 본 발명에 따른 SIMD 프로세서(100)는 동일 로우 또는 동일 칼럼에 속한 16 비트의 데이터를 메모리(190)로부터 동시에 로딩할 수도 있고, 소정의 블록(예를 들면, 4×4 사이즈의 매크로 블록)에 속하는 16 비트의 데이터가 메모리(190)로부터 동시에 로딩될 수도 있다. 이를 블록 단위의 액세스라 한다.
도 3 및 도 6을 참조하면, 블록 단위의 데이터 액세스시 참조번호(91-94)와 같은 블록 액세스 패턴 형태로 분산되어 있는 16 개의 화소 데이터들이 메모리(190)로부터 연산소자들(PE0-PE15)로 동시에 제공된다. 도 3에서, 참조번호(91- 94)는 16 개의 뱅크들(BK0-BK15)로부터 동시에 액세스 되는 16 개의 데이터 저장 영역들을 예시적으로 표시한 것이다. 블록 액세스 동작시 임의의 위치(4m, 4n)를 기준으로 하여 1개의 내부 어드레스 넘버 당 4 비트의 데이터가 연속해서 액세스 된다. 이 경우, 4×4 사이즈의 매크로 블록에 속하는 16 비트의 데이터는 각각 서로 다른 뱅크들(BK0-BK15)에 저장되어 있다. 그러므로, 상기 4×4 사이즈의 매크로 블록에 속하는 16 비트의 데이터는 1회의 사이클 동안 상기 뱅크들(BK0-BK15)로부터 동시에 출력된다. 메모리(190)로부터 동시에 출력된 16 비트의 데이터는 데이터 연결부(150)를 통해 소정 비트만큼 쉬프트되어 대응되는 연산소자들(PE0-PE15)로 제공된다. 데이터 연결부(150)에서 쉬프트 되는 비트 수는 각각의 내부 어드레스 번호에 저장되는 데이터 스트림의 시작점(95)의 위치에 따라 결정된다. H.264와 같은 영상 표준은, 8×8, 4×8, 8×4와 같이 다양한 형태의 매크로 블록들을 지원한다. 앞에서 설명한 4×4 블록 단위의 데이터 액세스 동작을 2회 반복하게 되면, 4×8 또는 8×4 사이즈의 매크로 블록에 대응되는 데이터들이 액세스된다. 이와 마찬가지로, 8×8 사이즈의 매크로 블록 데이터에 대한 액세스는 4×4 블록 단위의 데이터 액세스 동작을 4회 반복함에 의해 수행된다.
한편, 앞에서 설명된 블록 단위의 데이터 액세스 방법은, 도 6에 도시된 바와 같이 소정 영역에 밀집하여 구성된 데이터뿐만 아니라, 도 7에 도시된 바와 같이 전체 영역에 분산되어 구성된 데이터에도 모두 적용 가능하다. 하지만, 도 6에서 설명된 블록 단위의 데이터 액세스 방법은, 도 6의 ①과 같이 액세스하고자 하는 블록의 시작 어드레스가 4의 배수가 아닌 경우(즉, (4m, n))에는 앞에서 설명된 블록 단위의 데이터 액세스가 불가능하다. 반면에, 도 6의 ②와 같이,액세스하고자 하는 블록의 시작 어드레스가 모두 4의 배수인 경우(즉, (4m, 4n)) 앞에서 설명된 블록 단위의 데이터 액세스가 가능하다.
앞에서 설명한 충돌회피 기법을 따르는 데이터 배치 방법과, 상기 데이터 배치 방법을 채용하는 본 발명의 SIMD 프로세서(100)는, 계산량이 많은 H.264 영상 표준의 16×16 매크로 블록에 대한 인터폴레이션 동작과, 움직임 보상 동작 등에 적용될 수 있다. 그러나, 이는 본 발명이 적용되는 일 예에 불과하며, 복수 개의 영상 데이터를 병렬로 처리하는 다양한 연산 동작에 본 발명의 SIMD 프로세서(100)가 적용될 수 있음은 이 분야의 통상의 지식을 가진 이들에게 있어 자명하다. 뿐만 아니라, 본 발명에 따른 SIMD 프로세서(100)에 적용되는 영상 표준이 H.264 영상 표준에만 국한되지 않는다는 것 또한 이 분야의 통상의 지식을 가진 이들에게 있어 자명하다.
아래에서는, 본 발명에 따른 SIMD 프로세서(100)가 16×16 매크로 블록의 인터폴레이션 동작과 움직임 추정(motion estimation) 동작에 적용되는 경우에 대해 살펴보기로 한다.
H.264는 좀 더 정확한 움직임 보상을 수행하기 위해, 1/2 화소(half-pel) 및 1/4 화소(quarter-pel)를 생성하여 움직임을 예측한다. 1/2 화소 및 1/4 화소와 같은 서브-화소(sub-pixel)를 만들어내기 위해서는, 주변의 화소들을 이용한 인터폴레이션이 수행되어야 한다. 예를 들면, 1/2 화소(half-pel pixel)를 만들어 내기 위해서는 주변의 6 개의 화소를 참조하여 인터폴레이션이 수행된다. 가로 인터폴레 이션(horizontal interpolation)의 경우, 좌우 각 3 개의 화소씩 총 6개의 화소가 사용된다. 16개의 연산 소자(PE0-PE15)가 구비된 본 발명의 SIMD 프로세서(100)를 인터폴레이션 동작에 사용하는 경우, 가로 방향의 메모리 접근만이 가능하다면 6번의 메모리 액세스를 통하여 1 개의 로우에 대한 인터폴레이션이 수행된다. 이러한 연산은 16번 반복되어, 총 96번의 데이터 액세스가 수행된다. 하지만 세로 방향의 메모리 접근이 가능하다면, 처음에는 6번의 메모리 액세스를 수행하여 첫 번째 칼럼(column)에 대한 인터폴레이션을 수행한다. 그리고 나서, 상기 인터폴레이션에 사용한 6개의 화소 데이터 중 5개의 화소 데이터를 다음 칼럼의 인터폴레이션 연산에서 재사용한다. 그 결과, 총 21번의 메모리 액세스만으로도 모든 인터폴레이션을 수행할 수 있게 된다. 본 발명에 따른 SIMD 프로세서(100)의 데이터 재사용 특성은 세로 방향의 메모리 접근시 메모리 액세스 횟수를 현저히 줄일 수 있으며, 연산 속도를 빠르게 향상시킬 수 있다.
도 8 내지 도 10은 본 발명에 따른 SIMD 프로세서(100)를 이용한 움직임 추정 방법을 설명하기 위한 도면이다. 움직임 추정에 사용되는 본 발명의 SIMD 프로세서(100)의 메모리(190)는 도 3에 도시된 데이터 배치 방식에 따라 데이터를 저장한다. 이와 같은 데이터 저장 방식에 따르면 데이터 충돌을 방지하면서도 복수 개의 데이터를 동시에 출력할 수 있다.
본 발명의 SIMD 프로세서(100)에서 움직임 추정을 수행하기 위해서는, 먼저 도 8에 도시된 바와 같이 세로 방향의 메모리 접근을 통해 현재 매크로 블록의 데이터를 16개의 연산 소자(PE0-PE15)로 순차적으로 로딩한다. 각각의 연산 소 자(PE0-PE15)에 로딩된 데이터는 각각의 연산 소자(PE0-PE15) 내부에 구비된 레지스터에 각각 저장된다. 세로 방향의 순차적인 메모리 접근을 통해, 각각의 연산 소자(PE0-PE15)에는 현재의 매크로 블록의 하나의 로우(row)에 해당되는 16개의 8비트 데이터가 저장된다.
계속해서 도 9를 참조하면, 움직임 탐색 영역(search range)이 32×32 사이즈일 경우, 상기 탐색 영역에 포함된 복수 개의 블록들과 가장 유사한 블록을 찾기 위해 좌표를 이동해가며 16×16 매크로 블록의 각 로우에 대한 AD(Absolute Difference)를 계산한다. AD 값은 복수 개의 연산 소자들(PE0-PE15)에서 병렬로 수행된다. 이 경우, 연산 소자들(PE0-PE15)에는 현재 매크로 블록의 하나의 로우(row)에 해당되는 16개의 8비트 데이터가 각각 저장되어 있으므로, 상기 저장된 데이터를 이용하여 AD 연산이 수행된다. 상기 연산 소자들(PE0-PE15)에서 계산된 AD 값은 움직임 추정에 사용될 SAD(Sum of Absolute Difference) 값을 구하기 위한 중간 계산 결과에 해당된다. 각각의 연산 소자(PE0-PE15)에서 계산된 AD 값은 메모리(190)의 일 영역에 저장된다. 메모리(190) 내부에는 복수 개의 데이터 저장 영역이 구비되어 있어, 각각의 연산 소자(PE0-PE15)에서 계산된 AD 값을 순차적으로 저장한다. 예를 들면, 16×16의 매크로 블록의 첫 번째 로우에 대한 AD 값(AD(0,0))은 메모리(190)의 제 1 저장 영역에 저장된다. 상기 매크로 블록의 두 번째 로우에 대한 AD 값(AD(0,1), AD(1,1))은 메모리(190)의 제 1 저장 영역과 제 2 저장 영역에 각각 저장된다. 그리고, 상기 매크로 블록의 세 번째 로우에 대한 AD 값(AD(0,2), AD(1,2), AD(2,2))은 메모리(190)의 제 1 저장 영역, 제 2 저장 영역, 및 제 3 저장 영역에 각각 저장된다. 메모리(190)의 제 1 내지 제 3 저장 영역 등에 저장된 상기 각각의 로우에 대한 AD 계산 결과는, SAD 계산시 다시 계산될 필요가 없이 이전에 수행된 결과를 재사용하게 된다.
도 10을 참조하면, 도 9에서 설명된 방식으로 32×32 사이즈의 탐색 영역의 1개 로우에 대해 AD 값을 계산하고 나면(즉, 32회의 AD 값 계산), 메모리(190)에는 16×16 크기의 AD 값들의 행렬이 16개 생성된다. 생성된 16 개의 AD 값들의 행렬들에 대해 세로 방향의 메모리 접근을 16회 연속해서 진행하면서 상기 AD 값들을 각각의 연산 소자(PE0-PE15) 로딩한다. 연산 소자들(PE0-PE15)은 연속해서 입력되는 AD 값들을 더하여 16×16 매크로 블록의 SAD 값를 구하게 된다.
만일 본 발명에 따른 SIMD 프로세서(100)와 같은 데이터 배치와 데이터 재사용 방식을 따르지 않는 경우, 중복되는 계산이 복수회 수행될 뿐만 아니라 추가적인 가산 트리(adder tree)를 필요로 하게 된다. 이와 달리, 본 발명에 따른 SIMD 프로세서(100)는 움직임 추정을 위한 SAD 계산을 수행함에 있어서, SAD 계산에 사용될 중간 값인 AD 계산 결과를 각각의 로우 별로 저장해놓고, 저장된 AD 계산 결과를 재사용한다. 그 결과, SAD 계산 시간과 메모리 액세스 빈도를 줄일 수 있게 된다. 여기서, 메모리(190)에 저장되는 AD 계산 결과는 도 3에서 설명된 데이터 배치 방법을 근거로 한다. 그 결과, 각각의 연산 소자들(PE0-PE15)로 제공되는 데이터들의 충돌이 방지되면서도 데이터 로딩 시간을 최소화할 수 있게 된다. 한편, 도 9 및 도 10에 도시된 메모리(190)는 화소 데이터를 저장하는 도 2의 메모리와 별도로 구성될 수도 있고, 동일한 메모리로 구성될 수도 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
이상과 같은 본 발명에 의하면, 단일 명령 다중 자료(SIMD) 프로세서의 동작 속도가 향상된다. 그리고, 단일 명령 다중 자료(SIMD) 프로세서에 구비되어 있는 연산 소자(PE)의 메모리 접근 비용이 최소화된다.

Claims (22)

  1. 입력 데이터에 대한 병렬 연산을 수행하는 복수 개의 연산 소자들;
    비디오 코덱에서 요구되는 메모리 접근 형태에 대해 충돌 회피 접근이 가능하도록 데이터를 재배치하여 저장하는 메모리; 그리고
    상기 연산 소자들의 데이터 액세스시, 상기 메모리로부터 출력되는 복수 개의 데이터를 소정 비트 쉬프트하여 대응되는 연산 소자로 제공하는 데이터 연결부를 포함하는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  2. 제 1 항에 있어서,
    상기 각각의 연산 소자는 상기 데이터 연결부로부터 제공되는 데이터를 저장하는 레지스터를 포함하는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  3. 제 2 항에 있어서,
    상기 레지스터에 저장된 데이터는 현재 데이터의 연산에 사용된 후, 다음 데이터의 연산에 재사용되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  4. 제 1 항에 있어서,
    상기 각각의 연산 소자에서 수행된 연산 결과는 상기 메모리의 일 영역에 저장되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  5. 제 4 항에 있어서,
    상기 메모리의 일 영역에 저장된 상기 연산 결과는 상기 각각의 연산 소자로 로딩되어 재사용되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  6. 제 1 항에 있어서,
    상기 메모리 접근 형태는,
    매크로 블록의 동일 로우에 속하는 복수 개의 데이터를 동시에 출력하는 가로 메모리 접근 형태;
    상기 매크로 블록의 동일 칼럼에 속하는 복수 개의 데이터를 동시에 출력하는 세로 메모리 접근 형태; 그리고
    상기 매크로 블록의 일 영역에 속하는 데이터들을 동시에 출력하는 블록 메모리 접근 형태를 포함하는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  7. 청구항 7은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서,
    상기 메모리는 상기 각각의 연산 소자에 대응되는 데이터를 저장하는 복수 개의 뱅크들을 포함하는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  8. 청구항 8은(는) 설정등록료 납부시 포기되었습니다.
    제 7 항에 있어서,
    상기 메모리는 상기 데이터 액세스시 상기 복수 개의 뱅크들 각각으로부터 복수 개의 데이터를 동시에 출력하는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  9. 청구항 9은(는) 설정등록료 납부시 포기되었습니다.
    제 7 항에 있어서,
    상기 메모리는 N 개의 내부 어드레스로 구성되고, 상기 각각의 내부 어드레스 번호에는 N 개의 뱅크 번호가 대응되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  10. 청구항 10은(는) 설정등록료 납부시 포기되었습니다.
    제 9 항에 있어서,
    상기 각각의 내부 어드레스 번호에 저장되는 데이터 스트림의 시작 뱅크 번호는 상기 내부 어드레스 번호가 1만큼 증가할 때마다 4개의 뱅크 번호만큼씩 쉬프트되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  11. 청구항 11은(는) 설정등록료 납부시 포기되었습니다.
    제 9 항에 있어서,
    데이터 스트림의 첫 번째 데이터를 x라 할 때 상기 메모리의 첫 번째 내부 어드레스 y는
    Figure 112006083651159-pat00007
    의 값을 갖고,
    상기 첫 번째 내부 어드레스 y에 대응되는 시작 뱅크 번호는
    Figure 112006083651159-pat00008
    의 값을 갖는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  12. 제 1 항에 있어서,
    상기 데이터 연결부는, 상기 메모리로부터 제공되는 각각의 데이터를 소정 비트 쉬프트하는 배럴 쉬프터로 구성되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  13. 청구항 13은(는) 설정등록료 납부시 포기되었습니다.
    제 12 항에 있어서,
    상기 배럴 쉬프터에서 쉬프트되는 비트 수는 상기 메모리의 각각의 내부 어드레스 번호에 대응되는 시작 뱅크 번호에 따라 결정되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  14. 청구항 14은(는) 설정등록료 납부시 포기되었습니다.
    제 12 항에 있어서,
    상기 단일 명령 다중 자료 프로세서는, 상기 비디오 코덱의 인터폴레이션 동작, 움직임 추정 동작, 및 이산 코사인 변환/역이산 코사인 변환 중 어느 하나에 적용되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서.
  15. 비디오 코덱에서 요구되는 메모리 접근 형태에 대해 충돌 회피 접근이 가능하도록 데이터를 재배치하여 저장하는 복수 개의 뱅크들을 포함하는 것을 특징으로 하는 단일 명령 다중 자료 프로세서의 메모리 어레이.
  16. 청구항 16은(는) 설정등록료 납부시 포기되었습니다.
    상기 메모리 접근 형태는,
    매크로 블록의 동일 로우에 속하는 복수 개의 데이터를 동시에 출력하는 가로 메모리 접근 형태;
    상기 매크로 블록의 동일 칼럼에 속하는 복수 개의 데이터를 동시에 출력하는 세로 메모리 접근 형태; 그리고
    상기 매크로 블록의 일 영역에 속하는 데이터들을 동시에 출력하는 블록 메모리 접근 형태를 포함하는 것을 특징으로 하는 단일 명령 다중 자료 프로세서의 메모리 어레이.
  17. 제 15 항에 있어서,
    상기 메모리는 N 개의 내부 어드레스로 구성되고, 상기 각각의 내부 어드레스 번호에는 N 개의 뱅크 번호가 대응되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서의 메모리 어레이.
  18. 청구항 18은(는) 설정등록료 납부시 포기되었습니다.
    제 17 항에 있어서,
    상기 각각의 내부 어드레스 번호에 저장되는 데이터 스트림의 시작 뱅크 번호는 상기 내부 어드레스 번호가 1만큼 증가할 때마다 4개의 뱅크 번호만큼씩 쉬프트되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서의 메모리 어레이.
  19. 청구항 19은(는) 설정등록료 납부시 포기되었습니다.
    데이터 스트림의 첫 번째 데이터를 x라 할 때 상기 메모리의 첫 번째 내부 어드레스 y는
    Figure 112006083651159-pat00009
    의 값을 갖고,
    상기 첫 번째 내부 어드레스 y에 대응되는 시작 뱅크 번호는
    Figure 112006083651159-pat00010
    의 값을 갖는 것을 특징으로 하는 단일 명령 다중 자료 프로세서의 메모리 어레이.
  20. 제 15 항에 있어서,
    상기 각각의 뱅크에 저장된 데이터는 복수 개의 데이터를 병렬로 처리하는 복수 개의 연산 소자로 동시에 제공되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서의 메모리 어레이.
  21. 청구항 21은(는) 설정등록료 납부시 포기되었습니다.
    제 20 항에 있어서,
    상기 각각의 연산 소자에서 수행된 연산 결과는 상기 메모리의 일 영역에 저장되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서의 메모리 어레이.
  22. 청구항 22은(는) 설정등록료 납부시 포기되었습니다.
    제 21 항에 있어서,
    상기 메모리의 일 영역에 저장된 상기 연산 결과는 상기 각각의 연산 소자로 로딩되어 재사용되는 것을 특징으로 하는 단일 명령 다중 자료 프로세서의 메모리 어레이.
KR1020060112964A 2006-11-15 2006-11-15 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조 KR100874949B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020060112964A KR100874949B1 (ko) 2006-11-15 2006-11-15 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조
JP2007115850A JP2008123479A (ja) 2006-11-15 2007-04-25 Simd及びそれのためのメモリアレイ構造
US11/806,593 US7725641B2 (en) 2006-11-15 2007-06-01 Memory array structure and single instruction multiple data processor including the same and methods thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060112964A KR100874949B1 (ko) 2006-11-15 2006-11-15 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조

Publications (2)

Publication Number Publication Date
KR20080044102A KR20080044102A (ko) 2008-05-20
KR100874949B1 true KR100874949B1 (ko) 2008-12-19

Family

ID=39370526

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060112964A KR100874949B1 (ko) 2006-11-15 2006-11-15 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조

Country Status (3)

Country Link
US (1) US7725641B2 (ko)
JP (1) JP2008123479A (ko)
KR (1) KR100874949B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
KR101553651B1 (ko) 2009-10-13 2015-09-17 삼성전자 주식회사 다중 뱅크 메모리 액세스 장치
US8434074B2 (en) * 2010-02-24 2013-04-30 Intel Corporation Register allocation with SIMD architecture using write masks
KR101292309B1 (ko) * 2011-12-27 2013-07-31 숭실대학교산학협력단 반도체칩 및 메모리 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
CN102880341B (zh) * 2012-08-29 2015-08-05 北京集创北方科技有限公司 触摸屏数据处理系统、方法及专用alu
KR101971173B1 (ko) * 2016-11-23 2019-04-22 주식회사 모르미 병렬 처리부 및 병렬 처리 장치
US10884976B2 (en) 2018-05-22 2021-01-05 Morumi Co., Ltd. Parallel processing unit and device for parallel processing
US20200202198A1 (en) * 2018-12-21 2020-06-25 Waymo Llc Neural network processor
CN109635033B (zh) * 2018-12-27 2023-03-21 贵州省广播电视信息网络股份有限公司 一种千万级存量数据的处理、日志收集及导入数据库的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7092526B2 (en) 2000-05-05 2006-08-15 Teleputers, Llc Method and system for performing subword permutation instructions for use in two-dimensional multimedia processing

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05290188A (ja) 1992-04-15 1993-11-05 Fujitsu Ltd 超並列計算機
DE4322343C2 (de) 1992-07-06 1996-10-02 Mitsubishi Electric Corp Mittel zum Erfassen eines Bewegungsvektors und Verfahren zum Bestimmen eines Bewegungsvektors
US5448310A (en) 1993-04-27 1995-09-05 Array Microsystems, Inc. Motion estimation coprocessor
US6356988B1 (en) * 1999-01-07 2002-03-12 Nec Corporation Memory access system, address converter, and address conversion method capable of reducing a memory access time
KR100779498B1 (ko) 2001-06-15 2007-11-27 엘지전자 주식회사 비디오 코덱의 메모리 액세스 장치 및 방법
KR100401946B1 (ko) 2001-08-10 2003-10-17 박종원 주소계산과 자료이동방법 및 이를 이용한 충돌회피 기억 장치
US6950469B2 (en) 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
US7434024B2 (en) * 2004-08-30 2008-10-07 Ati Technologies, Inc. SIMD processor with register addressing, buffer stall and methods

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7092526B2 (en) 2000-05-05 2006-08-15 Teleputers, Llc Method and system for performing subword permutation instructions for use in two-dimensional multimedia processing

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
박춘자외1 "9가지 부배열 형태의 접근을 위한 충돌회피 기억장치"한국정보처리학회 2002 춘계학술발표논문(상) pp695-698,2002.
박춘자외1,"서브어레이 접근을 위한 충돌회피 기억장치" 한국정보과학회학술대회지,2002 봄,pp43-45,2002.

Also Published As

Publication number Publication date
US20080114921A1 (en) 2008-05-15
US7725641B2 (en) 2010-05-25
KR20080044102A (ko) 2008-05-20
JP2008123479A (ja) 2008-05-29

Similar Documents

Publication Publication Date Title
KR100874949B1 (ko) 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조
US11880760B2 (en) Mixed-precision NPU tile with depth-wise convolution
US7409528B2 (en) Digital signal processing architecture with a wide memory bandwidth and a memory mapping method thereof
JP4733894B2 (ja) 並列データの処理及びシャッフリング
EP1927949A1 (en) Array of processing elements with local registers
US9665540B2 (en) Video decoder with a programmable inverse transform unit
US20110264723A1 (en) System and method for successive matrix transposes
KR101578052B1 (ko) 움직임 추정 장치 및 이를 구비하는 동영상 부호화 장치
CN101156450A (zh) 利用区域的动态高宽比的基于区域的3drs运动估计
US5583803A (en) Two-dimensional orthogonal transform processor
JP5059058B2 (ja) 高速動き探索装置及びその方法
JPH04128982A (ja) プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法
JP2010505158A (ja) 複数のメモリーバンクを有するデータ処理
EP2119245B1 (en) Programmable pattern-based unpacking and packing of data channel information
WO2006027751A1 (en) Interconnections in simd processor architectures
US20050226337A1 (en) 2D block processing architecture
CN101778280B (zh) 一种基于avs运动补偿亮度插值运算的电路及方法
JP3676237B2 (ja) データ処理装置及び演算器
US20040105500A1 (en) Image processing system
US6732131B1 (en) Discrete cosine transformation apparatus, inverse discrete cosine transformation apparatus, and orthogonal transformation apparatus
US5638310A (en) Pixel matrix filter
Yong et al. Acceleration of HEVC transform and inverse transform on ARM NEON platform
EP1882235A2 (en) Image processing circuit with block accessible buffer memory
EP1927950A1 (en) Array of processing elements with local registers
US8296349B2 (en) Discrete cosine (DCT) and inverse discrete cosine transform circuit (IDCT) that executes DCT/IDCT operations with bufferfly stages

Legal Events

Date Code Title Description
A201 Request for examination
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: 20121130

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131129

Year of fee payment: 6