KR100848603B1 - 데이터 처리장치와 복귀상태의 저장방법 - Google Patents

데이터 처리장치와 복귀상태의 저장방법 Download PDF

Info

Publication number
KR100848603B1
KR100848603B1 KR1020037007021A KR20037007021A KR100848603B1 KR 100848603 B1 KR100848603 B1 KR 100848603B1 KR 1020037007021 A KR1020037007021 A KR 1020037007021A KR 20037007021 A KR20037007021 A KR 20037007021A KR 100848603 B1 KR100848603 B1 KR 100848603B1
Authority
KR
South Korea
Prior art keywords
stack
mode
data processing
return
operation mode
Prior art date
Application number
KR1020037007021A
Other languages
English (en)
Other versions
KR20030072550A (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 KR20030072550A publication Critical patent/KR20030072550A/ko
Application granted granted Critical
Publication of KR100848603B1 publication Critical patent/KR100848603B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers

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

본 발명은 데이터 처리장치와 복귀상태를 저장하는 방법을 제공한다. 데이터 처리장치는, 데이터 처리 명령어들을 실행하고, 각각의 동작모드가 이 모드와 관련된 데이터를 저장하기 위해 대응하는 스택을 갖는 복수의 동작모드를 갖는 처리부를 구비한다. 이 처리부는 복귀상태 데이터 처리 명령어에 응답하여, 그것의 현재 동작모드로부터의 처리부의 복귀상태 데이터를 현재 동작모드와 다른 동작모드에 대응하는 스택에 기록한다. 이와 같은 접근방법은 코드 크기를 상당히 줄이고, 종래의 기술에 비해 인터럽트 대기시간을 향상시킨다.
데이터 처리장치, 복귀상태, 문맥전환, 인터럽트 대기시간, 예외 동작

Description

데이터 처리장치와 복귀상태의 저장방법{A DATA PROCESSING APPARATUS AND METHOD FOR SAVING RETURN STATE}
본 발명은, 복수의 동작 모드를 갖고, 각 동작 모드가 그 동작 모드에 관련된 데이터를 저장하기 위한 대응하는 스택을 가지며, 데이터 처리 명령어를 실행하기 위한 처리부를 구비하는 데이터 처리장치에 복귀상태를 저장하는 것에 관한 것이다.
이와 같은 데이터 처리장치에서, 현재의 동작 모드와 관련된 스택 상에 복귀상태 데이터를 저장하도록 구성된 명령어들을 발생하는 것이 공지되어 있다. 이와 같은 명령어들이 사용되는 경우의 통상적인 예는 예외 발생시로서, 이것이 발생한 경우에는, 복귀상태 데이터가 예외 동작모드와 관련된 스택 상에 저장된다. 이와 같은 절차는 다양한 이유로 인해 요구될 수 있다. 예를 들면, 이와 같은 데이터 처리장치는 일반적으로 다중작업을 지원할 수 있으며, 다른 작업을 수행할 수 있도록 하기 위해 문맥전환을 행하고자 할 때, 새로운 작업을 실행할 수 있도록 하기 위해 현재 작업의 동작모드와 관련된 스택 또는 스택들을 스왑할 필요가 있다. 스택 포인터들을 사용하여 스택들을 액세스하는 시스템에서, 이와 같은 스와핑은 다수의 스택들의 스택 포인터 또는 스택 포인터들을 스왑함으로써 보통 행해진다. 이와 같은 데이터 처리장치에서는, 보통 문맥전환이 일어날 때 스와핑되는 스택 상에 복귀상태 데이터가 저장되는 것이 요구된다.
문맥전환을 용이하기 하기 위해서는, 문맥전환시에 비어 있지 않은 모든 스택들을 스왑하는 것이 필요하다. 다수의 스택을 갖는 프로세서 상에서, 이것은 특정한 작업에 속하는 모든 스택을 스와핑하는 것을 요구할 수 있다. 더구나, 이와 같은 접근방법이 사용되면, 동작모드당 별개의 스택이 각각의 작업에 대해 유지되어야 하며, 이것은 메모리 소비 증가와 각각의 작업에 속하는 각각의 스택을 스왑하는데 걸리는 시간의 증가를 초래한다. 예를 들면, ARM 리미티드에 의해 제조되는 기존의 프로세서는 6가지 동작모드에 대응하는 6개의 별개의 스택, 즉 시스템/사용자, FIQ(Fast Interrupt Request), 감시자, 중단, IRQ(Interrupt RwQuest) 및 미정의 스택을 가지며, 이때 FIQ 및 IRQ는 2개의 인터럽트 동작모드이다. 따라서, 전술한 접근방법을 사용하면, 문맥전환은 6개의 별개의 스택의 스와핑을 필요로 할 수 있으며, 각각의 작업은 6개의 별개의 스택에 대한 메모리를 예비할당해야만 한다. 이와 같은 접근방법의 예를 도 2a 및 도 2b를 참조하여 나중에 설명한다. 도 2a 및 도 2b는 문맥전환을 발생하지 않는 한 개의 높은 우선순위의 인터럽트를 위해 FIQ 모드가 예약되었다고 가정하는 통상적인 시스템의 일례를 나타낸 것이므로, 이들 도면에는 6개의 스택이 아닌 5개의 스택을 갖는 시스템에 도시되어 있다.
또 다른 더 일반적으로 사용되는 접근방법은, 다수의 작업 사이에서 다수의 예외 스택들을 공유한 후, 예외에의 입력시에 예외 스택 상의 데이터를 사용자 스택이나 프로세스당 한 개의 특권 모드 스택으로 전달하는 것이다. ARM 리미티드에 의해 현재 제조되는 프로세서의 이전의 예를 들면, 이것은 FIQ, 중단, IRQ 또는 미정의 스택으로부터 사용자 또는 감시자 스택으로 데이터를 전달하는 것과 동일하게 생각될 수 있다. 이와 같은 접근방법은, 문맥전환이 필요할 수 있는 모든 시점에서 모든 예외 스택들(ARM 프로세서의 예에서는 FIQ, 중단, IRQ 및 미정의)이 비어 있는 상태로 유지되도록 한다.
예외 입력시에 저장된 데이터는 보통 예외가 발생한 시점으로부터 작업을 계속 실행하는데 필요한 데이터이다. 이와 같은 데이터는 "복귀상태 데이터"로 불린다.
전술한 두 번째 접근방법은, 예외의 입력시에, 복귀상태가 예외 동작모드와 관련된 스택 상에 저장되고, 프로세서 사용자 또는 특권 모드에 들어가며, 그후 예외 동작모드와 관련된 스택으로부터 복귀상태 데이터가 다시 판독되어 사용자 또는 특권 모드와 관련된 스택 상에 저장되는 것을 필요로 한다. 사용자 또는 특권 모드에 들어간 후에는, 복귀상태가 이 모드에서 액세스 가능하지 않으므로, 사용자 또는 특권 모드로부터 복귀상태를 간단히 저장하는 것이 불가능하다. 이와 같은 처리는 도 3a 및 도 3b의 예를 참조하여 나중에 더욱 상세히 설명한다.
예외 동작모드에 속하는 스택에 복귀상태 데이터를 저장하고, 모드를 변경하며, 예외 동작모드에 속하는 스택으로부터 복귀상태 데이터를 복원하고, 사용자 또는 특권 모드 스택에 복귀상태 데이터를 저장하는 이와 같은 과정은 코드 크기와 데이터 처리장치의 성능에 악영향을 미치는 상당한 수의 명령어를 요구한다.
더구나, 이와 같은 처리는 인터럽트가 디스에이블될 때 인터럽트 취급시의 임계점에서 필요하게 되므로, 상당한 인터럽트 대기시간을 발생한다는 점에 주목하기 바란다. 추가적인 인터럽트가 도착하여 이것이 저장되기 전에 복귀상태 데이터를 겹쳐쓰는 경우에는, 복귀상태 데이터가 사용자 또는 특권 모드 스택에 저장될 때까지 인터럽트가 다시 인에이블될 수 없다는 점에 주목하기 바란다.
BOB SMITH: "Re: Using the int instruction in prot mode at ring 3" NEWSGROUP MESSAGE, [Online] 30 July 1997(1997-07-30), XP002197347 comp.lang.asm.x86 Retrived form the Internet: 33DF4272.FEA1E11A1%40intrepid.net&output=gp lain>[retrived on 20002-04-23]은 보호기구에 관한 것이다. 4개의 특권 레벨 PL0 내지 PL3와 PL0, PL1 및 PL2에 대한 3개의 스택을 갖는 CPU가 개시되어 있다. PL3로부터 PL0로의 링 전이 중에, 복귀 프레임이 PL0 스택에 기록되므로, CPU가 스택들을 전환한다.
따라서, 예외의 발생시에 복귀상태 데이터를 저장하기 위해 더욱 효율적인 기술을 제공하는 것이 바람직하다.
발명의 요약
제 1 국면에 따르면, 본 발명은, 복수의 동작 모드를 갖고, 각 동작 모드가 그 동작 모드에 관련된 데이터를 기억하기 위한 대응하는 스택을 가지며, 데이터 처리 명령어를 실행하기 위한 처리부를 구비하고,
상기 처리부가 현재 동작 모드를 유지하면서, 현재 동작 모드로부터의 상기 처리부의 복귀상태 데이터를 현재의 동작 모드와 다른 동작 모드에 대응하는 스택에 기록하도록 복귀상태 데이터 처리 명령어에 응답하도록 구성된 데이터 처리장치를 제공한다.
본 발명에 따르면, 처리부가 그것의 현재 동작모드로부터의 처리부의 복귀상태 데이터를 현재 동작모드와 다른 동작모드에 대응하는 스택에 기록하도록 하는데 사용되는 복귀상태 데이터 처리 명령어가 제공된다.
본 발명은 코드 크기를 줄일 수 있으며 성능을 향상시킬 수 있다는 것이 밝 혀졌다. 본 발명은, 다양한 구현예에서 사용될 수 있지만, 실시간 운용체계, 특히 신속한 문맥전환을 필요로 하는 운용체계, 예를 들면 리눅스 등의 다중작업 운용체계에 매우 유리하다.
바람직한 실시예에 있어서, 복귀상태 데이터 처리 명령어는 예외의 발생시에 호출된다.
이때, 예외는 임의의 적당한 예외일 수 있으며, 예를 들면, 모든 형태의 인터럽트, 모든 형태의 중단, 미정의된 명령 예외, 어드레스 예외, 소프트웨어 인터럽트와 발생될 수 있는 다른 예외를 포함하여 데이터 처리장치 내부에서 발생하는 모든 표준 예외일 수 있다는 점은 자명하다. 특히, 바람직한 실시예에 있어서, 상기한 예외는 데이터 중단, 프리페치 중단, 어드레스 예외, 미정의 명령어, 리셋, 소프트웨어 인터럽트, 인터럽트 요청 또는 신속 인터럽트 요청(Fast Interrupt Request) 중 1개 이상이다.
따라서, 바람직한 실시예들에 있어서, 데이터 처리 명령어가 호출되도록 하는 예외는 소정 세트의 예외 중 어느 하나일 수 있으며, 소정 세트의 명령어들은 1개 이상의 인터럽트를 포함할 수 있다.
본 발명의 바람직한 실시예는, 예외 처리기의 기동시에 필요한 명령어들의 수를 줄임으로써 코드 크기를 줄어들게 할 수 있다는 것이 밝혀졌다. 더구나, 바람직한 실시예는, 예외 처리기의 시동시에 필요한 사이클의 수를 줄임으로써 성능을 향상시킬 수 있다는 것이 밝혀졌다. 이들 사이클은 인터럽트들이 디스에이블되는 임계점에서 보통 발생하므로, 이것은 인터럽트 대기시간을 상당히 줄일 수 있다는 이점을 갖는다. 본 발명의 바람직한 실시예는, 다양한 구현예에서 사용될 수 있지만, 실시간 운용체계, 특히 매우 많은 인터럽트 대기시간을 필요로 하는 운용체계, 예를 들면 디스크 드라이브들을 제어하는 운용체계에 매우 유리하다.
바람직한 실시예에 있어서는, 데이터 처리장치가 각각의 동작모드에 대한 처리부의 복귀상태 데이터를 저장하는 복수의 복귀상태 레지스터를 포함하는 레지스터 세트를 더 구비하고, 처리부는 그것의 현재 동작모드로부터 처리부의 복귀상태 데이터를 포함하는 복귀상태 레지스터들만을 액세스할 수 있다. 이와 같은 구성은, 일단 동작모드가 변경되면, 이들 복귀상태 레지스터들이 원래의 예외 모드로 다시 들어가는 것을 제외하고는 액세스가 불가능하기 때문에, 동작모드를 변경하기 전에 복귀상태가 적절한 스택에 저장되는 것을 요구한다.
스택들은 다양한 방법으로 구현될 수 있다는 것은 자명하다. 그러나, 바람직한 실시예에 있어서, 각각의 스택은 그들과 관련되어 스택 내부의 위치를 식별하는 스택 포인터를 갖고, 특정한 스택에 대한 스택 포인터만이 대응하는 동작모드로부터 액세스할 수 있다. 따라서, 특정한 동작모드에서, 처리부는 보통 그 스택의 스택 포인터만을 액세스하므로, 처리부는 통상적으로 그것의 대응하는 스택만을 액세스할 수 있게 된다.
레지스터 세트가 데이터 처리장치 내부에 설치되는 바람직한 실시예에 있어서는, 레지스터 세트가 각각의 스택에 대한 스택 포인터들을 저장하는 복수의 스택 포인트 레지스터들을 더 구비하는 것이 바람직하며, 처리부는 그것의 현재 동작모드에 대응하는 스택에 대한 스택 포인터를 포함하는 스택 포인트 레지스터만을 액세스할 수 있다. 따라서, 그것의 현재 동작모드에서 처리부는 그것의 대응하는 스택에 대한 스택 포인트를 얻기 위해 스택 포인트 레지스터만을 액세스할 수 있게 된다.
본 발명에 따라 주어진 복귀상태 데이터 처리 명령어는 다수의 형태를 취할 수 있다는 것은 자명하다. 그러나, 바람직한 실시예에서는, 복귀상태 데이터 처리 명령어는 처리부의 복귀상태 데이터가 기록될 스택을 식별하는 스택 식별자 필드를 포함한다.
각각의 스택이 그것과 관련된 스택 포인터를 갖는 바람직한 실시예에 있어서는, 복귀상태 데이터를 목적지 스택 내부의 적절한 위치(들)에 기록하기 위해 처리부가 스택 포인터를 알 필요가 있다는 것이 명백하다. 따라서, 바람직한 실시예에 있어서는, 스택 식별자 필드가 처리부의 복귀상태 데이터를 기록하고자 하는 스택에 대한 스택 포인터를 식별하도록 구성됨으로써, 처리부가 그 스택에 복귀상태 데이터를 기록할 때 그 스택에 있는 해당 위치를 액세스할 수 있게 된다.
더구나, 바람직한 실시예에서는, 복귀상태 데이터 처리 명령어는, 복귀상태 데이터가 스택에 기록되었을 때 스택 포인터가 갱신될 것이라는 것을 표시하도록 설정된 선택적인 갱신 필드를 포함한다. 일반적으로, 스택 포인터는 갱신되지만, 스택 포인터를 갱신시키는 것이 적당하지 않은 경우가 존재할 수 있으므로, 이와 같은 선택적인 갱신 필드는 스택 포인터를 그자신의 현재값으로 유지하거나 그것을 갱신하여 스택에 기록된 복귀상태 데이터를 고려하도록 하는 유연성을 제공한다.
바람직한 실시예에 있어서는, 스택 포인터가 갱신되는 방법을 결정하기 위해 서로 다른 어드레스 모드들을 이용하는 서로 다른 형태의 스택이 제공될 수 있다. 4가지 서로 다른 스택 형태의 예는 다음과 같다:
채운 올림차순(Full Ascending) - 스택이 메모리에서 위로 증가하며, 스택 포인터는 스택에 푸시된 마지막 워드를 가리킨다;
빈 올림차순(Empty Ascending) - 스택 포인터는 메모리에서 위로 증가하며, 스택 포인터는 스택에 푸시된 마지막 워드 위의 한 개의 워드를 가리킨다;
채운 내림차순 - 스택은 메모리에서 아래로 증가하며 스택 포인터는 스택에 푸시된 마지막 워드를 가리킨다:
빈 내림차순 - 스택은 메모리에서 아래로 증가하며 스택 포인터는 스택에 푸시된 마지막 워드 아래의 한 개의 워드를 가리킨다.
따라서, 바람직한 실시예에 있어서, 복귀상태 데이터 처리 명령어는 복귀상태 데이터가 기록될 스택의 어드레스 모드를 식별하기 위한 어드레스 모드 필드를 포함하고, 이 필드는 처리부에 의해 사용되어 목적지 스택에 적합한 어드레스 모드를 결정한다.
발생된 예외와 다른 시스템 상태에 의존하여, 복귀상태 데이터 처리 명령어를 항상 호출하거나, 그 대신에 특정한 조건이 존재하는 경우에만 복귀상태 데이터 처리 명령어를 호출하는 것이 필요할 수 있다. 따라서, 바람직한 실시예에서는, 복귀상태 데이터 처리 명령어는 복귀상태 데이터 처리 명령어의 실행을 위한 조건을 지정하는 조건 필드를 포함함으로써, 조건이 만족될 경우에만 복귀상태 데이터 처리 명령어가 실행된다.
바람직한 실시예에 있어서는, 예외가 발생할 때, 처리부는 해당하는 예외 동 작모드로 배치되므로, 일례로서, 인터럽트가 발생하면 처리부는 인터럽트 동작 모드로 배치되고, 중단이 발생하면, 처리부는 중단 동작모드로 배치되고, 이하 마찬가지이다. 따라서, 복귀상태 데이터 처리명령이 실행될 때의 현재 동작 모드는 예외 동작모드이다. 바람직한 실시예에 있어서, 그것의 스택이 복귀상태 데이터를 저장하는데 사용되는 이와 다른 동작 모드는 특권 동작모드, 예를 들면 시스템 와이드(system wide) 특권 동작모드이다. 또 다른 실시예에서는, 이와 다른 동작 모드는 예외 모드로 들어가기 이전의 처리부의 동작 모드일 수 있다.
복귀상태 데이터가 다양한 형태를 가질 수 있다는 것은 자명하다. 그러나, 바람직한 실시예에 있어서, 복귀상태 데이터는 저장된 프로그램 카운터와 저장된 프로세서 상태를 포함하는데, 이들 상태는 현재, 즉 예외 동작 모드로 들어가기 위해 빠져나온 동작모드의 프로그램 카운터와 프로세서 상태이다.
제 2 국면에 따르면, 본 발명은, 데이터 처리 명령어들을 실행하고, 각각의 동작모드가 이 모드와 관련된 데이터를 저장하기 위해 대응하는 스택을 갖는 복수의 동작모드를 갖는 처리부를 구비한 데이터 처리장치를 운용하는 방법에 있어서, 이 처리부가, 현재 동작모드를 유지하면서, 그것의 현재 동작모드로부터의 처리부의 복귀상태 데이터를 현재 동작모드와 다른 동작모드에 대응하는 스택에 기록하여, 복귀상태 데이터 처리 명령어에 응답하도록 하는 단계를 포함하는 방법을 제공한다.
제 3 국면에 따르면, 본 발명은, 데이터 처리장치가 본 발명의 제 2 국면에 따른 방법을 수행하게 구성되도록 동작가능한 컴퓨터 프로그램을 제공한다. 또한, 본 발명은 이와 같은 컴퓨터 프로그램을 포함하는 기록매체에 관한 것이다. 이 기 록매체는 예를 들면 CDROM, 디스켓 등의 임의의 적절한 장치이거나, 또는 실제로는 광섬유, 무선신호 등의 전송매체일 수 있다.
이하, 본 발명은 다음의 첨부도면에 도시된 바람직한 실시예를 참조하여 더욱 상세히 설명한다:
도 1a는 각각의 스택이 1개 이상의 동작모드와 관련된 다수의 스택을 포함하는 예시적인 시스템 배치를 나타낸 도면이고,
도 1b는 도 1a의 시스템 배치에서 각각의 동작모드와 관련된 레지스터들을 나타낸 것이며,
도 2a는 각각의 작업이 5개의 별개의 스택을 갖는 3개의 작업을 지닌 예시적인 공지의 시스템 구성을 나타낸 것이고,
도 2b는 도 2a에 도시된 시스템과 관련된 작업 제어블록의 일부를 나타낸 것이며,
도 3a는 각각의 작업이 2개의 별개의 스택을 갖고 3개의 작업 사이에서 3개의 예외 스택들이 공유된 3개의 작업을 지닌 예시적인 공지의 시스템 구성을 나타낸 것이고,
도 3b는 도 3a에 도시된 시스템과 관련된 작업 제어블록들의 일부를 나타낸 것이며,
도 4a 내지 도 4e는 종래기술에 따른 예외 발생시에 호출된 명령의 순서를 나타낸 것이고,
도 5a 내지 도 5d는 본 발명의 바람직한 실시예에 따른 예외 발생시에 수행되는 명령의 순서를 나타낸 것이며,
도 6은 본 발명의 바람직한 실시예에 따른 데이터 처리장치를 포함하는 시스템의 예시적인 구조를 나타낸 블록도이다.
도 1a 및 도 1b는 6개의 동작모드와 대응하는 6개의 스택을 갖는 예시적인 시스템을 나타낸 블록도이다. 그러나, FIQ 모드는 문맥전환을 일으키지 않는 높은 우선순위의 인터럽트에 대해 예약된 것이므로, 도면에는 5개의 동작모드와 이에 대응하는 5개의 스택만을 도시하였으며 이하에서 설명한다. 따라서, 도 1a를 참조하면, 5개의 스택(100, 110, 120, 130, 140)이 도시되어 있다. 각각의 스택은 관련된 스택 포인트 레지스터(105, 115, 125, 135, 145)를 갖고, 각각의 포인트 레지스터는 이 스택과 관련된 동작모드에서만 액세스 가능하다. 이것은, 5가지 동작모드 각각, 즉 사용자 모드, 특권 모드, 인터럽트 모드, 중단 모드 및 미정의 모드에서 액세스 가능한 레지스터들을 나타낸 도 1b를 고려하면 명백해진다. 도 1b로부터 알 수 있는 것과 같이, 특정한 레지스터들은 이들 모드중에서 어느 하나에서 액세스 가능하다. 그러나, 5가지 모드에 대한 스택 포인터들은 이 예에서는 SP, SP_SVC, SP_IRQ, SP_ABT 및 SP_UND로 불리며, 특정한 동작모드에서, 프로세서는 이 동작모드와 관련된 스택에 대한 스택 포인터를 포함하는 레지스터만을 액세스할 수 있다는 것은 명백하다. 따라서, 프로세서는 이 동작모드에 속하는 스택만을 액세스할 수 있다.
특권 모드와 각각의 예외 모드들(인터럽트, 중단 및 미정의)은 이 복귀상태와 관련된 동작모드에서만 액세스 가능한 관련된 복귀상태 데이터를 갖는다. 도 1b를 참조하면, 복귀상태는 LR_SVC, LR_IRQ, LR_ABT, LR_UND 및 SPSR_SVC, SPSR_IRQ, SPSR_SBT와 SPSR_UND로 이름이 붙여지는데, 이때 LR은 "링크 레지스터(Link Register)"를 나타내고, SPSR은 "저장된 프로세서 상태 레지스터(Saved Processor Status Register)"를 나타낸다. 사용자 모드도 링크 레지스터를 갖지만, 이것은 예외 모드가 아니고 사용자 모드에 대한 복귀상태가 존재하지 않기 때문에 복귀상태 정보를 저장하는데 사용되지 않는다. 즉, 사용자 모드로의 입력을 일으키는 예외가 존재하지 않으므로, 사용자 모드가 복귀상태 데이터를 저장할 필요가 없다.
도 2a는 블록도 형태로 종래의 제 1의 시스템 배치를 나타낸 것으로, 이 예에서는 시스템에 3개의 작업을 갖고, 각각의 작업은 5개의 동작모드에 대응하는 5개의 스택을 갖는다. 따라서, 작업 1은 프로세스 스택(200), 시스템 스택(210), 인터럽트 스택(220), 중단 스택(230) 및 미정의 스택(240)을 갖고, 작업 2는 프로세스 스택(202), 시스템 스택(212), 인터럽트 스택(222), 중단 스택(232) 및 미정의 스택(242)을 가지며, 작업 3은 프로세스 스택(204), 시스템 스택(214), 인터럽트 스택(224), 중단 스택(234) 및 미정의 스택(244)을 갖는다.
복귀상태 데이터는 예외에 대응하는 스택에 저장된다. 예를 들면, 인터럽트의 발생시에, 작업은 인터럽트 동작모드로 들어가고, 복귀상태 정보는 인터럽트 스택에 저장된다. 도 2a에서 알 수 있는 것과 같이, 이것은 작업당 5개의 스택을 유 지해야만 함으로써 메모리 소비면에서 추가적인 부하를 제공한다.
도 2b는 각각의 작업에 대한 작업 제어블록의 일부를 나타낸 것으로, 작업 제어블록은 작업이 문맥전환에 필요한 모든 정보를 저장하는 메모리의 영역이다. 이와 같은 정보의 일부로서, 5개의 스택의 각각에 대한 스택 포인터들은 저장될 필요가 있으므로, 작업 1에 대한 제어 블록(250)은 5개의 스택 포인터들을 저장해야 하고, 작업 2에 대한 제어 블록(260)은 5개의 스택 포인터들을 저장해야 하며, 작업 3에 대한 제어 블록(270)은 5개의 스택 포인터들을 저장해야만 한다. 따라서, 작업당 5개의 스택을 갖는 것은, 각각의 작업 제어블록에 필요한 추가적인 메모리로 인한 메모리 소비면과 작업 제어블록의 추가적인 레지스터들을 저장 및 복원하는데 걸리는 추가적인 시간으로 인해 성능면에서 추가적인 부하를 제공한다.
이와 같은 종래의 기술을 개선하기 위해, 두 번째의 더욱 일반적으로 사용되는 접근방법은, 작업 사이에서 특정한 예외 스택들이 공유되는 시스템을 제공하는 것으로, 이와 같은 시스템의 일례를 도 3a에 도시하였다. 도 3의 예에 따르면, 시스템은 작업당 2개의 스택과 3개의 작업 사이에 추가적인 3개의 스택 공유 시스템 와이드를 갖는 것으로 도시되어 있다. 도시를 위해, 더 많거나 더 적은 수의 실행 모드를 갖는 다른 실시예가 존재할 수 있다는 것은 자명하지만, 도 3a에 도시된 시스템은 도 2a에 도시된 시스템과 동일한 5개의 실행 모드를 갖는 것으로 가정하였다.
예외의 발생시에, 해당하는 예외 스택에 있는 데이터는 관련된 작업의 사용자/프로세스 스택 또는 시스템 스택으로 전달되어, 공유된 예외 스택들 모두가 문 맥전환이 필요한 모든 시점에서 비어 있는 상태로 유지되도록 한다. 이 결과, 사용자/프로세스 및 시스템 모드에 대한 스택 포인터들을 대응하는 작업 제어블록에 저장하는 것만이 필요하게 되는데, 이것은 작업 1, 2 및 3 각각에 대한 작업 제어블록들(360, 370, 380)을 나타낸 도 3b에 나타내었다.
도 3a 및 도 3b로부터 알 수 있는 것과 같이, 이와 같은 접근방법의 사용을 통해 메모리 소비와 성능면에서 상당한 이점이 얻어진다. 도 3a 및 도 3b에 도시된 시스템은 Ntx2+3개의 스택을 필요로 하는 한편, 도 2a 및 도 2b에 도시된 시스템은 Ntx5개의 스택을 필요로 하는데, 이때 Nt는 시스템의 작업의 수이다. 더구나, 도 2a 및 도 2b에 도시된 시스템은 Ntx5개의 문맥 블록정보의 워드들을 필요로 하는 한편, 도 3a 및 도 3b에 도시된 시스템은 Ntx2개의 문맥 블록정보의 워드들을 필요로 한다. 성능면에서, 도 2a 및 도 2b에 도시된 시스템의 작업들 사이의 문맥전환은 5개의 워드 적재 및 기억을 필요로 하는 반면에, 도 3a 및 도 3b에 도시된 시스템의 작업들 사이의 문맥전환은 2개의 워드 적재 및 기억을 필요로 한다.
종래의 기술을 사용하여 도 3a 및 도 3b에 도시된 시스템을 구현하기 위해 인터럽트의 시작시에 필요한 코드의 예를 제시하기 위해, ARM 어셈블러에 기록된 코드 단면을 이하에서 설명한다:
; 먼저 인터럽트 스택에 복귀상태(lr 및 spsr 레지스터들)를 저장한다. 복귀상태 ; 이외에, 임시 레지스터로 사용하기 위해 RO를 저장한다. 복귀상태를 적재하고,
; 모드를 변경하자마자 인터럽트 스택으로부터 저장된 RO를 제거하므로, 스택 포인터를 감소시키지 마라.
; 인터럽트가 디스에이블되기 때문에, 모드를 변경한 후에 ; 데이터를 저장하고 그것을 판독하는 과정 사이에 인터럽트가 서비스될 수 없다는 것을 알기 때문에,
; 스택 포인터를 감소시키지 않는 것이 안전하다.
(D) SUB lr, lr, #4; 복귀 어드레스를 가리키기 위해 LR_IRQ를 조정
(M) STR lr, [sp, #-4]; 인터럽트 스택에 LR_IRQ 저장
(D) MRS lr, spsr; SPSR_IRQ 판독
(M) STR lr, [sp, #-8]; 인터럽트 스택에 SPSR_IRQ 저장
(M) STR r0, [sp, #-12]; 인터럽트 스택에 R0 저장
; 프로세서 모드를 시스템(SVC) 모드로 변경
(D) MRS lr, cpsr; 현재 프로세서 상태 레지스터를 판독
(D) BIC lr, lr, #0x1f; 비트 소거 연산을 사용하여 모드 비트들을 마스크 아웃
(D) ORR lr, lr, #0x13; 또는 SVC 모드에 대한 맞는 모드 비트를 마스크 인
(D) MSR cpsr_c, lr; 새로운 모드를 cpsr에 기록
; 임시로 사용할 수 있도록 하기 위해 SVC 스택에 레지스터를 저장. 그후 인터럽트
; 스택으로부터 복귀상태 정보와 저장된 R0를 복원하고 그것을 SVC 스택에 저장
(D) SUB sp, sp, #8*4; 먼저 SVC 스택에 공간 생성
(M) STR r1, [sp, #2*4]; 임시 레지스터로 사용하기 위해 R1 저장
(M) LDR r1, [r0, #-4]; 저장된 LR_IRQ를 R1에 복원
(M) STR r1, [sp, #7*4]; LR_IRQ를 SVC 스택에 저장
(M) LDR r1, [r0, #-8]; 저장된 SPSR_IRQ를 R1에 복원
(M) STR r1, [sp, #0*4]; SPSR_IRQ를 SVC 스택에 저장
(M) LDR r1, [r0, #-12]; 인터럽트 스택으로부터 저장된 R0 복원
; 이 시점에서 인터럽트를 다시 인에이블시키기 위해 저장된다. 이전의 시점에서는,
; 인터럽트 스택으로부터 모드 데이터를 복원하기 전에 두 번째 인터럽트가
; 서비스되는 것이 허용되었다면 덮어쓸 수 있었던 인터럽트 스택에 저장된 데이
; 터가 존재하였기 때문에 그렇게 하는 것이 안전하지 않았다.
(D) MRS r0, cpsr; CPSR을 판독
(D) BIC r0, r0, #0x80; 인터럽트 디스에이블 비트를 소거
(D) MSR cpsr_c, r0; CPSR에 다시 기록
; *** INTERRUPT RE-ENABLE ***
; RE-ENABLE 인터럽트 전의 사이클 계수값 = 11*D+9*M
; 이에 따라 프로세스 문맥의 나머지를 계속 저장할 수 있다
STR r1, [sp, #1*4]; IRQ 스택으로부터 복원된 R0를 저장
STR r2, [sp, #3*4]; SVC 스택에 R2 저장
STR r3, [sp, #4*4]; SVC 스택에 R3 저장
STR R12, [sp, 5*4]; SVC 스택에 R12 저장
STR lr, [spc, #6*4]; SVC 스택에 LR_SVC 저장
...; 인터럽트를 계속 수행 및 서비스
각각의 명령어 옆에 있는 괄호 안의 문자는 각각의 명령어에 필요한 메모리 또는 데이터 사이클의 수를 나타내며, 이때 M은 1 메모리 사이클이고 D는 1 데이터 사이클이다. 사이클의 수는 인터럽트가 다시 인에이블될 수 있는 지점인 "*** INTERRUPT RE-ENABLE ***"로 표시된 지점까지 도시하였다. 인터럽트 처리기의 시작점과 이 점 사이의 사이클의 수는 인터럽트 대기시간을 결정하며, 큰 수의 사이클은 큰 인터럽트 대기시간을 제공하는 한편, 적은 수의 사이클은 적은 인터럽트 대기시간을 제공한다. 전술한 코드 단편에는, 인터럽트 처리기의 제 1 명령에 제어를 넘기기 위해 하드웨어가 필요로 하는 추가적인 사이클의 수는 도시되어 있지 않다. 이와 같은 사이클 수는 본 발명의 바람직한 실시예의 사용 여부에 관계없이 동일하므로, 간략을 기하기 위해 생략하였다.
전술한 코드 단편에 도시된 다양한 명령어에 의해 수행되는 과정을 도시하는 것을 돕기 위해, 도 4a 내지 도 4e가 첨부되어 있는데, 이하에서는 이들 도면에 대해 설명한다.
이 예에서는, 인터럽트 예외가 발생하여, 프로세서가 인터럽트 동작모드로 들어가, 레지스터 420을 액세스한다고 가정한다. 이 인터럽트 동작모드로부터의 프로세서의 복귀상태 데이터는 도 4에 레지스터 430으로 나타낸 복귀상태 레지스터에 저장된다. 특히, 복귀상태 데이터는 레지스터 LR_IRQ 및 SPSR_IRQ를 포함한다.
도 4a에는 스택들 중에서 2개, 즉 인터럽트 동작모드로부터 액세스 가능한 인터럽트 스택(400)과 감시자 스택(410)도 도시되어 있는데, 인터럽트 동작모드에서는 프로세서가 감시자 스택 포인터 SP_SVC를 포함하는 레지스터를 액세스할 수 없으므로, 감시자 스택(410)은 인터럽트 동작 모드로부터 액세스 불가능하다.
수행될 필요가 있는 첫 번째 프로세스는 복귀상태, 즉 레지스터 430의 내용을 인터럽트 스택 400에 저장하는 것이다. 복귀상태를 저장하는 것 이외에, 레지스터 RO의 내용도 인터럽트 스택 (400)에 저장되어, 레지스터 RO가 임시 레지스터로 사용될 수 있다. 이와 같은 동작은 도 4a에 참조번호 435로 표시되고 전술한 코드 단편에서 설명된 4개의 명령어에 의해 수행된다. 개시된 구현예에 있어서는, 링크 레지스터 LR_IRQ가 복귀 어드레스를 정확히 가리키기 위해 조정될 필요가 있기 때문에, 전술한 코드 단편에서 설명한 초기 SUB 명령어만이 필요하다.
따라서, 도 4b를 참조하면, LR_IRQ, SPSR_IRQ 및 RO의 내용이 인터럽트 스택(400)에 저장된다. 프로세스가 모드를 변경하자마자 인터럽트 스택에 방금 저장된 복귀상태와 RO 데이터가 인터럽트 스택으로부터 적재상태로부터 벗어나기 때문에, 인터럽트 스택(400)의 스택 포인터 SP_IRQ는 감소하지 않는다. 모드를 변경한 후 데이터의 저장과 그것의 판독 사이에는 인터럽트가 디스에이블되어 어떤 추 가적인 인터럽트가 서비스될 수 없으므로, 스택 포인터를 감소시키지 않는 것이 안전하다.
도 4b에 도시된 것과 같이, 다음 단계는 인터럽트 스택의 스택 포인터 SP_IRQ를 임시 레지스터로서 사용되는 레지스터 RO에 저장하는 것이다. 이것은, 인터럽트 동작모드에서 빠져나왔을 때 스택 포인터가 액세스 가능하도록 한다.
이때, 프로세서 모드가 시스템 모드로 변경되는데, 이것은 도 4b의 참조번호 445로 번호가 붙여진 4개의 명령어에 의해 수행된다. 따라서, 도 4c에 도시된 것과 같이, 프로세서는 감시자 동작모드가 되어, 레지스터 450을 액세스하게 된다. 동작모드 사이에 레지스터 RO가 공유되므로, 레지스터 RO는 여전히 인터럽트 스택(400)에 대한 스택 포인터를 포함한다. 그러나, 복귀상태는 레지스터 440에 저장된 감시자 동작모드로부터의 프로세서의 복귀상태에 해당한다.
그후, 프로세서는 레지스터들 중 한 개의 내용을 감시자 스택에 저장하여, 이 레지스터는 임시 레지스터로 사용될 수 있다. 이 예에서는, 레지스터 R1의 내용이 감시자 스택에 저장된다. 그후, 프로세서는 인터럽트 스택(400)으로부터 복귀상태 정보와 저장된 RO 값을 복원하고, 그것의 감시자 스택(410)에 저장한다. 이들 프로세스는 도 4c의 참조번호 455로 표시된 7개의 명령어에 의해 행해진다. 특히, SUB 명령어는 감시자 스택 포인터를 8개의 4 바이트 워드만큼 줄이는데 사용된다. 그후, R1의 내용을 감시자 스택(410)의 특정한 위치에 저장하기 위해 STR 명령어가 사용된다. 그후, 감시자 스택의 특정한 위치에 LR_IRQ를 저장하기 위해 LDR 및 STR 명령어가 사용되며, 다음의 LDR 및 STR 명령이 감시자 스택의 특정한 위치에 SPSR_IRQ를 저장하는데 사용된다. 임시 레지스터 R1이 이와 같은 목적으로 사용된다는 것을 알 수 있다. 마지막 LDR 명령어는 인터럽트 스택(400)에 저장된 RO의 값을 임시 레지스터 R1에 저장하는데 사용된다. 그러나, 이 시점에서는 인터럽트를 다시 인에이블시키는 것이 안전하기 때문에, 이 값을 감시자 스택에 저장하기 위해 필요한 다음의 STR 명령은 바로 수행되지 않으며, 인터럽트 대기시간을 최소화하기 위해 인터럽트들의 재인에이블 상태에는 우선순위가 부여된다. 인터럽트 스택(400)으로부터 모든 데이터가 복원되기 전에 두 번째 인터럽트가 서비스되는 것이 허용되면 겹쳐쓰여질 수 있었던 인터럽트 스택(400)에 저장된 데이터가 없었기 때문에, 이전의 시점에서는 인터럽트를 다시 인에이블시키지 않는 것이 안전하였다는 점에 주목하기 바란다.
따라서, 이하 도 4d를 보면, 인터럽트의 인에이블 상태는 도 4d에 참조번호 465로 표시되고 이전의 코드 단편에 포함된 3개의 명령어에 의해 행해진다. 사실상, 이들 명령어는 CPSR 레지스터를 판독하고, 인터럽트 디스에이블 비트를 소거한 후, CPSR 레지스터에 해당 데이터를 다시 기록함으로써, 인터럽트를 다시 인에이블시킨다.
이때, 프로세스 문맥의 나머지를 계속 저장할 수 있는데, 이것은 도 4d에 참조번호 475로 나타낸 5개의 STR 명령에 의해 행해진다. 특히, 첫 번째 STR 명령어는 R1의 내용을 감시자 스택의 특정한 위치에 저장하는데, 이 레지스터는 실제로 원래의 RO 데이터를 포함하고, R1의 내용은 이미 도 4c에서 실행된 명령어들 중에서 한 개에 의해 감시자 스택으로 이미 이동하였다는 점에 주목하기 바란다. 그후, 레지스터들 R2, R3, R12 및 LR_SVC의 내용도 감시자 스택(410)으로 이동한다. 이때, 다른 레지스터의 내용은 그후에 호출되는 ATPCS(ARM Thumb Procedure Calling Standard)를 준수하는 코드에 의해 자동적으로 저장되므로, (코드가 ATPCS를 준수한다면) 이 시점에서 감시자 스택에 명시적으로 저장될 필요는 없다는 점에 주목하기 바란다.
도 4e는 이 시점에서의 감시자 스택(410)의 최종 상태를 나타낸 것이다. 이때, 도 4d 및 도 4e에서, 인터럽트 스택(400)은 여전히 도 4a에 도시된 인터럽트 스택으로 원래 이동한 3개의 데이터를 포함하는 것으로 도시되어 있다는 점에 주목하기 바란다. 그러나, 이 데이터는 감시자 스택에 저장되기 때문에 중복되며, 따라서, 모든 의도와 목적에 비추어, 이 인터럽트 스택(400)은 비워 있는 것으로 생각할 수 있다는 것은 자명하다. 따라서, 이때, 인터럽트를 계속진행하여 서비스하는 것이 안전한데, 이것은 보통 다른 작업으로의 문맥전환을 통해 일어난다.
위에서 알 수 있는 것과 같이, 이와 같은 종래기술을 사용하면, 인터럽트 처리기는 인터럽트가 다시 인에이블될 수 있기 전에 11개의 D 형 사이클과 9개의 N 형 사이클이 걸리므로, 비교적 높은 인터럽트 대기시간을 낳게 된다. 또한, 인터럽트가 다시 인에이블되기 전에 필요한 명령어의 수도 상당해진다. 도 4a 내지 도 4e와 조합하여 전술한 코드 단편으로부터 알 수 있는 것과 같이, 이와 같은 종래의 접근방법을 사용하여 인터럽트가 다시 인에이블될 수 있기 전에, 20개의 명령어가 실행될 필요가 있다.
종래의 기술에 따라 도 3a 및 도 3b에 도시된 것과 같은 시스템을 구현하기 위해 인터럽트의 개시시에 필요한 프로세스를 설명하였으므로, 이하에서는 본 발명의 바람직한 실시예에 따른 시스템을 구현하기 위해 인터럽트의 개시시에 필요한 프로세스를 설명한다. 특히, 설명을 돕기 위해, 본 발명의 바람직한 실시예에 따른 도 3a 및 도 3b에 도시된 것과 같은 시스템을 구현하기 위해 인터럽트의 개시시에 필요한 코드를 나타낸 코드 단편을 이하에서 설명한다:
; SRS 명령어를 사용하여 직접 SVC 스택에 복귀상태를 저장한다
(D) SUB lr, lr, #4; 복귀 어드레스를 가리키도록 LR_IRQ를 조정
(2M) SRSDB sp_svc!; SVC 스택에 복귀상태를 저장
; 프로세서를 시스템(SVC) 모드로 변경하여, 동시에 인터럽트를 다시 인에이블시킨다.
; 복귀상태가 SVC 스택에 저장되었기 때문에, 이 시점에서 인터럽트를 다시 인에이블시키는 것이 안전하다.
; 따라서, 인터럽트 스택은 비어 있으며, 인터럽트
; 스택을 문맥전환할 필요없이(즉, 작업당 별개의 인터럽트 스택을 가질 필요없이)
; 문맥전환이 허용된다.
(D) MRS lr, cpse; cpsr 판독
(D) BIC lr, lr, #0x1f+0x80; 비트들을 마스크 아웃하고 인터럽트를 소거
(D) ORR lr, lr, #0x13; 또는 SVC 모드에 대한 모드 비트에
(D) MRS cpsr_c, lr; 새로운 모드와 인터럽트 비트를 다시 기록
; *** INTERRUPT RE-ENABLE ***
; RE-ENABLING 인터럽트 전의 사이클 계수값 = 5*D+2*M
; 이에 따라 인터럽트가 다시 인에이블된다. 프로세스 문맥의 나머지 부분을 계속 저장한다.
STMDB sp!, {r0-r3, r12, lr}
...; 인터럽트를 계속 수행 및 서비스
전술한 종래의 코드 단편과 마찬가지로, 괄호 안의 문자는 사이클의 수를 나타내며, SRSDB 명령어 옆의 문자 2M은 2 메모리 사이클을 표시한다.
이하, 전술한 코드 단편의 다수의 명령어에 의해 수행되는 프로세스를 개략적으로 나타낸 도 5a 내지 도 5d를 참조하여 이와 같은 코드 단편을 설명한다.
이 예에서는, 도 4a 내지 도 4e를 참조하여 이전에 설명한 예에서와 같이, 인터럽트 예외가 발생하여, 프로세서가 레지스터 520을 액세스하는 인터럽트 동작 모드에 들어갔다고 가정한다. 이와 같은 인터럽트 동작모드로부터의 프로세서의 복귀상태 데이터는 도 5a에 레지스터 530으로 나타낸 복귀상태 레지스터에 저장된다. 도 5a에는 인터럽트 스택(500)과 감시자 스택(510)도 도시되어 있다.
코드 단편은 전술한 종래의 코드 단편에 포함된 것과 동일한 SUB 명령으로 시작하는데, 이전에 설명한 것과 같이 이와 같은 명령어는 인터럽트 링크 레지스터 LR_IRQ가 올바른 복귀 어드레스를 가리키도록 보장하기 위해 필요하다.
그후, 바람직한 실시예에 따라 주어진 새로운 명령어, 즉 SRS 명령어가 수행되어, 인터럽트 동작모드에서 작동하는 동안 감시자 스택(510)에 복귀상태 데이터를 직접 저장한다. 이와 같은 명령어의 포맷은 나중에 설명한다. 그러나, 이때 감시자 스택의 어드레스 모드, 이 예에서는 "사전 감소(Decrement Before)"를 표시하기 위해 SRS 명령어에 문자 DB가 붙여진다는 점에 주목하기 바란다. 또한, 이 명령어는 복귀상태 데이터가 저장될 스택을 식별하는 필드를 포함하는데, 이 예에서 이와 같은 필드는 감시자 스택(510)에 대한 스택 포인터 SP_SVC를 포함한다. 마지막으로, 명령어의 끝의 느낌표는 복귀상태 데이터가 저장되면 스택 포인터가 갱신되어야 한다는 것으로 나타낸다.
SRS 명령이 실행되면, 인터럽트 스택 및 감시자 스택의 내용이 도 5b에 도시된 것과 같아진다. 특히, 레지스터 LR_IRQ 및 SPSR_IRQ의 내용이 감시자 스택(510)에 추가되고, 감시자 스택 포인터 SP_SVC가 갱신되었다는 점에 주목하기 바란다. 이 단계에서는, 인터럽트 동작모드로부터의 복귀상태 데이터의 내용이 감시자 스택에 저장되었기 때문에, 처리부의 동작모드를 감시자 모드로 변경하는 것이 가능하게 된다. 더구나, 이와 같은 복귀상태 데이터가 감시자 스택(510)에 직접 저장되고, 인터럽트 스택(500)이 비어 있는 상태로 유지되므로, 이 시점에서 인터럽트를 다시 인에이블시키는 것이 안전하게 된다. 인터럽트 스택(500)이 비어 있기 때문에, 인터럽트 스택을 문맥전환할 필요없이, 즉 작업당 별개의 인터럽트 스택을 가질 필요없이 문맥전환이 허용되므로, 이와 같은 프로세스는 도 3a 및 도 3b에 도시된 시스템과 같은 시스템 내에서 사용될 수 있다.
동작모드를 변경하고 인터럽트를 다시 인에이블시키는데 사용된 4개의 명령어를 도 5c에 참조번호 540으로 표시하였다. 이때, 도 5c는 감시자 동작모드로부터의 복귀상태를 포함하는 레지스터 560을 구비하며, 감시자 동작모드로부터 액세스 가능한 레지스터 550을 나타낸다.
이때, 프로세스는 계속 진행하여, 프로세스 문맥의 나머지 부분을 저장할 수 있다. 포함된 레지스터들이 감시자 스택의 순차 위치에 저장될 수 있기 때문에, 한 개의 STM 명령을 통해 이와 같은 동작을 행할 수 있는데, 이 명령어는 도 5c에 참조번호 570으로 표시하였으며, 프로세스를 감시자 레지스터(550)와 감시자 스택(510) 사이의 다수의 라인에 의해 개략적으로 표시하였다. STM 명령어에 붙여진 문자 DB는 감시자 스택이 사전 감소 어드레스 모드에서 동작한다는 것을 나타내며, STM 명령어에서 스택 포인터 ID 다음의 느낌표는 스택 포인터가 조정되어야 한다는 것을 나타낸다. 그후, 저장하고자 하는 레지스터는 이 명령으로 식별된다.
도 5d는 STM 명령이 수행된 후의 감시자 스택(510)의 내용을 나타낸 것이다. 이때, 데이터의 약간 다른 순서 이외에는, 감시자 스택 510의 내용은 도 4e를 참조하여 이전에 설명한 감시자 스택 410의 내용과 동일하므로, 도 5a 내지 도 5d를 참조하여 예시된 바람직한 실시예의 프로세스는 도 4a 내지 도 4e를 참조하여 예시한 이전의 프로세스와 동일한 결과를 제공한다는 것을 알 수 있다. 그러나, 이전에 포함된 코드 단편으로부터 명백한 것과 같이, 새로운 SRS 명령어를 포함하는 바람직한 실시예의 기술은, 인터럽트가 다시 인에이블될 수 있기 전에, 인터럽트 처리가 단지 5개의 D 형 사이클과 2개의 M 형 사이클을 취하도록 보장한다. 인터럽트가 다 시 인에이블될 수 있기 전에 필요한 명령어의 수를 비교하면, 종래의 접근방법에 따라 수행될 필요가 있는 20개의 명령어와는 달리, 바람직한 실시예의 접근방법을 사용한 인터럽트 처리기는 인터럽트를 다시 인에이블시키기 전에 단지 6개의 명령어를 실행할 필요가 있다.
따라서, 전반적으로, 본 발명의 바람직한 실시예의 접근방법을 사용하면, 인터럽트 처리기가 더 적은 수의 D 형 사이클, 더 적은 수의 M 형 사이클과 더 적은 수의 명령어를 취하게 된다. 또한, 느린 메모리 시스템에서는 M 형 사이클이 D 형 사이클보다 훨씬 느리고, 각각의 실행된 명령어에 대해, 명령어 그 자체를 페치하기 위해 행해지는 추가적인 메모리 페치가 존재할 수 있다는 점에 주목하기 바란다.
따라서, M 형 사이클이 D 형 사이클에 비해 4배 느린 예시적인 시스템을 들면, 이것은 바람직한 실시예의 기술을 사용하거나 사용하지 않는 인터럽트 처리기에 대해 다음과 같은 성능지수를 제공하며, 이때 다음의 수학식에서, (D)는 데이터 사이클의 수를, (M)은 메모리 사이클의 수를 (I)는 그 각각의 추가적인 메모리 페치를 일으킬 수 있는 실행되는 명령어의 수를 나타낸다:
바람직한 실시예의 기술을 사용하지 않을 때:
11(D)+9(M)*4+20(I)*4 = 127 사이클
바람직한 실시예의 기술을 사용할 때:
5(D)+2(M)*4+6(I)*3 = 37 사이클.
본 발명의 바람직한 실시예의 접근방법을 사용한 이점을 예시하였으므로, 이 하에서는 새로운 SRS 명령어를 더욱 상세히 설명한다. 특히, 본 발명의 바람직한 실시예의 SRS 명령의 축약된 배커스 나우어(Backus-Naur) 형식의 기술법을 이하에나타낸다:
Figure 112003018591067-pct00001
축약된 배커스 나우어 형식은 당업자에게 있어서 자명할 것이다. 그러나, 본 명세서에서 간단히 설명한다. 축약된 형태에서, 중괄호 "{...}" 안의 항목은 선택적인 항목을 표시하고, 괄호 "<...>" 안의 항목은 도면에서 설명한 부호의 확장과 대체될 수 있는 대체 심볼을 표시한다. 부호 "|"은 부호 목록에 있는 부호들을 분리시키기 위해 사용되며, "or"로 읽혀 이들 부호들 중에서 정확히 1개가 대체 심볼로 사용될 수 있다는 것을 나타낸다.
따라서, SRS 명령어는 프로세서 상의 사용가능한 모드들 중에서 한 개에 속하는 스택을 지정하는 <fully_qualified_stack_pointer>에 의해 지정된 스택에 프로세서의 복귀상태를 저장한다는 것을 알 수 있다. <fully_qualified_stack_ pointer> 다음에 "!"이 오면, 이것은 <fully_qualified_stack_pointer>가 연산이 완료한 후에 갱신된다는 것을 나타낸다.
ARM 프로세서의 예를 고려하면, 6가지 동작모드, 즉 사용자 모드, 감시자 모드, 중단 모드, 미정의 모드와 2개의 인터럽트 모드, 즉 IRQ 및 FIQ가 제공되므로, 전술한 축약된 배커스-나우어 형식에서 나타낸 것과 같이, <fully_qualified_ stack_pointer>는 SP_USER, SP_FIQ, SP_IRQ, SP_SVC, SP_ABT 및 SP_UND의 값 중에서 어느 하나를 취할 수 있다.
<COND>는 연산을 실행하도록 하기 위해 참이 되어야 하는 다수의 조건 중에서 한 개를 지정한다. 프로세서에 의해 액세스 가능한 CPSR 레지스터는 이하에서 N, Z, V, C로 불리는 4개의 플래그를 포함한다. 최종 산술 연산의 결과가 음이면 플래그 N은 1로 설정되고, 최종 산술 연산의 결과가 제로이면 플래그 Z는 1로 설정되며, 최종 산술 연산의 결과가 오버플로우되면 플래그 V는 1로 설정되고, 최종 산술 연산의 결과가 자리올림을 발생하면 플래그 C는 1로 설정된다. 전술한 SRS 명령어의 배커스-나우어 형식에서는, 각각의 값의 설명과 함께 <COND> 필드가 취할 수 있는 다수의 값과, CPSR 레지스터에서 사용가능한 N, Z, V 및 C 플래그의 항목으로 이것과 동등한 것에 대한 판정을 나타낸 테이블이 제공된다. 따라서, 이 테이블은 실제로 프로세서가 CPSR 레지스터에 존재하는 N, Z, V 및 C 플래그에 근거하여 명령을 실행할지 여부를 결정하는 방법을 설명한다. 일례로서, <COND> 필드가 값 MI로 설정되면, 프로세서는 플래그 N이 1로 설정되었는지 여부를 파악하기 위해 검사하여, 그렇다면 명령어를 실행하고, 그렇지 않으면, 명령어가 실행되지 않는다. <COND> 필드가 지정되지 않으면, 이것은 연산이 항상 실행되어야 한다는 것을 표시하는 "AL"의 <COND> 심볼을 지정하는 것과 동일하다.
<addr_mode> 필드는 연산을 위한 어드레스 지정 모드를 나타내는데, 바람직한 실시예에서 사용가능한 다양한 어드레스 지정 모드는 명령어의 축약된 배커스 나우어 형식과 연계하여 위에서 설명하였다. 전술한 것과 같이, <fully_qualified_ stack_pointer> 필드는 프로세서의 실행 모드들 중에서 한 개에 속하는 스택 포인터의 완전 규정화 명을 나타낸다.
다음은 축약된 배커스-나우어 형식으로부터 유도될 수 있는 SRS 명령어의 예를 나타낸 것이다:
SRSDB SP_SVC!
SRSEQDB SP_SVC!
SRSEQDB SP_SVC
도 6은 본 발명의 바람직한 실시예에 따른 데이터 처리장치를 포함한 시스템을 나타낸 블록도이다. 바람직한 실시예에 있어서, 데이터 처리장치는 CPU(10) 내부에 설치된 CPU 코더(60)의 형태를 갖는다. CPU 코어(60)는 데이터 처리 명령어를 실행하는 처리부와 이 처리부에 의해 액세스 가능한 레지스터 세트(70)를 포함한다. CPU(10)는 보통 CPU 코어(60)와 메모리 관리부(Memory Management Unit: MMU)(45)와 캐시(50) 등의 다수의 다른 선택적 구성요소를 구비한다.
CPU(10)는 보통 버스(30)를 통해 다른 구성요소에 연결되므로, 판독 전용 메모리(ROM)(40)와 랜덤 액세스 메모리(RAM)(20)에 접속된다. ROM(40)은 다른 무엇보다도 CPU 코어(60)에 의해 실행될 명령어(80)를 저장하도록 구성된다. 본 발명의 바람직한 실시예에 따르면, 처리부의 각각의 동작모드에 대해 설치된 스택들(90)은 RAM(20) 내부에 기억될 수 있다.
본 발명의 바람직한 실시예의 전술한 설명으로부터, 바람직한 실시예의 사용은 다수의 이점을 제공한다는 것을 알 수 있다. 첫째, 본 발명의 바람직한 실시예의 이용은 코드 크기가 줄어들게 한다. 전술한 실시예에 있어서는, 인터럽트 처리기의 개시시에 명령어의 수를 20개로부터 6개로 줄이기 위해 바람직한 실시예가 어떻게 사용될 수 있는가를 나타낸 바 있다. 더구나, 바람직한 실시예의 사용은 일반적으로 향상된 성능을 제공한다. 마찬가지로, 전술한 실시예에서는, 바람직한 실시예가 인터럽트 처리기의 개시시에 사이클의 수를 127로부터 37로 줄이는 방법을 설명한 바 있다. 이들 사이클은 보통 인터럽트가 디스에이블되는 임계점에서 발생하므로, 사이클의 수의 감소는 인터럽트 대기시간이 줄어들게 한다.
바람직한 실시예의 기술을 채용하는 또 다른 놀라운 이점은, 이것이 프로세서의 전력 소모를 줄이는데 사용될 수 있다는 것으로, 전력 소모는 휴대 전화기 및 개인 휴대 정보단말(PDA) 등의 배터리로 전원이 공급되는 장치에서는 매우 중요하다. 이전에 주어진 예와 예시에 근거한 실시예를 고려하고, 이 시스템이 언제나 높은 우선순위 인터럽트를 서비스하기 위해 10 마이크로초의 인터럽트 응답시간을 유지하는 것이 필요하다고 가정하면, 종래기술의 접근방식을 사용하는 시스템의 경우에, 10 마이크로초에 127 사이클이 실행될 수 있도록 보장하기에 충분한 속도에서 시스템이 동작하여야 한다는 것은 자명하다. 그러나, 이 시스템이 본 발명의 바람직한 실시예의 기술을 채용하면, 10 마이크로초에 37 사이클을 실행시킬 수 있도록 보장하는데 충분한 속도에서 시스템이 동작하면 된다. 따라서, 다음의 수식이 필요한 최소 클록속도를 결정한다:
바람직한 실시예의 기술을 사용하지 않는 경우:
1.0E-5초/127 사이클 = 7.874E-08 초/사이클
1/1.874E-08 = 초당 1.27E+7 사이클 = 12.7 MHz
바람직한 실시예의 기술을 사용한 경우:
1.0E-5초/37 사이클 = 2.701E-08 초/사이클
1/2.701E-08 = 초당 3.7E+6 사이클 = 3.7 MHz
프로세서의 전력 소모가 주파수에 대해 대략 직선관계를 가지므로, 바람직한 실시예의 기술을 사용하는 시스템은 바람직한 실시예의 기술을 채용하지 않은 유사 한 시스템의 전력의 대략 29%(3.7÷12.8x100)를 사용하게 된다.
본 발명의 특정한 실시예를 설명하였지만, 본 발명은 이에 한정되지 않으며, 본 발명의 범주 내에서 다양한 변형 및 부가가 이루어질 수 있다. 예를 들면, 본 발명의 범주를 벗어나지 않으면서 독립항의 특징부를 갖는 이하의 종속항들의 특징부의 다양한 조합이 행해질 수 있다.

Claims (18)

  1. 복수의 동작 모드를 갖고, 각 동작 모드가 그 동작 모드에 관련된 데이터를 저장하기 위한 대응하는 스택을 가지며, 데이터 처리 명령어를 실행하기 위한 처리부를 구비하고,
    상기 처리부가 현재 동작모드를 유지하면서, 현재 동작 모드로부터의 상기 처리부의 복귀상태 데이터를 현재 동작 모드와 다른 동작 모드에 대응하는 스택에 기록하기 위해 복귀상태 데이터 처리 명령어에 응답하는 것을 특징으로 하는 데이터 처리장치.
  2. 제 1항에 있어서,
    상기 복귀상태 데이터 처리 명령어는 예외의 발생시에 호출되는 것을 특징으로 하는 데이터 처리장치.
  3. 제 2항에 있어서,
    상기 예외는 소정의 예외 세트 중 어느 하나인 것을 특징으로 하는 데이터 처리장치.
  4. 제 3항에 있어서,
    상기 소정의 예외 세트는 1개 이상의 인터럽트를 포함하는 것을 특징으로 하는 데이터 처리장치.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    각 동작 모드에 대한 처리부의 상기 복귀상태 데이터를 저장하는 복수의 복귀상태 레지스터를 포함하는 레지스터 세트를 더 구비하고,
    상기 처리부가 현재 동작 모드로부터의 상기 처리부의 복귀상태 데이터를 포함하는 복귀상태 레지스터만을 액세스할 수 있는 것을 특징으로 하는 데이터 처리장치.
  6. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    각 스택은 그 스택 내부의 위치를 식별하는 그 스택과 관련된 스택 포인터를 갖고, 특정한 스택에 대한 상기 스택 포인터만이 대응하는 동작 모드로부터 액세스할 수 있는 것을 특징으로 하는 데이터 처리장치.
  7. 제 5항에 있어서,
    각 스택은 그 스택 내부의 위치를 식별하는 그 스택과 관련된 스택 포인터를 갖고, 특정한 스택에 대한 상기 스택 포인터만이 대응하는 동작 모드로부터 액세스될 수 있고, 상기 레지스터 세트가 각 스택에 대한 상기 스택 포인터를 저장하는 복수의 스택 포인트 레지스터를 구비하고, 상기 처리부가 현재 동작 모드에 대응하는 상기 스택에 대한 상기 스택 포인터를 포함하는 상기 스택 포인트 레지스터만을 액세스할 수 있는 것을 특징으로 하는 데이터 처리장치.
  8. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 복귀상태 데이터 처리 명령어는 상기 처리부의 상기 복귀상태 데이터가 기록될 상기 스택을 식별하는 스택 식별자 필드를 포함하는 것을 특징으로 하는 데이터 처리장치.
  9. 제 8항에 있어서,
    상기 스택 식별자 필드가 상기 처리부의 복귀상태 데이터를 기록하고자 하는 스택에 대한 상기 스택 포인터를 특정하도록 구성됨으로써, 상기 처리부가 그 스택에 상기 복귀상태 데이터를 기록할 때 그 스택에 있는 해당 위치를 액세스할 수 있도록 구성된 것을 특징으로 하는 데이터 처리장치.
  10. 제 9항에 있어서,
    상기 복귀상태 데이터 처리 명령어는, 상기 복귀상태 데이터가 상기 스택에 기록되었을 때 상기 스택 포인터가 갱신될 것이라는 것을 표시하도록 설정된 선택적인 갱신 필드를 포함하는 것을 특징으로 하는 데이터 처리장치.
  11. 제 8항에 있어서,
    상기 복귀상태 데이터 처리 명령어는 상기 복귀상태 데이터가 기록될 스택의 어드레스 모드를 식별하는 어드레스 모드 필드를 포함하는 것을 특징으로 하는 데이터 처리장치.
  12. 제 8항에 있어서,
    상기 복귀상태 데이터 처리 명령어는 상기 복귀상태 데이터 처리 명령어의 실행을 위한 조건을 특정하는 조건 필드를 포함함으로써, 상기 조건이 만족될 경우에만 상기 복귀상태 데이터 처리 명령어가 실행되는 것을 특징으로 하는 데이터 처리장치.
  13. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 현재 동작 모드는 예외 모드이고, 상기 다른 동작 모드는 특권 동작 모드인 것을 특징으로 하는 데이터 처리장치.
  14. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 현재 동작모드는 예외 모드이고, 상기 다른 동작모드는 상기 예외 모드로 들어가기 이전의 상기 처리부의 동작 모드인 것을 특징으로 데이터 처리장치.
  15. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 복귀상태 데이터는 저장된 프로그램 카운터와 저장된 프로세서 상태를 포함하는 것을 특징으로 하는 데이터 처리장치.
  16. 복수의 동작 모드를 갖고, 각 동작모드가 그 모드와 관련된 데이터를 저장하기 위해 대응하는 스택을 가지며, 데이터 처리 명령어를 실행하는 처리부를 구비한 데이터 처리장치를 동작시키는 방법에 있어서,
    현재 동작 모드를 유지하면서, 현재 동작 모드로부터의 상기 처리부의 복귀 상태 데이터를 현재 동작 모드와 다른 동작 모드에 대응하는 스택에 기록하도록 하는 것에 의해, 상기 처리부가 복귀상태 처리 명령어에 응답하도록 하는 단계를 구비한 것을 특징으로 하는 데이터 처리장치를 동작시키는 방법.
  17. 삭제
  18. 데이터 처리장치가 청구항 제16항에 기재된 방법을 수행하도록 하는 컴퓨터 프로그램이 기록된 기록매체.
KR1020037007021A 2000-11-27 2001-09-24 데이터 처리장치와 복귀상태의 저장방법 KR100848603B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0028869.6 2000-11-27
GB0028869A GB2369464B (en) 2000-11-27 2000-11-27 A data processing apparatus and method for saving return state
PCT/GB2001/004252 WO2002042914A1 (en) 2000-11-27 2001-09-24 A data processing apparatus and method for saving return state

Publications (2)

Publication Number Publication Date
KR20030072550A KR20030072550A (ko) 2003-09-15
KR100848603B1 true KR100848603B1 (ko) 2008-07-28

Family

ID=9903938

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037007021A KR100848603B1 (ko) 2000-11-27 2001-09-24 데이터 처리장치와 복귀상태의 저장방법

Country Status (13)

Country Link
US (1) US6904517B2 (ko)
EP (1) EP1337918B1 (ko)
JP (2) JP5295475B2 (ko)
KR (1) KR100848603B1 (ko)
CN (1) CN1227589C (ko)
AU (1) AU2001287927A1 (ko)
DE (1) DE60139567D1 (ko)
GB (1) GB2369464B (ko)
IL (2) IL155407A0 (ko)
MY (1) MY127357A (ko)
RU (1) RU2275679C2 (ko)
TW (1) TW556093B (ko)
WO (1) WO2002042914A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3634379B2 (ja) * 1996-01-24 2005-03-30 サン・マイクロシステムズ・インコーポレイテッド スタックキャッシングのための方法及び装置
US6880030B2 (en) * 2000-12-13 2005-04-12 Wind River Systems, Inc. Unified exception handling for hierarchical multi-interrupt architectures
US7313797B2 (en) * 2002-09-18 2007-12-25 Wind River Systems, Inc. Uniprocessor operating system design facilitating fast context switching
US7496896B2 (en) * 2003-07-17 2009-02-24 Computer Associates Think, Inc. Accessing return values and exceptions
WO2006072841A2 (en) * 2004-11-30 2006-07-13 Koninklijke Philips Electronics N.V. Efficient switching between prioritized tasks
US7853960B1 (en) 2005-02-25 2010-12-14 Vmware, Inc. Efficient virtualization of input/output completions for a virtual device
US7877629B2 (en) * 2005-06-01 2011-01-25 Sanmina-Sci Facilitating handling of exceptions in a program implementing a M-on-N threading model
TW200719141A (en) * 2005-11-07 2007-05-16 Cheertek Inc Flash memory access method and circuit of an embedded system
JP4961781B2 (ja) * 2006-03-14 2012-06-27 ソニー株式会社 情報処理装置、その起動方法およびプログラム
US7797681B2 (en) * 2006-05-11 2010-09-14 Arm Limited Stack memory selection upon exception in a data processing system
US7681022B2 (en) * 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism
WO2008122746A1 (en) * 2007-04-10 2008-10-16 Cambridge Consultants Limited Data processing apparatus
US7979685B1 (en) * 2007-11-27 2011-07-12 Oracle America, Inc. Multiple instruction execution mode resource-constrained device
US9645949B2 (en) * 2008-07-10 2017-05-09 Cambridge Consultants Ltd. Data processing apparatus using privileged and non-privileged modes with multiple stacks
US7853827B2 (en) * 2008-08-29 2010-12-14 International Business Machines Corporation Isotropic processor
GB2478733B (en) * 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
US20120054773A1 (en) * 2010-08-31 2012-03-01 International Business Machines Corporation Processor support for secure device driver architecture
US9405637B2 (en) 2011-01-18 2016-08-02 Texas Instruments Incorporated Locking/unlocking CPUs to operate in safety mode or performance mode without rebooting
US9116711B2 (en) 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US9213828B2 (en) 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US10210349B2 (en) 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain
US9202071B2 (en) 2012-02-08 2015-12-01 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
GB2499287A (en) * 2012-02-08 2013-08-14 Advanced Risc Mach Ltd Exception handling in data processing with different security domains
US9477834B2 (en) 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US9672164B2 (en) 2012-05-31 2017-06-06 Nxp Usa, Inc. Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address
CN103268145B (zh) * 2013-03-06 2016-08-17 上海云间半导体科技有限公司 用于保存访存指令的虚拟地址的方法
GB2538091B (en) * 2015-05-07 2018-03-14 Advanced Risc Mach Ltd Verifying correct code execution context
GB2543306B (en) * 2015-10-14 2019-05-01 Advanced Risc Mach Ltd Exception handling
CN109409086B (zh) * 2018-09-21 2021-04-13 中国科学院信息工程研究所 基于新增指令的检测堆栈中返回地址被篡改的装置
CN109409083B (zh) * 2018-09-21 2021-04-13 中国科学院信息工程研究所 检测堆栈中返回地址被篡改的装置
CN115080122A (zh) * 2022-07-22 2022-09-20 飞腾信息技术有限公司 处理器、用于保存和恢复上下文数据的装置、方法及芯片

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100588790B1 (ko) 1997-11-03 2006-10-04 프리스케일 세미컨덕터, 인크. 데이터처리기에서의후속명령처리에작용하는방법및장치

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3889243A (en) 1973-10-18 1975-06-10 Ibm Stack mechanism for a data processor
US4236204A (en) 1978-03-13 1980-11-25 Motorola, Inc. Instruction set modifier register
US4587632A (en) 1980-05-27 1986-05-06 At&T Bell Laboratories Lookahead stack oriented computer
US4922414A (en) 1982-12-17 1990-05-01 Symbolics Inc. Symbolic language data processing system
US4926322A (en) * 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
DE3726192A1 (de) 1987-08-06 1989-02-16 Otto Mueller Stacksteuerung
JPH01258040A (ja) * 1988-04-07 1989-10-16 Fujitsu Ltd スタック情報の退避,復元処理方式
US5136696A (en) 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5440749A (en) 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
JP3212656B2 (ja) * 1991-02-08 2001-09-25 株式会社日立製作所 データ処理システム及びマイクロコンピュータ
US5303378A (en) * 1991-05-21 1994-04-12 Compaq Computer Corporation Reentrant protected mode kernel using virtual 8086 mode interrupt service routines
JP2585905B2 (ja) * 1991-10-18 1997-02-26 松下電器産業株式会社 マルチタスク実行装置
US5640548A (en) * 1992-10-19 1997-06-17 Motorola, Inc. Method and apparatus for unstacking registers in a data processing system
US5455775A (en) 1993-01-25 1995-10-03 International Business Machines Corporation Computer design system for mapping a logical hierarchy into a physical hierarchy
GB2289353B (en) 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
US5638525A (en) 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5752035A (en) 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5619665A (en) 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US5838948A (en) 1995-12-01 1998-11-17 Eagle Design Automation, Inc. System and method for simulation of computer systems combining hardware and software interaction
JP2000501217A (ja) 1996-01-24 2000-02-02 サン・マイクロシステムズ・インコーポレイテッド 配列アクセス境界チェックを加速したプロセッサ
US6026485A (en) 1996-01-24 2000-02-15 Sun Microsystems, Inc. Instruction folding for a stack-based machine
WO1997027537A2 (en) 1996-01-24 1997-07-31 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
US6038643A (en) 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
US5742802A (en) 1996-02-16 1998-04-21 International Business Machines Corporation Method and system for efficiently mapping guest instruction in an emulation assist unit
US5761491A (en) * 1996-04-15 1998-06-02 Motorola Inc. Data processing system and method for storing and restoring a stack pointer
US6031992A (en) 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
JPH10105415A (ja) * 1996-09-25 1998-04-24 Nippon Denki Micom Technol Kk リアルタイムos
US5926832A (en) 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
EP0938703B1 (en) 1996-11-13 2003-07-02 Paran, Arik Real time program language accelerator
US5937193A (en) 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
US5953741A (en) 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US6003038A (en) * 1997-03-31 1999-12-14 Sun Microsystems, Inc. Object-oriented processor architecture and operating method
US6009499A (en) 1997-03-31 1999-12-28 Sun Microsystems, Inc Pipelined stack caching circuit
US5875336A (en) 1997-03-31 1999-02-23 International Business Machines Corporation Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system
US6088786A (en) 1997-06-27 2000-07-11 Sun Microsystems, Inc. Method and system for coupling a stack based processor to register based functional unit
US5892966A (en) 1997-06-27 1999-04-06 Sun Microsystems, Inc. Processor complex for executing multimedia functions
US6003126A (en) 1997-07-01 1999-12-14 International Business Machines Special instruction register including allocation field utilized for temporary designation of physical registers as general registers
US6317872B1 (en) 1997-07-11 2001-11-13 Rockwell Collins, Inc. Real time processor optimized for executing JAVA programs
EP1359501A3 (en) 1997-10-02 2007-11-21 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
DE69839913D1 (de) 1997-10-02 2008-10-02 Koninkl Philips Electronics Nv Datenverarbeitungsgerät zur verarbeitung von befeh
US6009509A (en) 1997-10-08 1999-12-28 International Business Machines Corporation Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
JPH11143732A (ja) * 1997-11-06 1999-05-28 Hitachi Ltd マイクロコンピュータ及びエミュレータ
US6070173A (en) 1997-11-26 2000-05-30 International Business Machines Corporation Method and apparatus for assisting garbage collection process within a java virtual machine
US6122638A (en) 1997-11-26 2000-09-19 International Business Machines Corporation Object-oriented processor and method for caching intermediate data in an object-oriented processor
US6148391A (en) 1998-03-26 2000-11-14 Sun Microsystems, Inc. System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses
US6374286B1 (en) 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
FR2779842B1 (fr) * 1998-06-15 2001-07-13 Schlumberger Ind Sa Procede de gestion de l'execution d'un programme dans un dispositif a circuit integre
US6338134B1 (en) 1998-12-29 2002-01-08 International Business Machines Corporation Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data
JP4072271B2 (ja) * 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100588790B1 (ko) 1997-11-03 2006-10-04 프리스케일 세미컨덕터, 인크. 데이터처리기에서의후속명령처리에작용하는방법및장치

Also Published As

Publication number Publication date
EP1337918A1 (en) 2003-08-27
US6904517B2 (en) 2005-06-07
DE60139567D1 (de) 2009-09-24
GB2369464A (en) 2002-05-29
JP2004514987A (ja) 2004-05-20
IL155407A (en) 2008-03-20
IL155407A0 (en) 2003-11-23
CN1476559A (zh) 2004-02-18
JP5295475B2 (ja) 2013-09-18
MY127357A (en) 2006-11-30
GB0028869D0 (en) 2001-01-10
TW556093B (en) 2003-10-01
AU2001287927A1 (en) 2002-06-03
KR20030072550A (ko) 2003-09-15
CN1227589C (zh) 2005-11-16
JP2011216118A (ja) 2011-10-27
EP1337918B1 (en) 2009-08-12
WO2002042914A1 (en) 2002-05-30
GB2369464B (en) 2005-01-05
RU2275679C2 (ru) 2006-04-27
US20020099933A1 (en) 2002-07-25

Similar Documents

Publication Publication Date Title
KR100848603B1 (ko) 데이터 처리장치와 복귀상태의 저장방법
EP0511674B1 (en) Single chip microcomputer
US5161226A (en) Microprocessor inverse processor state usage
US6314471B1 (en) Techniques for an interrupt free operating system
KR100934533B1 (ko) 연산 처리 시스템, 컴퓨터 시스템 상에서의 태스크 제어 방법, 및 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
US6209085B1 (en) Method and apparatus for performing process switching in multiprocessor computer systems
JP4024751B2 (ja) 共通の名前を有する複数のレジスタへの選択的なアクセス
US7941652B2 (en) Apparatus and computer program product for implementing atomic data tracing
KR100766732B1 (ko) 고속의 낮은 오버헤드의 콘텍스트 전환을 실행하는 디바이스 및 방법
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
JP3970609B2 (ja) プロセッサシステム
WO2001038970A2 (en) Buffer memories, methods and systems for buffering having seperate buffer memories for each of a plurality of tasks
JP3088303B2 (ja) キャッシュ・メモリ・バンク制御装置
JPWO2008114415A1 (ja) マルチプロセッシングシステム
JPS6349945A (ja) デ−タ処理装置のプロセス・ロ−ルイン方式
JPH08314850A (ja) 計算機システムのバスブリッジ
JPH09319598A (ja) 低コストシグナルマスク制御方式
JPH1196022A (ja) リアルタイム処理計算機
JP2000194554A (ja) 演算処理装置
JPH0738168B2 (ja) データ処理装置
JPS626329A (ja) デ−タ転送回路
JPH11134202A (ja) タスク切替え装置
JPH03158943A (ja) バッファ記憶・転送方式
Carle CS61C: Machine Structures
JPH0683614A (ja) マイクロコンピュータ

Legal Events

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

Payment date: 20130701

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140703

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150619

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160616

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 12