KR101629989B1 - 시스템 태스크를 실행하는 복수의 프로세싱 코어를 포함하는 정보 프로세싱 시스템의 결정적 실행 및 동기화 방법 - Google Patents
시스템 태스크를 실행하는 복수의 프로세싱 코어를 포함하는 정보 프로세싱 시스템의 결정적 실행 및 동기화 방법 Download PDFInfo
- Publication number
- KR101629989B1 KR101629989B1 KR1020117011164A KR20117011164A KR101629989B1 KR 101629989 B1 KR101629989 B1 KR 101629989B1 KR 1020117011164 A KR1020117011164 A KR 1020117011164A KR 20117011164 A KR20117011164 A KR 20117011164A KR 101629989 B1 KR101629989 B1 KR 101629989B1
- Authority
- KR
- South Korea
- Prior art keywords
- tasks
- task
- execution
- core
- microkernel
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 68
- 230000010365 information processing Effects 0.000 title claims abstract description 8
- 238000000034 method Methods 0.000 title claims description 27
- 230000006870 function Effects 0.000 claims description 68
- 230000001960 triggered effect Effects 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 13
- 230000003993 interaction Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims 1
- 238000004377 microelectronic Methods 0.000 abstract description 3
- 230000000694 effects Effects 0.000 description 14
- 238000007726 management method Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000001143 conditioned effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000013497 data interchange Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 239000010453 quartz Substances 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N silicon dioxide Inorganic materials O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
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
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- 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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/468—Specific access rights for resources, e.g. using capability register
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
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)
- Hardware Redundancy (AREA)
- Power Sources (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
Abstract
본 발명은 두 개의 프로세싱 코어들을 포함하는 정보 프로세싱 시스템에 관한 것이다.
시스템에 의한 어플리케이션의 실행이 어플리케이션 태스크들의 실행 및 시스템 태스크들의 실행을 포함하므로, 시스템은 하드웨어 자원들과 직접적으로 연결된 상기 시스템 태스크들을 실행하는 마이크로커널을 포함한다.
프로세싱 시스템은:
- 코어 (A) 상의 태스크들의 스위칭에 관한 시스템 태스크들을 실행하는 마이크로커널의 연산부 (mN-TT) 와;
- 코어 (A) 와 상이한 코어 상에서, 코어 (A) 상의 태스크 할당 순서의 제어에 관한 시스템 태스크들을 실행하는 마이크로커널의 제어부 (mN-ET) 를 포함한다.
응용 분야: 마이크로전자공학, 높은 컴퓨팅 파워를 가진 임베디드 전자 시스템
시스템에 의한 어플리케이션의 실행이 어플리케이션 태스크들의 실행 및 시스템 태스크들의 실행을 포함하므로, 시스템은 하드웨어 자원들과 직접적으로 연결된 상기 시스템 태스크들을 실행하는 마이크로커널을 포함한다.
프로세싱 시스템은:
- 코어 (A) 상의 태스크들의 스위칭에 관한 시스템 태스크들을 실행하는 마이크로커널의 연산부 (mN-TT) 와;
- 코어 (A) 와 상이한 코어 상에서, 코어 (A) 상의 태스크 할당 순서의 제어에 관한 시스템 태스크들을 실행하는 마이크로커널의 제어부 (mN-ET) 를 포함한다.
응용 분야: 마이크로전자공학, 높은 컴퓨팅 파워를 가진 임베디드 전자 시스템
Description
본 발명은 시스템 태스크들을 실행하는 복수의 프로세싱 코어들을 포함하는 정보 프로세싱 시스템의 결정적 실행 및 동기화 방법에 관한 것이다. 마이크로전자공학의 분야 또는 높은 컴퓨팅 파워를 가진 임베디드 전자 시스템 (embedded electronic systems) 분야에 특히 적용된다.
반도체 산업은 실망스러운 현실에 직면하였는데, 프로세서들의 성능 수준을 현저히 증가시키기 위한 가능성 있는 방안이, 최소한 개개의 수준에서는, 더 이상 없다는 점이다. 시스템들의 컴퓨팅 파워를 증가시키기 위한 희망적인 방안으로는, 병렬로 작동하는 복수의 프로세서들을 사용하는 시스템들만이 아직 남아있는 듯 하다. 실무에서는, 1960 년대에 수행한 연구들에서 컴퓨팅 파워와 연산 시스템들 (computation systems) 의 효율 사이의 비율이 순차 시스템들보다 병렬 시스템들에서 잠재적으로 훨씬 높은 것으로 밝혀진 바 있다. 현재 멀티미디어, 통신 또는 실시간 프로세싱 시스템의 분야에서 새로운 어플리케이션들은 소모되는 파워 수준 및 제어된 표면적들로 인해 점점 더 많은 컴퓨팅 파워를 요구하고 있다. 단일 코어의 프로세싱 파워를 증가시킬 수 없는 상황에서, 유일한 솔루션 (solution) 은 코어들의 수를 배가시키고 이들이 병렬로 작동하게 하는 것으로서, 이는 온칩 병렬 시스템 (on-chip parallel system) 이라는 새로운 아키텍처 개념이 생기게 하였다. 임베디드 시스템들을 위한 프로세서들이라는 상당히 전문적인 맥락에서, 하나의 동일한 칩에서 실행 코어의 수를 증가시키려는 이러한 경향은 매우 두드러진다. 머지 않아 (in the medium term) 수십 개 혹은 수백 개까지의 실행 코어들을 가진 시스템들이 도입 또는 표준화되는 방향으로의 움직임이 있을 것이다. 이러한 시스템들 중에서 언급할 가치가 있는 것으로서, "Multi-Processor System on Chip" 의 약자 "MPSoC" 로 보통 지칭되는 온칩 멀티프로세서 시스템들이 있다.
그러나 병렬 시스템들은 순차 시스템들에 비해 프로그래밍 및 디버깅이 훨씬 더 어렵다. 프로그래밍 및 디버깅에서의 이러한 어려움들은 어플리케이션들의 복잡성의 계속적인 증가로 인해 악화된다. 임베디드 어플리케이션들에서, 이러한 어려움들은 더 많은 기능성을 통합하려는 욕구에 의해, 그리고 프로세싱되어야 하는 데이터량의 지속적인 증가에 의해 또한 가중된다. 예를 들어, 휴대폰들은 텔레커뮤니케이션 기능들을 멀티미디어, 포지셔닝, 또는 게이밍 기능들에까지 연관시킨다. 이는 임베디드 시스템들에서 집약적 연산 (intensive computation) 태스크들이 제어 위주의 (control-dominated) 태스크들과 함께 이행되는 경우로 이어지는데, 어플리케이션들의 이러한 다양한 요소들 사이에 매우 강한 상호작용이 있게 된다. 이 경우, 효과적인 병렬성을 가장 잘 관리하도록 상이한 코어들 사이의 프로세싱 함수들을 동기화하는 것이 연관되는 실시간 제약들에 대응함에 있어서 가장 중요한 성능 및 용량 인자이다. 바로 이것이 임베디드 시스템들의 병렬 아키텍처의 효과적인 작동에 있어 주요 난제이다. 이러한 난제는 비결정성 (indeterminism) 의 지배 (mastery), 통신들의 지배 및 제어들의 지배라는 세 가지 부면에서 바라보아야 한다. 어느 잠재적 병렬성이 파악되고, 어플리케이션에서 추출되고, 프로그램으로서 표현되면, 이 병렬성을 주어진 하드웨어 아키텍처에서 효과적으로 구현할 능력을 가지는 것이 필수적이다. 예를 들어 MPSoC 에서, 프로그래머에 의한 어플리케이션 병렬성의 추출 작업으로부터 최고의 유익을 얻기 위해서는, 수많은 프로세싱 시퀀스들이 칩의 모든 자원들 사이에 가장 잘 배분되어야 하는데, 한편 이러한 시퀀스들은 데이터 의존성 또는 실행 제어 의존성에 의해 상호연결되어 있다. 본 명세서에서, 이러한 시퀀스들은 이하 "실행 태스크들 (execution tasks)" 로 일컬어지는데, 실행 태스크는 프로세싱 코어 상에서 프로세싱 함수의 실행에 관한 것이다. 소프트웨어 전문가들은 이를 "스레드 (thread)" 라 칭하기도 함에 유의해야 할 것이다. 본 출원의 나머지 부분에서 따로 구별하지 않을 것이며, "태스크 (task)" 라는 용어가 실행 태스크를 의미할 것이다. MPSoC 에서 이러한 태스크들의 실행을 조직하고 또한 개발자의 작업을 용이하게 하기 위해, 이들의 실행을 위한 소프트웨어적 지원은 순전히 어플리케이션 부분들 및, 기저의 하드웨어로부터 자원들을 추상화 (abstract) 하는 함수를 가진 소위 "시스템" 부분들로 일컬어지는, 기타 부분들 내에 구성되어 있다. 태스크들에 의해 표현되는 병렬성 및 MPSoC 내의 가용 (available) 병렬성을 보다 잘 활용하기 위해, 한편으로는 다양한 코어들 상에서 수행될 프로세싱 함수들을 선택하는 방법에 관련되고 다른 한편으로는 이들이 함께 작동하게 하는 방법에, 즉 하드웨어 상에서 태스크들의 실행을 제어하는 기본 소프트웨어를 어떻게 구성할 것인지와 관련되는 연구를 수행할 필요가 있다. 따라서 프로그램이 어플리케이션의 병렬성에 대한 잠재력을 표현하는 방법과 동일한 방법으로, 일반적으로 "커널 (kernel)" 로 일컬어지는 기본 소프트웨어 수준에서 태스크들을 적절히 제어함으로써 아키텍처의 병렬성에 대한 잠재력을 표현하는 수단을 찾는 것이 필수적이다. 이러한 연구는 아키텍처의 잠재적 병렬성의 올바른 사용에 불리하게 작용할 수 있는 모든 상황들을 고려해야 할 것이다. 우선, 중앙 메모리, 네트워크, 통신 버스 또는 태스크 매니저와 같은, 필수적인 공유 자원에 대한 액세스에 의해 제한될 위험성이 있다. 또한 태스크들 사이의 상호의존성들을 충분히 세밀하게 관리하지 못할 위험성도 있는데, 그러한 태스크들이 다이내믹한 (dynamic) 성격을 가질 때 특히 그러하다. 마지막으로, 병렬적 실행의 비결정성들을 지배하지 못하여 프로그램들의 디버깅을 복잡하고 어렵게 할 위험성이 있다. 이 문제에 대처하는 한 가지 표준 방법은 계층적 소프트웨어 (layered software) 접근법으로서 최소한 실행될 태스크들을 포괄 (incorporate) 하는 어플리케이션 레이어와 하드웨어 자원들을 추상화하고 기계 상에서 태스크들의 효과적인 실행을 관리하는 커널이 구분되는 경우이다. 커널 자체도 통상적으로는 두 부분으로 구성되는데, 하나는 "마이크로커널" 로 일컬어지는 것으로, 레지스터들, 타이머들, 주변기기들 등의 관리와 같이 하드웨어에 직접적으로 관련되는 모든 시스템 함수들을 수행하는 부분이고, 두 번째는 본 명세서에서 "시스템 레이어" 로 일컬어지는 것으로, 태스크 간 통신 및 기타 상위수준 (high-level) 태스크 제어 부면을 담당하는 부분이다. 연구는 프로세싱 코어들이 선택되는 방법 및 정합되고 (coordinated) 효과적인 방식으로 작동하게 하는 방법을 정의하는 커널 구성을 도출해야 할 것이다. 이것이 현재 마이크로전자공학 및 임베디드 소프트웨어 산업이 직면한 주요 과제 중 하나이며, 본 발명은 이에 대한 솔루션을 제공한다.
기존의 솔루션은 커널을 실행하는 데 프로세싱 코어들을 대칭적으로 사용하는 방법을 제안한다. 이는 "대칭적 멀티프로세싱" (SMP) 타입의 아키텍처들에서 구현된다. 예를 들어, 구별되는 프로세싱 코어들 각각에서 리눅스 또는 윈도우 (등록 상표) 타입의 동일한 커널이 실행되는 경우가 수반될 수 있다. 그러나 한 가지 주요 단점은 리눅스 또는 윈도우 (등록 상표) 타입의 커널이, 최소한 커널의 필수 함수들에 관해서는, 두 개의 구별된 코어들에서 진정으로 동시에 실행될 수는 없다는 점이다. 그러므로 병렬성은 커널의 비필수 함수들로 제한된다. 이는 본 발명이 해결하고자 하는 기술적 과제 중 하나이며, 본 발명은 커널의 필수 함수들 일부를 복수의 프로세싱 코어들에 배분함으로써 이를 해결하고자 한다.
"파티션 (partition)" 솔루션으로 일컬어지는 것들도 있는데, 여기에서는 각각의 프로세싱 코어가 서로 알지 못하는 활동들을 전담할 것을 제안한다. 상호교환들은 메모리 공간의 공유를 통해 이루어진다. 예를 들어, 특허출원번호 WO/2007/038011 호의 "파티션된 멀티프로세서 시스템들을 위한 실시간 스레딩 서비스 (Real-time threading service for partitioned multiprocessor systems)" 제목의 문헌은 코어가 실시간 태스크들을 실행하여 다른 코어 상에서 실행되는 비실시간 커널에 의해 실행되는 어플리케이션을 위한 결과들을 공급하는 방법을 설명한다. 이와 유사하게, 각 코어가 이를 일정 타입의 프로세싱 함수들 (로직 연산, 집약적 연산들, 네트워크로부터 입력/출력 인터럽트들의 수신, 등) 에 전담하게 하는 커널을 실행하는 솔루션들이 있다. 대표적인 예로는, 하나의 코어가 연산들을 전담하게 하고 나머지들은 주변 입력/출력들을 서브 (serve) 하도록 인터럽트들의 수신을 전담하게 하는 방법을 들 수 있다. 이러한 대표적인 경우, 연산 코어의 커널은, 인터럽트들의 수신이 관리되는 코어에 의해 가용으로 된 입력/출력들로부터 야기되는 비동기 데이터에 대한 연산들을 수행하는 것을 가능하게 한다. 인터럽트는 프로그램 외부의 이벤트 발생에 상응하는 것인데, 상기 이벤트는 다른, 더 높은 순위의 태스크를 실행하기 위해 현재 태스크의 실행에 대한 일시적인 정지를 트리거링 (triggering) 한다 (이와 같은 실행 컨텍스트의 변경은 스위치로 일컬어진다). 외부 이벤트는 실제 또는 시뮬레이티드 클럭의 진행일 수 있으며, 상위 순위의 태스크는 타이머에 의해 트리거링되는 것일 수 있다. 시간 제약을 받는, 혹은 "타임 트리거드 (Time Triggered - TT)" 의 실시간 태스크들이 특히 이 경우에 해당하는데, 실시간 태스크는 주어진 시간 전에 완료되어야 하므로, 이는 또한 태스크 실행 기간에 의존하는 주어진 시간 전에 시작되어야 한다. 실시간 태스크들은 수정 결정 (quartz crystal) 에 의해 물리적인 방법으로 시간이 재어져 실제 클럭을 형성하는 타이머에 의해 트리거링된다. 외부 이벤트는 또한 데이터 전송의 완료일 수 있고, 이 경우 상위 순위 태스크는 입력-출력 인터럽트의 영향을 받는 "이벤트 트리거드 (Event Triggered - ET)" 형이라 불린다. 상대적으로 통상적인 설계인 이 타입에서는, 인터럽트를 수신하는 코어와 연산 코어가 약하게 결합되어 있다. 그래서 이 타입의 솔루션은, 데이터의 제공 및 연관 신호들의 수집체들의 제공에 그 정합이 의존하는 코프로세서들 (co-processors) 을 가진 아키텍처들과 흡사하다. 이 솔루션의 한 가지 장점은, 빠른 입력/출력들에 대해 양호한 반응성을 제공한다는 점, 즉 연산 코어 상의 프로세싱 함수들의 스케줄링 (scheduling) 을 어떠한 방식으로도 방해하는 일 없이 연관된 기본 연산들을 할 수 있게 한다는 점이다. 이는 실행될 태스크들이 서로에 대해 독립적일 때, 즉 데이터 상호교환 및/또는 동기화에 있어서 거의 또는 전혀 요구하는 바가 없을 때 효과적이다. 그러나 입력/출력들이 연산에 있어서 강한 동기화를 요구하거나 상이한 속도들을 가진 수많은 입력/출력들이 있을 때, 이러한 타입의 솔루션은 그다지 효과적이지 않다. 이 또한 본 발명이 해결하고자 하는 기술적 과제 중 하나이다.
또 하나의 기존 솔루션 항목에는 "마스터-슬레이브" 타입의 (미국등록특허 US005978838A 호 "비대칭 싱글 - 칩 이중멀티프로세서의 정합 및 동기화 (Coordination and synchronization of an asymmetric, single-chip, dual multiprocessor)" 제목의 문헌에 제시되는 것과 같은) 커널 아키텍처들이 포함된다. 하나의 코어는 "마스터" 코어로 지정되어 시스템 호출들을 관리를 담당하고, 반면 다른 코어들은 "슬레이브" 코어들로 지정되어 어플리케이션 태스크들의 알고리듬적 부분만을 실행한다. 따라서 마스터 코어는 다른 슬레이브 코어들에 의해 실행될 프로세싱 함수들의 제어 및 할당에 대해 완전히 책임진다, 즉 이들의 실행을 동기화한다. 여기에서의 장점은 동기화 문제들의 단순화인데, 이들은 전적으로 마스터 프로세서에 의해 관리된다. 이러한 아키텍처의 주요 단점은 매우 중앙집중적인 성격에 있는데, 마스터 프로세서는 다수의 태스크들 또는 심지어 다수의 코어들이 관련될 때 발생하는 경합 (contention) 문제들을 부담하게 되며, 전체적인 성능 수준은 마스터 프로세서의 성능 수준에 의해 급격히 제한된다. 이를 개선하기 위한 방안들이 제안된 바 있는데, 예를 들어 '컴퓨터 시스템 아키텍처의 진보 (Advances in Computer Systems Architecture)' (vol. 4697) 에 수록된 서민열 외 저, "멀티프로세서 임베디드 시스템을 위한 마스터/슬레이브 운영체제 아키텍처의 효과적인 설계 (An effective design of master/slave operating system architecture for multiprocessor embedded systems)" 에 반포된 것이 있다. 이 반포물은 스케줄링 문제들을 최적화하는 것을 목표로 한다. 그들은 모든 입력/출력들과 모든 시스템 호출들의, 특히 태스크간 통신에 관한 것들의 프로세싱으로부터 마스터 코어가 어떠한 방식으로도 해방되지 않으면서도 각 코어에서 스케줄링 정책을 계층적으로 (hierarchically) 조직화하는 방법을 제안한다. 이를 위해, 그들은 커널의 일부를, 각 코어에 복제되고 코어들 사이의 통신 ("프로세서간 통신 (Inter-Processor Communications)" 혹은 IPC) 을 관리하는 "하드웨어 추상화 레이어 (Hardware Abstraction Layer)" 로 정의한다. 코어들을 동기화하는 IPC 메커니즘은 원격 절차 호출 (remote procedure call) 을 기초로 구현되는 메커니즘이다. 한편, 이러한 클라이언트-서버 배분 함수 호출 메커니즘은 차단 (blockages) 들을 일으키는데, 코어에서의 어느 태스크가 다른 태스크의 주목 (attention) 을 위한 메시지의 전송을 유발할 때 이는 마스터 코어에서 원격 시스템 함수를 호출한다. 이 후, 호출한 코어는 이 함수의 호출에 대한 리턴이 있을 때까지 차단되어, 이 기간 동안 다른 병렬 실행이 방지된다. 이와 유사하게, 마스터 코어가 어떠한 이유로든 차단되면, 슬레이브 코어들도 모두 차단되고, 그 역도 마찬가지다. 따라서 이러한 솔루션은 지나치게 중앙집중적이다. 이것 또한 본 발명이 해결하고자 하는 기술적 과제 중 하나이다.
마지막으로, 단일코어 프로세서들을 위한 커널 구성 제안들도 있는데, 예를 들어 특허번호 EP 1 337 919 B1 호에서는 단일 코어 상에서 태스크들의 결정적 실행을 정합하는 것이 가능해지도록 마이크로커널 내의 커널 및 시스템 레이어를 조직화하는 방법이 기재되어 있다. 이 특허에는 MPSoC 아키텍처의 상이한 코어들 사이에서 커널을 바람직하게 파티션하는 방법이 나타나 있지 않다. 이것 또한 본 발명의 목표 중 하나이다.
본 발명의 목적은 프로세싱 코어들에서 마이크로커널의 최적 파티셔닝을 제안함으로써 전술한 단점들에 대한 솔루션을 제공함에 있다. 따라서 시스템 함수들은, 각 코어가 마이크로커널의 프로세싱 함수들 중 일부만을 처리하도록, 페이싱 (pacing) 및 시간 관리 함수들의 최적 배분에 근거하여 배당된다. 그러면 하나의 코어가 태스크들의 실행을 전담하게 되고, 반면 제 2 의 코어는 인터럽트 관리자 및 제 1 코어의 부분 제어기 역할을 한다. 본 발명은 마이크로커널을 두 개의 구분된, 상호보완적인 부분들로 구성할 것을 제안하는데, 이 두 부분은:
·시간축 (time base) 의 업킵 (upkeep) 에 관한 시스템 인터럽트들의 캡쳐 (capture) 및 스케줄링 리스트들의 업데이트를 처리하는 제어 지향 부분과,
·타임-페이스드 (time-paced) 태스크들의 실행과 관련된 연산 지향 부분이다. 마이크로커널의 이 부분은 이어서 "제어" 부분 에 의해 구현 및 구동되는 스케줄링 정책에 따라 태스크들의 스위칭을 처리한다.
마이크로커널의 이러한 구성은, 아래의 아일랜드 (island) 들로부터 도출되는 태스크들의 효과적인 공존을 용이하게 하는데, 이들은:
·인터럽트-조건 (interrupt-conditioned) 태스크들이 실행되는 인터럽트들에 의해 트리거링되는 입출력 활동들을 모으는 ET ("이벤트 트리거드") 아일랜드 (island) 와;
·실시간 태스크들이 실행되는 타임-페이스드 활동들을 모으는 TT ("타임 트리거드") 아일랜드이다.
따라서 TT 아일랜드는 연산 지향 부분으로 배당되는 반면, 시스템 인터럽트들의 수신을 전담하는, 마이크로커널의 제어 지향 부분은 또한 ET 아일랜드의 입출력 어플리케이션 인터럽트들의 캡쳐 및 프로세싱을 처리할 수 있다. 이는 두 개의 아일랜드들을 두 개의 상이한 코어들 상에 파티셔닝하는 장점을 제시할 뿐만 아니라, TT 아일랜드로부터 도출되는 태스크들에 최다의 연산 자원들을 허용하는 장점을 제시하는데, 이러한 태스크들은, ET 아일랜드의 태스크들의 활성화에 의해, 스위칭의 대상이 되지 않는다. 본 명세서에서, 마이크로커널의 "연산" 부분은 이하 "mN-TT 마이크로커널" 혹은 "mN-TT 부" 로 지칭되며, 마이크로커널의 "제어" 부분은 이하 "mN-ET 마이크로커널" 혹은 "mN-ET 부" 로 지칭된다.
이를 위해, 본 발명의 대상은 특히 두 개의 프로세싱 코어들을 포함하는 정보 프로세싱 시스템이다. 이 시스템에 의한 어플리케이션의 실행은 어플리케이션 태스크들의 실행 및 시스템 태스크들의 실행을 포함하고, 이 시스템은 하드웨어 자원들과 직접적으로 연결된 상기 시스템 태스크들을 실행하는 마이크로커널을 포함하며, 이 프로세싱 시스템은:
- 제 1 코어 (A) 상의 마이크로커널의 연산부 (mN-TT) 로서, 각 태스크에 대해 태스크가 실행가능한지 여부를 나타내는 상태의 업데이트를 포함하여 코어 (A) 상의 태스크들의 스위칭에 관한 시스템 태스크들을 실행하고, 상태는 태스크와 연관된 실행 컨텍스트에서 포함되며 태스크를 위한 실행 데이터를 모으며, 상태는:
·태스크가 준비상태에 있음을 나타내는 값;
·태스크가 대기상태에 있음을 나타내는 값;
·태스크가 오류상태에 있음을 나타내는 값;
을 가질 수 있는, 연산부 (mN-TT); 및
- 제 2 코어 (O) 상의 마이크로커널의 제어부 (mN-ET) 로서, 입출력 인터럽트들에 의해 트리거링된 어플리케이션 태스크들을 실행하고, 코어 (A) 상의 태스크 할당 순서의 제어에 관한 시스템 태스크들을 실행하며, 시스템 태스크들은:
·준비상태에 있는 태스크들의 순서화된 리스트, 및/또는;
·대기상태에 있는 태스크들의 순서화된 리스트, 및/또는;
·오류상태에 있는 태스크들의 리스트;
의 관리를 포함하는, 제어부 (mN-ET); 를 포함하며, 이 정보 프로세싱 시스템은, 상기 태스크들의 스위칭에 관하여 상기 코어 (A) 에 의해 실행되는 상기 시스템 태스크들은 각 태스크의 실행 컨텍스트에서:
- 최초의 실행시작 제한시간 및/또는 최후의 실행종료 제한시간;
- 잔여 실행시간 한도량;
의 업데이트를 포함하여, 각 태스크를 그 실행 제한시간들에 따라 및 그 실행시간 한도량에 따라 실행하는 것이 가능하도록 하는 순서로 코어 (O) 가 준비상태에 있는 태스크들의 리스트 내의 태스크들의 순서를 정하는 것을 특징으로 한다.
바람직하게는, 태스크들의 스위칭에 관하여 마이크로커널의 mN-TT 부에 의해 실행되는 시스템 태스크들은, 코어 (A) 에 의한 인터럽트의 수신시:
- 준비상태에 있는 태스크들 중 어느 태스크의 실행 컨텍스트의 로딩;
- 태스크의 실행의 트리거링; 을 포함할 수 있다.
바람직하게는, 인터럽트의 수신시, 마이크로커널의 mN-TT 부가 제 1 태스크의 실행 컨텍스트를 준비상태에 있는 태스크들의 리스트로 로딩시킬 수 있다.
필요한 경우, 인터럽트를 마이크로커널의 mN-ET 부에 의해 구현되는 타이머에 의해 생성하는 것이 가능하다. 타이머는 수정 결정 클럭에 의해 페이스되어 마이크로커널의 mN-TT 부에 의한 실시간 어플리케이션 태스크들의 실행을 트리거링할 수 있다.
바람직하게는, 각 코어가 특유의 태스크들 간의 통신에 관한 시스템 태스크들을 실행할 수 있다.
바람직하게는, 시스템이 공유 메모리 공간 및 일 셋트의 인터럽트들을 포함하여 코어들이 상호작용할 수 있다.
일 실시예에서는, 코어들이 상이한 종류의 프로세서들일 수 있다. 프로세서들은 칩 상에 구현될 수 있다.
본 발명의 기타 주요 장점으로는, 마이크로커널의 파티셔닝이, 연산 코어가 신속한 입출력 인터럽트-조건 프로세싱 함수들 및 일부 시스템 프로세싱 함수들을 고려해야 하는 상황으로부터 면제시키고 이로 인해 연산 태스크들 및 인터럽트-조건 프로세싱 함수들 사이의 빈번한 컨텍스트 변화를 방지하는 것을 가능하게 한다는 점을 들 수 있다. 칩 상에서 구현되면, 달성가능한 성능 수준이 개선되며, 멀티코어 하드웨어 아키텍처 상에서 상이한 취득 또는 연산 프로세싱 함수들 간에 높은 수준의 보안성이 보장된다. 본 발명은 또한 이벤트-페이스드 입출력들과 연관되는 타임-페이스드 연산 프로세싱 함수들 및 루틴들이 효과적으로 공존하는 것을 가능하게 한다.
첨부된 도면을 참조할 때, 본 발명의 기타 특징 및 장점이 이하의 기재로부터 자명할 것이다.
도 1 은 본 발명에 따른 두 개의 프로세싱 코어들 상에서 마이크로커널의 활동들의 배분을 예시적으로 나타내는 타이밍 다이어그램이다.
도 2 는 본 발명에 따른 마이크로커널의 mN-ET 부를 위한 인터럽트들을 예시적으로 나타내는 기능적 블록 다이어그램이다.
도 3 은 본 발명에 따른 mN-ET 부로부터 오는, 마이크로커널의 mN-TT 부를 위한 소프트웨어 인터럽트를 예시적으로 나타내는 기능적 블록 다이어그램이다.
도 4 는 본 발명에 따른 마이크로커널의 mN-ET 부를 위한 입출력 인터럽트들을 예시적으로 나타내는 기능적 블록 다이어그램이다.
도 5 는 본 발명에 따른 mN-TT 부로부터 오는, 마이크로커널의 mN-TT 부를 위한 소프트웨어 인터럽트를 예시적으로 나타내는 기능적 블록 다이어그램이다.
도 6 은 본 발명에 따른 두 개의 코어들이 병렬로 작동하는 경우를 예시적으로 나타내는 타이밍 다이어그램이다.
도 1 은 본 발명에 따른 두 개의 프로세싱 코어들 상에서 마이크로커널의 활동들의 배분을 예시적으로 나타내는 타이밍 다이어그램이다.
도 2 는 본 발명에 따른 마이크로커널의 mN-ET 부를 위한 인터럽트들을 예시적으로 나타내는 기능적 블록 다이어그램이다.
도 3 은 본 발명에 따른 mN-ET 부로부터 오는, 마이크로커널의 mN-TT 부를 위한 소프트웨어 인터럽트를 예시적으로 나타내는 기능적 블록 다이어그램이다.
도 4 는 본 발명에 따른 마이크로커널의 mN-ET 부를 위한 입출력 인터럽트들을 예시적으로 나타내는 기능적 블록 다이어그램이다.
도 5 는 본 발명에 따른 mN-TT 부로부터 오는, 마이크로커널의 mN-TT 부를 위한 소프트웨어 인터럽트를 예시적으로 나타내는 기능적 블록 다이어그램이다.
도 6 은 본 발명에 따른 두 개의 코어들이 병렬로 작동하는 경우를 예시적으로 나타내는 타이밍 다이어그램이다.
본 발명에 따르면, 마이크로커널의 mN-ET 부 및 mN-TT 부는 준비/대기/오류상태에 있는 태스크들을 위한 단일 셋트의 스케줄링 리스트들을 공유하는데, 리스트들 내의 순서는 mN-ET 부에 의해 유지되고 리스트들 내 각 요소의 내용은 mN-TT 부에 의해 유지된다. mN-TT 마이크로커널은 로컬 스케줄링을 요구하지 않고 리스트들을 직접적으로 참조한다. mN-ET 부 및 mN-TT 부의 프로세싱 함수들은 소프트웨어 인터럽트들을 통한 비동기 상호작용들을 발생시킨다. 실시의 경우, 공유 정보의 상태를 수정한 시스템 프로세싱 함수를 상기 부분들 중 하나가 완료하자마자, 나머지 부분을 위한 소프트웨어 인터럽트가 발생하여 그 사실을 선언한다. 그러면 발송하는 부분은 그 실행을 계속하여, 나머지 시스템 또는 어플리케이션 태스크들을 병렬로 실행한다. 따라서 mN-ET 부는, 준비상태에 있는 태스크들의 리스트를 수정할 때, 그 사실을 mN-TT 부에게 선언하고, 이어서 그 실행을 계속한다. 반대로, mN-TT 부는, 리스트들의 업데이트를 필요로 하는, 태스크의 상태 변화에 대해 mN-ET 부에 선언하고는, 준비상태에 있는 다음 태스크에 대한 제어권을 즉시 이전함으로써 그 실행을 계속한다. 따라서 마이크로커널은 현재 존재하지 않는 비동기 상호작용 방법으로써 전체적으로 배분된다.
본 실시예에서, mN-TT 부는, mN-TT 코어로도 지칭되는 코어 (A) 상에 호스트되어 (hosted), 최대의 연산 능력들을 제공할 수 있다. 반면에, mN-ET 부는, mN-ET 코어로도 지칭되며 인터럽트들의 수신을 위해 최적회될 수 있는 코어 (O) 상에 배치될 수 있다. 예를 들어, 프리스케일 S12XE (등록상표) 아키텍처는 이러한 배분에 적합한데, mN-TT 부는 CISC 코어 상에 배치되고 mN-ET 부는 RISC 코어상에 배치될 수 있다. 따라서 어플리케이션 태스크들은 사용자 모드 (시스템의 어플리케이션 또는 기능적 프로세싱 함수들에 상응) 및 슈퍼바이저 (supervisor) 모드 (상기 태스크를 전담하는 시스템 프로세싱 함수들로서 그 로직적 및 시간적 경향의 제어와, 태스크간 통신들의 관리를 포함하는 시스템 프로세싱 함수들에 상응) 모두에서 실행될 수 있다. 이에 따라 시스템 호출들은 어플리케이션 태스크를 실행하는 코어 상에 남아있게 된다. 본 발명은 블로킹 동기화 메커니즘 (blocking synchronization mechanisms) 을 필요로 하지 않고도 ET 및 TT 태스크들 사이의 통신들을 구현하는 것을 가능하게 한다.
기재된 바와 같이, 본 출원은 신속한 입출력과 연결된 복수의 타임-페이스드 태스크들 및 특정 프로세싱 함수들을 효과적으로, 즉 보안적이고 결정적인 방식으로, 실행하는 것을 가능하게 하는 정보 프로세싱 시스템을 설명한다. 본 발명은 커널의 다양한 저수준 함수들을 코어 (A) 및 코어 (O) 상에 효과적으로 배분하는 것을 그 기초로 한다. 본 발명에 따른 이러한 효과적인 배분을 정의하기 위해, 본 실시예에서는 커널 내부를 두 개의 구별된 부분들로 구분하였다:
·타이머에 의해 페이싱을 관리하고 태스크들 사이의 통신들을 관리하는 범용 레이어 (generic layer) 일 수 있는 시스템 레이어: 이 경우 이는 태스크들의 실행의 타이머에 의한 페이싱에 대한 설명을 포함하며, 태스크들 사이의 통신들의 구현이 가능해지도록 할 수 있다;
·프로세싱 자원의 할당, 예외의 관리 및 실시간 타임-스탬핑 (time-stamping) 을 관리하는 레이어인 마이크로커널.
예를 들어, 타이머는 수정 결정 클럭으로 페이싱되어 코어 (A) 에 의한 실시간 태스크들의 실행을 트리거할 수 있다. 코어 (A) 는 TT 아일랜드의 실시간 태스크들의 실행을 전담하지만, 또한 마이크로커널의 mN-TT 부의 함수들도 구현한다. 코어 (O) 는 ET 아일랜드의 인터럽트-조건 프로세싱 함수들의 실행을 전담하지만, 또한 마이크로커널의 mN-ET 부의 함수들 중 프로세싱 함수들을 연산 코어로 할당하는 순서의 제어에 관한 함수들도 구현한다. 마이크로커널의 mN-ET 부는 또한, mN-TT 부에서, 마이크로커널의 함수들 중 할당 시간들의 모니터링에 관한 함수들을 트리거링한다. 이것은 본 발명의 주요 원리 중 하나로서, 코어 (O) 를 사용하여 어플리케이션의 실시간 태스크들에 의해 코어 (A) 가 사용되는 방식을 결정 및 모니터링한다는 것이다. 본 실시예에서 태스크들 (준비상태에 있는 태스크들, 대기상태에 있는 태스크들, 오류상태에 있는 태스크들) 의 리스트의 업데이트와 연결된 시스템 활동들로부터 코어 (A) 를 면제시키고, 또한 준비상태에 있는 태스크들 중 연산 코어의 할당의 선택과 연결된 시스템 활동들로부터 면제시킴으로써, 본 발명은 성능의 향상을 가능하게 한다. 본 발명은 블로킹 없는 방식으로 태스크들의 할당을 구현하는 시스템 활동들을 두 코어들 모두에 배분하는 것을 가능하게 한다.
본 실시예에서는, 코어 (A) 상에 있는 마이크로커널의 mN-TT 부가 코어 (A) 상 태스크들의 스위칭의 관리를 담당한다. 여기에는 태스크들의 실행 컨텍스트의 내용을 업데이트하는 것도 관련될 수 있는데, 예를 들어 유효실행시간 (effective execution time) 및 잔여 한도량 (한도량은 관련된 태스크의 실행을 위해 예비된 실행시간의 상한임) 측면에서 그러할 수 있다. 또한 타이머를 관리하는 코어 (O) 로부터 인터럽트가 있는 경우 태스크들의 실행을 트리거링하는 것도 관련될 수 있는데, 예를 들어 컴파일레이션 (compilation) 시 알려진 최초의 시작시간 또는 타임아웃 (timeouts) 에 의하여 그러할 수 있다. 이러한 태스크에서 그 어플리케이션 프로세싱 함수가 종료되면, 이는 소위 "소프트웨어" 인터럽트에 의하여 제어권을 코어 (A) 상의 mN-TT 마이크로커널로 이전하여, 그 타임아웃을 가능한 한 지연시키거나 다음 웨이크업 (wake-up) 시간을 조절한다.
본 실시예에서는, 태스크 컨텍스트들의 업데이트를 고려하고 그에 따라 이하의 태스크 리스트들, 즉 준비상태에 있는 태스크들의 리스트, 대기상태에 있는 태스크들의 리스트, 오류상태에 있는 태스크들의 리스트에서 순위를 정하는 것을 마이크로커널의 mN-ET 부가 담당한다. 따라서 바람직하게는, 마이크로커널의 mN-TT 부가 준비상태에 있는 태스크들의 리스트 내의 태스크들의 순서대로 CPU (중앙처리장치) 사용을 허용하고 각 태스크의 유효실행시간을 연산할 수 있다. 마이크로커널의 mN-ET 부는 또한 현재 시간의 유지를 담당할 수도 있는데, 이는 타이머-페이싱 시스템에서 태스크들을 웨이크업시키는 데 유용하다. 연산 코어 상에서 유효실행시간 제어들을 활성화시킬 수도 있다. 입출력 인터럽트-조건 태스크들의 실행을 트리거링할 수도 있다. 커널 중 코어 (O) 상에 있는 부분은 또한 그 결과들을 타임-스탬핑하여 코어 (A) 의 어플리케이션 태스크들에 대해 가용화시킬 수 있다.
도 1 은 본 발명에 따라 TT 아일랜드 내의 어플리케이션 태스크들 (A1 및 A2) 의 실행 중 마이크로커널 (μkernel) 의 활동들을 코어 (O) 및 코어 (A) 상에 배분한 예를 나타낸다. 도 1 에 도시된 바와 같이, 마이크로커널의 실행은, 태스크의 웨이크업에 상응하는, 타이머로부터 오는 인터럽트 (IT) (타이머 IT) 의 발생시 트리거링될 수 있다. 마이크로커널의 실행은 또한 소프트웨어 인터럽트 (소프트웨어 IT) 의 발생시 트리거링될 수 있다. 마지막으로, 신속한 입출력에 연결되는 인터럽트 (I/O IT) 의 발생시 트리거링될 수도 있다. 마이크로커널의 실행이 두 코어 모두에 배분되어 있으므로, 타이머 인터럽트들 및 입출력 인터럽트들에 뒤따르는 마이크로커널로의 입력들은 코어 (O) 에서 직접적으로 이루어질 수 있다. 후술되는 바와 같이, 소프트웨어 인터럽트들에 뒤따르는 마이크로커널로의 입력들은 태스크들이 실행되는 코어 (A) 및 코어 (O) 사이에 배분된다. 본 발명에 따른 마이크로커널의 파티셔닝이 제공하는 한 가지 중요한 장점은, 코어 (A) 가 태스크의 실행을 예측할 수 있게 한다는 것이다. 실시의 경우, 타이머 인터럽트의 발생 전에 제 1 태스크가 프로세싱을 완료하면, 이는 배정은 되었으나 소비되지 않은 시간이, 준비상태에 있는 다른 태스크들에 대해 이들의 시간 파라미터들에 따라 가용 상태에 있음을 의미한다. 이것은 제 1 태스크에 배당되었던 잔여 프로세싱 시간을 준비상태에 있는 다른 태스크들이 소비하는 것으로 이어진다. 이는 또한 (코어 (O) 상에서 mN-TT 부에 의해 수행되는) 태스크들에 대한 새로운 스케줄링을 위한 연산을 기다리고 이 작업이 완료될 때까지 블로킹 방식으로 기다리는 것을 방지한다. 각 태스크의 종료는 실행 리스트들을 다시 스케줄링할 것을 요구하는 상태 변화에 상응하므로, 이러한 상태 변화를 선언하기 위해 두 코어들을 정합하는 여러 가지 방법이 있다. 첫 번째 방법은 타이머 인터럽트의 발생을 기다리는 것을 포함하고, 이것은 실행되고 종료되는 모든 태스크들의 상태 변화들을 프로세싱하는 것에 해당된다. 두 번째 방법은 mN-ET 마이크로커널 내에, 마이크로커널의 mN-TT 부로부터 야기되는 인터럽트에 의해 트리거링되는, 연관된 추가 입력을 가지는 것을 포함한다. 이것은 다음 타이머 인터럽트를 억제하고 스케줄링 리스트들의 업데이트를 예측하는 효과를 가진다. 이하의 상세한 설명에서는 첫 번째 상태변화 선언 정합 방법이 채택되었다. 본 실시예에서 태스크는 언제나 두 시간 제한들 사이에서 그 시간 한도량에 따라 양호하게 실행됨에 유의할 것이다.
본 실시예에서, 마이크로커널의 mN-ET 부는 바람직하게 타이머로부터 인터럽트들의 발생시 비동기 방식으로 실행되고, 코어 (A) 상에서 마이크로커널의 mN-TT 부 내의 추가 입력은 고려되어야 할 태스크 리스트의 변화 또는 수행되어야 할 한도량 제어를 표시하는 것을 가능하게 한다. 그러면 한도량에 의한 유효실행시간과 관련된 제어가 부분적으로 마이크로커널의 mN-TT 부로 위임되므로, 유효실행시간과 관련된 제어의 결과를 표시하도록 마이크로커널의 mN-ET 부 내에, 마이크로커널의 mN-TT 부로부터 야기되는 인터럽트에 의해 트리거링되는, 연관된 추가 입력을 가지는 것이 필요하다. 다른 실시예에서는, 코어 (A) 및 코어 (O) 상의 한도량 측정치들 사이의 차이에 대한 관리를 방지하기 위해, 한도량 제어들을 위한 인터럽트들이 전적으로 코어 (A) 에 의해 관리될 수 있다.
전술한 원리들에 따라, 유효실행시간 제어 활동들과 관련하여 두 코어들을 정합하는 여러 가지 방법이 있다. 첫 번째 방법은 두 코어들 사이에 단일의 인터럽트 왕복을 배치하는 것을 포함한다: 타이머는 마이크로커널의 mN-ET 부와 관련된 한도량 제어를 트리거링하며, 이는 이어서 코어 (A) 를 향한 인터럽트를 트리거링하고, 다음으로 제어가 수행되면 mN-TT 마이크로커널에 의해 제 2 의 인터럽트가 코어 (O) 를 향해 트리거링된다. 이것은 하드웨어 자원들을 절약하는 장점이 있는데, 타이머가 태스크의 웨이크업과 한도량 제어를 모두 관리할 수 있기 때문이다. 두 번째 방법으로서 왕복을 사용하지 않는 방법이 정의될 수 있다: 이 경우 타이머는 mN-TT 마이크로커널의 주목을 위한 제어를 개시하고, 한도량 연산이 완료되면 mN-TT 마이크로커널은 코어 (O) 를 향해 인터럽트를 트리거링하여 상태 변화를 선언한다. 이 방법에서는, 인터럽트들의 전체적인 수는 감소되지만 스위칭 시간 측면에서는 대가가 클 수 있는데, 예를 들어 중간 인터럽트들이 관리되는 경우 그러하다. 이하의 상세한 설명에서는 첫 번째 한도량 제어 정합 방법이 채택되었다.
따라서 본 실시예에서는, 예상되는 다음 인터럽트의 성격을 파악하기 위해, natInt 로 지칭되는 마이크로커널의 상태변수가 마이크로커널의 mN-ET 부의 모든 프로세싱 함수들의 출력에 체계적으로 배치된다. 이것은 mN-ET 마이크로커널에만 해당된다. 예를 들어, natInt 가 0 인 경우, 이것은 예상되는 인터럽트가 코어 (A) 로부터 야기되는 것이라는 의미이다. 코어 (O) 의 연관된 프로세싱 함수들에는 준비상태에 있는 태스크들, 대기상태에 있는 태스크들, 및 오류상태에 있는 태스크들의 리스트에 대한 업데이트와 또한 다음 타이머 인터럽트의 무장이 바람직하게 포함될 수 있다. 예를 들어, natInt 가 1 인 경우, 이것은 예상되는 인터럽트가 활성화된 태스크의 유효실행시간을 제어하기 위한 타이머 인터럽트라는 의미이다. mN-ET 마이크로커널과 연관되는 프로세싱 함수들에는 효과적인 제어를 위해 코어 (A) 를 향한 인터럽트의 트리거링이 포함된다. 예를 들어, natInt 가 2 인 경우, 이것은 예상되는 인터럽트가 대기상태에 있는 태스크를 웨이크업하기 위한 타이머 인터럽트라는 의미이다. mN-ET 마이크로커널과 연관되는 프로세싱 함수들에는 준비상태에 있는 태스크들, 대기상태에 있는 태스크들, 및 오류상태에 있는 태스크들의 리스트에 대한 업데이트, 코어 (A) 를 향한 인터럽트의 트리거링, 및 다음 타이머 인터럽트의 무장이 바람직하게 포함될 수 있다.
따라서 본 실시예에서는, 코어 (O) 로부터 코어 (A) 를 향하는 어떠한 인터럽트가 트리거링되기 전에 natAlert 로 지칭되는 마이크로커널의 상태변수가 배치된다. 이는 마이크로커널의 mN-ET 부에 의해 업데이트되며 마이크로커널의 mN-TT 부에 의해 참조된다. 예를 들어, natAlert 가 0 인 경우, 이것은 예상되는 코어 (A) 로부터의 인터럽트가 태스크 웨이크업에 상응한다는 의미이다. 마이크로커널의 mN-TT 부와 연관되는 프로세싱 함수들에는 새로운 리스트들에 대한 고려가 포함된다. 예를 들어, natAlert 가 1 인 경우, 이것은 코어 (O) 로부터 야기되는 인터럽트가 유효실행시간의 제어에 상응한다는 의미이다. 바람직하게는, 코어 (A) 상의 연관되는 프로세싱 함수들에 활성화된 태스크의 유효실행시간에 대한 제어, 그리고는 태스크의 상태의 배치, 그리고는 연산 코어로부터 코어 (O) 를 향한 인터럽트의 트리거링이 포함된다. 도 1 은 코어들 (A 및 O) 에 의해 수행되는 병렬 프로세싱 기능들을 더 자세히 나타낸다.
도 2 는 본 발명에 따른 예로서 코어 (O) 에 의해 프로세싱된 타이머로부터 오는 인터럽트의 예를 나타낸다. 블록 (20) 에 도시된 바와 같이, 이 인터럽트는 연관된 루틴이 종료될 때마다 마이크로커널의 mN-ET 부에 의해 바람직하게 구현될 수 있다. 따라서 이는, 블록 (21) 에 도시된 바와 같이, 코어 (A) 상의 프로세싱 함수들의 시간 경향을 모니터링하는 것을 가능하게 한다. 그러면 타이머 인터럽트는, 태스크의 타이머에 의한 웨이크업 ("TT 웨이크업") 또는 활성화된 태스크의 시간 제약들이, 예를 들어 한도량 또는 타임아웃의 측면에서, 지켜지도록 하는 제어에 상응한다.
타임아웃의 또는 한도량의 측면에서, 웨이크업 시간들 또는 시간 제약들은 타이머 페이싱 시스템 시간들로 표현된다. 이들은 일정 수의 비트들 상에, 예를 들어 32 비트에, 코딩될 수 있다. 타이머가 시간 제약에 대해 직접적인 표현을 허용하지 않는 경우, 즉 블록 (24) 에 도시된 바와 같이 다음으로 무장되는 인터럽트가 타이머의 용량보다 큰 값을 가진 시간 제약에 상응하는 경우, 마이크로커널은 타이머 페이싱 시스템 시간들의 타이머의 시간축으로의 전사의 관리를 담당할 수 있다. 이 경우, 마이크로커널의 mN-ET 부는 블록 (23) 에 도시된 바와 같이 중간 인터럽트들을 관리하여, 해당 시간 제약의 최종 인터럽트에 상응하는, 최후의 인터럽트 발생 전까지의 시간을 카운트다운 (count down) 한다. 최종 인터럽트는 준비상태에 있는 태스크들의 리스트 및 대기상태에 있는 태스크들의 리스트를 업데이트하기 위한 프로세싱 함수로, 그리고는 블록 (22) 에 도시된 바와 같이 마이크로커널이 활성화된 타임 이벤트를 고려하도록 natint 값 (1 또는 2) 에 따라 코어 (A) 상의 인터럽트의 트리거링으로 이어진다.
본 실시예에서 마이크로커널의 mN-ET 부가 타이머 인터럽트의 관리자이므로, 마이크로커널의 mN-ET 부가 스케줄링 및 태스크들에 대한 코어 (A) 의 할당의 제어를 담당한다. 따라서 준비상태에 있는 컨텍스트들의 리스트가 업데이트되거나 한도량 제어 인터럽트가 생성되면, 이는 소프트웨어 인터럽트를 사용하여 코어 (A) 를 인터럽트하고, natAlert 를 통하여 그 개입의 성격을 나타낸다. 그러면 마이크로커널의 mN-TT 부는 바람직하게 업데이트 및 활성 태스크의 한도량 제어를 수행할 수 있고, 그 후 가능하다면, 도 3 의 블록 (33) 에 도시된 바와 같이, 준비상태에 있는 새로운 태스크를 확인하고 그 실행 컨텍스트를 로딩함으로써 컨텍스트 스위칭을 수행할 수 있다. 그 다음, 블록 (25) 에 도시된 바와 같이 mN-ET 마이크로커널에 의해 한도량 제어 종료 인터럽트가 프로세싱되면, 페이싱과 연관되는 다음 인터럽트가 무장된다 (블록 24). 도 2 및 그 이후의 도면에서, "RTI" 라는 약자는 "인터럽트로부터 복귀 (ReTurn from Interrupt)" 명령을 나타낸다.
도 3 의 블록 (30 및 31) 에 도시된 바와 같이, 본 실시예에서는, 한도량 제어 요청과 관련해서는, mN-ET 마이크로커널가 mN-TT 마이크로커널 측에서 하는 한도량 분석의 결과를 기다린다. 이 기다리는 과정은 블로킹성이 아니며 (non-blocking), 블록 (32) 에 도시된 바와 같이 mN-TT 마이크로커널이 주목을 위한 인터럽트를 트리거링하여 이 프로세싱 함수의 종료를 선언하기까지 mN-ET 마이크로커널은 자체의 프로세싱 함수들을 계속 수행한다. 그 후, 도 2 에서 블록 (24) 및 블록 (25) 에 도시된 바와 같이, 마이크로커널의 mN-ET 부는 다음 타이머 인터럽트를 재활성화시킬 수 있다. 이것이 한도량 제어를 위한 것이든 타이머에 의한 웨이크업 (준비상태, 대기상태, 또는 오류상태에 있는 태스크들의 리스트 내의 변화) 을 위한 것이든 간에, 마이크로커널의 mN-TT 부는 준비상태에 있는 새로운 태스크를 확인하고 그 실행 컨텍스트를 로딩한다 (블록 33).
도 4 에 도시된 바와 같이, mN-ET 마이크로커널은 바람직하게 입출력 인터럽트들의 관리자를 구현할 수 있다. 그러면 이는 입출력 인터럽트와 연관되는 루틴의 활성화를 담당할 수 있다. 이러한 루틴은 블록 (40) 에 도시된 바와 같이 인터럽트의 발생을 제어하기 위한 범용 초기부분 (generic initial part) 과, 블록 (41) 에 도시된 바와 같이 이러한 입출력에 연결된 것으로서 생성된 결과가 코어에 의해 코어 (A) 상의 태스크들에 대해 가용화되었다고 신호할 가능성을 포함하는 특정 어플리케이션 프로세싱 부분을 포함할 수 있다. 예를 들어, 이는 바람직하게 두 코어들 사이의 공유 메모리 영역에 위치할 수 있으며, 이들은 상호작용을 위한 일 셋트의 특정 인터럽트들도 공유할 수 있다. 인터럽트들의 발생을 제어하기 위한 전략은 대상이 되는 산업 분야와 사용될 모니터링 종류에 의존한다. 이 전략은, 예를 들어, 허가된 최다수의 입출력 인터럽트들 또는 두 입출력 인터럽트들 사이에 허가된 최소 혹은 최대 시간을 이용할 수 있다. 이러한 조건 중 하나가 지켜지지 않은 경우, 제어는 또한 연관되는 "장애" 관리 전략을 지정해야 한다. 이 전략 역시 다양한 종류일 수 있는데, 그 입출력에 대한 관리 모듈을 0 으로 초기화하는 것에서부터 그 작동을 일시적 또는 확정적으로 억제하는 것까지 다양할 수 있다. 생성된 데이터는 어플리케이션 프로세싱 함수 내에 커널에 의해 가용화되는데, mN-ET 부의 시스템 함수에 대한 호출에 의해 이루어진다. 이 함수의 목적은 결과를 타임-스탬핑하고, 이 어셈블리 (assembly) 에 대해, 코어 (A) 측 커널에게 가용상태에 있는 버퍼 내의 위치를 신호하는 인덱스를 연관시키는 것이다. 버퍼는 예상되는 입출력 인터럽트들에 따라, 그리고 연관된 어플리케이션 실시간 태스크에 의한 이 데이터의 사용에 따라 치수가 정하여진다. 커널에 의해 생성되는 결과의 타임-스탬핑은 타이머 인터럽트를 통한 현재 시간의 유지에 대하여 상대적으로 원자성 (atomic) 이어야 함에 유의해야 할 것이다.
도 5 에 도시된 바와 같이, 태스크로부터 야기되는 소프트웨어 인터럽트는 시스템 호출을, 예를 들어 노드를 위한 실행 그래프의 도달을 신호하도록 트리거링된다. 본 실시예에서, mN-TT 마이크로커널은 이어서 블록 (50) 에 도시된 바와 같이 실행 컨텍스트에 대해 수정을 가하여, 블록 (51) 에 도시된 바와 같이 호출하는 태스크의 시스템 레이어의 실행을 가능하게 할 수 있다. 프로세싱되는 동안, 시스템 레이어는 그 실행 그래프에 따라 태스크의 시간 제약들을 수정하도록 요구될 수 있다. 이 작업은 다음으로, 블록 (52) 에 도시된 바와 같이, 시스템 레이어가 소비된 한도량의 관리를 수행하도록 하며, 그 다음으로 필요한 경우, 블록 (53) 에 도시된 바와 같이, mN-TT 마이크로커널이 코어 (A) 상에서 태스크 스위칭을 수행하도록 할 수 있다. 함수가 통신 영역에 상태 변수를 설정하고 소스 입력과 연관된 인디케이터를 설정할 수 있으며, 이어서 실행되던 태스크의 컨텍스트에서 연산 코어의 차지 및 해제 시간 및 인수 (arguments) 를 전달할 수 있다. 그 후, 스위칭 모듈에 다음 준비상태에 있는 태스크를 활성화하라는 호출이 발해질 수 있다. 소비된 CPU 한도량은 태스크가 CPU 를 내주는 시간 혹은 상기 태스크가 CPU 로부터 제거되는 시간과 상기 태스크가 CPU 에 주어진 시간 사이의 차를 연산함으로써 평가된다. 이 연산은 mN-ET 마이크로커널에 의해 수행되는데, 마이크로커널의 mN-TT 부가 공급하는 정보를 기초로 수행된다. 실시의 경우, 상태변화로 이어지지 않아 활성가능 상태로 남아있는 태스크의 프리엠션 (preemption) 이 있는 경우, 태스크의 컨텍스트에 포함되어 있는 연관되는 소비 한도량 정보가 연산 코어에 의해 바람직하게 업데이트될 수 있다.
동기화되기 위해, 마이크로커널의 두 부분은, 예를 들어 이하 [표 1] 에 정의된 것과 같은, 데이터를 공유한다. 그러나 데이터 하나에 대해 단일의 작성자만이 존재한다.
데이터 | 작성자 | |
natAlert | mN-ET 마이크로커널 | 코어(A)에 대해 수신되는 인터럽트의 성격: 0 => 태스크 웨이크업; 1 => 한도량 제어. |
contexPret | mN-ET 마이크로커널 | 준비상태에 있는 태스크들의 리스트 |
contexDerout | mN-ET 마이크로커널 | 오류상태에 있는 태스크들의 리스트 |
contexRepos | mN-ET 마이크로커널 | 대기상태에 있는 태스크들의 리스트 |
heureCompt0 | mN-ET 마이크로커널 | 타이머의 현재 시간 값 (연관된 타이머의 카운터가 0으로 변하는 때) |
태스크 실행 컨텍스트의 구조는 일례로서 이하 [표 2] 에 정의된 것과 같은 항목들을 사용한다. 이러한 항목들의 내용은 단일의 작성자에 의해 업데이트되는데, 작성자는 mN-ET 마이크로커널 또는 mN-TT 마이크로커널일 수 있다. 본 실시예에서는 활성가능한 준비상태에 있는 태스크가 대기상태 또는 오류상태로 변화하는지 여부를 특히 나타내는 "상태" 변수를 mN-TT 마이크로커널이 바람직하게 업데이트함에 유의해야 할 것이다. 마이크로커널의 mN-ET 부만이 태스크들의 리스트가 업데이트될 때 이를 활성가능 상태로 복구시킬 수 있다.
항목 | 작성자 | 설명 |
suiv | mN-ET 마이크로커널 | 컨텍스트들의 리스트 관리용 |
ag | 정적 상수 데이터 | 태스크의 정적 서술자에 대한 포인터 |
datPret | mN-ET 마이크로커널 | 유효 활성화 시간 |
datFin | mN-ET 마이크로커널 | 유효 비활성화 시간 |
quota | mN-ET 마이크로커널 | 현재 어플리케이션 태스크에 대한 유효 한도량 |
datPretS | mN-TT 마이크로커널 | 새로운 최초 활성화 시간 |
datFinS | mN-TT 마이크로커널 | 새로운 최후 종료 시간 |
quotaS | mN-TT 마이크로커널 | 어플리케이션 태스크에 대한 한도량의 새로운 값 |
quotaM | mN-TT 마이크로커널 | 어플리케이션 태스크의 프로세싱 완료시 남아야 하는 한도량의 새로운 값 |
datOcc | mN-TT 마이크로커널 | CPU 사용 시작 시간 |
datLib | mN-TT 마이크로커널 | CPU 해제 시간 |
etat | mN-TT 마이크로커널 및 mN-ET 마이크로커널 | 태스크 상태: PRETREPOS: 태스크 대기, 실행 윈도우를 재배치; DATETARD: 제한 시간 지연; DEROUT: 태스크 오류; ACTIVABLE: 태스크 준비, 실행가능. |
본 실시예에서, contextPret 리스트는 읽기 모드에서 mN-TT 마이크로커널에 의해 액세스되고 mN-ET 마이크로커널에 의해 유지, 즉 읽기 및 쓰기 모드에서 액세스된다. 특히, mN-TT 마이크로커널은 다음의 경우에 contextPret 리스트를 읽는다:
·한도량을 제어하거나 웨이크업을 위해 코어 (O) 로부터 오는 인터럽트 후. 한도량 제어를 위해서는, contextPret 리스트의 선두 (head) 를 현재 실행중인 태스크와 비교하여 한도량을 초과하였는지 여부를 결정한다. 웨이크업을 위해서는, contextPret 리스트의 선두가 액세스되고 이를 실행될 새로운 태스크가 되게 한다;
·시간 제약들을 수정하기 위해, 시스템 레이어로부터 소프트웨어 인터럽트를 통한 시스템 입력시. 이 경우 실행이 지속되도록 현재 실행중인 태스크의 다음 포인터만이 읽어진다.
mN-ET 마이크로커널 측에서, 두 컨텍스트들 (B 및 D) 사이로의 컨텍스트 (C) 의 삽입은, 우선 C 의 후속으로 오는 것 (이는 D 와 동일할 것임) 을 수정하고, 이어서 B 의 후속으로 오는 것 (이는 C 와 동일할 것임) 을 수정함으로써 이루어진다.
본 실시예에서, 컨텍스트들의 추출은 더 이상 활성가능하지 않은 컨텍스트들을 고려함으로써 수행될 수 있다. 그러므로 제어는 첫 번째 활성가능 태스크에 contexPret 를 사용한다 (후자는 제외된다). 추출들은 코어 (A) 에게는 보이지 않는데, 컨텍스트가 더 이상 활성가능하지 않다면, 이는 코어 (A) 가 이를 이미 실행하였고, 따라서 코어 (A) 상에서 현재 실행중인 태스크가 첫 번째 활성가능 태스크 또는 그 후속 태스크임을 의미하기 때문이다. 그러므로 더 이상 그것으로 돌아가 지 않을 것이다.
DATETARD 상태의 관리에 대해서는, 이 동작의 목적이 실행 중의 컨텍스트의 제한 시간을 늦추는 것임에 유의해야 할 것이다. 이러한 제한 시간 연기가 이루어지면, mN-TT 마이크로커널은 이 컨텍스트의 다음으로 넘어간다. 한편, 이러한 연기에도 불구하고 제한 시간이 다음 것보다 먼저 있으면, natAlert 가 0 으로 설정되고 코어 (O) 로부터 야기되는 다음 인터럽트가 있을 때까지 태스크는 다시 실행가능하게 되지 않을 것이다.
전술한 바와 같이 입출력 인터럽트들을 관리하기 위한 어플리케이션 루틴들의 결과가 코어 (O) 에 가용으로 있도록 하기 위해, 연산 태스크의 시스템 레이어에 대해 버퍼가 읽기 모드에서 가용화된다. 이 표에서의 인덱스는 코어 (A) 상의 시스템 레이어가 태스크에 의해 리턴된 또는 리턴되지 않은 입출력 결과들을 유지 및 식별할 수 있게 한다.
도 6 은 본 발명에 따른 두 개의 병렬 코어들이 작동하는 경우를 예시적으로 나타내는데, 약자 CS 는 "시스템 레이어"를 의미하고, agMN 은 "어플리케이션 태스크 모드 (에이전트 - ag) 에서 마이크로커널 (MN) 로의 변화"를 의미하며, csMN 은 "시스템 태스크 모드 (시스템 레이어 - cs) 에서 마이크로커널 (MN) 로의 변화"를 의미한다.
시점 t0 에서:
·태스크들 (AG1 및 AG2) 는 준비상태에 있는 태스크들의 리스트 내에 있고;
·태스크 (AG1) 가 현재 실행 중이고 그 한도량은 시점 t1 이후까지 넘어서고;
·다음의 최종 인터럽트는, 시점 t1 에 대해, 태스크 (AG3) 에 대한 타이머에 의한 웨이크업 시간이며;
·태스크 (AG3) 는 대기상태에 있는 태스크들의 리스트 내에 있다.
시점 t0 및 시점 t1 사이에서:
·O 상에 세 개의 중간 인터럽트들이 있고;
·태스크 (AG1) 는 그 한도량을 도달하기 전에 기본 활동을 완료한다. mN-TT 마이크로커널은 태스크 (AG1) 를 위한 한도량으로써 태스크 (AG2) 를 스위칭하고 실행한다.
시점 t1 에서:
·타이머에 의한 인터럽트가 도달하여 태스크 (AG3) 를 웨이크업하고;
·mN-ET 마이크로커널이 태스크 (AG1) 를 대기상태에 있는 태스크들의 리스트 내에 배치하고, 시점 (t2) 에 상응하는, 태스크 (AG3) 를 위한 한도량으로 타이머를 무장하고, natAlert 를 0 으로 설정하고 mN-TT 마이크로커널로의 인터럽트를 통해 고려될 태스크들의 새로운 리스트를 통보한다. mN-TT 마이크로커널은 이어서 태스크 (AG2) 에 관한 한도량 제어를 수행하고 이어서 태스크 (AG3) 로 제어권을 이전한다.
시점 t1 및 시점 t2 사이에서:
·O 상에 하나의 중간 인터럽트가 있고;
·태스크 (AG3) 는 그 한도량을 도달하기 전에 기본 활동을 완료한다. mN-TT 마이크로커널은 스위칭하고 이어서 태스크 (AG3) 를 위한 한도량으로써 태스크 (AG2) 의 실행을 계속한다.
시점 t2 에서:
·태스크 (AG3) 에 대한 한도량 제어를 위해 타이머에 의한 인터럽트가 도달하고;
·mN-ET 마이크로커널이 natAlert 를 0 으로 설정하고 mN-TT 마이크로커널로의 인터럽트를 통해 수행될 한도량 제어들을 통보하고;
·mN-ET 마이크로커널로부터 인터럽트를 수신하면 코어 (A) 는 마이크로커널 모드로 변경하고, 한도량 제어를 위해 현재 실행중인 태스크의 컨텍스트의 내용을 수정하고 (태스크 (AG3) 는 그 활동을 종료하였음), mN-ET 마이크로커널로 인터럽트를 전송하여 업데이트들을 통보하고는 준비상태에 있고 활성가능한 유일한 태스크, 즉 태스크 (AG2) 로 제어권을 복귀시키며;
·mN-ET 마이크로커널은 태스크 (AG3) 를 대기상태에 있는 태스크들의 리스트 내에 배치하고 타이머를 무장하여 시점 (t3) 에서 (AG2 에게 남아있는 한도량의 끝보다 더 가까운) 태스크 (AG3) 를 웨이크업한다.
시점 t3 에서:
·타이머 인터럽트가 도달하여 태스크 (AG3) 를 웨이크업하고;
·mN-ET 마이크로커널이 태스크 (AG3) 를 준비상태에 있는 태스크들의 리스트 내에 배치하고 (태스크 (AG2) 다음에), 시점 (t4) 에 상응하는, 태스크 (AG2) 에 허용된 잔여 한도량으로 타이머를 무장하고, natAlert 를 0 으로 설정하고 mN-TT 마이크로커널로 인터럽트를 전송하여 고려될 태스크들의 새로운 리스트를 통보한다. mN-TT 마이크로커널은 이어서 태스크 (AG2) 에 관한 한도량 제어를 수행하고 이어서 태스크 (AG3) 로 제어권을 이전한다.
시점 t3 및 시점 t4 사이에서:
·O 상에 하나의 중간 인터럽트가 있다.
시점 t4 에서:
·태스크 (AG2) 에 대한 한도량 제어를 위해 타이머 인터럽트가 도달하고;
·mN-ET 마이크로커널은 natAlert 를 1 로 설정하고, mN-TT 마이크로커널로 인터럽트를 전송하여 수행될 한도량 제어들을 통보하고;
·코어 (O) 로부터 인터럽트를 수신하면 코어 (A) 는 마이크로커널 모드로 변경하고, 현재 실행중인 태스크의 컨텍스트의 내용을 수정하고 (태스크 (AG2) 는 그 한도량을 초과하였음), mN-ET 마이크로커널로 인터럽트를 전송하여 업데이트들을 통보하고 이어서 준비상태에 있고 활성가능한 유일한 태스크, 즉 태스크 (AG3) 로 제어권을 이전하며;
·mN-ET 마이크로커널은 태스크 (AG2) 를 오류상태에 있는 태스크들의 리스트 내에 배치하고 타이머를 무장하여 시점 (t5) 에서 (AG3 에게 남아있는 한도량의 끝보다 더 가까운) 태스크 (AG1) 를 웨이크업한다.
시점 t4 및 시점 t5 사이에서:
·태스크 (AG3) 는 그 한도량을 도달하기 전에 기본 활동을 완료한다. 코어 (A) 의 마이크로커널은 대기모드로 변경한다.
시점 t5 에서:
·타이머 인터럽트가 도달하여 태스크 (AG1) 를 웨이크업하고;
·mN-ET 마이크로커널이 태스크 (AG3) 를 대기상태에 있는 태스크들의 리스트 내에 배치하고 태스크 (AG1) 를 준비상태에 있는 태스크들의 리스트 내에 배치하며, 태스크 (AG1) 를 위한 한도량으로 타이머를 무장하고, natAlert 를 0 으로 설정하고 mN-TT 마이크로커널로 인터럽트를 전송하여 고려될 태스크들의 새로운 리스트를 통보한다.
제어를 전담하는 코어에게 커널 함수들의 서브셋트 (subset) 로서 태스크 스케줄링, 타임 관리 및 인터럽트-조건 입출력들의 관리를 전달함으로써, 전술한 본 발명은 멀티코어 하드웨어 아키텍처의 효과적인 병렬성을 최대한 활용하고 가장 잘 이용할 수 있게 한다. 본 발명에서 제안된 바와 같이 마이크로커널의 함수들을 MN-TT 및 MN-ET 의 두 부분으로 비대칭 배분하는 것은 또한 타임-페이스드 연산 태스크들의 실시간 실행과 입출력 인터럽트들에 의해 조건 지어지는 루틴들의 실행의 보안화를 가능하게 한다. 실시의 경우, 본 발명에서 제안되는 마이크로커널의 함수들의 비대칭 배분은 코어 (O) 상에서 실행되는 ET 아일랜드와 코어 (A) 상에서 실행되는 TT 아일랜드 혹은 아일랜드들 사이에 공간적, 시간적 분리를 보장한다. 따라서, 인터럽트-조건 프로세싱 함수들의 관리는, 특히 입출력 프로세싱 함수들의 경우, 코어 (A) 에 배당되지 않고, 어떤 상황에서도 연산 태스크들에 의해 달성될 수 있는 성능 수준들을 저해하지 않으며, 그 역도 마찬가지다. 메모리의 관점에서 보면, 메모리 배치, 그리고 가능한 경우 메모리 보호는 코어 (O) 가 연산 태스크들의 메모리 영역들을 액세스하는 것을 방지한다. 코어 (O) 상의 입출력 인터럽트들의 발생과 관련된 제어들 및 연산 코어 혹은 코어들 상의 효과적인 실행 시간들과 관련된 제어들은 인터럽트들의 모니터링과 시간 관련 이상 행태 (behavior anomalies) 의 검출을 가능하게 한다.
전술한 본 발명의 다른 주요 장점으로는, 예를 들면 자동차 분야에서의 어플리케이션을 위한, 온전한 임베디드 실시간 시스템을 효율적으로, 제어된 방법으로, 보안적으로 실행할 수 있게 한다는 점이다. 실시의 경우, 본 발명은 임베디드 하드웨어 아키텍처들을 가장 잘 이용할 수 있게 하여, 프로세서 당 태스크들 혹은 기능들의 수 측면에서 매우 높은 통합 정도를 가능하게 한다. 연관된 멀티태스킹 실행 방법이 코어들의 정합을 포함하므로, 본 발명은 또한 입출력 인터럽트들에 의해 조건 지어지는 일 셋트의 태스크들 및 루틴들을 포함하는 어플리케이션을 개발자에게 투명한 방식으로 멀티코어 아키텍처들 상에서 실행하는 것을 가능하게 한다. 커널 내에서 코어들에서의 비대칭 파티셔닝을 관리하도록 정의된 공유 요소들과 인터페이스들에 의해, 개발자는 더 이상 태스크들 또는 루틴들의 위치에 유념할 필요가 없다.
Claims (11)
- 태스크들을 병렬로 실행하는 복수의 프로세싱 코어들을 포함하는 정보 프로세싱 시스템으로서, 상기 프로세싱 코어들은 태스크들의 셋트를 포함하는 어플리케이션을 실행하도록 구성된 두 개의 프로세싱 코어들;
하드웨어 자원들과 직접적으로 연결된 시스템 함수들을 실행하도록 구성된 마이크로-커널로서, 상기 마이크로-커널은, 연산부 및 제어부를 포함하되,
상기 마이크로-커널의 상기 연산부는 상기 두 개의 프로세싱 코어들의 제 1 코어 상에 호스트되고, 상기 제 1 코어 상의 태스크들의 실행 컨텍스트의 스위칭을 관리하는 시스템 함수들을 실행하도록 구성되고, 상기 시스템 함수들은 각 태스크에 관하여 상기 태스크가 실행가능한지 여부를 나타내는 상태의 업데이트를 포함하고, 상기 상태는 상기 태스크와 연관된 상기 실행 컨텍스트에 포함되고, 상기 실행 컨텍스트는 상기 태스크에 관한 실행 데이터를 모으며, 상기 상태는:
·상기 태스크가 준비상태에 있음을 나타내는 값;
·상기 태스크가 대기상태에 있음을 나타내는 값;
·상기 태스크가 오류상태에 있음을 나타내는 값;
사이를 스위칭하고,
상기 마이크로-커널의 상기 제어부는 상기 두 개의 프로세싱 코어들의 제 2 코어 상에 호스트되고, 입출력 인터럽트들에 의해 트리거링된 태스크들을 실행하도록 구성되고, 상기 제 1 코어 상의 태스크 할당 순서의 제어에 관한 시스템 함수들을 실행하며, 상기 시스템 함수들은 태스크들의 리스트들의 다음 셋트:
·준비상태에 있는 태스크들의 순서화된 리스트;
·대기상태에 있는 태스크들의 순서화된 리스트;
·오류상태에 있는 태스크들의 리스트;
중 적어도 하나의 관리를 포함하고,
상기 마이크로-커널의 상기 연산부 및 상기 제어부는 태스크들의 상기 리스트들의 상기 셋트를 공유하고, 상기 리스트들 내에서 상기 순서는 상기 제어부에 의해 유지되고 상기 리스트들의 각 엘리먼트의 컨텐츠는 상기 연산부에 의해 유지되고, 상기 제 2 코어는 각 태스크가 각 태스크의 실행 제한시간 및 각 태스크의 실행 시간 한도량에 따라 실행되도록 상기 준비상태에 있는 태스크들의 순서화된 리스트에서 상기 태스크들의 순서를 정하는 것을 특징으로 하는, 정보 프로세싱 시스템. - 제 1 항에 있어서,
상기 마이크로-커널의 상기 연산부에 의해 실행되는 상기 시스템 함수들은, 상기 제 1 코어에 의한 인터럽트의 수신시:
- 상기 준비상태에 있는 태스크들로부터의 제 1 태스크의 실행 컨텍스트의 로딩;
- 상기 제 1 태스크의 실행의 트리거링
을 포함하는, 정보 프로세싱 시스템. - 제 2 항에 있어서,
인터럽트의 수신시, 상기 마이크로-커널의 상기 연산부는 제 1 태스크의 실행 컨텍스트를 상기 준비상태에 있는 태스크들의 상기 순서화된 리스트로 로딩시키는, 정보 프로세싱 시스템. - 제 2 항에 있어서,
상기 인터럽트는 상기 마이크로-커널의 상기 제어부에 의해 구현되는 타이머에 의해 생성되는, 정보 프로세싱 시스템. - 제 4 항에 있어서,
상기 타이머는 상기 마이크로-커널의 상기 연산부에 의한 실시간 어플리케이션 태스크들의 실행을 트리거링하도록 구성되는 수정 결정 클럭에 의해 페이스 (pace) 되는, 정보 프로세싱 시스템. - 제 1 항에 있어서,
상기 코어들 각각은 코어들 각각에 특유한 태스크들 간의 통신에 관한 시스템 함수들을 실행하는 것을 특징으로 하는, 정보 프로세싱 시스템. - 제 1 항에 있어서,
상기 두 개의 코어들의 상호작용이 가능하도록 상기 두 개의 코어들에 의해 공유되는 일 셋트의 인터럽트들 및 메모리 공간을 더 포함하는, 정보 프로세싱 시스템. - 제 1 항에 있어서,
상기 두 개의 코어들은 상이한 종류의 프로세서들인, 정보 프로세싱 시스템. - 제 8 항에 있어서,
상기 프로세서들은 단일 칩 상에 구현되는, 정보 프로세싱 시스템. - 제 1 항에 있어서,
상기 실행 제한 시간은 태스크의 실행이 시작되고 끝나는 사이의 시간 범위를 포함하고, 상기 실행 시간 할당량은 각 태스크의 상기 실행을 위해 예약된 실행 시간의 한계를 특정하는, 정보 프로세싱 시스템. - 제 1 항에 있어서,
상기 연산부 및 상기 제어부 중 하나의 부에 의해 상기 태스크들의 상기 공유된 리스트가 수정되도록 시스템 함수의 완료에 응답하여, 상기 연산부 및 상기 제어부 중 하나의 부는 상기 시스템 함수의 완료를 다른 부에 통지하도록 구성되게 수정하고, 상기 연산부 및 상기 제어부 중 하나의 부는 상기 통지와 병렬로 잔여 시스템 또는 어플리케이션 태스크들의 상기 하나의 부의 실행을 계속하도록 더 구성되게 수정하는, 정보 프로세싱 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0805770A FR2937439B1 (fr) | 2008-10-17 | 2008-10-17 | Procede d'execution deterministe et de synchronisation d'un systeme de traitement de l'information comportant plusieurs coeurs de traitement executant des taches systemes. |
FR0805770 | 2008-10-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110071018A KR20110071018A (ko) | 2011-06-27 |
KR101629989B1 true KR101629989B1 (ko) | 2016-06-21 |
Family
ID=40433856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117011164A KR101629989B1 (ko) | 2008-10-17 | 2009-10-16 | 시스템 태스크를 실행하는 복수의 프로세싱 코어를 포함하는 정보 프로세싱 시스템의 결정적 실행 및 동기화 방법 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9128752B2 (ko) |
EP (1) | EP2338109B1 (ko) |
JP (1) | JP5688591B2 (ko) |
KR (1) | KR101629989B1 (ko) |
CN (1) | CN102216902A (ko) |
CA (1) | CA2740978C (ko) |
FR (1) | FR2937439B1 (ko) |
WO (1) | WO2010043706A2 (ko) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101610828B1 (ko) * | 2009-09-23 | 2016-04-08 | 삼성전자주식회사 | 멀티코어 프로세서의 인터럽트 온/오프 관리 장치와 방법 |
WO2011118012A1 (ja) * | 2010-03-25 | 2011-09-29 | 富士通株式会社 | マルチコアプロセッサシステム、制御プログラム、および制御方法 |
JP5354102B2 (ja) * | 2010-06-29 | 2013-11-27 | 富士通株式会社 | マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム |
US8762794B2 (en) * | 2010-11-18 | 2014-06-24 | Nec Laboratories America, Inc. | Cross-layer system architecture design |
KR101880452B1 (ko) | 2012-02-06 | 2018-08-17 | 삼성전자주식회사 | 커널 수행 순서 스케줄링 방법 및 장치 |
US20130227238A1 (en) * | 2012-02-28 | 2013-08-29 | Thomas VIJVERBERG | Device and method for a time and space partitioned based operating system on a multi-core processor |
EP2833264B1 (en) * | 2012-03-29 | 2020-06-24 | Hitachi, Ltd. | Virtual computer schedule method |
FR2993070B1 (fr) * | 2012-07-09 | 2014-07-18 | Commissariat Energie Atomique | Procede d'execution, au sein d'un systeme embarque multitaches, d'une application cadencee par plusieurs domaines de temps differents incluant une gestion d'interruptions |
US9063796B2 (en) * | 2012-08-02 | 2015-06-23 | GM Global Technology Operations LLC | Method and apparatus for improving processing performance of a multi-core processor |
CN103870327A (zh) * | 2012-12-18 | 2014-06-18 | 华为技术有限公司 | 一种实时多任务调度方法和装置 |
US9304945B2 (en) * | 2013-01-24 | 2016-04-05 | Raytheon Company | Synchronizing parallel applications in an asymmetric multi-processing system |
CN103914346A (zh) * | 2013-12-16 | 2014-07-09 | 西北工业大学 | 一种基于分组的实时操作系统双优先级任务调度节能方法 |
CN103744342B (zh) * | 2014-01-22 | 2016-09-14 | 大连理工计算机控制工程有限公司 | 一种基于双核处理器的pac实时控制系统 |
JP6540166B2 (ja) * | 2015-03-31 | 2019-07-10 | オムロン株式会社 | 制御装置 |
US9720836B2 (en) | 2015-05-11 | 2017-08-01 | International Business Machines Corporation | Preemptible-RCU CPU hotplugging while maintaining real-time response |
CN105718320B (zh) * | 2016-01-18 | 2020-11-06 | 华为技术有限公司 | 一种时钟任务处理方法、装置及设备 |
CN106911592B (zh) * | 2016-06-01 | 2020-06-12 | 创新先进技术有限公司 | 一种自适应资源分配方法及装置 |
CN107463856B (zh) * | 2017-08-01 | 2020-06-16 | 杭州中天微系统有限公司 | 一种基于可信内核的防攻击数据处理器 |
JP7253871B2 (ja) | 2017-11-28 | 2023-04-07 | サントリーホールディングス株式会社 | 自動販売機及び自動販売機からコイン状の物体を供給する方法 |
CN110837415B (zh) * | 2018-08-17 | 2024-04-26 | 嘉楠明芯(北京)科技有限公司 | 一种基于risc-v多核处理器的线程调度方法和装置 |
CN109002659B (zh) * | 2018-09-07 | 2020-08-28 | 西安交通大学 | 一种基于超级计算机的流体机械仿真程序优化方法 |
CN111897635B (zh) * | 2020-07-10 | 2022-11-22 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种基于时间触发的硬实时和软实时的任务调度方法 |
CN117806789B (zh) * | 2023-11-01 | 2024-10-11 | 宁德时代(上海)智能科技有限公司 | 多核操作系统的任务处理方法、装置及计算设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481707A (en) | 1991-05-19 | 1996-01-02 | Unisys Corporation | Dedicated processor for task I/O and memory management |
WO2007051935A1 (fr) | 2005-11-04 | 2007-05-10 | Commissariat A L'energie Atomique | Procede et systeme de calcul intensif multitache et multiflot en temps reel |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2104580T3 (es) * | 1989-02-24 | 1997-10-16 | At & T Corp | Planificacion adaptativa de tareas para sistemas multiproceso. |
FR2816730B1 (fr) * | 2000-11-13 | 2004-10-15 | Commissariat Energie Atomique | Procede de securisation rendant deterministe l'execution en temps reel d'applications multitaches du type controle- commande avec confinement d'erreur |
US8225320B2 (en) * | 2006-08-31 | 2012-07-17 | Advanced Simulation Technology, Inc. | Processing data using continuous processing task and binary routine |
JP2008090546A (ja) | 2006-09-29 | 2008-04-17 | Toshiba Corp | マルチプロセッサシステム |
US8789063B2 (en) * | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
US8397235B2 (en) * | 2008-10-07 | 2013-03-12 | Futurewei Technologies, Inc. | User tolerance based scheduling method for aperiodic real-time tasks |
-
2008
- 2008-10-17 FR FR0805770A patent/FR2937439B1/fr not_active Expired - Fee Related
-
2009
- 2009-10-16 EP EP09743885.7A patent/EP2338109B1/fr active Active
- 2009-10-16 WO PCT/EP2009/063577 patent/WO2010043706A2/fr active Application Filing
- 2009-10-16 KR KR1020117011164A patent/KR101629989B1/ko active IP Right Grant
- 2009-10-16 JP JP2011531504A patent/JP5688591B2/ja active Active
- 2009-10-16 CN CN200980145920XA patent/CN102216902A/zh active Pending
- 2009-10-16 CA CA2740978A patent/CA2740978C/en active Active
- 2009-10-16 US US13/124,494 patent/US9128752B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481707A (en) | 1991-05-19 | 1996-01-02 | Unisys Corporation | Dedicated processor for task I/O and memory management |
WO2007051935A1 (fr) | 2005-11-04 | 2007-05-10 | Commissariat A L'energie Atomique | Procede et systeme de calcul intensif multitache et multiflot en temps reel |
Non-Patent Citations (1)
Title |
---|
MINYEOL SEO 외 4명. 'An Effective Design of Master-Slave Operating System Architecture for Multiprocessor Embedded Systems'. ACSAC 2007, Springer-Verlag Berlin Heidelberg 2007, LNCS 4697, pp.114-125* |
Also Published As
Publication number | Publication date |
---|---|
US20110302589A1 (en) | 2011-12-08 |
KR20110071018A (ko) | 2011-06-27 |
FR2937439B1 (fr) | 2012-04-20 |
WO2010043706A3 (fr) | 2011-03-24 |
CA2740978C (en) | 2017-12-05 |
WO2010043706A2 (fr) | 2010-04-22 |
FR2937439A1 (fr) | 2010-04-23 |
EP2338109A2 (fr) | 2011-06-29 |
JP5688591B2 (ja) | 2015-03-25 |
CN102216902A (zh) | 2011-10-12 |
JP2012506082A (ja) | 2012-03-08 |
CA2740978A1 (en) | 2010-04-22 |
US9128752B2 (en) | 2015-09-08 |
EP2338109B1 (fr) | 2018-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101629989B1 (ko) | 시스템 태스크를 실행하는 복수의 프로세싱 코어를 포함하는 정보 프로세싱 시스템의 결정적 실행 및 동기화 방법 | |
US10241831B2 (en) | Dynamic co-scheduling of hardware contexts for parallel runtime systems on shared machines | |
US9753729B2 (en) | System for selecting a task to be executed according to an output from a task control circuit | |
US8276145B2 (en) | Protected mode scheduling of operations | |
Harris et al. | Callisto: Co-scheduling parallel runtime systems | |
Alhammad et al. | Memory efficient global scheduling of real-time tasks | |
JP2829078B2 (ja) | プロセス分散方法 | |
EP0491342B1 (en) | Multiprocessing system and method of controlling the carrying out of tasks in a multiprocessing system | |
US8776079B2 (en) | Task processor | |
US8327379B2 (en) | Method for switching a selected task to be executed according with an output from task selecting circuit | |
CN101542412A (zh) | 用于多线程处理器中自动低功率模式调用的装置和方法 | |
CN111459622B (zh) | 调度虚拟cpu的方法、装置、计算机设备和存储介质 | |
Bi et al. | Research of key technologies for embedded Linux based on ARM | |
GB2580135A (en) | Handling exceptions in a multi-tile processing arrangement | |
Molnos et al. | Decoupled inter-and intra-application scheduling for composable and robust embedded MPSoC platforms | |
Vaas et al. | Taming Non-Deterministic Low-Level I/O: Predictable Multi-Core Real-Time Systems by SoC Co-Design | |
Betti et al. | Hard real-time performances in multiprocessor-embedded systems using asmp-linux | |
Burgio et al. | Real-time heterogeneous platforms | |
Schade et al. | Using Trace Data for Run-Time Optimization of Parallel Execution in Real-Time Multi-Core Systems | |
Chouteau et al. | Design and implementation of a Ravenscar extension for multiprocessors | |
Chaudhry et al. | A case for the multithreaded processor architecture | |
Edmaier et al. | Segment-Level FP-Scheduling in FreeRTOS | |
CN115858132A (zh) | 线程调度方法、装置、芯片、电子设备及存储介质 | |
Cohen et al. | Exploitation of multithreading to improve program performance | |
Pontremoli et al. | Hardware support for distributed real-time operating systems |
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 |