KR100951092B1 - 정교한 멀티스레드 디스패치 차단 방법, 장치 및 컴퓨터 판독가능한 기록 매체 - Google Patents

정교한 멀티스레드 디스패치 차단 방법, 장치 및 컴퓨터 판독가능한 기록 매체 Download PDF

Info

Publication number
KR100951092B1
KR100951092B1 KR1020060048485A KR20060048485A KR100951092B1 KR 100951092 B1 KR100951092 B1 KR 100951092B1 KR 1020060048485 A KR1020060048485 A KR 1020060048485A KR 20060048485 A KR20060048485 A KR 20060048485A KR 100951092 B1 KR100951092 B1 KR 100951092B1
Authority
KR
South Korea
Prior art keywords
dispatch
thread
pipeline
instruction
threads
Prior art date
Application number
KR1020060048485A
Other languages
English (en)
Other versions
KR20060131624A (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 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20060131624A publication Critical patent/KR20060131624A/ko
Application granted granted Critical
Publication of KR100951092B1 publication Critical patent/KR100951092B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control 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
    • 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/3802Instruction prefetching
    • 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)
  • 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

본 발명은 스레드 실행의 정교한 제어를 위해 멀티스레드 프로세서(multi-thread processor) 내에서 스레드(thread)를 차단하는 방법과 컴퓨터 프로그램 제품 및 장치를 제공한다. 다수의 스레드는 하나의 프로세서 내에서 파이프라인(pipeline)을 공유한다. 그러므로, 하나의 스레드 내에서의 긴 명령 대기 상태는 파이프라인을 공유하는 다른 모든 스레드의 정체를 초래할 수 있다. 디스패치 차단 신호 명령은 디스패치 시에 긴 대기 상태를 포함하는 스레드를 차단한다. 차단 시간은 대기 기간에 맞춰지기 때문에, 파이프라인은 긴 대기 상태가 해소된 후에 차단된 스레드로부터의 명령을 디스패치할 수 있다. 하나의 실시예에서 디스패치 차단 신호 명령은 변경된 OR 명령어이며 다른 실시예에서 디스패치 차단 신호 명령은 Nop 명령어이다. 디스패치 시에 하나의 스레드를 차단함으로써, 프로세서는 차단 시간 동안 다른 스레드들로부터의 명령을 디스패치할 수 있다.

Description

정교한 멀티스레드 디스패치 차단 방법, 장치 및 컴퓨터 판독가능한 기록 매체{FINE GRAINED MULTI-THREAD DISPATCH BLOCK MECHANISM}
본 발명과 본 발명의 장점을 더욱 완벽히 이해하기 위하여, 아래와 같이 도면에 따른 설명이 참조로서 주어진다.
도 1은 멀티스레드(multi-thread) 능력을 갖는 프로세서를 나타낸 블록도.
도 2는 다수의 스레드(thread)를 수용할 수 있는 프로세서 내의 명령 파이프라인(instruction pipeline)을 나타내는 블록도.
도 3은 멀티스레드 명령 파이프라인 내의 변경된 디스패치 차단 메커니즘(dispatch block mechanism)의 사용을 도시하는 순서도.
도 4는 멀티스레드 명령 파이프라인의 하나의 스레드를 차단하기 위해 사용되는 변경된 OR 메커니즘의 예를 도시하는 순서도.
도 5는 데이터 프로세싱 시스템(data processing system)을 도시하는 블록도.
본 발명은 일반적으로 멀티스레드 프로세서(multi-thread processor) 내 차단 메커니즘에 관한 것으로, 보다 구체적으로는 스레드 실행의 정교한 제어를 가능케 하는 디스패치 차단 메커니즘(dispatch block mechanism)에 관한 것이다.
멀티스레드 기술은 둘 이상의 별개의 스레드를 하나의 프로세싱 코어(processing core)에서 실행할 수 있도록 해준다. 스레드란 독립적으로 실행 가능한 프로그램의 일부분, 또는 명령어들의 집합이다. 따라서 하나의 스레드 내의 명령어 집합은 프로그램의 순서에 따라 실행되어야 하며, 반면에 별개의 스레드 내 각각의 명령어 집합은 독립적으로, 동시에 실행될 수 있다. 하나의 프로세서 내 다수의 다수의 스레드는 프로세서가 자신의 자원을 더욱 효과적으로 활용할 수 있도록 한다. 멀티스레드 기술은 소프트웨어가 하나의 프로세서를 둘 이상의 프로세서인 것으로 인식하도록 한다.
이상적으로는, 각각의 스레드가 자신의 자원으로 독립적으로 동작하는 것이다. 각각의 스레드들은 자신의 명령 파이프라인(instruction pipeline)과 유닛, 실행 파이프라인(execution pipeline)과 유닛 등을 활용할 것이다. 그러나 실질적으로는 칩 내의 공간 및 자원의 양에 한계가 있기 때문에 이러한 유형의 구현은 가능하지 않다. 그러므로, 서로 다른 스레드들이 몇몇 자원을 공유해야만 한다. 예로써, 다수의 스레드가 동일한 명령 발행 유닛(instruction issue unit) 또는 실행 파이프라인을 공유할 수 있을 것이다. 멀티스레드 프로세서를 사용하면 자원의 병목 현상이 발생하기 때문에, 자원의 공유, 명령어 의존성(instruction dependency) 처리 및 자원에 대한 전근 우선 순위 결정 문제가 성능에 영향을 미치게 된다.
스레드 간 자원 공유의 문제점은 하나의 스레드 내의 긴 대기시간을 가지는 명령이 다른 스레드 내 명령의 실행까지 정체시킬 수 있다는 것이다. 예로써, 스레드 1과 스레드 2가 동일한 명령 발행 유닛을 공유한다고 하자. 만약 스레드 1이 그 명령 유닛 내 다수의 사이클 동안 정체된다면, 스레드 2도 동일한 그 명령 유닛을 공유하기 때문에 다수의 사이클 동안 정체될 것이다. 비-파이프라인 작업이 실행 중이기 때문에, 또는 다수의 사이클이 삭제되기를 기다리는 종속성 때문에 스레드 1이 정체되고 있을 수도 있다. 따라서 스레드 1과 독립적인 스레드 2는 명령어를 발행할 수 없고 스레드 1이 처리되기를 기다려야 한다. 이러한 문제는 스레드 2에게 있어 시간과 자원의 낭비로 이어진다.
상기 문제점을 해결하는 하나의 방법은 스레드들 간 명령어 발행 지점을 분리시키는 것이다. 이것은 확실한 해결책이지만 명령 발행의 복잡도를 증가시키며 칩 내에 부가적인 공간이 요구된다는 단점이 있다. 또 다른 방법은 대기 시간이 긴 명령이 탐지되었을 때 신속하게 그 명령을 제거하는 것이다. 하지만 상기 방법은 삭제 부분이 명령에서 대기 시간을 가지는 부분에 정확하게 일치되지 않는 경우가 대부분이기 때문에 사이클의 낭비를 초래하는 문제점이 있다. 동일한 자원을 공유하는 다수의 스레드가 사이클의 낭비 없이 완전히 독립적으로 작동하는 것을 허용하는 간단한 시스템 또는 메쏘드(method)는 종래 기술을 넘어선 큰 진전을 제공할 것이다.
본 발명은 멀티스레드 프로세서에서 디스패치 시에 스레드를 차단함으로써 스레드 실행을 정교하게 제어하기 위한 방법, 컴퓨터 프로그램 제품, 그리고 장치를 제공한다. 다수의 스레드는 하나의 프로세서 내에서 파이프라인을 공유한다. 그러므로, 하나의 스레드 내에서의 긴 명령 대기 상태는 파이프라인을 공유하는 다른 모든 스레드의 정체를 초래할 수 있다. 긴 대기 상태는 비-파이프라인 작동 또는 의존 상태일 수도 있다. 컴파일러가 이러한 긴 대기 상태를 예견하면, 상기 컴파일러가 특정 스레드를 차단하기 위해 디스패치 차단 신호 명령을 코드화하여 주입한다. 프로세서가 상기 명령을 탐지하면 명령에 의해 지정된 수만큼의 사이클 동안 디스패치 시에 해당 스레드를 차단한다(만약 추가 대기 시간이 탐지되면 하드웨어가 추가로 다른 사이클을 차단한다). 차단되는 시간은 대기 시간에 맞추어지기 때문에 긴 대기 상태가 해소된 후에 파이프라인은 차단되었던 스레드로부터의 명령을 디스패치할 수 있다. 한 실시예에서 디스패치 차단 신호 명령은 변경된(modified) OR 명령어이며, 다른 실시예에서 디스패치 차단 신호 명령은 Nop 명령어이다. OR 명령어와 Nop 명령어는 대기 시간에 부합하는 시간만큼의 특정 수의 사이클 동안 하나의 스레드를 차단한다. 변경된 OR 명령어는 프로그램의 실행이나 기록 파일 상태, 메모리 상태 또는 입력/출력에 영향을 미치지 않으며 오직 디스패치 차단으로서만 작용한다. 디스패치 시에 하나의 스레드를 차단함으로써 프로세서는 상기 스레드가 차단되어 있는 동안 다른 스레드로부터의 명령을 디스패치할 수 있다. 상기 방법은 하나의 스레드에서의 긴 대기 상태가 다수의 스레드의 정체 상태로 이어지 지 않으며 현재 차단된 스레드는 필요한 정확한 수의 사이클 동안만 정체된다는 것을 보장한다.
이어지는 논의에서, 다수의 특정 세부 사항들이 본 발명의 철저한 이해를 위해 제공될 것이다. 그러나, 당업자라면 본 발명이 특정 세부 사항 없이도 실시될 수 있다는 점을 인정할 것이다. 또한 불필요한 세부 사항에서 본 발명을 불분명케 하지 않기 위해 잘 알려진 요소들이 개략도 또는 블록도의 형태로 도시되었다. 또한 네크워크 통신, 전자기 신호 기술 등에 연관된 세부 사항들은 본 발명을 완벽히 이해하기 위해 필요한 부분은 아니라고 판단되며, 당업자에게는 일반적인 사항이라고 고려되기 때문에 생략하였다.
본 발명에서 설명되는 모든 기능들은 따로 지시된 바가 없는 한 하드웨어나 소프트웨어 또는 그들의 조합에서 수행될 수 있다. 그러나 바람직한 실시예에서 상기 기능들은 가장 효율적인 구현을 제공하기 위해 하드웨어로 구현된다. 대신, 상기 기능들은 다른 지시가 없는 한은 이러한 기능을 수행하기 위해 코드화된 컴퓨터 프로그램 코드, 소프트웨어, 및/또는 집적 회로 등과 동일한 코드에 따라 전자식 데이터 프로세서 또는 컴퓨터와 동일한 프로세서에 의해 수행될 수 있다.
도 1은 멀티스레드 능력을 갖는 프로세서(100)를 도시한 블록도이다. 이 프로세서는 메모리 컨트롤러(102)(memory controller)를 포함한다. 메모리 컨트롤러(102)는 프로세서(100)로 들어오고 나가는 데이터와 명령의 흐름을 제어한다. 또 한 명령 유닛(104)은 실행 유닛(106)에 보내어질 명령을 발행한다. 메모리 컨트롤러(102)는 레벨 2 (L2) 캐시(108)와 접속한다. L2 캐시(108)는 명령어와 데이터 모두를 저장한다. L2 캐시(108)는 명령 유닛(104)과 실행 유닛(106)에 있는 레벨 1 (L1) 캐시와 각각 접속한다. 명령 유닛(104)은 명령을 저장하기 위해 L1 캐시(110)을 포함하며, 실행 유닛(106)은 데이터를 저장하기 위해 L1 캐시(114)를 가진다. 명령 유닛(104)은 L1 캐시(110)로부터 명령을 가져오며, 실행 유닛(106)은 L1 캐시(114)로부터 데이터를 읽어오고 L1 캐시(114)에 데이터를 기록한다. 프로세서(100)는 도 1에 도시한 것 이외의 다른 구성요소를 포함할 수 있다. 도 1은 프로세서의 기본적인 대표 도이며, 본 발명의 범위를 제한하는 것은 아니다.
도 2는 다수의 스레드를 수용할 수 있는 프로세서 내 명령 파이프라인(200)을 도시한 블록도이다. 장치(200)는 도 1의 명령 유닛(104) 내에 존재하며, 분리된 세 개의 스레드- (도면에는 나와있지 않은) 스레드 0, 스레드 1, 스레드 2 - 를 수용한다. 앞서 기술한 바와 같이, 스레드는 독립적으로 실행할 수 있는 하나의 프로그램 또는 명령어의 집합이다. 명령 인출 유닛(instruction fetch unit)(202)은 상기 세 개의 스레드에 전달할 명령을 인출한다. 명령 인출 유닛(202)은 우선 순위대로 명령을 인출한다. 일반적으로, 명령 인출 유닛(202)은 상기 각각의 스레드가 명령 파이프라인에 동등한 접근권을 가지도록 세 개의 스레드에 교차적으로 작용한다. 명령 인출 유닛(202)은 상기 명령들을 명령 버퍼로 전송한다. 따라서, IBUF 0(204)은 스레드 0을 위한 명령을 저장하고, IBUF 1(206)은 스레드 1을 위한 명령을 저장하며, IBUF 2(208)는 스레드 2를 위한 명령을 저장한다. 명령 버퍼(204, 206, 208)는 명령들을 디스패치 메커니즘(dispatch mechanism)(210)으로 전송한다. 도 2는 분리된 세 개의 스레드를 도시하고 있으나, 이것은 임의의 숫자일 뿐 상기와 동일한 장치(200)(명령 파이프라인 (200))는 더 많거나 또는 더 적은 수의 스레드를 처리할 수 있다.
디스패치 메커니즘(210)은 명령 파이프라인(216)으로 디스패치할 올바른 명령을 선택하는 멀티플렉서(MUX)이다. 도 2에서는 MUX를 디스패치 메커니즘(210)으로 사용하지만, 동일한 결과를 얻어내기 위해 다른 부품이 주어질 수도 있다. 디스패치 메커니즘(210)은 상기 각각의 스레드에 명령 파이프라인(216)으로의 동등한 우선권과 접근권을 부여하기 위하여 IBUF 0(204), IBUF 1(206), IBUF 2(208)의 출력 사이에서 토글링(toggling)한다. 디스패치 제어 블록(dispatch control block)(214)은 어느 스레드가 디스패치 될지를 선택한다. 만약 디스패치 제어 블록(214)이 변경된 OR 명령어를 탐지하면, 디스패치 메커니즘(210)의 정상적인 토글링 메커니즘을 중단한다. 디스패치 후에 명령들은 명령 파이프라인(216)의 단계로 내려간다. 명령 파이프라인(216)은 도 1에서의 실행 유닛(106)에 명령들을 공급하고 실행 유닛(106)은 상기 명령들을 실행한다. 애플리케이션은 발행 파이프라인, 보다 구체적으로는 명령 파이프라인에 대한 예시적인 실시예를 나타낸 것이다. 이 실시예는 자원의 경합이 있는 파이프라인 내 어느 지점에라도 적용 가능하다. 예로써, 상기 실시예는 실행 파이프라인에도 적용할 수 있다.
실례가 되는 상기 실시예는 디스패치 메커니즘(210), 디스패치 제어 블록(214) 및 (도면에는 도시되지 않은) 컴파일러와 관련이 있다. 결과적으로, 상기 세 개의 모든 스레드가 명령 파이프라인(216)을 공유하기 때문에 스레드 0을 정체되게 하는 명령은 독립적인 스레드 1 및 2의 정체 또한 야기한다. 상기 실례가 되는 실시예는 파이프라인의 디스패치 시점 (디스패치 메커니즘(210))에서 디스패치 차단 신호 명령을 사용함으로써 차단 메커니즘을 작동한다. 컴파일러는 스레드 0이 디스패치 시에 차단되어 있는 동안 스레드 1 및 2로부터의 명령을 디스패치 할 수 있도록 디스패치 메커니즘(210)을 제어한다. 상기 방법은 디스패치 시에 스레드 0이 차단되어 있는 동안 독립적인 스레드 1 및 2가 명령 파이프라인(216) 내에서 명령을 계속 실행할 수 있도록 한다. 이렇게 스레드의 실행의 정교한 제어는 상기 멀티스레드 프로세서의 시간과 자원을 절약한다.
하나의 실시예에서, 컴파일러는 파이프라인에 입력된 새로운 형태의 OR 명령어를 사용함으로써 상기 디스패치 차단 신호 명령을 실행한다. 상기 명령은 하나의 스레드가 차단되어 있는 동안 다른 스레드들이 디스패치 메커니즘(210)에 접근하는 것을 허용하도록, 프로그램할 수 있는 수만큼의 사이클에 대해, 디스패치 시에 특정 스레드의 모든 명령을 차단한다. 상기 특별한 형태의 OR 명령어는 디스패치 시에 스레드를 차단하는 것 외에는 시스템에 다른 영향을 미치지 않는다. 상기 OR 명령어는 컴파일러가 최상의 결과를 만들어내는 서로 다른 차단 시점에 대해서 쉽게 디코딩 및 구성될 수 있다. 한 실시예에서, 상기 컴파일러는 각각 다르게 디코딩된 명령어 타입에 대해 차단 지연을 구성할 수 있다.
실례가 되는 다른 실시예에서, 디스패치 차단 신호 명령은 Nop 명령어이다. Nop 명령어는 프로그램의 실행이나 레지스터 파일 상태, 메모리 상태 또는 입력/출 력에 영향을 미치지 않는 명령어이다. 상기 실시예에서 Nop 명령어는 디스패치 차단으로 작용한다. Nop 명령어에는 여러 종류가 있으며, 그 중 어떤 종류의 Nop 명령어는 스레드도 차단하지 않으며 어떠한 일도 하지 않는다. Nop 명령어가 시스템에 어떠한 영향도 미치지 않도록 디자인함으로써, 프로세서(100)는 차단을 요구하기 위한 어떠한 레지스터 자원도 소비하지 않는 이익을 얻을 수 있다. 한 예로써, 디스패치 제어 블록(214)이 10개의 사이클 동안 스레드 0을 차단할 필요가 있다고 하자. 컴파일러는 명령 파이프라인(216)을 정체로부터 막아주는 10개의 Nop 명령어를 디스패치할 것이다. 이것은 스레드 0이 차단되어 있는 동안 스레드 1과 2가 디스패치되도록 한다. 하나의 실시예에서, 컴파일러는 10개의 사이클 동안 스레드 0의 실행을 연기시키는 하나의 변경된 Nop 명령어를 디스패치한다. 하나의 변경된 Nop 명령어를 발행하는 것만으로 컴파일러는 더 작은 코드 공간을 통해 시간과 자원을 절약할 수 있다.
디스패치 메커니즘(210)에 대한 우선 순위 방안이 있다. 따라서, 디스패치 메커니즘(210)은 명령 파이프라인으로의 동등한 접근권을 제공하기 위해 스레드 0, 1 및 2 사이에서 토글링한다. 본 발명에서, 변경된 Nop (OR) 명령어는 디스패치 메커니즘(210)이 특정 스레드를 무시하고 그 외 다른 스레드 사이에서 토글링하도록 이끈다. 예로써, 스레드 1의 10개의 사이클 동안 Nop 명령어는 디스패치 메커니즘(210)이 10개의 사이클 동안 스레드 0 및 2 사이에서 토글링 하도록 한다. 따라서, 디스패치 시에 스레드 1이 디스패치 차단되어 있는 동안 스레드 0 및 2는 디스패치 메커니즘(210)으로의 독점적인 접근권을 가지게 된다.
변경된 OR 명령어의 한 예로써 아래의 OR 명령어는 다음과 동일한 디스패치 지연을 발생시킨다.
OR 28,28,28 // 8개의 사이클 동안 차단
OR 29,29,29 // 10개의 사이클 동안 차단
OR 30,30,30 // 12개의 사이클 동안 차단
OR 31,31,31 // 16개의 사이클 동안 차단
상기 집합의 사이클 수는 임의적이며 단지 변경된 OR 명령어의 한 예를 제공하는 것이다. 상기 명령어에 대한 지정된 타이밍은 소프트웨어로 프로그램된다. 그러므로, 컴파일러가 명령 파이프라인의 정체로 인해 지연을 일으키는 특정한 명령 시퀀스를 탐지하면, 상기 지연을 조정하기 위해 변경된 OR 명령어를 발행할 것이다. 상응하는 OR 연산은 긴 대기 상태에 정확히 일치하거나 대략적으로 일치할 수 있다. 따라서, 만약 추가적인 대기 시간이 탐지된다면, 하드웨어가 사이클을 OR 명령어에 추가할 수도 있다.
도 3은 멀티스레드 명령 파이프라인 내의 변경된 디스패치 차단 메커니즘(dispatch block mechanism)의 사용을 도시한 순서도(300)이다. 먼저, 단계 302에서 명령어 인출 유닛(202)이 명령어를 인출한다. 그 다음 단계 304에서, 명령 버퍼(204, 206, 208)가 명령어를 저장한다. 디스패치 메커니즘(210)은 단계 306에서 차단되지 않은 명령들을 우선 순위대로 디스패치한다. 앞서 기술한 바와 같이, 디스패치 메커니즘(210)은 스레드 0, 1, 및 2 사이에서 토글링한다. 단계 308에서 디스패치 메커니즘(210)은 변경된 OR 명령어가 있는지 여부를 판정한다. 만약 변경된 OR 명령어가 없다면, 단계 306에서 디스패치 메커니즘(210)은 차단되지 않은 명령들을 우선 순위대로 계속 디스패치한다. 만약 변경된 OR 명령어가 있다면, 단계 312에서 디스패치 메커니즘(210)은 해당 스레드가 디스패칭되는 것을 차단하고, 차단되지 않은 다른 스레드들이 "OR" 문이 주어진 시간 동안 명령을 디스패치할 수 있도록 한다. 따라서, 멀티스레드에서의 "OR" 명령어는 디스패치 메커니즘(210)이 다수의 스레드를 동시에 차단할 수 있도록 해준다. 이러한 형식으로 한 번에 한 개 이상의 스레드를 차단할 수 있다.
도 4는 멀티스레드 명령 파이프라인 내 하나의 스레드를 차단하는데에 사용되는 변경된 OR 절차의 한 예시를 도시한 순서도(400)이다. 이 예는 플로팅 추가 명령(Floating Add instruction A- FAA)과 이에 종속적인 또 다른 플로팅 추가 명령(Floating Add instruction B- FAB)을 포함한다. 상기 두 명령문은 도 2의 스레드 0에 존재한다. 이 예에서, 스레드 0은 실행 또는 결과를 도출하는데에 10 사이클이 걸린다. 그러므로, 종속 연산 FAB는 종속성이 소거되기를 기다리기 위해 명령 파이프라인(216) 내에서 10 사이클을 기다려야 한다. 따라서, 스레드 0 내의 종속적인 플로팅 추가 명령(FAB)이 뒤따르는 플로팅 추가 명령(FAA)이 OR 29,29,29인 OR 명령어에 대응한다는 것을 컴파일러가 알아야 한다. 컴파일러는 상기 OR 명령어를 스레드 0 에 삽입한다. 이것은, 디스패치 제어 유닛(214)이 종속 명령 FAB를 적시에 차단하기 위해 상기 변경된 OR 명령어 중 하나가 존재하면 즉각적으로 디스패치를 차단할 수 있다는 것을 가정한다. 만약 그렇지 않고 디스패치를 차단하기 전에 대기 시간이 있다면, 컴파일러는 변경된 OR 명령어 다음에 일반적인 Nop 명령어 를 보충하여 입력할 수 있다.
먼저, 명령 발행 유닛(202)은 (402)단계에서 FAA, 변경된 OR 명령어 및 FAB를 인출한다. IBUF 0(204)은 (404)단계에서 FAA, "OR" 및 FAB를 저장한다. FAB는 명령 인출 유닛(202)에서부터 IBUF 0(204)까지 FAA를 따르는 OR 명령어를 따른다. 스레드 0은 (406)단계에서 FAA를 디스패치해야 한다. 그 다음에 스레드 0은 (407)단계에서 변경된 OR 명령어를 디스패치한다. OR 명령어는 (408)단계에서 스레드 0을 10 사이클 동안 차단하고, (412)단계에서 디스패치 제어 유닛(214)이 디스패치 메커니즘(210)으로 하여금 10 사이클 동안 스레드 1 및 2로부터의 명령들을 디스패치할 수 있도록 해준다. 10 사이클 후에 디스패치 메커니즘(210)은 (414)단계에서 스레드 0, 1 및 2로부터의 명령들을 디스패치한다. 스레드 1 및 2는 스레드 0에 대한 OR 명령어의 영향을 전혀 받지 않는다. 사실, 스레드 1 및 2는 스레드 0의 디스패치 차단 덕분에 더욱 빨리 실행된다.
상기 변경된 OR 명령어는 하나의 스레드가 비-파이프라인 연산을 해야할 때에도 유익하다. 비-파이프라인 명령은 일반적으로 실행되는데 오랜 시간이 소요되며 동일한 자원을 사용하는 차후의 명령 또한 비-파이프라인 연산을 해야만 한다. 따라서, 차후의 명령들은 비-파이프라인 명령의 실행이 끝날 때까지 기다려야만 한다. 이것은 명령 파이프라인(216)의 상당한 정체를 유발시키며, 다른 스레드들에게도 불리하다. 만약 컴파일러가 그러한 결과(정체)가 나타날 것을 인식한다면, 상기 컴파일러는 변경된 OR 명령어를 사용하여 비-파이프라인 명령을 디스패칭한 후 스레드를 특정 수만큼의 사이클 동안 차단할 수 있다. 그렇게 되면, 비-파이프라인 명령은 간접적으로 명령 파이프라인(216)을 정체시키지 않을 것이다. 다른 스레드들은 현재 실행 중인 비-파이프라인 명령이 사용하고 있는 것과 동일한 자원을 사용하지않는 한은 디스패치 및 발행될 수 있다. 명령 파이프라인의 잦은 대기 상태는 상기 변경된 OR 명령어를 활용함으로써 피할 수 있다. 하나의 스레드가 긴 대기 지연 상태임에도 불구하고 공유된 발행 파이프라인 내의 다수의 스레드로부터 명령을 발행하는 능력은 종래 기술을 넘어서는 명백한 성과이다.
도 5는 본 발명의 한 실시예에 따른 서버, 고객 컴퓨팅 장치, 핸드헬드 장치, 노트북, 또는 다른 종류의 데이터 처리 시스템으로 구현될 수 있는 데이터 처리 시스템(500)의 블록도를 도시한다. 데이터 처리 시스템(500)은 본 발명의 특징들을 구현할 수 있고, 대칭 멀티프로세서(SMP- Symmetric Multiprocessor) 시스템 또는 시스템 버스(506)에 연결된 100 및 120의 다수의 프로세서를 포함하는 균일하지 않은 시스템일 수도 있다.
메모리 컨트롤러/캐시(508)는 로컬 메모리(509)로의 인터페이스를 제공하고 시스템 버스 506에 연결되어 있다. I/O 버스 브릿지(510)는 시스템 버스(506)에 연결되고 I/O 버스(512)로의 인터페이스를 제공한다. 메모리 컨트롤러/캐시(508) 및 I/O 버스 브릿지(510)은 도시된 바와 같이 일체화될 수 있다. I/O 버스(512)에 연결된 PCI(Peripheral Component Interconnect) 버스 브릿지(514)는 PCI 로컬 버스(516)로의 인터페이스를 제공한다. 다수의 모뎀이 PCI 로컬 버스(516)에 연결될 수 있다. 전형적인 PCI 버스는 4개의 PCI 확장 슬롯 또는 애드인 커넥터를 지원할 것이다. 모뎀(518)과 네트워크 어댑터(520)는 (도면에는 나와있지 않은)애드인 커 넥터를 통해서 PCI 로컬 버스(516)에 연결된 다른 컴퓨팅 장치에 연결되는 통신 링크를 제공한다. 부가적인 PCI 버스 브릿지(522, 524)는 추가적인 모뎀과 (도면에는 나와있지 않은)네트워크 어댑터를 지원하는 부가적인 PCI 로컬 버스(526, 528)에 대한 인터페이스를 제공한다. 이런 방식으로 데이터 처리 시스템(500)은 다수의 네트워크 컴퓨터로의 연결을 허용한다. 메모리 맵핑된 그래픽 어댑터(530)와 하드디스크(532)가 도시된 바와 같이 I/O 버스(512)에 직간접적으로 연결될 수도 있다.
따라서, 도 5에 도시된 하드웨어는 가변적일 수도 있다. 예로써, 광디스크 드라이브 등과 같은 다른 주변 장치가 또한 도시된 하드웨어에 추가하거나 또는 대체하여 사용될 수 있다. 도시된 예는 본 발명에 관련하여 구조적 제한을 의미하지 않는다. 예로써, 데이터 처리 시스템(500)은 뉴욕 아몽크 주재의 IBM사 제품인 IBM 딥블루 시스템, CMT-5 시스템일 수도 있으며, AIX 운영 체제, 리눅스, 또는 기타 운영 체제를 실행시키는 다른 멀티 코어 처리 시스템일 수도 있다.
본 발명이 많은 형태와 실시예들이 가능하다는 점을 이해할 수 있을 것이다. 따라서, 본 발명의 영역을 벗어나지 않으면서 현 디자인의 몇 가지 변형이 만들어질 수 있다. 본 명세서에서 약술한 가능성은 다양한 네트워킹 모델을 허용한다. 본 명세서는 어떠한 특정 네트워킹 모델의 선택으로 해석되어서는 안되며, 네트워킹 모델을 구축할 수 있는 근원적인 개념에 관한 것이다.
이상 바람직한 실시예를 참조하여 본 발명을 설명하였지만, 여기에서 나타낸 실시예는 본질상 제한적이라기보다 예시적이며, 전술한 설명에서 넓은 범위의 변동, 수정, 변화, 대체가 고려된다는 점을 주지해야 한다. 또한 몇몇의 예에서 본 발명의 몇 가지 특징들이 다른 특징들의 유사한 사용 없이 쓰일 수 있다. 이러한 다수의 변동과 수정은 바람직한 실시예에 대한 전술한 상세한 설명 검토에 근거하여, 당업자에 의해 바람직한 것으로 생각될 수도 있다. 따라서 첨부한 청구 범위는 본 발명의 영역에 부합하는 방식으로 넓게 해석되는 것이 적합하다.
본 발명에 따르면, 멀티스레드 프로세서에서 디스패치 시에 스레드를 차단함으로써 스레드 실행을 정교하게 제어할 수 있다.

Claims (20)

  1. 다수의 스레드가 하나의 파이프라인을 공유하는 멀티스레드 프로세서 내 파이프라인의 디스패치 시점에서 하나의 스레드를 차단하는 방법에 있어서,
    상기 파이프라인 내 제 1 스레드의 긴 대기 상태(a long latency condition)를 탐지하는 단계와,
    상기 긴 대기 상태와 관련된 정확한 대기 시간을 결정하는 단계와,
    디스패치 차단(dispatch-block) 신호 명령을 생성하는 단계와,
    상기 디스패치 차단 신호 명령에 응답하여 상기 디스패치 시점에서 상기 제 1 스레드를 일정량의 사이클 동안 차단하는 단계와,
    상기 차단 동안 명령 파이프라인의 차단되지 않은 스레드들로부터의 명령을 디스패칭하는 단계와,
    상기 차단 종료 후 상기 명령 파이프라인의 차단되지 않은 모든 스레드들로부터의 명령을 디스패칭하는 단계를 포함하는
    방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 긴 대기 상태는 비-파이프라인 동작(non-pipeline operation) 또는 종속상태(dependency)인
    방법.
  4. 제 1 항에 있어서,
    상기 정확한 대기 시간을 결정하는 단계는,
    상기 파이프라인 내의 각각의 가능한 긴 대기 상태에 대한 대기 시간을 결정하는 단계와,
    각 대기 시간에 상응하는 사이클 시간을 상기 멀티스레드 프로세서에 프로그래밍하는 단계를 더 포함하는
    방법.
  5. 제 1 항에 있어서,
    상기 디스패치 차단 신호 명령을 생성하는 단계는 상기 대기 시간에 대응하는 일정량의 사이클 동안 상기 제 1 스레드를 차단하기 위한 디스패치 차단 신호 명령을 생성하는 단계를 더 포함하는
    방법.
  6. 제 5 항에 있어서,
    상기 멀티스레드 프로세서는 상기 제 1 스레드로 상기 디스패치 차단 신호 명령을 삽입하는
    방법.
  7. 제 6 항에 있어서,
    상기 디스패치 차단 신호 명령은 상기 디스패치 시점에서 상기 대기 시간에 대응하는 상기 일정량의 사이클 동안 상기 제 1 스레드를 차단하는 하나의 Nop 명령어인
    방법.
  8. 제 6 항에 있어서,
    상기 디스패치 차단 신호 명령은 상기 디스패치 시점에서 상기 대기 시간에 대응하는 상기 일정량의 사이클 동안 상기 제 1 스레드를 차단하는 변경된 OR 명령어인
    방법.
  9. 제 1 항에 있어서,
    상기 파이프라인은 명령 파이프라인 또는 실행 파이프라인인
    방법.
  10. 멀티스레드 프로세서 내 파이프라인의 디스패치 시점에서 하나의 스레드를 차단하는 컴퓨터 프로그램을 포함하는 컴퓨터 판독가능한 저장 매체에 있어서,
    상기 파이프라인은 다수의 스레드에 의해 공유되고,
    상기 컴퓨터 프로그램은 청구항 제 1 항, 제 3 항, 제 4 항, 제 5 항, 제 6 항, 제 7 항, 제 8 항 또는 제 9 항 중 어느 한 항에 따른 방법의 각각의 단계를 수행하는 각각의 컴퓨터 코드를 포함하는
    컴퓨터 판독가능한 저장 매체.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 멀티스레드 프로세서 내 파이프라인- 상기 파이프라인은 다수의 스레드에 의해 공유됨- 의 디스패치 시점에서 하나의 스레드를 차단하기 위한 장치에 있어서,
    상기 파이프라인에 연결되어 다수의 스레드로부터의 명령을 디스패치하도록 구성된 디스패치 메커니즘과,
    컴파일러와,
    상기 디스패치 메커니즘 및 상기 컴파일러에 연결된 디스패치 제어 블록을 포함하되,
    상기 컴파일러는,
    상기 파이프라인 내 제 1 스레드의 긴 대기 상태를 탐지하고,
    상기 긴 대기 상태와 관련된 대기 시간을 판단하며,
    상기 디스패치 시점에서 상기 대기 시간에 대응하는 일정량의 사이클 동안 상기 제 1 스레드를 차단하기 위한 디스패치 차단 신호 명령을 생성하고,
    상기 파이프라인에 상기 디스패치 차단 신호 명령을 삽입하도록 구성되며,
    상기 디스패치 제어 블록은,
    상기 디스패치 차단 신호 명령에 응답하여 상기 제 1 스레드의 명령의 디스패치를 차단하고,
    상기 대기 시간에 상응하는 일정량의 사이클 후에 차단되지 않은 모든 스레드들의 명령의 디스패치를 가능케 하도록 구성되는
    장치.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020060048485A 2005-06-16 2006-05-30 정교한 멀티스레드 디스패치 차단 방법, 장치 및 컴퓨터 판독가능한 기록 매체 KR100951092B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/154,158 US7313673B2 (en) 2005-06-16 2005-06-16 Fine grained multi-thread dispatch block mechanism
US11/154,158 2005-06-16

Publications (2)

Publication Number Publication Date
KR20060131624A KR20060131624A (ko) 2006-12-20
KR100951092B1 true KR100951092B1 (ko) 2010-04-07

Family

ID=37519386

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060048485A KR100951092B1 (ko) 2005-06-16 2006-05-30 정교한 멀티스레드 디스패치 차단 방법, 장치 및 컴퓨터 판독가능한 기록 매체

Country Status (5)

Country Link
US (1) US7313673B2 (ko)
JP (1) JP5047542B2 (ko)
KR (1) KR100951092B1 (ko)
CN (1) CN100462913C (ko)
TW (1) TWI390445B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
JP2009110209A (ja) * 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
US8260990B2 (en) * 2007-11-19 2012-09-04 Qualcomm Incorporated Selective preclusion of a bus access request
US8701111B2 (en) * 2008-07-09 2014-04-15 International Business Machines Corporation Lock windows for reducing contention
US7941644B2 (en) * 2008-10-16 2011-05-10 International Business Machines Corporation Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer
US9310875B2 (en) 2011-12-22 2016-04-12 Intel Corporation Instruction that specifies an application thread performance state
CN103246552B (zh) * 2012-02-14 2018-03-09 腾讯科技(深圳)有限公司 防止线程出现阻塞的方法和装置
CN104205042B (zh) 2012-03-30 2019-01-08 英特尔公司 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制
US10430190B2 (en) * 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
CN103345422B (zh) * 2013-07-02 2019-01-29 厦门雅迅网络股份有限公司 一种基于Linux的多线程硬实时控制方法
JP6225554B2 (ja) 2013-08-14 2017-11-08 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN105393240B (zh) 2013-09-06 2018-01-23 华为技术有限公司 具有辅助异步向量处理器的异步处理器的方法和装置
CN104301253A (zh) * 2014-10-21 2015-01-21 合肥星服信息科技有限责任公司 线程池和共享池组合优化大负荷通讯服务器
US11023233B2 (en) * 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
US10185564B2 (en) * 2016-04-28 2019-01-22 Oracle International Corporation Method for managing software threads dependent on condition variables
CN109213529B (zh) * 2017-07-07 2021-09-28 龙芯中科技术股份有限公司 流水线处理器调度指令的方法、装置及流水线处理器
CN111552574A (zh) * 2019-09-25 2020-08-18 华为技术有限公司 一种多线程同步方法及电子设备
CN110769046B (zh) * 2019-10-17 2022-11-18 新华三信息安全技术有限公司 一种报文获取方法、装置、电子设备及机器可读存储介质
US11372647B2 (en) * 2019-12-05 2022-06-28 Marvell Asia Pte, Ltd. Pipelines for secure multithread execution
GB2596872B (en) * 2020-07-10 2022-12-14 Graphcore Ltd Handling injected instructions in a processor
CN116521351B (zh) * 2023-07-03 2023-09-05 建信金融科技有限责任公司 多线程任务调度方法、装置、存储介质及处理器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060031704A1 (en) 2004-08-04 2006-02-09 Hiroo Hayashi Fine granularity halt instruction
US20060190703A1 (en) 2005-02-24 2006-08-24 Microsoft Corporation Programmable delayed dispatch in a multi-threaded pipeline

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0644089A (ja) * 1992-05-18 1994-02-18 Matsushita Electric Ind Co Ltd 情報処理装置
US5584031A (en) * 1993-11-09 1996-12-10 Motorola Inc. System and method for executing a low power delay instruction
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6694425B1 (en) * 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US20040111594A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Multithreading recycle and dispatch mechanism
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US20040226011A1 (en) * 2003-05-08 2004-11-11 International Business Machines Corporation Multi-threaded microprocessor with queue flushing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060031704A1 (en) 2004-08-04 2006-02-09 Hiroo Hayashi Fine granularity halt instruction
US20060190703A1 (en) 2005-02-24 2006-08-24 Microsoft Corporation Programmable delayed dispatch in a multi-threaded pipeline

Also Published As

Publication number Publication date
US20060288192A1 (en) 2006-12-21
CN1881176A (zh) 2006-12-20
TW200709053A (en) 2007-03-01
US7313673B2 (en) 2007-12-25
JP5047542B2 (ja) 2012-10-10
CN100462913C (zh) 2009-02-18
KR20060131624A (ko) 2006-12-20
TWI390445B (zh) 2013-03-21
JP2006351008A (ja) 2006-12-28

Similar Documents

Publication Publication Date Title
KR100951092B1 (ko) 정교한 멀티스레드 디스패치 차단 방법, 장치 및 컴퓨터 판독가능한 기록 매체
CN108701040B (zh) 用户级别线程暂停的方法、设备、和指令
US7127561B2 (en) Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7363474B2 (en) Method and apparatus for suspending execution of a thread until a specified memory access occurs
KR100617417B1 (ko) 멀티-스레딩 프로세서에서 스레드의 실행을 정지시키기위한 시스템 및 방법
US8301870B2 (en) Method and apparatus for fast synchronization and out-of-order execution of instructions in a meta-program based computing system
US10331531B2 (en) Self-testing in a processor core
US20040205747A1 (en) Breakpoint for parallel hardware threads in multithreaded processor
EP1685486B1 (en) Interrupt handling in an embedded multi-threaded processor to avoid priority inversion and maintain real-time operation
JP6450705B2 (ja) 永続コミットプロセッサ、方法、システムおよび命令
US20030126379A1 (en) Instruction sequences for suspending execution of a thread until a specified memory access occurs
US20090113179A1 (en) Operational processing apparatus, processor, program converting apparatus and program
EP1890225A1 (en) Methods and apparatus for handling switching among threads within a multithread processor
JP2001092656A (ja) 命令のインオーダ処理を効率的に実行するスーパースケーラ処理システム及び方法
US11086631B2 (en) Illegal instruction exception handling
JPH04153734A (ja) 並列処理装置
JP2007528549A (ja) 電子回路
KR20140131199A (ko) 재구성 가능 프로세서 및 재구성 가능 프로세서의 동작 방법
US5761492A (en) Method and apparatus for uniform and efficient handling of multiple precise events in a processor by including event commands in the instruction set
JP2008269390A (ja) プロセッサ
JPH0384632A (ja) データ処理装置
JPH09274567A (ja) プログラムの実行制御方法及びそのためのプロセッサ
US7558946B2 (en) Breaking a lock situation in a processor without detection of the lock situation using a multi-level approach
JP2011008617A (ja) マルチスレッド実行装置、オブジェクトプログラムの生成方法、プログラム
Sekar et al. Automatic Generation of Interrupt-Aware Hardware Accelerators with the M2V Compiler

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140312

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee