KR20070037568A - 듀얼 데이터 경로 프로세싱 장치 및 방법 - Google Patents

듀얼 데이터 경로 프로세싱 장치 및 방법 Download PDF

Info

Publication number
KR20070037568A
KR20070037568A KR1020067020243A KR20067020243A KR20070037568A KR 20070037568 A KR20070037568 A KR 20070037568A KR 1020067020243 A KR1020067020243 A KR 1020067020243A KR 20067020243 A KR20067020243 A KR 20067020243A KR 20070037568 A KR20070037568 A KR 20070037568A
Authority
KR
South Korea
Prior art keywords
configurable
operators
data processing
data
computer processor
Prior art date
Application number
KR1020067020243A
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 KR20070037568A publication Critical patent/KR20070037568A/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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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, 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Abstract

제어 및 데이터 프로세싱 성능들을 갖는 컴퓨터 프로세서가, 명령들을 디코딩하는 디코드 유닛을 포함한다. 데이터 프로세싱 설비가 고정 연산자들을 포함하는 제 1 데이터 실행 경로 및 적어도 구성가능 연산자들을 포함하는 제 2 데이터 실행 경로를 포함하는데, 상기 구성가능 연산자들은 복수의 소정의 구성들을 구비하며, 구성들의 적어도 일부는 데이터 프로세싱 명령의 오피코드 부분에 의해 선택가능하다. 상기 디코드 유닛은 데이터 프로세싱 명령이 고정 데이터 프로세싱 연산 또는 구성가능 데이터 프로세싱 연산을 정의하는지를 검출하도록 동작가능하며, 상기 디코드 유닛은 프로세싱을 위한 데이터를 고정 데이터 프로세싱 명령이 검출되는 때에 상기 제 1 데이터 실행 경로에, 구성가능 데이터 프로세싱 명령이 검출되는 때에 상기 구성가능 데이터 실행 경로에 제공하게 한다.
제어 실행, 데이터 실행, 연산자, 디코드, 컴퓨터 프로세서.

Description

듀얼 데이터 경로 프로세싱 장치 및 방법{APPARATUS AND METHOD FOR DUAL DATA PATH PROCESSING}
본 발명은 컴퓨터 프로세서, 컴퓨터 프로세서 동작 방법, 및 컴퓨터를 위한 명령 세트를 포함하는 컴퓨터 프로그램 물(product)에 관한 것이다.
컴퓨터 프로세서들의 속도를 증가시키기 위해, 종래기술 아키텍처들은 명령들을 실행하는 듀얼 실행 경로들을 사용하였다. 듀얼 실행 경로 프로세서들은 프로세서 속도를 증가시키는 연산들의 병행성(parallelism)을 사용하여 단일 명령 복수 데이터(SIMD) 원리에 따라 동작할 수 있다.
그러나, 듀얼 실행 경로들 및 SIMD 프로세싱의 사용에 불구하고, 프로세서 속도를 증가시킬 필요가 계속적으로 존재한다. 전형적인 듀얼 실행 경로 프로세서들은 2개의 대체적으로 동일한 채널들을 사용하며, 각 채널은 제어 코드 및 데이터경로 코드 모두를 핸들링한다. 공지의 프로세서들이 32비트 표준 엔코딩 및 16비트 "고밀도(dense)" 엔코딩을 지원하지만, 이러한 구성들은 16비트 포맷에서 이용가능한 수(few) 비트들에서의 시맨틱 콘텐츠(semantic contents) 결여를 포함하는 여러 단점들을 갖게 된다.
더욱이, 종래 범용 디지털 신호 처리기들은 컨볼루션(convolution), 고속 퓨 리에 변환들, Trellis/Viterbi 엔코딩, 상관관계(correlation), 유한 임펄스 응답 필터링 및 다른 연산들과 같은 특수 연산들의 수행을 포함하는 많은 목적들에 대해 어플리케이션 특정 알고리즘들과 부합되지 않는다.
본 발명에 따른 일 실시예에서, 제어 및 데이터 프로세싱 성능들을 갖는 컴퓨터 프로세서가 제공된다. 상기 컴퓨터 프로세서는 명령들을 디코딩하는 디코드 유닛과; 그리고 고정 연산자들을 포함하는 제 1 데이터 실행 경로 및 적어도 구성가능 연산자들을 포함하는 제 2 데이터 실행 경로를 포함하는 데이터 프로세싱 설비를 포함하며, 상기 구성가능 연산자들은 복수의 소정의 구성들을 구비하며, 구성들의 적어도 일부는 데이터 프로세싱 명령의 오피코드 부분(opcode portion)에 의해 선택가능하며, 여기서 상기 디코드 유닛은 데이터 프로세싱 명령이 고정 데이터 프로세싱 연산 또는 구성가능 데이터 프로세싱 연산을 정의하는지를 검출하도록 동작가능하며, 상기 디코드 유닛은 프로세싱을 위한 데이터를 상기 컴퓨터 시스템이 고정 데이터 프로세싱 명령이 검출되는 때에 상기 제 1 데이터 실행 경로에, 구성가능 데이터 프로세싱 명령이 검출되는 때에 상기 구성가능 데이터 실행 경로에 제공하게 한다.
추가적인 관련 실시예들에서, 상기 디코드 유닛은 메모리로부터의 명령 패킷들의 스트림을 디코딩할 수 있는데, 각 패킷은 복수의 명령들을 포함한다. 또한, 상기 디코드 유닛은 명령 패킷이 데이터 프로세싱 명령을 포함하는지를 검출하도록 동작가능하다. 상기 구성가능 연산자들은 다중비트 값들- 이는 4개 이상의 비트들을 포함하는 다중비트 값들을 포함한다 -의 레벨에서 또는 워드들(words)의 레벨에서 구성가능하다. 상기 제 1 데이터 실행 경로의 복수의 고정 연산자들은 단일 명령 복수 데이터 원리들에 따라 독립적인 레인들(lanes)에서 복수의 고정 연산들을 수행할 수 있다. 또한, 상기 제 2 데이터 실행 경로의 복수의 구성가능 연산자들은 단일 명령 복수 데이터 원리들에 따라 서로다른 레인들에서 복수의 연산들을 수행할 수 있다.
다른 관련 실시예들에서, 상기 제 2 실행 경로의 구성가능 연산자들은 수행된 연산들의 특성을 결정하는 구성 정보를 수신할 수 있다. 이 정보는 구성가능 데이터 프로세싱 연산을 정의하는 명령 필드로부터 수신될 수 있다. 상기 제 2 실행 경로의 구성가능 연산자들은 상대적인 상호연결성(relative interconnectivity)을 제어하는 정보를 포함하는 구성 정보를 수신할 수 있다. 상기 컴퓨터 프로세서는 상기 제 2 데이터 실행 경로의 구성가능 연산자들과 관련된 제어 맵(control map)을 더 포함할 수 있으며, 상기 제어 맵은 구성가능 데이터 프로세싱 명령으로부터 적어도 하나의 구성 비트를 수신함과 아울러 구성 정보를 이에 응답하는 상기 구성가능 연산자들에 제공하도록 동작가능하다. 상기 구성 정보는 상기 구성가능 연산자들에 의해 수행되는 연산들의 특성을 결정함과 아울러 2개 이상의 상기 구성가능 연산자들간의 상호연결성을 제어할 수 있다.
추가적인 관련 실시예들에서, 상기 제 2 실행 경로의 구성가능 연산자들은 수행될 연산의 특성을 결정하는 구성 정보 또는 구성가능 데이터 프로세싱 명령 이외의 소스(source)로부터의 상호연결성을 제어하는 구성 정보를 수신할 수 있다. 상기 제 2 데이터 실행 경로의 적어도 하나의 구성가능 연산자는 결과들을 결과 저장소에 복귀하기 이전에 2개의 계산들보다 큰 실행 깊이(execution depth)로 데이터 프로세싱 명령들을 실행할 수 있다. 상기 컴퓨터 프로세서는 또한 구성가능 데이터 프로세싱 명령으로부터 데이터 프로세싱 피연산자들(operands)을 수신함과 아울러 이들을 하나 이상의 상기 구성가능 연산자들에 제공하는데 적절한 것으로 스위칭하는 스위칭 메커니즘을 포함할 수 있다. 또한, 상기 컴퓨터 프로세서는 하나 이상의 상기 구성가능 연산자들로부터 결과들을 수신함과 아울러 이들을 하나 이상의 결과 저장소 및 피드백 루프에 제공하는데 적절한 것으로 스위칭하는 스위칭 메커니즘을 포함할 수 있다. 또한, 상기 컴퓨터 프로세서는 구성가능 데이터 프로세싱 명령들로부터 수신된 구성 비트들을 상기 제 2 데이터 실행 경로의 구성가능 연산자들에 제공하기 위한 구성 정보와 맵핑하는 복수의 제어 맵들을 포함할 수 있다. 또한, 상기 컴퓨터 프로세서는 제어 맵으로부터 구성 정보를 수신함과 아울러 이를 상기 제 2 데이터 실행 경로의 구성가능 연산자들에 제공하는데 적절한 것으로 스위칭하는 스위칭 메커니즘을 포함할 수 있다. 또한, 상기 컴퓨터 프로세서는 곱셈 누산 연산자들; 산술 연산자들; 상태 연산자들; 크로스-레인 변경기들(cross-lane permuters)로부터 선택되는 구성가능 연산자들을 포함할 수 있다. 또한, 상기 컴퓨터 프로세서는 고속 퓨리에 변환들; 인버스 고속 퓨리에 변환들; Viterbi 엔코딩/디코딩; Turbo 엔코딩/디코딩; 그리고 유한 임펄스 응답 계산들; 그리고 임의의 다른 상관관계들 또는 컨볼루션들로부터 선택되는 하나 이상의 연산들을 수행할 수 있는 명령 세트 및 연산자들을 포함할 수 있다.
본 발명의 다른 실시예에서, 제어 및 데이터 프로세싱 성능들을 갖는 컴퓨터 프로세서를 동작하는 방법이 제공되는데, 상기 컴퓨터 프로세서는 고정 연산자들을 포함하는 제 1 데이터 실행 경로 및 구성가능 연산자들을 포함하는 제 2 데이터 실행 경로를 포함하며, 상기 구성가능 연산자들은 복수의 소정의 구성들을 구비하며, 구성들 중 적어도 일부는 데이터 프로세싱 명령의 오피코드 부분에 의해 선택가능하다. 상기 방법은 상기 복수의 명령들 중 적어도 하나의 데이터 프로세싱 명령이 고정 데이터 프로세싱 연산 또는 구성가능 데이터 프로세싱 연산을 정의하는지를 검출하기 위해 복수의 명령들을 디코딩하는 단계와; 상기 컴퓨터 프로세서가 프로세싱을 위한 데이터를 고정 데이터 프로세싱 명령이 검출되는 때에 상기 제 1 데이터 실행 경로에, 구성가능 데이터 프로세싱 명령이 검출되는 때에 상기 구성가능 데이터 실행 경로에 제공하게 하는 단계와; 그리고 결과들을 출력하는 단계를 포함한다.
본 발명에 따른 다른 실시예에서, 컴퓨터 프로세서- 상기 컴퓨터 프로세서는 고정 연산자들을 포함하는 제 1 데이터 실행 경로 및 구성가능 연산자들을 포함하는 제 2 데이터 실행 경로를 포함하며, 상기 구성가능 연산자들은 복수의 소정의 구성들을 구비하며, 구성들 중 적어도 일부는 데이터 프로세싱 명령의 오피코드 부분에 의해 선택가능하다 -가 상기 복수의 명령들 중 적어도 하나의 데이터 프로세싱 명령이 고정 데이터 프로세싱 연산 또는 구성가능 데이터 프로세싱 연산을 정의하는지를 검출하기 위해 복수의 명령들을 디코딩하게 하며, 상기 컴퓨터 프로세서가 프로세싱을 위한 데이터를 고정 데이터 프로세싱 명령이 검출되는 때에 상기 제 1 데이터 실행 경로에, 구성가능 데이터 프로세싱 명령이 검출되는 때에 상기 구성가능 데이터 실행 경로에 제공하게 하며, 그리고 결과들을 출력하는 프로그램 코드 수단을 포함하는 컴퓨터 프로그램 물이 제공된다.
본 발명에 따른 추가적인 실시예에서, 고정 타입의 데이터 프로세싱 연산을 표시하는 필드를 갖는 제 1 복수의 명령들 및 구성가능 타입의 데이터 프로세싱 연산들을 표시하는 필드를 갖는 제 2 복수의 명령들을 포함하는 데이터 프로세싱 명령 세트가 제공된다.
본 발명에 따른 다른 실시예에서, 구성가능 연산자들을 포함하는 데이터 실행 경로를 갖는 컴퓨터 프로세서가 제공되는데, 여기서 상기 구성가능 연산자들은 복수의 소정의 그룹의 연산자 구성들을 포함하며, 각 그룹은 개별 연산자 클래스로부터의 연산자들을 포함한다. 상기 연산자 클래스들은 곱셈 누산 연산자들; 산술 연산자들; 상태 연산자들; 및 변경기들 중 하나 이상으로부터 선택되는 클래스들을 포함할 수 있다. 각 소정의 그룹들의 연산자 구성들 내로부터 선택되는 연산자들간의 연결들이 상기 컴퓨터 프로세서에 의해 실행되는 명령 내의 오피코드 부분에 의해 구성될 수 있다. 또한, 상기 소정의 그룹들의 연산자 구성들 중 하나 이상으로부터 선택되는 연산자들간의 연결들은 상기 컴퓨터 프로세서에 의해 실행되는 명령 내의 오피코드 부분에 의해 구성될 수 있다.
본 발명의 추가적인 이점들 및 신규한 특징들은 부분적으로 하기의 상세한 설명에서 제시될 것이며, 하기 내용 및 첨부 도면들의 검토하에서 부분적으로 기술분야의 당업자들에게 자명하게 될 것이며, 또는 본 발명의 실시에 의해 알게 될 수 있다.
본 발명을 더 잘 이해하기 위하여, 그리고 본 발명이 어떻게 수행되는지를 보여주기 위하여, 단지 예로써 첨부 도면들에 대한 참조가 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 비대칭 듀얼 실행 경로 컴퓨터 프로세서의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 도 1의 프로세서에 대한 예시적 명령 클래스들을 도시한다.
도 3은 본 발명의 일 실시예에 따른 구성가능 딥(deep) 실행 유닛의 구성요소들을 개략적으로 도시한다.
도 1은 본 발명의 일 실시예에 따른 비대칭 듀얼 경로 컴퓨터 프로세서의 블록도이다. 도 1의 프로세서는 단일 명령 스트림(100)의 프로세싱을 2개의 서로다른 하드웨어 실행 경로들로 나뉘는데, 이는 제어 코드 프로세싱에 전용인 제어 실행 경로(102)와 데이터 코드 프로세싱에 전용인 데이터 실행 경로(103)이다. 2개의 실행 경로들(102, 103)의 데이터 폭들, 연산자들, 및 다른 특성들은 제어 코드 및 데이터경로 코드의 서로다른 특성들에 따라 다르다. 전형적으로, 제어 코드는 보다 적은, 보다 좁은 레지스터들에 유리하기에 병행화하기 어려우므로 (배타적이지 않은) 전형적으로 C 코드 또는 다른 하이-레벨 언어로 기록되며, 그 코드 밀도는 일반적으로 속도 성능보다 중요하다. 대조적으로, 데이터경로 코드는 전형적으로 큰 파일의 폭넓은 레지스터들에 유리하기에 쉽게 병행화되므로 어셈블리 언어로 기록되며, 그 성능은 코드 밀도보다 중요하다. 도 1의 프로세서에서, 2개의 서로다른 실행 경로들(102 및 103)은 2개의 서로다른 타입들의 코드를 핸들링하는데 전용이며, 각 측은 레지스터의 폭과 수에 의해 차별화되는 제어 레지스터 파일(104)과 데이터 레지스터 파일(105)과 같은 자신의 아키텍처 레지스터 파일을 갖는데, 제어 레지스터들은 비트들 수(일 예에서, 32비트들)에 의해 보다 좁은 폭을 가지며, 데이터 레지스터들은 보다 넓은 폭(일 예에서, 64비트들)을 갖는다. 따라서, 프로세서는 2개의 실행 경로들 각각이 서로다른, 특수화된 기능들을 수행하기 때문에 서로다른 비트-폭들을 갖게 되므로 비대칭이다.
도 1의 프로세서에서, 명령 스트림(100)은 일련의 명령 패킷들로 구성된다. 제공된 각 명령 패킷은 명령 디코드 유닛(101)에 의해 디코딩되는데, 디코드 유닛은 하기에서 설명될 바와같이 제어 명령들을 데이터 명령들로부터 분리시킨다. 제어 실행 경로(102)는 명령 스트림에 대한 제어-흐름 연산들을 핸들링하며, 브랜치 유닛(106), 실행 유닛(107), 및 본 실시예에서 데이터 실행 경로(103)에 공유되는 로드 저장 유닛(108)을 사용하여 머신의 상태 레지스터들을 관리한다. 프로세서의 제어측만이 C, C++, 또는 자바 언어에 대한 컴파일러 또는 다른 하이-레벨 언어 컴파일러와 같은 컴파일러에 보여질 필요가 있다. 제어측 내에서, 브랜치 유닛(106) 및 실행 유닛(107)의 동작은 기술분야의 당업자에게 공지된 종래 프로세서 설계에 따른다.
데이터 실행 경로(103)는 고정 실행 유닛(109) 및 구성가능 딥(deep) 실행 유닛(110) 모두에서 SIMD(단일 명령 복수 데이터) 병렬성을 이용한다. 하기에서 설명될 바와같이, 구성가능 딥 실행 유닛(110)은 종래 SIMD 프로세서들에 의해 사용되는 폭 차원에 추가하여 명령 당 작업을 증가시키기 위해 프로세싱의 깊이 차원을 제공한다.
만일 디코딩된 명령이 제어 명령을 정의하는 경우에, 이는 머신의 제어 실행 경로상의 적절한 기능성 유닛(예를 들어, 브랜치 유닛(106), 실행 유닛(107) 및 로드/저장 유닛(108))에 인가된다. 만일 디코딩된 명령이 고정 또는 구성가능 데이터 프로세싱 연산을 갖은 명령을 정의하는 경우에, 이는 데이터 프로세싱 실행 경로에 제공된다. 명령 패킷의 데이터 명령 부분 내에서 지정된 비트들이 명령이 고정 또는 구성가능 데이터 프로세싱 명령인지를 표시하며, 구성가능 명령의 경우에서 추가적으로 지정된 비트들이 구성 정보를 정의한다. 디코딩된 데이터 프로세싱 명령의 서브-타입에 의존하여, 데이터가 머신의 데이터 프로세싱 경로의 고정 또는 구성가능 실행 서브-경로들에 제공된다.
본원에서, "구성가능(configurable)"은 복수의 소정의("유사-정적인(pseudo-static)") 연산자 구성들로부터 연산자 구성을 선택하는 능력을 나타낸다. 연산자의 유사-정적인 구성이 연산자가 (ⅰ)일정 타입의 연산을 수행하게 하거나, (ⅱ)일정한 방식으로 관련 요소들과 상호연결되게 하거나 (ⅲ)상기 (ⅰ)과 (ⅱ)의 조합을 가능하게 하는데 효율적이다. 실제상, 선택된 유사-정적인 구성이 한 번에 많은 연산자 요소들의 특성 및 상호연결성을 결정할 수 있다. 이는 또한 데이터 경로와 관련된 스위칭 구성들을 제어할 수 있다. 바람직한 실시예에서, 복수의 유사-정적인 연산자 구성들의 적어도 일부는 하기에서 설명될 바와같이 데이터 프로세싱 명령의 연산 코드 부분에 의해 선택가능하다. 또한, 본원의 실시예들에 따라, "구성가능 명령"이 다중비트 값들의 레벨에서, 예를 들어 4개 이상의 비트 다중비트 값들의 레벨에서, 또는 워드들의 레벨에서 적합화된(customized) 연산들의 성능을 허용한다.
머신의 각 서로다른 측들에서 수행되는 제어 및 데이터 프로세싱 명령들 모두가 메모리 액세스(로드/저장) 및 기본 산술 연산들을 정의할 수 있음이 지적된다. 제어 연산들을 위한 입력들/피연산자들이 제어 레지스터 파일(104)로/파일(104)로부터 제공될 수 있는 반면에, 데이터 프로세싱 연산들을 위한 데이터/피연산자들이 레지스터 파일(105)로/파일(105)로부터 제공된다.
본 발명의 일 실시예에 따라, 각 데이터 프로세싱 연산의 적어도 하나의 입력이 벡터가 될 수 있다. 이러한 관점에서, 구성가능 데이터 경로의 스위칭 회로 및/또는 구성가능 연산자들이 수행 연산 특성 및/또는 이들간의 상호연결성에 의해 벡터 연산들을 수행하도록 구성가능으로 간주될 수 있다. 예를 들어, 데이터 프로세싱 연산에 대한 64비트 벡터 입력이 4개의 16비트 스칼라 피연산자들을 포함할 수 있다. 본원에서, "벡터"는 스칼라 피연산자들의 조합이다. 벡터 산술이 복수의 스칼라 피연산자들 상에서 수행될 수 있으며, 스칼라 요소들의 스티어링(steering), 이동 및 변경들을 포함할 수 있다. 벡터 연산의 모든 피연산자들이 벡터일 필요가 없는데, 예를 들어 벡터 연산이 입력들로서 스칼라 및 적어도 하나의 벡터 모두를 가질 수 있으며, 출력으로서 스칼라 또는 벡터 결과를 가질 수 있 다.
본원에서, "제어 명령들"은 프로그램 흐름, 브랜치 및 어드레스 생성에 전용인 명령들을 포함하지만, 데이터 프로세싱은 포함되지 않는다. "데이터 프로세싱 명령들"은 적어도 하나의 입력이 벡터인 논리 연산들 또는 산술 연산들을 위한 명령들을 포함한다. 데이터 프로세싱 명령들은 복수 데이터 명령들상에서, 예를 들어 SIMD 프로세싱에서 또는 데이터 요소들의 보다 넓은, 짧은 벡터들의 프로세싱에서 동작할 수 있다. 언급된 제어 명령 및 데이터 명령들의 필수적인 기능들은 중첩되지 않는다. 그러나, 2개의 코드 타입들이 논리 및 스칼라 성능들을 갖는다는 공통점이 있다.
도 2는 도 1의 프로세서를 위한 3개 타입의 명령 패킷을 도시한다. 각 타입의 명령 패킷은 64비트 길이이다. 명령 패킷(211)은 밀도 제어 코드를 위한 3개의 스칼라 타입이며, 3개의 21비트 제어 명령들(c21)을 포함한다. 명령 패킷들(212 및 213)은 데이터경로 코드의 병행 실행을 위한 LIW(긴 명령 워드) 타입이다. 본 예에서, 각 명령 패킷(212, 213)은 2개의 명령들을 포함하지만, 원하는 경우에 서로다른 수들이 포함될 수 있다. 명령 패킷(212)은 34비트 데이터 명령(d34) 및 28비트 메모리 명령(m28)을 포함하며, 이는 데이터-측 로드-저장 동작(m28 명령)으로 데이터-측 산술(d34 명령)의 병행 실행에 사용된다. 메모리-클래스 명령들(m28)은 제어 측으로부터의 어드레스를 사용하여 프로세서의 제어 측 또는 데이터 측으로부터 판독되거나 이들에 기입될 수 있다. 명령 패킷(213)은 34비트 데이터 명령(d34) 및 21비트 제어 명령(c21)을 포함하며, 이는 제어-측 산술, 브랜치 또는 로드-저장 동 작과 같은 제어-측 동작(c21 명령)으로 데이터-측 산술(d34 명령)의 병행 실행에 사용된다.
도 1의 실시예의 명령 디코드 유닛(101)은 무슨 타입의 패킷이 디코딩되는지를 결정하기 위해 각 명령 패킷의 소정의 비트 위치들에서 초기 식별 비트들 또는 다른 지정된 식별 비트들을 사용한다. 예를 들어, 도 2에서 도시된 바와같이, 초기 비트 "1"은 명령 패킷이 3개의 제어 명령들을 갖는 스칼라 제어 명령 타입임을 나타내는 동안에, 초기 비트들 "0 1" 및 "0 0"은 패킷(212)에서 데이터 및 메모리 명령 또는 패킷(213)에서 데이터 및 메모리 명령을 갖는 타입(212 및 213)의 명령 패킷들을 나타낸다. 각 명령 패킷의 초기 비트들을 디코딩한 이후에, 도 1의 디코드 유닛(101)은 명령 패킷 타입에 따라 각 패킷의 명령들을 적절하게 제어 실행 경로(102) 또는 데이터 실행 경로(103)에 전달한다.
도 2의 명령 패킷들을 실행하기 위해, 도 1의 실시예의 프로세서의 명령 디코드 유닛(101)은 순차적으로 메모리로부터 프로그램 패킷들을 페치하며, 프로그램 패킷들은 순차적으로 실행된다. 명령 패킷 내에서, 패킷(211)의 명령은 순차적으로 실행되는데, 64비트 워드의 최하위 단에서의 21비트 제어 명령이 먼저 실행되며, 이후에 후속 21비트 제어 명령, 이후에 최상위 단에서의 21비트 제어 명령이 실행된다. 명령 패킷들(212 및 213) 내에서, (비록 본 발명에 따른 실시예들에서 반드시 필요한 것은 아니지만) 명령들은 동시적으로 실행될 수 있다. 따라서, 도 1의 실시예의 프로세서의 프로그램 순서에서, 프로그램 패킷들은 순차적으로 실행되지만, 패킷 내의 명령들은 패킷 타입(211)에 대해 순차적으로, 또는 패킷 타입들(212 및 213)에 대해 동시적으로 실행될 수 있다. 하기에서, 타입들(212 및 213)의 명령 패킷들은 MD 및 CD-패킷들 각각으로서(일 메모리 및 일 데이터 명령; 그리고 일 제어 명령 및 일 데이터 명령 각각을 포함함) 약칭된다.
21비트 제어 명령들을 사용함에 있어서, 도 1의 실시예는 다른 길이들의 명령들을 갖는 프로세서들, 특히 데이터 명령들을 위한 32비트 표준 엔코딩 및 제어 코드를 위한 16비트 "고밀도" 엔코딩의 조합을 지원하는 프로세서들에서 발견된 복수의 단점들을 극복한다. 이러한 듀얼 16/32비트 프로세서들에서, 브랜치, 페치 어드레스 또는 다른 수단에 의한 엔코딩 방식들간의 스위칭 수단을 갖는 2개의 개별 디코더들의 사용 또는 각 명령을 위한 듀얼 엔코딩들의 사용으로부터 발생하는 리던던시(redundancy)가 있게 된다. 이러한 리던던시는 본 발명의 일 실시예에 따라 모든 제어 명령들에 대해 단일 21비트 길이를 사용함으로써 제거된다. 더욱이, 21비트 제어 명령들의 사용은 16비트 "고밀도" 엔코딩 방식에서 불충분한 시맨틱 콘텐츠로부터 발생하는 단점들을 제거한다. 불충분한 시맨틱 콘텐츠 때문에, 16비트 방식을 사용하는 프로세서들은 전형적으로 복사들을 위해 대응하는 코드 팽창(bloat)을 갖는 2개-피연산자 파괴 동작들의 사용; 유출(spill)/충전을 위한 코드 팽창을 갖는 레지스터 파일의 서브세트에 대한 윈도우 액세스의 사용 또는 윈도우 포인터 조작; 또는 32비트 포맷으로의 빈번한 역전(frequent reversion)과 같은 설계 타협들의 일부 혼합을 요구하는데, 이는 모든 연산들이 16비트 포맷에서 매우 작은 이용가능한 오피코드 비트들에서 표현될 수 없기 때문이다. 이러한 단점들은 본 발명의 일 실시예에 따라 21비트 제어 명령들을 사용함으로써 완화된다.
매우 다양한 명령들이 본 발명의 일 실시예에 따라 사용될 수 있다. 예를 들어, 명령 부호들은 하기내용 중 하나가 될 수 있는데, 여기서 C-포맷, M-포맷, 및 D-포맷은 제어, 메모리 액세스, 및 데이터 포맷 각각을 나타낸다.
명령 부호 인수(argument) 사용자
instr 명령이 인수를 갖지 않는다 C-포맷 온리(only)
instr dst 명령이 하나의 목적 인수를 갖는다 C-포맷 온리
instr src0 명령이 하나의 소스 인수를 갖는다 C 및 D 포맷 온리
instr dst, src0 명령이 하나의 목적, 하나의 소스 인수를 갖는다 D 및 M 포맷 명령들
instr dst, src0, src1 명령이 하나의 목적 인수 및 2개의 소스 인수들을 갖는다 C, D 및 M 포맷 명령들
또한, 본 발명의 일 실시예에 따라, C-포맷 명령들 모두는 SISD(단일 명령 단일 데이터) 연산을 제공하는 반면에, M-포맷 및 D-포맷 명령들은 SISD 또는 SIMD 연산을 제공한다. 예를 들어, 제어 명령들은 일반적인 산술, 비교 및 논리 명령들; 제어 흐름 명령들; 메모리 로드들 및 저장 명령들; 및 다른 것들을 제공할 수 있다. 데이터 명령들은 일반적인 산술, 쉬프트, 논리 및 비교 명령들; 셔플(shuffle), 소트(sort), 바이트 확장, 및 변경 명령들; 선형 피드백 쉬프트 레지스터 명령들; 및 (하기에서 추가적으로 설명될) 구성가능 딥 실행 유닛(110)을 통한 사용자-정의 명령들을 제공할 수 있다. 메모리 명령들은 메모리 로드 및 저장 명령; 선택된 데이터 레지스터들을 제어 레지스터들에 복사; 방송된 제어 레지스터들을 데이터 레지스터들에 복사; 레지스터로의 즉시 명령들을 제공할 수 있다.
본 발명의 일 실시예에 따라, 도 1의 프로세서는 제 1의, 고정 데이터 실행 경로 및 제 2 구성가능 데이터 실행 경로를 특징으로 한다. 제 1 데이터 경로는 종래 SIMD 프로세싱 설계들과 유사한 방식으로 레인들로 분리된 고정 SIMD 실행 유닛을 갖는다. 제 2 데이터 경로는 구성가능 딥 실행 유닛(110)을 갖는다. "딥 실행(deep execution)"은 결과를 레지스터 파일에 복귀시키기 이전에 프로세서가 단일 발행 명려에 의해 제공된 데이터에 관해 복수의 연속적인 연산들을 수행하는 능력을 가리킨다. 딥 실행의 일 예는 종래 MAC 연산(곱셈 및 누산)에서 발견되는데, 여기서, 종래 MAC 연산은 단일 명령으로부터의 데이터에 관해 2개의 연산들(곱셈 및 덧셈)을 수행하며, 따라서 2개 차수의 깊이(depth)를 갖는다. 딥 실행은 또한 결과 출력 개수와 일치하는 피연산자 입력 개수, 또는 등가적으로, 밸런시-인(valency-in)과 일치하는 밸런시-아웃(valency-out)으로 특징될 수 있다. 따라서, 예를 들어 하나의 결과를 갖는 종래 2개-피연산자 덧셈이 바람직한 딥 실행의 예가 아닌데, 이는 피연산자들 개수가 결과들의 개수와 일치하지 않기 때문이다. 반면에, 컨볼루션, 고속 퓨리에 변환들, Trellis/Viterbi 엔코딩, 상관기들, 유한 임펄스 응답 필터들, 및 다른 신호 처리 알고리즘들이 딥 실행의 예들이다. 어플리케이션-특정 디지털 신호 처리(DSP) 알고리즘이 전형적으로 비트 레벨에서 메모리-맵핑 방식으로 딥 실행을 수행한다. 그러나, 종래 레지스터-맵핑 범용 DSP는 딥 실행을 수행하지 않으며, 대신에 MAC 연산에서 기껏해야 2개 차수의 깊이에서 명령들을 실행한다. 대조적으로, 도 1의 프로세서는 2개보다 큰 차수들에서 동적으로 구성가능 워드-레벨 명령들을 딥 실행할 수 있는 레지스터-맵핑 범용 프로세서를 제공한다. 도 1의 프로세서에서, 딥 실행 명령의 특성(수행될 수학적 함수의 그래프)은 명령 자체의 구성 정보에 의해 조정/적합화 될 수 있다. 바람직한 실시예에서, 포맷 명령들은 구성 정보에 할당된 비트 위치들을 포함한다. 이러한 성능을 제공하기 위해, 딥 실행 유닛(110)은 구성가능 실행 자원들을 갖는데, 이는 각 어플리케이션을 적합화하기 위해 연산자 모드들, 상호연결들 및 상수들이 업로딩 될 수 있음을 의미한다. 딥 실행은 실행의 병행성에 깊이 차원을 추가하는데, 이는 SIMD 및 LIW 프로세싱의 이전의 개념들에 의해 제공된 폭 차원과 직교한다. 따라서, 이는 범용 프로세서의 작업당 명령을 증가시키는 추가적인 차원을 나타낸다.
도 3은 본 발명의 일 실시예에 따라 구성가능 딥 실행 유닛(310)의 구성요소들을 도시한다. 도 1에서 도시된 바와같이, 구성가능 딥 실행 유닛(110)은 데이터 실행 경로(103)의 일부이며, 이에 따라 도 2의 MD 및 CD-명령 패킷들(212 및 213)으로부터의 데이터-측 명령들에 의해 지시될 수 있다. 도 3에서, 명령(314) 및 피연산자들(315)은 도 1의 명령 디코드 유닛(101)과 데이터 레지스터 파일(105)로부터 딥 실행 유닛(310)에 제공된다. 디코딩된 명령(314)의 다중-비트 구성 코드가 제어 맵(316)에 액세스하는데 사용되며, 제어 맵은 딥 실행 유닛의 연산자들을 구성하기 위해 다중-비트 코드를 비교적 복잡한 세트의 구성 신호들로 확장시킨다. 제어 맵(316)은 예를 들어, 룩-업 테이블로서 구현될 수 있는데, 여기서 명령의 서로다른 가능한 다중-비트 코드들이 딥 실행 유닛의 서로다른 가능한 연산자 구성들과 맵핑된다. 제어 맵(316)의 룩-업 테이블의 조회 결과에 기초하여, 크로스바 상호연결(317)은 연산자들(318 내지 321) 세트를 구성하는데, 여기서 임의의 구성이 다중-비트 명령 코드에 의해 표시되는 연산자 구성을 실행하는데 필요하다. 연산자들은 예를 들어, 곱셈 연산자(318), 산술 논리 유닛(ALU) 연산자(319), 상태 연산자(320) 또는 크로스-레인 변경기(321)를 포함할 수 있다. 일 실시예에서, 딥 실행 유닛은 15개 연산자들: 일 곱셈 연산자(318), 8개 ALU 연사자들(319), 4개 상태 연산자들(320), 및 2개 크로스-레인 변경기들(321)을 포함하지만, 다른 개수의 연산자들이 가능하다. 딥 실행 유닛에 제공된 피연산자들(315)은 예를 들어, 2개의 16비트 피연산자들이 될 수 있다. 이들은 피연산자들을 적절한 연산자들(318 내지 321)에 제공할 수 있는 제 2 크로스바 상호연결에 제공된다. 제 2 크로스바 상호연결(322)은 또한 연산자(318 내지 321)로부터의 즉각적인 결과들의 피드백(324)을 수신하며, 이 피드백은 또한 제 2 크로스바 상호연결(322)에 의해 적절한 연산자(318 내지 321)에 제공될 수 있다. 제 3 크로스바 상호연결(323)이 연산자들(318 내지 321)로부터의 결과를 다중화하며, 최종 결과(325)를 출력한다. 다양한 제어 신호들이 연산자들을 구성하는데 사용될 수 있다. 예를 들어, 도 3의 실시예의 제어 맵(316)은 반드시 단일 룩-업 테이블로 구현될 필요가 없으며, 일련의 2개 이상의 종속연결된 룩-업 테이블로서 구현될 수 있다. 제 1 룩-업 테이블의 일 엔트리가 소정의 다중-비트 명령 코드로부터 제 2 룩-업 테이블을 지시할 수 있으며, 이에 따라 복잡한 연산자 구성들을 위해 각 룩-업 테이블에서 요구되는 저장량을 줄일 수 있다. 예를 들어, 제 1 룩업 테이블은 구성 카테고리들의 라이브러리들로 조직화될 수 있으며, 이에 따라 복수의 다중-비트 명령 코드들이 제 1 룩-업 테이블에서 함께 그룹화되는데, 각 그룹은 그룹의 각 다중-비트 코드에 특정 구성들을 제공하는 후속 룩-업 테이블을 가리킨다.
도 3의 실시예에 따라, 연산자들은 유익하게 다양한 연산자 클래스들로 사전-구성된다. 실제상, 이는 배선(hardwiring) 전략 레벨에 의해 달성된다. 이러한 접근의 이점은 보다 적은 소정의 구성들이 저장될 필요가 있으며, 제어 회로가 보다 단순하게 될 수 있다는 것이다. 예를 들어, 연산자들(318)은 곰셈 연산자들 클래스가 되도록 구성된다. 연산자들(319)은 ALU 연산자들로서 사전-구성되며, 연산자들(320)은 상태 연산자들로서 사전-구성되며, 연산자들(321)은 크로스-레인 변경기들로서 사전-구성되며, 그리고 다른 사전-구성 클래스들이 가능하다. 그러나, 연산자들의 클래스들이 사전-구성되지만은, 소정의 알고리즘을 수행하는데 특정 구성의 최종 배열을 위해 명령들이 적어도: (ⅰ) 각 클래스 내의 연산자들의 연결성; (ⅱ)다른 클래스들로부터의 연산자들과의 연결성; (ⅲ)임의의 관련 스위칭 수단의 연결성을 배열할 수 있는 실시간 유연성이 있다.
기술분야의 당업자는, 상기 내용이 최적 모드로서 여겨지는 것을 설명하였으며, 본 발명을 수행하는 적절한 다른 모드들의 경우에, 본 발명이 바람직한 실시예의 상세한 설명에서 개시된 특정 장치 구성들 또는 방법 단계들에 국한되지 않아야 함을 이해할 것이다. 또한, 기술분야의 당업자들은, 본 발명이 폭넓은 범위의 응용들을 가지며, 그 실시예들이 본 발명의 사상으로부터 벗어남이 없이 넓은 범위의 서로다른 구현들 및 변형들을 인정하게 됨을 인식할 것이다. 특히, 본원에서 언급된 비트 폭들은 단지 예시적인 것이지 제한적인 의미로 의도된 것이 아니며, 워드들의 절반, 워드들, 길이(long) 등으로 언급되는 임의적인 비트 폭들의 선택이 역시 그러하다.

Claims (28)

  1. 제어 및 데이터 프로세싱 성능들을 갖는 컴퓨터 프로세서에 있어서,
    명령들을 디코딩하는 디코드 유닛과; 그리고
    고정 연산자들을 포함하는 제 1 데이터 실행 경로와 적어도 구성가능 연산자들을 포함하는 제 2 데이터 실행 경로를 포함하는 데이터 프로세싱 설비를 포함하며, 상기 구성가능 연산자들은 복수의 소정의 구성들을 구비하며, 구성들의 적어도 일부는 데이터 프로세싱 명령의 오피코드(opcode) 부분에 의해 선택가능하며;
    여기서, 상기 디코드 유닛은 데이터 프로세싱 명령이 고정 데이터 프로세싱 연산 또는 구성가능 데이터 프로세싱 연산을 정의하는지를 검출하도록 동작가능하며, 상기 디코드 유닛은, 상기 컴퓨터 시스템이 프로세싱하기 위한 데이터를 고정 데이터 프로세싱 명령이 검출되는 때에 상기 제 1 데이터 실행 경로에, 그리고 구성가능 데이터 프로세싱 명령이 검출되는 때에 상기 구성가능 데이터 실행 경로에 제공하게 하는 것을 특징으로 하는 컴퓨터 프로세서.
  2. 제 1항에 있어서, 상기 디코드 유닛은 메모리로부터의 명령 패킷들 스트림을 디코딩할 수 있으며, 각 패킷은 복수의 명령들을 포함하는 것을 특징으로 하는 컴퓨터 프로세서.
  3. 제 1항 또는 제 2항에 있어서, 상기 디코드 유닛은 명령 패킷이 데이터 프로 세싱 명령을 포함하는지를 검출하도록 동작가능한 것을 특징으로 하는 컴퓨터 프로세서.
  4. 선행하는 청구항들 중 어느 한 항에 있어서, 상기 구성가능 연산자들은 다중비트 값들 레벨에서 구성가능한 것을 특징으로 하는 컴퓨터 프로세서.
  5. 제 4항에 있어서, 상기 구성가능 연산자들은 4개 이상의 비트들을 포함하는 다중비트 값들 레벨에서 구성가능한 것을 특징으로 하는 컴퓨터 프로세서.
  6. 제 4항에 있어서, 상기 구성가능 연산자들은 워드들 레벨에서 구성가능한 것을 특징으로 하는 컴퓨터 프로세서.
  7. 선행하는 청구항들 중 어느 한 항에 있어서, 상기 제 1 데이터 실행 경로의 복수의 고정 연산자들은 단일 명령 복수 데이터 원리들에 따라 독립적인 레인들(lanes)에서 복수의 고정 연산들을 수행하는 것을 특징으로 하는 컴퓨터 프로세서.
  8. 선행하는 청구항들 중 어느 한 항에 있어서, 상기 제 2 데이터 실행 경로의 복수의 구성가능 연산자들은 단일 명령 복수 데이터 원리들에 따라 서로다른 레인들에서 복수의 연산들을 수행하는 것을 특징으로 하는 컴퓨터 프로세서.
  9. 선행하는 청구항들 중 어느 한 항에 있어서, 상기 제 2 실행 경로의 구성가능 연산자들은 상기 수행되는 연산들의 특성을 결정하는 구성 정보를 수신하는 것을 특징으로 하는 컴퓨터 프로세서.
  10. 제 9항에 있어서, 상기 제 2 실행 경로의 구성가능 연산자들은 구성가능 데이터 프로세싱 연산을 정의하는 명령 필드로부터 상기 수행되는 연산들의 특성을 결정하는 구성 정보를 수신하는 것을 특징으로 하는 컴퓨터 프로세서.
  11. 선행하는 청구항들 중 어느 한 항에 있어서, 상기 제 2 실행 경로의 구성가능 연산자들은 상대적인 상호연결성을 제어하는 정보를 포함하는 구성 정보를 수신하는 것을 특징으로 하는 컴퓨터 프로세서.
  12. 선행하는 청구항들 중 어느 한 항에 있어서, 상기 제 2 데이터 실행 경로의 구성가능 연산자들과 관련된 제어 맵을 포함하며, 상기 제어 맵은 구성가능 데이터 프로세싱 명령으로부터 적어도 하나의 구성 비트를 수신함과 아울러 구성 정보를 이에 응답하는 상기 구성가능 연산자들에 제공하도록 동작가능한 것을 특징으로 하는 컴퓨터 프로세서.
  13. 제 12항에 있어서, 상기 구성 정보는 2개 이상의 상기 구성 연산자들간의 상 호연결성을 제어하는 것을 특징으로 하는 컴퓨터 프로세서.
  14. 선행하는 청구항들 중 어느 한 항에 있어서, 상기 제 2 실행 경로의 구성가능 연산자들은 수행될 연산의 특성을 결정하는 구성 정보, 또는 구성 데이터 프로세싱 명령 이외의 소스로부터 상호연결성을 제어하는 구성 정보를 수신하는 것을 특징으로 하는 컴퓨터 프로세서.
  15. 선행하는 청구항들 중 어느 한 항에 있어서, 상기 제 2 데이터 실행 경로의 적어도 하나의 구성가능 연산자는 결과들을 결과 저장소에 복귀시키기 이전에 2개의 계산들보다 큰 실행 깊이로 데이터 프로세싱 명령들을 실행할 수 있는 것을 특징으로 하는 컴퓨터 프로세서.
  16. 선행하는 청구항들 중 어느 한 항에 있어서, 구성가능 데이터 프로세싱 명령으로부터 데이터 프로세싱 피연산자들을 수신함과 아울러 이들을 하나 이상의 상기 구성가능 연산자들에 제공하는데 적절한 것으로 스위칭하는 스위칭 메커니즘을 포함하는 것을 특징으로 하는 컴퓨터 프로세서.
  17. 선행하는 청구항들 중 어느 한 항에 있어서, 하나 이상의 상기 구성가능 연산자들로부터 결과들을 수신함과 아울러 상기 결과들을 하나 이상의 결과 저장소 및 피드백 루프에 제공하는데 적절한 것으로 스위칭하는 스위칭 메커니즘을 포함하 는 것을 특징으로 하는 컴퓨터 프로세서.
  18. 선행하는 청구항들 중 어느 한 항에 있어서, 구성가능 데이터 프로세싱 명령들로부터 수신된 구성 비트들과 상기 제 2 데이터 실행 경로의 구성가능 연산자들에 제공을 위한 구성 정보를 맵핑하는 복수의 제어 맵들을 포함하는 것을 특징으로 하는 컴퓨터 프로세서.
  19. 선행하는 청구항들 중 어느 한 항에 있어서, 제어 맵으로부터 구성 정보를 수신함과 아울러 이를 상기 제 2 데이터 실행 경로의 구성가능 연산자들에 제공하는데 적절한 것으로 스위칭하는 스위칭 메커니즘을 포함하는 것을 특징으로 하는 컴퓨터 프로세서.
  20. 선행하는 청구항들 중 어느 한 항에 있어서, 하나 이상의 곱셈 누산 연산자들, 산술 연산자들, 그리고 크로스-레인 변경기들로부터 선택되는 구성가능 연산자들을 포함하는 것을 특징으로 하는 컴퓨터 프로세서.
  21. 선행하는 청구항들 중 어느 한 항에 있어서, 고속 퓨리에 변환들, 인버스 고속 퓨리에 변환들, Viterbi 엔코딩/디코딩, Turbo 엔코딩/디코딩, 그리고 유한 임펄스 응답 계산들, 그리고 임의의 다른 상관관계들 또는 컨볼루션들로부터 선택되는 하나 이상의 연산들을 수행할 수 있는 연산자들 명령 세트를 포함하는 것을 특 징으로 하는 컴퓨터 프로세서.
  22. 제어 및 데이터 프로세싱 성능들을 갖는 컴퓨터 프로세서 동작 방법- 여기서, 상기 컴퓨터 프로세서는 고정 연산자들을 포함하는 제 1 데이터 실행 경로와 구성가능 연산자들을 포함하는 제 2 데이터 실행 경로를 포함하며, 상기 구성가능 연산자들은 복수의 소정의 구성들을 구비하며, 구성들 중 적어도 일부는 데이터 프로세싱 명령의 오피코드 부분에 의해 선택가능하며 -에 있어서,
    복수의 명령들을 디코딩하여 상기 복수의 명령들 중 적어도 하나의 데이터 프로세싱 명령이 고정 데이터 프로세싱 연산 또는 구성가능 데이터 프로세싱 연산을 정의하는지를 검출하는 단계와;
    상기 컴퓨터 프로세서가 프로세싱을 위한 데이터를 고정 데이터 프로세싱 명령이 검출되는 때에 상기 제 1 데이터 실행 경로에, 그리고 구성가능 데이터 프로세싱 명령이 검출되는 때에 상기 구성가능 데이터 실행 경로에 제공하게 하는 단계와; 그리고
    결과들을 출력하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로세서 동작 방법.
  23. 컴퓨터 프로세서- 여기서, 상기 컴퓨터 프로세서는 고정 연산자들을 포함하는 제 1 데이터 실행 경로와 구성가능 연산자들을 포함하는 제 2 데이터 실행 경로를 포함하고, 상기 구성가능 연산자들은 복수의 소정의 구성들을 구비하고, 구성들 중 적어도 일부는 데이터 프로세싱 명령의 오피코드 부분에 의해 선택가능하며 -로 하여금, 복수의 명령들을 디코딩하여 상기 복수의 명령들 중 적어도 하나의 데이터 프로세싱 명령이 고정 데이터 프로세싱 연산 또는 구성가능 데이터 프로세싱 연산을 정의하는지를 검출하게 하고;
    상기 컴퓨터 프로세서가 프로세싱을 위한 데이터를 고정 데이터 프로세싱 명령이 검출되는 때에 상기 제 1 데이터 실행 경로에, 그리고 구성가능 데이터 프로세싱 명령이 검출되는 때에 상기 구성가능 데이터 실행 경로에 제공하게 하고; 그리고
    그 결과들을 출력하게 하는 프로그램 코드 수단을 포함하는 컴퓨터 프로그램 물(product).
  24. 고정 타입의 데이터 프로세싱 연산을 표시하는 필드를 갖는 제 1 복수의 명령들과 구성가능 타입의 데이터 프로세싱 연산들을 표시하는 필드를 갖는 제 2 복수의 명령들을 포함하는 데이터 프로세싱 명령 세트.
  25. 구성가능 연산자들을 포함하는 데이터 실행 경로를 갖는 컴퓨터 프로세서로서, 여기서 상기 구성가능 연산자들은 복수의 소정의 그룹들의 연산자 구성들을 포함하며, 각 그룹은 개별 연산자 클래스로부터의 연산자들을 포함하는 것을 특징으로 하는 컴퓨터 프로세서.
  26. 제 25항에 있어서, 상기 연산자 클래스들은 하나 이상의 곱셈 누산 연산자들, 산술 연산자들, 상태 연산자들, 그리고 변경기들로부터 선택되는 클래스들을 포함하는 것을 특징으로 하는 컴퓨터 프로세서.
  27. 제 25항에 있어서, 하나 이상의 상기 소정의 그룹들의 연산자 구성들 내로부터 선택되는 연산자들간의 연결들은, 상기 컴퓨터 프로세서에 의해 실행되는 명령 내의 오피코드 부분에 의해 구성될 수 있는 것을 특징으로 하는 컴퓨터 프로세서.
  28. 제 25항에 있어서, 하나 이상의 상기 소정의 그룹들의 연산자 구성들로부터 선택되는 연산자들간의 연결들은 상기 컴퓨터 프로세서에 의해 실행되는 명령 내의 오피코드 부분에 의해 구성될 수 있는 것을 특징으로 하는 컴퓨터 프로세서.
KR1020067020243A 2004-03-31 2005-03-22 듀얼 데이터 경로 프로세싱 장치 및 방법 KR20070037568A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/813,433 2004-03-31
US10/813,433 US8484441B2 (en) 2004-03-31 2004-03-31 Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths

Publications (1)

Publication Number Publication Date
KR20070037568A true KR20070037568A (ko) 2007-04-05

Family

ID=34962960

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067020243A KR20070037568A (ko) 2004-03-31 2005-03-22 듀얼 데이터 경로 프로세싱 장치 및 방법

Country Status (8)

Country Link
US (1) US8484441B2 (ko)
EP (1) EP1735699B1 (ko)
JP (1) JP5382635B2 (ko)
KR (1) KR20070037568A (ko)
CN (2) CN101963897B (ko)
CA (1) CA2560093A1 (ko)
TW (1) TWI362617B (ko)
WO (1) WO2005096142A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9342282B2 (en) 2012-08-16 2016-05-17 Samsung Electronics Co., Ltd. Method and apparatus for dynamic data configuration

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047094B2 (en) 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
US7676646B2 (en) 2005-03-02 2010-03-09 Cisco Technology, Inc. Packet processor with wide register set architecture
US7529909B2 (en) * 2006-12-28 2009-05-05 Microsoft Corporation Security verified reconfiguration of execution datapath in extensible microcomputer
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
CN111158756B (zh) * 2019-12-31 2021-06-29 百度在线网络技术(北京)有限公司 用于处理信息的方法和装置

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228498A (en) * 1977-10-12 1980-10-14 Dialog Systems, Inc. Multibus processor for increasing execution speed using a pipeline effect
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
DE69031257T2 (de) * 1989-09-21 1998-02-12 Texas Instruments Inc Integrierte Schaltung mit einem eingebetteten digitalen Signalprozessor
JPH05324430A (ja) 1992-05-26 1993-12-07 Toshiba Corp データ処理装置
US5423051A (en) 1992-09-24 1995-06-06 International Business Machines Corporation Execution unit with an integrated vector operation capability
US5600801A (en) 1993-07-15 1997-02-04 Dell Usa, L.P. Multiple function interface device for option card
US5600810A (en) 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
US6052773A (en) * 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US5737631A (en) * 1995-04-05 1998-04-07 Xilinx Inc Reprogrammable instruction set accelerator
JP2931890B2 (ja) 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
JP3658072B2 (ja) 1996-02-07 2005-06-08 株式会社ルネサステクノロジ データ処理装置およびデータ処理方法
JPH09265397A (ja) 1996-03-29 1997-10-07 Hitachi Ltd Vliw命令用プロセッサ
GB2311882B (en) 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US5956518A (en) 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
DE19634031A1 (de) 1996-08-23 1998-02-26 Siemens Ag Prozessor mit Pipelining-Aufbau
US6006321A (en) 1997-06-13 1999-12-21 Malleable Technologies, Inc. Programmable logic datapath that may be used in a field programmable device
US5922065A (en) * 1997-10-13 1999-07-13 Institute For The Development Of Emerging Architectures, L.L.C. Processor utilizing a template field for encoding instruction sequences in a wide-word format
JP3451921B2 (ja) 1998-03-30 2003-09-29 松下電器産業株式会社 プロセッサ
EP0953898A3 (en) 1998-04-28 2003-03-26 Matsushita Electric Industrial Co., Ltd. A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor
US6226735B1 (en) 1998-05-08 2001-05-01 Broadcom Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements
US6292845B1 (en) 1998-08-26 2001-09-18 Infineon Technologies North America Corp. Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
DE19843640A1 (de) 1998-09-23 2000-03-30 Siemens Ag Verfahren zum Konfigurieren eines konfigurierbaren Hardware-Blocks
US6553414B1 (en) 1998-10-02 2003-04-22 Canon Kabushiki Kaisha System used in plural information processing devices for commonly using peripheral device in network
JP5148029B2 (ja) 1999-02-15 2013-02-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 構成可能な機能ユニットを備えるデータプロセッサ及びそのようなデータプロセッサを使用する方法
EP1050810A1 (en) 1999-05-03 2000-11-08 STMicroelectronics SA A computer system comprising multiple functional units
GB2352066B (en) 1999-07-14 2003-11-05 Element 14 Ltd An instruction set for a computer
US6526430B1 (en) 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
US7039790B1 (en) 1999-11-15 2006-05-02 Texas Instruments Incorporated 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
EP1102163A3 (en) 1999-11-15 2005-06-29 Texas Instruments Incorporated Microprocessor with improved instruction set architecture
US6255849B1 (en) 2000-02-04 2001-07-03 Xilinx, Inc. On-chip self-modification for PLDs
TW516320B (en) 2000-02-22 2003-01-01 Intervideo Inc Implementation of quantization for SIMD architecture
JP2001306321A (ja) 2000-04-19 2001-11-02 Matsushita Electric Ind Co Ltd プロセッサ
US7120781B1 (en) 2000-06-30 2006-10-10 Intel Corporation General purpose register file architecture for aligned simd
EP1417590A2 (en) * 2000-10-02 2004-05-12 Altera Corporation (a Delaware Corporation) Programmable logic integrated circuit devices including dedicated processor components
US20020174266A1 (en) * 2001-05-18 2002-11-21 Krishna Palem Parameterized application programming interface for reconfigurable computing systems
JP2003005958A (ja) 2001-06-25 2003-01-10 Pacific Design Kk データ処理装置およびその制御方法
JP2003099397A (ja) 2001-09-21 2003-04-04 Pacific Design Kk データ処理システム
US6798239B2 (en) * 2001-09-28 2004-09-28 Xilinx, Inc. Programmable gate array having interconnecting logic to support embedded fixed logic circuitry
JP3785343B2 (ja) 2001-10-02 2006-06-14 日本電信電話株式会社 クライアントサーバシステム及びクライアントサーバシステムにおけるデータ通信方法
JP3779602B2 (ja) 2001-11-28 2006-05-31 松下電器産業株式会社 Simd演算方法およびsimd演算装置
KR100464406B1 (ko) 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
US7159099B2 (en) 2002-06-28 2007-01-02 Motorola, Inc. Streaming vector processor with reconfigurable interconnection switch
JP3982353B2 (ja) 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7024543B2 (en) 2002-09-13 2006-04-04 Arm Limited Synchronising pipelines in a data processing apparatus
TW569138B (en) 2002-09-19 2004-01-01 Faraday Tech Corp A method for improving instruction selection efficiency in a DSP/RISC compiler
US7464254B2 (en) 2003-01-09 2008-12-09 Cisco Technology, Inc. Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data
JP2004309570A (ja) 2003-04-02 2004-11-04 Seiko Epson Corp 光通信モジュール、光通信装置、及びその製造方法
US7496776B2 (en) 2003-08-21 2009-02-24 International Business Machines Corporation Power throttling method and apparatus
US7176713B2 (en) * 2004-01-05 2007-02-13 Viciciv Technology Integrated circuits with RAM and ROM fabrication options
US7949856B2 (en) 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9342282B2 (en) 2012-08-16 2016-05-17 Samsung Electronics Co., Ltd. Method and apparatus for dynamic data configuration

Also Published As

Publication number Publication date
EP1735699B1 (en) 2017-11-22
US20050223197A1 (en) 2005-10-06
EP1735699A2 (en) 2006-12-27
JP2007531135A (ja) 2007-11-01
CN1989485B (zh) 2011-08-03
CN1989485A (zh) 2007-06-27
CN101963897B (zh) 2014-03-12
US8484441B2 (en) 2013-07-09
JP5382635B2 (ja) 2014-01-08
CA2560093A1 (en) 2005-10-13
WO2005096142A2 (en) 2005-10-13
WO2005096142A3 (en) 2006-06-08
TWI362617B (en) 2012-04-21
CN101963897A (zh) 2011-02-02
TW200540713A (en) 2005-12-16

Similar Documents

Publication Publication Date Title
EP1735697B1 (en) Apparatus and method for asymmetric dual path processing
EP1735700B1 (en) Apparatus and method for control processing in dual path processor
KR100715055B1 (ko) Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법
JP2002333978A (ja) Vliw型プロセッサ
US20080263332A1 (en) Data Processing Apparatus and Method for Accelerating Execution Subgraphs
US9965275B2 (en) Element size increasing instruction
KR20070037568A (ko) 듀얼 데이터 경로 프로세싱 장치 및 방법
JPH1165844A (ja) パイプラインバイパス機能を有するデータ処理装置
EP1267255A2 (en) Conditional branch execution in a processor with multiple data paths
US20060095713A1 (en) Clip-and-pack instruction for processor
KR20070022239A (ko) 비대칭 듀얼 경로 프로세싱용 장치 및 방법
US20060095714A1 (en) Clip instruction for processor

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E601 Decision to refuse application