KR100781949B1 - 정보 처리 유닛 및 특정 애플리케이션용 연산 명령에 대한 예외 처리 방법 - Google Patents

정보 처리 유닛 및 특정 애플리케이션용 연산 명령에 대한 예외 처리 방법 Download PDF

Info

Publication number
KR100781949B1
KR100781949B1 KR1020010003129A KR20010003129A KR100781949B1 KR 100781949 B1 KR100781949 B1 KR 100781949B1 KR 1020010003129 A KR1020010003129 A KR 1020010003129A KR 20010003129 A KR20010003129 A KR 20010003129A KR 100781949 B1 KR100781949 B1 KR 100781949B1
Authority
KR
South Korea
Prior art keywords
instruction
specific application
interruption
register
unit
Prior art date
Application number
KR1020010003129A
Other languages
English (en)
Other versions
KR20010096557A (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
Priority claimed from JP2000074847A external-priority patent/JP3980243B2/ja
Priority claimed from JP2000094476A external-priority patent/JP3715505B2/ja
Priority claimed from JP2000234490A external-priority patent/JP3866023B2/ja
Application filed by 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Publication of KR20010096557A publication Critical patent/KR20010096557A/ko
Application granted granted Critical
Publication of KR100781949B1 publication Critical patent/KR100781949B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)

Abstract

제어부에 있어서, 기능적 명세를 규정하지 않는 연산 명령 및 특정 애플리케이션용 연산 명령을 처리하는 유닛이 프로세서 코어 내에 설치된다. 이 유닛의 구조는 플렉시블 파이프라인 구조에 기초하여 변경될 수 있으며, 각 응용 분야마다 개별적으로 설계될 수 있다. 또한, 상기 유닛의 명령이 발행되어 결과를 이용할 수 있을 때까지의 대기 시간을 규정하는 레지스터가 출력 포트의 경쟁을 막기 위해서 프로세서 코어 내에 설치될 수 있다. 또한, 상기 유닛의 명령을 발행하는 간격 규제에 관한 대기 시간을 규정하는 또다른 레지스터도 이전의 명령에 따른 리소스의 경쟁을 막기 위해 프로세서 코어 내에 설치된다.

Description

정보 처리 유닛 및 특정 애플리케이션용 연산 명령에 대한 예외 처리 방법{INFORMATION PROCESSING UNIT, AND EXCEPTION PROCESSING METHOD FOR SPECIFIC APPLICATION-PURPOSE OPERATION INSTRUCTION}
도 1은 종래의 프로세서 코어 구조를 도시하는 블록도.
도 2는 종래의 명령 실행 제어부의 구조과 동작을 설명하는 도면.
도 3은 종래의 명령 실행 제어부의 구조와 동작을 설명하는 도면.
도 4는 종래의 명령 중지법에 따른 인터럽션 처리 프로그램의 흐름도.
도 5는 종래의 소프트웨어 중지법에 따른 인터럽션 처리 프로그램의 흐름도,
도 6은 종래의 스텝 중지법에 따른 인터럽션 처리 프로그램의 흐름도,
도 7은 종래의 정보 처리 장치의 구조를 도시하는 블록도.
도 8은 종래의 정보 처리 장치의 또다른 구조를 도시하는 블록도.
도 9는 본 발명의 제1 실시예의 프로세서 코어의 구조에 관한 일례를 도시하는 블록도.
도 10은 제1 실시예의 프로세서 코어의 구조에 관한 또다른 예를 도시하는 블록도.
도 11은 제1 실시예의 명령 실행 제어부의 구조와 동작을 설명하는 도면.
도 12는 제1 실시예의 명령 실행 제어부의 구조와 동작을 설명하는 도면.
도 13은 본 발명의 제2 실시예의 특정 애플리케이션용 연산 명령의 예외 처리 방법을 적용한 정보 처리 장치의 구조를 도시하는 블록도.
도 14는 제2 실시예의 명령 중지 검출부의 한 예를 도시하는 블록도,
도 15는 제2 실시예의 연산 레지스터의 일례를 도시하는 구성도.
도 16은 제2 실시예의 인터럽션 발생전 연산 레지스터의 일례를 도시하는 구성도.
도 17은 제2 실시예의 특정 애플리케이션용 연산 명령의 예외 처리 방법중에 스텝 중지법에 따른 인터럽션 처리 프로그램의 흐름도,
도 18은 제2 실시예의 특정 애플리케이션용 연산 명령의 예외 처리 방법중에 소프트웨어 중지법에 따른 인터럽션 처리 프로그램의 흐름도.
도 19는 제2 실시예의 특정 애플리케이션용 연산 명령의 예외 처리 방법중에 명령 중지법에 따른 인터럽션 처리 프로그램의 흐름도.
도 20은 본 발명의 제3 실시예의 특정 애플리케이션용 연산 명령의 예외 처리 방법을 적용한 정보 처리 장치의 구조를 도시하는 블록도.
도 21은 제3 실시예의 특정 애플리케이션용 연산 명령의 예외 처리 방법중에 소프트웨어 중지법에 따른 인터럽션 처리 프로그램의 흐름도.
도 22는 본 발명의 제4 실시예의 특정 애플리케이션용 연산 명령의 예외 처리 방법을 적용한 정보 처리 장치의 구조를 도시하는 블록도.
도 23은 제4 실시예의 명령 중지 검출부의 일례를 도시하는 블록도,
도 24는 제4 실시예의 특정 애플리케이션용 연산 명령의 예외 처리 방법중에 명령 중지법에 따른 인터럽션 처리 프로그램의 흐름도.
도 25는 본 발명의 제5 실시예의 특정 애플리케이션용 연산 명령의 예외 처리 방법을 적용한 정보 처리 장치의 구조를 도시하는 블록도.
도 26은 제5 실시예의 특정 애플리케이션용 연산 예외의 중지점 테이블의 일례를 도시한 구성도.
도 27은 제5 실시예의 특정 애플리케이션용 연산 명령의 예외 처리 방법중에 소프트웨어 중지법에 따른 인터럽션 처리 프로그램의 흐름도.
도 28은 제5 실시예의 특정 애플리케이션용 연산 명령의 예외 처리 방법중에 명령 중지법에 따른 인터럽션 처리 프로그램의 흐름도.
도 29는 본 발명의 제6 실시예의 정보 처리 장치의 구조를 도시하는 블록도.
도 30은 본 발명의 제7 실시예의 정보 처리 장치의 구조를 도시하는 블록도.
〈도면의 주요 부분에 대한 부호의 설명〉
1061 : 메모리부
1062 : 명령 페치 제어부
1063 : 명령 버퍼부
1064 : 명령 디코드부
1065 : 명령 발행 제어부
1066 : 스코어 보드부
1067 : 명령 실행 제어부
1068 : 로드/저장 유닛
1069 : 특정 애플리케이션용 명령 연산 유닛
1070 ; 분기 유닛
1071 : 범용 레지스터부
1072 : 명령 결과 대기 시간 레지스터
1073 : 특정 애플리케이션용 명령 연산 유닛
본 발명은 특정 애플리케이션용 연산 명령으로써 로드되는 정보 처리 장치와, 특정 애플리케이션용 연산 명령으로써 로드되는 정보 처리 장치에서 특정 애플리케이션용 연산 명령의 실행중에 연산 예외(예외적 연산)가 발생할 때 도입되는 예외 처리 방법에 관한 것이다. 이 경우 특정 애플리케이션용 연산 명령은 특정 응용 목적에 맞게 특정화된 연산 기능을 갖는 명령이다.
여러 회 특정 애플리케이션를 위해 특정화된 소정의 특수 처리가 이용된다. 특정 애플리케이션용 연산 명령으로써 로드되는 정보 처리 장치는 효율적으로 그러한 처리를 수행하기 위해 이용된다. 그러나, 특정 애플리케이션용 연산 명령은 각 응용 분야마다 다르다. 그러므로, 특정 애플리케이션를 위해 설계되는 특수 처리는 범용으로 사용될 수 없다. 그러므로, 여러 경우에 있어서, 이러한 특정 애플리케이션용 연산 명령은 다른 응용 분야에서는 무용하다.
이러한 특정 애플리케이션용 연산 명령을 각종 응용 분야에 적용하려면, 각종 응용 분야를 포함하는 특정 애플리케이션용 연산 명령이 모두 설치된 프로세서를 개발해야 한다. 그러나, 이러한 프로세서의 개발은 명령수 증가 및 프로세서 구조의 복잡도 상승을 유도한다. 게다가, 회로 스케일 증가, 소비 전력 증가 및 칩의 가격 상승같은 각종 단점을 야기시킨다.
상기 문제들을 해결하기 위해서, 종래의 방법에 따라, 자체의 명령 제어 구조를 구비한 보조처리기 등의 부가 처리 유닛이 통상의 연산 명령을 실행하는 처리기 외부에 접속된다. 이 구조에 기초하여, 특정 애플리케이션용 연산 명령이 추가된다. 이 배치에 따라, 프로세서 그자체를 재설계할 필요가 없다.
도 1의 블록도는 종래의 프로세서 코어 구조를 나타낸다. 종래적으로, 프로세서 코어는 메모리부(1011), 명령 페치 제어부(1012), 명령 버퍼부(1013), 명령 디코드부(1014), 명령 발행 제어부(1015), 스코어 보드부(1016), 명령 실행 제어부(1017), 로드/저장 유닛(1018), 실행부(1019), 분기 유닛(1020) 및 범용 레지스터부(1021)로 구성된다.
도 2 및 도 3은 종래의 명령 실행 제어부(1017)의 구조와 동작을 설명하는 도면이다. 도 2 및 도 3에서, 동시에 발행 가능한 복수개의 명령이 있을 경우에, 그 명령들 중에 하나의 연산에 특정화된 부분들을 도시한다. 도 2 및 도 3은 명령 카테고리(A1)에 속하는, 2 개의 파이프단을 구비하는 명령 그룹의 결과와, 4 개의 파이프라인단을 구비하는 것에 해당하는 명령 그룹(B2)의 결과를 기록하는 제어 및 스코어 보드의 클리어 제어에 관한 특징적인 부분들을 도시한다.
먼저, 도 2에 대해 설명한다. 연산 실행 제어부(1017)는 명령 디코드부(1014)로부터 연산 코드(연산 코드의 유효 플래그 포함) 및 목적지 레지스터 번호를 수신한다. 명령 실행 제어부(1017)은 명령 발행 제어부(1015)로부터 명령 해제 플래그를 수신한다.
디코더(1022)는 연산 코드와 그 유효 플래그를 수신하며, 연산 코드가 어떤 명령 그룹에 속하는 지를 결정하고, 그 유효 플래그를 출력한다. AND 회로(1023, 1024)는 유효 플래그와 디코더(1022)로부터의 리소스 플래그 출력간의 AND 로직을 계산하여, 각각의 파이프라인 레지스터의 유효 플래그(유효 A1/B1)(1025, 1026)에 결과를 기록한다.
목적지 레지스터 번호는 파이프라인 레지스터의 제1 파이프라인단(1027)에 저장된다. 그 정보는 1 사이클 당 매 한 단씩 다음 파이프라인 레지스터로, 즉 유효 A2/B2 각각의 유효 플래그(1028, 1029)와 제3 파이프라인단(1032) 및 유효 B4의 유효 플래그(1033)와 제4 파이프라인단(1034)로 전달된다.
파이프라인 레지스터의 최종단에서, OR 회로는 각각의 명령 그룹의 유효 플래그의 OR 로직을 계산하여, 스코어 보드부(1016)에 스코어 보드 클리어 요청 신호를 출력하고, 레지스터부(1021)에 기록 요청 신호를 출력한다. 동시에, 유효 플래그의 최종단에 해당하는 파이프라인 레지스터의 목적지 레지스터 값은 유효 A2의 유효 플래그(1028) 또는 유효 B4의 유효 플래그(1033)에 의해 선택된다.
AND 회로(1036)는 유효 A2의 유효 플래그(1028)와 제2 파이프라인단(1030) 값간의 AND 로직을 출력한다. AND 회로(1037)은 유효 B4의 유효 플래그(1033)와 제4 파이프라인단(1034) 값의 AND 로직을 출력한다. OR 회로(1038)는 AND 회로(1036, 1037) 출력들의 OR 로직을 계산하고, 스코어 보드부(1016)와 레지스터부(1021)에 목적지 레지스터 번호로서 결과를 출력한다.
파이프라인 레지스터의 출력 포트를 공유하는 경우, 동시에 명령들이 기록될 수 없다. 이런 경우에, 출력 포트를 이용하는 타이밍에 관한 정보(저지 A)가 명령 발행 제어부(1015)에 통보된다. 그러므로, 명령 발행 제어부(1015)는 출력단의 경쟁을 피해서 제어함으로써, 기록 포트의 경쟁을 막을 수 있다. 출력 포트 사용 타이밍에서의 정보(저지 A)로서, 유효 B2의 유효 플래그(1029)가 이용된다. 즉, 명령 그룹(B)이 제2 파이프라인단에 있다면, 명령 그룹(A)의 발행을 억제하는 제어 신호(저지 A)가 발행된다.
도 3은 일정 기간 동안 리소스를 차지하는 유형인 통상의 명령에 대한 제어 회로 예를 나타낸다. 도 3에 도시된 제어 회로는 도 2에 도시된 구성 장치를 모두 포함하며, 추가로 가산기(1041), 2 개의 선택기(1042, 1043)와 카운터(1044), 3 개의 비교기(1045, 1046, 1047), 유효 n의 유효 플래그(1048), 제n 파이프라인단(1049), 6 개의 AND 회로(1050, 1051, 1052, 1053, 1054, 1055) 및 3 개의 OR 회로(1056, 1057, 1058)를 포함한다.
AND 회로(1050)는 디코더(1022) 출력과 해제 플래그간의 AND 로직을 출력한다. 카운터(1044)는 가산기(1041)에 의해 1씩 증분된 자신의 출력값을 홀드한다. 카운터(1044)의 출력 값은 제1 비교기(1045), 제2 비교기(1046), 제3 비교기(1047)각각에 의해 "n", "n-2", "n-4"와 비교된다. 제1 비교기(1045)의 비교 결과는 AND 회로(1051)의 로(low) 활성 입력 단자의 입력이 된다.
AND 회로(1051)의 출력은 OR 회로(1056, 1057)로 입력된다. OR 회로(1056)는 AND 회로(1050, 1051)의 출력들간의 OR 로직을 제 1 선택기(1042)로 출력한다. 제1 선택기(1042)는 이 입력 값에 따라 카운터(1044)를 리셋한다. OR 회로(1057)는 AND 회로(1050, 1051) 출력들간의 OR 로직을 계산하여, 이 OR 로직의 결과를 유효 n의 유효 플래그(1048)에 기록한다. 유효 n의 유효 플래그(1048)의 출력은 AND 회로(1052, 1053, 1054)로 입력되며, 또한 AND 회로(1051)의 타입력 단자로 입력된다.
제1 비교기(1045), 제2 비교기(1046) 및 제3 비교기(1047)의 각각의 비교 결과는 각각의 AND 회로(1052, 1503, 1054)의 타입력 단자로 입력된다. AND 회로(1052)의 출력은 OR 회로(1035)에 입력된다. OR 회로(1035)는 각 명령 그룹의 유효 플래그와 AND 회로(1052) 출력간의 OR 로직을 계산하고, 스코어 보드 클리어 요청을 스코어 보드부(1016)에 출력하며, 기록 요청 신호를 레지스터부(1021)에 출력한다.
OR 회로(1058)는 유효 B2의 유효 플래그(1029)와 AND 회로(1053) 출력간의 OR 로직을 계산하여, 명령 그룹(A) 발행을 억제하는 제어 신호(저지 A)를 발행한다. AND 회로(1054)의 출력은 명령 그룹(B) 발행을 억제하는 제어 신호(저지 B)가 된다.
제2 비교기(1043)는 제n 레지스터 파이프라인단(1049)에 저장된 목적지 레지스터 번호와 명령 디코드부(1014)로부터 수신된 목적지 레지스터 번호 중 하나를 선택한다. 이 선택은 AND 회로(1050)의 출력에 따라 수행된다. 선택된 번호는 제n 파이프라인단(1049)에 저장된다.
AND 회로(1055)는 제n 레지스터 파이프라인단(1049)에 저장된 목적지 레지스터 번호와 AND 회로(1052) 출력간의 AMD 로직을 계산한다. OR 회로(1038)는 AND 회로(1055, 1036, 1037)의 출력들간의 OR 로직을 계산하여, 목적지 레지스터 번호로서 스코어 보드부(1016) 및 레지스터부(1021)에 출력한다.
상기 구조에 기초해서, 카운터(1044)는 그 명령의 결과가 출력되는 사이클 수까지 명령 및 목적지 레지스터의 유효 플래그를 홀드한다. 카운터(1044)가 소정의 사이클 수에 도달할 경우, 목적지 레지스터 번호 및 레지스터 사용 플래그 클리어 신호는 스코어 보드부(1016)에 출력된다. 게다가, 목적지 레지스터 번호 및 기록 요청은 레지스터부(1021)에 출력된다.
또한, 동일한 연산 유닛을 차지하고 있는 연속 명령 그룹이 연산 유닛을 이용할 수 있는 소정의 사이클 수에서, 연산 유닛 사용 플래그 클리어 신호가 출력된다. 명령 발행 제어부(1045)에서의 명령 발생 억제 신호(저지 A 및 저지 B)는 출력 포트 사용 타이밍과 연속 명령 그룹의 실행 사이클 수간의 차이에 따라 출력된다.
특정 애플리케이션용 연산 명령으로써 로드되는 정보 처리 장치에 있어서, 특정 애플리케이션용 연산 명령이 실행될 경우, 소정 회, 프로그램에 해를 끼칠 버그를 일으키는 오버플로우 또는 언더플로우 등의 예외 연산이 발생한다. 이러한 버그를 피하기 위해, 프로그램 개발 단계에서 디버깅이 수행된다.
디버깅은 디버그 지원 시스템을 이용하여 실시된다. 일반적으로, 디버그 지원 시스템에는 실행중인 프로그램을 인터럽션하기 위해 중지점 기능 또는 단일 스텝 기능이 제공된다. 디버그를 수행하는 조작원은 이러한 기능을 사용하여 디버그 되도록 프로그램 실행을 중단시킬 수 있으며, 중단된 상태에서 레지스터와 메모리 값을 확인하거나 변경할 수 있다. 조작원은 프로그램이 중단된 시점으로부터 프로그램 실행을 다시 시작할 수 있다.
중지점 기능을 실현하기 위한 방법으로서, 명령 중지법과 소프트웨어 중지법이 있다. 명령 중지법에 따르면, 프로그램 실행 시작전에, 프로그램 실행을 중단시키는 명령 어드레스는 하드웨어에 설치된 중지점 레지스터에 홀드된다. 중지점 레지스터가 지정한 명령이 프로그램 실행중에 검출되는 경우에 인터럽션이 발생한다. 그후, 인터럽션 처리 프로그램을 통해 디버그 지원 시스템에 이러한 제어가 전달된다. 이 상태가 디버그 조작원에게 통보된다. 디버그 조작원이 프로그램의 실행을 다시 시작하도록 지시할 경우, 이 제어는 디버그 지원 시스템에서 시작으로 복귀된다.
도 4는 명령 중지법에 따른 인터럽션 처리 프로그램의 흐름도이다. 프로그램의 실행을 인터럽션한 후 인터럽션 처리 프로그램이 시작될 경우, 콘텍스트(context)는 저장되고(단계 S1701), 명령 중지 처리가 실행된다(단계 S1702). 이어서, 콘텍스트가 복원되고(단계 S1703), 처리가 인터럽션으로부터 복구된다(단계 S1704).
소프트웨어 중지법에 따르면, 프로그램 실행이 시작되기 전에, 프로그램 실행 명령이 인터럽션을 발생시키는 명령으로 대체된다. 인터럽션을 발생시키는 명령이 프로그램 실행중에 검출되는 경우에, 인터럽션이 발생한다. 그리고, 인터럽션 처리 프로그램을 통해 디버그 지원 프로그램에 이러한 제어가 전달된다. 이 상태가 디버그 조작원에게 통보된다. 프로그램 실행을 재시작할 때, 대체되었던 원래의 명령 실행이 시뮬레이션되어, 제어가 그 시작으로 전달된다. 중지점 인터럽션이라는 전용 명령이 인터럽션을 발생시키는 명령으로서 준비되는 경우도 있다.
도 5는 소프트웨어 중지법에 따른 인터럽션 처리 흐름도이다. 프로그램 실행을 인터럽션한 후에, 인터럽션 처리 프로그램이 시작될 경우, 콘텍스트는 저장되고(단계 S1801), 소프트웨어 중지 처리가 수행된다(단계 S1802). 이어서, 콘텍스트가 복원되고(단계 S1803), 인터럽션 복귀 명령에 의해 처리가 인터럽션으로부터 복구된다(단계S1804).
단일 스텝 기능에 따라, 디버그될 프로그램이 중단된 상태에서 단일 스텝 기능을 실행하도록 디버그 조작원이 지시할 경우, 다음에 실행될 명령이 실행된 후에 프로그램 실행은 중단된다. 단일 스텝 기능을 실현하는 방법과 마찬가지로, 스텝 중지법이 있다. 스텝 중지법에 따르면, 인터럽션이 발생될지의 여부에 따른 결정 결과를 홀드하기 위해 명령이 실행된 후에, 단일 스텝 모드 레지스터가 하드웨어에 설치된다. 단일 스텝 모드에 있어서, 인터럽션은 초점이 맞는 명령이 실행된 후에 발생된다. 인터럽션이 발생하면, 인터럽션 처리 프로그램을 통해 디버그 지원 프로그램에 제어가 전달된다. 이 상태는 디버그 조작원에게 통보된다. 프로그램 실행 재시작이 지시되면, 제어는 그 시작으로 복귀한다.
도 6은 스텝 중지법에 따른 인터럽션 처리 프로그램의 흐름도이다. 인터럽션 처리 프로그램이 프로그램 실행을 인터럽션한 후에 시작되는 경우, 콘텍스트는 저장되고(단계 S1901), 스텝 중지 처리가 수행된다(단계 S1902). 이어서, 그 콘텍스트는 복원되고(단계 S1903), 인터럽션 복귀 명령에 의해 처리가 인터럽션으로부터 복구된다(단계 S1904).
특정 애플리케이션용 연산 명령으로써 로드되는 정보 처리 장치에 있어서, 특정 애플리케이션용 연산 명령의 실행 후, 예컨대 오버플로우가 발생하는 연산 예외가 발생할 경우, 이러한 연산 예외가 발생하는 프로그램의 위치를 검출하는 것이 필요한다.
종래적으로, 프로그램 순서를 보장함으로써 연산 예외를 검출하기 위해서, 예외로 인한 제어 의존성이 소정의 연산 명령에서 발생하는지의 여부가 결정된다. 연산 명령이 예외로 인한 제어 의존성을 가지고 있다면, 이 명령을 따르는 명령 실행은 제어 의존성을 갖는 연산 명령 실행을 완료한 후에 시작된다. 한편, 그 명령이 예외로 인한 제어 의존성을 갖지 않는다면, 이 명령을 따르는 명령 실행이 즉시 시작된다.
도 7의 블록도는 특정 애플리케이션용 연산 명령으로써 로드되는 종래의 정보 처리 장치의 구조를 나타낸다. 이 정보 처리 장치에는 칩 내부 및 외부에 메모리들을 구비하는 메모리(101)와, 버스 및 캐시 회로가 장착되어 있다. 이 장치는 명령 판독 제어부(121), 프로그램 카운터(122) 및 명령어 레지스터(123)으로 구성된 명령 판독부(102)도 구비한다. 이 장치는 복귀 명령 어드레스 레지스터(131), 인터럽션 발생전 연산 레지스터(132), 연산 레지스터(133) 및 범용 레지스터(134)로 구성된 레지스터 제어부(103)도 또한 구비한다. 또한 이 장치는 통상의 인터럽션 제어부(141)로 구성된 인터럽션 제어부(104)도 구비한다. 이 장치는 또한 명령 실행부(105)도 구비한다.
명령 실행부(105)에는 명령 디코드부(151), 로드/저장 명령 실행부(152), 연산 명령 실행부(153), 복수개의 특정 애플리케이션용 연산 명령 실행부(154), 분기/인터럽션 복귀 명령 제어부(156), 스코어 보드(157), 로드/저장 명령 발행 제어부(158), 연산 명령 발행 제어부(159), 분기/인터럽션 발행 제어부(160) 및 특정 애플리케이션용 연산 명령 발행 제어부(162)가 장착되어 있다.
이러한 정보 처리 장치에 있어서, 연산 예외로 인한 특정 애플리케이션용 연산 명령의 인터럽션은 다음과 같이 수행된다. 특정 애플리케이션용 연산 명령 실행 시작 전에, 특정 애플리케이션용 연산 명령 발행 제어부(162)는 스코어 보드(157)의 플래그 정보, 및 명령 디코드부(151)에서 공급되는 특정 애플리케이션용 연산 명령에 기초하여, 제어 의존성의 유무를 결정한다. 이 결정에 따라, 특정 애플리케이션용 연산 명령 발행 제어부(162)는 특정 애플리케이션용 연산 명령을 실행할 수 있는지의 여부를 특정 애플리케이션용 연산 명령 실행부(154)에게 통보한다.
특정 애플리케이션용 연산 명령이 실행 가능할 경우, 특정 애플리케이션용 연산 명령 실행부(154)는 이 명령을 즉시 실행한다. 특정 애플리케이션용 연산 명령이 실행 불가능하다면, 특정 애플리케이션용 연산 명령 실행부(154)는 특정 애플리케이션용 연산 명령이 실행 가능하다는 통지를 특정 애플리케이션용 연산 명령 발행 제어부(162)로부터 수신할 때까지 기다린다. 특정 애플리케이션용 연산 명령 실행중에, 연산 예외가 검출된다면, 각각의 명령 실행부(152, 153, 154)는 인터럽션 발생을 인터럽션 제어부(104)에게 통보하고, 인터럽션을 발생시킨다.
도 8의 블록도는 특정 애플리케이션용 연산 명령으로 로드된 종래의 정보 처리 장치에 대한 또다른 구조예를 도시한다. 이 정보 처리 장치는 도 7에 도시된 정보 처리 장치에 조건 코드 레지스터(171)가 추가 설치된 구조를 갖는다. 조건 코드 레지스터(171)는 각각의 연산 명령 실행 후에 연산 명령 실행부(153) 또는 특정 애플리케이션용 연산 명령 실행부(154)로부터 통보된 조건 코드를 홀드한다. 이 정보 처리 장치에는 조건 코드 레지스터(171)에 홀드된 값과 명령 필드의 값에 따라 예외가 발행되는지의 여부에 대해 결정하는 트랩 명령이 제공된다.
명령 실행 완료후에, 각각의 연산 명령 실행부(153)과 특정 애플리케이션용 연산 명령 실행부(154)는 명령 실행 결과에 해당하는 값을 조건 코드 레지스터(171)에 설정한다. 명령 디코드부(151)로부터 트랩 명령이 제공되었을 경우, 분기/인터럽션 복귀 명령 제어부(156)는 조건 코드 레지스터(171)에 홀드된 값 및 명령 필드의 값에 기초하여, 인터럽션의 발생 여부를 결정한다. 인터럽션을 발생시키는 경우, 분기/인터럽션 복귀 명령 제어부(156)는 인터럽션 제어부(104)에 인터럽션 발생을 요청한다.
도 8에 도시하는 구조를 갖는 정보 처리 장치에 있어서, 예외로 인한 특정 애플리케이션용 연산 명령의 인터럽션은 다음과 같이 수행된다. 특정 애플리케이션용 연산 명령 실행 시작전에, 특정 애플리케이션용 연산 명령 발행 제어부(162)는 스코어 보드(157)의 플래그 정보 및 명령 디코드부(151)로부터 공급된 특정 애플리케이션용 연산 명령에 기초하여, 제어 의존성의 유무를 결정한다. 이 결정에 따라, 특정 애플리케이션용 연산 명령 발행 제어부(162)는 특정 애플리케이션용 연산 명령 발행 제어의 실행 가능 여부를 특정 애플리케이션용 연산 명령 실행부(154)에 통보한다.
특정 애플리케이션용 연산 명령이 실행 가능할 경우, 특정 애플리케이션용 연산 명령 실행부(154)는 이 명령을 즉시 실행한다. 특정 애플리케이션용 연산 명령이 실행 불가능할 경우, 특정 애플리케이션용 연산 명령 실행부(154)는 특정 애플리케이션용 연산 명령 발행 제어부(162)로부터 특정 애플리케이션용 연산 명령을 실행할 수 있다는 통보를 수신할 때까지 대기한다. 특정 애플리케이션용 연산 명령 실행부(154)가 그 명령 실행을 완료하는 경우, 특정 애플리케이션용 연산 명령 실행부(154)는 명령 실행 결과에 해당하는 값을 조건 코드 레지스터(171)에 설정한다.
분기/인터럽션 복귀 명령 제어부(156)는 조건 코드 레지스터(171)의 값과 명령 필드의 값에 기초하여, 인터럽션의 발생 여부를 결정한다. 인터럽션을 실행하는 경우, 분기/인터럽션 복귀 명령 제어부(156)는 인터럽션 제어부(104)에게 명령 발생을 통보하고, 인터럽션을 발생시키게 한다.
그러나, 도 1에 도시된 바와 같은 종래의 구조를 갖는 프로세서 코어에 보조 프로세서 등의 추가 정보 처리 장치를 설치하면 다음과 같은 문제가 발생한다. 프로세서의 외부 I/O 유닛으로 인한 입력/출력 오버헤드가 존재할 경우, 연산 파이프라인의 몇몇의 단을 구비하는 특정 애플리케이션용 연산 명령과 통상의 명령과의 조합 이용에 있어서 성능이 떨어진다. 그러므로, 그러한 명령 조합 이용이 통상의 명령 조합과 동일한 비용을 실질적으로 요구한다는 점에서 단점이 있었다.
게다가, 특정 애플리케이션용 연산 명령의 파이프라인 구조가 응용 분야마다 상이하기 때문에, 파이프라인이 프로세서 내에 설치될 경우 명령 발행 제어 회로를 검토해야 한다. 이것은 프로세서 제어부를 재설계하는 것을 필요로 한다. 그 결과, 프로세서가 ASIC(Application Specific Integrated Circuit)의 IP(Intellectual Property)로서 이용될 경우 프로세서를 개발하는 데 드는 비용이 증가하고, 개발 기간 또한 증가한다는 문제가 있다.
더욱이, 도 4 내지 도 6에 도시된 종래의 인터럽션 처리는 다음과 같은 문제를 가지고 있다. 오버플로우 또는 언더플로우가 발생되었을 경우, 연산 결과는, 예컨대 멀티미디어 처리에서 빈번히 발생하는 데이터 클리핑(예컨대, 0 내지 255 범위 또는 -32,768 및 32,767 범위 내의, 소정 범위의 값내에서의 서머라이징)에 효과적인 특정 애플리케이션용 연산 명령 중의 하나로서 연산 명령에서의 상한값 또는 하한값에 기초하여 절단된다. 그러므로, 연산 예외 처리 수행이 불가능하다는 문제가 있다. 그 결과, 디버그 조작원은 오버플로우 또는 언더플로우 발생 여부를 매시간 확인해야 한다. 그러므로, 디버깅에 많은 작업과 긴 시간이 필요하다.
게다가, 도 7 또는 도 8에 도시된 종래의 인터럽션 처리에서도 다음과 같은 문제가 존재한다. 예외로 인한 제어 의존성의 발생 여부에 따른 특정 애플리케이션용 연산 명령을 체크해야 하기 때문에, 각각의 특정 애플리케이션용 연산 명령 실행부에 특정 애플리케이션용 연산 명령 발행 제어 회로가 필요하다. 그 결과, 특정 애플리케이션용 연산 명령수가 증가함에 따라, 회로 스케일도 증가한다는 문제가 있다.
본 발명의 제1 목적은 프로세서 코어의 제어 유닛의 기본 설계를 바꾸는 일없이, 특정 애플리케이션용 연산 유닛을 용이하게 변경할 수 있는 정보 처리 장치를 제공하는 것이다.
본 발명의 제2 목적은 특정 애플리케이션용 연산 명령의 실행중에 발생하는 연산 예외의 예외 처리를 수행할 수 있는, 정보 처리 장치 및 특정 애플리케이션용 연산 명령에 대한 예외 처리 방법을 제공하는 것이다.
본 발명의 제3 목적은 다수의 특정 애플리케이션용 연산 명령이 있을지라도, 회로 스케일의 증가를 최소로 억제할 수 있는 정보 처리 장치 또는 회로 스케일의 증가를 억제하면서 특정 애플리케이션용 연산 명령수를 증가시킬 수 있는 정보 처리 장치를 제공하는 것이다.
본 발명의 제1 특징의 정보 처리 장치에 따르면, 기능적 명세를 규정하지 않는 연산 명령이 프로세서 코어 제어 유닛의 특정 애플리케이션용 연산 명령으로서 제공되고, 특정 애플리케이션용 연산 명령을 처리하는 특정 애플리케이션용 연산 유닛(특정 애플리케이션용 명령 연산 유닛)이 이 프로세서 코어 내에 설치된다. 이 특정 애플리케이션용 명령 연산 유닛은 플렉시블 파이프라인 구조에 대응할 수 있는 구조를 갖고, 각 응용 분야마다 개별적으로 설계된다. 특정 애플리케이션용 연산 명령에 대하여, 범용 레지스터로부터의 데이터는 통상의 명령을 위한 연산 유닛과 동일한 시스템에 있는 특정 애플리케이션용 명령 연산 유닛에 공급된다. 게다가, 이 처리 결과는 통상의 명령을 위한 연산 유닛의 레지스터와 동일한 시스템에 있는 레지스터에 기록된다.
게다가, 특정 애플리케이션용 명령 연산 유닛의 명령이 발행되어 결과를 이용할 수 있을 때까지 대기 시간(본 명세서에서는 명령 결과 대기 시간이라고 함)을 규정하는 레지스터(명령 결과 대기 시간 레지스터)가 프로세서 코어내에 설치된다. 게다가, 프로세서 코어 내에서, 레지스터(명령 발행 대기 시간 레지스터)는 특정 애플리케이션용 명령 연산 유닛의 명령을 발행하는 간격 규제에 관련된 대기 시간(본 명세서에서는, 명령 발행 대기 시간이라고 함)을 규정하기 위해 설치된다.
이상의 발명에 따르면, 기능적 명세를 규정하지 않는 연산 명령은 특정 애플리케이션용 연산 명령으로서 프로세서 코어 제어 유닛에 제공되고, 특정 애플리케이션용 명령 연산 유닛은 이 프로세서 코어 내에 설치된다. 이 특정 애플리케이션용 명령 연산 유닛은 각 응용 분야마다 개별적으로 설계된다. 그러므로, 특정 애플리케이션용 명령 연산 유닛은 각 응용 분야를 만족하도록 설계됨에 따라, 프로세서 코어의 제어 유닛의 기본 설계를 바꾸는 일없이, 특정 애플리케이션 정보 처리 장치를 저가로 용이하게 설계 가능하게 된다.
게다가, 출력 포트의 경쟁이 발생할 경우, 명령 결과 대기 시간을 규정하는 레지스터의 결과를 이용함으로써, 그 타이밍에서의 명령 발행을 금지할 수 있다. 그러므로, 연이은 명령에 의해 상이한 대기 시간의 명령간에 출력 포트의 경쟁 발생을 피할 수 있다. 더욱이, 명령 발행 대기 시간을 규정하는 레지스터를 이용함으로써, 특정 애플리케이션용 연산 명령이 발생되어 동일 명령 발행이 가능할 때까지의 사이클 수를 규정할 수 있다. 그러므로, 이전의 명령으로써 리소스의 경쟁을 막을 수 있다.
일련의 이들 제어는 동시에 발행될 수 있는 각각의 기능적 유닛의 명령에 대해 유사한 회로를 설치함으로써 복수개의 명령을 동시에 용이하게 발행 가능하도록 수행될 수 있다. 응용 분야에 따라서, 정보 처리 장치는 연산 유닛을 설치하지 않고서, 디스패치될 수 있다. 이 경우에 있어서, 명령이 발행될 수 있는지의 여부를 보여주는 플래그 레지스터를 설치함으로써 비설치 명령으로서 예외를 발생시킴으로써 그러한 문제를 용이하게 피할 수 있다.
본 발명의 또다른 특성인 정보 처리 장치와 예외 처리 방법에 따르면, 프로그램 예외 인터럽션 후 인터럽션 처리 프로그램이 시작되었을 경우, 콘텍스트는 저장되고, 그에 따라 특정 애플리케이션용 연산 명령 실행중에 발생한 연산 예외가 검출되는지의 여부에 대한 상태로 설정되어 있는지의 여부가 확인된다. 연산 예외가 검출되는 상태로 설정되어 있을 경우, 특정 애플리케이션용 연산 명령 실행중에 연산 예외가 검출되었는지의 여부가 또한 확인된다. 연산 예외가 이미 검출되었다면, 특정 애플리케이션용 연산 예외 처리가 수행되고, 스텝 중지 처리, 소프트웨어 중지 처리 또는 명령 중지 처리가 수행된다.
이어서, 콘텍스트는 복원되고, 인터럽션으로부터 처리가 복구되며, 중지 처리가 종료된다. 스텝 중지의 경우, 특정 애플리케이션용 연산 명령 실행중에 발생하는 연산 예외가 검출되는 상태로 설정되어 있다면, 단지 처리 중지가 특정 애플리케이션용 연산 명령일 경우에만, 특정 애플리케이션용 연산 명령 실행중에 연산 예외가 검출되었는지의 여부가 확인될 수 있다.
이상의 발명에 따르면, 특정 애플리케이션용 연산 명령을 갖는 정보 처리 장치에 있어서, 스텝 중지, 소프트웨어 중지 또는 명령 중지가 발생될 경우, 특정 애플리케이션용 연산 명령으로 인한 오버플로우 같은 연산 예외 발생이 검출 가능하여, 예외 처리 수행이 가능하다.
본 발명의 제3 특성의 정보 처리 장치에 따르면, 이 장치는 연산 예외 검출 플래그 및 플래그 제어 유닛을 포함한다. 연산 예외가 특정 애플리케이션용 연산 명령 실행중에 검출되는 경우에, 특정 애플리케이션용 연산 명령 실행 유닛은 연산 예외 검출 플래그를 유효 상태로 설정할 수 있다. 연산 예외 검출 플래그가 인터럽션을 발생시키는 트랩 명령 실행중에 유효 상태로 설정되었다면, 플래그 제어 유닛은 특정 애플리케이션용 연산 명령의 연산 예외로 인한 인터럽션 발생을 제어 유닛에 통보한다.
전술한 발명에 따르면, 특정 애플리케이션용 연산 명령 실행중에 특정 애플리케이션용 연산 명령 실행 유닛이 연산 예외를 검출하는 경우, 연산 예외 검출 플래그는 유효 상태로 설정된다. 특정 애플리케이션용 연산 명령의 연산 예외가 존재하는지의 여부 확인이 필요할 경우, 트랩 명령이 발행된다. 이 경우, 연산 예외 검출 플래그가 유효 상태로 설정되어 있다면, 플래그 제어 유닛은 인터럽션 발생을 인터럽션 제어 유닛에 통보한다. 그러므로, 인터럽션이 발생된다.
전술한 발명에 있어서, 정보 처리 장치는 연산 예외 검출 플래그, 조건 코드 레지스터 및 플래그 제어 유닛을 갖는 구조를 갖는다. 이 구조에서, 플래그 제어 유닛은 연산 예외 검출 플래그에 의해 홀드된 값에 기초하여, 조건 코드 레지스터를 설정한다. 조건 코드 레지스터에 홀드된 값과 명령 필드가 나타내는 값에 기초하여, 분기/인터럽션 복귀 명령 제어 유닛은 인터럽션을 발생시키는 트랩 명령 실행중에 인터럽션의 발생 여부를 결정한다.
전술한 발명에 따르면, 특정 애플리케이션용 연산 명령 실행중에 특정 애플리케이션용 연산 명령 실행 유닛이 연산 예외를 검출할 경우, 연산 예외 검출 플래그는 유효 상태로 설정된다. 조건 코드 레지스터는 연산 예외 검출 플래그의 값에 기초하여 플래그 제어 유닛에 의해 설정된다. 특정 애플리케이션용 연산 명령의 연산 명령이 존재하는지의 유무 확인이 필요할 경우, 트랩 명령이 발행된다. 이 경우, 조건 코드 레지스터 값과 명령 필드 값에 기초하여, 분기/인터럽션 복귀 명령 제어 유닛은 인터럽션을 발생시키는 트랩 명령 실행중에 인터럽션의 발생 여부를 결정한다. 인터럽션이 발생하면, 분기/인터럽션 복귀 명령 제어 유닛은 인터럽션 발생을 인터럽션 제어 유닛에게 통보한다. 이에, 인터럽션이 발생된다.
본 발명의 기타 목적 및 특징은 첨부 도면을 참조하여 이어지는 설명에서 명백해 질 것이다.
본 발명의 양호한 실시예는 도 9 내지 도 30을 참조하여 이하에서 상세하게 설명된다.
도 9는 본 발명의 제1 실시예의 프로세서 코어 구조의 일례를 도시하는 블록도이다. 이 프로세서 코어는 메모리부(1061), 명령 페치 제어부(1062), 명령 버퍼부(1063), 명령 디코드부(1064), 명령 발행 제어부(1065), 스코어 보드부(1066), 명령 실행 제어부(1067), 로드/저장 유닛(1068), 실행부(1069), 분기 유닛(1070), 범용 레지스터부(1071), 명령 결과 대기 시간 레지스터(1072), 특정 애플리케이션용 명령 연산 유닛(1073) 및 연산 유닛 출력 선택기(1074)을 포함한다.
메모리부(1061)는 외부 메모리 및 칩 내부에 설치된 메모리를 포함한다. 메모리부(1061)는 또한 메모리 액세스용 버스와 그 제어 회로 및 캐시 회로를 포함한다.
명령 페치 제어부(1062)는 분기 유닛(1070)으로부터 분기 어드레스, 또는 명령 페치 제어부 내에 홀드된 페치 PC 어드레스에 기초하여, 다음에 페치될 명령 어드레스를 결정한다. 명령 페치 제어부(1062)는 다음에 페치될 명령 어드레스를 메모리부(1061)에 공급하고, 메모리로부터 명령을 수신하며, 다음에 실행될 명령을 명령 버퍼부(1063)에 공급한다.
명령 버퍼부(1063)는 명령 페치 제어와 동시에 동작하는 파이프라인 레지스터이고, 명령 발행 전에, 일시적으로 명령을 홀드한다. 명령 디코드부(1064)는 명령 버퍼부(1063)에 홀드된 명령을 디코드하는 회로이며, 연산 유닛 및 연산 유닛 제어부에 필요한 정보를 통보한다. 이 정보는 연산 코드, 소스 레지스터 번호, 목적지 레지스터 번호 및 정보의 이러한 피스들이 유효한지의 여부를 나타내는 정보를 포함한다. 특정 애플리케이션용 연산 명령의 연산 코드는 연산 디코드부(1064)에서 정의된다. 특정 애플리케이션용 연산 명령의 연산 코드는 통상의 명령에 대한 동일 루트를 통해 각 블록에 통보된다.
명령 발행 제어부(1065)는 연산 코드, 소스 레지스터 번호, 목적지 레지스터 번호 및 정보의 이러한 유효 플래그를 명령 디코드부(1064)로부터 수신한다. 명령 발행 제어부(1065)는 또한 현재 이용되는 레지스터 번호 및 스코어 보드부(1066)로부터 리소스 정보를 수신한다. 명령 발행 제어부(1065)는 명령 실행 제어부(1067)로부터 출력 포트 경쟁 제어 정보를 수신하여, 명령 버퍼부(1063)에 저장된 명령이 발행될 수 있는지의 여부를 결정한다.
상기 명령이 발행될 수 있다면, 명령 발행 제어부(1065)는 소스 레지스터를 판독하기 위한 소스 레지스터 번호를 레지스터 번호(1071)에 공급하고, 발행된 명령의 목적지 레지스터의 사용 플래그의 설정 및 사용될 연산 유닛 리소스의 설정을 스코어 보드부(1066)에 지정한다. 동시에, 명령 발행 제어부(1065)는 명령 디코드부(1064)의 명령이 해제될 수 있다는 것을 기능 유닛(1068, 1069, 1073, 1070) 및 명령 실행 제어부(1067)에게 통보한다. 게다가, 명령 발행 제어부(1065)는 명령 버퍼부(1063)에 저장된 명령의 PC 값을 명령 페치 제어부(1062)로부터 수신하여, 이 PC 값을 분기 유닛(1070)으로 공급한다.
스코어 보드부(1066)는 범용 레지스터부(1071)의 각 레지스터 번호가 사용중인지의 여부를 나타내는 플래그와, 하나 이상의 사이클을 차지하는데 필요한 리소스가 사용되고 있는지의 여부를 나타내는 플래그를 홀드한다. 스코어 보드부(1066)는 명령 발행 제어부(1065)로부터 플래그 설정 요청 및 명령 실행 제어부(1067)로부터의 플래그 클리어 요청에 응답하여, 플래그 설정 또는 클리어를 수행하는 회로를 구비한다. 플래그의 결과는 명령 발행 제어부(1065)에 통보되고, 이것은 명령 발행 제어 정보로서 사용된다.
스코어 보드부(1066)에는 2 개 이상의 명령 발행 대기 시간이 존재할 경우, 리소스 경쟁으로부터 연속적 특정 애플리케이션용 연산 명령을 피하기 위해 플래그를 사용하는 특정 애플리케이션용 명령 연산 유닛이 설치된다. 이이서, 통상의 명령의 연산 유닛을 차지하는 명령과 동일한 방법으로, 스코어 보드(1066)는 또한 명령 발행 제어부(1065)로부터 플래그 설정 요청을 수신하고, 명령 실행 제어부(1067)로부터 플래그 클리어 요청을 수신한다.
명령 실행 제어부(1067)는 명령 디코드부(1064)로부터 연산 코드 및 목적지 레지스터 번호를 수신한다. 게다가, 명령 실행 제어부(1067)는 명령 발행 제어부(1065)로부터 명령 발행 플래그를 수신하고, 실행부(1069)에 의한 명령 실행에 동기하여 명령의 유효 플래그 및 목적지 레지스터 번호를 홀드한다. 명령 실행 제어부(1067)는 리소스를 차지하는 명령에 대한 출력이 가능해질 때까지 카운트하는 카운터를 구비하고, 개별 명령의 유효 플래그 및 목적지 레지스터 번호를 홀드한다.
이러한 명령의 유효 플래그에 기초하여, 명령 실행 제어부(1067)는 연속적 명령 발행에 의한 출력 포트의 경쟁을 제어하기 위한 경쟁 제어 신호를 발생시키고, 그것을 명령 발행 제어부(1065)에 통보한다. 명령 실행 제어부(1067)는 실행부(1069)가 결과를 출력하는 타이밍에, 목적지 레지스터 번호 및 레지스터 사용 플래그를 클리어하기 위한 요청을 스코어 보드부(1066)에 출력한다. 명령 발행 제어부(1067)는 또한 목적지 레지스터 번호 및 기록 요청 신호를 레지스터부(1071)에 출력한다. 명령 발행 제어부(1067)는 동일한 연산 유닛을 차지하는 연속적 명령이 그 연산 유닛을 사용할 수 있는 타이밍에서, 리소스 사용 플래그를 클리어하기 위한 클리어 요청 신호를 출력한다.
로드/저장 유닛(1068)은 명령 디코드부(1064)로부터 연산 코드, 목적지 레지스터 번호 및 유효 플래그를 수신한다. 로드/저장 유닛(1068)은 범용 레지스터부(1071)로부터 저장 데이터 및 소스 데이터를 수신한다. 로드/저장 유닛(1068)은 또한 명령 발행 제어부(1065)로부터 명령 해제 정보를 수신한다.
로드/저장 유닛(1068)은 어드레스 및 연산 코드를 메모리부(1061)에 공급하고, 동시에 저장 데이터를 메모리부(1061)에 공급한다. 로드/저장 유닛(1068)은 또한 메모리부(1061)로부터 로드 데이터를 수신한다. 로드가 성공적일 경우, 로드/저장 유닛(1068)은 목적지 레지스터 번호를 사용하여 플래그 클리어 요청을 스코어 보드부(1066)에 출력한다. 로드 데이터는 로드 목적지 레지스터 번호 및 기록 요청 신호와 함께 범용 레지스터부(1071)에 통보되고, 이들은 범용 레지스터부(1071)에 기록된다.
실행부(1069)는 연산 디코드부(1064)로부터 연산 코드를 수신한다. 또한, 실행부(1069)는 범용 레지스터부(1071)로부터 소스 데이터를 수신한다. 실행부(1069)는 또한 명령 발행 제어부(1065)로부터 명령 해제 정보를 수신한다. 실행부(1069)는 연산 코드에 따라 연산 유닛을 사용한다. 연산 결과는 고정된 수의 사이클 후에 출력된다. 연산 결과는 명령 실행 제어부(1067)에서의 목적지 레지스터 번호 출력에 동기하여 레지스터부(1071)로 기록된다.
분기 유닛(1070)은 명령 디코드부(1064)로부터 연산 코드를 수신하다. 또한, 분기 유닛(1070)은 범용 레지스터부(1071)로부터 소스 데이터를 수신한다. 분기 유닛(1070)은 또한 명령 발행 제어부(1065)로부터 PC 해제 정보 및 명령을 수신한다. 분기 유닛(1070)은 분기 명령을 처리하고, 그 분기에 이어 분기 유효 플래그 및 PC를 명령 페치 제어부(1062)에 통보한다.
범용 레지스터부(1071)는 명령 발행 제어부(1065)로부터 소스 레지스터 번호를 수신하고, 소스 데이터를 각각의 기능 유닛(1068, 1069, 1073, 1070)에 각각 송신한다. 범용 레지스터부(1071)는 로드시에 목적지 레지스터 번호 및 로드 데이터를 수신하고, 이들을 레지스터에 기록한다. 범용 레지스터부(1071)는 또한 명령 발행 제어부(1067)로부터 목적지 레지스터 번호를 수신하고, 실행부(1069)의 출력 결과를 기록한다.
명령 결과 대기 시간 레지스터(1072)는 특정 애플리케이션용 연산 명령이 실행되어 결과를 얻을 때까지의 사이클 수를 규정하는 재기록 가능한 특정 애플리케이션 레지스터이다. 명령 결과 대기 시간 레지스터(1072)의 출력은 명령 발행 제어부(1067)에 의해 수신된다. 명령 결과 대기 시간 레지스터(1072)의 결과는 특정 애플리케이션용 연산 명령의 실행 완료 타이밍과, 이 실행의 결과를 레지스터에 기록하는 기록 제어를 위해, 또 스코어 보드부(1066) 및 명령 발행 제어부(1065)에 의한 레지스터에 의존하는 연속 명령을 발행하는 발행 제어를 위해 사용된다.
특정 애플리케이션용 명령 연산 유닛(1073)은 특정 애플리케이션를 위한 연산 유닛이고, 이 연산 유닛의 명세는 각 응용 분야마다 다르다. 게다가, 특정 애플리케이션용 명령 연산 유닛(1073)의 파이프라인 구조는 각 연산 유닛마다 다르다. 그러나, 필요한 조건에 따라, 출력을 생성하는 파이프라인 사이클은 각각의 종류의 연산 유닛에 고정되어야 하고, 결과 출력 사이클이 다른 연산 유닛의 출력 지연 특성과 매칭되어야 하는 강제가 있다.
연산 유닛 출력 선택기(1074)는 통상의 연산을 수행하는 연산 유닛으로서의 실행부(1069)의 출력과 특정 애플리케이션용 명령 연산 유닛(1073)의 출력 사이에서 전환 가능한 선택기이다. 이 전환은 명령 실행 제어부(1167)의 출력에 따라 수행된다.
도 10은 본 발명의 프로세서 코어의 구조에 대한 또다른 예를 도시하는 블록도이다. 도 10에 도시된 프로세서 코어에는 도 9의 구조 외에, 명령 발행 대기 시간 레지스터(1075)가 추가 설치된다.
명령 발행 대기 시간 레지스터(1075)는 연산 유닛 리소스를 차지하는 유형의 특정 애플리케이션용 연산 명령에 대하여 연속의 동일한 특정 애플리케이션용 연산 명령을 발행할 수 있을 때까지의 사이클 수를 규정하는 레지스터이다. 명령 발행 대기 시간 레지스터(1075)는 재기록 가능한 구조를 갖는다.
명령 발행 대기 시간 레지스터(1075) 대신에, 결과를 얻을 때까지 리소스를 차지하기 위해 하나의 명령 발행 대기 시간이 존재하는 경우(즉, 특정 애플리케이션용 연산 명령이 각 사이클에 발행될 수 있는 경우)와 명령 발행 대기 시간이 명령 결과 대기 시간 값과 동일할 경우 사이를 전환하도록 하기 위한 플래그가 공급될 수 있다.
상기 구조에 기초하여, 연속의 동일한 명령이 발행될 때까지 사이클 수가 하나일 경우와, 명령 발행 대기 시간이 결과를 사용할 수 있게 될 때까지의 명령 결과 대기 시간의 값과 동일할 경우를 전환하도록 전환 제어를 실현할 수 있다. 명령 발행 대기 시간 레지스터(1075) 대신에 명령 발행 대기 시간 레지스터(1075)와 그 플래그를 사용하지 않는 경우, 이들 제어법중 하나가 선택되었다고 간주될 수 있다.
도 11은 특정 애플리케이션용 연산 명령이 파이프라인에 동기하여 각각의 사이클에 발행될 수 있는 경우의 명령 실행 제어부(1067)의 구조와 동작을 설명하는 도면이다. 도 11은 동시에 발행될 수 있는 복수개의 명령 가운데 하나의 명령의 연산에 특정화된 부분을 추출하여 도시한다(이 설명은 또한 도 12에 대해 동일하다). 도 11은 2 개의 파이프라인단을 구비하는 통상의 연산 명령 그룹(A)과 4 개의 파이프라인 단을 구비하는 통상의 연산 명령 그룹(B) 및 4 개의 파이프라인 단을 구비하는 특정 애플리케이션용 연산 명령 그룹(MC)의 결과를 기록하는 제어 및 스코어 보드의 클리어 제어에 관련된 특징적 부분을 도시한다. 본 발명은 상술한 파이프라인 단수를 제한하지 않는다.
명령 실행 제어부(1067)에는 2 개의 디코더(1081, 1082), 명령 그룹(A)에 관련된 파이프라인 레지스터의 유효 플래그(유효 A1, A2)(1083, 1084), 명령 그룹(B)에 관련된 파이프라인 레지스터의 유효 플래그(유효 B1 내지 B4)(1085, 1086, 1087, 1088), 명령 그룹(MC)에 관련된 파이프라인 레지스터의 유효 플래그(유효 MC1 내지 MC4)(1089, 1090, 1091, 1092), 제1 내지 제4 파이프라인단(1093, 1094, 1095, 1096), 13 개의 AND 회로(1097 내지 1109) 및 5 개의 OR 회로(1110 내지 1114)가 장착된다.
명령 실행 제어부(1067)는 명령 디코드부(1064)로부터의 연산 코드, 그 유효 플래그 및 목적지 레지스터 번호를 수신한다. 게다가, 명령 실행 제어부(1067)는 명령 결과 대기 시간 레지스터(1072)로부터 명령 결과 대기 시간을 수신하다.
제1 디코더(1081)는 연산 코드와 그 유효 플래그를 수신한다. AND 회로(1098, 1098, 1099) 각각은 제1 디코더(1081)로부터의 유효 플래그와 해제 플래그 출력간의 AND 로직을 계산한다. 유효 A1, B1 및 MC1의 유효 플래그(1083, 1085, 1089) 각각은 AND 회로(1097, 1098, 1099)로부터의 출력값을 저장한다. 또한, 제1 파이프라인단(1093)은 목적지 레지스터 번호를 저장한다. 이러한 정보의 피스들은 1 사이클 당 매 한 단씩 다음 파이프라인 레지스터로 처리된다.
제2 디코더(1082)는 명령 결과 대기 시간을 수신한다. AND 회로(1100)는 제2 디코더(1082)의 출력값과 유효 MC4의 유효 플래그(1092)간의 AND 로직을 계산한다. AND 회로(1101)는 제2 디코더(1082)의 출력값과 유효 MC3의 유효 플래그(1091)간의 AND 로직을 계산한다. AND 회로(1102)는 제2 디코더(1082)의 출력값과 유효 MC2의 유효 플래그(1090)간의 AND 로직을 계산한다. AND 회로(1103)는 제2 디코더(1082)의 출력값과 유효 MC1의 유효 플래그(1089)간의 AND 로직을 계산한다.
OR 회로(1112)는 AND 회로(1110, 1101, 1102, 1103)의 출력들간의 OR 로직을 계산하여, 제어 신호(출력 선택 신호)를 연산 유닛 출력 선택기(1074)에 출력한다. OR 회로(1113)는 유효 A2의 유효 플래그(1084), 유효 B4의 유효 플래그(1088)의 유효 플래그 및 유효 플래그(1088)의 출력 선택 신호들간의 OR 로직을 계산한다. OR 회로(1113)는 스코어 보드(1066)에 스코어 보드 클리어 요청을 출력하고, 레지스터부(1071)에 기록 요청 신호를 출력한다.
AND 회로(1104)는 제2 디코더(1082)의 출력 값과 유효 MC4의 유효 플래그(1092)간의 AND 로직을 계산한다. OR 회로(1110)는 AND 회로(1104)의 출력과 유효 B4의 유효 플래그(1088)간의 OR 로직을 계산한다. AND 회로(1105)는 OR 회로(1110)의 출력과 제4 파이프라인단(1096)간의 AND 로직을 계산한다. AND 회로(1105)는 OR 회로(1110)의 출력과 제4 파이프라이단(1096) 간의 AND 로직을 계산한다. AND 회로(1106)는 제2 디코더(1082)의 출력값과 유효 MC3의 유효 플래그(1091) 및 제3 파이프라인단(1095) 간의 AND 로직을 계산한다.
AND 회로(1107)는 제2 디코더(1082)의 출력과 유효 MC2의 유효 플래그(1090)간의 AND 로직을 계산한다. OR 회로(1111)는 AND 회로(1107)의 출력과 유효 A2의 유효 플래그(1084)간의 OR 로직을 계산한다. AND 회로(1108)는 OR 회로(1111)의 출력과 제2 파이프라인단(1094)간의 AND 로직을 계산한다. AND 회로(1109)는 제2 디코더(1082)의 출력과 유효 MC1의 유효 플래그(1089) 및 제1 파이프라인단(1093)간의 AND 로직을 계산한다. OR 회로(1114)는 AND 회로(1105, 1106, 1108, 1109)의 출력들 간의 OR 로직을 계산하여, 목적지 레지스터 번호를 스코어 보드부(1066) 및 레지스터부(1071)에 출력한다.
상술한 구조에 기초하여, 파이프라인 레지스터의 목적지 레지스터 번호와 명령 결과 대기 시간 레지스터(1072)로부터 유효 플래그를 선택할 수 있다. 이어서, 종래의 방법과 유사한 방식으로, 동시에 출력 포트를 사용하는 타이밍이 명령 결과 대기 시간 레지스터(1072)의 유효 플래그로부터 선택되고, 각 명령 그룹의 발행을 억제하는 제어 신호가 명령 발행 제어부(1065)에 통보된다. 그러므로, 출력 포트의 경쟁이 특정 애플리케이션용 연산 명령으로써 억제 가능하게 된다.
도 12는 리소스를 차지하는 명령 실행 제어부(1067)의 구조와 동작을 설명하는 도면이다. 도 12는 2 개의 파이프라인단을 구비하는 명령 그룹(A)과 4 개의 파이프라인단을 구비하는 명령 그룹(B)의 결과를 기록하기 위한 제어 및 스코어 보드의 클리어 제어와 관련된 특징적인 부분을 도시한다. 본 발명은 상술한 파이프라인단 수를 제한하지 않는다.
이 명령 실행 제어부(1067)에는 디코더(1081), 유효 A1, A2의 유효 플래그(1083, 1084), 유효 B1 내지 B4 각각의 유효 플래그(1085, 1086, 1087, 1088), 제1 내지 제4 파이프라인단(1093, 1094, 1095, 1096), 가산기(1141), 2 개의 선택기(1142, 1143), 카운터(1144), 비교기(1145), 유효 n의 유효 플래그(1148), 제n 파이프라인단(1149), 8 개의 AND 회로(1097, 1098, 1136, 1137, 1150, 1151, 1152, 1155) 및 4 개의 OR 회로(1135, 1138, 1156, 1157)가 장착된다.
디코더(1081)는 연산 코드와 그 유효 플래그를 수신한다. AND 회로(1097, 1098, 1050) 각각은 디코더(1081)로부터의 유효 플래그 출력과 해제 플래그간의 AND 로직을 계산한다. 유효 A1 및 B1의 유효 플래그(1083, 1085) 각각은 AND 회로(1097, 1098)의 출력값을 출력한다. 게다가, 제1 파이프라인단(1093)은 목적지 레지스터 번호를 저장한다. 이들 정보의 피스들은 1 사이클 당 매 한 단씩 다음 파이프라인 레지스터로 처리된다.
카운터(1144)는 가산기(141)에 의해 1 씩 증분되는 자신의 출력값을 저장한다. 비교기(1145)는 카운터(1144)의 출력과 명령 발행 대기 시간 레지스터(1075)에 저장된 값을 비교한다. 비교기(1145)의 수행 결과는 AND 회로(1151)의 로 활성 입력 단자의 입력이 된다.
AND 회로(1151)의 출력은 OR 회로(1156, 1157)의 입력이 된다. OR 회로(1156)는 AND 회로(1150, 1151)의 출력들간의 OR 로직을 계산하고, 제1 선택기(1142)에 그 결과를 출력한다. 제1 선택기(1142)는 그 수신된 값에 기초하여 카운터(1144)를 리셋한다. OR 회로(1157)는 AND 회로(1150, 1151)의 출력들간의 OR 로직을 계산하고, 유효 n의 유효 플래그(1148)에 결과를 기록한다. 유효 n의 유효 플래그(1148)의 출력은 AND 회로(1152)에 입력되고, 또한 AND 회로(1151)의 타입력 단자로 입력된다.
비교기(1145)에 의한 비교 결과는 AND 회로(1152)의 타입력 단자로 입력된다. AND 회로(1152)의 출력은 OR 회로(1135)에 입력된다. OR 회로(1135)는 각 명령 그룹의 유효 플래그와 AND 회로(1152)의 출력간의 OR 로직을 계산한다. OR 회로(1135)는 스코어 보드부(1066)에 스코어 보드 클리어 요청 신호를 출력하고 레지스터부(1071)에 기록 요청 신호를 출력한다.
제2 비교기(1143)는 제n 파이프라인단(1149)에 저장된 목적지 레지스터 번호 또는 명령 디코드부(1064)로부터 수신된 목적지 레지스터 번호 가운데 하나를 선택한다. 이 선택은 AND 회로(1150)의 출력에 따라 수행되고, 선택된 번호는 제n 파이프라인단(1149)에 저장된다. AND 회로(1155)는 제n 파이프라인단(1149)에 저장된 목적지 레지스터 번호와 AND 회로(1152) 출력간의 AND 로직을 계산한다.
AND 회로(1136)는 제2 파이프라인단(1094)에 저장된 목적지 레지스터 번호와 유효 A2의 유효 플래그(1084)간의 AND 로직을 계산한다. AND 회로(1137)는 제4 파이프라인단(1096)에 저장된 목적지 레지스터 번호와 유효 B4의 유효 플래그(1088)간의 AND 로직을 계산한다. OR 회로(1138)는 AND 회로(1155, 1136, 1137)의 출력들간의 OR 로직을 계산하여, 스코어 보드부(1066) 및 레지스터부(1071) 각각에 목적지 레지스터 번호를 출력한다.
상술한 구조에 기초하여, 카운터(1144)는 사이클 수가 명령 발행 대기 시간 레지스터(1075)에 저장된 값이 될 때까지 명령의 유효 플래그와 목적지 레지스터 번호를 홀드한다. 카운터(1144) 값이 명령 발행 대기 시간 레지스터(1075)에 저장된 사이클 수에 도달할 경우, 통상의 명령과 유사한 제어가 수행된다.
명령 실행 제어부(1067)는 명령 발행 억제 신호(저지 A, 저지 B)를 명령 발행 제어부(1065)에 출력하는 구조를 갖는다. 그러나, 도 12에서는 명령 발행 억제 신호(저지 A, 저지 B)를 출력하는 신호가 도시 생략되어 있다.
싱술한 제1 실시예에 따르면, 기능적 명세를 규정하지 않는 연산 명령이 프로세서 코어 제어부에 특정 애플리케이션용 연산 명령으로서 제공되고, 특정 애플리케이션용 연산 명령을 처리하는 특정 애플리케이션용 명령 연산 유닛(1073)이 이 프로세서 코어 내에 설치되어 있다. 이 특정 애플리케이션용 명령 연산 유닛(1073)은 각 응용 분야마다 개별적으로 설계된다. 그러므로, 각 응용 분야에 적합한 특정 애플리케이션용 명령 연산 유닛(1073)을 설계함에 따라, 프로세서 코어의 제어부에 대한 기본 설계를 바꾸지 않고서, 특정 애플리케이션 정보 처리 장치를 저가로 용이하게 설계 가능하게 된다.
게다가, 제1 실시예에 따르면, 명령 결과 대기 시간 레지스터(1072)를 이용함으로써, 출력 포트에 경쟁이 발생할 타이밍에서의 명령 발행을 금지할 수 있다. 그 결과, 연속 명령으로써 상이한 대기 시간의 명령간의 출력 포트 경쟁 발생을 피할 수 있다. 더욱이, 명령 발행 대기 시간 레지스터(1075)를 이용하여, 특정 애플리케이션용 연산 명령이 발생되어 동일한 명령이 발행 가능하게 될 때까지의 사이클 수를 규정할 수 있다. 그 결과, 이전의 명령으로써 리소스의 경쟁을 막을 수 있다.
상술한 제1 실시예에서, 파이프라인단 수는 2 개 또는 4 개로 제한되지 않는다.
도 13의 블록도는 본 발명의 제2 실시예에 관한 특정 애플리케이션용 연산 명령의 예외 처리 방법이 채용된 정보 처리 장치의 구조를 도시한다. 이 정보 처리 장치에는 메모리(210)와, 메모리(210)로부터 명령어를 판독하는 명령 판독부(220)와, 명령 판독부(220)로부터 공급된 명령을 실행하는 명령 실행부(230) 및 인터럽션 제어부(250)가 장착된다. 정보 처리 장치에는 또한 명령 판독부(220), 명령 실행부(230) 및 명령 제어부(250)에서의 기록을 제어하는 레지스터 제어부(260)가 장착된다.
메모리(210)는 외부 메모리와, 칩 내부에 존재하는 메모리 회로, 메모리 액세스와 그 제어 신호용 버스 및 캐시 회로를 포함한다. 명령 판독부(220)에는 명령 판독 제어부(221), 프로그램 카운터(222), 명령어 레지스터(223) 및 명령 중지 검출부(224)가 장착된다.
명령 판독 실행부(230)에는 명령 디코드부(231), 로드 명령 실행부(232), 저장 명령 실행부(233), 연산 명령 실행부(234), 기타 명령 실행부(235), 부동 소수점 로드 명령 실행부(236), 부동 소수점 저장 명령 실행부(237), 부동 소수점 연산 명령 실행부(238), 특정 애플리케이션용 연산 명령 실행부(239) 및 특정 애플리케이션용 연산 상태 판독/기록 명령 실행부(241)가 장착된다.
인터럽션 제어부(250)는 통상의 인터럽션 제어부(251)를 포함한다. 레지스터제어부(260)에는 COND(261), 인터럽션으로부터 복귀하기 위한 명령 어드레스를 홀드하는 레지스터(262)(본 명세서에서는 "복귀 명령 어드레스"라고 함), 프로세서의 동작 상태를 홀드하는 레지스터(본 명세서에는 "연산 레지스터"라고 함)(263), 인터럽션 발생전 프로세서의 동작 상태를 홀드하는 레지스터(본 명세서에서는 "인터럽션 발생전 연산 레지스터"라고 함)(264), 범용 레지스터(265), 부동 소수점 레지스터(266), 특정 애플리케이션용 연산 상태 레지스터(267) 및 연산 모드 레지스터(268)가 장착된다.
명령 판독부(220)는 다음에 상세하게 설명된다. 프로그램 카운터(222)는 판독될 명령어의 어드레스이다. 명령 판독 제어부(221)는 메모리(210)로부터 프로그램 카운터(222)의 값에 해당하는 명령어를 판독하고, 이 명령어를 명령어 레지스터(223)에 기록한다. 분기 목적지 어드레스가 명령 실행부(230)로부터 공급되는 경우나 또는 발생된 인터럽션 또는 예외에 해당하는 분기 목적지 어드레스가 인터럽션 제어부(250)로부터 공급되는 경우, 명령 판독 제어부(221)는 분기 목적지 어드레스를 프로그램 카운터(222)에 기록한다. 즉, 판독 제어부(221)는 다음 명령어를 나타내기 위해 프로그램 카운터(222)를 증분시킨다.
명령어 판독시, 명령 판독 제어부(221)가 인터럽션을 검출하는 경우, 명령 판독 제어부(221)는 인터럽션 검출을 인터럽션 제어부(250)에 통보한다. 명령어 레지스터(223)는 명령 판독 제어부(221)가 판독한 명령어를 홀드하고, 이 명령어를 명령 실행부(230)에 공급한다
명령 중지 검출부(224)는 명령어 판독용 어드레스가 명령 중지로서 확립되는지의 여부를 검출한다. 명령 중지가 검출되면, 명령 중지 검출부(224)는 명령 중지 검출을 인터럽션 제어부(250)에 통보한다. 도 14는 명령 중지 검출부(224)의 일례를 도시하는 블록도이다. 명령 중지 검출부(224)는 복수개의 명령 중지점 레지스터(225a 내지 225d) 세트와, 디코드 유닛(226a 내지 226d) 및 OR 회로(227)를 포함한다.
각각의 명령 중지점 레지스터(225a 내지 225d)에는 ADDR 필드(228a), E 필드(228d) 및 V 필드(228c)가 설치된다. ADDR 필드(228a)는 중지점의 어드레스를 홀드한다. E 필드(228d)는 명령 중지점의 유효 여부를 나타내는 값을 홀드한다. 예컨대, 명령 중지 연산이 무효일 때 E 필드(228d)는 "0(제로)"을 홀드하고, 명령 중지 연산이 유효일 경우 "1"을 홀드하다. V 필드(228c)는 명령 중지 검출 여부를 나타내는 값을 홀드한다. 예컨대, 명령 중지가 검출되지 않았을 때에 V 필드(228c)는 "0(제로)"를 홀드하고 명령 중지가 검출되었을 때에는 "1"을 홀드한다.
디코드 유닛(226a 내지 226d)은 명령 중지 상태가 확립되었는지의 여부를 디코드한다. 판독될 인터럽션의 명령 어드레스가 각각의 명령 중지점 레지스터(225a 내지 225d)의 ADDR 필드(228a) 값과 일치할 경우, 디코드 유닛(226a 내지 226d) 중 해당하는 것은 해당 V 필드(228c) 값을 "1"로 설정하고, 일치 신호로서 OR 회로(227)에 "1"을 출력한다. 그리고, OR 회로(227)는 인터럽션 통보를 인터럽션 제어부(250)에 발행하여 명령 중지가 확립되었음을 통보한다.
명령 실행부(230)에 대하여 이하에 상세하게 설명한다. 명령 디코드부(231)는 명령 판독부(200)로부터 공급된 명령을 분석하고, 해당 명령 실행부에 이 명령을 공급한다. 즉, 명령 디코드부(231)는 로드 명령 실행부(232)에 로드 명령을 공급하며, 스코어 명령 실행부(233)에 스코어 명령을 공급하고, 연산 실행부(234)에 연산 명령 및 비교 명령을 공급한다.
명령 디코드부(231)은 분기 명령, 조건적 분기 명령, 인터럽션 복귀 명령, 중지점 명령, 연산 레지스터(263)를 판독 또는 기록하기 위한 판독 또는 기록 명령, 인터럽션 발생전 연산 레지스터(264)를 판독 또는 기록하기 위한 판독 또는 기록 명령, 인터럽션 중지 검출부(224)의 인터럽션 중지점 레지스터(225a 내지 225d)를 판독 또는 기록하기 위한 판독 또는 기록 명령을 기타 명령 실행부(235)에 공급한다.
명령 디코드부(231)은 부동 소수점 로드 명령을 부동 소수점 로드 명령 실행부(236)에 공급하고, 부동 소수점 저장 명령을 부동 소수점 저장 명령 실행부(237)에 공급하며, 부동 소수점 연산 명령 및 부동 소수점 비교 명령을 부동 소수점 연산 명령 실행부(238)에 공급하고, 특정 애플리케이션용 연산 명령을 특정 애플리케이션용 연산 명령 실행부(*)에 각각 공급한다. 게다가, 명령 디코드부(231)는 특정 애플리케이션용 연산 상태 레지스터(267)를 판독 또는 기록하기 위한 판독 또는 기록 명령을 특정 애플리케이션용 연산 상태 판독/기록 실행부(240)에 공급하고, 연산 모드 레지스터(268)를 판독 또는 기록하기 위한 판독 또는 기록 명령을 연산 모드 판독/기록 명령 실행부(241)에 각각 공급한다.
특정 애플리케이션용 연산 상태 판독/기록 실행부(240)는 명령 디코드부(231)로부터 특정 애플리케이션용 연산 상태 레지스터(267) 판독용 판독 명령을 수신할 경우, 특정 애플리케이션용 연산 상태 레지스터(267)를 판독하고, 그 판독 결과를 범용 레지스터(265)에 기록한다. 특정 애플리케이션용 연산 상태 판독/기록 실행부(240)는 명령 디코드부(231)로부터 특정 애플리케이션용 연산 상태 레지스터(267)를 기록하기 위한 기록 명령을 수신할 경우, 범용 레지스터(265)를 판독하고, 그 판독 결과를 특정 애플리케이션용 연산 상태 레지스터(267)에 기록한다.
게다가, 특정 애플리케이션용 연산 상태 판독/기록 실행부(240)는 명령 실행중에 인터럽션을 검출할 경우, 인터럽션 검출을 인터럽션 제어부(250)에 통보한다. 인터럽션 실행 후의 모드가 단일 스텝 모드일 경우, 특정 애플리케이션용 연산 상태 판독/기록 실행부(240)는 스텝 중지 검출을 인터럽션 제어부(250)에 통보한다.
연산 모드 판독/기록 명령 실행부(241)는 명령 디코드부(231)로부터 연산 모드 레지스터(268)를 판독하기 위한 판독 명령을 수신하는 경우, 연산 모드 레지스터(268)를 판독하고, 그 판독 결과를 범용 레지스터(265)에 기록한다. 연산 모드 판독/기록 명령 실행부(241)는 명령 디코드부(231)로부터 연산 모드 레지스터(268)를 기록하기 위한 기록 명령을 수신하는 경우, 범용 레지스터(265)를 판독하고, 그 판독 결과를 연산 모드 레지스터(268)에 기록한다.
또한, 연산 모드 판독/기록 명령 실행부(241)는 명령 실행중에 인터럽션을 검출할 경우, 인터럽션 검출을 인터럽션 제어부(250)에 통보한다. 인터럽션 실행 후의 모드가 단일 스텝 모드일 경우, 연산 모드 판독/기록 명령 실행부(241)는 스텝 중지 검출을 인터럽트 제어부(250)에 통보한다.
로드 명령 실행부(232)는 명령 디코드부(231)로부터 로드 명령을 수신하는 경우, 범용 레지스터(265)로부터 판독된 값에 기초하여 유효 어드레스를 획득한다. 이어서, 로드 명령 실행부(232)는 메모리(210)로부터 이 유효 어드레스에 해당하는 영역을 판독하고, 그 판독 결과를 범용 레지스터(265)에 기록한다. 게다가, 로드 명령 실행부(232)는 명령 실행중에 인터럽션을 검출할 경우, 인터럽션 검출을 인터럽션 제어부(250)에 통보한다. 인터럽션 실행 후의 모드가 단일 스텝 모드일 경우, 로드 명령 실행부(232)는 스텝 중지 검출을 인터럽션 제어부(250)에 통보한다.
저장 명령 실행부(233)는 명령 디코드부(231)로부터 저장 명령을 수신하는 경우, 범용 레지스터(265)로부터 판독된 값에 기초하여 유효 어드레스를 획득한다. 이어서, 저장 명령 실행부(233)는 범용 레지스터(265)를 판독하고, 그 판독 결과를 메모리(210)의 유효 어드레스에 해당하는 영역에 기록한다. 게다가, 저장 명령 실행부(233)는 명령 실행중에 인터럽션을 검출할 경우, 인터럽션 검출을 인터럽션 제어부(250)에 통보한다. 인터럽션 실행 후의 모드가 단일 스텝 모드일 경우, 저장 명령 실행부(233)는 스텝 중지 검출을 인터럽션 제어부(250)에 통보한다.
연산 명령 실행부(234)는 명령 디코드부(231)로부터 연산 명령을 수신하는 경우, 범용 레지스터(265)로부터 판독된 값에 기초하여 연산을 수행한다. 연산 명령 실행부(234)는 그 판독 결과를 범용 레지스터(265)에 기록한다. 게다가, 연산 명령 실행부(234)는 명령 디코드부(231)로부터 비교 명령을 수신하는 경우, 범용 레지스터(265)로부터 판독된 값에 기초하여 비교를 수행한다. 연산 명령 실행부(234)는 그 비교 결과로서 참 또는 거짓을 나타내는 값을 COND(261)에 기록한다. 게다가, 연산 명령 실행부(234)는 명령 실행중에 인터럽션을 검출할 경우, 인터럽션 검출을 인터럽션 제어부(250)에 통보한다. 인터럽션 실행 후의 모드가 단일 스텝 모드일 경우, 연산 명령 실행부(233)는 스텝 중지 검출을 인터럽션 제어부(250)에 통보한다.
기타 명령 실행부(235)는 명령 디코드부(231)로부터 분기 명령을 수신하는 경우, 분기 목적지 어드레스를 명령 판독부(220)에 공급한다. 게다가, 기타 명령 실행부(235)는 명령 디코드부(231)로부터 조건적 분기 명령을 수신하는 경우, COND(261) 값이 참을 나타내는 값이라면, 명령 판독부(220)에 분기 목적지 어드레스를 공급한다.
기타 명령 실행부(235)는 명령 디코드부(231)로부터 인터럽션 복귀 명령을 수신하는 경우, 인터럽션 발생전 연산 레지스터(264)의 값을 연산 레지스터(263)에 기록한다. 마찬가지로, 기타 명령 실행부(235)는 복귀 명령 어드레스 레지스터(262)를 판독하고, 그 판독 결과를 분기 목적지 어드레스로서 명령 판독부(220)에 기록한다. 게다가, 기타 명령 실행부(235)는 명령 디코드부(231)로부터 중지점 명령을 수신하는 경우, 소프트웨어 중지 확립을 인터럽션 제어부(250)에 통보한다.
게다가, 기타 명령 실행부(235)는 명령 디코드부(231), 연산 레지스터(263), 인터럽션 발생전 연산 레지스터(264) 또는 명령 중지점 레지스터(225a 내지 225d)로부터 판독 명령을 수신하는 경우, 연산 레지스터(263), 인터럽션 발생전 연산 레지스터(264) 또는 명령 중지 검출부(224)의 명령 중지점 레지스터(225a 내지 225d)를 판독한다. 게다가, 기타 명령 실행부(235)는 그 판독 결과를 범용 레지스터(265)에 기록한다.
또한, 기타 명령 실행부(235)는 명령 디코드부(231), 연산 레지스터(263), 인터럽션 발생전 연산 레지스터(264) 또는 명령 중지점 레지스터(225a 내지 225d)로부터 기록 명령을 수신하는 경우, 범용 레지스터(265)를 판독한다. 이어서, 기타 명령 실행부(235)는 판독 결과를 연산 레지스터(263), 인터럽션 발생전 연산 레지스터(264) 또는 명령 중지 검출부(224)의 명령 중지점 레지스터(225a 내지 225d)에 기록한다.
게다가, 기타 명령 실행부(235)는 명령 실행중에 인터럽션을 검출할 경우, 인터럽션 검출을 인터럽션 제어부(250)에 통보한다. 인터럽션 실행 후의 모드가 단일 스텝 모드일 경우, 기타 명령 실행부(235)는 스텝 중지 검출을 인터럽션 제어부(250)에 통보한다.
부동 소수점 로드 명령 실행부(236)는 명령 디코드부(231)로부터 부동 소수점 로드 명령을 수신하는 경우, 범용 레지스터(265)로부터 판독된 값에 기초하여 유효 어드레스를 획득한다. 이어서, 부동 소수점 로드 명령 실행부(236)는 메모리(210)에서 유효 어드레스에 해당하는 영역을 판독하여, 그 판독 결과를 부동 소수점 레지스터(266)에 기록한다. 게다가, 부동 소수점 로드 명령 실행부(236)는 명령 실행중에 인터럽션을 검출할 경우, 인터럽션 검출을 인터럽션 제어부(250)에 통보한다. 인터럽션 실행 후의 모드가 단일 스텝 모드일 경우, 부동 소수점 로드 명령 실행부(236)는 스텝 중지 검출을 인터럽트 제어부(250)에 통보한다.
부동 소수점 저장 명령 실행부(237)는 명령 디코드부(231)로부터 부동 소수점 저장 명령을 수신하는 경우, 범용 레지스터(265)로부터 판독된 값에 기초하여 유효 어드레스를 획득한다. 이어서, 부동 소수점 저장 명령 실행부(237)는 부동 소수점 레지스터(266)를 판독하여, 그 판독 결과를 메모리(210)의 유효 어드레스에 해당하는 영역에 기록한다. 게다가, 부동 소수점 저장 명령 실행부(237)는 명령 실행중에 인터럽션을 검출할 경우, 인터럽션 검출을 인터럽션 제어부(250)에 통보한다. 인터럽션 실행 후의 모드가 단일 스텝 모드일 경우, 부동 소수점 저장 명령 실행부(237)는 스텝 중지 검출을 인터럽트 제어부(250)에 통보한다.
부동 소수점 연산 명령 실행부(238)는 명령 디코드부(231)로부터 부동 소수점 연산 명령을 수신하는 경우, 부동 소수점 레지스터(266)로부터 판독된 값에 기초하여 연산을 수행한다. 이어서, 부동 소수점 연산 명령 실행부(238)는 그 판독 결과를 부동 소수점 레지스터(266)에 기록한다. 게다가, 부동 소수점 연산 명령 실행부(238)는 명령 디코드부(231)로부터 부동 소수점 비교 명령을 수신하는 경우, 부동 소수점 레지스터(266)로부터 판독된 값에 기초하여 비교를 수행한다. 부동 소수점 연산 명령 실행부(238)는 그 비교 결과로서 참 또는 거짓을 나타내는 값을 COND(261)에 기록한다. 게다가, 부동 소수점 연산 명령 실행부(238)는 명령 실행중에 인터럽션을 검출할 경우, 인터럽션 검출을 인터럽션 제어부(250)에 통보한다. 인터럽션 실행 후의 모드가 단일 스텝 모드일 경우, 부동 소수점 연산 명령 실행부(238)는 스텝 중지 검출을 인터럽션 제어부(250)에 통보한다.
특정 애플리케이션용 연산 명령 실행부(239)는 명령 디코드부(231)로부터 특정 애플리케이션용 연산 명령을 수신하는 경우, 부동 소수점 레지스터(266)로부터 판독된 값에 기초하여 연산을 수행한다. 특정 애플리케이션용 연산 명령 실행부(239)는 그 판독 결과를 부동 소수점 레지스터(266)에 기록한다. 게다가, 연산중에 오버플로우와 같은 연산 예외가 발생할 경우, 특정 애플리케이션용 연산 명령 실행부(236)는 연산 예외 발생을 나타내는 값을 특정 애플리케이션용 연산 상태 레지스터(267)에 기록한다. 명령 실행 후의 모드가 단일 스텝 모드일 경우, 특정 애플리케이션용 연산 명령 실행부(239)는 스텝 중지 검출을 인터럽션 제어부(250)에 통보한다.
레지스터 제어부(260)에 대해서는 이하에 자세히 설명한다. 특정 애플리케이션용 연산 상태 레지스터(267)는 특정 애플리케이션용 연산 명령 실행중에 오버플로우와 같은 연산 예외가 검출되었는지의 여부를 나타내는 값을 홀드한다. 연산 모드 레지스터(268)은 특정 애플리케이션용 연산 명령 실행중에 발생한 연산 예외의 검출 여부를 나타내는 값을 홀드한다. 예컨대, 특정 애플리케이션용 연산 명령 실행중에 발생한 연산 예외가 검출되지 않을 경우, 그 레지스터(268)의 값은 "0(제로)"으로 설정된다. 한편, 특정 애플리케이션용 연산 명령 실행중에 발생한 연산 예외가 검출될 경우, 레지스터(268)의 값은 "1"로 설정된다. 복귀 명령 어드레스 레지스터(262) 및 인터럽션 발생전 연산 레지스터(264)는 인터럽션이 발생되는 경우에 설정된다.
도 15는 연산 레지스터(263)의 구성예를 도시한다. 연산 레지스터(263)에는 SE 필드(269a) 및 S 필드(269b)가 설치된다. SE 필드(269a)는 모드가 단일 스텝 모드인지의 여부를 나타내는 값을 홀드한다. 예를 들어, 단일 스텝 모드가 아닐 경우 SE 필드(269a)는 "0(제로)"을 홀드하고, 단일 스텝 모드일 경우 "1"을 홀드한다. 따라서, SE 필드(269a)의 값이 "1"일 경우, 명령 실행 후 스텝 중지 인터럽션이 발생된다. S 필드(269b)는 상태가 관리자 상태인지의 여부를 나타내는 값을 홀드한다. 예컨대, 사용자 상태라면 S 필드(269b)는 "0(제로)"을 홀드하고, 관리자 상태일 경우 "1"을 홀드한다.
도 16은 인터럽션 발생전 연산 레지스터(264)의 구성예를 도시한다. 인터럽션 발생전 연산 레지스터(264)에는 SE 필드(269c) 및 S 필드(269d)가 설치된다. SE 필드(269c)는 인터럽션 발생전의 상태가 단일 스텝 모드인지의 여부를 나타내는 값을 홀드한다. 예를 들어, 인터럽션 발생 전의 상태가 단일 스텝 모드가 아닌 경우 SE 필드(269c)는 "0(제로)"을 홀드하고, 인터럽션 발생 전의 상태가 단일 스텝 모드이면 "1"을 홀드한다. S 필드(269d)는 인터럽션 발생 전의 상태가 관리자 상태인지의 여부를 나타내는 값을 홀드한다. 예컨대, 인터럽션 발생전의 상태가 사용자 상태였다면 S 필드(269d)는 "0(제로)"을 홀드하고, 관리자 상태였다면 "1"을 홀드한다.
인터럽션 제어부(250)의 통상의 인터럽션 제어부(251)에 대해 이하에서 상세히 설명한다. 통상의 인터럽션 제어부(251)는 명령 판독부(220) 또는 명령 발행부(230)로부터 인터럽션 발생 통보를 수신하는 경우, 인터럽션으로부터 복귀하기 위한 명령 어드레스를 복귀 명령 어드레스 레지스터(262)에 기록하고, 인터럽션 밭생전의 프로세서 상태를 인터럽션 발생전 연산 레지스터(264)에 기록하며, 발생된 인터럽션에 해당하는 프로세서 상태를 연산 레지스터(263)에 기록한다. 통상의 인터럽션 제어부(251)는 발생된 인터럽션에 해당하는 분기 목적지 어드레스를 명령 판독부(220)에 공급한다.
본 발명의 제2 실시예에 관한 특정 애플리케이션용 연산 명령의 예외 처리 방법을 다음에 설명한다. 도 17은 제2 실시예와 관련된 특정 애플리케이션용 연산 명령의 예외 처리 방법 중 스텝 중지법에 따른 인터럽션 처리 프로그램의 흐름도이다. 도 17에 도시된 흐름도를 참조하면, 프로그램의 실행이 인터럽션되어 인터럽션 처리 프로그램이 시작되는 경우, 먼저 콘텍스트가 저장된다(단계 S501). 그 후, 연산 모드 레지스터(268) 값이 연산 모드 레지스터(268) 판독용 명령에 기초하여 판독되고, 연산 모드가 특정 애플리케이션용 연산 명령 실행중에 발생된 연산 예외 검출 여부 상태로 설정되었는지 확인된다(단계 S502).
연산 모드가 특정 애플리케이션용 연산 명령 실행 전에 발생된 연산 예외 미검출 상태로 설정되어 있다고 연산 모드 레지스터(268)가 확인할 경우(단계 S503 : 특정 애플리케이션용 연산 예외 미검출 상태), 스텝 중지 처리가 수행된다(단계 S504). 이어서, 콘텍스트가 복원되고(단계 S505), 인터럽션 복귀 명령에 기초하여, 인터럽션으로부터 처리가 복구되며(단계 S506), 인터럽션 처리는 종료된다. 따라서, 연산 모드가 연산 예외 검출 상태로 설정되지 않았으면, 중지 처리 및 원상태로의 복귀은 신속히 수행될 수 있다.
한편, 연산 모드가 특정 애플리케이션용 연산 명령 실행 전에 발생된 연산 예외 검출 상태로 설정되었다고 연산 모드 레지스터(268)가 확인할 경우(단계 S503 : 특정 애플리케이션용 연산 예외 검출 상태), 중지 명령이 메모리(210)로부터 판독된다. 이 명령 코드는 분석되고, 이 명령이 특정 애플리케이션용 연산 명령인지의 여부가 확인된다(단계 S507). 중지 명령이 특정 애플리케이션용 연산 명령이 아니라고 확인될 경우(단계 S508 : 비특정 애플리케이션용 연산 명령), 처리가 단계 S504로 시프트된다. 이어서, 단계 S504에서 S506의 처리가 수행되고, 인터럽션 처리가 종료된다. 따라서, 특정 애플리케이션용 연산 명령이 아닐 경우, 중지 처리 및 원상태로의 복귀가 신속히 수행될 수 있다.
한편, 중지 명령이 확인 결과로서 특정 애플리케이션용 연산 명령이라고 확인될 경우(단계 S508 : 특정 애플리케이션용 연산 명령), 특정 애플리케이션용 연산 상태 레지스터(267) 판독용 명령에 기초하여, 특정 애플리케이션용 연산 상태 레지스터(267)가 판독된다. 이어서, 특정 애플리케이션용 연산 명령 실행중에 연산 예외가 검출되었는지의 여부가 확인된다(단계 S509). 연산 예외가 특정 애플리케이션용 연산 명령 실행중에 검출되지 않았다고 확인될 경우(단계 S510 : 연산 예외 미검출), 그 처리는 단계 S504로 시프트된다. 이어서, 단계 S504에서 S506의 처리가 수행되고, 인터럽션 처리는 종료된다. 한편, 특정 애플리케이션용 연산 명령 실행중에 연산 예외가 검출될 경우(단계 S510 : 연산 예외 검출), 그 처리는 단계 S504로 시프트된다. 이어서, 단계 S504에서 S506의 처리가 수행되고, 인터럽션 처리는 종료된다.
도 18은 본 발명의 제2 실시예에 관한 특정 애플리케이션용 연산 명령의 예외 처리 중 소프트웨어 중지법에 따른 인터럽션 처리 프로그램의 흐름도이다. 도 18에 도시된 흐름도를 참조하면, 프로그램 실행이 인터럽션되어 인터럽션 처리 프로그램이 시작되는 경우, 먼저 콘텍스트가 저장된다(단계 S601). 그 후, 연산 모드 레지스터(268)의 값이 연산 모드 레지스터(268) 판독용 명령에 기초하여 판독되고, 연산 모드가 특정 애플리케이션용 연산 명령 실행중에 발생된 연산 예외의 검출 여부 상태로 설정되어 있는지가 확인된다(단계 S602).
특정 애플리케이션용 연산 명령 실행중에 발생된 연산 예외 미검출 상태에 연산 모드가 설정되었다고 연산 모드 레지스터(268)가 확인할 경우(단계 S603 : 특정 애플리케이션용 연산 예외 미검출 상태), 소프트웨어 중지 처리가 수행된다(단계 S604). 이어서, 콘텍스트가 복원되고(단계 S605), 인터럽션 복귀 명령에 기초하여 인터럽션으로부터 처리가 복구되고(단계 S606), 인터럽션 처리는 종료된다.
한편, 특정 애플리케이션용 연산 명령 실행중에 발생된 연산 예외 검출 상태에 연산 모드가 설정되었다고 연산 모드 레지스터(268)가 확인할 경우(단계 S603 : 특정 애플리케이션용 연산 예외 검출 상태), 특정 애플리케이션용 연산 상태 레지스터(267)의 값은 특정 애플리케이션용 연산 상태 레지스터(267) 판독용 명령을 따라 판독된다. 이어서, 특정 애플리케이션용 연산 명령 실행중에 연산 예외 검출 여부가 확인된다(단계 S607). 연산 예외가 미검출될 경우(단계 S608 : 연산 예외 미검출), 처리는 단계 S604로 시프트된다. 이어서, 단계 S604 내지 S606의 처리가 수행되고, 인터럽션 처리는 종료된다. 한편, 연산 예외가 검출될 경우(단계 S608 : 연산 예외 검출), 특정 애플리케이션용 연산 예외 처리가 수행되고(단계 S609), 처리는 단계 S604로 시프트된다. 이어서, 단계 S604에서 S606의 처리가 수행되고, 인터럽션 처리는 종료된다.
도 19은 본 발명의 제2 실시예에 관한 특정 애플리케이션용 연산 명령의 예외 처리 중 명령 중지법에 따른 인터럽션 처리 프로그램의 흐름도이다. 도 19에 도시된 흐름도를 참조하면, 프로그램 실행이 인터럽션되어 인터럽션 처리 프로그램이 시작될 경우, 먼저 콘텍스트가 저장된다(단계 S701). 그 후, 연산 모드 레지스터(268) 값이 연산 모드 레지스터(268) 판독용 명령에 기초하여 판독되고, 연산 모드가 특정 애플리케이션용 연산 명령 실행중에 발생된 연산 예외의 검출 여부 상태로에 설정되었는지 확인된다(단계 S702).
연산 모드가 특정 애플리케이션용 연산 명령 실행중에 발생된 연산 예외 미검출 상태로 설정되었다고 연산 모드 레지스터(268)가 확인할 경우(단계 S703 : 특정 애플리케이션용 연산 예외 미검출 상태), 명령 중지 처리가 수행된다(단계 S704). 이어서, 콘텍스트가 복원되고(단계 S705), 인터럽션 복귀 명령에 기초하여 인터럽션으로부터 처리가 복구되고(단계 S706), 인터럽션 처리는 종료된다.
한편, 연산 모드가 특정 애플리케이션용 연산 명령 실행중에 발생된 연산 예외 검출 상태로 설정되었다고 연산 모드 레지스터(268)가 확인할 경우(단계 S703 : 특정 애플리케이션용 연산 예외 검출 상태), 특정 애플리케이션용 연산 상태 레지스터(267)의 값은 특정 애플리케이션용 연산 상태 레지스터(267) 판독용 명령을 따라 판독된다. 이어서, 특정 애플리케이션용 연산 명령의 실행중에 연산 예외기 검출되었는지의 여부가 확인된다(단계 S707). 연산 예외가 미검출될 경우(단계 S708 : 연산 예외 미검출), 처리는 단계 S704로 시프트된다. 이어서, 단계 S704 내지 S706의 처리가 수행되고, 인터럽션 처리는 종료된다. 한편, 연산 예외가 검출될 경우(단계 S708 : 연산 예외 검출), 특정 애플리케이션용 연산 예외 처리가 수행되고(단계 S709), 처리는 단계 S704로 시프트된다. 이어서, 단계 S704에서 S706의 처리가 수행되고, 인터럽션 처리는 종료된다.
상술한 제2 실시예에 따라, 스텝 중지, 소프트웨어 중지, 명령 중지 가운데 임의의 하나가 특정 애플리케이션용 연산 명령을 갖는 정보 처리 장치에서 발생할 경우, 특정 애플리케이션용 연산 명령을 인한 오버플로우와 같은 연산 예외의 발생을 검출할 수 있으며, 예외 처리를 수행할 수 있다. 따라서, 디버깅에 소요되는 작업과 시간을 절약할 수 있다. 그 결과, 프로그램 개발에 필요한 시간을 줄일 수 있는 효과가 있다.
상술한 바와 같이, 연산 모드 레지스터(268)가 설치되며, 이 레지스터는 특정 애플리케이션용 연산 명령의 실행중에 발생하는 연산 예외의 검출 여부에 관한 정보를 홀드한다. 그러나, 이 구조는 이에 한정되지 않고, 또한 메모리(210)에 플래그를 제공할 수도 있으며, 이 메모리는 유사한 정보를 홀드한다.
도 20은 본 발명의 제3 실시예에 관한 특정 애플리케이션용 연산 명령의 예외 처리 방법이 채용되는 정보 처리 장치의 구조를 도시하는 블록도이다. 이 정보 처리 장치는 다음의 4 가지 점에서 제2 실시예의 정보 처리 장치와 상이하다. 첫째, 특정 애플리케이션용 연산 명령 실행중에 발생하는 연산 예외 검출 상태에서 동작을 설정하는 명령으로서 특정 애플리케이션용 연산 예외 검출 중지점 명령이 제공된다. 둘째, 명령 실행부(330)가 제2 실시예의 명령 실행부(230) 대신에 설치된다. 이 명령 실행부(330)는 특정 애플리케이션용 연산 예외 검출 중지점 명령을 실행하는 실행부(331)를 갖는다. 셋째, 이 명령 실행부(330)에는 연산 모드 판독/기록 명령 실행부(241)가 설치되지 않는다. 넷째, 레지스터 제어부(360)가 제2 실시예의 레지스터 제어부(260) 대신에 설치되지만, 이 제어부는 연산 모드 레지스터(268)를 갖지 않는다.
이외의 구조는 제2 실시예와 유사하다. 제2 실시예와 유사한 장치에는 동일한 도면 번호가 사용되며, 그에 대한 설명은 생략된다. 제3 실시예에서는 제2 실시예에서 설명한 연산 모드 판독/기록 명령 실행부(241) 및 연산 모드 레지스터(268)에 관한 설명은 하지 않는다.
명령 실행부(330)에는 명령 디코부(231), 로드 명령 실행부(232), 저장 명령 실행부(233), 연산 명령 실행부(234), 기타 명령 실행부(235), 부동 소수점 로드 명령 실행부(236), 부동 소수점 저장 명령 실행부(237), 부동 소수점 연산 명령 실행부(238), 특정 애플리케이션용 연산 명령 실행부(239), 특정 애플리케이션용 연산 상태 판독/기록 명령 실행부(240), 및 특정 애플리케이션용 연산 예외 중지점 명령 실행부(331)가 장착된다.
명령 디코드부(231)는 제2 실시예에서 설명된 명령 디코드부(231)의 모든 기능을 수행한다. 또한, 명령 판독부(220)로부터 공급된 명령 분석 결과에 따라, 이 명령이 특정 애플리케이션용 연산 예외 검출 중지점 명령이라는 것이 확인될 경우, 명령 디코드부(231)는 이 명령을 특정 애플리케이션용 연산 예외 검출 중지점 실행부(331)에 공급한다.
특정 애플리케이션용 연산 예외 중지점 명령 실행부(331)는 명령 디코드부(231)로부터 특정 애플리케이션용 연산 예외 검출 중지점 명령을 수신하는 경우, 소프트웨어 중지 확립을 인터럽션 제어부(250)에 통보한다. 게다가, 특정 애플리케이션용 연산 예외 검출 중지점 명령 실행부(331)는 명령 실행중에 인터럽션을 검출하는 경우, 인터럽트 검출을 인터럽션 제어부(250)에 통보한다. 명령 실행후에 모드가 단일 스텝 모드일 경우, 특정 애플리케이션용 연산 예외 검출 중지점 명령 실행부(331)는 스텝 중지 검출을 인터럽션 제어부(250)에 통보한다.
레지스터 제어부(360)에는 COND(261), 복귀 명령 어드레스 레지스터(262), 연산 레지스터(263), 인터럽션 발생전 연산 레지스터(264), 범용 레지스터(265), 부동 소수점 레지스터(266) 및 특정 애플리케이션용 연산 상태 레지스터(267)가 장착된다.
본 발명의 제3 실시예에 관한 특정 애플리케이션용 연산 명령의 예외 처리 방법을 다음에 설명한다. 도 21은 본 발명의 제3 실시예에 관한 특정 애플리케이션용 연산 명령의 예외 처리 가운데 소프트웨어 중지법에 따른 인터럽션 처리 프로그램의 흐름도이다. 도 21에 도시된 흐름도를 참조하면, 프로그램 실행이 인터럽션되어 인터럽션 처리 프로그램이 시작될 경우, 먼저 콘텍스트가 저장된다(단계 S901). 그 후, 소프트웨어 중지를 발생시킨 인터럽션이 메모리(210)로부터 판독되고, 이 명령의 코드가 분석된다. 이어서, 이 명령이 특정 애플리케이션용 연산 예외 검출 중지점 명령인지의 여부가 확인된다(단계 S902).
그러나, 이 명령이 특정 애플리케이션용 연산 예외 검출 중지점 명령이 아닐 경우, 즉, 단순한 중지점 명령일 때(단계 S903 : 중지점 명령), 소프트웨어 중지 처리가 수행된다(단계 S904). 그 후, 콘텍스트는 복원되고(단계 S905), 인터럽션 복귀 명령(단계 S906)에 따라 인터럽션으로부터 처리가 복구되며, 인터럽션 처리는 종료된다.
한편, 이 명령이 특정 애플리케이션용 연산 예외 검출 중지점 명령이라고 확인되는 경우(단계 S903 : 특정 애플리케이션용 연산 예외 검출 중지점 명령), 특정 애플리케이션용 연산 상태 레지스터(267)의 값은 특정 애플리케이션용 연산 상태 레지스터(267) 판독용 명령에 기초하여 판독된다. 이어서, 연산 예외가 특정 애플리케이션용 연산 명령 실행중에 검출되는지의 여부가 확인된다(단계 S907). 연산 예외 미검출시(단계 S908 : 연산 예외 미검출), 처리는 단계 S904로 시프트한다. 이어서, 단계 S904 내지 단계 S906의 처리가 수행되며(단계 S909), 인터럽션 처리는 종료된다. 한편, 연산 예외 검출시(단계 S908 : 연산 예외 검출), 특정 애플리케이션용 연산 예외 처리가 수행되고(단계 S909), 처리는 단계 S904로 시프트한다. 이어서, 단계 S904 내지 단계 S906의 처리가 수행되며(단계 S909), 인터럽션 처리는 종료된다.
제3 실시예의 스텝 중지법 및 명령 중지법에 따른 인터럽션 처리 프로그램은 도 4와 도 6에 각각 도시된 종래의 방법 흐름도에 도시된 것과 유사하다. 그러므로, 그 도면에 대한 설명은 생략할 것이다.
상술한 제3 실시예에 따르면, 소프트웨어 중지가 특정 애플리케이션용 연산 명령을 갖는 정보 처리 장치에서 발생하는 경우, 특정 애플리케이션용 연산 명령으로 인한 오버플로우와 같은 연산 예외의 발생을 검출하여 예외 처리를 수행할 수 있다. 그러므로, 디버깅에 소요되는 작업과 시간이 절약된다. 결과적으로, 프로그램을 개발하는데 요구되는 시간을 줄일 수 있다.
또한, 제3 실시예에 따르면, 특정 애플리케이션용 연산 예외 검출 중지점 명령이 제공된다. 이어서, 소프트웨어 중지를 발행시킨 명령이 특정 애플리케이션용 연산 예외 검출 중지점 명령인지 또는 단순한 중지점 명령인지에 따라 특정 애플리케이션용 연산 명령 실행중에 발생하는 연산 예외가 수행될지의 여부가 결정된다. 그러나, 그 구조는 상술한 것에 한정되지 않는다. 예를 들어, 중지점 명령의 명령어에 포함되어 있는 필드 값에 기초하여, 특정 애플리케이션용 연산 명령 실행중에 발생하는 연산 예외가 수행되는지의 여부를 결정할 수 있다.
도 22는 본 발명의 제4 실시예에 관한 특정 애플리케이션용 연산 명령의 연산 예외 처리 방법이 채용된 정보 처리 장치의 구조를 도시하는 블록도이다. 이 정보 처리 장치는 다음의 3가지 점에서 제2 실시예와 상이하다. 첫째, 제2 실시예의 명령 판독부(220) 대신에 설치되는 명령 판독부(420)가 명령 중지 검출부(424)를 갖는다. 이 명령 판독부(420)는 제2 실시예와 상이한 명령 중지점 레지스터 구조를 갖는다. 둘째, 명령 실행부(430)가 제2 실시예의 명령 실행부(230) 대신에 설치된다. 이 명령 실행부(430)에는 연산 모드 판독/기록 명령 실행부(241)가 설치되지 않는다. 셋째, 제3 실시예와 동일한 구조를 갖는 레지스터 제어부(360)가 제2 실시예의 레지스터 제어부(260) 대신에 설치된다.
기타 구조는 제2 실시예의 구조와 유사하다. 제2 실시예와 유사한 장치에는 동일한 도면 부호가 부여되고, 그에 대한 설명은 생략된다. 레지스터 제어부(360)는 또한 제3 실시예와 동일하므로, 그에 대한 설명은 생략된다. 이 제4 실시예에 있어서, 제2 실시예에서 설명한 연산 모드 판독/기록 연산 실행부(241) 및 연산 모드 레지스터(268)에 대해서는 설명하지 않는다.
명령 판독부(420)에는 명령 판독 제어부(221), 프로그램 카운터(222), 명령어 레지스터(223) 및 명령 중지 검출부(424)가 장착된다. 도 23은 명령 중지 검출부(424)의 일례를 도시하는 블록도이다. 각각의 명령 중지점 레지스터(425a 내지 425d)에는 ADDR 필드(228a), E 필드(228B), V 필드(228C)에 부가하여 M 필드(428)가 제공된다 점에서 명령 중지 검출부(424)는 제2 실시예의 명령 중지 검출부(224)와 상이하다. 명령 중지 검출부(424)의 그외 구조는 제2 실시예의 명령 중지 검출부(224)와 동일하다. M 필드(428)는 명령 중지가 특정 애플리케이션용 연산 명령 실행중에 발생하는 연산 예외 검출을 수행하기 위한 것인지의 여부를 나타내는 값을 홀드한다. 명령 중지가 특정 애플리케이션용 연산 명령 실행중에 발생하는 연산 예외 검출용이 아닐 경우, M 필드(428)는 "0(제로)"을 홀드하고, 명령 중지가 특정 애플리케이션용 연산 명령 실행중에 발행하는 연산 예외 검출용일 경우, "1"을 홀드한다.
명령 실행부(430)에는 명령 디코드부(231), 로드 명령 실행부(232), 저장 명령 실행부(233), 연산 명령 실행부(234), 기타 명령 실행부(235), 부동 소수점 로드 명령 실행부(236), 부동 소수점 저장 명령 실행부(237), 부동 소수점 연산 명령 실행부(238), 특정 애플리케이션용 연산 명령 실행부(239) 및 특정 애플리케이션용 연산 상태 판독/기록 실행부(240)가 장착된다.
본 발명의 제4 실시예에 관한 특정 애플리케이션용 연산 명령의 예외 처리 방법이 다음에 설명된다. 도 24는 본 발명의 제4 실시예에 관련된 특정 애플리케이션용 연산 명령의 연산 예외 처리 방법 가운데 명령 중지법에 따른 인터럽션 처리 프로그램의 흐름도이다. 도 24에 도시된 흐름도를 참조하면, 프로그램 실행이 인터럽션되어 인터럽션 처리 프로그램이 시작될 경우, 먼저 콘텍스트가 저장된다(단계 S1201). 그 후, 각각의 명령 중지점 레지스터(425a 내지 425d)의 M 필드(428) 값이 명령 중지점 레지스터(425a 내지 425d) 판독용 명령에 기초하여 판독된다. 이어서, 명령 중지가 특정 애플리케이션용 연산 명령 실행중에 발생한 연산 예외를 검출하기 위한 것인지의 여부가 확인된다(단계 S1202). 명령 중지가 연산 예외 검출용이 아닐 경우(단계 S1203 : 특정 애플리케이션용 연산 예외 검출용이 아님), 명령 중지 처리가 수행된다(단계 S1204). 그 후, 콘텍스트는 복원되고(단계 S1205), 처리는 인터럽션 복귀 명령에 기초하여 인터럽션으로부터 복구되며(단계 S1206), 인터럽션 처리는 종료된다.
한편, 명령 중지가 연산 예외 검출용일 경우(단계 S1203 : 특정 애플리케이션용 연산 예외 검출용), 특정 애플리케이션용 연산 상태 레지스터(267)의 값은 특정 애플리케이션용 연산 상태 레지스터(267) 판독 명령에 기초하여 판독된다. 그 후, 특정 애플리케이션용 연산 명령 실행중에 연산 예외가 검출되었는지의 여부가 확인된다(단계 S1207). 특정 애플리케이션용 연산 명령 실행중에 연산 예외 미검출이 확인될 경우(단계 S1208 : 연산 예외 미검출), 처리는 단계 S1204로 시프트한다. 그리고, 단계 S1204 내지 S1206의 처리가 수행되어 인터럽션 처리가 종료된다. 한편, 특정 애플리케이션용 연산 명령 실행중에 연산 예외 검출이 확인될 경우(단계 S1208 : 연산 예외 검출), 특정 애플리케이션용 연산 예외 처리가 수행되고(단계 S1209), 처리는 단계 S1204로 시프트한다. 이어서 단계 S1204 내지 S1206의 처리가 수행되어 인터럽션 처리가 종료된다.
제4 실시예의 스텝 중지법 및 소프트 중지법에 따른 인터럽션 처리 프로그램은 도 5 및 도 6에 각각 도시된 종래적 방법의 흐름도와 유사하다. 그러므로, 그 도면과 설명은 생략된다.
상술한 제4 실시예에 따르면, 명령 중지가 특정 애플리케이션용 연산 명령을 갖는 정보 처리 장치에서 발생될 경우, 특정 애플리케이션용 연산 명령으로 인한 오버플로우 등의 연산 예외의 발생을 검출하여, 예외 처리를 수행할 수 있다. 따라서, 디버깅에 소요되는 작업과 시간이 절약된다. 결과적으로, 프로그램 개발에 필요한 시간을 줄일 수 있는 효과가 있다.
도 25는 본 발명의 제5 실시예에 관한 특정 애플리케이션용 연산 명령의 예외 처리 방법이 채용되는 정보 처리 장치의 구조를 도시하는 블록도이다. 이 정보 처리 장치는 다음의 3가지 점에서 제2 실시예와 상이하다. 첫째, 메모리(210)가 특정 애플리케이션용 연산 예외 중지점 테이블(도 25에서 도시 생략)을 저장한다.
둘째, 명령 실행부(530)가 제2 실시예의 명령 실행부(230) 대신에 설치된다. 이 명령 실행부(530)에는 연산 모드 판독/기록 명령 실행부(241)가 설치되지 않는다. 셋째, 레지스터 제어부(460)가 제2 실시예의 레지스터 제어부(260) 대신에 설치된다. 이 레지스터 제어부(460)에는 연산 모드 레지스터(268)가 설치되지 않는다.
그외 구조는 제2 실시예의 구조와 유사하다. 제2 실시예와 유사한 장치에는 동일한 부호가 부여되고, 그에 대한 설명은 생략된다. 이 제5 실시예에 있어서, 제2 실시예에서 설명된 연산 모드 판독/기록 연산 실행부(241) 및 연산 모드 레지스터(268)에 대한 설명은 하지 않는다.
도 26은 특정 애플리케이션용 연산 예외의 중지점 테이블의 일례를 도시한다. 특정 애플리케이션용 연산 예외 중지점 테이블(211)에는 특정 애플리케이션용 연산 명령 실행중에 발생하는 연산 예외 검출용 중지점이 저장된다. 특정 애플리케이션용 연산 예외 중지점 테이블(211)에는, 명령 중지 및 소프트웨어 중지에 기초한 중지점 가운데 특정 애플리케이션용 연산 명령 실행중에 발행하는 연산 예외 검출용 중지점이 등록된다. 특정 애플리케이션용 연산 예외 중지점 테이블(211)의 명령 어드레스 컬럼(212)은 중지점의 명령 어드레스를 나타내는 컬럼이다.
명령 실행부(530)에는 명령 디코드부(231), 로드 명령 실행부(232), 저장 명령 실행부(233), 연산 명령 실행부(234), 기타 명령 실행부(235), 부동 소수점 로드 명령 실행부(236). 부동 소수점 저장 명령 실행부(237). 부동 소수점 연산 명령 실행부(238), 특정 애플리케이션용 연산 명령 실행부(239), 및 특정 애플리케이션용 연산 상태 판독/기록 명령 실행부(240)가 장착된다.
레지스터 제어부(460)에는 COND(261), 복귀 명령 어드레스 레지스터(262), 연산 레지스터(263), 인터럽션 발생전 연산 레지스터(264), 범용 레지스터(265), 부동 소수점 레지스터(266) 및 특정 애플리케이션용 연산 상태 레지스터(267)가 장착된다.
본 발명의 제5 실시예에 관한 특정 애플리케이션용 연산 명령의 예외 처리 방법을 다음에 설명한다. 도 27는 제5 실시예에 관련된 특정 애플리케이션용 연산 명령의 연산 예외 처리 방법 가운데 소프트웨어 중지법에 따른 인터럽션 처리 프로그램의 흐름도이다.
도 27에 도시된 흐름도를 참조하면, 프로그램 실행이 인터럽션되어 인터럽션 처리 프로그램이 시작될 경우, 먼저 콘텍스트가 저장된다(단계 S1501). 그리고, 중지점이 메모리(211)에 저장된 특정 애플리케이션용 연산 예외 중지점 테이블에 포함되어 있는지의 여부가 확인된다(단계 S1502). 중지점이 특정 애플리케이션용 연산 예외 중지점 테이블(211)에 포함되어 있지 않을 경우(단계 S1503 : 포함되지 않음), 소프트웨어 중지 처리가 수행된다(단계 S1504). 그리고, 콘텍스트가 복원되고(단계 S1505), 인터럽션 복귀 명령에 기초하여 인터럽션으로부터 처리가 복구되며(단계 S1506), 인터럽션 처리가 종료된다.
한편, 중지점이 특정 애플리케이션용 연산 예외 중지점 테이블(211)에 포함되어 있을 경우(단계 S1503 : 포함), 특정 애플리케이션용 연산 상태 레지스터(267)의 값은 특정 애플리케이션용 연산 상태 레지스터(267) 판독 명령에 기초하여 판독된다. 이어서, 특정 애플리케이션용 연산 명령 실행중에 연산 예외 검출 여부가 확인된다(단계 S1507). 특정 애플리케이션용 연산 명령 실행중에 연산 예외 미검출이 확인될 경우(단계 S1508 : 연산 예외 미검출), 처리는 단계 S1504로 시프트한다. 그리고 단계 S1504 내지 S1506의 처리가 수행되어 인터럽션 처리가 종료된다. 한편, 특정 애플리케이션용 연산 명령 실행중에 연산 예외 검출이 확인될 경우(단계 S1508 : 연산 예외 검출), 특정 애플리케이션용 연산 예외 처리가 수행되고(단계 S1509), 처리는 단계 S1504로 시프트한다. 이어서 단계 S1504 내지 S1506의 처리가 수행되고 인터럽션 처리가 종료된다.
도 28은 제5 실시예에 관한 특정 애플리케이션용 연산 명령의 연산 예외 처리 방법 가운데 명령 중지법에 따른 인터럽션 처리 프로그램의 흐름도이다. 도 28에 도시된 흐름도를 참조하면, 프로그램 실행이 인터럽션되어 인터럽션 처리 프로그램이 시작될 경우, 먼저 콘텍스트가 저장된다(단계 S1601). 그 후, 중지점이 메모리(211)에 저장된 특정 애플리케이션용 연산 예외 중지점 테이블에 포함되어 있는지의 여부가 확인된다(단계 S1602). 중지점이 특정 애플리케이션용 연산 예외 중지점 테이블(211)에 포함되어 있지 않을 경우(단계 S1603 : 포함되지 않음), 명령 중지 처리가 수행된다(단계 S1604). 그 후, 콘텍스트는 복원되고(단계 S1605), 인터럽션 복귀 명령에 기초하여 인터럽션으로부터 처리가 복구되며(단계 S1606), 인터럽션 처리가 종료된다.
한편, 중지점이 특정 애플리케이션용 연산 예외 중지점 테이블(211)에 포함되어 있을 경우(단계 S1603 : 포함), 특정 애플리케이션용 연산 상태 레지스터(267)의 값이 특정 애플리케이션용 연산 상태 레지스터(267) 판독 명령에 기초하여 판독된다. 그 후, 특정 애플리케이션용 연산 명령 실행중에 연산 예외 검출 여부가 확인된다(단계 S1607). 특정 애플리케이션용 연산 명령 실행중에 연산 예외 미검출이 확인될 경우(단계 S1608 : 연산 예외 미검출), 처리는 단계 S1604로 시프트한다. 단계 S1604 내지 S1606의 처리가 수행되어 인터럽션 처리는 종료된다. 한편, 특정 애플리케이션용 연산 명령 실행중에 연산 예외 검출이 확인될 경우(단계 S1608 : 연산 예외 검출), 특정 애플리케이션용 연산 예외 처리가 수행되고(단계 S1609), 처리는 단계 S1604로 시프트한다. 이어서 단계 S1604 내지 S1606의 처리가 수행되어 인터럽션 처리가 종료된다.
제5 실시예의 스텝 중지법에 따른 인터럽션 처리 프로그램은 도 6에 도시하는 종래 방법의 흐름도에 나타난 것과 유사하다. 그러므로, 그에 따른 도면과 설명은 생략된다.
상술한 제5 실시예에 따라, 소프트웨어 중지 또는 명령 중지가 특정 애플리케이션용 연산 명령을 갖는 정보 처리 장치에서 발생될 경우, 특정 애플리케이션용 연산 명령으로 인한 오버플로우 등의 연산 예외의 발생을 검출하여, 예외 처리를 수행할 수 있다. 그러므로, 디버깅에 소요되는 작업과 시간을 절약할 수 있다. 결과적으로, 프로그램 개발에 필요한 시간을 줄일수 있는 효과가 있다.
도 29는 본 발명의 제6 실시예에 관련한 정보 처리 장치의 구조를 도시하는 블록도이다. 이 정보 처리 장치에는 메모리(1), 명령 판독부(2), 레지스터 제어부(3), 인터럽션 제어부(4) 및 인터럽션 실행부(5)가 장착된다. 메모리(1)는 외부 메모리, 칩 내부에 존재하는 메모리 회로, 메모리 액세스용 버스와 그 제어 회로, 및 캐시 회로를 포함한다.
명령 판독부(2)는 메모리(1)로부터 판독된 명령어를 명령 실행부(5)에 공급한다. 명령 판독부(2)에는 명령 판독 제어부(21), 프로그램 카운터(22) 및 명령어 레지스터(23)가 장착된다. 레지스터 제어부(3)는 명령 판독부(2)로부터의 판독 및 기록, 인터럽션 제어부(4) 및 명령 실행부(5)을 제어한다. 레지스터 제어부(3)에는 복귀 명령 어드레스 레지스터(31), 인터럽션 발생전 연산 레지스터(32), 연산 레지스터(33) 및 범용 레지스터(34)가 장착된다. 인터럽션 제어부(4)는 인터럽션 발생 통보에 따라 인터럽션을 발생시킨다. 인터럽션 제어부(4)에는 통상의 인터럽션 제어부(41)가 장착된다.
인터럽션 실행부(5)는 명령 판독부(2)로부터 공급된 명령을 실행한다. 명령 실행부(5)에는 명령 디코드부(51), 로드/저장 명령 실행부(52), 연산 명령 실행부(53), 특정 애플리케이션용 연산 명령 실행부(54) 및 플래그 제어부(55)가 장착된다. 명령 연산 실행부(5)에는 분기/인터럽션 복귀 명령 제어부(56), 스코어 보드(57), 로드/저장 명령 발행 제어부(58), 연산 명령 발행 제어부(59), 분기/인터럽션 복귀 명령 발행 제어부(60) 및 연산 예외 검출 플래그(61)가 더 장착된다.
명령 판독부(2)는 다음에 상세히 설명된다. 프로그램 카운터(22)의 값은 판독된 명령어의 어드레스에 해당한다. 명령어 레지스터(23)는 판독된 명령어를 홀드하고, 이 명령어를 명령 실행부(5)에 공급한다. 명령 판독 제어부(21)는 프로그램 카운터(22)가 나타내는 명령어를 메모리(1)로부터 판독하여, 이 명령어를 명령어 레지스터(23)에 기록한다. 이 명령 판독 제어부(21)는 또한 다음 명령을 나타내기 위해 프로그램 카운터(22)를 증가시킨다.
그러나, 분기 목적지 어드레스가 명령 실행부(5)로부터 공급되는 경우, 명령 판독 제어부(21)는 분기 목적지 어드레스의 값을 프로그램 카운터(22)에 기록한다. 혹, 인터럽션 또는 예외에 해당하는 분기 목적지 어드레스가 인터럽션 제어부(4)로부터 공급되는 경우, 명령 판독 제어부(21)는 프로그램 카운터(22)에 이 분기 목적지 어드레스의 값을 기록한다. 명령 판독 제어부(21)가 명령 판독시에 인터럽션을 검출하는 경우, 명령 판독 제어부(21)는 인터럽션 검출을 인터럽션 제어부(4)에 통보한다.
인터럽션 실행부(5)에 대해서는 다음에 상세히 설명한다. 명령 디코드부(51)는 명령 판독부(2)로부터 공급된 명령을 분석한다. 공급된 명령이 로드 명령 또는 저장 명령일 경우, 명령 디코드부(51)는 로드 명령 또는 저장 명령을 로드/저장 명령 실행부(52) 및 로드/저장 명령 발행 제어부(58)에 공급한다. 연산 명령이 명령 판독부(2)로부터 공급되는 경우, 명령 디코드부(51)는 이 연산 명령을 연산 명령 실행부(53) 및 연산 명령 발행 제어부(59) 양측에 공급한다.
특정 애플리케이션용 연산 명령이 공급되는 경우, 명령 디코드부(51)는 이 특정 애플리케이션용 연산 명령을 특정 애플리케이션용 연산 명령 실행부(54)에 공급한다. 연산 예외 검출 플래그의 판독 또는 기록을 무효화하는 명령이 공급되는 경우, 명령 디코드부(51)는 이 명령을 플래그 제어부(55)에 공급한다. 분기 명령 또는 인터럽션 복귀 명령이 공급된다면, 명령 디코드부(51)는 이 분기 명령 또는 인터럽션 복귀 명령을 실행하는데 필요한 정보를 분기/인터럽션 복귀 명령 제어부(56) 및 분기/인터럽션 복귀 명령 발행 제어부(60)에 공급한다.
로드 명령이 명령 디코드부(51)로부터 로드/저장 명령 실행부(52)에 공급되면, 로드/저장 명령 실행부(52)는 이 명령의 유효 여부에 관한 정보를 로드/저장 명령 발행 제어부(58)로부터 수신하다. 로드 명령이 유효할 경우, 로드/저장 명령 실행부(52)는 범용 레지스터(34)로부터 판독된 값에 기초하여, 유효 어드레스를 획득한다. 이어서, 로드/저장 명령 실행부(52)는 메모리(1)의 유효 어드레스에 해당하는 영역을 판독하여, 그 판독 결과를 범용 레지스터(34)에 기록한다.
저장 명령이 명령 디코드부(51)로부터 로드/저장 명령 실행부(52)에 공급되는 경우, 로드/저장 명령 실행부(52)는 범용 레지스터(34)로부터 판독된 값에 기초하여 유효 어드레스를 획득한다. 이어서, 로드/저장 명령 실행부(52)는 범용 레지스터(34)를 판독하고, 그 판독 결과를 메모리(1)의 획득된 유효 어드레스에 해당하는 영역에 기록한다.
명령 실행 완료후, 로드/저장 명령 실행부(52)는 명령 실행 완료에 이어 사용될 수 있는 연산 유닛 플래그 및 레지스터를 스코어 보드(57)에 미사용 상태로 설정한다. 명령 실행중에 로드/저장 명령 실행부(52)가 인터럽션을 검출하는 경우, 로드/저장 명령 실행부(52)는 인터럽션 검출을 인터럽션 제어부(4)에 통보한다.
연산 명령이 명령 디코드부(51)로부터 연산 명령 실행부(53)에 공급되는 경우, 연산 명령 실행부(53)는 연산 명령 발행 제어부(59)로부터 이 명령의 유효성에 관한 정보를 수신하다. 연산 명령이 유효할 경우, 연산 명령 실행부(53)는 범용 레지스터(34)로부터 판독된 값에 기초하여 연산을 수행한다. 이어서, 연산 명령 실행부(53)는 이 연산 결과를 범용 레지스터(34)에 기록한다.
명령 실행 완료후, 연산 명령 실행부(53)는 명령 실행 완료에 이어 사용될 수 있는 연산 유닛 플래그 및 레지스터를 스코어 보드(57)에 미사용 상태로 설정한다. 연산 명령 실행부(53)는 명령 실행중에 인터럽션을 검출하는 경우, 인터럽션 검출을 인터럽션 제어부(4)에 통보한다.
특정 애플리케이션용 연산 명령 실행부(54)는 특정 애플리케이션용 연산 명령을 실행한다. 특정 애플리케이션용 연산 명령이 명령 디코드부(51)로부터 특정 애플리케이션용 연산 명령 실행부(54)에 공급되는 경우, 이 명령을 실행하기 전에, 특정 애플리케이션용 연산 명령 실행부(54)는 명령 실행중에 사용된 레지스터 및 플래그를 스코어 보드(57)에 미사용 상태로 설정한다. 이어서, 특정 애플리케이션용 연산 명령 실행부(54)는 범용 레지스터(34)로부터 판독된 값에 기초하여 특정 애플리케이션용 연산을 수행한다. 특정 애플리케이션용 연산 명령 실행부(54)는 이판독 결과를 범용 레지스터(34)에 기록한다.
명령 실행 완료후, 특정 애플리케이션용 연산 명령 실행부(54)는 명령 실행 완료에 이어 사용될 수 있는 연산 유닛 플래그 및 레지스터를 스코어 보드(57)에 미사용 상태로 설정한다. 특정 애플리케이션용 연산 명령 실행부(54)는 특정 애플리케이션용 연산 실행중에 연산 예외를 검출하는 경우, 연산 예외 검출 플래그(61)를 유효 상태로 설정한다. 특정 애플리케이션용 연산 명령 실행부(54)는 명령 실행중에 인터럽션을 검출하는 경우, 인터럽션 검출을 인터럽션 제어부(4)에 통보한다.
플래그 제어부(55)는 연산 예외 검출 플래그(61)를 제어한다. 플래그 제어부(55)는 명령 디코드부(51)로부터 연산 예외 검출 플래그 무효화 명령을 수신하는 경우, 연산 예외 검출 플래그(61)를 무효 상태로 설정한다. 플래그 제어부(55)가 명령 디코드부(51)로부터 연산 예외 검출 플래그 판독 명령을 수신하는 경우, 연산 예외 검출 플래그(61)의 값을 판독한다. 플래그 제어부(55)는 명령 디코드부(51)로부터 연산 예외 검출 플래그 기록 명령을 수신하는 경우, 그 값을 연산 예외 검출 플래그(61)에 기록한다.
게다가, 플래그 제어부(55)는 연산 예외 검출 플래그(61)가 유효 상태로 설정되어 있는 경우, 인터럽션을 발생시키는 트랩 명령을 실행시킨다. 플래그 제어부(55)는 트랩 명령 실행중 연산 예외 검출 플래그(61)의 값을 판독한다. 특정 애플리케이션용 연산 명령의 연산 예외로 인한 인터럽션이 발생될 경우, 플래그 제어부(55)는 인터럽션 발생을 인터럽션 제어부(4)에 통보한다.
분기/인터럽션 복귀 명령 제어부(56)는 기타 명령들을 실행한다. 분기 명령이 명령 디코드부(51)로부터 분기/인터럽션 복귀 명령 제어부(56)에 공급되는 경우, 분기/인터럽션 복귀 명령 제어부(56)는 이 명령의 유효 여부에 관한 정보를 분기/인터럽션 복귀 명령 발행 제어부(60)로부터 수신한다. 분기 명령이 유효할 경우, 분기/인터럽션 복귀 명령 제어부(56)는 명령 판독부(2)에 분기 목적지 어드레스를 공급한다.
명령 디코드부(51)로부터 인터럽션 복귀 명령이 분기/인터럽션 복귀 명령 제어부(56)로 공급될 경우, 분기/인터럽션 복귀 명령 제어부(56)는 인터럽션 발생전 연산 레지스터(32)의 값을 연산 레지스터(33)에 기록한다. 게다가, 분기/인터럽션 복귀 명령 제어부(56)는 복귀 명령 어드레스 레지스터(31)를 판독하여, 이 판독 결과를 분기 목적지 어드레스로서 명령 판독부(2)에 공급한다. 명령 완료후, 분기/인터럽션 복귀 명령 제어부(56)는 명령 실행 완료에 이어 사용될 수 있는 연산 유닛의 플래그 및 레지스터를 스코어 보드(47)에 미사용 상태로 설정한다.
스코어 보드(57)은 각각의 레지스터 번호가 사용중인지의 여부에 관한 상태를 나타내는 플래그와, 복수개의 사이클을 차지하기 위해 필요한 연산 유닛이 사용중인지의 여부에 대한 상태를 나타내는 플래그를 홀드한다. 이들 플래그가 미사용 상태에 있다는 것은 그 명령을 실행할 수 있음을 의미한다. 이들 플래그가 사용 상태에 있다는 것은 그 명령 실행이 불가능하고, 현재 실행되고 있는 명령 실행의 완료를 기다려야 하는 것을 의미한다.
로드/저장 명령 발행 제어부(58)는 명령 디코드부(51)로부터 로드 명령 또는 저장 명령을 수신하는 경우, 스코어 보드(57)의 각 플래그를 판독한다. 이 판독 결과에 기초하여, 로드/저장 명령 발행 제어부(58)은 명령 실행 가능성의 여부를 로드/저장 명령 실행부(52)에 통보한다. 동시에, 로드/저장 명령 발행 제어부(58)는 명령 실행에 필요한 연산 유닛의 플래그와 레지스터를 스코어 보드(57)에 사용 상태로 설정한다.
연산 명령 발행 제어부(59)는 명령 디코드부(51)로부터 연산 명령을 수신하는 경우, 스코어 보드(57)의 각 플래그를 판독한다. 이 판독 결과에 기초하여, 연산 명령 발행 제어부(59)은 명령 실행 가능성의 여부를 연산 명령 실행부(53)에 통보한다. 동시에, 연산 명령 발행 제어부(59)는 명령 실행에 필요한 연산 유닛의 플래그와 레지스터를 스코어 보드(57)에 사용 상태로 설정한다.
분기/인터럽션 복귀 명령 발행 제어부(60)는 명령 디코드부(51)로부터 분기 명령 또는 인터럽션 명령을 수신하는 경우, 스코어 보드(57)의 각 플래그를 판독한다. 이 판독 결과에 기초하여, 분기/인터럽션 명령 발행 제어부(60)는 명령 실행 가능성의 여부를 분기/인터럽션 복귀 명령 실행부(52)에 통보한다. 동시에, 분기/인터럽션 명령 발행 제어부(60)는 명령 실행에 필요한 연산 유닛의 플래그와 레지스터를 스코어 보드(57)에 사용 상태로 설정한다.
연산 예외 검출 플래그(61)는 특정 애플리케이션용 연산 명령 실행중에 연산 예외 존재여부를 나타내는 플래그이다. 특정 애플리케이션용 연산 명령의 연산 예외가 검출되지 않으면, 연산 예외 검출 플래그(61)는 무효 상태가 된다. 한편, 특정 애플리케이션용 연산 명령의 연산 예외가 검출되는 경우 연산 예외 검출 플래그(61)는 유효 상태가 된다.
레지스터 제어부(3)에 대해서는 다음에 상세히 설명한다. 복귀 명령 어드레스 레지스터(31)는 인터럽션으로부터 복귀하기 위한 명령 어드레스를 홀드한다. 인터럽션 발생전 연산 레지스터(32)는 인터럽션 발생전의 프로세서의 동작 상태를 홀드한다. 복귀 명령 어드레스 레지스터(31) 및 인터럽션 발생전 연산 레지스터(32)는 인터럽션 발생시에 설정된다. 연산 레지스터(33)는 프로세서의 동작 상태를 홀드하는 레지스터이다.
인터럽션 제어부(4)에 있어서, 통상의 인터럽션 제어부(41)는 인터럽션 판독부(2) 또는 명령 실행부(5)로부터 수신된 인터럽션 발생 통보에 기초하여, 인터럽션으로부터 복귀하기 위한 명령 어드레스를 복귀 명령 어드레스 레지스터(31)에 기록한다. 통상의 인터럽션 제어부(41)는 인터럽션 발생전에 프로세서의 상태를 인터럽션 발생전 연산 레지스터(32)에 기록한다. 또한, 통상의 인터럽션 제어부(41)는 발생된 인터럽션에 해당하는 프로세서의 상태를 연산 레지스터(33)에 기록한다. 통상의 인터립션 제어부(41)는 발생된 인터럽션에 해당하는 분기 목적지 어드레스를 명령 판독부(2)에 공급한다.
제6 실시예의 정보 처리 장치에 있어서, 특정 애플리케이션용 연산 명령의 연산 예외를 인한 인터럽션은 다음과 같이 수행된다. 특정 애플리케이션용 연산 명령 실행부(54)가 특정 애플리케이션용 연산 명령 실행중에 연산 예외를 검출할 경우, 특정 애플리케이션용 연산 명령 실행부(54)는 연산 예외 검출 플래그(61)를 유효 상태로 설정한다. 특정 애플리케이션용 연산 명령의 연산 예외의 존재 여부의 확인이 필요할 경우, 트랩 명령이 실행된다. 플래그 제어부(55)는 트랩 명령 실행중에 연산 예외 검출 플래그(61)를 참조한다. 참조 결과로서, 연산 예외 검출 플래그(61)가 유효 상태로 설정되어 있다면, 플래그 제어부(55)는 인터럽션 발생을 연산 예외 제어부(4)에 통보하고, 인터럽션을 발생시킨다. 제6 실시예의 정보 처리 장치에 있어서, 그외 연산들은 종래의 정보 처리 장치의 연산과 동일하므로, 그에 대한 설명은 생략한다.
상술한 제6 실시예에 따르면, 특정 애플리케이션용 연산 명령 실행중에 연산 예외가 검출된 경우, 연산 예외 검출 플래그(61)는 유효 상태로 설정된다. 특정 애플리케이션용 연산 명령의 연산 예외의 존재 여부 확인이 필요할 경우, 트랩 명령이 실행된다. 연산 예외 검출 플래그(61)가 유효 상태로 설정되어 있는 경우, 인터럽션이 발생한다. 따라서, 종래적 방법과 달리, 각각의 특정 애플리케이션용 연산 명령의 연산 예외로 인한 제어 의존성의 발생 가능성의 존재 여부를 확인하는 특정 애플리케이션용 연산 명령 발행 제어 회로를 각 특정 애플리케이션용 연산 명령에 대해 설치할 필요가 없다. 따라서, 특정 애플리케이션용 연산 명령이 많을 지라도 회로 스케일 증가를 최소화할 수 있다. 게다가, 회로 스케일 증가를 억제하면서, 특정 애플리케이션용 연산 명령의 수는 증가시킬 수 있다.
또한, 제6 실시예에 따르면, 연산 예외 검출 플래그(61)가 특정 애플리케이션용 연산 명령 실행중에 연산 예외 검출로 인해 유효 상태로 설정될지라도, 트랩 명령이 실행되지 않는 한, 각 특정 애플리케이션용 연산 명령의 연산 예외로 인한 제어 의존성의 발생 가능성의 여부를 매번 확인할 필요가 없다. 따라서, 처리 속도가 종래의 처리 속도보다 향상될 수 있는 효과가 있다.
그 응용이 특정하게 제한적이지는 않지만, 제6 실시예의 정보 처리 장치는 컴퓨터에 연결된 프린터의 이미지 처리를 수행하는 정보 처리 장치에도 적용될 수 있다. 또한 이 정보 처리 장치는 JPEG 및 MPEG 등의 이미지 데이터의 압축 또는 재생을 수행하는 정보 처리 장치에도 적용될 수 있다.
도 30은 본 발명의 제7 실시예에 관한 정보 처리 장치의 구조를 도시하는 블록도이다. 제7 실시예의 정보 처리 장치는 제6 실시예의 명령 실행부(5) 대신에 명령 실행부(7)가 설치된다는 점에서, 제6 실시예의 정보 처리 장치와 다르다. 명령 실행부(7)는 조건 코드 레지스터(71)를 구비한다. 이 제7 실시예에 있어서, 인터럽션이 조건 코드 레지스터(71)에 홀드된 값과 명령 필드에 나타난 값에 기초해서 발생하는지의 여부를 결정하는데 트랩 명령이 제공된다.
게다가, 명령 실행부(7)는 연산 명령 실행부(53), 특정 애플리케이션용 연산 명령 실행부(54), 플래그 제어부(55) 및 분기/인터럽션 복귀 명령 제어부(56) 대신에, 각각 연산 명령 실행부(73), 특정 애플리케이션용 연산 명령 실행부(74), 제어부(75) 및 분기/인터럽션 복귀 명령 제어부(76)를 구비한다. 그외 구조는 제6 실시예와 유사하다. 제6 실시예와 유사한 장치는 동일한 도면 부호를 사용하고, 그에 대한 설명은 생략한다. 단지 상이한 구조 일부만 이하에 설명한다.
조건 코드 레지스터(71)는 연산 명령 실행 후에 연산 명령 실행부(73)로부터 통보된 조건 코드를 홀드한다. 조건 레지스터(71)는 또한 조건 코드 레지스터 세트 명령의 실행중에 플래그 제어부(75)로부터 통보된 조건 코드를 홀드한다.
연산 명령이 연산 디코드(51)로부터 연산 명령 실행부(73)에 공급되는 경우, 연산 명령 실행부(73)는 이 명령의 유효성에 관한 정보를 연산 명령 발행 제어부(59)로부터 수신한다. 연산 명령이 유효할 경우, 연산 명령 실행부(73)는 범용 레지스터(34)로부터 판독된 값에 기초하여 연산을 수행한다. 그리고 연산 명령 실행부(73)는 이 연산 결과를 범용 레지스터(34)에 기록한다.
명령 실행 완료 후, 연산 명령 실행부(73)는 연산 실행 완료에 이어 사용될 수 있는 연산 유닛의 플래그 및 레지스터를 스코어 보드(57)에 미사용 상태로 설정한다. 또한, 명령 실행 완료 후, 연산 명령 실행부(73)는 명령 실행 결과에 해당하는 값을 조건 코드 레지스터(71)에 설정한다.
특정 애플리케이션용 연산 명령 실행부(74)는 특정 애플리케이션용 연산 명령을 실행하는 실행부이다. 특정 애플리케이션용 연산 명령이 명령 디코드부(51)로부터 특정 애플리케이션용 연산 명령 실행부(74)에 공급되는 경우, 이 명령이 실행 가능하다면 이 명령을 시작하기 전, 특정 애플리케이션용 연산 명령 실행부(74)는 명령 실행중에 사용된 레지스터와 플래그를 스코어 보드(47)에 설정한다. 이어서, 특정 애플리케이션용 연산 명령 실행부(74)는 범용 레지스터(34)로부터 판독된 값에 기초하여 특정 애플리케이션용 연산을 수행한다. 특정 애플리케이션용 연산 실행부(74)는 이 판독 결과를 범용 레지스터(34)에 기록한다.
명령 실행 완료 후, 특정 애플리케이션용 연산 명령 실행부(74)는 명령 실행 완료에 이어 사용될 수 있는 연산 유닛의 플래그 및 레지스터를 스코어 보드(57)에 미사용 상태로 설정한다. 특정 애플리케이션용 연산 명령 실행부(74)는 특정 애플리케이션용 연산 명령 실행중에 연산 예외를 검출하는 경우, 연산 예외 검출 플래그(61)를 유효 상태로 설정한다. 특정 애플리케이션용 연산 명령 실행부(74)는 명령 실행중에 인터럽션을 검출하는 경우, 인터럽션 검출을 인터럽션 제어부(4)에 통보한다.
플래그 제어부(75)는 연산 예외 검출 플래그(61)를 제어한다. 플래그 제어부(75)는 명령 디코드부(51)로부터 연산 예외 검출 플래그 무효화 명령을 수신하는 경우, 연산 예외 검출 플래그(61)를 무효 상태로 설정한다. 플래그 제어부(75)는 명령 디코드부(51)로부터 연산 예외 검출 플래그 판독 명령을 수신하는 경우, 연산 예외 검출 플래그(61)의 값을 판독한다.
플래그 제어부(75)는 명령 디코드부(51)로부터 연산 예외 검출 플래그 기록 명령을 수신하는 경우, 그 값을 연산 예외 검출 플래그(61)에 기록한다. 또한, 플래그 제어부(75)는 명령 디코드부(51)로부터 조건 코드 레지스터 세트 명령을 수신하는 경우, 연산 예외 검출 플래그(61)로부터 통보된 값에 기초하여 조건 코드를 조건 코드 레지스터(71)에 통보한다.
분기/인터럽션 복귀 명령 제어부(76)는 기타 명령들을 수행한다. 분기 명령이 명령 디코드부(51)로부터 분기/인터럽션 복귀 명령 제어부(76)에 공급되는 경우, 분기/인터럽션 복귀 명령 제어부(76)는 이 명령의 유효성에 대한 정보를 분기/인터럽션 복귀 명령 발행 제어부로부터 수신한다. 분기 명령이 유효하다면, 분기/인터럽션 복귀 명령 제어부(76)는 분기 목적지 어드레스를 명령 판독부(2)에 공급한다.
인터럽션 복귀 명령이 명령 디코드부(51)로부터 분기/인터럽션 복귀 명령 제어부(76)에 공급되는 경우, 분기/인터럽션 복귀 명령 제어부(76)는 인터럽션 발생전 연산 레지스터(32)의 값을 연산 레지스터(33)에 기록한다. 또한, 분기/인터럽션 복귀 명령 제어부(76)는 복귀 명령 어드레스 레지스터(31)를 판독하고, 그 판독 결과를 분기 목적지 어드레스로서 명령 판독부(2)에 공급한다.
트랩 명령이 명령 디코드부(51)로부터 분기/명령 복귀 명령 제어부(76)에 공급되는 경우, 분기/명령 복귀 명령 제어부(76)는 조건 코드 레지스터(71)에 홀드된 값과 명령 필드에 나타난 값에 기초하여, 명령의 발생 여부를 결정한다. 인터럽션이 발생하면, 분기/명령 복귀 명령 제어부(76)는 인터럽션 발생을 인터럽션 제어부(4)에 통보한다. 명령 실행이 완료된 후, 분기/명령 복귀 명령 제어부(76)는 명령 실행 완료에 이어 사용될 수 있는 연산 유닛의 플래그 및 레지스터를 스코어 보드(57)에 미사용 상태로 설정한다.
제7 실시예의 정보 처리 장치에서는 특정 애플리케이션용 연산 명령의 연산 예외로 인한 인터럽션을 다음과 같이 수행한다. 특정 애플리케이션용 연산 명령 실행부(74)가 특정 애플리케이션용 연산 명령 실행중에 연산 예외를 검출하는 경우, 특정 애플리케이션용 연산 명령 실행부(74)는 연산 예외 검출 플래그(61)를 유효 상태로 설정한다. 플래그 제어부(75)는 조건 코드 레지스터 세트 명령 실행시에 연산 예외 검출 플래그(61)의 값에 기초하여, 조건 코드 레지스터(71)를 설정한다.
특정 애플리케이션용 연산 명령의 연산 예외의 존재 여부를 확인할 필요가 있을 경우, 트랩 명령이 실행된다. 분기/인터럽션 복귀 명령 제어부(76)는 트랩 명령 실행중에 조건 코드 레지스터(71)의 값을 참조한다. 명령 필드의 값과, 조건 코드 레지스터(71)의 값에 기초하여 인터럽션의 발생 여부가 결정된다. 인터럽션이 발생될 경우, 분기/인터럽션 복귀 명령 제어부(76)는 인터럽션 발생을 인터럽션 제어부(4)에 통보하고, 이어서 인터럽션을 발생시킨다. 제7 실시예의 정보 처리 장치의 기타 연산은 종래적 정보 처리 장치와 동일하므로, 그에 설명은 생략한다.
상술한 제7 실시예에 따르면, 특정 애플리케이션용 연산 명령 실행중에 연산 예외가 검출되는 경우, 연산 예외 검출 플래그(61)는 유효 상태로 설정된다. 조건 코드 레지스터는 연산 예외 검출 플래그의 연산 값에 기초하여 설정된다. 특정 애플리케이션용 연산 명령의 연산 예외의 존재 여부를 확인할 필요가 있을 경우, 트랩 명령이 실행된다. 인터럽션은 명령 필드의 값과 조건 코드 레지스터(71)의 값에 기초하여 발생된다. 그러므로, 종래적 방법과 달리, 각각의 특정 애플리케이션용 연산 명령에 대하여 특정 애플리케이션용 연산 명령 발행 제어 회로를 설치할 필요가 없다. 특정 애플리케이션용 연산 명령이 다수 개일지라도 회로 스케일의 증가를 최소화할 수 있다. 게다가, 회로 스케일의 증가를 억제하면서, 특정 애플리케이션용 연산 명령수를 증가시킬 수 있다.
제6 실시예와 동일한 방식으로, 제7 실시예의 정보 처리 장치는 프린터의 이미지 처리를 수행하는 정보 처리 장치에 적용될 수 있다. 이 정보 처리 장치는 또한 JPEG 및 MPEG 등의 이미지 데이터를 압축 또는 재생하는 정보 처리 장치에도 적용될 수 있다.
본 발명은 이상의 실시예에 제한되지 않는 것은 당연하며, 본발명의 요지내에서 발명의 설계를 다양하게 변형할 수 있다.
상술한 바와 같이, 본 발명에 따르면, 기능적 명세를 규정하지 않는 연산 명령이 프로세서 코어 제어부에 특정 애플리케이션용 연산 명령으로서 제공되고, 특정 애플리케이션를 위한 연산 유닛이 이 프로세서 코어 내에 설치되는 정보 처리 장치를 제공한다. 이 특정 애플리케이션용 명령 연산 유닛은 각 응용 분야마다 개별적으로 설계된다. 그러므로, 각 응용 분야에 적합한 특정 애플리케이션용 연산 유닛의 설계에 기초하여, 프로세서 코어의 제어부에 대한 기본 설계를 바꾸지 않고도, 특정 애플리케이션 정보 처리 장치를 저가로 용이하게 설계할 수 있다.
또한, 본 발명에 따르면, 특정 애플리케이션용 연산 명령을 갖는 정보 처리 장치에 있어서, 스텝 중지, 소프트웨어 중지 또는 명령 중지가 발생하는 경우, 특정 애플리케이션용 연산 명령으로 인한 오버플로우 등의 연산 예외 발생을 검출할 수 있으며, 예외 처리를 수행할 수 있다. 그러므로, 디버깅에 소요되는 작업 및 시간을 절약할 수 있다. 결과적으로, 프로그램 개발에 필요한 시간을 감소시킬 수 있다.
게다가, 본 발명에 따르면, 연산 예외가 특정 애플리케이션용 연산 명령의 실행중에 검출되는 경우, 연산 예외 검출 플래그는 유효 상태로 설정된다. 이 상태에서, 특정 애플리케이션용 연산 명령의 연산 예외의 존재 여부를 확인하기 위한 트랩 명령이 실행될 경우, 인터럽션이 발생한다. 이에, 종래의 방법과 달리, 각각의 특정 애플리케이션용 연산 명령의 연산 예외로 인한 제어 의존성에 대한 가능성 발생의 여부를 확인하기 위해 특정 애플리케이션용 연산 명령 발행 제어 회로를 각 특정 애플리케이션용 연산 명령에 대해 제공할 필요가 없다. 따라서, 특정 애플리케이션용 연산 명령이 많을 지라도 회로 스케일 증가를 최소화 수 있다. 게다가, 회로 스케일 증가를 억제하면서, 특정 애플리케이션용 연산 명령의 수는 증가시킬 수 있다.
비록 본 발명이 완성적이며, 분명한 설명을 위해 특정의 실시예에 대해 설명하였지만, 첨부되는 청구범위는 따라서 제한용이라기 보다는 본 명세서에서 설명된 기본적인 내용을 완전히 이해하는 당업자로 하여금 모든 개선 및 대안적 구성을 구현함으로써 구성되기 위해서다.
본 발명에 따르면, 기능적 명세를 규정하지 않는 연산 명령이 프로세서 코어 제어부에 특정 애플리케이션용 연산 명령으로서 제공되고, 특정 애플리케이션를 위한 연산 유닛이 이 프로세서 코어 내에 설치되는 정보 처리 장치를 제공한다. 이 특정 애플리케이션용 명령 연산 유닛은 각 응용 분야마다 개별적으로 설계된다. 그러므로, 각 응용 분야에 적합한 특정 애플리케이션용 연산 유닛의 설계에 따라, 프로세서 코어의 제어부에 대한 기본 설계를 바꾸지 않고도, 특정 애플리케이션 정보 처리 장치를 저가로 용이하게 설계할 수 있다.
또한, 본 발명에 따르면, 특정 애플리케이션용 연산 명령을 갖는 정보 처리 장치에 있어서, 스텝 중지, 소프트웨어 중지 또는 명령 중지가 발생하는 경우, 특정 애플리케이션용 연산 명령으로 인한 오버플로우 등의 연산 예외 발생을 검출할 수 있으며, 예외 처리를 수행할 수 있다. 그러므로, 디버깅에 소요되는 작업 및 시간을 절약할 수 있다. 결과적으로, 프로그램 개발에 필요한 시간을 감소시킬 수 있다.
게다가, 본 발명에 따르면, 연산 예외가 특정 애플리케이션용 연산 명령의 실행중에 검출되는 경우, 연산 예외 검출 플래그는 유효 상태로 설정된다. 이 상태에서, 특정 애플리케이션용 연산 명령의 연산 예외의 존재 여부를 확인하기 위한 트랩 명령이 실행될 경우, 인터럽션이 발생한다. 이에, 종래 방법과 달리, 각각의 특정 애플리케이션용 연산 명령의 연산 예외로 인한 제어 의존성에 대한 가능성 발생의 여부를 확인하기 위해 특정 애플리케이션용 연산 명령 발행 제어 회로를 각 특정 애플리케이션용 연산 명령에 대해 제공할 필요가 없다. 따라서, 특정 애플리케이션용 연산 명령이 많을 지라도 회로 스케일 증가를 최소화 수 있다. 게다가, 회로 스케일 증가를 억제하면서, 특정 애플리케이션용 연산 명령의 수는 증가시킬 수 있다.

Claims (30)

  1. 특정 애플리케이션용 연산 명령으로서, 기능적 명세(functional specification)를 갖지 않는, 연산 명령을 처리하는 제어 유닛과,
    플렉시블 파이프라인(flexible pipeline) 구조를 지원하고, 각 애플리케이션 분야를 위한 상기 특정 애플리케이션용 연산 명령의 연산을 수행하는 특정 애플리케이션용 명령 연산 유닛과,
    상기 특정 애플리케이션용 명령 연산 유닛에 명령이 발행될 때부터 상기 명령의 실행에 의해 얻어진 결과를 사용할 수 있게 될 때까지의 사이클의 수를 규정하는 재기록 가능한 레지스터와,
    상기 재기록 가능한 레지스터가 상기 특정 애플리케이션용 명령 연산 유닛에 명령이 발행될 때부터 그 직후의 후속 명령을 발행할 수 있게 될 때까지의 사이클의 수 또한 규정하는지 여부를 표시하는 플래그
    를 포함하는 정보 처리 장치.
  2. 제1항에 있어서, 상기 특정 애플리케이션용 명령 연산 유닛은 IP로서 내장되는 것인 정보 처리 장치.
  3. 제1항에 있어서, 상기 플래그가 상기 재기록가능한 레지스터가 상기 특정 애플리케이션용 명령 연산 유닛에 명령이 발행될 때부터 그 직후의 후속 명령을 발행할 수 있게 될 때까지의 사이클의 수 또한 규정하는 것으로 표시할 때, 상기 재기록가능한 레지스터에 의해 규정되는 사이클의 수는 동일한 후속 명령들의 발행을 제어하는 데 사용되는 것인 정보 처리 장치.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 제1 명령과 제2 명령을 포함하는 프로그램을 실행하고, 상기 제2 명령에 의해 발생된 인터럽션 후에 그리고 인터럽트 처리의 실행 전에, 상기 제1 명령의 실행 동안에 발생하였던 예외에 대한 예외 처리를 수행하는 프로세서를 위한 예외 처리 방법으로서, 상기 제1 명령은 특정 애플리케이션용 연산 명령인 것인 예외 처리 방법에 있어서,
    상기 예외가 상기 제1 명령의 실행 동안에 발생할 때, 레지스터 또는 플래그 내에서 상기 예외의 발생을 표시하는 값을 설정하는 단계와,
    상기 제2 명령에 의해 상기 인터럽션이 발생될 때, 상기 레지스터 또는 상기 플래그를 판독하여, 상기 예외가 발생하였는지 여부를 판정하는 단계와,
    상기 예외가 발생하였을 때, 상기 예외 처리를 수행하는 단계와,
    상기 인터럽션으로부터 복귀하기 위해 상기 인터럽트 처리를 수행하는 단계
    를 포함하는 예외 처리 방법.
  12. 제11항에 있어서, 상기 예외 처리의 실행 전에, 상기 프로세서에게 상기 예외 처리를 수행하는지 여부를 표시하는 연산 모드를 저장하는 제2 레지스터 또는 제2 플래그를 판독하여, 상기 예외 처리를 수행하는지 여부를 결정하는 단계를더 포함하는 것인 예외 처리 방법.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 특정 애플리케이션용 연산 명령 및 상기 특정 애플리케이션용 연산 명령에 후속하는 트랩 명령(trap instruction)을 포함하는 프로그램을 실행하는 정보 처리 장치로서,
    연산 예외 검출 플래그와,
    상기 특정 애플리케이션용 연산 명령의 실행 동안에 연산 예외가 검출된 경우, 상기 연산 예외 검출 플래그를 유효화하는 특정 애플리케이션용 연산 명령 실행 유닛과,
    연산 예외 검출 플래그 무효화 명령을 수신한 경우에 상기 연산 예외 검출 플래그를 무효화하는 플래그 제어 유닛과,
    상기 연산 예외 검출 플래그가 유효화됨과 함께 상기 트랩 명령이 실행되는 경우에 상기 연산 예외를 위한 인터럽션 처리를 수행하는 인터럽션 제어 유닛
    을 포함하는 정보 처리 장치.
  21. 제20항에 있어서, 상기 플래그 제어 유닛은 연산 예외 검출 플래그 판독 명령을 수신한 때, 상기 연산 예외 검출로부터 값을 판독하는 것인 정보 처리 장치.
  22. 제20항에 있어서, 상기 플래그 제어 유닛은 연산 예외 검출 플래그 기록 명령을 수신한 경우에 상기 연산 예외 검출 플래그에 값을 기록하는 것인 정보 처리 장치.
  23. 삭제
  24. 제20항에 있어서, 상기 연산 예외 검출 플래그에 기초하여 설정되는 조건 코드 레지스터(condition code register)와,
    상기 조건 코드 레지스터에 설정된 값에 기초하여 상기 인터럽션 제어 유닛이 상기 인터럽션 처리를 수행하도록 할지 여부를 결정하는 분기/인터럽션 복귀 명령 제어 유닛을 더 포함하는 것인 정보 처리 장치.
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020010003129A 2000-03-16 2001-01-19 정보 처리 유닛 및 특정 애플리케이션용 연산 명령에 대한 예외 처리 방법 KR100781949B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2000-074847 2000-03-16
JP2000074847A JP3980243B2 (ja) 2000-03-16 2000-03-16 情報処理装置
JP2000-094476 2000-03-30
JP2000094476A JP3715505B2 (ja) 2000-03-30 2000-03-30 特定用途向け演算命令を有する計算機およびその計算機の計算方法
JP2000234490A JP3866023B2 (ja) 2000-08-02 2000-08-02 情報処理装置および特定用途演算命令の例外処理方法
JP2000-234490 2000-08-02

Publications (2)

Publication Number Publication Date
KR20010096557A KR20010096557A (ko) 2001-11-07
KR100781949B1 true KR100781949B1 (ko) 2007-12-05

Family

ID=27342701

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010003129A KR100781949B1 (ko) 2000-03-16 2001-01-19 정보 처리 유닛 및 특정 애플리케이션용 연산 명령에 대한 예외 처리 방법

Country Status (3)

Country Link
US (1) US7376820B2 (ko)
EP (2) EP1134655A3 (ko)
KR (1) KR100781949B1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6968447B1 (en) 2001-04-13 2005-11-22 The United States Of America As Represented By The Secretary Of The Navy System and method for data forwarding in a programmable multiple network processor environment
US6950927B1 (en) 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
US7200738B2 (en) 2002-04-18 2007-04-03 Micron Technology, Inc. Reducing data hazards in pipelined processors to provide high processor utilization
US7760968B2 (en) 2004-01-16 2010-07-20 Nvidia Corporation Video image processing with processing time allocation
US7653265B2 (en) 2004-01-16 2010-01-26 Nvidia Corporation Video image processing with utility processing stage
US9292904B2 (en) * 2004-01-16 2016-03-22 Nvidia Corporation Video image processing with parallel processing
JP2006215611A (ja) * 2005-02-01 2006-08-17 Sony Corp 演算装置
US8510596B1 (en) * 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US8719807B2 (en) 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
US20080281988A1 (en) * 2007-05-07 2008-11-13 Peck Jason P Apparatus and method for initating a debug halt for a selected architectural state
US8145819B2 (en) * 2007-06-04 2012-03-27 International Business Machines Corporation Method and system for stealing interrupt vectors
US9350386B2 (en) 2012-04-12 2016-05-24 Samsung Electronics Co., Ltd. Memory device, memory system, and method of operating the same
CN103294567B (zh) * 2013-05-31 2015-10-28 中国航天科技集团公司第九研究院第七七一研究所 一种单发射五级流水处理器的精确异常处理方法
US10079841B2 (en) 2013-09-12 2018-09-18 Virsec Systems, Inc. Automated runtime detection of malware
CN106687981B (zh) 2014-06-24 2020-09-01 弗塞克系统公司 用于自动化检测输入和输出验证和资源管理漏洞的系统和方法
CN104156195B (zh) * 2014-08-19 2016-08-24 中国航天科技集团公司第九研究院第七七一研究所 扩展双精度的80位浮点处理单元在处理器中的集成系统及方法
KR102419574B1 (ko) 2016-06-16 2022-07-11 버섹 시스템즈, 인코포레이션 컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021985A (en) * 1990-01-19 1991-06-04 Weitek Corporation Variable latency method and apparatus for floating-point coprocessor
EP0790552A2 (en) * 1995-08-04 1997-08-20 Nec Corporation Data processing apparatus for performing pipeline processing
US5794067A (en) * 1994-10-03 1998-08-11 Ricoh Company, Ltd. Digital signal processing device
KR19990016055A (ko) * 1997-08-12 1999-03-05 정선종 다수의 주프로세서 및 보조 프로세서를 갖는 프로세서의구조 및 보조 프로세서 공유 방법
US5961630A (en) * 1997-12-30 1999-10-05 Intel Corporation Method and apparatus for handling dynamic structural hazards and exceptions by using post-ready latency

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06100968B2 (ja) * 1986-03-25 1994-12-12 日本電気株式会社 情報処理装置
JPS6353669A (ja) * 1986-08-22 1988-03-07 Hitachi Micro Comput Eng Ltd マイクロプロセツサ
JPH01261741A (ja) 1988-04-13 1989-10-18 Mitsubishi Electric Corp Faコントローラ
JPH021084A (ja) 1989-04-24 1990-01-05 Kenwood Corp ワンチップマイクロコンピュータ
US5197138A (en) * 1989-12-26 1993-03-23 Digital Equipment Corporation Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
JP2987308B2 (ja) 1995-04-28 1999-12-06 松下電器産業株式会社 情報処理装置
US5603047A (en) 1995-10-06 1997-02-11 Lsi Logic Corporation Superscalar microprocessor architecture
EP0870226B1 (en) * 1995-10-06 2003-05-21 Patriot Scientific Corporation Risc microprocessor architecture
US5774724A (en) * 1995-11-20 1998-06-30 International Business Machines Coporation System and method for acquiring high granularity performance data in a computer system
JPH09292992A (ja) 1996-04-25 1997-11-11 Nec Eng Ltd 演算回路
JPH09288564A (ja) 1996-06-17 1997-11-04 Takeshi Sakamura データ処理装置
KR100321745B1 (ko) * 1998-06-29 2002-06-20 박종섭 외부메모리액세스를위한마이크로컨트롤러유닛
US6167479A (en) * 1998-08-03 2000-12-26 Unisys Corporation System and method for testing interrupt processing logic within an instruction processor
US6553513B1 (en) * 1999-02-19 2003-04-22 Texas Instruments Incorporated Emulation suspend mode with differing response to differing classes of interrupts

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021985A (en) * 1990-01-19 1991-06-04 Weitek Corporation Variable latency method and apparatus for floating-point coprocessor
US5794067A (en) * 1994-10-03 1998-08-11 Ricoh Company, Ltd. Digital signal processing device
EP0790552A2 (en) * 1995-08-04 1997-08-20 Nec Corporation Data processing apparatus for performing pipeline processing
KR19990016055A (ko) * 1997-08-12 1999-03-05 정선종 다수의 주프로세서 및 보조 프로세서를 갖는 프로세서의구조 및 보조 프로세서 공유 방법
US5961630A (en) * 1997-12-30 1999-10-05 Intel Corporation Method and apparatus for handling dynamic structural hazards and exceptions by using post-ready latency

Also Published As

Publication number Publication date
EP1134655A2 (en) 2001-09-19
KR20010096557A (ko) 2001-11-07
EP1134655A3 (en) 2003-09-10
US7376820B2 (en) 2008-05-20
US20010023479A1 (en) 2001-09-20
EP2144157A2 (en) 2010-01-13
EP2144157A3 (en) 2011-11-09

Similar Documents

Publication Publication Date Title
KR100781949B1 (ko) 정보 처리 유닛 및 특정 애플리케이션용 연산 명령에 대한 예외 처리 방법
US7047399B2 (en) Computer system and method for fetching, decoding and executing instructions
US5341482A (en) Method for synchronization of arithmetic exceptions in central processing units having pipelined execution units simultaneously executing instructions
US5968135A (en) Processing instructions up to load instruction after executing sync flag monitor instruction during plural processor shared memory store/load access synchronization
JP2937485B2 (ja) スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置
US6907517B2 (en) Interprocessor register succession method and device therefor
US5257354A (en) System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results
JP3304444B2 (ja) ベクトル処理装置
US6070218A (en) Interrupt capture and hold mechanism
US5634136A (en) Data processor and method of controlling the same
JP3146077B2 (ja) プロセッサ
EP0307448B1 (en) Apparatus and method for synchronization of arithmetic exceptions in parallel pipelined execution units
US10929137B2 (en) Arithmetic processing device and control method for arithmetic processing device
US7013256B2 (en) Computer system with debug facility
EP1050805B1 (en) Transfer of guard values in a computer system
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置
JPH06168263A (ja) ベクトル処理装置
JP2894438B2 (ja) パイプライン処理装置
JP3866023B2 (ja) 情報処理装置および特定用途演算命令の例外処理方法
JP2901573B2 (ja) スーパースカラー方式の情報処理装置
US5802346A (en) Method and system for minimizing the delay in executing branch-on-register instructions
JPH0279122A (ja) 浮動小数点演算機構
JPH07219771A (ja) 命令プロセッサ
JP2001154843A (ja) 情報処理装置、例外回復処理方法および記録媒体
JPH06295252A (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
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20121114

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20131031

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20141103

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee