RU2008144177A - Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) - Google Patents
Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) Download PDFInfo
- Publication number
- RU2008144177A RU2008144177A RU2008144177/09A RU2008144177A RU2008144177A RU 2008144177 A RU2008144177 A RU 2008144177A RU 2008144177/09 A RU2008144177/09 A RU 2008144177/09A RU 2008144177 A RU2008144177 A RU 2008144177A RU 2008144177 A RU2008144177 A RU 2008144177A
- Authority
- RU
- Russia
- Prior art keywords
- critical section
- lock
- late
- value
- update
- Prior art date
Links
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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
1. Устройство, содержащее: ! процессорный элемент для выполнения критического участка, при этом критический участок ! разграничивается операцией начала критического участка и операцией окончания критического участка, где операция начала критического участка должна ссылаться на значение блокировки и адрес; ! участок памяти, связанный с процессорным элементом, для хранения записи, ассоциированной с критическим участком, при этом в записи содержится значение блокировки; и ! логический узел запроса поздней блокировки, соединенный с участком памяти, для попыток обновления значения блокировки по адресу в ответ на выявление события запроса поздней блокировки при ожидании обработки критического участка. ! 2. Устройство по п.1, дополнительно содержащее кэш-память, связанную с процессорным элементом, при этом строка кэш-памяти должна быть ассоциирована с адресом, и логический узел запроса поздней блокировки, осуществляющий попытки обновления значения блокировки по данному адресу, включает в себя логический узел запроса поздней блокировки, осуществляющий попытки обновления значения блокировки в строке кэш-памяти. ! 3. Устройство по п.2, в котором участок памяти предназначен для хранения записи в стеке записей, и запись также должна содержать представление адреса, и в котором операция начала критического участка включает в себя операцию сохранения значения блокировки по заданному адресу, при этом операция сохранения значения блокировки, при ее выполнении процессорным элементом, должна производиться с записью, ассоциированной с критическим участком, а не с адресом. ! 4. Устройство по п.3, в котором буфер хранения с�
Claims (25)
1. Устройство, содержащее:
процессорный элемент для выполнения критического участка, при этом критический участок
разграничивается операцией начала критического участка и операцией окончания критического участка, где операция начала критического участка должна ссылаться на значение блокировки и адрес;
участок памяти, связанный с процессорным элементом, для хранения записи, ассоциированной с критическим участком, при этом в записи содержится значение блокировки; и
логический узел запроса поздней блокировки, соединенный с участком памяти, для попыток обновления значения блокировки по адресу в ответ на выявление события запроса поздней блокировки при ожидании обработки критического участка.
2. Устройство по п.1, дополнительно содержащее кэш-память, связанную с процессорным элементом, при этом строка кэш-памяти должна быть ассоциирована с адресом, и логический узел запроса поздней блокировки, осуществляющий попытки обновления значения блокировки по данному адресу, включает в себя логический узел запроса поздней блокировки, осуществляющий попытки обновления значения блокировки в строке кэш-памяти.
3. Устройство по п.2, в котором участок памяти предназначен для хранения записи в стеке записей, и запись также должна содержать представление адреса, и в котором операция начала критического участка включает в себя операцию сохранения значения блокировки по заданному адресу, при этом операция сохранения значения блокировки, при ее выполнении процессорным элементом, должна производиться с записью, ассоциированной с критическим участком, а не с адресом.
4. Устройство по п.3, в котором буфер хранения связан с процессорным элементом и предназначен для хранения записи, связанной с хранением значения блокировки, при этом запись хранения содержит поле кода блока, а логический узел обновления, связанный с буфером хранения, должен обновлять поле кода блока с присвоением значения блокировки в ответ на выявления события запроса поздней блокировки.
5. Устройство по п.4, в котором логический узел обновления должен обновлять поле кода блока с присвоением незаблокированного значения в ответ на успешную попытку логического узла запроса поздней блокировки обновить строку кэш-памяти с присвоением значения блокировки.
6. Устройство по п.5, в котором для успешной попытки логического узла запроса поздней блокировки обновить строку кэш-памяти, необходимо, чтобы текущее значение строки кэш-памяти представляло собой незаблокированное значение, что позволяет логическому узлу запроса поздней блокировки осуществить обновление значения блокировки.
7. Устройство по п.1, в котором событие запроса поздней блокировки выбирается из группы, состоящей из события истечения срока таймера, события заполнения множества кэшей и неотменяемого события.
8. Устройство, содержащее:
процессорный элемент для выполнения текущего критического участка и следующего критического участка;
буфер доступа, связанный с процессорным элементом для хранения записи доступа, ассоциированной с операцией доступа из следующего критического участка, где запись доступа должна содержать поле кода блока, при этом поле кода блока содержит заблокированное значение для указания того, что выполнение операции доступа должно быть остановлено; и
логический узел обновления, соединенный с буфером обновления для обновления поля кода блока с присвоением заблокированного значения в ответ на выявление события запроса поздней блокировки, связанного с текущим критическим участком.
9. Устройство по п.8, в котором поле кода блока должно по умолчанию содержать незаблокированное значение для указания того, что операция доступа должна быть выполнена.
10. Устройство по п.8, в котором событие запроса поздней блокировки выбирается из группы, состоящей из события истечения срока таймера, события заполнения множества кэшей и неотменяемого события.
11. Устройство по п.8, в котором логический узел обновления должен обновлять поле кода блока с присвоением заблокированного значения в ответ на выявление события запроса поздней блокировки и в ответ на выполнение предварительного условия запроса поздней блокировки.
12. Устройство по п.11, в котором предварительное условие запроса поздней блокировки включает в себя разрешение того, чтобы множество ожидающих обработки записей буфера заполнения было глобально видимым.
13. Устройство по п.11, в котором буфер доступа является буфером загрузки и в котором операция доступа включает в себя последующую операцию загрузки с целью сохранения (L_S_I) для обозначения начала следующего критического участка.
14. Устройство по п.13, дополнительно содержащее стек блокировки, который содержит запись стека блокировки, связанную с текущей операцией L_S_I для обозначения начала текущего критического участка, в котором предварительное условие запроса поздней блокировки включает в себя ожидание операции сохранения, связанной с текущей L_S_I для текущего критического участка, которая должна обновить запись стека блокировки.
15. Устройство по п.13, в котором заблокированное значение содержит идентификатор и в котором в ответ на завершение запроса поздней блокировки логический узел обновления должен передать идентификатор в запись буфера загрузки для разрешения выполнения операции L_S_I.
16. Способ, включающий в себя:
выявление события запроса поздней блокировки при выполнении текущего критического участка;
инициацию запроса поздней блокировки для текущего критического участка; и
останов множества вышестоящих сохранений в ответ на инициацию запроса поздней блокировки для текущего критического участка.
17. Способ по п.16, в котором событие запроса поздней блокировки выбирается из группы, включающей в себя истечение времени контрольного таймера, выбор для замещения строки кэша, в которой осуществлялась трассировка доступа к памяти во время выполнения критического участка, и обнаружение неотменяемого события.
18. Способ по п.16, в котором инициация запроса поздней блокировки для текущего критического участка включает в себя инициацию сохранения значения блокировки, ссылающегося на адрес блокировки, при этом значение блокировки и адрес должны храниться в записи стека блокировки, связанной с операцией начала критического участка для текущего критического участка.
19. Способ по п.18, в котором множество вышестоящих сохранений хранится в буфере сохранения и в котором множество вышестоящих сохранений разблокируется для выполнения в ответ на сохранение значения блокировки, ссылающегося на аннулирование адреса блокировки.
20. Способ по п.16, в котором инициация запроса поздней блокировки для критического участка выполняется в ответ на глобальную видимость множества ожидающих обработки записей буфера заполнения и обнаружения того, что запись стека блокировки, связанная с критическим участком, обновляется с присвоением значения блокировки.
21. Способ по п.20, дополнительно включающий в себя:
выявление следующей операции начала критического участка для следующего критического участка; и
блокирование создания контрольной точки, связанной со следующим критическим участком.
22. Способ по п.21, в котором блокирование создания контрольной точки, связанной со следующим критическим участком, осуществляется в ответ на выявление следующей операции начала критического участка.
23. Способ по п.21, дополнительно включающий в себя: определение того, что следующий критический участок не является вложенным критическим участком, при этом блокирование создания контрольной точки осуществляется в ответ на выявление того, что следующий критический участок не является вложенным критическим участком.
24. Способ по п.23, в котором определение того, что следующий критический участок не является вложенным критическим участком, включает в себя:
сброс буфера сохранения в ответ на то, что буфер сохранения содержит записи буфера сохранения;
в ответ на сброс буфера сохранения:
определение, что следующий критический участок является вложенным критическим участком, реагирующим на отсутствие обнаружения текущей операции окончания критического участка; и
определение, что следующий критический участок не является вложенным критическим участком, реагирующим на обнаружение текущей операции окончания критического участка.
25. Способ по п.21, в котором операция начала критического участка для следующего критического участка включает в себя операцию загрузки с целью сохранения (L_S_I) и в котором блокирование создания контрольной точки, связанной со следующим критическим участком, включает блокирование операции L_S_I от отправки из буфера загрузки.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/936,249 US8627030B2 (en) | 2007-11-07 | 2007-11-07 | Late lock acquire mechanism for hardware lock elision (HLE) |
US11/936,249 | 2007-11-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2008144177A true RU2008144177A (ru) | 2010-05-20 |
RU2501071C2 RU2501071C2 (ru) | 2013-12-10 |
Family
ID=40589330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2008144177/08A RU2501071C2 (ru) | 2007-11-07 | 2008-11-06 | Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) |
Country Status (3)
Country | Link |
---|---|
US (1) | US8627030B2 (ru) |
CN (3) | CN102722418B (ru) |
RU (1) | RU2501071C2 (ru) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8190859B2 (en) * | 2006-11-13 | 2012-05-29 | Intel Corporation | Critical section detection and prediction mechanism for hardware lock elision |
US8392929B2 (en) * | 2009-12-15 | 2013-03-05 | Microsoft Corporation | Leveraging memory isolation hardware technology to efficiently detect race conditions |
US8612952B2 (en) | 2010-04-07 | 2013-12-17 | International Business Machines Corporation | Performance optimization based on data accesses during critical sections |
WO2013115816A1 (en) * | 2012-02-02 | 2013-08-08 | Intel Corporation | A method, apparatus, and system for speculative abort control mechanisms |
GB2500707B (en) * | 2012-03-30 | 2014-09-17 | Cognovo Ltd | Multiprocessor system, apparatus and methods |
US9524263B2 (en) | 2012-06-29 | 2016-12-20 | Intel Corporation | Method and apparatus for bus lock assistance |
US9182986B2 (en) | 2012-12-29 | 2015-11-10 | Intel Corporation | Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region |
US9176877B2 (en) | 2013-04-15 | 2015-11-03 | International Business Machines Corporation | Provision of early data from a lower level cache memory |
US9183043B2 (en) | 2013-07-16 | 2015-11-10 | Oracle International Corporation | Systems and methods for adaptive integration of hardware and software lock elision techniques |
US9524195B2 (en) | 2014-02-27 | 2016-12-20 | International Business Machines Corporation | Adaptive process for data sharing with selection of lock elision and locking |
JP6642806B2 (ja) * | 2013-10-14 | 2020-02-12 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ロック無効化とロックの選択を用いたデータ共有のための適応プロセス |
US9207967B2 (en) | 2014-01-07 | 2015-12-08 | Red Hat, Inc. | Using nonspeculative operations for lock elision |
US9442853B2 (en) * | 2014-02-27 | 2016-09-13 | International Business Machines Corporation | Salvaging lock elision transactions with instructions to change execution type |
US9411729B2 (en) * | 2014-02-27 | 2016-08-09 | International Business Machines Corporation | Salvaging lock elision transactions |
US9442775B2 (en) * | 2014-02-27 | 2016-09-13 | International Business Machines Corporation | Salvaging hardware transactions with instructions to transfer transaction execution control |
RU2556364C1 (ru) * | 2014-03-18 | 2015-07-10 | Федеральное государственное бюджетное учреждение науки Научно-исследовательский институт системных исследований Российской академии наук (НИИСИ РАН) | Гибридный микропроцессор |
US9569613B2 (en) * | 2014-12-23 | 2017-02-14 | Intel Corporation | Techniques for enforcing control flow integrity using binary translation |
JP7042709B2 (ja) * | 2018-06-28 | 2022-03-28 | ルネサスエレクトロニクス株式会社 | 半導体装置、制御システムおよび半導体装置の制御方法 |
CN112286553B (zh) * | 2020-10-27 | 2021-11-05 | 北京深思数盾科技股份有限公司 | 用户锁的升级方法、装置、系统、电子设备和存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4763249A (en) * | 1983-09-22 | 1988-08-09 | Digital Equipment Corporation | Bus device for use in a computer system having a synchronous bus |
US6697935B1 (en) * | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6560776B1 (en) * | 2000-02-18 | 2003-05-06 | Avaya Technology Corp. | Software installation verification tool |
US6779065B2 (en) * | 2001-08-31 | 2004-08-17 | Intel Corporation | Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads |
US7120762B2 (en) * | 2001-10-19 | 2006-10-10 | Wisconsin Alumni Research Foundation | Concurrent execution of critical sections by eliding ownership of locks |
US7000047B2 (en) * | 2003-04-23 | 2006-02-14 | International Business Machines Corporation | Mechanism for effectively handling livelocks in a simultaneous multithreading processor |
US7752620B2 (en) * | 2005-06-06 | 2010-07-06 | International Business Machines Corporation | Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions |
US8190859B2 (en) * | 2006-11-13 | 2012-05-29 | Intel Corporation | Critical section detection and prediction mechanism for hardware lock elision |
-
2007
- 2007-11-07 US US11/936,249 patent/US8627030B2/en not_active Expired - Fee Related
-
2008
- 2008-11-06 RU RU2008144177/08A patent/RU2501071C2/ru not_active IP Right Cessation
- 2008-11-07 CN CN201210067422.1A patent/CN102722418B/zh not_active Expired - Fee Related
- 2008-11-07 CN CN2008101908352A patent/CN101458636B/zh not_active Expired - Fee Related
- 2008-11-07 CN CN201310482999.3A patent/CN103544052B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN103544052B (zh) | 2017-04-12 |
CN102722418A (zh) | 2012-10-10 |
CN103544052A (zh) | 2014-01-29 |
CN101458636A (zh) | 2009-06-17 |
US20090119459A1 (en) | 2009-05-07 |
CN101458636B (zh) | 2013-11-20 |
CN102722418B (zh) | 2015-08-26 |
RU2501071C2 (ru) | 2013-12-10 |
US8627030B2 (en) | 2014-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2008144177A (ru) | Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) | |
US9971627B2 (en) | Enabling maximum concurrency in a hybrid transactional memory system | |
US7930694B2 (en) | Method and apparatus for critical section prediction for intelligent lock elision | |
CN107851037B (zh) | 在使用日志和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议 | |
US6047363A (en) | Prefetching data using profile of cache misses from earlier code executions | |
US20150154045A1 (en) | Contention management for a hardware transactional memory | |
US9052909B2 (en) | Recovering from exceptions and timing errors | |
US20190324908A1 (en) | Robust transactional memory | |
US20030196046A1 (en) | System and method for prefetching data into a cache based on miss distance | |
US6345351B1 (en) | Maintenance of speculative state of parallel executed jobs in an information processing system | |
JPH06243036A (ja) | キャッシュ制御システム | |
KR102344010B1 (ko) | 벡터 명령들에 대한 요소간 어드레스 해저드들의 처리 | |
KR102284957B1 (ko) | 트랜잭션 데이터 처리 실행 모드에 대한 호출 스택 유지 | |
JP4843717B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
US20110276791A1 (en) | Handling a store instruction with an unknown destination address during speculative execution | |
EP1622028A2 (en) | Cache memory and method for controlling cache memory | |
US20170199778A1 (en) | Lazy runahead operation for a microprocessor | |
JP2017520857A5 (ru) | ||
US20080040546A1 (en) | Data processing apparatus and method for performing a cache lookup in an energy efficient manner | |
US20030140203A1 (en) | Memory record update filtering | |
US9858172B2 (en) | Apparatus and method for controlling debugging of program instructions including a transaction | |
US9990269B2 (en) | Apparatus and method for controlling debugging of program instructions including a transaction | |
US20080162823A1 (en) | System and method for handling multiple aliased shadow register numbers to enhance lock acquisition | |
US8214834B2 (en) | Asynchronous wakeup mechanism that places reference to process on sleep queue if execution of copyout functionality is caused to sleep | |
US10198360B2 (en) | Systems and methods storing a page fault virtual address to prevent unnecessary page table walks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20181107 |