KR101496072B1 - 프로그래머블 회로 및 내장형 프로세서 시스템을 구비한 집적 회로 - Google Patents

프로그래머블 회로 및 내장형 프로세서 시스템을 구비한 집적 회로 Download PDF

Info

Publication number
KR101496072B1
KR101496072B1 KR1020137021704A KR20137021704A KR101496072B1 KR 101496072 B1 KR101496072 B1 KR 101496072B1 KR 1020137021704 A KR1020137021704 A KR 1020137021704A KR 20137021704 A KR20137021704 A KR 20137021704A KR 101496072 B1 KR101496072 B1 KR 101496072B1
Authority
KR
South Korea
Prior art keywords
circuit
programmable circuit
programmable
processor
processor hardware
Prior art date
Application number
KR1020137021704A
Other languages
English (en)
Other versions
KR20130108469A (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 KR20130108469A publication Critical patent/KR20130108469A/ko
Application granted granted Critical
Publication of KR101496072B1 publication Critical patent/KR101496072B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Logic Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

집적 회로는 프로그램 코드를 실행하도록 구성된 프로세서 시스템을 구비할 수 있다. 프로세서 시스템(202)은 하드-와이어링되고 프로세서 하드웨어 자원(228, 222, 220, 240, 242, 246, 248)을 포함할 수 있다. IC는 또한 상이한 물리적 회로를 구현하도록 구성가능한 프로그래머블 회로(204)를 포함할 수 있다. 프로그래머블 회로는 프로세서 시스템에 결합될 수 있다. 프로그래머블 회로는 프로세서 시스템의 프로세서 하드웨어 자원의 사용을 공유하도록 구성될 수 있다. 프로세서 시스템은 또한 전력 투입 및/또는 전력 차단과 같은 프로그래머블 회로의 각종 양태, 및 내부에서 하나 이상의 상이한 물리적 회로(280)를 구현하기 위한 프로그래머블 회로의 구성을 제어할 수 있다.

Description

프로그래머블 회로 및 내장형 프로세서 시스템을 구비한 집적 회로{INTEGRATED CIRCUIT WITH PROGRAMMABLE CIRCUITRY AND AN EMBEDDED PROCESSOR SYSTEM}
이 명세서에서 설명되는 하나 이상의 실시형태는 집적 회로(IC)에 관한 것이다. 특히, 하나 이상의 실시형태는 프로그래머블 회로 및 내장형 프로세서 시스템을 구비한 IC에 관한 것이다.
집적 회로(IC)는 특수 기능을 수행하도록 구현될 수 있다. 한가지 유형의 IC는 현장 프로그램가능 게이트 어레이(FPGA)와 같은 프로그래머블 IC이다. FPGA는 전형적으로 프로그래머블 타일의 어레이를 포함한다. 이러한 프로그래머블 타일은 예를 들면 입출력 블록(IOB), 구성가능 논리 블록(CLB), 전용 랜덤 액세스 메모리 블록(BRAM), 멀티플라이어, 디지털 신호 처리 블록(DSP), 프로세서, 클럭 관리자, 지연 고정 루프(delay lock loop; DLL) 등을 포함할 수 있다.
각 프로그래머블 타일은 전형적으로 프로그래머블 상호접속 회로와 프로그래머블 논리 회로를 둘 다 포함한다. 프로그래머블 상호접속 회로는 전형적으로 프로그래머블 상호접속 포인트(PIP)에 의해 상호접속된 상이한 길이의 다수의 상호접속 라인을 포함한다. 프로그래머블 논리 회로는 예를 들면 함수 발생기, 레지스터, 산술 로직 등을 포함할 수 있는 프로그래머블 요소를 이용하여 사용자 설계의 로직을 구현한다.
프로그래머블 상호접속 회로 및 프로그래머블 논리 회로는 전형적으로 프로그래머블 요소들을 구성하는 법을 규정하는 내부 구성 메모리 셀에 구성 데이터 스트림을 로딩함으로써 프로그램된다. 구성 데이터는 메모리(예를 들면 외부 PROM)로부터 판독되거나 외부 장치에 의해 FPGA에 기록될 수 있다. 그 다음에, 개별 메모리의 종합적 상태에 의해 FPGA의 기능이 결정된다.
다른 유형의 프로그래머블 IC는 복합 프로그래머블 논리 소자(complex programmable logic device; CPLD)이다. CPLD는 함께 접속되어 상호접속 스위치 매트릭스에 의해 입출력(input/output, I/O) 자원(resource)에 접속되는 2개 이상의 "기능 블록"을 포함한다. CPLD의 각 기능 블록은 프로그래머블 논리 어레이(PLA) 및 프로그래머블 어레이 논리(PAL) 소자에서 사용되는 것과 유사한 2-레벨 AND/OR 구조를 포함한다. CPLD에서, 구성 데이터는 전형적으로 비휘발성 메모리에 온칩으로 저장된다. 일부 CPLD에 있어서, 구성 데이터는 비휘발성 메모리에 온칩으로 저장되고, 그 다음에 초기 구성(프로그래밍) 시퀀스의 일부로서 휘발성 메모리에 다운로드된다.
이러한 모든 프로그래머블 IC에 대하여, 소자의 기능은 그 목적으로 소자에 제공된 데이터 비트에 의해 제어된다. 데이터 비트는 휘발성 메모리(예를 들면, FPGA 및 일부 CPLD에서처럼 정적 메모리 셀)에, 비휘발성 메모리(예를 들면, 일부 CPLD에서처럼 플래시 메모리)에, 또는 임의의 다른 유형의 메모리 셀에 저장될 수 있다.
다른 프로그래머블 IC는 소자의 각종 요소들을 프로그램적으로 상호접속하는 금속층과 같은 프로세싱 층을 적용함으로써 프로그램된다. 이 프로그래머블 IC는 마스크 프로그래머블 소자라고 알려져 있다. 프로그래머블 IC는 예를 들면 퓨즈 또는 안티퓨즈 기술을 이용하는 다른 방법으로 또한 구현될 수 있다. 용어 "프로그래머블 IC"는 비제한적인 예를 들자면 이러한 소자들을 포함할 수 있고, 또한 예컨대 용도 지정 집적 회로(ASIC)를 포함한 부분적으로만 프로그램가능한 소자들을 포함할 수 있다. 예를 들어서, 다른 유형의 프로그래머블 IC는 하드 코드화 트랜지스터 로직, 및 하드 코드화 트랜지스터 로직을 프로그램적으로 상호접속하는 프로그래머블 스위치 패브릭의 조합을 포함한다.
위에서 설명한 각종 IC 중의 일부를 포함한 일부 현대의 IC는 프로그램 코드를 실행할 수 있는 내장형(embedded) 프로세서를 포함한다. 프로세서는 집합적으로 IC의 "프로그래머블 회로"라고도 부르는 프로그래머블 논리 회로 및 프로그래머블 상호접속 회로를 포함한 동일 다이의 일부로서 제조될 수 있다. 프로세서에서 프로그램 코드의 실행은 IC에서 이용가능한 프로그래머블 회로를 "프로그래밍" 또는 "구성"하는 것과 다르다는 것을 이해하여야 한다. IC의 프로그래머블 회로를 프로그래밍 또는 구성하는 동작은 프로그래머블 회로에서 구성 데이터에 의해 특정되는 다른 물리적 회로의 구현을 야기한다.
이 명세서에서 설명하는 하나 이상의 실시형태는 집적 회로(IC)에 관한 것이고, 더 구체적으로, 프로그래머블 회로 및 내장형 프로세서 시스템을 포함한 IC에 관한 것이다.
일 실시형태는 프로그램 코드를 실행하도록 구성된 프로세서 시스템을 포함한 IC를 포함할 수 있다. 프로세서 시스템은 하드-와이어링(hard-wired)되고 프로세서 하드웨어 자원을 포함할 수 있다. IC는 또한 다른 물리적 회로를 구현하도록 구성가능한 프로그래머블 회로를 포함할 수 있다. 프로그래머블 회로는 프로세서 시스템에 결합될 수 있다. 프로그래머블 회로는 프로세서 시스템의 프로세서 하드웨어 자원의 사용을 공유하도록 또한 구성될 수 있다.
일부 실시형태에 있어서, 프로세서 하드웨어 자원은 프로세서 시스템 내에 위치된 입출력(I/O) 소자일 수 있다.
일부 실시형태에 있어서, 프로세서 하드웨어 자원은 프로세서 시스템 내에 위치된 메모리일 수 있다.
일부 실시형태에 있어서, 프로세서 하드웨어 자원은 프로그래머블 회로 및 프로세서 시스템에 제공되는 인터럽트 신호를 발생시키도록 구성될 수 있다.
일부 실시형태에 있어서, 프로세서 하드웨어 자원은 프로세서 시스템 또는 프로그래머블 회로에 전용되는 집적 회로의 입출력(I/O) 핀에 선택적으로 결합될 수 있다.
일부 실시형태에 있어서, 프로세서 하드웨어 자원으로부터 발생된 데이터는, 프로세서 시스템에 전용되고, 프로그래머블 회로에 결합된 패브릭 입출력 멀티플렉서에 결합된 데이터 라인에서 발생되는 집적 회로의 I/O 핀에 제공될 수 있다.
일부 실시형태에 있어서, 프로세서 시스템은 프로세서 시스템 내에서 분산되는 제1 클럭 신호를 발생시키도록 구성된 클럭 유닛을 포함할 수 있고, 클럭 유닛은 프로그래머블 회로에 제2 클럭 신호를 제공하도록 구성된다.
일부 실시형태에 있어서, 집적 회로는 프로세서 시스템 또는 프로그래머블 회로 중의 하나가 프로세서 하드웨어 자원을 한번에 제어하게 하도록 구성된 하드웨어 록킹 메커니즘을 또한 포함할 수 있다.
일부 실시형태에 있어서, 프로세서 하드웨어 자원에 대한 제어가 허가된 때 프로세서 시스템 또는 프로그래머블 회로만이 프로세서 하드웨어 자원에 의해 발생된 인터럽트를 서비스할 수 있다.
일부 실시형태에 있어서, 프로그래머블 회로는 프로그래머블 회로에 의해 사용하기 위해 전용되는 I/O 핀을 통해 집적 회로 외부의 처리 노드에 통신적으로 연결된 사용자 회로를 포함하고, 여기에서 사용자 회로는 프로그래머블 회로를 프로세서 시스템에 결합하는 인터페이스를 통해 I/O 장치에 통신적으로 연결될 수 있으며, 처리 노드는 사용자 회로를 통해 I/O 장치에 액세스할 수 있다.
일부 실시형태에 있어서, 프로그래머블 회로는 인터페이스를 통해 프로세서 시스템에 결합된 사용자 회로를 포함할 수 있고, 여기에서 프로세서 시스템은 표준 I/O 기능을 구현하도록 구성될 수 있으며, 프로세서 시스템은 인터페이스를 통해 수신된 사용자 회로로부터의 요청에 응답하여 사용자 회로에 표준 I/O 기능을 제공하도록 구성될 수 있다.
일부 실시형태에 있어서, 프로그래머블 회로는 프로세서 시스템의 제어하에 물리적 회로를 구현할 수 있다.
일부 실시형태에 있어서, 프로세서 시스템은 프로그래머블 회로의 전력 공급을 제어할 수 있다.
다른 하나의 실시형태는 프로세서 하드웨어 자원을 공유하는 방법을 포함할 수 있다. 이 방법은 상이한 물리적 회로를 구현하도록 프로그래머블 회로를 구성하는 단계와; 프로세서 시스템의 프로세서 하드웨어 자원의 사용을 공유하도록 프로그래머블 회로를 구성하는 단계를 포함할 수 있고, 여기에서 프로세서 시스템은 하드-와이어링되고 프로그램 코드를 실행하도록 구성된다.
일부 실시형태에 있어서, 상기 방법은 프로세서 시스템의 프로세서 하드웨어 자원에 액세스하기 위한 요청을 수신하는 단계와; 요청된 프로세서 하드웨어 자원이 이용가능한지 결정하는 단계와; 요청된 프로세서 하드웨어 자원이 이용가능한 경우, 요청된 프로세서 하드웨어 자원에 대한 액세스를 허가하고; 요청된 프로세서 하드웨어 자원을 구성하며; 요청된 프로세서 하드웨어 자원에 대한 동작을 개시하는 단계를 더 포함할 수 있다.
다른 하나의 실시형태는 프로그램 코드를 실행하도록 구성된 프로세서 시스템을 포함한 IC를 포함할 수 있다. 프로세서 시스템은 하드-와이어링될 수 있다. IC는 구성 데이터에 의해 특정된 물리적 회로를 구현하도록 구성가능한 프로그래머블 회로를 포함할 수 있다. 프로그래머블 회로는 프로세서 시스템에 결합될 수 있다. 프로그래머블 회로는 또한 프로세서 시스템의 제어하에 물리적 회로를 구현할 수 있다.
일부 실시형태에 있어서, 프로세서 시스템은 프로그래머블 회로의 구성 메모리에 물리적 회로를 특정하는 구성 데이터를 로딩함으로써 프로그래머블 회로에서 물리적 회로를 구현하도록 구성될 수 있다.
일부 실시형태에 있어서, 프로세서 시스템은 구성 데이터를 구성 메모리에 로딩하기 전에 집적 회로 외부의 소스로부터 프로세서 시스템의 입출력(I/O) 소자를 통해 구성 데이터를 수신하도록 구성될 수 있다.
일부 실시형태에 있어서, 프로세서 시스템은 I/O 장치를 통해 집적 회로 외부의 소스와 통신 링크를 통해 통신하고 통신 링크를 통해 구성 데이터를 획득하도록 구성될 수 있다.
다른 하나의 실시형태는 프로그램 코드를 실행하도록 구성된 프로세서 시스템을 구비한 IC를 포함할 수 있다. 프로세서 시스템은 하드-와이어링될 수 있다. IC는 로딩된 구성 데이터에 따라 다른 물리적 회로를 구현하도록 구성가능한 프로그래머블 회로를 또한 포함할 수 있다. 프로그래머블 회로는 프로세서 시스템에 결합될 수 있다. 프로그래머블 회로는 프로세서 시스템의 제어하에 전원 공급, 예를 들면 전력 투입(power on) 및/또는 전력 차단(power off)될 수 있다.
일부 실시형태에 있어서, 프로그래머블 회로는 전력 차단 상태로부터 프로세서 시스템의 제어하에 전력 투입될 수 있다.
일부 실시형태에 있어서, 프로그래머블 회로가 부팅 처리를 완료하였다는 결정에 응답하여, 프로세서 시스템은 구성 데이터를 프로그래머블 회로의 구성 메모리에 로드할 수 있다.
일부 실시형태에 있어서, 프로그래머블 회로는 프로세서 시스템의 제어하에 전력 차단될 수 있다.
일부 실시형태에 있어서, 집적 회로는 프로세서 시스템과 프로그래머블 회로를 결합하는 복수의 레벨 시프터를 더 포함할 수 있고, 여기에서 복수의 레벨 시프터는 각각 프로세서 시스템의 제어하에 전력 차단되는 프로그래머블 회로에 응답하여 공지의 상태로 배치된다.
도 1은 이 명세서에서 설명하는 일 실시형태에 따른 집적 회로(IC)의 구조를 보인 제1 블록도이다.
도 2는 이 명세서에서 설명하는 다른 실시형태에 따라 구성된 IC를 보인 제2 블록도이다.
도 3은 이 명세서에서 설명하는 다른 실시형태에 따라 도 2의 IC를 보인 제3 블록도이다.
도 4는 이 명세서에서 설명하는 다른 실시형태에 따라 도 2의 IC를 보인 제4 블록도이다.
도 5는 이 명세서에서 설명하는 다른 실시형태에 따라 도 2의 IC를 보인 제5 블록도이다.
도 6은 이 명세서에서 설명하는 일 실시형태에 따라 프로세서 하드웨어 자원을 공유하는 방법을 보인 제1 흐름도이다.
도 7은 이 명세서에서 설명하는 다른 실시형태에 따른 시스템을 보인 제6 블록도이다.
도 8은 이 명세서에서 설명하는 다른 실시형태에 따라 IC의 전력 관리 방법을 보인 제2 흐름도이다.
도 9는 이 명세서에서 설명하는 다른 실시형태에 따라 IC의 전력 관리 방법을 보인 제3 흐름도이다.
도 10은 이 명세서에서 설명하는 다른 실시형태에 따라 도 2의 IC를 보인 제7 블록도이다.
도 11은 이 명세서에서 설명하는 다른 실시형태에 따라 도 2의 IC를 보인 제8 블록도이다.
도 12는 이 명세서에서 설명하는 다른 실시형태에 따라 IC의 전력 관리 방법을 보인 제4 흐름도이다.
도 13은 이 명세서에서 설명하는 다른 실시형태에 따라 IC의 전력 관리 방법을 보인 제5 흐름도이다.
비록 이 명세서가 신규의 것으로 간주되는 하나 이상의 실시형태의 특징을 규정하는 특허 청구범위로 결말을 짓지만, 하나 이상의 실시형태는 도면과 함께 이 명세서를 읽음으로써 더 잘 이해할 수 있을 것으로 믿어진다. 필요에 따라, 하나 이상의 구체적인 실시형태가 이 명세서에서 설명된다. 그러나, 하나 이상의 실시형태는 단지 예시하는 것임을 이해하여야 한다. 그러므로, 이 명세서에서 설명하는 특유의 구조적 및 기능적 세부는 제한하는 것으로 해석되어서는 안되고, 단순히 특허 청구범위의 기초로서, 및 가상적으로 임의의 적당히 구체화된 구조로 하나 이상의 실시형태를 다양하게 활용하도록 이 기술에 숙련된 사람들에게 교시하는 대표적인 기초로서 해석되어야 한다. 또한, 이 명세서에서 사용되는 용어들은 제한하는 것으로 의도되지 않고, 여기에서 설명하는 하나 이상의 실시형태의 이해가능한 설명을 제공하기 위한 것이다.
이 명세서에서 설명하는 하나 이상의 실시형태는 집적 회로(IC)에 관한 것이고, 더 구체적으로, 프로그래머블 회로 및 내장형 프로세서 시스템을 포함한 IC에 관한 것이다. 동일한 IC 내에 및 예를 들면 동일한 다이 및/또는 기판 위에 내장형 프로세서 시스템과 함께 프로그래머블 회로를 통합하면 프로그래머블 회로와 프로세서 시스템 사이에서 각종 프로세서 하드웨어 자원의 공유를 촉진할 수 있다. 예를 들면, 프로세서 시스템의 메모리, 인터페이스(예를 들면, 입출력(I/O) 장치)와 같은 프로세서 시스템의 각종 컴포넌트 및/또는 서브시스템은 프로그래머블 회로에 의해 이용될 수 있고 공유될 수 있다.
이 명세서에서 설명하는 하나 이상의 실시형태는 프로세서 시스템과 프로그래머블 회로부를 포함한 IC에서의 전력 관리와 또한 관련이 있다. 프로그래머블 회로는 프로세서 시스템과 독립되게 전력 투입 및/또는 전력 차단되도록 구성될 수 있다. 프로세서 시스템은 프로그래머블 회로의 관리 전력 사이클링에 의해 동작할 수 있고, 예를 들면 프로그래머블 회로를 제어하는 IC 및 구성 메모리에 구성 데이터를 로딩하는 것과 같은 구성을 또한 제어할 수 있다. 프로세서 시스템과 프로그래머블 회로 간의 전력 독립성은 프로그래머블 회로가 전력 차단 상태로 유지되는 동안 프로세서 시스템이 동작하여 프로그램 코드를 실행할 수 있게 한다. 프로세서 하드웨어 자원이 프로그래머블 회로와 공유되기 때문에, 그러한 자원의 전력 관리는 프로세서 시스템에 의해 또한 제어될 수 있다.
도 1은 이 명세서에서 설명하는 일 실시형태에 따른 IC의 구조(100)를 보인 제1 블록도이다. 이 구조(100)는 예를 들면 IC의 현장 프로그램가능 게이트 어레이(FPGA) 유형 내에서 구현될 수 있다. 도시된 것처럼, 구조(100)는 몇 가지 다른 유형의 프로그래머블 회로 블록, 예를 들면 논리 블록들을 포함한다. 예를 들면, 구조(100)는 멀티 기가비트 송수신기(MGT(101)), 구성가능 논리 블록(CLB(102)), 랜덤 액세스 메모리 블록(BRAM(103)), 입출력 블록(IOB(104)), 구성 및 클럭킹 로직(CONFIG/CLOCKS(105)), 디지털 신호 처리 블록(DSP(106)), 특수 I/O 블록(107))(예를 들면, 구성 포트 및 클럭 포트), 및 디지털 클럭 관리자, 아날로그-디지털 변환기, 시스템 모니터링 로직 등과 같은 기타의 프로그래머블 로직(108)을 포함한 다수의 상이한 프로그래머블 타일을 구비할 수 있다.
일부 IC에 있어서, 각 프로그래머블 타일은 각 인접 타일의 대응하는 상호접속 요소(INT(111))에 대하여 표준화 접속을 가진 프로그래머블 INT(111)를 구비한다. 그러므로, 함께 취해진 INT(111)는 예시된 IC에 대하여 프로그램가능한 상호접속 구조를 구현한다. 각각의 INT(111)는 도 1의 상부에 포함된 예로 나타낸 바와 같이 동일 타일 내의 프로그래머블 논리 요소에 대한 접속들을 또한 구비한다.
예를 들면, CLB(102)는 사용자 로직을 구현하도록 프로그램될 수 있는 구성가능 논리 요소(CLE(112)) 및 단일 INT(111)를 구비할 수 있다. BRAM(103)은 하나 이상의 INT(111) 외에 BRAM 논리 요소(BRL(113))를 구비할 수 있다. 전형적으로, 타일에 내포된 INT(111)의 수는 타일의 높이에 의존한다. 도시된 실시형태에 있어서, BRAM 타일은 5개의 CLB와 같은 높이를 갖지만, 다른 갯수(예를 들면, 4개)가 또한 사용될 수 있다. DSP 타일(106)은 적당한 수의 INT(111) 외에도 DSP 논리 요소(DSPL(114))를 포함할 수 있다. IOB(104)는 예를 들면 1 인스턴스의 INT(111) 외에도 2 인스턴스의 I/O 논리 요소(IOL(115))를 포함할 수 있다. 이 기술에 숙련된 사람에게는 명백한 바와 같이, 예컨대 IOL(115)에 접속된 실제 I/O 패드는 전형적으로 IOL(115)의 영역으로 한정되지 않는다.
도 1에 도시된 예에 있어서, 다이의 중앙(도 1에 음영을 넣어 표시함) 부근의 원주형 영역은 구성, 클럭 및 기타의 제어 로직을 위해 사용된다. 상기 원주형 영역으로부터 연장하는 수평 영역(109)은 프로그래머블 IC의 폭을 가로질러서 클럭 및 구성 신호를 배분하기 위해 사용된다.
도 1에 도시한 구조를 이용하는 일부 IC는 IC의 대부분을 형성하는 규칙적인 원주형 구조를 분열시키는 추가의 논리 블록을 포함한다. 추가의 논리 블록은 프로그램가능 블록 및/또는 전용 회로일 수 있다. 예를 들면, PROC(110)로 도시한 프로세서 블록은 CLB 및 BRAM의 수 개의 컬럼에 걸쳐진다.
PROC(110)는 IC의 프로그래머블 회로를 구현하는 다이의 일부로서 제조되는 하드와이어드 프로세서로서 구현될 수 있다. PROC(110)는 개별 프로세서, 예를 들면 프로그램 코드를 실행할 수 있는 단일 코어로부터 하나 이상의 코어, 모듈, 코프로세서, 인터페이스 등을 구비한 전체 프로세서 시스템까지의 복잡성의 범위를 가진 다양한 상이한 프로세서 유형 및/또는 시스템 중의 임의의 것을 표시할 수 있다.
더 복잡한 구성으로서, 예를 들면, PROC(110)는 하나 이상의 코어(예를 들면, 중앙 처리 장치), 캐시 메모리, 메모리 제어기, IC의 I/O 핀, 예를 들면 I/O 패드에 직접 결합하고 및/또는 IC의 프로그래머블 회로에 결합하도록 구성가능한 단방향성 및/또는 양방향성 인터페이스를 포함할 수 있다. 용어 "프로그래머블 회로"는 IC 내의 프로그래머블 회로 요소, 예를 들면, 여기에서 설명하는 각종의 프로그램가능한 또는 구성가능한 회로 블록뿐만 아니라, IC에 로드된 구성 데이터에 따라 각종 회로 블록, 타일, 및/또는 요소를 선택적으로 결합하는 상호접속 회로를 말할 수 있다. 예를 들면, PROC(110)의 외부에 있는 도 1에 도시된 부분들은 IC의 프로그래머블 회로 또는 그 일부로서 생각할 수 있다.
도 1은 프로그래머블 회로(예를 들면, 프로그래머블 패브릭) 및 프로세서 시스템을 구비한 IC를 구현하기 위해 사용될 수 있는 예시적인 구조를 보여주고 있다. 예를 들면, 컬럼 내의 논리 블록의 수, 컬럼들의 상대적인 폭, 컬럼의 수 및 순서, 컬럼에 포함된 논리 블록의 유형, 논리 블록의 상대적 크기, 및 도 1의 상부에 표시된 상호접속/로직 구현예들은 순전히 예시적인 것이다. 예를 들면, 실제 IC에 있어서, CLB가 나타나는 곳은 어디든지 사용자 회로 설계의 효율적인 구현을 촉진하기 위하여 전형적으로 2개 이상의 인접하는 CLB 컬럼이 포함된다. 그러나, 인접하는 CLB 컬럼의 수는 IC의 전체 크기에 따라 변할 수 있다. 또한, IC 내에서 PROC(110)의 크기 및/또는 위치는 단지 설명을 위한 것이고 이 명세서에서 설명하는 하나 이상의 실시형태를 제한하는 의도는 없다.
도 2는 이 명세서에서 설명하는 다른 실시형태에 따라 구성된 IC(200)를 보인 제2 블록도이다. IC(200)는 프로그래머블 회로(204)에 결합된 프로세서 시스템(PS)(202)을 포함한 다양한 상이한 구조 중의 임의의 구조를 이용하여 구현될 수 있다. 예를 들면, IC(200)는 도 1의 구조(100)와 동일하거나 유사한 구조를 이용하여 구현될 수 있지만, 반드시 그럴 필요는 없다. 일반적으로, IC(200)는 프로그래머블 회로(204) 내에서 구현되는 회로와 PS(202)를 결합하기 위해 사용될 수 있는 각종 인터페이스를 더 구체적으로 보여준다.
도 2에 도시된 예에서, PS(202)는 IC(200)의 다이의 약 2/3를 점유하고 프로그래머블 회로(204)는 동일 다이의 약 1/3을 점유하는 것으로 도시되어 있다. 그러나, 도 2는 IC(200)의 규모를 표시하는 것으로 의도되지 않는다. 그보다, 도 2는 설명의 목적으로 제공되고, 이 명세서에서 설명하는 하나 이상의 실시형태를 제한하는 것으로 의도되지 않는다.
일반적으로, PS(202)는 IC(200)에서 하드와이어드 시스템으로서 구현된다. PS(202) 내의 각종 컴포넌트 또는 모듈이 화살표를 가진 라인, 예를 들면 신호 또는 통신 링크에 의해 결합된 것에 있어서, 그러한 화살표는 제어의 방향 또는 흐름을 나타내는 것으로 의도된다. 이와 관련하여, 방향성 화살을 가진 라인로서 표시된 신호는 일반적으로 신호를 통한 제어가 화살표가 지시하는 목표 컴포넌트 보다는 화살표가 나오는 소스 컴포넌트에 의해 발휘된다는 것을 표시한다. 일반적으로, 화살표는 데이터의 일 방향 흐름 또는 신호의 방향성을 표시하는 것으로 의도되지 않는다. 신호는 방향성 화살표가 있다 하더라도 양방향 신호 또는 통신 링크로서 구현될 수 있다.
이 명세서에서, 동일한 참조 문자는 단자, 신호 라인, 와이어, 및 그들의 대응하는 신호를 지칭하기 위해 사용된다. 이와 관련하여, 용어 "신호", "와이어", "접속", "단자", 및 "핀"은 이 명세서에서 때때로 상호교환적으로 사용될 수 있다. 또한, 용어 "신호", "와이어" 등은 하나 이상의 신호, 예를 들면 단일 와이어를 통한 신호 비트의 전달 또는 복수의 병렬 와이어를 통한 복수의 병렬 비트의 전달을 표시할 수 있음을 이해하여야 한다. 더 나아가, 각 와이어 또는 신호는, 주지된 바와 같이, 대개의 경우처럼 그 신호 또는 와이어에 의해 접속된 2개 이상의 컴포넌트 간의 양방향 통신을 나타낼 수 있다.
도시된 것처럼, PS(202)는 코어 컴플렉스(206)를 포함할 수 있다. 코어 컴플렉스(206)는 코어(208, 210), 부동점 유닛(FPU)(212, 214), 인터럽트 요청 유닛(IRQ)(216), 및 스누프 제어 유닛(SCU)(218)을 포함할 수 있다. 각 코어(208, 210)는 코어에 내장된 레벨 1(L1) 캐시(도시 생략됨)를 포함할 수 있다. 비록 프로그램 코드 및/또는 FPU를 실행할 수 있는 각종의 다른 유형의 프로세서 코어 중의 임의의 것, 예를 들면 수치연산 보조프로세서(math co-processor) 또는 DSP 유닛이 사용될 수 있지만, 여기에서 설명하는 실시형태에서 각 코어(208, 210)는 각각 32 KB 명령어 캐시 및 32 KB 데이터 캐시를 구비한 ARM 코텍스™-A9형의 프로세서 코어로서 구현될 수 있다. FPU(212, 214)는 128-비트 벡터 기반 DSP 기능을 제공할 수 있는 네온(NEON™) 미디어 및/또는 부동 소수점 처리 엔진의 형태로 구현될 수 있다. ARM 코텍스™-A9 프로세서 코어 및 네온(NEON™) 미디어 및/또는 부동 소수점 처리 엔진은 UK, 캠브리지에 소재하는 ARM 홀딩스(ARM)로부터 입수할 수 있다.
비록 듀얼 코어 또는 멀티 코어 시스템으로 도시되어 있지만, 다른 실시형태에 있어서, 코어 컴플렉스(206)는 프로그램 코드를 실행할 수 있는 단일 코어를 포함할 수 있다. 그 경우에, 코어 컴플렉스(206)는 IRQ(216) 및 SCU(218)에 결합된 단일 코어 또는 프로세서를 포함할 수 있다. 또한, FPU(212, 214)는 포함될 필요가 없지만, 만일 필요하다면 단일의 FPU가 포함되고 단일 코어에 결합될 수 있다.
다시 도 2를 참조하면, 코어 컴플렉스(206)는 레벨 2(L2) 캐시(220) 및 온칩 메모리(OCM)(222)와 같은 각종의 프로세서 하드웨어 자원에 결합된다. L2 캐시(220)는 256 KB 메모리로서 구현될 수 있다. OCM(222)도 또한 256 KB 메모리로서 구현될 수 있다. 코어(208, 210)와 FPU(212, 214)는 L2 캐시(220)와 OCM(222)에 직접 액세스할 수 있다. 일반적으로, OCM(222)은 PS(202) 및/또는 프로그래머블 회로(204), 예를 들면, 프로그래머블 회로(204) 내에서 구현되는 회로에 이용되는 로컬 메모리를 제공한다. 비교적으로, 역시 메모리인 L2 캐시(220)는 PS(202)에 대한 캐시로서 기능한다. 따라서, L2 캐시(220)는 RAM 예를 들면 실행 메모리 오프칩에 저장된 데이터 비트의 유효 카피인 데이터의 작은 블록 또는 부분, 예를 들면 256 비트를 저장할 수 있다. 예를 들어서, 만일 L2 캐시(220)에 저장된 데이터에 대하여 판독 요청이 발행되면, 데이터는 RAM으로부터 검색되는 대신에 L2 캐시(220)로부터 판독될 수 있다.
PS(202)는 리세트 유닛(224), 클럭 유닛(226) 및 메모리 제어기(228)와 같은 추가의 하드웨어 프로세서 자원을 포함할 수 있다. 리세트 유닛(224)은 IC(200) 외부의 소스로부터 발원하는 하나 이상의 신호, 예를 들면 신호(230)를 수신할 수 있다. 신호(230)는 PS(202) 및/또는 PS(202) 내의 하나 이상 또는 모든 컴포넌트를 리세트하도록 리세트 유닛(224)에게 지시할 수 있다. 리세트 유닛(224)은 프로그래머블 회로(204)의 전력 투입 또는 전력 차단을 요청하는 신호를 또한 수신할 수 있다.
클럭 유닛(226)은 IC(200) 외부의 소스로부터 하나 이상의 기준 신호, 예를 들면 신호(232)를 수신할 수 있다. 클럭 유닛(226)은 예를 들면 수신 신호(232)에 동기될 수 있는 위상 고정 루프 회로로서 구현되거나 위상 고정 루프 회로를 포함할 수 있다. 클럭 유닛(226)은 PS(202) 전반에 결쳐 분산될 수 있는 하나 이상의 다른 주파수의 하나 이상의 클럭 신호를 발생할 수 있다(도시 생략됨). 또한, 클럭 유닛(226)은 여기에서 구현되는 회로에 의해 사용하기 위해 프로그래머블 회로(204)에 분산될 수 있는 하나 이상의 다른 주파수의 하나 이상의 클럭 신호를 발생할 수 있다.
메모리 제어기(228)는 IC(200) 외부에 위치된 하나 이상의 다른 유형의 RAM, 예를 들면 "오프칩"과 통신하도록 구현될 수 있다. 예를 들면, 메모리 제어기(228)는 비제한적인 예를 들자면 16-비트, 32-비트, ECC를 구비한 16-비트 등인 듀얼 데이터 레이트(DDR)2, DDR3, 저전력(LP) DDR2 유형의 메모리를 포함한 각종 유형의 메모리에 액세스, 예를 들면 판독 및/또는 기록하도록 구현될 수 있다. 메모리 제어기(228)가 통신할 수 있는 상이한 메모리 유형의 리스트는 단지 설명의 목적으로 제공되고 제한하는 것으로서 또는 전부를 망라한 것으로서 의도되지 않는다.
PS(202)는 코어 스위치(236) 및 프로그래머블 회로(204)에 결합된 직접 메모리 액세스(DMA) 인터페이스(234)와 같은 하드웨어 프로세서 자원을 또한 포함할 수 있다. PS(202)는 또한 인터페이스(256) 중의 하나, 즉 이 명세서에서 더 구체적으로 설명되는 인터페이스(256D), OCM(222) 및 메모리 제어기(228)에 결합되는 하드웨어 프로세서 자원의 메모리 스위치(238) 유형을 포함할 수 있다.
코어 스위치(236)는 도시된 것처럼 PS(202)의 각종 컴포넌트들 중에서 신호를 라우트할 수 있다. 일 실시형태에 있어서, 코어 스위치(236)는 PS(202)의 내부 버스에 직접 결합될 수 있다(도시 생략됨). 그러한 실시형태에 있어서, 코어 스위치(236)와 접속하는 PS(202) 내의 각각의 다른 컴포넌트는 내부 버스를 통하여 코어 스위치(236)에 결합될 수 있다. 예를 들면, I/O 장치(예를 들면, 인터페이스)(240, 242, 246, 248)와 같은 다른 프로세서 하드웨어 자원들은 각각 내부 버스를 통하여 코어 스위치(236)에 결합될 수 있다. 내부 버스는 예컨대 고급 주변장치용 버스(Advanced Peripheral Bus; APB) 등과 같은 각종의 상이한 버스들 중의 임의의 것으로서 구현될 수 있다.
주지된 바와 같이, PS(202)는 하나 이상의 상이한 유형의 I/O 장치 또는 인터페이스와 같은 하드웨어 프로세서 자원을 포함할 수 있다. PS(202)는 플래시 메모리 유형의 I/O 장치, 고성능 I/O 장치, 저성능 I/O 장치, 디버깅 I/O 장치, 및/또는 RAM I/O 장치를 제공할 수 있다. RAM I/O 장치, 즉 메모리 제어기(228)는 이 명세서에서 설명되어 있다.
추가 유형의 I/O 장치에 관하여, PS(202)는 하나 이상의 플래시 메모리 인터페이스(240)(참조번호 240A 및 240B로 표시됨)를 포함할 수 있다. 예를 들면, 하나 이상의 플래시 메모리 인터페이스(240)는 4-비트 통신용으로 구성된 쿼드-직렬 주변장치 인터페이스(QSPI)로서 구현될 수 있다. 하나 이상의 플래시 메모리 인터페이스(240)는 병렬 8-비트 NOR/SRAM 유형의 인터페이스로서 구현될 수 있다. 하나 이상의 플래시 메모리 인터페이스(240)는 8-비트 및/또는 16-비트 통신용으로 구성된 NAND 인터페이스로서 구현될 수 있다. 여기에서 설명하는 특수한 인터페이스들은 설명의 목적으로 제공되고 제한하는 의도가 없다는 것을 이해하여야 한다. 다른 비트 폭을 가진 다른 인터페이스를 사용할 수도 있다.
PS(202)는 I/O 장치(240)보다 더 높은 수준의 성능을 제공하는 하나 이상의 I/O 장치(242)를 포함할 수 있다. 각 I/O 장치(242A-242C)는 DMA 제어기(244A-244C)에 각각 결합될 수 있다. 예를 들면, 하나 이상의 I/O 장치(242)는 범용 직렬 버스(USB) 유형의 인터페이스로서 구현될 수 있다. 하나 이상의 I/O 장치(242)는 기가비트 이더넷 유형의 인터페이스로서 구현될 수 있다. 하나 이상의 I/O 장치(242)는 보안 디지털(SD) 유형의 인터페이스로서 구현될 수 있다.
PS(202)는 I/O 장치(242)보다 더 낮은 수준의 성능을 제공하는 I/O 장치(246A-246D)와 같은 하나 이상의 I/O 장치(246)를 포함할 수 있다. 예를 들면, 하나 이상의 I/O 장치(246)는 다목적(General Purpose) I/O(GPIO) 유형의 인터페이스로서 구현될 수 있다. 하나 이상의 I/O 장치(246)는 범용 비동기 수신기/송신기(UART) 유형의 인터페이스로서 구현될 수 있다. 하나 이상의 I/O 장치(246)는 직렬 주변장치 인터페이스(SPI) 버스 유형의 인터페이스 형태로 구현될 수 있다. 하나 이상의 I/O 장치(246)는 제어기-영역-네트워크(CAN) 유형의 인터페이스 및/또는 I2C 유형의 인터페이스 형태로 구현될 수 있다. 하나 이상의 I/O 장치(246)는 또한 트리플 타이머 카운터(TTC) 및/또는 워치독 타이머(WDT) 유형의 인터페이스 형태로 구현될 수 있다.
PS(202)는 프로세서 JTAG(PJTAG) 포트 또는 인터페이스(248A) 및 트레이스 인터페이스(248B)와 같은 하나 이상의 디버그 I/O 장치(248)를 포함할 수 있다. PJTAG 포트(248A)는 PS(202)에 대하여 외부 디버그 인터페이스를 제공할 수 있다. 트레이스 인터페이스(248B)는 디버그, 예를 들면 프로그래머블 회로(204)로부터의 트레이스, 정보를 수신하는 포트, 프로그래머블 회로(204)에 PS(202)의 디버깅 데이터를 전송하는 포트, 및 교차 트리거 포트를 제공할 수 있다. 교차 트리거 포트는 프로그래머블 회로(204) 내의 회로가 PS(202) 내의 트레이스와 같이 디버그 기능을 트리거할 수 있게 한다. 유사하게, PS(202)는 프로그래머블 회로(204) 내에서 구현되는 회로 내의 디버그 기능을 개시할 수 있다.
도시된 것처럼, 각각의 I/O 장치(240, 242, 246, 248)는 멀티플렉서(250)에 결합될 수 있다. 멀티플렉서(250)는 IC(200)의 외부 핀, 예를 들면 IC(200)가 배치되는 패키지의 볼에 직접 라우트 또는 결합될 수 있는 복수의 출력을 제공한다. 예를 들면, IC(200)의 복수의 I/O 핀, 예를 들면, 53개의 핀은 인터페이스(240, 242, 246, 248)들 간에 공유될 수 있다. 사용자는 어떤 인터페이스(240-248)가 사용되어야 하는지, 및 그에 따라서 멀티플렉서(250)를 통하여 IC(200)의 I/O 핀에 결합되어야 하는지를 선택하기 위해 멀티플렉서(250)를 PS(202)의 일부로서 구성할 수 있다.
도시된 것처럼, I/O 장치(242-248)를 멀티플렉서(250)에 결합하는 신호는 패브릭 멀티플렉서 입출력(FMIO) 인터페이스(252)에도 또한 결합될 수 있다. 따라서, IC(200), 및 더 구체적으로 PS(202)의 사용자 구성에 기초하여, I/O 장치(242, 246, 248) 중의 임의의 하나가 FMIO 인터페이스(252)를 통해 IC(200)의 프로그래머블 회로(204)에 결합될 수 있다. FMIO 인터페이스(252)는 예를 들면 신호 라인이 스위치의 상태에 따라서 프로그래머블 회로(204)에 선택적으로 결합되게 하는 각 신호 라인에 결합된 구성가능 스위치를 포함할 수 있다. FMIO 인터페이스(252) 및 여기에 포함된 스위치는 어떤 신호가 I/O 장치(242-248)로부터 프로그래머블 패브릭(204)으로 통과하는지 결정하기 위해 예를 들면 제어 레지스터(254)를 통해 PS(202)의 일부로서 구성될 수 있다. 이것은 임의의 하나의 인터페이스(242-248)로부터 통신되는 데이터가 추가의 처리 및/또는 모니터링을 위해 프로그래머블 회로(204) 내의 회로로 라우트되게 한다. I/O 장치(242, 246, 248)에 결합된 하나 이상의 I/O 핀을 통해 수신된 데이터는 하나 이상의 인터페이스(256)를 통해 추가의 처리를 위해 프로그래머블 회로(204)에 라우트될 수 있다.
FMIO 인터페이스(252)는 I/O 장치(242, 246, 248)로부터 출력된 데이터가 하나 이상의 I/O 핀에, 프로그래머블 회로(204)에서 구현되는 선택된 회로, 예를 들면 사용자 회로(280)에, 또는 프로그래머블 회로(204)에서 구현되는 선택된 회로와 동시에 하나 이상의 I/O 핀에 제공되게 한다. FMIO 인터페이스(252)에 결합하기 위해, 프로그래머블 회로(204)에서 구현되는 회로는 물리적 회로를 형성하고 구현하기 위해 구성 데이터의 로딩을 통하여 그렇게 하도록 구성되어야 한다는 점을 이해하여야 한다.
일 실시형태에 있어서, 각각의 I/O 장치(240, 242, 246, 248)는 신호(290)로서 도시된 인터럽트 신호를 발생시키도록 구성될 수 있다. 예를 들면, 각각의 I/O 장치(240A-240B, 242A-242C, 246A-246D, 248A-248B)는 신호(290)에서 인터럽트를 발생시키도록 구성될 수 있다. 도시된 것처럼, 신호(290)는 코어 컴플렉스(206)의 IRQ(216)에 결합되고 프로그래머블 회로(204)에도 직접 결합된다. PS(202)에 위치되는 인터럽트 신호(290)는 하드-와이어링, 예를 들면 고정 배선으로 된다. 따라서, 임의의 I/O 장치(240-248)에 의해 발생된 인터럽트는 코어 컴플렉스(206)에 및/또는 프로그래머블 회로(204)에 결합될 수 있고, 이것에 의해 프로그래머블 회로(204) 및/또는 코어 컴플렉스(206)에 의한 I/O 장치(240-248)의 사용이 촉진된다. 예를 들면, 각각의 I/O 장치(240-248)로부터의 인터럽트는 IRQ(216) 및 프로그래머블 회로(204)에 동시에 제공될 수 있다.
제어 레지스터(254)는 대부분은 아니라 하더라도 PS(202)의 각종 양태를 제어하도록 구성될 수 있다. 하나 이상의 커맨드가 PS(202)의 동작을 제어 또는 조절하기 위해 제어 레지스터(254)에 기록될 수 있다. 예를 들면, 프로그래머블 회로(204) 내의 회로들은 이 명세서에서 구체적으로 설명되는 바와 같이 인터페이스(256B)와 같은 인터페이스를 통하여 제어 레지스터(254)에 기록할 수 있다. 제어 레지스터(254)는 어떤 신호가 프로그래머블 회로(204)에 라우트되는지 및 다른 시스템 레벨 기능과 관련하여 지적 특성(IP) 인에이블 리세트를 제어하는 것, 클럭 유닛(226)에 의해 발생된 클럭 주파수를 설정하는 것, I/O 구동 강도를 특정하는 것, FMIO 인터페이스(252)의 상태와 같은 기능들을 제어 또는 조절할 수 있다. 제어 레지스터(254)는 PS(202)를 파워다운(power down)하는 것, PS(202)의 특정 인터페이스를 독립적으로 파워다운 또는 비활성화하는 것 등과 같은 추가의 기능을 조절할 수 있다. 제어 레지스터(254)는 제어 레지스터(254)를 코어 스위치(236)에 결합하는 예를 들면 APB(도시 생략됨)와 같은 버스를 통하여 액세스될 수 있다.
PS(202)는 또한 프로그래머블 회로(204)와 직접 결합하는 하나 이상의 인터페이스(256)(256A-256D로 표시됨)를 포함할 수 있다. 일 실시형태에 있어서, 인터페이스(256)의 하나 이상 또는 전부는 ARM에 의해 공개된 것처럼 AMBA AXI 프로토콜 명세서(AXI)에 따라 구현될 수 있다. 예를 들면, 각각의 인터페이스(256)는 AMBA AXI 프로토콜 명세서 v.3.0과 일치하게 구현될 수 있으며, 이 문헌은 여기에서의 인용에 의해 그 전체가 본원에 통합된다. 일반적으로, AXI는 서브미크론 상호접속에 적합한 고성능, 고주파수 인터페이스이다.
다시 도 2를 참조하면, 예컨대 인터페이스(256A, 256B)는 각각 프로그래머블 회로(204)를 코어 스위치(236)에 결합하는 2개의 32-비트 채널을 제공하도록 구현될 수 있다. 인터페이스(256A)는 다목적 마스터 인터페이스로서 구현될 수 있다. 인터페이스(256A)는, 예를 들면, PS(202) 및/또는 그 내부의 DMA 제어기로부터 프로그래머블 회로(204)로 데이터의 다목적 전송을 수행하기 위해 사용될 수 있다. 인터페이스(256B)는 다목적 슬레이브 인터페이스로서 구현될 수 있다. 예를 들면, 인터페이스(256A)는 PS(202)와 프로그래머블 회로(204) 간에 다목적 데이터 전송을 수행하기 위해 사용될 수 있다.
인터페이스(256A-256B) 및 코어 스위치(236)를 통하여, 프로그래머블 회로(204)에서 구현되는 회로들은 각종의 I/O 장치(240, 242, 246, 248)에 액세스할 수 있다. 코어 스위치(236)와 함께 인터페이스(256A 및/또는 256B)를 통하여, 프로그래머블 회로(204) 내의 회로들은 OCM(222)에 직접 및 메모리 제어기(228)를 통하여 오프칩 메모리 등에 또한 액세스할 수 있다.
인터페이스(256C)는 프로그래머블 회로(204)를 코어 컴플렉스(206), 더 구체적으로는 SCU(218)에 직접 결합하는 64-비트 슬레이브 인터페이스로서 구현될 수 있다. 인터페이스(256C) 및 SCU(218)를 통하여, 프로그래머블 회로(204)에서 구현되는 회로들은 각 코어(208, 210) 내의 L1 캐시, IRQ(216), L2 캐시(220), 및 OCM(222)에 대한 직접 액세스가 제공된다. 따라서, 프로그래머블 회로(204) 내의 회로들은 메모리에 대한 판독 및/또는 기록을 행할 수 있고 코어 컴플렉스(206) 내에서 발생 및 발휘되는 인터럽트를 검출할 수 있다. 예를 들면, 인터페이스(256C)는 코프로세서로서 기능하는 회로에 의해 사용하기에 적합한 코어 컴플렉스(206)에 대한 동기식 액세스(coherent access)을 제공할 수 있다. 설명에 있어서, 사용자 회로(280)의 형태로 프로그래머블 회로(204)에서 구현되는 소프트 프로세서는 인터페이스(256c)를 통하여 PS(202)와 통신할 수 있다.
프로그래머블 회로(204)는 I/O 장치(240, 242, 246, 248)로부터 인터럽트를 직접 검출하도록 또는 IRQ(216)로부터 인터럽트를 검출하도록 구성될 수 있다. IRQ(216)는 프로그래머블 회로(204)가 코어 컴플렉스(206)에서 발원하는 프로세서 특정 또는 프로세서 발생 인터럽트를 검출하게 한다는 점을 이해하여야 한다. 신호(290)는 또한 포트 또는 신호로서 IRQ(216)에 제공될 수 있는 프로그래머블 회로(204)로부터의 하나 이상의 인터럽트 및/또는 포트 또는 신호로서 프로그래머블 회로(204)에 제공될 수 있는 PS(202), 및 더 구체적으로 코어 컴플렉스(206)로부터의 인터럽트의 하나 이상의 카피를 나타낼 수 있다.
인터페이스(256D)는 복수(예를 들면, 4개)의 64-비트 슬레이브 인터페이스를 제공하도록 구현될 수 있다. 인터페이스(256D)는 다량의 데이터를 프로그래머블 회로(204)에서 구현되는 회로들과 PS(202) 사이에서 효율적으로 교환하기 위해 사용될 수 있다. 도시된 것처럼, 인터페이스(256D)는 프로그래머블 회로(204)에서 구현되는 회로들에게 메모리 스위치(238)를 통한 OCM(222)에 대한 액세스 및 메모리 스위치(238)와 메모리 제어기(228)를 통한 오프칩 메모리에 대한 액세스를 제공한다.
또한, PS(202)는 PS 전압 검출기(292)를 포함할 수 있다. PS 전압 검출기(292)는 신호 294로 표시된 전원으로부터의 유입 전압원을 모니터링할 수 있다. 신호(294)의 전압이 미리 정해진 전압 레벨에 부합하다고 결정한 것에 응답하여, PS 전압 검출기(292)는 제어 신호(도시 생략됨)를 발행하여 하나 이상의 다른 컴포넌트를 인에이블할 수 있다. 예를 들면, 신호(294)의 전압이 적어도 최소 전압 레벨이라는 결정에 응답하여, PS 전압 검출기(292)는 IC(200)의 하나 이상의 IOB를 인에이블할 수 있다. 다른 예로서, 신호(294)의 전압이 최소 전압 레벨에 부합한다는 결정에 응답하여, PS 전압 검출기(292)는 레벨 시프팅 회로(296)로서 집합적으로 나타낸 하나 이상의 레벨 시프터를 인에이블할 수 있다. PS 전압 검출기(292)의 추가의 기능은 나머지 도면과 관련하여 설명될 것이다.
IC(200)는 PS(202)와 프로그래머블 회로(204) 간의 신호 전송을 촉진하기 위해 레벨 시프팅 회로(296)를 포함할 수 있다. 레벨 시프팅 회로(296)는 PS(202)를 프로그래머블 회로(204)로부터 전기적으로 격리시키는 것을 돕고, 제1 전압 레벨의 신호를 제2 전압 레벨의 신호로 변환하도록 구성된다. 일부 경우에, 제1 및 제2 전압 레벨은 상이한 전압 값일 수 있다. 예를 들면, 일부 경우에, PS(202)는 프로그래머블 회로(204)에 제공된 전력 신호와 다른 전압 전위를 가진 전력 신호를 이용하여 동작할 수 있다. 다른 경우에, PS(202)는 프로그래머블 회로(204)에 제공된 전력 신호와 동일한 전압 전위를 가진, 또는 갖도록 의도되는 하나 이상의 전력 신호를 수신할 수 있다. 그러나, 전력 신호는 독립적으로 제어될 수 있고, 그 결과 전력 신호의 전압 전위의 유사성 또는 동일성에도 불구하고 2개의 상이한 전력 영역을 발생한다. 전력 신호의 독립성은 프로그래머블 회로(204)에 제공된 전력 신호와 비교할 때 PS(202)에 제공된 전력 신호의 전압 전위의 작은 변동을 야기할 수 있다. 레벨 시프팅 회로(296)는 PS(202)가 하나의 전력 영역으로서 기능하게 하고 프로그래머블 회로(204)가 다른 독립 전력 영역으로서 기능하게 하여, 예를 들면 PS(202)가 전력 투입 및 동작 상태를 유지하는 동안 프로그래머블 회로(204)가 PS(202)와는 무관하게 전력 투입 및 전력 차단될 수 있게 한다.
전력 신호의 전위 변동을 설명하고 PS(202)와 무관하게 프로그래머블 회로(204)를 주기적으로 전원 공급하는 능력을 지원하기 위해, PS(202)와 프로그래머블 회로(204) 사이에서 교차하는 신호는 레벨 시프팅 회로(296)를 통과할 수 있다. 비록 단일 블록으로서 도시되어 있지만, 여기에서 설명하는 각종 인터페이스, 예를 들면, FMIO 인터페이스(252), 트레이스 인터페이스(248B), 인터페이스(256A-256D), 프로세서 구성 액세스 포트(PCAP)(258), 및 클럭 신호와 DMA 신호와 같은 임의의 다른 신호는 각각 레벨 시프팅 회로(296)로 표시된 레벨 시프터를 포함하거나 통과할 수 있다. 레벨 시프팅 회로(296)는 PS(202)와 프로그래머블 회로(204) 사이에서 전파하는 신호의 전압 레벨이 정합되는 것을 보장한다.
IC(200)는 하나 이상의 다른 부류의 레벨 시프터를 레벨 시프팅 회로(296) 내에 포함할 수 있다. 예를 들면, 제1 부류의 레벨 시프터는 신호, 예를 들면 구성 신호와 같은 시스템 레벨 신호, 경계 주사 신호(boundary scan signal) 및/또는 기능을 PS(202)로부터 뒤에서 더 자세히 설명되는 시스템 모니터(262)와 같은 프로그래머블 회로(204) 내의 컴포넌트에 직접 접속하도록 구성될 수 있다. 제1 부류의 레벨 시프팅 회로(296)에 속하는 레벨 시프터는 PS(202)가 리세트, 예를 들면 동작 모드에 진입하고 프로그래머블 회로(204)에 대한 전력이 동작에 적당한 것으로 결정된 때 인에이블될 수 있다. 프로그래머블 회로(204)의 동작에 적당한 전력은 프로그래머블 회로(204)의 구성이 발생하기에 충분한 전력 및/또는 프로그래머블 회로(204)에서 구현되는 임의의 회로가 일단 구현되었을 때 기능하기에 충분한 전력을 포함할 수 있다.
제2 부류의 레벨 시프터는 프로그래머블 회로(204)로부터의 테스트 신호를 PS(202)에 접속하도록 구성될 수 있다. 제2 부류의 레벨 시프터는 PS(202)가 리세트되고 프로그래머블 회로(204)가 적당한 전력을 가질 뿐만 아니라 회로를 구현하도록 구성된 때 인에이블될 수 있다. 디스에이블된 때, 제2 부류의 레벨 시프터는 디폴트 로직 하이를 출력하도록 구성될 수 있다. 다른 실시형태로서, 제2 부류의 레벨 시프터는 디스에이블된 때 디폴트 로직 로우를 출력하도록 구성될 수 있다.
제3 부류의 레벨 시프터는 PS(202)와 프로그래머블 회로(204) 사이에서 사용자 신호를 접속하도록 구성되거나 사용자 신호를 접속하기 위해 이용할 수 있다. 제3 부류의 레벨 시프터는 PS(202)가 리세트되고 프로그래머블 회로(204)가 적당한 전력을 가질 뿐만 아니라 구성된 때 인에이블될 수 있다. 일 실시형태로서, 제3 부류의 레벨 시프터는 디스에이블된 때 디폴트 로직 로우를 출력하도록 구성될 수 있다. 다른 실시형태로서, 제3 부류의 레벨 시프터는 디스에이블된 때 디폴트 로직 하이를 출력하도록 구성될 수 있다.
제4 부류의 레벨 시프터는 프로그래머블 회로(204)와 PS(202) 사이에서 하나 이상의 시스템 레벨 신호를 운반하도록 구성될 수 있다. 제4 부류의 레벨 시프터는 항상 인에이블, 예를 들면 동작하도록 구성될 수 있다.
PS(202)는 PCAP(258)를 또한 포함한다. 도시된 것처럼, PCAP(258)는 프로그래머블 회로(204) 내에 배치된 구성 제어기(260) 및 시스템 모니터링 블록(262)에 결합될 수 있다. 비록 도시하지는 않았지만, PCAP(258)는 코어 스위치(236)에 결합되어 PS(202)가 프로그래머블 회로(204)의 구성에 사용되는 구성 데이터를 임의의 I/O 장치(240-248, 228)를 통해 수신할 수 있게 한다.
프로그래머블 회로(204)는 프로그래머블 상호접속 회로를 이용하여 함께 결합될 수 있는 하나 이상의 프로그래머블 회로 블록을 포함하도록 구현될 수 있다. 프로그래머블 회로 블록 및 프로그래머블 상호접속 회로는 IC(200)에 로드된 구성 데이터에 기초하여 하나 이상의 다른 물리적 회로, 예를 들면, 사용자 회로(280)를 구현하도록 구성될 수 있다. 프로그래머블 회로(204)는, 뒤에서 자세히 설명하는 것처럼 내부에서 구현되는 각종 하드와이어드 회로를 예외로 하고, 구성 데이터가 구성 메모리에 로드되어 물리적 회로가 프로그래머블 회로(204)에서 구현되게 하기까지는 동작하거나 기능하지 않는다는 점을 이해하여야 한다. 주지된 바와 같이, 로드되는 구성 데이터는 FMIO 인터페이스(252), 인터럽트(290), 인터페이스(256) 등의 하나 이상의 신호에 대한 사용자 회로(280)의 접속성을 특정한다.
구성 제어기(260) 및 시스템 모니터링 블록(262)은 하드와이어드 회로의 형태로 구현될 수 있다. 구성 제어기(260)는 구성 데이터를 구성 메모리 셀에 기록하여 구성 데이터에 의해 특정된 회로를 프로그래머블 회로(204)에서 물리적으로 구현시키는 책임을 갖는다. 시스템 모니터링 블록(262)은 아날로그-디지털 변환, 전압 모니터링, 전류 모니터링, 및/또는 온도 모니터링와 같은 기능을 수행할 수 있다.
주지된 바와 같이, 프로그래머블 회로(204)는 하나 이상의 I/O 장치를 하드와이어드 회로의 형태로 구현하도록 또한 구성될 수 있다. 예를 들면, JTAG 인터페이스(264), 하나 이상의 MGT(266A-266D), 주변 컴포넌트 상호접속 익스프레스(PCIe) 인터페이스(268), 내부 구성 액세스 포트(ICAP)(270), 및 보안 포트(272)는 IC(200)의 프로그래머블 회로(204) 내에 배치됨에도 불구하고 하드와이어드 회로로서 포함될 수 있다. 프로그래머블 회로(204) 내의 각종 I/O 장치는 구현될 수 있는 예시적인 인터페이스를 나타낸 것이고, 이 명세서에서 설명하는 하나 이상의 실시형태로 한정하거나 제한하는 의도는 없다.
예를 들면, 구성 데이터는 IC(200)에 로드되고 구성 제어기(260)에 의해 수신될 수 있다. 일 실시형태로서, 구성 데이터는 IC(200)의 구성 프로세스를 제어할 수 있는 PS(202)를 통해 수신될 수 있다. 구성 제어기(260)는 PCAP(258)를 통해 PS(202)로부터 수신된 구성 데이터를 IC(200)의 구성 메모리(도시 생략됨)에 로드할 수 있다. 사용자 회로(280)와 같은 다른 물리적 회로는 IC(200)의 구성 메모리에 로드된 특수 구성 데이터에 의해 특정된 대로 프로그래머블 회로(204)에서 구현 또는 형성될 수 있다. 이러한 방식의 구성 데이터의 로딩은, 하드와이어드 회로의 사용 때문에, 프로그래머블 회로(204)의 초기 구성을 요구하지 않는다는 점을 이해하여야 한다. 프로그래머블 회로(204)에서 구현되는 회로들은, 구성 데이터의 로딩 때문에, 비록 물리적 회로라 하더라도, 회로가 하드-와이어링되거나 IC(200) 내에서 다른 방식으로 고정되는 대신에 프로그래머블 회로(204) 내에서 형성된다는 점(이 점이 PS(202)와 구별된다)에서 전형적으로 "소프트"라고 부른다.
도 2에 도시된 IC 구조는 다른 방식으로는 달성할 수 없는 각종의 상이한 형태로 프로그래머블 회로(204)와 PS(202)를 함께 협력적으로 사용할 수 있게 한다. 사용자 회로(280)는 여기에서 설명하는 각종 인터페이스 중 임의의 인터페이스를 통하여 PS(202)에 결합될 수 있다. 직접 액세스가 인터페이스(256)에 의해 제공되고, PS(202)에 대한 다른 액세스가 FMIO 인터페이스(252)를 통해 촉진될 수 있다. 일 예로서, 프로그래머블 회로(204)는 규정된 인터페이스를 가진 하나 이상의 외부 처리 노드, 예를 들면 IC(200)에 위치하지 않은 처리 노드에 결합할 수 있다. 프로그래머블 회로(204)는 예를 들면 프로그래머블 회로(204)에 의해 사용되도록 예약된 I/O 핀을 통하여 외부 처리 노드에 액세스할 수 있다. 프로그래머블 회로(204)는 인터페이스(256)를 통해 I/O 장치(240-248)와 같은 하나 이상의 I/O 장치 및/또는 메모리 제어기(228)에 또한 액세스할 수 있다.
다른 예로서, PS(202)는 프로그래머블 회로(204)에서 구현되는 회로에 "표준 I/O" 기능을 제공하도록 구성될 수 있다. 예를 들면, PS(202)는 코어 컴플렉스(206)에서 실행하는 운영체제의 일부로서 이용될 수 있도록 표준 입력(stdin), 표준 출력(stdout), 및/또는 표준 에러(stderr) 기능의 라이브러리를 로드 및 실행하도록 구성될 수 있다. 프로그래머블 회로(204)에서 구현되는 사용자 회로(280)는 하나 이상의 인터페이스(256)를 통해 코어 컴플렉스(206)에 의해 제공되는 표준 I/O 기능을 호출 또는 그러한 표준 I/O 기능에 액세스하도록 구성될 수 있다. 프로그래머블 회로(204) 내의 회로, 예를 들면 소프트 프로세서가 PS(202)로부터의 표준 I/O 기능에 액세스할 수 있게 함으로써, 전형적으로 프로그래머블 회로(204) 내에서 표준 I/O 기능을 구현할 때 발생하는 오버헤드는 PS(202)에서 표준 I/O 구현을 유지함으로써 극복할 수 있다. 이로써, 덜 복잡한 간소화된 제어기가 다른 경우와는 달리 프로그래머블 회로(204)에서 구현될 수 있다.
도 3은 이 명세서에서 설명하는 다른 실시형태에 따라 도 2의 IC(200)를 보인 제3 블록도이다. 도 3은 선택된 프로세서 하드웨어 자원의 동작을 묘사하는 IC(200)의 요약된 모습을 보인 것이다. 도 3에서, I/O 장치(305, 310)는 I/O 장치(242-248), 예를 들면 242A-242C, 246A-246D, 및/또는 248A-248B 중의 임의의 2개를 나타내는 것으로 의도된다. 또한, 설명의 목적으로, I/O 장치(305, 310)는 코어 스위치(236)를 통하여 코어 컴플렉스(206)에 결합하는 것으로 도시되어 있다. 장치들이 데이터를 교환하는 PS(202)의 각종 메모리, 예를 들면, L2 캐시(220) 및 OCM(222)은 도시되지 않았다. 유사하게, 인터페이스(256)는 도 2와 관련하여 설명한 각종 인터페이스의 포괄적인 표시로서 도시되어 있다. 예를 들면, 인터페이스(256)는 인터페이스(256A-256D) 중의 임의의 하나 이상을 나타낼 수 있다.
도시된 것처럼, PS(202)는 I/O 장치(305, 310)로부터의 신호를 I/O 핀(325)에 또는 FMIO 인터페이스(252)에 선택적으로 결합할 수 있는 복수의 스위치(315, 320)를 포함할 수 있다. 비록 도시되지는 않았지만, PS(202)의 I/O 장치(I/O 장치(242-248))를 멀티플렉서(250)에 결합하는 각 와이어가 도 3에 도시된 것처럼 스위칭될 수 있다는 점을 이해하여야 한다. 일 실시형태로서, PS(202)에 제공되는 구성 데이터, 예를 들면, 도 2의 제어 레지스터(254)에 로드된 데이터는 I/O 장치(305) 및/또는 I/O 장치(310)가 I/O 핀(325)에 결합되었는지 FMIO 인터페이스(252)에 결합되었는지 결정할 수 있다. 각 I/O 장치(242-248)는 I/O 핀(325)에 또는 FMIO 인터페이스(252)에 결합되도록 독립적으로 구성될 수 있다.
스위치(315, 320)는 공지된 다양한 스위칭 회로들 중의 임의의 것, 예를 들면 멀티플렉서 등으로 구현될 수 있다. 스위치(315)가 I/O 장치(305)를 I/O 핀(325)에 결합한 때, I/O 장치(305)는 외부 처리 노드(330)에 결합될 수 있다. 도 3에 도시된 예에서, I/O 핀(325)은 PS(202)에 의해서만 사용되도록 전용될 수 있다. 이와 관련하여, I/O 핀(325)은 멀티플렉서(250)(도 3에는 도시 생략됨)에 결합되고, 프로그래머블 회로(204) 또는 예컨대 사용자 회로(280)에 의한 용도로 사용될 수 없다. 스위치(315)가 I/O 장치(305)를 I/O 핀(325)으로부터 분리한 때, I/O 장치(305)는 FMIO 인터페이스(252) 및 예를 들면 프로그래머블 회로(204)와 이 프로그래머블 회로(204)에서 구현되는 선택된 회로, 예컨대 사용자 회로(280)에 결합된다.
유사하게, 스위치(320)가 I/O 장치(310)를 I/O 핀(325)에 결합한 때, I/O 장치(310)는 외부 처리 노드(335)에 결합될 수 있다. 스위치(320)가 I/O 장치(310)를 I/O 핀(325)으로부터 분리한 때, I/O 장치(310)는 FMIO 인터페이스(252) 및 예를 들면 프로그래머블 회로(204)와 이 프로그래머블 회로(204)에서 구현되는 선택된 회로, 예컨대 사용자 회로(280)에 결합된다. 다른 실시형태로서, 데이터가 외부 처리 노드(330, 335)에 제공된 때, 데이터는 FMIO 인터페이스(252)를 통해 사용자 회로(280)에 동시에 제공되도록 스위치(315, 320)를 통하여 재발생될 수 있다.
스위치(315, 320)는 서로 독립적으로 동작할 수 있다. 따라서, I/O 장치(310)가 FMIO 인터페이스(252)에 결합되어 있는 동안 I/O 장치(305)가 I/O 핀(325)에 결합될 수 있다. 유사하게, I/O 장치(310)가 I/O 핀(325)에 결합되어 있는 동안 I/O 장치(305)가 FMIO 인터페이스(252)에 결합될 수 있다. 다른 예로서, I/O 장치(305, 310)가 둘 다 I/O 핀(325)에 결합될 수도 있고, 또는 둘 다 FMIO 인터페이스(252)에 결합될 수도 있다.
외부 처리 노드(330, 335)는 특수 인터페이스를 이용하여 통신하도록 구성된 각종 시스템, 회로 또는 컴퓨팅 시스템 중의 임의의 것일 수 있다. 예를 들면, 외부 처리 노드(330 및/또는 335)는 I2C 유형의 인터페이스, CAN 인터페이스, 직렬 주변장치 인터페이스(SPI) 등을 구현할 수 있다. 외부 처리 노드(330 및/또는 335)의 인터페이스는 핀(325)에 결합될 수 있다. 주지된 바와 같이, 핀(325)은 멀티플렉서(250)를 통하여 하나 이상의 I/O 장치(305, 310)에 결합될 수 있다.
PS(202)의 적당한 구성을 통해, 프로그래머블 회로(204)에서 실증되는 사용자 회로(280)는 FMIO 인터페이스(252)를 통하여 I/O 장치(305, 310) 중의 어느 하나 또는 둘 다에 결합될 수 있다. 이 방식으로, 사용자 회로(280)는 IC(200)의 외부 I/O 핀, 예를 들면 회로 기판 레벨 트레이스 등에 결합되지 않고 I/O 장치(305 및/또는 310)와 협력적으로 사용되어 PS(202)에 전용되는 I/O 핀과 프로그래머블 회로(204)에 전용되는 I/O 핀 사이에서 데이터를 라우트할 수 있다.
일 실시형태로서, 사용자 회로(280)는 FMIO 인터페이스(252)에 결합될 수 있다. 예를 들면, 스위치(315)는 I/O 장치(305)를 FMIO 인터페이스(252)에 결합한 상태로 있을 수 있다. 사용자 회로(280)는 FMIO 인터페이스(252)를 통해서 또는 인터페이스(256)와 코어 스위치(236)를 통해서 I/O 장치(305)에 결합될 수 있다. 따라서, I/O 장치(305)에 입력되거나 I/O 장치(305)로부터 출력되는 데이터는 사용자 회로(280)를 통하여 라우트되고 사용자 회로(280)에 의해 처리될 수 있다. 사용자 회로(280)는 또한 I/O 핀(340)에 결합될 수 있다. I/O 핀(340)은 프로그래머블 회로(204)에 의한 용도로 전용될 수 있고, 그래서 PS(202)에 의한 용도로 사용되지 못할 수 있다. 예를 들면, 데이터는 I/O 핀(340)을 통해 수신되고, 사용자 회로(280)에서 처리되며, I/O 장치(305)에 제공될 수 있다. 유사하게, I/O 장치(305)로부터 수신된 데이터는 사용자 회로(280)에 의해 처리되어 I/O 핀(340)에 출력될 수 있다.
처리 데이터는, 예를 들어서 사용자 회로(280)에 의해 수행될 때, 수신된 데이터를 수정하고 수정된 데이터를 출력하는 것, 또는 수신된 데이터를 특정의 특성에 대하여 평가하고 특정의 특성이 수신된 데이터에 존재함을 표시하는 신호를 출력하는 것과 관계될 수 있다. 수신된 데이터를 모니터링하는 경우에, 수신된 데이터는 사용자 회로(280)로부터의 임의의 표시 신호에 추가하여 또한 출력될 수 있다.
일 예로서, 사용자 회로(280)는 FMIO 인터페이스(252)를 통해 I/O 장치(305)로부터 수신된 데이터를 제1 포맷 또는 프로토콜로부터 제2 포맷 또는 프로토콜로 변환하도록 구성될 수 있다. 수신된 데이터는 제1 프로토콜에 따라 포맷화되고, 사용자 회로(280)에 의해 처리되며, 제2의 다른 프로토콜의 처리 데이터로서 출력될 수 있다. 처리된 데이터는 핀(340)으로부터 출력될 수 있다.
다른 예로서, 사용자 회로(280)에서 수신된 데이터는 증가(augmentation)를 통하여 수정될 수 있다. 예를 들어서, 사용자 회로(280)는 타이밍 정보, 예컨대 타임 스탬프를 I/O 핀(340)에 결합된 처리 노드(도시 생략됨)로부터 I/O 핀(340)을 통해 수신된 데이터에 추가하도록 구성될 수 있다. 예를 들어서 처리 노드로부터 수신된 이더넷 패킷은 타임 스탬프에 의해 증가되고, 처리된 데이터로서 사용자 회로(280)로부터 출력될 수 있다. 사용자 회로(280)는 FMIO 인터페이스(252) 및 스위치(315)를 통하여 I/O 장치(305)에 데이터를 출력할 수 있다. 다른 예로서, 사용자 회로(280)는 처리된 데이터를 인터페이스(256)를 통하여 PS(202)에 출력하고, 코어 스위치(236)를 통해 I/O 장치(305)에 데이터를 제공할 수 있다.
다른 예로서, 사용자 회로(280)에 의해 수신된 데이터는 수신 데이터 내의 특수한 미리 정해진 특성에 대하여 처리, 예를 들면 평가될 수 있다. 미리 정해진 특성의 검출에 응답하여, 사용자 회로(280)는 I/O 장치(305) 또는 인터페이스(256)에 출력 및 제공될 수 있는 통지 신호를 발생할 수 있다. 사용자 회로는 또한 각각의 스위치(315 및/또는 320)를 통해 FMIO 인터페이스(252)에 결합된 I/O 장치(305, 310) 중의 어느 하나 또는 둘 다에 FMIO 인터페이스(252)를 통하여 통지 신호를 출력하도록 구성될 수 있다.
도 4는 이 명세서에서 설명하는 다른 실시형태에 따라 도 2의 IC(200)를 보인 제4 블록도이다. 도 4는 PS(202)의 I/O 장치(305)와 같은 프로세서 하드웨어 자원과 프로그래머블 회로(204)에서 구현되는 사용자 회로(280)와 같은 회로의 공유를 설명하기 위해 IC(200)의 요약된 모습을 보인 것이다. 도 3과 관련하여 주지된 것처럼, IC(200) 내의 하나 이상의 컴포넌트는 명확성 및 설명의 용이성을 위해 도시하지 않았다. 예를 들면, FMIO 인터페이스(252), 스위치(315, 320), 및 프로그래머블 회로(204) 내의 각종 다른 컴포넌트는 도 4에서 생략되어 있다.
도 4에 도시된 예에 있어서, I/O 장치(305)는 I/O 장치(240, 242, 246 및/또는 248) 중의 임의의 하나를 나타낼 수 있다. 일반적으로, PS(202)와 프로그래머블 회로(204) 사이에서 I/O 장치(305)를 공유하는 것은 언제 I/O 장치(305)가 이용할 수 있는지 및 언제 I/O 장치(305)가 이용할 수 없는지를 표시하기 위해 록킹 메커니즘을 사용할 필요가 있다. 도 4는 하드웨어 록킹 메커니즘이 프로그래머블 회로(204)에서 구현되는 예를 보인 것이다. 사용자 회로(280)가 I/O 장치(305)를 통한 제어가 허가된 때, 사용자 회로(280)는 코어 스위치(236)와 함께 인터페이스(256)를 통해 I/O 장치(305)에 액세스할 수 있다. 코어 컴플렉스(206), 또는 코어 컴플렉스(206)에서 실행되는 프로세스가 I/O 장치(305)를 통한 제어가 허가된 때, 코어 컴플렉스(206)는 코어 스위치(236)와 함께 하나 이상의 메모리(도시 생략됨)를 통해 통신할 수 있다.
록킹 회로(405)는, 도시된 것처럼, 프로그래머블 회로(204)에서 구현될 수 있다. 록킹 회로(405)는 사용자 회로(280)와 PS(202)가 통신할 수 있게 하는 규정된 인터페이스를 가질 수 있다. 예를 들면, 코어 컴플렉스(206)는 인터페이스(256)를 통해 록킹 회로(405)와 통신할 수 있다. 인터페이스(256)를 록킹 메커니즘(405)과 결합하기 위해 프로그래머블 회로(204) 내에 적당한 신호 링크가 확립될 수 있다. 프로그래머블 회로(204)와 PS(202) 간에 공유되어야 하는 I/O 장치(305)는 록킹 회로(405) 내에 위치된 특수 레지스터, 예를 들면 레지스터(410)와 연합될 수 있다. 록킹 회로(405)는 단지 하나의 엔티티, 예를 들면 프로그래머블 회로(204) 내의 특수 회로, 코어 컴플렉스(206)에서 실행되는 특수 스레드 또는 프로세스 등이 I/O 장치(305)의 액세스 또는 사용이 허가될 수 있도록 배타적 액세스를 구현할 수 있다. 배타적 액세스는 "배타적 로드 스토어"(load store exclusive) 기능이라고도 또한 부를 수 있다.
설명에 있어서, 이더넷, UART 등의 유형의 I/O 장치(305)가 코어 컴플렉스(206)와 사용자 회로(280) 간에 공유되는 경우를 생각하자. 록킹 회로(405)는 공유되는 I/O 장치(305)의 상태, 예를 들면 소유권과 제어를 추적하는 데 전용되는 레지스터(410)를 포함할 수 있다. 레지스터(410)에서 공유되는 값은, 예를 들면, I/O 장치(305)가 이용가능한지 또는 비지(busy)한지를 표시할 수 있다. 일 실시형태로서, I/O 장치(305)를 통한 제어가 허가되는 엔티티와 관련된 및/또는 그 엔티티를 유일하게 식별하는 식별자가 또한 레지스터(410)에 저장될 수 있다. 따라서, 사용자 회로(280) 또는 코어 컴플렉스(206)에 의해 I/O 장치(305)를 통한 제어가 필요한 때는 언제든지, 제어를 원하는 엔티티는 록킹 회로(405)로부터 I/O 장치(305)의 제어를 요청해야 한다.
제어가 요청되고 I/O 장치(305)가 이용가능한 때, 록킹 회로(405)는 요청 엔티티에게 I/O 장치(305)를 통한 제어를 허가함으로써 요청 엔티티에게 응답할 수 있다. 록킹 회로(405)는, 예를 들면, 요청 엔티티가 I/O 장치(305)를 통한 제어를 수신하였음을 표시하는 값 또는 신호를 요청 엔티티에게 돌려보낼 수 있다. 또한, 록킹 회로(405)는 I/O 장치(305)가 더 이상 이용할 수 없음을 표시하는 값을 I/O 장치(305)와 연합된 레지스터(410)에 자동으로 및 요청 엔티티에 응답하여 저장할 수 있다. 주지된 바와 같이, 제어가 허가된 엔티티를 특정하는 식별자는 레지스터(410)에 또한 저장될 수 있다. 따라서, 2개의 엔티티가 동일한 자원, 예를 들면 동일한 프로세서 하드웨어 자원, 예를 들면, I/O 장치(305)를 동시에 요청할 때, 단지 하나의 요청 엔티티만이 피요청 자원에 대한 액세스가 허가된다.
록킹 회로(405)가 PS(202) 또는 프로그래머블 회로(204)에 위치된 다른 엔티티로부터 I/O 장치(305)를 통한 제어의 요청을 추가로 수신하고, I/O 장치(305)가 이용불능임을 I/O 장치(305)에 대한 레지스터(410)가 표시한 때, 록킹 회로(405)는 에러, 또는 I/O 장치(305)가 이용불능임을 표시하는 다른 표시로 응답한다. I/O 장치(305)를 통한 제어를 가진 엔티티가 더 이상 제어를 요구하지 않은 때, 그 엔티티는 록킹 회로(405)에게 통지할 수 있다. 그 응답으로, 록킹 회로(405)는 I/O 장치(305)가 이용가능임을 표시하는 값을 레지스터(410)에 저장하고, 이것에 의해 I/O 장치(305)를 요청 엔티티의 제어로부터 해제할 수 있다. 또한, 레지스터(410)에 역시 저장된 엔티티에 대한 식별자가 소거 또는 삭제될 수 있다.
도시된 것처럼, 인터럽트 신호가 신호(290)를 통해 I/O 장치(305)로부터 프로그래머블 회로(204)에 및 코어 컴플렉스(206)에 전달된다. I/O 장치(305)는 I/O 장치(305)의 특정 유형 및 수행되는 트랜잭션 또는 동작에 따라 각종 이벤트에 응답하여 신호(290)를 통해 인터럽트를 트리거하도록 구성될 수 있다. 주지된 바와 같이, I/O 장치(305)는 코어 컴플렉스(206) 및 프로그래머블 회로(204)에 제공될 수 있는, 신호(290)로 표시된 하드와이어드 인터럽트 신호에 결합될 수 있다. I/O 장치가 인터럽트를 발생하게 하는 이벤트의 예는 I/O 장치(305)가 통신하는 외부 처리 노드로부터 데이터를 수신하는 것, I/O 장치(305)로부터 외부 처리 노드로의 요청이 타임 아웃되는 것 등을 포함할 수 있다.
신호(290)에서 인터럽트를 발생시키는 I/O 장치(305)에 응답하여, 그 때에 I/O 장치(305)를 통한 제어를 갖는 특수 엔티티는 필요할 때 응답할 수 있다. 예를 들면, 사용자 회로(280)가 I/O 장치(305)를 통한 제어를 가질 때, 사용자 회로(280)는 인터럽트를 서비스할 수 있다. 코어 컴플렉스(206), 예를 들면, 그 내부에서 실행되는 임의의 프로세스는 인터럽트를 무시할 수 있다. 유사하게, 코어 컴플렉스(206)에서 실행되는 프로세스가 I/O 장치(305)를 통한 제어를 가질 때 그 프로세스 또는 다른 프로세스는 인터럽트를 서비스할 수 있다. 사용자 회로(280)는 인터럽트를 무시할 수 있다.
도 4는 PS(202)의 I/O 장치가 프로그래머블 회로(204)에서 구현되는 회로와 공유되는 경우를 보인 것이다. 다른 실시형태로서, 프로그래머블 패브릭(204), 예를 들면 사용자 회로(280)는 I/O 장치(305)를 통한 배타적 제어가 주어질 수 있다. 그 경우에, 프로그래머블 회로(204)가 I/O 장치(305)를 통한 배타적 제어를 가질 때, 록킹 메커니즘은 필요 없다. PS(202)는 예를 들면 프로그래머블 회로(204)가 전력 차단되지 않는 한, I/O 장치(305)를 통한 제어를 얻으려고 시도하지 않는다.
도 5는 이 명세서에서 설명하는 다른 실시형태에 따라 도 2의 IC(200)를 보인 제5 블록도이다. 도 5는 PS(202)의 I/O 장치(305)와 같은 프로세서 하드웨어 자원을 프로그래머블 회로(204)에서 구현되는 사용자 회로(280)와 같은 회로와 공유하는 것을 설명하기 위해 IC(200)의 요약된 모습을 보인 것이다. IC(200) 내의 하나 이상의 컴포넌트들은 명확성 및 설명의 용이성을 위해 도시 생략되었다. 예를 들면, FMIO 인터페이스(252), 스위치(315, 320), 및 프로그래머블 회로(204) 내의 다른 각종 컴포넌트들은 도 5에 도시되어 있지 않다.
도 5는 메모리 제어기(228)가 I/O 장치(305)를 통한 제어를 허가하기 위한 록킹 메커니즘으로서 사용될 수 있는 하드웨어 록킹 메커니즘의 예를 보인 것이다. 메모리 제어기(228)는 또한 메모리 제어기(228)를 통해 IC(200)에 결합된 IC(200) 외부의 메모리, 예를 들면 외부에 위치한 RAM 소자에 어떤 엔티티가 액세스할 수 있는지를 결정하는 록킹 메커니즘으로서 기능할 수 있다.
메모리 제어기(228)는, 예를 들면, 배타적 로드 스토어 기능을 구현하도록 구성될 수 있다. 도 4의 록킹 회로를 구비한 경우와 같이 프로그래머블 회로(204)에 위치된 레지스터를 이용하는 대신에, 메모리 제어기(228)는 메모리 제어기(228) 자체를 비롯해서, PS(202)와 프로그래머블 회로(204) 간에 공유될 수 있는, 각 I/O 장치에 대하여 IC(200) 외부에 위치된 메모리 내의 메모리 위치를 이용할 수 있다. 따라서, 프로그래머블 회로(204) 내에 위치된 록킹 회로에 대하여 요청을 발행하는 대신에, 사용자 회로(280) 및 코어 컴플렉스(206)는 I/O 장치(305) 및/또는 메모리 제어기(228)와 같은 프로세서 하드웨어 자원에 대한 제어를 메모리 제어기(228)에게 직접 요청할 수 있다.
사용자 회로(280) 및 코어 컴플렉스(206)와 같은 요청 엔티티는 도 4와 관련하여 설명한 것처럼 I/O 장치(305)를 통한 제어를 실질적으로 요청할 수 있다. 그러나, 제어의 요청 및 제어의 해제의 통지는 메모리 제어기(228)로 향할 수 있다. 주지된 바와 같이, 일 실시형태에 있어서, 메모리 제어기(228)가 결합되는 IC(200) 외부에 위치된 RAM은 역시 PS(202)와 프로그래머블 회로(204) 간에 공유될 수 있다. 따라서, 제어에 대한 요청은 여전히 메모리 제어기(228)로 향할 수 있다. 주지된 바와 같이, 프로그래머블 회로(204)가 예컨대 I/O 장치(305) 또는 메모리 제어기(228)에 대한 배타적 액세스가 주어진 때, 제어가 IC(200)의 동작 중에 PS(202)와 프로그래머블 회로(204) 사이에서 동적으로 앞뒤로 변경하지 않기 때문에 록킹 메커니즘이 사용될 필요가 없다.
다른 실시형태로서, 코어 컴플렉스(206)는 특정의 요청 엔티티에게 할당된 I/O 장치 록킹과 함께 동작될 수 있다. 주지된 바와 같이, 인터페이스(256) 중의 하나, 예를 들면 256C는 사용자 회로(280)와 같은 회로에게 코어 컴플렉스(206)에 대한 코히어런트 액세스를 제공할 수 있다. 인터페이스(256C)를 통해서, 사용자 회로(280)는 PS(202)의 내부 캐시, 예를 들면 L1 캐시, L2 캐시(220) 및 OCM(222)을 볼 수 있다. 코히어런시를 제공하는 인터페이스(256C)를 사용함으로써, 프로그래머블 회로(204) 및 더 구체적으로 사용자 회로(280)는 I/O 장치(240)를 포함한 I/O 장치(305) 및/또는 메모리 제어기(228)의 공유를 위해 사용될 수 있는 다른 형태의 하드웨어 록킹 메커니즘을 내장 및 제공하는 코어 컴플렉스(206)의 배타적 로드 스토어 기능을 이용할 수 있다. 예를 들면, L1 캐시 및/또는 L2 캐시(220) 내의 메모리 위치는 I/O 장치(305)인지 및/또는 메모리 제어기(228)인지 I/O 장치의 이용가능성을 추적하기 위해 사용될 수 있다.
도 6은 이 명세서에서 설명하는 일 실시형태에 따라 I/O 장치를 공유하는 방법(600)을 보인 제1 흐름도이다. 더 구체적으로, 방법(600)은 I/O 장치의 코스-그레인드 공유(coarse-grained sharing)를 촉진할 수 있는 실시형태를 보인 것이다. 방법(600)은 이 명세서에서 설명한 IC, 예를 들면 프로그래머블 회로에 결합된 PS를 포함한 IC에 의해 구현될 수 있다.
방법(600)은 프로그래머블 회로에서 구현되는 하나 이상의 사용자 회로가 PS의 프로세서 하드웨어 자원을 PS의 코어 컴플렉스 내에서 실행하는 하나 이상의 프로세스와 공유하도록 구성된 실시형태를 설명한다. 예를 들면, 프로그래머블 회로 내에서, 캘리포니아 산호세에 소재하는 자일링스사(Xilinx, Inc.)로부터 입수가능한 마이크로블레이즈(MicroBlaze™) 소프트 프로세서와 같은 소프트 프로세서가 예를 들면 사용자 회로(280)로서 구현될 수 있다. 소프트 프로세서는 프로그래머블 회로에서 구현되거나, 코히어런트 액세스를 제공하는 인터페이스를 통해 결합된 소프트 프로세서와 함께 코어 컴플렉스에 의해 구현되거나, 또는 메모리 제어기에 의해 구현되는 하드웨어 록킹 메커니즘에 결합될 수 있다.
프로세서 하드웨어 자원은 PS의 I/O 장치(240-248) 및/또는 메모리 제어기(228)와 관련하여 설명한 것 중 임의의 것일 수 있다. 예를 들면, 공유되는 프로세서 하드웨어 자원은 QSPI와 같은 플래시형 인터페이스, 병렬 NOR/SRAM형의 인터페이스, NAND 인터페이스 등일 수 있다. 다른 예로서, 공유되는 프로세서 하드웨어 자원은 USB형 인터페이스, 이더넷형 인터페이스, SD형 인터페이스, UART형 인터페이스 등일 수 있다. 도 2의 I/O 장치(240-248)와 관련하여 설명한 각종 I/O 장치 유형 중 임의의 것이 공유될 수 있다. 더욱이, 메모리 제어기(228)는 PS와 프로그래머블 회로 사이에서 오프칩으로 위치된 RAM의 공유를 촉진하도록 공유될 수 있다.
따라서, 방법(600)은 록킹 메커니즘이 각종 엔티티로부터 PS의 프로세서 하드웨어 자원에 대한 제어의 요청을 모니터링할 수 있는 단계 605에서 시작한다. 요청을 발행할 수 있는 엔티티는 사용자 회로(280) 및/또는 소프트 프로세서와 같은 프로그래머블 회로에서 구현되는 회로, 또는 PS의 코어 컴플렉스에서 실행하는 프로세스를 포함할 수 있다. 단계 610에서, 록킹 메커니즘은 선택된 프로세서 하드웨어 자원에 대한 액세스 요청을 요청 엔티티로부터 수신할 수 있다.
단계 615에서, 록킹 메커니즘은 선택된 프로세서 하드웨어 자원이 이용가능한지 결정할 수 있다. 선택된 프로세서 하드웨어 자원이 이용가능하지 않다는, 즉 비지(busy)하다는 결정에 응답하여, 방법(600)은 단계 620으로 진행할 수 있다. 단계 620에서, 록킹 메커니즘은 선택된 프로세서 하드웨어 자원이 비지하기 때문에 이용할 수 없다는 것을 요청 엔티티에게 응답할 수 있다. 단계 620 후에, 방법(600)은 단계 605로 되돌아가서 PS의 프로세서 하드웨어 자원에 대한 제어의 추가적인 요청을 계속하여 모니터링할 수 있다.
선택된 I/O 장치가 이용가능이라는 결정에 응답하여, 방법(600)은 단계 625로 진행할 수 있다. 단계 625에서, 선택된 프로세서 하드웨어 자원이 이용가능이라는 록킹 메커니즘의 결정에 응답하여, 록킹 메커니즘은 제어 허가로서 요청 엔티티에게 응답할 수 있다. 록킹 메커니즘은 선택된 프로세서 하드웨어 자원이 이용가능이고 선택된 프로세서 하드웨어 자원에 대한 제어가 요청 엔티티에게 허가되었음을 요청 엔티티에게 통지할 수 있다. 또한, 록킹 메커니즘은 선택된 프로세서 하드웨어 자원이 비지함을 표시할 수 있다. 일 실시형태로서, 록킹 메커니즘은 또한 요청 엔티티의 아이덴티티 또는 그 표시를 저장할 수 있다. 이와 관련하여, 록킹 메커니즘은 제어의 허가가 시한 등과 같은 에러를 감소 및/또는 제거하는 확립된 정책에 위배하지 않는 한 선택된 프로세서 하드웨어 자원을 요청 엔티티로부터 해제하는 요청에만 응답하도록 구성될 수 있다.
단계 630에서, 요청 엔티티는 선택된 프로세서 하드웨어 자원을 선택적으로 구성할 수 있다. 단계 630은 공유된 프로세서 하드웨어 자원이 프로세서 하드웨어 자원에 대한 제어를 공유하는 2개 이상의 다른 엔티티에 대하여 다르게 구성될 수 있는 경우를 나타낸다. 예를 들면, 복수의 상이한 데이터 전송률 중의 임의의 데이터 전송률로 통신할 수 있는 UART의 경우를 생각하자. 제1 요청 엔티티, 예컨대 코어 컴플렉스에서 실행하는 프로세스는 UART를 이용하여 제1 데이터 전송률, 예를 들면 9600 보드레이트(baudrate)로 제1 외부 처리 노드와 통신할 수 있다. IC의 프로그래머블 회로 내의 소프트 프로세서는 동일한 UART를 이용하여 제2의 다른 데이터 전송률, 예를 들면 1200 보드레이트로 제2 외부 처리 노드와 통신할 수 있다.
그러므로, 일 양태에 있어서, 요청 엔티티는 선택된 I/O 장치가 필요할 때 통신하도록 적절히 구성되었는지를 먼저 결정해야 한다. 예를 들면, 선택된 I/O 장치는 제어가 허가된 요청 엔티티에 의해 필요로 하는 것과는 다른 데이터 전송률을 이용하여 통신하도록 구성될 수 있다. 그 경우에, 요청 엔티티는 프로세서 하드웨어 자원을 필요한 데이터 전송률로 통신하도록 구성하여야 한다.
단계 635에서, 프로세서 하드웨어 자원이 적절히 구성된 때, 요청 엔티티는 선택된 프로세서 하드웨어 자원으로 동작을 개시할 수 있다. 단계 640에서, 선택된 프로세서 하드웨어 자원은 요청 엔티티에 대한 동작을 수행할 수 있다. 예를 들면, 요청 엔티티는 목표 목적지 또는 처리 노드로부터 소정량의 데이터를 인출하도록 UART에게 지시할 수 있다. UART는 그 요청에 응답하여 피요청 데이터를 인출할 수 있다. 단계 645에서, 선택된 프로세서 하드웨어 자원은 인터럽트를 발생할 수 있다. 인터럽트는 동작이 수행되었다는 것, 예를 들면 실행된 동작에 응답하여 데이터가 준비되었다는 것을 요청 엔티티에게 알린다.
단계 650에서, 요청 엔티티는 인터럽트에 응답하여, 선택된 프로세서 하드웨어 자원에 의한 동작의 수행으로 발생된 임의의 데이터를 검색할 수 있다. 예를 들어서, 만일 요청 엔티티가 프로그래머블 회로 내의 소프트 프로세서이면, 소프트 프로세서는 인터럽트를 서비스하고 데이터를 검색할 수 있다. 그 경우에, 코어 컴플렉스는 선택된 프로세서 하드웨어 자원에 대한 요청이 이루어지지 않았다는 것, 및/또는 코어 컴플렉스에서 프로세스가 인터럽트를 발행한 프로세서 하드웨어 자원에 대한 제어를 갖지 않는다는 것을 인식한다. 따라서, 코어 컴플렉스는 발생된 인터럽트를 무시할 수 있고, 이로써 프로그래머블 회로 내의 회로가 인터럽트를 서비스하게 한다. 유사하게, 코어 컴플렉스 또는 그 내부의 프로세스가 요청 엔티티이면, 코어 컴플렉스 내의 프로세스는 인터럽트를 서비스하고, 한편 프로그래머블 회로 내의 소프트 프로세서는 인터럽트를 무시할 수 있다. 소프트 프로세서는, 예를 들면, 소프트 프로세서가 인터럽트를 발행한 특수 프로세서 하드웨어 자원에 대한 제어를 갖지 않는다는 것을 인식할 수 있다.
단계 655에서, 요청 엔티티는 선택된 프로세서 하드웨어 자원을 해제할 수 있다. 예를 들면, 요청 엔티티는 록킹 메커니즘에 대하여 해제 요청을 발행할 수 있다. 이에 응답하여, 록킹 메커니즘은 해제 요청이 요청 엔티티, 예를 들면 선택된 프로세서 하드웨어 자원에 대한 제어가 허가된 엔티티로부터 발원되었음을 인식하고, 선택된 프로세서 하드웨어 자원이 이용가능임을 표시할 수 있다(단계 660). 단계 660 후에, 방법(600)은 단계 605로 되돌아가서 PS의 프로세서 하드웨어 자원에 대한 제어를 획득하기 위한 추가의 요청을 계속하여 모니터링할 수 있다.
주지된 바와 같이, 도 6은 PS의 프로세서 하드웨어 자원을 PS와 프로그래머블 회로 사이에서 공유하는 코스-그레인드 방법을 설명한 것이다. 다른 실시형태로서, 공유는 더욱 파인-그레인드(fine-grained)될 수 있다. 설명을 위해, 코어 컴플렉스에서 실행하는 하나 이상의 프로세스가 UART 인터페이스 또는 이더넷 인터페이스와 같은 선택된 프로세서 하드웨어 자원을 통해 특수 처리 노드와 통신하는 경우를 생각하자. 프로그래머블 회로에서 구현되는 회로, 예를 들면 소프트 프로세서는 동일한 선택된 프로세서 하드웨어 자원을 통해 동일한 처리 노드와 통신하도록 또한 구성될 수 있다.
그 경우에, 실질적으로 동일한 공유 메커니즘, 예컨대 록킹 메커니즘이 이용될 수 있다. 선택된 프로세서 하드웨어 자원이 변경될 때마다 선택된 프로세서 하드웨어 자원을 재구성하는 대신에, 양쪽의 요청 엔티티는 동일한 파라미터를 이용하여 처리 노드와 통신할 수 있다. 예를 들면, 선택된 프로세서 하드웨어 자원의 구성은 코어 컴플렉스 및 프로그래머블 회로 내에서 실행되는 프로세스에 의해 액세스되는 것으로부터 전환될 때 일정하게 즉 정적으로 유지될 수 있다. 프로그래머블 회로, 및 코어 컴플렉스에서 실행되는 프로세스는 둘 다 동일한 데이터 전송률로 선택된 프로세서 하드웨어 자원을 통하여 외부 처리 노드와 통신할 수 있다. 따라서, 도 6의 단계 630은 파인-그레인드 공유 방법을 구현할 때 수행될 필요가 없다.
도 6은 데이터가 프로세서 하드웨어 자원으로부터 준비되었다는 것 또는 특수 동작이 처리를 완료하였다는 것을 프로세서 하드웨어 자원에 대한 제어를 가진 특수 엔티티에게 통지하기 위해 인터럽트 신호를 이용하는 실시형태를 또한 설명한다. 다른 실시형태로서, 여기에서 설명한 인터럽트 메커니즘 대신에 폴링(polling)을 이용할 수 있다. 예를 들면, 프로세서 하드웨어 자원에 대한 제어가 허가된 엔티티는 프로세서 하드웨어 자원을 폴링하도록, 예를 들면 통지 또는 인터럽트 신호를 기다리기보다는 프로세서 하드웨어 자원의 상태를 체크하도록 구성될 수 있다. 제어를 가진 엔티티는 주기적으로, 연속적으로, 또는 때때로 프로세서 하드웨어 자원에게 문의하여 수행되는 트랜잭션 또는 동작의 상태를 결정할 수 있다.
주지된 바와 같이, 하나 이상의 실시형태는 PS와 프로그래머블 회로 간의 전력 독립성을 촉진하는 복수의 상이한 전력 영역을 가진 IC를 포함한다. 도 7 내지 도 10은, 집합적으로, 프로그래머블 회로가 동작하는 제2 전력 영역으로부터 분리되어 독립적인 제1 전력 영역에서 PS가 동작하는 IC의 각종 전력 관리 양태를 설명한다. 그러므로, 프로그래머블 회로는 PS와 무관하게 전력 차단될 수 있다. 일 실시형태에 있어서, PS는 프로그래머블 회로의 전력 투입 및/또는 전력 차단 처리를 제어할 수 있다.
PS와는 독립적으로 프로그래머블 회로를 전력 순환시키는 능력에 비추어, 전력 관리 기능은 프로그래머블 회로의 전력 투입 중에 또는 전력 차단 중에 또는 이들 둘 다에서 프로세서 하드웨어 자원의 관리를 포함할 수 있다. 또한, 전력 관리 기능은 예를 들면 통신이 프로그래머블 회로를 통해 라우트될 때 외부 처리 노드와 통신하는 PS의 프로세서 하드웨어 자원 사이에서 확립될 수 있는 임의의 관계의 관리를 포함할 수 있다.
도 7은 이 명세서에서 설명하는 다른 실시형태에 따른 시스템(700)을 보인 제6 블록도이다. 도시된 것처럼, 시스템(700)은 IC(705), 전원(730), 및 스위치(735, 740, 745)로서 표시된 하나 이상의 스위치를 포함할 수 있다. IC(705)는 도 1 및 도 2에 도시된 IC와 관련하여 설명한 것과 실질적으로 동일하게 구현될 수 있다. 그러나, 도 7은 전력 관리 기능을 더욱 명확하게 설명하기 위해 IC(705)의 요약된 모습을 보여주고 있다. 따라서, IC(705)는 PS(710)와 프로그래머블 회로(715)를 포함할 수 있다. 일 실시형태로서, 프로그래머블 회로(715)는 FPGA의 형태로 구현될 수 있다. PS(710) 및 프로그래머블 회로(715)는 720A-720C로 표시된 하나 이상의 레벨 시프터(720)에 의해 함께 결합될 수 있다.
전원(730)은 전력 신호(750, 752, 754)와 같은 복수의 전력 신호를 발생할 수 있다. 일 실시형태에 있어서, 각 전력 신호(750-754)는 상이한 전압 전위를 가질 수 있다. 도시된 것처럼, 전력 신호(750-754)는 IC(705)의 PS(710) 내에서 PS 전압 검출기(712)와 결합된다.
각 전력 신호(750-754)는 또한 각 스위치(735-745)에 각각 결합될 수 있다. 스위치(735-745)는 전력 신호(750-754)를 프로그래머블 회로(715)의 패브릭 전압 검출기(725)에 선택적으로 전달하도록 구성될 수 있다. 각 스위치(735-745)는 전력 신호(750-754)를 PS(710)에서 발생된 제어 신호(756)에 응답하여 패브릭 전압 검출기(725)에 선택적으로 전달할 수 있다. 도 7에 도시된 실시형태에 있어서, PS 전압 검출기(712)는 제어 신호(756)를 발생할 수 있다. 스위치(735-745)가 턴온된 때, 전력 신호(750-754)는 프로그래머블 회로(715)에 전파된다. 스위치(735-745)가 턴오프된 때, 스위치(735-745)는 전력 신호(750-754)를 프로그래머블 회로(715)로부터 분리한다.
PS 전압 검출기(712)는 전력 신호(750-754)를 모니터링하고, 각 전력 신호(750-754)가 뒤에서 더 자세히 설명되는 하나 이상의 상이한 전압 역치와 부합하는 때를 결정하도록 구성될 수 있다. 도시된 것처럼, PS 전압 검출기(712)는 2개의 위치에서 전력 신호(754)에 결합된다. PS 전압 검출기(712)는 전원(730)과 스위치(745) 사이의 위치에서 및 스위치(745)와 패브릭 전압 검출기(725) 사이의 위치에서 전력 신호(754)에 결합될 수 있다.
전력 신호(750)는 IC(705)의 I/O에 전력을 공급하기 위해 사용될 수 있는 1.2-1.8 V의 전력 신호로서 구현될 수 있다. 전력 신호(752)는 IC(705)에게 사전 구동 전압 및 바이어스 전압을 제공하기 위해 사용될 수 있는 1.8 V 전력 신호로서 구현될 수 있다. 전력 신호(754)는, 예를 들면, IC(705)의 논리 회로에 전력을 공급하기 위해 사용될 수 있는 1 V 전력 신호로서 구현될 수 있다. 여기에서 설명하는 각종 예 및 값들은 설명의 목적을 위한 것이고, 그래서 이 명세서에서 설명하는 하나 이상의 실시형태를 제한하는 것으로 의도되지 않는다.
레벨 시프터(720)는 도 2의 레벨 시프팅 회로(296)와 관련하여 설명한 것처럼 구현될 수 있다. 도시된 것처럼, 레벨 시프터(720)는 2개의 위치, 예를 들면 스위치(745)의 앞 및 스위치(745)의 출력으로서 전력 신호(754)에 결합될 수 있다. 일반적으로, 각 스위치(735-745)는 각 스위치로부터의 출력이 스위치에 입력으로서 제공되는 전력 신호보다 낮은 전압을 갖도록 전압 강하를 일으키게 하는 어떤 저항을 가질 것이다. 따라서, 2개의 전력 영역이 동일 전압으로 동작하도록 의도되는 경우에, 각 전력 영역에 제공되는 전력 신호에서의 전압 변동이 스위치(735-745)의 저항뿐만 아니라 하나 이상의 다른 요소에 기인하여 발생할 수 있다. 레벨 시프터(720)는 이러한 전압 변동을 고려하여 제1 전력 영역, 즉 PS(710)와 제2 전력 영역, 즉 프로그래머블 회로(715) 사이에서 신호를 전달할 수 있다.
도시된 것처럼, 프로그래머블 회로(715)는 패브릭 전압 검출기(725)로서 도시된 전압 검출기를 또한 포함할 수 있다. 패브릭 전압 검출기(725)는 각 전력 신호(750-754)가 소정의 전압 레벨에 도달한 때를 검출하고, 그 검출에 응답하여 신호(758)를 발생할 수 있다. 신호(758)는 레벨 시프터(720A)를 통해 PS(710)에 제공될 수 있다. 레벨 시프터(720A)는, 예를 들면, 제4 부류의 레벨 시프터로서 구현될 수 있다. 비록 도시하지는 않았지만, 전력 신호는 PS 전압 검출기(712)로부터 또는 하나 이상의 다른 컴포넌트로부터 PS(710) 전체에 배분될 수 있다는 것을 이해하여야 한다. 유사하게, 전력 신호는 패브릭 전압 검출기(725) 또는 하나 이상의 다른 컴포넌트로부터 프로그래머블 회로(715) 전체에 배분될 수 있다. 또한, 패브릭 전압 검출기(725)는 프로그래머블 회로(715) 내에 위치된 것에 불구하고 IC(700)의 하나 이상의 다른 시스템 레벨 컴포넌트와 함께 하드와이어드 회로로서 구현될 수 있다.
동작시에, IC(700)에 전력 투입된다. 예를 들면, 전원(730)은 IC(700)에 대한 전력 공급을 시작할 수 있다. PS(710)는 프로그래머블 회로(715)의 전력 투입 및 프로그래머블 회로(715)의 구성을 도울 수 있다. PS(710)에 전력이 공급된 직후에, PS 전압 검출기(712)는 전력 신호(750-754)의 전압의 모니터링을 시작할 수 있다. 전력 신호(750-754)의 하나 이상 또는 모든 전압이 제1의 미리 정해진 최소 전압 레벨(최소 IOB 전압이라고도 부른다)에 부합한다고 결정한 것에 응답하여, PS 전압 검출기(712)는 제어 신호(760)를 통해 IOB(728)를 인에이블할 수 있다.
일반적으로, PS 전압 검출기(712)가 IOB(728)를 인에이블할 때, PS 전압 검출기(712)는 하나 이상 또는 모든 전력 신호(750-754)를 통하여 수신된 전압 전위가 IOB(728)를 구동하기에 충분하다고, 예를 들면 최소 IOB 전압에 부합한다고 결정하였다. 예를 들면, IOB(728)는 내부 전력 신호를 IOB(728)에 결합함으로써 인에이블될 수 있다. 최소 IOB 전압은 IOB(728)가 동작하도록 충분히 높을 수 있지만, PS(710)의 시동 또는 부팅을 개시할 정도로 충분히 높을 필요는 없다. 따라서, 최소 IOB 전압은 동작 모드에서 PS(710)의 동작을 위한 양호한 또는 법정 전압 범위보다 여전히 낮을 수 있다.
일단 활성화되면, IOB(728)는 전력 표시 신호(762)를 수신할 수 있다. 전력 표시 신호(762)는 전원(730) 또는 다른 외부 소스에 의해 제공될 수 있다. 예를 들면, 전력 표시 신호(762)는 전원(730)이 안정화되고 그에 따라서 전력 신호(750-754)가 안정화되어 PS(710)의 시동에 필요한 범위 내에 있을 때 하이로 설정될 수 있다. 따라서, 비록 PS(710)가 IOB(728)를 인에이블하기 위해 PS 전압 검출기(712)를 이용하지만, PS(710)는 전력 표시 신호(762)에 의존하여 전원(730)이 동작하고 안정된 때를 표시할 수 있다.
전력 표시 신호(762), 예를 들면 하이로 된 신호의 수신에 응답하여, PS(710)는 부팅 또는 시동 처리를 시작할 수 있다. 시동 처리는 나머지의 도면을 참조하여 자세히 설명된다. 일 실시형태에 있어서, 시동 처리의 일부로서, PS 전압 검출기(712)는 제어 신호(756)를 통해 스위치(735-745)를 턴온하고, 이것에 의해 프로그래머블 회로(715)를 전력 신호(750-754)와 결합할 수 있다.
스위치(735-745)가 턴온되면, PS 전압 검출기(712)는 스위치(745)로부터의 출력으로서 전력 신호(754)의 전압을 모니터링할 수 있다. 신호(754)의 전압이 제2의 미리 정해진 최소 전압(최소 레벨 시프터 전압이라고도 부른다)에 부합한다고 PS 전압 검출기(712)가 결정한 때, PS 전압 검출기(712)는 하나 이상의 레벨 시프터(720), 예를 들면 레벨 시프터(720A)를 인에이블할 수 있다. 최소 레벨 시프터 전압은 프로그래머블 회로(715) 내의 하나 이상의 선택된 장치가 예를 들면 레벨 시프터(720A)를 동작시키기에 충분한 전압일 수 있다.
일 실시형태에 있어서, 최소 레벨 시프터 전압은 프로그래머블 회로 및/또는 하나 이상의 레벨 시프터(720), 예를 들면 상보형 금속 산화물 반도체(CMOS) 소자를 이용하여 구현되는 회로가 기능하도록 충분히 높은 전압일 수 있다. 최소 레벨 시프터 전압은 소자들이 기능하기에 충분할 정도로 크지만, 프로그래머블 회로(715) 내의 소자들의 동작을 지원하는, 예를 들면 구성 기능 및 프로그래머블 회로(715)가 일반적으로 동작 모드로 되는 데에 필요한 양호한 또는 법정 전압 범위보다는 여전히 낮은 전압일 수 있다. 최소 IOB 전압은 최소 레벨 시프터 전압과 동일할 수 있지만, 반드시 그럴 필요는 없다.
또한, 스위치(735-745)가 인에이블된 때, 패브릭 전압 검출기(725)가 동작을 시작할 수 있다. 패브릭 전압 검출기(725)는 하나 이상 또는 모든 전력 신호(750-754)의 전압이 프로그래머블 회로(715)의 동작에 필요한 제3의 미리 정해진 최소 전압(최소 프로그래머블 회로 전압이라고 부른다)에 부합하는 때를 결정하기 위해 각 전력 신호(750-754)의 전압의 모니터링을 시작할 수 있다.
하나 이상 또는 모든 전력 신호(750-754)의 전압이 최소 프로그래머블 회로 전압에 부합한다고 패브릭 전압 검출기(725)가 결정한 것에 응답하여, 패브릭 전압 검출기(725)는 신호(758), 예를 들면 프로그래머블 회로(715)가 전력 투입되었음을 표시하는 프로그래머블 회로 전력 표시 신호를 PS(710)에게 발생할 수 있다. 예를 들면, 하나 이상 또는 모든 전력 신호(750-754)가 최소 프로그래머블 회로 전압에 부합한 때, 패브릭 전압 검출기(725)는 신호(758)를 하이로 만들 수 있다. 최소 프로그래머블 회로 전압은 프로그래머블 회로(715)가 적절히 기능하는, 예를 들면 동작 모드에서 유지되고 구성을 받는 데에 필요한 최소의 법정 전압 레벨이다. 최소 프로그래머블 회로 전압은 최소 IOB 전압 및/또는 최소 레벨 시프터 전압보다 일반적으로 더 높다. 하나 이상 또는 모든 전력 신호(750-754)가 최소 프로그래머블 회로 전압에 부합한다고 패브릭 전압 검출기(725)가 결정한 것에 응답하여 신호(758)를 발생시키는 것은 프로그래머블 회로(715)가 구성할 준비, 예를 들면, 구성 데이터가 내부에서 물리적 회로를 구현하기 위해 로드될 준비가 되었음을 표시한다.
일 실시형태에 있어서, 패브릭 전압 검출기(725)는 2개의 다른 모드 중의 하나로 동작할 수 있다. 패브릭 전압 검출기(725)가 동작하는 특수 모드는 외부 소스로부터 수신된 제어 신호(764)에 응답하여 선택될 수 있다. 제어 신호(764)의 상태에 따라서, 패브릭 전압 검출기(725)는 제1 모드 또는 제2 모드에서 동작할 수 있다.
제1 모드에서, 패브릭 전압 검출기(725)는 하나 이상 또는 모든 전력 신호(750-754)가 최소 프로그래머블 회로 전압에 부합한다고 결정한 후 신호(758)를 발생하기 전, 예를 들면, 신호(758)를 하이로 만들기 전에 소정의 시간 양을 기다릴 수 있다. 시간 양은, 예를 들면, 약 50 밀리초일 수 있고, 다른 시구간도 또한 사용할 수 있다. 제2 모드에서, 패브릭 전압 검출기(725)는 하나 이상 또는 모든 전력 신호(750-754)가 최소 프로그래머블 회로 전압에 부합한다고 결정한 것에 응답하여 신호(758)를 즉시 발생할 수 있다. 신호(758)는 프로그래머블 회로(715)가 기능 상태, 예를 들면 동작 모드에 있고 하나 이상의 다른 회로를 구현하도록 구성될 수 있음을 PS(710)에게 표시한다.
비록 도 7이 독립 전력 영역을 달성하기 위해 PS(710)와 프로그래머블 회로(715) 사이에서 스위치와 공통 전력 신호를 이용하는 것을 설명하고 있지만, 유사한 결과가 각종의 다른 방법으로 달성될 수 있다. 예를 들면, 2개의 완전하게 독립된 전원을 사용할 수 있다. 그 경우에, 외부 스위치에 제어 신호를 제공하는 대신에, 제어 신호(764)가 프로그래머블 회로(715)를 전력 투입 및/또는 전력 차단하기 위해 프로그래머블 회로(715)에 전력을 공급하는 전원에 제공될 수 있다. 다른 예로서, 스위치는 IC(700) 내에 포함될 수 있다. 그 경우에, 제어 신호(756)는 프로그래머블 회로(715)를 전력 투입 및/또는 전력 차단하기 위해 IC(700) 내에 위치된 스위치에 제공될 수 있다.
도 8은 이 명세서에서 설명하는 다른 실시형태에 따라 IC의 전력 관리 방법(800)을 보인 제2 흐름도이다. 더 구체적으로, 방법(800)은 IC에 전력 투입하는 예시적인 방법을 보인 것이다. 방법(800)은 이 명세서의 도 1-7과 관련하여 설명한 IC에 의해 수행될 수 있다.
따라서, 단계 805에서, 전력이 IC의 PS에 인가 또는 결합될 수 있다. 단계 810에서, PS 전압 검출기는 PS에 공급된 전력 신호가 전압 필요조건, 예를 들면 외부에서 발생된 전력 표시 신호에 결합된 IOB를 동작시키기 위한 최소 IOB 전압에 부합하는지 결정할 수 있다. 따라서, 전력 신호가 최소 IOB 전압에 부합한다는 결정에 응답하여, 단계 815에서, PS 전압 검출기는 전력 표시 신호에 결합된 IOB에 전력 투입할 수 있다. 일 실시형태에 있어서, IOB를 동작시키는데 필요한 전압 레벨은 전형적으로 PS의 동작을 위해 필요한 전압 레벨보다 더 낮을 수 있다.
단계 820에서, PS는 전력 표시 신호가 전원이 안정 상태에 도달하였음을 표시하는 하이로 되었는지 검출할 수 있다. 예를 들면, 전력 표시 신호는 안정 상태에 도달할 때까지 IC 외부의 전원에 의해 낮게 유지될 수 있다. 일단 안정 상태에 도달하였으면, 전원은 전력 표시 신호를 하이로 만들어서, PS를 동작시키는데 필요한 전압이 전원으로부터 이용가능하다는 것을 표시할 수 있다. PS 전압 검출기는 전력 표시 신호가 단계 815에서 결합된 IOB의 활성화에 기인해서 전력 표시 신호의 상태 변경을 검출할 수 있다.
단계 825에서, 전력 표시 신호의 하이 상태 검출에 응답하여, PS 전압 검출기는 PS에서 부팅 또는 시동 처리를 개시할 수 있다. 단계 830-850은 일반적으로 PS에 의해 수행될 수 있는 시동 처리를 설명한다. 단계 830에서, PS는 내부적으로 발생된 기준 클럭을 이용하여 동작을 시작할 수 있다. 내부적으로 발생된 기준 신호는, 예를 들면, 도 2의 클럭 유닛(226)에 의해 발생될 수 있다. 일반적으로, 내부 기준 클럭은 정상 동작 중에, 예를 들면 동작 모드에서 PS를 궁극적으로 클럭하기 위해 사용되는 클럭 신호의 주파수보다 낮은 주파수에서 동작한다. 예를 들면, 일 실시형태로서, 내부 클럭 신호는 약 30 MHz의 주파수를 가질 수 있다.
단계 835에서, PS는 밴드갭 회로를 인에이블 또는 전력 투입할 수 있다. 밴드갭 회로는, 예를 들면, PS의 클럭 유닛 내에 위치될 수 있고, 일반적으로 클럭 유닛 내에 또한 위치된 PLL에 의해 사용되는 기준 전압을 제공한다. 따라서, 단계 840에서, PS는 PLL을 인에이블하고 전속(full speed) 동작을 시작할 수 있다. 예를 들면, 내부적으로 발생된 기준 클럭을 이용한 동작시에, 클럭 유닛의 PLL은 바이패스된다. 밴드갭 회로 및 PLL의 인에이블시에, PLL은 더 이상 바이패스되지 않고, 이것에 의해 클럭 유닛의 PLL이 동기화할 수 있는 외부 공급 클럭 신호에 따라 PS가 전속으로 동작하게 한다. 주지된 바와 같이, 동작되었을 때 PLL에 의해 출력된 클럭 신호의 주파수는 내부적으로 발생된 기준 클럭보다 크게 더 높을 수 있다.
단계 845에서, PS는 메모리 제어기를 통하여 PS에 결합된 RAM을 인에이블할 수 있다. 단계 850에서, PS는 임의의 종료 교정(termination calibration) 절차 및/또는 회로를 활성화하여 RAM과 동기화할 수 있다. 일반적으로, 단계 850 후에, PS는 동작 모드에 있는 것으로 생각할 수 있다. PS는, 예를 들면, 리세트 상태를 빠져나온 프로그램 코드를 실행할 수 있다. 다른 예로서, PS는 프로그래머블 회로의 전력의 관리를 또한 시작할 수 있다.
단계 855에서, PS는 IC의 프로그래머블 회로 부분의 전력 투입 절차의 관리를 시작할 수 있다. 예를 들면, 단계 855에서, PS는 IC의 프로그래머블 회로에 전력을 공급하는 스위치들을 턴온하거나, 다른 방식으로 프로그래머블 회로에 대한 전력 공급을 인에이블할 수 있다. 예를 들면, PS는 스위치들을 턴온하도록 제어 신호를 통해 지시할 수 있고, 이로써 스위치에 의해 수신된 임의의 전력 신호가 출력되고 프로그래머블 회로에 전파되게 한다.
단계 860에서, PS 전압 검출기는 프로그래머블 회로에 대한 전력 신호가 프로그래머블 회로 전력 표시 신호에 결합된 레벨 시프터를 동작시키기 위한 최소 레벨 시프터 전압에 부합하는지 결정한다. 단계 865에서, 프로그래머블 회로는 전력 신호가 최소 프로그래머블 회로 전압에 부합한다고 결정할 수 있다. 단계 870에서, 전력 신호가 최소 프로그래머블 회로 전압에 부합한다는 결정에 응답하여, 프로그래머블 회로는 프로그래머블 회로가 구성 준비되었다는 것을 PS에게 시그널링한다. 주지된 바와 같이, 프로그래머블 회로는 PS에 의해 인에이블된 시스템 레벨 시프터 중의 하나에 결합된 프로그래머블 회로 전력 표시 신호를 통하여 구성 준비성을 통신할 수 있다.
단계 875에서, PS는 PS와 프로그래머블 회로 사이에서 시스템 레벨 신호를 통신하기 위해 사용되는 임의의 레벨 시프터를 인에이블할 수 있다. 일 실시형태에 있어서, PS는 프로그래머블 회로의 구성을 요구하지 않는 레벨 시프터를 인에이블할 수 있다. PS와 프로그래머블 회로 사이에서 전달되는 클럭 신호를 전파하는 하나 이상의 레벨 시프터가 또한 인에이블될 수 있다.
디스에이블된 때, 각 레벨 시프터는 일정한 값, 예를 들면 로우 또는 하이를 출력하도록 구성될 수 있다. 인에이블된 때, 레벨 시프터의 출력은 레벨 시프터에 제공되는 입력에 의존하게 된다. 일 실시형태에 있어서, 레벨 시프터가 논리 하이를 수신한 때, 레벨 시프터는 논리 하이를 출력할 수 있다. 레벨 시프터가 논리 로우를 수신한 때, 레벨 시프터는 논리 로우를 출력할 수 있다. 다른 실시형태에 있어서, 레벨 시프터는 상보 값을 출력하도록 구성될 수 있다. 예를 들면, 레벨 시프터가 입력으로서 논리 하이를 수신한 때, 레벨 시프터는 논리 로우를 출력할 수 있다. 유사하게, 레벨 시프터가 입력으로서 논리 로우를 수신한 때, 레벨 시프터는 논리 하이를 출력하도록 구성될 수 있다. 어느 경우이든, 레벨 시프터는 디스에이블된 때 일정한 논리 하이 또는 일정한 논리 로우를 출력하도록 구성될 수 있다.
단계 880에서, PS는 하나 이상의 회로를 구현하도록 프로그래머블 회로를 구성할 수 있다. 일 실시형태에 있어서, PS는 동작시에 오프칩으로 위치된 기억 위치로부터 프로그래머블 회로에 대한 구성 데이터에 액세스할 수 있다. 예를 들면, PS는 외부 메모리로부터 구성 데이터를 검색하거나 통신 링크, 예를 들면 이더넷 접속을 통해 구성 데이터에 대한 요청을 발행할 수 있다. 구성 데이터는, PS에 의해 수신된 때, PCAP에 제공되고 프로그래머블 회로 내의 구성 제어기에 보내질 수 있다. 그 다음에, 구성 제어기는 구성 데이터를 구성 메모리 셀에 로드하고, 이로써 구성 데이터에 의해 특정된 물리적 회로를 구현할 수 있다.
단계 885에서, PS는 사용자 신호를 PS와 프로그래머블 회로 사이에서 전달하기 위해 이용할 수 있는 레벨 시프터를 인에이블할 수 있다. 단계 885 후에, 전체 IC는 동작 상태이다. 주지된 바와 같이, PS는 동작 모드에 있고 프로그램 코드를 실행할 수 있다. 또한, 프로그래머블 회로는 동작 모드에 있다. 일 실시형태에 있어서, 프로그래머블 회로는 사용자 지정 신호의 발생을 통하여 구성에 후속하는 리세트 유형의 상태로부터 해제될 수 있다. 사용자 지정 신호는 단계 880과 관련하여 설명한 바와 같이 구성 데이터의 로딩 결과로서 프로그래머블 회로 내에서 구현되는 회로에 의해 발생된 것일 수 있다.
도 9는 이 명세서에서 설명하는 다른 실시형태에 따라 IC의 전력 관리 방법(900)을 보인 제3 흐름도이다. 더 구체적으로, 방법(900)은 이 명세서의 도 1-8과 관련하여 설명한 것처럼 구성된 IC의 프로그래머블 회로를 전력 차단하는 하나의 기술을 보인 것이다. 방법(900)은 프로그래머블 회로를 포함한 IC의 전력 관리가 PS에 의해 어떻게 수행될 수 있는지를 보여준다. 방법(900)은 PS와 프로그래머블 회로 둘 다가 동작 상태, 예를 들면 동작 모드에 있는 상태에서 시작할 수 있다. PS는 프로그램 코드를 실행할 수 있고, 프로그래머블 회로 내에서 구현되는 회로는 동작할 수 있다. 일부 신호 또는 이벤트에 응답하여, PS는 프로그래머블 회로가 전력 차단되어야 하고, 그에 따라서 프로그래머블 회로의 전력 차단 절차를 시작할 수 있다고 결정할 수 있다.
단계 905에서 시작하여, PS는 프로그래머블 회로에서 구현되는 회로의 상태가 저장되고, 프로그래머블 회로가 다시 전력 투입된 때 적어도 부분적으로 후속적으로 복원되게 하는, 프로그래머블 회로 내에서 전력 차단 절차를 개시할 수 있다. 전력 차단 절차는, 이 절차가 프로그래머블 회로와 관련되기 때문에, 일반적으로 단계 905-925를 포함한다.
따라서, 단계 905에서, PS는 프로그래머블 회로를 유휴 상태(idle state)로 둘 수 있다. 예를 들면, PS는 프로그래머블 회로를, 진행중에 있거나 프로그래머블 회로에 제공된 임의의 동작이 종료되게 하는 상태로 둘 수 있고, 한편 임의의 추가 또는 새로운 트랜잭션이 프로그래머블 회로에 진입하는 것을 금지한다. 프로그래머블 회로에 대한 동작이 종료된 때, 예를 들면 PS는 프로그래머블 회로, 예를 들면 프로그래머블 회로에 제공되는 각종 클럭 신호의 게이트 등을 중지할 수 있다. 따라서, 프로그래머블 회로는 더 이상 동작 모드에 있지 않다.
단계 910에서, PS는 선택적으로 프로그래머블 회로에 질의하여 프로그래머블 회로에서 구현되는 회로, 예를 들면 사용자 회로의 상태 정보를 결정할 수 있다. 일 실시형태에 있어서, 프로그래머블 회로에 저장된 데이터는 구성 리드백(read-back) 기능, 경계 주사 기능 등을 이용하여 PS에 의해 획득될 수 있다. 예를 들면, 프로그래머블 회로의 하나 이상의 메모리에 저장된 데이터는 PS에 의해 획득 또는 판독될 수 있다. 그러한 데이터는 계수들의 표, 또는 프로그래머블 회로에서 구현되는 회로에 의해 필요한 다른 데이터를 포함할 수 있다. 다른 예로서, 마이크로블레이즈™와 같은 소프트 프로세서가 프로그래머블 회로에서 구현될 때, 레지스터에 저장된 값뿐만 아니라 프로그래머블 회로 내의 소프트 프로세서의 프로그램 메모리의 콘텐트가 획득될 수 있다.
단계 915에서, PS는 선택적으로 프로그래머블 회로로부터 획득된 상태 정보를 메모리에 저장할 수 있다. 일 실시형태로서, PS는 상태 정보를 오프칩으로 위치된 메모리에 저장할 수 있다. 예를 들면, PS는 상태 정보를 외부 RAM에 저장할 수 있다. 다른 실시형태로서, PS는 상태 정보를 내부 메모리에 저장할 수 있다. 예를 들면, PS는 PS 내에 위치하며 도 2와 관련하여 설명한 OCM에 상태 정보를 저장할 수 있다.
단계 920에서, PS, 예컨대 코어 컴플렉스는 프로그래머블 회로를 PS와 결합하는 레벨 시프터를 공지 상태로 둘 수 있다. 예를 들면, 레벨 시프터는 논리 0 또는 논리 1을 유지하는 상태로 될 수 있다. 일부 경우에, 일부 레벨 시프터는 논리 0을 유지하도록 구성되고, 다른 레벨 시프터는 논리 1을 유지하도록 구성될 수 있다. 레벨 시프터를 공지의 상태로 두면 의사 신호가 PS 내의 이벤트를 트리거시키는 것을 방지한다. 예를 들면, 프로그래머블 회로가 전력 차단된 동안의 의사 신호는 레벨 시프터에 결합된 PS 시스템 또는 컴포넌트, 예를 들면 FMIO 인터페이스에 결합된 I/O 장치, 및 다른 인터페이스를 통하여 프로그래머블 회로에 결합된 다른 PS 블록이 인터럽트와 같은 이벤트를 잘못 발생하게 한다. 인터럽트가 프로그래머블 회로에 의해 서비스되어야 하지만 프로그래머블 회로가 전력 차단된 때, 인터럽트는 서비스되지 않고, 이로써 PS 내에서 미해결 이벤트 또는 다른 문제들을 야기한다.
단계 925에서, PS는 프로그래머블 회로를 전력 차단할 수 있다. 예를 들면, PS는 제어 신호를 통해 프로그래머블 회로를 전력 신호로부터 분리하도록 스위치를 제어할 수 있다. 프로그래머블 회로가 전력 차단되면, PS는 동작을 계속하고 정상의 동작 상태로 프로그램 코드를 실행할 수 있다. 대안적으로, 프로그래머블 회로의 전력 차단에 이어서, PS는 선택적으로 저전력 모드로 될 수 있다. 저전력 모드에 있는 동안 PS는 프로그램 코드를 실행하지 않고, 예컨대 시스템 클럭이 전속으로 동작하는 동작 모드에 있을 때보다 훨씬 낮은 전력을 소모한다.
따라서, 단계 930-950은 본질적으로 선택적일 수 있고, PS를 저전력 모드, 예를 들면 슬립 모드에 두는 단계들을 설명한다. 일 실시형태에 있어서, 예를 들면, PS는 프로그래머블 회로의 전력 차단에 응답하여 저전력 모드를 개시하도록 구성될 수 있다. 다른 실시형태에 있어서, PS는 IC 외부의 소스로부터 수신한 신호 또는 인터럽트에 응답하여 저전력 모드에 진입하도록 지시될 수 있다.
단계 930에서, PS는 클럭 유닛 내에서 동작하는 PLL을 바이패스할 수 있다. PLL이 바이패스될 때, PS는 내부에서 발생한 기준 클럭을 이용하여 동작을 시작할 수 있다. 단계 935에서, PS는 밴드갭 회로를 전력 차단할 수 있다. 단계 940에서, PS는 RAM을 셀프 리프레시 모드로 둘 수 있다. 단계 945에서, PS는 RAM의 종료 교정 기능을 디스에이블할 수 있다. 단계 950에서, 기준 클럭은 PS에서 전력 소모를 더욱 감소시키도록 주파수 분할될 수 있다. 예를 들면, 약 30 MHz의 주파수를 가진 내부 발생 클럭은 약 1 MHz까지 주파수 분할될 수 있다.
PS는 역순으로 단계 950-930을 수행함으로써 실질적으로 저전력 모드를 빠져나올 수 있다는 것을 이해하여야 한다.
도 10은 이 명세서에서 설명하는 다른 실시형태에 따라 도 2의 IC(200)를 보인 제7 블록도이다. 도 10은 프로그래머블 회로(204)가 파워 다운될 때 PS(202)의 I/O 장치(305)의 관리를 설명하기 위한 IC(200)의 요약된 모습을 보인 것이다. IC(200) 내의 하나 이상의 컴포넌트는 명확성 및 설명의 용이성을 위해 도시를 생략하였다. 예를 들면, 프로그래머블 회로(204)의 스위치(315, 320) 및 각종의 다른 컴포넌트가 도 10에는 도시되지 않았다.
도 10은 I/O 장치(305)가 하나 이상의 I/O 핀(325)을 통하여 외부 처리 노드(도시 생략됨)에 결합된 실시형태를 나타낸다. 도시된 것처럼, I/O 장치(305)와 상호작용하여 서비스하는 1차 엔티티는 프로그래머블 회로(204)에서 구현되는 사용자 회로(280)이다. 도시된 예에서, I/O 장치(305)는 참조번호 1005로 표시된 신호 경로에 의해 코어 스위치(236) 및 인터페이스(256)를 통하여 사용자 회로(280)와 통신한다.
일 실시형태에 있어서, 프로그래머블 회로(204)가 전력 차단되어야 한다는 결정에 응답하여, 코어 컴플렉스(206)는 I/O 장치(305)의 제어를 획득하도록 구성될 수 있다. 도 10에 도시된 구성에서 프로그래머블 회로(204)가 전력 차단된 때, I/O 장치(305)는 이 명세서에서 설명한 것처럼 제어를 변경하지 않으면 더 이상 처리 노드에 이용할 수 없다.
코어 컴플렉스(206)는, 예를 들면, 코어 컴플렉스(206)가 사용자 회로(280)로부터 제어를 취득한다는 것을 I/O 장치(305)를 통한 제어를 추적하기 위해 사용되는 특수 록킹 메커니즘에게 신호할 수 있다. 일 실시형태에 있어서, 코어 컴플렉스(206)는 사용자 회로(280)에 의해 구현되는 특수 기능 중의 일부 또는 전부를 제공하는 프로그램 코드를 포함하거나 실행할 수 있다. 따라서, 사용자 회로(280)가 전력 차단된 때, 코어 컴플렉스(206)는 적어도 I/O 장치(305)와 관련하여 사용자 회로(280)에 의해 예전에 수행된 기능들을 취득할 수 있다. 일 실시형태에 있어서, 코어 컴플렉스(206)는 I/O 장치(305)와 외부 처리 노드 간에 통신 링크를 유지할 수 있다.
도 11은 이 명세서에서 설명하는 다른 실시형태에 따라 도 2의 IC(200)를 보인 제8 블록도이다. 도 11은 프로그래머블 회로(204)를 전력 차단한 후에 IC(200)의 상태를 보인 것이다. 프로그래머블 회로(204)가 전력 차단되고 이용불능임을 보이기 위해, 프로그래머블 회로(204)는 음영을 넣어 표시하였다. 도시된 것처럼, 코어 컴플렉스(206)는 I/O 장치(305)를 통한 제어를 획득하였고 I/O 장치(305)에 대한 서비스를 시작하였다. 이제, 코어 컴플렉스(206)와 I/O 장치(305) 간의 통신은 참조번호 1100으로 표시한 신호 경로를 통하여 이루어진다. 따라서, I/O 장치(305)로부터 프로그래머블 회로(204)로의 통신을 계속하여 라우트하는 대신에, 통신은 서비스를 위해 코어 컴플렉스(206)에 제공된다.
설명을 위하여, I/O 장치(305)가 외부 처리 노드에 대한 USB 인터페이스를 구현하는 경우를 생각하자. 프로그래머블 회로(204)에서 구현되는 사용자 회로(280)는, 예를 들면, USB 통신 링크를 통하여 운반된 영상을 처리하기 위해 영상 처리 회로를 구현할 수 있다. 프로그래머블 회로(204)가 전력 차단된 때 I/O 장치(305)를 통한 제어를 변경하지 않으면, 외부 처리 노드에 제공된 영상은 정지할 것이다. I/O 장치(305)를 통한 제어를 코어 컴플렉스(206)에 제공함으로써, 코어 컴플렉스(206)는 USB 통신 링크를 유지할 수 있다.
일 실시형태에 있어서, 코어 컴플렉스(206)는 프로그램 코드의 실행을 통하여 사용자 회로(280)에 의해 제공되었던 것과 동일한 기능을 제공할 수 있다. 그 기능(예컨대 이 경우에는 영상 처리)이 프로그램 코드의 실행을 통하여 코어 컴플렉스(206)에 의해 수행되기 때문에, 그 성능은 사용자 회로(280)에 비하여 감소될 수 있다. 다른 실시형태에 있어서, 코어 컴플렉스(206)는 변형된 다른 기능을 제공할 수 있다. 예를 들면, 영상 처리를 계속하는 대신에, 코어 컴플렉스(206)는 영상 처리가 일시적으로 이용불능임을 나타내는 이미지를 특정하는 영상 신호를 출력할 수 있다. 다른 형태의 감소된 또는 제한된 기능이 제공될 수 있다. 그러나, 어느 경우이든 외부 처리 노드와의 통신 링크는 유지된다. 예를 들면, 전기 통신 채널이 보존된다.
도 12는 이 명세서에서 설명하는 다른 실시형태에 따라 IC의 전력 관리 방법(1200)을 보인 제4 흐름도이다. 방법(1200)은 프로그래머블 회로에서 구현되는 회로에 결합될 수 있는 I/O 장치를 통한 제어를 설명하는 IC 내에서의 전력 관리 기술을 보여준다. 예를 들면, 방법(1200)은 이 명세서의 도 10 및 도 11과 관련하여 도시하고 설명한 바와 같은, IC의 전력 관리 기술을 보여준다.
방법(1200)은 IC가 전력 투입되고 충분히 동작하는 상태에서 시작할 수 있다. 예를 들면, 적어도 하나의 I/O 장치는 PS에 의한 사용으로 전용되는 하나 이상의 I/O 핀을 통하여 외부 처리 노드에 통신적으로 연결될 수 있다. I/O 장치는 또한 프로그래머블 회로에서 구현되는 사용자 회로에 코어 스위치 및 인터페이스를 통하여 결합될 수 있다. 사용자 회로는, 예를 들면, I/O 장치를 서비스하도록 구성될 수 있다.
단계 1205에서, 코어 컴플렉스는 프로그래머블 회로가 전력 차단되어야 하는지를 결정할 수 있다. 위에서 설명한 것처럼, PS는 프로그래머블 회로의 전력 기능을 제어하도록 구성될 수 있다. 일 실시형태에 있어서, 코어 컴플렉스 자체는, 예를 들면 프로그램 코드의 실행 및 프로그램적으로 특정된 특수 로직의 적용을 통하여, 프로그래머블 회로가 전력 차단되어야 한다고 결정할 수 있다. 다른 실시형태에 있어서, IC, 예컨대 코어 컴플렉스는 프로그래머블 회로의 전력 차단을 요청하는 통지 또는 신호를 다른 외부 처리 노드로부터 수신할 수 있다.
단계 1210에서, 코어 컴플렉스는 PS에 내포된 임의의 I/O 장치가 PS를 통하여, 예를 들면 하나 이상의 인터페이스를 통하여 프로그래머블 회로에 결합되는지를 결정할 수 있다. 코어 컴플렉스는, 예를 들면, PS 내에 위치된 제어 레지스터를 통하여 I/O 장치, 인터페이스, 코어 스위치 등의 구성을 체크하여 어떤 I/O 장치(만일 있으면)가 프로그래머블 회로 내의 사용자 회로에 의해 서비스되는지를 결정할 수 있다. 하나 이상의 I/O 장치가 PS를 통하여 프로그래머블 회로에 결합된 때, 이 방법은 단계 1215로 진행한다. 어떠한 I/O 장치도 PS를 통하여 프로그래머블 회로에 결합되지 않은 때 이 방법은 단계 1225로 진행한다.
단계 1215에서, PS는 I/O 장치를 통한 제어를 획득할 수 있다. 예를 들면, 코어 컴플렉스는 도 10 및 도 11과 관련하여 설명한 것처럼 PS 내에서 통신 링크를 재구성하도록 구성될 수 있고, 그래서 I/O 장치로부터 수신된 정보는 프로그래머블 회로 대신에 코어 컴플렉스로 지향된다. PS에서 록킹 메커니즘이 사용되는 경우에, 코어 컴플렉스는 코어 컴플렉스가 I/O 장치를 통한 배타적 제어를 취득하였음을 록킹 메커니즘에게 지시할 수 있다. 설명의 목적상, 방법(1200)은 하나의 I/O 장치가 PS를 통하여 프로그래머블 회로에 결합된 것으로 가정한다. 그러나, 2개 이상의 I/O 장치가 프로그래머블 회로에 결합될 수 있다는 점 및 도 12와 관련하여 설명한 단계들이 그 경우에 적용될 수 있다는 점을 이해하여야 한다.
단계 1220에서, PS는 외부 처리 노드와 I/O 장치 간에 통신 링크를 유지하는 것을 시작할 수 있다. PS는 외부 처리 노드와 I/O 장치에 대하여 서비스할 수 있고, 또한 프로그래머블 회로의 사용자 회로에 의해 제공된 기능을 수행할 수 있다. 주지된 바와 같이, PS는 사용자 회로의 충분한 기능을 제공하거나 사용자 회로에 의해 제공된 기능의 제한된 부분집합을 제공할 수 있다.
단계 1225에서, PS는 프로그래머블 회로를 유휴 상태로 둘 수 있다. 단계 1230에서, PS는 선택적으로 프로그래머블 회로에게 질의하고 프로그래머블 회로에서 구현되는 회로, 예를 들면 사용자 회로에 대한 상태 정보를 결정할 수 있다. 주지된 바와 같이, 프로그래머블 회로에 저장된 데이터는 구성 리드백 기능, 경계 주사 기능 등을 이용하여 PS에 의해 획득될 수 있다. 단계 1235에서, PS는 선택적으로 프로그래머블 회로로부터 획득된 상태 정보를 메모리에 저장할 수 있다.
단계 1240에서, PS, 예를 들면, 코어 컴플렉스는 프로그래머블 회로를 PS와 결합하는 레벨 시프터를 공지의 상태로 둘 수 있다. 단계 1245에서, PS는 프로그래머블 회로를 전력 차단할 수 있다. 단계 1250에서, PS는 동작, 예를 들면, 프로그램 코드의 실행을 계속하고 I/O 장치와 이 I/O 장치에 결합된 외부 처리 노드 간의 통신 링크를 유지할 수 있다. PS는 I/O 장치에 대한 서비스를 계속할 수 있다.
도 13은 이 명세서에서 설명하는 다른 실시형태에 따라 IC의 전력 관리 방법(1300)을 보인 제5 흐름도이다. 방법(1300)은 프로그래머블 회로에서 구현되는 회로에 결합될 수 있는 I/O 장치를 통한 제어를 고려한 IC 내에서의 전력 관리 기술을 설명한다. 더 구체적으로, 방법(1300)은 프로그래머블 회로가 전력 투입되고 I/O 장치를 통한 제어가 코어 컴플렉스로부터 프로그래머블 회로에 다시 제공되는 예를 설명한다. 방법(1300)은 이 명세서의 도 10 내지 도 12와 관련하여 설명한 시스템을 이용하여 수행될 수 있다.
방법(1300)은 PS가 동작 상태이고 프로그래머블 회로가 전력 차단된 상태에서 시작할 수 있다. 더 구체적으로, 방법(1300)은 PS의 코어 컴플렉스가 프로그래머블 회로의 전력 차단 전에, 도 12와 관련하여 설명한 것처럼 프로그래머블 회로에서 구현되는 사용자 회로에 의해 제어되었던 I/O 장치를 통한 제어를 획득한 상태에서 시작할 수 있다.
따라서, 단계 1305에서, PS는 IC의 프로그래머블 회로에 전력을 공급하는 스위치들을 턴온하거나 다른 방식으로 프로그래머블 회로에 대한 전력 공급을 인에이블할 수 있다. 단계 1310에서, PS 전압 검출기는 프로그래머블 회로에 대한 전력 신호가 프로그래머블 회로 전력 표시 신호에 결합된 레벨 시프터를 동작시키기 위한 최소 레벨 시프터 전압에 부합한지 결정할 수 있다. 단계 1315에서, 프로그래머블 회로는 전력 신호가 최소 프로그래머블 회로 전압에 부합한지 결정할 수 있다.
단계 1320에서, 전력 신호가 최소 프로그래머블 회로 전압에 부합한다는 결정에 응답하여, 프로그래머블 회로는 프로그래머블 회로가 구성을 위한 준비가 되었음을 PS에게 시그널링한다. 단계 1325에서, PS는 PS와 프로그래머블 회로 간에 시스템 레벨 신호를 통신하기 위해 사용되는 임의의 레벨 시프터를 인에이블할 수 있다. 일 실시형태에 있어서, PS는 프로그래머블 회로의 구성을 필요로 하지 않는 레벨 시프터를 인에이블할 수 있다. PS와 프로그래머블 회로 사이에서 전달된 클럭 신호를 전파하는 하나 이상의 레벨 시프터가 또한 인에이블될 수 있다.
단계 1330에서, PS는 하나 이상의 회로를 구현하도록 프로그래머블 회로를 구성할 수 있다. 일 실시형태에 있어서, 동작 상태인 PS는 오프칩으로 위치된 기억 위치로부터 프로그래머블 회로에 대한 구성 데이터에 액세스할 수 있다. 예를 들면, PS는 외부 메모리로부터 구성 데이터를 검색하거나 통신 링크, 예를 들면, 이더넷 접속을 통해 구성 데이터에 대한 요청을 발행할 수 있다. 구성 데이터는, PS에 의해 수신된 때, PCAP 인터페이스에 제공되고 프로그래머블 회로 내의 구성 제어기에게 보내질 수 있다. 그 다음에, 구성 제어기는 구성 데이터를 구성 메모리 셀에 로드하고, 이로써 구성 데이터에 의해 특정된 물리적 회로를 구현할 수 있다.
일 예로서, 동일한 회로 설계, 예를 들면, 사용자 회로에 대한 동일한 설계가 프로그래머블 회로가 전력 차단되기 전에 존재하였던 프로그래머블 회로에 다시 로드될 수 있다. 다른 예로서, 전력 차단 전에 프로그래머블 회로에서 구현된 사용자 회로의 수정 버전, 예를 들면 업그레이드된 버전이 구성 데이터의 로딩을 통해 구현될 수 있다. 다른 예로서, 완전히 다른 회로 설계가, 프로그래머블 회로의 전력 차단 전에 프로그래머블 회로 내에서 구현된 사용자 회로와는 크게 다른 사용자 회로로서 프로그래머블 회로에서 구현될 수 있다.
단계 1335에서, PS는 PS와 프로그래머블 회로 사이에서 사용자 신호를 전달하기 위해 이용할 수 있는 레벨 시프터를 인에이블할 수 있다. 단계 1340에서, 임의의 저장된 상태 데이터가 프로그래머블 회로에서 구현되는 사용자 회로에서 선택적으로 복원, 예를 들면, 다시 로딩될 수 있다. 단계 1340 후에는 IC 전체가 동작상태이다. 주지된 바와 같이, PS는 동작 모드에 있고 프로그램 코드를 실행할 수 있다. 또한, 프로그래머블 회로는 동작 모드에 있다. 일 실시형태에 있어서, 프로그래머블 회로는 사용자 지정 신호의 발생을 통한 구성에 후속하여 리세트 유형의 상태로부터 해제될 수 있다. 사용자 지정 신호는 단계 1330과 관련하여 설명한 것처럼 구성 데이터의 로딩의 결과로서 프로그래머블 회로에서 구현되는 회로에 의해 발생된 신호일 수 있다.
단계 1345에서, PS, 예를 들면 코어 컴플렉스는, 프로그래머블 회로가 리세트 상태로부터 해제된 것에 응답하여, I/O 장치를 통한 제어를 프로그래머블 회로에서 구현되는 사용자 회로에게 전달할 수 있다. 도 12와 관련하여 설명한 것처럼, 코어 컴플렉스는 프로그래머블 회로에서 구현되는 사용자 회로로부터 I/O 장치를 통한 제어를 떠맡을 수 있다. PS에서 록킹 메커니즘을 사용하는 경우에, 코어 컴플렉스는 코어 컴플렉스가 I/O 장치를 통한 제어, 예를 들면 배타적 제어를 사용자 회로에게 전달하였음을 록킹 메커니즘에게 알릴 수 있다. 코어 컴플렉스는 I/O 장치가 코어 스위치 및 인터페이스를 통하여 사용자 회로와 다시 결합되도록 PS 내에서 통신 링크를 재구성하도록 구성될 수 있다. 예를 들면, 데이터 경로가 도 11에 도시된 경로로부터 도 10에 도시된 경로로 변경되어 정보가 I/O 장치와 사용자 회로 사이에서 코어 스위치 및 인터페이스를 통하여 흐를 수 있다.
단계 1350에서, 제어가 코어 컴플렉스로부터 사용자 회로로 전달된 것에 응답하여, 사용자 회로는 I/O 장치에 대한 서비스를 시작할 수 있다. 이와 관련하여, I/O 장치에 결합된 IC 외부의 처리 노드와 I/O 장치 간의 통신 링크는 절단되거나 다른 방식으로 손실되지 않는다. 코어 컴플렉스가 사용자 회로와 비교할 때 감소된 기능만을 제공하는 경우에, 완전한 기능이 복원되고 I/O 장치를 통해 처리 노드에 이용될 수 있다.
도 12와 관련하여 주지된 것처럼, 설명의 목적상, 방법(1300)은 하나의 I/O 장치가 PS를 통해 프로그래머블 회로에 결합된 것으로 추정한다. 그러나, 하나 이상의 I/O 장치가 프로그래머블 회로에 결합될 수 있고 도 13과 관련하여 설명한 단계들이 그 경우에 적용될 수 있다는 것을 이해하여야 한다.
각 도면의 흐름도는 이 명세서에서 설명한 하나 이상의 실시형태에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현예의 구조, 기능 및 동작을 설명한다. 이와 관련하여, 흐름도의 각 블록은 특유의 논리 기능을 구현하는 하나 이상의 실행가능한 프로그램 코드 부분을 포함하는 모듈, 세그멘트 또는 코드부를 나타낼 수 있다.
일부 대안적인 구현예에 있어서, 각 블록에 표시된 기능들은 도면에 표시된 것과 다른 순서로 발생할 수 있다는 것을 이해하여야 한다. 예를 들면, 연속적인 것으로 표시된 2개의 블록은 사실 실질적으로 동시에 실행될 수 있고, 관련된 기능성에 따라서 블록들이 때로는 역순으로 실행될 수도 있다. 또한, 흐름도 표시의 각 블록 및 흐름도 표시의 블록들의 조합이 특수 기능 또는 동작을 수행하는 특수 목적 하드웨어 기반 시스템, 또는 특수 목적 하드웨어와 실행가능 명령어의 조합에 의해 구현될 수 있다는 점을 이해하여야 한다.
하나 이상의 실시형태는 하드웨어로 또는 하드웨어와 소프트웨어의 조합으로 실현될 수 있다. 하나 이상의 실시형태는 하나의 시스템에서 중앙집중화 방식으로 또는 상이한 요소들이 수 개의 상호접속된 시스템을 통하여 분산된 경우에 분산 방식으로 실현될 수 있다. 여기에서 설명한 방법들 중 적어도 일부를 실행하도록 적응된 임의 종류의 데이터 처리 시스템 또는 다른 장치가 적합하다.
하나 이상의 실시형태는 여기에서 설명한 방법들을 구현할 수 있는 모든 특징들을 포함한, 컴퓨터 프로그램 제품과 같은 장치에 또한 내장될 수 있다. 장치는 데이터 기억 매체, 예를 들면, 메모리와 프로세서를 포함한 시스템에 로드되어 실행될 때 시스템으로 하여금 이 명세서에서 설명한 기능들 중 적어도 일부를 수행하게 하는 프로그램 코드를 저장한, 비 일시적 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체를 포함할 수 있다. 데이터 기억 매체의 예로는, 비제한적인 예를 들자면, 광학 매체, 자기 매체, 자기-광학 매체, 랜덤 액세스 메모리 또는 하드 디스크와 같은 컴퓨터 메모리 등이 있다.
이 명세서에서 사용된 용어 "컴퓨터 프로그램", "소프트웨어", "애플리케이션", "컴퓨터 사용가능 프로그램 코드", "프로그램 코드", "실행가능 코드", 이들의 변체 및/또는 조합은 정보 처리 능력이 있는 시스템이 직접 또는 하기의 것, 즉 a) 다른 언어, 코드 또는 기호법(notation)으로의 변환; b) 다른 자료 형태로의 재생 중의 어느 하나 또는 둘 다 후에 특수 기능을 수행하게 하도록 의도된 명령어 집합의 임의의 언어, 코드 또는 기호법의 임의의 표현을 의미한다. 예를 들면, 프로그램 코드는, 비제한적인 예를 들자면, 서브루틴, 함수, 절차, 오브젝트 메서드, 오브젝트 구현, 실행가능 애플리케이션, 애플릿, 서블릿, 소스 코드, 목적 코드, 공유 라이브러리/동적 로드 라이브러리 및/또는 컴퓨터 시스템에서 실행하도록 설계된 다른 명령어 시퀀스를 포함할 수 있다.
이 명세서에서 사용된 단수 표현의 용어는 1개 또는 1개 이상으로서 규정된다. 이 명세서에서 사용된 용어 "복수의"는 2개 또는 2개 이상으로서 규정된다. 이 명세서에서 사용된 용어 "다른"은 적어도 두번째 또는 그 이상으로서 규정된다. 이 명세서에서 사용된 용어 "포함하는" 및/또는 "구비하는"은 포괄하는, 즉 개방 언어로서 규정된다. 이 명세서에서 사용된 용어 "결합된"은 다르게 표현되지 않는 한 임의의 중재 요소 없이 직접적으로 또는 하나 이상의 중재 요소와 함께 간접적으로 접속되는 것으로서 규정된다. 2개의 요소는 통신 채널, 경로, 네트워크 또는 시스템을 통하여 기계적으로, 전기적으로 또는 통신적으로 또한 결합될 수 있다.
이 명세서에서 개시되는 하나 이상의 실시형태는 본 발명의 정신 또는 본질적 속성으로부터 벗어나지 않고 다른 형태로 실현될 수 있다. 따라서, 하나 이상 실시형태의 범위를 표시하는 것으로서, 전술한 명세서보다는 이하의 특허 청구범위를 참조하여야 한다.

Claims (15)

  1. 집적회로에 있어서,
    프로그램 코드를 실행하도록 구성된 코어를 구비한 코어 컴플렉스(core complex)를 포함하고, 하드-와이어링되며(hard-wired), 프로세서 하드웨어 자원을 포함하는, 프로세서 시스템 ― 상기 프로세서 하드웨어 자원은 상기 프로세서 시스템 내에 위치됨 ― ; 및
    상이한 물리적 회로들을 구현하도록 구성되고, 상기 프로세서 시스템에 결합되는, 프로그래머블 회로
    를 포함하고,
    상기 프로그래머블 회로는 상기 프로세서 하드웨어 자원의 사용을 상기 코어 컴플렉스와 공유하도록 구성되며,
    상기 프로세서 하드웨어 자원은, 인터페이스를 제공하는 입출력(input/output, I/O) 장치이고, 상기 프로그래머블 회로 및 상기 코어 컴플렉스에 대한 인터럽트 신호를 발생시키도록 구성되며,
    상기 인터럽트 신호에 응답하여:
    상기 코어 컴플렉스는 상기 코어 컴플렉스가 상기 프로세서 하드웨어 자원에 대한 제어를 갖는 경우 상기 인터럽트 신호를 서비스하며; 그리고
    상기 프로그래머블 회로는 상기 프로그래머블 회로가 상기 프로세서 하드웨어 자원에 대한 제어를 갖는 경우 상기 인터럽트 신호를 서비스하는,
    집적 회로.
  2. 제1항에 있어서,
    코어는 레벨 1 캐시 메모리를 포함하며, 상기 프로그래머블 회로는 상기 코어의 상기 레벨 1 캐시 메모리에 대한 직접 판독 및 기록 액세스를 갖는,
    집적 회로.
  3. 제1항에 있어서,
    상기 프로세서 하드웨어 자원은 상기 프로세서 시스템에 또는 상기 프로그래머블 회로에 전용되는 상기 집적 회로의 입출력(I/O) 핀에 선택적으로 결합되는,
    집적 회로.
  4. 제3항에 있어서,
    상기 프로세서 하드웨어 자원으로부터 발생된 데이터는 상기 프로세서 시스템에 전용되는 상기 집적 회로의 I/O 핀에 제공되고, 상기 프로그래머블 회로에 결합된 패브릭(fabric) 입출력 멀티플렉서에 결합된 데이터 라인 상에서 발생되는,
    집적 회로.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 집적 회로는, 한번에 상기 코어 컴플렉스 또는 상기 프로그래머블 회로 중 하나가 상기 프로세서 하드웨어 자원을 제어하게 허용하도록 구성되는 하드웨어 록킹 메커니즘(hardware locking mechanism)을 포함하는,
    집적 회로.
  6. 제5항에 있어서,
    상기 하드웨어 록킹 메커니즘은 상기 레벨 1 캐시 메모리 또는 레벨 2 캐시 메모리 내의 메모리 로케이션(location)인,
    집적 회로.
  7. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 프로세서 시스템은 상기 코어 컴플렉스에 연결된 레벨 2 캐시 메모리를 포함하며; 그리고
    상기 프로그래머블 회로는 상기 레벨 2 캐시 메모리에 대한 직접 기록 및 판독 액세스를 갖는,
    집적 회로.
  8. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 프로그래머블 회로는 상기 프로세서 하드웨어 자원을 통한 상기 집적 회로 외부의 처리 노드와의 통신 링크를 갖는 사용자 회로를 포함하고;
    상기 코어 컴플렉스는 상기 프로그래머블 회로가 전력 차단될 것임을 결정하는 것에 응답하여, 상기 프로세서 하드웨어 자원을 통제하도록(take control of) 구성되며; 그리고
    상기 코어 컴플렉스는 상기 프로그래머블 회로가 전력 차단됨과 더불어, 상기 프로세서 하드웨어 자원을 통한 상기 처리 노드와의 통신 링크를 유지시키는,
    집적 회로.
  9. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 프로그래머블 회로는 인터페이스를 통해 상기 프로세서 시스템에 결합된 사용자 회로를 포함하고, 상기 프로세서 시스템은 표준 I/O 기능을 구현하도록 구성되며, 상기 프로세서 시스템은 상기 인터페이스를 통해 수신된 상기 사용자 회로로부터의 요청에 응답하여 상기 사용자 회로에 상기 표준 I/O 기능을 제공하도록 구성되는,
    집적 회로.
  10. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 프로세서 하드웨어 자원은 상기 코어 컴플렉스에 의한 사용을 위해, 상기 프로그래머블 회로에 의한 사용을 위한 것과 상이하게 구성되며; 그리고
    상기 코어 컴플렉스 또는 상기 프로그래머블 회로가 상기 프로세서 하드웨어 자원을 제어하는 것에 응답하여, 상기 프로세서 하드웨어 자원이 재구성되는,
    집적 회로.
  11. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 프로그래머블 회로는 상기 프로세서 시스템과 독립적으로 전력 차단되도록 구성되며; 그리고
    상기 프로세서 시스템은 상기 프로그래머블 회로의 전력 차단(powering off) 또는 전력 인가(powering on)를 제어하는,
    집적 회로.
  12. 집적 회로의 프로세서 하드웨어 자원을 공유하는 방법에 있어서,
    사용자 회로를 구현하도록 상기 집적 회로의 프로그래머블 회로를 구성하는 단계;
    프로세서 시스템의 프로세서 하드웨어 자원의 사용을 공유하도록 상기 프로그래머블 회로를 구성하는 단계 ― 상기 프로세서 시스템은 하드-와이어링되고, 프로그램 코드를 실행하도록 구성된 코어를 갖는 코어 컴플렉스를 포함하며, 상기 프로세서 하드웨어 자원은 상기 프로세서 시스템 내에 위치되고, 상기 프로세서 하드웨어 자원은 인터페이스를 제공하는 입출력(I/O) 장치임 ― ;
    상기 코어 컴플렉스 및 상기 프로그래머블 회로에 제공되는, 상기 프로세서 하드웨어 자원로부터의 인터럽트 신호를 발생시키는 단계; 및
    상기 인터럽트 신호를 서비스하는 단계
    를 포함하며,
    상기 인터럽트 신호는 상기 코어 컴플렉스가 상기 프로세서 하드웨어 자원을 제어하는 경우 상기 코어 컴플렉스에 의하여 서비스되고,
    상기 인터럽트 신호는 상기 프로그래머블 회로가 상기 프로세서 하드웨어 자원을 제어하는 경우 상기 프로그래머블 회로 내에 상기 사용자 회로에 의하여 서비스되는,
    프로세서 하드웨어 자원을 공유하는 방법.
  13. 제12항에 있어서,
    상기 프로세서 시스템의 상기 프로세서 하드웨어 자원에 대한 액세스 요청을 수신하는 단계;
    요청된 프로세서 하드웨어 자원이 이용가능한지를 결정하는 단계; 및
    상기 요청된 프로세서 하드웨어 자원이 이용가능한 경우,
    상기 요청된 프로세서 하드웨어 자원에 대한 액세스를 허가하고;
    상기 요청된 프로세서 하드웨어 자원을 구성하며; 그리고
    상기 요청된 프로세서 하드웨어 자원 상에서 동작을 개시하는 단계
    를 더 포함하는,
    프로세서 하드웨어 자원을 공유하는 방법.
  14. 제12항에 있어서,
    상기 사용자 회로는 상기 프로세서 하드웨어 자원을 이용하여 상기 집적 회로 외부의 처리 노드와의 통신 링크를 갖고, 상기 방법은,
    상기 프로그래머블 회로에서의 전력 차단 절차에 응답하여 상기 코어 콤플렉스가 상기 프로세서 하드웨어 자원을 통제하는 단계; 및
    상기 프로그래머블 회로가 전력 차단됨과 더불어, 상기 코어 콤플렉스가 상기 프로세서 하드웨어 자원을 통한 상기 처리 노드와의 통신 링크를 유지하는 단계
    를 더 포함하는,
    프로세서 하드웨어 자원을 공유하는 방법.
  15. 제12항에 있어서,
    상기 사용자 회로가 상기 코어 콤플렉스의 상기 코어의 레벨 1 캐시 메모리에 또는 상기 프로세서 시스템의 레벨 2 캐시에 직접 액세스하는 단계를 더 포함하는,
    프로세서 하드웨어 자원을 공유하는 방법.
KR1020137021704A 2011-02-28 2012-01-30 프로그래머블 회로 및 내장형 프로세서 시스템을 구비한 집적 회로 KR101496072B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/037,234 2011-02-28
US13/037,234 US8667192B2 (en) 2011-02-28 2011-02-28 Integrated circuit with programmable circuitry and an embedded processor system
PCT/US2012/023190 WO2012118586A1 (en) 2011-02-28 2012-01-30 Integrated circuit with programmable circuitry and an embedded processor system

Publications (2)

Publication Number Publication Date
KR20130108469A KR20130108469A (ko) 2013-10-02
KR101496072B1 true KR101496072B1 (ko) 2015-02-25

Family

ID=45768293

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137021704A KR101496072B1 (ko) 2011-02-28 2012-01-30 프로그래머블 회로 및 내장형 프로세서 시스템을 구비한 집적 회로

Country Status (5)

Country Link
US (2) US8667192B2 (ko)
EP (1) EP2681670B1 (ko)
JP (1) JP5826865B2 (ko)
KR (1) KR101496072B1 (ko)
WO (1) WO2012118586A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8667192B2 (en) * 2011-02-28 2014-03-04 Xilinx, Inc. Integrated circuit with programmable circuitry and an embedded processor system
US9465620B2 (en) * 2012-12-20 2016-10-11 Intel Corporation Scalable compute fabric
GB2511817A (en) * 2013-03-14 2014-09-17 Imagination Tech Ltd Rendering in computer graphics systems
US9471537B2 (en) * 2013-03-14 2016-10-18 Altera Corporation Hybrid programmable many-core device with on-chip interconnect
US9053325B2 (en) * 2013-08-22 2015-06-09 Freescale Semiconductor, Inc. Decryption key management system
US9189582B2 (en) * 2013-08-23 2015-11-17 Mentor Graphics Corporation Programmable pattern aware voltage analysis
CN103838694B (zh) * 2014-02-28 2017-02-08 西安邮电大学 一种fpga高速读取usb接口数据的方法
US9213866B1 (en) 2014-04-01 2015-12-15 Xilinx, Inc. Circuits for and methods of preventing unauthorized access in an integrated circuit
EP3118747B1 (en) * 2014-04-03 2018-08-22 Huawei Technologies Co., Ltd. Field programmable gate array and communication method
US9696789B2 (en) 2014-08-18 2017-07-04 Xilinx, Inc. Sub-system power management control
US9495302B2 (en) 2014-08-18 2016-11-15 Xilinx, Inc. Virtualization of memory for programmable logic
US9665509B2 (en) 2014-08-20 2017-05-30 Xilinx, Inc. Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system
US9130559B1 (en) * 2014-09-24 2015-09-08 Xilinx, Inc. Programmable IC with safety sub-system
CN104951334B (zh) * 2015-05-22 2018-01-23 中国电子科技集团公司第十研究所 FPGA双片QSPI flash的程序加载方法
GB2543804A (en) * 2015-10-29 2017-05-03 Nordic Semiconductor Asa Microprocessor interfaces
EP3386089B1 (en) 2016-07-13 2020-01-01 Fuji Electric Co., Ltd. Power module
KR102420735B1 (ko) * 2016-08-19 2022-07-14 가부시키가이샤 한도오따이 에네루기 켄큐쇼 반도체 장치의 전원 제어 방법
EP3508984B1 (en) * 2016-08-31 2022-09-28 Socionext Inc. Bus control circuit, semiconductor integrated circuit, circuit substrate, information processing device, and bus control method
US10482054B1 (en) 2016-09-09 2019-11-19 Xilinx, Inc. AXI-CAPI adapter
US10169177B1 (en) 2017-11-02 2019-01-01 Xilinx, Inc. Non-destructive online testing for safety critical applications
US10187064B1 (en) 2017-11-30 2019-01-22 Intel Corporation Systems and methods for routing data across regions of an integrated circuit
CN108055489B (zh) * 2017-12-28 2019-11-05 中国科学院长春光学精密机械与物理研究所 一种cmos图像传感器的单粒子功能中断防护的系统和方法
US11709624B2 (en) 2018-02-15 2023-07-25 Xilinx, Inc. System-on-chip having multiple circuits and memory controller in separate and independent power domains
US10866753B2 (en) 2018-04-03 2020-12-15 Xilinx, Inc. Data processing engine arrangement in a device
US10747690B2 (en) * 2018-04-03 2020-08-18 Xilinx, Inc. Device with data processing engine array
US10528513B1 (en) 2018-04-30 2020-01-07 Xilinx, Inc. Circuit for and method of providing a programmable connector of an integrated circuit device
JP2022512879A (ja) * 2018-11-05 2022-02-07 ザイリンクス インコーポレイテッド ネットワークインターフェースデバイス
US11086815B1 (en) * 2019-04-15 2021-08-10 Xilinx, Inc. Supporting access to accelerators on a programmable integrated circuit by multiple host processes
US11775452B2 (en) * 2020-07-23 2023-10-03 MemRay Corporation Non-volatile memory controller device and non-volatile memory device
TWI755068B (zh) * 2020-09-21 2022-02-11 宜鼎國際股份有限公司 具有系統作業能力的資料儲存裝置
US11675733B2 (en) 2021-06-15 2023-06-13 Itron, Inc. Techniques for release assistance indication assertion
US11818658B2 (en) 2021-06-15 2023-11-14 Itron, Inc. Techniques for release assistance indication assertion
US11830354B2 (en) * 2021-06-15 2023-11-28 Itron, Inc. Techniques for release assistance indication assertion

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002049576A (ja) 2000-06-12 2002-02-15 Altera Corp チップ搭載システムのためのバス・アーキテクチャ
US6803785B1 (en) 2000-06-12 2004-10-12 Altera Corporation I/O circuitry shared between processor and programmable logic portions of an integrated circuit
US20040230771A1 (en) 2003-01-31 2004-11-18 Stmicroelectronics S.R.L. Reconfigurable signal processing IC with an embedded flash memory device
US7225285B1 (en) 2004-09-07 2007-05-29 Altera Corporation Assigning interrupts in multi-master systems

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4023A (en) * 1845-05-01 Hijbst
US5581482A (en) 1994-04-26 1996-12-03 Unisys Corporation Performance monitor for digital computer system
US5867644A (en) 1996-09-10 1999-02-02 Hewlett Packard Company System and method for on-chip debug support and performance monitoring in a microprocessor
US5835702A (en) 1996-10-21 1998-11-10 International Business Machines Corporation Performance monitor
US6233531B1 (en) 1997-12-19 2001-05-15 Advanced Micro Devices, Inc. Apparatus and method for monitoring the performance of a microprocessor
US7085670B2 (en) 1998-02-17 2006-08-01 National Instruments Corporation Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources
US6662302B1 (en) 1999-09-29 2003-12-09 Conexant Systems, Inc. Method and apparatus of selecting one of a plurality of predetermined configurations using only necessary bus widths based on power consumption analysis for programmable logic device
US6785107B1 (en) * 2001-06-22 2004-08-31 Lsi Logic Corporation Power sequence protection for a level shifter
JP2003091500A (ja) * 2001-09-17 2003-03-28 Hitachi Ltd I/o時分割データ処理装置
US6798239B2 (en) 2001-09-28 2004-09-28 Xilinx, Inc. Programmable gate array having interconnecting logic to support embedded fixed logic circuitry
US6886092B1 (en) * 2001-11-19 2005-04-26 Xilinx, Inc. Custom code processing in PGA by providing instructions from fixed logic processor portion to programmable dedicated processor portion
JP3904493B2 (ja) * 2002-07-24 2007-04-11 株式会社ルネサステクノロジ 半導体装置
US7308564B1 (en) 2003-03-27 2007-12-11 Xilinx, Inc. Methods and circuits for realizing a performance monitor for a processor from programmable logic
US6948147B1 (en) * 2003-04-03 2005-09-20 Xilinx, Inc. Method and apparatus for configuring a programmable logic device using a master JTAG port
US7170315B2 (en) * 2003-07-31 2007-01-30 Actel Corporation Programmable system on a chip
JP2005057452A (ja) * 2003-08-01 2005-03-03 Matsushita Electric Ind Co Ltd プログラマブル論理回路
US7026840B1 (en) 2004-03-02 2006-04-11 Altera Corporation Programmable logic device
US7188266B1 (en) 2004-03-08 2007-03-06 Altera Corporation Systems and methods for reducing static and total power consumption in a programmable logic device
US7512813B2 (en) * 2004-05-28 2009-03-31 International Business Machines Corporation Method for system level protection of field programmable logic devices
US7143218B1 (en) * 2004-08-27 2006-11-28 Xilinx, Inc. Network media access controller embedded in a programmable logic device-address filter
US7274212B1 (en) * 2004-11-04 2007-09-25 Altera Corporation Methods and apparatus for control and configuration of programmable logic device
US8155113B1 (en) 2004-12-13 2012-04-10 Massachusetts Institute Of Technology Processing data in a parallel processing environment
US7441131B2 (en) * 2005-09-30 2008-10-21 Silicon Laboratories Inc. MCU with power saving mode
US7853809B2 (en) 2007-01-11 2010-12-14 Seagate Technology Llc System and method of power management
US7992020B1 (en) 2008-03-05 2011-08-02 Xilinx, Inc. Power management with packaged multi-die integrated circuit
US7724028B1 (en) 2008-04-11 2010-05-25 Xilinx, Inc. Clocking for a hardwired core embedded in a host integrated circuit device
US8095815B2 (en) 2008-10-14 2012-01-10 Hewlett-Packard Development Company, L.P. System for reducing power consumption in an electronic chip
US8063674B2 (en) * 2009-02-04 2011-11-22 Qualcomm Incorporated Multiple supply-voltage power-up/down detectors
US8274848B2 (en) * 2010-08-03 2012-09-25 International Business Machines Corporation Level shifter for use with memory arrays
US8612789B2 (en) * 2011-01-13 2013-12-17 Xilinx, Inc. Power management within an integrated circuit
US8667192B2 (en) * 2011-02-28 2014-03-04 Xilinx, Inc. Integrated circuit with programmable circuitry and an embedded processor system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002049576A (ja) 2000-06-12 2002-02-15 Altera Corp チップ搭載システムのためのバス・アーキテクチャ
US6803785B1 (en) 2000-06-12 2004-10-12 Altera Corporation I/O circuitry shared between processor and programmable logic portions of an integrated circuit
US20040230771A1 (en) 2003-01-31 2004-11-18 Stmicroelectronics S.R.L. Reconfigurable signal processing IC with an embedded flash memory device
US7225285B1 (en) 2004-09-07 2007-05-29 Altera Corporation Assigning interrupts in multi-master systems

Also Published As

Publication number Publication date
US20120221833A1 (en) 2012-08-30
US8667192B2 (en) 2014-03-04
CN103403701A (zh) 2013-11-20
EP2681670A1 (en) 2014-01-08
KR20130108469A (ko) 2013-10-02
JP5826865B2 (ja) 2015-12-02
US9454498B1 (en) 2016-09-27
WO2012118586A1 (en) 2012-09-07
JP2014515843A (ja) 2014-07-03
EP2681670B1 (en) 2016-03-30

Similar Documents

Publication Publication Date Title
KR101496072B1 (ko) 프로그래머블 회로 및 내장형 프로세서 시스템을 구비한 집적 회로
KR101606247B1 (ko) 집적 회로 내에서의 전력 관리
US7737725B1 (en) Device control register for a processor block
US9436785B1 (en) Hierarchical preset and rule based configuration of a system-on-chip
US8438326B2 (en) Scalable memory interface system
US10037301B2 (en) Circuits and methods for inter-processor communication
US9983889B1 (en) Booting of integrated circuits
US10691195B2 (en) Selective coupling of memory to voltage rails based on operating mode of processor
US11599498B1 (en) Device with data processing engine array that enables partial reconfiguration
US20120319750A1 (en) Multi-part clock management
CN107112994B (zh) 用于集成电路的电源管理系统
CN117836750A (zh) 可扩展片上系统
US20090300382A1 (en) Controlling Power Consumption in a Data Processing Apparatus
US10275259B1 (en) Multi-stage booting of integrated circuits
CN103294638A (zh) 确定性高整体性多处理器片上系统
TWI750118B (zh) 時脈管理電路系統、系統單晶片以及時脈管理方法
JP6689824B2 (ja) サブシステム電力管理制御
KR20110115983A (ko) 데이터 프로세서 및 데이터 처리 시스템
US9990131B2 (en) Managing memory in a multiprocessor system
CN103403701B (zh) 具有可编程电路系统和嵌入式处理器系统的集成电路
JPH08288820A (ja) 論理回路

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180206

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190201

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200212

Year of fee payment: 6