KR100280460B1 - 데이터 처리 장치 및 이의 복수의 스레드 처리 방법 - Google Patents

데이터 처리 장치 및 이의 복수의 스레드 처리 방법 Download PDF

Info

Publication number
KR100280460B1
KR100280460B1 KR1019980012337A KR19980012337A KR100280460B1 KR 100280460 B1 KR100280460 B1 KR 100280460B1 KR 1019980012337 A KR1019980012337 A KR 1019980012337A KR 19980012337 A KR19980012337 A KR 19980012337A KR 100280460 B1 KR100280460 B1 KR 100280460B1
Authority
KR
South Korea
Prior art keywords
instruction
thread
context
instructions
sub
Prior art date
Application number
KR1019980012337A
Other languages
English (en)
Other versions
KR19990079641A (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 KR1019980012337A priority Critical patent/KR100280460B1/ko
Priority to US09/168,068 priority patent/US6216220B1/en
Publication of KR19990079641A publication Critical patent/KR19990079641A/ko
Application granted granted Critical
Publication of KR100280460B1 publication Critical patent/KR100280460B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

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

Abstract

본 발명은 복수의 스레드(thread; 일련의 복수의 명령)를 처리할 수 있는 데이터 처리 장치 및 이의 방법에 관한 것이다. 특히 VLIW(Very Long Instruction Word) 프로세서와 복수의 스레드 구조를 결합한 경우 발생되는 긴 레이턴시(latency; 명령 수행에 소요되는 사이클수)의 명령어에 대한 콘텍스트 전환이 복수의 프로그램 카운터에 의해서 제공된다. 이를 위해서 본 발명에서는 복수의 명령어를 갖는 수행될 활성 스레드(thread)들의 각 명령어를 처리하도록 각각의 스레드로부터 발행(issue)된 명령어를 서브명령어들로 하여 이를 하나의 명령어로서 처리하기 위한 명령어 조합 단계, 조합된 명령어를 상기 수행 수단에 의해 수행하며, 각각의 서브명령어를 제공한 각각의 스레드의 상태인 콘텍스트(context)를 복수의 프로그램 카운터로 추적하는 단계, 및 상기 수행될 명령어 중 긴 레이턴시(latency) 서브 명령어를 제공한 스레드의 콘텍스트만을, 이를 추적하고 있는 프로그램 카운터에 의해 상기 대기 스레드 블록에 옮겨 콘텍스트 전환하고, 상기 준비 스레드 블록 내의 또 다른 스레드로부터 명령어를 서브명령어로 하여 또 다른 하나의 명령어를 조합하여 수행시키는 단계를 포함한다.

Description

데이터 처리 장치 및 이의 복수의 스레드 처리 방법
본 발명은 데이터 처리 장치에 관한 것으로, 특히 복수의 스레드를 처리할 수 있는 데이터 처리 장치 및 이의 방법에 관한 것이다.
일반적으로, 컴퓨터는 명령을 순차적으로 처리하도록 되어 있으나, 처리 속도를 보다 개선하기 위해서, 예를 들면, 한 명령의 연산(operation)을 시작하여 종료될 때까지의 처리 시간, 즉 사이클수(이하, 레이턴시; latency)를 감소시키기 위해 보편적으로 캐시(cache) 메모리가 사용되며, 이러한 캐시 메모리에 의해서 데이터 메모리 참조의 경우 수십 사이클을 몇 개의 사이클로 줄일 수 있게 된다.
단일 스레드(thread; 일련의 복수의 명령) 프로세서의 경우, 어떤 계산의 현 상태는 이를 채용한 데이터 처리 장치가 갖고 있는 프로그램 카운터, 범용 레지스터 및 상태(status) 레지스터 등에 의해서 정해진다. 통상, 이러한 데이터 처리 장치가 갖고 있는 상기한 요소들의 내용을 포함하여, 어떤 스레드에 관련한 프로그램 카운터, 레지스터 등과 같은 것의 머신(machine) 상태를 하드웨어 콘텍스트(context)라 한다. 이때, 상기한 바와 같은 단일 스레드 프로세서에서 상기 계산이 인터럽트된 경우, 즉 소정의 자원(resource)을 사용할 수 있을 때까지 대기해야 하는 경우가 발생되면, 관련 콘텍스트는 메모리 내에 저장되어야 하며, 이렇게 함으로써 상기 계산을 재개하게 된 때 다시 복구할 수 있도록 한다.
이러한 과정은 콘텍스트 전환(context switching)이라 할 수 있는데, 이것은 한 콘텍스트로부터 다른 콘텍스트로 프로세서의 수행을 전환하는 것을 말한다. 이것은 한 스레드의 수행을 중지하고 다른 스레드의 수행을 시작하는 것을 의미한다. 따라서 이를 위해서 언급한 바와 같이, 콘텍스트는 필요에 따라 메모리에 저장되어 복구될 수 있도록 해야 한다. 그러나, 이러한 과정은 콘텍스트 전환 부담으로 나타난다.
이러한 콘텍스트 전환 부담을 줄이거나 제거하기 위해서 복수의 스레드를 병렬로 처리할 수 있는 복수 스레드 처리 장치를 이용하여 명령어 처리 시간을 단축시킬 수 있다. 복수 스레드의 설계에 따라서, 워크스테이션 및 개인용 컴퓨터의 통상의 작업량에 매우 효과적으로 대처할 수 있다.
앞에서 설명한 바와 같이 복수 스레드 프로세서 구조를 사용하여 처리 속도를 향상시키고자 하는데, 이것은 복수의 하드웨어 콘텍스트, 즉 여러 세트의 범용 레지스터, 상태 레지스터, 및 프로그램 카운터를 구비함으로써 달성된다. 따라서, 복수 스레드의 콘텍스트들은 동시에 하드웨어에 저장될 수 있다. 그러므로, 콘텍스트 전환할 때, 레지스터들의 내용을 메모리로 저장하여 나중에 복구하는 등의 과정이 필요하지 않게 되므로, 결과적으로 프로세서는 긴 명령 처리 시간이 소요되는 동작에서 벗어난다. 그러나, 이에 대한 대가로 하드웨어가 필요하게 되므로 그 절충안 역시 요구된다.
하나 이상의 콘텍스트를 지원함에 따라 데이터 처리 장치의 성능이 달라지고 뿐만 아니라 하드웨어 비용도 달라진다. 비용이 증가하는 이유는 똑같은 레지스터 및 각각의 콘텍스트를 위한 똑같은 구조의 다른 상태 회로(state circuitry)들이 반복적으로 사용되기 때문이다. 또한 레지스터들을 액세스함에 있어 프로세서의 크리티컬 경로(critical path), 즉 가장 긴 경로를 유발하는 경로를 따를 경우, 복수의 스레드 구성의 장치에 포함된 많은 레지스터에 의해서 사이클 시간이 증가할 수도 있다.
통상, 지원할 콘텍스트 수를 정함에 있어서는 하드웨어 비용, 소요 사이클 시간, 콘텍스트 전환간 어떤 스레드에 의해 수행된 사이클 수인 런-렝스(run-length), 및 명령어 처리 시간을 고려하여 정하게 된다.
한편, 컴퓨터 시스템은 주어진 명령어를 인식하여 처리하는 중앙처리장치(CUP), 즉 프로세서를 기본으로 하는 데이터 처리 장치로서, 이를 이용하여 다양한 분야에 활용되고 있는데, 이러한 프로세서는 상당수의 명령어를 인식할 수 있으나, 자주 사용되지 않는 명령어로 인해 속도저하를 방지하기 위해서, 복잡하고 긴 명령어는 자주 쓰이는 짧은 명령어를 여러개 조합하여 사용하면 잇점이 있으므로 이러한 방식이 채용되고 있다. 이러한 배경으로 각 명령이 모두 동일 크기로 하고, 여러 명령어를 동시에 수행시키는 등의 설계방식이 생겨났다. 이와 같이 한 사이클에 동시에 복수의 명령을 처리하는 소위 슈퍼스케일러(superscaler) 구조에 대해 종래에 제공된 데이터 처리 장치에 대해서 설명한다.
앞에서 언급한 배경하에서, 컴퓨터 설계에 있어 주된 경향은 두 개 이상의 서브명령을 하나의 사이클 내에 제공할 수 있는 슈퍼스케일러 프로세서 설계이다. 각각의 서브명령은 복수의 스레드 처리 기능을 가능하게 한, 프로세서 내의 몇몇 기능 유닛 중 하나에 의해서 처리된다.
슈퍼스케일러 및 복수의 스레드 구조를 함께 사용하여, 프로세서 결합(coupling)을 이룬다. 프로세서 결합에서는 하나의 사이클 내에 동시에 몇 개의 스레드로부터 서브명령들이 나올 수 있다. 이에 대해서 도 1을 참조할 수 있다.
도 1은 다중 스레드 구조의 예를 나타낸 것이다. 도면에는 3개의 스레드(1, 2, 3)와, 각각은 5개의 연속한 사이클 동안 각 스레드가 필요로 하는 프로세서 내의 8개의 기능 유닛을 지정하고 있다. 참조부호 4로 표시한 것은 수직방향으로 순차적인 사이클을 나타내며, 각각의 사이클 동안 각각의 기능 유닛의 수행 내용을 도식적으로 보이고 있다. 프로세서 내의 각각의 기능 유닛은 서로 다른 스레드로부터의 매핑관계에 있고 이는 프로세서 결합을 잘 설명하고 있다.
2개 이상의 스레드가 동일한 기능 유닛에 액세스해야 할 경우, 이들 스레드 중 하나는 그 유닛이 처리를 끝낼 때까지는 대기해야 한다. 도 1의 사이클 1에서, 제1 스레드(1)는 제3 기능 유닛(f3) 및 제4 기능 유닛(f4)에 할당되고, 사이클 2에서, 제1 스레드가 필요로 하는 제1 및 제2 기능 유닛(f1, f2)은 제3 스레드(3)에 할당되어 있어 할당할 기능 유닛이 없이 참조부호 4와 같이 사이클 4, 5로 미루어진다. 이렇게 하여, 한 사이클 내에서 여러 스레드들이 동시에 처리되게 한다.
이러한 구조는 스레드간 전환뿐만 아니라 인터리빙(interleaving)을 지원한다. 만약 어떤 스레드에서 긴 레이턴시 명령을 유발할 경우, 이 명령의 홀딩(holding)으로 실행(issue)시킬 명령이 없다면 다른 스레드로부터의 연산이 자동적으로 기능 유닛으로 보내지므로, 사실, 스레드간 전환은 인터리빙의 서브카테고리로 볼 수 있다. 도 1에 대한 보다 상세한 것은 1992년, 19회 컴퓨터 구조 국제 심포지움에서 에스. 케클러 및 더블류. 달리에 의한 기사를 참조할 수 있다.
본 발명에서는 이러한 복수의 스레드를 처리함에 있어 프로세서로서 소위 VLIW(Very Long Instruction Word) 프로세서를 사용하는 구조와도 관련한다. 이 VLIW 프로세서는 많은 명령의 처리를 줄이도록 명령을 병렬로 처리한다. VLIW 프로세서에서, 하나의 명령은 하나 이상의 서브명령을 동시에 명시하고 있다. 도 2는 VLIW 프로세서에서 명령 타이밍 관계를 도식적으로 나타낸 것으로, 시간이 경과함에 따라 복수의 명령이 동시에 처리됨을 보이고 있다. 도 2에서 i0, i1, i2는 연속되는(serial) 명령 스트림을 나타내고, f는 명령 페치 스테지(fetch stage), d는 명령 디코딩 스테지, e는 명령 실행(execution) 스테지를 나타낸다. VLIW 프로세서에 대해서 보다 상세한 것은 1991년 프렌티스 홀에서 나온, 마이크 죤슨이 쓴 "Superscalar Microprocessor Design" 명칭의 책을 참조할 수 있다.
앞에서 설명한 바와 같이, 복수 스레드 프로세서 구조에 있어서는 콘텍스트 전환 과정이 발생된다. 특히 시스템의 성능저하에 영향을 미치는 콘텍스트 전환 오버헤드는 VLIW 혹은 슈퍼스케일러 프로세서 구조에 결합된 때 긴 레이턴시 발생의 경우 보다 심각해지는 문제가 있다.
본 발명의 목적은 VLIW 혹은 슈퍼스케일러와 같이 명령당 클럭(CPI; Clock per instruction)을 줄이기 위해 사용되는 방식을 사용한 복수 스레드 처리 장치에 있어서, 명령의 동시 처리를 보다 효과적으로 행하고 명령당 평균 사이클 수를 보다 짧게 한 VLIW 프로세서를 사용한 복수 스레드 처리 장치를 제공하는 것이다.
본 발명의 다른 목적은 VLIW 프로세서를 사용한 복수 스레드 처리에 있어서, 이 VLIW 프로세서를 사용한 복수 스레드 처리 방법을 제공하는 것이다.
본 발명의 목적에 따라서, 본 발명에서는 복수의 스레드(thread)를 처리하도록, 활성 스레드 블록, 준비 스레드 블록 및 대기 스레드 블록과 명령어 수행 수단을 갖는 데이터 처리 장치의 명령어 수행 방법에 있어서, 상기 복수의 명령어를 갖는 수행될 활성 스레드(thread)들의 각 명령어를 처리하도록 각각의 스레드로부터 발행된 명령어를 서브명령어들로 하여 이를 하나의 명령어로서 처리하기 위한 명령어 조합 단계; 상기 조합된 명령어를 상기 수행 수단에 의해 수행하며, 각각의 서브명령어를 제공한 각각의 스레드의 상태인 콘텍스트(context)를 복수의 프로그램 카운터로 추적하는 단계; 및 상기 수행될 명령어 중 긴 레이턴시(latency) 서브 명령어를 제공한 스레드의 콘텍스트만을, 이를 추적하고 있는 프로그램 카운터에 의해 상기 대기 스레드 블록에 옮겨 콘텍스트 전환하고, 상기 준비 스레드 블록 내의 또 다른 스레드로부터 명령어를 서브명령어로 하여 또 다른 하나의 명령어를 조합하여 수행시키는 단계를 포함하는 데이터 처리 장치의 복수의 스레드 처리 방법을 제공한다.
본 발명의 또 다른 목적에 따라서, 본 발명에서는 복수의 스레드(thread)를 처리하도록, 활성 스레드 블록, 준비 스레드 블록 및 대기 스레드 블록과 명령어 수행 수단을 갖는 데이터 처리 장치에 있어서, 상기 복수의 활성 스레드를 로딩하기 위한 메모리 수단; 상기 복수의 명령어를 갖는 수행될 활성 스레드(thread)들의 각 명령어를 처리하도록 각각의 스레드로부터 발행된 명령어를 서브명령어들로 하여 이를 하나의 명령어로서 처리하기 위한 명령어 조합 수단; 상기 조합된 명령어를 상기 수행 수단에 의해 수행하며, 각각의 서브명령어를 제공한 각각의 스레드의 상태인 콘텍스트(context)를 추적하기 위한 복수의 프로그램 카운터; 및 상기 콘텍스트는 프로그램 카운터 내용 및 프로세서 상태(status)를 포함하며, 상기 콘텍스트를 저장하기 위한 저장 수단을 포함하며, 상기 수행될 명령어 중 긴 레이턴시(latency) 서브 명령어를 제공한 스레드의 콘텍스트만을, 이를 추적하고 있는 프로그램 카운터에 의해 상기 대기 스레드 블록에 옮겨 콘텍스트 전환하고, 상기 조합 수단은 상기 준비 스레드 블록 내의 또 다른 스레드로부터 명령어를 서브명령어로 하여 또 다른 명령어로 조합하며, 상기 수행 수단은 상기 또 다른 명령어를 수행하는 복수의 스레드 처리용 데이터 처리 장치를 제공한다.
이러한 목적의 달성에 따라서, 긴 레이턴시 서브명령만을 콘텍스트 전환시켜 별도로 처리하게 함으로써, 프로세서가 긴 레이턴시 서브명령을 처리하는 동안 아이들 상태에 있지 않도록 하므로 보다 효율적인 데이터 처리 장치로서 사용될 수 있다.
이러한 본 발명에 대한 상기한 목적, 특징 및 효과에 대해서 첨부한 도면을 참조하여 다음의 상세한 설명으로부터 본 발명에 대해 충분히 이해될 것이다.
도 1은 복수의 스레드 구조의 예를 도시한 도면.
도 2는 VLIW 프로세서에서 명령어 타이밍 관계를 도시한 도면.
도 3은 본 발명에 따른 VLIW 및 다수의 스레드 구조의 결합에 의한 구성을 보인 블록도.
도 4는 도 3에 관련한 본 발명의 따른 실시예를 보인 도면.
도 5는 서브명령 수에 따른 긴 레이턴시 서브명령 발생확률과 전체 확률간의 관계를 도시한 그래프도.
도 6은 도 5에 관련한 서브명령어 수에 따른 긴 레이턴시 서브명령 발생확률과 전체 확률간의 관계를 도시한 그래프도.
*** 도면의 주요 부분에 대한 부호의 설명 ***
1 : 스레드 2 : 하드웨어 콘텍스트 블록
2-1 : 레지스터 프레임 2-2 : 대기 블록
2-3 : 준비 블록 3 : 콘텍스트 선택 유닛
4 : 명령 처리부 5 : 명령 캐시
6 : 프로그램 카운터
본 발명의 목적에 따른 바람직한 실시예를 첨부한 도면을 사용하여 다음에 설명한다.
도 3은 본 발명에 따라 구성된 VLIW 프로세서를 채용한 복수 스레드 처리 구조를 개략적으로 도시한 블록도이다.
도면에는 복수의 스레드(1), 하드웨어 콘텍스트 블록(2), 콘텍스트 선택 유닛(3) 및 k개의 수행 유닛을 포함하는 명령 처리부(4)가 도시되어 있다. 물론, 도면에서 모두 22개의 스레드(1)가 도시되어 있으나, 단지 예시하기 위한 것으로 구체적인 수치로 발명이 제한되는 것은 아니다. 이 구조는 근본적으로 복수의 서브명령이 하나의 명령을, 복수의 스레드 구조에 의해서 프로세서 내의 수행 유닛을 보다 효과적으로 이용하여 하기 위한 구조이다.
콘텍스트 블록(2)은 실행(running) 스레드 블록(2-1), 대기(waiting) 스레드 블록(2-2), 및 준비(ready) 스레드 블록(2-3)을 포함한다. 각각의 콘텍스트 블록은 도시된 바와 같이 프로그램 카운터의 내용, 레지스터 상태 워드(status word) 등 어떤 스레드에 관련된 현재의 상태를 보관 유지하는 별도의 하드웨어 구조를 갖는다.
바람직하기로는 콘텍스트 전환에 있어 각 스레드를 사이클 단위(cycle-by-cycle)로 전환하는 것인데, 이 방식을 실현하기 위해서는 긴 레이턴시, 즉 콘텍스트 전환에 소요되는 사이클 수가 많은 서브명령어를 적절히 처리할 수 있도록 보다 많은 활성 콘텍스트, 즉 활성 스레드가 요구된다. 더욱이 전환하고자 하는 스레드의 처리과정에 소요되는 사이클을 활성 스레드의 처리과정으로 충분히 커버(cover)하기 위해, 활성 스레드를 진행 상태에 있도록 해야 한다.
통상 복수 스레드 구조에서는 단지 하나의 활성 스레드가 실행(running) 스레드 블록에 사용되나, 도 3에 도시한 바와 같이 본 발명에 따라서, 실행(running) 스레드 블록(2-1)에는 n개의 복수의 활성 스레드가 포함된다.
VLIW 프로세서의 특징으로서, 콘텍스트 선택 유닛(3)은 n개의 활성 스레드로부터 나온 n개의 서브명령을 하나의 명령으로 팩(pack)하여, 이를 실행 유닛(4-1)을 갖는 명령 처리부(4)로 보내는 동작을 수행한다.
그러나, 본 발명은 VLIW 프로세서에 따른 명령어 팩킹에만 국한되는 것은 아니다. 그것은 슈퍼스케일러 구조에서 독립된 명령들을 구하여 얻는(finding) 것에 의해 조합된 것을 모두 포함한다. 따라서, 명령어는 VLIW, 슈퍼스케일러어, 혹은 그 외 다른 것에 의한 명령어 조합을 의미할 수 있다는 것과 VLIW는 단지 하나의 예인 것에 유념하도록 하며, 이들은 모두 본 발명의 범주 내에 포함된다. 그러므로, 본 발명에서 조합의 용어는 팩의 의미를 포함하는 용어로 사용된다.
그런데, 긴 레이턴시의 서브명령이 실행 유닛(4-1)에서 발생한 경우에, 본 발명에 따라, 이 긴 레이턴시 서브명령에 대응하는 콘텍스트는 콘텍스트 블록(2) 내의 대기 스레드 블록(2-2)으로 저장되고, 준비 스레드 블록(2-3) 내의 스레드 중 하나로 대치된다. 이와 같은 대치 동작에 따라서, 활성 스레드의 처리 순서가 다시 정해지고 이들 활성 스레드로부터 설정된 새로운 서브명령은 하나의 새로운 명령으로 팩된다.
언급한 바와 같이, 팩된 한 명령어 내에 복수의 서브명령어가 있으며, 그 명령어에 의해 야기된 긴 레이턴시 서브명령의 가능성이 서브명령에 의해 야기된 가능성보다 훨씬 많기 때문에, 서브명령중 어떤 서브명령어가 긴 레이턴시인 경우(다른 서브명령어들이 전혀 긴 레이턴시 명령어가 아니더라도) 종래의 경우에는 전체 명령어가 저장되어야 하며, 즉 콘텍스트 전환되어야 하며 다른 스레드로부터 명령을 페치(fetch)하게 된다. 따라서, 프로세서가 콘텍스트 전환하는데 대부분의 시간을 소비하게 되지만 본 발명에 따라서 이러한 것이 해결된다. 즉, 본 발명에서 서브명령어는 프로그램 카운터에 의해서 어드레스된다. 그러므로, 긴 레이턴시 서브명령이 발생되면, 그 서브명령만이 저장, 즉 콘텍스트 전환되고 그 서브명령 대신 준비 스레드 블록, 혹은 준비 큐(ready queue)의 다른 스레드로부터 서브명령어를 가져와 대치시킨다. 이것은 콘텍스트 전환 사이클 수를 감소시키며 실행 유닛의 활용도를 높이는 것이다. 따라서, 본 발명에 따라 긴 레이턴시 서브명령에 관련한 콘텍스트만이 전환됨을 알 수 있고, 이것은 VLIW 프로세서와 복수 스레드 처리 구조와 결합에서 문제가 되는 콘텍스트 전환 시간을 절약할 수 있게 하는 것이며 콘텍스트 전환 부담을 줄이는 것이다.
본 발명에서는 이러한 동작을 실현하기 위해서 복수의 프로그램 카운터를 사용한다. 이에 대해서 본 발명의 바람직한 실시예를 보인 도 4를 참조하여 보다 상세히 설명한다.
작성된 소프트웨어는 프로세서에 의해서 수행될 수 있도록 컴파일링 과정을 거쳐 하나의 스레드가 된다. 복수의 스레드는 서로 독립한 별개의 것으로 이들 복수의 스레드는 수행되기 위해 먼저 메모리(4-2)에 저장된다. 도 4에서 메모리 유닛(4-2)에는 이에 로드된 복수의 스레드를 도식적으로 표현하고 있다.
메모리에 로드된 복수개의 활성 스레드로부터 서브명령이 하나의 명령어로 팩되어 명령 캐시(5)로 로드된다. 명령어 팩은 VLIW 프로세서의 본연의 동작에 따른 것이나, 전술한 바와 같이 본 발명은 이것으로 국한되는 것이 아님을 알아야 한다. VLIW 명령어는 어떤 프로그램의 명령어 개수를 감소시킬 수 있어 프로그램 수행에 효율적이며 본 발명에 따라 이 구조가 복수의 스레드를 처리하는 구조에 결합되어 있다.
상기 명령 캐시(5)는 프로세서가 메모리에 참조하는 시간을 줄이고 고속으로 명령을 수행하기 위한 또 하나의 메모리 장치로 간주될 수 있다. 명령 캐시(5)에는 활성 스레드들로부터 나온 복수의 명령어들을 포함하고 있고 이들은 수행유닛(4-1)에 의해서 처리될 것이다.
언급한 바와 같이 한 명령 내에서는 적어도 하나 이상의 서브명령을 포함하는데, 본 발명에 따라 서브명령을 각각 포함하는 각각의 명령은 실행 스레드를 가리키는 복수의 프로그램 카운터에 의해 이들 복수의 스레드로부터 정렬된다. 보다 구체적으로, 각각의 프로그램 카운터는 동일 스레드 혹은 다른 스레드로부터의 현재 처리되는 명령어를 지정하고 있다. 이들의 사용에 대해 후술한다.
본 발명에서는 m개의 레지스터 프레임(2-1)을 포함한다. 이 레지스터 프레임(2-1)은 도 3의 실행 스레드 블록(2-1)에 대응한다. 도 4와 같이 이들 m개의 레지스터 프레임(2-1)은 메모리(4-2)에 로드된 활성 스레드에 연락함과 아울러 콘텍스트 포인터(3)와도 연락하도록 배치되는데, 이들 각각의 레지스터 프레임은 프로그램 카운터(6) 및 프로세서 상태 등과 같은 관계된 스레드의 하드웨어 콘텍스트를 포함한다.
이때 본 발명에 따라서 복수의 (프로세서 상태(status) 레지스터를 포함하는)프로그램 카운터(6)는 각각의 콘텍스트들을 추적하여 콘텍스트 전환 부담을 제거할 수 있게 함으로써 프로세서의 수행능력을 개선한다. 이에 대해서 보다 상세히 설명한다.
하나의 프로그램 카운터만이 사용된 때, VLIW 방식에 의한 한 명령 내의 복수의 서브명령 중 한 개가 긴 레이턴시를 야기하고 있어도, 이들 팩된 n개 서브명령이 전체가 스위치, 즉 전환되어야 한다. 이것은 상당히 비효율을 낳는 것이다. 왜냐하면, 상기 팩된 전체 서브명령의 콘텍스트를 저장할 때 보다, 많은 하드웨어 및 시간이 필요하기 때문이다.
더욱이, 긴 레이턴시 서브명령의 발생 확률이 증가된다. 도 5에서 각각의 서브명령의 긴 레이턴시 발생확률이 0.3이더라도, 서브명령의 개수(n)가 1인 경우보다 5개인 경우 긴 레이턴시 발생 확률이 0.85로 증가됨을 보이고 있다. 도 6은 고정된 개개의 서브명령 발생확률에 대해서 긴 레이턴시 서브명령의 발생확률을 나타낸 것으로 도 5와 관련한다. 이것은 프로세서의 대부분의 시간을 명령 수행을 위해 사용하는 것이 아니라 높은 확률로 발생하는 긴 레이턴시 전환을 요하는 콘텍스트 전환에 소비함을 의미한다. 본 발명에서 이러한 문제가 복수의 프로그램 카운터 채용된 것에 의해 해결되고 있다.
본 발명에 따른 복수의 프로그램 카운터 방식에서, 각각의 프로그램 카운터는 대응하는 스레드에 관련된 콘텍스트를 추적하고 있다. 이때 언급한 바와 같이 긴 레이턴시 서브명령이 수행(기능) 유닛(4-1)에서 발생되면, 이를 포함하는 스레드를 추적하고 있는 프로그램 카운터를 사용하여 이 스레드만이 콘텍스트 전환되게 하고 이 프로그램 카운터는 또 다른 새로운 준비 스레드를 추적하도록 설정된다. 구체적으로는, 이때 긴 레이턴시를 야기한 스레드는 레지스터 프레임(2-1)으로부터 우선 이탈되게 배치된 후 대기(혹은 중지) 스레드 블록(2-2)에 넣어진다. 그리고 준비 스레드 블록(2-3)으로부터 다른 스레드가 레지스터 프레임 버퍼(2-1)에 할당되고, 이 새로운 스레드를 상기 프로그램 카운터가 다시 추적하기 시작한다.
그러면, 이 상태에서, 활성 스레드들은 실행 예정을 다시 맞추게 되고 이들 활성 스레드들로부터 설정된 새로운 서브명령들은 하나의 새로운 명령으로 팩되고, 이들은 명령 캐시(5)로 다시 넣어진다. 그리고, 각각의 활성 스레드는 각각의 프로그램 카운터들에 의해 추적되고 있으며, 이러한 과정은 반복된다.
이와 같은 방식에 의해서, 긴 레이턴시 서브명령의 발생확률은 이 서브명령을 포함하는 명령 내의 서브명령 개수와는 무관하게 된다. 더구나, 발견된 긴 레이턴시 서브명령을 포함하는 콘텍스트만이 이를 추적하고 있던 프로그램 카운터에 의해서 전환되기 때문에 콘텍스트 전환 시간을 줄일 수 있고 콘텍스트 전환 부담을 줄일 수 있다.
컴퓨터 시스템 구조에 있어서 종래의 프로세서가 어떤 결과가 나타날 때가지 아이들(idle) 상태에 있는 긴 레이턴시 혹은 명령처리시 긴 사이클수를 감소키는 것이 요구된다. 특히 멀티미디어 응용의 경우 이러한 효율적인 수행이 바람직하다.
스레드는 하나의 프로세서에서 인터리브된다. 긴 레이턴시 서브명령이 발생하면, 이 시간소비하는 서브명령이 완료될 동안 한편으로 유용한 작업이 수행된다. 본 발명에서는 VLIW 구조와 다수의 스레드 구조를 결합하여 수행효율을 극대화하도록 하는데, 더욱이 긴 레이턴시 서브명령이 효과적으로 처리된다.
전술한 바는 슈퍼스케일러 구조에도 그대로 적용 가능한 것에 유념해야 한다. 즉, VLIW 명령어에서 n개의 명령은 슈퍼스케일러 구조의 n-웨이(n-way)의 경우와 같은 것이다.
본 발명에 따라 VLIW 구조 혹은 슈퍼스케일러 구조와 다수의 스레드 구조를 결합한 프로세서에 있어서, 문제가 될 수 있는 긴 레이턴시 수행에 관련하여, 복수의 프로그램 카운터를 사용함으로써 긴 레이턴시만을 콘텍스트 전환하게 함으로써, 명령어 수행을 보다 효과적으로 행하게 한다.
본 발명에 따라 복수의 프로그램 카운터가 많은 프로세서 사이클을 필요로 하는 명령어의 콘텍스트 전환의 방식을 다른 여러 분야에도 마찬가지로 적용할 수 있음을 이 분야에 숙련된 자들이 알 것이다. 따라서, 본 발명의 범위 내의 다른 변경, 수정, 응용 등은 본 발명에 귀속되는 것이다.

Claims (8)

  1. 복수의 스레드(thread)를 처리하도록, 활성 스레드 블록, 준비 스레드 블록 및 대기 스레드 블록과 명령어 수행 수단을 갖는 데이터 처리 장치의 명령어 수행 방법에 있어서,
    상기 복수의 명령어를 갖는 수행될 활성 스레드(thread)들의 각 명령어를 처리하도록 각각의 스레드로부터 발행된 명령어를 서브명령어들로 하여 이를 하나의 명령어로서 처리하기 위한 명령어 조합 단계;
    상기 조합된 명령어를 상기 수행 수단에 의해 수행하며, 각각의 서브명령어를 제공한 각각의 스레드의 상태인 콘텍스트(context)를 복수의 프로그램 카운터로 추적하는 단계; 및
    상기 수행될 명령어 중 긴 레이턴시(latency) 서브 명령어를 제공한 스레드의 콘텍스트만을, 이를 추적하고 있는 프로그램 카운터에 의해 상기 대기 스레드 블록에 옮겨 콘텍스트 전환하고, 상기 준비 스레드 블록 내의 또 다른 스레드로부터 명령어를 서브명령어로 하여 또 다른 하나의 명령어를 조합하여 수행시키는 단계를 포함하는 것을 특징으로 하는 데이터 처리 장치의 복수의 스레드 처리 방법.
  2. 제 1 항에 있어서, 상기 콘텍스트는 프로그램 카운터 내용 및 프로세서 상태(status)를 포함하며, 상기 데이터 처리 장치는 상기 콘텍스트를 저장하기 위한 별도의 저장 수단을 포함하는 것을 특징으로 하는 데이터 처리 장치의 복수의 스레드 처리 방법.
  3. 제 2 항에 있어서, 상기 콘텍스트 전환될 스레드는 상기 별도의 저장 수단을 경유하여 상기 대기 스레드 블록 내에 옮겨지는 단계를 더 포함하는 것을 특징으로 하는 데이터 처리 장치의 복수의 스레드 처리 방법.
  4. 제 1 항에 있어서, 상기 조합된 명령어는 상기 수행 수단이 참조하기 위한 명령 캐시에 저장되는 단계를 더 포함하는 것을 특징으로 하는 데이터 처리 장치의 복수의 스레드 처리 방법.
  5. 제 1 항에 있어서, 상기 수행 수단은 복수의 기능 유닛 및 이들에 동작적으로 결합된 레지스터 파일을 포함하는 것을 특징으로 하는 데이터 처리 장치의 복수의 스레드 처리 방법.
  6. 복수의 스레드(thread)를 처리하도록, 활성 스레드 블록, 준비 스레드 블록 및 대기 스레드 블록과 명령어 수행 수단을 갖는 데이터 처리 장치에 있어서,
    상기 복수의 활성 스레드를 로딩하기 위한 메모리 수단;
    상기 복수의 명령어를 갖는 수행될 활성 스레드(thread)들의 각 명령어를 처리하도록 각각의 스레드로부터 발행된 명령어를 서브명령어들로 하여 이를 하나의 명령어로서 처리하기 위한 명령어 조합 수단;
    상기 조합된 명령어를 상기 수행 수단에 의해 수행하며, 각각의 서브명령어를 제공한 각각의 스레드의 상태인 콘텍스트(context)를 추적하기 위한 복수의 프로그램 카운터; 및
    상기 콘텍스트는 프로그램 카운터 내용 및 프로세서 상태(status)를 포함하며, 상기 콘텍스트를 저장하기 위한 저장 수단을 포함하며,
    상기 수행될 명령어 중 긴 레이턴시(latency) 서브 명령어를 제공한 스레드의 콘텍스트만을, 이를 추적하고 있는 프로그램 카운터에 의해 상기 대기 스레드 블록에 옮겨 콘텍스트 전환하고, 상기 조합 수단은 상기 준비 스레드 블록 내의 또 다른 스레드로부터 명령어를 서브명령어로 하여 또 다른 명령어로 조합하며, 상기 수행 수단은 상기 또 다른 명령어를 수행하는 것을 특징으로 하는 복수의 스레드 처리용 데이터 처리 장치.
  7. 제 6 항에 있어서, 상기 조합 수단에 의해 조합된 명령어를 상기 수행 수단이 참조하도록 된 명령 캐시를 더 포함하는 것을 특징으로 하는 복수의 스레드 처리용 데이터 처리 장치.
  8. 제 6 항에 있어서, 상기 수행 수단은 각각의 서브명령어를 처리하는 복수의 기능유닛 및 이에 동작적으로 결합된 레지스터 파일을 포함하는 것을 특징으로 하는 복수의 스레드 처리용 데이터 처리 장치.
KR1019980012337A 1998-04-08 1998-04-08 데이터 처리 장치 및 이의 복수의 스레드 처리 방법 KR100280460B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019980012337A KR100280460B1 (ko) 1998-04-08 1998-04-08 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US09/168,068 US6216220B1 (en) 1998-04-08 1998-10-08 Multithreaded data processing method with long latency subinstructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980012337A KR100280460B1 (ko) 1998-04-08 1998-04-08 데이터 처리 장치 및 이의 복수의 스레드 처리 방법

Publications (2)

Publication Number Publication Date
KR19990079641A KR19990079641A (ko) 1999-11-05
KR100280460B1 true KR100280460B1 (ko) 2001-02-01

Family

ID=19535964

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980012337A KR100280460B1 (ko) 1998-04-08 1998-04-08 데이터 처리 장치 및 이의 복수의 스레드 처리 방법

Country Status (2)

Country Link
US (1) US6216220B1 (ko)
KR (1) KR100280460B1 (ko)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6311266B1 (en) * 1998-12-23 2001-10-30 Cray Inc. Instruction look-ahead system and hardware
US6983350B1 (en) * 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6584522B1 (en) * 1999-12-30 2003-06-24 Intel Corporation Communication between processors
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
EP1132813A3 (en) * 2000-02-29 2003-12-17 Fujitsu Limited Computer with high-speed context switching
US7007153B1 (en) * 2000-03-30 2006-02-28 Agere Systems Inc. Method and apparatus for allocating functional units in a multithreaded VLIW processor
US6665791B1 (en) * 2000-03-30 2003-12-16 Agere Systems Inc. Method and apparatus for releasing functional units in a multithreaded VLIW processor
US7162615B1 (en) 2000-06-12 2007-01-09 Mips Technologies, Inc. Data transfer bus communication using single request to perform command and return data to destination indicated in context to allow thread context switch
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
JP3708853B2 (ja) * 2001-09-03 2005-10-19 松下電器産業株式会社 マルチプロセッサシステムおよびプログラム制御方法
JP3564445B2 (ja) * 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US7126952B2 (en) * 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US7895239B2 (en) 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
JP3813930B2 (ja) 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US7366884B2 (en) * 2002-02-25 2008-04-29 Agere Systems Inc. Context switching system for a multi-thread execution pipeline loop and method of operation thereof
US7471688B2 (en) * 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
US7275247B2 (en) * 2002-09-19 2007-09-25 International Business Machines Corporation Method and apparatus for handling threads in a data processing system
US7433307B2 (en) * 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
US7954102B2 (en) * 2002-11-13 2011-05-31 Fujitsu Limited Scheduling method in multithreading processor, and multithreading processor
JP4750350B2 (ja) 2003-03-13 2011-08-17 パナソニック株式会社 タスク切換装置、方法及びプログラム
US20040226011A1 (en) * 2003-05-08 2004-11-11 International Business Machines Corporation Multi-threaded microprocessor with queue flushing
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7441101B1 (en) 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US7360064B1 (en) 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US20050138333A1 (en) * 2003-12-19 2005-06-23 Samra Nicholas G. Thread switching mechanism
JP4202244B2 (ja) * 2003-12-22 2008-12-24 Necエレクトロニクス株式会社 Vliw型dsp,及びその動作方法
US7213099B2 (en) * 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
US7206922B1 (en) 2003-12-30 2007-04-17 Cisco Systems, Inc. Instruction memory hierarchy for an embedded processor
US7398347B1 (en) * 2004-07-14 2008-07-08 Altera Corporation Methods and apparatus for dynamic instruction controlled reconfigurable register file
US8230423B2 (en) * 2005-04-07 2012-07-24 International Business Machines Corporation Multithreaded processor architecture with operational latency hiding
US7596668B2 (en) * 2007-02-20 2009-09-29 International Business Machines Corporation Method, system and program product for associating threads within non-related processes based on memory paging behaviors
US9367321B2 (en) * 2007-03-14 2016-06-14 Xmos Limited Processor instruction set for controlling an event source to generate events used to schedule threads
US8185722B2 (en) * 2007-03-14 2012-05-22 XMOS Ltd. Processor instruction set for controlling threads to respond to events
US7779234B2 (en) * 2007-10-23 2010-08-17 International Business Machines Corporation System and method for implementing a hardware-supported thread assist under load lookahead mechanism for a microprocessor
US7779233B2 (en) * 2007-10-23 2010-08-17 International Business Machines Corporation System and method for implementing a software-supported thread assist mechanism for a microprocessor
US8806491B2 (en) * 2007-12-31 2014-08-12 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
GB2503438A (en) * 2012-06-26 2014-01-01 Ibm Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
US9645802B2 (en) * 2013-08-07 2017-05-09 Nvidia Corporation Technique for grouping instructions into independent strands
KR102423768B1 (ko) * 2017-09-26 2022-07-21 삼성전자주식회사 복수의 스레드들에 포함된 복수의 명령어들을 처리하기 위한 방법 및 그 전자 장치

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297274A (en) * 1991-04-15 1994-03-22 International Business Machines Corporation Performance analysis of program in multithread OS by creating concurrently running thread generating breakpoint interrupts to active tracing monitor
JP2908598B2 (ja) * 1991-06-06 1999-06-21 松下電器産業株式会社 情報処理装置
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5799188A (en) * 1995-12-15 1998-08-25 International Business Machines Corporation System and method for managing variable weight thread contexts in a multithreaded computer system
US6073159A (en) * 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor

Also Published As

Publication number Publication date
KR19990079641A (ko) 1999-11-05
US6216220B1 (en) 2001-04-10

Similar Documents

Publication Publication Date Title
KR100280460B1 (ko) 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6223208B1 (en) Moving data in and out of processor units using idle register/storage functional units
US9753729B2 (en) System for selecting a task to be executed according to an output from a task control circuit
US7134002B2 (en) Apparatus and method for switching threads in multi-threading processors
EP1582980B1 (en) Context switching method, device, program, recording medium, and central processing unit
EP1839146B1 (en) Mechanism to schedule threads on os-sequestered without operating system intervention
US7500240B2 (en) Apparatus and method for scheduling threads in multi-threading processors
US9207995B2 (en) Mechanism to speed-up multithreaded execution by register file write port reallocation
JP5263844B2 (ja) パイプラインプロセッサにおける長い待ち時間命令の処理
EP1368732B1 (en) Digital signal processing apparatus
US8776079B2 (en) Task processor
US20040216101A1 (en) Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US20040215932A1 (en) Method and logical apparatus for managing thread execution in a simultaneous multi-threaded (SMT) processor
KR100940956B1 (ko) 다중 스레드 초장 명령어 프로세서 및 명령 처리 방법
EP1658563A1 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
JP2007200288A (ja) 実行スレッドをグループ化するためのシステム及び方法
US8327379B2 (en) Method for switching a selected task to be executed according with an output from task selecting circuit
WO2005022384A1 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
US7761688B1 (en) Multiple thread in-order issue in-order completion DSP and micro-controller
JP2001249808A (ja) 情報処理装置
CA1214568A (en) Controller for controlling access to a plurality of records that can be accessed and changed by several independent processors
JP3767529B2 (ja) マイクロプロセッサ
JP2008269597A (ja) タスク処理装置
Lin et al. Strategies for Implementing a Multithreaded Shared Pipeline Processor
JPH04184532A (ja) コンピュータシステム

Legal Events

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

Payment date: 20051021

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee