KR101016713B1 - 데이터 처리 시스템 내의 예측 명령 - Google Patents

데이터 처리 시스템 내의 예측 명령 Download PDF

Info

Publication number
KR101016713B1
KR101016713B1 KR1020057023079A KR20057023079A KR101016713B1 KR 101016713 B1 KR101016713 B1 KR 101016713B1 KR 1020057023079 A KR1020057023079 A KR 1020057023079A KR 20057023079 A KR20057023079 A KR 20057023079A KR 101016713 B1 KR101016713 B1 KR 101016713B1
Authority
KR
South Korea
Prior art keywords
instruction
command
prediction
program
condition
Prior art date
Application number
KR1020057023079A
Other languages
English (en)
Other versions
KR20060063790A (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 KR20060063790A publication Critical patent/KR20060063790A/ko
Application granted granted Critical
Publication of KR101016713B1 publication Critical patent/KR101016713B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30058Conditional 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

데이터 처리 시스템(2) 내에, 관련 프로그램 명령(26, 28)에 조건부 동작을 부가한 예측 명령(30)이 제공된다.
데이터 처리 로직, 명령 디코더, 예측 명령, 관련 프로그램 명령, 조건 코드

Description

데이터 처리 시스템 내의 예측 명령{PREDICATION INSTRUCTION WITHIN A DATA PROCESSING SYSTEM}
본 발명은 데이터 처리 시스템에 관한 것이다. 보다 상세하게는, 본 발명은 이러한 데이터 처리 시스템 내의 프로그램 명령의 조건부 실행에 관한 것이다.
이전 처리 동작의 결과에 따라 조건부 실행되거나 실행되지 않는 프로그램 명령을 포함하는 명령 집합에 응답하는 데이터 처리 시스템이 공지되어 있다. 예로써, ARM 32-비트 명령 집합은 모든 조건이 실행 억제 또는 실행 허용의 조건을 지정하는 4-비트 조건 코드 필드를 포함한다는 점에서 전적으로 조건부이다.
완전 조건부 32-비트 ARM 명령 집합이 그 조건부 동작에 효과적이지만, 각 명령 내 조건 코드에 전용된 4-비트는 명령 집합의 비트 코딩 공간의 상당한 비율을 나타낸다. 많은 경우, 조건 코드의 모든 능력은 활용되지 않으며, 이들 조건 코드에 전용된 4-비트는 그리 잘 사용되지 않는다.
또한, ARM 프로세서에 의해 지원되는 섬(Thumb) 명령 집합과 같은 비-조건부 명령 집합이 공지되어 있다. 조건 코드로 비전용되는 소정의 명령 비트 공간은 섬 명령을 작게 하여 코드 밀도를 향상시킨다. 그러나, 이 접근의 단점은 소정 동작을 행하는데 필요한 명령의 수가 많아질 수 있어서 결국 32-비트 ARM 명령 집합의 조건 코드의 활용 능력을 갖지 않고 처리 속도가 늦어질 수 있다.
PA-RISC 프로세서와 같은 다른 프로세서로부터, 그 결과에 따라 다음 명령을 취소할 수 있는 명령이 공지되어 있다. 이러한 명령의 예는 비교 동작일 수 있는데, 이 비교 동작은 비교된 수가 동일한지 여부에 따라 다음의 후속 명령의 실행을 억제 또는 허용하도록 사용된다. 이러한 취소 다음 명령 방식이 유용하지만, 그 자체의 처리에 따라 단지 다음 명령을 취소하는데만 사용된다는 점에서 유연성(flexibility)에 제한이 있다.
Pnevrnatikatos D N et al: "Guarded Execution and Branch Prediction In Dynamic ILP Processors" Computer Architecture News, Association for Computing Machinery, New York, US, Vol.22, No.2,1 April 1994(1994-04-01), pages 120-129, XP000450344는 이하의 1개 이상의 명령을 예측하는 기능을 하는 가드(Guard) 명령을 제공하는 시스템에 대해서 개시한다.
본 발명의 일 측면에 따라 제공되는 데이터 처리 장치(2)는:
데이터 처리 연산을 수행하도록 동작가능한 데이터 처리 로직(4,6,8,10)과;
상기 데이터 처리 로직이 상기 데이터 처리 연산을 수행하도록 제어하기 위해, 프로그램 명령의 디코딩을 수행하도록 동작가능한 명령 디코더(12)와;
실행되는 프로그램 명령의 메모리 위치를 나타내는 어드레스를 저장하도록 동작가능한 프로그램 카운터 레지스터(PC)를 포함하고,
상기 명령 디코더는, 예측 명령(IT)에 응답하여, 상기 예측 명령 이외의 하나 이상의 프로그램 명령 실행에 의해 설정된 상기 데이터 처리 장치의 하나 이상의 조건 상태에 따라, 상기 데이터 처리 로직이 하나 이상의 관련 프로그램 명령을 실행 또는 비실행하도록 제어하고,
상기 예측 명령에 따르는 상기 하나 이상의 관련 프로그램 명령 중 몇 개가 실행되는지를 나타내는 카운터 값을 저장하도록 동작가능한 예측 명령 카운터 레지스터(μPC)를 더 포함하고, 상기 프로그램 카운터 레지스터는 상기 예측 명령에 따르는 상기 하나 이상의 관련 프로그램 명령이 실행되고 있을 때 상기 예측 명령에 대응하는 어드레스의 저장을 계속하고;
예외의 발생시 상기 카운터 값을 저장하고, 상기 예외의 완료시 상기 카운터 값에 의해 지목된 프로그램 명령에서 시작하는 실행을 재개하도록 동작가능한 예외처리회로(18)를 더 포함하는 것을 특징으로 한다.
삭제
삭제
본 발명이 인정하는 바에 따르면, 특별한 목적의 예측 명령의 제공은 이들 명령이 보다 유연하게 특정될 수 있는 프로세서의 조건 상태에 따라 다른 명령의 실행을 조건부화시킨다는 점에서 매우 유용할 수 있다. 따라서, 프로그래머 및 컴파일러는 이러한 예측 명령을 이용하여 보다 작고 빠른 프로그램을 작성할 수 있다.
처리 시스템의 제어를 용이하게 하기 위해, 처리 시스템의 제어를 용이하게 하기 위해, 정상 프로그램 카운터 레지스터는 예측 명령의 적용을 받는 하나 이상의 관련 프로그램 명령의 실행 횟수를 나타내는 카운트 값을 저장하도록 동작 가능한 예측 명령 카운터 레지스터에 의해 보완된다. 예측 명령은 그 범위 내에서 인코딩된 도달(reach)을 효과적으로 가지며, 이 도달은 이로부터 실행 진행되고 이 도달이 초과된 트랙을 유지하기 위해 예측 명령이 제어하고 시스템이 필요로 하는 관련 프로그램 명령의 수를 특정한다.
이 예측 명령 카운트 레지스터는 예외 및 예외로부터의 복귀의 취급에 특히 유용하며, 이로부터 예외로부터의 복귀시 예측 명령 카운트 레지스터는 복구될 수 있으며, 프로그램 명령의 복귀 여부를 결정하는데 사용되는 그 값은 선행하는 예측 명령에 의해 그 동작이 영향을 받는 값이다.
예측 명령은 오직 하나의 다른 명령에만 영향을 미치는 것이 가능하지만, 바 람직한 실시예에서, 예측 명령은 복수의 관련 프로그램 명령의 실행을 제어하도록 제공된다.
상기 예측 명령은 부분적 또는 전적으로 조건부인 관련 프로그램 명령에 관련하여 사용될 수 있지만, 본 발명의 바람직한 실시예는 비조건부인 관련 프로그램 명령과 함께 예측 명령이 사용되는 것이다. 따라서, 예측 명령은 비조건부 명령 집합에 조건부 명령 동작을 추가할 수 있다.
예측 명령이 관련 프로그램 명령에 대한 그 제어의 기초가 되는 조건 상태는 여러 가지 다양한 형태를 취할 수 있지만, 예측 명령에 입력을 제공하기 위해 바람직한 실시예에서는 예컨대, 제로 플래그, 동등 플래그(equal flag), 캐리 플래그(carry flag) 등의 조건 코드 플래그를 사용한다.
관련 프로그램 명령의 제어를 위해 예측 명령에 의해 평가되는 조건 상태는 특별 시스템의 필요 조건에 따라 다른 시간에서 평가될 수 있다. 조건 상태는 예측 명령의 실행시에 한번 평가될 수 있으며, 그 평가 결과는 모든 관련 프로그램 명령의 제어에 사용되었다. 이것은 명령 파이프라인에서 조기에 예측 명령을 완전히 평가한 후, 빠르고 간단한 실행 방식으로 명령 파이프라인으로부터 예측 명령을 제거할 수 있도록 하는 장점을 갖는다. 다른 방법으로서, 예컨대, 조건 코드가 일부 관련 명령에 대해서 통과되고 다른 관련 명령에 대해 실패할 수 있도록 하는 각 관련 프로그램 명령의 실행 이전에 조건 상태를 평가하는 것도 가능하다. 이 접근 방법이 갖는 장점은 조건부 명령 동작으로써 실시하고자 하는 다수의 공통적 방식의 데이터 처리 동작에 아주 적합한 방식으로 조건부 동작을 미세하게 제어할 수 있도록 한다는 점이다.
관련 명령은 예측 명령에 대한 다양한 다른 상대 위치를 가질 수 있음을 알 수 있지만, 바람직한 실시예에서는 관련 프로그램 명령이 즉각적으로 예측 명령을 따르는 경우이다. 이는 실행 및 프로그래밍 목적에 편리하다.
관련 프로그램 명령을 여러 가지 다른 방법으로 제어하도록 예측 명령을 조정하는 것이 가능하다. 하나의 가능한 바람직한 실시예에서, 관련 프로그램 명령은 2 블록의 명령으로 조정되는데, 그 한 블록은 조건 코드 통과시 실행되고, 나머지 블록은 조건 코드 실패시 실행된다. 이것은 IF...Then...Else type의 명령과 유사한 동작을 제공한다.
이러한 실시예에서, 다른 명령 블록들은 고정된 크기를 갖지만, 예측 명령 자체 내의 필드에 의해 특정되는 다양한 크기를 갖는 것이 바람직하다. 이것은 블록 크기, 예측 명령에 대한 분기(branching) 및 기타 동작의 편리한 제어 및 개선된 코드 밀도에 대해 유연성을 제공한다.
예측 명령은 소정 조건의 특별한 집합에 전용될 수 있지만, 바람직한 실시예에서, 예측 명령은 소정 조건이 특정될 수 있는 가변 필드를 포함한다.
유리한 유연성의 정도를 제공하고, 특히 그 조건 코드를 통과 및 통과하지 않는 명령의 끼워넣기를 허용하는 다른 형태의 예측 명령은, 그 예측 명령이 하나 이상의 필드를 포함하고, 각 필드는 하나 이상의 조건 상태를 하나 이상의 소정 상태와 비교하는 것에 따라 각 관련 프로그램 명령이 실행되거나 실행되지 않는지를 특정하는 그러한 방식의 것이다.
보다 상세하게, 바람직한 실시예에 따르면, 예측 명령은, 각 관련 프로그램 명령이 실행되는지를 결정하도록, 각 관련 명령에 대해 하나 이상의 조건 상태 또는 하나 이상의 조건 상태의 보수가 소정 상태와 비교되는지 여부를 특정하는 필드를 포함할 수 있다. 따라서, 개개의 관련 프로그램 명령은 "Then" 조건 또는 "Else" 조건에 대해서 실행되도록 특정될 수 있다.
삭제
삭제
관련 프로그램 명령이 예측 명령에 의존하여 실행의 여부를 제어 가능한 것과 함께, 예측 명령은 실행시 다른 동작을 나타내도록 관련 명령을 변경하는데 이용될 수도 있다. 이것은 명령 집합의 효율적인 확장으로서 보여질 수 있다.
관련 프로그램 명령을 변경시키는 특별히 바람직한 방법은, 이들이 소정의 프로그램 가능한 필드를 포함하는 특정의 예측 명령에 따르는 경우, 관련 프로그램 명령이 하나 이상의 조건 상태로 임의 변경되지 않도록 저지하는 것이다. 따라서, 조건 코드 플래그 업데이팅은 적절한 예측 명령에 의해 억제될 수 있다.
본 발명의 다른 측면에 따라 제공된 데이터 처리 방법은:
데이터 처리 로직으로 데이터 처리 연산을 수행하는 단계와;
상기 데이터 처리 로직이 상기 데이터 처리 연산을 수행하도록 제어하기 위해, 명령 디코더로 프로그램 명령을 디코딩하는 단계와;
프로그램 카운터 레지스터에, 실행되는 프로그램 명령의 메모리 위치를 나타내는 어드레스를 저장하는 단계를 포함하고,
예측 명령에 응답하여, 상기 명령 디코더는, 상기 예측 명령 이외의 하나 이상의 프로그램 명령 실행에 의해 설정된 데이터 처리 장치의 하나 이상의 조건 상태에 따라, 상기 데이터 처리 로직이 하나 이상의 관련 프로그램 명령을 실행 또는 비실행하도록 제어하고,
상기 예측 명령에 따르는 상기 하나 이상의 관련 프로그램 명령 중 몇 개가 실행되는지를 나타내는 카운터 값을 예측 명령 카운터 레지스터에 저장하는 단계와;
상기 하나 이상의 관련 프로그램 명령이 실행되고 있을 때 상기 예측 명령에 대응하는 어드레스를 상기 프로그램 카운터 레지스터에 저장하는 것을 계속하는 단계와;
예외의 발생시 상기 카운터 값을 저장하고, 상기 예외의 완료시 상기 카운터 값에 의해 지목된 프로그램 명령에서 시작하는 실행을 재개하는 단계를 더 포함하는 것을 특징으로 한다.
삭제
본 발명의 또 다른 측면에 따라 제공된 컴퓨터 프로그램 제품은 본 기술에 따라 데이터 처리 장치를 제어하도록 동작가능한 컴퓨터 프로그램을 포함한다.
삭제
이하, 본 발명의 실시예들을 첨부 도면을 참조로 하여 단지 예시를 목적으로 설명한다. 도면에서,
도 1은 예측 명령을 포함하는 프로그램 명령을 실행 가능한 데이터 처리 장치의 개략적인 도면이고;
도 2는 예측 명령에 응답하여 행해지는 명령 디코더의 동작을 개략적으로 도시한 도면이고;
도 3 및 4는 개별 관련 프로그램 명령이 마스크 값과 조건 코드에 의존하여 실행 또는 비실행되도록 제어되는 예측 명령의 한 형태를 개략적으로 도시한 도면이고;
도 5는 관련 명령의 블록이 조건 코드에 따라 실행 또는 비실행되는 예측 명령의 다른 형태를 개략적으로 도시한 다이어그램이고;
도 6은 도 5의 예측 명령을 따라는 실행의 제어를 개략적으로 도시한 흐름도이고;
도 7은 전술한 기법의 실행을 위한 범용 컴퓨터 장치의 개략적인 다이어그램이다.
도 1은 프로그램 레지스터 뱅크(4), 승산기(6), 시프터(8), 가산기(10), 명령 디코더(12), 명령 파이프라인(14), 프리페치 유닛(16), 인터럽트 컨트롤러(18), 프로그램 카운터 레지스터(20) 및 예측 명령 카운터 레지스터(또한 콘텍스트 레지스터로서 공지됨)(22)를 포함하는 프로세서 코어(2) 형태의 데이터 처리 장치를 도시한다. 프로세서 코어(2)는 전형적으로 당업자들에게는 익숙한 여러 가지 다른 회로 소자들을 포함하지만, 이들 회로 소자들은 명확성을 위해 생략되었음을 이해하여야 한다.
동작시, 프로그램 명령(I)은 메모리(도시 생략)에서 불러와서, 프로그램 명령이 당업자들에게 익숙한 페치, 디코드 및 실행과 같은 다양한 파이프라인 스테이지를 통과하는 명령 파이프라인(14)으로 공급된다. 명령 파이프라인(14)의 디코드 스테이지로부터의 명령은 명령 디코더(12)로 공급되고, 명령 디코더에서 명령은 프로그램 레지스터 뱅크(4)로부터 독출한 데이터 값에 대해, 승산기(6), 시프터(8), 가산기(10) 및 ALU(도시 생략)와 같은 기타 회로 소자에 의해 수행되는 데이터 처리 동작/조작을 구성 및 제어하여 프로그램 레지스터 뱅크(4)에 다시 기록될 결과값을 생성하는 제어 신호를 생성하도록 기능한다. 프리페치 유닛(16)은 프로그램 명령(I)을 명령 파이프라인(14) 내로 불러오는데 사용되는 명령 어드레스 생성을 제어하는데 사용된다. 프로그램 카운터 레지스터(20)(프로그램 레지스터 뱅크(4) 내의 프로그램 레지스터 중 하나일 수 있다.)는 실행되는 현재 명령의 어드레스 값 또는 이 값에 대한 소정의 오프셋(예를 들면, +4)을 갖는 어드레스를 공급한다. 또한 콘텍스트 레지스터(22)는 예측 명령에 따르는 관련 프로그램 명령의 부분적으로 완료된 시퀀스가, 예외의 발생에 의해 이러한 실행이 인터럽트되더라도, 여전히 예측 명령에 작용받도록, 인터럽트 컨트롤러(18)에 의해 제어됨으로써 인터럽트로부터의 복귀시 사용되는 소정 값을 프리페치 유닛(16)에 공급한다.
도 2는 예측 명령(IT)이 명령 디코더(12)로 프로그램 명령의 스트림으로 공급되는 제1 실시예를 개략적으로 도시하고 있다. 명령 디코더(12)가 이러한 예측 명령을 검출할 때, 디코더는 예측 명령을 디코딩하고 명령 스트림 내에서 예측 명 령을 따르는 관련 프로그램 명령에 조건 코드를 효과적으로 부가한다. 본 실시예에서 명령 스트림 내의 프로그램 명령은 프로그램 명령과 관련된 조건 코드를 정상적으로 갖지 않는 16-비트 섬(Thumb) 명령과 같은 정상적으로 비-조건부인 명령임을 알 것이다. 그러나, 섬 명령 집합을 지원하는 프로세서는 전적으로 조건부인 32-비트 ARM 명령 집합을 또한 지원한다. 이 ARM 명령 집합으로부터의 명령이 디코딩될 때, 이들 명령 모두는 명령 디코더(12)로부터 명령 파이프라인(14)을 따라 아래로 통과되어 그들 명령의 후속 실행 또는 비실행에 영향을 미치는 조건 코드를 포함한다. 따라서, 명령 파이프라인(14)은 이미 조건 코드를 인식하고, 프로그램 명령과 관련된 조건 코드를 해석하고 그에 응답하기 위한 구조 및 메카니즘을 갖는다. 종합적인 수준에서, 예측 명령(IT)은 명령 스트림 내에서 이를 따르는 하나 이상의 관련 프로그램 명령에 조건 코드를 가산하도록 기능하지만, 그 자체는 이러한 조건 코드 정보의 가산 이외의 처리 기능을 수행하지 않으므로 명령 스트림으로부터 제거됨을 알 수 있다.
도 3은 도 2의 예측 명령(IT)을 보다 상세하게 나타낸다. 특히, 이 명령은 IT 명령을 따르는 1,2,3, 또는 4 프로그램 명령 중 어떤 것이 그 예측에 적용을 받는지 여부 및 이 경우 적용될 조건 코드의 극성을 나타내는 마스크 값("xyx") 및 조건 코드("cond")를 특정한다. 조건 코드 및 조건 코드의 보수는 대응하는 값(x, y, z)이 각각의 제1, 제3 및 제4의 후속하는 관련 프로그램 명령 및 이 플래그의 값에 대해 제공되는지 여부에 따라 적용될 수 있다. 도 3은 상기 값(x, y, z)이 "1"로 종료되는 마스크 값(24)을 어떻게 형성하는 지를 보여주고 있다.
도 4는 4개의 관련 명령이 예측 명령에 의해 예측되는 그러한 명령의 예를 개략적으로 나타내고 있다. 이들 명령중 제1은 "Then" 형태로 예측되는 것으로 간주되어, 조건 코드가 부합되면 실행될 것이다. 제2, 제3 및 제4 관련 명령은 "Then" 조건 또는 "Else" 조건시 실행되는 것으로 특정될 수 있다. 본 실시예에서, 4개의 관련 프로그램 명령은 Then, Then, Else and Then 형태를 갖는다. 마스크 값(24) 내에서, 제2, 제3 및 제4 관련 명령에 대한 마스크 값 비트(x, y, z)는 각각 0,1,0이며, 마스크 값은 "1"의 값으로 종료된다.
본 실시예에서 특정된 조건 코드는 "1010"이다. 이 조건 코드는 그 정상 형태로 제1 관련 명령에 적용된다. 그런 다음, 마스크 값이 좌측으로 한자리 이동되고, 마스크 값에서 이동된 가장 중요한 비트는 다음 명령에 적용될 조건 코드의 가장 덜 중요한 비트 위치로 이동된다. 따라서, 다음 명령에 적용될 조건 코드는 마스크 값 내에서 가장 중요한 비트에 의존하여 정상 형태와 보수 형태 사이에서 스위칭될 수 있다. 본 실시예에서, 예측 명령을 따르면 제1, 제2 및 제4 명령은 정상 조건 코드의 적용을 받는 반면, 예측 명령을 따르면 제3 명령은 조건 코드의 보수의 적용을 받는 것을 알 수 있다. 마스크 값("1000")의 검출시, 이는 최종 예측 명령이 도달되었고, 예측 명령의 영향이 후속 프로그램 명령으로까지 연장되지 않을 것임을 나타낸다.
이하, 도 3 및 도 4에 나타낸 명령의 방식에 대한 설명을 추가한다.
IT
If-Then(IT) 명령은 메모리의 다음 N 명령이 조건부가 되도록 한다. IT 명 령을 따르고 그에 의해 영향을 받는 N 명령의 집합은 "IT 블록"으로서 알려져 있다.
IT 블록 내에서 실행시 일부(또는 전부) 명령의 기능성을 재-정의하는 것이 가능하다. 예를 들면, CMP/CMN/TST 이외의 섬-16 비트 명령은 플래그 세팅이 아닐 수 있다. 이 경우, IT는 그 자체에 대해 후자의 효과를 주는 AL 조건으로 사용될 수 있다.
여분의 PSR 비트(또는 전용 IT 상태 레지스터)는 IT 상태를 유지하는데 사용될 수 있다. 이것은 IT 블록 내에 인터럽트를 허용하기도 한다.
하기의 예는 4 명령의 최대 IT 블록 크기를 갖는 섬 16-비트 명령을 정의한다. IT 블록 내 모든 명령은 동일 조건 또는 조건의 역 버전(즉, EQ 또는 NE 등)에 의해 예측된다.
Thumb IT
구문
IT{<x>{<y>{<z>}}}<cond>
여기에서,
<x> 존재시, "T"와 "E" 문자중 하나이며, 제2 후속 명령이 IT 명령에 의해 영향을 받음을 나타낸다. <x>가 "T"("Then")이면, 명령에 첨부된 조건은 <cond>이며; <x>가 "E"이면, <cond>의 가장 덜 중요한 비트를 논리적으로 인버팅하는 것에 의해 얻어지는 <cond>의 역이다. <x>가 생략되면(따라서, <y> 및 <z>도 역시 생략되면), 오직 하나의 후속 명령만이 IT 명령에 의해 영향을 받는다.
<y> 존재시, "T"와 "E" 문자중 하나이며, 제3 후속 명령이 IT 명령에 의해 영향을 받음을 나타낸다. <y>가 "T"("Then")이면, 명령에 첨부된 조건은 <cond>이며; <y>가 "E"이면, <cond>의 가장 덜 중요한 비트를 논리적으로 인버팅하는 것에 의해 얻어지는 <cond>의 역이다. <y>가 생략되면(따라서, <z>도 역시 생략되면), 3개 미만의 후속 명령이 IT 명령에 의해 영향을 받는다.
<z> 존재시, "T"와 "E" 문자중 하나이며, 제4 후속 명령이 IT 명령에 의해 영향을 받음을 나타낸다. <z>가 "T"("Then")이면, 명령에 첨부된 조건은 <cond>이며; <x>가 "E"이면, <cond>의 가장 덜 중요한 비트를 논리적으로 인버팅하는 것에 의해 얻어지는 <cond>의 역이다. <z>가 생략되면, 4개 미만의 후속 명령이 IT 명령에 의해 영향을 받는다.
<cond>
제 후속 명령에 적용될 조건이며, <x>, <y>, <z>에 의해 특정되는 추가의 후속 명령에도 적용될 수 있는 조건이다.
<x>, <y>, <z>의 값은 다음 표에 따른 명령의 마스크 필드의 값을 결정한다:
Figure 112005070487319-pct00001
주의: 이 구문의 기본적인 사상은 예컨대, "ITTET EQ"가 제1, 제2 및 제4 후속 명령(연상 기호에서 "T"의 위치에 의해 나타낸)이 그 명령에 첨부된 EQ 조건을 가지고, 제3 명령("E"로 나타낸)은 그 명령에 첨부된 NE 조건을 갖는 것으로 기술한다는 것이다.
연산
Figure 112005070487319-pct00002
Figure 112005070487319-pct00003
//이들 CPSR 비트의 명령-대-명령에 의한 업데이트는
//IT 명령의 조건부 실행 효과의 발생을 유도한다.
8 IT 실행 상태 비트는 다음의 256 "명령간 상태"중 하나를 인코딩한다:
CPSR 상태
2 2 1 1 1 1 1 1
6 5 5 4 3 2 1 0
P
4

1 condbase P
1
P
2
P
3
다음 4 명령은 (condbase,P1), (condbase,P2), (condbase,P3), (condbase,P4)의 조건으로 조건부로 실행됨
1 0 condbase P
1
P
2
P
3
다음 3 명령은 (condbase,P1), (condbase,P2), (condbase,P3)의 조건으로 조건부로 실행됨
0 0 condbase P
1
P
2
1 다음 2 명령은 (condbase,P1), (condbase,P2)의 조건으로 조건부로 실행됨
0 0 condbase P
1
1 0 다음 명령은 (condbase,P1)의 조건으로 조건부로 실행됨
0 0 N(비-제로) 0 0 비예측
0 0 0 0 0 0 0 0 정상 실행
후속 실행에 대한 이들 비트의 영향은 다음과 같다:
● MRS 및 SRS 명령은 이들 비트를 정상적으로 읽을 것이다. MSR 명령은 이들 비트를 SPSRs에 정상적으로 기록할 것이지만, 전술한 바와 같이 CPSR에 기록시 그 기록된 값은 무시할 것이다. 기존의 예외 복귀 명령("copy SPSR->CPSR" side-effects) 및 RFE 명령은 역시 전술한 바와 같이 이들 비트를 CPSR에 정상적으로 기록할 것이다.
● ARM 및 Java 상태 실행중, 이들 비트는 제로가 되어야 한다(즉, 이들이 제로가 아니면 결과는 비예측이다).
● 예외 엔트리 시퀀스는 이들 비트가 CPSR에서 SPSR로 카피되도록 한 후, CPSR에서 소거되도록 하여(J 및 T와 함께), 프로세서를 정상 ARM 실행으로 복귀시킨다.
● 섬 상태(Thumb state) 실행중:
1. IT 명령이 실행되면, 이들 비트는 제로가 되어야 한다(즉, IT 명령은 다른 IT 명령에 의해 영향을 받는 명령의 블록들 내에 출현되는 것이 금지된다.).
2. 조건부 분기 명령이 실행시, 비트[26,25,11,10]는 제로가 되어야 한다(즉, 조건부 분기 명령은 IT 명령에 의해 영향을 받는 명령의 블록들 내에 출현되는 것이 금지된다. 그러나, 비조건부 분기 명령이 그곳에 출현되어, 조건부로 취급되도록 유도될 수 있으며; 이 룰은 기본적으로 동일 명령에 대해 2개의 조건을 갖는 것에 의해 야기되는 문제를 회피하기 위해 제공된다.).
3. 상기 룰에 의해 비예측이 되지 않는 모든 명령의 경우, 현재 "실행 상태"로부터 소정 조건이 다음과 같이 생성된다:
Figure 112005070487319-pct00004
/*주의: 이 해석은 "NV 스페이스"가 ARMv5에서 복구되기 때문에 표준이 된다*/
더욱이, CMP, CMN 또는 TST 명령이 아니며 정상적으로 조건 플래그를 설정하는 16-비트 섬 데이터-처리 명령은 다음과 같이 변조된다:
Figure 112005070487319-pct00005
주의: 이것은 IT가 많은 명령 시퀀스의 제어에 유용한 것에 필수적인데; 예컨대, LDR Rn; ADD Rn,Rn,#M; STR Rn sequence를 조건부화하는데 사용되면, ADD가 STR 명령에 의해 보여진 조건 플래그를 변경시키면 소용없게 된다.
주의: 이것은 AL 조건(또는 NV 조건)의 IT 명령이 1-4 후속 명령에 의한 이러한 플래그-세팅을 억제하는데 사용될 수 있다는 필연적 귀결을 갖는다. 현재 Thumb 명령 집합의 부적절한 측면중 하나는 최근-삽입된 코드(late-inserted code)(예, 스필/필(spill/fill) 코드)가 조건 플래그를 손상시키는 부작용을 가질 수 있다는 점이다. 이것을 단일의 여분의 16-비트 명령으로 취급할 수 있는 것은 매우 유용할 수 있다.
4. 소정의 PC-변조 명령의 성공적인 실행(즉, 소정의 조건 체크가 실패하지 않은)은 새로운 "실행 상태" 비트가 되도록 한다:
예외 복귀 명령(SPSR->CPSR 카피를 행하는 명령 및 특권 모드에서 실행된 RFE)의 경우:
Figure 112005070487319-pct00006
주의: "Otherwise" 경우는 IT가 정적 후속 명령에만 영향을 미치는 기론 룰이다.
이러한 PC-변조 명령의 성공적이지 않은 실행 또는 비 PC-변조의 비-IT 명령의 어떠한 실행(성공적인 것에 무관)도 새로운 "실행 상태" 비트를 다음과 같이 업데이트할 것이다:
Figure 112005070487319-pct00007
A) IT 실행 종료- 그러나, 특별한 동작은 불필요.
B) IT 블록 외부
주의:
1. 분기(Branches). 언급된 바를 제외하고, PC를 변경하는 분기 명령 또는 다른 명령의 결과에 따라 IT 블록의 어떤 명령도 소정 분기의 타겟이 되도록 허용되지 않는다. 이 제한을 견지하는 것의 실패는 비예측 동작을 가져올 수 있다.
2. 예외. 인터럽트 및 기타 예외는 명령 및 그 IT 블록 사이에 또는 IT 블록 내에서 일어날 수 있다. 통상적으로, 이들은 적절한 모드의 R14 및 SPSR에 배치되는 적합한 복귀 정보와 함께 개시되는 예외 핸들러의 결과로 나타난다. 예외 복귀 용도로 구성된 명령은 예외로부터의 복귀에 정상적으로 사용될 수 있으며, IT 블록의 올바른 실행을 재개할 것이다. 이것은 PC-변조 명령이 IT 블록내의 명령으로의 분기가 허용되는 유일한 방법이다.
3. IT 블록. IT 블록 내의 명령은 다음의 것이 되도록 허용되지 않는다:
● IT 명령
● 조건부 분기 명령
만일 그렇다면, 결과는 비예측이다.
도 5는 다른 형태의 예측 명령을 개략적으로 나타내고 있다. 이 형태의 예측 명령에서, 예측 명령(30)에 관련된 2개 블록의 관련 프로그램 명령(26, 28)이 존재한다. 이들 블록중 제1 명령(26)은 예측 명령에서 특정된 조건 코드가 통과되면 실행되어 "If block"으로 명명된다. 다른 블록 명령(28)은 예측 명령(30)과 관련된 조건 코드가 실패되면 실행되어 "Else block"으로 명명된다. 예측 명령(30)은 각각 1-4 명령 길이일 수 있는 2개 블록(26, 28)의 크기를 지정한다. 도 5의 예에서, If block(26) 또는 Else block(28)이 실행된다. 이 예는 예측 명령(30)이 실행될 때 일단 조건 코드가 유효하게 평가되고, 그 평가 결과를 적용하여 모든 관련 프로그램 명령을 예측하는 경우의 것이다. 따라서, 전체 If block(26) 또는 다른 방식으로 전체 Else block(28)이 실행될 수 있다. 콘텍스트 레지스터(MPC)(22)가 If block의 말단에 도달하였음을 나타내면, Else block(28)의 최종 명령을 따르는 명령에 대해 분기(branch)가 강제된다. Else block(28)의 최종 명령이 도달되면, 예측 명령(30)의 효과가 없어진다.
도 6은 도 5에 나타낸 동작의 방식에 따른 시스템의 거동을 나타낸 흐름도를 개략적으로 보여주고 있다. 스텝(32)에서, 시스템은 예측 명령(ITE 명령)의 식별을 위해 대기한다. 스텝(34)에서, 시스템은 현재 프로그램 상황 레지스터 내에 저장된 콘텍스트 카운터 값이 비-제로인지 여부를 식별한다. 이러한 비-제로 값은 복귀가 예외로부터 이루어지고 따라서 콘텍스트 값은 스텝(36)에서 현재 프로그램 상황 레지스터 내에 수용되어 저장되고, 스텝(38)으로 처리가 진행되어, 예측 명령 내에 지정된 조건 코드가 평가된다. 다른 방식으로서, 스텝(34)의 테스트가 결과를 내지 못하면 콘텍스트 값은 스텝(40)에서 제로로 설정된다. 스텝(38)에서의 조건 코드의 평가가 조건 코드의 실패로 결정되면, Else block(28)이 실행되어야 함을 나타내고 따라서 스텝(42)은 프로그램 카운터 값을 Else block(28) 내의 제1 명령으로 진행시키고. 스텝(44)에서 종료되는 예측 명령으로 Else block(28)을 실행한다. 다른 방식으로서, 스텝(38)에서 평가된 조건 코드가 통과되면, 스텝(46)은 콘텍스트 값과 합산된 PC 값으로 지시된 명령을 실행하고 명령 바이트 길이로써 콘텍스트 값을 증가시킨다.
스텝(48)에서는 예외의 발생을 체크하고, 예외가 존재하면 스텝(50)에서는 콘텍스트 값(예측 명령 카운트 값)을 포함하는 현재 프로그램 상황 레지스터 값을 저장하고, 예외를 취하고, 예외 취급 루틴을 실행하고, 결국 예외에 따라 프로그램 카운터 값(PC), 즉 예측 명령으로 지시된 명령으로 복귀한다.
스텝(52)에서는 분기 발생을 테스트하고, 분기가 발생되면, 스텝(54)에서 프로그램 카운터 값을 분기 타겟으로 변경시키고, 스텝(44)에서 예측 명령의 동작을 종료한다.
스텝(56)에서는 예측 명령 카운트 값이 If block(26)의 말단이 도달하였음을 나타내는 If block 크기에 도달하였는지를 확인하는 테스트를 행한다. If block(26)의 말단이 도달되었으면, 스텝(58)에서 프로그램 카운터 값을 Else block의 말단 너머로 이동시키고, 스텝(44)에서 예측 명령이 종료된 후에 정상 처리를 재개한다. 다른 방식으로서, 처리는 스텝(46)으로 돌아가서, If block 내의 다음 명령이 실행된다.
이하, 도 5 및 도 6에 나타낸 명령의 동작에 대해 다른 설명을 부가한다.
ITE
If-Then-Else(ITE) 명령은 조건 통과시 실행될 명령의 블록 크기(이 블록은 명령 직후에 위치함) 및 조건 실패시 실행될 명령의 블록 크기(이 블록은 "if" 블록 직후에 위치함)를 지정할 수 있게 한다.
많은 ITE 콘텍스트 비트는 PSR 또는 기타 특별한 레지스터에 보유되어야 하며: 이들 비트를 PSR_uPC로 지칭한다. PSR_uPC 비트의 정확한 수는 "if" 블록의 최대 가능한 크기를 결정한다.
구문
ITE<cond>#if_size,#else_size
연산
Figure 112005070487319-pct00008
Figure 112005070487319-pct00009
주의:
1. 분기. PC를 변경시키는 분기 명령 또는 기타 다른 명령의 결과에 따라 ITE의 "if" 섹션의 어떤 명령도 어떤 분기의 타겟이 되도록 허용되지 않는다. 이 제한을 견지하는 것의 실패는 비예측의 거동을 야기할 수 있다.
2. 예외. 인터럽트 및 기타 예외는 "if" 블록 내의 명령 사이에서 일어날 수 있다. 통상적으로, 이들은 특별한 예외 모드의 R14 및 SPSR에 배치되는 적합한 복귀 정보와 함께 개시되는 예외 핸들러의 결과로 나타난다. 예외 복귀 용도로 구성된 명령은 예외로부터의 복귀에 정상적으로 사용될 수 있으며, "if" 블록의 올바른 실행을 재개할 것이다. 이것은 PC-변조 명령이 "if" 블록내의 명령으로의 분기가 허용되는 유일한 방법이다.
도 5 및 도 6에 도시된 If block(26) 및 Else block(28)을 활용하는 예측 명령 실행의 다른 형태로서, 즉, 예측 명령(30)의 실행시 일단 조건 코드가 평가되어지는 형태로서, 관련 명령의 실행시 예측 명령(30)에 의해 영향을 받는 각 관련 프로그램 명령에 대해 조건 코드가 평가되는 경우의 예를 다음의 거동으로써 나타낼 수 있다:
Figure 112005070487319-pct00010
Figure 112005070487319-pct00011
이상으로부터, 실시예를 통해 예측 명령은 3개의 관련 프로그램 명령을 포함하는 If block과 하나의 관련 프로그램 명령을 포함하는 Else block을 특정함을 알 수 있다. 3개의 프로그램 명령 각각에 의해 효과적으로 특정된 조건 코드는 CPSR_cond 값으로 나타낸다. Else block이 존재하면, 제5 명령은 비-예측적이며, 비조건부 명령에 관련된 정상적 방식으로 비조건부적으로 실행된다.
도 7은 CPU(202), RAM(204), ROM(206), NIC(208), HDD(210), 디스플레이 드라이버(212), 디스플레이(214), 유저 I/O(216), 키보드(218) 및 마우스(220)를 포함하는, 전술한 기법의 실행을 위한 범용 컴퓨터 장치(200)를 나타낸다.

Claims (50)

  1. 데이터 처리 장치(2)로서:
    데이터 처리 연산을 수행하도록 동작가능한 데이터 처리 로직(4,6,8,10)과;
    상기 데이터 처리 로직이 상기 데이터 처리 연산을 수행하도록 제어하기 위해, 프로그램 명령의 디코딩을 수행하도록 동작가능한 명령 디코더(12)와;
    실행되는 프로그램 명령의 메모리 위치를 나타내는 어드레스를 저장하도록 동작가능한 프로그램 카운터 레지스터(PC)를 포함하고,
    상기 명령 디코더는, 예측 명령(IT)에 응답하여, 상기 예측 명령 이외의 하나 이상의 프로그램 명령 실행에 의해 설정된 상기 데이터 처리 장치의 하나 이상의 조건 상태에 따라, 상기 데이터 처리 로직이 하나 이상의 관련 프로그램 명령을 실행 또는 비실행하도록 제어하고,
    상기 예측 명령에 따르는 상기 하나 이상의 관련 프로그램 명령 중 몇 개가 실행되는지를 나타내는 카운터 값을 저장하도록 동작가능한 예측 명령 카운터 레지스터(μPC)를 더 포함하고, 상기 프로그램 카운터 레지스터는 상기 예측 명령에 따르는 상기 하나 이상의 관련 프로그램 명령이 실행되고 있을 때 상기 예측 명령에 대응하는 어드레스의 저장을 계속하고;
    예외의 발생시 상기 카운터 값을 저장하고, 상기 예외의 완료시 상기 카운터 값에 의해 지목된 프로그램 명령에서 시작하는 실행을 재개하도록 동작가능한 예외처리회로(18)를 더 포함하는 것을 특징으로 하는 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 예측 명령은 복수의 관련 프로그램 명령을 제어하는 것을 특징으로 하는 데이터 처리 장치.
  3. 제1항에 있어서,
    상기 하나 이상의 관련 프로그램 명령은 비-조건부 프로그램 명령인 것을 특 징으로 하는 데이터 처리 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 하나 이상의 조건 상태는 하나 이상의 조건 코드 플래그의 값을 포함하는 것을 특징으로 하는 데이터 처리 장치.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 하나 이상의 조건 상태는,
    (i) 상기 예측 명령의 한번 실행시 및
    (ii) 각 관련 프로그램 명령의 실행 이전
    중 한 시점에서 평가되는 것을 특징으로 하는 데이터 처리 장치.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 하나 이상의 관련 프로그램 명령은 상기 예측 명령의 직후에 수반되는 것을 특징으로 하는 데이터 처리 장치.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 예측 명령은,
    (i) 상기 하나 이상의 조건 상태가 하나 이상의 소정 조건에 일치하는 경우, 실행되는 하나 이상의 프로그램 명령의 조건 일치 블록에,
    (ii) 상기 하나 이상의 조건 상태가 상기 하나 이상의 소정 조건에 일치하지 않는 경우, 실행되는 하나 이상의 프로그램 명령의 조건 불일치 블록에 대응되는 것을 특징으로 하는 데이터 처리 장치.
  8. 제7항에 있어서,
    상기 예측 명령은,
    (i) 하나 이상의 프로그램 명령의 상기 조건 일치 블록의 길이와;
    (ii) 하나 이상의 프로그램 명령의 상기 조건 불일치 블록의 길이 중 하나 이상을 특정하는 것을 특징으로 하는 데이터 처리 장치.
  9. 제7항에 있어서,
    상기 예측 명령은 상기 하나 이상의 소정 조건(<cond>)을 특정하는 것을 특징으로 하는 데이터 처리 장치.
  10. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 예측 명령은 상기 하나 이상의 조건 상태를 하나 이상의 소정 상태와 비교하는 것에 따라 각 관련 프로그램 명령이 실행 또는 비실행되는지를 각각 특정하는 하나 이상의 필드를 포함하는 것을 특징으로 하는 데이터 처리 장치.
  11. 제10항에 있어서,
    상기 예측 명령은, 각각의 관련 프로그램 명령의 실행 여부를 결정하기 위해, 상기 하나 이상의 조건 상태 또는 상기 하나 이상의 조건 상태의 보수가 상기 하나 이상의 소정 상태와 비교되는지 여부를 각각의 관련 프로그램 명령에 대해 특정하는 필드를 포함하는 것을 특징으로 하는 데이터 처리 장치.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 하나 이상의 관련 프로그램 명령은 상기 예측 명령에 따르는 경우 다른 데이터 처리 동작을 특정하는 것을 특징으로 하는 데이터 처리 장치.
  17. 제16항에 있어서,
    상기 예측 명령 내의 프로그램 가능한 필드에 의존하여, 상기 하나 이상의 관련 프로그램 명령이 상기 하나 이상의 조건 상태로 임의 변경되지 않도록 저지하는 것을 특징으로 하는 데이터 처리 장치.
  18. 데이터 처리 방법으로서:
    데이터 처리 로직으로 데이터 처리 연산을 수행하는 단계와;
    상기 데이터 처리 로직이 상기 데이터 처리 연산을 수행하도록 제어하기 위해, 명령 디코더로 프로그램 명령을 디코딩하는 단계와;
    프로그램 카운터 레지스터에, 실행되는 프로그램 명령의 메모리 위치를 나타내는 어드레스를 저장하는 단계를 포함하고,
    예측 명령에 응답하여, 상기 명령 디코더는, 상기 예측 명령 이외의 하나 이상의 프로그램 명령 실행에 의해 설정된 데이터 처리 장치의 하나 이상의 조건 상태에 따라, 상기 데이터 처리 로직이 하나 이상의 관련 프로그램 명령을 실행 또는 비실행하도록 제어하고,
    상기 예측 명령에 따르는 상기 하나 이상의 관련 프로그램 명령 중 몇 개가 실행되는지를 나타내는 카운터 값을 예측 명령 카운터 레지스터에 저장하는 단계와;
    상기 하나 이상의 관련 프로그램 명령이 실행되고 있을 때 상기 예측 명령에 대응하는 어드레스를 상기 프로그램 카운터 레지스터에 저장하는 것을 계속하는 단계와;
    예외의 발생시 상기 카운터 값을 저장하고, 상기 예외의 완료시 상기 카운터 값에 의해 지목된 프로그램 명령에서 시작하는 실행을 재개하는 단계를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  19. 제18항에 있어서,
    상기 예측 명령은 복수의 관련 프로그램 명령을 제어하는 것을 특징으로 하 는 데이터 처리 방법.
  20. 제18항에 있어서,
    상기 하나 이상의 관련 프로그램 명령은 비-조건부 프로그램 명령인 것을 특징으로 하는 데이터 처리 방법.
  21. 제18항 내지 제20항 중 어느 한 항에 있어서,
    상기 하나 이상의 조건 상태는 하나 이상의 조건 코드 플래그의 값을 포함하는 것을 특징으로 하는 데이터 처리 방법.
  22. 제18항 내지 제20항 중 어느 한 항에 있어서,
    상기 하나 이상의 조건 상태는,
    (i) 상기 예측 명령의 한번 실행시 및
    (ii) 각 관련 프로그램 명령의 실행 이전
    중 한 시점에서 평가되는 것을 특징으로 하는 데이터 처리 방법.
  23. 제18항 내지 제20항 중 어느 한 항에 있어서,
    상기 하나 이상의 관련 프로그램 명령은 상기 예측 명령의 직후에 수반되는 것을 특징으로 하는 데이터 처리 방법.
  24. 제18항 내지 제20항 중 어느 한 항에 있어서,
    상기 예측 명령은,
    (i) 상기 하나 이상의 조건 상태가 하나 이상의 소정 조건에 일치하는 경우 실행되는 하나 이상의 프로그램 명령의 조건 일치 블록에,
    (ii) 상기 하나 이상의 조건 상태가 상기 하나 이상의 소정 조건에 일치하지 않는 경우 실행되는 하나 이상의 프로그램 명령의 조건 불일치 블록에 대응되는 것을 특징으로 하는 데이터 처리 방법.
  25. 제24항에 있어서,
    상기 예측 명령은,
    (i) 하나 이상의 프로그램 명령의 상기 조건 일치 블록의 길이와;
    (ii) 하나 이상의 프로그램 명령의 상기 조건 불일치 블록의 길이중 하나 이상을 특정하는 것을 특징으로 하는 데이터 처리 방법.
  26. 제24항에 있어서,
    상기 예측 명령은 상기 하나 이상의 소정 조건을 특정하는 것을 특징으로 하는 데이터 처리 방법.
  27. 제18항 내지 제20항 중 어느 한 항에 있어서,
    상기 예측 명령은 상기 하나 이상의 조건 상태를 하나 이상의 소정 상태와 비교하는 것에 따라 각 관련 프로그램 명령이 실행 또는 비실행되는지를 각각 특정하는 하나 이상의 필드를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  28. 제27항에 있어서,
    상기 예측 명령은, 각각의 관련 프로그램 명령의 실행 여부를 결정하기 위해, 상기 하나 이상의 조건 상태 또는 상기 하나 이상의 조건 상태의 보수가 상기 하나 이상의 소정 상태와 비교되는지 여부를 각각의 관련 프로그램 명령에 대해 특정하는 필드를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 제18항 내지 제20항 중 어느 한 항에 있어서,
    상기 하나 이상의 관련 프로그램 명령은 상기 예측 명령에 따르는 경우 다른 데이터 처리 동작을 특정하는 것을 특징으로 하는 데이터 처리 방법.
  34. 제33항에 있어서,
    상기 예측 명령 내의 프로그램 가능한 필드에 의존하여, 상기 하나 이상의 관련 프로그램 명령이 상기 하나 이상의 조건 상태로 임의 변경되지 않도록 저지하는 것을 특징으로 하는 데이터 처리 방법.
  35. 청구항 18 내지 20 중 어느 한 항에 기재된 방법에 따라 데이터 처리 장치를 제어하도록 동작가능한 컴퓨터 프로그램을 저장한 컴퓨터 판독가능한 저장매체.
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
KR1020057023079A 2003-06-05 2003-12-30 데이터 처리 시스템 내의 예측 명령 KR101016713B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0312977.2 2003-06-05
GB0312977A GB2402510A (en) 2003-06-05 2003-06-05 Predication instruction within a data processing system

Publications (2)

Publication Number Publication Date
KR20060063790A KR20060063790A (ko) 2006-06-12
KR101016713B1 true KR101016713B1 (ko) 2011-02-25

Family

ID=9959411

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057023079A KR101016713B1 (ko) 2003-06-05 2003-12-30 데이터 처리 시스템 내의 예측 명령

Country Status (12)

Country Link
US (1) US7178011B2 (ko)
EP (1) EP1629375B1 (ko)
JP (1) JP3917635B2 (ko)
KR (1) KR101016713B1 (ko)
CN (1) CN100483336C (ko)
AU (1) AU2003290350A1 (ko)
DE (1) DE60323885D1 (ko)
GB (1) GB2402510A (ko)
MY (1) MY138874A (ko)
RU (1) RU2005137695A (ko)
TW (1) TWI314701B (ko)
WO (1) WO2004109499A2 (ko)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7210024B2 (en) * 2005-02-10 2007-04-24 Qualcomm Incorporated Conditional instruction execution via emissary instruction for condition evaluation
US7234043B2 (en) * 2005-03-07 2007-06-19 Arm Limited Decoding predication instructions within a superscaler data processing system
DE102005050382B4 (de) * 2005-10-20 2012-08-09 Infineon Technologies Ag Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls
JP4159586B2 (ja) * 2006-08-03 2008-10-01 エヌイーシーコンピュータテクノ株式会社 情報処理装置および情報処理の高速化方法
US7971104B2 (en) * 2006-10-24 2011-06-28 Shlomi Dolev Apparatus and methods for stabilization of processors, operating systems and other hardware and/or software configurations
US9946550B2 (en) * 2007-09-17 2018-04-17 International Business Machines Corporation Techniques for predicated execution in an out-of-order processor
US7818551B2 (en) * 2007-12-31 2010-10-19 Microsoft Corporation Feedback mechanism for dynamic predication of indirect jumps
US8332620B2 (en) * 2008-07-25 2012-12-11 Freescale Semiconductor, Inc. System, method and computer program product for executing a high level programming language conditional statement
CN101324838A (zh) * 2008-07-31 2008-12-17 华为技术有限公司 一种指令执行方法和装置
US8819399B1 (en) * 2009-07-31 2014-08-26 Google Inc. Predicated control flow and store instructions for native code module security
US10175990B2 (en) * 2009-12-22 2019-01-08 Intel Corporation Gathering and scattering multiple data elements
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US10261793B2 (en) 2011-12-16 2019-04-16 International Business Machines Corporation Instruction predication using instruction address pattern matching
US9465613B2 (en) * 2011-12-19 2016-10-11 International Business Machines Corporation Instruction predication using unused datapath facilities
US9632779B2 (en) 2011-12-19 2017-04-25 International Business Machines Corporation Instruction predication using instruction filtering
US9632786B2 (en) * 2011-12-20 2017-04-25 International Business Machines Corporation Instruction set architecture with extended register addressing using one or more primary opcode bits
US9928067B2 (en) 2012-09-21 2018-03-27 Intel Corporation Methods and systems for performing a binary translation
US9389868B2 (en) * 2012-11-01 2016-07-12 International Business Machines Corporation Confidence-driven selective predication of processor instructions
US9304771B2 (en) 2013-02-13 2016-04-05 International Business Machines Corporation Indirect instruction predication
US9626185B2 (en) 2013-02-22 2017-04-18 Apple Inc. IT instruction pre-decode
US9792121B2 (en) * 2013-05-21 2017-10-17 Via Technologies, Inc. Microprocessor that fuses if-then instructions
FR3021432B1 (fr) * 2014-05-20 2017-11-10 Bull Sas Processeur a instructions conditionnelles
US20170212763A1 (en) * 2014-07-25 2017-07-27 Hewlettt Packard Enterprise Development Lp Exception handling predicate register
US10607003B2 (en) * 2017-06-29 2020-03-31 International Business Machines Corporation Mitigation of code reuse attacks by restricted indirect branch instruction
US11275712B2 (en) 2019-08-20 2022-03-15 Northrop Grumman Systems Corporation SIMD controller and SIMD predication scheme
CN113254082B (zh) * 2021-06-23 2021-10-08 北京智芯微电子科技有限公司 条件分支指令处理方法及系统、cpu、芯片
CN113254083B (zh) * 2021-06-28 2021-11-02 北京智芯微电子科技有限公司 指令处理方法、指令处理系统及处理器、芯片
KR102571809B1 (ko) * 2021-08-03 2023-08-25 연세대학교 산학협력단 전자기 과도 상태 시뮬레이션 방법 및 기록 매체

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233676B1 (en) * 1999-03-18 2001-05-15 Ip-First, L.L.C. Apparatus and method for fast forward branch
JP2002024008A (ja) 2000-07-04 2002-01-25 Matsushita Electric Ind Co Ltd データ処理装置およびプログラム変換装置
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
US6910123B1 (en) * 2000-01-13 2005-06-21 Texas Instruments Incorporated Processor with conditional instruction execution based upon state of corresponding annul bit of annul code

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62259140A (ja) 1986-05-06 1987-11-11 Oki Electric Ind Co Ltd アドレス生成回路
DE4430195B4 (de) * 1993-12-13 2004-09-23 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Verfahren zur Auswertung von Booleschen Ausdrücken
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
JP3442225B2 (ja) 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6640315B1 (en) * 1999-06-26 2003-10-28 Board Of Trustees Of The University Of Illinois Method and apparatus for enhancing instruction level parallelism
US6886094B1 (en) * 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6662294B1 (en) * 2000-09-28 2003-12-09 International Business Machines Corporation Converting short branches to predicated instructions
US7017032B2 (en) * 2001-06-11 2006-03-21 Broadcom Corporation Setting execution conditions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
US6233676B1 (en) * 1999-03-18 2001-05-15 Ip-First, L.L.C. Apparatus and method for fast forward branch
US6910123B1 (en) * 2000-01-13 2005-06-21 Texas Instruments Incorporated Processor with conditional instruction execution based upon state of corresponding annul bit of annul code
JP2002024008A (ja) 2000-07-04 2002-01-25 Matsushita Electric Ind Co Ltd データ処理装置およびプログラム変換装置

Also Published As

Publication number Publication date
RU2005137695A (ru) 2006-06-27
TW200428276A (en) 2004-12-16
CN1788253A (zh) 2006-06-14
EP1629375A2 (en) 2006-03-01
DE60323885D1 (de) 2008-11-13
KR20060063790A (ko) 2006-06-12
MY138874A (en) 2009-08-28
WO2004109499A2 (en) 2004-12-16
GB2402510A (en) 2004-12-08
CN100483336C (zh) 2009-04-29
WO2004109499A3 (en) 2005-10-13
AU2003290350A8 (en) 2005-01-04
GB0312977D0 (en) 2003-07-09
JP3917635B2 (ja) 2007-05-23
AU2003290350A1 (en) 2005-01-04
US7178011B2 (en) 2007-02-13
US20040250051A1 (en) 2004-12-09
TWI314701B (en) 2009-09-11
EP1629375B1 (en) 2008-10-01
JP2006526813A (ja) 2006-11-24

Similar Documents

Publication Publication Date Title
KR101016713B1 (ko) 데이터 처리 시스템 내의 예측 명령
US5692169A (en) Method and system for deferring exceptions generated during speculative execution
US5778219A (en) Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations
US10747536B2 (en) Program loop control
US5805918A (en) Dual-instruction-set CPU having shared register for storing data before switching to the alternate instruction set
US6076155A (en) Shared register architecture for a dual-instruction-set CPU to facilitate data exchange between the instruction sets
US6301705B1 (en) System and method for deferring exceptions generated during speculative execution
JP7002462B2 (ja) ベクトル述語命令
CN108780397B (zh) 程序循环控制
EP3433723B1 (en) Branch instruction
KR20180066146A (ko) 벡터 데이터 전송 명령어
GB2489914A (en) Data processor for performing vector operations in response to scalar instructions following a decode modifier instruction
KR102307581B1 (ko) 레지스터 복구 분기 명령
JPH0769795B2 (ja) コンピュータ
CN111771188B (zh) 数据处理装置及数据处理方法
JP2019510313A (ja) ベクトル命令の処理
KR20010050812A (ko) 컴퓨터 시스템 명령들의 소스 연산수들을 선택하고사용하기 위한 방법 및 시스템
JP2021515929A (ja) データ処理
US20090119492A1 (en) Data Processing Apparatus and Method for Handling Procedure Call Instructions
JP2000347858A (ja) マイクロプロセッサ
JPH01319864A (ja) ベクトルマスクの制御方式

Legal Events

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

Payment date: 20140121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 10