RU2008144177A - Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) - Google Patents

Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) Download PDF

Info

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
Application number
RU2008144177/09A
Other languages
English (en)
Other versions
RU2501071C2 (ru
Inventor
Хаитам АККАРИ (US)
Хаитам АККАРИ
Рави РАДЖВАР (US)
Рави РАДЖВАР
Срикант Т СРИНИВАСАН (US)
Срикант Т СРИНИВАСАН
Original Assignee
Интел Корпорейшн (Us)
Интел Корпорейшн
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 Интел Корпорейшн (Us), Интел Корпорейшн filed Critical Интел Корпорейшн (Us)
Publication of RU2008144177A publication Critical patent/RU2008144177A/ru
Application granted granted Critical
Publication of RU2501071C2 publication Critical patent/RU2501071C2/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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/3004Arrangements for executing specific machine instructions to perform operations on 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache 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 от отправки из буфера загрузки.
RU2008144177/08A 2007-11-07 2008-11-06 Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) RU2501071C2 (ru)

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)

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

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

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