KR20200062244A - 집적 회로 패키지에 프로그램 가능 디바이스 및 처리 시스템의 통합 - Google Patents

집적 회로 패키지에 프로그램 가능 디바이스 및 처리 시스템의 통합 Download PDF

Info

Publication number
KR20200062244A
KR20200062244A KR1020207011292A KR20207011292A KR20200062244A KR 20200062244 A KR20200062244 A KR 20200062244A KR 1020207011292 A KR1020207011292 A KR 1020207011292A KR 20207011292 A KR20207011292 A KR 20207011292A KR 20200062244 A KR20200062244 A KR 20200062244A
Authority
KR
South Korea
Prior art keywords
programmable
interface
processing system
package
coupled
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
KR1020207011292A
Other languages
English (en)
Other versions
KR102759135B1 (ko
Inventor
오스틴 에이치. 레세아
순다라라자라오 모한
스티븐 엠. 트림버거
Original Assignee
자일링크스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 자일링크스 인코포레이티드 filed Critical 자일링크스 인코포레이티드
Publication of KR20200062244A publication Critical patent/KR20200062244A/ko
Application granted granted Critical
Publication of KR102759135B1 publication Critical patent/KR102759135B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10WGENERIC PACKAGES, INTERCONNECTIONS, CONNECTORS OR OTHER CONSTRUCTIONAL DETAILS OF DEVICES COVERED BY CLASS H10
    • H10W70/00Package substrates; Interposers; Redistribution layers [RDL]
    • H10W70/60Insulating or insulated package substrates; Interposers; Redistribution layers
    • H10W70/62Insulating or insulated package substrates; Interposers; Redistribution layers characterised by their interconnections
    • H10W70/65Shapes or dispositions of interconnections
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7892Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • H01L23/50
    • H01L23/5386
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10WGENERIC PACKAGES, INTERCONNECTIONS, CONNECTORS OR OTHER CONSTRUCTIONAL DETAILS OF DEVICES COVERED BY CLASS H10
    • H10W70/00Package substrates; Interposers; Redistribution layers [RDL]
    • H10W70/60Insulating or insulated package substrates; Interposers; Redistribution layers
    • H10W70/611Insulating or insulated package substrates; Interposers; Redistribution layers for connecting multiple chips together
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10WGENERIC PACKAGES, INTERCONNECTIONS, CONNECTORS OR OTHER CONSTRUCTIONAL DETAILS OF DEVICES COVERED BY CLASS H10
    • H10W72/00Interconnections or connectors in packages

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Geometry (AREA)
  • Microcomputers (AREA)
  • Multi Processors (AREA)

Abstract

예시적인 집적 회로(IC) 패키지는: 기판(118) 상에 배치된 처리 시스템(104) 및 프로그램 가능 IC(106)를 포함하고, 처리 시스템은 기판의 인터커넥트(112)를 통해 프로그램 가능 IC에 결합되고, 처리 시스템은 링 인터커넥트(210)에 결합된 컴포넌트(202…208)를 포함하며, 컴포넌트는 프로세서(202) 및 인터페이스 컨트롤러(214)를 포함한다. 프로그램 가능 IC는: 인터커넥트를 통해 인터페이스 컨트롤러에 결합된 인터페이스 엔드 포인트(218); 및 인터페이스 엔드 포인트에 결합되고 인터페이스 엔드 포인트 및 인터페이스 컨트롤러를 통해 처리 시스템의 링 인터커넥트와 통신하도록 구성된 적어도 하나의 주변 장치(230)를 포함한다.

Description

집적 회로 패키지에 프로그램 가능 디바이스 및 처리 시스템의 통합
본 개시의 예들은 일반적으로 전자 회로에 관한 것으로, 특히 집적 회로(integrated circuit; IC) 패키지에 프로그램 가능 디바이스 및 처리 시스템의 통합에 관한 것이다.
최신 중앙 처리 장치(central processing unit; CPU)는 단일 반도체 다이 상에 여러 마이크로프로세서 코어, 그래픽 엔진 및 기타 고정 기능을 통합하는 복합 시스템 온 칩(system on a chip; SoC) 디바이스이다. CPU는 PCIe(Peripheral Component Interconnect Express) 인터페이스와 같은 확장 버스 인터페이스를 포함할 수 있다. 전형적인 구성에서, CPU를 갖는 집적 회로(IC) 패키지가 인쇄 회로 기판(printed circuit board; PCB)에 장착된다. 다양한 주변 장치가 고정 또는 제거 가능한 방식으로 CPU IC 패키지 외부의 PCB에 장착된다. 주변 장치는 PCB 및 CPU IC 패키지의 핀을 통해 CPU의 PCIe 인터페이스에 결합된다. 이러한 구성은 큰 풋 프린트를 가지므로, PCB에 장착된 적어도 여러 개의 IC가 필요하고, 최악의 경우 주변 장치를 갖는 다른 PCB를 삽입할 수 있는 확장 포트를 위한 공간이 필요하다.
프로그램 가능 집적 회로(IC)는 종종 사용자 구성 가능 입력에 따라 디지털 로직 동작을 구현하기 위해 사용된다. 프로그램 가능 IC의 예로는 복합 프로그램 가능 로직 디바이스(complex programmable logic device; CPLD) 및 필드 프로그램 가능 게이트 어레이(field programmable gate array; FPGA)가 있다. CPLD는 종종 곱의 합 로직을 갖는 프로그램 가능 로직 어레이(programmable logic array; PLA) 아키텍처를 기반으로 하는 여러 기능 블록을 포함한다. 구성 가능 인터커넥트 매트릭스가 기능 블록 간에 신호를 전송한다.
FPGA의 한 유형은 프로그램 가능 타일의 어레이를 포함한다. 프로그램 가능 타일은 다양한 유형의 로직 블록을 포함하며, 예를 들어, 입출력 블록(input/output block; IOB), 구성 가능 로직 블록(configurable logic block; CLB), 전용 랜덤 액세스 메모리 블록(random access memory block; BRAM), 곱셈기, 디지털 신호 처리 블록(digital signal processing block; DSP), 프로세서, 클럭 관리자, 지연 고정 루프(delay lock loop; DLL), PCIe(Peripheral Component Interconnect Express)와 같은 버스 또는 네트워크 인터페이스 및 이더넷 등을 포함할 수 있다. 각각의 프로그램 가능 타일은 일반적으로 프로그램 가능 인터커넥트와 프로그램 가능 로직을 모두 포함한다. 프로그램 가능 인터커넥트는 일반적으로 프로그램 가능 인터커넥트 포인트(programmable interconnect point; PIP)에 의해 상호 연결된 다양한 길이의 다수의 인터커넥트 라인을 포함한다. 프로그램 가능 로직은, 예를 들어, 함수 발생기, 레지스터, 산술 연산 로직 등을 포함할 수 있는 프로그램 가능 요소를 사용하여 사용자 설계의 로직을 구현한다.
하드웨어 가속기로 사용하는 것과 같은 CPU에서 사용하기 위한 주변 장치를 구현하기 위해 프로그램 가능 IC가 사용될 수 있다. 하드웨어 가속은 범용 CPU에서 실행되는 소프트웨어보다 일부 기능을 보다 효율적으로 수행하기 위해 하드웨어를 사용한다. 하드웨어 가속기는 일부 애플리케이션을 위해 하드웨어 가속을 구현하도록 설계된 특수 목적 하드웨어이다. 예시적인 애플리케이션은 신경망, 비디오 인코딩, 디코딩, 트랜스코딩, 네트워크 데이터 처리 등을 포함한다. 이러한 하드웨어 가속기는 일반적으로 마더 보드의 슬롯에 삽입되는 PCIe 카드로 구현된다. CPU 및 프로그램 가능 IC는 마더 보드의 컴포넌트에 의해 물리적으로 분리된 두 개의 개별 IC이다. 주변 장치로 사용되는 프로그램 가능 IC(들) 및 CPU를 갖는 컴퓨팅 시스템의 보다 효율적인 구현을 제공하는 것이 바람직하다.
집적 회로(IC) 패키지에 프로그램 가능 디바이스 및 처리 시스템의 통합이 설명된다. 일 예에서, IC 패키지는: 기판 상에 배치된 처리 시스템 및 프로그램 가능 IC를 포함하고, 처리 시스템은 기판의 인터커넥트를 통해 프로그램 가능 IC에 결합되고, 처리 시스템은 링 인터커넥트에 결합된 컴포넌트를 포함하며, 컴포넌트는 프로세서 및 인터페이스 컨트롤러를 포함한다. 프로그램 가능 IC는: 인터커넥트를 통해 인터페이스 컨트롤러에 결합된 인터페이스 엔드 포인트; 및 인터페이스 엔드 포인트에 결합되고 인터페이스 엔드 포인트 및 인터페이스 컨트롤러를 통해 처리 시스템의 링 인터커넥트와 통신하도록 구성된 적어도 하나의 주변 장치를 포함한다.
일부 실시예들에서, 프로그램 가능 IC는 프로그램 가능 패브릭을 포함할 수 있다.
일부 실시예들에서, 프로그램 가능 IC는 프로그램 가능 패브릭에 결합된 임베디드 처리 시스템을 포함할 수 있다.
일부 실시예들에서, 적어도 하나의 주변 장치는 프로그램 가능 패브릭으로 프로그래밍될 수 있다.
일부 실시예들에서, 인터페이스 컨트롤러 및 인터페이스 엔드 포인트는 각각 적어도 하나의 스트리밍 인터페이스를 사용하여 통신하도록 구성된 하나 이상의 포트를 포함할 수 있다.
일부 실시예들에서, 기판은 패키지 인터페이스를 포함할 수 있고, 프로그램 가능 IC는 패키지 인터페이스에 결합될 수 있다.
일부 실시예들에서, IC 패키지는 처리 시스템 및 프로그램 가능 IC에 결합된 하나 이상의 다른 IC를 더 포함할 수 있다.
다른 예에서, IC 패키지는: 반도체 다이 상에 배치된 처리 시스템 및 프로그램 가능 IC를 포함하고, 처리 시스템은 링 인터커넥트에 결합된 컴포넌트를 포함하고, 컴포넌트는 프로세서 및 인터페이스 회로를 포함하며; 프로그램 가능 IC는 링 인터커넥트에 결합되고 링 인터커넥트와 통신하도록 구성된 적어도 하나의 주변 장치를 포함한다.
일부 실시예들에서, 프로그램 가능 IC는 프로그램 가능 패브릭을 포함할 수 있다.
일부 실시예들에서, 프로그램 가능 IC는 프로그램 가능 패브릭에 결합된 임베디드 처리 시스템을 포함할 수 있다.
일부 실시예들에서, 적어도 하나의 주변 장치는 프로그램 가능 패브릭으로 프로그래밍될 수 있다.
일부 실시예들에서, 프로세서 및 프로그램 가능 IC는 각각 적어도 하나의 스트리밍 인터페이스를 사용하여 통신하도록 구성된 하나 이상의 포트를 포함할 수 있다.
다른 예에서, IC 패키지는: 반도체 다이 상에 배치된 처리 시스템 및 프로그램 가능 IC를 포함하고, 처리 시스템은 링 인터커넥트에 결합된 컴포넌트를 포함하고, 컴포넌트는 프로세서, 인터페이스 회로 및 메모리를 포함하며; 프로그램 가능 IC는 링 인터커넥트에 결합되고 링 인터커넥트와 통신하도록 구성된 적어도 하나의 주변 장치 및 적어도 하나의 메모리를 포함한다.
일부 실시예들에서, 프로그램 가능 IC의 적어도 하나의 메모리는 링 인터커넥트에 결합되지 않을 수 있다.
일부 실시예들에서, 프로그램 가능 IC의 적어도 하나의 메모리는 링 인터커넥트에 결합될 수 있다.
일부 실시예들에서, IC 패키지는 패키지 인터페이스를 더 포함할 수 있고, 프로그램 가능 IC는 패키지 인터페이스에 결합될 수 있다.
일부 실시예들에서, 프로그램 가능 IC는 프로그램 가능 패브릭을 포함할 수 있다.
일부 실시예들에서, 프로그램 가능 IC는 프로그램 가능 패브릭에 결합된 임베디드 처리 시스템을 포함할 수 있다.
일부 실시예들에서, 적어도 하나의 주변 장치는 프로그램 가능 패브릭으로 프로그래밍될 수 있다.
일부 실시예들에서, 프로세서 및 프로그램 가능 IC는 각각 적어도 하나의 스트리밍 인터페이스를 사용하여 통신하도록 구성된 하나 이상의 포트를 포함할 수 있다.
다른 예에서, IC 패키지는: 반도체 다이 상에 배치된 처리 시스템 및 프로그램 가능 IC를 포함하고, 처리 시스템은 링 인터커넥트에 결합된 컴포넌트를 포함하고, 링 인터커넥트는 링 대 링 커넥터를 통해 제 2 서브 링에 결합된 제 1 서브 링을 포함하고, 컴포넌트는 프로세서 및 인터페이스 회로를 포함하며; 프로그램 가능 IC는 제 1 서브 링에 결합되고 제 1 서브 링과 통신하도록 구성된 적어도 하나의 주변 장치를 포함한다.
일부 실시예들에서, 컴포넌트는 제 2 서브 링에 결합된 그래픽 처리 장치(graphics processing unit; GPU)를 더 포함할 수 있다.
일부 실시예들에서, 프로그램 가능 IC는 프로그램 가능 패브릭을 포함할 수 있다.
일부 실시예들에서, 프로그램 가능 IC는 프로그램 가능 패브릭에 결합된 임베디드 처리 시스템을 포함할 수 있다.
일부 실시예들에서, 적어도 하나의 주변 장치는 프로그램 가능 패브릭으로 프로그래밍될 수 있다.
일부 실시예들에서, 프로세서 및 프로그램 가능 IC는 각각 적어도 하나의 스트리밍 인터페이스를 사용하여 통신하도록 구성된 하나 이상의 포트를 포함할 수 있다.
이들 및 다른 양태들은 다음의 상세한 설명을 참조하여 이해될 수 있다.
상기 나열된 특징들이 상세하게 이해될 수 있는 방식으로, 위에서 간략하게 요약된 보다 구체적인 설명은 예시적인 구현예들을 참조하여 이루어질 수 있으며, 이들 중 일부는 첨부된 도면에 도시되어 있다. 그러나 첨부된 도면은 단지 전형적인 예시적인 구현예들을 나타내므로 그 범위를 제한하는 것으로 간주되어서는 안 된다는 것을 유념해야 한다.
도 1은 일 예에 따른 집적 회로(IC) 패키지를 도시한 블록도이다.
도 2는 도 1의 IC 패키지에서의 처리 시스템 및 프로그램 가능 IC의 예를 도시한 블록도이다.
도 3은 일 예에 따른 프로그램 가능 IC의 주변 회로를 도시한 블록도이다.
도 4는 일 예에 따른 도 3의 주변 회로를 보다 상세히 도시한 블록도이다.
도 5는 일 예에 따른 컴퓨팅 시스템을 도시한 블록도이다.
도 6은 일 예에 따른 프로그램 가능 IC를 도시한 블록도이다.
도 7은 일 예에 따른 프로그램 가능 IC의 시스템 온 칩(SoC) 구현을 도시한 블록도이다.
도 8은 프로그램 가능 IC의 필드 프로그램 가능 게이트 어레이(FPGA) 구현을 도시한다.
도 9는 일 예에 따른 IC 패키지에서 프로그램 가능 IC를 동작시키는 방법을 도시한 흐름도이다.
도 10은 다른 예에 따른 IC 패키지를 도시한 블록도이다.
도 11은 도 10의 IC 패키지에서의 처리 시스템의 예시적인 구현을 도시한 블록도이다.
도 12는 도 10의 IC 패키지에서의 처리 시스템의 다른 예시적인 구현을 도시한 블록도이다.
도 13은 도 10의 IC 패키지에서의 처리 시스템의 또 다른 예시적인 구현을 도시한 블록도이다.
도 14는 스트리밍 인터페이스를 사용하여 통신하도록 구성된 도 1의 IC 패키지의 예시적인 구현을 도시한 블록도이다.
도 15는 스트리밍 인터페이스를 사용하여 통신하도록 구성된 도 10의 IC 패키지의 예시적인 구현을 도시한 블록도이다.
도 16은 일 예에 따른 주변 회로를 보다 상세히 도시한 블록도이다.
도 17은 일 예에 따른 처리 시스템에서 프로그램 가능 IC를 동작시키는 방법을 도시한 흐름도이다.
이해를 용이하게 하기 위해, 가능한 경우 도면에 공통인 동일한 요소를 지정하기 위해 동일한 참조 번호가 사용되었다. 하나의 예의 요소들이 다른 예들에 유리하게 통합될 수 있음이 고려된다.
이하, 도면을 참조하여 다양한 특징들이 설명된다. 도면은 실적도로 도시되거나 도시되지 않을 수 있고, 유사한 구조 또는 기능의 요소들은 도면 전체에 걸쳐 동일한 참조 번호로 표시된다는 것을 유념해야 한다. 도면은 단지 특징들의 설명을 용이하게 하기 위해 의도된 것임을 유념해야 한다. 이들은 청구된 발명의 완전한 설명 또는 청구된 발명의 범위에 대한 제한으로서 의도되지 않는다. 또한, 도시된 예는 도시된 양태들 또는 장점들을 모두 가질 필요는 없다. 특정 예와 관련하여 설명된 양태 또는 장점은 반드시 그 예로 제한되는 것이 아니며, 도시되지 않았거나 또는 명시적으로 설명되지 않은 경우에도 임의의 다른 예에서 실시될 수 있다.
집적 회로(IC) 패키지에 프로그램 가능 디바이스 및 처리 시스템의 통합이 설명된다. 본 명세서에 설명된 예시적인 기술은 필드 프로그램 가능 게이트 어레이(FPGA) 패브릭과 같은 프로그램 가능 패브릭을 링 인터커넥트를 갖는 고성능 처리 시스템에 통합한다. 일 예에서, IC 패키지는 기판 상에 배치된 처리 시스템 및 프로그램 가능 IC를 포함한다. 처리 시스템 및 프로그램 가능 IC는 기판의 인터커넥트를 통해 결합된다. 처리 시스템은 링 인터커넥트에 결합된 프로세서 및 인터페이스 컨트롤러를 포함하는 컴포넌트를 포함한다. 프로그램 가능 IC는 기판 상의 인터커넥트를 통해 인터페이스 컨트롤러에 결합된 인터페이스 엔드 포인트를 포함한다. 프로그램 가능 IC는 또한 인터페이스 엔드 포인트에 결합되고, 인터페이스 엔드 포인트 및 인터페이스 컨트롤러를 통해 처리 시스템의 링 인터커넥트와 통신하도록 구성된 주변 장치(들)를 포함한다. 일 예에서, 프로그램 가능 IC는 PCIe(Peripheral Component Interface Express) 연결을 통해 처리 시스템의 링 인터커넥트에 연결된다. 예들에서, 프로그램 가능 IC와 처리 시스템 사이의 PCIe 연결의 물리 계층은 프로그램 가능 IC와 처리 시스템 사이의 기판 인터커넥트의 공지된 특성에 기초하여 최적화될 수 있다. 다른 예들에서, 인텔® QPI(Quickpath Interconnect; 퀵 패스 인터커넥트), 옴니패스(Omnipath), 인피니밴드(Infiniband) 등과 같은 다른 칩 대 칩 인터커넥트 프로토콜의 최적화된 버전이 PCIe 대신에 사용될 수 있다. 이러한 방식으로, 프로그램 가능 IC에 구현된 주변 장치는 PCIe 소켓을 위한 추가 보드 공간 및 PCIe 커넥터가 있는 프로그램 가능 IC를 갖는 추가 보드를 필요로 하지 않고 처리 시스템을 위한 가속기로서 사용될 수 있다.
다른 예에서, IC 패키지는 (동일한 패키지 내에 배치되는 것과 대조적으로) 반도체 다이 상에 배치된 처리 시스템 및 프로그램 가능 IC를 포함한다. 처리 시스템은 링 인터커넥트에 결합된 컴포넌트(예를 들어, 프로세서 및 인터페이스 회로)를 포함한다. 프로그램 가능 IC는 링 인터커넥트에 결합되고, 링 인터커넥트와 통신하도록 구성된 주변 장치(들)를 포함한다.
다른 예에서, IC 패키지는 (동일한 패키지 내에 배치되는 것과 대조적으로) 반도체 다이 상에 배치된 처리 시스템 및 프로그램 가능 IC를 포함한다. 처리 시스템은 링 인터커넥트에 결합된 컴포넌트(예를 들어, 프로세서 인터페이스 회로 및 메모리)를 포함한다. 프로그램 가능 IC는 링 인터커넥트에 결합되고, 링 인터커넥트와 통신하도록 구성된 주변 장치(들) 및 메모리를 포함한다.
다른 예에서, IC 패키지는 (동일한 패키지 내에 배치되는 것과 대조적으로) 반도체 다이 상에 배치된 처리 시스템 및 프로그램 가능 IC를 포함한다. 처리 시스템은 링 인터커넥트에 결합된 컴포넌트를 포함한다. 링 인터커넥트는 링 대 링 커넥터를 통해 제 2 서브 링에 결합된 제 1 서브 링을 포함한다. 컴포넌트는 프로세서 및 인터페이스 회로를 포함한다. 프로그램 가능 IC는 제 1 서브 링에 결합되고, 제 1 서브 링과 통신하도록 구성된 적어도 하나의 주변 장치를 포함한다.
예시적인 기술의 이들 및 추가 양태는 도면과 관련하여 아래에서 설명된다.
도 1은 일 예에 따른 집적 회로(IC) 패키지(102)를 도시한 블록도이다. IC 패키지(102)는 처리 시스템(104) 및 프로그램 가능 IC(106)를 포함한다. 처리 시스템(104)은 반도체 다이 상에 구현되고, 하나 이상의 중앙 처리 장치(CPU) 및 주변 인터페이스 컨트롤러(예를 들어, PCIe(Peripheral Component Interconnect Express) 인터페이스 컨트롤러 등)를 포함하는 다른 고정 기능을 포함한다. 처리 시스템(104)의 예시적인 구현이 도 2와 관련하여 아래에서 설명된다. 프로그램 가능 IC(106)는 다른 반도체 다이 상에 구현되고, 필드 프로그램 가능 게이트 어레이(FPGA), 복합 프로그램 가능 로직 디바이스(CPLD), FPGA/CPLD 기능을 갖는 시스템 온 칩(SoC) 또는 다른 유형의 프로그램 가능 디바이스일 수 있다. 처리 시스템(104) 및 프로그램 가능 IC(106)는 인터포저, 패키지 기판 등과 같은 기판(118)에 전기적으로 그리고 기계적으로 장착된다. 기판(118)은 IC 패키지(102)에 배치되며, IC 패키지(102)는 그 위에 반도체 다이의 덮개 또는 다른 형태의 캡슐화를 포함할 수 있다.
처리 시스템(104)은 기판(118) 상에 형성된 인터커넥트(112)를 통해 또는 직접 다이 스태킹을 통해 프로그램 가능 IC(106)에 전기적으로 결합될 수 있다. 아래에 더 설명되는 바와 같이, 처리 시스템(104)은 인터커넥트(112)를 통해 프로그램 가능 IC(106)의 인터페이스 엔드 포인트(예를 들어, PCIe 엔드 포인트)에 결합되는 인터페이스 컨트롤러(예를 들어, PCIe 컨트롤러)를 포함할 수 있다. IC 패키지(102)는 패키지 인터페이스(108)를 포함한다. 패키지 인터페이스(108)는 솔더 볼, 솔더 범프, 금속 핀 등을 포함할 수 있다. 패키지 인터페이스(108)는 IC 패키지(102)를 전기적으로 그리고 기계적으로 장착하기 위해 인쇄 회로 기판(PCB) 등과 인터페이스하도록 구성된다. 처리 시스템(104)은 기판(118) 상에 형성된 인터커넥트(116)를 통해 패키지 인터페이스(108)에 결합된 회로를 포함할 수 있다. 프로그램 가능 IC(106)는 기판(118) 상에 형성된 인터커넥트(114)를 통해 패키지 인터페이스(108)에 결합된 회로를 포함할 수 있다.
패키지 인터페이스(108)는, 예를 들어, 랜덤 액세스 메모리(random access memory; RAM)(132), 비휘발성 메모리(non-volatile memory; NVM)(134), 주변 장치(들)(136) 및 지원 회로(138)를 포함하는 다른 회로에 결합될 수 있다. RAM(132)은 동적 RAM(dynamic RAM; DRAM)(예를 들어, DDR(double data-rate) RAM 등), 정적 RAM(static RAM; SRAM) 등을 포함할 수 있다. NVM(134)은 판독 전용 메모리(read-only memory; ROM)(예를 들어, 전자적 소거 가능 프로그램 가능 ROM(electronically erasable programmable ROM; EEPROM) 등) 및/또는 비휘발성 RAM(non-volatile RAM; NVRAM)(예를 들어, 플래시 메모리, 솔리드 스테이트 저장 장치 등)을 포함할 수 있다. 주변 장치(들)(136)는 당 업계에 알려진 컴퓨팅 시스템에 사용되는 임의의 유형의 주변 회로를 포함할 수 있다. 지원 회로(138)는 IC 패키지(102)를 지원하기 위한 전원 공급 장치 및 유사 유형 회로를 포함할 수 있다. RAM(132), NVM(134) 및 주변 장치(들)(136)는 본 명세서에서 더 설명되는 바와 같이 이러한 회로를 IC 패키지(102) 내에 구현된 RAM, NVM 및/또는 주변 장치와 구별하기 위해 "외부" RAM, NVM 및/또는 주변 장치로 지칭될 수 있다.
프로그램 가능 IC(106)는 주변 회로(110)를 포함한다. 주변 회로(110)는 인터페이스(예를 들어, PCIe 인터페이스)를 통해 처리 시스템(104)과 통신하도록 구성된다. 주변 회로(110)는 경화 회로, 프로그램 회로 또는 이들의 조합을 포함한다.
본 명세서에 사용된 "경화 회로"는 IC의 일부로서 제조된다. 프로그램 가능 로직과 달리, 경화 회로는 프로그램 가능 IC의 프로그램 가능 로직 구성을 통해 형성되지 않는다. 경화 회로는 일반적으로 전용 회로 블록 및 인터커넥트를 갖는 것으로 간주되는데, 전용 회로 블록 및 인터커넥트는 예를 들어 특정 기능을 가지며, 구성 비트 스트림을 프로그램 가능 IC(106)에 먼저 로딩하지 않고 기능한다. 경화 회로는 파라미터 설정에 따라 설정되거나 선택될 수 있는 하나 이상의 동작 모드를 가질 수 있다. 파라미터 설정은, 예를 들어, 프로그램 가능 IC(106) 내의 하나 이상의 메모리 요소(예를 들어, 레지스터)에 값을 저장함으로써 실현될 수 있다. 동작 모드는, 예를 들어, 구성 비트 스트림을 프로그램 가능 IC(106)에 로딩함으로써 설정될 수 있다. 이 기능에도 불구하고, 경화 회로는 "프로그램 가능 로직"으로 간주되지 않는다. 경화 회로와 대조적으로, 프로그램 회로는 구성 비트 스트림의 로딩을 통해 프로그램 가능 IC의 프로그램 가능 로직으로 구성되는 회로이다.
IC 패키지(102)는 처리 시스템(104)에서 사용하기 위한 주변 회로(110)를 포함한다. 주변 회로(110)의 일부는 프로그램 가능 IC(106)의 프로그램 가능 로직으로 구성된 프로그램 회로로서, 특정 유형 및 수의 주변 장치가 시간에 따라 동적으로 변하게 한다. 주변 회로(110)의 예들이 아래에서 더 설명된다. 주변 회로(110)는 IC 패키지(102) 외부의 주변 장치(들)(136)와 반대로 온 칩 또는 내부 주변 장치(들)를 구현한다.
일 예에서, IC 패키지(102)는 하나 이상의 다른 IC(120)를 포함할 수 있다. 각각의 IC(120)는 기판(118)에 기계적으로 그리고 전기적으로 결합되는 반도체 다이 상에 구현된다. 다른 IC(들)(120)는 기판(118) 상의 인터커넥트(126)를 통해 처리 시스템(104)에 및/또는 기판(118) 상의 인터커넥트(130)를 통해 프로그램 가능 IC(106)에 전기적으로 연결될 수 있다. 다른 IC(120)는 기판(118) 상의 인터커넥트(128)를 통해 패키지 인터페이스(108)에 결합된 회로를 포함할 수 있다. 일 예에서, 다른 IC(120)는 RAM(122) 및/또는 비휘발성 메모리(NVM)(124)를 포함할 수 있다. RAM(122)은 프로그램 가능 IC(106), 처리 시스템(104), 또는 프로그램 가능 IC(106) 및 처리 시스템(104) 양자 모두(예를 들어, 공유 메모리)에 결합될 수 있다. 마찬가지로, NVM(124)은 프로그램 가능 IC(106), 처리 시스템(104), 또는 프로그램 가능 IC(106) 및 처리 시스템(104) 양자 모두에 결합될 수 있다. RAM(122) 및/또는 NVM(124)은 패키지 인터페이스(108)에 결합될 수 있다. RAM(122) 및 NVM(124)은 각각 RAM(132) 및 NVM(134)과 유사한 디바이스일 수 있다.
상기 예에서, 처리 시스템(104) 및 프로그램 가능 IC(106)는 IC 패키지(102) 내에서 기판(118)에 장착된 2 개의 개별 반도체 다이를 사용하여 구현된다. 대안적인 예에서, 처리 시스템(104) 및 프로그램 가능 IC(106)는 IC 패키지(102) 내에 배치된 단일 반도체 다이를 사용하여 구현된다. 그러한 경우에, 단일 반도체 다이는 기판(118)에 장착될 수 있거나, 기판(118)은 생략될 수 있다. 다른 IC(120)는 처리 시스템(104) 및 프로그램 가능 IC(106)와 별개인 하나 이상의 다이 상에 구현될 수 있다. 대안적으로, 다른 IC(120) 중 하나 이상은 처리 시스템(104) 및/또는 프로그램 가능 IC(106)와 동일한 다이 상에 구현될 수 있다.
동작시, 처리 시스템(104)은 RAM(132) 및/또는 NVM(134)에 저장될 수 있는 소프트웨어 코드를 실행한다. 처리 시스템(104)은 소프트웨어 코드 실행에 응답하여 프로그램 가능 IC(106)의 주변 회로(110)와 통신할 수 있다. 예를 들어, 주변 회로(110)는 처리 시스템(104)을 위해 하드웨어로 하나 이상의 기능(예를 들어, 하드웨어 가속기(들))을 수행할 수 있다. 전력이 IC 패키지(102)에 공급될 때, 프로그램 가능 IC(106)는 NVM(124) 및/또는 NVM(134)에 저장된 구성 데이터(예를 들어, 구성 비트 스트림)를 사용하여 주변 회로(110)의 적어도 일부를 구현하도록 구성될 수 있다. 초기 구성 후에, 프로그램 가능 IC(106)는 주변 회로(110)의 전부 또는 일부의 기능을 변경하기 위해 (예를 들어, 부분 재구성을 사용하여) 동적으로 재구성될 수 있다. 일 예에서, 처리 시스템(104)은 (예를 들어, PCIe 인터페이스를 통해) 프로그램 가능 IC(106)를 재구성하기 위해 소프트웨어 코드를 실행한다.
도 2는 처리 시스템(104) 및 프로그램 가능 IC(106)의 예를 도시한 블록도이다. 처리 시스템(104)은 하나 이상의 CPU(예를 들어, 다수의 CPU(202)가 도시됨), 하나 이상의 캐시 메모리(예를 들어, 다수의 캐시 메모리(204)가 도시됨) 및 인터페이스 회로(206)를 포함한다. CPU(202)는 하나 이상의 코어 및 관련 회로(예를 들어, 캐시 메모리, 메모리 관리 장치(memory management unit; MMU), 인터럽트 컨트롤러 등)를 포함할 수 있다. 예에서, 처리 시스템(104)은 그래픽 처리 장치(GPU)(208), 애플리케이션 특정 회로(예를 들어, 기계 학습 회로) 등과 같은 추가 컴포넌트를 포함할 수 있다. CPU(202), 캐시 메모리, 인터페이스 회로(206) 및 다른 컴포넌트(예를 들어, GPU(208), 텐서 처리 장치(Tensor Processing Unit; TPU)(209) 등)는 링 인터커넥트(210)에 결합된다. 링 인터커넥트(210)는 이에 결합된 다양한 컴포넌트 사이의 온 다이(on-die) 버스이다. 각각의 컴포넌트는 링 인터커넥트(210)에 대한 로컬 인터페이스를 포함한다. 처리 시스템(104)의 다양한 컴포넌트는 링 인터커넥트(210)를 통해 서로 통신할 수 있다. 인터페이스 회로(206)는 링 인터커넥트(210)에 결합된 다른 컴포넌트(예를 들어, CPU(202) 및 GPU(208))에 오프 다이(off-die) 인터페이스를 제공한다.
일 예에서, 링 인터커넥트(210)는 각각의 연결된 컴포넌트에 대한 인터페이스를 갖는 링 기반 토폴로지를 포함한다. 링 인터커넥트(210)는 요청, 스눕 및 확인을 위한 별도의 라인을 갖는 특정 폭의 데이터 버스를 갖는 양방향 링일 수 있다. 각각의 CPU(202)는 링 인터커넥트(210) 상의 고유한 컴포넌트이다. 유사하게, GPU(208)(존재하는 경우)는 링 인터커넥트(210) 상의 고유한 컴포넌트이다. 인터페이스 회로(206)는 링 인터커넥트(210)에 대한 인터페이스를 공유할 수 있거나, 인터페이스 회로(206)의 각각의 인터페이스 컴포넌트는 링 인터커넥트(210)에 대한 자체 인터페이스를 포함할 수 있다. 링 인터커넥트(210)는 다양한 토폴로지(예를 들어, 링, 스타, 메쉬 등)를 포함할 수 있다.
캐시 메모리(204)는 링 인터커넥트(210)에 연결되는 공유 라스트 레벨 캐시(last level cache; LLC)를 제공할 수 있다. 각각의 CPU(202)에는 공유 LLC 캐시의 슬라이스가 할당될 수 있다. 캐시 메모리(204)에 의해 구현된 LLC 캐시는 또한 링 인터커넥트(210) 상의 다른 컴포넌트(예를 들어, GPU(208))에 의해 액세스될 수 있다.
일 예에서, 인터페이스 회로(206)는 PCIe 컨트롤러(214) 및 하나 이상의 다른 컨트롤러(216)를 포함한다. 다른 컨트롤러(들)(216)는 링 인터커넥트(210)에 결합된 컴포넌트에 따라 메모리 컨트롤러, 디스플레이 컨트롤러 등을 포함할 수 있다. CPU(202)는 링 인터커넥트(210)를 통해 PCIe 컨트롤러(214)에 결합된다. PCIe 컨트롤러(214)는 CPU(202)를 위해 PCIe 루트 컴플렉스를 구현한다.
프로그램 가능 IC(106)의 주변 회로(110)는 PCIe 엔드 포인트 회로("PCIe 엔드 포인트(218)") 및 하나 이상의 주변 장치(들)(230)를 포함한다. 프로그램 가능 IC(106)는 또한 다른 회로(224)를 포함할 수 있다. PCIe 엔드 포인트(218)는 인터커넥트(112)를 통해 PCIe 컨트롤러(214)에 결합된다. PCIe 엔드 포인트(218)는 주변 장치(230)를 PCIe 컨트롤러(214)에 결합하는 스위치를 구현한다. 일 예에서, 주변 장치(들)(230)는 프로그램 가능 IC(106)의 프로그램 가능 로직으로 구성되고, PCIe 엔드 포인트(218)는 프로그램 가능 IC(106) 내의 경화 회로이다. 다른 예들에서, PCIe 엔드 포인트(218)의 적어도 일부가 프로그램 가능 IC(106)의 프로그램 가능 로직으로 구성될 수 있다. 다른 예들에서, 주변 장치(들)(230) 중 하나 이상이 프로그램 가능 IC(106) 내의 경화 회로일 수 있다. 다른 회로(224)는 프로그램 가능 IC(106)의 프로그램 가능 로직으로 구성된 프로그램 회로, 프로그램 가능 IC(106) 내의 경화 회로, 또는 이들의 조합을 포함할 수 있다.
다른 예들에서, 각각의 주변 장치(230)는 주변 장치(230) 사이에서 공유되고 프로그램 가능 IC(106)에서 스위치로서 기능 하는 단일 PCIe 엔드 포인트를 포함하는 대신에, 자신의 PCIe 엔드 포인트를 포함할 수 있다. 다른 예에서, 프로그램 가능 IC(106)는 다수의 PCIe 엔드 포인트를 포함할 수 있으며, 이들 각각은 한 그룹의 주변 장치(230) 간에 공유된다.
예에서, PCIe 컨트롤러(214)는 IC 패키지(102)의 패키지 인터페이스(108)에 결합된 인터페이스(220)를 포함한다. 이것은 처리 시스템(104)이 원하는 경우 IC 패키지(102) 외부의 추가적인 주변 장치(들)(예를 들어, 주변 장치(136))와 통신할 수 있게 한다. 일부 예들에서, 인터페이스(220)는 생략될 수 있고, PCIe 컨트롤러(214)는 프로그램 가능 IC(106)의 PCIe 엔드 포인트(들)와만 통신한다. 다른 컨트롤러(들)(216)는 IC 패키지(102)의 패키지 인터페이스(108) 및/또는 다른 IC(120)에 결합된 인터페이스(들)(222)를 포함한다. 인터페이스(220 및 222)는 처리 시스템(104)과 패키지 인터페이스(108) 사이의 인터커넥트(116)를 사용하여 구현될 수 있다. 예를 들어, 다른 컨트롤러(들)(216)는 RAM(132) 및/또는 RAM(122)에 대한 액세스를 제어하기 위한 메모리 컨트롤러를 포함할 수 있다. 다른 컨트롤러(들)(216)는 NVM(134) 및/또는 NVM(124)에 대한 판독 및 기록을 위한 회로를 포함할 수 있다.
일 예에서, 다른 회로(224)는 인터페이스(228)를 포함한다. 인터페이스(228)는 IC 패키지(102)의 패키지 인터페이스(108)에 결합될 수 있거나, 다른 IC(120)(예를 들어, 도 1 에 도시된 NVM(124))에 결합될 수 있거나, 이들의 조합에 결합될 수 있다. 예에서, 주변 회로(110)는 IC 패키지(102)의 패키지 인터페이스(108)에 결합되거나, 다른 IC(120)(예를 들어, 도 1 에 도시된 RAM(122))에 결합되거나, 이들의 조합에 결합된 인터페이스(226)를 포함한다. 이것은 프로그램 가능 IC(106) 외부의 회로가 주변 회로(110)와 직접 통신할 수 있게 한다. 일부 예들에서, 인터페이스(226)는 생략될 수 있다. 인터페이스(226 및 228)는 프로그램 가능 IC(106)와 패키지 인터페이스(108) 사이의 인터커넥트(114) 및/또는 프로그램 가능 IC(106)와 다른 IC(120) 사이의 인터커넥트(130)를 사용하여 구현될 수 있다. 일 예에서, 주변 회로(110)는 다른 회로(224)에 대한 인터페이스(229)를 포함한다. 인터페이스(229)는 프로그램 가능 IC(106)에서 전용 및/또는 프로그램 가능 인터커넥트를 사용하여 구현될 수 있다.
도시된 예에서, 프로그램 가능 IC(106)의 주변 회로(110)는 PCIe 컨트롤러(214) 및 PCIe 엔드 포인트(218)에 의해 구현된 PCIe 인터페이스를 통해 링 인터커넥트(210) 및 그 위의 컴포넌트에 결합된다. 다른 유형의 인터페이스가 사용될 수 있다. 예를 들어, PCIe 컨트롤러(214) 및 PCIe 엔드 포인트(218)는 퀵 패스 인터커넥트(QPI) 컨트롤러 및 QPI 엔드 포인트로 대체될 수 있다. 다른 예에서, PCIe 컨트롤러(214) 및 PCIe 엔드 포인트(218)는 처리 시스템(104)과 프로그램 가능 IC(106) 사이의 통신을 지원하도록 특별히 설계된 커스텀 인터페이스 컨트롤러 및 커스텀 인터페이스 엔드 포인트로 대체될 수 있다. 당업자는 프로그램 가능 IC(106)의 주변 회로(110)와 링 인터커넥트(210) 상의 처리 시스템(104)의 컴포넌트 사이의 통신을 가능하게 하기 위해 다양한 종류의 인터페이스가 사용될 수 있음을 이해할 것이다.
도 3은 일 예에 따른 주변 회로(110)를 도시한 블록도이다. 주변 회로(110)는 일반적으로 정적 영역(302) 및 프로그램 가능 영역(304)을 포함한다. 정적 영역(302)은 인터페이스 회로(306)(예를 들어, 도 2에 도시된 PCIe 엔드 포인트(218))를 포함한다. 프로그램 가능 영역(304)은 주변 장치(들)(230)를 포함할 수 있다. 일부 예들에서, 프로그램 가능 영역(304)은 또한 일부 인터페이스 회로(306A)를 포함한다. 일부 예들에서, 주변 회로(110)는 하나 이상의 프로그램 가능 영역(304)을 포함할 수 있고, 이들 각각은 주변 장치(들)(230)로 개별적으로 구성될 수 있다.
정적 영역(302)은 그 회로가 프로그램 가능 영역(304)의 재구성에 걸쳐 일정하게 유지된다는 점에서 "정적"이다. 일 예에서, 인터페이스 회로(306)는 PCIe 엔드 포인트 회로, 직접 메모리 액세스(direct memory access; DMA) 컨트롤러, 인터커넥트, 메모리 컨트롤러, 메모리 인터페이스 회로(예를 들어, DDR 인터페이스), 디커플러 회로(부분 재구성을 지원하기 위해), 플래시 프로그래머, 디버그 회로 등을 포함한다. 일부 예들에서, 프로그램 가능 영역(304)은 인터페이스 회로(306)를 포함하지 않는다. 다른 예들에서, 위에서 설명된 일부 인터페이스 회로(예를 들어, DMA 컨트롤러)는 프로그램 가능 영역(304)에서 (인터페이스 회로(306A)로서) 구현될 수 있다.
도 4는 일 예에 따른 주변 회로(110)를 보다 상세히 도시한 블록도이다. 주변 회로(110)는 인터페이스 회로(306) 및 주변 장치(들)(230)를 포함한다. 일 예에서, 인터페이스 회로(306)는 PCIe 엔드 포인트(218), DMA 컨트롤러(404), 인터커넥트 회로("인터커넥트(406)"), 메모리 컨트롤러(들)(410), 메모리 인터페이스(들)(412), 다른 인터페이스(들)(414)를 포함한다. 인터페이스 회로(306)는 명확성을 위해 생략된 다른 회로(예를 들어, 디커플러 회로, 디버그 회로 등)를 포함할 수 있다. PCIe 엔드 포인트(218)는 주변 장치 버스(예를 들어, PCIe 컨트롤러(214))에 물리적 인터페이스를 제공한다. PCIe 엔드 포인트(218)는 주변 장치(들)(230)를 구현하는 프로그램 가능 로직의 재구성을 제어하기 위한 미디어 구성 액세스 포트(media configuration access port; MCAP)(402)를 포함할 수 있다. DMA 컨트롤러(404)는 처리 시스템(104)과 주변 회로(110) 사이의 DMA 동작을 용이하게 한다.
인터커넥트(406)는 DMA 컨트롤러(404), 주변 장치(들)(230), 메모리 컨트롤러(들)(410) 및 다른 인터페이스(들)(414)를 결합한다. 메모리 컨트롤러(들)(410)는 메모리 인터페이스(들)(412)에 결합된다. 메모리 인터페이스(들)(412)는 프로그램 가능 IC(106) 외부의 RAM(예를 들어, RAM(122) 및/또는 RAM(132)), 프로그램 가능 IC(106) 내부의 RAM(아래에서 설명된 예), 또는 이들의 조합에 결합될 수 있다. 다른 인터페이스(들)(414)는 프로그램 가능 IC(106)의 다른 회로(224)(예를 들어, 다른 경화 회로 및/또는 프로그램 회로)에 결합될 수 있다.
예들에서, 인터커넥트(406)는 ARM® AMBA®(Advanced Microcontroller Bus Architecture) 표준의 일부로서 정의된 AXI(Advanced Extensible Interface) 인터커넥트를 사용하여 구현된다. 예를 들어, 인터커넥트(406)는 AXI4, AXI4-Lite 및 AXI4-Stream 프로토콜을 지원할 수 있다. AXI4 프로토콜은 고성능 메모리 매핑 인터페이스를 정의한다. AXI4-Lite 프로토콜은 적은 처리량 메모리 매핑 인터페이스를 정의한다. AXI4-Stream 프로토콜은 고속 스트리밍 인터페이스를 정의한다. AXI 사양은 단일 AXI 마스터와 단일 AXI 슬레이브 사이의 인터페이스를 정의한다. 인터커넥트(406)는 AXI 마스터를 AXI 슬레이브에 결합한다. AXI4 및 AXI4-Lite 인터페이스는 5 개의 상이한 채널(즉, 판독 및 기록 어드레스 채널, 판독 및 기록 데이터 채널 및 기록 응답 채널)을 포함한다. AXI4-Stream 프로토콜은 마스터와 슬레이브 간의 스트리밍 데이터 전송을 위한 단일 채널을 정의한다. 메모리 매핑 AXI(예를 들어, AXI4 또는 AXI4-Lite)에서, 모든 트랜잭션은 메모리 공간 내의 타겟 어드레스와 전송될 데이터를 포함한다. 스트리밍 AXI(예를 들어, AXI-Stream)에서, 어드레스 개념은 존재하지 않거나 필요하지 않다. DMA 컨트롤러(404), 주변 장치(들)(230), 다른 인터페이스(들)(414) 및 메모리 컨트롤러(들)(410) 각각은 서로 통신하기 위한 하나 이상의 AXI 마스터 및 하나 이상의 AXI 슬레이브를 포함한다.
동작시, 처리 시스템(104)은 PCIe 엔드 포인트(218)를 통해 주변 회로(110)에 액세스한다. 처리 시스템(104)은 DMA 컨트롤러(404)에 의해 처리된 DMA 트랜잭션을 사용하여 주변 회로(110)에 데이터를 이동시키고 그로부터 데이터를 수신할 수 있다. 처리 시스템(104)은 주변 장치(들)(230)에 데이터를 직접 이동시키고 그로부터 데이터를 직접 수신할 수 있다. 처리 시스템(104)은 또한 메모리 컨트롤러(들)(410)에 데이터를 이동시키고 그로부터 데이터를 수신할 수 있다. 예를 들어, 처리 시스템(104)은 주변 장치(들)(230)로부터 데이터를 직접 송수신하는 대신, DMA 트랜잭션을 사용하여 RAM에 저장하기 위해 데이터를 메모리 컨트롤러(들)(410)에 이동시킬 수 있다. 주변 장치(들)(230)는 RAM에 저장된 데이터에 액세스하고 처리할 수 있다. 그런 다음, 처리 시스템(104)은 DMA 트랜잭션을 사용하여 RAM으로부터 처리된 데이터를 검색할 수 있다. 다른 예들에서, 하나 이상의 메모리 컨트롤러(들)(410)는 처리 시스템(104)에 의해 액세스 가능하지 않으며 주변 장치(들)(230)에 대해 비공개이다.
처리 시스템(104)은 또한 다른 인터페이스(들)(414)에 데이터를 직접 이동시키고 그로부터 데이터를 직접 수신할 수 있다. 대안적으로, 처리 시스템(104)은 다른 인터페이스(들)(414)로부터 데이터를 직접 송수신하는 대신, DMA 트랜잭션을 사용하여 RAM에 저장하기 위해 메모리 컨트롤러(들)(410)에 데이터를 이동시킬 수 있다. 다른 인터페이스(들)(414)는 RAM에 저장된 데이터에 액세스하고 처리할 수 있다. 그런 다음, 처리 시스템(104)은 DMA 트랜잭션을 사용하여 RAM으로부터 처리된 데이터를 검색할 수 있다. 다른 예들에서, 하나 이상의 다른 인터페이스(들)(414)는 처리 시스템(104)에 의해 액세스 가능하지 않으며 주변 장치(들)(230)에 대해 비공개이다.
도 5는 일 예에 따른 컴퓨팅 시스템(500)을 도시한 블록도이다. 컴퓨팅 시스템(500)은 하드웨어(504) 및 하드웨어(504) 상에서 실행되는 소프트웨어(506)를 포함한다. 하드웨어(504)는 적어도 처리 시스템(104) 및 프로그램 가능 IC(106)를 갖는 IC 패키지(102)를 포함한다(다른 IC(들)(120)는 명확성을 위해 도 5에서 생략됨). 하드웨어(504)는 또한 RAM(132), NVM(134), 지원 회로(138) 및 주변 장치(들)(136)와 같은 IC 패키지(102)에 결합된 회로를 포함한다. 소프트웨어(506)는 운영 체제(OS)(508), 드라이버 스택(510) 및 애플리케이션(512)을 포함한다. 처리 시스템(104)은 본 명세서에서 설명되고 RAM(132) 또는 다른 저장 장치에 저장될 수 있는 하나 이상의 동작을 수행하기 위해 소프트웨어(506)를 실행하도록 구성된다. 일 실시예에서, IC 패키지(102)는 처리 시스템(104)과 프로그램 가능 IC(106) 사이에 배치된 FIFO 버퍼를 포함할 수 있다(예를 들어, FIFO 버퍼는 처리 시스템(104) 및/또는 프로그램 가능 IC(106) 중 하나 또는 양자 모두에 배치될 수 있음).
OS(508)는 Linux®, Microsoft Windows®, Mac OS® 등과 같은 당 업계에 공지된 임의의 상용 운영 체제일 수 있다. 드라이버 스택(510)은 명령 및 제어를 위해 애플리케이션 프로그래밍 인터페이스(application programming interface; API)를 주변 회로(110)에 제공하는 드라이버 및 라이브러리를 포함한다. 애플리케이션(512)은 일부 작업을 수행하기 위해 드라이버 스택(510)을 통해 주변 회로(110)를 호출하는 소프트웨어를 포함한다. 애플리케이션(512)은 처리 시스템(104)으로부터 주변 회로(110)로 일부 기능을 오프로드하는 신경망, 비디오 처리, 네트워크 처리 유형의 애플리케이션 등을 포함할 수 있다. 애플리케이션(512)은 또한 주변 회로(110)의 기능을 변경하기 위해 프로그램 가능 IC(106)의 구성을 제어할 수 있다.
드라이버 스택(510)은 DMA 드라이버, 하드웨어 추상화 계층(hardware abstraction layer; HAL) 드라이버 및 런타임 라이브러리와 같은 다양한 라이브러리, 드라이버 등을 포함할 수 있다. 런타임 라이브러리는 애플리케이션(512)에서 사용하기 위한 API를 제공한다. 런타임 라이브러리는 애플리케이션(512)과 HAL 드라이버 사이의 인터페이스를 제공한다. HAL 드라이버도 마찬가지로 런타임 라이브러리에서 사용하기 위한 API를 포함한다. HAL 드라이버는 런타임 라이브러리와 DMA 드라이버 사이의 인터페이스를 제공한다. DMA 드라이버는 주변 회로(110)를 제어하기 위한 API를 포함한다. 특히, DMA 드라이버는 DMA 컨트롤러(404)를 통해 주변 장치(들)(230), 메모리 컨트롤러(들)(410) 및/또는 다른 인터페이스(들)(414)에 액세스하기 위한 API(들)를 포함한다.
도 6은 일 예에 따른 프로그램 가능 IC(106)를 도시한 블록도이다. 프로그램 가능 IC(106)는 프로그램 가능 로직(3), 구성 로직(25) 및 구성 메모리(26)를 포함한다. 프로그램 가능 로직(3)은 로직 셀(30), 지원 회로(31) 및 프로그램 가능 인터커넥트(32)를 포함한다. 로직 셀(30)은 복수의 입력의 일반적인 논리 기능을 구현하도록 구성될 수 있는 회로를 포함한다. 지원 회로(31)는 트랜스시버, 입출력 블록, 디지털 신호 프로세서, 메모리 등과 같은 전용 회로를 포함한다. 지원 회로(31)는 로직 셀(30)로의 입력 및 출력을 위한 FIFO 버퍼를 포함할 수 있다. 로직 셀 및 지원 회로(31)는 프로그램 가능 인터커넥트(32)를 사용하여 상호 연결될 수 있다. 로직 셀(30)을 프로그래밍하고, 지원 회로(31)의 파라미터를 설정하며, 프로그램 가능 인터커넥트(32)를 프로그래밍하기 위한 정보가 구성 로직(25)에 의해 구성 메모리(26)에 저장된다. 구성 로직(25)은 비휘발성 메모리(27) 또는 임의의 다른 소스(예를 들어, DRAM(28) 또는 다른 회로(29))로부터 구성 데이터를 획득할 수 있다. 일부 예들에서, 프로그램 가능 IC(106)는 처리 시스템(2)을 포함한다. 처리 시스템(2)은 마이크로프로세서(들), 메모리, 지원 회로, IO 회로 등을 포함할 수 있다. 처리 시스템(2)은 IC 패키지(102)의 처리 시스템(104)과 구별하기 위해 "임베디드" 처리 시스템으로 지칭될 수 있다.
도 7은 일 예에 따른 프로그램 가능 IC(106)의 시스템 온 칩(SoC) 구현을 도시한 블록도이다. 이 예에서, 프로그램 가능 IC(106)는 처리 시스템(2) 및 프로그램 가능 로직(3)을 포함한다. 처리 시스템(2)은 실시간 처리 장치(real-time processing unit; RPU)(4), 애플리케이션 처리 장치(application processing unit; APU)(5), 그래픽 처리 장치(graphics processing unit; GPU)(6), 구성 및 보안 장치(configuration and security unit; CSU)(12), 플랫폼 관리 장치(platform management unit; PMU)(11) 등과 같은 다양한 처리 장치를 포함한다. 처리 시스템(2)은 또한 온 칩 메모리(on-chip memory; OCM)(14), 트랜스시버(7), 주변 장치(8), 인터커넥트(16), DMA 회로(9), 메모리 컨트롤러(10), 주변 장치(15), 및 다중화 IO(multiplexed IO; MIO) 회로(13)와 같은 다양한 지원 회로를 포함한다. 처리 장치 및 지원 회로는 인터커넥트(16)에 의해 상호 연결된다. PL(3)은 또한 인터커넥트(16)에 결합된다. 트랜스시버(7)는 외부 핀(24)에 결합된다. PL(3)은 외부 핀(23)에 결합된다. 메모리 컨트롤러(10)는 외부 핀(22)에 결합된다. MIO(13)는 외부 핀(20)에 결합된다. PS(2)는 일반적으로 외부 핀(21)에 결합된다. APU(5)는 CPU(17), 메모리(18) 및 지원 회로(19)를 포함할 수 있다.
도 7의 예에서, 주변 회로(110)는 PL(3)에 배치된 프로그램 회로, 경화 회로 또는 이들의 조합을 포함할 수 있다. 다른 예에서, 주변 회로(110)의 일부가 PS(2)를 사용하여 구현될 수 있다. 다른 예에서, PS(2)는 주변 회로(110)의 다른 인터페이스(들)(414)를 통해 액세스 가능할 수 있다. 이러한 예에서, 처리 시스템(104) 및/또는 주변 장치(들)(230)는 PS(2)에 액세스할 수 있다.
PS(2)를 참조하면, 각각의 처리 장치는 하나 이상의 CPU 및 메모리, 인터럽트 컨트롤러, DMA 컨트롤러, 메모리 관리 장치(MMU), 부동 소수점 장치(floating point unit; FPU) 등과 같은 관련 회로를 포함한다. 인터커넥트(16)는 처리 장치를 상호 연결할 뿐만 아니라 PS(2)의 다른 컴포넌트를 처리 장치에 상호 연결하도록 구성된 다양한 스위치, 버스, 통신 링크 등을 포함한다.
OCM(14)은 하나 이상의 RAM 모듈을 포함하며, 이들은 PS(2) 전체에 분배될 수 있다. 예를 들어, OCM(14)은 BBRAM(battery backed RAM), TCM(tightly coupled memory) 등을 포함할 수 있다. 메모리 컨트롤러(10)는 외부 DRAM에 액세스하기 위한 DRAM 인터페이스를 포함할 수 있다. 주변 장치(8, 15)는 PS(2)에 인터페이스를 제공하는 하나 이상의 컴포넌트를 포함할 수 있다. 예를 들어, 주변 장치(136)는 그래픽 처리 장치(GPU), 디스플레이 인터페이스(예를 들어, DisplayPort, HDMI(High-Definition Multimedia Interface) 포트 등), 범용 직렬 버스(universal serial bus; USB) 포트, 이더넷 포트, 범용 비동기식 트랜스시버(universal asynchronous transceiver; UART) 포트, 직렬 주변 장치 인터페이스(serial peripheral interface; SPI) 포트, 범용 IO(general purpose IO; GPIO) 포트, 직렬 고급 기술 결합(serial advanced technology attachment; SATA) 포트, PCIe 포트 등을 포함할 수 있다. 주변 장치(15)는 MIO(13)에 결합될 수 있다. 주변 장치(8)는 트랜스시버(7)에 결합될 수 있다. 트랜스시버(7)는 시리얼라이저/디시리얼라이저(serializer/deserializer; SERDES) 회로, MGT 등을 포함할 수 있다.
도 8은 프로그램 가능 IC(106)의 필드 프로그램 가능 게이트 어레이(FPGA) 구현을 도시한다. 도 7에 도시된 프로그램 가능 IC(106)의 SoC 구현의 PL(3)은 또한 도 8에 도시된 구조를 가질 수 있다. FPGA 구현은 트랜스시버(37), 구성 가능 로직 블록("CLB")(33), 랜덤 액세스 메모리 블록("BRAM")(34), 입출력 블록("IOB")(36), 구성 및 클럭킹 로직("CONFIG/CLOCKS")(42), 디지털 신호 처리 블록("DSP")(35), 특수 입출력 블록("I/O")(41)(예를 들어, 구성 포트 및 클럭 포트) 및 디지털 클럭 관리자, 아날로그-디지털 변환기, 시스템 모니터링 로직 등과 같은 기타 프로그램 가능 로직(39)을 포함한 다양한 상이한 프로그램 가능 타일을 포함힌다. FPGA는 또한 PCIe 인터페이스(40), 아날로그-디지털 변환기(ADC)(38) 등을 포함할 수 있다.
일부 FPGA에서, 각각의 프로그램 가능 타일은 도 8의 상단에 포함된 예에 의해 도시된 바와 같이, 동일한 타일 내의 프로그램 가능 로직 요소의 입력 및 출력 단자(48)에 연결되는 적어도 하나의 프로그램 가능 인터커넥트 요소("INT")(43)를 포함할 수 있다. 각각의 프로그램 가능 인터커넥트 요소(43)는 또한 동일한 타일 또는 다른 타일(들)에서의 인접한 프로그램 가능 인터커넥트 요소(들)의 인터커넥트 세그먼트(49)에 대한 연결을 포함할 수 있다. 각각의 프로그램 가능 인터커넥트 요소(43)는 또한 로직 블록(도시되지 않음) 사이의 일반적인 라우팅 자원의 인터커넥트 세그먼트(50)에 대한 연결을 포함할 수 있다. 일반적인 라우팅 자원은 인터커넥트 세그먼트(예를 들어, 인터커넥트 세그먼트(50))의 트랙을 포함하는 로직 블록(도시되지 않음)과 인터커넥트 세그먼트를 연결하기 위한 스위치 블록(도시되지 않음) 사이의 라우팅 채널을 포함할 수 있다. 일반적인 라우팅 자원의 인터커넥트 세그먼트(예를 들어, 인터커넥트 세그먼트(50))는 하나 이상의 로직 블록에 걸쳐 있을 수 있다. 일반적인 라우팅 자원과 함께 취해진 프로그램 가능 인터커넥트 요소(43)는 도시된 FPGA를 위한 프로그램 가능 인터커넥트 구조("프로그램 가능 인터커넥트")를 구현한다.
예시적인 구현에서, CLB(33)는 사용자 로직을 구현하도록 프로그래밍될 수 있는 구성 가능 로직 요소("CLE")(44) 및 단일 프로그램 가능 인터커넥트 요소("INT")(43)를 포함할 수 있다. BRAM(34)은 하나 이상의 프로그램 가능 인터커넥트 요소에 더하여 BRAM 로직 요소("BRL")(45)를 포함할 수 있다. 일반적으로, 타일 내에 포함된 인터커넥트 요소의 수는 타일의 높이에 따라 다르다. 도시된 예에서, BRAM 타일은 5 개의 CLB와 동일한 높이를 갖지만, 다른 수(예를 들어, 4 개)도 사용될 수 있다. DSP 타일(35)은 적절한 수의 프로그램 가능 인터커넥트 요소에 더하여 DSP 로직 요소("DSPL")(46)를 포함할 수 있다. IOB(36)는 예를 들어 프로그램 가능 인터커넥트 요소(43)의 하나의 인스턴스에 더하여 입출력 로직 요소("I/O")(47)의 2 개의 인스턴스를 포함할 수 있다. 당업자에게 명백한 바와 같이, 예를 들어 I/O 로직 요소(47)에 연결된 실제 I/O 패드는 전형적으로 입출력 로직 요소(47)의 영역으로 한정되지 않는다.
도시된 예에서, (도 8에서 도시된) 다이의 중심 근처의 수평 영역은 구성 로직, 클럭 로직, 및 기타 제어 로직을 위해 사용된다. 이러한 수평 영역 또는 열로부터 연장되는 수직 열(51)은 FPGA의 폭에 걸쳐 클럭 및 구성 신호를 분배하는데 사용된다.
도 8에서 도시된 아키텍처를 활용한 일부 FPGA는 FPGA의 대부분을 구성하는 규칙적인 기둥형 구조를 방해하는 추가적인 로직 블록을 포함한다. 추가적인 로직 블록은 프로그램 가능 블록 및/또는 전용 로직일 수 있다.
도 8은 단지 예시적인 FPGA 아키텍처를 도시하기 위한 것임을 유념한다. 예를 들어, 도 8의 상단에 포함된 행 내의 로직 블록 수, 행의 상대적 폭, 행의 수 및 순서, 행 내에 포함된 로직 블록의 유형, 로직 블록의 상대적 크기 및 인터커넥트/로직 구현은 단순히 예시적인 것이다. 예를 들어, 실제의 FPGA에서는, 사용자 로직의 효율적인 구현을 용이하게 하기 위해 일반적으로 CLB가 나타날 때마다 하나 이상의 인접한 CLB 행이 포함되지만, 인접한 CLB 행의 수는 FPGA의 전체 크기에 따라 다르다.
도 9는 일 예에 따른 IC 패키지(102)에서 프로그램 가능 IC(106)를 동작시키는 방법(900)을 도시한 흐름도이다. 방법(900)의 양태는 상기 도 1 내지 도 8을 참조하여 이해될 수 있다. 방법(900)은 3 가지 주요 단계를 포함한다. 블록(902)에서, 프로그램 가능 IC(106)는 IC 패키지(102)의 전원 공급시에 구성된다. 블록(908)에서, 디바이스(들)는 프로그램 가능 IC(106)와 통신한다. 블록(916)에서, 프로그램 가능 IC(106)는 IC 패키지(102)의 전원이 켜진 동안 재구성된다. 프로그램 가능 IC(106)를 동작시키는 3 가지 주요 단계 각각에 대한 다양한 사용 사례가 존재한다.
IC 패키지(102)의 전원을 켤 때, 프로그램 가능 IC(106)를 구성하는데 사용될 수 있는 몇 가지 상이한 프로세스가 있다. 프로그램 가능 IC(106)의 구성 로직(25)은 다수의 상이한 구성 모드를 포함하는데, 이는 마스터 모드 및 슬레이브 모드로 분류될 수 있다. 마스터 모드에서, 구성 로직(25)은 구성 프로세스를 구동시킨다. 마스터 모드의 예에는 마스터 직렬 주변 장치 인터페이스(serial peripheral interface; SPI) 모드, 마스터 바이트 주변 장치 인터페이스(byte peripheral interface; BPI) 모드, 마스터 직렬 모드 및 마스터 SelectMAP 모드가 있다. 마스터 SPI 모드에서, 구성 로직(25)은 SPI 프로토콜을 사용하여 NVM으로부터 구성 비트 스트림을 로드한다. NVM은 IC 패키지(102) 내부에 있을 수 있거나(예를 들어, NVM(124)) IC 패키지(102) 외부에 있을 수 있다(예를 들어, NVM(134)). 마스터 BPI 모드는 유사하게 동작하지만, SPI 프로토콜 대신 BPI 프로토콜을 사용한다. 마스터 직렬 모드는 유사하게 동작하지만, 직렬 프로토콜을 사용한다. 마스터 SelectMAP 모드는 유사하게 동작하지만, 직렬 인터페이스가 아닌 병렬 인터페이스를 사용한다. 슬레이브 모드에서, 외부 디바이스가 구성 프로세스를 구동시킨다. 슬레이브 모드의 예에는 슬레이브 직렬 모드 및 슬레이브 SelectMAP 모드(병렬)가 있다. 이들 슬레이브 모드 중 하나에서, 외부 디바이스는 처리 시스템(104) 또는 일부 다른 마이크로프로세서 또는 마이크로 컨트롤러(예를 들어, IC 패키지(102) 내의 다른 IC(120)의 일부 또는 IC 패키지(102) 외부의 지원 회로(138))일 수 있다. 외부 디바이스는 메모리(예를 들어, NVM(124) 또는 NVM(134))로부터 구성 데이터를 판독하고, 구성 데이터를 구성 로직(25)에 공급한다.
블록(904)에서, 주변 회로(110)의 적어도 일부가 프로그램 가능 IC(106)에 구성된다. 임의의 다른 회로(224)가 존재하면, 그러한 다른 회로(224)의 전부 또는 일부가 또한 블록(904)에서 구성될 수 있다. 예를 들어, 주변 회로(110)의 정적 영역(302)은 블록(904)에서 구성될 수 있다. 블록(904)에서 프로그램 가능 IC(106)의 구성을 위해 임의의 마스터 또는 슬레이브 모드가 사용될 수 있다. 블록(904)에서의 구성은 전형적으로 하드웨어 구동되고, 즉 전력이 IC 패키지(102)에 인가되고 구성 프로세스는 구성 로직(25)(마스터 모드) 또는 외부 디바이스(슬레이브 모드)에 의해 수행된다.
일부 경우에, 주변 회로(110)의 일부(예를 들어, 정적 영역(302))만이 블록(904)에서 구성된다. 그러한 경우에, 주변 회로(110)의 나머지 부분은 블록(906)에서 구성될 수 있다. 블록(906)에서의 구성은 전술한 바와 같이 하드웨어 구동되거나 소프트웨어 구동될 수 있다. 소프트웨어 구동 프로세스에서, 예를 들어, 프로그램 가능 IC(106)는 처리 시스템(104)을 사용하여 MCAP(402)를 통해 주변 장치(들)(230)를 구현하도록 부분적으로 재구성될 수 있다.
블록(908)에서, 프로그램 가능 IC(106)와의 통신은 3 가지 일반 카테고리로 분할될 수 있다. 블록(910)에서, 처리 시스템(104)과 주변 회로(110) 사이의 통신이 수행된다. 블록(912)에서, 외부 디바이스(프로그램 가능 IC(106) 외부에 있음)와 주변 회로(110) 사이의 통신이 수행된다. 블록(914)에서, 내부 디바이스(프로그램 가능 IC(106) 내부에 있음)와 주변 회로(110) 사이의 통신이 수행된다.
블록(910)에서, 처리 시스템(104)은 PCIe 등과 같은 인터페이스를 통해 주변 회로(110)에 데이터를 전송 및/또는 주변 회로(110)로부터 데이터를 수신한다. 처리 시스템(104)은 인터페이스를 통해 주변 회로(110)에 데이터를 전달하기 위해 DMA 트랜잭션을 사용할 수 있다. 대안적으로, 처리 시스템(104)은 인터페이스를 통해 주변 회로(110)에 데이터를 스트리밍할 수 있다. 일부 경우에, 처리 시스템(104)은 공유 메모리를 통해 주변 회로(110)에 데이터를 간접적으로 제공할 수 있으며, 공유 메모리는 프로그램 가능 IC(106) 내부 또는 프로그램 가능 IC(106) 외부에 배치될 수 있다.
블록(912)에서, 프로그램 가능 IC(106) 외부의 디바이스는 주변 회로(110)와 통신한다. 예를 들어, 다른 IC(120), 지원 회로(138) 또는 주변 장치(136)의 회로는 주변 회로(110)와 직접 통신할 수 있다. 대안적으로, 이러한 회로는 공유 메모리를 통해 주변 회로(110)와 간접적으로 통신할 수 있으며, 공유 메모리는 프로그램 가능 IC(106) 내부 또는 프로그램 가능 IC(106) 외부에 배치될 수 있다.
블록(914)에서, 프로그램 가능 IC(106) 내부의 디바이스는 주변 회로(110)와 통신한다. 예를 들어, 다른 회로(224)의 회로는 주변 회로(110)와 직접 통신할 수 있다. 대안적으로, 이러한 회로는 공유 메모리를 통해 주변 회로(110)와 간접적으로 통신할 수 있으며, 공유 메모리는 프로그램 가능 IC(106) 내부 또는 프로그램 가능 IC(106) 외부에 배치될 수 있다. 이러한 회로는 프로그램 가능 IC(106)의 프로그램 가능 로직의 프로그램 회로일 수 있거나 또는 프로그램 가능 IC(106)의 경화 회로(예를 들어, 임베디드 처리 시스템)일 수 있다.
블록(916)에서, 프로그램 가능 IC(106)는 전력이 IC 패키지(102)에 인가되는 동안 재구성될 수 있다. 예를 들어, 블록(918)에서, 프로그램 가능 IC(106)는 블록(902)에 설명된 것과 유사한 프로세스를 사용하여 완전히 재구성될 수 있다. 대안적으로, 블록(920)에서, 프로그램 가능 IC(106)는 부분적으로 재구성될 수 있다. 예를 들어, 주변 회로(110)의 하나 이상의 주변 장치(들)(230)는 상이한 기능을 구현하도록 재구성될 수 있다.
도 10은 다른 예에 따른 IC 패키지(1002)를 도시한 블록도이다. 본 예에서, IC 패키지(1002)는 단일 반도체 다이 상에 형성된 처리 시스템(104) 및 프로그램 가능 IC(106)를 포함한다. 프로그램 가능 IC(106)는 전술한 바와 같이 주변 회로(110)를 포함한다. 프로그램 가능 IC(106)는 아래의 예에서 설명되는 바와 같이 하나 이상의 링 인터커넥트를 통해 처리 시스템(104)의 다른 컴포넌트에 결합된다. IC 패키지(1002)에서 처리 시스템(104)은 인터커넥트(1003)를 통해 패키지 인터페이스(1008)에 결합된다. 예에서, IC 패키지(1002)는 처리 시스템(104)에 결합된 하나 이상의 다른 IC(1020)를 포함할 수 있다. 따라서, 본 예는 프로그램 가능 IC(106)가 PCIe, QPI 등과 같은 인터페이스를 통하기보다는 처리 시스템(104) 내의 내부 링 인터커넥트에 결합된다는 점에서 도 1의 것과 상이하다.
도 11은 IC 패키지(1002)에서의 처리 시스템(104)의 예시적인 구현을 도시한 블록도이다. 본 예에서, 처리 시스템(104)은 CPU(202), 캐시 메모리(204) 및 인터페이스 회로(206)를 포함하며, 각각은 위의 예에서 설명된 바와 같이 링 인터커넥트(210)에 결합된다. 이 예에서 특히, 프로그램 가능 IC(106)가 또한 링 인터커넥트(210)에 결합된다. 주변 회로(110)는 프로그램 가능 IC(106)의 경화 회로, 프로그램 가능 IC(106)의 프로그램 가능 로직의 프로그램 회로, 또는 이들의 조합으로서 구현될 수 있다. 인터페이스 회로(206)는 전술한 바와 같이 PCIe 컨트롤러(214) 및 다른 컨트롤러(들)(216)를 포함한다. 대안적으로, PCIe 컨트롤러(214)는 임의의 다른 유사한 인터페이스 컨트롤러(예를 들어, QPI 컨트롤러)로 대체될 수 있다. 예에서, 처리 시스템(104)은 GPU(208)와 같은 링 인터커넥트(210)에 결합된 다른 컴포넌트(들)를 포함할 수 있다.
본 예에서, 프로그램 가능 IC(106)는 링 인터커넥트(210)에 결합된 처리 시스템(104)의 임의의 다른 컴포넌트(예를 들어, CPU(202), 캐시 메모리(204), 인터페이스 회로(206), GPU(208) 등)와 통신할 수 있다. 프로그램 가능 IC(106)는 인터페이스 회로(206)를 통해 처리 시스템(104) 외부의 회로에 의해 액세스될 수 있다.
도 12는 IC 패키지(1002)에서의 처리 시스템(104)의 다른 예시적인 구현을 도시한 블록도이다. 본 예에서, 프로그램 가능 IC(106)는 도 11의 예에서 전술한 바와 같이 링 인터커넥트(210)에 결합된다. 일 예에서, 프로그램 가능 IC(106)는 메모리(1202)(예를 들어, 랜덤 액세스 메모리(RAM)) 및/또는 캐시(1204)와 같은 전용 메모리를 포함한다. 전용 메모리(1202, 1204)는 링 인터커넥트(210)를 통해 직접 액세스할 수 없다. 다른 예에서, 프로그램 가능 IC(106)의 메모리(1202, 1204)는 링 인터커넥트(210)에 결합되고 링 인터커넥트(210)의 다른 컴포넌트에 의해 액세스될 수 있다. 어느 경우이든, 프로그램 가능 IC(106)는 처리 시스템(104) 외부의 회로에 의한 액세스를 위한 외부 인터페이스(1206)를 더 포함할 수 있다. 이것은 프로그램 가능 IC(106)가 인터페이스 회로(206)를 통해서만이 아니라 외부 인터페이스(1206)를 통해 직접 액세스될 수 있게 한다. 예를 들어, 외부 인터페이스(1206)는 프로그램 가능 IC(106)를 구성하기 위한 구성 인터페이스를 포함할 수 있다. 외부 인터페이스(1206)는 PCIe, QPI 등과 같은 임의의 유형의 인터페이스를 사용할 수 있다. 명확성을 위해, 선택적 GPU(208)는 생략되었지만, 도 11에 도시된 처리 시스템(104)에 포함될 수 있다.
도 13는 IC 패키지(1002)에서의 처리 시스템(104)의 또 다른 예시적인 구현을 도시한 블록도이다. 본 예에서, 처리 시스템(104)은 링 대 링 커넥터(1302)에 의해 결합된 2 개의 서브 링(210A 및 210B)을 포함한다. 링 대 링 커넥터(1302)는 라우터, 브리지 등일 수 있다. 프로그램 가능 IC(106)는 CPU(202), 캐시 메모리(204) 및 인터페이스 회로(206)와 함께 서브 링(210B)에 결합된다. CPU(202) 및 캐시 메모리(204)는 서브 링(210A)에 결합된다. 일 예에서, 다른 컴포넌트가 서브 링(210A 및/또는 201B)에 결합될 수 있다. 예를 들어, GPU(208)는 서브 링(210A)에 결합될 수 있다. 서브 링(210A, 210B)을 제외하고는, 도 13에 도시된 구성은 도 11의 구성과 유사하다. 본 구성은 충분히 큰 대역폭을 갖는 프로그램 가능 IC(106)를 지원할 수 있으며, 이 경우 링 인터커넥트(210)는 서브 링으로 분할되는 것이 유리하다.
처리 시스템과 프로그램 가능 IC를 결합할 때, 스트리밍 인터페이스를 사용하는 처리 시스템과 프로그램 가능 IC 간의 통신은 실시간 데이터 처리와 같은 다양한 애플리케이션에서 우수한 통신 모드이다. 대안은 직접 메모리 어드레싱이며, 이는 지배적인 통신 패러다임이다. 예들에서, 처리 시스템(104)과 프로그램 가능 IC(106) 사이의 연결은 메모리 어드레싱 모드에 부가하여 스트리밍 모드를 지원할 수 있다.
도 14는 스트리밍 인터페이스를 사용하여 통신하도록 구성된 IC 패키지(102)의 예시적인 구현을 도시한 블록도이다. 예에서, PCIe 컨트롤러(214) 및 PCIe 엔드 포인트(218) 각각은 하나 이상의 포트(들)(1402)를 포함한다. 한 모드에서, 포트(들)(1402)는 메모리 어드레싱을 사용하여 통신하도록 구성될 수 있다. 다른 모드에서, 포트(들)(1402)는 스트리밍 인터페이스를 사용하여 통신하도록 구성될 수 있다. 스트리밍 인터페이스의 예로는 AMBA® AXI4 스트리밍 인터페이스가 있지만, 다른 스트리밍 인터페이스를 사용할 수도 있다. 예에서, 포트(들)(1402)는 하나 이상의 스트리밍 인터페이스를 지원할 수 있다.
도 15는 스트리밍 인터페이스를 사용하여 통신하도록 구성된 IC 패키지(1002)의 예시적인 구현을 도시한 블록도이다. 예에서, 링 인터커넥트(210)에 결합된 각각의 컴포넌트는 하나 이상의 포트(들)(1402)를 포함할 수 있다. 한 모드에서, 포트(들)(1402)는 메모리 어드레싱을 사용하여 통신하도록 구성될 수 있다. 다른 모드에서, 포트(들)(1402)는 스트리밍 인터페이스를 사용하여 통신하도록 구성될 수 있다. 스트리밍 인터페이스의 예로는 AMBA® AXI4 스트리밍 인터페이스가 있지만, 다른 스트리밍 인터페이스를 사용할 수도 있다. 예에서, 포트(들)(1402)는 하나 이상의 스트리밍 인터페이스를 지원할 수 있다.
도 16은 일 예에 따른 주변 회로(110)를 보다 상세히 도시한 블록도이다. 이러한 주변 회로(110)의 예는 전술한 다양한 실시예들(예를 들어, 도 10 내지 도 15)에서 설명된 바와 같이, 프로그램 가능 IC(106)가 처리 시스템(104)과 동일한 IC 다이 상에 배치될 때 사용될 수 있다. 주변 회로(110)는 인터페이스 회로(1603) 및 주변 장치(들)(230)를 포함한다. 일 예에서, 인터페이스 회로(1603)는 링 인터페이스 회로(1602), DMA 컨트롤러(1604), 인터커넥트 회로("인터커넥트(1606)"), 메모리 컨트롤러(들)(1610), 메모리 인터페이스(들)(1612), 다른 인터페이스(들)(1614)를 포함한다. 인터페이스 회로(1603)는 명확성을 위해 생략된 다른 회로(예를 들어, 디커플러 회로, 디버그 회로 등)를 포함할 수 있다. 링 인터페이스 회로(1602)는 링 인터커넥트(210)에 물리적인 인터페이스를 제공한다. 링 인터페이스 회로(1602)는 링 인터커넥트(210)의 프로토콜과 인터커넥트(1606)의 프로토콜 사이에서 변환한다. DMA 컨트롤러(1604)는 처리 시스템(104)과 주변 회로(110) 사이의 DMA 동작을 용이하게 한다. 일부 예들에서, DMA 컨트롤러(1604)는 생략될 수 있고, 링 인터페이스 회로(1602)는 인터커넥트(1606)에 결합될 수 있다.
인터커넥트(1606)는 DMA 컨트롤러(1604), 주변 장치(들)(230), 메모리 컨트롤러(들)(1610) 및 다른 인터페이스(들)(1614)를 결합한다. 메모리 컨트롤러(들)(1610)는 메모리 인터페이스(들)(1612)에 결합된다. 메모리 인터페이스(들)(1612)는 프로그램 가능 IC(106) 외부의 RAM, 프로그램 가능 IC(106) 내부의 RAM(예를 들어, 메모리(1202) 및/또는 캐시(1204)) 또는 이들의 조합에 결합될 수 있다. 다른 인터페이스(들)(1614)는 프로그램 가능 IC(106)의 다른 회로(예를 들어, 다른 경화 회로 및/또는 프로그램 회로)에 결합될 수 있다.
예들에서, 인터커넥트(1606)는 ARM® AMBA®(Advanced Microcontroller Bus Architecture) 표준의 일부로서 정의된 AXI 인터커넥트를 사용하여 구현된다. 예를 들어, 인터커넥트(1606)는 AXI4, AXI4-Lite 및 AXI4-Stream 프로토콜을 지원할 수 있다. DMA 컨트롤러(1604), 주변 장치(들)(230), 다른 인터페이스(들)(1614) 및 메모리 컨트롤러(들)(1610) 각각은 서로 통신하기 위한 하나 이상의 AXI 마스터 및 하나 이상의 AXI 슬레이브를 포함한다.
동작시, 처리 시스템(104)은 링 인터페이스 회로(1602)를 통해 주변 회로(110)에 액세스한다. 처리 시스템(104)은 메모리 매핑 또는 스트리밍 트랜잭션을 사용하여 주변 회로(110)에 데이터를 이동시키고 그로부터 데이터를 수신할 수 있다. 처리 시스템(104)은 주변 장치(들)(230)에 데이터를 직접 이동시키고 그로부터 데이터를 직접 수신할 수 있다. 처리 시스템(104)은 또한 메모리 컨트롤러(들)(1610)에 데이터를 이동시키고 그로부터 데이터를 수신할 수 있다. 예를 들어, 처리 시스템(104)은 주변 장치(들)(230)로부터 데이터를 직접 송수신하는 대신, DMA 트랜잭션을 사용하여 RAM에 저장하기 위해 데이터를 메모리 컨트롤러(들)(1610)에 이동시킬 수 있다. 주변 장치(들)(230)는 RAM에 저장된 데이터에 액세스하고 처리할 수 있다. 그런 다음, 처리 시스템(104)은 RAM으로부터 처리된 데이터를 검색할 수 있다. 다른 예들에서, 하나 이상의 메모리 컨트롤러(들)(1610)는 처리 시스템(104)에 의해 액세스 가능하지 않으며 주변 장치(들)(230)에 대해 비공개이다.
처리 시스템(104)은 또한 다른 인터페이스(들)(1614)에 데이터를 직접 이동시키고 그로부터 데이터를 직접 수신할 수 있다. 대안적으로, 처리 시스템(104)은 다른 인터페이스(들)(1614)로부터 데이터를 직접 송수신하는 대신, RAM에 저장하기 위해 메모리 컨트롤러(들)(1610)에 데이터를 이동시킬 수 있다. 다른 인터페이스(들)(1614)는 RAM에 저장된 데이터에 액세스하고 처리할 수 있다. 그런 다음, 처리 시스템(104)은 RAM으로부터 처리된 데이터를 검색할 수 있다. 다른 예들에서, 하나 이상의 다른 인터페이스(들)(1614)는 처리 시스템(104)에 의해 액세스 가능하지 않으며 주변 장치(들)(230)에 대해 비공개이다.
도 17은 일 예에 따른 처리 시스템(104)에서 프로그램 가능 IC(106)를 동작시키는 방법(1700)을 도시한 흐름도이다. 방법(900)의 양태는 도 10 내지 도 16(즉, 프로그램 가능 IC(106)가 처리 시스템(104)과 동일한 IC 다이 상에 배치된 경우)을 참조하여 이해될 수 있다. 방법(1700)은 3 가지 주요 단계를 포함한다. 블록(1702)에서, 프로그램 가능 IC(106)는 처리 시스템(104)의 전원 공급시에 구성된다. 블록(1708)에서, 디바이스(들)는 프로그램 가능 IC(106)와 통신한다. 블록(1716)에서, 프로그램 가능 IC(106)는 IC 패키지(102)의 전원이 켜진 동안 재구성된다. 프로그램 가능 IC(106)를 동작시키는 3 가지 주요 단계 각각에 대한 다양한 사용 사례가 존재한다.
처리 시스템(104)의 전원을 켤 때, 프로그램 가능 IC(106)를 구성하는데 사용될 수 있는 몇 가지 상이한 프로세스가 있다. 마스터 구성 모드는 처리 시스템(104) 내에 배치되거나 처리 시스템(104) 외부에 배치된 NVM을 사용하여 프로그램 가능 IC(106)를 구성하는데 사용될 수 있다. 슬레이브 구성 모드는 CPU(202)를 사용하거나 또는 처리 시스템(104) 상에 배치된 다른 디바이스를 사용하거나 또는 처리 시스템(104) 외부의 디바이스를 사용하여 프로그램 가능 IC(106)를 구성하는데 사용될 수 있다.
블록(1704)에서, 주변 회로(110)의 적어도 일부가 프로그램 가능 IC(106)에 구성된다. 임의의 다른 회로가 존재하면, 그러한 다른 회로(224)의 전부 또는 일부가 또한 블록(1704)에서 구성될 수 있다. 블록(1704)에서 프로그램 가능 IC(106)의 구성을 위해 임의의 마스터 또는 슬레이브 모드가 사용될 수 있다. 블록(1704)에서의 구성은 전형적으로 하드웨어 구동되고, 즉 전력이 처리 시스템(104)에 인가되고 구성 프로세스는 구성 로직(25)(마스터 모드) 또는 외부 디바이스(슬레이브 모드)에 의해 수행된다.
일부 경우에, 주변 회로(110)의 일부만이 블록(904)에서 구성된다. 그러한 경우에, 주변 회로(110)의 나머지 부분은 블록(1706)에서 구성될 수 있다. 블록(1706)에서의 구성은 전술한 바와 같이 하드웨어 구동되거나 소프트웨어 구동될 수 있다. 소프트웨어 구동 프로세스에서, 예를 들어, 프로그램 가능 IC(106)는 CPU(202)를 사용하여 내부 구성 액세스 포트(internal configuration access port; ICAP)(1616)(도 16)를 통해 주변 장치(들)(230)를 구현하도록 부분적으로 재구성될 수 있다.
블록(1708)에서, 프로그램 가능 IC(106)와의 통신은 3 가지 일반 카테고리로 분할될 수 있다. 블록(1710)에서, CPU(202)와 주변 회로(110) 사이의 통신이 수행된다. 블록(1712)에서, 외부 디바이스(프로그램 가능 IC(106) 외부에 있음)와 주변 회로(110) 사이의 통신이 수행된다. 블록(1714)에서, 내부 디바이스(프로그램 가능 IC(106) 내부에 있음)와 주변 회로(110) 사이의 통신이 수행된다.
블록(1710)에서, CPU(202)는 링 인터커넥트(210)를 통해 주변 회로(110)에 데이터를 전송 및/또는 주변 회로(110)로부터 데이터를 수신한다. 처리 시스템(104)은 링 인터커넥트(210)를 통해 주변 회로(110)에 데이터를 전달하기 위해 메모리 매핑 또는 스트리밍 트랜잭션을 사용할 수 있다. 일부 경우에, 처리 시스템(104)은 공유 메모리를 통해 주변 회로(110)에 데이터를 간접적으로 제공할 수 있으며, 공유 메모리는 프로그램 가능 IC(106) 내부 또는 프로그램 가능 IC(106) 외부에 배치될 수 있다.
블록(1712)에서, 프로그램 가능 IC(106) 외부의 디바이스는 주변 회로(110)와 통신한다. 외부 디바이스는 처리 시스템(104) 내부(예를 들어, 링 인터커넥트(210) 상에 있음) 또는 처리 시스템(104) 외부에 배치될 수 있다. 대안적으로, 이러한 회로는 공유 메모리를 통해 주변 회로(110)와 간접적으로 통신할 수 있으며, 공유 메모리는 프로그램 가능 IC(106) 내부 또는 프로그램 가능 IC(106) 외부에 배치될 수 있다.
블록(1714)에서, 프로그램 가능 IC(106) 내부의 디바이스는 주변 회로(110)와 통신한다. 예를 들어, 프로그램 가능 IC(106)의 프로그램 회로 또는 경화 회로는 주변 회로(110)와 직접 통신할 수 있다. 대안적으로, 이러한 회로는 공유 메모리를 통해 주변 회로(110)와 간접 통신할 수 있으며, 공유 메모리는 프로그램 가능 IC(106) 내부 또는 프로그램 가능 IC(106) 외부에 배치될 수 있다.
블록(1716)에서, 프로그램 가능 IC(106)는 전력이 처리 시스템(104)에 인가되는 동안 재구성될 수 있다. 예를 들어, 블록(1718)에서, 프로그램 가능 IC(106)는 블록(1702)에 설명된 것과 유사한 프로세스를 사용하여 완전히 재구성될 수 있다. 대안적으로, 블록(1720)에서, 프로그램 가능 IC(106)는 부분적으로 재구성될 수 있다. 예를 들어, 주변 회로(110)의 하나 이상의 주변 장치(들)(230)는 상이한 기능을 구현하도록 재구성될 수 있다.
앞서 말한 것은 특정 예에 관한 것이지만, 본 발명의 기본 범위를 벗어나지 않고 다른 예 및 추가의 예가 고안될 수 있으며, 그 범위는 다음의 청구 범위에 의해 결정된다.

Claims (15)

  1. 집적 회로(integrated circuit; IC) 패키지에 있어서,
    기판 상에 배치된 처리 시스템 및 프로그램 가능 IC
    를 포함하고, 상기 처리 시스템은 상기 기판의 인터커넥트를 통해 상기 프로그램 가능 IC에 결합되고,
    상기 처리 시스템은 링 인터커넥트에 결합된 컴포넌트를 포함하며, 상기 컴포넌트는 프로세서 및 인터페이스 컨트롤러를 포함하고,
    상기 프로그램 가능 IC는 상기 인터커넥트를 통해 상기 인터페이스 컨트롤러에 결합된 인터페이스 엔드 포인트; 및 상기 인터페이스 엔드 포인트에 결합되고 상기 인터페이스 엔드 포인트 및 상기 인터페이스 컨트롤러를 통해 상기 처리 시스템의 상기 링 인터커넥트와 통신하도록 구성된 적어도 하나의 주변 장치를 포함하는 것인, IC 패키지.
  2. 제 1 항에 있어서, 상기 프로그램 가능 IC는 프로그램 가능 패브릭을 포함하는 것인, IC 패키지.
  3. 제 2 항에 있어서, 상기 프로그램 가능 IC는 상기 프로그램 가능 패브릭에 결합된 임베디드 처리 시스템을 포함하는 것인, IC 패키지.
  4. 제 2 항에 있어서, 상기 적어도 하나의 주변 장치는 상기 프로그램 가능 패브릭으로 프로그래밍되는 것인, IC 패키지.
  5. 제 1 항에 있어서, 상기 인터페이스 컨트롤러 및 상기 인터페이스 엔드 포인트는 각각 적어도 하나의 스트리밍 인터페이스를 사용하여 통신하도록 구성된 하나 이상의 포트를 포함하는 것인, IC 패키지.
  6. 제 1 항에 있어서, 상기 기판은 패키지 인터페이스를 포함하고, 상기 프로그램 가능 IC는 상기 패키지 인터페이스에 결합되는 것인, IC 패키지.
  7. 제 1 항에 있어서,
    상기 처리 시스템 및 상기 프로그램 가능 IC에 결합된 하나 이상의 다른 IC
    를 더 포함하는 IC 패키지.
  8. 집적 회로(IC) 패키지에 있어서,
    반도체 다이 상에 배치된 처리 시스템 및 프로그램 가능 IC
    를 포함하고, 상기 처리 시스템은 링 인터커넥트에 결합된 컴포넌트를 포함하고, 상기 컴포넌트는 프로세서 및 인터페이스 회로를 포함하며;
    상기 프로그램 가능 IC는 상기 링 인터커넥트에 결합되고 상기 링 인터커넥트와 통신하도록 구성된 적어도 하나의 주변 장치를 포함하는 것인, IC 패키지.
  9. 제 8 항에 있어서, 상기 프로그램 가능 IC는 프로그램 가능 패브릭을 포함하는 것인, IC 패키지.
  10. 제 9 항에 있어서, 상기 프로그램 가능 IC는 상기 프로그램 가능 패브릭에 결합된 임베디드 처리 시스템을 포함하는 것인, IC 패키지.
  11. 제 9 항에 있어서, 상기 적어도 하나의 주변 장치는 상기 프로그램 가능 패브릭으로 프로그래밍되는 것인, IC 패키지.
  12. 제 8 항에 있어서, 상기 프로세서 및 상기 프로그램 가능 IC는 각각 적어도 하나의 스트리밍 인터페이스를 사용하여 통신하도록 구성된 하나 이상의 포트를 포함하는 것인, IC 패키지.
  13. 집적 회로(integrated circuit; IC) 패키지에 있어서,
    반도체 다이 상에 배치된 처리 시스템 및 프로그램 가능 IC
    를 포함하고, 상기 처리 시스템은 링 인터커넥트에 결합된 컴포넌트를 포함하고, 상기 컴포넌트는 프로세서, 인터페이스 회로 및 메모리를 포함하며;
    상기 프로그램 가능 IC는 상기 링 인터커넥트에 결합되고 상기 링 인터커넥트와 통신하도록 구성된 적어도 하나의 주변 장치 및 적어도 하나의 메모리를 포함하는 것인, IC 패키지.
  14. 제 13 항에 있어서, 상기 프로그램 가능 IC의 상기 적어도 하나의 메모리는 상기 링 인터커넥트에 결합되지 않는 것인, IC 패키지.
  15. 제 13 항에 있어서, 상기 프로그램 가능 IC의 상기 적어도 하나의 메모리는 상기 링 인터커넥트에 결합되는 것인, IC 패키지.
KR1020207011292A 2017-09-28 2018-09-24 집적 회로 패키지에 프로그램 가능 디바이스 및 처리 시스템의 통합 Active KR102759135B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/719,288 2017-09-28
US15/719,288 US10573598B2 (en) 2017-09-28 2017-09-28 Integration of a programmable device and a processing system in an integrated circuit package
PCT/US2018/052413 WO2019067352A1 (en) 2017-09-28 2018-09-24 INTEGRATION OF A PROGRAMMABLE DEVICE AND A PROCESSING SYSTEM IN AN INTEGRATED CIRCUIT BOX

Publications (2)

Publication Number Publication Date
KR20200062244A true KR20200062244A (ko) 2020-06-03
KR102759135B1 KR102759135B1 (ko) 2025-01-22

Family

ID=63858108

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207011292A Active KR102759135B1 (ko) 2017-09-28 2018-09-24 집적 회로 패키지에 프로그램 가능 디바이스 및 처리 시스템의 통합

Country Status (6)

Country Link
US (2) US10573598B2 (ko)
EP (2) EP3688604B1 (ko)
JP (3) JP7244497B2 (ko)
KR (1) KR102759135B1 (ko)
CN (2) CN111183419B (ko)
WO (1) WO2019067352A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220091132A (ko) * 2020-12-23 2022-06-30 주식회사 뉴티씨 (Newtc) Avr 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11320995B2 (en) * 2018-10-31 2022-05-03 Western Digital Technologies, Inc. Transferring computational operations to controllers of data storage devices
US10673439B1 (en) 2019-03-27 2020-06-02 Xilinx, Inc. Adaptive integrated programmable device platform
US11474826B1 (en) * 2019-04-18 2022-10-18 Xilinx, Inc. Boot image file having a global partition for data processing engines of a programmable device
US10990547B2 (en) * 2019-08-11 2021-04-27 Xilinx, Inc. Dynamically reconfigurable networking using a programmable integrated circuit
US11580057B2 (en) 2019-10-28 2023-02-14 Xilinx, Inc. Subsystem for configuration, security, and management of an adaptive system
US10720926B1 (en) 2019-11-13 2020-07-21 Xilinx, Inc. Programmable device having hardened circuits for predetermined digital signal processing functionality
US11481317B2 (en) 2020-06-26 2022-10-25 Micron Technology, Inc. Extended memory architecture
US11456951B1 (en) 2021-04-08 2022-09-27 Xilinx, Inc. Flow table modification for network accelerators
US11606317B1 (en) 2021-04-14 2023-03-14 Xilinx, Inc. Table based multi-function virtualization
US11971845B2 (en) * 2022-06-16 2024-04-30 Bae Systems Information And Electronic Systems Integration Inc. DSP encapsulation
CN114880267B (zh) * 2022-07-11 2022-10-04 南京芯驰半导体科技有限公司 一种多芯片互联系统及其方法
US20240118671A1 (en) * 2022-10-10 2024-04-11 Schneider Electric Systems Usa, Inc. Systems and methods for using memory-mapped memories in a microcontroller-based instrument
DE102024110515A1 (de) * 2024-04-15 2025-10-16 SECOR Supply Chain Transparency GmbH Verfahren zum Anpassen eines integrierten Schaltkreises eines Vehikels

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7187709B1 (en) * 2002-03-01 2007-03-06 Xilinx, Inc. High speed configurable transceiver architecture
KR20160096690A (ko) * 2013-12-12 2016-08-16 마벨 월드 트레이드 리미티드 인트라-칩과 인터-칩 호핑 버스들을 통한 시스템-온-칩들 내의 그리고 시스템-온-칩들 간의 정보 전달을 위한 방법 및 장치
US20170153892A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Instruction And Logic For Programmable Fabric Hierarchy And Cache

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6120349A (ja) * 1984-07-06 1986-01-29 Hitachi Ltd Lsi集合体
US5642058A (en) * 1995-10-16 1997-06-24 Xilinx , Inc. Periphery input/output interconnect structure
JPH10209281A (ja) * 1997-01-17 1998-08-07 Fujitsu Ltd フィールド・プログラマブル・ゲートアレイ
US6088421A (en) * 1998-07-28 2000-07-11 Intel Corporation Method and apparatus for providing scaled ratio counters to obtain agent profiles
JP2002016489A (ja) 2000-06-30 2002-01-18 Fuji Xerox Co Ltd プログラマブル論理回路装置、及び情報処理システム
US20030172189A1 (en) * 2001-07-02 2003-09-11 Globespanvirata Incorporated Communications system using rings architecture
US6798239B2 (en) 2001-09-28 2004-09-28 Xilinx, Inc. Programmable gate array having interconnecting logic to support embedded fixed logic circuitry
US7551564B2 (en) * 2004-05-28 2009-06-23 Intel Corporation Flow control method and apparatus for single packet arrival on a bidirectional ring interconnect
JP4678717B2 (ja) * 2004-12-27 2011-04-27 ルネサスエレクトロニクス株式会社 半導体装置及び半導体装置の設計方法
US7925802B2 (en) * 2007-06-21 2011-04-12 Seamicro Corp. Hardware-based virtualization of BIOS, disks, network-interfaces, and consoles using a direct interconnect fabric
JP2011054041A (ja) 2009-09-03 2011-03-17 Fuji Xerox Co Ltd 画像処理装置
US8914672B2 (en) * 2009-12-28 2014-12-16 Intel Corporation General purpose hardware to replace faulty core components that may also provide additional processor functionality
US9037688B2 (en) * 2011-12-27 2015-05-19 Intel Mobile Communications GmbH System having trace resources
JP2015061164A (ja) * 2013-09-18 2015-03-30 株式会社リコー 電子機器、データ通信システム、および情報処理方法
JP2015091045A (ja) * 2013-11-06 2015-05-11 シグナル・プロセス・ロジック株式会社 プログラマブルロジックデバイスおよびこれを用いたコンピュータ
CN103678250B (zh) * 2013-12-31 2017-04-05 赵建东 系统级芯片及其设计方法
JP6504764B2 (ja) * 2014-08-18 2019-04-24 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、及びプログラム
US10523585B2 (en) * 2014-12-19 2019-12-31 Amazon Technologies, Inc. System on a chip comprising multiple compute sub-systems
WO2017005330A1 (en) * 2015-07-09 2017-01-12 Hitachi Data Systems Engineering UK Limited Storage control system managing file-level and block-level storage services, and methods for controlling such storage control system
US9880966B1 (en) * 2015-09-03 2018-01-30 Xilinx, Inc. Encapsulating metadata of a platform for application-specific tailoring and reuse of the platform in an integrated circuit
JP2017069777A (ja) * 2015-09-30 2017-04-06 株式会社日立製作所 通信処理装置、通信方法および通信システム
US10229470B2 (en) * 2016-08-05 2019-03-12 Intel IP Corporation Mechanism to accelerate graphics workloads in a multi-core computing architecture
US10540318B2 (en) * 2017-04-09 2020-01-21 Intel Corporation Graphics processing integrated circuit package
US10102149B1 (en) * 2017-04-17 2018-10-16 Intel Corporation Replacement policies for a hybrid hierarchical cache
US11080810B2 (en) * 2017-04-21 2021-08-03 Intel Corporation Dynamically reconfigurable memory subsystem for graphics processors
US20180329855A1 (en) * 2017-05-12 2018-11-15 Intel Corporation Alternate protocol negotiation in a high performance interconnect
US11394649B2 (en) * 2018-06-29 2022-07-19 Intel Corporation Non-random flowlet-based routing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7187709B1 (en) * 2002-03-01 2007-03-06 Xilinx, Inc. High speed configurable transceiver architecture
KR20160096690A (ko) * 2013-12-12 2016-08-16 마벨 월드 트레이드 리미티드 인트라-칩과 인터-칩 호핑 버스들을 통한 시스템-온-칩들 내의 그리고 시스템-온-칩들 간의 정보 전달을 위한 방법 및 장치
US20170153892A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Instruction And Logic For Programmable Fabric Hierarchy And Cache

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220091132A (ko) * 2020-12-23 2022-06-30 주식회사 뉴티씨 (Newtc) Avr 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법

Also Published As

Publication number Publication date
EP3688604B1 (en) 2023-08-23
EP3688604A1 (en) 2020-08-05
EP4254214A3 (en) 2023-12-13
JP7244497B2 (ja) 2023-03-22
CN111183419B (zh) 2024-04-16
JP2020535659A (ja) 2020-12-03
CN118295958A (zh) 2024-07-05
JP7599514B2 (ja) 2024-12-13
JP2024161478A (ja) 2024-11-19
US10573598B2 (en) 2020-02-25
JP2023078246A (ja) 2023-06-06
US20190096813A1 (en) 2019-03-28
US11024583B2 (en) 2021-06-01
EP4254214A2 (en) 2023-10-04
US20200161247A1 (en) 2020-05-21
WO2019067352A1 (en) 2019-04-04
CN111183419A (zh) 2020-05-19
KR102759135B1 (ko) 2025-01-22

Similar Documents

Publication Publication Date Title
JP7599514B2 (ja) 集積回路パッケージへのプログラマブルデバイスおよび処理システムの集積
KR102827630B1 (ko) 프로그래머블 디바이스를 위한 구성 가능한 네트워크-온-칩
US11182110B1 (en) On-chip memory block circuit
CN108139916B (zh) 可编程逻辑设备的多阶段引导映像加载和配置
JP2018531461A6 (ja) マルチステージブートイメージロードおよびプログラマブルロジックデバイスの構成
US20170097910A1 (en) Direct memory access for programmable logic device configuration
US10936486B1 (en) Address interleave support in a programmable device
JP7402798B2 (ja) データセンタにおけるプログラマブルデバイス向けのセキュリティ
KR102851915B1 (ko) 프로그래밍가능 디바이스 구성 메모리 시스템
US11327899B1 (en) Hardware-based virtual-to-physical address translation for programmable logic masters in a system on chip
US11474555B1 (en) Data-driven platform characteristics capture and discovery for hardware accelerators
US11874768B1 (en) Flash memory emulation

Legal Events

Date Code Title Description
E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

A201 Request for examination
PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U12-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000