KR101673990B1 - 프로그램가능 예외 처리 지연 - Google Patents

프로그램가능 예외 처리 지연 Download PDF

Info

Publication number
KR101673990B1
KR101673990B1 KR1020117026605A KR20117026605A KR101673990B1 KR 101673990 B1 KR101673990 B1 KR 101673990B1 KR 1020117026605 A KR1020117026605 A KR 1020117026605A KR 20117026605 A KR20117026605 A KR 20117026605A KR 101673990 B1 KR101673990 B1 KR 101673990B1
Authority
KR
South Korea
Prior art keywords
cpu
exception
instruction
cycles
delay
Prior art date
Application number
KR1020117026605A
Other languages
English (en)
Other versions
KR20120036301A (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 KR20120036301A publication Critical patent/KR20120036301A/ko
Application granted granted Critical
Publication of KR101673990B1 publication Critical patent/KR101673990B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

프로그램가능 예외 처리 지연을 갖는 디지털 프로세서는, 디지털 프로세서의 중앙처리장치(CPU); 상기 CPU와 연결된 예외 컨트롤러; 및 상기 CPU와 연결된 제어 레지스터를 구비하고, 상기 제어 레지스터는 두개의 모드들 중 적어도 하나에서 상기 CPU의 동작 모드를 세트하도록 동작가능하고, 제1 모드에서 상기 CPU는 일정한 예외 처리 지연 시간을 가지며, 제2 모드에서 상기 CPU는 가변 예외 처리 지연 시간을 갖는다.

Description

프로그램가능 예외 처리 지연{PROGRAMMABLE EXCEPTION PROCESSING LATENCY}
본 발명은 디지털 프로세서들에 관한 것으로, 특히 디지털 프로세서에서의 예외 지연에 관한 것이다.
일반적으로 디지털 프로세서들은 프로그램 메모리에 저장된 순차적 실행 명령들에 의해 처리 클록과 동기적으로 동작한다. 하지만, 이러한 프로세서들은 외부 디바이스들과 인터페이싱하여야 한다. 하나의 인터페이싱 수단은 소위 인터럽트에 의해 수행된다. 이러한 이벤트는 프로그램의 순차적인 실행을 인터럽트하고 프로세서가 소위 인터럽트 서비스 루틴을 실행하는 예외 상태로 프로세서가 들어가도록 한다. 이 서비스 루틴동안 외부 이벤트가 처리된다. '정상적인' 프로그램의 동기적인 실행과 달리, 인터럽트 신호는 일반적으로 비동기적으로 발생한다. 즉, 이러한 외부 신호는 현재 처리된 명령의 실행동안 언제든지 발생할 수 있다. 이러한 인터럽트는 일반적으로 다음 사이클에서 에크된다. 인터럽트를 전처리하기 위해, 구현에 따라, 현재 처리중인 명령 또는 다음 명령도 일반적으로 프로세서가 인터럽트되기 전에 실행된다. 외부 인터럽터의 발생 시간에서 서비스 루틴이 실제 실행되는 시간까지를 지연 시간(latency)이라 한다. 이 지연시간은 프로세서의 각각의 설계에 의존하며 여러 타입으로 변할 수 있다.
많은 디지털 프로세서들은 가변 실행 시간의 명령들을 갖는다. 하지만, 이러한 프로세서들이 포함되는 많은 설계들은 프로세스들이 적절히 제어될 수 있도록 기지의 인터럽트 지연 시간을 필요로 한다. 따라서, 디지털 프로세서들은 때때로 일정한 인터럽트 지연시간을 갖도록 설계된다. 일정한 지연시간을 갖는 이러한 디지털 프로세서들에서, 예외 처리 프리앰블은 가장 긴 명령의 완료를 수행하기에 충분할 만큼 길어야 한다. 만약 그렇지 않으면, 인터럽트 어서션(assertion)과 ISR(Interrupt Service Routine)의 시간 사이의 지연시간은 예외시에 중앙처리장치(CPU)가 실행중이었던 명령에 따라 변하여 "지연 시간 지터"를 도입할 수 있다. 일정한 지연 시간은 "지연 시간 지터" 문제를 해결하지만 인터럽트 응답 시간이 소모된다. 깊은 명령 파이프라인들 및/또는 명령 프리-페치 로직을 갖는 CPU들에 있어서, 일정한 지연 시간을 지원하는데 필요한 최악의 경우에 대비한 프리엠블이 매우 길어질 수 있다. 이는 사용자에게 구속감을 줄 수 있다.
따라서, 전처리 인터럽트들을 다루는데 있어 보다 유연한 프로세서에 대한 요구가 있다.
일실시예에 따르면, 프로그램가능 예외 처리 지연을 갖는 디지털 프로세서는, 가변 실행 시간들(variable execution times)에 따라 명령어들을 실행하도록 동작 가능한 디지털 프로세서의 중앙처리장치(CPU); 상기 CPU와 결합된 예외 컨트롤러; 및 상기 CPU와 결합된 제어 레지스터를 포함하고, 상기 CPU가 예외 신호를 수신할 때 최소 예외 지연 시간은 상기 CPU에 의해 예외가 제공될 수 있기 전에 실행되어야 하는 명령어의 실행 시간에 의존하고, 상기 제어 레지스터는 두 개의 모드들 중 적어도 하나에서 상기 CPU의 동작 모드를 세트하도록 동작가능하고, 제1 모드에서 상기 CPU는 일정한 예외 처리 지연 시간을 가지며, 제2 모드에서 상기 CPU는 상기 최소 예외 지연 시간인 가변 예외 처리 지연 시간을 갖는다.
추가 실시예에 따르면, 명령어는 실행을 위해 n개의 사이클들을 필요로 하고, n은 0보다 큰 정수이고, 그리고 상기 CPU의 명령어 세트는 실행을 위해 서로 다른 개수의 사이클들을 필요로 하는 적어도 두 개의 서로 다른 유형들의 명령어를 포함할 수 있다. 추가 실시예에 따르면, 상기 CPU는 하나의 사이클에서 제 1 세트의 명령어들을 실행하고 두 개의 사이클들에서 제 2 세트의 명령어들을 실행하도록 동작 가능하다. 추가 실시예에 따르면, 상기 제어 레지스터는 프로그램가능한 지연 선택 비트를 포함할 수 있다. 추가 실시예에 따르면, 상기 제어 레지스터 내의 상기 지연 선택 비트는 소프트웨어 애플리케이션에 따라 동적으로 프로그램가능하다. 추가 실시예에 따르면, 상기 제2 모드는 예외의 지연이 소정의 임계치보다 작거나 같은 경우에만 선택될 수 있다. 추가 실시예에 따르면, 상기 소정의 임계치는 프로그램가능하다. 추가 실시예에 따르면, 상기 소정의 임계치는 상기 제어 레지스터 내에 저장될 수 있다. 추가 실시예에 따르면, 상기 디지털 프로세서는 상기 CPU 내의 실행 유닛을 스톨링(stalling)하기 위한 신호를 발생시키도록 동작가능한 카운터를 더 포함할 수 있다. 추가 실시예에 따르면, 상기 디지털 프로세서는 마이크로컨트롤러 또는 디지털 신호 프로세서일 수 있다.
또 하나의 실시예에 따르면, 가변 실행 시간들에 따라 명령어들을 실행하도록 동작 가능한 중앙처리장치(CPU)를 포함하는 프로세서에서 예외를 처리하기 위한 방법으로서, 상기 CPU가 예외 신호를 수신할 때 최소 예외 지연 시간은 상기 CPU에 의해 예외가 제공될 수 있기 전에 실행되어야 하는 명령어의 실행 시간에 의존하고, 상기 방법은, 상기 프로세서를 위한 적어도 두 개의 동작 모드들 중 하나를 세트하는 단계; 상기 CPU가 예외를 수신하는 단계; 상기 예외를 전처리하는 단계; 및 예외 서비스 루틴을 실행하는 단계를 포함하고, 제1 모드에서 상기 CPU는 일정한 예외 처리 지연 시간을 가지며, 제2 모드에서 상기 CPU는 상기 최소 예외 지연 시간인 가변 예외 처리 지연 시간을 갖는다.
상기 방법의 추가 실시예에 따르면, 상기 CPU를 위한 적어도 두 개의 동작 모드들 중 하나를 세트하는 단계는 제어 레지스터 내의 지연 선택 비트를 프로그래밍함으로써 수행될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 제어 레지스터 내의 상기 지연 선택 비트는 소프트웨어 애플리케이션에 따라 동적으로 프로그래밍될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 제2 모드는 예외의 지연이 소정의 임계치보다 작거나 같은 경우에만 선택될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 소정의 임계치는 프로그램가능하다. 상기 방법의 추가 실시예에 따르면, 상기 소정의 임계치는 상기 제어 레지스터 내에 저장될 수 있다. 상기 방법의 추가 실시예에 따르면, 처리중인 명령어가 상기 예외 서비스 루틴의 실행 전에 실행되고, 상기 처리중인 명령어는 실행을 위해 특정 개수의 처리 사이클들을 필요로 하고, 그리고 상기 프로세서는 실행을 위해 최소량의 처리 사이클들과 최대량의 처리 사이클 중 적어도 하나를 필요로 하는 복수의 명령어들을 실행할 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 제1 모드에서 명령어가 필요로 하는 제1 개수의 처리 사이클들은 상기 CPU의 명령어 세트의 임의의 명령어가 필요로 하는 최대량의 처리 사이클들까지 연장될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 제1 개수의 처리 사이클들은 하나 이상의 무동작 명령어들을 삽입함으로써 연장될 수 있다. 상기 방법의 추가 실시예에 따르면, 상기 제1 개수의 처리 사이클들은 상기 프로세서를 스톨링함으로써 연장될 수 있다. 상기 방법의 추가 실시예에 따르면, 제1 개수의 처리 사이클들이 소정 개수의 사이클들보다 적으면, 명령어의 상기 제1 개수의 처리 사이클들은 단지 하나 이상의 무동작 명령어들을 상기 소정 개수의 사이클들에 삽입함으로써 연장될 수 있다.
본 발명이 특정 실시예를 참조하여 특별히 도시되고 설명되었지만, 이러한 참조는 본 발명의 한정을 내포하지 않고 이러한 한정을 의미하지도 않는다. 개시된 본 발명은 이 기술분야의 당업자에 의해 형태와 기능에 있어서 수정물, 대체물, 및 등가물이 고려될 수 있다. 본 발명의 도시되고 설명된 실시예들은 단지 예로서, 본 발명의 범위를 한정하지 않는다.
첨부한 도면과 관련된 다음의 설명을 참조하면 본 발명과 그 장점들을 보다 완전히 이해할 수 있다.
도 1은 일실시예에 따른 CPU 및 관련 인터럽트 컨트롤러의 블록도이다.
도 2 내지 4는 일정한 인터럽트 지연들의 타이밍도이다.
도 5는 제1 실시예의 주요 동작을 나타낸 흐름도이다.
도 6은 제2 실시예의 주요 동작을 나타낸 흐름도이다.
도 7 내지 14는 일정한 지연에 대한 타이밍도이다.
도 15 내지 19는 가변 지연에 대한 타이밍도이다.
도 20은 인터럽트 리턴 타이밍도이다.
본 발명이 특정 실시예를 참조하여 특별히 도시되고 설명되었지만, 이러한 참조는 본 발명의 한정을 내포하지 않고 이러한 한정을 의미하지도 않는다. 개시된 본 발명은 이 기술분야의 당업자에 의해 형태와 기능에 있어서 수정물, 대체물, 및 등가물이 고려될 수 있다. 본 발명의 도시되고 설명된 실시예들은 단지 예로서, 본 발명의 범위를 한정하지 않는다.
본 발명에 따르면, 적어도 두개의 모드들에서 동작하는 프로세서가 설계될 수 있는데, 제1 모드는 모든 예외들이 동일한 지연을 갖는 일정한 지연을 제공한다. 예외가 발생되는 처리중인 명령에 의존하는 가변 지연을 프로세서가 가지는 제2 모드가 세트될 수 있다. 예외는 모든 종류의 외부 또는 내부 인터럽트 또는 처리장치내에서 야기된 트랩일 수 있다. 처리중인 명령은 예외가 처리되기 전에 실행되어야 하는 명령으로서 이해되어야 한다. 많은 프로세서 아키텍쳐들에서, 이 명령은 예외가 발생하는 사이클에 이은 사이클에서 실행되는 명령이다. 하지만, 실시예에 따라, 이는 인터럽트가 발생하는 동안 처리중인 명령일 수도 있다. 예를 들어 제1 또는 제2 모드를 선택하는 비트를 제공하는 제어 레지스터가 사용될 수 있다. 하지만, 특정 동작 모드들을 알리기 위한 다른 수단(예를 들면, 프로세서 칩의 핀에 공급되는 외부 신호)이 사용될 수 있다. 이는 일정한 지연을 필요로 하는 섹션들과 그렇지 않은 다른 섹션들을 포함하는 프로그램들에서 동작 모드를 동적으로 바꿀 수 있게 한다.
예를 들면, 일실시예에 따르면, 디지털 프로세서의 중앙처리장치(CPU)의 예외 처리 흐름을 수정하기 위해 CPU의 제어 레지스터에 저장된 제어 비트가 부가될 수 있다. 이 비트가 소거되면, CPU에 의해 종래의 일정한 지연이 지원된다. 이 비트가 세트되면, 하나의 사이클 명령을 완료하는데 필요한 예외 처리 흐름은 그 이후에 프리엠블을 패딩하지 않는다. 필요한 경우에만 예외 지연에 부가되는 예외 처리는 긴 명령들동안 중지된다. 예외 응답 시간이 유동적이더라도, 전형적으로는 일정한 지연 옵션의 것 이상으로 개선될 것이다.
또한, 사용자는 얼마나 많은 추가적인 최악의 경우를 대비한 지연 및 "지연 지터"가 어떤 (긴) 명령들의 실행을 제한함으로써 수용될 수 있는지를 선택할 수 있다. 어떤 애플리케이션 코드가 실행에 필요한지에 따라 일정한 지연과 가변 지연 사이를 동적으로 스위칭하는 것은 본 발명의 범위내에 있다.
어떤 디지털 프로세서들(예를 들면, 마이크로컨트롤러들)은 하나의 사이클 동작들인 명령들을 대부분 이용하지만 한 사이클 이상을 필요로 하는 하나 이상의 명령들을 제공할 수도 있다. 따라서, 명령 완료에 의한 예외 지연은 일반적으로 짧다. 그래서, 가변 지연 예외 처리 흐름의 지원은 거의 항상 지연 개선을 가져올 수 있다.
많은 애플리케이션들은 서로다른 동작 모드들을 갖는다. 특정 경우에, 어떤 모드들은 일정한 지연 예외들에 보다 더 적합하고, 다른 모드들은 가변 지연 예외들에 보다 더 적합할 수 있다. 따라서, 일정한 지연과 가변 지연 사이를 선택하기 위한 사용자 프로그램가능 제어 비트를 가짐으로써 사용자는 예외 지연 동작 모드들(일정한 지연 대 가변 지연)을 동적으로 스위칭할 수 있다.
도 1은 인터럽트 또는 트랩을 발생시키는 예외 컨트롤러(120)와 연결된 중앙처리장치(CPU)(110)를 포함하는 시스템(100)의 간략화된 블록도이다. CPU(110)는 명령들, 예를 들어 실행 파이프라인을 실행하기 위한 실행 유닛을 포함할 수 있다. 이 예외 컨트롤러는 예를 들어 복수의 인터럽트 신호들을 수신할 수 있는 인터럽트 컨트롤러일 수 있다. 예외 컨트롤러(120)가 예를 들어 인터럽트 컨트롤러이면, 이것은 CPU(110)에 공급되는 단일 인터럽트 신호 Int를 발생시킬 것이다. CPU는 각 신호 Ack로 인터럽트 신호를 에크할 수 있다. 인터럽트 컨트롤러(120)는 이 기술분야에서 잘 알려진 우선순위 처리 등의 메커니즘을 포함할 수 있다. 또한, CPU는 우선순위 메커니즘을 기반으로 하여 둘 이상의 인터럽트 신호를 처리하도록 설계될 수 있다. 도 1은 예외인 것으로 고려되지 않지만 그러한 것으로 고려될 수도 있는 CPU(110)에 공급되는 리셋 신호를 나타낸다. CPU와 연결된 동작 모드 레지스터(130)가 제공된다. 이 레지스터(130)는 CPU(110)가 동작하여야 하는 모드를 CPU(110)에 알리는 하나 이상의 비트들을 포함할 수 있다. 예를 들면, 단일 비트가 사용될 수 있으며 이 비트는 다른 동작 모드들 또는 구성들을 결정할 수 있는 일반적인 동작 모드 레지스터의 일부일 수 있다. 이 레지스터는 아래에 보다 상세히 설명될 모드 스위치를 트리거하기 위한 임계치를 저장할 수 있다. 듀얼 모드 시스템에서, 1로 세트되면, 이 비트는 CPU(110)가 가변 예외 지연으로 동작되게 하는데, 예외 지연은 예외가 발생되었을 때 어떤 타입의 명령이 처리중이었는지에 의존한다. 이 비트가 0으로 세트되면, CPU는 일정한 지연으로 동작하는데, 짧은 명령들을 실행 유닛으로 강제함으로써 짧은 명령들이 NOP(no-operation) 사이클들로 패딩되거나 또는 실행 유닛(140)은 최대 펜던시(pendency), 즉 프로세서가 실행할 수 있는 모든 명령의 가장 긴 실행시간까지 모든 처리중인 명령의 실행 시간을 연장시키도록 스톨링된다. 이를 위해, 일실시예에 따르면, 필요한 FNOP(forced no-operation) 사이클들을 카운트하거나 필요한 지연 신호들을 제공하기 위해 스톨 카운터(150)가 구현될 수 있다.
도 2는 단일 사이클 명령들을 위한 무동작 사이클들을 갖는 패딩의 일예를 나타낸 도면이다. 하지만, 지연을 연장하기 위한 다른 수단이 사용될 수 있다. 예를 들면, 실행 시간을 연장하기 위한 모든 종류의 프로세서 스톨링이 사용될 수 있다. 도 2에서, 한 사이클 명령동안 주변 인터럽트가 어서트되는 경우의 이벤트들의 시퀀스가 도시되어 있다. 인터럽트 처리는 4개의 명령 사이클을 이용한다. 각 사이클은 참조를 위해 도 2에서 번호로 구별된다. 인터럽트 플래그 상태 비트는 주변 인터럽트가 발생한 후 명령 사이클동안 세트된다. 현재 또는 처리중 명령 INST(PC)는 이 명령 사이클동안 완료된다. 인터럽트 이벤트 후의 제2 명령 사이클에서, PC(program counter) 및 SRL(status register) 레지스터들의 컨텐츠들은 임시 버퍼 레지스터에 세이브된다. 인터럽트 프로세스의 제2 사이클은 보다 긴 두 사이클 명령동안 취한 시퀀스와의 일관성을 유지하기 위해 무동작 명령 FNOP(패딩)으로서 실행된다. 제3 사이클에서, PC는 인터럽트 소스를 위해 벡터 테이블 어드레스가 로딩되고 ISR(interrupt service routine)의 시작 어드레스가 페치된다. 제4 사이클에서, PC는 ISR 어드레스가 로딩된다. 제4 사이클은 ISR에서의 제1 명령이 페치되는 동안 FNOP로서 실행된다. 이 제4 사이클은 모든 명령에 필요할 수 있으며 상술한 패딩으로서 고려되지 않는다. 다른 프로세서 아키텍쳐들은 어떠한 타입의 무동작 명령 삽입도 필요로 하지 않는 다른 실행 메커니즘을 포함할 수 있으며 처리중 명령의 실행을 스톨링하기 위한 다른 수단을 가질 수 있다. 여기에 설명된 원리들은 이러한 설계들에 동등하게 적용된다.
도 3 및 4는 두개의 사이클 명령의 예들을 나타낸 도면이다. 일정한 지연 모드에서, 두 사이클 명령동안의 인터럽트 지연은 한 사이클 명령동안과 동일하다. 인터럽트 프로세스의 제1 및 제2 사이클은 두 사이클 명령이 실행을 완료하게 한다. 도 3의 타이밍도는 두 사이클 명령의 실행에 앞서 주변 인터럽트 이벤트가 명령 사이클에서 발생한 경우를 나타낸다. 도 4는 주변 인터럽트가 두 사이클 명령의 제1 사이클과 일치하는 경우의 타이밍을 나타낸다. 이 경우에, 인터럽트 프로세스는 도 2에 도시한 것과 유사한 FNOP 명령의 삽입에 의해 한 사이클 명령으로서 완료된다. 가변 모드에 대하여, 이러한 패딩 또는 스톨링은 수행되지 않는다. 따라서, 예외가 발생될 때 어느 명령이 처리중인지에 따라 명령에서 명령으로 변할 수 있다.
도 5는 상술한 원리들에 따른 흐름도를 나타낸다. 단계(500)에서, 인터럽트 신호가 CPU에 의해 수신된다. 단계(510)에서 인터럽트의 전처리가 시작된다. 단계(510)에서 단계(560)까지 지속되는 전처리 동안, 소위 하우스 클리닝이 수행된다. 예를 들면, PC(program counter) 및 SR(status register)이 스택으로 푸시된다. 다른 변수들도 세이브될 수 있다. 하지만, 다른 레지스터들은 인터럽트 서비스 동안에 세이브될 수 있기 때문에, 대부분의 프로세서들은 PC 및 SR만을 세이브할 필요가 있다. 단계(520)에서, 가변 또는 일정한 지연 모드가 사용될 것인지가 체크된다. 일정한 지연 모드의 경우에, 어느 명령이 현재 처리중인지가 단계(530)에서 결정된다. 그리고, 이는 인터럽트 서비스 루틴이 시작될 수 있기 전에 실행 또는 완료되어야 하는 명령이며, 따라서 실제 인터럽트의 발생과 관련하여, 이것이 어느 명령인지는 프로세서 설계에서 프로세서 설계까지 변할 수 있다. 단계(540)에서, 이 처리중 명령이 패딩 또는 스톨링을 필요로 하는지 그리고 얼마나 많은 추가 사이클들이 필요한지가 결정된다. 예를 들면, 실행될 수 있는 가장 긴 명령이 5 사이클을 필요로 하고 가장 짧은 명령이 1 사이클을 필요로 하면, 1-사이클 명령은 4 NOP(no-operation) 사이클들로 패딩되거나 각각 스톨링되어야 한다. 이러한 프로세서에서, 2-사이클 명령은 3-4 NOP 사이클들로 패딩되고, 3-사이클 동작은 2-4로, 4-사이클은 1-4로, 5-사이클 명령은 0-4 사이클들로 패딩될 수 있으며, 패딩 NOP들의 개수는 어느 사이클동안 인터럽트가 발생되는지에 의존한다. 단계(550)에서, 인터럽트 서비스 루틴 실행이 시작되기 전에 부가적인 NOP 사이클들이 부가된다. 전-인터럽트 처리는 단계(560)에서 종료된다. 가변 모드의 경우에, 루틴은 단계(560)으로 점프하며, 즉 패딩이 수행되지 않는다.
도 6은 가변 또는 일정한 지연을 갖는 또 하나의 실시예를 나타낸 도면으로서 일정한과 가변 사이의 임계치는 프로그램가능하다. 이 실시예에 따르면, 한 모드에서 미리결정된 시간 주기 X 보다 작은 지연을 갖는 모든 명령들을 위해 일정한 지연이 수행될 수 있다. 이 모드에서, 모든 다른 명령들은 가변 지연을 유발시킨다. 다른 모드는 도 5와 관련하여 설명된 가변 모드에 해당한다. 이를 위해, 단계들(600,610,660)은 각각 단계들(500,510,560)에 대응된다. 단계(620)에서, 지연 조정이 수행되어야 하는지가 결정되고, 그렇지 않으면 가변 지연은 도 5에 설명과 것과 유사하게 수행된다. 이 단계는 점선으로 나타낸 것처럼 생략될 수 있으며 대신에 프로그램가능 임계치만이 두 모드들 중 하나를 트리거할 수 있다. 또 하나의 실시예에 따르면, 많은 임계치들이 제공될 수 있으며 제어 레지스터는 다양한 임계치들 중 하나를 선택할 수 있다. 단계(630)에서, 현재 처리중인 명령이 결정된다. 단계(640)에서, 얼마나 많은 사이클들이 남아있는지 결정된다. 사이클들의 개수가 X 보다 작으면, 각 패딩이 단계(650)에서 수행되며, 그렇지 않으면 루틴은 단계(660)로 점프된다. 이 실시예는 보다 유연하며 제한된 패딩을 제공한다. 1-5 사이클을 필요로 하는 명령을 갖는 예에서, 프로그램은 1, 2 또는 3 사이클을 갖는 명령만을 포함할 수 있다. 여기서, X=3을 세팅함으로써 이러한 타입의 명령에 제한이 적용될 수 있다. 따라서, 1, 2, 또는 3 사이클을 필요로 하는 명령은 모두 3-사이클 지연의 최대 지연을 발생시킨다. 4-사이클 또는 5-사이클 명령이 실행되는 경우에, 지연은 각각 증가된다. 하지만, 위에 설명된 것과 같이, 사용자는 특정 프로그램 또는 모듈에서 이러한 명령을 사용할 수 없으며, 따라서 일정한 지연을 갖는 종래의 프로세서가 5-사이클 명령에 의해 야기되는 것 이상으로 인터럽트 지연을 줄일 수 없더라도 일정한 최소 지연을 보장할 수 있다.
또 하나의 실시예에 따르면, 많은 일정한 지연 및 가변 지연의 컨셉은 예외 우선순위 레벨들과 연결될 수 있다. 각 모드를 수동으로 프로그래밍하는 대신에, 각 프로그램가능 지연의 자동 스위치는, 프로세서가 동작을 위해 현재 세트된 우선순위 레벨과 연결된다. 이를 위해, 각 지연 타입을 각 예외 우선순위 레벨에 할당하는 하나 이상의 제어 레지스터들, 예를 들어 도 1에 도시한 하나 이상의 특수 기능 레지스터들(160)이 제공될 수 있다. 일실시예에 따르면, 예를 들어 에러 상태에 대한 고속 응답을 위해 최고 우선순위 인터럽트가 가변 지연에 할당될 수 있다. (에러 상태들이 발생되지 않는다는 가정하에) 보장된 응답 시간을 위해 다음으로 낮은 우선순위 인터럽트가 각각 선택된 일정한 지연에 할당될 수 있다. 다른 우선순위 레벨들은 다르게 할당된 지연 시간들을 가질 수 있다. 네스팅이 인에이블되면, 모든 다른 낮은 우선순위 인터럽트들은 가변적이거나 일정할 수 있는데, 여기서 일정한 지연은 모든 낮은 우선순위 예외들을 위해 보장되지 않을 수 있다. 소프트웨어 예외들(예를 들면 트랩들)에 특정 지연들이 할당되거나 또는 항상 가변 지연으로 동작하도록 구성될 수 있다.
마이크로컨트롤러의 특정 실시예와 관련하여 예외(인터럽트) 처리의 보다 상세한 설명은 도 7 내지 20에 도시된 다양한 타이밍도들과 관련하여 아래에 뒤따른다.
이 특정 실시예에 따르면, CPU는 우선순위가 결정된 인터럽트 및 트랩 예외 방식을 지원할 수 있다. 예를 들면, 최대 7 레벨의 CPU 인터럽트 우선순위 및 인터럽트들을 위한 최대 62 레벨의 미리결정된(일정한) '자연율' 우선순위가 있을 수 있다. 각 인터럽트 소스는 일정한 '자연율' 우선순위를 갖지만 사용하는 CPU 우선순위와 관련하여 사용자가 프로그램가능하다. 최고 우선순위 인터럽트는 마스크 불가능하다. 내부 예외들에 사용될 수 있는 이용가능한 8개의 트랩들이 있다. 6개의 슬롯들이 동작 강건성을 개선시키기 위해 현재 구현되며, 이들 모두는 마스크 불가능하다. 이것들은 미리결정된 우선순위 방식을 따른다. 예외들 및 서브루틴 호출들과 관려된 스태킹은 소프트웨어 스택에서 실행된다. 레지스터 W15는 스택 포인터로서 전용되며 LSB=0을 갖는다.
인터럽트 컨트롤러 모듈은 디바이스 주변기기들로부터의 모든 IRQ(Interrupt ReQuest) 신호들을 어셈블링하고 각 IRQ 신호에 일정한 '자연율' 우선순위 및 사용자 할당 우선순위를 할당한다. 인터럽트들은 트랩들과 결합되며 현재 CPU 우선순위와 비교된다. 그리고, (CPU 우선순위가 최고 레벨 언마스크드 인터럽트 요구의 우선순위보다 낮으면) 트랩 또는 인터럽트는 벡터 번호 및 업데이트된 CPU 우선순위값과 함께 프로세서 코어에 제공된다. CPU 우선순위 레벨은 4 비트 값 IPL<3:0>으로 정의된다. IPL<3>은 모드 제어 레지스터 CORCON<3>에 위치하고, IPL<2:0>은 SR에 위치한다. IPL<3> 비트는 항상 읽혀질 수 있으며, 인터럽트 명령으로부터의 복귀(RETFIE)를 실행하지 않고 슈퍼바이져 트랩 핸들러들이 다른 프로세스로 점프할 수 있도록 소프트웨어에 의해 소거될 수 있다. 어떤 경우에(예를 들면, 스택 에러 트랩동안) RETFIE의 실행은 옵션이 아니며, 그래서 IPL<3>을 수동으로 소거하며, 머신의 적절한 부분들의 재초기화는 풀 리셋에 좋은 선택이다. 네스트 및 언네스트 예외들은 제어 레지스터 INTCON1<15>내의 NSTDIS 제어 비트를 통해 지원된다. 네스트 예외들은 디폴트 아웃 오브 리셋에 의해 인에이블되지만 NSTDIS 비트를 세트함으로써 디스에이블될 수 있다. 언네스트 인터럽트 동작은 콜링 인터럽트 우선순위에 관계없이 모든 인터럽트들의 우선순위들이 7로 강제되는 점을 제외한 모든 측면들에서 네스트 인터럽트 동작과 동일하다. 그 결과, CPU 우선순위는 예외 처리동안 모든 인터럽트들에 대하여 항상 7로 세트될 것이다. CPU 인터럽트 우선순위는 예외 처리동안 자동적으로 수정된다. 하지만, 제공된 인터럽트 네스팅은 인에이블되고(NSTDIS=0), IPL<2:0>은 읽기/쓰기 비트들이고 CPU 인터럽트 우선순위를 동적으로 수정되도록 사용자에 의해 조정될 수 있다. 인터럽트 네스팅이 디스에이블되면(NSTDIS=1), IPL<2:0>은 사용자가 CPU 인터럽트 우선순위를 우연히 드랍시키고 (어떤 처리중인 인터럽트들이 네스트되지 않도록) 읽기 전용 비트들이 된다. (예외가 처리중이고 NSTDIS 비트가 소거되면) 현재 CPU 우선순위(IPL<3:0>)보다 큰 우선순위의 어떤 예외가 취해지고 네스트될 것이다. 현재 CPU 우선순위 IPL<2:0>은 SR로 스태킹되고, IPL3는 PCH로 스태킹된다. 모든 예외들에 대한 스태킹 시퀀스는 다음과 같다.
·PCL<15:1> → TOS<15:1>; SFA → TOS<0>
·(W15)+2 → W15
·(SR<7:0>) → TOS<15:8>,(IPL<3>:PC<22:16>)→TOS<7:0>
·(W15)+2 → W15
·0 → SFA
이 실시예에서 예외 처리는 CALL{W}, CALLWL 및 RCALL{W} 명령들에 의해 처리된 것과 동일한 방식으로 SFA(Stack Frame Active) 비트를 처리한다. CPU 우선순위는 예외와 동일하게 세트된다. 리턴시, RETFIE는 예외 이전의 상태로 머신을 복구시키기 위해 리턴 PC, SR, IPL3 및 SFA 비트를 언스태킹한다. 레벨 0 CPU 우선순위는 모든 인터럽트들 및 트랩들이 에크되게 하고 레벨 7 CPU 우선순위는 모든 인터럽트들을 마스킹하지만 계속 트랩들이 발생하게 할 것이다.
모든 인터럽트들을 소프트웨어로 빠르게 디스에이블 및 리-인에이블하기 위한 수단을 제공하기 위해 GIE(Global Interrupt Enable) 제어 기능이 제공될 수 있다. GIE 비트가 소거되면, 각 매크로는 4'b0111(레벨 7)로 세트하고 모든 인터럽트들을 디스에이블시키지만 트랩들이 인에이블되게 하는 인입 CPU IPL(cpu_irq_priority_leve<3:0>)을 오버라이드한다. 실제 CPU IPL은 GIE 비트가 다시 세트되면 시스템이 이전 인터럽트 우선순위 레벨에서의 동작으로 복귀하도록, 변경되지 않은 상태에 있게 된다. 이 실시예에서, 제한되기 쉬운 트랩들은 항상 네스트된다.
성공적으로 중재된 예외에 대하여, 관련 벡터 번호는 PIVT(Primary Interrupt Vector Table) 또는 XIVT(Auxiliary Interrupt Vector Table)에의 오프셋을 나타낸다. PIVT는 주요 어레이 프로그램 메모리에 있으며, 위치 0x000004에서 시작한다. 마찬가지로, XIVT는 보조 어레이 프로그램 메모리에 있으며, 위치 0x7FFFF4에서 시작한다. XIVTEN 퓨즈 상태는 이들 어드레스들 중 어느 것이 CPU를 위해 발생된 물리적인 벡터 어드레스를 위한 베이스 어드레스가 되는지를 결정하기 위해 인터럽트 컨트롤러에 의해 사용된다. XIVTEN 퓨즈가 세트되면(디폴트 상태) PIVT 베이스 어드레스가 선택되고 XIVTEN 퓨즈가 소거되면 XIVT 어드레스가 선택된다. 이들 벡터 테이블들은 현재의 보안 모드에 관계없이 항상 액세스가능하다. PIVT 및 XIVT는 최대 256개의 예외 벡터들을 포함한다. 각 인터럽트 또는 트랩 벡터는 24 비트 폭 어드레스를 포함한다. 각 벡터 위치에 유지된 어드레스는 관련 ISR(Interrupt Service Routine) 또는 트랩 핸들러의 시작 어드레스이다.
일실시예에 따르면, RESET은 이 아키텍쳐에서 예외로서 처리되지 않을 수 있으며, 2 워드 GOTO 명령을 이용하여 구현될 수 있다. 예외 그 자체로서가 아니라도, 여기에서는 협정을 위해 논의된다. CPU는 fus_xivt_enable 신호를 구동하는 XIVTEN 퓨즈의 상태에 따라 주요 또는 보조 어드레스 공간으로부터 리셋될 수 있다. 리셋동안, PC는 소거(fus_xivt_enable = 1)되거나 또는 0x7FFF00으로 세트(fus_xivt_enable = 0)된다. 리셋이 해제되면, FNOP(forced NOP) 및 선택된 리셋 어드레스에서의 GOTO 명령의 프리페치로 시작하는 일반적인 명령 실행이 지속된다. 디바이스가 리셋에 있으면 Q 클록은 상태 Q1에 유지된다. CPU는 이 첫번째 사이클을 FNOP로서 여긴다. 두번째 사이클은 선택된 인터럽트 벡터 테이블내의 두개의 프로그램 워드 RESET 슬롯으로부터 GOTO 명령을 페치한다. 그리고, 이 명령은 정상으로서 실행되고 사용자 프로그램의 시작으로 점프한다. 리셋 소스들은 다음과 같다.
1. 외부(핀) 리셋
2. POR: Power on reset
3. BOR: Brown out reset
4. RESET 명령 또는 어떤 비구현 연산 코드(opcode)의 실행
5. 비초기화 W 레지스터의 (어드레스 전용을 위한) 읽기
6. 비구현 프로그램 어드레스 공간으로부터의 명령 페치
일실시예에 따르면, CPU에 두가지 타입의 리셋이 있을 수 있다. 콜드 리셋은 POR 또는 BOR 리셋의 결과이다. RESET 명령을 포함하는 워엄 리셋은 모든 다른 리셋 소스들의 결과이다.
일실시예에 따르면, 예외 처리는 모든 소스들에 대하여 동일하다. 상술한 바와 같이, 일실시예에 따르면, 이 아키텍쳐에서 리셋은 예외로서 처리되지 않을 수 있다. 예외 처리는 중재 상태(사이클들), CPU 요구 사이클, CPU 에크 사이클, 벡터 페치 사이클(들), 및 첫번째 ISR 명령에 대한 명령 프리페치 사이클(들)로 이루어진다.
도 1에 도시된 인터럽트 블록(120)은 모든 예외들을 수신 및 중재한다. 중재는 완료하는데 2 사이클이 소모되도록 파이프라이닝될 수 있다. 그리고, 예외 벡터 어드레스(int_vector_addr<23:0>) 및 그 관련 우선순위(int_priority_level<3:0>)를 수반한 인터럽트 블록(120)은 CPU(110)에의 인터럽트 요구 신호 Int를 Q1 라이징에서 발생시킨다. 중재는 진행중인 프로세스이며, 사이클(Q1)마다 업데이트된 결과를 발생시킨다. 신호 Int가 어서트되더라도, CPU(110)는 그 응답 신호 Ack를 어서트하면 중재 결과들을 로킹할 것이다. 그 결과, 인에이블된 네스트 인터럽트들로 동작중일 때(INTCON1<15>,NSTDIS=0), 고 우선순위 예외들은 사이클 Ack가 어서트되기 전에 Q1까지 진행중인 저 우선순위 예외들을 대신할 수 있다. 이 효과는 "일정한" 지연 동작에서 수개의 사이클들을 차감할 수 있고 따라서 보상된다.
신호 Int는 라이징 Q1에서 샘플링되고 다음 사이클동안 처리중으로 고려될 것이다. 현재 실행중인 명령이 완료되거나 또는 일정한 지연 타임아웃이 만료되면, CPU(110)는 한 사이클에 대한 라이징 Q3에서 Ack를 어서팅함으로써 인터럽트 컨트롤러로부터의 예외 요구를 에크할 것이다. 핸드셰이크를 완료한 인터럽트 컨트롤러(120)는 Ack가 무효화된 후에 Q1에서 Int를 해지한다. 가변 지연 예들이 도 15에 도시되어 있다.
벡터 페치는 인터럽트 컨트롤러에 의해 코어에 제공된 벡터 어드레스를 이용하여 CPU 에크 사이클동안 개시된다. 코어는 (모든 다른 목적들을 위해 일련의 FNOP들이 고려될 수 있는) 벡터 페치를 실행하며 24-비트 벡터를 검색한다. 그리고, 벡터는 첫번째 ISR 명령에 대한 프리페치 어드레스를 형성하는 PC로 전달된다. 예외 처리 직전에 실행된 명령에 의해 프리페치(하지만 폐기)된 명령의 PC 어드레스는 PCINT에 세이브된다. 벡터 페치동안, ISR 리턴 어드레스로서의 스태킹에 대비해 PCINT가 PCT에 복사된다. 일실시예에 따르면, 벡터 및 첫번째 ISR 명령 페치들은 코어를 제공하는 PS 메모리의 액세스 시간에 따라 수개의 사이클을 이용할 수 있다. PC는 PCT(PC temp) 레지스터로부터 항상 스태킹된다. PCT는 다음들 중 하나로 로딩된다.
·현재 PC값.
·각 사이클의 Q3 동안 (직접 PC 가산기로부터의) 다음 PC값.
·중간 PC(PCINT) 레지스터.
단일 사이클 명령동안 처리중인 예외에 대한 예외 처리(가변 지연)이 (상대적인 브랜치들을 포함하는) 도 15에 도시되어 있다. 도 7 내지 20의 모든 다음 타이밍도들은 단일 사이클 PS 메모리 액세스를 가정한다. 따라서, 느린 PS 메모리는 스톨링될 CPU를 필요로 할 것이다.
일실시예에 따르면, FNOP(forced NOP) 명령(패딩)은 예외 처리의 일부로서 발생된다. NOP 명령을 ROMLATCH 값에 로딩하기 위한 메커니즘이 명령 큐에 제공된다. NOP는 Ox000000로서 인코딩되기 때문에, FNOP는 라이징 Q1에서의 IR의 소거와 같다.
일실시예에 따르면, 예외 처리는 모드 레지스터 CORCON<15>내의 VAR 비트의 상태에 의해 결정된 두개의 모드들 중 하나로 동작할 수 있다. VAR=0(디폴트 리셋 상태)이고 CPU가 최고 우선순위 EDS 버스 마스터로 세트(MSTRPR<2:0>=3'b0)되면, CPU는 모든 최고 우선순위 예외를 위해 결정론적인 일정한 지연 응답을 제공할 것이다. 인터럽트가 ISR의 첫번째 명령으로 인식되는 시점으로부터의 인터럽트 지연은 TBLRDx를 포함하는 모든 명령들 또는 PSV 액세스를 필요로 하는 것들을 위해 일정할 것이다.
인터럽트 인식점이 인터럽트 컨트롤러에의 처리중 인터럽트들을 샘플링하는 Q1 라이징으로서 정의되면, 일정한 지연은 다음에 의해 결정된다.
latencyVAR=0 = tarb + 5 + 2ηcycles
여기서, η= PS 메모리 액세스 시간(사이클들), tarb = 중재 시간(사이클들). 신호 Int는 중재후에 어서트되고, CPU는 현재 진행중인 명령의 나머지를 실행한다. 신호 Ack는 5 사이클 이후에 어서트되고(q3), 벡터 페치가 시작된다. 즉, 모든 CPU 스톨들을 포함하는 (어서트된 Int로부터) 남겨진 전체 명령 실행 시간이 전체로서 5 사이클들보다 작으면, CPU는 전체를 5로 하기 위해 FNOP들을 더한다. 단일 사이클 명령에 대한 일정한 지연 예가 도 7에 상세히 도시되어 있고 2-사이클 명령에 대하여 도 8에 도시되어 있다. 일실시예에 따르면, 일정한 개수의 지연 사이클들을 강제하기 위해 예외 처리동안 카운터(150)가 사용되게 구현될 수 있다. 카운터 타임아웃 값은 파라미터 INT_LATENCY_DELAY에 의해 결정된다. 플래시 메모리로부터 실행중일 때 다음의 특징들의 조합은 인터럽트 지연 보장을 깨뜨릴 것이다(느린 메모리들은 부가적인 지연을 도입할 것이다).
a) PSV를 통해 데이터를 액세스하는 LDDW 명령. 두번째 PSV 페치를 완료하기 위해 1 사이클을 부가. PSV 쓰기들은 허용되지 않아서 STDW는 발생되지 않는다.
b) (RAW) 스톨과 관련된 TBLRDx 또는 PSV 액세스 명령. 1 사이클 부가.
c) REPEAT된 PSV 액세스의 마지막 반복. 1 사이클 부가.
VAR = 1이고 CPU가 최고 우선순위 EDS 버스 마스터(MSTRPR<2:0> = 3'b0)이면, CPU는 모든 예외들을 위한 가변 지연 응답을 제공할 것이다. 단일 인터럽트 시스템에 대하여, ISR의 첫번째 명령에의 처리중 인터럽트들을 샘플링하는 Q1 라이징으로부터의 인터럽트 지연은 다음과 같을 것이다.
max.latencyVAR=1 = tarb + ρ + 2ηcycles
min.latencyVAR=1 = tarb + 1 + 2ηcycles
여기서, ρ = 예외 처리동안의 총 명령 실행 시간(사이클들), η = PS 메모리 액세스 시간(사이클들), tarb = 중재 시간(사이클들). 위의 관계는 TBLRDx를 포함하는 모든 명령동안 또는 PSV 액세스동안 발생하는 예외에 대하여 적용된다. 인터럽트는 명령의 시작 또는 끝에 도달할 수 있기 때문에 지연을 어떤 소정의 명령에 대한 범위로서 표현된다. 예외 처리동안의 명령 실행 시간은 일반적인 순차 실행 시간과 다를 수 있다. 예를 들면, 예외가 받아들여지면 모든 흐름 변화 명령들은 대상 PS 페치를 중지할 수 있기 때문에, 예외 처리동안 2 사이클에서 실행될 수 있다. 대상 PS 어드레스는 예외 리턴 어드레스가 된다. 또한, 예외 처리동안 완료된 명령에 이은 RAW 헤저드(hazard) 스톨들은 (대부분의 경우에) 불필요해서 스톨 사이클은 ρ에서 카운트될 필요가 없다.
예외 처리동안 실행될 때 예외 시간들이 다른 명령들의 요약이 표 1에 도시되어 있다. 명령의 RETURN 클래스의 실행동안 인터럽트가 처리중인 예가 도 20에 도시되어 있다.
Figure 112011087999918-pct00001
위의 분석은, 한가지 인터럽트가 어서트되고 어느때나 처리될 것이라고 가정한다. 둘 이상의 인터럽트가 활성화되고, 디바이스가 '넌-네스트(non-nested)' 모드에서 동작중이면, 고 우선순위 인터럽트 요구가 도달하면 저 우선순위 인터럽트에 대한 ISR이 바로 진행중일 수 있기 때문에 가장 긴 ISR 실행 시간이 최대 지연에 부가되어야 한다.
이 실시간 딜레마는 '네스트' 인터럽트들이 인에이블되면 어느정도 경감되어 최고 우선순위 인터럽트는 (그 자체를 제외한) 모든 ISR을 인터럽트할 수 있을 것이다. 하지만, 고 우선순위 인터럽트가 순차적으로 도달하면 저 우선순위 인터럽트에 대한 예외 처리가 시작될 수 있다. 첫번째 ISR 명령의 종료까지 처리중인 고 우선순위 예외의 유지를 회피하기 위해(하나의 ISR 명령은 항상 실행됨), 인터럽트 우선권이 지원된다. 트랩들은 일반적으로 시스템 문제들의 표시들이기 때문에 트랩들의 실행으로 인한 부가적인 지연은 전형적으로 애플리케이션의 실시간 성능의 일부로서 여겨지지 않는다. 실시간 동작 목표들의 충족이 덜 중요한 경우, 애플리케이션들은 이러한 상황들하에서 복구 모드에 있는 작업으로 전환된다.
VAR=1이지만 CPU는 최고 우선순위 EDS 버스 마스터가 아니면(MSTRPR<2:0>!=3'b0), CPU는 고 우선순위 EDS 버스 마스터 요구들로 인한 추가 지연을 포함할 수 있는 모든 예외들을 위한 가변 지연 응답을 제공할 것이다. VAR=0이지만 CPU는 최고 우선순위 EDS 버스 마스터가 아니더라도(MSTRPR<2:0>!=3'b0), 고 우선순위 EDS 버스 마스터 요구들에 의한 추가 지연이 있을 수 있기 때문에 CPU는 예외들을 위한 일정한 지연 응답을 제공할 수 없다. 즉, CPU가 최고 우선순위 버스 마스터로서 동작중이 아니면, 예외 처리는 더 이상 아토믹(atomic) 동작이 아니며 다른 마스터에 EDS 버스 액세스를 제공하기 위해 필요한 만큼 스톨링될 수 있다. 또한, 예외 처리와 관련하여, 모든 읽기 및 쓰기 스톨들은 그것들을 따르는 명령과 함께 아토믹으로 고려된다. 즉, 읽기 또는 쓰기 외부 스톨동안 인터럽트 또는 트랩 요구가 발생하면, 스톨 사이클(또는 사이클들) 및 스톨을 따르는 명령이 완료된 후까지 예외 처리는 시작되지 않을 것이다.
신호 Int가 어서트된 후, 하지만 Ack가 어서트되는 사이클(사이클 5) 이전에 우선순위를 증가시키는 예외 벡터 ID에서 변화가 검출되면, CPU는 지연 카운터를 리셋할 것이다. 그리고, 새로운 최고 우선순위 인터럽트에 대한 예외 처리는 각각 사이클들 2 및 5에서 우선권을 나타내는 도 9 및 10에 도시된 바와 같이 보통처럼 완료될 것이다. 지연 카운터의 리셋팅은 부가적인 FNOP들이 삽입되게 하고, 이로써 최고 우선순위 인터럽트에 대한 일정한 지연 응답 시간을 계속 보장한다. Ack가 어서트된 후에 하지만 신호 Int가 무효화되기 전에(사이클들 6 및 7) 우선순위를 증가시키는 예외 벡터 ID에서 변화가 검출되면, CPU는 지연의 첫번째 2 사이클들동안 지연 카운터를 리셋하지만 (첫번째 ISR 명령 페치를 제외한) 이미 진행중인 예외 처리를 완료할 것이다. 그리고, 새로운 최고 우선순위 인터럽트에 대한 예외 처리는 평소처럼(즉, 동일한 일정한 지연으로) 완료하고, 원래의 ISR의 첫번째 명령의 어드레스를 최고 우선순위 인터럽트에 대한 리턴 어드레스로서 스태킹한다. 예들이 도 11, 12 및 도 13, 14에 도시되어 있다. 신호 Int가 무효화된 후(사이클들 8 및 그 이후) 우선순위를 증가시키는 예외 벡터 ID에서 변화가 검출되면, 원래의 예외에 대한 ISR은 이미 시작되어 일반적인 예외 처리가 개시된다.
내부 스톨 사이클은 스톨 이벤트에 이은 명령과 관련되고 전체 명령 카운트 변수 ρ의 일부로서 카운트되어야 한다. RAW 헤저드는 불가능하기 때문에(스태킹은 데이터 쓰기 전용을 포함) 내부 스톨은 예외 처리 스태킹 이전에 발생할 수 없다.
버스 중재 또는 버스 액세스 지연들의 결과로서 스톨 사이클들은 CPU의 제어의 밖에 있다. 그 결과, 일정한 예외 지연을 결정할 때 예외 처리는 그것들을 고려할 수 없다. 일정한 지연이 시스템 레벨 요건이면, 사용자는 CPU 버스 중재를 보장하기 위한 적절한 단계들을 취하거나 또는 버스 액세스 스톨들은 발생하지 않는다.
일반적으로, 가변 지연(VAR=1)으로 동작중일 때, 예외 처리 에크(Ack)는 명령의 마지막 사이클까지 연기될 것이다. 단일 사이클 명령에 대하여, 이는 신호 Int가 어서트된 후에 Ack가 명령의 실행동안 다음 q3에서 어서트될 것이라는 것을 의미한다. 멀티사이클 명령들에 대하여, Ack 어서션은 마지막 명령 사이클의 q3로 연기될 것이다. 신호 Int가 명령 실행동안 도달하면 이것이 적용된다. 2 사이클 동안의 초기 예외(즉, 신호 Int가 명령의 시작에서 도달)와 관련된 2 워드 CALL 명령이 도 18에 도시되어 있다. (물론, 스택으로의 GOTO 리턴 어드레스가 없다는 것을 제외하고) GOTO에 대한 타이밍은 동일하다. CALL-클래스 명령은, 첫번째 사이클동안 발생되지만 PC에서 결코 나타나지 않는 CALL 리턴 어드레스(사이클당 한 워드)를 스태킹한다. 그 결과, PCT는 이 사이클의 Q3 동안 PC 대신에 PC 가산기(즉, CALL 리턴 어드레스)로부터 직접 로딩된다. PCT(PC temp) 레지스터의 사용을 통한 예외 처리 리턴 어드레스 스태킹의 연기는 CALL이 중재 사이클동안 그 스태킹을 완료할 수 있게 한다. PC에서 PCINT로, 그리고 PCINT에서 PCT로의 전송들은 스태킹 완료에 앞서 벡터 페치동안 스태킹될 PC 값을 유지하는데 요구된다. 2 사이클 동안의 예외 처리와 관련된 2 워드 넌-플로어 변화 명령(즉 DO/DOW)이 도 19에 도시되어 있다. 예외 처리는 CALL 또는 GOTO의 것과 본질적으로 동일하다. 2 사이클 동안의 예외 처리와 관련된 1 워드 GOTOW 및 Bcc 상대 브랜치 명령이 각각 도 16 및 도 17에 도시되어 있다. 주: PC 가산기로부터의 PCT 업데이트는 예외 처리내에서 전혀 발생되지 않으며 명령의 아티펙트로 고려될 수 있다(즉, 예외 처리중과 함께 또는 없이 발생됨).
트랩들은 디버그동안 그리고 애플리케이션내에서 동작중일 때 에러 동작을 보정하기 위한 수단을 사용자에게 제공하기 위한 것이다. 많은 이들 트랩 상태들은 그것들이 발생한 경우에만 검출될 수 있다. 그 결과, 의심스러운 명령은 트랩 예외 처리 시작 이전에 완료된다. 에러로부터 복구하기 위해 사용자가 선택하면, 트랩을 야기한 에러 실행의 결과는 보정되어야 한다. 하지만, 어드레스 에러 트랩이 처리중일 때 레지스터들 및 메모리에서 데이터 쓰기들, 어드레스 쓰기-백들 및 상태 레지스터 업데이트들은 모두 금지되어 에러의 영향을 경감시킨다. 트랩들은 두개의 카테고리들로 분류된다.
'소프트' 트랩들은 우선순위 8 내지 12 모두의 예외들이다. 스택 에러, 매스 에러 및 DMAC 에러 트랩들은 이 카테고리에 들어간다. 일반적인 소프트 트랩도 지원된다. 소프트 트랩들은 각 매크로에서 정의된 것과 같은 미리결정된 우선순위를 따르는 마스크 불가능하고 네스트가능한 인터럽트들로서 간주될 수 있다. 그것들은 인터럽트들처럼 처리되며 예외 처리에 앞서 샘플링 및 에크될 3 사이클들을 이용한다. 따라서, '소프트' 트랩들은 예외가 되기 전에 부가적인 명령들이 실행되게 할 수 있다. 모든 다른 소프트 트랩들처럼 특정 에러 상태에 할당되기 보다는 새로운 SFR(일반적인 소프트 트랩 SFR)내의 활동범위에 할당되는 일반적인 소프트 트랩이 부가된다. 일반적인 소프트 트랩 SFR내의 각 비트는 특정 트랩 에러 상태에 할당될 수 있다. 이들 비트들 중 하나(또는 그 이상)이 세트되면, 일반적인 소프트 트랩이 요구된다. 그리고, 관련 트랩 핸들러는 어느 트랩(들)이 발생되고 적절한 실행을 취하는지를 결정하기 위해 일반적인 소프트 트랩 SFR을 폴링한다. 이 방식은 소프트 트랩들의 개수가 벡터 맵의 한계보다 연장되게 한다. 소프트 트랩이 서비스되는 동안 발생하는 인터럽트들 또는 저 우선순위 트랩들은 트랩 핸들러가 완료되기까지 처리를 계속할 것이다. 다음의 '소프트' 트랩들에는 증가된 우선순위가 지원된다.
·일반적인 소프트 트랩: 이 트랩은 (각 매크로내에 위치하는) SFR INTCON3내의 어떤 비트(또는 비트들)이 세트되면 발생할 것이다. INTCON3<4>는 DO 스택 오버플로우 트랩에 할당된다. 그것은 DO 스택 오버플로우가 검출될 때마다 CPU에 의해 세트된다.
·DMAC 에러 트랩: DMAC 에러 트랩은 DMAC와 CPU간의 쓰기 충돌때마다 실행될 것이다. 이것은 듀얼 포트 주변 데이터 레지스터에서만 발생할 수 있다(DPSRAM 쓰기 충돌은 더 이상 검출되지 않음).
·매스 에러 트랩: 매스 에러 트랩은 다음의 세가지 환경하에서 실행될 것이다. DSP 엔진 구성은 애플리케이션내에서 일치되어 에러 상태를 결정하기 위한 폴링 플래그들은 필요하지 않아야 한다.
1. 제로로 나누어지도록 시도되어야 하고, 분할 동작은 사이클 경계에서 중지되고 트랩이 발생된다. 스태킹된 PC는 분할이 중지되었을 때에 페치되는 명령을 지시할 것이다.
2. 다음의 조건들이 모두 참이면, 매스 에러 트랩이 발생할 것이다. a)OVATE 비트가 세트된다(INTCON1<10>) b)적산기 A는 디스에이블된 1.31 포화로 또는 9.31 모드에서 동작중이다 c)연산 동작은 적산기 A의 비트 31로부터의 오버플로우를 발생시킨다 또는 a)OVBTE 비트가 세트된다(INTCON1<9>) b)적산기 B는 디스에이블된 1.31 포화로 또는 9.31 모드에서 동작중이다 c)연산 동작은 적산기 B의 비트 31로부터의 오버플로어를 발생시킨다
3. 다음 조건들이 모두 참이면, 매스 에러 트랩이 발생할 것이다. a)COVTE 비트가 세트된다(INTCON1<8>) b)적산기 A 또는 B가 디스에이블된 모든 포화로 동작중이다 c)연산 동작은 디스에이블된 모든 포화로 적산기의 비트 39로부터의 오버플로어(최악의 오버플로어)를 발생시킨다
4. 16 보다 크거나 -16 보다 작은 시프트 값으로 SFTAC를 실행하기 위한 시도가 이루어지면, 명령은 (결과 쓰기없이) 완료되고 매스 트랩이 발생할 것이다. 스태킹된 PC는 SFTAC가 실행중인 동안 페치된 명령을 지시할 것이다.
일실시예에 따르면, 사용자가 트랩 에러 상태의 경우에 교정 행동을 취하지 않으면, 이들 벡터들은 리셋 명령을 포함하는 디폴트 핸들러를 지시하는 어드레스로 로딩되어야 한다. 리셋 어드레스로의 올바른 벡터링은 사용자 코드를 재시작하지만 디바이스 리셋을 개시하지는 않을 것이다.
·스택 에러 트랩: 이 트랩은 다음과 같은 경우 일어날 것이다.
1. Ox0800 보다 작은 EA로 스택 포인터 기반 액세스가 시도된다.
2. 스택 오버플로어 보호가 인에이블되고, SPLIM 레지스터에 쓰여진 (사용자 프로그램가능) 한계값 보다 큰 EA로 스택 포인터 기반 액세스가 시도된다.
3. CORCON<2>내의 SFA(Stack Frame Active) 비트가 이미 세트되면, 네스트 스택 프레임 에러를 지시하는 LNK 명령이 실행된다.
4. CORCON<2>내의 SFA(Stack Frame Active) 비트가 이미 소거되면, 스택 프레임 언링크 에러를 지시하는 UNLK 명령이 실행된다.
'하드' 트랩들은 우선순위 13 내지 15의 예외들이다. 발진기 실패, 어드레스 에러 및 소프트웨어 트랩들은 이 카테고리에 들어간다. 하드 트랩들은 각 매크로에 정의된 것과 같은 미리결정된 우선순위를 따르는 마스크 불가능하고 네스트가능한 인터럽트들로서 고려될 수 있다. 트랩 이벤트가 발생되는 동안 명령에 이어 더 이상 명령들이 실행되지 않을 것이다. 예외 처리가 시작되기까지 CPU는 FNOP들(forced no-operation instructions)를 실행하여 트랩이 CPU에 의해 에크된 후 발생할 것이다. 이것의 결과는, 하드 트랩이 에크되지 않으면 CPU는 FNOP들을 영원히 실행한다는 것이다. 따라서, 또 하나의 (고 우선순위) 하드 트랩이:
a) 발생되거나,
b) 에크되거나,
c) 예외처리를 처리중이거나 또는
d) 그 핸들러가 실행중인 동안,
저 우선순위 하드 트랩이 처리중이면, 디바이스는 리셋으로 강제된다. 이는, 고 우선순위 트랩은 에크될 저 우선순위 트랩을 대기하면서 유예되고(FNOP들을 실행), 반면에 저 우선순위 트랩은 완료를 위해 고 우선순위 트랩을 대기하면서 계속 처리중에 남아있는 '교착 상태' 문제를 극복한다. 이는 더블 하드 트랩 에러인 것으로 간주되고, RCON 레지스터내의 TRAPR 비트가 세트되게 할 것이다. 소프트웨어를 통한 복구는 가능성이 없어 최선의 수단은 리셋이다. 저 우선순위 트랩이 처리중인 동안 고 우선순위 트랩이 발생하면, 저 우선순위 트랩은 하나 이상의 명령을 실행하고, 고 우선순위 트랩이 에크되기까지 FNOP들을 실행할 것이다. 그리고, 고 우선순위 트랩을 위한 예외 처리가 계속된다. 즉, 저 우선순위 트랩이 이미 에크되었다면 저 우선순위 트랩은 고 우선순위 트랩의 실행동안 '처리중'으로 취급될 수 있다(즉, 고 우선순위 트랩은 저 우선순위 트랩이 에크된 후에 발생한다). 다음의 '하드' 트랩들에는 증가된 우선순위가 지원된다.
·일반적인 하드 트랩: 하드 트랩은 다음의 조건들하에서 발생된다.
1. INTCON2<13>에 있는 SWTRAP 비트가 세트된다
2. INTCON4<15:0>내의 어떤 비트(또는 비트들)가 세트된다
SFR들 INTCON2 및 INTCON4는 각 매크로내에 위치한다. 소프트웨어 트랩은 더블 트랩 에러 리셋을 강제하지 않고 다른 하드 트랩들을 네스트하기 위한 최저 우선순위 하드 트랩이다. INTCON4<15:0>의 비트들의 기능은 상이한 최고 수준의 DOS에 정의된다. 그것들은 하드 트랩이 필요하다고 고려되는 모든 예외 소스와 관련될 수 있다.
·어드레스 에러 트랩: 어드레스 에러의 존재시, 소스 또는 목적지 W 레지스터들, 대상 메모리 어드레스 또는 사용자 쓰기가능 상태 레지스터 비트들은 변경되지 않을 것이다(즉, 수정의 EA의 레지스터 쓰기-백, 데이터 쓰기 및 SR 업데이트는 금지될 것이다). 이 트랩은 다음 상황들 중 어느 것이 발생하면 개시될 것이다.
1. 잘못 정렬된 데이터 워드 액세스가 시도된다.
2. 비구현 데이터 어드레스 공간에의 데이터 액세스가 시도된다. 단일 오퍼랜드(결합형 X & Y 어드레스 공간)와 듀얼 오퍼랜드(분할형 X & Y 어드레스 공간)에 적용된다. 어드레스 공간이 분할되면, 비구현 X 어드레스 공간은 모든 Y 공간을 포함하고, 비구현 Y 어드레스 공간은 모든 X 공간을 포함한다.
3. 시도 명령은 비구현 프로그램 공간으로부터 페치된다.
4. 시도 명령은 (리셋 GOTO 명령을 제외한) 벡터 공간으로부터 페치된다.
5. 데이터는 테이블 명령들 또는 PSV를 이용하여 비구현 프로그램 공간으로부터 읽혀진다.
·발진기 실패 트랩: 이 트랩은 외부 발진기 실패시 개시되고 동작은 내부 RC 백업에 의존한다.

Claims (21)

  1. 프로그램가능 예외 처리 지연(exception processing latency)을 갖는 디지털 프로세서로서,
    가변 실행 시간들(variable execution times)에 따라 명령어들을 실행하도록 동작 가능한 디지털 프로세서의 중앙처리장치(CPU);
    상기 CPU와 결합된 예외 컨트롤러; 및
    상기 CPU와 결합된 제어 레지스터를 포함하고,
    상기 CPU가 예외 신호를 수신할 때 예외 처리 지연 시간은 상기 CPU에 의해 예외가 제공될 수 있기 전에 실행되어야 하는 명령어의 실행 시간에 의존하고,
    상기 제어 레지스터는 두 개의 모드들 중 적어도 하나에서 상기 CPU의 동작 모드를 세트하도록 동작가능하고, 제1 모드에서 상기 CPU는 일정한 예외 처리 지연 시간을 가지며, 제2 모드에서 상기 CPU는 상기 예외가 제공될 수 있기 전에 실행되어야 하는 현재 대기중인(pending) 명령어에 의존하는 예외 처리 지연 시간을 갖는 것을 특징으로 하는, 디지털 프로세서.
  2. 제1항에 있어서,
    명령어는 실행을 위해 n개의 사이클들을 필요로 하고, n은 0보다 큰 정수이고, 그리고 상기 CPU의 명령어 세트는 실행을 위해 서로 다른 개수의 사이클들을 필요로 하는 적어도 두 개의 서로 다른 유형들의 명령어를 포함하는 것을 특징으로 하는, 디지털 프로세서.
  3. 제1항에 있어서,
    상기 CPU는 하나의 사이클에서 제 1 세트의 명령어들을 실행하고 두 개의 사이클들에서 제 2 세트의 명령어들을 실행하도록 동작 가능한 것을 특징으로 하는, 디지털 프로세서.
  4. 제1항에 있어서,
    상기 제어 레지스터는 프로그램가능한 지연 선택 비트를 포함하는 것을 특징으로 하는, 디지털 프로세서.
  5. 제4항에 있어서,
    상기 제어 레지스터 내의 상기 지연 선택 비트의 비트 값은 소프트웨어 애플리케이션에 따라 변경될 수 있는 것을 특징으로 하는, 디지털 프로세서.
  6. 제1항에 있어서,
    상기 제2 모드는 예외의 지연이 소정의 임계치보다 작거나 같은 경우에만 선택되는 것을 특징으로 하는, 디지털 프로세서.
  7. 제6항에 있어서,
    상기 소정의 임계치는 응용 프로그램(application)에 의해 변경될 수 있는 것을 특징으로 하는, 디지털 프로세서.
  8. 제6항에 있어서,
    상기 소정의 임계치는 상기 제어 레지스터 내에 저장되는 것을 특징으로 하는, 디지털 프로세서.
  9. 제1항에 있어서,
    상기 CPU 내의 실행 유닛을 스톨링(stalling)하기 위한 신호를 발생시키도록 동작가능한 카운터를 더 포함하는 것을 특징으로 하는 디지털 프로세서.
  10. 제1항에 있어서,
    상기 디지털 프로세서는 마이크로컨트롤러 또는 디지털 신호 프로세서인 것을 특징으로 하는, 디지털 프로세서.
  11. 가변 실행 시간들에 따라 명령어들을 실행하도록 동작 가능한 중앙처리장치(CPU)를 포함하는 프로세서에서 예외를 처리하기 위한 방법으로서,
    상기 CPU가 예외 신호를 수신할 때 예외 처리 지연 시간은 상기 CPU에 의해 예외가 제공될 수 있기 전에 실행되어야 하는 명령어의 실행 시간에 의존하고,
    상기 방법은,
    상기 프로세서를 위한 적어도 두 개의 동작 모드들 중 하나를 세트하는 단계;
    상기 CPU가 예외를 수신하는 단계;
    상기 예외를 전처리하는 단계; 및
    예외 서비스 루틴을 실행하는 단계를 포함하고,
    제1 모드에서 상기 CPU는 일정한 예외 처리 지연 시간을 가지며, 제2 모드에서 상기 CPU는 상기 예외가 제공될 수 있기 전에 실행되어야 하는 현재 대기중인 명령어에 의존하는 예외 처리 지연 시간을 갖는 것을 특징으로 하는 방법.
  12. 제11항에 있어서,
    상기 CPU를 위한 적어도 두 개의 동작 모드들 중 하나를 세트하는 단계는 제어 레지스터 내의 지연 선택 비트를 프로그래밍함으로써 수행되는 것을 특징으로 하는 방법.
  13. 제12항에 있어서,
    상기 제어 레지스터 내의 상기 지연 선택 비트의 비트 값은 소프트웨어 애플리케이션에 따라 변경되는 것을 특징으로 하는 방법.
  14. 제12항에 있어서,
    상기 제2 모드는 예외의 지연이 소정의 임계치보다 작거나 같은 경우에만 선택되는 것을 특징으로 하는 방법.
  15. 제14항에 있어서,
    상기 소정의 임계치는 응용 프로그램에 의해 변경될 수 있는 것을 특징으로 하는 방법.
  16. 제15항에 있어서,
    상기 소정의 임계치는 상기 제어 레지스터 내에 저장되는 것을 특징으로 하는 방법.
  17. 제11항에 있어서,
    처리중인 명령어가 상기 예외 서비스 루틴의 실행 전에 실행되고, 상기 처리중인 명령어는 실행을 위해 특정 개수의 처리 사이클들을 필요로 하고, 그리고 상기 프로세서는 실행을 위해 최소량의 처리 사이클들과 최대량의 처리 사이클 중 적어도 하나를 필요로 하는 복수의 명령어들을 실행할 수 있는 것을 특징으로 하는 방법.
  18. 제17항에 있어서,
    상기 제1 모드에서 명령어가 필요로 하는 제1 개수의 처리 사이클들은 상기 CPU의 명령어 세트의 임의의 명령어가 필요로 하는 최대량의 처리 사이클들까지 연장되는 것을 특징으로 하는 방법.
  19. 제18항에 있어서,
    상기 제1 개수의 처리 사이클들은 하나 이상의 무동작 명령어들을 삽입함으로써 연장되는 것을 특징으로 하는 방법.
  20. 제18항에 있어서,
    상기 제1 개수의 처리 사이클들은 상기 프로세서를 스톨링함으로써 연장되는 것을 특징으로 하는 방법.
  21. 제18항에 있어서,
    제1 개수의 처리 사이클들이 소정 개수의 사이클들보다 적으면, 명령어의 상기 제1 개수의 처리 사이클들은 단지 하나 이상의 무동작 명령어들을 상기 소정 개수의 사이클들에 삽입함으로써 연장되는 것을 특징으로 하는 방법.
KR1020117026605A 2009-07-20 2010-07-15 프로그램가능 예외 처리 지연 KR101673990B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US22692409P 2009-07-20 2009-07-20
US61/226,924 2009-07-20
US12/776,513 US8688964B2 (en) 2009-07-20 2010-05-10 Programmable exception processing latency
US12/776,513 2010-05-10
PCT/US2010/042101 WO2011011256A1 (en) 2009-07-20 2010-07-15 Programmable exception processing latency

Publications (2)

Publication Number Publication Date
KR20120036301A KR20120036301A (ko) 2012-04-17
KR101673990B1 true KR101673990B1 (ko) 2016-11-08

Family

ID=43466060

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117026605A KR101673990B1 (ko) 2009-07-20 2010-07-15 프로그램가능 예외 처리 지연

Country Status (6)

Country Link
US (1) US8688964B2 (ko)
EP (1) EP2457170B1 (ko)
KR (1) KR101673990B1 (ko)
CN (1) CN102414672B (ko)
TW (1) TWI525535B (ko)
WO (1) WO2011011256A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
TWI643063B (zh) * 2012-03-06 2018-12-01 智邦科技股份有限公司 Detection method
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US10534421B2 (en) * 2013-06-13 2020-01-14 Microsoft Technology Licensing, Llc Virtual per-processor timers for multiprocessor systems
US11210098B2 (en) 2013-07-15 2021-12-28 Texas Instruments Incorporated Variable latency instructions
KR102205899B1 (ko) * 2014-02-27 2021-01-21 삼성전자주식회사 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
US20170212763A1 (en) * 2014-07-25 2017-07-27 Hewlettt Packard Enterprise Development Lp Exception handling predicate register
US9740644B2 (en) * 2014-09-26 2017-08-22 Intel Corporation Avoiding premature enabling of nonmaskable interrupts when returning from exceptions
US20210026934A1 (en) 2018-02-02 2021-01-28 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
US10642668B2 (en) 2018-04-18 2020-05-05 Open Text GXS ULC Producer-side prioritization of message processing
TW201945971A (zh) 2018-04-30 2019-12-01 美商多佛微系統公司 用於檢查安全性能的系統和方法
US11055128B2 (en) 2018-07-30 2021-07-06 Open Text GXS ULC System and method for request isolation
WO2020097177A1 (en) * 2018-11-06 2020-05-14 Dover Microsystems, Inc. Systems and methods for stalling host processor
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
CN111752877A (zh) * 2019-03-27 2020-10-09 阿里巴巴集团控股有限公司 一种处理器及其中的中断控制器
CN113853584A (zh) * 2019-04-15 2021-12-28 德州仪器公司 可变延时指令
US11175926B2 (en) 2020-04-08 2021-11-16 Microsoft Technology Licensing, Llc Providing exception stack management using stack panic fault exceptions in processor-based devices

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2232514B (en) * 1989-04-24 1993-09-01 Yokogawa Electric Corp Programmable controller
US5889973A (en) 1995-03-31 1999-03-30 Motorola, Inc. Method and apparatus for selectively controlling interrupt latency in a data processing system
US5708817A (en) * 1995-05-31 1998-01-13 Apple Computer, Inc. Programmable delay of an interrupt
US6477600B1 (en) * 1999-06-08 2002-11-05 Intel Corporation Apparatus and method for processing isochronous interrupts
US6823448B2 (en) * 2000-12-15 2004-11-23 Intel Corporation Exception handling using an exception pipeline in a pipelined processor
GB2403822B (en) * 2003-07-07 2006-05-10 Advanced Risc Mach Ltd Data processing apparatus and method for handling interrupts
JP4788912B2 (ja) * 2006-10-12 2011-10-05 オムロン株式会社 Plc
CN101482813B (zh) * 2009-02-24 2012-02-29 上海大学 一种线程并行执行优化方法

Also Published As

Publication number Publication date
TW201118723A (en) 2011-06-01
KR20120036301A (ko) 2012-04-17
EP2457170B1 (en) 2014-12-31
EP2457170A1 (en) 2012-05-30
US8688964B2 (en) 2014-04-01
WO2011011256A1 (en) 2011-01-27
CN102414672B (zh) 2015-02-04
US20110016295A1 (en) 2011-01-20
CN102414672A (zh) 2012-04-11
TWI525535B (zh) 2016-03-11

Similar Documents

Publication Publication Date Title
KR101673990B1 (ko) 프로그램가능 예외 처리 지연
US8443423B2 (en) Secure information processing
US7917753B2 (en) Transferring control between programs of different security levels
US8392644B2 (en) System and method for automatic hardware interrupt handling
JPH07175666A (ja) データプロセッサおよびその割込み要求処理方法
CN114003365A (zh) 用于risc-v架构的快速中断系统
US7516311B2 (en) Deterministic microcontroller context arrangement
US20080010426A1 (en) Processor system and processing method for operating system program in processor system
GB2461848A (en) Processor with a privileged stack pointer and a stack pointer used in privileged and non-privileged modes
JP2005529399A (ja) 集積回路に埋め込まれた不揮発性メモリにデータを書き込む方法及び対応する回路
US7562207B2 (en) Deterministic microcontroller with context manager
Sim et al. A Fast and Secure Pipelined Barrel Processor for Safety-Critical Applications for Real-Time Operating Systems
JP2005521937A (ja) コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置
US5761492A (en) Method and apparatus for uniform and efficient handling of multiple precise events in a processor by including event commands in the instruction set
US20060168373A1 (en) Configurable application specific standard product with configurable I/O
US20140136818A1 (en) Fetch less instruction processing (flip) computer architecture for central processing units (cpu)
JP2011070290A (ja) データプロセッサ
KR102379886B1 (ko) 벡터 명령 처리
JPH0384632A (ja) データ処理装置
Balas et al. CV32RT: Enabling Fast Interrupt and Context Switching for RISC-V Microcontrollers
KR20180118699A (ko) 레지스터 액세스 제어
JP2011107939A (ja) 冗長系情報処理装置
Abdelrazek Exception and interrupt handling in arm
JP4702004B2 (ja) マイクロコンピュータ
GB2380831A (en) Debug exception handler and registers

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