KR20100100959A - 멀티스레드 프로세서를 위한 공유된 인터럽트 제어기 - Google Patents

멀티스레드 프로세서를 위한 공유된 인터럽트 제어기 Download PDF

Info

Publication number
KR20100100959A
KR20100100959A KR1020107015249A KR20107015249A KR20100100959A KR 20100100959 A KR20100100959 A KR 20100100959A KR 1020107015249 A KR1020107015249 A KR 1020107015249A KR 20107015249 A KR20107015249 A KR 20107015249A KR 20100100959 A KR20100100959 A KR 20100100959A
Authority
KR
South Korea
Prior art keywords
interrupt
register
threads
processor
logic
Prior art date
Application number
KR1020107015249A
Other languages
English (en)
Other versions
KR101146462B1 (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 KR20100100959A publication Critical patent/KR20100100959A/ko
Application granted granted Critical
Publication of KR101146462B1 publication Critical patent/KR101146462B1/ko

Links

Images

Classifications

    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Bus Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

멀티스레드(multi-threaded) 프로세서의 하나 이상의 스레드들과 연관된 명령들을 제공하도록 조정된 시퀀서(sequencer)를 포함하는 멀티스레드 프로세서가 개시된다. 상기 시퀀서는 하나 이상의 인터럽트들을 수신하고 상기 하나 이상의 스레드들 중 제 1 스레드가 상기 하나 이상의 인터럽트들 중 적어도 하나의 인터럽트를 서비스하도록 선택적으로 허용하는 인터럽트 제어기를 포함한다. 상기 인터럽트 제어기는 상기 하나 이상의 스레드들 중 제 2 스레드가 상기 적어도 하나의 인터럽트에 응답하는 것을 차단하는 로직을 포함한다.

Description

멀티스레드 프로세서를 위한 공유된 인터럽트 제어기{SHARED INTERRUPT CONTROLLER FOR A MULTI-THREADED PROCESSOR}
본 출원은 2005년 10월 18일 출원되고 발명의 명칭이 "SHARED INTERRUPT CONTROL METHOD AND SYSTEM FOR A DIGITAL SIGNAL PROCESSOR"이고 어토니 도켓 번호 050587로써 지정되는 미국 특허 출원 번호 제 11/253,906호의 부분우선출원으로서 이에 대한 우선권을 주장하며, 그 전체는 참조로서 본 명세서에 결합된다.
본 개시내용은 일반적으로는 멀티스레드 프로세서를 위한 공유된 인터럽트 제어기에 관련된다.
보다 소형이며 보다 강력한 개인용 컴퓨팅 장치들에서 기술의 진보가 이뤄져 왔다. 예를들어, 소형이며 가볍고, 사용자들에 의해 쉽게 운반될 수 있는 휴대용 무선 전화, PDA(personal digital assistant), 및 페이징 장치와 같은, 무선 컴퓨팅 장치들을 포함하는, 다양한 휴대용 개인용 컴퓨팅 장치들이 현재 존재한다. 보다 구체적으로는, 셀룰러 전화들 및 인터넷 프로토콜(IP) 전화들과 같은 휴대용 무선 전화들이 무선 네트워크들을 통하여 음성과 데이터 패킷들을 통신할 수 있다. 또한, 많은 이러한 무선 전화들은 이들에 통합되는 다른 형태의 장치들을 포함한다. 예를들어, 무선 전화는 디지털 스틸(still) 카메라, 디지털 비디오 카메라, 디지털 리코더, 및 오디오 파일 플레이어를 또한 포함할 수 있다. 또한, 이런 무선 전화들은 인터넷을 액세스하는데 이용될 수 있는 웹 브라우저 어플리케이션과 같은 소프트웨어 기능성을 포함할 수 있다. 이와 같이, 이들 무선 전화들은 상당한 컴퓨팅 성능들을 포함할 수 있다.
디지털 신호 프로세서(digital signal processor: DSP)들은 무선 전화들과 같은, 휴대용 개인용 컴퓨팅 장치들에서 널리 이용된다. 이러한 DSP들은 비디오 및 오디오 기능들을 제공하거나, 수신된 데이터를 프로세싱하거나, 다른 기능들을 수행하는데 이용될 수 있다. 이러한 DSP들은 다수의 프로그램 명령 스레드들을 처리할 수 있고 병렬 실행 유닛들을 포함할 수 있는, 멀티스레드(multi-threaded) 구조를 채용할 수 있다.
DSP들은 실행된 명령들, 주변 장치들, 또는 다른 회로 엘리먼트들로부터 인터럽트(interrupt) 신호들을 수신하기 위하여 인터럽트 핸들러(handler)를 포함할 수 있다. 이러한 인터럽트 신호들은 감지된 이벤트에 응답하여 DSP 프로세스의 일시적 정지를 트리커할 수 있다. DSP의 각 스레드가 전용 인터럽트 핸들러 또는 제어기를 포함하지 않는다면, 인터럽트들의 서비스는 추가적인 스케쥴링 복잡성을 야기할 수 있다.
특정 예시적인 실시예에서, 멀티스레드(multi-threaded) 프로세서의 하나 이상의 스레드들과 연관된 명령들을 제공하도록 조정된 시퀀서(sequencer)를 포함하는 멀티스레드 프로세서가 개시된다. 상기 시퀀서는 하나 이상의 인터럽트들을 수신하고 상기 하나 이상의 스레드들 중 제 1 스레드가 상기 하나 이상의 인터럽트들 중 적어도 하나의 인터럽트를 서비스하도록 선택적으로 허용하는 인터럽트 제어기를 포함한다. 상기 인터럽트 제어기는 상기 인터럽트가 상기 제 1 스레드에 의한 서비스를 위해 선택된 후에 상기 하나 이상의 스레드들 중 제 2 스레드가 상기 적어도 하나의 인터럽트에 응답하는 것을 차단하는 로직 회로를 포함한다.
다른 특정 예시적인 실시예에서, 프로세서가 하나 이상의 인터럽트들을 수신하도록 하나 이상의 인터럽트 소스들에 응답하는 범용 인터럽트 레지스터를 포함한다. 상기 범용 인터럽트 레지스터는 상기 하나 이상의 인터럽트들을 서비스하기 위하여 멀티스레드 프로세서의 다수의 스레드들의 각 스레드에 의해 액세스가능하다. 상기 멀티스레드 프로세서의 스레드에 의해 서비스되고 있음을 결정하고 상기 인터럽트가 서비스되고 있다는 결정에 기초하여 다른 스레드들에 의한 상기 인터럽트에 대한 액세스를 차단하기 위하여 인터럽트 로직이 상기 범용 인터럽트 레지스터에 연결된다.
다른 특정 예시적인 실시예에서, 멀티스레드 프로세서에서 인터럽트들을 제어하는 방법이 멀티스레드 프로세서와 연관된 시퀀서에서 인터럽트를 수신하는 단계를 포함한다. 상기 방법은 또한 상기 인터럽트가 상기 다수의 스레드들 중 제 1 스레드에 의해 서비스되고 있음을 결정한 후에 제 2 스레드에 의한 상기 인터럽트에 대한 액세스를 차단하는 단계를 포함한다. 상기 시퀀서는 상기 멀티스레드 프로세서의 다수의 스레드들에 액세스가능한 범용 인터럽트 레지스터를 포함하며 상기 시퀀서는 인터럽트 제어 회로를 포함한다.
다른 특정 예시적인 실시예에서, 멀티스레드 프로세서와 연관된 시퀀서에서 인터럽트를 수신하기 위한 수단을 갖는 프로세싱 장치가 개시된다. 상기 시퀀서는 상기 다수의 스레드들에 액세스가능한 범용 인터럽트 레지스터를 포함하고 인터럽트 제어 회로를 포함한다. 상기 프로세싱 장치는 또한 상기 인터럽트가 상기 다수의 스레드들 중 제 1 스레드에 의해 서비스되고 있음을 결정한 후에 제 2 스레드에 의한 상기 인터럽트에 대한 액세스를 차단하기 위한 수단을 포함한다.
다른 특정 예시적인 실시예에서, 통신 네트워크와 통신하는 송수신기와 프로세서에 의해 실행가능한 다수의 명령들을 포함하는 메모리를 포함하는 무선 통신 장치가 개시된다. 상기 프로세서는 상기 송수신기에 연결되며 상기 메모리에 대한 액세스를 갖는다. 상기 프로세서는, 상기 다수의 명령들로부터 선택된 명령들을 실행하도록 조정된 다수의 스레드들, 및 상기 다수의 스레드들로 상기 선택된 명령들을 리트리브(retrieve)하고 제공하도록 조정된 시퀀서를 포함한다. 상기 시퀀서는 상기 다수의 스레드들의 각 실행 유닛에 액세스가능한 범용 인터럽트 레지스터를 포함하고 상기 범용 인터럽트 레지스터에 연결된 인터럽트 제어기를 포함한다. 상기 인터럽트 제어기는 언제 상기 다수의 스레드들 중의 스레드가 인터럽트를 서비스하고 있는지를 결정하도록 그리고 상기 다수의 스레드들 중 다른 스레드들에 의한 상기 인터럽트에 대한 액세스를 차단하기 위하여 상기 범용 인터럽트 레지스터를 이용하도록 조정된다.
다른 특정 예시적인 실시예에서, 인터럽트 로직 레벨을 표시하는 제 1 구성 레지스터 및 인터럽트 트리거를 표시하는 제 2 구성 레지스터를 포함하는 프로세서가 개시된다. 상기 프로세서는 또한 다수의 비트들을 포함하는 자동 디스에이블 인터럽트 레지스터를 포함하며, 상기 다수의 비트들의 각 비트는 특정 인터럽트에 대응된다. 상기 프로세서는 또한 상기 인터럽트 로직 레벨, 상기 인터럽트 트리거, 및 상기 특정 인터럽트에 대응하는 상기 비트에 기초하여 다수의 실행 스레드들을 포함하는 멀티스레드 프로세서의 제 1 스레드에 인터럽트를 제공하는 프로세싱 로직을 포함한다. 상기 프로세싱 로직은 상기 특정 인터럽트가 상기 제 1 스레드에 의해 서비스되고 있는 경우에 상기 특정 인터럽트에 대응하는 상기 비트를 설정하고 상기 특정 인터럽트가 상기 제 1 스레드에 의해 서비스되고 있는 동안에 상기 다수의 실행 스레드들 중 다른 스레드들에 의한 액세스를 차단한다.
범용 인터럽트 레지스터와 관련 로직의 실시예들에 의해 제공되는 하나의 특정 이점은 범용 인터럽트 레지스터의 비트들이 상이한 스레드들에 의해 특정 인터럽트를 복수 회 서비스하는 것을 차단하는데 이용될 수 있다는데 있다.
특정 실시예들의 다른 이점은 멀티스레드 프로세싱 환경에서 인터럽트를 서비스하는 것이 스레드 특정 레지스터들에서 디스에이블링 비트에 대응할 수 있는 인터럽트 비트 플래그들을 범용 인터럽트 레지스터 내에 설정함으로써 단순하고 효과적인 방식으로 관리될 수 있다는데 있다.
본 개시내용의 다른 양상, 이점들, 및 특징들은 도면의 간단한 설명, 상세한 설명, 및 청구범위를 포함하는 전체 명세서를 참조한다면 명확해질 것이다.
도1은 공유된 인터럽트 제어기를 갖는 멀티스레드 프로세서의 특정 예시적 실시예의 블록도이다.
도2는 공유된 인터럽트 제어기를 갖는 멀티스레드 프로세서의 제 2 특정 예시적 실시예의 블록도이다.
도3은 공유된 인터럽트 제어기의 특정 예시적 실시예의 블록도이다.
도4는 공유된 인터럽트 제어기를 이용하여 인터럽트들을 핸들링하는 방법의 특정 예시적 실시예의 흐름도이다.
도5는 무선 통신 장치의 특정 예시적 실시예의 블록도이다.
도1을 참조하면, 멀티스레드 프로세서(100)가 도시되어 있다. 특정 예시적인 실시예에서, 멀티스레드 프로세서(100)는 디지털 신호 프로세서일 수 있다. 멀티스레드 프로세서(100)는 명령 큐(134)를 갖는 메모리(102), 메모리 버스(106), 시퀀서(sequencer) 유닛(104), 다수의 실행 유닛들(108-114), 제 1 버스(118), 통합 레지스터 파일(116), 및 제 2 버스(120)를 포함한다. 시퀀서(104)는 제어 레지스터(160)에 연결된다. 시퀀서(104)는 범용 인터럽트 레지스터 파일(162) 및 공유된 인터럽트 제어기(164)를 포함한다. 메모리(102)는 제 2 버스(120)에 연결되고 시퀀서(104)도 또한 제 2 버스(120)에 연결된다.
특정 실시예에서, 메모리 버스(106)는 64 비트 버스일 수 있으며 시퀀서(104)는 메모리(102)로부터 명령들을 리트리브(retrieve)하도록 구성될 수 있다. 특정 예시적인 실시예에서, 각 명령들은 32 비트 길이를 가질 수 있다. 시퀀서(104)는 제 1 경로(슬롯 0)를 통하여 제 1 명령 실행 유닛(108)에, 제 2 경로(슬롯 1)를 통하여 제 2 명령 실행 유닛(110)에, 제 3 경로(슬롯 2)를 통하여 제 3 명령 실행 유닛(112)에, 제 4 경로(슬롯 3)를 통하여 제 4 명령 실행 유닛(114)에 연결된다. 각 명령 실행 유닛(108, 110, 112, 및 114)은 제 1 버스(118)를 통하여 일반 레지스터 파일(116)에 연결될 수 있다. 일반 레지스터 파일(116)은 또한 시퀀서(104)에 연결되며 제 2 버스(120)를 통하여 메모리(102)에 연결될 수 있다.
특정 실시예에서, 메모리(102)는 제 1 명령 캐시(122), 제 2 명령 캐시(124), 제 3 명령 캐시(126), 제 4 명령 캐시(128), 제 5 명령 캐시(130), 및 제 6 명령 캐시(132)를 포함하는 콘텐트 어드레스가능 메모리(content addressable memory: CAM)일 수 있다. 동작 도중에, 시퀀서(104)는 각각의 명령 캐시(122, 124, 126, 128, 130, 및 132)에 액세스할 수 있다. 또한, 특정 실시예에서, 각 명령 캐시(122, 124, 126, 128, 130, 및 132)는 다수의 명령들, 각 명령에 대한 명령 조종(steering) 데이터, 및 각 명령에 대한 명령 프리-디코드(pre-decode) 데이터를 포함한다. 메모리(102) 내의 명령 큐(134)는 각 명령 캐시(122, 124, 126, 128, 130, 및 132)에 대한 명령 큐를 포함할 수 있다.
도1에 도시된 바와 같이, 일반 레지스터(116)는 제 1 통합 레지스터 파일(148), 제 2 통합 레지스터 파일(150), 제 3 통합 레지스터 파일(152), 제 4 통합 레지스터 파일(154), 제 5 통합 레지스터 파일(156), 및 제 6 통합 레지스터 파일(158)을 포함한다. 각 통합 레지스터 파일(148, 150, 152, 154, 156, 및 158)은 메모리(102) 내의 각각의 명령 캐시(122, 124, 126, 128, 130, 및 132)에 대응된다. 각 통합 레지스터 파일(148, 150, 152, 154, 156, 및 158) 및 각 명령 캐시(122, 124, 126, 128, 130, 및 132)는 각각의 스레드들에 대응된다. 또한, 특정 실시예에서, 통합 레지스터 파일(148, 150, 152, 154, 156, 및 158)의 각각은 동일한 구성을 가질 수 있으며 동일한 갯수의 데이터 피연산자 및 어드레스 피연산자를 포함할 수 있다.
도1은 멀티스레드 프로세서(100)가 시퀀서(104)에 연결된 제어 레지스터(160)를 추가로 포함할 수 있다는 것을 도시한다. 도시된 바와 같이, 제어 레지스터(160)는 독립형(stand-alone) 레지스터일 수 있다. 대안적으로, 제어 레지스터는 일반 레지스터(116)에 포함될 수 있다. 도시된 바와 같이, 멀티스레드 프로세서(100)는 공유된 인터럽트 제어기(164)와 같은 제어 로직을 또한 포함할 수 있다. 예시적인 실시예에서, 공유된 인터럽트 제어기(164)는 범용 인터럽트 레지스터들(162)에 연결된다. 공유된 인터럽트 제어기(164)는 실행 유닛들(108, 110, 112, 및 114)에 의한 각 특정 인터럽트로의 액세스를 제어하도록 동작할 수 있다.
멀티스레드 프로세서(100)의 동작 도중에, 명령들이 시퀀서(104)에 의해 메모리(102)로부터 패치(fetch)되고, 선택된 명령 실행 유닛들(108, 110, 112, 및 114)로 전송되고, 명령 실행 유닛들(108, 110, 112, 및 114)에서 실행된다. 각 명령 실행 유닛(108, 110, 112, 및 114)에서 실행된 명령으로부터의 결과들이 일반 레지스터(116)에(즉, 통합 레지스터 파일들(148, 150, 152, 154, 156, 및 158) 중하나에) 기록될 수 있다. 특정 실시예에서, 멀티스레드 프로세서(100)는 다수의 프로그램 스레드들을 실행할 수 있다. 또한, 특정 실시예에서, 멀티스레드 프로세서(100)는 인터리브된 기반하에서 6개까지의 상이한 프로그램 스레드들을 실행하도록 구성될 수 있다.
시퀀서(104)는 멀티스레드 프로세서(100)의 하나 이상의 스레드와 연관된 명령들을 제공하도록 조정된다. 시퀀서(104)는 하나 이상의 인터럽트들을 수신하도록 조정된 인터럽트 제어기(164)를 포함한다. 하나 이상의 인터럽트들은 멀티스레드 프로세서(100)의 스레드가 정상 프로세싱을 제외하고 인터럽트 핸들러의 실행을 개시하도록 야기할 수 있는 하드웨어 신호들을 나타낼 수 있으며, 여기서 인터럽트 핸들러는 특정 인터럽트에 응답하기 위한 소프트웨어 루틴일 수 있다. 이러한 인터럽트들은 명령 실행으로부터, 주변 장치들로부터, 회로 컴포넌트들로부터, 또는 이들의 임의의 조합으로부터 생성될 수 있다. 인터럽트는 버스의 타입과 인터럽트 레벨에 의해 파라미터화(parameterize)될 수 있으며 인터럽트 벡터 수를 포함할 수 있다.
특정 예시적인 실시예에서, 하나 이상의 인터럽트들이 공유된 인터럽트 제어기(164)에 의해 수신되거나 감지되는 경우에, 공유된 인터럽트 제어기(164)눈 하나 이상의 스레드들 중 제 1 스레드가 하나 이상의 인터럽트들 중 특정 인터럽트를 서비스하게 선택적으로 허용하도록 조정된다. 특정 실시예에서, 인터럽트 제어기(164)는 특정 인터럽트가 제 1 스레드에 의한 서비스를 위해 선택된 후에 제 2 스레드가 특정 인터럽트에 응답하는 것을 배제하는 로직을 포함한다.
특정 실시예에서, 공유된 인터럽트 제어기(164)는 다수의 실행 유닛들과 다수의 스레드들에 걸쳐 공유된다. 공유된 인터럽트 제어기(164)는 다수의 실행 유닛들 각각에 대하여 구성될 수 있는 다수의 동작 모드들을 포함할 수 있다. 제 1 동작 모드는 인터럽트 활성 하이-에지(edge) 트리거 모드를 포함하며, 여기서는 공유된 인터럽트 제어기(164)가 논리-로우(logic-low)로부터 논리-하이(logic-high) 레벨로의 에지 전환에 의해 트리거되는 논리 하이 레벨에서 인터럽트에 응답한다. 제 2 동작 모드는 인터럽트 활성 로우 에지 트리거 모드를 포함하며, 여기서는 공유된 인터럽트 제어기(164)가 논리-하이로부터 논리-로우 레벨로의 에지 전환에 의해 트리거되는 논리 로우 레벨에서 인터럽트에 응답한다. 제 3 동작 모드는 인터럽트 활성 하이 레벨 트리거 모드를 포함하며, 여기서는 인터럽트 제어기(164)가 논리 하이 레벨에 유지되는 인터럽트에 응답한다. 제 4 동작 모드는 인터럽트 논리 로우 레벨 트리거 모드를 포함하며, 여기서는 공유된 인터럽트 제어기(164)가 논리 로우 레벨에 유지되는 인터럽트에 응답한다.
특정 실시예에서, 공유된 인터럽트 제어기(164)는 범용 인터럽트 레지스터(162)에서와 인터럽트 펜딩 레지스터(도2에 도시된 인터럽트 펜딩 레지스터(interrupt pending register: IPEND)(210)과 같은)에서 플래그를 설정 또는 변경하기 위한 로직을 포함한다. 범용 인터럽트 레지스터(162)는 도2의 인터럽트 자동 디스에이블 레지스터(212)와 도3의 인터럽트 자동 디스에이블 레지스터(324)와 같은, 인터럽트 자동 디스에이블 레지스터를 또한 포함할 수 있다. 플래그는 특정 스레드가 특정 인터럽트를 서비스하고 있음을 표시하기 위하여 범용 인터럽트 레지스터(162) 내에 설정될 수 있다. 일반적으로, 각 플래그는 서비스될 수 있는 하나 이상의 인터럽트들 중 적어도 하나에 대응한다. 공유된 인터럽트 제어기(164)는 승인된 특정 스레드가 인터럽트를 서비스하고 있는 동안에 다른 스레드가 특정 인터럽트를 서비스하는 것을 차단하도록 조정된다. 플래그가 제 1 스레드에 대해 설정되면, 제 1 스레드는 공유된 인터럽트 제어기(164)의 제어 로직이 제 2 스레드와 같은 임의의 다른 스레드가 인터럽트에 응답하는 것을 이러한 인터럽트에 대한 서비스를 완료할 때까지 차단한다. 또한, 공유된 인터럽트 제어기(164)는 인터럽트가 서비스되고 있는 동안에 범용 인터럽트 레지스터(162) 내의 인터럽트에 대응하는 특정 비트의 상태를 유지할 수 있다.
범용 인터럽트 레지스터(162)는 인터럽트를 행하는 것이 가능한 다수의 스레드들의 각 스레드에 액세스가능하다. 멀티스레드 프로세서(100)가 위에서 설명한 제 3 모드 및 제 4 모드와 같이 레벨 트리거 모드에서 동작하고 있는 경우에, 공유된 인터럽트 제어기(164)는 제 1 스레드가 특정 인터럽트를 서비스하고 있는 때에 범용 인터럽트 레지스터(162) 내에서 비트들을 유지할 수 있다. 공유된 인터럽트 제어기(164)와 연관된 로직은 인터럽트가 서비스되고 있는 도중에 다른 스레드들이 특정 인터럽트를 서비스하는 것을 억제할 수 있으며, 이에 의해 인터럽트를 복수의 횟수로 서비스하는 것이 차단된다. 공유된 인터럽트 제어기(164)는 언제 특정 스레드가 인터럽트를 서비스하고 있는지를 표시하기 위하여 인터럽트 팬딩(pending) 레지스터들 중 적어도 하나를 제어하는 로직을 포함한다. 특정 실시예에서, 인터럽트 팬딩 레지스터 내의 제어 비트는 관련 스레드에 의해 서비스되고 있는 특정 인터럽트가 부정(de-assert)되는 경우에 자동으로 소거(clear)된다.
도2를 참조하면, 멀티스레드 프로세서(200) 내의 스레드 이벤트들 및 인터럽트들을 핸들링(handling)하기 위한 시퀀서, 로직 및 관련 레지스터들에 대한 추가적이 상세들이 도시되어 있다. 멀티스레드 프로세서(200)는 시퀀서(202) 및 스레드 이벤트 핸들링 로직(204)을 포함한다. 시퀀서(202)는 공유된 인터럽트 제어기(208)와 범용 제어 레지스터들(206)을 포함한다. 범용 제어 레지스터들(206)은 인터럽트 팬딩 레지스터(210), 인터럽트 자동 디스에이블 레지스터(212), 및 모드 제어 레지스터(214)를 포함한다. 시퀀서(202)는 멀티스레드 프로세서의 각 스레드에 대응하는 스레드 이벤트-핸들링 모듈을 포함할 수 있는 스레드 이벤트 핸들링 모듈들(204)과 통신한다. 각 스레드 이벤트 핸들링 모듈(204)은 인터럽트 마스크 레지스터(216), 프로세스 이벤트 레지스터(218), 다수의 범용 레지스터들(220)(R0-R31), 및 감독 제어 레지스터들(222)을 포함한다.
특정 실시예에서, 범용 인터럽트 레지스터들(206)은 하나 이상의 인터럽트들을 수신하기 위하여 하나 이상의 인터럽트 소스(source)들에 응답한다. 하나 이상은 소스들은 프로세서의 특정 실행 유닛에 의해 실행되는 명령들일 수 있거나, 주의를 요하는 주변 장치들일 수 있거나, 이들의 임의의 조합일 수 있다. 범용 인터럽트 레지스터(206)는 하나 이상의 인터럽트들을 서비스하기 위하여 멀티스레드 프로세서(200)의 다수의 이용가능한 스레드들의 각 스레드에 의해 액세스가능하다.
일반적으로, 인터럽트 자동 디스에이블 레지스터(212)는 특정 인터럽트에 대한 액세스를 차단하도록 설정될 수 있는 다수의 비트들을 포함한다. 인터럽트 자동 디스에이블 레지스터(212)는 멀티스레드 프로세서(200)의 스레드가 인터럽트를 서비스하기 시작하는 경우에 특정 인터럽트에 대응하는 비트 플래그를 자동으로 설정할 수 있다. 인터럽트 자동 디스에이블 레지스터(212)의 비트 플래그는 범용 인터럽트 레지스터(206)의 비트에 대응할 수 있다. 또한, 인터럽트 자동 디스에이블 레지스터(212)의 비트 플래그는 인터럽트 서비스가 완료될 때까지 비트 플래그의 상태를 유지하도록 공유된 인터럽트 제어기(208)에 의해 제어될 수 있다.
공유된 인터럽트 제어기(208)는 범용 인터럽트 제어기(206)에 연결된 인터럽트 로직을 포함한다. 공유된 인터럽트 제어기(208)의 인터럽트 로직은 다수의 잠재적 인터럽트들 중 하나의 특정 인터럽트가 멀티스레드 프로세서의 특정 스레드에 의해 서비스되고 있음을 결정할 것이다. 공유된 인터럽트 제어기(208)는 인터럽트가 제 1 스레드에 의해 서비스되고 있다는 결정에 기초하여 다수의 이용가능한 스레드들 중 다른 스레드들에 의한 서비스 인터럽트에 대한 액세스를 차단시킨다. 특정 예시적인 실시예에서, 공유된 인터럽트 제어기(208)는 인터럽트가 서비스되고 있으면 특정 인터럽트에 대한 액세스를 제한하기 위하여 인터럽트 자동 디스에이블 레지스터(212)의 비트 플래그를 이용할 수 있다. 예를들어, 일단 특정 스레드가 특정 인터럽트를 서비스하고 있으면, 추가적인 스레드들이 상기 특정 인터럽트를 액세스하는 것이 차단되고, 이에 의해 인터럽트 서비스 차단 능력이 제공된다.
특정 예시적인 실시예에서, 인터럽트 자동 디스에이블 레지스터(212)는 서비스될 특정 인터럽트와 연관된 다수의 비트들 중에서 선택된 비트를 설정하기 위하여 공유된 인터럽트 제어기(208)에 의해 액세스된다. 선택된 비트는 인터럽트가 서비스되고 있음을 표시하고 공유된 인터럽트 제어기(208) 내의 로직이 인터럽트가 서비스되고 있는 동안에 다른 스래드들이 인터럽트를 액세스하는 것을 차단한다. 특정 대안적인 실시예에서, 선택된 비트가 설정되는 경우에 다른 스레드가 선택된 인터럽트를 액세스 또는 서비스하는 것을 차단하기 위한 차단 로직이 인터럽트 자동 디스에이블 레지스터(212) 내에 또는 이와 관련된 다른 위치에 제공될 수 있다.
공유된 인터럽트 제어기(208)는 특정 인터럽트가 부정(de-assert)된 후에 인터럽트 자동 디스에이블 레지스터(212) 내에서 선택된 비트를 소거하는 명령을 수신하도록 조정된 로직을 포함할 수 있다. 예를들어, 버퍼가 차있는(full) 경우에 인터럽트는 긍정(assert)될 수 있다. 예를들어, 네트워크로부터 데이터를 수신하는 장치는 상기 장치의 버퍼가 차있는 경우에 인터럽트를 야기할 수 있으며 버퍼가 비어있는 경우에 인터럽트를 부정시킬 수 있다. 예를들어, 인터럽트가 논리 하이 신호라면, 주변 장치가 인터럽트의 논리 레벨을 논리 로우 신호로 변경하여, 이에 의해 인터럽트를 부정시킬 수 있다. 공유된 인터럽트 제어기(208)는 부정된 인터럽트에 응답하여, 실행 유닛으로부터의 서비스 완료 표시에 응답하여, 소거 비트 명령을 수신하는 것에 응답하여, 또는 이들의 임의의 조합에 응답하여 선택된 비트를 소거할 수 있다. 다른 특정 예시적 실시예에서, 실행 유닛은 인터럽트가 서비스되는 경우에 인터럽트 팬딩 레지스터(210) 내에서 비트를 자동으로 소거할 수 있다.
인터럽트 팬딩 레지스터(210)는 또한 다수의 비트들을 포함한다. 인터럽트 팬딩 레지스터(210)의 다수의 비트들의 각 비트는 멀티스레드 프로세서(200)의 특정 인터럽트의 상태를 표시한다. 인터럽트 팬딩 레지스터(210)는 특정 인터럽트와 연관된 상태를 결정하기 위해서 주변 장치들에 또는 소프트웨어에 액세스가능할 수 있다. 또한, 공유된 인터럽트 제어기(208)의 인터럽트 로직은 특정 인터럽트에 대응하는 선택된 비트를 설정하거나 소거하기 위하여 인터럽트 팬딩 레지스터(210)에 대한 액세스를 갖는다. 특정 예시적인 실시예에서, 감지된 인터럽트는 인터럽트 팬딩 레지스터(210) 내에 저장된 플래그에 의해 표현되는 소프트웨어 인터럽트일 수 있다. 인터럽트 팬딩 레지스터(210) 내의 특정 플래그는 소프트웨어가 긍정된 소프트웨어 인터럽트에 대한 상태 표시자들을 제공하도록 허용하기 위하여 소프트웨어에 액세스가능할 수 있다.
예를들어, 주변 장치와 연관된 상태 표시자의 "감지된 새로운 하드웨어" 형태는 멀티스레드 프로세서(200)에 의해 실행되는 소프트웨어 어플리케이션(컴퓨팅 장치의 운영 체계 소프트웨어와 같은) 내의 팝-업(pop-up) 표시자로서 제공될 수 있다. 멀티스레드 프로세서(200)는 감지된 새로운 하드웨어 인터럽트를 서비스할 수 있고, 새로운 하드웨어 설치 루틴을 구동할 수 있고, 성공적인 설치시에 플레그를 소거할 수 있다. 설치 프로세스 및 성공적인 설치는 팝업 또는 다른 표시자 내에서 소프트웨어 어플리케이션에 의해 반영될 수 있는, 인터럽트 팬딩 레지스터(210) 내의 비트들에 의해 반영될 수 있다. 상태는 인터럽트 팬딩 레지스터(210) 내의 특정 플래그들의 상태에 기초한 소프트웨어에 의해 결정될 수 있다.
도3을 참조하면, 인터럽트 제어기(300)의 인터럽트들을 핸들링하기 위한 특정 기능성이 도시되어 있다. 시스템은 제 1 선택기(306), 제 2 선택기(316), 인터럽트 출력(322), 및 인터럽트 팬딩 레지스터 출력(332)을 포함한다. 제 1 선택기(306)는 제어 입력(308)을 통하여 인터럽트 하이/로우 모드 제어 모듈(302)로부터 제어 신호를 수신하는 멀티플렉서일 수 있다. 제 2 선택기(316)는 제 2 제어 입력(318)을 통하여 인터럽트 에지/레벨 모드 제어(304)로부터 제어 신호를 수신하는 멀티플렉서일 수 있다. 제 1 선택기(306)는 인커밍(incoming) 인터럽트(310)에 응답하며 에지 감지 회로(312)와 레벨 감지 회로(314)에 출력을 제공한다. 에지 감지 회로(312) 및 레벨 감지 회로(314)의 출력들은 제 2 선택기(316)에 제공되며 인터럽트 에지/레벨 모드 제어(304)로부터의 제 2 제어 입력(318)에 기초하여 선택된다. 인커밍 인터럽트(310)와 연관된 감지된 에지 또는 레벨이 논리 AND 게이트와 같은 로직 회로(320)에 제공된다. 출력은 인터럽트 팬딩 레지스터 출력(332)을 통하여 인터럽트 팬딩 레지스터에 또한 제공될 수 있다.
인터럽트 제어기(300)는 또한 인터럽트 자동 디스에이블 레지스터(324), 인터럽트 마스크(IMASK) 레지스터(326), 스레드 당(per) 인터럽트 인에이블 레지스터(328), 및 범용 인터럽트 레지스터 인에이블/디스에이블 레지스터(330)를 포함한다. 자동 디스에이블 레지스터(324)는 멀티스레드 프로세서의 스레드에 의해 인터럽트가 취해지는 경우에(즉, 서비스되고 있는 경우에) 자동으로 설정되는 비트를 포함할 수 있다. IMASK 레지스터(326)는 특정 인터럽트들을 특정 하드웨어 스레드들에 지향하기 위하여 소프트웨어에 의해 설정될 수 있는 비트들을 포함할 수 있다. 로직 회로(320)는 인터럽트 출력(322)에 인커밍 인터럽트(310)의 감지된 에지 또는 레벨을 선택적으로 제공하기 위하여 인터럽트 자동 디스에이블 레지스터(324), IMASK 레지스터(326), 스레드 당 인터럽트 인에이블 레지스터(328), 및 범용 인터럽트 인에이블/디스에이블 레지스터(330)에 응답한다.
특정 예시적인 실시예에서, 인커밍 인터럽트(310)가 멀티플렉서 회로일 수 있는 제 1 선택기(306)에 수신된다. 인커밍 인터럽트(310)는 도시된 바와 같이 포지티브(positive) 입력 및 반전(inverted) 입력 모두에서 수신된다. 포지티브 입력 또는 반전 입력을 에지 감지 회로(312)와 레벨 감지 회로에 선택적으로 제공하도록 제 1 선택기(306)는 제어 신호(308)를 통하여 인터럽트 하이/로우 모드 제어 유닛(302)에 의해 제어된다. 인터럽트 제어를 위한 하이/로우 동작 모드는 에지 감지 회로(312)와 레벨 감지 회로(314)에 제공되고 있는 인커밍 인터럽트(310)의 출력을 지시(dictate)한다. 에지 감지 회로(312)와 레벨 감지 회로(314)로부터의 출력들이 제 2 선택기(316)로 제공된다. 제 2 선택기(316)는 에지 감지 회로(312) 또는 레벨 감지 회로(314)로부터 로직 회로(320)의 입력으로의 출력들중 하나를 선택적으로 제공하기 위하여 제어 신호(318)를 통한 인터럽트 에지/레벨 모드 제어 유닛(304)으로부터의 제어 입력에 응답한다. 제 2 선택기(316)의 출력은 또한 인터럽트 팬딩 레지스터 출력(332)에 제공된다. 인터럽트 자동 디스에이블 레지스터(324), IMASK 레지스터(326), 스레드 당 인터럽트 및 인에이블 레지스터(328), 및 범용 인터럽트 레지스터 인에이블/디스에이블 레지스터(330)로부터의 신호들의 조합이 인터럽트 신호가 출력(322)에서 제공되어야 하는지 여부를 결정한다.
일반적으로, 인터럽트 하이/로우 모드 제어 회로(302) 및 인터럽트 에지/레벨 모드 제어 회로(304)는 인터럽트 제어 회로(300)의 동작 모드를 제어하기 위하여 제 1 선택기(306) 및 제 2 선택기(316)를 제어하도록 협력한다. 일반적으로, 인터럽트 제어 회로(300)는, 로우에서 하이로의 에지 전환에서 인터럽트들에 응답하는 인터럽트 하이-에지 감지 모드; 논리 하이 값에서 인터럽트들에 응답하는 인터럽트 하이 레벨 감지 모드; 하이에서 로우로의 에지 전환에서 인터럽트들에 응답하는 인터럽트 로우 에지 감지 모드; 및 논리 로우 레벨에서 인터럽트들에 응답하는 인터럽트 로우 레벨 감지 모드의 4가지 모드들 중 하나를 이용하여 인터럽트들을 핸들링할 수 있다. 인터럽트 자동 디스에이블 레지스터(324)는, 인터럽트가 멀티스레드 프로세서의 다른 스레드에 의해 서비스되고 있는 경우에, 제 2선택기(316)의 출력이 인터럽트 출력(322)에 도달하는 것을 차단하기 위하여 논리 게이트(320)에 논리 로우 신호를 제공하도록 설정될 수 있다. 또한, 범용 인터럽트 레지스터 인에이블/디스에이블(330)은, 제 2 선택기(316)의 출력이 인터럽트 출력(322)에 도달하는 것을 차단하기 위하여 다른 스레드가 논리 게이트(320)로 인터럽트를 서비스하고 있음을 표시하는 비트 플래그를 제공할 수 있다. 따라서, 범용 인터럽트 레지스터(330) 및 인터럽트 자동 디스에이블 레지스터(324)는 멀티스레드 프로세서의 다수의 스레드들이 동일한 인터럽트를 서비스하는 것을 차단하도록 협력할 수 있다. 또한, 인터럽트 자동 디스에이블 레지스터(324)는, 범용 인터럽트 레지스터(330)의 대응하는 비트가 설정되는 경우에, 인터럽트 자동 디스에이블 레지스터(324) 내의 플래그들을 소거하도록 범용 인터럽트 레지스터(330) 내의 필드들 또는 비트들에 응답할 수 있다. 대안적으로, 인터럽트 자동 디스에이블 레지스터(324)는, 범용 인터럽트 레지스터(330)의 대응하는 비트가 다른 스레드들이 서비스되고 있는 인터럽트를 액세스하는 것을 차단하도록 변경된 경우에도, 서비스하고 있는 특정 인터럽트를 특정 레지스터가 계속 액세스하도록 가능하게 하는 스레드 특정 비트를 포함할 수 있다.
특정 예시적인 실시예에서, 인터럽트 출력(322)에서의 신호는, 인터럽트 자동 디스에이블 레지스터(324), IMASK 레지스터(326), 인터럽트 인에이블 레지스터(스레드 당)(328), 및 범용 인터럽트 레지스터(인에이블/디스에이블)(330)와 관련하여, 제 2 선택기(316)의 출력에서 감지된 인터럽트 상에 논리 게이트(320)에 의해 수행되는 논리 동작에 의해 결정될 수 있다. 예를들어, 인터럽트 자동 디스에이블 레지스터(324), IMASK 레지스터(326), 인터럽트 인에이블 레지스터(328), 및 범용 인터럽트 레지스터(330) 내의 비트들을 제어함에 의해서와 논리 게이트(320)를 이용한 논리 AND 동작을 수행함에 의해서, 특정 조건들이 충족되는 경우에만 인터럽트 출력(322)에서 인커밍 인터럽트(310)를 제공하도록 인터럽트 출력(322)이 제어될 수 있다. 이러한 방식으로, 일단 특정 스레드가 인터럽트를 서비스하기 시작하면, 인터럽트 제어기(300)는 다른 스레드들이 상기 인터럽트를 수신하는 것을 차단할 수 있다. 특정 예시적인 실시예에서, 인터럽트 인에이블 레지스터(328), IMASK 레지스터(326), 및 인터럽트 자동 디스에이블 레지스터(324)는 스레드 당 제어 레지스터들을 나타낼 수 있으며, 범용 인터럽트 레지스터(330)는 공유될 수 있다.
특정 예시적인 실시예에서, 멀티스레드 프로세서는 다수의 명령 스레드들을 프로세싱하기 위한 다수의 실행 유닛들을 포함할 수 있다. 멀티스레드 프로세서는 주변 장치들, 명령 실행 유닛들, 다른 회로 컴포넌트들, 또는 이들의 임의의 조합으로부터 수신된 인터럽트들을 프로세싱하기 위한 인터럽트 제어기(300)를 포함할 수 있다. 인터럽트 제어기(300)는, 인터럽트 논리 레벨(즉, 하이 논리 레벨 또는 로우 논리 레벨)을 표시하는, 인터럽트 하이/로우 모드 제어 레지스터(302)와 같은 제 1 구성 레지스터를 포함할 수 있다. 인터럽트 제어기(300)는 또한 인터럽트 트리거(즉, 에지 트리거 또는 레벨 트리거)를 표시하는, 인터럽트 에지/레벨 모드 제어 레지스터(304)와 같은 제 2 구성 레지스터를 포함할 수 있다. 인터럽트 제어기(300)는 또한 다수의 비트들의 각 비트가 특정 인터럽트에 대응되는, 다수의 비트들을 포함하는 자동 디스에이블 인터럽트 레지스터(324)를 포함할 수 있다. 인터럽트 로직 레벨, 인터럽트 트리거, 및 특정 인터럽트에 대응하는 비트에 기초하여, 수신된 인터럽트(예를들어 인커밍 인터럽트(310))를 멀티스레드 프로세서의 제 1 스레드에 선택적으로 제공하기 위하여, 인터럽트 제어기(300)는 또한 제 1 선택기(306), 제 2 선택기(316), 에지 감지 회로(312), 레벨 감지 회로(314), 및 논리 게이트(320)와 같은 프로세싱 로직을 포함할 수 있다. 인터럽트 제어기(300) 또는 인터럽트 자동 디스에이블 레지스터(324)는, 특정 인터럽트가 제 1 스레드에 의해 서비스되고 있는 경우에 상기 특정 인터럽트에 대응하는 비트를 설정하기 위한 로직을 또한 포함할 수 있다. 제 1 스레드가 특정 인터럽트를 서비스하고 있는 동안에, 논리 게이트(320)를 포함하는 프로세싱 로직은 다수의 실행 스레드들 중 다른 스레드들에 의한 액세스를 차단하도록 협력할 수 있다.
도4를 참조하면, 공유된 인터럽트 제어기를 포함하는 멀티스레드 프로세서의 동작 방법이 도시되어 있다. 상기 방법은 402에 도시된 바와 같이, 다수의 스레드들을 갖는 멀티스레드 프로세서와 연관된 시퀀서에서 인터럽트를 수신하는 단계를 포함한다. 시퀀서는 다수의 스레드들에 액세스가능한 범용 인터럽트 레지스터를 포함하며 인터럽트 제어 회로를 포함한다. 상기 방법은 404에서, 범용 인터럽트 레지스터에서 수신된 인터럽트와 관련된 비트를 설정하는 단계를 또한 포함한다. 406으로 진행하여, 상기 방법은 제 1 스레드가 인터럽트를 서비스하고 있음을 결정한 후에 인터럽트에 대한 다수의 스레드들 중 제 2 스레드에 의한 액세스를 차단하는 단계를 포함한다. 특정 예시적인 실시예에서, 시퀀서는 범용 인터럽트 레지스터 내에서 선택된 비트들의 상태를 유지하도록 조정된 공유된 인터럽트 제어기를 포함할 수 있다. 또한, 공유된 인터럽트 제어기는 인터럽트 자동 디스에이블 레지스터 내에서 비트 플래그를 설정하도록 조정될 수 있으며, 이것은 제 1 스레드가 이미 인터럽트를 서비스하고 있는 경우에 멀티스레드 프로세서의 다른 스레드들이 상기 인터럽트를 서비스하는 것을 차단하는 논리 동작에서 이용될 수 있다. 408로 진행하여, 상기 방법은 인터럽트 팬딩 레지스터에서 제 1 스레드에 의해 취해진 인터럽트에 관련된 제 2 비트를 설정하는 단계를 추가로 포함한다. 인터럽트 팬딩 레지스터는 특정 실행 유닛에, 소프트웨어 프로세서들에, 또는 이들의 임의의 조합에 액세스가능할 수 있다. 특정 실시예에서, 소프트웨어 프로세서들은 인터럽트 프로세싱의 상태를 결정하기 위해서 또한 예를들어 사용자에 시각적 표시자들을 제공하기 위하여 인터럽트 팬딩 레지스터 내의 비트들을 액세스할 수 있다. 상기 방법은 410에서 종결된다.
406에서 제 2 스레드에 대한 액세스를 차단하는 단계에 대하여 참조되고 있으나, 제 1 스레드가 특정 인터럽트를 서비스하고 있는 동안에, 공유된 인터럽트 제어기는 특정 스레드 또는 다른 모든 스레드들에 대하여 특정 인터럽트에 대한 액세스를 차단할 수 있다. 또한, 제 1 스레드가 인터럽트를 서비스하고 있음을 표시하기 위하여 비트가 인터럽트 팬딩 레지스터 내에 설정된다. 인터럽트 팬딩 레지스터 내에 설정된 비트는, 범용 인터럽트 레지스터 내의 인터럽트 플래그와 관련된 소거 플래그 명령이 수신된 후에 소거될 수 있다. 자동 디스에이블 레지스터의 대응하는 플래그는 소거 플래그 명령이 처리되는 경우에 또한 소거될 수 있다. 인터럽트 자동 디스에이블 레지스터는 대응하는 범용 인터럽트 레지스터 내에 설정된 비트에 기초하여 인터럽트에 대한 액세스를 차단하는데 이용될 수 있다. 일반적으로, 공유된 인터럽트 제어기 및 범용 인터럽트 레지스터가 멀티스레드 프로세서의 다수의 스레드들에 의한 특정 인터럽트에 대한 액세스를 제어하기 위하여 이용될 수 있다. 이러한 방식으로, 제 1 스레드는 특정 인터럽트를 서비스할 수 있으며, 이때 다른 스레드들은 상기 특정 인터럽트를 액세스하는 것이 차단된다.
도5를 참조하면, 무선 통신 장치(500)가 도시된다. 무선 통신 장치(500)는 무선 제어기(540)와 안테나(542)를 통하여 통신 네트워크와 통신하기 위한 관련 송수신기를 포함한다. 무선 통신 장치(500)는 또한 디지털 신호 프로세서(510)와 같은 프로세서에 의해 실행가능한 다수의 명령들을 포함하는 메모리(532)를 포함한다. 프로세서는 송수신기에 연결되며 메모리(532)에 대한 액세스를 갖는다. 프로세서는 선택된 명령들을 실행하도록 조정된 다수의 실행 유닛들을 포함한다. 특정 실시예에서, 프로세서(510)는 시퀀서(511)를 포함하는 멀티스레드 프로세서이다. 시퀀서는 범용 인터럽트 레지스터(513)를 포함하며 인터럽트 로직 회로(515)를 포함한다. 시퀀서(511)는 디지털 신호 프로세서(510)의 다수의 실행 유닛들로 선택된 명령들을 리트리브(retrieve)하고 제공한다. 인터럽트 로직 회로(515)는 범용 인터럽트 레지스터(513)에 연결되며 디지털 신호 프로세서(510)의 특정 스레드가 언제 인터럽트를 서비스하고 있는지를 결정하도록 조정된다. 인터럽트 로직 회로(515)는 다른 스레드들에 의한 인터럽트에 대한 액세스를 차단하도록 범용 인터럽트 레지스터(513)를 이용하도록 조정된다. 다른 실시예에서, 범용 인터럽트 레지스터(513)는 인터럽트 자동 디스에이블 레지스터(interrupt autmatic disable register: IAD)를 포함한다. IAD 레지스터는 대응하는 다수의 인터럽트들과 관련된 다수의 비트들을 포함할 수 있다. 인터럽트 로직 회로(515)는, 스레드가 대응하는 관련 인터럽트를 서비스하고 있는 경우에, IAD 레지스터 내의 다수의 비트들 중 한 비트를 액세스하도록 조정된다.
도5는 또한 디지털 신호 프로세서(510)와 디스플레이(528)에 연결된 디스플레이 제어기(526)를 도시한다. 또한, 입력 장치(530)가 디지털 신호 프로세서(510)에 연결된다. 코더/디코더(CODEC)(534)가 또한 디지털 신호 프로세서(510)에 연결될 수 있다. 스피커(536) 및 마이크로폰(538)이 CODEC(534)에 연결될 수 있다.
도5는 또한 무선 제어기(540)가 디지털 신호 프로세서(510)와 무선 안테나(542)에 연결될 수 있음을 표시한다. 특정 실시예에서, 전원(544)이 온-칩 시스템(522)에 연결된다. 또한, 특정 실시예에서, 도5에 도시된 바와 같이, 디스플레이(528), 입력 장치(530), 스피커(536), 마이크로폰(538), 무선 안테나(542), 및 전원(544)은 온-칩 시스템(522)의 외부에 위치한다. 그러나, 이들 각각이 온-칩 시스템(522)의 컴포넌트에 연결된다.
시퀀서(511), 범용 인터럽트 레지스터(513), 및 인터럽트 로직 회로(515)가 디지털 신호 프로세서(510) 내에 있는 것으로만 도시되어 있으나, 시퀀서(511), 범용 인터럽트 레지스터(513), 및 인터럽트 로직 회로(515)는, 제어 엘리먼트들, 범용 프로세싱 회로들, 또는 멀티스레드 프로세서 기능성을 포함하는 임의의 다른 컴포넌트를 포함하는, 다른 컴포넌트들 내에 제공될 수 있다.
당업자는 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리블록, 구성, 모듈, 회로, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 구현될 수 있음을 잘 이해할 것이다. 하드웨어 및 소프트웨어의 상호 호환성을 명확히 하기 위해, 다양한 예시적인 소자들, 블록, 구성, 모듈, 회로, 및 단계들이 그들의 기능적 관점에서 기술되었다. 이러한 기능이 하드웨어로 구현되는지, 또는 소프트웨어로 구현되는지는 특정 애플리케이션 및 전체 시스템에 대해 부가된 설계 제한들에 의존한다. 당업자는 이러한 기능들을 각각의 특정 애플리케이션에 대해 다양한 방식으로 구현할 수 있지만, 이러한 구현 결정이 본 개시내용의 범위를 벗어나는 것을 야기하는 것으로 해석되어서는 안 된다.
개시된 실시예들과 관련하여 설명된 방법의 단계들 또는 알고리즘은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이들의 조합에 의해 직접 구현될 수 있다. 소프트웨어 모듈들은 RAM 메모리, 플래쉬 메모리, ROM 메모리, PROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드디스크, 소거가능 디스크, CD-ROM, 또는 공지된 저장 매체의 임의의 형태로서 존재한다. 예시적인 저장매체는 프로세서와 결합되어, 프로세서는 저장매체로부터 정보를 판독하여 저장매체에 정보를 기록한다. 대안적으로, 저장 매체는 프로세서의 구성요소일 수 있다. 이러한 프로세서 및 저장매체는 ASIC에 위치할 수 있다. ASIC은 사용자 단말 또는 컴퓨팅 장치에 위치할 수 있다. 대안적으로, 프로세서 및 저장 매체는 사용자 단말 또는 컴퓨팅 장치에서 이산 컴포넌트로서 존재할 수 있다.
제시된 실시예들에 대한 설명은 임의의 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 생산할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것이 아니라, 청구범위에 의해 정해지는 바와 같이 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.

Claims (31)

  1. 멀티스레드(multi-threaded) 프로세서로서,
    멀티스레드 프로세서의 하나 이상의 스레드들과 연관된 명령들을 제공하도록 조정된 시퀀서(sequencer)를 포함하며,
    상기 시퀀서는 하나 이상의 인터럽트들을 수신하고 상기 하나 이상의 스레드들 중 제 1 스레드가 상기 하나 이상의 인터럽트들 중 적어도 하나의 인터럽트를 서비스하도록 선택적으로 허용하는 인터럽트 제어기를 포함하며,
    상기 인터럽트 제어기는, 상기 적어도 하나의 인터럽트가 상기 제 1 스레드에 의한 서비스를 위하여 선택된 후에 상기 하나 이상의 스레드들 중 제 2 스레드가 상기 적어도 하나의 인터럽트에 응답하는 것을 차단하는 로직을 포함하는,
    멀티스레드 프로세서.
  2. 제 1 항에 있어서,
    상기 인터럽트 제어기는 다수의 동작 모드들을 갖는,
    멀티스레드 프로세서.
  3. 제 2 항에 있어서,
    상기 다수의 동작 모드들 중 제 1 동작 모드는 논리 하이(high) 인터럽트에 응답하는 인터럽트 활성 하이 모드를 포함하는,
    멀티스레드 프로세서.
  4. 제 2 항에 있어서,
    상기 다수의 동작 모드들 중 제 2 동작 모드는 논리 로우(low) 인터럽트에 응답하는 인터럽트 활성 로우 모드를 포함하는,
    멀티스레드 프로세서.
  5. 제 2 항에 있어서,
    상기 다수의 동작 모드들 중 제 3 동작 모드는 신호의 상승 또는 하강 에지에 응답하는 에지 트리거(trigger)된 동작 모드를 포함하는,
    멀티스레드 프로세서.
  6. 제 2 항에 있어서,
    상기 다수의 동작 모드들 중 제 4 동작 모드는 신호의 레벨 부분에 응답하는 레벨 트리거(trigger)된 동작 모드를 포함하는,
    멀티스레드 프로세서.
  7. 제 1 항에 있어서,
    상기 인터럽트 제어기는 인터럽트 팬딩(pending) 레지스터 내에 플래그(flag)를 설정하도록 조정되며, 상기 플래그는 상기 하나 이상의 인터럽트들 중 적어도 하나에 대응하는,
    멀티스레드 프로세서.
  8. 제 7 항에 있어서,
    상기 플래그는 상기 적어도 하나의 인터럽트가 상기 제 1 스레드에 의해 서비스되고 있는 동안에 설정되는,
    멀티스레드 프로세서.
  9. 제 1 항에 있어서,
    인터럽트를 취하기 위하여 상기 하나 이상의 스레드들의 각 스레드에 액세스가능한 범용 인터럽트 레지스터를 더 포함하며,
    상기 인터럽트 제어기는 제 1 스레드가 상기 적어도 하나의 인터럽트를 서비스하는 동안에 상기 제 2 스레드에 의한 상기 인터럽트에 대한 액세스를 차단하도록 상기 범용 인터럽트 레지스터를 변경하는,
    멀티스레드 프로세서.
  10. 제 1 항에 있어서,
    상기 하나 이상의 스레드들의 각각과 연관된 인터럽트 팬딩 레지스터를 더 포함하며,
    상기 인터럽트 팬딩 레지스터는 상기 인터럽트 제어기에 액세스 가능하고, 상기 인터럽트 제어기는 상기 인터럽트 팬딩 레지스터의 비트가 언제 제 1 스레드가 상기 적어도 하나의 인터럽트를 서비스하고 있는지를 표시하도록 제어하는,
    멀티스레드 프로세서.
  11. 제 10 항에 있어서,
    상기 비트는 상기 스레드에 의해 서비스된 상기 인터럽트가 부정(de-assert)된 후에 상기 인터럽트 팬딩 레지스터로부터 자동적으로 소거(clear)되는,
    멀티스레드 프로세서.
  12. 하나 이상의 인터럽트들을 수신하도록 하나 이상의 인터럽트 소스들에 응답하는 범용 인터럽트 레지스터 ― 상기 범용 인터럽트 레지스터는 상기 하나 이상의 인터럽트들을 서비스하기 위하여 멀티스레드 프로세서의 다수의 스레드들의 각 스레드에 의해 액세스가능함 ― ; 및
    상기 범용 인터럽트 레지스터에 연결된 인터럽트 로직을 포함하며,
    상기 인터럽트 로직은 상기 하나 이상의 인터럽트들 중의 인터럽트가 상기 멀티스레드 프로세서의 스레드에 의해 서비스되고 있음을 결정하고 상기 다수의 스레드들 중 임의의 다른 스레드에 의해 상기 인터럽트에 대한 액세스를 선택적으로 차단하는,
    프로세서.
  13. 제 12 항에 있어서,
    상기 범용 인터럽트 레지스터의 비트들에 대응하는 다수의 비트들을 포함하는 인터럽트 자동 디스에이블(disable) 레지스터를 더 포함하며,
    상기 인터럽트 자동 디스에이블 레지스터는 상기 다수의 비트들 중 선택된 비트를 설정하기 위하여 상기 인터럽트 로직에 의해 액세스가능하며, 상기 선택된 비트는 상기 인터럽트와 연관되며, 상기 선택된 비트는 인터럽트가 서비스되고 있음을 표시하며, 상기 로직은 상기 인터럽트가 서비스되고 있는 동안에 상기 다른 스레드들이 상기 인터럽트를 액세스하는 것을 차단하는,
    프로세서.
  14. 제 13 항에 있어서,
    상기 인터럽트 로직은 상기 인터럽트가 부정된 후에 상기 선택된 비트를 소거하는 명령을 수신하도록 조정되며 상기 인터럽트 로직은 상기 명령의 수신에 응답하여 상기 선택된 비트를 소거하는,
    프로세서.
  15. 제 12 항에 있어서,
    다수의 비트들을 포함하는 인터럽트 팬딩 레지스터를 더 포함하며,
    상기 다수의 비트들의 각 비트는 특정 인터럽트의 상태를 표시하며, 상기 인터럽트 로직은 상기 인터럽트에 대응하는 선택된 비트를 설정하기 위하여 상기 인터럽트 팬딩 레지스터에 대한 액세스를 갖는,
    프로세서.
  16. 제 15 항에 있어서,
    상기 인터럽트는 소프트웨어 인터럽트를 포함하며 상기 인터럽트 팬딩 레지스터는 상기 소프트웨어 인터럽트에 대한 상태 표시자를 제공하기 위하여 소프트웨어에 액세스가능한,
    프로세서.
  17. 멀티스레드 프로세서에서 인터럽트들을 제어하는 방법으로서,
    멀티스레드 프로세서와 연관된 시퀀서에서 인터럽트를 수신하는 단계 ― 상기 시퀀서는 상기 멀티스레드 프로세서의 다수의 스레드들에 액세스가능한 범용 인터럽트 레지스터를 포함하고 인터럽트 제어 회로를 포함함 ― ; 및
    상기 인터럽트가 상기 다수의 스레드들 중 제 1 스레드에 의해 서비스되고 있음을 결정한 후에 상기 다수의 스레드들 중 제 2 스레드에 의한 상기 인터럽트에 대한 액세스를 차단하는 단계를 포함하는,
    멀티스레드 프로세서에서 인터럽트들을 제어하는 방법.
  18. 제 17 항에 있어서,
    상기 범용 인터럽트 레지스터에 상기 수신된 인터럽트와 관련된 비트를 설정하는 단계를 더 포함하는,
    멀티스레드 프로세서에서 인터럽트들을 제어하는 방법.
  19. 제 17 항에 있어서,
    상기 인터럽트가 서비스되고 있음을 표시하기 위하여 인터럽트 팬딩 레지스터 내에 상기 제 1 스레드와 연관된 비트를 설정하는 단계를 더 포함하는,
    멀티스레드 프로세서에서 인터럽트들을 제어하는 방법.
  20. 제 17 항에 있어서,
    상기 범용 인터럽트 레지스터 내에 설정된 인터럽트 플래그와 관련된 소거 플래그 명령을 수신하는 단계; 및
    자동 디스에이블 레지스터의 대응하는 플래그를 소거하는 단계를 더 포함하며,
    프로세싱 로직이 상기 대응하는 플래그의 상태에 기초하여 상기 인터럽트에 대한 액세스를 차단하는,
    멀티스레드 프로세서에서 인터럽트들을 제어하는 방법.
  21. 제 17 항에 있어서,
    상기 인터럽트를 차단하는 단계는 인터럽트 자동 디스에이블 레지스터 내에 상기 범용 인터럽트 레지스터의 대응하는 비트와 관련된 비트를 설정하는 단계를 포함하며, 상기 프로세싱 로직은 상기 범용 인터럽트 레지스터의 상기 대응하는 비트가 설정된 경우에 상기 인터럽트에 대한 액세스를 차단하는,
    멀티스레드 프로세서에서 인터럽트들을 제어하는 방법.
  22. 다수의 스레드들을 갖는 멀티스레드 프로세서와 연관된 시퀀서에서 인터럽트를 수신하기 위한 수단 ― 상기 시퀀서는 상기 다수의 스레드들에 액세스가능한 범용 인터럽트 레지스터를 포함하고 인터럽트 제어 회로를 포함함 ― ; 및
    상기 인터럽트가 상기 다수의 스레드들 중 제 1 스레드에 의해 서비스되고 있음을 결정한 후에 상기 다수의 스레드들 중 제 2 스레드에 의한 상기 인터럽트에 대한 액세스를 차단하기 위한 수단을 포함하는,
    프로세싱 장치.
  23. 제 22 항에 있어서,
    상기 인터럽트가 서비스되었다는 표시를 수신하기 위한 수단; 및
    상기 표시의 수신에 응답하여 인터럽트 자동 디스에이블 레지스터 내에서 상기 인터럽트에 대응하는 비트를 소거하기 위한 수단을 더 포함하는,
    프로세싱 장치.
  24. 제 22 항에 있어서,
    상기 범용 인터럽트 레지스터에서 수신된 상기 인터럽트에 관련된 비트를 설정하기 위한 수단을 더 포함하는,
    프로세싱 장치.
  25. 통신 네트워크와 통신하는 송수신기;
    프로세서에 의해 실행가능한 다수의 명령들을 포함하는 메모리를 포함하며,
    상기 프로세서는 상기 송수신기에 연결되며 상기 메모리에 대한 액세스를 가지며, 상기 프로세서는,
    상기 다수의 명령들로부터 선택된 명령들을 실행하도록 조정된 다수의 스레드들; 및
    상기 다수의 스레드들로 상기 선택된 명령들을 리트리브(retrieve)하고 제공하도록 조정된 시퀀서를 포함하며,
    상기 시퀀서는 상기 다수의 스레드들의 각 실행 유닛에 액세스가능한 범용 인터럽트 레지스터를 포함하고 상기 범용 인터럽트 레지스터에 연결된 인터럽트 제어기를 포함하며, 상기 인터럽트 제어기는 언제 상기 다수의 스레드들 중의 스레드가 인터럽트를 서비스하고 있는지를 결정하도록 그리고 상기 다수의 스레드들 중 다른 스레드들에 의한 상기 인터럽트에 대한 액세스를 차단하기 위하여 상기 범용 인터럽트 레지스터를 이용하도록 조정되는,
    무선 통신 장치.
  26. 제 25 항에 있어서,
    상기 범용 인터럽트 레지스터는 인터럽트 자동 디스에이블(interrupt automatic disable: IAD) 레지스터를 포함하며, 상기 IAD 레지스터는 대응하는 다수의 인터럽트들과 관련된 다수의 비트들을 포함하는,
    무선 통신 장치.
  27. 제 25 항에 있어서,
    상기 인터럽트 제어기는 상기 IAD 레지스터 내에서 상기 다수의 비트들 중의 비트를 설정하도록 조정되는,
    무선 통신 장치.
  28. 프로세서로서,
    인터럽트 로직 레벨을 표시하는 제 1 구성 레지스터;
    인터럽트 트리거를 표시하는 제 2 구성 레지스터;
    다수의 비트들을 포함하는 자동 디스에이블 인터럽트 레지스터 ― 상기 다수의 비트들의 각 비트는 특정 인터럽트에 대응됨 ― ; 및
    상기 인터럽트 로직 레벨, 상기 인터럽트 트리거, 및 상기 특정 인터럽트에 대응하는 상기 비트에 기초하여 다수의 실행 스레드들을 포함하는 멀티스레드 프로세서의 제 1 스레드에 인터럽트를 제공하는 프로세싱 로직을 포함하며,
    상기 프로세싱 로직은 상기 특정 인터럽트가 상기 제 1 스레드에 의해 서비스되고 있는 경우에 상기 특정 인터럽트에 대응하는 상기 비트를 설정하고 상기 특정 인터럽트가 상기 제 1 스레드에 의해 서비스되고 있는 동안에 상기 다수의 실행 스레드들 중 다른 스레드들에 의한 액세스를 차단하는,
    프로세서.
  29. 제 28 항에 있어서,
    상기 프로세싱 로직은,
    인터럽트 소스에 응답하는 인터럽트 입력, 출력, 및 상기 출력으로 인커밍(incoming) 인터럽트를 선택적으로 제공하기 위하여 상기 제 1 구성 레지스터에 응답하는 인터럽트 로직 레벨 선택 입력을 포함하는 제 1 멀티플렉서를 더 포함하는,
    프로세서.
  30. 제 29 항에 있어서,
    상기 프로세싱 로직은,
    상기 출력에 연결되며 상기 인커밍 인터럽트의 상승 또는 하강 에지를 감지하도록 조정된 에지 감지 회로; 및
    상기 출력에 연결되며 상기 인커밍 인터럽트의 논리 레벨을 감지하도록 조정된 레벨 감지 회로를 더 포함하는,
    프로세서.
  31. 제 28 항에 있어서,
    상기 프로세싱 로직은,
    제 2 인터럽트 입력, 제 2 출력, 및 상기 제 2 출력으로 상기 인커밍 인터럽트에 관련된 데이터를 선택적으로 제공하기 위하여 상기 제 2 구성 레지스터에 응답하는 인터럽트 트리거 선택 입력을 포함하는 제 2 멀티플렉서를 더 포함하는,
    프로세서.
KR1020107015249A 2007-12-12 2008-12-11 멀티스레드 프로세서를 위한 공유된 인터럽트 제어기 KR101146462B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/954,615 US7984281B2 (en) 2005-10-18 2007-12-12 Shared interrupt controller for a multi-threaded processor
US11/954,615 2007-12-12
PCT/US2008/086435 WO2009076531A2 (en) 2007-12-12 2008-12-11 Shared interrupt controller for a multi-threaded processor

Publications (2)

Publication Number Publication Date
KR20100100959A true KR20100100959A (ko) 2010-09-15
KR101146462B1 KR101146462B1 (ko) 2012-05-21

Family

ID=40513827

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107015249A KR101146462B1 (ko) 2007-12-12 2008-12-11 멀티스레드 프로세서를 위한 공유된 인터럽트 제어기

Country Status (6)

Country Link
US (1) US7984281B2 (ko)
EP (1) EP2071456A3 (ko)
JP (1) JP5329563B2 (ko)
KR (1) KR101146462B1 (ko)
CN (1) CN101918920B (ko)
WO (1) WO2009076531A2 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702889B2 (en) * 2005-10-18 2010-04-20 Qualcomm Incorporated Shared interrupt control method and system for a digital signal processor
US8825926B2 (en) * 2009-04-13 2014-09-02 Microchip Technology Incorporated Processor with assignable general purpose register set
JP4897851B2 (ja) * 2009-05-14 2012-03-14 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システム及びコンピュータ・システムの制御方法
US8195909B2 (en) 2009-10-05 2012-06-05 Seagate Technology Llc Data management in a data storage system
US9645823B2 (en) 2011-03-03 2017-05-09 Hewlett-Packard Development Company, L.P. Hardware controller to choose selected hardware entity and to execute instructions in relation to selected hardware entity
US8738830B2 (en) * 2011-03-03 2014-05-27 Hewlett-Packard Development Company, L.P. Hardware interrupt processing circuit
US9189283B2 (en) 2011-03-03 2015-11-17 Hewlett-Packard Development Company, L.P. Task launching on hardware resource for client
US8762615B2 (en) * 2011-12-21 2014-06-24 International Business Machines Corporation Dequeue operation using mask vector to manage input/output interruptions
US9075639B1 (en) * 2012-10-23 2015-07-07 Altera Corporation Systems and methods for handling interrupts during software design simulation
WO2014125324A1 (en) * 2013-02-12 2014-08-21 Freescale Semiconductor, Inc. A method of and circuitry for controlling access by a master to a peripheral, a method of configuring such circuitry, and associated computer program products
US9223728B2 (en) * 2013-03-12 2015-12-29 International Business Machines Corporation Servicing a globally broadcast interrupt signal in a multi-threaded computer
US9311138B2 (en) * 2013-03-13 2016-04-12 Intel Corporation System management interrupt handling for multi-core processors
US8782294B1 (en) * 2013-06-14 2014-07-15 Texas Instruments Incorporated Intra-processor resource control
US8782293B1 (en) * 2013-06-14 2014-07-15 Texas Instruments Incorporated Intra-processor operation control
CN103646000B (zh) * 2013-12-26 2015-11-25 北京控制工程研究所 一种适用于多路热备份数据传输的高可靠中断处理方法
US9760511B2 (en) * 2014-10-08 2017-09-12 International Business Machines Corporation Efficient interruption routing for a multithreaded processor
US9665376B2 (en) 2014-12-15 2017-05-30 International Business Machines Corporation Sharing program interrupt logic in a multithreaded processor
KR102365113B1 (ko) * 2015-05-27 2022-02-18 삼성전자주식회사 적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트, i/o 디바이스 및 시스템
US10013279B2 (en) * 2015-07-28 2018-07-03 International Business Machines Corporation Processing interrupt requests
US9977677B2 (en) * 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10031834B2 (en) * 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10031833B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
CN106569889A (zh) * 2016-11-09 2017-04-19 上海斐讯数据通信技术有限公司 一种中断处理系统及方法
US10540250B2 (en) 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10296442B2 (en) 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US10459824B2 (en) 2017-09-18 2019-10-29 Microsoft Technology Licensing, Llc Cache-based trace recording using cache coherence protocol data
US10558572B2 (en) 2018-01-16 2020-02-11 Microsoft Technology Licensing, Llc Decoupling trace data streams using cache coherence protocol data
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10496537B2 (en) 2018-02-23 2019-12-03 Microsoft Technology Licensing, Llc Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache
US10642737B2 (en) 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
CN116401990B (zh) * 2023-01-30 2023-10-20 芯华章科技(北京)有限公司 处理中断事件的方法、装置、系统和存储介质

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4689739A (en) 1983-03-28 1987-08-25 Xerox Corporation Method for providing priority interrupts in an electrophotographic machine
US4901307A (en) 1986-10-17 1990-02-13 Qualcomm, Inc. Spread spectrum multiple access communication system using satellite or terrestrial repeaters
JPS63298636A (ja) * 1987-05-29 1988-12-06 Nec Corp 割り込み回路
US5193187A (en) * 1989-12-29 1993-03-09 Supercomputer Systems Limited Partnership Fast interrupt mechanism for interrupting processors in parallel in a multiprocessor system wherein processors are assigned process ID numbers
US5103459B1 (en) 1990-06-25 1999-07-06 Qualcomm Inc System and method for generating signal waveforms in a cdma cellular telephone system
JPH0743653B2 (ja) * 1990-07-25 1995-05-15 株式会社東芝 割込みコントローラ
US5305455A (en) * 1990-12-21 1994-04-19 International Business Machines Corp. Per thread exception management for multitasking multithreaded operating system
US5524250A (en) * 1991-08-23 1996-06-04 Silicon Graphics, Inc. Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers
JPH05274245A (ja) * 1992-01-28 1993-10-22 Toshiba Corp マイクロコントローラユニット
US5805922A (en) * 1994-05-02 1998-09-08 Motorola, Inc. Queued serial peripheral interface having multiple queues for use in a data processing system
US6260057B1 (en) * 1995-03-01 2001-07-10 Sun Microsystems, Inc. Apparatus and method for high performance implementation of system calls
JPH0997177A (ja) * 1995-09-29 1997-04-08 Toshiba Corp コンピュータシステムの割り込み制御方式
JPH10143375A (ja) * 1996-11-14 1998-05-29 Nec Corp 割り込み制御回路
US6233599B1 (en) * 1997-07-10 2001-05-15 International Business Machines Corporation Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
US5904733A (en) * 1997-07-31 1999-05-18 Intel Corporation Bootstrap processor selection architecture in SMP systems
US6032245A (en) 1997-08-18 2000-02-29 International Business Machines Corporation Method and system for interrupt handling in a multi-processor computer system executing speculative instruction threads
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6163829A (en) 1998-04-17 2000-12-19 Intelect Systems Corporation DSP interrupt control for handling multiple interrupts
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6317820B1 (en) 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6480818B1 (en) * 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6253304B1 (en) * 1999-01-04 2001-06-26 Advanced Micro Devices, Inc. Collation of interrupt control devices
US7065633B1 (en) * 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6754690B2 (en) * 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
US20010052053A1 (en) * 2000-02-08 2001-12-13 Mario Nemirovsky Stream processing unit for a multi-streaming processor
JP2002073374A (ja) * 2000-08-30 2002-03-12 Canon Inc 割り込みシミュレーション方法及び装置
US6839792B2 (en) 2000-12-15 2005-01-04 Innovative Concepts, Inc. Data modem
US20020103847A1 (en) * 2001-02-01 2002-08-01 Hanan Potash Efficient mechanism for inter-thread communication within a multi-threaded computer system
US20020161957A1 (en) * 2001-02-09 2002-10-31 Guillaume Comeau Methods and systems for handling interrupts
US20020144004A1 (en) * 2001-03-29 2002-10-03 Gaur Daniel R. Driver having multiple deferred procedure calls for interrupt processing and method for interrupt processing
US7058948B2 (en) * 2001-08-10 2006-06-06 Hewlett-Packard Development Company, L.P. Synchronization objects for multi-computer systems
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
JP4035004B2 (ja) * 2002-06-26 2008-01-16 株式会社ルネサステクノロジ 情報処理装置
US6971103B2 (en) * 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
CN1720503A (zh) * 2002-10-15 2006-01-11 沙桥技术有限公司 在多线程处理器中用于高速线程间中断的方法和设备
US7203823B2 (en) * 2003-01-09 2007-04-10 Sony Corporation Partial and start-over threads in embedded real-time kernel
US20050050305A1 (en) 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7774585B2 (en) * 2003-11-12 2010-08-10 Infineon Technologies Ag Interrupt and trap handling in an embedded multi-thread processor to avoid priority inversion and maintain real-time operation
US7487503B2 (en) * 2004-08-12 2009-02-03 International Business Machines Corporation Scheduling threads in a multiprocessor computer
US8176489B2 (en) * 2004-12-09 2012-05-08 International Business Machines Corporation Use of rollback RCU with read-side modifications to RCU-protected data structures
US20060206902A1 (en) 2005-03-14 2006-09-14 Sujat Jamil Variable interleaved multithreaded processor method and system
US7917907B2 (en) 2005-03-23 2011-03-29 Qualcomm Incorporated Method and system for variable thread allocation and switching in a multithreaded processor
US7702889B2 (en) 2005-10-18 2010-04-20 Qualcomm Incorporated Shared interrupt control method and system for a digital signal processor

Also Published As

Publication number Publication date
KR101146462B1 (ko) 2012-05-21
US7984281B2 (en) 2011-07-19
EP2071456A3 (en) 2009-12-30
US20080091867A1 (en) 2008-04-17
CN101918920A (zh) 2010-12-15
JP2011507109A (ja) 2011-03-03
EP2071456A2 (en) 2009-06-17
CN101918920B (zh) 2014-08-27
WO2009076531A3 (en) 2009-07-30
WO2009076531A2 (en) 2009-06-18
JP5329563B2 (ja) 2013-10-30

Similar Documents

Publication Publication Date Title
KR101146462B1 (ko) 멀티스레드 프로세서를 위한 공유된 인터럽트 제어기
US10360162B2 (en) Processing systems and methods for transitioning between privilege states based on an address of a next instruction to be fetched
US20240078113A1 (en) Control Transfer Termination Instructions Of An Instruction Set Architecture (ISA)
KR101146359B1 (ko) 로크 표시기를 갖는 멀티스레드 프로세서
US20200364054A1 (en) Processor subroutine cache
US11132199B1 (en) Processor having latency shifter and controlling method using the same
US8782380B2 (en) Fine-grained privilege escalation
JP2004516548A (ja) 予め格納されるベクトルの割込処理システムおよび方法
KR101148340B1 (ko) 버스 액세스 요청의 선택적 배제
US7996660B2 (en) Software controlled CPU pipeline protection
US8874884B2 (en) Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold
US20080010426A1 (en) Processor system and processing method for operating system program in processor system
KR100532417B1 (ko) 디지털 신호 처리장치의 저전력 소비형 캐시 메모리 장치및 이에 대한 제어방법
US20190286567A1 (en) System, Apparatus And Method For Adaptively Buffering Write Data In A Cache Memory
US20220043908A1 (en) Mitigation of return stack buffer side channel attacks in a processor
US20220197656A1 (en) Instruction and logic for code prefetching
WO2007057831A1 (en) Data processing method and apparatus
US20060101291A1 (en) System, method, and apparatus for reducing power consumption in a microprocessor
US8171270B2 (en) Asynchronous control transfer
CN112585584A (zh) 用于处理引起异常的事件的装置和方法

Legal Events

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

Payment date: 20160330

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee