RU2662403C2 - Динамическое активирование многопоточности - Google Patents

Динамическое активирование многопоточности Download PDF

Info

Publication number
RU2662403C2
RU2662403C2 RU2016127225A RU2016127225A RU2662403C2 RU 2662403 C2 RU2662403 C2 RU 2662403C2 RU 2016127225 A RU2016127225 A RU 2016127225A RU 2016127225 A RU2016127225 A RU 2016127225A RU 2662403 C2 RU2662403 C2 RU 2662403C2
Authority
RU
Russia
Prior art keywords
mode
command
stream
configuration
cpu
Prior art date
Application number
RU2016127225A
Other languages
English (en)
Other versions
RU2016127225A3 (ru
RU2016127225A (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 RU2016127225A3 publication Critical patent/RU2016127225A3/ru
Publication of RU2016127225A publication Critical patent/RU2016127225A/ru
Application granted granted Critical
Publication of RU2662403C2 publication Critical patent/RU2662403C2/ru

Links

Images

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

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)
  • Hardware Redundancy (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

Группа изобретений относится к поддерживающей множественные потоки компьютерной системе и, прежде всего, к динамическому активированию многопоточности в компьютерной системе. Техническим результатом является повышение производительности. Система содержит конфигурацию, содержащую ядро, конфигурируемое между режимом единственного потока (ST) и многопоточным (МТ) режимом, причем режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра, и средство многопоточности, сконфигурированное для управления конфигурацией для выполнения в первичном потоке в режиме ST команды задания режима МТ, получения числа затребованных потоков из местоположения, заданного командой задания режима МТ, и на основании выявления того, что число требуемых потоков указывает на множественные потоки, активирования режима МТ для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков. 3 н. и 8 з.п. ф-лы, 17 ил., 1 табл.

Description

Уровень техники
Настоящее изобретение, в общем, относится к поддерживающей множественные потоки компьютерной системе и, прежде всего, к динамическому активированию многопоточности в компьютерной системе.
По мере повышения в течение последних десятилетий быстродействия процессоров компьютерных систем не наблюдалось пропорционального увеличения скорости получения доступа к памяти таких компьютерных систем. Таким образом, чем быстрее время цикла процессора, тем более явной является задержка ожидания подлежащих выборке из памяти данных. Эффекты таких задержек были смягчены посредством различных уровней кэширования, а в современных процессорах, многопоточностью (МТ).
МТ позволяет совместно использовать различные ресурсы ядра процессора посредством нескольких потоков команд, известных как потоки исполнения. Ресурсы ядра могут включать в себя устройства выполнения, кэши, ассоциативные буфера трансляции (TLB) и т.п., что может быть в целом названо ядром. Во время латентности, вызванной неудачным обращением в кэш или другой задержкой одного потока, один или несколько других потоков могут использовать ресурсы ядра, увеличивая тем самым использование ресурсов ядра. При реализации одновременной многопоточности (SMT) суперскалярного процессора множественные потоки могут быть одновременно обслужены посредством ресурсов ядра одного или нескольких ядер.
В современных аппаратных платформах МТ обычно реализуется способом, который является прозрачным для операционной системы (OS), работающей на аппаратных средствах МТ. Одним из аспектов этой характеристической особенности является то, что OS не требует модификации для использования
аппаратных средств МТ. Однако прозрачная относительно OS операция МТ может привести к высокой изменчивости времени отклика, инициализации вычислительной мощности, планирования вычислительной мощности и тарификации. Эта изменчивость может возникнуть вследствие того, что OS не знает, имеют ли его задачи монопольный контроль над ядром, или его задачи выполняются как совместно использующие ядро потоки. Согласно замыслу, наивысшая производительность для интенсивно использующей память рабочей нагрузки на способных к МТ аппаратных средствах является достижимой в том случае, когда имеется высокая средняя плотность потоков при использовании ядер. Дополнительная производительность может быть достигнута за счет предоставляемой МТ повышенной эксплуатации кэша. Если OS последовательно не поддерживает высокие средние плотности потоков для используемых ядер, предоставляемая МТ дополнительная полная пропускная производительность не является достижимой. Например, если аппаратные средства выполняют единственный поток МТ на ядро при малой вычислительной загрузке, и выполняют с высокой плотностью потоков при высокой вычислительной загрузке, выявление степени доступности для рабочей нагрузки полной вычислительной мощности МТ может оказаться очень трудным. Эта аппаратная изменчивость при эксплуатации потока МТ может привести к изменчивости, подобным образом, как ранее описано относительно производительности, как во временах отклика транзакции, так и в тарификации.
Сущность изобретения
Варианты осуществления включают в себя систему, способ и компьютерный программный продукт для динамического активирования многопоточности. Согласно одному аспекту, компьютерная система включает в себя конфигурацию с ядром, конфигурируемым между режимом единственного потока (ST) и многопоточным (МТ) режимом. Режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра. Компьютерная система также включает в себя средство многопоточности, сконфигурированное для управления конфигурацией для выполнения способа. Способ включает в себя выполнение в первичном потоке в режиме ST команды задания режима МТ. Число требуемых потоков получают из местоположения, заданного командой
задания режима МТ. На основании выявления того, что число требуемых потоков указывает на множественные потоки, режим МТ активируется для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков.
Согласно другому аспекту, предоставляется компьютерно-реализуемый способ динамического активирования многопоточности в конфигурации. Конфигурация включает в себя ядро, конфигурируемое между режимом ST и режимом МТ, где режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра. Способ включает в себя выполнение в первичном потоке в режиме ST команды задания режима МТ. Число требуемых потоков получают из местоположения, заданного командой задания режима МТ. На основании выявления того, что число требуемых потоков указывает на множественные потоки, режим МТ активируется для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков.
Другой аспект включает в себя машиночитаемый информационный носитель, имеющий заключенные в него программные команды для реализации динамического активирования многопоточности в конфигурации, содержащей ядро, конфигурируемое между режимом единственного потока и режимом многопоточности. Режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра. Машиночитаемый информационный носитель не является сигналом. Программные команды являются считываемыми посредством устройства обработки данных для принуждения устройства обработки данных к выполнению способа, который включает в себя выполнение в первичном потоке в режиме ST на ядре конфигурации команды задания режима МТ. Число требуемых потоков получают из местоположения, заданного командой задания режима МТ. На основании выявления того, что число требуемых потоков указывает на множественные потоки, режим МТ активируется для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков.
Для всех указанных выше объектов изобретения команда задания режима МТ является командой процессора (SIGP) обработки сигналов от операционной системы. Команда SIGP содержит распоряжение на задание МТ и программно-задаваемый максимальный идентификатор ID, т.е. идентификатор, потока (PSMTID), связанный с числом затребованных потоков. На основании выполнения распоряжения на задание МТ с ненулевым значением PSMTID активируется режим МТ, а на основании выполнения распоряжения на задание МТ с нулевым значением PSMTID сохраняется режим ST и предотвращается активирование режима МТ. Кроме того, предоставляется индикация ошибки и предотвращается активирование режима МТ на основании выявления того, что распоряжение на задание МТ было выдано с одним или несколькими из: недопустимое распоряжение, неправильное состояние и недопустимый параметр.
Краткое описание нескольких видов чертежей
Рассматриваемый в качестве вариантов осуществления объект изобретения, прежде всего, указан и недвусмысленно заявлен в пунктах формулы изобретения в конце технического описания. Упомянутые ранее и другие признаки и преимущества вариантов осуществления являются очевидными из последующего подробного описания, рассматриваемого совместно с сопровождающими чертежами, на которых:
фиг. 1А изображает вычислительное окружение, которое может быть реализовано согласно варианту осуществления,
фиг. 1Б изображает вычислительное окружение, которое может быть реализовано согласно варианту осуществления,
фиг. 2 изображает схему обработки ядра, которая может быть реализована согласно варианту осуществления,
фиг. 3 изображает вычислительное окружение, которое может быть реализовано согласно варианту осуществления,
фиг. 4 изображает пример гипервизорного контекстного удерживания в вычислительном окружении, которое может быть реализовано согласно варианту осуществления,
фиг. 5 изображает последовательность операций для динамического активирования многопоточности согласно варианту осуществления,
фиг. 6А изображает пример процесса расширения адреса ЦП согласно варианту осуществления,
фиг. 6Б изображает пример процесса расширения адреса ЦП согласно варианту осуществления,
фиг. 7 изображает последовательность операций для распоряжения на задание многопоточности согласно варианту осуществления,
фиг. 8 изображает пример сохранения информации по инструменту многопоточности согласно варианту осуществления,
фиг. 9 изображает последовательность операций для выявления инструмента многопоточности согласно варианту осуществления,
фиг. 10 изображает пример различных местоположений контекста потока согласно варианту осуществления,
фиг. 11 изображает пример сохранения регистра многопоточности согласно варианту осуществления,
фиг. 12 изображает последовательность операций для сохранения регистра многопоточности согласно варианту осуществления,
фиг. 13 изображает пример восстановления регистра многопоточности согласно варианту осуществления,
фиг. 14 изображает последовательность операций для восстановления регистра многопоточности согласно варианту осуществления,
фиг. 15 изображает машиночитаемый носитель согласно варианту осуществления.
Подробное описание
Образцовые варианты осуществления предоставляют многопоточную операцию в компьютерной системе, которая поддерживает режим единственного потока и режим многопоточной работы. При рассмотрении в настоящем документе, логический поток относится к единственному потоку команд и к связанному с ним состоянию. Это означает, что на уровне архитектуры каждый логический поток представляет независимое центральное вычислительное устройство (ЦП) или процессор. На аппаратном уровне поток является выполнением потока команд, связанного с логическим потоком, объединенным с поддержанием гостевого состояния на момент диспетчеризации потока. Поэтому термины «поток» и «ЦП» могут быть использованы в настоящем документе взаимозаменяемым образом.
В образцовом варианте осуществления ЦП содержит средства управления последовательностью действий и обработки для выполнения команды, действия по прерыванию, функций управления временем, начальной загрузки программы и других связанных с машиной функций. ЦП задает логические функции, которые могут быть спроецированы на ряд лежащих в основе физических реализаций. В процессе выполнения команд ЦП может обрабатывать двоичные целые числа и числа с плавающей точкой (например, двоичные, десятичные и шестнадцатеричные) фиксированной длины, десятичные целые числа переменной длины, а также логическую информацию как фиксированной, так и переменной длины. Обработка может быть параллельной или последовательной. Ширина обрабатываемых элементов, кратность переключаемых маршрутов и степень одновременности при выполнении различных типов арифметических операций может отличаться от одной модели ЦП к другой без воздействия на логические результаты.
Выполняемые ЦП команды могут включать в себя несколько классов команд, таких как: общие, десятичные, поддержка операций с плавающей точкой (FPS), двоичная плавающая точка (BFP), десятичная плавающая точка (DFP), шестнадцатеричная плавающая точка (HFP), управление и команды I/O. Общие команды могут использоваться при выполнении арифметических операций с двоичными целыми числами, а также логических операций, операций ветвления и других неарифметических операций. Десятичные команды воздействуют на данные в десятичном формате. Команды BFP, DFP и HFP воздействуют на данные в форматах BFP, DFP и HFP, соответственно, в то время как команды FPS воздействуют на данные с плавающей точкой, независимо от формата или от преобразования из одного формата к другому. Привилегированные команды управления и команды I/O могут быть выполнены, когда ЦП находится в супервизорном режиме, а полупривилегированные команды управления могут быть выполнены в задачном режиме согласно соответствующим механизмам авторизации.
ЦП предоставляет регистры, которые являются доступными для программ, но не имеют адресуемых представлений в основной памяти. Регистры могут включать в себя, например, текущее слово (PSW) состояния программы, общие регистры, регистры с плавающей точкой и регистр управления с плавающей точкой, векторные регистры, регистры управления, регистры доступа, регистр префикса, программируемый регистр времени дня (TOD), а также регистры для компаратора часов и таймера ЦП. Этот набор регистров может называться архитектурно выполненным регистровым контекстом ЦП. Каждый ЦП в конфигурации может предоставлять доступ к часам TOD, которые могут быть совместно использованы всеми ЦП в конфигурации. Операционный код команды может выявлять тип регистра, который должен быть использован в операции.
Каждый ЦП может иметь реквизит типа, указывающий на то, предоставляет ли он полный комплект функций и средств (например, общий ЦП), или он предназначается для обработки специальных типов рабочей нагрузки (например, специализированный ЦП). Первичный ЦП является либо общим ЦП, либо ЦП (IPL ЦП), принадлежащим к тому же типу, что и ЦП, запущенный после последней операции по начальной загрузке (IPL) программы. Вторичный ЦП является любым ЦП кроме общего ЦП, и принадлежит к типу ЦП, отличающемуся от IPL ЦП.
Средство многопоточности может быть доступным на компьютерной системе, реализующей поддерживающую его архитектуру. Средство многопоточности предоставляет поддержку многопоточности для активирования группы потоков, которые также можно назвать несколькими ЦП, делящими между собой ядро. Когда средство многопоточности активировано, ЦП в ядре могут совместно использовать некоторые аппаратные ресурсы, такие как устройства выполнения или кэши. Когда один ЦП в ядре ожидает аппаратные ресурсы (обычно, при ожидании доступа к памяти), другие ЦП в ядре могут использовать совместно используемые ресурсы в ядре вместо позволения им оставаться неактивными. Когда средство многопоточности инсталлировано и активировано, поток является синонимом для являющегося элементом ядра ЦП. Когда средство многопоточности не инсталлировано или средство инсталлировано, но не активировано, ядро содержит единственный ЦП или поток.
Когда средство многопоточности инсталлировано, оно может быть активировано при выполнении распоряжения на задание многопоточности процессора (SIGP) обработки сигналов. В образцовом варианте осуществления, когда средство многопоточности активировано, число ЦП в конфигурации увеличивается кратным образом, причем значение мультипликатора задается программно-задаваемым максимальным идентификатором потока (PSMTID). Число ЦП в ядре может превышать PSMTID на единицу. Число группируемых в ядре ЦП соответствует значению данного мультипликатора. Каждое ядро того же типа ЦП в конфигурации может иметь то же число ЦП. Каждый ЦП в ядре принадлежит к тому же типу ЦП, однако в зависимости от модели и от типа ЦП некоторые ЦП в ядре могут не находиться в рабочем состоянии.
В образцовом варианте осуществления управляющая программа, такая как операционная система (OS), явным образом активирует многопоточность для ее применения посредством управляемой OS конфигурации. Альтернативно, многопоточность может активировать гипервизор, а гости гипервизора и их приложения могут извлечь выгоду прозрачным образом. Прикладная программа в большинстве случаев не знает, была ли активирована многопоточность. Когда многопоточность активирована, адреса ЦП всех ЦП в конфигурации приспосабливаются для включения в них идентификации ядра (или ID ядра) в крайних левых битах адреса и идентификации потока (ID потока или TID) в крайних правых битах адреса. ID ядра может также называться значением адреса ядра, a TID может называться значением адреса потока. ЦП в ядре могут совместно использовать некоторые аппаратные средства, такие как устройства выполнения или кэши низшего уровня, тем самым выполнение в пределах одного ЦП ядра может затронуть производительность других ЦП в ядре.
С целью администрирования изменений, связанных с динамическим переключением одного или нескольких ядер конфигурации между режимами единственного потока и многопоточности, имеется несколько функций поддержки. Для поддержания совместимости с не поддерживающими многопоточность программами, режим единственного потока может являться режимом по умолчанию после сброса или деактивации. Образцовые варианты осуществления включают в себя признаки для сохранения, сообщения и восстановления контекста потока из режима многопоточности для поддержки анализа и/или восстановления контекста потока после перехода от режима многопоточности к режиму единственного потока.
Вычислительное окружение, которое может быть реализовано образцовым вариантом осуществления, может базироваться, например, на z/Архитектуре, предлагаемой International Business Machines Corporation, Армонк, Нью-Йорк, z/Архитектура описана в публикации IBM® под названием «z/Архитектура, принципы работы» (z/Architecture, Principles of Operation), публикация №SA22-7932-09, август 2012, включенной в настоящий документ путем отсылки в полном объеме. В одном примере вычислительное окружение на основании z/Архитектуры включает в себя eServer zSeries, предлагаемый International Business Machines Corporation, Армонк, Нью-Йорк. Вычислительное окружение может включать в себя, например, процессорный комплекс с одним или несколькими разделами (например, логическими разделами), с одним или несколькими ядрами (например, процессорными ядрами) и одним или несколькими уровнями гипервизоров, как далее описано в настоящем документе.
Фиг. 1А показывает компьютерную систему 100 как пример вычислительного окружения, которое поддерживает многопоточность (МТ). В примере на фиг. 1А компьютерная система 100 включает в себя несколько процессорных ядер 102, подсистему 104 ввода/вывода (I/O) и системную память 160. Подсистема I/O 104 может предоставлять доступ к известным из уровня техники устройствам ввода-вывода. Процессорные ядра 102, также называемые в настоящем документе просто «ядрами», могут включать в себя схему обработки с поддерживающими элементами. В примере на фиг. 1А пять ядер 102 изображены как core1 110, core2 120, core3 130, core4 140 и core5 150, однако также может быть рассмотрено большее или меньше число ядер 102. Средство 103 МТ может быть представлено аппаратным компонентом каждого из ядер 102. В этом примере каждое из ядер 102 способно к поддержке до четырех потоков. Например, core1 110 может поддержать потоки 111, 112, 113 и 114. Core2 120 может поддержать потоки 121, 122, 123 и 124. Core3 130 может поддержать потоки 131, 132, 133 и 134. Core4 140 может поддержать потоки 141, 142, 143 и 144. Core5 150 может поддержать потоки 151, 152, 153 и 154. Следует обратить внимание на то, что не все четыре потока каждого из ядер 102 могут находиться в рабочем состоянии в любой момент. Например, в core3 130 потоки 131 и 132 могут находиться в рабочем состоянии, в то время как потокам 133 и 134 разрешено находиться в рабочем состоянии (изображены со штриховкой).
Фиг. 1А также изображает системную память 160 компьютерной системы 100, причем части системной памяти 160 распределяются по логическим разделам LPAR1 170, LPAR2 180 и LPAR3 190. Разделы LPAR 170, 180, 190 представляют собой виртуализированные вычислительные системы (также известные как конфигурации), в которых может выполняться операционная система, такая как Linux™ или IBM® z/OS™, z/VM или zTPF. Фиг. 1А также показывает распределение ядер 102 по LPAR 170, 180, 190. На этой иллюстрации core1 110 и core2 120 выделены для использования посредством LPAR1 170. Core3 130 выделено для использования посредством LPAR2 180, а core5 150 выделено для использования посредством LPAR3 190. Core4 140 может быть совместно использовано LPAR2 180 и LPAR3 190, но на фиг. 1А оно показано как назначенное для LPAR2 180. LPAR3 190 показывает пример двух различных типов ядер 102, используемых разделом, где core4 140 допускает рабочее состояние для множественных потоков, а core5 150 не допускает в этом примере рабочее состояние для множественных потоков. В примере на фиг. 1А LPAR1 170 предоставляет ресурсы обработки для OS 171, а также программ 172, 173, 174 и 175. LPAR2 180 предоставляет ресурсы обработки для OS 181, а также программ 182, 183 и 184. LPAR4 190 предоставляет ресурсы обработки для OS 191, а также программ 192 и 193.
Под управлением выполняющейся в LPAR операционной системы программы выполняются на потоках ядра. В образцовом варианте осуществления отдельный поток выполняет одновременно только одну программу, однако программа, разработанная повторно вводимой, может одновременно выполняться на множественных потоках или ядрах. Например, программа 172 для OS 171 в LPAR1 170 может выполняться в потоках 111 и 113 в core1 110 и в потоках 121 и 124 в core2 120. Являясь объектами управления OS, различные программы могут быть диспетчеризованы на те же или на различные потоки в зависимости от правил диспетчеризации и соглашений по качеству услуг.
В системной памяти 160 также находятся различные уровни встроенного программного обеспечения, включая сюда, например, милликод 162 и гипервизор 163 LPAR. Милликод 162 может быть воплощен в качестве встроенного программного обеспечения для поддержки системных функций низшего уровня. Гипервизор 163 LPAR может быть представлен, например, лицензированным внутренним кодом, таким как IBM Processor-Resource/System Manager™ (PR/SM™). Гипервизор LPAR 163 может создавать LPAR 170, 180, 190 и может управлять диспетчеризацией на ядрах 102. Когда средство МТ 103 инсталлировано в компьютерной системе 100, милликод 162 и гипервизор LPAR 163 также содержат код 164 и 165 поддержки средства МТ, соответственно. Код 164 и 165 поддержки средства МТ можно рассматривать как часть средства 103 МТ, поскольку логика для поддержки МТ может быть распределена между милликодом 162, гипервизором LPAR 163 и ядрами 102. Хотя это не изображено, каждая из OS 171, 181, 191 может также включать в себя код поддержки средства МТ для активирования и использования МТ в их соответствующих LPAR 170, 180, 190.
Фиг. 1Б показывает ту же вычислительную систему 100, как на фиг. 1А, за исключением того, что в вычислительном окружении на фиг. 1Б core4 140 теперь назначено для LPAR3 190 вместо LPAR2 180. Также следует обратить внимание на то, что в отличие от фиг. 1А, где потоки 143 и 144 не находятся в рабочем состоянии, на фиг. 1Б все четыре потока 141-144 теперь, когда LPAR3 190 диспетчеризируется на core4 140, находятся в рабочем состоянии. Диспетчеризация и недиспетчеризация LPAR на ядра 102 является динамической, и в других случаях, другой LPAR (не показан) может функционировать на тех же ядрах 102.
Со ссылкой на фиг. 2, в общем, согласно варианту осуществления показана блок-диаграмма схемы 200 обработки для реализации ядра обработки, такого как одно из ядер 102 на фиг. 1А и 1Б. Схема 200 обработки является примером устройства обработки данных, которое может одновременно поддерживать один или несколько потоков в окружении МТ. Показанная на фиг. 2 схема обработки 200 включает в себя интерфейсное устройство 202 контроллера системы, которое может соединять схему 200 обработки с другими процессорами и периферийными устройствами. Интерфейсное устройство 202 контроллера системы может также соединять Dcache 204, который считывает и сохраняет значения данных, Icache 208, который считывает программные команды, а также интерфейсное устройство 206 кэша с внешней памятью, процессорами и другими периферийными устройствами.
Icache 208 может предоставлять загрузку потоков команд совместно с устройством 210 выборки команд (IFU), которое выбирает команды с упреждением и может включать в себя инструменты упреждающей загрузки и предсказания ветвлений. Выбранные команды могут быть предоставлены к устройству 212 декодирования команд (IDU) для декодирования в данные для обработки команд.
IDU 212 может предоставлять команды к выпускающему устройству 214, которое может управлять выпуском команд к различным устройствам выполнения, таким как одно или несколько арифметических устройств 216 для операций с фиксированной точкой (FXU) для выполнения общих операций, и одно или несколько устройств 218 для операций с плавающей точкой (FPU) для выполнения операций с плавающей точкой. FPU 218 может включать в себя двоичное устройство 220 для операций с плавающей точкой (BFU), десятичное устройство 222 для операций с плавающей точкой (DFU) или любое другое устройство для операций с плавающей точкой. Выпускающее устройство 214 может также быть соединено с одним или несколькими устройствами 228 загрузки и хранения (LSU) через один или несколько конвейеров одиночных сигнальных единиц (LSU). Множественные конвейеры LSU обрабатываются как устройства выполнения для выполнения загрузок и сохранений, а также для генерации адресов для ответвлений. Как LSU 228, так и IFU 210 могут использовать ассоциативный буфер 230 трансляции (TLB) для предоставления буферизованных трансляций для адресов операндов и команд.
FXU 216 и FPU 218 соединены с различными ресурсами, такими как регистры 224 общего назначения (GPR) и регистры 226 с плавающей точкой (FPR). GPR 224 и FPR 226 предоставляют память значений данных для значений данных, загруженных и сохраненных от Dcache 204 LSU 228.
Схема 200 обработки может также включать в себя счетчики и/или таймеры 250 для поддержки генерации отсчета времени системы и диагностических действий. Например, счетчики и/или таймеры 250 могут использоваться для поддержки времени суток, а также различных средств диагностики и измерения.
Со ссылкой на фиг. 3 изображено подобное показанному на фиг. 1А вычислительное окружение за исключением того, что на фиг. 3 гипервизор 300 второго уровня выполняется в LPAR2 180 компьютерной системы 100. Гипервизор 300 второго уровня, например операционная система IBM z/VM включает в себя код 301 поддержки МТ, подобный коду 165 поддержки МТ, который предоставляет гипервизор 163 LPAR (первого уровня). Гипервизор 300 второго уровня предоставляет поддержку для нескольких виртуальных машин 310, 320 и 330 (называемых также конфигурациями), в которых, соответственно, работают гостевые операционные системы 311, 321 и 331. Гостевые операционные системы 311, 321, и 331 могут включать в себя, например, Linux™ или IBM® z/OS™, z/VM или z/TPF OS, или могут включать в себя гостевую среду разработки, такую как система диалоговой обработки (CMS) IBM. Каждая гостевая OS 311, 321 и 331 может активировать или может не активировать многопоточность, в котором случае гипервизор 300 второго уровня может быть ответственным за диспетчеризацию гостевых OS 311, 321, 331, а также связанных программ 312, 313, 322, 323, 332 и 333 с использованием физических ресурсов обработки (ядер 130, 140 и потоков 131-134, 141-144), которые являются доступными для LPAR2 180, в котором работает гипервизор 300 второго уровня. Программы 312, 313, 322, 323, 332, 333 различных виртуальных машин 310, 320, 330 могут выполняться на потоках 131-134, 141-144, доступных для соответствующих гостевых OS 311, 321 и 331. Гостевые OS 311, 321 и 331 не должны включать в себя код поддержки МТ, поскольку они могут извлечь выгоду из МТ прозрачным образом, если гипервизор 300 второго уровня использует многопоточность.
Со ссылкой на фиг. 4 показан пример гипервизорного контекстного удерживания в вычислительном окружении, которое может быть реализовано согласно варианту осуществления. В примере на фиг. 4, в пределах гипервизора LPAR 163 на фиг. 1А и 1Б изображены несколько структур поддержки. Например, структуры 410 могут поддерживать LPAR1 170 на фиг. 1А, включая сюда описания состояния (SD) и вспомогательные блоки, сохраняющие архитектурно выполненный регистровый контекст (то есть контекст потока) для логических потоков 411, 412, 413, 414, 421, 422, 423, 424, которые на текущий момент работают на физических потоках 111, 112, 113, 114, 121, 122, 123, 124, как показано на фиг. 1А. В то время как эти логические потоки диспетчеризируются, физические потоки удерживают текущий архитектурно выполненный регистровый контекст потоков. Архитектурно выполненный регистровый контекст сохраняется в описаниях состояния и во вспомогательных блоках в то время, когда они более не диспетчеризируются. Структуры 430 могут поддерживать LPAR2 180 на фиг. 1А, включая сюда описания состояния и вспомогательные блоки, сохраняющие архитектурно выполненный регистровый контекст для логических потоков 431, 432, 441, 442, которые на текущий момент работают на физических потоках 131, 132, 141, 142, как показано на фиг. 1А. Структуры 450 могут поддерживать LPAR3 190 на фиг. 1А, включая сюда описания состояния и вспомогательные блоки, сохраняющие архитектурно выполненный регистровый контекст для логического потока 451, который на текущий момент работает на физическом потоке 151, как показано на фиг. 1А. Структуры 450 также включают в себя описания состояния и вспомогательные блоки, сохраняющие архитектурно выполненный регистровый контекст для логических потоков 461, 462, 463 и 464, которые на текущий момент не диспетчеризируются на физическом процессоре (как показано с помощью штриховки). Другие поддерживающие LPAR структуры, которые не диспетчеризируются на физических ядрах, также могут быть сохранены посредством гипервизора 163 LPAR, такие как структуры 470 для LPAR (не изображены на фиг. 1А), включающие в себя описания состояния и вспомогательные блоки для логических потоков 471, 472, 473 и 474. Кроме того, примеры структур включают в себя структуры 480, поддерживающие недиспетчеризованный LPAR В (не изображен на фиг. 1А) включая сюда описания состояния и вспомогательные структуры для логических потоков 481 и 482, а также структуры 484 для недиспетчеризованного LPAR С (не изображен на фиг. 1А) для логического потока 485.
Хотя в примере на фиг. 4 изображены несколько структур, подразумевается, что для администрирования многопоточностью посредством гипервизора 163 LPAR, а также и в другом месте, в компьютерной системе 100 могут быть поддержаны дополнительные структуры. Например, структуры для поддержки многопоточности виртуальных машин 310, 320, 330 на фиг. 3 могут быть поддержаны посредством гипервизора 300 второго уровня на фиг. 3.
Со ссылкой на фиг. 5 изображена последовательность операций 500 для динамического активирования многопоточности согласно варианту осуществления. В блоке 502 первичный поток выполняется в режиме единственного потока (ST). В блоке 504 в режиме ST выбирается команда задания режима многопоточности (МТ). При выполнении этой команды, как совместно изображено в 505, число затребованных потоков получают в блоке 506 из заданного посредством команды задания режима МТ местоположения. Местоположение может быть задано регистром параметра при выпуске команды задания режима МТ. Команда задания режима МТ может быть представлена командой процессора (SIGP) обработки сигналов, включающей в себя распоряжение на задание МТ и программно-задаваемый максимальный идентификатор (PSMTID) потока, связанный с числом затребованных потоков. Пример процесса, связанного с распоряжением на задание МТ команды SIGP, далее описан в настоящем документе с отсылками на фиг. 7.
Продолжая рассмотрение процесса 500, в блоке 508 выполняется выявление относительно того, указывает ли число затребованных потоков на множественные потоки. Например, множественные потоки могут быть обозначены значением, превосходящим единицу. В вариантах осуществления, где значение ноль указывает на единственный поток, значение единица или более единицы указывает на множественные потоки. На основании выявления того, что число затребованных потоков не указывает на множественные потоки, ядро остается в режиме ST в блоке 510, выполнение команды задания режима МТ завершается, и управление возвращается к блоку 502. На основании выявления того, что число затребованных потоков указывает на множественные потоки, режим МТ активируется в блоке 512, и выполнение команды задания режима МТ завершается. В блоке 514 выполняются множественные потоки, включая сюда первичный и один или несколько вторичных потоков. В блоке 516, если отсутствует какой-либо сброс или деактивация, процесс 500 зацикливается обратно к блоку 514, в противном случае, в блоке 518 режим МТ деактивируется на основании сброса или деактивации конфигурации, которая возвращается к режиму ST. В качестве части процесса деактивации режима МТ, число потоков (PSMTID) сохраняется для сброса без очистки или обнуляется для сброса с очисткой. Процесс 500 возвращается к блоку 502.
ЦП может войти в состояние загрузки при активации кнопки нормальной загрузки, загрузки с разгрузкой памяти, чистой загрузки или управляемой списком чистой загрузки. Если операция начальной загрузки программы по типу управляющего слова (CCW) канала завершается успешно, ЦП переходит из состояния загрузки в рабочее состояние.
Сброс ЦП может быть использован для очистки указателей проверки оборудования и любой результирующей непредсказуемости в состоянии ЦП с наименьшим объемом уничтожаемой информации. Конкретно, это может быть использовано для очистки условий проверки, когда состояние ЦП должно быть сохранено для анализа или возобновления операции. Если сброс ЦП вызывается активацией кнопки нормальной загрузки или загрузки с разгрузкой памяти, (А) это может задать архитектурный режим в состояние режима по умолчанию, и (Б), если средство многопоточности инсталлировано и активировано, многопоточность деактивируется. Когда сброс ЦП задает режим по умолчанию, он может сохранить текущее PSW таким образом, что PSW может быть восстановлено.
Начальный сброс ЦП предоставляет функции сброса ЦП совместно с инициализацией текущего PSW, таймера ЦП, компаратора часов, а также других регистров, таких как: адреса события прерывания, захваченного PSW, управления, управления с плавающей точкой, префикса и программируемых регистров TOD. Начальный сброс ЦП может задать архитектурный режим в состояние режима по умолчанию, если это вызывается активацией кнопки нормальной загрузки или загрузки с разгрузкой памяти. Если многопоточность активируется, когда начальный сброс ЦП вызывается активацией кнопки нормальной загрузки или загрузки с разгрузкой памяти, функции начального сброса ЦП могут быть выполнены для ЦП с самым низким номером в ядре, а сброс ЦП выполняется для всех других ЦП в ядре. Сброс с очисткой вызывает выполнение начального сброса ЦП и сброса подсистемы, а также, дополнительно, очищает или инициализирует все местоположения памяти и регистры во всех ЦП в конфигурации, за исключением часов TOD. Очистка не затрагивает внешнюю память, такую как запоминающие устройства с прямым доступом, используемые управляющей программой для сохранения содержимого неадресуемых страниц.
Сброс по включении ЦП вызывает выполнение начального сброса ЦП и очищает содержимое общих регистров, регистров доступа, регистров управления и регистров с плавающей точкой к нулевым/по умолчанию значениям с допустимым кодом проверки блокировок. Подразумевается, что очистка или инициализация состояний не обязательно должна быть произведена к нулевым значениям, но значения по умолчанию в очищенном состоянии могут быть представлены также ненулевыми значениями. Если сброс ЦП по включении создает конфигурацию, он может задать архитектурный режим в состояние режима по умолчанию, в противном случае, он может задать архитектурный режим тот же, что и уже сконфигурированных ЦП. Сброс ЦП, начальный сброс ЦП, сброс подсистемы и чистый сброс могут инициироваться вручную.
В образцовых вариантах осуществления каждому ЦП присваивают число, называемое его адресом ЦП. Адрес ЦП однозначно идентифицирует один ЦП в пределах конфигурации. ЦП обозначают путем указания его адреса в адресном поле ЦП команды SIGP. ЦП, передающий сигнал о неисправности, аварии или внешнем вызове, может быть идентифицирован путем сохранения этого адреса в адресном поле ЦП с прерыванием. Адрес ЦП присваивается в процессе задания конфигурации и обычно не изменяется в результате изменений реконфигурирования. Программа может выявлять адрес ЦП при помощи команды сохранения адреса ЦП. Команда сохранения адреса ЦП может также использоваться для идентификации адреса ЦП, которым ЦП идентифицируется в многопроцессорной конфигурации.
Когда многопоточность активирована, адрес ЦП может включать в себя идентификацию ядра (ID ядра), связанную с идентификацией ЦП в ядре. Идентификация ЦП в ядре является идентификацией потока (ID потока или TID). В пределах конфигурации все ядра предоставляют одинаковое число ЦП, однако в зависимости от модели и типа ЦП некоторые ЦП в ядре могут не находиться в рабочем состоянии.
На основании PSMTID регистра параметра, используемого процессором обработки сигналов для задания распоряжения на многопоточность, идентификацию потока представляет постоянное число битов. Это число битов упоминается как ширина TID. ID ядра может быть образован из крайних правых битов адреса ЦП прежде активации многопоточности. ID ядра смещается влево на ширину битов TID, результатом чего является крайнее левое положение битов адреса ЦП после того, как многопоточность становится доступной. ID потока имеет то же число битов в TID-ширине, и занимает крайние правые биты адреса ЦП после активации многопоточности. ID потока могут быть присвоены в непрерывном диапазоне чисел. Таблица 1 иллюстрирует типовые соотношения PSMTID, ширины TID и битов адреса ЦП, содержащих идентификацию ядра и идентификацию потоков.
Figure 00000001
Расширение адреса изображено на фиг. 6А в качестве примера процесса 600А расширения адреса ЦП согласно варианту осуществления. В блоке 602 к первичному потоку можно получить доступ в режиме ST с помощью значения адреса 604 ядра в виде нескольких адресных битов ЦП.
Стрелка 606 указывает на переключение от режима ST к режиму МТ. В блоке 608 к первичному потоку или одному или нескольким вторичным потокам можно получить доступ в режиме МТ с помощью расширенного значения 610 адреса. Расширенное значение 610 адреса включает в себя значение 604 адреса ядра, смещенное подобно смещенному значению 612 адреса ядра, и связанное со значением 614 адреса потока. Смещенное значение 612 адреса ядра является идентификатором ядра (ID ядра), а значение 614 адреса потока является идентификатором потока (TID). Смещенное значение 612 адреса ядра может быть смещено на величину, базирующуюся на требуемом максимальном идентификаторе потока, например PSMTID. Число битов TID в значении 614 адреса потока может быть выявлено на основании PSMTID, как показано в таблице 1 выше. Значение 614 адреса потока может быть связано с младшими битами смещенного значения 612 адреса ядра для формирования расширенного 610 значения адреса ядра. Значение 614 адреса потока из всех нолей может означать первичный поток, а превышающие ноль значения идентифицируют и адресуют вторичные потоки.
При переключении между режимами МТ и ST как значение 604 адреса ядра (режим ST), так и расширенное значение 610 адреса (режим МТ) выбирается для использования в качестве адреса ЦП в соответствующем режиме ST или МТ. Значение 604 адреса ядра является примером адреса стандартного формата, используемого в режиме ST, и ядро возвращается от режима МТ к режиму ST на основании деактивации режима МТ. В образцовом варианте осуществления только первичный поток (то есть не вторичные потоки) является доступным на основании деактивации режима МТ. Фиг. 6Б изображает пример процесса 600 В сокращения адреса ЦП согласно варианту осуществления. Стрелка 616 на фиг. 6Б показывает переключение с режима МТ блока 608 обратно к режиму ST блока 602. Возвращение от режима МТ к режиму ST может включать в себя смещение расширенного значения 610 адреса вправо, а также устранение значения 614 адреса потока для формирования адреса стандартного формата, включающего в себя значение 604 адреса ядра (ID ядра) в качестве адреса ЦП из смещенного значения 612 адреса ядра.
Когда функция сброса деактивирует многопоточность, (А) адрес (адреса) ЦП тех ЦП, которые имеют нулевой ID потока, смещаются вправо на то же число битов шириной TID, что было использовано в процессе активирования, (Б) ноли вставляются в число битов шириной TID слева от адреса и (В) адрес ЦП возвращается к своему исходному немногопоточному формату (то есть к стандартному формату адреса). Все ЦП в ядре, имеющие ненулевые ID потока при активированной многопоточности, более не находятся в рабочем состоянии при деактивации многопоточности.
Когда многопоточность не активирована, адрес ЦП остается неизменным со значением, присвоенным в процессе задания конфигурации. В этом случае, не существует идентификации потока.
Ряд распоряжений процессора обработки сигналов могут предоставлять распоряжения для ЦП, включая сюда, например, запуск, остановку, перезапуск, остановку и сохранение состояния, начальный сброс ЦП, сброс ЦП, сохранение состояния по адресу, задание архитектуры, распознавание рабочего состояния, задание многопоточности, сохранение дополнительного состояния по адресу и т.п. Начальный сброс ЦП или сброс ЦП могут инициироваться командой процессора обработки сигналов, и не затрагивают архитектурный режим или другие ЦП, не деактивируют многопоточность и не заставляют I/O быть сброшенным.
Распоряжение на задание архитектуры задает архитектурный режим, который должен быть задан всем ЦП в конфигурации. Различия в архитектуре могут включать в себя различные способы адресации, дефиниции регистров и поддерживаемые ЦП команды. После изменения архитектурного режима полям битов селекции регистров могут быть заданы состояния по умолчанию (например, нулевые), ассоциативные буфера (ALB) трансляции регистров доступа и ассоциативные буфера (TLB) трансляции всех ЦП в конфигурации очищаются, а функция преобразования в последовательную форму и синхронизации контрольной точки может быть выполнена на всех ЦП в конфигурации.
Распоряжение на распознавание рабочего состояния может указывать на то, работает ли адресуемый ЦП. В режиме ST индикатор может быть возвращен со значением рабочее/нерабочее состояние. В режиме МТ индикатор может использоваться для идентификации того, работает ли какой-либо ЦП ядра, в котором адресуемый ЦП является элементом, или не работают все ЦП ядра, в котором адресуемый ЦП является элементом.
Распоряжение на задание МТ активирует средство многопоточности. Позиции битов регистра параметра могут содержать подлежащий предоставлению в конфигурации PSMTID. PSMTID может быть задан меньшим на единицу числа ЦП, подлежащих адресации в каждом ядре. Например, значение 3 в обозначенных позициях битов указывает на то, что максимально подлежат предоставлению четыре потока. Содержимое регистра адреса ЦП команды SIGP может быть проигнорировано, поскольку все ЦП в конфигурации считаются адресуемыми. При его принятии, распоряжение на задание МТ завершается всеми ЦП в процессе выполнение команды SIGP. Со ссылками на фиг. 7, показан процесс 700 для распоряжения 702 SIGP на задание МТ. Индикация ошибки может быть предоставлена и активирование режима МТ предотвращено на основании выявления того, что распоряжение 702 SIGP на задание МТ было выдано с одним или несколькими из: недопустимое распоряжение, неправильное состояние и недопустимый параметр, как описано далее в настоящем документе в отношении процесса 700 на фиг. 7.
Если средство многопоточности не инсталлировано в блоке 704, или ЦП не активирован в допустимом режиме 708 архитектуры, то распоряжение на задание МТ не принимается, и указатель недопустимого распоряжения может быть возвращен в блоках 706 или 710, соответственно. Если другие ЦП в конфигурации не находятся в состоянии останова или контрольного останова в блоке 712, или если конфигурация уже активирована для многопоточности в блоке 716, распоряжение на задание МТ не принимается, и указатель неправильного состояния может быть возвращен в блоке 714 или 718, соответственно.
Если PSMTID является недопустимым в блоке 720, распоряжение на задание МТ не принимается, и указатель недопустимого параметра может быть возвращен в блоке 722. Когда PSMTID является нолем в блоке 724, конфигурация не активируется для многопоточности, остается в режиме ST, и предоставляет произвольное состояние в качестве условного кода в блоке 728. В образцовом варианте осуществления, когда PSMTID является допустимым и ненулевым в блоке 726, конфигурация активируется для многопоточности, что приводит к расширению адреса ЦП, ALB и TLB всех ЦП в конфигурации очищаются от их содержимого, и функция преобразования в последовательную форму и синхронизации контрольной точки выполняется на всех ЦП в конфигурации. Состояние может быть предоставлено в блоке 728 в условном коде. После успешного завершения, все ЦП кроме ЦП, выполняющего распоряжение на задание МТ, остаются в состоянии останова или контрольного останова. Однако если ЦП пребывал в состоянии контрольного останова перед активированием многопоточности, может оказаться непредсказуемым, находятся ли имеющие ненулевые ID потоков ЦП в том же ядре в состоянии останова или контрольного останова.
Контекст потока может также называться архитектурно выполненным контекстом регистра. Архитектурно выполненный регистровый контекст (то есть содержимое PSW, таймера ЦП, компаратора часов, общих регистров, регистров с плавающей точкой и регистра управления с плавающей точкой, векторных регистров, регистров управления, регистров доступа, регистра префикса и TOD-программируемого регистра и т.д.) каждого ЦП перед активированием многопоточности становится архитектурно выполненным регистровым контекстом ЦП, имеющего нулевой TID каждого соответствующего ядра после активирования многопоточности. Подобным образом, архитектурно выполненный регистровый контекст ЦП, имеющего нулевой TID каждого ядра конфигурации с активированной МТ, становится архитектурно выполненным регистровым контекстом каждого соответствующего ЦП при деактивировании многопоточности в результате активации кнопки нормальной загрузки или загрузки с разгрузкой памяти.
Когда функция многопоточности деактивируется в результате активации кнопки нормальной загрузки или загрузки с разгрузкой памяти, архитектурно выполненный регистровый контекст всех ЦП, имеющих ненулевую идентификацию потоков, может быть сохранен. Если средство многопоточности впоследствии повторно активируется без предварительного чистого сброса, архитектурно выполненный регистровый контекст всех имеющих ненулевую идентификацию потока ЦП восстанавливается.
Когда многопоточность повторно активируется, будучи деактивированной посредством активации кнопки нормальной загрузки или загрузки с разгрузкой памяти, если значение PSMTID в битах регистра параметра отличается от использованного при предыдущей активации, то архитектурно выполненный регистровый контекст всех имеющих ненулевые ID потока ЦП может быть непредсказуемым.
Команда сохранения системной информации может использоваться для сохранения информации относительно компонента или компонентов конфигурации в блоке (SYSIB) системной информации. SYSIB может включать в себя поле инсталляции МТ, общее поле МТ, полное число ЦП/ядер, число конфигурированных ЦП/ядер, число ЦП/ядер в режиме ожидания, число зарезервированных ЦП/ядер, а также другие поля. Поле инсталляции МТ может указывать на то, инсталлировано ли средство многопоточности, и может также указывать наивысший поддерживаемый TID для первого типа ядра, например специализированного типа ядра. Общее поле МТ может указывать наивысший поддерживаемый TID для второго типа ядра, например общего типа ядра. Наивысший поддерживаемый TID в общем поле МТ может быть ограничен величиной меньшей или равной наивысшему поддерживаемому TID в поле инсталляции МТ. Полное число ЦП/ядер может указывать на полное число общих ЦП или включающих в себя общие ЦП ядер в конфигурации, независимо от их пребывания в сконфигурированном, ожидающем или зарезервированном состоянии. Число сконфигурированных ЦП/ядер может указывать на число общих ЦП или включающих в себя общие ЦП ядер в сконфигурированном состоянии, то есть пребывающих в конфигурации и готовых к выполнению программ. Число ЦП/ядер в режиме ожидания указывает на число общих ЦП или включающих в себя общие ЦП ядер в состоянии ожидания, то есть недоступных для использования для выполнения программ до их перевода в сконфигурированное состояние. Число зарезервированных ЦП/ядер указывает на число общих ЦП или включающих в себя общие ЦП ядер в зарезервированном состоянии, то есть недоступных для использования для выполнения программ и неспособных к переводу в сконфигурированное состояние.
Фиг. 8 изображает пример сохранения информации по инструменту многопоточности согласно варианту осуществления. Программа, выполняющаяся в потоке, таком как thread1 ядра 800А, может выбрать команду 830 сохранения системной информации STORE SYSTEM INFORMATION (STSI) из памяти 801 конфигурации 850, такой как LPAR. Выполнение команды STSI может привести к сохранению 832 блока системной информации (SYSIB) 802. В примере на фиг. 8 SYSIB 802 включает в себя идентификатор 804 инсталляции МТ, указывающий на способность к поддержке многопоточности конфигурацией 850. SYSIB 802 также включает в себя максимальный идентификатор потока наивысшего поддерживаемого потока ядра 800А/800В, который может быть предоставлен в качестве максимального TID для ядра 806 для специализированных ядер, и максимального TID для общих ядер 808. SYSIB 802 может также включать в себя текущий программно-задаваемый максимальный идентификатор потока (PSMTID) 809. Текущий PSMTID 809 отражает режим многопоточности как активированный в конфигурации 850 посредством программы. Если команда STSI 830 выполняется на уровне основной машины, текущий PSMTID 809 не может быть задан.
Программа, выполняющаяся в потоке, таком как thread2 ядра 800В, может также выбрать команду 834 сервисного вызова SERVICE CAL (SERVC) из памяти 801 конфигурации 850, где команда задает оператор считывания информации по программе управления системой (read-SCP-info или RSCPI). Выполнение оператора RSCPI может принудить блок управления сервисным вызовом (SCCB) 810 быть сохраненным 836 в памяти 801. В образцовом варианте осуществления SCCB 810, сохраненный посредством выполнения оператора RSCPI, предоставляет подобную и дополнительную информацию, которая может не быть доступной в SYSIB 802. В примере на фиг. 8 SCCB 810 включает в себя идентификатор 812 инсталляции МТ, указывающий на то, поддерживает ли ядро 800В многопоточность. SCCB 810 также включает в себя максимальный идентификатор потока наивысшего поддерживаемого потока ядра 800В, который может быть предоставлен в качестве максимального TID для ядра 814 для специализированных ядер и максимального TID для общих ядер 816. Значения 812-816 в SCCB 810 являются эквивалентными значениям 804-808, которые могут быть доступны в SYSIB 802. Кроме того, SCCB 810 может включать в себя заданный последним программно-задаваемый максимальный идентификатор потока наивысшего поддерживаемого потока ядра 800 В, на который также делается отсылка как на заданный последним программно-задаваемый максимальный идентификатор потока (PSMTID) 818. SCCB 810 может также включать в себя маску значений PSMTID, приемлемых для распоряжения на задание МТ в качестве поддерживаемой PSMTID маски 820. Поддерживаемая PSMTID маска 820 может использоваться для идентификации поддерживаемых ЦП/потоков, когда их требуемое число является меньшим, чем число, задаваемое максимальным TID для ядра 814.
Подразумевается, что ядра 800А и 800В включают в себя другие аспекты, не изображенные в этом примере. Кроме того, SYSIB 802 и SCCB 810 могут включать в себя дополнительные значения, вне изображенных в примере на фиг. 8.
Фиг. 9 изображает последовательность операций 900 для выявления инструмента многопоточности согласно варианту осуществления. В блоке 902 ядро выполняет команду (RMTCI) выборки информации по инструменту многопоточности, которая может быть представлена, например, любой из числа команды SERVC или команды STSI. В блоке 904 получают идентификационную информацию по потоку, которая идентифицирует инструмент многопоточности в конфигурации. В блоке 906 сохраняется полученная идентификационная информация по потоку. В блоке 908 на основании полученной идентификационной информации по потоку выявляется, активировалась ли ранее в конфигурации многопоточность.
Как ранее описано, команда SERVC сконфигурирована для сохранения идентификационной информации по потоку в ответном блоке в памяти (например, SCCB 810 на фиг. 8), а команда STSI сконфигурирована для сохранения идентификационной информации по потоку в SYSIB в памяти (например, SYSIB 802 на фиг. 8). Полученная информация по потоку может включать в себя идентификатор инсталляции МТ (например, идентификатор 804 инсталляции МТ или 812 на фиг. 8), указывающий на то, поддерживает ли ядро многопоточность. Полученная информация по потоку может также включать в себя максимальный идентификатор потока наивысшего поддерживаемого потока ядра (например, значения 806, 808, 814 или 816 максимального TID на фиг. 8). Полученная информация по потоку может включать в себя текущий программно-задаваемый максимальный идентификатор потока (например, текущий PSMTID 809 на фиг. 8) и заданный последним программно-задаваемый максимальный идентификатор потока (например, PSMTID 818 на фиг. 8). Ответный блок может включать в себя маску битов, указывающую на специальные идентификаторы потока, которые поддерживаются индивидуально (например, поддерживаемую PSMTID маску 820 на фиг. 8). Выявление того, что в конфигурации ранее активировалась МТ, может быть основано на ненулевом значении в заданном последним программно-задаваемом максимальном идентификаторе потока (например, заданном последним PSMTID>0). В образцовом варианте осуществления конфигурация поддерживает несколько типов ядер.
В образцовых вариантах осуществления регистры и значения, такие как значения счетчика программы, которые могут быть включены в состав регистров или администрироваться отдельно, захватываются в качестве контекста потока. Когда расширение адреса происходит в режиме МТ, дополнительный контекст потока становится доступным. Как ранее описано в отношении фиг. 6, адрес ЦП образуется для каждого ядра в конфигурации. Адрес ЦП может быть просмотрен командой сохранения адреса ЦП, он проявляется в других структурах и он используется в различных распоряжениях SIGP. Когда МТ не активирована, данная схема адресации остается неизменной. Когда МТ активирована, адрес ЦП подвергается процессу расширения. Как ранее описано, для размещения TID участок адреса ЦП для неактивированной МТ может быть смещен влево на достаточное число битов. Например, если операционная система выдает распоряжение SIGP на задание МТ со значением PSMTID 1, адрес ЦП смещается влево на 1 бит, если PSMTID равняется 2 или 3, то адрес ЦП смещается влево на 2 бита, если PSMTID равняется 4-7, адрес ЦП смещается влево на 3 бита и т.д.
Когда многопоточность впоследствии деактивируется (в результате чистого сброса или сброса ЦП, вызванного операцией нормальной загрузки), происходит сокращение адреса ЦП. Адрес ЦП для активированной МТ может быть смещен вправо на то же число битов PSMTID, что используется в распоряжении SIGP на задание МТ для активирования МТ, а участок адреса с ID потока устраняется. Контекст потока, который является доступным во время режима МТ, может находиться в одном или нескольких местоположениях, таких как пример, изображенный на фиг. 10. В примере на фиг. 10, конфигурация 1000 включает в себя ядро 1002 и может включать в себя другие ядра (не изображены). Память 1006 может включать в себя память 1005 конфигурации как часть конфигурации 1000 и память 1007 хоста/встроенного программного обеспечения, которая является отдельной от конфигурации 1000. Память 1007 хоста/встроенного программного обеспечения может включать в себя сохраняемый хостом блок 1008 описания состояния, который может сохранять контекст 1010 потока для потока (например, потока n на фиг. 10). Вспомогательный блок 1012 может быть привязан к блоку 1008 описания состояния в памяти 1006 как часть памяти 1007 хоста/встроенного программного обеспечения, причем вспомогательный блок 1012 может включать в себя контекст 1014 потока в качестве альтернативы контексту 1010 потока или в сочетании с контекстом 1010 потока. Каждый поток может иметь соответствующий блок 1008 описания состояния и, опционально, вспомогательный блок 1012, где может быть сохранен контекст 1010 потока или контекст 1014 потока. В качестве дополнительной альтернативы, регистры 1016 аппаратного контекста могут быть использованы для сохранения контекста 1018 потока, например, в ядре 1002. Примеры контекста 1010, 1014 и 1018 потока могут использоваться в комбинации или по отдельности в качестве опций памяти. В вариантах осуществления могут быть использованы дополнительные возможности памяти. Независимо от места сохранения контекста потока, после сокращения адреса контекст потока более не может быть непосредственно доступным, но может быть сохранен для доступа посредством программы разгрузки.
Когда МТ деактивируется, процесс сокращения адреса ЦП делает потоки 1-n ядра более не адресуемыми, подобным образом, контекст потока, включающий в себя архитектурно выполненные регистры, более не является видимым для программы. Если МТ была деактивирована в результате сброса ЦП в результате операции загрузки без очистки, регистровый контекст потоков 1-n сохраняется, если конфигурация возвращается к режиму МТ, эти данные могут впоследствии быть просмотрены. Регистровый контекст для каждого гостевого потока может сохраняться хостом в блоке 1008 описания состояния потока (или, как в случае векторных регистров, во вспомогательном блоке 1012, привязанном к описанию состояния), как изображено на фиг. 10.
Удержание контекста потоков 1-n во время деактивации МТ является диагностическим признаком для состояния потоков, которые разгружаются вследствие некорректной работы OS. Вследствие некорректной работы OS оператор может принять решение о выполнении автономной программы (SADMP) разгрузки для захвата памяти и контекста потока системы на время некорректной работы. Тем не менее, загрузка программы SADMP может принудить конфигурацию к возвращению к архитектурному режиму по умолчанию с активированным режимом ST, деактивируя тем самым МТ. Однако поскольку SADMP загружается посредством операции загрузки без очистки, регистровый контекст потоков 1-n каждого ядра сохраняется. SADMP может выявлять наличие активации МТ в разгружаемой конфигурации путем исследования результатов блока ответа оператора SERVC считывания информации по SCP. Это число может впоследствии использоваться в качестве ввода для распоряжения SIGP на задание МТ для повторного активирования МТ на том же уровне как прежде.
Фиг. 11 изображает пример сохранения регистра многопоточности согласно варианту осуществления. Система, такая как компьютерная система 1100 на фиг. 11, может включать в себя множественные конфигурации 1102 и 1104. В примере на фиг. 11, конфигурация 1102 включает в себя ядро 1106 и ядро 1108, а конфигурация 1104 включает в себя ядро 1110 и ядро 1112. Каждая из конфигураций 1102 и 1104 может быть независимо переключена между режимами ST и МТ в различные моменты времени. Каждая из конфигураций 1102 и 1104 компьютерной системы 1100 конфигурируется с различным числом ID максимальных ID потоков для поддержки различного числа одновременно активируемых потоков в каждой из конфигураций 1102 и 1104. В примере на фиг. 11 каждое из ядер 1106 и 1108 поддерживает максимум два потока в то время, когда конфигурация 1102 находится в режиме 1114 МТ, тогда как каждое из ядер 1110 и 1112 поддерживает максимум четыре потока в то время, когда конфигурация 1104 находится в режиме 1116 МТ.
Когда режим МТ активирован в конфигурации 1102, как TID0, так и TID1 являются доступными в качестве отдельных контекстов потоков, таких как отдельные реализации контекста 1115 потока. В момент 1118 времени режим 1114 МТ может быть деактивирован посредством операции нормальной загрузки или сброса без очистки для конфигурации 1102, что переключает оба ядра 1106 и 1108 в режим 1120 ST. Вследствие сокращения адреса, как это ранее описано, регистры TID0 являются доступными в режиме 1120 ST, тем не менее, регистры TID1, которые были доступными в режиме 1114 МТ, удерживаются, но более не являются доступными. Например, регистры TID1 могут быть воплощены в качестве контекста 1010, 1014 или 1018 потока на фиг. 10, причем адрес, который был доступным с расширением адреса, более не является доступным после сокращения адреса по переключении на режим 1120 ST.
Когда в конфигурации 1104 активирован режим 1116 МТ, регистры TID0, TID1, TID2 и TID3 являются доступными в качестве отдельных контекстов потоков, таких как отдельные реализации контекста 1010, 1014 или 1018 потока на фиг. 10. В этом примере TID0 представляет собой первичный поток, a TID1-TID3 представляют собой вторичные потоки, поддерживаемые отдельно для каждого из ядер 1110 и 1112. В момент 1122 времени режим 1116 МТ может быть деактивирован посредством сброса с очисткой для конфигурации 1104, что переключает оба ядра 1110 и 1112 в режим 1124 ST. Сброс с очисткой в момент 1122 времени может очистить все регистры TID0, TID1, TID2 и TID3. Вследствие сокращения адреса, как это ранее описано, регистры TID0 являются доступными в режиме 1124 ST, тем не менее, регистры TID1, TID2, и TID3, которые были доступными в режиме 1116 МТ, удерживаются в очищенном состоянии, но более не являются доступными. Как изображено на фиг. 11, операции могут быть выполнены независимо на каждой конфигурации 1102 и 1104 в различные моменты 1118 и 1122 времени с эффектами, локализованными для каждой конфигурации 1102 и 1104. Тем самым конфигурация 1102 может находиться в режиме 1120 ST, в то время как конфигурация 1104 находится в режиме 1116 МТ, при этом не требуется согласованности режимов ST/MT для всех конфигураций компьютерной системы 1100.
Фиг. 12 изображает последовательность 1200 операций для сохранения регистра многопоточности согласно варианту осуществления. В блоке 1202 на основании выявления ядром в режиме МТ того, что в ядре должна быть деактивирована МТ, выполняется переключение от режима МТ к режиму ST. Первичный поток режима МТ может сохраняться как единственный поток режима ST. Один или несколько контекстов потоков, включая сюда значения программно-доступных регистров и значения счетчика программы вторичных потоков, делаются недоступными для прикладных программ. В блоке 1204 на основании переключения, выявляется тип операции (например, с очисткой против без очистки), которая подлежит выполнению для очистки значений программно-доступных регистров или для сохранения значений программно-доступных регистров. В блоке 1206 на основании операции без очистки, выявляется, что значения программно-доступных регистров должны быть удержаны. В блоке 1208 на основании операции с очисткой, выявляется, что программно-доступные регистры должны быть очищены.
Как ранее описано, значения программно-доступных регистров и значения счетчика программы контекста потока могут включать в себя программные регистры общего назначения, регистры с плавающей точкой, регистры управления, регистры доступа, регистр префикса и программируемые регистры TOD. Регистры управления могут включать в себя регистр управления с плавающей точкой, динамического инструментального управления, управления измерениями ЦП и т.п. Другие примеры регистров, которые могут быть включены в состав контекста потока, включают в себя слово состояния программы (например, включающее в себя счетчик программы/адрес команды, условный код и другую информацию для управления порядком следования команд и выявления состояния ЦП), векторные регистры, таймер ЦП, компаратор часов, адресный регистр события прерывания и другие регистры, известные из уровня техники. Как ранее описано, PSMTID задают на основании последней успешно выполненной команды процессора обработки сигналов, которая привела к активированию МТ. На основании переключения на режим МТ, значения программно-доступных регистров делаются доступными для прикладных программ на основании повторного активирования соответствующих вторичных потоков. Например, переключение от режима 1120 ST обратно к режиму 1114 МТ на фиг. 11 позволяет получить доступ к регистрам TID1, и TID1 может быть повторно активирован. Контекст потока может поддерживаться в любом элементе из числа: блок описания состояния, вспомогательный блок, привязанный к блоку описания состояния в памяти, или регистр контекста, такого как контекст 1010, 1014, или 1018 потока на фиг. 10.
Контекст первичного потока может включать в себя значения программно-доступных регистров и значения счетчика программы первичного потока, например регистры TID0 и TID0 для конфигурации 1104 на фиг. 11, где контекст первичного потока является доступным для прикладных программ как в режиме 1124 ST, так и в режиме 1116 МТ. Контекст вторичного потока может включать в себя значения программно-доступных регистров и значения счетчика программы вторичного потока, например, регистров TID1-TID3 и TID1-TID3 для конфигурации 1104 на фиг. 11.
Фиг. 13 изображает пример восстановления регистра многопоточности согласно варианту осуществления. Пример на фиг. 13 включает в себя компьютерную систему 1300 с единственной конфигурацией 1302. Конфигурация 1302 включает в себя ядро 1304, ядро 1306 и ядро 1308. Каждое из ядер 1304-1308 включает в себя в этом примере максимум четыре потока (TID0, TID1, TID2 и TID3). В режиме 1310 МТ весь контекст потоков TID0-TID3 является доступным в ядрах 1304-1308. В момент 1312 времени режим 1310 МТ может быть деактивирован посредством операции нормальной загрузки или сброса без очистки конфигурации 1302, что переключает ядра 1304-1308 в режим 1314 ST. В режиме 1314 ST регистры TID0 остаются доступными, а регистры TID1-TID3 являются недоступными, но удерживаются для каждого из ядер 1304-1308. В момент 1316 времени режим МТ может быть повторно активирован посредством выполнения распоряжения SIGP на задание МТ для вхождения в возобновленный режим 1318 МТ. В возобновленном режиме 1318 МТ восстанавливается доступ к контексту потоков регистров TID1-TID3 для каждого из ядер 1304-1308. Этим активируется просмотр всех регистров потоков, включая сюда регистры TID1-TID3, посредством программы разгрузки, такой как автономная программа 1320 разгрузки для сохранения контекстной информации потоков для анализа.
Фиг. 14 изображает последовательность 1400 операций для восстановления регистра многопоточности согласно варианту осуществления, как она может быть использована посредством автономной программы (SADMP) разгрузки, такой как автономная программа 1320 разгрузки на фиг. 13, для захвата архитектурно выполненного регистрового контекста потоков после некорректной работы операционной системы. В блоке 1405 программа SADMP загружается посредством операции загрузки без очистки (например, нормальной загрузки или загрузки с разгрузкой памяти). Операция загрузки без очистки неявным образом вызывает возвращение конфигурации к режиму ST, такому как режим 1314 ST для конфигурации 1302 на фиг. 13. Программа SADMP может затем сделать запрос о доступности средства МТ в конфигурации в блоке 1410 при помощи команды STSI или SERVC. Если МТ инсталлирована, программа SADMP запрашивает заданный последним программно-задаваемый максимальный идентификатор (PSMTID) потока, заданный для конфигурации в блоке 1415. Если МТ ранее никогда не была задана для конфигурации, значение заданного последним PSMTID является нолем. Программа SADMP может в этом случае выполнить команду повторного активирования многопоточности в блоке 1420 независимо от значения заданного последним PSMTID (также и в случае его нулевого значения). Если запрос в блоке 1410 показывает, что МТ не инсталлирована, то не предпринимается какой-либо попытки запроса значения заданного последним PSMTID в блоке 1415 или повторного активирования МТ в блоке 1420.
Программа SADMP пытается подать сигнал всем прочим ЦП (потокам) в конфигурации для сохранения их архитектурно выполненного регистрового контекста в предопределенном местоположении в памяти. Если МТ не была ранее активирована до загрузки SADMP, адреса ЦП имеют нормальный, нерасширенный формат. Если МТ была ранее активирована, адреса ЦП имеют расширенный формат, включающим в себя ID ядра и ID потока. SADMP начинается с адреса (N) ЦП ноль в блоке 1425 и выявляет, представляет ли этот адрес ЦП тот ЦП, на котором SADMP выполняется в блоке 1430. Если это так, то данный ЦП/поток пропускается, а N увеличивается до следующего значения в блоке 1450. Если N отличается от текущего адреса ЦП, то данный ЦП/поток получает сигнал на сохранение его архитектурно выполненного регистрового контекста в памяти, например, посредством выполнения либо распоряжения SIGP на сохранение состояния по адресу или распоряжения SIGP на останов и сохранение состояния в блоке 1435. Если конфигурация включает в себя векторное средство, распоряжение SIGP на сохранение дополнительного состояния по адресу также может быть выполнено для сохранения содержания векторных регистров ЦП/потока. Производится выявление относительно успешности сигнала блока 1435 в блоке 1440. В случае его успешности программа SADMP может сохранить регистровый контекст ЦП/потока в файле разгрузки на ленте или диске в блоке 1445, и обработка продолжается путем увеличения N в блоке 1450. Если, как выявлено блоком 1440, сигнал блока 1435 не оказался успешным (например, если поток не находится в рабочем состоянии), то он пропускается и обработка продолжается путем увеличения N в блоке 1450. Значение адреса ЦП, используемого в передаче сигналов (N), увеличивается в блоке 1450, и в блоке 1455 производится выявление относительно того, превышает ли N в настоящий момент максимально возможный адрес ЦП для конфигурации. Если N не превышает максимально возможный адрес ЦП для конфигурации, то обработка продолжается путем выявления того, представляет ли N текущий ЦП/поток, под которым программа SADMP выполняется в блоке 1430. Если N превышает максимально возможный адрес ЦП для конфигурации, то восстановление архитектурно выполненного регистрового контекста и разгрузка памяти завершаются в блоке 1460.
Хотя фиг. 14 описана относительно одного ядра в конфигурации, подразумевается, что последовательность 1400 операций на фиг. 14 может быть расширена для работы с максимальным адресом ЦП, с охватом всех ядер конфигурации, включающей в себя множественные ядра. Дополнительные адаптации могут быть сделаны в конфигурациях для поддержки разгрузки для OS, не поддерживающей МТ, или для программы, которая поддерживает МТ, но не использует МТ. Например, сброс с очисткой может быть выполнен до загрузки OS, не поддерживающей МТ в конфигурации, для воспрепятствования попыткам поддерживающей МТ автономной программы разгрузки разгрузить из конфигурации какие-либо вторичные потоки. В качестве другого примера, поддерживающая МТ, но не использующая МТ программа может выпустить распоряжение на задание МТ с соответствующим максимальным ID потока ноль до выполнения автономной программы разгрузки для конфигурации.
Технические эффекты и преимущества включают в себя обеспечение динамического активирования многопоточности в компьютерной системе, поддерживающей как режим единственного потока, так и многопоточный режим работы.
Описанная в настоящем документе система активирует программное обеспечение для смягчения последствий аппаратной изменчивости путем затребования от OS явного «согласия» на использование аппаратных средств МТ. Когда OS распознает МТ природу среды выполнения, OS имеет способность явным образом администрировать плотности потоков в приложении к ядрам (в меру ее способности с учетом модели диспетчеризации рабочей нагрузки). OS имеет опцию поддержки высоких плотностей потоков также и в случае меньшего использования вычислительных ресурсов, тем самым, по большой части, смягчая последствия изменчивости полной вычислительной мощности, отмечаемые на других реализациях МТ. В качестве прямого результата поддержки высоких плотностей потоков, как времена отклика транзакций, так и аспекты тарификации могут быть более последовательными.
Варианты осуществления включают в себя систему, способ и компьютерный программный продукт для динамического активирования многопоточности. Согласно одному аспекту, компьютерная система включает в себя конфигурацию с ядром, конфигурируемым между режимом единственного потока (ST) и многопоточным (МТ) режимом. Режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра. Компьютерная система также включает в себя средство многопоточности, сконфигурированное для управления конфигурацией для выполнения способа. Способ включает в себя выполнение в первичном потоке в режиме ST команды задания режима МТ. Число требуемых потоков получают из местоположения, заданного командой задания режима МТ. На основании выявления того, что число требуемых потоков указывает на множественные потоки, режим МТ активируется для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков.
Согласно другому аспекту, предоставляется компьютерно-реализуемый способ динамического активирования многопоточности в конфигурации. Конфигурация включает в себя ядро, конфигурируемое между режимом ST и режимом МТ, где режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра. Способ включает в себя выполнение в первичном потоке в режиме ST команды задания режима МТ. Число требуемых потоков получают из местоположения, заданного командой задания режима МТ. На основании выявления того, что число требуемых потоков указывает на множественные потоки, режим МТ активируется для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков.
Другой аспект включает в себя компьютерный программный продукт для реализации динамического активирования многопоточности в конфигурации. Конфигурация включает в себя ядро, конфигурируемое между режимом ST и режимом МТ, где режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра. Компьютерный программный продукт включает в себя машиночитаемый информационный носитель, имеющий воплощенными на нем программные команды, причем машиночитаемый информационный носитель не является сигналом. Программные команды могут быть считаны посредством устройства обработки данных для принуждения устройства обработки данных к выполнению способа. Способ включает в себя выполнение в первичном потоке в режиме ST на ядре конфигурации команды задания режима МТ. Число требуемых потоков получают из местоположения, заданного командой задания режима МТ. На основании выявления того, что число требуемых потоков указывает на множественные потоки, режим МТ активируется для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков.
В дополнение к одному или нескольким описанным выше признакам, или в качестве альтернативы, другие варианты осуществления могут включать в себя представление команды задания режима МТ командой процессора (SIGP) обработки сигналов, которая может быть подана операционной системой. Команда SIGP может включать в себя распоряжение на задание МТ, и программно-задаваемый максимальный ID потока (PSMTID), связанный с числом затребованных потоков.
В дополнение к одному или нескольким описанным выше признакам, или в качестве альтернативы, другие варианты осуществления могут включать в себя активирование режима МТ на основании выполнения распоряжения на задание МТ с ненулевым значением PSMTID, и продолжение пребывания в режиме ST и предотвращение активирования режима МТ на основании выполнения распоряжения на задание МТ с нулевым значением PSMTID.
В дополнение к одному или нескольким описанным выше признакам, или в качестве альтернативы, другие варианты осуществления могут включать в себя предоставление индикации ошибки и предотвращение активирования режима МТ на основании выявления того, что распоряжение на задание МТ было выдано с одним или несколькими из: недопустимое распоряжение, неправильное состояние и недопустимый параметр.
В дополнение к одному или нескольким описанным выше признакам, или в качестве альтернативы, другие варианты осуществления могут включать в себя деактивирование режима МТ на основании сброса или деактивации конфигурации, а также удержание одного или нескольких контекстов вторичного потока и заданного последним PSMTID для сброса без очистки или их обнуление для сброса с очисткой.
В дополнение к одному или нескольким описанным выше признакам, или в качестве альтернативы, другие варианты осуществления могут включать в себя возвращение по умолчанию конфигурации к режиму ST после сброса или деактивации или активации конфигурации.
В дополнение к одному или нескольким описанным выше признакам или в качестве альтернативы, другие варианты осуществления могут включать в себя предоставление программе выполнения указателя максимального ID потока на основании ответа на команду (SERVC) служебного вызова или команду (STSI) сохранения системной информации.
В дополнение к одному или нескольким описанным выше признакам, или в качестве альтернативы, другие варианты осуществления могут включать в себя несколько конфигураций, где каждая из конфигураций компьютерной системы является конфигурируемой с различным числом максимальных ID потоков для поддержки различного числа одновременно активируемых потоков в каждой из конфигураций.
Используемая в настоящем документе терминология служит исключительно целям описания конкретных вариантов осуществления и не предназначается для ограничения изобретения. При использовании в настоящем документе, формы единственного числа предназначены для включения в себя также и форм множественного числа, если только контекст не указывает на иное недвусмысленным образом. В последующем изложении подразумевается, что термины «содержит» и/или «содержащий» при их использовании в данном техническом описании задают присутствие заявленных признаков, целочисленных переменных, этапов, операций, элементов и/или компонентов, но не исключают присутствия или добавления одного или нескольких других признаков, целочисленных переменных, этапов, операций, элементов, компонентов и/или образованных ими групп.
Соответствующие материалы, и эквиваленты всех средств или этапов, равно как функциональные элементы в пунктах формулы изобретения ниже предназначаются для включения в себя любой структуры, материала или действия для выполнения функции в сочетании с другими требуемыми элементами, как конкретным образом заявлено. Описание настоящего изобретения представлено в целях иллюстрации и описания, но не предназначается для полного охвата или ограничения изобретения в заявленном виде. Многие модификации и изменения являются очевидными для средних специалистов в области техники без отступления от существа и объема настоящего изобретения. Вариант осуществления был выбран и описан с целью наилучшего объяснения принципов изобретения и практического применения, а также для обеспечения другим средним специалистам в области техники возможности понимания изобретения для различных вариантов осуществления с различными модификациями, как они подходят для конкретно рассматриваемого использования.
Описания различных вариантов осуществления настоящего изобретения были предложены в целях иллюстрации, но не предназначаются для полного охвата или ограничения заявленных вариантов осуществления. Многие модификации и изменения являются очевидными для средних специалистов в области техники без отступления от существа и объема описанных вариантов осуществления. Используемая в настоящем документе терминология выбрана для наилучшего объяснения принципов вариантов осуществления, практического применения или технического улучшения по сравнению с имеющимися в коммерческом доступе технологиями, или для обеспечения другим средним специалистам в области техники возможности понимания описанных в настоящем документе вариантов осуществления.
При рассмотрении теперь фиг. 15 на ней в общих чертах показан компьютерный программный продукт 1500 согласно варианту осуществления, который включает в себя машиночитаемый информационный носитель 1502 и программные команды 1504.
Настоящее изобретение может быть представлено системой, способом и/или компьютерным программным продуктом. Компьютерный программный продукт может включать в себя машиночитаемый информационный носитель (или носители), имеющий на нем машиночитаемые программные команды для принуждения процессора к выполнению аспектов настоящего изобретения.
Машиночитаемый информационный носитель может быть представлен материальным устройством, которое способно удерживать и сохранять команды для использования посредством устройства выполнения команд. Машиночитаемый информационный носитель может быть представлен, например, в том числе, но не ограничиваясь, устройством электронной памяти, магнитным запоминающим устройством, оптическим запоминающим устройством, электромагнитным запоминающим устройством, полупроводниковым запоминающим устройством или любой подходящей комбинацией из вышеупомянутого. Неисчерпывающий список более конкретных примеров машиночитаемого информационного носителя включает в себя следующее: портативная компьютерная дискета, жесткий диск, оперативная память (RAM), постоянная память (ROM), стираемая программируемая постоянная память (EPROM или флеш-память), статическая оперативная память (SRAM), переносной компакт-диск для однократной записи данных (CD-ROM), цифровой универсальный диск (DVD), карта памяти, гибкий диск, механически закодированное устройство, такое как перфокарты или выступающие структуры в канавке с записанными на них командами, а также любая подходящая комбинация из вышеупомянутого. Машиночитаемый информационный носитель, как он рассматривается в настоящем документе, не подлежит истолкованию в качестве представленного преходящими сигналами как таковыми, такими как радиоволны или другие свободно распространяющиеся электромагнитные волны, электромагнитные волны, распространяющиеся через волновод или другие среды передачи (например, проходящие через волоконно-оптический кабель световые импульсы), или передаваемые через провода электрические сигналы.
Описанные в настоящем документе машиночитаемые программные команды могут быть загружены в соответствующие устройства вычисления/обработки с машиночитаемого информационного носителя или во внешний компьютер или во внешнее устройство хранения через сеть, например Интернет, локальную сеть, глобальную сеть и/или беспроводную сеть. Сеть может содержать медные кабели передачи, волокна оптической передачи, беспроводную передачу, маршрутизаторы, брандмауэры, переключения, шлюзы и/или граничные серверы. Карта сетевого адаптера или сетевой интерфейс в каждом устройстве вычисления/обработки получает машиночитаемые программные команды из сети и направляет машиночитаемые программные команды для хранения в машиночитаемый информационный носитель в пределах соответствующего устройства вычисления/обработки.
Машиночитаемые программные команды для выполнения операций настоящего изобретения могут быть представлены командами ассемблера, командами архитектуры системы команд (ISA), машинными командами, машинно-зависимыми командами, микрокодом, командами встроенного программного обеспечения, присваивающими значение состоянию данными, или иным исходным кодом или объектным кодом, записанным на любой комбинации из одного или нескольких языков программирования, включая сюда объектно-ориентированные языки программирования, такие как Smalltalk, С++ и т.п., а также обычные языки процедурного программирования, такие как язык программирования «С» или подобные языки программирования. Машиночитаемые программные команды могут выполняться полностью на компьютере пользователя, частично на компьютере пользователя, как автономный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере или полностью на удаленном компьютере или сервере. В последнем сценарии удаленный компьютер может быть присоединен к компьютеру пользователя через любой тип сети, включая сюда локальную сеть (LAN) или глобальную сеть (WAN), или присоединение может быть сделано к внешнему компьютеру (например, через Интернет с использованием Интернет-провайдера). В некоторых вариантах осуществления электронные схемы, включающие в себя, например, программируемые логические схемы, программируемые на месте вентильные матрицы (FPGA) или программируемые логические матрицы (PLA) могут выполнять машиночитаемые программные команды посредством использования информации о состоянии машиночитаемых программных команд для настройки электронной схемы с целью выполнения аспектов настоящего изобретения.
Аспекты настоящего изобретения описаны в настоящем документе с отсылками на иллюстрации в виде блок-схем и/или блок-диаграмм для способов, устройств (систем) и компьютерных программных продуктов согласно вариантам осуществления изобретения. Подразумевается, что каждый блок иллюстраций в виде блок-схем и/или блок-диаграмм, а также комбинации блоков на иллюстрациях в виде блок-схем и/или блок-диаграмм, может быть реализован посредством машиночитаемых программных команд.
Такие машиночитаемые программные команды могут быть предоставлены процессору универсального компьютера, специализированного компьютера или другого программируемого устройства обработки данных для образования машины таким образом, что выполняющиеся посредством процессора компьютера или другого программируемого устройства обработки данных команды создают средства для реализации функций/действий, заданных в блоке или блоках блок-схемы и/или блок-диаграммы. Такие машиночитаемые программные команды также могут быть сохранены в машиночитаемом информационном носителе, который может управлять компьютером, программируемым устройством обработки данных и/или другими устройствами для их функционирования особым способом таким образом, что сохраняющий на нем команды машиночитаемый информационный носитель представляет собой изделие, содержащее команды, которые реализуют аспекты функций/действий, заданных в блоке или блоках блок-схемы и/или блок-диаграммы.
Машиночитаемые программные команды могут также быть загружены в компьютер, другое программируемое устройство обработки данных или другое устройство для принуждения к выполнению на компьютере, другом программируемом устройстве или другом устройстве серии эксплуатационных этапов для получения такого компьютерно-реализованного процесса, что выполняемые на компьютере, другом программируемом устройстве или другом устройстве инструкции реализуют функции/действия, заданные в блоке или блоках блок-схемы и/или блок-диаграммы.
Блок-схемы и блок-диаграммы на чертежах показывают архитектуру, функциональность и функционирование возможных реализаций систем, способов и компьютерных программных продуктов согласно различным вариантам осуществления настоящего изобретения. В этом отношении каждый блок в блок-схемах или блок-диаграммах может представлять модуль, сегмент или участок команд, который содержит одну или несколько исполнимых команд для реализации указанной логической функции (функций). В некоторых альтернативных реализациях отмеченные в блоке функции могут происходить в отличном от указанного на фигурах порядке. Например, два показанные по очереди блока, фактически могут быть выполнены по существу одновременно, или блоки могут иногда выполняться в обратном порядке, в зависимости от предусмотренной к выполнению функциональности. Необходимо также отметить, что каждый блок на иллюстрациях в виде блок-схем и/или блок-диаграмм, а также в комбинациях блоков на иллюстрациях в виде блок-схем и/или блок-диаграмм, может быть реализован посредством основанных на аппаратных средствах систем особого назначения, которые выполняют указанные функции или действия или выполняют комбинации аппаратных и компьютерных команд особого назначения.

Claims (31)

1. Компьютерная система, содержащая:
- конфигурацию, содержащую ядро, конфигурируемое между режимом единственного потока (ST) и многопоточным (МТ) режимом, причем режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра, и
- средство многопоточности, сконфигурированное для управления конфигурацией для выполнения способа, содержащего:
- выполнение в первичном потоке в режиме ST команды задания режима МТ,
- получение числа затребованных потоков из местоположения, заданного командой задания режима МТ, и
- на основании выявления того, что число требуемых потоков указывает на множественные потоки, активирование режима МТ для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков,
причем команда задания режима МТ является командой процессора (SIGP) обработки сигналов от операционной системы, причем команда SIGP содержит распоряжение на задание МТ и программно-задаваемый максимальный ID потока (PSMTID), связанный с числом затребованных потоков,
причем на основании выполнения распоряжения на задание МТ с ненулевым значением PSMTID активируется режим МТ, а на основании выполнения распоряжения на задание МТ с нулевым значением PSMTID сохраняется режим ST и предотвращается активирование режима МТ,
причем предоставляется индикация ошибки и предотвращается активирование режима МТ на основании выявления того, что распоряжение на задание МТ было выдано с одним или несколькими из: недопустимое распоряжение, неправильное состояние и недопустимый параметр.
2. Компьютерная система по п. 1, причем режим МТ деактивируется на основании сброса или деактивации конфигурации, а также один или несколько контекстов вторичного потока и заданный последним PSMTID удерживаются для сброса без очистки или обнуляются для сброса с очисткой.
3. Компьютерная система по п. 2, причем конфигурация возвращается по умолчанию к режиму ST после сброса или деактивации или активации конфигурации.
4. Компьютерная система по п. 1, причем на основании ответа на команду (SERVC) служебного вызова или команду (STSI) сохранения системной информации программе выполнения предоставляется указатель максимального ID потока.
5. Компьютерная система по п. 1, кроме того, содержащая несколько конфигураций, причем каждая из конфигураций компьютерной системы является конфигурируемой с различным числом максимальных ID потоков для поддержки различного числа одновременно активируемых потоков в каждой из конфигураций.
6. Компьютерно-реализуемый способ динамического активирования многопоточности в конфигурации, содержащей ядро, конфигурируемое между режимом единственного потока (ST) и многопоточным (МТ) режимом, причем режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра, причем способ содержит:
- выполнение в первичном потоке в режиме ST команды задания режима МТ,
- получение числа затребованных потоков из местоположения, заданного командой задания режима МТ, и
- на основании выявления того, что число требуемых потоков указывает на множественные потоки, активирование режима МТ для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков,
причем команда задания режима МТ является командой процессора (SIGP) обработки сигналов от операционной системы, причем команда SIGP содержит распоряжение на задание МТ и программно-задаваемый максимальный ID потока (PSMTID), связанный с числом затребованных потоков,
причем на основании выполнения распоряжения на задание МТ с ненулевым значением PSMTID активируется режим МТ, а на основании выполнения распоряжения на задание МТ с нулевым значением PSMTID сохраняется режим ST и предотвращается активирование режима МТ,
причем предоставляется индикация ошибки и предотвращается активирование режима МТ на основании выявления того, что распоряжение на задание МТ было выдано с одним или несколькими из: недопустимое распоряжение, неправильное состояние и недопустимый параметр.
7. Способ по п. 6, причем режим МТ деактивируется на основании сброса или деактивации конфигурации, а также один или несколько контекстов вторичного потока и заданный последним PSMTID удерживаются для сброса без очистки или обнуляются для сброса с очисткой.
8. Способ по п. 6, причем на основании ответа на команду (SERVC) служебного вызова или команду (STSI) сохранения системной информации программе выполнения предоставляется указатель максимального ID потока.
9. Способ по п. 6, кроме того, содержащий несколько конфигураций, причем каждая из конфигураций компьютерной системы является конфигурируемой с различным числом максимальных ID потоков для поддержки различного числа одновременно активируемых потоков в каждой из конфигураций.
10. Машиночитаемый информационный носитель, имеющий заключенные в него программные команды для реализации динамического активирования многопоточности в конфигурации, содержащей ядро, конфигурируемое между режимом единственного потока (ST) и режимом многопоточности (МТ), причем режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра, причем машиночитаемый информационный носитель не является сигналом, а программные команды являются считываемыми посредством устройства обработки данных для принуждения устройства обработки данных к выполнению способа, содержащего:
- выполнение в первичном потоке в режиме ST на ядре конфигурации команды задания режима МТ,
- получение числа затребованных потоков из местоположения, заданного командой задания режима МТ, и
- на основании выявления того, что число требуемых потоков указывает на множественные потоки, активирование режима МТ для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков,
причем команда задания режима МТ является командой процессора (SIGP) обработки сигналов от операционной системы, причем команда SIGP содержит распоряжение на задание МТ и программно-задаваемый максимальный ID потока (PSMTID), связанный с числом затребованных потоков,
причем на основании выполнения распоряжения на задание МТ с ненулевым значением PSMTID активируется режим МТ, а на основании выполнения распоряжения на задание МТ с нулевым значением PSMTID сохраняется режим ST и предотвращается активирование режима МТ,
причем предоставляется индикация ошибки и предотвращается активирование режима МТ на основании выявления того, что распоряжение на задание МТ было выдано с одним или несколькими из: недопустимое распоряжение, неправильное состояние и недопустимый параметр.
11. Машиночитаемый информационный носитель по п. 10, причем режим МТ деактивируется на основании сброса или деактивации конфигурации, а также один или несколько контекстов вторичного потока и заданный последним PSMTID удерживаются для сброса без очистки или обнуляются для сброса с очисткой.
RU2016127225A 2014-03-27 2015-03-19 Динамическое активирование многопоточности RU2662403C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/226,881 2014-03-27
US14/226,881 US9354883B2 (en) 2014-03-27 2014-03-27 Dynamic enablement of multithreading
PCT/EP2015/055746 WO2015144544A1 (en) 2014-03-27 2015-03-19 Dynamic enablement of multithreading

Publications (3)

Publication Number Publication Date
RU2016127225A3 RU2016127225A3 (ru) 2018-04-28
RU2016127225A RU2016127225A (ru) 2018-04-28
RU2662403C2 true RU2662403C2 (ru) 2018-07-25

Family

ID=52727120

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2016127225A RU2662403C2 (ru) 2014-03-27 2015-03-19 Динамическое активирование многопоточности

Country Status (15)

Country Link
US (2) US9354883B2 (ru)
EP (1) EP3123328B1 (ru)
JP (1) JP6501789B2 (ru)
KR (1) KR101884540B1 (ru)
CN (1) CN106133694B (ru)
AU (1) AU2015238632B2 (ru)
CA (1) CA2940905C (ru)
ES (1) ES2677709T3 (ru)
IL (1) IL247857B (ru)
PT (1) PT3123328T (ru)
RU (1) RU2662403C2 (ru)
SG (1) SG11201606091UA (ru)
TW (1) TWI594184B (ru)
WO (1) WO2015144544A1 (ru)
ZA (1) ZA201604938B (ru)

Families Citing this family (14)

* 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
KR102675912B1 (ko) 2016-06-30 2024-06-17 엘지디스플레이 주식회사 백플레인 기판과 이의 제조 방법 및 이를 적용한 유기 발광 표시 장치
KR101769304B1 (ko) 2016-08-18 2017-08-18 현대자동차주식회사 엔진마운트의 노즐판
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10514913B2 (en) * 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10282208B2 (en) * 2017-07-14 2019-05-07 International Business Machines Corporation Cognitive thread management in a multi-threading application server environment
US11157286B2 (en) * 2018-05-07 2021-10-26 Micron Technology, Inc. Non-cached loads and stores in a system having a multi-threaded, self-scheduling processor
US11579944B2 (en) * 2018-11-14 2023-02-14 Intel Corporation System, apparatus and method for configurable control of asymmetric multi-threading (SMT) on a per core basis
CN110032407B (zh) 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备
US11088923B2 (en) 2019-06-19 2021-08-10 International Business Machines Corporation Multi-stage authorization

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040215932A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing thread execution in a simultaneous multi-threaded (SMT) processor
US20040215939A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US20060026411A1 (en) * 2004-07-29 2006-02-02 Fujitsu Limited Processor system and thread switching control method
RU2286595C2 (ru) * 2000-11-24 2006-10-27 Катарон Продакшнз, Инк. Реализация компьютерной многозадачности через виртуальную организацию поточной обработки
US20120066479A1 (en) * 2006-08-14 2012-03-15 Jack Kang Methods and apparatus for handling switching among threads within a multithread processor

Family Cites Families (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684993A (en) 1993-01-04 1997-11-04 Microsoft Corporation Segregation of thread-specific information from shared task information
US5613114A (en) 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
US5799188A (en) 1995-12-15 1998-08-25 International Business Machines Corporation System and method for managing variable weight thread contexts in a multithreaded computer system
US5872963A (en) 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
US6418460B1 (en) 1997-02-18 2002-07-09 Silicon Graphics, Inc. System and method for finding preempted threads in a multi-threaded application
US6658447B2 (en) 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6104700A (en) 1997-08-29 2000-08-15 Extreme Networks Policy based quality of service
US6487578B2 (en) * 1997-09-29 2002-11-26 Intel Corporation Dynamic feedback costing to enable adaptive control of resource utilization
US6272625B1 (en) 1997-10-08 2001-08-07 Oak Technology, Inc. Apparatus and method for processing events in a digital versatile disc (DVD) system using system threads and separate dormant/awake counter threads and clock driven semaphores
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6061710A (en) 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6401155B1 (en) 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
US6542991B1 (en) 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6542921B1 (en) 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6889319B1 (en) 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US7925869B2 (en) * 1999-12-22 2011-04-12 Ubicom, Inc. Instruction-level multithreading according to a predetermined fixed schedule in an embedded processor using zero-time context switching
US6981180B1 (en) 2000-03-16 2005-12-27 Akamai Technologies, Inc. Method and apparatus for testing request-response service using live connection traffic
US6757811B1 (en) 2000-04-19 2004-06-29 Hewlett-Packard Development Company, L.P. Slack fetch to improve performance in a simultaneous and redundantly threaded processor
US6792525B2 (en) 2000-04-19 2004-09-14 Hewlett-Packard Development Company, L.P. Input replicator for interrupts in a simultaneous and redundantly threaded processor
US6658654B1 (en) 2000-07-06 2003-12-02 International Business Machines Corporation Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment
US7073173B1 (en) 2000-12-04 2006-07-04 Microsoft Corporation Code and thread differential addressing via multiplex page maps
EP1256877A1 (en) 2001-05-10 2002-11-13 Hewlett-Packard Company, A Delaware Corporation Manufacture of computer systems
US7752423B2 (en) * 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
US6954846B2 (en) 2001-08-07 2005-10-11 Sun Microsystems, Inc. Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US8024735B2 (en) 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
CN1720503A (zh) * 2002-10-15 2006-01-11 沙桥技术有限公司 在多线程处理器中用于高速线程间中断的方法和设备
US7185338B2 (en) * 2002-10-15 2007-02-27 Sun Microsystems, Inc. Processor with speculative multithreading and hardware to support multithreading software
US7533012B2 (en) 2002-12-13 2009-05-12 Sun Microsystems, Inc. Multi-user web simulator
US7822950B1 (en) * 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US20040154010A1 (en) 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
US7290261B2 (en) * 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US20040216101A1 (en) 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7321965B2 (en) * 2003-08-28 2008-01-22 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US20050071422A1 (en) 2003-09-25 2005-03-31 International Business Machines Corporation Method, system, and computer program product for an automation tool adapter for use with multiple different automation tools
US7493621B2 (en) 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7210073B1 (en) 2003-12-31 2007-04-24 Precise Software Solutions Ltd. Workflows for performance management methodology
US20050183065A1 (en) 2004-02-13 2005-08-18 Wolczko Mario I. Performance counters in a multi-threaded processor
US7426731B2 (en) 2004-03-22 2008-09-16 Hewlett-Packard Development Company, L.P. Determining processor usage by a thread
US20050251649A1 (en) 2004-04-23 2005-11-10 Sony Computer Entertainment Inc. Methods and apparatus for address map optimization on a multi-scalar extension
US7216223B2 (en) 2004-04-30 2007-05-08 Hewlett-Packard Development Company, L.P. Configuring multi-thread status
US7607141B2 (en) * 2004-05-03 2009-10-20 Microsoft Corporation Systems and methods for support of various processing capabilities
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US7565659B2 (en) * 2004-07-15 2009-07-21 International Business Machines Corporation Light weight context switching
JP4956891B2 (ja) 2004-07-26 2012-06-20 富士通株式会社 演算処理装置,情報処理装置および演算処理装置の制御方法
JP4504132B2 (ja) 2004-07-30 2010-07-14 富士通株式会社 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法
US7707578B1 (en) 2004-12-16 2010-04-27 Vmware, Inc. Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system
US8621458B2 (en) 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US8015566B2 (en) 2005-01-13 2011-09-06 Lenovo (Singapore) Pte. Ltd. Attributing energy consumption to individual code threads in a data processing system
US7317907B2 (en) 2005-01-31 2008-01-08 Research In Motion Limited Synchronizing server and device data using device data schema
US7490230B2 (en) 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US20060242389A1 (en) * 2005-04-21 2006-10-26 International Business Machines Corporation Job level control of simultaneous multi-threading functionality in a processor
US8010969B2 (en) 2005-06-13 2011-08-30 Intel Corporation Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers
JP4963018B2 (ja) 2005-08-15 2012-06-27 株式会社ソニー・コンピュータエンタテインメント スケジューリング方法およびスケジューリング装置
US8402224B2 (en) 2005-09-20 2013-03-19 Vmware, Inc. Thread-shared software code caches
US8275942B2 (en) 2005-12-22 2012-09-25 Intel Corporation Performance prioritization in multi-threaded processors
US9323578B2 (en) 2006-01-19 2016-04-26 International Business Machines Corporation Analyzing wait states in a data processing system
US7577826B2 (en) 2006-01-30 2009-08-18 Sony Computer Entertainment Inc. Stall prediction thread management
CN100571167C (zh) 2006-02-24 2009-12-16 国际商业机器公司 Web服务业务流程的单元测试的方法和设备
US8041929B2 (en) 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
US8136111B2 (en) 2006-06-27 2012-03-13 International Business Machines Corporation Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system
US7634642B2 (en) 2006-07-06 2009-12-15 International Business Machines Corporation Mechanism to save and restore cache and translation trace for fast context switch
US8839271B2 (en) 2006-10-11 2014-09-16 International Business Machines Corporation Call stack sampling to obtain information for analyzing idle states in a data processing system
US7698540B2 (en) 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
US8117478B2 (en) 2006-12-29 2012-02-14 Intel Corporation Optimizing power usage by processor cores based on architectural events
US7584346B1 (en) 2007-01-25 2009-09-01 Sun Microsystems, Inc. Method and apparatus for supporting different modes of multi-threaded speculative execution
US8156496B2 (en) 2007-01-31 2012-04-10 Hewlett-Packard Development Company, L.P. Data processing system and method
US9195462B2 (en) 2007-04-11 2015-11-24 Freescale Semiconductor, Inc. Techniques for tracing processes in a multi-threaded processor
CN101042640A (zh) 2007-04-24 2007-09-26 上海华龙信息技术开发中心 一种带有位扩充和位压缩单元的数字信号处理器
US20080270658A1 (en) 2007-04-27 2008-10-30 Matsushita Electric Industrial Co., Ltd. Processor system, bus controlling method, and semiconductor device
JP5099131B2 (ja) 2007-06-20 2012-12-12 富士通株式会社 演算装置
US8694997B2 (en) 2007-12-12 2014-04-08 University Of Washington Deterministic serialization in a transactional memory system based on thread creation order
US8544006B2 (en) 2007-12-19 2013-09-24 International Business Machines Corporation Resolving conflicts by restarting execution of failed discretely executable subcomponent using register and memory values generated by main component after the occurrence of a conflict
CN101216725B (zh) 2008-01-04 2011-04-27 东南大学 利用堆栈深度进行多线程预测的动态功耗控制方法
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US7559061B1 (en) 2008-03-16 2009-07-07 International Business Machines Corporation Simultaneous multi-threading control monitor
US8117602B2 (en) 2008-04-01 2012-02-14 Kaspersky Lab, Zao Method and system for monitoring execution performance of software program product
US8495662B2 (en) 2008-08-11 2013-07-23 Hewlett-Packard Development Company, L.P. System and method for improving run-time performance of applications with multithreaded and single threaded routines
WO2010036983A1 (en) 2008-09-25 2010-04-01 Rockliffe Systems, Inc. (Dba Mailsite) Personal information management data synchronization
US7873816B2 (en) 2008-11-20 2011-01-18 International Business Machines Corporation Pre-loading context states by inactive hardware thread in advance of context switch
US20100135179A1 (en) 2008-11-28 2010-06-03 International Business Machines Corporation Communication device
US8402464B2 (en) 2008-12-01 2013-03-19 Oracle America, Inc. System and method for managing contention in transactional memory using global execution data
US8572581B2 (en) 2009-03-26 2013-10-29 Microsoft Corporation Measurement and reporting of performance event rates
US8346509B2 (en) 2009-04-08 2013-01-01 Intel Corporation Context switch sampling
US8949582B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Changing a flow identifier of a packet in a multi-thread, multi-flow network processor
GB2469822B (en) 2009-04-28 2011-04-20 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor
US9672132B2 (en) 2009-11-19 2017-06-06 Qualcomm Incorporated Methods and apparatus for measuring performance of a multi-thread processor
US8612978B2 (en) 2009-12-10 2013-12-17 Oracle America, Inc. Code execution utilizing single or multiple threads
US8615644B2 (en) 2010-02-19 2013-12-24 International Business Machines Corporation Processor with hardware thread control logic indicating disable status when instructions accessing shared resources are completed for safe shared resource condition
US8381216B2 (en) 2010-03-05 2013-02-19 Microsoft Corporation Dynamic thread pool management
US20110283286A1 (en) 2010-05-11 2011-11-17 Dell Products L.P. Methods and systems for dynamically adjusting performance states of a processor
CN103109279B (zh) 2010-06-22 2016-08-31 富士通株式会社 多核处理器系统,控制程序以及控制方法
US8392473B2 (en) 2010-09-07 2013-03-05 Microgen Aptitude Limited Fast hierarchical enrichment
US8656408B2 (en) 2010-09-30 2014-02-18 International Business Machines Corporations Scheduling threads in a processor based on instruction type power consumption
US8677361B2 (en) 2010-09-30 2014-03-18 International Business Machines Corporation Scheduling threads based on an actual power consumption and a predicted new power consumption
US8418177B2 (en) 2010-10-01 2013-04-09 Microsoft Corporation Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores
US8601193B2 (en) 2010-10-08 2013-12-03 International Business Machines Corporation Performance monitor design for instruction profiling using shared counters
US8489787B2 (en) 2010-10-12 2013-07-16 International Business Machines Corporation Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors
US20120137295A1 (en) 2010-11-30 2012-05-31 Alcatel-Lucent Canada Inc. Method for displaying cpu utilization in a multi-processing system
US8954986B2 (en) * 2010-12-17 2015-02-10 Intel Corporation Systems and methods for data-parallel processing
WO2012108058A1 (ja) 2011-02-10 2012-08-16 富士通株式会社 スケジューリング方法、設計支援方法、およびシステム
US9213551B2 (en) 2011-03-11 2015-12-15 Oracle International Corporation Return address prediction in multithreaded processors
US9330430B2 (en) 2011-03-21 2016-05-03 Apple Inc. Fast queries in a multithreaded queue of a graphics system
US9015449B2 (en) 2011-03-27 2015-04-21 International Business Machines Corporation Region-weighted accounting of multi-threaded processor core according to dispatch state
GB2489708B (en) 2011-04-05 2020-04-15 Advanced Risc Mach Ltd Thread selection for multithreaded processing
US8695010B2 (en) 2011-10-03 2014-04-08 International Business Machines Corporation Privilege level aware processor hardware resource management facility
CA2759365A1 (en) 2011-11-24 2013-05-24 Ibm Canada Limited - Ibm Canada Limitee Identification of thread progress information
US9075610B2 (en) 2011-12-15 2015-07-07 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation
US9720744B2 (en) 2011-12-28 2017-08-01 Intel Corporation Performance monitoring of shared processing resources
US9069598B2 (en) 2012-01-06 2015-06-30 International Business Machines Corporation Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core
CN102566974B (zh) 2012-01-14 2014-03-26 哈尔滨工程大学 基于同时多线程的取指控制方法
US8930950B2 (en) 2012-01-19 2015-01-06 International Business Machines Corporation Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
US8751830B2 (en) 2012-01-23 2014-06-10 International Business Machines Corporation Memory address translation-based data encryption/compression
US8966232B2 (en) 2012-02-10 2015-02-24 Freescale Semiconductor, Inc. Data processing system operable in single and multi-thread modes and having multiple caches and method of operation
US20130283280A1 (en) 2012-04-20 2013-10-24 Qualcomm Incorporated Method to reduce multi-threaded processor power consumption
US9075735B2 (en) 2012-06-21 2015-07-07 Breakingpoint Systems, Inc. Systems and methods for efficient memory access
US9208044B2 (en) 2012-06-25 2015-12-08 Infosys Limited Methods for simulating message-oriented services and devices thereof
US9529719B2 (en) 2012-08-05 2016-12-27 Advanced Micro Devices, Inc. Dynamic multithreaded cache allocation
US8984313B2 (en) 2012-08-31 2015-03-17 Intel Corporation Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator
CN102902512B (zh) * 2012-08-31 2015-12-16 浪潮电子信息产业股份有限公司 一种基于多线程编程及消息队列的多线程并行处理方法
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
CN103488684B (zh) 2013-08-23 2016-12-28 国家电网公司 基于缓存数据多线程处理的电力可靠性指标快速计算方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2286595C2 (ru) * 2000-11-24 2006-10-27 Катарон Продакшнз, Инк. Реализация компьютерной многозадачности через виртуальную организацию поточной обработки
US20040215932A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing thread execution in a simultaneous multi-threaded (SMT) processor
US20040215939A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US20060026411A1 (en) * 2004-07-29 2006-02-02 Fujitsu Limited Processor system and thread switching control method
US20120066479A1 (en) * 2006-08-14 2012-03-15 Jack Kang Methods and apparatus for handling switching among threads within a multithread processor

Also Published As

Publication number Publication date
CA2940905A1 (en) 2015-10-01
US9354883B2 (en) 2016-05-31
EP3123328B1 (en) 2018-06-06
ES2677709T3 (es) 2018-08-06
IL247857A0 (en) 2016-11-30
CA2940905C (en) 2022-08-16
TWI594184B (zh) 2017-08-01
EP3123328A1 (en) 2017-02-01
PT3123328T (pt) 2018-07-23
SG11201606091UA (en) 2016-08-30
ZA201604938B (en) 2019-02-27
AU2015238632A1 (en) 2016-08-04
AU2015238632B2 (en) 2018-04-26
CN106133694A (zh) 2016-11-16
US20150277918A1 (en) 2015-10-01
RU2016127225A3 (ru) 2018-04-28
JP6501789B2 (ja) 2019-04-17
KR101884540B1 (ko) 2018-08-01
US20150339120A1 (en) 2015-11-26
TW201610839A (zh) 2016-03-16
US9459875B2 (en) 2016-10-04
IL247857B (en) 2019-06-30
RU2016127225A (ru) 2018-04-28
KR20160104660A (ko) 2016-09-05
JP2017509081A (ja) 2017-03-30
CN106133694B (zh) 2019-05-17
WO2015144544A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
RU2662403C2 (ru) Динамическое активирование многопоточности
RU2661788C2 (ru) Расширение и сокращение адреса в многопоточной компьютерной системе
RU2670909C9 (ru) Восстановление контекста потока в многопоточной компьютерной системе
US9804847B2 (en) Thread context preservation in a multithreading computer system
JP6440734B2 (ja) マルチスレッディング・コンピュータ・システムにおける利用を追跡するコンピュータ実装方法、システムおよびコンピュータ・プログラム
JP6474426B2 (ja) マルチスレッディング能力情報取得