KR101249693B1 - 서브루틴 복귀 메카니즘 선택 - Google Patents

서브루틴 복귀 메카니즘 선택 Download PDF

Info

Publication number
KR101249693B1
KR101249693B1 KR1020077022011A KR20077022011A KR101249693B1 KR 101249693 B1 KR101249693 B1 KR 101249693B1 KR 1020077022011 A KR1020077022011 A KR 1020077022011A KR 20077022011 A KR20077022011 A KR 20077022011A KR 101249693 B1 KR101249693 B1 KR 101249693B1
Authority
KR
South Korea
Prior art keywords
return
address
exception
instruction
response
Prior art date
Application number
KR1020077022011A
Other languages
English (en)
Other versions
KR20070121701A (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 KR20070121701A publication Critical patent/KR20070121701A/ko
Application granted granted Critical
Publication of KR101249693B1 publication Critical patent/KR101249693B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Abstract

서브루틴의 실행 후에, 입력 오퍼랜드로서 어드레스들을 갖는 복귀 명령어가 실행된다. 이러한 입력 오퍼랜드는, 일치를 검출하기 위해 하나 이상의 소정의 값과 비교되고, 그 복귀 명령어 응답은 일치가 검출되는지의 여부에 따라 선택된다. 그리고, 복귀 어드레스 값은, 예외 복귀 응답 또는 프로시저 복귀 응답 등의 서로 다른 복귀 명령어 응답을 요청하는데 사용될 수 있다. 상기 하나 이상의 소정의 어드레스는, 메모리 맵 내의 최상위의 메모리 어드레스들에 알맞게 할당되어도 된다.
데이터 처리장치, 서브루틴, 복귀, 명령어, 예외.

Description

서브루틴 복귀 메카니즘 선택{Selecting subroutine return mechanisms}
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 보다 구체적으로는, 본 발명은, 서브루틴으로부터 복귀(return)될 때 사용되는 서브루틴 복귀 메카니즘의 제어에 관한 것이다.
서브루틴을 지원하는 데이터 처리 시스템을 제공하는 것은 공지되어 있다. 일 형태의 서브루틴 실행은 통상의 프로그램 실행 중에 호출된 프로시저로부터 생긴 뒤 상기 서브루틴은 실행하고 그 서브루틴의 끝에서 프로시저 복귀 명령어를 실행하여 프로시저 호출 프로그램 명령어에 후속하는 프로그램 명령어로 프로그램 흐름의 방향을 바꾼다. 상기 처리 시스템의 동작 모드는, 전형적으로 상기 프로시저 호출에 의해 변경되지 않는다.
또한, (예외 핸들러 루틴 등의) 예외 처리 서브루틴은, 데이터 처리 시스템 내에서 지원되기도 하고 통상의 처리시에 일어나는 예외/인터럽트에 의해 기동된다. 이들은 예외 핸들링 서브루틴의 실행을 기동한다. 상기 예외 핸들링 서브루틴은 원래의 프로그램 명령어 흐름(예외, 이후의 명령어 또는 일부의 다른 포인트를 발생시킨 명령어임) 내에서의 적절한 포인트로의 복귀를 일으키는 예외 프로그램 명령어에서 끝난다. 상기 예외 핸들링 루틴과 관련하여, 예외가 일어난 포인트에서 시스템의 상태를 특징짓는 변수들을 저장한 후 이들 변수들을 복원하는 문맥 교환을 제공하여서 그 문맥을 상기 예외 복귀 명령어가 실행될 때 복원하는 것은 공지되어 있다. 스택 메모리로부터 문맥 변수들의 복원 또는 다른 문맥 복원 동작 등의 예외 복귀 명령어의 실행시의 작용은, 프로시저 복귀 명령어를 실행할 때의 작용과 서로 다르다. 그 2개의 서로 다른 타입의 작용을 일 서브루틴의 끝에서 적절하게 요청할 수 있도록, 예외 복귀 처리 또는 프로시저 복귀 처리를 각각 기동하는데 도움이 되는 별도의 복귀 명령어를 제공하는 것은 공지되어 있다.
이러한 공지된 구성의 결과는, 끝에서의 복귀 명령어가 서브루틴의 특징에 적합하도록 서브루틴 프로그램을 기록하는데 필요하다는 것이다. 이 때문에, 필요한 문맥이 실행될 때 복원하도록 적절한 예외 복귀 명령어를 사용하여 그 서브루틴을 종료하고, 그 복귀를 할 때 다른 동작이 수행되도록 예외 핸들링 서브루틴 등의 일부의 서브루틴 프로그램은수동 기록 또는 어셈블러 기록되는 것이 통상적이다. 이러한 수동 기록 또는 어셈블리 예외 핸들링 서브루틴의 기록에 대한 요구사항은, 이를테면 C와 같은 상위 컴퓨터 언어를 사용하여 예외 핸들링 코드 전체 및 다른 서브루틴을 기록하는 것을 방해하므로 단점이 된다.
DE-A-10252347에는, 프로시저 복귀의 복귀 어드레스가 복귀 스택을 사용하여 정확한지를 검사하여 정확하지 않은 경우 오류 핸들링 루틴을 호출하는 메카니즘이 개시되어 있다.
(발명의 요약)
일 국면에서 본 발명은, 프로그램 명령어로 규정된 데이터 처리 동작을 수행하는 장치를 제공하고, 이 장치는,
입력 오퍼랜드로서 어드레스를 갖는 복귀 명령어에 응답하여 상기 어드레스로 나타낸 프로그램 명령어의 실행에 대한 복귀를 기동하는 복귀 로직을 구비하고, 상기 복귀 로직은,
(i) 상기 어드레스가 하나 이상의 소정의 어드레스 값과 일치하지 않는 값을 갖는 경우, 상기 복귀 로직은, 프로시저 호출에 의한 복귀이고 하나 이상의 제 1 복귀 응답 동작을 포함한 프로시저 복귀 명령어 응답을 기동하여 제 1 복귀 상태를 산출하고,
(ii) 상기 어드레스가 하나 이상의 소정의 어드레스 값과 일치하는 값을 갖는 경우, 상기 복귀 로직은, 예외 호출에 의한 복귀이고 하나 이상의 제 2 복귀 응답 동작을 포함한 예외 복귀 명령어 응답을 기동하여 제 2 복귀 상태를 산출하고, 상기 하나 이상의 제 2 복귀 명령어 응답 동작은 상기 하나 이상의 제 1 복귀 명령어 응답 동작과 서로 다르다.
본 발명에 의해 인식된 것은, 복귀 명령어에 대한 입력 오퍼랜드인 어드레스 값 내에서 상이한 형태의 복귀 응답 동작을 구별하여도 된다는 것이다. 그래서, 하드웨어는, 하나 이상의 소정의 어드레스 값과 일치하는 어드레스 값을 검출하고 이 검출에 따라 수행되는 상기 복귀 명령어 응답 동작을 적절하게 선택하여도 된다. 이것에 의해 그 복귀 명령어가 사용 가능하게 되고, 데이터 값에 따라 또 명령어 인코딩의 어떠한 변경도 없이 복귀 명령어 응답 동작의 서로 다른 형태를 요청 가능하게 된다. 그래서, 복귀 명령어에 대한 입력 오퍼랜드로서 상기 어드레스(이를테면 서브루틴용 복귀 어드레스)를 제공하기 위해서 상기 하나 이상의 소정의 어드레스와 연관된 복귀 명령어 응답 동작의 형태를 필요로 하는 그 명령어를 정렬함으로써, 그 필요한 복귀 명령어 응답 동작이 요청될 수 있다. 어드레스 값을 프로그램 카운터 레지스터에 되돌아가서 로딩하는 프로시저 복귀 응답과, 스택 메모리 내에 저장된 복귀 어드레스가 프로그램 카운터 레지스터에 재로딩되고 문맥이 복원되는 예외 복귀 응답을 구별하는데 특히 유용하다.
본 기술은 사용되는 복귀 명령어를 표준화하여서 보다 상위 언어가 서브루틴 코드 기록 시에 균일하게 이용 가능하게 되고, 대신에 필요한 경우 복귀 명령어 응답 동작의 서로 다른 형태를 기동할 상기 하나 이상의 소정의 값을 위해 메모리 맵의 작은 영역이 전용으로 사용된다. 데이터 처리 시스템에서는, 통상의 실행 가능한 코드에 대해 사용될 수 없는 전용 메모리 영역을 제공하는 것이 공지되어서, 이들의 기존의 메모리 영역 내에서의 상기 하나 이상의 소정의 값을 제공하는 것은 기존의 시스템 설계에 있어서 중요한 타협 또는 제한을 나타내지 않는다.
삭제
검출되는 하나 이상의 소정의 어드레스 값은, 상기 하나 이상의 제 2 복귀 명령어 응답 동작에 의해 복원되는 상기 시스템의 상태 변수들을 효과적으로 인코딩하는데 사용되어도 된다. 상기 제 2 복귀 명령어 응답 동작을 기동하는데 사용된 소정의 어드레스 값들의 범위는, 복원되는 상태 변수들을 인코딩하여서 상태 변수 저장 메카니즘의 한계를 극복하고 그 시스템 내의 어느 곳에서나 제공된 자원들을 복원할 수 있는 추가의 비트 공간을 제공한다.
시스템이 단일 타입의 복귀 명령어와 연관된 어드레스에 의존하여 복귀 명령어 응답이 서로 다르게 되는 단일 타입의 복귀 명령어를 제공하지만, 본 기술의 바람직한 실시예들은 본 기술을 사용하여 변경되는 다수의 형태의 복귀 명령어를 제공하여서 그 복귀 명령어 응답은 상기 관련된 복귀 명령어에 대한 입력 오퍼랜드로 서 제공된 어드레스와 하나 이상의 소정의 어드레스 값간의 일치 검출에 의해 제어된다는 것을 알 것이다.
다른 국면에서 본 발명은, 프로그램 명령어로 규정된 데이터 처리 동작을 수행하는 방법을 제공하고, 이 방법은,
입력 오퍼랜드로서 어드레스를 갖는 복귀 명령어에 응답하여, 상기 어드레스로 나타낸 프로그램 명령어의 실행에 대한 복귀를 기동하는 단계를 포함하고, 상기 단계는,
(i) 상기 어드레스가 하나 이상의 소정의 어드레스 값과 일치하지 않는 값을 갖는 경우, 하나 이상의 제 1 복귀 응답 동작을 포함하되 프로시저 호출에 의한 복귀인 프로시저 복귀 명령어 응답을 기동하여 제 1 복귀 상태를 산출하는 단계와,
(ii) 상기 어드레스가 하나 이상의 소정의 어드레스 값과 일치하는 값을 갖는 경우, 하나 이상의 제 2 복귀 응답 동작을 포함하되 예외 호출에 의한 복귀인 예외 복귀 명령어 응답을 기동하여 제 2 복귀 상태를 산출하는 단계를 갖고, 상기 하나 이상의 제 2 복귀 명령어 응답 동작은 상기 하나 이상의 제 1 복귀 명령어 응답 동작과 서로 다르다.
또한, 본 발명은, 상기 기재된 기술들에 따라 데이터 처리장치를 제어할 수 있는 컴퓨터 프로그램을 갖는 컴퓨터 프로그램 제품을 제공하는 것과 같은 보완적인 국면에서 볼 수도 있다.
본 발명의 상기 내용과, 다른 목적들, 특징들 및 이점들은, 첨부도면과 관련지어 판독되는 예시적 실시예들의 이하의 상세한 설명으로부터 명백해질 것이다.
도 1은 프로시저 호출 서브루틴의 개략도,
도 2는 예외 호출 서브루틴의 개략도,
도 3은 복귀 명령어의 수신시에 수행된 처리를 개략적으로 나타낸 흐름도,
도 4는 도 3에 도시된 복귀 명령어 응답의 상이한 타입에 따라 동작하는 데이터 처리장치의 개략도이다.
(바람직한 실시예들의 설명)
도 1은 프로그램 명령어 A,B,C...의 시퀀스의 실행을 나타낸다. 이들 프로그램 명령어 내에는 프로그램 명령어 a, b, c...로 이루어진 서브루틴에 대한 처리의 방향을 바꾸는데 도움이 되는 프로시저 호출인 호출(Call) 명령어가 있다. 이러한 호출 명령어를 실행하는 경우 PC 레지스터에 저장된 현재의 프로그램 카운터 레지스터 값을 링크 레지스터 LR에 세이브(save)하고, 그 프로그램 카운터 레지스터 PC에 서브루틴에서의 제 1 명령어, 즉 명령어 a의 어드레스를 로딩한다. 그리고, 그 서브루틴의 실행은, 서브루틴의 끝에서의 복귀 명령어를 마주칠 때까지 진행한다. 이 시점에서, 복귀 명령어 응답을 요청하여서(invoke) 하나 이상의 소정의 값을 상기 저장된 링크 레지스터 LR 값과 비교하여 일치하지 않음을 검출한다. 이에 따라서, 프로시저 복귀 명령어 응답을 요청하여서, 상기 링크 레지스터 LR 값은 프로그램 카운터 레지스터 PC에 되돌아가서 로딩되고(실제로, 그 링크 레지스터 LR 값은 호출 명령어에 후속하는 프로그램 명령어를 가리킨다), 프로그램 실행은 명령어 E 에서 재개한다. 도 1의 프로시저 호출에서는 문맥 교환을 요청하지 않음에 따라, 모드 교환 또는 레지스터 세이브 또는 복원 동작은 복귀시에 불필요하다.
도 2는 예외 서브루틴 호출을 개략적으로 나타낸 것이다. 메인 프로그램 명령어 A,B,C...의 실행은, 이전처럼 진행하지만 명령어 D를 실행하고 있는 동안 예외가 발생한다. 예외는, 예외 핸들링 루틴으로부터 복귀시에 그 명령어를 재실행하거나 이와는 달리, 후속하는 명령어를 실행하도록 명령어의 실행 중에 발생할 수 있다는 것을 알 것이다. 이들 작용 모두는 본 기술 내에 내포되고, 필요한 경우 적절한 예외 핸들링 서브루틴으로 제어되어도 된다. 발생하기도 하는 또 다른 타입의 예외는, (전형적으로 비동기적인) 인터럽트에 의해 발생하고, 그 결과로 다음 명령어 경계(boundary)에서 인터럽트 핸들링 루틴을 요청한다. 도 2에 도시된 예외를 인터럽트로 대체한 경우, 명령어 D와 명령어 E 사이의 경계면에서 서브루틴이 요청될 것이다. 상기 인터럽트 핸들링 루틴은 명령어 E에서의 실행을 재개한다.
도 2에 도시된 것처럼, 도 1의 예외 호출의 작용과 예외 서브루틴 호출의 작용은 서로 다르다. 특히, 상기 예외/인터럽트 검출에 포함된 하드웨어 메카니즘은, 링크 레지스터 LR 내에 저장되는 상기 하나 이상의 소정의 어드레스들을(exc_return) 어드레스 일치하게 하는데 도움이 된다. 프로세서의 현재의 문맥도 현재의 프로그램 카운터 레지스터 PC 값을 포함하는 스택 메모리 영역에 세이브된다. 그 후, 상기 예외 핸들링 루틴 a,b,c...는 최종 복귀 명령어를 만날 때까지 실행된다. 이 시점에서, 링크 레지스터는, 도 1에서처럼 판독되어 예외 복귀 명령어 작용에 해당하도록 공지된 상기 하나 이상의 소정의 어드레스와 비교된다. 이 경우 에, 일치하는 것에 따라서, 상기 스택 메모리 내에 저장된 값들로부터 프로세서의 문맥을 복원하는 것과, 하드웨어에서 특별 exc_return 값으로 설정한 링크 레지스터 LR 내의 값을 사용하는 것보다는 오히려 스택 메모리에 저장된 값으로부터 프로그램 카운터 레지스터 PC 값을 복원하는 것으로 이루어진 예외 복귀 명령어 응답 동작이 기동될 것이다.
도 3은 도 1 및 도 2에 도시된 작용을 개략적으로 설명하는 흐름도이다. 단계 10에서는, 시스템이 복귀 명령어가 수신되기를 기다린다. 데이터 처리 시스템 내에 이를테면, 명령어 페치(fetch)부, 명령어 디코드부, 명령어 실행부 등의 서로 다른 기능부들의 여러 가지 부분들이 복귀 명령어에 적절하게 응답하여 필요한 복귀 명령어 응답 동작을 요청하도록 작동하는 복귀 명령어 로직의 기능을 갖는 부분을 모두 제공한다고 한다. 도 3의 단계 10은, 복귀 명령어가 수신될 때까지 기다리고 나서 단계 12에서는 그 복귀 명령어와 연관된 복귀 어드레스가 하나 이상의 소정의 어드레스와 일치하는지의 여부를 판단한다. 이 예시에서는, 그 복귀 어드레스가 0xFFFFFFF0보다 큰지의 여부를 판단한다.
단계 12에서 일치가 발생하지 않는다고 판단하면, 단계 14로 진행하여, 그 복귀 명령어를 프로시저 호출 복귀 명령어라고 간주하여 링크 레지스터 LR로부터의 복귀 어드레스를 다시 프로그램 카운터 레지스터 PC에 복원한다.
단계 12에서 일치가 검출하였다고 판단하면, 단계 16으로 진행하여, 단계 16에서 복귀 어드레스 자체의 최하위 비트 내에 인코딩된 하나 이상의 상태 변수를 복원하는 것을 포함한 예외 호출 복귀 명령어 응답 동작을 요청한 후 단계 18에서 는 스택 메모리에 저장된 여러 가지 레지스터 값을 포함하는 프로세서의 문맥을 복원한다.
도 4는 본 기술을 포함한 데이터 처리장치의 일부의 개략도이다. 도시된 소자들은 스케일이 상대적인 것이 아니고 또 실제로 다수의 다른 회로소자들은 시스템 전체에 존재될 것이라는 것을 알 것이다. 명령어 페치부(20)는, 현재 실행중 프로그램 명령어를 나타내는 어드레스를 저장하는 프로그램 카운터 레지스터(22)를 구비한다. 파이프라인 시스템에는, 명령어 페치부(20) 내에 저장된 프로그램 카운터와 실제로 다운스트림 실행 스테이지에서 실행되는 명령어간에 오프셋이 있다는 것을 알 것이다. 인크리먼트 장치(24)는, 각 명령어를 통상의 명령어 흐름에 따라 불러올 때마다 그 프로그램 카운터 값을 증가하는 역할을 한다. 상기 실행부(26) 또는 로드(load) 저장부(28)가 적절한 프로시저 호출 명령어를 실행하는 역할을 하는 경우, 이것은, 상기 프로시저 호출 명령어에 의해 규정된 어드레스가 멀티플렉서(30, 32)를 거쳐 프로그램 카운터 레지스터(22)에 로딩될 수 있게 함으로써 프로시저 서브루틴으로 점프하게 할 것이다.
서브루틴의 끝에서는, 명령어 페치부(20)가 복귀 명령어를 불러오고 상기 로드 저장부(28) 또는 실행부(26)가 디코딩하여 적절하게 실행한다. 이러한 복귀 명령어가 실행될 때, 그 로드 저장부 또는 실행부는, 복귀 어드레스 값을 멀티플렉서(30,32)를 거쳐서 프로그램 카운터 레지스터(22)에 기록하려고 한다. 복귀 어드레스 체크 회로(34)는 프로그램 카운터 레지스터(22)에 기록되어 있는 그 복귀 어드레스를 검사하고, 이것이 예외 복귀 작용에 대응하도록 공지된 하나 이상의 소정 의 어드레스와 일치하는 경우, 이것은, 파이프라인 제어회로(36)에 의해 적절한 파이프라인 플러쉬(flush)가 수행되게 하고, 메인 메모리(42) 내의 스택 메모리(40)로부터 문맥 데이터의 복원 및 재로딩을 포함한 예외 복귀 동작이 수행되게 할 것이다.
이러한 예시적 실시예에서는, 일치를 검출한 상기 하나 이상의 소정의 어드레스가 32 비트 메모리 공간에 16개의 최고의 어드레스이다. 그 복귀 어드레스로서 사용될 때 이들 어드레스의 최하위 비트는, 상태 변수들을 인코딩하여 복원하는데 스택 메모리를 사용하는 것을 포함하는 상기 예외 복귀에 관해 복원되게 하는 역할을 하고, 그 스택 메모리는 복귀 후 사용되고, 중단하는 것을 나타내는 복귀에 후속하는 상기 시스템의 활성화 레벨은, 그 복귀에 관해 수행된 처리를 중단하거나 중단하는 역할을 하지 않는다. 또한, 예외 엔트리와 복귀 제어 로직(38)은, 외부 비동기 인터럽트 신호들 irq에 응답하여 도 2에 도시된 것처럼 예외 핸들링 루틴 실행을 기동한다. 상기 실행부(26)에 의해 미정의된 명령어의 실행을 시도하면, 로드 저장부(28)에 의한 특정의 시도된 동작과 시스템 내 다른 곳에서의 동작뿐만 아니라 예외 작용도 일어날 수 있다. 예외 서브루틴에 대한 엔트리 상에서, 상태가 실행 복귀시에 복원되는 것을 나타내는 데이터의 일부는, 복귀 어드레스의 최하위 비트(본 예시에서는 4-비트)로 인코딩된다.
본 발명의 예시적 실시예들을 여기서는 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 상세한 실시예들에 한정되는 것이 아니고, 당업자는 첨부된 청구항에서 규정된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 각 종 변경 및 변형을 할 수 있다는 것을 알 것이다.

Claims (11)

  1. 프로그램 명령어로 규정된 데이터 처리 동작을 수행하는 장치로서,
    입력 오퍼랜드(LR)로서 어드레스를 갖는 복귀 명령어에 응답하여, 상기 어드레스로 나타낸 프로그램 명령어의 실행에 대한 복귀를 기동하는 복귀 로직(34,36)을 구비하고,
    상기 복귀 로직은,
    (i) 상기 어드레스가 하나 이상의 소정의 어드레스 값과 일치하지 않는 값을 갖는 경우, 상기 복귀 로직은, 프로시저 호출에 의한 복귀이고 하나 이상의 제 1 복귀 명령어 응답 동작을 포함한 프로시저 복귀 명령어 응답을 기동하여 제 1 복귀 상태를 산출하고,
    (ii) 상기 어드레스가 상기 하나 이상의 소정의 어드레스 값과 일치하는 값을 갖는 경우, 상기 복귀 로직은, 예외 호출에 의한 복귀이고 하나 이상의 제 2 복귀 명령어 응답 동작을 포함한 예외 복귀 명령어 응답을 기동하여 제 2 복귀 상태를 산출하고, 상기 하나 이상의 제 2 복귀 명령어 응답 동작은 상기 하나 이상의 제 1 복귀 명령어 응답 동작과 서로 다른 것을 특징으로 하는 데이터 처리 동작 수행장치.
  2. 제 1 항에 있어서,
    복수의 프로그램 명령어 내에 실행 포인트를 규정하는 프로그램 카운터(22)를 구비한 것을 특징으로 하는 데이터 처리 동작 수행장치.
  3. 제 2 항에 있어서,
    상기 프로시저 복귀 명령어 응답은, 상기 프로그램 카운터 레지스터에 상기 어드레스를 로딩하는 것을 포함한 것을 특징으로 하는 데이터 처리 동작 수행장치.
  4. 제 2 항에 있어서,
    데이터를 스택 메모리에 저장하고 데이터를 상기 스택 메모리로부터 판독할 수 있는 스택 메모리 로직(40)을 구비하고, 상기 예외 복귀 명령어 응답은, 저장된 어드레스를 상기 스택 메모리로부터 판독하고 상기 프로그램 카운터 레지스터에 상기 저장된 어드레스를 로딩하는 것을 포함한 것을 특징으로 하는 데이터 처리 동작 수행장치.
  5. 제 1 항에 있어서,
    상기 어드레스를 저장할 수 있는 링크 레지스터를 구비한 것을 특징으로 하는 데이터 처리 동작 수행장치.
  6. 제 4 항에 있어서,
    예외의 발생에 응답하여
    (i) 상기 하나 이상의 소정의 어드레스 값들에 일치하는 값의 링크 레지스터 내의 저장,
    (ii) 상기 저장된 어드레스의 상기 스택 메모리 내의 저장 및
    (iii) 예외 핸들링 루틴의 실행을, 기동시키는 예외 처리 로직을 구비한 것을 특징으로 하는 데이터 처리 동작 수행장치.
  7. 제 1 항에 있어서,
    상기 하나 이상의 소정의 어드레스 값에 일치하는 경우의 상기 어드레스는, 상기 하나 이상의 제 2 복귀 명령어 응답 동작에 의해 복원되게 상기 장치의 상태 변수들을 인코딩하는 하나 이상의 비트를 포함한 것을 특징으로 하는 데이터 처리 동작 수행장치.
  8. 제 7 항에 있어서,
    상기 상태 변수는,
    (i) 상기 제 2 복귀 명령어 응답 동작시에 복수의 스택 메모리 값들 중 어느 것을 판독해야 하는지를 제어하는 변수,
    (ii) 상기 예외 복귀 명령어 응답에 후속하여 복수의 스택 메모리 값들 중 어느 것을 사용해야 하는지를 제어하는 변수,
    (iii) 현재 처리를 중단하도록 허가된 인터럽트 이벤트의 레벨을 제어하는 활성화 레벨을 나타내는 변수 중, 하나 이상을 포함한 것을 특징으로 하는 데이터 처리 동작 수행장치.
  9. 제 1 항에 있어서,
    상기 복귀 로직은, 상기 입력 오퍼랜드인 상기 어드레스의 값에 따라 상기 프로시저 복귀 명령어 응답 또는 상기 예외 복귀 명령어 응답의 결과로 각각 나타날 수 있는 복수의 형태의 복귀 명령어에 응답하는 것을 특징으로 하는 데이터 처리 동작 수행장치.
  10. 프로그램 명령어로 규정된 데이터 처리 동작을 수행하는 방법으로서,
    입력 오퍼랜드로서 어드레스를 갖는 복귀 명령어에 응답하여, 상기 어드레스로 나타낸 프로그램 명령어의 실행에 대한 복귀를 기동하는 단계를 포함하고,
    상기 단계는,
    (i) 상기 어드레스가 하나 이상의 소정의 어드레스 값과 일치하지 않는 값을 갖는 경우, 하나 이상의 제 1 복귀 명령어 응답 동작을 포함하되 프로시저 호출에 의한 복귀인 프로시저 복귀 명령어 응답을 기동하여 제 1 복귀 상태를 산출하는 단계와,
    (ii) 상기 어드레스가 상기 하나 이상의 소정의 어드레스 값과 일치하는 값을 갖는 경우, 하나 이상의 제 2 복귀 명령어 응답 동작을 포함하되 예외 호출에 의한 복귀인 예외 복귀 명령어 응답을 기동하여 제 2 복귀 상태를 산출하는 단계를 갖고, 상기 하나 이상의 제 2 복귀 명령어 응답 동작은 상기 하나 이상의 제 1 복귀 명령어 응답 동작과 서로 다른 것을 특징으로 하는 데이터 처리 동작 수행방법.
  11. 데이터 처리장치가 청구항 10에 기재된 방법을 수행하도록 제어할 수 있는 컴퓨터 프로그램이 기록된, 컴퓨터 판독가능한 매체.
KR1020077022011A 2005-03-30 2006-02-01 서브루틴 복귀 메카니즘 선택 KR101249693B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/092,984 2005-03-30
US11/092,984 US7401210B2 (en) 2005-03-30 2005-03-30 Selecting subroutine return mechanisms
PCT/GB2006/000331 WO2006103381A1 (en) 2005-03-30 2006-02-01 Selecting subroutine return mechanisms

Publications (2)

Publication Number Publication Date
KR20070121701A KR20070121701A (ko) 2007-12-27
KR101249693B1 true KR101249693B1 (ko) 2013-04-05

Family

ID=36215755

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077022011A KR101249693B1 (ko) 2005-03-30 2006-02-01 서브루틴 복귀 메카니즘 선택

Country Status (10)

Country Link
US (1) US7401210B2 (ko)
EP (1) EP1872203B1 (ko)
JP (1) JP4703718B2 (ko)
KR (1) KR101249693B1 (ko)
CN (1) CN100549946C (ko)
DE (1) DE602006006043D1 (ko)
IL (1) IL181992A (ko)
MY (1) MY139980A (ko)
TW (1) TWI375910B (ko)
WO (1) WO2006103381A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2928755B1 (fr) * 2008-03-14 2014-04-11 Sagem Securite Procede de securisation d'une execution d'un programme
WO2011048442A1 (en) * 2009-10-22 2011-04-28 Freescale Semiconductor, Inc. Integrated circuits and methods for debugging
CN102360283B (zh) * 2011-09-28 2014-01-08 中国科学院声学研究所 一种微处理器子程序调用的处理方法及其装置
US9378164B2 (en) 2011-12-22 2016-06-28 Intel Corporation Interrupt return instruction with embedded interrupt service functionality
US10210349B2 (en) * 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain
US9477834B2 (en) 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US9213828B2 (en) * 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US9116711B2 (en) * 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
GB2499287A (en) * 2012-02-08 2013-08-14 Advanced Risc Mach Ltd Exception handling in data processing with different security domains
US9202071B2 (en) 2012-02-08 2015-12-01 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
WO2016014081A1 (en) * 2014-07-25 2016-01-28 Hewlett-Packard Development Company, L.P. Exception handling predicate register
CN112905995B (zh) * 2021-02-05 2022-08-05 电子科技大学 一种处理器内部寄存器组异常行为实时检测方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05341996A (ja) * 1992-06-11 1993-12-24 Sony Corp ディジタル計算機およびプログラム復帰方法
JPH08166887A (ja) * 1994-12-13 1996-06-25 Matsushita Electric Ind Co Ltd 割込み処理からの復帰方法
US5889982A (en) * 1995-07-01 1999-03-30 Intel Corporation Method and apparatus for generating event handler vectors based on both operating mode and event type
WO2004001586A1 (de) * 2002-06-24 2003-12-31 Infineon Technologies Ag Vorrichtung und verfahren zum verarbeiten einer sequenz von sprungbefehlen

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1149809B (it) * 1980-06-12 1986-12-10 Honeywell Inf Systems Sequenziatore per unita' di controllo microprogrammata
US5193205A (en) * 1988-03-01 1993-03-09 Mitsubishi Denki Kabushiki Kaisha Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address
US5261101A (en) * 1990-02-28 1993-11-09 Microsoft Corporation Method for calling and returning from subroutine that is invoked by either a near call or a far call
US5535397A (en) * 1993-06-30 1996-07-09 Intel Corporation Method and apparatus for providing a context switch in response to an interrupt in a computer process
JP2857600B2 (ja) 1995-05-11 1999-02-17 松下電器産業株式会社 プロセッサ及びプログラム翻訳装置
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
JP3513038B2 (ja) * 1998-12-10 2004-03-31 富士通株式会社 命令フェッチ制御装置
JP3723019B2 (ja) * 1999-09-29 2005-12-07 富士通株式会社 サブルーチンリターン相当の命令の分岐予測を行う装置および方法
US7415602B2 (en) * 2002-06-24 2008-08-19 Infineon Technologies Ag Apparatus and method for processing a sequence of jump instructions
DE10252347A1 (de) 2002-11-11 2004-05-19 Giesecke & Devrient Gmbh Überwachte Unterprogrammausführung

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05341996A (ja) * 1992-06-11 1993-12-24 Sony Corp ディジタル計算機およびプログラム復帰方法
JPH08166887A (ja) * 1994-12-13 1996-06-25 Matsushita Electric Ind Co Ltd 割込み処理からの復帰方法
US5889982A (en) * 1995-07-01 1999-03-30 Intel Corporation Method and apparatus for generating event handler vectors based on both operating mode and event type
WO2004001586A1 (de) * 2002-06-24 2003-12-31 Infineon Technologies Ag Vorrichtung und verfahren zum verarbeiten einer sequenz von sprungbefehlen

Also Published As

Publication number Publication date
WO2006103381A1 (en) 2006-10-05
EP1872203B1 (en) 2009-04-01
CN101156137A (zh) 2008-04-02
JP4703718B2 (ja) 2011-06-15
KR20070121701A (ko) 2007-12-27
US7401210B2 (en) 2008-07-15
JP2008535072A (ja) 2008-08-28
DE602006006043D1 (de) 2009-05-14
MY139980A (en) 2009-11-30
TWI375910B (en) 2012-11-01
US20060224866A1 (en) 2006-10-05
EP1872203A1 (en) 2008-01-02
IL181992A (en) 2012-07-31
IL181992A0 (en) 2007-07-04
CN100549946C (zh) 2009-10-14
TW200703107A (en) 2007-01-16

Similar Documents

Publication Publication Date Title
KR101249693B1 (ko) 서브루틴 복귀 메카니즘 선택
US7783867B2 (en) Controlling instruction execution in a processing environment
KR101740224B1 (ko) 불법 모드 변경처리
KR100695187B1 (ko) 단일 스텝 처리 방법 및 장치
JP5611756B2 (ja) プログラム・フロー制御
US20070136565A1 (en) Stack underflow debug with sticky base
JP3707581B2 (ja) 自己整合スタック・ポインタを有するデータ処理システムおよびその方法
CN111133418A (zh) 在例外屏蔽更新指令之后允许未中止的事务处理
US8347066B2 (en) Replay instruction morphing
JP4334598B1 (ja) 情報処理装置およびエラー訂正方法
CN107111525B (zh) 数据处理设备中的系统错误处置
JPH07141176A (ja) コマンドリトライ制御方式
US7100027B1 (en) System and method for reproducing system executions using a replay handler
US6990569B2 (en) Handling problematic events in a data processing apparatus
US5673391A (en) Hardware retry trap for millicoded processor
US7882336B2 (en) Employing a buffer to facilitate instruction execution
JP2009230479A (ja) マイクロプロセッサ
US8732721B2 (en) Method for reducing trap overhead when executing a guest in a virtual machine
US11157277B2 (en) Data processing apparatus with respective banked registers for exception levels
KR20080044652A (ko) Cpu에서의 스택을 이용한 디버깅 방법
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
CA1223079A (en) Data processor having selective breakpoint capability with minimal overhead
JPH07152594A (ja) 制御プロセッサのリトライ制御方式
KR101064650B1 (ko) 리눅스 운영체제 기반의 시스템에서 usb 디바이스 드라이버의 커널 하드닝을 수행하는 방법 및 그 장치
JPS5848150A (ja) 障害波及防止方式

Legal Events

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

Payment date: 20160303

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170302

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190227

Year of fee payment: 7