KR20030019451A - 추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘 - Google Patents
추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘 Download PDFInfo
- 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
Links
- 230000007246 mechanism Effects 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000001514 detection method Methods 0.000 claims abstract description 10
- 238000012545 processing Methods 0.000 claims abstract description 9
- 230000008569 process Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect 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, look ahead
-
- 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, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Abstract
프로세서에서 예외처리 방법은 예외의 검출시에 상태를 설정하는 단계와, 상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내는 단계와, 상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 처리하는 단계를 포함한다. 상기 방법은 예외 클래스에 기초하여 예외에 대한 트랩신호를 보내기 전에 상기 예외를 야기하는 명령어를 재실행하는 단계를 포함한다. 상기 방법은 예외를 야기하는 명령어가 가장 오래된 제거되지 않은 명령어가 된 후에 상기 예외를 야기하는 명령어를 재실행하는 단계를 포함한다. 상기 방법은 예외를 야기하는 명령어가 가장 오래된 제거되지 않은 명령어가 된 후에 상기 예외에 대한 트랩신호를 보내는 단계를 포함한다. 상기 방법은 예외를 야기하는 명령어를 송출함이 없이 예외를 야기하는 명령어를 완료한 것으로 표시하는 단계를 포함한다. 프로세서에서의 예외처리 장치는 예외의 검출시에 상태를 설정하고, 상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내기 위한 명령어 스케줄러를 구비한다. 상기 명령어 스케줄러는 상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 처리한다.
Description
파이프라인 기능정지(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 항에 있어서,예외를 야기하는 명령어가 가장 오래된 제거되지 않은 명령어가 된 후에 상기 예외에 대한 트랩신호를 보내는 단계를 더 포함하는 예외처리 방법.
- 제 1 항에 있어서,예외를 야기하는 명령어를 송출함이 없이 상기 예외를 야기하는 명령어를 완료한 것으로 표시하는 단계를 더 포함하는 예외처리 방법.
- 예외의 검출시에 상태를 설정하고, 상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내기 위한 명령어 스케줄러를 구비한 프로세서에서의 예외처리 장치로서, 상기 스케줄러는 상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 처리하는 예외처리 장치.
- 제 6 항에 있어서,명령어 스케줄러는 예외 클래스에 기초하여 예외에 대한 트랩신호를 보내기전에 상기 예외를 야기하는 명령어를 또한 재실행하는 예외처리 장치.
- 제 7 항에 있어서,명령어 스케줄러는 예외를 야기하는 명령어가 가장 오래된 제거되지 않은 명령어가 된 후에 상기 예외를 야기하는 명령어를 또한 재실행하는 예외처리 장치.
- 제 6 항에 있어서,명령어 스케줄러는 예외를 야기하는 명령어가 가장 오래된 제거되지 않은 명령어가 된 후에 상기 예외에 대한 트랩신호를 또한 보내는 예외처리 장치.
- 제 6 항에 있어서,명령어 스케줄러는 예외를 야기하는 명령어를 송출함이 없이 상기 예외를 야기하는 명령어를 완료한 것으로 또한 표시하는 예외처리 장치.
- 예외의 검출시에 상태를 설정하는 수단과;상기 상태가 설정되면 상기 예외에 대한 트랩신호를 보내는 수단과;상기 트랩신호를 보내기 전에 예외 클래스에 기초하여 상기 예외를 다르게 처리하는 수단을 구비한 프로세서에서의 예외처리 장치.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101006545B1 (ko) * | 2009-12-22 | 2011-01-07 | (주)유니트엔지니어링 | 외측 종방향 리브부재 및 내부보강판을 이용한 강박스 거더를 이용한 교량시공방법 |
Families Citing this family (24)
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)
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 |
-
2000
- 2000-06-22 US US09/599,227 patent/US6615343B1/en not_active Expired - Lifetime
-
2001
- 2001-06-22 AU AU2001272988A patent/AU2001272988A1/en not_active Abandoned
- 2001-06-22 WO PCT/US2001/020148 patent/WO2001098895A1/en not_active Application Discontinuation
- 2001-06-22 KR KR1020027017479A patent/KR20030019451A/ko not_active Application Discontinuation
- 2001-06-22 EP EP01952204A patent/EP1301858A1/en not_active Withdrawn
- 2001-06-22 JP JP2002504587A patent/JP3579414B2/ja not_active Expired - Fee Related
Cited By (1)
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 |