KR100578437B1 - 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘 - Google Patents
다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Abstract
본 발명은 다중 스레드를 동시에 지원하는 프로세서 상에서 인터럽트를 처리하는 메커니즘을 제공한다. 프로세서의 리소스는 다중 논리 프로세서를 제공하기 위해 할당된다. 공통 인터럽트에 응답하여, 논리 프로세서는 공유 레지스터에 액세스하기 위해 경쟁한다. 공유 레지스터에 액세스하는 처음 논리 프로세서가 공통 인터럽트르 처리한다. 나머지 논리 프로세서는 인터럽트로부터 회귀한다.
인터럽트, 다중 스레드, 논리 프로세서, 공유 레지스터, 컴퓨터 시스템
Description
본 발명은 컴퓨터 시스템에 관한 것인데, 특정하게는, 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트를 처리하는 메커니즘에 관한 것이다.
최근의 고성능 프로세서는 각 클럭 사이클에서 다수의 명령을 실행하도록 디자인된다. 이 목적을 위해, 프로세서들은, 전형적으로는, 명령의 병렬 처리를 촉진시키기 위해 광범위한 규모의 실행 리소스를 포함한다. 이런 리소스의 효율적인 사용은 병렬로 처리될 수 있는 명령의 가용성에 의해 제한된다. 병렬 실행에 대한 명령의 가용성은 명령 레벨 병렬성(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 논리 프로세서(logical processor)로 하여금 인터럽트 핸들러(interrupt-handler)로 분기하도록 하는 제1 인터럽트 유닛과,상기 인터럽트에 응답하여 제2 논리 프로세서로 하여금 상기 인터럽트 핸들러로 분기하도록 하는 제2 인터럽트 유닛과,상기 제1 및 제2 논리 프로세서 중의 하나가 상기 인터럽트를 처리해야 하는지를 나타내는 값을 기억하는 인터럽트 클레임 레지스터(interrupt claim register)를 포함하는 프로세서.
- 제 1항에 있어서, 상기 제1 및 제2 논리 프로세서는 상기 인터럽트 핸들러의 제어 하에서 상기 인터럽트 클레임 레지스터의 값을 판독하는 프로세서.
- 제 2항에 있어서, 상기 제1 논리 프로세서는 자신이 상기 인터럽트 클레임 레지스터를 최초로 판독한 경우에 상기 인터럽트를 처리하는 프로세서.
- 제 3항에 있어서, 상기 제2 논리 프로세서는 상기 제1 논리 프로세서가 상기 인터럽트를 처리한 경우에 상기 인터럽트 핸들러를 빠져나가는 프로세서.
- 제 4항에 있어서, 상기 제2 논리 프로세서는, 상기 제1 논리 프로세서에 의 해 기입된 상기 인터럽트 클레임 레지스터의 값을 판독함으로써 상기 제1 논리 프로세서가 상기 인터럽트를 처리한 것을 판정하는 프로세서.
- 인터럽트 클레임 레지스터 및 각각 대응하는 다수의 명령 스레드의 명령을 처리하기 위한 다수의 스레드 리소스를 포함하는 프로세서와,인터럽트에 응답하여, 상기 인터럽트 클레임 레지스터의 값을 판독하고 상기 판독된 값에 응답하여 상기 인터럽트를 처리하거나 명령 실행을 재개시키기 위해, 상기 다수의 스레드 리소스의 각각에 의해 실행가능한 명령을 포함하는 인터럽트 핸들러를 저장하는 메모리를 포함하는 시스템.
- 제6항에 있어서, 상기 다수의 스레드 리소스는 상기 프로세서의 다수의 실행 코어를 포함하는 시스템.
- 제6항에 있어서, 상기 다수의 스레드 리소스는 다수의 명령 스레드에 할당된 실행 코어의 다수의 리소스를 포함하는 시스템.
- 제6항에 있어서, 상기 인터럽트 핸들러는 상기 인터럽트 클레임 레지스터의 상기 값을 판독한 후에 제2값을 인터럽트 클레임 레지스터에 기입하기 위해 각각의 상기 스레드 리소스에 의해 추가로 실행가능한 명령을 포함하는 시스템.
- 제9항에 있어서, 상기 인터럽트 클레임 레지스터는 제1값을 기억하도록 초기화되고 상기 스레드 리소스들 중 상기 제1값을 판독하는 최초의 스레드 리소스는 이 값을 제2값으로 대체하고 상기 인터럽트를 처리하는 시스템.
- 제10항에 있어서, 상기 다수의 스레드 리소스의 나머지는 상기 인터럽트 클레임 레지스터의 상기 제2값을 판독한 것에 응답하여 상기 인터럽트로부터의 복귀를 실행하는 시스템.
- 인터럽트 핸들러가 저장된 메모리와,인터럽트 클레임 레지스터, 및 다수의 논리 프로세서를 지원하는 실행 리소스를 포함하는 프로세서 -상기 논리 프로세서의 각각은 인터럽트 신호에 응답하여 상기 인터럽트 핸들러를 이용하여 상기 인터럽트 클레임 레지스터에 액세스하기 위해 경쟁함-를 포함하는 시스템.
- 제12항에 있어서, 다수의 논리 프로세서를 지원하는 상기 실행 리소스는 다수의 실행 코어를 포함하는 시스템.
- 제13항에 있어서, 각각의 실행 코어는 상기 인터럽트 신호에 응답하여 상기 실행 코어의 제어가 상기 인터럽트 핸들러로 분기되도록 하는 인터럽트 유닛을 포함하는 시스템.
- 제13항에 있어서, 각각의 상기 실행 코어는, 상기 인터럽트 핸들러의 명령을 처리하여 상기 인터럽트 클레임 레지스터를 판독하고 상기 인터럽트 클레임 레지스터에서 판독된 값에 응답하여 상기 인터럽트 핸들러를 실행하기를 계속하거나 상기 인터럽트 핸들러로부터 복귀하는 시스템.
- 제15항에 있어서, 상기 실행 코어들 중 상기 인터럽트 클레임 레지스터를 판독하는 최초의 실행 코어는 상기 인터럽트 신호에 응답하여 상기 인터럽트 핸들러의 실행을 완료시키고 다른 실행 코어들은 상기 인터럽트 핸들러를 빠져나가는 시스템.
- 제12항에 있어서, 상기 논리 프로세서들 중 상기 인터럽트 클레임 레지스터에 액세스하는 최초의 논리 프로세서는 상기 인터럽트 핸들러의 실행을 완료시키는 시스템.
- 제17항에 있어서, 상기 최초의 논리 프로세서 후에 상기 인터럽트 클레임 레지스터에 액세스하는 상기 논리 프로세서는 상기 인터럽트 핸들러를 빠져나가는 시스템.
- 제12항에 있어서, 다수의 논리 프로세서를 지원하는 상기 실행 리소스는 다 수의 실행 코어를 포함하고, 상기 실행 코어중 적어도 하나는 다중 스레딩을 지원하는 시스템.
- 인터럽트에 응답하여 다중 콘텍스트 프로세서 상에서 현재 실행되는 각각의 스레드에 의해 구현되는 방법에 있어서,지정된 메모리 위치에 있는 인터럽트 핸들러에 액세스하는 단계와,인터럽트 클레임 레지스터의 값을 판독하기 위해 상기 인터럽트 핸들러를 실행하는 단계와,상기 인터럽트 클레임 레지스터로부터 판독된 상기 값이 제1값인 경우에, 상기 인터럽트 핸들러의 실행을 완료시키는 단계를 포함하는 방법.
- 제20항에 있어서, 상기 인터럽트 핸들러를 실행시키는 단계는, 상기 인터럽트 클레임 레지스터의 상기 값을 판독하는 단계와 상기 레지스터의 제어를 양도함이 없이 제2값을 상기 레지스터에 기입하는 단계를 포함하는 방법.
- 제20항에 있어서, 상기 인터럽트 클레임 레지스터로부터 판독된 상기 값이 상기 제2값인 경우에 상기 인터럽트 핸들러의 실행을 종료시키는 단계를 더 포함하는 방법.
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)
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)
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 |
-
2001
- 2001-08-31 US US09/945,419 patent/US6779065B2/en not_active Expired - Lifetime
-
2002
- 2002-08-01 RU RU2004109581/09A patent/RU2280272C2/ru not_active IP Right Cessation
- 2002-08-01 WO PCT/US2002/024672 patent/WO2003021438A1/en active Application Filing
- 2002-08-01 JP JP2003525460A patent/JP2005502119A/ja active Pending
- 2002-08-01 GB GB0401390A patent/GB2394099B/en not_active Expired - Fee Related
- 2002-08-01 KR KR1020047001244A patent/KR100578437B1/ko not_active IP Right Cessation
- 2002-08-01 CN CNB028170687A patent/CN1267822C/zh not_active Expired - Fee Related
- 2002-08-01 DE DE10297166T patent/DE10297166T5/de not_active Ceased
- 2002-08-14 TW TW091118296A patent/TWI223771B/zh not_active IP Right Cessation
-
2004
- 2004-05-19 HK HK04103557A patent/HK1060784A1/xx not_active IP Right Cessation
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 |