KR20180033512A - 우발적 로드 억제 - Google Patents

우발적 로드 억제 Download PDF

Info

Publication number
KR20180033512A
KR20180033512A KR1020187003456A KR20187003456A KR20180033512A KR 20180033512 A KR20180033512 A KR 20180033512A KR 1020187003456 A KR1020187003456 A KR 1020187003456A KR 20187003456 A KR20187003456 A KR 20187003456A KR 20180033512 A KR20180033512 A KR 20180033512A
Authority
KR
South Korea
Prior art keywords
load
accidental
vector
accidental load
memory
Prior art date
Application number
KR1020187003456A
Other languages
English (en)
Other versions
KR102581568B1 (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 KR20180033512A publication Critical patent/KR20180033512A/ko
Application granted granted Critical
Publication of KR102581568B1 publication Critical patent/KR102581568B1/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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

데이터 처리 시스템(2)은 데이터 값의 적어도 한 개의 우발적 로드를 행하는 벡터 로드 명령의 비추론적 실행을 지원한다. 장애 검출회로(26)는 우발적 로드가 장애 발생 우발적 로드인지 장애가 없는 우발적 로드인지 검출하는 역할을 한다. 우발적 로드 억제회로(28)는 아키텍처 상태의 원치 않는 변경(원치 않는 부작용)을 발생하는 소정의 기준에 부합하는 장애가 없는 우발적 로드를 검출 및 억제한다. 이와 같은 소정의 기준의 예로는, 우발적 로드가 비메모리 디바이스에 대한 것 또는 우발적 로드가 중지 디버그 중지 모드의 진입 또는 디버그 예외의 기동 등의 진단 응답을 유발하게 되는 것을 들 수 있다.

Description

우발적 로드 억제
본 발명은 데이터 처리 시스템에 관한 것이다. 특히, 본 발명은 한 개 이상의 우발적 로드(contingent load) 연산을 행하는 벡터 로드 명령을 지원하는 데이터 처리 시스템에 관한 것이다.
복수의 벡터 성분을 메모리로부터 벡터 레지스터 내부의 각각의 성분 내부로 로드하는 벡터 로드 명령을 지원하는 데이터 처리 시스템을 설치하는 것이 알려져 있다.
본 발명의 적어도 일부 실시예는,
벡터 로드 명령의 비추론적 실행에 응답하여, 메모리의 메모리 어드레스 위치로부터 벡터 레지스터의 성분으로 판독된 데이터 값의 적어도 한 개의 우발적 로드를 행하는 벡터 로드회로와,
상기 우발적 로드가 장애 발생 우발적 로드인지 장애가 없는 우발적 로드인지 검출하는 장애 검출회로와,
소정의 기준에 부합하는 장애가 없는 우발적 로드를 검출 및 억제하는 우발적 로드 억제회로를 구비한 데이터 처리장치를 제공한다.
본 발명의 적어도 일부 실시예는,
벡터 로드 명령의 비추론적 실행에 응답하여, 메모리의 메모리 어드레스 위치로부터 벡터 레지스터의 성분으로 판독된 데이터 값의 적어도 한 개의 우발적 로드를 행하는 벡터 로드수단과,
상기 우발적 로드가 장애 발생 우발적 로드인지 장애가 없는 우발적 로드인지 검출하는 장애 검출수단과,
상기 벡터 로드수단 및 상기 장애 검출수단에 접속되어, 소정의 기준에 부합하는 장애가 없는 우발적 로드를 검출 및 억제하는 우발적 로드 억제수단을 구비한 데이터 처리장치를 제공한다.
본 발명의 적어도 일부 실시예는,
벡터 로드 명령의 비추론적 실행에 응답하여, 메모리의 메모리 어드레스 위치로부터 벡터 레지스터의 성분으로 판독된 데이터 값의 적어도 한 개의 우발적 로드를 행하는 단계와,
상기 우발적 로드가 장애 발생 우발적 로드인지 장애가 없는 우발적 로드인지 검출하는 단계와,
소정의 기준에 부합하는 장애가 없는 우발적 로드를 검출 및 억제하는 단계를 포함하는 데이터 처리방법을 제공한다.
이하, 다음의 첨부도면을 참조하여 본 발명의 실시예를 설명한다:
도 1은 장애 검출회로 및 우발적 로드 억제회로에 의해 제어되는 벡터 로드 명령들을 지원하는 데이터 처리 시스템을 개략적으로 나타낸 것이다.
도 2는 벡터 로드 명령을 개략적으로 나타낸 것이다.
도 3은 제 1 장애 레지스터의 형태를 갖는 술어값(predicate value)을 개략적으로 나타낸 것이다.
도 4는 장애 또는 원치 않는 부작용을 갖는 우발적 로드의 억제를 개략적으로 나타낸 흐름도이다.
도 1은 처리할 데이터 값(8)과 프로세서(4)의 동작을 제어하는 프로그램 명령(10)을 기억하는 메인 메모리(6)에 접속된 프로세서(4)를 구비한 데이터 처리 시스템(2)을 개략적으로 나타낸 것이다. 또한, 프로세서(4)에는, 시스템의 메모리 어드레스 공간 내부의 메모리 어드레스에 매핑되는 비메모리 디바이스(14)와의 통신을 제공하는 디바이스 메모리 입출력부(12)가 접속된다.
프로그램 명령은 명령 페치회로(16)에 의해 메인 메모리(6)에서 페치되어 명령 디코더 회로(18)에 주어진다. 명령 디코더 회로(18)는, 프로세서(4)의 다른 구성요소들을 제어하여 디코딩된 명령에 의해 지정된 처리 연산을 행하는 역할을 하는 제어신호(20)를 발생한다. 벡터 피연산자는 특정한 사이즈를 갖는 복수의 벡터 성분을 포함한다. 프로세서(4)에 의해 지원되는 명령 내부에는, 비추론적으로 실행되어 메모리 어드레스로부터 주어진 데이터 값의 적어도 한 개의 우발적 로드를 행하는 벡터 로드 명령이 포함된다. 이와 같은 벡터 로드 명령은, 벡터 로드 명령의 실행이 프로그래밍 모델에 대해 명백하고 프로그래머에게 표현되고 관찰가능할 때 프로세서의 아키텍처 상태의 변화를 표시한다는 점에서 비추론적으로 실행된다. 이와 같이 비추론적으로 실행되는 벡터 로드 명령은, 데이터 값의 적어도 한 개의 우발적 로드를 행하는데, 즉 데이터 값의 로드가 각각의 성분 로드의 우발적 거동을 제어하는 조건에 따라 행해지거나 행해지지 않는다.
벡터 로드 명령의 일부를 구성하는 이와 같은 우발적 로드가 행해질지 행해지지 않을지의 주된 결정은, 우발적 로드가 장애 발생 우발적 로드인지 장애가 없는 우발적 로드인지 검출하는 역할을 하는 장애 검출회로(26)의 동작에 의해 행해진다. 메모리 장애는 다수의 이유로 일어날 수 있다. 이와 같은 이유의 예로는, 메모리 관리부(MMU) 내부의 허가 데이터에 의해 감시되는 허가 장애, 및/또는 어드레스 변환 색인 버퍼에 의해 주어지는 어드레스 변환 장애를 들 수 있다. 비우발적인 로드에 관한 메모리 액세스 장애는, 메모리 예외 처리 루틴 등의 메모리 예외를 기동한다. 우발적 로드의 경우에는, 이 우발적 로드에 의해 로드된 데이터 값이 실제로 필요하지 않을 수도 있기 때문에, 예를 들어 적어도 한 개의 우발적 로드를 포함하는 벡터 로드 명령이 실제로 소모되지 않게 되는 데이터를 페칭하고 있을 수도 있기 때문에, 이와 같은 메모리 장애를 유발하는 성능상의 불이익이 정당화되지 않을 수도 있다. 장애 발생 우발적 로드는 장애 검출회로(26)에 의해 억제되지만, 실행되지 않으므로 메모리 장애 응답이 필요하지 않다.
프로세서(4)는 한 개 이상의 소정의 기준에 부합하는 장애가 없는 우발적 로드를 검출 및 억제하는 역할을 하는 우발적 로드 억제회로(28)를 더 구비한다. 이와 같은 장애가 없는 우발적 로드는, 장애 검출회로(26)에 의해 행해지는 장애 검출을 통과하는 것이지만, 그것에도 불구하고 억제하는 것이 바람직할 수 있다. 장애가 없는 우발적 로드를 억제하는 한가지 이유는, 이들 장애가 없는 우발적 로드는, 장애가 없는 우발적 로드에 의해 로드된 데이터 값이 원래의 프로그램 흐름에 로드되는 것이 실제로 필요하지 않을 수도 있으므로, 부적절하게 데이터 처리 시스템(2)의 아키텍처(프로그래머에게 눈에 보이는) 상태의 원치 않는 변경을 유발할 수도 있다는 것이다. 이에 따라, 벡터 로드회로(30)는 메인 메모리(6)로부터 데이터 값(8)의 적어도 한 개의 우발적 로드를 행하는 벡터 로드 명령을 비추론적으로 실행하여 장애 검출회로(26) 또는 우발적 로드 억제회로(28)에 의해 이와 같은 우발적 로드의 억제가 행해진다. 술어 제1 장애 레지스터(32)는, 장애 검출회로(26) 및 우발적 로드 억제회로(28)에 의해 제어될 때, 벡터 로드 명령의 어떤 로드가 행해졌는지 또는 행해지지 않았는지를 표시하는 술어값을 기억하는 역할을 한다.
장애가 없는 우발적 로드가 억제될 것인지 아닌지를 제어하기 위해 우발적 로드 억제회로(28)에 의해 검출되는 소정의 기준은 다양한 다른 형태를 취할 수 있다. 이와 같은 소정의 기준의 한 개의 형태는, 장애가 없는 우발적 로드가 디바이스 메모리 입출력부(12)를 거쳐 한 개 이상의 비메모리 디바이스(14)와 통신하기 위해 메모리 어드레스 공간 배우에 할당된 어드레스에 대한 것이라는 것이다. 비메모리 디바이스(14)로부터의 로드는, 실제 프로그램 흐름의 일부로 필요하지 않을 수도 있는 우발적 로드에 관해 부적절한 데이터 처리 시스템(2)의 상태의 원치 않는 변경을 유발할 수도 있다. 일례로서, 프로그램 실행의 루프에는 루프의 실행 내에서 사용되는 예측되고 있는 앞선 데이터 값을 페치하는데 사용되는 벡터 로드 명령이 뒤따를 수 있다. 그러나, 이와 같은 루프는 이들 데이터 값이 필요하기 전에 종료될 수도 있고, 이에 따라 이들 데이터 값의 우발적 로드가 실제로 뒤따르는 프로그램 흐름에 부적절한 데이터 처리 시스템(2)의 아키텍처 상태의 변경을 유발할 수도 있다.
우발적 로드 억제회로(28)에 의해 검출되는 소정의 기준의 또 다른 예는, 장애가 없는 우발적 로드가 진단회로(32)에 의해 워치포인트(watchpoint)로서 감시된 메모리 어드레스에 대한 것으로, 장애가 없는 우발적 로드가 행해질 때 진단 동작을 기동하게 되는 것이다. 이와 같은 진단 동작은, 예를 들어, 실행의 디버그 중지(debug halt)의 기동 또는 진단 예외처리가 개시되도록 하는 진단 예외의 취득을 포함한다. 장애가 없는 우발적 로드가 뒤따르는 실제 프로그램 흐름의 일부가 아닌 경우에는 이들 진단 응답 모두가 부적절하므로, 이와 같은 로드는 우발적 로드 억제회로(28)에 의해 식별 및 억제된다.
진단회로(32)는 감시되고 있는 워치포인트 어드레스를 기억하는 레지스터를 구비한다. (전역이거나 워치포인트 기준으로) 유저가 프로그래밍가능한 진단 오버라이드(override) 플래그는, 진단회로 및 우발적 로드 억제회로(28)를 제어하여, 진단 동작을 기동하는 우발적 장애가 없는 로드의 우발적 로드 억제회로(28)에 의한 억제를 금지한다. 어떤 경우에는, 진단회로(32)를 사용하여 조사할 필요가 있는 시스템의 거동이 장애가 없는 우발적 로드의 실행과 연관되고, 이에 따라 장애가 없는 우발적 로드가 사실상 우발적이고 프로그래머에 의해 원래 기술된 프로그램 흐름의 일부가 아니더라도, 우발적 로드가 진단 동작을 일으키도록 허용되어야 한다. 메인 메모리(6)로부터의 데이터 값의 적어도 한 개의 우발적 로드를 행하기 위한 벡터 로드 명령의 비추론적 실행은, 우발적 로드의 결과를 벡터 레지스터(22) 내의 벡터의 성분 내부에 기억하는 역할을 하므로, 데이터 처리 시스템(2)의 상태에 대해 아키텍처 상의 변화와 프로그래밍가능한 눈에 띄는 변화를 일으키는데, 즉 우발적 로드의 목적지인 벡터 레지스터의 콘텐츠가 프로그램 흐름의 일부로 실제로 필요하지/소모되지 않을 수도 있는 우발적으로 로드된 데이터 값으로 갱신된다.
도 2는 4개의 벡터 소자 a0, a1, a2, a3에 대한 벡터 로드 명령을 개략적으로 나타낸 것이다. 벡터 로드 명령이 비추론적으로 실행되고 있으면, 프로그램 흐름이 적어도 첫 번째 벡터 성분 a0가 로드되는 것을 요구한다는 점에서, 이 첫 번째 벡터 성분 a0는 비우발적 로드를 겪게 된다. 이후의 3개의 벡터 성분은 장애 검출회로(26) 및 우발적 로드 억제회로(28)에 의해 억제되는 종류의 우발적 벡터 로드를 겪는다. 이때, 벡터 성분 a0의 비우발적 로드는 허가 장애 등의 장애를 일으킬 수 있어, 장애 응답을 유발하고, 이와 같은 장애 응답은 뒤따르는 프로그램 흐름의 진정한 부분이기 때문에 발생되는 것이 허용되어야 한다.
도 2에 도시된 것과 같이, 벡터 로드의 일부를 구성하는 우발적 로드들은 관련된 번호를 갖는다. 그러나, 이들 번호는 특정한 구현에 의해 물리적 레벨에서 행해지는 로드의 실제 순서에 반드시 해당하는 것은 아니고, 이들 번호는 프로그래머에 의해 지정된 원래의 순서를 나타낸다.
도 2는 첫 번째 로드가 비우발적 로드인 벡터 로드 명령을 개략적으로 나타내고 있다. 벡터 로드 명령의 로드들 전체가 우발적 로드인 벡터 로드 명령에도 본 발명을 이용할 수 있다.
도 3은 2가지 상황에서 벡터 로드 명령의 비추론적 실행에 응답하여 술어 제1 장애 레지스터(32)의 콘텐츠를 개략적으로 나타낸 것이다. 상황 a)에서는, 모든 벡터 성분 로드가 장애가 없으며 억제되지 않으므로, 모두 행해진다. 이것은 술어 제1 장애 레지스터(32) 내부의 4개의 T의 값(T 및 F는 각각 소정의 비트값 0 및 1로 표시된다)으로 표시된다. 도 3에 b)로서 나타낸 상황에서는, 도 2에 도시된 것과 같은 벡터 성분 a2의 로드가 장애를 유발하므로, 행해지지 않고, 술어 제1 장애 레지스터(32) 내부의 대응하는 성분을 F로 설정함으로써 표시된다. 그후, 이것은, 벡터 로드 명령 내부의 낮은 번호의 장애 발생 로드의 존재의 결과로써, 술어 제1 장애 레지스터 내부의 대응하는 성분들을 F로 설정함으로써 장애 발생으로 마크되는 해당 벡터 로드 명령에 의한 더 높은 번호의 벡터 성분 로드의 실행을 억제한다.
도 4는 장애 또는 원치 않는 부작용을 갖는 벡터 로드의 우발적 로드의 억제를 개략적으로 나타낸 흐름도이다. 벡터 로드 명령을 수신할 때까지 스텝 34에서 처리를 대기한다. 벡터 로드 명령이 첫 번째의 비우발적인 로드를 포함하는 경우에는, 이것이 행해져야 하는지(예를 들어, 장애가 없는지) 아닌지를 판정하는 별개의 메카니즘에 의해 처리한다. 그후, 스텝 36은 테스트용의 첫 번째 우발적 로드 어드레스를 선택한다. 도 2에 도시된 벡터 로드 명령의 경우에는, 이것은 벡터 성분 a1에 대한 로드의 어드레스가 될 것이다. 그후, 스텝 38은 선택된 어드레스가 장애 발생 어드레스인지, 예를 들어, 허가 테스트에 실패하거나 변환에 실패하는 것인지 아닌지 판정한다. 어드레스가 장애 발생인 경우에는, 스텝 40으로 처리를 진행하여, 어드레스/로드가 술어 제1 장애 레지스터(32) 내부에서 장애를 갖는 것으로 표시하고(로드 이전에 별개의 명령에 의해 모두 참값으로 초기화되고), 그후의 더 높은 번호를 갖는 로드들 모두가 장애를 갖는 것으로 표기된다. 그후, 처리를 종료한다. 이때, 도 4의 동작은 우발적 로드들이 검출되고 장애를 갖는 것으로 표기되는 방법을 나타낸다는 것을 알 수 있다. 실제로는, 이와 같은 검출 및 표기는 이들 로드가 실행되는 것과 동시에 행해져도 된다.
스텝 38에서의 판정 결과 선택된 로드 어드레스가 장애 발생이 아닌 경우에는, 스텝 42로 처리를 진행하여, 로드 어드레스가 비메모리 디바이스에 매핑되는지 아닌지의 판정(메모리 어드레스가 메모리 매핑된 비메모리 디바이스에 일치하는지 여부의 검사)이 행해진다. 로드 어드레스가 이와 같은 비메모리 디바이스에 대한 것인 경우에는, 처리가 다시 스텝 40으로 전달된다. 스텝 42의 판정 결과, 선택된 로드 어드레스가 비메모리 디바이스에 대한 것이 아닌 경우에는, 스텝 44로 처리를 진행하여, 로드가 행해진다면 선택된 로드 어드레스가 워치포인트를 유발할 것인지 아닌지에 대해 판정이 행해진다. 선택된 로드 어드레스가 워치포인트를 유발할 것 같으면, 스텝 46은 이와 같은 워치포인트에 대해 오버라이드 플래그가 설정되어 있는지 판정한다. 프로그래밍 가능한 진단 오버라이드 플래그는, 전역 기준으로 설정되어 한 개의 전역 플래그가 설정되는 모든 워치포인트에 적용되거나, 개별 기준으로 설정되어 개별 플래그들이 각각의 개별 워치포인트에 적용되어도 된다. 필요한 경우에는 오버라이드 플래그와 각각의 워치포인트 사이에 다양한 매핑을 갖는 다른 구성이 제공될 수도 있다. 스텝 46의 판정 결과 유발될 워치포인트에 대한 오버라이드 플래그가 설정되지 않은 경우에는, 마찬가지로 스텝 40으로 처리를 진행한다.
스텝 44의 판정 결과 로드 어드레스가 워치포인트를 유발하지 않을 것이나, 스텝 46의 판정 결과 잠재적으로 유발된 워치포인트에 대한 오버라이드 플래그가 설정되어 있으면, 스텝 48로 처리를 진행하여, 선택된 로드 어드레스로부터 벡터 레지스터의 선택된 성분으로 벡터 성분 로드가 행해진다. 그후, 스텝 50은 벡터 로드 내부의 최종 로드 어드레스가 현재 선택된 로드 어드레스인지 아닌지 판정한다. 최종 로드 어드레스가 현재 선택된 어드레스가 아닌 경우에는, 스텝 52가 테스트용의 다음 로드 어드레스를 선택하는 역할을 하고, 스텝 38로 처리를 되돌린다. 현재 선택된 어드레스가 최종 로드 어드레스인 경우에는, 처리가 종료한다.
전술한 실시예는, 소정의 기준이 우발적 로드가 비메모리 디바이스에 대한 것이거나 우발적 로드가 중지 디버그 모드의 진입이나 디버그 예외의 기동 등의 진단 동작을 기동하게 되는 것이다. 이때, 우발적 로드 억제회로에 의해 검출되는 소정의 기준은 다른 형태를 취할 수도 있다. 이와 같은 다른 형태의 소정의 기준은, 벡터 레지스터의 성분에 대한 데이터 값의 장애가 없는 로딩을 벗어난 프로세서의 상태의 변화를 일으키는 이 로드의 능력을 표시할 수도 있다. 벡터 레지스터 내부의 성분에 대한 데이터 값의 장애가 없는 로딩은, 실제로 따르게 되는 프로그램 흐름에 의해 실제로 요구되지 않는 상태의 변화를 일으키지만, 이것은 이와 같은 벡터 성분에 대한 데이터 값의 한 개 이상의 우발적 로드를 행하는 벡터 로드 명령의 비추론적 실행의 결과로써 프로그래밍 모델 내부에서 이해되고 예상되는 것이다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (13)

  1. 벡터 로드 명령의 비추론적 실행에 응답하여, 메모리의 메모리 어드레스 위치로부터 벡터 레지스터의 성분으로 판독된 데이터 값의 적어도 한 개의 우발적 로드를 행하는 벡터 로드회로와,
    상기 우발적 로드가 장애 발생 우발적 로드인지 장애가 없는 우발적 로드인지 검출하는 장애 검출회로와,
    소정의 기준에 부합하는 장애가 없는 우발적 로드를 검출 및 억제하는 우발적 로드 억제회로를 구비한 데이터 처리장치.
  2. 제 1항에 있어서,
    상기 소정의 기준은, 상기 벡터 레지스터의 성분에 대한 상기 데이터 값의 장애가 없는 로딩을 벗어나는 상기 데이터 처리장치의 상태의 변화를 일으킬 수 있는 능력을 나타내는 데이터 처리장치.
  3. 제 1항 또는 제 2항에 있어서,
    상기 벡터 로드회로는 상기 벡터 로드 명령에 응답하여 비우발적 로드 및 복수의 우발적 로드를 포함하는 복수의 로드를 행하는 데이터 처리장치.
  4. 제 1항 또는 제 2항에 있어서,
    상기 벡터 로드회로는 상기 벡터 로드 명령에 응답하여 복수의 우발적 로드를 행하는 데이터 처리장치.
  5. 제 3항에 있어서,
    상기 비우발적 로드는, 상기 비우발적 로드가 상기 소정의 기준을 갖는지 아닌지에 무관하게 메모리 어드레스부터 데이터 값을 로드하는 것이 허가되는 데이터 처리장치.
  6. 제 1항 내지 제 5항 중 어느 한 항에 있어서,
    상기 소정의 기준은, 상기 장애가 없는 우발적 로드의 메모리 어드레스가 한 개 이상의 비메모리 디바이스와 통신하기 위해 할당되는 것인 데이터 처리장치.
  7. 제 1항 내지 제 6항 중 어느 한 항에 있어서,
    진단 동작을 행하는 진단회로를 구비하고, 상기 소정의 기준은 상기 장애가 없는 우발적 로드의 메모리 어드레스가 상기 진단 동작을 기동하도록 설정된 어드레스와 일치하고, 상기 장애가 없는 우발적 로드의 억제는 상기 진단 동작의 기동을 억제하는 데이터 처리장치.
  8. 제 7항에 있어서,
    상기 진단 동작을 기동하도록 설정된 상기 어드레스는 진단 워치포인트 어드레스인 데이터 처리장치.
  9. 제 7항 또는 제 8항에 있어서,
    상기 진단 동작은, 중지 디버그 모드의 진입과 디버그 예외의 기동 중에서 한 개인 데이터 처리장치.
  10. 제 7항, 제 8항 또는 제 9항 중 어느 한 항에 있어서,
    상기 우발적 로드 억제회로는, 한 개 이상의 유저가 프로그래밍 가능한 진단 오버라이드 플래그에 응답하여, 상기 진단 동작을 기동하는 상기 우발적 장애가 없는 로드의 상기 우발적 로드 억제회로에 의한 억제를 금지하는 데이터 처리장치.
  11. 제 10항에 있어서,
    상기 한 개 이상의 유저가 프로그래밍 가능한 진단 오버라이드 플래그는, 복수의 워치포인트 각각에 적용하는 전역 플래그와, 각각의 개별적인 워치포인트에 적용하는 복수의 개별 플래그 중에서 한 개로 설정되는 데이터 처리장치.
  12. 벡터 로드 명령의 비추론적 실행에 응답하여, 메모리의 메모리 어드레스 위치로부터 벡터 레지스터의 성분으로 판독된 데이터 값의 적어도 한 개의 우발적 로드를 행하는 벡터 로드수단과,
    상기 우발적 로드가 장애 발생 우발적 로드인지 장애가 없는 우발적 로드인지 검출하는 장애 검출수단과,
    상기 벡터 로드수단 및 상기 장애 검출수단에 접속되어, 소정의 기준에 부합하는 장애가 없는 우발적 로드를 검출 및 억제하는 우발적 로드 억제수단을 구비한 데이터 처리장치.
  13. 벡터 로드 명령의 비추론적 실행에 응답하여, 메모리의 메모리 어드레스 위치로부터 벡터 레지스터의 성분으로 판독된 데이터 값의 적어도 한 개의 우발적 로드를 행하는 단계와,
    상기 우발적 로드가 장애 발생 우발적 로드인지 장애가 없는 우발적 로드인지 검출하는 단계와,
    소정의 기준에 부합하는 장애가 없는 우발적 로드를 검출 및 억제하는 단계를 포함하는 데이터 처리방법.
KR1020187003456A 2015-07-31 2016-06-21 우발적 로드 억제 KR102581568B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1513508.0A GB2540942B (en) 2015-07-31 2015-07-31 Contingent load suppression
GB1513508.0 2015-07-31
PCT/GB2016/051856 WO2017021679A1 (en) 2015-07-31 2016-06-21 Contingent load suppression

Publications (2)

Publication Number Publication Date
KR20180033512A true KR20180033512A (ko) 2018-04-03
KR102581568B1 KR102581568B1 (ko) 2023-09-22

Family

ID=54062953

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187003456A KR102581568B1 (ko) 2015-07-31 2016-06-21 우발적 로드 억제

Country Status (10)

Country Link
US (1) US10719383B2 (ko)
EP (1) EP3329360B1 (ko)
JP (1) JP6846405B2 (ko)
KR (1) KR102581568B1 (ko)
CN (1) CN107851012B (ko)
GB (1) GB2540942B (ko)
IL (1) IL256142B (ko)
MY (1) MY182419A (ko)
TW (1) TWI710955B (ko)
WO (1) WO2017021679A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3264317B1 (en) * 2016-06-29 2019-11-20 Arm Ltd Permission control for contingent memory access program instruction
US11663014B2 (en) * 2019-08-26 2023-05-30 Arm Limited Speculatively executing instructions that follow a status updating instruction
CN114428638A (zh) * 2020-10-29 2022-05-03 平头哥(上海)半导体技术有限公司 指令发射单元、指令执行单元、相关装置和方法
US11714644B2 (en) * 2021-08-27 2023-08-01 Arm Limited Predicated vector load micro-operation for performing a complete vector load when issued before a predicate operation is available and a predetermined condition is unsatisfied

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115509A1 (en) * 2001-09-20 2003-06-19 Dubal Scott P. Method for running diagnostic utilities in a multi-threaded operating system environment
US20100325483A1 (en) * 2008-08-15 2010-12-23 Apple Inc. Non-faulting and first-faulting instructions for processing vectors
US20130047037A1 (en) * 2011-08-15 2013-02-21 Freescale Semiconductor, Inc. Method and device for controlling debug event resources
JP2014049131A (ja) * 2012-08-29 2014-03-17 Freescale Semiconductor Inc ウォッチポイントを取り扱うためのデータ・プロセッサ・デバイスおよびその方法
US20150121127A1 (en) * 2013-10-30 2015-04-30 Sandeep Jain Watchpoint support system for functional simulator

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724536A (en) * 1994-01-04 1998-03-03 Intel Corporation Method and apparatus for blocking execution of and storing load operations during their execution
US6725362B2 (en) * 2001-02-06 2004-04-20 Intel Corporation Method for encoding an instruction set with a load with conditional fault instruction
US20060106499A1 (en) * 2004-10-22 2006-05-18 Roosli Philipp A System and method for emergency shutdown of selected services and facilities in a multi-unit building
US7490224B2 (en) * 2005-10-07 2009-02-10 International Business Machines Corporation Time-of-life counter design for handling instruction flushes from a queue
US7925868B2 (en) * 2007-01-24 2011-04-12 Arm Limited Suppressing register renaming for conditional instructions predicted as not executed
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
GB2456813B (en) * 2008-01-24 2012-03-07 Advanced Risc Mach Ltd Diagnostic context construction and comparison
US8261047B2 (en) * 2008-03-17 2012-09-04 Freescale Semiconductor, Inc. Qualification of conditional debug instructions based on address
US20110047358A1 (en) * 2009-08-19 2011-02-24 International Business Machines Corporation In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication
US10175990B2 (en) * 2009-12-22 2019-01-08 Intel Corporation Gathering and scattering multiple data elements
US8683178B2 (en) * 2011-01-21 2014-03-25 Apple Inc. Sharing a fault-status register when processing vector instructions
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
EP2695055B1 (en) * 2011-04-07 2018-06-06 VIA Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
US9047400B2 (en) * 2012-08-29 2015-06-02 Freescale Semiconductor, Inc. Data processor device for handling a watchpoint and method thereof
US9619230B2 (en) * 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
GB2519108A (en) * 2013-10-09 2015-04-15 Advanced Risc Mach Ltd A data processing apparatus and method for controlling performance of speculative vector operations
US20160092398A1 (en) * 2014-09-29 2016-03-31 Apple Inc. Conditional Termination and Conditional Termination Predicate Instructions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115509A1 (en) * 2001-09-20 2003-06-19 Dubal Scott P. Method for running diagnostic utilities in a multi-threaded operating system environment
US20100325483A1 (en) * 2008-08-15 2010-12-23 Apple Inc. Non-faulting and first-faulting instructions for processing vectors
US20130047037A1 (en) * 2011-08-15 2013-02-21 Freescale Semiconductor, Inc. Method and device for controlling debug event resources
JP2014049131A (ja) * 2012-08-29 2014-03-17 Freescale Semiconductor Inc ウォッチポイントを取り扱うためのデータ・プロセッサ・デバイスおよびその方法
US20150121127A1 (en) * 2013-10-30 2015-04-30 Sandeep Jain Watchpoint support system for functional simulator

Also Published As

Publication number Publication date
EP3329360A1 (en) 2018-06-06
TWI710955B (zh) 2020-11-21
JP2018527657A (ja) 2018-09-20
GB2540942B (en) 2019-01-23
IL256142B (en) 2020-08-31
IL256142A (en) 2018-02-28
EP3329360B1 (en) 2021-09-01
US10719383B2 (en) 2020-07-21
GB2540942A (en) 2017-02-08
MY182419A (en) 2021-01-25
JP6846405B2 (ja) 2021-03-24
KR102581568B1 (ko) 2023-09-22
CN107851012B (zh) 2022-06-10
TW201712531A (zh) 2017-04-01
CN107851012A (zh) 2018-03-27
GB201513508D0 (en) 2015-09-16
US20180203756A1 (en) 2018-07-19
WO2017021679A1 (en) 2017-02-09

Similar Documents

Publication Publication Date Title
KR102003663B1 (ko) 디버그 예외 생성 제어
TWI738744B (zh) 用於程式迴圈控制的設備、方法及電腦程式產品
KR102581568B1 (ko) 우발적 로드 억제
US9513911B2 (en) Method of detecting stack overflows and processor for implementing such a method
KR101924821B1 (ko) 정렬 제어
JP2013250980A (ja) プロセッサ資源および実行保護の方法および装置
KR20150064069A (ko) 안전한 도메인과 덜 안전한 도메인을 이용한 데이터 처리 장치 및 방법
KR20180088678A (ko) 제한 포인터의 관리 장치 및 방법
KR20180029054A (ko) 보안 모드 상태 데이터 액세스 트랙킹
KR101861952B1 (ko) 소프트웨어 브레이크 포인트를 무력화시키기 위한 안티 디버깅 방법 및 장치
US8612720B2 (en) System and method for implementing data breakpoints
JP2018067047A (ja) 制御装置
TWI746523B (zh) 暫存器存取控制
JP2006221606A (ja) データプロセッサ
US20090070534A1 (en) Memory access monitoring apparatus and related method
KR100239438B1 (ko) 오동작 방지 기능을 갖는 중앙 처리 장치
US9710270B2 (en) Exception control method, system, and program
CN108595247B (zh) 一种检测方法、装置及设备
KR20200020926A (ko) 콘텍스트 데이터 관리
JPS6240550A (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