KR20160105774A - 파이프라인 설정가능한 프로세서 - Google Patents
파이프라인 설정가능한 프로세서 Download PDFInfo
- Publication number
- KR20160105774A KR20160105774A KR1020167014326A KR20167014326A KR20160105774A KR 20160105774 A KR20160105774 A KR 20160105774A KR 1020167014326 A KR1020167014326 A KR 1020167014326A KR 20167014326 A KR20167014326 A KR 20167014326A KR 20160105774 A KR20160105774 A KR 20160105774A
- Authority
- KR
- South Korea
- Prior art keywords
- thread
- configurable
- circuit
- pipeline
- routing network
- Prior art date
Links
- 238000012545 processing Methods 0.000 claims abstract description 20
- 230000000644 propagated effect Effects 0.000 claims abstract description 9
- 238000013500 data storage Methods 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 46
- 230000015654 memory Effects 0.000 claims description 31
- 230000008859 change Effects 0.000 claims description 12
- 238000005192 partition Methods 0.000 claims description 2
- 230000008878 coupling Effects 0.000 abstract 1
- 238000010168 coupling process Methods 0.000 abstract 1
- 238000005859 coupling reaction Methods 0.000 abstract 1
- 230000008569 process Effects 0.000 description 5
- 230000001934 delay Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000010813 municipal solid waste Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/10—Distribution of clock signals, e.g. skew
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
- G06F15/7875—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for multiple contexts
-
- 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
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
- G06F15/7878—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for pipeline reconfiguration
-
- 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
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7892—Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3873—Variable length pipelines, e.g. elastic pipeline
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
- H04L49/1515—Non-blocking multistage, e.g. Clos
- H04L49/1546—Non-blocking multistage, e.g. Clos using pipelined operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/101—Packet switching elements characterised by the switching fabric construction using crossbar or matrix
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
- H04L49/1553—Interconnection of ATM switching modules, e.g. ATM switching fabrics
- H04L49/1569—Clos switching fabrics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
복수의 쓰레드들을 동시에 핸들링할 수 있는 설정가능한 프로세싱 회로에 있어서, 회로는, 쓰레드 데이터 저장부; 복수의 설정가능한 실행 유닛들; 쓰레드 데이터 저장부 내의 위치들을 실행 유닛들에 연결하기 위한 설정가능한 라우팅 네트워크; 복수의 실행 유닛들 중 하나 이상의 설정 및 라우팅 네트워크의 설정을 각각 규정하는 설정 인스턴스들을 저장하기 위한 설정 데이터 저장부; 및 실행 유닛들, 라우팅 네트워크 및 쓰레드 데이터 저장부로 형성되고, 클록 사이클 각각에 쓰레드 각각이 일 파이프라인 섹션으로부터 다음 파이프라인 섹션으로 전파되도록 설정된 복수의 파이프라인 섹션들을 포함하는, 파이프라인을 포함하고, 회로는: (i) 쓰레드 각각을 설정 인스턴스와 연관시키고; 그리고 (ii) 클록 사이클 동안 파이프라인 섹션을 통해 전파될 각각의 쓰레드와 연관된 설정 인스턴스에 따라 클록 사이클 각각에 대해 복수의 파이프라인 섹션 각각을 설정하도록 구성된다.
Description
본 발명은 집적 회로를 위한 프로세서 설계에 관련된다.
집적 회로는 통상적으로 상호연결 회로들에 의해 함께 연결된 많은 수의 기능 유닛들을 포함한다. 때때로, 기능 유닛들 및 상호연결 회로들은 설정가능하다. 이는 기능 유닛들이 특정한 거동을 채택하도록 프로그래밍될 수 있고 상호연결 회로들이 회로의 상이한 부분들을 서로 연결하도록 프로그래밍될 수 있다는 것을 의미한다. 설정가능한 회로의 공지의 예는 FPGA (field programmable gate array) 이고, 이는 광범위한 상이한 기능들을 수행하도록 사용자에 의해 프로그래밍된다. 설정가능한 집적 회로들의 다른 예들은 미국 특허 제 7,276,933 호, 미국 특허 제 8,493,090 호 및 미국 특허 제 6,282,627 호에 기술된다.
많은 설정가능한 회로들에서, 속도와 유연성 사이에 균형이 있다. 최대 유연성에 대해, 기능 유닛들의 많은 상이한 조합들이 가능한 한 함께 연결될 수 있는 것이 바람직하다. 이는 실행 유닛들이 칩에 걸쳐 이격된다면 긴 상호연결 경로들을 필요로 할 수 있다. 일반적으로 집적 회로는 가장 긴 동작보다 보다 빠르게 클록될 수 없고, 단일 클록 기간에서 수행될 수도 있다. 상호연결로 인한 지연은 종종 기능 유닛들로 인한 모든 지연보다 두드러져, 긴 상호연결 경로를 통해 데이터를 이송하기 위해 걸리는 시간은 전체 회로의 클록 속도를 궁극적으로 제한할 수 있는 제약이다.
집적 회로의 시간 지연들에 대한 상한을 정하기 위한 한가지 옵션은 일 클록 기간에 걸치는 모든 상호연결 경로들의 길이를 제한하는 것이다. 이는 집적 회로 주변에서 이동되는 데이터를 파이프라이닝함으로써 달성될 수 있다. 일 예는 상호연결 네트워크의 셀들을 스위칭하기 위한 입력들이 상호연결 네트워크를 통해 라우팅되는 데이터를 파이프라이닝하기 위한 래치들을 갖는, 미국 특허 제 6,940,308 호에 기술된다. 이 방법의 문제는 사용자의 설계가 요청된 래치들을 통합하도록 수정되어야 할 수도 있다는 것이다.
따라서, 개선된 유연한 프로세싱 회로에 대한 수요가 있다.
일 실시예에 따라, 복수의 쓰레드들을 동시에 핸들링할 수 있는 설정가능한 프로세싱 회로가 제공되고, 회로는, 쓰레드 데이터 저장부; 복수의 설정가능한 실행 유닛들; 쓰레드 데이터 저장부를 실행 유닛들에 연결하기 위한 설정가능한 라우팅 네트워크; 복수의 실행 유닛들 중 하나 이상의 설정 및 라우팅 네트워크의 설정을 각각 규정하는 설정 인스턴스들을 저장하기 위한 설정 데이터 저장부; 및 실행 유닛들, 라우팅 네트워크 및 쓰레드 데이터 저장부로 형성되고, 클록 사이클 각각에 쓰레드 각각이 일 파이프라인 섹션으로부터 다음 파이프라인 섹션으로 전파되도록 설정된 복수의 파이프라인 섹션들을 포함하는, 파이프라인을 포함하고, 회로는: (i) 쓰레드 각각을 설정 인스턴스와 연관시키고; 그리고 (ii) 클록 사이클 동안 파이프라인 섹션을 통해 전파될 각각의 쓰레드와 연관된 설정 인스턴스에 따라 클록 사이클 각각에 대해 복수의 파이프라인 섹션 각각을 설정하도록 구성된다.
회로는 설정 식별자와 설정 인스턴스 각각을 연관시키도록 구성될 수도 있다.
회로는 쓰레드와 함께 파이프라인을 통해 쓰레드와 연관된 설정 식별자를 전파하도록 구성될 수도 있다.
설정 데이터 저장부는 복수의 메모리들을 포함할 수도 있고, 회로는 메모리 각각이 특정한 파이프라인 섹션에 적용가능한 설정 인스턴스들의 부분들을 저장하도록 복수의 메모리들에 걸쳐 설정 인스턴스들을 파티셔닝하도록 구성될 수도 있다.
파이프라인 섹션 각각은 파이프라인에 적용가능한 설정 인스턴스들의 부분들을 저장하는 메모리에 액세스함으로써 설정 인스턴스에 액세스하도록 구성될 수도 있다.
파이프라인의 섹션 각각은 설정 데이터 저장부의 쓰레드와 연관된 설정 인스턴스에 액세스하도록 쓰레드와 연관된 설정 식별자를 사용하도록 구성될 수도 있다.
복수의 쓰레드들은 독립적일 수도 있다.
회로는 2 이상의 쓰레드를 동일한 설정 식별자와 연관시키도록 구성될 수도 있다.
회로는, 쓰레드가 회로의 패스 쓰루 (pass through) 시 회로의 제 2의, 후속하는 패스 쓰루 시와 상이한 설정을 따르도록, 쓰레드와 연관된 설정 식별자를 변경할 수도 있다.
회로는 쓰레드와 연관된 입력으로 동작할 때 실행 유닛들 중 하나에 의해 생성된 출력에 대해 독립적으로 설정 식별자를 변경하도록 구성될 수도 있다.
설정가능한 라우팅 네트워크는, 복수의 네트워크 입력들 및 복수의 네트워크 출력들을 포함하고, 네트워크 입력 각각을 네트워크 출력으로 연결하도록 설정가능할 수도 있다.
설정가능한 라우팅 네트워크는 임의의 네트워크 입력을 임의의 네트워크 출력에 연결할 수도 있다.
설정가능한 라우팅 네트워크는 임의의 하나 이상의 네트워크 출력들에 임의의 네트워크 입력을 연결할 수도 있다.
설정가능한 라우팅 네트워크의 출력들은 실행 유닛들의 입력들에 연결될 수도 있다.
설정가능한 라우팅 네트워크는 멀티스테이지 스위치를 포함할 수도 있다.
멀티스테이지 스위치는, 스테이지 각각에서 하나 이상의 스위치들을 포함하고, 스위치 각각은 복수의 스위치 입력들 및 복수의 스위치 출력들을 갖고 스위치 입력 각각을 스위치 출력에 연결하도록 구성될 수 있다.
멀티스테이지 스위치의 모든 스테이지의 스위치들은 동일한 수의 스위치 입력들 및 스위치 출력들을 포함할 수도 있다.
멀티스테이지 스위치의 일 스테이지에 포함된 스위치들은 또 다른 스테이지에 포함된 스위치들과 상이한 수의 스위치 입력들 및 스위치 출력들을 포함할 수도 있다.
파이프라인 섹션은 멀티스테이지 스위치의 하나 이상의 스테이지들에 포함된 스위치들로 형성될 수도 있다.
멀티스테이지 스위치의 내측 스테이지의 스위치들로 형성된 파이프라인 섹션은 멀티스테이지 스위치의 외측 스테이지에 포함된 스위치들로 형성된 파이프라인 섹션과 상이한 수의 멀티스테이지 스위치의 스테이지들로부터의 스위치들을 포함할 수도 있다.
설정가능한 라우팅 네트워크는 Clos 네트워크를 포함할 수도 있다.
설정가능한 라우팅 네트워크는 하나 이상의 크로스바 스위치들을 포함한다.
설정가능한 라우팅 네트워크는 차단되지 않을 수도 있다.
설정가능한 라우팅 네트워크는 전체적으로 (fully) 설정가능할 수도 있다.
설정가능한 라우팅 네트워크는 부분적으로 설정가능할 수도 있다.
회로는 배기 유닛 각각을 위한 전용 온-칩 메모리를 포함할 수도 있다.
회로는 쓰레드 데이터 저장부들 내에 저장된 데이터가 유효한지 체크하기 위한 체크 유닛을 포함할 수도 있다.
체크 유닛은, 무효 데이터를 식별한다면, 실행 유닛들이 무효 데이터가 판독된 쓰레드에 대해 동작할 때, 실행 유닛들이 쓰레드 데이터 저장부에 기록하는 것 및/또는 메모리 액세스 동작들을 수행하는 것을 연기하도록 (suspend) 구성될 수도 있다.
회로는, 무효 데이터가 판독된 쓰레드가 회로의 다음 패스 쓰루 시 동일한 상태와 연관되도록 구성될 수도 있다.
쓰레드 데이터 저장부들 내의 위치는 2 개의 유효 비트들과 연관될 수도 있다.
설정가능한 라우팅 네트워크는 쓰레드 데이터 저장부들로부터 판독된 데이터를 반송하기 위한 복수 비트 폭의 데이터 경로들을 포함할 수도 있다.
회로는 2 개의 설정가능한 라우팅 네트워크들을 포함하고, 설정가능한 라우팅 네트워크들 중 하나는 다른 설정가능한 라우팅 네트워크들보다 보다 넓은 데이터 경로들을 포함할 수도 있다.
회로는 분해가능한 실행 유닛을 포함할 수도 있다.
회로는 입력들이 전환가능하도록 (commutable) 구성된 실행 유닛을 포함할 수도 있다. 설정가능한 라우팅 네트워크는 쓰레드 데이터 저장부를 실행 유닛 전환가능 입력들 및 실행 유닛 전환불가능 입력들에 연결하도록 구성될 수도 있고, 설정가능한 라우팅 네트워크의 최외측 스테이지는 쓰레드 데이터 저장부를 실행 유닛 전환가능 입력들에 연결하도록 구성된 제 1 수의 스위치들 및 쓰레드 데이터 저장부를 실행 유닛 전환불가능 입력들에 연결하도록 구성된 제 2 수의 스위치들을 포함하고, 제 1 수는 연결된 입력 당 제 2 수보다 보다 작을 수도 있다.
회로는 동적으로 재구성될 수도 있다.
본 발명의 제 2 실시예에 따라, 라우팅 네트워크의 구성 및 복수의 실행 유닛들 중 하나 이상의 구성을 규정하는 설정 인스턴스와 쓰레드 각각을 연관시키는 단계; 쓰레드 각각으로 하여금 클록 사이클 각각에서 일 파이프라인 섹션으로부터 다음 파이프라인 섹션으로 전파되게 하는 단계; 및 파이프라인 섹션 각각이 클록 사이클 동안 파이프라인 섹션을 통해 전파될 각각의 쓰레드와 연관된 설정 인스턴스에 따라 설정되도록, 클록 사이클 각각에 대해 복수의 파이프라인 섹션들 각각을 설정하는 단계를 포함하는, 쓰레드 데이터 저장부, 복수의 설정가능한 실행 유닛들, 쓰레드 데이터 저장부를 실행 유닛들에 연결하기 위한 설정가능한 라우팅 네트워크, 및 복수의 파이프라인 섹션들을 포함하고, 실행 유닛들, 라우팅 네트워크 및 쓰레드 데이터 저장부로 형성된 파이프라인을 포함하는 설정가능한 프로세싱 회로 내에서 복수의 쓰레드들을 동시에 핸들링하기 위한 방법이 제공된다.
본 발명은 첨부된 도면들을 참조하여 예로서 기술될 것이다. 도면들에서,
도 1은 설정가능한 프로세싱 회로의 예를 도시한다.
도 2는 라우팅 네트워크의 예를 도시한다.
도 3은 크로스바 스위치의 예를 도시한다.
도 4는 실행 유닛의 예를 도시한다.
도 5는 합산기로 설정된 실행 유닛의 예를 도시한다.
도 6은 파이프라이닝된 ALU로 설정된 실행 유닛의 예를 도시한다.
도 7은 롱-레이턴시 실행 유닛의 예를 도시한다.
도 8은 쓰레드에 대한 '설정 인스턴스 식별자'를 세팅하기 위한 실행 유닛의 예를 도시한다.
도 9는 분해가능한 (fracturable) 실행 유닛의 예를 도시한다.
도 10은 최적화된 룩업 테이블들의 2가지 예들을 도시한다.
도 1은 설정가능한 프로세싱 회로의 예를 도시한다.
도 2는 라우팅 네트워크의 예를 도시한다.
도 3은 크로스바 스위치의 예를 도시한다.
도 4는 실행 유닛의 예를 도시한다.
도 5는 합산기로 설정된 실행 유닛의 예를 도시한다.
도 6은 파이프라이닝된 ALU로 설정된 실행 유닛의 예를 도시한다.
도 7은 롱-레이턴시 실행 유닛의 예를 도시한다.
도 8은 쓰레드에 대한 '설정 인스턴스 식별자'를 세팅하기 위한 실행 유닛의 예를 도시한다.
도 9는 분해가능한 (fracturable) 실행 유닛의 예를 도시한다.
도 10은 최적화된 룩업 테이블들의 2가지 예들을 도시한다.
설정가능한 프로세싱 회로는 바람직하게 복수의 쓰레드들을 동시에 핸들링할 수 있다. 회로는 쓰레드 데이터 저장부, 하나 이상의 설정가능한 라우팅 네트워크들 및 다수의 설정가능한 실행 유닛들을 포함한다. 데이더 저장부로부터의 값들이 판독되고 이어서 라우팅 네트워크를 통해 실행 유닛들로 라우팅된다. 실행 유닛들은 이들 값들에 대한 동작들을 수행하고 이들의 출력들에서 새로운 값들을 전달한다. 실행 유닛들의 출력은 데이터 저장부들에 다시 기록된다.
회로는 또한 파이프라인을 포함한다. 파이프라인은 데이터 저장부들, 라우팅 네트워크 및 실행 유닛들로 설정된다. 클록 사이클 각각에서 쓰레드 각각이 일 파이프라인 섹션으로부터 다음 파이프라인 섹션으로 전파되도록 복수의 파이프라인 섹션들을 포함한다. 회로는 바람직하게 클록 사이클 각각에 대해, 이 때 파이프라인 섹션들이 쓰레드를 핸들링하기 적합하게 파이프라인 섹션들을 세팅하도록 구성된다. 쓰레드의 설정은, 쓰레드 각각의 데이터가 프로세싱 회로를 통해 독자적인 특정한 경로로 스티어링 (steer) 되도록 회로가 쓰레드를 "클록킹 쓰루 (clocking through)"하는 것으로 간주될 수 있다.
회로는 또한 복수의 설정 인스턴스들을 홀딩하도록 온-칩 메모리들을 포함한다. 회로는 설정 인스턴스들에 따라 판독할 데이터 저장부 내의 위치들, 및 실행 유닛들이 저장할 데이터 저장부 내의 위치들을 선택하도록 구성된다. 회로는 또한 라우팅 네트워크를 통해 취해진 루트들을 착수하고 설정 인스턴스들을 사용하여 실행 유닛들의 거동을 제어하도록 구성된다. 설정 인스턴스 각각은 설정 인스턴스 식별자에 의해 고유하게 참조될 수 있다. 회로는 쓰레들을 특정한 설정 인스턴스 식별자와 연관시킴으로써 쓰레드에 사용할 설정 인스턴스를 선택하도록 구성될 수도 있다.
GPU (graphics processing unit) 의 출현으로, 프로그래머들은 서로 간의 상호작용이 적은 많은 수의 쓰레드들을 사용하여 계산적 문제들을 해결하는 것에 익숙해졌다. 이들 많은 독립적인 쓰레드들은 본 명세서에 기술된 멀티쓰레드된, 재설정가능한 프로세서에 의해 프로세싱되도록 완벽하게 맞춰졌다. GPU들은 종종 동종 컴퓨팅이라고 하는 복수의 동일한 프로세서들로 구성된다. GPU와 달리, 본 명세서에 기술된 회로는, 이종 컴퓨팅 형태인 복수의 상이한 실행 유닛들을 허용한다. 회로의 특정한 예에서 실행 유닛들의 수 및 용량들은 특정한 부류들의 문제들에 적합하도록 선택될 수 있다. 이는 GPU와 비교하여 주어진 임의의 태스크의 보다 효과적인 구현을 유도한다.
회로 개요
설정가능한 프로세싱 회로의 일 예가 도 1에 도시된다. 회로는 설정가능한 라우팅 네트워크 (이 예에서 2 개의 라우팅 네트워크들, 111, 112로 구성됨) 를 포함한다. 회로는 또한 다수의 설정가능한 실행 유닛들 (115, 116) 을 포함한다. 회로는 파이프라이닝되고, 이는 도면에서 점선들 (102) 로 나타낸다. 도시된 예에서, 파이프라인은 도면의 하단부를 따라 번호들로 나타낸 바와 같이, 8 스테이지들로 구성된다. 파이프라인 섹션들 간의 경계들은 최대 클록 속도를 수용하기 위해 임의의 파이프라인 섹션에서 걸린 가장 긴 시간을 제한하도록 적합하게 선택된다.
이하의 기술은 상승하는 클록 에지들이 파이프라인을 통해 쓰레드들의 전파를 트리거한다고 가정한다. 이는 단지 예시를 목적으로 하고 하강하는 클록 에지들이 동일하게 사용된다는 것이 이해되어야 한다. 동일하게 상승하는 에지들 및 하강하는 에지들의 혼합은 파이프라인에 걸쳐 사용될 수 있다. 파이프라인 스테이지 각각은 독자적인 클록을 가질 수 있다 (이들 클록들은, 클록 에지들이 모든 파이프라인 스테이지에서 동시에 발생하도록 동기화된다).
회로는 동시에 복수의 쓰레드들을 핸들링하도록 구성된다. 하드웨어 내 쓰레드는 일반적으로 다른 쓰레드들과 독립적으로 실행되는 액션들의 시퀀스로 간주된다. 부가적으로, 쓰레드들은 종종 이 쓰레드에만 이용가능한 어떤 상태를 갖는다. 쓰레드는 보통 프로세스에 포함된다. 프로세스는 복수의 쓰레드들을 포함할 수도 있다. 동일한 프로세스 내에 존재하는 쓰레드들은 메모리와 같은 리소스들을 공유할 수 있다.
쓰레드 카운터 (101) 는 클록 사이클 각각에서 새로운 쓰레드로 하여금 회로에 들어가게 한다. 일부 상황들에서 새로운 쓰레드는 파이프라인을 통한 전파가 방금 완료된 쓰레드를 반복할 수도 있다. 클록 사이클 각각에서 쓰레드 번호가 일 파이프라인 섹션으로부터 다음 파이프라인 섹션으로 전파될 수도 있다. 쓰레드 번호를 전파하기 위한 일 옵션은 현재 파이프라인 섹션 내에 있는 쓰레드에 대한 쓰레드 번호를 저장하기 위한 레지스터 (108) 를 파이프라인 섹션 각각에 갖는 것이다.
쓰레드 카운터는 스스로 설정가능할 수도 있다. 통상적으로 쓰레드 카운터는 예를 들어, 시퀀스 및/또는 시퀀스 길이를 변경하기 위해 외부 프로세서에 의해 설정될 수도 있다.
설정 인스턴스 각각은 수 천 비트들을 포함할 수도 있다. 이 예에서, 인스턴스 각각은 설정 인스턴스보다 훨씬 보다 적은 비트들로 구성된 식별자와 연관되고 따라서 편리한 약칭 (shorthand) 으로서 기능한다. 파이프라인 내 제 1 스테이지는 현재 쓰레드가 레지스터 저장부 (103) 로부터 사용할 설정 인스턴스 식별자를 조회하도록 (look up) 구성된다. 설정 인스턴스 식별자는 레지스터들 (105) 을 사용하여 파이프라인을 통해 전파될 것이다. 설정 인스턴스 식별자는 파이프라인 스테이지 동안 필요한 설정 인스턴스의 부분들을 조회하도록 파이프라인 스테이지 각각에서 사용된다. 이는 파이프라인 스테이지 (104) 각각에 대한 별도의 온-칩 메모리들로 설정 인스턴스를 파티셔닝함으로써 달성될 수도 있다. 파이프라인 스테이지는 메모리의 특정한 섹션에서 쓰레드의 구성 식별자를 조회함으로써 특정한 쓰레드에 필요한 설정 인스턴스를 검색한다. 쓰레드 각각이 파이프라인을 통해 이동하기 때문에, 쓰레드는 자신의 설정 인스턴스 식별자와 연관된 설정 인스턴스만을 본다.
설정 인스턴스들을 포함하는 온-칩 메모리들은 임의의 쓰레드가 임의의 설정 인스턴스를 사용할 수 있도록 쓰레드들 사이에 공유된다. 일 쓰레드는 또 다른 쓰레드와 동일한 설정 인스턴스를 사용할 수 있다. 쓰레드들은 상이한 설정 인스턴스들을 사용할 수 있다. 많은 예들에서 쓰레드는 회로 내내 선행하는 쓰레드와 완전히 상이한 설정 인스턴스를 사용할 수도 있다. 따라서 복수의 설정 인스턴스들이 회로 내에서 항상 활성인 것이 가능하다 (실제로 그럴 것 같다). 쓰레드의 실행은 회로의 다음 패스 쓰루 시 사용할 설정 인스턴스 식별자 (및 따라서 설정 인스턴스) 를 변경할 수도 있다.
쓰레드 번호 및 일부 설정 인스턴스 비트들은, 이 예에서 레지스터 저장부들 (106) 에 의해 편리하게 구현되는, 데이터 저장부로부터의 값들에 액세스하도록 사용된다. 본 발명의 일 실시예에서, 쓰레드들은 다른 쓰레드들에 의해 사용된 레지스터 저장부들 내의 값들에 액세스할 수 없다. 레지스터 저장부 값들은 다음 클록 사이클에서 데이터 라우팅 네트워크 (111) 에 입력된다. 데이터 라우팅 네트워크는 특정한 실행 유닛들로 이 값들을 라우팅할 수 있다. 데이터 라우팅 네트워크는, 데이터 라우팅 네트워크를 통한 스위칭의 적어도 일부가 사이클마다 변경될 수 있도록 설정가능하다. 입력 각각이 라우팅 네트워크의 일 파이프라이닝된 스테이지로부터 다음 스테이지로 전파되는 것으로 보이는 스위칭은, 네트워크 내내 입력에 이어지는 설정 인스턴스 식별자로부터 도출된 설정 인스턴스에 의해 결정된다.
데이터 라우팅 네트워크들을 통한 데이터 경로들은 복수 비트들의 폭인 것이 바람직하다. 데이터 경로의 정확한 폭은 특정한 애플리케이션을 위해 맞춰질 (tailored) 수 있다. 임의의 주어진 라우팅 네트워크를 통한 데이터 경로들은 모두 동일한 폭일 필요는 없다. 예를 들어, 데이터 경로들의 일부 부분들은 다른 부분들보다 보다 넓은 입력들을 수용할 수 있다. 이는 일부 상황들에서 라우팅의 유연성을 제한할 수도 있고, 입력들은 충분히 넓은 데이터 경로의 부분들을 통해 라우팅되어야 할 것이고, 이는 쓰레들의 다른 입력들에 이용가능한 루트들을 제한할 수 있다. 입력들은 데이터 경로들의 전체 폭을 활용할 필요는 없지만, 네트워크 출력들은 데이터 라우팅 네트워크 내내 가장 넓은 폭과 동일한 다수의 비트들을 수용할 수 있어야 한다.
본 발명의 일부 실시예들에서, 단일 모놀리식 라우팅 네트워크보다 다수의 별도의 라우팅 네트워크들을 갖는 것이 편리하다. 본 발명의 일 실시예에서 제어 값들 및 데이터 값들은 각각 독자적인 레지스터 저장부들 (106 및 107) 및 라우팅 네트워크 (111 및 112) 의 세트를 갖도록 분리된다. 일 예에서, 라우팅 네트워크 (111) 는 제어 값들에 대해 단지 1 비트 폭의 데이터 경로들을 포함할 수도 있고, 또 다른 라우팅 네트워크 (112) 는 데이터 값들에 대해 32-비트 폭의 데이터 경로들을 포함할 수도 있다. 라우팅 네트워크의 사이즈는 입력들 및 출력들의 수에 의해 결정되고, 따라서 상이한 라우팅 네트워크들은 상이한 파이프라인 경로들을 필요로 할 수도 있다. 도 1의 라우팅 네트워크들은 단지 하나 또는 2 개의 파이프라인 스테이지들을 갖는 것으로 도시된다. 실제로 라우팅 네트워크는 통상적으로 12 개 정도의 파이프라인 스테이지들을 가질 수도 있다.
입력 선택 유닛은 라우팅 네트워크로부터의 출력 각각을 실행 유닛 (115) 의 입력으로 연결한다. 실행 유닛들은, 설정 유닛들이 입력 상에서 수행하는 정확한 동작이 설정 인스턴스로부터의 비트들에 의해 결정되도록 구성가능하다. 실행 유닛들에 의해 수행된 정확한 동작은 또한 쓰레드 데이터로부터의 하나 이상의 비트들 (예를 들어, 이 데이터에 포함된 제어 값들) 에 의해 결정될 수 있다. 통상적으로 실행 유닛은 파이프라인의 단일 섹션을 형성할 것이지만, 일부 실행 유닛들은 2 이상의 클록 사이클 (116) 을 필요로 하는 보다 긴 동작들을 수행하도록 설정될 수도 있고, 이들 실행 유닛들은 2 이상의 파이프라인 섹션들을 형성할 수도 있다. 유사하게 실행 유닛들은, 쓰레드가 일 실행 유닛으로부터 또 다른 실행 유닛 (미도시) 으로 전파될 수도 있도록 파이프라인의 단부에서 함께 체인될 (chain) 수도 있다.
실행 유닛 각각은 결과 값들을 기록할 수 있는 레지스터 저장부들 (117) 에 결과 값들을 기록할 수도 있다. 레지스터 저장부 각각은 일 실행 유닛에 의해서만 기록된다. 실행 유닛들은 2 이상의 레지스터 저장부에 기록할 수도 있다. 일부 실행 유닛들은 공동 공유 리소스 (예컨대 외부 메모리) 로 판독되고 기록될 수 있다. (온-칩 또는 외부) 공유 리소스들로의 판독 및 기록은 단일 클록 사이클보다 보다 오래 걸릴 수 있는 가변 레이턴시 동작일 것이다.
일부 레지스터 저장부들에서 일부 레지스터 위치들은 이 위치에 저장된 데이터가 유효한지 여부를 주장하는 유효 비트들과 연관될 수도 있다. 통상적으로 가변 레이턴시 실행 유닛들과 연관된 레지스터 저장부들만이 위치 각각을 유효하거나 무효한 것으로 마킹하기 위해 추가 비트들을 가질 필요가 있다. 다른 레지스터 저장부들은 항상 유효 값들을 홀딩하는 것으로 간주될 수도 있다.
유효 비트들은 기록 동작의 시작시 "무효"로 세팅될 수도 있고, 기록 동작이 완료될 때에만 "유효"로 돌아갈 수도 있다. 회로는, 쓰레드가 실행 유닛들 (110) 에 도달하기 전에 쓰레드가 판독되기를 원할 레지스터 위치가 유효하다는 것을 확인하기 위한 수단을 통합할 수도 있다. 이들 수단은 라우팅 네트워크들과 동일한 파이프라인 섹션들 내에 유효하게 배치될 수도 있다. 이 역할은, 쓰레드가 실행 유닛들로 들어가기 전에 쓰레드에 대한 적절한 유효 비트들을 판독하도록 설정된 체크 유닛에 의해 수행될 수도 있다. 체크 유닛은 쓰레드가 실행 유닛들에 들어갈 때 무효 데이터에 대해 동작할 모든 실행 유닛들을 디스에이블 (또는 적어도 실행 유닛이 메모리 기록을 수행하는 것 및 레지스터 저장부가 기록하는 것을 디스에이블) 할 수도 있다. 이는 "무효" 데이터에 대해 수행된 동작들의 결과들이 레지스터들 또는 다른 메모리에 기록되는 것을 방지한다.
일 예에서, 2 개의 유효 비트들은 이들을 필요로 하는 레지스터 저장부 위치 각각에 할당된다. 레지스터 저장부 위치에 저장된 데이터는, 2 개의 유효 비트들이 상이하면 무효로 간주되고 2 개의 비트들이 동일하면 유효로 간주될 수도 있다 (그 반대도 된다). 2 개의 유효 비트들을 갖는 것은 데이터로 하여금 2 개의 상이한 파이프라인 스테이지들에 동시에 기록되게 한다. 통상적으로 레지스터 저장부 내의 데이터를 무효화하기를 원하는 파이프라인 스테이지는 유효 비트들 중 하나를 플립 (flip) 하도록 설정되고, 레지스터 저장부의 데이터를 유효화하기를 원하는 또 다른 파이프라인 스테이지는 유효 비트들 중 나머지를 플립하도록 설정될 것이다.
실행 유닛 (118) 은 또한, 특정한 쓰레드가 자신과 연관된 설정 인스턴스 식별자 (119) 를 변경함으로써 회로의 또 다른 패스 쓰루 시 사용할 설정 인스턴스를 변경할 수 있다. 새로운 설정 인스턴스 식별자는 회로의 다음 패스 쓰루 시 쓰레드에 대해 사용될 것이다.
실행 유닛은 때때로 쓰레드의 이전 실행들로부터의 결과들에 기초하는 동작들을 수행하도록 요청받을 것이다. 일 예는 축적 동작이다. 회로는 이러한 동작들을 수행하도록 전용된 하나 이상의 유닛들을 포함할 수도 있다. 일 예는 축적 레지스터 저장부일 수도 있다. 이들 레지스터 저장부들 (예를 들어, 114) 은 라우팅 네트워크를 통과할 필요가 없고, 이는 필요한 라우팅 네트워크의 사이즈를 감소시킬 수 있다.
실행 유닛들은 통상적으로 실행 유닛들 내에서 어떠한 피드백도 갖지 않는다. 피드백은 레지스터 저장부들 또는 외부 메모리에 저장된 데이터를 변경하는/하거나 쓰레드의 설정 인스턴스 식별자를 변경하는 일 쓰레드의 실행에 의해 회로-폭 기반으로 달성된다.
레지스터 저장부들
레지스터 저장부들 각각은 개별 값들을 저장하는 복수의 위치들을 포함한다. 회로는 레지스터 저장부 어드레스를 사용하여 위치를 선택할 것이다. 본 발명의 일 실시예에서, 쓰레드들은 레지스터 저장부 각각의 위치들의 개별 세트들에 액세스한다. 이는 레지스터 저장부들에 대한 판독 어드레스 및 기록 어드레스의 일부가 (적절한 파이프라인 스테이지에서) 쓰레드 수 뿐만 아니라 0 또는 그 이상의 설정 인스턴스 비트들에 기초한다는 것을 보장함으로써 구현될 수 있다. 이 실시예에서, 쓰레드들은 또 다른 쓰레드와 연관된 레지스터 저장부들에 홀딩된 값들에 액세스할 수 없다.
레지스터 저장부는 보통 상이한 파이프라인 스테이지들로부터 판독되고 기록되기 때문에, 임의의 주어진 클록 사이클에서 레지스터 저장부에 대한 판독 어드레스 및 기록 어드레스는 종종 상이할 것이다. 따라서 레지스터 저장부들은 일 클록 사이클에서 개별적으로 판독 동작 및 기록 동작을 수행할 수 있는 온-칩 메모리에서 유리하게 구현될 수도 있다.
라우팅 네트워크들
라우팅 네트워크는 본질적으로 복수의 출력들에 복수의 입력들을 연결하기 위한 스위치이다. 입력들은 단일 출력 또는 복수의 출력들에 연결될 수도 있다. 라우팅 네트워크는, 라우팅 네트워크의 적어도 일부의 스위칭이 설정 인스턴스로부터의 비트들에 의해 클록-사이클 × 클록-사이클로 세팅되도록 바람직하게 설정가능하다.
라우팅 네트워크는 임의의 입력을 임의의 출력 (그리고 일부 실시예들에서, 2 이상의 출력으로) 연결할 수도 있다. 라우팅 네트워크는 또한 입력들이 임의의 조합으로 출력들에 연결될 수 있도록 차단되지 않을 수도 있다.
설정가능한 라우팅 네트워크를 구현하기에 적합한 스위치의 일 예는 크로스바 스위치이다. 용어 "크로스바 스위치"는 때때로 전체적으로 유연한 스위치들을 참조하도록 사용되지만, 일 (그리고 단 하나의) 출력에 모든 입력 각각을 연결하는 능력을 갖는 스위치들을 참조하도록 또한 사용된다. 대형 스위치들에 대해, Clos 네트워크가 적절할 수도 있다. Clos 네트워크는 멀티스테이지 스위치이다. 일 옵션은 복수의 크로스바 스위치들로부터 Clos 네트워크를 구성하는 것이다. Clos 네트워크는 통상적으로 모든 입력 각각을 일 출력에 제한 없이 연결할 수 있다. 이는 또한 복수의 출력들에 일 입력을 연결할 수도 있지만, 이는 필요한 연결도에 따라 항상 가능한 것은 아닐 수도 있다.
라우팅 네트워크를 구현하기 위한 적합한 스위치의 예가 도 2에 도시된다. 도면은 네트워크의 적어도 2 개의 외측 스테이지들이 2x2 크로스바 스위치 (201) 로 구현된 NxN Clos 네트워크를 도시한다. 네트워크의 내측부는 2 개의 N/2 크로스바 스위치들 (203) 로 구현되는 것으로 도시된다. 이들 보다 큰 크로스바 스위치들은 "네스팅될 (nested)" 수도 있고, 예를 들어, 크로스바 스위치들 자체가 복수의 크로스바 스위치들 (또는 일부 다른 스위치들) 의 복수의 스테이지들로 구현된 Clos 네트워크들일 수도 있다. 스위치는 레지스터들 (202) 로 나타낸 바와 같이, 파이프라이닝된다. 레지스터들은 일 클록 사이클에서 다음 클록 사이클로 쓰레드 데이터를 홀딩하도록 구성된다.
라우팅 네트워크를 파이프라이닝하는 것의 장점은 긴 데이터 경로들이 보다 작은 섹션들로 분해되게 한다는 것이다. 이들 보다 작은 섹션들은 보다 신속하게 이동할 수 있어서, 이 섹션들을 따른 여정들이 심지어 고속 클록과 함께 단일 클록 사이클에 수용될 수 있다. 일 옵션은 네스팅된, 멀티스테이지 스위치의 모든 레벨들의 레지스터들을 갖는 것이다 (따라서 스위치의 스테이지 각각이 파이프라인의 섹션을 나타낸다). 그러나, 실제로, 스위치의 내측 스테이지들에서의 거리들이 훨씬 보다 짧을 수도 있고 따라서 클록 속도를 제한하지 않을 것이기 때문에 불필요할 수도 있다. 따라서, 단일 파이프라인 섹션은 멀티스테이지 스위치의 2 이상의 내측 스테이지들을 포함할 수도 있어서, 레지스터들은 스위치의 모든 스테이지에서 필요한 것은 아니다.
2x2 크로스바 스위치의 예가 도 3에 도시된다. 스위치는 2 개의 입력들 (301) 을 수신하고 2 개의 출력들을 출력하도록 구성된다. 스위치는 2 개의 멀티플렉서들 (302) 을 포함한다. 멀티플렉서 각각은 2 개의 입력들 각각을 수신하고 하나를 출력으로서 선택한다. 멀티플렉서 각각은 입력들 중 특정한 하나를 출력으로서 선택하도록 설정 인스턴스 비트들 (303) 에 의해 제어된다. 따라서 설정 인스턴스는 입력들 (301) 의 출력들 (304) 로의 맵핑을 제어한다. 2x2 크로스바는 단순한 예이지만, 2x2 크로스바들의 층들을 구축함으로써 복수의 입력들을 취하고 이들을 복수의 출력들로 라우팅할 수 있는 유연한 라우팅 네트워크를 구성하는 것이 가능하다는 것을 알 수 있다. 따라서 입력들은 추가 프로세싱을 위해 회로 내의 적절한 위치로 전달될 수 있다.
2x2 크로스바들은 크로스바 스위치의 단지 일 예이다. 다른 사이즈들의 크로스바가 또한 사용될 수 있다 (예를 들어, 3x3, 4x4, 또는 보다 큰 사이즈들). 멀티스테이지 스위치는 또한 상이한 스테이지들에서 상이한 사이즈들의 크로스바를 사용할 수도 있다.
실행 유닛들
실행 유닛은 이로 제한되는 것은 아니지만, 산술 (arithmetic), 논리 또는 시프트 동작들, 또는 메모리 판독 또는 기록 동작들을 포함하는 동작들의 세트를 수행할 수 있도록 설계될 수 있다. 실행 유닛은, 특정한 쓰레드에 대해 어떠한 동작을 수행할 것인지를 결정하기 위해 데이터 입력들 (예를 들어, 쓰레드의 제어 값들) 로부터의 비트들에 부가하여 설정 인스턴스로부터의 비트들을 사용할 수 있다. 일부 실행 유닛들은 다른 실행 유닛들과 상이한 고유의 능력들을 가질 수도 있고, 예를 들어, 실행 유닛들은 다른 실행 유닛들이 할 수 없는 동작들을 수행할 수도 있다. 실행 유닛들의 수 및 능력들은 특정한 애플리케이션에 적합하도록 맞춰질 수 있다.
실행 유닛의 예가 도 4에 도시된다. 실행 유닛 (401) 은 설정 인스턴스 비트들 (407) 에 따라 동작을 수행하도록 구성될 수 있다. 설정 인스턴스 비트들은 실행 유닛이 데이터를 동작하는 방법을 결정한다. 실행 유닛은 또한 데이터 입력들 (405) 을 포함한다. 통상적으로 이들 입력들은 데이터 라우팅 회로에 의해 실행 유닛으로 라우팅된 쓰레드 데이터를 수신한다. 이들 입력들 중 일부는 또한 실행 유닛이 동작하는 방법과 관련될 수도 있다. 실행 유닛은 또한 클록 신호 (402) 및 쓰레드 번호 (403) 를 수신한다. 클록 신호는 파이프라인을 제어한다. 쓰레드 번호는 실행 유닛이 현재 프로세싱하는 쓰레드를 식별한다. 최종 입력 (404) 은 레지스터 기록들을 인에이블하고, 이하에 보다 상세히 기술될 것이다.
실행 유닛은 전용 레지스터 저장부들 (408, 409) 에 기록하기 위한 데이터를 출력한다. 출력 데이터는 실행 유닛이 입력에 대해 수행한 동작의 결과를 나타낸다. 데이터 출력 (412) 각각은 바람직하게, 2 개의 동반하는 출력들: 기록 인에이블 (410) 및 기록 어드레스 (411) 과 함께 제공된다. 기록 인에이블 (410) 은 레지스터 기록들을 인에이블하는 입력 (404) 에 의해 설정된다. 데이터는 기록 인에이블이 적절한 값 (통상적으로 1 또는 0) 으로 홀딩될 때 레지스터들에 기록만 될 수도 있다. 기록 동작들은 기록 인에이블이 적절한 값이 아니라면 디스에이블된다. 이는 레지스터 위치가 무효로 여겨질 때, 위치가 다시 한번 유효가 될 때까지 모든 레지스터 기록들을 금지하도록 사용될 수 있다 (이는 이하의 "파이프라인" 섹션에 보다 상세히 기술된다). 기록 어드레스 (411) 는 보통 쓰레드 번호와 일부 설정 인스턴스 비트들의 함수이다.
특정한 실행 유닛들의 일부 예들이 도 5 내지 도 10에 도시된다.
도 5는 단순한 합산기로서 구성된 실행 유닛을 도시한다. 실행 유닛은 기록을 인에이블 (501) 하고 쓰레드 번호 (502) 를 식별하기 위한 입력들을 포함한다. 실행 유닛은 또한 합산될 데이터 (503, 504) 에 대한 입력들을 포함한다. 이 예에서, 실행 유닛은 단지 합산 (507) 만 수행할 수 있다. 설정 인스턴스로부터 도출된 일 설정 인스턴스 비트 (505) 는 합산기의 결과가 레지스터 저장부에 기록되었는지를 결정한다. 현재 쓰레드 내의 임의의 값이 유효하지 않을 때, 하이 (high) 로 구동되는 레지스터 기록들을 인에이블하는 입력은 또한 합산기의 결과가 기록되는 것을 방지할 수 있다. 실행 유닛의 출력 (508) 은 레지스터 저장부에 대해 기록 데이터, 기록 어드레스, 및 기록 인에이블을 출력한다.
도 6은 파이프라이닝된 ALU로서 설정된 실행 유닛을 도시한다. 이 보다 복잡한 예에서, 실행 유닛은 다수의 상이한 동작들을 수행할 수 있다. 다수의 설정 인스턴스 비트들, 뿐만 아니라 입력 (601) 으로부터의 비트들은 ALU (603) 동작을 제어한다. 예를 들어, 일 구성에서 ALU는 곱셈기로서 동작할 수도 있고, 또 다른 구성에서 ALU는 자리 올림 비트 (carry bit) 로서 제어 입력을 사용하여 합산을 수행할 수도 있고, 또 다른 구성에서 제어 입력은 ALU가 합산 또는 감산을 수행할지를 선택할 수도 있다. 레지스터들 (602) 은 ALU 파이프라인에 매칭시키기 위해 다른 입력들을 파이프라이닝하도록 제공된다. ALU는 출력 (604) 뿐만 아니라 데이터 값을 생성한다. 예로서, 이 1 비트 출력은 ALU 결과가 0일 때 하이일 수도 있다.
도 7은 롱 레이턴시 오퍼레이터 (701) 를 갖는 실행 유닛을 도시한다. 이 예에서, 복수의 레지스터들 (702) 은 기록 인에이블 값 및 기록 어드레스 값을 파이프라이닝하도록 제공된다. 이들 값들은 새로운 쓰레드가 실행 유닛으로 입력되도록 인에이블하는 클록 사이클 각각에서 레지스터들을 통해 전파되고, 클록 사이클 각각에서 롱-레이턴시 동작을 시작할 것이다. 레지스터들의 수는 바람직하게 동작의 레이턴시와 매칭한다. 오퍼레이터 (701) 는 파이프라이닝될 수도 있고 또는 파이프라이닝되지 않을 수도 있다. 일부 오퍼레이터들은, 롱 레이턴시 동작의 일부가 오퍼레이터 단독으로 수행되지 않을 것이기 때문에 파이프라이닝될 것을 요구하지 않을 것이다. 예를 들어, 동작은 외부 메모리로의 판독 또는 기록 동작일 수도 있고, 이 경우, 레이턴시는 시스템 버스를 통해 이 메모리로의 액세스를 얻는 것과 연관될 것이다.
도 8은 쓰레드가 회로의 다음 패스 쓰루 시 사용할 실행 유닛 설정 인스턴스 식별자를 변경하기 위한 실행 유닛의 예를 도시한다. 이 예에서 8 개의 설정 인스턴스 식별자들 (802) 중 하나를 선택하는 선택은 3 개의 제어 비트들 (801) 에 의해 제어된다. 실행 유닛은 선택된 설정 인스턴스 식별자를 저장하기 위한 출력 (803) 을 포함한다.
실행 유닛들은 또한 분해가능할 수도 있고, 즉, 쓰레드의 요건들에 따라 보다 작은, 개별적으로 실행가능한 유닛들로 분할될 수도 있다. 예가 도 9에 도시된다. 도 9의 실행 유닛은 2 개의 32 비트 ALU들로 분해가능한 64 비트 ALU (901) 를 포함한다. 입력들 (902, 903) 은 2 쌍의 32 비트 값들 또는 한 쌍의 64 비트 값들을 위해 사용될 수도 있다. 설정 인스턴스 비트들은 ALU가 64 비트 ALU로서 또는 2 개의 32 비트 ALU들로서 동작하는지 여부를 세팅한다. 분해가능한 실행 유닛들의 일 장점은 2 이상의 개별 유닛들보다 구현하는 것이 보다 저렴할 수도 있다는 것이다.
일부 실행 유닛들은 관례적으로 입력들이 특정한 순서로 제공될 것을 요구한다. 바람직하게, 실행 유닛은 가능하면, 입력들의 순서가 문제가 되지 않도록 구성된다. 2 가지 예들은 도 10에 도시된 룩업 테이블들을 포함한다. 룩업 테이블들은, 일부 스위치들이 라우팅 네트워크로부터 제거되게 할 수도 있는, 입력들이 제공되는 순서에 민감하지 않게 구성될 수 있다.
파이프라인
인스트럭션들을 완료하는데 걸리는 시간은 임의의 레지스터 저장부 판독과 대응하는 레지스터 저장부 입력 사이의 파이프라인 스테이지들의 최대 수 ("p"로 표기됨) 및 프로세서의 클록 주파수 ("f"로 표기됨) 에 따라 결정된다. 이 때, 인스트럭션 당 레이턴시는 p/f이다. 그러나, 파이프라인은 클록 사이클마다 p 이상의 상이한 쓰레드들로부터 인스트럭션을 프로세싱할 수 있다. 쓰레드들은 연속적으로 사이클링되고, 클록 사이클마다 파이프라인 내로 발행된다.
언제든 레지스터 저장부로부터 판독된 값이 유효하지 않은 것으로 간주되면, 그러면 쓰레드는 모든 레지스터 저장부들로의 기록 또는 쓰레드의 설정 인스턴스 식별자를 변경하는 것이 방지될 것이다. 따라서 쓰레드는, 쓰레드가 파이프라인 내로 재발행될 때 동일한 상태로 재시작하도록 이 쓰레드에 가시적인 어떠한 상태도 변경할 수 없다. 바람직하게 회로는, (상기 기술된 바와 같이) 쓰레드 각각이 독자적인 레지스터 저장부에만 액세스하도록 구성된다. 이어서 모든 다른 쓰레드들은, 임의의 다른 쓰레드들이 무효 값들을 마주하는지 (encounter) 여부와 무관하게, 판독된 값들이 유효한 것으로 제공되는 것에 영향을 받지 않는 파이프라인을 통해 진행한다. 무효 레지스터 값들은 가변 레이턴시를 갖는 실행 유닛들로부터 발생하고, 따라서, 결국 무효 레지스터 값들은 유효가 될 것이고, 이전에 상태를 업데이트하는 것이 방지될 수도 있었던 쓰레드는 이제 상태를 업데이트할 수도 있다. 이러한 방식으로, 개별 쓰레드들은 파이프라인 스스로 값들을 전파하는 것을 계속한다고 해도 '정지된 (stalled)" 것으로 간주될 수도 있다.
사용자는 파이프라인 레지스터들을 보지 못한다. 이는 프로그램들로 하여금 본 명세서에 기술된 원리들에 따라 설계된 상이한 회로들 상에서, 이들 회로들이 상이한 파이프라인들을 갖는다고 해도, 수정되지 않고 실행되게 한다. 유일한 차이는 인스트럭션 각각이 완료되는데 걸리는 시간의 길이일 것이다.
설정
인스턴스들
설정 인스턴스들의 세트는 온-칩 메모리 내에 존재한다. 본 발명의 일 실시예에서, 설정 인스턴스 메모리는 외부 프로세서에 의해 액세스될 것이다. 개별 설정 인스턴스들이 설정 인스턴스 메모리로의 기록에 의해 로딩될 수 있다. 구성 메모리가 동일한 클록 사이클에 판독되고 기록될 수 있다면, 쓰레드들은 설정 인스턴스가 로딩되는 동안 파이프라인을 통해 계속 진행할 수 있다. 파이프라인 내 임의의 쓰레드에 의해 사용될 설정 인스턴스들은 로딩되지 않아야 한다. 이는 사용시 모든 설정 인스턴스 식별자들을 모니터링하도록 운영체제 에 의해 또는 일부 다른 추가 하드웨어에 의해 강제될 수 있다.
일 설정 인스턴스는 레지스터 저장부들이 변경되지 않고 메모리 액세스가 이루어지지 않게 할 것이다. 이러한 '널 (null)' 설정 인스턴스는 쓰레드들이 불활성일 때 (예를 들어, 시작 시) 파이프라인 내 슬롯들에 대해 사용될 것이다.
본 발명의 일 실시예에서, 특정한 실행 유닛들 또는 라우팅부들을 위한 회로는 동적으로 변경될 수 있다. 운영 체제는 동적으로 변경되는 회로들을 사용하는 쓰레드가 없다는 것을 보장하도록 구성되어야 할 것이다. 회로들을 동적으로 변경할 수 있는 기술의 일 예는 FPGA이다. 통상적으로 이러한 타입의 재프로그래밍은 회로의 전부 또는 일부를 재구성하도록 오프-칩으로부터 프로그램 파일을 다운로드하는 것을 수반할 것이다. 이 프로세스는 통상적으로 (대략 수 나노초가 걸리는, 쓰레드 각각에 대한 회로 구성과 반대로) 대략 수 밀리초가 걸릴 수도 있다. 회로가 암호화 또는 일부 다른 집약적인 프로세싱 동작과 같은 어떤 특수한 프로세싱을 당분간 수행하도록 요구 받는다면, 지연이 정당화될 수도 있다. 본 명세서에 기술된 회로는, 실행 유닛들이 자립적 (self-contained) 이기 때문에 이러한 타입의 동적 재구성에 특히 적합하다. 이들은 주변 회로의 구조를 변경할 필요 없이 변경될 수 있다.
상기 기술된 구체적인 예들은 여전히 본 발명의 범위 내에 속하는 동안 다양한 방식들로 변경될 수도 있다. 예를 들어, 상기 기술된 회로는, 쓰레드로 하여금 회로의 다음 패스 쓰루 시 사용할 설정 인스턴스 식별자를 변경함으로써 또는 제어 데이터를 작성함으로써 설정 인스턴스를 변경하게 한다. 미래에 구현될 수 있는 다른 가능성들은 쓰레드들로 하여금 또 다른 쓰레드에 적용될 수 있는 설정 인스턴스 식별자를 변경하게 하는 것, 또는 쓰레드들로 하여금 설정 인스턴스들 메모리를 직접 작성하게 하는 것을 포함한다.
본 출원인은, 본 명세서에 기술된 개별 특징 각각과 2 이상의 이들 특징들의 임의의 조합을, 이러한 특징들 또는 조합들이 본 명세서에 개시된 임의의 문제들을 해결하는지 여부와 무관하게, 청구항들의 범위로 제한되지 않고, 당업자의 공통된 일반적인 지식에 비추어, 이러한 특징들 또는 조합들이 전체로서 본 명세서에 기초하여 실행될 수 있는 정도로, 분리하여 개시하였다. 본 출원인은 본 발명의 양태들이 임의의 이러한 개별 특징 또는 특징들의 조합으로 구성될 수도 있다는 것을 명시하였다. 전술한 기술의 관점에서, 다양한 수정들이 본 발명의 범위 내에서 이루어질 수도 있다는 것이 당업자에게 명백할 것이다.
Claims (38)
- 복수의 쓰레드들을 동시에 핸들링할 수 있는 설정가능한 프로세싱 회로에 있어서,
상기 회로는,
쓰레드 데이터 저장부;
복수의 설정가능한 실행 유닛들;
상기 쓰레드 데이터 저장부를 상기 실행 유닛들에 연결하기 위한 설정가능한 라우팅 네트워크;
상기 복수의 실행 유닛들 중 하나 이상의 설정 및 상기 라우팅 네트워크의 설정을 각각 규정하는 설정 인스턴스들을 저장하기 위한 설정 데이터 저장부; 및
상기 실행 유닛들, 상기 라우팅 네트워크 및 상기 쓰레드 데이터 저장부로 형성되고, 클록 사이클 각각에 쓰레드 각각이 일 파이프라인 섹션으로부터 다음 파이프라인 섹션으로 전파되도록 설정된 복수의 파이프라인 섹션들을 포함하는, 파이프라인을 포함하고,
상기 회로는: (i) 쓰레드 각각을 설정 인스턴스와 연관시키고; 그리고 (ii) 클록 사이클 동안 파이프라인 섹션을 통해 전파될 각각의 쓰레드와 연관된 상기 설정 인스턴스에 따라 상기 클록 사이클 각각에 대해 상기 복수의 파이프라인 섹션들 각각을 설정하도록 구성되는, 설정가능한 프로세싱 회로. - 제 1 항에 있어서,
상기 회로는 설정 식별자와 설정 인스턴스 각각을 연관시키도록 구성되는, 설정가능한 프로세싱 회로. - 제 2 항에 있어서,
상기 회로는 쓰레드와 함께 상기 파이프라인을 통해 상기 쓰레드와 연관된 상기 설정 식별자를 전파하도록 구성되는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
상기 설정 데이터 저장부는 복수의 메모리들을 포함하고,
상기 회로는 메모리 각각이 특정한 파이프라인 섹션에 적용가능한 상기 설정 인스턴스들의 부분들을 저장하도록 상기 복수의 메모리들에 걸쳐 상기 설정 인스턴스들을 파티셔닝하도록 구성되는, 설정가능한 프로세싱 회로. - 제 4 항에 있어서,
파이프라인 섹션 각각은 상기 파이프라인에 적용가능한 상기 설정 인스턴스들의 부분들을 저장하는 상기 메모리에 액세스함으로써 상기 설정 인스턴스에 액세스하도록 구성되는, 설정가능한 프로세싱 회로. - 제 2 항 내지 제 5 항 중 어느 한 항에 있어서,
상기 파이프라인의 섹션 각각은 상기 설정 데이터 저장부의 쓰레드와 연관된 상기 설정 인스턴스에 액세스하도록 상기 쓰레드와 연관된 상기 설정 식별자를 사용하도록 구성되는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
상기 복수의 쓰레드들은 독립적인, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
2 이상의 쓰레드를 동일한 설정 식별자와 연관시키도록 구성되는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
상기 회로는, 쓰레드가 상기 회로의 패스 쓰루 (pass through) 시 상기 회로의 제 2의, 후속하는 패스 쓰루 시와 상이한 설정을 따르도록, 상기 쓰레드와 연관된 상기 설정 식별자를 변경할 수 있는, 설정가능한 프로세싱 회로. - 제 9 항에 있어서,
상기 회로는 상기 쓰레드와 연관된 입력으로 동작할 때 상기 실행 유닛들 중 하나에 의해 생성된 출력에 대해 독립적으로 상기 설정 식별자를 변경하도록 구성되는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
상기 설정가능한 라우팅 네트워크는, 복수의 네트워크 입력들 및 복수의 네트워크 출력들을 포함하고, 네트워크 입력 각각을 네트워크 출력으로 연결하도록 구성될 수 있는, 설정가능한 프로세싱 회로. - 제 11 항에 있어서,
상기 설정가능한 라우팅 네트워크는 임의의 네트워크 입력을 임의의 네트워크 출력에 연결할 수 있는, 설정가능한 프로세싱 회로. - 제 11 항 또는 제 12 항에 있어서,
상기 설정가능한 라우팅 네트워크는 임의의 하나 이상의 상기 네트워크 출력들에 임의의 네트워크 입력을 연결할 수 있는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 13 항 중 어느 한 항에 있어서,
상기 설정가능한 라우팅 네트워크의 상기 출력들은 상기 실행 유닛들의 입력들에 연결되는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 14 항 중 어느 한 항에 있어서,
상기 설정가능한 라우팅 네트워크는 멀티스테이지 스위치를 포함하는, 설정가능한 프로세싱 회로. - 제 15 항에 있어서,
상기 멀티스테이지 스위치는, 스테이지 각각에 하나 이상의 스위치들을 포함하고, 상기 스위치 각각은 복수의 스위치 입력들 및 복수의 스위치 출력들을 갖고 스위치 입력 각각을 스위치 출력에 연결하도록 구성될 수 있는, 설정가능한 프로세싱 회로. - 제 16 항에 있어서,
상기 멀티스테이지 스위치의 모든 스테이지의 상기 스위치들은 동일한 수의 스위치 입력들 및 스위치 출력들을 포함하는, 설정가능한 프로세싱 회로. - 제 16 항에 있어서,
상기 멀티스테이지 스위치의 일 스테이지에 포함된 상기 스위치들은 또 다른 스테이지에 포함된 스위치들과 상이한 수의 스위치 입력들 및 스위치 출력들을 포함하는, 설정가능한 프로세싱 회로. - 제 15 항 내지 제 18 항 중 어느 한 항에 있어서,
상기 파이프라인 섹션은 상기 멀티스테이지 스위치의 하나 이상의 스테이지들에 포함된 상기 스위치들로 형성되는, 설정가능한 프로세싱 회로. - 제 19 항에 있어서,
상기 멀티스테이지 스위치의 내측 스테이지의 스위치들로 형성된 파이프라인 섹션은 상기 멀티스테이지 스위치의 외측 스테이지에 포함된 스위치들로 형성된 파이프라인 섹션과 상이한 수의 상기 멀티스테이지 스위치의 스테이지들로부터의 스위치들을 포함하는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 20 항 중 어느 한 항에 있어서,
상기 설정가능한 라우팅 네트워크는 Clos 네트워크를 포함하는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 21 항 중 어느 한 항에 있어서,
상기 설정가능한 라우팅 네트워크는 하나 이상의 크로스바 스위치들을 포함하는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 22 항 중 어느 한 항에 있어서,
상기 설정가능한 라우팅 네트워크는 차단되지 않는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 23 항 중 어느 한 항에 있어서,
상기 설정가능한 라우팅 네트워크는 전체적으로 (fully) 설정가능한, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 23 항 중 어느 한 항에 있어서,
상기 설정가능한 라우팅 네트워크는 부분적으로 설정가능한, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 25 항 중 어느 한 항에 있어서,
상기 회로는 배기 유닛 각각을 위한 전용 온-칩 메모리를 포함하는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 26 항 중 어느 한 항에 있어서,
상기 회로는 상기 쓰레드 데이터 저장부들 내에 저장된 데이터가 유효한지 체크하기 위한 체크 유닛을 포함하는, 설정가능한 프로세싱 회로. - 제 27 항에 있어서,
상기 체크 유닛은, 무효 데이터를 식별한다면, 상기 실행 유닛들이 상기 무효 데이터가 판독된 쓰레드에 대해 동작할 때, 상기 실행 유닛들이 상기 쓰레드 데이터 저장부에 기록하는 것 및/또는 메모리 액세스 동작들을 수행하는 것을 연기하도록 (suspend) 구성되는, 설정가능한 프로세싱 회로. - 제 27 항 또는 제 28 항에 있어서,
무효 데이터를 판독한 쓰레드가 회로의 다음 패스 쓰루 시 동일한 상태와 연관되도록 구성되는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 29 항 중 어느 한 항에 있어서,
쓰레드 데이터 저장부들 내의 위치는 2 개의 유효 비트들과 연관되는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 30 항 중 어느 한 항에 있어서,
상기 설정가능한 라우팅 네트워크는 상기 쓰레드 데이터 저장부들로부터 판독된 데이터를 반송하기 위한 복수 비트 폭의 데이터 경로들을 포함하는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 31 항 중 어느 한 항에 있어서,
상기 회로는 2 개의 설정가능한 라우팅 네트워크들을 포함하고, 상기 설정가능한 라우팅 네트워크들 중 하나는 다른 설정가능한 라우팅 네트워크들보다 보다 넓은 데이터 경로들을 포함하는, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 32 항 중 어느 한 항에 있어서,
상기 회로는 분해가능한 실행 유닛을 포함하는, 설정가능한 프로세싱 회로. - 제 15 항 내지 제 33 항 중 어느 한 항에 있어서,
상기 설정가능한 라우팅 네트워크는 쓰레드 데이터 저장부를 실행 유닛 전환가능 (commutable) 입력들 및 실행 유닛 전환불가능 입력들에 연결하도록 구성되고, 상기 설정가능한 라우팅 네트워크의 최외측 스테이지는 상기 쓰레드 데이터 저장부를 상기 실행 유닛 전환가능 입력들에 연결하도록 구성된 제 1 수의 스위치들 및 쓰레드 데이터 저장부를 상기 실행 유닛 전환불가능 입력들에 연결하도록 구성된 제 2 수의 스위치들을 포함하고, 연결된 입력 당 상기 제 1 수는 연결된 입력 당 상기 제 2 수보다 보다 작은, 설정가능한 프로세싱 회로. - 제 1 항 내지 제 34 항 중 어느 한 항에 있어서,
상기 회로는 동적으로 재구성될 수 있는, 설정가능한 프로세싱 회로. - 쓰레드 데이터 저장부, 복수의 설정가능한 실행 유닛들, 상기 쓰레드 데이터 저장부를 상기 실행 유닛들에 연결하기 위한 설정가능한 라우팅 네트워크, 및 복수의 파이프라인 섹션들을 포함하고, 상기 실행 유닛들, 상기 라우팅 네트워크 및 상기 쓰레드 데이터 저장부로 형성된 파이프라인을 포함하는 설정가능한 프로세싱 회로 내에서 복수의 쓰레드들을 동시에 핸들링하기 위한 방법에 있어서,
상기 방법은,
상기 라우팅 네트워크의 구성 및 상기 복수의 실행 유닛들 중 하나 이상의 구성을 규정하는 설정 인스턴스와 쓰레드 각각을 연관시키는 단계;
쓰레드 각각으로 하여금 클록 사이클 각각에서 일 파이프라인 섹션으로부터 다음 파이프라인 섹션으로 전파되게 하는 단계; 및
파이프라인 섹션 각각이 클록 사이클 동안 상기 파이프라인 섹션을 통해 전파될 각각의 쓰레드와 연관된 상기 설정 인스턴스에 따라 설정되도록, 상기 클록 사이클 각각에 대해 상기 복수의 파이프라인 섹션들 각각을 설정하는 단계를 포함하는, 설정가능한 프로세싱 회로 내에서 복수의 쓰레드들을 동시에 핸들링하기 위한 방법. - 실질적으로 첨부된 도면들을 참조하여 본 명세서에 기술된 바와 같은 설정가능한 프로세싱 회로.
- 실질적으로 첨부된 도면들을 참조하여 본 명세서에 기술된 바와 같은 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1319279.4A GB2519813B (en) | 2013-10-31 | 2013-10-31 | Pipelined configurable processor |
GB1319279.4 | 2013-10-31 | ||
PCT/GB2014/053200 WO2015063466A1 (en) | 2013-10-31 | 2014-10-28 | Pipelined configurable processor |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160105774A true KR20160105774A (ko) | 2016-09-07 |
Family
ID=49767493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167014326A KR20160105774A (ko) | 2013-10-31 | 2014-10-28 | 파이프라인 설정가능한 프로세서 |
Country Status (7)
Country | Link |
---|---|
US (3) | US9658985B2 (ko) |
EP (1) | EP3063651A1 (ko) |
JP (1) | JP6708552B2 (ko) |
KR (1) | KR20160105774A (ko) |
CN (1) | CN105830054B (ko) |
GB (2) | GB2519813B (ko) |
WO (1) | WO2015063466A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12093739B2 (en) | 2023-02-21 | 2024-09-17 | Metisx Co., Ltd. | Method and apparatus for managing threads in manycore |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2519813B (en) * | 2013-10-31 | 2016-03-30 | Silicon Tailor Ltd | Pipelined configurable processor |
JP6816380B2 (ja) * | 2016-04-15 | 2021-01-20 | オムロン株式会社 | 画像処理装置、画像処理方法、情報処理プログラム、および記録媒体 |
CN107962560B (zh) * | 2016-10-18 | 2020-08-07 | 珠海格力智能装备有限公司 | 机器人及其控制方法和装置 |
CN107953330A (zh) * | 2016-10-18 | 2018-04-24 | 珠海格力智能装备有限公司 | 机器人及其控制方法和装置 |
US11055807B2 (en) * | 2017-06-12 | 2021-07-06 | Apple Inc. | Method and system for a transactional based display pipeline to interface with graphics processing units |
WO2019089816A2 (en) | 2017-10-31 | 2019-05-09 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
CN112055853B (zh) * | 2018-03-31 | 2024-04-09 | 美光科技公司 | 用于多线程自调度可重新配置计算架构的电路及系统 |
EP3776243A1 (en) * | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric |
WO2019191744A1 (en) * | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue |
KR102454405B1 (ko) * | 2018-03-31 | 2022-10-17 | 마이크론 테크놀로지, 인크. | 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 효율적인 루프 실행 |
US11119768B2 (en) | 2018-03-31 | 2021-09-14 | Micron Technology, Inc. | Conditional branching control for a multi-threaded, self-scheduling reconfigurable computing fabric |
US11003451B2 (en) | 2018-03-31 | 2021-05-11 | Micron Technology, Inc. | Execution control of a multi-threaded, self-scheduling reconfigurable computing fabric |
CN111919205B (zh) * | 2018-03-31 | 2024-04-12 | 美光科技公司 | 多线程自调度可重新配置计算架构的循环线程顺序执行控制 |
CN111919207A (zh) | 2018-03-31 | 2020-11-10 | 美光科技公司 | 多线程自调度可重新配置计算架构 |
US11119972B2 (en) * | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Multi-threaded, self-scheduling processor |
US11074213B2 (en) * | 2019-06-29 | 2021-07-27 | Intel Corporation | Apparatuses, methods, and systems for vector processor architecture having an array of identical circuit blocks |
US11573834B2 (en) | 2019-08-22 | 2023-02-07 | Micron Technology, Inc. | Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric |
US11150900B2 (en) | 2019-08-28 | 2021-10-19 | Micron Technology, Inc. | Execution or write mask generation for data selection in a multi-threaded, self-scheduling reconfigurable computing fabric |
US11494331B2 (en) | 2019-09-10 | 2022-11-08 | Cornami, Inc. | Reconfigurable processor circuit architecture |
DE102020131666A1 (de) * | 2020-05-05 | 2021-11-11 | Intel Corporation | Skalierbare Multiplikationsbeschleunigung dünnbesetzter Matrizen unter Verwendung systolischer Arrays mit Rückkopplungseingaben |
US20220413721A1 (en) * | 2021-06-28 | 2022-12-29 | Google Llc | Control of machine-learning systems |
US11709796B2 (en) * | 2021-08-16 | 2023-07-25 | Micron Technology, Inc. | Data input/output operations during loop execution in a reconfigurable compute fabric |
CN116450570B (zh) * | 2023-06-19 | 2023-10-17 | 先进能源科学与技术广东省实验室 | 基于fpga的32位risc-v处理器及电子设备 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282627B1 (en) | 1998-06-29 | 2001-08-28 | Chameleon Systems, Inc. | Integrated processor and programmable data path chip for reconfigurable computing |
US6349346B1 (en) | 1999-09-23 | 2002-02-19 | Chameleon Systems, Inc. | Control fabric unit including associated configuration memory and PSOP state machine adapted to provide configuration address to reconfigurable functional unit |
US6693456B2 (en) * | 2000-08-04 | 2004-02-17 | Leopard Logic Inc. | Interconnection network for a field programmable gate array |
US6759869B1 (en) * | 2002-06-05 | 2004-07-06 | Xilinx, Inc. | Large crossbar switch implemented in FPGA |
US6925643B2 (en) * | 2002-10-11 | 2005-08-02 | Sandbridge Technologies, Inc. | Method and apparatus for thread-based memory access in a multithreaded processor |
US7149996B1 (en) * | 2003-07-11 | 2006-12-12 | Xilinx, Inc. | Reconfigurable multi-stage crossbar |
US7610473B2 (en) * | 2003-08-28 | 2009-10-27 | Mips Technologies, Inc. | Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor |
US7263599B2 (en) * | 2004-02-06 | 2007-08-28 | Infineon Technologies | Thread ID in a multithreaded processor |
JP4484756B2 (ja) * | 2004-06-21 | 2010-06-16 | 三洋電機株式会社 | リコンフィギュラブル回路および処理装置 |
US7873776B2 (en) * | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
US7224184B1 (en) * | 2004-11-05 | 2007-05-29 | Xilinx, Inc. | High bandwidth reconfigurable on-chip network for reconfigurable systems |
US7276933B1 (en) | 2004-11-08 | 2007-10-02 | Tabula, Inc. | Reconfigurable IC that has sections running at different looperness |
WO2006109835A1 (ja) * | 2005-04-12 | 2006-10-19 | Matsushita Electric Industrial Co., Ltd. | プロセッサ |
CN100492296C (zh) * | 2005-04-12 | 2009-05-27 | 松下电器产业株式会社 | 处理器 |
JP6059413B2 (ja) * | 2005-04-28 | 2017-01-11 | クアルコム,インコーポレイテッド | 再構成可能命令セル・アレイ |
US7768301B2 (en) * | 2006-01-17 | 2010-08-03 | Abound Logic, S.A.S. | Reconfigurable integrated circuits with scalable architecture including a plurality of special function elements |
US8868888B2 (en) | 2007-09-06 | 2014-10-21 | Qualcomm Incorporated | System and method of executing instructions in a multi-stage data processing pipeline |
EP2201569A4 (en) * | 2007-09-06 | 2011-07-13 | Tabula Inc | CONFIGURATION CONTEXT SWITCH |
US7902862B2 (en) * | 2007-09-14 | 2011-03-08 | Agate Logic, Inc. | High-bandwidth interconnect network for an integrated circuit |
US8006073B1 (en) * | 2007-09-28 | 2011-08-23 | Oracle America, Inc. | Simultaneous speculative threading light mode |
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 |
JP2010146102A (ja) * | 2008-12-16 | 2010-07-01 | Sanyo Electric Co Ltd | 演算処理装置および記憶領域割当方法 |
US8126002B2 (en) * | 2009-03-31 | 2012-02-28 | Juniper Networks, Inc. | Methods and apparatus related to a shared memory buffer for variable-sized cells |
US8352669B2 (en) * | 2009-04-27 | 2013-01-08 | Lsi Corporation | Buffered crossbar switch system |
US8006075B2 (en) * | 2009-05-21 | 2011-08-23 | Oracle America, Inc. | Dynamically allocated store queue for a multithreaded processor |
US20130013902A1 (en) * | 2010-04-06 | 2013-01-10 | Toyota Jidosha Kabushiki Kaisha | Dynamically reconfigurable processor and method of operating the same |
US20110276760A1 (en) * | 2010-05-06 | 2011-11-10 | Chou Yuan C | Non-committing store instructions |
US7982497B1 (en) | 2010-06-21 | 2011-07-19 | Xilinx, Inc. | Multiplexer-based interconnection network |
US8868894B2 (en) * | 2011-05-06 | 2014-10-21 | Xcelemor, Inc. | Computing system with hardware scheduled reconfiguration mechanism and method of operation thereof |
US9166928B2 (en) * | 2011-09-30 | 2015-10-20 | The Hong Kong University Of Science And Technology | Scalable 3-stage crossbar switch |
GB2519813B (en) * | 2013-10-31 | 2016-03-30 | Silicon Tailor Ltd | Pipelined configurable processor |
-
2013
- 2013-10-31 GB GB1319279.4A patent/GB2519813B/en active Active
- 2013-10-31 GB GB1513909.0A patent/GB2526018B/en active Active
-
2014
- 2014-10-28 JP JP2016551066A patent/JP6708552B2/ja active Active
- 2014-10-28 EP EP14796852.3A patent/EP3063651A1/en not_active Ceased
- 2014-10-28 WO PCT/GB2014/053200 patent/WO2015063466A1/en active Application Filing
- 2014-10-28 US US15/033,459 patent/US9658985B2/en active Active
- 2014-10-28 CN CN201480070217.8A patent/CN105830054B/zh active Active
- 2014-10-28 KR KR1020167014326A patent/KR20160105774A/ko not_active Application Discontinuation
-
2017
- 2017-05-19 US US15/600,508 patent/US10275390B2/en active Active
-
2019
- 2019-03-26 US US16/364,366 patent/US20200026685A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12093739B2 (en) | 2023-02-21 | 2024-09-17 | Metisx Co., Ltd. | Method and apparatus for managing threads in manycore |
Also Published As
Publication number | Publication date |
---|---|
JP2016535913A (ja) | 2016-11-17 |
CN105830054B (zh) | 2019-03-08 |
GB201319279D0 (en) | 2013-12-18 |
WO2015063466A1 (en) | 2015-05-07 |
US20200026685A1 (en) | 2020-01-23 |
US10275390B2 (en) | 2019-04-30 |
GB2519813A (en) | 2015-05-06 |
GB2519813B (en) | 2016-03-30 |
JP6708552B2 (ja) | 2020-06-10 |
US9658985B2 (en) | 2017-05-23 |
CN105830054A (zh) | 2016-08-03 |
WO2015063466A4 (en) | 2015-07-30 |
GB2526018B (en) | 2018-11-14 |
US20180089140A1 (en) | 2018-03-29 |
EP3063651A1 (en) | 2016-09-07 |
GB201513909D0 (en) | 2015-09-23 |
GB2526018A (en) | 2015-11-11 |
US20160259757A1 (en) | 2016-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10275390B2 (en) | Pipelined configurable processor | |
US11687327B2 (en) | Control and reconfiguration of data flow graphs on heterogeneous computing platform | |
US20020089348A1 (en) | Programmable logic integrated circuit devices including dedicated processor components | |
US11334504B2 (en) | Hybrid architecture for signal processing and signal processing accelerator | |
JP2022535713A (ja) | ヘテロジニアス処理システムのためのデータフローグラフプログラミング環境 | |
EP1535189B1 (en) | Programmable pipeline fabric utilizing partially global configuration buses | |
US20060015701A1 (en) | Arithmetic node including general digital signal processing functions for an adaptive computing machine | |
US8024549B2 (en) | Two-dimensional processor array of processing elements | |
KR102311424B1 (ko) | 구성가능 논리 유닛 스위칭 장치 및 방법 | |
US8607029B2 (en) | Dynamic reconfigurable circuit with a plurality of processing elements, data network, configuration memory, and immediate value network | |
JP2006302132A (ja) | 信号処理装置及び再構成可能論理回路装置及び再構成可能順序回路 | |
GB2555363A (en) | Multistage switch | |
US6963966B1 (en) | Accumulator-based load-store CPU architecture implementation in a programmable logic device | |
US9081901B2 (en) | Means of control for reconfigurable computers | |
TWI810262B (zh) | 用於計算機器的可變位元寬資料格式的單打包和拆包網路及方法 | |
WO2021014017A1 (en) | A reconfigurable architecture, for example a coarse-grained reconfigurable architecture as well as a corresponding method of operating such a reconfigurable architecture | |
Bindal et al. | Special Topics | |
Raman et al. | Configurable architecture for smart pixel research | |
JPH01142940A (ja) | マイクロプログラム制御装置 | |
CS235602B1 (cs) | Paměť číslicového počítače řízeného tokem dat |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |