KR20010006789A - 초장 명령어 프로세서의 효율적인 서브-명령 에뮬레이션 - Google Patents

초장 명령어 프로세서의 효율적인 서브-명령 에뮬레이션 Download PDF

Info

Publication number
KR20010006789A
KR20010006789A KR1020000012374A KR20000012374A KR20010006789A KR 20010006789 A KR20010006789 A KR 20010006789A KR 1020000012374 A KR1020000012374 A KR 1020000012374A KR 20000012374 A KR20000012374 A KR 20000012374A KR 20010006789 A KR20010006789 A KR 20010006789A
Authority
KR
South Korea
Prior art keywords
vliw
sub
instruction
instructions
exception
Prior art date
Application number
KR1020000012374A
Other languages
English (en)
Other versions
KR100548609B1 (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 KR20010006789A publication Critical patent/KR20010006789A/ko
Application granted granted Critical
Publication of KR100548609B1 publication Critical patent/KR100548609B1/ko

Links

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/38Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

본 발명의 한 실시예는 초장 명령어(VLIW) 프로세서의 서브 명령을 효율적으로 에뮬레이팅하는 시스템을 제공한다. VLIW 프로그램 내의 VLIW 명령의 실행 중 예외 상황을 수신함으로서 이 시스템은 작동한다. 이 예외 상황은 VLIW 명령의 한 개 이상의 서브 명령이 소프트웨어적으로 에뮬레이션을 필요로 하는 것을 나타낸다. 이 예외 상황을 처리하면서, 시스템은 소프트웨어적 에뮬레이션을 필요로 하는 서브 명령을 에뮬레이팅하여 그 결과를 저장한다. 시스템은 소프트웨어적 에뮬레이션을 필요로 하지 않는 VLIW 명령의 나머지 서브 명령을 하드웨어적으로 선택적으로 실행한다. 최종적으로 시스템은 소프트웨어적으로 에뮬레이팅된 서브 명령에서의 결과를, 하드웨어적으로 실행된 나머지 서브 명령에서의 결과와 조합한다. 이후, 시스템은 VLIW 프로그램의 실행을 재개한다.

Description

초장 명령어 프로세서의 효율적인 서브-명령 에뮬레이션{EFFICIENT SUB-INSTRUCTION EMULATION IN A VLIW PROCESSOR}
본 발명은 컴퓨터 시스템 내의 프로세서 설계에 관한 것이다. 특히, 본 발명은 초장 명령어(VLIW) 프로세서의 서브명령을 효과적으로 에뮬레이팅하기 위한 방법 및 장치에 관한 것이다.
연산 성능을 향상시키기 위하여, 다중 기능 유닛이 단일 초장 명령어(VLIW) 명령을 동시에 실행하는 초장 명령어(VLIW) 구조를 향해 프로세서 설계가 진행되기 시작하고 있다. VLIW 명령은 개별 기능 유닛의 작동을 구체화시키는 다수의 "서브-명령"으로 구성되는 것이 일반적이다.
VLIW 구조의 한가지 문제점은, 하드웨어 기능 유닛 내에서 서브 명령이 구현되지 않아 대신 소프트웨어에서 에뮬레이팅되어야 할 때 발생하는 조작 예외 상황에 있다. 또는 한 세트의 데이터 입력이 하드웨어 기능 유닛에 예외적 상황(예를 들어 0으로 나누거나 오버플로 상황)을 일으킬 때 발생하는 조작 예외 상황에 있다. 현재의 VLIW 구조에서, VLIW 명령의 단일 서브-명령만이 예외 상황을 발생시킴에도 불구하고, VLIW 명령을 구성하는 모든 서브-명령이 소프트웨어적으로 에뮬레이팅되어야 한다. 이는 컴퓨터 시스템의 성능을 크게 저하시킨다.
또한, 단지 몇몇 서브-명령이 예외 상황을 발생시킴에도 불구하고, 컴퓨터 시스템은 하드웨어적으로 이미 구현된 모든 가능한 서브-명령을 에뮬레이팅할 코드를 제공한다. 모든 이러한 서브-명령에 대한 코드 기록이 상당한 문제점이 된다. 먼저, 하드웨어적으로 이미 구현된 서브 명령에 대한 명령 기록은 시간 및 비용 소요가 크다. 두 번째로, 에뮬레이션의 정확성을 보장하는 것은 더 큰 문제이다. 하드웨어적으로 구현되지 않은 소수의 서브-명령조차 소프트웨어적으로 정확하게 에뮬레이팅되는 것을 보장하는 것은 어려운 일이다. 하드웨어적으로 이미 구현된 서브 명령을 포함하는 모든 서브 명령을 정확하게 에뮬레이팅하는 것은 더욱 어려운 일이다. 더욱이, 서브 명령 에뮬레이팅에 추가적인 루틴을 제공하는 것은 컴퓨터 메모리를 더욱 차지하여, 이는 캐쉬 성능을 저하시킬 수 있고, 더 많은 페이지 부재(page fault)를 유발할 수 있다. VLIW 명령으로부터 소수의 서브 명령만이 소프트웨어적 에뮬레이션과, 오버플로와 같은 예외 상황을 처리하는 효율적 방법을 필요로 할 때, VLIW 명령의 모든 서브 명령이 소프트웨어적으로 에뮬레이팅될 필요성을 제거하는 것이 본 발명의 방법 및 장치에 필요한 것이다.
본 발명의 한 실시예는 초장 명령어(VLIW) 프로세서의 서브 명령을 효율적으로 에뮬레이팅하는 시스템을 제공한다. 시스템은 VLIW 프로그램 내에서 VLIW 명령을 실행하는 동안 예외 상황을 수용함으로서 작동한다. 이 예외 상황은 VLIW 명령의 한 개 이상의 서브 명령이 소프트웨어나 소프트웨어의 도움에 의한 에뮬레이션을 필요로 한다는 것을 나타낸다. 이 예외 상황을 처리함에 있어, 시스템은 소프트웨어적 에뮬레이션을 필요로 하는 서브 명령을 에뮬레이팅하고, 그 결과를 저장한다. 시스템은 소프트웨어적 에뮬레이션을 필요로 하지 않는 VLIW 명령의 나머지 서브 명령을 하드웨어에서 선택적으로 실행한다. 최종적으로 시스템은 소프트웨어적으로 에뮬레이팅된 서브 명령으로부터의 결과와, 하드웨어적으로 실행된 나머지 서브 명령으로부터의 결과를 조합하여, VLIW 프로그램의 실행을 계속한다.
발명의 한 태양에 따라, 에뮬레이션 과정은 다음의 단계를 포함한다. 즉, (1) VLIW 프로세서 내의 다수의 레지스터로부터 상태를 저장하고, (2) VLIW 프로세서를 특권 모드로 위치시키며, 그리고 (3) 에뮬레이션 실행을 위해 트랩 핸들러를 작동시킨다. 트랩 핸들러를 작동시키는 과정은 서브 명령이 예외 상황을 유발하였다는 것을 표시하는 예외 레지스터를 읽는 단계와, 우선 순위에 따라 예외 상황을 유발한 서브 명령을 에뮬레이팅하는 단계를 포함한다.
본 발명의 한 태양에 따라, 에뮬레이팅될 필요가 없는 나머지 서브 명령을 하드웨어적으로 실행하는 선택적 작용은 하드웨어 기능 유닛이 나머지 서브 명령을 선택적으로 실행하도록 하는 단계를 포함한다. 이는, 작동 신호 패턴을 작동 레지스터에 저장함으로서 달성될 수 있고, 작동 레지스터 각각의 비트는 상응하는 서브 명령에 대한 상응하는 하드웨어 기능 유닛이 작동하는 지를 표시한다. 이 작동 신호 패턴은 VLIW 프로세서의 하드웨어 기능 유닛에 가해져서, 하드웨어 기능 유닛이 작동 서브 명령만을 실행하게 한다. 다음으로, 소프트웨어적으로 에뮬레이팅되지 않은 나머지 서브 명령만이 하드웨어적으로 실행되도록, VLIW 명령이 실행된다. VLIW 명령이 실행된 후에, 예외 상황의 처리를 완료하기 위해 트랩이 생성된다.
도 1은 본 발명의 실시예에 따라 VLIW 명령을 실행하는 컴퓨터 시스템.
도 2는 본 발명의 실시예에 따르는 단일 VLIW 명령의 도면.
도 3은 본 발명의 실시예에 따르는 파이프라인 제어 유닛의 내부 구조의 부분도.
도 4는 본 발명의 실시예에 따라 섀도 레지스터에 레지스터 파일이 연결되는 방법의 도면.
도 5는 본 발명의 실시예에 따라 명령 에뮬레이션 프로세스를 도시하는 순서도.
(참조 번호 설명)
100 ... 반도체 칩 101 ... VLIW 프로세서
102 ... 명령 캐쉬 104 ... 얼라이너
106 ... 명령 버퍼 108 ... 파이프라인 제어 유닛
110, 112, 114, 116 ... 레지스터 파일
118, 120, 122, 124 ... 범용 기능 유닛
126, 128, 130, 132 ... 예외 레지스터
134 ... 데이터 캐쉬 135, 136, 138, 140, 144 ... OR 게이트
146 ... 예외 신호 150 ... DRAM
200 ... VLIW 명령 202, 204, 206, 208 ... 서브 명령
302 ... 명령 중단점 마스크 레지스터(IBMR)
304 ... 트랩 핸들러 402 ... 섀도 레지스터
본 설명은 당 분야의 통상의 지식을 가진 자가 용이하게 발명을 실행할 수 있도록 제시되고, 특정 장치와 그 필요조건을 들어 제공되다. 당 분야의 통상의 지식을 가진 자에게 있어, 공개된 실시예에 여러 수정이 쉽게 가능할 것이고, 여기서 정의되는 일반 원칙은 본 발명의 정신과 범위를 벗어나지 않는 한 다른 실시예와 장치에도 적용될 수 있다. 그러므로, 본 발명은 기술되는 실시예에 한정되는 것을 의도하는 바가 아니라, 여기서 공개되는 특징 및 원리에 따르는 가장 넓은 범위로허용되어야 할 것이다.
컴퓨터 시스템
도 1은 본 발명의 실시예에 따라 VLIW 명령을 실행하는 컴퓨터 시스템을 도시한다. 도 1에 도시되는 컴퓨터 시스템은 DRAM(150)과 결합된 반도체 칩(100)을 포함한다. DRAM(150)은 반도체 칩(100)에 위치하는 VLIW 프로세서(101)에 의해 실행되는 데이터 및 코드를 저장하기 위한 어떤 종류의 랜덤 액세스 메모리도 포함할 수 있다.
반도체 칩(100)은 VLIW 프로세서(101)를 구현하기 위한 회로를 포함한다. 이 회로는 명령 캐쉬(102), 얼라이너(104), 명령 버퍼(106), 파이프라인 제어 유닛(108), 데이터 캐쉬(134), 그리고 레지스터 파일(110, 112, 114, 116)을 포함한다. VLIW 프로세서(101)는 범용 기능 유닛(118, 120, 122, 124)을 추가로 포함한다. 이 범용 기능 유닛은 예외 레지스터(126, 128, 130, 132)에 각각 연결된다.
VLIW 프로세서(101)의 작동 중, VLIW 명령은 DRAM(150)으로부터 명령 캐쉬(102)로 페치된다. 명령 캐쉬(102)는 방향성 매핑 명령 캐쉬나 세트 관련 명령 캐쉬를 포함하여 VLIW 명령을 저장하기 위한 어떤 종류의 캐쉬 메모리를 포함할 수 있다. VLIW 명령은 명령을 명령 버퍼(106)에 공급하기 전에 정렬 기능을 실행하는 얼라이너(104)를 통해 공급된다. 이 정렬은 VLIW 명령을 위해 필요할 수 있다. 왜냐하면, VLIW 명령이 명령 캐쉬(102)로부터 발생할 때 VLIW 명령 내의 서브 명령들이 적절하게 정렬되지 않을 수 있기 때문이다. 이러한 정렬이 필요할 경우, 서브 명령이 좌측으로 정렬되는 것이 얼라이너(104)에 의해 보장된다.
명령 버퍼(106)는 다수의 VLIW 명령을 위한 기억 장치를 포함한다. 각각의 VLIW 명령이 다수의 서브 명령으로 구성되는 점을 상기해보자. 현재 실행 중인 VLIW 명령에 대한 서브 명령들은 상응하는 범용 기능 유닛(118, 120, 122, 124)에 공급된다.
범용 기능 유닛(118, 120, 122, 124)은 레지스터 파일(110, 112, 114, 116)로부터 각각 데이터의 산술 연산을 실행하는 회로를 포함한다. 범용 기능 유닛(118, 120, 122, 124)은 부동 소수점, 고정 소수점, 정수, 그리고 포화 데이터 종류를 포함하는 다수의 데이터 종류에서 산술 연산을 지원한다.
포화 데이터 종류는 일반적으로 제어 신호를 구체화하기 위해 사용된다. 포화 변수는 최대값 이상으로 증가될 경우 최대값을 유지하고, 최소값 이하에서 감소할 경우 최소값을 유지한다. 그러므로, 산수 연산 동안 랩에 의해 유발되는 제어 신호의 급작스런 스윙으로 인한 문제를 피할 수 있다.
범용 기능 유닛(118, 120, 122, 124)은 덧셈, 곱셈, 시프트 작동, 그리고 비트 뺄셈 및 바이트 셔플 작동을 포함하여 수많은 공통 연산 및 데이터 조작 작동을 실행한다. 범용 기능 유닛(118)은 범용 기능 유닛(120, 122, 124)과 다르다는 점에 주목하라. 즉, 범용 기능 유닛(118)은 VLIW 프로세서(101) 내의 흐름 제어 및 데이터 이동을 용이하게 하기 위해, 로드, 저장, 그리고 브랜치 명령을 추가적으로 조작한다.
레지스터 파일(110, 112, 114, 116)은 각각 연관된 범용 기능 유닛(118, 120, 122, 124)에 의해 조작되는 데이터를 포함한다. 다수의 레지스터가 레지스터 파일(110, 112, 114, 116)에 대해 국부적이며, 레지스터 파일(110, 112, 114, 116) 사이에서 다수의 레지스터가 공유된다. 본 발명의 한 실시예에서, 주어진 레지스터 파일은 128 개의 가시 레지스터로부터 96개의 공유 레지스터와 32개의 국부 레지스터를 포함한다.
VLIW 프로그램에 의해 조작될 데이터는 DRAM(150)으로부터 데이터 캐쉬(134)로 이동한다. 데이터 캐쉬(134)는 세트 관련 또는 지향성 매핑 캐쉬를 포함하여 VLIW 프로세서(101)에 의해 실행될 데이터를 저장하기 위한 어떤 종류의 캐쉬 메모리도 포함할 수 있다. 로드 작동 동안, 데이터는 데이터 캐쉬(134)로부터 레지스터 파일(110, 112, 114, 116)로 이송된다. 기억 작동 중, 데이터는 레지스터 파일(110, 112, 114, 116)로부터 데이터 캐쉬(134)로 기록되고, 최종적으로 DRAM(150)에 다시 기록된다.
도 1에 도시되는 VLIW 프로세서(101)가 파이프라인형 프로세서임을 주목해보자. 이는, VLIW 프로그램 실행 중 주어진 점에서, VLIW 명령이 단계화되어, 다중 VLIW 명령이 동시에 실행되고 있다는 것을 의미한다.
파이프라인형 실행은 파이프라인 제어 유닛(108)에 의해 제어된다. 파이프라인 제어 유닛(108)은 VLIW 프로세서(101)를 통해 명령의 이동을 제어하고, 인터럽트나 트랩과 같은 예외 상황을 추가적으로 제어한다. 이는, VLIW 명령 중 한 개 이상의 서브 명령이 소프트웨어적 에뮬레이션을 필요로 하는 예외 상황의 조작을 포함한다.
예외 상황이 범용 기능 유닛(118, 120, 122, 124) 중 하나에서 발생할 경우, 예외 상황은 상응하는 비트를 상응하는 예외 레지스터(126, 128, 130, 132) 중 하나에 각각 설정한다. 각각의 다른 종류의 예외 상황에 대해 각각의 예외 레지스터에는 다른 비트가 있음을 주목하라. 예를 들어, 한 개의 예외 상황은 현재 서브-명령이 소프트웨어적 에뮬레이션을 필요로 한다는 것을 나타낼 수 있고, 다른 한 개의 예외 상황은 상응하는 서브 명령이 산술 연산 중 오버플로를 일으켰음을 나타낼 수 있다.
또한, 주어진 서브 명령의 실행 중 다중 예외 상황이 발생할 수 있다는 점을 주목하라. 이는 예외 레지스터의 다중 비트가 동일 서브 명령에 의해 설정될 수 있음을 의미한다. 일련의 OR 게이트(135, 136, 138, 140, 144)가 예외 레지스터(126, 128, 130, 132)의 내용을 단일 예외 신호(146)로 모이게 하는 데 사용된다. 이는 파이프라인 제어 유닛(108)으로 공급된다. 특히, 예외 레지스터(126) 비트는 OR 게이트(135)의 입력으로 공급되고, 예외 레지스터(128)의 비트는 OR 게이트(136)의 입력으로 공급되며, 예외 레지스터(130) 비트는 OR 게이트(138)의 입력으로 공급되고, 예외 레지스터(132)의 비트는 OR 게이트(140)의 입력으로 공급된다. 다음으로, OR 게이트(135, 136, 138, 140)의 출력은 OR 게이트(144)의 입력으로 공급된다. 최종적으로, OR 게이트(144)의 출력은 예외 신호(146)가 되어, 파이프라인 제어 유닛(108)의 입력으로 공급된다.
예외 레지스터(126, 128, 130, 132)의 어떤 비트라도 가정되면, 예외 신호(146)가 가정된다. 가정된 예외 신호(146)에 따라, 파이프라인 제어 유닛(108)은 예외 조작 과정을 시작한다. 이 예외 조작 과정은 어떤 종류의 예외가 발생하는 지를 결정하기 위해 예외 레지스터(126, 128, 130, 132)를 판독하는 과정을 포함한다.
도 1에 도시되는 VLIW 프로세서(101)가 단일 반도체 칩에 위치함에도, 보 발명은 단일 반도체 칩에 딱 맞는 VLIW 프로세서에 한정되지 않고, 어떤 종류의 VLIW 프로세서에도 적용할 수 있다. 심지어, 다중 반도체 칩을 스팬하는 경우에도 적용할 수 있다.
VLIW 명령
도 2는 본 발명의 실시예에 따르는 단일 VLIW 명령(200)을 도시한다. VLIW 명령(200)은 네 개의 서브 명령(202, 204, 206, 208)으로 구성된다. 서브 명령(202)은 범용 기능 유닛(118)을 위한 로드 작동을 구체화하는 로드 서브 명령이다. 로드 작동은 DRAM(150)으로부터 레지스터 파일(110, 112, 114, 116)의 한 개 이상의 레지스터로 데이터를 이동시킨다. 서브 명령(204)은 범용 기능 유닛(120)을 위한 곱셈 작용을 구체화한다. 서브 명령(206)은 범용 기능 유닛(122)을 위한 뺄셈 작용을 구체화한다. 마지막으로, 서브 명령(208)은 범용 기능 유닛(124)을 위한 덧셈 작용을 구체화한다.
VLIW 명령(200)이 네 개의 서브 명령을 포함하지만, 일반적으로 VLIW 명령은 어떤 수의 서브 명령도 포함할 수 있다.
파이프라인 제어 유닛
도 3은 본 발명의 실시예에 따르는 파이프라인 제어 유닛의 내부 구조 부분도이다. 다른 회로 중에서, 파이프라인 제어 유닛(108)은 명령 중단점 마스크 레지스터(302)와 트랩 핸들러(304)를 포함한다. 트랩 핸들러(304)는 VLIW 명령의 실행 중 발생하는 트랩 및 다른 예외 상황을 조작하기 위한 회로를 포함한다.
트랩 핸들러(304)는 명령 중단점 마스크 레지스터(IBMR)(302)와 조화롭게 작동한다. IBMR(302)은 VLIW 프로세서(101)에서 범용 기능 유닛(118, 120, 122, 124)의 각각에 대한 단일 비트를 포함한다. 각각의 비트는 상응하는 범용 기능 유닛에 대한 작동 신호로 작용한다. 그래서, 비트가 가정될 때, 상응하는 기능 유닛이 작동된다. 도 3에 도시되는 바와 같이, IBMR(302)은 네 개의 비트를 포함하고, 그 중 세 비트가 가정된다. 이는, 상응하는 VLIW 명령이 실행될 때 네 개의 범용 기능 유닛 중 세 개만이 작동할 것임을 의미한다. 이 선택적인 작동 메카니즘은, 도 5를 참조하여 후에 기술되는 바와 같이, 소프트웨어적으로 에뮬레이팅되지 않는 명령을 하드웨어적으로 실행되게 한다.
섀도 레지스터
도 4는 본 발명의 실시예에 따르는 섀도 레지스터(402)에 레지스터 파일(110)이 연결되는 방법을 도시한다. 프로세서 성능을 개선시키기 위해서, VLIW 프로세서(101)는 섀도 레지스터(402)를 포함하고, 상기 섀도 레지스터(402)는 레지스터 파일(110)과 동일한 반도체 칩에 위치한다. 예외 상황 중에, 파이프라인 제어 유닛(108) 내의 제어 레지스터나 레지스터 파일(110) 내의 레지스터는 외부 메모리(DRAM(150))로 저장하는 대신에 섀도 레지스터(402)에 임시로 저장할 수 있다. 외부 메모리에 레지스터를 저장하는 것은 상당히 큰 클럭 사이클을 요하기 때문에, 이는 예외 상황 중 프로세서 성능을 크게 감소시킨다.
명령 에뮬레이션 프로세스
도 5는 본 발명의 실시예에 따르는 명령 에뮬레이션 프로세스의 순서도이다. VLIW 프로그램 실행 중, VLIW 명령은 예외 상황을 발생시킨다(단계 502). VLIW 프로세서(101)는 이 예외 상황을 감지하고, 파이프라인 제어 유닛(108)에 통지한다(단계 504). 도 1에 도시되는 발명의 실시예에서, 이 감지 과정은 발생한 예외 종류 표시 값으로 한 개 이상의 예외 레지스터(126, 128, 130, 132)를 로딩하는 단계를 포함한다. 한 개 이상의 예외가 각각의 기능 유닛에 대해 동시에 발생할 수 있다는 점을 주목하라. 예외 레지스터(126, 128, 130, 132)의 내용은 OR 게이트(135, 136, 138, 140, 144)를 통해 공급되어, 예외 신호(146)를 형성하고, 예외 신호(146)는 파이프라인 제어 유닛(108)으로 공급된다. 예외 레지스터(126, 128, 130, 132)에 어떤 비트가 설정될 때마다 예외 신호(146)가 가정될 것이다.
다음으로, VLIW 프로세서(101)는 레지스터 파일(110, 112, 114, 116)에 일부 레지스터의 내용을 저장한다(단계 506). 본 발명의 한 실시예에서, 이는 레지스터를 메모리에 기록함으로서 달성된다. 또다른 실시예에서, 이는 도 4에 도시되는 "섀도 레지스터"에 레지스터를 기록함으로서 달성된다. 이는 외부 메모리에 레지스터를 기록하는 데 소요되는 시간을 상당히 단축할 수 있다.
다음으로, VLIW 프로세서(101)는 특권 모드에 위치하여, 예외 상황을 처리하기 위해 VLIW 프로세서(101) 내의 모든 내부 레지스터에 액세스할 수 있다(단계 508).
이때 시스템은 트랩 핸들러 루틴으로 향한다(단계 510). 본 발명의 한 실시예에서, 이는 트랩 조작 루틴의 어드레스를 포함하는 트랩 벡터를 조회함으로서, 그리고 어드레스로 점핑함으로서 달성된다. 이 때, 트랩 조작 소프트웨어는 파이프라인 제어 유닛(108) 내의 하드웨어로부터 인계된다. 이 트랩 조작 소프트웨어는 메모리나 섀도 레지스터에 VLIW 프로세서(101)의 상태를 초기에 저장할 수 있다.
VLIW 명령에 대한 예외 상황을 처리하는 것은 모든 일련의 VLIW 명령을 파이프라인으로부터 이상 종료(flush)시키는 점을 주목하라. 그러므로, 예외 상황이 완료된 후, VLIW 프로세서(101)는 예외 상황을 유발한 VLIW 명령 바로 다음의 명령으로부터 시작하는 VLIW 명령을 다시 로딩하여야 한다.
트랩 조작 루틴은 각각의 범용 기능 유닛의 예외 레지스터를 판독한다(단계 512). 특정 서브 명령이 한 개 이상의 예외를 유발하였다면, 시스템은 우선 순위에 따라 예외를 처리한다(단계 514). 본 발명의 한 실시예에서, 이는 서브 명령과 연관된 범용 기능 유닛에 대한 예외 레지스터를 판독함으로서, 그리고 설정된 예외 레지스터의 최상 비트를 찾아내기 위한 "계수 연속 소거 비트"(CCCB) 명령을 이용함으로서 달성된다. 예외 레지스터의 각각의 비트가 다른 예외 상황에 상응하기 때문에 이 프로세스는 최상 우선 순위 예외를 식별하고, 비트들은 우선 순위대로 예외 레지스터에 매핑된다. 다음으로, 시스템은 예외 상황에 대한 특정 핸들러로 점프한다. 예를 들어, 서브 명령이 소프트웨어적으로 에뮬레이팅되는 것을 예외 상황이 원할 경우, 시스템은 서브 명령을 에뮬레이팅하는 한 피스의 코드로 점핑한다. 최종적으로, 다른 예외가 서브 명령에 대해 처리되는 것을 유지하는 경우, 우선 순위에 따라 처리된다.
다음으로, 예외 상황의 결과가 메모리에 저장된다(단계 516). 예를 들어, 예외 상황이 서브 명령을 에뮬레이팅시키면, 에뮬레이션 결과는 메모리에 기록된다.
그 다음에, 시스템은 파이프라인 제어 유닛(108) 내의 명령 중단점 마스크 레지스터(IBMR)(302)로 에뮬레이팅되지 않은 나머지 서브 명령 모두를 위한 작동 신호 패턴을 저장한다(단계 518). IBMR(302)은 시스템의 범용 기능 유닛(118, 120, 122, 124) 각각에 대한 작동 신호를 포함하고 있다는 것을 다시 고려해보자. 그러므로, IBMR(302)의 작동 신호 패턴을 저장하는 것은 선택된 범용 기능 유닛을 작동하게 한다.
다음으로, 시스템은 예외 상황을 유발한 VLIW 명령을 하드웨어적으로 실행한다(단계 520). 예외 상황을 유발한 서브 명령이 작동하지 않기 때문에, VLIW 명령은 예외 상황을 생성하지 않으면서 실행을 종결하여야 한다는 점을 주목하라.
다음으로, 한 개 이상 비트의 IBMR이 0과 같으면(또는, 역으로 기술해서 IBMR이 1111과 같지 않으면), VLIW 명령 실행 이후에 트랩이 발생된다(단계 522). 이 트랩은 단계 516에서 메모리에 저장된 에뮬레이팅 결과를 메모리로부터 복원시키고, 레지스터 파일(110, 112, 114, 116) 내의 종착 위치에 저장한다.
VLIW 명령은 이제 성공적으로 실행되었고, VLIW 프로세서(101)는 VLIW 프로그램의 다음 VLIW 명령 실행을 시작한다.
앞서의 내용은 VLIW 프로세서(101)에 의해 실행된 작용만을 언급하고 있음에 주목하라. 이 작용들은 VLIW 프로세서(101)에 대한 마이크로 순서기나 제어기의 지침대로 실행될 수 있다. 이는 비-VLIW 프로세서의 경우에서도 마찬가지이다. 이 마이크로 순서기나 제어기는 도 1에 도시되는 모든 기능 성분의 작동을 상호작용시킨다.
본 발명의 실시예에 대한 앞서의 설명은 설명과 기술용으로만 제시되었다. 공개된 형태에 발명을 제한하거나 소모시키는 것을 의도한 것이 아니다. 따라서, 당 분야의 통상의 지식을 가진 자에게 있어서, 많은 수정과 변형이 가능할 것이다. 추가적으로 앞서의 공개 내용은 발명을 제한하고자 하는 의도로 제시된 것이 아니다. 발명의 범위는 첨부된 청구범위에 의해 정의되어야 할 것이다.
본 발명은 컴퓨터 시스템 내의 프로세서 설계에 관한 것이다. 특히, 본 발명은 초장 명령어(VLIW) 프로세서의 서브명령을 효과적으로 에뮬레이팅하기 위한 방법 및 장치에 관한 것이다.

Claims (22)

  1. 초장 명령어(VLIW) 프로세서에서 서브 명령을 효율적으로 에뮬레이팅하기 위한 방법으로서, 상기 방법은:
    VLIW 프로그램 내의 VLIW 명령 실행 중 예외 상황을 수신하고; 이때 상기 예외 상황이란 VLIW 명령의 한 개 이상의 서브 명령이 소프트웨어적 에뮬레이션을 필요로 하는 것을 말하며,
    한 개 이상의 서브 명령의 한 개 이상의 부분을 소프트웨어적으로 에뮬레이팅하여 그 에뮬레이션 결과를 저장하며;
    소프트웨어적인 에뮬레이션을 필요로 하지 않는 VLIW 명령의 나머지 서브 명령을 하드웨어적으로 선택적으로 실행하고;
    소프트웨어적으로 에뮬레이팅된 한 개 이상의 서브 명령에서의 저장 결과를 하드웨어적으로 실행된 나머지 서브 명령에서의 결과와 조합하며; 그리고
    VLIW 프로그램 실행을 다시 시작하는; 이상의 단계로 구성되는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서, 한 개 이상의 서브 명령 중 한 개 이상의 부분을 소프트웨어적으로 에뮬레이팅하는 작용은:
    VLIW 프로세서 내의 다수의 레지스터로부터 상태를 저장하고;
    VLIW 프로세서를 특권 모드에 위치시키며; 그리고
    에뮬레이션 실행을 위해 트랩 핸들러를 작동시키는; 이상의 단계로 구성되는 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서, 다수의 레지스터로부터 상태를 저장하는 작용은 다수의 레지스터와 동일한 반도체 칩 상에 위치하는 다수의 섀도 레지스터에 상태를 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제 2 항에 있어서, 트랩 핸들러를 작동시키는 작용은:
    예외 상황을 유발한 서브 명령을 표시하는 예외 레지스터를 판독하고; 그리고
    우선 순위대로 예외 상황을 유발한 서브 명령들을 에뮬레이팅하는; 이상의 단계로 구성되는 것을 특징으로 하는 방법.
  5. 제 1 항에 있어서, 나머지 서브 명령들을 하드웨어적으로 선택적으로 실행하는 작용은:
    에뮬레이팅될 필요가 없는 나머지 서브 명령들의 실행을 작동시키고;
    작동 중인 나머지 서브 명령들만이 실행되도록 VLIW 명령을 실행하며; 그리고
    예외 상황 처리를 진행하기 위해 VLIW 명령 실행 후 트랩을 발생시키는; 이상의 단계로 구성되는 것을 특징으로 하는 방법.
  6. 제 5 항에 있어서, 나머지 서브 명령의 실행을 작동시키는 작용은:
    작동 레지스터에 작동 신호 패턴을 저장하고; 이때 작동 레지스터의 각각의 비트는 상응하는 서브 명령이 작동하는 지를 표시하며, 그리고
    하드웨어 기능 유닛이 작동 중인 서브 명령만을 실행하도록 VLIW 프로세서의 하드웨어 기능 유닛에 작동 레지스터로부터의 작동 신호 패턴을 적용하는; 이상의 단계로 구성되는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서, 소프트웨어적으로 에뮬레이팅된 한 개 이상의 서브 명령으로부터 저장된 결과를 조합하는 작용은:
    VLIW 프로세서의 레지스터 파일에 한 개 이상의 서브 명령에 대한 결과를 이송하는; 단계로 구성되는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서, 한 개 이상의 서브 명령을 소프트웨어적으로 에뮬레이팅하는 작용은:
    나머지 서브 명령들을 하드웨어적으로 선택적으로 에뮬레이팅하는 작용 이후에 발생하는 것을 특징으로 하는 방법.
  9. 제 1 항에 있어서, VLIW 명령 중 각각의 서브 명령은 VLIW 프로세서의 연산 작용을 실행하는 다른 하드웨어 기능 유닛을 제어하는 것을 특징으로 하는 방법.
  10. 제 1 항에 있어서, 한 개 이상의 서브 명령 중 한 개 이상의 부분을 소프트웨어적으로 에뮬레이팅하는 작용은:
    한 개 이상의 서브 명령에 대한 예외 상황을 처리하는; 단계를 포함하는 것을 특징으로 하는 방법.
  11. 초장 명령어(VLIW) 프로세서에서 서브 명령들을 효율적으로 에뮬레이팅하기 위한 방법으로서, 상기 방법은:
    VLIW 프로그램 내의 VLIW 명령 실행 중 예외 상황을 수신하고; 이때 상기 예외 상황이란 VLIW 명령의 한 개 이상의 서브 명령이 소프트웨어적 에뮬레이션을 필요로 하는 것을 말하며,
    한 개 이상의 서브 명령의 한 개 이상의 부분을 소프트웨어적으로 에뮬레이팅하여 그 에뮬레이션 결과를 저장하며; 이때 상기 에뮬레이팅 작용은:
    VLIW 프로세서 내의 다수의 레지스터로부터 상태를 저장하고;
    VLIW 프로세서를 특권 모드에 위치시키며;
    예외 상황을 유발한 서브 명령을 표시하는 예외 레지스터를 판독하고; 그리고
    우선 순위에 따라 예외 상황을 유발한 서브 명령들을 에뮬레이팅하고;
    작동 레지스터에 작동 신호 패턴을 저장하고; 이때 작동 레지스터의 각각의 비트는 상응하는 서브 명령이 작동하는 지를 표시하며,
    하드웨어 기능 유닛이 작동 서브 명령들만을 실행하도록 VLIW 프로세서의 하드웨어 기능 유닛에 작동 레지스터로부터의 작동 신호 패턴을 적용하며;
    작동 중인 나머지 서브 명령들만이 실행되도록 VLIW 명령을 실행하고;
    예외 상황 처리를 진행하기 위해 VLIW 명령이 실행된 후에 트랩을 발생시키며;
    소프트웨어적으로 에뮬레이팅된 한 개 이상의 서브 명령에서의 저장 결과를 하드웨어적으로 실행된 나머지 서브 명령에서의 결과와 조합하며; 그리고
    VLIW 프로그램 실행을 다시 시작하는; 이상의 단계로 구성되는 것을 특징으로 하는 방법.
  12. 초장 명령어(VLIW) 명령의 서브 명령을 효율적으로 에뮬레이팅하는 장치로서, 상기 장치는:
    VLIW 명령을 포함하는 VLIW 프로그램을 실행하기 위한, VLIW 프로세서;
    VLIW 명령 중 한 개 이상의 서브 명령이 소프트웨어적 에뮬레이션을 필요로 하는 경우 VLIW 명령 실행 중 예외를 발생시키도록 배치되는, 예외 발생 메카니즘;
    한 개 이상의 서브 명령 중 한 개 이상의 부분을 소프트웨어적으로 에뮬레이팅하고 그 에뮬레이션 결과를 저장하도록 배치되는, 에뮬레이션 메카니즘;
    소프트웨어적 에뮬레이션을 필요로 하지 않는 VLIW 명령의 나머지 서브 명령을 실행하기 위해 VLIW 프로세서 내의 하드웨어 기능 유닛을 선택적으로 작동시키도록 배치되는, 작동 메카니즘; 그리고
    소프트웨어적으로 에뮬레이팅된 한 개 이상의 서브 명령에서의 저장 결과를 하드웨어적으로 실행된 나머지 서브 명령에서의 결과와 조합하도록 배치되는 조합 메카니즘;으로 구성되는 것을 특징으로 하는 장치.
  13. 제 12 항에 있어서, 상기 에뮬레이션 메카니즘은:
    VLIW 프로세서 내의 다수의 레지스터로부터 상태를 저장하고;
    VLIW 프로세서를 특권 모드에 위치시키며; 그리고
    에뮬레이션 실행을 위해 트랩 핸들러를 작동시키도록; 배치되는 것을 특징으로 하는 장치.
  14. 제 13 항에 있어서, 다수의 레지스터로부터 상태 정보를 저장하기 위해, 다수의 레지스터와 동일한 반도체 칩 상에 위치하는, 다수의 섀도 레지스터를 추가로 포함하는 것을 특징으로 하는 장치.
  15. 제 13 항에 있어서, 에뮬레이션 메카니즘은:
    예외 상황을 유발한 에뮬레이션 메카니즘을 표시하는 예외 레지스터를 판독하고; 그리고
    우선 순위에 따라 예외를 유발한 서브 명령들을 에뮬레이팅하도록; 배치되는 것을 특징으로 하는 장치.
  16. 제 12 항에 있어서, 소프트웨어적 에뮬레이션을 필요로 하지 않는 VLIW 명령의 나머지 서브 명령들을 VLIW 명령이 실행한 후에, 트랩을 발생시키도록 배치되는 트랩 발생 메카니즘을 추가로 포함하는 것을 특징으로 하는 장치.
  17. 제 16 항에 있어서, 작동 메카니즘은:
    작동 레지스터에 작동 신호 패턴을 저장하고; 이때 작동 레지스터의 각각의 비트는 상응하는 서브 명령이 작동하는 지를 표시하며, 그리고
    다수의 하드웨어 기능 유닛이 작동하는 서브 명령들만을 실행하도록 VLIW 프로세서의 다수의 하드웨어 기능 유닛에 작동 레지스터로부터의 작동 신호 패턴을 적용하도록; 배치되는 것을 특징으로 하는 장치.
  18. 제 12 항에 있어서, 상기 조합 메카니즘은 소프트웨어적으로 에뮬레이팅된 한 개 이상의 서브 명령에 대한 결과를, VLIW 프로세서의 레지스터 파일에 이송하도록 배치되는 것을 특징으로 하는 장치.
  19. 제 12 항에 있어서, VLIW 명령의 각각의 서브 명령은 VLIW 프로세서의 연산 작용을 실행하는 다른 하드웨어 기능 유닛을 제어하는 것을 특징으로 하는 장치.
  20. 제 12 항에 있어서, 에뮬레이션 메카니즘은 한 개 이상의 서브 명령에 대한 예외 상황을 처리하도록 배치되는 것을 특징으로 하는 장치.
  21. 초장 명령어(VLIW) 명령에서 서브 명령을 효율적으로 에뮬레이팅하기 위한 장치로서; 상기 장치는:
    VLIW 명령을 포함하는 VLIW 프로그램을 실행하기 위한, VLIW 프로세서;
    VLIW 명령 중 한 개 이상의 서브 명령이 소프트웨어적 에뮬레이션을 필요로 할 경우 VLIW 명령의 실행 중 예외를 발생시키도록 배치되는, 예외 발생 메카니즘;
    소프트웨어적으로 한 개 이상의 서브 명령 중 한 개 이상의 부분을 에뮬레이팅하도록, 그리고 그 에뮬레이션 결과를 저장하도록 배치되는, 에뮬레이션 메카니즘; 이때 상기 에뮬레이션 메카니즘은:
    VLIW 프로세서 내의 다수의 레지스터로부터 상태를 저장하고;
    VLIW 프로세서를 특권 모드에 위치시키며;
    우선 순위에 따라 예외 상황을 발생시킨 서브 명령들을 에뮬레이팅하도록; 배치되고,
    소프트웨어적 에뮬레이션을 필요로 하지 않는 VLIW 명령의 나머지 서브 명령들만을 실행하기 위해 VLIW 프로세서 내의 하드웨어 기능 유닛을 선택적으로 작동시키도록 배치되는, 작동 메카니즘; 이때 상기 작동 메카니즘은:
    작동 레지스터에 작동 신호 패턴을 저장하고; 이때 작동 레지스터의 각각의 비트는 상응하는 서브 명령이 작동하는 지를 나타내고, 그리고
    하드웨어 기능 유닛이 작동 중인 서브 명령들만을 실행하도록 VLIW 프로세서의 하드웨어 기능 유닛에 작동 레지스터로부터의 작동 신호 패턴을 적용하도록; 배치되며,
    소프트웨어적 에뮬레이션을 필요로 하지 않는 VLIW 명령의 나머지 서브 명령들을 VLIW 명령이 실행한 후에, 트랩을 발생시키도록 배치되는, 트랩 발생 메카니즘; 그리고
    소프트웨어적으로 에뮬레이팅된 한 개 이상의 서브 명령에서의 저장 결과를 하드웨어적으로 실행된 나머지 서브 명령들에서의 결과와 조합하도록 배치되는, 조합 메카니즘;으로 구성되는 것을 특징으로 하는 장치.
  22. 초장 명령어(VLIW) 명령의 서브 명령들을 효율적으로 에뮬레이팅하는 컴퓨터 시스템으로서, 상기 시스템은:
    제 2 저장 장치;
    VLIW 명령을 포함하는 VLIW 프로그램을 실행하기 위한 VLIW 프로세서;
    VLIW 명령의 한 개 이상의 서브 명령이 소프트웨어적 에뮬레이션을 필요로 하는 경우 VLIW 명령의 실행 중 예외를 발생시키도록 배치되는, VLIW 프로세서 내의 예외 발생 메카니즘;
    한 개 이상의 서브 명령 중 한 개 이상의 부분을 소프트웨어적으로 에뮬레이팅하여 그 에뮬레이션 결과를 저장하도록 배치되는, VLIW 프로세서 내의 에뮬레이션 메카니즘;
    소프트웨어적 에뮬레이션을 필요로 하지 않는 VLIW 명령의 나머지 서브 명령만을 실행하기 위해 VLIW 프로세서 내의 하드웨어 기능 유닛을 선택적으로 작동시키도록 배치되는, VLIW 프로세서 내의 작동 메카니즘; 그리고
    소프트웨어적으로 에뮬레이팅된 한 개 이상의 서브 명령에서의 저장 결과를 하드웨어적으로 실행된 나머지 서브 명령에서의 결과와 조합하도록 배치되는, VLIW 프로세서 내의 조합 메카니즘;으로 구성되는 것을 특징으로 하는 컴퓨터 시스템.
KR1020000012374A 1999-03-22 2000-03-13 초장 명령어 프로세서의 효율적인 서브-명령 에뮬레이션 KR100548609B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/273,602 US6405300B1 (en) 1999-03-22 1999-03-22 Combining results of selectively executed remaining sub-instructions with that of emulated sub-instruction causing exception in VLIW processor
US09/273,602 1999-03-22

Publications (2)

Publication Number Publication Date
KR20010006789A true KR20010006789A (ko) 2001-01-26
KR100548609B1 KR100548609B1 (ko) 2006-02-01

Family

ID=23044652

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000012374A KR100548609B1 (ko) 1999-03-22 2000-03-13 초장 명령어 프로세서의 효율적인 서브-명령 에뮬레이션

Country Status (5)

Country Link
US (1) US6405300B1 (ko)
EP (1) EP1039376B1 (ko)
JP (1) JP4465081B2 (ko)
KR (1) KR100548609B1 (ko)
DE (1) DE60039808D1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100831472B1 (ko) * 2003-06-30 2008-05-22 인텔 코오퍼레이션 데이터 셔플링을 위한 방법 및 장치
KR101041879B1 (ko) * 2005-12-09 2011-06-17 후지제롯쿠스 가부시끼가이샤 컨트롤 장치 및 기억 장치의 효과적인 이용 방법

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4825357B2 (ja) * 2001-04-05 2011-11-30 富士通株式会社 シミュレーション方法、その方法をコンピュータに実行させるプログラムおよびそのプログラムを記録した記録媒体
KR100464406B1 (ko) * 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
JP2007058731A (ja) * 2005-08-26 2007-03-08 Matsushita Electric Ind Co Ltd プロセッサ、及び並列命令実行対応デバッグ装置
US9361114B1 (en) * 2005-12-06 2016-06-07 Azul Systems, Inc. Instruction based interrupt masking for managing interrupts in a computer environment
US9710270B2 (en) * 2010-12-20 2017-07-18 International Business Machines Corporation Exception control method, system, and program
US11573802B2 (en) * 2019-10-23 2023-02-07 Texas Instruments Incorporated User mode event handling

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0474297B1 (en) * 1990-09-05 1998-06-10 Koninklijke Philips Electronics N.V. Very long instruction word machine for efficient execution of programs with conditional branches
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US6065106A (en) * 1996-12-20 2000-05-16 Texas Instruments Incorporated Resuming normal execution by restoring without refetching instructions in multi-word instruction register interrupted by debug instructions loading and processing
US5881280A (en) 1997-07-25 1999-03-09 Hewlett-Packard Company Method and system for selecting instructions for re-execution for in-line exception recovery in a speculative execution processor
US6038652A (en) 1998-09-30 2000-03-14 Intel Corporation Exception reporting on function generation in an SIMD processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100831472B1 (ko) * 2003-06-30 2008-05-22 인텔 코오퍼레이션 데이터 셔플링을 위한 방법 및 장치
KR101041879B1 (ko) * 2005-12-09 2011-06-17 후지제롯쿠스 가부시끼가이샤 컨트롤 장치 및 기억 장치의 효과적인 이용 방법

Also Published As

Publication number Publication date
DE60039808D1 (de) 2008-09-25
KR100548609B1 (ko) 2006-02-01
EP1039376A1 (en) 2000-09-27
US6405300B1 (en) 2002-06-11
JP4465081B2 (ja) 2010-05-19
EP1039376B1 (en) 2008-08-13
JP2000284964A (ja) 2000-10-13

Similar Documents

Publication Publication Date Title
RU2263949C2 (ru) Перезапускаемые транслированные команды
KR100571322B1 (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
JPS58151655A (ja) 情報処理装置
JPH07248897A (ja) コンピュータ・システムにおける例外からの回復方法、及びそのための装置
WO2007002408A2 (en) Computer processor pipeline with shadow registers for context switching, and method
KR20030059339A (ko) 단일 스텝 처리 방법 및 장치
US4562538A (en) Microprocessor having decision pointer to process restore position
WO2002033570A2 (en) Digital signal processing apparatus
US7761744B2 (en) Debugging method
KR100548609B1 (ko) 초장 명령어 프로세서의 효율적인 서브-명령 에뮬레이션
JP4569934B2 (ja) 情報処理装置、例外制御回路及び例外制御方法
KR100776608B1 (ko) 컴퓨팅 시스템
JP2001209534A (ja) 述語データを提供するシステム
JPH1185513A (ja) プロセッサ
US11847455B2 (en) Clearing register data using a write enable signal
TW200535698A (en) Apparatus and method for managing registersn in a processor to emulate a portion of a stack
EP1537480B1 (en) Method and apparatus for handling nested interrupts
JPH03204030A (ja) コンピュータ用プロセツサ
US5819081A (en) Method of executing a branch instruction of jumping to a subroutine in a pipeline control system
CN111324948A (zh) 模拟方法及模拟系统
TWI249130B (en) Semiconductor device
JPS6236575B2 (ko)
KR20010072490A (ko) 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치
Kraley et al. Design of a user-microprogrammable building block
EP0211487A1 (en) Conditional operations in computers

Legal Events

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

Payment date: 20130107

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150106

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160104

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180103

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20190103

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20200103

Year of fee payment: 15