RU2016119815A - Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности - Google Patents
Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности Download PDFInfo
- Publication number
- RU2016119815A RU2016119815A RU2016119815A RU2016119815A RU2016119815A RU 2016119815 A RU2016119815 A RU 2016119815A RU 2016119815 A RU2016119815 A RU 2016119815A RU 2016119815 A RU2016119815 A RU 2016119815A RU 2016119815 A RU2016119815 A RU 2016119815A
- Authority
- RU
- Russia
- Prior art keywords
- instruction
- instructions
- logic
- unsent
- stream
- Prior art date
Links
- 238000013500 data storage Methods 0.000 claims 7
- 238000000034 method Methods 0.000 claims 6
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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Claims (65)
1. Процессор, содержащий:
первую логику для выполнения потока инструкций с изменением последовательности, причем поток инструкций разделен на множество субпотоков, при этом поток инструкций и каждый субпоток упорядочены порядком программы (РО);
вторую логику для определения старейшей неотправленной инструкции в потоке инструкций и сохранения связанного РО значения старейшей неотправленной инструкции в качестве указателя выполненной инструкции, причем поток инструкций включает в себя отправленные и неотправленные инструкции;
третью логику для определения последней удаленной инструкции в потоке инструкций и сохранения связанного РО значения последней удаленной инструкции в качестве указателя удаления;
четвертую логику для выбора диапазона инструкций между указателем удаления и указателем выполненной инструкции; и
пятую логику для идентификации инструкций в диапазоне, выбранном в четвертой логике, в качестве подлежащих удалению.
2. Процессор по п. 1, в котором вторая логика для определения старейшей неотправленной инструкции в потоке инструкций содержит:
шестую логику для определения набора неотправленных инструкций, причем каждый элемент набора соответствует старейшей неотправленной инструкции из каждого субпотока; и
седьмую логику для определения старейшей неотправленной инструкции из набора.
3. Процессор по п. 1, в котором вторая логика для определения старейшей неотправленной инструкции в потоке инструкций содержит:
множество блоков хранения данных, причем каждый блок хранения данных содержит РО старейшей неотправленной инструкции из каждого субпотока; и
множество узлов принятия решений, расположенные каскадом, которые включают в себя:
первый уровень узлов принятия решений для приема информации из множества блоков хранения данных в качестве начального ввода; и
конечный уровень узлов принятия решений для вывода РО старейшей отправленной инструкции в потоке инструкций;
при этом каждый узел принятия решений выполнен с возможностью сравнивать введенные значения узла принятия решений и выводить минимальное значение из введенных значений.
4. Процессор по п. 3, в котором каждый узел принятия решений содержит:
вычитатель для вывода бита знака от вычитания первого введенного значения из второго значения; и
мультиплексор, коммуникативно соединенный с вычитателем, для избирательного вывода либо первого введенного значения, либо второго введенного значения на основании бита знака.
5. Процессор по п. 1, в котором диапазон инструкций, подлежащих удалению, включает в себя инструкции, которые были отправлены и выполнены.
6. Процессор по п. 1, в котором поток инструкций включает в себя инструкцию вне указанного диапазона инструкций, при этом указанная инструкция не удалена, была отправлена и была выполнена.
7. Процессор по п. 1 дополнительно содержит:
шестую логику для удаления каждой из инструкций в диапазоне инструкций; и
седьмую логику для хранения РО значения новейшей инструкции, удаленной посредством шестой логики в диапазоне инструкций, в качестве указателя удаления.
8. Способ, содержащий этапы, на которых в процессоре:
выполняют поток инструкций с изменением последовательности, причем поток инструкций разделен на множество субпотоков, при этом поток инструкций и каждый субпоток упорядочены посредством порядка программы (РО);
определяют старейшую неотправленную инструкцию в потоке инструкций и сохраняют связанное РО значение старейшей неотправленной инструкции в качестве указателя выполненной инструкции, причем поток инструкций включает в себя отправленные и неотправленные инструкции;
определяют последнюю удаленную инструкцию в потоке инструкций и сохраняют связанное в РО значение последней удаленной инструкции в качестве указателя удаления;
выбирают диапазон инструкций между указателем удаления и указателем выполненной инструкции; и
идентифицируют инструкции в указанном диапазоне как подлежащие удалению.
9. Способ по п. 8, в котором на этапе определения старейшей неотправленной инструкции в потоке инструкций:
определяют набор неотправленных инструкций, причем каждый элемент набора соответствует старейшей неотправленной инструкции из каждого субпотока; и
определяют старейшую неотправленную инструкцию из набора.
10. Способ по п. 8, в котором на этапе определения старейшей неотправленной инструкции в потоке инструкций:
определяют РО старейшей неотправленной инструкции из каждого субпотока по месту хранения данных в качестве ввода в первый уровень узлов принятия решений, расположенных каскадом;
на каждом узле принятия решений сравнивают введенные значения узла принятия решений и выводят минимальное значение из введенных значений;
на конечном уровне узлов принятия решений выводят РО старейшей отправленной инструкции в потоке инструкции.
11. Способ по п. 10, в котором на этапе сравнения введенных значений узла принятия решений и вывода минимального значения введенных значений в узле принятия решений:
вычитают первое введенное значение из второго введенного значения для определения бита знака; и
избирательно вводят либо первое введенное значение, либо второе введенное значение на основании бита знака.
12. Способ по п. 8, в котором диапазон инструкций, подлежащих удалению, включает в себя инструкции, которые были отправлены и выполнены.
13. Способ по п. 8, в котором поток инструкций включает в себя инструкцию вне указанного диапазона инструкций, при этом указанная инструкция не удалена, была отправлена и была выполнена.
14. Система, содержащая:
поток инструкций, разделенный на множество субпотоков, причем поток инструкций и каждый субпоток упорядочены посредством порядка программы (РО);
процессор для приема и выполнения потока инструкций с изменением последовательности, содержащий:
первую логику для определения старейшей неотправленной инструкции в потоке инструкций и сохранения связанного РО значения старейшей неотправленной инструкции в качестве указателя выполненной инструкции, причем поток инструкций включает в себя отправленные и неотправленные инструкции;
вторую логику для определения последней удаленной инструкции в потоке инструкций и сохранения связанного РО значения последней удаленной инструкции в качестве указателя удаления;
третью логику для выбора диапазона инструкций между указателем удаления и указателем выполненной инструкции; и
четвертую логику для идентификации инструкций в диапазоне, выбранном в третьей логике, в качестве подлежащих удалению.
15. Система по п. 14, в котором первая логика для определения старейшей неотправленной инструкции в потоке инструкций содержит:
пятую логику для определения набора неотправленных инструкций, причем каждый элемент набора соответствует старейшей неотправленной инструкции из каждого субпотока; и
шестую логику для определения старейшей неотправленной инструкции из набора.
16. Система по п. 14, в котором первая логика для определения старейшей неотправленной инструкции в потоке инструкций содержит:
множество блоков хранения данных, причем каждый блок хранения данных содержит РО старейшей неотправленной инструкции из каждого субпотока; и
множество узлов принятия решений, расположенных каскадом, которые включают в себя:
первый уровень узлов принятия решений для приема информации из множества блоков хранения данных в качестве начального ввода; и
конечный уровень узлов принятия решений для выработки РО старейшей отправленной инструкции в потоке инструкций;
при этом каждый узел принятия решений выполнен с возможностью сравнивать введенные значения узла принятия решений и выводить минимальное значение из введенных значений.
17. Система по п. 16, в котором каждый узел принятия решений содержит:
вычитатель для вывода бита знака от вычитания первого введенного значения из второго введенного значения; и
мультиплексор, коммуникативно соединенный с вычитателем для избирательного вывода либо первого введенного значение, либо второго введенного значения на основании бита со знаком.
18. Система по п. 14, в котором диапазон инструкций, подлежащих удалению, включает в себя инструкции, которые были отправлены и выполнены.
19. Система по п. 14, в котором поток инструкций включает в себя инструкцию вне указанного диапазона инструкций, при этом указанная инструкция не удалена, была отправлена и была выполнена.
20. Система по п. 14, в котором процессор дополнительно содержит:
пятую логику для удаления каждой из инструкций в диапазоне инструкций; и
шестую логику для хранения РО значения новейшей инструкции в диапазоне инструкций, удаленной посредством пятой логики, в качестве указателя удаления.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2013/003083 WO2015097494A1 (en) | 2013-12-23 | 2013-12-23 | Instruction and logic for identifying instructions for retirement in a multi-strand out-of-order processor |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2016119815A true RU2016119815A (ru) | 2017-11-28 |
RU2644528C2 RU2644528C2 (ru) | 2018-02-12 |
Family
ID=50389464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2016119815A RU2644528C2 (ru) | 2013-12-23 | 2013-12-23 | Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности |
Country Status (8)
Country | Link |
---|---|
US (1) | US10133582B2 (ru) |
EP (1) | EP3087473A1 (ru) |
JP (1) | JP2024527169A (ru) |
KR (1) | KR101898791B1 (ru) |
CN (1) | CN105723329B (ru) |
DE (1) | DE112013007703T5 (ru) |
RU (1) | RU2644528C2 (ru) |
WO (1) | WO2015097494A1 (ru) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10241801B2 (en) | 2016-12-23 | 2019-03-26 | Intel Corporation | Method and apparatus to create register windows for parallel iterations to achieve high performance in HW-SW codesigned loop accelerator |
US10235171B2 (en) | 2016-12-27 | 2019-03-19 | Intel Corporation | Method and apparatus to efficiently handle allocation of memory ordering buffers in a multi-strand out-of-order loop processor |
US10241789B2 (en) | 2016-12-27 | 2019-03-26 | Intel Corporation | Method to do control speculation on loads in a high performance strand-based loop accelerator |
CN115629807B (zh) * | 2022-10-31 | 2023-04-14 | 海光信息技术股份有限公司 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5740393A (en) * | 1993-10-15 | 1998-04-14 | Intel Corporation | Instruction pointer limits in processor that performs speculative out-of-order instruction execution |
US5903740A (en) * | 1996-07-24 | 1999-05-11 | Advanced Micro Devices, Inc. | Apparatus and method for retiring instructions in excess of the number of accessible write ports |
US6721874B1 (en) * | 2000-10-12 | 2004-04-13 | International Business Machines Corporation | Method and system for dynamically shared completion table supporting multiple threads in a processing system |
US20020152259A1 (en) * | 2001-04-14 | 2002-10-17 | International Business Machines Corporation | Pre-committing instruction sequences |
JP4042364B2 (ja) * | 2001-07-27 | 2008-02-06 | 日本電気株式会社 | アドレス生成回路、選択判断回路 |
US20040054877A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US7653912B2 (en) * | 2003-05-30 | 2010-01-26 | Steven Frank | Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations |
US8307194B1 (en) * | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
US7500087B2 (en) * | 2004-03-09 | 2009-03-03 | Intel Corporation | Synchronization of parallel processes using speculative execution of synchronization instructions |
US7278011B2 (en) * | 2004-04-08 | 2007-10-02 | International Business Machines Corporation | Completion table configured to track a larger number of outstanding instructions without increasing the size of the completion table |
US8694697B1 (en) * | 2006-04-27 | 2014-04-08 | Nvidia Corporation | Rescindable instruction dispatcher |
US8789060B1 (en) * | 2007-12-27 | 2014-07-22 | Cadence Design Systems, Inc. | Deterministic, parallel execution with overlapping regions |
US20100274972A1 (en) * | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
JP5547208B2 (ja) | 2008-11-24 | 2014-07-09 | インテル コーポレイション | シーケンシャル・プログラムを複数スレッドに分解し、スレッドを実行し、シーケンシャルな実行を再構成するシステム、方法および装置 |
US8074060B2 (en) * | 2008-11-25 | 2011-12-06 | Via Technologies, Inc. | Out-of-order execution microprocessor that selectively initiates instruction retirement early |
US9052890B2 (en) * | 2010-09-25 | 2015-06-09 | Intel Corporation | Execute at commit state update instructions, apparatus, methods, and systems |
CN102064836B (zh) * | 2010-11-26 | 2013-03-13 | 哈尔滨工业大学深圳研究生院 | 一种专用比较单元及ldpc码校验节点运算电路 |
US9268575B2 (en) * | 2011-06-30 | 2016-02-23 | Advanced Micro Devices, Inc. | Flush operations in a processor |
US9280352B2 (en) * | 2011-11-30 | 2016-03-08 | Apple Inc. | Lookahead scanning and cracking of microcode instructions in a dispatch queue |
CN102520903B (zh) * | 2011-12-13 | 2014-07-23 | 中国科学院自动化研究所 | 支持定浮点可重构的长度可配置的向量最大/最小值网络 |
US9811340B2 (en) | 2012-06-18 | 2017-11-07 | Intel Corporation | Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor |
-
2013
- 2013-12-23 WO PCT/IB2013/003083 patent/WO2015097494A1/en active Application Filing
- 2013-12-23 JP JP2016576104A patent/JP2024527169A/ja active Pending
- 2013-12-23 US US15/103,765 patent/US10133582B2/en active Active
- 2013-12-23 RU RU2016119815A patent/RU2644528C2/ru not_active IP Right Cessation
- 2013-12-23 CN CN201380081132.5A patent/CN105723329B/zh not_active Expired - Fee Related
- 2013-12-23 KR KR1020167013626A patent/KR101898791B1/ko active IP Right Grant
- 2013-12-23 EP EP13840193.0A patent/EP3087473A1/en not_active Withdrawn
- 2013-12-23 DE DE112013007703.5T patent/DE112013007703T5/de not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
CN105723329B (zh) | 2019-09-06 |
WO2015097494A1 (en) | 2015-07-02 |
JP2024527169A (ja) | 2024-07-22 |
CN105723329A (zh) | 2016-06-29 |
US10133582B2 (en) | 2018-11-20 |
RU2644528C2 (ru) | 2018-02-12 |
KR20160073417A (ko) | 2016-06-24 |
KR101898791B1 (ko) | 2018-09-13 |
EP3087473A1 (en) | 2016-11-02 |
DE112013007703T5 (de) | 2016-09-29 |
US20160314000A1 (en) | 2016-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102178295B1 (ko) | 결정 모델 구성 방법 및 장치, 컴퓨터 장치 및 저장 매체 | |
US9311730B2 (en) | Aggregating graph structures | |
US20180181875A1 (en) | Model selection system, model selection method, and storage medium on which program is stored | |
FI4086760T3 (fi) | Vektoripienennysprosessori | |
RU2016119815A (ru) | Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности | |
JP2020513120A5 (ru) | ||
RU2015138900A (ru) | Системы и способы отслеживания флага в операциях устранения перемещения | |
KR101587158B1 (ko) | 트리 인덱스를 이용하는 노드 탐색 방법 및 장치 | |
US9535757B2 (en) | Task allocation optimizing system, task allocation optimizing method and task allocation optimizing program | |
JP2015161557A5 (ru) | ||
WO2018174940A1 (en) | Flexible product manufacturing planning | |
JP2018505506A5 (ru) | ||
RU2011152760A (ru) | Оптимизации кода с использованием компилятора с двумя порядками следования байтов | |
US9841979B2 (en) | Method and apparatus for shuffling data using hierarchical shuffle units | |
WO2020230043A1 (en) | Feature vector feasibilty estimation | |
US20200012250A1 (en) | Program editing device, program editing method, and computer readable medium | |
KR102228995B1 (ko) | 여러 가지 수치 포맷의 데이터를 갖는, 데이터 베이스화된 함수 모델의 연산을 위한 모델 연산 유닛 및 제어 장치 | |
CN106155898B (zh) | 一种流程图的路径获取方法及装置 | |
US9703920B2 (en) | Intra-run design decision process for circuit synthesis | |
US10719056B2 (en) | Merging status and control data in a reservation station | |
JP6075172B2 (ja) | ソフトウェア開発装置 | |
CN105701018B (zh) | 一种用于流计算的数据处理方法与设备 | |
CN107729478B (zh) | 一种数据分析方法和装置 | |
US9208839B2 (en) | Predicting saturation in a shift operation | |
US10379865B1 (en) | Selection of instructions to be issued |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20191224 |