KR20120098628A - 압축 및 압축해제를 이용한 향상된 멀티 프로세서 파형 데이터 교환 - Google Patents

압축 및 압축해제를 이용한 향상된 멀티 프로세서 파형 데이터 교환 Download PDF

Info

Publication number
KR20120098628A
KR20120098628A KR1020127009881A KR20127009881A KR20120098628A KR 20120098628 A KR20120098628 A KR 20120098628A KR 1020127009881 A KR1020127009881 A KR 1020127009881A KR 20127009881 A KR20127009881 A KR 20127009881A KR 20120098628 A KR20120098628 A KR 20120098628A
Authority
KR
South Korea
Prior art keywords
compression
compressed
samples
data
floating point
Prior art date
Application number
KR1020127009881A
Other languages
English (en)
Other versions
KR101703207B1 (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 KR20120098628A publication Critical patent/KR20120098628A/ko
Application granted granted Critical
Publication of KR101703207B1 publication Critical patent/KR101703207B1/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/46Multiprogramming arrangements
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6023Parallelization
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Advance Control (AREA)
  • Logic Circuits (AREA)

Abstract

멀티코어 프로세싱 환경에서 파형 데이터의 설정가능한 압축 및 압축해제는 코어들 간의 데이터 전송 효율을 향상시키고 데이터 저장매체의 자원을 절약한다. 파형 데이터 처리 시스템들에서, 입력, 중간, 및 출력 파형 데이터는 종종 코어들 간에 그리고 오프칩 메모리와의 사이에서 교환된다. 각각의 코어에서, 하나의 단일 설정가능 압축기 및 하나의 단일 설정가능 압축해제기는, 정수 또는 부동소수점 파형 데이터를 압축 및 압축해제하도록 설정될 수 있다. 메모리 제어기에서, 상기 설정가능 압축기는 오프칩 메모리로의 전송을 위하여 정수 또는 부동소수점 파형 데이터를 압축하고, 상기 설정가능 압축해제기는 오프칩 메모리로부터 수신된 압축된 패킷들을 압축해제한다. 압축은, 반도체 또는 자성체 메모리 안에 파형 데이터를 저장하기 위하여 필요로 하는, 메모리 또는 저장매체를 감소시킨다. 압축은 파형 데이터를 교환하기 위하여 필요한 지연시간 및 대역폭 모두를 감소시킨다. 본 요약서는 청구범위의 청구항들에 의하여 정의되는 본 발명의 범위를 제한하지 않는다.

Description

압축 및 압축해제를 이용한 향상된 멀티 프로세서 파형 데이터 교환{ENHANCED MULTI-PROCESSOR WAVEFORM DATA EXCHANGE USING COMPRESSION AND DECOMPRESSION}
본 발명은 컴퓨팅 코어(computing core)들 사이에서의 데이터 전송(data transfer) 및 메모리로의 데이터 쓰기(data writes)를 위한 파형 데이터(waveform data)의 압축(compression), 그리고 이후 단일 컴퓨팅 코어(computing core)에서의 데이터 수신(data reception) 또는 멀티코어 프로세싱 아키텍쳐(multiple core processing architecture)에서의 데이터 읽기(data reads)를 위한 압축해제(decompression)에 관한 것으로서, 특히 정수 및 부동소수점 수치 데이터 타입 모두의 압축에 관한 것이다. 본 발명은 모든 데이터 타입에 대하여 비손실(lossless), 고정 비율(fixed-rate), 또는 고정 품질(fixed-quality) 압축 모드(compression mode)들을 지원한다.
파형 데이터 처리 응용분야들에서, 마이크로프로세서의 중앙 처리 장치(CPU: central processing unit) 또는 다른 신호처리기(signal processing fabric)는, 파형 데이터 값들을 해당 응용분야에 특유한 방식으로 변환(transform)시키기 위하여, 저장된 프로그램의 제어 아래, 파형 데이터에 산술(arithmetic) 및 논리연산(logical operations)을 수행한다. 입력, 중간, 및 출력 파형 데이터 값들은 저장 장치 또는 메모리 또는 입력 장치로부터 읽혀져서, 처리되고, 저장 장치 또는 메모리 또는 출력 장치로 제공된다. 파형 데이터는 정수 및 부동소수점 데이터 타입으로 표현될 수 있다. 이러한 파형 데이터 처리 응용분야들의 예들은 아래와 같은 경우들을 비제한적으로 포함한다:
휴대 전화에서 이동 전화 신호의 수신 및 발신,
휴대용 음악 재생기에서 음악(audio)의 녹음 및 재생,
DVD로부터 압축된 비디오를 읽어들이기(retrieving), 압축된 비디오의 압축해제, 및 디스플레이 장치에 압축해제된 비디오를 전송,
음성 녹음기에서 디지털화된(digitized) 음성의 녹음 및 재생, 및
화학적, 분자적(molecular), 전기적, 또는 생물학적 과정들의 모의실험(simulating).
파형 데이터 처리 산업은 다양한 종류의 파형 데이터 처리 엔진들 및 파형 데이터 저장 장치들을 제공하는 수 많은 제조업자들로 구성되어 있다. 파형 데이터 처리 엔진들은 가장 흔하게는 디지털 신호 처리기(DSP: digital signal processor), 즉 MPY 및 MAC와 같은 전용 어셈블리 언어 명령(assembly language instruction)들을 이용한 곱셈-누적(MAC: multiply-accumulate) 연산을 지원하는 것이 가능한 CPU를 이용하여 구현된다. 파형 처리 응용사례들을 위한 MPY 및 MAC 명령들을 구비한 CPU들을 공급하는 회사들로는, 인텔(Intel Corporation; 펜티엄(Pentium), 네할렘(Nehalem), 이타니움(Itanium), 라라비(Larrabee) 및 기타 프로세서들을 포함하는 x86 명령세트 계열의 프로세서들), 엔비디아 그래픽 프로세싱 유닛들(Nvidia graphic processing units(GPUs)), AMD(Advanced Micro Devices) 계열의 x86-호환 CPU들, AMD/ATI GPU들, 텍사스 인스트루먼트(Texas Instruments; TMS320 DSP계열), Analog Devices(Blackfin, TigerSharc, SHARC, 및 ADSP-21xx 계열), 모토롤라(Motorola; PowerPC 및 56xxx 계열), ARM(Cortex, ARM7, ARM9, ARM10, 및 ARM11 계열), MIPS 테크놀로지(MIPS Technology; R2000 내지 R16000, MIPS16, MIPS32, MIPS64, 및 MIPS DSP 계열), Microchip(dsPIC 계열), IBM(PowerPC 계열), 그리고 기타 여러 회사들을 포함한다. 파형 데이터 처리 응용사례들은 또한, FPGA(field-programmable gate array) 안의 논리, 산술 및 저장 요소들로 이루어진 프로그램 가능한 구조(programmable fabric)를 사용하여 구현될 수 있다. 파형 데이터 처리 응용사례들을 위해 사용되는 FPGA들을 제공하는 회사들로는, Altera(Cyclone, Arria, 및 Stratix 계열), Xilinx(Spartan 및 Virtex 계열), Actel(Axcelerator 및 ProASIC 계열), Lattice(XP, ECP, 및 SC 계열), 그리고 기타 여러 회사들을 포함한다. 파형 데이터 처리 응용사례들은 또한, 특정 파형 데이터 처리 작업을 수행하도록 설계된 ASICs(application-specific integrated circuits) 안에 포함될 수 있다. ASIC 공급자들은 TSMC, UMC, IBM, LSI Logic, 및 기타 여러 회사들을 포함한다.
DSP, FPGA, ASIC, 그리고 메모리 시장 세그먼트(segment)들은 모두 반도체 산업의 하위 세그먼트들이다. "메모리" 및 "저장"이라는 용어는, 파형 데이터 처리 응용사례들에서 사용되는 일시적 또는 영구적으로 정수 또는 부동소수점 샘플링된 데이터 값들을 저장하는 장치들 및 하위시스템들을 위한 이어지는 설명에서 대체 가능한 의미로 사용되었다. 파형 데이터 메모리들은 다음의 반도체 카테고리들: 즉, 정적 임의 접근 메모리들(SRAM: static random access memories), 동적 임의 접근 메모리들(DRAM: dynamic random access memories), 2배속 및 4배속 임의 접근 메모리들(DDR 및 QDR: double and quadruple data rate random access memories), 플래시 메모리들(flash memories), SSD들(solid-state drives), 플래시 드라이브들sh drives), 디스크 드라이브들(disk drives), 강자성 임의 접근 메모리들(FRAM: ferro-magnatic random access memories), 캐쉬 메모리들(cache memories), 그리고 파형 데이터를 저장하는 데 사용되는 어떠한 기타 미래의 반도체 메모리들도 포함할 수 있다. 반도체 메모리 또는 저장 장치들을 제조하는 회사들은, Cypress, Dallas Semiconductor, Honeywell, 하이닉스, IDT, Micron, Mitsubishi, NEC, Renesas, Sharp, Sony, Toshiba, UTMC/Aeroflex, White Electronic Design, 그리고 기타 회사들을 포함하는 SRAM 제조업체들; 삼성, Toshiba, 인텔, ST Microelectronics, Renesas, 하이닉스, 및 기타 회사들을 포함하는 플래시 메모리(flash memory) 제조업체들; 그리고 후지쯔(Fujitsu), Ramtron, 및 삼성을 포함하는 FRAM 제조업체들을 포함한다.
본 명세서에서, "파형 데이터 처리 응용사례"(waveform data processing application)들은 샘플링된 데이타 파형(sampled data waveform)에 수학적 및/또는 논리적 연산들을 수행하는 응용사례들을 포함한다. 샘플링된 데이터 파형들은 흔히 음성, 오디오, 화상, 비디오와 같은 현실의 아날로그 신호들, 또는 기타 센서의 출력 신호들을 ADC(analog-to-digital converter)를 이용하여 디지털화(digitized)함으로써 얻어진다. 샘플링된 데이터 신호들은 또한 모의실험될 수도 있고, 아날로그 음성, 오디오, 화상, 또는 비디오 신호들을 생성하기 위하여, 직접 또는 추가적인 파형 데이터 처리 작업 후에 DAC(digital-to-analog converter)로 공급될(fed) 수 있다. 본 명세서에서 "샘플링된 데이터 파형"이라는 용어는 또한, 입력 또는 중간의 샘플링된 데이터 파형에 수행된 수학적 및/또는 논리적 연산들로부터 생성된 중간 및/또는 최종 샘플링된 데이터 파형들을 포함한다.
파형 데이터는 두 가지 주요 숫자 형식: 정수 형식(integer formats)들 및 부동소수점 형식(floating-point formats)들로 저장되는 것이 바람직하다. 정수 형식들은 샘플링된 데이터 값의 폭이 통상적으로 고정되어 있는 부호 붙임 정수형(signed), 부호 없는 정수형(unsigned), 또는 부호 및 크기 정수형(sign-and-magnitude)의 방식을 사용하는 파형 데이터를 말한다. 파형 데이터 처리에 적합한 공통적인 정수 형식들은, 각각 {-128, +127} 및 {-32768, +32767}의 범위를 갖는 8 비트 및 16 비트 부호 붙임 정수들과, 각각 {0, 255} 및 {0, 65535}의 범위를 갖는 8-비트 및 16-비트 부호 없는 정수형들이다. 대안적으로 파형 데이터는 32-비트, 64-비트, 및 128-bit 부동소수점 형식들로 표현될 수 있다. 가장 흔한 부동소수점 형식들은 부동소수점 값을 위한 IEEE-754 표준을 준수한다. 상기 IEEE-754 표준은 1985년에 발행되었고, 2008년에 순차적으로 업데이트 되었다. IEEE-754 표준은 하나의 부호 비트, 8 개의 지수 비트들, 및 23 개의 가수(mantissa) 비트들을 사용하여 32-비트 부동소수점 값들("플로트"(float) 또는 "단정도 부동소수점"(single-precision floats)이라고도 지칭됨)을 표현한다. IEEE-754 표준은 또한, 하나의 부호 비트, 11 개의 지수 비트들, 및 52 개의 가수 비트들을 사용하여 64-비트 부동소수점 값들("더블"(double) 또는 "배정도 부동소수점"(double-precision floats)라고도 지칭됨)을 표현한다. 16-비트 "반정도 부동소수점"(half floating point)과 같은 다른 부동소수점 표현들도 존재하지만, 보통 플로트 및 더블의 연산들이 전용 부동소수점 회로를 구비한 CPU 또는 DSP 프로세서에 의해 지원된다. 이와 같은 회로는 흔히 부동소수점 유닛 또는 FPU(floating-point unit)이라고 불린다. 많은 응용사례들에서 부동소수점 계산은, 부동소수점 데이터들이 배정도 형식보다 단정도 부동소수점 형식으로 표현되는 경우에, 훨씬 빠르고 더 적은 전력을 소비한다.
파형 데이터 처리 응용사례들에서 사용되는 저장 장치들은 다양한 접근 시간(access time)을 보여준다. 10 nsec 미만의 접근 시간을 갖는 가장 빠른 저장 장치들은 보통, 프로세서 코어와 동일한 반도체 다이 또는 집적회로 위에 가공될 수 있는, SRAM들이다. 상기 SRAM 저장매체는 캐쉬 메모리(cache memory), 온칩 메모리(on-chip memory), 또는 레지스터 파일(register file)이라고 불린다. 가장 느린 반도체 저장 요소들은 통상적으로 플래시 메모리들이며, 그 접근 시간은 100 nsec 내지 1 microsec의 범위를 갖는다. 플래시 메모리 쓰기는 플래시 메모리 읽기보다 더 느리다. 메모리 기술들은 흔히 하나의 계층구조(hierarchy) 안에 배열되는데, 가장 빠른 저장 요소들은 CPU 또는 DSP 프로세싱 조직(processing fabric) 근처에 배치되고, 느린 저장 요소들은 더 빠른 저장 요소들 주변에 계층적으로 배치된다. "온칩"(on-chip) 및 "오프칩"(off-chip)이라는 용어들은 저장매체의 CPU 또는 프로세싱 조직까지의 근접도(proximity)를 특징짓는 데 사용되는 형용사들이다. 온칩 저장매체는 CPU 또는 프로세싱 조직과 동일한 반도체 기판 위에, 동일한 다중칩 모듈(MCM: multi-chip module) 안에 패키지화된다. 오프칩 저장매체는 CPU 또는 프로세싱 조직으로부터 분리된 집적회로(IC)에 위치한다. 다른 느린 저장 요소들은 디스크 드라이브(disk drive)들 및 테이프 드라이브(tape drive)들을 포함하는데, 그 접근 시간은 수 십 msec이고, 데이타 속도는 통상적으로 100 MB/sec 또는 그 미만이다.
파형 데이터 처리 응용사례들에서 사용되는 메모리들의 적층된 계층구조(layered hierarchy)가 주어졌을 때, 메모리에 저장된 샘플링된 파형 데이터에 대한 CPU 또는 신호 프로세싱 조직의 접근 시간을 향상시키는 것은 파형 데이터를 처리하는 응용사례들의 지속적인 목표이다. 두 번째 목표는, CPU 또는 신호 프로세싱 조직의 파형 데이터에 대한 요청으로부터 해당 데이터가 상기 CPU 또는 신호 프로세싱 조직에 의하여 직접적으로 접근 가능한 메모리(통상적으로 캐쉬 또는 레지스터 파일) 안에 나타나기까지의 지연시간(latency)을 줄이는 것이다. 세 번째 목표는 파형 데이터 프로세싱 코어들을 메모리 계층구조에 잇는 연결 조직의 복잡도(complexity)를 감소시키는 것이다.
파형 처리 응용사례들에서 명령 및 데이터 모두를 압축하고 압축해제하기 위한 기법들이 존재한다. 많은 압축 또는 인코딩(encoding) 기법들은, 예를 들어 정수형 데이터 또는 부동소수점 데이터와 같은, 오직 하나의 파형 데이터 형식만을 받아들일 수 있고, 두 가지 모두를 받아들일 수는 없다. 유사하게, 많은 압축 또는 인코딩 기법들은, 무손실(lossless) 또는 손실(lossy) 모드와 같이, 오직 하나의 압축 모드만을 제공할 뿐이고, 둘 모두를 제공하지는 않는다. 많은 압축 또는 인코딩 기법들은, 음성, 오디오, 화상, 또는 비디오와 같은 오직 특정 클래스의 파형 데이터에 적용 가능할 뿐이고, 다른 클래스의 파형 데이터에는 충분한 압축을 제공하지 않는다. 많은 압축 또는 인코딩 기법들은 (주소, 데이터) 쌍들을 다루는데, 상기 쌍들은 SRAM, DRAM, 또는 플래시를 위한 메모리 제어기들에서 통상적으로 발견된다.
멀티코어 파형 처리 시스템에서는, 많은 종류의 파형 데이터가 서로 다른 데이터 형식들을 이용하여 표현될 수 있다. 특정 응용사례를 위한 프로그램들은 통상적으로 해당 데이터 형식을 정의한다. 멀티코어 프로세싱 아키텍쳐의 목적은 일반적으로 많은 양의 데이터에 연산적으로 작업량이 많은(computationally intensive) 작업을 수행하는 것이다. 연산적으로 작업량이 많은 응용사례들에서는 많은 양의 데이터의 빠른 전송을 가능하게 하도록, 컴퓨팅 코어들 간 및 코어와 메모리 사이의 전송을 위하여 파형 데이터의 압축이 필요하다.
본 명세서에서는 집적회로(IC)라는 용어와 칩(chip)이라는 용어는, 하나 이상의 전자 다이(electronic die)를 포함하고 전자적 또는 광학적 연결들(핀, 도선, 포트 등)을 구비한 하나의 단일 패키지를 지칭하도록, 상호 호환 가능하게 사용되었다. 상기 전자 다이 또는 반도체 다이는, 집적회로들 및 반도체 장치들을 포함하는 반도체 기판을 말한다. 상기 다이는 하나의 단일 코어 또는 다수의 코어들을 구비할 수 있다. 상기 코어는 어떠한 종류의 데이터 프로세서를 위한 프로세싱 유닛도 될 수 있다. 예를 들어, 상기 프로세서 코어는 중앙처리장치(CPU), 디지털 신호처리기(DSP), 그래픽 프로세싱 유닛(GPU), 마이크로제어기 유닛(MCU: microcontroller unit), 통신 프로세서 또는 어떠한 종류의 프로세싱 유닛이라도 될 수 있다. 상기 단일 다이 위의 개별적인 코어들은 해당 응용분야에 적합한 동일한 종류의 프로세싱 유닛일 수도 있고, 서로 다른 프로세싱 유닛들의 조합일 수도 있다. 상기 프로세싱 유닛들은 하나의 메모리 제어기, 하나의 직접 메모리 접근(DMA: direct memory access) 제어기, 하나의 네트워크 제어기, 하나의 캐쉬 제어기, 및 하나의 부동소수점 유닛(FPU)을 (비한정적으로) 포함한다. 상기 프로세싱 유닛들은 하나 이상의 프로세서 코어들과 동일한 다이 위에 통합될 수도 있고, 또는 상기 프로세서 코어들과는 분리된 다이 위에 존재할 수도 있다.
본 명세서에서, 압축에 대하여 사용된 "실시간"(real time)이라는 용어는, 하나의 디지털 신호가 적어도 해당 디지털 신호의 샘플링 속도만큼 빠른 속도로 압축되는 것을 의미한다. "실시간"이라는 속성은 또한, 원래의 신호 획득 속도 또는 샘플링 속도와 비교하여, 해당 디지털 신호의 처리, 전송, 및 저장을 위한 속도를 묘사하는 데 사용될 수 있다. 샘플 속도(sample rate)는 하나의 ADC 또는 DAC가 디지털 및 아날로그 신호들 간의 변환 중에 샘플들을 형성하는 속도를 말한다. 압축되지 않는, 샘플링되거나 디지털인 신호의 비트속도(bit rate)란, 샘플 당 비트 개수를 샘플링 속도로 곱한 값을 의미한다. 압축률(compression ratio)은, 압축된 샘플들의 비트 속도에 대한, 원래의 신호 샘플들의 비트 속도의 비율을 말한다. 실시간 시스템의 기능을 모의실험하는 하나의 파형 데이터 처리 응용사례에서, 일련의 파형 데이터 값들에 수행되는 일련의 연산(operation)들은 해당 실시간 처리 순서와 동일할 수 있지만, 상기 처리가 수행되는 속도는 "실시간"보다 느릴 수 있다. 본 명세서는 모의실험된 파형 데이터 처리 응용사례과 같은 응용사례들을 참조하고 있다.
본 명세서는 다양한 통신 조직(communication fabric)들을 참조한다. 상기 통신 조직이란, 둘 이상의 코어들이 서로 통신하는 것을 가능케 하는, 두 개의 프로세서 코어들 사이의 어떠한 연결도 될 수 있다. 상기 통신 조직들의 예들은, 버스(bus), 네트워크, 인쇄회로기판(printed circuit board) 위의 트레이스(trace)들, 발신기 및 수신기를 포함하는 무선 연결, 스위치, 네트워크 인터페이스 카드(NIC: network interface card), 라우터(router), 네트워크-온-칩(network-on-chip), 또는 두 개의 프로세서 코어들 사이의 어떠한 유선 또는 무선 연결도 될 수 있다.
본 명세서는 비손실 및 손실 압축을 참조한다. 비손실 압축에서는, 압축해제된 샘플들이 원래의 샘플들과 동일한 값을 갖는다. 일부 응용사례들에서는, 충분한 비트 속도 절감을 제공하기 위하여, 손실 압축이 필요할 수 있다. 손실 압축에서는, 압축해제된 샘플들이 원래의 샘플들과 유사하기는 하지만 동일하지는 않다. 손실 압축은 압축된 샘플들의 비트 속도와 압축해제된 샘플들의 왜곡(distortion) 사이에서 절충(tradeoff)을 가져온다.
본 발명의 실시예들은 위에서 설명한 종래의 문제점들을 고려하여 만들어졌다. 본 발명은 다음과 같은 목적들을 포함한다.
(A) 멀티코어 프로세싱 시스템에서 프로세서 코어들 사이의 전송을 위한, 둘 이상의 프로세서 코어들에서의 파형 데이터의 압축.
(B) 프로세서 코어와 파형 데이터 메모리 계층구조의 요소들 사이의 전송을 위한, 하나의 프로세서 코어 또는 CPU에서의 저장 장치의 압축.
(C) 입력 제어기(input controller)로부터 다수의 프로세서 코어들로의 배분(distribution)을 위한 파형 데이터의 압축.
(D) 압축된 데이터를 출력 제어기(output controller)에 전달하기 위한, 하나 이상의 프로세서 코어들에서의 처리된 파형 데이터의 압축.
(E) 송신 측 CPU, 입력 제어기, 또는 메모리로부터 수신된 압축된 데이터에 대한 수신 측 CPU에서의 압축해제.
(F) 처리된 파형 데이터를 재구성(reconstruct)하기 위한, 출력 제어기에서의 압축된 데이터의 압축해제.
(G) 멀티코어 프로세싱 환경에서, 정수 및 부동소수점 데이터 형식들에 대한 설정가능한(configurable) 압축 및 압축해제.
(H) 단일 프로세서 코어에서 메모리로의 전송 또는 메모리로부터의 전송을 위한, 정수 및 부동소수점 데이터 형식들에 대한 설정가능한 압축 및 압축해제.
(I) 정수 및 부동소수점 데이터 형식들을 위한 동작 모드(operational mode)들을 구비한, 단일 설정가능 압축기(single configurable compressor).
(J) 사전에 압축된 데이터로부터 정수 및 부동소수점 데이터를 재구성하기 위한 동작 모드들을 구비한, 단일 설정가능 압축기.
(K) 패킷 기반(packet-based) 통신 인터페이스를 통하여 압축된 파형 데이터를 전송하기 위하여, 데이터 패킷의 압축된 페이로드(payload)를 형성하는 압축기.
(L) 패킷 기반 통신 인터페이스로부터 압축된 페이로드 데이터를 수신하고 해당 파형 데이터를 재구성하는 압축해제기.
(M) 사용자 제어 또는 자동 선택을 통해 비손실 또는 손실 압축을 적용하기 위한 압축기의 설정.
(N) 하나의 제어기 매개변수에 따라 손실 또는 비손실 압축해제를 적용하기 위한 압축해제기의 설정.
(O) 고정된 압축 비트 속도를 갖춘 압축 데이터를 생성하기 위한 압축 작업들의 적용.
(P) 고정된 특정 품질 기준(quality metric)을 갖춘 압축 데이터를 생성하기 위한 압축 작업들의 적용.
파형 데이터의 압축은, 멀티코어 프로세싱 시스템의 자원들을 보존함으로써 여러 장점들을 제공한다. 하나의 멀티코어 프로세싱 시스템에서, 입력, 중간, 및 출력 파형 데이터는 종종 코어들 사이에서 공유되고 교환된다. 압축은, 둘 이상의 코어들 사이에서의 상기 파형 데이터의 교환에 필요한 지연시간(latency) 및 대역폭(bandwith)을 감소시켜준다. 압축은 프로세서 코어들 사이에서 파형 데이터를 전송하는 데 필요한 전력 및 면적을 감소시킨다. 또 다른 장점은, 다수의 프로세서들이 파형 데이터를 교환하도록 하는 데 필요한 핀 카운트(pin count) 및 인쇄회로기판 트레이스 영역(trace area)의 감소이다. 압축은 반도체 또는 자성체(magnetic) 메모리에서 파형 데이터를 보관하는 데 필요한 메모리 또는 저장공간을 감소시켜서, 메모리의 실효적 용량(effective capacity)을 증가시킨다. 파형 데이터의 압축은, CPU와 파형 데이터 메모리 계층구조의 요소들 사이에서 파형 데이터를 전송할 때, 접근 시간 및 지연시간 모두를 감소시킨다. 요약하자면, 본 발명의 장점들은, 단일 또는 멀티 코어 프로세싱 환경에서 파형 데이터를 교환하는 압축 송신자(compressing tranmitter)들 및 압축해제 수신자(decompressing receivers)들의 복잡도, 비용, 및 능력을 절감하는 것을 포함한다.
파형 데이터는 멀티 프로세서 코어들에서 병렬로 실행되는 다수의 쓰레드들에 의하여 공통으로 사용될 수 있다. 상기 다수의 쓰레드들은, 실행을 계속하기 위하여 파형 데이터의 일부를 필요로 하는 한 코어 위의 하나의 쓰레드가, 다른 코어 위의 한 쓰레드가 해당 데이터의 처리를 마치고 대기중인 쓰레드에게 데이터를 넘겨주기를 기다리는 경우에, 대기 모드(waiting mode)로 들어가도록 강제될 수 있다. 이러한 대기 모드들은, 공통의 파형 데이터 위에 병렬로 동작하는 다중 쓰레드들을 운용하는, 멀티-프로세서 시스템에 있어서 심각한 성능상 병목장애(critical performance bottleneck)를 일으킨다. 프로세서 코어들 사이에서 공통의 파형 데이터의 통신을 위하여 필요한 시간과, 멀티-프로세서 시스템의 입력 및 출력 리소스들과의 공통 파형 데이터 통신을 위하여 필요한 시간은 상기 핵심 성능상 병목장애를 심화시킨다.
도 1은 파형 데이터의 세 가지 클래스들(classes)을 보여주는 도면이다.
도 2는 파형 데이터 처리 응용사례들의 공통 요소들을 보여주는 도면이다.
도 3은, 두 개의 프로세싱 요소들 사이의, 양방향(bi-directional), 패킷 기반 파형 데이터 교환 파이프라인(pipeline)을 보여주는 도면이다.
도 4는 데이터 교환을 위해 사용되는 패킷 내의 통상적인 필드(field)들을 보여주는 도면이다.
도 5는 산업 표준을 따르는 패킷 기반 프로토콜들의 표이다.
도 6은 다양한 반도체 및 CPU 공급자들에 의하여 제공되는 파형 데이터 처리에 적합한 멀티코어 제품들을 도시하는 도면이다.
도 7은 프로세싱 요소들 사이에서 파형 데이터의 압축해제 및 압축을 수행하기에 적합한 네트워크-온-칩(NoC: network-on-chip) 조직을 도시하는 도면이다.
도 8은 멀티코어 구성들, 코어간(core-to-core) 거리, 및 메모리 종류 간의 상호 관련성을 보여주는 표이다.
도 9는, 함께 조합되어 파형 데이터 처리 응용사례에서 다수의 코어들 사이에 공유되는 파형 데이터의 압축에 적합한, 본 발명의 주요 시스템 구성요소들을 보여주는 도면이다.
도 10은 정수형 파형 데이터의 압축에 적합한 하나의 압축기를 보여주는 도면이다.
도 11은 압축된 정수형 파형 데이터의 압축해제에 적합한 하나의 압축해제기를 보여주는 도면이다.
도 12는 부동소수점 파형 데이터의 압축에 적합한 하나의 압축기를 보여주는 도면이다.
도 13은 압축된 부동소수점 파형 데이터의 압축해제에 적합한 하나의 압축해제기를 보여주는 도면이다.
도 14는 본 발명의 설정가능한 압축기 및 압축해제기를 기존의 멀티코어 파형 데이터 처리기들에 통합시키는 두 가지 예들을 보여주는 도면이다.
도 15는 하나의 프로세서 코어에 입력 데이터를 제공하는 예를 보여주는 도면이다.
도 16은 다수의 프로세서 코어들 사이에서 데이터를 통신하는 예를 보여주는 도면이다.
도 17은 하나의 프로세서 코어로부터 하나의 출력 제어기에 데이터를 전송하는 예를 보여주는 도면이다.
도 18은 오프칩(off-chip) 메모리 접근을 위한, 압축 및 압축해제를 이용한 향상된 DMA, 입-출력, 또는 메모리 제어기를 보여주는 도면이다.
도 19는 압축을 이용하는 경우와 이용하지 않는 경우의 데이터 전송 예를 비교하는 표이다.
도 20은 멀티 패킷 데이터 세트(multi-packet data set)을 위한 입력-축력 시간으로서의 처리 시간의 감소를 보여주는 도면이다.
본 발명은 멀티코어 프로세싱(multi-core processing) 환경에서 파형 데이터의 설정가능한 압축 및 압축해제에 관한 것이다. 멀티코어 프로세싱 시스템에서, 각각의 코어는 파형 데이터의 일부에 대한 분리된 계산을 수행할 수 있다. 파형 데이터의 입력, 중간, 및 출력 데이터는 코어들 및 메모리 계층구조 사이에 공유되고 교환될 수 있다. 본 발명은 둘 이상의 코어들 사이에서 상기 파형 데이터의 교환에 필요한 지연시간 및 대역폭 모두를 줄여준다. 또한 본 발명은, 메모리 또는 저장매체 기록 시에 상기 파형 데이터를 압축하고 메모리 또는 저장매체 판독 시에 상기 파형 데이터를 압축해제함으로써, 반도체 또는 자성체 메모리에서 파형 데이터를 보관하는 데 필요한 메모리 또는 저장공간을 줄이는 데에도 적합하다.
도 1은 파형 데이터의 세 가지 예들을 보여준다. 도 1a는 레이더(radar) 및 초음파 응용사례들에서 사용되는 전형적인 신호 펄스인 하나의 펄스 파형(pulsed waveform)의 그래프를 보여준다. 도 1a의 파형 데이터는, y축 위의 범위값들에 표시된 것처럼, {-128, +127}의 범위 내에 있는 8비트 부호있는 정수값들로서 처리되어있다. 도 1a의 x축은 상기 파형 데이터 펄스가 대략 3500 샘플들로 이루어져 있음을 나타내고 있다. 도 1a는 이차원 파형 데이터의 일반적인 클래스의 구체적인 한 예인데, 제1 축은 해당 신호의 시-변화(time-varing) 특성을 나타내고, 제2 축은 전형적인 시간축(temporal dimension)(시간 또는 샘플 수)을 나타낸다. 이차원 파형 데이터 그래프로 표현되는 구체적인 파형 데이터 특성은 응용사례에 따라 달라진다.
도 1b는 과학 또는 수학 응용사례를 위하여 계산된 하나의 곡면의 삼차원 그래프를 보여준다. z축은, 상기 파형 데이터의 값들이 부동소수점 형식이고 {-2.0, +2.0} 범위에 있음을 보여주고 있다. x축 및 y축 값들은 차례로 {-1, +1} 및 {-2, +2} 범위 안에 있다. 도 1b는 삼차원 파형 데이터의 일반적인 클래스의 구체적인 한 예인데, 수직축은 해당 신호의 시변화 특성을 나타내고, 제2 및 제3 축은 두 개의 다른 차원들(대체로 이차원 그리드 상에서의 공간 위치)을 나타낸다. 삼차원 파형 데이터 그래프로 표현되는 구체적인 파형 데이터의 특성은 응용사례에 따라 달라진다.
도 1c는 화학 모의실험으로부터 얻어진 하나의 삼차원 분자를 도시하고 있다. 도 1c는 축들을 포함하지는 않지만, 도시된 분자의 차원들 및 구성들이 해당 모의실험에 의하여 생성된 내부적 부동소수점 파형 데이터에 대한 시각화(visualization)의 결과이다. 도 1c는 삼차원 파형 데이터의 일반적인 클래스의 구체적인 한 예인데, 해당 데이터는 삼차원 물체로 표현될 수 있다. 해당 삼차원 물체로서 표현되는 구체적인 파형 데이터 특성은 응용사례에 따라 달라진다.
도 1a, 도 1b, 및 도 1c는 파형 데이터의 넓은 클래스들의 예들을 보여주고 있다. 파형 데이터의 공통 특성들은, 비한정적으로 다음을 포함한다:
1. 데이터 값들은 정수 형식 또는 부동소수점 형식으로 표현된다,
2. 데이터 값들은 샘플링 프로세스 또는 모의실험에 기반한 특정 시퀀스(sequence) 안에 나타난다,
3. 데이터 값들은 인접 데이터 값들과 특정한 관계를 갖는다,
4. 더하기, 빼기, 곱하기, 나누기, 또는 가중평균들과 같은 수학적 연산들이 시퀀스 내의 인접한 데이터 값들에 수행된다,
5. 인접한 데이터 값들은 종종 서로 상관관계(correlated)를 가지고 있다.
도 2는 파형 데이터 처리를 위한 프로세싱 환경을 보여주고 있다. 실세계 아날로그 신호는 센서 또는 감지기에 의하여 제공될 수 있다. ADC(analog-to-digital) 변환기(120)는 실세계 아날로그 신호(들)을 디지털화(digitize)하여 디지털화된(digitized) 파형 데이터(125a)를 생성한다. 수치처리기(numerical processor)(140)는 단일 코어 또는 다수의 코어들(멀티코어)을 포함할 수 있다. 상기 수치처리기(140)는 상기 디지털화된 파형 데이터(125a) 위에 수학적 및/또는 논리적 연산들을 수행하고, 선택적인 중간 디지털 결과들(150)과, 디지털 처리 결과(160a)를 생성한다. 일부 응용사례들에서 상기 수치처리기(140)는, 디지털화된 파형 데이터(125a) 대신 또는 추가로, 실세계 신호 모의실험기(130)로부터 모의실험 디지털 파형 데이터(125b)를 전달받는다. 일부 응용사례들에서 디지털화된 처리 결과들(160b)은 DAC(digital-to-analog) 변환기(163)로 전달되어, 실세계 아날로그 출력(165)을 생성한다. 많은 응용사례들에서 상기 디지털 파형 데이터(125a), 모의실험 디지털 파형 데이터(125b), 중간 디지털 결과들(150), 디지털 처리 결과들(160a), 및 디지털화된 처리 결과들(160b)은, 상기 수치처리기(140)로 전달되거나 전달받는 데 있어서, 대역폭의 병목장애를 겪게 된다. 본 발명의 실시예들은 파형 데이터에 대한 상기 대역폭 병목장애들을 감소시킨다.
도 3은 두 개의 직접 연결된 프로세서 코어들 사이의, 전형적인 코어간 인터페이스를 도시하고 있다. 코어 200a 및 코어 200b는 양방항(bi-directional), 전이중방식(full-duplex) 수신(Rx) - 송신(Tx) 하부시스템을 통하여 통신한다. 코어 200a는 전송 인터페이스(210a) 및 Tx FIFO, 또는 메모리 버퍼(220a)를 이용하여 코어 200b에 정보를 전송한다. 패킷 기반 통신을 위하여, 전송 채널(230a)는 통상적으로 최대 페이로드 크기(패킷 용량)를 갖는 패킷들을 전달한다. 상기 전송 인터페이스(210a)는 상기 최대 페이로드 크기보다 큰 패킷들을 해당 패킷 프로토콜의 최대 페이로드 크기를 따르는 다수의 전송 패킷들(240a)로 분리한다. (아래에서 설명하는) 도 5는 공통 패킷 기반 통신 프로토콜들을 위한 통상적인 패킷 페이로드 크기들을 나열하고 있다. 서로 다른 우선순위들을 갖는 패킷들의 전송을 지원하기 위하여, Tx FIFO 또는 메모리 버퍼(220a)는, 다수의 FIFO들 또는 다수의 메모리 버퍼들과, 매순간 다수의 FIFO들 또는 다수의 메모리 버퍼(220a)들 중에 그 우선순위가 전송 채널(230a)에서 가장 높은 패킷을 전송하는 하나의 메모리 제어기(도면에는 생략)를 포함한다. 코어 200b는 상기 전송 채널(230a)로부터 Rx FIFO, 또는 메모리 버퍼(250a) 및 Rx 인터페이스(260a)를 이용하여 패킷들을 수신한다. 상기 Rx FIFO 또는 메모리 버퍼(260a)는, 상기 Tx FIFO 또는 메모리 버퍼(220a)에 대응하고 서로 다른 우선순위의 패킷들을 보관하는 버퍼들 안에 수신된 패킷들을 일시적으로 저장하는, 다수의 FIFO들 또는 메모리 버퍼들을 포함할 수 있다. 다중 우선순위(multi-priority) 코어간(core-to-core) 인터페이스들은 해당 프로토콜로 하여금 서비스 품질(QoS: quality of service), 실시간, 및 우선순위-기반 통신(prioritized communication)을 지원할 수 있게 해준다. 코어 200b는 상기 Rx 인터페이스(260a)에 의하여 코어 200a로부터의 신규 도착 패킷들이 사용가능하다는 것을, 선택적으로 코어 200a로의 인터럽트(interrupt)(도면에는 생략)와 함께, 통지받는다. 상기 코어 200b는, Tx 인터페이스 210b, Tx FIFO 또는 메모리 버퍼(220b), 전송 채널(230b), 전송 패킷들(240b), Rx FIFO 또는 메모리 인터페이스(250b), 및 Rx 인터페이스(260b)를 포함하는 아날로그 통신 채널을 통하여, 상기 코어 200a에게 패킷들을 전송한다. 유일한 차이는 패킷의 방향뿐이다(코어 200a로부터 코어 200b까지, 또는 코어 200b로부터 코어 200a까지). 도 4는 통상적인 패킷(240)의 내용을 도시하고 있다. 패킷 프로토콜들은 보통 패킷 헤더(242)로 시작하고, 패킷 페이로드(244)로 이어지며, 선택적인 패킷 트레일러(246)로 끝나게 된다. 상기 패킷 헤더(242)는 특정 패킷 프로토콜 또는 표준에 의하여 지정된 필수적 및 선택적 필드들을 모두 포함한다. 필수적 패킷 필드들은 보통 패킷-시작(start-of-packet) 또는 동기화(synchronization) 식별자(indicator)와, 패킷의 발신지(송신자) 및 목적지(발신자)를 포함한다. 선택적 패킷 헤더 필드들은 페이로드 데이터 종류(제어정보 또는 데이터; 패킷 우선순위 등)와 페이로드 길이를 위한 필드들을 포함할 수 있다. 상기 패킷(240)의 데이터를 보관하는 일부는 페이로드 부분(244) 또는 데이터 부분이라고 불린다. 패킷 프로토콜 또는 표준에 따라, 상기 패킷 페이로드(244)는 결코 변화하지 않는 고정 크기를 갖거나, 상기 헤더(242) 및 트레일러(246) 사이에서 변화하는 페이로드를 갖거나(이 경우 상기 패킷 헤더(242) 내에는 패킷 길이 정보가 없음), 또는 상기 패킷 헤더(242) 안에 길이 정보가 포함된 변화하는 크기의 페이로드를 가질 수 있다. 상기 페이로드의 내용은 패킷 프로토콜 또는 표준에 따라 변화하지만, 대부분의 패킷 프로토콜들 및 표준들은 바이트(8비트) 단위, 워드(16비트) 단위, 롱워드(32비트)단위, 및 부동소수점(32비트 또는 64비트)단위를 허용한다. 종종 전달되는 상기 패킷 페이로드의 데이터 타입이 패킷 프로토콜의 하부 레이어(layer)들에게는 알려지지 않는다. 선택적인 패킷 트레일러(246)는, 수신된 패킷에서 에러들의 감지 및 가능한 정정을 돕는 순환 중복 검사정보(CRC: cyclic redundancy check), 또는 패킷-종료(end-of-packet) 필드를 포함한다.
도 5는 헤더 및 페이로드 필드들 둘 다를 포함하는 통신 프로토콜들을 위한 다양한 컴퓨터 산업 표준들을 비교하는 표이다. 이 표준들은 PCI 익스프레스(PCIe), 이더넷(Ethernet)(이더넷의 변종들은, 10baseT[10Mbps], 100baseT[100Mbps], 1GbaseT or GbE[1Gbps], 10GbaseT 또는 10GbE[10Gbps]와 같이, 데이터 속도를 포함하는 명칭으로 불리워짐), 하이퍼트랜스포트(HyperTransport), 퀵패스 인터커넥트(QPI: QuickPath interconnect), 인피밴드(Infiband), 및 래피드IO(RapidIO)를 포함한다. 상기 표준들은 패킷 기반 프로토콜들을 대변하지만, 추가적인 프로토콜들이 미래에 개발될 수 있다. 도 5에 보인 것처럼, 패킷 헤더 길이는 4 내지 42 바이트로 변화하고, 허용 가능한 페이로드 크기는 0 내지 4096 바이트로 변화한다. 본 발명의 하나의 실시예는 이러한 패킷 페이로드 안에 포함된 수치 데이터(정수 및/또는 부동소수점 값들)를 압축한다.
도 6a 내지 도 6e는 다양한 공급자들로부터의 멀티 프로세서 구성들을 도시하고 있다. 도 6의 예들은 2009년 현재의 상업적 멀티코어 프로세서들을 설명하기 위한 것이며, 미래에는 다른 아키텍쳐들이 개발될 수 있다. 도 6a는 인텔 네할렘(Intel Nehalem) CPU 아키텍쳐를 설명하고 있다. 인텔 네할렘 CPU는 하나의 다이 위에 네 개의 프로세서 코어들(400a, 400b, 400c, 및 400d)과 함께, 8 MB의 용량을 갖춘 하나의 공유 캐쉬(402)를 포함하고 있다. 상기 프로세서 코어들(400a 내지 400d)은 한 쌍의 QPI 인터페이스(404)를 통하여 다른 컴퓨터 시스템 주변기기들에 접근한다. 상기 QPI 인터페이스(404)는 패킷 기반 통신 프로토콜을 이용한다. 본 명세서에서 설명하는 압축은 상기 QPI 인터페이스(404)와 통합될 수 있다.
도 6b는 엔비디아(Nvidia) GeForce 8800 GPU 아키텍쳐를 도시하고 있다. 엔비디아 GeForce 8800 GPU는 8 개의 멀티 프로세서들(410a 내지 410h)로 묶여지는 64 개의 프로세서들을 포함한다. 각각의 멀티 프로세서는 8 개의 코어들을 포함한다. 상기 멀티 프로세서(410a 내지 410h)들은 입력 값들, 중간결과들, 및 출력 값들을 저장하기 위하여, 그리고 코어들 간에 상기 값들을 교환하기 위하여, 분산된 레벨 1(L1) 캐쉬(412) 및 분산된 레벨 2(L2) 캐쉬(413)를 사용한다. GeForce 8800은 호스트 CPU(414)로부터 입력 데이터를 수신하고 호스트 CPU에게 출력 데이터를 송신한다. 본 명세서에서 설명하는 압축은, 데이터 어셈블러(data assembler)를 위한 호스트-GPU(host-to-GPU) 및 GPU-호스트(GPU-to-host) 통신 제어기(communication controller)에 통합될 수 있다.
도 6c는 AMD/ATI의 멀티코어 GPU 아키텍쳐를 도시하고 있다. AMD/ATI GPU는, 프로세싱 유닛(420a 및 420b)들과 같은, 64 개의 스트림 처리 유닛(420)들을 포함한다. 스트림 처리 유닛(420)들은 하나의 공통 읽기/쓰기 캐쉬(422) 및 스트림 출력 버퍼(424)를 공유한다. 본 명세서에서 설명하는 압축은 상기 읽기/쓰기 캐쉬(422)를 제어하는 스트림 I/O 통신 제어기에 통합될 수 있다.
도 6d는 인텔 라라비(Larrabee) CPU 아키텍쳐를 도시하고 있다. 인텔 라라비 CPU는 네 개의 라라비 프로세서 패키지들(430a, 430b, 430c, 및 430d)을 포함하고, 각각의 패키지는 32개의 프로세서 코어들을 포함한다. 상기 라라비 프로세서 패키지들(430a, 430b, 430c, 및 430d)은 다수의 공통 직렬 인터커넥트 버스(CSI bus: common serial interconnect bus)(434)를 이용하여 상호 연결되어있다. 각각의 라라비 패키지(430)는 하나의 연결된 메모리 하부시스템(432)에 접근할 수 있다. 본 명세서에서 설명하는 압축은 상기 CSI bus 하드웨어에 통합될 수 있다.
도 6e는 IBM Cell Broadband Engine(CBE) 아키텍쳐를 도시하고 있다. IBM CBE는, Element Interconnect Bus(EIB)(446)을 통하여 통신하는, 여섯 개의 Synergistic Processor Element(SPE)들(440a 내지 440h)을 포함한다. 하나의 PowerPC Processor Element(PPE)는, EIB(446)를 통하여 상기 SPE들(440a 내지 440h)에 의해 이용될 수 있는, 하나의 L1 캐쉬(442) 및 L2 캐쉬(443)를 포함한다. IBM Cell은, FlexIO BIC(bus interface controller)와 같은 하나의 BIC(444)를 이용하여, 버스(447)에 오프칩 버스 접근(off-chip bus access)을 수행한다. 메모리 인터페이스 제어기(MIC: memory interface controller)(445)는 오프칩 메모리(448)로의 데이터 전송을 제어한다. 본 명세서에서 설명되는 압축은 상기 EIB(446), MIC(445), 및 BIC(444)를 위한 제어기들에 통합될 수 있다.
도 7은 세 가지의 상업용 네트워크-온-칩(NoC: network-on-chip) 상호연결(interconnection)의 예들을 도시하고 있다. NoC들은 하나의 반도체 다이 위에서 둘 이상의 프로세서들을 상호연결하는 데 사용된다. 도 7a는 도 6e에서 소개된 IBM Cell Broadband Engine의 EIB(446)을 도시하고 있다. 여덟 개의 SPE들(400a 내지 400h)이 상기 EIB(446)에 각각 부착되어 있고, L1 캐쉬(442), L2 캐쉬(443), 그리고 I/O 인터페이스(504)도 마찬가지로 부착되어 있다. 상기 EIB(446)는 도 7a에 보인 것처럼, 네 개의 반대 방향 회전 링들(counter-rotating rings)로 구성된 하나의 상호 연결 조직(interconnection fabric)을 구현한다. 상기 EIB는, IBM Cell 클락 주기 당 96 바이트까지 전송할 수 있어서, 상기 L1 캐쉬(442), L2 캐쉬(443), 및 I/O 인터페이스(504)로부터 상기 프로세서(400)로의 데이터 읽기를 제공하거나, 상기 프로세서(400)에 의해 제공된 데이터를 상기 L1 캐쉬(442), L2 캐쉬(443), 및 I/O 인터페이스(504)로 제공하는 일을 한다. 상기 I/O 인터페이스(504)는 오프칩 데이터 전송들을 위하여 제공되며, BIC(444)(도 6e 참조)를 포함한다. 본 명세서에서 설명되는 압축은 상기 EIB(446)에 접근하기 위한 제어기들, 또는 상기 I/O 인터페이스(504)를 위한 제어기들, 또는 상기 제어기들 둘 모두에 통합될 수 있다.
도 7b는 인텔 네할렘 8-프로세서 코어 아키텍쳐를 도시하고 있다. 상기 8 프로세서들(510a 내지 510h)은 두 개의 반대방향 회전 링들(516)을 통하여 연결된다. 오프칩 읽기 및 쓰기는 네 개의 QPI 인터페이스들(514a 내지 514d)을 통과한다. 본 명세서에서 설명되는 압축은 상기 반대방향 회전 링들(516)을 접근하기 위한 제어기, 또는 오프칩 요소들에 연결되는 상기 QPI 인터페이스, 또는 그 둘 모두에 통합될 수 있다. 통합된 메모리 제어기(도면에는 생략)가 오프칩 메모리로 나가고 오프칩 메모리로부터 들어오는 확장가능 메모리 인터페이스(scalable memory interface)들(SMI0 및 SMI1)에서의 데이터 전송들을 제어한다.
도 7c는 소닉스사(Sonics, Inc.)에 의하여 개발된 NoC 조직(NoC fabric)을 도시하고 있다. SonicsMX Smart Interconnect(526)은 CPU(520a), DSP(520b), 및 멀티미디어 엔진(MME: multimedia engine)(520c)으로 하여금 데이터를 교환할 수 있도록 해준다. 본 명세서에서 설명하는 압축은 상기 SonicsMX Smart Interconnect(526)과 통합될 수 있다.
도 8은 다양한 멀티 프로세서 구성들, 프로세서들 간의 거리, 그리고 해당 구성에서 프로세서들 간의 통신을 지원하기 위하여 가장 흔히 사용되는 메모리의 종류를 보여주는 표이다. 일반적으로, 프로세서들 사이의 거리가 증가함에 따라, 패킷 기반 프로토콜을 이용하는 데이터 교환이 더욱 자주 구현된다. 동일한 반도체 다이 또는 동일한 멀티-다이 패키지 또는 멀티-칩 모듈(MCM)에서 발견되는 두 개의 프로세서들 사이의 데이터 교환은, 보통 공유 L1 캐쉬, 공유 L2 캐쉬, 또는 네트워크-온-칩 인터페이스들을 이용하여 수행된다. 온-다이(on-die) 또는 온-칩(on-chip) 프로세서들은 보통 많아야 몇 mm의 간격으로 분리된다. 두 개의 프로세서들이 mm 내지 cm로 분리되는 별도의 칩들에 위치하는 경우에는, 데이터 값들을 교환하기 위하여 캐쉬, FIFO, 또는 RAM이 프로세서에 의해 사용될 수 있다. 2009년 현재, 분산된 캐쉬를 공유하기 위하여 QPI, HyperTransport, Infiniband, 및 CSI와 같은 고속 IC 인터커넥트들이 사용될 수 있다. 그러나 cm 단위로 분리된 프로세서들 사이에서는 데이터를 교환하기 위하여 하나의 FIFO 또는 RAM이 사용되는 것이 더 일반적이다. 프로세서들 사이의 거리가 미터(m) 또는 킬로미터(km) 단위로 증가하는 경우에, 가장 일반적인 상업용 인터커넥트들은 일정 형태의 패킷 기반 교환 방식을 사용한다. 또한 패킷 기반 통신은, QPI 및 HyperTransport 프로토콜에서도 알 수 있듯이, 1 mm 이하로 분리된 프로세서들 사이의 캐쉬 메모리 데이터의 교환을 구현하는 근거리(short-distance) 통신에도 사용된다.
도 9는, 하나의 바람직한 실시예에 따라 압축된 패킷을 형성하기 위한, 파형 데이터 샘플들의 압축을 설명하는 블록 다이어그램이다. 입력 샘플들의 시퀀스(600)는 설정가능 압축기(620)에 의하여 압축되어, 압축된 패킷(630)을 생성한다. 상기 입력 샘플들(600)은 디지털화된 파형 데이터(125a), 모의실험된 디지털 파형 데이터(125b), 또는 중간 디지털 결과값(150)을 나타낼 수 있다. 상기 입력 샘플들(600)은 정수 형식 또는 부동소수점 형식을 갖는다. 통상적인 프로그래밍 가능한 프로세서 코어들 또는 CPU들에서, 데이터 형식은 해당 프로그램에 의하여 지정될 수 있다. 해당 프로그램이 상기 데이터 형식을 지정하지 않는 경우에는, 프로세서 코어가 기본 데이터 형식을 사용한다. 압축 제어 인터페이스(compression control interface)(610)는 설정가능 압축기(configurable compressor)(620)에게 다양한 모드들에서의 작동을 위한 제어 파라미터(control parameter)들을 제공한다. 예를 들어, 상기 제어 파라미터들은 정수 또는 부동소수점 압축 모드 및 비손실 또는 손실 압축 모드를 선택할 수 있다. 손실 압축 모드가 선택되면, 상기 압축 제어 인터페이스(610)는 고정 비율 압축 또는 고정 품질 압축을 선택하는 추가적인 제어 파라미터들을 포함할 수 있다. 예를 들어 고정 비율 압축에서는, 상기 제어 파라미터가 입력 데이터 블록들의 크기와 압축된 패킷(630)의 페이로드 부분의 크기 사이의 비율을 나타낼 수 있다. 예를 들어 고정 품질 압축에서는, 상기 제어 파라미터가 상기 압축된 패킷(630)이 압축해제된 후 얻어지는 값들의 신호대잡음비(signal-to-noise ratio)를 나타낼 수 있다. 상기 설정가능 압축기(620)가 서로 다른 크기를 갖는 입력 샘플(600) 블록들을 처리할 수 있도록 적응가능(adaptable)한 경우에는, 상기 압축 제어 인터페이스(610)는 하나의 제어 파라미터를 통해 입력 블록 크기를 지정할 수 있다. 압축된 패킷(630)이 헤더를 포함하는 경우에, 상기 압축 제어 인터페이스(610)는, 압축된 블록 크기 또는 에러 정정 코드(ECC: error-correcting code)와 같이, 패킷 헤더에 어떤 파라미터들이 포함되어야 하는지를 지정할 수 있다. 상기 하나의 설정가능 압축기(620)는 정수 및 부동소수점 값들을 모두 처리하도록 적응될 수 있다.
도 10은 정수 값들을 압축하는 경우에 상기 설정가능 압축기(configurable compressor)(620)의 블록 다이어그램이다. 손실 압축의 경우에는, 하나의 손실 압축 조정 프로세서(lossy compression adjustment processor)(622)가 입력 샘플들(600) 위에 작용하여 조정된 입력 샘플들(623)을 형성한다. 비손실 압축의 경우에는, 상기 손실 압축 조정 프로세서(622)가 바이패스(bypass)되거나 또는 "무조정"(no adjustment)으로 설정되고, 조정된 입력 샘플들(623)은 입력 샘플들(600)과 동일한 값들을 갖게 된다. 상기 손실 압축 조정 프로세서(622)는, 조정 제어 신호(adjustment control signal)(629a)를 통하여, 하나의 압축 및 피드백 제어 블록(compression and feedback control block)(628)에 의해 제어된다. 상기 손실 압축 조정 프로세서(622)에 의해 도입된 손실의 정도는 상기 압축 제어 인터페이스(610)를 통하여 사용자에 의해서 선택될 수 있다. 대안적으로는, 상기 손실의 정도가 하나의 피드백 파라미터에 근거하여 자동으로 조정될 수 있다. 예를 들어, 고정 비율 압축 모드의 경우, 압축된 패킷 크기 측정 블록(626)은 압축된 패킷 크기(627)를 계산한다. 상기 압축 피드백 제어 블록(628)은 상기 압축된 패킷 크기(627)를 목표로 하는 패킷 크기와 비교하여, 상기 조정 제어 신호(629a)를 위한 피드백 파라미터를 결정한다. 사용자는 상기 압축 제어 인터페이스(610)를 통하여 목표하는 패킷 크기를 선택할 수 있다. 압축된 패킷 크기 측정 블록(626)은 매 패킷마다 측정된 패킷 크기(627)를 제공할 수도 있고, 또는 선택 가능한 일정 개수 만큼의 출력 패킷들에 대한 측정된 패킷 크기(627) 평균을 제공할 수도 있다. 비손실 압축기(lossless compressor)(624)는 압축 제어 신호(compression control signal)(629b)에 따라 조정된 입력 샘플들(adjusted input samples)(623)을 압축한다.
보통의 등록된 특허들 및 응용사례들은, 상기 비손실 압축기(624) 및 손실 압축 조정 프로세서(622)에서 사용될 수 있는, 다양한 압축 기법들을 설명하고 있다. 상기 기법들은 2006년 3월 7일 발행되고 본 명세서에서 인용참조되고 있는 Wegener의 "Adaptive Compression and Decompression of Bandlimited Signals"라는 제목을 가진 미국 특허 제7,009,533호(이후 "533 특허"라 칭함), 1998년 11월 17일 발행되고 본 명세서에서 인용참조되고 있는 Wegener의 "Lossless and loss-limited Compression of Sampled Data Signals"라는 제목을 가진 미국 특허 제5,839,100(이후 "100 특허"라 칭함), 그리고 2009년 10월 23일 출원되고 본 명세서에서 참조인용되고 있는 Wegener의 "Block Floating Point Compression of Signal Data"라는 제목을 가진 미국 특허 출원 제12/605,245호를 포함한다.
상기 압축 기법들은 조정된 입력 샘플들(623)에 대한 하나 이상의 미분계수들(derivatives)의 계산을 통한 차분 인코딩(differential encoding), 블록 부동소수점 비트 패킹(block floating-point bit packing), 허프만 인코딩(Huffman encoding), 및 비손실 압축기(624)에 의해 구현될 수 있는 기타 비손실 압축 기법들을 포함한다. 상기 비손실 압축기(624)는 압축된 패킷(630)들을 생성할 수 있는데, 이 패킷들은 하나의 헤더(632) 및 하나의 압축된 페이로드(634)를 포함할 수 있다. 상기 헤더(632)는 상기 압축 및 피드백 제어 블록(628)에 의해 제공된 하나 이상의 압축 제어 파라미터들을 포함할 수 있다. 상기 헤더(632)는 압축된 패킷 안에 포함된 압축된 샘플들의 데이터 타입, 즉 정수값 또는 부동소수점값과 같은 데이터 타입을 나타내는 하나의 파라미터를 포함할 수 있고, 또한 조정 제어 신호(629a) 및 압축 제어 신호(629b)와 같은 제어 파라미터들의 값들을 포함할 수 있다. 상기 압축 및 피드백 제어 블록(628)은, 평균 또는 순간 압축률과 같은 다양한 압축 통계, 조정 제어 신호(629a), 압축 제어 신호(629b), 또는 상기 설정가능 압축기(620) 안에서의 내부 경고 또는 에러 상태 등을 나타내는 압축 상태 신호(615)를 생성할 수 있다.
도 11은 압축된 정수 데이터의 압축해제에 대한 블록 다이어그램이다. 설정가능 압축해제기(configurable decompressor)(720)는 압축된 패킷(630)을 수신한다. 압축해제 제어 블록(decompression control block)(728)은 압축된 패킷 헤더(632)의 내용을 검사하고, 압축해제기(724) 및 손실 압축 조정 블록(722)을 위한 어떠한 제어 파라미터들도 모두 해독(decode)한다. 압축해제기(724)는, 압축해제 제어 신호(729a)의 통제 하에, 도 10의 상기 비손실 압축기(624)에 의해 수행되었던 압축 작업들을 되돌리는 작업들을 수행하여, 상기 조정 입력 신호(723)를 재구성(reconstructing)한다. 상기 손실 압축 조정 블록(722)은, 압축해제 조정 신호(729b)의 통제 하에, 도 10의 상기 손실 압축 조정 프로세서(622)에 의해 수행되었던 조정 작업들을 되돌리는 작업들을 수행한다. 압축해제된 신호(730)는 상기 설정가능 압축해제기(720)의 출력 샘플들을 나타낸다. 상기 압축해제 제어 블록(728)은 또한 선택적으로, 평균 또는 순간 압축률, 압축해제 제어 신호(729a), 압축해제 조정 신호(729b), 또는 상기 압축해제기(720)로부터의 내부 경고 또는 에러 신호들을 포함할 수 있는, 상태 신호(715)를 생성할 수도 있다.
도 12는 부동소수점 데이터를 압축하도록 구성된 설정가능 압축기(620)의 블록 다이어그램이다. 부동소수점 데이터 표현은 세 가지 필드들: 하나의 부호 비트, 하나의 지수부, 및 하나의 가수부(significand 또는 mantissa)로 구성된다. 하나의 형식 전처리기(format preprocessor)(도면에는 생략)가, 입력 지수부(603)를 제공하기 위하여, 각 부동소수점 입력 샘플의 부호 및 가수부로부터 지수부를 분리한다. 상기 형식 전처리기는 상기 부호 비트와 가수부를 결합하여 부호 및 가수부 입력 샘플들(601)을 형성한다. 상기 설정가능 압축기(620)는, 도 10을 참조하여 설명한, 정수 샘플들(600)이 설정가능 압축기(620)에 의해 처리되는 것과 동일한 방식으로, 상기 부호 및 가수부 입력 샘플들(601)을 처리한다. 추가로, 상기 설정가능 압축기(620)는 상기 비손실 지수부 압축기(660) 및 압축된 페이로드 멀티플렉서(compressed payload multiplexer)(670)를 상기 입력 지수부(603)에 적용시킨다. 상기 비손실 지수부 압축기(660)는, 상기 압축 및 피드백 제어 블록(628)으로부터의 비손실 지수부 압축 제어 신호(629c)의 통제 하에, 상기 입력 지수부(603)를 비손실 방식으로 압축한다. 상기 비손실 지수부 압축기(660)는 '533 특허', '100 특허', 및 BFP 특허출원에서 설명되고 있는 하나 이상의 기법들을 적용할 수 있다. 상기 비손실 지수부 압축 제어 신호(629c)는, 블록 부동소수점 인코딩, 차분 인코딩, 허프만 인코딩, 또는 지수부(603)를 압축하기에 적합한 기타 인코딩 기법들과 같은, 상기 지수부(603)에 적용되는 압축 방식들을 위한, 제어 파라미터들을 제공할 수 있다. 상기 압축된 페이로드 멀티플렉서(670)는, 압축된 패킷 페이로드(634a) 안에서, 상기 압축된 지수부 비트들(665)과 압축된 부호 및 가수부 비트들(631)의 위치를 제어한다. 상기 압축된 페이로드 멀티플렉서(670)는, 도 10을 참조하여 위에서 설명한 바와 같이, 상기 압축 및 피드백 제어 블록(628)에 의하여 제어될 수 있다.
도 12의 상기 설정가능 압축기(620)는 정수 또는 부동소수점 파형 데이터 값들에 적용될 수 있다. 정수 샘플들이 압축되는 경우, 상기 지수부 압축기(660) 및 압축된 페이로드 멀티플렉서(670)는 사용되지 않고, 도 10의 입력 샘플들(600)과 유사하게, 상기 정수 샘플들이 부호 및 가수부 입력 샘플들(601)을 제공하게 된다. 부동소수점 샘플들이 압축되는 경우에는, 부동소수점 지수부 값들이 상기 지수부(603)가 되고, 부동소수점 부호 및 가수부 값들은 상기 부호 및 가수부 입력 샘플들(601)이 된다. 상기 지수부(603) 및 부호 및 가수부 입력 샘플들(601)을 제공하기 위하여, 형식 전처리기(format preprocessor)가 상기 입력 샘플들(600)에 적용된다. 상기 형식 전처리기는 부동소수점 데이터로부터 추출된 부동소수점 부호 및 가수부와 정수 데이터를 위한 공통 형식을 제공함으로써, 상기 입력 샘플들(100)이 정수 또는 부동소수점 값으로 표현되었는지에 상관없이, 상기 손실 압축 조정 프로세서(622) 및 비손실 압축기(624)가 동일한 형식으로 데이터를 전달받을 수 있도록 해준다. 이러한 방식으로, 상기 설정가능 압축기(620)는 정수 또는 부동소수점의 파형 데이터를 상기 압축 및 피드백 제어 블록(628)로부터의 다양한 제어 신호들에 따라 압축하도록 구성될 수 있다.
도 13은 압축된 부동소수점 데이터의 압축해제를 위한 설정가능 압축해제기(720)의 블록 다이어그램이다. 상기 설정가능 압축해제기(720)는, 압축된 페이로드(634a)로서 압축된 부동소수점 데이터를 포함하는, 압축된 패킷을 전달받는다. 상기 압축해제기(724) 및 손실 압축 조정 블록(722)은, 도 11을 참조하여 설명된 대응되는 요소들과 동일한 압축해제 작업들을, 상기 압축된 부호 및 가수부 데이터에 적용시킨다. 상기 설정가능 압축해제기(720)는, 상기 압축된 지수부 데이터를 처리하기 위하여, 페이로드 디멀티플렉서(demultiplexer)(870) 및 지수부 압축해제기(860)를 포함한다. 압축된 패킷 헤더(632a)를 조사한 후에, 상기 압축해제 제어기(728)는 상기 페이로드 디멀티플렉서(870), 압축해제기(724), 손실 압축 조정 블록(722), 및 지수부 압축해제기(860)에 제어 파라미터들을 제공한다. 상기 페이로드 디멀티플렉서(870)는 압축된 페이로드(634a)를 압축된 지수부 비트들(865)과 압축된 부호 및 가수부 비트들(831)로 분리한다. 디멀티플렉싱된(demultiplexed), 압축된 부호 및 가수부 비트들(831)은, 위에서 압축된 정수 데이터의 경우(도 11)에 대하여 설명한 바와 같이 압축해제되고 조정된다. 상기 지수부 압축해제기(860)는, 지수부 압축해제기 제어 신호(729c)에 의해 제공된 제어 파라미터들에 따라서, 상기 압축된 지수부 비트들(865)을 압축해제한다. 상기 지수부 압축해제기(720)는 압축해제된 지수부(730b)들을 생성한다. 상기 압축해제기(724) 및 손실 압축 조정 블록(722)은 압축해제된 부호 및 가수부 샘플들(730a)을 생성한다. 데이터 형식 처리기(data formatter)(도면에는 생략)는 상기 압축해제된 지수부(730b)와 그에 대응하는 압축해제된 부호 및 가수부 샘플들(730a)을 조합하여, 최초 입력 샘플들(600)과 동일한 부동소수점 형식을 갖는 압축해제된 샘플들의 시퀀스를 만들어 낸다. 대안적으로는, 최초 샘플들과는 다른 데이터 형식을 갖는 압축해제된 샘플들을 생성하기 위하여, 상기 형식 처리기가 상기 압축해제된 지수부(730b) 및 그에 대응하는 압축해제된 부호 및 가수부 샘플들(730a)의 형식 변환을 제공할 수도 있다. 압축된 패킷 헤더(632a) 안의 헤더 파라미터들에 의한 선택적인 제어 하에 이루어지는, 상기 압축해제 제어 블록(728)에 의해 생성된 다양한 압축해제 및 조정 제어 신호들의 설정에 근거하여, 상기 설정가능 압축해제기(720)는 압축해제된 정수 파형 데이터 값들 또는 압축해제 부동소수점 파형 데이터 값들을 생성한다.
상기 비손실 압축기(624)의 하나의 바람직한 실시예는, 비손실 차분 인코딩과 그에 이어지는 블록 부동소수점 비트 패킹을 적용한다. 비손실 차분 인코딩을 위한 기법들은 '533 특허' 및 '100 특허'에 설명되어 있다. 블록 부동소수점 비트 패킹을 위한 기법들은 BFP 특허출원에 설명되어 있다. 차분 인코딩 및 이어지는 블록 부동소수점 비트 패킹의 적용은, 패킷 기반 파형 데이터 압축을 위하여 바람직한, 낮은 지연시간(low-latency)의 압축기를 구현한다. 상기 손실 압축 조정 프로세서(622)의 바람직한 실시예는, 제어 가능한 손실량을 제공하도록, 입력 샘플들(600)의 양을 감소시킨다. 상기 손실 압축 조정 블록은, 입력 샘플들(600)에 비트 하나의 비트 시프터(bit shifter) 및 하나의 멀티플라이어(multiplier)를 적용시킴으로써, 샘플량을 감소시킨다. 상기 비트 시프너 및 멀티플라이어 조합은 낮은 복잡도(low-complexity)라는 바람직한 목표를 성취할 수 있게 해준다.
상기 설정가능 압축해제기(720)의 바람직한 하나의 실시예에서, 상기 압축해제 제어 블록(728)은 압축된 패킷 헤더(632) 안에 담긴 제어 파라미터들을 해독(decode)하여, 압축해제를 위한 각각의 제어 신호들(729a, 729b, 729c)을 제공한다. 압축된 패킷의 헤더의 바람직한 하나의 실시예는, 데이터 타입(정수 또는 부동소수점 데이터)의 표지와 함께, 조정 및 압축 제어 파라미터들을 포함한다. 또한 상기 압축된 패킷 헤더(632)는 선택적으로, 압축 과정에서 보존되는 가수부 비트들의 개수를 포함하여, 해당 패킷에 대한 전체 압축된 페이로드에 적용되는 제어 파라미터들을 포함할 수 있다.
도 14는, 도 6a, 도 6e, 및 도 7b를 참조하여 설명한 바와 같은, 멀티코어 프로세서들에서 상기 설정가능 압축기(620) 및 설정가능 압축해제기(720)를 위한 위치들의 예들을 도시하고 있다. 도 14a는 도 6a의 인텔 네할렘 CPU 아키텍쳐에 통합된 압축 및 압축해제를 보여준다. 설정가능 압축기(620) 및 설정가능 압축해제기(720)는, 전송될 QPI 패킷들의 페이로드들을 위한 데이터를 압축하기 위하여, 그리고 수신된 QPI 패킷들의 페이로드들로부터의 압축된 데이터를 압축해제하기 위하여, 각각의 QPI 인터페이스(404)에 통합될 수 있다. 상기 네할렘 프로세서를 위하여 파형 데이터를 제공하는 오프칩 입력 제어기(도면에는 생략)는, 상기 QPI 패킷들을 위한 압축된 페이로드 데이터를 형성하기 위하여, 입력 파형 데이터를 압축한다. QPI 인터커넥트 링크 제어기(404)에 있는 압축해제기(720)는 상기 압축된 페이로드 데이터를 압축해제하고, CPU 코어들(400a 내지 400d)로의 전송을 위한 QPI 패킷들의 페이로드 데이터로서 압축해제된 파형 데이터를 제공한다. 도 7b를 참조하여 설명된 네할렘 8-프로세서 코어 아키텍쳐의 경우, 압축해제된 페이로드 데이터를 담고 있는 QPI 패킷들은 반대방향 회전 링들(516)을 통하여 프로세서 코어들(510a 내지 510h)에 전달된다. 상기 네할렘 아키텍쳐는 오프칩 요소들과의 데이터 전송과 동일한 패킷 프로토콜을 사용하는 온칩 통신의 한 예이다. 또한 통합된 메모리 제어기는, 오프칩 메모리에게 제공되는 파형 데이터를 압축하고 메모리로부터 수신되는 파형 데이터를 압축하기 위하여, 설정가능 압축기(620) 및 압축해제기(720)를 포함할 수 있다.
도 14b는 도 6e의 IBM Cell Broadband Engine 아키텍쳐에 통합된 압축 및 압축해제를 도시하고 있다. 설정가능 압축기(620) 및 설정가능 압축해제기(720)은, 전송되는 패킷들을 위하여 입력 데이터를 압축하고 수신된 압축된 패킷들을 압축해제하기 위하여, BIC(444)에 통합될 수 있다. 다수의 SPE들(440a 내지 440h)에 입력 데이터를 제공하기 위하여, 오프칩 제어기(도면에는 생략)는, 파형 데이터를 압축하여 상기 BIC(444)에서 수신되는 버스 패킷들을 위한 압축된 페이로드 데이터를 형성하는 하나의 압축기를 포함한다. 상기 BIC(444)에 있는 설정가능 압축해제기(720)는, SPE들(440a 내지 440h)로의 전송을 위하여 EIB(446)에 제공되는 압축해제된 파형 데이터를 형성하기 위하여, 압축된 페이로드 데이터를 압축해제한다. 상기 설정가능 압축해제기(720)는 EIB(446)과 호환되는 프로토콜을 갖는 패킷들 속으로 압축해제된 파형 데이터를 삽입시킬 수 있다. 상기 IBM Cell 아키텍쳐는, 오프칩 데이터 전송과는 다른 패킷 프로토콜을 사용하는 온칩 통신의 한 가지 예이다. 처리된 파형 데이터의 오프칩 전송을 위하여, BIC(444)와의 인터페이스에 존재하는 상기 설정가능 압축기(620)는, 외부 버스(447)을 통한 전송을 위한 압축된 페이로드 데이터를 형성하기 위하여, 상기 EIB(446)을 통해 SPE들(440a 내지 440h)로부터 전달된 처리된 파형 데이터를 압축한다. 도착지의 장치(도면에는 생략)에 있는 오프칩 제어기는, 상기 처리된 파형 데이터를 재구성하기 위하여, 수신된 버스 패킷들로부터의 압축된 페이로드 데이터를 추출 및 압축해제하는 하나의 압축해제기를 포함한다. 상기 설정가능 압축기(620) 및 압축해제기(720)는, 오프칩 메모리(448)와의 압축된 데이터 전송을 제공하기 위하여, 메모리 인터페이스 제어기(MIC)(445)에 통합될 수도 있다. 또한 상기 설정가능 압축기(620) 및 압축해제기(720)는 상기 MIC(445) 및 BIC(444)에서 서로 분리되어 구현될 수도 있고, 또는 공유될 수도 있다.
도 14c는 인텔 네할렘(도 7b)의 프로세서 코어들 사이에서의 통신을 위한 압축 및 압축해제의 한 가지 예를 도시하고 있다. 8 개의 프로세서 코어들(510a 내지 510h)은 두 개의 반대방향 회전 링들(516)을 통하여 데이터를 전송한다. 상기 반대방향 회전 링들(516)은 QPI 패킷 프로토콜을 이용하여 패킷들을 전송한다. 상기 프로세서 코어들(510a 내지 510h)은, 하나 이상의 다른 코어들(510a 내지 510h)로의 전송을 위하여 파형 데이터를 압축하는, 설정가능 압축기들(620a 내지 620h)을 각각 포함한다. 전송되는 파형 데이터는 응용프로그램 처리에 의한 중간 데이터일 수 있다. 상기 설정가능 압축기들(620a 내지 620h)은, 페이로드 부분이 압축된 데이터를 수용하도록, QPI 패킷들을 형성한다. 상기 설정가능 압축기들(620a 내지 620h)은 압축된 페이로드를 가진 상기 QPI 패킷들을 상기 반대방향 회전 링들(516)을 통하여 하나 이상의 다른 코어들(510a 내지 510h)에게 제공한다. 상기 반대방향 회전 링들(516)로부터의 데이터의 수신을 위하여, 각각의 코어들(510a 내지 510h)에 의한 이후의 처리를 위하여 중간 데이터 또는 파형 데이터를 재구성할 수 있도록, 각각의 설정가능 압축해제기들(720a 내지 720h)이 수신된 QPI 패킷의 압축된 페이로드들을 압축해제한다. 또한 프로세서 코어들 사이의 통신에 추가하여, 상기 설정가능 압축기(620) 및 압축해제기(720)는 QPI 인터페이스들(514a 내지 514d) 및/또는 메모리 인터페이스들(SMI0 및 SMI1)에 있는 제어기들에도 통합될 수 있다.
도 15는 하나의 프로세서 코어에 입력 데이터를 제공하는 한 예이다. 입력 제어기(1800)는, 샘플링된 파형 데이터를 제공하는 하나의 ADC 120, 모의실험된 파형 데이터를 제공하는 하나의 모의실험기(130), 또는 디지털 중간 결과들(150)(도 2 참조)을 제공하는 하나의 외부 프로세서와 같은, 입력 데이터를 생성하는 하나의 장치에 연결될 수 있다. 상기 입력 제어기(1800)는 상기 입력 데이터를 프로세서 코어(1810)에 전송하기 전에 압축한다. 상기 프로세서 코어(1810)는, 특정 응용사례의 작업들을 수행하기 전에, 수신된 상기 입력 데이터를 압축해제한다. 상기 입력 제어기(1800)는 압축된 데이터를 다수의 프로세서 코어들(도 15에서는 생략)에 분산시킬 수 있는데, 프로세서 코어 각각은 응용사례 처리를 위해 압축해제된 데이터를 형성하기 위하여 수신된 데이터를 압축해제한다.
도 16은 다수의 프로세서 코어들 사이에서 데이터 통신의 한 예이다. 소스 v프로세서 코어들(1900a, 1900b)은 부분적으로 처리된 데이터 또는 중간 결과들을, 응용사례에서 이후의 처리를 위하여, 도착지 프로세서 코어(1900c, 1900d) 각각에게 제공하고 있다. 상기 소스 코어들(1900a, 1900b)은 각각 부분적으로 처리된 데이터 또는 중간 결과들을 압축하고, 압축된 해당 데이터를 전송한다. 상기 도착지 코어들(1900c, 1900d) 각각은 상기 소스 코어들(1900a, 1900b) 둘 모두로부터의 압축된 데이터를 수신 및 압축해제한다. 상기 도착지 코어들(1900c, 1900d)은 상기 압축해제된 데이터에 각각 대응되는 처리 작업을 수행한다.
도 17은 하나의 프로세서 코어로부터 하나의 출력 제어기로의 데이터 전송의 한 예이다. 프로세서 코어(2000)는 특정 응용사례를 위하여 처리된 파형 데이터를 생성한다. 상기 처리된 파형 데이터는 특정 응용사례를 위하여 부분적으로 처리된 중간 결과들 또는 완전히 처리된 최종 결과들을 나타낼 수 있다. 상기 프로세서 코어(2000)는 상기 처리된 데이터를 압축하고, 압축된 데이터를 출력 제어기(2010)로 전송한다. 상기 출력 제어기(2010)는 상기 압축된 데이터를 수신 및 압축해제한다. 다수의 프로세서 코어들(도면에는 생략)이 처리된 데이터를 압축하고 상기 출력 제어기(2010)로 전송할 수 있다. 상기 출력 제어기(2010)는, 이후의 처리 또는 디스플레이를 위하여 서로 다른 프로세서 코어들로부터 수신된 데이터를 조합하는 것과 같이, 상기 압축해제된 데이터에 추가적인 기능들을 수행할 수도 있다.
도 18은 압축 및 압축해제를 통하여 오프칩 메모리 또는 저장 장치(2130)로의 읽기 및 쓰기 접근성이 향상된 하나의 프로세서(2100)를 도시하고 있다. CPU 또는 코어(2105)는 온칩 메모리(2120)와 오프칩 메모리 또는 저장 장치(2130)를 둘 모두에 접근한다. 상기 CPU 또는 코어(2105)의 온칩 메모리(2120)로의 접근은, 주소 및 데이터 버스(2115)를 통하여 직접적으로 수행된다. 상기 CPU 또는 코어(2105)는, 압축 제어 인터페이스(610)를 통하여, DMA(direct memory access), 입출력 또는 메모리 제어기(2110)을 통한 오프칩 메모리 또는 저장 장치(2130)로의 압축된 접근들을 요청한다. 도 9를 참조하여 위에서 설명한 것처럼, 상기 압축 제어 인터페이스(610)는, 설정가능 압축기(620)가 정수 또는 부동소수점 데이터를 비손실 또는 손실 모드로 압축하고 오프칩 메모리 또는 저장 장치(2130)로의 데이터 쓰기 도중에 원하는 블록 크기 및 기타 압축-관련 파라미터들을 지정하도록 하기 위한, 제어 파라미터들을 상기 CPU 또는 코어(2105)가 제공할 수 있게 해준다. 상기 설정가능 압축기(620)는, 오프칩 메모리 또는 저장 장치(2130)에 저장된 압축된 패킷들의 헤더 안에 있는, 제어 정보를 포함할 수 있다. 오프칩 메모리 또는 저장 장치(2130)로부터의 데이터 읽기 도중에는, 설정가능 압축해제기(720)가 각각의 압축 해제된 패킷 헤더 안에 있는 제어 정보를 해독하고, 해당 제어 파라미터들에 따른 압축해제 작업을 이용하여 정수 또는 부동소수점 값들을 압축해제한다. 압축해제된 출력 샘플들은 온칩 메모리(2120)에 제공된다. 상기 설정가능 압축기(620)은 오프칩 메모리 또는 저장 장치(2130)로의 블록 또는 패킷 기반 접근에 특히 적합하다. 상기 요소(2110)가 DMA 제어기로 구현된 경우에, 통상적으로 큰 데이터 블록들이 온칩 메모리(2120)와 오프칩 메모리 또는 저장 장치(2130) 사이에 전송된다. 본 발명이 패킷 기반 또는 스트림 처리(임의접근(random-access), 단일값 처리와 대비하여)에 있어서의 압축 및 압축해제에 모두 적용 가능하기 때문에, 상기 설정가능 압축기(620) 및 설정가능 압축해제기(720)는 DMA 접근에 매우 적합하다. 또한, 상기 CPU 또는 코어(2105)는 통상적으로 DMA 제어기(2110)를 통하여 DMA 접근을 시작하기 때문에, 데이터 쓰기 작업 동안에 상기 설정가능 압축기(620)에 의해 발생하는 지연시간, 또는 오프칩 메모리 또는 저장 장치(2130)로부터의 데이터 읽기 작업 동안에 상기 설정가능 압축해제기(720)에 의해 발생하는 지연시간은, 상대적으로 긴(온칩 메모리(2120)로의 CPU 2105의 접근시간과 비교하여 긴) DMA 트랜잭션 시간(transaction time)들에 의하여 감춰질 수 있다.
도 19는 1 MB 데이터 패킷에 2:1 압축을 적용하는 예를 위한, 대역폭 향상 정도를 보여주는 표이다. 이 예들은 1 MB 데이터 패킷이 정수 또는 부동소수점 파형 데이터를 포함하는 것을 가정하고 있다. 상기 파형 값들은, 각각 파형 샘플당 1, 2, 또는 4 바이트에 해당하는, 8-비트, 16-비트, 또는 32-bit 값들을 포함할 수 있다. 유사하게, 상기 파형 값들은, 각각 파형 샘플당 4 바이트 또는 8 바이트에 해당하는, 32-비트 또는 64-비트 길이의 부동소수점 값들도 역시 포함할 수 있다. 도 19의 제1 칼럼은 파라미터들의 예들을 나열하고 있고, 제2 및 제3 칼럼은 각각 압축하지 않는 경우와 2:1 압축을 하는 경우를 보여주고 있다. 제2 칼럼(압축하지 않는 경우)을 참조하면, 제1 코어로부터 제2 코어로의 1 MB 데이터 전송은, 제1 코어 발신기(Tx)에서 1 msec(0.001 초)의 시작 지연시간(startup latency)과, 제2 코어 수신기(Rx)에서 1 msec(0.001 초)의 완결 지연시간(completion latency)을 포함한다. 본 예에서는 1 MB의 파형 데이터 패킷은, 제1 코어와 제2 코어 사이의 1 MB/sec 링크를 이용하는 1 초의 전송시간을 포함하여, 총 1.002 초의 전송시간을 필요로 한다. 반대로, 제3 칼럼은 최초 1 MB 파형 패킷에 2:1 압축이 적용된 경우의 동일한 파라미터들을 보여주고 있는데, 오직 500 kB의 압축된 데이터가 전송된다. 설정가능 압축기(620) 및 설정가능 압축해제기(720) 둘 모두는, 압축 및 압축해제 파이프라인들을 채우는 데서 오는, 추가적인 시작 지연시간들을 갖는다. 본 예에서, 상기 압축 및 압축해제 지연시간들은 각각에 대하여 약 10 msec(0.01 초)로 추정되었다. 따라서 2:1 압축을 이용하는 경우, 1 MB 파형 데이터 패킷은, 제1 코어와 제2 코어 사이의 1 MB/sec 링크를 사용하는 0.5 초의 전송시간을 포함하여, 총 0.52 초의 압축된 전송 시간을 필요로 한다. 도 19의 마지막 행은, 2:1 압축을 이용한 경우의 대역폭이 압축을 사용하지 않는 경우의 대역폭의 거의 두 배에 이른다는 사실을 보여주고 있다.
멀티코어 응용사례들에서, 수행되어야 할 연산 작업(computational work)은 다수의 코어들 사이에 분산된다. 많은 파형 처리 응용사례들에서, 정수 또는 부동소수점 데이터는 다양한 네트워크, 버스, 및 메모리 인터페이스들을 이용하여 다수의 코어들로 분산된다. 그러한 응용사례들을 위한 총 처리 시간은, 각각의 코어에서 상기 연산 작업을 완료하는 데 필요한 시간뿐만 아니라, 상기 파형 데이터 샘플들을 다수의 프로세서 코어들에 분산시키는 데 필요한 시간에 의하여 영향을 받는다. 더구나, 파형 처리는 종종 해당 데이터가 하나의 알려진 시퀀스 또는 순서로 분산될 것을 필요로 한다; 이 경우에, 일부 코어들은 이웃하는 코어들이 각자의 처리된 파형 출력 결과들을 전달하기를 기다리면서 시간을 소비하게 된다. 만약 입출력 시간이 감소된다면, 모든 파형 처리 응용사례들을 위한 총 시간은 연산 시간에 상관없이 감소될 것이다. 총 시간이 코어 연산 시간 보다는 입출력(데이터 교환)시간에 의하여 더 결정되는 응용사례들은, "I/O 바운드"(I/O-bound) 응용사례가라고 불린다. 총 시간이 입출력(데이터 교환)시간 보다는 코어 연산 시간에 의하여 더 결정되는 응용사례들은, "컴퓨트-바운드"(compute-bound) 응용사례가라고 불린다. 본 발명은 특히 I/O-바운드 응용사례들의 총 처리 시간을 단축시키는 데 효과적이다. I/O-바운드 응용사례들은, 본 발명에 의한 파형 데이터 대역폭의 증가 및 파형 데이터 지연시간의 감소 둘 모두로부터 이득을 얻게 된다. 코어들이 파형 입력 데이터를 기다리면서 소비하는 시간도 역시 감소된다.
도 20은 N 개의 프로세싱 코어들에 의하여 수행되는 I/O 및 프로세싱이 어떻게 압축에 의하여 빠르게 되는지를 도시하고 있다. 도 20에 보인 예는, 도 19에서 설명된 바와 같이, 코어간 패킷들의 2:1 압축을 가정하고 있다. 타임라인 A는, N 개의 코어들 사이에 압축되지 않은 파형 데이터 패킷들을 전송하는, 하나의 파형 데이터 처리 응용사례에서 일련의 N 개 {I/O, 연산} 직사각형 쌍들을 도시하고 있다. 상기 직사각형 각각의 폭은 해당 I/O 또는 연산 작업에 걸린 시간을 나타낸다. 타임라인 B는 동일한 처리 단계들을 보여주고 있기는 하지만, 각각의 I/O 작업을 위하여 2:1 압축을 사용한 경우를 보여주고 있다. 연산 작업 COMP1 내지 COMPN에 대응되는 연산 작업들의 지속시간은 상기 타임라인 A에서 보인 지속시간들과 동일하다; 둘 모두의 응용사례dfdnl한 상기 연산 시간을 동일한다. 그러나 I/O 또는 데이터 교환 시간들은 절반으로 줄어들기 때문에(2:1 압축), 타임라인 B에서의 전체 프로세스 지속시간은 T2, 즉 도 20a의 T1으로 표시된 전체 프로세스 지속시간보다 짧다. 프로세스 지속시간에 있어서 전체 속도 증가(T1 - T2)가 I/O 및 연산 시간의 구체적인 길이들에 의존하기는 하지만, 만약 하나의 프로세싱 파이프라인 안에 구성된 다수 코어들 사이의 I/O가 본 발명의 설정가능하고, 낮은 지연시간을 가지며, 높은 대역폭을 갖는, 코어간 I/O를 빠르게 하는 압축 및 압축해제 블록들을 사용하는 경우에, 파형 데이터 압축 응용사례들은 더 빨리 완료될 수 있다는 사실을, 도 20은 명백하게 보여주고 있다. 링(rings), 스타(stars), 메쉬(mesh)와 같은 다른 멀티코어 기술들에 본 발명의 압축을 적용하는 것도 역시 코어들 사이의 데이터 교환을 빠르게 할 수 있다.
도 20의 예로서, 상기 연산 작업들(COMP1 내지 COMPN)은 N 개의 프로세서 코어들 위에서 실행되는 쓰레드들을 나타낼 수 있다. 시간 간격 [I/O 또는 XCHG]는 상기 N 개의 프로세서 코어들의 파이프라인을 따라 이루어지는 파형 데이터의 통신에 필요한 시간을 나타낸다. 상기 [I/O 또는 XCHG] 시간 간격 동안에, 해당 코어들은 대기 모드로 들어간다. 도 20에 보인 것처럼, 압축은 데이터 전송을 위한 시간을 감소시키고, 따라서 상기 코어들이 대기 모드에 있는 시간을 감소시킨다. 그 결과는, 전체 프로세스 지속 시간의 절감과 코어 컴퓨팅 자원의 더욱 효율적인 활용이라는 측면에서, 더욱 개선된 시스템 성능을 가져온다.
본 발명의 실시예들은, 정수 또는 부동소수점 데이터들이 패킷 기반 또는 블록-기반 데이터 교환을 이용하여 코어들 사이에 교환되는, 파형 데이터 응용사례들에 적합하다. 설정가능 압축기(620)는, 수신 코어에 전송되는 해당 파형 데이터의 특정 데이터 타입 및 선택된 압축 모드(비손실 또는 손실)에 적응 가능하다. 상기 설정가능 압축기(620)는 압축된 패킷들의 헤더들 속으로 제어 정보를 삽입한다. 설정가능 압축해제기(720)는 수신된 압축 패킷 각각의 패킷 헤더로부터 데이터 타입 및 다른 제어 정보들을 결정한다. 상기 설정가능 압축해제기(720)는, 특정 압축 패킷을 위한 상기 데이터 타입 및 압축 모드와 같은 제어 파라미터들에 따라서, 적절한 압축해제 작업들을 압축된 페이로드 데이터에 적용시킨다. 본 발명은 다양한 네트워크, 버스, 및 저장매체의 응용들에 적합한데, 이러한 응용들은, 도 5와 함께 설명된 것과 같은 예들을 (하지만 비한정적인 의미에서) 포함하고, 온칩 캐쉬(레지스터 파일, SRAM, 또는 DRAM), 오프칩 SRAM, DRAM, 또는 플래시와 같은 반도체 메모리들과, 디스크 또는 테이프 드라이브들과 같은 자성 매체를 포함한다.
본 발명의 설정가능 압축기 및 압축해제기에 대하여 다양한 구현상의 대안들이 존재한다. 바람직한 하나의 실시예에서, 파형 데이터가 패킷 전송을 위하여 가장 낮은 지연시간 및 가장 높은 압축 및 압축해제 속도로 압축될 수 있도록, 상기 설정가능 압축기(620)는 전송 패킷 버퍼들과 동일한 다이 위에 직접 통합된다. 상기 설정가능 압축기(620) 및 설정가능 압축해제기(720)는 실시간 속도로, 즉 적어도 그들이 인터페이스하는 장치들만큼 빨라서, 파형 샘플들이 제공되는 속도만큼 빠르게 압축되고, 파형 샘플들이 소비되는 속도만큼 빠르게 압축해제되는 속도로, 작동할 수 있다. 유사하게, 바람직한 하나의 실시예에서, 상기 설정가능 압축해제기(720)는 수신 패킷 버퍼들과 동일한 다이 위에 직접 통합되어, 위에서 설명한 것처럼, 패킷 수신 시에 파형 데이터가 가장 낮은 지연시간 및 가장 높은 압축 및 압축해제 속도로 압축해제된다. 대안으로서, 상기 설정가능 압축기(620) 및 설정가능 압축해제기(720)는, 송신 및 수신 코어들의 명령 세트(instruction set)들을 각각 이용하여, 속도 및 지연시간에 최적화된 어셈블리 언어 구현형태로 구현될 수도 있다. 상기 어셈블리 언어 구현형태는 압축된 파형 데이터 요소마다 다수의 명령 사이클들을 필요로 하기 때문에, 그 속도 및 지연시간은 상기 바람직한 실시예보다 훨씬 높게 된다.
한 가지 멀티칩 구현에서는, 상기 설정가능 압축기(620) 및/또는 설정가능 압축해제기(720)가, 상호 통신하는 프로세서들이 구현된 다이로부터 분리된, 별도의 다이(즉 하드웨어) 위에 구현되는데, 이때 상기 별도의 압축 및/또는 압축해제 다이는 동일한 기판 위에 존재하고, 따라서 상기 상호 통신하는 프로세서들이 구현된 다이로부터 인접한 위치에 존재하게 된다. 이러한 멀티칩 구현에서, 상기 압축 및 압축해제 다이는 분리된 하나의 제품으로 개발되어, 나중에 상호 통신하는 다양한 프로세서 다이와 통합될 수도 있다. 이러한 멀티칩 구현의 장점은, 상기 상호 통신하는 프로세서들을 포함하는 다이가 상기 설정가능 압축기(620) 및/또는 설정가능 압축해제기(720)를 포함하는 다이보다 흔히 훨씬 더 크기 때문에, 동일 다이 위의 바람직한 구현예의 비용보다 더 낮은 비용으로 상기 압축 및/또는 압축해제 다이가 통합될 수 있도록 해준다는 점이다.
일부 응용사례들에서, 상기 설정가능 압축기(620) 및 설정가능 압축해제기(720)는, 하나의 통신 링크가 파형 데이터를 일방향으로 전송하는 경우처럼, 분리된 다이 안에 통합될 수 있다. 이러한 조건은, 파형 데이터의 생성이 하나의 장치(ADC 또는 데이터 획득 하부시스템과 같은 장치)에 의해 이루어지고, 압축된 파형 데이터의 처리는 다른 장치(FPGA, CPU, GPU, 또는 그와 유사한 장치)에 의해 수행되는 경우에 발생한다. 유사하게 또 다른 응용사례들에서는, 상기 압축기가 FPGA, CPU, GPU, 또는 그와 유사한 장치들에 의한 파형 데이터 처리와 함께 통합되고, 압축된 패킷들은 수신되고 압축해제되어, 그 결과 파형이 DAC 또는, 다른 아날로그 또는 디지털 신호 생성기와 같은 출력 하부시스템에 제공된다.
지금까지 설명한 바와 같이, 다수의 프로세서 코어들 및 통신 조직을 구비하고 파형 데이터 샘플들이 정수형식 또는 부동소수점 형식으로 표현되는 하나의 파형 처리 시스템에서, 상기 다수의 프로세서 코어들 사이에 데이터 패킷들의 전송을 위하여 사용되는 방법은, 다음의 단계들, 즉:
전처리기 제어 파라미터의 통제 하에, 파형 데이터 샘플들의 부분집합을 전처리하여 압축기 입력 샘플들을 생성하는 단계;
크기 조정 파라미터의 통제 하에, 상기 압축기 입력 샘플 값들의 크기를 조정하여 조정된 신호 샘플들을 생성하는 단계;
압축 제어 파라미터의 통제 하에, 상기 조정된 신호 샘플들을 압축하여, 압축된 패킷 페이로드를 위한 압축된 샘플들을 생성하는 단계;
상기 전처리 제어 파라미터의 하나의 지표(indicator), 상기 크기 제어 파라미터의 하나의 지표, 및 상기 압축 제어 파라미터의 하나의 지표를 포함하는, 패킷 헤더를 생성하는 단계;
상기 패킷 헤더 및 상기 압축된 패킷 페이로드를 하나의 압축된 패킷으로 조합하는 단계; 및
하나의 인터페이스에서 상기 통신 조직으로 상기 압축된 패킷을 제공하는 단계를 포함한다.
추가적인 구현의 대안적인 방법들은 다음을 포함한다. 설정가능 압축기(620) 및 설정가능 압축해제기(720)는 목표하는 ASIC 디자인 프로세스를 위한 맞춤형 지적 재산(IP: intellectual property) 블록들로서 구현될 수 있다. 상기 설정가능 압축기(620) 및 설정가능 압축해제기(720)은 하나의 CPU, GPU, DSP 칩, 또는 다른 멀티코어 프로세서에서의 소프트웨어로서 구현될 수도 있다. 상기 설정가능 압축기(620) 및 설정가능 압축해제기(720)는 네트워크-온-칩의 일부, 완전 연결된 스위치, 또는 부분적으로 연결된 스위치 구현방식으로 구현될 수도 있다.
또한 상기 설정가능 압축기(620) 및 설정가능 압축해제기(720)의 실시예들은, 처리량을 향상시키도록, 지연시간을 감소시키도록, 또는 복잡도를 줄이도록 적응될 수 있다. 예를 들어, 부동소수점 {부호, 지수부, 가수부} 필드들을 손실 압축 조정 블록(622) 및 비손실 압축기(624)의 예상 입력 형식에 맞는 형식으로 변환하기 위하여, 다수의 전처리기들이 사용될 수 있다. 이후, 지연시간을 감소시키거나, 처리량을 증가시키거나, 압축기 또는 압축해제기의 복잡도를 감소시키거나, 또는 이 세 가지 특징들이 조합된, 특정 프로세서가 선택된다. 또한 전처리기들은, 2진법을 10진법으로 변환하는 것과 같은, 베이스 변환(base conversion)을 수행할 수도 있는데, 그러한 간편한 베이스 변환은 IEEE-754(2008) 부동소수점 데이터 표준에 설명되어 있다.
또한 본 발명의 실시예들은 DRAM, DDR, DDR2, 또는 DDR3 외부 메모리를 위한 메모리 제어기에 통합될 수 있고, 이에 따라, 단일 코어 또는 멀티코어 CPU의 외부에 있는 반도체(DRAM, 플래시, FRAM 등) 메모리 안에 저장된 정수 및 부동소수점 파형 데이터 값들을 압축 및 압축해제하는 메모리 제어기를 위한 설정가능 압축기를 구현한다. 유사하게, 본 발명은 동일한 다이 위(또는 멀티칩 모듈 내의 동일 패키지 안)의 캐쉬 제어기에 통합되어, 파형 데이터를 위한 설정가능 캐쉬 메모리 압축 및 압축해제기를 구현할 수 있다.
본 발명의 바람직한 실시예들이 도시되고 설명되었지만, 본 발명이 상기 실시예들로만 한정되는 것은 아니라는 것은 명백하게 알 수 있다. 다양한 수정들, 변화들, 변형들, 대체된 형태들 및 균등물들이, 첨부된 청구범위의 청구항들에서 묘사되는 본 발명의 원리 및 범위를 벗어나지 않고도, 본 발명의 분야에서 통상의 기술자에게 명백하게 이해될 수 있을 것이다.

Claims (35)

  1. 하나의 프로세서, 하나의 칩 위에 통합된 하나의 메모리 제어기 및 제1 메모리 장치, 그리고 상기 칩과 떨어져 있는 제2 메모리 장치를 포함하는 시스템에서, 상기 제2 메모리 장치 안에 저장하기 위하여 파형 데이터를 압축하는 방법으로서, 다음의 단계들, 즉:
    상기 메모리 제어기에서 상기 프로세서로부터, 정수 데이터 형식 또는 부동소수점 데이터 형식으로 표현된 다수의 샘플들로 구성되어 있는 파형 데이터를 상기 제2 메모리 장치에 저장하도록 하는 요청을 수신하는 단계;
    상기 메모리 제어기에 통합된 압축 로직(compression logic)에서 상기 프로세서로부터 하나 이상의 압축 제어 파라미터들을 수신하는 단계;
    상기 메모리 제어기의 압축 로직에서 상기 프로세서의 요청에 대응하여 상기 제1 메모리 장치로부터 다수의 샘플들을 수신하는 단계;
    상기 압축 로직이 상기 압축 제어 파라미터에 따라 다수의 샘플들을 압축하여, 압축된 패킷을 위한 다수의 압축된 샘플들을 형성하는 단계; 및
    상기 압축된 패킷을 상기 제2 메모리 장치로 송신하고, 상기 제2 메모리 장치는 상기 압축된 패킷을 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 압축 제어 파라미터들 중 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 하나의 압축 모드 파라미터이고, 상기 압축은 상기 압축 모드 파라미터에 따라, 비손실 압축 작업들 또는 손실 압축 작업들을 샘플들에 적용하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 압축 제어 파라미터들 중 하나는 압축된 패킷 당 바람직한 비트 수 또는 바람직한 압축률(desired compression rate)인 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 압축이 다음의 단계들, 즉:
    패킷 당 압축된 샘플들의 비트 수를 하나 이상의 압축된 패킷들에 대하여 계산하는 단계;
    상기 패킷 당 압축된 샘플들의 비트 수를 패킷 당 바람직한 비트 수와 비교하여 하나의 피드백 파라미터를 결정하는 단계; 및
    상기 피드백 파라미터에 따라 상기 압축을 적응시키는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 압축 제어 파라미터들 중 하나는, 정수 데이터 형식 또는 부동소수점 데이터 형식을 가리키는, 샘플들의 데이터 타입 파라미터이고, 정수 데이터 형식의 경우에는 각각의 입력 샘플이 제1 부호 비트 및 제1 다수의 가수부 비트들로 구성되고, 부동소수점 데이터 형식의 경우에는 각각의 입력 샘플이 제2 부호 비트, 제2 다수의 가수부 비트들, 및 다수의 부동소수점 지수부 비트들로 구성되며,
    상기 방법은 다음의 단계들, 즉:
    상기 데이터 타입 파라미터가 정수 데이터 형식을 가리킬 때에는, 각 샘플의 제1 부호 비트 및 제1 다수의 가수부 비트들을 처리하도록 상기 압축을 설정하는 단계; 및
    상기 데이터 타입 파라미터가 부동소수점 데이터 형식을 가리킬 때에는, 각 샘플의 제2 부호 비트와 제2 다수의 가수부 비트들 및 다수의 부동소수점 지수부 비트들을 처리하도록 상기 압축을 설정하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  6. 제5항에 있어서,
    상기 압축 제어 파라미터들 중 다른 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 압축 모드이고, 상기 데이터 타입 파라미터는 정수 데이터 타입을 가리키며,
    상기 압축 방법은 다음의 단계, 즉:
    상기 압축 모드 파라미터에 따라 각 샘플의 제1 부호 비트 및 제1 다수의 가수부 비트들에 비손실 압축 작업들 또는 손실 압축 작업들을 적용하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  7. 제5항에 있어서,
    상기 압축 제어 파라미터들 중 다른 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 압축 모드이고, 상기 데이터 타입 파라미터는 부동소수점 데이터 타입을 가리키며,
    상기 압축 방법은 다음의 단계들, 즉:
    각 샘플의 다수의 부동소수점 지수부 비트들을 상기 제2 부호 비트 및 제2 다수의 가수부 비트들로부터 분리하는 단계;
    비손실 압축 작업들을 각 샘플의 다수의 부동소수점 지수부 비트들에 적용하여 다수의 압축된 부동소수점 지수부들을 생성하는 단계;
    상기 압축 모드 파라미터에 따라 비손실 압축 작업들 또는 손실 압축 작업들을 각 샘플의 상기 제2 부호 비트 및 제2 다수의 가수부 비트들에 적용하여 다수의 압축된 부호들 및 가수부들을 형성하는 단계; 및
    상기 다수의 압축된 부동소수점 지수부들과 상기 다수의 압축된 부호들 및 가수부들을 압축된 패킷에 제공하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 압축된 패킷이 하나의 헤더 부분 및 하나의 페이로드 부분을 추가로 포함하고, 상기 방법은 다음의 단계들, 즉:
    상기 헤더 부분에 적어도 하나의 압축 제어 파라미터들을 제공하는 단계; 및
    상기 페이로드 부분에 다수의 압축된 샘플들을 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제1항에 있어서,
    시스템이 칩 위에 통합된 다수의 프로세서들을 포함하고, 상기 메모리 제어기는 하나 이상의 프로세서들로부터 각각의 파형 데이터를 제2 메모리 장치에 기록하기 위한 요청들을 수신하며, 상기 압축을 각각 다수의 샘플들에 적용하여 다수의 압축된 샘플들을 각각 형성하는 것을 특징으로 하는 방법.
  10. 제1항에 있어서,
    상기 메모리 제어기가 DMA(direct memory access) 제어기를 추가로 포함하고, 상기 압축을 수행하기 위하여 압축 로직(compression logic)이 상기 DMA 제어기에 통합되어 있는 것을 특징으로 하는 방법.
  11. 하나의 프로세서, 하나의 칩 위에 통합된 하나의 메모리 제어기 및 제1 메모리 장치, 그리고 상기 칩과 떨어져 있는 제2 메모리 장치를 포함하는 시스템에서, 상기 제2 메모리 장치로부터 수신된 파형 데이터를 압축해제하는 방법으로서, 다음의 단계들, 즉:
    상기 메모리 제어기에서 상기 프로세서로부터, 상기 제2 메모리 장치에 저장되어 있는 다수의 압축된 샘플들로 표현되는 파형 데이터를, 상기 압축된 샘플들 및 하나 이상의 압축 제어 파라미터들이 압축된 패킷 안에 포함되어, 상기 제2 메모리 장치로부터 읽어들이도록 하는 요청을 수신하는 단계;
    상기 요청에 대응하여 상기 제2 메모리 장치로부터의 압축된 패킷을 상기 메모리 제어기와 통합된 압축해제 로직에서 수신하는 단계;
    상기 하나 이상의 압축 제어 파라미터들에 따라 압축된 패킷의 상기 다수의 압축된 샘플들을 상기 압축해제 로직이 압축해제하여, 파형 데이터를 나타내는 다수의 압축해제된 샘플들을 형성하는 단계; 및
    상기 프로세서에 의해 접근 가능하도록 상기 다수의 압축해제된 샘플들을 저장하는 상기 제1 메모리 장치에, 상기 다수의 압축해제된 샘플들을 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  12. 제11항에 있어서,
    상기 압축 제어 파라미터들 중 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 하나의 압축 모드 파라미터이고, 상기 압축해제는 상기 압축 모드 파라미터에 따라, 비손실 압축해제 작업들 또는 손실 압축해제 작업들을 다수의 압축된 샘플들에 적용하는 것을 특징으로 하는 방법.
  13. 제11항에 있어서,
    상기 압축 제어 파라미터들 중 하나는, 정수 데이터 형식 또는 부동소수점 데이터 형식을 가리키는, 압축된 샘플들의 데이터 타입 파라미터이고, 정수 데이터 형식의 경우에는 압축된 패킷이 상기 다수의 압축된 샘플들의 압축된 부호 및 가수부 데이터를 포함하고, 부동소수점 데이터 형식의 경우에는 압축된 패킷이 상기 다수의 압축된 샘플들의 압축된 부동소수점 지수부, 부호 및 가수부 데이터들을 포함하며,
    상기 방법은 다음의 단계들, 즉:
    상기 데이터 타입 파라미터가 정수 데이터 형식을 가리킬 때에는, 압축해제된 각 샘플의 제1 부호 비트 및 제1 다수의 가수부 비트들을 생성하기 위하여, 상기 압축된 부호 및 가수부 데이터를 처리하도록 상기 압축해제를 설정하는 단계; 및
    상기 데이터 타입 파라미터가 부동소수점 데이터 형식을 가리킬 때에는, 압축해제된 각 샘플의 제2 부호 비트와 제2 다수의 가수부 비트들 및 다수의 부동소수점 지수부 비트들을 생성하기 위하여, 상기 다수의 압축된 샘플들의 압축된 부동소수점 지수부, 부호 및 가수부 데이터를 처리하도록 상기 압축해제를 설정하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  14. 제13항에 있어서,
    상기 압축 제어 파라미터들 중 다른 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 압축 모드이고, 상기 데이터 타입 파라미터는 정수 데이터 타입을 가리키며,
    상기 압축해제 방법은 다음의 단계, 즉:
    상기 압축 모드 파라미터에 따라 상기 압축된 부호 및 가수부 데이터에 비손실 압축 작업들 또는 손실 압축 작업들을 적용하여, 정수 데이터 형식에 따른 압축해제된 각 샘플의 제1 부호 비트 및 제1 다수의 가수부 비트들을 생성하도록 하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  15. 제13항에 있어서,
    상기 압축 제어 파라미터들 중 다른 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 압축 모드이고, 상기 데이터 타입 파라미터는 부동소수점 데이터 타입을 가리키며,
    상기 압축해제 방법은 다음의 단계들, 즉:
    상기 압축된 패킷으로부터 압축된 부동소수점 지수부 데이터와 압축된 부호 및 가수부 데이터를 추출하는 단계;
    비손실 압축해제 작업들을 상기 압축된 부동소수점 지수부 데이터에 적용하여 다수의 압축해제된 부동소수점 지수부들을 형성하는 단계;
    상기 압축 모드 파라미터에 따라 비손실 압축해제 작업들 또는 손실 압축해제 작업들을 상기 압축된 부호 및 가수부 데이터에 적용하여 다수의 압축해제된 부호들 및 가수부들을 형성하는 단계; 및
    상기 다수의 압축해제된 부동소수점 지수부들과 상기 다수의 압축해제된 부호들 및 가수부들을 조합하여, 부동소수점 데이터 형식에 따른 압축해제된 샘플들을 형성하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  16. 제11항에 있어서,
    시스템이 칩 위에 통합된 다수의 프로세서들을 포함하고, 상기 메모리 제어기는 하나 이상의 프로세서들로부터 각각의 파형 데이터를 제2 메모리 장치로부터 읽어들이기 위한 요청들을 수신하며, 상기 각각의 파형 데이터는 제2 메모리 장치 안에 저장된 대응하는 다수의 압축된 샘플들로 표현되고, 상기 압축해제가 다수의 압축된 샘플들에 각각 적용되어 다수의 압축해제된 샘플들을 각각 형성하는 것을 특징으로 하는 방법.
  17. 제11항에 있어서,
    상기 메모리 제어기가 DMA 제어기를 추가로 포함하고, 상기 압축해제를 수행하기 위하여 압축해제 로직(decompression logic)이 상기 DMA 제어기에 통합되어 있는 것을 특징으로 하는 방법.
  18. 하나의 프로세서, 하나의 칩 위에 통합된 하나의 메모리 제어기 및 제1 메모리 장치, 그리고 상기 칩과 떨어져 있는 제2 메모리 장치를 포함하는 시스템에서, 상기 제2 메모리 장치 안에 저장하기 위하여 파형 데이터를 압축하는 장치로서, 다음의 구성요소들, 즉:
    상기 프로세서 및 제1 메모리 장치에 결합된 메모리 제어기로서, 상기 메모리 제어기가 상기 프로세서로부터 정수 데이터 형식 또는 부동소수점 데이터 형식으로 표현된 다수의 샘플들로 구성되어 있는 파형 데이터를 상기 제2 메모리 장치에 저장하도록 하는 요청을 수신하고, 상기 요청에 대응하여 상기 메모리 제어기가 상기 제1 메모리 장치로부터 다수의 샘플들을 읽어들이도록 작동 가능한 메모리 제어기; 및
    상기 제1 메모리 장치로부터 읽어들인 다수의 샘플들과 상기 프로세서로부터의 하나 이상의 압축 제어 파라미터들을 수신하도록 결합되고, 압축된 패밋을 위한 다수의 압축된 샘플들을 형성하기 위하여 상기 하나 이상의 압축 제어 파라미터들에 따라 상기 다수의 샘플들을 압축하도록 작동 가능하며, 상기 저장을 위하여 상기 압축된 패킷을 상기 제2 메모리 장치에 제공하도록 결합된, 상기 메모리 제어기와 통합된 압축 로직(compression logic)을 포함하는 것을 특징으로 하는 장치.
  19. 제18항에 있어서,
    상기 압축 제어 파라미터들 중 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 하나의 압축 모드 파라미터이고, 상기 압축 로직은 상기 압축 모드 파라미터에 따라 비손실 압축 모드 또는 손실 압축 모드에서 작동 가능한 것을 특징으로 하는 장치.
  20. 제18항에 있어서,
    상기 압축 제어 파라미터들 중 하나는 압축된 패킷 당 바람직한 비트 수, 또는 바람직한 압축률인 것을 특징으로 하는 장치.
  21. 제20항에 있어서,
    상기 압축 로직이,
    패킷 당 압축된 샘플의 비트 수를 하나 이상의 압축된 패킷들에 대하여 계산하는 로직;
    상기 패킷 당 압축된 샘플의 비트 수를 압축된 패킷 당 바람직한 비트 수와 비교하여, 하나의 피드백 파라미터를 결정하는 로직; 및
    상기 피드백 파라미터에 따라 압축 작업들을 적응시키는 로직을 포함하는 것을 특징으로 하는 장치.
  22. 제18항에 있어서,
    상기 압축 제어 파라미터들 중 하나는, 정수 데이터 형식 또는 부동소수점 데이터 형식을 가리키는, 샘플들의 데이터 타입 파라미터이고, 정수 데이터 형식의 경우에는 각각의 입력 샘플이 제1 부호 비트 및 제1 다수의 가수부 비트들로 구성되고, 부동소수점 데이터 형식의 경우에는 각각의 입력 샘플이 제2 부호 비트, 제2 다수의 가수부 비트들, 및 다수의 부동소수점 지수부 비트들로 구성되며,
    상기 압축 로직이 다음의 로직들, 즉:
    상기 샘플들 각각의 부호 비트들 및 가수부 비트들을 압축하는 제1 로직;
    상기 샘플들 각각의 부동소수점 지수부 비트들을 압축하는 제2 로직;
    상기 데이터 타입 파라미터가 정수형 데이터 형식을 가리킬 때에는, 상기 샘플들 각각의 제1 부호 비트 및 제1 다수의 가수부 비트들을 상기 제1 로직에 제공하는 로직; 및
    상기 데이터 타입 파라미터가 부동소수점 데이터 형식을 가리킬 때에는, 상기 샘플들 각각의 제2 부호 비트 및 제2 다수의 가수부 비트들을 상기 제1 로직에 제공하고, 상기 부동소수점 지수부 비트들을 상기 제2 로직에 제공하는 로직을 포함하는 것을 특징으로 하는 장치.
  23. 제22항에 있어서,
    상기 압축 제어 파라미터들 중 다른 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 압축 모드이고, 상기 데이터 타입 파라미터는 정수 데이터 타입을 가리키며, 상기 제1 로직은 상기 압축 모드 파라미터에 따라 비손실 압축 모드 또는 손실 압축 모드에서 작동 가능한 것을 특징으로 하는 장치.
  24. 제22항에 있어서,
    상기 압축 제어 파라미터들 중 다른 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 압축 모드이고, 상기 데이터 타입 파라미터는 부동소수점 데이터 타입을 가리키며, 상기 제1 로직은 상기 압축 모드 파라미터에 따라 비손실 압축 모드 또는 손실 압축 모드에서 작동 가능하고, 상기 제2 로직은 비손실 압축 모드에서 작동 가능한 것을 특징으로 하는 장치.
  25. 추후제출
  26. 제18항에 있어서,
    상기 압축된 패킷이 하나의 헤더 부분 및 하나의 페이로드 부분을 추가로 포함하고, 상기 압축 로직은 다음의 로직들, 즉:
    상기 헤더 부분에 적어도 하나의 압축 제어 파라미터들을 제공하는 로직; 및
    상기 페이로드 부분에 다수의 압축된 샘플들을 제공하는 로직를 포함하는 것을 특징으로 하는 장치.
  27. 제18항에 있어서,
    시스템이 칩 위에 통합된 다수의 프로세서들을 포함하고, 상기 메모리 제어기는 하나 이상의 상기 프로세서들에 결합되어 각각의 프로세서로부터 각각의 파형 데이터를 제2 메모리 장치에 기록하기 위한 요청들을 수신하며, 상기 압축을 각각 다수의 샘플들에 적용하여 다수의 압축된 샘플들을 각각 형성하는 것을 특징으로 하는 장치.
  28. 제18항에 있어서,
    상기 메모리 제어기가 DMA 제어기를 추가로 포함하고, 상기 압축 로직이 상기 DMA 제어기에 통합되어 있는 것을 특징으로 하는 장치.
  29. 하나의 프로세서, 하나의 칩 위에 통합된 하나의 메모리 제어기 및 제1 메모리 장치, 그리고 상기 칩과 떨어져 있는 제2 메모리 장치를 포함하는 시스템에서, 상기 제2 메모리 장치로부터 읽어들인 파형 데이터를 압축해제하는 장치로서, 다음의 구성요소들, 즉:
    상기 프로세서 및 제1 메모리 장치에 결합된 메모리 제어기로서, 상기 메모리 제어기가, 상기 제2 메모리 장치 안에 저장된 다수의 압축된 샘플들로 이루어진 파형 데이터를 상기 제2 메모리 장치로부터 읽어들이도록 하는 요청을 상기 프로세서로부터 수신하고, 상기 다수의 압축된 샘플들 및 하나 이상의 압축 제어 파라미터들은 압축된 패킷 안에 수용되며, 상기 요청에 대응하여 상기 제2 메모리 장치에 결합된 상기 메모리 제어기가 상기 제2 메모리 장치로부터 다수의 압축된 샘플들을 읽어들이도록 작동이 가능한 메모리 제어기; 및
    상기 제2 메모리 장치로부터 읽어들인 압축된 샘플들을 수신하도록 결합되고, 다수의 샘플들을 나타내는 다수의 압축해제된 샘플들을 형성하기 위하여 하나 이상의 압축 제어 파라미터들에 따라 상기 다수의 압축된 샘플들을 압축해제하도록 작동 가능하며, 상기 압축해제된 샘플들을 상기 제1 메모리 장치에 제공하도록 결합되고, 상기 제1 메모리 장치는 프로세서가 접근할 수 있도록 상기 압축해제된 샘플들을 저장하는, 상기 메모리 제어기와 통합된 압축해제 로직(decompression logic)을 포함하는 것을 특징으로 하는 장치.
  30. 제29항에 있어서,
    상기 압축 제어 파라미터들 중 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 하나의 압축 모드 파라미터이고, 상기 압축해제 로직은 상기 압축 모드 파라미터에 따라 비손실 압축해제 작업들 또는 손실 압축해제 작업들을 적용하도록 작동 가능한 것을 특징으로 하는 장치.
  31. 제29항에 있어서,
    상기 압축 제어 파라미터들 중 하나는, 정수 데이터 형식 또는 부동소수점 데이터 형식을 가리키는, 압축된 샘플들의 데이터 타입 파라미터이고, 정수 데이터 형식의 경우에는 압축된 패킷이 상기 다수의 압축된 샘플들의 압축된 부호 및 가수부 데이터를 포함하고, 부동소수점 데이터 형식의 경우에는 압축된 패킷이 상기 다수의 압축된 샘플들의 압축된 부동소수점 지수부, 부호 및 가수부 데이터들을 포함하며,
    상기 압축해제 로직은 다음의 로직들, 즉:
    압축해제된 부호들 및 가수부들을 형성하기 위하여, 압축된 샘플들 각각의 압축된 부호 및 가수부 데이터를 압축해제하는 제1 로직;
    압축해제된 부동소수점 지수부들을 형성하기 위하여, 압축된 샘플들 각각의 압축된 부동소수점 지수부 데이터를 압축해제하는 제2 로직;
    상기 데이터 타입 파라미터가 정수 데이터 형식을 가리킬 때에는, 상기 압축된 패킷의 상기 압축된 부호 및 가수부 데이터를 상기 제1 로직에 제공하는 로직; 및
    상기 데이터 타입 파라미터가 부동소수점 데이터 형식을 가리킬 때에는, 압축된 패킷의 상기 압축된 부호 및 가수부 데이터를 상기 제1 로직에 제공하고, 압축된 패킷의 상기 압축된 부동소수점 지수부 데이터를 상기 제2 로직에 제공하는 로직을 추가로 포함하는 것을 특징으로 하는 장치.
  32. 제31항에 있어서,
    상기 압축 제어 파라미터들 중 다른 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 압축 모드이고, 상기 데이터 타입 파라미터는 정수 데이터 타입을 가리키며, 상기 제1 로직은 상기 압축 모드 파라미터에 따라 비손실 압축 작업들 또는 손실 압축 작업들을 적용하도록 작동 가능한 것을 특징으로 하는 장치.
  33. 제31항에 있어서,
    상기 압축 제어 파라미터들 중 다른 하나는 비손실 압축 모드 또는 손실 압축 모드를 가리키는 압축 모드이고, 상기 데이터 타입 파라미터는 부동소수점 데이터 타입을 가리키며, 상기 제1 로직은 상기 압축 모드 파라미터에 따라 비손실 압축 작업들 또는 손실 압축 작업들을 적용하도록 작동 가능하고, 상기 제2 로직은 비손실 압축 모드에서 작동 가능하며,
    상기 압축해제 로직은 다음의 로직, 즉:
    상기 압축해제된 부동소수점 지수부들을 상기 압축해제된 부호들 및 가수부들과 조합하여, 부동소수점 데이터 형식에 따른 압축해제된 샘플들을 형성하는 로직를 추가로 포함하는 것을 특징으로 하는 장치.
  34. 제29항에 있어서,
    시스템이 칩 위에 통합된 다수의 프로세서들을 포함하고, 상기 메모리 제어기는 하나 이상의 프로세서들에 결합되어 상기 프로세서들 각각으로부터 각각의 파형 데이터를 제2 메모리 장치로부터 읽어들이기 위한 요청들을 수신하며, 상기 각각의 파형 데이터는 제2 메모리 장치 안에 저장된 대응하는 다수의 압축된 샘플들로 표현되고, 상기 압축해제가 다수의 압축된 샘플들에 각각 적용되어 다수의 압축해제된 샘플들을 각각 형성하는 것을 특징으로 하는 장치.
  35. 제29항에 있어서,
    상기 메모리 제어기가 DMA 제어기를 추가로 포함하고, 압축해제 로직이 상기 DMA 제어기에 통합되어 있는 것을 특징으로 하는 장치.
KR1020127009881A 2009-09-30 2010-09-27 압축 및 압축해제를 이용한 향상된 멀티 프로세서 파형 데이터 교환 KR101703207B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US24748009P 2009-09-30 2009-09-30
US61/247,480 2009-09-30
US12/891,312 2010-09-27
PCT/US2010/050420 WO2011041269A2 (en) 2009-09-30 2010-09-27 Enhanced multi-processor waveform data exchange using compression and decompression
US12/891,312 US8631055B2 (en) 2009-09-30 2010-09-27 Enhanced multi-processor waveform data exchange using compression and decompression

Publications (2)

Publication Number Publication Date
KR20120098628A true KR20120098628A (ko) 2012-09-05
KR101703207B1 KR101703207B1 (ko) 2017-02-06

Family

ID=43781482

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127009881A KR101703207B1 (ko) 2009-09-30 2010-09-27 압축 및 압축해제를 이용한 향상된 멀티 프로세서 파형 데이터 교환

Country Status (6)

Country Link
US (2) US8631055B2 (ko)
EP (1) EP2483777A4 (ko)
JP (1) JP2013506917A (ko)
KR (1) KR101703207B1 (ko)
CN (1) CN102754078B (ko)
WO (1) WO2011041269A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230082805A (ko) * 2021-12-02 2023-06-09 서울과학기술대학교 산학협력단 합성곱 신경망을 위한 부동소수점 압축이 포함된 캐시

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631055B2 (en) * 2009-09-30 2014-01-14 Samplify Systems, Inc. Enhanced multi-processor waveform data exchange using compression and decompression
US8781000B2 (en) * 2010-12-30 2014-07-15 Vixs Systems, Inc. Dynamic video data compression
WO2012128743A1 (en) 2011-03-18 2012-09-27 Empire Technology Development Llc Scene-based variable compression
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US8959130B2 (en) 2011-06-30 2015-02-17 Altera Corporation Compression of floating-point data in encoding groups
US8824506B2 (en) * 2012-01-05 2014-09-02 International Business Machines Corporation Fragmentation of link layer discovery protocol packets
US9104473B2 (en) 2012-03-30 2015-08-11 Altera Corporation Conversion and compression of floating-point and integer data
US9158686B2 (en) 2012-03-30 2015-10-13 Altera Corporation Processing system and method including data compression API
US9026568B2 (en) 2012-03-30 2015-05-05 Altera Corporation Data compression for direct memory access transfers
US9118345B2 (en) 2012-10-04 2015-08-25 Altera Corporation Data compression profiler for configuration of compression
US9098666B2 (en) 2012-11-28 2015-08-04 Qualcomm Incorporated Clock distribution network for 3D integrated circuit
US9064077B2 (en) 2012-11-28 2015-06-23 Qualcomm Incorporated 3D floorplanning using 2D and 3D blocks
CN103020205B (zh) * 2012-12-05 2018-07-31 中科天玑数据科技股份有限公司 一种分布式文件系统上基于硬件加速卡的压缩解压缩方法
WO2014116712A1 (en) 2013-01-22 2014-07-31 Samplify Systems, Inc. Data compression and decompression using simd instructions
US9274802B2 (en) 2013-01-22 2016-03-01 Altera Corporation Data compression and decompression using SIMD instructions
US9298457B2 (en) 2013-01-22 2016-03-29 Altera Corporation SIMD instructions for data compression and decompression
US9536840B2 (en) 2013-02-12 2017-01-03 Qualcomm Incorporated Three-dimensional (3-D) integrated circuits (3DICS) with graphene shield, and related components and methods
US9041448B2 (en) 2013-03-05 2015-05-26 Qualcomm Incorporated Flip-flops in a monolithic three-dimensional (3D) integrated circuit (IC) (3DIC) and related methods
US9177890B2 (en) 2013-03-07 2015-11-03 Qualcomm Incorporated Monolithic three dimensional integration of semiconductor integrated circuits
US9171608B2 (en) 2013-03-15 2015-10-27 Qualcomm Incorporated Three-dimensional (3D) memory cell separation among 3D integrated circuit (IC) tiers, and related 3D integrated circuits (3DICS), 3DIC processor cores, and methods
US9311721B1 (en) * 2013-04-04 2016-04-12 Sandia Corporation Graphics processing unit-assisted lossless decompression
US9274951B2 (en) * 2013-05-31 2016-03-01 Altera Corporation Cache memory controller for accelerated data transfer
WO2014194288A1 (en) * 2013-05-31 2014-12-04 eagleyemed, Inc. Dynamic adjustment of image compression for high resolution live medical image sharing
US10024976B2 (en) 2013-08-21 2018-07-17 Samsung Electronics Co., Ltd Method and apparatus for reducing memory and communications bandwidth requirements in GNSS receivers
TWI556158B (zh) * 2013-08-21 2016-11-01 威盛電子股份有限公司 組態資料的處理裝置及方法
US9141563B2 (en) 2013-09-11 2015-09-22 Kabushiki Kaisha Toshiba Memory system
US10305980B1 (en) * 2013-11-27 2019-05-28 Intellectual Property Systems, LLC Arrangements for communicating data in a computing system using multiple processors
US9733847B2 (en) * 2014-06-02 2017-08-15 Micron Technology, Inc. Systems and methods for transmitting packets in a scalable memory system protocol
US10114554B1 (en) 2015-01-20 2018-10-30 Intellectual Property Systems, LLC Arrangements for storing more data in faster memory when using a hierarchical memory structure
US9354812B1 (en) 2015-02-12 2016-05-31 Qualcomm Incorporated Dynamic memory utilization in a system on a chip
US9685219B2 (en) 2015-05-13 2017-06-20 Samsung Electronics Co., Ltd. Semiconductor memory device for deconcentrating refresh commands and system including the same
KR20240001326A (ko) * 2015-05-21 2024-01-03 제로포인트 테크놀로지 에이비 시맨틱 값 데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템
WO2017031149A1 (en) * 2015-08-19 2017-02-23 Texas Instruments Incorporated Method and system for compression of radar signals
US20170054449A1 (en) * 2015-08-19 2017-02-23 Texas Instruments Incorporated Method and System for Compression of Radar Signals
US10284502B2 (en) * 2015-10-12 2019-05-07 Mellanox Technologies, Ltd. Dynamic optimization for IP forwarding performance
US10067706B2 (en) 2016-03-31 2018-09-04 Qualcomm Incorporated Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system
US10191850B2 (en) 2016-03-31 2019-01-29 Qualcomm Incorporated Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system
US11774944B2 (en) 2016-05-09 2023-10-03 Strong Force Iot Portfolio 2016, Llc Methods and systems for the industrial internet of things
US11327475B2 (en) 2016-05-09 2022-05-10 Strong Force Iot Portfolio 2016, Llc Methods and systems for intelligent collection and analysis of vehicle data
US11156998B2 (en) 2016-05-09 2021-10-26 Strong Force Iot Portfolio 2016, Llc Methods and systems for process adjustments in an internet of things chemical production process
US10176090B2 (en) 2016-09-15 2019-01-08 Qualcomm Incorporated Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
US10649943B2 (en) 2017-05-26 2020-05-12 Dell Products, L.P. System and method for I/O aware processor configuration
US10346346B1 (en) * 2017-12-21 2019-07-09 Xilinx, Inc. Inline ECC function for system-on-chip
CN108629410B (zh) * 2018-04-28 2021-01-22 中国科学院计算技术研究所 基于主成分分析降维和/或升维的神经网络处理方法
CN108764454B (zh) * 2018-04-28 2022-02-25 中国科学院计算技术研究所 基于小波变换压缩和/或解压缩的神经网络处理方法
CN108665062B (zh) * 2018-04-28 2020-03-10 中国科学院计算技术研究所 一种基于小波变换减少io开销的神经网络处理系统
CN108615074B (zh) * 2018-04-28 2021-04-23 中国科学院计算技术研究所 基于压缩感知的神经网络处理系统及方法
CN108629409B (zh) * 2018-04-28 2020-04-10 中国科学院计算技术研究所 一种基于主成分分析减少io开销的神经网络处理系统
US10656202B1 (en) * 2018-09-21 2020-05-19 Xilinx, Inc. Electronic device including integrated circuit with debug capabilities
US10877847B2 (en) * 2018-10-09 2020-12-29 International Business Machines Corporation Using accelerators for distributed data compression and decompression to improve checkpoint / restart times
US10965786B2 (en) 2018-10-31 2021-03-30 At&T Intellectual Property I, L.P. Adaptive fixed point mapping for uplink and downlink fronthaul
RU2719427C1 (ru) * 2018-11-30 2020-04-17 Федеральное государственное бюджетное образовательное учреждение высшего образования "Рязанский государственный радиотехнический университет" Устройство согласования датчиков с электронной аппаратурой
US11075647B2 (en) 2019-02-27 2021-07-27 Movidius Limited Methods and apparatus to compress data
CN109921800B (zh) * 2019-02-28 2023-02-03 四川九洲空管科技有限责任公司 基于自定制浮点格式的频域脉冲压缩方法
JP7099487B2 (ja) * 2020-03-31 2022-07-12 横河電機株式会社 データ管理システム、データ管理方法、および、データ管理プログラム
US11360920B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Mapping high-speed, point-to-point interface channels to packet virtual channels
US11412075B2 (en) 2020-08-31 2022-08-09 Micron Technology, Inc. Multiple protocol header processing
US11418455B2 (en) * 2020-08-31 2022-08-16 Micron Technology, Inc. Transparent packet splitting and recombining
US11296995B2 (en) 2020-08-31 2022-04-05 Micron Technology, Inc. Reduced sized encoding of packet length field
US11539623B2 (en) 2020-08-31 2022-12-27 Micron Technology, Inc. Single field for encoding multiple elements
GB2603459B (en) * 2021-01-22 2023-05-10 Advanced Risc Mach Ltd Data processing systems
CN113626187A (zh) * 2021-07-31 2021-11-09 浙江省机电产品质量检测所有限公司 测量数据的处理方法及装置
US20230102584A1 (en) * 2021-09-24 2023-03-30 Apple Inc. Systems and Methods for Multi-Core Image Encoding
CN114168085B (zh) * 2021-12-16 2024-02-20 潍柴动力股份有限公司 变量处理方法、装置、设备及存储介质
CN114391875B (zh) * 2022-02-14 2023-08-11 逸超科技(武汉)有限公司 一种波束合成方法、装置及存储介质
US20230037575A1 (en) * 2022-09-30 2023-02-09 Michael Wu Data Compression in Integrated Device Network

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010057319A (ko) * 1999-12-21 2001-07-04 박종섭 데이터 압축을 이용한 프로세서간 데이터 송/수신 방법
US6988114B2 (en) * 2001-01-12 2006-01-17 Stmicroelectronics S.R.L. Process and system for compressing and decompressing digital information and computer program product therefore
US20070067483A1 (en) * 1999-03-11 2007-03-22 Realtime Data Llc System and methods for accelerated data storage and retrieval
US20080126903A1 (en) * 2006-11-28 2008-05-29 Samplify Systems, Inc. Compression and decompression of stimulus and response waveforms in automated test systems

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185819A (en) * 1991-04-29 1993-02-09 General Electric Company Video signal compression apparatus for independently compressing odd and even fields
US5839100A (en) 1996-04-22 1998-11-17 Wegener; Albert William Lossless and loss-limited compression of sampled data signals
US5765157A (en) 1996-06-05 1998-06-09 Sun Microsystems, Inc. Computer system and method for executing threads of execution with reduced run-time memory space requirements
US5974471A (en) 1996-07-19 1999-10-26 Advanced Micro Devices, Inc. Computer system having distributed compression and decompression logic for compressed data movement
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6195024B1 (en) 1998-12-11 2001-02-27 Realtime Data, Llc Content independent data compression method and system
US7129860B2 (en) 1999-01-29 2006-10-31 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US6597812B1 (en) 1999-05-28 2003-07-22 Realtime Data, Llc System and method for lossless data compression and decompression
US6862662B1 (en) 2000-03-03 2005-03-01 Micron Technology, Inc. High density storage scheme for semiconductor memory
US8692695B2 (en) * 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
JP3885523B2 (ja) 2001-06-20 2007-02-21 日本電気株式会社 サーバ・クライアント型音声認識装置及び方法
KR100884956B1 (ko) * 2002-08-14 2009-02-23 엘지전자 주식회사 비대칭 양방향 패킷데이터 송수신 방법 및 시스템
ITMI20022003A1 (it) * 2002-09-20 2004-03-21 Atmel Corp Apparecchio e metodo per la decompressione dinamica di programmi.
US7009533B1 (en) 2004-02-13 2006-03-07 Samplify Systems Llc Adaptive compression and decompression of bandlimited signals
US7071852B1 (en) * 2004-02-13 2006-07-04 Samplify Systems Llc Enhanced test and measurement instruments using compression and decompression
US7088276B1 (en) * 2004-02-13 2006-08-08 Samplify Systems Llc Enhanced data converters using compression and decompression
TWI312240B (en) 2004-03-12 2009-07-11 Sunplus Technology Co Ltd Data compressed/decompressed device and associated application system
US7849241B2 (en) * 2006-03-23 2010-12-07 International Business Machines Corporation Memory compression method and apparatus for heterogeneous processor architectures in an information handling system
WO2007135602A1 (en) 2006-05-24 2007-11-29 Koninklijke Philips Electronics N.V. Electronic device and method for storing and retrieving data
US7477999B2 (en) 2006-10-26 2009-01-13 Samplify Systems, Inc. Data compression for a waveform data analyzer
US7558685B2 (en) * 2006-11-29 2009-07-07 Samplify Systems, Inc. Frequency resolution using compression
US8001278B2 (en) 2007-09-28 2011-08-16 Intel Corporation Network packet payload compression
US20090248986A1 (en) 2008-03-26 2009-10-01 Daniel Citron Apparatus for and Method of Implementing Multiple Content Based Data Caches
US8174428B2 (en) * 2008-05-21 2012-05-08 Integrated Device Technology, Inc. Compression of signals in base transceiver systems
US8005152B2 (en) * 2008-05-21 2011-08-23 Samplify Systems, Inc. Compression of baseband signals in base transceiver systems
US8045811B2 (en) * 2008-11-26 2011-10-25 Samplify Systems, Inc. Compression and storage of projection data in a computed tomography system
US8157738B2 (en) * 2009-06-02 2012-04-17 Samplify Systems, Inc. Ultrasound signal compression
US8317706B2 (en) * 2009-06-29 2012-11-27 White Eagle Sonic Technologies, Inc. Post-beamforming compression in ultrasound systems
US8631055B2 (en) * 2009-09-30 2014-01-14 Samplify Systems, Inc. Enhanced multi-processor waveform data exchange using compression and decompression
US8301803B2 (en) * 2009-10-23 2012-10-30 Samplify Systems, Inc. Block floating point compression of signal data
US8959130B2 (en) * 2011-06-30 2015-02-17 Altera Corporation Compression of floating-point data in encoding groups
US9026568B2 (en) * 2012-03-30 2015-05-05 Altera Corporation Data compression for direct memory access transfers
US9104473B2 (en) * 2012-03-30 2015-08-11 Altera Corporation Conversion and compression of floating-point and integer data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070067483A1 (en) * 1999-03-11 2007-03-22 Realtime Data Llc System and methods for accelerated data storage and retrieval
KR20010057319A (ko) * 1999-12-21 2001-07-04 박종섭 데이터 압축을 이용한 프로세서간 데이터 송/수신 방법
US6988114B2 (en) * 2001-01-12 2006-01-17 Stmicroelectronics S.R.L. Process and system for compressing and decompressing digital information and computer program product therefore
US20080126903A1 (en) * 2006-11-28 2008-05-29 Samplify Systems, Inc. Compression and decompression of stimulus and response waveforms in automated test systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230082805A (ko) * 2021-12-02 2023-06-09 서울과학기술대학교 산학협력단 합성곱 신경망을 위한 부동소수점 압축이 포함된 캐시

Also Published As

Publication number Publication date
WO2011041269A3 (en) 2011-07-21
CN102754078B (zh) 2015-05-20
CN102754078A (zh) 2012-10-24
US8631055B2 (en) 2014-01-14
US20140095561A1 (en) 2014-04-03
EP2483777A2 (en) 2012-08-08
KR101703207B1 (ko) 2017-02-06
US9319063B2 (en) 2016-04-19
JP2013506917A (ja) 2013-02-28
US20110078222A1 (en) 2011-03-31
WO2011041269A2 (en) 2011-04-07
EP2483777A4 (en) 2016-05-11

Similar Documents

Publication Publication Date Title
KR101703207B1 (ko) 압축 및 압축해제를 이용한 향상된 멀티 프로세서 파형 데이터 교환
US9026568B2 (en) Data compression for direct memory access transfers
JP2022106737A (ja) ハードウェアにおける行列乗算の実行
US9298457B2 (en) SIMD instructions for data compression and decompression
CN108292222A (zh) 用于数据解压缩的硬件装置和方法
US11880759B2 (en) Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
KR102593583B1 (ko) Ssd들 상에서의 가속된 데이터 처리를 위한 시스템 및 방법
CN105264779A (zh) 使用simd指令的数据压缩和解压
US10430210B2 (en) Systems and devices for accessing a state machine
US11947979B2 (en) Systems and devices for accessing a state machine
US20230079727A1 (en) Debugging dataflow computer architectures
US9189394B2 (en) Memory-link compression for graphic processor unit
US11443014B1 (en) Sparse matrix multiplier in hardware and a reconfigurable data processor including same
US11789642B2 (en) Loading data from memory during dispatch
TWI792773B (zh) 用於可重配置處理器即服務(RPaaS)的節點內基於緩衝器的串流
Huang et al. AIOC: An All-in-One-Card Hardware Design for Financial Market Trading System
US20220414014A1 (en) Technology for early abort of compression acceleration
KR20240017740A (ko) 소프트 플로트 함수 회로를 포함하는 시스템-온-칩
WO2024072393A1 (en) Bandwidth maximization
Lai et al. A novel VLSI architecture for Lempel-Ziv based data compression
CN116366094A (zh) 具有基板上的接地参考信令(grs)的高速信令系统
Zhang et al. A Low-Cost Multi-standard Audio Decoder Architecture Design

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
FPAY Annual fee payment

Payment date: 20200103

Year of fee payment: 4