KR20110127757A - 실시간 멀티스레드 스케줄러 및 스케줄링 방법 - Google Patents

실시간 멀티스레드 스케줄러 및 스케줄링 방법 Download PDF

Info

Publication number
KR20110127757A
KR20110127757A KR1020117024405A KR20117024405A KR20110127757A KR 20110127757 A KR20110127757 A KR 20110127757A KR 1020117024405 A KR1020117024405 A KR 1020117024405A KR 20117024405 A KR20117024405 A KR 20117024405A KR 20110127757 A KR20110127757 A KR 20110127757A
Authority
KR
South Korea
Prior art keywords
task
priority
tasks
execution
thread
Prior art date
Application number
KR1020117024405A
Other languages
English (en)
Other versions
KR101350851B1 (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 KR20110127757A publication Critical patent/KR20110127757A/ko
Application granted granted Critical
Publication of KR101350851B1 publication Critical patent/KR101350851B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

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

Abstract

특정 실시예에서, 제 1 스레드에서 인터럽트를 수신하는 단계를 포함하며, 상기 제 1 스레드는 제 1 시간에 프로세서에서 복수의 실행 스레드들 중 최하위 우선순위 스레드를 포함하는 방법이 개시된다. 상기 방법은 또한 제 2 스레드를 식별하는 단계를 포함하며, 상기 제 2 스레드는 제 2 시간에 프로세서에서의 복수의 실행 스레드들 중 최하위 우선순위 스레드를 포함한다. 상기 방법은 후속하는 인터럽트를 상기 제 2 스레드에 지시하는 단계를 더 포함한다.

Description

실시간 멀티스레드 스케줄러 및 스케줄링 방법{REAL-TIME MULTITHREADED SCHEDULER AND SCHEDULING METHOD}
본 발명은 일반적으로 실시간 멀티스레드 스케줄러 및 스케줄링 방법에 관한 것이다.
기술의 진보들로 인해 더 소형이고 더 강력한 컴퓨팅 디바이스들이 발생하였다. 예를 들어, 소형이고, 경량이며 사용자들에 의해 용이하게 운반되는, 휴대용 무선 전화들, 개인 휴대 정보 단말들(PDAs) 및 페이징 디바이스들과 같은 무선 컴퓨팅 디바이스들을 포함하는 다양한 휴대용 개인용 컴퓨팅 디바이스들이 현재 존재한다. 더 구체적으로, 셀룰러 전화들 및 인터넷 프로토콜(IP) 전화들과 같은 휴대용 무선 전화들은 무선 네트워크들을 통해 음성 및 데이터 패킷들을 전달할 수 있다. 더욱이, 많은 그와 같은 무선 전화들은 그 안에 통합되는 다른 타입들의 디바이스들을 포함한다. 예를 들어, 무선 전화들은 또한 디지털 스틸 카메라, 디지털 비디오 카메라, 디지털 녹음기 및 오디오 파일 플레이어를 포함할 수 있다. 또한, 그와 같은 무선 전화들은 인터넷을 액세스하는데 사용될 수 있는 웹 브라우저 애플리케이션과 같은 소프트웨어 애플리케이션들을 포함하는 실행가능한 명령들을 프로세싱할 수 있다. 그와 같이, 이들 무선 전화들은 상당한 컴퓨팅 능력들을 포함할 수 있다.
디지털 신호 프로세서들(DSPs), 화상 프로세서들 및 다른 프로세싱 디바이스들은 종종 휴대용 개인 컴퓨팅 디바이스들에 사용되며 운영 시스템과 함께 동작한다. 실시간 운영 시스템(RTOS)의 일 요건은 엄격한 우선순위 스케줄링이다. 단일 프로세서상에서, 상기 요건은 최상위 우선순위 실행가능 태스크가 스케줄링되어야 하는 것이다. 전형적으로, 다수 중앙 프로세싱 유닛들(CPUs)을 갖는 멀티스레드 또는 멀티프로세서 시스템에서, 특정 태스크가 특정 하드웨어 스레드 또는 CPU에 매여있으며 단일-프로세서 스케줄러 알고리즘이 각 하드웨어 스레드 또는 CPU에 독립적으로 실행된다. 상기 방식은 상기 최상위 우선순위 실행가능 태스크들 전체가 스케줄링되어야 하는 RTOS 제약을 만족시키지 않으며, 이용가능하지 않을 수 있는 지식인, 앞선 시간에 상기 태스크를 무슨 하드웨어 스레드 또는 CPU가 스케줄링하는지의 지식을 필요로 한다.
특정 실시예에서, 제 1 스레드에서의 인터럽트를 수신하는 단계를 포함하는 방법이 개시되며, 상기 제 1 스레드는 제 1 시간에 프로세서에서의 복수의 실행 스레드들 중 최하위 우선순위 스레드를 포함한다. 상기 방법은 또한 제 2 스레드를 식별하는 단계를 포함하며, 상기 제 2 스레드는 제 2 시간에 프로세서에서의 복수의 실행 스레드들 중 최하위 우선순위를 포함한다. 상기 방법은 후속하는 인터럽트를 상기 제 2 스레드에 지시하는 단계를 더 포함한다.
다른 실시예에서, 스레드들의 세트의 제 1 스레드에서 인터럽트를 수신하는 단계를 포함하는 방법이 개시된다. 상기 스레드들의 세트의 각 스레드는 실행 태스크들의 세트의 개별적인 태스크를 실행한다. 실행 태스크들의 세트의 각 태스크 및 준비 태스크들의 세트의 각 태스크는 개별적인 우선순위를 갖는다. 상기 방법은 또한 상기 실행 태스크들의 세트의 각 태스크가 준비 태스크들의 세트의 모든 태스크의 우선순위보다 크거나 같은 우선순위를 가질 때까지, 실행 태스크들의 세트의 최하위 우선순위 태스크를 상기 준비 태스크들의 세트의 최상위 우선순위 태스크와 반복적으로 스와핑하는 단계를 포함한다.
다른 실시예에서, 복수의 실행 스레드들이 상기 최상위 우선순위 태스크들을 실행하기 위해서 복수의 스레드들을 실행하도록 구성된 멀티스레드 프로세서를 포함하는 시스템이 개시된다. 상기 멀티스레드 프로세서는 실행 태스크들이 적어도 모든 준비 태스크들의 최상위 우선순위만큼 높은 우선순위를 갖게 하기 위해 태스크들을 스케줄링하도록 구성된다.
다른 실시예에서, 컴퓨터-판독가능한 매체가 개시된다. 상기 컴퓨터-판독가능한 매체는 컴퓨터로 하여금 복수의 실행 스레드들 중 최하위 우선순위 스레드에 인터럽트를 지시하게 하도록 실행가능한 컴퓨터 실행가능한 명령들을 포함한다. 상기 인터럽트는 적어도 하나의 태스크가 실행될 준비가 되었음을 표시한다. 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드는 최하위 우선순위 태스크를 실행하거나 휴지 스레드이다. 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드는 상기 인터럽트를 수신하고 준비 태스크 목록으로부터 최상위 우선순위를 선택하도록 인터럽트 루틴을 개시한다.
개시된 실시예들에 의해 제공된 하나의 특정 장점은 상기 최상위 우선순위 스레드들이 인터럽트들로부터의 방해가 감소된 채로 실행되도록 태스크들이 스케줄링되는 것이다. 낮은 우선순위 스레드는 인터럽트들을 수신하기 때문에, 재스케줄 인터럽트를 높이는 것은 최상위 우선순위 스레드들을 방해하지 않고서 상기 낮은 우선순위 스레드를 자동으로 재스케줄링한다. 추가로, 외부 인터럽트는 상기 최상위 우선순위 스레드들보다 오히려 상기 최하위 우선순위 스레드를 인터럽트할 것이다.
개시된 실시예들에 의해 제공된 다른 특정 장점은 다수의 태스크들이 실행할 준비가 되어 있으며 하나 이상의 실행 태스크보다 높은 우선순위에 있는 시나리오에서, 상기 낮은 우선순위 실행 태스크들은 최소 수의 스왑들을 갖으며 실행하는 다른 높은 우선순위 태스크들에 대한 오버헤드 없이 상기 새로운 더 높은 우선순위 태스크들과 스와핑된다는 것이다.
개시된 실시예들에 의해 제공된 다른 장점은 상기 인터럽트 핸들러 스레드의 우선순위가 현재-실행하는 스레드의 우선순위와 직접 비교될 수 있다는 것이다. 상기 현재-실행하는 스레드가 상기 인터럽트 핸들러 스레드보다 낮은 우선순위를 갖는 경우, 상기 인터럽트 핸들러 스레드는 즉시 스케줄링될 수 있다.
본 발명의 다른 양상들, 장점들 및 특징들은 다음의 섹션들: 도면의 간단한 설명, 상세한 설명 및 청구범위를 포함하는 전체 출원을 검토한 후에 명백해질 것이다.
도 1은 프로세싱 시스템의 특정한 예시적인 실시예의 블록도이다.
도 2는 최하위 우선순위 실행 스레드에 지시된 인터럽트를 도시하는 프로세싱 시스템의 다른 특정 예시적인 실시예의 블록도이다.
도 3은 태스크 스와핑을 도시하는, 도 2의 프로세싱 시스템의 특정한 예시적인 실시예의 블록도이다.
도 4는 최하위 우선순위 실행 스레드에 지시된 다른 인터럽트를 도시하는, 도 2의 프로세싱 시스템의 특정한 예시적인 실시예의 블록도이다.
도 5는 준비 태스크 목록으로부터 실행 태스크 목록으로 이동하는 태스크를 도시하는, 도 2의 프로세싱 시스템의 특정한 예시적인 실시예의 블록도이다.
도 6은 최하위 우선순위 실행 스레드에 지시된 다른 인터럽트를 도시하는, 도 2의 프로세싱 시스템의 특정한 예시적인 실시예의 블록도이다.
도 7은 태스크 스와핑을 도시하는, 도 2의 프로세싱 시스템의 특정한 예시적인 실시예의 블록도이다.
도 8은 최하위 우선순위 실행 스레드에 지시된 다른 인터럽트를 도시하는, 도 2의 프로세싱 시스템의 특정한 예시적인 실시예의 블록도이다.
도 9는 태스크 스와핑을 도시하는, 도 2의 프로세싱 시스템의 특정한 예시적인 실시예의 블록도이다.
도 10a-10c는 멀티스레드 프로세서상에서 실시간으로 태스크들을 스케줄링하는 방법의 제 1 예시적인 실시예의 흐름도이다.
도 11은 멀티스레드 프로세서상에서 실시간으로 태스크들을 스케줄링하는 방법의 제 2 예시적인 실시예의 흐름도이다.
도 12는 멀티스레드 프로세서상에서 실시간으로 태스크들을 스케줄링하는 방법의 제 3 예시적인 실시예의 흐름도이다.
도 13은 멀티스레드 프로세서상에서 실시간으로 태스크들을 스케줄링하는 방법의 제 4 예시적인 실시예의 흐름도이다.
도 14는 실시간 멀티스레드 스케줄러 모듈을 포함하는 휴대용 통신 디바이스의 특정 실시예의 블록도이다.
도 1을 참조하면, 프로세싱 시스템의 특정 예시적인 실시예가 도시되며 일반적으로 100으로 지정된다. 상기 멀티스레드 프로세서(100)는 버스 인터페이스(108)를 통해 명령 캐시(110)에 결합되는 메모리(102)를 포함한다. 상기 멀티스레드 프로세서(100)는 또한 버스 인터페이스(108)를 통해 상기 메모리(102)에 결합되는 데이터 캐시(112)를 포함한다. 상기 명령 캐시(110)는 버스(111)를 통해 시퀀서(114)에 결합된다. 특정 예에서, 상기 시퀀서(114)는 또한 인터럽트 레지스터(도시되지 않음)로부터 검색될 수 있는 일반 인터럽트들(116)을 수신할 수 있다. 특정 실시예에서, 상기 명령 캐시(110)는 상기 멀티스레드 프로세서(100)의 특정 스레드들과 관련되며 상기 버스(111)에 결합될 수 있는 복수의 현재 명령 레지스터들을 통해 상기 시퀀서(114)에 결합될 수 있다. 특정 실시예에서, 상기 멀티스레드 프로세서(100)는 6개의 스레드들을 포함하는 인터리빙 멀티스레드 프로세서이다.
특정 실시예에서, 상기 버스(111)는 64-비트 버스이고 상기 시퀀서(114)는 각각 32 비트들의 길이를 갖는 다수 명령들을 포함하는 명령 패킷들을 통해 상기 메모리(102)로부터 명령들을 검색하도록 구성된다. 상기 버스(111)는 제 1 명령 실행 유닛(118), 제 2 명령 실행 유닛(120), 제 3 명령 실행 유닛(122) 및 제 4 명령 실행 유닛(124)에 결합된다. 각 명령 실행 유닛(118, 120, 122, 124)은 제 2 버스(128)를 통해 일반 레지스터 파일(126)에 결합될 수 있다. 상기 일반 레지스터 파일(126)은 또한 제 3 버스(130)를 통해 상기 시퀀서(114) 및 데이터 캐시(112) 및 메모리(102)에 결합될 수 있다.
상기 멀티스레드 프로세서(100)는 또한 상기 프로세싱 스레드들 각각 상에서 무슨 태스크들을 실행할지를 결정하기 위해 실시간 우선순위 스케줄러(158) 및 인터럽트 제어기(156)를 포함하는 제어 유닛(150)에 의해 액세스될 수 있는 하나 이상의 우선순위 설정들을 저장하도록 감독 제어 레지스터들(132)을 포함할 수 있다. 상기 실시간 우선순위 스케줄러(158)는 소프트웨어 루틴으로서 구현될 수 있다. 각 프로세싱 스레드는 상기 특정 스레드에 전용되는 감독 상태 레지스터에 저장된 하나 이상의 비트 값들과 같은, 하나 이상의 관련 우선순위 설정들을 가질 수 있다.
동작 동안, 상기 멀티스레드 프로세서(100)는 복수의 실행 스레드들이 최상위 우선순위 태스크들을 실행하도록 복수의 스레드들을 실행하며, 여기서 상기 멀티스레드 프로세서(100)는 모든 실행 태스크들이 적어도 모든 준비 태스크들의 최상위 우선순위만큼 높은 우선순위를 갖도록 태스크들을 스케줄링한다. 특정 실시예에서, 상기 실시간 우선순위 스케줄러(158)는 모든 실행 태스크들이 적어도 모든 준비 태스크들의 최상위 우선순위만큼 높은 우선순위를 갖도록 태스크들을 스케줄링한다. 특정 실시예에서, 상기 멀티스레드 프로세서(100)는 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드에 지시된 인터럽트가 상기 복수의 실행 스레드들 중 최상위 우선순위 스레드들의 성능에 영향을 주지 않도록 구성된다. 예를 들어, 상기 인터럽트 제어기(156)는 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드에 지시된 인터럽트가 상기 복수의 실행 스레드들 중 최상위 우선순위 스레드들의 성능에 영향을 주지 않도록 구성될 수 있다. 본 명세서에 사용된 바와 같이, 인터럽트는 통상의 실행을 중단하고 특정 핸들러의 실행을 시작하는 것일 수 있다. 인터럽트는 통상의 프로그램 흐름의 임의의 중단을 의미할 수 있다.
특정 실시예에서, 상기 멀티스레드 프로세서(100)는 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드가 인터럽트를 수신하고 준비 태스크 목록으로부터 최상위 우선순위 태스크를 선택하기 위해 인터럽트 루틴을 실행하도록 구성된다. 예를 들어, 상기 인터럽트 제어기(156)는 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드가 인터럽트를 수신하도록 구성될 수 있으며, 상기 실시간 우선순위 스케줄러(158)는 준비 태스크 목록으로부터 최상위 우선순위 태스크를 선택하도록 인터럽트 루틴을 실행할 수 있다. 상기 인터럽트 로직은 최하위 우선순위 스레드만이 상기 인터럽트를 행할 수 있도록 구성될 수 있다. 특정 실시예에서, 상기 멀티스레드 프로세서(100)는 준비 태스크 목록의 최상위 우선순위 태스크를 실행하고 상기 준비 태스크 목록에 이전 실행 태스크를 복귀시키는 태스크들의 각 스와핑 후에, 임의의 준비 태스크가 임의의 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 스케줄이 검사된다. 예를 들어, 상기 실시간 우선순위 스케줄러(158)는, 상기 준비 태스크 목록의 최상위 우선순위 태스크를 실행하고 상기 준비 태스크 목록에 이전 실행 태스크를 복귀시키기 위해 태스크들의 각 스와핑 후에, 임의의 준비 태스크가 임의의 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 스케줄을 검사할 수 있다.
특정 실시예에서, 상기 멀티스레드 프로세서(100)는 실행 태스크들 및 준비 태스크들의 최소 가능한 수의 스왑들을 이용하여 스케줄이 업데이트되도록 구성되어, 상기 업데이트된 스케줄이 적어도 상기 준비 태스크들의 최상위 우선순위만큼 높은 우선순위를 갖는 모든 실행 태스크를 갖는다. 예를 들어, 상기 실시간 우선순위 스케줄러(158)는 실행 태스크들 및 준비 태스크들의 최소 가능한 수의 스왑들을 이용하여 업데이트되도록 구성될 수 있어, 상기 업데이트된 스케줄은 적어도 상기 준비 태스크들의 최상위 우선순위만큼 높은 우선순위를 갖는 모든 실행 태스크를 갖는다.
도 2를 참조하면, 프로세싱 시스템의 특정 예시적인 실시예가 도시되며 일반적으로 200으로 지정된다. 특정 실시예에서, 상기 멀티스레드 프로세서(200)는 도 1의 멀티스레드 프로세서(100)와 실질적으로 유사하다. 상기 멀티스레드 프로세서(200)는 인터럽트 제어기(204)에 결합된 실시간 우선순위 스케줄러(202), 인터럽트 마스크(220), 제 1 데이터 구조(206) 및 제 2 데이터 구조(210)를 포함한다. 상기 제 1 데이터 구조(206)는 복수의 실행 스레드들(214) 상에서 실행하는 태스크들의 우선순위화된 실행 태스크 목록(208)을 포함한다. 상기 태스크들은 그들의 개별적인 우선순위들로 라벨링되며, 0은 최상위 우선순위 태스크들을 라벨링하고, 1은 그 다음의 최상위 우선순위 태스크들을 라벨링하며, 등등이다. 특정 실시예에서, 휴지(idle) 태스크들은 최하위 우선순위를 갖는다. 상기 제 2 데이터 구조(210)는 상기 복수의 실행 스레드들(214) 상에서 실행하기 위해 준비된 태스크들의 우선순위화된 준비 태스크 목록(212)을 포함한다. 상기 인터럽트 제어기(204)는 화살표 218에 의해 도시된 바와 같이, 상기 복수의 실행 스레드들(214)의 최하위 우선순위 스레드에 인터럽트를 지시하도록 구성될 수 있다. 상기 인터럽트 마스크(220)는 인터럽트를 수신하기 위해 각 스레드의 이용가능성을 표시하는 비트 마스크일 수 있다. 특정 실시예에서, 상기 인터럽트 마스크(220)는 화살표 218에 의해 도시된 바와 같이, 상기 복수의 실행 스레드들(214)의 최하위 우선순위 스레드에 인터럽트를 지시하도록 구성된다.
실시간 우선순위 스케줄러(202)는 인터럽트된 최하위 우선순위 스레드 상에서 최상위 우선순위 태스크를 실행하기 위해 최상위 우선순위 태스크를 상기 제 2 데이터 구조(210)의 우선순위화된 준비 태스크 목록(212)으로부터 상기 제 1 데이터 구조(206)의 우선순위화된 실행 태스크 목록(208)으로 이동시키도록 구성될 수 있다. 상기 실시간 우선순위 스케줄러(202)는 또한 상기 제 2 데이터 구조(210)의 임의의 준비 태스크들이 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 스케줄(222)을 검사하도록 구성될 수 있다. 상기 스케줄(222)을 검사하는 것은 상기 제 2 데이터 구조(210)의 임의의 준비 태스크들이 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하도록 상기 제 1 데이터 구조(206) 및 제 2 데이터 구조(210)를 조사하는 것을 포함할 수 있다. 특정 실시예에서, 상기 복수의 실행 스레드들(214)의 최하위 우선순위 스레드는 상기 제 1 데이터 구조(206)의 우선순위화된 실행 태스크 목록(208)으로부터의 최하위 우선순위 태스크를 실행한다. 예를 들어, 도 2의 6의 우선순위를 갖는 태스크를 실행하는 스레드는 최하위 우선순위 스레드일 수 있다.
동작시에, 상기 복수의 실행 스레드들(214) 상에서 실행하는 4의 우선순위를 갖는 2개의 태스크들 중 하나는 화살표 216에 의해 도시된 바와 같이, 2의 우선순위를 갖는 태스크를 론칭(launch)하거나 "웨이크 업(wake up)"할 수 있다. 상기 우선순위 2 태스크는 상기 제 2 데이터 구조(210)의 우선순위화된 준비 태스크 목록(212) 상에 나타난다. 상기 인터럽트 마스크(220)는 우선순위 6 태스크를 실행하는 최하위 우선순위 스레드를 제외하고, 상기 인터럽트 제어기(204)로부터 상기 복수의 실행 스레드들(214) 상에서 실행하는 모든 태스크들을 마스크 오프한다. 상기 인터럽트 제어기(204)는 상기 복수의 실행 스레드들(214)의 최하위 우선순위 스레드, 상기 우선순위 2 태스크의 론칭 또는 웨이크 업에 응답하여 상기 우선순위 6 태스크를 실행하는 스레드에 상기 화살표 218에 의해 도시된 바와 같은 인터럽트를 지시할 수 있다.
도 3을 참조하면, 상기 실시간 우선순위 스케줄러(202)는 화살표 300에 의해 도시된 바와 같이 인터럽트된 최하위 우선순위 스레드들 상에서 최상위 우선순위 태스크인 우선순위 2 태스크를 실행하도록 상기 최상위 우선순위 태스크인 우선순위 2 태스크를 상기 제 2 데이터 구조(210)의 우선순위화된 준비 태스크 목록(212)으로부터 상기 제 1 데이터 구조(206)의 우선순위화된 실행 태스크 목록(208)으로 이동시킬 수 있다. 상기 우선순위화된 준비 태스크 목록(212)으로부터 상기 최상위 우선순위 태스크인 우선순위 2 태스크를 실행하도록, 그리고 화살표 300에 의해 도시된 바와 같이 이전 실행 태스크인 우선순위 6 태스크를 상기 우선순위화된 준비 태스크 목록(212)에 복귀시키기 위해 태스크들을 스와핑한 후에, 상기 실시간 우선순위 스케줄러(202)는 상기 제 2 데이터 구조(210)의 임의의 준비 태스크들이 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 상기 스케줄(222)을 검사할 수 있다. 도 3에서, 상기 화살표(300)에 의해 도시된 태스크들의 스와핑 후에, 상기 제 2 데이터 구조(210)에서의 준비 태스크들은 우선순위 6 또는 우선순위 8을 가지며, 여기서 상기 제 1 데이터 구조(206)의 상기 최하위 우선순위 실행 태스크들은 2개의 우선순위 4 태스크들이며, 따라서 상기 제 2 데이터 구조(210)의 준비 태스크들 중 어느 것도 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크들보다 높은 우선순위를 갖지 못한다. 상기 인터럽트 마스크(220)는 상기 우선순위 4 태스크들을 실행하는 최하위 우선순위 스레드들을 제외하고, 상기 인터럽트 제어기(204)로부터 상기 복수의 실행 스레드들(214) 상에서 실행하는 모든 태스크들을 마스크 오프한다.
도 4를 참조하면, 동작의 다른 예로서, 상기 복수의 실행 스레드들(214) 상에 실행하는 6의 우선순위를 갖는 태스크는 화살표 400에 의해 도시된 바와 같이, 2의 우선순위를 갖는 태스크 및 4의 우선순위를 갖는 2개 태스크들을 론칭하거나 "웨이크 업"할 수 있다. 상기 우선순위 2 태스크 및 2개의 우선순위 4 태스크들은 상기 제 2 데이터 구조(210)의 우선순위화된 준비 태스크 목록(212)에 나타난다. 상기 인터럽트 마스크(220)는 휴지 상태인 최하위 우선순위 스레드를 제외하고, 상기 인터럽트 제어기(204)로부터 상기 복수의 실행 스레드들(214) 상에서 실행하는 모든 태스크들을 마스크 오프한다. 상기 태스크들의 론칭 또는 웨이크 업에 응답하여, 상기 인터럽트 제어기(204)는 화살표 402에 의해 도시된 바와 같이, 인터럽트를 상기 복수의 실행 스레드들(214)의 최하위 우선순위 스레드에 지시할 수 있다. 특정 실시예에서, 상기 복수의 실행 스레드들(214)의 최하위 우선순위 스레드는 그 휴지 상태로 인해 상기 제 1 데이터 구조(206)의 우선순위화된 실행 태스크 목록(208) 상에서 최하위 우선순위를 갖는 것으로 정의되는 휴지 태스크를 실행하는 휴지 스레드이다.
도 5를 참조하면, 도 4의 실시간 우선순위 스케줄러(202)는 화살표 500에 의해 도시된 바와 같이, 상기 인터럽트된 최하위 우선순위 스레드 상에서 상기 최상위 우선순위 태스크인 우선순위 2 태스크를 실행하기 위해 상기 최상위 우선순위 태스크인 우선순위 2 태스크를 상기 제 2 데이터 구조(210)의 우선순위화된 준비 태스크 목록(212)으로부터 상기 제 1 데이터 구조(206)의 우선순위화된 실행 태스크 목록(208)으로 이동시킬 수 있다. 상기 최상위 우선순위 태스크인 우선순위 2 태스크를 화살표 500에 의해 도시된 바와 같이 상기 우선순위화된 준비 태스크 목록(212)으로부터 이동시킨 후에, 상기 실시간 우선순위 스케줄러(202)는 상기 제 2 데이터 구조(210)의 임의의 준비 태스크들이 상기 제 1 데이터 구조(206)에서의 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하도록 상기 스케줄(222)을 검사할 수 있다. 도 5에서, 화살표 500에 의해 도시된 태스크의 이동 후에, 상기 제 2 데이터 구조(210)의 준비 태스크들은 둘 다 우선순위 4를 가지며, 여기서 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크는 우선순위 8 태스크이며, 따라서 상기 제 2 데이터 구조(210)의 준비 태스크들의 둘 다는 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는다. 상기 인터럽트 마스크(220)는 상기 우선순위 8 태스크를 실행하는 최하위 우선순위 스레드를 제외하고, 상기 인터럽트 제어기(204)로부터 상기 복수의 실행 스레드들(214) 상에 실행하는 모든 태스크들을 마스크 오프한다.
도 6을 참조하면, 상기 2개의 우선순위 4 태스크들은 상기 제 2 데이터 구조(210)의 우선순위화된 준비 태스크 목록(212)에 남아있다. 상기 인터럽트 마스크(220)는 상기 우선순위 8 태스크를 실행하는 최하위 우선순위 스레드를 제외하고, 상기 인터럽트 제어기(204)로부터 상기 복수의 실행 스레드들(214) 상에서 실행하는 모든 태스크들을 마스크 오프하였다. 상기 인터럽트 제어기(204)는 상기 우선순위 8 태스크를 실행하는 스레드인, 상기 복수의 실행 스레드들(214)의 최하위 우선순위 스레드에 상기 화살표 600에 의해 도시된 바와 같이 인터럽트를 지시할 수 있다.
도 7을 참조하면, 상기 실시간 우선순위 스케줄러(202)는 화살표 700에 의해 도시된 바와 같이, 상기 인터럽트된 최하위 우선순위 스레드 상에서 우선순위 4 태스크들 중 하나인 상기 최상위 우선순위 태스크를 실행하기 위해 상기 우선순위 4 태스크들 중 어느 하나인 상기 최상위 우선순위 태스크를 상기 제 2 데이터 구조(210)의 우선순위화된 준비 태스크 목록(212)으로부터 상기 제 1 데이터 구조(206)의 우선순위화된 실행 태스크 목록(208)으로 이동시킬 수 있다. 화살표 700에 의해 도시된 바와 같이, 상기 우선순위화된 준비 태스크 목록(212)으로부터 상기 우선순위 4 태스크들 중 하나인 최상위 우선순위 태스크를 실행하도록, 그리고 상기 우선순위 8 태스크인 이전 실행 태스크를 상기 우선순위화된 준비 태스크 목록(212)에 복귀시키기 위해 태스크들을 스와핑한 후에, 상기 실시간 우선순위 스케줄러(202)는 상기 제 2 데이터 구조(210)의 임의의 준비 태스크들이 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 상기 스케줄(222)을 검사할 수 있다. 도 7에서, 화살표 700에 의해 도시된 태스크들의 스와핑 후에, 상기 제 2 데이터 구조(210)의 준비 태스크들은 우선순위 4 및 우선순위 8을 가지며, 여기서 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크는 우선순위 6 태스크이며, 따라서 상기 제 2 데이터 구조(210)의 준비 태스크들 중 하나인 우선순위 4 태스크는 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는다. 상기 인터럽트 마스크(220)는 상기 우선순위 6 태스크를 실행하는 최하위 우선순위 스레드를 제외하고, 상기 인터럽트 제어기(204)로부터 상기 복수의 실행 스레드들(214) 상에 실행하는 모든 태스크들을 마스크 오프한다.
도 8을 참조하면, 상기 우선순위 4 태스크는 상기 우선순위 8 태스크와 함께 상기 제 2 데이터 구조(210)의 우선순위화된 준비 태스크 목록(212) 상에 남아있다. 상기 인터럽트 마스크(220)는 상기 우선순위 6 태스크를 실행하는 상기 최하위 우선순위 스레드를 제외하고, 상기 인터럽트 제어기(204)로부터 상기 복수의 실행 스레드들(214) 상에 실행하는 모든 태스크들을 마스크 오프하였다. 도 7의 화살표 700에 의해 도시된 태스크 스와핑에 응답하여, 상기 인터럽트 제어기(204)는 화살표(800)에 의해 도시된 바와 같이, 인터럽트를 상기 우선순위 6 태스크를 실행하는 복수의 실행 스레드들(214) 중 최하위 우선순위 스레드에 지시할 수 있다.
도 9를 참조하면, 상기 실시간 우선순위 스케줄러(202)는 상기 화살표 900에 의해 도시된 바와 같이, 상기 인터럽트된 최하위 우선순위 스레드들 상에서 상기 최상위 우선순위 태스크인 상기 우선순위 4 태스크를 실행하기 위해 상기 최상위 우선순위 태스크인 상기 우선순위 4 태스크를 상기 제 2 데이터 구조(210)의 우선순위화된 준비 태스크 목록(212)으로부터 상기 제 1 데이터 구조(206)의 우선순위화된 실행 태스크 목록(208)으로 이동시킬 수 있다. 화살표 900에 의해 도시된 바와 같이, 상기 우선순위화된 준비 태스크 목록(212)으로부터 상기 최상위 우선순위 태스크인 우선순위 4 태스크를 실행하기 위해 그리고 이전 실행 태스크인 우선순위 6 태스크를 상기 우선순위화된 준비 태스크 목록(212)에 복귀시키도록 태스크들을 스와핑한 후에, 상기 실시간 우선순위 스케줄러(202)는 상기 제 2 데이터 구조(210)의 임의의 준비 태스크들이 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 상기 스케줄(222)을 검사할 수 있다. 도 9에서, 화살표 900에 의해 도시된 태스크들의 스와핑 후에, 상기 제 2 데이터 구조(210)의 준비 태스크들은 우선순위 6 및 우선순위 8을 가지며, 여기서 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크들은 상기 우선순위 4 태스크들이며, 따라서 상기 제 2 데이터 구조(210)의 준비 태스크들 중 어느 것도 상기 제 1 데이터 구조(206)의 최하위 우선순위 실행 태스크들보다 높은 우선순위를 갖지 않는다. 상기 인터럽트 마스크(220)는 상기 우선순위 4 태스크들을 실행하는 최하위 우선순위 스레드들을 제외하고 상기 인터럽트 제어기(204)로부터 상기 복수의 실행 스레드들(214) 상에서 실행하는 모든 태스크들을 마스크 오프한다.
도 10a를 참조하면, 멀티스레드 프로세서상에 실시간으로 태스크들을 스케줄링하는 방법의 제 1 예시적 실시예의 흐름도가 도시되며 일반적으로 1000으로 지정된다. 특정 실시예에서, 상기 방법(1000)은 도 1의 멀티스레드(multithreaded) 프로세서(100) 상에서 실행된다. 상기 방법(1000)은 1002에서 인터럽트를 수신하는 단계 및 인터럽트된 태스크로부터의 컨텍스트를 구하는 단계를 포함한다. 상기 방법(1000)은 또한 1004에서 상기 인터럽트를 대기하는 하나 이상의 태스크들을 준비 큐우(queue)에 추가하는 단계를 포함한다. 특정 실시예에서, 상기 준비 큐우는 상기 복수의 실행 스레드들(214) 상에서 실행하기 위해 준비된 태스크들의 우선순위화된 준비 태스크 목록(212)을 포함하는 도 2에 도시된 제 2 데이터 구조(210)에 대응한다.
상기 방법(1000)은 1006에서 도 10b에 도시된 스케줄러 알고리즘을 실행하는 단계를 더 포함한다. 상기 방법(1000)은 또한 1008에서 상기 컨텍스트를 복원하는 단계 및 인터럽트되지 않은 동작으로 복귀시키는 단계를 포함한다. 상기 컨텍스트를 복원하는 단계 및 인터럽트되지 않은 동작으로의 복귀 단계는, 상기 스케줄러가 상기 인터럽트된 태스크로의 복귀 이전에 다른 태스크들을 실행할 수 있기 때문에, 시간상으로 나중의 시점에서 발생할 수 있다.
도 10b를 참조하면, 상기 스케줄러 알고리즘이 1010에 도시된다. 상기 스케줄러 알고리즘(1010)은 1012에서 실행 큐우로부터 현재 실행 태스크를 제거하는 단계 및 상기 태스크를 상기 준비 큐우에 추가하는 단계를 포함한다. 특정 실시예에서, 상기 실행 큐우는 상기 복수의 실행 스레드들(214) 상에서 실행하는 태스크들의 우선순위화된 실행 태스크 목록(208)을 포함하는 도 2에 도시된 제 1 데이터 구조(206)에 대응한다. 상기 스케줄러 알고리즘(1010)은 1014에서, 또한 상기 준비 큐우로부터 상기 최상위 우선순위 태스크를 제거하는 단계 및 상기 태스크를 상기 실행 큐우에 추가하고, 상기 태스크가 새로운 현재 실행 태스크로 되게 하는 단계를 포함한다. 상기 스케줄러 알고리즘(1010)은 1016에서 상기 새로운 현재 실행 태스크가 상기 최하위 우선순위 실행 태스크인지 여부를 결정하는 단계를 더 포함한다. 1018에서, 새로운 현재 실행 태스크가 최하위 우선순위 실행 태스크인 경우, 상기 새로운 현재 실행 태스크가 실행하는 스레드는 인터럽트들을 행하도록 구성된다. 1020에서, 상기 새로운 현재 실행 태스크가 최하위 우선순위 실행 태스크가 아닌 경우, 상기 새로운 현재 실행 태스크가 실행하는 스레드는 인터럽트들을 행하지 않도록 구성된다. 상기 스케줄러 알고리즘(1010)은 1022에서 도 10c에 도시된 스케줄러 검사를 실행하는 단계를 더 포함한다.
도 10c를 참조하면, 상기 스케줄러 검사가 1024에 도시된다. 상기 스케줄러 검사(1024)는 1026에서 시작한다. 1028에서, 상기 스케줄러 검사(1024)는 일부 스레드가 인터럽트들을 행하도록 구성되는지 여부를 결정하는 단계를 포함한다. 1034에서, 인터럽트들을 행하도록 구성된 스레드가 없는 경우, 상기 최하위 우선순위 스레드(또는 스레드들)는 인터럽트들을 행하도록 구성된다. 상기 스케줄러 검사(1024)는 또한 1030에서, 상기 최하위 우선순위 실행 태스크가 상기 최상위 우선순위 준비 태스크보다 낮은 우선순위를 갖는지 여부를 결정하는 단계를 포함한다. 상기 최하위 우선순위 실행 태스크가 상기 최상위 우선순위 준비 태스크보다 낮은 우선순위를 갖는 경우, 1036에서 인터럽트가 재스케줄링 이벤트를 야기하도록 트리거링되며, 1038에서 상기 스케줄러 검사(1024)가 종료한다.
상기 최하위 우선순위 실행 태스크가 상기 최상위 우선순위 준비 태스크보다 낮은 우선순위를 갖지 않는 경우, 상기 스케줄러 검사(1024)는 1032에서 임의의 태스크가 준비되는 동안 임의의 스레드가 휴지 상태인지 여부를 결정하는 단계를 더 포함한다. 임의의 태스크가 준비 상태인 동안 임의의 스레드가 휴지 상태인 경우, 1036에서 재스케줄링 이벤트를 야기하도록 인터럽트가 트리거링되고, 1038에서 상기 스케줄러 검사(1024)가 종료한다. 임의의 태스크가 준비 상태인 동안 어떠한 스레드도 휴지 상태가 아닌 경우, 상기 스케줄러 검사(1024)는 1038에서 종료한다. 특정 실시예에서, 상기 인터럽트 제어기는 이미 셋업되어 1036에서 트리거링된 인터럽트가 최하위 우선순위 스레드 또는 휴지 스레드로 전달될 것이다 .
도 11을 참조하면, 멀티스레드 프로세서상에 실시간으로 태스크들을 스케줄링하는 방법의 제 2 예시적인 실시예의 흐름도가 도시되며 일반적으로 1100으로 지정된다. 특정 실시예에서, 상기 방법(1100)은 도 1의 멀티스레드 프로세서(100) 상에 실행된다. 상기 방법(1100)은 1102에서 제 1 스레드에서 인터럽트를 수신하는 단계를 포함하며, 상기 제 1 스레드는 제 1 시간에 프로세서에서 복수의 실행 스레드들 중 최하위 우선순위 스레드를 포함한다. 상기 방법(1100)은 또한 1104에서 제 2 스레드를 식별하는 단계를 포함하며, 상기 제 2 스레드는 제 2 시간에 프로세서에서 복수의 실행 스레드들 중 최하위 우선순위 스레드를 포함한다. 특정 실시예에서, 상기 제 2 스레드는 상기 제 1 스레드와 다르다. 상기 방법(1100)은 1106에서 후속하는 인터럽트를 상기 제 2 스레드에 지시하는 단계를 더 포함한다. 예를 들어, 인터럽트들은 상술한 바와 같이, 도 2의 화살표 218, 도 4의 화살표 402, 도 6의 화살표 600 및 도 8의 화살표 800에 의해 도시된 바와 같이, 상기 복수의 실행 스레드들(214) 중 최하위 우선순위 스레드들에 지시될 수 있다. 특정 실시예에서, 상기 인터럽트는 적어도 하나의 태스크가 실행될 준비가 되었음을 표시한다. 예를 들어, 도 2의 화살표 218에 의해 도시된 인터럽트는 우선순위 2 태스크가 실행될 준비가 되었음을 표시할 수 있고, 도 4의 화살표 402에 의해 도시된 인터럽트는 우선순위 2 태스크가 실행될 준비가 되었음을 표시할 수 있으며, 도 6의 화살표 600에 의해 도시된 인터럽트는 우선순위 4 태스크가 실행될 준비가 되었음을 표시할 수 있으며, 도 8의 화살표 800에 의해 도시된 인터럽트는 우선순위 4 태스크가 실행될 준비가 되었음을 표시할 수 있다.
특정 실시예에서, 상기 제 1 스레드는 복수의 실행 태스크들 중 최하위 우선순위 태스크를 실행한다. 예를 들어, 도 2의 복수의 실행 스레드들 중 최하위 우선순위 스레드는 우선순위 6 태스크를 실행할 수 있고, 도 3의 최하위 우선순위 스레드들은 우선순위 4 태스크들을 실행할 수 있고, 도 5 및 도 6의 최하위 우선순위 스레드는 우선순위 8 태스크를 실행할 수 있고, 도 7 및 도 8의 최하위 우선순위 스레드는 우선순위 6 태스크를 실행할 수 있으며, 도 9의 최하위 우선순위 스레드들은 우선순위 4 태스크들을 실행한다. 특정 실시예에서, 상기 제 1 스레드는 휴지 스레드이다. 예를 들어, 도 4의 복수의 실행 스레드들(214) 중 최하위 우선순위 스레드는 휴지 스레드일 수 있다. 특정 실시예에서, 휴지 스레드는 휴지 태스크를 실행한다.
방법(1100)은 1108에서, 상기 제 1 스레드가 상기 인터럽트를 수신할 때, 준비 태스크 목록으로부터 최상위 우선순위 태스크를 선택하도록 인터럽트 루틴을 실행하는 단계를 포함한다. 상기 준비 태스크 목록으로부터의 상기 최상위 우선순위 태스크의 제 1 우선순위는 실행 태스크 목록으로부터의 최하위 우선순위 태스크의 제 2 우선순위와 비교될 수 있으며, 상기 제 1 우선순위가 상기 제 2 우선순위보다 높을 때만 태스크들이 스와핑된다. 예를 들어, 도 2에서, 상기 복수의 실행 스레드들(214) 중 상기 우선순위 6 태스크를 실행하는 상기 최하위 우선순위 스레드가 화살표 218에 의해 도시된 바와 같이 상기 인터럽트를 수신할 때, 인터럽트 루틴은 상기 우선순위화된 준비 태스크 목록(212)으로부터 상기 최상위 우선순위 태스크인 우선순위 2 태스크를 선택하도록 실행될 수 있다.
상기 방법(1100)은 상기 제 1 스레드에서 상기 준비 태스크 목록의 최상위 우선순위 태스크를 실행하도록 그리고 상기 준비 태스크 목록에 이전의 실행 태스크를 복귀시키기 위해 태스크들을 스와핑한 후에, 1110에서 상기 준비 태스크 목록의 임의의 준비 태스크들이 최하위 우선순위 실행 태스크보다 더 높은 우선순위를 갖는지 여부를 결정하는 단계를 더 포함한다. 예를 들어, 도 3의 화살표 300에 의해 도시된 바와 같이, 상기 우선순위 2 태스크 및 우선순위 6 태스크를 스와핑한 후에, 우선순위 6 및 우선순위 8을 갖는 상기 우선순위화된 준비 태스크 목록(212)의 준비 태스크들이 우선순위 4를 갖는 상기 우선순위화된 실행 태스크 목록(208)의 최하위 우선순위 실행 태스크들보다 높은 우선순위를 갖지 않는 것으로 결정될 수 있다. 유사하게, 도 7의 화살표 700에 의해 도시된 바와 같이, 상기 우선순위 4 태스크 및 우선순위 8 태스크를 스와핑한 후에, 우선순위 4를 갖는 우선순위화된 준비 태스크 목록(212)의 하나의 준비 태스크가 우선순위 6을 갖는 우선순위화된 실행 태스크 목록(208)의 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는 것으로 결정될 수 있다.
특정 실시예에서, 상기 방법(1100)은 최하위 우선순위 실행 태스크를 최상위 우선순위 준비 태스크와 비교함으로써 임의의 추가적인 준비 태스크가 현재의 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 스케줄을 검사하도록 필요에 따라 반복될 수 있다. 상기 최하위 우선순위 실행 태스크를 상기 최상위 우선순위 준비 태스크와 비교하는 것은 상기 준비 태스크 목록의 임의의 준비 태스크들이 상기 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하는 일 방법일 수 있다. 예를 들어, 도 3에서, 상기 우선순위 4 태스크들을 상기 최상위 우선순위 준비 태스크들인 우선순위 6 태스크들과 비교함으로써 상기 최하위 우선순위 실행 태스크들인 우선순위 4 태스크들보다 높은 우선순위를 갖는 준비 태스크들이 없는 것으로 결정될 수 있다. 유사하게, 도 5에서, 우선순위 8 태스크를 상기 최상위 우선순위 준비 태스크들인 우선순위 4 태스크들과 비교함으로써 우선순위 4를 갖는 준비 태스크들 둘 다는 상기 최하위 우선순위 실행 태스크인 우선순위 8 태스크보다 높은 우선순위를 갖는 것으로 결정될 수 있다.
특정 실시예에서, 상기 방법(1100)은 상기 최하위 우선순위 실행 태스크를 결정하는 단계 및 상기 후속하는 인터럽트를 상기 제 2 스레드에 지시하도록 인터럽트 루틴을 이용하는 단계를 더 포함하며, 여기서 상기 제 2 스레드는 상기 최하위 우선순위 실행 태스크를 실행하는 것이다. 예를 들어, 도 7의 화살표 700에 의해 도시된 바와 같이, 상기 우선순위 4 태스크 및 상기 우선순위 8 태스크를 스와핑한 후에, 상기 우선순위 6 태스크가 최하위 우선순위 실행 태스크인 것으로 결정될 수 있으며, 도 8의 화살표 800에 의해 도시된 바와 같이, 상기 우선순위 6 태스크를 실행하는 복수의 실행 스레드들(214) 중 최하위 우선순위 스레드에 상기 후속하는 인터럽트를 지시하도록 인터럽트 루틴이 이용될 수 있다.
특정 실시예에서, 상기 방법(1100)은 임의의 준비 태스크가 상기 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 스케줄을 검사하는 결과에 기초하여 상기 후속하는 인터럽트를 선택적으로 설정하는 단계를 더 포함한다. 예를 들어, 도 8의 화살표 800에 의해 도시된 바와 같이, 상기 후속하는 인터럽트는 도 7의 상기 스케줄(222)을 검사하고 우선순위 4를 갖는 상기 준비 태스크들 중 하나가 상기 우선순위 6 태스크인 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는 것을 결정하는 결과에 기초하여 선택적으로 설정될 수 있다.
특정 실시예에서, 도 2-9의 인터럽트 제어기(204)는 상기 복수의 실행 스레드들(214) 중 최하위 우선순위 스레드와 다른 상기 복수의 실행 스레드들(214)의 스레드들이 상기 인터럽트 수신으로부터 마스크되도록 지시한다. 예를 들어, 도 2-9에 도시된 바와 같이, 상기 인터럽트 제어기(204)는 상기 복수의 실행 스레드들(214) 중 최하위 우선순위 스레드를 제외하고, 상기 인터럽트 마스크(220)가 상기 인터럽트를 수신하는 것으로부터 상기 복수의 실행 스레드들(214)을 마스크 오프하도록 지시할 수 있다.
도 12를 참조하면, 멀티스레드 프로세서상에 실시간으로 태스크들을 스케줄링하는 방법의 제 3 예시적인 실시예의 흐름도가 도시되며 일반적으로 1200으로 지정된다. 특정 실시예에서, 상기 방법(1200)은 도 1의 멀티스레드 프로세서(100) 상에서 실행된다. 상기 방법(1200)은 1202에서 스레드들의 세트의 제 1 스레드에서 인터럽트를 수신하는 단계를 포함하고, 여기서 상기 스레드들의 세트의 각 스레드는 실행 태스크들의 세트의 개별적인 태스크를 실행하며, 여기서 상기 실행 태스크들의 세트의 각 태스크 및 준비 태스크들의 세트의 각 태스크는 개별적인 우선순위를 갖는다. 예를 들어, 도 6에 도시된 바와 같이, 상기 우선순위 8 태스크를 실행하는 스레드는 화살표 600에 의해 도시된 바와 같이 상기 인터럽트를 수신할 수 있고, 여기서 상기 복수의 실행 스레드들(214)의 각 스레드는 상기 우선순위화된 실행 태스크 목록(208)의 개별적인 태스크를 실행하고, 여기서 상기 우선순위화된 실행 태스크 목록(208)의 각 태스크 및 상기 우선순위화된 준비 태스크 목록(212)의 각 태스크는 개별적인 우선순위를 갖는다. 특정 실시예에서, 휴지 스레드는 상기 최하위 우선순위를 갖는 휴지 태스크를 실행한다. 예를 들어, 도 4에 도시된 바와 같이, 상기 휴지 태스크를 실행하는 스레드는 화살표 402에 의해 도시된 바와 같이 상기 인터럽트를 수신할 수 있다.
상기 방법(1200)은 또한 1204에서, 상기 실행 태스크들의 세트의 각 태스크가 준비 태스크들의 세트의 모든 태스크의 우선순위보다 크거나 같은 우선순위를 가질 때까지 상기 실행 태스크들의 세트의 최하위 우선순위 태스크들을 상기 준비 태스크들의 세트의 최상위 우선순위 태스크와 반복적으로 스와핑하는 단계를 포함한다. 예를 들어, 도 4-9에 도시된 바와 같이, 상기 우선순위화된 실행 태스크 목록(208)의 최하위 우선순위 태스크들은 상기 우선순위화된 실행 태스크 목록(208)의 각 태스크가 도 9에 도시된 바와 같이, 상기 우선순위화된 준비 태스크 목록(212)의 모든 태스크의 우선순위보다 크거나 동일한 우선순위를 가질 때까지 상기 우선순위화된 준비 태스크 목록(212)의 개별적인 최상위 우선순위 태스크들과 반복적으로 스와핑될 수 있다.
특정 실시예에서는, 1206에서, 반복적인 스와핑 단계는 실행 태스크들의 다음 세트 및 준비 태스크들의 다음 세트를 형성하도록 준비 태스크와 각 실행 태스크를 스와핑한 후에, 상기 실행 태스크들의 다음 세트의 최하위 우선순위 태스크를 결정하는 단계를 포함한다. 상기 반복적인 스와핑의 각 반복은 상기 실행 태스크들의 다음 세트의 최하위 우선순위 태스크를 결정하는 단계를 포함할 수 있다. 예를 들어, 도 7의 화살표 700에 의해 도시된 바와 같이, 상기 우선순위 4 태스크를 상기 우선순위 8 태스크와 스와핑한 후에, 상기 실행 태스크들의 다음 세트는 우선순위 0 태스크, 2개의 우선순위 2 태스크들, 2개의 우선순위 4 태스크들 및 우선순위 6 태스크를 포함할 수 있으며 상기 준비 태스크들의 다음 세트는 우선순위 4 태스크 및 우선순위 8 태스크를 포함할 수 있으며, 상기 우선순위 6 태스크는 상기 실행 태스크들의 다음 세트의 최하위 우선순위 태스크인 것으로 결정될 수 있다. 반복적인 스와핑 단계는 1208에서, 상기 실행 태스크들의 다음 세트의 최하위 우선순위 태스크의 우선순위가 상기 준비 태스크들의 다음 세트의 최상위 우선순위 태스크의 우선순위보다 작을 때 상기 반복적인 스와핑의 다음 반복을 수행하도록 상기 최하위 우선순위 스레드에 인터럽트를 송신하는 단계를 더 포함한다. 예를 들어, 도 8의 화살표 800에 의해 도시된 바와 같이, 상기 우선순위 6 태스크는 상기 준비 태스크들의 다음 세트의 최상위 우선순위를 갖는 상기 우선순위 4 태스크보다 낮은 우선순위를 갖기 때문에, 상기 반복적인 스와핑의 다음 반복을 수행하도록 상기 실행 태스크들의 다음 세트의 최하위 우선순위 태스크인 상기 우선순위 6 태스크에 인터럽트가 송신될 수 있다.
도 13을 참조하면, 멀티스레드 프로세서상에 실시간으로 태스크들을 스케줄링하는 방법의 제 4 예시적 실시예의 흐름도가 도시되며 일반적으로 1300으로 도시된다. 특정 실시예에서, 상기 방법(1300)은 도 1의 멀티스레드 프로세서(1000) 상에서 실행된다. 상기 방법(1300)은 1302에서 복수의 실행 스레드들 중 최하위 우선순위 스레드에 인터럽트를 지시하는 단계를 포함하며, 여기서 상기 인터럽트는 적어도 하나의 태스크가 실행될 준비가 되었음을 표시하고, 여기서 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드는 최하위 우선순위 태스크 또는 휴지 스레드를 실행하며, 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드는 상기 인터럽트를 수신하고 준비 태스크 목록으로부터 최상위 우선순위 태스크를 선택하도록 인터럽트 루틴을 개시한다. 예를 들어, 도 2의 화살표 218에 의해 도시된 바와 같이, 상기 복수의 실행 스레드들(214) 중 최하위 우선순위 스레드에 인터럽트가 지시될 수 있으며, 상기 인터럽트는 우선순위 2 태스크가 실행될 준비가 되었음을 표시할 수 있으며, 상기 최하위 우선순위 스레드는 최하위 우선순위 태스크인 우선순위 6 태스크를 실행할 수 있으며, 여기서 상기 우선순위 6 태스크를 실행하는 최하위 우선순위 스레드는 상기 인터럽트를 수신할 수 있으며 상기 우선순위화된 준비 태스크 목록(212)으로부터 상기 최상위 우선순위 태스크인 우선순위 2 태스크를 선택하도록 인터럽트 루틴을 개시할 수 있다.
상기 방법(1300)은 또한, 1304에서 상기 준비 태스크 목록으로부터 상기 최상위 우선순위 태스크를 실행하고 상기 준비 태스크 목록에 이전 실행 태스크를 복귀시키기 위해 태스크들을 스와핑한 후에, 임의의 준비 태스크들이 임의의 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 스케줄을 검사하는 단계를 포함하며, 여기서 임의의 준비 태스크가 임의의 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 상기 스케줄을 검사하는 단계는 최하위 우선순위 실행 태스크를 최상위 우선순위 준비 태스크와 비교하는 단계를 포함한다. 예를 들어, 도 7의 화살표 700에 의해 도시된 바와 같이, 상기 우선순위 4 태스크 및 상기 우선순위 8 태스크를 스와핑한 후에, 상기 최하위 우선순위 실행 태스크인 우선순위 6 태스크를 최상위 우선순위 준비 태스크인 우선순위 4 태스크와 비교함으로써 임의의 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 상기 스케줄(222)이 검사될 수 있다.
상기 방법(1300)은 1306에서, 상기 최하위 우선순위 태스크를 실행하는 복수의 실행 스레드들 중 특정 스레드에 후속하는 인터럽트를 지시하도록 인터럽트 루틴을 이용하는 단계를 더 포함한다. 예를 들어, 인터럽트 루틴은 도 8의 화살표 800에 의해 도시된 바와 같이, 최하위 우선순위 태스크인 우선순위 6 태스크를 실행하는 상기 복수의 실행 스레드들(214) 중 특정 스레드에 후속하는 인터럽트를 지시하도록 이용될 수 있다. 상기 방법(1300)은 또한 1308에서 임의의 준비 태스크가 상기 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 상기 스케줄을 검사한 결과에 기초하여 상기 후속하는 인터럽트를 선택적으로 높이거나 개시하는 단계를 포함한다. 예를 들어, 도 8의 화살표 800에 의해 도시된 바와 같이, 상기 후속하는 인터럽트는 상기 스케줄(222)을 검사하고 상기 우선순위 4 준비 태스크가 상기 최하위 우선순위 실행 태스크인 상기 우선순위 6 실행 태스크보다 높은 우선순위를 갖는 것으로 결정하는 결과에 기초하여 선택적으로 높아지거나 개시될 수 있다.
도 14는 실시간 멀티스레드 스케줄러 모듈(1464)을 포함하는 시스템(1400)의 특정 실시예의 블록도이다. 상기 시스템(1400)은 휴대용 전자 디바이스에 구현될 수 있고 메모리(1432)에 결합된 디지털 신호 프로세서(DSP)와 같은 프로세서(1410)를 포함한다. 예시적인 예에서, 상기 실시간 멀티스레드 스케줄러 모듈(1464)은 도 1-9 중 임의의 시스템들을 포함하며, 도 10-13의 실시예들 중 임의의 실시예 또는 그들의 임의의 조합에 따라 동작한다. 상기 실시간 멀티스레드 스케줄러 모듈(1464)은 상기 프로세서(1410)에 있을 수 있거나 개별적인 디바이스 또는 회로(도시되지 않음)일 수 있다. 특정 실시예에서, 도 1의 실시간 멀티스레드 스케줄러(106)는 디지털 신호 프로세서에 액세스 가능하다. 예를 들어, 도 14에 도시된 바와 같이, 상기 실시간 멀티스레드 스케줄러 모듈(1464)은 상기 디지털 신호 프로세서(DSP)(1410)에 액세스 가능하다.
카메라 인터페이스(1468)는 상기 프로세서(1410)에 결합되고 또한 비디오 카메라(1470)와 같은 카메라에 결합된다. 디스플레이 제어기(1426)는 상기 프로세서(1410) 및 디스플레이 디바이스(1428)에 결합된다. 코더/디코더(CODEC)(1434)는 또한 상기 신호 프로세서(1410)에 결합될 수 있다. 스피커(1436) 및 마이크로폰(1438)은 상기 CODEC(1434)에 결합될 수 있다. 무선 인터페이스(1440)는 상기 프로세서(1410) 및 무선 안테나(1442)에 결합될 수 있다.
상기 실시간 멀티스레드 스케줄러 모듈(1464)은, 실시간 멀티스레드 스케줄러 모듈(1464)로 하여금 복수의 실행 스레드들 중 최하위 우선순위 스레드에 인터럽트를 지시하게 하기 위한, 메모리(1432)와 같은 컴퓨터-판독가능한 매체에 저장된 컴퓨터 실행가능한 명령들(1466)을 실행하도록 구성되며, 여기서 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드가 최하위 우선순위 태스크를 실행하거나 휴지 스레드이며, 여기서 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드가 상기 인터럽트를 수신하고 준비 태스크 목록으로부터 최상위 우선순위 태스크를 선택하도록 인터럽트 루틴을 개시한다. 이러한 방식으로, 상기 실시간 멀티스레드 스케줄러 모듈(1464)은 모뎀 태스크들과 같은 높은 우선순위 태스크들이 사용자 인터페이스 태스크들과 같은 낮은 우선순위 태스크들에 의해 인터럽트되지 않음을 보증할 수 있다.
특정 실시예에서, 상기 프로세서(1410), 상기 디스플레이 제어기(1426), 상기 메모리(1432), 상기 CODEC(1434), 상기 무선 인터페이스(1440) 및 카메라 인터페이스(1468)는 시스템-인-패키지 또는 시스템-온-칩 디바이스(1422)에 포함된다. 특정 실시예에서, 입력 디바이스(1430) 및 파워 서플라이(1444)는 상기 시스템-온-칩 디바이스(1422)에 결합된다. 더욱이, 특정 실시예에서, 도 14에 도시된 바와 같이, 상기 디스플레이 디바이스(1428), 상기 입력 디바이스(1430), 상기 스피커(1436), 상기 마이크로폰(1438), 상기 무선 안테나(1442), 상기 비디오 카메라(1470) 및 파워 서플라이(1444)가 상기 시스템-온-칩 디바이스(1422)의 외부에 있다. 그러나, 상기 디스플레이 디바이스(1428), 상기 입력 디바이스(1430), 상기 스피커(1436), 상기 마이크로폰(1438), 상기 무선 안테나(1442), 상기 비디오 카메라(1470) 및 파워 서플라이(1444)는 인터페이스 또는 제어기와 같은 시스템-온-칩 디바이스(1422)의 컴포넌트에 결합될 수 있다.
당업자는 상술한 다양한 예시적인 논리블록들, 구성들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 구현될 수 있음을 잘 이해할 것이다. 하드웨어 및 소프트웨어의 상호 호환성을 명확히 하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 구성들, 모듈들, 회로들, 및 단계들이 그들의 기능적 관점에서 기술되었다. 이러한 기능이 하드웨어로 구현되는지, 또는 소프트웨어로 구현되는지는 특정 애플리케이션 및 전체 시스템에 대해 부가된 설계 제한들에 의존한다. 당업자는 이러한 기능들을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 이러한 구현 결정들이 본 발명의 영역을 벗어나는 것은 아니다.
상술한 방법의 단계들 및 알고리즘들은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이들의 조합에 의해 직접 구현될 수 있다. 소프트웨어 모듈들은 랜덤 액세스 메모리(RAM), 플래쉬 메모리, 판독 전용 메모리(ROM), 프로그램가능한 판독-전용 메모리(PROM), 소거가능한 프로그램가능한 판독 전용 메모리(EPROM), 전기적으로 소거가능한 프로그램가능한 판독-전용 메모리(EEPROM), 레지스터들, 하드디스크, 휴대용 디스크, 콤팩트 디스크 판독-전용 메모리(CD-ROM), 또는 공지된 저장 매체의 임의의 다른 형태로서 존재한다. 예시적인 저장매체는 프로세서와 결합되어, 상기 프로세서는 저장매체로부터 정보를 판독하여 저장매체에 정보를 기록한다. 대안적으로, 상기 저장 매체는 프로세서에 통합될 수 있다. 상기 프로세서 및 저장매체는 응용 주문형 회로(ASIC)에 상주할 수 있다. 상기 ASIC은 컴퓨팅 디바이스 또는 사용자 단말에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스 또는 사용자 단말에서 이산 컴포넌트들로서 상주할 수 있다.
제시된 실시예들에 대한 설명은 임의의 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것이 아니라, 이하의 청구범위에 의해 정의된 바와 같은 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.

Claims (25)

  1. 제 1 스레드(thread)에서 인터럽트를 수신하는 단계 ― 상기 제 1 스레드는 제 1 시간에 프로세서에서의 복수의 실행 스레드들 중 최하위 우선순위 스레드를 포함함 ― ;
    제 2 스레드를 식별하는 단계 ― 상기 제 2 스레드는 제 2 시간에 프로세서에서의 복수의 실행 스레드들 중 최하위 우선순위 스레드를 포함함 ― ; 및
    후속하는 인터럽트를 상기 제 2 스레드에 지시하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 인터럽트는 적어도 하나의 태스크가 실행되도록 준비되었음을 표시하는, 방법.
  3. 제 1 항에 있어서,
    상기 제 1 스레드는 복수의 실행 태스크들 중 최하위 우선순위 태스크를 실행하는, 방법.
  4. 제 1 항에 있어서,
    상기 제 1 스레드는 휴지(idle) 스레드인, 방법.
  5. 제 1 항에 있어서,
    상기 제 1 스레드는 상기 인터럽트를 수신하고, 준비 태스크 목록으로부터 최상위 우선순위 태스크를 선택하도록 인터럽트 루틴을 개시하며,
    상기 준비 태스크 목록으로부터의 상기 최상위 우선순위 태스크의 제 1 우선순위가 실행 태스크 목록으로부터의 최하위 우선순위 태스크의 제 2 우선순위와 비교되며, 태스크들이 상기 제 1 우선순위가 상기 제 2 우선순위보다 높은 때에만 스와핑되는(swapped), 방법.
  6. 제 5 항에 있어서,
    상기 제 1 스레드에서 최상위 우선순위 태스크를 실행하고 상기 준비 태스크 목록에 실행 태스크를 복귀시키기 위해서 태스크들을 스와핑한 후에, 상기 준비 태스크 목록의 임의의 준비 태스크들이 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지를 결정하는 단계를 더 포함하는, 방법.
  7. 제 6 항에 있어서,
    상기 최하위 우선순위 실행 태스크를 최상위 우선순위 준비 태스크와 비교함으로써 임의의 준비 태스크가 상기 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지를 결정하기 위해 스케줄을 검사하는 단계를 더 포함하는, 방법.
  8. 제 6 항에 있어서,
    상기 최하위 우선순위 실행 태스크를 결정하는 단계; 및
    상기 후속하는 인터럽트를 상기 제 2 스레드에 지시하기 위해 상기 인터럽트 루틴을 이용하는 단계를 더 포함하며,
    상기 제 2 스레드는 상기 최하위 우선순위 실행 태스크인, 방법.
  9. 제 8 항에 있어서,
    임의의 준비 태스크가 상기 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지를 결정하기 위해 스케줄을 검사한 결과에 기초하여 상기 후속하는 인터럽트를 선택적으로 설정하는 단계를 더 포함하는, 방법.
  10. 제 1 항에 있어서,
    인터럽트 제어기가 복수의 실행 스레드들 중 상기 제 1 스레드 이외의 스레드들이 상기 인터럽트를 수신하는 것으로부터 마스크(mask)되도록 지시하는, 방법.
  11. 스레드들의 세트의 제 1 스레드에서 인터럽트를 수신하는 단계 ― 상기 스레드들의 세트의 각 스레드는 실행 태스크들의 세트의 개별적인 태스크를 실행하며, 상기 실행 태스크들의 세트의 각 태스크 및 준비 태스크들의 세트의 각 태스크는 개별적인 우선순위를 갖음 ― ; 및
    실행 태스크들의 세트의 각 태스크가 상기 준비 태스크들의 세트의 모든 태스크의 우선순위보다 크거나 동등한 우선순위를 가질 때까지, 상기 실행 태스크들의 세트의 최하위 우선순위 태스크를 상기 준비 태스크들의 세트의 최상위 우선순위 태스크와 반복적으로 스와핑하는 단계를 포함하는, 방법.
  12. 제 11 항에 있어서,
    상기 반복적인 스와핑의 각 반복은, 실행 태스크들의 다음 세트 및 준비 태스크들의 다음 세트를 형성하기 위해 각각의 실행 태스크를 준비 태스크와 스와핑한 후에:
    상기 실행 태스크들의 다음 세트의 최하위 우선순위 태스크를 결정하는 단계; 및
    상기 실행 태스크들의 다음 세트의 최하위 우선순위 태스크의 우선순위가 상기 준비 태스크들의 다음 세트의 최상위 우선순위 태스크의 우선순위보다 작을 때, 상기 반복적인 스와핑의 다음 반복을 수행하기 위해 상기 최하위 우선순위 스레드에 인터럽트를 송신하는 단계를 포함하는, 방법.
  13. 복수의 실행 스레드들이 최상위 우선순위 태스크들을 실행하고 있도록 하기 위해서 복수의 스레드들을 실행하도록 구성된 멀티스레드(multithreaded) 프로세서를 포함하며,
    상기 멀티스레드 프로세서는 모든 실행 태스크들이 적어도 모든 준비 태스크들의 최상위 우선순위만큼 높은 우선순위를 갖게 하기 위해 태스크들을 스케줄링하도록 구성되는, 시스템.
  14. 제 13 항에 있어서,
    상기 멀티스레드 프로세서는 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드에 지시된 인터럽트가 상기 복수의 실행 스레드들 중 최상위 우선순위 스레드들의 성능에 영향을 미치지 않도록 구성되는, 시스템.
  15. 제 13 항에 있어서,
    상기 멀티스레드 프로세서는 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드가 인터럽트를 수신하고 준비 태스크 목록으로부터 최상위 우선순위 태스크를 선택하기 위해 인터럽트 루틴을 론칭(launch)하도록 구성되는, 시스템.
  16. 제 13 항에 있어서,
    상기 멀티스레드 프로세서는 준비 태스크 목록의 최상위 우선순위 태스크를 실행하고 상기 준비 태스크 목록에 이전의 실행 태스크를 복귀시키기 위한 태스크들의 각 스와핑 후에, 임의의 준비 태스크가 임의의 실행 태스크보다 높은 우선순위를 갖는지를 결정하기 위해 스케줄이 검사되도록 구성되는, 시스템.
  17. 제 13 항에 있어서,
    상기 멀티스레드 프로세서는 실행 태스크들 및 준비 태스크들의 최소 가능한 수의 스왑들을 이용하여 스케줄이 업데이트되어 업데이트된 스케줄이 적어도 상기 준비 태스크들의 최상위 우선순위만큼 높은 우선순위를 갖는 모든 실행 태스크를 갖도록 구성되는, 시스템.
  18. 제 13 항에 있어서,
    상기 복수의 실행 스레드들 상에서 실행하는 태스크들의 우선순위화된된 실행 태스크 목록을 포함하는 제 1 데이터 구조; 및
    상기 복수의 실행 스레드들 상에서 실행하도록 준비된 태스크들의 우선순위화된된 준비 태스크 목록을 포함하는 제 2 데이터 구조를 더 포함하는, 시스템.
  19. 제 18 항에 있어서,
    상기 복수의 실행 스레드들 중 최하위 우선순위 스레드에 인터럽트를 지시하도록 구성된 인터럽트 제어기를 더 포함하는, 시스템.
  20. 제 18 항에 있어서,
    인터럽트 마스크가 상기 복수의 실행 스레드들 중 최하위 우선순위 스레드에 인터럽트를 지시하도록 구성되는, 시스템.
  21. 제 19 항에 있어서,
    상기 인터럽트된 최하위 우선순위 스레드 상에서 최상위 우선순위 태스크를 실행하기 위해 최상위 우선순위 태스크를 상기 제 2 데이터 구조의 우선순위화된된 준비 태스크 목록으로부터 상기 제 1 데이터 구조의 우선순위화된된 실행 태스크 목록으로 이동시키고, 상기 제 2 데이터 구조의 임의의 준비 태스크들이 상기 제 1 데이터 구조에서의 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 스케줄을 검사하도록 구성된 스케줄러를 더 포함하는, 시스템.
  22. 제 21 항에 있어서,
    상기 복수의 실행 스레드들 중 최하위 우선순위 스레드는 상기 제 1 데이터 구조의 우선순위화된된 실행 태스크 목록으로부터의 최하위 우선순위 태스크를 실행하고 있는, 시스템.
  23. 제 21 항에 있어서,
    상기 복수의 실행 스레드들 중 최하위 우선순위 스레드는 상기 제 1 데이터 구조의 우선순위화된된 실행 태스크 상의 최하위 우선순위를 갖는 휴지 태스크를 실행하는 휴지 스레드인, 시스템.
  24. 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터-판독가능한 매체로서,
    상기 명령들은 컴퓨터로 하여금 복수의 실행 스레드들 중 최하위 우선순위 스레드에 인터럽트를 지시하게 하도록 실행가능하고,
    상기 인터럽트는 적어도 하나의 태스크가 실행될 준비가 되었음을 표시하고,
    상기 복수의 실행 스레드들 중 최하위 우선순위 스레드는 최하위 우선순위 태스크를 실행하거나 휴지 스레드이며,
    상기 복수의 실행 스레드들 중 최하위 우선순위 스레드는 상기 인터럽트를 수신하고, 준비 태스크 목록으로부터 최상위 우선순위 태스크를 선택하기 위해 인터럽트 루틴을 개시하는, 컴퓨터-판독가능한 매체.
  25. 제 24 항에 있어서,
    상기 컴퓨터 실행가능한 명령들은 상기 컴퓨터로 하여금:
    상기 준비 태스크 목록으로부터의 상기 최상위 우선순위 태스크를 실행하고 실행 태스크를 상기 준비 태스크 목록에 복귀시키기 위해 태스크들을 스와핑한 후에, 임의의 준비 태스크들이 임의의 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 스케줄을 검사하게 하고 ― 임의의 준비 태스크가 임의의 실행 태스크보다 높은 우선순위를 갖는지 여부를 결정하기 위해 상기 스케줄을 검사하는 것은 최하위 우선순위 실행 태스크를 최상위 우선순위 준비 태스크와 비교하는 것을 포함함 ― ;
    상기 최하위 우선순위 태스크를 실행하고 있는 상기 복수의 실행 스레드들 중 특정 스레드에 후속하는 인터럽트를 지시하기 위해 인터럽트 루틴을 이용하게 하며;
    임의의 준비 태스크가 상기 최하위 우선순위 실행 태스크보다 높은 우선순위를 갖는지를 결정하기 위해 상기 스케줄을 검사한 결과에 기초하여 상기 후속하는 인터럽트를 선택적으로 높이게 하도록 더 실행가능한, 컴퓨터-판독가능한 매체.
KR1020117024405A 2009-03-17 2010-03-16 실시간 멀티스레드 스케줄러 및 스케줄링 방법 KR101350851B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/405,271 2009-03-17
US12/405,271 US9207943B2 (en) 2009-03-17 2009-03-17 Real time multithreaded scheduler and scheduling method
PCT/US2010/027453 WO2010107774A2 (en) 2009-03-17 2010-03-16 Real-time multithreaded scheduler and scheduling method

Publications (2)

Publication Number Publication Date
KR20110127757A true KR20110127757A (ko) 2011-11-25
KR101350851B1 KR101350851B1 (ko) 2014-01-13

Family

ID=42738766

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117024405A KR101350851B1 (ko) 2009-03-17 2010-03-16 실시간 멀티스레드 스케줄러 및 스케줄링 방법

Country Status (7)

Country Link
US (1) US9207943B2 (ko)
EP (1) EP2409220A4 (ko)
JP (1) JP5538442B2 (ko)
KR (1) KR101350851B1 (ko)
CN (1) CN102341780B (ko)
TW (1) TW201135597A (ko)
WO (1) WO2010107774A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021087103A1 (en) * 2019-10-30 2021-05-06 Advanced Micro Devices, Inc. Shadow latches in a shadow-latch configured register file for thread storage
US11544065B2 (en) 2019-09-27 2023-01-03 Advanced Micro Devices, Inc. Bit width reconfiguration using a shadow-latch configured register file
US11599359B2 (en) 2020-05-18 2023-03-07 Advanced Micro Devices, Inc. Methods and systems for utilizing a master-shadow physical register file based on verified activation

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI410870B (zh) * 2010-03-26 2013-10-01 Novatek Microelectronics Corp 電腦系統架構
US20120192147A1 (en) * 2011-01-25 2012-07-26 Argen Wong Develop real time software without an RTOS
JP5303593B2 (ja) * 2011-03-16 2013-10-02 株式会社コア パケット送信制御装置及びパケット送信制御方法
US9105009B2 (en) 2011-03-21 2015-08-11 Microsoft Technology Licensing, Llc Email-based automated recovery action in a hosted environment
US20120260080A1 (en) * 2011-04-08 2012-10-11 Nokia Corporation Method and Apparatus for Preprocessing Operations During a Boot Process
JP5765423B2 (ja) * 2011-07-27 2015-08-19 富士通株式会社 マルチコアプロセッサシステム、およびスケジューリング方法
US20130074088A1 (en) * 2011-09-19 2013-03-21 Timothy John Purcell Scheduling and management of compute tasks with different execution priority levels
US8839257B2 (en) * 2011-11-22 2014-09-16 Microsoft Corporation Superseding of recovery actions based on aggregation of requests for automated sequencing and cancellation
US9460303B2 (en) 2012-03-06 2016-10-04 Microsoft Technology Licensing, Llc Operating large scale systems and cloud services with zero-standing elevated permissions
US9026705B2 (en) * 2012-08-09 2015-05-05 Oracle International Corporation Interrupt processing unit for preventing interrupt loss
JP6017260B2 (ja) * 2012-10-17 2016-10-26 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ
US8881249B2 (en) 2012-12-12 2014-11-04 Microsoft Corporation Scalable and automated secret management
WO2014138472A2 (en) * 2013-03-06 2014-09-12 Robotex Inc. System and method for collecting and processing data and for utilizing robotic and/or human resources
US9135062B2 (en) 2013-04-09 2015-09-15 National Instruments Corporation Hardware assisted method and system for scheduling time critical tasks
US10037511B2 (en) * 2013-06-04 2018-07-31 International Business Machines Corporation Dynamically altering selection of already-utilized resources
NL2014169B1 (en) 2015-01-21 2017-01-05 Huisman Well Tech Apparatus and method for drilling a directional borehole in the ground.
US9762585B2 (en) 2015-03-19 2017-09-12 Microsoft Technology Licensing, Llc Tenant lockbox
US9921891B1 (en) * 2015-03-31 2018-03-20 Integrated Device Technology, Inc. Low latency interconnect integrated event handling
US10931682B2 (en) 2015-06-30 2021-02-23 Microsoft Technology Licensing, Llc Privileged identity management
US10445100B2 (en) 2016-06-09 2019-10-15 International Business Machines Corporation Broadcasting messages between execution slices for issued instructions indicating when execution results are ready
CN106375435A (zh) * 2016-08-31 2017-02-01 福建天晴数码有限公司 Web线程超时监控的方法及其系统
CN106445070B (zh) * 2016-09-12 2019-04-02 华侨大学 一种硬实时系统资源受限偶发任务能耗优化调度方法
CN109144682A (zh) 2017-06-27 2019-01-04 阿里巴巴集团控股有限公司 任务的优先级处理方法和处理装置
CN107577523B (zh) * 2017-07-31 2021-01-05 创新先进技术有限公司 一种任务执行的方法及装置
TWI639955B (zh) * 2017-11-06 2018-11-01 晨星半導體股份有限公司 多處理器系統及其處理器管理方法
CN109871275A (zh) * 2017-12-01 2019-06-11 晨星半导体股份有限公司 多处理器系统及其处理器管理方法
US20190196867A1 (en) * 2017-12-21 2019-06-27 Qualcomm Incorporated System and method of priority-based interrupt steering
CN108235133B (zh) * 2018-01-15 2021-03-02 北京陌上花科技有限公司 视频识别方法及装置
CN108509260B (zh) * 2018-01-31 2021-08-13 深圳市万普拉斯科技有限公司 线程识别处理方法、装置、计算机设备和存储介质
CN108762905B (zh) * 2018-05-24 2020-12-11 苏州乐麟无线信息科技有限公司 一种多任务事件的处理方法和装置
US10691490B2 (en) * 2018-07-06 2020-06-23 Apple Inc. System for scheduling threads for execution
KR102641520B1 (ko) 2018-11-09 2024-02-28 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법
JP7197794B2 (ja) * 2019-03-28 2022-12-28 富士通株式会社 情報処理装置および実行制御プログラム
CN110737522B (zh) * 2019-10-16 2023-03-03 福州物联网开放实验室有限公司 一种嵌入式操作系统的待机任务调度方法
WO2021139560A1 (zh) * 2020-01-07 2021-07-15 苏州大学 一种嵌入式实时操作系统的任务调度处理系统和方法
JP7380415B2 (ja) * 2020-05-18 2023-11-15 トヨタ自動車株式会社 エージェント制御装置
JP7380416B2 (ja) 2020-05-18 2023-11-15 トヨタ自動車株式会社 エージェント制御装置
CN112905317B (zh) * 2021-02-04 2023-12-15 西安电子科技大学 快速可重构信号处理异构平台下任务调度方法和系统
CN113377517B (zh) * 2021-06-28 2023-02-28 上海鲲宜软件技术有限公司 基于实时操作系统的线程调度方法及系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5168566A (en) 1983-11-25 1992-12-01 Sharp Kabushiki Kaisha Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks
JP3524961B2 (ja) 1994-07-21 2004-05-10 株式会社東芝 マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US7257814B1 (en) * 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US6754690B2 (en) 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
JP4926364B2 (ja) 2000-06-12 2012-05-09 ミップス テクノロジーズ インコーポレイテッド ダイナミックマルチストリーミングプロセッサでメモリ操作の原子性を実現するための方法と装置
US7080379B2 (en) 2002-06-20 2006-07-18 International Business Machines Corporation Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue
US7650601B2 (en) * 2003-12-04 2010-01-19 International Business Machines Corporation Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment
US7360064B1 (en) * 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US7614053B2 (en) 2004-02-20 2009-11-03 Sony Computer Entertainment Inc. Methods and apparatus for task management in a multi-processor system
US7757238B2 (en) * 2004-06-29 2010-07-13 Intel Corporation Task switching with a task containing code region to adjust priority
US8756605B2 (en) 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US8255912B2 (en) 2005-04-13 2012-08-28 Qualcomm Incorporated Techniques for setting events in a multi-threaded system
US7913255B2 (en) 2005-10-20 2011-03-22 Qualcomm Incorporated Background thread processing in a multithread digital signal processor
US8621475B2 (en) * 2007-12-06 2013-12-31 International Business Machines Corporation Responsive task scheduling in cooperative multi-tasking environments

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544065B2 (en) 2019-09-27 2023-01-03 Advanced Micro Devices, Inc. Bit width reconfiguration using a shadow-latch configured register file
WO2021087103A1 (en) * 2019-10-30 2021-05-06 Advanced Micro Devices, Inc. Shadow latches in a shadow-latch configured register file for thread storage
US11599359B2 (en) 2020-05-18 2023-03-07 Advanced Micro Devices, Inc. Methods and systems for utilizing a master-shadow physical register file based on verified activation

Also Published As

Publication number Publication date
JP5538442B2 (ja) 2014-07-02
KR101350851B1 (ko) 2014-01-13
WO2010107774A3 (en) 2011-01-13
EP2409220A4 (en) 2012-02-01
CN102341780A (zh) 2012-02-01
CN102341780B (zh) 2015-11-25
EP2409220A2 (en) 2012-01-25
JP2012520531A (ja) 2012-09-06
WO2010107774A2 (en) 2010-09-23
US9207943B2 (en) 2015-12-08
TW201135597A (en) 2011-10-16
US20100242041A1 (en) 2010-09-23

Similar Documents

Publication Publication Date Title
KR101350851B1 (ko) 실시간 멀티스레드 스케줄러 및 스케줄링 방법
JP4148223B2 (ja) プロセッサおよび情報処理方法
US7984281B2 (en) Shared interrupt controller for a multi-threaded processor
JP5405320B2 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
KR100746797B1 (ko) 프로세서 및 정보처리 방법
US7822885B2 (en) Channel-less multithreaded DMA controller
US8479207B2 (en) Priority inheritance in multithreaded systems
EP2972834B1 (en) Systems and methods of executing multiple hypervisors
US9043806B2 (en) Information processing device and task switching method
JP2007156824A (ja) プロセッサシステム、タスク制御方法
JPWO2008023426A1 (ja) タスク処理装置
US20100050184A1 (en) Multitasking processor and task switching method thereof
JPWO2008023427A1 (ja) タスク処理装置
US7818558B2 (en) Method and apparatus for EFI BIOS time-slicing at OS runtime
JP4609113B2 (ja) プロセッサ
JP2005190207A (ja) 割り込み制御装置、制御方法
JP2005258509A (ja) ストレージ装置
US20150363227A1 (en) Data processing unit and method for operating a data processing unit
KR100455623B1 (ko) 멀티태스킹 운영체계에서 무한 루프 타스크 처리 방법
JP2010165209A (ja) マルチスレッドプロセッサ装置
JPH0348938A (ja) 仮想計算機方式
JP2004326399A (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: 20161229

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee