KR20030088892A - 인터럽트를 핸들링하기 위한 방법 및 장치 - Google Patents

인터럽트를 핸들링하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20030088892A
KR20030088892A KR10-2003-7010330A KR20037010330A KR20030088892A KR 20030088892 A KR20030088892 A KR 20030088892A KR 20037010330 A KR20037010330 A KR 20037010330A KR 20030088892 A KR20030088892 A KR 20030088892A
Authority
KR
South Korea
Prior art keywords
instruction
pipeline
processor
command
instructions
Prior art date
Application number
KR10-2003-7010330A
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 KR20030088892A publication Critical patent/KR20030088892A/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
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • 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
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

본 발명은, 프로세서의 파이프라인의 명령 흐름을 조작하기 위한 방법과 시스템 및 컴퓨터 프로그램 프로덕트를 개시한다. 검출 수단(142)은 파이프라인을 통한 명령 흐름의 언터럽션을 이끌게 되는 명령 타입의 명령을 검출한다. 이는, 명령 오피코드의 연관 부분을 분석함으로써 행해지는데, 상기 오피코드는 단일 명령(400)이나 베리롱인스트럭션워드(420)와 같은 복수의 명령을 나타낸다. 검출 수단(142)은 신호를 삽입 수단(180)에 보내는데, 삽입 수단은 태스크의 요구되는 스위칭을 돕게 되는 명령의 중간 파이프라인 스테이지(126) 내로 직접 삽입함으로써 수반되는 파이프라인으로부터의 중복 명령(redundant instruction)을 플러쉬하게 된다. 인식 가능한 비트 패턴을 갖는 상기된 명령 오피코드는 상기 시스템에 의한 프로덕트의 최적화된 실행을 가능하게 하는 컴퓨터 프로그램 프로덕트 내에 통합될 수 있다.

Description

인터럽트를 핸들링하기 위한 방법 및 장치{METHOD AND APPARATUS FOR HANDLING INTERRUPTS}
WO99/18,497호에는 파이프라인된 프로세서의 인터럽트 핸들링을 위한 방법이 개시된다.
파이프라인 처리 분야의 주요 문제 중 하나는, 사이클 손실에 관한 파이프라인을 통한 명령 흐름의 중단의 비용이다. 이러한 중단은, 예컨대 파이프라인 플러쉬(pipeline flush) 또는 파이프라인 스탤(pipeline stall)일 수 있다. 특히, 이러한 중단을 이끄는 자극은 무제한의 점프 및 분기와 같은 특정 프로그램 명령이거나, 외부 인터럽트 콜일 수 있다. 인터럽트 콜에 따라, 파이프라인을 통한 명령의 흐름은 인터럽트를 핸들링하기 위해 요구되는 명령을 진행시키기 위해 종료되어야 한다. 통상, 이는 프로세서 상태를 저장하고 파이프라인을 플러쉬함으로써 행해진다. 인터럽트가 핸들링된 후, 명령 흐름은 인터럽트의 핸들링에 앞서 명령 흐름이 종료된 지점으로부터 다시 시작된다.
보다 많은 사이클이 발생하는 중단의 결과로서 플러쉬되어야 한다는 사실에 기인해서, 이러한 중단 이벤트의 충격은 파이프라인의 스테이지 수의 증가에 따라서 보다 치명적으로 된다. 이러한 중단하는 이벤트가 자주 일어날 때, 중대한 프로세서 성능 저하를 일으킨다. 그러므로, 이러한 이벤트 동안 사이클 손실 수를 제한하는 방법을 제공하는 것은 가치 있는 일인데, 이는 프로세서 성능 저하의 감소로 귀결된다.
상기된 종래 기술은 3단계, 패치, 디코더, 실행 파이프라인으로 증명된 인터럽트 핸들링을 위한 방법을 제공하는데, 이 방법에 의해 인터럽트 콜의 이어지는 발생 및 인터럽트 콜의 핸들링에서의 사이클 손실이 회피되므로, 파이프라인 대기시간이 감소되고 프로세서 성능이 증가된다. 이는, 특정 인터럽트와 연관된 명령이 저장된 전용의 인터럽트 명령 레지스터를 사용함으로써 실현된다. 다수의 구성 필드로 이러한 인터럽트에 레이블을 붙임으로써, 삽입되는 명령의 수 뿐 아니라 그들의 레지스터 위치가, 인터럽트 콜을 수신함에 따라 이들 필드를 평가함으로써 검색될 수 있다. 결과적으로, 이들 명령은, 인터럽트 핸들링을 위해 선행하는 패치 스테이지를 사용함이 없이 디코더 스테이지 내로 직접 강제될 수 있다. 그런데, 이 방법의 단점은, 이 방법이 구성된 인터럽트만의 핸들링을 위한 해결책을 제공하고, 삽입 가능한 인터럽트 명령을 은닉시키기 위해 구성 가능한 레지스터 형태의 대규모의 추가적인 하드웨어가 요구된다는 것이다.
따라서, 본 발명의 제1목적은, 명령 흐름의 중단을 이끄는 다양한 자극을 커버하는 사이클 손실의 수를 감소시키는 상기된 종류의 방법을 제공하는 것이다.
본 발명의 제2목적은, 명령 흐름의 중단을 이끄는 다양한 자극에 대해 사이클 손실 감소가 가능한 상기된 종류의 시스템을 제공하는 것이다.
본 발명의 제3목적은, 상기된 시스템에 의해 실행하기 위한 코드 모듈을 구비하여 구성되는 컴퓨터 프로그램 프로덕트를 제공하는 것이다.
본 발명은, 파이프라인을 통한 명령의 진행 중단을 이끄는 자극(stimulus)을 검출하고,
상기 자극의 검출에 따라서, 상기 프로세서에 의해 상기 자극에 응답하기 위해 요구되는 명령 A를 상기 중단의 결과로서 이용 가능하게 되는 제1중간 파이프라인 스테이지 내로 직접 강제하는 단계를 구비하여 이루어지는 프로세서의 파이프라인의 명령 흐름을 조작하기 위한 방법과 관련된다.
또한, 본 발명은, 처리 파이프라인을 갖는 프로세서와,
상기 파이프라인을 통한 명령의 진행 중단을 이끄는 자극을 검출하기 위한 검출 수단 및,
상기 중단의 결과로서 이용 가능하게 되는 제1중간 파이프 스테이지 내로 직접 명령 A를 강제하기 위해 상기 검출 수단에 응답하는 삽입 수단을 구비하여 구성되는 명령 흐름을 조작하기 위한 시스템과 관련된다.
또한, 본 발명은 상기 시스템에 의해 실행하기 위한 코드 모듈을 구비하여 구성되는 컴퓨터 프로그램 프로덕트와 관련된다.
도 1은 본 발명에 따른 프로세서의 파이프라인 아키텍처를 나타낸 도면,
도 2는 본 발명에 따른 삽입 장치의 도면,
도 3은 복수의 실행 스테이지를 구비하여 구성되는 파이프라인의 개략도,
도 4a는 RISC 프로세서를 위한 JumpAndLinkRegister 명령을 나타낸 도면,
도 4b는 본 발명에 따른 추가적인 비트 패턴을 갖는 VLIW를 나타낸 도면,
도 5는 본 발명에 따른 명령 흐름 중단 이벤트의 검출 전과, 동안 그리고 후에 파이프라인의 명령 흐름의 전개 예의 개략적인 테이블이다.
본 발명의 제1목적은, 파이프라인의 제2중간 스테이지 내에 상주하는 명령 B의 명령 타입으로부터 상기 자극이 검출되는 것으로 실현된다. 본 발명은, 파이프라인 플러쉬와 같은 명령 흐름 중단의 발생이, 일반적으로 이들이 독립적인 중단 원인이라는 점에서 일반적인 일반 명령과 연관된 다수의 중단의 실행을 이끈다는사실의 인식에 기초한다. 더욱이, 명령 흐름 중단은, 무제한의 점프와 같은 소정 명령 타입이나 서브루틴 콜에 속하는 명령에 의해 일어날 수 있는 것으로 인식된다. 예컨대, 자체의 서브루틴 어드레스와 관계없이, 서브루틴 콜은, 파이프라인의 서브루틴 콜을 추적하는 명령이 중복되는 사실에 기인해서 항상 파이프라인 플러쉬를 일으키게 된다. 즉, 파이프라인 플러쉬는 명령의 현재 실예(instantiation)에 의해 일어나지 않고, 예컨대 소정 명령 타입과 연관된 클래스에 의해 일어난다. 파이프라인의 제1실행 스테이지에 앞서 디코더 스테이지와 같은 중간 파이프라인 스테이지의 이러한 명령 타입에 속하는 명령의 인식을 가능하게 함으로써, 파이프라인 존재 중복 명령이 상기된, 요구된 일반 명령에 의해 대체될 수 있으므로, 이에 따라 삽입될 수 있는 명령의 수에 의한 파이프라인 플러쉬의 결과로서 사이클 손실의 수를 감소시킨다. 요컨대, 이러한 자극의 검출에 있어서, 자극을 수반하는 스테이지에 선행하는 파이프라인 스테이지는 즉시 플러쉬될 수 있고, 플러쉬된 사이클 중 하나가 요구된 일반적인 명령의 삽입에 의해 직접 재사용될 수 있다.
본 발명의 하나의 장점은, 예컨대 프로세서가 프로세서 상태를 스택에 저장하도록 명령 A를 삽입하는 것이다. 프로세서가 태스크를 스위칭하도록 하는 다수의 명령 흐름 중단 이벤트가 있다. 일상적으로, 불연속적인 태스크는 재시작 가능해야 하는데, 이 의미는 현재 태스크 상태의 세이브 동작이 다음 태스크가 실행될 수 있기 전에 수행되어야 한다는 것이다. 결과적으로, 이러한 저장 명령의 실행은 통상적으로 요구되고, 중간 파이프라인 스테이지에서 이 명령의 강제된 삽입에 의한 플러쉬된 사이클을 재사용하는 것은 프로세서 성능을 증가시키게 된다.
유사한 이유로, 프로세서가 스택으로부터 프로세서 상태를 검색하게 하는 명령 A를 삽입하는 것이 바람직하다. 임시 태스크가 엔드되고, 프로세서가 이전의 태스크를 재시작할 필요가 있을 때, 동반하는 태스크 상태가 검색될 필요가 있다. 다시, 플러쉬된 중간 파이프 스테이지는 이러한 명령의 직접 삽입을 위해 재사용될 수 있다.
다른 장점은, 명령 B가 상기 삽입 수단에 의해 상기 제1중간 파이프라인 스테이지 내로 삽입되는 인터럽트 콜인 것이다. 또한, 이 접근은 인터럽트 콜의 통상적인 처리 방법을 허용한다. 인터럽트 콜을 외부 자극으로 다루는 대신, 인터럽트 핸들러 보다 프로세서가, 예컨대 현재 프로세서의 명령 흐름이 인터리브(interleave)되는 인터럽트 콜인 인터럽트 신호 전달 명령 내로의 인터럽트 요청을 '전달(translate)'할 수 있다. 결과적으로, 이제, 상기된 태스크 스위칭 프로세스는 인터럽트 핸들러 보다 상기 신호 전달 명령의 내부 검출에 의해 초기화된다. 결과적으로, 인터럽트 핸들러의 다수의 태스크는 파이프라인된 프로세서로 전달될 수 있다. 이는 인터럽트 핸들러 아키텍처의 단순화를 가능하게 하는데, 이는 요구되는 하드웨어의 감소로 귀결된다.
더욱이, 하나의 장점은, 파이프라인 플러쉬를 일으키는 프로그램 가능 명령으로 상기 자극의 검출을 확장시키는 것이다. 또한, 함수 또는 서브루틴 콜과 같은 이러한 타입의 명령은, 태스크를 스위칭하고 다시 계속하기 위해서 프로세서가 파이프라인을 플러쉬하게 하는데, 이는 이들 타입의 명령이 초기의 검출을 위한 적합한 후보로 된다.
프로그램 가능 명령의 초기화와 함께 자주 발생하는 문제는, 프로그램 가능 명령의 어드레스가 레지스터와 같은 저장 장치로부터 패치되어야 하는 경우의 파이프라인 스탤의 발생이다. 프로그램 가능 명령 어드레스의 동시 발생 패치 및 리턴 어드레스의 저장은 동일 데이터 버스의 사용을 요구한다는 사실에 따라, I/O 충돌의 결과로서의 스탤이 일어나게 된다. 본 발명의 방법의 실행은, 프로세서가 리턴 어드레스를 스택상에 저장하게 하는 명령 A를 삽입함으로써, 이 바람직하지 않은 효과를 방지시킨다.
플러쉬된 사이클 내로의 리턴 어드레스 저장 오퍼레이션의 재스케쥴 때문에, 저장 오퍼레이션은 프로그램 가능 명령 어드레스 패치가 수행된 후 실행되므로, 파이프라인이 스탤되는 것을 방지하고, 결과적으로 파이프라인 처리량 및 프로세스 성능이 개선된다.
본 발명의 제2목적은, 상기 자극이 파이프라인의 제2중간 스테이지 내에 상주하는 명령 B의 명령 타입으로부터 검출할 수 있는 것으로 실현된다. 명령 흐름의 중단을 일으키는 명령의 클래스의 요소 또는 사례를 인식함으로써, 예컨대 설정된 비트 패턴과 같은 단일의 서명(signature)을 인식함으로써, 필요한 파이프라인 플러쉬가 중간 파이프라인 스테이지 내의 명령 A의 이어지는 삽입과 조합으로 수행될 수 있으므로, 시스템의 성능을 개선시킨다.
이러한 시스템에 있어서는, 상기 명령 B가 복수의 명령을 구비하여 구성되는 명령 번들의 엘리먼트이고,
상기 파이프라인이 병렬 형식의 상기 명령 번들의 복수의 명령을 실행하기위해 복수의 실행 스테이지를 구비하여 구성되며,
상기 검출 수단이 복수의 실행 스테이지에 선행하는 것이 바람직하다.
명령을 분리하기 보다 명령 번들을 처리하는 프로세서는, 통상 병렬 형식으로 명령을 실행하도록 배열된 다수의 실행 스테이지를 구비하여 구성된다. 통상, 이러한 명령은 베리롱인스트럭션워드(Very Long Instruction Word:VLIW) 명명의 오퍼레이션으로 언급된다. 이러한 아키텍처의 결과는, 각각은 아니더라도 다수의 실행 스테이지가 그 자극과 조우한다는 사실에 기인해서 파이프라인을 통한 명령 진행의 중단을 이끄는 자극의 검출이 하드웨어를 요구한다는 것이다. 그런데, 복수의 실행 스테이지에 선행해서 검출 수단을 배열함으로써, 검출이 하나의 중심 위치에서 일어날 수 있으므로, 검출 및 제어 로직 모두에 관해 요구되는 하드웨어 양을 극적으로 감소시킨다.
이러한 관계에 있어서, 상기 검출 수단이 상기 복수의 명령 중 상기 명령 타입의 존재를 표시하는 상기 명령 번들에 첨부된 비트 패턴을 평가하도록 배열되는 것은 다른 장점이다. 명령 번들은 복수의 명령의 실행에 앞서 생성된다. 이는 정적으로, 예컨대 컴파일러에 의해서 또는 동적으로, 예컨대 집적회로 보드 상의 리소스 스케쥴러에 의해 행해질 수 있다. 이들 생성기는 명령 번들 내에 소정 타입의 명령이 존재하는 지를 가리키는 비트 패턴으로 명령 번들을 확장할 수 있다. 이 방법은, 전체 명령 번들 보다 확장된 비트 패턴만의 파이프라인의 제2중간 스테이지에 상주하는 명령 B의 명령 타입을 검출하기 위해 평가되어야 하므로, 이러한 자극의 신속하고 단순한 검출을 용이하게 한다. 또 다른 장점은, 상기 명령 번들이 압축된 형태의 베리롱인스트럭션워드(VLIW)인 것이다. 상기된 비트 패턴 확장의 도입에 기인해서 VLIW는 검출 수단에 의해 자체적으로 평가될 필요가 없다. 그러므로, VLIW는 압축된 형태로 아키텍처의 큰 부분을 통해 분배될 수 있는데, 이는 데이터 와이어와 같은 필요 하드웨어의 감소로 귀결된다.
삽입 가능한 명령의 상기된 일반 특성 때문에, 상기 삽입 수단에 의해 파이프라인 내로 강제되는 명령 A가 하드-코드의 방법으로, 예컨대 명령이 프로세서 코어 내측에 매립되는 방법으로 시스템 내에 존재하는 것이 바람직하다. 이는 손쉽고 빠른 명령의 삽입을 허용하고, 다소의 다른 명령만이 이 방법으로 삽입될 필요가 있는한 영역 증가에 있어서 값싸게 된다. 다수의 다른 명령이 삽입 수단에 의해 삽입되어야 한다면, 상기 명령 수단에 의해 파이프라인 내로 강제되는 명령 A는 데이터 저장 장치 내에 저장되는 것이 바람직하다. 데이터 저장 장치 내의 삽입 가능한 명령의 그룹화는 정확한 하드-코드의 명령을 선택하기 위해서 복잡한 아키텍처의 요구를 방지한다. 상기 데이터 저장 장치가 랜덤 액세서 메모리와 같이 구성될 수 있으면, 다른 세트의 삽입 가능한 명령의 사용이 가능하게 된다. 이러한 세트는 이들 시스템의 성능 강화 수단을 보다 일반적이게 하는, 예컨대 특정 프로그램일 수 있다.
본 발명의 제3목적은, 상기 코드 모듈이 비트 패턴으로 확장된 명령을 구비하여 구성됨으로써 실현되는데, 상기 비트 패턴은 상기 명령이 상기 시스템 중 하나의 검출 수단에 인식 가능하게 만든다.
도 1에 있어서, 처리 파이프라인은, 각각 점선으로 표시되는 패치 스테이지(120), 디코더 스테이지(140) 및, 실행 스테이지(160)의 3개의 주요 섹션으로 나누어진다. 더욱이, 데이터버스(100)가 패치 스테이지(120)의 I/O 기능을 가리키기 위해 포함된다. 모든 스테이지(120,140,160)는 서브섹션으로 나누어지는데, 각 스테이지는 실제의 복잡성을 간단하게 그 기능만을 나타내고 있다. 예컨대, 패치 스테이지(120)는 2개의 스테이지(122,126)를 구비하여 구성되는데, 이들은 마이크로스테이지, 예컨대 완전한 패치 오퍼레이션이 단일 클록 사이클로 종료되게 하는 방법으로 패치 프로세서의 서브태스크를 수행하는 스테이지이거나, 포함하는 스테이지의 수와 등가의 다수의 클록 사이클로 패치 오퍼레이션이 완료되는 '독립적인' 서브스테이지일 수 있다. 그런데, 마이크로스테이지 및 독립 서브스테이지 모두를 포함하는 복잡한 스테이지가 존재할 수 있거나, 다른 다수의 스테이지가 나타날 수 있다. 도 1은 프로세서의 파이프라인의 레이-아웃 예만을 나타낸 것이고, 본 발명의 범위를 벗어남이 없이 그 밖의 배열이 가능하다. 더욱이, 처리 파이프라인은 상기 파이프라인을 통한 명령의 진행 중단을 이끄는 자극을 검출하기 위한 검출 수단(142)과, 명령 A를 직접 제1중간 파이프라인 스테이지(126) 내로 강제하기 위해 상기 검출 수단에 응답하는 삽입 수단(180)을 갖는데, 상기 스테이지는 상기 중단의 결과로서 이용 가능하게 된다. 검출 수단(142)에 있어서, 상기 자극은 파이프라인의 이 제2중간 스테이지 내에 상주하는 명령 B의 명령 타입으로부터 검출 가능하다. 본 발명의 실시예에 있어서, 검출 수단(142)은 비교기와 룩-업 테이블(LUT)을 구비하여 구성된다. 비교기는 명령과 연관된 전체 비트 패턴의 미리 정의된 프레그먼트를 LUT내에 저장된 비트 패턴의 수와 비교한다. 프레그먼트와 LUT 내의 비트 패턴 중 하나 사이의 성공적인 매칭 다음에, 검출 수단(142)은 수단(180)으로 지정된 신호를 전송함으로써 소정 타입의 명령이 검출되는 것을 삽입 수단(180)에 통지한다. 검출 수단(142)이 은닉하는 스테이지에 앞서 파이프라인 스테이지의 플러슁(flushing)을 트리거함으로써, 검출 수단(180)은 제어 신호에 응답하게 된다. 도 1에 있어서, 삽입 수단(180)과 플러쉬되는 포함된 파이프라인 스테이지 사이의 제어 메커니즘은 명확성을 위해서 생략된다. 이어서, 삽입 수단(180)은 삽입을 위해 적합한 명령 A를 선택해서 출력하게 되고, 제어 신호를 멀티플렉서(MUX;124)로 전송하는데, 이 멀티플렉서는 명령 A를 파이프라인의 스테이지(126) 내로 삽입하므로, 플러쉬된 사이클을 효과적으로 재사용한다. 그런데, 상기된 검출 수단(142)의 실현은 단지 하나의 실시예이고, 본 명세서에 기재된 기술로부터 벗어남이 없이 다양하게 실시될 수 있는 것은, 당업자에 있어서는 명백한것이다.
도 2에 기재된 본 발명의 실시예에 있어서, 삽입 수단(180)은 화살표 지적 방향으로 가리켜지는 도 2에 도시되지 않은 검출 수단(142)으로부터 들어오는 신호에 응답하는 제어 수단(282)을 구비하여 구성된다. 상기 신호는 제어 수단(282)을 트리거하게 되어, 파이프라인 내로 강제되는 명령 A를 선택하고 이어서 멀티플렉서(124)로 출력한다. 명령 A는 하드-코드의 방법, 예컨대 명령이 프로세서 코어의 실리콘 내에 매립되는 방법으로 시스템 내에 존재할 수 있다. 이는 작은 비구성 데이터 저장 장치(284) 형태를 취할 수 있는데, 여기서 명령 A는 필드(286) 중 하나 내에 저장될 수 있다. 하드-코드의 저장은 이러한 삽입 가능한 명령을 수행하는 저렴한 방법이다. 융통성의 부족은, 통상 명령 A가 일반적인 특성을 갖는다는, 예컨대 많은 다양한 명령 흐름 중단 이벤트(IFDE's)가 특정 명령의 삽입을 요구한다는 사실에 기인하는, 무시할 수 있는 제한이다. 그런데, 삽입 가능한 세트로 변경할 수 있는 것이 유익할 수 있는데, 이 경우 비구성 데이터 저장 장치(284)는 구성 가능한 메모리와 같은 구성 가능한 데이터 저장 장치에 의해 대체될 수 있다. 랜덤 액세스 메모리와 같은 구성 가능한 메모리의 사용은 프로그램-특정 IFDE 핸들링을 허락하는데, 이는 강화된 융통성 및 더욱 증가된 프로세서 성능을 이끌 수 있다.
선택적으로, 제어 수단(282)은 도시되지 않는 인터럽트 핸들러로부터 시작하는 인터펍트 라인(288)에 응답할 수도 있다. 이 방법은, 외부 하드웨어로부터의 인터럽트 요청의 수신에 따라서, 인터럽트 핸들러는 파이프라인 내로의 명령으로서인터럽트 콜의 삽입을 유도할 수 있는데, 이는 파이프라인에 이미 존재하는 명령을 간단히 덮어씀으로써 실현될 수 있다. 결과적으로, 검출 수단(142)은 이러한 마스크 가능한 인터럽트 명령, 예컨대 인터럽트 콜을 이 콜이 삽입 수단(180)에 의해 파이프라인 내로 삽입된 후 인식할 수 있고, 프로세서가 스택 상에 인터럽트 명령에 앞서 명령의 리턴 어드레스를 저장하게 하는 명령을 삽입하기 위해서 삽입 수단(180)을 강제할 수 있으므로, 인터럽트가 핸들링된 후의 덮어쓰여진 명령의 검색을 보장한다. 이러한 수행의 중요 장점은, 외부 인터럽트 요구를 핸들링하는 인터럽트 핸들러가 매우 간단하게 될 수 있거나, 또는 극단의 경우, 시스템으로부터 전체적으로 생략될 수 있어, 시스템의 복잡성 및 요구되는 하드웨어를 감소시키는 것이다.
상기된 배열의 추가적인 장점은, 실행 스테이지가, 예컨대 VLIW 프로세서와 같은 복수의 서브스테이지를 구비하여 구성되는 시스템, 특히 아키텍처에 요구되는 하드웨어의 중대한 감소이다. 이러한 아키텍처의 개략적인 예는 도 3에 주어진다. 여기서, 패치 스테이지(320) 및 디코더 스테이지(340)는, 복수의 스테이지(362a 내지 362e)를 구비하여 구성되는 복수의 실행 스테이지(360)에 선행한다. 이러한 아키텍처에 있어서, 실행 스테이지(362a 내지 362e) 각각은 IFDE를 검출하기 위한 수단을 요구할 수 있는데, 이는 결과적으로 상당한 제어 하드웨어를 이끌 수 있다. 디코더 스테이지(340) 내의 또는 자체의 서브스테이지 중 하나와 같이 파이프라인의 초기 스테이지 내에 검출 수단(142)을 도입함으로써, IFDE 검출이 분산된 스테이지의 수로부터 복수의 분산된 스테이지(362a 내지 362e)에 선행하는 파이프라인내의 중심 스테이지로 움직인다는 사실에 기인해서, 상당한 양의 하드웨어가 절약될 수 있다. 도 3은 단지 하나의 예로서 사용되고, 다양한 정도의 계층 및 복잡성을 갖는 그 밖의 아키텍처가 이러한 집중된 IFDE 검출 접근을 위해 균등하게 적합한 후보로 고려될 수 있다.
IFDE는, 오피코드의 자체의 지정된 부분으로부터 명령의 타입을 검출함으로써, 이들 수단에 의해 수신된 오피코드의 부분의 평가를 통해 검출 수단(142)에 의해 검출된다. 예컨대, 도 4a에 있어서는, RISC 프로세서를 위한 32비트 JumpAndLinkRegister(JALR) 명령은, 비트 0-5로 범위의 6비트 패턴을 포함하는 다수의 필드를 구비하여 구성된다. 이 비트 패턴은, 명령이 JALR 명령 타입의 실예인 것을 가리킨다. 프로그램 메모리 내의 JALR 명령의 모든 다양한 예는, 통상 이 6비트 식별자를 갖게 되므로, 이들을 클래스 또는 명령의 타입으로 인식할 수 있게 한다. 그런데, 이러한 검출은 도 4b의 명령(420a 내지 420n)을 구비하여 구성되는 명령 번들(420)과 같은 다중 명령 오피코드를 다룰 때 간단하지 않다. 명령(420a 내지 420n)의 원-바이-원 평가는, 특히 명령 번들(420)이 압축된 형태의 VLIW일 때, 명령 번들(420) 내의 명령 수의 증가에 따라 점점 복잡해지는데, 이 경우 압축 해제가 평가 전에 이루어져야 한다. 이러한 비트 패턴은, 예컨대 편집 프로세스의 명령 번들에 가산되는데, 편집 프로세스에서 본 발명에 따른 시스템의 실행을 위해 코드 모듈을 구비하여 구성되는 검퓨터 프로그램 프로덕트가 포맷된다.
운행 중의 시스템, 특히 오퍼레이션 사이클(520-28) 동안 임의 파이프라인 스테이지(500-508)를 통한 명령의 진행이 도 5에 묘사된다. 도 5는 I(n) 및I(n+1)의 레이블이 붙은 명령과, 이것이 파이프라인 플러쉬를 야기하게 되므로, 본 명세서에서 IFDE로 레이블이 붙는 명령 I(n-1)을 구비하여 구성되는 초기 명령 흐름의 진행을 묘사한다. 그러므로, 명령 IFDE는, 이 경우 I(n) 및 I(n+1)의 진행인 파이프라인을 통한 명령의 진행 중단을 이끄는 자극인데, 파이프라인 플러쉬에 의해 사이클(524)에서 중단된다. 이 파이프라인 플러쉬는 클록 사이클(524) 동안 스테이지(506) 내의 IFDE의 검출에 의해 야기되는데, 선행하는 스테이지(500-504)의 이어지는 플러쉬로 귀결되므로, 파이프라인 내의 스테이지(502 및 504)로부터 명령 I(n) 및 I(n+1)을 효과적으로 제거한다. 파이프라인 스테이지는 도 5에 감추어진 파이프라인 플러쉬에 의해 이용 가능하게 된다.
더욱이, 상기 자극의 검출에서, 상기 프로세서에 의해 상기 자극에 응답하기 위해 요구되는 명령 A는 제1중간 파이프라인 스테이지 내로 직접 강제되는데, 상기 중간 스테이지는 상기 중단의 결과로서 이용 가능하게 된다. 여기서, 도 5에서 INS로 레이블이 붙은 삽입된 명령 A는 스테이지 내로 삽입되는데, 이 스테이지로부터 명령 I(n)은 선행하는 파이프라인 플러쉬 동안 제거된다. 명확하게 하기 위해서, 명령 I(n) 내지 I(n+2)은 사이클(524)로부터 생략되므로, 사이클(524)의 플러쉬 후 파이프라인 상태를 효과적으로 나타낸다. 더욱이, 스테이지(500)의 명령 어드레스 카운터는 갱신되어, 스테이지(500)가 다음 사이클(526)의 적합한 명령 I(m)을 패치하는 것을 보장하므로, 명령 I(m) 및 이어지는 명령으로 명령 흐름이 변경한다.
또한, 프로세서가 프로세서 상태를 스택상에 저장하게 하거나 스택으로부터프로세서 상태를 검색하게 하는 명령 A(INS)의 삽입과 같은 파이프라인 흐름을 제어하는 명령을 삽입함으로써, 플러쉬된 파이프라인 스테이지를 재사용하는 것이 유용하다. 초기에 설명한 바와 같이, 인터럽트 핸들링의 복잡성 또는, 일반적으로 IFDE의 핸들링의 복잡성은 파이프라인 아키텍처의 복잡성과 비교된다. 명령 세트 내의 명령으로서의 이러한 스택 I/O 오퍼레이션의 통합은 이러한 명령의 삽입이 자체의 실행을 적어도 한 사이클 지연하므로, 스테이지(362a-362e)와 같은 오퍼레이션의 복수의 동시 발생의 실행 스테이지를 구비하여 구성되는 프로세서의 상태를 세이브하거나 재저장할 때 일어날 수 있는 복잡한 타이밍 이슈(timing issue)를 회피시키는 장점을 갖는다. IFDE를 수반하는 모든 그 밖의 명령이, 이들이 실행 스테이지에 도달할 수 있기 전에 파이프라인으로부터 플러쉬된다는 사실과의 조합에 있어서, 현재의 프로세서 상태는 정의에 의해 새롭게 정확하게 되어, 상기 제어 하드웨어를 중대하게 감소시킨다.
유사한 이유로, 본 발명의 실시예는 파이프라인 플러쉬를 야기하는 프로그램가능 명령인 명령 B(IFDE)와 프로세서가 리턴 어드레스를 스택 상에 저장시키게 하는 명령 A(INS)를 구비하여 구성된다. 이러한 프로그램 가능 명령은 상기된 JALR 명령일 수 있는데, 이 경우 명령 흐름은 인터럽트되어야 하고, 레지스터 필드의 내용은 검색되어야 한다. 동시에, 명령 흐름이 프로그램 실행의 후반 스테이지에서 자체의 중단된 지점으로부터 다시 계속되어야 하면, 리턴 어드레스 역시 저장되어야 한다. 삽입 메커니즘은 요구되는 제어 하드웨어 양을 감소시킬 뿐 아니라, 이들 경우에 있어서 파이프라인 스탤을 회피시킨다. 리턴 어드레스 명령의 삽입 없이, 자체의 레지스터 위치로부터 요구되는 명령 어드레스의 검색뿐 아니라 리턴 어드레스의 저장 모두는 동일 사이클 내의 데이터 버스의 충돌 액세스로 귀결되는데, 이는 통상 프로세서 아키텍처내의 임의 하드웨어를 포함시킴으로써 해결되어야 한다. 이들 2개의 리소스 의존 태스크를 분리함으로써, 파이프라인 흐름은 평활하게 되고, 제어 하드웨어의 양은 감소될 수 있다.
본 발명의 다양한 형태 및 장점은 상세한 설명으로부터 명백하고, 본 발명의 범위를 벗어남이 없이 이러한 형태 및 장점을 포함하는 청구항으로부터 발명될 수 있다. 다양한 변형 및 변경이 당업자에 있어서 가능하므로, 본 발명의 범위를 기재된 구성 및 동작에 한정하는 것은 바람직하지 못하고, 따라서 모든 적합한 변경 및 등가가 발명의 범위 내로 분류할 수 있다.

Claims (13)

  1. 파이프라인을 통한 명령의 진행 중단을 이끄는 자극(stimulus)를 검출하고,
    상기 자극의 검출에 따라서, 상기 프로세서에 의해 상기 중단의 결과로서 이용 가능하게 되는 제1중간 파이프라인 스테이지 내로 직접 상기 자극에 응답하기 위해 요구되는 명령 A를 강제하는 단계를 구비하여 이루어지는 프로세서의 파이프라인의 명령 흐름을 조작하기 위한 방법에 있어서,
    상기 자극이 파이프라인의 제2중간 스테이지 내에 상주하는 명령 B의 명령 타입으로부터 검출되는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 명령 A는 프로세서가 프로세서 상태를 스택 상에 저장하게 하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서, 상기 명령 A는 프로세서가 스택으로부터 프로세서 상태를 검색하게 하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서, 상기 명령 B는 상기 삽입 수단에 의해 상기 제1중간 파이프라인 스테이지 내로 삽입되는 인터럽트 콜인 것을 특징으로 하는 방법.
  5. 제1항에 있어서, 상기 명령 B는 파이프라인 플러쉬를 야기하는 프로그램 가능 명령인 것을 특징으로 하는 방법.
  6. 제5항에 있어서, 명령 A는 프로세서가 리턴 어드레스를 스택상에 저장하게 하는 것을 특징으로 하는 방법.
  7. 처리 파이프라인을 갖는 프로세서와,
    상기 파이프라인을 통한 명령의 진행 중단을 이끄는 자극을 검출하기 위한 검출 수단(142) 및,
    상기 스테이지가 상기 중단의 결과로서 이용 가능하게 되는 제1중간 파이프 스테이지(126) 내로 직접 명령 A를 강제하기 위해 상기 검출 수단에 응답하는 삽입 수단(180)을 구비하여 구성되는 명령 흐름을 조작하기 위한 시스템에 있어서,
    상기 자극이 파이프라인(142)의 제2중간 스테이지 내에 상주하는 명령 B의 명령 타입으로부터 검출 가능한 것을 특징으로 하는 시스템.
  8. 제7항에 있어서, 상기 명령 B는 복수의 명령을 구비하여 구성되는 명령 번들(420)의 엘리먼트이고,
    상기 파이프라인은 병렬 형식으로 상기 명령 번들(420)의 복수의 명령을 실행하기 위한 복수의 실행 스테이지(362)를 구비하여 구성되며,
    상기 검출 수단(142)은 복수의 실행 스테이지에 우선하는 것을 특징으로 하는 시스템.
  9. 제8항에 있어서, 상기 검출 수단(142)은 상기 명령 번들(420)에 첨부된 비트 패턴(440)을 평가하기 위해 배열되고, 상기 비트 패턴(440)은 상기 복수의 명령 중 상기 명령 타입의 존재를 표시하는 것을 특징으로 하는 시스템.
  10. 제8항 또는 제9항에 있어서, 상기 명령 번들(420)은 압축 형태의 베리롱인스트럭션워드(Very Long Instruction Word:VLIW)인 것을 특징으로 하는 시스템.
  11. 제7항 내지 제10항 중 어느 한 항에 있어서, 상기 삽입 수단에 의해 파이프라인 내로 강제되는 명령 A는 하드-코드의 방법으로 시스템 내에 존재하는 것을 특징으로 하는 시스템.
  12. 제7항 내지 제10항 중 어느 한 항에 있어서, 상기 삽입 수단에 의해 파이프라인 내로 강제되는 명령 A는 데이터 저장 장치(284) 내에 저장되는 것을 특징으로 하는 시스템.
  13. 제9항의 시스템에 의해 실행하기 위한 코드 모듈을 구비하여 구성되고, 상기 코드 모듈은 비트 패턴으로 확장된 명령을 구비하여 구성되고, 상기 비트 패턴은 상기 명령을 상기 시스템 중 하나의 검출 수단에 인식할 수 있게 만드는 것을 특징으로 하는 컴퓨터 프로그램 프로덕트.
KR10-2003-7010330A 2001-02-06 2002-01-14 인터럽트를 핸들링하기 위한 방법 및 장치 KR20030088892A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP01200425.5 2001-02-06
EP01200425 2001-02-06
PCT/IB2002/000091 WO2002063465A2 (en) 2001-02-06 2002-01-14 Method and apparatus for handling interrupts

Publications (1)

Publication Number Publication Date
KR20030088892A true KR20030088892A (ko) 2003-11-20

Family

ID=8179860

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7010330A KR20030088892A (ko) 2001-02-06 2002-01-14 인터럽트를 핸들링하기 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US20020116601A1 (ko)
EP (1) EP1366414B1 (ko)
JP (1) JP3905040B2 (ko)
KR (1) KR20030088892A (ko)
DE (1) DE60201511T2 (ko)
WO (1) WO2002063465A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495345B2 (en) 2009-02-03 2013-07-23 Samsung Electronics Co., Ltd. Computing apparatus and method of handling interrupt
KR20150112773A (ko) * 2014-03-28 2015-10-07 인텔 코포레이션 프로시저로부터의 리턴-타겟 제한적 리턴 명령어들, 프로세서들, 방법들 및 시스템들
US9983932B2 (en) 2010-05-27 2018-05-29 Samsung Electronics Co., Ltd. Pipeline processor and an equal model compensator method and apparatus to store the processing result

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3886870B2 (ja) * 2002-09-06 2007-02-28 株式会社ルネサステクノロジ データ処理装置
CN1555005A (zh) * 2003-12-29 2004-12-15 ����ͨѶ�ɷ����޹�˾ 动态循环流水线的交叠式命令提交方法
US7681022B2 (en) * 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism
CA2763328C (en) * 2012-01-06 2015-09-22 Microsoft Corporation Supporting different event models using a single input source
GB2569268B (en) * 2017-10-20 2020-09-09 Graphcore Ltd Controlling timing in computer processing

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0463966B1 (en) * 1990-06-29 1998-11-25 Digital Equipment Corporation High-performance multi-processor having floating point unit and operation method
WO1995006280A2 (en) * 1993-08-26 1995-03-02 Electronic Arts, Inc. Data transfer accelerating apparatus and method
US5867701A (en) * 1995-06-12 1999-02-02 Intel Corporation System for inserting a supplemental micro-operation flow into a macroinstruction-generated micro-operation flow
WO1999004334A1 (en) * 1997-07-16 1999-01-28 California Institute Of Technology Improved devices and methods for asynchronous processing
US5901309A (en) * 1997-10-07 1999-05-04 Telefonaktiebolaget Lm Ericsson (Publ) Method for improved interrupt handling within a microprocessor
US20020032558A1 (en) * 2000-03-10 2002-03-14 Paul Strong Method and apparatus for enhancing the performance of a pipelined data processor

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495345B2 (en) 2009-02-03 2013-07-23 Samsung Electronics Co., Ltd. Computing apparatus and method of handling interrupt
US9983932B2 (en) 2010-05-27 2018-05-29 Samsung Electronics Co., Ltd. Pipeline processor and an equal model compensator method and apparatus to store the processing result
KR20150112773A (ko) * 2014-03-28 2015-10-07 인텔 코포레이션 프로시저로부터의 리턴-타겟 제한적 리턴 명령어들, 프로세서들, 방법들 및 시스템들
US9703948B2 (en) 2014-03-28 2017-07-11 Intel Corporation Return-target restrictive return from procedure instructions, processors, methods, and systems

Also Published As

Publication number Publication date
WO2002063465A2 (en) 2002-08-15
EP1366414B1 (en) 2004-10-06
US20020116601A1 (en) 2002-08-22
JP2004523040A (ja) 2004-07-29
EP1366414A2 (en) 2003-12-03
DE60201511T2 (de) 2005-10-20
DE60201511D1 (de) 2004-11-11
JP3905040B2 (ja) 2007-04-18
WO2002063465A3 (en) 2002-10-10

Similar Documents

Publication Publication Date Title
US6647489B1 (en) Compare branch instruction pairing within a single integer pipeline
KR100284789B1 (ko) N-지로 분기를 갖는 슈퍼스칼라 또는 초장 명령어 워드컴퓨터에서 다음 명령어를 선택하는 방법 및 장치
EP0448499B1 (en) Instruction prefetch method and system for branch-with-execute instructions
US7299343B2 (en) System and method for cooperative execution of multiple branching instructions in a processor
EP1023659B1 (en) Efficient processing of clustered branch instructions
US8140829B2 (en) Multithreaded processor and method for switching threads by swapping instructions between buffers while pausing execution
KR100407014B1 (ko) 명령어 히스토리 정보를 갖는 기본 블럭 캐쉬마이크로프로세서
JPH06236271A (ja) プロセッサおよび命令推測実行方法
KR20020025687A (ko) 마이크로프로세서의 명령 처리 방법 및 마이크로프로세서
KR20090094335A (ko) 서브루틴 호를 인지하기 위한 방법들 및 장치
EP1387259B1 (en) Inter-processor control
US6647488B1 (en) Processor
US7017030B2 (en) Prediction of instructions in a data processing apparatus
US20040064684A1 (en) System and method for selectively updating pointers used in conditionally executed load/store with update instructions
US5146570A (en) System executing branch-with-execute instruction resulting in next successive instruction being execute while specified target instruction is prefetched for following execution
US20060149927A1 (en) Processor capable of multi-threaded execution of a plurality of instruction-sets
US7596681B2 (en) Processor and processing method for reusing arbitrary sections of program code
KR20030088892A (ko) 인터럽트를 핸들링하기 위한 방법 및 장치
US6154833A (en) System for recovering from a concurrent branch target buffer read with a write allocation by invalidating and then reinstating the instruction pointer
EP0354585A2 (en) Instruction pipeline microprocessor
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
KR100374401B1 (ko) 마이크로 명령을 기초로 프로그램 가능한 명령을 실행하는하드웨어 장치
US20030028696A1 (en) Low overhead interrupt
JP2000020307A (ja) 分散命令完了論理
US20040111592A1 (en) Microprocessor performing pipeline processing of a plurality of stages

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
SUBM Surrender of laid-open application requested