KR100331136B1 - 멀티미디어정보용역코사인변환함수를수행하는컴퓨터시스템 - Google Patents

멀티미디어정보용역코사인변환함수를수행하는컴퓨터시스템 Download PDF

Info

Publication number
KR100331136B1
KR100331136B1 KR1019980706989A KR19980706989A KR100331136B1 KR 100331136 B1 KR100331136 B1 KR 100331136B1 KR 1019980706989 A KR1019980706989 A KR 1019980706989A KR 19980706989 A KR19980706989 A KR 19980706989A KR 100331136 B1 KR100331136 B1 KR 100331136B1
Authority
KR
South Korea
Prior art keywords
computer system
instruction
discrete cosine
inverse discrete
cosine transform
Prior art date
Application number
KR1019980706989A
Other languages
English (en)
Other versions
KR19990087552A (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 KR19990087552A publication Critical patent/KR19990087552A/ko
Application granted granted Critical
Publication of KR100331136B1 publication Critical patent/KR100331136B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Discrete Mathematics (AREA)
  • Complex Calculations (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

이차원의 역 이산 코사인 변환을 수행하는 컴퓨터 시스템(100)은 멀티미디어 입력 장치(125,126), 메모리(104) 및 프로세서(109)를 포함하고 있다. 프로세서(109)는 SIMD 수학적 명령과 SIMD 시프트 명령을 실행하여 상기 변환을 실행한다. 시프팅은 정밀도를 유지하는데 사용된다.

Description

멀티미디어 정보용 역코사인 변환 함수를 수행하는 컴퓨터 시스템{A COMPUTER SYSTEM PERFORMING AN INVERSE COSINE TRANSFER FUNCTION FOR USE WITH MULTIMEDIA INFORMATION}
컴퓨터 멀티미디어 애플리케이션은 전형적으로 오디오 신호와 비디오 영상을 나타내는 작은 데이터 값을 갖는 많은 양의 데이터를 처리하는 것에 관련되어 있다. 멀티미디어 데이터를 처리하는 것은 데이터 값을 더 효율적으로 전송, 계산, 엔코딩, 압축, 또는 다른 처리 알고리즘에 대한 일련의 변환 계수로 전환시키는 방법인 변환 엔코딩을 수행하는 것을 포함하고 있다.
더 상세하게, 상기 멀티미디어 데이터 값은 시간의 함수로서 신호를 나타낸다. 변환 계수는 예를 들어 주파수 함수와 같은 신호를 나타낸다. 고속 푸리에 변환(FFT), 이산 코사인 변환(DCT), 및 Z 변환을 포함하여, 다수의 변환 알고리즘이 있다. 역 이산 코사인 변환(iDCT)과 같은 대응 역 변환 알고리즘은 변환 계수를 샘플 데이터 값으로 전환한다. 이러한 여러 알고리즘은 십진수에 연관된 복수의 수학적 단계를 포함하고 있다.
대부분의 종래 시스템에서, 십진수에 관련된 수학적 단계는 부동 소수점의 수학적 소프트웨어 루틴의 라이브러리 또는 부동 소수점 코프로세서를 이용하여 수행된다. 부동 소수점의 숫자는 가수와 지수를 이용한 제한된 정확성으로 나타낸 십진수이다. 도 1은 부동 소수점의 숫자가 컴퓨터 시스템의 레지스터와 메모리에 전형적으로 표시되는 방법의 일실시예를 설명하고 있다. 상기 부동 소수점의 숫자는 가수부(10)와 지수부(20)로 분할한 메모리의 고정 사이즈를 취한다. 가수부(10)는 표시되어 있는 십진수의 최대 유효 숫자를 표시한다. 지수부(20)는 십진수가 배치될 수 있는 자리를 표시한다. 라이브러리 숫자의 부동 소수점 표현식을 이용하여, 부동 소수점 숫자의 값 = 가수 ×2지수로서 표현될 수 있다.
범용 프로세서로 실행하는 부동 소수점의 수학적 소프트웨어 루틴의 라이브러리를 이용하여 부동 소수점 연산을 수행하면 시간이 소모된다. 상기 계산이 실시간에 수행되어야 한다면, 이 방법은 부적합하다.
이러한 문제점을 개선하기 위해, 여러 컴퓨터 프로세서는 부동 소수점 코프로세서를 구비하고 있다. 부동 소수점 코프로세서는 부동 소수점 값에 대해 계산을 전용으로 수행하는 프로세서이다. 부동 소수점 코프로세서는 메인 프로세서 집적 회로에 밀접하게 결합되어 있는 별개의 집적 회로상에 상주할 수 있거나, 부동 소수점 코프로세서는 동작이 중앙 처리기 코어와 병렬인 온 칩 프로세서일 수 있다.
그러나, 실시간에 상당한 양의 수학적 처리 단계를 필요로 하는 애플리케이션에 있어서, 부동 소수점 코프로세서조차도 원하는 수행을 제공하지 못할 수 있다. 예를 들어, 실시간동안의 비디오 정보의 압축 및 압축 해제는 원활한 비디오 데이터 스트림을 제공하기 위해 고속으로 수행되어야 할 상당한 양의 처리 단계를 필요로 한다. 따라서, 부동 소수점의 수학적 소프트웨어 루틴의 라이브러리 또는 부동 소수점 코프로세서를 이용하여 상당히 더 빠른 부동 소수점 연산을 필요로 하는 연산을 실행하는 방법을 갖고자 한다.
발명의 개요
역 이산 변환을 이용하여 멀티미디어 데이터를 처리하는 방법이 설명되어 있다. 본 발명은 더 빠르게 처리될 수 있도록 부동 소수점 정보대신에 고정 소수점 정보를 이용한다. 고정 소수점 정보는 동시에 하나로 복수의 데이터를 단일 산술 연산 또는 논리 연산을 수행할 수 있는 단일 명령 다중 데이터 프로세서에 의해 처리된다. 역 이산 변환의 각각의 처리 단계사이에서, 레지스터내의 데이터는 상기 처리 단계의 유효 비트가 정확성을 유지할 수 있도록 조심스럽게 시프트된다.
본 발명은 멀티미디어 컴퓨터 분야에 관한 것이다. 더 상세하게, 본 발명은 단일 명령 다중 데이터(SIMD) 컴퓨터 프로세서로 멀티미디어 데이터에 대해 역 이산 코사인 변환을 수행하는 것에 관한 것이다.
본 발명의 목적, 특성, 및 잇점은 다음 도면을 참조하여 본 발명의 바람직한 실시예의 다음 명세서에서 분명해질 것이다.
도 1a는 컴퓨터 시스템내의 부동 소수점 값의 전형적인 표현 도면.
도 1b는 본 발명의 일실시예에 따른 컴퓨터 시스템의 도면.
도 2는 압축된 64 비트 데이터 값의 세가지 상이한 형태의 표현 도면.
도 3a는 본 발명의 일실시예에 사용된 압축 승산 하이 연산의 도면.
도 3b는 본 발명의 일실시예에 사용된 압축 감산의 도면.
도 3c는 본 발명의 일실시예에 사용된 압축 가산의 도면.
도 3d는 본 발명의 일실시예에 사용된 MOVQ 연산의 도면.
도 3e는 본 발명의 일실시예에 사용된 압축된 좌측 시프트 논리 연산의 도면.
도 3f는 본 발명의 일실시예에 사용된 압축된 우측 시프트 논리 연산의 도면.
도 4는 아라이-아구이-나카지마 이산 코사인 변환 알고리즘의 흐름도.
도 5는 위노그레드 이산 푸리에 변환 알고리즘의 흐름도.
도 6은 역 이산 코사인 변환 알고리즘의 흐름도.
도 7a는 역 위노그레드 이산 푸리에 변환 알고리즘의 흐름도.
도 7b는 4-방식 병렬 연산을 나타내는 위노그레드 이산 푸리에 변환 알고리즘의 제 1 흐름도.
도 7c는 4-방식 병렬 연산을 나타내는 위노그레드 이산 푸리에 변환 알고리즘의 제 2 흐름도.
도 8a 및 도 8b는 본 발명의 일실시예에 따른 컴퓨터 시스템에서의 역 이산 코사인 변환의 응용의 도면.
설명을 위해, 다음 명세서에서, 본 발명의 전반적인 이해를 위해 특정 숫자, 요소, 및 구성이 설명되어 있다. 그러나, 본 발명은 특정 세목없이 실행될 수 있다는 것을 당업자는 이해할 수 있다. 다른 경우에, 본 발명을 모호하지 않게 하도록 공지된 특성은 생략되거나 간략화되어 있다.
본 발명의 컴퓨터 시스템
도 1b는 본 발명의 일실시예에 따라서 구성된 컴퓨터 시스템(100)의 블록도를 설명하고 있다. 컴퓨터 시스템(100)은 정보를 전달하는 버스(101), 버스(101)에 연결되어 정보를 처리하는 프로세서(109), 및 버스(101)에 연결되어 프로세서(109)용 정보 및 명령을 저장하는 메모리 서브시스템(104)을 포함하고 있다.
프로세서(109)는 실행 유닛(130), 레지스터 파일(150), 캐시 메모리(160), 디코더(165), 및 내부 버스(170)를 포함하고 있다. 빈번히 및/또는 최근에 사용된 프로세서(109)용 정보를 저장하는 캐시 메모리(160)는 실행 유닛(130)에 연결되어 있다. 레지스터 파일(150)은 프로세서(109)내의 정보를 저장하고, 내부 버스(170)를 통해 실행 유닛(130)에 연결되어 있다. 본 발명의 일실시예에서, 레지스터 파일(150)은 멀티미디어 정보를 저장하는 멀티미디어 레지스터(151)를 포함하고 있다. 일실시예에서, 멀티미디어 레지스터(151) 각각은 최대 64 비트의 압축 데이터를 저장하고 있다. 멀티미디어 레지스터(151)는 멀티미디어 정보 및 다른 정보를 저장하는데 사용되는 레지스터 또는 전용 멀티미디어 레지스터일 수 있다. 일실시예에서, 멀티미디어 레지스터(151)는 멀티미디어 연산을 수행할 때 멀티미디어 데이터를 저장하고, 부동 소수점 연산을 수행할 때 부동 소수점 데이터를 저장한다.
실행 유닛(130)은 압축 데이터 명령 세트(140)에 포함된, 프로세서(109)에 의해 수신된 명령에 따른 압축 데이터에 대해 연산동작을 행한다. 실행 유닛(130)은 또한 일반적인 프로세서에서 실행되는 명령에 따른 스칼라 데이터에 대해 연산동작을 행한다. 본 발명의 일실시예에서, 프로세서(109)는 PentiumR마이크로프로세서 명령 세트 및 압축 명령 세트(140)를 지원한다. PentiumR마이크로프로세서 명령 세트와 같은 표준 마이크로프로세서에 압축 명령 세트(140)를 포함시킴으로써, 압축 데이터 명령은 현존 소프트웨어(표준 마이크로프로세서 명령 세트용으로 이미 기록된)에 쉽게 포함될 수 있다. PowerPCTM과 AlphaTM프로세서와 같은 다른 표준 명령 세트가 설명된 발명에 따라서 또한 사용될 수 있다. (PentiumR는 Intel Corporation의 등록 상표이다. PowerPCTM는 IBM, APPLE COMPUTER, 및 MOTOROLA의 상표이다. AlphaTM는 Digital Equipment Corporation의 상표이다.)
본 발명의 일실시예에서, 압축 명령 세트(140)는 압축 승산 하이 연산(146), 압축 가산 연산(142), 압축 감산 연산(144), 압축된 좌측 시프트 논리 연산(141), 및 압축된 우측 시프트 산술 연산(143)을 실행하는 명령을 포함하고 있다.
관련 회로 소자와 함께 일반적인 프로세서(109)의 명령 세트내에 압축 명령 세트(140)를 포함시켜 그 명령을 실행함으로써, 현존의 여러 멀티미디어 애플리케이션이 사용하는 연산은 일반적인 프로세서로 압축 데이터를 이용하여 수행될 수 있다. 따라서, 여러 멀티미디어 애플리케이션은 압축 데이터를 연산하기 위해 프로세서의 데이터 버스의 전폭을 이용하여 더 효율적으로 실행될 수 있다. 이것은 더작은 단위의 데이터를 프로세서의 데이터 버스를 걸쳐 전송하여 동시에 하나의 데이터 요소의 하나이상의 연산을 수행할 필요성을 없앤다.
도 1b를 참조하면, 본 발명의 컴퓨터 시스템(100)은 모니터와 같은 디스플레이 장치(121)를 포함하고 있다. 그 디스플레이 장치(121)는 프레임 버퍼와 같은 매개 장치를 포함할 수 있다. 컴퓨터 시스템(100)은 키보드와 같은 입력 장치(122) 및 마우스, 또는 트랙볼, 또는 트랙 패드와 같은 커서 이동 제어(123)를 포함하고 있다. 디스플레이 장치(121), 입력 장치(122), 및 커서 이동 제어(123)는 버스(101)에 연결되어 있다. 컴퓨터 시스템(100)은 또한 컴퓨터 시스템(100)이 지역 네트워크(LAN) 또는 광역 네트워크(WAN)의 일부이도록 네트워크 접속기(124)를 포함하고 있다. 추가로, 컴퓨터 시스템(100)은 음성 인식을 위해 음성 입력을 기록하는 마이크로폰에 연결된 오디오 디지타이저와 같이, 사운드 기록 및/또는 재생 장치(125)에 연결될 수 있다. 컴퓨터 시스템(100)은 또한 비디오 이미지를 캡처하는데 사용될 수 있는 비디오 디지타이징 장치(126), 프린터와 같은 하드 카피 장치(127), 및 CD-ROM 장치(128)를 포함하고 있다. 상기 장치(124-128)은 또한 버스(101)에 연결되어 있다.
본 발명의 압축 데이터 포맷
본 발명의 일실시예에서, 실행 유닛(130)은 일부 상이한 압축 데이터 포맷으로 된 데이터를 연산한다. 예를 들어, 일실시예에서, 컴퓨터 시스템(100)은 64 비트의 데이터 그룹을 조정한다. 도 2는 64 비트의 데이터를 포맷하고 해석하는 3가지 가능한 압축 방법을 설명하고 있다. 도 2의 압축 데이터 포맷은 압축 바이트 포맷(210), 압축 워드 포맷(220), 또는 압축 더블 워드(dword) 포맷(230)으로 구성되어 있다. 압축 바이트 포맷(210)의 압축 데이터는 8개의 개별 8 비트 데이터 요소를 포함하고 있다. 압축 워드 포맷(220)의 압축 데이터는 4개의 개별 16 비트 데이터 요소를 포함하고 있다. 압축 더블 워드 포맷(230)의 압축 데이터는 2개의 개별 32 비트 데이터 요소를 포함하고 있다. 압축 워드 포맷을 기준으로 특정 연산의 예가 아래에 설명되어 있다. 그러나, 상기 연산은 본 발명의 압축 데이터 포맷 어디에도 유사하게 적용된다.
추가로, 압축 명령 세트(140)의 여러 명령은 부호있는 또는 부호없는 데이터를 연산할 수 있고, "포화" 또는 "포화" 없이 수행될 수 있다. 연산이 포화를 이용하여 수행되면, 데이터 요소의 값은 상기 연산의 결과가 데이터 요소의 범위를 초과할 때 소정의 최대 또는 최소 값으로 고정된다. 데이터 요소의 범위를 초과하는 것을 오버플로우 또는 언더플로우라고 한다. 포화의 사용은 데이터 오버플로우 또는 언더플로우에 의해 유발되는 원치않는 부작용을 방지할 수 있다.
본 발명의 압축 데이터 명령
도 3a-3f를 참조하면, 압축 명령 세트(140)로부터의 일부 명령의 일실시예가 더 상세히 설명되어 있다. 아래에 설명된 각각의 실시예에서, 소스 1, 소스 2, 및 결과 정보는 멀티미디어 레지스터(151)에 위치되어 있는 압축 데이터이다. 대체 실시예는 컴퓨터의 메모리(104)로부터 직접 소스 1, 소스 2, 및/또는 결과 정보에 액세스할 수 있다. 다른 실시예에서, 이러한 레지스터는 일반적인 레지스터 파일에 저장될 수 있다.
도 3a는 압축 승산 하이(PMULH) 연산(146)의 예이다. 결과(203)의 데이터 요소(203a)는 소스(201)의 데이터 요소(201a)와 소스(202)의 데이터 요소(202a)의 곱의 상위 16 비트를 포함하고 있다. 결과(203)의 데이터 요소(203b)는 소스(201)의 데이터 요소(201b)와 소스(202)의 데이터 요소(202b)의 곱의 상위 16 비트를 포함하고 있다. 결과(203)의 다른 데이터 요소는 유사한 방식으로 계산된다. 상기 결과의 하위 비트는 무시된다. 대체 실시예에서, 압축 데이터 메모리 피연산자는 결과(203)를 발생시키기 위해 소스 2로서 사용될 수 있다.
도 3b는 압축 감산(144)의 예를 설명하고 있다. 결과(303)의 데이터 요소(303a)는 소스(301)의 데이터 요소(301a)와 소스(302)의 데이터 요소(301b)의 차이다. 소스(303)의 데이터 요소(303b)는 소스(301)의 데이터 요소(301b)와 소스(302)의 데이터 요소(302b)의 차이다.
도 3c는 압축 가산(142)의 예를 설명하고 있다. 결과(403)의 데이터 요소(403a)는 소스(401)의 데이터 요소(401a)의 합이다. 결과(403)의 데이터 요소(403b)는 소스(401)의 데이터 요소(401b)와 소스(402)의 데이터 요소(402b)의 합이다.
본 발명의 일실시예는 MOVQ(148)이라 불리우는 이동 연산을 포함하고 있고, 이것은 64 비트 데이터, 4개의 압축 워드를 멀티미디어 레지스터(151)으로 그리고 레지스터(151)로부터 전송하는데 사용된다. 도 3d는 MOVQ 연산의 예를 설명하고 있다. 메모리에 위치한 압축 워드(504,506,508,510)를 가진 압축 데이터(502)는 멀티미디어 레지스터(151)의 레지스터에 전송되고, 각각 데이터 요소(512,514,516,518)로서 저장된다.
도 3e는 압축된 좌측 시프트 논리 연산(141)의 예를 설명하고 있다. 압축된 좌측 시프트 논리 연산에서, 레지스터의 데이터 요소는 스칼라 시프트 카운트에 의해 좌측으로 각각 개별적으로 시프트된다. 각각의 요소의 하위 비트는 0으로 채워진다. 시프트 카운트는 부호없는 것으로서 해석된다. 15(워드용)31(워드용) 또는 63(기타)보다 큰 시프트 카운트를 모두 0으로 만든다.
도 3f는 압축된 우측 시프트 산술 연산(143)의 예를 설명하고 있다. 압축된 우측 시프트 산술 연산에서, 소스의 부호 데이터 요소는 스칼라 시프트 카운트에 의해 우측으로 각각 개별적으로 시프트된다. 각각의 요소의 상위 비트는 소스에서 데이터 요소의 부호 비트의 초기값으로 채워진다. 상기 시프트 카운트는 무부호로서 해석된다. 15(워드용) 또는 31(워드용)보다 큰 시프트 카운트를 소스에서 데이터 요소의 부호 비트의 초기값에 따라서 모두 1 또는 0으로 만든다.
역 이산 코사인 변환
상기된 바와 같이, 본 발명은 멀티미디어 알고리즘에 전형적으로 사용된 데이터 값에 대한 역 이산 코사인 변환(iDCT)을 수행하는 효과적인 방법에 관한 것이다. 특히, 본 발명은 고정 소수점 압축 데이터 포맷에 저장된 데이터 값을 이용하여 역 이산 코사인 변환을 수행하는 독특한 방법에 관한 것이다. 일반적으로, 부동 소수점 값은 적합한 정확도를 얻을 수 있도록 역 이산 코사인 변환을 수행할 때 사용된다. 그러나, 상기 방법은 부적합한 레벨로 정확도를 손실하지 않는 방식으로 역 이산 코사인 변환을 고정 소수점 산술로 수행한다. 그러므로, 본 발명의 실행은종래의 실행보다 빠르지만 적합한 정확도를 가진 결과를 발생시킨다.
역 이산 코사인 변환(iDCT)을 효과적으로 수행하기 위해, 본 발명은 유키히로 아라이, 다케시 아구이, 마사유키 나카지마에 의한 "A Fast DCT-SQ Scheme for Images"의 알고리즘(이하 아라이-아구이-나카지마 알고리즘)을 채택했다. 아라이-아구이-나카지마 알고리즘은 1998년 11월에 IEICE, 권 71, 넘버 11, 페이지 1095로 번역 발행되었다.
아라이-아구이-나카지마 알고리즘은 일차원 프리스케일(prescaled)DCT/iDCT 알고리즘이다. 아라이-아구이-나카지마 알고리즘은 8개의 프리스케일 값에 의해 프리스케일된 8개의 입력 계수로 시작한다. 아라이-아구이-나카지마 알고리즘은 변환을 위해 5개 승산과 29개 가산만이 필요한 방식으로 상기 프리스케일 계수에 적용된다. 아라이-아구이-나카지마 알고리즘의 가장 큰 장점중 하나는 최소의 승산으로 8-포인트 DCT를 계산한다는 것이다. 더욱이, 승산의 대부분은 아라이-아구이-나카지마 알고리즘이 병렬 수행에 이상적이도록 병렬로 수행될 수 있다.
아라이-아구이-나카지마 알고리즘은 16-포인트 DFT를 이용하여 8-포인트 DCT를 계산한다. 도 4는 아라이-아구이-나카지마 알고리즘이 계수의 실수부만을 제공하는 16-포인트 DFT를 이용하여 8-포인트 DCT를 계산하는 방법을 설명하는 데이터 흐름도이다. 상기 계수의 실수부만을 제공하는 고속 16-포인트 DFT를 수행하기 위해, 위노그레드 FFT 알고리즘이 선택되었다.(에스 위노그레드의 1976년 11월 "On Computer the Discrete Fourier Transform", IBM Res.Rep.,RC-6291를 참조).
도 5는 위노그레드 FFT 알고리즘을 이용하여 상기 계수의 실수부를 발생시키는 신호 흐름을 설명하고 있다. 도 5의 흐름도에 의해 설명된 바와 같이, 단지 5개의 승산이 필요하다.
효율적인 역 이산 코사인 변환 수행
역 이산 코사인 변환은 멀티미디어 정보와 함께 사용하기 위한 매우 중요한 연산이다. 특히, 역 DCT는 오디오 및 비디오와 같은 멀티미디어 정보를 압축 및 압축 해제하는데 종종 사용된다. 이상적으로, 컴퓨터는 실시간 비디오 폰과 같은 애플리케이션에 사용될 수 있도록 실시간에 오디오 및 비디오 정보를 압축 및 압축 해제할 수 있다.
이러한 결과를 얻기 위해, 본 발명은 아라이-아구이-나카지마 알고리즘의 병렬성을 이용하는 역 이산 코사인 변환의 효율적인 고속 버전을 실행한다. 본 발명의 병렬 실행은 4 방식 SIMD(단일 명령 다중 데이터) 명령을 수행할 수 있는 컴퓨터 아키텍처의 특성을 가장 효율적으로 이용한다.
역 이산 코사인 변환을 수행하기 위해, 아라이-아구이-나카지마 알고리즘의 단계는 역순으로 수행된다. 특히, 먼저 상기 계수는 도 6에 설명된 아라이-아구이-나카지마 알고리즘의 역 버전에 따라서 스케일된다. 스케일 후에, 위노그레드 알고리즘의 역이 수행된다. 도 7a는 16-포인트 DFT의 실수부로부터 원래 값을 재저장하는 역 위노그레드 DFT 알고리즘의 신호 흐름을 설명하고 있다.
도 6과 도 7a의 역 이산 코사인 변환을 실행하기 위해, 본 발명은 프로세서(109)의 압축 명령 세트(140)를 이용한다. 일실시예에서, 압축 명령 세트(140)는 데이터가 단일 멀티미디어 레지스터내에 4개의 별개 16 비트 데이터요소로서 저장되어 있는 압축 워드 포맷에 저장된 멀티미디어 데이터와 결합되어 사용된다.
4개의 별개 16 비트 데이터 요소의 각각은 부호있는 스칼라 데이터 값을 포함할 수 있다. 부동 소수점 산술이 일반적으로 필요하기 때문에, 4개의 별개 16 비트 스칼라 데이터 값은 고정 소수점 십진 값으로서 해석될 수 있다.
도 6에 설명된 제 1 단계는 적당히 입력값을 스케일링하는 것이다. 이것은 압축 데이터 워드를 승산하는 압축 승산 명령(146)을 이용한다. 승산은 도 6의 알고리즘에 따른 표의 관련 스케일 인수와 상기 입력값을 승산한다. 그러나, 오버플로우로부터 유효 숫자를 유지하기 위해, 먼저 데이터는 압축 승산 명령(146)이 실행되기 전에 압축된 우측 시프트 산술 명령을 이용하여 우측으로 시프트된다.
다음, 16-포인트 역 이산 푸리에 변환은 이전의 16-포인트 이산 푸리에 변환의 실수부로부터 원래의 값을 재저장하도록 수행된다. 이러한 변환을 수행하는 전체적인 플로우 챠트는 도 7a에 도시되어 있다. 병렬로 4개의 워드를 연산할 수 있는 컴퓨터 프로세서로 효율적으로 변환하기 위해, 역 이산 푸리에 변환 알고리즘이 여러부분으로 분할될 수 있다.
도 7b는 수행되는 역 이산 푸리에 변환 알고리즘의 제 1 부분을 설명하고 있다. 도 7b에 설명된 바와 같이, 단지 4개의 데이터값만이 연산된다. 이러한 4개의 데이터값은 압축 워드 포맷을 이용하여 단일 멀티미디어 레지스터내에 저장될 수 있다. 도 7b에서 연산의 데이터 흐름을 조사하여, 모든 수학적 연산은 종속성이 존재하지 않기 때문에 병렬로 수행될 수 있다는 것을 알 수 있다. 따라서, 도 7b의연산은 압축 승산(146), 압축 가산(142), 및 압축 감산(144)을 이용하여 실행될 수 있다.
알고리즘동안의 각각의 연산후, 멀티미디어 레지스터에 저장된 데이터 값은 오버플로우 또는 언더플로우할 수 있다. 이것을 방지하기 위해, 레지스터의 내용은 다음 연산을 위해 유효 숫자를 최상으로 유지하기 위해 좌측으로 또는 우측으로 시프트될 수 있다. 상기 시프트 연산은 압축된 좌측 시프트 논리 연산(141)과 압축된 우측 시프트 산술 연산(143)을 이용하여 수행된다. 본 실시예에서, 모든 압축 워드 값은 동일양만큼 시프트되어야 한다. 이것은 각각의 중간 결과를 얼마나 시프트하는지를 결정할 때 고려되어야 한다. 도 7b의 데이터 흐름도의 종결에서, 4개의 데이터 값이 임시 결과로서 저장된다.
도 7c는 수행되는 역 이산 푸리에 변환 알고리즘의 제 2 부분을 설명하고 있다. 도 7b의 데이터 흐름도와 같이, 도 7c의 데이터 흐름의 대부분에 대하여 단지 4개의 데이터 값이 연산된다. 이러한 4개의 데이터 값은 압축 워드 포맷을 이용하여 단일 멀티미디어 레지스터내에 저장될 수 있고, 동시에 연산될 수 있다. 도 7c의 데이터 흐름도의 종결 근처에서, 도 7b의 4개의 임시 결과 값은 역 이산 푸리에 변환의 결과를 제공하도록 조합되어 있다.
아라이-아구이-나카지마 알고리즘은 단지 일차원의 iDCT이기 때문에, 멀티미디어 시스템에 일반적으로 사용되는 8×8 iDCT를 계산하기 위해 추가 처리되어야 한다. 먼저, 열은 일차원의 아라이-아구이-나카지마 알고리즘을 이용하여 변환되어야 하고, 그 결과의 행은 일차원의 아라이-아구이-나카지마 알고리즘을 이용하여변환한다. 먼저 일차원의 아라이-아구이-나카지마 iDCT를 행에 적용하고 그후 열에 적용함으로써 순서를 역으로 하는 것은 동일 결과를 제공한다.
특정 SIMD 명령으로 8×8 iDCT를 실행하는 동안에, 행보다 열에 아라이-아구이-나카지마 알고리즘을 수행하는 것이 효율적이다는 것을 알게 되었다. 일차원의 아라이-아구이-나카지마 iDCT 알고리즘을 행렬의 행에 적용하면, 훨씬 복잡하고 비효율적이다. 다음 단계가 제안된다:
1. 입력 계수를 프리스케일하는 단계.
2. 행렬의 열에 일차원 iDCT를 수행하는 단계.
3. 행렬을 전치시키는 단계.
4. 전치된 행렬의 열에 제 2 iDCT를 수행하는 단계.(이것은 원 행렬의 행에 iDCT를 수행하는 것과 등가이다.)
5. 전치된 행렬을 본래의 행렬로 다시 전치시키는 단계.
상기된 바와 같이, 두 개의 불필요한 전치 연산이 수행되고, 그래서 이러한 단계의 비용을 줄이는 방법이 추구되었다. iDCT는 MPEG-2 디코딩 알고리즘의 관점에서 사용되도록 설계되어 왔다. 변환된 행렬을 만들기 위해, 입력 데이터 스트림에 대해 지그재그 스캔이 수행된다. 지그재그 스캔동안에 행렬 전치를 수행하면 불필요한 시간이 든다. 따라서, 다음의 단계가 실행되었다:
1. 지그재그 스캔동안 입력 계수를 전치시키는 단계.
2. 전치된 입력 행렬의 입력 계수를 프리스케일하는 단계.
3. 행렬의 열에 일차원 iDCT를 수행하는 단계.(이것은 원 행렬의 행에 iDCT를 수행하는 것과 등가이다.)
4. 행렬을 전치시키는 단계.
5. 최종 행렬의 열에 제 2 iDCT를 수행하는 단계.
부록 A는 본 발명이 아라이-아구이-나카지마 iDCT 알고리즘을 이용하여 실행되는 방법을 설명하고 있다.
멀티미디어 시스템내에서의 역 이산 코사인 변환의 이용
도 8a와 도 8b는 멀티미디어 정보가 조작되는 예를 들어, 관련 데이터를 저장, 디스플레이, 및 전송하기 전에 신호를 압축하는 본 발명의 일실시예에 따른 역 이산 코사인 변환 함수의 응용예를 도시하고 있다. 본 발명의 다른 실시예에서, 역 이산 코사인 변환 함수는 압축 해제, 필터링, 또는 이미지 에지 처리 및 검출을 수행하여 멀티미디어 데이터를 조작하는 컴퓨터 시스템에 사용될 수 있다.
도 8a에서, 카메라(800)는, 카메라가 연결되어 있는 제 1 컴퓨터 시스템(820)내의 수신단(802)에 영화 비디오 신호를 전송한다. 본 발명이 비디오 화상회의 애플리케이션과 결합하여 실행되는 실시예에서, 수신단(802)에서 수신된 이미지는 원격의 제 2 컴퓨터 시스템(821)의 작동자와 통신하는 제 1 컴퓨터 시스템(820)의 작동자의 이미지이다. 상기 컴퓨터 시스템 작동자가 예를 들어, 모션 화면 또는 정지 모션 비디오를 편집, 저장, 또는 조정하고자 하는 대체 실시예에 있어서, VCR의 출력부, 다른 비디오 캡처 장치, 다른 컴퓨터 시스템, CD-ROM, 또는 다른 레이저 디스크는 컴퓨터 시스템의 수신단에 해당한다.
비디오 카메라(800), 또는 마이크로폰과 같은 다른 멀티미디어 입력 장치에연결되어 있는 것은 컴퓨터의 버스에 교대로 연결되는 디지타이징 장치일 수 있다. 상기 멀티미디어 입력 장치는 오디오 또는 이미지 입력을 수신하고, 디지타이징 장치는 입력을 나타내는 디지털 데이터를 발생시킨다. 따라서, 디지타이징 장치는 최소한 멀티미디어 입력 장치에 위치한 아날로그-디지털 컨버터, I/O 확장 카드, 또는 배선된 머더보드를 포함하고 있다. 추가로, 디지타이징 장치는 이미지를 나타내는 데이터를 조정하기 위해 필터링 단계, 데이터 압축 단계, 데이터 암호화 단계, 또는 다른 관련 단계를 포함할 수 있다. 이러한 단계는 멀티미디어 입력 장치내의 하드웨어 또는 소프트웨어 및/또는 컴퓨터 시스템(820)의 프로세서를 실행시키는 소프트웨어에 의해 수행될 수 있다.
수신단(802)에서, 비디오 신호와 관련된 데이터는 컴퓨터 시스템의 메모리부분에 저장된다. 이 저장된 데이터는 예를 들어, 카메라에 의해 전송된 비디오 신호의 디지털 샘플을 나타낸다. 일실시예에 있어서, 컴퓨터 시스템내의 복수의 레지스터 각각은 압축 데이터 세트의 각각의 데이터 요소가 비디오 이미지 프레임의 관련 픽셀을 나타내는 압축 데이터 세트를 포함하도록 상기 데이터는 편성되어 있다. 예를 들어, 일실시예에서, 64 비트의 레지스터는 8개의 압축 바이트를 포함하고 있고, 각각의 바이트는 상이한 픽셀과 관련되어 있고, 여기서 각각의 바이트 값은 관련 픽셀의 256개의 가능한 칼라중 하나를 나타낸다. 64 비트의 레지스터는 4개의 워드를 포함하거나, 128 비트의 레지스터는 8개의 워드를 포함하고, 각각의 워드는 상이한 픽셀과 관련되어 있는 실시예에서 더 큰 칼라 팔레트가 사용될 수 있다.
다른 실시예에 있어서, 2개 이상의 별개 데이터 요소는 개별 픽셀을 한정하는데 사용된다. 예를 들어, 적-청-녹(RGB) 인코딩법에서, 제 1 압축 데이터 세트내의 하나의 데이터 요소는 픽셀의 R값을 한정하고; 제 2 압축 데이터 세트내의 다른 데이터 요소는 동일 픽셀의 G값을 한정하고; 제 3 압축 데이터 세트내의 다른 데이터 요소는 동일 픽셀의 B값을 한정한다. 제이펙(Joint Photographers Expert Group; JPEG) 표준과 엠펙(Moving Pictures Experts Group; MPEG) 표준이 구현된 실시예에 있어서, 엔코딩법은 별개의 압축 데이터 세트내의 각각을 나타내는 데이터 요소를 저장하여, 그 픽셀의 채도에서 픽셀의 휘도를 분리한다. 픽셀의 휘도는 픽셀의 회색 스케일 또는 밝기를 나타내지만 채도은 픽셀의 칼라를 나타낸다.
인간의 눈은 밝기의 오류보다 칼라의 오류에 더 관대하다. 픽셀 휘도를 나타내는 데이터 요소를 픽셀 채도를 나타내는 데이터 요소로부터 분리함으로써, 휘도를 나타내는 데이터 요소는 픽셀 채도를 나타내는 데이터 요소보다 더 크게 될 수 있고, 이것에 의해 각각의 픽셀에 대해 밝기가 더 정밀하지만, 칼라 정보를 저장하는데 사용된 공간상에서 경제적이다. 예를 들어, 일실시예에서, 휘도를 나타내는데 사용된 데이터 요소의 길이는 채도를 나타내는데 사용된 데이터 요소의 길이의 두배이다. 휘도와 채도 데이터 요소를 분리 저장하는 다른 장점은 상이한 압축 알고리즘이 압축될 데이터의 유형에 대해 각각의 알고리즘을 최적화하여, 휘도와 채도 데이터를 압축하는데 사용될 수 있다는 것이다.
본 발명의 일실시예에 따라서, 비디오 신호의 디지털 샘플링이 수행된다는 것을 상기하라. 비디오 신호의 샘플링은 수신단(802) 또는 카메라(800)중 하나내의 아날로그-디지털 컨버터에 의해 수행될 수 있다. 동일 방식으로, 샘플링된 신호를역으로 아날로그 신호로 재전환하는 것은 디지털-아날로그 컨버터에 의해 수행된다. 아날로그-디지털 컨버터와 디지털-아날로그 컨버터는 디지털 신호 프로세서와 같은 전용 하드웨어에 의해 실행될 수 있다. 그러나, 본 발명의 불필요한 모호함을 피하기 위해, 파형 샘플링은 여기서 상세히 설명되어 있지 않고, 분명히, 모든 신호는 연속 파형으로서 도 8b에 설명되어 있다.
비디오 신호가 데이터로서 컴퓨터 시스템메모리에 저장되었을 때, 그 데이터는 더 작은 메모리 공간으로 그 데이터를 압축하는 단계를 포함할 수 있는 압축단(803)에서 조작된다. 추가로, 본 발명의 다른 실시예에서, 역 이산 코사인 변환은 압축단에서, 압축 해제, 필터링, 또는 이미지 에지 처리 및 검출을 수행하여 멀티미디어 데이터를 조정하는 컴퓨터 시스템에서 사용될 수 있다. 하지만, 도 8a의 압축단(803)에서, 더 작은 메모리 공간을 차지함으로써, 비디오 신호는 더 적은 처리 전력과 시스템 자원을 필요로 하며, 수정, 저장, 또는 전송하는 데이터가 적기 때문에 보다 쉽게 수정되고 저장되고 또는 전송된다. 도 8b에 도시된 바와 같이, 컴퓨터 시스템의 메모리 레지스터에 저장되어 있는 비디오 신호(812)는 압축단(803)으로 향한다. 공간 영역에서, 비디오 신호(812)는 그 신호의 진폭이 수직 변위로 표시되지만 시간 또는 공간은 수평 변위로 표시되는 파형에 의해 표현된다.
여러 압축 방법에서, 신호를 분석하거나 수정하기 전에 신호를 공간 영역에서 주파수 영역과 같은 영역으로 변환하는 것이 바람직하다. 비디오 신호(812)가 압축단(803)에서 수신된 후, 그 신호는 공간 영역에서 주파수 영역으로 변환된다.주파수 영역에서, 원래 신호의 특정 주파수 성분(예, 사인 또는 코사인파)의 진폭은 수직 변위로 표시되지만 원래 신호의 각각의 주파수 성분의 주파수는 수평 변위로 표시된다. 비디오 파형(812)은 압축단(803)내의 단계(813)에서의 주파수 영역에서 설명된다.
일실시예에서, 공간 영역에서 주파수 영역으로의 신호 변환은 신호를 나타내는 데이터의 이산 코사인 변환을 수행하는 것과 관련이 있다. 예를 들어, 일부 JPEG 및 MPEG 표준에 따라서, 비디오 이미지의 사각 소구역, 일반적으로 픽셀의 8×8 어레이는 이산 코사인 변환 함수를 이용하여 공간 영역에서 주파수 영역으로 변환된다. 이 픽셀의 8×8 어레이는 8개의 메모리 레지스터에 상응하고, 각각은 8개의 데이터 요소의 압축 데이터 세트를 포함하고 있고, 각각의 데이터 요소는 8×8 어레이내의 관련 픽셀의 값(예, 칼라, 밝기 등)에 상응한다. 다른 실시예에서, 다른 변환 함수가 예를 들어, 푸리에 변환, 고속 푸리에 변환, 고속 하틀레이 변환, 또는 웨이브릿 변환과 같이 실행된다.
주파수 영역으로 변환되었을 때, 신호의 개별 주파수 성분은 선별적으로 분석되고, 감쇄되고, 증폭되고, 또는 폐기처분될 수 있다. 필터링은 신호의 특정 주파수 성분이 수정되는 기술이다. 비디오 이미지의 형세를 많이 저하시키지 않고 특정 주파수 성분을 폐기하는 적당한 필터 기능을 선별하여, 그 비디오 신호는 비디오 이미지를 한정하는 주파수 성분이 보다 적게 있기 때문에 압축된다. 이 방식으로 비디오 신호의 주파수 성분을 필터링하는 것은 압축단(803)내의 단계(814)에서 실행된다.
파형의 각각의 주파수 성분은 저역 필터 기능의 관련 계수가 승산되고, 여기서 관련 계수는 0이고, 주파수 성분은 변환 함수의 일부로서 단순히 계산되지 않는다. 도 8b에 설명된 바와 같이, 저역 필터는 더 낮은 주파수 성분을 통과하게 하여서, 파형의 더 높은 주파수 성분을 제거하거나 감쇄시킨다. 보다 높은 주파수 성분은 소정의 한계치(일부 응용예에서 "차단 주파수"라고 함)위의 주파수이지만, 보다 낮은 주파수 성분은 이 소정 한계치아래의 주파수이다.
파형의 주파수 성분은 본 발명의 다른 실시예에 따른 다른 기술을 사용하여 주파수 영역에서 조정될 수 있다. 일실시예에 있어서, 마이크로폰(801)에 의해 전송된 오디오 파형이 컴퓨터 시스템(820)에 의해 유사 방식으로 분석되고 조정된다. 예를 들어, 주파수 영역에서의 오디오 파형의 상위 고조파 분석은 음성 인식 애플리케이션에 따라서 행해진다. 다른 예로, 오디오 파형의 고조파 스펙트럼은 시간을 넘어서 변조되어 음성의 사운드, 사운드 효과, 또는 음악 기구를 모방한다. 사운드 전송 또는 저장 애플리케이션과 결합하여, 오디오 파형은 필터링 기술에 의해 압축된다.
비디오 이미지는 비디오 데이터를 단지 압축하는 것보다 더 압축하도록 주파수 영역에서 유사하게 조정될 수 있다. 예를 들어, 본 발명의 일실시예에 있어서, 고역 통과필터가 에지 검출 기술에서 비디오 신호에 적용된다. 고역 통과필터는 보다 높은 주파수 성분을 통과시켜, 신호의 보다 낮은 주파수 성분을 제거하거나 감쇄시킨다. 비디오 이미지의 뚜렷하고 짙게 명암이 대비된 에지는 관련 비디오 신호의 고주파 성분에 일반적으로 상응하기 때문에, 고역 필터는 이러한 에지를 분리할것이다. 이러한 기술은 모션 및 이미지 검출 및 인식 애플리케이션에서 유용할 것이다. 또한, 이러한 기술은 영화 비디오 신호의 연속적인 프레임내의 경계의 모션이 추적되고 예측되어 연속 이미지를 발생시키는 예측 벡터 양자화 압축에서 응용된다.
본 발명의 일실시예에 있어서, 비디오 신호가 필터링된 후, 그 신호는 역 변환을 데이터에 적용함으로써 역으로 공간 영역으로 재전환된다. 대안으로, 아래에 설명된 바와 같이, 그 신호는 주파수 영역에 남아 있고 압축 해제 단계동안에 역으로 공간 영역으로 변환된다. 원래의 비디오 신호로부터의 이러한 고주파 성분의 제거는 화질을 심하게 저하시키지는 않는다. 일반적으로, 신호가 압축될수록, 이미지의 충실도의 손실이 더 커진다. 인간의 눈은 채도에서보다 휘도에서의 오류에 더 민감하기 때문에, 주지된 바와 같이, 비디오 신호의 채도부분은 휘도부분보다 더 높게 압축된다.
추가로, JPEG, MPEG, 및 다른 비디오 압축 방법에 따라서, 압축 정도를 다르게 하는 것은 비디오 이미지의 상이한 영역에 적용하여, 보다 적은 이미지 세부를 필요로 하는 영역에서 더 많은 압축과 더 많은 세부를 필요로 하는 영역에서 더 적은 압축을 얻을 수 있다. 예를 들어, 화상회의 애플리케이션에서와 같이 화질이 중요하지 않은 실시예에 있어서, 보다 낮은 프레임 속도를 가진 고 압축이 적합하다. 일반적으로 사용자는 난해한 부분없이 스피커의 페이스를 분간할 필요가 있기 때문에, 고 압축이 적합하다. 비디오 이미지내의 물체의 약간의 이동이 있을 가능성이 있으므로, 보다 낮은 프레임 속도가 적합하다. 고 압축을 실행하는 한가지 방법은비디오 신호에 적용된 저역 통과 기능을 단순히 좁게 하여, 보다 높은 주파수 성분을 제거하는 것이다.
데이터의 정밀도를 잘라내고, 그 다음 효율적으로 반복하는 항을 저장하는 코딩법을 이용하여 추가 압축된다. MPEG 표준에 따라서, 연속 프레임에서의 유사한 픽셀의 어레이를 매칭하고, 프레임간의 차 또는 보간만을 인코딩하여 추가 압축된다. 이러한 방식으로 비디오 신호를 압축하여, 상기 신호는 메모리에서 보다 작은 양의 공간을 차지한다. 압축후, 상기 신호는 단계(816)에서 저장, 디스플레이, 및/또는 전송된다. 예를 들어, 도 8a에 설명된 실시예에 따라서, 비디오 신호는 압축단(803)에 남고, 그 신호는 압축된 비디오 신호를 제 2 컴퓨터 시스템(821)의 수신단(807)에 전송하는 전송단(804)으로 진입한다. 상기 비디오 신호는 압축되기 때문에, 예를 들어, 전화선은 전송용으로 사용되게 하여, 송신기(804)로부터의 신호를 수신기(807)로 전송하는데 필요한 대역은 상당히 감소된다. 본 발명의 일실시예에 있어서, 비디오 신호의 전송에 추가로, 비디오 신호는 전송단(804)에서 암호화된다.
압축된 비디오 신호를 수신단(807)에서 수신할때, 상기 신호에 관련된 데이터는 컴퓨터 시스템 메모리로 로드된다. 추가로, 상기 비디오 신호가 암호화되면, 여기서 해독된다. 압축 해제단(808)에서, 상기 신호는 예를 들어, 역변환을 상기 데이터에 적용하여 역으로 상기 신호를 공간 영역으로 전송하는 단계를 포함한 방법에 의해 압축 해제된다. 이것은 상기 신호는 컴퓨터 시스템(820)으로부터 주파수 영역에서의 압축된 포맷으로 전송되었음을 가정한다. 압축된 비디오 신호가 공간영역으로 전송되는 실시예에서, 압축 해제 단계동안의 역 변환의 응용은 불필요할 것이다. 그러나, 오디오 또는 비디오 신호의 압축 해제는 주파수 영역에서 보다 쉽게 실행될 수 있고, 압축 해제단(808)에 의해 수신된 공간 영역 신호가 필요하고 압축 해제를 위해 주파수 영역으로 변환되고, 그 다음 디스플레이를 위해 공간 영역으로 되돌아간다.
압축 해제되었을 때, 상기 신호는 비디오 RAM(VRAM) 어레이를 포함할 수 있는 디스플레이단(809)으로 전송되고, 상기 이미지는 디스플레이 장치(811)상에 디스플레이된다. 이러한 기술을 이용하여, 컴퓨터 시스템(820)의 사용자는 비디오 이미지를 컴퓨터 시스템(821)에 전송하여 제 2 컴퓨터 단말기에서 볼 수 있다. 추가로, 마이크로폰(801)에 의해 수집된 오디오 정보는 스피커(810)으로부터 이용가능한 재생과 함께, 컴퓨터 시스템(820)에 의해 압축되고 컴퓨터 시스템(821)에 전송된다. 유사하게, 컴퓨터 시스템(821)은 유사한 비디오 및 오디오 전송능력(도시 생략)을 가지고 있고, 컴퓨터 시스템(820)의 디스플레이 장치(806)와 스피커(805)를 통해 디스플레이 및 오디오 재생을 각각 할 수 있다. 이러한 방식으로, 화상회의와 같은 응용이 가능하다.
상기 명세서로부터, 여기서 설명된 본 발명은 멀티미디어 정보를 나타내는 압축 데이터의 역 이산 코사인 변환을 수행하는 신 개량 컴퓨터 시스템을 제공한다. 관련 종래 기술에 의해 알 수 있는 바와 같이, 본 발명은 기본 특성에서 벗어나지 않고 다른 특정 형태로 설명될 수 있고, 따라서, 설명된 실시예는 본 발명의 사상을 제한하지 않는다. 다음의 청구항은 본 발명의 사상을 표시하고, 본 청구 범위내에서의 모든 개조는 본 사상에 포함된다.
부록 A
8×8 역 이산 코사인 변환(iDCT)을 실행하기 위해, 일차원의 아라이-아구이-나카지마 iDCT 알고리즘이 8×8 행렬의 행과 열에 사용되었다. 본 실시예에서, 단일 명령 다중 데이터(SIMD) 명령 세트가 본 발명을 실행하는데 사용되었다. SIMD 명령 세트에서, 4개의 별개 16 비트값을 연산하는 명령이 사용되었다. 8×8 행렬을 4개의 데이터 값으로 분할하기 위해, 다음 구조가 선택되었다:
M1 M2
M3 M4
이러한 구조로, 행렬의 전치가 다음과 같이 실행될 수 있다:
M1 M2 M1tM3t
M3 M4 ---- 전치 ----> M2tM4t
다음 프로그램 목록에서 8×8 행렬의 완전한 구현이 제공된다. 코드에 의해 수행되는 단계의 개요가 코드의 판독을 단순화하기 위해 제공된다:
1. 프리스케일 : 16개의 압축 승산
2. 열 0 : 짝수 부분
3. 열 0 : 홀수 부분
4. 열 0 : 출력 버터플라이
5. 열 1 : 짝수 부분
6. 열 1 : 홀수 부분
7. 열 1 : 출력 버터플라이
8. 전치 : M4 부분
9. 전치 : M3 부분
10. 열 1 : 짝수 부분(전치후)
11. 열 1 : 홀수 부분(전치후)
12. 열 1 : 출력 버터플라이(전치후)
13. 전치 : M2 부분
14. 전치 : M1 부분
15. 열 0 : 짝수 부분(전치후)
16. 열 0 : 홀수 부분(전치후)
17. 열 0 : 출력 버터플라이(전치후)
18. 클린 업.
여기서:
a. 열 0 은 제 1의 4개의 열을 나타내고, 열 0 은 다른 4개의 열을 나타낸다.
b. 짝수 부분은 짝수 색인 요소를 이용하는 아라이-아구이-나카지마 iDCT 알고리즘 부분을 나타낸다.
c. 홀수 부분은 홀수 색인 요소를 이용하는 아라이-아구이-나카지마 iDCT 알고리즘 부분을 나타낸다.
d. 출력 버터플라이는 짝수와 홀수 부분의 결과를 이용하여 일차원의 iDCT를 만드는 아라이-아구이-나카지마 iDCT 알고리즘의 종료 단계를 나타낸다.

Claims (18)

  1. 오디오 또는 비디오 신호를 발생시키는 멀티미디어 입력 장치;
    상기 멀티미디어 입력 장치에 연결된 프로세서; 및
    상기 프로세서에 연결되고, 오디오 또는 비디오 신호와 관련된 복수의 입력값을 포함하고 있는 행렬을 변환하는 역 이산 코사인 변환 루틴을 저장하고 있는 메모리 장치를 포함하고 있으며,
    역 이산 코사인 변환 루틴은, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    입력값의 세트를 스케일링하는 단계; 및
    상기 입력값의 상기 세트에 대해, 일차원 역 이산 코사인 변환을 실행하는 연산 세트를 동시에 실행하는 단계를 수행하게 하며,
    연산 세트를 동시에 실행하는 상기 단계는:
    수학적 연산을 수행하고 중간 결과를 만드는 SIMD 수학적 명령을 실행하는 서브단계;
    유효 숫자를 유지하기 위해 중간 결과를 시프트하는 SIMD 시프트 명령을 실행하는 서브단계; 및
    상기 일차원 역 이산 코사인 변환을 실행하는 것이 필요로 될 때 SIMD 수학적 명령을 실행하는 상기 서브단계와 IMD 시프트 명령을 실행하는 상기서브단계를 반복하는 서브단계를 포함하고 있는 것을 특징으로 하는 컴퓨터 시스템.
  2. 제 1 항에 있어서, 상기 일차원 역 이산 코사인 변환은 아라이-아구이-나카지마 iDCT 알고리즘인 것을 특징으로 하는 컴퓨터 시스템.
  3. 제 1 항에 있어서, 상기 SIMD 시프트 명령은 압축된 우측 시프트 산술 명령인 것을 특징으로 하는 컴퓨터 시스템.
  4. 제 1 항에 있어서, 상기 SIMD 시프트 명령은 압축된 좌측 시프트 논리 명령인 것을 특징으로 하는 컴퓨터 시스템.
  5. 제 1 항에 있어서, 상기 멀티미디어 입력 장치는 비디오 카메라인 것을 특징으로 하는 컴퓨터 시스템.
  6. 오디오 또는 비디오 신호를 발생시키는 멀티미디어 입력 장치;
    상기 멀티미디어 입력 장치에 연결된 프로세서; 및
    상기 프로세서에 연결되고, 오디오 또는 비디오 신호와 관련된 복수의 입력값을 포함하고 있는 행렬을 변환하는 이차원의 역 이산 코사인 변환 루틴을 저장하고 있는 메모리 장치를 포함하고 있으며,
    역 이산 코사인 변환 루틴은, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    상기 입력값의 행렬을 전치시켜 전치된 입력값의 행렬을 만드는 단계;
    상기 입력값을 스케일링하는 단계;
    일차원의 역 이산 코사인 변환으로 상기 전치된 행렬의 열을 변환하는 단계;
    상기 전치된 행렬을 전치시켜서 최종 행렬을 만드는 단계; 및
    일차원 역 이산 코사인 변환을 사용하여 상기 최종 행렬의 열을 변환하는 단계를 수행하게 하는 것을 특징으로 하는 컴퓨터 시스템.
  7. 제 6 항에 있어서, 상기 입력값의 행렬은 MPEG 데이터를 포함하고 있는 것을 특징으로 하는 컴퓨터 시스템.
  8. 제 7 항에 있어서, 입력값의 행렬을 전치시키는 상기 단계는 MPEG 데이터의 지그재그 스캔동안에 수행되는 것을 특징으로 하는 컴퓨터 시스템.
  9. 제 6 항에 있어서, 상기 일차원 역 이산 코사인 변환은 아라이-아구이-나카지마 iDCT 알고리즘인 것을 특징으로 하는 컴퓨터 시스템.
  10. 제 6 항에 있어서, 상기 멀티미디어 입력 장치는 비디오 카메라인 것을 특징으로 하는 컴퓨터 시스템.
  11. 제 6 항에 있어서, 변환하는 상기 단계는:
    수학적 연산을 수행하고 중간값을 만드는 SIMD 수학적 명령을 실행하는 서브단계;
    중간값을 시프트하여 유효 숫자를 유지하는 SIMD 시프트 명령을 실행하는 서브단계; 및
    상기 일차원 역 이산 코사인 변환을 실행하는 것이 필요로 될 때 SIMD 수학적 명령을 실행하는 상기 서브단계와 SIMD 시프트 명령을 실행하는 상기 서브단계를 반복하는 서브단계를 포함하고 있는 것을 특징으로 하는 컴퓨터 시스템.
  12. 제 11 항에 있어서, 상기 SIMD 시프트 명령은 압축된 우측 산술 명령인 것을 특징으로 하는 컴퓨터 시스템.
  13. 제 11 항에 있어서, 상기 SIMD 시프트 명령은 압축된 좌측 시프트 논리 명령인 것을 특징으로 하는 컴퓨터 시스템.
  14. 오디오 또는 비디오 신호를 발생시키는 마이크로폰 또는 카메라를 포함하고 있는 입력 장치;
    상기 입력 장치에 연결된 프로세서; 및
    상기 프로세서에 연결되고, 오디오 또는 비디오 신호와 관련된 복수의 입력값을 포함하고 있는, 행렬을 변환하는 역 이산 코사인 변환 루틴을 저장하고 있는 메모리 장치를 포함하고 있으며,
    역 이산 코사인 변환 루틴은 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    상기 입력값의 세트를 스케일링하는 단계; 및
    상기 입력값 세트에 대해, 일차원의 역 이산 코사인 변환을 실행하는 연산 세트를 동시에 실행하는 단계를 수행하게 하고,
    연산 세트를 동시에 실행하는 상기 단계는:
    수학적 연산을 수행하고 중간 결과를 만드는 SIMD 수학적 명령을 실행하는 서브단계;
    중간 결과를 시프트하여 유효 숫자를 유지하는 SIMD 시프트 명령을 실행하는 서브단계; 및
    상기 일차원 역 이산 코사인 변환을 실행하는 것이 필요로 될 때 SIMD 수학적 명령을 실행하는 상기 단계와 SIMD 시프트 명령을 실행하는 상기 단계를 반복하는 서브단계를 포함하고 있는 것을 특징으로 하는 컴퓨터 시스템.
  15. 제 14 항에 있어서, 상기 일차원 역 이산 코사인 변환은 아라이-아구이-나카지마 iDCT 알고리즘인 것을 특징으로 하는 컴퓨터 시스템.
  16. 제 14 항에 있어서, 상기 SIMD의 시프트 명령은 압축된 우측 시프트 산술 명령인 것을 특징으로 하는 컴퓨터 시스템.
  17. 제 14 항에 있어서, 상기 SIMD의 시프트 명령은 압축된 좌측 시프트 논리 명령인 것을 특징으로 하는 컴퓨터 시스템.
  18. 제 14 항에 있어서, 상기 입력값의 행렬은 MPEG 정보를 포함하고 있는 것을 특징으로 하는 컴퓨터 시스템.
KR1019980706989A 1996-03-05 1997-03-05 멀티미디어정보용역코사인변환함수를수행하는컴퓨터시스템 KR100331136B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/610,872 US5754456A (en) 1996-03-05 1996-03-05 Computer system performing an inverse cosine transfer function for use with multimedia information
US8/610,872 1996-03-05
US08/610,872 1996-03-05
PCT/US1997/004152 WO1997033236A1 (en) 1996-03-05 1997-03-05 A computer system performing an inverse cosine transfer function for use with multimedia information

Publications (2)

Publication Number Publication Date
KR19990087552A KR19990087552A (ko) 1999-12-27
KR100331136B1 true KR100331136B1 (ko) 2002-05-09

Family

ID=24446757

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980706989A KR100331136B1 (ko) 1996-03-05 1997-03-05 멀티미디어정보용역코사인변환함수를수행하는컴퓨터시스템

Country Status (6)

Country Link
US (1) US5754456A (ko)
EP (2) EP1363198A3 (ko)
KR (1) KR100331136B1 (ko)
CN (1) CN1132114C (ko)
AU (1) AU2531097A (ko)
WO (1) WO1997033236A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134270A (en) * 1997-06-13 2000-10-17 Sun Microsystems, Inc. Scaled forward and inverse discrete cosine transform and video compression/decompression systems employing the same
EP3073388A1 (en) * 1998-03-18 2016-09-28 Koninklijke Philips N.V. Data processing device and method of computing the cosine transform of a matrix
US6473534B1 (en) * 1999-01-06 2002-10-29 Hewlett-Packard Company Multiplier-free implementation of DCT used in image and video processing and compression
US6772186B1 (en) 1999-07-19 2004-08-03 Renesas Technology Corp. Multimedia multiply-adder
US6421696B1 (en) 1999-08-17 2002-07-16 Advanced Micro Devices, Inc. System and method for high speed execution of Fast Fourier Transforms utilizing SIMD instructions on a general purpose processor
US6832232B1 (en) * 2000-07-10 2004-12-14 Advanced Micro Devices, Inc. Dual-block inverse discrete cosine transform method
US6742010B1 (en) * 2000-07-10 2004-05-25 Advanced Micro Devices, Inc. Dual-block discrete consine transform method
US6973469B1 (en) 2001-02-01 2005-12-06 Advanced Micro Devices, Inc. Two-dimensional discrete cosine transform using SIMD instructions
US6996595B2 (en) * 2001-05-16 2006-02-07 Qualcomm Incorporated Apparatus and method for consolidating output data from a plurality of processors
FI111592B (fi) * 2001-09-06 2003-08-15 Oulun Yliopisto Menetelmä ja laite peräkkäisten kuvien koodaamiseksi
KR100475246B1 (ko) * 2001-10-23 2005-03-10 한국전자통신연구원 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의디코딩 성능 향상 방법 및 이를 위한 기록 매체
US7007055B2 (en) * 2002-03-12 2006-02-28 Intel Corporation Method of performing NxM Discrete Cosine Transform
US7003461B2 (en) 2002-07-09 2006-02-21 Renesas Technology Corporation Method and apparatus for an adaptive codebook search in a speech processing system
US7379956B2 (en) * 2002-07-14 2008-05-27 Apple Inc. Encoding and decoding data arrays
US7376280B2 (en) * 2002-07-14 2008-05-20 Apple Inc Video encoding and decoding
US8571340B2 (en) * 2006-06-26 2013-10-29 Qualcomm Incorporated Efficient fixed-point approximations of forward and inverse discrete cosine transforms
US8385424B2 (en) * 2006-06-26 2013-02-26 Qualcomm Incorporated Reduction of errors during computation of inverse discrete cosine transform
KR100963459B1 (ko) * 2006-06-26 2010-06-17 퀄컴 인코포레이티드 순이산 및 역이산 코사인 변환의 효율적인 고정 소수점 근사
US8660380B2 (en) * 2006-08-25 2014-02-25 Nvidia Corporation Method and system for performing two-dimensional transform on data value array with reduced power consumption
US8300698B2 (en) * 2006-10-23 2012-10-30 Qualcomm Incorporated Signalling of maximum dynamic range of inverse discrete cosine transform
GB2444744B (en) * 2006-12-12 2011-05-25 Advanced Risc Mach Ltd Apparatus and method for performing re-arrangement operations on data
US8237865B2 (en) * 2006-12-18 2012-08-07 Emanuele Salvucci Multi-compatible low and high dynamic range and high bit-depth texture and video encoding system
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
CN110221807B (zh) * 2019-06-06 2021-08-03 龙芯中科(合肥)技术有限公司 数据移位方法、装置、设备及计算机可读存储介质
US11941397B1 (en) * 2022-05-31 2024-03-26 Amazon Technologies, Inc. Machine instructions for decoding acceleration including fuse input instructions to fuse multiple JPEG data blocks together to take advantage of a full SIMD width of a processor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG45281A1 (en) * 1992-06-26 1998-01-16 Discovision Ass Method and arrangement for transformation of signals from a frequency to a time domain
US5483475A (en) * 1993-09-15 1996-01-09 Industrial Technology Research Institute Fast pipelined 2-D discrete cosine transform architecture
JP3697717B2 (ja) * 1993-09-24 2005-09-21 ソニー株式会社 2次元離散コサイン変換装置および2次元逆離散コサイン変換装置
US5428567A (en) * 1994-05-09 1995-06-27 International Business Machines Corporation Memory structure to minimize rounding/trunction errors for n-dimensional image transformation
US5610849A (en) * 1995-06-23 1997-03-11 United Microelectronics Corporation Real time two-dimensional discrete cosine transform/inverse discrete cosine transform circuit

Also Published As

Publication number Publication date
EP0885421A4 (en) 1999-08-25
KR19990087552A (ko) 1999-12-27
EP1363198A2 (en) 2003-11-19
AU2531097A (en) 1997-09-22
CN1132114C (zh) 2003-12-24
EP1363198A3 (en) 2005-11-02
US5754456A (en) 1998-05-19
WO1997033236A1 (en) 1997-09-12
EP0885421A1 (en) 1998-12-23
CN1217077A (zh) 1999-05-19

Similar Documents

Publication Publication Date Title
KR100331136B1 (ko) 멀티미디어정보용역코사인변환함수를수행하는컴퓨터시스템
KR101036731B1 (ko) 손실 및 무손실 2차원 데이터 압축을 위한 가역 변환
US5754457A (en) Method for performing an inverse cosine transfer function for use with multimedia information
KR101131757B1 (ko) 스케일링 인터페이스 및 넌-스케일링 인터페이스를 갖는 변환 디자인
EP1359546B1 (en) 2-D transforms for image and video coding
US5815421A (en) Method for transposing a two-dimensional array
US5757432A (en) Manipulating video and audio signals using a processor which supports SIMD instructions
JPH07236143A (ja) 高速デジタル信号復号化方法
JP2005327298A (ja) 動画像コーデック変換の高速実装
US6317767B2 (en) Methods and systems for performing short integer chen IDCT algorithm with fused multiply/add
JP4688988B2 (ja) ビデオデータの圧縮方法並びに装置、及び伸張方法並びに装置
US5689592A (en) Parallel processing of digital signals in a single arithmetic/logic unit
US6018351A (en) Computer system performing a two-dimensional rotation of packed data representing multimedia information
WO1997024681A9 (en) A computer system performing a two-dimensional rotation of packed data representing multimedia information
US7216140B1 (en) Efficient implementation of n-point DCT, n-point IDCT, SA-DCT and SA-IDCT algorithms
Kasperovich Multiplication free scaled 8 x 8 DCT algorithm with 530 additions
US5984515A (en) Computer implemented method for providing a two dimensional rotation of packed data
US7352906B2 (en) Continuous transform method for wavelets
Chuang et al. General Splitting and Merging of 2-D DCT in the DCT Domain
KR19980075634A (ko) 영상신호의 압축과 복원을 위한 이산 코사인 변환 장치
KR20040002115A (ko) 역 이산 코사인 변환 장치

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: 20100311

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee