KR100728899B1 - 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서 - Google Patents

복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서 Download PDF

Info

Publication number
KR100728899B1
KR100728899B1 KR1020050101841A KR20050101841A KR100728899B1 KR 100728899 B1 KR100728899 B1 KR 100728899B1 KR 1020050101841 A KR1020050101841 A KR 1020050101841A KR 20050101841 A KR20050101841 A KR 20050101841A KR 100728899 B1 KR100728899 B1 KR 100728899B1
Authority
KR
South Korea
Prior art keywords
register
task
register set
scheduling
processor
Prior art date
Application number
KR1020050101841A
Other languages
English (en)
Other versions
KR20070045495A (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 한국과학기술원
Priority to KR1020050101841A priority Critical patent/KR100728899B1/ko
Publication of KR20070045495A publication Critical patent/KR20070045495A/ko
Application granted granted Critical
Publication of KR100728899B1 publication Critical patent/KR100728899B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 작업전환 시 발생하는 오버헤드를 줄이기 위하여 복수의 레지스터 집합과 하드웨어로 구현한 작업 관리자를 갖는 고성능 멀티쓰레드 임베디드 프로세서에 관한 것으로서, 특히 임베디드 프로세서에서 멀티태스킹시에 발생하는 오버헤드를 줄이고 실시간 시스템에서 지연 시간을 줄일 수 있는 기술에 관한 것이다.
본 발명에 의하면, 통상의 프로그램 수행, 인터럽트 처리, 운영체제의 스케쥴링 작업용도로서 정해진 복수의 레지스터 집합을 구비하는 멀티쓰레드 프로세서; 및 상기 멀티쓰레드 프로세서와 보조 연산장치 형태로 연결되며, 레지스터 집합의 작업(task)을 관리하고 스케쥴링하는 하드웨어 작업 관리자를 포함하는 고성능 멀티쓰레드 임베디드 프로세서를 제시한다.
멀티쓰레드, 임베디드, 프로세서, 레지스터 집합, 스케쥴링

Description

복수의 레지스터 집합과 하드웨어 작업 관리자를 가진 고성능 멀티쓰레드 임베디드 프로세서{High Performance Embedded Processor with Multiple Register Sets and Hardware Context Manager}
도 1은 본 발명에 따른 고성능 멀티쓰레드 임베디드 프로세서의 실시 예를 나타낸 도면이다.
도 2는 본 발명에 따른 고성능 멀티쓰레드 임베디드 프로세서에서 사용하는 레지스터 집합 중 일반적인 용도로 사용되는 범용 레지스터의 실시 예를 나타낸 도면이다.
도 3은 본 발명에 따른 하드웨어 작업 관리자의 실시 예를 나타낸 도면이다.
도 4는 본 발명에 따른 작업 상태 관리자의 실시 예를 나타낸 도면이다.
도 5는 본 발명에 따른 여러 레지스터 집합의 사용 시 한 레지스터 집합에서 다른 레지스터 집합으로 변경하는 경우를 구분한 테이블을 나타낸 도면이다.
도 6은 기존의 일반적인 복수 레지스터 집합을 사용하는 경우 작업의 전환이 일어나는 과정을 도시한 흐름도이다.
도 7은 본 발명에 따른 스케쥴링 레지스터 집합을 사용하는 경우 작업의 전환이 일어나는 과정을 도시한 흐름도이다.
< 도면의 주요 부분에 대한 부호의 설명 >
1: 멀티쓰레드 프로세서 2: 유저모드
3: 관리자모드 4: 레지스터 집합 0
5: 레지스터 집합 1 6: 레지스터 집합 2
7: 레지스터 집합 3 8: HPC 신호 버스
9: 작업 관리자 10: 상태 신호 버스
11: 인터럽트 요청 신호 버스 12: 승인 신호 버스
13: 인터럽트 제어기 14: 인터럽트 모드
15: 스케쥴링 작업을 위한 독립적인 레지스터
16: 범용 레지스터로 일반 목적용 레지스터 집합 0
17: 범용 레지스터로 일반 목적용 레지스터 집합 1
18: 범용 레지스터로 일반 목적용 레지스터 집합 2
19: 범용 레지스터로 인터럽트 레지스터 집합
20: 범용 레지스터로 스케쥴링 레지스터 집합
21: 준비 목록 22: 태스크 제어 블록
23: 이벤트 제어 블록 24: 이벤트 큐
25: 카운터 26: 이벤트 넘버 레지스터
27: 작업 상태 관리자 28: 태스크 스케쥴러
29: 작업 관리자 집합 30: 작업 전환 판단 로직
31: 외부 이벤트 판단 로직 32: 프로세서 레지스터 집합
33: 레지스터 집합 A 34: 레지스터 집합 B
35: 현재 사용하는 레지스터 집합 36: 작업 1의 테이블
37: 시스템 메모리 38: 작업 2의 테이블
39: 프로세서 레지스터 집합 40: 레지스터 집합 A
41: 스케쥴링 레지스터 집합 42: 레지스터 집합 B
43: 현재 사용하는 레지스터 집합
본 발명은 작업전환 시 발생하는 오버헤드를 줄이기 위하여 복수의 레지스터 집합과 하드웨어로 구현한 작업 관리자를 갖는 고성능 멀티쓰레드 임베디드 프로세서에 관한 것이다. 보다 상세하게는 임베디드 프로세서에서 멀티태스킹시에 발생하는 오버헤드를 줄이고 실시간 시스템에서 지연 시간을 줄일 수 있는 기술에 관한 것이다.
현재 멀티미디어, 이동통신 분야, 네트워크를 비롯한 다양한 분야에서 임베디드 프로세서가 사용되고 있다. 대부분의 경우 임베디드 프로세서는 동시에 다양한 작업을 수행하게 된다. 따라서 프로세서를 설계할 때 멀티태스킹(Multitasking)이 반드시 고려되어야 한다. 그동안 멀티태스킹은 운영체제(Operating System)에만 의존하고 있었다. 운영체제에만 의존해서 멀티태스킹을 구현할 경우 작업전환(context switch)을 하기 위해서 프로세서의 레지스터 값들을 메모리에 저장하고 불러오는 등의 많은 부가적인 작업들이 필요하게 된다.
이러한 부가작업을 수행하기 위해 보통 수백 사이클이 필요하기 때문에 실시간 시스템에서 내부 또는 외부의 요청으로 새로운 작업 수행이 필요할 때 수백 nsec 정도의 지연시간이 발생하게 된다. 실시간 시스템에서는 이러한 지연시간이 중요한 요소가 되기 때문에 기존의 임베디드 프로세서를 이용한 실시간 시스템에서는 빠른 반응시간을 얻기 위해서 높은 클럭 주파수를 사용하게 된다.
한편, 멀티태스킹을 지원하기 위한 오버헤드는 크게 두 가지로 나눌 수 있다. 첫 번째 오버헤드는 작업전환 시 발생하는 것으로, 이 작업전환을 하기 위해서는 현재 프로세서의 모든 레지스터 값을 메모리에 저장하고 앞으로 실행할 작업의 정보를 메모리에서 불러와 프로세서의 레지스터 값에 기록하는 과정이 필요하다. 이 과정에서 메모리 접근을 많이 수행하기 때문에 시간이 지연되고 프로세싱 능력이 낭비되는 문제점이 발생한다.
두 번째 오버헤드는 스케쥴링에서 발생하는 것이다. 스케쥴러는 준비 목록을 검색해서 준비 상태로 기다리고 있는 작업들 중에서 다음에 수행할 작업을 고르는 기능을 담당한다. 이를 위해서 스케쥴러는 작업 목록을 보고 바로 실행해 주어야 하는 작업을 선택해야 하며, 선택된 작업을 준비목록에서 제거하고, 작업 목록에 남아서 계속 대기하고 있는 다른 작업들의 실행 우선순위 값을 갱신해 주어야 한다. 이러한 일은 주기적으로 발생하며 준비 목록에 있는 작업의 수가 증가할수록 작업에 소요되는 시간이 많아지게 된다.
이와 관련된 종래의 기술로서 도 6이 제시되어 있다. 도 6은 일반적인 복수의 레지스터 집합을 사용하는 경우의 작업 전환이 일어나는 과정을 나타낸 것이다. 우선 프로세서가 현재까지 레지스터 집합 A(33)를 사용하였고 레지스터 집합 B(34)에 스케쥴링 작업이 할당되어 있었다고 가정하면, 먼저 레지스터 집합 A(33)에서 실행되고 있던 프로세싱 정보를 메모리(37)의 작업테이블에 저장한다. 이 과정이 끝난 후, 레지스터 집합 B(34)를 이용해서 스케쥴링 작업을 수행하게 된다. 스케쥴링 작업을 통해서 다음에 실행해야 할 작업을 선택하고, 선택된 작업을 실행하기 위해서 필요한 프로세싱 정보를 메모리에 저장되어 있는 작업테이블로부터 불러와서 사용하지 않고 있는 레지스터 집합 A(33)에 저장하게 된다. 이 과정이 모두 끝난 후에 프로세서는 레지스터 집합 A(33)를 사용해서 선택된 작업을 실행하게 된다. 이 과정에서 메모리를 여러 번 접근하게 되는데, 이때 수백 사이클이 소요되게 된다. 따라서 기존의 구조에서는 실시간 시스템에서 내부 또는 외부의 요청으로 새로운 작업수행이 필요할 때, 수백 nsec의 지연시간이 발생하게 된다.
반면에 스케쥴링 레지스터 집합을 사용하는 본 발명의 구조를 통해서 작업 전환을 수행할 경우 프로세서 레지스터의 상태 저장과 복구하는 과정이 한 사이클에 이루어질 수 있다. 본 발명에서 제안하는 스케쥴링 레지스터 구조와 하드웨어로 구현된 작업 관리자를 사용한 작업 전환 방식을 사용할 경우 기존에는 수백 nsec 정도 걸리던 스케쥴러에 의한 지연시간을 수 nsec 정도로 줄일 수 있기 때문에 실시간 시스템에서 빠른 반응속도를 가질 수 있게 된다.
이러한 특징은 저전력의 효과 또한 얻을 수 있다. 즉, 기존의 임베디드 프로세서를 이용한 실시간 시스템의 경우 빠른 반응시간을 얻기 위하여 높은 클록주파수를 사용하여야 하며 결과적으로 전력소비가 많지만, 본 발명에서 제안할 구조를 적용한 경우 상대적으로 낮은 클록주파수에서 빠른 반응 시간을 얻을 수 있으므로 전력 소비를 줄일 수 있게 된다. 이러한 장점을 갖기 위해서는 추가적인 하드웨어와 면적을 필요로 한다. 멀티쓰레드 구조를 구현하기 위해선 먼저 여러 개의 레지스터파일과 프로그램 카운터 등을 갖고 있어야한다. 또한 작업을 스케쥴링 하기 위해 메모리를 자주 사용하는 오버헤드를 감소시키기 위해 작업 관리를 하드웨어가 할 수 있도록 구현하여 실시간 운영체제에서 작업 대상을 변환할 때에 걸리던 지연 현상을 줄일 수 있어야 한다.
이에 본 발명은 상기한 문제점을 해결하기 위한 것으로서 본 발명은 실시간 운영체제에서 멀티쓰레딩을 효율적으로 처리하기 위하여 여러 개의 레지스터 집합(register set)에 스케쥴링 작업을 위한 작은 레지스터 집합을 추가한 임베디드 프로세서의 구조를 제공하는데 그 목적이 있다.
본 발명의 다른 목적은 작업전환(context switching)의 오버헤드를 줄임과 더불어 보조 연산장치 형태의 하드웨어 작업 관리자를 사용함으로써 실시간 멀티태스킹 프로그램에서 발생되었던 문제점, 즉 수백 사이클이 걸리던 멀티태스킹 오버헤드를 수 사이클 안에 해결할 수 있도록 하는데 있다.
상기한 본 발명의 목적을 달성하기 위한 기술적 사상으로서 본 발명은
통상의 프로그램 수행, 인터럽트 처리, 운영체제의 스케쥴링 작업용도로서 정해진 복수의 레지스터 집합을 구비하는 멀티쓰레드 프로세서; 및
상기 멀티쓰레드 프로세서와 보조 연산장치 형태로 연결되며, 레지스터 집합 의 작업(task)을 관리하고 스케쥴링하는 하드웨어 작업 관리자를 포함하는 고성능 멀티쓰레드 임베디드 프로세서를 제공한다.
이하, 본 발명의 실시 예에 대한 구성 및 작용을 첨부한 도면을 참조하면서 상세히 설명하기로 한다.
도 1은 본 발명에 따른 고성능 멀티쓰레드 임베디드 프로세서의 실시 예를 나타낸 것이며, 도 2는 본 발명에 따른 고성능 멀티쓰레드 임베디드 프로세서에서 사용하는 레지스터 집합 중 일반적인 용도로 사용되는 범용 레지스터의 실시 예를 나타낸 것이다. 도 3은 본 발명에 따른 하드웨어 작업 관리자의 실시 예를 나타낸 것이며, 도 4는 본 발명에 따른 작업 상태 관리자의 실시 예를 나타낸 것이다. 도 5는 본 발명에 따른 여러 레지스터 집합의 사용 시 한 레지스터 집합에서 다른 레지스터 집합으로 변경하는 경우를 구분한 테이블을 나타낸 것이다.
도 1은 복수의 레지스터 집합과 하드웨어 작업 관리자 두 방식을 모두 적용해서 설계한 프로세서의 구조를 나타낸 것이다. 멀티쓰레드 프로세서(1) 내부에는 현재 모드에 따라 사용할 수 있는 여러 레지스터 집합이 존재한다. 일반적인 유저모드(User mode)(2) 또는 관리자모드(Supervisor mode)(3)에서는 레지스터 집합 0(4) ~ 레지스터 집합 3(7)을 사용하게 되며, 인터럽트가 걸릴 경우 인터럽트 모드(14)의 레지스터 집합을 사용하게 된다. 운영체제는 레지스터 집합 0(4)을 사용하며, 다른 작업(task)들은 레지스터 집합 1(5) ~ 레지스터 집합 3(7)을 사용하게 된다.
하드웨어로 구현된 작업 관리자(context manager)(9)는 보조 연산장치 형태로 연결되어 사용된다. 이 작업 관리자는 작업(task)을 관리하고 스케쥴링하는 역할을 담당한다. 명령어 집합(instruction set)의 경우 로드/스토어(load/store)를 제외한 명령어들은 기본적으로 3 오퍼랜드(operand)로 동작하며, 명령어 집합에 간단한 RISC 명령어뿐만 아니라, DSP의 특징 또한 채용한다. 주소 레지스터(address register)의 값을 레지스터의 값이나 즉시(immediate) 값을 이용해서 사후 증가(post increment) 또는 사전 증가(pre increment)해서 사용하는 것이 가능하며 반복문(loop)의 수행이 편리하도록 감소/분기(decrement and branch) 명령을 지원하기 때문에 간단한 DSP 프로그램들은 DSP 프로세서를 따로 사용하지 않고도 효율적으로 실행할 수 있다. 본 발명에서 제안한 여러 레지스터 집합을 사용하기 위해서는 현재 사용하는 레지스터 집합을 다른 것으로 변경하는 있는 명령이 필요하게 되므로 이러한 기능을 수행하는 명령들이 명령어 집합을 추가하였다.
지금까지 운영체제는 작업전환(Context switching)을 위해 필요한 작업들을 소프트웨어적으로 처리하였다. 작업 전환을 위해서는 여러 가지 일들이 필요한데, 그 중 주된 오버헤드는 작업을 저장하고 복구하는 과정에서 발생하게 된다. 이 과정에서 걸리는 오버헤드를 줄이기 위해 프로세서 내부에 스케쥴링을 목적으로 하는 작은 레지스터 집합 하나를 추가적으로 사용한다.
여러 레지스터 집합을 사용하게 되면, 많은 작업을 번갈아 가면서 실행할 때 효율적이지만, 레지스터 집합의 수가 늘어날수록 프로세서의 크기가 커지는 단점이 있게 된다. 본 발명에서 제안하는 프로세서는 도 2 및 도 3과 같이 다수의 레지스 터 집합을 가지고 있다. 다수의 레지스터 집합 중 세 집합은 일반적인 목적으로 사용되는 레지스터 집합(normal register set)(16, 17, 18)이며, 한 집합은 스케쥴링 작업을 하기 위한 스케쥴링 레지스터 집합(scheduling register set)(19), 나머지 한 개의 집합은 인터럽트가 걸린 경우에 사용하게 되는 인터럽트 레지스터 집합(interrupt register set)(20)이다.
각각의 집합은 일반적인 용도로 사용되는 범용 레지스터(GPR: general purpose resister)와 현재 프로세서의 상태 및 PC값 등을 기억하기 위한 특수 레지스터(SPR: special purpose register)로 구성되어 있다. 프로세서가 어느 한 순간에 접근할 수 있는 범용 레지스터와 특수 레지스터의 수는 각각 32개씩 이다. 각각의 레지스터 집합이 서로 영향을 주지 않도록 독립적으로 설계할 수도 있으나, 그렇게 할 경우 레지스터 집합을 구현하기 위해 많은 면적이 필요하기 때문에 각각의 집합이 사용될 목적에 따라서 독립적인 레지스터의 개수를 제한하여 사용하고, 나머지 부분은 서로 공유해서 사용하도록 한다. 이렇게 구현할 경우, 프로세서의 크기를 줄일 수 있는 장점 이외에도 여러 작업 간에 서로 값을 전달하거나 공유해야 할 값이 있는 경우 서로 공유하고 있는 레지스터에 그 값을 저장함으로써 쉽게 데이터를 주고받을 수 있다는 장점도 가진다.
본 발명에서 제안한 구조를 사용한 프로세서에서 NRS0(16)는 운영체제, NRS1(17)와 NRS2(18)는 자주 사용되는 작업(task), IRS(19)는 인터럽트(interrupt), SRS(20)는 스케쥴링의 목적으로 사용되게 된다. 컴파일러를 이용해서 프로그램을 만드는 경우, 대부분의 경우에 8~16개의 레지스터만을 사용하기 때문에 NRS(17, 18)들은 GPR 중 R16 ~ R31의 16개의 레지스터만을 독립적인 레지스터로 가지고 있게 되고, R0 ~ R15는 공유해서 사용하는 방식을 이용한다. IRS(19)와 SRS(20)의 경우에는 단순한 작업만을 수행하기 때문에 레지스터가 많이 필요하지 않게 되므로, GPR 중 R24 ~ R31에 해당하는 부분만을 독립적인 부분(15)으로 가지고 있다.
본 발명의 구조에서 어떤 특정 레지스터 집합에서 다른 레지스터 집합으로 변경하는 경우는 도 5를 참조한다. IRS(19)에서 SRS(20)로의 레지스터 집합으로의 변환과 NRS(16, 17, 18)에서 NRS(16, 17, 18)로 바로 변환하는 것은 허용되지 않는다. 이러한 이유는 IRS(19)의 경우 인터럽트에 대한 간단한 루틴만을 실행하는 것이 원래 목적이며, 위에서 언급한 두 경우에 대해 레지스터 집합을 임의로 변경하는 것을 허용할 경우, 운영체제가 현재 어떤 작업이 실행되고 있는지를 알아야 할 필요가 있는데, 이를 유지하는 것이 어렵기 때문이다.
위와 같이 여러 레지스터 집합 구조를 사용하는 것이 아니라, 소프트웨어적으로 작업전환을 하게 되는 경우에는 기본적으로 사용하던 레지스터와 PC값들을 메모리에 저장하고 복원시켜 주어야 한다. 따라서 레지스터 개수 이상의 많은 스토어/로드(store/load) 연산이 필요하다. 이때 사용하는 메모리는 보통 한 칩에 프로세서와 함께 내장된 것이 아니라 외부에 연결된 것이기 때문에 메모리에 데이터를 쓰거나 메모리로부터 데이터를 읽기 위해서 여러 사이클이 필요하게 된다. 즉 한번의 작업 전환을 하기 위해서 필요한 오버헤드가 수백 사이클에 이르게 된다.
그러나 제안한 레지스터 집합 구조를 사용하는 경우에는 로드/스토어 (load/store) 하는데 필요한 오버헤드가 없게 되며 단지 현재 사용하는 레지스터 집합을 다른 것으로 바꾸라는 명령어를 한번만 사용해주면 되게 되므로 한 사이클이 필요하다. 즉 제안된 구조를 사용하면 작업전환(context switch)이 이루어질 때 소비되는 지연시간이 기존의 소프트웨어적인 방식에 비해 월등히 빨라지게 되므로, 실시간 시스템에 유리한 장점을 가지게 된다.
지금까지의 운영체제에서는 소프트웨어적으로 작업 전환 관리(context manage)를 하였다. 그러나 이 방식의 경우 스케쥴링을 하기 위해서 준비(ready) 상태에 있는 작업(context)의 리스트를 관리해야 하며, 매번 리스트에 들어 있는 작업 중에서 가장 먼저 실행해야 할 것을 찾아야 한다. 이러한 과정에서 메모리를 자주 사용하게 되기 때문에 많은 오버헤드가 걸리게 되는 단점이 있다. 범용 프로세서와 같이 많은 프로세스들이 동작해야 하는 환경에서는 위와 같이 구현하는 것이 효과적이겠지만, 임베디드 시스템에서는 동시에 실행하는 작업의 개수가 범용 프로세서처럼 많은 것이 아니라 제한적이다. 따라서 작업 전환 관리를 소프트웨어로 하지 않고 하드웨어로 구현하는 것이 가능하며, 이렇게 할 경우, 실시간 시스템에서는 작업 대상을 바꿀 때마다 걸리던 지연 현상을 쉽게 해결할 수 있는 것이다.
작업의 스케쥴링을 소프트웨어로 처리하는 방식과 하드웨어로 처리하는 방식을 비교해 보면 다음과 같다.
1) 스케쥴링
기존 소프트웨어로 처리하는 경우에는 실행해야 할 작업의 목록을 가지고 있으면서 매번 그 목록 중에서 가장 먼저 실행해야 할 작업을 선택하게 된다. 하드웨 어로 구현하는 경우 각각의 작업에 대해서 준비 레지스터(ready register)를 정하고, 각각의 작업에 대한 정보를 담고 있는 레지스터의 값을 간단한 논리 회로를 이용해서 비교하여 선택할 수 있다.
2) 지연 시간 관리
기존의 소프트웨어로 처리하는 경우에서는 적은 수의 타이머(timer)를 사용하거나, 운영체제가 매 단위 시간(tick)마다 숫자를 감소시키면서 지연시간을 관리하게 된다. 하드웨어로 구현할 경우에는 각각의 작업마다 타이머 또는 카운터(25)를 두고 사용할 수 있다.
3) 이벤트(event)
소프트웨어적인 방식에서는 역시 이벤트를 목록으로 관리하면서 이벤트가 발생하면 해당하는 목록을 탐색하면서 작업들을 깨우게 된다. 하드웨어로 구현하는 경우에는 각각의 작업마다 레지스터를 두고 이벤트가 발생하면 해당하는 레지스터의 값을 변경함으로써 작업을 깨울 수 있다.
제안하는 프로세서는 제안한 하드웨어 작업 관리자(9)를 보조프로세서로 인식하고 사용할 수 있다. 보조프로세서 형태로 구성함으로써 운영체제가 지원하는 경우에만 사용하고 지원하지 않는 경우에는 소프트웨어적으로 처리하는 등의 변경이 쉬워지게 된다.
하드웨어 작업 관리자(9)의 전체 구성은 도 3에 도시되어 있다. 도 3의 상위 부분은 작업을 관리하는 자료 구조이다. 작업 중에 준비(ready) 상태인 것을 가지고 있는 준비 목록(ready list)(21)이 있고, 각 작업마다 작업의 상태를 나타내는 자료 구조를 가지고 있어서, 작업이 얼마나 지연된 후에 준비 상태가 될지 혹은 어떤 이벤트가 발생했을 때 준비 상태가 될 지를 나타낸다. 그리고 각 이벤트마다, 그 이벤트가 발생했을 때 준비 상태가 될 작업의 목록을 가지고 있다. 도 3의 하위 부분은 소프트웨어로 구현되었던 데이터 구조를 하드웨어로 구성한 것이다. 작업마다 작업 상태 관리자(context status manager)(29)가 있어서 각 작업의 상태를 관할한다. 소프트웨어에서 준비 목록은 각 작업마다 준비 상태인지를 가리키는 레지스터를 두어 대체한다. 소프트웨어에서는 각 작업마다 지연 값을 가지고 있고 타이머의 기준 시간(tick)마다 값을 줄였었는데, 하드웨어 작업 관리자(29)에서는 작업 상태 관리자마다 카운터(25)가 있어서 그 관리를 용이하게 하였다. 그리고 이벤트 목록을 대신해서, 각 작업 상태 관리자에 이벤트 넘버를 저장하는 레지스터(26)를 두었다. 각 작업 상태 관리자(27)는 카운터(25)와 이벤트 넘버(26)를 보아서 작업의 상태를 결정한다. 각 작업의 상태를 이용해서 태스크 스케쥴러(28)가 가장 우선순위가 높은 작업을 선택한 뒤 프로세서에 전달한다.
작업 상태 관리자(29)는 도 4에 도시된 바와 같이 구성되어 있으며 각 작업마다 할당되어 있다. 작업이 일정 시간 동안 지연될 때 사용하는 카운터(counter)(25), 이벤트를 기다리고 있을 때 사용하는 이벤트 넘버 레지스터(event number register)(26), 그리고 외부에서 오는 신호를 기다릴 때 사용하는 외부 이벤트 로직(external event logic)(31)으로 이루어진다. 그리고 이 세 모듈의 결과를 종합해서 작업의 상태(30)를 판별한다.
본 발명에서 제안한 구조를 사용하지 않고 소프트웨어적으로 작업 전환 관리 를 하는 경우에는 준비 목록을 관리하기 위해 작업변경이 일어날 때마다 매번 메모리에 저장되어 있는 목록에 작업을 추가하거나 삭제해야 하고, 각각의 작업에 대해서 우선순위를 결정하기 위해 카운터 값들을 변경시켜주는 작업 등을 수행해 주어야 한다. 이러한 과정은 모두 메모리와 연관된 것들이며, 작업의 수가 많아질수록 관리하는데 더 많은 사이클이 소모되게 된다. 반면에 제안한 구조를 사용해서 작업 관리를 하드웨어적으로 구현한다면 보조 연산 장치와 데이터를 주고받는데 필요한 오버헤드만이 존재하게 되기 때문에 소프트웨어적으로 관리하던 것에 비해 훨씬 빠르게 되므로, 지연 시간이 중요한 요소로 작용하는 실시간 임베디드 시스템에 적합한 구조라고 볼 수 있다. 제안한 구조를 이용해서 작업 관리자 4개를 포함하고, 64개의 작업을 처리할 수 있는 하드웨어 작업 관리자(9)를 설계하여 검증에 사용하였다. 제안한 구조는 레지스터를 사용해서 데이터를 기억하며, 우선순위 갱신과 같은 연산 과정은 논리 게이트들로부터 나오는 값을 이용하면 되기 때문에 연산 결과를 빠르게 얻을 수 있다.
도 7은 본 발명에 따른 스케쥴링 레지스터 집합을 사용하는 경우 작업의 전환이 일어나는 과정을 도시한 것이다. 도 6과 마찬가지로 작업 1에서 작업 2로 작업전환이 일어나는 경우를 나타낸다. 프로세서는 현재까지 작업 1을 위해 레지스터 집합 A를 사용하였다. 그 다음으로 스케쥴링 작업을 통해서 다음에 실행해야 할 작업을 선택한다. 이 때 별도의 스케쥴링 레지스터 집합을 이용한다. 스케쥴링 작업에서 작업 2가 선택되면, 레지스터 집합 A를 사용하지 않고 레지스터 집합 B를 사용하여 작업이 수행된다. 이후 작업 2가 끝나고 작업 1을 수행하는 경우를 생각해 보면, 사용하는 레지스터 집합을 B에서 A로 바꾸어 주기만 하면 된다. 따라서 레지스터 집합 내의 프로세싱 정보를 메모리에 저장하고 불러오는 일이 생략되어 지연시간을 감소시킨다.
다중 작업을 지원하는 운영체제에서 작업 전환은 매우 빈번하게 일어나게 되며, 매 변환마다 스케쥴링 작업을 위한 일들이 반복되게 된다. 또한 스케쥴링 작업은 간단한 기능을 반복해서 사용하는 구조로 이루어지기 때문에 이 작업을 위해 적은 수의 레지스터만 필요하게 된다.
그러나 기존의 구조에서는 큰 크기의 레지스터 집합 한 개를 모두 스케쥴링 작업에 할당해서 사용하기 때문에 레지스터의 낭비가 많았으며, 불필요하게 메모리에 저장하고 불러오는 과정이 많아지게 된다. 또한 메모리에 접근하는 과정이 많아질수록 작업 전환에 걸리는 시간이 길어지게 되므로, 실시간 시스템 등에서 큰 문제점으로 작용하게 된다.
더 많은 수의 레지스터 집합을 사용할수록 응답속도를 높일 수 있고, 작업 전환이 더 빠르게 이루어질 수 있지만, 실제 프로세서에서 레지스터 집합이 차지하는 면적의 비중이 크기 때문에 레지스터 집합의 수를 늘리는 데에는 한계가 있다. 실제 스케쥴링 작업에서 필요로 하는 레지스터의 수는 매우 적다는 점에 착안해서 적은 수의 레지스터만을 가지는 작은 레지스터 집합을 추가해서 운영체제에서 스케쥴링 작업을 할 때에만 사용하는 목적으로 이용한다면, 약간의 면적만 증가하면서도 실제적으로는 큰 크기의 레지스터 집합 한 개가 늘어난 것과 같은 효과를 가질 수 있고 실시간 임베디드 시스템에서 빠른 응답속도와 작업 전환 속도를 얻을 수 있게 된다.
이상에서와 같이 본 발명에서 제안하는 복수 레지스터 집합과 하드웨어 작업 관리자를 가진 프로세서는, 기존의 여러 레지스터 집합에 스케쥴링을 목적으로 하는 스케쥴링 레지스터 집합 하나를 추가하여 많은 작업을 번갈아 가며 실행할 때 발생하는 오버헤드를 줄일 수 있다.
또한, 스케쥴링을 돕는 하드웨어를 구현하여 스케쥴링에 수반되는 오버헤드를 줄일 수 있다. 결과적으로 지연시간을 줄일 수 있어 프로세서의 성능을 향상시킬 수 있다. 따라서 본 발명은 적은 지연시간을 필요로 하는 실시간 시스템에서 더 낮은 동작 클럭으로 기존의 임베디드 프로세서를 사용했을 때와 같은 성능을 낼 수 있기 때문에 적은 전력을 소모하는 이점이 있다.

Claims (5)

  1. 통상의 프로그램 수행을 위한 레지스터 집합, 인터럽트 처리를 위한 레지스터 집합 및 운영체제의 스케쥴링 작업을 위한 스케쥴링 용 레지스터 집합을 구비하는 멀티쓰레드 프로세서; 및
    상기 멀티쓰레드 프로세서와 보조 연산장치 형태로 연결되며, 레지스터 집합의 작업(task)을 관리하고 스케쥴링하는 하드웨어 작업 관리자를 포함하는 고성능 멀티쓰레드 임베디드 프로세서.
  2. 청구항 1에 있어서,
    상기 운영 체제의 스케쥴링 용 레지스터 집합은 상기 통상의 프로그램 수행을 위한 레지스터 집합보다 적은 개수의 레지스터를 가지며, 운영체제에서 작업 전환 시 상기 스케쥴링 용 레지스터 집합의 레지스터들을 전용으로 사용하는 것을 특징으로 하는 고성능 멀티쓰레드 임베디드 프로세서.
  3. 청구항 2에 있어서,
    상기 스케쥴링 용 레지스터 집합이 독립적으로 가지고 있는 적은 수의 레지스터에 할당된 어드레스를 제외한 나머지 어드레스에 대해서 상기 통상의 프로그램 수행을 위한 레지스터의 집합 또는 상기 인터럽트 처리를 위한 레지스터 집합의 레지스터와 공유해서 사용할 수 있는 형태를 갖는 것을 특징으로 하는 고성능 멀티쓰레드 임베디드 프로세서.
  4. 청구항 1에 있어서,
    상기 보조연산장치 형태로 연결되는 하드웨어 작업 관리자는 기존 운영체제가 스케쥴링을 위해 대기 작업 목록의 실행 우선순위를 관리했던 일을 보조하여 프로세서의 연산량을 줄여주며, 상기 연산량을 줄이기 위해 각 작업마다 작업 상태 관리자를 두는 것을 특징으로 하는 고성능 멀티쓰레드 임베디드 프로세서.
  5. 청구항 4에 있어서,
    작업의 상태를 판별하기 위하여, 각 작업 상태 관리자는 작업이 일정 시간 동안 지연되는 것을 관리하는 카운터(counter)와; 상기 작업 관리자에 이벤트 넘버를 저장하는 이벤트 넘버 레지스터(event number register); 및 외부에서 전송되는 신호를 입력받는 외부 이벤트 로직(external event logic)이 구비되어,
    내부 카운터 값과 외부 이벤트 로직으로부터 입력받은 값을 이용해서 현재 이벤트를 판단하고, 현재 이벤트와 같은 이벤트 값이 포함된 이벤트 넘버 레지스터를 갖는 작업 상태 관리자를 찾아서, 상기 작업 상태 관리자의 작업 목록이 우선적으로 수행될 수 있도록 하는 것을 특징으로 하는 고성능 멀티쓰레드 임베디드 프로세서.
KR1020050101841A 2005-10-27 2005-10-27 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서 KR100728899B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050101841A KR100728899B1 (ko) 2005-10-27 2005-10-27 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050101841A KR100728899B1 (ko) 2005-10-27 2005-10-27 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서

Publications (2)

Publication Number Publication Date
KR20070045495A KR20070045495A (ko) 2007-05-02
KR100728899B1 true KR100728899B1 (ko) 2007-06-15

Family

ID=38271213

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050101841A KR100728899B1 (ko) 2005-10-27 2005-10-27 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서

Country Status (1)

Country Link
KR (1) KR100728899B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101869939B1 (ko) 2012-01-05 2018-06-21 삼성전자주식회사 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치
GB2569098B (en) * 2017-10-20 2020-01-08 Graphcore Ltd Combining states of multiple threads in a multi-threaded processor

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930701785A (ko) * 1990-06-11 1993-06-12 고도의 병렬 다중프로세서 시스템용 통합 소프트웨어 아키텍쳐
KR970071261A (ko) * 1996-04-15 1997-11-07 김광호 동적 재구성이 가능한 단일 프로세서 시스템의 스케쥴러
KR19990058732A (ko) * 1997-12-30 1999-07-15 구본준 하드웨어 실시간 멀티태스킹 장치 및 방법
KR20010055463A (ko) * 1999-12-10 2001-07-04 서평원 하드와이어드 태스크 스케쥴러 및 그 태스크 스케쥴러의스케쥴링 방법
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US20030061258A1 (en) * 1999-12-09 2003-03-27 Dion Rodgers Method and apparatus for processing an event occurrence for at least one thread within a multithreaded processor
KR20050010508A (ko) * 2002-05-31 2005-01-27 프리스케일 세미컨덕터, 인크. 다중 레지스터 컨텍스트를 갖는 데이터 프로세싱 시스템및 이를 위한 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930701785A (ko) * 1990-06-11 1993-06-12 고도의 병렬 다중프로세서 시스템용 통합 소프트웨어 아키텍쳐
KR970071261A (ko) * 1996-04-15 1997-11-07 김광호 동적 재구성이 가능한 단일 프로세서 시스템의 스케쥴러
KR19990058732A (ko) * 1997-12-30 1999-07-15 구본준 하드웨어 실시간 멀티태스킹 장치 및 방법
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US20030061258A1 (en) * 1999-12-09 2003-03-27 Dion Rodgers Method and apparatus for processing an event occurrence for at least one thread within a multithreaded processor
US6883107B2 (en) 1999-12-09 2005-04-19 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
KR20010055463A (ko) * 1999-12-10 2001-07-04 서평원 하드와이어드 태스크 스케쥴러 및 그 태스크 스케쥴러의스케쥴링 방법
KR20050010508A (ko) * 2002-05-31 2005-01-27 프리스케일 세미컨덕터, 인크. 다중 레지스터 컨텍스트를 갖는 데이터 프로세싱 시스템및 이를 위한 방법

Also Published As

Publication number Publication date
KR20070045495A (ko) 2007-05-02

Similar Documents

Publication Publication Date Title
US7600135B2 (en) Apparatus and method for software specified power management performance using low power virtual threads
EP1658563B1 (en) Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
US7647483B2 (en) Multi-threaded parallel processor methods and apparatus
US6928647B2 (en) Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
KR101100470B1 (ko) 멀티쓰레드 프로세서에서의 자동 저전력 모드 호출을 위한장치 및 방법
US9753779B2 (en) Task processing device implementing task switching using multiple state registers storing processor id and task state
US7412590B2 (en) Information processing apparatus and context switching method
JP4119945B2 (ja) タスク処理装置
US10423446B2 (en) Data processing
US20120096472A1 (en) Virtual queue processing circuit and task processor
JPWO2008023427A1 (ja) タスク処理装置
US6405234B2 (en) Full time operating system
WO2005022384A1 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
WO2005048009A2 (en) Method and system for multithreaded processing using errands
EP1811375B1 (en) Processor
US8869172B2 (en) Method and system method and system for exception-less system calls for event driven programs
KR100728899B1 (ko) 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서
CN112732416B (zh) 有效消除数据访问延迟的并行数据处理方法及并行处理器
JP2012168725A (ja) マルチスレッド・プロセッサ
JP2008269597A (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: 20110601

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee