KR100578437B1 - 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘 - Google Patents

다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘 Download PDF

Info

Publication number
KR100578437B1
KR100578437B1 KR1020047001244A KR20047001244A KR100578437B1 KR 100578437 B1 KR100578437 B1 KR 100578437B1 KR 1020047001244 A KR1020047001244 A KR 1020047001244A KR 20047001244 A KR20047001244 A KR 20047001244A KR 100578437 B1 KR100578437 B1 KR 100578437B1
Authority
KR
South Korea
Prior art keywords
interrupt
processor
register
value
execution
Prior art date
Application number
KR1020047001244A
Other languages
English (en)
Other versions
KR20040023692A (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 KR20040023692A publication Critical patent/KR20040023692A/ko
Application granted granted Critical
Publication of KR100578437B1 publication Critical patent/KR100578437B1/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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Abstract

본 발명은 다중 스레드를 동시에 지원하는 프로세서 상에서 인터럽트를 처리하는 메커니즘을 제공한다. 프로세서의 리소스는 다중 논리 프로세서를 제공하기 위해 할당된다. 공통 인터럽트에 응답하여, 논리 프로세서는 공유 레지스터에 액세스하기 위해 경쟁한다. 공유 레지스터에 액세스하는 처음 논리 프로세서가 공통 인터럽트르 처리한다. 나머지 논리 프로세서는 인터럽트로부터 회귀한다.
인터럽트, 다중 스레드, 논리 프로세서, 공유 레지스터, 컴퓨터 시스템

Description

다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘{MECHANISM FOR INTERRUPT HANDLING IN COMPUTER SYSTEMS THAT SUPPORT CONCURRENT EXECUTION OF MULTIPLE THREADS}
본 발명은 컴퓨터 시스템에 관한 것인데, 특정하게는, 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트를 처리하는 메커니즘에 관한 것이다.
최근의 고성능 프로세서는 각 클럭 사이클에서 다수의 명령을 실행하도록 디자인된다. 이 목적을 위해, 프로세서들은, 전형적으로는, 명령의 병렬 처리를 촉진시키기 위해 광범위한 규모의 실행 리소스를 포함한다. 이런 리소스의 효율적인 사용은 병렬로 처리될 수 있는 명령의 가용성에 의해 제한된다. 병렬 실행에 대한 명령의 가용성은 명령 레벨 병렬성(instruction level parallelism, ILP)이라고 불리운다. 명령 의존성은 단일 실행 스레드(thread)에서 동원될 수 있는 ILP를 제한시킨다. 단 하나의 실행 스레드가 한 시각에 처리될 수 있는 것이라면, 명령 처리량은 그에 따라 감소된다.
명령 처리량을 증가시키는 한 접근법은, 두개 또는 그 이상의 명령 스레드로부터의 명령을 병행 실행시킬 수 있는 프로세서를 디자인하는 것이다. 서로 다른 스레드로부터의 명령은 독립적이기 때문에, 두개 또는 그 이상의 명령 스레드의 벼병행 실행은 명령 처리량을 증가시킨다.
단일 프로세서 패키지에서 다수의 스레드의 병행 실행을 지원하기 위해 여러가지의 디자인이 구현되었다. 예를 들어, 다중 코어 프로세서는 단일 프로세서 칩 상에서 다수의 실행 코어를 포함한다. 여러 리소스가 다이 영역을 절감하기 위해서 또는 실행 스레드들 중에서 소통을 이루어 주기 위해서 공유될 수 있기는 하지만, 각각의 실행 코어는 서로 다른 하나의 명령 스레드에 할당될 수 있다. 다수의 프로세서 칩은 시스템의 나머지의 것에 단일 인터페이스를 제공하는 다중 칩 모듈속에 결합될 수 있다.
다중 스레드된 프로세서는 단일 실행 코어 상에서 다수의 명령 스레드의 실행을 관리하는 리소스를 포함한다. 스레드 관리 유닛은 다중 스레드에 대한 상태 데이터의 온-칩 저장을 제공하고 서로 다른 스레드로부터의 명령이 공유된 코어에 의해 처리됨에 따라 데이터를 갱신한다.
코스 그레인드(coarse-grained) 다중 스레드된 프로세서는 한 시각에 단 하나의 스레드로부터의 명령을 실행하나, 다중 스레드에 대한 상태 데이터의 온-칩 저장은 서로 다른 스레드들 사이에서의 스위칭 명령 실행(콘텍스트 스위치)과 관련된 오우버헤드를 감소시킨다. 스레드 스위칭은, 현재 실행 중인 스레드가 긴 레이턴시 이벤트(스위치-온-이벤트 다중-스레딩 또는 SOEMT)에 직면하였을 때, 트리거될 수 있다.
파인 그레인드(fine-grained) 다중 스레드된 프로세서는 다수의 스레드로부터의 명령이 병행 실행되도록 하는 것을 허용해 준다. 예를 들어, 명령은 각각의 클럭 사이클 상에서 다수의 스레드로부터 발행될 수 있거나, 명령은 서로 다른 클럭 사이클 상에서 서로 다른 스레드로부터 발행될 수 있다. 두가지 모두의 경우에, 다수의 스레드로부터의 명령은 동일 시간에 실행 코어에서 실행중(in-flight)일 수 있다.
일반적으로, 다중 스레드된 프로세서 및 다중 코어 프로세서의 양자는 하나 이상의 스레드의 콘텍스트(context)가 동일 시각에 프로세서에서 활성화되도록 허용해 준다. 다중 코어 프로세서에서는, 코어의 일부 또는 전부가 다중 스레드될 수 있다. 여기서, 콘텍스트는 특정 프로세서 아키텍쳐에 대한 스레드의 구조적 상태를 기억하는 레지스터를 가리키고, 일반적인 제어 및 애플리케이션 레지스터를 포함할 수 있다. 다중 스레드 콘텍스트("다중 콘텍스트 프로세서")를 지원하는 이런 프로세서들의 성능상 이점은, 부분적으로는, 다중의 동등한 논리적 프로세서로 나타나 보이는 이런 프로세서들의 용량에 의존한다. 이 동등성은, 논리 프로세서 중에서의 작업량의 균형을 촉진시키고, 오퍼레이팅 시스템에 의한 스레드의 관리를 단순화한다. 목적은, 실효적으로, 다중 콘텍스트 프로세서가 대칭 다중 프로세서(SMP) 시스템으로서 나타나 보이도록 만드는 것이다.
다중 스레드 간의 대칭성을 향상시키기 위해서, 어떤 리소스가 다중 콘텍스트 프로세서의 각각의 논리 프로세서에 대해 복제된다. 예를 들어, 인터럽트 유닛은 전형적으로는 각각의 논리 프로세서와 연관되어 논리 프로세서와 다중 콘텍스트 프로세서의 시스템 레벨 리소스 또는 공유 리소스 사이의 인터페이스를 제공한다. 인터럽트 유닛은 인터럽트가 처리되어야 하는 지의 여부를 결정하고, 인터럽트가 받아들여졌다면 인터럽트 처리 코드에게 포인터를 제공한다.
각각의 논리 프로세서에 대해 인터럽트 유닛을 제공하는 것의 한 단점은, 인터럽트, 특히 논리 프로세서에 의해 공유되는 리소스와 관련된 인터럽트가 자주 모든 논리 프로세서에게 보인다는 것이다. 예를 들어, 다중 콘텍스트 프로세서는 단일 인터럽트 핀을 제공하여 단일 스레드된 디자인과 패키지 레벨 호환성을 유지한다. 핀 상에 어저트(assert)된 인터럽트는 모든 논리 프로세서의 인터럽트 유닛에 의해 보여진다. 시스템과의 팬(fan) 실패는 이런 인터럽트를 트리거할 수 있다. 이들의 동등성 때문에, 각각의 인터럽트 유닛은 인터럽트를 레지스터하고 그 관련된 논리 프로세서는 인터럽트 핸들러를 실행한다. 공유 온-칩 리소스에 의해 발생되거나 또는 시스템 또는 전용 인터럽트 버스 상에서 수신된 인터럽트는 유사한 방식으로 보여지거나 처리될 수 있다. 많은 경우에, 이 인터럽트는 논리 프로세서 중 하나에 의해서 처리되었을 수 있는데, 그러나, 논리 프로세서의 대칭 컨피규레이션은 각각이 이 인터럽트 코드를 실행하도록 강제한다.
본 발명은 다중 스레드의 병행 실행을 지원하는 프로세서에서의 인터럽트 처리와 관련된 이러저러한 이슈들을 해결하는 것에 관한 것이다.
본 발명은 다음 도면들을 참조하여 이해될 수 있는데, 이 도면에서, 유사 소자들은 유사 번호에 의해 표시된다. 이런 도면들은 본 발명의 선택된 실시예를 예시하기 위해 제공되었고 본 발명의 범위를 제한시키는 의도로 쓰인 것은 아니다.
[도면의 간단한 설명]
도1은 본 발명이 구현될 수 있는 컴퓨터 시스템의 블럭도이다.
도2는 본 발명에 따른 다중 코어 프로세서의 블럭도이다.
도3은 본 발명에 따른 다중 스레드된 프로세서의 블럭도이다.
도4는 본 발명에 따라 인터럽트를 처리하기 위한 방법의 일 실시예를 나타낸흐름도이다.
도5는 본 발명에 따라 인터럽트를 처리하는 방법의 또다른 실시예를 나타낸 흐름도이다.
이후의 논의에서는, 본 발명의 철저한 이해를 도모하기 위해 다수의 특정 상세 사항이 개시된다. 그러나, 본 분야의 기술에 익숙한 자는, 본 개시를 보고서, 본 발명이 이러한 특정 상세 사항에 구애받지 않고서도 실시될 수 있다는 점을 알 것이다. 또한, 여러가지의 공지된 방법, 프로시져, 소자, 및 회로는 본 발명의 특징에만 주의를 기울이도록 하기 위해 상세히 설명되지 않았다.
도1은 본 발명이 구현될 수 있는 컴퓨터 시스템(100)의 일 실시예를 나타내는 블럭도이다. 컴퓨터 시스템(100)은 메모리(160)에 기억된 명령을 실행하기 위한 다중 콘텍스트 프로세서(110)를 포함한다. 데이터 및 명령은 채널(180)을 통해서 프로세서(110) 및 메모리(160) 사이에 결합된다. 채널(180)은 칩셋 또는 시스템 로직(도시 안됨)의 제어 하에 있는 하나 또는 그 이상의 버스를 포함할 수 있다.
시스템(100)에 대해서, 메모리(160)는, 인터럽트에 응답하여, 다중 콘텍스트 프로세서(110) 상의 리소스에 의해 실행되는 인터럽트 핸들러(interrupt handler)(170)를 저장한다. 메모리(160)는 캐시 및 주 메모리와 같이 휘발성 메모리 구조를 나타내거나 플래시 메모리, 하드 및 소프트 드라이브와 같이 비휘발성 메모리를 나타낼 수 있다. 본 발명의 일 실시예에서, 인터럽트 핸들러(170)의 일부분은 펌웨어로서 구현되면서, 다른 부분은 주 메모리에 저장될 수 있다.
다중 콘텍스트 프로세서((110)의 로직은, 자신들과 각각 관련된 인터럽트 유닛 130(1) 내지 130(n)을 포함하는 논리 프로세서 120(1) 내지 120(n)(총칭으로는 논리 프로세서 120)와 공유 리소스(140)로 나타내어진다. 예를 들어, 각각의 논리 프로세서(120)는 특정 스레드에 할당된 리소스를 나타낼 수 있고, 공유 리소스(140)는 모든 논리 프로세서(120) 상의 스레드에 쓸 수 있는 프로세서(110)의 리소스를 나타낼 수 있다.
시스템(100)의 개시된 실시예에 대해서, 공유 리소스(140)는 각각의 논리 프로세서(120)에 접근 가능한 인터럽트 클레임 레지스터(ICR)(150)를 포함한다. 이후에 자세히 설명되는 대로, ICR(150)은 하나의 논리 프로세서(120)가 나머지 논리 프로세서에게 신호를 보내어 자신이 인터럽트를 처리할 것임을 알리는 메커니즘을 제공한다. 공유 리소스(140)는 또한 메모리(160) 또는 주변 디바이스(도시 안됨)와 통신하는 데에 쓰이는 하이 레벨 캐시 또는 버스 로직을 포함할 수 있다.
인터럽트 유닛(130)은 인터럽트를 처리하는 논리 프로세서(120)와 관련된 기능 블럭을 나타낸다. 어떤 인터럽트들은 논리 프로세서(120) 중의 임의의 것에 의해 처리될 수 있다. 예를 들어, 프로세서 및 시스템 상의 공유 리소스(140)에서 기원하는 어떤 인터럽트 또는 프로세서 패키지 밖에 있는 리소스에 의해 발생된 플랫폼 레벨 인터럽트들은 전형적으로는 임의의 논리 프로세서(120)에 의해 처리될 수 있다. 이들은 프로세서 패키지 상의 외부 핀(104) 또는 버스를 통해서, 또는 프로세서(110)의 내부 회로를 통해서 통신될 수 있다. 다음의 논의에서, 이런 등등의 인터럽트는, 이들을 특정 논리 프로세서를 타깃으로 하는 인터럽트로부터 구별하기 위해, 공통 인터럽트라고 지칭한다.
인터럽트 유닛 130(1) 내지 130(n)은, 각각, 120(1) 내지 120(n)까지의 논리 프로세서용의 공통 인터럽트를 등록한다. 예를 들어, 각각의 인터럽트 유닛(130)은, 인터럽트가 즉각적인 처리를 마땅히 받아야 하는지, 예를 들어, 이 인터럽트를 트리거한 이벤트가 현재 실행중인 스레드에 대해 우선권을 가져야 하는지의 여부를 판정하기 위해, 임의의 마스킹 조건과 함께 인터럽트에 부여된 우선 순위를 평가한다. 인터럽트 유닛(130)이 이 인터럽트가 우선 순위를 갖는다고 판정했을 경우에, 이는 그 관련 논리 프로세서(120)로 하여금 적합한 인터럽트 처리 루틴으로 분기하도록 한다. 본 발명은 하나의 논리 프로세서(120)가 모든 논리 프로세서(120)에 의해 등록된 인터럽트에 대해 전체 인터럽트 처리 루틴을 실행하도록 하여 주는 메커니즘을 제공한다. 이 메커니즘은, 임의로 인터럽트를 논리 프로세서(120)로 배정하는 것과 같이 논리 프로세서(120)에게 비대칭성을 부여하는 것을 하지 않고서 이를 이뤄낸다.
시스템(100)의 일 실시예에서, 인터럽트 유닛 130(1) 내지 130(n)은 논리 프로세서 120(1) 내지 120(n)에 대한 공통 인터럽트를 등록한다. 인터럽트가 우선 순위를 갖는다면, 인터럽트 유닛 130(1) 내지 130(n)은, 각각, 논리 프로세서 120(1) 내지 120(n)로 하여금 인터럽트 핸들러(170)로 분기하도록 한다. 논리 프로세서 120(1) 내지 120(n)의 각각은, 각 프로세서로 하여금 ICR(150)에 액세스하도록 하는 인터럽트 핸들러(170)의 제1 코드 세그먼트를 실행한다. ICR(150)에 성공적으로 액세스하는 최초의 논리 프로세서(120)는 인터럽트의 처리를 완료시키고, 나머지 논리 프로세서(120)는 자신의 스레드의 실행을 재개한다.
본 발명의 일 실시예에서, ICR(150)은 제1 값으로 초기화되고, 공통 인터럽트 후에 제1 값으로 리셋된다. 인터럽트 핸들러(160)의 초기 코드 세그먼트는 각각의 논리 프로세서(120)로 하여금 현재 ICR(150) 내에 있는 값을 판독하고 제2 값을 ICR(150)에 기입하도록 한다. 제2 값이 제1 값과 다르다면, ICR(150)을 판독하는 최초의 논리 프로세서(120)는 제1 값을 본다. 모든 다른 논리 프로세서(120)는 제2 값을 본다. 제1 값을 판독하는 논리 프로세서는 인터럽트 핸들러 실행하기를 계속한다. 나머지 논리 프로세서는 제2 값을 판독하고, 이는 이들에게 인터럽트로부터 복귀하도록, 예를 들어, 이들의 인터럽트된 스레드의 실행을 재개하도록 신호를 보낸다.
논리 프로세서(120)는 로크(lock) 단계에서 공통 인터럽트에 반드시 응답할 필요는 없다. 인터럽트가 일어날 때 실행되고 있는 스레드의 유형, 그 우선순위 또는, 현재 실행 중인 명령의 유형조차도 논리 프로세서(120)가 ICR(150)에 얼마나 빨리 액세스할 수 있는 지를 결정할 수 있다. 본 실시예에 따라서, 인터럽트 핸들러(170)는 한번에 단 하나의 프로세서에 의해 실행가능할 수 있는데, 이 경우에, 인터럽트 핸들러(170)를 실행하는 최초의 논리 프로세서는 ICR(150)에 액세스하는 제일 처음 것일 것이다.
다중 콘텍스트 프로세서(110)의 서로 다른 실시예들은 다른 방식으로 논리 프로세서(120)를 구현한다. 다중 콘텍스트 프로세서(110)의 다중 코어 실시예에서는, 각각의 논리 프로세서(120)는 한 실행 코어에 대응한다. 다중 콘텍스트 프로세서(110)의 다중 코어 실시예가 도2를 참조하여 설명된다. 다중 콘텍스트 프로세서(110)의 다중 스레드된 실시예에서, 각각의 논리 프로세서(120)는 특정 스레드에 할당된 단일 실행 코어의 리소스에 대응한다. 다중 콘텍스트 프로세서(110)의 다중 스레드된 실시예는 도3을 참조하여 설명된다. 다중 콘텍스트 프로세서(110)의 다른 실시예는, 예를 들어, 그중 일부가 또는 모두가 다중 스레드된 다수의 코어를 포함할 수 있다. 본 발명은 논리 프로세서가 프로세서에서 구현되는 특정 방식에 의존하지 않는다.
도2는 다중 콘텍스트 프로세서(110)의 다중 코어 실시예(210)을 나타내는 블럭도이다. 다중 코어 프로세서(210)는, 각각, n개까지의 스레드의 병행 실행을 지원해 주는, 실행 코어 220(1) 내지 220(n)과 이들의 대응하는 인터럽트 유닛 230(1) 내지 230(n)을 제공한다. 또한 도시된 것은 인터럽트 클레임 레지스터(ICR)(250)를 포함하는 공유 리소스(240)이다. 다중 코어 프로세서(210)의 개시된 실시예에서, ICR(250)은 버스(254)를 통해서, 실행 코어 220(1) 내지 220(n)에 의해 액세스된다.
공통 인터럽트에 응답하여, 각각의 인터럽트 유닛(230)은 이 인터럽트가 우선권을 갖고 있는 지를 판정하고, 만약 그렇다면, 이는 그 대응하는 실행 코어(220)로 하여금 인터럽트 핸들러로 분기하도록 한다. 인터럽트 핸들러의 제1 부분의 제어 하에서, 실행 코어들(220)은 ICR(250)에 대한 액세스를 하기 위해 경쟁한다. ICR(250)에 먼저 액세스하는 첫 번째 것은 인터럽트 핸들러를 완료시킨다. 나머지 실행 코어들은 이들의 인터럽트된 스레드를 재개한다. 다중 코어 프로세서(210)의 다른 실시예에서는, 실행 코어 220(1) 내지 220(n) 중의 하나 또는 그 이상의 것이 또한 다중 스레드될 수 있고, 이 경우에, 각각의 코어 상의 각각의 스레드는 ICR(250)에 먼저 액세스하기 위해 시도한다.
본 발명의 일 실시예에서, 제1 코드 세그먼트는 각각의 논리 프로세서(220)가 ICR(250)을 판독하도록 야기한다. 논리 프로세서(220)가 ICR(250)의 제1 값을 판독하였다면, 이는 인터럽트 핸들러의 나머지의 것을 실행하기 위해 진행한다. 만약 논리 프로세서(220)가 ICR(250)의 제2 값을 판독하였다면, 이는 인터럽트 전에 실행하고 있었던 스레드 명령을 실행하기를 재개할 것이다. 단 하나의 논리 프로세서(220)만이 제1 값을 판독하도록 하는 것을 보장하기 위해, 초기 코드 세그먼트는 "테스트 및 설정" 동작과 같이, 원자(atomic) 판독-변경-기입 동작을 채택할 수 있다. 예로, ICR(250)의 제1 값이 제로이면, 인터럽트 핸들러(170)는 ICR(250)의 값을 판독할 것이고, 1을 ICR(250)에 원자적으로 기입할 수 있다. 즉, 판독-변경-기입 동작은 ICR(250)을 다른 논리 프로세서로 양도하지 않고서 실행된다. 이 실시예에서, ICR(250)에 도달한 최초의 논리 프로세서만이 제로값을 판독한다. 모든 다른 논리 프로세서들은 ICR(250)에 액세스했던 최초의 논리 프로세서에 의해 ICR(250)에 기입된 값인 1을 판독할 것이다.
앞에서 설명한 실시예는 어느 논리 프로세서가 공통 인터럽트를 처리할 것인지를 판정하는 "레이스 투 플래그(race to flag)" 메커니즘의 한 예이다. 플래그는 레지스터에 저장될 수 있고 로크 변수(lock variable) 또는 유사하게 저장된 비트(들)일 수 있고, 이는 각각의 논리 프로세서에 의해 액세스될 수 있다. 이런 플래그를 지배하는 판독/기입 규칙은 독립적으로 동작하는 각각의 논리 프로세서가 공통 인터럽트를 처리하는 것을 책임질 지의 여부를 판정하도록 하여준다.
도3은 다중 콘텍스트 프로세서(110)의 다중 스레드된 실시예(310)를 나타내는 블럭도이다. 다중 스레드된 프로세서(310)는 n개의 서로 다른 스레드들까지의 명령의 병행 처리를 허용해 주는 실행 코어(304)를 포함한다. 실행 코어(304)는 파이프라인으로서 나타내어지는 데, 여기서, 여러 스테이지는 n 개의 스레드 중의 하나에 할당되거나 (블럭 324(1) 내지 324(n), 326(1) 내지 326(n), 328(1) 내지 328(n), 330(1) 내지 330(n)), 또는 n개의 스레드 중에서 공유된다 (블럭 340(a) 내지 340(c) 및 ICR350). 예를 들어, 블럭 340(a), 340(b) 및 340(c)는 공유 명령 캐시, 공유 레지스터 재명명 유닛, 및 공유 데이터 캐시를 나타낼 수 있다. 블럭 324(1) 내지 324(n), 블럭 326(1) 내지 326(n), 블럭 328(1) 내지 328(n), 블럭 330(1) 내지 330(n)은, 각각, 페치 유닛, 디코드 유닛, 실행 유닛, 및 인터럽트 유닛의 일부분을 나타낼 수 있는데, 이들은 스레드 1 내지 n 에 할당된다. 주어진 논리 프로세서에 할당된 리소스는 도3을 단순화하기 위한 목적으로 수직 정렬된 것으로 도시되었다. 이는 스레드에 할당된 리소스가 어떤 순서를 갖는다는 것을 표시하기 위한 것이 아니다.
프로세서(310)의 개시된 실시예에서, 논리 프로세서 320(1)는 할당된 리소스 324(1), 326(1), 328(1) 및 330(1)에 의해 나타내어지고, 논리 프로세서 320(n)은 할당된 리소스 324(n), 326(n), 328(n), 및 330(n)에 의해 나타내어진다. 이는 예시 목적으로 이뤄진 것이다. 다른 표현 방식은 대응하는 스레드에 의해 현재 사용되는 공유 리소스 340(a) 내지 340(c)의 일부분을 포함할 수 있다.
인터럽트 유닛(330)은, 프로세서(310)의 다른 할당된 리소스와 같이, 물리적으로 구별된 유닛일 필요는 없다. 예를 들어, 이들은 프로세서(310) 상에서 실행되는 개별 스레드에 할당된 단일 인터럽트 유닛의 일부분을 나타낼 수 있다. 공통 인터럽트에 응답하여, 인터럽트 유닛 330(1) 내지 330(n)은 인터럽트를 등록하고, 이것이 처리되어야만 하는 지를 판정한다. 만약 이 인터럽트가 우선 순위를 가진다면, 인터럽트 유닛 330(1) 내지 330(n)은 논리 프로세서 320(1) 내지 320(n)로 하여금 인터럽트 처리 루틴(예컨대, 인터럽트 핸들러(170))를 실행하도록 한다. 각각의 논리 프로세서(320)는 인터럽트 처리 루틴의 제1 코드 세그먼트를 실행하는데, 이는 이것이 ICR(350)에 액세스하도록 야기한다. ICR(350)에 액세스하는 제1 논리 프로세서(320)는 인터럽트 처리 루틴의 나머지를 실행한다. 다른 논리 프로세서(320)는 이들의 인터럽트된 스레드로 복귀한다.
다중 코어 프로세서(210) 및 다중 스레드된 프로세서(310)의 구성은 예시적 목적으로만 제공되었다. 본 발명에서 사용하기에 적합한 다중 콘텍스트 프로세서의 다른 실시예는 다른 구성을 채택할 수 있다. 예를 들어, 다중 스레드된 프로세서의 스레드는 프론트 엔드 및 실행 리소스를 공유하고 레지스터 파일만을 복사할 수 있다. 프로세서 디자인 분야에 숙련되고 본 개시 내용을 알게 된 자는 본 발명과 함께 사용될 수 있는 다중 콘텍스트 프로세서의 다른 구성을 알 것이다.
도4는 공통 인터럽트에 응답하여 다중 콘텍스트 프로세서의 각각의 논리 프로세서에 의해 실행되는 방법(400)의 일 실시예를 나타내는 흐름도이다. 공통 인터럽트는 (410)에서 검출되고, 논리 프로세서는 (420)에서 인터럽트가 처리되어야만 하는 지의 여부를 판정한다. 예를 들어, 논리 프로세서의 인터럽트 유닛은 검출된 인터럽트가 현재 실행중인 명령 스레드에 대해 우선 순위를 갖는 지의 여부를 판정하기 위해 우선권 및 마스킹 비트를 조사할 수 있다. 인터럽트가 우선권을 갖지 않는다면, 방법(400)은 (470)에서 종료된다. 인터럽트가 (420)에서 우선권을 갖는다면, (430)에서 소정의 상태 정보가 현재 실행 중인 스레드의 적합한 포인트에서 저장되고, (440)에서 논리 프로세서는 지정된 어드레스에 있는 인터럽트 처리 루틴으로 분기된다. 인터럽트 유닛은, 이것이 인터럽트가 우선권을 갖는다고 판정하였다면, 전형적으로는 인터럽트 핸들러 어드레스를 제공한다.
제어를 인터럽트 핸들러에게 전송하기 전에 저장된 상태 정보는, 보통은 인터럽트 핸들러의 종료시에 논리 프로세서를 인터럽트된 명령 스레드로 복귀시킬 수 있는 최소량의 상태 정보이다. 이는 인터럽트 핸들러를 실행하는 것과 관련된 오버헤드를 감소시킨다.
인터럽트 처리 루틴으로 진입할 때에 논리 프로세서는, (450)에서 논리 프로세서로 하여금 인터럽트 클레임 레지스터(ICR)에 액세스하도록 하고, (460)에서 ICR에 저장된 값을 제1 값과 비교하도록 하는 코드의 제1 세그먼트를 실행한다. 만약 판독값이 제1 값과 동일하다면, 논리 프로세서는 (470)에서 인터럽트 처리 루틴을 속행한다. 만약 저장된 값이 제1 값과 동일하지 않다면, 논리 프로세서는 (480)에서 인터럽트로부터 복귀한다.
임의의 시간에 단 하나의 프로세서만이 ICR에 액세스하도록 보장해 주기 위해, 본 발명의 실시예는 ICR 또는 ICR에 액세스하는 데에 사용된 코드 세그먼트를 보호할 수 있다. 첫 번째 경우, 인터럽트 핸들러는 ICR을 변경키 위해 원자 판독-변경-기입 동작을 채택할 수 있다. 본 실시예에서, 논리 프로세서가 ICR에서 제1 값을 판독하였다면 이는 이후 판독 및 기입 동작 사이에서 ICR의 제어를 양도하지 않고서 ICR에 제2 값을 기입한다. ICR이 인터럽트 사이에서 제1 값으로 리셋되었다면, ICR을 판독하는 최초의 논리 프로세서는 ICR에서 제1 값을 판독하고 이를 제2 값으로 대체할 것이다. 동일한 인터럽트에 응답하여 첫 번째 논리 프로세서 후에 ICR을 판독하는 임의의 논리 프로세서는 제2 값을 판독하고 인터럽트 이전 활동을 재개할 것이다.
두 번째 경우, 인터럽트 핸들러의 제1 코드 세그먼트에 대한 액세스는 크리티컬 섹션 비트에 의해 제어된다. 제1 코드 세그먼트에 도달하는 최초의 논리 프로세서는 크리티컬 섹션 비트의 원자 판독-변경-기입을 실행하고, 비트의 값을 판독하고, 판독 및 기입 동작 사이에서 비트를 양도하지 않고서 제2 값을 비트에 기입한다. 판독값이 제1 코드 세그먼트가 언로크(unlock)되었다는 것을 표시하면, 논리 프로세서는 코드를 실행하여 ICR의 값을 판독한다. 크리티컬 섹션 비트에 기입된 제2 값은 어떠한 다른 논리 프로세서도 그 동안에 제1 코드 세그먼트를 실행할 수 없도록 하는 것을 보장해 준다. 판독값이 제1 코드 세그먼트가 로크되었다는 것을 표시하면, 논리 프로세서는 이것이 실행하고 있었던 스레드로 복귀할 수 있다. 단 하나의 논리 프로세서만이 어느 시각에 제1 코드 세그먼트를 실행할 수 있기 때문에, ICR의 판독 및 기입은 원자 동작을 요구하지 않는다. 이 분야에 익숙하고 본 개시 내용을 본 자는 단 하나의 논리 프로세서만이 공통 인터럽트의 소유권을 주장하는 것을 보장해 주기 위한 여러 다른 메커니즘을 알 것이다.
플래그(ICR, 로크 변수, 등등)가 공통 인터럽트에 응답하여 모든 논리 프로세서에 의해 일단 액세스되었다면, 플래그는 다음의 공통 인터럽트를 위해 제1 값으로 리셋되어야만 한다. 본 발명의 일 실시예에서, 공통 인터럽트에 응답하여 플래그를 판독하는 마지막 논리 프로세서는 이를 제1 값으로 리셋한다. 예를 들어, 플래그는 다중 콘텍스트 프로세서에 의해 지원되는 각각의 논리 프로세서에 대한 비트를 포함하도록 정의될 수 있다. 각각의 논리 프로세서가 플래그를 액세스함에 따라, 이는 대응하는 플래그 비트를 설정한다. 마지막 논리 프로세서는 그 대응하는 플래그 비트를 설정하고, 이는 플래그 내의 모든 비트를 제1 값으로 리셋한다.
또다른 실시예에서, 인터럽트 핸들러의 초기 코드 세그먼트는 논리 프로세서에게 계수 값(즉, 플래그)을 증분하고 증분된 계수값을 판독하도록 명령할 수 있다. 증분된 계수값이 프로세서 상에서 현재 활동중인 논리 프로세서의 수와 동일할 때, 논리 프로세서는 계수값을 제1 값으로 리셋한다. 증분된 계수값이 현재 활동중인 논리 프로세서의 수보다 작을 때, 논리 프로세서는 인터럽트로부터 복귀한다.
도5는 인터럽트를 처리하는 본 발명에 따라서 방법(500)의 일 실시예를 나타내는 흐름도이다. 방법(500)은 공통 인터럽트의 중복 처리가 인에이블되거나 디스에이블되도록 허용해 준다. 예를 들어, 모든 논리 프로세서가 머신 체크 또는 열 이벤트와 같은 경우처럼 공통 인터럽트에 응답하도록 하는 것이 필요할 때가 있다. 모든 논리 프로세서가 응답하도록 요구하는 이러저러한 공통 인터럽트에 대해서, 인터럽트의 중복 처리는 비트 ECH(인에이블 공통 처리)에 근거하여 인에이블될 수 있다. 본 시스템이 먼저 부팅되었을 때 또는 후에 특정 시스템 환경에 맞춰지도록변화되었을 때, 이 비트는 선택된 공통 인터럽트에 대해 설정될 수 있다.
방법(500)은 (510)에서 공통 인터럽트의 검출에 응답하여 개시된다. 논리 프로세서는 (520)에서 중복 인터럽트 처리가 인에이블되었는 지의 여부를 판정하기 위해 비트를 체크한다. 만약 이것이 인에이블되었다면, 논리 프로세서는 (530)에서, 다른 논리 프로세서가 하고 있는 것에 관계없이, 인터럽트 핸들러와 함께 진행한다. 비트가 (520)에서 중복 인터럽트 처리가 디스에이블되었다는 것을 표시하면, 논리 프로세서는 (540)에서 ICR을 체크하여 인터럽트의 소유권이 주장되었는 지의 여부를 판정한다. (550)에서 인터럽트가 주장되지 않았다고 판정되면, 논리 프로세서는 (530)에서 인터럽트 핸들러와 함께 진행한다. 상기 설명한 바 대로의 ICR에 대한 액세스를 제어하기 위한 메커니즘은 방법(500)에 적용될 수 있다. 만약 인터럽트가 (550)에서 주장되었다면, 논리 프로세서는 (560)에서 이것이 공통 인터럽트에 응답하는 마지막 스레드인지를 판정한다. 만약 그렇다면, 논리 프로세서는 (570)에서 ICR을 제1 값으로 리셋하고 (580)에서 인터럽트 핸들러로부터 복귀하여 인터럽트가 일어났을 때 이것이 처리하고 있었던 스레드의 실행을 재개한다. 만약 이것이 공통 인터럽트에 응답하는 마지막 스레드가 아니라면, 이는 (580)에서 ICR을 리셋하지 않고서 인터럽트 핸들러로부터 복귀한다. 앞에서 설명한 대로 논리 프로세서가 공통 인터럽트에 응답하는 마지막 스레드인지를 판정하고 그에 따라 ICR(즉, 플래그)을 리셋하는 방법(400) 메커니즘은 방법(500)에도 적용가능하다.
지금까지 다중 콘텍스트 프로세서를 포함하는 컴퓨터 시스템에서 어떤 인터럽트를 처리하는 메커니즘이 개시되었다. 다중 콘텍스트 프로세서 상의 논리 프로세서는 공통 인터럽트에 응답하여 공유 레지스터에 대한 액세스를 얻고자 경쟁한다. 공유 레지스터에 액세스하는 최초의 논리 프로세서는 인터럽트를 처리한다. 나머지 논리 프로세서는 인터럽트가 주장되었다는 것을 검출하고 인터럽트 핸들러로부터 복귀한다. 본 발명의 일 실시예에서, 인터럽트 핸들러는 공통 인터럽트 응답하여 패키지의 모든 논리 프로세서에 의해 실행되는 제1 코드 섹션을 포함한다. 공유 레지스터는 제1 값으로 초기화되고, 제1 코드 섹션은 각각의 논리 프로세서로 하여금 공유 레지스터를 판독하도록 한다. 공통 인터럽트를 따르는 공유 레지스터에 액세스하는 최초의 논리 프로세서는 제1 값을 판독하고, 제2 값을 기입하고, 인터럽트 핸들러 실행시키는 것을 계속한다. 나머지 논리 프로세서는 제2 값을 판독하는데, 이는 이들로 하여금 인터럽트 핸들러를 빠져 나가도록 한다.
본 발명의 또다른 실시예에서, 인에이블/디스에이블 비트는 공통 인터럽트가 중복적으로 처리될 것인지의 여부를 알려주기 위해 제공된다. 만약 비트가 디스에이블 상태에 있다면, 인터럽트는 첫 번째 논리 프로세서가 인터럽트 처리 루틴의 제1 세그먼트를 실행함으로써 공유 레지스터에 액세스하는 것으로 된다. 만약 비트가 인에이블 상태에 있다면, 제1 코드 세그먼트는 바이패스되고, 모든 논리 프로세서는 완료시까지 인터럽트 처리 루틴을 실행한다.
개시된 실시예는 본 발명의 여러 특징을 예시하기 위해 제공되었다. 본 발명은 다중 콘텍스트 프로세서를 채택한 컴퓨터 및 다른 프로세서 기반 시스템에 사용될 수 있다. 본 분야에 익숙하고 이 개시 내용을 아는 자는 개시된 실시예에 대한 이형 및 변형예를 알 것이며, 이는 첨부된 청구범위의 사상 및 범위내에 속하는 것이다.

Claims (22)

  1. 인터럽트에 응답하여 제1 논리 프로세서(logical processor)로 하여금 인터럽트 핸들러(interrupt-handler)로 분기하도록 하는 제1 인터럽트 유닛과,
    상기 인터럽트에 응답하여 제2 논리 프로세서로 하여금 상기 인터럽트 핸들러로 분기하도록 하는 제2 인터럽트 유닛과,
    상기 제1 및 제2 논리 프로세서 중의 하나가 상기 인터럽트를 처리해야 하는지를 나타내는 값을 기억하는 인터럽트 클레임 레지스터(interrupt claim register)
    를 포함하는 프로세서.
  2. 제 1항에 있어서, 상기 제1 및 제2 논리 프로세서는 상기 인터럽트 핸들러의 제어 하에서 상기 인터럽트 클레임 레지스터의 값을 판독하는 프로세서.
  3. 제 2항에 있어서, 상기 제1 논리 프로세서는 자신이 상기 인터럽트 클레임 레지스터를 최초로 판독한 경우에 상기 인터럽트를 처리하는 프로세서.
  4. 제 3항에 있어서, 상기 제2 논리 프로세서는 상기 제1 논리 프로세서가 상기 인터럽트를 처리한 경우에 상기 인터럽트 핸들러를 빠져나가는 프로세서.
  5. 제 4항에 있어서, 상기 제2 논리 프로세서는, 상기 제1 논리 프로세서에 의 해 기입된 상기 인터럽트 클레임 레지스터의 값을 판독함으로써 상기 제1 논리 프로세서가 상기 인터럽트를 처리한 것을 판정하는 프로세서.
  6. 인터럽트 클레임 레지스터 및 각각 대응하는 다수의 명령 스레드의 명령을 처리하기 위한 다수의 스레드 리소스를 포함하는 프로세서와,
    인터럽트에 응답하여, 상기 인터럽트 클레임 레지스터의 값을 판독하고 상기 판독된 값에 응답하여 상기 인터럽트를 처리하거나 명령 실행을 재개시키기 위해, 상기 다수의 스레드 리소스의 각각에 의해 실행가능한 명령을 포함하는 인터럽트 핸들러를 저장하는 메모리
    를 포함하는 시스템.
  7. 제6항에 있어서, 상기 다수의 스레드 리소스는 상기 프로세서의 다수의 실행 코어를 포함하는 시스템.
  8. 제6항에 있어서, 상기 다수의 스레드 리소스는 다수의 명령 스레드에 할당된 실행 코어의 다수의 리소스를 포함하는 시스템.
  9. 제6항에 있어서, 상기 인터럽트 핸들러는 상기 인터럽트 클레임 레지스터의 상기 값을 판독한 후에 제2값을 인터럽트 클레임 레지스터에 기입하기 위해 각각의 상기 스레드 리소스에 의해 추가로 실행가능한 명령을 포함하는 시스템.
  10. 제9항에 있어서, 상기 인터럽트 클레임 레지스터는 제1값을 기억하도록 초기화되고 상기 스레드 리소스들 중 상기 제1값을 판독하는 최초의 스레드 리소스는 이 값을 제2값으로 대체하고 상기 인터럽트를 처리하는 시스템.
  11. 제10항에 있어서, 상기 다수의 스레드 리소스의 나머지는 상기 인터럽트 클레임 레지스터의 상기 제2값을 판독한 것에 응답하여 상기 인터럽트로부터의 복귀를 실행하는 시스템.
  12. 인터럽트 핸들러가 저장된 메모리와,
    인터럽트 클레임 레지스터, 및 다수의 논리 프로세서를 지원하는 실행 리소스를 포함하는 프로세서 -상기 논리 프로세서의 각각은 인터럽트 신호에 응답하여 상기 인터럽트 핸들러를 이용하여 상기 인터럽트 클레임 레지스터에 액세스하기 위해 경쟁함-
    를 포함하는 시스템.
  13. 제12항에 있어서, 다수의 논리 프로세서를 지원하는 상기 실행 리소스는 다수의 실행 코어를 포함하는 시스템.
  14. 제13항에 있어서, 각각의 실행 코어는 상기 인터럽트 신호에 응답하여 상기 실행 코어의 제어가 상기 인터럽트 핸들러로 분기되도록 하는 인터럽트 유닛을 포함하는 시스템.
  15. 제13항에 있어서, 각각의 상기 실행 코어는, 상기 인터럽트 핸들러의 명령을 처리하여 상기 인터럽트 클레임 레지스터를 판독하고 상기 인터럽트 클레임 레지스터에서 판독된 값에 응답하여 상기 인터럽트 핸들러를 실행하기를 계속하거나 상기 인터럽트 핸들러로부터 복귀하는 시스템.
  16. 제15항에 있어서, 상기 실행 코어들 중 상기 인터럽트 클레임 레지스터를 판독하는 최초의 실행 코어는 상기 인터럽트 신호에 응답하여 상기 인터럽트 핸들러의 실행을 완료시키고 다른 실행 코어들은 상기 인터럽트 핸들러를 빠져나가는 시스템.
  17. 제12항에 있어서, 상기 논리 프로세서들 중 상기 인터럽트 클레임 레지스터에 액세스하는 최초의 논리 프로세서는 상기 인터럽트 핸들러의 실행을 완료시키는 시스템.
  18. 제17항에 있어서, 상기 최초의 논리 프로세서 후에 상기 인터럽트 클레임 레지스터에 액세스하는 상기 논리 프로세서는 상기 인터럽트 핸들러를 빠져나가는 시스템.
  19. 제12항에 있어서, 다수의 논리 프로세서를 지원하는 상기 실행 리소스는 다 수의 실행 코어를 포함하고, 상기 실행 코어중 적어도 하나는 다중 스레딩을 지원하는 시스템.
  20. 인터럽트에 응답하여 다중 콘텍스트 프로세서 상에서 현재 실행되는 각각의 스레드에 의해 구현되는 방법에 있어서,
    지정된 메모리 위치에 있는 인터럽트 핸들러에 액세스하는 단계와,
    인터럽트 클레임 레지스터의 값을 판독하기 위해 상기 인터럽트 핸들러를 실행하는 단계와,
    상기 인터럽트 클레임 레지스터로부터 판독된 상기 값이 제1값인 경우에, 상기 인터럽트 핸들러의 실행을 완료시키는 단계
    를 포함하는 방법.
  21. 제20항에 있어서, 상기 인터럽트 핸들러를 실행시키는 단계는, 상기 인터럽트 클레임 레지스터의 상기 값을 판독하는 단계와 상기 레지스터의 제어를 양도함이 없이 제2값을 상기 레지스터에 기입하는 단계를 포함하는 방법.
  22. 제20항에 있어서, 상기 인터럽트 클레임 레지스터로부터 판독된 상기 값이 상기 제2값인 경우에 상기 인터럽트 핸들러의 실행을 종료시키는 단계를 더 포함하는 방법.
KR1020047001244A 2001-08-31 2002-08-01 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘 KR100578437B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/945,419 US6779065B2 (en) 2001-08-31 2001-08-31 Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US09/945,419 2001-08-31
PCT/US2002/024672 WO2003021438A1 (en) 2001-08-31 2002-08-01 Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads

Publications (2)

Publication Number Publication Date
KR20040023692A KR20040023692A (ko) 2004-03-18
KR100578437B1 true KR100578437B1 (ko) 2006-05-11

Family

ID=25483060

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047001244A KR100578437B1 (ko) 2001-08-31 2002-08-01 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘

Country Status (10)

Country Link
US (1) US6779065B2 (ko)
JP (1) JP2005502119A (ko)
KR (1) KR100578437B1 (ko)
CN (1) CN1267822C (ko)
DE (1) DE10297166T5 (ko)
GB (1) GB2394099B (ko)
HK (1) HK1060784A1 (ko)
RU (1) RU2280272C2 (ko)
TW (1) TWI223771B (ko)
WO (1) WO2003021438A1 (ko)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181600B1 (en) 2001-08-02 2007-02-20 Mips Technologies, Inc. Read-only access to CPO registers
US7185183B1 (en) 2001-08-02 2007-02-27 Mips Technologies, Inc. Atomic update of CPO state
US7428485B2 (en) * 2001-08-24 2008-09-23 International Business Machines Corporation System for yielding to a processor
US7251814B2 (en) 2001-08-24 2007-07-31 International Business Machines Corporation Yield on multithreaded processors
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US7130948B2 (en) * 2002-08-02 2006-10-31 Bian Qiyong B Flexible interrupt handling methods for optical networking apparatuses with multiple multi-protocol optical networking modules
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US7961723B2 (en) 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US7334086B2 (en) 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US8478811B2 (en) * 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US20050033889A1 (en) * 2002-10-08 2005-02-10 Hass David T. Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US20050033831A1 (en) * 2002-10-08 2005-02-10 Abbas Rashid Advanced processor with a thread aware return address stack optimally used across active threads
US9088474B2 (en) * 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US7461215B2 (en) * 2002-10-08 2008-12-02 Rmi Corporation Advanced processor with implementation of memory ordering on a ring based data movement network
US8176298B2 (en) * 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US8015567B2 (en) 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US7924828B2 (en) * 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
US20050044324A1 (en) * 2002-10-08 2005-02-24 Abbas Rashid Advanced processor with mechanism for maximizing resource usage in an in-order pipeline with multiple threads
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7346757B2 (en) * 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7634638B1 (en) * 2002-10-22 2009-12-15 Mips Technologies, Inc. Instruction encoding for system register bit set and clear
US7062606B2 (en) * 2002-11-01 2006-06-13 Infineon Technologies Ag Multi-threaded embedded processor using deterministic instruction memory to guarantee execution of pre-selected threads during blocking events
US7386619B1 (en) * 2003-01-06 2008-06-10 Slt Logic, Llc System and method for allocating communications to processors in a multiprocessor system
US7849465B2 (en) * 2003-02-19 2010-12-07 Intel Corporation Programmable event driven yield mechanism which may activate service threads
US7487502B2 (en) 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7000051B2 (en) * 2003-03-31 2006-02-14 International Business Machines Corporation Apparatus and method for virtualizing interrupts in a logically partitioned computer system
US7281075B2 (en) * 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7424599B2 (en) * 2003-08-28 2008-09-09 Mips Technologies, Inc. Apparatus, method, and instruction for software management of multiple computational contexts in a multithreaded microprocessor
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US20050102457A1 (en) * 2003-11-12 2005-05-12 Dell Products L.P. System and method for interrupt processing in a multiple processor system
US7721024B2 (en) * 2003-11-12 2010-05-18 Dell Products L.P. System and method for exiting from an interrupt mode in a multiple processor system
US20050210472A1 (en) * 2004-03-18 2005-09-22 International Business Machines Corporation Method and data processing system for per-chip thread queuing in a multi-processor system
US7917910B2 (en) * 2004-03-26 2011-03-29 Intel Corporation Techniques to manage critical region interrupts
US7143223B2 (en) * 2004-10-14 2006-11-28 International Business Machines Corporation Method, system and program product for emulating an interrupt architecture within a data processing system
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
US20060212677A1 (en) * 2005-03-15 2006-09-21 Intel Corporation Multicore processor having active and inactive execution cores
US20060294149A1 (en) * 2005-06-24 2006-12-28 Intel Corporation Method and apparatus for supporting memory hotplug operations using a dedicated processor core
US7386646B2 (en) * 2005-08-25 2008-06-10 Broadcom Corporation System and method for interrupt distribution in a multithread processor
US7386647B2 (en) * 2005-10-14 2008-06-10 Dell Products L.P. System and method for processing an interrupt in a processor supporting multithread execution
US8079031B2 (en) * 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
US8180923B2 (en) * 2005-11-29 2012-05-15 Intel Corporation Network access control for many-core systems
CN101366004A (zh) * 2005-12-06 2009-02-11 波士顿电路公司 用于带有专用线程管理的多核处理的方法和设备
KR100679050B1 (ko) * 2005-12-12 2007-02-06 삼성전자주식회사 태스크간 빠른 문맥 교환을 위해 레지스터 문맥을 저장,복구하는 방법 및 장치
TW200810523A (en) * 2005-12-23 2008-02-16 Nxp Bv An AV renderer peripheral with dual interrupt lines for staggered interrupts
KR100681199B1 (ko) * 2006-01-11 2007-02-09 삼성전자주식회사 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
US20070282928A1 (en) * 2006-06-06 2007-12-06 Guofang Jiao Processor core stack extension
US7721148B2 (en) * 2006-06-29 2010-05-18 Intel Corporation Method and apparatus for redirection of machine check interrupts in multithreaded systems
US7870372B2 (en) * 2006-08-14 2011-01-11 Marvell World Trade Ltd. Interrupt handling
US7493436B2 (en) * 2006-10-26 2009-02-17 International Business Machines Corporation Interrupt handling using simultaneous multi-threading
US7818302B2 (en) * 2007-03-09 2010-10-19 Emc Corporation System and method for performing file system checks on an active file system
US7660570B2 (en) * 2007-03-12 2010-02-09 John Mezzalingua Associates, Inc. Active step attenuator
US8627030B2 (en) * 2007-11-07 2014-01-07 Intel Corporation Late lock acquire mechanism for hardware lock elision (HLE)
US9596324B2 (en) * 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
CN101247275B (zh) * 2008-03-18 2011-02-09 杭州华三通信技术有限公司 一种中断上报方法和网络设备
US8155479B2 (en) 2008-03-28 2012-04-10 Intuitive Surgical Operations Inc. Automated panning and digital zooming for robotic surgical systems
US8808164B2 (en) * 2008-03-28 2014-08-19 Intuitive Surgical Operations, Inc. Controlling a robotic surgical tool with a display monitor
EP2271992B1 (en) 2008-04-28 2013-04-03 Hewlett-Packard Development Company, L. P. Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared-memory multi-processor systems
US9417914B2 (en) * 2008-06-02 2016-08-16 Microsoft Technology Licensing, Llc Regaining control of a processing resource that executes an external execution context
US7996722B2 (en) * 2009-01-02 2011-08-09 International Business Machines Corporation Method for debugging a hang condition in a process without affecting the process state
US8151027B2 (en) * 2009-04-08 2012-04-03 Intel Corporation System management mode inter-processor interrupt redirection
US7996595B2 (en) * 2009-04-14 2011-08-09 Lstar Technologies Llc Interrupt arbitration for multiprocessors
US8321614B2 (en) * 2009-04-24 2012-11-27 Empire Technology Development Llc Dynamic scheduling interrupt controller for multiprocessors
US8260996B2 (en) * 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
JP5035299B2 (ja) * 2009-06-15 2012-09-26 株式会社日立製作所 マルチコアプロセッサ制御方法、その計算機システム、及び管理計算機のプログラム
US8234431B2 (en) * 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors
US8954801B2 (en) 2009-10-15 2015-02-10 L E Tech Co., Ltd. Microcomputer and method of operation thereof
FR2960314B1 (fr) * 2010-05-19 2012-07-27 Bull Sas Procede d'optimisation de gestion de veille d'un microprocesseur permettant la mise en oeuvre de plusieurs coeurs logiques et programme d'ordinateur mettant en oeuvre un tel procede
TWI463406B (zh) * 2011-10-31 2014-12-01 Univ Nat Taiwan 具搶占功能的即時中斷處理系統及其方法
US9104508B2 (en) * 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US10102003B2 (en) 2012-11-01 2018-10-16 International Business Machines Corporation Intelligent context management
US10078518B2 (en) 2012-11-01 2018-09-18 International Business Machines Corporation Intelligent context management
US10331589B2 (en) * 2013-02-13 2019-06-25 Red Hat Israel, Ltd. Storing interrupt location for fast interrupt register access in hypervisors
US9329880B2 (en) * 2013-02-13 2016-05-03 Red Hat Israel, Ltd. Counter for fast interrupt register access in hypervisors
US9311138B2 (en) * 2013-03-13 2016-04-12 Intel Corporation System management interrupt handling for multi-core processors
US9842015B2 (en) 2013-09-27 2017-12-12 Intel Corporation Instruction and logic for machine checking communication
US10147480B2 (en) * 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US10013279B2 (en) * 2015-07-28 2018-07-03 International Business Machines Corporation Processing interrupt requests
KR102538679B1 (ko) * 2018-04-06 2023-06-02 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10990463B2 (en) 2018-03-27 2021-04-27 Samsung Electronics Co., Ltd. Semiconductor memory module and memory system including the same
CN110737616B (zh) * 2018-07-20 2021-03-16 瑞昱半导体股份有限公司 处理中断优先级的电路系统
US20210049036A1 (en) * 2019-08-13 2021-02-18 Facebook Technologies, Llc Capability Space
CN116401990B (zh) * 2023-01-30 2023-10-20 芯华章科技(北京)有限公司 处理中断事件的方法、装置、系统和存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109522A (en) * 1983-06-02 1992-04-28 Amdahl Corporation Data processing system with logical processing facility supporting a plurality of system control programs for production operation
US5437042A (en) * 1992-10-02 1995-07-25 Compaq Computer Corporation Arrangement of DMA, interrupt and timer functions to implement symmetrical processing in a multiprocessor computer system
EP1291765B1 (en) * 1996-08-27 2009-12-30 Panasonic Corporation Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
US5915088A (en) * 1996-12-05 1999-06-22 Tandem Computers Incorporated Interprocessor messaging system
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
US6205468B1 (en) * 1998-03-10 2001-03-20 Lucent Technologies, Inc. System for multitasking management employing context controller having event vector selection by priority encoding of contex events
US6163829A (en) * 1998-04-17 2000-12-19 Intelect Systems Corporation DSP interrupt control for handling multiple interrupts

Also Published As

Publication number Publication date
US6779065B2 (en) 2004-08-17
JP2005502119A (ja) 2005-01-20
RU2280272C2 (ru) 2006-07-20
CN1267822C (zh) 2006-08-02
DE10297166T5 (de) 2004-07-22
WO2003021438A1 (en) 2003-03-13
HK1060784A1 (en) 2004-08-20
GB2394099B (en) 2005-02-09
GB2394099A (en) 2004-04-14
KR20040023692A (ko) 2004-03-18
CN1549968A (zh) 2004-11-24
US20030046464A1 (en) 2003-03-06
TWI223771B (en) 2004-11-11
RU2004109581A (ru) 2005-08-20
GB0401390D0 (en) 2004-02-25

Similar Documents

Publication Publication Date Title
KR100578437B1 (ko) 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘
US6430657B1 (en) Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
EP0684561B1 (en) System and method for synchronization in split-level data cache system
US8812792B2 (en) Technique for using memory attributes
US7904685B1 (en) Synchronization techniques in a multithreaded environment
US6779089B2 (en) Locked content addressable memory for efficient access
US7676655B2 (en) Single bit control of threads in a multithreaded multicore processor
US9658877B2 (en) Context switching using a context controller and on-chip context cache
JPH08278886A (ja) データ処理システムでの拡張システム管理操作のための方法およびシステム
US6785887B2 (en) Technique for using shared resources on a multi-threaded processor
JP2015111439A (ja) スレッドレベルの投機実行を拡張するためのプリミティブ
WO1999021088A1 (en) An apparatus and method to guarantee forward progress in a multithreaded processor
US8359459B2 (en) Using hardware support to reduce synchronization costs in multithreaded applications
JP5999216B2 (ja) データ処理装置
KR102658600B1 (ko) 디바이스를 디버깅할 때 메타데이터에 액세스하기 위한 장치 및 방법
US6701429B1 (en) System and method of start-up in efficient way for multi-processor systems based on returned identification information read from pre-determined memory location
US7996848B1 (en) Systems and methods for suspending and resuming threads
JPH0245845A (ja) データ処理システム
JPH02244252A (ja) マルチプロセッサシステム
JP5967646B2 (ja) レジスタレスアーキテクチャによるキャッシュレスマルチプロセッサ
CN112585584A (zh) 用于处理引起异常的事件的装置和方法
KR19990072560A (ko) 메모리보호방법및장치
JPS5922155A (ja) マルチ・プロセツサ・システムの排他制御方法

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: 20130503

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170502

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee