KR100368197B1 - 데이타처리장치 - Google Patents

데이타처리장치 Download PDF

Info

Publication number
KR100368197B1
KR100368197B1 KR1019950029112A KR19950029112A KR100368197B1 KR 100368197 B1 KR100368197 B1 KR 100368197B1 KR 1019950029112 A KR1019950029112 A KR 1019950029112A KR 19950029112 A KR19950029112 A KR 19950029112A KR 100368197 B1 KR100368197 B1 KR 100368197B1
Authority
KR
South Korea
Prior art keywords
exception
interrupt
address
register
vector
Prior art date
Application number
KR1019950029112A
Other languages
English (en)
Other versions
KR960011613A (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 KR960011613A publication Critical patent/KR960011613A/ko
Application granted granted Critical
Publication of KR100368197B1 publication Critical patent/KR100368197B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/30101Special purpose registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

리세트, 예외사상이나 인터럽사상 등의 예외 발생시에 그 예외에 대처하기 위한 예외처리프로그램을 실행하는 데이타 처리장치에 관한것으로, 예외사상의 발생시점에서 그것에 대처하기 위한 예외처리핸들러로 천이 또는 분기할 때까지의 천이시간을 단축하고, 예외사상에 응답하게 위한 예외처리 핸들러의 구성에 자유도를 부여하기 위해, TLB미스예외에 관한 예외처리 핸들러의 백터포인트는 레지스터 VBR의 벡터 베이스 어드레스를 1회 리드하고, 그것에 벡터 오프세트 (H'400)을 가산하여 취득하는 한편, TLB미스예외 이외의 예외요인에 관한 예외처리 핸들러의 벡터 포인트는 레지스터 VBR의 값(벡터 베이스 어드레스)에 벡터 오프세트를 가산하여 취득함과 동시에, 레지스터 EXPEVT 또는 INTEVT의 값을 1회 리드해서 얻은 어드레스 오프세트로서의 예외요인코드가 상기 얻어진 벡터 포인트에 가산되고, 이것에 의해 필요한 예외처리가 실행된다.
상기한 구성에 의하면, 에외발생에서 그것에 대처하는 핸들러로의 천이까지의 천이시간을 단축할 수 있고, 실제의 분기지 어드레스나 분기지의 핸들러의 사이즈에 대해서 자유도를 보증할 수 있다.

Description

데이타 처리장치
본 발명은 리세트, 예외 사상이나 인터럽트 사상등의 예외 발생시에 그 예외에 대처하기 위해 예외 처리 프로그램을 실행하는 데이타 처리장치에 관한 것으로, 특히 예외의 발생시점에서 그 예외에 대처하기 위한 예외처리 핸드러로 천이할 때까지의 천이시간을 단축하는 기술에 관한 것이다. 본 발명은 예를 들면 싱글칩 마이크로컴퓨터 또는 메모리 관리유닛 (memory management unit: MMU) 내장 마이크로프로세서에 적용해서 유효한 기술에 관한 것이다.
상기 테이타 처리장치에 포함되는 중앙처리장치를 사용한 데이타처리의 도중에 있어서, 그 데이타 처리장치의 명령 세트내에 정의되어 있지 않은 미정의 명령의 디코드, 무효한 연산의 발생, 가상기억에 있어서의 기억보호위반, TLB미스 등의 일반적인 예외사상 (일반예외 사상이라고도 한다: general exception events) 가 발생하는 경우나 데이타 처리장치의 외부주변회로에 있어서의 테이타 입출력동작의 종료를 중앙처리장치에 통지하기 위한 종료통지나 데이타 처리장치내의 통신모듈로부터의 수신요구 등의 인터럽트요구 interrupt reqest (일반 인터럽트사상이라고도 한다:general interrupt events)가 발생하는 경우가 있다.
상기와 같은 일반 예외사상이나 일반 인터럽트사상 등의 예외가 발생하면, 상기 중앙처리장치는 데이타 처리 프로그램의 명령의 실행을 억제하고, 발생한 예외에 대처하기 위한 예외처리 핸들러로 제어를 이행하고, 상기 예외처리 핸들러에 의해서 규정되는 데이타 처리를 실행하고,발생한 예외에 대처한다. 상기 예외처리 핸들러를 실행한 후, 중앙처리장치는 상기 실행을 억제한 명령을 재실행하거나 또는 상기 실행을 억제한 명령의 다음의 명령 어드레스로 복귀하여 중단하고 있었던 소정의 데이타 처리 프로그램을 계속한다. 그 때문에, 일반 예외사상이나 일반 인터럽트사상이 발생했을 때, 중앙처리장치는 그 내부의 프로그램 카운터의 값이나 상태 레지스터의 내부상태를 외부 메모리의 스택영역으로 세이브시키는 동작을 실행한다.
중앙처리장치의 처리가 예외처리 핸들러의 처리에서 상기 억제된 데이타 처리프로그램으로 복귀할 때,중앙처리장치는 상기 세이브시킨 프로그램 카운터의 값이나 상태 레지스터의 내부상태를 상기 외부 메모리의 스택영역에서 프로그램 카운터나 상태 레지스터에 각각 저장하고, 상기 억제된 테이타 처리프로그램을 계속한다. 소정의 데이타 처리프로그램에서 소정의 예외처리 핸들러의 처리로의 분기방법 으로서는 하드웨어 (논리회로) 에 의해서 각종 분기지 어드레스 (각종예외처리 핸들러의 선두 메모리 어드레스) 를 고정하는 방법이나 중앙처리장치에서 분기지 어드레스를 지정가능하계 하는 벡터방식이 채용되고 있다. 벡터방식은 예를 들면 인터럽트요구에 응답하기 위한 각종 예외처리 핸들러의 선두 어드레스를 저장한 벡터 테이블을 외부 메모리상에 배치하고, 중앙처리장치에서 상기 벡터 테이블의 포인터 (인터럽트 벡터 레지스터) 를 지정하고, 지정된 벡터 테이블에서 대응하는 예외처리 핸들러의 선두 어드레스를 리드하고, 리드한 선두 어드레스의 위치에서 필요한 예외처리 헨들러를 리드해서 실행한다.
또, 인터럽트요구등의 예외에 대해서 기재된 문헌의 예로서는 소화 62년 12월 25일에 주식회사 옵사 발행의 「마이크로컴퓨터 핸드북」 pp. 177 및 pp 178이 있다.
그러나, 상술한 벡터방식에서는 예외사상이 발생하고 그것에 대처할 때까지 벡터 테이블에서 대응하는 예외처리 핸들러의 선두 어드레스를 취득하기 위한 외부 메모리의 리드동작이 필요하계 된다. 따라서, 그 외부 메모리의 리드동작분 만큼 예외사상의 발생에서 대응 핸들러로 분기할 때까지의 천이시간이 길다는 것을 알았다. 또, 대응하는 예외처리 핸들러로 분기하기 전에 프로그램 카운터나 상태 레지스터, 더 나아가서는 범용 레지스터의 테이타 등을 외부 메모리상의 스택영역으로 세이브하는 조작을 실행하는 경우에는 그를 위한 외부 메모리의 라이트동작에 의해서도 예외사상에 대한 응답이 지연된다는 것을 알았다.
특히, 중앙처리장치의 동작에 동기해서 발생하는 T L B미스에 관한 예외에 대해서 고속으로 응답하는 것은 T L B미스의 발생시점에서 상기 억제된 명령의 재실행까지의 시간을 단축할 수 있다는 것을 의미하며, 중앙처리장치의 데이타 처리성능을 향상시키는데 있이서 매우 중요하다는 것이 본 발명자에 의해서 발견되었다. 왜냐하면 , TLB미스는 예외로서 분류되고 있지만, 실제로는 사용자가 작성한 데이타 처리 프로그램의 프로그래밍 미스에 의해 발생하는 본질적인 예의와는 달리, 프로그래밍 미스가 없는 데이타 처리 프로그램의 실행중에 있어서 통상적으로 발생하는 사상이다. 따라서, T L B미스에 고속으로 대처하는 것이 중앙처리장치의 데이타 처리성능을 향상시키는 것이다.
또, 각종 분기지 어드레스를 하드웨어에 의해서 완전하게 고정으로 하는 방법도 고려되지만, 이 방법은 사용자 기술에 관한 예외처리 핸들러의 맵핑이나 그 프로그램 사이즈에 대한 융통성이 없어 사용이 불편하다는 것을 알았다. 또, 분기지 어드레스를 생성하기 위한 하드웨어량도 증대한다고 고려된다.
본 발명의 목적은 예외사상의 발생시점에서 그것에 대처하기 위한 예외처리 핸들리로 천이 또는 분기할 때까지의 천이시간을 단축할 수 있는 데이타 처리장치를 제공하는 것이다.
본 발명의 다른 목적은 예외사상에 응답하기 위한 예외처리 핸들러의 구성에 자유도를 부여할 수 있는 데이타 처리장치를 제공하는 것이다.
본 발명의 또 다른 목적은 데이타 처리의 고속화와 밀접한 TLB 미스 예외와 같은 처리에 대해서는 그 처리로의 천이시간을 단축하는 것이 가능하고, 또한 예외처리로의 천이시간의 단축이 T L B 미스 예외만큼 데이타 처리속도의 고속화에 기여하지 않는다고 고려되는 예외사상이나 인터럽트 사상에 대해서는 예외처리 핸들러의 메모리상에서의 맵핑이나 예외처리 핸들러의 메모리 사이즈에 대한 높은 융통성을 부여하는 것이 가능한 데이타 처리장치를 제공하는 것이다.
본 발명의 또 다른 목적은 예외처리의 점에 있어서 물리적인 회로 규모의 축소와 데이타 처리의 고속화의 쌍방을 만족시킨 저코스트이며 또한 고속인 데이타 처리장치를 제공하는 것이다.
본 발명의 상기 및 그 밖의 목적과 새로운 특징은 본 명세서의 기술 및 첨부도면으로 부터 명확하게 될 것이다.
본원에 있어서 개시되는 발명중 대표적인 것의 개요를 간단히 설명하면 다음과 같다.
싱글칩 데이타 처리장치는 제1도에 예시되어 있는 바와 같이, 예외사상 (예를 들면 리세트, 일반 예외사상, 일반 인터럽트 요구) 의 발생에 응답하여 상기 예외사상에 미리 할당된 예외코드가 라이트되는 기억회로 (EXPEVT, INTEVT) 와 프로그램 카운터 (PC)및 상기 예외사상의 발생에 응답하여 소정의 명령 어드레스를 상기 프로그램 카운터에 라이트하고,상기 명령 어드레스에 할당된 제1 예외처리 핸들러를 실행가능하게 하는 제어수단 (CTRL) 을 포함하는 중앙처리장치 (CPU) 를 포함한다.
상기 제어수단은 상기 제 1 예외처리 핸들러내에 규정되는 처리에 따라서 , 상기 제 1 예외처리 핸들리에서 제 2 예외처리 핸들리로 분기시키기 위한 제 2 명령어드레스를 상기 기억회로에 라이트된 상기 요인코드를 어드레스 오프세트로서 이용해서 산출시키고, 얻어진 제 2 명령어드레스를 상기 프로그램 카운터에 설정한다.
상기 소정의 명령 어드레스로의 분기는 예를 들면 제 2도에 도시된 하드웨어에 의한 백터 포인트의 조작으로 된다. 상기 소정의 명령어드레스 (분기지의 벡터 포인트) 에 할당되는 제 1 예외처리 핸들러는 예를 들면 제 2도에 예시되는 바와 같이, 그 벡터 포인트에 고유한 1 개의 일반 예외사상인 T L B미스 예외처리 핸들러, 또는 그 벡터 포인트에 고유한 여러개의 예외사상 (예를 들면 T L B미스예외 이외의 여러개의 일반 예외사상) 에 공통인 예외처리 핸들러 또는 여러개의 인턴럽에 공통인 예외처리 핸들러로 된다.
상기 공통인 예외처리 핸들러에 있어서, 개개의 예외의 고유의 다른 예외처리 핸드러 (제 2 예외처리 핸들러)로 분기하기 위한 어드레스 오프세트로서 상기 요이코드가 이용된다. 상기 요인코드(어드레스 오프세트)에 대한 베이스 어드레스는 상기 공통한 예외처리 핸들러의 기술에 의해서 결정된다. 베이스 어드레스는, 예를들면 VBR (벡터 베이스 레지스터의 값) + H' 100 (기호 H' 는 16 진수인 것을 의미한다)이라도 또 분기시에 있어서의 프로그램 카운터의 값을 베이스 어드레스로 하고, 더 나아가서는 적당하게 연산해서 산출된 값을 베이스 어드레스로 하는 것도 가능하다.
상기 수단을 다른 관점에서 파악하면, 싱글칩 데이타 처리장치는 예외사상의 발생에 따라서 중앙처리장치에 의한 명령실행순서를 변경하기 위해, 벡터 베이스 어드레스에 대한 고정 오프세트인 벡터 오프세트를 예외요인의 수보다 적은 수만큼 갖는다.
본 발명에 따른 싱글칩 데이타 처리장치는 예외사상의 발생시에 상태 레지스터의 내부상태가 세이브되는 제 1 세이브 레지스터( S S R )와 프로그램카운터(PC)가 유지하고 있던 예외처리에서 복귀한 후에 실행될 명령을 나타내고 있는 복귀명령 어드레스가 세이브 되는 제 2 세이브 레지스터 (SPC) 를 포함한다. 상기 제 1 및 제 2 세이브 레지스터의 채용에 의해서 상태 레지스터의 내부상태나 복귀명령 어드레스의 세이브를 위한 외부 메모리의 메모리 액세스 횟수를 감소시킬 수 있다.
또, 본 발명에 따른 싱글칩 데이타 처리장치의 중앙처리장치는 제 2 도에 예시한 하드웨어에 의한 벡터 포인트의 조작을 위해, 산술논리연산회로 (ALU) , 상기 예외의 발생에 응답해서 소정의 값 (벡터오프세트) 을 발생하는 정수발생부 또는 연산수단 (CVG, SFT)및 외부 메모리에 기억된 여러개의 예외처리 핸들러의 베이스 어드레스를 저장하는 베이스 레지스터 (VBR) 을 갖는다. 상기 산술논리연산회로는 상기 제어회로의 제어하에서 상기 베이스 어드레스와 상기 소정의 값을 가산하고, 상기 소정의 명령 어드레스 (분기지명령어드레스) 를 발생한다. 예를 들어, 제 2 도에 따르면, T L B미스예외를 제외한 일반 예외의 벡터 오프세트는 H' 100으로 되고, T L B미스예외의 벡터 오프세트는 H' 400으로 된다. 상기 정수발생부는 2 비트의 정수를 발생하는 정수발생회로 (CVG) 와 상기 정수발생회로에서 출력된 2 비트의 정수를 소정량만큼 시프트하는 시프트회로(SFT)로 구성되어, 그 회로구성이 간단화되고 있다.
요인 코드를 기록하는 기억회로로서의 레지스터는 중앙처리장치 ( CPU ) 의 동작에 동기해서 발생하는 제 l 의 예외사상 (예를 들어 일반 예외) 에 할당된 제 1 레지스터 (EXPEVT) 와 중앙처리장치의 동작과는 비동기로 발생하는 제 2의 예외사상 (예를 들어 인터럽트)에 할당된 제 2 레지스터 (INTEVT) 로 된다. 또한, 리세트는 제 2 의 예외의 범주에 포함된다.
상기 상태 레지스터 (SR) 은 상기 싱글칩 데이타 처리장치의 동작상테가 사용자 프로그램이 주행되고 있는 사용자상태인지 또는 시스템 프로그램이 주행되고 있는 특권상태인지를 택일적으로 나타내는 데이타가 저장되는 제 1 제어비트 (MD) 파 상기 예외사상의 발생후 에 발생한 다른 예외사상을 수령할지 (accept) 무시할지 (mask) 를 지시하는 데이타가 저장되는 제 2 제어비트(BL)을 갖는다.
상기 제어수단은 상기 내부상태와 상기 복귀명령 어드레스를 상기 제 1 세이브 레지스터 (SSR) 과 상기 제 2 세이브 레지스터 ( SPC )로 각각 세이브시킨 후, 상기 제1 제어비트에 특권상태률 나타내는 데이타를 설정하고, 상기 제 2 제어비트에 상기 예외사상의 발생후에 발생한 다른 예외사상을 무시하는 (mask) 것을 나타내는 데이타를 설정하고, 상기 소정의 명령 어드레스에 할당된 제 1 예외처리 핸들러로 분기시킨다. 상기 제 1 및 제 2 제어비트에 대한 엑세스는 소정의 특권명령 (예를 들면 LDC, ST C ) 으로 가능하게 된다.
즉, 제 2 도에 예시된 바와 같이, 벡터 포인트에 할당된 상기 제1 예외처리 핸들러상에서의 프로세서 모드는 특권상태 및 예외의 다중수령 억제의 상태로 된다. 여기에서, 특권상태는 사용자상태에서 어드레스 에러로 되는 어드레스 공간을 액세스할 수 있는 상태이고, 사용자상태에서는 실행 불가능한 특권명령 (예를 들면 LDC, STC ) 를 실행할 수 있다는 점에 있어서 사용자상태와 다르다.
예외 발생시에 있어서의 내부상태의 세이브와 복귀 어드레스의 세이브를 제1및 제2 세이브 레지스터에 할 수 있도록 하기 위해, 벡터 포인트에 할당된 상기 제 1 예외처리 핸들리상에서는 새롭게 발생하는 예외의 다중 수령을 억제할지 억제하기 않을지를 결정해서 그 내용을 상기 제어비트에 반영하고, 다중으로 수령할 때는 상기 제 1 및 2 세이브 레지스터의 내용을 메모리에 세이브시킨다.
예외 발생시의 범용 레지스터의 메모리 세이브를 저감시키거나 또는 범용 레지스터에 대한 처리의 자유도를 향상시키기 위해, 여러개의 뱅크를 구성하는 제 1 및 제 2 범용 레지스터 세트가 마련된다.
상기 제1 및 제2 법용레지스터 세트의 한쪽은 상기 특권상태에 있어서의 범용 레지스터로서 이용되고, 상기 제 1 및 제 2 범용 레지스터 세트의 다른쪽은 상기 사용자상태에 있어서의 법용 레지스터로서 이용된다. 범용 레지스터의 레지스터 뱅크를 상기 특권상태에 있어서만 소프트웨어로 전환 가능하게 하면 좋다.
본 발명에 따른 싱글칩 데이타 처리장치는 또 명령 브레이크 컨트롤러 (UBC) 를 갖는다. 명령 브레이크 컨트롤러 (UBC) 는 브레이크 포인트 어드레스가 설정되는 명령 브레이크 어드레스 레지스터(IBR)을 포함하고, 상기 명령 브레이크 어드레스 레지스터에 설정된 명령 어드레스에 대응하는 명령이 중앙처리장치에 의해서 실행되었을 때 명령 브레이크 예외를 발생한다. 상기 제어수단은 예외의 다중 수령 억제가 지시된 상태에 있어서 상기 명령 브레이크 예외를 검출했을 때 상기 제 1 및 제 2 세이브 레지스터로의 내부상태 및 복귀명령 어드레스의 세이브를 실행하지 않고 명령 브레이크 예외핸들러로 분기시킨다. 상기 명령 브레이크 예외핸들러는 상기 상태 및 복귀어드레스 세이브용의 세이브 레지스터의 내용을 메모리에 세이브한 후, 상기 명령 브레이크 어드레스 레지스터가 보유하는 브레이크 포인트 어드레스를 이용해서 명령 브레이크 예외핸들러로 부터의 복귀명령 어드레스를 계산하고, 계산한 복귀명령 어드레스를 상기 제 2 세이브 레지스터에 라이트한다. 이것에 의해, 상기 예외의 다중 수령이 억제된 상태의 예외처리 핸들러로 상기 명링 브레이트 예외를 처리할 수 있게 한다.
상기에 있어서, 상기 제어수단은 또 예외의 다중 수령을 억제한 상태에 있어서 상기 명령 브레이크 예외 이외의 제 1의 예외를 검출했을 때, 상기 요인 레지스터에 그 요인 코드를 기록한 후에 리세트 예외의 핸들러로 분기시키고, 또 제 2의 예외를 검출했을 때는 예외의 다중 수령 억제의 상태가 해제될 때까지 제2의 예외의 수령을 억제한다.
상기한 수단에 의하면, 이하의 효과가 얻어진다.
벡터 포인트의 할당된 제 1 예외처리 핸들러는 어느 예외요인 (예를 들어 T L B 미스예외)에 대해서는 그 고유의 하나의 예외핸들러로 되고, 다른 예외요인 (예를 들어 T L B 미스예외 이외의 일반 예외)에 대해서는 각각의 요인에 대응해서 마련된 다른 예외처리 핸들러로 되는 제 2 예외처리 핸들러 (예를 들면 어드레스 에러 예외, T L B 프로텍트 위반예외) 로 분기시키기 위한 기술을 포함하는 공통 예외처리 핸들러로 된다.
전자에 있어서는 메모리 액세스를 수반하지 않고 하드웨어에 의한 처리만으로 특정의 제 1 예외처리 핸들러로 분기할 수 있으므로, 원하는 예외처리로 고속으로 이행할 수 있게 된다. 후자에 있어서는 또 다른 핸들러로 분기하기 위한 어드레스 오프세트로서 기억회로 (요인 레지스터) 리 예외요인코드를 이용하므로, 분기지 어드레스의 취득에 메모리상의 어드레스 테이블을 액세스하는 것이 필요로 되지 않는다. 따라서, 이 경우에도 원하는 예외처리 핸들러로의 고속의 이행이 가능하게 된다.
다른 관점에서 보면, 후자에 있어서 요인 레지스터에 유지되어 있는 예외요인코드는 또 다른 예외처리 핸들러로 분기하기 위한 어드레스 오프세트로서 이용할 수 있도록 코드할당이 실행되어 있다는 것이다. 예를 들면, 어드레스 환산으로 3 2바이트분에 상당하는 H' 20의 간격을 두고 코드할당이 실행되어 있다.
또, 후자에 있어서, 예외요인코드는 분기를 위한 어드레스 오프세트로서 이용되므로, 상기 오프세트에 대한 베이스 어드레스는 하드웨어에 의해서 결정되어 있는 벡터 포인트에 할당된 제 1 예외처리 핸들러의 기술에 따라서 자유롭게 결정할 수 있어, 실제의 분기지 어드레스나 분기지의 예외처리 핸들러의 사이즈에 대해서 자유도를 보증 할 있다.
내부상태 및 복귀명령 어드레스를 세이브하는 레지스터 (S S R , S P C) 를 채용하는 것은 예외 발생시의 세이브시에 메모리 액세스를 감소시킨다.
중앙처리장치의 동작클럭의 주파수가 인터럽트요구의 발생원으로 되는 주변모듈의 동작클럭의 주파수에 대해 여러배의 블럭주파수로 동작되는 경우, 중앙처리장치의 동작에 동기해서 발생되는 제1 예외사상으로서의 일반 예외와 비동기로 발생되는 제 2 예외사상으로서의 인터럽트요구의 쌍방에 대처하기 위해, 예외요인코드를 저장하는 레지스터는 상기 제 1 예외사상과 상기 제 2 예외사상에 대해서 각각 마련된다. 쌍방의 예외발생에 대해서 동일한 타이밍에서 예외요인 코드를 공통 레지스터에 라이트하기 위한 번거로운 처리를 피할 수 있도록 한다.
예외요인에 따라서 하드웨어에 의해 결정되어 있는 분기지의 핸들러 (제 1 예외처리 핸들러) 상에서 초기적인 프로세서 모드를 예외사상의 다중 수령 억제상태 및 특권상태에 따라서 일정하게 하는 것은 사용자가 상기 핸들리상에서 규정할 수 있는 예외처리의 내용에 높은 자유도를 보증할 수 있다.
범용 레지스터의 레지스터 뱅크를 특권상태에 있어서만 소프트 웨어로 전환할 수 있게 한 것은 특권상태에 있어서 사용자상태와는 다른 뱅크의 범용레지스터를 이용할 수 있게 되고, 예를 들면 예외 처리에 있어서 사용자상태에서 특권상태로 프로세서 모드를 전환할 때 범용레지스터의 내용을 메모리에 세이브시킬 필요가 없으므로 예외처리로의 이행을 고속화할 수 있다.
예외를 억제한 상태의 예외 핸들러중에서 명령브레이크 예외를 처리가능하게 하는 것은 다중으로 발생하는 예외의 수령이 금지되어 있는 상태의 디버그 대상 프로그램에 대해서도 임의의 위치에서 명령브레이크를 걸어 시스템 평가나 프로그램 디버그를 실행하는 것을 보증할 수 있다.
< 마이크로컴퓨터의 개요>
제 1도는 본 발명의 실시예에 관한 싱글칩 마이크로컴퓨터 (싱글칩 마이크로프로세서라고도 한다>의 블럭도이다. 동일 도면에 도시되는 마이크로컴퓨터M P U는 예를 들면 공지의 반도체 집적회로 제조기술에 의해 단결정 실리콘과 같은 1개의 반도체 기판 또는 반도체 칩에 형성된다. 마이크로컴퓨터M P U는 특히 제한되지 않지만, 내부버스 (internal buses)로서 시스템 버스 (system bus) S -b u s , 캐쉬버스C --b u s ( c ache bus) 및 주변버스(peripheral bus) P - b us를 포함한다. 즉, 마이크로컴퓨터M P U는 3버스 구성을 갖는다. 내부버스S -b u s , C - b u s , P - b u s 의 각각은 데이타를 전송하기 위한 데이타버스(data bus), 어드레스신호를 전송하기 위한 어드레스버스 (address bus) 및 제어신호를 전송하기 위한 제어버스(control bus) 를 구비하고 있다.
시스텝버스 S -- b u s 에는 중앙처리장치 (central processine unit) CPU , 승산기 (multiplier)MLT , 캐쉬메모리 (cache memory)CACHE, 메모리관리유닛 (memory management unit)MMU 및 명령 브레이크 컨트롤러(instruction break controller)UBC가 결합된다. 캐쉬버스 C - bus에는 상기 캐쉬메모리CACHE, 메모리관리유닛MMU , 명령 브레이크 컨트롤러UBC 및 버스상태 컨트롤러 (bus state controller) BSC가 결함된다. 버스상태 컨트롤러BSC에 접속되는 주변버스P- b u s에는 타이머TMU, 중앙처리장치CPU로의 동작클럭의 공급이 정지되어도 계시동작이 가능하게 되는 리얼타임 클럭회로 (realtime clock circuit)RTC, 외부메모리MMRY에 포함되는 다이나믹형 메모리의 리프레시동작을 제어하는 리프레시 컨트롤리 (refresh controller) REFC 및 마이크로컴퓨터MPU의 외부에 마련된 외부주변장치 (external peripheral devices) 사이의 직렬통신을 실행하는 직렬통신 인터페이스 (serial communication interface) SCI 등의 내장주변 모듈(internal peripheral modules) 이 접속된다. 또, 상기 버스상태 컨트롤러 BSC는 입출력회로 ( input and output circuit) EXIF를 거쳐서 , 외부버스 (external bus)EX- bus 접속가능하게된다.
상기 외부버스 EX - bus에는 외부메모리MMRY나 보조기억장치 DISK등이 접속되게 된다. 상기 버스상태 컨트롤러BSC는 상기 내장주변모듈 및 외부에 대한 버스사이클의 기동과 그것에 따르는 각종 버스제어를 실행한다.
인터럽트 컨트롤러 ( interrupt controller) INTC는 상기 내장주변 모듈 및 여러개의 비트의 외부 인터럽트단자(external interrupt terminals)IRLO∼ IRL3 에서 외부인터럽트요구 (external interruptrequest)를 받고, 인터럽트 우선레벨 (interrupt priority level)에 따라서 인터럽트 요구의 조정 (arbitration)등을 실행한다. 인터럽트 컨트롤러 INTC는 발생한 인터럽트 요구의 수령을 허가하는 경우, 상기 중앙처리장치CPU로 인터럽트 요구신호SIGl을 공급한다.
또, 상기 인터럽트 컨트롤러 INTC는 수령된 인터럽트 요구의 인터럽트 요인을 인터럽트 요인신호 SIG2에 따라서 메모리관리유닛MMU의 제어회로(TLBC)로 통지한다. 상기 인터럽트 요구신호 SIGI 을 받은 중앙처리장치CPU는 인터럽트 허가신호 (interrupt acknowledge signal) SIG3을 메모리관리유닛 MMU 의 제어회로TLBC로 공급한다. 상기 메모리관리유닛MMU의 제어회로TLBC는 인터럽트 허가신호 SIG3에 응답하여 허가된 인터럽트 요구에 대응하는 예외요인코드(exception code)를 후술하는 기억회로로서의 인터럽트 요인레지스터 INTEVT에 라이트한다. 중앙처리장치 CPU의 제어부CTRL 은 상기 인터렵트 요인레지스터 INTEVT에 세트된 예외요인코드를 사용해서 실행중인 데이타 처리 프로그램의 처리에서 소정의 인터럽트 처리로 그 처리를 분기한다.
본 실시예의 마이크로컴퓨터MPU는 논리어드레스공간 (logical address space)를 논리페이지 (logical page)라고 하는 단위로 분할하고, 그 페이지 단위로 물리어드레스(physical address)로의 어드레스변환(address translation) 을 실행 하기 위한 가상기억 (virtual memory) 를 서포트한다. 상기 메보리관리유닛MMU의 어드레스 변환버퍼(address translation look-aside buffer) TLB는 논리폐이지번 호와 물리페이지번호에 관한 여러개의 변환쌍 (transslation pair)을 TLB엔트리로서 저장한다. 상기 메모리관리유닛MMU의 제어부TLBC는 중앙처리장치CPU가 출력하는 논리어드레스를 어드레스 변환버퍼 TLB를 사용해서 물리어드레스로 변환하기 위한 제어를 실행한다.
TLB미스의 경우, 즉 중앙처리장치CPU가 출력한 논리어드레스에 대응하는 변환쌍이 TLB엔트리로서 어드레스 변환버퍼 TLB내에 기억되어 있지 않았던 경우, 제어부TLBC는 외부메모리MMRY상의 폐이지 테이블을 액세스해서 그 논리어드레스에 대응하는 변환쌍을 외부메모리MMRY에서 리드하도록 동작한다. 그 후, 제어부TLBC는 리드된 변환상을 TLB엔트리로서 어드레스 변환버퍼TLB에 라이트하도록 동작한다.
어드레스 변환버퍼TLB는 예를 들면 4웨이 세트 어소시에이티브(4way-set-associative)방식의 캐쉬메모리 (cache memory) 에 의해서 구성된다. TLB미스등의 어드레스 변환에 관한 후술하는 바와같은 각종 예외사상이 발생하면, 제어부TLBC는 그 예외사상에 대한 예외요인코드를 후술하는 기억회로서의 예외요인 레지스터EXPEVT에 세트하고, 또한 TLB미스등의 어드레스 변환에 관한 예외사상의 발생을 통지하기 위한 통지신호S1C4를 중앙처리장치CPU의 제어부CTRL로 공급한다.중앙처리장치CPU는 예외요인 레지스터EXPEVT에 세트된 예외요인코드를 사용하거나, 또는 예외요인 레지스터EXPEVT에 세트된 예외요인코드를 사용하지 않고 하드웨어에 의해 직접적으로 실행중인 데이타 처리프로그램의 처리에서 대응하는 예외처리로 그 처리를 분기한다.
중앙처리장치CPU는 예를 들면 4GB바이트의 논리어드레스공간을 서포트하기 위해, 32비트의 어드레스신호를 이용한다. 제 l도에 도시된 바와 같이, 중앙처리장치CPU는 예를들면 범용레지스터(general purpose registers) R0 ∼ R15와 산술논리연산기 (arithmetic and logic operation unit) ALU를 포함하는 연산부 (operation unit)(100) , 후술되는 프로그램 카운터(program counter) PC등의 시스템 제어용 레지스터 세트(system control register set) ( 110 ) 과 명령의 페치(fetch) ,명령의 해독(decoding) ,명령의 실행수순의 제어 및 연산의 제어를 실행하는 제어부CTRL을 포함한다. 이들회로장치 (RO∼ R15 , ALU, 110 , CTRL) 은 시스템버스S - bus에 결합된다. 중앙처리장치CPU는 외부메모리MMRY로 부터 실행될 명령을 페치하고, 그 명령기술(instruction code)에 따른 데이타처리를 실행한다. 제 l 도에 있어서, 제어신호SIC5는 중앙처리장치CPU에서 메모리관리유닛MMU로의 각종 제어신호 및 중앙처리장치CPU의 내부상태를 통지하기 위한 신호를 총칭하는 것이다.
캐쉬메모리CACHE는 특별히 제한되지는 않지만 4웨이 세트 어소시에이티브형식으로 된다. 캐쉬메모리CACHE에 대한 인덱스는 중앙처리장치CPU에서 출력된 논리어드레스의 일부를 사용해서 실행되고, 케쉬메모리 CACHE의 캐쉬엔트리의 태그부에는 물리어드레스가 보유된다. 인택스된 태그부에서 출력되는 논리어드레스는 어드레스 변환버퍼TLB에 의해 변환된 물리어드레스와 비교되고 그 비교결과에 따라서 캐쉬미스/히트가 판정된다. 캐쉬미스의 경우, 상기 캐쉬미스에 관한 데이타 또는 명령은 외부메모리에서 리드되고, 리드된 데이타 또는 명령은 새로운 캐쉬엔트리로서 캐시메모리CACHE 에 저장된다.
상기 명령 브레이크 컨트롤러 UBC는 디버그기능을 강화하기 위해 마련되어 있고, 시스템버스S - bus의 상태가 브레이크 조건과 일치하는지를 감시한다. 시스템버스A - bus의 상태가 브레이크조건과 일치하는 경우, 중앙처리장치CPU에 브레이크 인터럽트를 발생시킨다. 명령 브레이크 컨트롤러 UBC에 포함되는 IBR은 브레이크 조건으로서 명령어드레스등이 설정되는 명령 브레이크 어드레스 레지스터이다. 중앙처리장치CPU는 디버그 또는 에뮬레이션 개시전에 그를 위한 서비스 루틴을 실행하고,명령 브레이크 어드레스 레지스티 IBR에 브레이크할 명령의 선두어드레스나 오퍼랜드 어드레스등의 원하는 명령 브레이크 조건을 미리 설정한다. 마이크로 컴퓨티 MPU의 내부상태가 상기 명령 브레이트 조건과 일치하면, 후술하는 명링 브레이크 예외가 발생한다. 이것에 의해서, 중앙처리장치CPU는 디버그를 위한 명령 브레이크 핸들러를 실행할 수 있게 된다. 따라서, 마이크로컴퓨티MPU의 내부에서 브레이크 포인트제어를 실행할 수 있다.
〈CPU의 레지스터구성〉
다음에, 중앙처리장치 CPU 에 있어서의 레지스터구성이 설명된다.
범용레지스터 R0 ∼ R15는 제 3도에 도시되는 바와 같이, 각각 32 비트의 기억비트를 갖고, 도시되지 않은 인터페이스회로를 거쳐서 상기 시스템버스에 결합된다. 범용레지스터 R0 ∼ R7은 프로세서 모드에 의해서 전환되는 뱅크 레지스터로 된다 즉, 범용레지스터 R0 ∼ R7은 뱅크0과 뱅크1의 2세트 구비된다. 즉, 제 1 범용레지스티 세트로서의 R0 (BANKO) ∼ R7 (BANKO) 과 제 2 범용레지스터 세트로서의 R0 (BANKI) ∼ R7 (BANKl) 로 된다. 상기 프로세서 모드는 사용자의 응용 프로그램이 주행되는 동작상태를 의미하는 사용자 모드 (사용자상태) 와 오퍼레이팅 시스템 (operating system)등의 시스템 프로그램 (system program)이 주행되는 동작상태를 의미하는 특권모드(supervisor mode) (특권상태 : super-visor state)를 포함한다. 따라서, 특권상태와 사용자상태의 각각은 고유의 범용레지스터R0 ∼ R7을 갖는 것이 가능하다.
즉, 제 4 도에 도시되는 사용자상태에 있어서는 뱅크0의 범용레지스터 R0 ( BANKO) ∼ R7 (BANKO) 을 이용할 수 있게 된다.
특권상태에 있어서는 후술되는 상태레지스터 SR의 레지스터 뱅크비트 RB (SR, RB) 의 설정상태에 의해서 법용레지스터 R0 ∼ R7의 이용형태가 결정된다.
예를 들면, 제 5도에 도시되는 바와 같이,특권상태에 있어서 RB=0일 때 R0 (BANKO) ∼ R7(BANKO)은 범용레지스터로서 자유로운 이용이 허용되고, R0(BANKl) ∼ R7(BANKl)에 대해서는 제어로드명령(LDC) 및 제어스토어명령(STC)에 의한 액세스만이 허용된다. RB=1일 때는 상기와는 반대로 R0(BANKl) ∼ R7(BANKl) 이 범용레지스터로서의 자유로운 이용이 허용되고, R0 (BANKO) ∼ R7(BANKO)에 대해서는 제 어로드명령 (LDC) 및 제어스토어명령 (STC) 에 의한 액세스만이 허용된다. 상기 제어로드명령 (LDC) 및 제어스토어명령 (STC)는 특권상태에 있어서 실행가능한 특권명령 또는 시스템 제어명령의 1 예이다.
이와 같이 범용레지스터를 뱅크 레지스터 구성으로 하고, 특권상태에 있어서 사용자상태와는 다른 뱅크의 범용레지스터를 이용할 수있게 하는 것은, 예를 들면 예외처리에 있어서 사용자상태에서 특권상태로 프로세서 모드를 전환할 때 사용자상태에 있어서 범용적으로 사용되고 있던 범용레지스터R0 ∼ R7의 내용을 내부메모리MMRY의 스택영역에 세이브시키지 않아도 되도록 할 수 있다. 따라서, 중앙처리장치 CPU의 예외처리로의 이행을 고속화할 수 있다.
시스탬 레지스터는 제 3 도에 도시되는 바와 같이, 데이타 레지스터 하이 MACH, 데이타 레지스터 로우MACL, 복귀 어드레스 레지스터PR 및 프로그램 카운터P C로 된다. 데이타 레지스터 하이MACH 및 데이타 레지스터 로우MACL은 승산, 누적 및 곱합연산을 위한 테이타를 저장한다. 복귀 어드레스 레지스터PR은 서브루틴으로 부터의 귀환어드레스를 저장한다. 프로그램 카운터PC는 현재의 명령 개시번지를 지시한다.
컨트롤 레지스터는 제 6 도에 도시되는 바와 같이, 세이브 상태 레지스티 SSR , 세이브 프로그램 카운터 SPC , 글로벌 베이스 레지스터 GBR, 벡터 베이스 레지스터 VBR 및 상태 레지스터 SR로 이루어진다. 세이브 상태 레지그터 SSR은 예외사상의 발생시등에 있어서 현재의 상태 레지스터 SR의 값을 세이브시키는 레지스터이다.
세이브 프로그램 카운터SPC는 예외사상이 발생했을 때 대응하는 예외 처리에서 복귀한 후에 중앙처리장치CPU가 실행할 명령의 명령 어드레스를 유지하기 위한레지스터이다. 세이브 프로그램 카운터 SPC에는 예외사상이 발생했을 때 소정의 타이밍에서 프로그램 카운터PC의 값이 세이브된다. 글로벌 베이스 레지스터 GBR은 GBR 인다이렉트 어드레스 모드에 있어서의 베이스 어드레스를 저장하는 레지스터이다. GBR 인다이렉트 어드레스 모드는 직렬 통신 인터페이스 SCI등의 상기 내장 주변모듈의 레지스터 영역으로의 데이타 전송시 및 논리연산시에 이용된다. 벡터 베이스 레지스터VBR은 예외처리를 위한 벡터영역의 베이스 어드레스(벡터 테이블 베이스 어드레스) 를 보유한다. 상태레지스터SR은 연산에 있어서 캐리, 보로, 오버플로를 나타내기 위해 이용되는 T 비트, 메모리 액세스 제어에 이용되는 S비트, 인터럽트 요구에 대한 마스크 레벨을 4비트로 나타내는 인터럽트 마스크비트IMASK, 제산에 이용되는 M 및 Q비트, 상술한 레지스터 뱅크 비트RB , 블럭비트 BL, 프로세서 오퍼레이션 모드비트MD 및 제로비트를 포함한다. 블럭비트BL은 예외를 마스크하기 위해 이용되고, BL =1은 예외를 마스크하는 것을 지시하고, BL=O은 예외를 허용하는 것을 지시한다. 모드비트MD는 MD = 1에 의해 특권모드를, MD = 0 에 의해 사용자모드를 나타낸다. 상기 M, Q, S, T의 각 비트는 사용자모드에 있어서, 소정의 전용명령을 실행한 중앙처리장치CPU에 의해서 세트 또는 클리어하는 것이 가능하다. 그밖의 모든 비트는 특권모드에 있어서만 중앙처리장치CPU에 의해서 리드, 라이트 가능하게 된다. 상기 컨트롤 레지스터에 대한 라이트는 제어로드명령 (LDC) 를 실행하는 중앙처리장치 CPU에 의해서 실행되고, 상기 컨트롤 레지스터에 대한 리드는 제어스토어명령(STC)를 실행하는 중앙처리장치CPU에 의해서 실행된다.
< 마이크로컴퓨터의 어드레스공간 >
본 실시예의 마이크로컴퓨터MPU는 4GB (기가바이트) 의 논리어드레스공간을 서포트하기 위해 32비트의 어드레스를 이용한다.
상기 논리어드레스는 공간번호에 따라서 확장가능하게 된다. 제13도는 특권모드의 어드레스공간콰 사용자모드의 어드레스공간과의 어드레스 맵핑을 도시한 것이다. 동일도면에 있어서, "Mapped"로 표시되는 영역은 어드레스 변환버퍼TLB를 이용한 어드레스 변환의 대상으로 된다.
H' FFFFFFFF~H' 80000000 의 영역은 특권모드에 있어서 액세스 가능한 영역으로 되고, 사용자모드에서의 액세스는 어드레스 에러로 된다. 어드레스영역P4는 컨트롤 스페이스이고, 주변모듈등의 컨트롤 레지스터등이 맵핑된다.
어드레스영역P1, P2는 고정된 물리어드레스를 갖는 영역이고, 어드레스 변환버퍼TLB를 이용한 어드레스 변환의 대상으로는 되지않는다. 어드레스영역 P1 , P2의 논리어드레스는 일정 정수의 가산 또는 감산에 의해서 물리어드레스로 변환된다. 따라서, 특권상태에 있어서, 어드레스영역 P1, P2를 액세스할 때, TLB미스를 비롯한 어드레스 변환에 관계된 예외사상이 발생하는 경우는 없다.
일반 인터럽트사상이나 일반 예외사상등의 각종 예외핸들러의 물리어드레스를 어드레스영역P1 또는 P2에 할당하는 것에 의해, TLB미스를 비롯한 어드레스변환에 관계된 예외사상이 예외처리중에 새릅게 발생하는 일이 없게 된다. 즉, 어드레스변환에 관계된 예외 사상이 다중으로 발생하는 사태를 회피할 수 있고, 이것에 의해서 데이타처리의 효율화에 기여할 수 있다.
특히, 어드레스영역 P2는 캐쉬메모리 CACHE에 의한 캐쉬의 대상으로는 되지않고, 한편 어드레스영역 P1은 캐쉬의 대상으로 된다.
예외처리 핸들러에 관해서 언급하면, 여러개 존재하는 예외처리 핸들러중 어느 예외처리 핸들러를 어드레스영역 P1 또는 P2에 할당할것인가는 그 예외처리의 성질에 따라서 결정된다. 예를 들면. TLB 미스예외에 대처하기 위한 예외처리 핸들러와 같이 고속처리가 요구되는 예외처리 핸들러는 어드레스영역 P1에 할당되는 것이 유리하다. 한편, 예외처리의 고속성이 요구되지 않는 예외처리 핸들러는 캐쉬메모리를 다른 데이타로 해방해 두기 위해서 어드레느영 P2에 할당하는 것이 유리하다.
<예외처리의 개요>
예외처리는 특별한 처리가 요구되기 때문에 현재의 프로그램 실행을 예외적으로 다른 처리로 분기시키는 처리로서,중앙처리장치CPU는 현재의 명령 (그 실행은 후술하는 인터럽트 요구에 대해서는 완료까지 계속하는 것이 허용된다) 실행을 억제하고 또한 사용자 기술에 따른 예외핸들러로 그 제어를 이행하는 것에 의해서 그 예외처리의 요구에 응답한다. 예를 들면, 예외처리는 현재 실행중인 명령과의 관계에서는 3가지의 처리로 분류할 수 있다. 제 1 의 처리는 현재 실행중인 명령을 무시하고 예외핸들러의 처리로 분기하는 처리이다. 제 2 의 처리는 현제 실행중인 명령을 예외핸들러의 처리완료 후에 재실행하는 처리이다. 제 3의 처리는 현재 실행중인 명령실행을 완료한 후에 예외핸들러의 처리로 분기하고 분기지에서의 처리완료후에 분기전의 상태로 복귀하는 처리이다.
후자의 2가지에 대해서는 일반 예외와 같은 제 1의 예외사상과 소위 인터럽트 요구와 같은 제 2의 예외사상으로서 구별할 수 있다.
인터럽트 요구와 같은 제 2의 예외사상은 중앙처리장치CPU의 동작과는 비동기로 발생하므로, 실행중인 명령이 실행완료된 단계에서 수령되고, 인터럽트처리에 대응하는 예외처리 핸들러의 처리가 종료하면, 상기 실행완료된 명령의 다음의 명령으로 중앙처리장치 CPU의 처리가 복귀된다. 일반 예외와 같은 제 1의 예외사상은 중앙처리장치 CPC의 동작에 동기해서 발생하므로, 그 요구의 원인이 제거된후, 상기 예외처리의 요구가 발생된 시점에서 중앙처리장치CPU가 실행하고 있던 명령이 중앙처리장치 CPU에 의해서 재실행된다.
단, 모든 예외처리에는 쌍방의 정의와 합치되지 않는 것이 존재하는것은 물론이다.
제 7도는 벡터로서 할당된 예외사상을 도시한 것이다.
예외처리는 제 7도에 도시되는 바와 같이, 리세트처리, 중앙처리장치 CPU의 동작에 동기해서 발생하는 예외사상(일반예외)에 대한 처리, 중앙처리장치 CPU의 동작과 비동기로 발생하는 인터럽트요구에 대한 처리로 크게 구분된다. 각각의 예외처리에 있어서, 현재 실행중인 명령에 대한 처리는 동일도면에 도시되는 바와 같이, 무시(Aborted), 재실행 (Retried) 및 완료 (Completed)의 3종류로 크게 구분된다.
1) 리세트처리는 파워 온 리세트(Power-On)와 매뉴얼리세트(Manual Reset)를 포함한다. 예를 들면, 파위온 리세트는 전원투입에 의해서 리세트신호가 어서트되는 것을 조건으로 중앙처리장치CPU나 내장주변모듈의 초기화를 실행하는 리세트처리로 된다.
2) 일반 예외는 중앙처리장치CPU의 내부에서 발생하는 예외와 메모리관리장치MMU에 의한 어드레스변환시에 발생되는 예외로 크게 구분된다.
전자의 예외사상으로서 예약명령예외 (Reserved Instruction Exception), 슬롯 부당명령예외(Illegal Slot Instruction Exception), 트랩 명령예외 (Unconditional Trap) 및 명령브레이크예외 (User Breakpoint Trap)이있다.
후자의 예외사상으로서 명령 액세스시와 데이타 액세스시에 있어서의 어드레스 에러예외 (Address Error), 명령 액세스시와 데이타 액세스시에 있어서의 TLB미스예외 (TLB Miss) , 명령 액세스시와 데이타액세스시에 있어서의 TLB 무효예외 (TLB Invalid) , 명령 액세스시와 데이타 액세스시에 있어서의 TLB 프로텍트 위반예외 (TLB Protection Violation), TLB 이니셜 페이지 라이트 예외 (Initial Page Write)가있다.
상기 TLB미스는 어드레스 변환버퍼TLB의 어드레스 비교가 불일치인 경우에 발생하여, 상기 불일치에 관한 논리어드레스의 페이지테이블 엔트리를 외부메모리MMRY에서 어드레스 변환버퍼TLB로 로드하는 처리로 된다. 트랩명령예외는 TRAP명령을 실행하는 것을 조건으로 발생하고, 상기 명령의 이미디어트값을 사용한 분기지의 핸들러에 의해서 규정되는 처리를 실행하는 것으로서, 소프트 웨어 인터럽트로서 간주할 수 있다. 예약명령예외는 지연분기명령을 이용할 때, 지연슬롯 이외에 있는 미정의 명령코드를 디코드하는것 등을 조건으로 발생하여 분기지의 핸들러에 의해 규정되는 처리를 실행한다. 명령브레이크예외는 레지스터 IBR에 설정된 브레이크 조건이 일치한 것을 조건으로 발생하여 분기지의 핸들러에 의해 규정되는 처리를 실행한다.
3) 인터럽트 요구는 마스크 불가능한 인터럽트(Nonmaskable Interr-upt) , 외부 인터럽트(External Hardware Interrupt) 및 내장주변모듈 인터랍트 (Peripheral Module Interrupt) 를 포함한다.
예외처리의 우선레벨 (Priority Level)에 관해서는 특별히 제한되지는 않지만, 제 7도에 도시하는 바와 같이, 이하와 같이 정의된다.
즉, 리세트는 우선레벨 1에 할당되고, 일반 예외는 우선레벨 3에 할당되며, 마스크 불가능한 인터럽트 요구는 우선레벨 2에 할당되고, 그밖의 인티럽트 요구는 우선레벨 4에 할당된다. 이 우선레벨은 높은 순으로 1 ∼4로 되고, 가장 높은 우선레벨은 1로 되며, 가장 낮은 우선레벨은 4로 된다.
상기 일반 예외는 명령의 실행 시퀀스에 관계해서 발생하므로, 우선레벨 3이 할당되어 있다. 우선레벨 3에 할당되어 있는 각종 일반 예외에는 발생하는 명령실행단계의 빠르고 느림에 따라서, 1 ∼12의 실행우선도(Execution Order) 가 할당된다. 명령이 파이프 라인적으로 실행되는 경우, 어떤 명령의 실행중에 검출된 우선레벨 3의 어떤 일반 예외는 그 후의 명령의 실행중에 검출된 우선레벨 3의 다른 일반예외에 선행해서 수령되도록 제어된다. 따라서, 실행 우선도는 개개의 명령의 실행 스팬내에서의 우선도를 규정하고 있다고 간주된다. 특히,명령브레이크 예외(사용자 브레이크 트랩 예외) 에 있어서, 브레이크 포인트로서 지정되어 있는 명령의 실행전에 트랩을 발생시키는 경우, 명령브레이크 예외의 실행우선도는 1 로 되고, 실행후예 트랩을 발생시키는 경우 명령 브레이크 예외의 실행우선도는 12 , 오퍼랜드 브레이크 포인트가 설정되어 있는 경우도 명령 브레이크 예외의 실행 우선도는 12로 된다. 외부 인터럽트와 내장주변모듈 인터럽트 사이에서의 우선레벨은 소프트웨이어 의해서 정의된다.
또한, 제 7도에 있어서의 일반 예외내의 어떤 일부의 일반 예외는 명령 액세스 (Instr. Access) 시와 데이타 액세스(Data Access) 시로 구별되도록 도시되어 있다. 이것은 제 7도의 Address Error 에서 Initial Page Write까지의 일반 예외의 기재는 어떤 l개의 명령을 파이프라인적으로 실행할 때의 실행 순서에 따라서 예외요인을 기재하고 있기 때문이다. 따라서, 제 7도에 도시되는 TLB Miss(Instr. Access) 와 TLB Miss(Data Access)는 상호 동일한 예외 핸들러에 의해 처리된다. Address Error (Instr.Access) 와 Address Error(Data Access), TLB Invalid (Instr.Access)와 TLB Invalid(Data Access) 그리고 TLB Protection Violation (Instr.Access) 와 TLB Protection Violation(Data Access)도 마찬가지이다.
또한, 제 7도에 있어서의 일반 예외는 우선레벨 3에 할당되고, 마스크 불가능한 인터럽트 요구는 우선레벨 2에 할당되어 있지만, 일반예외에 우선레벨 2를 할당하고, 마스크 불가능한 인터럽트요구에 우선 레벨 3을 할당해도 좋다.
<예외처리를 위한 벡터배치>
각각의 예외처리의 내용을 규정하는 각종 예외처리 핸들러 (예외 핸들러라 총칭한다) 는 벡터배치를 이용해서 호출된다. 마이크로 컴퓨터MCU는 그 하드웨어 구성에 의해서 4종류의 벡터배치를 서포트한다. 고정된 물리어드레스 H'A0000000는리세트를 위한 벡터로서 할당된다. 다른 예외처리에 대해서는 소프트 제어에 의해서 상기 벡터 베이스 레지스터 VBR에 설정된 벡터 테이블 베이스 어드레스로 부터의 고정번지의 오프세트 (벡터 오프세트)가 할당되어 있다. 각각의 벡터 오프세트는 제 7 도에 도시되는 바와 같이 , H'00000100, H'00000400, H'00000600으로 된다. 상기 TLB미스예외의 벡터 오프세트에는 H'00000400이 할당되고, TLB미스예외의 일반예외의 벡터 오프세트에는 H'00000100이 할당되고, 인터럽트 요구의 벡터오프세트에는 H'00000600이 할당되어 있다.
벡터 테이블의 베이스 어드레스는 벡터 베이스 레지스터VBR에 소프트 웨어를 실행하는 중앙처리장치CPU에 의해서 로드된다.
예를 들면, 타스크 전환 또는 프로세스 전환시에 오퍼레이팅 시스템과 같은 시스템 프로그램을 실행하는 중앙처리장치CPU에 의해서 벡터베이스 레지스터VBR의 설정이 실행된다. 벡터 테이블의 베이스 어드레스는 소정의 고정된 물리어드레스공간에 배치되게 된다.
즉, 벡터 테이블의 베이스 어드레스는 상기 어드레스영역 P1, P2에 배치된다. 상기 레지스터 VBR의 값과 벡터 오프세트에 의해서 결정되는 벡터 포인트 (벡터 어드레스) 는 하드웨어에 의해 규정된다.
즉, 벡터 포인트는 사용자 기술에 의한 프로그램에 의해서 규정되는 성징의 것이 아니다.
제 14 도는 상기 고정 오프세트로서의 벡터 오프세트의 값을 생성하기 위한 하드웨어의 구성을 도시한 것이다. 동일 도면에 있어서, 정수발생회로CVG와 시프터SFT는 벡터 오프세트를 생성하기 위해 마련되어 있는 정수발생부 또는 연산수단으로 간주된다.
벡터 오프세트의 값콰 벡터 베이스 레지스터VBR의 값과의 가산은 산술논리연산기ALU에 의해서 실행되며, 가산해서 얻어진 벡터 포인트는 프로그램 카운터 PC에 라이트된다. 그 후, 중앙처리장치CPU는 프로그램 카운터PC에 라이브된 벡터 포인트에 할당되는 예외처리 핸들러를 액세스하기 위해, 시스템버스S - bus내의 어드레스버스로 상기 벡터 포인트 (논리어드레스) 를 발생한다. 메모리판리유닛MMU는 상기 벡터 포인트로 되는 논리어드레스를 받고, 그 논리어드레스에 관한 어드레스 변환쌍을 엔트리로서 기억하고 있는 경우, 상기 논리어드레스를 물리어드레스로 변환하고 캐쉬메모리CACHE로 공급한다. 캐쉬메모리CACHE에 상기 물리어드레스에 대응하는 명령이 존재하지 않는 경우, 상기 물리어드레스가 캐쉬버스C - bus의 어드레스버스, 버스상태 컨트롤러 BSC , 입출력회로 EXIF 및 외부버스 EX - bus의 어드레스버스를 거쳐서 상기 외부메모리 MMRY에 공급된다. 상기 물리어드레스가 외부버스 EX- bus의 어드레스버스로 출력되는 것에 동기해서 상기 중앙처리장치CPU에서 출력되는 도시되지 않은 리드제어신호가 시스템버스S - bus 내의 제어버스, 캐쉬버스C - bus의 제어버스, 버스상태 컨트롤러BSC , 입출력회로 EXIF 및 외부버스 EX - bus의 제어버스를 거쳐서 상기 외부메모리MMRY에 공급된다. 상기 외부메모리MMRY는 상기 물리어드레스에 의해서 리드액세스되고,그 물리어드레스에 저장되어 있는 데이타 (제 1 예외핸들러의 선두의 명령테이타) 가 외부버스 EX -- bus의 데이타버스, 입출력회로EXIF, 버스상태 컨트롤리 BSC , 캐쉬버스C - bus의 데이타버스 및 시스템버스S - bus내의 데이타비스를 거쳐서 중앙처리장치CPU로 공급되어 실행된다.
상기 프로그램 카운터PC에 세트된 벡터 포인트, 상기 정수발생회로 CVG, 시프터 SFT 및 산술논리연산기ALU는 중앙처리장치CPU의 연산부 (100) 에 포함된다.
정수발생회로CVG 및 시프터 SFT는 인터럽트 통지신호 SIGI, TLB미스예외의 발생을 나타내는 통지신호SLG4a 및 TLB미스예외 이외의 일반 예외의 발생을 나타내는 통지신호SIG6을 공급받는다. 통지신호SIG4a는 메모리관리유닛MMU내의 제어부TLBC에서 출력되는 상기 신호S1G4에 포함되는 1개의 신호이다.
즉, 상기 신호SIG4는 여러개의 비트신호를 포함하고 있고, 상술한 바와 같이 , 메모리관리유닛MMU에 있어서의 어드레스 변환에 기인하는 예외의 발생을 중앙처리장치CPU에 통지하는 신호이다. 상기 신호 SIG4에는 발생한 예외사상이 TLB미스예외인 것을 나타내는 통지신호SIG4a, 발생한 예외사상이 TLB미스예외 이외의 예외사상인 것을 나타내는 통지신호SIG4b 등이 포함된다.
통지신호SIG6은 도시되는 바와 같이, 메모리관리유닛MMU에 있어서의 어드레스 변환시에 TLB미스예외 이외의 예외사상이 발생했을때 활성화되는 상기 신호S1G4b와 중앙처리장치CPU 내부에 있어서 예외사상이 발생했을 때 할성화되는 내부신호SIG6a를 받는 OR 회로 OR 의 출력신호로 된다.
상기 정수발생회로CVG 및 시프터 SFT에 있어서, 발생될 정수와 시프트량을 상기 신호SIGI, SIG4a, SIG6 내의 어느 신호가 활성되었는가에 따라서 제어된다. 정수발생회로CVG는 예를들면 2진코드로 2 비트의 정수H'1 (01) 또는 H'3 (11) 을 발생한다. 정수발생회로CVG는 통지신호SIC4a 또는 통지신호S1G6이 활성화되면, 정수 H'l 을 발생한다. 정수벌생회로CVG는 인터럽트발생의 통지신호SIG6이 활성화되면, 정수 H'3을 발생한다. 시프터 SFT는 통지신호SIG6이 활성화되면, 정수 H'1 (01) 에 대해서 8비트 좌 시프트를 실행하는 것에 의해서 벡터 오프세트H' 100 (1 . 0000. 0000) 을 출력한다.
TLB미스예외의 통지신호 SIG4a가 활성화되면, 시프터 SFT는 정수 H'1 (01) 에 대해서 10비트 좌 시프트를 실행하는 것에 의해서 벡터 오프세트 H'400 (100 . 0000 - 0000) 을 출력한다. 통지신호 SIG1이 활성화되면, 시프터를 SFT는 정수 H' 3(11) 을 9비트 좌 시프트를 실행하는 것에 의해서 벡터 오프세트 H' 600 (100. 0000. 0000) 을 출력한다. 특히, 본 실시예에 있어서, 벡터 오프세트로서 H '100,H' 400, H'600을 할당한 것은 벡터 오프세트에 있어서 논리값 " 1 " 로 되는 비트의 수를 극력 적게하기 위해, 즉 정수발생회로CVG의 논리규모를 작게하기 위해서이다.
재 14도에서 명확한 바와 같이, 하드웨어 (회로)에서 생성해야할 오프세트는 3종류이기 때문에, 그 하드웨어량은 2비트의 정수발생회로CVG와 시프더 SFT만으로 좋다. 시프터 SFT는 벡터 오프세트의 생성에 전용화될 필연성은 전혀 없고 그 밖의 연산에 범용적으로 이용가능하게 하는 것은 용이하다.
<예외처리를 지표하는 예외요인코드>
예외요인코드(exception code)는 제 8도에 도시되는 바와 같이, 각각의 예외처리의 요인을 식별가능하게 하기 위해, 각각의 예외사상에 대해서 다른 값의 예외요인코드가 할당된다. 이 예외요인코드는 디버그등에 있어서 발생한 예외의 요인을소프트웨어적으로 판정하기 위해 이용됨과 동시에, 후술되는 바와 같이 예외 핸들러로의 분기를 위한 어드레그 오프세트 정보로서도 이용된다. 디버그에 있어서 이용가능하게 하기 위해, 레지스터 EXPEVT 및 INTEVT는 캐쉬버스 C -- bus에 결합되고, 버스상태 컨트롤러 BSC, 입출력회로 EXIF 및 외부버스 EX-bus 를 거쳐서 MCU 의 외부에서 액세스가능하게 된다. 즉 레지스터EXPEVI' 및 INTEVT에 기억된 요인코드는 MCU의 외부로 출력할 수 있게 된다. 그것에 의해서, 디버그가 발생한 예외의 요인을 요인코드에서 간단히 판별할수 있게 된다.
제 8 도에 도시되는 예외요인코드는 H'20마다 할당된다. 이것을 어드레스 환산하면, 32바이트마다의 어드래스 오프세트로서의 의미를 갖는다. 예를 들면, 1명령이 2바이트의 고정길이 명령이면, 1 6 명령의 기술에 상당하는 어드레스 범위로 된다. 또, 제 8 도에 있어서, 일반 예외중 어드레스예외(Address Error) , TLB미스예외 (TLB Miss), TLB 무효예외(TLB Invalid), TLB프로텍트 위반예외(TLB Protection Violation)에 대해서는 로드명령 실행시 (load)와 스토어명령 실행시 (store) 에서 다른 예외요인코드가 할당된다.
이것은 디버그의 용이성을 고려해서 설정되어 있다. 또, 제 8도에 있어서, 내장주변모듈의 인터럽트요구에 관한 예외요인코드에 대해서는 대표적으로 l개의 요인코드H' 400만이 표시되어 있다.
그러나, 실제로는 내장주변모듈의 수 및 그 기능에 의존해서 다수존재한다고 이해하기 바란다.
제 9도에 도시되는 예외요인 레지스터 EXPEVT는 상기 예외요인 코드중 리세트 및 일반 예외사상에 할당된 예외요인코드를 기억비트11 ∼비트 0에 저장하는 32비트의 레지스터이다. 한편, 인터립트요인 케지스터 INTEVT는 상기 예외요인코드중 인터럽트요구에 할당된 예외요인코드를 비트11 ∼비트 0에 저장하는 32비트의 레지스터이다. 이들 레지스터 EXPEVT , INTEVT는 제 1도에 도시되어 있는 바와 같이 시스템버스 S-bus와 캐쉬버스C -bus에 결합되고, 메모리관리유닛MMU의 제어부TLBC내에 배치되어 있다. 그 이유는 TLB미스등의 고속처리를 요구받는 일반 예외의 발생을 가장 빠르게 검출할 수 있는 것이 메모리관리유닛MMU의 제어부 TLBC이기 때문이다.
예외요인코드를 저장하는 레지스터를 일반 예외와 인터럽트요구에서 개별적으로 마련하는 이유는 다음과 같은 이유 때문이다. 즉, 일반 예외는 중앙처리장치 CPU의 동작에 동기해서 발생하고, 인터럽트요구는 중앙처리장치CPU의 동작과는 비동기로 발생한다. 또 중앙처리장치CPU의 동작블럭 주파수는 인터럽트요구의 발생원으로 되는 내장주변모듈 및 외부회로의 동작클럭주파수에 대해서 여러배, 예를 들이 4배의 클럭주파수로 된다. 이와 같이, 인터럽트요구와 일반 예외의 발생타미밍의 상위 및 인터럽트요구 발생원과 예외 발생원의 동작속도의 상위를 고려한 경우, 쌍방의 예외요인코드를 동일한 타이밍에서 동일한 레지스터에 라이트시키는 것은 레지스터에 대한 예외요인코드의 라이트 타이밍의 설정처리등을 번거롭게 할 염려가 있기 때문이다.
제 15 도는 상기 예외요인코드를 생성하기 위한 논리불럭의 구성을 도시한 것이다. 동일 도면에 도시되어 있는 논리회로LOG는 메모리관리유닛MMU의제어회로TLBC에 포함된다. 이 논리회로 LOG 에는 인터럽트요인A , 중앙처리장치CPU 내부에서의 예외발생 상황B , 메모리관리유닛MMU내부에서의 예외발생상황C , 리세트지시 D,그 밖의 부대정보E가 공급되고, 이들 임력정로의 상태에 따라서 대응하는 예외요인코드를 생성한다.
인터럽트요인A는 인터럽트 컨트롤러 INTC에서 신호SIG2에 의해서 논리회로 LOG로 공급된다. 그 밖의 부대정보E에는 상기 인터럽트 수령의 통지신호SIG3이 포함된다. 논리회로LOG는 상기 인터럽트요인A과 그 밖의 부대정보E의 활성화상태에 응답해서 인터럽트요인에 대응하는 예외요인코드를 생성하고, 생성한 대외요인코드를 인터럽트요인 레지스터INTEVT에 세트한다.
상기 중앙처리장치CPU 내부에서의 예외발생상황B는 예약명령예외(Reserved Instruction Exception), 슬롯 부당명령예외(Illegal Slot Instruction Exception) , 트랩명령예외(Unconditional Trap) 및 명령브레이크예외 (User Breakpoint Trap)의 발생상황을 구별하기 위한 여러개의 비트의 신호로서 중앙처리장치CPU에서 논리회로LOG로 공급된다.
예외발생상황B는 제1도에 도시되어 있는 제어신호SIG5에 포함되는 것으로 간주된다.
메모리관리유닛MMU 내부에서의 예외발생상황C는 어드레스 에러예외 (Address Error), TLB 미스예외 (TLB Miss) TLB 무효예외 (TLB Invalid) TLB 프로텍트 위반예외 (TLB Protrction) TLB 이니셜 페이지 라이트예외(Initial page Write) 의 발생상황을 구별하기 위한 여러개의 비트의 내부신호로서 논리회로LOG에 공급된다.
상기 부대정보E는 어드레스변환에 관한 명령이 로드명령인지 스토어명령인지를 구별하기 위한 정보 E1을 포함한다. 이 정보 E1은 중앙처리장치 CPU내에서 실행되는 명령해독결과에 의해서 얻어지고, 중앙처리장치 CPU에서 논리회로LOG로 공급된다.
논리회로 LOG 상기 중앙처리장치 CPU 내부에서의 예외발생상황 B , 메모리관리유닛 MMU 내부에서의 예외발생상황 C 및 상기 부대정보E에 따라서 발생된 일반 예외에 대응하는 예외요인코드를 생성하고, 생성된 예외요인코드를 예외요인 레지스터 EXPEVT에 세트한다.
리세트에 관한 예외요인코드는 리세트신호에 의해서 형성된 리세트지시D에 논리회로LOG가 응답하여 논리회로LOG가 생성한다.
생성된 리세트에 관한 예외요인코드는 논리회로LOG에 의해서 예외 요인 레지스터 EXPEVT에 세트된다. 리세트지시D는 제1도에 도시되어 있는 제어신호SIG5에 포함되는 것으로 간주된다.
<예외 핸들러의 배치>
상기 H'100, H'400, H'600으로 규정되는 벡터 오프세트는 벡터 베이스 레지스터 VBR 의 값 (벡터 테이블의 베이스 어드레스) 로 부터의 고정된 오프세트를 규정한다. 제2도에 도시되어 있는 바와 같이, 리세트에 관한 예외 핸들러는 H' A00000000의 고정번지에 배치된다. TLB미스예외에 관한 예외핸들러는 레지스터 VBR의 값+벡터 오프세트 (H' 400) 의 어드레스에 직접 배치된다. 그 밖의 일반, 예외 및 인터럽트 요구에 관한 예외 핸들러는 레지스터VBR의 값에 H'100 또는 H'600의벡터 오프세트를 가산해서 얻어지는 어드레스 위치에 제1의 핸들러(제2도에 도시되어 있는 일반 예외에 공통인 핼들러 및 인터럽트요구에 공통인 핸들러)가 배치된다. 제1의 핸들러에서 상기 요인에 고유의 다른 제2의 핸들러로의 분기는 레지스터EXPEVT또는 INTEVT에 기억된 예외요인코드를 어드레스 오프세트로서 이용하는 것에 의해서 실행된다.
어드레스 오프세트로서 어떻게 예외요인코드를 이용할지는 벡터 베이스 례지스터 VBR+벡터 오프세트의 위치에 배치된 핸들러(사용자기술에 의한)의 기술내용(소프트웨어 프로그램)에 의해서 결정된다.
예를 들면, VBR+벡터 오프세트+예외요인코드로서 제2의 핸들러로 분기하는 것을 규정하거나 , 또는 상기 핸들러 내부에서 세트한 베이스 어드레스 예외요인코드를 가산해서 제2의 헨들러로 분기하는 것을 규정하거나, 또는 예외요인코드를 소정비트수만큼 시프트해서 제2의 핸들러로 분기하는 것을 규정할 수 있다. 요컨데, 각각의 예외요인코프가 H'20과 같은 소정의 간격을 두고 할당되어 있으므로, 핸들러의 기술량등에 따라서 상기 예외요인코드를 원하는대로 이용하면 좋다. 레지스터 EXPEVT 또는 INTEVT에 기억된 예외요인코드를 어드레스 오프세트로서 이용하는 경우, 중앙처리장치 CPU는 시스템버스S- bus의 어드레스버스에 레지스터EXPEVT 또는 INTEVT의 어드레스신호를 공급하고, 시스템버스S - bus의 제어버스에 리드제어신호를 공급해서 레지스터EXPEVT 또는 INTEVV를 액세스한다. 리드 액세스된 레지스터EXPEVT또는 INTEVT는 그 내부에 기억된 요인코드를 시스템버스의 데이타버스에 공급하고, 상기 CPU가 그 요인코드를 예를 들면 l개의 범용 레지스터 (RO)에저장한다. 그것에 따라서, 상기 CPU는 요인코드를 계산에 사용가능하게 한다. 또한, 실제의 계산은 상기 CPU내의 상기 ALU에 의해서 실행된다.
예를 들면, 제 2도에 도시되어 있는 바와 같이, TLB미스예외 이외의 일반 예외를 위한 예외 핸들러에 관해서는 상기 일반 예외에 공통인 제1의 핸들러가 VBR+벡터 오프세트 (H'100)의 벡터포인트에 배치된다. 상기 제 1의 핸들러는 그 예외요인에 대응하는 예외요인코드를 어드레스 오프세트로서 또 다른 핸들러 (제2의 핸들러) 로 분기하는 것을 규정하는 기술을 갖는다. 따라서, 벡터포인트에 예외요인코드를 가산해서 얻어지는 어드레스의 각각에 예외 요인에 고유인 제2의 핸들러를 각각 배치해 두는 것에 의해서 원하는 제2의 핸들러로 분기할 수 있다. 이 경우, 예외요인코드는 레지스터 EXPEVT에서 취득된다.
또, 인터립트요구에 관한 예외 핸플러도 상기와 마찬가지이고, VBR + 벡터 오프세트(H'600)의 벡터 포인트에 상기 인터럽트요구에 공통인 제1의 핸들러가 배치된다. 상기 제1의 핸들러는 그 인터럽트요인에 대응하는 요인코드를 어드레스 오프세트로서 또 다른 핸들러 (제2의 핸들러)로 분기하는 것을 규정하는 기술을 갖는다. 따라서, 벡터 포인트에 예외요인코드를 가산해서 얻어지는 어드레스의 각각에 인터럽트요인에 고유인 제2의 핸들러를 각각 배치해 두는 것에 의해서 원하는 제2의 핸들러로 분기할 수 있다.
이 경우, 인터립트요구의 예외요인코드는 레지스터 INTEVT에서 취득된다.
본 실시예에 따르면, 각종 예외 핸들러는 TLB를 이용한 어드레스 변환을 필요로 하지 않는 상기 어드레스영역 P1 또는 P2에 할당되므로, 어드레스변환에 관한예외사상이 다중으로 발생하는 사태를 회피할 수 있고, 이것에 의해서 데이타처리의 효율화에 기여할수 있다.
상기와 같은 예외 핸들러의 배치에 있어서, TLB미스예외, 그 밖의 일반 예외 또는 인터럽트 요구가 발생했을 때, 중앙처리장치CPU의 처리는 VBR레지스터에 설정되어 있는 벡터 테이블의 베이스 어드레스에 벡터 오프세트를 오프세트 어드레스로서 가산한 어드레스위치로 분기되고, 그 어드레스위치에 배치되어 있는 핸들러를 처리하게 된다. 이 분기는 마이크로컴퓨터MPU의 하드웨어에 의해서 규정된다. 그 때, 어느 벡터 오프세트를 사용할지는 제14도에서 설명하는 바와 같이 예외발생요인의 종별에 따라서 일의적으로 결정된다. 발생한 예외가 TLB미스예외인 경우, VBR+벡터오프세트 (H'400) 에 의해 지정되는 벡터 포인트에 할당된 핸들러는 TLB미스예외 핸들러로 된다. 그 밖의 일반 예외 또는 인터럽트 요구의 경우, VBR+벡터 오프세트에 의해 지정되는 벡터포인트의 핸들러는 그 예의요인의 요인코드를 오프세트로서 분기하는 처리를 포함하고, 상기 분기지에 그 예외요인에 고유인 핸들러가 배치 되어있다.
트랩명령을 실행하는 것에 의해서 발생하는 트랩예외에 관해서는 그 트랩명령이 보유하는 8비트의 이미디어트값이 제9도에 도시되어 있는 트립 레지스터TRA에 저장되고, 그 값이 VBR레지스터의 하위의 어드레스 데이타에 가산되고, 가산되어 얻어진 값에 의해서 대응하는 예외핸들러가 페치되도록 되어 있다. 트랩명령예외는 예를 들면 사용자 프로그램내의 타스크에서 오퍼레이팅 시스템으로의 시스템 콜에 이용된다
<예외처리흐름>
제10도는 상기 벡터 오프세트에 의해서 벡터 포인트까지 분기하는 처리의 흐름도가 도시된 것이다. 벡터 보인트로의 분기는 제14도에서 설명한 바와 같이, 마이크로컴퓨터MCU의 하드웨어에 의해서 규정되고, 특권상태로의 천이로서 위치결정되는 처리이며, 이하의 스텝을 포함한다.
[예외/인터럽트의 검출] 리세트, 일반예외 또는 인터럽트요구가 발생하면, 그것이 제어부CTRL에 의해 검출된다 (S1). 예를들면, 제어부CTRL은 매뉴얼 리세트이면 리세트 스위치의 조작에 의해서 발생하는 리세트신호, TLB미스예외이면 메모리관리유닛MMU의 제어회로TLBC에서 출력되는 TLB미스의 검출신호 등, 인터립트요구이면 인터럽트 컨트롤러INTC에서 중앙처리장치CPU로 공급되는 인터런트신호SIG1에 따라서 예외를 검출한다. 중앙처리장치CPU 내부의 예외는 그 내부상태에 따라서 검출된다.
[PC, SR의 세이브] 다음에, 중앙처리장치CPU는 프로그램 카운터PC의 값을 세이브 프로그램 카운터SPC에 세이브시키고, 상태레지스터 SR의 값을 세이브상태레지느터 SSR에 세이브시킨다 (S2)
세이브의 타이밍은 일반예외의 경우 상기 예외가 발생한 시점으로되고, 따라서 현재 실행완료되어 있지 않은 명령의 어드레스등이 세이브되고, 복귀후는 그 명령이 재실행되게 된다. 인터럽트요구의 경우의 세이브의 타이밍은 그 인터럽트요구가 발생된 시점에 있어서, 중앙처리장치CPU가 그 시점에서 실행하고 있던 명령의 실행완료를 대기하고 상기 2개의 값의 세이브가 실행되고, 그 결과로서 그 명령의다음의 명령의 어드레스등이 세이브되게 된다. 이것에 의해, 예외가 발생했을 때 프로그램 카운터PC의 값이나 상태레지스터 SR의 값을 메모리 상의 스택영역으로 세이브시키기 위한 메모리 액세스를 필요로 하지 않고 내장레지스터의 액세스로 좋으므로, 본 발명의 마이크로컴퓨터MCU의 세이브 처리를 고속으로 실행할 수 있다.
[프로세서 모드의 전환] 중앙처리장치CPU는 상테레지스터 SR의 모드비트MD를 논리값 1 로 해서 마이크로컴퓨터MPU의 동작모드를 특권모드로 설정한다 (S3). 중앙처리장치CPU는 또 상태레지스터SR의 블럭비트BL을 논리값"1" 로 세트하고 그 밖의 예외 및 인터럽트를 마스크한다 (S3) . 중앙처리장치CPU는 또 상태레지스터SR의 레지스터 뱅크비트RB를 논리값1로 세트하고, 특권 상태에 있어서의 범용레지스터 R0 ∼R7을 사용자 상태와는 다른 레지스터 뱅크로 전환한다 (S3). 따라서, 범용레지스터R0 ∼ R7의 뱅크 전환을 실행하므로 사용자 상태에 있어서의 레지스터 뱅크의 범용 레지스터R0 ∼ R7을 세이브시키는 처리는 분필요게 된다.
[예외요인의 세트]
다음에,그 때의 예외나 인터럽트요구의 요인에 할당되어 있는 예외요인코드가 제15도에 있어서 설명된 바와같이, 레지스터 EXPEVT 또는 INTEVT에 세트된다(S4).
전자의 레지스터EXPEVT에는 일반예외요인 또는 리세트의 요인코드가, 후자 레지스터 INTEVT에는 인터럽트요구의 요인코드가 MMU 내의 논리회로LOG에 의해서 세트된다.
[벡터 포인트로 분기] 상술한 바와 같이, 중앙처리장치CPU의 제어는 소정의벡터 포인트로 분기된다 (S5). 예외처리가 리세트인 경우, 고정번지H'A00000000로 분기된다. 일반예외나 인터럽트요구의 경우, 레지스터VBR의 벡터 테이블 베이스 어드레스에 소정의 벡터 오프세트가 가산된 어드레스로 중앙처리장치 CPU의 제어가 분기된다. 분기된 벡터 포인트에는 제2도에 도시되어 있는 바와 같이, 소정의 핸들러가 배치되어 있다. 리세트의 경우 리세트를 위한 예외핸들러가 배치되고, TLB미스예외의 경우 TLB 엔트리 갱신등을 위한 TLB 미스예외 핸들러가 배치되어 있다 (제2도 참조) . TLB미스예외 이외의 일반예외의 경우 또는 인터럽트요구의 경우, 예외요인에 고유의 다른 핸들러로 분기하기 위한 처리를 포함하는 핸들러(제2도에 도시되어 있는 일반예외에 공통인 핸들러, 인터럽트요구에 공통인 핸들러) 가 배치되어 있다.
명명 실행중에 TLB미스예외가 발생했을 때에는 TLB미스에 관한 논리 페이지 어드레스에 대응하는 물리 페이지 어드레스를 외부메모리MMRY상의 페이지 테이블에서 리드해서 어드레스 변환버퍼 TLB를 갱신하고 물리어드레스로의 변환을 실행해야만 하므로, 그 TLB미스예외의 발생에서 그 대처로의 천이시간은 명령 실행속도 또는 중앙처리장치에 의한 데이타 처리속도에 큰 영향을 미친다.
따라서, 테이타 처리성능에 가장 큰 영향을 미친다고 고려되는 TLB미스예외 핸들러를 상기 벡터 포인트에 직접 배치하는 것은 중앙처리장치 CPU의 제어를 예외핸들러로 인도할 때 까지의 처리시간을 현저하게 단축시킨다. 그것에 의해서, 마이크로컴퓨터MPU의 데이타처리속도의 고속화를 실현할 수 있다.
제11도는 상기 벡터 포인트에 배치된 예외핸들러 (리세트 핸들러나 TLB미스예외 핸들러 제외)의 처리흐름의 1예를 도시한 것이다. 이 처리는 상술한 바와 같이 전적으로 소프트 웨어에 의해서 규정되며, 이하의 처리 스뎁을 포함한다.
먼기, 잇따라 발생한 다른 예외나 인터럽트요구를 다중으로 수령할 것인가 아닌가가 결정된다 (S11). 그 결정은 상기 핸들러의 기술에 따른다.
다중으로 인터럽트요구등을 수령하지 않는 경우, 레지스터 EXPEVT , INTEVT에서 예외요인코드를 리드하고(S12), 예외요인코드를 어드레스 오프세트로서 이용해서 대응하는 예외핸들러로 분기하기위한 처리가 실행된다 (S13). 중앙처리장치CPU가 VBR+벡터 오프세트+예외요인코드의 계산을 실행하고, 그 계산된 어드레스에 할당되는 예외핸들러 즉 분기지의 예외핸들러로 처리가 이행된다.
그것에 의해서 중앙처리장치CPU가 발생시킨 예외에 대처한다.
다중으로 인터럽트요구등을 수령하는 경우, 제 10 도에서 설명한 처리흐름을 보증하기 위해, 중앙처리장치CPU는 세이브상태레지스터SSR , 세이브프로그램카운터 SPC등, 제10도의 핸들러에서 이용하는 레지스터의 데이타를 외부메모리MMRY에 세이브한다(S14).
중앙처리장치CPU는 또 상태레지스터 SR의 블럭비트BL을 논리값 "0" 으로 세트하고, 그 밖의 예외 및 인터럽트에 대한 마스크를 해제한다(S15). 그 후, 상기와 마찬가지로 중앙처리장치CPU는 레지스터 EXPEVT, INTEVT에시 예외요인코드를 리드하고(S16), 예외요인코드를 어드레스 오프세트로 해서 대응하는 예외핸들러로 분기된다(S17). 즉, 중앙처리장치CPU가 VBR+벡터 오프세트 + 예외요인코드의 계산을 실행하고, 그 계산된 어드레스에 할당되는 예외핸들러, 즉 분기지의 예외핸들러로 처리가 이행된다.
그것에 의해서 중앙처리장치CPU가 발생시킨 예외에 대처한다.
제10도 및 제11도의 흐름도에서 명확한 바와 같이, TLB미스예외에 대처하도록 고속처리를 최우선으로 하는 것에 대해서는 레지스터VBR의 값을 l회 리드하고 그것에 벡터 오프세트(H'400)을 가산하는 것만으로 TLB미스예외 핸들러의 벡터 포인트를 취득할 수 있다. 또, 다른 예외요인에 대해서는 레지스터VBR의 값에 벡터 오프세트를 가산해서 얻어지는 벡터 포인트의 취득에 부가해서, 레지스터 EXPEVT 또는 INTEVT의 값을 l회 리드해서 얻은 예외요인코드를 어드레스 오프세트로 하는 것에 의해 필요한 예외핸들러로 분기할 수 있다. 이 분기에 있어서도 분기지어드레스를 직접 메모리 액세스에 의해서 취득하지 않고 고속으로 예외에 따른 처리로 제어를 이행할 수 있다. 제11도에서 명확한 바와 같이, 다중으로 예외나 인터럽트를 수령할것인가 아닌가는 하드웨어에 의해서 규정된 벡터 포인트의 어드레스에 할당된 핸들러의 기술에 의해서 결정된다. 예외의 다중 수령을 허용하는 경우에는 세이브 레지스터 SSR, SPC에 이미 세이브되어 있는 값을 외부메모리MMRY로 세이브시킨다. TLB미스예외와 같이 고속처리가 필요한 경우, 다중의 예외나 다중 인터럽트를 금지한 채로 TLB미스예외 핸드러를 실행하므로, 세이브상태레지스터SSR, 세이브 프로그램카운터 SPC의 메모리로의 세이브를 일절 필요로 하지 않고, 이 점에 있어서 TLB미스예외의 발생에서 TLB미스핸들러로의 천이시간을 최단으로 하는 것을 보증하고 있다.
제 1 2 도는 일반예외나 인터럽트요구에 대처하기 위한 예외처리로 분기한후, 분기지에 있어서 예외나 인터럽트가 새롭게 발생한 경우의 처리흐름을 도시한 것이다.
예외나 인터럽트가 새롭게 발생했을 때(S21), 상태레지스터 SR의 블럭비트BL이 논리값 "1" 인지 아닌지(S22), 그리고 상기 새롭게 발생한 예외나 인터럽트가 명령브레이크예외인지 아닌지(S23)에 따라서 상기 새롭게 발생한 예외나 인터럽트를 수령할것인가 아닌가가 결정된다. SR . BL = 0에 의해서 다중 수령이 허용되고 있는 경우에는 제10도, 제1l도의 흐름에 따라서 처리된다(S24).
상기 SR .BL = 1 에 의해서 예외의 다중수령이 금지되어 있는 경우 (S22의 YES), 그 때 발생한 일반예외가 명령브레이크예외가 아니고 (S23의 N0) , 또한 그것이 인터럽트요구인 경우 (S25의 YES) 소프트웨어가 SR . BL = 0으로 할 때까지 (예를 들면 상기 스텝 S14 의 처리를 종료하고 스텝 S15로 진행할 때까지) 상기 인터럽트의 수령이 억제된다 (S26). 그것이 일반예외나 리세트인 경우 (S25의 NO) 예외요인코드를 레지스트 EXPEVT에 세트한 후 자동적으로 리세트 핸들러로 분기된다 (S27).
그때의 예외사상이 명령브레이크예외인 경우, 제10도의 하드웨어처리에 있어서 SPC, SSR, EXPEVT의 각 레지스터는 갱신되지 않고, 중앙처리장치CPU의 처리는 명령브레이크 핸들러로 분기하고, 상기 핸들러의 처리에 의해서 레지스터SPC, SSR을 메모리로 세이브한다. 그리고, 또 브레이크 레지스터 IBR의 브레이크 포인트 어드레스에서 복귀어드레스가 계산되고, 상기 복귀어드레스가 세이브 프로그램 카운터 SPC에 세트된다. 그리고, 명령브레이크예외에 대처하기 위한 명령브레이크 예외핸들러의 처리가 실행된다.
명령브레이크 예외핸들러로 부터의 복귀는 레지스터 SPC에 세이브된 복귀어드레스가 이용되고, 명령브레이크 포인트의 다음부터 디버그 대상 프로그램을 계속해서 실행할 수 있다. 이와 같이 명령브레이크 예외에 대해서는 다중으로 발생하는 예외의 수령이 금지되어 있는 상태의 디버그 대상 프로그램에 대해서도 임의의 위치에서 명령브레이크를 걸어서 시스템평가나 프로그램 디버그를 실행할 수 있다.
상기 실시예에 의하면 다음과 같은 작용효과가 있다.
(1) TLB미스예외에 대처하도록 고속처리를 최우선으로 하는 것에 대해서는 레지스터VBR의 값을 1회 리드하고, 그 값에 벡터오프세트(H'400) 을 가산하는 것만으로 TLB미스 예외핸들러의 벡터 포인트(분기지 어드레스)를 취득할 수 있다. 또, 다른 예외요인에 대해서는 레지스터VBR의 값에 벡터 오프세트를 가산해서 얻어진 벡터 포인트에 또 레지스터 EXPEVT 또는 INTEVT의 값을 1회 리드해서 얻은 예외요인코드를 어드레스 오프세트로서 가산하는 것에 의해, 필요한 예외핸들러의 선두어드레스 (분기지어트레스) 를 취득할 수 있다.
이와 같이, 분기지 어드레스를 외부메모리의 액세스에 의해서 취득하지 않기 때문에 예외발생에서 그 예외에 대처하기 위한 핸들러의 처리로 천이할 때까지의 천이시간이 단축된다. 이전에 의해서, 마이크로킴퓨터MPU의 전채적인 데이타 처리속도의 고속화를 실현할수 있다. 즉, 데이타처리의 고속화와 밀접한 TLB미스예외와 같은 처리에 대해서는 그 예외처리로의 천이시간을 단축하는 것이 최우선으로 되고, 예외처리로의 천이시간의 단축이 TLB미스예외만큼 테이타 처리속도의 고속화에기여하지 않는다고 고려되는 인터럽트 등에 대해서는 핸들러의 팹핑이나 핸들러의 사이즈에 대해서 융통성을 부여하여 사용자의 사용상 편리함이 향상된다.
(2)벡터 버스 레지스터의 값과 벡터 오프세트를 가산해서 얻어진 어드레스에 배치된 예외핸드러중의 일부의 예외핸들러 (TLB 미스예외핸들러) 만이 대응하는 예외에 대해서 직접적인 예외처리를 실행한다. 그 밖의 예외에 대해서는 예외코드를 어드레스 오프세트에 이용하고, 또 분기되어 소정의 핸들러로 되돌아오도록 되어 있다. 즉 백터 오프세트의 수는 매우 적다.
모든 예외요인에 대해서 고유한 고정 오프세트(벡터 오프세트)를 이용하는 경우, 예외요인이 증가할 수록 벡터 오프세트를 생성하기 위한 하드웨어량이 증대한다. 그 때문에, 마이크로컴퓨터가 형성되는 반도체 칩의 면적은 증가하고, 마이크로컴퓨터 자체의 코스트도높아진다고 고려된다.
그러나, 본 발명과 같은 예외처리에 있어서는 물리적인 회로규모의 축소와 데이타처리의 고속화의 쌍방을 만족시킬 수 있다. 따라서, 본 발명의 마이크로컴퓨터 MPU는 적은 면적의 반도체칩에 형성할 수 있어 그 코스트도 저감된다.
(3)다중으로 예외나 인터럽트를 수령할것인가 아닌가는 하드웨어에 의해서 규정된 벡터 포인트의 핸들러의 기술에 의해서 결정된다.
다중인 예외의 수령을 허용하는 경우, 세이브 레지스터 SSR, SPC에 이미 세이브되어 있는 값이 또 외부메모리 MMRY로 세이브된다.
TLB미스예외와 같이 고속처리가 필요한 경우, 다중 예외나 다중 인터런트를 억제한 상태에서 예외처리 핸들러가 실행되므로, 세인브상태레지스터 SSR, 세이브프로그램 카운터 SPC의 외부메모리 MMRY로의 세이브를 일절 필요로 하지 않는다. 이 점에 있어서 TLB 미스예외의 발생에서 TLB 미스핸들러로의 천이시간을 최단으로 하는 것이 보증된다.
(4) 하드웨어에 의해 결정되는 벡터 포인트의 핸들러에서 또 다른 핸들러로 분기할 때, 예외요인코드가 분기하기 위한 어드레스 오프/세트로서 이용된다. 즉, 각각의 예외요인코드를 어드레스 오프세트로서 이용할 수 있도록, 예를 들면 어드레스 환산으로 32 바이트분에 상당하는 H'20의 간격을 두고 예외요인코드가 할당되어 있다. 그 때문에, 예외요인코드(어드레스 오프세트)에 대한 베이스 어드레스는 하드웨어에 의해서 결정되어 있는 벡터 포인트에 배치되는 예외처리 핸들러의 프로그램 기술에 따라서 자유롭게 결정할 수 있게 된다. 이것은 실제의 분기지 어드레스나 분기지의 핸들러의 사이즈에 대해서 사용자의 자유도를 보증한다.
(5) 내부상태 및 복귀명령어드레스를 세이브하는 레지스터 SSR, SPC를 채용하는 것에 의해, 예외 발생시의 세이브시에 외부메모리로의 액세스를 감소시킬 수 있다.
(6) 중앙처리장치 CPU의 동작에 동기해서 발생하는 일반예외와 비동기로 발생하는 인터럽트요구의 쌍방에 대처하기 위해, 일반예외에 관한 예외요인코드를 저장하는 레지스터 EXPEVT와 인터럽트요구에 관한 예외요인코드를 저장하는 레지스터 INTEVT가 마련된다.
쌍방의 예외발생에 대해서 동일한 타이밍에서 요인코드를 공통의 레제스터에 라이트하기 위한 번거로운 처리를 회피할 수 있어 예외요인코드를 각 레지스터에세트하는 처리를 간소화할 수 있다.
(7) 리세트 예외핸들러나 TLB 미스 예외처리 핸들러 (예외요인에 따라서 하드웨어에 의해 결정되어 있는 분기지의 핸들러)의 처리에 있어서, 초기적인 프로세서모드가 예외의 다중 수령 억제상태 및 특권 상태로의 이행에 의해서 일정하게 된다. 따라서, 사용자의 상기 핸들러상에서 규정할 수 있는 예외처리의 내용은 높은 자유도를 보증받는다.
(8) 범용레지스터 R0~R7의 레지스터 뱅크를 특권상태에 있어서만 소프트웨어로 전환가능하게 하는 것에 의해, 중앙처리장치 CPU는 특권상태에 있어서 사용자 상태와는 다른 뱅크의 범용레지스커 R0~R7 을 이용할 수 있다. 이것은 예를 들면 예외처리에 있어서 사용자 상태에서 특권상태로 프로세서 모드를 전환할 때 범용레지스터 R0~R7의 내용이 외부메모리 MMRY로의 세이브를 생략할 수 있는 것을 의미한다. 이 점에 있어서도 예외발생에서 그것에 대처하는 처리로 천이할 때까지의 천이시간이 단축된다.
(9) 다중 예외를 억제한 상태의 예외핸들러의 처리에 있어서, 명령브레이크예외를 처리가능하게 하는 것에 의해, 다중으로 발생하는 예외의 수령이 금지되어 있는 상태의 디버그 대상 프로그램에 대해서도 임의의 위치에서 명령브레이크를 걸어서 시스템 평가나 프로그램 디버그를 실행할 수 있다는 것을 보증할 수 있다.
(10) 어드레스 P1, P2는 대응하는 물리어드레스가 고정으로 되는 영역이고, 어드레스 변환버퍼 TLB 를 이용한 어드레스 변환의 대상으로는 되지 않는다. 특권상태에 있어서, 어드레스영역 P1, P2를 액세스할 때에는 TLB미스를 비롯한 어드레스변환에 관계된 예외를 다중으로 발생시키는 일은 없다. 따라서, 인터럽트나 일반예외 등의 각종 예외핸들러를 어드레스영역 P1 또는 P2 에 배치하는 것에 의해, TLB미스를 비롯한 어드레스변환에 관계된 예외가 예외처리중에 새롭게 발생하는 일이 없게 된다. 즉, 어드레스변환에 관계된 예외가 다중으로 발생하는 사태를 회피할 수 있으므로, 중앙처리장치 CPU의 데이타처리를 효율화할 수 있다.
이상 본 발명자에 의해 이루어진 발명을 실시예에 따라서 구체적으로 설명하였지만, 본 발명은 그것에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에 있어서 여러가지로 변경 가능한 것은 물론이다.
예를 들면, 하드웨어에 의해 결정되는 벡터 오프세트는 H'100 H'400, H'600에 한정되지 않고, 또 어드레스 오프세트를 규정하는 요인코드나 그 하당 간격도 상기 실시예에 한정되지 않고 적절히 변경가능하다. 또, 예외는 상기 실시예의 리세트, 일반예외, 인터럽트요구로 크게 구분하는 개념에 한정되지 않는다. 또, 하드웨어에 의해서 결정된 제1의 벡터 포인트에 직접 TLB 미스예외 핸들러를 배치하였지만, 상기 벡터 포인트에 배치할 수 있는 예외핸드러는 그것에 한정되지 않고, 시스템구성에 따라서 적절히 변경할 수 있다. 또, 상기 제1의 벡터 포인트에서 분기되는 제2의 포인트에 배치한 다른 예외핸들러에 있어서는 또 다른 핸들러로 분기할 수 있는 것은 물론이다. 그 경우에도 요인코드를 어드레스 오프세트정보로서 이용하는 것이 가능하다.
이상의 설명에서는 주로 본 발명자에 의해서 이루어진 발명을 그 배경으로 된 이용분야인 마이크로컴퓨터에 적용한 경우에 대해서 설명하였지만, 데이타 프로세서, 마이크로프로세서, 디지탈 신호 프로세서등 그 호칭 여하에 관계없이 예외처리를 서포트하는 각종 데이타 처리장치에 광범위하게 적용할 수 있다.
본원에 있어서 개시되는 발명중 대표적인 것에 의해서 얻어지는 효과를 간단히 설명하면 다음과 같다.
즉, 하드웨어에 의해서 결정된 제1의 벡터 포인트의 핸들러로의 분기, 또 상기 핸들러에서 요인코드를 오프세트로 하는 다른 핸들러로의 분기의 어느것에 있어서도 분기지 어드레스를 직접 메모리의 액세스에 의해서 취득하는 것을 필요로 하지 않기 때문에, 예외발생에서 그것에 대처하는 핸들러로의 천이까지의 천이시간을 단축할 수 있고, 이것에 의해서 마이크로컴퓨터의 전체적인 데이타 처리속도의 고속화를 실현할 수 있다.
데이타처리의 고속화와 밀접한 TLB 미스예외와 같은 처리에 대해서는 고정 오프세트로서의 벡터 오프세트를 이용해서 얻어진 어드레스에 배치된 예외핸들러에 의해서 직접 예외처리를 실행하도록 한다.
따라서 TLB 미스예외에 대한 처리로의 천이시간을 단축할 수 있다.
한편, 예외처리로의 천이시간을 단축이 TLB 미스예외만큼 데이타 처리속도의 고속화에 기여하지 않는다고 고려되는 인터럽트 등에 대해서는 핸들러의 맵핑이나 핸들러의 사이즈에 대한 융통성이라는 점에서 사용상 편리함의 향상을 우선시킬 수 있다.
벡터 베이스 레지스터의 값과 벡터 오프세트를 가산해서 얻어진 어드레스에 배치된 예외핸들러중의 일부의 예외핸들러(TLB 미스예외핸들러) 만이 대응하는 예외에 대해서 직접적인 예외처리를 실행한다.
그 밖의 예외에 대해서는 예외요인코드를 어드레스 오프세트에 이용하고, 또 분기되어 소정의 핸들러로 되돌아오도록 되어 있다.
따라서, 물리적인 회로규모의 축소와 데이타처리의 고속화의 쌍방을 만족시킬 수 있다.
하드웨어에 의해서 규정되는 벡터 포인트의 핸들러상에서는 새롭게 발생하는 예외의 다중 수령을 억제할것인가 아닌가를 결정하고, 다중으로 수령할 때는 세이브레지스터의 내용을 메모리로 세이브시키는 것에 의해, 예외 발생시에 있어서의 상태세이브와 복귀어드레스 세이브를 반드시 세이브 레지스터로 할 수 있고, 이 점에 있어서도 예외발생에서 그것에 대처하기 위한 핸들러로의 전이시간을 단축할 수 있다.
하드웨어에 의해 결정되는 벡터 포인트의 핸드러에서 또 다른 핸들러로 분기할 때 요인코드가 분기를 위한 어드레스 오프세트로서 이용되도록 되어 있으므로, 상기 오프세트에 대한 배이스 어드레스는 하드웨어에 의해서 결정되어 있는 벡터 포인트의 핸들러의 기술에 따라서 자유롭게 결정할 수 있어 실제의 분기지 어드레스나 분기지의 핸들러의 사이즈에 대해서 자유도를 보증할 수 있다.
내용상태 및 복귀명령 어드레스를 세이브하는 레지스터를 채용하는 것에 의해, 예외 발생시의 세이브시에 메모리 액세스를 줄일 수 있다.
중앙처리장치의 동작에 대해서 동기해서 발생되는 제1의 예외와 비동기로 발생되는 제2의 예외의 쌍방에 대처할 때, 중앙처리장치가 인터럽트요구의 발생원으로 되는 주변모듈의 동작클럭주파수에 대해서 여러배의 클럭주파수로 동작되는 경우에 예외요인코드를 저장하는 레지스터를 상기 제1 및 제2의 예오에 대해서 각별히 마련하는 것에 의해, 쌍방의 예외발생에 대해서 동일한 타이밍에서 요인코드를 공통의 레지스터에 라이트하기 위한 번거로운 처리를 회피할 수 있고, 이것에 의해서 요인코드를 레지스터에 세트하는 처리를 간소화할 수 있다.
예외요인에 따라서 하드웨어에 의해 결정되고 있는 분기지의 핸들러상에서의 초기적인 프로세서 모드를 예외의 다중 수령 억제상태 및 특권상태로써 일정하게 하는 것은 사용자가 상기 핸들러상에서 규정할 수 있는 예외처리의 내용에 높은 자유도를 보증할 수 있다.
범용레지스터의 레지스터 뱅크를 특권상태에 있어서만 소프트웨어에 의해 전환가능하게 하는 것에 의해, 특권상태에 있어서 사용자상태와는 다른 뱅크의 범용레지스터를 이용할 수 있게 되고, 예를 들면 예외처리에 있어서 사용자상태에서 특권상태로 프로세서 모드를 전환할 때 범용레지스터의 내용을 메모리에 세이브하지 않아도 되도록할 수 있고, 이 점에 있어서도 예외발생에서 그것에 대처하는 처리로의 천이시간을 단축할 수 있다.
예외를 억제한 상태의 예외핸들러내에서 명령브레이크예외를 처리가능하게 하는 것에 의해, 다중으로 발생하는 예외의 수령이 금지되어 있는 상태의 디버그 대상 프로그램에 대해서도 임의의 위치에서 명령브레이크를 걸어서 시스템 평가나 프로그램 디버그를 실행하는 것을 보증할 수 있다.
제 1 도는 본 발명의 1실시예에 관한 싱글칩 마이크로컴퓨터의 블럭도.
제 2 도는 예외 발생시에 있어서의 하드웨어에 의한 벡터 포인트와 포인트된 핸들러에서 또 다른 핸들러로 분기하는 본 실시예의 방법을 개념적으로 도시한 설명도.
제 3 도는 뱅크구성의 범용 레지스터 및 시그템 레지스터의 설명도.
제 4 도는 사용자모드에 있어서의 제 3 도의 범용 레지스터 및 시스템 레지스터의 상태 설명도.
제 5 도는 특권 모드에 있어서의 제 3 도의 범용 레지스터 및 시스템 레지스터의 상태 설명도.
제 6 도는 컨트롤 레지스터의 설명도.
제 7 도는 인터립트 요인과 벡터 오프세트의 할당등을 나타내는 설명도.
제 8 도는 인터럽트 요인과 그것에 할당된 인터럽트 요인코드와의 대응 설명도.
제 9 도는 예외요인 레지스터 및 트랩 레지스터의 설명도.
제 1 0 도는 하드웨어에 의해서 결정된 벡터 포인트처리의 1예의 흐름도.
제 1 1 도는 벡터 포인트에 놓여진 핸들러의 처리의 1예의 흐름도.
제 1 2 도는 인터럽트 또는 일반 예외 핸들러에 의한 처리에 있어서 다른 인터럽트 또는 일반 예외가 발생한 경우에 있어서의 처리의 1 예의 흐름도.
제 1 3 도는 본 실시예에 관한 마이크로컴퓨터의 1예의 어드레스맵도.
제 1 4 도는 벡터 오프세트를 생성하는 하드웨어의 1예의 블럭도.
제 1 5 도는 예외 요인코드를 생성하는 논리의 1예의 블럭도.

Claims (21)

  1. 중앙처리장치와 기익장치를 갖는 반도체 처리장치로서,
    상기 기억장치는 인터럽트사상에 대응한 인터럽트코트를 저장하고,
    상기 인터럽트코드는 상기 중앙처리장치의 동작과 동기해서 발생하는 제 1 인티럽트사상에 대응한 인터럽트코드를 저장하는 제1 부분 및 상기 중앙처리장치의 동작과는 비동기로 발생하는 제2 인터럽트사상에 대응한 인터럽트코드를 저장하는 제2 부분을 갖고,
    상기 중앙처리장치는 프로그램카운터, 여러개의 범용레지스터, 베이스 레지스터 및 제어회로를 갖고,
    상기 베이스 레지스터는 여러개의 인터럽트 핸들러에 대응한 벡터테이블의 선두 어드레스를 벡터 베이스 어드레스로서 저장하고, 상기 벡터 베이스 어드레스는 상기 중앙처리장치에 의해 실행되는 프로그램에 따라서 변경가능하고,
    상기 제어회로는 인터럽트사상의 발생에 따라서 상기 벡터 베이스 어드레스와 소정의 벡터 테이블의 오프세트에 따른 제1 명령 어드레스를 상기 프로그램 카운터에 라이트하고,
    상기 소성의 벡터 테이블의 오프세트는 인터럽트사상에 대응해서 미리 할당되고, 상기 제1 명령 어드레스에 할당된 제1 인터럽트/예외처리 핸들러가 실행가능 하게 되도록 공급되고,
    상기 중앙처리장치는 상기 기억장치에 저장된 인터럽트코드를 어드레스 오프세트로서 이용하는 것에 의해 제2 인터럽트/예외처리 핸들러 중의 제2 명령어드레스를 계산하는 것을 특징으로 하는 반도체 처리장치.
  2. 제 1 항에 있어서,
    상기 중앙처리장치는 상태 레지스터, 제1 보존 레지스터 및 제2 보존 레지스터를 더 갖고,
    상기 상태 레지스터는 처리장치의 내부상태를 저장하고,
    상기 제1 보존 레지스터에는 예외사상의 발생에 따라서 상태 레지스터에 저장되어 있는 내부상태가 저장되고,
    상기 제2 보존 레지스터에는 예외사상의 발생에 따라서 인터럽트사상에 대한 처리의 실행완료 후, 복귀하는 명령어드레스가 저장되는 것을 특징으로 하는 반도체 처리장치.
  3. 제 2 항에 있어서,
    상기 중앙처리장치는 논리연산유닛과 정수생성부를 더 갖고,
    상기 정수생성부는 발생된 예외사상에 따라서 소성의 벡터오프세트를 생성하고,
    상기 논리연산유닛은 상기 제어회로의 제어하에서 상기 제1 명령 어드레스를 생성하기 위해 상기 벡터 베이스 어드레스와 소정의 벡터 오프세트를 가산하는 것을 특징으로 하는 반도체 처리장치.
  4. 제 3 항에 있어서,
    상기 상태 레지스터는 제1 제어비트와 제2 제어비트를 갖고,
    상기 제1 제어비트는 반도체 처리장치가 사용자 프로그램을 실행하고 있는 사용자상태에 있거나 또는 시스템 프로그램을 실행하고 있는 특권상태에 있는지를 나타내는 실행상태 데이타를 저장하고,
    상기 제2 제어비트는 이후에 발생하는 다른 인터럽트/예외사상을 수령하거나 또는 무시할지를 결정하는 마스크 데이타를 저장하고,
    상기 제어회로는 내부상태와 복귀명령 어드레스를 제1 보존 레지스터와 제2 보존 레지스터에 각각 저장하고, 상기 제1 제어비트에 특권상태에 있는 것을 나타내는 실행상태 데이타를 저장하고, 상기 제2 제어비트에 이후에 발생하는 무시될 다른 인터럽트, 예외사상을 나타내는 마스크 데이타를 저장하고,
    상기 중앙처리장치의 실행을 제1 명령 어드레스가 나타내는 제1 인터럽트/예외처리 핸들러로 분기시키는 것을 특징으로 하는 반도체 처리장치.
  5. 제 4 항에 있어서,
    상기 제어회로는 제1 인터럽트/예외처리 핸들러의 실행에 따라서 제2 제어비트에 마스크 데이타를 설정하고,
    상기 제2 제어비트에 설정된 데이타가 이후에 발생된 다른 인터럽트/예외사상을 수령하는 것을 나타내는 마스크 데이타인 경우, 상기 제1 및 제2 보존 레지스타의 내용을 메모리에 세이브하는 것을 특징으로 하는 반도체 처리장치.
  6. 제 1 항에 있어서,
    상기 중앙처리장치는 제1 보존 레지스터, 제2 보존 레지스터, 상태 레지스터, 명령 브레이크 어드레스 레지스터 및 명령 브레이크 컨르롤러를 갖고,
    상기 상태 레지스터는 제1 제어비트와 제2 제어비트를 갖고,
    상기 명령 브레이크 어드레스 레지스터는 브레이크 포인트를 지정하는 명령어드레스를 저장하고,
    상기 명령 브레이크 컨트롤거는 상기 중앙처리장치가 명령 브레이크 어드레스 레지스터에 저장된 명령 어드레스의 명령을 실행했을 때, 명령 브레이크 예외사상을 발생하고,
    상기 제2 제어비트에 이후에 발생된 다른 인터럽트/예외사상을 무시하는 것을 나타내는 마스크 데이타가 지정되어 있는 경우에 상기 명령 브레이크 예외사상이 검출되었을 때, 상기 제어회로는 내부상태와 복귀명령 어드레스를 상기 제1 및 제2 보존 레지스터에 저장하지 않고 명령 브레이크 예외 핸들러로 분기제어하고,
    상기 명령 브레이크 예외 핸들러는 내부상태와 복귀명령 어드레스를 메모리에 세이브한 후, 명령 브레이크 어드레스 레지스터에 저장된 명령어드레스를 사용해서 상기 명령 브레이크 예외 핸들러로부터의 복귀명령 어드레스를 계산하고, 계산한 복귀명령 어드레스를 제2 보존 레지스터에 라이트하는 것에 의해 다중 예외사상의 발생을 억제한 상태의 명령 브레이크 예외 핸들러에 의해 명령 브레이크 예외사상의 처리를 가능하게 하는 것을 특징으로 하는 반도체 처리장치.
  7. 제 6 항에 있어서,
    제2 제어비트에 이후의 다른 인터럽트/예외사상을 무시하는 것을 나타내는 마스크 데이타가 저장되어 있는 상태에서 명령 브레이크 예외사상 이외의 제3 인터럽트/예외사상이 검출된 경우, 상기 제어회로는 상기 기억장치에 인터럽트/예외코드를 저장한 후에 리세트 예외 핸들러로 분기시키고,
    제4 인터럽트/예외사상이 검출된 경우, 인터럽트/예외사상의 다중 수령의 억제가 리세트될 때가지 상기 제4 예외사상의 수령은 억제되는 것을 특징으로 하는 반도체 처리장치.
  8. 제 4 항에 있어서,
    상기 중앙처리장치는 여러개의 뱅크를 구성하는 제1 및 제2 범용 레지스터 세트를 더 갖고,
    상기 제1 및 제2 범용 레지스터 세트의 한쪽은 특권상태에서의 범용 레지스터 세트로서 사용되고, 다른쪽은 사용자상태에서의 범용 레지스터 세트로서 사용되는 것을 특징으로 하는 반도체 처리장치.
  9. 중앙처리장치와 인터럽트/예외요인 레지스터를 갖는 l칩 데이타처리장치로서,
    상기 인터럽트/예외요인 레지스터는 발생된 인터럽트사상에 대응한 인터럽트요인코드를 저장하고, 상기 인터럽트사상은 소정의 형태를 갖고, 상기 중앙처리장치의 처리와 동기해서 발생하는 제 1인터럽트사상에 대응한 인터럽트코드를 저장하는 제1 부분 및 상기 중앙처리장치의 처리와 비동기로 발생하는 제2 인티럽트사상에 대응한 인터럽트코드를 저장하는 제2 부분을 갖고,
    상기 중앙처리장치는 프로그램 카운터, 여러개의 범용레지스터, 벡터베이스 어드레스 레지스터, 제어회로 및 논리연산부를 갖고,
    상기 벡터베이스 어드레스 레지스터는 벡터베이스 어드레스를 저장하고, 상기 벡터베이스 어드레스는 상기 중앙처리장치에 의해 실행되는 프로그램에 따라서 변경가능하고,
    상기 제어회로는 상기 인터럽트사상의 형태마다의 벡터 오프세트의 수에서 소정의 벡터 오프세트를 형성하고,
    상기 벡터 오프세트의 수는 인터럽트사상의 수보다는 적고,
    상기 벡터 오프세트는 벡터 베이스 어드레스에서 벡터 어드레스를 계산하기 위한 고정 오프세트이고,
    상기 논리연산부는 상기 벡터 베이스 어드레스와 벡터 오프세트를 가산하고,가산후의 값을 상기 프로그램 카운터에 저장하는 것에 의해 가산후의 값이 나타내는 제 1 인터럽트 핸들러로 분기하고,
    상기 중앙처리장치는 인터럽트/예외요인 레지스터에 저장된 인터럽트코드를 어드레스 오프세트로서 사용하는 것에 의해, 상기 제1 인터럽트 핸들러에서 분기하기 위한 제2 인터럽트 핸들러의 선두 어드레스를 계산하는 것을 특징으로 하는 1칩데이타 처리장치.
  10. 제 9 항에 있어서,
    어드레스 변환 버퍼를 갖는 메모리관리유닛을 더 갖고,
    상기 벡터 오프세트는 여러개의 인터럽트사상을 나타내는 제1 벡터 오프세트, 어드레스 변환 버퍼에서의 변환미스에 기인하는 예외사상을 나타내는 제2 벡터오프세트 및 어드레스 변환 미스에 기인하는 예외사상 이외의 일반 예외사상을 나타내는 제3 벡터 오프세트를 갖는 것을 특징으로 하는 l칩 데이타 처리장치.
  11. 제 10 항에 있어서,
    상기 인터럽트/예외요인 레지스터를 메모리관리유닛에 갖는 것을 특징으로 하는 1칩 데이타 처리장치.
  12. 중앙처리장치와 TLB컨트롤러를 갖는 l칩 데이타 프로세서로서,
    상기 TLB컨트롤러는 기억회로를 갖고,
    상기 기억회로는 인터럽트사상마다 할당된 인터럽트코드를 저장하고, 상기 중앙처리장치의 처리와 동기해서 발생하는 제1 형태의 인터럽트사상에 대응한 인터럽트코드를 저장하기 위한 제1부분 및 상기 중앙처리장치의 처리와 비동기로 발생하는 제1형태의 인터럽트사상에 대응한 인터럽트코드를 저장하기 위한 제2부분을갖고,
    상기 중앙처리장치는 프로그램 카운터, 여러개의 범용레지스터, 베이스 레지스터 및 제어부를 갖고,
    상기 베이스 레지스터는 여러개의 인터럽트 핸들러에 대응한 백터 테이블의 선두 어드레스를 나타내는 벡터 베이스 어드레스를 저장하고, 상기 벡터 베이스 어드레스는 중앙처리장치에 의해 실행되는 프로그램에 따라서 변경가능하고,
    상기 제어부는 발생된 인터럽트사상에 따라서 프로그램 카운터에 벡터 베이스 어드레스와 소정의 벡터 오프세트에 따라서 제1 명령 어드레스를 설정하고,
    상기 소정의 벡터 오프세트는 인터럽트사상에 따라서 미리 할당되고,인터럽트사상에 따라서 제1 인터럽트 핸들러가 실행할 제1 명령 어드레스를 공급받고,
    싱기 기억회로는 중앙처리장치가 제2인터럽트 핸들러의 제2명령 어드레스를 계산할 때에 인터럽트코드를 어드레스 오프세트로서 이용하기 위해 인터럽트코드를 유지하는 것을 특징으로 하는 l칩 데이타 프로세서.
  13. 중앙처리장치와 인터럽트/예외 레지스터를 갖는 l칩 데이타 프로세서로서.
    상기 인터럽트/예외 레지스터는 발생된 인터럽트/예외사상에 대응한 인터럽트/예외코드를 저장하고, 상기 인터럽트/예외 레지스터는 상기 중앙처리장치의 처리와 동기해서 발생하는 제1행태의 인터럽트/예외사상에 대응하는 제1부분 및 상기 중앙처리장치의 처리와 비동기로 발생하는 제2 형태의 인터럽트/예외사상에 대응하는 제2 부분을 갖고,
    상기 중앙처리장치는 프로그램 카운터, 여러개의 범용 레지스터, 벡터 베이스 어드레스 레지스터, 소정의 회로 및 논리연산유닛을 갖고,
    상기 벡터 베이스 어드레스 레지스터는 중앙처리장치에 의해 실행되는 프로그램마다 변경가능한 벡터 베이스 어드레스를 저장하고,
    상기 소정의 회로는 인터럽트/예외사상에 대응하여 사상의 형태에 따라서 벡터 오프세트를 결정하고,
    상기 논리연산유닛은 벡터 베이스 어드레스와 벡터 오프세트에 따라서 분기지로 되는 제1 인터럽트/예외처리 핸들러의 제1 어드레스를 계산하고,
    상기 중앙처리장치는 상기 인터럽트/예외 레지스터에 저장된 인터럽트/예외 코드를 어드레스 오프세트로서 사용하는 것에 의해 제1 인터럽트/예외처리 핸들러에서 분기하기 위한 제2 인터럽트/예외처리 핸들러의 제1 어드레스를 계산하는 것을 특징으로 하는 l칩 데이타 프로세서.
  14. 제 13 항에 있어서,
    어드레스 변환 버퍼를 갖는 메모리관리유닛을 더 갖고,
    상기 벡터 오프세트는 여러개의 인터럽트사상을 나타내는 제1 벡터 오프세트, 어드레스 변환 미스 예외사상을 나타내는 제2 벡터 오프세트 및 어드레스 변환 버퍼 미스 예외사상 이외의 예외사상을 나타내는 제3 벡터 오프세트를 갖는 것을 특징으로 하는 1칩 데이타 프로세서.
  15. 제 13 항에 있어서,
    상기 인터럽트/예외 레지스터를 상기 중앙처리장치에 접속되는 메모리관리유닛에 갖는 것을 특징으고 하는 l칩 데이타 프로세서.
  16. 중앙처리장치, 여러개의 영역으로 분할된 기억회로. 벡터 테이블 및 어드레스 변환 버퍼를 갖는 1칩데이타 프로세서로서,
    상기 벡터 테이블은 여러개의 인터럽트/예외 핸들러의 선두 어드레스를 저장하고,
    상기 어드레스 변환 버퍼는 논리 어드레스를 물리 어드레스로 변환하기 위해 사용되고,
    상기 여러개의 영역 중 하나(제1영역)는 물리 어드레스에 고정되어 있고 어드레스 변환 버퍼에서의 어드레스 변환의 대상으로 되어 있지 않고, 상기 인터럽트/예외 핸들러는 상기 제1 영역에 배치되는 것을 특징으로 하는 l칩 데이타 프로세서.
  17. 제 16 항에 있어서,
    캐시메모리를 더 갖고,
    상기 제1 영역은 캐시메모리에서의 캐시대상으로 되지 않고,
    상기 여러개의 영역 중 다른 하나(제2 영역)는 물리 어드레스에 고정되어 있고, 어드레스 변환 버퍼에서의 어드레스변환의 대상으로 되어 있지 않고, 또 캐시메모리에서의 캐시대상으고 되지 않고,
    상기 인터럽트/예외 핸들러는 제 1 블럭과 제2 블럭을 갖고,
    상기 제1 블럭은 상기 제1 영역에 배치되고, 상기 제2 블럭은 상기 제2 영역에 배치되는 것을 특징으로 하는 l칩 데이타 프로세서.
  18. 제 17 항에 있어서,
    상기 벡터 테이블을 제1 영역 또는 제2 영역 중의 어느 하나에 배치하는 것을 특징으로 하는 1칩 데이타 프로세서.
  19. 제 18 항에 있어서,
    제1 형태의 인터럽트/예외사상과 제2 형태의 인터럽트/에외사상을 포함하는 여러개의 인터럽트/예외사상을 갖고,
    제1 형태의 인터럽트/예외사상중의 하나가 발생한 경우, 상기 중앙처리장치는 상기 제1 블랙에 있는 제1 형태의 인터럽트/예외사상에 대응한 개시 어드레스의 하나로 분기하고,
    제2 형태의 인터럽트/예외사상중의 하나가 발생한 경우, 상기 중앙처리장치는 상기 제2 블럭에 있는 제2 형태의 인터럽트/예외사상에 대응한 개시 어드레스의 하나로 분기하는 것을 특징으로 하는 l칩 데이타 프로세서.
  20. 제 19 항에 있어서,
    상기 제2 형태의 인터럽트/예외사상에 어드레스변환에 대한 여러개의 인터럽트/예외사상을 포함하는 것을 특징으로 하는 l칩 데이타 프로세서.
  21. 제 20 항에 있어서,
    각각의 인터럽트/예외사상마다 인터럽트/예외코드가 할당되고,
    각각의 인터럽트/예외사상에 대응하는 상기 인터럽트/예외 핸들러의 개시 어드레스는 벡터테이블의 어드레스와 인티럽트/예외코드와 관련지어지는 것을 특징으로 하는 1칩 데이타 프로세서.
KR1019950029112A 1994-09-09 1995-09-06 데이타처리장치 KR100368197B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
JP24199194 1994-09-09
JP94-241991 1994-09-09
JP95-086067 1995-03-17
JP8606795 1995-03-17
JP95-240872 1995-08-25
JP95-224470 1995-08-25
JP24087295A JP3672634B2 (ja) 1994-09-09 1995-08-25 データ処理装置

Publications (2)

Publication Number Publication Date
KR960011613A KR960011613A (ko) 1996-04-20
KR100368197B1 true KR100368197B1 (ko) 2003-04-10

Family

ID=27305070

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950029112A KR100368197B1 (ko) 1994-09-09 1995-09-06 데이타처리장치

Country Status (3)

Country Link
US (2) US6038661A (ko)
JP (1) JP3672634B2 (ko)
KR (1) KR100368197B1 (ko)

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6408386B1 (en) * 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US6044430A (en) * 1997-12-17 2000-03-28 Advanced Micro Devices Inc. Real time interrupt handling for superscalar processors
DE19804784A1 (de) * 1998-02-06 1999-08-12 Philips Patentverwaltung Chipkarte mit integrierter Schaltung
US6289445B2 (en) * 1998-07-21 2001-09-11 Lsi Logic Corporation Circuit and method for initiating exception routines using implicit exception checking
US6480967B1 (en) * 1999-05-21 2002-11-12 Koninklijke Philips Electronics N.V. Multiple module processing system with reset system independent of reset characteristics of the modules
JP2000339177A (ja) * 1999-05-31 2000-12-08 Mitsubishi Electric Corp Eit処理機能を備えるマイクロプロセッサ及びeit処理方法
US6446189B1 (en) * 1999-06-01 2002-09-03 Advanced Micro Devices, Inc. Computer system including a novel address translation mechanism
US6481007B1 (en) * 1999-06-03 2002-11-12 Oracle Corporation Optimizing parameter passing
US6324635B1 (en) * 1999-06-09 2001-11-27 Ati International Srl Method and apparatus for address paging emulation
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US6487683B1 (en) 1999-10-01 2002-11-26 Stmicroelectronics Limited Microcomputer debug architecture and method
US6701405B1 (en) 1999-10-01 2004-03-02 Hitachi, Ltd. DMA handshake protocol
US6412043B1 (en) 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6598128B1 (en) 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6496905B1 (en) 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability
US7000078B1 (en) 1999-10-01 2006-02-14 Stmicroelectronics Ltd. System and method for maintaining cache coherency in a shared memory system
US6859891B2 (en) 1999-10-01 2005-02-22 Stmicroelectronics Limited Apparatus and method for shadowing processor information
US6684348B1 (en) 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
US6298394B1 (en) 1999-10-01 2001-10-02 Stmicroelectronics, Ltd. System and method for capturing information on an interconnect in an integrated circuit
US6449712B1 (en) 1999-10-01 2002-09-10 Hitachi, Ltd. Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
US7266728B1 (en) 1999-10-01 2007-09-04 Stmicroelectronics Ltd. Circuit for monitoring information on an interconnect
US6408381B1 (en) 1999-10-01 2002-06-18 Hitachi, Ltd. Mechanism for fast access to control space in a pipeline processor
US6351803B2 (en) 1999-10-01 2002-02-26 Hitachi Ltd. Mechanism for power efficient processing in a pipeline processor
US6918065B1 (en) 1999-10-01 2005-07-12 Hitachi, Ltd. Method for compressing and decompressing trace information
US6826191B1 (en) 1999-10-01 2004-11-30 Stmicroelectronics Ltd. Packets containing transaction attributes
US6693914B1 (en) 1999-10-01 2004-02-17 Stmicroelectronics, Inc. Arbitration mechanism for packet transmission
US6463553B1 (en) 1999-10-01 2002-10-08 Stmicroelectronics, Ltd. Microcomputer debug architecture and method
US6567932B2 (en) 1999-10-01 2003-05-20 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6629115B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method and apparatus for manipulating vectored data
US6591369B1 (en) 1999-10-01 2003-07-08 Stmicroelectronics, Ltd. System and method for communicating with an integrated circuit
US6460174B1 (en) 1999-10-01 2002-10-01 Stmicroelectronics, Ltd. Methods and models for use in designing an integrated circuit
US6629207B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US6732307B1 (en) 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US6434665B1 (en) 1999-10-01 2002-08-13 Stmicroelectronics, Inc. Cache memory store buffer
US6542983B1 (en) 1999-10-01 2003-04-01 Hitachi, Ltd. Microcomputer/floating point processor interface and method
US6557119B1 (en) 1999-10-01 2003-04-29 Stmicroelectronics Limited Microcomputer debug architecture and method
US6633971B2 (en) 1999-10-01 2003-10-14 Hitachi, Ltd. Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline
US6530047B1 (en) 1999-10-01 2003-03-04 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6502210B1 (en) 1999-10-01 2002-12-31 Stmicroelectronics, Ltd. Microcomputer debug architecture and method
US6412047B2 (en) * 1999-10-01 2002-06-25 Stmicroelectronics, Inc. Coherency protocol
US6590907B1 (en) 1999-10-01 2003-07-08 Stmicroelectronics Ltd. Integrated circuit with additional ports
US6820195B1 (en) 1999-10-01 2004-11-16 Hitachi, Ltd. Aligning load/store data with big/little endian determined rotation distance control
US6928073B2 (en) 1999-10-01 2005-08-09 Stmicroelectronics Ltd. Integrated circuit implementing packet transmission
US6601189B1 (en) 1999-10-01 2003-07-29 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6546480B1 (en) 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data
US6457118B1 (en) 1999-10-01 2002-09-24 Hitachi Ltd Method and system for selecting and using source operands in computer system instructions
US6615370B1 (en) 1999-10-01 2003-09-02 Hitachi, Ltd. Circuit for storing trace information
US6598177B1 (en) 1999-10-01 2003-07-22 Stmicroelectronics Ltd. Monitoring error conditions in an integrated circuit
US6349371B1 (en) 1999-10-01 2002-02-19 Stmicroelectronics Ltd. Circuit for storing information
US6574651B1 (en) 1999-10-01 2003-06-03 Hitachi, Ltd. Method and apparatus for arithmetic operation on vectored data
US7260745B1 (en) 1999-10-01 2007-08-21 Stmicroelectronics Ltd. Detection of information on an interconnect
US6665816B1 (en) 1999-10-01 2003-12-16 Stmicroelectronics Limited Data shift register
US7072817B1 (en) 1999-10-01 2006-07-04 Stmicroelectronics Ltd. Method of designing an initiator in an integrated circuit
US6779145B1 (en) 1999-10-01 2004-08-17 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6598050B1 (en) 2000-02-11 2003-07-22 Integrated Device Technology, Inc. Apparatus and method for limited data sharing in a multi-tasking system
US7133951B1 (en) * 2000-02-29 2006-11-07 Bourekas Philip A Alternate set of registers to service critical interrupts and operating system traps
US6507904B1 (en) * 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US7546141B2 (en) * 2000-05-23 2009-06-09 Robert Leon Hybrid communication system and method
US6721878B1 (en) * 2000-06-14 2004-04-13 Cypress Semiconductor Corp. Low-latency interrupt handling during memory access delay periods in microprocessors
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US6915416B2 (en) * 2000-12-28 2005-07-05 Texas Instruments Incorporated Apparatus and method for microcontroller debugging
US6829719B2 (en) * 2001-03-30 2004-12-07 Transmeta Corporation Method and apparatus for handling nested faults
US7082610B2 (en) * 2001-06-02 2006-07-25 Redback Networks, Inc. Method and apparatus for exception handling in a multi-processing environment
US7155718B1 (en) * 2002-04-04 2006-12-26 Applied Micro Circuits Corp. Method and apparatus to suspend and resume on next instruction for a microcontroller
US7296257B1 (en) * 2002-08-01 2007-11-13 Tymesys Corporation Techniques for exception handling by rewriting dispatch table elements
US6981120B1 (en) * 2002-11-04 2005-12-27 Savaje Technologies, Inc. Method and apparatus for virtual memory segmentation
JP2004213102A (ja) * 2002-12-26 2004-07-29 Fujitsu Ltd マイクロコンピュータ
CA2430763A1 (en) * 2003-05-30 2004-11-30 Ibm Canada Limited - Ibm Canada Limitee Efficiently releasing locks when an exception occurs
US20050027667A1 (en) * 2003-07-28 2005-02-03 Menahem Kroll Method and system for determining whether a situation meets predetermined criteria upon occurrence of an event
JP2005190207A (ja) * 2003-12-25 2005-07-14 Matsushita Electric Ind Co Ltd 割り込み制御装置、制御方法
US7188229B2 (en) * 2004-01-17 2007-03-06 Sun Microsystems, Inc. Method and apparatus for memory management in a multi-processor computer system
US7496897B1 (en) 2004-03-17 2009-02-24 Timesys Corporation Multiple code sets for multiple execution contexts
US20060136608A1 (en) * 2004-12-22 2006-06-22 Gilbert Jeffrey D System and method for control registers accessed via private operations
EP1713000A1 (en) * 2005-04-11 2006-10-18 Jaluna SA Memory protection system
US20070260754A1 (en) * 2006-04-13 2007-11-08 Irish John D Hardware Assisted Exception for Software Miss Handling of an I/O Address Translation Cache Miss
EP1865435A1 (en) * 2006-06-06 2007-12-12 Texas Instruments France Enhanced exception handling
KR100843134B1 (ko) * 2006-09-15 2008-07-02 삼성전자주식회사 인터럽트 금지구간 처리 장치 및 방법과 페이지 고정 장치및 방법
KR100781340B1 (ko) * 2006-09-18 2007-11-30 삼성전자주식회사 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법
US20100104985A1 (en) * 2007-03-05 2010-04-29 Tetsuya Watanabe Compound for photoresist, photoresist liquid, and etching method using the same
JP5119994B2 (ja) * 2008-03-14 2013-01-16 富士通株式会社 性能モニタリングプログラム、性能モニタリング方法、性能モニタリング装置
US9946667B2 (en) * 2008-11-12 2018-04-17 Microchip Technology Incorporated Microcontroller with configurable logic array
US8255928B2 (en) * 2009-02-19 2012-08-28 International Business Machines Corporation Automated termination of selected software applications in response system events
JP5491102B2 (ja) * 2009-08-27 2014-05-14 ルネサスエレクトロニクス株式会社 データプロセッサ
JP2014081783A (ja) * 2012-10-16 2014-05-08 Renesas Electronics Corp マイクロコントローラ、ハンドラアドレス特定方法及びプログラム
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9715385B2 (en) * 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9959120B2 (en) 2013-01-25 2018-05-01 Apple Inc. Persistent relocatable reset vector for processor
US9292364B1 (en) * 2014-09-23 2016-03-22 Sap Se Packaging application data and logic for offline support
US9740644B2 (en) * 2014-09-26 2017-08-22 Intel Corporation Avoiding premature enabling of nonmaskable interrupts when returning from exceptions
US10977192B1 (en) * 2016-04-08 2021-04-13 Amazon Technologies, Inc. Real-time memory-page state tracking and its applications
CN110209473B (zh) * 2018-04-12 2023-04-18 腾讯科技(深圳)有限公司 中断处理设备、云服务器、中断处理方法及业务处理方法
US11106463B2 (en) * 2019-05-24 2021-08-31 Texas Instruments Incorporated System and method for addressing data in memory
US11853231B2 (en) 2021-06-24 2023-12-26 Ati Technologies Ulc Transmission of address translation type packets

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06309177A (ja) * 1993-04-27 1994-11-04 Toshiba Corp マイクロコンピュータ
US5390305A (en) * 1991-03-29 1995-02-14 Kabushiki Kaisha Toshiba Information processing apparatus capable of executing exception at high speed
JPH08305564A (ja) * 1995-04-28 1996-11-22 Sanyo Electric Co Ltd マイクロコンピュータ
KR970049490A (ko) * 1995-12-30 1997-07-29 김광호 인터럽트 제어장치
KR20010103761A (ko) * 1999-12-07 2001-11-23 마츠시타 덴끼 산교 가부시키가이샤 인터럽트 관리 장치, 인터럽트 관리 방법, 기록 매체, 오퍼레이팅 시스템, 신호 처리용 프로세서, 화상 단말 장치 및 이동체 통신 시스템

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4768149A (en) * 1985-08-29 1988-08-30 International Business Machines Corporation System for managing a plurality of shared interrupt handlers in a linked-list data structure
US5109329A (en) * 1987-02-06 1992-04-28 At&T Bell Laboratories Multiprocessing method and arrangement
JPH0795277B2 (ja) * 1988-11-25 1995-10-11 日本電気株式会社 データ処理装置
US5214793A (en) * 1991-03-15 1993-05-25 Pulse-Com Corporation Electronic billboard and vehicle traffic control communication system
WO1993001547A1 (en) * 1991-07-08 1993-01-21 Seiko Epson Corporation Risc microprocessor architecture implementing fast trap and exception state
JP3176093B2 (ja) * 1991-09-05 2001-06-11 日本電気株式会社 マイクロプロセッサの割込み制御装置
US5574872A (en) * 1991-12-10 1996-11-12 Intel Corporation Method and apparatus for controlling the saving of pipelines in pipelined processors during trap handling
US5345576A (en) * 1991-12-31 1994-09-06 Intel Corporation Microprocessor simultaneously issues an access to an external cache over an external cache bus and to an internal cache, cancels the external cache access on an internal cache hit, and reissues the access over a main memory bus on an external cache miss
US5386563A (en) * 1992-10-13 1995-01-31 Advanced Risc Machines Limited Register substitution during exception processing
US5450560A (en) * 1992-12-21 1995-09-12 Motorola, Inc. Pointer for use with a buffer and method of operation
US5473763A (en) * 1993-08-02 1995-12-05 Advanced Micro Devices, Inc. Interrupt vector method and apparatus
JPH07105023A (ja) * 1993-09-20 1995-04-21 Internatl Business Mach Corp <Ibm> データ処理システム内でスプリアス割込みを検出するための方法及び装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5390305A (en) * 1991-03-29 1995-02-14 Kabushiki Kaisha Toshiba Information processing apparatus capable of executing exception at high speed
JPH06309177A (ja) * 1993-04-27 1994-11-04 Toshiba Corp マイクロコンピュータ
JPH08305564A (ja) * 1995-04-28 1996-11-22 Sanyo Electric Co Ltd マイクロコンピュータ
KR970049490A (ko) * 1995-12-30 1997-07-29 김광호 인터럽트 제어장치
KR20010103761A (ko) * 1999-12-07 2001-11-23 마츠시타 덴끼 산교 가부시키가이샤 인터럽트 관리 장치, 인터럽트 관리 방법, 기록 매체, 오퍼레이팅 시스템, 신호 처리용 프로세서, 화상 단말 장치 및 이동체 통신 시스템

Also Published As

Publication number Publication date
US6038661A (en) 2000-03-14
JP3672634B2 (ja) 2005-07-20
KR960011613A (ko) 1996-04-20
US6425039B2 (en) 2002-07-23
US20020002669A1 (en) 2002-01-03
JPH08320796A (ja) 1996-12-03

Similar Documents

Publication Publication Date Title
KR100368197B1 (ko) 데이타처리장치
US4701844A (en) Dual cache for independent prefetch and execution units
US5826057A (en) Method for managing virtual address space at improved space utilization efficiency
JP3713312B2 (ja) データ処理装置
US5113521A (en) Method and apparatus for handling faults of vector instructions causing memory management exceptions
US6205560B1 (en) Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG
US6341324B1 (en) Exception processing in superscalar microprocessor
US5095526A (en) Microprocessor with improved interrupt response with interrupt data saving dependent upon processor status
US6430657B1 (en) Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US5008812A (en) Context switching method and apparatus for use in a vector processing system
US5838897A (en) Debugging a processor using data output during idle bus cycles
US20030051122A1 (en) Trace information generation apparatus for generating branch trace information omitting at least part of branch source information and branch destination information on target processing
US5263153A (en) Monitoring control flow in a microprocessor
JP2005502119A (ja) 複数スレッドの同時実行に対応するコンピュータシステムにおける割込み処理の方法
GB2200484A (en) Detecting and handling memory-mapped i/o by a pipelined computer
JPH0583932B2 (ko)
JPH0215369A (ja) ベクター処理システムの命令を実行する方法及び装置
JP2000231549A (ja) マイクロプロセッサ
US5187791A (en) Microprocessor with improved interrupt response with data saving dependent upon processor status using status flag
JPH03158928A (ja) データ処理装置
JP3822885B2 (ja) 1チップデータプロセッサ
GB2200482A (en) Monitoring control flow in a microprocessor
GB2200481A (en) Maintaining coherence between a microprocessor&#39;s integrated cache and external memory
US20080010426A1 (en) Processor system and processing method for operating system program in processor system
JP4160228B2 (ja) マイクロプロセッサ

Legal Events

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

Payment date: 20061226

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee