KR20070086589A - 브랜치 보정을 통한 전치-디코드 에러 조절 - Google Patents

브랜치 보정을 통한 전치-디코드 에러 조절 Download PDF

Info

Publication number
KR20070086589A
KR20070086589A KR1020077014317A KR20077014317A KR20070086589A KR 20070086589 A KR20070086589 A KR 20070086589A KR 1020077014317 A KR1020077014317 A KR 1020077014317A KR 20077014317 A KR20077014317 A KR 20077014317A KR 20070086589 A KR20070086589 A KR 20070086589A
Authority
KR
South Korea
Prior art keywords
branch
instruction
command
decoded
address
Prior art date
Application number
KR1020077014317A
Other languages
English (en)
Other versions
KR100909163B1 (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 KR20070086589A publication Critical patent/KR20070086589A/ko
Application granted granted Critical
Publication of KR100909163B1 publication Critical patent/KR100909163B1/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
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Error Detection And Correction (AREA)

Abstract

명령들이 캐시에 저장되기전에 전치-디코딩되는 파이프라인 방식 프로세서에서, 부정확하게 전치-디코딩된 명령은 파이프라인에서의 실행동안 검출된다. 대응하는 명령은 캐시에서 무효화되며, 명령은 브랜치 명령으로서 평가되도록 강제된다. 특히, 브랜치 명령은 부정확하게 전치-디코딩된 명령들의 어드레스의 브랜치 목표 어드레스에 대하여 "잘못 예측된 비테이컨"으로서 평가된다. 이는 무효화된 캐시 라인과 관련하여 부정확하게 전치-디코딩된 명령이 정밀한 어드레스를 가진 메모리로부터 다시 페치되도록 한다. 다시 페치된 명령은 정확하게 전치-디코딩되고 캐시에 저장되며 실행된다.

Description

브랜치 보정을 통한 전치-디코드 에러 조절{PRE-DECODE ERROR HANDLING VIA BRANCH CORRECTION}
본 발명은 일반적으로 프로세서 분야, 특히 명령의 목표 어드레스에 대하여 브랜치 보정 절차를 강제로 수행함으로서 명령과 연관된 에러로 전치-디코딩된 데이터를 보정하는 방법에 관한 것이다.
마이크로프로세서들은 다양한 응용에서 계산 작업들을 수행한다. 프로세서 성능의 향상은 고속 연산을 가능하게 하고 및/또는 소프트웨어 변경을 통해 기능을 증가시킬 수 있도록 하였다. 휴대용 전자장치들과 같은 많은 구현된 응용들에서, 소비전력은 프로세서 설계 및 구현에 있어서 중요한 목표이다.
대부분의 현재 프로세서들은 전체 프로세서 스루풋을 증가시키기 위하여 실행시 순차 명령들이 중복해서 수행되는 파이프라인 구조를 사용할 수 있다. 파이프라인을 통한 실행을 원할하게 유지하는 것은 고성능을 달성하는데 있어서 중요하다. 대부분의 현재 프로세서들은 또한 최근에 액세스된 데이터 및 명령들의 국부 복사들을 저장하는 고속 온-칩 캐시 메모리들을 포함하는 계층적 메모리를 이용한다. 공지된 하나의 파이프라인 최적화 기술은 전치-디코딩 명령들이다. 즉, 명령들은 그들이 메모리로부터 판독되고 부분적으로 디코딩되며 이 명령들에 대한 일부 정보들(전치-디코드 정보로서 공지됨)이 연관된 명령들과 함께 캐시 메모리에 저장될때 검사된다. 명령들이 캐시로부터 나중에 페치될때, 전치-디코드 정보 또한 페치되며, 명령들을 완전하게 디코딩하기 위하여 사용된다.
때때로, 전치-디코드 정보는 에러들을 포함한다. 이들 에러들은 파이프라인의 디코드 스테이지들동안 검출될 수 있다. 에러가 발견될때, 예외가 발생하며 파이프라인은 플러시(flush)되어야 하며 에러로 전치-디코딩된 명령을 포함하는 모든 명령들은 다시 페치되어야 한다. 이러한 프로세스는 중요한 성능 및 전력 관리 저하를 초래한다.
일 실시예에 있어서, 본 발명은 부정확하게 전치-디코딩된 명령을 보정하기 위한 방법에 관한 것이다. 전치-디코드 에러가 검출된다. 에러 검출에 응답하여, 부정확하게 전치-디코딩된 명령의 목표 어드레스에 대하여 브랜치 보정 절차가 강제된다.
다른 실시예에 있어서, 본 발명은 프로세서에 관한 것이다. 프로세서는 명령 페치 경로에 삽입된 전치-디코더를 포함하며, 전치-디코더는 특정 명령과 연관된 전치-디코드 정보를 생성한다. 프로세서는 명령과 연관된 부정확하게 전치-디코드 정보를 검출하며 명령이 명령의 어드레스의 브랜치 목표 어드레스에 대하여 잘못 예측된 브랜치로서 실행하도록 하는 전치-디코드 에러 검출기 및 보정기를 포함한다.
도 1은 프로세서의 기능 블록도.
도 2는 메모리, 전치-디코더, 명령 캐시 및 프로세서 파이프라인의 부분을 도시한 기능 블록도.
도 3은 브랜치 보정 로직의 기능 블록도.
파이프라이닝된 프로세서 구조들은 다수의 순차 명령들의 실행을 중복해서 수행함으로서 병렬계산을 수행하며, 각각의 시퀀스 명령은 다중 실행 단계들을 가진다. 전형적인 실행 단계들은 명령 페치, 디코드, 실행 및 라이트 백(write back)을 포함한다. 각각의 단계는 래치 또는 레지스터와 같은 메모리 엘리먼트 및 로직을 포함하는 하나 이상의 파이프 스테이지들에 의하여 파이프라인 방식으로 수행된다. 파이프 스테이지들은 파이프라인을 형성하기 위하여 함께 접속된다. 명령들은 파이프라인에 입력되며 스테이지들을 통해 연속적으로 처리된다. 부가 정보들은 이전 명령이 실행을 완료하기 전에 입력되며, 따라서 다중 명령들이 임의의 주어진 시간에 파이프라인내에서 처리될 수 있다. 순차 명령 스트림의 명령들을 병렬 계산하는 이러한 능력은 프로세서의 성능을 현저하게 향상시키는데 기여한다. 한 사이클에서 각각의 파이프 스테이지를 완료하는 프로세서에서 그리고 이상적인 조건들하에서, 파이프라인을 필링(filling)하는 짧은 초기 프로세스후에, 명령들은 매 사이클마다 실행을 완료할 수 있다. 다수의 실세계 제약들은 이러한 이상적인 조건들이 유지되는 것을 방해하나, 완전하고 원활하게 파이프라인의 흐름을 유지하는 것은 프로세서 설계의 공통적인 목표이다.
현재의 프로세서들은 또한 프로세서와 유사하게 고속인 고가의 소용량 메모리와 백업용의 저속 저가 대용량 메모리가 제공된 메모리 계층을 사용한다. 전형적인 프로세서 메모리 계층은 상위 레벨에서 프로세서의 레지스터들; 하나 이상의 온-칩 캐시 메모리들(예컨대, DRAM); 레벨 2 또는 L2 캐시(예컨대, SRAM)로서 언급된 오프-칩 캐시 메모리; 주메모리(보통 DRMA); 디스크 저장장치(자기 매체); 및 하위레벨에서 테이프 또는 CD(자기 또는 광학 매체)를 포함한다. 휴대용 전자장치들과 같은 구현된 응용들에 있어서, 존재하는 경우에 디스크 저장장치는 제한될 수 있으며 이에 따라 주메모리(보통 크기가 제한됨)는 메모리 계층에서 하위 레벨에 있을 수 있다.
도 1은 파이프라이닝된 구조 및 계층 메모리 구조를 사용하는 대표적인 프로세서(10)의 기능 블록도를 도시한다. 프로세서(10)는 제어 로직(14)에 따라 명령 실행 파이프라인(12)에서 명령들을 실행한다. 파이프라인은 파이프 스테이지들로 구성된 다양한 레지스터들 또는 래치들(16) 및 하나 이상의 산술논리장치(ALU)(18)를 포함한다. 범용 레지스터(GPR) 파일(20)은 메모리 계층의 상부를 포함하는 레지스터들을 제공한다. 파이프라인은 명령 캐시(22)로부터 명령들을 페치(fetch)하며, 메모리 어드레싱 및 승인들은 명령측 번역 룩어사이드 버퍼(Instruction-side Translation Lookaside Buffer)(ITLB)(24)에 의하여 관리되며 명령들의 일부 초기 디코딩은 전치-디코더(21)에 의하여 수행된다. 데이터는 데이터 캐시(26)로부터 액세스되며, 메모리 어드레싱 및 승인들은 주 번역 룩어사이드 버퍼(TLB)(28)에 의하여 관리된다. 다양한 실시예들에 있어서, ITLB는 TLB의 부분의 복제본을 포함한 다. 선택적으로, ITLB 및 TLB는 집적될 수 있다. 유사하게, 프로세서(10)의 다양한 실시예들에 있어서, I-캐시(22) 및 D-캐시(26)는 집적되거나 또는 통합될 수 있다. I-캐시(22) 및 D-캐시(26)(미스(miss))에 존재하지 않는 액세스들은 메모리 인터페이스(30)의 제어하에서 주(오프-칩) 메모리(32)에 대한 액세스를 야기한다. 프로세서(10)는 다양한 주변장치들(36)에 대한 액세스를 제어하는 입력/출력(I/O) 인터페이스(34)를 포함할 수 있다. 당업자는 프로세서(10)의 다수의 변형들이 가능하다는 것을 인식할 것이다. 예컨대, 프로세서(10)는 I 및 D 캐시들중 어느 하나 또는 둘다에 대한 제 2-레벨(L2) 캐시를 포함할 수 있다. 더욱이, 프로세서(10)내에 도시된 기능 블록들중 하나 이상은 특정 실시예로부터 생략될 수 있다.
프로세서 성능을 개선하고 전력 소비를 감소시키기 위한 하나의 공지된 기술은 전치-디코딩으로서 공지되어 있다. 전치-디코더(21)는 주메모리(32) 및 명령 캐시(22)사이의 경로에 삽입된 로직을 포함한다. 메모리로부터 페치된 명령들중 일부는 전치-디코딩될 수 있으며, 전치 디코딩된 정보는 생성되어 명령과 함께 I-캐시(22)에 기록된다. 전치-디코드 정보는 그것이 실행을 위하여 캐시로부터 페치될때 명령을 디코딩하는데 있어서 하나 이상의 디코드 파이프를 지원할 수 있다. 예컨대, 전치-디코더는 가변-길이 명령들의 길이를 결정할 수 있으며, 가변 길이 명령에 대한 정확한 비트수를 검색하기 위하여 디코드 파이프 스테이지를 지원하는 캐시로 전치-디코드 정보를 기록한다. 다양한 정보가 전치-디코딩될 수 있으며, I-캐시(22)에 저장될 수 있다.
전치-디코더(21)는 하나 이상의 디코드 파이프 스테이지들로부터 로직을 제 거하여 로직의 초기 사용을 가능하게 하고 짧은 머신 사이클 시간을 가능하게 함으로서 성능을 개선한다. 전치-디코더(21)는 또한 전치-디코드 동작을 한번 수행함으로서 전력 소비를 감소시킨다. I-캐시(22) 히트율(hit rate)이 보통 90%이기 때문에, 명령이 I-캐시(22)로부터 실행될때마다 로직 동작들을 수행할 필요성을 제거함으로서 전력을 현저하게 절약할 수 있다.
때때로, 전치-디코더(21)는 에러를 만든다. 예컨대, 만일 파라미터들 또는 즉시값들과 같은 데이터가 명령들과 함께 메모리에 저장되면, 캐시 라인의 시작부분으로부터 바이트를 단순히 계수함으로서 명령 길이를 결정하는 전치-디코드 연산은 라인 아래의 명령으로서 하나 이상의 파라미터들 또는 즉시 값들의 바이트들을 에러로 식별할 수 있다. 전치-디코더(21) 또는 I-캐시(22)에서 랜덤 비트 에러들을 포함하는 다른 타입의 에러들이 가능하다. 이들 에러들은 하나 이상의 디코드 파이프 스테이지들에서 발견되어야 하며 보통 예외(exception)를 야기하여 파이프라인이 플러시되고 재시작될 것으로 요구하며 따라서 성능 및 전력 소비에 있어서의 문제점을 초래한다.
파이프라인(12)의 예외 및 연관된 플러시(flush)를 유발하지 않도록 하는 전치-디코드 에러 보정 방법들이 존재한다. 도 2는 프로세서(10) 및 파이프라인(12)의 부분들을 도시한 기능 블록도이다. 도 2는 I-캐시(22)를 인덱싱하는 명령 캐시 어드레스 레지스터(ICAR)(48)를 도시한다. ICAR(48)에 로드된 어드레스는 다음 페치 어드레스 계산회로(46)에 의하여 생성 및/또는 선택된다. 명령들이 메모리(32)(또는 L2 캐시)로부터 페치될때, 명령들은 전치-디코더(21)에 의하여 전치-디 코딩되며, 전치-디코드 정보(23)는 대응 명령들과 함께 명령 캐시(22)에 저장된다.
파이프라인(12)에서, 명령들 및 연관된 전치-디코딩된 정보(23)는 I-캐시(22)로부터 페치되어 디코드 로직(40)에 의하여 적어도 부분적으로 디코딩되며, 결과들은 DCD1 파이프 스테이지 래치(42)에 저장된다. 많은 프로세서들(10)에서, DCD1 파이프 스테이지는 브랜치 예측기를 포함한다. 브랜치 예측기가 브랜치가 테이컨(taken)일 것을 예측하는 경우에, 파이프 스테이지는 브랜치 목표 어드레스를 계산하여 이를 브랜치 예측 어드레스 경로(44)를 따라 다음 페치 어드레스 계산 로직(46)에 제공한다. 이는 파이프 스테이지로부터 다음 페치 어드레스 계산 로직(46)으로의 어드레스 경로의 일례이다(브랜치 예측된 비테이컨(branch predicted not-taken)은 단순히 순차 명령 페칭이 계속되도록 한다).
그 다음에, 전형적인 실시예에 있어서, 페치되어 부분적으로 디코딩된 명령은 부정확한 전치-디코드 검출 및 보정 로직(50)을 포함하는 파이프 스테이지 DCD2로 흐른다. 만일 전치-디코드 정보의 에러가 검출되면, DCD2 파이프 스테이지는 앞서 기술된 바와같이 예외 및 플러시 파이프라인(12)에 시그널링할 수 있다.
선택적으로, 전치-디코드 에러는 메모리(32)로부터의 명령을 재페치함으로서 보정될 수 있다. 이를 달성하기 위한 한 방법은 캐시(22)의 명령을 무효화하고 명령 어드레스를 경로(54)를 따라 다음 페치 어드레스 회로(46)에 제공하는 것이다. 그 다음에, 이러한 어드레스는 ICAR(48)로 로드된다. 명령이 캐시(22)에서 무효화되기 때문에, 캐시 액세스는 미스(miss)되고 주메모리(32)가 액세스될 것이다. 주메모리(32)로부터 페치된 명령은 전치-디코더(21)에 의하여 정확하게 전치-디코딩 될 것이며 명령 캐시(22)로 되돌아 갈 것이다. 그 다음에, 명령은 정확한 전치-디코드 정보(23)와 함께 캐시(22)로부터 재페치될 수 있다.
다음 페치 어드레스 계산 로직(46)은 보통 대부분의 프로세서 데이터 흐름들의 중요한 경로에 있으며 따라서 머신 사이클 시간을 제한한다. 부정확한 전치-디코드와 연관된 명령 어드레스에 대한 경로(54)를 추가하면, 다음 페치 어드레스 계산(46)에 로직이 추가되어 머신 사이클 시간이 증가되고 결과적으로 성능이 저하된다. 이러한 성능 히트(hit)는 전치-디코딩된 정보(23)가 전치-디코딩된 정보(23)가 거의 부정확하지 않는다는 것을 고려할때 특히 심각하다. 보통 경우의 비용으로 드문 경우의 성능을 최적화하는 것은 보통 전체 프로세서 성능을 저하시킨다.
본 발명의 일 실시예에 따르면, 다음 페치 어드레스 계산기(46)로의 부정확한 전치-디코드 경로(54)는 제거된다(도 2의 대시선으로 표시됨). 다음 페치 어드레스 계산기(46)에 전용 경로를 제공하는 것보다 오히려, 부정확한 전치-디코드 검출 및 보정 로직(50)은 파이프라인(12)이 부정확하게 전치-디코드된 명령을 브랜치 명령으로서 평가하도록 한다. 전치-디코드 검출 로직(50)은 부정확하게 전치-디코딩된 명령의 시맨틱스(semantics)를 브랜치 명령의 시맨틱스로 변경할 수 있거나, 또는 파이프라인을 통해 이동되는 플래그를 세팅할 수 있으며, 플래그는 명령이 브랜치로서 처리되는 실행 파이프 스테이지들을 지시한다.
특히, 부정확하게 전치-디코딩된 명령은 비테이컨(not taken)인 것으로 예측된 브랜치로서 평가되고 테이컨으로서 평가되며, 브랜치 목표 어드레스는 부정확하게 전치-디코딩된 명령의 어드레스이다. 파이프라인(12) 아래의 임의의 지점에서( 상세한 구현에 따라), 명령은 "브랜치 테이컨nch taken)" 조건을 평가하여 브랜치 목표 어드레스를 생성하는 실행 파이프 스테이즈(56)에 의하여 평가된다. 브랜치 목표 어드레스는 브랜치 보정 경로(58)를 따라 다음 페치 어드레스 계산기(46)에 제공된다. 브랜치 조건 평가 로직, 브랜치 목표 어드레스 생성 로직, 및 브랜치 보정 경로(58) 및 다음 페치 어드레스 계산기(46)의 연관된 제어 로직은 브랜치 동작을 예측하는 모든 파이프라인 프로세서(10)에 이미 존재한다.
도 3은 브랜치 보정 로직의 하나의 가능한 구현을 기술한 기능도이다. EXE 파이프 스테이지 래치(56)내에는 브랜치 예측 테이컨(BPT: Branch Predicted Taken) 비트(60) 및 브랜치 조건 평가(COND) 비트(62)가 존재한다. BPT 비트(60)는 브랜치가 파이프라인(12)에서 브랜치 예측기에 의하여 초기에 테이컨인 것으로 예측되는 경우에 1이며, 브랜치가 비테이컨(not taken)인 것으로 평가하는 경우에 0이다. COND 비트(62)는 브랜치가 테이컨으로서 평가하는 경우에 1이며 브랜치가 비테이컨으로서 평가하는 경우에 0이다. 이들 두개의 비트는 다음 페치 어드레스 계산기(46)에 제공된 멀티플렉서 선택 또는 유사한 제어 신호를 생성하기 위하여 게이트(66)에 의하여 지시된 바와같이 XOR 연산될 수 있으며, 이는 브랜치 접속 경로(58)가 다음 페치 어드레스로서 선택되어야 한다는 것을 지시한다. 이하의 표 1은 XOR(66)에 대한 진리표를 기술한다.
BPT COND 출력 코멘트
0 0 0 정확하게 예측된 비테이컨; 보정안함
0 1 1 잘못 예측된 비테이컨; 브랜치 보정 경로상의 다음 페치 어드레스 회로에 브랜치 목표 어드레스를 적용해야 한다.
1 0 1 잘못 예측된 테이컨; 브랜치 보정 경로상의 다음 페치 어드레스 회로에 순차 어드레스를 적용해야 한다.
1 1 0 정확하게 예측된 테이컨; 보정안함
표 1: 브랜치 예측 분석 진리표
조건 평가 비트(62)는 브랜치 보정 경로(58)상에 있는 어드레스를 생성하기 위하여 순차 어드레스 및 계산된 브랜치 목표 어드레스(64)간을 선택하는 멀티플렉서(68)에 대한 선택 입력으로서 부가적으로 사용될 수 있다.
본 발명의 일 실시예에 따르면, 부정확하게 전치-디코딩된 명령을 조절하기 위하여, BPT 비트(60)는 제로로 세팅 또는 강제(force)될 수 있으며, COND 비트(62)는 "브랜치 오류 예측 비테이컨" 상황을 강제하기 위하여 1로 세팅되거나 또는 강제될 수 있다. 이러한 경우에, 계산된 브랜치 목표 어드레스(64)는 브랜치 보정 경로(58)를 통해 다음 어드레스 페치 회로(46)에 직접 전송될 것이다.
본 발명의 일 실시예에 따르면, 잘못 전치-디코딩된 명령은 0의 브랜치 변위 필드(branch displacement field)와 함께 PC-상대 브랜치 명령으로서 평가된다. 이러한 명령이 EXE 파이프 스테이지(56)에서 평가될때, 계산된 브랜치 목표 어드레스는 에러로 전치-디코딩된 명령이 어드레스(0 오프셋을 가진)를 포함할 것이다. 본 발명의 다른 실시예에 있어서, 부정확하게 전치-디코딩된 명령은 레지스터 브랜치 명령으로서 평가되며, 부가적으로 브랜치 목표 어드레스 레지스터는 부정확하게 전치-디코딩된 명령의 어드레스로 로딩된다. 브랜치 목표 어드레스 레지스터가 산술연산에 의하여 로드되는 경우에, 오퍼랜드 레지스터들(operand register)은 부정확하게 전치-디코딩된 명령 어드레스를 생성하기 위하여 로드될 수 있다. 명령 그 자체의 목표 어드레스를 가진 잘못 예측된 비테이컨(not taken) 브랜치 명령으로서 부정확하게 전치-디코딩된 명령을 평가하기 위한 다수의 다른 방법들은 당업자에게 명백할 것이며 본 발명의 범위내에 포함된다.
도 2를 다시 참조하면, 강제된 잘못 예측된 비테이컨 브랜치 명령은 EXE 스테이지(56)에서 실행되며, 부정확하게 전치-디코딩된 명령의 어드레스를 포함하는 브랜치 목표 어드레스는 브랜치 보정 경로(58)에 있다. 이러한 어드레스는 다음 페치 어드레스 계산기(46)에 의하여 선택되어 ICAR(48)에 로드되며, 명령 페치는 I-캐시(22)에서 수행된다.
부정확한 전치-디코드 검출 및 보정 로직(50)이 부정확하게 전치-디코딩된 명령을 포함하는 캐시 라인을 무효화하기 때문에, I-캐시(22) 액세스는 미스(miss)되어 명령이 메모리(32)(또는 L2 캐시)로부터 페치되도록 한다. 명령은 전치-디코더(21)에 의하여 정확하게 전치-디코딩될 것이며 정확한 전치-디코드 정보(23)와 함께 I-캐시(22)에 위치할 것이다. 그 다음에, 명령 및 전치-디코드 정보(23)는 I-캐시(22)로부터 다시 페치되고 정확하게 디코딩되며 파이프라인(12)에서 정확하게 실행될 수 있다. 예컨대 명령들에 변화를 주는 데이터로 인한 오프셋 에러는 캐시 라인의 시작부분보다 오히려 메모리 액세스가 명령의 정밀한 어드레스에 대한 것이기 때문에 전치-디코더(21)에서 재발생되지 않을 것이다.
메모리 액세스들에 대한 앞의 설명은 개념적인 것이라는 것에 유의해야 한다. 임의의 주어진 구현에 있어서, 메모리(32)에 대한 액세스는 I-캐시(22) 액세스와 병렬로 진행할 수 있으며, I-캐시(22) 미스(miss)는 예측될 수 있으며, I-캐시(22) 액세스는 방지될 수 있으며, 메모리(32) 액세스 결과들은 I-캐시(22)에 기록되는 것과 병렬로 파이프라인(12)으로 직접 진행할 수 있다. 일반적으로, 본 발 명은 동작시에 앞의 설명으로부터 벗어나는 모든 메모리 및/또는 캐시 성능 최적화들을 포함한다.
비록 본 발명이 본 발명의 특정 특징들, 양상들 및 실시예들과 관련하여 기술되었을지라도, 본 발명의 범위내에서 다수의 변형들, 수정들 및 다른 실시예들이 가능하며, 따라서 모든 변형들, 수정들 및 실시예들은 본 발명의 범위내에 있는 것으로 간주된다. 따라서, 본 발명의 실시예들은 모든 양상들에서 예시적인 것으로 해석되어야 하며, 첨부된 청구항들의 의미 및 균등 범위내의 모든 변형들이 여기에 포함되는 것으로 의도된다.

Claims (16)

  1. 부정확하게 전치-디코딩된 명령을 보정하기 위한 방법으로서,
    전치-디코드 에러를 검출하는 단계; 및
    상기 에러의 검출에 응답하여, 상기 부정확하게 전치-디코딩된 명령의 목표 어드레스에 대하여 브랜치 보정 절차를 강제로 수행하는 단계를 포함하는, 보정방법.
  2. 제 1항에 있어서, 상기 브랜치 보정 절차를 강제로 수행하기 전에 캐시에서 상기 부정확하게 전치-디코딩된 명령을 무효화하는 단계를 더 포함하는, 보정방법.
  3. 제 2항에 있어서, 상기 브랜치 보정 절차에 응답하여 메모리로부터 상기 명령을 페치(fetch)하는 단계를 더 포함하는, 보정방법.
  4. 제 3항에 있어서, 상기 명령을 전치-디코딩하는 단계; 및
    상기 명령 및 상기 명령과 연관된 전치-디코드 정보를 상기 캐시에 저장하는 단계를 더 포함하는, 보정방법.
  5. 제 1항에 있어서, 상기 브랜치 보정 절차를 강제로 수행하는 상기 단계는 브랜치 조건 참(TRUE)을 강제로 수행하는 단계 및 브랜치 예측 거짓(FALSE)을 강제로 수행하는 단계를 포함하는, 보정방법.
  6. 제 1항에 있어서, 상기 부정확하게 전치-디코딩된 명령의 목표 어드레스에 대하여 브랜치 보정 절차를 강제로 수행하는 상기 단계는,
    목표 어드레스 레지스터에 상기 어드레스를 저장하는 단계; 및
    레지스터 브랜치 명령 보정을 강제로 수행하는 단계를 포함하는, 보정방법.
  7. 제 6항에 있어서, 목표 어드레스 레지스터에 상기 어드레스를 저장하는 상기 단계는 상기 목표 어드레스 레지스터에 두개의 오퍼랜드(operand) 레지스터들의 내용들에 대한 산술연산의 결과들이 로드되는 경우에 상기 오퍼랜드 레지스터들에 계산된 값들을 저장하는 단계를 포함하며, 상기 계산된 값은 상기 산술연산으로부터 상기 어드레스를 산출하기 위하여 사용되는, 보정방법.
  8. 제 1항에 있어서, 부정확하게 전치-디코딩된 명령의 목표 어드레스에 대하여 브랜치 보정 절차를 강제로 수행하는 상기 단계는 0 브랜치 변위를 사용하는 PC-상대 브랜치 명령 보정을 강제로 수행하는 단계를 포함하는, 보정방법.
  9. 명령 페치 경로에 삽입되고, 명령과 연관된 전치-디코드 정보를 생성하는 전치-디코더; 및
    상기 명령과 연관된 부정확한 전치-디코드 정보를 검출하고, 상기 명령이 상 기 명령의 어드레스의 브랜치 목표 어드레스에 대하여 잘못 예측된 브랜치로서 실행하도록 하는 전치-디코드 에러 검출기 및 보정기를 포함하는, 프로세서.
  10. 제 9항에 있어서, 상기 명령 및 상기 전치-디코드 정보를 저장하는 캐시 메모리를 더 포함하며,
    상기 전치-디코드 에러 검출기 및 보정기는 상기 전치-디코드 에러를 검출할때 상기 캐시 메모리에서 상기 명령을 무효화하는, 프로세서.
  11. 제 9항에 있어서, 비테이컨(not taken)인 것으로 예측된 조건부 브랜치 평가된 테이컨(taken)에 응답하여 명령 페치를 위한 보정된 브랜치 목표 어드레스를 적용하는 브랜치 보정 경로 및 브랜치 예측기를 더 포함하는, 프로세서.
  12. 제 11항에 있어서, 상기 전치-디코드 에러 검출기 및 보정기는 상기 부정확하게 전치-디코딩된 명령이 잘못 예측된 비테이컨 브랜치 명령으로서 실행하도록 상기 브랜치 보정 경로를 이용하는, 프로세서.
  13. 부정확하게 전치-디코딩된 명령을 보정하는 방법으로서,
    전치-디코드 에러를 검출하는 단계; 및
    메모리로부터 상기 명령을 페치하고 상기 에러의 검출에 응답하여 상기 명령을 전치-디코딩함으로서 상기 전치-디코드 에러를 보정하는 단계를 포함하는, 보정 방법.
  14. 제 13항에 있어서, 상기 메모리로부터 상기 명령을 페치하는 상기 단계는,
    캐시 메모리에서 상기 명령을 무효화하는 단계; 및
    상기 명령을 무효화한후에 상기 캐시 메모리로부터 상기 명령을 페치하는 단계를 포함하는, 보정방법.
  15. 제 13항에 있어서, 상기 메모리로부터 상기 명령을 페치하는 상기 단계는 브랜치 목표 어드레스로서의 상기 명령 어드레스에 대하여 브랜치로서 상기 명령을 평가하는 단계를 포함하는, 보정방법.
  16. 제 15항에 있어서, 브랜치로서의 상기 명령을 평가하는 상기 평가 단계는 잘못 예측된 브랜치 비테이컨으로서 상기 명령을 평가하는 단계를 포함하는, 보정방법.
KR1020077014317A 2004-11-22 2005-11-18 브랜치 보정을 통한 전치-디코드 에러 조절 KR100909163B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/995,858 2004-11-22
US10/995,858 US7415638B2 (en) 2004-11-22 2004-11-22 Pre-decode error handling via branch correction
PCT/US2005/041850 WO2006057907A2 (en) 2004-11-22 2005-11-18 Pre-decode error handling via branch correction

Publications (2)

Publication Number Publication Date
KR20070086589A true KR20070086589A (ko) 2007-08-27
KR100909163B1 KR100909163B1 (ko) 2009-07-23

Family

ID=35976475

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077014317A KR100909163B1 (ko) 2004-11-22 2005-11-18 브랜치 보정을 통한 전치-디코드 에러 조절

Country Status (11)

Country Link
US (1) US7415638B2 (ko)
EP (1) EP1836560B1 (ko)
JP (1) JP4585005B2 (ko)
KR (1) KR100909163B1 (ko)
CN (1) CN100495321C (ko)
AT (1) ATE484792T1 (ko)
CA (1) CA2587915C (ko)
DE (1) DE602005024178D1 (ko)
IL (1) IL183283A0 (ko)
RU (1) RU2367004C2 (ko)
WO (1) WO2006057907A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7302619B1 (en) * 2004-07-06 2007-11-27 Mindspeed Technologies, Inc. Error correction in a cache memory
FR2910144A1 (fr) * 2006-12-18 2008-06-20 St Microelectronics Sa Procede et dispositif de detection errones au cours de l'execution d'un programme.
US8037286B2 (en) * 2008-01-23 2011-10-11 Arm Limited Data processing apparatus and method for instruction pre-decoding
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US7925867B2 (en) * 2008-01-23 2011-04-12 Arm Limited Pre-decode checking for pre-decoded instructions that cross cache line boundaries
US7917735B2 (en) * 2008-01-23 2011-03-29 Arm Limited Data processing apparatus and method for pre-decoding instructions
US7925866B2 (en) * 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US9075622B2 (en) * 2008-01-23 2015-07-07 Arm Limited Reducing errors in pre-decode caches
US7747839B2 (en) 2008-01-23 2010-06-29 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
EP2549376B1 (en) * 2011-07-22 2019-03-13 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus for branch prediction.
JP5843804B2 (ja) 2013-03-25 2016-01-13 株式会社東芝 演算装置およびエラー処理方法
US9940262B2 (en) 2014-09-19 2018-04-10 Apple Inc. Immediate branch recode that handles aliasing
CN110059391B (zh) * 2019-04-10 2022-12-09 中科寒武纪科技股份有限公司 待测器件验证装置及相关产品
CN110059390B (zh) * 2019-04-10 2022-12-09 中科寒武纪科技股份有限公司 待测器件验证装置及相关产品
CN110261758B (zh) * 2019-06-10 2021-09-21 中科寒武纪科技股份有限公司 待测器件验证装置及相关产品
CN117891513A (zh) * 2023-12-29 2024-04-16 北京微核芯科技有限公司 基于微指令高速缓存的分支指令的执行方法和装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04257948A (ja) * 1991-02-13 1992-09-14 Fujitsu Ltd キャッシュメモリ、該キャッシュメモリを備えたシステムおよび該システムにおける命令デコード方式
JPH06266556A (ja) * 1993-03-15 1994-09-22 Fujitsu Ltd データ処理装置
US5850532A (en) * 1997-03-10 1998-12-15 Advanced Micro Devices, Inc. Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched
US5913047A (en) * 1997-10-29 1999-06-15 Advanced Micro Devices, Inc. Pairing floating point exchange instruction with another floating point instruction to reduce dispatch latency
US6108773A (en) 1998-03-31 2000-08-22 Ip-First, Llc Apparatus and method for branch target address calculation during instruction decode
US6092182A (en) * 1998-06-24 2000-07-18 Advanced Micro Devices, Inc. Using ECC/parity bits to store predecode information
US6260134B1 (en) * 1998-11-02 2001-07-10 Advanced Micro Devices, Inc. Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
US6460132B1 (en) * 1999-08-31 2002-10-01 Advanced Micro Devices, Inc. Massively parallel instruction predecoding
US6631463B1 (en) * 1999-11-08 2003-10-07 International Business Machines Corporation Method and apparatus for patching problematic instructions in a microprocessor using software interrupts
US6502185B1 (en) * 2000-01-03 2002-12-31 Advanced Micro Devices, Inc. Pipeline elements which verify predecode information
US6804799B2 (en) 2001-06-26 2004-10-12 Advanced Micro Devices, Inc. Using type bits to track storage of ECC and predecode bits in a level two cache
US6816962B2 (en) * 2002-02-25 2004-11-09 International Business Machines Corporation Re-encoding illegal OP codes into a single illegal OP code to accommodate the extra bits associated with pre-decoded instructions
US6952754B2 (en) * 2003-01-03 2005-10-04 Intel Corporation Predecode apparatus, systems, and methods

Also Published As

Publication number Publication date
CN101103333A (zh) 2008-01-09
US7415638B2 (en) 2008-08-19
EP1836560A2 (en) 2007-09-26
ATE484792T1 (de) 2010-10-15
KR100909163B1 (ko) 2009-07-23
US20060123326A1 (en) 2006-06-08
CA2587915A1 (en) 2006-06-01
JP2008521141A (ja) 2008-06-19
WO2006057907A3 (en) 2006-12-14
RU2007123362A (ru) 2008-12-27
WO2006057907A2 (en) 2006-06-01
RU2367004C2 (ru) 2009-09-10
IL183283A0 (en) 2007-09-20
CA2587915C (en) 2010-09-28
DE602005024178D1 (de) 2010-11-25
EP1836560B1 (en) 2010-10-13
CN100495321C (zh) 2009-06-03
JP4585005B2 (ja) 2010-11-24

Similar Documents

Publication Publication Date Title
KR100909163B1 (ko) 브랜치 보정을 통한 전치-디코드 에러 조절
JP5335946B2 (ja) 電力的に効率的な命令プリフェッチ機構
EP1851620B1 (en) Suppressing update of a branch history register by loop-ending branches
JP3751049B2 (ja) パイプラインプロセッサおよびその動作方法
KR101099302B1 (ko) 현재 실행중이 아닌 명령 세트로부터 명령들을 프리로드하기 위한 시스템, 방법 및 소프트웨어
US8943300B2 (en) Method and apparatus for generating return address predictions for implicit and explicit subroutine calls using predecode information
US20110320787A1 (en) Indirect Branch Hint
US7827392B2 (en) Sliding-window, block-based branch target address cache
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
US7290179B2 (en) System and method for soft error handling
US20030204705A1 (en) Prediction of branch instructions in a data processing apparatus
JP2006031697A (ja) 分岐ターゲットバッファと使用方法
WO1998020416A1 (en) A stride-based data address prediction structure
JPH01296342A (ja) データ処理装置

Legal Events

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

Payment date: 20130628

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140627

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee