KR20040068721A - 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법 - Google Patents
명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법 Download PDFInfo
- Publication number
- KR20040068721A KR20040068721A KR1020030005236A KR20030005236A KR20040068721A KR 20040068721 A KR20040068721 A KR 20040068721A KR 1020030005236 A KR1020030005236 A KR 1020030005236A KR 20030005236 A KR20030005236 A KR 20030005236A KR 20040068721 A KR20040068721 A KR 20040068721A
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- fetched
- thread
- execution
- address
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 239000000284 extract Substances 0.000 claims abstract description 3
- 230000004044 response Effects 0.000 claims description 25
- 101100135790 Caenorhabditis elegans pcn-1 gene Proteins 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 239000002699 waste material Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
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)
Abstract
명령어수에 수행 주기 회수(cycle count)를 가중치로 사용하여 쓰레드(thread)를 페치(fetch)하는 동시 다중 쓰레딩(SMT) 프로세서 및 그 방법이 개시된다. 상기 동시 다중 쓰레딩(SMT) 프로세서는, 페치부가 명령어 수에 그 수행 주기 회수(cycle count)를 가중치로 사용하여 쓰레드(thread)를 선택하고, 그 쓰레드 중 실행될 명령어의 어드레스를 가리키고 있는 프로그램 카운터에서 어드레스를 페치(fetch)한다. 따라서, SMT의 성능을 더욱 향상시키고, 결국 CPU 등의 시스템 성능을 더욱 향상시키는 효과가 있다.
Description
본 발명은 컴퓨터 시스템의 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) 방법을 제공하는 데 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일실시예에 따른 동시 다중 쓰레딩(SMT) 프로세서의 블록도이다.
도 2는 도 1의 페치부(fetch unit)(110)의 구체적인 블록도이다.
도 3은 도 2의 동시 다중 쓰레딩(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)는, 상기 명령어 디코딩부(instructiondecoder), 상기 레지스터 재명명부(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)를 추출하며, 데이터 디펜던시(datadependency)를 피할 수 있는 상기 레지스터 대용의 실제 레지스터의 어드레스를 재명명한다.
다음에, 상기 동시 다중 쓰레딩(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)는 상기 싸이클 카운터들(cyclecounters)(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)를 출력한다. 이에 따라 페치부(fetchunit)(110)에 구비되는 상기 먹스(multiplexer)(117)는 상기 쓰레드(thread) 선택 정보(TSI)에 응답하여 그에 대응하는 프로그램 카운터에서 어드레스(FAD)를 페치한다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 동시 다중 쓰레딩(SMT) 프로세서는, 명령어의 개수에 각 명령어의 수행 주기 회수(cycle count)를 가중치로 사용하여 쓰레드(thread)를 선택하고 그 쓰레드(thread)의 명령어를 페치(fetch)하므로, SMT의 성능을 더욱 향상시키고, 결국 CPU(중앙연산처리장치) 등의 시스템 성능을 더욱 향상시키는 효과가 있다.
Claims (10)
- 페치된 명령어의 연산 종류 및 실행 지시된 명령어 각각에 대응하는 쓰레드들에 대한 카운터 정보에 응답하여 쓰레드별로 카운팅을 수행하고, 쓰레드별 카운팅 값 중에서 가장 작은 카운팅 값에 대응하는 프로그램 카운터에서 어드레스를 페치하는 페치부;프로그램 카운터들 각각의 어드레스에 대응하는 명령어들을 저장하고, 상기 페치된 어드레스에 대응하는 상기 페치된 명령어를 출력하는 명령어 캐쉬부;상기 페치된 명령어를 해석하여 상기 연산 종류 및 오퍼랜드로 사용될 레지스터의 어드레스를 추출하는 명령어 디코딩부;데이터 디펜던시를 피할 수 있는 상기 레지스터 대용의 실제 레지스터의 어드레스를 재명명하는 레지스터 재명명부;상기 재명명된 어드레스에 응답하여 상기 페치된 명령어에 대한 상기 실행 지시를 행하는 명령어 지시부; 및상기 실행 지시에 응답하여 상기 페치된 명령어를 실행하는 실행부를 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.
- 제 1항에 있어서, 상기 페치부는,상기 페치된 명령어의 연산 종류 및 상기 실행 지시된 명령어 각각에 대응하는 쓰레드들에 대한 상기 카운터 정보를 출력하는 디멀티플렉싱 제어기;쓰레드별 상기 싸이클 카운터들을 구비하며, 상기 카운터 정보에 대응하는 쓰레드에 할당되어 있는 상기 싸이클 카운터가 카운팅을 수행하는 싸이클 카운터들;상기 싸이클 카운터들이 가리키는 수가 가장 작은 싸이클 카운터를 판별하고, 그에 대응하는 쓰레드 선택 정보를 출력하는 쓰레드 선택기; 및상기 쓰레드 선택 정보에 응답하여 그에 대응하는 프로그램 카운터에서 어드레스를 페치하는 먹스를 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.
- 제 1항에 있어서, 상기 실행부는,상기 연산에 사용될 데이터들을 저장하는 데이터 캐쉬;상기 재명명된 어드레스에 대응하는 다수개의 레지스터들을 구비하는 레지스터들; 및이전 연산의 종료로 상기 실행 지시된 명령어 수행에 사용될 오퍼랜드들이 생성되면, 상기 실행 지시에 응답하여 상기 페치된 명령어를 실행하는 기능 유닛들을 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.
- 제 1항 또는 제 2항에 있어서, 상기 카운터 정보는,상기 페치된 명령어의 연산 종류에 대응하는 수행 주기 회수를 합산하는 정보 및 상기 실행 지시된 명령어에 대응하는 상기 수행 주기 회수를 감산하는 정보인 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.
- 제 4항에 있어서, 상기 수행 주기 회수는,상기 명령어 디코딩부, 상기 레지스터 재명명부, 및 상기 명령어 지시부에서 소요되는 시스템 클럭의 사이클 카운트 값인 것을 특징으로 하는 동시 다중 쓰레딩프로세서.
- 프로그램 카운터들 각각의 어드레스에 대응하는 명령어들을 저장하는 명령어 캐쉬부를 구비하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법에 있어서,상기 동시 다중 쓰레딩 프로세서에 구비되는 쓰레드별 싸이클 카운터들 중에서, 페치된 명령어의 연산 종류 및 실행 지시된 명령어 각각에 대응하는 쓰레드들에 대한 카운터 정보에 대응하는 쓰레드에 할당되어 있는 싸이클 카운터가 카운팅을 수행하는 단계;상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 싸이클 카운터들이 가리키는 수가 가장 작은 싸이클 카운터를 판별하여 그에 대응하는 프로그램 카운터에서 어드레스를 페치하는 단계;상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 명령어 캐쉬부에서 상기 페치된 어드레스에 대응하는 상기 페치된 명령어를 출력하는 단계;상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 페치된 명령어를 해석하여 상기 연산 종류 및 오퍼랜드로 사용될 레지스터의 어드레스를 추출하는 단계;상기 동시 다중 쓰레딩 프로세서에 의하여, 데이터 디펜던시를 피할 수 있는 상기 레지스터 대용의 실제 레지스터의 어드레스를 재명명하는 단계;상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 재명명된 어드레스에 응답하여 상기 페치된 명령어에 대한 상기 실행 지시를 행하는 단계; 및상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 실행 지시에 응답하여 상기페치된 명령어를 실행하는 단계를 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법.
- 제 6항에 있어서, 상기 프로그램 카운터에서 어드레스의 페치는,상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 페치된 명령어의 연산 종류 및 상기 실행 지시된 명령어 각각에 대응하는 쓰레드들에 대한 상기 카운터 정보를 출력하는 단계;상기 동시 다중 쓰레딩 프로세서에 구비되는 쓰레드별 상기 싸이클 카운터들 중에서, 상기 카운터 정보에 대응하는 쓰레드에 할당되어 있는 상기 싸이클 카운터가 카운팅을 수행하는 단계;상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 싸이클 카운터들이 가리키는 수가 가장 작은 싸이클 카운터를 판별하고, 그에 대응하는 쓰레드 선택 정보를 출력하는 단계; 및상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 쓰레드 선택 정보에 응답하여 그에 대응하는 프로그램 카운터에서 어드레스를 페치하는 단계를 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법.
- 제 6항에 있어서, 상기 실행은,상기 동시 다중 쓰레딩 프로세서에 구비되는 소정의 기능 유닛들에 의하여, 이전 연산의 종료로 상기 실행 지시된 명령어 수행에 사용될 오퍼랜드들이 생성되면, 소정의 데이터 캐쉬 및 레지스터들을 이용하여 상기 페치된 명령어를 연산하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법.
- 제 6항 또는 제 7항에 있어서, 상기 카운터 정보는,상기 페치된 명령어의 연산 종류에 대응하는 수행 주기 회수를 합산하는 정보 및 상기 실행 지시된 명령어에 대응하는 상기 수행 주기 회수를 감산하는 정보인 것을 특징으로 하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법.
- 제 9항에 있어서, 상기 수행 주기 회수는,상기 명령어 디코딩부, 상기 레지스터 재명명부, 및 상기 명령어 지시부에서 소요되는 시스템 클럭의 사이클 카운트 값인 것을 특징으로 하는 동시 다중 쓰레딩 프로세서의 동시 다중 쓰레딩 방법.
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 true KR20040068721A (ko) | 2004-08-02 |
KR100498482B1 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) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100745904B1 (ko) * | 2003-04-21 | 2007-08-02 | 인터내셔널 비지네스 머신즈 코포레이션 | 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로 |
KR100788500B1 (ko) * | 2006-07-14 | 2007-12-24 | 엠텍비젼 주식회사 | 다단 파이프라인 구조의 정점 처리 장치 및 그 방법 |
KR100853457B1 (ko) * | 2006-12-04 | 2008-08-21 | 한국전자통신연구원 | 고속의 대량 데이터를 수신하기 위한 데이터 수신 모듈의처리 방법 |
KR101041777B1 (ko) * | 2009-06-08 | 2011-06-17 | 엠텍비젼 주식회사 | 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스 |
US9223615B2 (en) | 2011-10-12 | 2015-12-29 | Samsung Electronics Co., Ltd. | Apparatus and method for thread progress tracking |
CN115408153A (zh) * | 2022-08-26 | 2022-11-29 | 海光信息技术股份有限公司 | 多线程处理器的指令分发方法、装置和存储介质 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
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 |
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 |
US7681014B2 (en) * | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US7657891B2 (en) | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
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 |
US7506140B2 (en) * | 2005-02-04 | 2009-03-17 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
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 |
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 |
US7961745B2 (en) | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector supporting dynamic priorities in multi-port switch |
US7773621B2 (en) | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing 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 |
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 |
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 |
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 |
Family Cites Families (3)
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 |
-
2003
- 2003-01-27 KR KR10-2003-0005236A patent/KR100498482B1/ko active IP Right Grant
-
2004
- 2004-01-12 US US10/754,550 patent/US7269712B2/en active Active
- 2004-01-20 JP JP2004012433A patent/JP4476636B2/ja not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100745904B1 (ko) * | 2003-04-21 | 2007-08-02 | 인터내셔널 비지네스 머신즈 코포레이션 | 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로 |
KR100788500B1 (ko) * | 2006-07-14 | 2007-12-24 | 엠텍비젼 주식회사 | 다단 파이프라인 구조의 정점 처리 장치 및 그 방법 |
KR100853457B1 (ko) * | 2006-12-04 | 2008-08-21 | 한국전자통신연구원 | 고속의 대량 데이터를 수신하기 위한 데이터 수신 모듈의처리 방법 |
KR101041777B1 (ko) * | 2009-06-08 | 2011-06-17 | 엠텍비젼 주식회사 | 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스 |
US9223615B2 (en) | 2011-10-12 | 2015-12-29 | Samsung Electronics Co., Ltd. | Apparatus and method for thread progress tracking |
CN115408153A (zh) * | 2022-08-26 | 2022-11-29 | 海光信息技术股份有限公司 | 多线程处理器的指令分发方法、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2004227587A (ja) | 2004-08-12 |
US20040193854A1 (en) | 2004-09-30 |
US7269712B2 (en) | 2007-09-11 |
JP4476636B2 (ja) | 2010-06-09 |
KR100498482B1 (ko) | 2005-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100498482B1 (ko) | 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법 | |
KR100227276B1 (ko) | 단일 사이클 마이크로 명령을 이용한 명령 스케줄링 방법 및 프로세서 | |
US7734897B2 (en) | Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads | |
JPH0863356A (ja) | 分岐予測装置 | |
US10628155B2 (en) | Complex multiply instruction | |
JP2008047145A (ja) | デュアルスレッドプロセッサ | |
US10303399B2 (en) | Data processing apparatus and method for controlling vector memory accesses | |
JP5403973B2 (ja) | アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置 | |
EP2159691B1 (en) | Simultaneous multithreaded instruction completion controller | |
EP2461246B1 (en) | Early conditional selection of an operand | |
TWI770079B (zh) | 向量產生指令 | |
US11481223B2 (en) | Reducing operations of sum-of-multiply-accumulate (SOMAC) instructions | |
US20040006682A1 (en) | Processor and instruction control method | |
US11157284B1 (en) | Predicting an outcome of an instruction following a flush | |
JP5573038B2 (ja) | マルチスレッドプロセッサ及びプログラム | |
US20040128488A1 (en) | Strand switching algorithm to avoid strand starvation | |
US8046569B2 (en) | Processing element having dual control stores to minimize branch latency | |
US20150220343A1 (en) | Computer Processor Employing Phases of Operations Contained in Wide Instructions | |
US8171270B2 (en) | Asynchronous control transfer | |
US20090119492A1 (en) | Data Processing Apparatus and Method for Handling Procedure Call Instructions | |
Owen et al. | A uniform analysis method for DSP architectures and instruction sets with a comprehensive example | |
WO2001082059A2 (en) | Method and apparatus to improve context switch times in a computing system | |
JPH02211533A (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: 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 |