KR20110081987A - 멀티 스레드 프로세서에서 인터럽트들을 할당하기 위한 방법들 및 시스템들 - Google Patents

멀티 스레드 프로세서에서 인터럽트들을 할당하기 위한 방법들 및 시스템들 Download PDF

Info

Publication number
KR20110081987A
KR20110081987A KR1020117008943A KR20117008943A KR20110081987A KR 20110081987 A KR20110081987 A KR 20110081987A KR 1020117008943 A KR1020117008943 A KR 1020117008943A KR 20117008943 A KR20117008943 A KR 20117008943A KR 20110081987 A KR20110081987 A KR 20110081987A
Authority
KR
South Korea
Prior art keywords
interrupt
priority
thread
threads
task
Prior art date
Application number
KR1020117008943A
Other languages
English (en)
Other versions
KR101346135B1 (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 KR20110081987A publication Critical patent/KR20110081987A/ko
Application granted granted Critical
Publication of KR101346135B1 publication Critical patent/KR101346135B1/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
    • G06F9/4818Priority circuits therefor
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)
  • Telephone Function (AREA)

Abstract

인터럽트들을 할당할 수 있는 멀티스레드(multithreaded) 프로세서가 개시된다. 일 실시예에서, 멀티스레드 프로세서는 인터럽트 모듈 및 태스크들을 실행하기 위한 스레드들을 포함한다. 인터럽트 모듈은 상기 스레드들에 의해 실행되는 태스크들에 대한 태스크 우선권(priority)에 기반하여 각 스레드에 대한 우선권을 식별할 수 있고 그리고 각 스레드의 우선권에 적어도 기반하여 스레드에 인터럽트를 할당할 수 있다.

Description

멀티 스레드 프로세서에서 인터럽트들을 할당하기 위한 방법들 및 시스템들 {METHODS AND SYSTEMS FOR ALLOCATING INTERRUPTS IN A MULTITHREADED PROCESSOR}
여기서 개시된 발명의 개념들의 실시예들은 일반적으로 데이터 처리 시스템들의 분야에 관련된다. 더욱 상세하게는, 여기서 개시된 상기 발명의 개념들의 실시예들은 멀티-스레드(multi-threaded) 프로세서들에 인터럽트들을 할당하는 것과 관련된다.
멀티-스레드 프로세서들은 태스크(task)들이 처리되는(processed) 속도를 증가시키기 위해 둘 이상의 스레드들을 포함할 수 있다. 스레드는 태스크들이 처리되는 하드웨어일 수 있다. 태스크는 어플리케이션 또는 프로그램과 같은, 시스템 함수와 연관된 명령들의 시퀀스(sequence)일 수 있다. 몇몇 어플리케이션들 또는 프로그램들은 동시에 둘 이상의 태스크들과 연관될 수 있다. 스레드는 태스크와 연관된 명령들의 시퀀스를 실행함으로써 태스크를 처리하거나 수행할 수 있다.
하나의 스레드는 다른 스레드가 다른 태스크를 처리할 때 동시에 하나의 스레드를 처리할 수 있다. 처리 단계들은 (태스크와 연관된 명령들을 얻기 위해) 페치(fetch)하고 , (명령을 연산(operation) 및 피연산자(operand)들로 분해하기 위해) 디코딩하고, 레지스터 파일로부터 피연산자들을 검색(retrieve)하고, 명령을 실행하고, 그리고 결과들을 다시 기록(write back)하는 것을 포함할 수 있다. 프로세스는 태스크의 모든 명령들이 실행될 때까지 태스크에 다음 명령들을 위하여 반복될 수 있다. 각 태스크는 우선권(priority)과 연관될 수 있고 우선권에 기반하여 스레드들에 지정(assign)될 수 있다. 예를 들어, 소프트웨어는 각 태스크에 우선권을 할당할 수 있고 스케줄러(scheduler)는 태스크를 처리하기 위해 준비된 스레드를 제공하기 위해 가장 높은 우선권을 갖는 다음의 태스크를 결정할 수 있다.
스레드들은 인터럽트들을 또한 처리할 수 있다. 인터럽트는 시스템 디바이스로부터의 인터럽트 핸들러와 연관된 또는 소프트웨어에 의해 생성된 통지(notification)일 수 있다. 인터럽트 핸들러는 언스케줄링된(unscheduled) 태스크인 루틴(routine)일 수 있다. 인터럽트가 수신된 때, 인터럽트는 멀티스레드 프로세서의 임의의 스레드에 의해 처리될 수 있다. 예를 들어, 인터럽트 핸들러는 스레드가 태스크의 명령들을 현재 처리하고 있는지 또는 다른 스레드들이 (즉, 임의의 태스크들을 처리하지 않는) 대기(wait) 모드에 있는지 여부에 관계없이, 페치 단계에서 제1 스레드로 제공될 수 있다. 인터럽트를 처리하는 것은 태스크의 명령들의 처리를 중단하고 인터럽트 핸들러와 연관된 명령들의 시퀀스를 처리하는 스레드를 포함한다.
인터럽트를 처리하기 위해 현재의 자신의 태스크를 처리하는 것을 중단하는 스레드는 예컨대 높은 우선권 태스크를 처리함으로서, 높은 우선권 스레드가 될 수 있다. 하나 이상의 스레드들이 대기 모드에 있거나 또는 인터럽트를 처리하기 위해 이용가능한 낮은 우선권 스레드들을 처리하고 있다면 높은 우선권 스레드들이 높은 우선권 태스크들을 처리하는 것을 계속하고 인터럽트들을 위하여 자신의 처리를 중단하지 않는 것이 바람직하다.
따라서, 다른 스레드들이 인터럽트들을 처리하기 위해 사용가능할 때 높은 우선권 스레드들 상에서 인터럽트들을 실행하는 것으로부터의 오버헤드(overhead)를 감소시키기 위해 인터럽트들을 할당할 수 있는 멀티스레드 프로세서에 대한 시스템 및 프로세스들이 바람직하다.
실시예에서, 멀티스레드(multithreaded) 프로세서가 기술된다. 멀티스레드 프로세서는 인터럽트 모듈 및 태스크(task)를 실행하기 위한 스레드들을 포함한다. 각 스레드는 태스크를 실행할 수 있다. 상기 인터럽트 모듈은 스레드들 중 각각의 스레드에 대한 우선권을 식별할 수 있고 스레드들의 우선권에 적어도 기반하여 상기 스레드들 중 하나의 스레드에 인터럽트를 지정한다.
이러한 도시된 실시예는 여기서 개시된 발명의 개념들을 한정하거나 정의하기 위해서가 아니라, 그에 대한 이해를 돕기 위한 예들을 제공하기 위해 언급된다. 본 개시의 다른 양상들, 이점들, 및 특징들은 다음의 섹션들에 해당하는 도면의 간단한 설명, 상세한 설명 및 청구항들을 포함하는, 전체 출원의 검토 이후에 명백하게 될 것이다.
여기에 개시된 본 발명의 개념들의 이러한 및 다른 특징들, 양상들, 이점들은 아래에 진술되는 상세한 설명이 수반하는 도면들을 참조하여 판독될 때 더욱 명백해 질 것이다.
도 1은 인터럽트들을 프로세서 스레드로 할당하는 프로세서 유닛의 예를 도시한다.
도 2는 도 1의 프로세서 유닛의 실시예를 도시하는 일반적인 다이어그램이다.
도 3은 도 1의 프로세서 유닛의 제2 실시예를 도시하는 일반적인 다이어그램이다.
도 4는 프로세서 스레드로 인터럽트를 할당하기 위한 예시적인 프로세스를 도시하는 플로우 차트이다.
도 5는 프로세서 유닛의 실시예를 포함할 수 있는 포터블 통신 디바이스를 도시하는 일반적인 다이어그램이다.
도 6은 프로세서 유닛의 실시예를 포함할 수 있는 셀룰러 전화를 도시하는 일반적인 다이어그램이다.
도 7은 프로세서 유닛의 실시예를 포함할 수 있는 무선 인터넷 프로토콜 전화를 도시하는 일반적인 다이어그램이다.
도 8은 프로세서 유닛의 실시예를 포함할 수 있는 예시의 포터블 디지털 어시스턴스(PDA)를 도시하는 일반적인 다이어그램이다.
도 9는 프로세서 유닛의 실시예를 포함할 수 있는 예시의 오디오 파일 플레이어를 도시하는 일반적인 다이어그램이다.
명세서를 통해, 설명의 목적을 위하여, 다양한 세부 사항들이 여기서 개시된 발명의 개념의 철저한 이해를 제공하기 위하여 진술된다. 그러나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자들에게 여기서 개시된 발명의 개념이 이러한 세부 사항들의 일부에 의하지 않고 실행될 수 있다는 것은 명백할 것이다. 다른 예들에서, 잘-알려진 구조들 및 디바이스들은 여기서 개시된 발명의 개념들의 근원적인(underlying) 원리들을 모호하게(obscuring) 하는 것을 피하기 위해 블록 다이어그램에서 도시된다.
여기에 개시된 발명의 개념들의 실시예들은 스레드 우선권에 기반하여 인터럽트를 스레드들로 할당할 수 있는 멀티스레드 프로세서들과 관련된다. 스레드의 우선권은 스레드가 태스크를 실행하고 있는지 여부 및/또는 스레드가 실행하고 있는 태스크 우선권에 기반할 수 있다. 몇몇 실시예들에서, 각 태스크의 우선권은 멀티스레드 프로세서의 소프트웨어에 의해 생성되고 그리고 멀티스레드 프로세서의 프로세서 유닛에 의해 수신된다. 스레드가 태스크를 실행하고 있을 때, 스레드의 우선권은 스레드가 실행하고 있는 태스크에 대응할 수 있다. 스레드가 대기 모드에 있을 때(즉, 태스크를 실행하지 않음), 스레드의 우선권은 가능한 가장 낮은 우선권에 대응할 수 있다. 몇몇 실시예들에서, "1" 및 "0"과 같은, 두 우선권들은 태스크를 실행하고 있다는, "1"을 표시하기 위해 또는 대기 모드에 있다는, "0"을 표시하기 위해 사용되고, 인터럽트는 대기 모드에 있고 "0"과 연관되는 스레드로의 할당과 같은, 우선권들에 기반하여 할당된다. 프로세서 스레드는 자신의 태스크와 연관된 각각의 명령들의 처리함으로써 태스크를 실행할 수 있다. 태스크는 서로 연관된 명령들의 시퀀스를 포함할 수 있다. 멀티스레드 프로세서들은 하나의 스레드 상에 하나의 태스크와 연관된 명령들의 시퀀스 및 다른 스레드 상에 다른 태스크와 연관된 명령들의 시퀀스를 처리함으로써 동시에 둘 이상의 태스크들을 실행할 수 있다.
멀티스레드 프로세서의 프로세서 유닛은 인터럽트를 수신할 수 있고 스레드들의 우선권들에 기반하여 인터럽트를 제공하기 위해 스레드를 결정할 수 있다. 예를 들어, 프로세서 유닛은 대기 모드에 있는 스레드를 식별할 수 있거나, 멀티스레드 프로세서에 모든 스레드들이 태스크들을 실행하고 있다면, 가장 낮은 우선권을 가진 스레드를 식별할 수 있다. 프로세서 유닛은 식별된 스레드에 인터럽트를 지시(direct)할 수 있다.
인터럽트는 디바이스 또는 시스템 소프트웨어로부터 수신된, 인터럽트 핸들러와 같은, 언스케줄링된 이벤트와 연관된 통지일 수 있다. 예를 들어, 인터럽트 핸들러는 스레드에 의해 처리되기 위해 명령들의 시퀀스를 포함하는 언스케줄링된 태스크일 수 있다. 몇몇 실시예들에서, 인터럽트는 우선권을 포함한다. 프로세서 유닛은 스레드들의 우선권 및 인터럽트의 우선권에 기반하여 실행하고 있는 태스크를 중단할 것인지 여부를 결정할 수 있다. 예를 들어, 프로세서는 인터럽트 우선권이 스레드의 우선권보다 높은지 여부를 결정할 수 있다. 인터럽트 우선권이 스레드 우선권보다 높다면, 가장 낮은 우선권을 갖는 스레드는 중단될 수 있고 인터럽트는 그 스레드로 제공될 수 있다. 인터럽트 우선권이 스레드들보다 낮다면, 스레드가 자신의 현재 태스크를 실행하는 것을 완료할 때까지 또는, 그렇지 않으면 인터럽트보다 높은 우선권들을 갖는 태스크들이 실행될 때까지 인터럽트는 큐(queue)될 수 있다. 스레드 우선권에 기반하여 인터럽트들을 할당함으로써, 특정한 프로세서 유닛 실시예들은 인터럽트 처리에 기인하는 레이턴시(latency)와 같은, 오버헤드(overhead)를 감소시킬 수 있고, 그리고/또는 미리(earlier) 실행되기 위해 높은 우선권 태스크들을 허용할 수 있다.
몇몇 실시예들에 따른 멀티스레드 프로세서들은 태스크의 실행 동안에 데이터를 액세스하기 위해 처리 시스템의 다양한 컴포넌트들로 구현될 수 있다. 도 1은 인터럽트 핸들러와 연관된 인터럽트들(100)을 프로세서 스레드들에 할당하기 위한 프로세서 유닛(102)을 포함하는 멀티스레드 프로세서의 일 실시예의 구현예의 블록 다이어그램을 도시한다. 몇몇 실시예들에서, 프로세서 유닛(102)은 태스크 큐 내의 태스크들 또는 다른 방식의 태스크들과 같은, 실행가능 태스크들(104)을 포함하며, 이들 각각은 프로세서 스레드에 의해 실행될 명령들의 시퀀스를 포함한다. 태스크들과 연관된 명령들은 스레드들 및 연관된 스레드에 대한 우선권을 저장하는 각각의 스레드와 연관된 레지스터 또는 다른 임시의 스토리지 컴포넌트를 포함하는 실행 모듈(106)에서 실행될 수 있다. 실행 모듈(106)은 스레드들의 제한된 개수와 같은, 스레드들의 임의의 개수를 포함할 수 있다. 각 스레드는 예컨대 태스크와 연관된 명령들의 시퀀스를 실행하는 것에 의해, 태스크를 실행할 수 있다. 프로세서 유닛(102)은 인터럽트를 제공하기 위한 스레드를 결정할 수 있거나 또는 그렇지 않으면 인터럽트들(100)의 할당 및 이들과 연관된 인터럽트 핸들러들(101)을 결정할 수 있는 인터럽트 모듈(108)을 또한 포함할 수 있다.
각 태스크는 운영 시스템에 의해 지정된 우선권과 같은, 우선권과 연관될 수 있다. 프로세서 유닛(102) 또는 운영 시스템과 같은, 소프트웨어는 스레드 상에서 태스크를 실행할 때를 결정하기 위해 우선권을 사용할 수 있다. 몇몇 실시예들에서, 몇몇 태스크들은 동시에 수신되고 태스크들의 우선권에 기반하여 스레드들 중 제한된 개수의 스레드에 제공된다. 높은 우선권들과 연관된 태스크들은 낮은 우선권들과 연관된 태스크 이전에 실행될 수 있다.
프로세서 유닛(102)은 메모리 관리 유닛(110) 및 태스크들의 자신의 실행에서 프로세스 유닛(102)을 지원하는 리소스(112)와 연결될 수 있다. 실행 동안에, 프로세서 유닛(102)은 메모리 유닛(110)을 통해 리소스(112)를 액세스할 수 있다. 예를 들어, 프로세서 유닛(102)은 데이터, 명령들, 피연산자들, 또는 리소스(112) 로부터의 다른 정보에 대한 요청을 제공할 수 있다. 메모리 관리 유닛(110)은 프로세서 유닛(102)에 의해 탐색된 정보가 위치된 메모리 위치의 물리적 주소를 제공하기 위해 예컨대 변환 참조(translation lookaside) 버퍼들 또는 다른 컴포넌트들를 사용함으로써 리소스(112)로의 액세스를 관리할 수 있다.
리소스(112) 등과 같은, 시스템 디바이스로부터의 인터럽트들(100)은 수신될 수 있고 그리고 인터럽트들과 연관된 인터럽트 핸들러들(101)은 프로세서 유닛(102)에 의해 실행된다. 인터럽트 모듈(108)은 예컨대 인터럽트를 실행하기 위해 상대적으로 낮은 우선권 스레드를 중단시키거나 또는 대기 모드에 있는 스레드를 식별함으로써, 실행 모듈(106)에서의 스레드들의 우선권에 기반하여 인터럽트들로 할당하도록 구성된다.
프로세서 유닛(102)의 실시예들은 인터럽트를 대기 모드에 있는 스레드들로 할당하거나 그리고/또는 실행되기 위해 대기하는 태스크들 및 스레드들의 우선권들에 기반하여 인터럽트를 할당하는 컴포넌트들을 포함하는, 스레드들 중에서 인터럽트들을 할당하기 위한 다양한 컴포넌트들을 포함할 수 있다. 도 2 및 3은 인터럽트들을 할당하도록 구성된 프로세서 유닛들의 구현예들의 실시예들을 도시한다. 도 2는 스케일된 스레드 우선권들을 사용하여 대기 모드에 있는 스레드로 인터럽트 할당의 일례를 도시한다. 도 3은 2-섹션 우선권에 기반하여 스레드에 인터럽트 할당의 일례를 도시한다.
도 2에서 프로세서 유닛(102)은 스레드들(202)을 갖는 실행 모듈을 포함하는 멀티스레드 프로세서이다. 도시의 목적을 위하여, 스레드들(202)은 여섯 개의 스레드들 A-F를 포함한다. 임의의 개수의 스레드가 사용될 수 있다. 실행 모듈은 스레드들(202)의 각각에 대한 우선권을 저장하는 스레드 레지스터들(204A-F)을 또한 포함한다. 각 스레드 레지스터는 스레드와 연관된다. 예를 들어, 스레드 레지스터(204A)는 스레드(202A)에 대응한다. 스레드가 태스크를 실행하고 있을 때, 태스크 우선권에 대응하는 우선권은 스레드와 연관된 레지스터에 저장된다. 스레드가 태스크를 실행하는 것을 완료하거나 또는 그렇지 않으면 중단할 때, 연관된 레지스터에 우선권은 "널(null)" 으로 변하게 된다. "널"의 우선권은 가장 낮은 가능한 우선권에 대응할 수 있다. 스레드가 다른 태스크를 실행하게 될 때, 태스크의 우선권에 대응하는 우선권은 연관된 레지스터에 저장된다.
몇몇 실시예들에서, 레지스터는 우선권에 대한 값을 식별하는 하나 이상의 비트들을 저장한다. 임의의 우선권 스케일이 상대적인 스레드 우선권을 나타내기 위해 사용될 수 있다. 도 2에 도시된 실시예에서, "1" 및 "99" 사이의 숫자들이 낮은 숫자들로 보다 높은 우선권을 나타내도록 사용될 수 있다. 예를 들어, 스레드 레지스터(204A)는 스레드(202A)의 상대적인 우선권을 나타내는 "5"의 우선권을 포함한다. 스레드 레지스터(204B)는 스레드(202B)의 상대적인 우선권을 나타내는 "25"의 우선권을 포함하고 스레드(202A)를 표시하는 것이 스레드(202B)보다 높은 우선권을 갖는다. 스레드 레지스터(204C)는 스레드(202C)가 태스크를 현재 실행하고 있지 않고 대기 모드에 있다는 것을 표시하는 "널"의 우선권을 포함한다. 스레드 우선권 값들을 표시하기 위해 숫자 값들 및 "널"을 포함하는, 스케일이 예시적인 목적들을 위하여 사용되고 상대적인 스레드 우선권들 및 대기모드에 있는 스레드들의 임의의 식별이 사용될 수 있다.
실행 모듈은 스레드 레지스터(204)에 연결된 우선권 인코더(206)을 또한 포함한다. 우선권 인코더(206)는 스레드 레지스터(204)에 있는 우선권들을 수신하고 그리고 가장 낮은 우선권을 포함하는 레지스터를 결정하도록 구성될 수 있다. 도시된 실시예에서, 우선권 인코더(206)는 "널"이 가장 낮은 우선권이기 때문에 "널"을 포함하는 레지스터와 연관된 스레드를 결정한다. 예를 들어, 스레드 레지스터(204)는 우선권 인코더(206)로 우선권 및 스레드 레지스터와 연관된 스레드의 식별을 각각 제공할 수 있다. 도 2에 도시된 실시예에서, 스레드 레지스터(204C)는 우선권 인코더(206)에 의해 "널"을 포함하고 가장 낮은 우선권을 갖는 스레드로 식별된다.
우선권 인코더(206)에 의해 식별된 스레드는 우선권 인코더(206)로부터 수신된 우선권 정보에 기반하여 인터럽트를 할당하도록 구성된 인터럽트 모듈(208)로 제공된다. 몇몇 실시예들에서, 우선권 인코더(206)는 인터럽트 모듈(208)로 우선권 정보를 연속적으로 제공한다. 다른 실시예들에서, 우선권 인코더(206)은 인터럽트 모듈(208)로부터의 그러한 정보에 대한 요청을 수신한 후에 인터럽트 모듈(208)로 우선권 정보를 제공한다.
인터럽트 모듈(206)은 인터럽트를 수신할 수 있고 스레드들(202) 중 하나의 스레드에 인터럽트를 할당한다. 몇몇 실시예들에서, 인터럽트 모듈(206)은 인터럽트를 할당하기 위해 인터럽트에 대한 우선권을 결정하고 우선권 인코더(206)로부터 수신된 스레드 우선권 외에도 인터럽트 우선권을 사용한다. 다른 실시예들에서, 인터럽트 모듈(206)은 인터럽트에 대한 우선권을 결정하지 않고 인터럽트를 할당한다. 인터럽트 모듈(206)은 대기 모드에 스레드와 같은, 가장 낮은 우선권을 갖는 스레드를 식별함으로써 인터럽트를 할당할 수 있고, 인터럽트를 식별된 스레드에 제공할 수 있다. 예를 들어, 스레드(202C)가 대기 모드에 있을 때 가장 낮은 우선권이기 때문에, 인터럽트 모듈(208)은 스레드(202C)를 식별하고 인터럽트를 스레드(202C)로 제공한다. 스레드(202C)는 높은 우선권 스레드들과 같은, 다른 스레드들의 실행을 교란하지(disrupting) 않고 인터럽트를 실행한다.
모든 스레드들(202)이 태스크들을 실행하고 있다면, 인터럽트 모듈(208)은 인터럽트에 가장 낮은 우선권 스레드를 제공하도록 또한 구성될 수 있다. 가장 낮은 우선권 스레드는 태스크를 실행하는 것을 중단할 수 있고 인터럽트와 연관된 인터럽트 핸들러의 명령들을 실행함으로써 인터럽트를 처리하는 것을 시작할 수 있다. 예를 들어, 스레드(202C)가 "17"의 우선권을 갖는 태스크를 실행하고 있다면, 우선권 인코더(206)는 스레드(202E)를 가장 낮은 우선권을 갖는 것으로 식별하고 인터럽트 모듈(208)로 202E의 식별을 제공한다. 인터럽트 모듈(208)은 스레드(202E)에서 실행하고 있는 태스크를 중단할 수 있고 그리고 실행을 위하여 인터럽트를 수신할 수 있다. 예를 들어, 스레드(202E)는 태스크와 연관된 명령들의 시퀀스의 명령을 실행하는 것을 중단할 수 있고 그리고 인터럽트와 연관된 인터럽트 핸들러의 명령을 실행하는 것을 시작할 수 있다. 스레드(202E)는 더욱 높은 우선권 스레드를 교란하지 않고 인터럽트를 실행한다. 스레드(202E)에서 정식으로(formally) 실행하고 있는 태스크는 스레드가 실행을 완료할 때까지 지체될(stalled) 수 있고 그리고 다른 태스크를 실행하도록 준비된다.
몇몇 실시예들에서, 스레드가 대기 모드에 있거나 또는 태스크를 실행하고 있다는 것을 표시하는 바와 같은, 더욱 간단한 스레드 우선권들에 기반하여 인터럽트들이 할당될 수 있다. 도 3은 스레드들(302A-F) 및 스레드들(302A-F)에 대응하는 스레드 레지스터들(304 A-F)을 갖는 실행 모듈을 포함하는 프로세서 유닛(102)의 실시예를 도시한다. 스레드 레지스터(304A-F) 각각은 각 스레드에 대한 우선권을 표시하기 위해 "1" 또는 "0"을 포함한다. 1"은 연관된 스레드가 태스크를 현재 실행하는 것을 표시할 수 있고 "0"은 연관된 스레드가 대기 모드에 있는 것을 표시할 수 있다. 예를 들어, 스레드 레지스터들(304A, 304C, 304D, 및 304F) 각각은 연관된 스레드들(302A, 302C, 302D, and 302F)이 태스크를 실행하고 있는지를 표시하는 "1" 을 포함한다. 스레드 레지스터들(304B 및 304E) 각각은 연관된 스레드(302B 및 302E)이 태스크를 실행하고 있지 않고 대기 모드에 있는 것을 표시하는 "0"을 포함한다.
스레드 레지스터들(304A-F)은 인터럽트 모듈(308)로의 스레드 우선권들을 식별하는 우선권 인코더(306)에 연결된다. 몇몇 실시예들에서, 우선권 인코더(306)는 스레드 레지스터들(304A-F)로부터의 우선권들에 기반하여 인터럽트 모듈(308)에게 대기 모드에 있는 하나 이상의 스레드를 식별하도록 구성된다. 도3에 도시된 실시예에서, 예를 들어, 우선권 인코더(306)는 인터럽트 모듈(308)에 대한 스레드들(302B 및 302E)을 식별할 수 있다. 인터럽트 모듈(308)은 인터럽트를 식별된 스레드들(302B or 302E) 중 하나의 스레드로 제공할 수 있고 상기 인터럽트는 태스크를 현재 처리하고 있는 스레드를 중단하고 상기 인터럽트를 수용할 필요없이 처리될 수 있다.
몇몇 실시예들에서, 모든 스레드들(302A-F)은 태스크를 처리할 수 있고 그리고 스레드 레지스터(304A-F)들의 각각은 각각 연관된 스레드가 태스크를 현재 처리하고 있는 것을 표시하는 "1"을 포함할 수 있다. 우선권 인코더(306)은 우선권 모듈(308)에 모든 스레드들(302A-F)이 태스크를 처리하고 있다는 표시를 제공하도록 구성될 수 있다. 인터럽트 모듈(308)은 스레드들(302 A-F) 중 하나로 인터럽트 및 자신의 인터럽트 핸들러를 제공할 수 있다. 스레드는 자신의 태스크를 처리하는 것을 중단할 수 있고 인터럽트 핸들러와 연관된 명령들을 실행함으로써 인터럽트를 처리하는 것을 시작할 수 있다.
위에서 기술된 바와 같이, 다양한 방법들이 멀티스레드 프로세서에서 인터럽트를 할당하기 위해 구현될 수 있다. 할당 방법들의 특정한 실시예들은 스레드 우선권, 인터럽트 우선권, 및/또는 태스크 큐 내에 태스크의 우선권에 기반하여 인터럽트를 할당할 수 있다. 도 4는 스레드 우선권 및 인터럽트 우선권에 기반하여 인터럽트들을 할당하는 일 실시예에 따른 예시적인 인터럽트 할당 방법을 도시한다.
상기 방법은 프로세서 유닛이 실행을 위한 태스크들 및 각 태스크들에 대한 우선권을 수신할 때 블록 402에서 시작할 수 있다. 태스크들은 소프트웨어 프로그램 또는 다른 시스템 어플리케이션으로부터 수신될 수 있고, 그리고 멀티스레드 프로세서에 스레드에 의해 실행되는 명령들의 시퀀스를 포함할 수 있다. 각 태스크들에 대한 우선권은 운영 시스템과 같은 시스템 소프트웨어에 의해 결정될 수 있다. 몇몇 실시예들에서, 프로세서 유닛은 각 태스크가 수신될 때 각 태스크에 대한 우선권을 결정하도록 구성된 로직을 포함할 수 있다.
각 태스크는 블록 404에서 스레드 상에서 실행된다. 태스크들의 개수가 태스크들을 실행하기 위하여 사용가능한 스레드들의 개수를 초과한다면, 몇몇 실시예들에서, 스케줄러는 각 태스크에 대한 우선권을 식별하고 실행을 위하여 먼저 스레드들로 가장 높은 우선권 태스크들을 제공한다.
블록 406에서, 프로세서 유닛은 태스크 우선권에 기반하여 각 스레드에 대한 우선권을 식별한다. 몇몇 실시예들에서, 프로세서 유닛은 스레드들을 모니터링하고 각 스레드 상에서 실행 중인 스레드의 우선권을 식별한다. 각 스레드에 대한 우선권은 각 스레드 상에서 실행 중인 태스크의 우선권에 대응할 수 있다. 프로세서 유닛은 대기 모드에 있는 스레드에 대한 우선권을 또한 식별할 수 있다. 프로세서 유닛은 스레드와 연관된 레지스터에 각 스레드에 대한 우선권을 저장할 수 있다.
블록 408에서, 프로세서 유닛은 시스템 디바이스 또는 소프트웨어 어플리케이션으로부터 인터럽트를 수신하고 인터럽트의 우선권을 결정한다. 인터럽트는 언스케줄링된 태스크인 인터럽트 핸들러와 연관될 수 있다. 몇몇 실시예들에서, 인터럽트 우선권은 인터럽트와 함께 수신된다. 몇몇 실시예들에서, 인터럽트 우선권은 인터럽트와 함께 수신된다. 예를 들어, 운영 시스템과 같은, 시스템 소프트웨어는 인터럽트가 생성될 때 인터럽트에 우선권을 지정한다. 다른 실시예들에서, 프로세서 유닛은 메모리 또는 다른 시스템 컴포넌트를 액세스함으로써 인터럽트에 대한 우선권을 검색한다.
블록 410에서, 프로세서에 유닛 내에 인터럽트 모듈은 인터럽트 우선권이 적어도 하나의 스레드보다 높은지 여부를 결정한다. 몇몇 실시예들에서, 인터럽트 모듈은 스레드의 각각에 대한 우선권을 수신하고 그것들을 인터럽트 우선권과 비교한다. 인터럽트 우선권이 적어도 하나의 스레드우선권보다 높으면, 블록 412에서 가장 낮은 우선권을 갖는 스레드가 식별되고, 자신의 태스크를 처리하는 것을 중단하고, 그리고 인터럽트와 연관된 인터럽트 핸들러가 가장 낮은 우선권을 갖는 스레드로 제공된다. 인터럽트 우선권이 적어도 하나의 스레드보다 높지 않으면, 블록 414에서 인터럽트는 큐에 저장된다. 상기 방법은 인터럽트 우선권이 적어도 하나의 스레드 우선권보다 높은지 여부를 결정하기 위해 블록 410으로 복귀되고 그리고 인터럽트 우선권이 적어도 하나의 스레드 우선권보다 높을 때까지 계속된다. 몇몇 실시예들에서, 스레드가 사용가능할 때 상기 인터럽트는 큐에 저장되고 스레드로 제공되고 그리고 상기 인터럽트는 큐에 있는 인터럽트들 및/또는 태스크들 중 가장 높은 우선권을 갖는다.
위에 개시된 특징들을 포함하는 예시적인 디바이스들
프로세서 스레드로 인터럽트를 할당할 수 있는 프로세서 유닛은 디지털 신호 프로세서들과 같은, 프로세서의 임의의 타입에 포함될 수 있다. 도 5-9들에서의 일반적인 다이어그램들은 인터럽트를 멀티스레드 프로세서 중 하나의 스레드로 할당하기 위한 프로세서 유닛을 통합할 수 있는 예시의 디바이스들을 도시한다.
도 5는 포터블 통신 디바이스(500)의 예시의 실시예를 도시하는 다이어그램이다. 도 5의 일반적인 다이어그램에서 도시된 바와 같이, 포터블 통신 디바이스는 디지털 신호 프로세서(DSP)(504)를 포함하는 온-칩 시스템(502)를 포함한다. 도 5의 일반적인 다이어그램은 DSP(504)에 연결된 디스플레이 제어기(506) 및 디스플레이(508)를 또한 도시한다. 더욱이, 입력 디바이스(510)는 DSP(504)에 연결된다. 도시된 바와 같이, 메모리(512)는 DSP(504)에 연결된다. 추가적으로, 코더/디코더(코덱)(514)는 DSP(504)에 연결될 수 있다. 스피커(516) 및 마이크로폰(518)은 코덱(514)에 연결될 수 있다.
도 5의 일반적인 다이어그램은 디지털 신호 프로세서(504) 및 무선 안테나(522)에 연결된 무선 제어기(520)를 상세하게 도시한다. 특정한 실시예에서, 전력 공급기(524)는 온-칩 시스템(502)에 연결된다. 디스플레이(508), 입력 디바이스(510), 스피커(516), 마이크로폰(518), 무선 안테나(522), 및 전력 공급기(524)는 온-칩 시스템(502)의 외부에(external) 있을 수 있다. 그러나, 각각은 온-칩 시스템(502)의 컴포넌트에 연결될 수 있다.
특정한 실시예에서, DSP(504)는 도 2 또는 3을 참조하여 기술된 바와 같은, 인터럽트들을 스레드에 할당할 수 있고 인터럽트 처리에 기인하는 레이턴시와 같은, 오버헤드를 감소시킬 수 있고, 그리고/또는 미리 실행된 높은 우선권 태스크를 허용할 수 있는 프로세서 유닛(562)을 포함한다. 예를 들어, DSP(504)는 스레드가 처리하고 있는 태스크의 우선권에 기반하여 각 스레드가 지정될 수 있는 멀티-스레드 프로세서일 수 있다. 프로세서 유닛(562)은 인터럽트를 수신할 수 있고 그리고 태스크를 처리하고 있지 않은 스레드 또는 낮은 우선권 스레드와 같은, 각 스레드의 우선권에 기반한 처리를 위하여 인터럽트를 전송할 스레드를 결정할 수 있다.
도 6은 셀룰러 전화(600)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 셀룰러 전화(600)는 서로 연결된 디지털 기저대역 프로세서(604) 및 아날로그 기저대역 프로세서(606)를 포함한다. 특정한 실시예에서, 디지털 기저대역 프로세서(604)는 디지털 신호 프로세서이다. 도 6의 일반적인 다이어그램에서 도시된 바와 같이, 디스플레이 제어기(608) 및 터치스크린 제어기(610)는 디지털 기저대역 프로세서(604)에 연결된다. 차례로, 온-칩 시스템(602)의 외부에 터치스크린 디스플레이(612)는 디스플레이 제어기(608) 및 터치스크린 제어기(610)에 연결된다.
도 6의 일반적인 다이어그램은 예컨대, 디지털 기저대역 프로세서(604)에 연결된, 위상 교대 라인(PAL) 인코더, SECAM(sequential couleur a memoire) 인코더, 또는 NTSC(national television system(s) committee) 인코더와 같은 비디오 인코더(614)를 추가적으로 도시한다. 더욱이, 비디오 증폭기(616)는 비디오 인코더(614) 및 터치스크린 디스플레이(612)에 연결된다. 또한, 비디오 포트(618)는 비디오 증폭기(616)에 연결된다. 범용 직렬 버스(USB) 제어기(620)는 디지털 기저대역 프로세서(604)에 연결된다. 또한, USB 포트(622)는 USB 제어기(620)에 연결된다. 메모리(624) 및 가입자 식별 모듈(SIM) 카드(626)은 디지털 기저대역 프로세서(604)에 또한 연결될 수 있다. 더욱이, 도 6의 일반적인 다이어그램에서 도시된 바와 같이, 디지털 카메라(628)는 디지털 기저대역 프로세서(604)에 연결될 수 있다. 예시적인 실시예에서, 디지털 카메라(628)는 전하-결합 디바이스(CCD) 카메라 또는 상보성 금속-산화물 반도체(CMOS) 카메라일 수 있다.
도 6의 일반적인 다이어그램에서 더욱 도시된 바와 같이, 스테레오 오디오 코덱(630)은 아날로그 기저대역 프로세서(606)에 연결될 수 있다. 더욱이, 오디오 증폭기(632)는 스테레오 오디오 코덱(630)에 연결될 수 있다. 예시적인 실시예에서, 제1 스테레오 스피커(634) 및 제2 스테레오 스피커(636)는 오디오 증폭기(632)에 연결된다. 마이크로폰 증폭기(638)는 스테레오 오디오 코덱(630)에 또한 연결될 수 있다. 추가적으로, 마이크로폰(640)은 마이크로폰 증폭기(638)에 연결될 수 있다. 특정한 실시예에서, 주파수 변조(FM) 무선 튜너(642)는 스테레오 오디오 코덱(630)에 연결될 수 있다. FM 안테나(644)는 FM 라디오 튜너(642)에 연결될 수 있다. 더욱이, 스테레오 헤드폰들(646)은 스테레오 오디오 코덱(630)에 연결될 수 있다.
도 6의 일반적인 다이어그램은 아날로그 기저대역 프로세서(606)에 연결될 수 있는 무선 주파수(RF) 트랜시버(648)를 추가적으로 도시한다. RF 스위치(650)는 RF 트랜시버(648) 및 RF 안테나(652)에 연결될 수 있다. 키패드(654)는 아날로그 기저대역 프로세서(606)에 연결될 수 있다. 또한, 마이크로폰을 갖는 모노 헤드셋(656)은 아날로그 기저대역 프로세서(606)에 연결될 수 있다. 추가적으로, 진동기(vibrator) 디바이스(658)는 아날로그 기저대역 프로세서(606)에 연결될 수 있다. 도 6의 일반적인 다이어그램은 온-칩 시스템(602)에 연결될 수 있는 전력 공급기(660)를 또한 도시한다. 특정한 실시예에서, 전력 공급기(660)는 셀룰러 전화(600)의 다양한 컴포넌트들에 전력을 제공하는 직류(DC) 전력 공급기이다. 더욱이, 특정한 실시예에서, 전력 공급기는 교류(AC) 전원에 연결된 교류 대 직류 변환기로부터 유도된 재충전가능한 DC 배터리 또는 DC 전력 공급기이다.
도 6의 일반적인 다이어그램에서 도시된 바와 같이, 터치스크린 디스플레이(612), 비디오 포트(618), USB 포트(622), 카메라(628), 제1 스테레오 스피커(634), 제2 스테레오 스피커(636), 마이크로폰(640), FM 안테나(644), 스테레오헤드폰들(646), RF 스위치(650), RF 안테나(652), 키패드(654), 모노 헤드셋(656), 진동기(658), 및 전력 공급기(660)는 온-칩 시스템(602)의 외부에 있을 수 있다. 특정한 실시예에서, 도 2 또는 3을 참조하여 개시된 바와 같은, 디지털 기저대역 프로세서(604)는 인터럽트들을 스레드들에 할당할 수 있고 그리고 인터럽트 프로세싱에 기인하는 레이턴시와 같은, 오버헤드를 감소시킬 수 있고, 그리고/ 또는 미리 실행된 우선권 태스크들을 허용하는 프로세서 유닛(602)을 포함할 수 있다. 예를 들어, DSP(604)는 스레드가 처리하고 있는 태스크의 우선권에 기반하여 지정될 수 있는 각 스레드에서 멀티-스레드 프로세서일 수 있다. 프로세서 유닛(662)은 인터럽트를 수신할 수 있고 그리고 태스크를 처리하고 있지 않은 스레드 또는 낮은 우선권 스레드와 같은, 각 스레드의 우선권에 기반한 처리를 위하여 인터럽트를 전송할 스레드를 결정할 수 있다.
도 7은 무선 인터넷 프로토콜(IP) 전화(700)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 무선 IP 전화(700)는 디지털 신호 프로세서(DSP)(704)를 포함하는 온-칩 시스템(702)을 포함한다. 디스플레이 제어기(706)는 DSP(704)에 연결될 수 있고 디스플레이(708)는 디스플레이 제어기(706)에 연결된다. 예시적인 실시예에서, 디스플레이(708)는 액정 디스플레이(LCD)이다. 도 7은 DSP(704)에 연결될 수 있는 키패드(710)를 추가적으로 도시한다.
플래쉬 메모리(712)는 DSP(704)에 연결될 수 있다. 동기식 동적 랜덤 액세스 메모리(SDRAM)(714), 정적 랜덤 액세스 메모리(SRAM)(716), 및 전기적으로 삭제가능한 프로그래머블 판독-전용 메모리(EEPROM)(718)가 DSP(704)에 또한 연결될 수 있다. 도 7의 일반적인 다이어그램은 발광 다이오드(LED)(720)가 DSP(704)에 연결될 수 있는 것을 또한 도시한다. 추가적으로, 특정한 실시예에서, 음성 코덱(722)이 DSP(704)에 연결될 수 있다. 증폭기(724)는 음성 코덱(722)에 연결될 수 있고 모노 스피커(726)는 증폭기(724)에 연결될 수 있다. 도 7의 일반적인 다이어그램은 음성 코덱(722)에 연결된 모노 헤드셋(728)을 추가적으로 도시한다. 특정한 실시예에서, 모노 헤드셋(728)은 마이크로폰을 포함한다.
무선 로컬 영역 네트워크(WLAN) 기저대역 프로세서(730)는 DSP(704)에 연결될 수 있다. RF 트랜시버(732)는 WLAN 기저대역 프로세서(730)에 연결될 수 있고 RF 안테나(734)는 RF 트랜시버(732)에 연결될 수 있다. 특정한 실시예에서, 블루투스 제어기(736)는 DSP(704)에 또한 연결될 수 있고 블루투스 안테나(738)는 제어기(736)에 연결될 수 있다. 도 7의 일반적인 다이어그램은 USB 포트(740)가 DSP(704)에 또한 연결될 수 있는 것을 또한 도시한다. 더욱이, 전력 공급기(742)는 온-칩 시스템(702)에 연결되고 무선 IP 전화(700)의 다양한 컴포넌트로 전력을 제공한다.
도 7의 일반적인 다이어그램에서 표시된 바와 같이, 디스플레이(708), 키패드(710), LED(720), 모노 스피커(726), 모노 헤드셋(728), RF 안테나(734), 블루투스 안테나(738), USB 포트(740), 및 전력 공급기(742)는 온-칩 시스템(702)의 외부에 있을 수 있고 온-칩 시스템(702)의 하나 이상의 컴포넌트에 연결될 수 있다. 특정한 실시예에서, DSP(704)는 도 2 또는 3을 참조하여 개시된 바와 같이, 인터럽트들을 스레드들에 할당할 수 있고 그리고 인터럽트 프로세싱에 기인하는 레이턴시와 같은, 오버헤드를 감소시킬 수 있고, 그리고/ 또는 미리 실행된 우선권 태스크들을 허용할 수 있는 프로세서 유닛(762)을 포함한다. 예를 들어, DSP(704)는 스레드가 처리하고 있는 태스크의 우선권에 기반하여 지정될 수 있는 각 스레드에서 멀티-스레드 프로세서일 수 있다. 프로세서 유닛(762)은 인터럽트를 수신할 수 있고 그리고 태스크를 처리하고 있지 않은 스레드 또는 낮은 우선권 스레드와 같은, 각 스레드의 우선권에 기반한 처리를 위하여 인터럽트를 전송할 상기 프로세서 유닛(762)으로의 스레드를 결정할 수 있다.
도 8은 포터블 디지털 어시스턴스(PDA)(800)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, PDA(800)는 디지털 신호 프로세서(DSP)(804)를 포함하는 온-칩 시스템(802)를 포함한다. 터치스크린 제어기(806) 및 디스플레이 제어기(808)는 DSP(804)에 연결된다. 더욱이, 터치스크린 디스플레이(810)는 터치스크린 제어기(806) 및 디스플레이 제어기(808)에 연결된다. 도 8의 일반적인 다이어그램은 키패드(812)가 DSP(804)에 연결될 수 있는 것을 또한 표시한다.
특정한 실시예에서, 스테레오 오디오 코덱(826)은 DSP(804)에 연결될 수 있다. 제1 스테레오 증폭기(828)는 스테레오 오디오 코덱(826)에 연결될 수 있고 제1 스테레오 스피커(830)는 제1 스테레오 증폭기(828)에 연결될 수 있다. 추가적으로, 마이크로폰 증폭기(832)는 스테레오 오디오 코덱(826)에 연결될 수 있고 마이크로폰(834)은 마이크로폰 증폭기(832)에 연결될 수 있다. 도 8의 일반적인 다이어그램은 스테레오 오디오 코덱(826)에 연결될 수 있는 제2 스테레오 증폭기(836) 및 제 2 스테레오 증폭기(836)에 연결될 수 있는 제2 스테레오 스피커(838)를 추가적으로 도시한다. 특정한 실시예에서, 스테레오 헤드폰들(840)은 스테레오 오디오 코덱(826)에 또한 연결될 수 있다.
도 8의 일반적인 다이어그램은 DSP(804)에 연결될 수 있는 802.11 제어기(842) 및 802.11 제어기(842)에 연결될 수 있는 802.11 안테나(844)를 또한 도시한다. 더욱이, 블루투스 제어기(846)는 DSP(804)에 연결될 수 있고 블루투스 안테나(848)는 블루투스 제어기(846)에 연결될 수 있다. USB 제어기(850)는 DSP(804)에 연결될 수 있고 USB 포트(852)는 USB 제어기(850)에 연결될 수 있다. 추가적으로, 스마트 카드(854), 즉, 멀티미디어 카드(MMC) 또는 보안 디지털 카드(SD)는 DSP(804)에 연결될 수 있다. 더욱이, 전력 공급기(856)는 온-칩 시스템(802)에 연결될 수 있고 PDA(800)의 다양한 컴포넌트에 전력을 공급할 수 있다.
도 8의 일반적인 다이어그램에 도시된 바와 같이, 디스플레이(810), 키패드(812), IrDA 포트(822), 디지털 카메라(824), 제1 스테레오 스피커(830), 마이크로폰(834), 제2 스테레오 스피커(838), 스테레오 헤드폰들(840), 802.11 안테나(844), 블루투스 안테나(848), USB 포트(852), 및 전력 공급기(856)는 온-칩 시스템(802)의 외부에 있을 수 있고 온-칩 시스템(802)을 통해 하나 이상의 컴포넌트에 연결될 수 있다. 특정한 실시예에서, DSP(804)는 도 2 또는 3을 참조하여 개시된 바와 같이, 스레드에 인터럽트를 할당할 수 있고 그리고 인터럽트 처리에 기인하는 레이턴시와 같은, 오버헤드를 감소시킬 수 있고 그리고/또는 미리 실행된 높은 우선권 태스크를 허용할 수 있는, 프로세서 유닛(862)을 포함한다. 예를 들어, DSP(804)는 스레드가 처리하고 있는 태스크의 우선권에 기반하여 우선권이 지정될 수 있는 각 스레드에 멀티스레드 프로세서일 수 있다. 프로세서 유닛(862)은 인터럽트를 수신할 수 있고 그리고 태스크를 처리하고 있지 않은 스레드 또는 낮은 우선권 스레드와 같은, 각 스레드의 우선권에 기반한 처리를 위한 인터럽트를 전송할 스레드를 결정할 수 있다.
도 9는 오디오 파일 플레이어(예컨대, MP3 플레이어)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 오디오 파일 플레이어(900)는 디지털 신호 프로세서(DSP)(904)를 포함하는 온-칩 시스템(902)을 포함한다. 디스플레이 제어기(906)는 DSP(904)에 연결될 수 있고 디스플레이(908)는 디스플레이 제어기(906)에 연결된다. 예시적인 실시예에서, 디스플레이(908)는 액정 디스플레이(LCD)일 수 있다. 키패드(910)는 DSP(904)에 연결될 수 있다.
도 9의 일반적인 다이어그램에서 추가적으로 도시된 바와 같이, 플래쉬 메모리(912) 및 판독 전용 메모리(ROM)(914)는 DSP(904)에 연결될 수 있다. 추가적으로, 특정한 실시예에서, 오디오 코덱(916)은 DSP(904)에 연결될 수 있다. 증폭기(918)는 오디오 코덱(916)에 연결될 수 있고 모노 스피커(920)는 증폭기(918)에 연결될 수 있다. 도 9의 일반적인 다이어그램은 마이크로폰 입력(922) 및 스테레오 입력(924)이 오디오 코덱(916)에 또한 연결될 수 있는 것을 추가적으로 표시한다. 특정한 실시예에서, 스테레오 헤드폰들(926)이 오디오 코덱(916)에 또한 연결될 수 있다.
USB 포트(928) 및 스마트 카드(930)는 DSP(904)에 연결될 수 있다. 추가적으로, 전력 공급기(932)는 온-칩 시스템(902)에 연결될 수 있고 오디오 파일 플레이어(900)의 다양한 컴포넌트들에 전력을 공급할 수 있다.
도 9의 일반적인 다이어그램에 도시된 바와 같이, 디스플레이(908), 키패드(910), 모노 스피커(920), 마이크로폰 입력(922), 스테레오 입력(924), 스테레오 헤드폰들(926), USB 포트(928), 및 전력 공급기(932)는 온-칩 시스템에 외부에 있을 수 있고 온-칩 시스템(902)을 통해 하나 이상의 컴포넌트에 연결된다. 특정한 실시예에서, DSP(904)는 도 2 또는 3을 참조하여 개시된 바와 같이, 스레드들에 인터럽트를 할당할 수 있고 그리고 인터럽트 처리에 기인한 레이턴시와 같은, 오버헤드를 감소시킬 수 있고 그리고/또는 미리 실행된 높은 우선권 태스크들을 허용하는 프로세서 유닛(962)을 포함한다. 예를 들어, DSP(904)는 스레드가 처리하고 있는 태스크의 우선권에 기반하여 우선권이 지정될 수 있는 각 스레드에 멀티-스레드 프로세서일 수 있다. 프로세서 유닛(962)은 인터럽트를 수신할 수 있고 그리고 태스크를 처리하지 않는 스레드 또는 낮은 우선권 스레드와 같은, 각 스레드의 우선권에 기반한 처리를 위하여 인터럽트를 전송할 스레드를 결정할 수 있다.
일반론
여기서 개시된 발명의 개념들의 실시예들의 앞서 언급한 기술(description)은 도시 및 기술의 목적을 위하여 단지 제시되었고 그리고 개시된 정확한 형태들로 여기에 개시된 발명의 개념들을 규명하거나(exhaustive) 또는 제한하는 것으로 의도되는 것은 아니다. 다양한 변경(modification)들 및 적응(adaptation)들은 여기서 개시된 발명의 개념들의 정신 및 범위를 벗어남이 없이 본 기술분야에서 통상의 지식을 가진 자들에게 명백하다.

Claims (20)

  1. 멀티스레드(multithreaded) 프로세서로서,
    복수의 스레드들 ― 상기 복수의 스레드들의 각각은 태스크(task)를 실행할 수 있음 ― ; 및
    상기 복수의 스레드들의 각각에 대한 우선권(priority)을 식별하고 그리고 인터럽트(interrupt)를 상기 복수의 스레드들 중 하나의 스레드의 우선권에 적어도 기반하여 상기 복수의 스레드들 중 하나의 스레드에 할당하도록 구성되는 인터럽트 모듈을 포함하는, 멀티스레드 프로세서.
  2. 제 1항에 있어서,
    스레드에 대한 상기 우선권은 상기 스레드에 의해 실행되는 태스크의 우선권에 대응하는, 멀티스레드 프로세서.
  3. 제1 항에 있어서,
    복수의 레지스터들 ― 상기 복수의 레지스터들의 각각은 상기 복수의 스레드들 중 하나의 스레드에 대응하고, 상기 복수의 레지스터들은 스레드 우선권들을 저장하도록 구성됨 ― ; 및
    상기 복수의 레지스터들에 연결된(coupled) 우선권 인코더 ― 상기 우선권 인코더는 상기 인터럽트 모듈에 가장 낮은 우선권을 갖는 상기 복수의 스레드들 중 하나의 스레드를 식별하도록 구성됨 ― 을 포함하는, 멀티스레드 프로세서.
  4. 제3 항에 있어서,
    상기 인터럽트 모듈은 상기 인터럽트를 가장 낮은 우선권을 갖는 상기 복수의 스레드들 중 하나의 스레드에 할당함으로써 상기 인터럽트를 가장 낮은 우선권을 갖는 상기 복수의 스레드들 중 하나로 지정(assign)하도록 구성되고, 상기 복수의 스레드들 중 하나의 스레드는 태스크 처리(processing)를 중단하고 상기 인터럽트를 처리하도록 구성되는, 멀티스레드 프로세서.
  5. 제4 항에 있어서,
    상기 인터럽트는 인터럽트 핸들러(handler)와 연관되고; 그리고
    상기 복수의 스레드들 중 하나의 핸들러는 상기 인터럽트 핸들러를 처리함으로써 상기 인터럽트를 처리하도록 구성되는, 멀티스레드 프로세서.
  6. 제1 항에 있어서,
    상기 인터럽트 모듈은 상기 복수의 스레드들 중 하나 이상의 스레드가 대기(wait) 모드에 있는지를 결정하고 그리고 대기 모드에 있는 상기 복수의 스레드들 중 상기 하나 이상의 스레드 각각에 대하여 가장 낮은 우선권을 결정함으로써 상기 복수의 스레드들의 각각에 대한 상기 우선권을 식별하도록 구성되고; 그리고
    상기 인터럽트 모듈은 상기 인터럽트를 가장 낮은 우선권을 갖는 상기 복수의 스레드들 중 하나로 지정하도록 구성되는, 멀티스레드 프로세서.
  7. 제1 항에 있어서,
    상기 인터럽트 모듈은 상기 복수의 스레드들의 상기 우선권에 기반하여 대기 모드에 있는 상기 복수의 스레드들 중 하나를 식별하고 그리고 상기 인터럽트를 대기 모드에 있는 상기 복수의 스레드들 중 하나에 할당하도록 구성되는, 멀티스레드 프로세서.
  8. 제1 항에 있어서,
    상기 멀티스레드 프로세서는 포터블 통신 디바이스에 배치(disposed)되는, 멀티스레드 프로세서.
  9. 방법으로서,
    제1 스레드 상에서 제1 태스크를 실행하는 단계;
    제2 스레드 상에서 제2 태스크를 실행하는 단계;
    상기 제1 태스크의 우선권에 기반하여 상기 제1 스레드에 대한 제1 우선권을 결정하는 단계;
    상기 제2 태스크의 우선권에 기반하여 상기 제2 스레드에 대한 제2 우선권을 결정하는 단계;
    인터럽트 우선권을 갖는 인터럽트를 수신하는 단계; 및
    인터럽트 우선권, 제1 우선권, 및 제2 우선권에 기반하여 인터럽트를 할당하는 단계를 포함하는, 방법.
  10. 제 9항에 있어서,
    대기 모드에 있는 제3 스레드를 식별하는 단계를 더 포함하고; 그리고
    상기 인터럽트를 할당하는 단계는 대기 모드에 있는 상기 제3 스레드에 기반하고, 상기 인터럽트를 상기 제3 스레드로 지정하는 것을 포함하는, 방법.
  11. 제9 항에 있어서,
    상기 인터럽트를 할당하는 단계는,
    상기 제1 우선권이 상기 제2 우선권보다 높은지를 결정하는 단계;
    상기 제2 태스크를 중단하는 단계; 및
    처리를 위하여 상기 인터럽트를 상기 제2 스레드에 제공하는 단계를 포함하는, 방법.
  12. 제11 항에 있어서,
    상기 인터럽트를 할당하는 단계는,
    상기 인터럽트 우선권이 상기 제2 우선권보다 높은지를 결정하는 단계를 포함하는, 방법.
  13. 제11 항에 있어서,
    상기 인터럽트와 연관된 인터럽트 핸들러를 처리함으로써 상기 제2 스레드에 의해 상기 인터럽트를 처리하는 단계를 더 포함하는, 방법.
  14. 제9 항에 있어서,
    상기 인터럽트를 할당하는 단계는
    상기 인터럽트 우선권이 상기 제1 우선권 및 상기 제2 우선권보다 낮은지를 결정하는 단계; 및
    상기 인터럽트를 큐(queue)에 할당하는 단계를 포함하는, 방법.
  15. 프로세서 유닛으로서,
    실행 유닛 및 인터럽트 유닛을 포함하며,
    상기 실행 유닛은,
    제1 우선권과 연관된 제1 태스크를 실행하도록 구성된 제1 스레드;
    상기 제1 우선권에 대응하는 제1 스레드 우선권을 저장하도록 구성된 제1 레지스터;
    제2 우선권과 연관된 제2 태스크를 실행하도록 구성된 제2 스레드; 및
    상기 제2 우선권에 대응하는 제2 스레드 우선권을 저장하도록 구성된 제2 레지스터를 포함하며,
    상기 인터럽트 모듈은 인터럽트를 수신하고 그리고 상기 제1 스레드 우선권 및 상기 제2 스레드 우선권에 부분적으로 기반하여 상기 인터럽트에 대한 할당을 결정하도록 구성되는, 프로세서 유닛.
  16. 제15 항에 있어서,
    상기 인터럽트 모듈은
    인터럽트 우선권이 상기 제1 스레드 우선권보다 높은지를 결정하고; 그리고
    상기 인터럽트를 상기 제1 스레드에 제공함으로써 상기 인터럽트를 상기 제1 스레드에 할당하도록 구성되고,
    상기 제1 스레드는 상기 제1 태스크의 처리를 중지하고 상기 인터럽트를 처리하도록 구성되는, 프로세서 유닛.
  17. 제16 항에 있어서,
    상기 실행 모듈은 상기 제1 태스크를 저장하고 그리고 상기 인터럽트 우선권에 대응하게 상기 제1 우선권을 변경(modify)하도록 구성되는, 프로세서 유닛.
  18. 제16 항에 있어서,
    상기 제1 스레드는 상기 인터럽트와 연관된 인터럽트 핸들러를 처리함으로써 상기 인터럽트를 처리하는, 프로세서 유닛.
  19. 제15 항에 있어서,
    상기 실행 모듈은 대기 모드에서 구성되는 제3 스레드, 상기 대기 모드를 표시하는 제3 스레드 우선권을 저장하도록 구성되는 제3 레지스터를 포함하고; 그리고
    상기 인터럽트 모듈은 상기 인터럽트를 상기 제3 우선권에 기반하여 상기 제3 스레드에 할당하도록 구성되는, 프로세서 유닛.
  20. 제15 항에 있어서,
    상기 프로세서 유닛은 포터블 통신 디바이스에 배치되는, 프로세서 유닛.
KR1020117008943A 2008-09-19 2009-09-16 멀티 스레드 프로세서에서 인터럽트들을 할당하기 위한 방법들 및 시스템들 KR101346135B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/233,688 US8656145B2 (en) 2008-09-19 2008-09-19 Methods and systems for allocating interrupts in a multithreaded processor
US12/233,688 2008-09-19
PCT/US2009/057123 WO2010033569A1 (en) 2008-09-19 2009-09-16 Methods and systems for allocating interrupts in a multithreaded processor

Publications (2)

Publication Number Publication Date
KR20110081987A true KR20110081987A (ko) 2011-07-15
KR101346135B1 KR101346135B1 (ko) 2013-12-31

Family

ID=41258767

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117008943A KR101346135B1 (ko) 2008-09-19 2009-09-16 멀티 스레드 프로세서에서 인터럽트들을 할당하기 위한 방법들 및 시스템들

Country Status (9)

Country Link
US (1) US8656145B2 (ko)
EP (1) EP2347334B1 (ko)
JP (2) JP5575774B2 (ko)
KR (1) KR101346135B1 (ko)
CN (1) CN102150135B (ko)
HR (1) HRP20161316T1 (ko)
SM (1) SMT201600453B (ko)
TW (1) TW201023043A (ko)
WO (1) WO2010033569A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013027951A1 (ko) * 2011-08-23 2013-02-28 삼성전자 주식회사 멀티 코어 시스템의 인터럽트 할당 방법 및 장치
KR20190045001A (ko) * 2017-10-23 2019-05-02 삼성전자주식회사 처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739242B (zh) * 2009-11-27 2013-07-31 深圳中微电科技有限公司 一种流数据处理方法及流处理器
CN101976206B (zh) * 2010-10-28 2016-04-20 北京中星微电子有限公司 一种中断处理方法和装置
US8713235B2 (en) * 2011-05-02 2014-04-29 Fairchild Semiconductor Corporation Low latency interrupt collector
DE102012220365A1 (de) * 2011-11-10 2013-05-16 Nvidia Corp. Aufgabe-Thread-Feld-Granularität-Ausführung-Präemption
US9411641B2 (en) * 2012-10-04 2016-08-09 Lawrence J. Dickson Method and apparatus implemented in processors for real-time scheduling and task organization based on response time order of magnitude
US10089142B2 (en) * 2013-08-21 2018-10-02 Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh Dynamic task prioritization for in-memory databases
US9460033B2 (en) * 2013-12-27 2016-10-04 Cavium, Inc. Apparatus and method for interrupt collecting and reporting status and delivery information
US9417876B2 (en) * 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9619012B2 (en) * 2014-05-30 2017-04-11 Apple Inc. Power level control using power assertion requests
US9396089B2 (en) 2014-05-30 2016-07-19 Apple Inc. Activity tracing diagnostic systems and methods
US9760511B2 (en) * 2014-10-08 2017-09-12 International Business Machines Corporation Efficient interruption routing for a multithreaded processor
US9753766B2 (en) * 2014-11-25 2017-09-05 Raytheon Company Apparatus and method for allocating resources using prioritization of requests and updating of requests
US10248463B2 (en) * 2015-02-13 2019-04-02 Honeywell International Inc. Apparatus and method for managing a plurality of threads in an operating system
US20180203813A1 (en) * 2015-09-29 2018-07-19 Shannon Systems Ltd. Methods for processing return entities associated with multiple requests in single interrupt service routine thread and apparatuses using the same
CN107193761B (zh) * 2016-03-15 2021-07-27 厦门旌存半导体技术有限公司 队列优先级仲裁的方法与装置
US10069949B2 (en) 2016-10-14 2018-09-04 Honeywell International Inc. System and method for enabling detection of messages having previously transited network devices in support of loop detection
US10261799B2 (en) 2017-02-28 2019-04-16 International Business Machines Corporation Programmatic implicit multithreading
CN109583577B (zh) 2017-09-29 2021-04-23 上海寒武纪信息科技有限公司 运算装置及方法
CN107578014B (zh) 2017-09-06 2020-11-03 上海寒武纪信息科技有限公司 信息处理装置及方法
US20200110635A1 (en) 2017-07-05 2020-04-09 Shanghai Cambricon Information Technology Co., Ltd. Data processing apparatus and method
WO2019007406A1 (zh) * 2017-07-05 2019-01-10 上海寒武纪信息科技有限公司 一种数据处理装置和方法
CN109213581B (zh) * 2017-07-05 2021-06-08 上海寒武纪信息科技有限公司 一种数据处理装置和方法
US10810086B2 (en) 2017-10-19 2020-10-20 Honeywell International Inc. System and method for emulation of enhanced application module redundancy (EAM-R)
US10423550B2 (en) * 2017-10-25 2019-09-24 International Business Machines Corporation Managing efficient selection of a particular processor thread for handling an interrupt
TWI639955B (zh) * 2017-11-06 2018-11-01 晨星半導體股份有限公司 多處理器系統及其處理器管理方法
KR102442921B1 (ko) 2017-12-11 2022-09-13 삼성전자주식회사 디지털 시그널 프로세서(dsp)의 태스크 관리 효율을 높일 수 있는 전자 장치
US20190196867A1 (en) * 2017-12-21 2019-06-27 Qualcomm Incorporated System and method of priority-based interrupt steering
US10783026B2 (en) 2018-02-15 2020-09-22 Honeywell International Inc. Apparatus and method for detecting network problems on redundant token bus control network using traffic sensor
US10691490B2 (en) * 2018-07-06 2020-06-23 Apple Inc. System for scheduling threads for execution
CN109117260B (zh) * 2018-08-30 2021-01-01 百度在线网络技术(北京)有限公司 一种任务调度方法、装置、设备和介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4636944A (en) * 1984-01-17 1987-01-13 Concurrent Computer Corporation Multi-level priority micro-interrupt controller
US4804348A (en) 1987-08-05 1989-02-14 Bondi Francesco Animated toy puppet theater
US5197138A (en) * 1989-12-26 1993-03-23 Digital Equipment Corporation Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching
US5613128A (en) * 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
JPH04302353A (ja) * 1991-03-29 1992-10-26 Toshiba Corp 対称形マルチプロセッサ計算機のタイマ割込み方式
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
JPH06159941A (ja) 1992-11-24 1994-06-07 Kawasaki Steel Corp 電気炉水冷式出滓口構造
US5511200A (en) * 1993-12-01 1996-04-23 Intel Corporation Method and apparatus for providing an enhanced programmable priority interrupt controller
EP0827085B1 (en) * 1996-08-20 2006-03-29 Compaq Computer Corporation Method and apparatus for distributing interrupts in a scalable symmetric multiprocessor system without changing the bus width or bus protocol
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6295573B1 (en) * 1999-02-16 2001-09-25 Advanced Micro Devices, Inc. Point-to-point interrupt messaging within a multiprocessing computer system
US8041754B1 (en) * 2000-01-22 2011-10-18 Intel Corporation Establishing thread priority in a processor or the like
JP4302353B2 (ja) 2002-01-25 2009-07-22 マスプロ電工株式会社 保安器
US20060212869A1 (en) 2003-04-14 2006-09-21 Koninklijke Philips Electronics N.V. Resource management method and apparatus
JP2005004562A (ja) 2003-06-13 2005-01-06 Canon Inc マルチプロセッサシステム、マルチプロセッサシステムの制御方法、およびマルチプロセッサシステムの制御プログラム
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
JP2006243865A (ja) 2005-03-01 2006-09-14 Seiko Epson Corp プロセッサおよび情報処理方法
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US7260663B2 (en) * 2005-04-07 2007-08-21 International Business Machines Corporation System and method for presenting interrupts
US7552236B2 (en) * 2005-07-14 2009-06-23 International Business Machines Corporation Routing interrupts in a multi-node system
US7702889B2 (en) * 2005-10-18 2010-04-20 Qualcomm Incorporated Shared interrupt control method and system for a digital signal processor
US7913255B2 (en) * 2005-10-20 2011-03-22 Qualcomm Incorporated Background thread processing in a multithread digital signal processor
JP4222370B2 (ja) * 2006-01-11 2009-02-12 セイコーエプソン株式会社 デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
US20070266231A1 (en) 2006-05-15 2007-11-15 Huey-Tyug Chua Portable Electronic Device and Method for Loading Resource Data of the Portable Electronic Device
US7870372B2 (en) * 2006-08-14 2011-01-11 Marvell World Trade Ltd. Interrupt handling

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013027951A1 (ko) * 2011-08-23 2013-02-28 삼성전자 주식회사 멀티 코어 시스템의 인터럽트 할당 방법 및 장치
KR20190045001A (ko) * 2017-10-23 2019-05-02 삼성전자주식회사 처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치

Also Published As

Publication number Publication date
KR101346135B1 (ko) 2013-12-31
EP2347334B1 (en) 2016-09-14
CN102150135B (zh) 2015-02-11
JP5575774B2 (ja) 2014-08-20
JP2012503254A (ja) 2012-02-02
JP5792351B2 (ja) 2015-10-07
JP2014179119A (ja) 2014-09-25
US20100077399A1 (en) 2010-03-25
CN102150135A (zh) 2011-08-10
WO2010033569A1 (en) 2010-03-25
TW201023043A (en) 2010-06-16
SMT201600453B (it) 2017-01-10
US8656145B2 (en) 2014-02-18
EP2347334A1 (en) 2011-07-27
HRP20161316T1 (hr) 2017-02-10

Similar Documents

Publication Publication Date Title
KR101346135B1 (ko) 멀티 스레드 프로세서에서 인터럽트들을 할당하기 위한 방법들 및 시스템들
JP2012503254A5 (ko)
KR100746797B1 (ko) 프로세서 및 정보처리 방법
KR101798369B1 (ko) 휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법
JP5280521B2 (ja) 分岐予測における使用のためのマルチモードレジスタファイル
JP4148223B2 (ja) プロセッサおよび情報処理方法
CN102341780B (zh) 实时多线程调度器及调度方法
US7979861B2 (en) Multi-processor system and program for causing computer to execute controlling method of multi-processor system
US7853743B2 (en) Processor and interrupt controlling method
EP2972834B1 (en) Systems and methods of executing multiple hypervisors
US9715392B2 (en) Multiple clustered very long instruction word processing core
JP4609113B2 (ja) プロセッサ
US20110283083A1 (en) Configuring Surrogate Memory Accessing Agents Using Non-Priviledged Processes
US8706923B2 (en) Methods and systems for direct memory access (DMA) in-flight status
JP2007233608A (ja) 割込み制御装置及び割込み制御方法をコンピュータに実行させるためのプログラム。

Legal Events

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

Payment date: 20161125

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 7