KR20220160709A - 이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트를 위한 메커니즘 - Google Patents

이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트를 위한 메커니즘 Download PDF

Info

Publication number
KR20220160709A
KR20220160709A KR1020227041255A KR20227041255A KR20220160709A KR 20220160709 A KR20220160709 A KR 20220160709A KR 1020227041255 A KR1020227041255 A KR 1020227041255A KR 20227041255 A KR20227041255 A KR 20227041255A KR 20220160709 A KR20220160709 A KR 20220160709A
Authority
KR
South Korea
Prior art keywords
processor
register
bit
ipi
bit position
Prior art date
Application number
KR1020227041255A
Other languages
English (en)
Other versions
KR102544392B1 (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 KR20220160709A publication Critical patent/KR20220160709A/ko
Application granted granted Critical
Publication of KR102544392B1 publication Critical patent/KR102544392B1/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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Microcomputers (AREA)
  • Bus Control (AREA)

Abstract

이기종 멀티프로세서 시스템(100)에서 프로세서간 인터럽트(IPI)들을 핸들링하는 장치들 및 방법들이 제공된다. 본원에 제공된 확장가능한 IPI 메커니즘은 최소한의 논리를 필요로 하고, 애플리케이션 프로세서들, 실시간 프로세서들, 및 FPGA 가속기들 사이에서와 같은, 이기종 프로세서간 통신을 위해 사용될 수 있다. 이 메커니즘은 또한, 논리 면적 및 프로그래밍가능 복잡도 둘 다의 면에서, 저비용이다. 하나의 예시적인 시스템(100)은 일반적으로 제1 프로세서(102), 제1 프로세서와 상이한 프로세서 유형인 제2 프로세서(104), 및 IPI 회로(108)를 포함한다. IPI 회로는 전형적으로 제1 프로세서와 연관된 제1 레지스터(2020) - 제1 레지스터 내의 제1 비트는 제1 프로세서가 제2 프로세서를 인터럽트하라고 요청했는지를 나타냄 -; 및 제2 프로세서와 연관된 제2 레지스터(202i) - 제2 레지스터 내의 제2 비트는 제2 프로세서가 제1 프로세서를 인터럽트하라고 요청했는지를 나타냄 - 를 포함한다.

Description

이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트를 위한 메커니즘{MECHANISM FOR INTER-PROCESSOR INTERRUPTS IN A HETEROGENEOUS MULTIPROCESSOR SYSTEM}
본 개시내용의 예들은 일반적으로 프로세서 인터럽트에 관한 것이고, 보다 상세하게는, 이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트에 관한 것이다.
집적 회로(IC)들은 명시된 기능들을 수행하도록 구현될 수 있다. 하나의 유형의 IC는, FPGA(field programmable gate array)와 같은, 프로그래밍가능 IC이다. FPGA는 전형적으로 프로그래밍가능 타일들의 어레이를 포함한다. 이 프로그래밍가능 타일들은, 예를 들어, IOB(input/output block), CLB(configurable logic block), BRAM(dedicated random access memory block), 곱셈기, DSP(digital signal processing block), 프로세서, 클럭 관리자, DLL(delay lock loop) 등을 포함할 수 있다.
각각의 프로그래밍가능 타일은 전형적으로 프로그래밍가능 상호연결 회로부(programmable interconnect circuitry) 및 프로그래밍가능 논리 회로부(programmable logic circuitry) 둘 다를 포함한다. 프로그래밍가능 상호연결 회로부는 전형적으로 PIP(programmable interconnect point)에 의해 상호연결된 다양한 길이들의 많은 수의 상호연결 라인들을 포함한다. 프로그래밍가능 논리 회로부는, 예를 들어, 함수 발생기, 레지스터, 산술 논리 등을 포함할 수 있는 프로그래밍가능 요소들을 사용하여 사용자 설계의 논리를 구현한다.
프로그래밍가능 상호연결 회로부 및 프로그래밍가능 논리 회로부는 전형적으로 프로그래밍가능 요소들이 어떻게 구성되는지를 정의하는 구성 데이터의 스트림을 내부 구성 메모리 셀들에 로딩함으로써 프로그래밍된다. 구성 데이터는 외부 장치에 의해 메모리로부터(예를 들어, 외부 PROM으로부터) 판독되거나 FPGA에 기입될 수 있다. 그러면, 개별 메모리 셀들의 전체적 상태들이 FPGA의 기능을 결정한다.
다른 유형의 프로그래밍가능 IC는 CPLD(complex programmable logic device)이다. CPLD는 상호연결 스위치 매트릭스(interconnect switch matrix)에 의해 서로에 그리고 입/출력(I/O) 리소스들에 연결된 2개 이상의 "기능 블록들"을 포함한다. CPLD의 각각의 기능 블록은 PLA(programmable logic array) 및 PAL(programmable array logic) 디바이스들에서 사용되는 것과 유사한 2-레벨 AND/OR 구조를 포함한다. CPLD들에서, 구성 데이터는 전형적으로 칩 상의 비휘발성 메모리에 저장된다. 일부 CPLD들에서, 구성 데이터는 칩 상의 비휘발성 메모리에 저장되고, 이어서 초기 구성 (프로그래밍) 시퀀스의 일부로서 휘발성 메모리에 다운로드된다.
이 프로그래밍가능 IC들 모두에 대해, 디바이스의 기능이 그 목적을 위해 디바이스에 제공된 데이터 비트들에 의해 제어된다. 데이터 비트들은 휘발성 메모리(예컨대, FPGA들 및 일부 CPLD들에서와 같이, 정적 메모리 셀)에, 비휘발성 메모리(예컨대, 일부 CPLD들에서와 같이, 플래시 메모리)에, 또는 임의의 다른 유형의 메모리 셀에 저장될 수 있다.
다른 프로그래밍가능 IC들은 디바이스 상의 다양한 요소들을 프로그래밍가능하게 상호연결시키는, 금속층과 같은, 처리층을 적용함으로써 프로그래밍된다. 이 프로그래밍가능 IC들은 마스크 프로그래밍가능 디바이스라고 한다. 프로그래밍가능 IC들이 또한 다른 방식들로(예컨대, 퓨즈 또는 안티퓨즈 기술을 사용하여) 구현될 수 있다. "프로그래밍가능 IC"라는 문구는 이 디바이스들(이들로 제한되지 않음)을 포함할 수 있고, 게다가, 예를 들어, ASIC(application specific integrated circuit)을 비롯한, 단지 부분적으로 프로그래밍가능한 디바이스들을 포함할 수 있다. 예를 들어, 다른 유형의 프로그래밍가능 IC는 하드-코딩된 트랜지스터 논리(hard-coded transistor logic) 및 하드-코딩된 트랜지스터 논리를 프로그래밍가능하게 상호연결시키는 프로그래밍가능 스위치 패브릭(programmable switch fabric)의 조합을 포함한다.
앞서 논의된 각종의 IC들 중 일부를 비롯한, 일부 최근의 IC들은 프로그램 코드를 실행할 수 있는 임베디드 프로세서를 포함한다. 프로세서는 프로그래밍가능 논리 회로부 및 프로그래밍가능 상호연결 회로부 - 총칭하여 IC의 "프로그래밍가능 회로부"라고도 지칭됨 - 를 포함하는 동일한 다이의 일부로서 제조될 수 있다. 프로세서 내에서 프로그램 코드를 실행하는 것이 IC 상에서 이용가능할 수 있는 프로그래밍가능 회로부를 "프로그래밍"하거나 "구성"하는 것과 구별가능하다는 것을 잘 알 것이다. IC의 프로그래밍가능 회로부를 프로그래밍하거나 구성하는 동작은 프로그래밍가능 회로부 내의 구성 데이터에 의해 명시된 바와 같이 상이한 물리적 회로부의 구현을 가져온다.
본 개시내용의 예들은 일반적으로 이기종 멀티프로세서 시스템에서 프로세서간 인터럽트들을 관리하는 것에 관한 것이다.
본 개시내용의 일 예는 시스템이다. 본 시스템은 일반적으로 제1 프로세서, 제1 프로세서와 상이한 프로세서 유형인 제2 프로세서, 및 제1 프로세서 및 제2 프로세서에 결합된 프로세서간 인터럽트(inter-processor interrupt)(IPI) 회로를 포함한다. IPI 회로는 전형적으로 제1 프로세서와 연관된 제1 레지스터 - 제1 레지스터 내의 제1 비트는 제1 프로세서가 제2 프로세서를 인터럽트하라고 요청하고 있는지를 나타냄 -; 및 제2 프로세서와 연관된 제2 레지스터 - 제2 레지스터 내의 제2 비트는 제2 프로세서가 제1 프로세서를 인터럽트하라고 요청하고 있는지를 나타냄 - 를 포함한다.
본 개시내용의 다른 예는 집적 회로(IC)이다. IC는 일반적으로 하나 이상의 하드-와이어드 프로세서들을 가지는 처리 시스템(processing system)(PS) 부분, 물리적으로 구성가능한 회로부를 갖는 하나 이상의 소프트 프로세서들을 가지는 프로그래밍가능 논리(programmable logic)(PL) 부분, 및 하나 이상의 프로세서간 인터럽트(IPI) 회로들을 포함한다. 각각의 IPI 회로는 전형적으로 상이한 프로세서들 사이에서 하나 이상의 인터럽트 신호들을 발생시키도록 구성되어 있고, 여기서 인터럽트 신호들 중 적어도 하나는 PS 부분 내의 하드-와이어드 프로세서들 중 하나와 PL 부분 내의 소프트 프로세서들 중 하나 사이의 것이다.
본 개시내용의 또 다른 예는 IPI들을 핸들링(handling)하는 방법이다. 본 방법은 일반적으로, IPI 회로에서, 제2 프로세서를 인터럽트하라는 제1 프로세서로부터의 요청을 수신하는 단계 - 제2 프로세서는 제1 프로세서와 상이한 프로세서 유형임 -; 수신된 요청에 기초하여, 제1 프로세서와 연관된 제1 레지스터 내의 제1 비트를 갱신하는 단계 - 제1 비트는 제1 프로세서가 제2 프로세서를 인터럽트하라고 요청하고 있다는 것을 나타냄 -; 및 갱신한 것에 기초하여 IPI 회로로부터 제2 프로세서로 인터럽트 신호를 송신하는 단계를 포함한다.
본 개시내용의 앞서 언급된 특징들이 상세히 이해될 수 있도록, 앞서 간략히 요약된 구현의 보다 상세한 설명은 예들을 참조하여 이루어질 수 있으며, 예들 중 일부는 첨부 도면들에 예시되어 있다. 그렇지만, 유의할 점은 첨부 도면들이 본 개시내용의 전형적인 예들만을 예시하고 있고 따라서 본 개시내용이 다른 똑같이 효과적인 예들을 인정할 수 있기 때문에, 본 개시내용의 범주를 제한하는 것으로 간주되어서는 안된다는 것이다.
도 1a는 본 개시내용의 일 예에 따른, 예시적인 이기종 멀티프로세서 시스템을 나타낸 도면.
도 1b는 본 개시내용의 일 예에 따른, 상호연결부를 이용하는 도 1a의 예시적인 이기종 멀티프로세서 시스템을 나타낸 도면.
도 2는 본 개시내용의 일 예에 따른, 도 1a 및 도 1b의 시스템들에서의 프로세서간 인터럽트(IPI) 제어기 내의 예시적인 레지스터들을 나타낸 도면.
도 3은 본 개시내용의 일 예에 따른, 도 2에서의 레지스터들의 내용에 기초하여 인터럽트를 발생시키기 위한 IPI 제어기 내의 예시적인 논리를 나타낸 도면.
도 4는 본 개시내용의 일 예에 따른, 하드-와이어드 처리 시스템(PS) 및 상이한 물리적 회로들을 구현하도록 구성가능한 프로그래밍가능 논리(PL)를 가지는 예시적인 집적 회로(IC)를 나타낸 도면.
도 5는 본 개시내용의 일 예에 따른, 도 4의 시스템에서의 IPI 제어기들 중 하나 내의 예시적인 레지스터들을 나타낸 도면.
도 6은 본 개시내용의 일 예에 따른, 도 5에서의 레지스터들의 내용에 기초하여 인터럽트를 발생시키기 위한 IPI 제어기들 중 하나 내의 예시적인 논리를 나타낸 도면.
도 7은 본 개시내용의 일 예에 따른, 이기종 멀티프로세서 시스템에서 인터럽트들을 핸들링하기 위한 예시적인 동작들의 흐름도.
본 개시내용의 예들은 이기종 멀티프로세서 시스템에서 프로세서간 인터럽트들을 핸들링하기 위한 기법들 및 장치들을 제공하고, 여기서 프로세서들 중 적어도 일부는 상이한 특성을 갖고, 서로를 직접 인터럽트할 수 없을지도 모른다. 본원에 기술되는 프로세서간 인터럽트(IPI) 메커니즘은 다양한 프로세서들 사이의 IPI 인터페이스로서의 IPI 제어기를 제공한다. IPI 제어기는 각각의 IPI 소스에 대한 트리거 레지스터(trigger register), 각각의 IPI 목적지에 대한 상태 레지스터(status register), 및 각각의 IPI 목적지에 대한 클리어 레지스터(clear register)를 포함하고, 여기서 레지스터들은 시스템 내의 프로세서들의 개수에 따라 확장된다. 이 확장가능 IPI 메커니즘은 애플리케이션 프로세서들, 실시간 프로세서들, 및 FPGA(field programmable gate array) 가속기들과 같은 다양한 프로세서들이 인터럽트들을 통해 서로 통신할 수 있게 한다. IPI 메커니즘은 또한, 논리 면적 및 프로그래밍가능 복잡도 둘 다의 면에서, 저비용이다.
일반 이기종 멀티프로세서 시스템에서의 예시적인 IPI 메커니즘
다수의 프로세서들을 갖는 시스템에서, 다양한 프로세서들이 서로를 인터럽트하는 것이 바람직할 수 있다. IPI 메커니즘은 전형적으로, 예를 들어, 캐시 일관성 동기점(cache coherency synchronization point), 통신 채널들, 또는 메일 박스들을 구현하는 데 사용된다. 그렇지만, 멀티프로세서 시스템은, 동기화를 위한 내장된 특징들을 갖지 않고 서로 직접 인터럽트할 수 없는, 상이한 특성들의 다양한 프로세서들을 포함할 수 있다. 본원에서 사용되는 바와 같이, 문구 "직접 인터럽트한다"는 일반적으로 하나의 프로세서가 중재자 없이(예컨대, 인터럽트 신호를 하나의 프로세서로부터 다른 프로세서로 송신하는 것에 의해) 다른 프로세서를 인터럽트할 수 있다는 것을 지칭한다.
도 1a는 본 개시내용의 일 예에 따른, 예시적인 이기종 멀티프로세서 시스템(100)을 나타내고 있다. 본원에서 사용되는 바와 같이, 이기종 멀티프로세서 시스템은 일반적으로 다수의 프로세서들을 갖는 처리 시스템을 지칭하고, 여기서 프로세서들 중 적어도 2개는 상이한 프로세서 유형들이다(즉, 상이한 종류이거나 상이한 특성을 갖는다). 특정의 경우들에서, 이기종 멀티프로세서 시스템은 또한 다수의 프로세서들을 갖는 처리 시스템을 지칭할 수 있고, 여기서 프로세서들 중 적어도 2개는 (동일한 프로세서 유형이든 상이한 프로세서 유형이든 관계없이) 상이한 프로세서 클러스터들에 있다. 일 예로서, 시스템(100)은 3개의 다양한 처리 유닛들(102, 104, 106) - 프로세서 유형 A인 처리 유닛 0, 프로세서 유형 B인 처리 유닛 1, 및 프로세서 유형 C인 처리 유닛 2 - 을 포함한다. 이 이기종 처리 유닛들이 서로를 인터럽트하기 위해, IPI 제어기(108)는, 예를 들어, 처리 유닛 0이 처리 유닛 1 또는 처리 유닛 2를 인터럽트할 수 있도록, 처리 유닛들(102, 104, 106) 각각과 연결된다. IPI 제어기(108)는 레지스터들(110) 및, 이하에 기술되는 바와 같이, 레지스터 내용을 처리하기 위한 논리(112)를 포함할 수 있다.
도 2 및 도 3은 IPI 제어기(108)의 예시적인 구현을 나타내고 있다. 본원에서 사용되는 IPI 용어들에서, 인터럽트하는 프로세서는 소스, 소스 프로세서, 또는 IPI 소스라고 지칭되고, 인터럽트되는 프로세서는 목적지, 목적지 프로세서, 또는 IPI 목적지라고 지칭된다. 처리 유닛들(102, 104, 106) 중 임의의 것이 소스 또는 목적지로서 기능할 수 있다. 본원에 기술되는 IPI 메커니즘은, 메커니즘이 장래에 쉽게 확장될 수 있게 하는, 모듈 방식으로 설계된다. 가장 작은 모듈 단위는 IPI 소스당(또는, 레지스터의 유형에 따라, IPI 목적지당) 하나의 레지스터를 포함하는 "세트"라고 불리운다. 도 1a의 예시적인 시스템(100)에 대해, 세트는 3개의 레지스터들을 포함한다.
도 2는 본 개시내용의 일 예에 따른, IPI 제어기(108) 내의 예시적인 레지스터들을 나타내고 있다. IPI 제어기(108)는 3개의 트리거 레지스터들(2020 내지 2022)(총칭하여 "레지스터들(202)" 또는 "트리거 레지스터들(202)"이라고 함)의 하나의 세트, 3개의 상태 레지스터들(2040 내지 2042)(총칭하여 "레지스터들(204)" 또는 "상태 레지스터들(204)"이라고 함)의 하나의 세트, 및 3개의 클리어 레지스터들(2060 내지 2062)(총칭하여 "레지스터들(206)" 또는 "클리어 레지스터들(206)"이라고 함)의 하나의 세트를 포함한다. 레지스터들(202, 204, 및 206)은 멀티프로세서 시스템(100)에서의 잠재적인 목적지들(또는 소스들)의 개수를 커버하기에 적어도 충분한 비트들을 가지며, 나머지 비트들(있는 경우)은 장래의 확장을 위해 예비되어 있을 수 있다. 예를 들어, 트리거 레지스터들(202), 상태 레지스터들(204), 및 클리어 레지스터들(206)은 8-비트 레지스터들일 수 있고, 여기서 5개의 최상위 비트(MSB)들은 예비되어 있고, 3개의 최하위 비트(LSB)들은 멀티프로세서 시스템(100) 내의 처리 유닛들과 연관되어 있다.
IPI 제어기(108)는 트리거 레지스터들(202) 중 특정의 트리거 레지스터와 연관되어 있는 소스만이 그 레지스터에 액세스할 수 있게 할 수 있다. 예를 들어, IPI 제어기(108)는 처리 유닛 1만이 트리거 레지스터(2021)에 액세스할 수 있게 할 수 있다. 임의의 다른 소스에 의한 액세스는 주소 디코드 오류(address decode error)를 발생시킬 수 있다. 이러한 방식으로, IPI 제어기(108)는 다양한 레지스터들에의 액세스를 제어하여, 보호 메커니즘을 제공한다. 세트 내의 3개의 트리거 레지스터들(202) 모두는 총 3개의 비트들(예컨대, 3개의 LSB들)에 대한 각각의 IPI 목적지에 대해 하나의 비트를 할당하는 동일한 포맷을 갖는다. 이 비트들 중 임의의 것에 논리 '1'을 기입하는 것에 의해, 트리거 레지스터들(202) 중 특정의 트리거 레지스터와 연관되어 있는 소스는 그 비트에 의해 표현되는 목적지에서 인터럽트를 발생시킬 수 있다. 예를 들어, 처리 유닛 1이 처리 유닛 2를 인터럽트하라고 요청하고 있는 것을 나타내기 위해, IPI 제어기(108)는 처리 유닛 1이 트리거 레지스터(2021)의 IPI 목적지 비트 2에 논리 '1'을 기입할 수 있게 한다. IPI 소스는 그의 트리거들의 상태를 획득하기 위해 그의 연관된 트리거 레지스터로부터 판독할 수 있다(예컨대, 처리 유닛 1은 그의 트리거들의 상태를 획득하기 위해 트리거 레지스터(2021)로부터 판독할 수 있다).
특정의 IPI 목적지에 대한 인터럽트를 발생시키기 위해, 세트의 모든 트리거 레지스터(202) 내의 특정 IPI 목적지 비트가 IPI 제어기(108)에서 논리적으로 결합될 수 있다(예컨대, 논리(112)의 OR 게이트(302)에 의해 OR되거나 배타적 OR됨). 도 3에 예시된 바와 같은 다른 예들에 대해, OR 게이트(302)(또는 다른 논리 게이트)는, (예컨대, 주어진 처리 유닛이 IPI 제어기(108)를 통해 그 자신을 인터럽트하지 않는 경우에) 인터럽트될 이 특정의 IPI 목적지와 동일한 처리 유닛인 IPI 소스와 연관된 특정의 트리거 레지스터를 제외한, 세트의 모든 트리거 레지스터(202) 내의 특정 IPI 목적지 비트를 논리적으로 OR(또는 다른 방식으로 결합)할 수 있다. 예를 들어, 처리 유닛 0과 연관된 트리거 레지스터(2020)의 비트 1이 논리 '1'인 경우 또는 처리 유닛 2와 연관된 트리거 레지스터(2022)의 비트 1이 논리 '1'인 경우, IPI 제어기(108)는 처리 유닛 1에 대한 인터럽트를 발생시킬 수 있다. IPI 제어기(108) 내의 논리(112)는, 예시적인 IPI 제어기(108) 내의 총 3개의 개별적인 인터럽트 발생 OR 게이트들에 대해, 각각의 잠재적인 IPI 목적지에 대한 유사하게 구성된 OR(또는 다른 논리) 게이트를 포함할 수 있다. IPI 제어기(108) 내의 논리(112)는 다른 처리 유닛들(예컨대, 처리 유닛 0 및 처리 유닛 2)에 대한 유사한 논리 구성들을 포함할 수 있다.
도 2로 돌아가서, 목적지 프로세서가 인터럽트될 때, 목적지 프로세서는 어느 IPI 소스가 그 인터럽트에 기여했는지를 결정하기 위해 그 목적지에 할당되어 있는 판독 전용 상태 레지스터들(204) 중 연관된 상태 레지스터로부터 판독할 수 있다. 예를 들어, 인터럽트된 후에, 처리 유닛 2는 처리 유닛 1이 이 인터럽트의 원인이었다고 결정하기 위해 상태 레지스터(2042)의 비트 1을 판독할 수 있다. 세트 내의 3개의 상태 레지스터들(204) 모두는 총 3개의 비트들(예컨대, 3개의 LSB들)에 대한 각각의 IPI 소스에 대해 하나의 비트를 할당하는 동일한 포맷을 갖는다. 기입 전용 클리어 레지스터들(206)의 유사한 클리어 레지스터가 상태 레지스터들(204)의 대응하는 상태 레지스터에서의 IPI 소스로부터의 요청을 클리어하는 데 사용된다. 논리 '1'이 주어진 클리어 레지스터(206) 내의 임의의 비트에 기입되면, 그 소스와 연관되어 있는 인터럽트에 대한 요청이 클리어된다. 이 경우에, 논리 '0'을 기입하는 것은 아무런 영향을 미치지 않는다. 세트 내의 각각의 IPI 목적지와 연관된 개별적인 상태 레지스터(204) 및 개별적인 클리어 레지스터(206)가 있다. 동일한 목적지와 연관된 상태 레지스터 및 클리어 레지스터는 동일한 주소에 매핑된다. 상태 레지스터 또는 클리어 레지스터와 연관되지 않은 임의의 IPI 목적지에 의한 액세스는 주소 디코드 오류를 가져올 수 있다.
일부 예들에 대해, 트리거 레지스터들(202)은 상태 레지스터들(204)에 직접 기입할 수 있다. 이 경우에, 실제 저장은, 도 2에 도시된 바와 같이, 트리거 레지스터들(202)에서가 아니라, 상태 레지스터들(204)에서 일어날 수 있다. 이 경우에, 인터럽트를 발생시키기 위해, 트리거 레지스터들(202)로부터의 비트들 대신에, 상태 레지스터들(204)의 대응하는 비트들이 IPI 제어기(108)에서 논리적으로 결합(예컨대, OR)될 수 있다.
도 1a가 이기종 멀티프로세서 시스템의 논리적 구현을 보여주는 것으로 의도되어 있지만, 일부 예들에 대해, 다양한 처리 유닛들(102, 104, 106)이 개별적인 전용 포트들을 통해 IPI 제어기(108)와 연결될 수 있다. 도 1b의 예시적인 이기종 멀티프로세서 시스템(150)에 도시된 바와 같은 다른 예들에 대해, 다양한 처리 유닛들(102, 104, 106)과 IPI 제어기(108) 사이의 액세스가, 개별적인 포트들을 통하는 것이 아니라, 상호연결부(152)를 통하는 것일 수 있다. 상호연결부(152)에서 비롯되는 공유 포트들을 사용하기 위해, IPI 제어기(108)는 소스 식별자(ID)들 또는 목적지 ID들을 검사하고 어느 IPI 소스 또는 목적지가 다양한 레지스터들(202, 204, 206)에 액세스하려고 시도하고 있는지를 결정할 수 있다. IPI 소스 또는 목적지 ID들을 검사하는 것에 의해, IPI 제어기(108)는 특정의 IPI 소스를 이 IPI 소스와 연관된 레지스터들에만 액세스하는 것으로 제한할 수 있고 IPI 소스가 다른 레지스터들에 액세스하는 것을 방지할 수 있다. 이 제한된 액세스는 앞서 기술된 보호 메커니즘을 제공한다.
하드-와이어드 프로세서들 및 소프트 프로세서들을 갖는 IC에서의 예시적인 IPI 메커니즘
2011년 2월 28일에 출원된, 발명의 명칭이 "Integrated Circuit with Programmable Circuitry and an Embedded Processor System"인 Allaire 등의 미국 특허 제8,667,192호에 기술된 바와 같이, 집적 회로(IC)는 임베디드 프로세서 시스템 및 프로그래밍가능 회로부를 포함할 수 있다. 프로그램 코드를 실행하도록 구성된, 프로세서 시스템은 하드-와이어드일 수 있고, 프로세서 하드웨어 자원을 포함할 수 있다. 프로그래밍가능 회로부는 상이한 물리적 회로들을 구현하도록 구성가능하고, 프로세서 시스템에 결합될 수 있다. 프로그래밍가능 회로부는 프로세서 시스템의 프로세서 하드웨어 자원의 사용을 공유하도록 구성가능할 수 있다. 프로세서 시스템은, 전원 켜기 및/또는 끄기는 물론, 프로그래밍가능 회로부를 그 안에 있는 하나 이상의 상이한 물리적 회로들을 구현하도록 구성하는 것과 같은, 프로그래밍가능 회로부의 측면들을 제어할 수 있다. 임베디드 프로세서 시스템 내의 하드-와이어드 프로세서들 및 프로그래밍가능 회로부 내의 소프트 프로세서들 둘 다에 의해, 이러한 IC는 이기종 멀티프로세서 시스템으로서의 자격이 있고, 본원에 기술되는 IPI 메커니즘을 구현할 수 있다.
도 4는 본 개시내용의 일 예에 따른, 하드-와이어드 처리 시스템(PS)(402) 및 상이한 물리적 회로들을 구현하도록 구성가능한 프로그래밍가능 논리(PL)(404)를 가지는 예시적인 IC(400)를 나타내고 있다. ASIC(application specific integrated circuit) 부분이라고도 지칭되는, PS(402)는 애플리케이션 및 처리 유닛(Application and Processing Unit)(APU) 서브시스템 내의 4개의 프로세서들(4060 내지 4063)(APU_0, APU_1, APU_2, 및 APU_3이라고 라벨링되어 있고 총칭하여 "APU 프로세서들(406)"이라고 함), 실시간 처리 유닛(Real-time Processing Unit)(RPU) 서브시스템 내의 2개의 프로세서들(4080 및 4081)(RPU_0 및 RPU_1이라고 라벨링되어 있고 총칭하여 "RPU 프로세서들(408)"이라고 함), 하나의 전력 관리 유닛(Power Management Unit)(PMU) 프로세서(410), 및 하나의 구성 및 보안 유닛(Configuration and Security Unit)(CSU) 프로세서(412)를 포함할 수 있다. FPGA 부분이라고도 알려져 있는, PL(404)은 4개의 소프트 프로세서들(4141 내지 4143)(PL_0, PL_1, PL_2, 및 PL_3이라고 라벨링되어 있고, 총칭하여 "소프트 프로세서들(414)"이라고 함)을 포함할 수 있다. APU 서브시스템 내의 APU 프로세서들(406), RPU 서브시스템 내의 RPU 프로세서들(408), PMU 프로세서(410), CSU 프로세서(412), 및 소프트 프로세서들(414)은 단언적으로 상이한 프로세서 유형들이다. 중재자 없이, 특정의 서브시스템 내의(또는 특정 프로세서 유형의) 프로세서는 상이한 서브시스템 내의(또는 상이한 프로세서 유형의) 프로세서를 인터럽트할 수 없을지도 모른다.
이러한 이기종 프로세서들이 서로를 인터럽트하기 위해, IPI 제어기(4160)는, 예를 들어, PL_2가 APU_3을 인터럽트할 수 있도록, 프로세서들(406, 408, 410, 412, 414) 각각과 연결된다. IPI 제어기(4160)는 도시된 바와 같이 PS(402)에 위치될 수 있다. 일부 예들에 대해, 다양한 처리 유닛들(406, 408, 410, 412, 414)과 IPI 제어기(4160) 사이의 액세스가, 개별적인 라인들을 통하는 것이 아니라, 버스를 통하는 것일 수 있다.
일부 예들에 대해, 상이한 인터럽트 유형들 또는 "클래스들"이 생성될 수 있고, 여기서 IC는 인터럽트 클래스당 하나의 IPI 제어기를 포함한다. 인터럽트 클래스들은, 예를 들어, 우선순위 또는 배타성(exclusivity)에 따라 구별될 수 있다. 이와 같이, 동일한 프로세서 그룹에 대해 하나 초과의 IPI 제어기가 인스턴스화될 수 있다. 예를 들어, 클래스들은 리눅스 기반 인터럽트 클래스 또는 전력 관련 인터럽트 클래스를 포함할 수 있다. 도 4의 예시적인 IC(400)에서, 4개의 상이한 인터럽트 클래스들이 있고, 따라서 IC는 4개의 상이한 IPI 제어기들(4160 내지 4163)(IPI_0, IPI_1, IPI_2, 및 IPI_3이라고 라벨링되어 있고 총칭하여 "IPI 제어기들(416)"이라고 함)을 포함한다. (도 5 및 도 6에 도시된 바와 같은) IPI 제어기(4160)의 예시적인 구현이 각각의 IPI 제어기에 복제될 수 있다.
도 5 및 도 6은 IPI 제어기(4160)의 예시적인 구현을 나타내고 있다. 앞서 기술된 바와 같이, 인터럽트하는 프로세서는 IPI 소스라고 지칭되고, 인터럽트되는 프로세서는 IPI 목적지라고 지칭된다. 프로세서들(406, 408, 410, 412, 414) 중 임의의 것이 소스 또는 목적지로서 기능할 수 있다. 본원에 기술되는 IPI 메커니즘은, 메커니즘이 IC(400)의 장래의 세대들에서 쉽게 확장될 수 있게 하고 현재 IC 세대와 코드 호환가능한 채로 있을 수 있게 하는, 모듈 방식으로 설계된다. 가장 작은 모듈 단위는 IPI 소스당(또는 IPI 목적지당) 하나의 레지스터를 포함하는 "세트"라고 불리운다. 도 4의 예시적인 IC(400)에 대해, 세트는 12개의 레지스터들을 포함한다.
도 5는 본 개시내용의 일 예에 따른, IPI 제어기(4160) 내의 예시적인 레지스터들을 나타내고 있다. IPI 제어기(4160)는 12개의 트리거 레지스터들(502)의 하나의 세트, 12개의 상태 레지스터들(504)의 하나의 세트, 및 12개의 클리어 레지스터들(506)의 하나의 세트를 포함한다. 레지스터들(502, 504, 및 506)은 IC(400)에서의 잠재적인 목적지들(또는 소스들)의 개수를 커버하기에 적어도 충분한 비트들을 가지며, 나머지 비트들(있는 경우)은 장래의 확장을 위해 예비되어 있을 수 있다. 예를 들어, 트리거 레지스터들(502), 상태 레지스터들(504), 및 클리어 레지스터들(506)은 32-비트 레지스터들일 수 있고, 여기서 20개의 최상위 비트(MSB)들(12 내지 31)이 예비되어 있다.
IPI 제어기(4160)는 트리거 레지스터들(502) 중 특정의 트리거 레지스터와 연관되어 있는 IPI 소스만이 그 레지스터에 액세스할 수 있게 할 수 있다. 예를 들어, IPI 제어기(4160)는 PL_3만이 트리거 레지스터(50211)에 액세스하도록 허용할 수 있다. 임의의 다른 소스에 의한 액세스는 주소 디코드 오류를 발생시킬 수 있다. 세트 내의 12개의 트리거 레지스터들(502) 모두는 총 12개의 비트들(예컨대, LSB 0 내지 LSB 11)에 대한 각각의 IPI 목적지에 대해 하나의 비트를 할당하는 동일한 포맷을 갖는다. 트리거 레지스터들(502) 중 특정의 트리거 레지스터 내의 이 비트들 중 임의의 것에 논리 '1'을 기입하는 것에 의해, 연관된 소스는 그 비트에 의해 표현되는 목적지에서 인터럽트를 발생시킬 수 있다. 예를 들어, PL_1이 APU_3을 인터럽트할 수 있게 하기 위해, IPI 제어기(4160)는 PL_1이 트리거 레지스터(5029)의 IPI 목적지 비트 5에 논리 '1'을 기입할 수 있게 할 수 있다. 트리거 레지스터(502)가 그 레지스터와 연관되어 있는 IPI 소스에 의해 판독되면, 이 소스는 그의 트리거들의 상태를 다시 판독할 수 있다.
특정의 IPI 목적지에 대한 인터럽트를 발생시키기 위해, 도 6에 예시된 바와 같이, 세트의 모든 트리거 레지스터(502) 내의 특정 IPI 목적지 비트가 IPI 제어기(4160)의 OR 게이트(602)에 의해 논리적으로 OR될 수 있다. 예를 들어, PL_1과 연관된 트리거 레지스터(5029)의 비트 5가 논리 '1'인 경우 또는 RPU_0과 연관된 트리거 레지스터(5020)의 비트 5가 논리 '1'인 경우, APU_3에 대해 인터럽트가 발생될 수 있다. IPI 제어기(4160)는, 예시적인 IPI 제어기(4160) 내의 총 12개의 개별적인 인터럽트 발생 OR 게이트들에 대해, 각각의 잠재적인 IPI 목적지에 대한 유사하게 구성된 OR 게이트를 포함할 수 있다. IPI 제어기(4160)는 다른 처리 유닛들에 대한 유사한 논리 구성들을 포함할 수 있다.
도 5로 돌아가서, 목적지 프로세서가 인터럽트될 때, 목적지 프로세서는 어느 IPI 소스가 그 인터럽트에 기여했는지를 결정하기 위해 그 목적지에 할당되어 있는 판독 전용 상태 레지스터(504)로부터 판독할 수 있다. 예를 들어, 인터럽트된 후에, APU_3은 PL_1이 이 인터럽트의 원인이었다고 결정하기 위해 그의 연관된 상태 레지스터(5045)의 비트 9를 판독할 수 있다. 세트 내의 12개의 상태 레지스터들(504) 모두는 총 12개의 비트들(예컨대, 12개의 LSB들)에 대한 각각의 IPI 소스에 대해 하나의 비트를 할당하는 동일한 포맷을 갖는다. 유사한 기입 전용 클리어 레지스터(506)(예컨대, APU_3에 대한 5065)는 대응하는 상태 레지스터(504)(APU_3에 대한 5045) 내의 IPI 소스로부터의 요청을 클리어하는 데 사용된다. 논리 '1'이 클리어 레지스터들(506) 중 특정의 클리어 레지스터 내의 임의의 비트에 기입되면, 그 소스와 연관되어 있는 인터럽트에 대한 요청이 클리어된다. 이 경우에, 논리 '0'을 기입하는 것은 아무런 영향을 미치지 않는다. 세트 내의 각각의 IPI 목적지와 연관된 개별적인 상태 레지스터(504) 및 개별적인 클리어 레지스터(506)가 있다. 동일한 목적지와 연관된 상태 레지스터 및 클리어 레지스터는 동일한 주소에 매핑된다. 상태 레지스터 또는 클리어 레지스터와 연관되지 않은 임의의 IPI 목적지에 의한 액세스는 주소 디코드 오류를 가져올 수 있다.
일부 예들에 따르면, IC(400)는 또한 페이로드 레지스터를 포함할 수 있다. 페이로드 레지스터는 IC(400)의 메모리에 유지되거나 IPI 제어기에 위치될 수 있다. 메모리에 저장되면, 페이로드 레지스터는 메모리 맵에서의 고정된 주소를 가질 수 있다. 페이로드 레지스터는 범용 레지스터들의 세트일 수 있다. 일부 예들에 대해, IPI 제어기들(416) 각각은 그와 연관된 페이로드 레지스터를 가질 수 있다. 페이로드 레지스터는 하나의 프로세서가 (예컨대, IPI 제어기를 통해) 다른 프로세서를 인터럽트하는 경우 판독되는 데이터를 저장할 수 있다. 일부 예들에 대해, 이 데이터는 IPI 제어기로부터 인터럽트 신호를 수신할 때 특정의 프로세서에 무엇을 해야 하는지를 지시할 수 있다.
트리거, 상태, 및 클리어 레지스터들에 대한 보호 메커니즘과 유사하게, 페이로드 레지스터에의 액세스도, 소스(또는 목적지) ID들의 사용을 통해, 제한될 수 있다. 이 메커니즘은 특정 IPI 소스만이 특정 페이로드 레지스터에 기입할 수 있게 하고 특정 IPI 목적지만이 특정의 페이로드 레지스터를 판독할 수 있게 할 수 있다.
예시적인 IPI 동작들
도 7은 이기종 멀티프로세서 시스템에서 인터럽트들을 핸들링하기 위한 예시적인 동작들(700)의 흐름도이다. 동작들(700)은, IPI 제어기(108) 또는 IPI 제어기들(416) 중 하나와 같은, IPI 회로에 의해 수행될 수 있다.
동작들(700)은, 702에서, IPI 회로가 제2 프로세서를 인터럽트하라는 제1 프로세서로부터의 요청을 수신하는 것으로 시작될 수 있다. 제2 프로세서는 제1 프로세서와 상이한 프로세서 유형이다.
704에서, IPI 회로는, 702에서 수신된 요청에 기초하여, 제1 프로세서와 연관된 제1 레지스터 내의 제1 비트를 갱신할 수 있다. 제1 비트는 제1 프로세서가 제2 프로세서를 인터럽트하라고 요청하고 있다는 것을 나타낸다. 제1 레지스터는 IPI 회로에 위치될 수 있고, 예를 들어, 트리거 레지스터일 수 있다. 제1 비트를 갱신하는 것은 논리 '1'을 제1 비트에 기입하는 것을 포함할 수 있다.
706에서, IPI 회로는, 704에서 갱신한 것에 기초하여, 인터럽트 신호를 제2 프로세서로 송신할 수 있다.
일부 예들에 따르면, IPI 회로는 제1 프로세서의 식별자를 검사할 수 있고, 제1 프로세서의 식별자가 올바른 경우에만 제1 비트를 갱신할 수 있다.
일부 예들에 따르면, 동작들(700)은 IPI 회로가, 어느 프로세서가 제2 프로세서를 인터럽트하라고 요청했는지를 결정하기 위해, 제2 프로세서로부터의 요청을 수신하는 것을 추가로 포함할 수 있다. 이 경우에, IPI 회로는 제2 프로세서와 연관된 제2 레지스터 내의 제2 비트를 판독할 수 있다. 제2 비트는 제2 프로세서가 제1 프로세서에 의해 인터럽트되었다는 것을 나타낸다. 제2 레지스터는 IPI 회로에 위치될 수 있고, 예를 들어, 상태 레지스터일 수 있다. 제2 프로세서로부터의 요청을 수신한 후에, IPI 회로는 제2 비트에 기초한 표시를 제2 프로세서로 송신할 수 있다. 일부 예들에 대해, IPI 회로는 제2 프로세서의 식별자를 검사하고, 제2 프로세서의 식별자가 올바른 경우에만 제2 비트에 기초한 표시를 송신할 수 있다.
이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트들을 위한 메커니즘들이 기술되었다. 일 예에서, 본 시스템은 일반적으로 제1 프로세서, 제1 프로세서와 상이한 프로세서 유형인 제2 프로세서, 및 제1 프로세서 및 제2 프로세서에 결합된 프로세서간 인터럽트(inter-processor interrupt)(IPI) 회로를 포함한다. IPI 회로는 전형적으로 제1 프로세서와 연관된 제1 레지스터 - 제1 레지스터 내의 제1 비트는 제1 프로세서가 제2 프로세서를 인터럽트하라고 요청하고 있는지를 나타냄 -; 및 제2 프로세서와 연관된 제2 레지스터 - 제2 레지스터 내의 제2 비트는 제2 프로세서가 제1 프로세서를 인터럽트하라고 요청하고 있는지를 나타냄 - 를 포함한다.
일부 예들에 따르면, IPI 회로는 제1 프로세서와 연관된 제3 레지스터 - 제3 레지스터 내의 제1 비트는 제1 프로세서가 제2 프로세서에 의해 인터럽트되었는지를 나타냄 -; 및 제2 프로세서와 연관된 제4 레지스터 - 제4 레지스터 내의 제4 비트는 제2 프로세서가 제1 프로세서에 의해 인터럽트되었는지를 나타냄 - 를 추가로 포함한다. 일부 예들에 대해, IPI 회로는 제1 프로세서와 연관된 제5 레지스터 - 제5 레지스터 내의 제5 비트는 제3 레지스터 내의 제3 비트가 클리어되어야 하는지를 나타냄 -; 및 제2 프로세서와 연관된 제6 레지스터 - 제6 레지스터 내의 제6 비트는 제4 레지스터 내의 제4 비트가 클리어되어야 하는지를 나타냄 - 를 추가로 포함한다.
일부 예들에 따르면, 본 시스템은 IPI 회로에 결합된 제3 프로세서 - 제1 레지스터 내의 제3 비트는 제1 프로세서가 제3 프로세서를 인터럽트하라고 요청하고 있는지를 나타내고, 제2 레지스터 내의 제4 비트는 제2 프로세서가 제3 프로세서를 인터럽트하라고 요청하고 있는지를 나타냄 - 를 추가로 포함한다. 제3 프로세서는 제1 프로세서와 동일한 프로세서 유형일 수 있다. 일부 예들에 대해, IPI 회로는 제3 프로세서에 대한 인터럽트 신호를 발생시키기 위해 제1 레지스터 내의 제3 비트와 제2 레지스터 내의 제4 비트 간에 논리 OR 연산을 적용하는 논리 게이트를 포함한다.
일부 예들에 따르면, 본 시스템은 하나 이상의 부가 프로세서들 - 제1 레지스터는 제1 프로세서가 하나 이상의 부가 프로세서들을 인터럽트하기 위한 대응하는 인터럽트 신호들을 발생시키라고 요청하고 있는지를 나타내기 위한 하나 이상의 부가 비트들을 포함함 - 을 추가로 포함한다. 이 경우에, 제2 레지스터는 제2 프로세서가 하나 이상의 부가 프로세서들을 인터럽트하기 위한 대응하는 인터럽트 신호들을 발생시키라고 요청하고 있는지를 나타내기 위한 하나 이상의 부가 비트들을 포함할 수 있다. 일부 예들에 대해, 제1 레지스터 내의 하나 이상의 부가 비트들의 적어도 일부분 및 제2 레지스터 내의 하나 이상의 부가 비트들의 적어도 일부분은 (예컨대, 시스템에 현재 있지 않은 하나 이상의 프로세서들을 인터럽트하기 위해) 예비되어 있다.
일부 예들에 따르면, 본 시스템은 제1 프로세서, 제2 프로세서, 및 IPI 회로를 갖는 집적 회로(IC)를 추가로 포함한다. 일부 예들에 대해, IC는 처리 시스템(PS) 부분 및 프로그래밍가능 논리(PL) 부분을 포함한다. 이 경우에, 제1 프로세서는 PS 부분에 위치될 수 있고, 제2 프로세서는 PL 부분에 배치될 수 있다.
일부 예들에 따르면, 제1 프로세서는 하드-와이어드 프로세서이고, 제2 프로세서는 상이한 물리적 회로들을 구현하도록 구성가능한 프로그래밍가능 회로부(예컨대, 소프트 프로세서)를 포함한다.
일부 예들에 따르면, 제2 프로세서는 제1 프로세서를 직접 인터럽트할 수 없고, 제1 프로세서는 제2 프로세서를 직접 인터럽트할 수 없다.
일부 예들에 따르면, IPI 회로는 제1 레지스터에 대한 갱신을 허용하기 전에 제1 프로세서의 식별자를 검사하고, 제2 레지스터에 대한 갱신을 허용하기 전에 제2 프로세서의 식별자를 검사하도록 구성되어 있다.
일부 예들에 따르면, IPI 회로는 상호연결부를 통해 제1 프로세서 및 제2 프로세서에 결합된다.
본 발명의 다른 예는 집적 회로(IC)이다. IC는 일반적으로 하나 이상의 하드와이어드 프로세서들을 가지는 처리 시스템(PS) 부분, 물리적으로 구성가능한 회로부를 갖는 하나 이상의 소프트 프로세서들을 가지는 프로그래밍가능 논리(PL) 부분, 및 하나 이상의 프로세서간 인터럽트(IPI) 회로들을 포함한다. 각각의 IPI 회로는 전형적으로 상이한 프로세서들 사이에서 하나 이상의 인터럽트 신호들을 발생시키도록 구성되어 있고, 여기서 인터럽트 신호들 중 적어도 하나는 PS 부분 내의 하드-와이어드 프로세서들 중 하나와 PL 부분 내의 소프트 프로세서들 중 하나 사이의 것이다.
일부 예들에 따르면, 각각의 IPI 회로는 제1 레지스터 세트를 포함하고; 제1 세트 내의 각각의 레지스터는 하드-와이어드 프로세서들 및 소프트 프로세서들에서의 각각의 프로세서와 연관되어 있으며; 제1 세트 내의 각각의 레지스터는 집적 회로에 있는 하드-와이어드 프로세서들과 소프트 프로세서들의 개수 이상인 개수의 비트들을 포함하고; 하드-와이어드 프로세서들 및 소프트 프로세서들에서의 특정의 프로세서와 연관된 제1 세트 내의 특정의 레지스터에서, 각각의 비트는 특정의 프로세서가 하드-와이어드 프로세서들 및 소프트 프로세서들 중의 상이한 프로세서를 인터럽트하라고 요청하고 있는지를 나타낸다.
일부 예들에 대해, 각각의 IPI 회로는 제2 레지스터 세트를 포함하고; 제2 세트 내의 각각의 레지스터는 하드-와이어드 프로세서들 및 소프트 프로세서들에서의 각각의 프로세서와 연관되어 있으며; 제2 세트 내의 각각의 레지스터는 집적 회로에 있는 하드-와이어드 프로세서들과 소프트 프로세서들의 개수 이상인 개수의 비트들을 포함하고; 하드-와이어드 프로세서들 및 소프트 프로세서들에서의 특정의 프로세서와 연관된 제2 세트 내의 특정의 레지스터에서, 각각의 비트는 특정의 프로세서가 하드-와이어드 프로세서들 및 소프트 프로세서들 중의 상이한 프로세서에 의해 인터럽트되었는지를 나타낸다.
일부 예들에 따르면, 각각의 IPI 회로는 제3 레지스터 세트를 포함하고; 제3 세트 내의 각각의 레지스터는 하드-와이어드 프로세서들 및 소프트 프로세서들에서의 각각의 프로세서와 연관되어 있으며; 제3 세트 내의 각각의 레지스터는 집적 회로에 있는 하드-와이어드 프로세서들과 소프트 프로세서들의 개수 이상인 개수의 비트들을 포함하고; 하드-와이어드 프로세서들 및 소프트 프로세서들에서의 특정의 프로세서와 연관된 제3 세트 내의 특정의 레지스터에서, 각각의 비트는 제2 레지스터 세트 내의 대응하는 비트가 클리어되어야 하는지를 나타낸다. 제1 레지스터 세트는 판독/기입 레지스터들일 수 있고, 제2 레지스터 세트는 판독 전용 레지스터들일 수 있으며, 제3 레지스터 세트는 기입 전용 레지스터들일 수 있다. 일부 예들에 대해, 하드-와이어드 프로세서들은 4개의 애플리케이션 프로세서 유닛(APU)들, 2개의 실시간 처리 유닛(RPU)들, 구성 및 보안 유닛(CSU), 그리고 전력 관리 유닛(PMU)을 포함하고; PL 부분은 총 12개의 프로세서들에 대한 4개의 소프트 프로세서들을 포함하며; 제1, 제2, 제3 레지스터 세트들에서의 각각의 레지스터는 총 12개의 프로세서들에 대해 12 비트만을 사용하는 32-비트 레지스터이다.
일부 예들에 따르면, IPI 회로들 각각은 상이한 인터럽트 클래스(interrupt class)와 연관되어 있다.
일부 예들에 따르면, IPI 회로들은 PS 부분에 배치된다.
일부 예들에 따르면, 집적 회로는 IPI 회로들 중 하나가 상이한 프로세서들 사이의 인터럽트 신호들 중 하나를 발생시키는 경우 판독되는 데이터를 저장하도록 구성된 페이로드 레지스터를 추가로 포함한다.
본 발명의 또 다른 예는 IPI들을 핸들링하는 방법이다. 본 방법은 일반적으로, IPI 회로에서, 제2 프로세서를 인터럽트하라는 제1 프로세서로부터의 요청을 수신하는 단계 - 제2 프로세서는 제1 프로세서와 상이한 프로세서 유형임 -; 수신된 요청에 기초하여, 제1 프로세서와 연관된 제1 레지스터 내의 제1 비트를 갱신하는 단계 - 제1 비트는 제1 프로세서가 제2 프로세서를 인터럽트하라고 요청하고 있다는 것을 나타냄 -; 및 갱신한 것에 기초하여 IPI 회로로부터 제2 프로세서로 인터럽트 신호를 송신하는 단계를 포함한다.
이상의 설명이 본 개시내용의 예들에 관한 것이지만, 본 개시내용의 기본 범주를 벗어남이 없이 본 개시내용의 다른 및 추가의 예들이 고안될 수 있고, 본 발명의 범주는 이하의 청구항에 의해 결정된다.

Claims (15)

  1. 시스템으로서,
    제1 프로세서;
    상기 제1 프로세서와 상이한 프로세서 유형인 제2 프로세서; 및
    상기 제1 프로세서 및 상기 제2 프로세서에 결합된 프로세서간 인터럽트(IPI: inter-processor interrupt) 회로
    를 포함하고,
    상기 IPI 회로는,
    상기 제1 프로세서와 연관된 제1 레지스터; 및
    상기 제2 프로세서와 연관된 제2 레지스터
    를 포함하고,
    상기 제1 레지스터 및 상기 제2 레지스터 각각은,
    제1 비트 위치; 및
    제2 비트 위치
    를 포함하고,
    상기 제1 비트 위치 - 상기 제1 비트 위치는 상기 제1 레지스터 및 상기 제2 레지스터 내에서 동일한 비트 위치임 - 는 각각의 레지스터와 연관된 상기 제1 프로세서 및 상기 제2 프로세서 중 각각의 프로세서가 상기 제1 프로세서를 인터럽트하라고 요청하고 있는지를 나타내는 비트를 저장하도록 구성되고,
    상기 제2 비트 위치 - 상기 제2 비트 위치는 상기 제1 레지스터 및 상기 제2 레지스터 내에서 동일한 비트 위치임 - 는 각각의 레지스터와 연관된 상기 제1 프로세서 및 상기 제2 프로세서 중 각각의 프로세서가 상기 제2 프로세서를 인터럽트하라고 요청하고 있는지를 나타내는 비트를 저장하도록 구성되는 것인, 시스템.
  2. 제1항에 있어서,
    상기 IPI 회로는,
    상기 제1 프로세서와 연관된 제3 레지스터; 및
    상기 제2 프로세서와 연관된 제4 레지스터
    를 더 포함하고,
    상기 제3 레지스터 및 상기 제4 레지스터 각각은,
    제3 비트 위치; 및
    제4 비트 위치
    를 포함하고,
    상기 제3 비트 위치는 각각의 레지스터와 연관된 상기 제1 프로세서 및 상기 제2 프로세서 중 각각의 프로세서가 상기 제1 프로세서에 의해 인터럽트되었는지를 나타내는 비트를 저장하도록 구성되고,
    상기 제4 비트 위치는 각각의 레지스터와 연관된 상기 제1 프로세서 및 상기 제2 프로세서 중 각각의 프로세서가 상기 제2 프로세서에 의해 인터럽트되었는지를 나타내는 비트를 저장하도록 구성되는 것인, 시스템.
  3. 제2항에 있어서,
    상기 IPI 회로는,
    상기 제1 프로세서와 연관된 제5 레지스터; 및
    상기 제2 프로세서와 연관된 제6 레지스터
    를 더 포함하고,
    상기 제5 레지스터 및 상기 제6 레지스터 각각은,
    제5 비트 위치; 및
    제6 비트 위치
    를 포함하고,
    상기 제5 비트 위치는 각각의 제5 레지스터 또는 제6 레지스터와 연관된 상기 제1 프로세서 및 상기 제2 프로세서 중 각각의 프로세서와 연관된 상기 제3 레지스터 및 상기 제4 레지스터 중 각각의 레지스터의 상기 제3 비트 위치 내에 저장된 상기 비트가 클리어(clear)되어야 하는지를 나타내는 비트를 저장하도록 구성되고,
    상기 제6 비트 위치는 각각의 제5 레지스터 또는 제6 레지스터와 연관된 상기 제1 프로세서 및 상기 제2 프로세서 중 각각의 프로세서와 연관된 상기 제3 레지스터 및 상기 제4 레지스터 중 각각의 레지스터의 상기 제4 비트 위치 내에 저장된 상기 비트가 클리어되어야 하는지를 나타내는 비트를 저장하도록 구성되는 것인, 시스템.
  4. 제1항에 있어서,
    상기 IPI 회로에 결합된 제3 프로세서를 더 포함하고,
    상기 제1 레지스터 및 상기 제2 레지스터 각각은 제3 비트 위치를 포함하고,
    상기 제3 비트 위치는 각각의 레지스터와 연관된 상기 제1 프로세서 및 상기 제2 프로세서 중 각각의 프로세서가 상기 제3 프로세서를 인터럽트하라고 요청하고 있는지를 나타내는 비트를 저장하도록 구성되는 것인, 시스템.
  5. 제4항에 있어서,
    상기 IPI 회로는, 상기 제3 프로세서에 대한 인터럽트 신호를 발생시키기 위해 상기 제1 레지스터 및 상기 제2 레지스터 내의 각각의 제3 비트 위치들에 저장된 각각의 비트들 간에 논리 OR 연산을 적용하는 논리 게이트를 포함하는 것인, 시스템.
  6. 제1항에 있어서,
    하나 이상의 부가 프로세서를 더 포함하고,
    상기 제1 레지스터는, 상기 제1 프로세서가 상기 하나 이상의 부가 프로세서를 인터럽트하기 위한 대응하는 인터럽트 신호들을 발생시키라고 요청하고 있는지를 나타내기 위한 하나 이상의 부가 비트를 포함하고,
    상기 제2 레지스터는, 상기 제2 프로세서가 상기 하나 이상의 부가 프로세서를 인터럽트하기 위한 대응하는 인터럽트 신호들을 발생시키라고 요청하고 있는지를 나타내기 위한 하나 이상의 부가 비트를 포함하는 것인, 시스템.
  7. 제6항에 있어서,
    상기 제1 레지스터 내의 상기 하나 이상의 부가 비트의 적어도 일부분 및 상기 제2 레지스터 내의 상기 하나 이상의 부가 비트의 적어도 일부분은 예비되어 있는 것인, 시스템.
  8. 제1항에 있어서,
    상기 제1 프로세서는 하드-와이어드(hard-wired) 프로세서를 포함하고, 상기 제2 프로세서는 상이한 물리적 회로들을 구현하도록 구성가능한 프로그래밍가능 회로부를 포함하는 것인, 시스템.
  9. 제1항에 있어서,
    상기 제2 프로세서는 상기 제1 프로세서를 직접 인터럽트할 수 없고, 상기 제1 프로세서는 상기 제2 프로세서를 직접 인터럽트할 수 없는 것인, 시스템.
  10. 제1항에 있어서,
    상기 IPI 회로는,
    상기 제1 레지스터에 대한 갱신을 허용하기 전에 상기 제1 프로세서의 식별자를 검사하고;
    상기 제2 레지스터에 대한 갱신을 허용하기 전에 상기 제2 프로세서의 식별자를 검사하도록
    구성되는 것인, 시스템.
  11. 제1항에 있어서,
    상기 IPI 회로는 상호연결부를 통해 상기 제1 프로세서 및 상기 제2 프로세서에 결합되는 것인, 시스템.
  12. 방법으로서,
    프로세서간 인터럽트(IPI: inter-processor interrupt) 회로에서, 제2 프로세서를 인터럽트하라는 제1 프로세서로부터의 요청을 수신하는 단계 - 상기 제2 프로세서는 상기 제1 프로세서와 상이한 프로세서 유형이고, 상기 IPI 회로는 상기 제1 프로세서와 연관된 제1 레지스터 및 상기 제2 프로세서와 연관된 제2 레지스터를 포함하고, 상기 제1 레지스터 및 상기 제2 레지스터 각각은 제1 비트 위치 및 제2 비트 위치를 포함하고, 상기 제1 비트 위치 - 상기 제1 비트 위치는 상기 제1 레지스터 및 상기 제2 레지스터 내에서 동일한 비트 위치임 - 는 각각의 레지스터와 연관된 상기 제1 프로세서 및 상기 제2 프로세서 중 각각의 프로세서가 상기 제1 프로세서를 인터럽트하라고 요청하고 있는지를 나타내는 비트를 저장하도록 구성되고, 상기 제2 비트 위치 - 상기 제2 비트 위치는 상기 제1 레지스터 및 상기 제2 레지스터 내에서 동일한 비트 위치임 - 는 각각의 레지스터와 연관된 상기 제1 프로세서 및 상기 제2 프로세서 중 각각의 프로세서가 상기 제2 프로세서를 인터럽트하라고 요청하고 있는지를 나타내는 비트를 저장하도록 구성됨 - ;
    상기 수신된 요청에 기초하여, 상기 제1 레지스터의 상기 제2 비트 위치 내의 비트를 갱신하는 단계; 및
    상기 갱신에 기초하여 상기 IPI 회로로부터 상기 제2 프로세서로 인터럽트 신호를 송신하는 단계
    를 포함하는, 방법.
  13. 제12항에 있어서,
    상기 IPI 회로에 의해, 상기 제1 프로세서의 식별자를 검사하고, 상기 제1 프로세서의 상기 식별자가 올바른 경우에만 상기 제1 레지스터의 상기 제2 비트 위치 내의 상기 비트를 갱신하는 단계를 더 포함하는, 방법.
  14. 제12항에 있어서,
    프로세서간 인터럽트(IPI) 회로에서, 상기 제2 프로세서로부터 어느 프로세서가 상기 제2 프로세서를 인터럽트하라고 요청했는지를 식별하기 위한 요청을 수신하는 단계; 및
    상기 IPI 회로에 의해, 제3 레지스터의 제3 비트 위치 내의 비트를 판독하는 단계 - 상기 제3 레지스터는 상기 제2 프로세서와 연관되고, 상기 제3 레지스터의 상기 제3 비트 위치 내의 상기 비트는 상기 제2 프로세서가 상기 제1 프로세서에 의해 인터럽트되었다는 것을 나타냄 -
    를 더 포함하는, 방법.
  15. 제14항에 있어서,
    상기 IPI 회로에 의해, 상기 제3 레지스터의 상기 제3 비트 위치 내의 상기 비트에 기초한 표시를 상기 제2 프로세서로 송신하는 단계; 및
    상기 IPI 회로에 의해, 상기 제2 프로세서의 식별자를 검사하고, 상기 제2 프로세서의 상기 식별자가 올바른 경우에만 상기 제3 레지스터의 상기 제3 비트 위치 내의 상기 비트에 기초한 상기 표시를 송신하는 단계
    를 더 포함하는, 방법.
KR1020227041255A 2014-08-20 2015-08-17 이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트를 위한 메커니즘 KR102544392B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/464,654 2014-08-20
US14/464,654 US9665509B2 (en) 2014-08-20 2014-08-20 Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system
PCT/US2015/045575 WO2016028715A1 (en) 2014-08-20 2015-08-17 Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system
KR1020177007397A KR102536596B1 (ko) 2014-08-20 2015-08-17 이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트를 위한 메커니즘

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020177007397A Division KR102536596B1 (ko) 2014-08-20 2015-08-17 이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트를 위한 메커니즘

Publications (2)

Publication Number Publication Date
KR20220160709A true KR20220160709A (ko) 2022-12-06
KR102544392B1 KR102544392B1 (ko) 2023-06-15

Family

ID=54066186

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227041255A KR102544392B1 (ko) 2014-08-20 2015-08-17 이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트를 위한 메커니즘
KR1020177007397A KR102536596B1 (ko) 2014-08-20 2015-08-17 이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트를 위한 메커니즘

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020177007397A KR102536596B1 (ko) 2014-08-20 2015-08-17 이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트를 위한 메커니즘

Country Status (6)

Country Link
US (1) US9665509B2 (ko)
EP (1) EP3183652B1 (ko)
JP (1) JP6785222B2 (ko)
KR (2) KR102544392B1 (ko)
CN (1) CN106575275B (ko)
WO (1) WO2016028715A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10585826B2 (en) * 2016-01-25 2020-03-10 Advanced Micro Devices, Inc. Using processor types for processing interrupts in a computing device
KR101936942B1 (ko) * 2017-08-28 2019-04-09 에스케이텔레콤 주식회사 분산형 컴퓨팅 가속화 플랫폼 장치 및 분산형 컴퓨팅 가속화 플랫폼 운영 방법
US10528513B1 (en) 2018-04-30 2020-01-07 Xilinx, Inc. Circuit for and method of providing a programmable connector of an integrated circuit device
US10877766B2 (en) * 2018-05-24 2020-12-29 Xilinx, Inc. Embedded scheduling of hardware resources for hardware acceleration
US10705993B2 (en) 2018-11-19 2020-07-07 Xilinx, Inc. Programming and controlling compute units in an integrated circuit
KR101973946B1 (ko) * 2019-01-02 2019-04-30 에스케이텔레콤 주식회사 분산형 컴퓨팅 가속화 플랫폼 장치
US11487594B1 (en) 2019-09-24 2022-11-01 Meta Platforms Technologies, Llc Artificial reality system with inter-processor communication (IPC)
US11474970B2 (en) * 2019-09-24 2022-10-18 Meta Platforms Technologies, Llc Artificial reality system with inter-processor communication (IPC)
US11520707B2 (en) 2019-11-15 2022-12-06 Meta Platforms Technologies, Llc System on a chip (SoC) communications to prevent direct memory access (DMA) attacks
US11190892B2 (en) 2019-11-20 2021-11-30 Facebook Technologies, Llc Audio sample phase alignment in an artificial reality system
CN111522773A (zh) * 2020-04-13 2020-08-11 Tcl华星光电技术有限公司 异构计算系统及采用该系统的异构计算方法
CN112363972B (zh) * 2020-10-20 2022-09-23 青岛信芯微电子科技股份有限公司 支持多cpu间通信的电子设备及方法
US11386034B2 (en) 2020-10-30 2022-07-12 Xilinx, Inc. High throughput circuit architecture for hardware acceleration
WO2024065829A1 (en) * 2022-09-30 2024-04-04 Intel Corporation User interrupt moderation for user inter-processor-interrupts

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010074544A (ko) * 2000-01-24 2001-08-04 비센트 비.인그라시아, 알크 엠 아헨 인터럽트 강제 레지스터를 포함하는 유연 인터럽트 제어기
US20100191887A1 (en) * 2009-01-26 2010-07-29 Serebrin Benjamin C Monitoring Interrupt Acceptances in Guests
KR20120131175A (ko) * 2010-02-05 2012-12-04 어드밴스드 마이크로 디바이시즈, 인코포레이티드 게스트 로컬 인터럽트 컨트롤러를 가상화하도록 구성된 프로세서
KR20130024860A (ko) * 2011-08-30 2013-03-08 애플 인크. 주변장치 컴포넌트를 위한 높은 우선순위 커맨드 큐

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215399A (en) * 1978-08-24 1980-07-29 Texas Instruments Incorporated Special function control system for a dual microprocessor programmable process control system
US5210828A (en) * 1988-12-29 1993-05-11 International Business Machines Corporation Multiprocessing system with interprocessor communications facility
US5136714A (en) * 1989-12-04 1992-08-04 International Business Machines Corporation Method and apparatus for implementing inter-processor interrupts using shared memory storage in a multi-processor computer system
US5202998A (en) * 1990-08-31 1993-04-13 International Business Machines Corporation Fast, simultaneous multi-processor system status communication interface
AU2270892A (en) * 1991-06-26 1993-01-25 Ast Research, Inc. Automatic distribution of interrupts controller for a multiple processor computer system
DE69223303T2 (de) * 1991-09-27 1998-06-18 Sun Microsystems Inc Verfahren und Gerät für die dynamische Zuweisung von unadressierten Unterbrechungen
US5319753A (en) * 1992-09-29 1994-06-07 Zilog, Inc. Queued interrupt mechanism with supplementary command/status/message information
US5513346A (en) 1993-10-21 1996-04-30 Intel Corporation Error condition detector for handling interrupt in integrated circuits having multiple processors
EP0685798B1 (en) * 1994-05-31 2003-07-16 Advanced Micro Devices, Inc. Interrupt controllers in symmetrical multiprocessing systems
US5761516A (en) * 1996-05-03 1998-06-02 Lsi Logic Corporation Single chip multiprocessor architecture with internal task switching synchronization bus
US5790850A (en) * 1996-09-30 1998-08-04 Intel Corporation Fault resilient booting for multiprocessor computer systems
US5987538A (en) 1997-08-15 1999-11-16 Compaq Computer Corporation Apparatus for initiating generation of an inter-processor interrupt by a peripheral device not directly connected to any of the multi-processor local interrupt controllers
US6219743B1 (en) 1998-09-30 2001-04-17 International Business Machines Corporation Apparatus for dynamic resource mapping for isolating interrupt sources and method therefor
KR100313945B1 (ko) * 1999-03-03 2001-11-15 김영환 다단 인터럽트 제어 장치
US20010037426A1 (en) * 2000-05-31 2001-11-01 Pawlowski Chester W. Interrupt handling via a proxy processor
US20020091826A1 (en) * 2000-10-13 2002-07-11 Guillaume Comeau Method and apparatus for interprocessor communication and peripheral sharing
US6829660B2 (en) * 2001-12-12 2004-12-07 Emulex Design & Manufacturing Corporation Supercharge message exchanger
US8984199B2 (en) * 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
KR100817047B1 (ko) * 2004-02-27 2008-03-26 삼성전자주식회사 인터럽트 컨트롤러
US20060020852A1 (en) * 2004-03-30 2006-01-26 Bernick David L Method and system of servicing asynchronous interrupts in multiple processors executing a user program
CN100464319C (zh) * 2006-06-23 2009-02-25 华为技术有限公司 实现处理器之间进行通讯的装置和方法
US7533207B2 (en) * 2006-12-06 2009-05-12 Microsoft Corporation Optimized interrupt delivery in a virtualized environment
US7617346B2 (en) * 2007-02-27 2009-11-10 Integrated Device Technology, Inc. Rapid input/output doorbell coalescing to minimize CPU utilization and reduce system interrupt latency
US7730248B2 (en) * 2007-12-13 2010-06-01 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems and processes
US8255603B2 (en) * 2009-08-14 2012-08-28 Advanced Micro Devices, Inc. User-level interrupt mechanism for multi-core architectures
US8234431B2 (en) * 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors
KR20110097447A (ko) * 2010-02-25 2011-08-31 삼성전자주식회사 인터럽트 프록시 기능을 구비한 시스템 온 칩 및 그에 따른 인터럽트 프록시 처리방법
US8601193B2 (en) * 2010-10-08 2013-12-03 International Business Machines Corporation Performance monitor design for instruction profiling using shared counters
US8667192B2 (en) 2011-02-28 2014-03-04 Xilinx, Inc. Integrated circuit with programmable circuitry and an embedded processor system
WO2013100948A1 (en) 2011-12-28 2013-07-04 Intel Corporation Delivering real time interrupts with an advanced programmable interrupt controller
US9009508B2 (en) * 2012-08-28 2015-04-14 Advanced Micro Devices, Inc. Mechanism for reducing interrupt latency and power consumption using heterogeneous cores
US9043521B2 (en) 2012-11-13 2015-05-26 Intel Corporation Technique for communicating interrupts in a computer system
US9582346B2 (en) * 2013-09-04 2017-02-28 Oracle International Corporation Selecting I/O interrupt target for multi-core server systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010074544A (ko) * 2000-01-24 2001-08-04 비센트 비.인그라시아, 알크 엠 아헨 인터럽트 강제 레지스터를 포함하는 유연 인터럽트 제어기
US20100191887A1 (en) * 2009-01-26 2010-07-29 Serebrin Benjamin C Monitoring Interrupt Acceptances in Guests
KR20110113756A (ko) * 2009-01-26 2011-10-18 어드밴스드 마이크로 디바이시즈, 인코포레이티드 인터럽트 가상화를 돕기 위한 각 프로세서에 대한 게스트 인터럽트 제어기들
KR20120131175A (ko) * 2010-02-05 2012-12-04 어드밴스드 마이크로 디바이시즈, 인코포레이티드 게스트 로컬 인터럽트 컨트롤러를 가상화하도록 구성된 프로세서
KR20130035996A (ko) * 2010-02-05 2013-04-09 어드밴스드 마이크로 디바이시즈, 인코포레이티드 인터럽트 가상화
KR20130024860A (ko) * 2011-08-30 2013-03-08 애플 인크. 주변장치 컴포넌트를 위한 높은 우선순위 커맨드 큐

Also Published As

Publication number Publication date
CN106575275A (zh) 2017-04-19
KR20170042762A (ko) 2017-04-19
EP3183652A1 (en) 2017-06-28
KR102536596B1 (ko) 2023-05-24
US20160055106A1 (en) 2016-02-25
JP2017527903A (ja) 2017-09-21
KR102544392B1 (ko) 2023-06-15
CN106575275B (zh) 2020-11-06
WO2016028715A1 (en) 2016-02-25
EP3183652B1 (en) 2021-09-29
JP6785222B2 (ja) 2020-11-18
US9665509B2 (en) 2017-05-30

Similar Documents

Publication Publication Date Title
KR102536596B1 (ko) 이기종 멀티프로세서 시스템에서의 프로세서간 인터럽트를 위한 메커니즘
US11016906B2 (en) GPU virtualisation
US9213866B1 (en) Circuits for and methods of preventing unauthorized access in an integrated circuit
US9047474B1 (en) Circuits for and methods of providing isolation in an integrated circuit
US10615800B1 (en) Method and apparatus for implementing configurable streaming networks
JP2016535913A (ja) パイプライン化構成可能プロセッサ
US10037301B2 (en) Circuits and methods for inter-processor communication
KR102596637B1 (ko) 상호작용형 다단계 물리적 합성
EP3330866A1 (en) Methods and apparatus for programmable integrated circuit coprocessor sector management
US9792395B1 (en) Memory utilization in a circuit design
JP7402798B2 (ja) データセンタにおけるプログラマブルデバイス向けのセキュリティ
US8479042B1 (en) Transaction-level lockstep
CN107656880B (zh) 具有包括动态可编程的功能单元的存储器控制器的处理器
US9483416B1 (en) Secure processor operation using integrated circuit configuration circuitry
CN112912881A (zh) 用于将密钥数据存储在电子构件中的方法
JP6603304B2 (ja) 種々のタイプの構成メモリを有するプログラマブル集積回路

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant