KR20080015836A - 구성가능한 프로세싱을 위한 장치 및 방법 - Google Patents

구성가능한 프로세싱을 위한 장치 및 방법 Download PDF

Info

Publication number
KR20080015836A
KR20080015836A KR1020077028459A KR20077028459A KR20080015836A KR 20080015836 A KR20080015836 A KR 20080015836A KR 1020077028459 A KR1020077028459 A KR 1020077028459A KR 20077028459 A KR20077028459 A KR 20077028459A KR 20080015836 A KR20080015836 A KR 20080015836A
Authority
KR
South Korea
Prior art keywords
configurable
operator
operators
execution unit
instruction
Prior art date
Application number
KR1020077028459A
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 KR20080015836A publication Critical patent/KR20080015836A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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/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

구성가능한 실행 유닛은 명령에 의해 복수-비트 피연산자 값들을 처리하는 레벨로 동적으로 구성될 수 있는 연산자들을 포함한다. 이 유닛은 하나 또는 그 이상의 동적으로 구성가능한 연산자 모듈들과, 여기서 상기 모듈 혹은 각각의 모듈은 명령에서 지시된 입력 피연자들을 수신하도록 연결가능하고, 그리고 명령의 오피코드 부분으로부터 결정된 동적 구성 정보를 수신하도록 연결가능하고, 그리고 상기 명령 내의 상기 동적 구성 정보에 응답하여 구성가능한 연산자 모듈의 기능 또는 행동의 실시형태를 정의하는 연산자 구성 세팅을 발생시킬 수 있는 프로그램가능한 룩업 테이블을 포함한다.
구성가능한 실행 유닛, 연산자 모듈, 동적 구성 정보, 룩업 테이블

Description

구성가능한 프로세싱을 위한 장치 및 방법{APPARATUS AND METHOD FOR CONFIGURABLE PROCESSING}
본 발명은 구성가능한 실행 유닛들을 갖는 컴퓨터 프로세서, 이러한 컴퓨터 프로세서 및 실행 유닛을 동작시키는 방법, 및 컴퓨터에 대한 명령 세트들을 사용하는 컴퓨터 프로그램물에 관한 것이다.
일부 컴퓨터 프로세서는, 제조할 때에 고정된 명령 세트를 갖음으로 인해, 어떤 알고리즘에서 서로 다른 타입의 데이터 처리 계산을 효율적으로 처리하는 능력에 있어서, 그리고 예를 들어 컨벌루션(convolution), 고속 푸리에 변환(Fast Fourier Transform), 트렐리스/비터비 계산(Trellis/Viterbi calculations), 상관(correlation), 유한 임펄스 응답 필터링(finite impulse response filtering), 등으로부터 선택된 서로 다른 알고리즘을 수행하는 능력에 있어서, 제한된다. 특히, 알려진 컴퓨터 프로세서는 복수-비트 피연산자(operand) 값에 관해 동작하는 소프트웨어-맞춤형 명령의 성능, 예를 들어 네 개 혹은 그 이상의 비트들 또는 컴퓨터 워드(전형적으로 16, 32, 혹은 64 비트) 레벨에서의 비트들의 연산자에 관해 동작하는 그러한 명령의 성능을 지원하지 못한다. 알려진 컴퓨터 프로세서는 프로세서 명령 세트의 일부를 형성하는 개별적인 소프트웨어-맞춤형 프로세서 명 령(software-customized processor instructions)에 응답하여, 일련의 더 간단한 맞춤형 동작을 포함하는 복합적인 소프트웨어-맞춤형 동작을 효율적으로 수행할 수 없다.
본 발명의 실시예들은 개선된 컴퓨터 프로세서 및 컴퓨터 프로세서를 동작시키는 방법 등을 제공하고자 한다.
본 발명의 실시형태에 따르면, 명령에 의해 복수-비트 피연산자 값들을 처리하는 레벨로 동적으로 구성될 수 있는 연산자들을 포함하는 구성가능한 실행 유닛이 제공된다. 이 구성가능한 실행 유닛은, 하나 또는 그 이상의 동적으로 구성가능한 연산자 모듈들과, 상기 모듈 혹은 각각의 모듈은 명령에서 지시된 입력 피연자들을 수신하도록 연결가능하고, 그리고 명령의 오피코드(opcode) 부분으로부터 결정된 동적 구성 정보를 수신하도록 연결가능하고 그리고 상기 명령 내의 상기 동적 구성 정보에 응답하여 상기 구성가능한 연산자 모듈의 기능 및/또는 행동의 실시형태를 정의하는 연산자 구성 세팅들을 발생시킬 수 있는 프로그램가능한 룩업 테이블(programmable lookup table)을 포함한다.
바람직한 실시예들에서, 이 프로그램가능한 룩업 테이블은 프로그램가능한 로직 어레이(programmable logic array)를 포함한다. 또한 더 특별하게는, 이 프로그램가능한 룩업 테이블은 캐스케이드된 프로그램가능한 로직 어레이들(cascaded programmable logic arrays)을 포함한다.
개시되는 실시예에서, 구성가능한 실행 유닛은 의사 정적 제어 정보(pseudo static control information)에 의해 적어도 부분적으로 정의된 연결성(connectivity)을 가진 구성가능한 스위칭 패브릭(configurable switching fabric)을 포함한다. 더욱이, 이 구성가능한 스위칭 패브릭은 구성가능한 연산자들의 업스트림(upstream)에 연결된 구성가능한 입력 상호연결 수단 및 상기 구성가능한 연산자들의 다운스트림(downstream)에 연결된 구성가능한 출력 상호연결 수단 중 하나 또는 그 이상을 포함할 수 있다. 바람직한 실시예는 양쪽 모두를 갖는다.
구성가능한 입력 상호연결 수단이 제공되는 경우, 하나 또는 그 이상의 구성가능한 연산자 모듈 출력들이 상기 구성가능한 입력 상호연결 수단에 연결될 수 있다.
바람직하게는, 적어도 하나의 구성가능한 연산자 모듈이 하드-와이어링(hard-wiring)되어 동작의 미리 결정된 클래스(class)를 지원하고, 그리고 연산자 구성 세팅들에 의해 동적으로 구성가능하여 일반적인 동작 클래스 내의 연산자 기능 및/또는 행동을 조정한다. 원하는 애플리케이션에 따라, 다양한 연산자 기능들이 제공될 수 있다. 바람직한 실시예들은 구성가능한 시프트(shift) 및 또는 퍼뮤트(permute) 기능을 갖는 모듈을 포함할 수 있다. 또한 더 특별하게는, 어떤 실시예들은 중간 결과들을 보유할 수 있는 저장 연산자들을 포함한다.
전형적으로, 구성가능한 컴포넌트들 중 하나 또는 그 이상은 상기 동적 구성 정보를 나르는 상기 정보와 독립적으로 제공되는 의사 정적 제어 정보를 포함한다. 이러한 의사 정적 제어 정보는 예를 들어 구성 세팅 명령들에 의해 혹은 해당 컴포넌트에 대한 직접 데이터 전달에 의해 확립될 수 있다.
대부분의 실시예들에서, 하나 또는 그 이상의 동적으로 구성가능한 연산자들이 데이터 처리 명령 내에 제공되는 구성 정보를 이용하여 구성가능하다. 그러나, 본 명세서에서 개시되는 원리들은 다른 형태의 명령들에 또한 적용될 수 있다.
바람직한 구성가능한 실행 유닛들은 데이터 처리 명령 내에 제공되는 구성 정보를 사용하여 구성가능한 복수의 동적으로 구성가능한 연산자들을 포함하며, 여기서, 사용에 있어서, 상기 구성 정보에 따른 연산자 구성은 상기 데이터 처리 동작 내에서 지시된 피연산자들에 따라 동작한다.
다른 실시예들에서, 또는 추가로, 하나 또는 그 이상의 동적으로 구성가능한 연산자들은 데이터 처리 명령 내에 제공되는 구성 정보를 사용하여 구성가능하며, 여기서, 사용에 있어서, 상기 구성 정보에 따른 연산자 구성은 후속 명령 내에서 지시된 피연산자들에 따라 동작한다.
바람직한 실행 유닛들은, 단일 명령에 응답하여, 구성가능한 실행 경로 혹은 유닛 외부에 (예를 들어, 레지스터 파일) 저장하기 위해 결과들을 출력하기 전에 피연산자에 관한 두 개 또는 그 이상의 연속적이고 선택적으로 구성가능한 동작들을 수행할 수 있도록 구성된다. 바람직한 구성가능한 실행 유닛들에서, 상기 구성가능한 연산자 모듈들 중 하나 또는 그 이상은 SIMD 동작들을 지원한다.
전형적으로, 다음의 연산자 클래스들 중 하나 또는 그 이상 내에 연산자들이 제공된다: 곱셈기, 연산 로직, 저장소, 시프트 및/또는 퍼뮤트. 그러나 임의 개수 또는 임의 타입의 연산자들이 사용될 수 있다.
본 발명에 따른 실시예들에서, 용어 "프로그램가능한 룩업 테이블"은, 명령 내의 정보에 응답하여, 예를 들어 캐리-인 신호(carry-in signal); 멀티플렉서 선택(multiplexer selection); 협상가능한 입력(negotiable input); 오버플로우 세팅(overflow setting); 및 연산자들의 다른 적절한 입력들 중 하나 또는 그 이상으로부터 선택된 연산자 구성 세팅들을 제공할 수 있는 임의의 디바이스를 포함하도록 넓게 해석되어야 한다.
더욱이, 프로그램가능한 룩업 테이블은 일반적으로 동적으로 구성가능한 연산자 모듈(들)로부터 하나 또는 그 이상의 입력들을 수신할 수 있다. 이러한 방식으로, 연산자들로부터의 출력들은, 후속 싸이클에서 사용을 위해, 연산자들에 대한 구성 입력들을 적어도 부분적으로 정의할 수 있다.
전형적으로, 꼭 그렇지는 않지만, 동적으로 구성가능한 연산자 모듈로부터 프로그램가능한 룩업 테이블로의 입력들은: 오버플로우 지시(overflow indication); FIFO 풀 신호(FIFO full signal); 연산 비교의 부울 결과(Boolean result of arithmetic comparison); 및 연산자들의 다른 적절한 출력들 중 하나 또는 그 이상으로부터 선택된다.
어떤 실시예들에서, 프로그램가능한 룩업 테이블은, 명령 내에서 운반되는 구성 정보에 의해 미리 설정가능하고 선택가능한 의사 정적 제어 정보를 포함하는 것으로서 고려될 수 있다.
본 발명의 또 다른 실시형태에 따르면, 명령에 의해 복수-비트 피연산자 값들을 처리하는 레벨로 동적으로 구성될 수 있는 연산자들을 포함하는 구성가능한 실행 유닛을 동작시키는 방법이 제공되며, 이 방법은:
오피코드 내에 구성 정보를 포함하는 명령을 디코딩하는 단계와;
상기 구성 정보를 프로그램가능한 룩업 테이블에 따라 적어도 하나의 구성가능한 연산자에 대한 연산자 구성 세팅들로 번역하는 단계와;
상기 연산자 구성 세팅들을 상기 적어도 하나의 구성가능한 연산자에 제공하여 상기 연산자의 기능 및/또는 행동의 실시형태가 매 명령에 기초하여 선택적으로 조정가능하게 되는 단계를 포함한다.
바람직한 방법들은 두 개 또는 그 이상의 동작들의 시퀀스들이 단일 명령에 응답하여 직렬로 수행되게 할 수 있다. 대안적으로, 또는 더 유사하게는 추가로, 두 개 또는 그 이상의 동작들이 상기 명령에 응답하여 병렬로 수행될 수 있다.
바람직한 실시예들은 직렬 및 병렬 동작들의 결합이 단일 명령에 응답하여 수행되게 할 수 있다. 이러한 방식으로, 소프트웨어-맞춤형 명령들은, 단일 명령에 응답하여, 상호관련된 동작들의 세트들로서 전체적인 상대적으로 복잡한 계산들을 수행하는 링크된 연산자들의 네트워크들을 통해 피산연자들이 흐르도록 할 수 있다.
또한, 복수의 직렬 및/또는 병렬 동작들이 상기 명령에 응답하여 수행되는 경우, 중간 결과들이 명령들 사이에서 혹은 상기 구성가능한 실행 유닛으로부터 결과 저장소로 출력되기 전에 저장 연산자 내에 보유될 수 있다.
더욱이, 복수의 직렬 및/또는 병렬 동작들이 상기 명령에 응답하여 수행되는 경우, 중간 결과들이 명령들 사이에서 혹은 상기 구성가능한 실행 유닛으로부터 결과 저장소로 출력되기 전에 시프트되거나 또는 퍼뮤트될 수 있다.
본 발명의 또 다른 실시형태에 따르면, 앞서 언급된 방법들 중 어느 하나를 수행하기 위해 프로그램 코드 수단을 포함하는 컴퓨터 프로그램물이 제공된다.
본 발명의 또 다른 실시형태에 따르면, 명령이 제공되는데, 이 명령은 구성가능한 실행 유닛의 하나 또는 그 이상의 연산자들의 구성을 세팅하기 위한 동적 구성 정보를 포함하는 일정 형태의 데이터 처리 동작을 정의하는 오피코드 부분과, 연산자 구성 정보를 포함하는 구성 정보 필드(configuration information field)와, 그리고 상기 데이터 처리 동작에서의 사용을 위한 피연산자를 표시하는 적어도 하나의 필드를 포함한다.
본 발명의 또 다른 실시형태에 따르면, 컴퓨터 프로세싱이 제공되며, 이 컴퓨터 프로세싱은, 고정된 실행 유닛과 선택적으로 결합하는, 구성가능한 실행 유닛을 포함한다. 바람직하게는 이 실행유닛들 중 하나 또는 그 이상은 SIMD 프로세싱을 할 수 있다.
본 발명의 추가적인 장점 및 새로운 특징은 다음의 설명에서 부분적으로 설명되고 그리고 부분적으로는 다음의 개시 내용을 고찰하는 경우 본 발명의 기술분야에서 숙련된 기술을 가진 자들에게는 명백하게 될 것이고 또는 본 발명의 실시로부터 알 수 있다.
본 발명을 보다 더 잘 이해하기 위해 그리고 어떻게 작동하는지를 설명하기 위해, 단지 예시적인 목적으로 첨부되는 도면이 참조용으로 이제 제공된다.
도 1은 본 발명을 구현한 컴퓨터 프로세서의 블록도이다.
도 2는 도 1의 컴퓨터 프로세서의 예시적인 구성가능한 실행 유닛을 도식적으로 보여주는 블록도이다.
도 3은 도 1의 컴퓨터 시스템과 함께 사용하기에 적합한 예시적인 명령 포맷을 도식적으로 나타내고 있다.
도 1의 프로세서(100)는 컴퓨터 시스템의 일부일 수 있으며, 여기서 프로세서는 통신 버스에 의해 메인 메모리 및 주변장치에 연결된다. 숙련된 기술을 가진 사람이 알 수 있는 바와 같이, 이러한 프로세서 시스템은 광범위한 디바이스와 애플리케이션에서 여러 주변장치들을 지원할 수 있다.
프로세서(100)는 명령 메모리(102), 데이터 메모리(104), 명령 페치 및 디코드 회로(instruction fetch and decode circuit)(110), 레지스터 파일(register file)(112), 로드/저장 유닛(load/store unit)(118), 미리 결정된 개수의 고정된 실행 유닛들(120), 및 미리 결정된 개수의 구성가능한 실행 유닛들(126)을 갖는다.
명령 메모리(102)는 명령 버스(108) 및 어드레스 버스(109)를 이용하여 명령 페치 및 디코드 회로(110)에 연결된다. 명령 페치 및 디코드 회로(110)는 또한 어드레스 버스(111)에 의해 레지스터 파일(112)에 연결되고, 그리고 제어 버스 시스템(113)에 의해 로드/저장 유닛(118), 고정된 실행 유닛들(120), 및 구성가능한 실행 유닛들(126)에 연결된다. 제어 버스(113)는 예를 들어 명령들로부터 디코딩된 동작 구성 정보를 로드/저장 유닛(118), 고정된 실행 유닛들(120), 및 구성가능한 실행 유닛들(126)의 관련 입력으로 운반하는데 사용된다. 피연산자 버스 시스 템(115)은 디코딩된 명령에 기초하여 로드/저장 유닛(118), 고정된 실행 유닛들(120), 및 구성가능한 실행 유닛들(126)에 레지스터 파일로부터의 피연산자들을 제공한다.
로드/저장 유닛(118)은 데이터 메모리(104)로의 연결(121)과 데이터 메모리(104)로부터의 연결(122)을 가지며, 그리고 고정된 실행 유닛들(120)과 구성가능한 실행 유닛들(126)의 출력을 또한 수신하는 역할을 하는 결과 버스(128)에 결과를 출력할 수 있다. 결과 버스(128)는 레지스터 파일(112)의 입력으로 피드백된다.
이러한 실시예에서, 프로세서(100)는 고정된 실행 유닛들 및 구성가능한 실행 유닛들 내에서 단일 명령 복수 데이터(Single Instruction Multiple Data, SIMD) 프로세싱을 지원한다. 다른 실시예들에서, 고정된 실행 유닛들과 구성가능한 실행 유닛들 중 단지 하나만이 SIMD 프로세스를 지원하는 것이 가능하고 또는 그 어느 것도 SIMD 프로세스를 지원하지 않는 것이 가능하다.
명령 페치 및 디코드 회로(100)에서의 제어 회로는 일반적으로 명령 메모리(102)로부터의 일련의 명령들을 요구하고, 수신하고 그리고 디코딩하는 역할을 하고 있으며 이러한 명령들에 따라 프로세서의 다양한 컴포넌트들을 제어하는 역할을 한다. 전형적인 명령들은 다양한 기능 유닛들에 의해 수행되는 로드/저장 동작들, 제어 기능 동작들, 데이터 처리 동작들 및/또는 특정 동작들을 포함한다.
로드/저장 명령들은 데이터 메모리(104) 내의 데이터에 액세스하는데 사용되고 그리고 데이터 메모리(104)와 레지스터 파일(112) 사이에 데이터를 이동시키는데 사용되며, 여기서 데이터는 동작이 수행되기 직전과 직후에 상주하고 있다. 분 기(branches)와 같은 제어 기능 동작은 예를 들어, 페치된 명령의 시퀀스에 영향을 주도록 명령 디코드 및 페치 유닛(110) 내에서 전체적으로 동작할 수 있고, 또는 프로세서에 대한 세팅의 계산시에 고정된 실행 유닛들과 구성가능한 실행 유닛들 중 하나 또는 그 이상을 포함할 수 있다. 이후에 더 자세하게 설명되는 바와 같이, 데이터 처리 동작들은 알고리즘을 구현하는데 사용되고, 마찬가지로 고정된 실행 유닛들 및/또는 구성가능한 실행 유닛들을 포함할 수 있다.
도 2는 예시적 실행 유닛(126)의 내부 컴포넌트들을 도식적으로 나타낸 것이다. 도 2를 참조하면, 구성가능한 실행 유닛(126)은 프로그램가능한 룩업 테이블(210), 구성가능한 연산자 단(230), 입력 크로스바 상호연결(input crossbar interconnect)(240), 및 출력 크로스바 상호연결(250)을 포함한다.
프로그램가능한 룩업 테이블(210) 및 상호연결들(240, 250)은, 특별한 목적의 명령에 의해 미리 설정가능하지만 데이터 처리 명령들에 의해 자체적으로 매 사이클 마다 동적으로 구성가능하지 않는 의사-정적 제어 정보에 의존하고 있다는 것을 고려해 볼 때 구성가능하다. 미리 설정가능한 제어 정보는 본 명세서에서 의사 정적 제어 명령(Pseudo Static Control Information, PSCI)으로 언급되고, 도 2에서 참조 번호 249로 표시된다. 의사 정적 제어 정보(249)는 당업자에게는 명백한 방식으로 프로그램가능한 룩업 테이블(210) 및 크로스바 상호연결들(240, 250)의 기능 및 행동의 실시형태들을 지시한다.
구성가능한 연산자 단(230)은 여러 세트의 연산자 모듈들(202-208)을 포함하는데, 그 각각은 동작의 다른 클래스를 수행하도록 설계되어 있다. 연산자 모듈들 은 피연산자 입력 버스들(242)에 의해 입력 크로스바 상호연결로부터 공급된다. 이러한 예시적 실시예에서 곱셈 연산자들(202), ALU 연산자들(204), 저장 연산자들(206) 및 시프트/퍼뮤트 연산자들(208)이 제공된다. 당업자가 알 수 있는 것으로, 연산자들의 개수와 기능은 필요한 애플리케이션 및/또는 프로세서의 필요한 목적에 따라 정해진다. 연산자 모듈들(202-208) 모두 혹은 선택된 일부는 본 명세서에서 설명되는 수단을 사용하여 동적으로 구성가능하는 것이 가능하다.
연산자 모듈들(202-208)은 이들이 설계되어 수행하는 동작들에서 이들을 효율적으로 하는 범위에서 하드와이어링 되지만 동시에 복수-비트 값들에 관한 동작의 구현에 영향을 미치는 행동의 레벨로 구성가능성을 가능하게 하는 다양한 제어 입력들을 갖는다. 이것은 그 각각이 설계되어 수행하는 명령들의 클래스 내에서 연산자 모듈의 타입 및/또는 행동에서의 변형을 지원하는 것이다. 예를 들어, 추가 유닛이 추가뿐만 아니라 공제도 지원할 수 있고(연산의 일반적인 클래스에서의 다른 타입의 동작 혹은 기능), 이것은 스칼라 타입뿐만 아니라 다양한 SIMD 벡터 데이터 타입을 지원할 수 있고(다목적 행동), 그리고 이것은 다양한 라운딩 모드(rounding mode) 및/또는 오버플로우 행동을 지원할 수 있다(선택가능한 행동).
바람직한 실시예에서, 연산자들(202-208)에 대한 제어 입력 및 연산자 단(230)에서의 다양한 구성요소들의 상호연결은, 요구된 다양한 알고리즘, 특히 벡터 알고리즘(이것의 예는 컨벌루션, 고속 푸리에 변환, 트렐리스/비터비 계산, 상관, 유한 임펄스 응답 필터링, 및 다른 것을 포함함)의 효과적인 구현을 가능하게 하는 정도에서 구성가능하다. 이러한 정도는 실제로 적절히 숙련된 공학자들에 의 해 쉽게 확립될 있으며, 숙련된 공학자들은 또한 프로세서의 제어 기능뿐만 아니라 이러한 알고리즘에 따라 관련 계산을 지원하도록 세팅된 명령에 대해 요구되는 데이터 처리 기능의 범위를 알고 있다.
연산자 단(230)의 연산자들은 매 명령에 기초하여("동적으로") 명령에 관해서, 동적으로 구성가능하고, 그래서 구성 정보(예를 들어, 데이터 처리 명령)를 포함하고 있는 명령은, 그 피연산자들이 동작되는 경우 인가될 제어 세팅으로서 구성 정보를 공급함으로써 연산자 기능(동작 타입) 및/또는 행동을 선택적으로 변경할 수 있다. 대안적으로, 명령 내의 구성 정보가 후속 명령(예를 들어, 후속 데이터 처리 명령)으로부터의 피연산자들을 프로세싱하는 경우 인가될 연산자 기능 및/또는 행동을 구성하도록, 명령 세트가 설계될 수 있다.
프로그램가능한 룩업 테이블(210)로부터 획득된 연산자들에 대한 제어 입력들(279)은 연산자 단에 공급되어, 예를 들어 연산자들(204-208)의 기능 및/또는 행동을 제어하도록 제어 입력을 제공한다. 이러한 제어 입력의 예는 캐리-인 신호, 멀티플렉서 선택, 협상가능한 입력, 및 오버플로우 행동 제어 세팅을 포함한다. 연산자 단(230) 내의 연산자 모듈들(202-208)로부터의 제어 출력들(281)은 프로그램가능한 룩업 테이블(210)에 출력될 수 있고, 따라서 또한 제어 입력 세팅들(279)을 정의하는 것에 관여할 수 있다. 제어 출력들(281)의 예는 오버플로우 표시, FIFO 풀 신호, 및 연산 비교의 부울 결과를 포함한다.
실제로, 동작 구성 정보(277) 즉, 데이터 처리 명령은 디코딩되고 그리고 프로그램가능한 룩업 테이블(210)에 공급된다. 이러한 구성 정보(277)는, 제어 정 보(281)와 함께, 프로그램가능한 룩업 테이블(210)에 의해 연산자 단에 대해 대응하는 제어 입력들(279)로 번역되고 연산자 단(230)에 공급된다. 룩업 테이블(210)에 의해 수행되는 번역 기능은 의사 정적 제어 정보(249)에 의해 결정되고, 이 의사 정적 제어 정보는 또한 더 초기의 제어 명령에 의해 세팅될 수 있다.
바람직한 실시예에서, 프로그램가능한 룩업 테이블(210)은 그 자체가 데이터 처리 명령 내의 연산자 구성 정보에 기초하여 선택가능한 의사 정적 제어 정보에 따라 달라지는 것으로 고려될 수 있다. 따라서 프로그램가능한 룩업 테이블(210)은 동적 구성 정보(277)(명령으로부터 획득됨)에 응답하는 연산자들에 대한 입력들, 또는 연산자들로부터의 제어 출력들(281), 또는 PSCI(249) 또는 프로그램가능한 룩업 테이블(210)에 대한 이러한 입력들의 임의의 조합을 만들어 낼 수 있다. 따라서, 연산자 단(230)으로 직접 입력되는 의사 정적 제어 정보에 대한 필요성이 없다. 하지만, 이것은 일부 환경에서는 바람직할 수 있다.
도 2A를 참조하면, 프로그램가능한 룩업 테이블(210)이 숙련된 자에게는 공지된 형태의 프로그램가능한 로직 어레이(Programmable Logic Array, PLA)로서 구현될 수 있거나 도 2B에 도시된 바와 같이 이러한 PLA들의 캐스캐이드(cascade)로서 구현될 수 있다. 도 2B의 경우에, PLA1은 명령으로부터의 구성 비트들(277)을 제 1 중간 코드로 번역하고, PLA2는 연산자들의 제어 출력들(281)을 제 2 중간 코드로 번역하고, 그리고 PLA3은 중간 코드들 양쪽 모두를 결합하여 연산자들에 대해 제어 입력들(279)의 세트를 발생시킨다. 이러한 캐스캐이드된 구성은 도 2A의 단일 PLA보다 더 적은 하드웨어를 필요로 할 수 있기 때문에 바람직할 수 있다.
바람직한 실시예에서, 크로스-바 상호연결들(240, 250)의 연결성과 단(230)에서의 연산자들 간의 상호연결들은 데이터 처리 명령들에서의 제어 정보에 기초하여 동적으로 구성가능하지 않다. 대신에, 이러한 컴포넌트들(240, 250)은 PSCI를 세팅함으로써, 가능하게는 제어 세팅 동작들의 업로드 혹은 수행에 의해, 동작들보다 앞서 구성가능하다.
입력 상호연결(240)은 복수의 연산자 모듈들(202-208) 각각에 대해 피연산자 입력들을 제공한다. 입력 상호연결(240)은 디코딩된 데이터 처리 명령들에 따라 피연산자들(224)을 수신할 수 있고 그리고 피드백 버스(225)를 통해 연산자들(202-204)의 출력으로부터 결과 값들을 수신할 수 있다.
출력 상호연결(250)은 연산자 모듈들(202-208)로부터 출력을 수신하고 그리고 구성가능한 실행 유닛(126)의 최종 출력 결과(290)를 공급한다. 피드백 버스(225), 크로스바 스위치(240), 및 선택적으로 또한 저장 연산자들(206)에 의해, 간단한 복수의 동작들의 직렬 및 병렬 결합이, 실행 유닛 외부에 결과(290)를 공급하기 전에, 단일 데이터 처리 명령에 응답하는 입력 연산자들(224)에 관한 복합적 동작을 실행할 수 있다. 이러한 유리한 형태의 "깊은(deep)" 실행 동작은, 간단하게, 동작들(여기서, 복수의(일반적으로 세 개 또는 그 이상의) 수학적 동작들이, 결과들(290)이 레지스터 파일(112) 내의 결과 레지스터에 기입될 수 있도록 보내지기 전에, 피연산자들 혹은 피연산자들의 세트에 관해 연속적으로 수행된다)로 고려될 수 있다. 이러한 형태의 깊은 동작들에서, 저장 연산자들(206)은 중간 결과들을 보유할 수 있고, 그래서 이들은 결과들(290)이 출력되기 전에 더 이후의 동작 싸이 클에 관여할 수 있다. 이러한 형태의 직렬 및/또는 병렬 동작은 신규한 것이다. 더욱이, 기본 연산자들의 직렬-병렬 결합인 네트워크를 만드는 설비는 유리하다. 병렬형 동작의 예는 랭크 점검(rank check): AND(A > min, A < max)이며, 여기서 두 개의 비교 계산이 공통 피연산자 A에 관해 병렬로 수행된다.
숙련된 자들이 알 수 있는 것으로, 도 2의 전체 구조는 적절하게 파이프라인될 수 있어 복합적인 복수단계의 동작들이 프로세서 속도와 무관하게 달성될 수 있도록 할 수 있다.
따라서, 어떻게, 사용에 있어서, 명령 페치 및 디코드 회로(110)가 데이터 처리 명령들을 디코딩하고 프로세서(100)의 다양한 컴포넌트들을 제어하고, 그래서 명령으로부터의 구성 정보(277)가 프로그램가능한 룩업 테이블(210)에 공급되며, 그리고 그 각각의 피연산자(224)가 레지스터 파일로부터 입력 연결(240)에 공급되지가 설명되었다. 이렇게, 명령으로부터의 구성 정보(277)는 프로그램가능한 룩업 테이블(210)을 통해 하나 또는 그 이상의 연산자들의 기능 및/또는 행동의 실시형태를 선택적으로, 동적으로 수정한다.
따라서, 구성가능한 실행 유닛(126)은 몇 가지 형태의 제어에 의존하고 있다. 먼저, 모듈들(202-208)의 다양한 연산자 클래스들을 제공하기 위해 유리한 레벨의 하드와이어링에서 예시된 정적 제어가 있다. 두 번째로, 의사 정적 제어 정보(PSCI)가 있으며, 이것은 예를 들어, 상호연결 컴포넌트들(240, 250)과 프로그림가능 룩업 테이블(210)의 소정의 구성에서 상주한다. 본 명세서에서 앞서 설명된 바와 같이, 의사 정적 제어 정보는 어떤 구성가능한 컴포넌트들(예를 들어, 룩업 테이블 및 상호연결들(240, 250))에 배포되어, 그들 자신이 매 명령에 기초하여 연산자들의 동적인 구성을 가능하게 하는(구성을 조정할 수 있는) 소프트웨어-맞춤형 명령들을 수행하기에 앞서 실행 유닛(200)의 기능 및 행동의 실시형태를 결정한다. 추가로, 매 싸이클에 기초하여 명령들에 의해 제공될 수 있는 동적 제어 정보가 있다. 명령 세트는, 만약 명령 세트가 프로세서의 동작과 호환성이 유지되는 것을 확실하게 하는 어떤 일반적인 프로토콜을 지지한다면 제조 이후에 커스터마이징(customizing)될 수 있다. 미리 구성가능한 다른 컴포넌트들 및 연산자들을 동적으로 구성할 수 있는 사후 제조 소프트웨어-맞춤형 명령들의 결합은 광범위한 조작 및 수학적 기능을 가능하게 하고 그리고 복잡한 알고리즘에 대한 좋은 해법을 제공한다. 이러한 맥락에서, 싸이클 수와 파워 요건을 감소시키려는 노력이 취해질 수 있다.
PSCI는 예를 들어, (i) 외부 DMA 포트로부터 직접적인 업로드에 의해 또는 (ii) 구체적으로 설계된 PSCI 세팅 명령(이것에 따라, PSCI 세팅을 계산하기 위해 사용되는 데이터가 목적지 어드레스에 기초하여 PSCI를 세팅하는 결과를 사용하여 피연산자 데이터(224)로서 유닛에 진입함)을 구현함으로써 컴포넌트들에 배포될 수 있다.
프로세서 명령(연산자 구성 정보를 포함함)의 오피코드 내에 포함된 동적 제어 정보(277)는 프로그램가능한 룩업 테이블(210)에 액세스하기 위해 사용된다. 바람직한 실시예에서, 동적 제어 정보는 명령 내의 복수-비트 필드에 의해 나타내지며 그리고 프로그램가능한 룩업 테이블(210)로부터 발행된 세팅들은 전체 실행 유 닛(230)에 대한 제어 입력들(세팅들)의 확장된 세트를 포함한다.
바람직한 실시예들에서, 연산자 단(230)의 다양한 모듈들(202-208)이 데이터 처리 동작들(이 중 적어도 하나의 입력은 벡터 또는 벡터의 구성요소(스칼라)와 같은 복수-비트 값이다)을 처리하도록 설계된다. 따라서, 바람직한 연산자 모듈들(202-208)은 복수-비트 값에 관한 동작들의 레벨로 구성가능하다. 예를 들어, 데이터 처리 동작에 대한 64 비트 벡터 입력은 네 개의 16 비트 스칼라 피연산자를 포함할 수 있다. 본 명세서에서 벡터는 스칼라 피연산자들의 집합으로 고려될 수 있다. 따라서, 소프트웨어 맞춤가능 벡터 연산은 복수의 스칼라 피연산자들에 관해 달성될 수 있으며, 그리고 일반적으로 스칼라 구성요소들의 퍼뮤테이션(permutation)의 어떤 양(amount)을 필요로 한다. 벡터 동작의 모든 피연산자들이 벡터일 필요는 없으며, 예를 들어 벡터 동작은 스칼라 입력 및 벡터 입력 모두를 가질 수 있으며, 그리고 스칼라 혹은 벡터 중 어느 하나인 결과를 출력할 수 있다.
본 발명의 실시예들과 함께 사용하기에 적합한 다양한 명령 포맷이 도 3에 도시된다. 300에는, 예를 들어, 컴포넌트들(210, 240, 및/또는 250) 중 하나 또는 그 이상에 대한 의사 정적 제어 세팅 동작을 수행하도록 특정적으로 설계된 PSCI 세팅 명령이 있다. PSCI 세팅 명령(300)은, PSCI 세팅 명령의 타입임을 표시하는 제 1 오피코드 부분(302)과, 그리고 구성되도록 의도된 그 컴포넌트 또는 각각의 컴포넌트(210, 240, 250)와 관련된 목적지를 표시하는 제 2 오피코드 부분(303)을 포함한다. 명령의 나머지(304)는 목적지에 대해 의도된 PSCI를 운반하거나 PSCI를 가리키기 위해 사용될 수 있다.
명령 포맷(400)을 참조하면, 동적 구성 세팅 정보(이것에 기초하여 프로그램가능한 룩업 테이블(210)에서 참조(reference)가 만들어 진다)를 포함하는 데이터 처리 명령들의 클래스가 개시된다. 명령(400)은 수행될 데이터 처리 동작을 정의하는 제 1 오피코드 부분(410)을 포함하며, 바람직하게는 이 명령이, 구성가능한 실행 유닛(230)의 하나 또는 그 이상의 연산자들을 구성하기 위한 동적 구성 세팅 정보를 포함하는, 데이터 처리 동작의 타입임을 나타내는 표시를 포함한다. 명령(400)은 또한 결과가 보내질 목적지 어드레스를 가리키는 제 2 오피코드 부분(415)과, 연산자 구성 정보(420)를 포함하는 제 3 오피코드 부분(420)과, 그리고 데이터 처리 동작에서의 사용을 위한 하나 또는 그 이상의 피연산자들(430)을 포함한다. 대안적으로, 필드(430)는 레지스터들 내에서의 하나 또는 그 이상의 피연산자들에 대한 포인터들을 포함할 수 있다. 숙련된 기술을 갖는 자가 알 수 있는 것으로, 설명된 필드들 중 하나 또는 그 이상이 다른 실시예들에서 결합될 수도 있고 또는 생략될 수도 있다.
본 명세서에서 앞서 설명된 바와 같이, 연산자 구성 정보(420)는 룩업 테이블(210)에 액세스하는데 사용되고 연산자 제어 입력 세팅들(279)에 제공되기 위에 번역된다.
바람직한 실시예들은 특히 효과적으로 어떤 알고리즘 예를 들어, 컨벌루션, 고속 푸리에 변환, 트렐리스/비터비 계산, 상관, 유한 임펄스 응답 필터링 등을 포함하는 알고리즘 내에서의 다른 타입의 데이터 처리 계산을 처리할 수 있다. 더욱 이, 바람직한 프로세서들은 복수-비트 피연산자 값들에 관해 동작하는 소프트웨어-맞춤형 명령들(예를 들어, 네 개 또는 그 이상의 비트의 피연산자들 혹은 컴퓨터 워드(전형적으로 16, 32, 또는 64 비트)의 레벨에서의 피연산자들에 관해 동작하는 명령들)의 구현을 지원한다. 따라서, 실시예들은 프로세서 명령 세트의 부분을 형성하는 개별 소프트웨어-맞춤형 프로세서 명령들에 응답하여, 맞춤형 동작(직렬 및/또는 병렬)의 세트들로서 복합적인 소프트웨어-맞춤형 동작들을 효과적으로 수행할 수 있다.
숙련된 기술을 갖는 독자가 알 수 있는 것으로, 앞서의 것들이 최상의 모드가 되도록 고려되는 것을 설명했고 그리고 본 발명을 수행하는 적절한 다른 모드가 무엇인가를 설명했지만, 본 발명은 바람직한 실시예의 이러한 설명에서 개시된 방법의 단계들 또는 특정 장치 구성에만 한정되지는 않는다. 본 발명의 기술분야에서 숙련된 자들이 또한 알 수 있는 것으로, 본 발명은 광범위한 응용들을 가지며, 그리고 이 실시예들은 본 발명의 사상으로부터 벗어남이 없이 광범위하게 수정될 수 있다.
예를 들어, 연산자 모듈 또는 모듈들의 실시형태는 동적으로 구성가능할 수 있다. 프로그램가능한 룩업 테이블은 오피코드 정보를 연산자 제어 세팅들로 번역하기에 적합한 임의의 디바이스일 수 있다. 다른 실시예들에서, 컴포넌트들(240, 250) 중 하나 또는 그 이상이 명령 내의 제어 정보를 사용하여 동적으로 구성될 수 있는 것이 가능하고 또는 어떤 연산자들은 PSCI를 직접적으로 업로드함으로써 미리 구성가능할 수 있는 것이 가능하다.

Claims (29)

  1. 명령에 의해 복수-비트 피연산자 값들을 처리하는 레벨로 동적으로 구성될 수 있는 연산자들을 포함하는 구성가능한 실행 유닛으로서,
    하나 또는 그 이상의 동적으로 구성가능한 연산자 모듈들과, 상기 모듈 혹은 각각의 모듈은 명령에서 지시된 입력 피연자들을 수신하도록 연결가능하고; 그리고
    명령의 오피코드 부분으로부터 결정된 동적 구성 정보를 수신하도록 연결가능하고, 그리고 상기 명령 내의 상기 동적 구성 정보에 응답하여 상기 구성가능한 연산자 모듈의 기능 및/또는 행동의 실시형태를 정의하는 연산자 구성 세팅들을 발생시킬 수 있는 프로그램가능한 룩업 테이블을 포함하여 구성되는 것을 특징으로 하는 구성가능한 실행 유닛.
  2. 제 1 항에 있어서,
    상기 프로그램가능한 룩업 테이블은 프로그램가능한 로직 어레이를 포함하는 것을 특징으로 하는 구성가능한 실행 유닛.
  3. 제 2 항에 있어서,
    상기 프로그램가능한 룩업 테이블은 캐스케이드된 프로그램가능한 로직 어레이들을 포함하는 것을 특징으로 하는 구성가능한 실행 유닛.
  4. 제 1 항에 있어서,
    상기 실행 유닛은 의사 정적 제어 정보에 의해 적어도 부분적으로 정의된 연결성을 가진 구성가능한 스위칭 패브릭을 포함하는 것을 특징으로 하는 구성가능한 실행 유닛.
  5. 제 4 항에 있어서,
    상기 구성가능한 스위칭 패브릭은 상기 구성가능한 연산자들의 업스트림에 연결된 구성가능한 입력 상호연결 수단 및 상기 구성가능한 연산자들의 다운스트림에 연결된 구성가능한 출력 상호연결 수단 중 하나 또는 그 이상을 포함하는 것을 특징으로 하는 구성가능한 실행 유닛.
  6. 제 5 항에 있어서,
    상기 구성가능한 스위칭 패브릭은 상기 구성가능한 연산자들의 업스트림에 연결된 구성가능한 입력 상호연결 수단과 상기 구성가능한 연산자들의 다운스트림에 연결된 구성가능한 출력 상호연결 수단을 포함하는 것을 특징으로 하는 구성가능한 실행 유닛.
  7. 제 6 항에 있어서,
    하나 또는 그 이상의 구성가능한 연산자 모듈들의 하나 또는 그 이상의 출력들이 상기 구성가능한 입력 상호연결 수단에 연결되는 것을 특징으로 하는 구성가 능한 실행 유닛.
  8. 제 1 항에 있어서,
    적어도 하나의 구성가능한 연산자 모듈이 하드-와이어링되어 동작의 미리 결정된 클래스를 지원하고, 그리고 연산자 구성 세팅들에 의해 동적으로 구성가능하여 일반적인 동작 클래스 내의 연산자 기능 및/또는 행동을 조정하는 것을 특징으로 하는 구성가능한 실행 유닛.
  9. 제 1 항에 있어서,
    상기 구성가능한 연산자들은 구성가능한 시프트 및 또는 퍼뮤트 기능을 갖는 모듈을 포함하는 것을 특징으로 하는 구성가능한 실행 유닛.
  10. 제 1 항에 있어서,
    하나 또는 그 이상의 컴포넌트들이 상기 동적 구성 정보를 나르는 상기 정보와 독립적으로 제공되는 의사 정적 제어 정보를 포함하는 것을 특징으로 하는 구성가능한 실행 유닛.
  11. 제 10 항에 있어서,
    하나 또는 그 이상의 컴포넌트들이 구성 세팅 명령들에 의해 확립된 의사 정적 제어 정보를 포함하는 것을 특징으로 하는 구성가능한 실행 유닛.
  12. 제 1 항에 있어서,
    하나 또는 그 이상의 동적으로 구성가능한 연산자들이 데이터 처리 명령 내에 제공되는 구성 정보를 이용하여 구성가능한 것을 특징으로 하는 구성가능한 실행 유닛.
  13. 제 1 항에 있어서,
    데이터 처리 명령 내에 제공되는 구성 정보를 사용하여 구성가능한 복수의 동적으로 구성가능한 연산자들을 포함하며, 여기서, 사용에 있어서, 상기 구성 정보에 따른 연산자 구성은 상기 데이터 처리 동작 내에서 지시된 피연산자들에 따라 동작하는 것을 특징으로 하는 구성가능한 실행 유닛.
  14. 제 1 항에 있어서,
    데이터 처리 명령 내에 제공되는 구성 정보를 사용하여 구성가능한 하나 또는 그 이상의 동적으로 구성가능한 연산자들을 포함하며, 여기서 사용에 있어서, 상기 구성 정보에 따른 연산자 구성은 후속 명령 내에서 지시된 피연산자들에 따라 동작하는 것을 특징으로 하는 구성가능한 실행 유닛.
  15. 제 1 항에 있어서,
    단일 명령에 응답하여, 결과들을 출력하기 전에 피연산자에 관한 두 개 또는 그 이상의 연속적이고 선택적으로 구성가능한 동작들을 수행할 수 있는 것을 특징으로 하는 구성가능한 실행 유닛.
  16. 제 1 항에 있어서,
    상기 구성가능한 연산자 모듈들 중 하나 또는 그 이상은 SIMD 동작들을 지원하는 것을 특징으로 하는 구성가능한 실행 유닛.
  17. 제 1 항에 있어서,
    다음의 연산자 클래스들: 곱셈기, 연산 로직, 저장소, 시프트 및/또는 퍼뮤트 중 하나 또는 그 이상 내에 연산자들을 포함하는 것을 특징으로 하는 구성가능한 실행 유닛.
  18. 제 1 항에 있어서,
    상기 프로그램가능한 룩업 테이블은 캐리-인 신호; 멀티플렉서 선택; 협상가능한 입력; 오버플로우 세팅; 및 연산자들의 다른 적절한 입력들 중 하나 또는 그 이상으로부터 선택된 연산자 구성 세팅들을 발생시키는 것을 특징으로 하는 구성가능한 실행 유닛.
  19. 제 1 항에 있어서,
    상기 프로그램가능한 룩업 테이블은 하나 또는 그 이상의 동적으로 구성가능 한 연산자 모듈들로부터 하나 또는 그 이상의 입력들을 수신하는 것을 특징으로 하는 구성가능한 실행 유닛.
  20. 제 19 항에 있어서,
    상기 동적으로 구성가능한 연산자 모듈로부터의 상기 입력은 오버플로우 지시; FIFO 풀 신호; 연산 비교의 부울 결과; 및 연산자들의 다른 적절한 출력들로부터 선택된 하나 또는 그 이상을 포함하는 것을 특징으로 하는 구성가능한 실행 유닛.
  21. 제 1 항에 있어서,
    상기 프로그램가능한 룩업 테이블은 의사 정적 제어 정보를 포함하는 것을 특징으로 하는 구성가능한 실행 유닛.
  22. 명령에 의해 복수-비트 피연산자 값들을 처리하는 레벨로 동적으로 구성될 수 있는 연산자들을 포함하는 구성가능한 실행 유닛을 동작시키는 방법으로서,
    오피코드 내에 구성 정보를 포함하는 명령을 디코딩하는 단계와;
    상기 구성 정보를 프로그램가능한 룩업 테이블에 따라 적어도 하나의 구성가능한 연산자에 대한 연산자 구성 세팅들로 번역하는 단계와;
    상기 연산자 구성 세팅들을 상기 적어도 하나의 구성가능한 연산자에 제공하여 상기 연산자의 기능 및/또는 행동의 실시형태가 매 명령에 기초하여 선택적으로 조정가능하게 되는 단계를 포함하는 것을 특징으로 하는 구성가능한 실행 유닛을 동작시키는 방법.
  23. 제 22 항에 있어서,
    두 개 또는 그 이상의 동작들의 시퀀스가 상기 명령에 응답하여 직렬로 수행되는 것을 특징으로 하는 구성가능한 실행 유닛을 동작시키는 방법.
  24. 제 22 항에 있어서,
    두 개 또는 그 이상의 동작들이 상기 명령에 응답하여 병렬로 수행되는 것을 특징으로 하는 구성가능한 실행 유닛을 동작시키는 방법.
  25. 제 22 항에 있어서,
    직렬 및 병렬 동작들의 결합이 상기 명령에 응답하여 수행되는 것을 특징으로 하는 구성가능한 실행 유닛을 동작시키는 방법.
  26. 제 22 항에 있어서,
    복수의 직렬 및/또는 병렬 동작들이 상기 명령에 응답하여 수행되고, 그리고 적어도 하나의 중간 결과가 명령들 사이에서 혹은 상기 구성가능한 실행 유닛으로부터 결과 저장소로 출력되기 전에 저장 연산자 내에 보유되는 것을 특징으로 하는 구성가능한 실행 유닛을 동작시키는 방법.
  27. 제 22 항에 있어서,
    복수의 직렬 및/또는 병렬 동작들이 상기 명령에 응답하여 수행되고, 그리고 여기서 중간 결과가 명령들 사이에서 혹은 상기 구성가능한 실행 유닛으로부터 결과 저장소로 출력되기 전에 시프트되거나 또는 퍼뮤트되는 것을 특징으로 하는 구성가능한 실행 유닛을 동작시키는 방법.
  28. 제 22 항의 방법을 수행하는 프로그램 코드 수단을 포함하는 컴퓨터 프로그램물.
  29. 구성가능한 실행 유닛의 하나 또는 그 이상의 연산자들의 구성을 세팅하기 위한 동적 구성 정보를 포함하는 일정 형태의 데이터 처리 동작을 정의하는 오피코드 부분과;
    연산자 구성 정보를 포함하는 구성 정보 필드와; 그리고
    상기 데이터 처리 동작에서의 사용을 위한 피연산자를 표시하는 적어도 하나의 필드를 포함하는 것을 특징으로 하는 명령.
KR1020077028459A 2005-05-05 2006-05-04 구성가능한 프로세싱을 위한 장치 및 방법 KR20080015836A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/122,385 2005-05-05
US11/122,385 US8966223B2 (en) 2005-05-05 2005-05-05 Apparatus and method for configurable processing

Publications (1)

Publication Number Publication Date
KR20080015836A true KR20080015836A (ko) 2008-02-20

Family

ID=36659717

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077028459A KR20080015836A (ko) 2005-05-05 2006-05-04 구성가능한 프로세싱을 위한 장치 및 방법

Country Status (10)

Country Link
US (2) US8966223B2 (ko)
EP (1) EP1877896B1 (ko)
JP (1) JP4806009B2 (ko)
KR (1) KR20080015836A (ko)
CN (1) CN101218560B (ko)
AT (1) ATE504037T1 (ko)
CA (1) CA2606558A1 (ko)
DE (1) DE602006021000D1 (ko)
TW (1) TWI439928B (ko)
WO (1) WO2006117562A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769390B2 (en) 2011-06-02 2014-07-01 Samsung Electronics Co., Ltd. Apparatus and method for processing operations in parallel using a single instruction multiple data processor

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193435A (ja) * 2006-01-17 2007-08-02 Matsushita Electric Ind Co Ltd 情報処理端末、プログラム
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US8276120B2 (en) * 2007-10-30 2012-09-25 Coreworks, S.A. Reconfigurable coprocessor architecture template for nested loops and programming tool
GB0721429D0 (en) 2007-10-31 2007-12-12 Icera Inc Processing signals in a wireless communications environment
GB0721427D0 (en) 2007-10-31 2007-12-12 Icera Inc Processing signals in a wireless newtwork
GB2454914B (en) 2007-11-22 2012-07-25 Icera Inc Clock control
GB2459733B (en) 2008-04-30 2012-12-19 Icera Inc Clock configuration
GB2459939B (en) 2008-05-16 2012-02-15 Icera Inc Fetching descriptors in a multiple context DMA engine
US8078833B2 (en) * 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
CN101630305B (zh) * 2008-07-16 2011-05-11 中国人民解放军信息工程大学 高效能计算机中可重构部件的柔性管理方法
GB0818918D0 (en) 2008-10-15 2008-11-19 Icera Inc Boot algorithm
US9170816B2 (en) 2009-01-15 2015-10-27 Altair Semiconductor Ltd. Enhancing processing efficiency in large instruction width processors
GB2466982B (en) 2009-01-16 2013-07-17 Nvidia Technology Uk Ltd DMA Engine
GB2467760B (en) 2009-02-12 2013-05-22 Icera Inc Method for generating transmitter power amplifier ramp profiles from a single reference ramp pattern
GB0910850D0 (en) 2009-06-23 2009-08-05 Icera Inc Processing signals in a wireless network
JP5785357B2 (ja) * 2009-06-25 2015-09-30 スパンション エルエルシー リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置
CN102043755B (zh) * 2009-10-22 2012-12-05 财团法人工业技术研究院 可重组态处理装置及其系统
GB2483225B (en) 2010-08-27 2018-07-11 Nvidia Tech Uk Limited Improved processor architecture
US10255228B2 (en) * 2011-12-06 2019-04-09 Nvidia Corporation System and method for performing shaped memory access operations
US9558006B2 (en) * 2012-12-20 2017-01-31 Intel Corporation Continuous automatic tuning of code regions
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US10019260B2 (en) * 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
KR102259406B1 (ko) * 2014-07-30 2021-06-03 모비디어스 리미티드 명령어 사전인출을 위한 방법 및 장치
EP3125109B1 (en) * 2015-07-31 2019-02-20 ARM Limited Vector length querying instruction
US10860322B2 (en) * 2015-10-30 2020-12-08 Arm Limited Modifying behavior of a data processing unit using rewritable behavior mappings of instructions
US9977677B2 (en) * 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
US9734126B1 (en) 2016-10-10 2017-08-15 International Business Machines Corporation Post-silicon configurable instruction behavior based on input operands
US10963265B2 (en) * 2017-04-21 2021-03-30 Micron Technology, Inc. Apparatus and method to switch configurable logic units
US10409615B2 (en) * 2017-06-19 2019-09-10 The Regents Of The University Of Michigan Configurable arithmetic unit
JP7032647B2 (ja) * 2018-04-17 2022-03-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10565036B1 (en) 2019-02-14 2020-02-18 Axis Semiconductor, Inc. Method of synchronizing host and coprocessor operations via FIFO communication
US11500644B2 (en) * 2020-05-15 2022-11-15 Alibaba Group Holding Limited Custom instruction implemented finite state machine engines for extensible processors
CN112783614A (zh) * 2021-01-20 2021-05-11 北京百度网讯科技有限公司 对象处理方法、装置、设备、存储介质以及程序产品
EP4080354A1 (en) * 2021-04-23 2022-10-26 Nxp B.V. Processor and instruction set

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361373A (en) 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5600845A (en) * 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US6052773A (en) * 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US5794062A (en) * 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US5784636A (en) * 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US6023564A (en) * 1996-07-19 2000-02-08 Xilinx, Inc. Data processing system using a flash reconfigurable logic device as a dynamic execution unit for a sequence of instructions
JPH118547A (ja) 1997-06-17 1999-01-12 Fuji Xerox Co Ltd 再構成可能演算装置
US6339819B1 (en) * 1997-12-17 2002-01-15 Src Computers, Inc. Multiprocessor with each processor element accessing operands in loaded input buffer and forwarding results to FIFO output buffer
US6226735B1 (en) * 1998-05-08 2001-05-01 Broadcom Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements
US6092174A (en) * 1998-06-01 2000-07-18 Context, Inc. Dynamically reconfigurable distributed integrated circuit processor and method
US6961084B1 (en) * 1999-10-07 2005-11-01 Ess Technology, Inc. Programmable image transform processor
US6255849B1 (en) * 2000-02-04 2001-07-03 Xilinx, Inc. On-chip self-modification for PLDs
KR100457040B1 (ko) * 2000-06-21 2004-11-10 패러데이 테크놀로지 코퍼레이션 곱셈 누산 명령을 이용한 데이터 처리 장치 및 방법
DE60144022D1 (de) * 2000-11-06 2011-03-24 Broadcom Corp Umkonfigurierbares verarbeitungssystem und -verfahren
US20070067380A2 (en) * 2001-12-06 2007-03-22 The University Of Georgia Research Foundation Floating Point Intensive Reconfigurable Computing System for Iterative Applications
WO2003081454A2 (de) * 2002-03-21 2003-10-02 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US7200735B2 (en) 2002-04-10 2007-04-03 Tensilica, Inc. High-performance hybrid processor with configurable execution units
WO2004010320A2 (en) * 2002-07-23 2004-01-29 Gatechance Technologies, Inc. Pipelined reconfigurable dynamic instruciton set processor
WO2004010286A2 (en) 2002-07-23 2004-01-29 Gatechange Technologies, Inc. Self-configuring processing element
AU2003286131A1 (en) * 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US20040122887A1 (en) 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
US7149996B1 (en) * 2003-07-11 2006-12-12 Xilinx, Inc. Reconfigurable multi-stage crossbar
JP2006065788A (ja) * 2004-08-30 2006-03-09 Sanyo Electric Co Ltd リコンフィギュラブル回路を備えた処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769390B2 (en) 2011-06-02 2014-07-01 Samsung Electronics Co., Ltd. Apparatus and method for processing operations in parallel using a single instruction multiple data processor

Also Published As

Publication number Publication date
JP4806009B2 (ja) 2011-11-02
US8671268B2 (en) 2014-03-11
CN101218560A (zh) 2008-07-09
EP1877896A1 (en) 2008-01-16
EP1877896B1 (en) 2011-03-30
US20110161640A1 (en) 2011-06-30
US8966223B2 (en) 2015-02-24
US20060253689A1 (en) 2006-11-09
JP2008541216A (ja) 2008-11-20
ATE504037T1 (de) 2011-04-15
CN101218560B (zh) 2012-06-06
WO2006117562A1 (en) 2006-11-09
DE602006021000D1 (de) 2011-05-12
CA2606558A1 (en) 2006-11-09
TW200707280A (en) 2007-02-16
TWI439928B (zh) 2014-06-01

Similar Documents

Publication Publication Date Title
KR20080015836A (ko) 구성가능한 프로세싱을 위한 장치 및 방법
US8443170B2 (en) Apparatus and method for performing SIMD multiply-accumulate operations
US6163836A (en) Processor with programmable addressing modes
KR20070026434A (ko) 듀얼 경로 프로세서에서 제어 프로세싱용 장치 및 방법
WO2006136764A1 (en) A data processing apparatus and method for accelerating execution of subgraphs
JP2016530631A (ja) ベクトルの算術的削減
EP2584460A1 (en) Vector processing system comprising a replicating subsystem and method
Anjam et al. A VLIW softcore processor with dynamically adjustable issue-slots
EP1735699B1 (en) Apparatus and method for dual data path processing
IL256403A (en) Array query length instruction
Galani Tina et al. Design and Implementation of 32-bit RISC Processor using Xilinx
JP2005508554A (ja) データ操作を利用したデータの計算と処理方法、及び、その装置
Blem et al. Instruction set extensions for cyclic redundancy check on a multithreaded processor
JP2014164659A (ja) プロセッサ
WO2013095259A1 (en) Vector execution unit for digital signal processor
EP0862112A2 (en) Data processing system having an instruction pipeline
US20060271610A1 (en) Digital signal processor having reconfigurable data paths
JP3669841B2 (ja) マイクロプロセッサ
Sunitha et al. Design and Comparison of Risc Processors Using Different Alu Architectures
JP2001092658A (ja) データ処理回路及びデータ処理装置
KR20070022239A (ko) 비대칭 듀얼 경로 프로세싱용 장치 및 방법
Dang et al. Efficient filtering with the co-vector processor
JPH0634205B2 (ja) ベクトル演算処理装置
JP2003058367A (ja) 演算装置

Legal Events

Date Code Title Description
A201 Request for examination
E601 Decision to refuse application