KR0175985B1 - 프로세서의 인스트럭션 디스패치 대기시간 감소 방법 및 시스템 - Google Patents
프로세서의 인스트럭션 디스패치 대기시간 감소 방법 및 시스템 Download PDFInfo
- Publication number
- KR0175985B1 KR0175985B1 KR1019950067116A KR19950067116A KR0175985B1 KR 0175985 B1 KR0175985 B1 KR 0175985B1 KR 1019950067116 A KR1019950067116 A KR 1019950067116A KR 19950067116 A KR19950067116 A KR 19950067116A KR 0175985 B1 KR0175985 B1 KR 0175985B1
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- instructions
- cache
- branch
- load
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 238000010586 diagram Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000282472 Canis lupus familiaris Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000006870 function 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
- G06F9/3802—Instruction prefetching
-
- 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/22—Microcontrol or microprogram arrangements
-
- 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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 인스트럭션이 캐쉬(cache)에 입력되기 전에 인스트럭션을 사전결정된 포맷(a predetermined format)으로 재순서화하는, 프로세서의 인스트럭션 디스패치 대기시간(instruction dispatch latency)을 감소시키기 위한 방법 및 시스템을 인스트럭션이 캐쉬(cache)에 입력되기 전에 제공한다. 본 방법 및 시스템은 또한 인스트력션의 재순서화에 관한 정보를 캐쉬내에 저장한다. 그리고나서 재순서화된 인스트럭션은 사전결정된 포맷에 기초한 적절한 실행 유닛(execution unit)에 제공된다. 본 시스템에 따르면, 캐쉬로 인스트럭션을 전송하는 경우, 디스패치 버퍼(a dispatcher buffer)가 요구되지 않는다.
Description
제1도는 프로세서에 이용된 종래의 디스패칭 시스템의 블럭도.
제2도는 사전디스패치된 포맷으로 인스트럭션을 저장하기 위한 시스템의 제1실시예를 예시하는 흐름도.
제3도는 사전디스패치된 포맷으로 캐쉬상에 인스트럭션을 저장하기 위한 시스템의 제2실시예를 예시하는 흐름도.
제4도는 인스트럭션을 캐쉬로 디스패치하기 전에 인스트럭션 라인을 재순서화하는 것을 도시하는 표.
제5도는 제3도 및 제4도의 프리디스패치된 시스템을 이용하는 시스템의 블럭도.
* 도면의 주요부분에 대한 부호의 설명
12 : 프리디스패치 14 : I-캐쉬
16 : 디스패치 버퍼 400 : 프리디스패칭 시스템
406 : 브랜치 실행 유닛 408 : 부동 소숫점 실행 유닛
410 : 고정 소숫점 실행 유닛 412 : 로드 제어 실행 유닛
본 발명은 프로세서의 성능을 향상시키기 위한 방법 및 시스템에 관한 것으로, 특히 이러한 시스템에서 디스패치 대기시간(dispatch latency)을 감소시키기 위한 방법 및 시스템에 관한 것이다.
인스트럭션 캐슁(instruction caching)은 고성능, 수퍼-스칼러 프로세서(super-scaler processors)에 중요한 매카니즘(mechanism)이다. 이 메카니즘은 프로세서로 하여금, 비록 메모리가 전형적으로 다수의 사이클이라 하더라도 그의 실행 유닛을 지원할 수 있을 만큼 충분히 빠르게, 인스트럭션을 인출할 수 있게 한다. 인스트럭션 캐쉬를 사용하는 근본적인 이유는 인출 대기시간을 감소시키기 위해서이다.
수퍼스칼러 프로세서에 있어서, 프로세서와 연관된 실행 유닛에 대해 데드 사이클(dead cycles)을 초래하는 문제점은 디스패치 대기시간(dispatch latency)이다. 이러한 애플리케이션 환경에서 디스패치 대기시간이 의미하는 것은, 캐쉬와 실행 유닛 사이에 인스트럭션이 이동하는데 요구되는 시간의 양이다. 디스패치는 몇개의 인스트럭션을 디코드하여, 어느 실행 유닛 인스트럭션(execution unit instruction)이 전송되어야 할지를 결정해야 하므로, 캐쉬와 실행 유닛에 입력되는 인스트럭션 사이에는 얼마간의 시간이 존재하게 된다. 디스패치가 보다 더 복잡해지고, 실행 유닛의 수가 증가하고, 사이클 시간이 감소함에 따라, 이 디스패치 대기 시간은 보다 더 중요해진다.
과거에는, 캐쉬로 전용되는 인스트럭션을 프리디코딩(pre-decoding)하므로써 디스패치 대기시간이 감소되었다. 따라서, 잉여 비트(extra bits)가 각 인스트럭션에 대해 디코드 정보(decode information)를 저장하기 위해 요구되었으나, 캐쉬가 액세스된 경우(캐쉬 히트), 디스패치는 단지, 각 인스트럭션이 어디로 전송되어야 할지를 결정하기 위해 디코드 정보를 보는 것만이 필요했었다. 이러한 구현의 댓가는 캐쉬내의 각 인스트럭션에 대한 잉여 비트였으며(따라서 동일한 크기의 캐쉬 구조에 대해, 보다 적은 인스트럭션이 저장될 수 있다), 이로 인한 장점은 보다 작은 디스패치 대기시간이었다. 오늘날, 사이클 시간이 감소됨에 따라, 다수의 프로세서는 특정 인스트럭션(즉, 브랜치 인스트럭션 등)에 대해 0 사이클 디스패치를 가지게 되었고, 이러한 디코딩을 제공하기 위해 병렬 로직(parallel logic)에 대해 보다 절실한 필요성이 존재한다. 이 병렬 로직은 프로세서에 상당한 비용과 복잡성을 부가한다.
따라서, 필요한 것은 앞서 확인된 종래 방안의 성능에 문제를 일으키지 않고 디스패치 대기시간을 현저히 감소시키는 방법 및 시스템이다. 이러한 방법 및 시스템은 구현이 간단하고 비용효과적이어야 한다. 본 발명은 이러한 필요성을 해결한다.
본 발명에 따른 방법 및 시스템은 프로세서내에서의 감소된 디스패치 대기시간을 위해 제공한다. 본 방법 및 시스템은, 인스트럭션이 캐쉬에 입력되기 전에, 사전결정된 포맷으로 인스트럭션을 재순서화하고, 인스트럭션의 재순서화에 관하여 캐쉬내에 정보를 저장하며, 재순서화된 인스트럭션을 사전결정된 포맷에 기초된 적절한 실행 유닛에 제공한다. 인스트럭션이 캐쉬에 입력하기 전에 인스트럭션을 프리디스패칭(predispatching)하므로써, 디스패치 대기시간은 현저히 감소되고, 시스템의 전체 속도는 현저히 향상된다.
본 발명은 컴퓨터 시스템의 캐쉬를 액세스하는데 있어 개선책에 관한 것이다. 다음의 설명은 당 분야에서 통상의 지식을 가진자가, 본 발명을 이용할 수 있도록 제공되며, 특허 응용 및 그의 요건의 문맥으로 제공된다. 본 발명에 대한 각종 변경은 당 분야에소서 통상의 지식을 가진자에게 더 명확해질 것이며, 일반적인 원칙이 다른 실시예에도 적용될 수 있다. 따라서, 본 발명은 기술된 실시예로 제한될 의도가 없으며 이하 기술된 원칙 및 속성과 부합하는 광범위한 범위에 일치하게 된다.
제1도는 프로세서에 이용된 종래의 디스패칭 시스템(10)의 블럭도이다. 종래의 디스패칭 시스템(10)은 인스트럭션을 수신하고 이들 디코드된 인스트럭션을 캐쉬(14)에 제공하는 프리디코드 유닛(predecode unit)(12)을 포함한다. 캐쉬(14)는 디코드된 인스트럭션을 수신하고, 그들을 디스패치 버퍼(dispatch buffer)(16)에 제공한다. 디스패치 버퍼(16)는 그리고나서 인스트럭션을 적절한 실행 유닛(18-24)에 제공한다.
인스트럭션 캐슁은 고성능, 수퍼-스칼러 프로세서에 중요한 메카니즘이다. 이것은 프로세서로 하여금, 비록 메모리가 전형적으로 다수의 사이클이라 하더라도 그의 실행 유닛을 지원할 수 있을만큼 충분히 빠르게, 인스트럭션을 인출할 수 있게 한다. 인스트릭션 캐쉬를 사용하는 근본적인 이유는 인출 대기시간을 감소시키기 위해서이다.
상술한 바와 같이, 프로세서의 디스패치 대기시간이 보다 더 복잡해짐에 따라, 프로세서는 0 디스패치 대기시간을 요구한다.
다시 제1도를 참조하면, 디스패치 대기시간 문제점을 해결하는 전형적인 방법은 인스트럭션이 캐쉬(14)로 입력하기 전에 인스트럭션을 프리디코드하는 것이다. 디코드 정보는 그리고나서 캐쉬(14)에 의해 판독되고, 인스트럭션은 적절한 실행 유닛(18-24)에 전송된다. 앞에서도 언급한 바와 같이, 이러한 구현에 있어 문제점은, 동일한 크기의 캐쉬 구조에 대해 보다 적은 인스트럭션이 저장될 수 있고, 디코딩을 제공하는데 있어 부가의 로직이 요구되는 것이었다.
본 발명은 캐쉬가 사용되는 경우 디스패치 대기시간을 감소시키는 방법 및 시스템을 제공한다. 본 발명은 인스트럭션-전용 캐쉬(instruction-only cache)(I-cache)의 관점에서 기술될 것이다. 그러나, 당 분야에서 통상의 지식을 가진자는, 본 방법 및 시스템이 브랜치 목적 캐쉬(branch target cache)뿐만 아니라 표준 인스트럭션 캐쉬(standard instruction cache)에 대해서도 효과적으로 동작할 것임을 이해할 것이다.
본 발명에 따른 방법 및 시스템에 있어서, 인스트럭션은 프리디코드된 포맷(a pre-decoded format)대신에 프리디스패치된 포맷(a pre-dispatched cache)으로 인스트럭션 캐쉬내에 저장된다. 이러한 시스템에 있어서, 프로세서 동작에 대해 한가지 가정이 이루어져야 한다. 캐쉬로부터 수신된 단어의 수는 일정한 것으로 가정된다(즉, 고정된 캐쉬 라인 크기(a fixed cache line size)).
본 발명에 따른 프리디스패칭 시스템을 보다 자세히 도시하기 위해서는, 이러한 시스템의 한 실시예인 흐름도(100)를 예시하는 제2도를 참조한다. 이 시스템에서, 단계(104)에서 각종 인스트럭션이 입력된다. 그후, 본 실시예에서, 단계(106)에서 다음의 인스트럭션이 브랜치인지의 여부가 판정된다. 다음의 인스트럭션이 브랜치 인스트럭션인 경우, 단계(107)에서, 인스트럭션은 다음의 브랜치 위치로 배치된다. 인스트럭션이 브랜치 인스트럭션이 아닌 경우, 단계(108)에서 인스트럭션이 로드 인스트럭션(a load instruction)인지의 여부가 판정되야 한다.
인스트럭션이 로드 인스트럭션인 경우, 단계(110)에서, 로드 인스트럭션은 다음의 로드 인스트럭션 위치에 배치된다. 인스트럭션이 로드 인스트럭션이 아닌 경우, 단계(112)에서, 인스트럭션이 부동 소숫점 인스트럭션인지의 여부가 판정된다. 인스트럭션이 부동 소숫점 인스트럭션인 경우, 단계(114)에서, 인스트럭션은 다음의 부동 소숫점 위치로 배치된다. 한편, 부동 소숫점 인스트럭션이 아닌 경우, 단계(116)에서 인스트럭션은 다음 위치로 배치된다. 이 시퀀스(sequence)는, 인스트럭션이 적절한 방식으로 로드될 때까지 반복된다.
보다 효율적인 프리디스패칭 시스템은 제4도에 도시되어 있다. 이 시스템에서, 제1브랜치, 제1로드 및 제1부동 소숫점 인스트럭션(first branch, first load and first floating instructions)은, 단계(206,208,210)와 동일한 방식으로 그들의 제각기 위치에 배치된다. 그후 이들 제1인스트럭션의 각각은 제각기 단계(212,214,216)에서 그들의 제각기 인스트릭션에 동시에 배치된다. 그 후, 나머지 인스트럭션은 제2도에 기술된 시스템에 따라 대응하는 위치에 배치된다.
따라서 본 발명에 따른 시스템에 있어서, 캐쉬내의 각 인스트럭션에 대해 디코드 정보를 저장하는 대신에, 인스트럭션은 자신즐이 캐쉬로 입력하기 전에 재순서화된다. 또한, 각 캐쉬 라인에 대한 인스트럭션의 순서에 관한 정보는 캐쉬내에 저장된다.
한 실시예에서, 인스트럭션이 캐쉬에 저장되는 순서는 다음과 같이 될 수 있다. 즉, 제1브랜치 인스트럭션은 캐쉬 라인에서 항상 가장 좌측 인스트럭션이고, 제1로드/비교 인스트럭션(first load/compare instruction)은 캐쉬 라인에서 항상 가장 우측 인스트럭션이다. 제1부동 소숫점 인스트럭션은 제1로드/비교 인스트럭션의 좌측의 위치에 항상 배치되고, 제1부동 소숫점 인스트럭션은 제1브랜치 인스트럭션의 우측의 위치에 배치된다.
이 실시예를 보다 자세히 도시하기 위해서는, 네개의 단어 캐쉬 라인의 배열을 프리디스패치된 포맷으로 도시하는 도표인 제4도를 참조한다.
라인 300 : 라인(300)에서, 브랜치(BR), 부동 소숫점(FP), 제1로드(LD)는 그들의 적절한 위치에 배치되야 하고, 제2LD 는 하나의 나머지 위치로 배치된다. 디스패치 유닛이 인스트럭션의 이러한 세트를 수신하는 경우, 비록 인스트럭션이 부동 솟숫점 위치에 있다 하더라도 제2LD 를 로드/비교 유닛으로 정확히 디스패치해야 하고, 그러나, 로드/비교 유닛은 제1LD 로 이미 분주상태이므로, 다음 사이클까지 이것을 디스패치할 필요는 없다.
라인 302 : 라인(302)에서, 제1비교(CMP)및 제1BR 만이 그들의 위치 세트를 갖는다. 제2BR 은 제1BR 다음의 위치로 배치되고, 제2CMP 는 제1비교에 가장 근접한 위치에 배치된다.
라인 304 : 라인(304)에서, 인스트럭션(LD)의 각 유형중 하나가 존재함에 따라, 각 인스트럭션은 배치되야 할 위치를 갖는다.
라인 306 : 라인(306)에서, 제1LD 만이 특정 위치에 배치될 필요가 있다. LD 의 나머지는 그들을 다음 사이클에 디스패치해야 하는 기대에 따라 제1LD 에 대한 순서(우측으로부터 좌측)로 배치되었다.
인스트럭션이 앞의 포맷으로 저장되는 경우, 프로그램 순서정보는 직렬 종료의 상황을 유지하도록 종료 유닛/동기화 로직에 대한 순서로 저장되어야 한다. 이 정보는 그 인스트럭션에 대해 프로그램 순서 위치를 제공하는 각 인스트럭션에 대해 태그의 형식을 취할 수 있다. 앞의 네개의 단어 캐쉬 라인에 대해, 바람직한 실시예에서의 태그는 위치 당 2 비트 태그이다.
제5도를 참조하면, 본 발명에 따른 프로세서에 이용하는 프리디스패칭 시스템(400)의 블럭도가 도시되어 있다. 프리디스패칭 시스템(400)은 특정의 포맷으로 인스트럭션 캐쉬(404)에 데이타를 제공하는 제2도 및 제3도에 예시된 흐름도에 따라 동작하는 프리디스패처(402)를 포함한다. 캐쉬(404)는 그리고나서 실행 유닛인, 브랜치유닛(406), 부동 소숫점 유닛(408), 고정된 소숫점 유닛(410)및 로드 제어 유닛(412)에 인스트럭션을 제공한다.
따라서, 실행 유닛(406-412)으로 동시에 디스패칭하여(전적으로 위치에 기초하는-디코딩이 행해지지 않는다), 전체 캐쉬 라인은 인스트럭션이 디코드되는 디스패치 버퍼에 위치된다(각 실행 유닛의 제1단계와 동시에). 인스트럭션이 잘못된 위치에 존재하는 것과 같이 디코드되는 경우(예를 들면, 실시예(300)에서 LD2), 원천적으로 디스패치되어(최소에서, 그 결과가 억제되는)실행 유닛에서 폐기되고, 디스패치 버퍼(414)로부터 정확한 실행 유닛으로 디스패치된다.
주목할 점은 실행 유닛이 분주상태이거나 또는 디스패치 버퍼(414)가 그 실행 유닛으로 인스트럭션을 디스패칭하는 경우, 캐쉬로부터 나오는 인스트럭션은 디스패치되지 않는다는 것이다(즉, 캐쉬 인스트럭션은 디스패치 버퍼 또는 실행 유닛의 홀드(ho1ds)보다 낮은 우선순위이다).
제4도의 프리디스패칭 시스템(400)은 캐쉬(404)로부터 직접 디스패치되는 네개의 인스트럭션까지 허용한다(0 사이클 디스패치).
비록 본 발명이 네개의 실행 유닛을 이용하여 기술되었다 하더라도, 당분야에서 통상의 지식을 가진자는, 소정 수의 실행 유닛이 이용될 수 있고, 이들 이용은 본 발명의 정신 및 범위내에서 가능하다는 것을 이해할 것이다. 시스템(400)의 유일한 제한은, 일정한 라인 폭이 요구되고, 그 라인 폭은 개별적인 실행 유닛의 수보다 커야 한다는 것이다. 실행 유닛(406-412)은 전형적으로 그들이 개시된 후에 적어도 한 사이클의 인스트럭션을 폐기할 능력을 갖는다.
한 사이클 캐쉬가 확증되고, 브랜치 인스트럭션이 디스패치되는 경우, 이 시스템은 사이클 당 0.5브랜치의 처리량을 허용할 것이다(캐쉬 히트를 가정하여). 0 사이클 브랜치 목적 캐쉬에 따라, 사이클 당 1 브랜치의 처리량이 유지될 수 있다(캐쉬 히트를 가정하여).
매우 높은 소실 비율(10-15 퍼세트)을 갖는 애플리케이견이라 할지라도, 디스패칭 인스트럭션을 이용한 사이클 수는 프리디스패치된 캐슁을 이용하여 현저히 감소될 수 있다.
앞서 언급한 바와 같이, 다수의 프로세서는 브랜치 인스트럭션에 대해 0 사이클 디스패치를 갖는다. 사이클 시간이 감소됨에 따라, 이것은 유효한 공간을 취할 수 있는 보다 많은 고속도 병렬 로직(high-speed parallel logic)을 요구할 것이다. 본 발명에 따른 프리디스패치된 캐쉬 시스템을 사용하여, 본 시스템을 구현하도록 요구되는 로직은, 캐쉬 라인의 제1브랜치가 동일한 위치에 존재하므로, 현저히 감소될 수 있다. 따라서, 이 기능에 대해서는 병렬 로직이 요구되지 않는다. 공간적인 제한요건이 주어져 있으므로, 이 시스템은 보다 빠른 프로세서 클럭 비율을 초래할 것이다(디스패치는 전형적으로 각 클럭 속도에 대해 주요 게이팅 인자(gating factors)중 하나이다). 따라서 종래 기술 시스템보다 현저한 장점을 갖는 본 발명에 따른 시스템이 제공된다.
비록 본 발명이 도시된 실시예에 따라 기술되었다 하더라도, 당 분야에서 통상의 지식을 가진자는, 실시예에 대한 변경이 존재하고 본 발명의 정신 및 범위내에서 있음을 용이하게 인지할 것이다. 따라서, 첨부되는 청구 범위의 정신 및 범위를 벗어나지 않고도 많은 변경이 당 분야에서 통상의 지식을 가진자에 의해 이루어질 수 있다.
Claims (10)
- 인스트럭션을 수신하는 캐쉬(a cache)와 상기 캐쉬로부터 인스트럭션을 수신하기 위한 다수의 실행 유닛(a plurality of execution units)을 포함하는 프로세서(a processor)의 인스트럭션 디스패치 대기시간(instruction dispatch latency)을 감소시키기 위한 방법에 있어서, (a) 상기 인스트럭션이 상기 캐쉬에 입력되기 전에 상기 인스트럭션을 사전결정된 포맷(a predetermined format)으로 재순서화(reordering)하는 단계와; (b) 상기 인스트럭션의 재순서화에 관련한 정보를 캐쉬에 저장하는 단계와; (c)상기 사전결정된 포맷에 기초하여 적절한 실행 유닛에 상기 재순서화된 인스트럭션을 제공하는 단계를 포함하는 프로세서의 인스트럭션 디스패치 대기시간 감소 방법.
- 제1항에 있어서, 상기 인스트럭션은 브랜치(branch), 로드(load), 부동 소숫점(floating point) 및 고정 소숫점(fixed point) 인스트럭션을 포함하는 프로세서의 인스트럭션 디스패치 대기시간 감소 방법.
- 제2항에 있어서, 상기 인스트럭션은 좌측으로부터 우측으로의 순서로 상기 캐쉬의 각 라인에 위치되는 프로세서의 인스트럭션 디스패치 대기시간 감소 방법.
- 제2항에 있어서, 상기 사전결정된 포맷은 상기 캐쉬 라인내의 가장 좌측 위치(a left most position)에 제1브랜치 라인(a first branch line)을, 상기 캐쉬 라인내의 가장 우측 위치(a right most position)에 제1로드 라인(a first load line)을 위치시키는 것을 포함하는 프로세서의 인스트럭션 디스패치 대기시간 감소 방법.
- 제2항에 있어서, 상기 재순서화 단계(a)는, (a1) 인스트럭션을 입력하는 단계와; (a2) 다음 인스트럭션이 브랜치 인스트럭션인지의 여부를 판정하는 단계와; 상기 인스트럭션이 브랜치 인스트럭션인 경우, (a3) 상기 다음 브랜치 인스트럭션 위치에 상기 인스트럭션을 위치시키고, 단계(a1)로 복귀하는 단계와; 상기 다음 인스트럭션이 브랜치 인스트럭션이 아닌 경우, (a4) 상기 다음 인스트럭션이 로드 인스트럭션인지의 여부를 판정하는 단계와; 상기 인스트럭션이 로드 인스트럭션인 경우, (a5) 상기 다음 로드 인스트럭션 위치에 상기 인스트럭션을 위치시키고, 단계(a1)로 복귀하는 단계와; 상기 다음 인스트럭션이 로드 인스트럭션이 아닌 경우, (a6) 상기 다음 인스트럭션이 부동 소숫점 인스트럭션인지의 여부를 판정하는 단계와; 상기 다음 인스트럭션이 부동 소숫점 인스트럭션인 경우, (a7) 상기 다음 부동 소숫점 인스트럭션 위치에 상기 인스트럭션을 위치시키는 단계와; 상기 인스트럭션이 부동 소숫점 인스트럭션이 아닌 경우, (a8) 상기 캐쉬 라인의 다음 이용가능한 인스트럭션 위치에 상기 다음 인스트럭션을 위치시키는 단계를 더 포함하는 프로세서의 인스트럭션 디스패치 대기시간 감소 방법.
- 제2항에 있어서, 상기 재순서화 단계는, (a1) 제1브랜치 인스트럭션(first branch instruction), 제1로드 인스트럭션(first load instruction) 및 제1인스트럭션(first instruction)을 발견(finding)하는 단계와; (a2) 상기 캐쉬 라인내의 적절한 위치에 상기 제1, 제1브랜치 및 제1로드 인스트럭션을 위치시키는 단계를 더 포함하는 프로세서의 인스트럭션 디스패치 대기시간 감소 방법.
- 프로세서의 디스패치 대기시간을 감소시키기 위한 시스템에 있어서, 사전결정된 포맷으로 인스트럭션을 수신하고, 재순서화 정보를 제공하기 위한 프리디스패치 유닛(a predispatch unit)과; 상기 프리디스패치 유닛으로부터 상기 재순서화 정보 및 상기 재순서화 인스트럭션을 수신하기 위한 캐쉬 메모리(a cache memory)와; 상기 사전결정된 포맷에 기초한 상기 재순서화된 인스트럭션을 수신하기 위한 다수의 실행 유닛(a Plurality of execution units)을 포함하는 프로세서의 인스트럭션 디스패치 대기시간 감소 시스템.
- 제7항에 있어서, 상기 인스트럭션은 브랜치, 로드, 부동 소숫점 및 고정 소숫점 인스트럭션을 포함하는 프로세서의 인스트럭션 디스패치 대기시간 감소 시스템.
- 제8항에 있어서, 상기 인스트럭션은 좌측으로부터 우측으로의 순서로 상기 캐쉬의 각 라인에 위치되는 프로세서의 인스트럭션 디스패치 대기시간 감소 시스템.
- 제8항에 있어서, 상기 사전결정된 포맷은 상기 캐쉬 라인내의 가장 좌측 위치에 제1브랜치 라인을, 상기 캐쉬 라인내의 가장 우측 위치에 제1로드 라인을 위치시키는 것을 포함하는 프로세서 인스트럭션의 디스패치 대기시간 감소 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8/377,976 | 1995-01-25 | ||
US08/377,976 US5742784A (en) | 1995-01-25 | 1995-01-25 | System for reordering of instructions before placement into cache to reduce dispatch latency |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960029963A KR960029963A (ko) | 1996-08-17 |
KR0175985B1 true KR0175985B1 (ko) | 1999-05-15 |
Family
ID=23491226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950067116A KR0175985B1 (ko) | 1995-01-25 | 1995-12-29 | 프로세서의 인스트럭션 디스패치 대기시간 감소 방법 및 시스템 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5742784A (ko) |
EP (1) | EP0724213A3 (ko) |
JP (1) | JP3465730B2 (ko) |
KR (1) | KR0175985B1 (ko) |
TW (1) | TW302447B (ko) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903741A (en) * | 1995-01-25 | 1999-05-11 | Advanced Micro Devices, Inc. | Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions |
US5901302A (en) * | 1995-01-25 | 1999-05-04 | Advanced Micro Devices, Inc. | Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions |
US6237082B1 (en) | 1995-01-25 | 2001-05-22 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received |
US5878244A (en) * | 1995-01-25 | 1999-03-02 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received |
US5946468A (en) * | 1996-07-26 | 1999-08-31 | Advanced Micro Devices, Inc. | Reorder buffer having an improved future file for storing speculative instruction execution results |
US5915110A (en) * | 1996-07-26 | 1999-06-22 | Advanced Micro Devices, Inc. | Branch misprediction recovery in a reorder buffer having a future file |
US5872951A (en) * | 1996-07-26 | 1999-02-16 | Advanced Micro Design, Inc. | Reorder buffer having a future file for storing speculative instruction execution results |
US5983342A (en) * | 1996-09-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Superscalar microprocessor employing a future file for storing results into multiportion registers |
EP1012708B1 (en) * | 1997-01-29 | 2003-05-07 | Advanced Micro Devices, Inc. | A line-oriented reorder buffer for a superscalar microprocessor |
US6237077B1 (en) * | 1997-10-13 | 2001-05-22 | Idea Corporation | Instruction template for efficient processing clustered branch instructions |
US6112299A (en) * | 1997-12-31 | 2000-08-29 | International Business Machines Corporation | Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching |
US6345355B1 (en) | 1998-05-29 | 2002-02-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for distributing commands to a plurality of circuit blocks |
WO2000054519A1 (en) | 1999-03-12 | 2000-09-14 | Fortel Dtv, Inc. | Time base corrector |
US6351802B1 (en) * | 1999-12-03 | 2002-02-26 | Intel Corporation | Method and apparatus for constructing a pre-scheduled instruction cache |
US7046299B1 (en) | 2000-09-29 | 2006-05-16 | Fortel, Dtv | Digital video synchronizer with both decoded digital and undecoded analog outputs |
US7327405B1 (en) | 2003-04-04 | 2008-02-05 | Qustream Corporation | Systems and methods for improved video comb filtering with dynamic chroma bandwidth control |
US7660952B2 (en) * | 2007-03-01 | 2010-02-09 | International Business Machines Corporation | Data bus bandwidth scheduling in an FBDIMM memory system operating in variable latency mode |
US8028257B2 (en) * | 2007-03-01 | 2011-09-27 | International Business Machines Corporation | Structure for data bus bandwidth scheduling in an FBDIMM memory system operating in variable latency mode |
JP7032647B2 (ja) * | 2018-04-17 | 2022-03-09 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4371927A (en) * | 1977-11-22 | 1983-02-01 | Honeywell Information Systems Inc. | Data processing system programmable pre-read capability |
US4521850A (en) * | 1977-12-30 | 1985-06-04 | Honeywell Information Systems Inc. | Instruction buffer associated with a cache memory unit |
US4437149A (en) * | 1980-11-17 | 1984-03-13 | International Business Machines Corporation | Cache memory architecture with decoding |
US4722050A (en) * | 1986-03-27 | 1988-01-26 | Hewlett-Packard Company | Method and apparatus for facilitating instruction processing of a digital computer |
US5142634A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
WO1991004536A1 (en) * | 1989-09-20 | 1991-04-04 | Dolphin Server Technology A/S | Instruction cache architecture for parallel issuing of multiple instructions |
JP2818249B2 (ja) * | 1990-03-30 | 1998-10-30 | 株式会社東芝 | 電子計算機 |
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
US5448746A (en) * | 1990-05-04 | 1995-09-05 | International Business Machines Corporation | System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution |
DE69130588T2 (de) * | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
US5212794A (en) * | 1990-06-01 | 1993-05-18 | Hewlett-Packard Company | Method for optimizing computer code to provide more efficient execution on computers having cache memories |
-
1995
- 1995-01-25 US US08/377,976 patent/US5742784A/en not_active Expired - Fee Related
- 1995-10-02 TW TW084110262A patent/TW302447B/zh active
- 1995-12-20 EP EP95480192A patent/EP0724213A3/en not_active Withdrawn
- 1995-12-29 KR KR1019950067116A patent/KR0175985B1/ko not_active IP Right Cessation
-
1996
- 1996-01-10 JP JP00242096A patent/JP3465730B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0724213A2 (en) | 1996-07-31 |
US5742784A (en) | 1998-04-21 |
JP3465730B2 (ja) | 2003-11-10 |
EP0724213A3 (en) | 1997-05-28 |
KR960029963A (ko) | 1996-08-17 |
TW302447B (ko) | 1997-04-11 |
JPH08249180A (ja) | 1996-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR0175985B1 (ko) | 프로세서의 인스트럭션 디스패치 대기시간 감소 방법 및 시스템 | |
US5185868A (en) | Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy | |
US6249862B1 (en) | Dependency table for reducing dependency checking hardware | |
US6256727B1 (en) | Method and system for fetching noncontiguous instructions in a single clock cycle | |
US5337415A (en) | Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency | |
US5664136A (en) | High performance superscalar microprocessor including a dual-pathway circuit for converting cisc instructions to risc operations | |
US5251306A (en) | Apparatus for controlling execution of a program in a computing device | |
KR920005852B1 (ko) | 데이타 처리 시스템에 있어서 합성 디스크립터를 제공하는 장치 및 방법 | |
KR100880686B1 (ko) | 2개 레벨의 분기 예측 캐시를 갖는 분기 예측 | |
US5951675A (en) | Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch | |
US6161172A (en) | Method for concurrently dispatching microcode and directly-decoded instructions in a microprocessor | |
US6742111B2 (en) | Reservation stations to increase instruction level parallelism | |
EP0677188B1 (en) | System and method for assigning tags to instructions to control instruction execution | |
US5845323A (en) | Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time | |
US5903740A (en) | Apparatus and method for retiring instructions in excess of the number of accessible write ports | |
US6289442B1 (en) | Circuit and method for tagging and invalidating speculatively executed instructions | |
US6968444B1 (en) | Microprocessor employing a fixed position dispatch unit | |
EP0723221A2 (en) | Information processing apparatus for prefetching data structure either from a main memory or its cache memory | |
US6499097B2 (en) | Instruction fetch unit aligner for a non-power of two size VLIW instruction | |
US10866902B2 (en) | Memory aware reordered source | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
US6286094B1 (en) | Method and system for optimizing the fetching of dispatch groups in a superscalar processor | |
US6119220A (en) | Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions | |
US6085302A (en) | Microprocessor having address generation units for efficient generation of memory operation addresses | |
US20040128476A1 (en) | Scheme to simplify instruction buffer logic supporting multiple strands |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20061101 Year of fee payment: 9 |
|
LAPS | Lapse due to unpaid annual fee |