KR20030019451A - 추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘 - Google Patents

추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘 Download PDF

Info

Publication number
KR20030019451A
KR20030019451A KR1020027017479A KR20027017479A KR20030019451A KR 20030019451 A KR20030019451 A KR 20030019451A KR 1020027017479 A KR1020027017479 A KR 1020027017479A KR 20027017479 A KR20027017479 A KR 20027017479A KR 20030019451 A KR20030019451 A KR 20030019451A
Authority
KR
South Korea
Prior art keywords
exception
instruction
sending
trap signal
state
Prior art date
Application number
KR1020027017479A
Other languages
English (en)
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 KR20030019451A publication Critical patent/KR20030019451A/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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Abstract

프로세서에서 예외처리 방법은 예외의 검출시에 상태를 설정하는 단계와, 상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내는 단계와, 상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 처리하는 단계를 포함한다. 상기 방법은 예외 클래스에 기초하여 예외에 대한 트랩신호를 보내기 전에 상기 예외를 야기하는 명령어를 재실행하는 단계를 포함한다. 상기 방법은 예외를 야기하는 명령어가 가장 오래된 제거되지 않은 명령어가 된 후에 상기 예외를 야기하는 명령어를 재실행하는 단계를 포함한다. 상기 방법은 예외를 야기하는 명령어가 가장 오래된 제거되지 않은 명령어가 된 후에 상기 예외에 대한 트랩신호를 보내는 단계를 포함한다. 상기 방법은 예외를 야기하는 명령어를 송출함이 없이 예외를 야기하는 명령어를 완료한 것으로 표시하는 단계를 포함한다. 프로세서에서의 예외처리 장치는 예외의 검출시에 상태를 설정하고, 상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내기 위한 명령어 스케줄러를 구비한다. 상기 명령어 스케줄러는 상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 처리한다.

Description

추측실행의 비순차적 프로세서에서 정확한 예외를 전송하는 메카니즘{Mechanism For Delivering Precise Exceptions In An Out-Of-Order Processor With Speculative Execution}
파이프라인 기능정지(stalls)는 병렬 처리와 관련하여 성능을 저해하는 주요한 원인이다. 기능 정지는 데이터 종속성과, 프로그램 흐름(flow)의 변경 및 하드웨어 자원 충돌에 기인한다. 때때로, 파이프라인 기능정지는 한 셋트의 명령어에 대한 실행순서를 재배열함으로써 피해질 수 있다. 컴파일러를 사용하여 명령어를 정적으로 리스케줄(reschedule)할 수 있지만, 실행시 정보에 대한 불완전한 지식은 정적 리스케줄링의 유효성을 감소시킨다. 순차적 프로세서, 즉, 엄격하게 프로그램 순서를 따라 명령어를 송출(issue)하고, 실행하며, 완료하고, 제거(retire)하는 프로세서는 전적으로 정적 리스케줄링에 의하므로 파이프라인 기능정지가 발생하기 쉽다.
그 결과, 설계자는 비순차적 프로세서(out-of-order processor)를 사용하여 동적 명령어 리스케줄링을 실행하려고 한다. 가장 단순한 비순차적 프로세서는 순차적으로 명령어를 송출하지만 상기 명령어를 비순차적으로 실행하고 완료하도록 한다. 심지어 이러한 단순한 비순차적 프로세서 조차도 대응하는 명령어가 제거되기 전에 결과를 재정렬(reorder)하기 위해 복잡한 하드웨어를 필요로 한다. 데이터 흐름 관점에서는 엄밀한 결과 순서가 필요하지 않으나, 이러한 정렬(ordering)은 정확한 예외(exception)를 유지하고 잘못 예측된 추측실행으로부터 복구하기 위해 필요하다.
재정렬에 대한 공지된 방법은 프로그램 순서대로 레지스터 파일에 쓰여질 때 까지 결과를 유지하는 재정렬 버퍼(reorder buffer)의 이용에 의한 것이다. 설계자는 히스토리 버퍼(history buffers)와 미결정 파일(future files)과 같은 다른 형태의 재정렬 하드웨어를 또한 사용한다. 히스토리 버퍼는 원래 피연산자(source-operand) 히스토리를 기록하여 프로세서가 정확한 구조상태(architectural state)로 역행(backtrack)할 수 있으며 미결정 파일은 별개의 레지스터 파일(register files)에 현재 상태와 구조상태를 저장하여 프로세서가 정확한 체크포인트(check point) 상태로 복원된다.
분기예측(branch prediction)과 추측실행(speculative execution)은 파이프라인 기능정지를 감소시키기 위해 사용되는 또 다른 기술이다. 파이프라인 프로세서에서, 조건부 분기의 결과는 종종 그 다음 연속 명령어를 인출(fetch)한 후에 결정된다. 따라서, 미정된 분기의 정확한 방향이 예측될 수 있다면, 명령어 큐(queue)는 사용될 확률이 높은 명령어들로 가득 찬 상태로 유지될 수 있다. 일부 프로세서에서, 명령어는 실제로 미정된 조건부 분기를 넘어서까지 추측 실행된다. 이 기술은 분기가 예측된 방향으로 진행될 때 파이프라인 기능정지를 완전히 피한다. 다른 한편으로, 분기 방향이 잘못 예측된다면, 파이프라인은 플러시(flush)되어야만 하고, 명령어 인출이 새방향으로 돌려져야만 하며, 파이프라인이 다시 채워져야만 한다.
주어진 명령어에 대한 정규 프로세싱(normal processing)을 중지시키는 이벤트(event)인 명령어 예외(exceptions)를 효과적으로 진행시키고 처리하는 것이 또한 중요하다. 명령어 예외와 마주치게되면, 제어흐름은 트랩 처리기(trap handler)를 통해 일시적으로 다른 쪽으로 전환된다. 트랩 처리기는 예외의 원인을 조사하고 예외를 방출하기 위해 필요한 모든 프로세스를 완료하는 루틴이다. 일반적으로, 프로세서는 트랩 처리기에 의해 요구되는 어떤 정보를 저장한다. 이러한 정보는 실행프로그램의 현재 상태와, 예외 발생원의 식별 등을 포함한다.
명령어 예외는 매우 드물지만, 마주친다면, 실행된 명령어 이전의 예전 상태로 정확하게 프로세서의 상태를 유지하는 것이 매우 유용하다. 이러한 정확한 예외가 트랩 처리기에 의한 예외의 더 용이한 진단을 가능하게 한다. 그러나, 어떠한 예외와도 마주치지 않는 일반적인 경우에 속도가 떨어짐이 없이 정확한 예외를 달성하는 것은 어려운 일이다. 이는 특히 명령어가 매우 초기일 때, 즉, 다른 주어진 명령어보다 더 최근에 인출될 때 예외를 생성시킨 명령어가 송출되고 실행될 수 있는 비순차적 프로세서에서 그러하다.
도 1을 참조하면, 일반적인 컴퓨터 시스템은 다른 것들 중에서 CPU(12)와, 로드(load)/저장 장치(14)와 탑재된 캐시 메모리(on-board cache memory)(16)를 가지는 마이크로프로세서(10)를 포함한다. 마이크로프로세서(10)는 양자 모두 상기 마이크로프로세서(10)에 의해 실행되는 데이터와 프로그램 명령어를 보유하는 외부 캐시 메모리(17)와 주 메모리(18)에 연결된다. 내부적으로, 프로그램 명령어의 실행은 CPU(12)에 의해 수행된다. 명령어를 수행하기 위해 CPU(12)에 의해 요구되는 데이터는 로드/저장 장치(14)에 의해 인출되고 CPU(12)의 내부 레지스터(15)에 로드된다. (도시되지 않은) 메모리 큐는 미해결의 메모리 요구 리스트를 유지한다. 로드/저장 장치는 상기 메모리 큐에 요구를 추가하고 또한 상기 메모리 큐로부터의 값 레지스터에 로드한다. CPU(12)로부터의 명령시에, 로드/저장 장치(14)는 먼저 빠른 탑재된 캐시 메모리(16)에서 데이터에 대해 검색하고 나서, 외부 캐시 메모리를 검색하고, 최종적으로 느린 주 메모리(18)에서 검색한다. 캐시 메모리에서 데이터를 발견하는 것을 "적중(hit)"이라고 한다. 캐시 메모리에서 데이터를 발견하지 못하는 것을 "실패(miss)"라고 한다.
컴퓨터 프로세서는 컴퓨터 프로그램으로부터 명령어를 해석하고 실행하는 산술회로, 논리회로 및 제어회로를 포함한다. 프로세서 성능의 향상을 위해, 설계자는 연산을 더 빠르게 하고 더 많은 연산을 병렬로 실행하게 하는 2가지 주목적을 추구하였다. 연산을 더 빠르게 하는 것은 여러가지 방식으로 접근될 수 있다. 예를 들면, 반도체 공정을 개선함으로써 트랜지스터가 더 빨리 스위칭되고 이로써 신호를 더 빨리 전파하도록 할 수 있고; 실행장치 대기시간은 프로세서 설계에서 트랜지스터 갯수를 증가시킴으로써 감소될 수 있으며; 주어진 기능을 수행하기 위해 프로세서 설계에서 요구되는 논리 연산의 단계를 최소화하여 속도를 증가시킬 수 있다. 더 많은 연산을 병렬로 실행하기 위해서, 설계자는 파이프라이닝(pipelining)과 슈퍼스칼라(superscalar) 기술 중 하나 또는 이들의 조합에 주로 의존한다. 파이프라인 프로세서는 공통 실행자원에 대하여 시간상으로 명령어를 중첩시킨다. 슈퍼스칼라 프로세서는 별개의 자원에 대하여 공간상으로 명령어를 중첩시킨다.
도 1은 일반적인 컴퓨터 시스템을 도시하고 있다.
도 2는 본 발명의 일실시예에 따른 블록 다이어그램이다.
도 3은 본 발명의 일실시예에 따른 프로세스를 도시한 플로우 차트이다.
일 양태로, 프로세서에서의 예외처리 방법은 예외의 검출시에 상태를 설정하는 단계와, 상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내는 단계와, 상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 처리하는 단계를 포함한다. 상기 방법은 예외 클래스에 기초하여 예외에 대한 트랩신호를 보내기 전에 상기 예외를 야기하는 명령어를 재실행하는 단계를 포함할 수 있다. 상기 방법은 예외를 야기하는 명령어가 가장 오래된, 제거되지 않은 명령어가 된 후에 상기 예외를 야기하는 명령어를 재실행하는 단계를 포함할 수 있다. 상기 방법은 예외를 야기하는 명령어가 가장 오래된, 제거되지 않은 명령어가 된 후에 상기 예외에 대한 트랩신호를 보내는 단계를 포함할 수 있다. 상기 방법은 예외를 야기하는 명령어를 송출함이 없이 상기 예외를 야기하는 명령어를 완료한 것으로 표시하는 단계를 포함할 수 있다.
일 양태로, 프로세서에서의 예외처리 장치는 예외의 검출시에 상태를 설정하고, 상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내기 위한 명령어 스케줄러를 구비한다. 상기 명령어 스케줄러는 상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 처리한다. 예외 클래스에 기초한 상기 명령어 스케줄러는 예외에 대한 트랩신호를 보내기 전에 상기 예외를 야기하는 명령어를 재실행할 수 있다. 상기 명령어 스케줄러는 예외를 야기하는 명령어가 가장 오래된제거되지 않은 명령어가 된 후에 상기 예외를 야기하는 명령어를 재실행할 수 있다. 상기 명령어 스케줄러는 예외를 야기하는 명령어가 가장 오래된, 제거되지 않은 명령어가 된 후에 상기 예외에 대한 트랩신호를 보낼 수 있다. 상기 명령어 스케줄러는 예외를 야기하는 명령어를 송출함이 없이 예외를 야기하는 명령어를 완료한 것으로 표시할 수 있다.
일 양태로, 프로세서에서의 예외처리 장치는 예외의 검출시에 상태를 설정하는 수단과, 상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내는 수단과, 상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 처리하는 수단을 구비한다.
본 발명의 또 다른 양태 및 잇점은 하기의 설명과 첨부 도면으로부터 이해될 것이다.
본 발명의 다양한 실시예가 첨부한 도면을 참조로 기술될 것이다. 도 2를 참조하면, 일반적으로, 하나 이상의 실시예에서, 본 발명은 인출장치(fetch unit)(11)와 명령어 스케줄러(instrucntion scheduler)(13)를 가진 프로세서 설계로 구현될 수 있다. 명령어 스케줄러(13)는 송출장치(issue unit)(15)와 제거 논리회로(retire logic)(17)를 포함한다. 송출장치(15)는 송출하는 명령어와 송출 전 프로세싱(pre-issuance processing)을 처리한다. 반면에, 제거 논리회로(17)는 명령어의 송출 후 프로세싱을 처리한다. 하기에 더 상세히 논의된 바와 같이, 전위 예외(front-end exception)는 예외를 야기하는 명령어의 송출 이전에 발생하여 예외를 야기하는 명령어 송출의 방지를 촉구하는 반면에, 후위 예외(back-end exception)는 예외를 야기하는 명령어가 송출된 후에 처리된다.
인출장치(11)는 명령어를 인출하고 인출된 명령어(19)를 명령어 스케줄러(13)로 보낸다. 그런 후 명령어 스케줄러(13)의 송출장치(15)는 인출된 명령어(19)를 송출된 명령어(21)로서 송출한다. 송출된 명령어는 실행장치(23)로 보내지고 나서 제거를 위해 제거 논리회로(17)로 복귀한다. 명령어와 관련된 예외가 발생하느냐에 따라, 예외의 처리는 서로 다른 일련의 단계를 거쳐 진행된다. 만일 예외가 전위 예외이면, 인출장치가 예외를 검출하여 적절한 비트(bit)에 표시한다. 만일 예외가 후위 예외이면, 실행장치가 예외를 검출하여 적절한 비트에 표시한다. 예외와 표시된 비트를 처리하는데 있어 취해진 단계는 하기의 도 3을 참조로 논의된다. 어떤 경우에도, 명령어 스케줄러(13)는 검출된 예외를 인출장치(11)에 전하고, 인출장치(11)는 다시 (도시되지 않은) 트랩 처리기를 호출한다. 트랩 처리기는 예외를 해결하기 위한 소프트웨어 도구이다. 트랩 처리기를 호출하기 위하여 예외의 발생을 인출장치(11)에 전할 때, 이를 트랩신호를 보내는 것이라고 한다. 당업자는 다중 명령어가 동시에 인출될 수 있고 기술된 기능이 프로세서 설계에 기초하여 다른 장치에 의해 수행될 수 있음을 이해할 것이다.
도 3을 참조하면, 일 실시예에 따른 비순차적 프로세서에서의 정확한 예외 보고를 가능하게 하는 프로세스가 도시된다. 먼저, 예외가 수신될 때(단계 20), 상기 예외는 한 클래스(class)에 할당된다(단계 22). 도시된 예에서, 각 예외는 2가지 가능한 클래스 중 하나에 할당된다. 예외는 예외의 형태에 따라 전위 예외이거나 후위 예외이다. 당업자라면 많은 변형이 가능함을 이해할 것이지만, 예제 프로세스는 클래스 중 하나, 예를 들면, 전위 예외를 검출하는 단계와 검출되지 않은 다른 하나, 예를 들면, 후위 예외를 내정값(default)으로 하는 단계를 포함한다. 전위 예외는 명령어가 송출 큐(queue) 또는 큐들에 삽입되기 전에 검출된다. 이들 예외는 일반적으로 매우 높은 우선순위가 되므로 상기 명령어에 대한 다른 모든 가능한 예외에 우선한다. 다른 한편으로, 후위 예외는 명령어가 실행장치로 송출된 후에 발생한다. 필연적으로, 전위 예외는 명령어의 송출 이전에 발생하여, 명령어 송출의 방지를 촉구하는 예외인 반면에, 후위 예외는 명령어의 송출 후에 발생하는 예외이다.
따라서, 프로세스는 예외가 전위 예외인지를 결정함으로써 계속된다(단계 24). 만일 전위 예외라면, 전위 예외가 정확한 방식으로 보고되도록 보장하기 위해, 명령어는 명령어 송출 논리회로가 명령어를 송출하지 않을 것이라는 방식으로 표시된다. 이는 또한 오류상태에 있는 것으로 이미 알려진 명령어가 송출하거나, 실행하거나 제거함에 의해 다른 어떤 상태에도 오류를 일으키지 않게 보장한다. 이러한 명령어가 명령어 큐에 들어간다면, 예외가 있지만 완료한 것으로 표시된다(단계 26). 예외가 없이 완료한 것으로 표시된 명령어는 결국 제거될 것이다. 일단 예외가 있는 완료한 것으로 표시된 명령어가 가장 오래된 제거되지 않은 명령어가 된다면(단계 28), 예외가 보고될 것이고(단계 30) 프로세서의 상태는 그 이전의 모든 명령어의 실행만을 반영할 것이다.
후위 예외를 야기하는 명령어는 송출되고 비순차적으로 완료되기 때문에 후위 예외는 더 복잡하다. 따라서, 후위 예외와 마주친다면, 예외 재실행비트(replay bit), 즉, 명령어 큐에서 명령어 엔트리(entry)의 비트가 후위 예외를 생성한 명령어에 대해 설정된다(단계 32). 명령어가 프로세서에서 가장 오래된 제거되지 않은 명령어가 되어서야 비로소 어떤 다른 작동이 취해진다(단계 34). 일단 명령어가 가장 오래된 제거되지 않은 명령어가 되면, 상기 명령어는 재송출되거나 재실행된다(단계 36). 만일, 재실행시에, 어떤 예외도 발생되지 않으면(단계 37), 프로세스는 끝나고 명령어는 정상적으로 제거되게 된다. 다른 한편으로, 만일 예외가 재실행시에 발생된다면, 명령어가 완료될 때 예외 정보가 기록된다(단계 38). 예외를 생성하는 명령어의 재실행은 트랩 정보를 기록하기 위해 단일 레지스터가 이용될 수 있게 한다. 그렇지 않으면 명령어당 하나의 레지스터가 요구됨을 당업자는 이해할 것이다. 또한 예외 재실행은 명령어 제거 논리회로의 외부에 보유된 오류 레지스터(error register)가 부정확한 추론, 데이터 캐쉬 실패(data cashe misses) 등으로 인해 오류를 일으키지 않도록 보장한다. 마지막으로, 명령어 인출 논리회로에 트랩이 통보되고 모든 명령어는 트랩 처리기를 인출하기 전에 플러시된다(단계 40).
만일 어떤 이유로 인해, 명령어가 2번 실행될 수 없다면, 실행장치가 이를검출하고 "예외 재실행을 하지 않는" 비트를 설정하며, 상기 비트는 예외 비트를 수반한다. "예외 재실행을 하지 않는" 비트가 설정되면 제거 논리회로는 절대로 명령어를 재실행하지 않을 것이다. 이는 I/O 공간(space)에 대한 로드/저장 연산과 같은 부작용(side effects)을 가진 명령어에 대해 요구될 수 있다. 더욱이, 명령어가 재송출될 때 예외와 마주치지 않는다면, 명령어는 정상적으로 제거되게 됨을 주의하라. 당업자는 예외 비트 및 예외 재실행 비트가 동일한 비트를 이용하여 구현될 수 있고, 이러한 경우에는, 예외 검출의 타이밍(timing) 또는 발생원(source)에서의 차이가 어떤 동작이 취해질 것인 지를 지시하는데 사용될 것임을 이해할 것이다.
전위 예외가 미처리 상태이면, 전위 예외는 그 이전의 명령어에 의해 생성된 모든 후위 예외에 의해 겹쳐써질 수 있다. 이는 트랩신호가 프로그램 순서대로 보내져야만 하기 때문이다. 따라서, 이전의 명령어에서 후위 예외와 마주친다면, 상기 후위 예외는 어떤 더 나중의 전위 예외보다도 앞서 처리되어야만 한다. 또한, 상기 전위 및 후위 예외가 관련되지 않는다면, 일단 후위 예외에 대한 트랩 처리기가 완료되고 더 나중의 명령어가 재인출된 후에 전위 예외가 다시 보고될 것이다.
매번 명령어가 송출될 때마다, 프로세서의 재명명(rename) 상태가 수정되지만 프로세서의 구조 상태는 변경되지 않음을 아는 것이 중요하다. 이는 예외가 정확한 방식으로 보고되어지게 한다. 당업자는 레지스터 재명명(renaming)이외의 메카니즘(mechanisms)도 또한 적합하나 트랩 처리기가 인출되기 전에 프로세서의 올바른 구조 상태가 복원되는 것을 필요로 할 수 있음을 이해할 것이다.
본 발명의 잇점은 하기 사항중 하나 이상을 포함할 수 있다. 비순차적 프로세서에서 발생한 예외 이벤트가 정확하게 보고되고 처리될 수 있다. 검출 및 표시때문에, 전위 예외가 송출되지 않는다. 더욱이, 후위 예외는 재실행되고 주어진 시각에서 단지 단일 전위 예외만이 처리되기 때문에, 단일 트랩 레지스터만이 필요하다.
본 발명은 제한된 수의 실시예에 대해 기술되었으나, 당업자는 다른 실시예가 본 명세서에 개시된 바와 같은 본 발명의 범위로부터 이탈되지 않게 발명될 수 있음을 이해할 것이다. 따라서, 본 발명의 범위는 첨부된 특허청구범위에 의해서만 제한되어야 한다.
본 발명의 잇점은 하기 사항중 하나 이상을 포함할 수 있다. 비순차적 프로세서에서 발생한 예외 이벤트가 정확하게 보고되고 처리될 수 있다. 검출 및 표시때문에, 전위 예외가 송출되지 않는다. 더욱이, 후위 예외는 재실행되고 주어진 시각에서 단지 단일 전위 예외만이 처리되기 때문에, 단일 트랩 레지스터만이 필요하다.

Claims (11)

  1. 예외의 검출시에 상태를 설정하는 단계와;
    상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내는 단계와;
    상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 프로세싱하는 단계를 포함하는 프로세서에서의 예외처리 방법.
  2. 제 1 항에 있어서,
    예외 클래스에 기초하여 예외에 대한 트랩신호를 보내기 전에 상기 예외를 야기하는 명령어를 재실행하는 단계를 더 포함하는 예외처리 방법.
  3. 제 2 항에 있어서,
    예외를 야기하는 명령어가 가장 오래된 제거되지 않은 명령어가 된 후에 상기 예외를 야기하는 명령어를 재실행하는 단계를 더 포함하는 예외처리 방법.
  4. 제 1 항에 있어서,
    예외를 야기하는 명령어가 가장 오래된 제거되지 않은 명령어가 된 후에 상기 예외에 대한 트랩신호를 보내는 단계를 더 포함하는 예외처리 방법.
  5. 제 1 항에 있어서,
    예외를 야기하는 명령어를 송출함이 없이 상기 예외를 야기하는 명령어를 완료한 것으로 표시하는 단계를 더 포함하는 예외처리 방법.
  6. 예외의 검출시에 상태를 설정하고, 상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내기 위한 명령어 스케줄러를 구비한 프로세서에서의 예외처리 장치로서, 상기 스케줄러는 상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 처리하는 예외처리 장치.
  7. 제 6 항에 있어서,
    명령어 스케줄러는 예외 클래스에 기초하여 예외에 대한 트랩신호를 보내기전에 상기 예외를 야기하는 명령어를 또한 재실행하는 예외처리 장치.
  8. 제 7 항에 있어서,
    명령어 스케줄러는 예외를 야기하는 명령어가 가장 오래된 제거되지 않은 명령어가 된 후에 상기 예외를 야기하는 명령어를 또한 재실행하는 예외처리 장치.
  9. 제 6 항에 있어서,
    명령어 스케줄러는 예외를 야기하는 명령어가 가장 오래된 제거되지 않은 명령어가 된 후에 상기 예외에 대한 트랩신호를 또한 보내는 예외처리 장치.
  10. 제 6 항에 있어서,
    명령어 스케줄러는 예외를 야기하는 명령어를 송출함이 없이 상기 예외를 야기하는 명령어를 완료한 것으로 또한 표시하는 예외처리 장치.
  11. 예외의 검출시에 상태를 설정하는 수단과;
    상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내는 수단과;
    상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 처리하는 수단을 구비한 프로세서에서의 예외처리 장치.
KR1020027017479A 2000-06-22 2001-06-22 추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘 KR20030019451A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/599,227 2000-06-22
US09/599,227 US6615343B1 (en) 2000-06-22 2000-06-22 Mechanism for delivering precise exceptions in an out-of-order processor with speculative execution

Publications (1)

Publication Number Publication Date
KR20030019451A true KR20030019451A (ko) 2003-03-06

Family

ID=24398778

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027017479A KR20030019451A (ko) 2000-06-22 2001-06-22 추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘

Country Status (6)

Country Link
US (1) US6615343B1 (ko)
EP (1) EP1301858A1 (ko)
JP (1) JP3579414B2 (ko)
KR (1) KR20030019451A (ko)
AU (1) AU2001272988A1 (ko)
WO (1) WO2001098895A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101006545B1 (ko) * 2009-12-22 2011-01-07 (주)유니트엔지니어링 외측 종방향 리브부재 및 내부보강판을 이용한 강박스 거더를 이용한 교량시공방법

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6889315B2 (en) * 1999-12-17 2005-05-03 Fujitsu Limited Processor and method of controlling the same
US7124285B2 (en) * 2001-03-29 2006-10-17 Intel Corporation Peak power reduction when updating future file
US7380107B2 (en) * 2004-01-13 2008-05-27 Hewlett-Packard Development Company, L.P. Multi-processor system utilizing concurrent speculative source request and system source request in response to cache miss
US7360069B2 (en) * 2004-01-13 2008-04-15 Hewlett-Packard Development Company, L.P. Systems and methods for executing across at least one memory barrier employing speculative fills
US7406565B2 (en) * 2004-01-13 2008-07-29 Hewlett-Packard Development Company, L.P. Multi-processor systems and methods for backup for non-coherent speculative fills
US7409500B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Systems and methods for employing speculative fills
US8281079B2 (en) * 2004-01-13 2012-10-02 Hewlett-Packard Development Company, L.P. Multi-processor system receiving input from a pre-fetch buffer
US7376794B2 (en) * 2004-01-13 2008-05-20 Hewlett-Packard Development Company, L.P. Coherent signal in a multi-processor system
US7340565B2 (en) * 2004-01-13 2008-03-04 Hewlett-Packard Development Company, L.P. Source request arbitration
US7409503B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Register file systems and methods for employing speculative fills
US8301844B2 (en) * 2004-01-13 2012-10-30 Hewlett-Packard Development Company, L.P. Consistency evaluation of program execution across at least one memory barrier
US7383409B2 (en) 2004-01-13 2008-06-03 Hewlett-Packard Development Company, L.P. Cache systems and methods for employing speculative fills
US7962696B2 (en) * 2004-01-15 2011-06-14 Hewlett-Packard Development Company, L.P. System and method for updating owner predictors
US7240165B2 (en) * 2004-01-15 2007-07-03 Hewlett-Packard Development Company, L.P. System and method for providing parallel data requests
US7627857B2 (en) 2004-11-15 2009-12-01 International Business Machines Corporation System and method for visualizing exception generation
US7475232B2 (en) * 2005-07-19 2009-01-06 International Business Machines Corporation Performance of an in-order processor by no longer requiring a uniform completion point across different execution pipelines
US7984273B2 (en) 2007-12-31 2011-07-19 Intel Corporation System and method for using a mask register to track progress of gathering elements from memory
US10387151B2 (en) 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
US8447962B2 (en) * 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
US7921280B2 (en) * 2008-06-27 2011-04-05 Intel Corporation Selectively powered retirement unit using a partitioned allocation array and a partitioned writeback array
US10175990B2 (en) 2009-12-22 2019-01-08 Intel Corporation Gathering and scattering multiple data elements
US9626333B2 (en) 2012-06-02 2017-04-18 Intel Corporation Scatter using index array and finite state machine
US8972697B2 (en) 2012-06-02 2015-03-03 Intel Corporation Gather using index array and finite state machine
GB2543306B (en) * 2015-10-14 2019-05-01 Advanced Risc Mach Ltd Exception handling

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778219A (en) * 1990-12-14 1998-07-07 Hewlett-Packard Company Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations
US5809275A (en) 1996-03-01 1998-09-15 Hewlett-Packard Company Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US6049868A (en) 1997-06-25 2000-04-11 Sun Microsystems, Inc. Apparatus for delivering precise traps and interrupts in an out-of-order processor
US5881280A (en) * 1997-07-25 1999-03-09 Hewlett-Packard Company Method and system for selecting instructions for re-execution for in-line exception recovery in a speculative execution processor
US5915117A (en) * 1997-10-13 1999-06-22 Institute For The Development Of Emerging Architectures, L.L.C. Computer architecture for the deferral of exceptions on speculative instructions
US6505296B2 (en) * 1997-10-13 2003-01-07 Hewlett-Packard Company Emulated branch effected by trampoline mechanism
US6119219A (en) * 1998-04-30 2000-09-12 International Business Machines Corporation System serialization with early release of individual processor
US6282636B1 (en) * 1998-12-23 2001-08-28 Intel Corporation Decentralized exception processing system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101006545B1 (ko) * 2009-12-22 2011-01-07 (주)유니트엔지니어링 외측 종방향 리브부재 및 내부보강판을 이용한 강박스 거더를 이용한 교량시공방법

Also Published As

Publication number Publication date
WO2001098895A1 (en) 2001-12-27
US6615343B1 (en) 2003-09-02
EP1301858A1 (en) 2003-04-16
AU2001272988A1 (en) 2002-01-02
JP3579414B2 (ja) 2004-10-20
JP2004501471A (ja) 2004-01-15

Similar Documents

Publication Publication Date Title
KR20030019451A (ko) 추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘
US8627044B2 (en) Issuing instructions with unresolved data dependencies
US7571304B2 (en) Generation of multiple checkpoints in a processor that supports speculative execution
US7877580B2 (en) Branch lookahead prefetch for microprocessors
US6691220B1 (en) Multiprocessor speculation mechanism via a barrier speculation flag
JP2597811B2 (ja) データ処理システム
US7330963B2 (en) Resolving all previous potentially excepting architectural operations before issuing store architectural operation
US7870369B1 (en) Abort prioritization in a trace-based processor
US7757068B2 (en) Method and apparatus for measuring performance during speculative execution
US6192466B1 (en) Pipeline control for high-frequency pipelined designs
US9875105B2 (en) Checkpointed buffer for re-entry from runahead
US6629271B1 (en) Technique for synchronizing faults in a processor having a replay system
US20060179346A1 (en) Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US20060184769A1 (en) Localized generation of global flush requests while guaranteeing forward progress of a processor
US9513925B2 (en) Marking long latency instruction as branch in pending instruction table and handle as mis-predicted branch upon interrupting event to return to checkpointed state
US6381691B1 (en) Method and apparatus for reordering memory operations along multiple execution paths in a processor
US9891972B2 (en) Lazy runahead operation for a microprocessor
KR100472346B1 (ko) 명령어 리플레이를 포함하는 프로세서 파이프라인
US7047398B2 (en) Analyzing instruction completion delays in a processor
US7418581B2 (en) Method and apparatus for sampling instructions on a processor that supports speculative execution
US7716457B2 (en) Method and apparatus for counting instructions during speculative execution
US10255071B2 (en) Method and apparatus for managing a speculative transaction in a processing unit
US6718460B1 (en) Mechanism for error handling in a computer system
US8181002B1 (en) Merging checkpoints in an execute-ahead processor
US11048609B2 (en) Commit window move element

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application