KR102601858B1 - 로컬 브랜치 디코더를 구비한 멀티이슈 마이크로코드 유닛을 포함하는 파이프라인형 프로세서 - Google Patents
로컬 브랜치 디코더를 구비한 멀티이슈 마이크로코드 유닛을 포함하는 파이프라인형 프로세서 Download PDFInfo
- Publication number
- KR102601858B1 KR102601858B1 KR1020160154923A KR20160154923A KR102601858B1 KR 102601858 B1 KR102601858 B1 KR 102601858B1 KR 1020160154923 A KR1020160154923 A KR 1020160154923A KR 20160154923 A KR20160154923 A KR 20160154923A KR 102601858 B1 KR102601858 B1 KR 102601858B1
- Authority
- KR
- South Korea
- Prior art keywords
- microcode
- instruction
- instructions
- call
- return
- 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.)
- Active
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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/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/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/324—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
-
- 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
-
- 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
-
- 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/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
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
도 2는 도 1의 프로세서의 명령어 변환기를 더 상세하게 도시하는 블록도이다.
도 3은 도 2의 마이크로코드 유닛의 동작을 도시하는 흐름도이다.
도 4는 도 2의 마이크로코드 유닛의 동작을 도시하는 흐름도이다.
Claims (15)
- 명령어 세트 아키텍처(instruction set architecture, ISA)를 구비한 프로세서에 있어서,
마이크로명령어(microinstruction)를 실행하는 복수의 실행 유닛을 구비한 실행 파이프라인과,
상기 ISA에 의해 정의되는 구조적 명령어(architectural instruction)를 상기 마이크로명령어로 변환하는 명령어 변환기(instruction translator)
를 포함하고,
상기 명령어 변환기는 고속 변환기 및 마이크로코드 유닛을 포함하고, 상기 마이크로코드 유닛은,
마이크로코드 명령어(microcode instruction)를 유지하는 메모리 - 상기 고속 변환기가 마이크로코딩된 구조적 명령어에 직면(encounter)할 때, 상기 고속 변환기는 마이크로코드 모드로 전환하고 상기 메모리에 어드레스를 제공하며, 상기 메모리는 상기 어드레스에 응답하여 클록 사이클마다 복수의 마이크로코드 명령어를 제공하고, 상기 마이크로코딩된 구조적 명령어는 상기 구조적 명령어 중 하나임 - 와,
상기 메모리에 의해 제공되는 마이크로코드 명령어를 유지하는 큐와,
상기 메모리와 상기 큐 사이에 연결되는 브랜치 디코더로서, 상기 브랜치 디코더는, 상기 메모리에 의해 제공되는 복수의 마이크로코드 명령어를 디코딩하여, 상기 복수의 마이크로코드 명령어 중에서 하나 이상의 로컬 브랜치 명령어(local branch instruction)를 검출하고, 상기 하나 이상의 로컬 브랜치 명령어의 프로그램 순서상 첫번째(first-in-program-order) 로컬 브랜치 명령어까지(그러나 이 첫번째 로컬 브랜치 명령어는 포함하지 않음) 상기 복수의 마이크로코드 명령어의 마이크로코드 명령어가 상기 큐에 기록되게 하며, 상기 프로그램 순서상 첫번째 로컬 브랜치 명령어와, 상기 복수의 마이크로코드 명령어의 이어지는 마이크로코드 명령어가 상기 큐에 기록되지 못하게 하고, 로컬 브랜치 명령어는 상기 실행 파이프라인보다는 상기 브랜치 디코더에 의해 분석되는(resolved) 것인, 상기 브랜치 디코더와,
클록 사이클마다 상기 큐로부터 수신되는 복수의 마이크로코드 명령어를, 상기 실행 파이프라인에 제공하도록 복수의 마이크로명령어로 변환하는 복수의 마이크로코드 변환기
를 포함하는 것인 프로세서. - 제1항에 있어서,
클록 사이클마다 상기 메모리에 의해 제공되는 복수의 마이크로코드 명령어는 적어도 4개인 것인 프로세서. - 제1항에 있어서,
상기 명령어 변환기는, 상기 브랜치 디코더에 의해 디코딩되었던 호출 명령어 - 대응하는 반환 명령어는 아직 상기 브랜치 디코더에 의해 디코딩되지 않음 - 와 연관된 반환 어드레스를 유지하는 복수의 호출/반환 스택을 구비한 호출/반환 유닛을 더 포함하며,
상기 프로그램 순서상 첫번째 로컬 브랜치 명령어가 호출/반환 명령어일 경우에, 상기 브랜치 디코더는 상기 호출/반환 유닛에, 상기 복수의 호출/반환 스택 중 현재의 호출/반환 스택에/으로부터 반환 어드레스를 푸시(push)/팝(pop)하도록 지시하는 것인 프로세서. - 제3항에 있어서,
상기 호출/반환 유닛은 상기 복수의 호출/반환 스택에 대응하는 복수의 카운터를 더 포함하고, 상기 복수의 카운터의 각각의 카운터는, 상기 복수의 호출/반환 스택 중 대응하는 호출/반환 스택이 상기 복수의 호출/반환 스택 중 현재의 호출/반환 스택인 동안, 상기 실행 파이프라인에 의해 아직 분석되지는 않지만 상기 브랜치 디코더에 의해 디코딩된 비로컬(non-local) 브랜치 명령어의 카운트를 유지하고,
상기 브랜치 디코더는 상기 복수의 마이크로코드 명령어 내에서 상기 프로그램 순서상 첫번째 로컬 브랜치 명령어에 선행하는 비로컬 브랜치 명령어의 수를 계수하며, 상기 호출/반환 유닛은 상기 복수의 호출/반환 스택 중 현재의 호출/반환 스택에 대응하는 상기 복수의 카운터 중 하나의 카운터에 계수된 수를 더하고, 비로컬 브랜치 명령어는 상기 명령어 변환기보다는 상기 실행 파이프라인에 의해 분석되는 것인 프로세서. - 제1항에 있어서,
어드레스에 응답하여 클록 사이클마다 상기 메모리에 의해 제공되는 복수의 마이크로코드 명령어는 N개의 마이크로코드 명령어이고,
상기 메모리는 N개의 뱅크를 포함하며, 상기 N개의 뱅크의 각각의 뱅크는 단일 판독 포트를 구비하고,
상기 N개의 뱅크 중 제1 뱅크는 상기 어드레스에 응답하여 상기 복수의 마이크로코드 명령어 중 첫번째를 제공하며,
나머지 N개의 뱅크의 각각의 뱅크는 상기 어드레스의 각각의 증분된 버전에 응답하여 상기 복수의 마이크로코드 명령어의 각각의 마이크로코드 명령어를 제공하는 것인 프로세서. - 제1항에 있어서,
매 클록 사이클마다 마이크로코드 명령어가 기록되는 상기 큐의 위치를 가리키는 라이트 포인터(write pointer)와,
매 클록 사이클마다 상기 라이트 포인터를 상기 큐에 기록되는 마이크로코드 명령어의 수만큼 증분시키는 큐 컨트롤러
를 더 포함하는 프로세서. - 제1항에 있어서,
상기 복수의 마이크로코드 변환기가 마이크로코드 명령어를 판독하는 상기 큐의 위치를 가리키는 리드 포인터(read pointer)와,
매 클록 사이클마다 상기 리드 포인터를 상기 복수의 마이크로코드 변환기에 의해 변환되는 마이크로코드 명령어의 수만큼 증분시키는 큐 컨트롤러
를 더 포함하는 프로세서. - 제1항에 있어서,
상기 프로세서는 x86 ISA 프로세서인 것인 프로세서. - 제1항에 있어서,
상기 명령어 변환기는, 상기 실행 파이프라인이 상기 명령어 변환기로부터 마이크로명령어를 수신하는 데에 현재 이용 불가능하더라도, 상기 큐가 풀 상태(full)가 될 때까지 상기 큐에 제공하도록 상기 메모리로부터 마이크로코드 명령어를 페치(fetch)하는 것을 계속하도록 구성되는 것인 프로세서. - 제1항에 있어서,
상기 복수의 마이크로코드 명령어는 로컬 브랜치 명령어를 포함하고, 상기 어드레스는 상기 프로그램 순서상 첫번째 로컬 브랜치 명령어에 의해 명시되는 타겟 어드레스로 업데이트되는 것인 프로세서. - 제1항에 있어서,
상기 복수의 마이크로코드 명령어에 로컬 브랜치 명령어가 없는 경우에, 상기 어드레스는 N만큼 증분되며, 여기서 N은 클록 사이클마다 상기 메모리에 의해 제공되는 복수의 마이크로코드 명령어의 수인 것인 프로세서. - 제1항에 있어서,
상기 복수의 마이크로코드 변환기 각각은 마이크로코드 명령어를 상이한 최대 수의 마이크로명령어로 변환하도록 구성되는 것인 프로세서. - 프로세서의 명령어 세트 아키텍처(ISA)에 의해 정의되는 구조적 명령어를, 복수의 실행 유닛을 구비한 실행 파이프라인에 의한 실행을 위해 명령어 변환기에 의해 마이크로명령어로 변환하는 방법에 있어서, 상기 명령어 번환기는 고속 변환기 및 마이크로코드 유닛을 포함하고, 상기 방법은,
상기 마이크로코드 유닛의 메모리에 의해, 복수의 마이크로코드 명령어를 제공하는 단계 - 상기 고속 변환기가 마이크로코딩된 구조적 명령어에 직면할 때, 상기 고속 변환기는 마이크로코드 모드로 전환하고 상기 메모리에 어드레스를 제공하며, 상기 메모리는 상기 어드레스에 응답하여 클록 사이클마다 복수의 마이크로코드 명령어를 제공하고, 상기 마이크로코딩된 구조적 명령어는 상기 구조적 명령어 중 하나임 - 와,
상기 메모리와 큐 사이에 연결된 브랜치 디코더에 의해, 상기 메모리에 의해 제공되는 복수의 마이크로코드 명령어를 디코딩하여, 상기 복수의 마이크로코드 명령어 중에서 하나 이상의 로컬 브랜치 명령어를 검출하는 단계와,
상기 하나 이상의 로컬 브랜치 명령어의 프로그램 순서상 첫번째 로컬 브랜치 명령어까지(그러나 이 첫번째 로컬 브랜치 명령어는 포함하지 않음) 상기 복수의 마이크로코드 명령어의 마이크로코드 명령어가 상기 큐에 기록되게 하고, 상기 프로그램 순서상 첫번째 로컬 브랜치 명령어와, 상기 복수의 마이크로코드 명령어의 이어지는 마이크로코드 명령어가 상기 큐에 기록되지 못하게 하는 단계 - 로컬 브랜치 명령어는 상기 실행 파이프라인보다는 상기 브랜치 디코더에 의해 분석됨 - 와,
복수의 마이크로코드 변환기에 의해, 클록 사이클마다 상기 큐로부터 수신되는 복수의 마이크로코드 명령어를, 상기 실행 파이프라인에 제공하도록 복수의 마이크로명령어로 변환하는 단계
를 포함하는 구조적 명령어 변환 방법. - 제13항에 있어서,
클록 사이클마다 상기 메모리에 의해 제공되는 복수의 마이크로코드 명령어는 적어도 4개인 것인 구조적 명령어 변환 방법. - 제13항에 있어서,
상기 프로세서는, 상기 브랜치 디코더에 의해 디코딩되었던 호출 명령어 - 대응하는 반환 명령어는 아직 상기 브랜치 디코더에 의해 디코딩되지 않음 - 와 연관된 반환 어드레스를 유지하는 복수의 호출/반환 스택을 구비한 호출/반환 유닛을 더 포함하고,
상기 프로그램 순서상 첫번째 로컬 브랜치 명령어가 호출/반환 명령어일 경우에,
상기 브랜치 디코더에 의해, 상기 호출/반환 유닛에, 상기 복수의 호출/반환 스택 중 현재의 호출/반환 스택에/으로부터 반환 어드레스를 푸시/팝하도록 지시하는 단계를 더 포함하는 구조적 명령어 변환 방법.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201610875658.6 | 2016-09-30 | ||
| CN201610875658.6A CN106406814B (zh) | 2016-09-30 | 2016-09-30 | 处理器和将架构指令转译成微指令的方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20180036490A KR20180036490A (ko) | 2018-04-09 |
| KR102601858B1 true KR102601858B1 (ko) | 2023-11-13 |
Family
ID=57256176
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020160154923A Active KR102601858B1 (ko) | 2016-09-30 | 2016-11-21 | 로컬 브랜치 디코더를 구비한 멀티이슈 마이크로코드 유닛을 포함하는 파이프라인형 프로세서 |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US10073698B2 (ko) |
| EP (1) | EP3301566B1 (ko) |
| JP (1) | JP6856358B2 (ko) |
| KR (1) | KR102601858B1 (ko) |
| CN (1) | CN106406814B (ko) |
| TW (1) | TWI621065B (ko) |
Families Citing this family (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108228239B (zh) * | 2016-12-13 | 2021-04-20 | 龙芯中科技术股份有限公司 | 基于快速模拟器qemu的分支指令抓取方法和装置 |
| US20180203703A1 (en) * | 2017-01-13 | 2018-07-19 | Optimum Semiconductor Technologies, Inc. | Implementation of register renaming, call-return prediction and prefetch |
| GB2563384B (en) * | 2017-06-07 | 2019-12-25 | Advanced Risc Mach Ltd | Programmable instruction buffering |
| US11467838B2 (en) * | 2018-05-22 | 2022-10-11 | Advanced Micro Devices, Inc. | Fastpath microcode sequencer |
| US11016763B2 (en) | 2019-03-08 | 2021-05-25 | Advanced Micro Devices, Inc. | Implementing a micro-operation cache with compaction |
| US11016766B2 (en) | 2019-06-29 | 2021-05-25 | Intel Corporation | Apparatus and method for compiler hints for inter-core offload |
| US11182208B2 (en) | 2019-06-29 | 2021-11-23 | Intel Corporation | Core-to-core start “offload” instruction(s) |
| US11372711B2 (en) | 2019-06-29 | 2022-06-28 | Intel Corporation | Apparatus and method for fault handling of an offload transaction |
| US10929129B2 (en) * | 2019-06-29 | 2021-02-23 | Intel Corporation | Apparatus and method for modifying addresses, data, or program code associated with offloaded instructions |
| US11321144B2 (en) | 2019-06-29 | 2022-05-03 | Intel Corporation | Method and apparatus for efficiently managing offload work between processing units |
| US11030000B2 (en) | 2019-06-29 | 2021-06-08 | Intel Corporation | Core advertisement of availability |
| US10983796B2 (en) | 2019-06-29 | 2021-04-20 | Intel Corporation | Core-to-core end “offload” instruction(s) |
| US11775467B2 (en) * | 2021-01-14 | 2023-10-03 | Nxp Usa, Inc. | System and method for ordering transactions in system-on-chips |
| US12327123B2 (en) * | 2021-06-21 | 2025-06-10 | Intel Corporation | Count to empty for microarchitectural return predictor security |
| CN113553102B (zh) * | 2021-08-11 | 2022-07-05 | 成都海光微电子技术有限公司 | 微码取指方法、微码存储组合产生方法、装置、设备 |
| CN113961247B (zh) * | 2021-09-24 | 2022-10-11 | 北京睿芯众核科技有限公司 | 一种基于risc-v处理器的向量存/取指令执行方法、系统及装置 |
| CN114090077B (zh) * | 2021-11-24 | 2023-01-31 | 海光信息技术股份有限公司 | 调取指令的方法及装置、处理装置及存储介质 |
| CN114358180B (zh) * | 2021-12-31 | 2025-05-06 | 海光信息技术股份有限公司 | 处理器的预取训练方法、处理装置、处理器和计算设备 |
| CN114579312B (zh) * | 2022-03-04 | 2026-01-30 | 海光信息技术股份有限公司 | 一种指令处理方法、处理器、芯片和电子设备 |
| US11995443B2 (en) * | 2022-10-04 | 2024-05-28 | Microsoft Technology Licensing, Llc | Reuse of branch information queue entries for multiple instances of predicted control instructions in captured loops in a processor |
| CN115629807B (zh) | 2022-10-31 | 2023-04-14 | 海光信息技术股份有限公司 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
| CN115525344B (zh) * | 2022-10-31 | 2023-06-27 | 海光信息技术股份有限公司 | 一种译码方法、处理器、芯片及电子设备 |
| CN117008977B (zh) * | 2023-08-08 | 2024-03-19 | 上海合芯数字科技有限公司 | 一种可变执行周期的指令执行方法、系统和计算机设备 |
| CN118193153B (zh) * | 2024-03-07 | 2025-02-25 | 海光信息技术股份有限公司 | 资源分配方法、处理器和电子设备 |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100228952A1 (en) * | 2009-03-04 | 2010-09-09 | Via Technologies, Inc. | Apparatus and method for fast correct resolution of call and return instructions using multiple call/return stacks in the presence of speculative conditional instruction execution in a pipelined microprocessor |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5896349A (ja) * | 1981-12-02 | 1983-06-08 | Hitachi Ltd | マイクロ命令制御のデータ処理装置 |
| AU7550496A (en) * | 1995-10-06 | 1997-04-28 | Advanced Micro Devices Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
| US5964869A (en) * | 1997-06-19 | 1999-10-12 | Sun Microsystems, Inc. | Instruction fetch mechanism with simultaneous prediction of control-flow instructions |
| US6094716A (en) * | 1998-07-14 | 2000-07-25 | Advanced Micro Devices, Inc. | Register renaming in which moves are accomplished by swapping rename tags |
| US6338136B1 (en) * | 1999-05-18 | 2002-01-08 | Ip-First, Llc | Pairing of load-ALU-store with conditional branch |
| US6691305B1 (en) * | 1999-11-10 | 2004-02-10 | Nec Corporation | Object code compression using different schemes for different instruction types |
| US6766441B2 (en) * | 2001-01-19 | 2004-07-20 | International Business Machines Corporation | Prefetching instructions in mis-predicted path for low confidence branches |
| US6968446B1 (en) * | 2001-08-09 | 2005-11-22 | Advanced Micro Devices, Inc. | Flags handling for system call instructions |
| US6898697B1 (en) * | 2002-03-29 | 2005-05-24 | Advanced Micro Devices, Inc. | Efficient method for mode change detection and synchronization |
| US9977674B2 (en) * | 2003-10-14 | 2018-05-22 | Intel Corporation | Micro-operation generator for deriving a plurality of single-destination micro-operations from a given predicated instruction |
| US20090260013A1 (en) * | 2008-04-14 | 2009-10-15 | International Business Machines Corporation | Computer Processors With Plural, Pipelined Hardware Threads Of Execution |
| US7802078B2 (en) * | 2008-09-09 | 2010-09-21 | Via Technologies, Inc. | REP MOVE string instruction execution by selecting loop microinstruction sequence or unrolled sequence based on flag state indicative of low count repeat |
| US8521996B2 (en) * | 2009-02-12 | 2013-08-27 | Via Technologies, Inc. | Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution |
| CN101866279B (zh) * | 2009-08-14 | 2012-05-30 | 威盛电子股份有限公司 | 微处理器及其相关方法 |
| EP2508979B1 (en) * | 2011-04-07 | 2018-10-10 | VIA Technologies, Inc. | Efficient conditional alu instruction in read-port limited register file microprocessor |
| 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 |
| CN103218203B (zh) * | 2011-04-07 | 2016-03-16 | 威盛电子股份有限公司 | 具有条件指令的微处理器及其处理方法 |
| US8959320B2 (en) * | 2011-12-07 | 2015-02-17 | Apple Inc. | Preventing update training of first predictor with mismatching second predictor for branch instructions with alternating pattern hysteresis |
| US9898418B2 (en) * | 2015-05-21 | 2018-02-20 | Via Alliance Semiconductor Co., Ltd. | Processor including single invalidate page instruction |
-
2016
- 2016-09-30 CN CN201610875658.6A patent/CN106406814B/zh active Active
- 2016-10-24 US US15/332,403 patent/US10073698B2/en active Active
- 2016-11-09 EP EP16197864.8A patent/EP3301566B1/en active Active
- 2016-11-17 JP JP2016223778A patent/JP6856358B2/ja active Active
- 2016-11-21 KR KR1020160154923A patent/KR102601858B1/ko active Active
- 2016-11-30 TW TW105139477A patent/TWI621065B/zh active
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100228952A1 (en) * | 2009-03-04 | 2010-09-09 | Via Technologies, Inc. | Apparatus and method for fast correct resolution of call and return instructions using multiple call/return stacks in the presence of speculative conditional instruction execution in a pipelined microprocessor |
Also Published As
| Publication number | Publication date |
|---|---|
| JP6856358B2 (ja) | 2021-04-07 |
| US10073698B2 (en) | 2018-09-11 |
| US20180095753A1 (en) | 2018-04-05 |
| TW201814501A (zh) | 2018-04-16 |
| JP2018060491A (ja) | 2018-04-12 |
| CN106406814A (zh) | 2017-02-15 |
| EP3301566B1 (en) | 2023-05-10 |
| KR20180036490A (ko) | 2018-04-09 |
| EP3301566A1 (en) | 2018-04-04 |
| CN106406814B (zh) | 2019-06-14 |
| TWI621065B (zh) | 2018-04-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102601858B1 (ko) | 로컬 브랜치 디코더를 구비한 멀티이슈 마이크로코드 유닛을 포함하는 파이프라인형 프로세서 | |
| CN103620555B (zh) | 抑制不正确的推测性执行路径上的控制转移指令 | |
| US8364902B2 (en) | Microprocessor with repeat prefetch indirect instruction | |
| US7376817B2 (en) | Partial load/store forward prediction | |
| JP5894120B2 (ja) | ゼロサイクルロード | |
| US9213551B2 (en) | Return address prediction in multithreaded processors | |
| US20160055004A1 (en) | Method and apparatus for non-speculative fetch and execution of control-dependent blocks | |
| US10310859B2 (en) | System and method of speculative parallel execution of cache line unaligned load instructions | |
| EP4020187B1 (en) | Segmented branch target buffer based on branch instruction type | |
| US20230401066A1 (en) | Dynamically foldable and unfoldable instruction fetch pipeline | |
| US8171240B1 (en) | Misalignment predictor | |
| US11972264B2 (en) | Micro-operation supply rate variation | |
| US6581155B1 (en) | Pipelined, superscalar floating point unit having out-of-order execution capability and processor employing the same | |
| WO2022026578A1 (en) | Method and apparatus for back end gather/scatter memory coalescing | |
| US20230401067A1 (en) | Concurrently fetching instructions for multiple decode clusters | |
| US6286094B1 (en) | Method and system for optimizing the fetching of dispatch groups in a superscalar processor | |
| CN110402434B (zh) | 缓存未命中线程平衡 | |
| US20220197662A1 (en) | Accessing A Branch Target Buffer Based On Branch Instruction Information | |
| CN100397365C (zh) | 解决分支目标地址快取中死结提取条件的装置与方法 | |
| US20230099989A1 (en) | Scalable toggle point control circuitry for a clustered decode pipeline |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20161121 |
|
| PG1501 | Laying open of application | ||
| A201 | Request for examination | ||
| PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20210908 Comment text: Request for Examination of Application Patent event code: PA02011R01I Patent event date: 20161121 Comment text: Patent Application |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20230426 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: 20231031 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20231109 Patent event code: PR07011E01D |
|
| PR1002 | Payment of registration fee |
Payment date: 20231109 End annual number: 3 Start annual number: 1 |
|
| PG1601 | Publication of registration |