KR20070105328A - 효율적인 디지털 신호 프로세싱을 위한 데이터 프로세서 및그 방법 - Google Patents

효율적인 디지털 신호 프로세싱을 위한 데이터 프로세서 및그 방법 Download PDF

Info

Publication number
KR20070105328A
KR20070105328A KR1020077018335A KR20077018335A KR20070105328A KR 20070105328 A KR20070105328 A KR 20070105328A KR 1020077018335 A KR1020077018335 A KR 1020077018335A KR 20077018335 A KR20077018335 A KR 20077018335A KR 20070105328 A KR20070105328 A KR 20070105328A
Authority
KR
South Korea
Prior art keywords
coprocessor
list
processor core
interface
command
Prior art date
Application number
KR1020077018335A
Other languages
English (en)
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 KR20070105328A publication Critical patent/KR20070105328A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

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

Abstract

데이터 프로세서(200)는 프로세서 코어(300)와, 상기 프로세서 코어(300)에 연결된 인터페이스(210)와, 그리고 코프로세서(500)를 포함한다. 상기 코프로세서(500)는 상기 인터페이스(210)를 통해 상기 프로세서 코어(300)에 연결되고, 제 1 리스트 메모리(522)를 포함한다. 소정 명령에 응답하여 상기 프로세서 코어(300)는 상기 인터페이스(210)를 통해 상기 코프로세서(500)에 오퍼랜드를 제공한다. 상기 코프로세서(500)는 상기 제 1 리스트 메모리(522)에 상기 오퍼랜드를 저장하고, 그리고 상기 제 1 리스트 메모리(522)로부터의 복수의 값들을 사용하여 상기 소정 명령에 대응하는 연산을 수행하여 결과를 제공한다.
데이터 프로세서, 프로세서 코어, 코프로세서, 오퍼랜드

Description

효율적인 디지털 신호 프로세싱을 위한 데이터 프로세서 및 그 방법{DATA PROCESSOR ADAPTED FOR EFFICIENT DIGITAL SIGNAL PROCESSING AND METHOD THEREFOR}
본 발명은 일반적으로 데이터 프로세서에 관한 것이고, 특히 디지털 신호 프로세싱 기능을 수행할 수 있는 데이터 프로세서에 관한 것이다.
지난 몇십 년간 집적 회로 제조 기술은 진보하여 마이크로프로세서 기반의 컴퓨터 시스템을 거대한 웨어하우스(warehouses)에서 데스크탑(desktop)으로 이동시켰으며 지금은 PDA(Personal Digital Aassistant), 셀룰러 전화기, 스마트 폰, 비디오 게임기, 등과 같은 디바이스 내의 핸드헬드 디바이스(handheld devices)로 이동시키고 있다. 고전적인 컴퓨터 시스템은 세 개의 주요 구성요소: 중앙 처리 장치(CPU), 메모리, 및 입력/출력 주변 장치로 정의된다. 그러나 CPU 그리고 이제는 심지어 메모리 및 일부 입력/출력 회로까지도 단일 집적 회로 칩 내에 결합되고 있다. 이러한 매우 복합적인 디바이스는 때로는 시스템-온-칩(Systems-On-Chip, 또는 SOC)으로 언급되며, 많은 유용한 기능을 제공하는 동시에 헨드헬드 디바이스의 비용을 크게 낮추어 왔다.
동시에, 프로세싱 태스크(processing tasks)의 타입도 변경되어 왔다. 이전 에 마이크로프로세서는 정수 및 부울 데이터 타입(integer and Boolean data types)으로 정수 연산 및 논리적 명령을 수행했다. 이러한 연산이 계속 요구되는 동안에, 어떤 디바이스에 대해서는 또한 더 특화된 프로세싱이 유용하다. 특화된 프로세싱의 한 예는 부동 소수점 연산이다. 부동 소수점 연산은 복합 그래픽(complex graphics)과 같은 수학적 지향 연산(mathematically oriented operations)에 있어 유용하다. 그러나 정수 및 부울 데이터 타입을 처리하도록 설계된 범용 마이크로프로세서 상에서 부동 소수점 연산을 수행하는 것은 복합 소프트웨어 루틴(complex software routines)을 필요로 하고, 그리고 프로세싱은 상대적으로 느리다. 이러한 수요를 만족시키기 위해 마이크로프로세서 설계자들은 부동 소수점 코프로세서(floating point coprocessor)를 개발했다. 코프로세서는, 다른 프로세서 일반적으로 시스템 내의 CPU로부터 프로세싱 태스크의 일부를 오프로드(offload)하기 위하여, 특별한 태스크를 처리하도록 특별하게 설계된 데이터 프로세서이다. 캘리포니아의 산타 클라라의 인텔(Intel Corp.)에 의해 처음 제조된 80287 부동 소수점 수학 코프로세서와 같은 부동 소수점 수학 코프로세서는 1980년대 데스크탑 컴퓨터 시스템에서는 일반적인 것이었다. 부동 소수점 코프로세서는 특별한 목적의 회로를 사용하여 복합 부동 소수점 연산을 효율적으로 처리함으로써 컴퓨터 시스템의 성능을 향상시켰다.
헨드헬드 디바이스도 또한 특화된 프로세싱 태스크를 필요로 한다. 예를 들어, 음성 신호는 종종 디지털 신호 프로세서(Digital Signal Processor, DSP)를 사용하여 주파수 영역에서 처리된다. 따라서 핸드헬드 디바이스에서 범용 데이터 프 로세서에 DSP 코프로세서를 부가하는 것은 자연스러운 것이다.
부품의 수를 줄이고 비용을 낮추기 위해, 이러한 핸드헬드 디바이스에서 매우 높은 집적도의 SOC를 사용하는 것이 또한 바람직하다. 지금까지는 SOC에서 범용 CPU와 DSP 코프로세서를 통합하는 것은 어려웠다. SOC 설계 철학은 재사용될 수 있도록 회로 블록들이 모듈(module)로 될 것을 요구한다. CPU는 일반적으로 "코어(core)"로서 설계되고, 그리고 CAD(Computer-Aided Design) 기술을 사용하여 하이 레벨 기술(high level description)로부터 제조될 수 있다. 그러나 코프로세서는 CPU의 명령 파이프라인(instruction pipeline)과 복잡한 상호작용을 필요로 하고, 그리고 DSP 코프로세서 수용하기 위해 CPU의 설계를 변경함으로써 모듈화가 어려워진다.
이러한 어려움 때문에, 일부 설계는 CPU 옆을 따라 개별적인 범용 DSP를 사용해 왔다. DSP는 CPU와 유사한데, 왜냐하면 DSP는 자기 자신의 메모리에 접근하고, 자기 자신의 명령 세트 및 자기 자신의 운영 체제를 가지고,그리고 자기 자신의 개발 툴 세트를 필요로 하기 때문이다. 그러나 이러한 특징은 핸드헬드 디바이스의 비용을 증가시킨다. 더욱이 CPU와 DSP는 공유 메모리를 사용하여 통신하고, 그리고 두 개의 디바이스들 간의 오퍼랜드(operand) 및 결과(result)를 운반하는 데 있어 상당한 양의 오버헤드(overhead)가 존재한다. 따라서 특별한 목적의 DSP 프로세싱의 장점들은 추가되는 복잡성과 비용으로 인해 부분적으로 상쇄된다.
SOC 설계에 있어 모듈 프로세서를 사용하여 이러한 어려움을 극복하기 위해, 어떤 제조자들은 최근에 선택적인 코프로세서를 갖는 시스템에서 사용하기 위한 부 가적인 "후크(hooks)"를 갖는 프로세서 코어를 설계했다. 예를 들어, 캘리포니아의 마운틴 뷰의 MIPS Technologies, Inc.로부터 입수할 수 있는 4KES™ RISC 마이크로프로세서 코어는 특별한 코프로세서 명령 세트와 특별한 목적의 인터페이스(interface)를 포함하여 명령 및 데이터가 CPU 코어와 코프로세서 사이에서 전달되도록 했다. 따라서 CPU 코어가 이러한 특별한 코프로세서 명령들 중 하나를 디코딩할 때, 레지스터 파일(register file)로부터 적당한 오퍼랜드를 검색하여 이들을 그 명령들과 함께 특별한 인터페이스를 통해 코프로세서에 보낸다. CPU 코어의 파이프라인은 코프로세서가 명령을 수행하는 동안 멈춘다. 코프로세서가 이 명령의 결과를 리턴(return)하는 경우, CPU 코어는 레지스터 파일에 이 결과를 저장하고 그리고 파이프라인에서의 명령들을 계속 처리한다.
그 다음으로 필요한 것은 핸드헬드 전자 디바이스 등에 유용한 더 작고 더 낮은 파워의 SOC를 제공하기 위해 이 새로운 RISC 마이크로 프로세서 코어의 능력을 사용하는 데이터 프로세서이다.
따라서 일 실시예로 본 발명은 프로세서 코어와, 상기 프로세서 코어에 연결된 인터페이스와, 그리고 코프로세서를 포함하는 데이터 프로세서를 제공한다. 상기 코프로세서는 상기 인터페이스를 통해 상기 프로세서 코어에 연결되고, 제 1 리스트 메모리(list memory)를 포함한다. 소정 명령(predetermined instruction)에 응답하여, 상기 프로세서 코어는 상기 인터페이스를 통해 상기 코프로세서에 오퍼랜드를 제공한다. 상기 코프로세서는 상기 제 1 리스트 메모리에 상기 오퍼랜드를 저장하고, 그리고 상기 제 1 리스트 메모리로부터의 복수의 값들을 사용하여 상기 소정 명령에 대응하는 연산을 수행하여 결과를 제공한다.
또 다른 실시예로 본 발명은 명령을 실행하는 중앙 처리 장치를 포함하는 데이터 프로세서에서의 사용을 위한 코프로세서를 제공한다. 상기 코프로세서는 제어 로직(control logic)과, 제 1 리스트 메모리와, 그리고 산술 회로(arithmetic circuitry)를 포함한다. 상기 제어 로직은 인터페이스를 통해 상기 중앙 처리 장치에 연결되어 상기 인터페이스를 통해 명령 및 오퍼랜드를 수신하도록 구성된다. 상기 제 1 리스트 메모리는 상기 오퍼랜드를 포함하는 복수의 값들을 저장한다. 상기 산술 회로는 상기 제 1 리스트 메모리에 연결된다. 소정 명령에 응답하여, 상기 제어 로직은 상기 제 1 리스트 메모리로부터의 복수의 값들을 사용하여 상기 소정 명령에 대응하는 연산을 수행하여 결과를 제공하도록 한다.
또 다른 실시예로 본 발명은 프로세서 코어와, 상기 프로세서 코어에 연결된 인터페이스와, 그리고 상기 인터페이스에 연결된 코프로세서를 포함하는 데이터 프로세서를 제공한다. 제 1 소정 명령에 응답하여 상기 프로세서 코어는 상기 인터페이스를 통해 상기 코프로세서에 명령 및 오퍼랜드 값을 제공하고, 그리고 상기 코프로세서는 상기 제 1 소정 명령에 따라 제 1 소정 연산(predetermined operation)을 개시한다. 제 2 소정 명령에 응답하여 상기 코프로세서는 상기 제 1 소정 연산이 완료하는 경우 상기 인터페이스에 그 결과를 제공한다.
또 다른 실시예로 본 발명은 중앙 처리 장치와, 상기 중앙 처리 장치에 연결되어 복수의 오퍼랜드를 저장하는 메모리와, 상기 중앙 처리 장치에 연결된 인터페이스와, 그리고 상기 인터페이스에 연결된 코프로세서를 포함하는 데이터 프로세싱 시스템을 제공한다. 상기 코프로세서는 제 1 리스트 메모리를 포함한다. 소정 명령에 응답하여 상기 중앙 처리 장치는 상기 인터페이스를 통해 상기 코프로세서에 오퍼랜드를 제공한다. 상기 코프로세서는 상기 제 1 리스트 메모리에 상기 오퍼랜드를 저장하고, 그리고 상기 제 1 리스트 메모리로부터의 복수의 값들을 사용하여 상기 소정 명령에 대응하는 연산을 수행하여 결과를 제공한다.
또 다른 실시예로 본 발명은 데이터 프로세싱 시스템을 효율적으로 동작시키는 방법을 제공한다. 오퍼랜드가 제 1 명령에 응답하여 중앙 처리 장치의 레지스터에 로딩(loading) 된다. 상기 오퍼랜드는 제 2 명령에 응답하여 상기 레지스터로부터 인터페이스로 제공된다. 상기 오퍼랜드는 상기 제 2 명령에 응답하여 코프로세서의 제 1 리스트 메모리에 저장된다. 상기 제 2 명령에 대응하는 소정 연산이 상기 제 1 리스트 메모리로부터의 복수의 값들을 사용하여 상기 코프로세서에서 수행되어 결과를 제공한다.
본 발명의 개시는 첨부되는 도면을 참조함으로써 더 잘 이해될 수 있고, 그리고 본 발명의 기술분야에서 숙련된 기술을 갖는 자들에게는 그 수많은 특징 및 장점들이 명백하질 것이다. 도면에서 동일한 참조 번호는 유사한 아이템(item) 또는 동일한 아이템을 나타낸다.
도 1은 종래 기술에서 공지된 데이터 프로세싱 시스템을 블록도 형태로 도시한 것이다.
도 2는 본 발명에 따른 데이터 프로세싱 시스템을 블록도 형태로 도시한 것이다.
도 3은 도 2의 RISC 프로세서 코어를 블록도 형태로 도시한 것이다.
도 4는 도 3의 RISC 프로세서 코어에 의해 사용되는 코프로세서 명령 포맷(instruction format)을 블록도 형태로 도시한 것이다.
도 5는 도 2의 DSP 리스트 코프로세서를 블록도 형태로 도시한 것이다.
도 1은 종래 기술에서 공지된 데이터 프로세싱 시스템(100)을 블록도 형태로 도시한 것이다. 데이터 프로세싱 시스템(100)은 시스템(100)의 중앙 처리 장치(Central Processing Unit, CPU)를 형성하는 RISC(Reduced Instruction Set Computer) 마이크로프로세서(102)를 포함한다. RISC 마이크로프로세서(102)는 RAM(Random Access Memory)(104) 형태의 고속 휘발성 메모리와, 그리고 마스크 ROM(mask Read Only Memory), 플래시 EEPROM(FLASH Electrically Erasable Programmable Read-Only Memory, "FLASH"), 등의 형태일 수 있는 저속 비휘발성 메모리(NonVolatile Memory, NVM)(106)와 연결된다. 시스템(100)은 또한 도 1에 도시되지 않았지만 RISC 마이크로프로세서(102)에 직접 연결되거나 입력/출력 어댑터(input/output adaptors)를 통해 연결된 입력/출력 디바이스를 포함한다.
PDA, 셀룰러 전화기, 핸드헬드 비디오 게임 시스템, 등과 같은 핸드헬드 디바이스에 대해서 요구되는 특화된 프로세싱을 수행하기 위해, 시스템(100)은 데이터 및 프로그램 저장을 위해 각각 자기 자신의 RAM(112), 및 NVM(114)을 갖는 범용 디지털 신호 프로세서(DSP)(110)를 포함한다. RISC 마이크로프로세서(102)와 DSP(110) 사이에서 태스크 및 결과를 전달하기 위해, 시스템(100)은 공유 메모리(108)를 포함한다.
컴퓨터 시스템(100)이 저비용의 핸드헬드 디바이스에 대해 사용되는 경우에 몇 가지 결함이 있다. 첫 번째로, RISC 마이크로프로세서(102)와 DSP(11)는 개별적인 칩(chip)이고, 따라서 시스템 비용에 추가된다. 두 번째로, 각각의 프로세서는 자기 자신의 개별적인 메모리를 필요로 하고, 따라서 칩 수가 증가하여 시스템 비용을 높인다. 세 번째로, 각각의 프로세서는 자기 자신의 명령 세트를 가지기 때문에, 각각은 자기 자신의 개별적인 어셈블러(assembler), 컴파일러(compiler), 및 개발 툴(development tools)을 필요로 하고, 그로 인해 더 복잡해지고 상품화 시간(time-to-market)이 오래 걸린다.
도 2는 본 발명에 따른 데이터 프로세싱 시스템(200)을 블록도 형태로 도시한 것이다. 데이터 프로세싱 시스템(200)은 RISC 프로세서 코어(300)와, RAM(205) 및 NVM(206)을 포함하는 메모리(204)와, 그리고 특별한 DSP 리스트 코프로세서(500)를 포함한다. 앞서와 같이, NVM(206)은 마스크 ROM, 플래시 EEPROM, 등의 형태를 취할 수 있다. 예시적 실시예에서, RISC 프로세서 코어(300)와, 인터페이스(210)와, 그리고 DSP 리스트 코프로세서(500)는 단일 집적회로로 결합된다. 도 1에서의 RISC 프로세서 코어(102)와 달리, RISC 프로세서 코어(300)는 코프로세서들을 포함하는 다른 시스템 컴포넌트(system component)들과 통합되도록 구성된다. 따라서, RISC 프로세서 코어(300)는 사용자에 의해 정의된 코프로세서 명령들을 인 식할 수 있고, 인터페이스(210)를 통해 코프로세서에 이러한 특별한 명령들을 제공할 수 있는 특별한 능력을 포함한다. 예시된 실시예에서, RISC 프로세서 코어(300)는 캘리포니아 마운틴 뷰의 MIPS Technologies, Inc.로부터 입수가능한 4KES™ 프로세서 코어 패밀리와 호환되는 코어이지만, 유사한 기능을 갖고 있는 등가의 프로세서로 대체될 수 있다.
인터페이스(210)는 RISC 프로세서 코어(300)와 DSP 리스트 코프로세서(500) 간의 상호작용의 포인트(point)이다. 상호작용은 이러한 프로세서들 간에 데이터를 운반하고 그리고 이 인터페이스를 제어하기 위해 신호 라인(signal line)을 통해 이루어진다. 적절한 신호 라인이 아래에서 설명되지만 이것은 명백히 단지 예시적인 것이다. "명령"으로 명명된 32개의 신호 라인의 세트(212)는 RISC 프로세서 코어(202)의 명령 세트에서의 하나 이상의 명령에 대응한다. 4KES™ 코어의 경우, 이전에 보전된 일부 명령들은 이제 코프로세서와의 사용을 위해 제공된다. 사용자 정의 인터페이스(User-Defined Interface, UDI)로 언급되는 이러한 명령들은 UDI 명령으로 식별하는 명령 필드(instruction field)의 일부를 갖으며, 수행되는 명령의 타입을 식별하는 명령 필드의 또 다른 부분을 갖는다. RISC 프로세서 코어(300)는 DSP 리스트 코프로세서(500)로 전달되는 UDI 명령의 타입을 최소한도로 표시하기 위해 명령 필드를 사용한다. 따라서 명령 필드는 RISC 프로세서 코어 명령과 동일할 수 있지만, 명령을 식별하기에 충분한 수가 있다면 더 적은 비트 수를 포함할 수도 있다. 더욱이 명령 필드는 RISC 프로세서 코어(300)에 의해 인식된 명령과는 다른 방식으로 명령을 인코딩할 수 있다.
인터페이스(210)는 "rs"로 명명된 제 1 오퍼랜드를 전하기 위해 제 1 세트의 32 개 신호 라인을 사용하여 그리고 "rt"로 명명된 제 2 오퍼랜드를 전하기 위해 제 2 세트의 32 개 신호 라인을 사용하여 DSP 리스트 코프로세서(500)에 최대 두 개의 오퍼랜드를 전달한다. 신호 라인의 이러한 세트들 모두 또는 그 중 하나가 일부 UDI 명령에 대해서는 필요하지 않을 수 있다.
인터페이스(210)는 "rd"로 명명된 32 비트 결과 오퍼랜드를 운반하기 위해 신호 라인(218)의 세트를 포함하고, DSP 리스트 코프로세서(500)는 "rd"에 의해 명령의 결과를 RISC 프로세서 코어(300)에 리턴한다.
인터페이스(210)는 또한 인터페이스(210)의 동작을 제어하는 몇몇 제어 신호들(10)을 전하기 위한 "제어"(200)로 명명된 제어 버스를 포함한다.
RISC 프로세서 코어(300)와 DSP 리스트 코프로세서(500)는 SOC에서 다른 입력/출력 디바이스들(도 2에서는 도시되지 않음)과 함께 집적된다. RISC 프로세서 코어(300)는 UDI를 이용할 수 있어 그 파이프라인을 변경함이 없이 DSP 리스트 코프로세서(500)와 인터페이스할 수 있다.
시스템(200)은 DSP 리스트 코프로세서(500) 전용의 추가적 메모리 또는 RISC 프로세서 코어(300)와 DSP 리스트 코프로세서(500) 사이의 통신 메모리 중 어느 하나를 필요로 하지 않는 단지 단일 메모리 시스템(204)을 포함한다. 오퍼랜드 흐름은 다음과 같이 일어난다. RISC 프로세서 코어(300)는 먼저 이동 명령에 응답하여 데이터를 그 범용 레지스터들 중 하나로 이동시킨다. 이 데이터는 메모리(204)에 존재할 수 있거나, 또는 입력/출력 디바이스(도 2에서는 도시되지 않음)로부터 수 신된 것일 수 있다. 그 다음에 RISC 프로세서 코어(300)는 이 데이터를 DSP 리스트 코프로세서(500)로 이동시키는 UDI 명령을 실행한다. DSP 리스트 코프로세서(500)는 자신의 리스트 메모리를 포함하여 개별적 메모리 접근 없이도 다른 많은 타입의 DSP 태스크를 수행할 수 있게 한다. 추가로 많은 DSP 루틴(routines)의 순차적인 성질(sequential nature)로 인해, DSP 리스트 코프로세서(500)는 명령을 수신하는 것과 동시에 값들을 유지하고 업데이트 시키며, RISC 프로세서 코어(300)에 의해 최소의 오버헤드 및 간섭을 요구하고 추가적인 프로세싱 능력을 필요로 하지 않는다. DSP 리스트 코프로세서(500)는 그 결과를 rd 신호 라인(218)을 통해 리턴하고, 그리고 RISC 프로세서 코어(300)는 그 결과를 UDI 명령에 의해 정의된 rd 필드에 의해 표시된 레지스터에 저장한다.
추가적인 메모리 구조 없이 효율적인 DSP 프로세싱을 달성하기 위해, DSP 리스트 코프로세서(500)는 많은 DSP 및 관련 명령에 의해 요구된 데이터 값들의 리스트를 저장하는 내부 리스트 메모리를 포함한다. 어떤 UDI 명령을 만나는 경우, DSP 리스트 코프로세서(500)는 새로운 오퍼랜드 값을 리스트 메모리에 저장하고 그리고 이값과 리스트 메모리에 이미 존재하는 다른 값들을 사용하여 명령을 수행한다. 그러나 다른 실시예에서는 실제로 운반된 이값은 현재의 계산을 위해 사용되지 않고 이후의 사용을 위해 저장될 수 있다.
실제로 DSP 리스트 코프로세서(500)에 의해 수행되지 않을지라도, 이 기술은 다른 특별한 목적의 계산을 위해 사용될 수 있다. 예를 들어, 어떤 데이터 통신 태스크는 순환 잉여 검사(Cyclic Redundancy Check, CRC)의 형태로 프레임 점검 시퀀 스(frame check sequence)의 계산을 필요로 한다. 몇 가지 공지된 CRC 다항식이 있지만, 그들 모두는 수(number)를 얻기 위해 일련의 데이터 샘플들에 다항식을 적용하는 것이다. 이 리스트 메모리는 실행 CRC(running CRC)가 계산되는 데이터 샘플들의 이력(history)을 저장하기 위해 사용될 수 있다. 추가적으로 특정 CRC 발생기 다항식은 미리 설정될 수 있거나 또는 다른 명령들을 통해 사전에 프로그래밍될 수 있다. 마찬가지로, DSP 리스트 코프로세서(500)는 범용 다항식 계산(evaluation)의 일부로서 리스트 메모리를 효율적으로 사용하도록 변경될 수 있다.
도 3은 도 2의 RISC 프로세서 코어(300)를 블록도로 나타낸 것이다. 도 3은 본 발명을 이해하는 데 있어 중요한 RISC 프로세서 코어(300)의 세부사항들을 나타내고 있으며 다른 종래의 특징들은 생략되어 있다. RISC 프로세서 코어(300)는 범용 레지스터 파일(302)을 포함한다. 범용 레지스터 파일(302)은 "r0", "r1", "r2", 등에서 "r31"까지 연속적으로 명명된 32개의 레지스터들을 포함하고, 그 각각은 32 비트 폭을 갖는다. 추가적으로 RISC 프로세서 코어(300)는 사용자 정의 인터페이스의 동작을 인에이블(enable)시키거나 디스에이블(disable)시키기 위해 사용되는 "UDI"로 명명된 비트(306)를 갖는 구성 레지스터(304)를 포함한다. 레지스터 파일(302) 내의 레지스터와 UDI 비트(306) 모두는 실행 유닛(execution unit)(308)에 접근가능하고, 이 실행 유닛은 소프트웨어 프로그램에 따라 명령 목록(instruction repertoire) 내의 명령들을 실행한다.
한 클래스(class)의 명령들은 UDI 명령들의 세트이다. UDI 명령을 수신하는 것에 응답하여, UDI 명령이 UDI 비트(306)에 의해 인에이블되는 경우, 실행 유 닛(308)은 이 명령을 표시하는 필드 및 오퍼랜드로서 요구된 레지스터 값들을 UDI 인터페이스 제어기(310)로 운반한다. UDI 인터페이스 제어기(310)는 그 다음으로 UDI 인터페이스(210)를 통해 RISC 프로세서 코어(300)와 DSP 리스트 코프로세서(500) 사이의 값들의 교환을 제어한다.
UDI 비트(306)에 의해 인에이블되는 경우, 실행 유닛(308)은 도 4에 도시된 바와 같이 UDI 명령을 디코딩하고 실행하며, 여기서 도 4는 도 3의 RISC 프로세서 코어(300)에 의해 사용된 코프로세서 명령(400)의 포맷을 도시한다. 명령(400)은 다양한 비트 길이의 7개의 필드(402, 404, 406, 408, 410, 412, 및 414)를 갖는 32 비트 명령이다. 비트 3-0은 "세트 코드(SET CODE)" 필드로 알려진 필드(402)를 포함한다. 이 세트 코드 필드는, ALU 연산, MAC 연산, 리스트 연산(아래에서 더 자세히 설명됨), 이동 연산(move to and from operations), 및 확장된 ALU 연산을 포함하는, UDI 명령의 메인 타입(main type)을 식별한다.
비트 5와 4는 "블록(BLOCK)" 필드로 알려진 필드(404)를 포함한다. 블록 필드(404)는 언제나 DSP 리스트 코프로세서(500)에 대해서 01로 설정된다.
비트 10-6은 "서브세트 코드(SUBSET CODE)" 필드로 알려진 필드(406)를 포함한다. 서브세트 코드 필드(406)는 DSP 리스트 코프로세서(500)에 의해 인식되는 특별한 연산 코드(operation codes, opcodes)를 정의하고, 그리고 세트 코드 필드(402)의 값에 근거하여 다른 의미를 갖는다.
대부분의 세트 코드 값들에 대한 명령들은 DSP 리스트 코프로세서(500)가 종래의 데이터 프로세싱 연산을 수행하게 한다. 그러나, DSP 리스트 코프로세서(500) 는 리스트 연산으로 알려진 특별한 명령 세트를 수행할 수 있고, 그럼으로써 많은 DSP 연산의 순차적 성질을 이용할 수 있다. 따라서, 세트 코드 필드(402)가 리스트 연산을 표시하는 경우, 서브세트 필드(406)는 표 Ⅰ에서 볼 수 있는 바와 같은 인코딩을 갖는다.
[표 Ⅰ]
서브세트 코드 니모닉( Mnemonic ) 설명
00000 MFXH_COMPLEX 32 비트로 패킹된 부호를 갖는 복소수(32-bit packed signed complex number)(두 개의 실수 16 비트 하프 워드(real 16-bit half words))를 X 헤드로부터 제거 그리고 길이 XLENGTH의 파이프라인 내적(pipelined dot product) 시작. 이전의 X 헤드를 리턴 (40 비트 c9b31 누적)
00001 MFXH_COMPLEX_CX X-리스트가 내적 전에 공액화된다.
00010 MFXH_COMPLEX_CXY X와 Y가 논리적으로 공액화된다.
00011 MTYH_COMPLEX 32 비트로 패킹된 부호를 갖는 복소수를 Y 헤드 상에 놓기 그리고 40 비트 c9b31 누적으로 길이 XLENGTH/2의 파이프라인 내적을 시작 (ETSI는 복소수 수학을 사용하지 않고, 그래서 MAC들은 모두 c9b31이다)
00100 MTYH_COMPLEX_CX X-리스트가 내적 전에 공액화된다.
00101 MTYH_COMPLEX_CXY X와 Y가 논리적으로 공액화된다.
00110 MFXH_REAL 하나의 실수 int16을 X 리스트 헤드로부터 제거 그리고 파이프라인 실수 내적 시작.
00111 MFXH_REAL32 하나의 실수 int16을 X 리스트 헤드로부터 제거 그리고 1b31(32-비트) 누적 및 ovf/sat 테스팅(ETSI 컴플라이언트(ETSI compliant))으로 파이프라인 실수 내적 시작.
01000 MTYH_REAL 하나의 실수 int16을 Y 리스트 헤드 상에 놓기 그리고 하나의 결과로 파이프라인 실수 내적 시작, 곱셈이 병렬로 진행 (XLENGTH는 홀수일 수 있음)
01001 MTYH_REAL32 하나의 실수 int16을 Y 리스트 헤드 상에 놓기 그리고 파이프라인 실수 1b31 ETSI-스펙(ETSI-spec) 내적 시작
01010 MFXH1 X의 헤드로부터 짧은 데이터를 이동, *rd 내의 콜러(caller)에 리턴, XLENGTH 감소.
01011 MFXH2 X의 헤드로부터 데이터 쌍을 이동, XLENGTH 두 개 감소시킴, 이전의 XHEAD 데이터 쌍을 *rd 내의 콜러에 리턴.
01100 MFYH1 Y의 헤드로부터 짧은 (16-비트) 데이터 구성요소를 이동, 이전의 YHEAD에서의 데이터를 *rd 내의 콜러에 리턴.
01101 MFYH2 Y의 헤드로부터 리스트데이터 (패킹된 2×16) 데이터를 이동, 이전의 YHEAD에서의 데이터를 *rd 내의 콜러에 리턴.
01110 MTXT1 X의 테일(tail) 상으로 int16 값을 로딩.
01111 MTXT2 X의 테일 상으로 패킹된 2×16을 로딩 (하나의 복소수 또는 2 개의 실수를 나타냄), 이 함수는 X-리스트 컨텍스트(context)를 복원하기 위해 사용되고, 그래서 쌍들은 효율성을 위해 언제나 로딩된다.
서브세트 코드 니모닉( Mnemonic ) 설명
10000 MTYH1 Y의 헤드에 int16 값 놓기, 어떠한 리스트 무결성 점검(list integrity checking)도 수행되지 않는다.
10001 MTYH2 Y의 헤드에 데이터 쌍 놓기, 어떠한 리스트 무결성 점검도 수행되지 않는다.
표 Ⅱ는 리스트 명령 동안 RISC 프로세서 코어(300)와 DSP 리스트 코프로세서(500) 사이에서 전달되는 오퍼랜드를 보여준다.
[표 Ⅱ]
서브세트 코드 니모닉 Rs Rt Rd 싸이클
00000 MFXH_COMPLEX X X N/A 다수(multiple)
00001 MFXH_COMPLEX_CX X X N/A 다수
00010 MFXH_COMPLEX_CXY X X N/A 다수
00011 MTYH_COMPLEX 오퍼랜드 X N/A 다수
00100 MTYH_COMPLEX_CX 오퍼랜드 X N/A 다수
00101 MTYH_COMPLEX_CXY 오퍼랜드 X N/A 다수
00110 MFXH_REAL X X 결과(Result) 다수
00111 MFXH_REAL32 X X 결과 다수
01000 MTYH_REAL 오퍼랜드 X N/A 다수
01001 MTYH_REAL32 오퍼랜드 X N/A 다수
01010 MFXH1 X X 결과 1
01011 MFXH2 X X 결과 1
01100 MFYH1 X X 결과 1
01101 MFYH2 X X 결과 1
01110 MTXT1 오퍼랜드 X N/A 1
01111 MTXT2 오퍼랜드 X N/A 1
10000 MTYH1 오퍼랜드 X N/A 1
10001 MTYH2 오퍼랜드 X N/A 1
여기서 "X"는 무정의(don't care)를 나타내고, 그리고 "다수(multiple)"는 싸이클의 수가 X 메모리(524) 및/또는 Y 메모리(522) 내의 리스트(즉 리스트의 길이)에서의 구성요소의 개수에 따라 다르다는 것을 표시한다.
비트 31-36은 블록 필드가 또한 값 01을 갖는 경우 명령이 DSP 리스트 코프로세서(500)에 대해 의도된 UDI 명령임을 표시하는 소위 "스페셜 2(SPECIAL 2)"를표시하는 바이너리 값 "011100"을 갖는 명령 타입 필드(414)를 형성한다.
남아있는 비트 필드들은 오퍼랜드 레지스터 지시자를 포함하고, 그 각각은 32개의 범용 레지스터들 중 하나를 선택할 수 있도록 긴 5 비트이다. 비트 25-21은 "rs"로 명명된 제 1 소스 오퍼랜드 식별자 필드(412)를 포함한다. 비트 20-16은 "rt"로 명명된 제 2 소스 오퍼랜드 식별자 필드(410)를 포함한다. 비트 15-11은 "rd"로 명명된 목적지 오퍼랜드 식별자 필드(408)를 포함한다. 이러한 필드들이 사용될지 여부는 명령 타입에 따라 다르다.
도 5는 도 2의 DSP 리스트 코프로세서(500)를 블록도로 나타낸 것이다. DSP 리스트 코프로세서(500)는 일반적으로 제어 및 시퀀싱 로직 유닛(control and sequencing logic)(510), 리스트 메모리(520), 및 산술 로직 유닛(Arithmetic Logic Unit, ALU)(530)을 포함한다. 제어 및 시퀀싱 로직(510)은 UDI 인터페이스(210)를 관리하고, 그리고 명령 필드에 의해 표시된 명령들을 디코딩한다. 또한 리스트 메모리(520)로의 포인터(pointer)들을 유지한다. 이러한 포인터들은 "Y" 메모리(522)와 "X" 메모리(524) 각각에 대해 헤드 포인터(head pointer) 및 테일 포인터(tail pointer) 모두를 포함한다. 따라서, 제어 및 시퀀싱 로직(510)은 "YH"로 명명된 Y 헤드 포인터와, "YT"로 명명된 Y 테일 포인터와, "XH"로 명명된 X 헤드 포인터와, 그리고 "XT"로 명명된 X 테일 포인터를 출력한다. 아래에서 더 설명되는 바와 같이, 헤드 및 테일 포인터들은 값들의 순차적 리스트의 시작 및 종료 어드레스를 정의한다. 제어 및 시퀀싱 로직(510)은 또한 "어드레스A"로 명명된 Y 메모리(522) 내의 리스트로의 인덱싱(indexing)을 위한 어드레스와, "어드레스B"로 명명된 X 메모리(524) 내의 리스트로의 인덱싱을 위한 어드레스와, "데이터Y"로 명명된 Y 메모리 내에 저장된 데이터 값과, 그리고 "데이터X"로 명명된 X 메모리 내에 저장된 데이터 값을 출력한다.
리스트 메모리(520)는 Y 메모리(522)와 X 메모리(524) 모두를 포함하고, 그 각각은 16 비트 값을 저장한다. 하나의 특히 유용한 DSP 연산, 유한 임펄스 응답(Finite Impulse Response, FIR) 필터 계산을 수행하기 위해, X 메모리(524) 내의 값들은 이 필터의 계수에 대응하고, 그리고 Y 메모리(522) 내의 값들은 데이터 샘플에 대응한다.
ALU(530)는 레지스터들(532 및 534), 멀티플렉서(MUltipleXer, MUX)(540), 곱셈 및 누산(Multiply-and-ACumulate, MAC) 유닛들(542 및 544), 픽스-업 로직(fix-up logic)(546)을 포함한다. 레지스터(532)는 Y 메모리(522)의 출력에 연결되고, 그리고 Y 메모리(522)로부터 출력된 16 비트 워드 데이터의 상위 바이트 및 하위 바이트를 각각 저장하기 위한 "A" 부분과 "B" 부분 모두를 갖는다. 마찬가지로 레지스터(534)는 X 메모리(524)의 출력에 연결되고, 그리고 X 메모리(524)로부터 출력된 16 비트 워드 데이터의 상위 바이트 및 하위 바이트를 각각 저장하기 위한 "C" 부분과 "D" 부분 모두를 갖는다. MUX(540)는 A, B, C, 및 D 레지스터의 출력에 연결된 입력과 네 개의 출력을 갖는다. MUX(540)는 아래에서 더 자세히 서명되는 바와 같이 패킹된 산술 연산을 수행하는데 유용한 풀(full) 4×4 MUX이다. MAC(542)은 MUX(540)의 제 1 및 제 2 출력 단자에 연결된 제 1 및 제 2 입력 단자와 40 비트 출력 단자를 갖는다. MAC(544)은 MUX(540)의 제 3 및 제 4 출력 단자에 연결된 제 1 및 제 2 입력 단자와 40 비트 출력 단자를 갖는다. 아래에서 더 자세히 설명되는 바와 같이, MAC(542 및 544) 각각은 두 개의 잘 알려진 신호 프로세싱 타입에 대한 서로 다른 포화 조건(saturation assumptions)을 수용하기 위한 선택가능한 포화 모드를 갖는다.
ALU(530)는 MAC(542)의 출력 단자에 연결된 제 1 입력 단자와, MAC(544)의 출력 단자에 연결된 제 2 입력 단자와, rd 값을 제공하기 위해 인터페이스(210)에 연결된 출력 단자를 갖는 픽스-업 로직(546) 회로(546)를 포함한다. 특히, 픽스-업 로직(546)은 "ACC0"로 명명된 하위 16 비트 부분(548)과 "ACC1"으로 명명된 상위 16 비트 부분(550)을 갖는 누산기(accumulator)를 포함한다. 누산기 부분(548 및 550)은 개별적인 부분으로 도시되어 있다. 왜냐하면 패킹된 연산을 수행하는 경우 그들은 개별적인 결과를 저장하기 때문이다. 그러나 풀 32 비트 연산을 수행하는 경우, 이 결과의 하위 부분은 누산기(548)에 저장되고 그리고 상위 부분은 누산기(550)에 저장된다. 픽스-업 회로(546)는 명령에 의해 정의되는 정규화(normalization), 스케일링(scaling), 라운딩(rounding), 및 포화를 수행한다.
이제 도 4와 도 5를 함께 고려하며, 데이터 프로세싱 시스템(200)이 효율적인 신호 처리 루틴의 일부로서 사용될 수 있는 몇몇 코프로세서 명령을 실행하는 것이 명백해진다. 제 1 명령은 소위 내적형(dot product type)의 명령이다. 내적 명령은 제 1 리스트에서의 값들 각각을 제 2 리스트에서의 대응하는 값들과 곱하고 이들을 더한다. 따라서, 예를 들어 DSP 리스트 코프로세서(500)는, RISC 프로세서 코어(300)의 연산에 대한 방해를 최소화하면서 효율적으로 FIR 필터 계산을 수행할 수 있다. RISC 프로세서 코어(300) 상에서 실행되는 코드는 명령 예를 들어 MTYH_REAL32 명령을 실행하는데, 이 명령은 새로운 데이터 샘플을 Y 메모리(522)에 유지된 리스트에 운반하고, 그리고 내적 연산(dot product operation)을 시작한다. DSP 리스트 코프로세서(500)는 먼저 헤드 포인터(YH)를 증가시키고 이 데이터 샘플을 거기에 저장시킴으로써 데이터 샘플을 이 리스트에 더하고, 테일 포인터(YT)를 증가시킴으로써 가장 오래된 데이터 샘플을 제거한다. 그 다음에 어드레스 포인터들(어드레스A 및 어드레스B)을 각각 사용하여 X 메모리(524)로부터의 계수와 데이터 메모리(522)로부터의 대응하는 데이터 샘플을 판독하고, 그리고 레지스터(532 및 534) 각각에 이들을 저장한다. MUX(540)는 오퍼랜드를 MAC 유닛들(542 및 544) 중의 하나로 라우팅(routing) 시키고, 여기서 곱셈이 일어난다. 이 시퀀스는 길이(LENGTH)에 도달할 때까지, 리스트 내의 남아 있는 계수 및 데이터 값들을 통해 계속된다. 그 다음에 이 결과는 적당한 라운딩 및 포화를 위해 픽스-업 로직(546)에 제공된다. DSP 리스트 코프로세서(500) 내의 리스트 메모리를 유지시킴으로써, 데이터 프로세서(200)는 RISC 프로세서 코어(300)와 DSP 리스트 코프로세서(500)가 손쉽게 통합할 수 있게 하고 외부 메모리 접근이 거의 필요하지않는 방식으로 이루어지도록 한다. 더욱이, 리스트에 추가될 새로운 오퍼랜드의 전달과 새로운 계산의 연산의 시작은 동시에 시작할 수 있다.
시스템(200)의 중요한 특징은 DSP 리스트 코프로세서(500)가 내적 계산(dot product calculation)을 시작하도록 하는 MTYH_REAL32와 같은 하나의 명령, 그리고 결과를 검색하고 범용 레지스터에 이것을 저장하도록 하는 MFXH1과 같은 또 다른 명령에 응답할 수 있다는 것이다. 따라서, DSP 리스트 코프로세서(500)가 긴 내적 계산을 실행하는 동안, 소프트웨어 컴파일러는 RISC 마이크로프로세서 코어(300)가 유용한 작업을 계속 하도록 할 수 있다. 시작 명령(MTYH_REAL32)은 파이프라인을 멈추게 할 수 없고, 반면에 종료 명령(MFXH1)은 만약 결과가 아직 준비되지 않았으면 파이프라인을 종료시킬 수 있다. 따라서 효율적인 컴파일러가 두 가지 명령 모두를 사용할 수 있어 코프로세서 대기(coprocessor latency)와 관계되는 싸이클의 낭비를 피할 수 있다.
또 다른 중요한 특징은 DSP 리스트 코프로세서(500)가 두 개의 개별적 MAC들을 포함하여 그 각각이 선택적으로 서로 다른 라운딩 및 포화 조건을 수용한다는 것이다. 이들 중 하나는 ETSI(European Telecommunication Standards Institute) 연산으로 알려진 32 비트 포화 모드이다. 32 비트 포화 모드에서, DSP 리스트 코프로세서(500)는 부분적 결과를 32 비트로 포화시킬 수 있다. 또 다른 모드는 40 비트 포화 모드이다. 40 비트 포화 모드에서, DSP 리스트 코프로세서(500)는 부분적 결과를 40 비트 누산기 내에 누적시킬 수 있고, 그리고 단지 계산의 끝에서 최종 합계를 32 비트로 포화시킬 수 있다. 이러한 두 가지 기술은 때로는 다른 결과를 제공하고, 그리고 DSP 리스트 코프로세서(500)는 이 두 가지 알고리즘 각각에 대해 비트 정확도(bit accuracy)를 유지한다. 다른 실시예에서, DSP 리스트 코프로세서(500)의 추가적 선택가능 라운딩 및 포화 모드가 또한 지원될 수 있다. 이러한 선택가능 모드는 반드시 선형이지 않아도 되는 광범위한 수학적 표현을 지원하고, 이것은 그래픽 변환, 이미지 프로세싱 및 암호문과 같은 애플리케이션에 있어서 유용하다.
또 다른 중요한 특징은 소위 직렬 MAC 모드이다. 많은 DSP 알고리즘에서, 하 나의 MAC 명령 뒤에 바로 다른 MAC 명령이 온다. 이러한 상황에서, MAC 결과를 32 비트로 포화시키는 것은 바람직하지 않고, 오히려 제 1 MAC 명령의 포화되지 않은 40 비트 결과를 제 2 명령의 포화되지 않은 40 비트 결과와 결합시키는 것이 바람직할 수 있다. DSP 리스트 코프로세서(500)는 이중 곱셈 및 누산(Dual Multiply ACcumulate, DMAC) 명령을 사용하여 효율적으로 이런 연산 타입을 제공한다. 픽스-업 로직(546)은 결과를 32비트로 포화시키기 전에 MAC 유닛(542 및 544)으로부터의 두 개의 40 비트 결과를 함께 결합한다.
두 개의 MAC을 갖음으로써 DSP 리스트 코프로세서(500)가 효율적으로 패킹된 연산을 수행할 수 있게 할 수 있다. 예를 들어 오퍼랜드는 두 개의 16 비트 오퍼랜드 또는 네 개의 8 비트 오퍼랜드로 취급될 수 있다. 이 두 개의 MAC은 두 개의 독립적 곱셈이 동시에 진행하도록 할 수 있다.
더욱이 DSP 리스트 코프로세서(500)는 또한 특별한 리스트 및 패킹된 산술 연산과 함께 유용한 오퍼랜드 이동 명령 및 표준 ALU를 포함하는 명령들의 완전한 보수(full complement)를 포함한다. 리스트의 길이를 설정하기 위해, 길이 레지스터로 이동(Move To Length register, MTL) 명령이 rd 신호 라인 상의 값을 내부 길이 레지스터로 이동시키기 위해 사용될 수 있다.
따라서, 본 명세서에서 설명된 데이터 프로세서는 효율적인 신호 처리를 수행한다. 이 데이터 프로세서는 공지된 데이터 프로세서들보다 뛰어난 많은 장점을 제공한다. 첫 번째로 단일의 큰 메모리 풀(memory pool), 큰 범용 레지스터 세트, 범용 명령, RISC의 하버드 아키텍처(Harvard architecture) 및 제어 흐름에서의 메모리 관리를 포함하는, 범용 RISC 프로세서의 능력을 강화시킨다.
두 번째로, DSP 연산을 위한 전용 회로를 갖는 특별한 목적의 코프로세서를 포함함으로써, 데이터 프로세서는 더 적은 전력을 소모하면서 더 효율적으로 DSP 기능을 수행한다.
세 번째로, 특별한 엔진 페치(engine fetches), 저장(stores), 충돌(conflicts), 예측(exceptions), 등을 필요로 하지 않음으로써, DSP 리스트 코프로세서는 RISC 파이프라인을 중단시키지 않는다.
네 번째로, 다른 크기의 두 개의 대안적인 MAC 유닛을 제공함으로써, 데이터 프로세서는 프로그래머가 ETSI-표준 계산이 사용되든지 또는 AMD-형 계산이 사용되든 지에 상관없이 DSP 알고리즘의 비트 정확도를 유지할 수 있게 한다.
다섯 번째로, 데이터 프로세서는 RISC 프로세서 코어에 대해 존재하는 상다히 진보된 컴파일러 기술을 강화하여, 어셈블리 또는 C-언어 코드로서 인-라인(in-line)으로 포함될 수 있는 낮은 레벨의 매크로(low level macros) 및 높은 레벨의 매크로를 제공한다.
여섯 번째로, DSP 리스트 코프로세서는 DSP 연산에서 종종 사용되는 오퍼랜드를 저장하기 위해 상대적으로 작은 로컬 리스트 메모리(local list memory)를 포함한다. 데이터 프로세서는 상대적으로 높은 파워 비용으로 메인 메모리로부터 한번 이러한 오퍼랜드를 가져올 수 있고, 그리고 다음으로 상대적으로 낮은 파워 비용으로 DSP 리스트 코프로세서 내에서 반복적으로 이들을 사용할 수 있다.
일곱 번째로, 긴 DSP 연산에 대해 이용가능한 시작 명령 및 종료 명령 모두 를 만듦으로써, 데이터 프로세서는 CPU의 파이프라인이 DSP 리스트 코프로세서 파이프라인과 병렬로 계속 동작하도록 할 수 있고, 만약 결과가 아직 이용가능하지 않다면 단지 더 이후에 CPU의 파이프라인을 스톨링(stalling)시킬 수 있다
여덟 번째로, DSP 리스트 코프로세서는 가변 ALU(scalable ALU)를 갖는다. 예시된 실시예에서 DSP 리스트 코프로세서는 두 개의 MAC 유닛을 포함하지만, 서로 다른 설계 상충관계(design tradeoff)를 만족시키기 위해 MAC 유닛의 수는 단지 한 개로 감소될 수 있거나 여러 개, 예를 들어 네 개로 증가될 수 있다.
아홉 번째로, 데이터 프로세서는 FIR 필터 및 컨벌루션(convolution)과 같은 DSP 연산에 대해 특히 효율적인 리스트 기반의 메모리 아키텍처를 사용한다. 이 아키텍쳐는 내부 리스트 메모리를 상당량 재사용하고 메인 메모리로부터의 새로운 데이터 로딩을 줄여주어, 결과적으로 전력을 절약할 수 있고 효율적인 프로세싱을 가능하게 한다.
열 번째로, DSP 리스트 코프로세서는 서로 다른 오퍼랜드 길이 및 포맷을 지원하여, 유용한 DSP 계산이 효율적으로 수행될 수 있게 한다. 따라서, 예를 들어 DSP 리스트 코프로세서는 단일 실수 내적, 두 개의 병렬 내적, 또는 단일 복소수 내적 계산을 할 수 있다.
열한 번째로, 데이터 프로세서는 패킹된 연산을 편리하게 지원한다. 따라서 데이터 프로세서는 기존의 32 비트 레지스터 인터페이스를 이용하여 DSP 리스트 코프로세서가 두 개의 16 비트 크기의 DSP 변수(두 개의 실수 또는 하나의 복소수 중 어느 하나)를 DSP 리스트 코프로세서의 리스트 메모리로 동시에 로딩할 수 있게 한 다.
열두 번째로, 데이터 프로세서의 아키텍처는 리스트 메모리 구성을 통해 컨텍스트 스위칭(context switching)을 쉽게 지원한다. 따라서 이 아키텍처는 하드웨어에서의 다수의 컨텍스트들을 지원하도록 확장될 수 있어 컨텍스트 스위칭과 관련된 정상 오버헤드를 피할 수 있다.
열세 번째로, 데이터 프로세서는, 유용한 기능을 수행하도록 DSP 리스트 코프로세서에 의해 실행가능한 풍부한 명령 세트를 제공함으로서, 프로세싱 시간과 전력 소모의 관점에서 RISC 프로세서 코어의 전체 성능을 보다 최적화킨다. 이러한 기능의 예는 특정 범위 안에서 어드레스를 랩핑(wrapping)하는 것을 포함하고, 그리고 DSP 리스트 코프로세서 내의 리스트 안으로 내부적으로 로딩된 입력 어레이로부터의 자동상관 어레이(autocorrelation array)를 계산하는 것을 포함한다. 본 발명의 기술분야에서 통상의 기술을 갖는 자들에 대해서, 다른 많은 유용한 기능들이 상기 설정된 명령들의 설명으로부터 명백하게 될 것이다.
적어도 하나의 예시적 실시예가 앞서의 상세한 설명에서 제공되었지만, 여러 가지 변형이 있을 수 있다는 것이 이해되어야 한다. 또한 이해해야 할 것으로, 상기 예시적 실시예 또는 예시적 실시예들은 단지 예를 든 것이며, 본 발명의 범위, 응용 가능성, 또는 구성을 한정하려는 것이 아니다. 오히려, 앞서의 상세한 설명은 본 발명의 기술분야에서 숙련된 기술을 가진자들에게 이러한 예시적인 실시예 또는 예시적인 실시예들을 구현함에 있어 편리한 길잡이 역할을 할 것이다. 첨부되는 특허청구범위에서 설명된 본 발명 및 그 법적 등가물의 범위로부터 벗어나지 않으면 서, 그 구성요소들의 기능 및 구성에서의 다양한 변경이 이루어질 수 있다는 것을 이해해야 할 것이다.

Claims (10)

  1. 프로세서 코어(300)와;
    상기 프로세서 코어(300)에 연결된 인터페이스(210)와; 그리고
    상기 인터페이스(210)를 통해 상기 프로세서 코어(300)에 연결된 코프로세서(500)를 포함하여 구성되며, 상기 코프로세서(500)는 제 1 리스트 메모리(522)를 포함하고,
    여기서, 상기 프로세서 코어(300)가 소정 명령(400)에 응답하여 상기 인터페이스(210)를 통해 상기 코프로세서(500)에 오퍼랜드를 제공하고,
    상기 코프로세서(500)가 상기 제 1 리스트 메모리(522)에 상기 오퍼랜드를 저장하고, 그리고 상기 제 1 리스트 메모리(522)로부터의 복수의 값들을 사용하여 상기 소정 명령(400)에 대응하는 연산을 수행하고 그 결과를 제공하는 것을 특징으로 하는 데이터 프로세서(200).
  2. 제 1 항에 있어서,
    상기 코프로세서(500)는 제 2 리스트 메모리(524)를 더 포함하고, 상기 제 2 리스트 메모리(524)로부터의 복수의 값들을 사용하여 상기 소정 명령에 대응하는 상기 연산을 더 수행하고 상기 결과를 제공하는 것을 특징으로 하는 데이터 프로세서(200).
  3. 제 2 항에 있어서,
    상기 제 1 리스트 메모리(522)로부터의 상기 복수의 값들은 샘플링된 데이터 값들을 포함하고, 상기 제 2 리스트 메모리(524)로부터의 상기 복수의 값들은 복수의 필터 계수들을 포함하고, 그리고 상기 소정 명령에 대응하는 상기 연산은 유한 임펄스 응답(Finite Impulse Response, FIR) 필터 출력 계산을 포함하는 것을 특징으로 하는 데이터 프로세서(200).
  4. 제 1 항에 있어서,
    상기 코프로세서(500)는 제 1 곱셈 및 누산(MAC) 유닛(542)을 포함하는 것을 특징으로 하는 데이터 프로세서(200).
  5. 제 4 항에 있어서,
    상기 코프로세서(500)는 제 2 MAC 유닛(544)을 더 포함하고, 그리고 여기서 상기 제 1 MAC 유닛(542) 및 상기 제 2 MAC 유닛(544) 각각은 선택가능 포화 모드를 가지는 것을 특징으로 하는 데이터 프로세서(200).
  6. 프로세서 코어(300)와;
    상기 프로세서 코어(300)에 연결된 인터페이스(210)와; 그리고
    상기 인터페이스(210)를 통해 상기 프로세서 코어(300)에 연결된 코프로세서(500)를 포함하여 구성되며,
    여기서, 상기 프로세서 코어(300)가 제 1 소정 명령에 응답하여 상기 인터페이스(210)를 통해 상기 코프로세서(500)에 명령 및 오퍼랜드 값을 제공하고, 그리고 상기 코프로세서(500)가 상기 제 1 소정 명령에 따라 제 1 소정 연산을 개시하고;
    상기 코프로세서(500)가 제 2 소정 명령에 응답하여 상기 제 1 소정 연산 완료시 상기 인터페이스(210)에 결과를 제공하는 것을 특징으로 하는 데이터 프로세서(200).
  7. 제 6 항에 있어서,
    상기 제 1 소정 명령은 유한 임펄스 응답(FIR) 필터 시작 명령을 포함하고, 그리고 상기 제 2 소정 명령은 FIR 필터 정지 명령을 포함하는 것을 특징으로 하는 데이터 프로세서(200).
  8. 제 7 항에 있어서,
    상기 FIR 필터 시작 명령에 응답하여 상기 프로세서 코어(300)는 명령들을 계속 실행하고, 그리고 상기 FIR 필터 정지 명령에 응답하여 상기 프로세서 코어(300)는 상기 코프로세서(500)가 상기 소정 연산이 완료되었다는 신호를 보낼 때까지 후속 명령 프로세싱을 멈추는 것을 특징으로 하는 데이터 프로세서(200).
  9. 데이터 프로세싱 시스템(200)을 효율적으로 동작시키는 방법에 있어서,
    제 1 명령에 응답하여 중앙 처리 장치(300)의 레지스터에 오퍼랜드를 로딩하는 단계와;
    제 2 명령(400)에 응답하여 상기 레지스터로부터 인터페이스(210)로 상기 오퍼랜드를 제공하는 단계와;
    상기 제 2 명령(400)에 응답하여 상기 인터페이스(210)에 연결된 코프로세서(500)의 제 1 리스트 메모리(522)에 상기 오퍼랜드를 저장하는 단계와; 그리고
    상기 코프로세서(500)에서, 상기 제 1 리스트 메모리(522)로부터의 복수의 값들을 사용하여 상기 제 2 명령에 대응하는 소정 연산을 수행하고 그 결과를 제공하는 단계를 포함하는 데이터 프로세싱 시스템(200)을 효율적으로 동작시키는 방법.
  10. 제 9 항에 있어서,
    상기 소정 연산을 수행하는 단계는 상기 코프로세서(500)의 상기 제 1 리스트 메모리(522)로부터의 상기 복수의 값들 및 제 2 리스트 메모리(524)로부터의 복수의 값들을 사용하여 상기 소정 연산을 수행하는 단계를 포함하는 것을 특징으로 하는 데이터 프로세싱 시스템(200)을 효율적으로 동작시키는 방법.
KR1020077018335A 2005-02-09 2006-01-17 효율적인 디지털 신호 프로세싱을 위한 데이터 프로세서 및그 방법 KR20070105328A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/054,220 US20060179273A1 (en) 2005-02-09 2005-02-09 Data processor adapted for efficient digital signal processing and method therefor
US11/054,220 2005-02-09

Publications (1)

Publication Number Publication Date
KR20070105328A true KR20070105328A (ko) 2007-10-30

Family

ID=36593622

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077018335A KR20070105328A (ko) 2005-02-09 2006-01-17 효율적인 디지털 신호 프로세싱을 위한 데이터 프로세서 및그 방법

Country Status (8)

Country Link
US (1) US20060179273A1 (ko)
JP (1) JP2008530689A (ko)
KR (1) KR20070105328A (ko)
CN (1) CN101116053A (ko)
DE (1) DE112006000340T5 (ko)
GB (1) GB2437684B (ko)
TW (1) TW200636571A (ko)
WO (1) WO2006086122A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519488B2 (en) 2011-07-25 2016-12-13 Samsung Electronics Co., Ltd. External intrinsic interface

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7586904B2 (en) * 2004-07-15 2009-09-08 Broadcom Corp. Method and system for a gigabit Ethernet IP telephone chip with no DSP core, which uses a RISC core with instruction extensions to support voice processing
US7490223B2 (en) * 2005-10-31 2009-02-10 Sun Microsystems, Inc. Dynamic resource allocation among master processors that require service from a coprocessor
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US7865808B2 (en) 2007-05-09 2011-01-04 Harris Corporation Fast error detection system and related methods
CN101521960B (zh) * 2009-02-11 2013-12-11 北京中星微电子有限公司 一种基带和协处理器间的通信方法、装置及系统
US8495343B2 (en) * 2009-09-09 2013-07-23 Via Technologies, Inc. Apparatus and method for detection and correction of denormal speculative floating point operand
JP5445147B2 (ja) 2010-01-07 2014-03-19 富士通株式会社 リスト構造制御回路
CN101777037B (zh) * 2010-02-03 2013-05-08 中兴通讯股份有限公司 一种查找引擎实时系统内数据传输的方法和系统
CN107832083B (zh) * 2011-04-07 2020-06-12 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法
TWI478065B (zh) * 2011-04-07 2015-03-21 Via Tech Inc 執行模式備份暫存器之模擬
CN102262608A (zh) * 2011-07-28 2011-11-30 中国人民解放军国防科学技术大学 基于处理器核的协处理器读写操作控制方法及装置
CN102523374B (zh) * 2011-12-19 2014-02-19 北京理工大学 一种实时并行的电子稳像系统设计方法
US9760371B2 (en) 2011-12-22 2017-09-12 Intel Corporation Packed data operation mask register arithmetic combination processors, methods, systems, and instructions
US9582287B2 (en) 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US9785444B2 (en) 2013-08-16 2017-10-10 Analog Devices Global Hardware accelerator configuration by a translation of configuration data
US11449452B2 (en) * 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
ES2929626T3 (es) 2015-05-21 2022-11-30 Goldman Sachs & Co Llc Arquitectura de computación paralela de propósito general
EP3286762A4 (en) 2016-02-25 2018-04-18 Hewlett-Packard Enterprise Development LP Performing complex multiply-accumulate operations
WO2019005132A1 (en) * 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES
US11334319B2 (en) 2017-06-30 2022-05-17 Intel Corporation Apparatus and method for multiplication and accumulation of complex values
US10884953B2 (en) 2017-08-31 2021-01-05 Hewlett Packard Enterprise Development Lp Capability enforcement processors
CN110489356B (zh) * 2019-08-06 2022-02-22 上海商汤智能科技有限公司 信息处理方法、装置、电子设备及存储介质
TWI719786B (zh) * 2019-12-30 2021-02-21 財團法人工業技術研究院 資料處理系統與方法
CN111158756B (zh) * 2019-12-31 2021-06-29 百度在线网络技术(北京)有限公司 用于处理信息的方法和装置
CN111400986B (zh) * 2020-02-19 2024-03-19 西安智多晶微电子有限公司 一种集成电路计算设备及计算处理系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4897779A (en) * 1988-07-20 1990-01-30 Digital Equipment Corporation Method and apparatus for optimizing inter-processor instruction transfers
EP0843254A3 (en) * 1990-01-18 1999-08-18 National Semiconductor Corporation Integrated digital signal processor/general purpose CPU with shared internal memory
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
TW439380B (en) * 1995-10-09 2001-06-07 Hitachi Ltd Terminal apparatus
US5909463A (en) * 1996-11-04 1999-06-01 Motorola, Inc. Single-chip software configurable transceiver for asymmetric communication system
US6530014B2 (en) * 1997-09-08 2003-03-04 Agere Systems Inc. Near-orthogonal dual-MAC instruction set architecture with minimal encoding bits
US6189094B1 (en) * 1998-05-27 2001-02-13 Arm Limited Recirculating register file
EP1080421B1 (en) * 1998-05-27 2002-05-22 ARM Limited Recirculating register file
US6754804B1 (en) * 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US8090928B2 (en) * 2002-06-28 2012-01-03 Intellectual Ventures I Llc Methods and apparatus for processing scalar and vector instructions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519488B2 (en) 2011-07-25 2016-12-13 Samsung Electronics Co., Ltd. External intrinsic interface
US10102005B2 (en) 2011-07-25 2018-10-16 Samsung Electronics Co., Ltd. External intrinsic interface

Also Published As

Publication number Publication date
DE112006000340T5 (de) 2007-12-27
CN101116053A (zh) 2008-01-30
GB0716020D0 (en) 2007-09-26
TW200636571A (en) 2006-10-16
WO2006086122A1 (en) 2006-08-17
GB2437684A (en) 2007-10-31
JP2008530689A (ja) 2008-08-07
US20060179273A1 (en) 2006-08-10
GB2437684B (en) 2009-08-05

Similar Documents

Publication Publication Date Title
KR20070105328A (ko) 효율적인 디지털 신호 프로세싱을 위한 데이터 프로세서 및그 방법
EP3513281B1 (en) Vector multiply-add instruction
US6711602B1 (en) Data processor with flexible multiply unit
US7473293B2 (en) Processor for executing instructions containing either single operation or packed plurality of operations dependent upon instruction status indicator
EP1102163A2 (en) Microprocessor with improved instruction set architecture
US20120191767A1 (en) Circuit which Performs Split Precision, Signed/Unsigned, Fixed and Floating Point, Real and Complex Multiplication
KR100705507B1 (ko) 확장가능한 프로세서 아키텍처에 진보된 명령어들을부가하는 방법 및 장치
JP2007533006A (ja) 複合命令形式および複合オペレーション形式を有するプロセッサ
US20120191766A1 (en) Multiplication of Complex Numbers Represented in Floating Point
KR19980069845A (ko) 데이터 처리장치
US7111155B1 (en) Digital signal processor computation core with input operand selection from operand bus for dual operations
KR19980041758A (ko) 축소 데이타 경로 폭을 갖는 2-비트 부스 곱셈기
US6889320B1 (en) Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter
EP1102165A1 (en) Microprocessor with execution packet spanning two or more fetch packets
US7107302B1 (en) Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
EP1102161A2 (en) Data processor with flexible multiply unit
US6820189B1 (en) Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6859872B1 (en) Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
US7039790B1 (en) Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit
JP2001504956A (ja) データ処理システム・レジスタ制御
US6484194B1 (en) Low cost multiplier block with chain capability
US20190369961A1 (en) Methods and instructions for a 32-bit arithmetic support using 16-bit multiply and 32-bit addition
JP2000039995A (ja) 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル
EP0992888B1 (en) Method and apparatus for iterative instruction execution
EP0992891A1 (en) A processor

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E601 Decision to refuse application