KR20040005944A - 재구성가능 칩 - Google Patents
재구성가능 칩 Download PDFInfo
- Publication number
- KR20040005944A KR20040005944A KR10-2003-7014350A KR20037014350A KR20040005944A KR 20040005944 A KR20040005944 A KR 20040005944A KR 20037014350 A KR20037014350 A KR 20037014350A KR 20040005944 A KR20040005944 A KR 20040005944A
- Authority
- KR
- South Korea
- Prior art keywords
- unit
- reconfigurable
- shifter
- multiplexer
- input
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims abstract description 48
- 230000006870 function Effects 0.000 claims abstract description 20
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 15
- 238000010586 diagram Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 239000004744 fabric Substances 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 101150004790 SUB8 gene Proteins 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000272183 Geococcyx californianus Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent 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/3897—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
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)
- Logic Circuits (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
재구성가능 칩(20)은 시프터 레지스터와 산술 논리 유닛과 멀티플렉서를 포함하는 재구성가능 기능 유닛을 포함한다. 데이터 경로는 다른 데이터 경로 유닛과 상호 연결된다. 상호 연결은 워드 길이 데이터를 전달함으로써 제공된다. 시프터는 워드 길이 데이터가 산술 논리 유닛에서 이용될 수 있게 조정되도록 한다. 재구성가능 기능 유닛은 재구성가능 기능 유닛 명령에 의하여 제어된다. 재구성가능 기능 유닛 명령은 재구성가능 기능 유닛 명령 메모리에 저장되어 있으며, 칩 상의 상태 머신에 의하여 어드레스된다.
Description
필드 프로그래머블 게이트 어레이(field programmable gate array : FPGA)는 다양한 구성을 구현할 수 있는 프로그래머블 칩이다. 일반적으로 디자인은 디자인 툴을 이용하여 이루어지고 FPGA는 특정 디자인으로 구성된다. 디자인이 변경될 수는 있더라도, 칩 동작 시간에 비하여 구성을 변경하는 데 필요한 시간이 비교적 길기 때문에 FPGA는 일반적으로 단일 구성을 이용한다.
최근 재구성가능 칩 상에서 알고리즘 부분을 빠르게 스위치하도록 구성된 재구성가능 칩이 생성되었다. 이들 재구성가능 칩은 알고리즘 부분 구현을 위해서 칩의 재구성가능 소자를 이용하여 자원을 제공하도록 설계된다.
재구성가능 칩 상에서 알고리즘을 보다 효율적으로 구현할 수 있게 개선된 디자인을 구현하는 재구성가능 칩에서는 데이터 동작 소자나 재구성가능 기능 유닛을 이용하는 것이 바람직하다.
본 발명은 2001년 5월 2일에 출원된 미국 가특허 출원 제 60/288,298호의 우선권을 주장한다.
본 발명은 재구성가능 논리 칩(reconfigurable logic chip), 특히 재구성가능 컴퓨팅에 이용되는 재구성가능 논리 칩에 관한 것이다.
도 1은 본 발명의 일실시예에 따른 재구성가능 칩을 개략적으로 도시하는 도면,
도 2는 본 발명의 일실시예에 따른 재구성가능 기능 유닛을 단순하게 도시하는 도면,
도 3은 본 발명의 일실시예에 따른 재구성가능 기능 유닛을 도시하는 도면,
도 4는 본 발명의 일실시예에서 이용될 수 있는 승산기를 도시하는 도면,
도 5는 도 1에 도시된 재구성가능 기능 유닛의 일부로서 데이터 경로 유닛 간 상호 연결을 도시하는 도면,
도 6은 데이터 경로 유닛과 수평 및 수직 버스 라인간 연결을 도시하는 도면,
도 7은 하나의 타일 내 데이터 경로와 또 다른 타일 내 데이터 경로의 상호 연결을 도시하는 도면,
도 8은 본 발명의 일실시예에 따른 데이터 경로 유닛과 로컬 시스템 메모리의 상호 연결을 도시하는 도면,
도 9는 기능 블록 데이터 유닛을 위한 구성 정보의 명령을 생성하는 기능 블록 구성 메모리와 상태 머신을 도시하는 도면,
도 10a는 본 발명의 상태 머신, 구성 상태 메모리 그리고 데이터 경로 유닛의 상호 연결을 도시하며, 데이터 경로 유닛을 위한 명령 및 명령 필드를 나타내고 있는 도면,
도 10b는 적어도 일부 명령을 위한 디코더를 이용하는 데이터 경로 유닛을 도시하는 도면,
도 11은 본 발명의 일실시예에 따라 데이터 경로 유닛의 제어 시스템 구성 메모리를 도시하는 도면,
도 12는 본 발명의 일실시예에서 이용할 상호 연결 논리 유닛을 도시하는 도면,
도 13a 및 도 13b는 ALU를 위한 명령 부분을 도시하는 차트,
도 14는 본 발명의 일실시예에 따른 시스템에 있어서의 플래그를 도시하는 도면,
도 15는 시프터를 위한 시프팅 모드를 도시하는 도면,
도 16은 일실시예에 있어서 시프터에 관한 명령을 도시하는 도면,
도 17은 도 16에 도시된 시프터에 관한 동작을 도시하는 도면,
도 18은 본 발명의 일실시예에 따른 복수의 마스터 래치를 이용하는 논리 시스템을 도시하는 도면,
도 19는 본 발명의 일실시예에 관한 백그라운드(background) 및 포그라운드(foreground) 플레인(plane)을 도시하는 도면,
도 20은 본 발명의 일실시예에 있어서 데이터 경로를 위한 재구성가능 기능 유닛의 일실시예를 도시하는 도면,
도 21은 도 20에 도시된 시스템을 위한 입력 멀티플렉서를 도시하는 도면,
도 22는 본 발명의 일실시예에 따르는 시프터를 위한 시프팅 모드를 도시하는 도면,
도 23은 본 발명의 일실시예에 따르는 시프터를 위한 소정의 시프팅 모드를 도시하는 도면,
도 24는 본 발명의 일실시예에 따른 터보 룩업 테이블(turbo look up table)의 구현을 도시하는 도면.
본 발명은 각기 서로 다른 기능을 구현하도록 적합화된 여러 재구성가능 기능 유닛(예컨대 데이터 경로 유닛)을 포함하는 재구성가능 칩에 관한 것이다. 재구성가능 기능 유닛은 바람직하게 멀티플렉서(multiplexers), 적어도 하나의 시프팅 유닛(shifting unit), 그리고 적어도 하나의 산술 논리 유닛(arithmetic logic unit : ALU)을 포함한다. 재구성가능 기능 유닛은 재구성가능 기능 유닛 명령에 의하여 구성된다. 명령은 멀티플렉서와 시프팅 유닛과 ALU의 구성을 제어한다. 또한 재구성가능 칩은 재구성가능 기능 유닛을 서로 연결하도록 적합화된 상호 연결을 포함한다. 이로써 데이터가 재구성가능 기능 유닛사이를 통과할 수 있다.
재구성가능 기능 유닛 명령은 바람직하게 멀티플렉서, 시프터, 그리고 산술 논리 유닛을 위한 많은 필드를 포함한다. 이들 필드는 재구성가능 기능 유닛에서 이들 소자들을 바람직한 방식으로 구성한다.
바람직한 실시예에서, 각각의 재구성가능 기능 유닛마다 관련된 명령 메모리를 갖는다. 명령 메모리는 재구성가능 기능 유닛을 위한 여러 명령을 저장한다. 바람직한 실시예에서, 상태 머신(state machine)은 명령 메모리에 대하여 재구성가능 기능 유닛으로 로딩될 다음 명령을 결정하도록 지시한다. 바람직한 실시예에서, 재구성가능 기능 유닛은 상태 머신에 대하여 기능이 완료되는 때와 그 다음 기능이 재구성가능 기능 유닛으로 로딩될 수 있는 때를 나타내는 피드백을 제공한다.
일실시예에서, 시프터 유닛은 많은 다양한 모드로 구성될 수 있다. 이들 모드들은 바람직하게 재구성가능 기능 유닛 명령의 각 필드에 의하여 선택 가능하다.
일실시예에서, 상호 연결 소자는 워드 길이 데이터를 전송하기 위하여 재구성가능 기능 유닛의 일부를 선택적으로 연결하도록 구성되어 있다. 전송된 데이터는 바람직하게 32비트 이상의 고정 길이 데이터이다. 고정 길이 데이터 전송은 데이터 전송시 유연성을 희생하여 상호 연결 시스템이 간단해지도록 하는 것이다. 재구성가능 기능 유닛의 시프팅 유닛은 상호 연결 소자의 고정 구조를 보충하기 위하여 재구성가능 기능 유닛의 워드 길이 입력 데이터상의 서로 다른 비트를 통하여 산술 논리 유닛이 동작하도록 한다. 그러므로, 필요한 데이터가 워드 내 소정 위치에 있는 경우, 시프터는 산술 논리 유닛에 의하여 조작이 가능한 적합한 위치로 그 비트 위치를 이동시킬 수 있다.
본 발명의 또 다른 실시예는 지연 유닛 입력(delay unit input)과 그 지연 유닛을 우회하는 입력을 갖는 멀티플렉서를 이용한다. 이와 같이 재구성가능 기능 유닛은 시스템의 유연성을 증가시키는 가변 지연을 구현할 수 있다.
도 1은 재구성가능 칩(20)을 도시하고 있다. 재구성가능 칩(20)은 중앙 처리 장치(CPU)(22), 바람직하게는 축소형 명령 세트(RISC) CPU를 포함한다. 외부 메모리(도시되지 않음)로부터의 데이터가 메모리 제어기(24)를 이용하여 전송된다. 로드러너 버스(roadrunner bus)라 불리는 버스(26)를 통하여 메모리 제어기로부터 재구성가능 패브릭(28)으로 데이터가 전송된다. 재구성가능 패브릭(28)은 많은 슬라이스(slice)로 분할된다. 각 슬라이스는 많은 타일로 분할된다. 각 타일은 데이터 경로 유닛(재구성가능 기능 유닛)과, 제어 유닛과, 로컬 시스템 메모리 유닛을 포함한다. 로컬 시스템 메모리 유닛은 이하 설명되는 바와 같이 데이터 경로 유닛과 상호 작용한다. 바람직한 실시예에서, 각 타일은 또한 많은 승산기 유닛을 포함한다.
도 2는 본 발명의 일실시예에 따른 재구성가능 기능 유닛을 간단하게 도시하는 도면이다. 재구성가능 기능 유닛은 입력 승산기(30,32)를 포함한다. 이하 설명되는 바와 같이, 입력 승산기는 데이터 경로 유닛이 데이터 버스뿐만 아니라 데이터 경로 유닛 근처의 많은 다양한 위치로부터 입력을 수신하도록 한다. 입력 승산기에서 선택된 출력이 레지스터(36,38)로 전달된다. 또한, 승산기(32)의 출력은 시프터 유닛(34)으로 전달된다. 이하에서 설명되는 바와 같이, 시프터 유닛(34)은 다양한 비트 중에서 작동될 비트의 선택이 ALU(40)에 의하여 이루어지도록 한다. 상호 연결 시스템을 단순화하기 위하여 데이터 경로 유닛간 상호 연결은 고정 워드 길이 연결을 이용하므로, 데이터 경로 유닛 내에서 시프터 유닛을 이용하여 워드 단위로 패킹(packed)된 각 비트에 대한 액세스가 가능해진다.
이하 설명되는 바와 같이, 시프터 유닛(34)은 바람직하게 단지 좌우의 논리및 산술 시프트 이상을 구현하는 많은 모드를 갖는다. 이들 다양한 모드로 인하여 시스템은 보다 효율적 방식으로 동작할 수 있다. 이하 설명되는 산술 논리 유닛(40)은 바람직하게 데이터 경로 유닛을 위한 명령 필드를 이용하여 기능을 구현한다. ALU(40)의 출력은 바람직하게 출력 레지스터(42)로 전달된다. 그 출력은 또한 실제로 선택적 비트 시프터(44)에 전달되어 시프트값을 생성한다.
일실시예에서, 라인(46) 상의 우회 ALU 피드백 출력(bypassing ALU feedback output)이 또한 이용된다. 이는 데이터 경로 유닛의 일부가 동작하도록 하는데 이때 출력 레지스터(42)는 어떤 출력이 데이터 경로 유닛으로부터 전달되는지 제어한다. 이는 출력 레지스터(42)가 로컬 시스템 메모리 유닛을 어드레스하는데 이용되는 경우 유용하다.
비트 시프터(44)는 Peter Lam에 의한 특허 출원 "Modifications to Reconfigurable Functional Unit in a Reconfigurable Chip to Perform Linear Feedback Shift Register Function"에서 설명되는 선형 피드백 시프터 레지스터를 구현하는데 이용된다.
멀티플렉서, 시프터 유닛(34) 및 ALU(40)는 바람직하게 데이터 경로 유닛에 대한 명령에 의하여 제어된다는 점에 주의해야 한다. 이 명령은 바람직하게 많은 다양한 필드, 즉 멀티플렉서를 위한 멀티플렉서 명령 필드와, 시프터(34)를 위한 시프터 유닛 필드와, ALU(40)를 위한 ALU 명령 필드를 포함한 많은 필드로 분할된다. 일실시예에서는, 적어도 일부 명령을 위하여 디코더가 이용된다.
도 3은 본 발명의 일실시예에 관한 세부적 도면이다. 입력멀티플렉서(50,52)는 근처 유닛으로부터의 데이터를 입력으로 수신한다. 일예에서는, 데이터 경로 유닛과 승산기 유닛 등을 포함한 16개의 유닛으로부터의 데이터 워드가 입력으로서 이용된다. 광역 수직 및 수평 상호 연결이 이용된다. 일실시예에서 선형 피드백 시프트 레지스터 피드백을 위한 연결, 논리 0 상수 입력, 그리고 로컬 시스템 메모리 유닛을 위한 입력이 이용되고 있다. 또 다른 입력으로는 ALU(54)로 직접 제공되는 이전 데이터 경로 유닛으로부터의 캐리 입력이 있다. 멀티플렉서(50)는 많은 다양한 동작 모드를 갖는 시프터(56)로 연결된다. 시프터(56)는 멀티플렉서(50)의 출력이 시프터 유닛(56)을 피해가거나 시프터 유닛(56)을 이용할 수 있도록 또 다른 멀티플렉서(58)에 연결된다. 시프터 유닛(56)은 또한 소정의 모드에 있어서 입력 멀티플렉서(52)로부터의 A 입력을 이용할 수 있다. 멀티플렉서(58)의 출력과 멀티플렉서(52)의 출력은 각각 레지스터(60)와 레지스터(62)로 전달될 수 있다. 레지스터(60,62)는 또한 칩으로부터 로딩될 수 있다. 논리 회로(64,66)는 레지스터 값이 시스템을 위한 마스크 레지스터로서 동작하도록 한다. 멀티플렉서(68,70)는 ALU(54)에 대한 입력을 선택한다. ALU의 출력은 서로 다른 많은 가능한 경로들로 전달된다. 멀티플렉서(72)로부터 나온 데이터 경로 출력은 출력 레지스터(74)로부터 나온 값이거나 멀티플렉서(76)로부터 나온 값(라인(78) 상의 로컬 시스템 메모리 재데이터이거나 ALU 값일 수 있음)일 수 있다. ALU로부터의 플래그 값은 멀티플렉서(80,82)로 전달되고 멀티플렉서(80,82)는 요청되는 플래그값을 선택한다. 그 플래그 값은 레지스터(88,90)에 저장될 수 있고 레지스터(88,90) 값이 멀티플렉서(92,94)로 전달되거나 승산기(80,82)로부터 선택된 값이 이용된다. CONF 값은 어떤 플래그가 선택될 것인지 가리키는 명령 필드이다.
일실시예에서, 레지스터(60,62,74)는 도 18에 도시된 바와 같이 여러 마스터 슬래이브 래치를 이용하여 그 레지스터에 대한 백그라운드 구성 데이터의 로딩이 가능하도록 구현될 수 있다. 일실시예에서, 이들 레지스터의 동작은 재구성가능 기능 유닛 명령의 필드들에 의하여 제어될 수 있다.
도 4는 승산기 유닛을 도시하는 도면이다. 승산기 유닛은 도 3에 도시된 재구성가능 기능 유닛과 다소 유사하다. 그러나, 승산기 유닛은 ALU가 아닌 전용 승산기를 갖는다.
도 5에 도시된 바와 같이, 일실시예서는 매 7개의 데이터 경로 유닛 즉 하나의 타일 내의 재구성가능 기능 유닛마다, 두 개의 승산기 유닛이 있다.
도 6은 데이터 경로 유닛 입력으로의 인접 데이터 경로 유닛 및 승산기의 상호 연결을 도시하고 있다. 도 5에서 본 것처럼, 데이터 경로 유닛(100)은 상위 8개의 이전 데이터 경로 유닛(및 승산기)과 하위 7개의 다음 데이터 경로 유닛(및 승산기)으로부터의 출력을 입력으로서 수신할 수 있다. 데이터 경로 유닛(100)의 출력은 또한 그 자신으로 다시 피드백된다. 이들 유닛중 임의의 출력은 시스템의 입력 멀티플렉서를 이용하여 A 입력이나 B 입력 중 하나를 위하여 선택될 수 있다.
도 6은 하나의 타일 재구성가능 기능 유닛(데이터 경로 유닛)의 수평 및 수직 라인에 대한 연결을 도시하는 도면이다. 멀티플렉서를 이용함으로써 데이터 경로 유닛의 출력 및 입력은 수직 라우팅 라인과 수평 라우팅 라인 양자 모두로 연결될 수 있다.
도 7은 수직 상호 연결 라인을 이용하여 하나의 타일내 데이터 경로 유닛을 다른 타일내 데이터 경로 유닛으로 연결하는 예를 도시하고 있다. 상호 연결을 위한 본 발명의 시스템은 바람직하게 워드 기반형 상호 연결을 이용한다. 일실시예에서, 상호 연결 라인은 32비트 폭 데이터에 의한 연결이 이루어지도록 한다. 상호 연결 시스템으로부터 데이터 경로 유닛으로 데이터가 수신되면 데이터 경로 유닛의 시프터 유닛은 데이터 정렬이 가능하게 한다. 시스템이 32비트 워드로 데이터를 전송하기 때문에, 상호 연결의 유연성이 다소 줄어드는 반면, 상호 연결 시스템의 복잡도가 줄어들고 간단해진다.
도 8은 데이터 경로 유닛과 로컬 시스템 메모리 간 연결을 도시하고 있다. 바람직한 실시예에서는, 로컬 시스템 메모리의 기록 및 판독을 구현하기 위하여 번갈아 데이터 경로 유닛이 이용된다. 예컨대, 데이터 경로 유닛(102)은 로컬 시스템 메모리(104)에 판독 어드레스를 제공하고 로컬 시스템 메모리(104)로부터 판독 데이터를 수신한다. 데이터 경로 유닛(106)은 기록 어드레스와 기록 데이터를 로컬 시스템 메모리(104)에 제공한다. 통과 게이트(pass gate)(106,108,110,112) 등의 통과 게이트를 이용함으로써, 데이터 경로 유닛(116,118)은 로컬 시스템 메모리(104)에 연결될 수 있고 데이터 경로 유닛(102,106)은 로컬 시스템 메모리(114) 등의 기타 로컬 시스템 메모리로 연결될 수 있다. 또 다른 실시예에서, 데이터 경로 유닛은 로컬 시스템 메모리로부터 판독하고 로컬 시스템 메모리로 기록할 수 있다. 로컬 시스템 메모리로부터 데이터를 얻기 위하여(그 데이터는 이후 수평 및 수직 상호 연결 버스 상에 놓일 수 있음) 데이터 경로 유닛을 이용해서 로컬 시스템 메모리에 어드레스를 제공할 수 있다. 도 8에 도시된 상호 연결은 로컬 시스템 메모리에 데이터를 기록하고 그로부터 데이터를 판독하기 위한 직접 연결을 도시하고 있다. 바람직한 실시예에서, 로컬 시스템 메모리는 메모리 제어 시스템을 이용하여 광역으로 판독되고 기록된다. 시스템의 구성을 위하여, 그리고 그 위에서 작동될 데이터를 얻기 위하여, 데이터 경로 유닛은 이러한 일반적 메모리 제어 시스템을 이용한다. 전술한 바와 같이, 바람직한 실시예에서, 데이터 경로 유닛은 그 데이터 경로 유닛이 소정의 다른 기능을 수행하는 동안 어드레스와 데이터가 로컬 시스템 메모리로 제공될 수 있도록 하는 구조를 포함한다.
도 9는 재구성가능 기능 유닛(130)을 위한 제어 패브릭 유닛(132)을 도시하는 도면이다. 이러한 실시예에서, 제어 패브릭 유닛(132)은 재구성가능 기능 유닛(130)을 위한 제어 및 명령 라인을 생성한다. 이러한 실시예에서, 제어 패브릭 유닛(132)은 바람직하게 상태 머신 유닛(134)과 기능 블록 구성 메모리 유닛(136)으로 구성된다. 상태 머신(134)은 명령 메모리(136)로 어드레스를 발생시킨다. 상태 머신(134)에 관한 일실시예는 재구성가능 프로그래머블 곱의 합 유닛(136)을 이용한다.
도 10a는 상태 머신 구성 유닛(136)과 구성 상태 메모리(138')와 데이터 경로 유닛(130')을 갖춘 시스템을 도시하고 있다. 구성 상태 메모리(138')의 구성은 데이터 경로 유닛(130')에 대한 명령으로 간주될 수 있다. 이러한 명령은 바람직하게 ALU 구성 필드, 시프트 레지스터 구성 필드, 및 멀티플렉서 구성 필드 등의필드를 포함한다. 일실시예에서는, 데이터 경로 유닛이 한 세트 데이터 상에서 동작하게된 다음 데이터 경로 유닛에 대한 구성을 스위치하기 위하여 데이터 경로 유닛(130')으로부터의 일부 플래그가 상태 머신(136')으로 전달된다. 구성 상태 머신(138')은 또한 외부 메모리나 프로세서 등 외부 구성으로부터 로딩될 수 있다.
도 10b는 디코더를 이용하여 적어도 일부 명령을 디코딩하는 데이터 경로 유닛을 도시하는 도면이다.
도 11은 다양한 구성 상태 메모리를 위한 상태 머신 등의 제어 시스템을 도시하고 있다. 데이터 경로 유닛 플래그가 전술된 바와 같이 제어 시스템으로 전달된다.
도 12는 산술 논리 유닛의 일예를 도시하는 도면이다. 이러한 산술 논리 유닛은 산술 유닛(142)과, 병렬 논리 유닛(140)과, 플래그 유닛(144)을 포함한다. 또한, 캐리 선택 유닛(146)이 도시되어 있다. 명령 중 ALU 명령 필드가 전달되어 ALU 동작을 선택하도록 한다. 산술 유닛(142)은 캐리 입력을 이용한다. 바람직한 실시예에서, 이러한 캐리 값은 이전 데이터 경로 유닛으로부터의 캐리이거나 명령의 일부를 이루는 제어 신호 또는 캐리이다.
도 13a 및 도 13b는 본 발명에 따른 재구성가능 기능 유닛의 ALU에 관한 일실시예에서 이용되는 동작코드 일부의 리스트를 도시하고 있다. 이들 동작코드 세부 사항은 본 명세서에서 참조로써 인용되고 있는 부록Ⅰ에서 설명되어 있다.
도 14는 본 발명의 플래그 시스템을 도시하는 도면이다. 플래그 유닛은 데이터 경로 유닛 내부에 있고 다음 데이터 경로 유닛뿐만 아니라 제어 유닛으로 보내질 플래그값을 생성하는데 이용된다. 이용되는 플래그의 선택으로 재구성가능 기능 명령 필드의 제어가 이루어지고 이는 본 발명에 있어서 바람직하다. 일부 플래그에 대한 설명은 다음과 같다.
ROXR은 매 사이클마다 구동된다. 이는 conf==1로써 선택된다. 동작은,
약자는,
CO - 캐리 출력(합산/감산 동작에서)
OV - 오버플로(합산/감산 동작에서)
EQ - 동일(A==B)
GT - 초과
LT - 미만
SN - 부호(결과의 부호 비트)
이전 플래그
Cin - 이전 행에서의 캐리
Ctrl - 제어로부터의 캐리 입력
Max - 0x7fff[ffff](16/32비트를 위하여)
Min - 0x8000[0000](16/32비트를 위하여)
도 15는 본 발명에 따른 시프트 모드와 시프터 유닛의 일부 모드에서의 동작을 도시하고 있다. 시프터 유닛은 많은 다양한 모드를 가지며, 본 발명의 시스템 유연성이 증가한다.
도 16 및 도 17은 멀티플레서의 여러 행을 이용하는 시프터 유닛의 구현 일예를 도시하고 있다. 또한, 부가적 논리 회로가 특별한 출력을 생성하기 위하여 이용된다. 도 17은 시프트 레지스터의 소정 구현예의 동작을 도시하고 있다.
데이터 경로 유닛에 이용되는 시프터는 우측/좌측 시프트 동작 이상을 수행한다. 시프터는 mux 선택 신호를 통하여 제어되는 멀티플렉서 배열을 포함한다. 4×6 멀티플렉서 배열 시프터 실시예에서, 8개의 신호로 이루어진 4그룹으로 분할되는 32비트 오퍼랜드가 4개의 멀티플렉서 처음 행으로 결합된다. 마지막 행과 달리, 이전 행의 멀티플렉서 출력은 멀티플렉서의 다음 행 입력으로 결합된다. 배열의 각 멀티플렉서는 독립하여 제어된다. 제어 신호는 신호가 배열에서 어떻게 라우팅될 것인지 그리고 그에 따라 그 오퍼랜드에 수행되는 동작 유형이 무엇인지 결정한다. 일실시예에서는, 동작의 예로서, 32비트 논리 우측/좌측 시프트, 32비트 산술 우측/좌측 시프트, 부호형 하위 16비트를 32비트로 변경, 상수 발생, 하위 16비트를 상위 16비트로 복사, 상위 16비트를 하위 16비트로 복사, 상하위 16비트를 스왑(swap), 16비트 산술 우측 시프트, 그리고 바이트 스왑 등이 포함된다.
도 18은 본 발명의 시스템 일실시예에 이용되는 여러 마스터 래치 시스템(master latch system)을 도시하고 있다. 본 실시예에서는, 두 개의 마스터 래치가 이용된다. 마스터 래치 중 하나는 시스템의 백그라운드 구성을 위하여 이용된다. 다른 마스터 래치는 데이터 경로 유닛의 파이프라인으로부터나 프로세서로부터 데이터를 수신한다. 래치(150)에 대한 입력이 멀티플렉서(152)를 통하여 제공된다. 래치(154)는 구성 버스로 연결되어 백그라운드 구성으로부터 데이터를 수신한다. 멀티플렉서(156)가 이용되어 슬래이브 래치(158)에 대한 입력을 선택할 수 있다. 백그라운드 구성 메모리를 시스템에서 이용함으로써 본 발명에 따른 시스템의 신속 동작이 가능해진다.
도 18의 저장 소자는 여러 기능 저장 소자를 제공하는 멀티플렉서를 통하여 단일 슬래이브 래치를 공유하는 복수의 마스터 래치를 갖는다. 또한, 슬래이브 래치를 공유함으로써 상당한 공간 절감이 실현된다(대략 25%). 이는 방대한 저장 소자를 이용하는 시스템에서 더욱 그러하다. 이러한 저장 소자 디자인은 구성 비트가 저장 소자로 빈번하게 로딩되지 않는다는 사실에 의존한다. 따라서 구성 비트스트림 신호에 결합된 각 마스터 래치를 위하여 별도의 슬래이브 래치를 가지는 대신에, 본 발명에 따라 구성 비트스트림 신호에 결합된 마스터 래치는 또 다른 마스터 래치와 슬래이브 래치를 공유한다. 따라서, 둘 이상의 마스터 래치가 단일 슬래이브 래치를 공유한다. 멀티플렉서가 마스터 래치와 단일 슬래이브 래치 사이에 결합되어 어떤 마스터 래치가 슬래이브 래치로 결합되는지 선택한다.
일실시예에서, 하나의 마스터 래치 입력은 저장 소자 기능을 자주 요청하는 신호에 결합되고 다른 마스터 래치 입력은 저장 소자 기능을 그리 자주 요구하지 않는 신호에 결합된다. 제 1 마스터 래치가 데이터 경로 신호에 결합되면 제 2 마스터 래치는 구성 비트 신호에 결합된다. 데이터 경로 신호가 슬래이브 래치를 통과하는 경우, 저장 소자는 데이터 경로 파이프라인을 단계별로 분할하도록 기능한다. 구성 비트스트림 신호가 슬래이브 래치를 통과하는 경우, 저장 소자는 구성 비트를 저장하도록 기능한다. 다른 실시예에서, 하나의 마스터 래치는 데이터 경로 신호에 결합되고 둘 이상의 마스터 래치가 구성 비트 신호에 결합되며 전체 마스터 래치 출력은 신호중 하나를 선택하여 마스터 래치로부터 공유 슬래이브 래치로 전달하는데 이용되는 멀티플렉서로 결합된다.
도 18에 있어서,
ㆍ마스터 래치는 'RESET'이나 'INT'에서 리셋된다.
ㆍ슬래이브 래치는 'RESET'에서만 리셋된다.
ㆍmux A는 구성이 활성화될 때마다 config 경로를 선택한다.
(또한 특정 슬라이스를 선택함으로써 정해짐)
ㆍmux B는 아크 기록시 아크 버스를 선택한다.(또한 대응 arc_address를 디코딩함으로써 정해짐. 어드레스 맵을 위하여 ARC ext spec를 참조.)
ㆍ마스터 래치는 클록이 로우 상태인 동안에만 투명하다.
ㆍ슬래이브 래치는 클록이 하이 상태인 동안에만 투명하다.
ㆍ마스터 래치 0은 랫파이프(latpipe)가 인에이블되고 레지스터에 대한 아크 기록이 일어나는 경우 투명하다.
ㆍ마스터 래치1은 config 로딩이 활성화되고 대응되는 config 어드레스가 디코딩되는 경우 투명하다.
ㆍ슬래이브 래치1은 1. 이 슬라이스에 대한 config 활성화 경우, 2. 이 레지스터에 대한 아크 기록시, 또는 3. 제어로부터의 랫파이프 신호가 하이 상태인 경우 투명하다.
ㆍ이러한 설정은 구성 및 아크 기록이 동시에 일어나지 않는다는 가정하에 이루어진다. 만약 동시에 일어난다면, 구성이 더 높은 우선순위를 갖는다.
본 발명의 또 다른 실시예는 본 발명의 가변 지연 유닛(variable delay unit)에 관한 것이다. 가변 지연 유닛은 레지스터로 전달된 제 1 입력과 레지스터를 우회하는 제 2 입력을 수신하는 멀티플렉서로 구성된다. 이에 따라 가변 지연이 구현될 수 있다. 도 3의 재구성가능 기능 유닛에서, 멀티플렉서(68)에 연결된 레지스터(60)와 멀티플렉서(70)에 연결된 레지스터(62)와 멀티플렉서(92)에 연결된 레지스터(88)와 멀티플렉서(94)에 연결된 레지스터(90)와 멀티플렉서(72)에 연결된 레지스터(74)가 그러한 가변 지연을 구현할 수 있다. 멀티플렉서는 지연 신호 즉 우회 신호를 선택할 수 있으며, 그 지연 신호는 플립플롭 등의 지연 소자를 통과한다.
유연성있는 지연 소자로는 하나의 입력 신호에 연결된 입력과 멀티플렉서의 제 1 입력으로 연결된 출력을 갖는 저장 장치(예컨대, 플립플롭, 래치)가 포함된다. 멀티플렉서의 기타 입력도 그 입력 신호에 연결된다. 그 결과, 멀티플렉서의 제 1 입력은 입력 신호에 결합되고 멀티플렉서의 제 2 입력은 저장 장치로부터 제공된 많은 지연 신호에 의하여 지연된 입력 신호에 연결된다. 선택 신호가 이용되어 지연 신호나 비지연 신호 중 어느 하나를 선택할 수 있다.
도 19는 백그라운드 포그라운드 플레인 구성(background foreground plane arrangement)의 또 다른 실시예를 도시하고 있다.
본 발명은, 발명자 Hsinshih Wang의 1999년 5월 7일에 출원된 미국 특허 출원 제09/307,072호 "A HIGH PERFORMANCE DATA PATH UNIT FOR BEHAVIORAL DATA TRANSMISSION AND RECEPTION", 발명자 Shaila Hanrahan 등의 1999년 9월 23일에 출원된 미국 특허 출원 제09/401,194호 "CONTROL FABRIC FOR ENABLING DATA PATH FLOW", 그리고 발명자 Shaila Hanrahan과 Christopher E. Phillips의 1999년 9월 23일에 출원된 미국 특허 출원 제09/401,312호 "CONFIGURATION STATE MEMORY FOR FUNCTIONAL BLOCKS ON A RECONFIGURABLE CHIP" 등의 종전 특허 출원을 참조로써 인용하고 있다.
버몬트(vermont) 실시예
도 20은 재구성가능 기능 유닛이나 데이터 경로 유닛의 궁극적 실시예를 도시하고 있다. 이러한 실시예에서는 부가 레지스터와 멀티플렉서가 시프터에 앞서 B 입력 경로에 부가된다. 또한, 입력 멀티플렉서가 약간 변경된다. 입력 멀티플렉서는 도 21에서 도시된다.
도 22는 도 19의 새로운 실시예에 대한 시프터 모드 테이블을 도시하고 있다.
도 23은 도 22의 새로운 모드에 대한 설명을 도시하고 있다.
도 24는 본 발명의 시스템에서 이용될 터보 룩업 테이블(turbo look up table)을 도시하고 있다. 터보 룩업 테이블은 로그 포맷으로 저장된 데이터에 관한 합산에서 유용하다. 이는 많은 통신 시스템에서 이용되고 있다. 종래에는 로그 포맷으로 저장된 데이터의 승산을 위해서는, 그 데이터에 지수 확장을 수행함으로서 정규 포맷으로 변환해야만 한다. 지수적으로 확장된 데이터가 서로 더해진 다음 결합 정보가 다시 로그 포맷으로 변환된다. 바람직한 실시예에서, 터보 룩업 테이블은 교정 인자(correction factor)의 합산 추정값의 곱에 이용된다. 이러한 추정에서는 A 플러스 B의 합산 값의 제 1 추정값으로서 A와 B 중 가장 큰 값을 이용한다. A 마이너스 B 차이의 절대값이 룩업 테이블의 입력으로 이용되어 A와 B 중 더 큰 값에 더할 교정 인자를 제공한다. A와 B 중 가장 큰 값에 이러한 교정 인자에 더함으로써 비교적 정확한 추정이 이루어진다. 룩업 테이블이 A와 동일한 수의 입력 비트를 가질 필요는 없음에 주의해야 한다. 바람직한 실시예에서, 정밀도의 일부 비트만이 이용된다. A 마이너스 B의 크기가 비교적 큰 경우, 결합 값은 A나 B 중 더 큰 값과 크게 다르지 않다. 예컨대, 0.1에 1,000,000을 더하는 것은 거의 1,000,000과 같다. 1,000,000에 1,000,000을 더하는 것은 최대값을 두배로 하는 것과 거의 같다.
부록Ⅱ과 부록Ⅲ은 또한 재구성가능 기능 유닛의 버몬트 실시예를 도시하고 있다.
당업자라면 본 발명이 그 사상이나 특징을 벗어나지 않는 범위에서 본 명세서에서 제시된 바와 다른 특정 형태로 구현될 수 있음을 알 것이다. 그러므로 본 명세서에서 제시된 구성은 설명을 위한 것일뿐 본 발명을 제한하려는 것이 아님에 주의해야 한다. 본 발명의 범위는 전술한 설명에 의하여 정해지는 것이 아니라 첨부되는 청구범위에 의하여 정해지는 것이다. 즉, 본 발명은 청구범위의 내용과 그 등가물의 범위에 속하는 모든 변형을 포함한다.
부록Ⅰ
1.9 동작코드 세부사항
이름ADD
수도코드result = A+B
설명A 플러스 B
영향을 받는 플래그동작의 출력 캐리 CO
동작이 오버플로이면 OV
a==b이면 EQ
결과[31] SN
이름ADD16
수도코드result = {(AH+BH),(AL+BL)}
설명병렬 A 플러스 B
영향을 받는 플래그플래그[0]도 유효하다는 점을
제외하고는 ADD와 유사한 CO,OV,EQ,SN
이름ADDC
수도코드result = A+B+Cin
설명32비트 동작에 있어서 캐리 입력을 갖는 A 플러스 B
영향을 받는 플래그ADD와 유사한 CO,OV,EQ,SN
이름ADDCNT
수도코드result = A+B+Ctrl
설명제어 캐리 입력을 갖는 A 플러스 B
영향을 받는 플래그ADD와 유사한 CO,OV,EQ,SN
이름SUB
수도코드result = A-B
설명A 마이너스 B
영향을 받는 플래그동작(A+~B+1)에서의 출력 캐리 CO
동작이 오버플로이며 OV
A>B이면 GT
A<B이면 LT
A==B이면 EQ
결과의 부호 SN
이름SUB16
수도코드result = {(AH-BH),(AL-BL)}
설명병렬 A 마이너스 B
영향을 받는 플래그SUB와 유사한 CO,OV,GT,LT,EQ,SN
이름SUBC
수도코드result = A+~B+Cin
설명32비트 동작에 있어서 캐리 입력을 갖는 A 마이너스 B
영향을 받는 플래그SUB와 유사한 CO,OV,GT,LT,EQ,SN
이름SUBCNT
수도코드result = A+~B+Ctrl
설명제어 캐리 입력을 갖는 A 마이너스 B
영향을 받는 플래그SUB와 유사한 CO,OV,GT,LT,EQ,SN
이름SADD
수도코드if(오버플로)
result = max
else if(언더플로)
result = min
else
result = A+B
설명포화가 발생하는 A 플러스 B
영향을 받는 플래그A+B의 출력 캐리 CO, A+B의 오버플로 OV
A==B일 경우 EQ, 결과의 부호 SN
이름SADD16
수도코드SADD의 병렬 16비트 버전
설명포화가 발생하는 A 플러스 B
영향을 받는 플래그CO,OV,EQ,SN은 SADD와 유사하고,
플래그[0]은 유효함
이름SADDCNT
수도코드if(오버플로)
result = max
else if(언더플로)
result = min
else
result = A+B+Ctrl
설명제어 캐리 입력을 갖고 포화가 발생하는 A 플러스 B
영향을 받는 플래그SADD와 유사한 CO,OV,EQ,SN
이름SSUB
수도코드if(오버플로)
result = max
else if(언더플로)
result = min
else
result = A-B
설명포화가 발생하는 A 마이너스 B
영향을 받는 플래그A+~B+1의 출력 캐리 CO, A-B의 오버플로 OV
A>B인 경우 GT, A<B인 경우 LT
A==B일 경우 EQ, 결과의 부호 SN
이름SSUB16
수도코드SSUB의 병렬 16비트 버전
설명포화가 발생하는 A 마이너스 B
영향을 받는 플래그CO,OV,GT,LT,EQ,SN은 SSUB와 유사하고,
플래그[0]은 유효함
이름SSUBCNT
수도코드if(오버플로)
result = max
else if(언더플로)
result = min
else
result = A+~B+Ctrl
설명제어 캐리 입력을 갖고 포화가 발생하는 A 플러스 B
영향을 받는 플래그SSUB와 유사한 CO,OV,GT,LT,EQ,SN
이름INC
수도코드result = B+1
설명B 증가
영향을 받는 플래그B+1의 출력 캐리 CO
B+1의 오버플로 OV
B+1의 부호 SN
이름DEC
수도코드result = B-1
설명B 감소
영향을 받는 플래그B+0xffffffff의 출력 캐리 CO
B-1의 오버플로 OV
B-1의 부호 SN
이름NEG
수도코드result = ~B+1
설명B 역
영향을 받는 플래그~B+1의 부호 SN
이름ABS
수도코드if(B가 음수이면)
result = ~B+1
else
result = B
설명B의 절대치
영향을 받는 플래그
이름ABS16
수도코드ABS의 병렬 16비트 버전
설명32비트 동작을 위한 B의 절대치
영향을 받는 플래그
이름CSUB
수도코드if(A-B>=0)
result = A-B
else
result = A
설명조건부 감산
영향을 받는 플래그A+~B+1의 출력 캐리 CO
A-B의 오버플로 OV
A>B인 경우 GT
A<B인 경우 LT
A==B인 경우 EQ
결과의 부호 SN
이름AND
수도코드result = A&B
설명비트단위 AND
영향을 받는 플래그A==B인 경우 EQ
결과의 비트[31] SN
이름OR
수도코드result = A|B
설명비트단위 OR
영향을 받는 플래그AND와 같은 EQ,SN
이름NAND
수도코드result = ~(A&B)
설명비트단위 NAND
영향을 받는 플래그AND와 같은 EQ,SN
이름NOR
수도코드result = ~(A|B)
설명비트단위 NOR
영향을 받는 플래그AND와 같은 EQ,SN
이름XOR
수도코드result = A^B
설명비트단위 XOR
영향을 받는 플래그AND와 같은 EQ,SN
이름XNOR
수도코드result = ~(A^B)
설명비트단위 XNOR
영향을 받는 플래그AND와 같은 EQ,SN
이름PASSA
수도코드result = A
설명A 통과
영향을 받는 플래그AND와 같은 EQ,SN
이름PASSB
수도코드result = B
설명B 통과
영향을 받는 플래그AND와 같은 EQ,SN
이름NOTA
수도코드result = ~A
설명A 역
영향을 받는 플래그AND와 같은 EQ,SN
이름NOTB
수도코드result = ~B
설명B 역
영향을 받는 플래그AND와 같은 EQ,SN
이름MIN
수도코드if(A<B)
result = A
else
result = B
설명A와 B 중 더 적은 값을 반환
영향을 받는 플래그A>B이면 GT, A<B이면 LT
A==B이면 EQ, 결과의 비트[31] SN
A+~B+1의 출력 캐리 CO, A-B의 오버플로 OV
이름MIN16
수도코드MIN의 병렬 16비트 버전
설명32비트 동작을 위하여 A와 B 중 더 적은 값을 반환
영향을 받는 플래그플래그[0]도 유효하고, 나머지는 MIN과 동일
이름MAX
수도코드if(A>B)
result = A
else
result = B
설명A와 B 중 더 큰 값을 반환
영향을 받는 플래그A>B이면 GT, A<B이면 LT
A==B이면 EQ, 결과의 비트[31] SN
A+~B+1의 출력 캐리 CO, A-B의 오버플로 OV
이름MAX16
수도코드MAX의 병렬 16비트 버전
설명32비트 동작을 위하여 A와 B 중 더 큰 값을 반환
영향을 받는 플래그플래그[0]도 유효하고, 나머지는 MIN과 동일
이름PENC
수도코드result = 0;
for( i=31 ; i>=0 ; I--;){
if(B(i)==1){
result = i+1;
break;
}
}
설명하나의 검출을 유도
영향을 받는 플래그없음
이름MUXBBA
수도코드result = in[A[4:0]]
설명입력 A의 4 lsb를 이용하여 16을 멀티플렉스
영향을 받는 플래그결과의 비트[31] SN
이름SHIFTBBA
수도코드if(A[5])
result = B<<A[4:0];
else
result = B<<A[4:0];
설명B를 A만큼 시프트. config 메모리내 con32 비트에
의하여 16/32비트가 결정됨. 그렇지 않다면, 시프트된 출력 비트가 플래그로 전달될 것임.
영향을 받는 플래그결과의 비트[31]
1.11 DPU 기능 - 시프터/마스크 이후
16비트
32비트
산술AddAdd
SubSub
Saturation AddSaturation Add
Saturation SubSaturation Sub
IncInc
DecDec
NegNeg
논리ANDAND
OROR
XORXOR
NANDNAND
NORNOR
XNORXNOR
NOTNOT
PASS(NOP)PASS(NOP)
특별 기능ABSABS
MINMIN
MAXMAX
RxorRxor
N/ADIV
N/ALFSR
N/APENC
N/AMUXB_by_A1
N/ASHIFT_by-A2
주의 : 슬라이스마다 896 비트(28*32) 비트를 구성할 수 있음.
--------------------------------------------
1. 2<=N<=8인 경우 N:1을 구현하기 위한 것
2. A[4:0]은 시프트 양이고, A[5]는 시프트 방향임
CS2212 ALU 동작코드 추가
다음 동작코드가 CS2212에 부가될 것임:
ADD8
SUB8
ADDSUB16
SUBADD16
-----------------------------------------------------------------------------
동작:ADD8 : 8비트 가산
Out[7:0]=A[7:0]+B[7:0]
Out[15:8]=A[15:8]+B[15:8]
Out[23:16]=A[23:16]+B[23:16]
Out[31:24]=A[31:24]+B[31:24]
동작코드:
??????? |
비트 그래뉴리티:8비트 동작
영향을 받는 플래그:어떠한 플래그도 영향을 받지 않음
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
동작:SUB8 : 8비트 가산
Out[7:0]=A[7:0]+~B[7:0]+1
Out[15:8]=A[15:8]+~B[15:8]+1
Out[23:16]=A[23:16]+~B[23:16]+1
Out[31:24]=A[31:24]+~B[31:24]+1
동작코드:
??????? |
비트 그래뉴리티:8비트 동작
영향을 받는 플래그:어떠한 플래그도 영향을 받지 않음
----------------------------------------------------------------------------------------------------------------------------------------------------------
동작:ADDSUB16 : 16비트 가산 및 감산
Out[31:16]=A[31:16]+B[31:16]
Out[15:0]=A[15:0]+~B[15:0]+1
동작코드:
??????? |
비트 그래뉴리티:16비트 동작
영향을 받는 플래그:CO,OV,EQ,SN
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
동작:SUBADD16 : 16비트 감산 및 가산
Out[31:16]=A[31:16]+~B[31:16]+1
Out[15:0]=A[15:0]+B[15:0]
동작코드:
??????? |
비트 그래뉴리티:16비트 동작
영향을 받는 플래그:CO,OV,EQ,SN
-----------------------------------------------------------------------------
CS2212 승산기 출력 Mux 사양
A 또는 B 오퍼랜드가 O 레지스터에서 래치될 수 있도록 CS2212에 있어서 승산기를 위한 출력 Mux가 변화할 것이다. 이는 승산 연산을 유효하게 우회한다. 이는 MULT CSM에서 'muxmultlsmsel' 필드에 대한 한 비트 추가를 필요로 할 것이다. 신호 'muxmultlsmsel'은 다음과 같은 방식으로 O 레지스터에 대한 입력을 선택할 것이다.
muxmultlsmsel[1:0] | O 레지스터 또는 MULT 출력 결과 |
2'b000 | 승산 결과 |
2'b001 | LSM 판독 데이터 |
2'b010 | A 오퍼랜드 |
2'b011 | B 오퍼랜드 |
이러한 기능으로 인하여 승산기가 그 주요 기능을 위하여 이용되지 않는 경우 사용자는 그 승산기를 동적으로 구성가능한 라우팅 자원으로서 이용할 수 있다.
CS2212 파이프라인 레지스터 사양
CS2212는 마스크 레지스터나 파이프라인 레지스터 중 하나로서 이용될 수 있는 레지스터를 포함한다. 사용자가 A 및 B 오퍼랜드 경로에서 파이프라인 레지스터를 이용하고 또한 마스크 레지스터를 이용할 수 있도록 하기 위하여, CS2212는 부가 레지스터를 포함할 것이다. 이들 레지스터는 A 및 B 입력 이후 삽입되고 'apipe' 및 'bpipe'로 불릴 것이다. 이들 레지스터는 각각 'muxapipe'와 'muxbpipe' 신호에 의하여 우회될 수 있다. 이들 레지스터와 mux의 배치에 관하여 CS2212 DPU 블록도를 참조할 수 있다. mux는 다음과 같은 방식으로 선택된다.
'muxapipe' | A 오퍼랜드 | 'muxbpipe' | B 오퍼랜드 |
0 | 레지스터 우회 | 0 | 레지스터 우회 |
1 | 파이프라인 레지스터 | 1 | 파이프라인 레지스터 |
CS2212 LSM 기록 데이터 Mux 사양
CS2212는 ALU 출력뿐만 아니라 시프터 출력으로 LSM에 기록할 수 있을 것이다. 이러한 추가된 기능을 구현하기 위하여, mux가 LSM 기록 데이터 경로에 추가될 것이다. 이러한 mux는 'muxlsmwd'로 불릴 것이며, 'muxlsmwdsel'에 의하여 다음과 같은 방식으로 선택된다.
'muxlsmwd' | LSM 기록 데이터 |
0 | ALU 출력 |
1 | 시프터 출력 |
'muslsmws'의 배치를 위하여 CS2212 블록도를 참조할 수 있다.
2.1 일반적 설명
구조가 재구성가능하고 config 비트에 의하여 제어된다. config 비트는 arc 명령을 발생함으로써 구조에 로딩되고 config 제어기는 config 비트를 구조의 구성 플레인으로 전송할 것이다.
다음 테이블은 어드레스 공간에서 어떤 어드레스가 각 config 신호에 대응하는지에 관한 소프트웨어 정보를 제공한다. 아직까지는 구성의 베이스 어드레스가 결정되지 않았으며 따라서 다음 어드레스는 0에서 시작할 것이다.
2.2 세부사항
상위 16비트는 재장 어드레스(embedded address)일 것이다.
최상위 비트(비트[127])는 패리티 비트이다. 하드웨어는 128비트의 각 라인에서 짝수 패리티를 체크할 것이다. 패리티 작용을 위하여, Dani에 의하여 ARC 확장 스펙을 체크할 것이다.
아래 어드레스는 소정 베이스 어드레스와 관련된다.
각 128비트 라인은 config 데이터의 캐리 112일 것이다.
config 로딩 동안, 하드웨어는 각 사이클마다 최대 112비트를 저장할 수 있다.
특정 구성에 있어서 필요하지 않은 라인의 경우, 이러한 특정 라인은 스킵될 수 있다.
슬라이스 어드레스는 현재 어드레스 맵에 포함되지 않을 것이며 우선은 현재 매핑으로부터 제거될 것이다. 하나의 동작에서 여러 슬라이스를 구성하는 방법을알기 위하여 ARC 확장 스펙을 참조해야 한다.
ㆍInput_mux 슬라이스 0 PLA0(각 비트는 개별 인에이블을 가짐)
ㆍPLAin[0]은 DPU0에 관한 멀티플렉서 입력임
ㆍPLAin[1]dms DPU0에 관한 멀티플렉서 입력임
ㆍSTATE0[n]은 슬라이스0의 주요 상태 출력임
ㆍLSTATE0[n]은 슬라이스0의 하위 상태 출력임
ㆍFLAG[n]는 슬라이스0의 주요 플래그 출력임
ㆍLSTATE0[n]는 슬라이스0의 하위 플래그 출력임
ㆍHBIT0[n]은 수평 상태 버스임
ㆍHBIT[n]는 입력 mux 이전에 선택적 레지스터를 필요로 함
ㆍIO[7:0]는 각 슬라이스에 관련된 pin으로부터의 8개 I/O 비트
ㆍ비트0 입력, 데이터는 데이터 경로로부터 hortnet mux 출력. 각 타일은 8 hortnet mux를 가짐. 제어는 각 타일로부터의 하위 16비트 hortnet mux 7을 선택할 것임. mux 7의 출력 값이며, tristate의 입력임에 주목해야 함
ㆍ타일 D를 취하여 그것이 제공하는 데이터(STATE*[31:24], FLA[27:21]...)가 그라운드에 연결됨
PLA_in_sel은 64to1 mux 선택임. 각 PLA마다 그 중 16개가 있음(각 비트는 개별적으로 제어됨)
ㆍHorz_mux 슬라이스0 PLA0(각 비트는 개별 인에이블을 가짐)
ㆍHMUX[0]은 16 수평 상태 라인 중 하나임
ㆍ각 mux는 또한 tristate 인에이블을 필요로 함
Claims (44)
- 재구성가능 칩(reconfigurable chip)으로서,멀티플렉서(multiplexers)와 적어도 하나의 시프터 유닛(shifter unit)과 적어도 하나의 산술 논리 유닛(arithmetic logic unit)을 포함하고, 상기 멀티플렉서와 상기 시프터 유닛과 상기 산술 논리 유닛의 구성을 제어하는 재구성가능 기능 유닛 명령에 의하여 구성되어, 서로 다른 기능을 구현하도록 적합화된 복수의 재구성가능 기능 유닛; 및상기 재구성가능 기능 유닛 중 일부를 선택적으로 상호 연결하도록 적합화된 상호 연결 소자(interconnect elements)를 포함하는 재구성가능 칩.
- 제 1 항에 있어서,상기 재구성가능 기능 유닛 명령이 멀티플렉서 필드, 시프터 유닛 필드 및 산술 논리 유닛 필드를 포함하는 많은 수의 필드로 분할되는 재구성가능 칩.
- 제 1 항에 있어서,상기 재구성가능 기능 유닛이 데이터 경로 유닛(data path unit)을 포함하는 재구성가능 칩.
- 제 1 항에 있어서,상기 상호 연결 소자는 워드 길이 데이터(word length data)를 전송하도록 적합화된 재구성가능 칩.
- 제 4 항에 있어서,상기 워드 길이 데이터가 32비트 이상의 길이인 재구성가능 칩.
- 제 1 항에 있어서,상기 재구성가능 기능 유닛을 위한 복수의 명령을 저장하는 명령 메모리(instruction memory)를 더 포함하는 재구성가능 칩.
- 제 1 항에 있어서,상기 시프터 유닛이 많은 수의 모드로 구성가능한 재구성가능 칩.
- 제 7 항에 있어서,상기 재구성가능 기능 유닛 명령이 상기 시프터 유닛의 상기 모드를 제어하는 시프터 유닛 필드를 포함하는 재구성가능 칩.
- 제 1 항에 있어서,가변 지연 시스템(variable delay system)을 구현하기 위하여 상기 멀티플렉서 중 적어도 하나가 지연 유닛 입력(delay unit input) 및 상기 지연 유닛을 우회(bypassing)하는 임의의 입력에 연관되는 재구성가능 칩.
- 제 1 항에 있어서,상기 재구성가능 기능 유닛이 상기 재구성가능 기능 유닛 내부에 일시적으로 값을 저장하기 위한 레지스터를 포함하는 재구성가능 칩.
- 재구성가능 칩으로서,멀티플렉서와 적어도 하나의 시프터 유닛과 적어도 하나의 산술 논리 유닛을 포함하는 재구성가능 기능 유닛이면서 상기 시프터 유닛은 상기 산술 논리 유닛이 상기 재구성가능 기능 유닛의 워드 길이 입력 데이터 내에 속하는 서로 다른 비트에 의하여 동작하도록 적합화된 복수의 재구성가능 기능 유닛; 및상기 재구성가능 기능 유닛 중 일부를 선택적으로 서로 연결하도록 적합화되고, 워드 길이 데이터를 전송하도록 적합화된 상호 연결 소자를 포함하는 재구성가능 칩.
- 제 11 항에 있어서,상기 워드 길이 데이터가 32비트 이상인 재구성가능 칩.
- 제 12 항에 있어서,상기 워드 길이 데이터가 32비트 길이인 재구성가능 칩.
- 제 11 항에 있어서,상기 재구성가능 기능 유닛이 상기 멀티플렉서와 상기 시프터 유닛과 상기 산술 논리 유닛의 구성을 제어하는 재구성가능 기능 유닛 명령에 의하여 구성되는 재구성가능 칩.
- 제 11 항에 있어서,상기 재구성가능 칩이 상기 재구성가능 기능 유닛을 위한 복수의 명령을 저장하는 명령 메모리를 더 포함하는 재구성가능 칩.
- 제 11 항에 있어서,상기 시프터 유닛은 많은 수의 서로 다른 모드로 구성가능한 재구성가능 칩.
- 제 11 항에 있어서,상기 멀티플렉서 중 일부가 지연 유닛 입력 및 상기 지연 유닛을 우회하는 입력에 연관되는 재구성가능 칩.
- 재구성가능 칩으로서,멀티플렉서와 적어도 하나의 시프터 유닛과 적어도 하나의 산술 논리 유닛을 포함하고, 상기 멀티플렉서와 상기 시프터 유닛과 상기 산술 논리 유닛의 구성을 제어하는 재구성가능 기능 유닛 명령에 의하여 구성되는 복수의 재구성가능 기능 유닛; 및상기 재구성가능 기능 유닛을 위한 복수의 명령을 저장하는 명령 메모리를 포함하는 재구성가능 칩.
- 제 18 항에 있어서,상기 명령 메모리가 상기 재구성가능 기능 유닛 각각에 연관되는 재구성가능 칩.
- 제 18 항에 있어서,상기 명령 메모리가 상기 명령 메모리를 위한 어드레스를 생성하는 상태 머신(state machine)에 연관되는 재구성가능 칩.
- 제 18 항에 있어서,상기 재구성가능 기능 유닛 명령이 상기 멀티플렉서를 구성하기 위한 필드와 시프터 유닛 제어 필드와 산술 논리 유닛 제어 필드를 포함하는 재구성가능 칩.
- 제 18 항에 있어서,상기 재구성가능 기능 유닛 중 일부를 선택적으로 상호 연결하도록 적합화된 상호 연결 소자를 더 포함하는 재구성가능 칩.
- 제 22 항에 있어서,상기 상호 연결 유닛은 워드 길이 데이터를 전송하도록 적합화된 재구성가능 칩.
- 제 18 항에 있어서,상기 시프터 유닛이 많은 수의 모드로 구성가능한 재구성가능 칩.
- 제 24 항에 있어서,상기 시프터 유닛이 상기 재구성가능 유닛 명령의 시프터 유닛 필드에 의하여 제어되는 재구성가능 칩.
- 제 18 항에 있어서,가변 지연을 구현할 수 있도록 상기 멀티플렉서 중 적어도 하나가 지연 유닛 입력 및 상기 지연 유닛을 우회하는 입력과 연관되는 재구성가능 칩.
- 재구성가능 칩으로서,멀티플렉서와 적어도 하나의 시프터 유닛과 적어도 하나의 산술 논리 유닛을포함하고 상기 시프터 유닛은 많은 수의 모드로 구성가능한 복수의 재구성가능 기능 유닛; 및상기 재구성가능 기능 유닛 중 일부를 선택적으로 상호 연결하도록 적합화된 상호 연결 소자를 포함하는 재구성가능 칩.
- 제 27 항에 있어서,상기 시프터 모드는 논리 및 산술 좌우측 시프트 이외의 모드를 포함하는 재구성가능 칩.
- 제 27 항에 있어서,적어도 하나의 모드는 입력 워드의 블록을 재정렬하는 재구성가능 칩.
- 제 27 항에 있어서,상기 모드 중 하나가 상수 발생을 포함하는 재구성가능 칩.
- 제 27 항에 있어서,상기 모드 중 하나가 어느 하나의 비트 세트를 다른 비트 세트로 복사하는 재구성가능 칩.
- 제 27 항에 있어서,상기 모드 중 하나가 소정의 비트 그룹을 다른 비트 그룹과 교체시키는 재구성가능 칩.
- 제 27 항에 있어서,상기 재구성가능 기능 유닛이 상기 산술 논리 유닛과 상기 시프터 유닛과 상기 멀티플렉서를 구성하는 재구성가능 기능 유닛 명령에 의하여 구성되는 재구성가능 칩.
- 제 33 항에 있어서,상기 재구성가능 기능 유닛 명령이 상기 시프터 유닛의 상기 모드를 제어하는 상기 시프터 유닛 제어를 위한 필드를 포함하는 재구성가능 칩.
- 제 27 항에 있어서,상기 상호 연결 소자는 워드 길이 데이터를 전송하도록 적합화된 재구성가능 칩.
- 제 27 항에 있어서,상기 재구성가능 기능 유닛을 위한 명령을 저장하는 명령 메모리를 더 포함하는 재구성가능 칩.
- 제 27 항에 있어서,가변 지연을 구현하기 위하여 상기 멀티플렉서 중 적어도 하나는 지연 입력 유닛 및 상기 지연 유닛을 우회하는 입력과 연관되는 재구성가능 칩.
- 재구성가능 칩으로서,적어도 하나는 지연 유닛 입력 및 상기 지연 유닛을 우회하는 입력에 연관된 멀티플렉서와, 적어도 하나의 시프터 유닛과, 적어도 하나의 산술 논리 유닛을 포함하는 복수의 재구성가능 기능 유닛; 및상기 재구성가능 기능 유닛 중 일부를 선택적으로 상호 연결하도록 적합화된 상호 연결 소자를 포함하는 재구성가능 칩.
- 제 38 항에 있어서,상기 재구성가능 기능 유닛이 상기 멀티플렉서와 상기 시프터 유닛과 상기 산술 논리 유닛의 구성을 제어하는 재구성가능 기능 유닛 명령에 의하여 재구성되는 재구성가능 칩.
- 제 39 항에 있어서,상기 재구성가능 기능 유닛 명령은 상기 멀티플렉서와 상기 시프터 유닛과상기 산술 논리 유닛의 구성을 제어하기 위하여 많은 수의 서로 다른 필드를 포함하는 재구성가능 칩.
- 제 39 항에 있어서,상기 재구성가능 기능 유닛을 위한 명령 필드는 초록의 상기 모드를 나타내는 재구성가능 칩.
- 제 38 항에 있어서,상기 상호 연결 소자는 워드 길이 데이터를 전송하도록 적합화된 재구성가능 칩.
- 제 38 항에 있어서,상기 재구성가능 기능 유닛을 위한 복수의 명령을 저장하는 명령 메모리를 더 포함하는 재구성가능 칩.
- 제 38 항에 있어서,상기 재구성가능 기능 유닛이 많은 수의 서로 다른 모드로 구성가능한 시프터 유닛을 포함하는 재구성가능 칩.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US28829801P | 2001-05-02 | 2001-05-02 | |
US60/288,298 | 2001-05-02 | ||
PCT/US2002/011870 WO2002103518A1 (en) | 2001-05-02 | 2002-05-02 | Efficient high performance data operation element for use in a reconfigurable logic environment |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040005944A true KR20040005944A (ko) | 2004-01-16 |
KR100628448B1 KR100628448B1 (ko) | 2006-09-26 |
Family
ID=23106530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020037014350A KR100628448B1 (ko) | 2001-05-02 | 2002-05-02 | 재구성가능 칩 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20030088757A1 (ko) |
JP (1) | JP2004531149A (ko) |
KR (1) | KR100628448B1 (ko) |
CN (1) | CN1860441A (ko) |
DE (1) | DE10296742T5 (ko) |
GB (1) | GB2398653A (ko) |
WO (1) | WO2002103518A1 (ko) |
Families Citing this family (70)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI234737B (en) * | 2001-05-24 | 2005-06-21 | Ip Flex Inc | Integrated circuit device |
US7142011B1 (en) | 2002-04-24 | 2006-11-28 | Altera Corporation | Programmable logic device with routing channels |
US6781408B1 (en) | 2002-04-24 | 2004-08-24 | Altera Corporation | Programmable logic device with routing channels |
DE602005018670D1 (de) * | 2004-10-18 | 2010-02-11 | Idarca Inc | Umkonfigurierbares, modulares, hierarchisches parallelprozessorsystem |
GB2423840A (en) * | 2005-03-03 | 2006-09-06 | Clearspeed Technology Plc | Reconfigurable logic in processors |
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 |
US8266199B2 (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 |
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 |
US8386550B1 (en) | 2006-09-20 | 2013-02-26 | Altera Corporation | Method for configuring a finite impulse response filter in a programmable logic device |
US8386553B1 (en) | 2006-12-05 | 2013-02-26 | Altera Corporation | Large multiplier for programmable logic device |
US7930336B2 (en) | 2006-12-05 | 2011-04-19 | 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 |
US7949699B1 (en) | 2007-08-30 | 2011-05-24 | Altera Corporation | Implementation of decimation filter in integrated circuit device using ram-based data storage |
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 |
US8805916B2 (en) * | 2009-03-03 | 2014-08-12 | Altera Corporation | Digital signal processing circuitry with redundancy and bidirectional data paths |
US8468192B1 (en) | 2009-03-03 | 2013-06-18 | Altera Corporation | Implementing multipliers in a programmable integrated circuit device |
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 |
US8706790B1 (en) | 2009-03-03 | 2014-04-22 | Altera Corporation | Implementing mixed-precision floating-point operations in a programmable integrated circuit device |
US8645449B1 (en) | 2009-03-03 | 2014-02-04 | Altera Corporation | Combined floating point adder and subtractor |
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 |
US8539016B1 (en) | 2010-02-09 | 2013-09-17 | Altera Corporation | QR decomposition in an integrated circuit device |
US7948267B1 (en) | 2010-02-09 | 2011-05-24 | Altera Corporation | Efficient rounding circuits and methods in configurable integrated circuit devices |
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 |
US8645807B2 (en) * | 2010-05-31 | 2014-02-04 | National Chiao Tung University | Apparatus and method of processing polynomials |
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 |
US10534608B2 (en) * | 2011-08-17 | 2020-01-14 | International Business Machines Corporation | Local computation logic embedded in a register file to accelerate programs |
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 |
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 |
US9189200B1 (en) | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
US9379687B1 (en) | 2014-01-14 | 2016-06-28 | Altera Corporation | Pipelined systolic finite impulse response filter |
CN104900260B (zh) * | 2014-03-07 | 2018-08-24 | 中芯国际集成电路制造(上海)有限公司 | 延时选择器 |
WO2015184330A1 (en) * | 2014-05-29 | 2015-12-03 | Altera Corporation | An accelerator architecture on a programmable platform |
US11797473B2 (en) * | 2014-05-29 | 2023-10-24 | Altera Corporation | Accelerator architecture on a programmable platform |
US9684488B2 (en) | 2015-03-26 | 2017-06-20 | Altera Corporation | Combined adder and pre-adder for high-radix multiplier circuit |
US10942706B2 (en) | 2017-05-05 | 2021-03-09 | Intel Corporation | Implementation of floating-point trigonometric functions in an integrated circuit device |
US10565036B1 (en) | 2019-02-14 | 2020-02-18 | Axis Semiconductor, Inc. | Method of synchronizing host and coprocessor operations via FIFO communication |
JP7433931B2 (ja) * | 2020-01-27 | 2024-02-20 | キヤノン株式会社 | 情報処理装置及びその制御方法及びプログラム |
JP7471913B2 (ja) * | 2020-05-20 | 2024-04-22 | キヤノン株式会社 | 信号処理装置及びその駆動制御方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4761755A (en) * | 1984-07-11 | 1988-08-02 | Prime Computer, Inc. | Data processing system and method having an improved arithmetic unit |
US4862407A (en) * | 1987-10-05 | 1989-08-29 | Motorola, Inc. | Digital signal processing apparatus |
DE69132495T2 (de) * | 1990-03-16 | 2001-06-13 | Texas Instruments Inc., Dallas | Verteilter Verarbeitungsspeicher |
USH1385H (en) * | 1991-10-18 | 1994-12-06 | The United States Of America As Represented By The Secretary Of The Navy | High speed computer application specific integrated circuit |
US5517439A (en) * | 1994-02-14 | 1996-05-14 | Matsushita Electric Industrial Co., Ltd. | Arithmetic unit for executing division |
US5649174A (en) * | 1994-12-09 | 1997-07-15 | Vlsi Technology Inc. | Microprocessor with instruction-cycle versus clock-frequency mode selection |
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 |
US6510510B1 (en) * | 1996-01-25 | 2003-01-21 | Analog Devices, Inc. | Digital signal processor having distributed register file |
US5956518A (en) * | 1996-04-11 | 1999-09-21 | Massachusetts Institute Of Technology | Intermediate-grain reconfigurable processing device |
US5828858A (en) * | 1996-09-16 | 1998-10-27 | Virginia Tech Intellectual Properties, Inc. | Worm-hole run-time reconfigurable processor field programmable gate array (FPGA) |
FR2757973B1 (fr) * | 1996-12-27 | 1999-04-09 | Sgs Thomson Microelectronics | Processeur de traitement matriciel |
US5970254A (en) * | 1997-06-27 | 1999-10-19 | Cooke; Laurence H. | Integrated processor and programmable data path chip for reconfigurable computing |
US5948098A (en) * | 1997-06-30 | 1999-09-07 | Sun Microsystems, Inc. | Execution unit and method for executing performance critical and non-performance critical arithmetic instructions in separate pipelines |
US6108760A (en) * | 1997-10-31 | 2000-08-22 | Silicon Spice | Method and apparatus for position independent reconfiguration in a network of multiple context processing elements |
US6122719A (en) * | 1997-10-31 | 2000-09-19 | Silicon Spice | Method and apparatus for retiming in a network of multiple context processing elements |
US6128724A (en) * | 1997-12-11 | 2000-10-03 | Leland Stanford Junior University | Computation using codes for controlling configurable computational circuit |
DE69827589T2 (de) * | 1997-12-17 | 2005-11-03 | Elixent Ltd. | Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen |
US6226735B1 (en) * | 1998-05-08 | 2001-05-01 | Broadcom | Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements |
-
2002
- 2002-05-01 US US10/135,849 patent/US20030088757A1/en not_active Abandoned
- 2002-05-02 JP JP2003505770A patent/JP2004531149A/ja active Pending
- 2002-05-02 DE DE10296742T patent/DE10296742T5/de not_active Ceased
- 2002-05-02 CN CNA028133811A patent/CN1860441A/zh active Pending
- 2002-05-02 GB GB0327399A patent/GB2398653A/en not_active Withdrawn
- 2002-05-02 WO PCT/US2002/011870 patent/WO2002103518A1/en active Application Filing
- 2002-05-02 KR KR1020037014350A patent/KR100628448B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN1860441A (zh) | 2006-11-08 |
DE10296742T5 (de) | 2004-04-29 |
KR100628448B1 (ko) | 2006-09-26 |
US20030088757A1 (en) | 2003-05-08 |
JP2004531149A (ja) | 2004-10-07 |
WO2002103518A1 (en) | 2002-12-27 |
GB0327399D0 (en) | 2003-12-31 |
GB2398653A (en) | 2004-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100628448B1 (ko) | 재구성가능 칩 | |
US5915123A (en) | Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements | |
US5287532A (en) | Processor elements having multi-byte structure shift register for shifting data either byte wise or bit wise with single-bit output formed at bit positions thereof spaced by one byte | |
US4418383A (en) | Data flow component for processor and microprocessor systems | |
US6122719A (en) | Method and apparatus for retiming in a network of multiple context processing elements | |
US6519674B1 (en) | Configuration bits layout | |
US5659785A (en) | Array processor communication architecture with broadcast processor instructions | |
US6226735B1 (en) | Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements | |
US6108760A (en) | Method and apparatus for position independent reconfiguration in a network of multiple context processing elements | |
US6362650B1 (en) | Method and apparatus for incorporating a multiplier into an FPGA | |
US6023742A (en) | Reconfigurable computing architecture for providing pipelined data paths | |
US6175247B1 (en) | Context switchable field programmable gate array with public-private addressable sharing of intermediate data | |
US6288566B1 (en) | Configuration state memory for functional blocks on a reconfigurable chip | |
US6816961B2 (en) | Processing architecture having field swapping capability | |
US6668316B1 (en) | Method and apparatus for conflict-free execution of integer and floating-point operations with a common register file | |
JP2008537268A (ja) | 可変精度相互接続を具えたデータ処理エレメントの配列 | |
JP2006018453A (ja) | 半導体装置 | |
US6282558B1 (en) | Data processing system and register file | |
JP4451733B2 (ja) | 半導体装置 | |
GB2395298A (en) | Reconfigurable multi processor array in which the result registers are selectively connected to the processing elements | |
US20030088826A1 (en) | Method and apparatus for performing computations and operations on data using data steering | |
US7616628B2 (en) | Switched processor datapath | |
US20070169022A1 (en) | Processor having multiple instruction sources and execution modes | |
US20090113083A1 (en) | Means of control for reconfigurable computers | |
Srini et al. | Parallel DSP with memory and I/O processors |
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 | ||
FPAY | Annual fee payment |
Payment date: 20120919 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20130902 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20140829 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20150827 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20160831 Year of fee payment: 11 |
|
LAPS | Lapse due to unpaid annual fee |