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
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/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/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/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 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/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 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/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/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 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/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 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
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
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 (7)
| 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 |
| 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 |
| 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 |
| CN113986352B (zh) * | 2021-09-16 | 2025-04-08 | 平头哥(上海)半导体技术有限公司 | 命令处理器、相关装置和方法 |
| WO2024030707A1 (en) * | 2022-08-01 | 2024-02-08 | Qualcomm Incorporated | Using retired pages history for instruction translation lookaside buffer (tlb) prefetching in processor-based devices |
| US20240037042A1 (en) * | 2022-08-01 | 2024-02-01 | Qualcomm Incorporated | Using retired pages history for instruction translation lookaside buffer (tlb) prefetching in processor-based devices |
| CN115629807B (zh) * | 2022-10-31 | 2023-04-14 | 海光信息技术股份有限公司 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
Family Cites Families (23)
| 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 |
| US5664137A (en) * | 1994-01-04 | 1997-09-02 | Intel Corporation | Method and apparatus for executing and dispatching store operations in a computer system |
| 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码校验节点运算电路 |
| EP2668565B1 (en) * | 2011-01-27 | 2019-11-06 | Intel Corporation | Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor |
| 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 CN CN201380081132.5A patent/CN105723329B/zh not_active Expired - Fee Related
- 2013-12-23 DE DE112013007703.5T patent/DE112013007703T5/de not_active Withdrawn
- 2013-12-23 US US15/103,765 patent/US10133582B2/en active Active
- 2013-12-23 WO PCT/IB2013/003083 patent/WO2015097494A1/en not_active Ceased
- 2013-12-23 JP JP2016576104A patent/JP2024527169A/ja not_active Ceased
- 2013-12-23 RU RU2016119815A patent/RU2644528C2/ru not_active IP Right Cessation
- 2013-12-23 KR KR1020167013626A patent/KR101898791B1/ko active Active
- 2013-12-23 EP EP13840193.0A patent/EP3087473A1/en not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| KR20160073417A (ko) | 2016-06-24 |
| KR101898791B1 (ko) | 2018-09-13 |
| WO2015097494A1 (en) | 2015-07-02 |
| CN105723329A (zh) | 2016-06-29 |
| US20160314000A1 (en) | 2016-10-27 |
| RU2644528C2 (ru) | 2018-02-12 |
| JP2024527169A (ja) | 2024-07-22 |
| EP3087473A1 (en) | 2016-11-02 |
| DE112013007703T5 (de) | 2016-09-29 |
| CN105723329B (zh) | 2019-09-06 |
| US10133582B2 (en) | 2018-11-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| RU2016119815A (ru) | Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности | |
| KR102178295B1 (ko) | 결정 모델 구성 방법 및 장치, 컴퓨터 장치 및 저장 매체 | |
| Puri et al. | Intuitionistic fuzzy data envelopment analysis: An application to the banking sector in India | |
| US9563974B2 (en) | Aggregating graph structures | |
| US20180181875A1 (en) | Model selection system, model selection method, and storage medium on which program is stored | |
| FI4086760T3 (fi) | Vektoripienennysprosessori | |
| US9535757B2 (en) | Task allocation optimizing system, task allocation optimizing method and task allocation optimizing program | |
| JP2020513120A5 (ru) | ||
| US10379865B1 (en) | Selection of instructions to be issued | |
| GB2524287A (en) | Graphics processing systems | |
| RU2015138900A (ru) | Системы и способы отслеживания флага в операциях устранения перемещения | |
| KR101587158B1 (ko) | 트리 인덱스를 이용하는 노드 탐색 방법 및 장치 | |
| CN103699455A (zh) | 一种多核实时容错系统中获取准确的最晚截止时间的方法 | |
| RU2011152760A (ru) | Оптимизации кода с использованием компилятора с двумя порядками следования байтов | |
| CN107769755A (zh) | 一种并行fir抽取滤波器的设计方法和并行fir抽取滤波器 | |
| WO2020230043A1 (en) | Feature vector feasibilty estimation | |
| CN106155898B (zh) | 一种流程图的路径获取方法及装置 | |
| US20150127924A1 (en) | Method and apparatus for processing shuffle instruction | |
| US9690900B2 (en) | Intra-run design decision process for circuit synthesis | |
| US20150074630A1 (en) | Layout method of semiconductor integrated circuit and recording medium | |
| JP2015099614A5 (ru) | ||
| JP6075172B2 (ja) | ソフトウェア開発装置 | |
| CN105701018B (zh) | 一种用于流计算的数据处理方法与设备 | |
| US9208839B2 (en) | Predicting saturation in a shift operation | |
| US9116742B1 (en) | Systems and methods for reducing interrupt latency |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20191224 |