KR20180126003A - 분기 명령 - Google Patents
분기 명령 Download PDFInfo
- Publication number
- KR20180126003A KR20180126003A KR1020187029669A KR20187029669A KR20180126003A KR 20180126003 A KR20180126003 A KR 20180126003A KR 1020187029669 A KR1020187029669 A KR 1020187029669A KR 20187029669 A KR20187029669 A KR 20187029669A KR 20180126003 A KR20180126003 A KR 20180126003A
- Authority
- KR
- South Korea
- Prior art keywords
- branch
- instruction
- loop
- processing
- data
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
도 1은 데이터 처리장치를 개략적으로 도시한 것이고,
도 2a는 분기 차후(branch-future) 명령을 개략적으로 도시한 것이고,
도 2b는 분기 차후 명령을 포함하는 프로그램 명령들의 시퀀스를 개략적으로 도시한 것이고,
도 2c는 소정의 명령을 나타내는 프로그램 가능 파라미터의 구현이 다른 다수의 분기 차후 명령들을 개략적으로 도시한 것이고,
도 2d는 프로그램 가능 분기 타겟 어드레스의 구현이 다른 다수의 분기 차후 명령들을 개략적으로 도시한 것이고,
도 3a는 처리 파이프라인을 통해 진행하는 분기 차후 명령을 포함하는 프로그램 명령들의 시퀀스를 개략적으로 도시한 것이고,
도 3b는 분기 차후 명령을 포함하는 명령들의 시퀀스의 프로그램 흐름을 개략적으로 도시한 것이고,
도 3c는 분기 차후 및 링크 명령을 포함하는 명령들의 시퀀스의 프로그램 흐름을 개략적으로 도시한 것이고,
도 4는 분기 차후 처리 방법을 개략적으로 도시한 것이고,
도 5는 데이터 무효에 응답하는 프로세스를 포함하는 다른 분기 차후 처리방법을 개략적으로 도시한 것이고,
도 5a는 조건 분기 차후 명령을 처리하는 일례를 도시한 것이고,
도 5b는 반대 조건들에 대응한 한 쌍의 조건 분기 차후 명령의 일례를 도시한 것이고,
도 6은 제로 오버헤드 루프 작용을 개략적으로 도시한 것이고,
도 7은 도 6의 상기 제로 오버헤드 루프 작용 후 명령들을 실행할 때 파이프라인 스테이지 콘텐트를 처리하는 것을 개략적으로 도시한 것이고,
도 8은 제로 오버헤드 루프 작용과 분기 차후 명령 작용을 제어하기 위해 루프/분기 제어회로를 구비하는 처리 파이프라인을 개략적으로 도시한 것이고,
도 9는 프로그램 카운터 값과 루프 제어 데이터의 필드간에 비교하여 루프 시작 위치로의 분기를 행해야 하는 프로그램 실행에서의 포인트를 특정하는 방법을 도시한 것이고,
도 10a는 루프 시작 프로그램 명령의 작용을 개략적으로 도시하는 흐름도이고,
도 10b는 상기 루프 시작 명령의 구현을 개략적으로 도시한 것이고,
도 11은 루프 종료 프로그램 명령의 작용을 개략적으로 도시하는 흐름도이고,
도 12는 프로그램 루프 본체를 제로 오버헤드 루프 작용의 일부로서 실행할 때 루프 제어회로의 액션을 개략적으로 도시하는 흐름도이고,
도 13은 술어를 제공하기 위해 프로그램 루프 본체내의 명령들의 실행 제어를 함으로써, 벡터 명령들이, 술어에 의해 제어중인 상기 프로그램 루프 본체의 주어진 반복동안에 그 특별한 벡터 요소들이 활성상태인 다중 벡터 요소들에 관해 연산할 수도 있는 것을 개략적으로 도시하는 흐름도이고,
도 14a 내지 14e는 비서술 루프와 서술 루프의 실행의 예들을 도시한 것이고,
도 15는 가상 머신 메카니즘을 개략적으로 도시한 것이다.
Claims (21)
- 프로그램 명령들의 시퀀스에 의해 지정된 처리 연산들을 행하는 처리회로;
상기 처리회로를 제어하여 상기 처리 연산들을 행하기 위한 제어신호들을 생성하기 위해 상기 프로그램 명령들의 시퀀스를 디코딩하는 명령 디코더를 구비하고;
상기 명령 디코더는 분기 차후 명령을 디코딩하는 분기 차후 명령 디코딩 회로를 구비하고, 상기 분기 차후 명령은 분기 타겟 어드레스와 관련된 프로그램 가능 파라미터와 상기 프로그램 명령들의 시퀀스내의 상기 분기 차후 명령 후 소정의 명령을 나타내는 또 다른 프로그램 가능 분기점 데이터 파라미터를 갖고;
상기 처리회로는, 상기 분기 차후 명령 디코딩 회로에 의해 제어되되 상기 분기점 데이터에 응답하여, 상기 프로그램 명령들의 시퀀스의 처리가 상기 소정의 명령에 도달할 때 상기 분기 타겟 어드레스에 대응한 분기 타겟 명령으로부터 시작하는 프로그램 명령들의 처리로 분기를 기동시키는 분기 제어회로를 구비하는, 데이터 처리장치.
- 제 1 항에 있어서,
상기 분기 제어회로가 상기 분기를 기동시킬 때, 상기 분기 타겟 명령은 상기 프로그램 명령들의 시퀀스에서 상기 소정의 명령 직전의 명령에 후속하고, 상기 분기 차후 명령에 의해 지정된 연산과 상기 소정의 명령 직전의 상기 명령에 의해 지정된 연산은 상기 처리회로에 의해 인접하여 행해지는, 데이터 처리장치.
- 제 1 항 또는 제 2 항에 있어서,
상기 분기점 데이터는,
상기 소정의 명령의 어드레스를 나타내는 어드레스 데이터;
상기 소정의 명령 직전의 마지막 명령의 어드레스를 나타내는 종료 데이터;
상기 분기 차후 명령과 상기 소정의 명령과의 사이의 거리를 나타내는 오프셋 데이터;
명령들의 시작 저장 어드레스들을 구별하는 메모리 저장 어드레스의 비트들의 최하위 비트 종료로부터 시작하는 상기 소정의 명령의 상기 메모리 저장 어드레스를 나타내는 비트들의 적절한 서브세트;
상기 소정의 명령전에 처리되는 나머지 명령들의 수를 나타내는 나머지 사이즈 명령 데이터; 및
상기 소정의 명령에 도달하기 전에 처리되는 나머지 프로그램 저장 장소들의 수를 나타내는 나머지 사이즈 데이터 중,
하나 이상을 포함하는, 데이터 처리장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
상기 분기 차후 명령 디코딩 회로는, 상기 처리회로를 제어하여 상기 분기점 데이터와 상기 분기 타겟 어드레스를 분기 제어 캐시에 저장하는, 데이터 처리장치.
- 제 4 항에 있어서,
상기 분기 차후 명령 디코딩 회로가 상기 분기 차후 명령을 디코딩할 때, 상기 분기 제어회로는, 명령들의 시작 저장 어드레스들을 구별하는 메모리 저장 어드레스의 비트들의 최하위 비트 종료로부터 시작하는 상기 소정의 명령의 상기 메모리 저장 어드레스를 나타내는 비트들의 적절한 서브세트를 저장하는, 데이터 처리장치.
- 제 5 항에 있어서,
상기 분기 제어회로는, 상기 비트들의 적절한 서브세트가,
프로그램 카운터 값을 나타내는 값의 대응한 부분;
명령 페치 어드레스를 나타내는 값의 대응한 부분; 및
상기 데이터 처리장치의 처리 활동을 나타내는 값 중,
하나와 일치할 때, 상기 분기를 기동시키는, 데이터 처리장치.
- 제 4 항에 있어서,
리셋트 중인 상기 처리회로;
프로그램 루프 본체의 또 다른 반복이 요구되지 않는다고 판정하는 루프 제어회로 또는 루프 종료 명령;
행해지는 예외;
처리가 현재의 예외의 처리로부터, 상기 현재의 예외 이전에 상태를 복원하지 않고 다음 예외의 처리에 직접 진행하는 예외 테일 체이닝;
소정의 즉시 타겟 어드레스 범위보다 큰 분기 명령의 실행;
분기 명령의 실행;
루프 시작 명령의 실행;
예외로부터 복귀;
상기 데이터 처리장치의 명령 캐시가 무효화되게 하는 명령의 실행;
상기 제어 데이터의 캐싱을 불가능하게 하는 명령의 실행;
분기 예측을 불가능하게 하는 명령의 실행;
프로그램 루프 몸체내의 분기가 루프 시작 명령과 루프 종료 명령 사이에 있지 않은 어드레스를 타겟으로 한다고 판정하는 상기 처리회로;
보안 연산모드와 비보안 연산모드간의 전환; 및
하나 이상의 구현 규정된 조건들 중, 하나 이상에 응답하여,
상기 분기점 데이터가 무효화되는, 데이터 처리장치.
- 제 7 항에 있어서,
상기 분기점 데이터가 무효화되어 있을 때, 프로그램 흐름은 상기 소정의 명령으로 진행하는, 데이터 처리장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
상기 분기 차후 명령은, 만족되는 조건 분기 차후 명령과 관련된 하나 이상의 조건 코드들에 따라 실행된 상기 조건 분기 차후 명령인, 데이터 처리장치.
- 제 9 항에 있어서,
상기 하나 이상의 조건 코드들이 만족되지 않을 때 상기 조건 분기 차후 명령에 응답하여, 상기 분기 차후 명령 디코딩 회로는, 상기 분기 제어회로를 제어하여, 상기 프로그램 명령들의 시퀀스의 처리가 상기 소정의 명령에 도달할 때 상기 프로그램 명령들의 시퀀스에서 상기 이후의 분기 명령 후 분기 우회 명령의 처리로의 분기를 기동시키기 위해 분기 제어 데이터를 설정하도록 구성되는, 데이터 처리장치.
- 제 10 항에 있어서,
상기 조건 분기 차후 명령은, 상기 소정의 명령의 어드레스에 관하여 상기 분기 우회 명령의 어드레스를 나타내는 우회 파라미터를 지정하는, 데이터 처리장치.
- 제 11 항에 있어서,
상기 명령 디코더는, 상기 명령 디코더에 의해 지원된 복수의 명령 길이들로부터 선택된 가변 명령 길이를 갖는 명령들을 디코딩하도록 구성되고;
상기 우회 파라미터는 상기 이후의 분기 명령의 명령 길이를 나타내는, 데이터 처리장치.
- 제 9 항 내지 제 12 항 중 어느 한 항에 있어서,
상기 하나 이상의 조건 코드들이 만족되고 분기 제어 캐시가 이미 보다 이른 분기 차후 명령에 응답하여 설정된 유효 분기 제어 데이터를 저장할 때 상기 조건 분기 차후 명령에 응답하여, 상기 분기 차후 명령 디코딩 회로는 상기 처리회로를 제어하여 상기 유효 분기 제어 데이터를 겹쳐쓰도록 구성되고;
상기 하나 이상의 조건 코드들이 만족되지 않고 상기 분기 제어 캐시가 이미 보다 이른 분기 차후 명령에 응답하여 설정된 유효 분기 제어 데이터를 저장할 때 상기 조건 분기 차후 명령에 응답하여, 상기 분기 차후 명령 디코딩 회로는 상기 처리회로를 제어하여 상기 유효 분기 제어 데이터를 상기 분기 제어 캐시에 보유하도록 구성되는, 데이터 처리장치.
- 제 1 항 내지 제 13 항 중 어느 한 항에 있어서,
분기 타겟 어드레스와 관련된 상기 프로그램 가능 파라미터는 레지스터 지정자를 포함하고, 상기 분기 타겟 어드레스는 상기 레지스터 지정자에 대응한 레지스터에 저장되는, 데이터 처리장치.
- 제 1 항 내지 제 13 항 중 어느 한 항에 있어서,
분기 타겟 어드레스와 관련된 상기 프로그램 가능 파라미터는 상기 분기 차후 명령의 메모리 어드레스에 의존한 현재의 메모리 어드레스로부터 오프셋만큼 상기 분기 타겟 어드레스를 나타내는 즉시 오프셋 값을 포함하는, 데이터 처리장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
상기 분기 차후 명령 디코딩 회로는, 상기 처리회로를 제어하여, 상기 분기로부터 상기 분기 타겟 어드레스에 복귀시에 사용하기 위한 복귀 어드레스를 링크 데이터 스토어내에 저장하는, 데이터 처리장치.
- 제 1 항 내지 제 15 항 중 어느 한 항에 있어서,
상기 분기 제어회로는, 상기 프로그램 명령들의 시퀀스의 처리가 상기 소정의 명령에 도달할 때, 상기 분기로부터 상기 분기 타겟 어드레스에 복귀시에 사용하기 위한 복귀 어드레스를 링크 데이터 스토어내에 저장하도록 구성되는, 데이터 처리장치.
- 제 16 항 또는 제 17 항에 있어서,
상기 링크 데이터 스토어는,
링크 레지스터; 또는
스택 포인터 레지스터에 적용된 소정의 오프셋에 의해 지정된 저장 영역에서의 어드레스 중,
하나인, 데이터 처리장치.
- 프로그램 명령들의 시퀀스에 의해 지정된 처리 연산들을 행하는 처리수단;
상기 프로그램 명령들의 시퀀스에 응답하여, 상기 처리수단을 제어하여 상기 처리 연산들을 행하기 위한 제어신호들을 생성하는 명령 디코더 수단을 구비하고;
상기 명령 디코더 수단은 분기 차후 명령을 디코딩하는 분기 차후 명령 디코딩 수단을 구비하고, 상기 분기 차후 명령은 분기 타겟 어드레스와 각각 관련된 프로그램 가능 파라미터들과 상기 프로그램 명령들의 시퀀스내의 상기 분기 차후 명령 후 소정의 명령을 나타내는 분기점 데이터를 갖고;
상기 처리수단은, 상기 분기 차후 명령 디코딩 수단에 의해 제어되되 상기 분기점 데이터에 응답하여, 상기 프로그램 명령들의 시퀀스의 처리가 상기 소정의 명령에 도달할 때 상기 분기 타겟 어드레스에 대응한 분기 타겟 명령으로부터 시작하는 프로그램 명령들의 처리로 분기를 기동시키는 분기 제어수단을 구비하는, 데이터 처리장치.
- 프로그램 명령들의 시퀀스에 의해 지정된 처리 연산들을 행하는 단계;
상기 처리 연산들을 행하는 상기 단계를 제어하기 위한 제어신호들을 생성하기 위해 상기 프로그램 명령들의 시퀀스를 디코딩하는 단계를 포함하고,
상기 디코딩하는 단계는 분기 차후 명령을 디코딩하는 것을 포함하고, 상기 분기 차후 명령은 분기 타겟 어드레스와 각각 관련된 프로그램 가능 파라미터들과 상기 프로그램 명령들의 시퀀스내의 상기 분기 차후 명령 후 소정의 명령을 나타내는 분기점 데이터를 갖고;
상기 프로그램 명령들의 시퀀스의 처리가 상기 소정의 명령에 도달할 때 상기 분기 타겟 어드레스에 대응한 분기 타겟 명령으로부터 시작하는 프로그램 명령들의 처리로 분기를 기동시키는 단계를 더 포함하는, 데이터 처리방법.
- 컴퓨터를 제어하여 청구항 20의 방법에 따라 동작하는 가상 머신 실행 환경을 제공하기 위한 컴퓨터 프로그램을 비일시적 형태로 저장하는 컴퓨터 프로그램 제품.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB1604948.8A GB2548604B (en) | 2016-03-23 | 2016-03-23 | Branch instruction |
| GB1604948.8 | 2016-03-23 | ||
| PCT/GB2017/050774 WO2017163038A1 (en) | 2016-03-23 | 2017-03-21 | Branch instruction |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20180126003A true KR20180126003A (ko) | 2018-11-26 |
| KR102353639B1 KR102353639B1 (ko) | 2022-01-20 |
Family
ID=55968778
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020187029669A Active KR102353639B1 (ko) | 2016-03-23 | 2017-03-21 | 분기 명령 |
Country Status (9)
| Country | Link |
|---|---|
| US (1) | US10768938B2 (ko) |
| EP (1) | EP3433723B1 (ko) |
| JP (1) | JP7011595B2 (ko) |
| KR (1) | KR102353639B1 (ko) |
| CN (1) | CN108885549B (ko) |
| GB (1) | GB2548604B (ko) |
| IL (1) | IL261341B (ko) |
| TW (1) | TWI746529B (ko) |
| WO (1) | WO2017163038A1 (ko) |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2548602B (en) | 2016-03-23 | 2019-10-23 | Advanced Risc Mach Ltd | Program loop control |
| GB2548603B (en) * | 2016-03-23 | 2018-09-26 | Advanced Risc Mach Ltd | Program loop control |
| GB2551574B (en) | 2016-06-24 | 2019-11-27 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry |
| GB2564130B (en) * | 2017-07-04 | 2020-10-07 | Advanced Risc Mach Ltd | An apparatus and method for controlling execution of instructions |
| CN109783143B (zh) * | 2019-01-25 | 2021-03-09 | 贵州华芯通半导体技术有限公司 | 用于流水线指令流的控制方法和控制设备 |
| CN110134441B (zh) * | 2019-05-23 | 2020-11-10 | 苏州浪潮智能科技有限公司 | Risc-v分支预测方法、装置、电子设备及存储介质 |
| CN112835624A (zh) * | 2021-02-18 | 2021-05-25 | 中国科学院自动化研究所 | 指令字处理器及零开销循环处理方法、电子设备及介质 |
| WO2023067667A1 (ja) * | 2021-10-18 | 2023-04-27 | 日本電信電話株式会社 | 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム |
| US20230305992A1 (en) * | 2022-03-25 | 2023-09-28 | Nokia Solutions And Networks Oy | Processor using target instructions |
| CN114895966B (zh) * | 2022-06-10 | 2024-10-22 | 江苏华创微系统有限公司 | 通过bypass电路提升loop分支预测算法准确率的方法 |
| US12373216B2 (en) * | 2023-08-16 | 2025-07-29 | Texas Instruments Incorporated | Conditional branch instructions |
| CN119883372B (zh) * | 2025-03-24 | 2025-06-27 | 北京开源芯片研究院 | 指令流的重建方法、装置、电子设备及可读存储介质 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2000022516A1 (en) * | 1998-10-12 | 2000-04-20 | Idea Corporation | Method for processing branch operations |
| EP1071010A2 (en) * | 1999-07-23 | 2001-01-24 | International Business Machines Corporation | Decoupled instruction fetch-execute with static branch prediction support |
| US20150277926A1 (en) * | 2014-03-28 | 2015-10-01 | Telefonaktiebolaget L M Ericsson (Publ) | Efficient Branch Predictor History Recovery In Pipelined Computer Architectures Employing Branch Prediction And Branch Delay Slots Of Variable Size |
Family Cites Families (48)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3551895A (en) * | 1968-01-15 | 1970-12-29 | Ibm | Look-ahead branch detection system |
| US5388841A (en) * | 1992-01-30 | 1995-02-14 | A/N Inc. | External memory system having programmable graphics processor for use in a video game system or the like |
| JPH0827715B2 (ja) * | 1993-03-03 | 1996-03-21 | 日本電気株式会社 | 記憶装置 |
| US5790845A (en) | 1995-02-24 | 1998-08-04 | Hitachi, Ltd. | System with reservation instruction execution to store branch target address for use upon reaching the branch point |
| JPH08292887A (ja) * | 1995-02-24 | 1996-11-05 | Hitachi Ltd | 命令の分岐方法およびプロセッサ |
| JP2883035B2 (ja) * | 1995-04-12 | 1999-04-19 | 松下電器産業株式会社 | パイプライン・プロセッサ |
| TW360852B (en) | 1995-04-12 | 1999-06-11 | Matsushita Electric Industrial Co Ltd | Pipeline processor |
| JP2931890B2 (ja) | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
| US5742804A (en) * | 1996-07-24 | 1998-04-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Instruction prefetch mechanism utilizing a branch predict instruction |
| US6189092B1 (en) * | 1997-06-30 | 2001-02-13 | Matsushita Electric Industrial Co., Ltd. | Pipeline processor capable of reducing branch hazards with small-scale circuit |
| US6092188A (en) * | 1997-12-23 | 2000-07-18 | Intel Corporation | Processor and instruction set with predict instructions |
| US6304963B1 (en) | 1998-05-14 | 2001-10-16 | Arm Limited | Handling exceptions occuring during processing of vector instructions |
| TW455814B (en) * | 1998-08-06 | 2001-09-21 | Intel Corp | Software directed target address cache and target address register |
| US6308322B1 (en) * | 1999-04-06 | 2001-10-23 | Hewlett-Packard Company | Method and apparatus for reduction of indirect branch instruction overhead through use of target address hints |
| US6446197B1 (en) * | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
| WO2002084451A2 (en) | 2001-02-06 | 2002-10-24 | Victor Demjanenko | Vector processor architecture and methods performed therein |
| US7159103B2 (en) | 2003-03-24 | 2007-01-02 | Infineon Technologies Ag | Zero-overhead loop operation in microprocessor having instruction buffer |
| GB2409064B (en) | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing in parallel a data processing operation on data elements |
| US7930526B2 (en) * | 2004-03-24 | 2011-04-19 | Arm Limited | Compare and branch mechanism |
| US20050223202A1 (en) * | 2004-03-31 | 2005-10-06 | Intel Corporation | Branch prediction in a pipelined processor |
| US7272704B1 (en) | 2004-05-13 | 2007-09-18 | Verisilicon Holdings (Cayman Islands) Co. Ltd. | Hardware looping mechanism and method for efficient execution of discontinuity instructions |
| US7565514B2 (en) | 2006-04-28 | 2009-07-21 | Freescale Semiconductor, Inc. | Parallel condition code generation for SIMD operations |
| US7991985B2 (en) | 2006-12-22 | 2011-08-02 | Broadcom Corporation | System and method for implementing and utilizing a zero overhead loop |
| EP2009544B1 (en) | 2007-06-26 | 2010-04-07 | Telefonaktiebolaget LM Ericsson (publ) | Data-processing unit for nested-loop instructions |
| JP4526560B2 (ja) | 2007-12-05 | 2010-08-18 | 日本テキサス・インスツルメンツ株式会社 | プロセッサおよび信号処理方法 |
| US7925866B2 (en) * | 2008-01-23 | 2011-04-12 | Arm Limited | Data processing apparatus and method for handling instructions to be executed by processing circuitry |
| US9110683B2 (en) | 2008-08-15 | 2015-08-18 | Apple Inc. | Predicting branches for vector partitioning loops when processing vector instructions |
| US8271832B2 (en) | 2008-08-15 | 2012-09-18 | Apple Inc. | Non-faulting and first-faulting instructions for processing vectors |
| US7900025B2 (en) | 2008-10-14 | 2011-03-01 | International Business Machines Corporation | Floating point only SIMD instruction set architecture including compare, select, Boolean, and alignment operations |
| US20100122066A1 (en) | 2008-11-12 | 2010-05-13 | Freescale Semiconductor, Inc. | Instruction method for facilitating efficient coding and instruction fetch of loop construct |
| NL2002799C2 (en) * | 2009-04-24 | 2010-10-26 | Univ Delft Tech | Data structure, method and system for address lookup. |
| GB2471067B (en) * | 2009-06-12 | 2011-11-30 | Graeme Roy Smith | Shared resource multi-thread array processor |
| GB2471138B (en) | 2009-06-19 | 2014-08-13 | Advanced Risc Mach Ltd | Handling integer and floating point registers during a context switch |
| JP5692089B2 (ja) | 2009-11-24 | 2015-04-01 | 日本電気株式会社 | プロセッサ、プロセッサによるループ回数制御方法 |
| US20110280314A1 (en) | 2010-05-12 | 2011-11-17 | Texas Instruments Incorporated | Slice encoding and decoding processors, circuits, devices, systems and processes |
| US20110320787A1 (en) * | 2010-06-28 | 2011-12-29 | Qualcomm Incorporated | Indirect Branch Hint |
| US20140189296A1 (en) | 2011-12-14 | 2014-07-03 | Elmoustapha Ould-Ahmed-Vall | System, apparatus and method for loop remainder mask instruction |
| US9448879B2 (en) * | 2011-12-22 | 2016-09-20 | Intel Corporation | Apparatus and method for implement a multi-level memory hierarchy |
| US8688661B2 (en) * | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
| US20130346727A1 (en) * | 2012-06-25 | 2013-12-26 | Qualcomm Incorporated | Methods and Apparatus to Extend Software Branch Target Hints |
| TWI569205B (zh) * | 2012-08-31 | 2017-02-01 | 威盛電子股份有限公司 | 一種微處理器及其操作方法 |
| EP2901275A4 (en) | 2012-09-28 | 2016-06-08 | Intel Corp | GRINDING VECTORIZATION PROCESS AND DEVICE |
| US9244677B2 (en) | 2012-09-28 | 2016-01-26 | Intel Corporation | Loop vectorization methods and apparatus |
| US9557993B2 (en) | 2012-10-23 | 2017-01-31 | Analog Devices Global | Processor architecture and method for simplifying programming single instruction, multiple data within a register |
| US9459871B2 (en) | 2012-12-31 | 2016-10-04 | Intel Corporation | System of improved loop detection and execution |
| US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
| US9329870B2 (en) | 2013-02-13 | 2016-05-03 | International Business Machines Corporation | Extensible execution unit interface architecture with multiple decode logic and multiple execution units |
| US9798542B2 (en) | 2014-04-25 | 2017-10-24 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Zero overhead looping by a decoder generating and enqueuing a branch instruction |
-
2016
- 2016-03-23 GB GB1604948.8A patent/GB2548604B/en active Active
-
2017
- 2017-03-21 WO PCT/GB2017/050774 patent/WO2017163038A1/en not_active Ceased
- 2017-03-21 JP JP2018548913A patent/JP7011595B2/ja active Active
- 2017-03-21 CN CN201780017738.0A patent/CN108885549B/zh active Active
- 2017-03-21 US US16/085,053 patent/US10768938B2/en active Active
- 2017-03-21 EP EP17713065.5A patent/EP3433723B1/en active Active
- 2017-03-21 TW TW106109292A patent/TWI746529B/zh active
- 2017-03-21 KR KR1020187029669A patent/KR102353639B1/ko active Active
-
2018
- 2018-08-23 IL IL261341A patent/IL261341B/en active IP Right Grant
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2000022516A1 (en) * | 1998-10-12 | 2000-04-20 | Idea Corporation | Method for processing branch operations |
| EP1071010A2 (en) * | 1999-07-23 | 2001-01-24 | International Business Machines Corporation | Decoupled instruction fetch-execute with static branch prediction support |
| US20150277926A1 (en) * | 2014-03-28 | 2015-10-01 | Telefonaktiebolaget L M Ericsson (Publ) | Efficient Branch Predictor History Recovery In Pipelined Computer Architectures Employing Branch Prediction And Branch Delay Slots Of Variable Size |
Non-Patent Citations (1)
| Title |
|---|
| James R. Goodman 외 1명. Code Scheduling Methods for Some Architectural Features in PIPE. 1985년 2월 * |
Also Published As
| Publication number | Publication date |
|---|---|
| EP3433723B1 (en) | 2020-07-22 |
| IL261341A (en) | 2018-10-31 |
| CN108885549A (zh) | 2018-11-23 |
| US10768938B2 (en) | 2020-09-08 |
| CN108885549B (zh) | 2023-03-07 |
| TWI746529B (zh) | 2021-11-21 |
| GB2548604A (en) | 2017-09-27 |
| KR102353639B1 (ko) | 2022-01-20 |
| TW201734768A (zh) | 2017-10-01 |
| US20190079770A1 (en) | 2019-03-14 |
| JP2019509576A (ja) | 2019-04-04 |
| JP7011595B2 (ja) | 2022-01-26 |
| IL261341B (en) | 2020-07-30 |
| WO2017163038A1 (en) | 2017-09-28 |
| EP3433723A1 (en) | 2019-01-30 |
| GB2548604B (en) | 2018-03-21 |
| GB201604948D0 (en) | 2016-05-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102353628B1 (ko) | 프로그램 루프 제어 | |
| KR102353639B1 (ko) | 분기 명령 | |
| KR102353636B1 (ko) | 프로그램 루프 제어 | |
| US11307856B2 (en) | Branch target variant of branch-with-link instruction | |
| KR102379886B1 (ko) | 벡터 명령 처리 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0105 | International application |
Patent event date: 20181015 Patent event code: PA01051R01D Comment text: International Patent Application |
|
| PG1501 | Laying open of application | ||
| A201 | Request for examination | ||
| PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20200310 Comment text: Request for Examination of Application |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20210329 Patent event code: PE09021S01D |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20211024 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20220117 Patent event code: PR07011E01D |
|
| PR1002 | Payment of registration fee |
Payment date: 20220118 End annual number: 3 Start annual number: 1 |
|
| PG1601 | Publication of registration | ||
| PR1001 | Payment of annual fee |
Payment date: 20241224 Start annual number: 4 End annual number: 4 |