KR20010095073A - 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품 - Google Patents

다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품 Download PDF

Info

Publication number
KR20010095073A
KR20010095073A KR1020010016397A KR20010016397A KR20010095073A KR 20010095073 A KR20010095073 A KR 20010095073A KR 1020010016397 A KR1020010016397 A KR 1020010016397A KR 20010016397 A KR20010016397 A KR 20010016397A KR 20010095073 A KR20010095073 A KR 20010095073A
Authority
KR
South Korea
Prior art keywords
instruction
instructions
packet
functional units
processor
Prior art date
Application number
KR1020010016397A
Other languages
English (en)
Inventor
베렌바움앨렌데이빗
헤인쯔네빈
제레미아센토르이
카시라스스테파노스
Original Assignee
추후기재
에이저 시스템즈 가디언 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 추후기재, 에이저 시스템즈 가디언 코포레이션 filed Critical 추후기재
Publication of KR20010095073A publication Critical patent/KR20010095073A/ko

Links

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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

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)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

다중 스레드 초장 명령어(VLIW) 프로세서로 기능 유닛을 배정하는 방법 및 장치가 개시되어 있다. 본 발명은 종래의 초장 명령어(VLIW) 아키텍쳐와 종래의 다중 스레드 아키텍쳐의 기술을 혼용하여 작업 부하 및 개별 프로그램내에서의 실행 시간을 감소시킨다. 본 발명은 명령어 패킷 분할을 이용하여 종래의 다중 스레드 아키텍쳐로 손실된 효율성을 회복시킨다. 명령어 패킷 분할에 의해, 명령어 다발은 1 사이클에 부분적으로 출력되며, 다발의 나머지는 다음 사이클 동안에 출력된다. 배정 하드웨어는 한번에 명령어 패킷내의 모든 명령어를 배정하기 보다는, 이용가능한 기능 유닛에 일치할 수 있는 것만큼 많은 각각의 패킷으로부터의 명령어를 할당한다. 기능 유닛에 배정될 수 없는 명령어는 동작 준비 레지스터에서 보유하게 된다. 다음 사이클에서, 모든 명령어가 기능 유닛으로 출력되는 명령어 패킷은 그들의 스레드 명령어 스트림으로부터 갱신되며, 가지고 있는 명령어와 함께 명령어 패킷이 유지된다. 기능 유닛 배정 로직은 보유한 명령어 패킷으로부터 출력되지 않았던 명령어와, 새롭게 로딩된 명령어로부터의 명령어를 할당할 수 있다.

Description

다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및 그 제품{METHOD AND APPARATUS FOR SPLITTING PACKETS IN A MULTITHREADED VLIW PROCESSOR}
관련 출원
본 발명은 대리인 서류 번호(Berenbaum 7-2-3-3)의 미국 특허 출원, "Method and Apparatus for Allocating Functional Units in a Multithreaded Very Large Instruction Word(VLIW) Processor"과, 대리인 서류 번호(Berenbaum 8-3-4-4)의 미국 특허 출원, "Method and Apparatus for Splitting Packets in a Multithreaded Very Large Instruction Word(VLIW) Processor"와, 대리인 서류 번호(Berenbaum 10-5-6-6)의 미국 특허 출원, "Method and Apparatus for Identifying Splittable Packets in a Multithreaded Very Large Instruction Word(VLIW) Processor"와 관련되어 있으며, 각각은 본 발명의 양수인에게 양도되어 본 발명과 동일자로 제출되었으며, 본 명세서에서는 참고로 포함되어 있다.
본 발명은 다중 스레드 프로세서(multithreaded processor)에 관한 것이며, 보다 상세하게는, 이러한 다중 스레드 프로세서에서 패킷을 분할하는 (splitting) 방법 및 장치에 관한 것이다.
컴퓨터 아키텍쳐 설계는 보다 신속하게 작업부하를 종료하려고 시도하고 있다. 프로그램 병렬 계산을 이용하기 위한 다수의 아키텍쳐 설계가 제안되거나 제시되어 왔다. 일반적으로, 한번에 하나 이상의 연산을 출력할 수 있는 아키텍쳐는 한번에 하나의 연산을 출력할 수 있는 아키텍쳐 보다 빠르게 프로그램을 실행할 수 있다. 가장 최근의 컴퓨터 아키텍쳐는 하나이상의 연산을 동시에 결과로서 나오게 하여 프로그램의 연산 속도를 증가시키는 방법으로 진행되고 있다. 도 1은 종래의 마이크로프로세서 아키텍쳐(100)를 도시하고 있다. 보다 구체적으로, 마이크로프로세서(100)는 프로그램 카운터(Program Counter : PC)(110), 레지스터 세트(120) 및 다수의 기능 유닛(FU)(130-N)을 포함하고 있다. 중복의 기능 유닛(FU)(130-1 내지 130-N)은 충분한 하드웨어 리소스를 예시적인 마이크로프로세서 아키텍처(100)에 제공하여 다수의 대응 연산을 병렬로 수행한다.
프로그램의 병렬 계산을 이용하는 아키텍쳐는 한번에 하나 이상의 기능 유닛에 피연산자를 출력하여 프로그램 실행 속도를 증가시킨다. 수퍼 스칼라 프로세서, 초장 명령어(VLIW) 프로세서 및 다중 스레드 프로세서를 포함하여, 병렬 아키텍쳐를 가진 다수의 아키텍쳐가 제안되거나 제시되어 왔으며, 이러한 프로세서 각각은 도 2, 도 4, 및 도 5와 결부시켜 아래에 설명되어 있다. 일반적으로, 수퍼 스칼라 프로세서는 동작시에 하드웨어를 이용하여 단일 명령 스트림중의 다수의 연산이 단독 연산인지 여부를 동적으로 판단하고, 그러하다면, 병렬 알고리즘 및 로직 유닛(ALU)을 이용하여 그 명령어를 실행한다. 소스 피연산자중 어느 피연산자도 선행하는 어느 명령어의 수신지 피연산자에 의존하지 않는 경우에, 두 개의 명령어는독립 명령어라고 말할 수 있다. 초장 명령어(VLIW) 프로세서는 컴파일링 동안에 명령어를 평가하고, 병렬 실행을 위해서, 관련 정보에 의거하여 적당히 연산을 그룹화한다. 한편, 다중 스레드 프로세서는 단일 명령어 스트림내에서 병렬 계산을 이용하려고 하기 보다는, 하나 이상의 명령어 스트림을 병렬로 실행한다.
도 2에 도시된 수퍼 스칼라 프로세서 아키텍쳐(200)는, 각각의 기능 유닛이 유효 데이터를 가진 경우에, 독립적으로 연산하는 다수의 기능 유닛을 가지고 있다. 예를 들어, 도 2에 도시된 바와 같이, 수퍼 스칼라 프로세서(200)는 산술 및 로직 유닛(ALU)으로서 구체화된 각각의 기능 유닛이 동시에 결과치를 계산할 수 있는 3개의 기능 유닛을 가지고 있다. 수퍼 스칼라 프로세서(200)는 명령어 페치 블록(210)을 가진 프런트엔드부(208), 명령어 디코드 블록(215), 및 명령어 시퀀스 유닛(220)(출력 블록)을 포함하고 있다. 명령어 페치 블록(210)은 단일 스레드 명령어 스트림의 입력 대기열(queue)(205)로부터 명령어를 획득한다. 명령어 시퀀스 유닛(220)은 알고 있는 방식으로, 이용가능한 산술 및 로직 유닛(ALU)(230-N)에서 동시에 실행될 수 있는 독립 명령어를 식별한다. 정밀 블록(250)에 의해 명령어가 완성되고, 또한, 레지스터 세트(240)에 결과를 역으로 기록하기 위해서 버퍼링하고 재순서화한다.
도 3에 도시된 프로그램 단편(310)에서, 위치(L1, L2, L3)에서의 명령어는, 명령어(L2, L3)에서의 소스 피연산자의 어느 피연산자도 앞서는 명령어의 수신지 피연산자에 의존하지 않는다는 점에서, 독립적인 명령어이다. 프로그램 카운터(PC)가 위치(L1)에 세트되어 있을 때, 명령어 시퀀스 유닛(220)은 명령어 스트림에서예측하고, L2 및 L3의 명령어가 독립적이다고 검출하여, 모두 3개의 명령어가 이용가능한 기능 유닛(230-N)으로 동시에 출력될 수 있다. 수퍼 스칼라 프로세서에 대해 보다 상세히 설명하기 위해서, 예를 들어, 본 명세서에서 참고가 되는 James.E. Smith와 Gurindar. S. Sohi, IEEE(1995년 12월)의 "The Microarchitecture of Superscalar Processors"를 참조한다.
상술한 바와 같이, 도 4에 도시된 초장 명령어(VLIW) 프로세서(400)는 작동시에 병렬 계산을 동적으로 검출하기 위해서 하드웨어를 이용하기 보다는, 단일 명령어 스트림으로부터 컴파일링 시간에 데이터 병렬 계산을 검출하기 위해 소프트웨어에 의존한다. 도 3의 코드 단편(310)을 생성하는데 사용되었던 소스 코드가 주어졌을 때, VLIW 컴파일러는 명령어의 독립성을 검출하여, 모두 3개의 연산으로 구성된 단일의 초장 명령어를 구성할 것이다. 동작시에, 프로세서(400)의 출력 로직은 데이터를 모든 이용가능한 기능 유닛(430-N)으로 보내면서, 일 사이클에 이러한 광폭의 명령어를 출력할 것이다. 도 4에 도시된 바와 같이, 초장 명령어(VLIW) 프로세서(400)는 이전의 그룹 명령어(410)를 메모리로부터 얻게 되는 통합형 페치/디코드 블록(420)을 포함하고 있다. 초장 명령어(VLIW) 프로세서에 대해 보다 상세히 설명하기 위해서, 예를 들어, 본 명세서에서 참고가 되는 Burton J. Smith, SPIE Real Time Signal Processing IV, 241-248(1981)의 "Architecture and Application of the HEP Multiprocessor Computer System"를 참조한다.
예를 들어, Robert P.Colwell 외 다수, IEEE Transactions on Computers(1988년 8월)의 "A VLIW Architecture for a Trace Scheduling Compiler"에 제시되어 있는 한 유형의 VLIW 프로세서는, 사전정의된 필드가 데이터를 모든 기능 유닛(430-N)으로 한번에 보내는 고정폭의 명령어를 이용한다. 광폭의 명령어에서 명시되는 모든 연산이 완료될 때, 프로세서는 새로운 다중 연산 명령어를 출력한다. 텍사스 달라스 소재의 Texas Instruments의 C6x 프로세서와 같은 최근의 몇몇 VLIW 프로세서와, 캘리포니아 산타 클라라 소재의 Intel Corp의 EPIC IA-64 프로세서는 그룹화된 하나 이상의 연산을 포함하는 가변 길이의 명령어 패킷을 이용한다.
도 5에 도시된 다중 스레드 프로세서는 단일 명령어 스트림내에서 병렬 계산을 이용하기 보다는, 하나 이상의 명령어 스트림을 병렬로 실행하여 성능을 향상시킨다. 도 5에 도시된 다중 스레드 프로세서(500)는 프로그램 카운터(510-N), 레지스터 세트(520-N) 및 기능 유닛(520-N)을 포함하며, 각각은 대응하는 명령어 스트림(N)에 전용으로 사용된다. 대안으로서, 다중 스레드 프로세서(500)는 일부 레지스터 세트(520-N) 및 프로그램 카운터(510-N)와 함께 단일 기능 유닛(530)을 이용하였다. 이러한 대안의 다중 스레드 프로세서(500)는 프로세서(500)가 1 또는 2 사이클에 하나의 프로그램 카운터/레지스터 세트(510-N/520-N)에서 다른 프로그램 카운터/레지스터 세트(510-N/520-N)로 명령어 출력을 변경할 수 있도록 설계되어 있다. LOAD 명령어와 같은 장길이의 대기 명령어는 다른 명령어 스트림으로부터 보다 짧은 연산과 오버랩될 수 있다. 워싱턴 시애틀 소재의 Tera Computer Company의 TERA MTA 아키텍쳐는 이러한 형태의 일 예이다.
동시 다중 스레드 동작으로 불리우는 다중 스레드 아키텍쳐(500)를 확장부는도 2와 결부시켜 상술한 수퍼 스칼라 아키텍쳐를, 도 5와 결부시켜 상술한 다중 스레드 설계와 결합시킨다. 동시 다중 스레드 기술을 상세히 설명하기 위해서, 예를 들어, 본 명세서에서 참고로 하는 Dean Tullsen 외 다수, 컴퓨터 아키텍쳐에 대한 제 22 회 국제 심포지움, 392-403(Santa Margherita Ligure, Italy, June 1995) "Simultaneous Multithreading : Maximizing On-Chip Parallelism"를 참조한다. 일반적으로, 동시 다중 스레드 동작 아키텍쳐에서, 기능 유닛 풀이 존재하며, 이들 일부는 다수의 프로그램 카운터/레지스터 세트 구조중 하나로부터 출력될 수 있는 명령어에 동적으로 할당될 수 있다. 다수의 프로그램 스레드중에서 기능 유닛을 공유함으로써, 동시 다중 스레드 아키텍쳐는 도 5에 도시된 것보다 효율적으로 하드웨어를 사용할 수 있게 한다.
동시 다중 스레드 아키텍쳐의 혼합형 방법이 수퍼 스칼라 아키텍쳐 또는 다중 스레드 아키텍쳐의 개별 방법보다 개선된 효율성을 제공하지만, 동시 다중 스레드 아키텍쳐는 잠재 병렬 계산을 검출하기 위해서, 명령어 스트림을 동적으로 조사하는 정교한 출력 로직을 여전히 필요로 한다. 또한, 연산하는데 다중 사이클이 걸리는 경우에, 이용가능한 다른 연산 소스가 존재하지 않기 때문에, 명령어 출력 로직은 정지 상태가 된다. 종래의 다중 스레드 프로세서는 최광폭의 잠재 출력을 수용하도록 설계되어 있다. 그러므로, 두 개의 명령어 스트림이 독립적인지 여부를 동적으로 판단할 필요가 없는 다중 스레드 프로세서 아키텍쳐가 필요하다. 또한, 동시 다중 스레드 동작을 제공하는 다중 스레드 아키텍쳐가 필요하다. 또한, 이러한 다중 스레드 프로세서로 기능 유닛을 실시간으로 배정하는 다중 스레드 아키텍쳐가 필요하다.
일반적으로, 다중 스레드의 초장 명령어(VLIW) 프로세서로 명령어를 처리하는 방법과 장치가 개시되어 있다. 본 발명은 종래의 초장 명령어(VLIW) 아키텍쳐의 기술과 종래의 다중 스레드 아키텍쳐의 기술을 혼합한다. 본 발명의 혼합형 아키텍쳐는 작업 부하와, 개별 프로그램내에서의 실행 시간을 감소시킨다. 본 발명은 명령어 패킷 분할을 이용하여 종래의 다중 스레드 아키텍쳐에서 소실된 일부 효율성을 회복시킨다. 명령어 패킷 분할에 의해, 명령어 번들(bundle)은, 다음 사이클동안에 번들의 나머지가 출력되는 상태에서, 일 사이클로 부분적으로 출력된다. 따라서, 본 발명은 하드웨어 리소스(기능 유닛 등)를 보다 크게 이용하며, 다중 스레드를 포함하는 작업 부하에 걸리는 경과 시간을 보다 낮게 한다.
명령어 패킷 분할은 모든 명령어 스레드에 걸쳐서 처리량을 증가시키며, 기능 유닛이 휴지 상태가 되는 사이클 수를 감소시킨다. 본 발명의 배정 하드웨어는 한번에 명령어 패킷내의 모든 명령어를 배정하기 보다는, 이용가능한 기능 유닛에 일치시킬 수 있는 것과 같은 각각의 패킷으로부터의 다수 명령어를 할당한다. 기능 유닛에 배정될 수 없는 명령어는 작동 준비(ready-to-run) 레지스터에 포함된다. 다음 사이클에서, 모든 명령어가 기능 유닛으로 출력된 명령어 패킷은 그들의 스레드 명령어 스트림으로부터 갱신되며, 확보되는 명령어를 가진 명령어 패킷이 포함된다. 기능 유닛 배정 로직은, 포함된 명령어 패킷으로부터 출력되지 않은 명령어와, 새롭게 로딩된(newly-loaded) 명령어 패킷으로부터의 명령어를 할당할 수 있다.
본 발명은 컴파일러를 이용하여 다중 스레드 프로세서 아키텍쳐로 병렬 계산을 검출한다. 따라서, 단일 스레드 VLIW 프로세서와 유사한 방식으로, 복수의 명령어를 단일 프로그램 시퀀서로부터 출력함으로써, 그리고, 동적인 판단이 필요하지 않기 때문에, 동시 다중 스레드에서와 동일하지만 출력 로직의 복잡성이 감소된 다중 프로그램 시퀀서를 지원함으로써, 프로그램 병렬 계산을 이용하는 다중 스레드 VLIW 아키텍쳐가 개시되어 있다.
본 발명의 특징 및 장점과, 본 발명에 대한 보다 충분한 이해는 다음의 상세한 설명과 도면을 참조하여 얻을 수 있다.
도 1은 종래의 마이크로프로세서 아키텍쳐를 도시하는 도면,
도 2는 종래의 수퍼 스칼라 프로세서 아키텍쳐의 개략 블록도,
도 3은 연산의 독립성을 설명하는 프로그램 단편을 도시하는 도면,
도 4는 종래의 초장 명령어(VLIW) 프로세서 아키텍쳐의 개략 블록도,
도 5는 종래의 다중 스레드 프로세서의 개략 블록도,
도 6은 본 발명에 따른 다중 스레드 VLIW 프로세서를 도시하는 도면,
도 7a는 다중 스레드 프로세서에 대한 종래의 파이프라인을 도시하는 도면,
도 7b는 본 발명에 따른 다중 스레드 프로세서에 대한 파이프라인을 도시하는 도면,
도 8은 도 7b의 배정 단계 구현의 개략 블록도.
도 9는 스레드 B와 C가 스레드 A보다 상위의 우선 순위를 가진 종래의 다중 스레드 구현에 대한 3개의 스레드(TA-TC)의 실행을 도시하는 도면,
도 10a 및 도 10b는 본 발명에 따른 명령어 패킷 분할의 동작을 도시하는 도면.
도면의 주요 부분에 대한 부호의 설명
110 : 프로그램 카운터 120 : 레지스터 세트
210 : 페치 430-1 : 기능 유닛
도 6은 본 발명에 따른 다중 스레드 VLIW 프로세서(600)를 도시하고 있다. 도 6에 도시된 바와 같이, 3개의 명령어 스레드, 즉, 스레드 A(TA), 스레드 B(TB) 및 스레드 C(TC)가 있으며, 각각은 명령어 수 n에서 연산한다. 또한, 예시적인 다중 스레드 VLIW 프로세서(600)는 9개의 기능 유닛(620-1 내지 620-9)을 포함하며, 하나의 스레드(TA-TC)에 독립적으로 할당될 수 있다. 예시적인 3개의 스레드(TA-TC)에 걸친 명령어의 수는 9개이며, 활용가능한 기능 유닛(620)의 예시적인 수도 역시 9개이기 때문에, 모든 3개의 스레드(TA-TC)로부터의 명령어 각각은 1 사이클에 명령어 패킷을 출력할 수 있으며, 다음 사이클에서 명령어(n+1)로 이동한다.
일반적으로, 명령어와 명시된 연산 사이에는 일대일 대응 관계가 있다. 따라서, 이러한 용어는 상호교환가능하게 사용될 수 있다. 또한, 명령어가 복수의 연산을 나타내는 경우에, 다중 스레드 VLIW 프로세서(600)가 하나 이상의 복수 연산 기능 유닛(620)을 포함하여 복수의 연산을 나타내는 명령어를 실행한다는 것을 가정하게 된다. 복수의 연산을 나타내는 명령어가 처리되는 아키텍쳐의 일 예에는 복합 명령 세트 컴퓨터(CISC)가 있다.
본 발명은 명령어를 기능 유닛에 배정하여, 동일 사이클에서 복수의 VLIW 명령어를 복수의 기능 유닛으로 출력한다. 본 발명의 배정 메카니즘은 기능 유닛으로 인수가 전송되기 바로 직전의 파이프라인 단계를 차지한다. 따라서, 도 7a는, 메모리로부터 패킷을 획득하는 페치 단계(710), 필요한 기능 유닛과 레지스터가 그 페치 명령어에 대하여 식별되는 디코드 단계(720), 및 명시된 연산이 수행되고 결과가 처리되는 실행 단계(730)로 구성된 종래의 파이프라인(700)을 도시하고 있다.
따라서, 종래의 VLIW 아키텍쳐에서, (최대) K개의 명령어를 가진 패킷은 각각의 사이클에 페치된다(페치 단계(710)에서). (최대) K개의 명령어는 디코드 단계(720)에서 디코딩되어 (최대) K개의 기능 유닛(FU)으로 전송된다. 명령어에 대응하는 레지스터가 판독되며, 기능 유닛은 레지스터를 통해 연산하며, 결과치는 실행 단계(730)에서 역으로 레지스터에 기록된다. 최대 3개의 레지스터가 판독될 수 있으며 최대 1개의 레지스터가 기능 유닛 마다 기록될 수 있다고 가정할 수 있다.
도 7b는 본 발명에 따른 파이프라인(750)을 도시하고 있으며, 여기서, 도 8과 결부시켜 아래에 추가로 설명되는 배정 단계(780)는 다중 스레드 VLIW 프로세서의 구현을 위해 추가되어 있다. 일반적으로, 배정 단계(780)는 연산을 서로 그룹화하여 효율성을 최대화하는 방법을 결정한다. 따라서, 파이프라인(750)은 최대 N개의 패킷을 메모리로부터 획득하게 되는 페치 단계(760), 기능 유닛과 레지스터가 페치 명령어(최대 N*K 명령어)에 대하여 식별되는 디코드 단계(770), 적절한 명령어가 선택되어 FU로 할당되는 배정 단계(780), 및 명시된 연산이 수행되어 결과가 처리되는 실행 단계(790)를 포함하고 있다.
본 발명의 다중 스레드 VLIW 프로세서(600)에서, 최대 N개의 스레드가 하드웨어에서 지원된다. N개의 스레드 콘텍스트(context)가 존재하며, 단일 스레드의 모든 가능한 레지스터와 필요한 모든 상태 정보를 포함한다. 다중 스레드 VLIW 프로세서(600)는 M개의 기능 유닛을 가지고 있으며, 여기서, M은 K보다 크거나 동일하다. 도 7b에 도시된 변경 파이프라인 단계(750)는 다음과 방식으로 진행한다. 각각의 사이클에서, 최대 N개의 패킷(각각은 최대 K개의 명령어를 포함)은 페치 단계(760)에서 페치된다. 디코드 단계(770)는 최대 N*K 개의 명령어를 디코딩하고, 판독 및 기록된 레지스터 및 그 조건을 결정한다. 배정 단계(780)는 (최대) N*K 명령어 중 M개를 선택하여, 그 명령어를 M개의 기능 유닛으로 전송한다. 각각의 기능 유닛은 최대 3개의 레지스터를 판독하며 1개의 기능 유닛을 기록할 수 있다고 가정된다. 실행 단계(790)에서, 최대 M개의 기능 유닛은 3*M개의 레지스터를 판독하며 최대 M개의 레지스터를 기록한다.
배정 단계(780)는 단계(760) 및 단계(770)에서 페치되고 디코딩되었던 (최대) N*K개의 명령어중에서 적당한 M개의 명령어를 실행을 위해 선택한다. 선택 기준은 스레드 우선 순위와 리소스 이용가능성 중 하나 또는 둘다 이다. 스레드 우선 순위 기준에 있어서는, 상이한 스레드가 상이한 우선 순위를 가질 수 있다. 배정 단계(780)는 구현되는 우선 순위 책정에 따라 최상위 우선 순위를 가진 스레드에 속하는 실행용 패킷(또는 패킷으로부터의 명령어)을 선택하여 전송한다. 다수의 우선 순위 책정이 구현될 수 있다. 예를 들어, N개의 콘텍스트(N개의 하드웨어)를 지원하는 다중 스레드 VLIW 프로세서는 N개의 우선 순위 레벨을 가질 수 있다. 프로세서의 최상위 우선 순위 스레드는 다른 스레드 앞에 배정된다. 동일 우선 순위를 가진 스레드중에서, 배정을 위해 최장으로 대기했던 스레드가 우선 순위가 된다.
리소스 이용가능성의 기준하에서는, 패킷(최대 K개의 명령어를 가진)은 패킷에 의해 요구되는 리소스가 다음 사이클 동안에 이용가능할 경우에만 배정될 수 있다. 기능 유닛은 배정 단계(780)에서 그 이용가능성을 기록한다.
도 8은 배정 단계(780) 구현의 개략 블록도이다. 도 8에 도시된 바와 같이, 배정 단계(780)를 구현하는데 필요한 하드웨어는 우선 순위 인코더(810)와 두 개의 클로스바 스위치(820, 830)를 포함하고 있다. 일반적으로, 우선 순위 인코더(810)는 이용가능한 기능 유닛의 상태와, 각각의 스레드에서의 복수의 연산의 상태를 조사한다. 우선 순위 인코더(810)는 실행할 패킷을 선택하고 제 1 클로스바 스위치(820)를 설정하여, 적당한 레지스터 콘텍스트가 다음 사이클의 시작부분에서 기능 유닛으로 전송된다. 우선 순위 인코더(810)의 출력은 제 1 크로스바 스위치(820)를 구성하여, 선택된 스레드로부터의 데이터를 적당한 기능 유닛으로 라우팅한다. 예를 들어, 레지스터 식별자(스레드 식별자를 포함)를 기능 유닛으로전송함으로써, 기능 유닛이 개별 데이터 네트워크를 통해 레지스터 콘텍스트를 판독하게 함으로써, 그리고 다음 사이클의 시작부분에서 기능 유닛에 의해 판독되는 래치로 적당한 레지스터 콘텍스트를 이동시키기 위해서 크로스바 스위치(810)를 이용함으로써 실행될 수 있다.
페치 단계(760)(도 7b)에 의해 페치되는 N개의 패킷 중에서, 우선 순위 인코더(810)는 우선 순위 및 리소스 이용가능성에 따라서 실행용의 최대 N개의 패킷을 선택한다. 환원하면, 우선 순위 인코더는 실행을 위해 이용불가능한 리소스는 요청하지 않는 최상위 우선 순위 스레드를 선택한다. 그 다음, 제 1 크로스바 스위치(810)를 설정한다. 입력 크로스바 스위치(810)는 최대 3K*N개의 입력을 최대 3*M개의 출력으로 라우팅한다. 제 1 크로스바 스위치(810)는 각각의 패킷의 레지스터 식별자(또는 적당한 레지스터의 콘텍스트)를 적당한 기능 유닛으로 전송할 수 있다.
동일 사이클에서 선택될 수 있는 스레드는 최대 N개이며, 각각의 스레드는 최대 K개의 명령어의 패킷을 출력할 수 있으며, 각각의 명령어는 최대 3개의 레지스터를 판독할 수 있기 때문에, 선택할 수 있는 레지스터 식별자는 3K*N개이다. 단지 M개의 기능 유닛이 있고, 각각의 기능 유닛은 하나의 명령어를 수용할 수 있기 때문에, 선택되는 식별자 레지스터는 단지 3M개이다. 그러므로, 크로스바 스위치는 레지스터 식별자(또는 레지스터 콘텍스트)의 3K*N에서 3M으로의 라우팅을 구현한다.
출력 크로스바 스위치(830)는 M개의 입력을 N*M 또는 N*K 출력으로 라우팅한다. 제 2 크로스바 스위치(830)는 적당한 시간에 설정되어 기능 유닛의 결과를 적당한 레지스터로 역으로 전송한다. 제 2 크로스바 스위치(830)는 레지스터 식별자(스레드 식별자를 포함)를 기능 유닛으로 전송함으로써 개별 네트워크로서 구현될 수 있다. 기능 유닛이 결과를 계산할 때, 기능 유닛은 그 결과를 주어진 레지스터 식별자로 라우팅한다. 최대 N개의 스레드로 라우팅되어야 하는 M개의 결과가 있다. 각각의 스레드는 최대 K개의 결과를 수용할 수 있다. 제 2 크로스바 스위치(830)는 M개의 결과를 N*K개의 가능 수신지(possible destination)로 라우팅한다. 제 2 크로스바 스위치(830)는 모두 N개의 레지스터 파일에 접속되는 M개의 버스로서 구현될 수 있다. 이러한 경우에, N*M개의 가능 수신지로는 M개의 결과가 라우팅된다(레지스터 파일이 M개의 결과를 수용할 수 있을 때).
종래의 단일 스레드 VLIW 아키텍쳐에서, 명령어 패킷내의 모든 연산은 동시에 출력된다. 패킷을 출력하는데 이용가능한 기능 유닛이 항상 충분하게 존재한다. 연산에 다중 사이클이 걸리는 경우에, 명령어 출력 로직은, 이용가능한 다른 연산 소스가 없기 때문에, 휴지 상태가 된다. 한편, 본 발명에 따른 다중 스레드 VLIW 프로세서에서는 이러한 제한이 적용되지 않는다.
도 9는 스레드 B와 C가 스레드 A보다 상위 우선 순위를 가진 종래의 다중 스레드 구현에 대한 3개의 스레드(TA-TC)의 실행을 설명하고 있다. 스레드 A는 최하위 우선 순위로 동작하기 때문에, 그 동작은 마지막으로 할당될 것이다. 도 9에 도시된 바와 같이, 5개의 기능 유닛(920)은 상위 우선 순위의 스레드 TB와 TC의 현 사이클에서 5개의 연산을 실행하는데 할당된다. 스레드 A는 4개의 연산을 가지고있지만, 단지 2개의 기능 유닛(920)만 이용가능하다. 따라서, 스레드 A는 종래의 다중 스레드 구현에 있어서 휴지 상태가 된다.
모든 스레드에 대한 처리량을 최대로 하기 위해서, 그리고, 기능 유닛이 정지 상태가 되는 사이클 수를 최소화하기 위해서, 본 발명은 명령어 패킷 분할을 이용한다. 한번에 모든 연산을 명령어 패킷에 배정하는 대신에, 도 8과 결부시켜 상술한 배정 하드웨어(780)는 이용가능한 기능 유닛과 일치할 수 있는 것과 같이 다수의 연산을 각각의 패킷으로부터 할당한다. 일치하지 않을 수 있는 연산은 작동 준비 레지스터(850)(도 8)에서 보유하게 된다. 다음 사이클에서, 모든 연산이 기능 유닛으로 출력되는 명령어 패킷은 그들의 스레드 명령어 스트림으로부터 갱신되며, 가지고 있는 연산과 함께 명령어 패킷을 가지게 된다. 기능 유닛 배정 로직(780)은 보유한 명령어 패킷으로부터 출력되지 않았던 연산과 새롭게 로딩된 명령어 패킷으로부터 연산을 할당할 수 있다.
본 발명에 따른 명령어 패킷 분할 연산이 도 10a 및 도 10b에 예시되어 있다. 도 10a에서, 3개의 스레드가 존재하며, 각각의 스레드는 위치(n)로부터의 명령어 패킷이 사이클(x)의 초기에 동작할 준비를 한다. 스레드 A는 최하위 우선 순위로 동작하며, 그 연산은 마지막에 할당될 것이다. 스레드 B 및 C는 실행하기 위해 7개의 이용가능한 기능 유닛(1020)을 필요로 한다. 단지 2개의 기능 유닛(1020-2 및 1020-6)만이 남게 되고, 실행을 위해 스레드 A로부터의 2개의 제 1 연산만이 할당된다. 모두 7개의 기능 유닛(1020)이 완전히 배정된다.
사이클(x)의 종료 시점에, 스레드 B와 C에 대한 명령어 패킷이 회수된다. 스레드와 관련된 명령어 출력 로직은 도 10b에 도시된 바와 같이, 그 명령어 패킷을 어드레스(n+1)에 대한 명령어 패킷으로 대체한다. 스레드 A에 대한 명령어 패킷이 완료되지 않았기 때문에, 어드레스(n)로부터의 패킷은 처음 2개의 연산의 마킹이 완료된 상태로 남게 된다. 도 10b에 도시된 다음 사이클(x+1)에서, 스레드 A로부터의 최종 2개의 연산은 스레드 B와 C로부터의 모든 연산 뿐만 아니라, 기능 유닛에 배정된다.
따라서, 본 발명은 보다 많이 하드웨어 리소스(즉, 기능 유닛(1020))를 이용하며, 다중 스레드를 포함하는 작업 부하에 걸리는 경과 시간을 낮춘다.
본 명세서에 설명 및 나타난 실시예 및 변경예는 단지 본 발명의 이론의 예시적인 것에 불과하며, 본 발명의 범위와 사상에서 벗어나지 않고 당업자에 의해 여러 수정 및 변경이 가능함을 이해하여야 한다.

Claims (16)

  1. 다중 스레드 초장 명령어(VLIW) 프로세서에 있어서,
    다중 스레드 명령어 스트림으로부터의 명령어를 실행하는 복수의 기능 유닛으로서, 상기 명령어가 컴파일러에 의해 명령어 패킷으로 그룹화되는 상기 복수의 기능 유닛과,
    상기 명령어 스트림으로부터 명령어를 선택하여 상기 복수의 기능 유닛으로 상기 명령어를 전송하며, 적어도 하나의 상기 명령어 패킷으로부터의 명령어를 상기 복수의 기능 유닛으로 할당하는 배정기
    를 포함하는 다중 스레드 초장 명령어 프로세서.
  2. 제 1 항에 있어서,
    상기 배정기는 상기 기능 유닛에 이용가능성에 의해 허용되는 것만큼의 다수의 임의의 주어진 명령어 패킷으로부터의 명령어를 할당하는 다중 스레드 초장 명령어 프로세서.
  3. 제 1 항에 있어서,
    임의의 주어진 사이클에서 기능 유닛에 배정될 수 없는 임의의 주어진 명령어 패킷으로부터의 명령어의 표시를 실행을 위해 후위 사이클에 저장하는 레지스터를 더 포함하는 다중 스레드 초장 명령어 프로세서.
  4. 제 3 항에 있어서,
    모든 명령어가 기능 유닛에 출력되는 명령어 패킷이 상기 스레드의 명령어 스트림으로부터 갱신되는 다중 스레드 초장 명령어 프로세서.
  5. 제 3 항에 있어서,
    상기 레지스터에 표시된 명령어를 가진 명령어 패킷이 유지되는 다중 스레드 초장 명령어 프로세서.
  6. 제 1 항에 있어서,
    상기 배정기는 컴파일러에 의해 어셈블리된 명령어 패킷의 의미 구조가 침해되지 않을 경우에 명령어 패킷을 분할할 수 있는 다중 스레드 초장 명령어 프로세서.
  7. 제 1 항에 있어서,
    상기 배정기는 상기 패킷의 제 1 부분에서의 명령어 중 하나의 명령어에 대한 소스 레지스터가 상기 패킷의 제 2 부분에서의 명령어 중 하나의 명령어에 의해 수정되지 않는 경우에 명령어 패킷을 분할할 수 있는 다중 스레드 초장 명령어 프로세서.
  8. 다중 스레드 초장 명령어(VLIW) 프로세서로 명령어를 처리하는 방법에 있어서,
    컴파일러에 의해 명령어 패킷으로 그룹화된 상기 명령어를 복수의 기능 유닛을 이용하여 실행시키는 단계와,
    상기 명령어 스트림으로부터의 명령어를 상기 복수의 기능 유닛에 할당하는 단계로서, 상기 적어도 하나의 명령어 패킷으로부터의 명령어는 상기 복수의 기능 유닛에 할당되는 상기 할당 단계와,
    상기 선택된 명령어를 상기 대응하는 기능 유닛으로 전송하는 단계
    를 포함하는 명령어 처리 방법.
  9. 제 8 항에 있어서,
    상기 할당 단계는 상기 기능 유닛의 이용가능성에 의해 허용되는 것만큼의 다수의 임의의 주어진 패킷으로부터의 명령어를 할당하는 명령어 처리 방법.
  10. 제 8 항에 있어서,
    임의의 주어진 사이클에서 기능 유닛으로 배정될 수 없는 임의의 주어진 명령어 패킷으로부터의 명령어 표시를 후위 사이클에 실행을 위해 저장하는 단계를 더 포함하는 명령어 처리 방법.
  11. 제 10 항에 있어서,
    모든 명령어가 기능 유닛으로 출력되는 명령어 패킷이 상기 스레드의 명령어 스트림으로부터 갱신되는 명령어 처리 방법.
  12. 제 10 항에 있어서,
    상기 레지스터에 표시되는 명령어를 가진 명령어 패킷이 유지되는 명령어 처리 방법.
  13. 제 8 항에 있어서,
    상기 할당 단계는 컴파일러에 의해 어셈블리되는 명령어 패킷의 의미 구조가 위반되지 않은 경우에 명령어 패킷을 분할할 수 있는 명령어 처리 방법.
  14. 제 8 항에 있어서,
    상기 할당 단계는 상기 패킷의 제 1 부분에서의 명령어 중 하나의 명령어에 대한 소스 레지스터가 상기 패킷의 제 2 부분에서의 명령어 중 하나의 명령어에 의해 수정되지 않을 경우에 명령어 패킷을 분할할 수 있는 명령어 처리 방법.
  15. 다중 스레드 초장 명령어(VLIW) 프로세서로 복수의 스레드를 가진 명령어 스트림으로부터의 명령어를 처리하는 제품에 있어서,
    컴퓨터가
    컴파일러에 의해 명령어 패킷으로 그룹화되는 명령어를 복수의 기능 유닛을 이용하여 실행하고,
    상기 명령어 스트림으로부터의 명령어를 상기 복수의 기능 유닛에 할당 - 상기 명령어 패킷 중 적어도 하나의 명령어 패킷은 상기 복수의 기능 유닛에 할당 - 하며,
    상기 선택된 명령어를 상기 대응하는 기능 유닛으로 전송하게 하는 프로그램 코드 수단을 포함하는 컴퓨터 판독가능 프로그램 코드 수단을 그 위에 구현된 컴퓨터 판독가능 매체
    를 포함하는 명령어 처리 제품.
  16. 다중 스레드 초장 명령어(VLIW) 프로세서에 있어서,
    다중 스레드 명령어 스트림으로부터의 명령어를 실행하는 복수의 기능 유닛으로서, 상기 명령어는 컴파일러에 의해 명령어 패킷으로 그룹화되는 상기 복수의 기능 유닛과,
    상기 명령어 스트림으로부터 명령어를 선택하여 상기 복수의 기능 유닛으로 상기 명령어를 전송하며, 상기 컴파일러에 의해 어셈블리되는 상기 명령어의 의미 구조가 위반되지 않을 경우에 상기 복수의 기능 유닛으로 상기 명령어 패킷 중 적어도 하나의 명령어 패킷으로부터의 명령어를 할당하는 배정기
    를 포함하는 다중 스레드 초장 명령어 프로세서.
KR1020010016397A 2000-03-30 2001-03-29 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품 KR20010095073A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/538,755 US7096343B1 (en) 2000-03-30 2000-03-30 Method and apparatus for splitting packets in multithreaded VLIW processor
US09/538,755 2000-03-30

Publications (1)

Publication Number Publication Date
KR20010095073A true KR20010095073A (ko) 2001-11-03

Family

ID=24148288

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010016397A KR20010095073A (ko) 2000-03-30 2001-03-29 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품

Country Status (6)

Country Link
US (1) US7096343B1 (ko)
EP (1) EP1146420A1 (ko)
JP (1) JP3777541B2 (ko)
KR (1) KR20010095073A (ko)
CA (1) CA2341098C (ko)
TW (1) TW544627B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100834180B1 (ko) * 2004-06-28 2008-05-30 씨아오보 리 프로그램/명령어의 실행을 구동하는 “l”구동법 및그것의 아키텍처와 프로세서
KR100972509B1 (ko) * 2003-03-19 2010-07-28 엘에스산전 주식회사 피엘씨의 스캔 프로그램 제어 방법
KR20100094214A (ko) * 2009-02-18 2010-08-26 삼성전자주식회사 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8762581B2 (en) * 2000-12-22 2014-06-24 Avaya Inc. Multi-thread packet processor
JP4542722B2 (ja) * 2001-04-25 2010-09-15 富士通株式会社 命令処理方法
US7200738B2 (en) 2002-04-18 2007-04-03 Micron Technology, Inc. Reducing data hazards in pipelined processors to provide high processor utilization
US7758567B2 (en) * 2004-07-09 2010-07-20 The Alfred E. Mann Foundation For Scientific Research Medical device including processor running independent processes to cooperatively control therapy
US7395414B2 (en) * 2005-02-11 2008-07-01 International Business Machines Corporation Dynamic recalculation of resource vector at issue queue for steering of dependent instructions
US7254697B2 (en) * 2005-02-11 2007-08-07 International Business Machines Corporation Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
US7814487B2 (en) 2005-04-26 2010-10-12 Qualcomm Incorporated System and method of executing program threads in a multi-threaded processor
GB0605349D0 (en) 2006-03-17 2006-04-26 Imec Inter Uni Micro Electr Reconfigurable multi-processing coarse-grain array
TWI334990B (en) * 2006-12-28 2010-12-21 Ind Tech Res Inst Virtual cluster architecture and method
US7805595B2 (en) * 2007-04-20 2010-09-28 Arm Limited Data processing apparatus and method for updating prediction data based on an operation's priority level
WO2009107462A1 (ja) * 2008-02-26 2009-09-03 日本電気株式会社 低コストに複数命令流を実行するプロセッサ、その方法及びそのプログラム
JP5463076B2 (ja) * 2009-05-28 2014-04-09 パナソニック株式会社 マルチスレッドプロセッサ
US9678754B2 (en) * 2010-03-03 2017-06-13 Qualcomm Incorporated System and method of processing hierarchical very long instruction packets
KR101731929B1 (ko) 2011-02-08 2017-05-02 삼성전자주식회사 재구성 가능 프로세서 및 구동 제어 방법
US8738964B2 (en) * 2011-12-13 2014-05-27 Red Hat, Inc. Disk-free recovery of XA transactions for in-memory data grids
US9424045B2 (en) 2013-01-29 2016-08-23 Arm Limited Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit
US9207944B1 (en) 2013-03-15 2015-12-08 Google Inc. Doubling thread resources in a processor
US10719325B2 (en) * 2017-11-07 2020-07-21 Qualcomm Incorporated System and method of VLIW instruction processing using reduced-width VLIW processor

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404469A (en) 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
WO1994027216A1 (en) 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
JP3745450B2 (ja) * 1996-05-13 2006-02-15 株式会社ルネサステクノロジ 並列処理プロセッサ
US5890009A (en) * 1996-12-12 1999-03-30 International Business Machines Corporation VLIW architecture and method for expanding a parcel
US6170051B1 (en) 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a 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
US7007153B1 (en) 2000-03-30 2006-02-28 Agere Systems Inc. Method and apparatus for allocating functional units in a multithreaded VLIW processor
US6658551B1 (en) 2000-03-30 2003-12-02 Agere Systems Inc. Method and apparatus for identifying splittable packets in a multithreaded VLIW processor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100972509B1 (ko) * 2003-03-19 2010-07-28 엘에스산전 주식회사 피엘씨의 스캔 프로그램 제어 방법
KR100834180B1 (ko) * 2004-06-28 2008-05-30 씨아오보 리 프로그램/명령어의 실행을 구동하는 “l”구동법 및그것의 아키텍처와 프로세서
KR20100094214A (ko) * 2009-02-18 2010-08-26 삼성전자주식회사 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법

Also Published As

Publication number Publication date
JP3777541B2 (ja) 2006-05-24
CA2341098C (en) 2007-06-05
EP1146420A1 (en) 2001-10-17
US7096343B1 (en) 2006-08-22
TW544627B (en) 2003-08-01
JP2001282533A (ja) 2001-10-12
CA2341098A1 (en) 2001-09-30

Similar Documents

Publication Publication Date Title
KR100871956B1 (ko) 다중 스레드 초장 명령어 프로세서, 명령 처리 방법 및 컴파일러
KR20010095069A (ko) 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품
KR20010095073A (ko) 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품
KR100940956B1 (ko) 다중 스레드 초장 명령어 프로세서 및 명령 처리 방법
JP3771957B2 (ja) プロセッサ・アーキテクチャにおける分散制御のための装置および方法
KR101638225B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
KR101636602B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
KR101620676B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
US6286027B1 (en) Two step thread creation with register renaming
US7269712B2 (en) Thread selection for fetching instructions for pipeline multi-threaded processor
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
JP2000105699A (ja) 命令レベル並列性を増加させるためのリザベ―ションステ―ション
EP1416377B1 (en) Processor system with a plurality of processor cores for executing tasks sequentially or in parallel
JPH10154073A (ja) データ依存性を管理する装置及び方法
Mendelson et al. Design alternatives of multithreaded architecture
US7127589B2 (en) Data processor
JP2004038751A (ja) プロセッサ及び命令制御方法
Bekerman et al. Performance and hardware complexity tradeoffs in designing multithreaded architectures
US20040128488A1 (en) Strand switching algorithm to avoid strand starvation
Theobald et al. A Superstrand Architecture
Ungerer et al. Beyond Dataflow

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20080730

Effective date: 20091029