RU2017103951A - Эффективная маршрутизация прерываний для многопоточного процесса - Google Patents

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

Info

Publication number
RU2017103951A
RU2017103951A RU2017103951A RU2017103951A RU2017103951A RU 2017103951 A RU2017103951 A RU 2017103951A RU 2017103951 A RU2017103951 A RU 2017103951A RU 2017103951 A RU2017103951 A RU 2017103951A RU 2017103951 A RU2017103951 A RU 2017103951A
Authority
RU
Russia
Prior art keywords
guest
stream
processing
interrupt
activated
Prior art date
Application number
RU2017103951A
Other languages
English (en)
Other versions
RU2678513C2 (ru
RU2017103951A3 (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 RU2017103951A3 publication Critical patent/RU2017103951A3/ru
Publication of RU2017103951A publication Critical patent/RU2017103951A/ru
Application granted granted Critical
Publication of RU2678513C2 publication Critical patent/RU2678513C2/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority 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/46Multiprogramming arrangements
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Claims (33)

1. Способ реализации измененной приоритетной маршрутизации прерываний ввода/вывода (I/O), содержащий
выявление посредством процессора того, является ли прерывание I/O отложенным для ядра,
выявление посредством процессора того, является ли какой-либо из нескольких гостевых потоков ядра активированным для обработки гостевым потоком прерывания в ответ на выявление того, что прерывание I/O является отложенным,
выявление посредством процессора того, находится ли по меньшей мере один из нескольких гостевых потоков, активированных для обработки гостевым потоком, в состоянии ожидания, и
маршрутизацию посредством процессора прерывания I/O к гостевому потоку, активированному для обработки гостевым потоком и находящемуся в состоянии ожидания, на основании выявления того, что по меньшей мере один из нескольких гостевых потоков, активированных для обработки гостевым потоком, находится в состоянии ожидания.
2. Способ по п. 1, причем прерывание I/O обозначают в матрице отложенных прерываний как отложенное.
3. Способ по п. 1, причем бит состояния и бит управления для каждого гостевого потока конфигурируют для активирования этого потока для обработки гостевым потоком прерывания.
4. Способ по п. 1, кроме того, включающий в себя маршрутизацию прерывания I/O к одному из нескольких гостевых потоков, активированных для обработки гостевым потоком, на основании выявления того, что ни один из нескольких гостевых потоков, активированных для обработки гостевым потоком, не находится в состоянии ожидания.
5. Способ по п. 1, причем в ответ на выявление того, что более чем один из нескольких гостевых потоков, активированных для обработки гостевым потоком, находятся в состоянии ожидания, для выбора гостевого потока используют алгоритм маршрутизации.
6. Способ по п. 1, кроме того, включающий в себя инициирование задержки маршрутизации прерывания I/O к хосту, на основании выявления того, что ни один из нескольких гостевых потоков не является активированным для обработки гостевым потоком.
7. Способ по п. 6, кроме того, включающий в себя выявление после инициирования задержки того, является ли какой-либо из нескольких гостевых потоков ядра активированным для обработки гостевым потоком.
8. Система для реализации измененной приоритетной маршрутизации прерываний ввода/вывода (I/O), содержащая процессор и память,
причем процессор сконфигурирован для:
выявления того, является ли прерывание I/O отложенным для ядра,
выявления того, является ли какой-либо из нескольких гостевых потоков ядра активированным для обработки гостевым потоком прерывания на основании выявления того, что прерывание I/O является отложенным,
выявления того, находится ли по меньшей мере один из нескольких гостевых потоков, активированных для обработки гостевым потоком, в состоянии ожидания, и
маршрутизации прерывания I/O к гостевому потоку, активированному для обработки гостевым потоком и находящемуся в состоянии ожидания, на основании выявления того, что по меньшей мере один из нескольких гостевых потоков, активированных для обработки гостевым потоком, находится в состоянии ожидания.
9. Система по п. 8, причем прерывание I/O обозначено в матрице отложенных прерываний как отложенное.
10. Система по п. 8, причем бит состояния и бит управления для каждого гостевого потока является сконфигурированными для активирования этого потока для обработки гостевым потоком прерывания.
11. Система по п. 8, причем процессор, кроме того, сконфигурирован для маршрутизации прерывания I/O к одному из нескольких гостевых потоков, активированных для обработки гостевым потоком, на основании выявления того, что ни один из нескольких гостевых потоков, активированных для обработки гостевым потоком, не находится в состоянии ожидания.
12. Система по п. 8, причем в ответ на выявление того, что более чем один из нескольких гостевых потоков, активированных для обработки гостевым потоком, находятся в состоянии ожидания, для выбора гостевого потока используется алгоритм маршрутизации.
13. Система по п. 8, причем процессор, кроме того, сконфигурирован для инициирования задержки маршрутизации прерывания I/O к хосту на основании выявления того, что ни один из нескольких гостевых потоков не является активированным для обработки гостевым потоком.
14. Система по п. 13, причем процессор, кроме того, сконфигурирован для выявления после инициирования задержки того, является ли какой-либо из нескольких гостевых потоков ядра активированным для обработки гостевым потоком.
15. Компьютерный программный продукт, причем компьютерный программный продукт содержит машиночитаемый информационный носитель, имеющий сохраненные на нем программные команды, реализующие измененную приоритетную маршрутизацию прерываний ввода/вывода (I/O), причем программные команды являются исполняемыми посредством процессора для принуждения процессора к:
выявлению того, является ли прерывание I/O отложенным для ядра,
выявлению того, является ли какой-либо из нескольких гостевых потоков ядра активированным для обработки гостевым потоком прерывания на основании выявления того, что прерывание I/O является отложенным,
выявлению того, находится ли по меньшей мере один из нескольких гостевых потоков, активированных для обработки гостевым потоком, в состоянии ожидания, и
маршрутизации прерывания I/O к гостевому потоку, активированному для обработки гостевым потоком и находящемуся в состоянии ожидания, на основании выявления того, что по меньшей мере один из нескольких гостевых потоков, активированных для обработки гостевым потоком, находится в состоянии ожидания.
16. Компьютерный программный продукт по п. 15, причем прерывание I/O обозначено в матрице отложенных прерываний как отложенное.
17. Компьютерный программный продукт по п. 15, причем бит состояния и бит управления для каждого гостевого потока является сконфигурированными для обработки гостевым потоком прерывания.
18. Компьютерный программный продукт по п. 15, причем программные команды являются также исполняемыми посредством процессора для принуждения процессора к маршрутизации прерывания I/O к одному из нескольких гостевых потоков, активированных для обработки гостевым потоком, на основании выявления того, что ни один из нескольких гостевых потоков, активированных для обработки гостевым потоком, не находится в состоянии ожидания.
19. Компьютерный программный продукт по п. 15, причем в ответ на выявление того, что более чем один из нескольких гостевых потоков, активированных для обработки гостевым потоком, находятся в состоянии ожидания, для выбора гостевого потока используется алгоритм маршрутизации.
20. Компьютерный программный продукт по п. 15, причем программные команды являются также исполняемыми посредством процессора для принуждения процессора к инициированию задержки маршрутизации прерывания I/O к хосту на основании выявления того, что ни один из нескольких гостевых потоков не является активированным для обработки гостевым потоком.
RU2017103951A 2014-10-08 2015-09-14 Эффективная маршрутизация прерываний для многопоточного процесса RU2678513C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/509,533 US9760511B2 (en) 2014-10-08 2014-10-08 Efficient interruption routing for a multithreaded processor
US14/509,533 2014-10-08
PCT/EP2015/070982 WO2016055237A1 (en) 2014-10-08 2015-09-14 Efficient interruption routing for a multithreaded processor

Publications (3)

Publication Number Publication Date
RU2017103951A3 RU2017103951A3 (ru) 2018-11-12
RU2017103951A true RU2017103951A (ru) 2018-11-12
RU2678513C2 RU2678513C2 (ru) 2019-01-29

Family

ID=54147170

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2017103951A RU2678513C2 (ru) 2014-10-08 2015-09-14 Эффективная маршрутизация прерываний для многопоточного процесса

Country Status (14)

Country Link
US (1) US9760511B2 (ru)
EP (1) EP3204853B1 (ru)
JP (1) JP6537599B2 (ru)
KR (1) KR101884579B1 (ru)
CN (1) CN107111578B (ru)
AU (1) AU2015330266B2 (ru)
BR (1) BR112017007442B1 (ru)
CA (1) CA2961690C (ru)
MX (1) MX2017004530A (ru)
RU (1) RU2678513C2 (ru)
SG (1) SG11201701614WA (ru)
TW (1) TWI633490B (ru)
WO (1) WO2016055237A1 (ru)
ZA (1) ZA201703081B (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2749649C2 (ru) * 2018-12-21 2021-06-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования обработки операций ввода/вывода

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9898348B2 (en) 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
US9836323B1 (en) * 2017-02-24 2017-12-05 Red Hat, Inc. Scalable hypervisor scheduling of polling tasks
EP3924818A1 (en) 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt for multilevel virtualization
EP3924821A1 (en) * 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt virtualization with running indicator
TWI759677B (zh) 2019-02-14 2022-04-01 美商萬國商業機器公司 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
US10942875B2 (en) * 2019-08-02 2021-03-09 EMC IP Holding Company, LLC System and method for regulating host IOs and internal background operations in a storage system

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4779188A (en) * 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
JPH0792761B2 (ja) * 1985-07-31 1995-10-09 株式会社日立製作所 仮想計算機システムの入出力制御方法
US5155809A (en) 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US5222215A (en) * 1991-08-29 1993-06-22 International Business Machines Corporation Cpu expansive gradation of i/o interruption subclass recognition
US5701501A (en) * 1993-02-26 1997-12-23 Intel Corporation Apparatus and method for executing an atomic instruction
CN1104687C (zh) * 1996-01-31 2003-04-02 伊普思龙网络公司 传输网络中在包路由选择和包交换之间动态转换的改进方法及设备
US5894583A (en) * 1996-04-09 1999-04-13 International Business Machines Corporation Variable timeout method for improving missing-interrupt-handler operations in an environment having I/O devices shared by one or more systems
US6954922B2 (en) * 1998-04-29 2005-10-11 Sun Microsystems, Inc. Method apparatus and article of manufacture for time profiling multi-threaded programs
US6754690B2 (en) * 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
US7251814B2 (en) * 2001-08-24 2007-07-31 International Business Machines Corporation Yield on multithreaded processors
US7000051B2 (en) * 2003-03-31 2006-02-14 International Business Machines Corporation Apparatus and method for virtualizing interrupts in a logically partitioned computer system
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7213125B2 (en) * 2004-07-31 2007-05-01 Hewlett-Packard Development Company, L.P. Method for patching virtually aliased pages by a virtual-machine monitor
US20060150010A1 (en) * 2005-01-03 2006-07-06 Stiffler Jack J Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support
US7984281B2 (en) * 2005-10-18 2011-07-19 Qualcomm Incorporated Shared interrupt controller for a multi-threaded processor
US7624257B2 (en) * 2005-11-30 2009-11-24 International Business Machines Corporation Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads
WO2007092528A2 (en) * 2006-02-03 2007-08-16 Fish Russell H Iii Thread optimized multiprocessor architecture
US7478185B2 (en) 2007-01-05 2009-01-13 International Business Machines Corporation Directly initiating by external adapters the setting of interruption initiatives
US8656145B2 (en) * 2008-09-19 2014-02-18 Qualcomm Incorporated Methods and systems for allocating interrupts in a multithreaded processor
US8082426B2 (en) * 2008-11-06 2011-12-20 Via Technologies, Inc. Support of a plurality of graphic processing units
US8571834B2 (en) * 2010-01-08 2013-10-29 International Business Machines Corporation Opcode counting for performance measurement
JP2011229038A (ja) * 2010-04-22 2011-11-10 Oki Data Corp 画像処理装置
US8762615B2 (en) * 2011-12-21 2014-06-24 International Business Machines Corporation Dequeue operation using mask vector to manage input/output interruptions
KR101745640B1 (ko) * 2012-06-15 2017-06-09 인텔 코포레이션 공유 메모리 자원들을 사용하는 메모리 일관성 모델에서 비순차 load들에 대한 로크 기반 및 동기화 기반 방법
US8943252B2 (en) 2012-08-16 2015-01-27 Microsoft Corporation Latency sensitive software interrupt and thread scheduling
US9891927B2 (en) * 2013-08-28 2018-02-13 Via Technologies, Inc. Inter-core communication via uncore RAM

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2749649C2 (ru) * 2018-12-21 2021-06-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования обработки операций ввода/вывода

Also Published As

Publication number Publication date
KR20170042700A (ko) 2017-04-19
KR101884579B1 (ko) 2018-08-29
AU2015330266A8 (en) 2017-03-16
EP3204853B1 (en) 2020-06-17
AU2015330266A1 (en) 2017-03-09
TWI633490B (zh) 2018-08-21
AU2015330266B2 (en) 2018-10-04
RU2678513C2 (ru) 2019-01-29
JP6537599B2 (ja) 2019-07-03
SG11201701614WA (en) 2017-03-30
ZA201703081B (en) 2018-11-28
BR112017007442A2 (pt) 2018-01-16
WO2016055237A1 (en) 2016-04-14
EP3204853A1 (en) 2017-08-16
CA2961690A1 (en) 2016-04-14
RU2017103951A3 (ru) 2018-11-12
US9760511B2 (en) 2017-09-12
JP2017538184A (ja) 2017-12-21
CA2961690C (en) 2024-02-06
CN107111578B (zh) 2020-06-19
CN107111578A (zh) 2017-08-29
BR112017007442B1 (pt) 2023-03-28
TW201614492A (en) 2016-04-16
US20160103774A1 (en) 2016-04-14
MX2017004530A (es) 2017-06-07

Similar Documents

Publication Publication Date Title
RU2017103951A (ru) Эффективная маршрутизация прерываний для многопоточного процесса
RU2016127444A (ru) Восстановление контекста потока в многопоточной компьютерной системе
JP2014016817A5 (ru)
JP2015502618A5 (ru)
JP2016536692A5 (ru)
JP2016526205A5 (ru)
JP2013504127A5 (ru)
WO2012082811A3 (en) Virtual machine branching and parallel execution
JP2011529603A5 (ru)
WO2014116861A3 (en) Parallel processing with proactive solidarity cells
RU2012148586A (ru) Фильтрация программного прерывания в транзакционном выполнении
GB2517877A (en) Controlling an order for processing data elements during vector processing
WO2015153121A8 (en) A data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
RU2016127443A (ru) Команда запуска виртуального выполнения для диспетчеризации множественных потоков в компьютере
RU2012148401A (ru) Средство процессорной поддержки
JP2016532180A5 (ru)
ATE540353T1 (de) Einteilen von threads in einem prozessor
JP2013156984A5 (ru)
RU2012150400A (ru) Обнаружение квантового исключения с плавающей десятичной точкой
RU2015151117A (ru) Пары инструкций установления очерёдности исполнения инструкций, процессоры, способы и системы
WO2014160556A3 (en) Populating localized fast bulk storage in a multi-node computer system
MX2015006489A (es) Metodo y dispositivo para optimizar memoria.
WO2013185015A3 (en) System and method for providing low latency to applications using heterogeneous processors
GB2539600A (en) Exiting multiple threads in a computer
RU2017103676A (ru) Управление выполнением потоков в многопоточном процессоре