KR100498482B1 - 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법 - Google Patents

명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법 Download PDF

Info

Publication number
KR100498482B1
KR100498482B1 KR10-2003-0005236A KR20030005236A KR100498482B1 KR 100498482 B1 KR100498482 B1 KR 100498482B1 KR 20030005236 A KR20030005236 A KR 20030005236A KR 100498482 B1 KR100498482 B1 KR 100498482B1
Authority
KR
South Korea
Prior art keywords
instruction
fetched
execution
thread
address
Prior art date
Application number
KR10-2003-0005236A
Other languages
English (en)
Other versions
KR20040068721A (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 KR10-2003-0005236A priority Critical patent/KR100498482B1/ko
Priority to US10/754,550 priority patent/US7269712B2/en
Priority to JP2004012433A priority patent/JP4476636B2/ja
Publication of KR20040068721A publication Critical patent/KR20040068721A/ko
Application granted granted Critical
Publication of KR100498482B1 publication Critical patent/KR100498482B1/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, 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, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Abstract

명령어수에 수행 주기 회수(cycle count)를 가중치로 사용하여 쓰레드(thread)를 페치(fetch)하는 동시 다중 쓰레딩(SMT) 프로세서 및 그 방법이 개시된다. 상기 동시 다중 쓰레딩(SMT) 프로세서는, 페치부가 명령어 수에 그 수행 주기 회수(cycle count)를 가중치로 사용하여 쓰레드(thread)를 선택하고, 그 쓰레드 중 실행될 명령어의 어드레스를 가리키고 있는 프로그램 카운터에서 어드레스를 페치(fetch)한다. 따라서, SMT의 성능을 더욱 향상시키고, 결국 CPU 등의 시스템 성능을 더욱 향상시키는 효과가 있다.

Description

명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를 페치하는 동시 다중 쓰레딩 프로세서 및 그 방법{Simultaneous Multithreading processor providing for thread fetch based on instructions count weighted by the operation cycle count and method thereof}
본 발명은 컴퓨터 시스템의 CPU(중앙연산처리장치)에 관한 것으로, 특히 컴퓨터 시스템의 동시 다중 쓰레딩(Simultaneous Multithreading)(이하 "SMT"라 약칭함) 프로세서에 관한 것이다.
CPU(중앙연산처리장치) 등에서의 수퍼 스칼라(Superscalar) 파이프 라인 구조는, 한 클락 사이클 동안에 동시에 여러 개의 명령어를 실행함으로써 CPU(중앙연산처리장치)의 성능을 높이는 방법이다. 그러나, 수퍼 스칼라(Superscalar) 파이프 라인 구조에서는 한 클락 사이클 동안에 동시에 여러 개의 명령어가 실행될 수 있음에도 불구하고, 데이터 디펜던시(data dependency) 등의 문제로 인하여 시간상 명령어의 실행이 불가능한 구간, 즉, 웨이스트(waste)가 발생한다.
이에 반하여, 동시 다중 쓰레딩(SMT) 방법은 한 클락 사이클 동안에 동시에 여러 쓰레드들(threads)이 동시에 존재하도록 하고, 쓰레드들(threads) 각각에 존재하는 명령어들이 동시에 실행되도록 하며, 특히 위와 같은 웨이스트(waste) 구간에서도 실행되도록 하여, 웨이스트(waste) 구간을 최소화함으로써 CPU(중앙연산처리장치)의 성능을 향상시키는 방법이다. 쓰레드(thread)는 한 프로세스 내의 여러 가지 서로 다른 콘트롤 포인트(control point)나 서로 다른 실행 경로(execution path)로 정의될 수 있고, 또는 서로 다른 프로그램으로도 정의될 수 있다. 따라서, 동시 다중 쓰레딩(SMT)은 여러 쓰레드들(threads) 각각의 명령어들이 동시에 수행되도록 하여 명령어 실행의 쓰루풋(throughput)을 높이는 방법이다.
Dean M. Tullsen 등은 동시 다중 쓰레딩(SMT) 구조에서 여러 쓰레드들(threads) 중, 하나의 쓰레드(thread)를 선택하여 그 명령어를 페치(fetch)하는 몇 가지 알고리즘을 소개하였다. 이와 같이 쓰레드(thread)를 선택하고, 해당 명령어를 페치(fetch)하는 종래의 동시 다중 쓰레딩(SMT) 프로세서에 대해서는 미국 특허, "US6470443B1"에 잘 나타나 있다.
즉, 종래의 동시 다중 쓰레딩(SMT) 프로세서에서는, 새로운 쓰레드(thread) 의 명령어 페치 시에, 레이턴시(latency)가 긴 명령어를 수행하는 쓰레드(thread) 선택을 피하기 위하여, "ICCOUNT", "BRCOUNT", "MISSCOUNT", 또는 "IQPOSN" 과 같은 방법을 사용한다. 특히, 위와 같은 방법 중 "ICCOUNT"는 효과적인 방법으로서, 종래의 동시 다중 쓰레딩(SMT) 프로세서에 많이 채용되고 있다. "ICCOUNT" 방법은 명령어 디코딩, 명령어 재명명(rename), 명령어 지시(queue)와 같은 파이프 라인 단계에서, 가장 적은 수의 명령어를 가진 쓰레드(thread)를 선택하여 그 쓰레드(thread)의 명령어를 페치(fetch)하는 방법이다. 명령어 수가 적을수록 해당 쓰레드(thread)의 레이턴시(latency)가 작아지기 때문에, 이와 같은 방법은 효과적인 방법이라 할 수 있다. 이외에도, 파이프 라인 단계를 실행(execution) 단계까지 확장한 "ECOUNT"라는 방법도 있다.
이와 같이, "ICCOUNT" 방법 등을 사용하는 종래의 동시 다중 쓰레딩(SMT) 프로세서에서는, 단순히 쓰레드(thread)가 가지는 명령어 수만을 계산하여 쓰레드(thread)를 선택하고 명령어를 페치(fetch)한다. 그러나, 실제 레이턴시(latency)에 영향을 미치는 명령어들의 수행 주기 회수(cycle count)가 고려되지 않고, 단순히 명령어 수가 적은 쓰레드(thread)에 우선 순위를 부여하는 것은 CPU(중앙연산처리장치) 등의 프로세서 성능을 저하시키는 문제점이 있다. 예를 들어, 쓰레드(thread) A는 수행 주기 회수(cycle count)가 3인 곱셈 명령어 둘을 가지고, 쓰레드(thread) B는 수행 주기 회수(cycle count)가 1인 덧셈 명령어 네 개를 가질 경우, 쓰레드(thread) A의 수행이 쓰레드(thread) B의 수행보다 길어진다. 즉, 명령어의 개수는 오히려 적은 쓰레드(thread) A가 쓰레드(thread) B보다 명령어 지시(queue)를 더 오래 기다리므로, 큐 클록(queue clog)을 일으킬 수 있는 문제점이 있다.
따라서, 본 발명이 이루고자하는 기술적 과제는, 명령어의 개수에 각 명령어의 수행 주기 회수(cycle count)를 가중치로 사용하여 동시 다중 쓰레딩(SMT)의 성능을 더욱 향상시킨 동시 다중 쓰레딩(SMT) 프로세서를 제공하는 데 있다.
본 발명이 이루고자하는 다른 기술적 과제는, 명령어의 개수에 각 명령어의 수행 주기 회수(cycle count)를 가중치로 사용하여 동시 다중 쓰레딩(SMT)의 성능을 더욱 향상시킨 동시 다중 쓰레딩(SMT) 프로세서의 동시 다중 쓰레딩(SMT) 방법을 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한 본 발명에 따른 동시 다중 쓰레딩(SMT) 프로세서는, 페치부(fetch unit), 명령어 캐쉬부(instruction cache), 명령어 디코딩부(instruction decoder), 레지스터 재명명부(register renamer), 명령어 지시부(instruction queue unit), 및 실행부(execution unit)를 구비한다.
상기 페치부(fetch unit)는 페치된 명령어(CIN)의 연산 종류 및 실행 지시된 명령어(QIS) 각각에 대응하는 쓰레드들(threads)에 대한 카운터 정보에 응답하여 쓰레드(thread)별로 카운팅을 수행하고, 쓰레드(thread)별 카운팅 값 중에서 가장 작은 카운팅 값에 대응하는 프로그램 카운터에서 어드레스(FAD)를 페치한다.
상기 명령어 캐쉬부(instruction cache)는 프로그램 카운터들 각각의 어드레스에 대응하는 명령어들을 저장하고, 상기 페치된 어드레스에 대응하는 상기 페치된 명령어(CIN)를 출력한다.
상기 명령어 디코딩부(instruction decoder)는 상기 페치된 명령어(CIN)를 해석하여 상기 연산 종류 및 오퍼랜드로 사용될 레지스터의 어드레스(DAD)를 추출한다.
상기 레지스터 재명명부(register renamer)는 데이터 디펜던시(data dependency)를 피할 수 있는 상기 레지스터 대용의 실제 레지스터의 어드레스를 재명명한다.
상기 명령어 지시부(instruction queue unit)는 상기 재명명된 어드레스(RAD)에 응답하여 상기 페치된 명령어(CIN)에 대한 상기 실행 지시를 행한다.
상기 실행부(execution unit)는 상기 실행 지시에 응답하여 상기 페치된 명령어(CIN)를 실행한다.
상기 페치부(fetch unit)는, 디멀티플렉싱 제어기(demultiplexing controller), 싸이클 카운터들(cycle counters), 쓰레드 선택기(thread selector), 및 먹스(multiplexer)를 구비한다.
상기 디멀티플렉싱 제어기(demultiplexing controller)는 상기 페치된 명령어(CIN)의 연산 종류 및 상기 실행 지시된 명령어(QIS) 각각에 대응하는 쓰레드들(threads)에 대한 상기 카운터 정보를 출력한다.
상기 싸이클 카운터들(cycle counters)은 쓰레드(thread)별 상기 싸이클 카운터들(cycle counters)을 구비하며, 상기 카운터 정보에 대응하는 쓰레드(thread)에 할당되어 있는 상기 싸이클 카운터가 카운팅을 수행한다.
상기 쓰레드 선택기(thread selector)는 상기 싸이클 카운터들(cycle counters)이 가리키는 수가 가장 작은 싸이클 카운터를 판별하고, 그에 대응하는 쓰레드(thread) 선택 정보(TSI)를 출력한다.
상기 먹스(multiplexer)는 상기 쓰레드(thread) 선택 정보(TSI)에 응답하여 그에 대응하는 프로그램 카운터에서 어드레스(FAD)를 페치한다.
상기 실행부(execution unit)는, 데이터 캐쉬(data cache), 레지스터들(registers), 및 기능 유닛들(functional units)을 구비한다.
상기 데이터 캐쉬(data cache)는 상기 연산에 사용될 데이터들을 저장한다.
상기 레지스터들(registers)은 상기 재명명된 어드레스(RAD)에 대응하는 다수개의 레지스터들(registers)을 구비한다.
상기 기능 유닛들(functional units)은 이전 연산의 종료로 상기 실행 지시된 명령어(QIS) 수행에 사용될 오퍼랜드들이 생성되면, 상기 실행 지시에 응답하여 상기 페치된 명령어(CIN)를 실행한다.
상기 카운터 정보는, 상기 페치된 명령어(CIN)의 연산 종류에 대응하는 수행 주기 회수(cycle count)를 합산하는 정보 및 상기 실행 지시된 명령어(QIS)에 대응하는 상기 수행 주기 회수(cycle count)를 감산하는 정보인 것을 특징으로 한다.
상기 수행 주기 회수(cycle count)는, 상기 명령어 디코딩부(instruction decoder), 상기 레지스터 재명명부(register renamer), 및 상기 명령어 지시부(instruction queue unit)에서 소요되는 시스템 클럭의 사이클 카운트 값인 것을 특징으로 한다.
상기의 다른 기술적 과제를 달성하기 위한 본 발명에 따른 동시 다중 쓰레딩(SMT) 프로세서의 동시 다중 쓰레딩(SMT) 방법은, 프로그램 카운터들 각각의 어드레스에 대응하는 명령어들을 저장하는 명령어 캐쉬부(instruction cache)를 구비하는 동시 다중 쓰레딩(SMT) 프로세서의 동시 다중 쓰레딩(SMT) 방법에 있어서, 다음과 같은 단계를 구비한다.
즉, 본 발명에 따른 동시 다중 쓰레딩(SMT) 프로세서의 동시 다중 쓰레딩(SMT) 방법은, 먼저, 상기 동시 다중 쓰레딩(SMT) 프로세서에 구비되는 쓰레드(thread)별 싸이클 카운터들(cycle counters) 중에서, 페치된 명령어(CIN)의 연산 종류 및 실행 지시된 명령어(QIS) 각각에 대응하는 쓰레드들(threads)에 대한 카운터 정보에 대응하는 쓰레드(thread)에 할당되어 있는 싸이클 카운터가 카운팅을 수행한다. 상기 동시 다중 쓰레딩(SMT) 프로세서는 상기 싸이클 카운터들(cycle counters)이 가리키는 수가 가장 작은 싸이클 카운터를 판별하여 그에 대응하는 프로그램 카운터에서 어드레스(FAD)를 페치한다.
이에 따라, 상기 동시 다중 쓰레딩(SMT) 프로세서는 상기 명령어 캐쉬부(instruction cache)에서 상기 페치된 어드레스에 대응하는 상기 페치된 명령어(CIN)를 출력하고, 상기 페치된 명령어(CIN)를 해석하여 상기 연산 종류 및 오퍼랜드로 사용될 레지스터의 어드레스(DAD)를 추출하며, 데이터 디펜던시(data dependency)를 피할 수 있는 상기 레지스터 대용의 실제 레지스터의 어드레스를 재명명한다.
다음에, 상기 동시 다중 쓰레딩(SMT) 프로세서는 상기 재명명된 어드레스(RAD)에 응답하여 상기 페치된 명령어(CIN)에 대한 상기 실행 지시를 행하고, 상기 실행 지시에 응답하여 상기 페치된 명령어(CIN)를 실행한다.
상기 프로그램 카운터에서 어드레스(FAD)의 페치는, 다음과 같은 단계를 구비한다.
즉, 상기 프로그램 카운터에서 어드레스(FAD)의 페치에서는, 먼저, 상기 동시 다중 쓰레딩(SMT) 프로세서가, 상기 페치된 명령어(CIN)의 연산 종류 및 상기 실행 지시된 명령어(QIS) 각각에 대응하는 쓰레드들(threads)에 대한 상기 카운터 정보를 출력한다. 이에 따라, 상기 동시 다중 쓰레딩(SMT) 프로세서에 구비되는 쓰레드(thread)별 상기 싸이클 카운터들(cycle counters) 중에서, 상기 카운터 정보에 대응하는 쓰레드(thread)에 할당되어 있는 상기 싸이클 카운터가 카운팅을 수행한다. 다음에, 상기 동시 다중 쓰레딩(SMT) 프로세서는 상기 싸이클 카운터들(cycle counters)이 가리키는 수가 가장 작은 싸이클 카운터를 판별하고, 그에 대응하는 쓰레드(thread) 선택 정보(TSI)를 출력하며, 상기 쓰레드(thread) 선택 정보(TSI)에 응답하여 그에 대응하는 프로그램 카운터에서 어드레스(FAD)를 페치한다.
상기 실행은, 이전 연산의 종료로 상기 실행 지시된 명령어(QIS) 수행에 사용될 오퍼랜드들이 생성되면, 상기 동시 다중 쓰레딩(SMT) 프로세서에 구비되는 소정의 기능 유닛들(functional units)이 소정의 데이터 캐쉬(data cache) 및 레지스터들(registers)을 이용하여 상기 페치된 명령어(CIN)를 연산하는 것을 특징으로 한다.
상기 카운터 정보는, 상기 페치된 명령어(CIN)의 연산 종류에 대응하는 수행 주기 회수(cycle count)를 합산하는 정보 및 상기 실행 지시된 명령어(QIS)에 대응하는 상기 수행 주기 회수(cycle count)를 감산하는 정보인 것을 특징으로 한다.
상기 수행 주기 회수(cycle count)는, 상기 명령어 디코딩부(instruction decoder), 상기 레지스터 재명명부(register renamer), 및 상기 명령어 지시부(instruction queue unit)에서 소요되는 시스템 클럭의 사이클 카운트 값인 것을 특징으로 한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 따른 동시 다중 쓰레딩(SMT) 프로세서의 블록도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 동시 다중 쓰레딩(SMT) 프로세서는, 페치부(fetch unit)(110), 명령어 캐쉬부(instruction cache)(120), 명령어 디코딩부(instruction decoder)(130), 레지스터 재명명부(register renamer)(140), 명령어 지시부(instruction queue unit)(150), 및 실행부(execution unit)(160)를 구비한다.
상기 페치부(fetch unit)(110)는 페치된 명령어(CIN)의 연산 종류 및 실행 지시된 명령어(QIS) 각각에 대응하는 쓰레드들(threads)에 대한 카운터 정보에 응답하여 쓰레드(thread)별로 카운팅을 수행하고, 쓰레드(thread)별 카운팅 값 중에서 가장 작은 카운팅 값에 대응하는 프로그램 카운터에서 어드레스(FAD)를 페치한다. 프로그램 카운터들은 쓰레드(thread)별로 하나씩 할당되며, 프로그램 카운터들 각각에서 출력되는 어드레스는, PC0 내지 PCN-1이다. 이때, PC0 내지 PCN-1 중 페치된 어드레스가 FAD에 해당한다.
상기 페치된 명령어(CIN)를 해석하여 상기 연산 종류를 판별하는 것은 아래에서 기술할 상기 명령어 디코딩부(instruction decoder)(130)에서 이루어지고, 실행 지시된 명령어(QIS)에 대한 정보는 아래에서 기술할 상기 명령어 지시부(instruction queue unit)(150)로부터 피드백된다.
여기서, 상기 카운터 정보는, 상기 페치된 명령어(CIN)의 연산 종류에 대응하는 수행 주기 회수(cycle count)를 합산하는 정보 및 상기 실행 지시된 명령어(QIS)에 대응하는 상기 수행 주기 회수(cycle count)를 감산하는 정보이다. 상기 수행 주기 회수(cycle count)는, 상기 명령어 디코딩부(instruction decoder)(130), 상기 레지스터 재명명부(register renamer)(140), 및 상기 명령어 지시부(instruction queue unit)(150)에서 소요되는 시스템 클럭의 사이클 카운트 값이다.
상기 명령어 캐쉬부(instruction cache)(120)는 프로그램 카운터들 각각의 어드레스에 대응하는 명령어들을 저장하고, 상기 페치된 어드레스(FAD)에 대응하는 상기 페치된 명령어(CIN)를 출력한다.
상기 명령어 디코딩부(instruction decoder)(130)는 상기 페치된 명령어(CIN)를 해석하여 상기 연산 종류 및 오퍼랜드로 사용될 레지스터의 어드레스(DAD)를 추출한다.
상기 레지스터 재명명부(register renamer)(140)는 데이터 디펜던시(data dependency)를 피할 수 있는 상기 레지스터 대용의 실제 레지스터의 어드레스를 재명명한다. 이와 같이, 오퍼랜드로 사용될 레지스터에 대하여 그 대용의 실제 레지스터로 재명명하는 것은, 아키텍쳐상 정의된 레지스터보다 많은 양의 레지스터를 내부적으로 제공함으로써 데이터 디펜던시(data dependency)를 해결하기 위함이다.
상기 명령어 지시부(instruction queue unit)(150)는 상기 재명명된 어드레스(RAD)에 응답하여 상기 페치된 명령어(CIN)에 대한 상기 실행 지시를 행한다.
상기 실행부(execution unit)(160)는 상기 실행 지시에 응답하여 상기 페치된 명령어(CIN)를 실행한다. 이때, 실행은, 이전 연산의 종료로 상기 실행 지시된 명령어(QIS) 수행에 사용될 오퍼랜드들이 생성되면, 소정의 기능 유닛들(functional units)이, 소정의 데이터 캐쉬(data cache) 및 레지스터들(registers)을 이용하여 상기 실행 지시된 명령어(QIS)의 연산을 수행하는 것이다.
도 1을 참조하면, 상기 실행부(execution unit)(160)는, 데이터 캐쉬(data cache)(161), 레지스터들(registers)(163), 및 기능 유닛들(functional units)(165)을 구비한다.
상기 데이터 캐쉬(data cache)(161)는 상기 연산에 사용될 데이터들을 저장한다. 여기에 저장되는 데이터들은, 연산에 사용되는 여러 가지 필요한 소스 데이터들 또는 임시 데이터들로서, 동작 스피드의 향상을 위해 내부 캐쉬 메모리등에 저장되는 데이터들이다.
상기 레지스터들(registers)(163)은 상기 재명명된 어드레스(RAD)에 대응하는 다수개의 레지스터들(registers)(163)을 구비한다. 여기의 레지스터들(registers)(163)은 상기 페치된 명령어(CIN) 수행에서 오퍼랜드로 사용될 레지스터뿐만 아니라 연산 중에 사용되는 임시 저장 레지스터 또는 연산 결과를 저장하는 데스티네이션 레지스터(destination register) 등 연산에 필요한 모든 레지스터들(registers)(163)을 포함한다.
상기 기능 유닛들(functional units)(165)은 이전 연산의 종료로 상기 실행 지시된 명령어(QIS) 수행에 사용될 오퍼랜드들이 생성되면, 상기 실행 지시에 응답하여 상기 페치된 명령어(CIN)를 실행한다. 여기의 기능 유닛들(functional units)(165)은 합산기(adder), 승산기(multiplier), 쉬프터(shifter) 또는 축적기(accumulator) 등 기본 연산을 수행하는 블록들이다.
도 2는 도 1의 페치부(fetch unit)(110)의 구체적인 블록도이다.
도 2를 참조하면, 도 1의 페치부(fetch unit)(110)는, 디멀티플렉싱 제어기(demultiplexing controller)(111), 싸이클 카운터들(cycle counters)(113), 쓰레드 선택기(thread selector)(115), 및 먹스(multiplexer)(117)를 구비한다.
상기 디멀티플렉싱 제어기(demultiplexing controller)(111)는 페치된 명령어(CIN)가 속하는 쓰레드(thread)를 판별하고, 명령어의 연산 종류에 대한 수행 주기 회수(cycle count)를 계산하여, 상기 페치된 명령어(CIN)의 연산 종류 및 상기 실행 지시된 명령어(QIS) 각각에 대응하는 쓰레드(thread)에 대한 상기 카운터 정보를 출력한다. 위에서 기술한 바와 같이, 상기 페치된 명령어(CIN)를 해석하여 상기 연산 종류를 판별하는 것은, 상기 명령어 디코딩부(instruction decoder)(130)에서 이루어지고, 실행 지시된 명령어(QIS)에 대한 정보는 상기 명령어 지시부(instruction queue unit)(150)로부터 피드백된다.
여기서도, 카운터 정보는, 상기 페치된 명령어(CIN)의 연산 종류에 대응하는 수행 주기 회수(cycle count)를 합산하는 정보 및 상기 실행 지시된 명령어(QIS)에 대응하는 상기 수행 주기 회수(cycle count)를 감산하는 정보이다. 상기 수행 주기 회수(cycle count)는, 상기 명령어 디코딩부(instruction decoder)(130), 상기 레지스터 재명명부(register renamer)(140), 및 상기 명령어 지시부(instruction queue unit)(150)에서 소요되는 시스템 클럭의 사이클 카운트 값이다.
상기 싸이클 카운터들(cycle counters)(113)은 쓰레드(thread)별 상기 싸이클 카운터들(cycle counters)(113)을 구비하며, 상기 카운터 정보에 대응하는 쓰레드(thread)에 할당되어 있는 상기 싸이클 카운터가 카운팅을 수행한다.
상기 쓰레드 선택기(thread selector)(115)는 상기 싸이클 카운터들(cycle counters)(113)이 가리키는 수가 가장 작은 싸이클 카운터를 판별하고, 그에 대응하는 쓰레드(thread) 선택 정보(TSI)를 출력한다.
상기 먹스(multiplexer)(117)는 상기 쓰레드(thread) 선택 정보(TSI)에 응답하여 그에 대응하는 프로그램 카운터에서 어드레스(FAD)를 페치한다. 프로그램 카운터들은 쓰레드(thread)별로 하나씩 할당되며, 프로그램 카운터들 각각에서 출력되는 어드레스는, PC0 내지 PCN-1이다. 이때, PC0 내지 PCN-1 중 페치된 어드레스가 FAD에 해당한다.
상기한 바와 같은, 본 발명의 일실시예에 따른 동시 다중 쓰레딩(SMT) 프로세서의 동작을 좀더 상세하게 설명한다.
도 3은 도 2의 동시 다중 쓰레딩(SMT) 프로세서의 동작 설명을 위한 흐름도이다.
도 3을 참조하면, 도 2의 동시 다중 쓰레딩(SMT) 프로세서의 동시 다중 쓰레딩(SMT) 방법은, 프로그램 카운터들 각각의 어드레스에 대응하는 명령어들을 저장하는 명령어 캐쉬부(instruction cache)(120)를 구비하는 동시 다중 쓰레딩(SMT) 프로세서의 동시 다중 쓰레딩(SMT) 방법에 있어서, 다음과 같은 단계를 구비한다.
즉, 본 발명에 따른 동시 다중 쓰레딩(SMT) 프로세서의 동시 다중 쓰레딩(SMT) 방법은, 먼저, 페치부(fetch unit)(110)가 명령어 수에 그 수행 주기 회수(cycle count)를 가중치로 사용하여 쓰레드(thread)를 선택하고, 그 쓰레드(thread) 중 실행될 명령어의 어드레스를 가리키고 있는 프로그램 카운터에서 어드레스(FAD)를 페치한다(S310).
즉, 페치부(fetch unit)(110)가 프로그램 카운터에서 어드레스(FAD)를 페치하는 과정을 좀더 자세하게 말하면, 다음과 같다. 먼저, 페치부(fetch unit)(110)에 구비된 디멀티플렉싱 제어기(demultiplexing controller)(111)가, 페치된 명령어(CIN)가 속하는 쓰레드(thread)를 판별하고, 명령어의 연산 종류에 대한 수행 주기 회수(cycle count)를 계산하여, 페치된 명령어(CIN)의 연산 종류 및 실행 지시된 명령어(QIS) 각각에 대응하는 쓰레드(thread)에 대한 카운터 정보를 출력한다. 이에 따라, 페치부(fetch unit)(110)에 구비되는 쓰레드(thread)별 싸이클 카운터들(cycle counters)(113) 중에서, 상기 카운터 정보에 대응하는 쓰레드(thread)에 할당되어 있는 싸이클 카운터가 카운팅을 수행한다.
다음에, 페치부(fetch unit)(110)에 구비되는 상기 쓰레드 선택기(thread selector)(115)는 상기 싸이클 카운터들(cycle counters)(113)이 가리키는 수가 가장 작은 싸이클 카운터를 판별하고, 그에 대응하는 쓰레드(thread) 선택 정보(TSI)를 출력하며, 페치부(fetch unit)(110)에 구비되는 상기 먹스(multiplexer)(117)는 상기 쓰레드(thread) 선택 정보(TSI)에 응답하여 그에 대응하는 프로그램 카운터에서 어드레스(FAD)를 페치한다(S310). 어느 한 쓰레드(thread)에 속하는 최초의 명령어가 페치될 때, 그 쓰레드(thread)에 대응하는 상기 싸이클 카운터는 상기 디멀티플렉싱 제어기(demultiplexing controller)(111)에 의하여 리셋되어 다시 카운팅을 시작한다.
위에서 기술한 바와 같이, 상기 페치된 명령어(CIN)를 해석하여 상기 연산 종류를 판별하는 것은, 상기 명령어 디코딩부(instruction decoder)(130)에서 이루어지고, 실행 지시된 명령어(QIS)에 대한 정보는 상기 명령어 지시부(instruction queue unit)(150)로부터 피드백된다. 이때, 상기 카운터 정보는, 상기 페치된 명령어(CIN)의 연산 종류에 대응하는 수행 주기 회수(cycle count)를 합산하는 정보 및 상기 실행 지시된 명령어(QIS)에 대응하는 상기 수행 주기 회수(cycle count)를 감산하는 정보이다(S370~S380). 상기 수행 주기 회수(cycle count)는, 상기 명령어 디코딩부(instruction decoder)(130), 상기 레지스터 재명명부(register renamer)(140), 및 상기 명령어 지시부(instruction queue unit)(150)에서 소요되는 시스템 클럭의 사이클 카운트 값이다.
한편, 상기 명령어 캐쉬부(instruction cache)(120)에서 상기 페치된 어드레스에 대응하는 상기 페치된 명령어(CIN)를 출력하면, 상기 명령어 디코딩부(instruction decoder)(130)는 상기 페치된 명령어(CIN)를 해석하여 상기 연산 종류 및 오퍼랜드로 사용될 레지스터의 어드레스(DAD)를 추출하고(S320), 상기 레지스터 재명명부(register renamer)(140)는 데이터 디펜던시(data dependency)를 피할 수 있는 상기 레지스터 대용의 실제 레지스터의 어드레스를 재명명한다(S330).
다음에, 상기 명령어 지시부(instruction queue unit)(150)는 상기 재명명된 어드레스(RAD)에 응답하여 상기 페치된 명령어(CIN)에 대한 상기 실행 지시를 행하고(S340), 상기 실행부(execution unit)(160)가 상기 실행 지시에 응답하여 상기 페치된 명령어(CIN)를 실행한다(S360). 이와 같은 명령어 실행에 따라 연산된 결과가 데스티네이션 레지스터(destination register)에 저장된다(S360).
여기서, 상기 실행은, 이전 연산의 종료로 상기 실행 지시된 명령어(QIS) 수행에 사용될 오퍼랜드들이 생성되면, 상기 실행부(execution unit)(160)에 구비되는 소정의 기능 유닛들(functional units)(165)이 소정의 데이터 캐쉬(data cache)(161) 및 레지스터들(registers)(163)을 이용하여 상기 페치된 명령어(CIN)를 연산하는 것이다(S350).
위에서 기술한 바와 같이, 본 발명의 일실시예에 따른 동시 다중 쓰레딩(SMT) 프로세서는, 상기 페치부(fetch unit)(110)가 명령어 수에 그 수행 주기 회수(cycle count)를 가중치로 사용하여 쓰레드(thread)를 선택하고, 그 쓰레드(thread) 중 실행될 명령어의 어드레스를 가리키고 있는 프로그램 카운터에서 어드레스(FAD)를 페치한다.
즉, 페치부(fetch unit)(110)는 페치된 명령어(CIN)가 속하는 쓰레드(thread)를 판별하고, 명령어의 연산 종류에 대한 수행 주기 회수(cycle count)를 계산하여, 페치된 명령어(CIN)의 연산 종류 및 실행 지시된 명령어(QIS) 각각에 대응하는 쓰레드(thread)에 대한 카운터 정보를 출력한다. 페치부(fetch unit)(110)에 구비되는 쓰레드(thread)별 싸이클 카운터들(cycle counters)(113) 중에서, 상기 카운터 정보에 대응하는 쓰레드(thread)에 할당되어 있는 싸이클 카운터는 카운팅을 수행한다.
다음에, 페치부(fetch unit)(110)는 상기 싸이클 카운터들(cycle counters)(113)이 가리키는 수가 가장 작은 싸이클 카운터를 판별하고, 그에 대응하는 쓰레드(thread) 선택 정보(TSI)를 출력한다. 이에 따라 페치부(fetch unit)(110)에 구비되는 상기 먹스(multiplexer)(117)는 상기 쓰레드(thread) 선택 정보(TSI)에 응답하여 그에 대응하는 프로그램 카운터에서 어드레스(FAD)를 페치한다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 동시 다중 쓰레딩(SMT) 프로세서는, 명령어의 개수에 각 명령어의 수행 주기 회수(cycle count)를 가중치로 사용하여 쓰레드(thread)를 선택하고 그 쓰레드(thread)의 명령어를 페치(fetch)하므로, SMT의 성능을 더욱 향상시키고, 결국 CPU(중앙연산처리장치) 등의 시스템 성능을 더욱 향상시키는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일실시예에 따른 동시 다중 쓰레딩(SMT) 프로세서의 블록도이다.
도 2는 도 1의 페치부(fetch unit)(110)의 구체적인 블록도이다.
도 3은 도 2의 동시 다중 쓰레딩(SMT) 프로세서의 동작 설명을 위한 흐름도이다.

Claims (10)

  1. 페치된 명령어의 연산 종류 및 실행 지시된 명령어 각각에 대응하는 쓰레드들에 대한 카운터 정보에 응답하여 쓰레드별로 카운팅을 수행하고, 쓰레드별 카운팅 값 중에서 가장 작은 카운팅 값에 대응하는 프로그램 카운터에서 어드레스를 페치하는 페치부;
    프로그램 카운터들 각각의 어드레스에 대응하는 명령어들을 저장하고, 상기 페치된 어드레스에 대응하는 상기 페치된 명령어를 출력하는 명령어 캐쉬부;
    상기 페치된 명령어를 해석하여 상기 연산 종류 및 오퍼랜드로 사용될 레지스터의 어드레스를 추출하는 명령어 디코딩부;
    데이터 디펜던시를 피할 수 있는 상기 레지스터 대용의 실제 레지스터의 어드레스를 재명명하는 레지스터 재명명부;
    상기 재명명된 어드레스에 응답하여 상기 페치된 명령어에 대한 상기 실행 지시를 행하는 명령어 지시부; 및
    상기 실행 지시에 응답하여 상기 페치된 명령어를 실행하는 실행부를 구비하고,
    상기 카운터 정보는 상기 명령어 캐쉬부에서 페치된 명령어의 수행 주기 회수에 관련된 정보 및 상기 명령어 지시부에서 실행 지시된 명령어의 수행 주기 회수에 관련된 정보를 포함하고, 상기 수행 주기 회수는 상기 페치된 명령어가 실행되기 전 까지의 시스템 클럭의 사이클 카운트 값인 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.
  2. 제 1항에 있어서, 상기 페치부는,
    상기 페치된 명령어의 연산 종류 및 상기 실행 지시된 명령어 각각에 대응하는 쓰레드들에 대한 상기 카운터 정보를 출력하는 디멀티플렉싱 제어기;
    쓰레드별 상기 싸이클 카운터들을 구비하며, 상기 카운터 정보에 대응하는 쓰레드에 할당되어 있는 상기 싸이클 카운터가 카운팅을 수행하는 싸이클 카운터들;
    상기 싸이클 카운터들이 가리키는 수가 가장 작은 싸이클 카운터를 판별하고, 그에 대응하는 쓰레드 선택 정보를 출력하는 쓰레드 선택기; 및
    상기 쓰레드 선택 정보에 응답하여 그에 대응하는 프로그램 카운터에서 어드레스를 페치하는 먹스를 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.
  3. 제 1항에 있어서, 상기 실행부는,
    상기 연산에 사용될 데이터들을 저장하는 데이터 캐쉬;
    상기 재명명된 어드레스에 대응하는 다수개의 레지스터들을 구비하는 레지스터들; 및
    이전 연산의 종료로 상기 실행 지시된 명령어 수행에 사용될 오퍼랜드들이 생성되면, 상기 실행 지시에 응답하여 상기 페치된 명령어를 실행하는 기능 유닛들을 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.
  4. 제 1항 또는 제 2항에 있어서, 상기 카운터 정보는,
    상기 페치된 명령어의 연산 종류에 대응하는 수행 주기 회수를 합산하는 정보 및 상기 실행 지시된 명령어에 대응하는 상기 수행 주기 회수를 감산하는 정보인 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.
  5. 제 4항에 있어서, 상기 수행 주기 회수는,
    상기 명령어 디코딩부, 상기 레지스터 재명명부, 및 상기 명령어 지시부에서 소요되는 시스템 클럭의 사이클 카운트 값인 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.
  6. 프로그램 카운터들 각각의 어드레스에 대응하는 명령어들을 저장하는 명령어 캐쉬부를 구비하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법에 있어서,
    상기 동시 다중 쓰레딩 프로세서에 구비되는 쓰레드별 싸이클 카운터들 중에서, 페치된 명령어의 연산 종류 및 실행 지시된 명령어 각각에 대응하는 쓰레드들에 대한 카운터 정보에 대응하는 쓰레드에 할당되어 있는 싸이클 카운터가 카운팅을 수행하는 단계;
    상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 싸이클 카운터들이 가리키는 수가 가장 작은 싸이클 카운터를 판별하여 그에 대응하는 프로그램 카운터에서 어드레스를 페치하는 단계;
    상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 명령어 캐쉬부에서 상기 페치된 어드레스에 대응하는 상기 페치된 명령어를 출력하는 단계;
    상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 페치된 명령어를 해석하여 상기 연산 종류 및 오퍼랜드로 사용될 레지스터의 어드레스를 추출하는 단계;
    상기 동시 다중 쓰레딩 프로세서에 의하여, 데이터 디펜던시를 피할 수 있는 상기 레지스터 대용의 실제 레지스터의 어드레스를 재명명하는 단계;
    상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 재명명된 어드레스에 응답하여 상기 페치된 명령어에 대한 상기 실행 지시를 행하는 단계; 및
    상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 실행 지시에 응답하여 상기 페치된 명령어를 실행하는 단계를 구비하고,
    상기 카운터 정보는 상기 명령어 캐쉬부에서 페치된 명령어의 수행 주기 회수에 관련된 정보 및 상기 실행 지시 단계에서 실행 지시된 명령어의 수행 주기 회수에 관련된 정보를 포함하고, 상기 수행 주기 회수는 상기 페치된 명령어가 실행되기 전 까지의 시스템 클럭의 사이클 카운트 값인 것을 특징으로 하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법.
  7. 제 6항에 있어서, 상기 프로그램 카운터에서 어드레스의 페치는,
    상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 페치된 명령어의 연산 종류 및 상기 실행 지시된 명령어 각각에 대응하는 쓰레드들에 대한 상기 카운터 정보를 출력하는 단계;
    상기 동시 다중 쓰레딩 프로세서에 구비되는 쓰레드별 상기 싸이클 카운터들 중에서, 상기 카운터 정보에 대응하는 쓰레드에 할당되어 있는 상기 싸이클 카운터가 카운팅을 수행하는 단계;
    상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 싸이클 카운터들이 가리키는 수가 가장 작은 싸이클 카운터를 판별하고, 그에 대응하는 쓰레드 선택 정보를 출력하는 단계; 및
    상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 쓰레드 선택 정보에 응답하여 그에 대응하는 프로그램 카운터에서 어드레스를 페치하는 단계를 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법.
  8. 제 6항에 있어서, 상기 실행은,
    상기 동시 다중 쓰레딩 프로세서에 구비되는 소정의 기능 유닛들에 의하여, 이전 연산의 종료로 상기 실행 지시된 명령어 수행에 사용될 오퍼랜드들이 생성되면, 소정의 데이터 캐쉬 및 레지스터들을 이용하여 상기 페치된 명령어를 연산하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법.
  9. 제 6항 또는 제 7항에 있어서, 상기 카운터 정보는,
    상기 페치된 명령어의 연산 종류에 대응하는 수행 주기 회수를 합산하는 정보 및 상기 실행 지시된 명령어에 대응하는 상기 수행 주기 회수를 감산하는 정보인 것을 특징으로 하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법.
  10. 제 9항에 있어서, 상기 수행 주기 회수는,
    상기 명령어 디코딩부, 상기 레지스터 재명명부, 및 상기 명령어 지시부에서 소요되는 시스템 클럭의 사이클 카운트 값인 것을 특징으로 하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법.
KR10-2003-0005236A 2003-01-27 2003-01-27 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법 KR100498482B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2003-0005236A KR100498482B1 (ko) 2003-01-27 2003-01-27 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법
US10/754,550 US7269712B2 (en) 2003-01-27 2004-01-12 Thread selection for fetching instructions for pipeline multi-threaded processor
JP2004012433A JP4476636B2 (ja) 2003-01-27 2004-01-20 命令語数に実行周期回数を加重値として用いてスレッドをフェッチする同時多重スレッドプロセッサ及びその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0005236A KR100498482B1 (ko) 2003-01-27 2003-01-27 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법

Publications (2)

Publication Number Publication Date
KR20040068721A KR20040068721A (ko) 2004-08-02
KR100498482B1 true KR100498482B1 (ko) 2005-07-01

Family

ID=32906515

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0005236A KR100498482B1 (ko) 2003-01-27 2003-01-27 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법

Country Status (3)

Country Link
US (1) US7269712B2 (ko)
JP (1) JP4476636B2 (ko)
KR (1) KR100498482B1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7000233B2 (en) * 2003-04-21 2006-02-14 International Business Machines Corporation Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7752627B2 (en) 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7681014B2 (en) * 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7613904B2 (en) 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7490230B2 (en) 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
KR100788500B1 (ko) * 2006-07-14 2007-12-24 엠텍비젼 주식회사 다단 파이프라인 구조의 정점 처리 장치 및 그 방법
US7773621B2 (en) 2006-09-16 2010-08-10 Mips Technologies, Inc. Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch
US7760748B2 (en) * 2006-09-16 2010-07-20 Mips Technologies, Inc. Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch
US7990989B2 (en) * 2006-09-16 2011-08-02 Mips Technologies, Inc. Transaction selector employing transaction queue group priorities in multi-port switch
US7961745B2 (en) 2006-09-16 2011-06-14 Mips Technologies, Inc. Bifurcated transaction selector supporting dynamic priorities in multi-port switch
KR100853457B1 (ko) * 2006-12-04 2008-08-21 한국전자통신연구원 고속의 대량 데이터를 수신하기 위한 데이터 수신 모듈의처리 방법
US8578387B1 (en) * 2007-07-31 2013-11-05 Nvidia Corporation Dynamic load balancing of instructions for execution by heterogeneous processing engines
US9304775B1 (en) 2007-11-05 2016-04-05 Nvidia Corporation Dispatching of instructions for execution by heterogeneous processing engines
US8285973B2 (en) 2008-08-04 2012-10-09 International Business Machines Corporation Thread completion rate controlled scheduling
KR101041777B1 (ko) * 2009-06-08 2011-06-17 엠텍비젼 주식회사 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스
JP5573038B2 (ja) * 2009-07-23 2014-08-20 日本電気株式会社 マルチスレッドプロセッサ及びプログラム
US20110276784A1 (en) * 2010-05-10 2011-11-10 Telefonaktiebolaget L M Ericsson (Publ) Hierarchical multithreaded processing
GB2489708B (en) 2011-04-05 2020-04-15 Advanced Risc Mach Ltd Thread selection for multithreaded processing
KR101892273B1 (ko) 2011-10-12 2018-08-28 삼성전자주식회사 스레드 프로그레스 트래킹 방법 및 장치
JP5803972B2 (ja) 2013-04-18 2015-11-04 株式会社デンソー マルチコアプロセッサ
US9898348B2 (en) 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
US20170139716A1 (en) 2015-11-18 2017-05-18 Arm Limited Handling stalling event for multiple thread pipeline, and triggering action based on information access delay
US10983799B1 (en) 2017-12-19 2021-04-20 Apple Inc. Selection of instructions to issue in a processor
US11422821B1 (en) 2018-09-04 2022-08-23 Apple Inc. Age tracking for independent pipelines
CN115408153B (zh) * 2022-08-26 2023-06-30 海光信息技术股份有限公司 多线程处理器的指令分发方法、装置和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073159A (en) * 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor

Also Published As

Publication number Publication date
JP2004227587A (ja) 2004-08-12
US7269712B2 (en) 2007-09-11
JP4476636B2 (ja) 2010-06-09
KR20040068721A (ko) 2004-08-02
US20040193854A1 (en) 2004-09-30

Similar Documents

Publication Publication Date Title
KR100498482B1 (ko) 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법
KR100227276B1 (ko) 단일 사이클 마이크로 명령을 이용한 명령 스케줄링 방법 및 프로세서
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
TWI728068B (zh) 複數乘法指令
JPH0863356A (ja) 分岐予測装置
JP2008047145A (ja) デュアルスレッドプロセッサ
US10303399B2 (en) Data processing apparatus and method for controlling vector memory accesses
US20130080491A1 (en) Fast condition code generation for arithmetic logic unit
EP2159691B1 (en) Simultaneous multithreaded instruction completion controller
EP2461246B1 (en) Early conditional selection of an operand
US20050216713A1 (en) Instruction text controlled selectively stated branches for prediction via a branch target buffer
EP3559803B1 (en) Vector generating instruction
KR102379886B1 (ko) 벡터 명령 처리
US20180267803A1 (en) Computer Processor Employing Phases of Operations Contained in Wide Instructions
US11157284B1 (en) Predicting an outcome of an instruction following a flush
JP5573038B2 (ja) マルチスレッドプロセッサ及びプログラム
US20090119492A1 (en) Data Processing Apparatus and Method for Handling Procedure Call Instructions
JP5598114B2 (ja) 演算ユニット
Briejer et al. Energy Efficient Branch Prediction for the Cell BE SPU

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: 20130531

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140530

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150601

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160531

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 15