KR19990077433A - 병행생성된복수의페치어드레스중하나를선택하여메모리요구를형성하는명령페치방법및프로세서 - Google Patents

병행생성된복수의페치어드레스중하나를선택하여메모리요구를형성하는명령페치방법및프로세서 Download PDF

Info

Publication number
KR19990077433A
KR19990077433A KR1019990005174A KR19990005174A KR19990077433A KR 19990077433 A KR19990077433 A KR 19990077433A KR 1019990005174 A KR1019990005174 A KR 1019990005174A KR 19990005174 A KR19990005174 A KR 19990005174A KR 19990077433 A KR19990077433 A KR 19990077433A
Authority
KR
South Korea
Prior art keywords
address
branch instruction
processor
instruction
target
Prior art date
Application number
KR1019990005174A
Other languages
English (en)
Other versions
KR100331199B1 (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 KR19990077433A publication Critical patent/KR19990077433A/ko
Application granted granted Critical
Publication of KR100331199B1 publication Critical patent/KR100331199B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address

Abstract

메모리로부터 명령을 페치하는 방법 및 프로세서가 기술된다. 본 발명의 방법에 따르면, 복수의 타깃 어드레스는 복수의 사전에 페치된 명령을 이용하여 결정되고, 순차 어드레스는 복수의 사전에 페치된 최종 명령을 이용하여 결정된다. 타깃 어드레스와 순차 어드레스의 결정과 함께, 복수의 타깃 어드레스 또는 순차 어드레스 중 하나를 지정하는 선택 신호가 생성된다. 선택 신호는 복수의 타깃 어드레스 또는 순차 어드레스 중 하나를 메모리 요구 어드레스로서 선택하는데 이용된다. 이어서 메모리 요구 어드레스는 메모리가 적어도 하나의 명령을 프로세서에 공급하도록 프로세서로부터 메모리에 전송된다. 선택 신호의 생성과 함께 타깃 어드레스와 순차 어드레스를 생성함으로써 명령 페치 대기 시간이 감소된다.

Description

병행 생성된 복수의 페치 어드레스 중 하나를 선택하여 메모리 요구를 형성하는 명령 페치 방법 및 프로세서{PROCESSOR AND METHOD OF FETCHING AN INSTRUCTION THAT SELECT ONE OF A PLURALITY OF FETCH ADDRESSES GENERATED IN PARALLEL TO FORM A MEMORY REQUEST}
본 발명은 일반적으로는 데이타 처리 방법 및 시스템에 관한 것으로, 특히 프로세서에서 메모리 요구 어드레스를 생성하기 위한 방법 및 프로세서에 관한 것이다. 더 구체적으로는 본 발명은 복수 명령을 디코딩하고, 각각의 디코딩된 명령으로부터 페치 어드레스를 병행 생성하며, 이어서 생성된 페치 어드레스 중 하나를 메모리 요구 어드레스로서 선택하는 프로세서에 관한 것이다.
프로세서는 실행용 실행 유닛의 하나 또는 그 이상에 명령이 디스패치되는 명령 큐(instruntion queue), 및 명령 큐를 채우기 위해 메모리로부터 명령을 검색하도록 페치 어드레스를 이용하고 페치 어드레스를 계산하는 명령 페처를 포함한다. 종래의 프로세서에서는, 우선 순위 논리부부(priority logic)를 이용하여 명령 큐내의 어느 명령이 다음 페치 어드레스를 생성하는데 이용되는지를 결정한다. 우선 순위 논리부부에 의한 명령의 선택 후에, 통상적으로는 명령-길이 오프셋을 선택된 명령의 어드레스에 더함으로써 페치 어드레스가 명령으로부터 생성된다. 이어서 선택된 명령으로부터 생성된 페치 어드레스는 요구 어드레스로서 메모리에 패스되어 요구 어드레스에 의해 지정되는 메모리 위치에 저장된 하나 또는 그 이상의 명령을 얻는다. 따라서, 종래 명령 페치 사이클은 순차적으로 수행되는 복수 단계로 구성된다.
명령 큐에서 명령을 조사하기 시작하여 메모리로부터 페치된 명령을 수신할 때까지의 시간 간격을 명령 페치 사이클 시간이라고 한다. 프로세서의 명령 페치 사이클 시간을 감소시켜 프로세서의 전체 성능을 향상시키기 위해, 예를 들면 고속 메모리 기술을 채택하거나 명령 캐시 히트율을 개선시키거나 캐시 온 칩의 추가 레벨을 프로세서에 내장시킴으로써 통상적으로 메모리의 각 구성 성분의 디자인과 구조를 개선시키는 데 관심이 집중되었다. 이들 해법이 분명히 명령 페치 사이클 시간을 개선할 수 있지만, 본 발명은 명령 페치 사이클 시간이 명령 페치 사이클내의 단계를 병행함으로써 감소될 수도 있다는 인식을 수반하는 것이다.
그러므로, 본 발명의 하나의 목적은 데이타 처리를 위한 개선된 방법과 시스템을 제공하는 것이다.
본 발명의 또 하나의 목적은 프로세서내에서 메모리 요구 어드레스를 생성하기 위한 개선된 프로세서와 방법을 제공하는 것이다.
본 발명의 또 다른 하나의 목적은 복수 명령을 디코딩하고, 각각의 디코딩된 명령으로부터 페치 어드레스를 병행 생성한 후 생성된 페치 어드레스 중 하나를 메모리 요구 어드레스로서 선택하는 프로세서를 제공하는 것이다.
상기 목적은 이하에 기술되는 것과 같이 달성된다. 본 발명의 방법에 따르면, 복수의 사전에 페치된 명령을 이용하여 복수의 타깃 어드레스를 결정하고, 복수의 사전에 페치된 명령 중 최종 명령을 이용하여 순차 어드레스를 결정한다. 타깃 어드레스와 순차 어드레스의 결정과 동시에, 복수의 타깃 어드레스 또는 순차 어드레스 중 하나를 지정하는 선택 신호가 생성된다. 선택 신호는 복수의 타깃 어드레스 또는 순차 어드레스 중 하나를 메모리 요구 어드레스로서 선택하는데 이용된다. 이어서 메모리 요구 어드레스가 프로세서로부터 메모리에 전송되고, 이에 따라 메모리가 적어도 하나의 명령을 프로세서에 공급한다. 선택 신호의 생성과 동시에 타깃 어드레스와 순차적 어드레스를 생성함으로써 명령 페치 대기 시간(latency)이 감소된다.
본 발명의 상기 및 부가적인 목적, 특징 및 장점은 이하의 상세한 설명에서 명백하게 될 것이다.
본 발명의 새로운 특징은 이하의 청구 범위에 나타난다. 본 발명의 양호한 실시예, 다른 목적 및 장점 뿐만 아니라 본 발명 자체도 양호한 실시예에 대한 상세한 설명과 첨부된 도면을 참조하면 가장 잘 이해될 것이다.
도 1은 본 발명의 방법과 시스템이 유용될 수 있는 데이타 처리 시스템의 실시예를 도시한 도.
도 2는 도 1에 도시된 데이타 처리 시스템의 명령 유닛의 더 상세한 블록 다이어그램.
도 3은 본 발명에 따라 메모리로부터 명령을 페치하는 방법을 도시한 논리적 플로우 차트.
<도면의 주요 부분에 대한 부호의 설명>
10 : 프로세서
11 : 명령 유닛
12 : 버스 인터페이스 유닛
13 : D-캐시
14 : I-캐시
15 : 정수 유닛
16 : 로드/기억 유닛
17 : 부동 소수점 유닛
20 : 완료 유닛
도 1을 참조하면, 이하의 청구 범위에 기재된 본 발명에 따른 명령과 데이타를 처리하기 위한 프로세서(10으로 표시함)의 실시예에 대한 블록 다이어그램이 도시된다. 도시된 실시예에서, 프로세서(10)는 단일 집적 회로 슈퍼 스칼라 (superscalar) 마이크로 프로세서를 포함한다. 따라서, 이하에 상세히 더 기술된 바와 같이, 프로세서(10)는 다양한 실행 유닛, 레지스터, 버퍼, 메모리, 및 다른 기능 유닛을 포함하는데, 이들 모두는 집적 회로로 형성된다. 프로세서(10)는 IBM 마이크로 일렉트로닉스로부터 입수 가능하고, 한정 명령 세트 컴퓨팅(RISC) 기술에 따라 동작하는 PowerPCTM계열의 마이크로 프로세서 중 하나를 포함하는 것이 바람직하다. 그러나, 당업자라면 본 발명이 어떤 다른 프로세서에도 적용 가능하다는 것을 이하의 설명으로부터 이해할 수 있을 것이다.
도 1에 도시된 바와 같이, 프로세서(10)는 프로세서(10)내의 버스 인터페이스 유닛(BIU)을 통해 프로세서 버스(23)에 결합된다. BIU(12)는 프로세서(10)와 프로세서 버스(11)에 결합된 다른 장치, 즉 외부 레벨 2(L2) 캐시 또는 메인 메모리(도시되지 않음)와의 정보 전송을 버스 아비트레이션(arbitration)에 참가함으로써 제어한다. 프로세서(10), 프로세서 버스(23), 및 프로세서 버스(11)에 결합된 다른 디바이스는 함께 데이타 처리 시스템을 형성한다.
BIU(12)는 프로세서(10) 내에서 명령(I) 캐시(14)와 데이타(D) 캐시(13)에 접속된다. I-캐시(14)와 D-캐시(13)와 같은 고속 캐시는 프로세서(10)로 하여금 메모리의 하부 레벨로부터 캐시로 사전에 전송된 데이타 또는 명령의 서브세트에 비교적 고속으로 액세스할 수 있도록 함으로써, 호스트 데이타 처리 시스템의 성능을 개선시킨다. I-캐시(14)는 각 사이클마다 I-캐시(14)로부터 명령을 페치하는 명령 유닛(14)에 또한 결합된다. 명령 유닛(11)은 분기 명령을 내부적으로 처리하지만, 순차 명령을 실행을 위해 프로세서(10)의 순차 실행 회로에 디스패치한다.
도시된 실시예에서, 순차 실행 회로는 정수 유닛(15), 로드/기억 유닛(LSU; 16), 및 부동 소수점 유닛(FPU; 17)를 포함한다. 각 실행 유닛(15 내지 17)은 통상적으로 매 프로세서 사이클동안 순차 명령 중 특정한 유형의 어느 한 명령 또는 그 이상의 명령을 실행한다. 예를 들면, 정수 유닛(15)은 특정 범용 레지스터(GPR; 18) 또는 GPR 리네임 버퍼로부터 수신된 정수 오퍼랜드에 대해 덧셈, 뺄셈, AND 연산, OR 연산, 및 XOR 연산과 같은 수학적 논리적 연산을 수행한다. 명령의 실행 후에, 정수 유닛(15)은 명령의 결과 데이타 - 있는 경우 - 를 GPR 리네임 버퍼(24)에 출력하고, 이 GPR 리네임 버퍼(24)는 완료 유닛(20)의 지시하에서 결과 데이타를 GPR 리네임 버퍼(24)로부터 하나 또는 그 이상의 GPR(18)에 전송함으로써 명령이 완료될 때까지는 결과 데이타를 위한 일시 기억 영역을 제공한다.
FPU(17)는 통상적으로 부동 소수점 레지스터(FPR; 19) 또는 FPR 리네임 버퍼(25)로부터 수신된 소스 오퍼랜드에 대해 부동 소수점 승산 및 나눗셈과 같은 단일 및 배정도 부동 소수점 산술 및 논리 연산을 수행한다. FPU(30)는 부동 소수점 명령의 실행으로부터 얻어진 데이타를 선택된 FPR 리네임 버퍼(25)에 출력하고, FPR 리네임 버퍼(25)는 완료 유닛(20)의 지시하에서 FPR 리네임 버퍼(25)로부터의 결과 데이타를 선택된 FPR(19)에 전송함으로써 명령이 완료될 때까지 결과 데이타를 일시 기억한다.
이름에 함축되어 있는 바와 같이, LSU(16)는 통상적으로 메모리(즉, D-캐시(13) 또는 메모리 중 하나)로부터의 데이타를 선택된 GPR(18) 또는 FPR(19)에 로드하거나, GPR(18), GPR 리네임 버퍼(24), FPR(19), 또는 FPR 리네임 버퍼(15) 중 선택된 하나로부터의 데이타를 메모리에 기억하는 부동 소수점 및 고정 소수점 명령을 실행한다. 프로세서(10)는 프리디코딩(predecode)된 명령을 I-캐시(14)에 저장하기 전에 하부 레벨 메모리로부터 수신된 명령을 프리디코딩하며, BIU(12)와 I-캐시 사이에 배치되는 프리드코더(22)를 선택적으로 포함한다. 그러한 프리 디코딩은 예를 들면 명령 유닛(11)에 의한 스트림라인된 처리를 용이하게 하기 위해 분기 명령을 균일 포맷으로 배치시키는 것을 포함할 수 있다.
프로세서(10)는 슈퍼 스칼라 구조의 성능을 더 개선하기 위해 명령의 파이프라인 방식 및 무순서(out of order) 방식 실행을 사용하는 것이 바람직하다. 따라서, 명령은 데이타 의존성(dependency)이 관측되는 한 정수 유닛(15), LSU(16), 및 FPU(17)를 어떤 순서로도 실행될 수 있다. 또한, 명령은 프로세서(10)에 의해서 페치, 디코드/디스패치, 실행, 종료(finish), 및 완료(completion)를 포함하는 일련의 파이프라인 단계로 처리된다. 본 발명에 대한 이하의 상세한 기술에서와 같이, 프로세서(10)의 전체 성능은 페치 파이프라인 단계의 명령 페치 사이클 시간을 감소시킴으로써 향상된다.
도 2를 참조하면, 명령 유닛(11)에 대한 더 상세한 블록 다이어그램이 도시된다. 도시된 것과 같이, 명령 유닛(11)은 I-캐시(14)로부터 페치된 명령을 일시적으로 저장하는 실시 형태에 의존하는 수의 엔트리를 포함하는 명령 큐(30)을 포함한다. 명령은 기저 엔트리를 시작으로 하여 프로그램 순서대로 명령 큐(30)의 엔트리로 로드된다. 명령 큐(30)내에서 가장 오래된 명령을 나타내는, 디스패치 윈도우(32)내의 명령은 프로세서 클럭의 매 사이클동안 디스패치용 멀티플렉서(34)에 제공된다. 디스패치 논리(36)에 의해 적절한 선택 신호의 표명시, 하나 또는 그 이상의 명령이 순차 실행 유닛(15 내지 17)에 실행을 위해 디스패치되고, 명령 큐(30)로부터 제거된다. 명령 큐(30)에 남아 있는 명령은 디스패치시 명령이 제거될 때 시프트 다운된다. 원하는 실시 형태에 따라서, 디스패치 논리부(36)는 실행 자원(예를 들면, 실행 유닛과 오퍼랜드)이 유용할 때 프로그램 순서대로 명령을 디스패치하게 하거나, 대안으로서 데이타 의존성의 관찰을 검사하고 명령을 프로그램 순서에서 벗어나게 디스패치 할 수 있다.
도 2에 도시된 바와 같이, 명령 큐(30)은 디스패치 윈도우(32)를 부분적으로 또는 완전히 오버랩하거나 디스패치 윈도우(32)와 분리될 수 있는 관련 페치 윈도우(38)를 더 가지고 있다. 페치 윈도우(38)내의 각 명령은 우선 순위 논리부(42) 및 분기 처리 유닛(BPU; 44) 뿐만 아니라 대응하는 하나의 디코더(40)에 의해 입력으로서 수신된다. 디코더(40)는 페치 윈도우(38)내의 각 명령이 분기 명령이라는 가정하에 동작한다. 따라서, 명령의 수신에 응답하여, 각 디코더(40)는 각 명령을 마치 분기 명령인 것처럼 디코드하여 "분기"가 행해진다면 실행이 분기하여야 할 디코드된 타킷 어드레스를 결정한다. 디코더(40)에 의해 결정된 디코드된 타킷 어드레스는 멀티플렉서(50)의 입력을 형성한다.
명령이 디코더(40)에 의해 디코드되는 방식은 프로세서(10)에 의해 실행되는 명령 셋의 구조와 원하는 논리 복잡성에 좌우된다. 모든 분기 명령이 지정하거나 직접 분기를 지정하도록 한 가장 단순한 경우에, 디코더(40)는 단순히 분기 명령의 직접 필드의 값을 이용하여 디코드된 타깃 어드레스를 결정한다. 상대적 분기가 지원되는 프로세서(10)의 실시예에서는, 도 1의 프리 디코더(22)는 상대적 분기와 직접 분기를 동일 포맷으로 미리 처리하여 상대적 분기와 직접 분기 양쪽 다 디코더(40)에 의해 동일하게 처리될 수 있도록 이용하는 것이 바람직하다. 이러한 프리 프로세싱은, 예를 들면 디코더(40)에 의해 이용될 수 있는 부가적 복수 비트(예를 들면 5비트) 분기 필드를 포함하는 각 분기 명령의 확장을 일으켜서 디코드된 타깃 어드레스를 산출한다. 더욱 더 복잡한 실시예는 파워피시티엠링크와 카운트 레지스터 중 하나와 같이, 프로그램 플로우가 구조화된 레지스터내의 어드레스에 분기해야 할 것을 지정하는 레지스터 간접 분기를 또한 지원할 수 있다. 이러한 실시예에서, 레지스터 간접 분기를 위한 어드레스를 포함하는 구조화된 레지스터(46)의 내용은 디코더(40)에 의해 디코드되어 멀티플렉서(50)에 입력되는 것이 바람직하다.
이하에 더욱 상세히 기술한 바와 같이, 페치 윈도우(38)내인지의 여부에 관계없이 명령 큐(30)내의 최종(프로그램 순서에서) 명령의 어드레스는 명령의 길이와 함께 가산기(48)에 입력된다. 가산기(48)는 명령 어드레스와 명령 길이의 합을 산출하고, 그 합은 다음 순차 명령의 어드레스를 지정한다. 이어서, 순차 명령 어드레스는 디코더(40)에 의해 디코딩되어 멀티플렉서(50)에 입력된다. 따라서, 멀티플렉서(50)에 입력된 모든 어드레스는 디코딩된 어드레스이다.
디코더(40)와 가산기(48)의 동작과 함께, 우선 순위 논리부(42)는 페치 윈도우(38)내에서 명령 - 있는 경우에- 중 어느 것이 분기 명령인지와 분기 명령 중 어느 명령이 페치 윈도우(38)내에서 가장 이른(프로그램 순서로) 미처리된 분기 명령인지를 결정한다. 뿐만 아니라, BPU(44)는 페치 윈도우(38)내의 분기 명령 - 있는 경우 - 중 어느 것이 취해져야 할지를 결정한다. 그래서, BPU(44)는 무조건 분기 명령이 어느 명령인지, 취해지기로 결정된 조건 분기 명령이 어느 명령인지, 또는 스태틱이나 다이나믹 분기 예측을 이용하여 취해지기로 예측된 조건 분기 명령이 어느 명령인지를 우선 순위 논리부(42)에 지시한다. 당업자들에게는 자명한 바와 같이, 스태틱 예측은 통상적으로 컴파일러에 의한 분기 명령과 연관된 비트를 기초로 하고 있는 반면, 다이나믹 예측은 통상적으로, 적어도 부분적으로는, 분기 명령의 명령 어드레스를 기초로 하고 있다. 도시된 바와 같이, BPU(44)는 분기 예측과 분기 결정(resolution)을 디스패치 논리(36)에 제공하고, 디스패치 논리(36)는 분기 예고와 분기 결정을 이용하여 멀티플렉서(34)를 제어하는 선택 신호를 생성한다.
BPU(44)로부터 수신된 입력과 페치 윈도우(38) 내에서 어느 명령 - 있는 경우에 - 이 가장 이른 미처리된 분기 명령인지를 결정한 것을 기초로 하여, 우선 순위 논리부(42)는 디코딩된 선택 신호(52)를 생성하고, 이 신호는 멀티플렉서(50)의 입력과 수에 있어서 동일한 것이 바람직하다. 선택 신호(52)는 멀티플렉서(50)가 메모리 요구 어드레스로서 액티브 선택 신호에 대응하는 디코딩된 입력 어드레스를 선택하게 한다. 메모리 요구 어드레스의 수신에 응답하여, I-캐시(14)는 메모리 요구 어드레스에 관련된 하나 또는 그 이상의 명령을 명령 큐(30)에 공급한다. 중요한 것은, I-캐시(14)에 의한 메모리 요구 어드레스의 수신 이전에 메모리 요구 어드레스가 명령 유닛(11)내의 디코더(40) 중 하나에 의해 디코딩되므로, I-캐시(14)는 메모리 요구 어드레스를 디코딩할 필요가 없어진다. 이것은 우선 순위 논리부(42)의 동작과 병행하여 디코더(40)에 의해 수행되므로 명령 페치 사이클 시간의 감소를 가져다준다.
도 3을 참조하면, 본 발명에 따른 명령을 페치하는 방법의 예의 고레벨 논리 플로우차트를 도시하고 있다. 도시된 것과 같이, 프로세스는 블록(60)에서 시작하여 블록(62)으로 진행하는데, 블록(60)은 엔트리내에 하나 또는 그 이상의 페치된 명령을 명령 큐(30)의 상부에 기억하는 것을 나타낸다. 명령 큐(30)은 선행 엔트리가 제거될 때 엔트리가 명령 큐(30)의 기저부를 향하여 시프트되는 시프팅 큐로서 슈프러(supra)로 기술되었지만, 본 발명은 명령 큐(30)의 다른 구현, 즉 순환 큐에도 동일하게 적용 가능하다는 것은 자명하다. 이어서 프로세스는 블록(62)으로부터 블록(64)으로 진행하는데, 블록(64)은 페치 윈도우(38)내의 각 명령으로부터 타킷 어드레스를 결정하는 디코더를 나타낸다. 또한, 블록(64)은 명령 큐(30)내의 최종 명령의 어드레스와 최종 명령의 길이로부터 다음 순차 페치 어드레스를 계산하는 가산기(48)를 나타낸다.
블록(64)로 나타낸 동작과 병행하여, 블록(70 내지 76)으로 나타낸 동작은 우선 순위 논리부(42)와 BPU(44)에 의해 수행된다. 블록(70)을 참조하면, 페치 윈도우(38)가 미처리된 분기 명령을 포함하는지의 여부에 대한 결정이 우선 순위 논리부(42)에 의해 행해진다. 페치 윈도우(38)가 미처리된 분기 명령을 포함하지 않은 것을 블록(70)에서 결정하는 것에 응답하여, 프로세스는 블록(72)에 패스하는데, 블록(72)은 메모리 요구 어드레스로서 순차 페치 어드레스를 선택하는 적절한 선택 회로를 생성하는 우선 순위 논리부(42)를 나타낸다. 이어서 프로세스는 이하에 기술되는 블록(80)으로 진행한다.
블록(70)으로 돌아가서, 페치 윈도우(38)가 미처리된 분기 명령을 포함한다는 우선 순위 논리부(42)에 의한 결정에 응답하여 프로세스는 블록(74)에 패스한다. 블록(74)은 명령 윈도우(38) 내에서 각 분기 명령을 결정하거나 예측하는 BPU(44)를 도시하고 있다. 블록(74)이 블록(70)의 이후로서 도시되었지만, 블록(70, 74)에 도시된 동작은 타이밍 고려에 따라 순차적으로 또는 병행하여 수행될 수 있다. 다시 말하면, 명령 페치 사이클 시간을 줄이기 위해 블록(70 내지 76)과 관련된 지연은 디코더(40)와 가산기(48)의 지연 중 가장 긴 정도 만큼 짧아야 한다. 따라서, 타이밍 고려에 의해 필요하다면, 블록(74)은 선택적으로 생략가능(점선으로 도시한 것과 같이)하고, 모든 분기가 취해진 것으로 생각할 수 있다. 본 실시예에서, BPU(44)는 블록(84)에 관해서 이하 더 기술되는 것과 같이, 잘못 예측된 실행 경로내에서 명령을 순차적으로 취소하는데 이용될 수 있다. 프로세스는 블록(74)로부터 블록(76)으로 진행하는데, 블록(76)은 명령 윈도우(38) 내에서 가장 일찍 미처리된 분기 명령으로부터 결정된 타깃 어드레스를 선택하는 선택 신호를 생성하는 우선 순위 논리부(42)를 나타낸다. 선택된 타깃 어드레스는 페치 윈도우(38)내의 명령에 관련된 디코드(40) 중의 하나 또는 레지스터 간접 분기 명령이 지원된다면 구조화된 레지스터(46)와 관련된 디코더(40)에 의해 출력될 수 있다. 그런후, 프로세스는 블럭(80)에 패스한다.
블록(80)은 선택 신호(52)에 응답하여 메모리 요구 어드레스로서 적어도 하나의 디코드된 입력 어드레스를 선택하는 멀티플렉서(50)를 도시하고 있다. 이어서, 메모리 요구 어드레스는 멀티플렉스(50)으로부터 I-캐시(14)로 전송된다. 메모리 요구 어드레스로서 불확실 분기 타킷 어드레스가 I-캐시(14)에 공급된 경우에, 우선 순위 논리부(42)는 멀티플렉서(50)으로 하여금 가산기(48)에 의해 산출된 순차적 어드레스를 제2 페치 어드레스로서 I-캐시(14)에 공급하게 하는 선택 신호(52)를 또한 생성한다. 이러한 방식으로, 타깃 어드레스가 옳은 것으로 결정되면, 순차 경로내의 명령은 버려질 수 있다. 다른 방법으로는, 타깃 어드레스가 잘못 예측된 실행 경로내에 있는 것으로 더 늦게 결정되면, 잘못 예측된 경로내의 명령은 버려질 수 있고, 명령 처리는 추가적인 대기 시간을 필요로하지 않고 순차 실행 경로내의 명령으로 진행할 수 있다.
블록(80)에 이어서, 프로세스는 블록(82)에 패스하는데, 블록(82)은 명령 또는 어드레스에 의해 지정된 명령이 명령 큐(30)내에서 수신되었는지 여부의 결정을 나타낸다. 그렇지 않으면, 프로세스는 요구된 명령이 수신될 때까지 블록(82)에서 단지 반복한다. 명령 큐(32)에 의한 요구된 명령의 수신에 응답하여, 명령 페치 사이클이 종료하고, 프로세스는 선택 블록(84)에 진행한다. 선택 블록(84)은 예측된 분기를 결정하거나 분기 명령을 예측하여(예측이 블록(74)에서 수행되지 않으면) 페치된 명령 - 있는 경우 - 중 어느 것을 버릴 것인지를 결정하는 BPU(44)를 도시한다. 중요한 것은, 블록(84)에 도시된 동작은 명령 페치 사이클 내에 있지 않으며, 그러므로 분기가 정확하게 예측된 경우에 명령 페치 대기 시간에 기여하지 않는다. 그런 후, 과정은 블록(62)으로 복귀한다.
기술한 것과 같이, 본 발명은 명령 페치 사이클 시간을 감소시키기 위해 개선된 명령 페치 방법을 이용하는 프로세서를 제공한다. 본 발명에 따르면, 복수 포텐셜 메모리 요구 어드레스가 생성되고, 어드레스의 생성과 병행하여 어드레스 중 적어도 하나가 메모리 요구 어드레스로서 선택된다. 어드레스의 선택과 어드레스의 생성을 중첩함으로써, 전체 명령 페치 사이클이 감소된다. 상기 기술한 것과 같이, 포텐셜 메모리 요구 어드레스는 어드레스 디코딩이 임계 타이밍 경로에서 수행되지 않도록 메모리 요구 어드레스로서 어드레스 중 하나를 선택하기 전에 디코드되는 것이 바람직하다.
본 발명이 양호한 실시예를 참고로 기술되고 도시되었지만, 본 발명의 사상과 범위를 벗어나지 않는 다양한 형태의 변화가 가능하다는 것은 당업자에게는 자명하다.

Claims (20)

  1. 프로세서내에서 메모리로부터 명령을 페치하는 방법에 있어서,
    복수의 사전에 페치된 명령을 이용하여 복수의 타깃 어드레스를 결정하고, 상기 복수의 사전에 페치된 명령 중 최종 명령을 이용하여 순차 어드레스를 결정하는 단계,
    상기 복수의 타깃 어드레스와 상기 순차 어드레스의 상기 결정과 동시에, 상기 복수의 타깃 어드레스 중 하나 또는 상기 순차 어드레스를 지정하는 선택 신호를 생성하는 단계,
    상기 선택 신호를 이용하여 상기 복수의 타깃 어드레스 중 하나 또는 상기 순차 어드레스를 메모리 요구 어드레스로서 선택하는 단계, 및
    상기 메모리가 적어도 하나의 명령을 상기 프로세서에 공급하도록 상기 메모리 요구 어드레스를 상기 프로세서로부터 상기 메모리에 전송하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 복수의 사전에 페치된 명령을 큐내에 - 상기 명령 큐로부터 상기 프로세서에 의해 명령이 디스패치됨 - 기억하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 생성 단계는
    상기 복수의 사전에 페치된 명령이 분기 명령을 포함하는지 여부를 결정하는 단계;
    상기 복수의 사전에 페치된 명령이 분기 명령을 포함한다는 결정에 응답하여, 상기 분기 명령으로부터 결정된 상기 복수의 타깃 어드레스 중 하나의 타깃 어드레스를 지정하는 선택 신호를 생성하는 단계; 및
    상기 복수의 사전에 페치된 명령이 분기 명령을 포함하지 않는다는 결정에 응답하여, 상기 순차 어드레스를 지정하는 선택 신호를 생성하는 단계
    를 포함하는 방법.
  4. 제3항에 있어서,
    상기 방법은 상기 분기 명령에 의해 지정된 타깃 실행 경로가 취해질 지 여부를 결정하는 단계를 더 포함하고,
    상기 분기 명령으로부터 결정된 상기 복수의 타깃 어드레스 중 하나의 타깃 어드레스를 지정하는 선택 신호를 생성하는 상기 단계는 상기 분기 명령에 의해 지정된 상기 타깃 실행 경로가 취해져야 한다는 결정에 대한 응답으로만 수행되는 방법.
  5. 제1항에 있어서, 상기 복수의 사전에 페치된 명령은 제1 분기 명령과 제2 분기 명령을 포함하고, 상기 생성 단계는 상기 제1 분기 명령과 상기 제2 분기 명령 중 프로그램 순서로 가장 선행하는 것을 지정하는 선택 신호를 생성하는 단계를 포함하는 방법.
  6. 제1항에 있어서, 상기 선택 단계는 멀티플렉서를 이용하여 상기 복수의 타깃 어드레스와 상기 순차 어드레스 중 하나를 메모리 요구 어드레스로서 선택하는 단계를 포함하는 방법.
  7. 제1항에 있어서, 상기 선택 사전에에 상기 복수의 타깃 어드레스와 상기 순차 어드레스를 디코딩하는 단계를 더 포함하는 프로세서내에서 메모리로부터 명령을 페치하는 방법.
  8. 프로세서에 있어서,
    복수의 사전에 페치된 명령을 이용하여 복수의 타깃 어드레스를 결정하고, 상기 복수의 사전에 페치된 명령 중 최종 명령을 이용하여 순차 어드레스를 결정하기 위한 수단;
    상기 복수의 타깃 어드레스와 상기 순차 어드레스의 상기 결정과 동시에, 상기 복수의 타깃 어드레스 중 하나 또는 상기 순차 어드레스를 지정하는 선택 신호를 생성하기 위한 수단;
    상기 선택 신호를 이용하여 상기 복수의 타깃 어드레스 중 하나 또는 상기 순차 어드레스를 메모리 요구 어드레스로서 선택하기 위한 수단; 및
    상기 메모리가 적어도 하나의 명령을 상기 프로세서에 공급하도록 상기 메모리 요구 어드레스를 상기 프로세서로부터 메모리에 전송하는 수단
    을 포함하는 프로세서.
  9. 제8항에 있어서, 상기 복수의 사전에 페치된 명령을 기억하기 위한 명령 큐를 더 포함하고, 명령은 상기 프로세서에 의해 상기 명령 큐로부터 디스패치되는 프로세서.
  10. 제8항에 있어서, 상기 생성 수단은.
    상기 복수의 사전에 페치된 명령이 분기 명령을 포함하는지 여부를 결정하기 위한 수단;
    상기 복수의 사전에 페치된 명령이 분기 명령을 포함한다는 결정에 응답하여, 상기 분기 명령으로부터 결정된 상기 복수의 타깃 어드레스 중 하나의 타깃 어드레스를 지정하는 선택 신호를 생성하기 위한 수단; 및
    상기 복수의 사전에 페치된 명령이 분기 명령을 포함하지 않는다는 결정에 응답하여, 상기 순차 어드레스를 지정하는 선택 신호를 생성하기 위한 수단
    을 더 포함하는 프로세서.
  11. 제10항에 있어서,
    상기 프로세서는 상기 분기 명령에 의해 지정된 타깃 실행 경로가 취해질 지 여부를 결정하기 위한 수단을 더 포함하고,
    상기 분기 명령으로부터 결정된 상기 복수의 타깃 어드레스 중 하나의 타깃 어드레스를 지정하는 선택 신호를 생성하기 위한 상기 수단은 상기 분기 명령에 의해 지정된 상기 타깃 실행 경로가 취해져야 한다는 결정에 대한 응답으로만 상기 선택 신호를 생성하는 프로세서.
  12. 제8항에 있어서, 상기 복수의 사전에 페치된 명령은 제1 분기 명령과 제2 분기 명령을 포함하고, 상기 생성 수단은 상기 제1 분기 명령과 상기 제2 분기 명령 중 프로그램 순서로 가장 선행하는 것을 지정하는 선택 신호를 생성하기 위한 수단을 포함하는 프로세서.
  13. 제8항에 있어서, 상기 선택을 위한 수단이 멀티플렉서를 포함하는 프로세서.
  14. 제8항에 있어서, 상기 선택에 앞서 상기 복수의 타깃 어드레스와 상기 순차 어드레스를 디코드하기 위한 수단을 더 포함하는 프로세서.
  15. 관련 메모리를 구비하고 있는 프로세서에 있어서,
    디스패치된 명령을 실행하는 실행 유닛;
    디스패치될 복수의 명령을 저장할 수 있는 명령 큐;
    상기 명령 큐내에 저장된 복수의 사전에 페치된 명령을 이용하여 복수의 타깃 어드레스와 순차 어드레스를 결정하는 어드레스 결정 회로; 및
    상기 어드레스 결정 회로에 의한 상기 복수의 타깃 어드레스와 상기 순차 어드레스의 상기 결정과 동시에, 상기 복수의 타깃 어드레스 중 하나 또는 상기 순차 어드레스를 메모리 요구 어드레스로 선택하는 우선 순위 논리부(priority logic)
    를 포함하는 프로세서.
  16. 제15항에 있어서, 상기 우선 순위 논리부는,
    상기 복수의 사전에 페치된 명령이 분기 명령을 포함하는지 여부를 결정하기 위한 수단;
    상기 복수의 사전에 페치된 명령이 분기 명령을 포함한다는 결정에 응답하여, 상기 분기 명령으로부터 결정된 상기 복수의 타깃 어드레스 중 하나의 타깃 어드레스를 지정하는 선택 신호를 생성하기 위한 수단; 및
    상기 복수의 사전에 페치된 명령이 분기 명령을 포함하지 않는다는 결정에 응답하여, 상기 순차 어드레스를 지정하는 선택 신호를 생성하기 위한 수단
    을 포함하는 프로세서.
  17. 제16항에 있어서,
    상기 우선 순위 논리부에 결합되고, 상기 분기 명령에 의해 지정된 타깃 실행 경로가 취해질 지 여부를 결정하는 분기 처리 유닛을 더 포함하고,
    상기 분기 명령으로부터 결정된 상기 복수의 타깃 어드레스 중 하나의 타깃 어드레스를 지정하는 선택 신호를 생성하기 위한 상기 수단이 상기 분기 명령에 의해 지정된 상기 타깃 실행 경로가 취해져야 한다는 상기 분기 처리 유닛에 의한 결정에 응답하여서만 상기 선택 신호를 생성하는 프로세서.
  18. 제15항에 있어서, 상기 복수의 사전에 페치된 명령이 제1 분기 명령과 제2 분기 명령을 포함하고, 상기 우선 순위 논리부는 상기 제1 분기 명령과 상기 제2 분기 명령 중 프로그램 순서로 가장 선행하는 것을 선택하는 프로세서.
  19. 제15항에 있어서, 입력으로서 상기 복수의 타깃 어드레스와 상기 순차 어드레스를 구비하는 멀티플렉서를 더 포함하고, 상기 멀티플렉서는 상기 우선 순위 논리부에 결합된 선택 입력과 상기 메모리에 결합될 수 있는 출력를 더 포함하는 프로세서.
  20. 제15항에 있어서, 상기 어드레스 결정 회로는 상기 우선 순위 논리부에 의한 상기 메모리 요구 어드레스의 선택 사전에에 상기 명령 큐내의 상기 복수의 명령 중 하나를 각각 디코딩하는 복수의 명령 디코더를 포함하는 프로세서.
KR1019990005174A 1998-03-24 1999-02-12 병행 생성된 복수의 페치 어드레스 중 하나를 선택하여 메모리요구를 형성하는 명령 페치 방법 및 프로세서 KR100331199B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/046,872 1998-03-24
US09/046,872 US6334184B1 (en) 1998-03-24 1998-03-24 Processor and method of fetching an instruction that select one of a plurality of decoded fetch addresses generated in parallel to form a memory request
US9/046,872 1998-03-24

Publications (2)

Publication Number Publication Date
KR19990077433A true KR19990077433A (ko) 1999-10-25
KR100331199B1 KR100331199B1 (ko) 2002-04-06

Family

ID=21945849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990005174A KR100331199B1 (ko) 1998-03-24 1999-02-12 병행 생성된 복수의 페치 어드레스 중 하나를 선택하여 메모리요구를 형성하는 명령 페치 방법 및 프로세서

Country Status (6)

Country Link
US (1) US6334184B1 (ko)
EP (1) EP0945785B1 (ko)
JP (1) JP3721002B2 (ko)
KR (1) KR100331199B1 (ko)
DE (1) DE69938911D1 (ko)
TW (1) TW409224B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6604191B1 (en) * 2000-02-04 2003-08-05 International Business Machines Corporation Method and apparatus for accelerating instruction fetching for a processor
US6823473B2 (en) * 2000-04-19 2004-11-23 Hewlett-Packard Development Company, L.P. Simultaneous and redundantly threaded processor uncached load address comparator and data value replication circuit
US7210025B1 (en) * 2000-04-19 2007-04-24 Uht Augustus K Automatic and transparent hardware conversion of traditional control flow to predicates
US6854075B2 (en) * 2000-04-19 2005-02-08 Hewlett-Packard Development Company, L.P. Simultaneous and redundantly threaded processor store instruction comparator
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0774992B2 (ja) 1988-08-09 1995-08-09 松下電器産業株式会社 データ処理装置
JPH0375932A (ja) 1989-08-18 1991-03-29 Nec Corp 数値演算処理装置
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
JPH04125733A (ja) 1990-09-18 1992-04-27 Nec Corp パイプライン情報処理方式
JP2591325B2 (ja) 1990-10-30 1997-03-19 松下電器産業株式会社 分岐制御装置
JPH05108345A (ja) 1991-10-16 1993-04-30 Nec Corp 分岐命令処理装置
JP2761688B2 (ja) 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
US5495598A (en) * 1993-12-23 1996-02-27 Unisys Corporation Stuck fault detection for branch instruction condition signals
US5535346A (en) * 1994-07-05 1996-07-09 Motorola, Inc. Data processor with future file with parallel update and method of operation
TW360852B (en) 1995-04-12 1999-06-11 Matsushita Electric Ind Co Ltd Pipeline processor
JPH08314720A (ja) 1995-05-12 1996-11-29 Hitachi Ltd 分岐制御システム
US5911153A (en) 1996-10-03 1999-06-08 International Business Machines Corporation Memory design which facilitates incremental fetch and store requests off applied base address requests
US5796998A (en) * 1996-11-21 1998-08-18 International Business Machines Corporation Apparatus and method for performing branch target address calculation and branch prediciton in parallel in an information handling system
US5964869A (en) * 1997-06-19 1999-10-12 Sun Microsystems, Inc. Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US5926628A (en) * 1997-07-15 1999-07-20 International Business Machines Corporation Selectable priority bus arbitration scheme
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
US5974543A (en) * 1998-01-23 1999-10-26 International Business Machines Corporation Apparatus and method for performing subroutine call and return operations

Also Published As

Publication number Publication date
TW409224B (en) 2000-10-21
KR100331199B1 (ko) 2002-04-06
DE69938911D1 (de) 2008-07-31
JP2000029694A (ja) 2000-01-28
EP0945785A2 (en) 1999-09-29
EP0945785A3 (en) 2000-09-27
JP3721002B2 (ja) 2005-11-30
EP0945785B1 (en) 2008-06-18
US6334184B1 (en) 2001-12-25

Similar Documents

Publication Publication Date Title
US6553488B2 (en) Method and apparatus for branch prediction using first and second level branch prediction tables
US7836287B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US5864697A (en) Microprocessor using combined actual and speculative branch history prediction
US7237098B2 (en) Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US6598154B1 (en) Precoding branch instructions to reduce branch-penalty in pipelined processors
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US7117347B2 (en) Processor including fallback branch prediction mechanism for far jump and far call instructions
US7711930B2 (en) Apparatus and method for decreasing the latency between instruction cache and a pipeline processor
US20050278505A1 (en) Microprocessor architecture including zero impact predictive data pre-fetch mechanism for pipeline data memory
JPH10133873A (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法
US7143269B2 (en) Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7159097B2 (en) Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US20060224871A1 (en) Wide branch target buffer
US5875325A (en) Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
US9710269B2 (en) Early conditional selection of an operand
US6918033B1 (en) Multi-level pattern history branch predictor using branch prediction accuracy history to mediate the predicted outcome
KR100523706B1 (ko) 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법
US20040225866A1 (en) Branch prediction in a data processing system
KR100331199B1 (ko) 병행 생성된 복수의 페치 어드레스 중 하나를 선택하여 메모리요구를 형성하는 명령 페치 방법 및 프로세서
US5987599A (en) Target instructions prefetch cache
US6170053B1 (en) Microprocessor with circuits, systems and methods for responding to branch instructions based on history of prediction accuracy
EP0889394B1 (en) Program control method
US5895497A (en) Microprocessor with pipelining, memory size evaluation, micro-op code and tags
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions

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

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20130304

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee