KR100986375B1 - 피연산자의 빠른 조건부 선택 - Google Patents
피연산자의 빠른 조건부 선택 Download PDFInfo
- Publication number
- KR100986375B1 KR100986375B1 KR1020087020385A KR20087020385A KR100986375B1 KR 100986375 B1 KR100986375 B1 KR 100986375B1 KR 1020087020385 A KR1020087020385 A KR 1020087020385A KR 20087020385 A KR20087020385 A KR 20087020385A KR 100986375 B1 KR100986375 B1 KR 100986375B1
- Authority
- KR
- South Korea
- Prior art keywords
- operand
- instruction
- operands
- selection criteria
- execution
- Prior art date
Links
- 238000012545 processing Methods 0.000 claims abstract description 41
- 238000000034 method Methods 0.000 claims description 28
- 230000004913 activation Effects 0.000 abstract 1
- 230000001934 delay Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000007 visual 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/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
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
Description
Claims (20)
- 파이프라인 동작 방법에 있어서,적어도 두 개의 피연산자(operand)들의 그룹으로부터 선택될 적어도 하나의 피연산자를 특정하는 명령을 탐지하는 단계;상기 명령에 의해 특정되는 피연산자 선택 기준을 결정하는 단계;상기 적어도 두 개의 피연산자들의 그룹으로부터 적어도 하나의 피연산자를 선택하기 위해 상기 피연산자 선택 기준을 평가하는 단계; 및선택되지 않은 피연산자가 사용가능하게 될 때까지 기다리지 않고 상기 적어도 하나의 선택된 피연산자가 사용가능하면 실행을 위해 상기 명령을 수행(commit)하는 단계를 포함하는 방법.
- 제 1 항에 있어서,상기 선택 기준을 결정하는 단계는 상기 선택 기준을 위한 기초(basis)로서 사용되는 적어도 하나의 상태 플래그(condition flag)를 결정하기 위해 상기 명령을 디코딩하는 단계를 더 포함하는 방법.
- 제 1 항에 있어서,상기 선택 기준을 평가하는 단계는 상기 선택 기준에 의해 특정되는 상태 플래그들이 여전히 실행 중인 이전 명령에 의해 영향을 받을 가능성이 있으면 영향을 받을 가능성이 있는 상기 상태 플래그들을 기다리는(wait for) 단계를 더 포함하는 방법.
- 제 2 항에 있어서,상기 적어도 하나의 상태 플래그를 결정하기 위한 상기 단계는 상기 적어도 하나의 상태 플래그가 실행 중인 이전 명령에 의해 영향을 받을 수 있는지 여부를 체크하기 위해 프로세서 실행 파이프라인 스테이지들에서 룩-어헤드(look ahead)하는 단계를 더 포함하는 방법.
- 파이프라인 동작 방법에 있어서,적어도 세 개의 피연산자(operand)들의 그룹으로부터 선택될 적어도 두 개의 피연산자들을 특정하는 명령을 탐지하는 단계;상기 명령에 의해 특정되는 피연산자 선택 기준을 결정하는 단계;상기 적어도 세 개의 피연산자들의 그룹으로부터 적어도 두 개의 피연산자들을 선택하기 위해 상기 피연산자 선택 기준을 평가하는 단계; 및선택되지 않은 피연산자가 사용가능하게 될 때까지 기다리지 않고 상기 적어도 두 개의 선택된 피연산자들이 사용가능하면 실행을 위해 상기 명령을 수행(commit)하는 단계를 포함하는 방법.
- 제 1 항에 있어서,상기 명령은 상기 적어도 하나의 선택된 피연산자의 함수를 특정하는 방법.
- 제 6 항에 있어서,상기 함수는 상기 적어도 하나의 선택된 피연산자에 기반하여 계산된 결과를 리턴하는 방법.
- 파이프라인 동작 방법에 있어서,피연산자(operand)들로 구성되는 한 그룹의 블록들로부터 선택될 적어도 두 개의 피연산자들로 구성된 블록을 특정하는 명령을 탐지하는 단계;상기 명령에 의해 특정되는 피연산자 블록 선택 기준을 결정하는 단계;상기 피연산자(operand)들로 구성되는 한 그룹의 블록들로부터 적어도 두 개의 피연산자들로 구성된 블록을 선택하기 위해 상기 피연산자 블록 선택 기준을 평가하는 단계; 및선택되지 않은 피연산자 블록이 사용가능하게 될 때까지 기다리지 않고 상기 선택된 적어도 두 개의 피연산자들로 구성된 블록이 사용가능하면 실행을 위해 상기 명령을 수행(commit)하는 단계를 포함하는 방법.
- 제 1 항에 있어서,상기 선택 기준은 적어도 하나의 패킹된(packed) 데이터 바이트 상태 표시에 기반하는 방법.
- 프로세서 파이프라인에서 선택 피연산자 명령을 처리하는 방법으로서,상기 프로세서 파이프라인의 디코드 스테이지에서 상기 선택 피연산자 명령에서 특정되는 선택 기준을 디코딩하는 단계;상기 선택 기준에 의해 특정되는 상태 플래그들을 분석하는 단계;상기 상태 플래그들에 대한 상기 분석이 상기 선택 피연산자 명령에서 특정되는 적어도 두 개의 피연산자들의 그룹의 적어도 하나의 피연산자가 선택될 것이라고 표시하면, 선택되지 않은 피연산자에 대한 임의의 대기(wait)를 종료하는 단계; 및상기 적어도 하나의 선택된 피연산자를 사용하여 상기 선택 피연산자 명령을 실행하는 단계를 포함하는 방법.
- 제 10 항에 있어서,상기 상태 플래그들을 분석하는 단계는 상기 선택 기준에 의해 특정되는 상태 플래그들이 여전히 실행 중인 이전 명령에 의해 향을 받을 가능성이 있으면 영향을 받을 가능성이 있는 상기 상태 플래그들을 기다리는 단계를 더 포함하는 방법.
- 제 10 항에 있어서,상기 적어도 두 개의 피연산자들의 그룹은 레지스터 피연산자 및 즉시적인(immediate) 값 피연산자를 포함하는 방법.
- 제 10 항에 있어서,상기 선택 피연산자 명령을 실행하는 단계는 상기 적어도 하나의 선택된 피연산자의 함수인 결과를 리턴하는 단계를 더 포함하는 방법.
- 명령들을 처리하기 위한 파이프라인된(pipelined) 프로세서로서,다수의 명령들 중 각각의 명령에 의해 요구되는 입력 피연산자 데이터를 사용하여 명령들을 실행시키기 위한 실행 스테이지;각각의 명령에 대한 상기 입력 피연산자 데이터의 수신이 완료될 때까지, 상 기 실행 스테이지에 의한 각각의 명령의 실행 이전에, 차례대로 다수의 명령들 각각에 대한 홀드(hold)를 생성하기 위한 홀드 회로; 및상기 입력 피연산자 데이터의 수신이 완료되기 전에, 선택할 피연산자 데이터를 결정하고 선택된 피연산자 데이터가 사용가능하다고 결정되면 실행되는 명령에서 특정되는 선택 기준과 관련하여 상기 홀드를 종료하기 위한 수단을 포함하는 파이프라인된 프로세서.
- 제 14 항에 있어서,상기 홀드를 종료하는 동작은 명령이 실행을 완료하는데 필요하지 않은 입력 피연산자 데이터에 대한 패치(fetch) 연산을 종료하는 동작을 더 포함하는 파이프라인된 프로세서.
- 제 14 항에 있어서,상기 다수의 명령들 중 각각의 명령을 상기 선택 기준을 나타내는 상태 코드들을 특정하는 제어 비트들을 포함하는 제어 비트들로 디코딩하기 위한 디코더; 및상기 파이프라인을 통해 스테이지 별로(stage by stage) 상기 제어 비트들을 트래킹하는 파이프라인 스테이지들을 더 포함하는 파이프라인된 프로세서.
- 제 16 항에 있어서,상기 제어 비트들은 실행 스테이지가 상기 상태 코드들에 영향을 줄 수 있는지 여부를 결정하기 위해 각각의 파이프라인 스테이지에서 판독가능한 파이프라인된 프로세서.
- 제 14 항에 있어서,상기 실행되는 명령은 선택 피연산자 명령들을 특정하고 적어도 두 개의 피연산자들의 그룹으로부터 적어도 하나의 피연산자를 선택하기 위한 선택 기준을 특정하는 적어도 하나의 비트 필드와 선택될 각각의 피연산자에 대한 적어도 하나의 비트 필드를 포함하는 파이프라인된 프로세서.
- 제 18 항에 있어서,상기 명령은 상기 선택된 적어도 하나의 피연산자의 함수를 특정하는 비트 필드를 더 포함하는 파이프라인된 프로세서.
- 제 18 항에 있어서,각각의 피연산자에 대한 상기 적어도 하나의 비트 필드는 피연산자 데이터 엘리먼트들의 블록을 가리키는 주소인 파이프라인된 프로세서.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/336,357 | 2006-01-20 | ||
US11/336,357 US9710269B2 (en) | 2006-01-20 | 2006-01-20 | Early conditional selection of an operand |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080087171A KR20080087171A (ko) | 2008-09-30 |
KR100986375B1 true KR100986375B1 (ko) | 2010-10-08 |
Family
ID=38286963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087020385A KR100986375B1 (ko) | 2006-01-20 | 2007-01-22 | 피연산자의 빠른 조건부 선택 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9710269B2 (ko) |
EP (2) | EP1974254B1 (ko) |
JP (1) | JP5335440B2 (ko) |
KR (1) | KR100986375B1 (ko) |
CN (1) | CN101371223B (ko) |
WO (1) | WO2007085010A2 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130305020A1 (en) | 2011-04-01 | 2013-11-14 | Robert C. Valentine | Vector friendly instruction format and execution thereof |
CN104011670B (zh) | 2011-12-22 | 2016-12-28 | 英特尔公司 | 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令 |
US9280344B2 (en) * | 2012-09-27 | 2016-03-08 | Texas Instruments Incorporated | Repeated execution of instruction with field indicating trigger event, additional instruction, or trigger signal destination |
KR101711388B1 (ko) | 2013-01-28 | 2017-03-02 | 삼성전자주식회사 | 파이프라인에서 블럭을 스케줄하는 컴파일 방법 및 장치 |
US10459727B2 (en) | 2015-12-31 | 2019-10-29 | Microsoft Technology Licensing, Llc | Loop code processor optimizations |
US10592252B2 (en) | 2015-12-31 | 2020-03-17 | Microsoft Technology Licensing, Llc | Efficient instruction processing for sparse data |
US11385897B2 (en) * | 2019-10-01 | 2022-07-12 | Marvell Asia Pte, Ltd. | Merge execution unit for microinstructions |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0863353A (ja) * | 1994-07-14 | 1996-03-08 | Advanced Risc Mach Ltd | 掛け算累算命令を使用したデータ処理 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5150469A (en) | 1988-12-12 | 1992-09-22 | Digital Equipment Corporation | System and method for processor pipeline control by selective signal deassertion |
GB2228597A (en) * | 1989-02-27 | 1990-08-29 | Ibm | Data processor with conditional instructions |
JP3082944B2 (ja) | 1990-12-20 | 2000-09-04 | 富士通株式会社 | パイプライン処理装置 |
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
GB2317466B (en) | 1996-09-23 | 2000-11-08 | Advanced Risc Mach Ltd | Data processing condition code flags |
TW325552B (en) | 1996-09-23 | 1998-01-21 | Advanced Risc Mach Ltd | Data processing condition code flags |
GB2317464A (en) | 1996-09-23 | 1998-03-25 | Advanced Risc Mach Ltd | Register addressing in a data processing apparatus |
TW343318B (en) | 1996-09-23 | 1998-10-21 | Advanced Risc Mach Ltd | Register addressing in a data processing apparatus |
US6173393B1 (en) | 1998-03-31 | 2001-01-09 | Intel Corporation | System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data |
JP2000020309A (ja) | 1998-06-30 | 2000-01-21 | Toshiba Microelectronics Corp | デジタルシグナルプロセッサ |
JP2001051845A (ja) | 1999-08-12 | 2001-02-23 | Hitachi Ltd | アウトオブオーダー実行方式 |
US6633971B2 (en) * | 1999-10-01 | 2003-10-14 | Hitachi, Ltd. | Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline |
US20050188182A1 (en) * | 1999-12-30 | 2005-08-25 | Texas Instruments Incorporated | Microprocessor having a set of byte intermingling instructions |
US6604192B1 (en) | 2000-01-24 | 2003-08-05 | Hewlett-Packard Development Company, L.P. | System and method for utilizing instruction attributes to detect data hazards |
JP2001216275A (ja) | 2000-02-01 | 2001-08-10 | Sony Corp | 画像処理装置および画像処理方法 |
WO2002042907A2 (en) | 2000-11-27 | 2002-05-30 | Koninklijke Philips Electronics N.V. | Data processing apparatus with multi-operand instructions |
JP4220722B2 (ja) | 2001-05-02 | 2009-02-04 | パイオニア株式会社 | 情報記録媒体および情報読取装置 |
US7028171B2 (en) * | 2002-03-28 | 2006-04-11 | Intel Corporation | Multi-way select instructions using accumulated condition codes |
JP2004062401A (ja) | 2002-07-26 | 2004-02-26 | Matsushita Electric Ind Co Ltd | 演算プロセッサおよび当該演算プロセッサを用いたカメラ装置 |
US6944747B2 (en) * | 2002-12-09 | 2005-09-13 | Gemtech Systems, Llc | Apparatus and method for matrix data processing |
US7636837B2 (en) * | 2003-05-28 | 2009-12-22 | Fujitsu Limited | Apparatus and method for controlling instructions at time of failure of branch prediction |
GB2409063B (en) | 2003-12-09 | 2006-07-12 | Advanced Risc Mach Ltd | Vector by scalar operations |
-
2006
- 2006-01-20 US US11/336,357 patent/US9710269B2/en not_active Expired - Fee Related
-
2007
- 2007-01-22 EP EP07717333A patent/EP1974254B1/en not_active Not-in-force
- 2007-01-22 EP EP11196175.1A patent/EP2461246B1/en active Active
- 2007-01-22 KR KR1020087020385A patent/KR100986375B1/ko active IP Right Grant
- 2007-01-22 JP JP2008551563A patent/JP5335440B2/ja not_active Expired - Fee Related
- 2007-01-22 CN CN200780002416.5A patent/CN101371223B/zh active Active
- 2007-01-22 WO PCT/US2007/060814 patent/WO2007085010A2/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0863353A (ja) * | 1994-07-14 | 1996-03-08 | Advanced Risc Mach Ltd | 掛け算累算命令を使用したデータ処理 |
Also Published As
Publication number | Publication date |
---|---|
EP1974254A2 (en) | 2008-10-01 |
JP5335440B2 (ja) | 2013-11-06 |
EP2461246B1 (en) | 2017-03-29 |
US20070174592A1 (en) | 2007-07-26 |
KR20080087171A (ko) | 2008-09-30 |
WO2007085010A3 (en) | 2007-12-13 |
US9710269B2 (en) | 2017-07-18 |
CN101371223B (zh) | 2015-07-15 |
JP2009524167A (ja) | 2009-06-25 |
EP2461246A1 (en) | 2012-06-06 |
CN101371223A (zh) | 2009-02-18 |
WO2007085010A2 (en) | 2007-07-26 |
EP1974254B1 (en) | 2012-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101459536B1 (ko) | 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치 | |
US6279105B1 (en) | Pipelined two-cycle branch target address cache | |
TWI654562B (zh) | 藉由演算法匹配、停用特徵或限制效能之回溯相容性 | |
US8601239B2 (en) | Extended register addressing using prefix instruction | |
US9367471B2 (en) | Fetch width predictor | |
EP2864868B1 (en) | Methods and apparatus to extend software branch target hints | |
RU2417407C2 (ru) | Способы и устройство для моделирования поведения предсказания переходов явного вызова подпрограммы | |
US7444501B2 (en) | Methods and apparatus for recognizing a subroutine call | |
JP2007515715A (ja) | 命令キャッシュからラベル境界上のトレースキャッシュに遷移させる方法 | |
KR100986375B1 (ko) | 피연산자의 빠른 조건부 선택 | |
US20120204008A1 (en) | Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
JP2009524167A5 (ko) | ||
US6983359B2 (en) | Processor and method for pre-fetching out-of-order instructions | |
US6754813B1 (en) | Apparatus and method of processing information for suppression of branch prediction | |
US6609191B1 (en) | Method and apparatus for speculative microinstruction pairing | |
US20050144427A1 (en) | Processor including branch prediction mechanism for far jump and far call instructions | |
US7343481B2 (en) | Branch prediction in a data processing system utilizing a cache of previous static predictions | |
JP2001142707A (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 | ||
FPAY | Annual fee payment |
Payment date: 20130927 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140929 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20150930 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20160929 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20170929 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20180928 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20190924 Year of fee payment: 10 |