KR100998586B1 - 구성가능한 실행 유닛들을 구비한 고성능 하이브리드프로세서 - Google Patents

구성가능한 실행 유닛들을 구비한 고성능 하이브리드프로세서 Download PDF

Info

Publication number
KR100998586B1
KR100998586B1 KR1020047016062A KR20047016062A KR100998586B1 KR 100998586 B1 KR100998586 B1 KR 100998586B1 KR 1020047016062 A KR1020047016062 A KR 1020047016062A KR 20047016062 A KR20047016062 A KR 20047016062A KR 100998586 B1 KR100998586 B1 KR 100998586B1
Authority
KR
South Korea
Prior art keywords
design
logic
configurable
instructions
processor
Prior art date
Application number
KR1020047016062A
Other languages
English (en)
Other versions
KR20050008677A (ko
Inventor
왕알버트
로웬크리스토퍼
로젠탈버나드
Original Assignee
텐실리카 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텐실리카 인코포레이티드 filed Critical 텐실리카 인코포레이티드
Publication of KR20050008677A publication Critical patent/KR20050008677A/ko
Application granted granted Critical
Publication of KR100998586B1 publication Critical patent/KR100998586B1/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
    • 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
    • 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/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 or look ahead
    • G06F9/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or 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 or 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

하이브리드 프로세서를 구성하기 위한 새로운 일반적인 방법은, 보다 강력하고, 밀-결합된 명령어 세트 확장들이 재구성가능한 로직에서 구현되도록 함으로써, 어플리케이션들에서의 보다 높은 성능을 달성한다. 신규 세트 명령어들은 자동 및 반자동 방법들에 의해 발견 및 디자인될 수 있다. 개선된 재구성가능한 실행 유닛들은 깊은 파이프라이닝(deep pipelining), 추가 레지스터들과 레지스터 파일들의 추가, 많은 소스 및 수신지 레지스터들을 갖는 혼합 명령어 및 넓은 데이터 경로들을 지원한다. 신규 인터페이스 방법들은 하이브리드 프로세서들과 기타 로직간의 보다 적은 대기 시간, 보다 높은 대역폭 커넥션들을 허용한다.

Description

구성가능한 실행 유닛들을 구비한 고성능 하이브리드 프로세서{HIGH-PERFORMANCE HYBRID PROCESSOR WITH CONFIGURABLE EXECUTION UNITS}
본 발명은 프로세서에 관한 것으로, 특히 구성가능한 실행 유닛들을 구비한 고성능 하이브리드 프로세서에 관한 것이다.
응용-주문형 프로세서들(Application-specific processors)
마이크로프로세서들은 광범위한 전자 어플리케이션들에 사용되는데, 그 이유는 소프트웨어를 통한 그들의 프로그램능력이 매우 복잡한 작업(task)들의 신속한 개발 및 수정을 가능하게 하기 때문이다. 그들은 범용(general-purpose) 컴퓨터 시스템들 및 네트워크 라우터에서 이동 전화기에 이르는 특별화된 전자 장비 모두의 핵심부를 형성한다. 반도체 기술의 속도와 집적도가 발전함에 따라 지금까지의 디자인들보다도 더 빠르고, 더 작으며, 더 낮은 전력을 사용하는 마이크로프로세서들을 생산하는 것이 가능해졌다. 작업을 손쉽게 해주도록 프로그램하는데 편리하고 요구조건들을 충분히 만족시킬 정도로 효율적이기 때문에, 오늘날 마이크로프로세서들은 아주 많이 사용된다. 집적회로설계의 전통적인 경제학적인 측면(신규 마이크로프로세서 디자인을 설계하고 검증하기 위한 막대한 엔지니어링 노력 + 상당한 원형화(prototyping) 비용)에서 보면, 여러 상이한 작업들에 사용될 수 있는 프로 세서들이 장려된다.
대부분의 마이크로프로세서 디자인들은 범용이다. 그들은 고정된 세트의 특징들(명령어 세트, 메모리 시스템들과 인터페이스들)을 포함하는데, 이들은 광범위의 상이한 작업들에 응용가능한 프로세서를 만든다. 하지만, 이러한 일반적인 프로세서들은 여러 중요한 작업들에는 부적절하다. 특히, 프로그래머는 종종 일반적인 명령어들의 긴 시퀀스들을 이용하여 특정 어플리케이션 작업에 필요한 결과들을 계산하여야만 한다. 이러한 비효율성은 전자 시스템이 충분히 빠르지 않거나 또는 너무 많은 전력을 소산시킨다는 것을 의미할 수 있다. 따라서, 이러한 상황에서는 일반적인 마이크로프로세서가 용이하게 사용될 수 없다.
범용 플랫폼들의 매력(The attraction of universal platforms)
이상적인 솔루션은 응용-주문형 프로세서인데, 이는 하이-레벨 언어들로 손쉽게 프로그래밍할 수 있는 능력을 일반적인 프로세서들과 공유하지만, 특정 세트의 작업들에 대한 적절한 세트의 명령어들을 정확하게 포함한다. 응용-주문형 명령어 세트들은, 어플리케이션 및 명령어 세트에 따라, 실행되어야 하는 명령어들의 개수와 수백 폴드(fold)까지 실행되어야 하는 시간을 줄일 수 있다. 어떠한 소정의 응용-주문형 명령어 세트에 대해서도, 개선예들은 작은 세트의 어플리케이션들로 국한될 것이다. 그러므로, 특정 어플리케이션에 대해 조정된 마이크로프로세서를 개발하고 만드는 비용 및 노력을 줄이는 것이 중요하다.
비용 및 노력에 대한 두 가지 본질적인 구성요소들이 있다. 첫번째 구성요소는 신규 마이크로프로세서 및 관련된 소프트웨어를 찾아내고, 기술(describe)하며, 디자인하는 엔지니어링 노력이다. 본질적인 작업들은 다음과 같은 것들을 포함할 수 있다:
· 명령어 세트 최적화를 위한 성능 병목(performance bottlenecks)과 타겟 코드 섹션들을 찾기 위한 타겟 어플리케이션들의 분석.
· 실행에 필요한 프로세서 클록 사이클의 수를 줄이는 신규 명령어들의 정의.
· 인핸스드 명령어 디코드(enhanced instruction decode) 및 신규 명령어 실행 유닛들을 포함하는 인핸스드 프로세서의 구현을 위한 로직의 상세 디자인.
· 신규 소프트웨어 개발 툴(본질적으로는 신규 어셈블러, 하이-레벨 언어 컴파일러 및 프로그램이 인핸스드 명령어들과 여타의 특징들을 사용하도록 하는 여타의 소프트웨어 제너레이터)들의 개발.
· 프로세서의 인핸스드 하드웨어 자원(레지스터, 메모리 및 명령어)들을 관리하는데 필요할 수도 있는 운영체제들과 소프트웨어 라이브러리들과 같은 런타임 소프트웨어의 소정의 적응(adaptation).
응용-주문형 프로세서 개발을 위한 노력의 두번째 구성요소는, 인핸스드 명령어 세트를 갖는 완벽한 프로세서를 구현하는 반도체 집적회로의 생산이다. 이러한 구현은 낮은 원형화 비용과 낮은 볼륨 제조 원가(volume manufacturing cost)간의 균형을 맞춰야만 한다. 모든 로직 게이트, 메모리 및 와이어링이 타겟 프로세서 정의에 최적화되는 완전 주문형 디자인은 통상적으로 최소 크기, 최저 전력 및 최저 볼륨 제조 원가를 달성하지만, 개발 및 원형화를 위한 1회 비용(one-time cost) 들이 매우 높을 수 있다. 원형을 디자인하고 제조하기 위한 시간은 통상적으로 몇 개월이 걸린다. 제조 볼륨을 적절하게 낮추기 위해서는, 원형화의 상각비(amortized cost)가 직접 제조 원가보다 더 클 수도 있다.
비용 및 노력의 첫번째 구성요소는, A. Wang, E. Killian, D. Maydan, C. Rowen의 "Hardware/Software Instruction Set Configurability for System-on-Chip Processors"(Proceedings of Design Automation Conference, 2001) 또는 R. Gonzalez의 "Configurable and Extensible Processors Change System Design"(Proceedings of Hot Chips 11, 1999) 등에 개시된 프로세서 생성 툴들에 의해 해결된다. 이러한 툴은 전자 시스템의 디자이너로 하여금 신규 명령어 세트를 신속하게 찾고, 기술하며, 인증할 수 있게 하고, 완벽한 하드웨어 디자인과 이에 대응하는 소프트웨어를 생성하게 한다.
두번째 구성요소는 낮은 볼륨 디자인에 특히 중요하며, 솔루션들이 제안되어 왔다. 예를 들어, 전체 마이크로프로세서는 필드-프로그램가능한 게이트 어레이 디바이스들을 토대로 빠른 원형화 포맷으로 구현될 수 있다. 불행히도, 이러한 디바이스들의 완벽한 유연성(complete flexibility)으로 인하여 전자 기능부(electronic function) 당 비용이 더 높아지고, 클록 레이트들은 보다 낮아진다. 필드-프로그램가능한 로직으로 구현된 프로세서들은 흔히 5배 넘게 느려지고, 더 많은 주문형 표준-셀 회로 구현을 이용하여 구현된 동일 프로세서들에 비해 실리콘 면적이 10배 넘게 소비된다. 이러한 표준-셀 프로세서들은 주의깊게 핸드-조정된 회로들로 구현된 등가 프로세서들의 속도의 절반일 수 있다. 따라서, 하이브리드 구현을 고려하는 것이 매력적인데, 이 경우에는 공통 명령어, 레지스터, 메모리 및 인터페이스들을 포함하는 베이스 프로세서가 빠른 고밀도 회로들을 이용하여 구현되고, 느리지만 유연한 필드-프로그램가능한(flexible field-programmable) 또는 재구성가능한 로직(reconfigurable logic)의 일반적인 섹션을 신속하게 구성함으로써 응용-주문형 확장(extension)들이 구현된다. 이상적으로는, 이것이 보다 완전한 주문형 디자인의 속도 및 볼륨 비용 특성을 가지지만, 재구성가능한 로직 회로들의 낮은 원형화 비용 및 노력을 가지는, 아마도 단일 집적회로 상에 구현되는 표준 디자인을 만들어낼 것이다.
프로세서의 선택들 - FPGA 커플링
연구원들은 응용-주문형 프로세싱을 위한 재구성가능한 로직 및 마이크로프로세서들의 하이브리드들에 대한 가능성 있는 수많은 상이한 솔루션들을 기술하였다. Gilson 미국특허 제5,361,373호는 하이브리드를 형성하기 위한 별도의 표준 필드-프로그램가능한 게이트 어레이(FPGA) 디바이스들과 프로세서 회로의 조합을 약술하고 있지만, 그들간의 통신을 상세히 설명하고 있지 않으며, 또한 구성예들을 개발하거나 프로세서를 프로그래밍하기 위한 시스템적인 방법을 기술하지는 않았다. K. Compton, S. Hauck의 "Configurable Computing: A Survey of Systems and Software"(Technical Report, Northwestern University, Dept of ECE, 1999)에는 도 1에 모두 함께 프로세서(100)와 데이터 메모리(150)와 관련하여 도시된 4 가지 타입으로 카테고리화된 하이브리드들에 대한 가능성 있는 개론 접근법들이 개시되어 있지만, 어떠한 시스템도 재구성가능한 처리 유닛의 2 이상의 타입을 포함하지 는 않는 것 같다.
이러한 4 가지 타입들은: (1) 프로세서 내의 재구성가능한 기능 유닛들-프로세서 명령어들에 의해 직접적으로 제어된 기능 유닛들(110)이며, 내부 프로세서 레지스터들에 대한 액세스를 가진다. 연산들의 대기 시간(latency)은 하나 또는 소수(handful)의 사이클이다. (2) 재구성가능한 코프로세서(120)-프로세서에 의한 일정한 제어없이 작동되지만, 프로세서 메모리에 대한 액세스를 가질 수 있는 기능 유닛들이다. 연산들의 대기 시간은 수백 사이클 또는 그 이상으로 측정된다. (3) 부착 처리 유닛(attached processing unit)(130)-긴 주기의 시간동안 프로세서 감독(supervision)이 거의 없이 작동되는 기능 유닛들이다. 상기 처리 유닛(130)은 도 1에 예시된 데이터 메모리(150)와 같은 프로세서 로컬 메모리들을 액세스할 수 없다.
범용 프로세서(100)와 재구성가능한 처리 유닛(130)간의 통신은 버스(102) 상에서 일어나고, 수십 사이클이 걸릴 수 있다. 연산들의 대기 시간은 통상적으로 코프로세서들에서보다 훨씬 더 크다. (4) 자립(standalone) 처리 유닛(140)-여타의 프로세서에 독립적으로 작동되는 완벽한 독립 제어를 갖는 기능 유닛들이다. 그들은 통상적으로 네트워크(106)를 통하여 액세스되며, 매우 긴 대기 시간을 가지는데, 그 이유는 프로세서(100)와 통신하기 위하여 네트워크 인터페이스(104) 및 데이터 버스(102)를 통과해야만 하기 때문이다.
기술된 4 가지 타입에서, 프로세서(100) 내의 상기 재구성가능한 기능 유닛(110)들은 하이브리드화(hybridization)의 다른 형태들보다 적은 대기 시간 및 큰 데이터 대역폭을 달성하는 것으로 나타난다. 낮은 데이터 전송 레이트를 갖는 어플리케이션들에 있어서, 이 하이브리드화 타입은 현저한 효과를 가지지 않을 것이다. 하지만, 프로세서와 교환될 많은 데이터를 요구하는 어플리케이션들에 있어서는, 이러한 조직적인 선택이 극적인 효과(dramatic impact)를 가질 수 있다. 상기 재구성가능한 기능 유닛이 프로세서에 밀-결합(tightly-couple)되는 경우, 상기 기능 유닛 및 프로세서는 사이클 당 수 개의 피연산자들을 교환할 수 있고(2 이상의 소스 피연산자들과 하나의 결과 피연산자), 전송 대기 시간은 불과 한 사이클의 일부이다. 대조적으로, 코프로세서(120), 부착 프로세서(130) 및 자립 처리 유닛(140) 형태들은 2 사이클 이상의 전송 대기 시간을 요구하며, 사이클 당 단 하나의 피연산자를 달성하는 것도 어렵다.
프로세서 내에 재구성가능한 유닛을 배치하는 것에 있어서의 중대한 문제점(significant liability)은, 재구성가능한 기능 유닛들과 프로세서의 연산들간의 병렬성(parallelism)의 부족을 들 수 있다. 본 발명은, 피연산자 대역폭을 증가시키고 피연산자 대기 시간을 줄이며 베이스 프로세서와 기능 유닛들간의 그리고 기능 유닛들간의 병렬성을 최대화하는, 이러한 밀-결합된 재구성가능한 유닛들의 기본적인 개선들에 초점이 맞춰져 있다.
간단한 명령어 세트 확장들
밀-결합된 재구성가능한 기능 유닛들의 몇몇 간단한 예시들이 개시되어 있다. R. Razdan, M. D. Smith의 "A High-Performance Microarchitecture with Hardware-Programmable Function Units"(Proceedings of MICRO-27, November 1997) 및 미국특허 제5,696,956호, 제5,819,064호 및 제6,035,123호에는 추가적인 간단한 RISC 명령어들에 대한 조합 로직을 구현하는데 사용된 필드-프로그램가능한 로직 어레이 및 RISC 베이스 프로세서의 간단한 하이브리드가 개시되어 있다. 상기 필드 프로그램가능한 로직은 대중적인 상용 FPGA들에 사용되는 것과 유사한 n-입력, 1-출력 룩-업 테이블(LUT)들을 기초로 한다. 추가된 명령어들은 베이스 RISC 명령어들의 포맷 및 구조를 정확히 따른다. 명령어 인코딩의 고정된 일부는 재구성가능한 로직에 구현될 신규 명령어들을 위해 남겨진다. 명령어 워드의 일 필드는 일 조합 로직 함수의 구현을 위한 로직에 대응하는 ID를 구성한다. 각각의 추가된 명령어는 다른 명령어들과 동일한 2개의 소스 레지스터 피연산자들에 대한 액세스를 가진다. 각각의 추가된 명령어는 하나의 결과 피연산자를 생성할 수 있으며, 하나의 프로세서 사이클에서 그 결과를 생성하여야만 한다. 이 결과는 베이스 프로세서의 레지스터 파일내에 기록되고, 상기 결과는 베이스 프로세서의 워드 폭과 동일한 폭이다. 확장된 명령어가 실행되고 있는 경우, 병렬로 실행되는 다른 명령어는 없다. 나아가, 각각의 추가된 명령어에 대한 로직은 별개여서, 여타의 로직과 공유되지 않는다. 이는 각각의 명령어에 대한 구성이 프로그램 용도에 응답하여 동적으로 로딩되도록 하여, 필드-프로그램가능한 로직이 흔히 사용되는 확장된 명령어들의 캐시로서의 역할을 한다. 다른 한편으로, 이것은 명령어들간의 로직 공유와 명령어들의 그룹에 대한 보다 높은 로직 비용들을 막는다.
S. Hauck, T. W. Fry, M. H. Hosler, J. P. Kao의 "The Chimaera Reconfigurable Functional Unit"(Proceedings of the IEEE Symposium on Field- Programmable Custom Computing Machines, 1997)에는 베이스 프로세서의 레지스터 파일과 재구성가능한 기능 유닛들간의 피연산자 대역폭을 더욱 개선시키려고 한 하이브리드 디자인이 개시되어 있다. 범용 RISC 프로세서의 레지스터들의 서브셋은 필드 구성가능한 유닛 내에 쉐도우(shadow)되는데, 셋 이상이 소스 피연산자로서 사용될 수 있다. 하지만, 이것은 레지스터 파일로부터 필드-구성가능한 로직으로 이동해야만 하는 와이어의 개수를 극적으로 증가시킨다. 하지만, 단 하나의 결과 피연산자만이 사이클 당 생성될 수 있고, 그 폭은 베이스 RISC 프로세서의 워드 폭으로 제한되며, 그것은 파이프라이닝되지 않아 확장된 명령어의 디코딩 다음의 한 사이클로 계산이 종료되어야만 한다.
현존하는 발명들의 한계들
본 발명자들이 인식한 현존하는 발명들의 한계들은 다음과 같이 요약될 수 있다:
1. 프로세서와 필드-프로그램가능한 로직의 소-결합(loosely-coupling)은 매우 긴 대기 시간과 적은 대역폭을 나타낸다. 또한, 필드-프로그램가능한 로직의 연산들은 프로세서에 의해 밀접하게 조정(coordinate)되거나 소프트웨어에 의해 제어될 수 없다. 이는 두 서브시스템들에 의한 조인트 연산(joint operation)들을 활용하는데 있어서의 보다 낮은 성능, 보다 어려운 개발 및 보다 적은 기회들을 유발시킨다.
2. RISC 프로세서와 RISC-형 확장된 명령어들간의 밀-결합은 병렬성을 제한한다. RISC 프로세서에서, 계산 명령어(레지스터 파일 내의 값들을 토대로 레지스 터 파일 내에 신규 값들을 기록하는 명령어)들은 일반적으로 한 사이클로 실행된다. 베이스 명령어 또는 확장된 명령어 중 어느 하나는 파이프라인에서 한 타임(one time)으로 이슈(issue) 및 실행될 수 있다(양자 모두는 아님). 나아가, 다수의 재구성가능한 기능 유닛들이 있다면, 어떠한 사이클에서도 단 하나만이 한 명령어를 실행시킬 수 있다. 실행에 있어서의 효과적인 오버랩(effective overlap)은 없다.
3. RISC 프로세서와 RISC-형 확장된 명령어들간의 밀-결합은 신규 명령어들로부터의 스피드-업(speed-up)을 제한한다. RISC-형 명령어 인코딩은 통상적으로 단 2개의 소스 레지스터들이 특정화되도록 한다. 따라서, 재구성가능한 로직을 통해 추가된 신규 명령어들은 2개의 소스 피연산자들에 국한된다. 응용-주문형 명령어 세트 확장의 이점은, 일반적인 명령어(generic instruction)들의 긴 시퀀스가 특별한 명령어들의 짧은 시퀀스로 대체된다는 것을 들 수 있다. 불행히도, 일반적인 명령어들의 긴 시퀀스들이 단 2개의 소스 피연산자들을 가지는 경우는 거의 없다. 특별한 경우에만, 단일 RISC 명령어가 소수 이상의 일반적인 명령어들을 대신할 수 있다. 추가적인 일반 레지스터들에 대한 액세스를 제공하는 것은, Hauck 등에서와 같이, 잠재적 스피드-업을 향상시킬 수 있지만, 이러한 참고(reference)들은 명령어들의 정의에 내재(implicit)되어, 레지스터들의 선택이 심하게 제한된다. 이는 상기 명령어들을 3 이상의 소스 레지스터들과 함께 이용할 수 있는 가능성을 떨어뜨리고, 컴파일러들로부터의 코드 생성을 매우 어렵게 한다.
4. 기능 유닛 파이프라이닝의 결핍은 단일 명령어에 깊은(deep) 로직 함수를 구현할 수 있는 가능성을 떨어뜨린다. 대부분의 가치있는 가능성 있는 명령어 세트 확장들은 종종 수 개의 복잡한 산술 및 기타 연산들을 단일 명령어로 조합하는 것을 포함한다. 이 로직은 특히 느린 필드-프로그램가능한 로직에서 구현되는 경우에, 프로세서들의 정상적인 사이클 타임보다 긴 지연을 가질 수 있다. 이들 명령어들은 피해야만 하거나, 또는 다음 명령어를 이슈잉하기 전에 상기 결과를 기다리는 소정의 방식으로 프로세서가 스톨(stall)되어야만 한다. 어느 방법이든 하이브리드 마이크로프로세서들의 잠재적 스피드-업을 떨어뜨린다.
5. 앞서 공지된 밀-결합된 재구성을 위한 방법들은 모두 범용 프로세서 레지스터들 상에 신규 조합 기능들만을 제공한다. 신규 상태 레지스터들은 추가될 수 없다. 이것은 데이터에 대한 액세스의 대역폭을 제한시키고, 긴 시퀀스의 계산들 내에서 복잡한 중간 상태의 업데이트를 막는다. 베이스 프로세서 워드와 같은 폭을 가진, 단 하나의 결과로의 현존하는 제한이 특히 문제이다. 만일 신규 상태 레지스터 또는 완전한 레지스터 파일들이 추가될 수 있다면, 어플리케이션들의 큰 가속화의 기회들이 매우 증가될 것이다.
6. 간단한 RISC-형 명령어 포맷들로의 현존하는 제한은 유연성과 성능을 제한한다. 신규 포맷들이 추가될 수 있을 때, 비로서 신규 가속화 기회들이 나타난다. 명령어 포맷들의 2가지 중요한 클래스(class)들이 현 필드-구성가능한 프로세서들에서 간과되고 있다. 첫째는, 3 이상의 소스 피연산자들을 특정하는 명령어 포맷들인데, 여기서는 소스 피연산자들이 베이스 프로세서의 범용 레지스터들이나 또는 필드-구성가능한 기능 유닛들 내의 추가 레지스터들 및 레지스터 파일들 중 하 나로부터 나올 수 있다. 둘째는, 2 이상의 결과를 특정하는 명령어 포맷들이다. 다중 결과 명세자(specifier)들은 복잡한 연산들을 인코딩하거나 또는 단일 워드로 수 개의 간단한 연산들을 인코딩하는데 유용하다.
7. 현존하는 밀-결합된 필드-프로그램가능한 기능 유닛들은, 범용 RISC 명령어들의 빠른 치환물(fast substitute)들을 직접 구현하기 위한 수단으로서 의도된다. 그들은 SIMD(Single Instruction Multiple Data) 또는 벡터 연산들과 같은 데이터-병렬 연산들의 구현에는 그리 적합하지 않다. 이러한 한계는, 베이스 프로세서 레지스터들 정도로 넓은(통상적으로 32비트) 소스 및 결과 데이터-경로들의 사용에서 그리고 루프의 다중 반복(iteration)들이 병렬로 수행될 수 있는 경우들을 찾아내는 벡터화 기술들을 사용하지 않는 신규 명령어들의 발견 및 디자인에 대해 제안된 방법들에서 모두 나타난다. 더욱이, 현존하는 솔루션들은 범용 컴퓨터 시스템들에서 통상적으로 발견된 소프트웨어 알고리즘의 타입들을 가속화하는 것에 관한 것이다. 이들은 종종 넓은 정수 데이터-타입, 특히 16비트 및 32비트 정수들을 포함한다. 이러한 수많은 넓은 피연산자들을 포함하는 병렬 연산들은 하드웨어에 있어서 비싸다. 이와 대조적으로, 신호 및 이미지 처리와 같은 임베디드(embedded) 어플리케이션들에서는, 실제 원시 데이터 크기가 종종 꽤 작아(10비트 이하) 병렬 연산들의 기회들이 훨씬 더 많게 된다.
8. 현존하는 솔루션들의 바이어스는 또한 프로세서와 시스템 내의 다른 로직 기능부들간의 제한된 인터페이스에서 나타난다. 실질적으로, 사실상 모든 컴퓨터 시스템 데이터는 프로세서로 가기 전에 별도의 집적회로에 구현된 집중식 메인 메 모리를 통과한다. 이와는 대조적으로, 임베디드 전자 시스템들에서는, 프로세서가 종종 메모리, 입력/출력 인터페이스 및 기타 특별화된 로직과 동일한 집적회로에 구현된다. 모든 데이터가 메인 메모리를 통과하는 것은 병목을 형성할 수 있다. 프로세서에 대한 외부 로직의 직접 인터페이스는 대기시간을 줄이고 많은 연산들의 대역폭을 증가시킬 수 있다.
9. 응용-주문형 명령어 로직의 개발 및 사용을 위한 현존하는 방법들은, 각각의 추가된 명령어에 대한 로직이 나머지 것들과 독립적이라고 가정한다. 각각의 로직 구성은, 모든 소요 확장부들이 이용할 수 있는 구성가능한 로직 어레이에 피팅(fitting)될 수는 없다는 가정 하에, 요청이 있으면 로딩될 수 있다. 이것은 공통 로직이 용이하게 공유될 수 없어, 오버래핑하는 구현들을 갖는 두 명령어들이 모두 로직 어레이 내에 상주하는 경우에, 로직 기능들의 실질적인 중복(duplication)을 초래할 수 있는 가능성이 있다는 것을 의미한다.
이러한 한계들을 극복함으로써 하이브리드 프로세서들의 성능을 크게 향상시킬 수 있다.
본 발명은 현존하는 솔루션들의 주된 한계들을 해결한다.
본 발명의 장점은 전 소프트웨어 지원 및 베이스 프로세서와 확장들간의 매우 큰 대역폭을 갖는, 밀 결합된 명령어 세트 확장들로서 복잡한 실행 유닛들이 구현되도록 하는 것에 있다.
본 발명의 또 다른 장점은, 베이스 프로세서 및 1 이상의 확장된 실행 유닛 들을 가로지르는, 많은 독립 연산들이 동시에 진행되도록 하는 재구성가능한 실행 유닛들의 자동화된 파이프라이닝을 제공하는 것이다.
본 발명의 또 다른 장점은, 재구성가능한 로직에 깊은 파이프라이닝을 구현할 수 있는 유연한 능력을 제공함으로써, 복잡한 함수들을 단일 명령어들로 구현할 수 있다는 점이다.
본 발명의 또 다른 장점은, 모든 바이패스(bypass) 및 인터록(interlock) 로직의 효율적인 구현을 포함하면서, 재구성가능한 로직 내의 상태 레지스터들과 레지스터 파일들 모두를 완전히 지원하는 것이다.
본 발명의 또 다른 추가 장점은, 베이스 프로세서에서 이용가능하지 않은 명령어 포맷들로 재구성가능한 실행 유닛들을 구현하는 것이다. 광범위한 포맷들이 동시에 지원될 수 있으며, 레지스터 명세자 템플릿(template)들에 의해서만 제한된다.
본 발명의 또 다른 추가 장점은, 레지스터, 레지스터 파일 및 다양한 폭을 갖는 데이터 경로들을 포함하고, 재구성가능한 로직 패브릭(fabric)의 능력에 의해서만 제한되는 재구성가능한 실행 유닛들을 제공하는 것이다. 넓은 데이터 경로들은 단일 데이터 워드 내의 수 개의 피연산자들의 병렬 처리가 가능하고 효율적이게 한다.
본 발명의 또 다른 추가 장점은, 재구성가능한 로직의 블록이 수 개의 프로세서들에 의해 또는 하나의 프로세서와 기타 로직에 의해 공유되도록 하는, 확장된 실행 유닛들 및 프로세서간의 유연한 인터페이스의 용도이다. 프로세서에 대한 선 택적인 인터페이스는, 아마도 클록 및 대역폭-매칭 큐(bandwidth-matching queue)들을 통한 외측 로직 및 기타 프로세서들에 대한 메모리-매핑된 데이터 포트 액세스(memory-mapped data port access) 및 재구성가능한 실행 유닛들과 기타 로직간의 신호들의 직접 수입(import) 및 수출(export)을 포함한다.
본 발명의 또 다른 장점은, 공통 서브-함수들을 찾기 위해 한 세트의 명령어들에 대한 모든 로직이 함께 합성(synthesize)되도록 하고, 함께 사용될 명령어들의 그룹에 대한 전체 로직 면적 및 지연을 줄이는 것이다.
이에 따라, 본 발명은 상이한 어플리케이션들에 적합한 베이스 프로세서 명령어들을 갖는 구성가능하지 않은(non-configurable) 베이스 프로세서 디자인 및 상기 구성가능하지 않은 베이스 프로세서 디자인에 밀-결합되는 1 이상의 구성가능한 실행 유닛 디자인을 포함하여 이루어지고, 각각의 실행 유닛 디자인은 복잡한 연산을 각각 수행하는 확장된 명령어들을 구현할 수 있는 것을 특징으로 한다.
본 발명의 상기 형태와 기타 형태, 특징 및 장점들은 본 발명의 비제한적인 예시적인 실시예들을 통해 도면들을 참조하여 후술하는 상세한 설명에 더욱 기술되어 있으며, 동일한 참조 부호들은 여러 도면 전반에 걸쳐 본 발명의 유사한 부분들을 나타낸다:
도 1은 종래의 하이브리드 프로세서 디자인들의 집합을 예시한 도면;
도 2는 본 발명에 따른 하이브리드 프로세서의 블록도를 예시한 도면;
도 3은 본 발명에 따른 하이브리드 프로세서의 생성을 예시한 도면;
도 4는 본 발명에 따른 파이프라이닝된 스테이지(pipelined stage)를 구비한 하이브리드 프로세서의 일 실시예를 예시한 도면;
도 5는 본 발명에 따른 하이브리드 프로세서에 대한 레지스터 명세자 포맷(register specifier format)들의 예시적인 테이블;
도 6은 본 발명에 따른 파이프라이닝된 스테이지를 구비한 하이브리드 프로세서의 또 다른 실시예를 예시한 도면; 및
도 7은 본 발명의 또 다른 실시예를 예시한 도면이다.
본 발명은, 높은 클록 주파수, 저비용 및 저전력, 및 베이스 프로세서에 밀-결합되고 넓은 범위의 가능한 응용-주문형 명령어 및 인터페이스를 신속하게 구현하도록 될 수 있는 재구성가능한 로직 패브릭을 허용하는 기술로 구현된 베이스 프로세서의 조합을 이용하여, 하이브리드 응용-주문형 마이크로프로세서들을 구현한다. 상기 조합은, 높은 클록 주파수 및 각 어플리케이션을 구현하는데 필요한 적은 수의 사이클을 갖는 응용-주문형 마이크로프로세서로의 표준 전자 시스템의 신속한 개인화(rapid personalization)를 가능하게 한다.
본 발명에 따른 하이브리드 프로세서에서는, 기술된 바와 같이, 밀-결합된 재구성가능한 로직을 이용하여 얻어지는 핵심적인 이점은 다음과 같다: 일반적 프로세서 명령어들의 긴 시퀀스(통상적으로 기초 산술, 시프트 및 논리적 명령어들의 조합)가, 등가 기능을 새로운 형태로 구현하는 특별화된 명령어들의 훨씬 더 짧은 시퀀스로 대체된다는 점이다. 메모리 연산(load, store), 제어 흐름(branch, jump) 및 시스템 함수(interrupt handling, context switching)들과 같은 기타 연산들은 주로 베이스 프로세서의 현존하는 로직을 사용한다.
베이스 프로세서, 재구성가능한 로직, 명령어 메모리와 데이터 메모리 및 버스 인터페이스를 포함하는 하이브리드 프로세서(200)의 핵심 구조가 도 2에 도시되어 있다. 본 명세서에서 '재구성가능한'이란 용어는 잠재적인 최대 범위의 어플리케이션들을 내포하는 것으로 사용된다는 것을 유의해야만 하는데, 이는 구성될 수 있는(이하 소정의 경우에는 재구성될 수 있는) 시스템들을 포함할 수 있다. 이것은 제한적인 것으로 이해되어서는 아니되는데, 그 이유는 본 발명이, 단순하게 구성된 후 그 구성에 따라 사용되는 시스템들을 위한 본 명세서의 내용들을 이용하는 시스템들도 커버하기 때문이다.
예시된 바와 같이, 베이스 프로세서는 프로그램 카운터(212), 베이스 레지스터 파일(214), 베이스 ALU(216), 어드레스 제너레이터(218), 데이터 메모리 또는 캐시(220), 파이프라인 컨트롤러(222), 명령어 메모리 또는 캐시(224), 명령어 디코더(226) 및 버스 인터페이스(228)를 포함한다.
재구성가능한 로직은 확장된 레지스터 파일(230) 및 확장된 실행 유닛(232) 뿐만 아니라, 데이터 메모리 또는 캐시(220), 파이프라인 컨트롤러(222), 명령어 메모리 또는 캐시(224), 명령어 디코더(226) 등과 같은 부분들을 포함한다. 또한 베이스 프로세스의 소정 부분들은 재구성가능한 로직과 상호작용할 것이라는 것을 이해할 수 있다. 예컨대, 베이스 프로세서는 데이터 로드 및 스토어 뿐만 아니라 캐시 및 메모리 관리 연산들을 담당할 수 있다. 확장된 실행 유닛(232)들은 베이스 프로세서 내의 로드 스토어 유닛을 사용할 수도 있다. 또 다른 예시로서, 베이스 프로세서는 통상적으로 베이스 프로세서 상태 레지스터, 예외 처리(exception handling) 레지스터 및 기타 프로세서 제어 기능부들을 포함한다. 상기 재구성가능한 로직 내의 확장된 실행 유닛(232)들은 예외들을 생성할 수 있다. 또한, 베이스 프로세서는 기타 밀접하게 결합된 시스템 주변장치(버스 인터페이스, 타이머, 디버그 인터페이스 및 확장된 실행 유닛들에 의해 액세스될 수 있는 여타의 특별화된 인터페이스)들을 포함할 수도 있다. 베이스 프로세서에 의한 재구성가능한 로직의 구현에 대해서는 아래에 기술될 것이다.
본 방법에 의해 구현된 하이브리드 프로세서(200)들은, 예컨대 A. Wang, E. Killian, D. Maydan, C. Rowen의 "Hardware/Software Instruction Set Configurability for System-on-Chip Processors"(Proceedings of Design Automation Conference, 2001)에 개시된 Xtensa 프로세서와 같은 자동 프로세서 제너레이터에 의해 생성된 광범위한 명령어 세트 확장들을 사용할 수 있다. 확장된 명령어들은 각각 2개의 소스 피연산자 및 1개의 결과 피연산자를 갖는 간단한 RISC-형 명령어들을 포함할 수 있지만, 또한 복잡한 연산들을 수행할 수 있는 다음과 같은 것을 포함하는 폭넓은 범위의 기타 명령어 기능부들과 프로세서 로직 구현들을 포함할 수도 있다:
1. 피연산자용 직접 소스 또는 수신지로서 프로세서 메모리를 갖는 명령어들;
2. 구성가능한 로직 패브릭에 구현된 1 이상의 상태 레지스터 또는 레지스터 파일들을 갖는 명령어들;
3. 수많은 레지스터 명세자 필드들을 갖는 명령어들;
4. 베이스 프로세서 아키텍처와 같지 않은 기본 포맷들을 갖는 명령어들;
5. 프로세서에 의해 도시되고 구성가능한 프로세서 인터록 및 바이패스 로직에 의해 지원되는 바와 같이, 한 프로세서 클록 사이클보다 큰 대기 시간을 갖는 명령어들로서, 이는 완전히 또는 부분적으로 파이프라이닝되어 베이스 명령어들과 재구성가능한 패브릭에서 구현된 명령어들간, 또는 수 개의 명령어와 재구성가능한 패브릭에서 구현된 모든 명령어들간의 상당한 병렬성을 허용할 수 있음;
6. 베이스 프로세서의 원시 폭(native width)보다 넓은 피연산자들을 연산하는 명령어들;
7. 2 이상의 기본 피연산자를 단일 소스 및/또는 결과 복합 피연산자와 조합시키고, 모든 기본 피연산자들에 대한 단순한 또는 복잡한 연산들을 병렬로 수행하는 명령어들;
8. 베이스 프로세서가 주문형 반도체 회로 또는 반-주문형(semi-custom) 표준 셀 또는 게이트 어레이 회로에 구현되고, 재구성가능한 로직이 필드-프로그램가능한 로직 또는 필드-구성가능한 데이터-경로 요소들로 구현되는 경우의 구현들; 또는
9. 베이스 프로세서가 주문형 반도체 회로에 구현되고, 재구성가능한 로직이 반-주문형 표준 셀 또는 게이트 어레이 회로로 구현되는 경우의 구현들.
본 방법을 따르는 신규 하이브리드 프로세서 구성들의 생성은 일반적으로 도 3에 예시되어 있다. 본 방법은 통상적으로 어플리케이션 코드의 시뮬레이션을 토대로, 코드의 임계부(critical section)들을 식별하기 위하여 단계 310으로 예시된 타겟 어플리케이션 세트의 프로파일링을 포함한다. 명령어 세트 확장들의 개발이 하이-레벨 명령어 세트 기술 언어를 이용하여(컴파일러-자동화된 320A 또는 매뉴얼 320B 기술들을 이용하여) 단계 320에 도시되어 있다. 단계 330은, 예컨대 A. Wang, E. Killian, D. Maydan, C. Rowen의 "Hardware/Software Instruction Set Configurability for System-on-Chip Processors"(Proceedings of Design Automation Conference, 2001)에 개시된 바와 같이, TIE 등의 언어를 이용한 중간 표현(intermediate representation)(명령어 세트 기술)의 개발을 예시한다. 이러한 명령어 세트 기술은 상기 명령어의 인코딩, 시맨틱 및 파이프라이닝에 필요한 기본 정보 및 프로세서의 부분으로서의 구현을 모두 포함한다. 단계 340은 프로세서 생성을 예시하는데, 여기서 한 세트의 확장된 명령어들은 1) 구성가능한 실행 유닛들의 구성(로직 기술 또는 넷리스트(netlist)의 형태로), 2) 컴파일러, 어셈블러, 디버거 및 라이브러리들과 같은 확장된 소프트웨어 툴들, 3) 확장된 프로세서용 시뮬레이터 및 4) 확장된 명령어 세트를 지원하는 실시간 운영체제들과 같은 런타임 소프트웨어로 번역된다. 상기 컴파일러, 어셈블러 및 라이브러리들은 확장된 명령어 세트의 사용을 포함하는 어플리케이션용 바이너리 코드를 생성하기 위한 표준 방법들에 의해 사용될 수 있다. 그런 다음, 평가 단계 350이 이루어지는데, 이는 재구성가능한 로직에 구현된 로직의 크기와 속도의 단계 350A에 도시된 평가 뿐만 아니라 어플리케이션 바이너리를 실행시켜 어플리케이션 속도의 단계 350B에 도시된 평 가를 포함한다.
이 신규 방법의 핵심은 프로그램가능한 로직의 신규 실행 유닛으로의 재구성을 통한 복잡한 명령어 세트 확장들에 대한 지원이다. 이들은 넓은 데이터 경로, 추가 레지스터 파일 및 다수 클록 사이클에 걸친 실행의 파이프라이닝을 포함할 수 있다. 이 예시가 도 4에 도시되어 있다.
도 4는 다양한 파이프 스테이지들을 예시한 기능적 표현의 하이브리드 프로세서(200)를 보여준다. 도시된 바와 같이, (도 2의 명령어 메모리(224)에 대응하는) 명령어 메모리, (도 2의 명령어 디코더(226) 및 파이프라인 컨트롤러(222)에 함께 대응하는) 디코더와 인터록 및 바이패스 계산 로직, 및 (도 2의 베이스 ALU(216) 및 연관된 회로들에 대응하는) 로직은 소스 피연산자들을 소비(consume)하거나 결과들을 생성하는 각각의 파이프 스테이지에서 나타날 수 있다. 도 4는 또한 기본 파이프라인 구조를 보여준다. 이 예시는 베이스 프로세서 명령어들에 대한 5개의 스테이지 파이프 및 확장된 기능 유닛들에 대한 7개의 스테이지 파이프를 가지지만, 베이스 및 확장된 기능 유닛 파이프 스테이지들의 어떠한 개수도 수용될 수 있다. 이는 (도 2의 베이스 레지스터 파일(214)에 대응하는) 베이스 레지스터들을 보여주지만, 베이스 프로세서는 예를 들어 다수의 레지스터 파일들을 포함할 수 있다. 전통적으로 어드레스 레지스터, 부동 소수점 레지스터 및 조건 코드 레지스터들도 포함되고, 베이스 레지스터들을 만드는 레지스터 파일들의 특정 예시들이 도시되어 있다.
도 4는 또한 베이스 레지스터 파일로부터 나와 그것으로 되돌아가는 2개의 소스 피연산자(읽기 포트) 및 1개의 결과(쓰기 포트)를 보여주지만, 베이스 프로세서 레지스터 파일들은 보다 많은 읽기 포트 또는 보다 많은 쓰기 포트들을 포함할 수 있다는 것을 알 수 있다. 도시된 바와 같이, 이것은 ALU, 메모리 및 제어 명령어들을 포함하는 어떠한 베이스 명령어에도 사용될 수 있다. 하지만, 그것은 베이스 프로세서와 보다 많은 레지스터 파일들을 갖는 베이스 명령어 세트 및 보다 많은 소스 및 결과 포트를 가질 수 있으므로, 기술된 본 발명은 특정 베이스 명령어 세트 또는 파이프라인으로 제한되지는 않는다는 것도 이해하여야만 한다.
도 4에는 명시적으로 도시되지는 않았지만, 바람직한 실시예에서, 확장된 실행 유닛들은 베이스 레지스터 파일들로부터 소스 데이터에 대한 액세스를 가지며, 상기 확장된 실행 유닛들은 확장된 레지스터 파일들 및 베이스 레지스터 파일들 또는 양자 모두로 다시 돌아가는 결과들을 생성할 수도 있다.
이와 유사하게, 베이스 실행 유닛들-"확장 로직"으로 라벨링된 블록에서의 다수의 사이클에 걸친 스프레드(spread)-은 다양한 워드 폭들을 가질 수 있다. 예를 들어, 어드레스 레지스터에서의 연산은 32 비트일 수 있고, 부동 소수점 레지스터에서의 연산은 64 비트일 수 있으며, 조건 코드 레지스터에서의 연산은 1 비트 폭을 가질 수 있다. 재구성가능한 실행 유닛들은 동일한 다양성(variety)을 가진다. 그들은 폭이 다를 수 있으며; 그들은 다수의 레지스터 파일을 가질 수도 있으며; 파이프라인들은 베이스 프로세서 파이프라인보다 더 짧거나 길 수도 있다. 데이터 메모리 로드 및 스토어들에 대한 어드레스는 베이스 프로세서 실행 유닛들이나 또는 재구성가능한 실행 유닛들 중 어느 하나로부터 기인할 수도 있음을 유의한 다.
도 4는 또한 프로세서 내의 인터록 및 바이패스 연산들의 기본 형태를 보여준다. 만일 마이크로프로세서 계산이 2 이상의 파이프라인 스테이지를 취한다면, 후속 명령어는 상기 결과에 대해 대기(waiting)될 수 있다. 인터록 메커니즘은 제1명령어의 수신지 레지스터를 제2명령어의 소스 레지스터에 대해 비교함으로써 상기 조건을 검출하는 것이 특징이다. 그들이 일치한다면, 프로세서는 첫번째가 결과를 생성할 때까지 두번째의 실행을 지연시켜야만 한다. 파이프라인된 프로세서에서, 소스 피연산자들은 보통 레지스터 파일로부터 판독된다. 명령어의 결과들은 단지 명령어 및 그 전에 있던 명령어들이 에러없이 종료되었다고 알려진 후에만 레지스터 파일들에 재기록된다. 만일 결과가 앞선 파이프 스테이지에서 생성된다면, 기록되기 전에 하나 또는 그 이상의 사이클들이 강제될 수 있다. 바이패스 메커니즘은, 레지스터 파일을 기록한 후에 판독하지 않고도 소스로서 상기 결과값을 얻기 위하여 상기 결과를 기다리는 후속 명령어를 허용한다. 앞선 재구성가능한 프로세서들은 재구성가능한 바이패스 및 인터록 제어들에 의해 재구성가능한 파이프라인된 실행 유닛들을 구현하지 않았다.
본 발명의 핵심은, 베이스 파이프라인에 명령어들의 결과들을 포함하는 베이스 프로세서의 동작(behavior), 및 필드 프로그램가능한 로직에 구현된 확장된 실행 유닛들의 동작을 조정하는 하이브리드 바이패스 및 인터록 메커니즘을 구현하기 위한 메커니즘이다. 이 메커니즘은 결과 데이터가 확장된 실행 유닛들의 파이프 스테이지들 사이에 그리고 베이스 프로세서와 확장된 실행 유닛들 사이에서 정확하게 전달되는 것을 보장한다. 또한, 하이브리드 프로세서(200)를 스톨하기도 하는데, 기다린 결과들이 신규 명령어들에 대해 이용가능할 때까지 베이스 프로세서와 확장된 실행 유닛들 양자 모두에 대한 신규 명령어들의 이슈잉(issuing)을 포함한다. 인터록 및 바이패스 조건들을 처리하기 위한 핵심 작업들은 다음과 같다:
1. 프로세서 파이프라인에서의 각각의 스테이지에서 명령어에 대한 소스 및 수신지 레지스터들을 트래킹(track)함.
2. 각각의 파이프 스테이지에서, 상기 파이프 스테이지에 필요한 각각의 소스 레지스터 명세자들을, 그 레지스터 파일로 가도록 되어 있는 각각의 수신지 레지스터 명세자들에 대해 비교함.
3. 이미 결과가 얻어진 때마다, 레지스터 파일에 기록되기 위해 대기되고(모든 선행 명령어가 안전하게 종료되었다고 알려질 때까지 대기됨), 소스 연산으로서 필요하면, 레지스터 파일로부터의 소스값 대신에, 실행 유닛의 소스 피연산자 입력으로 실제 결과값을 바이패스함.
4. 결과를 아직 이용할 수 없을 때마다, 그것은 여전히 실행 파이프라인에서 계산되고 있기 때문에, 상기 결과가 이용될 수 있을 때까지 종속 명령어를 스톨하고, 바이패스될 수 있음.
하이브리드 프로세서들의 디자인에 대한 한 가지 주요 과제는, 예컨대 표준 셀들과 같은 고속 로직 기술에서 구현된 베이스 프로세서와 예컨대 FPGA Look Up Tables(LUTs) 및 프로그램가능한 인터커넥트(interconnect)와 같은 보다 낮은 성능의 로직 기술로 구현된 재구성가능한 실행 유닛들간의 회로 성능에 있어서의 갭이 다. 이 갭은 두 서브시스템들간의 인터페이스에서의 그 위치들에 있어서, 특히 베이스 프로세서가 일부 조건을 통신하고, 재구성가능한 로직이 베이스 프로세서 하이-클록 레이트 파이프라인의 요구조건에 맞는 응답을 만들어야 하는 경우에 특히 중요하다. 다음의 리스트들은 베이스 프로세서와 재구성가능한 실행 유닛들간의 통신의 주 타입(major type)들을 열거한다.
베이스로부터 재구성가능한 유닛들로:
· 재구성가능한 명령어들의 상세의 재구성가능한 로직에서의 디코딩을 쉽게 하기 위하여 흔히 사용되는 소정 신호들의 잠재적 원-핫 인코딩(potential one-hot encoding)을 포함하는, 레지스터 명세자, 연산 명세자 및 중간 값들을 포함하는 명령어 워드. 이들 추가된 신호들은 명령어 길이, 명령어 포맷 또는 소정 명령어 필드들의 추가 디코딩에 대한 정보를 포함할 수도 있다.
· 소스 피연산자로서 사용되기 위해 앞선 베이스 프로세서 명령어들로부터의 바이패스된 결과들 또는 베이스 레지스터 파일(들)로부터 판독된 소스 피연산자들.
· 데이터 메모리 또는 캐시로부터 판독된 로드 데이터.
· 스톨, 예외 및 기타 운영 모드 정보(예컨대, 특권 레벨(privilege level))를 포함하는 제어 정보.
재구성가능한 유닛들로부터 베이스로:
· 베이스 레지스터 파일(들)로 되돌아가고 베이스 실행 유닛들로 바이패스될 결과 피연산자들.
· 데이터 메모리 또는 캐시로 기록될 소스 데이터.
· 제어 정보(예컨대, 예외 응답 및 명령어 실행 취소를 발생시키는데 사용될 에러 지시들)
바람직한 실시예에서는, 재구성가능한 실행 유닛들이 베이스 프로세서에 의해 사용될 스톨 정보의 계산을 직접 담당하지 않는다는 것을 유의한다. 이것은 한 세트의 재구성가능한 명령어 포맷 및 종속 템플릿들을 이용하여 베이스 프로세서 내에서 모두 계산된다. 이러한 템플릿들의 사용은 탁월한 고안인데, 그 이유는 베이스 프로세서와 재구성가능한 유닛들간의 속도차에 의해 부과된 가장 중요한 문제점(파이프라인들의 조정(coordination))을 해결하기 때문이다.
베이스 프로세서 로직은 다음과 같은 메커니즘을 이용하여 일반화된 재구성가능한 스톨 로직을 구현할 수 있다.
1. 전체 명령어 인코딩 스페이스의 일부분은 재구성가능한 명령어 세트 확장에 할당된다. 이는 베이스 프로세서의 명령어 세트 이외에 수십 또는 수백 개의 명령어들을 추가하는 것을 가능하게 한다. 이러한 명령어 슬롯들은 스케줄링 그룹들 내에 정적으로 할당될 수 있다.
2. 재구성가능한 테이블은 명령어 슬롯들의 각각의 그룹에 대한 2개의 값들을 포함한다:
명령어 포맷 넘버 - 명령어 워드 내에서 (재구성가능한 명령어들에 의해 사용된) 모든 레지스터 명세자들의 장소 및 크기를 정의하는 지원된 명령어 템플릿들 중 하나의 식별자. 예컨대, 하이브리드 프로세서(200)는 아래 도 5에 도시된 바와 같이 8개의 레지스터 명세자 포맷들을 정의하고, 3비트 필드로 각각의 명령어 그룹에 대한 선택을 인코딩할 수 있다.
use/def 넘버 - 재구성가능한 실행 유닛들에 대한 파이프라인 깊이들의 지원된 세트 중 하나의 식별자. 예컨대, 하이브리드 프로세서(200)는, 소스 피연산자가 요구(use)되는 파이프 스테이지 및 결과값이 생성(def)되는 파이프 스테이지에 대한 가능성들의 다음과 같은 표를 정의하고, 2비트 필드로 use/def 세트에 대한 선택을 인코딩할 수도 있다.
피연산자
1
피연산자
2
피연산자
3
피연산자
4
피연산자
5
피연산자
6
세트 0 Use 1 Use 1 Def 3 Use 1 Use 1 Def 3
세트 1 Use 1 Use 1 Use 3
Def 6
Use 1 Use 1 Def 3
세트 2 Use 1 Use 1 Use 1
Def 3
세트 3 Use 1 Def 3
명령어 그룹 내의 모든 확장된 명령어들은 동일한 명령어 포맷 및 use/def 패턴을 가질 것이다. 만일 동일한 포맷 및 use/def 패턴을 갖는 명령어들이 한 그룹 내의 명령어들보다 많다면, 2 이상의 그룹이 사용될 수 있다. 이러한 템플릿들을 구성하는데 사용된 동일한 포맷 및 use/def 정보는, 상세한 명령어 연산코드(opcode) 지정 및 디코드 로직을 생성하고, 상기 로직의 파이프라이닝을 자동화하며, 사이클-정확 시뮬레이터 및 코드 스케줄러를 자동으로 생성하는데 사용될 수도 있다.
베이스 프로세서와 재구성가능한 실행 유닛들간의 로직 속도차를 조정하는 두 가지 기본 접근법이 있다.
첫째, 재구성가능한 로직은 깊게 파이프라이닝될 수 있다. 이것은 재구성가능한 파이프라인에서의 모든 중간값들이 베이스 프로세서와 동일한 클록으로 파이프라인 레지스터 클록에서 캡처된다는 것을 의미한다. 이것은 예컨대 면적이나 시간에 대한 추가 비용없이도 플립-플롭을 각각의 LUT와 연관시키는 일부 FPGA 아키텍처에 매우 잘 적용된다. 이것은 시뮬레이터에서 파이프라인을 모델링하는 소프트웨어 툴들을 구현하기 위하여 프로세서 제너레이터의 능력을 완전히 활용하고, 상기 연산들의 파이프라인 대기시간을 숨기는(hide) 코드를 생성 및 스케줄링한다. 이러한 깊게 파이프라이닝된 접근법은, 베이스 프로세서에서의 동일한 로직에서보다 재구성가능한 로직에서 훨씬 더 깊은 파이프라인들을 요구할 수 있다. 예를 들어, 0.18 마이크론 표준 셀 프로세스에서는, 최악의 경우 200MHz의 클록 레이트가 가능하다(각각의 파이프 스테이지가 5ns로 실행됨). FPGA에서의 재구성가능한 로직은 4배 더 느려져, 표준 셀-기반 파이프라인에서 동일한 로직을 구현하는데 필요한 각각의 것에 대하여 적어도 4개의 파이프 스테이지들을 요구할 수 있다. 이러한 접근법은 높은 반복 레이트의 장점을 가진다(신규 확장된 연산이 각 베이스 프로세서 사이클마다 재구성가능한 파이프라인에서 개시될 수 있다).
둘째, 재구성가능한 로직은, 통상적으로 베이스 프로세서의 클록이 재구성가능한 로직 클록의 정수배가 되도록 보다 느린 클록 레이트로 실행될 수 있다. 베이스 프로세서는 긴 대기시간을 갖는 깊게 파이프라이닝된 재구성가능한 유닛들을 여전히 볼 수 있지만, 재구성가능한 로직은 여분의 파이프라인 레지스터들의 타이밍 오버헤드(timing overhead)를 가지지 않을 수도 있다. 예컨대, 0.18 마이크론 표준 셀 프로세스에서는, 최악의 경우 200MHz의 클록 레이트가 가능한 한편(각각의 파이프 스테이지가 5ns로 실행됨), FPGA 기술로 구현된 재구성가능한 로직은 실제 클록 주파수가 50MHz인 유사한 로직을 구현할 수도 있다(각각의 파이프 스테이지가 20ns로 실행됨). 베이스 프로세서는 상기 유닛이 4배의 클록 레이트로 실행될 것을 고려하지만, 4배의 파이프라인 깊이 및 매 4번째 베이스 프로세서 사이클에서만 신규 연산을 흡수하는 능력을 가진 것을 고려할 수도 있다. 2-클록 하이브리드가 도 6에 도시되어 있는데, 이는 3으로 나눈(divide-by-three) 재구성가능한 실행 유닛 클록을 가진다.
몇 가지 변형예가 있다. 베이스 프로세서 및 재구성가능한 로직 클록은 서로에 대해 비동기적일 수 있지만, 경계에서의 각 신호에 대한 클록 재동기화의 비용이 높을 수도 있다. 2 이상의 재구성가능한 실행 유닛이 있을 수도 있으며, 각각이 베이스 프로세서 클록에 대한 자체 클록 젯수(own clock divisor)를 가질 수도 있다.
도 7에 도시된 바와 같이, 밀접한 관계(close association)로 구현된 기타 기능부들과의 재구성가능한 패브릭의 모든 공유를 토대로, 베이스 프로세서의 보다 고정된 구현 및 명령어 세트 확장들에 대한 보다 재구성가능한 로직 패브릭을 조합하는 하이브리드 확장가능한 프로세서의 구현은 3가지 또 다른 탁월한 고안을 만들어낸다:
1. (712A 및 712B로 도시된) 명령어 세트 확장부들과 비-프로세서 로직(714)은 재구성가능한 로직의 단일 블록(710)을 공유할 수 있는데, 이 둘은 이용가능한 재구성가능한 패브릭의 최선의 활용을 얻기 위하여 논리적으로는 별도로 사용되지만 물리적으로는 혼합되어 사용된다. 베이스 프로세서(도시된 730A 또는 730B)는 그것의 정상적인 데이터 판독 및 기록 능력들을 사용하여, 베이스 프로세서와 기타 기능부들간의 큰-대역폭, 낮은-대기시간 데이터 포트로서의 역할을 하고, 베이스 프로세서의 어드레스 스페이스 내에 매핑되는 상태 요소들을 판독 및 기록할 수 있다. 들어오고 나가는 데이터 큐들은 데이터 생성/소비 레이트의 상이한 클록 주파수들을 수용하거나, 또는 외부 로직으로부터의 파이프라인 동작(예컨대, 명령어 스톨 및 취소)의 상세를 숨기는데 사용될 수도 있다. 비-프로세서 로직은, 예를 들어 데이터 큐들과 같은 데이터 버퍼링 로직, 반복적인 암호화 엔진들과 같은 명령어 실행부에 연결(tie)되지 않는 상태 머신들을 토대로 한 자치 계산 기능부(autonomous computation function)들, 시리얼 인터페이스 채널들과 같은 표준 데이터 입력/출력, 버스 모니터링 또는 디버그 하드웨어 지원부와 같은 프로세서 지원 기능부들 또는 필드-프로그램가능한 또는 표준 셀 로직에 흔히 구현된 여타의 로직 기능부를 구현하는데 사용될 수 있다.
2. 2 이상의 베이스 프로세서(도시된 730A 또는 730B)들은 통일된 재구성가능한 로직 패브릭(720)을 공유할 수 있다. 이는 상기 패브릭의 보다 양호한 활용을 가능하게 하고, 종종 보다 큰 대역폭과 일반적인 버스 전송보다 느린 대기시간을 가질 수 있는 프로세서들간의 통신을 위한 자연적인 메커니즘을 제공한다. 두 프로세서들은 상기 1번 항목의 메모리-매핑된 인터페이스 방법을 사용할 수 있다. 그 후, 큐들과 기타 로직(732)은 두 프로세서의 데이터 포트(734A, 734B)를 함께 연결 하도록 구성될 수 있다.
3. 재구성가능한 패브릭에 구현된 기타 로직은 버스(736A, 736B)를 통해 확장된 명령어들과 직접 통신할 수 있지만, 기타 로직에서의 임의의 신호들이 소스 피연산자로서 명령어 실행부로 수입될 수 있고, 수신지 레지스터들에 기록된 어떠한 값들도 기타 로직으로 신호들을 구동(drive)하도록 수출될 수 있는 명령어들을 정의한다. 이것은 특별화된 정보의 매우 신속하고도 간단한 통신을 유도한다.
지금까지 여러 바람직한 실시예들이 상세히 기술되었지만, 당업계의 당업자에게는, 본 발명의 신규성 및 장점들에서 벗어나지 않으면서 예시적인 실시예들의 수많은 변형예들이 가능하다는 것은 자명하다. 예를 들어, 상기 상세한 설명에서는, 베이스 프로세서에 구현된 소정의 명령어들이 항상 있고, 추가 명령어(확장)들이 필드 프로그램가능한 로직에서 행해진다. 극단적으로는, 모든 명령어들은 필드-프로그램가능한 로직을 필요로 할 수 있으며, 베이스 프로세서는 다만 명령어들을 페치 및 이슈하기 위한 하부구조(infrastructure)를 포함한다. 따라서, 많은 경우에 있어서는 바람직하지만, 명령어들의 일부 세트가 반드시 베이스 프로세서에 완전히 구현될 필요는 없다. 따라서, 본 발명은 아래의 청구범위를 고려하여 해석되어야만 한다.

Claims (57)

  1. 하이브리드 프로세서에 있어서,
    상이한 어플리케이션들에 적합한 일반적인 명령어들을 갖는 제1로직기술로 구현된 구성가능하지 않은(non-configurable) 프로세서 디자인; 및
    상기 구성가능하지 않은 베이스 프로세서 디자인에 밀-결합되는(tightly-coupled) 상기 제1로직기술과 상이한 제2로직기술로 구현된 구성가능한 로직 디자인을 포함하여 이루어지고,
    상기 구성가능한 로직 디자인은 자동 프로세서 제너레이터에 의해 생성된 확장된 명령어들을 구현할 수 있으며,
    상기 구성가능한 로직 디자인은 2 이상의 사이클의 파이프라인 깊이를 가지는 것을 특징으로 하는 하이브리드 프로세서.
  2. 제1항에 있어서,
    상기 베이스 프로세서 디자인의 제1로직기술은, 주문형 로직 및 표준 셀 회로 디자인 기술들 중 하나를 사용하고, 상기 구성가능한 로직 디자인의 제2로직기술은 필드 프로그램가능한 로직의 사용을 포함하는 또 다른 디자인 기술을 이용하는 것을 특징으로 하는 하이브리드 프로세서.
  3. 제2항에 있어서,
    상기 필드 프로그램가능한 로직은 RAM-기반 룩-업 테이블들로 구현되는 것을 특징으로 하는 하이브리드 프로세서.
  4. 제2항에 있어서,
    상기 베이스 프로세서 디자인의 제1로직기술 및 상기 구성가능한 로직 디자인의 제2로직기술은 각각 반도체 디바이스로서 구현되는 것을 특징으로 하는 하이브리드 프로세서.
  5. 제1항에 있어서,
    상기 베이스 프로세서 디자인의 제1로직기술은 주문형 로직 회로 디자인 기술을 이용하고, 상기 구성가능한 로직 디자인의 제2로직기술은 표준 셀 또는 게이트-어레이 로직 회로들의 사용을 포함하는 또 다른 디자인 기술을 이용하는 것을 특징으로 하는 하이브리드 프로세서.
  6. 제5항에 있어서,
    상기 베이스 프로세서 디자인의 제1로직기술 및 상기 구성가능한 로직 디자인의 제2로직기술은 각각 반도체 디바이스로서 구현되는 것을 특징으로 하는 하이브리드 프로세서.
  7. 제1항에 있어서,
    상기 베이스 프로세서 디자인은 레지스터들의 폭이 32비트인 것을 특징으로 하는 하이브리드 프로세서.
  8. 제1항에 있어서,
    상기 베이스 프로세서 디자인은 16개 이상의 범용 레지스터들을 지원하고, 베이스 명령어 포맷은 32비트 미만을 사용하는 것을 특징으로 하는 하이브리드 프로세서.
  9. 삭제
  10. 제1항에 있어서,
    상기 확장된 명령어들 중 1 이상은 확장된 레지스터들 또는 확장된 레지스터 파일들에서 동작하는 것을 특징으로 하는 하이브리드 프로세서.
  11. 제1항에 있어서,
    상기 확장된 명령어들 중 1 이상은 상기 베이스 프로세서 디자인의 레지스터들보다 넓은 데이터 경로를 이용하는 것을 특징으로 하는 하이브리드 프로세서.
  12. 제11항에 있어서,
    상기 베이스 프로세서 디자인의 레지스터들보다 넓은 데이터 경로들은, 데이터 워드 내의 수 개의 피연산자들 각각에 대한 동일한 연산을 병렬로 계산하는데 사용되는 것을 특징으로 하는 하이브리드 프로세서.
  13. 제11항에 있어서,
    상기 확장된 명령어들 중 1 이상의 또 다른 것은 3 이상의 소스 레지스터 명세자들을 사용하는 것을 특징으로 하는 하이브리드 프로세서.
  14. 제1항에 있어서,
    상기 확장된 명령어들 중 1 이상은 3 이상의 소스 레지스터 명세자들을 사용하는 것을 특징으로 하는 하이브리드 프로세서.
  15. 제1항에 있어서,
    상기 확장된 명령어들 중 1 이상은 2 이상의 결과를 계산하는 것을 특징으로 하는 하이브리드 프로세서.
  16. 제1항에 있어서,
    상기 구성가능한 로직 디자인은 상기 베이스 프로세서 디자인과 동일한 클록으로 파이프라이닝되는 것을 특징으로 하는 하이브리드 프로세서.
  17. 제1항에 있어서,
    상기 베이스 프로세서 디자인은, 로드 및 스토어 연산들을 통해 상기 구성가능한 로직 디자인에 구현된 비-프로세서 로직(non-processor logic)에 대한 액세스를 가지는 것을 특징으로 하는 하이브리드 프로세서.
  18. 제1항에 있어서,
    상이한 어플리케이션들에 적합한 명령어들을 갖는 1 이상의 또 다른 구성가능하지 않은 베이스 프로세서 디자인을 더 포함하고,
    상기 구성가능하지 않은 베이스 프로세서 디자인 및 상기 또 다른 구성가능하지 않은 베이스 프로세서 디자인은 상기 구성가능한 로직 디자인을 공유하고, 상기 구성가능하지 않은 베이스 프로세서 디자인 및 상기 또 다른 구성가능하지 않은 베이스 프로세서 디자인의 확장된 명령어들은 상기 구성가능한 로직 디자인에 구현되는 것을 특징으로 하는 하이브리드 프로세서.
  19. 제1항에 있어서,
    상기 확장된 명령어들은, 명령어들에 대한 소스 피연산자들로서의 역할을 하도록 상기 구성가능한 로직 디자인에 구현된 비-프로세서 로직에 대한 직접 액세스를 가지는 것을 특징으로 하는 하이브리드 프로세서.
  20. 제1항에 있어서,
    확장된 명령어들의 결과들은 상기 구성가능한 로직 디자인에 구현된 비-프로세서 로직에 대해 직접적으로 이용가능한 것을 특징으로 하는 하이브리드 프로세서.
  21. 제1항에 있어서,
    상기 확장된 명령어들의 일부는, 사전-정의된 선택적 명령어들의 메뉴로부터 선택됨으로써 사용자가 구성하는 상기 구성가능한 로직 디자인에 의해 선택되는 것을 특징으로 하는 하이브리드 프로세서.
  22. 제1항에 있어서,
    상기 확장된 명령어들의 일부는, 명령어 기술 언어를 사용하여 정의되는 것을 특징으로 하는 하이브리드 프로세서.
  23. 제1항에 있어서,
    상기 확장된 명령어들의 일부는, 하이 레벨 언어로 기록된 어플리케이션을 분석하는 소프트웨어 프로그램에 의해 정의되는 것을 특징으로 하는 하이브리드 프로세서.
  24. 제1항에 있어서,
    상기 확장된 명령어들의 일부는, 성능-임계부들을 결정하도록 어플리케이션을 프로파일링하는 것을 토대로 얻어지는 것을 특징으로 하는 하이브리드 프로세서.
  25. 제1항에 있어서,
    상기 베이스 프로세서 디자인은 명령어 템플릿들을 이용하여 계산된 파이프라인 인터록들 또는 바이패스를 가지는 것을 특징으로 하는 하이브리드 프로세서.
  26. 제1항에 있어서,
    상기 베이스 프로세서 디자인 및 상기 구성가능한 로직 디자인은 단일 반도체 기판 상에 함께 구현되는 것을 특징으로 하는 하이브리드 프로세서.
  27. 제1항에 있어서,
    상기 베이스 프로세서 디자인 및 상기 구성가능한 로직 디자인은, 기타 구성가능한 또는 구성가능하지 않은 로직 기능부들 또는 메모리들과 함께 단일 반도체 기판 상에 구현되는 것을 특징으로 하는 하이브리드 프로세서.
  28. 제1항에 있어서,
    상기 구성가능한 로직 디자인은 상기 베이스 프로세서 디자인에 대해 비동기적으로 실행되며, 상기 구성가능한 로직 디자인과 상기 베이스 프로세서 디자인 사이를 지나가는 소정 신호들은 1 이상의 동기화 회로를 통과하는 것을 특징으로 하는 하이브리드 프로세서.
  29. 제1항에 있어서,
    상기 구성가능한 로직 디자인은 재구성가능한 것을 특징으로 하는 하이브리드 프로세서.
  30. 제1항에 있어서,
    상기 구성가능한 로직 디자인은 확장된 실행 유닛 및 확장된 레지스터 파일들을 포함하는 것을 특징으로 하는 하이브리드 프로세서.
  31. 하이브리드 프로세서 디자인 제조 방법에 있어서,
    상이한 어플리케이션들에 적합한 일반적인 명령어들을 갖는 제1로직기술로 구현된 구성가능하지 않은 베이스 프로세서 디자인을 제공하는 단계; 및
    상기 구성가능하지 않은 베이스 프로세서 디자인에 밀-결합되는 상기 제1로직기술과 상이한 제2로직기술로 구현된 구성가능한 로직 디자인을 결정하는 단계를 포함하여 이루어지고,
    상기 구성가능한 로직 디자인은 자동 프로세서 제너레이터에 의해 생성된 확장된 명령어들을 구현할 수 있어, 상기 하이브리드 프로세서 디자인을 얻는 것을 특징으로 하며,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 2 이상의 사이클의 상기 구성가능한 로직 디자인에서의 파이프라인 깊이를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  32. 제31항에 있어서,
    주문형 로직 및 표준 셀 회로 디자인 기술들 중 하나를 이용하여 상기 구성가능하지 않은 베이스 프로세서 디자인을 구현하는 단계; 및
    필드 프로그램가능한 로직의 사용을 포함하는 또 다른 디자인 기술을 이용하여 상기 구성가능한 로직 디자인을 구현하는 단계를 더 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  33. 제32항에 있어서,
    상기 구현하는 단계는, 상기 필드 프로그램가능한 로직을 RAM-기반 룩-업 테이블들로 구현하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  34. 제32항에 있어서,
    상기 구현하는 단계는, 상기 베이스 프로세서 디자인 및 상기 구성가능한 로직 디자인을 반도체 디바이스로서 구현하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  35. 제31항에 있어서,
    주문형 로직 회로 디자인 기술을 이용하여 상기 베이스 프로세서 디자인을 구현하는 단계; 및
    표준 셀 또는 게이트-어레이 로직 회로들의 사용을 포함하는 또 다른 디자인 기술을 이용하여 상기 구성가능한 로직 디자인을 구현하는 단계를 더 포함하는 것 을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  36. 제35항에 있어서,
    상기 구현하는 단계는, 상기 베이스 프로세서 디자인 및 상기 구성가능한 로직 디자인을 반도체 디바이스로서 구현하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  37. 삭제
  38. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 확장된 레지스터들 또는 확장된 레지스터 파일들에서 동작하는 1 이상의 상기 확장된 명령어들을 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  39. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 상기 베이스 프로세서 디자인의 레지스터들보다 넓은 데이터 경로를 이용하는 1 이상의 상기 확장된 명령어 들을 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  40. 제39항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 3 이상의 소스 레지스터 명세자들을 사용하는 1 이상의 또 다른 확장된 명령어들을 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  41. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 3 이상의 소스 레지스터 명세자들을 사용하는 1 이상의 상기 확장된 명령어들을 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  42. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 2 이상의 결과를 계산하는 1 이상의 상기 확장된 명령어들을 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  43. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 상기 베이스 프로세서 디 자인과 동일한 클록으로 상기 구성가능한 로직 디자인을 파이프라이닝하는 것을 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  44. 제31항에 있어서,
    상기 베이스 프로세서 디자인을 제공하는 단계는, 로드 및 스토어 연산들을 통해 상기 구성가능한 로직 디자인에 구현된 비-프로세서 로직에 대한 액세스를 상기 베이스 프로세서 디자인에 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  45. 제31항에 있어서,
    상이한 어플리케이션들에 적합한 명령어들을 갖는 1 이상의 또 다른 구성가능하지 않은 베이스 프로세서 디자인을 제공하는 단계를 더 포함하고,
    상기 구성가능하지 않은 베이스 프로세서 디자인 및 상기 또 다른 구성가능하지 않은 베이스 프로세서 디자인은 상기 구성가능한 로직 디자인을 공유하고, 상기 구성가능하지 않은 베이스 프로세서 디자인 및 상기 또 다른 구성가능하지 않은 베이스 프로세서 디자인의 확장된 명령어들은 상기 구성가능한 로직 디자인에 구현되는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  46. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 명령어들에 대한 소스 피연산자들로서의 역할을 하도록 상기 구성가능한 로직 디자인에 구현된 비-프로세서 로직에 대한 직접 액세스를 가지는 확장된 명령어들을 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  47. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 상기 구성가능한 로직 디자인에 구현된 비-프로세서 로직에 대해 직접적으로 이용가능한 확장된 명령어들의 결과들을 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  48. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 사전-정의된 선택적 명령어들의 메뉴로부터 선택됨으로써 사용자가 구성하는 상기 구성가능한 로직 디자인에 의해 상기 확장된 명령어들의 일부를 선택하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  49. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 명령어 기술 언어를 사용하여 상기 확장된 명령어들의 일부를 정의하는 단계를 포함하는 것을 특징으로 하 는 하이브리드 프로세서 디자인 제조 방법.
  50. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 하이 레벨 언어로 기록된 어플리케이션을 분석하는 소프트웨어 프로그램에 의해 상기 확장된 명령어들의 일부를 정의하는 단게를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  51. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 성능-임계부들을 결정하도록 어플리케이션을 프로파일링하는 것을 토대로 상기 확장된 명령어들의 일부를 얻는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  52. 제31항에 있어서,
    상기 베이스 프로세서 디자인을 제공하는 단계는, 명령어 템플릿들을 이용하여 계산되는 파이프라인 인터록들 또는 바이패스를 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  53. 제31항에 있어서,
    상기 베이스 프로세서 디자인 및 상기 구성가능한 로직 디자인을 함께 단일 반도체 기판 상에 구현하는 단계를 더 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  54. 제31항에 있어서,
    상기 베이스 프로세서 디자인, 상기 구성가능한 로직 디자인 및 기타 구성가능한 또는 구성가능하지 않은 로직 기능부들 또는 메모리들을 함께 단일 반도체 기판 상에 구현하는 단계를 더 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  55. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 상기 베이스 프로세서 디자인에 대해 비동기적으로 실행되는 상기 구성가능한 로직 디자인을 제공하고, 1 이상의 동기화 회로를 통과하는, 상기 구성가능한 로직 디자인과 상기 베이스 프로세서 디자인 사이를 지나가는 소정 신호들을 더 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  56. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 재구성가능한 상기 구성가능한 로직 디자인을 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
  57. 제31항에 있어서,
    상기 구성가능한 로직 디자인을 결정하는 단계는, 확장된 실행 유닛 및 확장된 레지스터 파일들을 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 프로세서 디자인 제조 방법.
KR1020047016062A 2002-04-10 2003-03-25 구성가능한 실행 유닛들을 구비한 고성능 하이브리드프로세서 KR100998586B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/120,849 2002-04-10
US10/120,849 US7200735B2 (en) 2002-04-10 2002-04-10 High-performance hybrid processor with configurable execution units
PCT/US2003/009337 WO2003088071A2 (en) 2002-04-10 2003-03-25 High-performance hybrid processor with configurable execution units

Publications (2)

Publication Number Publication Date
KR20050008677A KR20050008677A (ko) 2005-01-21
KR100998586B1 true KR100998586B1 (ko) 2010-12-07

Family

ID=29248290

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047016062A KR100998586B1 (ko) 2002-04-10 2003-03-25 구성가능한 실행 유닛들을 구비한 고성능 하이브리드프로세서

Country Status (8)

Country Link
US (1) US7200735B2 (ko)
JP (1) JP3860575B2 (ko)
KR (1) KR100998586B1 (ko)
CN (1) CN1653446B (ko)
AU (1) AU2003222086A1 (ko)
GB (1) GB2402787B (ko)
TW (1) TWI223194B (ko)
WO (1) WO2003088071A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101849702B1 (ko) * 2011-07-25 2018-04-17 삼성전자주식회사 외부 인트린직 인터페이스

Families Citing this family (166)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7249242B2 (en) 2002-10-28 2007-07-24 Nvidia Corporation Input pipeline registers for a node in an adaptive computing engine
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US7046635B2 (en) 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7403981B2 (en) 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
US7305567B1 (en) * 2002-03-01 2007-12-04 Cavium Networks, In. Decoupled architecture for data ciphering operations
US6781408B1 (en) 2002-04-24 2004-08-24 Altera Corporation Programmable logic device with routing channels
US7142011B1 (en) 2002-04-24 2006-11-28 Altera Corporation Programmable logic device with routing channels
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US7318014B1 (en) * 2002-05-31 2008-01-08 Altera Corporation Bit accurate hardware simulation in system level simulators
GB0215033D0 (en) * 2002-06-28 2002-08-07 Critical Blue Ltd Instruction set translation method
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US7581081B2 (en) * 2003-03-31 2009-08-25 Stretch, Inc. Systems and methods for software extensible multi-processing
US7613900B2 (en) * 2003-03-31 2009-11-03 Stretch, Inc. Systems and methods for selecting input/output configuration in an integrated circuit
US7590829B2 (en) * 2003-03-31 2009-09-15 Stretch, Inc. Extension adapter
US8001266B1 (en) 2003-03-31 2011-08-16 Stretch, Inc. Configuring a multi-processor system
US7991606B1 (en) 2003-04-01 2011-08-02 Altera Corporation Embedded logic analyzer functionality for system level environments
US7509246B1 (en) 2003-06-09 2009-03-24 Altera Corporation System level simulation models for hardware modules
US7418575B2 (en) * 2003-07-29 2008-08-26 Stretch, Inc. Long instruction word processing with instruction extensions
US7373642B2 (en) * 2003-07-29 2008-05-13 Stretch, Inc. Defining instruction extensions in a standard programming language
US7669035B2 (en) * 2004-01-21 2010-02-23 The Charles Stark Draper Laboratory, Inc. Systems and methods for reconfigurable computing
CN1306395C (zh) * 2004-02-13 2007-03-21 中国科学院计算技术研究所 Mips指令集的处理器扩展指令及其编码方法和部件
US7225416B1 (en) * 2004-06-15 2007-05-29 Altera Corporation Methods and apparatus for automatic test component generation and inclusion into simulation testbench
US7941585B2 (en) 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
EP1806847B1 (en) 2004-10-28 2010-02-17 IP Flex Inc. Data processing device having reconfigurable logic circuit
US8966223B2 (en) * 2005-05-05 2015-02-24 Icera, Inc. Apparatus and method for configurable processing
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US8041759B1 (en) 2006-02-09 2011-10-18 Altera Corporation Specialized processing block for programmable logic device
US8266198B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US8266199B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US9064076B1 (en) * 2006-03-23 2015-06-23 Synopsys, Inc. User interface for facilitation of high level generation of processor extensions
US7836117B1 (en) 2006-04-07 2010-11-16 Altera Corporation Specialized processing block for programmable logic device
US7822799B1 (en) 2006-06-26 2010-10-26 Altera Corporation Adder-rounder circuitry for specialized processing block in programmable logic device
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
US9665970B2 (en) * 2006-09-19 2017-05-30 Imagination Technologies Limited Variable-sized concurrent grouping for multiprocessing
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7814137B1 (en) 2007-01-09 2010-10-12 Altera Corporation Combined interpolation and decimation filter for programmable logic device
US7865541B1 (en) 2007-01-22 2011-01-04 Altera Corporation Configuring floating point operations in a programmable logic device
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
US7984272B2 (en) * 2007-06-27 2011-07-19 International Business Machines Corporation Design structure for single hot forward interconnect scheme for delayed execution pipelines
DE102007038545A1 (de) * 2007-08-16 2009-02-19 Robert Bosch Gmbh Programmierbarer Filterprozessor
US7949699B1 (en) 2007-08-30 2011-05-24 Altera Corporation Implementation of decimation filter in integrated circuit device using ram-based data storage
US7996656B2 (en) * 2007-09-25 2011-08-09 Intel Corporation Attaching and virtualizing reconfigurable logic units to a processor
US20090210669A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Prioritizing Floating-Point Instructions
US8095779B2 (en) * 2008-02-19 2012-01-10 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US20090210677A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Optimization Within a Group Priority Issue Schema for a Cascaded Pipeline
US20090210672A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US8108654B2 (en) * 2008-02-19 2012-01-31 International Business Machines Corporation System and method for a group priority issue schema for a cascaded pipeline
US7877579B2 (en) * 2008-02-19 2011-01-25 International Business Machines Corporation System and method for prioritizing compare instructions
US7996654B2 (en) * 2008-02-19 2011-08-09 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US7865700B2 (en) * 2008-02-19 2011-01-04 International Business Machines Corporation System and method for prioritizing store instructions
US7882335B2 (en) * 2008-02-19 2011-02-01 International Business Machines Corporation System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline
US20090210666A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7870368B2 (en) * 2008-02-19 2011-01-11 International Business Machines Corporation System and method for prioritizing branch instructions
US7984270B2 (en) * 2008-02-19 2011-07-19 International Business Machines Corporation System and method for prioritizing arithmetic instructions
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8244789B1 (en) 2008-03-14 2012-08-14 Altera Corporation Normalization of floating point operations in a programmable integrated circuit device
US8181003B2 (en) 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
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
US8626815B1 (en) 2008-07-14 2014-01-07 Altera Corporation Configuring a programmable integrated circuit device to perform matrix multiplication
US8255448B1 (en) 2008-10-02 2012-08-28 Altera Corporation Implementing division in a programmable integrated circuit device
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
IT1392495B1 (it) * 2008-12-29 2012-03-09 St Microelectronics Srl Metodo per progettare un acceleratore ad elevate prestazioni di tipo asic (circuito integrato ad applicazione specifica - application-specific integrated circuit)
US8549055B2 (en) 2009-03-03 2013-10-01 Altera Corporation Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry
US8468192B1 (en) 2009-03-03 2013-06-18 Altera Corporation Implementing multipliers in a programmable integrated circuit device
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US8805916B2 (en) 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
US8886696B1 (en) 2009-03-03 2014-11-11 Altera Corporation Digital signal processing circuitry with redundancy and ability to support larger multipliers
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
US8396914B1 (en) 2009-09-11 2013-03-12 Altera Corporation Matrix decomposition in an integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
WO2011091323A1 (en) 2010-01-21 2011-07-28 Qst Holdings, Llc A method and apparatus for a general-purpose, multiple-core system for implementing stream-based computations
US7948267B1 (en) 2010-02-09 2011-05-24 Altera Corporation Efficient rounding circuits and methods in configurable integrated circuit devices
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
US8601044B2 (en) 2010-03-02 2013-12-03 Altera Corporation Discrete Fourier Transform in an integrated circuit device
US8458243B1 (en) 2010-03-03 2013-06-04 Altera Corporation Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering
US8484265B1 (en) 2010-03-04 2013-07-09 Altera Corporation Angular range reduction in an integrated circuit device
US8510354B1 (en) 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8539014B2 (en) 2010-03-25 2013-09-17 Altera Corporation Solving linear matrices in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8577951B1 (en) 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8645451B2 (en) 2011-03-10 2014-02-04 Altera Corporation Double-clocked specialized processing block in an integrated circuit device
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
US8812576B1 (en) 2011-09-12 2014-08-19 Altera Corporation QR decomposition in an integrated circuit device
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8762443B1 (en) 2011-11-15 2014-06-24 Altera Corporation Matrix operations in an integrated circuit device
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US8543634B1 (en) 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9471388B2 (en) * 2013-03-14 2016-10-18 Altera Corporation Mapping network applications to a hybrid programmable many-core device
US9471537B2 (en) 2013-03-14 2016-10-18 Altera Corporation Hybrid programmable many-core device with on-chip interconnect
US9557792B1 (en) 2013-05-31 2017-01-31 Amazon Technologies, Inc. Datacenter power management optimizations
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
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
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9547493B2 (en) * 2013-10-03 2017-01-17 Synopsys, Inc. Self-timed user-extension instructions for a processing device
US9379687B1 (en) 2014-01-14 2016-06-28 Altera Corporation Pipelined systolic finite impulse response filter
US9720661B2 (en) * 2014-03-31 2017-08-01 International Businesss Machines Corporation Selectively controlling use of extended mode features
US9785565B2 (en) * 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
US9507891B1 (en) * 2015-05-29 2016-11-29 International Business Machines Corporation Automating a microarchitecture design exploration environment
US10642617B2 (en) * 2015-12-08 2020-05-05 Via Alliance Semiconductor Co., Ltd. Processor with an expandable instruction set architecture for dynamically configuring execution resources
CN106371807B (zh) * 2016-08-30 2019-03-19 华为技术有限公司 一种扩展处理器指令集的方法及装置
US10157164B2 (en) * 2016-09-20 2018-12-18 Qualcomm Incorporated Hierarchical synthesis of computer machine instructions
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10579557B2 (en) 2018-01-16 2020-03-03 Advanced Micro Devices, Inc. Near-memory hardened compute blocks for configurable computing substrates
US20190303263A1 (en) * 2018-03-30 2019-10-03 Kermin E. Fleming, JR. Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
CN112739436A (zh) * 2018-09-27 2021-04-30 英特尔公司 体积内容创建系统中的精彩时刻标识技术
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10565036B1 (en) 2019-02-14 2020-02-18 Axis Semiconductor, Inc. Method of synchronizing host and coprocessor operations via FIFO communication
CN110007962A (zh) * 2019-03-08 2019-07-12 浙江大学 一种基于代码自动生成的指令集模拟方法
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US12086080B2 (en) 2020-09-26 2024-09-10 Intel Corporation Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
CN112015490A (zh) * 2020-11-02 2020-12-01 鹏城实验室 可编程器件实现与测试精简指令集方法、设备及介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4124889A (en) * 1975-12-24 1978-11-07 Computer Automation, Inc. Distributed input/output controller system
IL89120A (en) 1988-02-17 1992-08-18 Mips Computer Systems Inc Circuit synchronization system
JP3099889B2 (ja) 1990-06-29 2000-10-16 株式会社東芝 電子計算機、プログラマブル論理回路及びプログラム処理方法
EP0871108B1 (en) 1991-03-11 2000-09-13 MIPS Technologies, Inc. Backward-compatible computer architecture with extended word size and address space
US5577259A (en) * 1991-09-19 1996-11-19 Unisys Corporation Instruction processor control system using separate hardware and microcode control signals to control the pipelined execution of multiple classes of machine instructions
US5280592A (en) 1992-01-03 1994-01-18 Amdahl Corporation Domain interlock
US5357237A (en) * 1992-09-04 1994-10-18 Motorola, Inc. In a data processor a method and apparatus for performing a floating-point comparison operation
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
US5548776A (en) * 1993-09-30 1996-08-20 Intel Corporation N-wide bypass for data dependencies within register alias table
JPH07175631A (ja) 1993-12-16 1995-07-14 Dainippon Printing Co Ltd 演算処理装置
US5590305A (en) * 1994-03-28 1996-12-31 Altera Corporation Programming circuits and techniques for programming logic
US5625784A (en) 1994-07-27 1997-04-29 Chromatic Research, Inc. Variable length instructions packed in a fixed length double instruction
US5819064A (en) 1995-11-08 1998-10-06 President And Fellows Of Harvard College Hardware extraction technique for programmable reduced instruction set computers
US5696956A (en) 1995-11-08 1997-12-09 Digital Equipment Corporation Dynamically programmable reduced instruction set computer with programmable processor loading on program number field and program number register contents
US6035123A (en) 1995-11-08 2000-03-07 Digital Equipment Corporation Determining hardware complexity of software operations
US5778208A (en) 1995-12-18 1998-07-07 International Business Machines Corporation Flexible pipeline for interlock removal
JPH10275080A (ja) * 1997-01-24 1998-10-13 Texas Instr Inc <Ti> マイクロプロセッサ
US6185126B1 (en) 1997-03-03 2001-02-06 Cypress Semiconductor Corporation Self-initializing RAM-based programmable device
JP3340343B2 (ja) 1997-03-13 2002-11-05 株式会社東芝 プロセッサ及び情報処理装置
US6584525B1 (en) * 1998-11-19 2003-06-24 Edwin E. Klingman Adaptation of standard microprocessor architectures via an interface to a configurable subsystem
JP3449186B2 (ja) 1997-08-19 2003-09-22 富士通株式会社 パイプラインバイパス機能を有するデータ処理装置
US5923893A (en) 1997-09-05 1999-07-13 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US6102963A (en) * 1997-12-29 2000-08-15 Vantis Corporation Electrically erasable and reprogrammable, nonvolatile integrated storage device with in-system programming and verification (ISPAV) capabilities for supporting in-system reconfiguring of PLD's
JP3809727B2 (ja) * 1998-06-17 2006-08-16 富士ゼロックス株式会社 情報処理システム、回路情報管理方法および回路情報記憶装置
KR100775547B1 (ko) 1999-02-05 2007-11-09 텐실리카 인코포레이티드 구성가능한 프로세서를 설계하기 위한 프로세서 자동 생성시스템 및 방법
JP2000235490A (ja) 1999-02-17 2000-08-29 Hitachi Ltd マイクロプロセッサ
JP2000284945A (ja) 1999-03-29 2000-10-13 Sharp Corp デジタル機器及びその開発方法
JP2001092662A (ja) 1999-09-22 2001-04-06 Toshiba Corp プロセッサコア及びこれを用いたプロセッサ
JP3723775B2 (ja) 2002-01-10 2005-12-07 松下電器産業株式会社 データ処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101849702B1 (ko) * 2011-07-25 2018-04-17 삼성전자주식회사 외부 인트린직 인터페이스
US10102005B2 (en) 2011-07-25 2018-10-16 Samsung Electronics Co., Ltd. External intrinsic interface

Also Published As

Publication number Publication date
KR20050008677A (ko) 2005-01-21
CN1653446B (zh) 2010-05-05
GB2402787A (en) 2004-12-15
JP3860575B2 (ja) 2006-12-20
US7200735B2 (en) 2007-04-03
WO2003088071B1 (en) 2004-09-23
TW200307215A (en) 2003-12-01
JP2005522781A (ja) 2005-07-28
WO2003088071A2 (en) 2003-10-23
GB0421865D0 (en) 2004-11-03
US20050166038A1 (en) 2005-07-28
AU2003222086A1 (en) 2003-10-27
GB2402787B (en) 2005-07-27
WO2003088071A3 (en) 2004-07-22
CN1653446A (zh) 2005-08-10
TWI223194B (en) 2004-11-01

Similar Documents

Publication Publication Date Title
KR100998586B1 (ko) 구성가능한 실행 유닛들을 구비한 고성능 하이브리드프로세서
US11900124B2 (en) Memory-network processor with programmable optimizations
CN109213723B (zh) 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
US10445098B2 (en) Processors and methods for privileged configuration in a spatial array
US10387319B2 (en) Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10445451B2 (en) Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US20190101952A1 (en) Processors and methods for configurable clock gating in a spatial array
US20190095383A1 (en) Processors, methods, and systems for debugging a configurable spatial accelerator
JP6059413B2 (ja) 再構成可能命令セル・アレイ
Cardoso et al. Compilation techniques for reconfigurable architectures
WO2019194915A1 (en) Apparatuses, methods, and systems for unstructured data flow in a configurable spatial accelerator
WO2020005447A1 (en) Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
JP7183197B2 (ja) 高スループットプロセッサ
Miyazaki et al. RVCoreP: An optimized RISC-V soft processor of five-stage pipelining
Verdoscia et al. A Data‐Flow Soft‐Core Processor for Accelerating Scientific Calculation on FPGAs
Ragheb et al. CGRA-ME 2.0: A research framework for next-generation CGRA architectures and CAD
Abderazek et al. Design and Architecture for an Embedded 32-bit QueueCore
CN118012496A (zh) 面向软件抽象的控制流实现系统
Fawaz Dynamically reconfigurable asynchronous processor
Köhler et al. Increasing ILP of RISC microprocessors through control-flow based reconfiguration
Cardoso Data-driven array architectures: a rebirth?
Iqbal et al. Computational Unit Design for High Speed Reconfigurable Processors.
Kivikoski JAAKKO SERTAMO
Beck et al. Reconfigurable systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee