KR20180033512A - 우발적 로드 억제 - Google Patents
우발적 로드 억제 Download PDFInfo
- 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
Links
- 230000001629 suppression Effects 0.000 title claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 16
- 238000001514 detection method Methods 0.000 claims abstract description 15
- 230000004044 response Effects 0.000 claims abstract description 15
- 238000000034 method Methods 0.000 claims description 20
- 230000008859 change Effects 0.000 claims description 7
- 230000005764 inhibitory process Effects 0.000 claims description 3
- 230000004913 activation Effects 0.000 claims 2
- 230000000452 restraining effect Effects 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 4
- 230000003213 activating effect Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 9
- 238000012360 testing method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0721—Error 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, 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은 장애 검출회로 및 우발적 로드 억제회로에 의해 제어되는 벡터 로드 명령들을 지원하는 데이터 처리 시스템을 개략적으로 나타낸 것이다.
도 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항에 있어서,
상기 소정의 기준은, 상기 벡터 레지스터의 성분에 대한 상기 데이터 값의 장애가 없는 로딩을 벗어나는 상기 데이터 처리장치의 상태의 변화를 일으킬 수 있는 능력을 나타내는 데이터 처리장치.
- 제 1항 또는 제 2항에 있어서,
상기 벡터 로드회로는 상기 벡터 로드 명령에 응답하여 비우발적 로드 및 복수의 우발적 로드를 포함하는 복수의 로드를 행하는 데이터 처리장치.
- 제 1항 또는 제 2항에 있어서,
상기 벡터 로드회로는 상기 벡터 로드 명령에 응답하여 복수의 우발적 로드를 행하는 데이터 처리장치.
- 제 3항에 있어서,
상기 비우발적 로드는, 상기 비우발적 로드가 상기 소정의 기준을 갖는지 아닌지에 무관하게 메모리 어드레스부터 데이터 값을 로드하는 것이 허가되는 데이터 처리장치.
- 제 1항 내지 제 5항 중 어느 한 항에 있어서,
상기 소정의 기준은, 상기 장애가 없는 우발적 로드의 메모리 어드레스가 한 개 이상의 비메모리 디바이스와 통신하기 위해 할당되는 것인 데이터 처리장치.
- 제 1항 내지 제 6항 중 어느 한 항에 있어서,
진단 동작을 행하는 진단회로를 구비하고, 상기 소정의 기준은 상기 장애가 없는 우발적 로드의 메모리 어드레스가 상기 진단 동작을 기동하도록 설정된 어드레스와 일치하고, 상기 장애가 없는 우발적 로드의 억제는 상기 진단 동작의 기동을 억제하는 데이터 처리장치.
- 제 7항에 있어서,
상기 진단 동작을 기동하도록 설정된 상기 어드레스는 진단 워치포인트 어드레스인 데이터 처리장치.
- 제 7항 또는 제 8항에 있어서,
상기 진단 동작은, 중지 디버그 모드의 진입과 디버그 예외의 기동 중에서 한 개인 데이터 처리장치.
- 제 7항, 제 8항 또는 제 9항 중 어느 한 항에 있어서,
상기 우발적 로드 억제회로는, 한 개 이상의 유저가 프로그래밍 가능한 진단 오버라이드 플래그에 응답하여, 상기 진단 동작을 기동하는 상기 우발적 장애가 없는 로드의 상기 우발적 로드 억제회로에 의한 억제를 금지하는 데이터 처리장치.
- 제 10항에 있어서,
상기 한 개 이상의 유저가 프로그래밍 가능한 진단 오버라이드 플래그는, 복수의 워치포인트 각각에 적용하는 전역 플래그와, 각각의 개별적인 워치포인트에 적용하는 복수의 개별 플래그 중에서 한 개로 설정되는 데이터 처리장치.
- 벡터 로드 명령의 비추론적 실행에 응답하여, 메모리의 메모리 어드레스 위치로부터 벡터 레지스터의 성분으로 판독된 데이터 값의 적어도 한 개의 우발적 로드를 행하는 벡터 로드수단과,
상기 우발적 로드가 장애 발생 우발적 로드인지 장애가 없는 우발적 로드인지 검출하는 장애 검출수단과,
상기 벡터 로드수단 및 상기 장애 검출수단에 접속되어, 소정의 기준에 부합하는 장애가 없는 우발적 로드를 검출 및 억제하는 우발적 로드 억제수단을 구비한 데이터 처리장치.
- 벡터 로드 명령의 비추론적 실행에 응답하여, 메모리의 메모리 어드레스 위치로부터 벡터 레지스터의 성분으로 판독된 데이터 값의 적어도 한 개의 우발적 로드를 행하는 단계와,
상기 우발적 로드가 장애 발생 우발적 로드인지 장애가 없는 우발적 로드인지 검출하는 단계와,
소정의 기준에 부합하는 장애가 없는 우발적 로드를 검출 및 억제하는 단계를 포함하는 데이터 처리방법.
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)
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)
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)
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 |
-
2015
- 2015-07-31 GB GB1513508.0A patent/GB2540942B/en active Active
-
2016
- 2016-06-21 WO PCT/GB2016/051856 patent/WO2017021679A1/en active Application Filing
- 2016-06-21 KR KR1020187003456A patent/KR102581568B1/ko active IP Right Grant
- 2016-06-21 JP JP2018502652A patent/JP6846405B2/ja active Active
- 2016-06-21 MY MYPI2017705119A patent/MY182419A/en unknown
- 2016-06-21 EP EP16731311.3A patent/EP3329360B1/en active Active
- 2016-06-21 CN CN201680042109.9A patent/CN107851012B/zh active Active
- 2016-06-21 US US15/743,392 patent/US10719383B2/en active Active
- 2016-07-15 TW TW105122368A patent/TWI710955B/zh active
-
2017
- 2017-12-06 IL IL256142A patent/IL256142B/en active IP Right Grant
Patent Citations (5)
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 |