RU2016119815A - Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности - Google Patents

Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности Download PDF

Info

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
Application number
RU2016119815A
Other languages
English (en)
Other versions
RU2644528C2 (ru
Inventor
Николай Козарев
Сергей И. Шишлов
Джайеш Иер
Александр Бутузов
Борис А. БАБАЯН
Андрей Клучников
Original Assignee
Интел Корпорейшн
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Интел Корпорейшн filed Critical Интел Корпорейшн
Publication of RU2016119815A publication Critical patent/RU2016119815A/ru
Application granted granted Critical
Publication of RU2644528C2 publication Critical patent/RU2644528C2/ru

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation 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, в котором процессор дополнительно содержит:
пятую логику для удаления каждой из инструкций в диапазоне инструкций; и
шестую логику для хранения РО значения новейшей инструкции в диапазоне инструкций, удаленной посредством пятой логики, в качестве указателя удаления.
RU2016119815A 2013-12-23 2013-12-23 Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности RU2644528C2 (ru)

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 (7)

Country Link
US (1) US10133582B2 (ru)
EP (1) EP3087473A1 (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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US8909902B2 (en) 2008-11-24 2014-12-09 Intel Corporation Systems, methods, and apparatuses to decompose a sequential program into multiple threads, execute said threads, and reconstruct the sequential execution
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

Also Published As

Publication number Publication date
KR20160073417A (ko) 2016-06-24
US10133582B2 (en) 2018-11-20
CN105723329B (zh) 2019-09-06
WO2015097494A1 (en) 2015-07-02
CN105723329A (zh) 2016-06-29
RU2644528C2 (ru) 2018-02-12
US20160314000A1 (en) 2016-10-27
EP3087473A1 (en) 2016-11-02
DE112013007703T5 (de) 2016-09-29
KR101898791B1 (ko) 2018-09-13

Similar Documents

Publication Publication Date Title
US9311730B2 (en) Aggregating graph structures
US20180181875A1 (en) Model selection system, model selection method, and storage medium on which program is stored
KR20190019892A (ko) 결정 모델 구성 방법 및 장치, 컴퓨터 장치 및 저장 매체
US20150269773A1 (en) Graphics processing systems
RU2016119815A (ru) Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности
RU2015138900A (ru) Системы и способы отслеживания флага в операциях устранения перемещения
KR101587158B1 (ko) 트리 인덱스를 이용하는 노드 탐색 방법 및 장치
US9535757B2 (en) Task allocation optimizing system, task allocation optimizing method and task allocation optimizing program
JP2015161557A5 (ru)
EP3602432A1 (en) Flexible product manufacturing planning
JP2018505506A5 (ru)
US10990073B2 (en) Program editing device, program editing method, and computer readable medium
RU2011152760A (ru) Оптимизации кода с использованием компилятора с двумя порядками следования байтов
CN113222125A (zh) 卷积运算方法及芯片
US9841979B2 (en) Method and apparatus for shuffling data using hierarchical shuffle units
KR102228995B1 (ko) 여러 가지 수치 포맷의 데이터를 갖는, 데이터 베이스화된 함수 모델의 연산을 위한 모델 연산 유닛 및 제어 장치
CN106155898B (zh) 一种流程图的路径获取方法及装置
US20170004246A1 (en) Intra-run design decision process for circuit synthesis
CN105701018B (zh) 一种用于流计算的数据处理方法与设备
US20150074630A1 (en) Layout method of semiconductor integrated circuit and recording medium
CN107729478B (zh) 一种数据分析方法和装置
US9208839B2 (en) Predicting saturation in a shift operation
US10379865B1 (en) Selection of instructions to be issued
JP2014206865A (ja) ソフトウェア開発装置
JP6473023B2 (ja) 性能評価モジュール及びこれを組み込んだ半導体集積回路

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20191224