KR100676011B1 - 인스트럭션 처리 방법 및 장치와 기계 판독가능한 매체 - Google Patents

인스트럭션 처리 방법 및 장치와 기계 판독가능한 매체 Download PDF

Info

Publication number
KR100676011B1
KR100676011B1 KR1020047010518A KR20047010518A KR100676011B1 KR 100676011 B1 KR100676011 B1 KR 100676011B1 KR 1020047010518 A KR1020047010518 A KR 1020047010518A KR 20047010518 A KR20047010518 A KR 20047010518A KR 100676011 B1 KR100676011 B1 KR 100676011B1
Authority
KR
South Korea
Prior art keywords
dependency
descriptor
trace
instruction
dependency chain
Prior art date
Application number
KR1020047010518A
Other languages
English (en)
Other versions
KR20040075050A (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 KR20040075050A publication Critical patent/KR20040075050A/ko
Application granted granted Critical
Publication of KR100676011B1 publication Critical patent/KR100676011B1/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/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
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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
    • G06F9/3891Concurrent 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 organised in groups of units sharing resources, e.g. clusters

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 모든 중재 인스트럭션들을 인출하지 않고 프로그램 세그먼트들을 통해 많은 단계들을 신속하고 효율적으로 취하는 프로세서의 마이크로아키텍처를 위한 장치 및 방법에 관한 것이다. 이 마이크로아키텍처는 데이터 플로우 순서로 종속성 체인의 인스트럭션을 인출하여 실행하는 데 사용되는 종속성 체인의 기술자를 위치시켜 디스패칭하기 위해 프로그램 순서로 트레이스 시퀀스의 기술자를 처리한다.

Description

인스트럭션 처리 방법 및 장치와 기계 판독가능한 매체{DEPENDENCE-CHAIN PROCESSORS}
본 발명은 마이크로 프로세싱(microprocessing) 분야에 관한 것으로, 보다 구체적으로 본 발명은 종속성 체인(dependency chains) 내에서 그룹화된(grouped) 마이크로프로세서 인스트럭션을 실행하기 위한 장치 및 방법에 관한 것이다.
현재의 대부분의 프로세서는 슈퍼스칼라 프로세서(superscalar processors)로 지칭되는 프로세서의 카테고리에 속한다. 이 카테고리는 RISC(Reduced Instruction Set Computer) 또는 CISC(Complex Instructions Set Computer) 프로세서로 더 세분된다. 이 프로세서들은 다수의 내부 프로세싱 유닛(processing units)으로 구성되는데, 이 내부 프로세싱 유닛은 이들 프로세싱 유닛으로 다수의 인스트럭션을 디스패칭(dispatching)하기 위한 회로를 구비한다. 슈퍼스칼라 프로세서는 프로그램 순서에 맞게 인스트럭션의 시퀀스를 인출(fetch)한다. 슈퍼스칼라 프로세서의 디스패칭 회로는 파이프라인(pipeline)으로도 지칭되는 인스트럭션의 큐(queue)를 이용하여 단일 프로세서 사이클 내에서 다수의 인스트럭션을 실행 할 수 있게 한다.
이 아키텍쳐는 또한 파이프라인 내에서 동시에 실행될 수 있는 인스트럭션들을 검색하는 회로를 포함한다. 파이프라인의 폭을 넓히면 사이클 당 더 많은 수의 인스트럭션을 실행할 수 있게 된다. 그러나, 임의의 주어진 인스트럭션의 시퀀스가 이러한 가능성을 이용할 수 있다는 것을 보장할 수 없다. 인스트럭션들은 서로에 대해 독립적이지 않고 상호 연관되어 있다. 이러한 상호 관계로 인해 소정의 인스트럭션은 다른 인스트럭션이 실행될 때까지 실행될 수 없게 하고, 그에 따라, 프로세서의 최대 성능을 이용하여 다수의 인스트럭션을 동시에 실행할 수 없게 한다.
VLIW(Very Long Instructions Word) 프로세서는 각 인스트럭션이 다수의 동작을 실행할 수 있게 하는 프로세서의 다른 카테고리를 구성한다. 인스트럭션에 의한 각각의 동작은 내부 프로세싱 유닛에 대응된다. VLIW 프로세서는 다수의 실행 유닛에 대한 동작의 디스패칭이 인스트럭션 레벨에서 달성되기 때문에 슈퍼스칼라 프로세서에 비해 단순하다. 단일의 VLIW 인스트럭션이 다수의 동작을 지정할 수 있기 때문에, VLIW 프로세서는 프로그램을 위해 요구되는 인스트럭션의 개수를 감소시킬 수 있다. 그러나, VLIW 프로세서의 인스트럭션당 평균 사이클 수를 슈퍼스칼라 프로세서의 레이트(rate)와 동등하게 유지하기 위해서는, VLIW 인스트럭션에 의해 지정되는 동작이 서로에 대해 독립적이어야 한다. 그렇지 않은 경우, VLIW 인스트럭션은 순차적인 다중 동작 CISC 인스트럭션과 유사하고, 인스트럭션당 사이클의 개수는 그에 따라서 증가된다. VLIW 프로세서에서 인스트럭션의 세트 또는 길이는, 다수의 동작을 인코딩하기 위해 많은 비트를 보유하기 때문에 일반적으로 상당히 크다.
VLIW 프로세서는 프로그램을 의미하는 동작의 집합을 인스트럭션 내에 포함시키는 소프트웨어에 의존한다. 이를 위하여, 소프트웨어는 압축(compaction)으로 지칭되는 기법을 사용한다. 인스트럭션 내에 조밀하게 압축하는 동작은 성능 및 인코딩 효율을 향상시킨다. 압축 도중에, 다른 동작을 사용할 수 없는 인스트럭션 내에서는 무효 동작(null operation)을 사용한다. 동작이 여러 상이한 순서로 인스트럭션 내에 할당되기 때문에, 압축은 제한된 형태의 비순차적 발행(out-of-order issue) 기능을 제공한다. 인스트럭션을 압축하기 위해서, 소프트웨어는 독립적인 동작을 검출할 수 있어야 하고, 이는 프로세서의 아키텍쳐나 애플리케이션 또는 그 모두를 제한할 수 있다.
슈퍼스칼라 프로세서 및 VLIW 프로세서는 모두 ILP(instruction level parallelism)로 지칭되는 개념을 사용한다. ILP 아키텍쳐는 단일 인스트럭션 사이클 내에서 메모리 로딩, 저장, 정수 덧셈 및 부동점(floating point) 곱셈 등과 같은 가장 낮은 레벨의 머신 동작의 병렬 계산을 가능하게 한다. ILP 아키텍쳐는 다수의 기능 유닛(functional unit) 및/또는 파이프라인형 기능 유닛을 포함하지만, 단일 프로그램 카운터(program counter)를 구비하고 단일 인스트럭션 스트림(instruction stream)으로 작동된다. ILP 아키텍쳐에 있어서 유효한 하드웨어 사용을 위해서는, 가능하다면 다수의 낮은 레벨의 동작이 동시에 실행될 수 있도록 단일 인스트럭션 스트림이 순차화되어야 한다. 양 카테고리에 속하는 고성능 마이크로프로세서는 ILP의 활용에 중점을 두고, 그에 따라 인스트럭션 그룹의 독립 공간 표시에 중점을 두고 있다. 파이프라인형 및 슈퍼스칼라 프로세서는 하드웨어를 이용하여 실행되는 인스트럭션을 발행하기 전에, 모든 이전의 실행 중인 인스트럭션에 대한 해당 인스트럭션의 독립성을 검사한다. 이들 프로세서는 ILP에 대한 검사에 있어서 비순차적으로 인스트럭션을 실행할 수 있다. 종속성 인스트럭션은 후속의 독립성 인스트럭션의 실행을 방해하지 않는다. 한편, VLIW 프로세서에서의 컴파일러(compiler)는 독립적 동작의 그룹을 식별하고, 그룹의 동작을 병렬로 실행하고, 프로그램 순서대로 서로 다른 동작 그룹을 실행하는 것에 의존한다.
트레이스 프로세서(trace processors)는 트레이스(traces)로 지칭되는 짧은 동적 인스트럭션 시퀀스(dynamic instruction sequences)를 사용할 수 있게 하는 제 3 타입의 프로세서이다. 트레이스 프로세서는 트레이스에 대한 처음 접근 시에 트레이스 내에 검출된 인스트럭션 의존도를 기록하고, 트레이스에 대한 후속의 접근 시에는 그 의존도를 다시 계산하기보다는 해당 정보를 재사용한다는 점에서 슈퍼스칼라 프로세서보다는 개선되었다. 트레이스는 동적으로 재스케쥴링(rescheduled)되어 트레이스 내에서 ILP를 최적화할 수 있다. 그러나, 하나의 트레이스 내에서는 제한된 ILP가 활용되고, 더 많은 ILP를 활용하기 위해서는 다수의 트레이스가 병렬식으로 실행되어야 한다. 트레이스들은 그들 사이에 다중 의존도를 가지기가 쉬워서, 트레이스간 통신(inter-trace communication)을 필요로 하고 트레이스들 사이에 직렬화(serialization)가 이루어지도록 강제할 수 있다.
훨씬 더 많은 ILP를 획득하기 위해 현재의 대부분의 슈퍼스칼라 기법을 더 조정하는 것은 어려운 일이다. ILP를 약간 증가시키면 과도한 하드웨어 복잡성이 요구될 수 있다. 아직도 상당한 양의 획득 가능한 "광대한 ILP"가 존재한다. 그러므로, 이러한 광대한 ILP를 획득하기 위해서 복잡성에 있어 효율적인 마이크로아키텍쳐 구현을 개발할 필요성이 존재한다.
본 발명의 추가적인 이점은 도면을 참조하여 이하의 세부적인 설명을 판독함으로써 명확해질 것이다.
도 1은 종속성 체인 프로세서를 도시하는 도면,
도 2는 트레이스 기술자(trace descriptor) 및 DC(종속성 체인 : dependency chain) 기술자를 도시하는 도면,
도 3은 예시적인 트레이스를 도시하는 도면,
도 4는 종속성 체인 그래프로서 표시된 도 3의 트레이스를 도시하는 도면,
도 5는 가상 발행 윈도우 및 실제 물리적 윈도우를 도시하는 도면,
도 6은 종속성 체인 프로세서 내에서 데이터를 처리하는 단계를 나타내는 흐름도,
도 7은 종속성 체인 프로세서 시스템을 도시하는 도면.
이하에서는 특정한 구성을 참조하여 예시적인 실시예를 설명한다. 당업자라면 첨부된 청구항의 범주 내에서 여러 수정 및 변경이 이루어질 수 있다는 것을 인식할 것이다. 추가하여, 본 발명의 범주가 불명료해지지 않도록 하기 위해서, 잘 알려져 있는 소자, 장치, 부품, 회로, 프로세스 단계 등에 대해서는 상세하게 설명하지 않는다.
본 발명은 프로그램을 종속성 체인으로 재계산(recasting)하는 것을 포함한다. 종속성 체인 및 그에 대한 정보는 저장 장치 내에 기록된다. 본 발명은 종속성 체인 내에서 이 기록된 정보를 처리한다.
종속성 체인 정보는 최대 트레이스 크기 및 제어 흐름 경계(control flow boundaries)에 따라서 동적 프로그램 스트림을 트레이스로 분할함으로써 형성된다. 다음에 데이터 흐름 경계를 따라서 각 트레이스를 완전한 독립성 체인으로 더 분할한다. 당업자라면 본 발명은 또한 트레이스 대신에 프레임 또는 임의의 다른 타입의 동적 인스트럭션 시퀀스를 이용하여 구현될 수 있다는 것을 인식할 것이다.
종속성 체인은 트레이스 데이터 흐름도의 성분에 전체적으로 접속된 것으로 정의된다. 임의의 인스트럭션이 종속성 체인 내의 생산자 인스트럭션 또는 소비자 인스트럭션을 구비하는 경우 해당 종속성 체인에 할당된다. 생산자 인스트럭션은 현재의 인스트럭션에 따른 소정의 결과 또는 부작용을 생성한다. 소비자 인스트럭션은 현재의 인스트럭션에 의한 결과 또는 부작용에 의존한다. 종속성 체인 내의 인스트럭션은 트레이스 내에서 연속적이지 않을 수 있다. 종속성 체인은 생산자가 다수의 소비자를 가질 경우에 포크(forks)를 포함할 뿐만 아니라 소비자가 다수의 생산자를 가질 경우에 조인스(joins)를 포함할 수 있다. 그러므로 이 경우에 종속성 체인은 사실상 종속성 그래프를 의미한다는 것을 주지하라. 그러나, 데이터 구조의 용도를 중점적으로 잘 전달하기 위해서 "그래프"라는 용어를 대신하여 "체인"이라는 용어를 사용하였고, 이는 해당 기술 분야에서 통상적으로 사용된다.
도 3은 예시를 목적으로 MIPS 테크놀러지스 사(MIPS Technologies, Inc.)에서 입수 가능한 MIPSTM 프로세서의 인스트럭션 세트를 이용한 샘플 트레이스를 도시한다. 도 4는 종속성 체인의 성분으로서 표시된 도 3의 트레이스를 도시한다. 종속성 체인 도면 내의 각 원은 트레이스로부터의 인스트럭션에 대응된다. 그러므로, 도 4에서 i00으로 번호가 지정된 종속성 체인(1) 내의 원은 도 3에서 워드 저장 동작인 인스트럭션 00에 대응된다. 레지스터(register)(3)의 컨텐츠는 영향을 받지 않고, 임의의 후속의 인스트럭션은 인스트럭션의 수신지로서 지정된 메모리 위치의 컨텐츠를 필요로 하지 않기 때문에, 후속의 인스트럭션은 인스트럭션(i00)에 의존하지 않는다.
도 4의 종속성 체인(2)은 인스트럭션(i10, i05, i09)이 모두 인스트럭션(i01)에 의존한다는 것을 나타낸다. 인스트럭션(i10)은 레지스터(R6)의 컨텐츠에 정수 4를 더하지만, 이 덧셈의 결과는 인스트럭션(i01)에서 발생되는 덧셈에 의존한다. 인스트럭션(i05)은 인스트럭션(i01)에 의해 변경된 레지스터(R6)에 의해서 지정된 메모리 위치의 컨텐츠를 레지스터(R5)에 로딩하기 때문에, 인스트럭션(i05)은 i01에 의존한다. 이와 유사하게, 인스트럭션(i09)은 레지스터(R6)에 의해서 지 정된 메모리 위치 내에 레지스터(R3)의 컨텐츠를 저장하기 위해 시도하고, 그에 따라 인스트럭션(i09)은 인스트럭션(i01)의 결과에 의존한다.
이 종속성 체인(dependency chain)은 도 1의 종속성 체인 인스트럭션 저장부(10)와 같은 특정화된 캐시 또는 메모리 내에서 종속성 순서로 레이아웃된다. "기술자(descriptor)"로 지칭되는 정보 패킷이 종속성 체인 및 트레이스에 대해 생성된다. 도 2는 종속성 체인 및 트레이스 기술자 포맷을 도시한다. 종속성 기술자(101)는 실제 인스트럭션 대신에 종속성 체인 인스트럭션 저장부(10) 내의 종속성 체인(105)의 어드레스를 포함하며 이로써 범용 종속성 체인을 나타내는데 있어서 충분하게 된다. 종속성 체인 기술자(101)는 또한 종속성 체인의 리브 인(live-in)(103) 및 리브 아웃(live-out)(104)에 대한 정보를 포함한다. 리브 인은 종속성 체인 또는 트레이스가 자신의 실행을 위해서 전체적으로 의존하게 되는 데이터이다. 리브 아웃은 종속성 체인이 변경시키고 다른 종속성 체인이 의존하는 데이터이다. 도 2에 도시된 바와 같은 트레이스 기술자(102)는 트레이스를 나타낸다. 트레이스 기술자는 종속성 체인 기술자 뿐만 아니라 범용 트레이스에 대한 리브 인(106) 및 리브 아웃(107) 정보를 보유하고 있다. 이 트레이스 기술자(102)는 도 1의 트레이스 기술자 저장부(1)와 같은 특정 캐시 또는 메모리 내에 저장된다. 다른 실시예에서 트레이스 기술자는 특정 캐시 및 통상적인 메모리 캐시 내에 저장된다.
종속성 체인은 하드웨어 또는 실행 시간 소프트웨어 마이크로코드 또는 이들의 조합에 의해서 실행 시간에 간단하고 효율적으로 구성될 수 있다. 컴파일러가 또한 프로파일 데이터 또는 정적 제어 플로우 추정법을 사용함으로써 종속성 체인을 구성할 수 있다. 종속성 체인은 통상적으로 다수의 기본 블록들에 걸쳐 있으며 다수의 트레이스 심지어 다수의 프레임에 걸쳐 있을 수 있다. 이들은 컴파일러 구성형 종속성 체인을 위한 사용자 어드레스가능한 메모리 내에 또는 사용자 프로그램머로 바로 액세스가능하지 않는 프로그램 어드레스 베이스의 예비된 부분 내에 저장될 수 있다. 이러한 메모리의 통상적인 구현은 종속성 체인 인출을 위해서 최적화될 수 있다. 가능한 최적화 방법은 다중 뱅킹(multi-banking), 다중 어레잉(multi-arraying) 또는 특정화된 종속성 체인 캐시 구조를 포함한다.
도 1은 본 발명의 일 실시예를 도시하며, 여기서 종속성 체인 프로세서는 제어 플로우 엔진(2) 및 데이터 플로우 엔진(7)으로 구성되며 이 두 엔진은 생산자 소비자 방식으로 협력하여 프로그램을 실행시킨다. 제어 플로우 엔진(2)은 트레이스 기술자 저장부로부터 추정적 제어 플로우 순서로 트레이스 기술자를 판독 및 처리한다. 트레이스 기술자를 추정적으로 인출하는 단계는 트레이스 인출 유닛(3)에 의해서 수행된다. 각 트레이스 기술자(102)는 전체 트레이스 정보(aggregate trace information) 이외에 트레이스를 구성하는 종속성 체인을 위한 종속성 체인 기술자(101)를 포함한다. 트레이스 기술자(102)의 DC(종속성 체인) 디스패치 유닛(14)에 의한 처리 후에, 제어 플로우 엔진(2)은 상기 트레이스를 구성하는 종속성 체인 기술자(101)를 종속성 체인 발행 윈도우(6) 내부로 입력시킨다. 이어서, 데이터 플로우 엔진(7)은 종속성 체인 발행 윈도우(6)로부터의 종속성 체인 기술자(101)를 소비하여 이들을 각 실행 클러스터(8) 내부에서의 실행을 위해서 가용한 클러스터(8)로 디스패치하며 할당된 종속성 체인의 인스트럭션들이 종속성 체인 인스트럭션 저장부로부터 인출되어 실행된다.
제어 플로우 엔진(2)은 순차적 실행 시멘틱스(in order execution semantics)를 감당한다. 각 트레이스 기술자(102) 내에 저장된 트레이스 리브 인 레지스터 명칭은 범용 리네임 맵(a global rename map)(5) 내에서 룩업되고 범용 리오더 버퍼(a global reorder buffer)(9) 내부의 엔트리 태그로 번역된다. 이 범용 레지스터 태그는 종속성 체인 기술자(101) 내부로 기록된다. 오직 트레이스 리브 인 값들만이 모든 인스트럭션 소스는 아닌 일부의 인스트럭션 소스로 동적으로 리네임된다. 또한, 제어 플로우 엔진(2)은 트레이스 리브 아웃 결과들을 위한 엔트리들을 범용 리오더 버퍼(9) 내부로 할당한다. 오직 트레이스 리브 아웃만이 리오더 버퍼(9) 상의 공간으로 할당되며 다른 타입의 인스트럭션 결과들은 할당되지 않는다. 이 할당된 엔트리 태그는 종속성 체인 기술자(101) 내부에 기록된다.
제어 플로우 엔진(2)은 프로그램 순서로 트레이스 기술자(102)를 인출하여 처리한다. 각 트레이스에 대해서 제어 플로우 엔진(2)은 리오더 버퍼(9) 내부에 충분한 공간을 할당하고 리브 인 및 리브 아웃 값들을 그의 종속성 체인을 위한 리오더 버퍼 엔트리로 리네임하고 실행을 위해서 종속성 체인 기술자(101)를 종속성 체인 발행 윈도우(6)로 디스패치한다. 리오더 버퍼(9)는 종속성 체인을 위한 리브 아웃만이 비개별적인 인스트럭션 결과들로 저장된다는 점을 제외하면 인텔사로부터 입수가능한 펜티엄 ProTM ROB와 같은 통상적인 리오더 버퍼와 통합되는 범용 리네임 레지스터 풀과 유사하다.
데이터 플로우 엔진(7)은 인스트럭션의 비순차적 인출 및 실행을 감당한다. 이 엔진은 종속성 체인 발행 윈도우(6)로부터 종속성 체인 기술자(101)를 소비하여 이를 가용한 실행 클러스터(8)로 디스패치한다. 각 종속성 체인 기술자(101) 내부에 저장된 종속성 체인 어드레스(105)는 각 클러스터(8)에 의해 사용되어 종속성 체인의 인스트럭션을 순차적으로 인출 및 실행하기 시작한다. 데이터 플로우 엔진(7)은 수 많은 종속성 체인의 동시적 실행을 가능하게 하고 높은 ILP를 획득하는 다수의 실행 클러스터(8)를 갖는다. 종속성 체인 내부의 인스트럭션들은 프로그램 순서가 아닌 종속성 순서로 배열되며 모든 종속성 체인 내부의 종속성들은 각 클러스터에 대해 국부적인 초소형 레지스터 파일로 정적으로 사전리네임된다(prerenamed). 종속성 체인 리브 인 소스 및 리브 아웃 결과들은 국부적 레지스터로 정적으로 사전할당되는데 상기 국부적 레지스터는 종속성 체인이 클러스터(8)에 할당될 때에 범용 레지스터 파일 태그를 가리키도록 구성된 엔트리들을 리맵핑한다.
각 클러스터 내부의 인스트럭션들은 이전의 인스트럭션 실행 시에 정지되거나 리브 인이 이용될 수 있을 때에 정지된다. 오직 종속성 체인 리브 아웃 결과들만이 다른 클러스터(8) 및 범용 리오더 버퍼(9)로 전체적으로 브로드캐스팅된다. 다른 실시예에서는, 클러스터들이 파이프라인되며 인스트럭션 사전 인출을 지원하기 위해서 선입 선출 FIFO 스트림 버퍼를 포함한다. 데이터 플로우 엔진(7)은 정적 및 동적 비순차적 인출 및 실행을 제공한다. 각 종속성 체인 내부의 인스트럭션들은 정적으로 데이터 플로우 사전정렬된다. 상이한 클러스터(8) 내부의 종속성 체인들은 서로 상관없이 동적으로 정지 또는 재시작될 수 있다. 이러한 서로 독립적인 종속성 체인 실행은 동일한 트레이스의 종속성 체인들 간에는 어떠한 데이터 종속성도 존재하지 않도록 보장하면 보다 더욱 개선될 수 있다. 그러나, 종속성 체인들은 이전의 트레이스에 의해 생성된 리브 인을 만족시키기 위해서 정지될 수 있다.
전체적으로, 인스트럭션 인출은 2 스테이지 프로세스이다. 트레이스 기술자(102)를 프로그램 순서로 인출하는 것이 제 1 스테이지이다. 종속성 체인의 실제 인스트럭션들을 종속성 순서로 인출하는 것이 제 2 스테이지다. 이는 두 개의 주요한 이점을 갖는다. 먼저, 제어 플로우 엔진(2)에서 트레이스 기술자(102)를 인출하여 처리함으로써 이 인출 및 처리 단계가 동적 인스트럭션 스트림에서 보다 신속하게 한 단계 앞서 나갈 수 있게 하는데 그 이유는 트레이스 기술자(102)가 인스트럭션 그 자체들보다 매우 작은 공간을 차지하기 때문이며 또한 범용 리오더 버퍼(9) 리브 아웃 엔트리와 같은 트레이스를 위한 집합 자원들만이 제어 플로우 엔진(2)에 의해 할당되기 때문이다. 이러한 트레이스 기술자(102)를 통해 한 단계 앞선 실행과 종속성 체인 기술자(101)를 디스패치하는 동작으로 인해서 보다 큰 가상 발행 윈도우가 프로세서로 하여금 도 5에 도시된 바와 같이 신속하게 인스트럭션을 실행할 준비를 잠재적으로 구비하게 한다. 제어 플로우 엔진(2)에 의한 트레이스 기술자(102)를 통한 신속한 단계적 실행으로 인해서 가상 발행 윈도우는 다음의 분기 오예측(branch misprediction)을 신속하게 재조정시킬 수 있다.
2 스테이지 인출 시스템의 두번째 이점은 인스트럭션들이 실행을 위해서 정확한 시간에 개별적으로 인출되며 이로써 대형 물리적 발행 윈도우 내의 머신 내에서 통상적인 저장 및 상태 추적을 필요로 하지 않게 된다는 것이다. 오직 현재 실행 중인 인스트럭션 및 리브 아웃 결과들만이 추적될 필요가 있다. 그러므로, 최소의 하드웨어 비용이 가상 발행 윈도우 내의 인스트럭션들을 유지하기 위해서 사용된다.
종속성 체인 인스트럭션들의 실행은 통상적인 프로세서에서와 같이 동작한다. 그의 출력이 종속성 체인으로부터의 리브 아웃이면 적합한 리오더 버퍼(9) 엔트리를 갱신하고 그렇지 않는 경우에는 단순히 국부적 레지스터를 갱신한다. 또한, 인스트럭션 발행 실행은 적시에(just in time) 종속성 체인의 다음의 인스트럭션의 인출을 트리거한다. 종속성 체인 발행 윈도우(6)는 통상적인 인스트럭션 윈도우 기능을 한다. 이 윈도우는 레지스터 또는 메모리 값들을 대기하는 모든 종속성 체인들을 위한 기술자를 보유하고 있다. 슈퍼스칼라 프로세서에서와 같이, 인스트럭션은 인스트럭션 발행 윈도우로부터 비순차적으로 기능 유닛으로 발행된다. 종속성 체인 프로세서에서는, 종속성 체인들이 종속성 체인 발행 윈도우(6)로부터 실행 유닛으로 비순차적으로 발행된다. 그러나, 종속성 체인 발행 윈도우(6) 내부의 각 엔트리는 종속성 체인 인스트럭션보다는 종속성 체인 기술자(101)를 보유한다. 활성 종속성 체인이 리브 아웃 레지스터를 기록하거나 저장을 완료할 때, 대응하는 정보가 종속성 체인 발행 윈도우(6)를 통해서 브로드캐스팅된다.
실제적으로, 제어 플로우 엔진(2)은 인스트럭션 그 자체를 실제적으로 인출하지 않고 Von Neuman 머신 아키텍쳐 스타일 실행 시멘틱스를 관리하며 데이터 플 로우 엔진은 데이터 플로우 머신과 유사한 프로그램 순서로 트레이스의 인스트럭션을 인출 및 실행한다. 또한, 종속성 체인 내부의 인스트럭션 결과 통신, 즉 대부분의 통신은 각 실행 클러스터 내부에 포함된다. 각 종속성 체인으로부터 리브 아웃되는 결과들만이 다른 클러스터(8) 및 범용 리오더 버퍼(9)로 전체적으로 브로드캐스팅될 필요가 있다. 이에 대한 예외 사항들은 프레임 프로세서에서 처리되는 방식과 유사하게 처리된다. 트레이스는 범용 리네임 맵(5) 및 리오더 버퍼(9)를 위한 체크포인트 인터벌로서 간주될 수 있다. 예외 사항이 트레이스 내에서 발생할 때에, 프로세서 상태는 트레이스 체크포인트의 시작점(트레이스 경계)으로 복구되며 후속하는 인스트럭션은 폴팅 인스트럭션(faulting instruction)에 도달할 때까지 프로그램 순서로 순차적으로 재생된다.
정상적인 상황하에서, 제어 플로우 엔진(2) 및 데이터 플로우 엔진(7)은 종속성 체인 발행 윈도우(6)를 통한 간단한 생산자 소비자 관계를 갖는다. 통상적으로, 트레이스 내의 모든 인스트럭션들이 어떤 예외 사항도 없고 오예측도 존재하지 않고 실행되면, 전체 트레이스는 그들의 값을 아키텍쳐된 상태로 복사할 때와 같이 그의 리오더 버퍼 엔트리를 비움으로써 실행될 수 있다. 그러나, 분기 오예측 및 예외 사항이 존재하게 되면 데이터 플로우 엔진(7)이 제어 플로우 엔진(2)에 영향을 주게 된다.
아키텍쳐 상태는 어느 인스트럭션이 발행 또는 완료되었는지의 여부와 상관없이, 알려진 인스트럭션 시퀀스의 마지막 부분에 대한 각 레지스터로의 가장 최근에 완료되고 계류중인 할당들로 구성된다. 이는 정확한 동작을 위해서 상기 시퀀스를 따르는 인스트럭션에 의해서 액세스되어야 하는 상태이다.
트레이스 내부로의 분기는 제어 플로우 어서트(assert)로 변환될 수 있다. 분기가 오예측될 때, 그의 어서트는 프로세서 상태가 트레이스 체크포인트의 시작점으로 복구될 수 있게 한다. 통상적인 트레이스 기술자 인출은 올바른 경로 트레이스 기술자가 이용가능하게 될 때에 다시 시작된다. 수많은 종속성들은 종속성 체인 형성 동안에는 정적으로 그리고 종속성 체인 내부 종속성을 확립하기 위해서는 동적으로 종속성 예측을 통해서 추정적으로 처리될 수 있다. 오예측을 로딩하기 위한 메모리 종속성 저장은 오예측된 데이터가 올바른 데이터가 되는 것을 보장하기 위해서 포워딩(forwarding)을 로딩하는 내부 저장을 억제하는 실행된 종속성 체인을 재생하는(replaying) 것을 필요로 한다. 후속하는 트레이스는 전체적으로 또는 부분적으로 재생될 수 있다. 다른 데이터 관련 오예측 및 복잡한 제어 독립 기술은 유사하게 처리될 수 있다.
메모리 종속성(dependency)은 종래의 프로세서와 같이 메모리 종속성 상세표(speculation table)를 통해서 처리될 수 있다. 종속성 체인이 이전에 디스패치된 종속성 체인을 따를 것으로 예상되는 경우, 이 체인에는 안정적으로 태그가 붙여져서, 종속성 체인 발행 윈도우(6)로 디스패치된다. 이 태그는 선행(ancestor) 종속성 체인의 완성을 위한 블록 풀 브로드캐스트(block pool broadcast)를 모니터할 수 있게 한다.
종속성 체인 프로세서에서, 전체 리네임 맵(5)에서 트레이스 리브 인(trace live-in)만 다이나믹하게 찾으면 되기 때문에, 레지스터 리네임 대역폭은 슈퍼스칼 라 프로세서에 비해서 감소된다. 또한, 내부 디스패치 그룹 종속성 체크는 이들이 통계적으로 설정된 내부 내부 종속성 체인 종속성이 되기 때문에 생략된다. 스케쥴링은 능동 종속성 체인의 앞의 몇 개의 인스트럭션 만이 웨이크 업 및 선택에 적합하기 때문에 종속성 체인 프로세서에서 크게 간단해진다. 2차 함수 복잡도(quadratic complexity) 대신에, 각각의 클러스터가 잠재적으로 하나의 인스트럭션을 웨이크 업해서 선택하기 때문에 스케쥴링은 간단한 것이 되고 있다. 유사하게, 동적인 불규칙한 스케쥴러의 융통성이 새로운 종속성 체인으로 인스트럭션을 조직하고, 독립성 스톨링 클러스터에서 이들을 수행함으로써 유지된다. 또한, 주어진 전치 대역폭에 대해서, 인출 인스트럭션이 아닌 작은 기술자(compact descriptor)를 통한 스테핑은 브랜치의 오측(misprediction)에 후속하는 가상 발행 윈도우의 더 빠른 리필을 가능하게 할 수 있다.
전체 결과 통신은 트레이스 리브 아웃 결과만 전체적으로 브로드캐스팅하고, 클러스터(8) 할당을 위해 종속성 체인을 사용함으로써 감소된다. 동일한 순간적인 트레이스 실행으로부터의 종속성 체인이 보장되어서 서로간의 제로 통신을 요구한다.
리브 아웃 엔트리를 리네임 레지스터(5)에 할당할 뿐만 아니라, 실제 실행 시간에 거의 가깝게 기술자를 사용하고 이후에 적시(just-in-time) 인출 및 디코드를 수행함으로써 인스트럭션 상태 추적이 최소화된다. 적시 인출을 사용해서, 유지되어야 하는 인스트럭션 상태의 수는 훨씬 더 큰 발행 윈도우가 아닌 발행 폭의 함수가 된다. 물리적인 발행 윈도우는 오퍼랜드를 대기하면서 많은 인스트럭션을 유지하고 추적할 필요가 없다.
종속성 체인으로부터의 리브 아웃은 리오더 버퍼(9)에서 함께 그룹화되거나 동일한 트레이스 기술자에서 다른 종속성 체인으로부터의 리브 아웃과 함께 내삽될 수 있다. 그러나, 서로 다른 트레이스로부터의 리브 아웃은 내삽되지 않는다. 이는 트레이스 체크 포인트에서의 구조화된 상태 회복을 가능하게 한다. 리오더 버퍼(9)가 할당된 후에, 전체 레지스터 리네임 맵(5)은 새로운 리브 아웃 레지스터의 위치를 사용해서 업데이트된다. 후속하는 트레이스 기술자(102)로부터의 종속성 체인은 리네임 맵(5)을 사용해서 그들의 리브인 값의 최근 버전의 태그를 획득한다. 오래된 매핑은 브랜치 오측(misprediction) 회복을 가능하게 하도록 체크된다. 트레이스 기술자(102)를 인출한 이후에, 제어 흐름 엔진(2)은 다음 트레이스 예측기(next-trace-predictor)를 사용할 수 있다. 트레이스 인출 및 제어 플로우 엔진(2)의 처리 단계는 필요에 따라서 파이프라인화될 수 있다.
데이터 플로우 엔진(7)은 종속성 체인 발행 윈도우(6)에 연결되어서 이로부터 대기 종속성 체인을 실행 클러스터(8)로 발행한다. 각각의 실행 클러스터(8)는 간단한 인스트럭션 큐, 실행 유닛의 풀 및 로컬 레지스터 파일을 구비하고 있다. 인스트럭션은 인스트럭션 큐로 인출되어서 데이터 플로우 제한을 만족시키면서 로컬 실행 유닛으로 순서대로 발행된다. 인스트럭션 큐는 종속성 체인 인스트럭션 저장부(10)로부터의 데이터 플로우 제한에 기초해서 종속성 체인의 인스트럭션을 적시에 인출하는 인스트럭션 스트림 버퍼가 될 수 있다. 로컬 레지스터 파일은 내부 종속성 체인 레지스터 통신을 처리하는 데 사용된다.
종속성 체인 발행 윈도우(6)는 비활성 영역과 활성 영역으로 세분된다. 비활성 영역은 데이터 플로우 엔진(7)으로부터 제어 플로우 엔진(2)을 버퍼링하고 디커플링시킨다. 실행 클러스터(8)로부터의 리브 아웃은 비활성 영역으로 브로드캐스팅될 필요는 없다. 각각의 종속성 체인은 그 모든 인스트럭션이 할당된 클러스터(8)에서 실행될 때까지 발행 윈도우(6)의 활성 부분에 남아 있다.
종속성 발행 윈도우(6)의 다른 실시예는 종속성 체인 발행 윈도우(6)에서, 모든 리브 인을 사용가능하게 될 때까지 각각의 블록화된 종속성 체인이 대기하는 구현을 포함한다. 각각의 블록화된 종속성 체인은 체인 발행 윈도우(6)에서 하나의 엔트리를 갖고 있으며, 이 엔트리의 폭은 리브 인의 수와 같다.
이 실시예에서, 종속성 체인은 실행 클러스터에 할당될 때, 발행 윈도우(6)로부터 즉시 제거된다. 종속성 체인은 실행 클러스터(8)에 할당되기 전에 클러스터가 모든 필요한 리브 인을 수신하기를 기다리기 때문에 리브 인 결과를 듣지 않는다. 전체 리브 인을 갖고 있는 종속성 체인은 메모리 내에서 대기하고, 선언된 독립성이 실행 클러스터에 발행된다. 이 구현의 장점은 실행을 완전히 대기하고 있는 종속성 체인만이 실행 클러스터에 할당된다는 점이다. 단점은 모든 리브 인이 대기 상태가 될 때까지는 종속성 체인이 실행되지 않는다는 점이다.
다른 실시예에서, 제 1 인스트럭션용 리브 인을 사용할 수 있게 되면, 즉시 클러스터는 종속성 체인에 할당된다. 종속성 체인 내의 인스트럭션은 추가로 필요한 임의의 리브 인이 대기 상태에 있는 한 실행을 계속한다. 종속성 체인 실행은 필요에 따라서 다른 필요한 리브 인을 대기하는 도중에 스톨된다. 이 실시예에서, 실행 클러스터(8)에 할당되었던 종속성 체인만이 발행 윈도우(6)의 활성 영역에 존재한다. 다른 종속성 체인은 실행 클러스터(8:활성 영역의 종속성 체인에 대해서 리브 인이 될 수 있다)로부터 리브 아웃을 들을 필요가 없기 때문에 발행 윈도우(6)의 비 활성 영역에 존재한다. 장점은 모든 리브 인을 사용할 수 있게 되기 전에 더 빨리 종속성 체인이 실행을 시작할 수 있다는 점이다. 단점은 로컬 레지스터 파일에 저장된 로컬 값 때문에, 도중에 스톨된 종속성 체인이 실행 클러스터(8)를 계속 점유한다는 점이다.
이들 두 실시예에서, 디스패치는 종속성 체인의 클러스터로의 디스패치 및 종속성 체인 내의 인스트럭션의 클러스터 내의 기능 유닛으로의 디스패치라는 2그룹으로 논리적으로 분할된다.
본 발명의 다른 실시예에서, 종속성 체인이 이전에 체인된 종속성 체인에 체인되는 것을 강화시킨다. 이는 필요한 경우에 다수의 종속성 체인을 위해 긴 체인을 만드는 것을 가능하게 한다. 이러한 다중 레벨 체이닝을 가능하게 하기 위해서, 종속성 체인 맵은 체인의 종속성 체인에 의해 생성된 레지스터 및 메모리 위치가 체인의 종속성 체인의 선행 종속성 체인으로 다시 매핑되도록 적절하게 유지되어야 할 것이다. 이는 종속성 체인이 빠르게 선행 종속성 체인의 기초(root)의 위치를 추적하는 것을 가능하게 한다.
본 발명의 다른 실시예에서, 종속성 체인 발행 윈도우(6)는 종속성 체인 체이닝을 가능하게 하는 추가적인 다이렉트 맵 테이블을 사용한다. 이 테이블은 다수의 종속성 체인이 아닌 하나의 활성 종속성 체인에 종속하며, 활성 종속성 체인의 종속성 체인 ID 내에 표식되어서 블록 종속성 체인으로서 유지한다. 활성 종속성 체인이 완료되면, 체이닝 테이블은 나머지 종속성 윈도우에 대해서 종속성 체인을 브로트캐스팅하는 것에 더해서 트리거 종속성 체인에 대한 직접 맵 방식으로 검색할 수 있다. 따라서 브로드캐스팅 및 관련된 많은 윈도우에 대한 매칭 비용이 더 감소된다. 이 테이블은 각각의 종속성 체인이 하나의 메모리 기준을 갖고 있는 경우에, 메모리 종속성에 특히 유용하다. 또한, 다이렉트 맵 테이블은 블록화된 종속성 체인의 실행 클러스터(8)로의 적시 이동을 간략하게 할 수 있으며, 이는 중간 저장부를 통해서 연결시키지 않고 의존형 종속성 체인을 직접 연결시키기 때문이다. 체이닝의 구현은 전체적으로 종속성 체인 맵이라고 불리는 프로듀서 종속성 체인으로 레지스터 및 메모리 종속성을 다시 매핑시키는 테이블을 필요로 한다. 위에 설명된 테이블을 구현하는 한가지 방법은 종속성 체인 풀에서 종속성 체인 엔트리내의 필드를 간단하게 제공하는 것이다. 이 필드는 의존형 종속성 체인의 종속성 체인 기술자를 유지한다.
본 발명의 다른 실시예는 종속성 체인 발행 윈도우(6)를 제어 플로우 엔진(2)과 데이터 플로우 엔진(7) 사이의 생산자와 소비자 관계를 관리하는 데 적합한 다른 구조로 대치한다. 다른 실시예는 제어 플로우 엔진(2)과 데이터 플로우 엔진(7) 사이의 중간 구조를 사용하지 않는다. 제어 플로우 엔진(2)은 소비될 데이터 플로우 엔진(7)의 성능에 기초해서 생성한다. 이는 종속성 기술자를 수용하기 위한 그 속도(readiness)를 나타내는 데이터 플로우 엔진으로부터의 제어 신호에 의해 수행된다.
종속성 체인 인스트럭션은 적시 방식으로 메모리로부터 인출된다. 각각의 종속성 체인은 컴파일러에 의해서 메모리에 순차적으로 놓일 수 있으며, 런타임 종속성 체인 컨스트럭터는 다수의 뱅크 메모리 시스템의 이점을 극대화하고, 동시 종속성 체인 사이의 충돌을 최소화하도록, 지능적으로(judiciously) 종속성 체인의 위치를 결정한다. 물리적인 메모리는 단일 뱅크에 존재하는 각각의 종속성 체인과 뱅킹될 수 있다. 종속성 체인의 인스트럭션은 순서대로 인출되며, 이는 다수의 뱅크에 걸쳐서 종속성 체인을 스트라이프하는 데는 바람직하지 않다. 각각의 데이터 플로우 엔진 실행 클러스터(8)는 베이스 어드레스 및 종속성 체인 프로그램 카운터에 대해서 종속성 체인 ID의 일부를 사용해서 그 뱅크를 액세스하며, 이는 다수의 종속성 체인이 동시에 수행할 것이기 때문이다. 종속성 체인 ID는 다수의 뱅크로부터 동시에 인출될 수 있도록 할당될 수 있다.
단일 메모리 뱅크의 라인 폭은 한번의 동시 액세스에서 다수의 종속성 체인 인스트럭션이 실행 클러스터로 인출되는 것을 가능하게 한다. 메모리 뱅크의 라인 폭은 제한된 메모리 대역폭을 사용해서 다수의 종속성 체인이 인출될 수 있도록 한번의 인스트럭션 워드로 감소될 수 있다. 인스트럭션 완성 시간이 후속하는 인스트럭션이 개시하는 시간이라고 알려지면, 종속성 체인의 다수의 라인은 적시 방식으로 인출된다.
본 발명의 다른 실시예에서, 인스트럭션 스트림 버퍼는 각각의 실행 클러스터(8) 앞에 추가될 수 있다. 종속성 체인 내의 인스트럭션이 직렬로 인출되어 수행되기 때문에, 선입 선출(FIFO) 스트림 버퍼에 간단하게 캐시되어서 발생할 뱅크 출동의 영향을 차단한다. 종속성 체인 내의 인스트럭션의 실행이 데이터 캐시 손실로 인한 실행 지연이 너무 길어서 중지될 때마다, 스트림 버퍼는 실행을 계속할 수 있다. 스트림 버퍼는 라인이 하나의 인스트럭션보다 큰 경우에도 실행을 계속할 수 있다.
스트림 버퍼 향상의 다른 형태는 종속성 체인이 저장되는 특화된 종속성 체인 캐시로부터 스트림 버퍼를 채울 수 있다. 각각의 종속성 체인 캐시 입력 라인은 전체 종속성 체인을 유지한다. 종속성 체인이 실행 클러스터에게로 발행되면, 그 전체 종속성 체인 캐시 라인은 잠재적으로 빈 스트림 버퍼로 집중될 수 있다. 스트림 버퍼는, 반복적으로 채워지는 대신에, 모든 엔트리가 FIFO 설계에서 한 사이클에서 병렬로 기록되도록 변경될 수 있다. 이것은 사이클 당 하나로 종속성 체인 발행을 한정할 수도 있지만, 뱅크 충돌 문제를 제거한다.
도 7에 도시된 본 발명의 다른 실시예는, 버퍼를 갖는 컴퓨터 시스템에 종속성 체인 프로세서(205)를 사용하며, 여기서, 버스(200)는 종속성 체인 프로세서(205)를 메모리(201), 저장 유닛(202) 및 키보드(203)와 같은 기타 주변 장치에 접속시킨다.
다른 실시예는 소프트웨어(예를 들면, 마이크로코드 또는 상위 레벨 컴퓨터 언어)로 종속성 체인 프로세서를 구현한다. 소프트웨어는 시뮬레이션 또는 종속성 체인 프로세서의 에뮬레이션을 실행하는데 사용될 수도 있다. 소프트웨어 구현은 기계 판독 가능 매체에 저장될 수도 있다. "기계 판독가능" 매체는 정보를 저장하거나 전송할 수 있는 어떠한 매체도 포함할 수 있다. 기계 판독가능 매체의 예로 는 ROM, 플로피 디스켓, CD-ROM, 광학 디스크, 하드디스크, 무선 주파수(RF) 링크 등이 있다.
이상 예시적인 실시예들을 개시하였지만, 첨부된 청구범위에 의해 정의된 본 발명의 사상 및 범주 내에서 이들 개시된 실시예에 수정 및 변형이 이루어질 수도 있다.

Claims (33)

  1. 데이터 플로우 로직(data flow logic)과,
    프로세싱을 위해 트레이스 기술자(trace descriptor)를 선택하여 인출하는 제어 플로우 로직(control flow logic) -상기 인출된 트레이스 기술자는 적어도 하나의 종속성 기술자(dependency descriptor)를 포함하고, 상기 제어 플로우 로직은 인스트럭션 시퀀스에 대한 종속성 정보 및 상기 인스트럭션 시퀀스의 어드레스를 포함하는 종속성 기술자를 상기 데이터 플로우 로직에 디스패치함- 을 포함하고,
    상기 데이터 플로우 로직은 상기 디스패치된 종속성 기술자를 수신하도록 상기 제어 플로우 로직에 결합되어, 상기 수신된 종속성 기술자로부터의 어드레스를 이용하여 상기 인스트럭션 시퀀스를 인출하고, 상기 수신된 종속성 기술자 내의 상기 종속성 정보에 따라서 상기 인스트럭션 시퀀스를 실행하는
    장치.
  2. 제 1 항에 있어서,
    상기 제어 플로우 로직 및 상기 데이터 플로우 로직에 결합되어 있으며, 상기 제어 플로우 로직에 의해 디스패치된 상기 종속성 기술자를 저장하는 저장 영역을 더 포함하는
    장치.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 데이터 플로우 로직에 결합되어 있으며, 종속성 정보에 의거하여 계속해서 인스트럭션들을 저장하는 저장 영역을 더 포함하는
    장치.
  5. 제 1 항에 있어서,
    상기 데이터 플로우 로직 및 제어 플로우 로직에 결합되어 있으며, 리브 아웃(live-out) 데이터를 저장하는 저장 영역을 더 포함하는
    장치.
  6. 제 1 항에 있어서,
    상기 제어 플로우 로직에 결합되어 있으며, 종속성 정보를 맵핑하는 저장 영역을 더 포함하는
    장치.
  7. 삭제
  8. 제 1 항에 있어서,
    상기 트레이스 기술자는 상기 트레이스 기술자 내의 복수의 종속성 기술자에 대한 전체 리브 인 데이터(aggregate live-in data)를 포함하는
    장치.
  9. 제 1 항에 있어서,
    상기 트레이스 기술자는 상기 트레이스 기술자 내의 복수의 종속성 기술자에 대한 전체 리브 아웃 데이터를 포함하는
    장치.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 인스트럭션 처리 방법에 있어서,
    프로그램 제어 플로우에 따라서 트레이스 기술자를 선택하여 인출하는 단계와,
    상기 인출된 트레이스 기술자로부터 인스트럭션 세트에 대한 종속성 정보 및 상기 인스트럭션 세트의 어드레스를 포함하는 종속성 기술자를 식별하는 단계와,
    실행을 위해 상기 종속성 기술자를 디스패칭하는 단계와,
    상기 디스패칭된 종속성 기술자로부터의 어드레스를 이용하여 상기 인스트럭션 세트를 인출하는 단계와,
    상기 디스패칭된 종속성 기술자 내의 종속성 정보에 따라서 상기 인스트럭션 세트를 실행하는 단계를 포함하는
    인스트럭션 처리 방법.
  21. 삭제
  22. 제 20 항에 있어서,
    상기 종속성 기술자를 제어 플로우 로직으로부터 저장 영역으로 저장하는 단계와,
    상기 저장 영역으로부터 데이터 플로우 로직으로 상기 종속성 기술자를 판독하는 단계를 포함하는
    인스트럭션 처리 방법.
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 기계 판독가능한 매체로서,
    기계에 의해 실행될 때 상기 기계로 하여금 다음 동작, 즉,
    프로그램 제어 플로우에 따라서 트레이스 기술자를 선택하여 인출하는 동작과,
    상기 인출된 트레이스 기술자로부터 인스트럭션 세트에 대한 종속성 정보 및 상기 인스트럭션 세트의 어드레스를 포함하는 종속성 기술자를 식별하는 동작과,
    실행을 위해 상기 종속성 기술자를 디스패칭하는 동작과,
    상기 디스패칭된 종속성 기술자로부터의 어드레스를 이용하여 상기 인스트럭션 세트를 인출하는 동작과,
    상기 디스패칭된 종속성 기술자 내의 종속성 정보에 따라서 상기 인스트럭션 세트를 실행하는 동작
    을 수행하게 하는 인스트럭션을 포함하는 기계 판독가능한 매체.
  29. 삭제
  30. 제 28 항에 있어서,
    상기 동작은
    제어 플로우 로직에 의해 발행 윈도우(issue window)에 상기 종속성 기술자를 저장하는 동작과,
    상기 발행 윈도우로부터 데이터 플로우 로직으로 상기 종속성 기술자를 판독하는 동작을 포함하는
    기계 판독가능한 매체.
  31. 제 1 항에 있어서,
    상기 종속성 정보는 리브 인 정보를 포함하는
    장치.
  32. 제 1 항에 있어서,
    상기 종속성 정보는 리브 아웃 정보를 포함하는
    장치.
  33. 제 1 항에 있어서,
    상기 인출된 트레이스 기술자는 대응하는 인스트럭션 시퀀스의 어드레스 및 대응하는 인스트럭션 시퀀스에 대한 종속성 정보를 포함하는 복수의 종속성 기술자를 포함하는
    장치.
KR1020047010518A 2002-01-03 2002-12-27 인스트럭션 처리 방법 및 장치와 기계 판독가능한 매체 KR100676011B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/037,666 US7363467B2 (en) 2002-01-03 2002-01-03 Dependence-chain processing using trace descriptors having dependency descriptors
US10/037,666 2002-01-03
PCT/US2002/041551 WO2003058435A1 (en) 2002-01-03 2002-12-27 Dependence-chain processors

Publications (2)

Publication Number Publication Date
KR20040075050A KR20040075050A (ko) 2004-08-26
KR100676011B1 true KR100676011B1 (ko) 2007-01-29

Family

ID=21895615

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047010518A KR100676011B1 (ko) 2002-01-03 2002-12-27 인스트럭션 처리 방법 및 장치와 기계 판독가능한 매체

Country Status (6)

Country Link
US (1) US7363467B2 (ko)
KR (1) KR100676011B1 (ko)
CN (1) CN1294485C (ko)
AU (1) AU2002361879A1 (ko)
TW (1) TWI277898B (ko)
WO (1) WO2003058435A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101029074B1 (ko) 2007-01-10 2011-04-18 삼성전자주식회사 호스트 컨트롤러에서의 디스크립터 추적 장치 및 그 추적방법

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7600221B1 (en) * 2003-10-06 2009-10-06 Sun Microsystems, Inc. Methods and apparatus of an architecture supporting execution of instructions in parallel
JP4784912B2 (ja) * 2004-03-02 2011-10-05 パナソニック株式会社 情報処理装置
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US20070022274A1 (en) * 2005-06-29 2007-01-25 Roni Rosner Apparatus, system, and method of predicting and correcting critical paths
WO2007068148A1 (en) * 2005-12-17 2007-06-21 Intel Corporation Method and apparatus for partitioning programs to balance memory latency
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
US8677105B2 (en) 2006-11-14 2014-03-18 Soft Machines, Inc. Parallel processing of a sequential program using hardware generated threads and their instruction groups executing on plural execution units and accessing register file segments using dependency inheritance vectors across multiple engines
CN100444118C (zh) * 2007-03-19 2008-12-17 中国人民解放军国防科学技术大学 基于逻辑发射序号的软、硬件结合指令相关性控制方法
US7979566B2 (en) * 2008-01-25 2011-07-12 Microsoft Corporation Streaming object instantiation using bookmarks
US20090210672A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US20090210677A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Optimization Within a Group Priority Issue Schema for a Cascaded Pipeline
US7877579B2 (en) * 2008-02-19 2011-01-25 International Business Machines Corporation System and method for prioritizing compare instructions
US7984270B2 (en) * 2008-02-19 2011-07-19 International Business Machines Corporation System and method for prioritizing arithmetic instructions
US8108654B2 (en) * 2008-02-19 2012-01-31 International Business Machines Corporation System and method for a group priority issue schema for a cascaded pipeline
US7870368B2 (en) * 2008-02-19 2011-01-11 International Business Machines Corporation System and method for prioritizing branch instructions
US20090210666A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US8095779B2 (en) * 2008-02-19 2012-01-10 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US7882335B2 (en) * 2008-02-19 2011-02-01 International Business Machines Corporation System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline
US20090210669A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Prioritizing Floating-Point Instructions
US7865700B2 (en) * 2008-02-19 2011-01-04 International Business Machines Corporation System and method for prioritizing store instructions
US7996654B2 (en) * 2008-02-19 2011-08-09 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US8037366B2 (en) * 2009-03-24 2011-10-11 International Business Machines Corporation Issuing instructions in-order in an out-of-order processor using false dependencies
US8332536B2 (en) * 2009-06-11 2012-12-11 International Business Machines Corporation Content protection continuity through authorized chains of components
KR101640848B1 (ko) * 2009-12-28 2016-07-29 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
EP2591422A1 (en) * 2010-07-09 2013-05-15 Martin Vorbach Data processing device and method
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
EP2689330B1 (en) 2011-03-25 2022-12-21 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
US9529596B2 (en) * 2011-07-01 2016-12-27 Intel Corporation Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits
US20140344554A1 (en) * 2011-11-22 2014-11-20 Soft Machines, Inc. Microprocessor accelerated code optimizer and dependency reordering method
EP2783280B1 (en) * 2011-11-22 2019-09-11 Intel Corporation An accelerated code optimizer for a multiengine microprocessor
CN104040491B (zh) 2011-11-22 2018-06-12 英特尔公司 微处理器加速的代码优化器
GB2503438A (en) * 2012-06-26 2014-01-01 Ibm Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions
WO2014142704A1 (en) 2013-03-15 2014-09-18 Intel Corporation Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US20160364237A1 (en) * 2014-03-27 2016-12-15 Intel Corporation Processor logic and method for dispatching instructions from multiple strands
US9977619B2 (en) 2015-11-06 2018-05-22 Vivante Corporation Transfer descriptor for memory access commands
US10303481B2 (en) 2015-12-02 2019-05-28 International Business Machines Corporation Performance-aware instruction scheduling
US11036514B1 (en) 2016-08-23 2021-06-15 Apple Inc. Scheduler entries storing dependency index(es) for index-based wakeup
CN109923520B (zh) * 2016-12-12 2022-05-13 华为技术有限公司 计算机系统及内存访问技术
US10474552B2 (en) 2017-05-18 2019-11-12 Nxp Usa, Inc. Hardware and software debug using data dependency tracing
US10684861B2 (en) * 2017-09-25 2020-06-16 International Business Machines Corporation Enhanced performance-aware instruction scheduling
US10936321B2 (en) * 2019-02-01 2021-03-02 International Business Machines Corporation Instruction chaining
US11163581B2 (en) 2019-10-21 2021-11-02 Arm Limited Online instruction tagging

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
US5699537A (en) 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
US5732255A (en) * 1996-04-29 1998-03-24 Atmel Corporation Signal processing system with ROM storing instructions encoded for reducing power consumpton during reads and method for encoding such instructions
US6044222A (en) * 1997-06-23 2000-03-28 International Business Machines Corporation System, method, and program product for loop instruction scheduling hardware lookahead
US6018798A (en) * 1997-12-18 2000-01-25 Advanced Micro Devices, Inc. Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle
US6260189B1 (en) * 1998-09-14 2001-07-10 Lucent Technologies Inc. Compiler-controlled dynamic instruction dispatch in pipelined processors
US6351844B1 (en) * 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6304962B1 (en) * 1999-06-02 2001-10-16 International Business Machines Corporation Method and apparatus for prefetching superblocks in a computer processing system
US6427204B1 (en) * 1999-06-25 2002-07-30 International Business Machines Corporation Method for just in-time delivery of instructions in a data processing system
KR100347865B1 (ko) * 1999-11-15 2002-08-09 삼성전자 주식회사 어드레스 트레이스를 이용한 분기 예측 방법
US6708267B1 (en) * 2000-02-04 2004-03-16 International Business Machines Corporation System and method in a pipelined processor for generating a single cycle pipeline stall
US7051193B2 (en) 2001-03-28 2006-05-23 Intel Corporation Register rotation prediction and precomputation
US20020144101A1 (en) 2001-03-30 2002-10-03 Hong Wang Caching DAG traces

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101029074B1 (ko) 2007-01-10 2011-04-18 삼성전자주식회사 호스트 컨트롤러에서의 디스크립터 추적 장치 및 그 추적방법

Also Published As

Publication number Publication date
CN1294485C (zh) 2007-01-10
US20030126408A1 (en) 2003-07-03
CN1613056A (zh) 2005-05-04
WO2003058435A1 (en) 2003-07-17
AU2002361879A1 (en) 2003-07-24
US7363467B2 (en) 2008-04-22
KR20040075050A (ko) 2004-08-26
TWI277898B (en) 2007-04-01
TW200405199A (en) 2004-04-01

Similar Documents

Publication Publication Date Title
KR100676011B1 (ko) 인스트럭션 처리 방법 및 장치와 기계 판독가능한 매체
US9311095B2 (en) Using register last use information to perform decode time computer instruction optimization
KR100592122B1 (ko) 가상 레지스터 번호들을 이용하여 논리적 레지스터 번호들을 물리적 레지스터 번호들로 맵핑시키도록 구성된 프로세서
US5838988A (en) Computer product for precise architectural update in an out-of-order processor
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
US7600221B1 (en) Methods and apparatus of an architecture supporting execution of instructions in parallel
US6035374A (en) Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
US5890008A (en) Method for dynamically reconfiguring a processor
US6058466A (en) System for allocation of execution resources amongst multiple executing processes
JP2898820B2 (ja) 自己並列化式のコンピュータ・システムおよび方法
US5867684A (en) Method and processor that permit concurrent execution of a store multiple instruction and a dependent instruction
US5958047A (en) Method for precise architectural update in an out-of-order processor
WO1998037485A1 (en) Method and apparatus for forwarding of operands in a computer system
US6219778B1 (en) Apparatus for generating out-of-order results and out-of-order condition codes in a processor
KR100483463B1 (ko) 사전-스케쥴링 명령어 캐시를 구성하기 위한 방법 및 장치
US7565658B2 (en) Hidden job start preparation in an instruction-parallel processor system
KR100572040B1 (ko) 명령들의 퇴거시 물리적인 레지스터들을 선택적으로 자유화하도록 구성된 프로세서
US7130990B2 (en) Efficient instruction scheduling with lossy tracking of scheduling information
JP2001092657A (ja) 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
US7836282B2 (en) Method and apparatus for performing out of order instruction folding and retirement
US7694110B1 (en) System and method of implementing microcode operations as subroutines
US5765017A (en) Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
Li et al. Compiler techniques for concurrent multithreading with hardware speculation support
EP0924603A2 (en) Compiler controlled dynamic scheduling of program instructions
KR100861701B1 (ko) 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법

Legal Events

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

Payment date: 20130104

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee